<?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>142033</bug_id>
          
          <creation_ts>2015-02-25 17:52:18 -0800</creation_ts>
          <short_desc>[EFL] Expose JavaScript binding interface through ewk_extension</short_desc>
          <delta_ts>2015-03-17 19:43:11 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryuan Choi">ryuan.choi</reporter>
          <assigned_to name="Ryuan Choi">ryuan.choi</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>lucas.de.marchi</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1072228</commentid>
    <comment_count>0</comment_count>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2015-02-25 17:52:18 -0800</bug_when>
    <thetext>SSIA</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1072237</commentid>
    <comment_count>1</comment_count>
      <attachid>247378</attachid>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2015-02-25 18:05:58 -0800</bug_when>
    <thetext>Created attachment 247378
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1072240</commentid>
    <comment_count>2</comment_count>
      <attachid>247381</attachid>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2015-02-25 18:09:46 -0800</bug_when>
    <thetext>Created attachment 247381
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1072247</commentid>
    <comment_count>3</comment_count>
      <attachid>247384</attachid>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2015-02-25 18:25:48 -0800</bug_when>
    <thetext>Created attachment 247384
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1077366</commentid>
    <comment_count>4</comment_count>
      <attachid>247384</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2015-03-16 02:43:10 -0700</bug_when>
    <thetext>Comment on attachment 247384
Patch

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

&gt; Source/JavaScriptCore/PlatformEfl.cmake:15
&gt; +        DESTINATION &quot;include/${WebKit2_OUTPUT_NAME}-${PROJECT_VERSION_MAJOR}/JavaScriptCore&quot;

You already define EWEBKIT_EXTENSION_MANAGER_INSTALL_DIR. Can&apos;t we use it here as well ?

If now, how about adding new variable to replace this long variable ? &quot;include/${WebKit2_OUTPUT_NAME}-${PROJECT_VERSION_MAJOR}&quot;

&gt; Source/WebKit2/UIProcess/API/efl/tests/extensions/extension_sample.cpp:42
&gt; +    return 0;

nullptr ?

&gt; Source/WebKit2/WebProcess/InjectedBundle/API/efl/ewk_page.cpp:114
&gt; +    EINA_SAFETY_ON_NULL_RETURN_VAL(ewkPage, 0);

0 -&gt; nullptr ?

&gt; Source/WebKit2/WebProcess/InjectedBundle/API/efl/ewk_page.cpp:118
&gt; +        return 0;

ditto.

&gt; Source/WebKit2/WebProcess/InjectedBundle/API/efl/ewk_page.cpp:131
&gt; +void ewk_page_client_del(Ewk_Page* ewkPage, Ewk_Page_Client* client)

I fail to find declaration of ewk_page_client_del(). Where is it declared ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1077792</commentid>
    <comment_count>5</comment_count>
      <attachid>248827</attachid>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2015-03-16 23:03:11 -0700</bug_when>
    <thetext>Created attachment 248827
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1077794</commentid>
    <comment_count>6</comment_count>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2015-03-16 23:06:12 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; Comment on attachment 247384 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=247384&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/PlatformEfl.cmake:15
&gt; &gt; +        DESTINATION &quot;include/${WebKit2_OUTPUT_NAME}-${PROJECT_VERSION_MAJOR}/JavaScriptCore&quot;
&gt; 
&gt; You already define EWEBKIT_EXTENSION_MANAGER_INSTALL_DIR. Can&apos;t we use it
&gt; here as well ?
&gt; 
&gt; If now, how about adding new variable to replace this long variable ?
&gt; &quot;include/${WebKit2_OUTPUT_NAME}-${PROJECT_VERSION_MAJOR}&quot;
&gt; 
I added HEADER_INSTALL_DIR

&gt; &gt; Source/WebKit2/UIProcess/API/efl/tests/extensions/extension_sample.cpp:42
&gt; &gt; +    return 0;
&gt; 
&gt; nullptr ?
&gt; 
Done

&gt; &gt; Source/WebKit2/WebProcess/InjectedBundle/API/efl/ewk_page.cpp:114
&gt; &gt; +    EINA_SAFETY_ON_NULL_RETURN_VAL(ewkPage, 0);
&gt; 
&gt; 0 -&gt; nullptr ?
&gt; 
Done

&gt; &gt; Source/WebKit2/WebProcess/InjectedBundle/API/efl/ewk_page.cpp:118
&gt; &gt; +        return 0;
&gt; 
&gt; ditto.
&gt; 
Done

&gt; &gt; Source/WebKit2/WebProcess/InjectedBundle/API/efl/ewk_page.cpp:131
&gt; &gt; +void ewk_page_client_del(Ewk_Page* ewkPage, Ewk_Page_Client* client)
&gt; 
&gt; I fail to find declaration of ewk_page_client_del(). Where is it declared ?

My mistake. I added it in header files and also added some documentions for ewk_page.h</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1077805</commentid>
    <comment_count>7</comment_count>
      <attachid>248827</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2015-03-17 00:51:44 -0700</bug_when>
    <thetext>Comment on attachment 248827
Patch

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

&gt; Source/WebKit2/UIProcess/API/efl/tests/extensions/extension_sample.cpp:81
&gt; +{

Do we need to delete the registered client using ewk_page_client_del() ?

&gt; Source/WebKit2/WebProcess/InjectedBundle/API/efl/ewk_extension.cpp:81
&gt; +    self-&gt;m_pageMap.add(page, std::unique_ptr&lt;EwkPage&gt;(ewkPage));

I don&apos;t think this is correct use of std::unique_ptr. You&apos;re just passing a pointer of EwkPage. You should pass an ownership of ewkPage to m_pageMap by using WTF::move().
According to your code, it looks you want to maintain EwkPage instances via m_pageMap. If so, m_pageMap should have the ownership of the EwkPage.

For example, you may re-write this logic as below,

auto ewkPage = std::make_unique&lt;EwkPage&gt;(page);
for (auto&amp; it : self-&gt;m_clients) {
    if (it-&gt;page_add)
        it-&gt;page_add(ewkPage.get(), it-&gt;data);
}

self-&gt;m_pageMap.add(page, WTF::move(ewkPage));

&gt; Source/WebKit2/WebProcess/InjectedBundle/API/efl/ewk_extension.cpp:96
&gt; +            it-&gt;page_del(self-&gt;m_pageMap.get(page), it-&gt;data);

page_del is called here.

&gt; Source/WebKit2/WebProcess/InjectedBundle/API/efl/ewk_page.h:64
&gt; +EAPI JSGlobalContextRef ewk_page_js_global_context_get(Ewk_Page *page);

Missing const keyword for _get().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1077836</commentid>
    <comment_count>8</comment_count>
      <attachid>248834</attachid>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2015-03-17 02:46:49 -0700</bug_when>
    <thetext>Created attachment 248834
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1077838</commentid>
    <comment_count>9</comment_count>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2015-03-17 02:52:16 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; Comment on attachment 248827 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=248827&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/efl/tests/extensions/extension_sample.cpp:81
&gt; &gt; +{
&gt; 
&gt; Do we need to delete the registered client using ewk_page_client_del() ?
&gt; 
&gt; &gt; Source/WebKit2/WebProcess/InjectedBundle/API/efl/ewk_extension.cpp:81
&gt; &gt; +    self-&gt;m_pageMap.add(page, std::unique_ptr&lt;EwkPage&gt;(ewkPage));
&gt; 
&gt; I don&apos;t think this is correct use of std::unique_ptr. You&apos;re just passing a
&gt; pointer of EwkPage. You should pass an ownership of ewkPage to m_pageMap by
&gt; using WTF::move().
&gt; According to your code, it looks you want to maintain EwkPage instances via
&gt; m_pageMap. If so, m_pageMap should have the ownership of the EwkPage.
&gt; 
&gt; For example, you may re-write this logic as below,
&gt; 
OK, I did.

Thanks.

&gt; auto ewkPage = std::make_unique&lt;EwkPage&gt;(page);
&gt; for (auto&amp; it : self-&gt;m_clients) {
&gt;     if (it-&gt;page_add)
&gt;         it-&gt;page_add(ewkPage.get(), it-&gt;data);
&gt; }
&gt; 
&gt; self-&gt;m_pageMap.add(page, WTF::move(ewkPage));
&gt; 
&gt; &gt; Source/WebKit2/WebProcess/InjectedBundle/API/efl/ewk_extension.cpp:96
&gt; &gt; +            it-&gt;page_del(self-&gt;m_pageMap.get(page), it-&gt;data);
&gt; 
&gt; page_del is called here.
&gt; 
page_del is just to notify page will be deleted.
ewk_page_client_del is to unregister the client if application wants.
It&apos;s not highly required, but I think that it depends on user scenario.

Anyway, I think that register/unregister looks better after your comment.
I updated.

&gt; &gt; Source/WebKit2/WebProcess/InjectedBundle/API/efl/ewk_page.h:64
&gt; &gt; +EAPI JSGlobalContextRef ewk_page_js_global_context_get(Ewk_Page *page);
&gt; 
&gt; Missing const keyword for _get().

Correct, I added const here and applied other places in this patch I can add const modifier.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1077840</commentid>
    <comment_count>10</comment_count>
      <attachid>248827</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2015-03-17 03:02:24 -0700</bug_when>
    <thetext>Comment on attachment 248827
Patch

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

&gt;&gt;&gt; Source/WebKit2/UIProcess/API/efl/tests/extensions/extension_sample.cpp:81
&gt;&gt;&gt; +{
&gt;&gt; 
&gt;&gt; Do we need to delete the registered client using ewk_page_client_del() ?
&gt; 
&gt; OK, I did.
&gt; 
&gt; Thanks.

This function is still empty on latest patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1077851</commentid>
    <comment_count>11</comment_count>
      <attachid>248842</attachid>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2015-03-17 03:33:44 -0700</bug_when>
    <thetext>Created attachment 248842
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1077852</commentid>
    <comment_count>12</comment_count>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2015-03-17 03:35:25 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; Comment on attachment 248827 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=248827&amp;action=review
&gt; 
&gt; &gt;&gt;&gt; Source/WebKit2/UIProcess/API/efl/tests/extensions/extension_sample.cpp:81
&gt; &gt;&gt;&gt; +{
&gt; &gt;&gt; 
&gt; &gt;&gt; Do we need to delete the registered client using ewk_page_client_del() ?
&gt; &gt; 
&gt; &gt; OK, I did.
&gt; &gt; 
&gt; &gt; Thanks.
&gt; 
&gt; This function is still empty on latest patch.

Oh, I misunderstood previous comment.

I removed pageDelete here because it is not required in this use case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1077854</commentid>
    <comment_count>13</comment_count>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2015-03-17 03:47:03 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; (In reply to comment #10)
&gt; &gt; Comment on attachment 248827 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=248827&amp;action=review
&gt; &gt; 
&gt; &gt; &gt;&gt;&gt; Source/WebKit2/UIProcess/API/efl/tests/extensions/extension_sample.cpp:81
&gt; &gt; &gt;&gt;&gt; +{
&gt; &gt; &gt;&gt; 
&gt; &gt; &gt;&gt; Do we need to delete the registered client using ewk_page_client_del() ?
&gt; &gt; &gt; 
&gt; &gt; &gt; OK, I did.
&gt; &gt; &gt; 
&gt; &gt; &gt; Thanks.
&gt; &gt; 
&gt; &gt; This function is still empty on latest patch.
&gt; 
&gt; Oh, I misunderstood previous comment.
&gt; 
&gt; I removed pageDelete here because it is not required in this use case.

However this patch introduces ewk_page_client_unregister() as well. It would be good if you test this function in test case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1077855</commentid>
    <comment_count>14</comment_count>
      <attachid>248842</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2015-03-17 03:48:34 -0700</bug_when>
    <thetext>Comment on attachment 248842
Patch

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

r=me except for ewk_page_client_unregister() testing and a small nit.

&gt; Source/WebKit2/WebProcess/InjectedBundle/API/efl/ewk_page.h:67
&gt; + * Register a page client which contains several callbacks to the page

Missing period at the end of line.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1077863</commentid>
    <comment_count>15</comment_count>
      <attachid>248844</attachid>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2015-03-17 04:37:31 -0700</bug_when>
    <thetext>Created attachment 248844
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1077865</commentid>
    <comment_count>16</comment_count>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2015-03-17 04:40:29 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; Comment on attachment 248842 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=248842&amp;action=review
&gt; 
&gt; r=me except for ewk_page_client_unregister() testing and a small nit.
&gt; 

In fact, we don&apos;t have proper test suite to test them.

Anyway, I added to call it.

&gt; &gt; Source/WebKit2/WebProcess/InjectedBundle/API/efl/ewk_page.h:67
&gt; &gt; + * Register a page client which contains several callbacks to the page
&gt; 
&gt; Missing period at the end of line.

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1078090</commentid>
    <comment_count>17</comment_count>
      <attachid>248844</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-03-17 19:43:06 -0700</bug_when>
    <thetext>Comment on attachment 248844
Patch

Clearing flags on attachment: 248844

Committed r181681: &lt;http://trac.webkit.org/changeset/181681&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1078091</commentid>
    <comment_count>18</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-03-17 19:43:11 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>247378</attachid>
            <date>2015-02-25 18:05:58 -0800</date>
            <delta_ts>2015-02-25 18:08:46 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-142033-20150226110538.patch</filename>
            <type>text/plain</type>
            <size>25567</size>
            <attacher name="Ryuan Choi">ryuan.choi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgwNjA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
YjNiYjNlNjM4ZmY3NGRhZjRhY2Q5OGQ2ZDFlZmFlNTU1ZGViZThhLi4yNTJhY2VkZDZiZGUxNDEw
MWExNWNmYzZmMDViOWEwOWFkYmM0YWM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMiBAQAorMjAxNS0wMi0yNSAgUnl1YW4gQ2hvaSAgPHJ5dWFuLmNob2lAbmF2ZXJjb3Jw
LmNvbT4KKworICAgICAgICBbRUZMXSBFeHBvc2UgSmF2YVNjcmlwdCBiaW5kaW5nIGludGVyZmFj
ZSB0aHJvdWdoIGV3a19leHRlbnNpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE0MjAzMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogUGxhdGZvcm1FZmwuY21ha2U6IEluc3RhbGwgSmF2YXNjcmlwdCBB
UElzCisKIDIwMTUtMDItMjQgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgogCiAgICAg
ICAgIE1hY2hpbmVUaHJlYWRzOjpUaHJlYWQgY2xlYW4gdXAgaGFzIGEgdXNlIGFmdGVyIGZyZWUg
cmFjZSBjb25kaXRpb24uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggYTYwMzEwYzg0MmM3ZGZkMzlhNjcwM2U0OTQ0
YTMzMjczYWY4OGE2ZS4uNTBhNGM3ZmY0ZTIzOTRhOGU2YTZmN2JmMzYwMmFjNmE1ZTU2ZDBkYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBACisyMDE1LTAyLTI1ICBSeXVhbiBDaG9pICA8cnl1
YW4uY2hvaUBuYXZlcmNvcnAuY29tPgorCisgICAgICAgIFtFRkxdIEV4cG9zZSBKYXZhU2NyaXB0
IGJpbmRpbmcgaW50ZXJmYWNlIHRocm91Z2ggZXdrX2V4dGVuc2lvbgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQyMDMzCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBsZXQgZXdlYmtpdCBl
eHBvc2UgSmF2YVNjcmlwdCBiaW5kaW5nIGludGVyZmFjZSB0byBzdXBwb3J0CisgICAgICAgIGV4
dGVuc2lvbiBvZiBqYXZhc2NyaXB0IEFQSXMuCisKKyAgICAgICAgKiBQbGF0Zm9ybUVmbC5jbWFr
ZTogQWRkZWQgZXdrX3BhZ2UgYW5kIG5ldyB0ZXN0IGNhc2UuCisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9lZmwvdGVzdHMvZXh0ZW5zaW9ucy9leHRlbnNpb25fc2FtcGxlLmNwcDogUmVnaXN0ZXJl
ZCB0ZXN0IG9iamVjdCBmb3IgbmV3IHRlc3QgY2FzZS4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L2VmbC90ZXN0cy90ZXN0X2V3azJfamF2YXNjcmlwdF9iaW5kaW5nLmNwcDogQWRkZWQgc2ltcGxl
IGJpbmRpbmcgQVBJIHRlc3QgY2FzZQorICAgICAgICAoRVdLMkNvbnRleHRUZXN0V2l0aEV4dGVu
c2lvbjo6bWVzc2FnZVJlY2VpdmVkQ2FsbGJhY2spOgorICAgICAgICAoRVdLMkNvbnRleHRUZXN0
V2l0aEV4dGVuc2lvbjo6RVdLMkNvbnRleHRUZXN0V2l0aEV4dGVuc2lvbik6CisgICAgICAgIChU
RVNUX0YpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2VmbC9FV2Vi
S2l0X0V4dGVuc2lvbi5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L2VmbC9ld2tfZXh0ZW5zaW9uLmNwcDoKKyAgICAgICAgKEV3a0V4dGVuc2lvbjo6ZGlkQ3JlYXRl
UGFnZSk6CisgICAgICAgIChFd2tFeHRlbnNpb246OndpbGxEZXN0cm95UGFnZSk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZWZsL2V3a19leHRlbnNpb24uaDoKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9lZmwvZXdrX2V4dGVuc2lvbl9w
cml2YXRlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZWZsL2V3
a19wYWdlLmNwcDogQWRkZWQuCisgICAgICAgICh0b0V3a1BhZ2UpOgorICAgICAgICAoRXdrUGFn
ZTo6RXdrUGFnZSk6CisgICAgICAgIChFd2tQYWdlOjphcHBlbmQpOgorICAgICAgICAoRXdrUGFn
ZTo6cmVtb3ZlKToKKyAgICAgICAgKEV3a1BhZ2U6OmRpZEZpbmlzaERvY3VtZW50TG9hZEZvckZy
YW1lKToKKyAgICAgICAgKGV3a19wYWdlX2pzX2dsb2JhbF9jb250ZXh0X2dldCk6CisgICAgICAg
IChld2tfcGFnZV9jbGllbnRfYWRkKToKKyAgICAgICAgKGV3a19wYWdlX2NsaWVudF9kZWwpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2VmbC9ld2tfcGFnZS5oOiBB
ZGRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9lZmwvZXdrX3Bh
Z2VfcHJpdmF0ZS5oOiBBZGRlZC4KKyAgICAgICAgKEV3a1BhZ2U6OnBhZ2UpOgorICAgICAgICAq
IGVmbC9ld2Via2l0Mi1leHRlbnNpb24ucGMuaW46CisKIDIwMTUtMDItMjQgIEd5dXlvdW5nIEtp
bSAgPGd5dXlvdW5nLmtpbUBzYW1zdW5nLmNvbT4KIAogICAgICAgICBGaXggYnVpbGQgYnJlYWsg
b24gRUZMIGFuZCBHVEsgcG9ydCBzaW5jZSByMTgwNTg1LgpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL1BsYXRmb3JtRWZsLmNtYWtlIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1Bs
YXRmb3JtRWZsLmNtYWtlCmluZGV4IDQ0ZjI3Y2E4ZTJmMGE2NjY4NWEyYmVlNjgxYmI4YTEzM2My
YWY0NTMuLjJkYjk1ZmU0YjZmYzUzYmM0ZjJkMjE0Y2Y3YmYyZDY2ODBlYmFmODUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9QbGF0Zm9ybUVmbC5jbWFrZQorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvUGxhdGZvcm1FZmwuY21ha2UKQEAgLTQsMyArNCwxMyBAQCBsaXN0KEFQ
UEVORCBKYXZhU2NyaXB0Q29yZV9JTkNMVURFX0RJUkVDVE9SSUVTCiAgICAgJHtFT19JTkNMVURF
X0RJUlN9CiApCiBhZGRfZGVmaW5pdGlvbnMoLURTVEFUSUNBTExZX0xJTktFRF9XSVRIX1dURikK
KworaW5zdGFsbChGSUxFUyBBUEkvSmF2YVNjcmlwdC5oCisgICAgICAgICAgICAgIEFQSS9KU0Jh
c2UuaAorICAgICAgICAgICAgICBBUEkvSlNDb250ZXh0UmVmLmgKKyAgICAgICAgICAgICAgQVBJ
L0pTT2JqZWN0UmVmLmgKKyAgICAgICAgICAgICAgQVBJL0pTU3RyaW5nUmVmLmgKKyAgICAgICAg
ICAgICAgQVBJL0pTVmFsdWVSZWYuaAorICAgICAgICAgICAgICBBUEkvV2ViS2l0QXZhaWxhYmls
aXR5LmgKKyAgICAgICAgREVTVElOQVRJT04gImluY2x1ZGUvJHtXZWJLaXQyX09VVFBVVF9OQU1F
fS0ke1BST0pFQ1RfVkVSU0lPTl9NQUpPUn0vSmF2YVNjcmlwdENvcmUiCispCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZSBiL1NvdXJjZS9XZWJLaXQyL1BsYXRm
b3JtRWZsLmNtYWtlCmluZGV4IDM4MjkwZTA4NjMyMzBiZjFkZWIwMmRiOGU2NzViODRkYjNlNTQ0
MDYuLjFmYThlNzdlNzZhOWE5MmMwZTcwYWEzYjRjMzk3ZjY5YzIxOWVmM2MgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQyL1Bs
YXRmb3JtRWZsLmNtYWtlCkBAIC0xODAsNiArMTgwLDcgQEAgbGlzdChBUFBFTkQgV2ViS2l0Ml9T
T1VSQ0VTCiAgICAgV2ViUHJvY2Vzcy9Db29raWVzL3NvdXAvV2ViS2l0U291cENvb2tpZUphclNx
bGl0ZS5jcHAKIAogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2VmbC9ld2tfZXh0
ZW5zaW9uLmNwcAorICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2VmbC9ld2tfcGFn
ZS5jcHAKIAogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvZWZsL0luamVjdGVkQnVuZGxl
RWZsLmNwcAogCkBAIC00MDcsNiArNDA4LDcgQEAgc2V0KEVXZWJLaXQyX0hFQURFUlMKIHNldChF
V2ViS2l0Ml9FeHRlbnNpb25fSEVBREVSUwogICAgICIke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJ
Un0vV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZWZsL0VXZWJLaXRfRXh0ZW5zaW9uLmgi
CiAgICAgIiR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9lZmwvZXdrX2V4dGVuc2lvbi5oIgorICAgICIke0NNQUtFX0NVUlJFTlRfU09VUkNF
X0RJUn0vV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZWZsL2V3a19wYWdlLmgiCiApCiAK
IGluc3RhbGwoRklMRVMgJHtFV2ViS2l0Ml9IRUFERVJTfSBERVNUSU5BVElPTiBpbmNsdWRlLyR7
V2ViS2l0Ml9PVVRQVVRfTkFNRX0tJHtQUk9KRUNUX1ZFUlNJT05fTUFKT1J9KQpAQCAtNTEwLDYg
KzUxMiw3IEBAIHNldChFV0syVW5pdFRlc3RzX0JJTkFSSUVTCiAgICAgdGVzdF9ld2syX2VpbmFf
c2hhcmVkX3N0cmluZwogICAgIHRlc3RfZXdrMl9mYXZpY29uX2RhdGFiYXNlCiAgICAgdGVzdF9l
d2syX2ZpbGVfY2hvb3Nlcl9yZXF1ZXN0CisgICAgdGVzdF9ld2syX2phdmFzY3JpcHRfYmluZGlu
ZwogICAgIHRlc3RfZXdrMl9vYmplY3QKICAgICB0ZXN0X2V3azJfcGFnZV9ncm91cAogICAgIHRl
c3RfZXdrMl9wb3B1cF9tZW51CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2VmbC90ZXN0cy9leHRlbnNpb25zL2V4dGVuc2lvbl9zYW1wbGUuY3BwIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvZXh0ZW5zaW9ucy9leHRlbnNpb25fc2FtcGxl
LmNwcAppbmRleCAyOTQxMzQzZWMyYmZiNDAyN2U0MTI2ZjI2Mzk0YTdkMmNlMTNmYTlkLi4yMjk2
YTI5ZmJiNmE5MDUxM2RlOWQyYWJjNzI2ZGU3ZGZkODBhOGIwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy9leHRlbnNpb25zL2V4dGVuc2lvbl9zYW1w
bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL2V4dGVu
c2lvbnMvZXh0ZW5zaW9uX3NhbXBsZS5jcHAKQEAgLTI0LDExICsyNCw2MyBAQAogICovCiAKICNp
bmNsdWRlICJFV2ViS2l0X0V4dGVuc2lvbi5oIgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHQuaD4KIAogI2lmZGVmIF9fY3BsdXNwbHVzCiBleHRlcm4gIkMiIHsKICNlbmRpZgog
CitzdGF0aWMgSlNWYWx1ZVJlZiBoZWxsb0NhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBK
U09iamVjdFJlZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3Vt
ZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2Vw
dGlvbikKK3sKKyAgICBFd2tfRXh0ZW5zaW9uKiBleHRlbnNpb24gPSBzdGF0aWNfY2FzdDxFd2tf
RXh0ZW5zaW9uKj4oSlNPYmplY3RHZXRQcml2YXRlKHRoaXNPYmplY3QpKTsKKworICAgIEVpbmFf
VmFsdWUqIHZhbHVlID0gZWluYV92YWx1ZV9uZXcoRUlOQV9WQUxVRV9UWVBFX1NUUklORyk7Cisg
ICAgZWluYV92YWx1ZV9zZXQodmFsdWUsICJIZWxsbyBmcm9tIGV4dGVuc2lvbiIpOworICAgIGV3
a19leHRlbnNpb25fbWVzc2FnZV9wb3N0KGV4dGVuc2lvbiwgImhlbGxvIiwgdmFsdWUpOworICAg
IGVpbmFfdmFsdWVfZnJlZSh2YWx1ZSk7CisKKyAgICByZXR1cm4gMDsKK30KKwordm9pZCBsb2Fk
RmluaXNoZWQoRXdrX1BhZ2UqIHBhZ2UsIHZvaWQqIGRhdGEpCit7CisgICAgSlNHbG9iYWxDb250
ZXh0UmVmIGpzQ29udGV4dCA9IGV3a19wYWdlX2pzX2dsb2JhbF9jb250ZXh0X2dldChwYWdlKTsK
KyAgICBKU09iamVjdFJlZiB3aW5kb3dPYmplY3QgPSBKU0NvbnRleHRHZXRHbG9iYWxPYmplY3Qo
anNDb250ZXh0KTsKKworICAgIHN0YXRpYyBKU1N0YXRpY0Z1bmN0aW9uIGZ1bmN0aW9uc1tdID0g
eworICAgICAgICB7ICJoZWxsbyIsIGhlbGxvQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRl
UmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKKyAgICAgICAgeyAw
LCAwLCAwIH0KKyAgICB9OworICAgIHN0YXRpYyBKU0NsYXNzRGVmaW5pdGlvbiBjbGFzc19kZWZp
bml0aW9uID0geworICAgICAgICAwLCBrSlNDbGFzc0F0dHJpYnV0ZU5vbmUsICJUZXN0IiwgMCwg
MCwgZnVuY3Rpb25zLAorICAgICAgICAwLCAwLyogKi8sIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAs
IDAKKyAgICB9OworICAgIEpTQ2xhc3NSZWYgY2xhc3ogPSBKU0NsYXNzQ3JlYXRlKCZjbGFzc19k
ZWZpbml0aW9uKTsKKyAgICBKU09iamVjdFJlZiBvYmplY3QgPSBKU09iamVjdE1ha2UoanNDb250
ZXh0LCBjbGFzeiwgZGF0YSk7CisgICAgSlNDbGFzc1JlbGVhc2UoY2xhc3opOworCisgICAgSlNP
YmplY3RTZXRQcml2YXRlKG9iamVjdCwgZGF0YSk7CisKKyAgICBKU1ZhbHVlUmVmIGV4Y2VwdGlv
biA9IDA7CisgICAgSlNTdHJpbmdSZWYgcHJvcGVydHkgPSBKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4
Q1N0cmluZygidGVzdCIpOworICAgIEpTT2JqZWN0U2V0UHJvcGVydHkoanNDb250ZXh0LCB3aW5k
b3dPYmplY3QsIHByb3BlcnR5LCBvYmplY3QsIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkg
fCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUsICZleGNlcHRpb24pOworICAgIEpTU3Ry
aW5nUmVsZWFzZShwcm9wZXJ0eSk7Cit9CisKK3N0YXRpYyB2b2lkIHBhZ2VBZGRlZChFd2tfUGFn
ZSogcGFnZSwgdm9pZCogZGF0YSkKK3sKKyAgICBzdGF0aWMgRXdrX1BhZ2VfQ2xpZW50IGNsaWVu
dDsKKyAgICBjbGllbnQudmVyc2lvbiA9IDE7CisgICAgY2xpZW50LmRhdGEgPSBkYXRhOworICAg
IGNsaWVudC5sb2FkX2ZpbmlzaGVkID0gbG9hZEZpbmlzaGVkOworCisgICAgZXdrX3BhZ2VfY2xp
ZW50X2FkZChwYWdlLCAmY2xpZW50KTsKK30KKworc3RhdGljIHZvaWQgcGFnZURlbGV0ZShFd2tf
UGFnZSogcGFnZSwgdm9pZCogZGF0YSkKK3sKK30KKwogc3RhdGljIHZvaWQgbWVzc2FnZVJlY2Vp
dmVkKGNvbnN0IGNoYXIqIG5hbWUsIGNvbnN0IEVpbmFfVmFsdWUqIGJvZHksIHZvaWQqIGRhdGEp
CiB7CiAgICAgRWluYV9WYWx1ZSogdmFsdWUgPSBlaW5hX3ZhbHVlX25ldyhFSU5BX1ZBTFVFX1RZ
UEVfU1RSSU5HKTsKQEAgLTQyLDYgKzk0LDggQEAgdm9pZCBld2tfZXh0ZW5zaW9uX2luaXQoRXdr
X0V4dGVuc2lvbiogZXh0ZW5zaW9uKQogICAgIHN0YXRpYyBFd2tFeHRlbnNpb25DbGllbnQgY2xp
ZW50OwogICAgIGNsaWVudC52ZXJzaW9uID0gMTsKICAgICBjbGllbnQuZGF0YSA9ICh2b2lkICop
ZXh0ZW5zaW9uOworICAgIGNsaWVudC5wYWdlX2FkZCA9IHBhZ2VBZGRlZDsKKyAgICBjbGllbnQu
cGFnZV9kZWwgPSBwYWdlRGVsZXRlOwogICAgIGNsaWVudC5tZXNzYWdlX3JlY2VpdmVkID0gbWVz
c2FnZVJlY2VpdmVkOwogCiAgICAgZXdrX2V4dGVuc2lvbl9jbGllbnRfYWRkKGV4dGVuc2lvbiwg
JmNsaWVudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90
ZXN0cy90ZXN0X2V3azJfamF2YXNjcmlwdF9iaW5kaW5nLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL3Rlc3RfZXdrMl9qYXZhc2NyaXB0X2JpbmRpbmcuY3BwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjg0MmQwNzFlZjYyYWUwZDFhMDYzMDFjZTYyMTRjODVlMGZkZTIxNGQKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy90ZXN0
X2V3azJfamF2YXNjcmlwdF9iaW5kaW5nLmNwcApAQCAtMCwwICsxLDY4IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE1IFJ5dWFuIENob2kgPHJ5dWFuLmNob2lAZ21haWwuY29tPi4gIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgIkV3a1ZpZXcuaCIKKyNpbmNsdWRl
ICJVbml0VGVzdFV0aWxzL0VXSzJVbml0VGVzdEJhc2UuaCIKKwordXNpbmcgbmFtZXNwYWNlIEVX
SzJVbml0VGVzdDsKKworZXh0ZXJuIEVXSzJVbml0VGVzdEVudmlyb25tZW50KiBlbnZpcm9ubWVu
dDsKKworc3RhdGljIGNvbnN0ZXhwciBkb3VibGUgdGVzdFRpbWVvdXRTZWNvbmRzID0gMi4wOwor
CitjbGFzcyBFV0syQ29udGV4dFRlc3RXaXRoRXh0ZW5zaW9uIDogcHVibGljIEVXSzJVbml0VGVz
dEJhc2UgeworcHVibGljOgorICAgIHN0YXRpYyB2b2lkIG1lc3NhZ2VSZWNlaXZlZENhbGxiYWNr
KGNvbnN0IGNoYXIqIG5hbWUsIGNvbnN0IEVpbmFfVmFsdWUqIGJvZHksIHZvaWQqIHVzZXJEYXRh
KQorICAgIHsKKyAgICAgICAgYm9vbCogaGFuZGxlZCA9IHN0YXRpY19jYXN0PGJvb2wqPih1c2Vy
RGF0YSk7CisgICAgICAgIEFTU0VSVF9TVFJFUSgiaGVsbG8iLCBuYW1lKTsKKworICAgICAgICAq
aGFuZGxlZCA9IHRydWU7CisgICAgfQorCitwcm90ZWN0ZWQ6CisgICAgRVdLMkNvbnRleHRUZXN0
V2l0aEV4dGVuc2lvbigpCisgICAgeworICAgICAgICBtX3dpdGhFeHRlbnNpb24gPSB0cnVlOwor
ICAgIH0KK307CisKK1RFU1RfRihFV0syQ29udGV4dFRlc3RXaXRoRXh0ZW5zaW9uLCBld2tfamF2
YXNjcmlwdF9iaW5kaW5nKQoreworICAgIGJvb2wgcmVjZWl2ZWQgPSBmYWxzZTsKKyAgICBFd2tf
Q29udGV4dCogY29udGV4dCA9IGV3a192aWV3X2NvbnRleHRfZ2V0KHdlYlZpZXcoKSk7CisKKyAg
ICBld2tfY29udGV4dF9tZXNzYWdlX2Zyb21fZXh0ZW5zaW9uc19jYWxsYmFja19zZXQoY29udGV4
dCwgbWVzc2FnZVJlY2VpdmVkQ2FsbGJhY2ssICZyZWNlaXZlZCk7CisKKyAgICBld2tfdmlld191
cmxfc2V0KHdlYlZpZXcoKSwgZW52aXJvbm1lbnQtPmRlZmF1bHRUZXN0UGFnZVVybCgpKTsKKyAg
ICBBU1NFUlRfVFJVRSh3YWl0VW50aWxMb2FkRmluaXNoZWQoKSk7CisKKyAgICBld2tfdmlld19z
Y3JpcHRfZXhlY3V0ZSh3ZWJWaWV3KCksICJ0ZXN0LmhlbGxvKCk7IiwgbnVsbHB0ciwgbnVsbHB0
cik7CisKKyAgICBBU1NFUlRfVFJVRSh3YWl0VW50aWxUcnVlKHJlY2VpdmVkLCB0ZXN0VGltZW91
dFNlY29uZHMpKTsKK30KKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvZWZsL0VXZWJLaXRfRXh0ZW5zaW9uLmggYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9lZmwvRVdlYktpdF9FeHRlbnNpb24uaApp
bmRleCA5MDYwMDFkYTcyMWUwMjYwMWY4MjljNTJhZjNmNzQ5MDUyOTJiYjkwLi4xNmUyMzlkZDk2
OTA0ZmQ2NDYyNzk1ZjUwYmVhZjJiNDBhYWNjMmM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9lZmwvRVdlYktpdF9FeHRlbnNpb24uaAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9lZmwvRVdl
YktpdF9FeHRlbnNpb24uaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTQgUnl1YW4gQ2hvaSA8cnl1YW4uY2hvaUBnbWFpbC5jb20+LiAgQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNC0yMDE1IFJ5dWFuIENob2kgPHJ5dWFuLmNob2lAZ21h
aWwuY29tPi4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTU3LDUgKzU3LDYgQEAKICNkZWZpbmUgRVdlYktpdF9FeHRlbnNpb25faAogCiAj
aW5jbHVkZSAiZXdrX2V4dGVuc2lvbi5oIgorI2luY2x1ZGUgImV3a19wYWdlLmgiCiAKICNlbmRp
ZiAvLyBFV2ViS2l0X0V4dGVuc2lvbl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9lZmwvZXdrX2V4dGVuc2lvbi5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9lZmwvZXdrX2V4dGVuc2lvbi5j
cHAKaW5kZXggMTZmMzQ0ZjM0ZGM2NjExNDY1MjkyZjMzZTE5MjUxYzhjZmI0OTkzYi4uM2M3ODQ2
MmU4MTJmOTMzMTc2YzZhNTAxY2JkYWRjN2Y0YzJiYjlkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZWZsL2V3a19leHRlbnNpb24uY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2VmbC9l
d2tfZXh0ZW5zaW9uLmNwcApAQCAtMzEsNyArMzEsOSBAQAogI2luY2x1ZGUgIldLQnVuZGxlLmgi
CiAjaW5jbHVkZSAiV0tCdW5kbGVBUElDYXN0LmgiCiAjaW5jbHVkZSAiV0tSZXRhaW5QdHIuaCIK
KyNpbmNsdWRlICJXZWJQYWdlLmgiCiAjaW5jbHVkZSAiZXdrX2V4dGVuc2lvbl9wcml2YXRlLmgi
CisjaW5jbHVkZSAiZXdrX3BhZ2VfcHJpdmF0ZS5oIgogI2luY2x1ZGUgPFdlYktpdC9XS1N0cmlu
Zy5oPgogI2luY2x1ZGUgPFdlYktpdC9XS1R5cGUuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3Ry
aW5nLmg+CkBAIC03MCwxNCArNzIsMzAgQEAgdm9pZCBFd2tFeHRlbnNpb246OnJlbW92ZShFd2tf
RXh0ZW5zaW9uX0NsaWVudCogY2xpZW50KQogICAgIG1fY2xpZW50cy5yZW1vdmVGaXJzdChjbGll
bnQpOwogfQogCi12b2lkIEV3a0V4dGVuc2lvbjo6ZGlkQ3JlYXRlUGFnZShXS0J1bmRsZVJlZiwg
V0tCdW5kbGVQYWdlUmVmLCBjb25zdCB2b2lkKikKK3ZvaWQgRXdrRXh0ZW5zaW9uOjpkaWRDcmVh
dGVQYWdlKFdLQnVuZGxlUmVmLCBXS0J1bmRsZVBhZ2VSZWYgd2tQYWdlLCBjb25zdCB2b2lkKiBj
bGllbnRJbmZvKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgRXdrRXh0ZW5zaW9uKiBz
ZWxmID0gdG9Fd2tFeHRlbmRpb24oY2xpZW50SW5mbyk7CisgICAgV2ViUGFnZSogcGFnZSA9IHRv
SW1wbCh3a1BhZ2UpOworCisgICAgRXdrUGFnZSogZXdrUGFnZSA9IG5ldyBFd2tQYWdlKHBhZ2Up
OworICAgIHNlbGYtPm1fcGFnZU1hcC5hZGQocGFnZSwgc3RkOjp1bmlxdWVfcHRyPEV3a1BhZ2U+
KGV3a1BhZ2UpKTsKKworICAgIGZvciAoYXV0byYgaXQgOiBzZWxmLT5tX2NsaWVudHMpIHsKKyAg
ICAgICAgaWYgKGl0LT5wYWdlX2FkZCkKKyAgICAgICAgICAgIGl0LT5wYWdlX2FkZChld2tQYWdl
LCBpdC0+ZGF0YSk7CisgICAgfQogfQogCi12b2lkIEV3a0V4dGVuc2lvbjo6d2lsbERlc3Ryb3lQ
YWdlKFdLQnVuZGxlUmVmLCBXS0J1bmRsZVBhZ2VSZWYsIGNvbnN0IHZvaWQqKQordm9pZCBFd2tF
eHRlbnNpb246OndpbGxEZXN0cm95UGFnZShXS0J1bmRsZVJlZiwgV0tCdW5kbGVQYWdlUmVmIHdr
UGFnZSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwor
ICAgIEV3a0V4dGVuc2lvbiogc2VsZiA9IHRvRXdrRXh0ZW5kaW9uKGNsaWVudEluZm8pOworICAg
IFdlYlBhZ2UqIHBhZ2UgPSB0b0ltcGwod2tQYWdlKTsKKworICAgIGZvciAoYXV0byYgaXQgOiBz
ZWxmLT5tX2NsaWVudHMpIHsKKyAgICAgICAgaWYgKGl0LT5wYWdlX2RlbCkKKyAgICAgICAgICAg
IGl0LT5wYWdlX2RlbChzZWxmLT5tX3BhZ2VNYXAuZ2V0KHBhZ2UpLCBpdC0+ZGF0YSk7CisgICAg
fQorICAgIHNlbGYtPm1fcGFnZU1hcC5yZW1vdmUocGFnZSk7CiB9CiAKIHZvaWQgRXdrRXh0ZW5z
aW9uOjpkaWRSZWNlaXZlTWVzc2FnZShXS0J1bmRsZVJlZiwgV0tTdHJpbmdSZWYgbWVzc2FnZU5h
bWUsIFdLVHlwZVJlZiBtZXNzYWdlQm9keSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2VmbC9l
d2tfZXh0ZW5zaW9uLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS9lZmwvZXdrX2V4dGVuc2lvbi5oCmluZGV4IDRmYTNhZDE4YzkyZDI5YmIyOGJlMjExOWM1
MmI4MWY5ZDdiMjk2MjMuLmYyOGFmOGM0MjMxZTZiOGU4NGY4YjBiMDAwMDUxNzc5MzU1N2M5NTUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L2VmbC9ld2tfZXh0ZW5zaW9uLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvZWZsL2V3a19leHRlbnNpb24uaApAQCAtMzgsNiArMzgsMTEgQEAgZXh0
ZXJuICJDIiB7CiAjZW5kaWYKIAogLyoqCisgKiBEZWNsYXJlIEV3a19QYWdlLgorICovCit0eXBl
ZGVmIHN0cnVjdCBFd2tQYWdlIEV3a19QYWdlOworCisvKioKICAqIERlY2xhcmUgRXdrX0V4dGVu
c2lvbi4KICAqLwogdHlwZWRlZiBzdHJ1Y3QgRXdrRXh0ZW5zaW9uIEV3a19FeHRlbnNpb247CkBA
IC01Nyw2ICs2Miw5IEBAIHN0cnVjdCBFd2tFeHRlbnNpb25DbGllbnQgewogICAgIGludCB2ZXJz
aW9uOwogICAgIHZvaWQgKmRhdGE7CiAKKyAgICB2b2lkICgqcGFnZV9hZGQpKEV3a19QYWdlKiBw
YWdlLCB2b2lkICpkYXRhKTsKKyAgICB2b2lkICgqcGFnZV9kZWwpKEV3a19QYWdlKiBwYWdlLCB2
b2lkICpkYXRhKTsKKwogICAgIC8qKgogICAgICAqIENhbGxiYWNrcyB0byByZWNlaXZlIG1lc3Nh
Z2UgZnJvbSBld2tfY29udGV4dC4KICAgICAgKgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZWZsL2V3a19leHRlbnNpb25fcHJpdmF0ZS5o
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZWZsL2V3a19l
eHRlbnNpb25fcHJpdmF0ZS5oCmluZGV4IGQ0NzI3Njk0NmUzOTg1ODIxMGNjNzE5N2FiNGZlOTk0
YTBjNWYwNWYuLjhmZmFkZDUwZDcxNDY0YWU5YjAzMDFlYTk4NjM4ZTY5MjI0MzRiZjYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2VmbC9l
d2tfZXh0ZW5zaW9uX3ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9lZmwvZXdrX2V4dGVuc2lvbl9wcml2YXRlLmgKQEAgLTI2LDEyICsy
NiwxNiBAQAogI2lmbmRlZiBld2tfZXh0ZW5zaW9uX3ByaXZhdGVfaAogI2RlZmluZSBld2tfZXh0
ZW5zaW9uX3ByaXZhdGVfaAogCisjaW5jbHVkZSAiZXdrX3BhZ2VfcHJpdmF0ZS5oIgogI2luY2x1
ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBJbmplY3RlZEJ1
bmRsZTsKK2NsYXNzIFdlYlBhZ2U7CiB9CiAKK2NsYXNzIEV3a1BhZ2U7CisKIGNsYXNzIEV3a0V4
dGVuc2lvbiB7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgRXdrRXh0ZW5zaW9uKFdlYktpdDo6SW5q
ZWN0ZWRCdW5kbGUqKTsKQEAgLTUxLDYgKzU1LDcgQEAgcHJpdmF0ZToKICAgICBXZWJLaXQ6Oklu
amVjdGVkQnVuZGxlKiBtX2J1bmRsZTsKIAogICAgIFZlY3RvcjxFd2tfRXh0ZW5zaW9uX0NsaWVu
dCo+IG1fY2xpZW50czsKKyAgICBIYXNoTWFwPFdlYktpdDo6V2ViUGFnZSosIHN0ZDo6dW5pcXVl
X3B0cjxFd2tQYWdlPj4gbV9wYWdlTWFwOwogfTsKIAogI2VuZGlmIC8vIGV3a19leHRlbnNpb25f
cHJpdmF0ZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9lZmwvZXdrX3BhZ2UuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvZWZsL2V3a19wYWdlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iZjQzMzc5YzQ3
MjM3M2ZiMzY1OWI2MjYxODQwNmZiYWIyM2YxMWJmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZWZsL2V3a19wYWdlLmNwcApA
QCAtMCwwICsxLDEzNyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBSeXVhbiBDaG9pIDxy
eXVhbi5jaG9pQGdtYWlsLmNvbT4uICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiZXdrX3BhZ2UuaCIKKworI2luY2x1ZGUgIldL
QnVuZGxlLmgiCisjaW5jbHVkZSAiV0tCdW5kbGVBUElDYXN0LmgiCisjaW5jbHVkZSAiV0tCdW5k
bGVGcmFtZS5oIgorI2luY2x1ZGUgIldlYkZyYW1lLmgiCisjaW5jbHVkZSAiV2ViUGFnZS5oIgor
I2luY2x1ZGUgImV3a19wYWdlX3ByaXZhdGUuaCIKKwordXNpbmcgbmFtZXNwYWNlIFdlYktpdDsK
Kworc3RhdGljIGlubGluZSBFd2tQYWdlKiB0b0V3a1BhZ2UoY29uc3Qgdm9pZCogY2xpZW50SW5m
bykKK3sKKyAgICByZXR1cm4gY29uc3RfY2FzdDxFd2tQYWdlKj4oc3RhdGljX2Nhc3Q8Y29uc3Qg
RXdrUGFnZSo+KGNsaWVudEluZm8pKTsKK30KKworRXdrUGFnZTo6RXdrUGFnZShXZWJQYWdlKiBw
YWdlKQorICAgIDogbV9wYWdlKHBhZ2UpCit7CisgICAgV0tCdW5kbGVQYWdlTG9hZGVyQ2xpZW50
VjcgbG9hZGVyQ2xpZW50ID0geworICAgICAgICB7CisgICAgICAgICAgICA3LCAvLyB2ZXJzaW9u
CisgICAgICAgICAgICB0aGlzLCAvLyBjbGllbnRJbmZvCisgICAgICAgIH0sCisgICAgICAgIDAs
IC8vIGRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUsCisgICAgICAgIDAsIC8vIGRpZFJl
Y2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZEZvckZyYW1lLAorICAgICAgICAw
LCAvLyBkaWRGYWlsUHJvdmlzaW9uYWxMb2FkV2l0aEVycm9yRm9yRnJhbWUKKyAgICAgICAgMCwg
Ly8gZGlkQ29tbWl0TG9hZEZvckZyYW1lCisgICAgICAgIGRpZEZpbmlzaERvY3VtZW50TG9hZEZv
ckZyYW1lLAorICAgICAgICAwLCAvLyBkaWRGaW5pc2hMb2FkRm9yRnJhbWUKKyAgICAgICAgMCwg
Ly8gZGlkRmFpbExvYWRXaXRoRXJyb3JGb3JGcmFtZQorICAgICAgICAwLCAvLyBkaWRTYW1lRG9j
dW1lbnROYXZpZ2F0aW9uRm9yRnJhbWUsCisgICAgICAgIDAsIC8vIGRpZFJlY2VpdmVUaXRsZUZv
ckZyYW1lCisgICAgICAgIDAsIC8vIGRpZEZpcnN0TGF5b3V0Rm9yRnJhbWUKKyAgICAgICAgMCwg
Ly8gZGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0Rm9yRnJhbWUKKyAgICAgICAgMCwgLy8g
ZGlkUmVtb3ZlRnJhbWVGcm9tSGllcmFyY2h5CisgICAgICAgIDAsIC8vIGRpZERpc3BsYXlJbnNl
Y3VyZUNvbnRlbnRGb3JGcmFtZQorICAgICAgICAwLCAvLyBkaWRSdW5JbnNlY3VyZUNvbnRlbnRG
b3JGcmFtZQorICAgICAgICAwLCAvLyBkaWRDbGVhcldpbmRvd09iamVjdEZvckZyYW1lLAorICAg
ICAgICAwLCAvLyBkaWRDYW5jZWxDbGllbnRSZWRpcmVjdEZvckZyYW1lCisgICAgICAgIDAsIC8v
IHdpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3RGb3JGcmFtZQorICAgICAgICAwLCAvLyBkaWRIYW5k
bGVPbmxvYWRFdmVudHNGb3JGcmFtZQorICAgICAgICAwLCAvLyBkaWRMYXlvdXRGb3JGcmFtZQor
ICAgICAgICAwLCAvLyBkaWROZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQKKyAgICAgICAg
MCwgLy8gZGlkRGV0ZWN0WFNTRm9yRnJhbWUKKyAgICAgICAgMCwgLy8gc2hvdWxkR29Ub0JhY2tG
b3J3YXJkTGlzdEl0ZW0KKyAgICAgICAgMCwgLy8gZ2xvYmFsT2JqZWN0SXNBdmFpbGFibGVGb3JG
cmFtZQorICAgICAgICAwLCAvLyB3aWxsRGlzY29ubmVjdERPTVdpbmRvd0V4dGVuc2lvbkZyb21H
bG9iYWxPYmplY3QKKyAgICAgICAgMCwgLy8gZGlkUmVjb25uZWN0RE9NV2luZG93RXh0ZW5zaW9u
VG9HbG9iYWxPYmplY3QKKyAgICAgICAgMCwgLy8gd2lsbERlc3Ryb3lHbG9iYWxPYmplY3RGb3JE
T01XaW5kb3dFeHRlbnNpb24KKyAgICAgICAgMCwgLy8gZGlkRmluaXNoUHJvZ3Jlc3MKKyAgICAg
ICAgMCwgLy8gc2hvdWxkRm9yY2VVbml2ZXJzYWxBY2Nlc3NGcm9tTG9jYWxVUkwKKyAgICAgICAg
MCwgLy8gZGlkUmVjZWl2ZUludGVudEZvckZyYW1lX3VuYXZhaWxhYmxlCisgICAgICAgIDAsIC8v
IHJlZ2lzdGVySW50ZW50U2VydmljZUZvckZyYW1lX3VuYXZhaWxhYmxlCisgICAgICAgIDAsIC8v
IGRpZExheW91dAorICAgICAgICAwLCAvLyBmZWF0dXJlc1VzZWRJblBhZ2UKKyAgICAgICAgMCwg
Ly8gd2lsbExvYWRVUkxSZXF1ZXN0CisgICAgICAgIDAsIC8vIHdpbGxMb2FkRGF0YVJlcXVlc3QK
KyAgICAgICAgMCAvLyB3aWxsRGVzdHJveUZyYW1lCisgICAgfTsKKyAgICBXS0J1bmRsZVBhZ2VT
ZXRQYWdlTG9hZGVyQ2xpZW50KHRvQVBJKHBhZ2UpLCAmbG9hZGVyQ2xpZW50LmJhc2UpOworfQor
Cit2b2lkIEV3a1BhZ2U6OmFwcGVuZChFd2tfUGFnZV9DbGllbnQqIGNsaWVudCkKK3sKKyAgICBt
X2NsaWVudHMuYXBwZW5kKGNsaWVudCk7Cit9CisKK3ZvaWQgRXdrUGFnZTo6cmVtb3ZlKEV3a19Q
YWdlX0NsaWVudCogY2xpZW50KQoreworICAgIG1fY2xpZW50cy5yZW1vdmUobV9jbGllbnRzLmZp
bmQoY2xpZW50KSk7Cit9CisKK3ZvaWQgRXdrUGFnZTo6ZGlkRmluaXNoRG9jdW1lbnRMb2FkRm9y
RnJhbWUoV0tCdW5kbGVQYWdlUmVmLCBXS0J1bmRsZUZyYW1lUmVmIGZyYW1lLCBXS1R5cGVSZWYq
LCBjb25zdCB2b2lkICpjbGllbnRJbmZvKQoreworICAgIGlmICghV0tCdW5kbGVGcmFtZUlzTWFp
bkZyYW1lKGZyYW1lKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgRXdrUGFnZSogc2VsZiA9IHRv
RXdrUGFnZShjbGllbnRJbmZvKTsKKyAgICBmb3IgKGF1dG8mIGl0IDogc2VsZi0+bV9jbGllbnRz
KSB7CisgICAgICAgIGlmIChpdC0+bG9hZF9maW5pc2hlZCkKKyAgICAgICAgICAgIGl0LT5sb2Fk
X2ZpbmlzaGVkKHNlbGYsIGl0LT5kYXRhKTsKKyAgICB9Cit9CisKK0pTR2xvYmFsQ29udGV4dFJl
ZiBld2tfcGFnZV9qc19nbG9iYWxfY29udGV4dF9nZXQoRXdrX1BhZ2UqIGV3a1BhZ2UpCit7Cisg
ICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKGV3a1BhZ2UsIDApOworCisgICAgV2Vi
RnJhbWUqIGNvcmVGcmFtZSA9IGV3a1BhZ2UtPnBhZ2UoKS0+bWFpbldlYkZyYW1lKCk7CisgICAg
aWYgKCFjb3JlRnJhbWUpCisgICAgICAgIHJldHVybiAwOworCisgICAgcmV0dXJuIGNvcmVGcmFt
ZS0+anNDb250ZXh0KCk7Cit9CisKK3ZvaWQgZXdrX3BhZ2VfY2xpZW50X2FkZChFd2tfUGFnZSog
ZXdrUGFnZSwgRXdrX1BhZ2VfQ2xpZW50KiBjbGllbnQpCit7CisgICAgRUlOQV9TQUZFVFlfT05f
TlVMTF9SRVRVUk4oZXdrUGFnZSk7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oY2xp
ZW50KTsKKworICAgIGV3a1BhZ2UtPmFwcGVuZChjbGllbnQpOworfQorCit2b2lkIGV3a19wYWdl
X2NsaWVudF9kZWwoRXdrX1BhZ2UqIGV3a1BhZ2UsIEV3a19QYWdlX0NsaWVudCogY2xpZW50KQor
eworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKGV3a1BhZ2UpOworICAgIEVJTkFfU0FG
RVRZX09OX05VTExfUkVUVVJOKGNsaWVudCk7CisKKyAgICBld2tQYWdlLT5yZW1vdmUoY2xpZW50
KTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL2VmbC9ld2tfcGFnZS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvZWZsL2V3a19wYWdlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTRmYjQwNTExYzMzYzQ1MmRm
MDlmMjIxN2FmNjlkZWJhYWUzM2UzMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2VmbC9ld2tfcGFnZS5oCkBAIC0wLDAgKzEs
NTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgUnl1YW4gQ2hvaSA8cnl1YW4uY2hvaUBn
bWFpbC5jb20+LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworLyoqCisgKiBAZmls
ZSAgICBld2tfcGFnZS5oCisgKiBAYnJpZWYgICBEZXNjcmliZXMgdGhlIEV3a19QYWdlIEFQSS4K
KyAqLworCisjaWZuZGVmIGV3a19wYWdlX2gKKyNkZWZpbmUgZXdrX3BhZ2VfaAorCisjaW5jbHVk
ZSA8RWluYS5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQmFzZS5oPgorCit0eXBlZGVm
IHN0cnVjdCBFd2tQYWdlIEV3a19QYWdlOworCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAi
QyIgeworI2VuZGlmCisKK3N0cnVjdCBFd2tQYWdlQ2xpZW50IHsKKyAgICBpbnQgdmVyc2lvbjsK
KyAgICB2b2lkICpkYXRhOworCisgICAgdm9pZCAoKmxvYWRfZmluaXNoZWQpKEV3a19QYWdlICpw
YWdlLCB2b2lkICpkYXRhKTsKK307Cit0eXBlZGVmIHN0cnVjdCBFd2tQYWdlQ2xpZW50IEV3a19Q
YWdlX0NsaWVudDsKKworRUFQSSBKU0dsb2JhbENvbnRleHRSZWYgZXdrX3BhZ2VfanNfZ2xvYmFs
X2NvbnRleHRfZ2V0KEV3a19QYWdlICpwYWdlKTsKKworRUFQSSB2b2lkIGV3a19wYWdlX2NsaWVu
dF9hZGQoRXdrX1BhZ2UgKnBhZ2UsIEV3a19QYWdlX0NsaWVudCAqY2xpZW50KTsKKworI2lmZGVm
IF9fY3BsdXNwbHVzCit9CisjZW5kaWYKKworI2VuZGlmIC8vIGV3a19leHRlbnNpb25faApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZWZs
L2V3a19wYWdlX3ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL2VmbC9ld2tfcGFnZV9wcml2YXRlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjZkODhiNTM3Zjg2
ZGZkODc3NGQ0MGMxZDJjOTJkMDI1Njk0NjYwNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2VmbC9ld2tfcGFnZV9wcml2YXRl
LmgKQEAgLTAsMCArMSw1MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBSeXVhbiBDaG9p
IDxyeXVhbi5jaG9pQGdtYWlsLmNvbT4uICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaWZuZGVmIGV3a19wYWdlX3ByaXZhdGVfaAorI2RlZmluZSBld2tfcGFnZV9wcml2YXRlX2gK
KwordHlwZWRlZiBzdHJ1Y3QgRXdrUGFnZUNsaWVudCBFd2tfUGFnZV9DbGllbnQ7CisKK25hbWVz
cGFjZSBXZWJLaXQgeworY2xhc3MgV2ViUGFnZTsKK30KKworY2xhc3MgRXdrUGFnZSB7CitwdWJs
aWM6CisgICAgZXhwbGljaXQgRXdrUGFnZShXZWJLaXQ6OldlYlBhZ2UqKTsKKworICAgIFdlYktp
dDo6V2ViUGFnZSogcGFnZSgpIHsgcmV0dXJuIG1fcGFnZTsgfQorCisgICAgdm9pZCBhcHBlbmQo
RXdrX1BhZ2VfQ2xpZW50Kik7CisgICAgdm9pZCByZW1vdmUoRXdrX1BhZ2VfQ2xpZW50Kik7CisK
K3ByaXZhdGU6CisgICAgc3RhdGljIHZvaWQgZGlkRmluaXNoRG9jdW1lbnRMb2FkRm9yRnJhbWUo
V0tCdW5kbGVQYWdlUmVmLCBXS0J1bmRsZUZyYW1lUmVmLCBXS1R5cGVSZWYqLCBjb25zdCB2b2lk
ICopOworCisgICAgV2ViS2l0OjpXZWJQYWdlKiBtX3BhZ2U7CisgICAgVmVjdG9yPEV3a19QYWdl
X0NsaWVudCo+IG1fY2xpZW50czsKK307CisKKyNlbmRpZiAvLyBld2tfcGFnZV9wcml2YXRlX2gK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL2VmbC9ld2Via2l0Mi1leHRlbnNpb24ucGMuaW4g
Yi9Tb3VyY2UvV2ViS2l0Mi9lZmwvZXdlYmtpdDItZXh0ZW5zaW9uLnBjLmluCmluZGV4IDI2MTZj
ZGMyZjkzOTVlYmU3Mjk2ZDA1NDhmZWM4MDFmYzUxZTgzYzQuLjY5ZTNiODM5NzJhZGYyNTcwMzY1
MTJjZmJmZjZmMDI3MGNlY2RiMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL2VmbC9ld2Vi
a2l0Mi1leHRlbnNpb24ucGMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvZWZsL2V3ZWJraXQyLWV4
dGVuc2lvbi5wYy5pbgpAQCAtNSw0ICs1LDQgQEAgTmFtZTogZXdlYmtpdDItZXh0ZW5zaW9uCiBE
ZXNjcmlwdGlvbjogRXh0ZW5zaW9uIGZvciBXZWJLaXQyL0VGTChld2Via2l0MikKIFZlcnNpb246
IEBQUk9KRUNUX1ZFUlNJT05ACiBSZXF1aXJlczogZWluYQotQ2ZsYWdzOiAtSSR7aW5jbHVkZWRp
cn0vQFdlYktpdDJfT1VUUFVUX05BTUVALUBQUk9KRUNUX1ZFUlNJT05fTUFKT1JAL2V4dGVuc2lv
bgorQ2ZsYWdzOiAtSSR7aW5jbHVkZWRpcn0vQFdlYktpdDJfT1VUUFVUX05BTUVALUBQUk9KRUNU
X1ZFUlNJT05fTUFKT1JAL2V4dGVuc2lvbiAtSSR7aW5jbHVkZWRpcn0vQFdlYktpdDJfT1VUUFVU
X05BTUVALUBQUk9KRUNUX1ZFUlNJT05fTUFKT1JACg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>247381</attachid>
            <date>2015-02-25 18:09:46 -0800</date>
            <delta_ts>2015-02-25 18:25:39 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-142033-20150226110927.patch</filename>
            <type>text/plain</type>
            <size>25442</size>
            <attacher name="Ryuan Choi">ryuan.choi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgwNjA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
YjNiYjNlNjM4ZmY3NGRhZjRhY2Q5OGQ2ZDFlZmFlNTU1ZGViZThhLi4yNTJhY2VkZDZiZGUxNDEw
MWExNWNmYzZmMDViOWEwOWFkYmM0YWM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMiBAQAorMjAxNS0wMi0yNSAgUnl1YW4gQ2hvaSAgPHJ5dWFuLmNob2lAbmF2ZXJjb3Jw
LmNvbT4KKworICAgICAgICBbRUZMXSBFeHBvc2UgSmF2YVNjcmlwdCBiaW5kaW5nIGludGVyZmFj
ZSB0aHJvdWdoIGV3a19leHRlbnNpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE0MjAzMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogUGxhdGZvcm1FZmwuY21ha2U6IEluc3RhbGwgSmF2YXNjcmlwdCBB
UElzCisKIDIwMTUtMDItMjQgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgogCiAgICAg
ICAgIE1hY2hpbmVUaHJlYWRzOjpUaHJlYWQgY2xlYW4gdXAgaGFzIGEgdXNlIGFmdGVyIGZyZWUg
cmFjZSBjb25kaXRpb24uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggYTYwMzEwYzg0MmM3ZGZkMzlhNjcwM2U0OTQ0
YTMzMjczYWY4OGE2ZS4uZjY3YTJmM2RlZDdlMmYyOTAxYzQ0YjIzMTIyMjFiMmI5NGVjOTA5NCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDE1LTAyLTI1ICBSeXVhbiBDaG9pICA8cnl1
YW4uY2hvaUBuYXZlcmNvcnAuY29tPgorCisgICAgICAgIFtFRkxdIEV4cG9zZSBKYXZhU2NyaXB0
IGJpbmRpbmcgaW50ZXJmYWNlIHRocm91Z2ggZXdrX2V4dGVuc2lvbgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQyMDMzCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBQbGF0Zm9ybUVmbC5jbWFrZTogQWRk
ZWQgZXdrX3BhZ2UgYW5kIG5ldyB0ZXN0IGNhc2UuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9l
ZmwvdGVzdHMvZXh0ZW5zaW9ucy9leHRlbnNpb25fc2FtcGxlLmNwcDogUmVnaXN0ZXJlZCB0ZXN0
IG9iamVjdCBmb3IgbmV3IHRlc3QgY2FzZS4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC90
ZXN0cy90ZXN0X2V3azJfamF2YXNjcmlwdF9iaW5kaW5nLmNwcDogQWRkZWQgc2ltcGxlIGJpbmRp
bmcgQVBJIHRlc3QgY2FzZQorICAgICAgICAoRVdLMkNvbnRleHRUZXN0V2l0aEV4dGVuc2lvbjo6
bWVzc2FnZVJlY2VpdmVkQ2FsbGJhY2spOgorICAgICAgICAoRVdLMkNvbnRleHRUZXN0V2l0aEV4
dGVuc2lvbjo6RVdLMkNvbnRleHRUZXN0V2l0aEV4dGVuc2lvbik6CisgICAgICAgIChURVNUX0Yp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2VmbC9FV2ViS2l0X0V4
dGVuc2lvbi5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2VmbC9l
d2tfZXh0ZW5zaW9uLmNwcDoKKyAgICAgICAgKEV3a0V4dGVuc2lvbjo6ZGlkQ3JlYXRlUGFnZSk6
CisgICAgICAgIChFd2tFeHRlbnNpb246OndpbGxEZXN0cm95UGFnZSk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZWZsL2V3a19leHRlbnNpb24uaDoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9lZmwvZXdrX2V4dGVuc2lvbl9wcml2YXRl
Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZWZsL2V3a19wYWdl
LmNwcDogQWRkZWQuCisgICAgICAgICh0b0V3a1BhZ2UpOgorICAgICAgICAoRXdrUGFnZTo6RXdr
UGFnZSk6CisgICAgICAgIChFd2tQYWdlOjphcHBlbmQpOgorICAgICAgICAoRXdrUGFnZTo6cmVt
b3ZlKToKKyAgICAgICAgKEV3a1BhZ2U6OmRpZEZpbmlzaERvY3VtZW50TG9hZEZvckZyYW1lKToK
KyAgICAgICAgKGV3a19wYWdlX2pzX2dsb2JhbF9jb250ZXh0X2dldCk6CisgICAgICAgIChld2tf
cGFnZV9jbGllbnRfYWRkKToKKyAgICAgICAgKGV3a19wYWdlX2NsaWVudF9kZWwpOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2VmbC9ld2tfcGFnZS5oOiBBZGRlZC4K
KyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9lZmwvZXdrX3BhZ2VfcHJp
dmF0ZS5oOiBBZGRlZC4KKyAgICAgICAgKEV3a1BhZ2U6OnBhZ2UpOgorICAgICAgICAqIGVmbC9l
d2Via2l0Mi1leHRlbnNpb24ucGMuaW46CisKIDIwMTUtMDItMjQgIEd5dXlvdW5nIEtpbSAgPGd5
dXlvdW5nLmtpbUBzYW1zdW5nLmNvbT4KIAogICAgICAgICBGaXggYnVpbGQgYnJlYWsgb24gRUZM
IGFuZCBHVEsgcG9ydCBzaW5jZSByMTgwNTg1LgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL1BsYXRmb3JtRWZsLmNtYWtlIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1BsYXRmb3Jt
RWZsLmNtYWtlCmluZGV4IDQ0ZjI3Y2E4ZTJmMGE2NjY4NWEyYmVlNjgxYmI4YTEzM2MyYWY0NTMu
LjJkYjk1ZmU0YjZmYzUzYmM0ZjJkMjE0Y2Y3YmYyZDY2ODBlYmFmODUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9QbGF0Zm9ybUVmbC5jbWFrZQorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvUGxhdGZvcm1FZmwuY21ha2UKQEAgLTQsMyArNCwxMyBAQCBsaXN0KEFQUEVORCBK
YXZhU2NyaXB0Q29yZV9JTkNMVURFX0RJUkVDVE9SSUVTCiAgICAgJHtFT19JTkNMVURFX0RJUlN9
CiApCiBhZGRfZGVmaW5pdGlvbnMoLURTVEFUSUNBTExZX0xJTktFRF9XSVRIX1dURikKKworaW5z
dGFsbChGSUxFUyBBUEkvSmF2YVNjcmlwdC5oCisgICAgICAgICAgICAgIEFQSS9KU0Jhc2UuaAor
ICAgICAgICAgICAgICBBUEkvSlNDb250ZXh0UmVmLmgKKyAgICAgICAgICAgICAgQVBJL0pTT2Jq
ZWN0UmVmLmgKKyAgICAgICAgICAgICAgQVBJL0pTU3RyaW5nUmVmLmgKKyAgICAgICAgICAgICAg
QVBJL0pTVmFsdWVSZWYuaAorICAgICAgICAgICAgICBBUEkvV2ViS2l0QXZhaWxhYmlsaXR5LmgK
KyAgICAgICAgREVTVElOQVRJT04gImluY2x1ZGUvJHtXZWJLaXQyX09VVFBVVF9OQU1FfS0ke1BS
T0pFQ1RfVkVSU0lPTl9NQUpPUn0vSmF2YVNjcmlwdENvcmUiCispCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZSBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZs
LmNtYWtlCmluZGV4IDM4MjkwZTA4NjMyMzBiZjFkZWIwMmRiOGU2NzViODRkYjNlNTQ0MDYuLjFm
YThlNzdlNzZhOWE5MmMwZTcwYWEzYjRjMzk3ZjY5YzIxOWVmM2MgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3Jt
RWZsLmNtYWtlCkBAIC0xODAsNiArMTgwLDcgQEAgbGlzdChBUFBFTkQgV2ViS2l0Ml9TT1VSQ0VT
CiAgICAgV2ViUHJvY2Vzcy9Db29raWVzL3NvdXAvV2ViS2l0U291cENvb2tpZUphclNxbGl0ZS5j
cHAKIAogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2VmbC9ld2tfZXh0ZW5zaW9u
LmNwcAorICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2VmbC9ld2tfcGFnZS5jcHAK
IAogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvZWZsL0luamVjdGVkQnVuZGxlRWZsLmNw
cAogCkBAIC00MDcsNiArNDA4LDcgQEAgc2V0KEVXZWJLaXQyX0hFQURFUlMKIHNldChFV2ViS2l0
Ml9FeHRlbnNpb25fSEVBREVSUwogICAgICIke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZWZsL0VXZWJLaXRfRXh0ZW5zaW9uLmgiCiAgICAg
IiR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9lZmwvZXdrX2V4dGVuc2lvbi5oIgorICAgICIke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0v
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZWZsL2V3a19wYWdlLmgiCiApCiAKIGluc3Rh
bGwoRklMRVMgJHtFV2ViS2l0Ml9IRUFERVJTfSBERVNUSU5BVElPTiBpbmNsdWRlLyR7V2ViS2l0
Ml9PVVRQVVRfTkFNRX0tJHtQUk9KRUNUX1ZFUlNJT05fTUFKT1J9KQpAQCAtNTEwLDYgKzUxMiw3
IEBAIHNldChFV0syVW5pdFRlc3RzX0JJTkFSSUVTCiAgICAgdGVzdF9ld2syX2VpbmFfc2hhcmVk
X3N0cmluZwogICAgIHRlc3RfZXdrMl9mYXZpY29uX2RhdGFiYXNlCiAgICAgdGVzdF9ld2syX2Zp
bGVfY2hvb3Nlcl9yZXF1ZXN0CisgICAgdGVzdF9ld2syX2phdmFzY3JpcHRfYmluZGluZwogICAg
IHRlc3RfZXdrMl9vYmplY3QKICAgICB0ZXN0X2V3azJfcGFnZV9ncm91cAogICAgIHRlc3RfZXdr
Ml9wb3B1cF9tZW51CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2Vm
bC90ZXN0cy9leHRlbnNpb25zL2V4dGVuc2lvbl9zYW1wbGUuY3BwIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvZXh0ZW5zaW9ucy9leHRlbnNpb25fc2FtcGxlLmNwcApp
bmRleCAyOTQxMzQzZWMyYmZiNDAyN2U0MTI2ZjI2Mzk0YTdkMmNlMTNmYTlkLi4yMjk2YTI5ZmJi
NmE5MDUxM2RlOWQyYWJjNzI2ZGU3ZGZkODBhOGIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy9leHRlbnNpb25zL2V4dGVuc2lvbl9zYW1wbGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL2V4dGVuc2lvbnMv
ZXh0ZW5zaW9uX3NhbXBsZS5jcHAKQEAgLTI0LDExICsyNCw2MyBAQAogICovCiAKICNpbmNsdWRl
ICJFV2ViS2l0X0V4dGVuc2lvbi5oIgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHQuaD4KIAogI2lmZGVmIF9fY3BsdXNwbHVzCiBleHRlcm4gIkMiIHsKICNlbmRpZgogCitzdGF0
aWMgSlNWYWx1ZVJlZiBoZWxsb0NhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVj
dFJlZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291
bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikK
K3sKKyAgICBFd2tfRXh0ZW5zaW9uKiBleHRlbnNpb24gPSBzdGF0aWNfY2FzdDxFd2tfRXh0ZW5z
aW9uKj4oSlNPYmplY3RHZXRQcml2YXRlKHRoaXNPYmplY3QpKTsKKworICAgIEVpbmFfVmFsdWUq
IHZhbHVlID0gZWluYV92YWx1ZV9uZXcoRUlOQV9WQUxVRV9UWVBFX1NUUklORyk7CisgICAgZWlu
YV92YWx1ZV9zZXQodmFsdWUsICJIZWxsbyBmcm9tIGV4dGVuc2lvbiIpOworICAgIGV3a19leHRl
bnNpb25fbWVzc2FnZV9wb3N0KGV4dGVuc2lvbiwgImhlbGxvIiwgdmFsdWUpOworICAgIGVpbmFf
dmFsdWVfZnJlZSh2YWx1ZSk7CisKKyAgICByZXR1cm4gMDsKK30KKwordm9pZCBsb2FkRmluaXNo
ZWQoRXdrX1BhZ2UqIHBhZ2UsIHZvaWQqIGRhdGEpCit7CisgICAgSlNHbG9iYWxDb250ZXh0UmVm
IGpzQ29udGV4dCA9IGV3a19wYWdlX2pzX2dsb2JhbF9jb250ZXh0X2dldChwYWdlKTsKKyAgICBK
U09iamVjdFJlZiB3aW5kb3dPYmplY3QgPSBKU0NvbnRleHRHZXRHbG9iYWxPYmplY3QoanNDb250
ZXh0KTsKKworICAgIHN0YXRpYyBKU1N0YXRpY0Z1bmN0aW9uIGZ1bmN0aW9uc1tdID0geworICAg
ICAgICB7ICJoZWxsbyIsIGhlbGxvQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9u
bHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKKyAgICAgICAgeyAwLCAwLCAw
IH0KKyAgICB9OworICAgIHN0YXRpYyBKU0NsYXNzRGVmaW5pdGlvbiBjbGFzc19kZWZpbml0aW9u
ID0geworICAgICAgICAwLCBrSlNDbGFzc0F0dHJpYnV0ZU5vbmUsICJUZXN0IiwgMCwgMCwgZnVu
Y3Rpb25zLAorICAgICAgICAwLCAwLyogKi8sIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAKKyAg
ICB9OworICAgIEpTQ2xhc3NSZWYgY2xhc3ogPSBKU0NsYXNzQ3JlYXRlKCZjbGFzc19kZWZpbml0
aW9uKTsKKyAgICBKU09iamVjdFJlZiBvYmplY3QgPSBKU09iamVjdE1ha2UoanNDb250ZXh0LCBj
bGFzeiwgZGF0YSk7CisgICAgSlNDbGFzc1JlbGVhc2UoY2xhc3opOworCisgICAgSlNPYmplY3RT
ZXRQcml2YXRlKG9iamVjdCwgZGF0YSk7CisKKyAgICBKU1ZhbHVlUmVmIGV4Y2VwdGlvbiA9IDA7
CisgICAgSlNTdHJpbmdSZWYgcHJvcGVydHkgPSBKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmlu
ZygidGVzdCIpOworICAgIEpTT2JqZWN0U2V0UHJvcGVydHkoanNDb250ZXh0LCB3aW5kb3dPYmpl
Y3QsIHByb3BlcnR5LCBvYmplY3QsIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQ
cm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUsICZleGNlcHRpb24pOworICAgIEpTU3RyaW5nUmVs
ZWFzZShwcm9wZXJ0eSk7Cit9CisKK3N0YXRpYyB2b2lkIHBhZ2VBZGRlZChFd2tfUGFnZSogcGFn
ZSwgdm9pZCogZGF0YSkKK3sKKyAgICBzdGF0aWMgRXdrX1BhZ2VfQ2xpZW50IGNsaWVudDsKKyAg
ICBjbGllbnQudmVyc2lvbiA9IDE7CisgICAgY2xpZW50LmRhdGEgPSBkYXRhOworICAgIGNsaWVu
dC5sb2FkX2ZpbmlzaGVkID0gbG9hZEZpbmlzaGVkOworCisgICAgZXdrX3BhZ2VfY2xpZW50X2Fk
ZChwYWdlLCAmY2xpZW50KTsKK30KKworc3RhdGljIHZvaWQgcGFnZURlbGV0ZShFd2tfUGFnZSog
cGFnZSwgdm9pZCogZGF0YSkKK3sKK30KKwogc3RhdGljIHZvaWQgbWVzc2FnZVJlY2VpdmVkKGNv
bnN0IGNoYXIqIG5hbWUsIGNvbnN0IEVpbmFfVmFsdWUqIGJvZHksIHZvaWQqIGRhdGEpCiB7CiAg
ICAgRWluYV9WYWx1ZSogdmFsdWUgPSBlaW5hX3ZhbHVlX25ldyhFSU5BX1ZBTFVFX1RZUEVfU1RS
SU5HKTsKQEAgLTQyLDYgKzk0LDggQEAgdm9pZCBld2tfZXh0ZW5zaW9uX2luaXQoRXdrX0V4dGVu
c2lvbiogZXh0ZW5zaW9uKQogICAgIHN0YXRpYyBFd2tFeHRlbnNpb25DbGllbnQgY2xpZW50Owog
ICAgIGNsaWVudC52ZXJzaW9uID0gMTsKICAgICBjbGllbnQuZGF0YSA9ICh2b2lkICopZXh0ZW5z
aW9uOworICAgIGNsaWVudC5wYWdlX2FkZCA9IHBhZ2VBZGRlZDsKKyAgICBjbGllbnQucGFnZV9k
ZWwgPSBwYWdlRGVsZXRlOwogICAgIGNsaWVudC5tZXNzYWdlX3JlY2VpdmVkID0gbWVzc2FnZVJl
Y2VpdmVkOwogCiAgICAgZXdrX2V4dGVuc2lvbl9jbGllbnRfYWRkKGV4dGVuc2lvbiwgJmNsaWVu
dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy90
ZXN0X2V3azJfamF2YXNjcmlwdF9iaW5kaW5nLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZWZsL3Rlc3RzL3Rlc3RfZXdrMl9qYXZhc2NyaXB0X2JpbmRpbmcuY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjg0MmQwNzFlZjYyYWUwZDFhMDYzMDFjZTYyMTRjODVlMGZkZTIxNGQKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy90ZXN0X2V3azJf
amF2YXNjcmlwdF9iaW5kaW5nLmNwcApAQCAtMCwwICsxLDY4IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE1IFJ5dWFuIENob2kgPHJ5dWFuLmNob2lAZ21haWwuY29tPi4gIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgIkV3a1ZpZXcuaCIKKyNpbmNsdWRlICJVbml0
VGVzdFV0aWxzL0VXSzJVbml0VGVzdEJhc2UuaCIKKwordXNpbmcgbmFtZXNwYWNlIEVXSzJVbml0
VGVzdDsKKworZXh0ZXJuIEVXSzJVbml0VGVzdEVudmlyb25tZW50KiBlbnZpcm9ubWVudDsKKwor
c3RhdGljIGNvbnN0ZXhwciBkb3VibGUgdGVzdFRpbWVvdXRTZWNvbmRzID0gMi4wOworCitjbGFz
cyBFV0syQ29udGV4dFRlc3RXaXRoRXh0ZW5zaW9uIDogcHVibGljIEVXSzJVbml0VGVzdEJhc2Ug
eworcHVibGljOgorICAgIHN0YXRpYyB2b2lkIG1lc3NhZ2VSZWNlaXZlZENhbGxiYWNrKGNvbnN0
IGNoYXIqIG5hbWUsIGNvbnN0IEVpbmFfVmFsdWUqIGJvZHksIHZvaWQqIHVzZXJEYXRhKQorICAg
IHsKKyAgICAgICAgYm9vbCogaGFuZGxlZCA9IHN0YXRpY19jYXN0PGJvb2wqPih1c2VyRGF0YSk7
CisgICAgICAgIEFTU0VSVF9TVFJFUSgiaGVsbG8iLCBuYW1lKTsKKworICAgICAgICAqaGFuZGxl
ZCA9IHRydWU7CisgICAgfQorCitwcm90ZWN0ZWQ6CisgICAgRVdLMkNvbnRleHRUZXN0V2l0aEV4
dGVuc2lvbigpCisgICAgeworICAgICAgICBtX3dpdGhFeHRlbnNpb24gPSB0cnVlOworICAgIH0K
K307CisKK1RFU1RfRihFV0syQ29udGV4dFRlc3RXaXRoRXh0ZW5zaW9uLCBld2tfamF2YXNjcmlw
dF9iaW5kaW5nKQoreworICAgIGJvb2wgcmVjZWl2ZWQgPSBmYWxzZTsKKyAgICBFd2tfQ29udGV4
dCogY29udGV4dCA9IGV3a192aWV3X2NvbnRleHRfZ2V0KHdlYlZpZXcoKSk7CisKKyAgICBld2tf
Y29udGV4dF9tZXNzYWdlX2Zyb21fZXh0ZW5zaW9uc19jYWxsYmFja19zZXQoY29udGV4dCwgbWVz
c2FnZVJlY2VpdmVkQ2FsbGJhY2ssICZyZWNlaXZlZCk7CisKKyAgICBld2tfdmlld191cmxfc2V0
KHdlYlZpZXcoKSwgZW52aXJvbm1lbnQtPmRlZmF1bHRUZXN0UGFnZVVybCgpKTsKKyAgICBBU1NF
UlRfVFJVRSh3YWl0VW50aWxMb2FkRmluaXNoZWQoKSk7CisKKyAgICBld2tfdmlld19zY3JpcHRf
ZXhlY3V0ZSh3ZWJWaWV3KCksICJ0ZXN0LmhlbGxvKCk7IiwgbnVsbHB0ciwgbnVsbHB0cik7CisK
KyAgICBBU1NFUlRfVFJVRSh3YWl0VW50aWxUcnVlKHJlY2VpdmVkLCB0ZXN0VGltZW91dFNlY29u
ZHMpKTsKK30KKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvZWZsL0VXZWJLaXRfRXh0ZW5zaW9uLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9lZmwvRVdlYktpdF9FeHRlbnNpb24uaAppbmRleCA5
MDYwMDFkYTcyMWUwMjYwMWY4MjljNTJhZjNmNzQ5MDUyOTJiYjkwLi4xNmUyMzlkZDk2OTA0ZmQ2
NDYyNzk1ZjUwYmVhZjJiNDBhYWNjMmM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9lZmwvRVdlYktpdF9FeHRlbnNpb24uaAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9lZmwvRVdlYktpdF9F
eHRlbnNpb24uaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQgUnl1
YW4gQ2hvaSA8cnl1YW4uY2hvaUBnbWFpbC5jb20+LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAxNC0yMDE1IFJ5dWFuIENob2kgPHJ5dWFuLmNob2lAZ21haWwuY29t
Pi4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTU3LDUgKzU3LDYgQEAKICNkZWZpbmUgRVdlYktpdF9FeHRlbnNpb25faAogCiAjaW5jbHVk
ZSAiZXdrX2V4dGVuc2lvbi5oIgorI2luY2x1ZGUgImV3a19wYWdlLmgiCiAKICNlbmRpZiAvLyBF
V2ViS2l0X0V4dGVuc2lvbl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0FQSS9lZmwvZXdrX2V4dGVuc2lvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9lZmwvZXdrX2V4dGVuc2lvbi5jcHAKaW5k
ZXggMTZmMzQ0ZjM0ZGM2NjExNDY1MjkyZjMzZTE5MjUxYzhjZmI0OTkzYi4uM2M3ODQ2MmU4MTJm
OTMzMTc2YzZhNTAxY2JkYWRjN2Y0YzJiYjlkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZWZsL2V3a19leHRlbnNpb24uY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2VmbC9ld2tfZXh0
ZW5zaW9uLmNwcApAQCAtMzEsNyArMzEsOSBAQAogI2luY2x1ZGUgIldLQnVuZGxlLmgiCiAjaW5j
bHVkZSAiV0tCdW5kbGVBUElDYXN0LmgiCiAjaW5jbHVkZSAiV0tSZXRhaW5QdHIuaCIKKyNpbmNs
dWRlICJXZWJQYWdlLmgiCiAjaW5jbHVkZSAiZXdrX2V4dGVuc2lvbl9wcml2YXRlLmgiCisjaW5j
bHVkZSAiZXdrX3BhZ2VfcHJpdmF0ZS5oIgogI2luY2x1ZGUgPFdlYktpdC9XS1N0cmluZy5oPgog
I2luY2x1ZGUgPFdlYktpdC9XS1R5cGUuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+
CkBAIC03MCwxNCArNzIsMzAgQEAgdm9pZCBFd2tFeHRlbnNpb246OnJlbW92ZShFd2tfRXh0ZW5z
aW9uX0NsaWVudCogY2xpZW50KQogICAgIG1fY2xpZW50cy5yZW1vdmVGaXJzdChjbGllbnQpOwog
fQogCi12b2lkIEV3a0V4dGVuc2lvbjo6ZGlkQ3JlYXRlUGFnZShXS0J1bmRsZVJlZiwgV0tCdW5k
bGVQYWdlUmVmLCBjb25zdCB2b2lkKikKK3ZvaWQgRXdrRXh0ZW5zaW9uOjpkaWRDcmVhdGVQYWdl
KFdLQnVuZGxlUmVmLCBXS0J1bmRsZVBhZ2VSZWYgd2tQYWdlLCBjb25zdCB2b2lkKiBjbGllbnRJ
bmZvKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgRXdrRXh0ZW5zaW9uKiBzZWxmID0g
dG9Fd2tFeHRlbmRpb24oY2xpZW50SW5mbyk7CisgICAgV2ViUGFnZSogcGFnZSA9IHRvSW1wbCh3
a1BhZ2UpOworCisgICAgRXdrUGFnZSogZXdrUGFnZSA9IG5ldyBFd2tQYWdlKHBhZ2UpOworICAg
IHNlbGYtPm1fcGFnZU1hcC5hZGQocGFnZSwgc3RkOjp1bmlxdWVfcHRyPEV3a1BhZ2U+KGV3a1Bh
Z2UpKTsKKworICAgIGZvciAoYXV0byYgaXQgOiBzZWxmLT5tX2NsaWVudHMpIHsKKyAgICAgICAg
aWYgKGl0LT5wYWdlX2FkZCkKKyAgICAgICAgICAgIGl0LT5wYWdlX2FkZChld2tQYWdlLCBpdC0+
ZGF0YSk7CisgICAgfQogfQogCi12b2lkIEV3a0V4dGVuc2lvbjo6d2lsbERlc3Ryb3lQYWdlKFdL
QnVuZGxlUmVmLCBXS0J1bmRsZVBhZ2VSZWYsIGNvbnN0IHZvaWQqKQordm9pZCBFd2tFeHRlbnNp
b246OndpbGxEZXN0cm95UGFnZShXS0J1bmRsZVJlZiwgV0tCdW5kbGVQYWdlUmVmIHdrUGFnZSwg
Y29uc3Qgdm9pZCogY2xpZW50SW5mbykKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIEV3
a0V4dGVuc2lvbiogc2VsZiA9IHRvRXdrRXh0ZW5kaW9uKGNsaWVudEluZm8pOworICAgIFdlYlBh
Z2UqIHBhZ2UgPSB0b0ltcGwod2tQYWdlKTsKKworICAgIGZvciAoYXV0byYgaXQgOiBzZWxmLT5t
X2NsaWVudHMpIHsKKyAgICAgICAgaWYgKGl0LT5wYWdlX2RlbCkKKyAgICAgICAgICAgIGl0LT5w
YWdlX2RlbChzZWxmLT5tX3BhZ2VNYXAuZ2V0KHBhZ2UpLCBpdC0+ZGF0YSk7CisgICAgfQorICAg
IHNlbGYtPm1fcGFnZU1hcC5yZW1vdmUocGFnZSk7CiB9CiAKIHZvaWQgRXdrRXh0ZW5zaW9uOjpk
aWRSZWNlaXZlTWVzc2FnZShXS0J1bmRsZVJlZiwgV0tTdHJpbmdSZWYgbWVzc2FnZU5hbWUsIFdL
VHlwZVJlZiBtZXNzYWdlQm9keSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2VmbC9ld2tfZXh0
ZW5zaW9uLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9l
ZmwvZXdrX2V4dGVuc2lvbi5oCmluZGV4IDRmYTNhZDE4YzkyZDI5YmIyOGJlMjExOWM1MmI4MWY5
ZDdiMjk2MjMuLmYyOGFmOGM0MjMxZTZiOGU4NGY4YjBiMDAwMDUxNzc5MzU1N2M5NTUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2VmbC9l
d2tfZXh0ZW5zaW9uLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvZWZsL2V3a19leHRlbnNpb24uaApAQCAtMzgsNiArMzgsMTEgQEAgZXh0ZXJuICJD
IiB7CiAjZW5kaWYKIAogLyoqCisgKiBEZWNsYXJlIEV3a19QYWdlLgorICovCit0eXBlZGVmIHN0
cnVjdCBFd2tQYWdlIEV3a19QYWdlOworCisvKioKICAqIERlY2xhcmUgRXdrX0V4dGVuc2lvbi4K
ICAqLwogdHlwZWRlZiBzdHJ1Y3QgRXdrRXh0ZW5zaW9uIEV3a19FeHRlbnNpb247CkBAIC01Nyw2
ICs2Miw5IEBAIHN0cnVjdCBFd2tFeHRlbnNpb25DbGllbnQgewogICAgIGludCB2ZXJzaW9uOwog
ICAgIHZvaWQgKmRhdGE7CiAKKyAgICB2b2lkICgqcGFnZV9hZGQpKEV3a19QYWdlKiBwYWdlLCB2
b2lkICpkYXRhKTsKKyAgICB2b2lkICgqcGFnZV9kZWwpKEV3a19QYWdlKiBwYWdlLCB2b2lkICpk
YXRhKTsKKwogICAgIC8qKgogICAgICAqIENhbGxiYWNrcyB0byByZWNlaXZlIG1lc3NhZ2UgZnJv
bSBld2tfY29udGV4dC4KICAgICAgKgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZWZsL2V3a19leHRlbnNpb25fcHJpdmF0ZS5oIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZWZsL2V3a19leHRlbnNp
b25fcHJpdmF0ZS5oCmluZGV4IGQ0NzI3Njk0NmUzOTg1ODIxMGNjNzE5N2FiNGZlOTk0YTBjNWYw
NWYuLjhmZmFkZDUwZDcxNDY0YWU5YjAzMDFlYTk4NjM4ZTY5MjI0MzRiZjYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2VmbC9ld2tfZXh0
ZW5zaW9uX3ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9lZmwvZXdrX2V4dGVuc2lvbl9wcml2YXRlLmgKQEAgLTI2LDEyICsyNiwxNiBA
QAogI2lmbmRlZiBld2tfZXh0ZW5zaW9uX3ByaXZhdGVfaAogI2RlZmluZSBld2tfZXh0ZW5zaW9u
X3ByaXZhdGVfaAogCisjaW5jbHVkZSAiZXdrX3BhZ2VfcHJpdmF0ZS5oIgogI2luY2x1ZGUgPHd0
Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBJbmplY3RlZEJ1bmRsZTsK
K2NsYXNzIFdlYlBhZ2U7CiB9CiAKK2NsYXNzIEV3a1BhZ2U7CisKIGNsYXNzIEV3a0V4dGVuc2lv
biB7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgRXdrRXh0ZW5zaW9uKFdlYktpdDo6SW5qZWN0ZWRC
dW5kbGUqKTsKQEAgLTUxLDYgKzU1LDcgQEAgcHJpdmF0ZToKICAgICBXZWJLaXQ6OkluamVjdGVk
QnVuZGxlKiBtX2J1bmRsZTsKIAogICAgIFZlY3RvcjxFd2tfRXh0ZW5zaW9uX0NsaWVudCo+IG1f
Y2xpZW50czsKKyAgICBIYXNoTWFwPFdlYktpdDo6V2ViUGFnZSosIHN0ZDo6dW5pcXVlX3B0cjxF
d2tQYWdlPj4gbV9wYWdlTWFwOwogfTsKIAogI2VuZGlmIC8vIGV3a19leHRlbnNpb25fcHJpdmF0
ZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS9lZmwvZXdrX3BhZ2UuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvZWZsL2V3a19wYWdlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iZjQzMzc5YzQ3MjM3M2Zi
MzY1OWI2MjYxODQwNmZiYWIyM2YxMWJmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZWZsL2V3a19wYWdlLmNwcApAQCAtMCww
ICsxLDEzNyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBSeXVhbiBDaG9pIDxyeXVhbi5j
aG9pQGdtYWlsLmNvbT4uICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiZXdrX3BhZ2UuaCIKKworI2luY2x1ZGUgIldLQnVuZGxl
LmgiCisjaW5jbHVkZSAiV0tCdW5kbGVBUElDYXN0LmgiCisjaW5jbHVkZSAiV0tCdW5kbGVGcmFt
ZS5oIgorI2luY2x1ZGUgIldlYkZyYW1lLmgiCisjaW5jbHVkZSAiV2ViUGFnZS5oIgorI2luY2x1
ZGUgImV3a19wYWdlX3ByaXZhdGUuaCIKKwordXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKKworc3Rh
dGljIGlubGluZSBFd2tQYWdlKiB0b0V3a1BhZ2UoY29uc3Qgdm9pZCogY2xpZW50SW5mbykKK3sK
KyAgICByZXR1cm4gY29uc3RfY2FzdDxFd2tQYWdlKj4oc3RhdGljX2Nhc3Q8Y29uc3QgRXdrUGFn
ZSo+KGNsaWVudEluZm8pKTsKK30KKworRXdrUGFnZTo6RXdrUGFnZShXZWJQYWdlKiBwYWdlKQor
ICAgIDogbV9wYWdlKHBhZ2UpCit7CisgICAgV0tCdW5kbGVQYWdlTG9hZGVyQ2xpZW50VjcgbG9h
ZGVyQ2xpZW50ID0geworICAgICAgICB7CisgICAgICAgICAgICA3LCAvLyB2ZXJzaW9uCisgICAg
ICAgICAgICB0aGlzLCAvLyBjbGllbnRJbmZvCisgICAgICAgIH0sCisgICAgICAgIDAsIC8vIGRp
ZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUsCisgICAgICAgIDAsIC8vIGRpZFJlY2VpdmVT
ZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZEZvckZyYW1lLAorICAgICAgICAwLCAvLyBk
aWRGYWlsUHJvdmlzaW9uYWxMb2FkV2l0aEVycm9yRm9yRnJhbWUKKyAgICAgICAgMCwgLy8gZGlk
Q29tbWl0TG9hZEZvckZyYW1lCisgICAgICAgIGRpZEZpbmlzaERvY3VtZW50TG9hZEZvckZyYW1l
LAorICAgICAgICAwLCAvLyBkaWRGaW5pc2hMb2FkRm9yRnJhbWUKKyAgICAgICAgMCwgLy8gZGlk
RmFpbExvYWRXaXRoRXJyb3JGb3JGcmFtZQorICAgICAgICAwLCAvLyBkaWRTYW1lRG9jdW1lbnRO
YXZpZ2F0aW9uRm9yRnJhbWUsCisgICAgICAgIDAsIC8vIGRpZFJlY2VpdmVUaXRsZUZvckZyYW1l
CisgICAgICAgIDAsIC8vIGRpZEZpcnN0TGF5b3V0Rm9yRnJhbWUKKyAgICAgICAgMCwgLy8gZGlk
Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0Rm9yRnJhbWUKKyAgICAgICAgMCwgLy8gZGlkUmVt
b3ZlRnJhbWVGcm9tSGllcmFyY2h5CisgICAgICAgIDAsIC8vIGRpZERpc3BsYXlJbnNlY3VyZUNv
bnRlbnRGb3JGcmFtZQorICAgICAgICAwLCAvLyBkaWRSdW5JbnNlY3VyZUNvbnRlbnRGb3JGcmFt
ZQorICAgICAgICAwLCAvLyBkaWRDbGVhcldpbmRvd09iamVjdEZvckZyYW1lLAorICAgICAgICAw
LCAvLyBkaWRDYW5jZWxDbGllbnRSZWRpcmVjdEZvckZyYW1lCisgICAgICAgIDAsIC8vIHdpbGxQ
ZXJmb3JtQ2xpZW50UmVkaXJlY3RGb3JGcmFtZQorICAgICAgICAwLCAvLyBkaWRIYW5kbGVPbmxv
YWRFdmVudHNGb3JGcmFtZQorICAgICAgICAwLCAvLyBkaWRMYXlvdXRGb3JGcmFtZQorICAgICAg
ICAwLCAvLyBkaWROZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQKKyAgICAgICAgMCwgLy8g
ZGlkRGV0ZWN0WFNTRm9yRnJhbWUKKyAgICAgICAgMCwgLy8gc2hvdWxkR29Ub0JhY2tGb3J3YXJk
TGlzdEl0ZW0KKyAgICAgICAgMCwgLy8gZ2xvYmFsT2JqZWN0SXNBdmFpbGFibGVGb3JGcmFtZQor
ICAgICAgICAwLCAvLyB3aWxsRGlzY29ubmVjdERPTVdpbmRvd0V4dGVuc2lvbkZyb21HbG9iYWxP
YmplY3QKKyAgICAgICAgMCwgLy8gZGlkUmVjb25uZWN0RE9NV2luZG93RXh0ZW5zaW9uVG9HbG9i
YWxPYmplY3QKKyAgICAgICAgMCwgLy8gd2lsbERlc3Ryb3lHbG9iYWxPYmplY3RGb3JET01XaW5k
b3dFeHRlbnNpb24KKyAgICAgICAgMCwgLy8gZGlkRmluaXNoUHJvZ3Jlc3MKKyAgICAgICAgMCwg
Ly8gc2hvdWxkRm9yY2VVbml2ZXJzYWxBY2Nlc3NGcm9tTG9jYWxVUkwKKyAgICAgICAgMCwgLy8g
ZGlkUmVjZWl2ZUludGVudEZvckZyYW1lX3VuYXZhaWxhYmxlCisgICAgICAgIDAsIC8vIHJlZ2lz
dGVySW50ZW50U2VydmljZUZvckZyYW1lX3VuYXZhaWxhYmxlCisgICAgICAgIDAsIC8vIGRpZExh
eW91dAorICAgICAgICAwLCAvLyBmZWF0dXJlc1VzZWRJblBhZ2UKKyAgICAgICAgMCwgLy8gd2ls
bExvYWRVUkxSZXF1ZXN0CisgICAgICAgIDAsIC8vIHdpbGxMb2FkRGF0YVJlcXVlc3QKKyAgICAg
ICAgMCAvLyB3aWxsRGVzdHJveUZyYW1lCisgICAgfTsKKyAgICBXS0J1bmRsZVBhZ2VTZXRQYWdl
TG9hZGVyQ2xpZW50KHRvQVBJKHBhZ2UpLCAmbG9hZGVyQ2xpZW50LmJhc2UpOworfQorCit2b2lk
IEV3a1BhZ2U6OmFwcGVuZChFd2tfUGFnZV9DbGllbnQqIGNsaWVudCkKK3sKKyAgICBtX2NsaWVu
dHMuYXBwZW5kKGNsaWVudCk7Cit9CisKK3ZvaWQgRXdrUGFnZTo6cmVtb3ZlKEV3a19QYWdlX0Ns
aWVudCogY2xpZW50KQoreworICAgIG1fY2xpZW50cy5yZW1vdmUobV9jbGllbnRzLmZpbmQoY2xp
ZW50KSk7Cit9CisKK3ZvaWQgRXdrUGFnZTo6ZGlkRmluaXNoRG9jdW1lbnRMb2FkRm9yRnJhbWUo
V0tCdW5kbGVQYWdlUmVmLCBXS0J1bmRsZUZyYW1lUmVmIGZyYW1lLCBXS1R5cGVSZWYqLCBjb25z
dCB2b2lkICpjbGllbnRJbmZvKQoreworICAgIGlmICghV0tCdW5kbGVGcmFtZUlzTWFpbkZyYW1l
KGZyYW1lKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgRXdrUGFnZSogc2VsZiA9IHRvRXdrUGFn
ZShjbGllbnRJbmZvKTsKKyAgICBmb3IgKGF1dG8mIGl0IDogc2VsZi0+bV9jbGllbnRzKSB7Cisg
ICAgICAgIGlmIChpdC0+bG9hZF9maW5pc2hlZCkKKyAgICAgICAgICAgIGl0LT5sb2FkX2Zpbmlz
aGVkKHNlbGYsIGl0LT5kYXRhKTsKKyAgICB9Cit9CisKK0pTR2xvYmFsQ29udGV4dFJlZiBld2tf
cGFnZV9qc19nbG9iYWxfY29udGV4dF9nZXQoRXdrX1BhZ2UqIGV3a1BhZ2UpCit7CisgICAgRUlO
QV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKGV3a1BhZ2UsIDApOworCisgICAgV2ViRnJhbWUq
IGNvcmVGcmFtZSA9IGV3a1BhZ2UtPnBhZ2UoKS0+bWFpbldlYkZyYW1lKCk7CisgICAgaWYgKCFj
b3JlRnJhbWUpCisgICAgICAgIHJldHVybiAwOworCisgICAgcmV0dXJuIGNvcmVGcmFtZS0+anND
b250ZXh0KCk7Cit9CisKK3ZvaWQgZXdrX3BhZ2VfY2xpZW50X2FkZChFd2tfUGFnZSogZXdrUGFn
ZSwgRXdrX1BhZ2VfQ2xpZW50KiBjbGllbnQpCit7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9S
RVRVUk4oZXdrUGFnZSk7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oY2xpZW50KTsK
KworICAgIGV3a1BhZ2UtPmFwcGVuZChjbGllbnQpOworfQorCit2b2lkIGV3a19wYWdlX2NsaWVu
dF9kZWwoRXdrX1BhZ2UqIGV3a1BhZ2UsIEV3a19QYWdlX0NsaWVudCogY2xpZW50KQoreworICAg
IEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKGV3a1BhZ2UpOworICAgIEVJTkFfU0FGRVRZX09O
X05VTExfUkVUVVJOKGNsaWVudCk7CisKKyAgICBld2tQYWdlLT5yZW1vdmUoY2xpZW50KTsKK30K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L2VmbC9ld2tfcGFnZS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvZWZsL2V3a19wYWdlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjkzZDFmYWE4MDU1YjQ5NzIwYzY0NDJh
MzBmZGRkZWUzMDMyMWFkZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2VmbC9ld2tfcGFnZS5oCkBAIC0wLDAgKzEsNTkgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgUnl1YW4gQ2hvaSA8cnl1YW4uY2hvaUBnbWFpbC5j
b20+LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworLyoqCisgKiBAZmlsZSAgICBl
d2tfcGFnZS5oCisgKiBAYnJpZWYgICBEZXNjcmliZXMgdGhlIEV3a19QYWdlIEFQSS4KKyAqLwor
CisjaWZuZGVmIGV3a19wYWdlX2gKKyNkZWZpbmUgZXdrX3BhZ2VfaAorCisjaW5jbHVkZSA8RWlu
YS5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQmFzZS5oPgorCit0eXBlZGVmIHN0cnVj
dCBFd2tQYWdlIEV3a19QYWdlOworCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIgewor
I2VuZGlmCisKK3N0cnVjdCBFd2tQYWdlQ2xpZW50IHsKKyAgICBpbnQgdmVyc2lvbjsKKyAgICB2
b2lkICpkYXRhOworCisgICAgdm9pZCAoKmxvYWRfZmluaXNoZWQpKEV3a19QYWdlICpwYWdlLCB2
b2lkICpkYXRhKTsKK307Cit0eXBlZGVmIHN0cnVjdCBFd2tQYWdlQ2xpZW50IEV3a19QYWdlX0Ns
aWVudDsKKworRUFQSSBKU0dsb2JhbENvbnRleHRSZWYgZXdrX3BhZ2VfanNfZ2xvYmFsX2NvbnRl
eHRfZ2V0KEV3a19QYWdlICpwYWdlKTsKKworRUFQSSB2b2lkIGV3a19wYWdlX2NsaWVudF9hZGQo
RXdrX1BhZ2UgKnBhZ2UsIEV3a19QYWdlX0NsaWVudCAqY2xpZW50KTsKKworI2lmZGVmIF9fY3Bs
dXNwbHVzCit9CisjZW5kaWYKKworI2VuZGlmIC8vIGV3a19wYWdlX2gKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2VmbC9ld2tfcGFnZV9w
cml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9l
ZmwvZXdrX3BhZ2VfcHJpdmF0ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI2ZDg4YjUzN2Y4NmRmZDg3NzRkNDBj
MWQyYzkyZDAyNTY5NDY2MDcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9lZmwvZXdrX3BhZ2VfcHJpdmF0ZS5oCkBAIC0wLDAg
KzEsNTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgUnl1YW4gQ2hvaSA8cnl1YW4uY2hv
aUBnbWFpbC5jb20+LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBl
d2tfcGFnZV9wcml2YXRlX2gKKyNkZWZpbmUgZXdrX3BhZ2VfcHJpdmF0ZV9oCisKK3R5cGVkZWYg
c3RydWN0IEV3a1BhZ2VDbGllbnQgRXdrX1BhZ2VfQ2xpZW50OworCituYW1lc3BhY2UgV2ViS2l0
IHsKK2NsYXNzIFdlYlBhZ2U7Cit9CisKK2NsYXNzIEV3a1BhZ2UgeworcHVibGljOgorICAgIGV4
cGxpY2l0IEV3a1BhZ2UoV2ViS2l0OjpXZWJQYWdlKik7CisKKyAgICBXZWJLaXQ6OldlYlBhZ2Uq
IHBhZ2UoKSB7IHJldHVybiBtX3BhZ2U7IH0KKworICAgIHZvaWQgYXBwZW5kKEV3a19QYWdlX0Ns
aWVudCopOworICAgIHZvaWQgcmVtb3ZlKEV3a19QYWdlX0NsaWVudCopOworCitwcml2YXRlOgor
ICAgIHN0YXRpYyB2b2lkIGRpZEZpbmlzaERvY3VtZW50TG9hZEZvckZyYW1lKFdLQnVuZGxlUGFn
ZVJlZiwgV0tCdW5kbGVGcmFtZVJlZiwgV0tUeXBlUmVmKiwgY29uc3Qgdm9pZCAqKTsKKworICAg
IFdlYktpdDo6V2ViUGFnZSogbV9wYWdlOworICAgIFZlY3RvcjxFd2tfUGFnZV9DbGllbnQqPiBt
X2NsaWVudHM7Cit9OworCisjZW5kaWYgLy8gZXdrX3BhZ2VfcHJpdmF0ZV9oCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9lZmwvZXdlYmtpdDItZXh0ZW5zaW9uLnBjLmluIGIvU291cmNlL1dl
YktpdDIvZWZsL2V3ZWJraXQyLWV4dGVuc2lvbi5wYy5pbgppbmRleCAyNjE2Y2RjMmY5Mzk1ZWJl
NzI5NmQwNTQ4ZmVjODAxZmM1MWU4M2M0Li42OWUzYjgzOTcyYWRmMjU3MDM2NTEyY2ZiZmY2ZjAy
NzBjZWNkYjI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9lZmwvZXdlYmtpdDItZXh0ZW5z
aW9uLnBjLmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL2VmbC9ld2Via2l0Mi1leHRlbnNpb24ucGMu
aW4KQEAgLTUsNCArNSw0IEBAIE5hbWU6IGV3ZWJraXQyLWV4dGVuc2lvbgogRGVzY3JpcHRpb246
IEV4dGVuc2lvbiBmb3IgV2ViS2l0Mi9FRkwoZXdlYmtpdDIpCiBWZXJzaW9uOiBAUFJPSkVDVF9W
RVJTSU9OQAogUmVxdWlyZXM6IGVpbmEKLUNmbGFnczogLUkke2luY2x1ZGVkaXJ9L0BXZWJLaXQy
X09VVFBVVF9OQU1FQC1AUFJPSkVDVF9WRVJTSU9OX01BSk9SQC9leHRlbnNpb24KK0NmbGFnczog
LUkke2luY2x1ZGVkaXJ9L0BXZWJLaXQyX09VVFBVVF9OQU1FQC1AUFJPSkVDVF9WRVJTSU9OX01B
Sk9SQC9leHRlbnNpb24gLUkke2luY2x1ZGVkaXJ9L0BXZWJLaXQyX09VVFBVVF9OQU1FQC1AUFJP
SkVDVF9WRVJTSU9OX01BSk9SQAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>247384</attachid>
            <date>2015-02-25 18:25:48 -0800</date>
            <delta_ts>2015-03-16 23:03:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-142033-20150226112528.patch</filename>
            <type>text/plain</type>
            <size>25442</size>
            <attacher name="Ryuan Choi">ryuan.choi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgwNjA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
YjNiYjNlNjM4ZmY3NGRhZjRhY2Q5OGQ2ZDFlZmFlNTU1ZGViZThhLi4yNTJhY2VkZDZiZGUxNDEw
MWExNWNmYzZmMDViOWEwOWFkYmM0YWM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMiBAQAorMjAxNS0wMi0yNSAgUnl1YW4gQ2hvaSAgPHJ5dWFuLmNob2lAbmF2ZXJjb3Jw
LmNvbT4KKworICAgICAgICBbRUZMXSBFeHBvc2UgSmF2YVNjcmlwdCBiaW5kaW5nIGludGVyZmFj
ZSB0aHJvdWdoIGV3a19leHRlbnNpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE0MjAzMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogUGxhdGZvcm1FZmwuY21ha2U6IEluc3RhbGwgSmF2YXNjcmlwdCBB
UElzCisKIDIwMTUtMDItMjQgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgogCiAgICAg
ICAgIE1hY2hpbmVUaHJlYWRzOjpUaHJlYWQgY2xlYW4gdXAgaGFzIGEgdXNlIGFmdGVyIGZyZWUg
cmFjZSBjb25kaXRpb24uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggYTYwMzEwYzg0MmM3ZGZkMzlhNjcwM2U0OTQ0
YTMzMjczYWY4OGE2ZS4uZjY3YTJmM2RlZDdlMmYyOTAxYzQ0YjIzMTIyMjFiMmI5NGVjOTA5NCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDE1LTAyLTI1ICBSeXVhbiBDaG9pICA8cnl1
YW4uY2hvaUBuYXZlcmNvcnAuY29tPgorCisgICAgICAgIFtFRkxdIEV4cG9zZSBKYXZhU2NyaXB0
IGJpbmRpbmcgaW50ZXJmYWNlIHRocm91Z2ggZXdrX2V4dGVuc2lvbgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQyMDMzCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBQbGF0Zm9ybUVmbC5jbWFrZTogQWRk
ZWQgZXdrX3BhZ2UgYW5kIG5ldyB0ZXN0IGNhc2UuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9l
ZmwvdGVzdHMvZXh0ZW5zaW9ucy9leHRlbnNpb25fc2FtcGxlLmNwcDogUmVnaXN0ZXJlZCB0ZXN0
IG9iamVjdCBmb3IgbmV3IHRlc3QgY2FzZS4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC90
ZXN0cy90ZXN0X2V3azJfamF2YXNjcmlwdF9iaW5kaW5nLmNwcDogQWRkZWQgc2ltcGxlIGJpbmRp
bmcgQVBJIHRlc3QgY2FzZQorICAgICAgICAoRVdLMkNvbnRleHRUZXN0V2l0aEV4dGVuc2lvbjo6
bWVzc2FnZVJlY2VpdmVkQ2FsbGJhY2spOgorICAgICAgICAoRVdLMkNvbnRleHRUZXN0V2l0aEV4
dGVuc2lvbjo6RVdLMkNvbnRleHRUZXN0V2l0aEV4dGVuc2lvbik6CisgICAgICAgIChURVNUX0Yp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2VmbC9FV2ViS2l0X0V4
dGVuc2lvbi5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2VmbC9l
d2tfZXh0ZW5zaW9uLmNwcDoKKyAgICAgICAgKEV3a0V4dGVuc2lvbjo6ZGlkQ3JlYXRlUGFnZSk6
CisgICAgICAgIChFd2tFeHRlbnNpb246OndpbGxEZXN0cm95UGFnZSk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZWZsL2V3a19leHRlbnNpb24uaDoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9lZmwvZXdrX2V4dGVuc2lvbl9wcml2YXRl
Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZWZsL2V3a19wYWdl
LmNwcDogQWRkZWQuCisgICAgICAgICh0b0V3a1BhZ2UpOgorICAgICAgICAoRXdrUGFnZTo6RXdr
UGFnZSk6CisgICAgICAgIChFd2tQYWdlOjphcHBlbmQpOgorICAgICAgICAoRXdrUGFnZTo6cmVt
b3ZlKToKKyAgICAgICAgKEV3a1BhZ2U6OmRpZEZpbmlzaERvY3VtZW50TG9hZEZvckZyYW1lKToK
KyAgICAgICAgKGV3a19wYWdlX2pzX2dsb2JhbF9jb250ZXh0X2dldCk6CisgICAgICAgIChld2tf
cGFnZV9jbGllbnRfYWRkKToKKyAgICAgICAgKGV3a19wYWdlX2NsaWVudF9kZWwpOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2VmbC9ld2tfcGFnZS5oOiBBZGRlZC4K
KyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9lZmwvZXdrX3BhZ2VfcHJp
dmF0ZS5oOiBBZGRlZC4KKyAgICAgICAgKEV3a1BhZ2U6OnBhZ2UpOgorICAgICAgICAqIGVmbC9l
d2Via2l0Mi1leHRlbnNpb24ucGMuaW46CisKIDIwMTUtMDItMjQgIEd5dXlvdW5nIEtpbSAgPGd5
dXlvdW5nLmtpbUBzYW1zdW5nLmNvbT4KIAogICAgICAgICBGaXggYnVpbGQgYnJlYWsgb24gRUZM
IGFuZCBHVEsgcG9ydCBzaW5jZSByMTgwNTg1LgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL1BsYXRmb3JtRWZsLmNtYWtlIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1BsYXRmb3Jt
RWZsLmNtYWtlCmluZGV4IDQ0ZjI3Y2E4ZTJmMGE2NjY4NWEyYmVlNjgxYmI4YTEzM2MyYWY0NTMu
LjJkYjk1ZmU0YjZmYzUzYmM0ZjJkMjE0Y2Y3YmYyZDY2ODBlYmFmODUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9QbGF0Zm9ybUVmbC5jbWFrZQorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvUGxhdGZvcm1FZmwuY21ha2UKQEAgLTQsMyArNCwxMyBAQCBsaXN0KEFQUEVORCBK
YXZhU2NyaXB0Q29yZV9JTkNMVURFX0RJUkVDVE9SSUVTCiAgICAgJHtFT19JTkNMVURFX0RJUlN9
CiApCiBhZGRfZGVmaW5pdGlvbnMoLURTVEFUSUNBTExZX0xJTktFRF9XSVRIX1dURikKKworaW5z
dGFsbChGSUxFUyBBUEkvSmF2YVNjcmlwdC5oCisgICAgICAgICAgICAgIEFQSS9KU0Jhc2UuaAor
ICAgICAgICAgICAgICBBUEkvSlNDb250ZXh0UmVmLmgKKyAgICAgICAgICAgICAgQVBJL0pTT2Jq
ZWN0UmVmLmgKKyAgICAgICAgICAgICAgQVBJL0pTU3RyaW5nUmVmLmgKKyAgICAgICAgICAgICAg
QVBJL0pTVmFsdWVSZWYuaAorICAgICAgICAgICAgICBBUEkvV2ViS2l0QXZhaWxhYmlsaXR5LmgK
KyAgICAgICAgREVTVElOQVRJT04gImluY2x1ZGUvJHtXZWJLaXQyX09VVFBVVF9OQU1FfS0ke1BS
T0pFQ1RfVkVSU0lPTl9NQUpPUn0vSmF2YVNjcmlwdENvcmUiCispCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZSBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZs
LmNtYWtlCmluZGV4IDM4MjkwZTA4NjMyMzBiZjFkZWIwMmRiOGU2NzViODRkYjNlNTQ0MDYuLjFm
YThlNzdlNzZhOWE5MmMwZTcwYWEzYjRjMzk3ZjY5YzIxOWVmM2MgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3Jt
RWZsLmNtYWtlCkBAIC0xODAsNiArMTgwLDcgQEAgbGlzdChBUFBFTkQgV2ViS2l0Ml9TT1VSQ0VT
CiAgICAgV2ViUHJvY2Vzcy9Db29raWVzL3NvdXAvV2ViS2l0U291cENvb2tpZUphclNxbGl0ZS5j
cHAKIAogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2VmbC9ld2tfZXh0ZW5zaW9u
LmNwcAorICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2VmbC9ld2tfcGFnZS5jcHAK
IAogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvZWZsL0luamVjdGVkQnVuZGxlRWZsLmNw
cAogCkBAIC00MDcsNiArNDA4LDcgQEAgc2V0KEVXZWJLaXQyX0hFQURFUlMKIHNldChFV2ViS2l0
Ml9FeHRlbnNpb25fSEVBREVSUwogICAgICIke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZWZsL0VXZWJLaXRfRXh0ZW5zaW9uLmgiCiAgICAg
IiR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9lZmwvZXdrX2V4dGVuc2lvbi5oIgorICAgICIke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0v
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZWZsL2V3a19wYWdlLmgiCiApCiAKIGluc3Rh
bGwoRklMRVMgJHtFV2ViS2l0Ml9IRUFERVJTfSBERVNUSU5BVElPTiBpbmNsdWRlLyR7V2ViS2l0
Ml9PVVRQVVRfTkFNRX0tJHtQUk9KRUNUX1ZFUlNJT05fTUFKT1J9KQpAQCAtNTEwLDYgKzUxMiw3
IEBAIHNldChFV0syVW5pdFRlc3RzX0JJTkFSSUVTCiAgICAgdGVzdF9ld2syX2VpbmFfc2hhcmVk
X3N0cmluZwogICAgIHRlc3RfZXdrMl9mYXZpY29uX2RhdGFiYXNlCiAgICAgdGVzdF9ld2syX2Zp
bGVfY2hvb3Nlcl9yZXF1ZXN0CisgICAgdGVzdF9ld2syX2phdmFzY3JpcHRfYmluZGluZwogICAg
IHRlc3RfZXdrMl9vYmplY3QKICAgICB0ZXN0X2V3azJfcGFnZV9ncm91cAogICAgIHRlc3RfZXdr
Ml9wb3B1cF9tZW51CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2Vm
bC90ZXN0cy9leHRlbnNpb25zL2V4dGVuc2lvbl9zYW1wbGUuY3BwIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvZXh0ZW5zaW9ucy9leHRlbnNpb25fc2FtcGxlLmNwcApp
bmRleCAyOTQxMzQzZWMyYmZiNDAyN2U0MTI2ZjI2Mzk0YTdkMmNlMTNmYTlkLi4yMjk2YTI5ZmJi
NmE5MDUxM2RlOWQyYWJjNzI2ZGU3ZGZkODBhOGIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy9leHRlbnNpb25zL2V4dGVuc2lvbl9zYW1wbGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL2V4dGVuc2lvbnMv
ZXh0ZW5zaW9uX3NhbXBsZS5jcHAKQEAgLTI0LDExICsyNCw2MyBAQAogICovCiAKICNpbmNsdWRl
ICJFV2ViS2l0X0V4dGVuc2lvbi5oIgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHQuaD4KIAogI2lmZGVmIF9fY3BsdXNwbHVzCiBleHRlcm4gIkMiIHsKICNlbmRpZgogCitzdGF0
aWMgSlNWYWx1ZVJlZiBoZWxsb0NhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVj
dFJlZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291
bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikK
K3sKKyAgICBFd2tfRXh0ZW5zaW9uKiBleHRlbnNpb24gPSBzdGF0aWNfY2FzdDxFd2tfRXh0ZW5z
aW9uKj4oSlNPYmplY3RHZXRQcml2YXRlKHRoaXNPYmplY3QpKTsKKworICAgIEVpbmFfVmFsdWUq
IHZhbHVlID0gZWluYV92YWx1ZV9uZXcoRUlOQV9WQUxVRV9UWVBFX1NUUklORyk7CisgICAgZWlu
YV92YWx1ZV9zZXQodmFsdWUsICJIZWxsbyBmcm9tIGV4dGVuc2lvbiIpOworICAgIGV3a19leHRl
bnNpb25fbWVzc2FnZV9wb3N0KGV4dGVuc2lvbiwgImhlbGxvIiwgdmFsdWUpOworICAgIGVpbmFf
dmFsdWVfZnJlZSh2YWx1ZSk7CisKKyAgICByZXR1cm4gMDsKK30KKwordm9pZCBsb2FkRmluaXNo
ZWQoRXdrX1BhZ2UqIHBhZ2UsIHZvaWQqIGRhdGEpCit7CisgICAgSlNHbG9iYWxDb250ZXh0UmVm
IGpzQ29udGV4dCA9IGV3a19wYWdlX2pzX2dsb2JhbF9jb250ZXh0X2dldChwYWdlKTsKKyAgICBK
U09iamVjdFJlZiB3aW5kb3dPYmplY3QgPSBKU0NvbnRleHRHZXRHbG9iYWxPYmplY3QoanNDb250
ZXh0KTsKKworICAgIHN0YXRpYyBKU1N0YXRpY0Z1bmN0aW9uIGZ1bmN0aW9uc1tdID0geworICAg
ICAgICB7ICJoZWxsbyIsIGhlbGxvQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9u
bHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKKyAgICAgICAgeyAwLCAwLCAw
IH0KKyAgICB9OworICAgIHN0YXRpYyBKU0NsYXNzRGVmaW5pdGlvbiBjbGFzc19kZWZpbml0aW9u
ID0geworICAgICAgICAwLCBrSlNDbGFzc0F0dHJpYnV0ZU5vbmUsICJUZXN0IiwgMCwgMCwgZnVu
Y3Rpb25zLAorICAgICAgICAwLCAwLyogKi8sIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAKKyAg
ICB9OworICAgIEpTQ2xhc3NSZWYgY2xhc3ogPSBKU0NsYXNzQ3JlYXRlKCZjbGFzc19kZWZpbml0
aW9uKTsKKyAgICBKU09iamVjdFJlZiBvYmplY3QgPSBKU09iamVjdE1ha2UoanNDb250ZXh0LCBj
bGFzeiwgZGF0YSk7CisgICAgSlNDbGFzc1JlbGVhc2UoY2xhc3opOworCisgICAgSlNPYmplY3RT
ZXRQcml2YXRlKG9iamVjdCwgZGF0YSk7CisKKyAgICBKU1ZhbHVlUmVmIGV4Y2VwdGlvbiA9IDA7
CisgICAgSlNTdHJpbmdSZWYgcHJvcGVydHkgPSBKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmlu
ZygidGVzdCIpOworICAgIEpTT2JqZWN0U2V0UHJvcGVydHkoanNDb250ZXh0LCB3aW5kb3dPYmpl
Y3QsIHByb3BlcnR5LCBvYmplY3QsIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQ
cm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUsICZleGNlcHRpb24pOworICAgIEpTU3RyaW5nUmVs
ZWFzZShwcm9wZXJ0eSk7Cit9CisKK3N0YXRpYyB2b2lkIHBhZ2VBZGRlZChFd2tfUGFnZSogcGFn
ZSwgdm9pZCogZGF0YSkKK3sKKyAgICBzdGF0aWMgRXdrX1BhZ2VfQ2xpZW50IGNsaWVudDsKKyAg
ICBjbGllbnQudmVyc2lvbiA9IDE7CisgICAgY2xpZW50LmRhdGEgPSBkYXRhOworICAgIGNsaWVu
dC5sb2FkX2ZpbmlzaGVkID0gbG9hZEZpbmlzaGVkOworCisgICAgZXdrX3BhZ2VfY2xpZW50X2Fk
ZChwYWdlLCAmY2xpZW50KTsKK30KKworc3RhdGljIHZvaWQgcGFnZURlbGV0ZShFd2tfUGFnZSog
cGFnZSwgdm9pZCogZGF0YSkKK3sKK30KKwogc3RhdGljIHZvaWQgbWVzc2FnZVJlY2VpdmVkKGNv
bnN0IGNoYXIqIG5hbWUsIGNvbnN0IEVpbmFfVmFsdWUqIGJvZHksIHZvaWQqIGRhdGEpCiB7CiAg
ICAgRWluYV9WYWx1ZSogdmFsdWUgPSBlaW5hX3ZhbHVlX25ldyhFSU5BX1ZBTFVFX1RZUEVfU1RS
SU5HKTsKQEAgLTQyLDYgKzk0LDggQEAgdm9pZCBld2tfZXh0ZW5zaW9uX2luaXQoRXdrX0V4dGVu
c2lvbiogZXh0ZW5zaW9uKQogICAgIHN0YXRpYyBFd2tFeHRlbnNpb25DbGllbnQgY2xpZW50Owog
ICAgIGNsaWVudC52ZXJzaW9uID0gMTsKICAgICBjbGllbnQuZGF0YSA9ICh2b2lkICopZXh0ZW5z
aW9uOworICAgIGNsaWVudC5wYWdlX2FkZCA9IHBhZ2VBZGRlZDsKKyAgICBjbGllbnQucGFnZV9k
ZWwgPSBwYWdlRGVsZXRlOwogICAgIGNsaWVudC5tZXNzYWdlX3JlY2VpdmVkID0gbWVzc2FnZVJl
Y2VpdmVkOwogCiAgICAgZXdrX2V4dGVuc2lvbl9jbGllbnRfYWRkKGV4dGVuc2lvbiwgJmNsaWVu
dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy90
ZXN0X2V3azJfamF2YXNjcmlwdF9iaW5kaW5nLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZWZsL3Rlc3RzL3Rlc3RfZXdrMl9qYXZhc2NyaXB0X2JpbmRpbmcuY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjg0MmQwNzFlZjYyYWUwZDFhMDYzMDFjZTYyMTRjODVlMGZkZTIxNGQKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy90ZXN0X2V3azJf
amF2YXNjcmlwdF9iaW5kaW5nLmNwcApAQCAtMCwwICsxLDY4IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE1IFJ5dWFuIENob2kgPHJ5dWFuLmNob2lAZ21haWwuY29tPi4gIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgIkV3a1ZpZXcuaCIKKyNpbmNsdWRlICJVbml0
VGVzdFV0aWxzL0VXSzJVbml0VGVzdEJhc2UuaCIKKwordXNpbmcgbmFtZXNwYWNlIEVXSzJVbml0
VGVzdDsKKworZXh0ZXJuIEVXSzJVbml0VGVzdEVudmlyb25tZW50KiBlbnZpcm9ubWVudDsKKwor
c3RhdGljIGNvbnN0ZXhwciBkb3VibGUgdGVzdFRpbWVvdXRTZWNvbmRzID0gMi4wOworCitjbGFz
cyBFV0syQ29udGV4dFRlc3RXaXRoRXh0ZW5zaW9uIDogcHVibGljIEVXSzJVbml0VGVzdEJhc2Ug
eworcHVibGljOgorICAgIHN0YXRpYyB2b2lkIG1lc3NhZ2VSZWNlaXZlZENhbGxiYWNrKGNvbnN0
IGNoYXIqIG5hbWUsIGNvbnN0IEVpbmFfVmFsdWUqIGJvZHksIHZvaWQqIHVzZXJEYXRhKQorICAg
IHsKKyAgICAgICAgYm9vbCogaGFuZGxlZCA9IHN0YXRpY19jYXN0PGJvb2wqPih1c2VyRGF0YSk7
CisgICAgICAgIEFTU0VSVF9TVFJFUSgiaGVsbG8iLCBuYW1lKTsKKworICAgICAgICAqaGFuZGxl
ZCA9IHRydWU7CisgICAgfQorCitwcm90ZWN0ZWQ6CisgICAgRVdLMkNvbnRleHRUZXN0V2l0aEV4
dGVuc2lvbigpCisgICAgeworICAgICAgICBtX3dpdGhFeHRlbnNpb24gPSB0cnVlOworICAgIH0K
K307CisKK1RFU1RfRihFV0syQ29udGV4dFRlc3RXaXRoRXh0ZW5zaW9uLCBld2tfamF2YXNjcmlw
dF9iaW5kaW5nKQoreworICAgIGJvb2wgcmVjZWl2ZWQgPSBmYWxzZTsKKyAgICBFd2tfQ29udGV4
dCogY29udGV4dCA9IGV3a192aWV3X2NvbnRleHRfZ2V0KHdlYlZpZXcoKSk7CisKKyAgICBld2tf
Y29udGV4dF9tZXNzYWdlX2Zyb21fZXh0ZW5zaW9uc19jYWxsYmFja19zZXQoY29udGV4dCwgbWVz
c2FnZVJlY2VpdmVkQ2FsbGJhY2ssICZyZWNlaXZlZCk7CisKKyAgICBld2tfdmlld191cmxfc2V0
KHdlYlZpZXcoKSwgZW52aXJvbm1lbnQtPmRlZmF1bHRUZXN0UGFnZVVybCgpKTsKKyAgICBBU1NF
UlRfVFJVRSh3YWl0VW50aWxMb2FkRmluaXNoZWQoKSk7CisKKyAgICBld2tfdmlld19zY3JpcHRf
ZXhlY3V0ZSh3ZWJWaWV3KCksICJ0ZXN0LmhlbGxvKCk7IiwgbnVsbHB0ciwgbnVsbHB0cik7CisK
KyAgICBBU1NFUlRfVFJVRSh3YWl0VW50aWxUcnVlKHJlY2VpdmVkLCB0ZXN0VGltZW91dFNlY29u
ZHMpKTsKK30KKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvZWZsL0VXZWJLaXRfRXh0ZW5zaW9uLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9lZmwvRVdlYktpdF9FeHRlbnNpb24uaAppbmRleCA5
MDYwMDFkYTcyMWUwMjYwMWY4MjljNTJhZjNmNzQ5MDUyOTJiYjkwLi4xNmUyMzlkZDk2OTA0ZmQ2
NDYyNzk1ZjUwYmVhZjJiNDBhYWNjMmM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9lZmwvRVdlYktpdF9FeHRlbnNpb24uaAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9lZmwvRVdlYktpdF9F
eHRlbnNpb24uaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQgUnl1
YW4gQ2hvaSA8cnl1YW4uY2hvaUBnbWFpbC5jb20+LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAxNC0yMDE1IFJ5dWFuIENob2kgPHJ5dWFuLmNob2lAZ21haWwuY29t
Pi4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTU3LDUgKzU3LDYgQEAKICNkZWZpbmUgRVdlYktpdF9FeHRlbnNpb25faAogCiAjaW5jbHVk
ZSAiZXdrX2V4dGVuc2lvbi5oIgorI2luY2x1ZGUgImV3a19wYWdlLmgiCiAKICNlbmRpZiAvLyBF
V2ViS2l0X0V4dGVuc2lvbl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0FQSS9lZmwvZXdrX2V4dGVuc2lvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9lZmwvZXdrX2V4dGVuc2lvbi5jcHAKaW5k
ZXggMTZmMzQ0ZjM0ZGM2NjExNDY1MjkyZjMzZTE5MjUxYzhjZmI0OTkzYi4uM2M3ODQ2MmU4MTJm
OTMzMTc2YzZhNTAxY2JkYWRjN2Y0YzJiYjlkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZWZsL2V3a19leHRlbnNpb24uY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2VmbC9ld2tfZXh0
ZW5zaW9uLmNwcApAQCAtMzEsNyArMzEsOSBAQAogI2luY2x1ZGUgIldLQnVuZGxlLmgiCiAjaW5j
bHVkZSAiV0tCdW5kbGVBUElDYXN0LmgiCiAjaW5jbHVkZSAiV0tSZXRhaW5QdHIuaCIKKyNpbmNs
dWRlICJXZWJQYWdlLmgiCiAjaW5jbHVkZSAiZXdrX2V4dGVuc2lvbl9wcml2YXRlLmgiCisjaW5j
bHVkZSAiZXdrX3BhZ2VfcHJpdmF0ZS5oIgogI2luY2x1ZGUgPFdlYktpdC9XS1N0cmluZy5oPgog
I2luY2x1ZGUgPFdlYktpdC9XS1R5cGUuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+
CkBAIC03MCwxNCArNzIsMzAgQEAgdm9pZCBFd2tFeHRlbnNpb246OnJlbW92ZShFd2tfRXh0ZW5z
aW9uX0NsaWVudCogY2xpZW50KQogICAgIG1fY2xpZW50cy5yZW1vdmVGaXJzdChjbGllbnQpOwog
fQogCi12b2lkIEV3a0V4dGVuc2lvbjo6ZGlkQ3JlYXRlUGFnZShXS0J1bmRsZVJlZiwgV0tCdW5k
bGVQYWdlUmVmLCBjb25zdCB2b2lkKikKK3ZvaWQgRXdrRXh0ZW5zaW9uOjpkaWRDcmVhdGVQYWdl
KFdLQnVuZGxlUmVmLCBXS0J1bmRsZVBhZ2VSZWYgd2tQYWdlLCBjb25zdCB2b2lkKiBjbGllbnRJ
bmZvKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgRXdrRXh0ZW5zaW9uKiBzZWxmID0g
dG9Fd2tFeHRlbmRpb24oY2xpZW50SW5mbyk7CisgICAgV2ViUGFnZSogcGFnZSA9IHRvSW1wbCh3
a1BhZ2UpOworCisgICAgRXdrUGFnZSogZXdrUGFnZSA9IG5ldyBFd2tQYWdlKHBhZ2UpOworICAg
IHNlbGYtPm1fcGFnZU1hcC5hZGQocGFnZSwgc3RkOjp1bmlxdWVfcHRyPEV3a1BhZ2U+KGV3a1Bh
Z2UpKTsKKworICAgIGZvciAoYXV0byYgaXQgOiBzZWxmLT5tX2NsaWVudHMpIHsKKyAgICAgICAg
aWYgKGl0LT5wYWdlX2FkZCkKKyAgICAgICAgICAgIGl0LT5wYWdlX2FkZChld2tQYWdlLCBpdC0+
ZGF0YSk7CisgICAgfQogfQogCi12b2lkIEV3a0V4dGVuc2lvbjo6d2lsbERlc3Ryb3lQYWdlKFdL
QnVuZGxlUmVmLCBXS0J1bmRsZVBhZ2VSZWYsIGNvbnN0IHZvaWQqKQordm9pZCBFd2tFeHRlbnNp
b246OndpbGxEZXN0cm95UGFnZShXS0J1bmRsZVJlZiwgV0tCdW5kbGVQYWdlUmVmIHdrUGFnZSwg
Y29uc3Qgdm9pZCogY2xpZW50SW5mbykKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIEV3
a0V4dGVuc2lvbiogc2VsZiA9IHRvRXdrRXh0ZW5kaW9uKGNsaWVudEluZm8pOworICAgIFdlYlBh
Z2UqIHBhZ2UgPSB0b0ltcGwod2tQYWdlKTsKKworICAgIGZvciAoYXV0byYgaXQgOiBzZWxmLT5t
X2NsaWVudHMpIHsKKyAgICAgICAgaWYgKGl0LT5wYWdlX2RlbCkKKyAgICAgICAgICAgIGl0LT5w
YWdlX2RlbChzZWxmLT5tX3BhZ2VNYXAuZ2V0KHBhZ2UpLCBpdC0+ZGF0YSk7CisgICAgfQorICAg
IHNlbGYtPm1fcGFnZU1hcC5yZW1vdmUocGFnZSk7CiB9CiAKIHZvaWQgRXdrRXh0ZW5zaW9uOjpk
aWRSZWNlaXZlTWVzc2FnZShXS0J1bmRsZVJlZiwgV0tTdHJpbmdSZWYgbWVzc2FnZU5hbWUsIFdL
VHlwZVJlZiBtZXNzYWdlQm9keSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2VmbC9ld2tfZXh0
ZW5zaW9uLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9l
ZmwvZXdrX2V4dGVuc2lvbi5oCmluZGV4IDRmYTNhZDE4YzkyZDI5YmIyOGJlMjExOWM1MmI4MWY5
ZDdiMjk2MjMuLmYyOGFmOGM0MjMxZTZiOGU4NGY4YjBiMDAwMDUxNzc5MzU1N2M5NTUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2VmbC9l
d2tfZXh0ZW5zaW9uLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvZWZsL2V3a19leHRlbnNpb24uaApAQCAtMzgsNiArMzgsMTEgQEAgZXh0ZXJuICJD
IiB7CiAjZW5kaWYKIAogLyoqCisgKiBEZWNsYXJlIEV3a19QYWdlLgorICovCit0eXBlZGVmIHN0
cnVjdCBFd2tQYWdlIEV3a19QYWdlOworCisvKioKICAqIERlY2xhcmUgRXdrX0V4dGVuc2lvbi4K
ICAqLwogdHlwZWRlZiBzdHJ1Y3QgRXdrRXh0ZW5zaW9uIEV3a19FeHRlbnNpb247CkBAIC01Nyw2
ICs2Miw5IEBAIHN0cnVjdCBFd2tFeHRlbnNpb25DbGllbnQgewogICAgIGludCB2ZXJzaW9uOwog
ICAgIHZvaWQgKmRhdGE7CiAKKyAgICB2b2lkICgqcGFnZV9hZGQpKEV3a19QYWdlKiBwYWdlLCB2
b2lkICpkYXRhKTsKKyAgICB2b2lkICgqcGFnZV9kZWwpKEV3a19QYWdlKiBwYWdlLCB2b2lkICpk
YXRhKTsKKwogICAgIC8qKgogICAgICAqIENhbGxiYWNrcyB0byByZWNlaXZlIG1lc3NhZ2UgZnJv
bSBld2tfY29udGV4dC4KICAgICAgKgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZWZsL2V3a19leHRlbnNpb25fcHJpdmF0ZS5oIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZWZsL2V3a19leHRlbnNp
b25fcHJpdmF0ZS5oCmluZGV4IGQ0NzI3Njk0NmUzOTg1ODIxMGNjNzE5N2FiNGZlOTk0YTBjNWYw
NWYuLjhmZmFkZDUwZDcxNDY0YWU5YjAzMDFlYTk4NjM4ZTY5MjI0MzRiZjYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2VmbC9ld2tfZXh0
ZW5zaW9uX3ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9lZmwvZXdrX2V4dGVuc2lvbl9wcml2YXRlLmgKQEAgLTI2LDEyICsyNiwxNiBA
QAogI2lmbmRlZiBld2tfZXh0ZW5zaW9uX3ByaXZhdGVfaAogI2RlZmluZSBld2tfZXh0ZW5zaW9u
X3ByaXZhdGVfaAogCisjaW5jbHVkZSAiZXdrX3BhZ2VfcHJpdmF0ZS5oIgogI2luY2x1ZGUgPHd0
Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBJbmplY3RlZEJ1bmRsZTsK
K2NsYXNzIFdlYlBhZ2U7CiB9CiAKK2NsYXNzIEV3a1BhZ2U7CisKIGNsYXNzIEV3a0V4dGVuc2lv
biB7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgRXdrRXh0ZW5zaW9uKFdlYktpdDo6SW5qZWN0ZWRC
dW5kbGUqKTsKQEAgLTUxLDYgKzU1LDcgQEAgcHJpdmF0ZToKICAgICBXZWJLaXQ6OkluamVjdGVk
QnVuZGxlKiBtX2J1bmRsZTsKIAogICAgIFZlY3RvcjxFd2tfRXh0ZW5zaW9uX0NsaWVudCo+IG1f
Y2xpZW50czsKKyAgICBIYXNoTWFwPFdlYktpdDo6V2ViUGFnZSosIHN0ZDo6dW5pcXVlX3B0cjxF
d2tQYWdlPj4gbV9wYWdlTWFwOwogfTsKIAogI2VuZGlmIC8vIGV3a19leHRlbnNpb25fcHJpdmF0
ZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS9lZmwvZXdrX3BhZ2UuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvZWZsL2V3a19wYWdlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lY2RiY2NlMGRmZWI0MDc2
MWRlZTBiZTYzYzlhNDM2NjExNGJhMjNiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZWZsL2V3a19wYWdlLmNwcApAQCAtMCww
ICsxLDEzNyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBSeXVhbiBDaG9pIDxyeXVhbi5j
aG9pQGdtYWlsLmNvbT4uICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiZXdrX3BhZ2UuaCIKKworI2luY2x1ZGUgIldLQnVuZGxl
LmgiCisjaW5jbHVkZSAiV0tCdW5kbGVBUElDYXN0LmgiCisjaW5jbHVkZSAiV0tCdW5kbGVGcmFt
ZS5oIgorI2luY2x1ZGUgIldlYkZyYW1lLmgiCisjaW5jbHVkZSAiV2ViUGFnZS5oIgorI2luY2x1
ZGUgImV3a19wYWdlX3ByaXZhdGUuaCIKKwordXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKKworc3Rh
dGljIGlubGluZSBFd2tQYWdlKiB0b0V3a1BhZ2UoY29uc3Qgdm9pZCogY2xpZW50SW5mbykKK3sK
KyAgICByZXR1cm4gY29uc3RfY2FzdDxFd2tQYWdlKj4oc3RhdGljX2Nhc3Q8Y29uc3QgRXdrUGFn
ZSo+KGNsaWVudEluZm8pKTsKK30KKworRXdrUGFnZTo6RXdrUGFnZShXZWJQYWdlKiBwYWdlKQor
ICAgIDogbV9wYWdlKHBhZ2UpCit7CisgICAgV0tCdW5kbGVQYWdlTG9hZGVyQ2xpZW50VjcgbG9h
ZGVyQ2xpZW50ID0geworICAgICAgICB7CisgICAgICAgICAgICA3LCAvLyB2ZXJzaW9uCisgICAg
ICAgICAgICB0aGlzLCAvLyBjbGllbnRJbmZvCisgICAgICAgIH0sCisgICAgICAgIDAsIC8vIGRp
ZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUsCisgICAgICAgIDAsIC8vIGRpZFJlY2VpdmVT
ZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZEZvckZyYW1lLAorICAgICAgICAwLCAvLyBk
aWRGYWlsUHJvdmlzaW9uYWxMb2FkV2l0aEVycm9yRm9yRnJhbWUKKyAgICAgICAgMCwgLy8gZGlk
Q29tbWl0TG9hZEZvckZyYW1lCisgICAgICAgIGRpZEZpbmlzaERvY3VtZW50TG9hZEZvckZyYW1l
LAorICAgICAgICAwLCAvLyBkaWRGaW5pc2hMb2FkRm9yRnJhbWUKKyAgICAgICAgMCwgLy8gZGlk
RmFpbExvYWRXaXRoRXJyb3JGb3JGcmFtZQorICAgICAgICAwLCAvLyBkaWRTYW1lRG9jdW1lbnRO
YXZpZ2F0aW9uRm9yRnJhbWUsCisgICAgICAgIDAsIC8vIGRpZFJlY2VpdmVUaXRsZUZvckZyYW1l
CisgICAgICAgIDAsIC8vIGRpZEZpcnN0TGF5b3V0Rm9yRnJhbWUKKyAgICAgICAgMCwgLy8gZGlk
Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0Rm9yRnJhbWUKKyAgICAgICAgMCwgLy8gZGlkUmVt
b3ZlRnJhbWVGcm9tSGllcmFyY2h5CisgICAgICAgIDAsIC8vIGRpZERpc3BsYXlJbnNlY3VyZUNv
bnRlbnRGb3JGcmFtZQorICAgICAgICAwLCAvLyBkaWRSdW5JbnNlY3VyZUNvbnRlbnRGb3JGcmFt
ZQorICAgICAgICAwLCAvLyBkaWRDbGVhcldpbmRvd09iamVjdEZvckZyYW1lLAorICAgICAgICAw
LCAvLyBkaWRDYW5jZWxDbGllbnRSZWRpcmVjdEZvckZyYW1lCisgICAgICAgIDAsIC8vIHdpbGxQ
ZXJmb3JtQ2xpZW50UmVkaXJlY3RGb3JGcmFtZQorICAgICAgICAwLCAvLyBkaWRIYW5kbGVPbmxv
YWRFdmVudHNGb3JGcmFtZQorICAgICAgICAwLCAvLyBkaWRMYXlvdXRGb3JGcmFtZQorICAgICAg
ICAwLCAvLyBkaWROZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQKKyAgICAgICAgMCwgLy8g
ZGlkRGV0ZWN0WFNTRm9yRnJhbWUKKyAgICAgICAgMCwgLy8gc2hvdWxkR29Ub0JhY2tGb3J3YXJk
TGlzdEl0ZW0KKyAgICAgICAgMCwgLy8gZ2xvYmFsT2JqZWN0SXNBdmFpbGFibGVGb3JGcmFtZQor
ICAgICAgICAwLCAvLyB3aWxsRGlzY29ubmVjdERPTVdpbmRvd0V4dGVuc2lvbkZyb21HbG9iYWxP
YmplY3QKKyAgICAgICAgMCwgLy8gZGlkUmVjb25uZWN0RE9NV2luZG93RXh0ZW5zaW9uVG9HbG9i
YWxPYmplY3QKKyAgICAgICAgMCwgLy8gd2lsbERlc3Ryb3lHbG9iYWxPYmplY3RGb3JET01XaW5k
b3dFeHRlbnNpb24KKyAgICAgICAgMCwgLy8gZGlkRmluaXNoUHJvZ3Jlc3MKKyAgICAgICAgMCwg
Ly8gc2hvdWxkRm9yY2VVbml2ZXJzYWxBY2Nlc3NGcm9tTG9jYWxVUkwKKyAgICAgICAgMCwgLy8g
ZGlkUmVjZWl2ZUludGVudEZvckZyYW1lX3VuYXZhaWxhYmxlCisgICAgICAgIDAsIC8vIHJlZ2lz
dGVySW50ZW50U2VydmljZUZvckZyYW1lX3VuYXZhaWxhYmxlCisgICAgICAgIDAsIC8vIGRpZExh
eW91dAorICAgICAgICAwLCAvLyBmZWF0dXJlc1VzZWRJblBhZ2UKKyAgICAgICAgMCwgLy8gd2ls
bExvYWRVUkxSZXF1ZXN0CisgICAgICAgIDAsIC8vIHdpbGxMb2FkRGF0YVJlcXVlc3QKKyAgICAg
ICAgMCAvLyB3aWxsRGVzdHJveUZyYW1lCisgICAgfTsKKyAgICBXS0J1bmRsZVBhZ2VTZXRQYWdl
TG9hZGVyQ2xpZW50KHRvQVBJKHBhZ2UpLCAmbG9hZGVyQ2xpZW50LmJhc2UpOworfQorCit2b2lk
IEV3a1BhZ2U6OmFwcGVuZChFd2tfUGFnZV9DbGllbnQqIGNsaWVudCkKK3sKKyAgICBtX2NsaWVu
dHMuYXBwZW5kKGNsaWVudCk7Cit9CisKK3ZvaWQgRXdrUGFnZTo6cmVtb3ZlKEV3a19QYWdlX0Ns
aWVudCogY2xpZW50KQoreworICAgIG1fY2xpZW50cy5yZW1vdmUobV9jbGllbnRzLmZpbmQoY2xp
ZW50KSk7Cit9CisKK3ZvaWQgRXdrUGFnZTo6ZGlkRmluaXNoRG9jdW1lbnRMb2FkRm9yRnJhbWUo
V0tCdW5kbGVQYWdlUmVmLCBXS0J1bmRsZUZyYW1lUmVmIGZyYW1lLCBXS1R5cGVSZWYqLCBjb25z
dCB2b2lkKiBjbGllbnRJbmZvKQoreworICAgIGlmICghV0tCdW5kbGVGcmFtZUlzTWFpbkZyYW1l
KGZyYW1lKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgRXdrUGFnZSogc2VsZiA9IHRvRXdrUGFn
ZShjbGllbnRJbmZvKTsKKyAgICBmb3IgKGF1dG8mIGl0IDogc2VsZi0+bV9jbGllbnRzKSB7Cisg
ICAgICAgIGlmIChpdC0+bG9hZF9maW5pc2hlZCkKKyAgICAgICAgICAgIGl0LT5sb2FkX2Zpbmlz
aGVkKHNlbGYsIGl0LT5kYXRhKTsKKyAgICB9Cit9CisKK0pTR2xvYmFsQ29udGV4dFJlZiBld2tf
cGFnZV9qc19nbG9iYWxfY29udGV4dF9nZXQoRXdrX1BhZ2UqIGV3a1BhZ2UpCit7CisgICAgRUlO
QV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKGV3a1BhZ2UsIDApOworCisgICAgV2ViRnJhbWUq
IGNvcmVGcmFtZSA9IGV3a1BhZ2UtPnBhZ2UoKS0+bWFpbldlYkZyYW1lKCk7CisgICAgaWYgKCFj
b3JlRnJhbWUpCisgICAgICAgIHJldHVybiAwOworCisgICAgcmV0dXJuIGNvcmVGcmFtZS0+anND
b250ZXh0KCk7Cit9CisKK3ZvaWQgZXdrX3BhZ2VfY2xpZW50X2FkZChFd2tfUGFnZSogZXdrUGFn
ZSwgRXdrX1BhZ2VfQ2xpZW50KiBjbGllbnQpCit7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9S
RVRVUk4oZXdrUGFnZSk7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oY2xpZW50KTsK
KworICAgIGV3a1BhZ2UtPmFwcGVuZChjbGllbnQpOworfQorCit2b2lkIGV3a19wYWdlX2NsaWVu
dF9kZWwoRXdrX1BhZ2UqIGV3a1BhZ2UsIEV3a19QYWdlX0NsaWVudCogY2xpZW50KQoreworICAg
IEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKGV3a1BhZ2UpOworICAgIEVJTkFfU0FGRVRZX09O
X05VTExfUkVUVVJOKGNsaWVudCk7CisKKyAgICBld2tQYWdlLT5yZW1vdmUoY2xpZW50KTsKK30K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L2VmbC9ld2tfcGFnZS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvZWZsL2V3a19wYWdlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjkzZDFmYWE4MDU1YjQ5NzIwYzY0NDJh
MzBmZGRkZWUzMDMyMWFkZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2VmbC9ld2tfcGFnZS5oCkBAIC0wLDAgKzEsNTkgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgUnl1YW4gQ2hvaSA8cnl1YW4uY2hvaUBnbWFpbC5j
b20+LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworLyoqCisgKiBAZmlsZSAgICBl
d2tfcGFnZS5oCisgKiBAYnJpZWYgICBEZXNjcmliZXMgdGhlIEV3a19QYWdlIEFQSS4KKyAqLwor
CisjaWZuZGVmIGV3a19wYWdlX2gKKyNkZWZpbmUgZXdrX3BhZ2VfaAorCisjaW5jbHVkZSA8RWlu
YS5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQmFzZS5oPgorCit0eXBlZGVmIHN0cnVj
dCBFd2tQYWdlIEV3a19QYWdlOworCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIgewor
I2VuZGlmCisKK3N0cnVjdCBFd2tQYWdlQ2xpZW50IHsKKyAgICBpbnQgdmVyc2lvbjsKKyAgICB2
b2lkICpkYXRhOworCisgICAgdm9pZCAoKmxvYWRfZmluaXNoZWQpKEV3a19QYWdlICpwYWdlLCB2
b2lkICpkYXRhKTsKK307Cit0eXBlZGVmIHN0cnVjdCBFd2tQYWdlQ2xpZW50IEV3a19QYWdlX0Ns
aWVudDsKKworRUFQSSBKU0dsb2JhbENvbnRleHRSZWYgZXdrX3BhZ2VfanNfZ2xvYmFsX2NvbnRl
eHRfZ2V0KEV3a19QYWdlICpwYWdlKTsKKworRUFQSSB2b2lkIGV3a19wYWdlX2NsaWVudF9hZGQo
RXdrX1BhZ2UgKnBhZ2UsIEV3a19QYWdlX0NsaWVudCAqY2xpZW50KTsKKworI2lmZGVmIF9fY3Bs
dXNwbHVzCit9CisjZW5kaWYKKworI2VuZGlmIC8vIGV3a19wYWdlX2gKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2VmbC9ld2tfcGFnZV9w
cml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9l
ZmwvZXdrX3BhZ2VfcHJpdmF0ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI2ZDg4YjUzN2Y4NmRmZDg3NzRkNDBj
MWQyYzkyZDAyNTY5NDY2MDcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9lZmwvZXdrX3BhZ2VfcHJpdmF0ZS5oCkBAIC0wLDAg
KzEsNTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgUnl1YW4gQ2hvaSA8cnl1YW4uY2hv
aUBnbWFpbC5jb20+LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBl
d2tfcGFnZV9wcml2YXRlX2gKKyNkZWZpbmUgZXdrX3BhZ2VfcHJpdmF0ZV9oCisKK3R5cGVkZWYg
c3RydWN0IEV3a1BhZ2VDbGllbnQgRXdrX1BhZ2VfQ2xpZW50OworCituYW1lc3BhY2UgV2ViS2l0
IHsKK2NsYXNzIFdlYlBhZ2U7Cit9CisKK2NsYXNzIEV3a1BhZ2UgeworcHVibGljOgorICAgIGV4
cGxpY2l0IEV3a1BhZ2UoV2ViS2l0OjpXZWJQYWdlKik7CisKKyAgICBXZWJLaXQ6OldlYlBhZ2Uq
IHBhZ2UoKSB7IHJldHVybiBtX3BhZ2U7IH0KKworICAgIHZvaWQgYXBwZW5kKEV3a19QYWdlX0Ns
aWVudCopOworICAgIHZvaWQgcmVtb3ZlKEV3a19QYWdlX0NsaWVudCopOworCitwcml2YXRlOgor
ICAgIHN0YXRpYyB2b2lkIGRpZEZpbmlzaERvY3VtZW50TG9hZEZvckZyYW1lKFdLQnVuZGxlUGFn
ZVJlZiwgV0tCdW5kbGVGcmFtZVJlZiwgV0tUeXBlUmVmKiwgY29uc3Qgdm9pZCAqKTsKKworICAg
IFdlYktpdDo6V2ViUGFnZSogbV9wYWdlOworICAgIFZlY3RvcjxFd2tfUGFnZV9DbGllbnQqPiBt
X2NsaWVudHM7Cit9OworCisjZW5kaWYgLy8gZXdrX3BhZ2VfcHJpdmF0ZV9oCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9lZmwvZXdlYmtpdDItZXh0ZW5zaW9uLnBjLmluIGIvU291cmNlL1dl
YktpdDIvZWZsL2V3ZWJraXQyLWV4dGVuc2lvbi5wYy5pbgppbmRleCAyNjE2Y2RjMmY5Mzk1ZWJl
NzI5NmQwNTQ4ZmVjODAxZmM1MWU4M2M0Li42OWUzYjgzOTcyYWRmMjU3MDM2NTEyY2ZiZmY2ZjAy
NzBjZWNkYjI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9lZmwvZXdlYmtpdDItZXh0ZW5z
aW9uLnBjLmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL2VmbC9ld2Via2l0Mi1leHRlbnNpb24ucGMu
aW4KQEAgLTUsNCArNSw0IEBAIE5hbWU6IGV3ZWJraXQyLWV4dGVuc2lvbgogRGVzY3JpcHRpb246
IEV4dGVuc2lvbiBmb3IgV2ViS2l0Mi9FRkwoZXdlYmtpdDIpCiBWZXJzaW9uOiBAUFJPSkVDVF9W
RVJTSU9OQAogUmVxdWlyZXM6IGVpbmEKLUNmbGFnczogLUkke2luY2x1ZGVkaXJ9L0BXZWJLaXQy
X09VVFBVVF9OQU1FQC1AUFJPSkVDVF9WRVJTSU9OX01BSk9SQC9leHRlbnNpb24KK0NmbGFnczog
LUkke2luY2x1ZGVkaXJ9L0BXZWJLaXQyX09VVFBVVF9OQU1FQC1AUFJPSkVDVF9WRVJTSU9OX01B
Sk9SQC9leHRlbnNpb24gLUkke2luY2x1ZGVkaXJ9L0BXZWJLaXQyX09VVFBVVF9OQU1FQC1AUFJP
SkVDVF9WRVJTSU9OX01BSk9SQAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>248827</attachid>
            <date>2015-03-16 23:03:11 -0700</date>
            <delta_ts>2015-03-17 02:46:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-142033-20150317150237.patch</filename>
            <type>text/plain</type>
            <size>28444</size>
            <attacher name="Ryuan Choi">ryuan.choi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgxNTk5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBj
MThlNDRjZDA3NTRhMTAwYTJlNmYyYzgxZTAxYjg1ZTkxNDc1NWE0Li42Mzc4Mzc0MDUwNmY4Zjgx
ODMzMmQ2YTRlZjQ2NDkyM2YwNzcwMjA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMiBAQAorMjAxNS0wMy0xNiAgUnl1YW4gQ2hvaSAgPHJ5dWFuLmNob2lAbmF2ZXJjb3Jw
LmNvbT4KKworICAgICAgICBbRUZMXSBFeHBvc2UgSmF2YVNjcmlwdCBiaW5kaW5nIGludGVyZmFj
ZSB0aHJvdWdoIGV3a19leHRlbnNpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE0MjAzMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogUGxhdGZvcm1FZmwuY21ha2U6IEluc3RhbGwgSmF2YXNjcmlwdCBB
UElzLgorCiAyMDE1LTAzLTE2ICBDc2FiYSBPc3p0cm9nb27DoWMgIDxvc3N5QHdlYmtpdC5vcmc+
CiAKICAgICAgICAgW0FSTV0gRW5hYmxlIGdlbmVyYXRpbmcgaWRpdiBpbnN0cnVjdGlvbnMgaWYg
aXQgaXMgc3VwcG9ydGVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNzYyYzA0NWM3ODM1NWU3MTc1NmQwMzc2YTBl
Y2Q5M2RhMTU5NjMzOS4uOTNmNzQ3MWUxNDNjZWRiMGU2YjM3NTIzODM4OWQxODcyZjE5MDJmMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDE1LTAzLTE2ICBSeXVhbiBDaG9pICA8cnl1
YW4uY2hvaUBuYXZlcmNvcnAuY29tPgorCisgICAgICAgIFtFRkxdIEV4cG9zZSBKYXZhU2NyaXB0
IGJpbmRpbmcgaW50ZXJmYWNlIHRocm91Z2ggZXdrX2V4dGVuc2lvbgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQyMDMzCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBQbGF0Zm9ybUVmbC5jbWFrZToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy9leHRlbnNpb25zL2V4dGVuc2lvbl9zYW1w
bGUuY3BwOiBSZWdpc3RlcmVkIHRlc3Qgb2JqZWN0IGZvciBuZXcgdGVzdCBjYXNlLgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL3Rlc3RfZXdrMl9qYXZhc2NyaXB0X2JpbmRpbmcu
Y3BwOiBBZGRlZCBzaW1wbGUgYmluZGluZyBBUEkgdGVzdCBjYXNlLgorICAgICAgICAoRVdLMkNv
bnRleHRUZXN0V2l0aEV4dGVuc2lvbjo6bWVzc2FnZVJlY2VpdmVkQ2FsbGJhY2spOgorICAgICAg
ICAoRVdLMkNvbnRleHRUZXN0V2l0aEV4dGVuc2lvbjo6RVdLMkNvbnRleHRUZXN0V2l0aEV4dGVu
c2lvbik6CisgICAgICAgIChURVNUX0YpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL2VmbC9FV2ViS2l0X0V4dGVuc2lvbi5oOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL2VmbC9ld2tfZXh0ZW5zaW9uLmNwcDoKKyAgICAgICAgKEV3a0V4
dGVuc2lvbjo6ZGlkQ3JlYXRlUGFnZSk6CisgICAgICAgIChFd2tFeHRlbnNpb246OndpbGxEZXN0
cm95UGFnZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZWZsL2V3
a19leHRlbnNpb24uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9l
ZmwvZXdrX2V4dGVuc2lvbl9wcml2YXRlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvZWZsL2V3a19wYWdlLmNwcDogQWRkZWQuCisgICAgICAgICh0b0V3a1BhZ2Up
OgorICAgICAgICAoRXdrUGFnZTo6RXdrUGFnZSk6CisgICAgICAgIChFd2tQYWdlOjphcHBlbmQp
OgorICAgICAgICAoRXdrUGFnZTo6cmVtb3ZlKToKKyAgICAgICAgKEV3a1BhZ2U6OmRpZEZpbmlz
aERvY3VtZW50TG9hZEZvckZyYW1lKToKKyAgICAgICAgKGV3a19wYWdlX2pzX2dsb2JhbF9jb250
ZXh0X2dldCk6CisgICAgICAgIChld2tfcGFnZV9jbGllbnRfYWRkKToKKyAgICAgICAgKGV3a19w
YWdlX2NsaWVudF9kZWwpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L2VmbC9ld2tfcGFnZS5oOiBBZGRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9lZmwvZXdrX3BhZ2VfcHJpdmF0ZS5oOiBBZGRlZC4KKyAgICAgICAgKEV3a1BhZ2U6
OnBhZ2UpOgorICAgICAgICAqIGVmbC9ld2Via2l0Mi1leHRlbnNpb24ucGMuaW46CisKIDIwMTUt
MDMtMTYgIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEBhcHBsZS5jb20+CiAKICAgICAgICAgQVNT
RVJUKG1fcGx1Z2luKSBvbiBwbHVnaW5zL3NuYXBzaG90dGluZy9zbmFwc2hvdC1wbHVnaW4tbm90
LXF1aXRlLWJsb2NrZWQtYnktaW1hZ2UuaHRtbApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL1BsYXRmb3JtRWZsLmNtYWtlIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1BsYXRmb3Jt
RWZsLmNtYWtlCmluZGV4IDQ0ZjI3Y2E4ZTJmMGE2NjY4NWEyYmVlNjgxYmI4YTEzM2MyYWY0NTMu
LjZjYzhjMGU2NDczZjY2NGRiZDRkNDQwOWE4YzkyYjIxMTI4YmI5YzggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9QbGF0Zm9ybUVmbC5jbWFrZQorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvUGxhdGZvcm1FZmwuY21ha2UKQEAgLTQsMyArNCwxMyBAQCBsaXN0KEFQUEVORCBK
YXZhU2NyaXB0Q29yZV9JTkNMVURFX0RJUkVDVE9SSUVTCiAgICAgJHtFT19JTkNMVURFX0RJUlN9
CiApCiBhZGRfZGVmaW5pdGlvbnMoLURTVEFUSUNBTExZX0xJTktFRF9XSVRIX1dURikKKworaW5z
dGFsbChGSUxFUyBBUEkvSmF2YVNjcmlwdC5oCisgICAgICAgICAgICAgIEFQSS9KU0Jhc2UuaAor
ICAgICAgICAgICAgICBBUEkvSlNDb250ZXh0UmVmLmgKKyAgICAgICAgICAgICAgQVBJL0pTT2Jq
ZWN0UmVmLmgKKyAgICAgICAgICAgICAgQVBJL0pTU3RyaW5nUmVmLmgKKyAgICAgICAgICAgICAg
QVBJL0pTVmFsdWVSZWYuaAorICAgICAgICAgICAgICBBUEkvV2ViS2l0QXZhaWxhYmlsaXR5LmgK
KyAgICAgICAgREVTVElOQVRJT04gIiR7SEVBREVSX0lOU1RBTExfRElSfS9KYXZhU2NyaXB0Q29y
ZSIKKykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlIGIvU291
cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UKaW5kZXggODA4NWYxOGExYWY1M2Q5MWU2MjFl
NzlmZWFlNmZlNjgyOTRmOGExNC4uM2E0ZjVmNTEwMTNkZmZmNDhhNGI0ZmI4ODUzMmRlM2FkNTM4
NTMxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UKKysrIGIv
U291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UKQEAgLTE3OSw2ICsxNzksNyBAQCBsaXN0
KEFQUEVORCBXZWJLaXQyX1NPVVJDRVMKICAgICBXZWJQcm9jZXNzL0Nvb2tpZXMvc291cC9XZWJL
aXRTb3VwQ29va2llSmFyU3FsaXRlLmNwcAogCiAgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvZWZsL2V3a19leHRlbnNpb24uY3BwCisgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvZWZsL2V3a19wYWdlLmNwcAogCiAgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9l
ZmwvSW5qZWN0ZWRCdW5kbGVFZmwuY3BwCiAKQEAgLTQwNiwxMCArNDA3LDExIEBAIHNldChFV2Vi
S2l0Ml9IRUFERVJTCiBzZXQoRVdlYktpdDJfRXh0ZW5zaW9uX0hFQURFUlMKICAgICAiJHtDTUFL
RV9DVVJSRU5UX1NPVVJDRV9ESVJ9L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2VmbC9F
V2ViS2l0X0V4dGVuc2lvbi5oIgogICAgICIke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZWZsL2V3a19leHRlbnNpb24uaCIKKyAgICAiJHtD
TUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2Vm
bC9ld2tfcGFnZS5oIgogKQogCi1pbnN0YWxsKEZJTEVTICR7RVdlYktpdDJfSEVBREVSU30gREVT
VElOQVRJT04gaW5jbHVkZS8ke1dlYktpdDJfT1VUUFVUX05BTUV9LSR7UFJPSkVDVF9WRVJTSU9O
X01BSk9SfSkKLWluc3RhbGwoRklMRVMgJHtFV2ViS2l0Ml9FeHRlbnNpb25fSEVBREVSU30gREVT
VElOQVRJT04gaW5jbHVkZS8ke1dlYktpdDJfT1VUUFVUX05BTUV9LSR7UFJPSkVDVF9WRVJTSU9O
X01BSk9SfS9leHRlbnNpb24pCitpbnN0YWxsKEZJTEVTICR7RVdlYktpdDJfSEVBREVSU30gREVT
VElOQVRJT04gJHtIRUFERVJfSU5TVEFMTF9ESVJ9KQoraW5zdGFsbChGSUxFUyAke0VXZWJLaXQy
X0V4dGVuc2lvbl9IRUFERVJTfSBERVNUSU5BVElPTiAke0hFQURFUl9JTlNUQUxMX0RJUn0vZXh0
ZW5zaW9uKQogCiBpbnN0YWxsKEZJTEVTICR7Q01BS0VfQklOQVJZX0RJUn0vV2ViS2l0Mi9lZmwv
ZXdlYmtpdDIucGMgREVTVElOQVRJT04gbGliL3BrZ2NvbmZpZykKIGluc3RhbGwoRklMRVMgJHtD
TUFLRV9CSU5BUllfRElSfS9XZWJLaXQyL2VmbC9ld2Via2l0Mi1leHRlbnNpb24ucGMgREVTVElO
QVRJT04gbGliL3BrZ2NvbmZpZykKQEAgLTUxMCw2ICs1MTIsNyBAQCBzZXQoRVdLMlVuaXRUZXN0
c19CSU5BUklFUwogICAgIHRlc3RfZXdrMl9laW5hX3NoYXJlZF9zdHJpbmcKICAgICB0ZXN0X2V3
azJfZmF2aWNvbl9kYXRhYmFzZQogICAgIHRlc3RfZXdrMl9maWxlX2Nob29zZXJfcmVxdWVzdAor
ICAgIHRlc3RfZXdrMl9qYXZhc2NyaXB0X2JpbmRpbmcKICAgICB0ZXN0X2V3azJfb2JqZWN0CiAg
ICAgdGVzdF9ld2syX3BhZ2VfZ3JvdXAKICAgICB0ZXN0X2V3azJfcG9wdXBfbWVudQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvZXh0ZW5zaW9ucy9l
eHRlbnNpb25fc2FtcGxlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rl
c3RzL2V4dGVuc2lvbnMvZXh0ZW5zaW9uX3NhbXBsZS5jcHAKaW5kZXggMjk0MTM0M2VjMmJmYjQw
MjdlNDEyNmYyNjM5NGE3ZDJjZTEzZmE5ZC4uOTdmNmMwYzcyMTllY2Q0NTBmMGZkODIwZTY3NzQ4
NWUyMTljNGZjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwv
dGVzdHMvZXh0ZW5zaW9ucy9leHRlbnNpb25fc2FtcGxlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy9leHRlbnNpb25zL2V4dGVuc2lvbl9zYW1wbGUuY3Bw
CkBAIC0yNCwxMSArMjQsNjMgQEAKICAqLwogCiAjaW5jbHVkZSAiRVdlYktpdF9FeHRlbnNpb24u
aCIKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Lmg+CiAKICNpZmRlZiBfX2Nw
bHVzcGx1cwogZXh0ZXJuICJDIiB7CiAjZW5kaWYKIAorc3RhdGljIEpTVmFsdWVSZWYgaGVsbG9D
YWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rpb24sIEpTT2Jq
ZWN0UmVmIHRoaXNPYmplY3QsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVm
IGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCit7CisgICAgRXdrX0V4dGVuc2lv
biogZXh0ZW5zaW9uID0gc3RhdGljX2Nhc3Q8RXdrX0V4dGVuc2lvbio+KEpTT2JqZWN0R2V0UHJp
dmF0ZSh0aGlzT2JqZWN0KSk7CisKKyAgICBFaW5hX1ZhbHVlKiB2YWx1ZSA9IGVpbmFfdmFsdWVf
bmV3KEVJTkFfVkFMVUVfVFlQRV9TVFJJTkcpOworICAgIGVpbmFfdmFsdWVfc2V0KHZhbHVlLCAi
SGVsbG8gZnJvbSBleHRlbnNpb24iKTsKKyAgICBld2tfZXh0ZW5zaW9uX21lc3NhZ2VfcG9zdChl
eHRlbnNpb24sICJoZWxsbyIsIHZhbHVlKTsKKyAgICBlaW5hX3ZhbHVlX2ZyZWUodmFsdWUpOwor
CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK3ZvaWQgbG9hZEZpbmlzaGVkKEV3a19QYWdlKiBw
YWdlLCB2b2lkKiBkYXRhKQoreworICAgIEpTR2xvYmFsQ29udGV4dFJlZiBqc0NvbnRleHQgPSBl
d2tfcGFnZV9qc19nbG9iYWxfY29udGV4dF9nZXQocGFnZSk7CisgICAgSlNPYmplY3RSZWYgd2lu
ZG93T2JqZWN0ID0gSlNDb250ZXh0R2V0R2xvYmFsT2JqZWN0KGpzQ29udGV4dCk7CisKKyAgICBz
dGF0aWMgSlNTdGF0aWNGdW5jdGlvbiBmdW5jdGlvbnNbXSA9IHsKKyAgICAgICAgeyAiaGVsbG8i
LCBoZWxsb0NhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVy
dHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCisgICAgICAgIHsgMCwgMCwgMCB9CisgICAgfTsKKyAg
ICBzdGF0aWMgSlNDbGFzc0RlZmluaXRpb24gY2xhc3NfZGVmaW5pdGlvbiA9IHsKKyAgICAgICAg
MCwga0pTQ2xhc3NBdHRyaWJ1dGVOb25lLCAiVGVzdCIsIDAsIDAsIGZ1bmN0aW9ucywKKyAgICAg
ICAgMCwgMC8qICovLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwCisgICAgfTsKKyAgICBKU0Ns
YXNzUmVmIGNsYXN6ID0gSlNDbGFzc0NyZWF0ZSgmY2xhc3NfZGVmaW5pdGlvbik7CisgICAgSlNP
YmplY3RSZWYgb2JqZWN0ID0gSlNPYmplY3RNYWtlKGpzQ29udGV4dCwgY2xhc3osIGRhdGEpOwor
ICAgIEpTQ2xhc3NSZWxlYXNlKGNsYXN6KTsKKworICAgIEpTT2JqZWN0U2V0UHJpdmF0ZShvYmpl
Y3QsIGRhdGEpOworCisgICAgSlNWYWx1ZVJlZiBleGNlcHRpb24gPSAwOworICAgIEpTU3RyaW5n
UmVmIHByb3BlcnR5ID0gSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoInRlc3QiKTsKKyAg
ICBKU09iamVjdFNldFByb3BlcnR5KGpzQ29udGV4dCwgd2luZG93T2JqZWN0LCBwcm9wZXJ0eSwg
b2JqZWN0LCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1
dGVEb250RGVsZXRlLCAmZXhjZXB0aW9uKTsKKyAgICBKU1N0cmluZ1JlbGVhc2UocHJvcGVydHkp
OworfQorCitzdGF0aWMgdm9pZCBwYWdlQWRkZWQoRXdrX1BhZ2UqIHBhZ2UsIHZvaWQqIGRhdGEp
Cit7CisgICAgc3RhdGljIEV3a19QYWdlX0NsaWVudCBjbGllbnQ7CisgICAgY2xpZW50LnZlcnNp
b24gPSAxOworICAgIGNsaWVudC5kYXRhID0gZGF0YTsKKyAgICBjbGllbnQubG9hZF9maW5pc2hl
ZCA9IGxvYWRGaW5pc2hlZDsKKworICAgIGV3a19wYWdlX2NsaWVudF9hZGQocGFnZSwgJmNsaWVu
dCk7Cit9CisKK3N0YXRpYyB2b2lkIHBhZ2VEZWxldGUoRXdrX1BhZ2UqIHBhZ2UsIHZvaWQqIGRh
dGEpCit7Cit9CisKIHN0YXRpYyB2b2lkIG1lc3NhZ2VSZWNlaXZlZChjb25zdCBjaGFyKiBuYW1l
LCBjb25zdCBFaW5hX1ZhbHVlKiBib2R5LCB2b2lkKiBkYXRhKQogewogICAgIEVpbmFfVmFsdWUq
IHZhbHVlID0gZWluYV92YWx1ZV9uZXcoRUlOQV9WQUxVRV9UWVBFX1NUUklORyk7CkBAIC00Miw2
ICs5NCw4IEBAIHZvaWQgZXdrX2V4dGVuc2lvbl9pbml0KEV3a19FeHRlbnNpb24qIGV4dGVuc2lv
bikKICAgICBzdGF0aWMgRXdrRXh0ZW5zaW9uQ2xpZW50IGNsaWVudDsKICAgICBjbGllbnQudmVy
c2lvbiA9IDE7CiAgICAgY2xpZW50LmRhdGEgPSAodm9pZCAqKWV4dGVuc2lvbjsKKyAgICBjbGll
bnQucGFnZV9hZGQgPSBwYWdlQWRkZWQ7CisgICAgY2xpZW50LnBhZ2VfZGVsID0gcGFnZURlbGV0
ZTsKICAgICBjbGllbnQubWVzc2FnZV9yZWNlaXZlZCA9IG1lc3NhZ2VSZWNlaXZlZDsKIAogICAg
IGV3a19leHRlbnNpb25fY2xpZW50X2FkZChleHRlbnNpb24sICZjbGllbnQpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvdGVzdF9ld2syX2phdmFz
Y3JpcHRfYmluZGluZy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0
cy90ZXN0X2V3azJfamF2YXNjcmlwdF9iaW5kaW5nLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44NDJkMDcxZWY2
MmFlMGQxYTA2MzAxY2U2MjE0Yzg1ZTBmZGUyMTRkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvdGVzdF9ld2syX2phdmFzY3JpcHRfYmlu
ZGluZy5jcHAKQEAgLTAsMCArMSw2OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBSeXVh
biBDaG9pIDxyeXVhbi5jaG9pQGdtYWlsLmNvbT4uICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisKKyNpbmNsdWRlICJFd2tWaWV3LmgiCisjaW5jbHVkZSAiVW5pdFRlc3RVdGlscy9FV0sy
VW5pdFRlc3RCYXNlLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBFV0syVW5pdFRlc3Q7CisKK2V4dGVy
biBFV0syVW5pdFRlc3RFbnZpcm9ubWVudCogZW52aXJvbm1lbnQ7CisKK3N0YXRpYyBjb25zdGV4
cHIgZG91YmxlIHRlc3RUaW1lb3V0U2Vjb25kcyA9IDIuMDsKKworY2xhc3MgRVdLMkNvbnRleHRU
ZXN0V2l0aEV4dGVuc2lvbiA6IHB1YmxpYyBFV0syVW5pdFRlc3RCYXNlIHsKK3B1YmxpYzoKKyAg
ICBzdGF0aWMgdm9pZCBtZXNzYWdlUmVjZWl2ZWRDYWxsYmFjayhjb25zdCBjaGFyKiBuYW1lLCBj
b25zdCBFaW5hX1ZhbHVlKiBib2R5LCB2b2lkKiB1c2VyRGF0YSkKKyAgICB7CisgICAgICAgIGJv
b2wqIGhhbmRsZWQgPSBzdGF0aWNfY2FzdDxib29sKj4odXNlckRhdGEpOworICAgICAgICBBU1NF
UlRfU1RSRVEoImhlbGxvIiwgbmFtZSk7CisKKyAgICAgICAgKmhhbmRsZWQgPSB0cnVlOworICAg
IH0KKworcHJvdGVjdGVkOgorICAgIEVXSzJDb250ZXh0VGVzdFdpdGhFeHRlbnNpb24oKQorICAg
IHsKKyAgICAgICAgbV93aXRoRXh0ZW5zaW9uID0gdHJ1ZTsKKyAgICB9Cit9OworCitURVNUX0Yo
RVdLMkNvbnRleHRUZXN0V2l0aEV4dGVuc2lvbiwgZXdrX2phdmFzY3JpcHRfYmluZGluZykKK3sK
KyAgICBib29sIHJlY2VpdmVkID0gZmFsc2U7CisgICAgRXdrX0NvbnRleHQqIGNvbnRleHQgPSBl
d2tfdmlld19jb250ZXh0X2dldCh3ZWJWaWV3KCkpOworCisgICAgZXdrX2NvbnRleHRfbWVzc2Fn
ZV9mcm9tX2V4dGVuc2lvbnNfY2FsbGJhY2tfc2V0KGNvbnRleHQsIG1lc3NhZ2VSZWNlaXZlZENh
bGxiYWNrLCAmcmVjZWl2ZWQpOworCisgICAgZXdrX3ZpZXdfdXJsX3NldCh3ZWJWaWV3KCksIGVu
dmlyb25tZW50LT5kZWZhdWx0VGVzdFBhZ2VVcmwoKSk7CisgICAgQVNTRVJUX1RSVUUod2FpdFVu
dGlsTG9hZEZpbmlzaGVkKCkpOworCisgICAgZXdrX3ZpZXdfc2NyaXB0X2V4ZWN1dGUod2ViVmll
dygpLCAidGVzdC5oZWxsbygpOyIsIG51bGxwdHIsIG51bGxwdHIpOworCisgICAgQVNTRVJUX1RS
VUUod2FpdFVudGlsVHJ1ZShyZWNlaXZlZCwgdGVzdFRpbWVvdXRTZWNvbmRzKSk7Cit9CisKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2Vm
bC9FV2ViS2l0X0V4dGVuc2lvbi5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvZWZsL0VXZWJLaXRfRXh0ZW5zaW9uLmgKaW5kZXggOTA2MDAxZGE3MjFlMDI2
MDFmODI5YzUyYWYzZjc0OTA1MjkyYmI5MC4uMTZlMjM5ZGQ5NjkwNGZkNjQ2Mjc5NWY1MGJlYWYy
YjQwYWFjYzJjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvZWZsL0VXZWJLaXRfRXh0ZW5zaW9uLmgKKysrIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZWZsL0VXZWJLaXRfRXh0ZW5zaW9uLmgKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE0IFJ5dWFuIENob2kgPHJ5dWFu
LmNob2lAZ21haWwuY29tPi4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTQtMjAxNSBSeXVhbiBDaG9pIDxyeXVhbi5jaG9pQGdtYWlsLmNvbT4uICBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC01Nyw1ICs1Nyw2
IEBACiAjZGVmaW5lIEVXZWJLaXRfRXh0ZW5zaW9uX2gKIAogI2luY2x1ZGUgImV3a19leHRlbnNp
b24uaCIKKyNpbmNsdWRlICJld2tfcGFnZS5oIgogCiAjZW5kaWYgLy8gRVdlYktpdF9FeHRlbnNp
b25faApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvZWZsL2V3a19leHRlbnNpb24uY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvZWZsL2V3a19leHRlbnNpb24uY3BwCmluZGV4IDE2ZjM0NGYzNGRj
NjYxMTQ2NTI5MmYzM2UxOTI1MWM4Y2ZiNDk5M2IuLjNjNzg0NjJlODEyZjkzMzE3NmM2YTUwMWNi
ZGFkYzdmNGMyYmI5ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL2VmbC9ld2tfZXh0ZW5zaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9lZmwvZXdrX2V4dGVuc2lvbi5jcHAKQEAg
LTMxLDcgKzMxLDkgQEAKICNpbmNsdWRlICJXS0J1bmRsZS5oIgogI2luY2x1ZGUgIldLQnVuZGxl
QVBJQ2FzdC5oIgogI2luY2x1ZGUgIldLUmV0YWluUHRyLmgiCisjaW5jbHVkZSAiV2ViUGFnZS5o
IgogI2luY2x1ZGUgImV3a19leHRlbnNpb25fcHJpdmF0ZS5oIgorI2luY2x1ZGUgImV3a19wYWdl
X3ByaXZhdGUuaCIKICNpbmNsdWRlIDxXZWJLaXQvV0tTdHJpbmcuaD4KICNpbmNsdWRlIDxXZWJL
aXQvV0tUeXBlLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgpAQCAtNzAsMTQgKzcy
LDMwIEBAIHZvaWQgRXdrRXh0ZW5zaW9uOjpyZW1vdmUoRXdrX0V4dGVuc2lvbl9DbGllbnQqIGNs
aWVudCkKICAgICBtX2NsaWVudHMucmVtb3ZlRmlyc3QoY2xpZW50KTsKIH0KIAotdm9pZCBFd2tF
eHRlbnNpb246OmRpZENyZWF0ZVBhZ2UoV0tCdW5kbGVSZWYsIFdLQnVuZGxlUGFnZVJlZiwgY29u
c3Qgdm9pZCopCit2b2lkIEV3a0V4dGVuc2lvbjo6ZGlkQ3JlYXRlUGFnZShXS0J1bmRsZVJlZiwg
V0tCdW5kbGVQYWdlUmVmIHdrUGFnZSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKIHsKLSAgICBu
b3RJbXBsZW1lbnRlZCgpOworICAgIEV3a0V4dGVuc2lvbiogc2VsZiA9IHRvRXdrRXh0ZW5kaW9u
KGNsaWVudEluZm8pOworICAgIFdlYlBhZ2UqIHBhZ2UgPSB0b0ltcGwod2tQYWdlKTsKKworICAg
IEV3a1BhZ2UqIGV3a1BhZ2UgPSBuZXcgRXdrUGFnZShwYWdlKTsKKyAgICBzZWxmLT5tX3BhZ2VN
YXAuYWRkKHBhZ2UsIHN0ZDo6dW5pcXVlX3B0cjxFd2tQYWdlPihld2tQYWdlKSk7CisKKyAgICBm
b3IgKGF1dG8mIGl0IDogc2VsZi0+bV9jbGllbnRzKSB7CisgICAgICAgIGlmIChpdC0+cGFnZV9h
ZGQpCisgICAgICAgICAgICBpdC0+cGFnZV9hZGQoZXdrUGFnZSwgaXQtPmRhdGEpOworICAgIH0K
IH0KIAotdm9pZCBFd2tFeHRlbnNpb246OndpbGxEZXN0cm95UGFnZShXS0J1bmRsZVJlZiwgV0tC
dW5kbGVQYWdlUmVmLCBjb25zdCB2b2lkKikKK3ZvaWQgRXdrRXh0ZW5zaW9uOjp3aWxsRGVzdHJv
eVBhZ2UoV0tCdW5kbGVSZWYsIFdLQnVuZGxlUGFnZVJlZiB3a1BhZ2UsIGNvbnN0IHZvaWQqIGNs
aWVudEluZm8pCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBFd2tFeHRlbnNpb24qIHNl
bGYgPSB0b0V3a0V4dGVuZGlvbihjbGllbnRJbmZvKTsKKyAgICBXZWJQYWdlKiBwYWdlID0gdG9J
bXBsKHdrUGFnZSk7CisKKyAgICBmb3IgKGF1dG8mIGl0IDogc2VsZi0+bV9jbGllbnRzKSB7Cisg
ICAgICAgIGlmIChpdC0+cGFnZV9kZWwpCisgICAgICAgICAgICBpdC0+cGFnZV9kZWwoc2VsZi0+
bV9wYWdlTWFwLmdldChwYWdlKSwgaXQtPmRhdGEpOworICAgIH0KKyAgICBzZWxmLT5tX3BhZ2VN
YXAucmVtb3ZlKHBhZ2UpOwogfQogCiB2b2lkIEV3a0V4dGVuc2lvbjo6ZGlkUmVjZWl2ZU1lc3Nh
Z2UoV0tCdW5kbGVSZWYsIFdLU3RyaW5nUmVmIG1lc3NhZ2VOYW1lLCBXS1R5cGVSZWYgbWVzc2Fn
ZUJvZHksIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9lZmwvZXdrX2V4dGVuc2lvbi5oIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZWZsL2V3a19leHRlbnNp
b24uaAppbmRleCA0ZmEzYWQxOGM5MmQyOWJiMjhiZTIxMTljNTJiODFmOWQ3YjI5NjIzLi5mMjhh
ZjhjNDIzMWU2YjhlODRmOGIwYjAwMDA1MTc3OTM1NTdjOTU1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9lZmwvZXdrX2V4dGVuc2lvbi5o
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2VmbC9l
d2tfZXh0ZW5zaW9uLmgKQEAgLTM4LDYgKzM4LDExIEBAIGV4dGVybiAiQyIgewogI2VuZGlmCiAK
IC8qKgorICogRGVjbGFyZSBFd2tfUGFnZS4KKyAqLwordHlwZWRlZiBzdHJ1Y3QgRXdrUGFnZSBF
d2tfUGFnZTsKKworLyoqCiAgKiBEZWNsYXJlIEV3a19FeHRlbnNpb24uCiAgKi8KIHR5cGVkZWYg
c3RydWN0IEV3a0V4dGVuc2lvbiBFd2tfRXh0ZW5zaW9uOwpAQCAtNTcsNiArNjIsOSBAQCBzdHJ1
Y3QgRXdrRXh0ZW5zaW9uQ2xpZW50IHsKICAgICBpbnQgdmVyc2lvbjsKICAgICB2b2lkICpkYXRh
OwogCisgICAgdm9pZCAoKnBhZ2VfYWRkKShFd2tfUGFnZSogcGFnZSwgdm9pZCAqZGF0YSk7Cisg
ICAgdm9pZCAoKnBhZ2VfZGVsKShFd2tfUGFnZSogcGFnZSwgdm9pZCAqZGF0YSk7CisKICAgICAv
KioKICAgICAgKiBDYWxsYmFja3MgdG8gcmVjZWl2ZSBtZXNzYWdlIGZyb20gZXdrX2NvbnRleHQu
CiAgICAgICoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL2VmbC9ld2tfZXh0ZW5zaW9uX3ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2VmbC9ld2tfZXh0ZW5zaW9uX3ByaXZhdGUuaApp
bmRleCBkNDcyNzY5NDZlMzk4NTgyMTBjYzcxOTdhYjRmZTk5NGEwYzVmMDVmLi44ZmZhZGQ1MGQ3
MTQ2NGFlOWIwMzAxZWE5ODYzOGU2OTIyNDM0YmY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9lZmwvZXdrX2V4dGVuc2lvbl9wcml2YXRl
LmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZWZs
L2V3a19leHRlbnNpb25fcHJpdmF0ZS5oCkBAIC0yNiwxMiArMjYsMTYgQEAKICNpZm5kZWYgZXdr
X2V4dGVuc2lvbl9wcml2YXRlX2gKICNkZWZpbmUgZXdrX2V4dGVuc2lvbl9wcml2YXRlX2gKIAor
I2luY2x1ZGUgImV3a19wYWdlX3ByaXZhdGUuaCIKICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAK
IG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgSW5qZWN0ZWRCdW5kbGU7CitjbGFzcyBXZWJQYWdl
OwogfQogCitjbGFzcyBFd2tQYWdlOworCiBjbGFzcyBFd2tFeHRlbnNpb24gewogcHVibGljOgog
ICAgIGV4cGxpY2l0IEV3a0V4dGVuc2lvbihXZWJLaXQ6OkluamVjdGVkQnVuZGxlKik7CkBAIC01
MSw2ICs1NSw3IEBAIHByaXZhdGU6CiAgICAgV2ViS2l0OjpJbmplY3RlZEJ1bmRsZSogbV9idW5k
bGU7CiAKICAgICBWZWN0b3I8RXdrX0V4dGVuc2lvbl9DbGllbnQqPiBtX2NsaWVudHM7CisgICAg
SGFzaE1hcDxXZWJLaXQ6OldlYlBhZ2UqLCBzdGQ6OnVuaXF1ZV9wdHI8RXdrUGFnZT4+IG1fcGFn
ZU1hcDsKIH07CiAKICNlbmRpZiAvLyBld2tfZXh0ZW5zaW9uX3ByaXZhdGVfaApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZWZsL2V3a19w
YWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2Vm
bC9ld2tfcGFnZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODUzOWYwMjc4MjQ0NTJhNzg2ZGViMWQ1MDk3Njhi
YmE5NTcyOWQ2YQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL2VmbC9ld2tfcGFnZS5jcHAKQEAgLTAsMCArMSwxMzcgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgUnl1YW4gQ2hvaSA8cnl1YW4uY2hvaUBnbWFpbC5jb20+
LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgImV3a19wYWdlLmgiCisKKyNpbmNsdWRlICJXS0J1bmRsZS5oIgorI2luY2x1ZGUg
IldLQnVuZGxlQVBJQ2FzdC5oIgorI2luY2x1ZGUgIldLQnVuZGxlRnJhbWUuaCIKKyNpbmNsdWRl
ICJXZWJGcmFtZS5oIgorI2luY2x1ZGUgIldlYlBhZ2UuaCIKKyNpbmNsdWRlICJld2tfcGFnZV9w
cml2YXRlLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CisKK3N0YXRpYyBpbmxpbmUgRXdr
UGFnZSogdG9Fd2tQYWdlKGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCit7CisgICAgcmV0dXJuIGNv
bnN0X2Nhc3Q8RXdrUGFnZSo+KHN0YXRpY19jYXN0PGNvbnN0IEV3a1BhZ2UqPihjbGllbnRJbmZv
KSk7Cit9CisKK0V3a1BhZ2U6OkV3a1BhZ2UoV2ViUGFnZSogcGFnZSkKKyAgICA6IG1fcGFnZShw
YWdlKQoreworICAgIFdLQnVuZGxlUGFnZUxvYWRlckNsaWVudFY3IGxvYWRlckNsaWVudCA9IHsK
KyAgICAgICAgeworICAgICAgICAgICAgNywgLy8gdmVyc2lvbgorICAgICAgICAgICAgdGhpcywg
Ly8gY2xpZW50SW5mbworICAgICAgICB9LAorICAgICAgICAwLCAvLyBkaWRTdGFydFByb3Zpc2lv
bmFsTG9hZEZvckZyYW1lLAorICAgICAgICAwLCAvLyBkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RG
b3JQcm92aXNpb25hbExvYWRGb3JGcmFtZSwKKyAgICAgICAgMCwgLy8gZGlkRmFpbFByb3Zpc2lv
bmFsTG9hZFdpdGhFcnJvckZvckZyYW1lCisgICAgICAgIDAsIC8vIGRpZENvbW1pdExvYWRGb3JG
cmFtZQorICAgICAgICBkaWRGaW5pc2hEb2N1bWVudExvYWRGb3JGcmFtZSwKKyAgICAgICAgMCwg
Ly8gZGlkRmluaXNoTG9hZEZvckZyYW1lCisgICAgICAgIDAsIC8vIGRpZEZhaWxMb2FkV2l0aEVy
cm9yRm9yRnJhbWUKKyAgICAgICAgMCwgLy8gZGlkU2FtZURvY3VtZW50TmF2aWdhdGlvbkZvckZy
YW1lLAorICAgICAgICAwLCAvLyBkaWRSZWNlaXZlVGl0bGVGb3JGcmFtZQorICAgICAgICAwLCAv
LyBkaWRGaXJzdExheW91dEZvckZyYW1lCisgICAgICAgIDAsIC8vIGRpZEZpcnN0VmlzdWFsbHlO
b25FbXB0eUxheW91dEZvckZyYW1lCisgICAgICAgIDAsIC8vIGRpZFJlbW92ZUZyYW1lRnJvbUhp
ZXJhcmNoeQorICAgICAgICAwLCAvLyBkaWREaXNwbGF5SW5zZWN1cmVDb250ZW50Rm9yRnJhbWUK
KyAgICAgICAgMCwgLy8gZGlkUnVuSW5zZWN1cmVDb250ZW50Rm9yRnJhbWUKKyAgICAgICAgMCwg
Ly8gZGlkQ2xlYXJXaW5kb3dPYmplY3RGb3JGcmFtZSwKKyAgICAgICAgMCwgLy8gZGlkQ2FuY2Vs
Q2xpZW50UmVkaXJlY3RGb3JGcmFtZQorICAgICAgICAwLCAvLyB3aWxsUGVyZm9ybUNsaWVudFJl
ZGlyZWN0Rm9yRnJhbWUKKyAgICAgICAgMCwgLy8gZGlkSGFuZGxlT25sb2FkRXZlbnRzRm9yRnJh
bWUKKyAgICAgICAgMCwgLy8gZGlkTGF5b3V0Rm9yRnJhbWUKKyAgICAgICAgMCwgLy8gZGlkTmV3
Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0CisgICAgICAgIDAsIC8vIGRpZERldGVjdFhTU0Zv
ckZyYW1lCisgICAgICAgIDAsIC8vIHNob3VsZEdvVG9CYWNrRm9yd2FyZExpc3RJdGVtCisgICAg
ICAgIDAsIC8vIGdsb2JhbE9iamVjdElzQXZhaWxhYmxlRm9yRnJhbWUKKyAgICAgICAgMCwgLy8g
d2lsbERpc2Nvbm5lY3RET01XaW5kb3dFeHRlbnNpb25Gcm9tR2xvYmFsT2JqZWN0CisgICAgICAg
IDAsIC8vIGRpZFJlY29ubmVjdERPTVdpbmRvd0V4dGVuc2lvblRvR2xvYmFsT2JqZWN0CisgICAg
ICAgIDAsIC8vIHdpbGxEZXN0cm95R2xvYmFsT2JqZWN0Rm9yRE9NV2luZG93RXh0ZW5zaW9uCisg
ICAgICAgIDAsIC8vIGRpZEZpbmlzaFByb2dyZXNzCisgICAgICAgIDAsIC8vIHNob3VsZEZvcmNl
VW5pdmVyc2FsQWNjZXNzRnJvbUxvY2FsVVJMCisgICAgICAgIDAsIC8vIGRpZFJlY2VpdmVJbnRl
bnRGb3JGcmFtZV91bmF2YWlsYWJsZQorICAgICAgICAwLCAvLyByZWdpc3RlckludGVudFNlcnZp
Y2VGb3JGcmFtZV91bmF2YWlsYWJsZQorICAgICAgICAwLCAvLyBkaWRMYXlvdXQKKyAgICAgICAg
MCwgLy8gZmVhdHVyZXNVc2VkSW5QYWdlCisgICAgICAgIDAsIC8vIHdpbGxMb2FkVVJMUmVxdWVz
dAorICAgICAgICAwLCAvLyB3aWxsTG9hZERhdGFSZXF1ZXN0CisgICAgICAgIDAgLy8gd2lsbERl
c3Ryb3lGcmFtZQorICAgIH07CisgICAgV0tCdW5kbGVQYWdlU2V0UGFnZUxvYWRlckNsaWVudCh0
b0FQSShwYWdlKSwgJmxvYWRlckNsaWVudC5iYXNlKTsKK30KKwordm9pZCBFd2tQYWdlOjphcHBl
bmQoRXdrX1BhZ2VfQ2xpZW50KiBjbGllbnQpCit7CisgICAgbV9jbGllbnRzLmFwcGVuZChjbGll
bnQpOworfQorCit2b2lkIEV3a1BhZ2U6OnJlbW92ZShFd2tfUGFnZV9DbGllbnQqIGNsaWVudCkK
K3sKKyAgICBtX2NsaWVudHMucmVtb3ZlKG1fY2xpZW50cy5maW5kKGNsaWVudCkpOworfQorCit2
b2lkIEV3a1BhZ2U6OmRpZEZpbmlzaERvY3VtZW50TG9hZEZvckZyYW1lKFdLQnVuZGxlUGFnZVJl
ZiwgV0tCdW5kbGVGcmFtZVJlZiBmcmFtZSwgV0tUeXBlUmVmKiwgY29uc3Qgdm9pZCogY2xpZW50
SW5mbykKK3sKKyAgICBpZiAoIVdLQnVuZGxlRnJhbWVJc01haW5GcmFtZShmcmFtZSkpCisgICAg
ICAgIHJldHVybjsKKworICAgIEV3a1BhZ2UqIHNlbGYgPSB0b0V3a1BhZ2UoY2xpZW50SW5mbyk7
CisgICAgZm9yIChhdXRvJiBpdCA6IHNlbGYtPm1fY2xpZW50cykgeworICAgICAgICBpZiAoaXQt
PmxvYWRfZmluaXNoZWQpCisgICAgICAgICAgICBpdC0+bG9hZF9maW5pc2hlZChzZWxmLCBpdC0+
ZGF0YSk7CisgICAgfQorfQorCitKU0dsb2JhbENvbnRleHRSZWYgZXdrX3BhZ2VfanNfZ2xvYmFs
X2NvbnRleHRfZ2V0KEV3a19QYWdlKiBld2tQYWdlKQoreworICAgIEVJTkFfU0FGRVRZX09OX05V
TExfUkVUVVJOX1ZBTChld2tQYWdlLCBudWxscHRyKTsKKworICAgIFdlYkZyYW1lKiBjb3JlRnJh
bWUgPSBld2tQYWdlLT5wYWdlKCktPm1haW5XZWJGcmFtZSgpOworICAgIGlmICghY29yZUZyYW1l
KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIHJldHVybiBjb3JlRnJhbWUtPmpzQ29u
dGV4dCgpOworfQorCit2b2lkIGV3a19wYWdlX2NsaWVudF9hZGQoRXdrX1BhZ2UqIGV3a1BhZ2Us
IEV3a19QYWdlX0NsaWVudCogY2xpZW50KQoreworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVU
VVJOKGV3a1BhZ2UpOworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKGNsaWVudCk7CisK
KyAgICBld2tQYWdlLT5hcHBlbmQoY2xpZW50KTsKK30KKwordm9pZCBld2tfcGFnZV9jbGllbnRf
ZGVsKEV3a19QYWdlKiBld2tQYWdlLCBFd2tfUGFnZV9DbGllbnQqIGNsaWVudCkKK3sKKyAgICBF
SU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihld2tQYWdlKTsKKyAgICBFSU5BX1NBRkVUWV9PTl9O
VUxMX1JFVFVSTihjbGllbnQpOworCisgICAgZXdrUGFnZS0+cmVtb3ZlKGNsaWVudCk7Cit9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9l
ZmwvZXdrX3BhZ2UuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL2VmbC9ld2tfcGFnZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk4NWI1NTdhYzgxZTkzYWM4ZjdhOGUzMDFl
NjYyNjE5NWM3NTZlZWQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0FQSS9lZmwvZXdrX3BhZ2UuaApAQCAtMCwwICsxLDkxIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE1IFJ5dWFuIENob2kgPHJ5dWFuLmNob2lAZ21haWwuY29t
Pi4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKy8qKgorICogQGZpbGUgICAgZXdr
X3BhZ2UuaAorICogQGJyaWVmICAgRGVzY3JpYmVzIHRoZSBFd2tfUGFnZSBBUEkuCisgKi8KKwor
I2lmbmRlZiBld2tfcGFnZV9oCisjZGVmaW5lIGV3a19wYWdlX2gKKworI2luY2x1ZGUgPEVpbmEu
aD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0Jhc2UuaD4KKwordHlwZWRlZiBzdHJ1Y3Qg
RXdrUGFnZSBFd2tfUGFnZTsKKworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiIHsKKyNl
bmRpZgorCitzdHJ1Y3QgRXdrUGFnZUNsaWVudCB7CisgICAgaW50IHZlcnNpb247CisgICAgdm9p
ZCAqZGF0YTsKKworICAgIC8qKgorICAgICAqIENhbGxiYWNrcyB0byByZXBvcnQgbG9hZCBmaW5p
c2hlZC4KKyAgICAgKgorICAgICAqIEBwYXJhbSBwYWdlIHBhZ2UgdG8gYmUgZmluaXNoZWQKKyAg
ICAgKiBAcGFyYW0gZGF0YSBkYXRhIG9mIGEgcGFnZSBjbGllbnQKKyAgICAgKi8KKyAgICB2b2lk
ICgqbG9hZF9maW5pc2hlZCkoRXdrX1BhZ2UgKnBhZ2UsIHZvaWQgKmRhdGEpOworfTsKK3R5cGVk
ZWYgc3RydWN0IEV3a1BhZ2VDbGllbnQgRXdrX1BhZ2VfQ2xpZW50OworCisvKioKKyAqIEdldHMg
YSBnbG9iYWwgSmF2YVNjcmlwdCBleGVjdXRpb24gY29udGV4dCBmb3IgdGhlIHBhZ2UuCisgKgor
ICogQHBhcmFtIHBhZ2UgcGFnZSB0byBnZXQgYSBnbG9iYWwgSmF2YVNjcmlwdCBleGVjdXRpb24g
Y29udGV4dAorICoKKyAqIFRoaXMgZnVuY3Rpb24gcmV0dXJuIGdsb2JhbCBKYXZhU2NyaXB0IGV4
ZWN1dGlvbiBjb250ZXh0IHRvIGV4dGVuZCBqYXZhc2NyaXB0IGZ1bmN0aW9uYWxpdHkuCisgKi8K
K0VBUEkgSlNHbG9iYWxDb250ZXh0UmVmIGV3a19wYWdlX2pzX2dsb2JhbF9jb250ZXh0X2dldChF
d2tfUGFnZSAqcGFnZSk7CisKKy8qKgorICogQWRkIGEgcGFnZSBjbGllbnQgd2hpY2ggY29udGFp
bnMgc2V2ZXJhbCBjYWxsYmFja3MgdG8gdGhlIHBhZ2UKKyAqCisgKiBAcGFyYW0gcGFnZSBwYWdl
IHRvIGF0dGFjaCBwYWdlIGNsaWVudAorICogQHBhcmFtIGNsaWVudCBwYWdlIGNsaWVudCB0byBh
ZGQgdG8gdGhlIHBhZ2UKKyAqCisgKiBUaGlzIGZ1bmN0aW9uIGFkZHMgYSBjbGllbnQsIHdoaWNo
IGNvbnRhaW5zIHNldmVyYWwgY2FsbGJhY2tzIHJlY2VpdmluZyBldmVudHMKKyAqIGZyb20gV2Vi
UHJvY2VzcyBzaWRlLCB0byBhIEBwIHBhZ2UuCisgKgorICogQHNlZSBld2tfcGFnZV9jbGllbnRf
ZGVsCisgKi8KK0VBUEkgdm9pZCBld2tfcGFnZV9jbGllbnRfYWRkKEV3a19QYWdlICpwYWdlLCBF
d2tfUGFnZV9DbGllbnQgKmNsaWVudCk7CisKKy8qKgorICogRGVsZXRlIGEgY2xpZW50IGZyb20g
dGhlIHBhZ2UuCisgKgorICogQHBhcmFtIHBhZ2UgcGFnZSB0byBkZWxldGUgY2xpZW50CisgKiBA
cGFyYW0gY2xpZW50IHBhZ2UgY2xpZW50IHdoaWNoIGNvbnRhaW5zIHZlcnNpb24sIGRhdGEgYW5k
IGNhbGxiYWNrcworICovCitFQVBJIHZvaWQgZXdrX3BhZ2VfY2xpZW50X2RlbChFd2tfUGFnZSAq
cGFnZSwgRXdrX1BhZ2VfQ2xpZW50ICpjbGllbnQpOworCisjaWZkZWYgX19jcGx1c3BsdXMKK30K
KyNlbmRpZgorCisjZW5kaWYgLy8gZXdrX3BhZ2VfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZWZsL2V3a19wYWdlX3ByaXZhdGUuaCBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2VmbC9ld2tfcGFn
ZV9wcml2YXRlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjZkODhiNTM3Zjg2ZGZkODc3NGQ0MGMxZDJjOTJkMDI1
Njk0NjYwNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL2VmbC9ld2tfcGFnZV9wcml2YXRlLmgKQEAgLTAsMCArMSw1MSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBSeXVhbiBDaG9pIDxyeXVhbi5jaG9pQGdtYWlsLmNv
bT4uICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIGV3a19wYWdlX3By
aXZhdGVfaAorI2RlZmluZSBld2tfcGFnZV9wcml2YXRlX2gKKwordHlwZWRlZiBzdHJ1Y3QgRXdr
UGFnZUNsaWVudCBFd2tfUGFnZV9DbGllbnQ7CisKK25hbWVzcGFjZSBXZWJLaXQgeworY2xhc3Mg
V2ViUGFnZTsKK30KKworY2xhc3MgRXdrUGFnZSB7CitwdWJsaWM6CisgICAgZXhwbGljaXQgRXdr
UGFnZShXZWJLaXQ6OldlYlBhZ2UqKTsKKworICAgIFdlYktpdDo6V2ViUGFnZSogcGFnZSgpIHsg
cmV0dXJuIG1fcGFnZTsgfQorCisgICAgdm9pZCBhcHBlbmQoRXdrX1BhZ2VfQ2xpZW50Kik7Cisg
ICAgdm9pZCByZW1vdmUoRXdrX1BhZ2VfQ2xpZW50Kik7CisKK3ByaXZhdGU6CisgICAgc3RhdGlj
IHZvaWQgZGlkRmluaXNoRG9jdW1lbnRMb2FkRm9yRnJhbWUoV0tCdW5kbGVQYWdlUmVmLCBXS0J1
bmRsZUZyYW1lUmVmLCBXS1R5cGVSZWYqLCBjb25zdCB2b2lkICopOworCisgICAgV2ViS2l0OjpX
ZWJQYWdlKiBtX3BhZ2U7CisgICAgVmVjdG9yPEV3a19QYWdlX0NsaWVudCo+IG1fY2xpZW50czsK
K307CisKKyNlbmRpZiAvLyBld2tfcGFnZV9wcml2YXRlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL2VmbC9ld2Via2l0Mi1leHRlbnNpb24ucGMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9lZmwv
ZXdlYmtpdDItZXh0ZW5zaW9uLnBjLmluCmluZGV4IDI2MTZjZGMyZjkzOTVlYmU3Mjk2ZDA1NDhm
ZWM4MDFmYzUxZTgzYzQuLjY5ZTNiODM5NzJhZGYyNTcwMzY1MTJjZmJmZjZmMDI3MGNlY2RiMjQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL2VmbC9ld2Via2l0Mi1leHRlbnNpb24ucGMuaW4K
KysrIGIvU291cmNlL1dlYktpdDIvZWZsL2V3ZWJraXQyLWV4dGVuc2lvbi5wYy5pbgpAQCAtNSw0
ICs1LDQgQEAgTmFtZTogZXdlYmtpdDItZXh0ZW5zaW9uCiBEZXNjcmlwdGlvbjogRXh0ZW5zaW9u
IGZvciBXZWJLaXQyL0VGTChld2Via2l0MikKIFZlcnNpb246IEBQUk9KRUNUX1ZFUlNJT05ACiBS
ZXF1aXJlczogZWluYQotQ2ZsYWdzOiAtSSR7aW5jbHVkZWRpcn0vQFdlYktpdDJfT1VUUFVUX05B
TUVALUBQUk9KRUNUX1ZFUlNJT05fTUFKT1JAL2V4dGVuc2lvbgorQ2ZsYWdzOiAtSSR7aW5jbHVk
ZWRpcn0vQFdlYktpdDJfT1VUUFVUX05BTUVALUBQUk9KRUNUX1ZFUlNJT05fTUFKT1JAL2V4dGVu
c2lvbiAtSSR7aW5jbHVkZWRpcn0vQFdlYktpdDJfT1VUUFVUX05BTUVALUBQUk9KRUNUX1ZFUlNJ
T05fTUFKT1JACmRpZmYgLS1naXQgYS9Tb3VyY2UvY21ha2UvT3B0aW9uc0VmbC5jbWFrZSBiL1Nv
dXJjZS9jbWFrZS9PcHRpb25zRWZsLmNtYWtlCmluZGV4IDQzYzZkODhkMTU3NzRmMGU1ZWQ3OWY0
MGI3ZTZhYjlkZTU4OGRiZjAuLjliZTYwNzE5M2JlNjEzYjZiNWRmYTQyMTBkY2UzYTI4NmE0NjE3
NjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9jbWFrZS9PcHRpb25zRWZsLmNtYWtlCisrKyBiL1NvdXJj
ZS9jbWFrZS9PcHRpb25zRWZsLmNtYWtlCkBAIC0yMyw2ICsyMyw3IEBAIHNldChXZWJLaXQyX09V
VFBVVF9OQU1FIGV3ZWJraXQyKQogc2V0KENQQUNLX1NPVVJDRV9HRU5FUkFUT1IgVEJaMikKIHNl
dChHTElCX0NPTVBPTkVOVFMgZ2lvIGdvYmplY3QgZ3RocmVhZCkKIHNldChEQVRBX0lOU1RBTExf
RElSICJzaGFyZS8ke1dlYktpdDJfT1VUUFVUX05BTUV9LSR7UFJPSkVDVF9WRVJTSU9OX01BSk9S
fSIgQ0FDSEUgUEFUSCAiSW5zdGFsbGF0aW9uIHBhdGggZm9yIHRoZW1lIGRhdGEiKQorc2V0KEhF
QURFUl9JTlNUQUxMX0RJUiAiaW5jbHVkZS8ke1dlYktpdDJfT1VUUFVUX05BTUV9LSR7UFJPSkVD
VF9WRVJTSU9OX01BSk9SfSIgQ0FDSEUgUEFUSCAiSW5zdGFsbGF0aW9uIHBhdGggZm9yIGhlYWRl
ciBmaWxlcyIpCiBzZXQoVEhFTUVfQklOQVJZX0RJUiAke0NNQUtFX0JJTkFSWV9ESVJ9L1dlYkNv
cmUvcGxhdGZvcm0vZWZsL0RlZmF1bHRUaGVtZSkKIHNldChXRUJfSU5TUEVDVE9SX0RJUiAiJHtE
QVRBX0lOU1RBTExfRElSfS9pbnNwZWN0b3IiKQogc2V0KFdFQklOU1BFQ1RPUlVJX0RJUiAiJHtD
TUFLRV9TT1VSQ0VfRElSfS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkiKQpAQCAtMjgzLDQgKzI4NCw0
IEBAIGVuZGlmICgpCiAKIGlmIChFTkFCTEVfU1VCVExFX0NSWVBUTykKICAgICBmaW5kX3BhY2th
Z2UoR251VExTIDMuMC4wIFJFUVVJUkVEKQotZW5kaWYgKCkKXCBObyBuZXdsaW5lIGF0IGVuZCBv
ZiBmaWxlCitlbmRpZiAoKQpkaWZmIC0tZ2l0IGEvQ2hhbmdlTG9nIGIvQ2hhbmdlTG9nCmluZGV4
IGI0NjExY2NiYjJmYzVlZjExNTk4ZTJlMWQ3NThiY2MwZjZkYjg4MDEuLjljYmQ3YWJmZGJkOWRj
YzJiZGRkOGZkMTg0YjljNjEwMmFhMmE1ODkgMTAwNjQ0Ci0tLSBhL0NoYW5nZUxvZworKysgYi9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxNS0wMy0xNiAgUnl1YW4gQ2hvaSAgPHJ5dWFu
LmNob2lAbmF2ZXJjb3JwLmNvbT4KKworICAgICAgICBbRUZMXSBFeHBvc2UgSmF2YVNjcmlwdCBi
aW5kaW5nIGludGVyZmFjZSB0aHJvdWdoIGV3a19leHRlbnNpb24KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MjAzMworCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU291cmNlL2NtYWtlL09wdGlvbnNFZmwu
Y21ha2U6IEFkZGVkIEhFQURFUl9JTlNUQUxMX0RJUiB2YXJpYWJsZS4KKwogMjAxNS0wMy0xNiAg
R3l1eW91bmcgS2ltICA8Z3l1eW91bmcua2ltQHNhbXN1bmcuY29tPgogCiAgICAgICAgIFtDTWFr
ZV1bRUZMXSBSZWFycmFuZ2UgT3B0aW9uRUZMLmNtYWtlIHRvIGltcHJvdmUgcmVhZGFiaWxpdHkg
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>248834</attachid>
            <date>2015-03-17 02:46:49 -0700</date>
            <delta_ts>2015-03-17 03:33:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-142033-20150317184619.patch</filename>
            <type>text/plain</type>
            <size>29174</size>
            <attacher name="Ryuan Choi">ryuan.choi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgxNTk5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBj
MThlNDRjZDA3NTRhMTAwYTJlNmYyYzgxZTAxYjg1ZTkxNDc1NWE0Li42Mzc4Mzc0MDUwNmY4Zjgx
ODMzMmQ2YTRlZjQ2NDkyM2YwNzcwMjA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMiBAQAorMjAxNS0wMy0xNiAgUnl1YW4gQ2hvaSAgPHJ5dWFuLmNob2lAbmF2ZXJjb3Jw
LmNvbT4KKworICAgICAgICBbRUZMXSBFeHBvc2UgSmF2YVNjcmlwdCBiaW5kaW5nIGludGVyZmFj
ZSB0aHJvdWdoIGV3a19leHRlbnNpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE0MjAzMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogUGxhdGZvcm1FZmwuY21ha2U6IEluc3RhbGwgSmF2YXNjcmlwdCBB
UElzLgorCiAyMDE1LTAzLTE2ICBDc2FiYSBPc3p0cm9nb27DoWMgIDxvc3N5QHdlYmtpdC5vcmc+
CiAKICAgICAgICAgW0FSTV0gRW5hYmxlIGdlbmVyYXRpbmcgaWRpdiBpbnN0cnVjdGlvbnMgaWYg
aXQgaXMgc3VwcG9ydGVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNzYyYzA0NWM3ODM1NWU3MTc1NmQwMzc2YTBl
Y2Q5M2RhMTU5NjMzOS4uNGVkNmJhMGNhM2I4MGVlMWZjY2Y1Yzg3ZmY1MjllNWQ0ZGYxYzQ1ZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDE1LTAzLTE2ICBSeXVhbiBDaG9pICA8cnl1
YW4uY2hvaUBuYXZlcmNvcnAuY29tPgorCisgICAgICAgIFtFRkxdIEV4cG9zZSBKYXZhU2NyaXB0
IGJpbmRpbmcgaW50ZXJmYWNlIHRocm91Z2ggZXdrX2V4dGVuc2lvbgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQyMDMzCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBQbGF0Zm9ybUVmbC5jbWFrZToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy9leHRlbnNpb25zL2V4dGVuc2lvbl9zYW1w
bGUuY3BwOiBSZWdpc3RlcmVkIHRlc3Qgb2JqZWN0IGZvciBuZXcgdGVzdCBjYXNlLgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL3Rlc3RfZXdrMl9qYXZhc2NyaXB0X2JpbmRpbmcu
Y3BwOiBBZGRlZCBzaW1wbGUgYmluZGluZyBBUEkgdGVzdCBjYXNlLgorICAgICAgICAoRVdLMkNv
bnRleHRUZXN0V2l0aEV4dGVuc2lvbjo6bWVzc2FnZVJlY2VpdmVkQ2FsbGJhY2spOgorICAgICAg
ICAoRVdLMkNvbnRleHRUZXN0V2l0aEV4dGVuc2lvbjo6RVdLMkNvbnRleHRUZXN0V2l0aEV4dGVu
c2lvbik6CisgICAgICAgIChURVNUX0YpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL2VmbC9FV2ViS2l0X0V4dGVuc2lvbi5oOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL2VmbC9ld2tfZXh0ZW5zaW9uLmNwcDoKKyAgICAgICAgKEV3a0V4
dGVuc2lvbjo6ZGlkQ3JlYXRlUGFnZSk6CisgICAgICAgIChFd2tFeHRlbnNpb246OndpbGxEZXN0
cm95UGFnZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZWZsL2V3
a19leHRlbnNpb24uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9l
ZmwvZXdrX2V4dGVuc2lvbl9wcml2YXRlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvZWZsL2V3a19wYWdlLmNwcDogQWRkZWQuCisgICAgICAgICh0b0V3a1BhZ2Up
OgorICAgICAgICAoRXdrUGFnZTo6RXdrUGFnZSk6CisgICAgICAgIChFd2tQYWdlOjphcHBlbmQp
OgorICAgICAgICAoRXdrUGFnZTo6cmVtb3ZlKToKKyAgICAgICAgKEV3a1BhZ2U6OmRpZEZpbmlz
aERvY3VtZW50TG9hZEZvckZyYW1lKToKKyAgICAgICAgKGV3a19wYWdlX2pzX2dsb2JhbF9jb250
ZXh0X2dldCk6CisgICAgICAgIChld2tfcGFnZV9jbGllbnRfcmVnaXN0ZXIpOgorICAgICAgICAo
ZXdrX3BhZ2VfY2xpZW50X3VucmVnaXN0ZXIpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL2VmbC9ld2tfcGFnZS5oOiBBZGRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0FQSS9lZmwvZXdrX3BhZ2VfcHJpdmF0ZS5oOiBBZGRlZC4KKyAgICAg
ICAgKEV3a1BhZ2U6OnBhZ2UpOgorICAgICAgICAqIGVmbC9ld2Via2l0Mi1leHRlbnNpb24ucGMu
aW46CisKIDIwMTUtMDMtMTYgIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEBhcHBsZS5jb20+CiAK
ICAgICAgICAgQVNTRVJUKG1fcGx1Z2luKSBvbiBwbHVnaW5zL3NuYXBzaG90dGluZy9zbmFwc2hv
dC1wbHVnaW4tbm90LXF1aXRlLWJsb2NrZWQtYnktaW1hZ2UuaHRtbApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL1BsYXRmb3JtRWZsLmNtYWtlIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL1BsYXRmb3JtRWZsLmNtYWtlCmluZGV4IDQ0ZjI3Y2E4ZTJmMGE2NjY4NWEyYmVlNjgxYmI4
YTEzM2MyYWY0NTMuLjZjYzhjMGU2NDczZjY2NGRiZDRkNDQwOWE4YzkyYjIxMTI4YmI5YzggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9QbGF0Zm9ybUVmbC5jbWFrZQorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvUGxhdGZvcm1FZmwuY21ha2UKQEAgLTQsMyArNCwxMyBAQCBs
aXN0KEFQUEVORCBKYXZhU2NyaXB0Q29yZV9JTkNMVURFX0RJUkVDVE9SSUVTCiAgICAgJHtFT19J
TkNMVURFX0RJUlN9CiApCiBhZGRfZGVmaW5pdGlvbnMoLURTVEFUSUNBTExZX0xJTktFRF9XSVRI
X1dURikKKworaW5zdGFsbChGSUxFUyBBUEkvSmF2YVNjcmlwdC5oCisgICAgICAgICAgICAgIEFQ
SS9KU0Jhc2UuaAorICAgICAgICAgICAgICBBUEkvSlNDb250ZXh0UmVmLmgKKyAgICAgICAgICAg
ICAgQVBJL0pTT2JqZWN0UmVmLmgKKyAgICAgICAgICAgICAgQVBJL0pTU3RyaW5nUmVmLmgKKyAg
ICAgICAgICAgICAgQVBJL0pTVmFsdWVSZWYuaAorICAgICAgICAgICAgICBBUEkvV2ViS2l0QXZh
aWxhYmlsaXR5LmgKKyAgICAgICAgREVTVElOQVRJT04gIiR7SEVBREVSX0lOU1RBTExfRElSfS9K
YXZhU2NyaXB0Q29yZSIKKykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZs
LmNtYWtlIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UKaW5kZXggODA4NWYxOGEx
YWY1M2Q5MWU2MjFlNzlmZWFlNmZlNjgyOTRmOGExNC4uM2E0ZjVmNTEwMTNkZmZmNDhhNGI0ZmI4
ODUzMmRlM2FkNTM4NTMxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwu
Y21ha2UKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UKQEAgLTE3OSw2ICsx
NzksNyBAQCBsaXN0KEFQUEVORCBXZWJLaXQyX1NPVVJDRVMKICAgICBXZWJQcm9jZXNzL0Nvb2tp
ZXMvc291cC9XZWJLaXRTb3VwQ29va2llSmFyU3FsaXRlLmNwcAogCiAgICAgV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvZWZsL2V3a19leHRlbnNpb24uY3BwCisgICAgV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvZWZsL2V3a19wYWdlLmNwcAogCiAgICAgV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9lZmwvSW5qZWN0ZWRCdW5kbGVFZmwuY3BwCiAKQEAgLTQwNiwxMCArNDA3LDEx
IEBAIHNldChFV2ViS2l0Ml9IRUFERVJTCiBzZXQoRVdlYktpdDJfRXh0ZW5zaW9uX0hFQURFUlMK
ICAgICAiJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL2VmbC9FV2ViS2l0X0V4dGVuc2lvbi5oIgogICAgICIke0NNQUtFX0NVUlJFTlRfU09V
UkNFX0RJUn0vV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZWZsL2V3a19leHRlbnNpb24u
aCIKKyAgICAiJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL2VmbC9ld2tfcGFnZS5oIgogKQogCi1pbnN0YWxsKEZJTEVTICR7RVdlYktpdDJf
SEVBREVSU30gREVTVElOQVRJT04gaW5jbHVkZS8ke1dlYktpdDJfT1VUUFVUX05BTUV9LSR7UFJP
SkVDVF9WRVJTSU9OX01BSk9SfSkKLWluc3RhbGwoRklMRVMgJHtFV2ViS2l0Ml9FeHRlbnNpb25f
SEVBREVSU30gREVTVElOQVRJT04gaW5jbHVkZS8ke1dlYktpdDJfT1VUUFVUX05BTUV9LSR7UFJP
SkVDVF9WRVJTSU9OX01BSk9SfS9leHRlbnNpb24pCitpbnN0YWxsKEZJTEVTICR7RVdlYktpdDJf
SEVBREVSU30gREVTVElOQVRJT04gJHtIRUFERVJfSU5TVEFMTF9ESVJ9KQoraW5zdGFsbChGSUxF
UyAke0VXZWJLaXQyX0V4dGVuc2lvbl9IRUFERVJTfSBERVNUSU5BVElPTiAke0hFQURFUl9JTlNU
QUxMX0RJUn0vZXh0ZW5zaW9uKQogCiBpbnN0YWxsKEZJTEVTICR7Q01BS0VfQklOQVJZX0RJUn0v
V2ViS2l0Mi9lZmwvZXdlYmtpdDIucGMgREVTVElOQVRJT04gbGliL3BrZ2NvbmZpZykKIGluc3Rh
bGwoRklMRVMgJHtDTUFLRV9CSU5BUllfRElSfS9XZWJLaXQyL2VmbC9ld2Via2l0Mi1leHRlbnNp
b24ucGMgREVTVElOQVRJT04gbGliL3BrZ2NvbmZpZykKQEAgLTUxMCw2ICs1MTIsNyBAQCBzZXQo
RVdLMlVuaXRUZXN0c19CSU5BUklFUwogICAgIHRlc3RfZXdrMl9laW5hX3NoYXJlZF9zdHJpbmcK
ICAgICB0ZXN0X2V3azJfZmF2aWNvbl9kYXRhYmFzZQogICAgIHRlc3RfZXdrMl9maWxlX2Nob29z
ZXJfcmVxdWVzdAorICAgIHRlc3RfZXdrMl9qYXZhc2NyaXB0X2JpbmRpbmcKICAgICB0ZXN0X2V3
azJfb2JqZWN0CiAgICAgdGVzdF9ld2syX3BhZ2VfZ3JvdXAKICAgICB0ZXN0X2V3azJfcG9wdXBf
bWVudQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMv
ZXh0ZW5zaW9ucy9leHRlbnNpb25fc2FtcGxlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZWZsL3Rlc3RzL2V4dGVuc2lvbnMvZXh0ZW5zaW9uX3NhbXBsZS5jcHAKaW5kZXggMjk0
MTM0M2VjMmJmYjQwMjdlNDEyNmYyNjM5NGE3ZDJjZTEzZmE5ZC4uMjUwZTljNjA1MDc1OTg0ZWY3
MTZiZDhlNTljMjRmYzFkMTZkMGE3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9lZmwvdGVzdHMvZXh0ZW5zaW9ucy9leHRlbnNpb25fc2FtcGxlLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy9leHRlbnNpb25zL2V4dGVuc2lv
bl9zYW1wbGUuY3BwCkBAIC0yNCwxMSArMjQsNjMgQEAKICAqLwogCiAjaW5jbHVkZSAiRVdlYktp
dF9FeHRlbnNpb24uaCIKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Lmg+CiAK
ICNpZmRlZiBfX2NwbHVzcGx1cwogZXh0ZXJuICJDIiB7CiAjZW5kaWYKIAorc3RhdGljIEpTVmFs
dWVSZWYgaGVsbG9DYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVu
Y3Rpb24sIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25z
dCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCit7CisgICAg
RXdrX0V4dGVuc2lvbiogZXh0ZW5zaW9uID0gc3RhdGljX2Nhc3Q8RXdrX0V4dGVuc2lvbio+KEpT
T2JqZWN0R2V0UHJpdmF0ZSh0aGlzT2JqZWN0KSk7CisKKyAgICBFaW5hX1ZhbHVlKiB2YWx1ZSA9
IGVpbmFfdmFsdWVfbmV3KEVJTkFfVkFMVUVfVFlQRV9TVFJJTkcpOworICAgIGVpbmFfdmFsdWVf
c2V0KHZhbHVlLCAiSGVsbG8gZnJvbSBleHRlbnNpb24iKTsKKyAgICBld2tfZXh0ZW5zaW9uX21l
c3NhZ2VfcG9zdChleHRlbnNpb24sICJoZWxsbyIsIHZhbHVlKTsKKyAgICBlaW5hX3ZhbHVlX2Zy
ZWUodmFsdWUpOworCisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK3ZvaWQgbG9hZEZpbmlzaGVk
KEV3a19QYWdlKiBwYWdlLCB2b2lkKiBkYXRhKQoreworICAgIEpTR2xvYmFsQ29udGV4dFJlZiBq
c0NvbnRleHQgPSBld2tfcGFnZV9qc19nbG9iYWxfY29udGV4dF9nZXQocGFnZSk7CisgICAgSlNP
YmplY3RSZWYgd2luZG93T2JqZWN0ID0gSlNDb250ZXh0R2V0R2xvYmFsT2JqZWN0KGpzQ29udGV4
dCk7CisKKyAgICBzdGF0aWMgSlNTdGF0aWNGdW5jdGlvbiBmdW5jdGlvbnNbXSA9IHsKKyAgICAg
ICAgeyAiaGVsbG8iLCBoZWxsb0NhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5
IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCisgICAgICAgIHsgMCwgMCwgMCB9
CisgICAgfTsKKyAgICBzdGF0aWMgSlNDbGFzc0RlZmluaXRpb24gY2xhc3NfZGVmaW5pdGlvbiA9
IHsKKyAgICAgICAgMCwga0pTQ2xhc3NBdHRyaWJ1dGVOb25lLCAiVGVzdCIsIDAsIDAsIGZ1bmN0
aW9ucywKKyAgICAgICAgMCwgMC8qICovLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwCisgICAg
fTsKKyAgICBKU0NsYXNzUmVmIGNsYXN6ID0gSlNDbGFzc0NyZWF0ZSgmY2xhc3NfZGVmaW5pdGlv
bik7CisgICAgSlNPYmplY3RSZWYgb2JqZWN0ID0gSlNPYmplY3RNYWtlKGpzQ29udGV4dCwgY2xh
c3osIGRhdGEpOworICAgIEpTQ2xhc3NSZWxlYXNlKGNsYXN6KTsKKworICAgIEpTT2JqZWN0U2V0
UHJpdmF0ZShvYmplY3QsIGRhdGEpOworCisgICAgSlNWYWx1ZVJlZiBleGNlcHRpb24gPSAwOwor
ICAgIEpTU3RyaW5nUmVmIHByb3BlcnR5ID0gSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmco
InRlc3QiKTsKKyAgICBKU09iamVjdFNldFByb3BlcnR5KGpzQ29udGV4dCwgd2luZG93T2JqZWN0
LCBwcm9wZXJ0eSwgb2JqZWN0LCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJv
cGVydHlBdHRyaWJ1dGVEb250RGVsZXRlLCAmZXhjZXB0aW9uKTsKKyAgICBKU1N0cmluZ1JlbGVh
c2UocHJvcGVydHkpOworfQorCitzdGF0aWMgdm9pZCBwYWdlQWRkZWQoRXdrX1BhZ2UqIHBhZ2Us
IHZvaWQqIGRhdGEpCit7CisgICAgc3RhdGljIEV3a19QYWdlX0NsaWVudCBjbGllbnQ7CisgICAg
Y2xpZW50LnZlcnNpb24gPSAxOworICAgIGNsaWVudC5kYXRhID0gZGF0YTsKKyAgICBjbGllbnQu
bG9hZF9maW5pc2hlZCA9IGxvYWRGaW5pc2hlZDsKKworICAgIGV3a19wYWdlX2NsaWVudF9yZWdp
c3RlcihwYWdlLCAmY2xpZW50KTsKK30KKworc3RhdGljIHZvaWQgcGFnZURlbGV0ZShFd2tfUGFn
ZSogcGFnZSwgdm9pZCogZGF0YSkKK3sKK30KKwogc3RhdGljIHZvaWQgbWVzc2FnZVJlY2VpdmVk
KGNvbnN0IGNoYXIqIG5hbWUsIGNvbnN0IEVpbmFfVmFsdWUqIGJvZHksIHZvaWQqIGRhdGEpCiB7
CiAgICAgRWluYV9WYWx1ZSogdmFsdWUgPSBlaW5hX3ZhbHVlX25ldyhFSU5BX1ZBTFVFX1RZUEVf
U1RSSU5HKTsKQEAgLTQyLDYgKzk0LDggQEAgdm9pZCBld2tfZXh0ZW5zaW9uX2luaXQoRXdrX0V4
dGVuc2lvbiogZXh0ZW5zaW9uKQogICAgIHN0YXRpYyBFd2tFeHRlbnNpb25DbGllbnQgY2xpZW50
OwogICAgIGNsaWVudC52ZXJzaW9uID0gMTsKICAgICBjbGllbnQuZGF0YSA9ICh2b2lkICopZXh0
ZW5zaW9uOworICAgIGNsaWVudC5wYWdlX2FkZCA9IHBhZ2VBZGRlZDsKKyAgICBjbGllbnQucGFn
ZV9kZWwgPSBwYWdlRGVsZXRlOwogICAgIGNsaWVudC5tZXNzYWdlX3JlY2VpdmVkID0gbWVzc2Fn
ZVJlY2VpdmVkOwogCiAgICAgZXdrX2V4dGVuc2lvbl9jbGllbnRfYWRkKGV4dGVuc2lvbiwgJmNs
aWVudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0
cy90ZXN0X2V3azJfamF2YXNjcmlwdF9iaW5kaW5nLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZWZsL3Rlc3RzL3Rlc3RfZXdrMl9qYXZhc2NyaXB0X2JpbmRpbmcuY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjg0MmQwNzFlZjYyYWUwZDFhMDYzMDFjZTYyMTRjODVlMGZkZTIxNGQKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy90ZXN0X2V3
azJfamF2YXNjcmlwdF9iaW5kaW5nLmNwcApAQCAtMCwwICsxLDY4IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE1IFJ5dWFuIENob2kgPHJ5dWFuLmNob2lAZ21haWwuY29tPi4gIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgIkV3a1ZpZXcuaCIKKyNpbmNsdWRlICJV
bml0VGVzdFV0aWxzL0VXSzJVbml0VGVzdEJhc2UuaCIKKwordXNpbmcgbmFtZXNwYWNlIEVXSzJV
bml0VGVzdDsKKworZXh0ZXJuIEVXSzJVbml0VGVzdEVudmlyb25tZW50KiBlbnZpcm9ubWVudDsK
Kworc3RhdGljIGNvbnN0ZXhwciBkb3VibGUgdGVzdFRpbWVvdXRTZWNvbmRzID0gMi4wOworCitj
bGFzcyBFV0syQ29udGV4dFRlc3RXaXRoRXh0ZW5zaW9uIDogcHVibGljIEVXSzJVbml0VGVzdEJh
c2UgeworcHVibGljOgorICAgIHN0YXRpYyB2b2lkIG1lc3NhZ2VSZWNlaXZlZENhbGxiYWNrKGNv
bnN0IGNoYXIqIG5hbWUsIGNvbnN0IEVpbmFfVmFsdWUqIGJvZHksIHZvaWQqIHVzZXJEYXRhKQor
ICAgIHsKKyAgICAgICAgYm9vbCogaGFuZGxlZCA9IHN0YXRpY19jYXN0PGJvb2wqPih1c2VyRGF0
YSk7CisgICAgICAgIEFTU0VSVF9TVFJFUSgiaGVsbG8iLCBuYW1lKTsKKworICAgICAgICAqaGFu
ZGxlZCA9IHRydWU7CisgICAgfQorCitwcm90ZWN0ZWQ6CisgICAgRVdLMkNvbnRleHRUZXN0V2l0
aEV4dGVuc2lvbigpCisgICAgeworICAgICAgICBtX3dpdGhFeHRlbnNpb24gPSB0cnVlOworICAg
IH0KK307CisKK1RFU1RfRihFV0syQ29udGV4dFRlc3RXaXRoRXh0ZW5zaW9uLCBld2tfamF2YXNj
cmlwdF9iaW5kaW5nKQoreworICAgIGJvb2wgcmVjZWl2ZWQgPSBmYWxzZTsKKyAgICBFd2tfQ29u
dGV4dCogY29udGV4dCA9IGV3a192aWV3X2NvbnRleHRfZ2V0KHdlYlZpZXcoKSk7CisKKyAgICBl
d2tfY29udGV4dF9tZXNzYWdlX2Zyb21fZXh0ZW5zaW9uc19jYWxsYmFja19zZXQoY29udGV4dCwg
bWVzc2FnZVJlY2VpdmVkQ2FsbGJhY2ssICZyZWNlaXZlZCk7CisKKyAgICBld2tfdmlld191cmxf
c2V0KHdlYlZpZXcoKSwgZW52aXJvbm1lbnQtPmRlZmF1bHRUZXN0UGFnZVVybCgpKTsKKyAgICBB
U1NFUlRfVFJVRSh3YWl0VW50aWxMb2FkRmluaXNoZWQoKSk7CisKKyAgICBld2tfdmlld19zY3Jp
cHRfZXhlY3V0ZSh3ZWJWaWV3KCksICJ0ZXN0LmhlbGxvKCk7IiwgbnVsbHB0ciwgbnVsbHB0cik7
CisKKyAgICBBU1NFUlRfVFJVRSh3YWl0VW50aWxUcnVlKHJlY2VpdmVkLCB0ZXN0VGltZW91dFNl
Y29uZHMpKTsKK30KKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvZWZsL0VXZWJLaXRfRXh0ZW5zaW9uLmggYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9lZmwvRVdlYktpdF9FeHRlbnNpb24uaAppbmRl
eCA5MDYwMDFkYTcyMWUwMjYwMWY4MjljNTJhZjNmNzQ5MDUyOTJiYjkwLi4xNmUyMzlkZDk2OTA0
ZmQ2NDYyNzk1ZjUwYmVhZjJiNDBhYWNjMmM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9lZmwvRVdlYktpdF9FeHRlbnNpb24uaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9lZmwvRVdlYktp
dF9FeHRlbnNpb24uaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQg
Unl1YW4gQ2hvaSA8cnl1YW4uY2hvaUBnbWFpbC5jb20+LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxNC0yMDE1IFJ5dWFuIENob2kgPHJ5dWFuLmNob2lAZ21haWwu
Y29tPi4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTU3LDUgKzU3LDYgQEAKICNkZWZpbmUgRVdlYktpdF9FeHRlbnNpb25faAogCiAjaW5j
bHVkZSAiZXdrX2V4dGVuc2lvbi5oIgorI2luY2x1ZGUgImV3a19wYWdlLmgiCiAKICNlbmRpZiAv
LyBFV2ViS2l0X0V4dGVuc2lvbl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0FQSS9lZmwvZXdrX2V4dGVuc2lvbi5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9lZmwvZXdrX2V4dGVuc2lvbi5jcHAK
aW5kZXggMTZmMzQ0ZjM0ZGM2NjExNDY1MjkyZjMzZTE5MjUxYzhjZmI0OTkzYi4uMTNkMzRkOTI4
MDEyYzE3ODNhOTliOWE4ZjZmMDkyMTk5ZmU1NDk2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZWZsL2V3a19leHRlbnNpb24uY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2VmbC9ld2tf
ZXh0ZW5zaW9uLmNwcApAQCAtMzEsNyArMzEsOSBAQAogI2luY2x1ZGUgIldLQnVuZGxlLmgiCiAj
aW5jbHVkZSAiV0tCdW5kbGVBUElDYXN0LmgiCiAjaW5jbHVkZSAiV0tSZXRhaW5QdHIuaCIKKyNp
bmNsdWRlICJXZWJQYWdlLmgiCiAjaW5jbHVkZSAiZXdrX2V4dGVuc2lvbl9wcml2YXRlLmgiCisj
aW5jbHVkZSAiZXdrX3BhZ2VfcHJpdmF0ZS5oIgogI2luY2x1ZGUgPFdlYktpdC9XS1N0cmluZy5o
PgogI2luY2x1ZGUgPFdlYktpdC9XS1R5cGUuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5n
Lmg+CkBAIC03MCwxNCArNzIsMzAgQEAgdm9pZCBFd2tFeHRlbnNpb246OnJlbW92ZShFd2tfRXh0
ZW5zaW9uX0NsaWVudCogY2xpZW50KQogICAgIG1fY2xpZW50cy5yZW1vdmVGaXJzdChjbGllbnQp
OwogfQogCi12b2lkIEV3a0V4dGVuc2lvbjo6ZGlkQ3JlYXRlUGFnZShXS0J1bmRsZVJlZiwgV0tC
dW5kbGVQYWdlUmVmLCBjb25zdCB2b2lkKikKK3ZvaWQgRXdrRXh0ZW5zaW9uOjpkaWRDcmVhdGVQ
YWdlKFdLQnVuZGxlUmVmLCBXS0J1bmRsZVBhZ2VSZWYgd2tQYWdlLCBjb25zdCB2b2lkKiBjbGll
bnRJbmZvKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgRXdrRXh0ZW5zaW9uKiBzZWxm
ID0gdG9Fd2tFeHRlbmRpb24oY2xpZW50SW5mbyk7CisgICAgV2ViUGFnZSogcGFnZSA9IHRvSW1w
bCh3a1BhZ2UpOworCisgICAgYXV0byBld2tQYWdlID0gc3RkOjptYWtlX3VuaXF1ZTxFd2tQYWdl
PihwYWdlKTsKKyAgICBmb3IgKGF1dG8mIGl0IDogc2VsZi0+bV9jbGllbnRzKSB7CisgICAgICAg
IGlmIChpdC0+cGFnZV9hZGQpCisgICAgICAgICAgICBpdC0+cGFnZV9hZGQoZXdrUGFnZS5nZXQo
KSwgaXQtPmRhdGEpOworICAgIH0KKworICAgIHNlbGYtPm1fcGFnZU1hcC5hZGQocGFnZSwgV1RG
Ojptb3ZlKGV3a1BhZ2UpKTsKIH0KIAotdm9pZCBFd2tFeHRlbnNpb246OndpbGxEZXN0cm95UGFn
ZShXS0J1bmRsZVJlZiwgV0tCdW5kbGVQYWdlUmVmLCBjb25zdCB2b2lkKikKK3ZvaWQgRXdrRXh0
ZW5zaW9uOjp3aWxsRGVzdHJveVBhZ2UoV0tCdW5kbGVSZWYsIFdLQnVuZGxlUGFnZVJlZiB3a1Bh
Z2UsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAg
ICBFd2tFeHRlbnNpb24qIHNlbGYgPSB0b0V3a0V4dGVuZGlvbihjbGllbnRJbmZvKTsKKyAgICBX
ZWJQYWdlKiBwYWdlID0gdG9JbXBsKHdrUGFnZSk7CisKKyAgICBmb3IgKGF1dG8mIGl0IDogc2Vs
Zi0+bV9jbGllbnRzKSB7CisgICAgICAgIGlmIChpdC0+cGFnZV9kZWwpCisgICAgICAgICAgICBp
dC0+cGFnZV9kZWwoc2VsZi0+bV9wYWdlTWFwLmdldChwYWdlKSwgaXQtPmRhdGEpOworICAgIH0K
KyAgICBzZWxmLT5tX3BhZ2VNYXAucmVtb3ZlKHBhZ2UpOwogfQogCiB2b2lkIEV3a0V4dGVuc2lv
bjo6ZGlkUmVjZWl2ZU1lc3NhZ2UoV0tCdW5kbGVSZWYsIFdLU3RyaW5nUmVmIG1lc3NhZ2VOYW1l
LCBXS1R5cGVSZWYgbWVzc2FnZUJvZHksIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9lZmwvZXdr
X2V4dGVuc2lvbi5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvZWZsL2V3a19leHRlbnNpb24uaAppbmRleCA0ZmEzYWQxOGM5MmQyOWJiMjhiZTIxMTljNTJi
ODFmOWQ3YjI5NjIzLi5iZjFlZTg1Y2UxNGIxZmU1ZTZlMWIxNGExMjY4NGEzN2UyMjEyM2NkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9l
ZmwvZXdrX2V4dGVuc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL2VmbC9ld2tfZXh0ZW5zaW9uLmgKQEAgLTM4LDYgKzM4LDExIEBAIGV4dGVy
biAiQyIgewogI2VuZGlmCiAKIC8qKgorICogRGVjbGFyZSBFd2tfUGFnZS4KKyAqLwordHlwZWRl
ZiBzdHJ1Y3QgRXdrUGFnZSBFd2tfUGFnZTsKKworLyoqCiAgKiBEZWNsYXJlIEV3a19FeHRlbnNp
b24uCiAgKi8KIHR5cGVkZWYgc3RydWN0IEV3a0V4dGVuc2lvbiBFd2tfRXh0ZW5zaW9uOwpAQCAt
NTgsMTAgKzYzLDI3IEBAIHN0cnVjdCBFd2tFeHRlbnNpb25DbGllbnQgewogICAgIHZvaWQgKmRh
dGE7CiAKICAgICAvKioKKyAgICAgKiBDYWxsYmFja3MgdG8gcmVwb3J0IHBhZ2UgYWRkZWQuCisg
ICAgICoKKyAgICAgKiBAcGFyYW0gcGFnZSBwYWdlIHRvIGJlIGZpbmlzaGVkCisgICAgICogQHBh
cmFtIGRhdGEgZGF0YSBvZiBhIGV4dGVuc2lvbiBjbGllbnQKKyAgICAgKi8KKyAgICB2b2lkICgq
cGFnZV9hZGQpKEV3a19QYWdlKiBwYWdlLCB2b2lkICpkYXRhKTsKKworICAgIC8qKgorICAgICAq
IENhbGxiYWNrcyB0byByZXBvcnQgcGFnZSB3aWxsIGJlIHJlbW92ZWQuCisgICAgICoKKyAgICAg
KiBAcGFyYW0gcGFnZSBwYWdlIHRvIGJlIGZpbmlzaGVkCisgICAgICogQHBhcmFtIGRhdGEgZGF0
YSBvZiBhIGV4dGVuc2lvbiBjbGllbnQKKyAgICAgKi8KKyAgICB2b2lkICgqcGFnZV9kZWwpKEV3
a19QYWdlKiBwYWdlLCB2b2lkICpkYXRhKTsKKworICAgIC8qKgogICAgICAqIENhbGxiYWNrcyB0
byByZWNlaXZlIG1lc3NhZ2UgZnJvbSBld2tfY29udGV4dC4KICAgICAgKgogICAgICAqIEBwYXJh
bSBuYW1lIG5hbWUgb2YgbWVzc2FnZSBmcm9tIGV3a19jb250ZXh0CiAgICAgICogQHBhcmFtIGJv
ZHkgYm9keSBvZiBtZXNzYWdlIGZyb20gZXdrX2NvbnRleHQKKyAgICAgKiBAcGFyYW0gZGF0YSBk
YXRhIG9mIGEgZXh0ZW5zaW9uIGNsaWVudAogICAgICAqLwogICAgIHZvaWQgKCptZXNzYWdlX3Jl
Y2VpdmVkKShjb25zdCBjaGFyICpuYW1lLCBjb25zdCBFaW5hX1ZhbHVlICpib2R5LCB2b2lkICpk
YXRhKTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9lZmwvZXdrX2V4dGVuc2lvbl9wcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9lZmwvZXdrX2V4dGVuc2lvbl9wcml2YXRlLmgK
aW5kZXggZDQ3Mjc2OTQ2ZTM5ODU4MjEwY2M3MTk3YWI0ZmU5OTRhMGM1ZjA1Zi4uOGZmYWRkNTBk
NzE0NjRhZTliMDMwMWVhOTg2MzhlNjkyMjQzNGJmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZWZsL2V3a19leHRlbnNpb25fcHJpdmF0
ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2Vm
bC9ld2tfZXh0ZW5zaW9uX3ByaXZhdGUuaApAQCAtMjYsMTIgKzI2LDE2IEBACiAjaWZuZGVmIGV3
a19leHRlbnNpb25fcHJpdmF0ZV9oCiAjZGVmaW5lIGV3a19leHRlbnNpb25fcHJpdmF0ZV9oCiAK
KyNpbmNsdWRlICJld2tfcGFnZV9wcml2YXRlLmgiCiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgog
CiBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIEluamVjdGVkQnVuZGxlOworY2xhc3MgV2ViUGFn
ZTsKIH0KIAorY2xhc3MgRXdrUGFnZTsKKwogY2xhc3MgRXdrRXh0ZW5zaW9uIHsKIHB1YmxpYzoK
ICAgICBleHBsaWNpdCBFd2tFeHRlbnNpb24oV2ViS2l0OjpJbmplY3RlZEJ1bmRsZSopOwpAQCAt
NTEsNiArNTUsNyBAQCBwcml2YXRlOgogICAgIFdlYktpdDo6SW5qZWN0ZWRCdW5kbGUqIG1fYnVu
ZGxlOwogCiAgICAgVmVjdG9yPEV3a19FeHRlbnNpb25fQ2xpZW50Kj4gbV9jbGllbnRzOworICAg
IEhhc2hNYXA8V2ViS2l0OjpXZWJQYWdlKiwgc3RkOjp1bmlxdWVfcHRyPEV3a1BhZ2U+PiBtX3Bh
Z2VNYXA7CiB9OwogCiAjZW5kaWYgLy8gZXdrX2V4dGVuc2lvbl9wcml2YXRlX2gKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2VmbC9ld2tf
cGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9l
ZmwvZXdrX3BhZ2UuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYzODhkMDMyOWZjZjExNDI4YTQzZjZhMmVmZmQ2
MGE2Mjk0MmYzYmUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0FQSS9lZmwvZXdrX3BhZ2UuY3BwCkBAIC0wLDAgKzEsMTM3IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE1IFJ5dWFuIENob2kgPHJ5dWFuLmNob2lAZ21haWwuY29t
Pi4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJld2tfcGFnZS5oIgorCisjaW5jbHVkZSAiV0tCdW5kbGUuaCIKKyNpbmNsdWRl
ICJXS0J1bmRsZUFQSUNhc3QuaCIKKyNpbmNsdWRlICJXS0J1bmRsZUZyYW1lLmgiCisjaW5jbHVk
ZSAiV2ViRnJhbWUuaCIKKyNpbmNsdWRlICJXZWJQYWdlLmgiCisjaW5jbHVkZSAiZXdrX3BhZ2Vf
cHJpdmF0ZS5oIgorCit1c2luZyBuYW1lc3BhY2UgV2ViS2l0OworCitzdGF0aWMgaW5saW5lIEV3
a1BhZ2UqIHRvRXdrUGFnZShjb25zdCB2b2lkKiBjbGllbnRJbmZvKQoreworICAgIHJldHVybiBj
b25zdF9jYXN0PEV3a1BhZ2UqPihzdGF0aWNfY2FzdDxjb25zdCBFd2tQYWdlKj4oY2xpZW50SW5m
bykpOworfQorCitFd2tQYWdlOjpFd2tQYWdlKFdlYlBhZ2UqIHBhZ2UpCisgICAgOiBtX3BhZ2Uo
cGFnZSkKK3sKKyAgICBXS0J1bmRsZVBhZ2VMb2FkZXJDbGllbnRWNyBsb2FkZXJDbGllbnQgPSB7
CisgICAgICAgIHsKKyAgICAgICAgICAgIDcsIC8vIHZlcnNpb24KKyAgICAgICAgICAgIHRoaXMs
IC8vIGNsaWVudEluZm8KKyAgICAgICAgfSwKKyAgICAgICAgMCwgLy8gZGlkU3RhcnRQcm92aXNp
b25hbExvYWRGb3JGcmFtZSwKKyAgICAgICAgMCwgLy8gZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0
Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUsCisgICAgICAgIDAsIC8vIGRpZEZhaWxQcm92aXNp
b25hbExvYWRXaXRoRXJyb3JGb3JGcmFtZQorICAgICAgICAwLCAvLyBkaWRDb21taXRMb2FkRm9y
RnJhbWUKKyAgICAgICAgZGlkRmluaXNoRG9jdW1lbnRMb2FkRm9yRnJhbWUsCisgICAgICAgIDAs
IC8vIGRpZEZpbmlzaExvYWRGb3JGcmFtZQorICAgICAgICAwLCAvLyBkaWRGYWlsTG9hZFdpdGhF
cnJvckZvckZyYW1lCisgICAgICAgIDAsIC8vIGRpZFNhbWVEb2N1bWVudE5hdmlnYXRpb25Gb3JG
cmFtZSwKKyAgICAgICAgMCwgLy8gZGlkUmVjZWl2ZVRpdGxlRm9yRnJhbWUKKyAgICAgICAgMCwg
Ly8gZGlkRmlyc3RMYXlvdXRGb3JGcmFtZQorICAgICAgICAwLCAvLyBkaWRGaXJzdFZpc3VhbGx5
Tm9uRW1wdHlMYXlvdXRGb3JGcmFtZQorICAgICAgICAwLCAvLyBkaWRSZW1vdmVGcmFtZUZyb21I
aWVyYXJjaHkKKyAgICAgICAgMCwgLy8gZGlkRGlzcGxheUluc2VjdXJlQ29udGVudEZvckZyYW1l
CisgICAgICAgIDAsIC8vIGRpZFJ1bkluc2VjdXJlQ29udGVudEZvckZyYW1lCisgICAgICAgIDAs
IC8vIGRpZENsZWFyV2luZG93T2JqZWN0Rm9yRnJhbWUsCisgICAgICAgIDAsIC8vIGRpZENhbmNl
bENsaWVudFJlZGlyZWN0Rm9yRnJhbWUKKyAgICAgICAgMCwgLy8gd2lsbFBlcmZvcm1DbGllbnRS
ZWRpcmVjdEZvckZyYW1lCisgICAgICAgIDAsIC8vIGRpZEhhbmRsZU9ubG9hZEV2ZW50c0ZvckZy
YW1lCisgICAgICAgIDAsIC8vIGRpZExheW91dEZvckZyYW1lCisgICAgICAgIDAsIC8vIGRpZE5l
d0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dAorICAgICAgICAwLCAvLyBkaWREZXRlY3RYU1NG
b3JGcmFtZQorICAgICAgICAwLCAvLyBzaG91bGRHb1RvQmFja0ZvcndhcmRMaXN0SXRlbQorICAg
ICAgICAwLCAvLyBnbG9iYWxPYmplY3RJc0F2YWlsYWJsZUZvckZyYW1lCisgICAgICAgIDAsIC8v
IHdpbGxEaXNjb25uZWN0RE9NV2luZG93RXh0ZW5zaW9uRnJvbUdsb2JhbE9iamVjdAorICAgICAg
ICAwLCAvLyBkaWRSZWNvbm5lY3RET01XaW5kb3dFeHRlbnNpb25Ub0dsb2JhbE9iamVjdAorICAg
ICAgICAwLCAvLyB3aWxsRGVzdHJveUdsb2JhbE9iamVjdEZvckRPTVdpbmRvd0V4dGVuc2lvbgor
ICAgICAgICAwLCAvLyBkaWRGaW5pc2hQcm9ncmVzcworICAgICAgICAwLCAvLyBzaG91bGRGb3Jj
ZVVuaXZlcnNhbEFjY2Vzc0Zyb21Mb2NhbFVSTAorICAgICAgICAwLCAvLyBkaWRSZWNlaXZlSW50
ZW50Rm9yRnJhbWVfdW5hdmFpbGFibGUKKyAgICAgICAgMCwgLy8gcmVnaXN0ZXJJbnRlbnRTZXJ2
aWNlRm9yRnJhbWVfdW5hdmFpbGFibGUKKyAgICAgICAgMCwgLy8gZGlkTGF5b3V0CisgICAgICAg
IDAsIC8vIGZlYXR1cmVzVXNlZEluUGFnZQorICAgICAgICAwLCAvLyB3aWxsTG9hZFVSTFJlcXVl
c3QKKyAgICAgICAgMCwgLy8gd2lsbExvYWREYXRhUmVxdWVzdAorICAgICAgICAwIC8vIHdpbGxE
ZXN0cm95RnJhbWUKKyAgICB9OworICAgIFdLQnVuZGxlUGFnZVNldFBhZ2VMb2FkZXJDbGllbnQo
dG9BUEkocGFnZSksICZsb2FkZXJDbGllbnQuYmFzZSk7Cit9CisKK3ZvaWQgRXdrUGFnZTo6YXBw
ZW5kKGNvbnN0IEV3a19QYWdlX0NsaWVudCogY2xpZW50KQoreworICAgIG1fY2xpZW50cy5hcHBl
bmQoY2xpZW50KTsKK30KKwordm9pZCBFd2tQYWdlOjpyZW1vdmUoY29uc3QgRXdrX1BhZ2VfQ2xp
ZW50KiBjbGllbnQpCit7CisgICAgbV9jbGllbnRzLnJlbW92ZShtX2NsaWVudHMuZmluZChjbGll
bnQpKTsKK30KKwordm9pZCBFd2tQYWdlOjpkaWRGaW5pc2hEb2N1bWVudExvYWRGb3JGcmFtZShX
S0J1bmRsZVBhZ2VSZWYsIFdLQnVuZGxlRnJhbWVSZWYgZnJhbWUsIFdLVHlwZVJlZiosIGNvbnN0
IHZvaWQqIGNsaWVudEluZm8pCit7CisgICAgaWYgKCFXS0J1bmRsZUZyYW1lSXNNYWluRnJhbWUo
ZnJhbWUpKQorICAgICAgICByZXR1cm47CisKKyAgICBFd2tQYWdlKiBzZWxmID0gdG9Fd2tQYWdl
KGNsaWVudEluZm8pOworICAgIGZvciAoYXV0byYgaXQgOiBzZWxmLT5tX2NsaWVudHMpIHsKKyAg
ICAgICAgaWYgKGl0LT5sb2FkX2ZpbmlzaGVkKQorICAgICAgICAgICAgaXQtPmxvYWRfZmluaXNo
ZWQoc2VsZiwgaXQtPmRhdGEpOworICAgIH0KK30KKworSlNHbG9iYWxDb250ZXh0UmVmIGV3a19w
YWdlX2pzX2dsb2JhbF9jb250ZXh0X2dldChjb25zdCBFd2tfUGFnZSogZXdrUGFnZSkKK3sKKyAg
ICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoZXdrUGFnZSwgbnVsbHB0cik7CisKKyAg
ICBXZWJGcmFtZSogY29yZUZyYW1lID0gZXdrUGFnZS0+cGFnZSgpLT5tYWluV2ViRnJhbWUoKTsK
KyAgICBpZiAoIWNvcmVGcmFtZSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICByZXR1
cm4gY29yZUZyYW1lLT5qc0NvbnRleHQoKTsKK30KKwordm9pZCBld2tfcGFnZV9jbGllbnRfcmVn
aXN0ZXIoRXdrX1BhZ2UqIGV3a1BhZ2UsIGNvbnN0IEV3a19QYWdlX0NsaWVudCogY2xpZW50KQor
eworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKGV3a1BhZ2UpOworICAgIEVJTkFfU0FG
RVRZX09OX05VTExfUkVUVVJOKGNsaWVudCk7CisKKyAgICBld2tQYWdlLT5hcHBlbmQoY2xpZW50
KTsKK30KKwordm9pZCBld2tfcGFnZV9jbGllbnRfdW5yZWdpc3RlcihFd2tfUGFnZSogZXdrUGFn
ZSwgY29uc3QgRXdrX1BhZ2VfQ2xpZW50KiBjbGllbnQpCit7CisgICAgRUlOQV9TQUZFVFlfT05f
TlVMTF9SRVRVUk4oZXdrUGFnZSk7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oY2xp
ZW50KTsKKworICAgIGV3a1BhZ2UtPnJlbW92ZShjbGllbnQpOworfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZWZsL2V3a19wYWdlLmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9lZmwvZXdrX3Bh
Z2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5hODljN2QwNjRkY2M5MjU0MzY1ZGE1OGYwZDUyNDdlYWFhZjc4Y2I5
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvZWZsL2V3a19wYWdlLmgKQEAgLTAsMCArMSw5MyBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxNSBSeXVhbiBDaG9pIDxyeXVhbi5jaG9pQGdtYWlsLmNvbT4uICBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisvKioKKyAqIEBmaWxlICAgIGV3a19wYWdlLmgKKyAqIEBi
cmllZiAgIERlc2NyaWJlcyB0aGUgRXdrX1BhZ2UgQVBJLgorICovCisKKyNpZm5kZWYgZXdrX3Bh
Z2VfaAorI2RlZmluZSBld2tfcGFnZV9oCisKKyNpbmNsdWRlIDxFaW5hLmg+CisjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvSlNCYXNlLmg+CisKK3R5cGVkZWYgc3RydWN0IEV3a1BhZ2UgRXdrX1Bh
Z2U7CisKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7CisjZW5kaWYKKworc3RydWN0
IEV3a1BhZ2VDbGllbnQgeworICAgIGludCB2ZXJzaW9uOworICAgIHZvaWQgKmRhdGE7CisKKyAg
ICAvKioKKyAgICAgKiBDYWxsYmFja3MgdG8gcmVwb3J0IGxvYWQgZmluaXNoZWQuCisgICAgICoK
KyAgICAgKiBAcGFyYW0gcGFnZSBwYWdlIHRvIGJlIGZpbmlzaGVkCisgICAgICogQHBhcmFtIGRh
dGEgZGF0YSBvZiBhIHBhZ2UgY2xpZW50CisgICAgICovCisgICAgdm9pZCAoKmxvYWRfZmluaXNo
ZWQpKEV3a19QYWdlICpwYWdlLCB2b2lkICpkYXRhKTsKK307Cit0eXBlZGVmIHN0cnVjdCBFd2tQ
YWdlQ2xpZW50IEV3a19QYWdlX0NsaWVudDsKKworLyoqCisgKiBHZXRzIGEgZ2xvYmFsIEphdmFT
Y3JpcHQgZXhlY3V0aW9uIGNvbnRleHQgZm9yIHRoZSBwYWdlLgorICoKKyAqIEBwYXJhbSBwYWdl
IHBhZ2UgdG8gZ2V0IGEgZ2xvYmFsIEphdmFTY3JpcHQgZXhlY3V0aW9uIGNvbnRleHQKKyAqCisg
KiBUaGlzIGZ1bmN0aW9uIHJldHVybiBnbG9iYWwgSmF2YVNjcmlwdCBleGVjdXRpb24gY29udGV4
dCB0byBleHRlbmQgamF2YXNjcmlwdCBmdW5jdGlvbmFsaXR5LgorICovCitFQVBJIEpTR2xvYmFs
Q29udGV4dFJlZiBld2tfcGFnZV9qc19nbG9iYWxfY29udGV4dF9nZXQoY29uc3QgRXdrX1BhZ2Ug
KnBhZ2UpOworCisvKioKKyAqIFJlZ2lzdGVyIGEgcGFnZSBjbGllbnQgd2hpY2ggY29udGFpbnMg
c2V2ZXJhbCBjYWxsYmFja3MgdG8gdGhlIHBhZ2UKKyAqCisgKiBAcGFyYW0gcGFnZSBwYWdlIHRv
IGF0dGFjaCBwYWdlIGNsaWVudAorICogQHBhcmFtIGNsaWVudCBwYWdlIGNsaWVudCB0byBhZGQg
dG8gdGhlIHBhZ2UKKyAqCisgKiBUaGlzIGZ1bmN0aW9uIHJlZ2lzdGVycyBhIGNsaWVudCwgd2hp
Y2ggY29udGFpbnMgc2V2ZXJhbCBjYWxsYmFja3MgcmVjZWl2aW5nIGV2ZW50cworICogZnJvbSBX
ZWJQcm9jZXNzIHNpZGUsIHRvIGEgQHAgcGFnZS4KKyAqCisgKiBAc2VlIGV3a19wYWdlX2NsaWVu
dF91bnJlZ2lzdGVyCisgKi8KK0VBUEkgdm9pZCBld2tfcGFnZV9jbGllbnRfcmVnaXN0ZXIoRXdr
X1BhZ2UgKnBhZ2UsIGNvbnN0IEV3a19QYWdlX0NsaWVudCAqY2xpZW50KTsKKworLyoqCisgKiBV
bnJlZ2lzdGVyIGEgY2xpZW50IGZyb20gdGhlIHBhZ2UuCisgKgorICogQHBhcmFtIHBhZ2UgcGFn
ZSB0byB1bnJlZ2lzdGVyIGNsaWVudAorICogQHBhcmFtIGNsaWVudCBwYWdlIGNsaWVudCB3aGlj
aCBjb250YWlucyB2ZXJzaW9uLCBkYXRhIGFuZCBjYWxsYmFja3MKKyAqCisgKiBAc2VlIGV3a19w
YWdlX2NsaWVudF9yZWdpc3RlcgorICovCitFQVBJIHZvaWQgZXdrX3BhZ2VfY2xpZW50X3VucmVn
aXN0ZXIoRXdrX1BhZ2UgKnBhZ2UsIGNvbnN0IEV3a19QYWdlX0NsaWVudCAqY2xpZW50KTsKKwor
I2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYKKworI2VuZGlmIC8vIGV3a19wYWdlX2gKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2Vm
bC9ld2tfcGFnZV9wcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9lZmwvZXdrX3BhZ2VfcHJpdmF0ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFhNmFlOTFkYzY5
ZTM1NjJlMDNiNDM0MzExY2RmOTQwNWMyYjAzNmUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9lZmwvZXdrX3BhZ2VfcHJpdmF0
ZS5oCkBAIC0wLDAgKzEsNTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgUnl1YW4gQ2hv
aSA8cnl1YW4uY2hvaUBnbWFpbC5jb20+LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2lmbmRlZiBld2tfcGFnZV9wcml2YXRlX2gKKyNkZWZpbmUgZXdrX3BhZ2VfcHJpdmF0ZV9o
CisKK3R5cGVkZWYgc3RydWN0IEV3a1BhZ2VDbGllbnQgRXdrX1BhZ2VfQ2xpZW50OworCituYW1l
c3BhY2UgV2ViS2l0IHsKK2NsYXNzIFdlYlBhZ2U7Cit9CisKK2NsYXNzIEV3a1BhZ2UgeworcHVi
bGljOgorICAgIGV4cGxpY2l0IEV3a1BhZ2UoV2ViS2l0OjpXZWJQYWdlKik7CisKKyAgICBXZWJL
aXQ6OldlYlBhZ2UqIHBhZ2UoKSBjb25zdCB7IHJldHVybiBtX3BhZ2U7IH0KKworICAgIHZvaWQg
YXBwZW5kKGNvbnN0IEV3a19QYWdlX0NsaWVudCopOworICAgIHZvaWQgcmVtb3ZlKGNvbnN0IEV3
a19QYWdlX0NsaWVudCopOworCitwcml2YXRlOgorICAgIHN0YXRpYyB2b2lkIGRpZEZpbmlzaERv
Y3VtZW50TG9hZEZvckZyYW1lKFdLQnVuZGxlUGFnZVJlZiwgV0tCdW5kbGVGcmFtZVJlZiwgV0tU
eXBlUmVmKiwgY29uc3Qgdm9pZCAqKTsKKworICAgIFdlYktpdDo6V2ViUGFnZSogbV9wYWdlOwor
ICAgIFZlY3Rvcjxjb25zdCBFd2tfUGFnZV9DbGllbnQqPiBtX2NsaWVudHM7Cit9OworCisjZW5k
aWYgLy8gZXdrX3BhZ2VfcHJpdmF0ZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9lZmwv
ZXdlYmtpdDItZXh0ZW5zaW9uLnBjLmluIGIvU291cmNlL1dlYktpdDIvZWZsL2V3ZWJraXQyLWV4
dGVuc2lvbi5wYy5pbgppbmRleCAyNjE2Y2RjMmY5Mzk1ZWJlNzI5NmQwNTQ4ZmVjODAxZmM1MWU4
M2M0Li42OWUzYjgzOTcyYWRmMjU3MDM2NTEyY2ZiZmY2ZjAyNzBjZWNkYjI0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9lZmwvZXdlYmtpdDItZXh0ZW5zaW9uLnBjLmluCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL2VmbC9ld2Via2l0Mi1leHRlbnNpb24ucGMuaW4KQEAgLTUsNCArNSw0IEBAIE5h
bWU6IGV3ZWJraXQyLWV4dGVuc2lvbgogRGVzY3JpcHRpb246IEV4dGVuc2lvbiBmb3IgV2ViS2l0
Mi9FRkwoZXdlYmtpdDIpCiBWZXJzaW9uOiBAUFJPSkVDVF9WRVJTSU9OQAogUmVxdWlyZXM6IGVp
bmEKLUNmbGFnczogLUkke2luY2x1ZGVkaXJ9L0BXZWJLaXQyX09VVFBVVF9OQU1FQC1AUFJPSkVD
VF9WRVJTSU9OX01BSk9SQC9leHRlbnNpb24KK0NmbGFnczogLUkke2luY2x1ZGVkaXJ9L0BXZWJL
aXQyX09VVFBVVF9OQU1FQC1AUFJPSkVDVF9WRVJTSU9OX01BSk9SQC9leHRlbnNpb24gLUkke2lu
Y2x1ZGVkaXJ9L0BXZWJLaXQyX09VVFBVVF9OQU1FQC1AUFJPSkVDVF9WRVJTSU9OX01BSk9SQApk
aWZmIC0tZ2l0IGEvU291cmNlL2NtYWtlL09wdGlvbnNFZmwuY21ha2UgYi9Tb3VyY2UvY21ha2Uv
T3B0aW9uc0VmbC5jbWFrZQppbmRleCA0M2M2ZDg4ZDE1Nzc0ZjBlNWVkNzlmNDBiN2U2YWI5ZGU1
ODhkYmYwLi45YmU2MDcxOTNiZTYxM2I2YjVkZmE0MjEwZGNlM2EyODZhNDYxNzY2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvY21ha2UvT3B0aW9uc0VmbC5jbWFrZQorKysgYi9Tb3VyY2UvY21ha2UvT3B0
aW9uc0VmbC5jbWFrZQpAQCAtMjMsNiArMjMsNyBAQCBzZXQoV2ViS2l0Ml9PVVRQVVRfTkFNRSBl
d2Via2l0MikKIHNldChDUEFDS19TT1VSQ0VfR0VORVJBVE9SIFRCWjIpCiBzZXQoR0xJQl9DT01Q
T05FTlRTIGdpbyBnb2JqZWN0IGd0aHJlYWQpCiBzZXQoREFUQV9JTlNUQUxMX0RJUiAic2hhcmUv
JHtXZWJLaXQyX09VVFBVVF9OQU1FfS0ke1BST0pFQ1RfVkVSU0lPTl9NQUpPUn0iIENBQ0hFIFBB
VEggIkluc3RhbGxhdGlvbiBwYXRoIGZvciB0aGVtZSBkYXRhIikKK3NldChIRUFERVJfSU5TVEFM
TF9ESVIgImluY2x1ZGUvJHtXZWJLaXQyX09VVFBVVF9OQU1FfS0ke1BST0pFQ1RfVkVSU0lPTl9N
QUpPUn0iIENBQ0hFIFBBVEggIkluc3RhbGxhdGlvbiBwYXRoIGZvciBoZWFkZXIgZmlsZXMiKQog
c2V0KFRIRU1FX0JJTkFSWV9ESVIgJHtDTUFLRV9CSU5BUllfRElSfS9XZWJDb3JlL3BsYXRmb3Jt
L2VmbC9EZWZhdWx0VGhlbWUpCiBzZXQoV0VCX0lOU1BFQ1RPUl9ESVIgIiR7REFUQV9JTlNUQUxM
X0RJUn0vaW5zcGVjdG9yIikKIHNldChXRUJJTlNQRUNUT1JVSV9ESVIgIiR7Q01BS0VfU09VUkNF
X0RJUn0vU291cmNlL1dlYkluc3BlY3RvclVJIikKQEAgLTI4Myw0ICsyODQsNCBAQCBlbmRpZiAo
KQogCiBpZiAoRU5BQkxFX1NVQlRMRV9DUllQVE8pCiAgICAgZmluZF9wYWNrYWdlKEdudVRMUyAz
LjAuMCBSRVFVSVJFRCkKLWVuZGlmICgpClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorZW5k
aWYgKCkKZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCBiNDYxMWNjYmIy
ZmM1ZWYxMTU5OGUyZTFkNzU4YmNjMGY2ZGI4ODAxLi45Y2JkN2FiZmRiZDlkY2MyYmRkZDhmZDE4
NGI5YzYxMDJhYTJhNTg5IDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTIgQEAKKzIwMTUtMDMtMTYgIFJ5dWFuIENob2kgIDxyeXVhbi5jaG9pQG5hdmVy
Y29ycC5jb20+CisKKyAgICAgICAgW0VGTF0gRXhwb3NlIEphdmFTY3JpcHQgYmluZGluZyBpbnRl
cmZhY2UgdGhyb3VnaCBld2tfZXh0ZW5zaW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNDIwMzMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIFNvdXJjZS9jbWFrZS9PcHRpb25zRWZsLmNtYWtlOiBBZGRl
ZCBIRUFERVJfSU5TVEFMTF9ESVIgdmFyaWFibGUuCisKIDIwMTUtMDMtMTYgIEd5dXlvdW5nIEtp
bSAgPGd5dXlvdW5nLmtpbUBzYW1zdW5nLmNvbT4KIAogICAgICAgICBbQ01ha2VdW0VGTF0gUmVh
cnJhbmdlIE9wdGlvbkVGTC5jbWFrZSB0byBpbXByb3ZlIHJlYWRhYmlsaXR5IAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>248842</attachid>
            <date>2015-03-17 03:33:44 -0700</date>
            <delta_ts>2015-03-17 04:37:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-142033-20150317193313.patch</filename>
            <type>text/plain</type>
            <size>29079</size>
            <attacher name="Ryuan Choi">ryuan.choi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgxNTk5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBj
MThlNDRjZDA3NTRhMTAwYTJlNmYyYzgxZTAxYjg1ZTkxNDc1NWE0Li42Mzc4Mzc0MDUwNmY4Zjgx
ODMzMmQ2YTRlZjQ2NDkyM2YwNzcwMjA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMiBAQAorMjAxNS0wMy0xNiAgUnl1YW4gQ2hvaSAgPHJ5dWFuLmNob2lAbmF2ZXJjb3Jw
LmNvbT4KKworICAgICAgICBbRUZMXSBFeHBvc2UgSmF2YVNjcmlwdCBiaW5kaW5nIGludGVyZmFj
ZSB0aHJvdWdoIGV3a19leHRlbnNpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE0MjAzMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogUGxhdGZvcm1FZmwuY21ha2U6IEluc3RhbGwgSmF2YXNjcmlwdCBB
UElzLgorCiAyMDE1LTAzLTE2ICBDc2FiYSBPc3p0cm9nb27DoWMgIDxvc3N5QHdlYmtpdC5vcmc+
CiAKICAgICAgICAgW0FSTV0gRW5hYmxlIGdlbmVyYXRpbmcgaWRpdiBpbnN0cnVjdGlvbnMgaWYg
aXQgaXMgc3VwcG9ydGVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNzYyYzA0NWM3ODM1NWU3MTc1NmQwMzc2YTBl
Y2Q5M2RhMTU5NjMzOS4uNGVkNmJhMGNhM2I4MGVlMWZjY2Y1Yzg3ZmY1MjllNWQ0ZGYxYzQ1ZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDE1LTAzLTE2ICBSeXVhbiBDaG9pICA8cnl1
YW4uY2hvaUBuYXZlcmNvcnAuY29tPgorCisgICAgICAgIFtFRkxdIEV4cG9zZSBKYXZhU2NyaXB0
IGJpbmRpbmcgaW50ZXJmYWNlIHRocm91Z2ggZXdrX2V4dGVuc2lvbgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQyMDMzCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBQbGF0Zm9ybUVmbC5jbWFrZToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy9leHRlbnNpb25zL2V4dGVuc2lvbl9zYW1w
bGUuY3BwOiBSZWdpc3RlcmVkIHRlc3Qgb2JqZWN0IGZvciBuZXcgdGVzdCBjYXNlLgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL3Rlc3RfZXdrMl9qYXZhc2NyaXB0X2JpbmRpbmcu
Y3BwOiBBZGRlZCBzaW1wbGUgYmluZGluZyBBUEkgdGVzdCBjYXNlLgorICAgICAgICAoRVdLMkNv
bnRleHRUZXN0V2l0aEV4dGVuc2lvbjo6bWVzc2FnZVJlY2VpdmVkQ2FsbGJhY2spOgorICAgICAg
ICAoRVdLMkNvbnRleHRUZXN0V2l0aEV4dGVuc2lvbjo6RVdLMkNvbnRleHRUZXN0V2l0aEV4dGVu
c2lvbik6CisgICAgICAgIChURVNUX0YpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL2VmbC9FV2ViS2l0X0V4dGVuc2lvbi5oOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL2VmbC9ld2tfZXh0ZW5zaW9uLmNwcDoKKyAgICAgICAgKEV3a0V4
dGVuc2lvbjo6ZGlkQ3JlYXRlUGFnZSk6CisgICAgICAgIChFd2tFeHRlbnNpb246OndpbGxEZXN0
cm95UGFnZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZWZsL2V3
a19leHRlbnNpb24uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9l
ZmwvZXdrX2V4dGVuc2lvbl9wcml2YXRlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvZWZsL2V3a19wYWdlLmNwcDogQWRkZWQuCisgICAgICAgICh0b0V3a1BhZ2Up
OgorICAgICAgICAoRXdrUGFnZTo6RXdrUGFnZSk6CisgICAgICAgIChFd2tQYWdlOjphcHBlbmQp
OgorICAgICAgICAoRXdrUGFnZTo6cmVtb3ZlKToKKyAgICAgICAgKEV3a1BhZ2U6OmRpZEZpbmlz
aERvY3VtZW50TG9hZEZvckZyYW1lKToKKyAgICAgICAgKGV3a19wYWdlX2pzX2dsb2JhbF9jb250
ZXh0X2dldCk6CisgICAgICAgIChld2tfcGFnZV9jbGllbnRfcmVnaXN0ZXIpOgorICAgICAgICAo
ZXdrX3BhZ2VfY2xpZW50X3VucmVnaXN0ZXIpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL2VmbC9ld2tfcGFnZS5oOiBBZGRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0FQSS9lZmwvZXdrX3BhZ2VfcHJpdmF0ZS5oOiBBZGRlZC4KKyAgICAg
ICAgKEV3a1BhZ2U6OnBhZ2UpOgorICAgICAgICAqIGVmbC9ld2Via2l0Mi1leHRlbnNpb24ucGMu
aW46CisKIDIwMTUtMDMtMTYgIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEBhcHBsZS5jb20+CiAK
ICAgICAgICAgQVNTRVJUKG1fcGx1Z2luKSBvbiBwbHVnaW5zL3NuYXBzaG90dGluZy9zbmFwc2hv
dC1wbHVnaW4tbm90LXF1aXRlLWJsb2NrZWQtYnktaW1hZ2UuaHRtbApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL1BsYXRmb3JtRWZsLmNtYWtlIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL1BsYXRmb3JtRWZsLmNtYWtlCmluZGV4IDQ0ZjI3Y2E4ZTJmMGE2NjY4NWEyYmVlNjgxYmI4
YTEzM2MyYWY0NTMuLjZjYzhjMGU2NDczZjY2NGRiZDRkNDQwOWE4YzkyYjIxMTI4YmI5YzggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9QbGF0Zm9ybUVmbC5jbWFrZQorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvUGxhdGZvcm1FZmwuY21ha2UKQEAgLTQsMyArNCwxMyBAQCBs
aXN0KEFQUEVORCBKYXZhU2NyaXB0Q29yZV9JTkNMVURFX0RJUkVDVE9SSUVTCiAgICAgJHtFT19J
TkNMVURFX0RJUlN9CiApCiBhZGRfZGVmaW5pdGlvbnMoLURTVEFUSUNBTExZX0xJTktFRF9XSVRI
X1dURikKKworaW5zdGFsbChGSUxFUyBBUEkvSmF2YVNjcmlwdC5oCisgICAgICAgICAgICAgIEFQ
SS9KU0Jhc2UuaAorICAgICAgICAgICAgICBBUEkvSlNDb250ZXh0UmVmLmgKKyAgICAgICAgICAg
ICAgQVBJL0pTT2JqZWN0UmVmLmgKKyAgICAgICAgICAgICAgQVBJL0pTU3RyaW5nUmVmLmgKKyAg
ICAgICAgICAgICAgQVBJL0pTVmFsdWVSZWYuaAorICAgICAgICAgICAgICBBUEkvV2ViS2l0QXZh
aWxhYmlsaXR5LmgKKyAgICAgICAgREVTVElOQVRJT04gIiR7SEVBREVSX0lOU1RBTExfRElSfS9K
YXZhU2NyaXB0Q29yZSIKKykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZs
LmNtYWtlIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UKaW5kZXggODA4NWYxOGEx
YWY1M2Q5MWU2MjFlNzlmZWFlNmZlNjgyOTRmOGExNC4uM2E0ZjVmNTEwMTNkZmZmNDhhNGI0ZmI4
ODUzMmRlM2FkNTM4NTMxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwu
Y21ha2UKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UKQEAgLTE3OSw2ICsx
NzksNyBAQCBsaXN0KEFQUEVORCBXZWJLaXQyX1NPVVJDRVMKICAgICBXZWJQcm9jZXNzL0Nvb2tp
ZXMvc291cC9XZWJLaXRTb3VwQ29va2llSmFyU3FsaXRlLmNwcAogCiAgICAgV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvZWZsL2V3a19leHRlbnNpb24uY3BwCisgICAgV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvZWZsL2V3a19wYWdlLmNwcAogCiAgICAgV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9lZmwvSW5qZWN0ZWRCdW5kbGVFZmwuY3BwCiAKQEAgLTQwNiwxMCArNDA3LDEx
IEBAIHNldChFV2ViS2l0Ml9IRUFERVJTCiBzZXQoRVdlYktpdDJfRXh0ZW5zaW9uX0hFQURFUlMK
ICAgICAiJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL2VmbC9FV2ViS2l0X0V4dGVuc2lvbi5oIgogICAgICIke0NNQUtFX0NVUlJFTlRfU09V
UkNFX0RJUn0vV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZWZsL2V3a19leHRlbnNpb24u
aCIKKyAgICAiJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL2VmbC9ld2tfcGFnZS5oIgogKQogCi1pbnN0YWxsKEZJTEVTICR7RVdlYktpdDJf
SEVBREVSU30gREVTVElOQVRJT04gaW5jbHVkZS8ke1dlYktpdDJfT1VUUFVUX05BTUV9LSR7UFJP
SkVDVF9WRVJTSU9OX01BSk9SfSkKLWluc3RhbGwoRklMRVMgJHtFV2ViS2l0Ml9FeHRlbnNpb25f
SEVBREVSU30gREVTVElOQVRJT04gaW5jbHVkZS8ke1dlYktpdDJfT1VUUFVUX05BTUV9LSR7UFJP
SkVDVF9WRVJTSU9OX01BSk9SfS9leHRlbnNpb24pCitpbnN0YWxsKEZJTEVTICR7RVdlYktpdDJf
SEVBREVSU30gREVTVElOQVRJT04gJHtIRUFERVJfSU5TVEFMTF9ESVJ9KQoraW5zdGFsbChGSUxF
UyAke0VXZWJLaXQyX0V4dGVuc2lvbl9IRUFERVJTfSBERVNUSU5BVElPTiAke0hFQURFUl9JTlNU
QUxMX0RJUn0vZXh0ZW5zaW9uKQogCiBpbnN0YWxsKEZJTEVTICR7Q01BS0VfQklOQVJZX0RJUn0v
V2ViS2l0Mi9lZmwvZXdlYmtpdDIucGMgREVTVElOQVRJT04gbGliL3BrZ2NvbmZpZykKIGluc3Rh
bGwoRklMRVMgJHtDTUFLRV9CSU5BUllfRElSfS9XZWJLaXQyL2VmbC9ld2Via2l0Mi1leHRlbnNp
b24ucGMgREVTVElOQVRJT04gbGliL3BrZ2NvbmZpZykKQEAgLTUxMCw2ICs1MTIsNyBAQCBzZXQo
RVdLMlVuaXRUZXN0c19CSU5BUklFUwogICAgIHRlc3RfZXdrMl9laW5hX3NoYXJlZF9zdHJpbmcK
ICAgICB0ZXN0X2V3azJfZmF2aWNvbl9kYXRhYmFzZQogICAgIHRlc3RfZXdrMl9maWxlX2Nob29z
ZXJfcmVxdWVzdAorICAgIHRlc3RfZXdrMl9qYXZhc2NyaXB0X2JpbmRpbmcKICAgICB0ZXN0X2V3
azJfb2JqZWN0CiAgICAgdGVzdF9ld2syX3BhZ2VfZ3JvdXAKICAgICB0ZXN0X2V3azJfcG9wdXBf
bWVudQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMv
ZXh0ZW5zaW9ucy9leHRlbnNpb25fc2FtcGxlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZWZsL3Rlc3RzL2V4dGVuc2lvbnMvZXh0ZW5zaW9uX3NhbXBsZS5jcHAKaW5kZXggMjk0
MTM0M2VjMmJmYjQwMjdlNDEyNmYyNjM5NGE3ZDJjZTEzZmE5ZC4uYWFjZjMwY2VkMWVmN2RlNDJh
Y2JiZGQyODVmZjA2YmQ3MzBjOWYyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9lZmwvdGVzdHMvZXh0ZW5zaW9ucy9leHRlbnNpb25fc2FtcGxlLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy9leHRlbnNpb25zL2V4dGVuc2lv
bl9zYW1wbGUuY3BwCkBAIC0yNCwxMSArMjQsNTkgQEAKICAqLwogCiAjaW5jbHVkZSAiRVdlYktp
dF9FeHRlbnNpb24uaCIKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Lmg+CiAK
ICNpZmRlZiBfX2NwbHVzcGx1cwogZXh0ZXJuICJDIiB7CiAjZW5kaWYKIAorc3RhdGljIEpTVmFs
dWVSZWYgaGVsbG9DYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVu
Y3Rpb24sIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25z
dCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCit7CisgICAg
RXdrX0V4dGVuc2lvbiogZXh0ZW5zaW9uID0gc3RhdGljX2Nhc3Q8RXdrX0V4dGVuc2lvbio+KEpT
T2JqZWN0R2V0UHJpdmF0ZSh0aGlzT2JqZWN0KSk7CisKKyAgICBFaW5hX1ZhbHVlKiB2YWx1ZSA9
IGVpbmFfdmFsdWVfbmV3KEVJTkFfVkFMVUVfVFlQRV9TVFJJTkcpOworICAgIGVpbmFfdmFsdWVf
c2V0KHZhbHVlLCAiSGVsbG8gZnJvbSBleHRlbnNpb24iKTsKKyAgICBld2tfZXh0ZW5zaW9uX21l
c3NhZ2VfcG9zdChleHRlbnNpb24sICJoZWxsbyIsIHZhbHVlKTsKKyAgICBlaW5hX3ZhbHVlX2Zy
ZWUodmFsdWUpOworCisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK3ZvaWQgbG9hZEZpbmlzaGVk
KEV3a19QYWdlKiBwYWdlLCB2b2lkKiBkYXRhKQoreworICAgIEpTR2xvYmFsQ29udGV4dFJlZiBq
c0NvbnRleHQgPSBld2tfcGFnZV9qc19nbG9iYWxfY29udGV4dF9nZXQocGFnZSk7CisgICAgSlNP
YmplY3RSZWYgd2luZG93T2JqZWN0ID0gSlNDb250ZXh0R2V0R2xvYmFsT2JqZWN0KGpzQ29udGV4
dCk7CisKKyAgICBzdGF0aWMgSlNTdGF0aWNGdW5jdGlvbiBmdW5jdGlvbnNbXSA9IHsKKyAgICAg
ICAgeyAiaGVsbG8iLCBoZWxsb0NhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5
IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCisgICAgICAgIHsgMCwgMCwgMCB9
CisgICAgfTsKKyAgICBzdGF0aWMgSlNDbGFzc0RlZmluaXRpb24gY2xhc3NfZGVmaW5pdGlvbiA9
IHsKKyAgICAgICAgMCwga0pTQ2xhc3NBdHRyaWJ1dGVOb25lLCAiVGVzdCIsIDAsIDAsIGZ1bmN0
aW9ucywKKyAgICAgICAgMCwgMC8qICovLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwCisgICAg
fTsKKyAgICBKU0NsYXNzUmVmIGNsYXN6ID0gSlNDbGFzc0NyZWF0ZSgmY2xhc3NfZGVmaW5pdGlv
bik7CisgICAgSlNPYmplY3RSZWYgb2JqZWN0ID0gSlNPYmplY3RNYWtlKGpzQ29udGV4dCwgY2xh
c3osIGRhdGEpOworICAgIEpTQ2xhc3NSZWxlYXNlKGNsYXN6KTsKKworICAgIEpTT2JqZWN0U2V0
UHJpdmF0ZShvYmplY3QsIGRhdGEpOworCisgICAgSlNWYWx1ZVJlZiBleGNlcHRpb24gPSAwOwor
ICAgIEpTU3RyaW5nUmVmIHByb3BlcnR5ID0gSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmco
InRlc3QiKTsKKyAgICBKU09iamVjdFNldFByb3BlcnR5KGpzQ29udGV4dCwgd2luZG93T2JqZWN0
LCBwcm9wZXJ0eSwgb2JqZWN0LCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJv
cGVydHlBdHRyaWJ1dGVEb250RGVsZXRlLCAmZXhjZXB0aW9uKTsKKyAgICBKU1N0cmluZ1JlbGVh
c2UocHJvcGVydHkpOworfQorCitzdGF0aWMgdm9pZCBwYWdlQWRkZWQoRXdrX1BhZ2UqIHBhZ2Us
IHZvaWQqIGRhdGEpCit7CisgICAgc3RhdGljIEV3a19QYWdlX0NsaWVudCBjbGllbnQ7CisgICAg
Y2xpZW50LnZlcnNpb24gPSAxOworICAgIGNsaWVudC5kYXRhID0gZGF0YTsKKyAgICBjbGllbnQu
bG9hZF9maW5pc2hlZCA9IGxvYWRGaW5pc2hlZDsKKworICAgIGV3a19wYWdlX2NsaWVudF9yZWdp
c3RlcihwYWdlLCAmY2xpZW50KTsKK30KKwogc3RhdGljIHZvaWQgbWVzc2FnZVJlY2VpdmVkKGNv
bnN0IGNoYXIqIG5hbWUsIGNvbnN0IEVpbmFfVmFsdWUqIGJvZHksIHZvaWQqIGRhdGEpCiB7CiAg
ICAgRWluYV9WYWx1ZSogdmFsdWUgPSBlaW5hX3ZhbHVlX25ldyhFSU5BX1ZBTFVFX1RZUEVfU1RS
SU5HKTsKQEAgLTQyLDYgKzkwLDcgQEAgdm9pZCBld2tfZXh0ZW5zaW9uX2luaXQoRXdrX0V4dGVu
c2lvbiogZXh0ZW5zaW9uKQogICAgIHN0YXRpYyBFd2tFeHRlbnNpb25DbGllbnQgY2xpZW50Owog
ICAgIGNsaWVudC52ZXJzaW9uID0gMTsKICAgICBjbGllbnQuZGF0YSA9ICh2b2lkICopZXh0ZW5z
aW9uOworICAgIGNsaWVudC5wYWdlX2FkZCA9IHBhZ2VBZGRlZDsKICAgICBjbGllbnQubWVzc2Fn
ZV9yZWNlaXZlZCA9IG1lc3NhZ2VSZWNlaXZlZDsKIAogICAgIGV3a19leHRlbnNpb25fY2xpZW50
X2FkZChleHRlbnNpb24sICZjbGllbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9lZmwvdGVzdHMvdGVzdF9ld2syX2phdmFzY3JpcHRfYmluZGluZy5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy90ZXN0X2V3azJfamF2YXNjcmlw
dF9iaW5kaW5nLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44NDJkMDcxZWY2MmFlMGQxYTA2MzAxY2U2MjE0Yzg1
ZTBmZGUyMTRkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9lZmwvdGVzdHMvdGVzdF9ld2syX2phdmFzY3JpcHRfYmluZGluZy5jcHAKQEAgLTAsMCArMSw2
OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBSeXVhbiBDaG9pIDxyeXVhbi5jaG9pQGdt
YWlsLmNvbT4uICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJFd2tW
aWV3LmgiCisjaW5jbHVkZSAiVW5pdFRlc3RVdGlscy9FV0syVW5pdFRlc3RCYXNlLmgiCisKK3Vz
aW5nIG5hbWVzcGFjZSBFV0syVW5pdFRlc3Q7CisKK2V4dGVybiBFV0syVW5pdFRlc3RFbnZpcm9u
bWVudCogZW52aXJvbm1lbnQ7CisKK3N0YXRpYyBjb25zdGV4cHIgZG91YmxlIHRlc3RUaW1lb3V0
U2Vjb25kcyA9IDIuMDsKKworY2xhc3MgRVdLMkNvbnRleHRUZXN0V2l0aEV4dGVuc2lvbiA6IHB1
YmxpYyBFV0syVW5pdFRlc3RCYXNlIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgdm9pZCBtZXNzYWdl
UmVjZWl2ZWRDYWxsYmFjayhjb25zdCBjaGFyKiBuYW1lLCBjb25zdCBFaW5hX1ZhbHVlKiBib2R5
LCB2b2lkKiB1c2VyRGF0YSkKKyAgICB7CisgICAgICAgIGJvb2wqIGhhbmRsZWQgPSBzdGF0aWNf
Y2FzdDxib29sKj4odXNlckRhdGEpOworICAgICAgICBBU1NFUlRfU1RSRVEoImhlbGxvIiwgbmFt
ZSk7CisKKyAgICAgICAgKmhhbmRsZWQgPSB0cnVlOworICAgIH0KKworcHJvdGVjdGVkOgorICAg
IEVXSzJDb250ZXh0VGVzdFdpdGhFeHRlbnNpb24oKQorICAgIHsKKyAgICAgICAgbV93aXRoRXh0
ZW5zaW9uID0gdHJ1ZTsKKyAgICB9Cit9OworCitURVNUX0YoRVdLMkNvbnRleHRUZXN0V2l0aEV4
dGVuc2lvbiwgZXdrX2phdmFzY3JpcHRfYmluZGluZykKK3sKKyAgICBib29sIHJlY2VpdmVkID0g
ZmFsc2U7CisgICAgRXdrX0NvbnRleHQqIGNvbnRleHQgPSBld2tfdmlld19jb250ZXh0X2dldCh3
ZWJWaWV3KCkpOworCisgICAgZXdrX2NvbnRleHRfbWVzc2FnZV9mcm9tX2V4dGVuc2lvbnNfY2Fs
bGJhY2tfc2V0KGNvbnRleHQsIG1lc3NhZ2VSZWNlaXZlZENhbGxiYWNrLCAmcmVjZWl2ZWQpOwor
CisgICAgZXdrX3ZpZXdfdXJsX3NldCh3ZWJWaWV3KCksIGVudmlyb25tZW50LT5kZWZhdWx0VGVz
dFBhZ2VVcmwoKSk7CisgICAgQVNTRVJUX1RSVUUod2FpdFVudGlsTG9hZEZpbmlzaGVkKCkpOwor
CisgICAgZXdrX3ZpZXdfc2NyaXB0X2V4ZWN1dGUod2ViVmlldygpLCAidGVzdC5oZWxsbygpOyIs
IG51bGxwdHIsIG51bGxwdHIpOworCisgICAgQVNTRVJUX1RSVUUod2FpdFVudGlsVHJ1ZShyZWNl
aXZlZCwgdGVzdFRpbWVvdXRTZWNvbmRzKSk7Cit9CisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2VmbC9FV2ViS2l0X0V4dGVuc2lvbi5o
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZWZsL0VXZWJL
aXRfRXh0ZW5zaW9uLmgKaW5kZXggOTA2MDAxZGE3MjFlMDI2MDFmODI5YzUyYWYzZjc0OTA1Mjky
YmI5MC4uMTZlMjM5ZGQ5NjkwNGZkNjQ2Mjc5NWY1MGJlYWYyYjQwYWFjYzJjNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZWZsL0VXZWJL
aXRfRXh0ZW5zaW9uLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvZWZsL0VXZWJLaXRfRXh0ZW5zaW9uLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDE0IFJ5dWFuIENob2kgPHJ5dWFuLmNob2lAZ21haWwuY29tPi4gIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxNSBSeXVhbiBDaG9p
IDxyeXVhbi5jaG9pQGdtYWlsLmNvbT4uICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC01Nyw1ICs1Nyw2IEBACiAjZGVmaW5lIEVXZWJLaXRf
RXh0ZW5zaW9uX2gKIAogI2luY2x1ZGUgImV3a19leHRlbnNpb24uaCIKKyNpbmNsdWRlICJld2tf
cGFnZS5oIgogCiAjZW5kaWYgLy8gRVdlYktpdF9FeHRlbnNpb25faApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZWZsL2V3a19leHRlbnNp
b24uY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZWZs
L2V3a19leHRlbnNpb24uY3BwCmluZGV4IDE2ZjM0NGYzNGRjNjYxMTQ2NTI5MmYzM2UxOTI1MWM4
Y2ZiNDk5M2IuLjEzZDM0ZDkyODAxMmMxNzgzYTk5YjlhOGY2ZjA5MjE5OWZlNTQ5NmEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2VmbC9l
d2tfZXh0ZW5zaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9lZmwvZXdrX2V4dGVuc2lvbi5jcHAKQEAgLTMxLDcgKzMxLDkgQEAKICNpbmNs
dWRlICJXS0J1bmRsZS5oIgogI2luY2x1ZGUgIldLQnVuZGxlQVBJQ2FzdC5oIgogI2luY2x1ZGUg
IldLUmV0YWluUHRyLmgiCisjaW5jbHVkZSAiV2ViUGFnZS5oIgogI2luY2x1ZGUgImV3a19leHRl
bnNpb25fcHJpdmF0ZS5oIgorI2luY2x1ZGUgImV3a19wYWdlX3ByaXZhdGUuaCIKICNpbmNsdWRl
IDxXZWJLaXQvV0tTdHJpbmcuaD4KICNpbmNsdWRlIDxXZWJLaXQvV0tUeXBlLmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvQ1N0cmluZy5oPgpAQCAtNzAsMTQgKzcyLDMwIEBAIHZvaWQgRXdrRXh0ZW5z
aW9uOjpyZW1vdmUoRXdrX0V4dGVuc2lvbl9DbGllbnQqIGNsaWVudCkKICAgICBtX2NsaWVudHMu
cmVtb3ZlRmlyc3QoY2xpZW50KTsKIH0KIAotdm9pZCBFd2tFeHRlbnNpb246OmRpZENyZWF0ZVBh
Z2UoV0tCdW5kbGVSZWYsIFdLQnVuZGxlUGFnZVJlZiwgY29uc3Qgdm9pZCopCit2b2lkIEV3a0V4
dGVuc2lvbjo6ZGlkQ3JlYXRlUGFnZShXS0J1bmRsZVJlZiwgV0tCdW5kbGVQYWdlUmVmIHdrUGFn
ZSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAg
IEV3a0V4dGVuc2lvbiogc2VsZiA9IHRvRXdrRXh0ZW5kaW9uKGNsaWVudEluZm8pOworICAgIFdl
YlBhZ2UqIHBhZ2UgPSB0b0ltcGwod2tQYWdlKTsKKworICAgIGF1dG8gZXdrUGFnZSA9IHN0ZDo6
bWFrZV91bmlxdWU8RXdrUGFnZT4ocGFnZSk7CisgICAgZm9yIChhdXRvJiBpdCA6IHNlbGYtPm1f
Y2xpZW50cykgeworICAgICAgICBpZiAoaXQtPnBhZ2VfYWRkKQorICAgICAgICAgICAgaXQtPnBh
Z2VfYWRkKGV3a1BhZ2UuZ2V0KCksIGl0LT5kYXRhKTsKKyAgICB9CisKKyAgICBzZWxmLT5tX3Bh
Z2VNYXAuYWRkKHBhZ2UsIFdURjo6bW92ZShld2tQYWdlKSk7CiB9CiAKLXZvaWQgRXdrRXh0ZW5z
aW9uOjp3aWxsRGVzdHJveVBhZ2UoV0tCdW5kbGVSZWYsIFdLQnVuZGxlUGFnZVJlZiwgY29uc3Qg
dm9pZCopCit2b2lkIEV3a0V4dGVuc2lvbjo6d2lsbERlc3Ryb3lQYWdlKFdLQnVuZGxlUmVmLCBX
S0J1bmRsZVBhZ2VSZWYgd2tQYWdlLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQogewotICAgIG5v
dEltcGxlbWVudGVkKCk7CisgICAgRXdrRXh0ZW5zaW9uKiBzZWxmID0gdG9Fd2tFeHRlbmRpb24o
Y2xpZW50SW5mbyk7CisgICAgV2ViUGFnZSogcGFnZSA9IHRvSW1wbCh3a1BhZ2UpOworCisgICAg
Zm9yIChhdXRvJiBpdCA6IHNlbGYtPm1fY2xpZW50cykgeworICAgICAgICBpZiAoaXQtPnBhZ2Vf
ZGVsKQorICAgICAgICAgICAgaXQtPnBhZ2VfZGVsKHNlbGYtPm1fcGFnZU1hcC5nZXQocGFnZSks
IGl0LT5kYXRhKTsKKyAgICB9CisgICAgc2VsZi0+bV9wYWdlTWFwLnJlbW92ZShwYWdlKTsKIH0K
IAogdm9pZCBFd2tFeHRlbnNpb246OmRpZFJlY2VpdmVNZXNzYWdlKFdLQnVuZGxlUmVmLCBXS1N0
cmluZ1JlZiBtZXNzYWdlTmFtZSwgV0tUeXBlUmVmIG1lc3NhZ2VCb2R5LCBjb25zdCB2b2lkKiBj
bGllbnRJbmZvKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvZWZsL2V3a19leHRlbnNpb24uaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2VmbC9ld2tfZXh0ZW5zaW9uLmgKaW5kZXggNGZhM2FkMThj
OTJkMjliYjI4YmUyMTE5YzUyYjgxZjlkN2IyOTYyMy4uYmYxZWU4NWNlMTRiMWZlNWU2ZTFiMTRh
MTI2ODRhMzdlMjIxMjNjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvZWZsL2V3a19leHRlbnNpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9lZmwvZXdrX2V4dGVuc2lvbi5oCkBAIC0z
OCw2ICszOCwxMSBAQCBleHRlcm4gIkMiIHsKICNlbmRpZgogCiAvKioKKyAqIERlY2xhcmUgRXdr
X1BhZ2UuCisgKi8KK3R5cGVkZWYgc3RydWN0IEV3a1BhZ2UgRXdrX1BhZ2U7CisKKy8qKgogICog
RGVjbGFyZSBFd2tfRXh0ZW5zaW9uLgogICovCiB0eXBlZGVmIHN0cnVjdCBFd2tFeHRlbnNpb24g
RXdrX0V4dGVuc2lvbjsKQEAgLTU4LDEwICs2MywyNyBAQCBzdHJ1Y3QgRXdrRXh0ZW5zaW9uQ2xp
ZW50IHsKICAgICB2b2lkICpkYXRhOwogCiAgICAgLyoqCisgICAgICogQ2FsbGJhY2tzIHRvIHJl
cG9ydCBwYWdlIGFkZGVkLgorICAgICAqCisgICAgICogQHBhcmFtIHBhZ2UgcGFnZSB0byBiZSBm
aW5pc2hlZAorICAgICAqIEBwYXJhbSBkYXRhIGRhdGEgb2YgYSBleHRlbnNpb24gY2xpZW50Cisg
ICAgICovCisgICAgdm9pZCAoKnBhZ2VfYWRkKShFd2tfUGFnZSogcGFnZSwgdm9pZCAqZGF0YSk7
CisKKyAgICAvKioKKyAgICAgKiBDYWxsYmFja3MgdG8gcmVwb3J0IHBhZ2Ugd2lsbCBiZSByZW1v
dmVkLgorICAgICAqCisgICAgICogQHBhcmFtIHBhZ2UgcGFnZSB0byBiZSBmaW5pc2hlZAorICAg
ICAqIEBwYXJhbSBkYXRhIGRhdGEgb2YgYSBleHRlbnNpb24gY2xpZW50CisgICAgICovCisgICAg
dm9pZCAoKnBhZ2VfZGVsKShFd2tfUGFnZSogcGFnZSwgdm9pZCAqZGF0YSk7CisKKyAgICAvKioK
ICAgICAgKiBDYWxsYmFja3MgdG8gcmVjZWl2ZSBtZXNzYWdlIGZyb20gZXdrX2NvbnRleHQuCiAg
ICAgICoKICAgICAgKiBAcGFyYW0gbmFtZSBuYW1lIG9mIG1lc3NhZ2UgZnJvbSBld2tfY29udGV4
dAogICAgICAqIEBwYXJhbSBib2R5IGJvZHkgb2YgbWVzc2FnZSBmcm9tIGV3a19jb250ZXh0Cisg
ICAgICogQHBhcmFtIGRhdGEgZGF0YSBvZiBhIGV4dGVuc2lvbiBjbGllbnQKICAgICAgKi8KICAg
ICB2b2lkICgqbWVzc2FnZV9yZWNlaXZlZCkoY29uc3QgY2hhciAqbmFtZSwgY29uc3QgRWluYV9W
YWx1ZSAqYm9keSwgdm9pZCAqZGF0YSk7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZWZsL2V3a19leHRlbnNpb25fcHJpdmF0ZS5o
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZWZsL2V3a19l
eHRlbnNpb25fcHJpdmF0ZS5oCmluZGV4IGQ0NzI3Njk0NmUzOTg1ODIxMGNjNzE5N2FiNGZlOTk0
YTBjNWYwNWYuLjhmZmFkZDUwZDcxNDY0YWU5YjAzMDFlYTk4NjM4ZTY5MjI0MzRiZjYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2VmbC9l
d2tfZXh0ZW5zaW9uX3ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9lZmwvZXdrX2V4dGVuc2lvbl9wcml2YXRlLmgKQEAgLTI2LDEyICsy
NiwxNiBAQAogI2lmbmRlZiBld2tfZXh0ZW5zaW9uX3ByaXZhdGVfaAogI2RlZmluZSBld2tfZXh0
ZW5zaW9uX3ByaXZhdGVfaAogCisjaW5jbHVkZSAiZXdrX3BhZ2VfcHJpdmF0ZS5oIgogI2luY2x1
ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBJbmplY3RlZEJ1
bmRsZTsKK2NsYXNzIFdlYlBhZ2U7CiB9CiAKK2NsYXNzIEV3a1BhZ2U7CisKIGNsYXNzIEV3a0V4
dGVuc2lvbiB7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgRXdrRXh0ZW5zaW9uKFdlYktpdDo6SW5q
ZWN0ZWRCdW5kbGUqKTsKQEAgLTUxLDYgKzU1LDcgQEAgcHJpdmF0ZToKICAgICBXZWJLaXQ6Oklu
amVjdGVkQnVuZGxlKiBtX2J1bmRsZTsKIAogICAgIFZlY3RvcjxFd2tfRXh0ZW5zaW9uX0NsaWVu
dCo+IG1fY2xpZW50czsKKyAgICBIYXNoTWFwPFdlYktpdDo6V2ViUGFnZSosIHN0ZDo6dW5pcXVl
X3B0cjxFd2tQYWdlPj4gbV9wYWdlTWFwOwogfTsKIAogI2VuZGlmIC8vIGV3a19leHRlbnNpb25f
cHJpdmF0ZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9lZmwvZXdrX3BhZ2UuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvZWZsL2V3a19wYWdlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42Mzg4ZDAzMjlm
Y2YxMTQyOGE0M2Y2YTJlZmZkNjBhNjI5NDJmM2JlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZWZsL2V3a19wYWdlLmNwcApA
QCAtMCwwICsxLDEzNyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBSeXVhbiBDaG9pIDxy
eXVhbi5jaG9pQGdtYWlsLmNvbT4uICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiZXdrX3BhZ2UuaCIKKworI2luY2x1ZGUgIldL
QnVuZGxlLmgiCisjaW5jbHVkZSAiV0tCdW5kbGVBUElDYXN0LmgiCisjaW5jbHVkZSAiV0tCdW5k
bGVGcmFtZS5oIgorI2luY2x1ZGUgIldlYkZyYW1lLmgiCisjaW5jbHVkZSAiV2ViUGFnZS5oIgor
I2luY2x1ZGUgImV3a19wYWdlX3ByaXZhdGUuaCIKKwordXNpbmcgbmFtZXNwYWNlIFdlYktpdDsK
Kworc3RhdGljIGlubGluZSBFd2tQYWdlKiB0b0V3a1BhZ2UoY29uc3Qgdm9pZCogY2xpZW50SW5m
bykKK3sKKyAgICByZXR1cm4gY29uc3RfY2FzdDxFd2tQYWdlKj4oc3RhdGljX2Nhc3Q8Y29uc3Qg
RXdrUGFnZSo+KGNsaWVudEluZm8pKTsKK30KKworRXdrUGFnZTo6RXdrUGFnZShXZWJQYWdlKiBw
YWdlKQorICAgIDogbV9wYWdlKHBhZ2UpCit7CisgICAgV0tCdW5kbGVQYWdlTG9hZGVyQ2xpZW50
VjcgbG9hZGVyQ2xpZW50ID0geworICAgICAgICB7CisgICAgICAgICAgICA3LCAvLyB2ZXJzaW9u
CisgICAgICAgICAgICB0aGlzLCAvLyBjbGllbnRJbmZvCisgICAgICAgIH0sCisgICAgICAgIDAs
IC8vIGRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUsCisgICAgICAgIDAsIC8vIGRpZFJl
Y2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZEZvckZyYW1lLAorICAgICAgICAw
LCAvLyBkaWRGYWlsUHJvdmlzaW9uYWxMb2FkV2l0aEVycm9yRm9yRnJhbWUKKyAgICAgICAgMCwg
Ly8gZGlkQ29tbWl0TG9hZEZvckZyYW1lCisgICAgICAgIGRpZEZpbmlzaERvY3VtZW50TG9hZEZv
ckZyYW1lLAorICAgICAgICAwLCAvLyBkaWRGaW5pc2hMb2FkRm9yRnJhbWUKKyAgICAgICAgMCwg
Ly8gZGlkRmFpbExvYWRXaXRoRXJyb3JGb3JGcmFtZQorICAgICAgICAwLCAvLyBkaWRTYW1lRG9j
dW1lbnROYXZpZ2F0aW9uRm9yRnJhbWUsCisgICAgICAgIDAsIC8vIGRpZFJlY2VpdmVUaXRsZUZv
ckZyYW1lCisgICAgICAgIDAsIC8vIGRpZEZpcnN0TGF5b3V0Rm9yRnJhbWUKKyAgICAgICAgMCwg
Ly8gZGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0Rm9yRnJhbWUKKyAgICAgICAgMCwgLy8g
ZGlkUmVtb3ZlRnJhbWVGcm9tSGllcmFyY2h5CisgICAgICAgIDAsIC8vIGRpZERpc3BsYXlJbnNl
Y3VyZUNvbnRlbnRGb3JGcmFtZQorICAgICAgICAwLCAvLyBkaWRSdW5JbnNlY3VyZUNvbnRlbnRG
b3JGcmFtZQorICAgICAgICAwLCAvLyBkaWRDbGVhcldpbmRvd09iamVjdEZvckZyYW1lLAorICAg
ICAgICAwLCAvLyBkaWRDYW5jZWxDbGllbnRSZWRpcmVjdEZvckZyYW1lCisgICAgICAgIDAsIC8v
IHdpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3RGb3JGcmFtZQorICAgICAgICAwLCAvLyBkaWRIYW5k
bGVPbmxvYWRFdmVudHNGb3JGcmFtZQorICAgICAgICAwLCAvLyBkaWRMYXlvdXRGb3JGcmFtZQor
ICAgICAgICAwLCAvLyBkaWROZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQKKyAgICAgICAg
MCwgLy8gZGlkRGV0ZWN0WFNTRm9yRnJhbWUKKyAgICAgICAgMCwgLy8gc2hvdWxkR29Ub0JhY2tG
b3J3YXJkTGlzdEl0ZW0KKyAgICAgICAgMCwgLy8gZ2xvYmFsT2JqZWN0SXNBdmFpbGFibGVGb3JG
cmFtZQorICAgICAgICAwLCAvLyB3aWxsRGlzY29ubmVjdERPTVdpbmRvd0V4dGVuc2lvbkZyb21H
bG9iYWxPYmplY3QKKyAgICAgICAgMCwgLy8gZGlkUmVjb25uZWN0RE9NV2luZG93RXh0ZW5zaW9u
VG9HbG9iYWxPYmplY3QKKyAgICAgICAgMCwgLy8gd2lsbERlc3Ryb3lHbG9iYWxPYmplY3RGb3JE
T01XaW5kb3dFeHRlbnNpb24KKyAgICAgICAgMCwgLy8gZGlkRmluaXNoUHJvZ3Jlc3MKKyAgICAg
ICAgMCwgLy8gc2hvdWxkRm9yY2VVbml2ZXJzYWxBY2Nlc3NGcm9tTG9jYWxVUkwKKyAgICAgICAg
MCwgLy8gZGlkUmVjZWl2ZUludGVudEZvckZyYW1lX3VuYXZhaWxhYmxlCisgICAgICAgIDAsIC8v
IHJlZ2lzdGVySW50ZW50U2VydmljZUZvckZyYW1lX3VuYXZhaWxhYmxlCisgICAgICAgIDAsIC8v
IGRpZExheW91dAorICAgICAgICAwLCAvLyBmZWF0dXJlc1VzZWRJblBhZ2UKKyAgICAgICAgMCwg
Ly8gd2lsbExvYWRVUkxSZXF1ZXN0CisgICAgICAgIDAsIC8vIHdpbGxMb2FkRGF0YVJlcXVlc3QK
KyAgICAgICAgMCAvLyB3aWxsRGVzdHJveUZyYW1lCisgICAgfTsKKyAgICBXS0J1bmRsZVBhZ2VT
ZXRQYWdlTG9hZGVyQ2xpZW50KHRvQVBJKHBhZ2UpLCAmbG9hZGVyQ2xpZW50LmJhc2UpOworfQor
Cit2b2lkIEV3a1BhZ2U6OmFwcGVuZChjb25zdCBFd2tfUGFnZV9DbGllbnQqIGNsaWVudCkKK3sK
KyAgICBtX2NsaWVudHMuYXBwZW5kKGNsaWVudCk7Cit9CisKK3ZvaWQgRXdrUGFnZTo6cmVtb3Zl
KGNvbnN0IEV3a19QYWdlX0NsaWVudCogY2xpZW50KQoreworICAgIG1fY2xpZW50cy5yZW1vdmUo
bV9jbGllbnRzLmZpbmQoY2xpZW50KSk7Cit9CisKK3ZvaWQgRXdrUGFnZTo6ZGlkRmluaXNoRG9j
dW1lbnRMb2FkRm9yRnJhbWUoV0tCdW5kbGVQYWdlUmVmLCBXS0J1bmRsZUZyYW1lUmVmIGZyYW1l
LCBXS1R5cGVSZWYqLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQoreworICAgIGlmICghV0tCdW5k
bGVGcmFtZUlzTWFpbkZyYW1lKGZyYW1lKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgRXdrUGFn
ZSogc2VsZiA9IHRvRXdrUGFnZShjbGllbnRJbmZvKTsKKyAgICBmb3IgKGF1dG8mIGl0IDogc2Vs
Zi0+bV9jbGllbnRzKSB7CisgICAgICAgIGlmIChpdC0+bG9hZF9maW5pc2hlZCkKKyAgICAgICAg
ICAgIGl0LT5sb2FkX2ZpbmlzaGVkKHNlbGYsIGl0LT5kYXRhKTsKKyAgICB9Cit9CisKK0pTR2xv
YmFsQ29udGV4dFJlZiBld2tfcGFnZV9qc19nbG9iYWxfY29udGV4dF9nZXQoY29uc3QgRXdrX1Bh
Z2UqIGV3a1BhZ2UpCit7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKGV3a1Bh
Z2UsIG51bGxwdHIpOworCisgICAgV2ViRnJhbWUqIGNvcmVGcmFtZSA9IGV3a1BhZ2UtPnBhZ2Uo
KS0+bWFpbldlYkZyYW1lKCk7CisgICAgaWYgKCFjb3JlRnJhbWUpCisgICAgICAgIHJldHVybiBu
dWxscHRyOworCisgICAgcmV0dXJuIGNvcmVGcmFtZS0+anNDb250ZXh0KCk7Cit9CisKK3ZvaWQg
ZXdrX3BhZ2VfY2xpZW50X3JlZ2lzdGVyKEV3a19QYWdlKiBld2tQYWdlLCBjb25zdCBFd2tfUGFn
ZV9DbGllbnQqIGNsaWVudCkKK3sKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihld2tQ
YWdlKTsKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihjbGllbnQpOworCisgICAgZXdr
UGFnZS0+YXBwZW5kKGNsaWVudCk7Cit9CisKK3ZvaWQgZXdrX3BhZ2VfY2xpZW50X3VucmVnaXN0
ZXIoRXdrX1BhZ2UqIGV3a1BhZ2UsIGNvbnN0IEV3a19QYWdlX0NsaWVudCogY2xpZW50KQorewor
ICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKGV3a1BhZ2UpOworICAgIEVJTkFfU0FGRVRZ
X09OX05VTExfUkVUVVJOKGNsaWVudCk7CisKKyAgICBld2tQYWdlLT5yZW1vdmUoY2xpZW50KTsK
K30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL2VmbC9ld2tfcGFnZS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvZWZsL2V3a19wYWdlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTg5YzdkMDY0ZGNjOTI1NDM2NWRh
NThmMGQ1MjQ3ZWFhYWY3OGNiOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2VmbC9ld2tfcGFnZS5oCkBAIC0wLDAgKzEsOTMg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgUnl1YW4gQ2hvaSA8cnl1YW4uY2hvaUBnbWFp
bC5jb20+LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworLyoqCisgKiBAZmlsZSAg
ICBld2tfcGFnZS5oCisgKiBAYnJpZWYgICBEZXNjcmliZXMgdGhlIEV3a19QYWdlIEFQSS4KKyAq
LworCisjaWZuZGVmIGV3a19wYWdlX2gKKyNkZWZpbmUgZXdrX3BhZ2VfaAorCisjaW5jbHVkZSA8
RWluYS5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQmFzZS5oPgorCit0eXBlZGVmIHN0
cnVjdCBFd2tQYWdlIEV3a19QYWdlOworCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIg
eworI2VuZGlmCisKK3N0cnVjdCBFd2tQYWdlQ2xpZW50IHsKKyAgICBpbnQgdmVyc2lvbjsKKyAg
ICB2b2lkICpkYXRhOworCisgICAgLyoqCisgICAgICogQ2FsbGJhY2tzIHRvIHJlcG9ydCBsb2Fk
IGZpbmlzaGVkLgorICAgICAqCisgICAgICogQHBhcmFtIHBhZ2UgcGFnZSB0byBiZSBmaW5pc2hl
ZAorICAgICAqIEBwYXJhbSBkYXRhIGRhdGEgb2YgYSBwYWdlIGNsaWVudAorICAgICAqLworICAg
IHZvaWQgKCpsb2FkX2ZpbmlzaGVkKShFd2tfUGFnZSAqcGFnZSwgdm9pZCAqZGF0YSk7Cit9Owor
dHlwZWRlZiBzdHJ1Y3QgRXdrUGFnZUNsaWVudCBFd2tfUGFnZV9DbGllbnQ7CisKKy8qKgorICog
R2V0cyBhIGdsb2JhbCBKYXZhU2NyaXB0IGV4ZWN1dGlvbiBjb250ZXh0IGZvciB0aGUgcGFnZS4K
KyAqCisgKiBAcGFyYW0gcGFnZSBwYWdlIHRvIGdldCBhIGdsb2JhbCBKYXZhU2NyaXB0IGV4ZWN1
dGlvbiBjb250ZXh0CisgKgorICogVGhpcyBmdW5jdGlvbiByZXR1cm4gZ2xvYmFsIEphdmFTY3Jp
cHQgZXhlY3V0aW9uIGNvbnRleHQgdG8gZXh0ZW5kIGphdmFzY3JpcHQgZnVuY3Rpb25hbGl0eS4K
KyAqLworRUFQSSBKU0dsb2JhbENvbnRleHRSZWYgZXdrX3BhZ2VfanNfZ2xvYmFsX2NvbnRleHRf
Z2V0KGNvbnN0IEV3a19QYWdlICpwYWdlKTsKKworLyoqCisgKiBSZWdpc3RlciBhIHBhZ2UgY2xp
ZW50IHdoaWNoIGNvbnRhaW5zIHNldmVyYWwgY2FsbGJhY2tzIHRvIHRoZSBwYWdlCisgKgorICog
QHBhcmFtIHBhZ2UgcGFnZSB0byBhdHRhY2ggcGFnZSBjbGllbnQKKyAqIEBwYXJhbSBjbGllbnQg
cGFnZSBjbGllbnQgdG8gYWRkIHRvIHRoZSBwYWdlCisgKgorICogVGhpcyBmdW5jdGlvbiByZWdp
c3RlcnMgYSBjbGllbnQsIHdoaWNoIGNvbnRhaW5zIHNldmVyYWwgY2FsbGJhY2tzIHJlY2Vpdmlu
ZyBldmVudHMKKyAqIGZyb20gV2ViUHJvY2VzcyBzaWRlLCB0byBhIEBwIHBhZ2UuCisgKgorICog
QHNlZSBld2tfcGFnZV9jbGllbnRfdW5yZWdpc3RlcgorICovCitFQVBJIHZvaWQgZXdrX3BhZ2Vf
Y2xpZW50X3JlZ2lzdGVyKEV3a19QYWdlICpwYWdlLCBjb25zdCBFd2tfUGFnZV9DbGllbnQgKmNs
aWVudCk7CisKKy8qKgorICogVW5yZWdpc3RlciBhIGNsaWVudCBmcm9tIHRoZSBwYWdlLgorICoK
KyAqIEBwYXJhbSBwYWdlIHBhZ2UgdG8gdW5yZWdpc3RlciBjbGllbnQKKyAqIEBwYXJhbSBjbGll
bnQgcGFnZSBjbGllbnQgd2hpY2ggY29udGFpbnMgdmVyc2lvbiwgZGF0YSBhbmQgY2FsbGJhY2tz
CisgKgorICogQHNlZSBld2tfcGFnZV9jbGllbnRfcmVnaXN0ZXIKKyAqLworRUFQSSB2b2lkIGV3
a19wYWdlX2NsaWVudF91bnJlZ2lzdGVyKEV3a19QYWdlICpwYWdlLCBjb25zdCBFd2tfUGFnZV9D
bGllbnQgKmNsaWVudCk7CisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCisKKyNlbmRp
ZiAvLyBld2tfcGFnZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9lZmwvZXdrX3BhZ2VfcHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZWZsL2V3a19wYWdlX3ByaXZhdGUuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4xYTZhZTkxZGM2OWUzNTYyZTAzYjQzNDMxMWNkZjk0MDVjMmIwMzZlCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
ZWZsL2V3a19wYWdlX3ByaXZhdGUuaApAQCAtMCwwICsxLDUxIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE1IFJ5dWFuIENob2kgPHJ5dWFuLmNob2lAZ21haWwuY29tPi4gIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgZXdrX3BhZ2VfcHJpdmF0ZV9oCisjZGVmaW5l
IGV3a19wYWdlX3ByaXZhdGVfaAorCit0eXBlZGVmIHN0cnVjdCBFd2tQYWdlQ2xpZW50IEV3a19Q
YWdlX0NsaWVudDsKKworbmFtZXNwYWNlIFdlYktpdCB7CitjbGFzcyBXZWJQYWdlOworfQorCitj
bGFzcyBFd2tQYWdlIHsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBFd2tQYWdlKFdlYktpdDo6V2Vi
UGFnZSopOworCisgICAgV2ViS2l0OjpXZWJQYWdlKiBwYWdlKCkgY29uc3QgeyByZXR1cm4gbV9w
YWdlOyB9CisKKyAgICB2b2lkIGFwcGVuZChjb25zdCBFd2tfUGFnZV9DbGllbnQqKTsKKyAgICB2
b2lkIHJlbW92ZShjb25zdCBFd2tfUGFnZV9DbGllbnQqKTsKKworcHJpdmF0ZToKKyAgICBzdGF0
aWMgdm9pZCBkaWRGaW5pc2hEb2N1bWVudExvYWRGb3JGcmFtZShXS0J1bmRsZVBhZ2VSZWYsIFdL
QnVuZGxlRnJhbWVSZWYsIFdLVHlwZVJlZiosIGNvbnN0IHZvaWQgKik7CisKKyAgICBXZWJLaXQ6
OldlYlBhZ2UqIG1fcGFnZTsKKyAgICBWZWN0b3I8Y29uc3QgRXdrX1BhZ2VfQ2xpZW50Kj4gbV9j
bGllbnRzOworfTsKKworI2VuZGlmIC8vIGV3a19wYWdlX3ByaXZhdGVfaApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvZWZsL2V3ZWJraXQyLWV4dGVuc2lvbi5wYy5pbiBiL1NvdXJjZS9XZWJL
aXQyL2VmbC9ld2Via2l0Mi1leHRlbnNpb24ucGMuaW4KaW5kZXggMjYxNmNkYzJmOTM5NWViZTcy
OTZkMDU0OGZlYzgwMWZjNTFlODNjNC4uNjllM2I4Mzk3MmFkZjI1NzAzNjUxMmNmYmZmNmYwMjcw
Y2VjZGIyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvZWZsL2V3ZWJraXQyLWV4dGVuc2lv
bi5wYy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9lZmwvZXdlYmtpdDItZXh0ZW5zaW9uLnBjLmlu
CkBAIC01LDQgKzUsNCBAQCBOYW1lOiBld2Via2l0Mi1leHRlbnNpb24KIERlc2NyaXB0aW9uOiBF
eHRlbnNpb24gZm9yIFdlYktpdDIvRUZMKGV3ZWJraXQyKQogVmVyc2lvbjogQFBST0pFQ1RfVkVS
U0lPTkAKIFJlcXVpcmVzOiBlaW5hCi1DZmxhZ3M6IC1JJHtpbmNsdWRlZGlyfS9AV2ViS2l0Ml9P
VVRQVVRfTkFNRUAtQFBST0pFQ1RfVkVSU0lPTl9NQUpPUkAvZXh0ZW5zaW9uCitDZmxhZ3M6IC1J
JHtpbmNsdWRlZGlyfS9AV2ViS2l0Ml9PVVRQVVRfTkFNRUAtQFBST0pFQ1RfVkVSU0lPTl9NQUpP
UkAvZXh0ZW5zaW9uIC1JJHtpbmNsdWRlZGlyfS9AV2ViS2l0Ml9PVVRQVVRfTkFNRUAtQFBST0pF
Q1RfVkVSU0lPTl9NQUpPUkAKZGlmZiAtLWdpdCBhL1NvdXJjZS9jbWFrZS9PcHRpb25zRWZsLmNt
YWtlIGIvU291cmNlL2NtYWtlL09wdGlvbnNFZmwuY21ha2UKaW5kZXggNDNjNmQ4OGQxNTc3NGYw
ZTVlZDc5ZjQwYjdlNmFiOWRlNTg4ZGJmMC4uOWJlNjA3MTkzYmU2MTNiNmI1ZGZhNDIxMGRjZTNh
Mjg2YTQ2MTc2NiAxMDA2NDQKLS0tIGEvU291cmNlL2NtYWtlL09wdGlvbnNFZmwuY21ha2UKKysr
IGIvU291cmNlL2NtYWtlL09wdGlvbnNFZmwuY21ha2UKQEAgLTIzLDYgKzIzLDcgQEAgc2V0KFdl
YktpdDJfT1VUUFVUX05BTUUgZXdlYmtpdDIpCiBzZXQoQ1BBQ0tfU09VUkNFX0dFTkVSQVRPUiBU
QloyKQogc2V0KEdMSUJfQ09NUE9ORU5UUyBnaW8gZ29iamVjdCBndGhyZWFkKQogc2V0KERBVEFf
SU5TVEFMTF9ESVIgInNoYXJlLyR7V2ViS2l0Ml9PVVRQVVRfTkFNRX0tJHtQUk9KRUNUX1ZFUlNJ
T05fTUFKT1J9IiBDQUNIRSBQQVRIICJJbnN0YWxsYXRpb24gcGF0aCBmb3IgdGhlbWUgZGF0YSIp
CitzZXQoSEVBREVSX0lOU1RBTExfRElSICJpbmNsdWRlLyR7V2ViS2l0Ml9PVVRQVVRfTkFNRX0t
JHtQUk9KRUNUX1ZFUlNJT05fTUFKT1J9IiBDQUNIRSBQQVRIICJJbnN0YWxsYXRpb24gcGF0aCBm
b3IgaGVhZGVyIGZpbGVzIikKIHNldChUSEVNRV9CSU5BUllfRElSICR7Q01BS0VfQklOQVJZX0RJ
Un0vV2ViQ29yZS9wbGF0Zm9ybS9lZmwvRGVmYXVsdFRoZW1lKQogc2V0KFdFQl9JTlNQRUNUT1Jf
RElSICIke0RBVEFfSU5TVEFMTF9ESVJ9L2luc3BlY3RvciIpCiBzZXQoV0VCSU5TUEVDVE9SVUlf
RElSICIke0NNQUtFX1NPVVJDRV9ESVJ9L1NvdXJjZS9XZWJJbnNwZWN0b3JVSSIpCkBAIC0yODMs
NCArMjg0LDQgQEAgZW5kaWYgKCkKIAogaWYgKEVOQUJMRV9TVUJUTEVfQ1JZUFRPKQogICAgIGZp
bmRfcGFja2FnZShHbnVUTFMgMy4wLjAgUkVRVUlSRUQpCi1lbmRpZiAoKQpcIE5vIG5ld2xpbmUg
YXQgZW5kIG9mIGZpbGUKK2VuZGlmICgpCmRpZmYgLS1naXQgYS9DaGFuZ2VMb2cgYi9DaGFuZ2VM
b2cKaW5kZXggYjQ2MTFjY2JiMmZjNWVmMTE1OThlMmUxZDc1OGJjYzBmNmRiODgwMS4uOWNiZDdh
YmZkYmQ5ZGNjMmJkZGQ4ZmQxODRiOWM2MTAyYWEyYTU4OSAxMDA2NDQKLS0tIGEvQ2hhbmdlTG9n
CisrKyBiL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDE1LTAzLTE2ICBSeXVhbiBDaG9p
ICA8cnl1YW4uY2hvaUBuYXZlcmNvcnAuY29tPgorCisgICAgICAgIFtFRkxdIEV4cG9zZSBKYXZh
U2NyaXB0IGJpbmRpbmcgaW50ZXJmYWNlIHRocm91Z2ggZXdrX2V4dGVuc2lvbgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQyMDMzCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTb3VyY2UvY21ha2UvT3B0
aW9uc0VmbC5jbWFrZTogQWRkZWQgSEVBREVSX0lOU1RBTExfRElSIHZhcmlhYmxlLgorCiAyMDE1
LTAzLTE2ICBHeXV5b3VuZyBLaW0gIDxneXV5b3VuZy5raW1Ac2Ftc3VuZy5jb20+CiAKICAgICAg
ICAgW0NNYWtlXVtFRkxdIFJlYXJyYW5nZSBPcHRpb25FRkwuY21ha2UgdG8gaW1wcm92ZSByZWFk
YWJpbGl0eSAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>248844</attachid>
            <date>2015-03-17 04:37:31 -0700</date>
            <delta_ts>2015-03-17 19:43:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-142033-20150317203700.patch</filename>
            <type>text/plain</type>
            <size>29154</size>
            <attacher name="Ryuan Choi">ryuan.choi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgxNjMxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAw
MjY0OTlhNDU2MzY2ZDk0ZmQ2NWVhNzY0NDk4YTY4Njc4NDhjZjYzLi44NDIxOTIwN2RhNmI2NDJm
MDA4YWU4OTlhYTExYmE3YWYyNTU1YjJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMiBAQAorMjAxNS0wMy0xNyAgUnl1YW4gQ2hvaSAgPHJ5dWFuLmNob2lAbmF2ZXJjb3Jw
LmNvbT4KKworICAgICAgICBbRUZMXSBFeHBvc2UgSmF2YVNjcmlwdCBiaW5kaW5nIGludGVyZmFj
ZSB0aHJvdWdoIGV3a19leHRlbnNpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE0MjAzMworCisgICAgICAgIFJldmlld2VkIGJ5IEd5dXlvdW5nIEtp
bS4KKworICAgICAgICAqIFBsYXRmb3JtRWZsLmNtYWtlOiBJbnN0YWxsIEphdmFzY3JpcHQgQVBJ
cy4KKwogMjAxNS0wMy0xNyAgTWljaGFlbCBTYWJvZmYgIDxtc2Fib2ZmQGFwcGxlLmNvbT4KIAog
ICAgICAgICBXaW5kb3dzIFg4Ni02NCBzaG91bGQgdXNlIHRoZSBmaXhlZCBleGVjdXRhYmxlIGFs
bG9jYXRvcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nCmluZGV4IDllYWE2NzU0MTA1NWE4YmE0OWVlMWE1M2E1ZmIxOWQ2NDYy
YzI1YmMuLmQ2MGY5YzJiY2E0MGY2ZmYwZmYyMDEyNjJhYmViMzZiOTBjMDY2YzYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwzNiBAQAorMjAxNS0wMy0xNyAgUnl1YW4gQ2hvaSAgPHJ5dWFuLmNob2lA
bmF2ZXJjb3JwLmNvbT4KKworICAgICAgICBbRUZMXSBFeHBvc2UgSmF2YVNjcmlwdCBiaW5kaW5n
IGludGVyZmFjZSB0aHJvdWdoIGV3a19leHRlbnNpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MjAzMworCisgICAgICAgIFJldmlld2VkIGJ5IEd5
dXlvdW5nIEtpbS4KKworICAgICAgICAqIFBsYXRmb3JtRWZsLmNtYWtlOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL2V4dGVuc2lvbnMvZXh0ZW5zaW9uX3NhbXBsZS5jcHA6IFJl
Z2lzdGVyZWQgdGVzdCBvYmplY3QgZm9yIG5ldyB0ZXN0IGNhc2UuCisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9lZmwvdGVzdHMvdGVzdF9ld2syX2phdmFzY3JpcHRfYmluZGluZy5jcHA6IEFkZGVk
IHNpbXBsZSBiaW5kaW5nIEFQSSB0ZXN0IGNhc2UuCisgICAgICAgIChFV0syQ29udGV4dFRlc3RX
aXRoRXh0ZW5zaW9uOjptZXNzYWdlUmVjZWl2ZWRDYWxsYmFjayk6CisgICAgICAgIChFV0syQ29u
dGV4dFRlc3RXaXRoRXh0ZW5zaW9uOjpFV0syQ29udGV4dFRlc3RXaXRoRXh0ZW5zaW9uKToKKyAg
ICAgICAgKFRFU1RfRik6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
ZWZsL0VXZWJLaXRfRXh0ZW5zaW9uLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvZWZsL2V3a19leHRlbnNpb24uY3BwOgorICAgICAgICAoRXdrRXh0ZW5zaW9uOjpk
aWRDcmVhdGVQYWdlKToKKyAgICAgICAgKEV3a0V4dGVuc2lvbjo6d2lsbERlc3Ryb3lQYWdlKToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9lZmwvZXdrX2V4dGVuc2lv
bi5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2VmbC9ld2tfZXh0
ZW5zaW9uX3ByaXZhdGUuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9lZmwvZXdrX3BhZ2UuY3BwOiBBZGRlZC4KKyAgICAgICAgKHRvRXdrUGFnZSk6CisgICAgICAg
IChFd2tQYWdlOjpFd2tQYWdlKToKKyAgICAgICAgKEV3a1BhZ2U6OmFwcGVuZCk6CisgICAgICAg
IChFd2tQYWdlOjpyZW1vdmUpOgorICAgICAgICAoRXdrUGFnZTo6ZGlkRmluaXNoRG9jdW1lbnRM
b2FkRm9yRnJhbWUpOgorICAgICAgICAoZXdrX3BhZ2VfanNfZ2xvYmFsX2NvbnRleHRfZ2V0KToK
KyAgICAgICAgKGV3a19wYWdlX2NsaWVudF9yZWdpc3Rlcik6CisgICAgICAgIChld2tfcGFnZV9j
bGllbnRfdW5yZWdpc3Rlcik6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvZWZsL2V3a19wYWdlLmg6IEFkZGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL2VmbC9ld2tfcGFnZV9wcml2YXRlLmg6IEFkZGVkLgorICAgICAgICAoRXdrUGFn
ZTo6cGFnZSk6CisgICAgICAgICogZWZsL2V3ZWJraXQyLWV4dGVuc2lvbi5wYy5pbjoKKwogMjAx
NS0wMy0xNyAgWmFuIERvYmVyc2VrICA8emRvYmVyc2VrQGlnYWxpYS5jb20+CiAKICAgICAgICAg
W1dLMl0gVXNlIEMrKyBsYW1iZGFzIGluIElQQzo6Q29ubmVjdGlvbgpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL1BsYXRmb3JtRWZsLmNtYWtlIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL1BsYXRmb3JtRWZsLmNtYWtlCmluZGV4IDQ0ZjI3Y2E4ZTJmMGE2NjY4NWEyYmVlNjgxYmI4
YTEzM2MyYWY0NTMuLjZjYzhjMGU2NDczZjY2NGRiZDRkNDQwOWE4YzkyYjIxMTI4YmI5YzggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9QbGF0Zm9ybUVmbC5jbWFrZQorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvUGxhdGZvcm1FZmwuY21ha2UKQEAgLTQsMyArNCwxMyBAQCBs
aXN0KEFQUEVORCBKYXZhU2NyaXB0Q29yZV9JTkNMVURFX0RJUkVDVE9SSUVTCiAgICAgJHtFT19J
TkNMVURFX0RJUlN9CiApCiBhZGRfZGVmaW5pdGlvbnMoLURTVEFUSUNBTExZX0xJTktFRF9XSVRI
X1dURikKKworaW5zdGFsbChGSUxFUyBBUEkvSmF2YVNjcmlwdC5oCisgICAgICAgICAgICAgIEFQ
SS9KU0Jhc2UuaAorICAgICAgICAgICAgICBBUEkvSlNDb250ZXh0UmVmLmgKKyAgICAgICAgICAg
ICAgQVBJL0pTT2JqZWN0UmVmLmgKKyAgICAgICAgICAgICAgQVBJL0pTU3RyaW5nUmVmLmgKKyAg
ICAgICAgICAgICAgQVBJL0pTVmFsdWVSZWYuaAorICAgICAgICAgICAgICBBUEkvV2ViS2l0QXZh
aWxhYmlsaXR5LmgKKyAgICAgICAgREVTVElOQVRJT04gIiR7SEVBREVSX0lOU1RBTExfRElSfS9K
YXZhU2NyaXB0Q29yZSIKKykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZs
LmNtYWtlIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UKaW5kZXggODA4NWYxOGEx
YWY1M2Q5MWU2MjFlNzlmZWFlNmZlNjgyOTRmOGExNC4uM2E0ZjVmNTEwMTNkZmZmNDhhNGI0ZmI4
ODUzMmRlM2FkNTM4NTMxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwu
Y21ha2UKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UKQEAgLTE3OSw2ICsx
NzksNyBAQCBsaXN0KEFQUEVORCBXZWJLaXQyX1NPVVJDRVMKICAgICBXZWJQcm9jZXNzL0Nvb2tp
ZXMvc291cC9XZWJLaXRTb3VwQ29va2llSmFyU3FsaXRlLmNwcAogCiAgICAgV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvZWZsL2V3a19leHRlbnNpb24uY3BwCisgICAgV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvZWZsL2V3a19wYWdlLmNwcAogCiAgICAgV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9lZmwvSW5qZWN0ZWRCdW5kbGVFZmwuY3BwCiAKQEAgLTQwNiwxMCArNDA3LDEx
IEBAIHNldChFV2ViS2l0Ml9IRUFERVJTCiBzZXQoRVdlYktpdDJfRXh0ZW5zaW9uX0hFQURFUlMK
ICAgICAiJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL2VmbC9FV2ViS2l0X0V4dGVuc2lvbi5oIgogICAgICIke0NNQUtFX0NVUlJFTlRfU09V
UkNFX0RJUn0vV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZWZsL2V3a19leHRlbnNpb24u
aCIKKyAgICAiJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL2VmbC9ld2tfcGFnZS5oIgogKQogCi1pbnN0YWxsKEZJTEVTICR7RVdlYktpdDJf
SEVBREVSU30gREVTVElOQVRJT04gaW5jbHVkZS8ke1dlYktpdDJfT1VUUFVUX05BTUV9LSR7UFJP
SkVDVF9WRVJTSU9OX01BSk9SfSkKLWluc3RhbGwoRklMRVMgJHtFV2ViS2l0Ml9FeHRlbnNpb25f
SEVBREVSU30gREVTVElOQVRJT04gaW5jbHVkZS8ke1dlYktpdDJfT1VUUFVUX05BTUV9LSR7UFJP
SkVDVF9WRVJTSU9OX01BSk9SfS9leHRlbnNpb24pCitpbnN0YWxsKEZJTEVTICR7RVdlYktpdDJf
SEVBREVSU30gREVTVElOQVRJT04gJHtIRUFERVJfSU5TVEFMTF9ESVJ9KQoraW5zdGFsbChGSUxF
UyAke0VXZWJLaXQyX0V4dGVuc2lvbl9IRUFERVJTfSBERVNUSU5BVElPTiAke0hFQURFUl9JTlNU
QUxMX0RJUn0vZXh0ZW5zaW9uKQogCiBpbnN0YWxsKEZJTEVTICR7Q01BS0VfQklOQVJZX0RJUn0v
V2ViS2l0Mi9lZmwvZXdlYmtpdDIucGMgREVTVElOQVRJT04gbGliL3BrZ2NvbmZpZykKIGluc3Rh
bGwoRklMRVMgJHtDTUFLRV9CSU5BUllfRElSfS9XZWJLaXQyL2VmbC9ld2Via2l0Mi1leHRlbnNp
b24ucGMgREVTVElOQVRJT04gbGliL3BrZ2NvbmZpZykKQEAgLTUxMCw2ICs1MTIsNyBAQCBzZXQo
RVdLMlVuaXRUZXN0c19CSU5BUklFUwogICAgIHRlc3RfZXdrMl9laW5hX3NoYXJlZF9zdHJpbmcK
ICAgICB0ZXN0X2V3azJfZmF2aWNvbl9kYXRhYmFzZQogICAgIHRlc3RfZXdrMl9maWxlX2Nob29z
ZXJfcmVxdWVzdAorICAgIHRlc3RfZXdrMl9qYXZhc2NyaXB0X2JpbmRpbmcKICAgICB0ZXN0X2V3
azJfb2JqZWN0CiAgICAgdGVzdF9ld2syX3BhZ2VfZ3JvdXAKICAgICB0ZXN0X2V3azJfcG9wdXBf
bWVudQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMv
ZXh0ZW5zaW9ucy9leHRlbnNpb25fc2FtcGxlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZWZsL3Rlc3RzL2V4dGVuc2lvbnMvZXh0ZW5zaW9uX3NhbXBsZS5jcHAKaW5kZXggMjk0
MTM0M2VjMmJmYjQwMjdlNDEyNmYyNjM5NGE3ZDJjZTEzZmE5ZC4uN2E1ZjVmNzg0NjE0ZTNiOTIx
OTU5MmRkNDViMjcwZmI3Mzg5ODM1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9lZmwvdGVzdHMvZXh0ZW5zaW9ucy9leHRlbnNpb25fc2FtcGxlLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy9leHRlbnNpb25zL2V4dGVuc2lv
bl9zYW1wbGUuY3BwCkBAIC0yNCwxMSArMjQsNjUgQEAKICAqLwogCiAjaW5jbHVkZSAiRVdlYktp
dF9FeHRlbnNpb24uaCIKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Lmg+CiAK
ICNpZmRlZiBfX2NwbHVzcGx1cwogZXh0ZXJuICJDIiB7CiAjZW5kaWYKIAorc3RhdGljIEpTVmFs
dWVSZWYgaGVsbG9DYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVu
Y3Rpb24sIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25z
dCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCit7CisgICAg
RXdrX0V4dGVuc2lvbiogZXh0ZW5zaW9uID0gc3RhdGljX2Nhc3Q8RXdrX0V4dGVuc2lvbio+KEpT
T2JqZWN0R2V0UHJpdmF0ZSh0aGlzT2JqZWN0KSk7CisKKyAgICBFaW5hX1ZhbHVlKiB2YWx1ZSA9
IGVpbmFfdmFsdWVfbmV3KEVJTkFfVkFMVUVfVFlQRV9TVFJJTkcpOworICAgIGVpbmFfdmFsdWVf
c2V0KHZhbHVlLCAiSGVsbG8gZnJvbSBleHRlbnNpb24iKTsKKyAgICBld2tfZXh0ZW5zaW9uX21l
c3NhZ2VfcG9zdChleHRlbnNpb24sICJoZWxsbyIsIHZhbHVlKTsKKyAgICBlaW5hX3ZhbHVlX2Zy
ZWUodmFsdWUpOworCisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK3ZvaWQgbG9hZEZpbmlzaGVk
KEV3a19QYWdlKiBwYWdlLCB2b2lkKiBkYXRhKQoreworICAgIEpTR2xvYmFsQ29udGV4dFJlZiBq
c0NvbnRleHQgPSBld2tfcGFnZV9qc19nbG9iYWxfY29udGV4dF9nZXQocGFnZSk7CisgICAgSlNP
YmplY3RSZWYgd2luZG93T2JqZWN0ID0gSlNDb250ZXh0R2V0R2xvYmFsT2JqZWN0KGpzQ29udGV4
dCk7CisKKyAgICBzdGF0aWMgSlNTdGF0aWNGdW5jdGlvbiBmdW5jdGlvbnNbXSA9IHsKKyAgICAg
ICAgeyAiaGVsbG8iLCBoZWxsb0NhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5
IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCisgICAgICAgIHsgMCwgMCwgMCB9
CisgICAgfTsKKyAgICBzdGF0aWMgSlNDbGFzc0RlZmluaXRpb24gY2xhc3NfZGVmaW5pdGlvbiA9
IHsKKyAgICAgICAgMCwga0pTQ2xhc3NBdHRyaWJ1dGVOb25lLCAiVGVzdCIsIDAsIDAsIGZ1bmN0
aW9ucywKKyAgICAgICAgMCwgMC8qICovLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwCisgICAg
fTsKKyAgICBKU0NsYXNzUmVmIGNsYXN6ID0gSlNDbGFzc0NyZWF0ZSgmY2xhc3NfZGVmaW5pdGlv
bik7CisgICAgSlNPYmplY3RSZWYgb2JqZWN0ID0gSlNPYmplY3RNYWtlKGpzQ29udGV4dCwgY2xh
c3osIGRhdGEpOworICAgIEpTQ2xhc3NSZWxlYXNlKGNsYXN6KTsKKworICAgIEpTT2JqZWN0U2V0
UHJpdmF0ZShvYmplY3QsIGRhdGEpOworCisgICAgSlNWYWx1ZVJlZiBleGNlcHRpb24gPSAwOwor
ICAgIEpTU3RyaW5nUmVmIHByb3BlcnR5ID0gSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmco
InRlc3QiKTsKKyAgICBKU09iamVjdFNldFByb3BlcnR5KGpzQ29udGV4dCwgd2luZG93T2JqZWN0
LCBwcm9wZXJ0eSwgb2JqZWN0LCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJv
cGVydHlBdHRyaWJ1dGVEb250RGVsZXRlLCAmZXhjZXB0aW9uKTsKKyAgICBKU1N0cmluZ1JlbGVh
c2UocHJvcGVydHkpOworfQorCitzdGF0aWMgRXdrX1BhZ2VfQ2xpZW50IHBhZ2VDbGllbnQ7CisK
K3N0YXRpYyB2b2lkIHBhZ2VBZGRlZChFd2tfUGFnZSogcGFnZSwgdm9pZCogZGF0YSkKK3sKKyAg
ICBwYWdlQ2xpZW50LnZlcnNpb24gPSAxOworICAgIHBhZ2VDbGllbnQuZGF0YSA9IGRhdGE7Cisg
ICAgcGFnZUNsaWVudC5sb2FkX2ZpbmlzaGVkID0gbG9hZEZpbmlzaGVkOworCisgICAgZXdrX3Bh
Z2VfY2xpZW50X3JlZ2lzdGVyKHBhZ2UsICZwYWdlQ2xpZW50KTsKK30KKworc3RhdGljIHZvaWQg
cGFnZURlbGV0ZShFd2tfUGFnZSogcGFnZSwgdm9pZCopCit7CisgICAgZXdrX3BhZ2VfY2xpZW50
X3VucmVnaXN0ZXIocGFnZSwgJnBhZ2VDbGllbnQpOworfQorCiBzdGF0aWMgdm9pZCBtZXNzYWdl
UmVjZWl2ZWQoY29uc3QgY2hhciogbmFtZSwgY29uc3QgRWluYV9WYWx1ZSogYm9keSwgdm9pZCog
ZGF0YSkKIHsKICAgICBFaW5hX1ZhbHVlKiB2YWx1ZSA9IGVpbmFfdmFsdWVfbmV3KEVJTkFfVkFM
VUVfVFlQRV9TVFJJTkcpOwpAQCAtNDIsNiArOTYsOCBAQCB2b2lkIGV3a19leHRlbnNpb25faW5p
dChFd2tfRXh0ZW5zaW9uKiBleHRlbnNpb24pCiAgICAgc3RhdGljIEV3a0V4dGVuc2lvbkNsaWVu
dCBjbGllbnQ7CiAgICAgY2xpZW50LnZlcnNpb24gPSAxOwogICAgIGNsaWVudC5kYXRhID0gKHZv
aWQgKilleHRlbnNpb247CisgICAgY2xpZW50LnBhZ2VfYWRkID0gcGFnZUFkZGVkOworICAgIGNs
aWVudC5wYWdlX2RlbCA9IHBhZ2VEZWxldGU7CiAgICAgY2xpZW50Lm1lc3NhZ2VfcmVjZWl2ZWQg
PSBtZXNzYWdlUmVjZWl2ZWQ7CiAKICAgICBld2tfZXh0ZW5zaW9uX2NsaWVudF9hZGQoZXh0ZW5z
aW9uLCAmY2xpZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
ZWZsL3Rlc3RzL3Rlc3RfZXdrMl9qYXZhc2NyaXB0X2JpbmRpbmcuY3BwIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvdGVzdF9ld2syX2phdmFzY3JpcHRfYmluZGluZy5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uODQyZDA3MWVmNjJhZTBkMWEwNjMwMWNlNjIxNGM4NWUwZmRlMjE0ZAot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3Rz
L3Rlc3RfZXdrMl9qYXZhc2NyaXB0X2JpbmRpbmcuY3BwCkBAIC0wLDAgKzEsNjggQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTUgUnl1YW4gQ2hvaSA8cnl1YW4uY2hvaUBnbWFpbC5jb20+LiAg
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSAiRXdrVmlldy5oIgorI2lu
Y2x1ZGUgIlVuaXRUZXN0VXRpbHMvRVdLMlVuaXRUZXN0QmFzZS5oIgorCit1c2luZyBuYW1lc3Bh
Y2UgRVdLMlVuaXRUZXN0OworCitleHRlcm4gRVdLMlVuaXRUZXN0RW52aXJvbm1lbnQqIGVudmly
b25tZW50OworCitzdGF0aWMgY29uc3RleHByIGRvdWJsZSB0ZXN0VGltZW91dFNlY29uZHMgPSAy
LjA7CisKK2NsYXNzIEVXSzJDb250ZXh0VGVzdFdpdGhFeHRlbnNpb24gOiBwdWJsaWMgRVdLMlVu
aXRUZXN0QmFzZSB7CitwdWJsaWM6CisgICAgc3RhdGljIHZvaWQgbWVzc2FnZVJlY2VpdmVkQ2Fs
bGJhY2soY29uc3QgY2hhciogbmFtZSwgY29uc3QgRWluYV9WYWx1ZSogYm9keSwgdm9pZCogdXNl
ckRhdGEpCisgICAgeworICAgICAgICBib29sKiBoYW5kbGVkID0gc3RhdGljX2Nhc3Q8Ym9vbCo+
KHVzZXJEYXRhKTsKKyAgICAgICAgQVNTRVJUX1NUUkVRKCJoZWxsbyIsIG5hbWUpOworCisgICAg
ICAgICpoYW5kbGVkID0gdHJ1ZTsKKyAgICB9CisKK3Byb3RlY3RlZDoKKyAgICBFV0syQ29udGV4
dFRlc3RXaXRoRXh0ZW5zaW9uKCkKKyAgICB7CisgICAgICAgIG1fd2l0aEV4dGVuc2lvbiA9IHRy
dWU7CisgICAgfQorfTsKKworVEVTVF9GKEVXSzJDb250ZXh0VGVzdFdpdGhFeHRlbnNpb24sIGV3
a19qYXZhc2NyaXB0X2JpbmRpbmcpCit7CisgICAgYm9vbCByZWNlaXZlZCA9IGZhbHNlOworICAg
IEV3a19Db250ZXh0KiBjb250ZXh0ID0gZXdrX3ZpZXdfY29udGV4dF9nZXQod2ViVmlldygpKTsK
KworICAgIGV3a19jb250ZXh0X21lc3NhZ2VfZnJvbV9leHRlbnNpb25zX2NhbGxiYWNrX3NldChj
b250ZXh0LCBtZXNzYWdlUmVjZWl2ZWRDYWxsYmFjaywgJnJlY2VpdmVkKTsKKworICAgIGV3a192
aWV3X3VybF9zZXQod2ViVmlldygpLCBlbnZpcm9ubWVudC0+ZGVmYXVsdFRlc3RQYWdlVXJsKCkp
OworICAgIEFTU0VSVF9UUlVFKHdhaXRVbnRpbExvYWRGaW5pc2hlZCgpKTsKKworICAgIGV3a192
aWV3X3NjcmlwdF9leGVjdXRlKHdlYlZpZXcoKSwgInRlc3QuaGVsbG8oKTsiLCBudWxscHRyLCBu
dWxscHRyKTsKKworICAgIEFTU0VSVF9UUlVFKHdhaXRVbnRpbFRydWUocmVjZWl2ZWQsIHRlc3RU
aW1lb3V0U2Vjb25kcykpOworfQorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0FQSS9lZmwvRVdlYktpdF9FeHRlbnNpb24uaCBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2VmbC9FV2ViS2l0X0V4dGVuc2lv
bi5oCmluZGV4IDkwNjAwMWRhNzIxZTAyNjAxZjgyOWM1MmFmM2Y3NDkwNTI5MmJiOTAuLjE2ZTIz
OWRkOTY5MDRmZDY0NjI3OTVmNTBiZWFmMmI0MGFhY2MyYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2VmbC9FV2ViS2l0X0V4dGVuc2lv
bi5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2Vm
bC9FV2ViS2l0X0V4dGVuc2lvbi5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxNCBSeXVhbiBDaG9pIDxyeXVhbi5jaG9pQGdtYWlsLmNvbT4uICBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTUgUnl1YW4gQ2hvaSA8cnl1YW4uY2hv
aUBnbWFpbC5jb20+LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtNTcsNSArNTcsNiBAQAogI2RlZmluZSBFV2ViS2l0X0V4dGVuc2lvbl9o
CiAKICNpbmNsdWRlICJld2tfZXh0ZW5zaW9uLmgiCisjaW5jbHVkZSAiZXdrX3BhZ2UuaCIKIAog
I2VuZGlmIC8vIEVXZWJLaXRfRXh0ZW5zaW9uX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2VmbC9ld2tfZXh0ZW5zaW9uLmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2VmbC9ld2tfZXh0ZW5z
aW9uLmNwcAppbmRleCAxNmYzNDRmMzRkYzY2MTE0NjUyOTJmMzNlMTkyNTFjOGNmYjQ5OTNiLi4x
M2QzNGQ5MjgwMTJjMTc4M2E5OWI5YThmNmYwOTIxOTlmZTU0OTZhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9lZmwvZXdrX2V4dGVuc2lv
bi5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
ZWZsL2V3a19leHRlbnNpb24uY3BwCkBAIC0zMSw3ICszMSw5IEBACiAjaW5jbHVkZSAiV0tCdW5k
bGUuaCIKICNpbmNsdWRlICJXS0J1bmRsZUFQSUNhc3QuaCIKICNpbmNsdWRlICJXS1JldGFpblB0
ci5oIgorI2luY2x1ZGUgIldlYlBhZ2UuaCIKICNpbmNsdWRlICJld2tfZXh0ZW5zaW9uX3ByaXZh
dGUuaCIKKyNpbmNsdWRlICJld2tfcGFnZV9wcml2YXRlLmgiCiAjaW5jbHVkZSA8V2ViS2l0L1dL
U3RyaW5nLmg+CiAjaW5jbHVkZSA8V2ViS2l0L1dLVHlwZS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0
L0NTdHJpbmcuaD4KQEAgLTcwLDE0ICs3MiwzMCBAQCB2b2lkIEV3a0V4dGVuc2lvbjo6cmVtb3Zl
KEV3a19FeHRlbnNpb25fQ2xpZW50KiBjbGllbnQpCiAgICAgbV9jbGllbnRzLnJlbW92ZUZpcnN0
KGNsaWVudCk7CiB9CiAKLXZvaWQgRXdrRXh0ZW5zaW9uOjpkaWRDcmVhdGVQYWdlKFdLQnVuZGxl
UmVmLCBXS0J1bmRsZVBhZ2VSZWYsIGNvbnN0IHZvaWQqKQordm9pZCBFd2tFeHRlbnNpb246OmRp
ZENyZWF0ZVBhZ2UoV0tCdW5kbGVSZWYsIFdLQnVuZGxlUGFnZVJlZiB3a1BhZ2UsIGNvbnN0IHZv
aWQqIGNsaWVudEluZm8pCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBFd2tFeHRlbnNp
b24qIHNlbGYgPSB0b0V3a0V4dGVuZGlvbihjbGllbnRJbmZvKTsKKyAgICBXZWJQYWdlKiBwYWdl
ID0gdG9JbXBsKHdrUGFnZSk7CisKKyAgICBhdXRvIGV3a1BhZ2UgPSBzdGQ6Om1ha2VfdW5pcXVl
PEV3a1BhZ2U+KHBhZ2UpOworICAgIGZvciAoYXV0byYgaXQgOiBzZWxmLT5tX2NsaWVudHMpIHsK
KyAgICAgICAgaWYgKGl0LT5wYWdlX2FkZCkKKyAgICAgICAgICAgIGl0LT5wYWdlX2FkZChld2tQ
YWdlLmdldCgpLCBpdC0+ZGF0YSk7CisgICAgfQorCisgICAgc2VsZi0+bV9wYWdlTWFwLmFkZChw
YWdlLCBXVEY6Om1vdmUoZXdrUGFnZSkpOwogfQogCi12b2lkIEV3a0V4dGVuc2lvbjo6d2lsbERl
c3Ryb3lQYWdlKFdLQnVuZGxlUmVmLCBXS0J1bmRsZVBhZ2VSZWYsIGNvbnN0IHZvaWQqKQordm9p
ZCBFd2tFeHRlbnNpb246OndpbGxEZXN0cm95UGFnZShXS0J1bmRsZVJlZiwgV0tCdW5kbGVQYWdl
UmVmIHdrUGFnZSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKIHsKLSAgICBub3RJbXBsZW1lbnRl
ZCgpOworICAgIEV3a0V4dGVuc2lvbiogc2VsZiA9IHRvRXdrRXh0ZW5kaW9uKGNsaWVudEluZm8p
OworICAgIFdlYlBhZ2UqIHBhZ2UgPSB0b0ltcGwod2tQYWdlKTsKKworICAgIGZvciAoYXV0byYg
aXQgOiBzZWxmLT5tX2NsaWVudHMpIHsKKyAgICAgICAgaWYgKGl0LT5wYWdlX2RlbCkKKyAgICAg
ICAgICAgIGl0LT5wYWdlX2RlbChzZWxmLT5tX3BhZ2VNYXAuZ2V0KHBhZ2UpLCBpdC0+ZGF0YSk7
CisgICAgfQorICAgIHNlbGYtPm1fcGFnZU1hcC5yZW1vdmUocGFnZSk7CiB9CiAKIHZvaWQgRXdr
RXh0ZW5zaW9uOjpkaWRSZWNlaXZlTWVzc2FnZShXS0J1bmRsZVJlZiwgV0tTdHJpbmdSZWYgbWVz
c2FnZU5hbWUsIFdLVHlwZVJlZiBtZXNzYWdlQm9keSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L2VmbC9ld2tfZXh0ZW5zaW9uLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9lZmwvZXdrX2V4dGVuc2lvbi5oCmluZGV4IDRmYTNhZDE4YzkyZDI5YmIyOGJl
MjExOWM1MmI4MWY5ZDdiMjk2MjMuLmJmMWVlODVjZTE0YjFmZTVlNmUxYjE0YTEyNjg0YTM3ZTIy
MTIzY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL2VmbC9ld2tfZXh0ZW5zaW9uLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvZWZsL2V3a19leHRlbnNpb24uaApAQCAtMzgsNiArMzgsMTEg
QEAgZXh0ZXJuICJDIiB7CiAjZW5kaWYKIAogLyoqCisgKiBEZWNsYXJlIEV3a19QYWdlLgorICov
Cit0eXBlZGVmIHN0cnVjdCBFd2tQYWdlIEV3a19QYWdlOworCisvKioKICAqIERlY2xhcmUgRXdr
X0V4dGVuc2lvbi4KICAqLwogdHlwZWRlZiBzdHJ1Y3QgRXdrRXh0ZW5zaW9uIEV3a19FeHRlbnNp
b247CkBAIC01OCwxMCArNjMsMjcgQEAgc3RydWN0IEV3a0V4dGVuc2lvbkNsaWVudCB7CiAgICAg
dm9pZCAqZGF0YTsKIAogICAgIC8qKgorICAgICAqIENhbGxiYWNrcyB0byByZXBvcnQgcGFnZSBh
ZGRlZC4KKyAgICAgKgorICAgICAqIEBwYXJhbSBwYWdlIHBhZ2UgdG8gYmUgZmluaXNoZWQKKyAg
ICAgKiBAcGFyYW0gZGF0YSBkYXRhIG9mIGEgZXh0ZW5zaW9uIGNsaWVudAorICAgICAqLworICAg
IHZvaWQgKCpwYWdlX2FkZCkoRXdrX1BhZ2UqIHBhZ2UsIHZvaWQgKmRhdGEpOworCisgICAgLyoq
CisgICAgICogQ2FsbGJhY2tzIHRvIHJlcG9ydCBwYWdlIHdpbGwgYmUgcmVtb3ZlZC4KKyAgICAg
KgorICAgICAqIEBwYXJhbSBwYWdlIHBhZ2UgdG8gYmUgZmluaXNoZWQKKyAgICAgKiBAcGFyYW0g
ZGF0YSBkYXRhIG9mIGEgZXh0ZW5zaW9uIGNsaWVudAorICAgICAqLworICAgIHZvaWQgKCpwYWdl
X2RlbCkoRXdrX1BhZ2UqIHBhZ2UsIHZvaWQgKmRhdGEpOworCisgICAgLyoqCiAgICAgICogQ2Fs
bGJhY2tzIHRvIHJlY2VpdmUgbWVzc2FnZSBmcm9tIGV3a19jb250ZXh0LgogICAgICAqCiAgICAg
ICogQHBhcmFtIG5hbWUgbmFtZSBvZiBtZXNzYWdlIGZyb20gZXdrX2NvbnRleHQKICAgICAgKiBA
cGFyYW0gYm9keSBib2R5IG9mIG1lc3NhZ2UgZnJvbSBld2tfY29udGV4dAorICAgICAqIEBwYXJh
bSBkYXRhIGRhdGEgb2YgYSBleHRlbnNpb24gY2xpZW50CiAgICAgICovCiAgICAgdm9pZCAoKm1l
c3NhZ2VfcmVjZWl2ZWQpKGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IEVpbmFfVmFsdWUgKmJvZHks
IHZvaWQgKmRhdGEpOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL2VmbC9ld2tfZXh0ZW5zaW9uX3ByaXZhdGUuaCBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2VmbC9ld2tfZXh0ZW5zaW9uX3By
aXZhdGUuaAppbmRleCBkNDcyNzY5NDZlMzk4NTgyMTBjYzcxOTdhYjRmZTk5NGEwYzVmMDVmLi44
ZmZhZGQ1MGQ3MTQ2NGFlOWIwMzAxZWE5ODYzOGU2OTIyNDM0YmY2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9lZmwvZXdrX2V4dGVuc2lv
bl9wcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvZWZsL2V3a19leHRlbnNpb25fcHJpdmF0ZS5oCkBAIC0yNiwxMiArMjYsMTYgQEAKICNp
Zm5kZWYgZXdrX2V4dGVuc2lvbl9wcml2YXRlX2gKICNkZWZpbmUgZXdrX2V4dGVuc2lvbl9wcml2
YXRlX2gKIAorI2luY2x1ZGUgImV3a19wYWdlX3ByaXZhdGUuaCIKICNpbmNsdWRlIDx3dGYvVmVj
dG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgSW5qZWN0ZWRCdW5kbGU7CitjbGFz
cyBXZWJQYWdlOwogfQogCitjbGFzcyBFd2tQYWdlOworCiBjbGFzcyBFd2tFeHRlbnNpb24gewog
cHVibGljOgogICAgIGV4cGxpY2l0IEV3a0V4dGVuc2lvbihXZWJLaXQ6OkluamVjdGVkQnVuZGxl
Kik7CkBAIC01MSw2ICs1NSw3IEBAIHByaXZhdGU6CiAgICAgV2ViS2l0OjpJbmplY3RlZEJ1bmRs
ZSogbV9idW5kbGU7CiAKICAgICBWZWN0b3I8RXdrX0V4dGVuc2lvbl9DbGllbnQqPiBtX2NsaWVu
dHM7CisgICAgSGFzaE1hcDxXZWJLaXQ6OldlYlBhZ2UqLCBzdGQ6OnVuaXF1ZV9wdHI8RXdrUGFn
ZT4+IG1fcGFnZU1hcDsKIH07CiAKICNlbmRpZiAvLyBld2tfZXh0ZW5zaW9uX3ByaXZhdGVfaApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
ZWZsL2V3a19wYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL2VmbC9ld2tfcGFnZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjM4OGQwMzI5ZmNmMTE0MjhhNDNm
NmEyZWZmZDYwYTYyOTQyZjNiZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2VmbC9ld2tfcGFnZS5jcHAKQEAgLTAsMCArMSwx
MzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgUnl1YW4gQ2hvaSA8cnl1YW4uY2hvaUBn
bWFpbC5jb20+LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgImV3a19wYWdlLmgiCisKKyNpbmNsdWRlICJXS0J1bmRsZS5oIgor
I2luY2x1ZGUgIldLQnVuZGxlQVBJQ2FzdC5oIgorI2luY2x1ZGUgIldLQnVuZGxlRnJhbWUuaCIK
KyNpbmNsdWRlICJXZWJGcmFtZS5oIgorI2luY2x1ZGUgIldlYlBhZ2UuaCIKKyNpbmNsdWRlICJl
d2tfcGFnZV9wcml2YXRlLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CisKK3N0YXRpYyBp
bmxpbmUgRXdrUGFnZSogdG9Fd2tQYWdlKGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCit7CisgICAg
cmV0dXJuIGNvbnN0X2Nhc3Q8RXdrUGFnZSo+KHN0YXRpY19jYXN0PGNvbnN0IEV3a1BhZ2UqPihj
bGllbnRJbmZvKSk7Cit9CisKK0V3a1BhZ2U6OkV3a1BhZ2UoV2ViUGFnZSogcGFnZSkKKyAgICA6
IG1fcGFnZShwYWdlKQoreworICAgIFdLQnVuZGxlUGFnZUxvYWRlckNsaWVudFY3IGxvYWRlckNs
aWVudCA9IHsKKyAgICAgICAgeworICAgICAgICAgICAgNywgLy8gdmVyc2lvbgorICAgICAgICAg
ICAgdGhpcywgLy8gY2xpZW50SW5mbworICAgICAgICB9LAorICAgICAgICAwLCAvLyBkaWRTdGFy
dFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lLAorICAgICAgICAwLCAvLyBkaWRSZWNlaXZlU2VydmVy
UmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWRGb3JGcmFtZSwKKyAgICAgICAgMCwgLy8gZGlkRmFp
bFByb3Zpc2lvbmFsTG9hZFdpdGhFcnJvckZvckZyYW1lCisgICAgICAgIDAsIC8vIGRpZENvbW1p
dExvYWRGb3JGcmFtZQorICAgICAgICBkaWRGaW5pc2hEb2N1bWVudExvYWRGb3JGcmFtZSwKKyAg
ICAgICAgMCwgLy8gZGlkRmluaXNoTG9hZEZvckZyYW1lCisgICAgICAgIDAsIC8vIGRpZEZhaWxM
b2FkV2l0aEVycm9yRm9yRnJhbWUKKyAgICAgICAgMCwgLy8gZGlkU2FtZURvY3VtZW50TmF2aWdh
dGlvbkZvckZyYW1lLAorICAgICAgICAwLCAvLyBkaWRSZWNlaXZlVGl0bGVGb3JGcmFtZQorICAg
ICAgICAwLCAvLyBkaWRGaXJzdExheW91dEZvckZyYW1lCisgICAgICAgIDAsIC8vIGRpZEZpcnN0
VmlzdWFsbHlOb25FbXB0eUxheW91dEZvckZyYW1lCisgICAgICAgIDAsIC8vIGRpZFJlbW92ZUZy
YW1lRnJvbUhpZXJhcmNoeQorICAgICAgICAwLCAvLyBkaWREaXNwbGF5SW5zZWN1cmVDb250ZW50
Rm9yRnJhbWUKKyAgICAgICAgMCwgLy8gZGlkUnVuSW5zZWN1cmVDb250ZW50Rm9yRnJhbWUKKyAg
ICAgICAgMCwgLy8gZGlkQ2xlYXJXaW5kb3dPYmplY3RGb3JGcmFtZSwKKyAgICAgICAgMCwgLy8g
ZGlkQ2FuY2VsQ2xpZW50UmVkaXJlY3RGb3JGcmFtZQorICAgICAgICAwLCAvLyB3aWxsUGVyZm9y
bUNsaWVudFJlZGlyZWN0Rm9yRnJhbWUKKyAgICAgICAgMCwgLy8gZGlkSGFuZGxlT25sb2FkRXZl
bnRzRm9yRnJhbWUKKyAgICAgICAgMCwgLy8gZGlkTGF5b3V0Rm9yRnJhbWUKKyAgICAgICAgMCwg
Ly8gZGlkTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0CisgICAgICAgIDAsIC8vIGRpZERl
dGVjdFhTU0ZvckZyYW1lCisgICAgICAgIDAsIC8vIHNob3VsZEdvVG9CYWNrRm9yd2FyZExpc3RJ
dGVtCisgICAgICAgIDAsIC8vIGdsb2JhbE9iamVjdElzQXZhaWxhYmxlRm9yRnJhbWUKKyAgICAg
ICAgMCwgLy8gd2lsbERpc2Nvbm5lY3RET01XaW5kb3dFeHRlbnNpb25Gcm9tR2xvYmFsT2JqZWN0
CisgICAgICAgIDAsIC8vIGRpZFJlY29ubmVjdERPTVdpbmRvd0V4dGVuc2lvblRvR2xvYmFsT2Jq
ZWN0CisgICAgICAgIDAsIC8vIHdpbGxEZXN0cm95R2xvYmFsT2JqZWN0Rm9yRE9NV2luZG93RXh0
ZW5zaW9uCisgICAgICAgIDAsIC8vIGRpZEZpbmlzaFByb2dyZXNzCisgICAgICAgIDAsIC8vIHNo
b3VsZEZvcmNlVW5pdmVyc2FsQWNjZXNzRnJvbUxvY2FsVVJMCisgICAgICAgIDAsIC8vIGRpZFJl
Y2VpdmVJbnRlbnRGb3JGcmFtZV91bmF2YWlsYWJsZQorICAgICAgICAwLCAvLyByZWdpc3Rlcklu
dGVudFNlcnZpY2VGb3JGcmFtZV91bmF2YWlsYWJsZQorICAgICAgICAwLCAvLyBkaWRMYXlvdXQK
KyAgICAgICAgMCwgLy8gZmVhdHVyZXNVc2VkSW5QYWdlCisgICAgICAgIDAsIC8vIHdpbGxMb2Fk
VVJMUmVxdWVzdAorICAgICAgICAwLCAvLyB3aWxsTG9hZERhdGFSZXF1ZXN0CisgICAgICAgIDAg
Ly8gd2lsbERlc3Ryb3lGcmFtZQorICAgIH07CisgICAgV0tCdW5kbGVQYWdlU2V0UGFnZUxvYWRl
ckNsaWVudCh0b0FQSShwYWdlKSwgJmxvYWRlckNsaWVudC5iYXNlKTsKK30KKwordm9pZCBFd2tQ
YWdlOjphcHBlbmQoY29uc3QgRXdrX1BhZ2VfQ2xpZW50KiBjbGllbnQpCit7CisgICAgbV9jbGll
bnRzLmFwcGVuZChjbGllbnQpOworfQorCit2b2lkIEV3a1BhZ2U6OnJlbW92ZShjb25zdCBFd2tf
UGFnZV9DbGllbnQqIGNsaWVudCkKK3sKKyAgICBtX2NsaWVudHMucmVtb3ZlKG1fY2xpZW50cy5m
aW5kKGNsaWVudCkpOworfQorCit2b2lkIEV3a1BhZ2U6OmRpZEZpbmlzaERvY3VtZW50TG9hZEZv
ckZyYW1lKFdLQnVuZGxlUGFnZVJlZiwgV0tCdW5kbGVGcmFtZVJlZiBmcmFtZSwgV0tUeXBlUmVm
KiwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKK3sKKyAgICBpZiAoIVdLQnVuZGxlRnJhbWVJc01h
aW5GcmFtZShmcmFtZSkpCisgICAgICAgIHJldHVybjsKKworICAgIEV3a1BhZ2UqIHNlbGYgPSB0
b0V3a1BhZ2UoY2xpZW50SW5mbyk7CisgICAgZm9yIChhdXRvJiBpdCA6IHNlbGYtPm1fY2xpZW50
cykgeworICAgICAgICBpZiAoaXQtPmxvYWRfZmluaXNoZWQpCisgICAgICAgICAgICBpdC0+bG9h
ZF9maW5pc2hlZChzZWxmLCBpdC0+ZGF0YSk7CisgICAgfQorfQorCitKU0dsb2JhbENvbnRleHRS
ZWYgZXdrX3BhZ2VfanNfZ2xvYmFsX2NvbnRleHRfZ2V0KGNvbnN0IEV3a19QYWdlKiBld2tQYWdl
KQoreworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChld2tQYWdlLCBudWxscHRy
KTsKKworICAgIFdlYkZyYW1lKiBjb3JlRnJhbWUgPSBld2tQYWdlLT5wYWdlKCktPm1haW5XZWJG
cmFtZSgpOworICAgIGlmICghY29yZUZyYW1lKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKwor
ICAgIHJldHVybiBjb3JlRnJhbWUtPmpzQ29udGV4dCgpOworfQorCit2b2lkIGV3a19wYWdlX2Ns
aWVudF9yZWdpc3RlcihFd2tfUGFnZSogZXdrUGFnZSwgY29uc3QgRXdrX1BhZ2VfQ2xpZW50KiBj
bGllbnQpCit7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oZXdrUGFnZSk7CisgICAg
RUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oY2xpZW50KTsKKworICAgIGV3a1BhZ2UtPmFwcGVu
ZChjbGllbnQpOworfQorCit2b2lkIGV3a19wYWdlX2NsaWVudF91bnJlZ2lzdGVyKEV3a19QYWdl
KiBld2tQYWdlLCBjb25zdCBFd2tfUGFnZV9DbGllbnQqIGNsaWVudCkKK3sKKyAgICBFSU5BX1NB
RkVUWV9PTl9OVUxMX1JFVFVSTihld2tQYWdlKTsKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JF
VFVSTihjbGllbnQpOworCisgICAgZXdrUGFnZS0+cmVtb3ZlKGNsaWVudCk7Cit9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9lZmwvZXdr
X3BhZ2UuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2Vm
bC9ld2tfcGFnZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4MTEwMjcxMTA3YjhmNjE2ZGJhNGYzNWQ1YmVlZTk5
ZDViMDdmYjEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9lZmwvZXdrX3BhZ2UuaApAQCAtMCwwICsxLDkzIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE1IFJ5dWFuIENob2kgPHJ5dWFuLmNob2lAZ21haWwuY29tPi4gIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKy8qKgorICogQGZpbGUgICAgZXdrX3BhZ2Uu
aAorICogQGJyaWVmICAgRGVzY3JpYmVzIHRoZSBFd2tfUGFnZSBBUEkuCisgKi8KKworI2lmbmRl
ZiBld2tfcGFnZV9oCisjZGVmaW5lIGV3a19wYWdlX2gKKworI2luY2x1ZGUgPEVpbmEuaD4KKyNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0Jhc2UuaD4KKwordHlwZWRlZiBzdHJ1Y3QgRXdrUGFn
ZSBFd2tfUGFnZTsKKworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiIHsKKyNlbmRpZgor
CitzdHJ1Y3QgRXdrUGFnZUNsaWVudCB7CisgICAgaW50IHZlcnNpb247CisgICAgdm9pZCAqZGF0
YTsKKworICAgIC8qKgorICAgICAqIENhbGxiYWNrcyB0byByZXBvcnQgbG9hZCBmaW5pc2hlZC4K
KyAgICAgKgorICAgICAqIEBwYXJhbSBwYWdlIHBhZ2UgdG8gYmUgZmluaXNoZWQKKyAgICAgKiBA
cGFyYW0gZGF0YSBkYXRhIG9mIGEgcGFnZSBjbGllbnQKKyAgICAgKi8KKyAgICB2b2lkICgqbG9h
ZF9maW5pc2hlZCkoRXdrX1BhZ2UgKnBhZ2UsIHZvaWQgKmRhdGEpOworfTsKK3R5cGVkZWYgc3Ry
dWN0IEV3a1BhZ2VDbGllbnQgRXdrX1BhZ2VfQ2xpZW50OworCisvKioKKyAqIEdldHMgYSBnbG9i
YWwgSmF2YVNjcmlwdCBleGVjdXRpb24gY29udGV4dCBmb3IgdGhlIHBhZ2UuCisgKgorICogQHBh
cmFtIHBhZ2UgcGFnZSB0byBnZXQgYSBnbG9iYWwgSmF2YVNjcmlwdCBleGVjdXRpb24gY29udGV4
dAorICoKKyAqIFRoaXMgZnVuY3Rpb24gcmV0dXJuIGdsb2JhbCBKYXZhU2NyaXB0IGV4ZWN1dGlv
biBjb250ZXh0IHRvIGV4dGVuZCBqYXZhc2NyaXB0IGZ1bmN0aW9uYWxpdHkuCisgKi8KK0VBUEkg
SlNHbG9iYWxDb250ZXh0UmVmIGV3a19wYWdlX2pzX2dsb2JhbF9jb250ZXh0X2dldChjb25zdCBF
d2tfUGFnZSAqcGFnZSk7CisKKy8qKgorICogUmVnaXN0ZXIgYSBwYWdlIGNsaWVudCB3aGljaCBj
b250YWlucyBzZXZlcmFsIGNhbGxiYWNrcyB0byB0aGUgcGFnZS4KKyAqCisgKiBAcGFyYW0gcGFn
ZSBwYWdlIHRvIGF0dGFjaCBwYWdlIGNsaWVudAorICogQHBhcmFtIGNsaWVudCBwYWdlIGNsaWVu
dCB0byBhZGQgdG8gdGhlIHBhZ2UKKyAqCisgKiBUaGlzIGZ1bmN0aW9uIHJlZ2lzdGVycyBhIGNs
aWVudCwgd2hpY2ggY29udGFpbnMgc2V2ZXJhbCBjYWxsYmFja3MgcmVjZWl2aW5nIGV2ZW50cwor
ICogZnJvbSBXZWJQcm9jZXNzIHNpZGUsIHRvIGEgQHAgcGFnZS4KKyAqCisgKiBAc2VlIGV3a19w
YWdlX2NsaWVudF91bnJlZ2lzdGVyCisgKi8KK0VBUEkgdm9pZCBld2tfcGFnZV9jbGllbnRfcmVn
aXN0ZXIoRXdrX1BhZ2UgKnBhZ2UsIGNvbnN0IEV3a19QYWdlX0NsaWVudCAqY2xpZW50KTsKKwor
LyoqCisgKiBVbnJlZ2lzdGVyIGEgY2xpZW50IGZyb20gdGhlIHBhZ2UuCisgKgorICogQHBhcmFt
IHBhZ2UgcGFnZSB0byB1bnJlZ2lzdGVyIGNsaWVudAorICogQHBhcmFtIGNsaWVudCBwYWdlIGNs
aWVudCB3aGljaCBjb250YWlucyB2ZXJzaW9uLCBkYXRhIGFuZCBjYWxsYmFja3MKKyAqCisgKiBA
c2VlIGV3a19wYWdlX2NsaWVudF9yZWdpc3RlcgorICovCitFQVBJIHZvaWQgZXdrX3BhZ2VfY2xp
ZW50X3VucmVnaXN0ZXIoRXdrX1BhZ2UgKnBhZ2UsIGNvbnN0IEV3a19QYWdlX0NsaWVudCAqY2xp
ZW50KTsKKworI2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYKKworI2VuZGlmIC8vIGV3a19w
YWdlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL2VmbC9ld2tfcGFnZV9wcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0FQSS9lZmwvZXdrX3BhZ2VfcHJpdmF0ZS5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFh
NmFlOTFkYzY5ZTM1NjJlMDNiNDM0MzExY2RmOTQwNWMyYjAzNmUKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9lZmwvZXdrX3Bh
Z2VfcHJpdmF0ZS5oCkBAIC0wLDAgKzEsNTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUg
Unl1YW4gQ2hvaSA8cnl1YW4uY2hvaUBnbWFpbC5jb20+LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2lmbmRlZiBld2tfcGFnZV9wcml2YXRlX2gKKyNkZWZpbmUgZXdrX3BhZ2Vf
cHJpdmF0ZV9oCisKK3R5cGVkZWYgc3RydWN0IEV3a1BhZ2VDbGllbnQgRXdrX1BhZ2VfQ2xpZW50
OworCituYW1lc3BhY2UgV2ViS2l0IHsKK2NsYXNzIFdlYlBhZ2U7Cit9CisKK2NsYXNzIEV3a1Bh
Z2UgeworcHVibGljOgorICAgIGV4cGxpY2l0IEV3a1BhZ2UoV2ViS2l0OjpXZWJQYWdlKik7CisK
KyAgICBXZWJLaXQ6OldlYlBhZ2UqIHBhZ2UoKSBjb25zdCB7IHJldHVybiBtX3BhZ2U7IH0KKwor
ICAgIHZvaWQgYXBwZW5kKGNvbnN0IEV3a19QYWdlX0NsaWVudCopOworICAgIHZvaWQgcmVtb3Zl
KGNvbnN0IEV3a19QYWdlX0NsaWVudCopOworCitwcml2YXRlOgorICAgIHN0YXRpYyB2b2lkIGRp
ZEZpbmlzaERvY3VtZW50TG9hZEZvckZyYW1lKFdLQnVuZGxlUGFnZVJlZiwgV0tCdW5kbGVGcmFt
ZVJlZiwgV0tUeXBlUmVmKiwgY29uc3Qgdm9pZCAqKTsKKworICAgIFdlYktpdDo6V2ViUGFnZSog
bV9wYWdlOworICAgIFZlY3Rvcjxjb25zdCBFd2tfUGFnZV9DbGllbnQqPiBtX2NsaWVudHM7Cit9
OworCisjZW5kaWYgLy8gZXdrX3BhZ2VfcHJpdmF0ZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9lZmwvZXdlYmtpdDItZXh0ZW5zaW9uLnBjLmluIGIvU291cmNlL1dlYktpdDIvZWZsL2V3
ZWJraXQyLWV4dGVuc2lvbi5wYy5pbgppbmRleCAyNjE2Y2RjMmY5Mzk1ZWJlNzI5NmQwNTQ4ZmVj
ODAxZmM1MWU4M2M0Li42OWUzYjgzOTcyYWRmMjU3MDM2NTEyY2ZiZmY2ZjAyNzBjZWNkYjI0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9lZmwvZXdlYmtpdDItZXh0ZW5zaW9uLnBjLmluCisr
KyBiL1NvdXJjZS9XZWJLaXQyL2VmbC9ld2Via2l0Mi1leHRlbnNpb24ucGMuaW4KQEAgLTUsNCAr
NSw0IEBAIE5hbWU6IGV3ZWJraXQyLWV4dGVuc2lvbgogRGVzY3JpcHRpb246IEV4dGVuc2lvbiBm
b3IgV2ViS2l0Mi9FRkwoZXdlYmtpdDIpCiBWZXJzaW9uOiBAUFJPSkVDVF9WRVJTSU9OQAogUmVx
dWlyZXM6IGVpbmEKLUNmbGFnczogLUkke2luY2x1ZGVkaXJ9L0BXZWJLaXQyX09VVFBVVF9OQU1F
QC1AUFJPSkVDVF9WRVJTSU9OX01BSk9SQC9leHRlbnNpb24KK0NmbGFnczogLUkke2luY2x1ZGVk
aXJ9L0BXZWJLaXQyX09VVFBVVF9OQU1FQC1AUFJPSkVDVF9WRVJTSU9OX01BSk9SQC9leHRlbnNp
b24gLUkke2luY2x1ZGVkaXJ9L0BXZWJLaXQyX09VVFBVVF9OQU1FQC1AUFJPSkVDVF9WRVJTSU9O
X01BSk9SQApkaWZmIC0tZ2l0IGEvU291cmNlL2NtYWtlL09wdGlvbnNFZmwuY21ha2UgYi9Tb3Vy
Y2UvY21ha2UvT3B0aW9uc0VmbC5jbWFrZQppbmRleCAzYzAyY2M3YThkNzhmODlhMDNiOGZlZDJl
YjZjNjVjYWEwNDliN2Y4Li40NDRhM2IzZGZkOGVhZDAwMTk2NTI2OWZhZTJhMmRhMGJhMDQyZDMw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvY21ha2UvT3B0aW9uc0VmbC5jbWFrZQorKysgYi9Tb3VyY2Uv
Y21ha2UvT3B0aW9uc0VmbC5jbWFrZQpAQCAtMjMsNiArMjMsNyBAQCBzZXQoV2ViS2l0Ml9PVVRQ
VVRfTkFNRSBld2Via2l0MikKIHNldChDUEFDS19TT1VSQ0VfR0VORVJBVE9SIFRCWjIpCiBzZXQo
R0xJQl9DT01QT05FTlRTIGdpbyBnb2JqZWN0IGd0aHJlYWQpCiBzZXQoREFUQV9JTlNUQUxMX0RJ
UiAic2hhcmUvJHtXZWJLaXQyX09VVFBVVF9OQU1FfS0ke1BST0pFQ1RfVkVSU0lPTl9NQUpPUn0i
IENBQ0hFIFBBVEggIkluc3RhbGxhdGlvbiBwYXRoIGZvciB0aGVtZSBkYXRhIikKK3NldChIRUFE
RVJfSU5TVEFMTF9ESVIgImluY2x1ZGUvJHtXZWJLaXQyX09VVFBVVF9OQU1FfS0ke1BST0pFQ1Rf
VkVSU0lPTl9NQUpPUn0iIENBQ0hFIFBBVEggIkluc3RhbGxhdGlvbiBwYXRoIGZvciBoZWFkZXIg
ZmlsZXMiKQogc2V0KFRIRU1FX0JJTkFSWV9ESVIgJHtDTUFLRV9CSU5BUllfRElSfS9XZWJDb3Jl
L3BsYXRmb3JtL2VmbC9EZWZhdWx0VGhlbWUpCiBzZXQoV0VCX0lOU1BFQ1RPUl9ESVIgIiR7REFU
QV9JTlNUQUxMX0RJUn0vaW5zcGVjdG9yIikKIHNldChXRUJJTlNQRUNUT1JVSV9ESVIgIiR7Q01B
S0VfU09VUkNFX0RJUn0vU291cmNlL1dlYkluc3BlY3RvclVJIikKQEAgLTI4NSw0ICsyODYsNCBA
QCBlbmRpZiAoKQogCiBpZiAoRU5BQkxFX1NVQlRMRV9DUllQVE8pCiAgICAgZmluZF9wYWNrYWdl
KEdudVRMUyAzLjAuMCBSRVFVSVJFRCkKLWVuZGlmICgpClwgTm8gbmV3bGluZSBhdCBlbmQgb2Yg
ZmlsZQorZW5kaWYgKCkKZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCA4
MDc3YzY5NzJlYzMxOTYxNDgxYzg5ZTBmMzYxNDI3NWMyNjgyYTYzLi5jYzZjOWFlMTExYWI1NWJk
MGE2MWJkYmY3YmFiODY1YmNmOGQ5ZGVkIDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTUtMDMtMTcgIFJ5dWFuIENob2kgIDxyeXVhbi5j
aG9pQG5hdmVyY29ycC5jb20+CisKKyAgICAgICAgW0VGTF0gRXhwb3NlIEphdmFTY3JpcHQgYmlu
ZGluZyBpbnRlcmZhY2UgdGhyb3VnaCBld2tfZXh0ZW5zaW9uCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDIwMzMKKworICAgICAgICBSZXZpZXdlZCBi
eSBHeXV5b3VuZyBLaW0uCisKKyAgICAgICAgKiBTb3VyY2UvY21ha2UvT3B0aW9uc0VmbC5jbWFr
ZTogQWRkZWQgSEVBREVSX0lOU1RBTExfRElSIHZhcmlhYmxlLgorCiAyMDE1LTAzLTE3ICBQaGls
aXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXSBiYXNp
YyBPcGVuV2ViUlRDIGJ1aWxkIHN1cHBvcnQK
</data>

          </attachment>
      

    </bug>

</bugzilla>