<?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>71218</bug_id>
          
          <creation_ts>2011-10-31 05:34:13 -0700</creation_ts>
          <short_desc>Kill StyleBase.</short_desc>
          <delta_ts>2011-12-04 05:39:04 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>CSS</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="Andreas Kling">kling</reporter>
          <assigned_to name="Andreas Kling">kling</assigned_to>
          <cc>dglazkov</cc>
    
    <cc>japhet</cc>
    
    <cc>koivisto</cc>
    
    <cc>macpherson</cc>
    
    <cc>ossy</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yael</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>493262</commentid>
    <comment_count>0</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2011-10-31 05:34:13 -0700</bug_when>
    <thetext>Let&apos;s get rid of StyleBase and let CSSRule, StyleSheet and friends stand on their own legs!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>493274</commentid>
    <comment_count>1</comment_count>
      <attachid>113044</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2011-10-31 06:29:58 -0700</bug_when>
    <thetext>Created attachment 113044
Le Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>493282</commentid>
    <comment_count>2</comment_count>
      <attachid>113044</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2011-10-31 06:41:42 -0700</bug_when>
    <thetext>Comment on attachment 113044
Le Patch

Attachment 113044 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/10236953</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>493286</commentid>
    <comment_count>3</comment_count>
      <attachid>113044</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-10-31 06:48:10 -0700</bug_when>
    <thetext>Comment on attachment 113044
Le Patch

Attachment 113044 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/10237913</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>493287</commentid>
    <comment_count>4</comment_count>
      <attachid>113044</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2011-10-31 06:49:09 -0700</bug_when>
    <thetext>Comment on attachment 113044
Le Patch

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

r=me, very nice!

&gt; Source/WebCore/css/CSSStyleSheet.cpp:254
&gt; +    for (CSSStyleSheet* sheet = this; sheet; sheet = sheet-&gt;parentStyleSheet()) {
&gt; +        if (Node* ownerNode = sheet-&gt;ownerNode())
&gt; +            return ownerNode-&gt;document();

Wonder if the ownerNode is always found from the root. If so, this could be a root search + assertion that ownerNode is null in child stylesheets.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>493298</commentid>
    <comment_count>5</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2011-10-31 07:13:31 -0700</bug_when>
    <thetext>Committed r98853: &lt;http://trac.webkit.org/changeset/98853&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>493382</commentid>
    <comment_count>6</comment_count>
    <who name="Luke Macpherson">macpherson</who>
    <bug_when>2011-10-31 10:00:10 -0700</bug_when>
    <thetext>I like it. Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>493566</commentid>
    <comment_count>7</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2011-10-31 15:56:20 -0700</bug_when>
    <thetext>It broke the debug build on the Qt bots:

../../WebCore/debug/libwebcore.a(XSLStyleSheetQt.o): In function `~XSLStyleSheet&apos;:
/ramdisk/qt-linux-32-debug/build/WebKitBuild/Debug/WebCore/../../../Source/WebCore/xml/XSLStyleSheetQt.cpp:45: undefined reference to `WebCore::XSLImportRule::parentStyleSheet() const&apos;
/ramdisk/qt-linux-32-debug/build/WebKitBuild/Debug/WebCore/../../../Source/WebCore/xml/XSLStyleSheetQt.cpp:45: undefined reference to `WebCore::XSLImportRule::parentStyleSheet() const&apos;
/ramdisk/qt-linux-32-debug/build/WebKitBuild/Debug/WebCore/../../../Source/WebCore/xml/XSLStyleSheetQt.cpp:45: undefined reference to `WebCore::XSLImportRule::parentStyleSheet() const&apos;

Could you fix the build please?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>493646</commentid>
    <comment_count>8</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2011-10-31 17:11:31 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; It broke the debug build on the Qt bots:
&gt; 
&gt; ../../WebCore/debug/libwebcore.a(XSLStyleSheetQt.o): In function `~XSLStyleSheet&apos;:
&gt; /ramdisk/qt-linux-32-debug/build/WebKitBuild/Debug/WebCore/../../../Source/WebCore/xml/XSLStyleSheetQt.cpp:45: undefined reference to `WebCore::XSLImportRule::parentStyleSheet() const&apos;
&gt; /ramdisk/qt-linux-32-debug/build/WebKitBuild/Debug/WebCore/../../../Source/WebCore/xml/XSLStyleSheetQt.cpp:45: undefined reference to `WebCore::XSLImportRule::parentStyleSheet() const&apos;
&gt; /ramdisk/qt-linux-32-debug/build/WebKitBuild/Debug/WebCore/../../../Source/WebCore/xml/XSLStyleSheetQt.cpp:45: undefined reference to `WebCore::XSLImportRule::parentStyleSheet() const&apos;
&gt; 
&gt; Could you fix the build please?

I&apos;ll fix it first thing tomorrow dude, in the office! :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>493675</commentid>
    <comment_count>9</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2011-10-31 17:46:44 -0700</bug_when>
    <thetext>It seems that WTF_USE_LIBXML2 is false in WebCore.pro. This function is declared in the header, but the cpp file isn&apos;t linked.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>493686</commentid>
    <comment_count>10</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2011-10-31 18:01:11 -0700</bug_when>
    <thetext>Where is WTF_USE_LIBXML2 defined? I can&apos;t see it anywhere.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>493695</commentid>
    <comment_count>11</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2011-10-31 18:11:02 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; Where is WTF_USE_LIBXML2 defined? I can&apos;t see it anywhere.

Checking this non-existent define introduced in http://trac.webkit.org/changeset/89516 . Yael, Andreas have you got any idea what is it?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>493706</commentid>
    <comment_count>12</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2011-10-31 18:42:21 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; (In reply to comment #10)
&gt; &gt; Where is WTF_USE_LIBXML2 defined? I can&apos;t see it anywhere.
&gt; 
&gt; Checking this non-existent define introduced in http://trac.webkit.org/changeset/89516 . Yael, Andreas have you got any idea what is it?

Hm, looks like WebCore/xml/XSLImportRule.cpp should always be built if ENABLE_XSLT; independent of USE_LIBXML2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>494478</commentid>
    <comment_count>13</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2011-11-02 00:45:32 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; (In reply to comment #11)
&gt; &gt; (In reply to comment #10)
&gt; &gt; &gt; Where is WTF_USE_LIBXML2 defined? I can&apos;t see it anywhere.
&gt; &gt; 
&gt; &gt; Checking this non-existent define introduced in http://trac.webkit.org/changeset/89516 . Yael, Andreas have you got any idea what is it?
&gt; 
&gt; Hm, looks like WebCore/xml/XSLImportRule.cpp should always be built if ENABLE_XSLT; independent of USE_LIBXML2

But there isn&apos;t any WTF_USE_LIBXML2 define, so USE(LIBXML2) is always false.

FYI: A workaround landed in http://trac.webkit.org/changeset/98933.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>495086</commentid>
    <comment_count>14</comment_count>
    <who name="Yael">yael</who>
    <bug_when>2011-11-02 17:22:24 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; (In reply to comment #12)
&gt; &gt; (In reply to comment #11)
&gt; &gt; &gt; (In reply to comment #10)
&gt; &gt; &gt; &gt; Where is WTF_USE_LIBXML2 defined? I can&apos;t see it anywhere.
&gt; &gt; &gt; 
&gt; &gt; &gt; Checking this non-existent define introduced in http://trac.webkit.org/changeset/89516 . Yael, Andreas have you got any idea what is it?
&gt; &gt; 
&gt; &gt; Hm, looks like WebCore/xml/XSLImportRule.cpp should always be built if ENABLE_XSLT; independent of USE_LIBXML2
&gt; 
&gt; But there isn&apos;t any WTF_USE_LIBXML2 define, so USE(LIBXML2) is always false.
&gt; 
&gt; FYI: A workaround landed in http://trac.webkit.org/changeset/98933.

WTF_USE_LIBXML2 isn&apos;t defined because I don&apos;t have a solution for mac and Windows. Enabling it requires libxml2 and libxslt.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>495397</commentid>
    <comment_count>15</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2011-11-03 06:08:09 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; (In reply to comment #11)
&gt; &gt; (In reply to comment #10)
&gt; &gt; &gt; Where is WTF_USE_LIBXML2 defined? I can&apos;t see it anywhere.
&gt; &gt; 
&gt; &gt; Checking this non-existent define introduced in http://trac.webkit.org/changeset/89516 . Yael, Andreas have you got any idea what is it?
&gt; 
&gt; Hm, looks like WebCore/xml/XSLImportRule.cpp should always be built if ENABLE_XSLT; independent of USE_LIBXML2

It would be better than the landed hacky workaround.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>495400</commentid>
    <comment_count>16</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2011-11-03 06:17:05 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; (In reply to comment #12)
&gt; &gt; (In reply to comment #11)
&gt; &gt; &gt; (In reply to comment #10)
&gt; &gt; &gt; &gt; Where is WTF_USE_LIBXML2 defined? I can&apos;t see it anywhere.
&gt; &gt; &gt; 
&gt; &gt; &gt; Checking this non-existent define introduced in http://trac.webkit.org/changeset/89516 . Yael, Andreas have you got any idea what is it?
&gt; &gt; 
&gt; &gt; Hm, looks like WebCore/xml/XSLImportRule.cpp should always be built if ENABLE_XSLT; independent of USE_LIBXML2
&gt; 
&gt; It would be better than the landed hacky workaround.

Yep, not sure why that was never fixed; I told Renata it was the wrong solution. Anyhow, no reason to revert that change, the method should remain inline.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>514677</commentid>
    <comment_count>17</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2011-12-04 05:39:04 -0800</bug_when>
    <thetext>No build issue remains.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>113044</attachid>
            <date>2011-10-31 06:29:58 -0700</date>
            <delta_ts>2011-10-31 18:11:34 -0700</delta_ts>
            <desc>Le Patch</desc>
            <filename>bug-71218.diff</filename>
            <type>text/plain</type>
            <size>47611</size>
            <attacher name="Andreas Kling">kling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQKaW5kZXggMDEzZjk0OC4uNTkzZTQ5MyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKQEAgLTQ5Myw3ICs0OTMsNiBAQCBTRVQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgY3NzL1JH
QkNvbG9yLmNwcAogICAgIGNzcy9TZWxlY3RvckNoZWNrZXIuY3BwCiAgICAgY3NzL1NoYWRvd1Zh
bHVlLmNwcAotICAgIGNzcy9TdHlsZUJhc2UuY3BwCiAgICAgY3NzL1N0eWxlTWVkaWEuY3BwCiAg
ICAgY3NzL1N0eWxlU2hlZXQuY3BwCiAgICAgY3NzL1N0eWxlU2hlZXRMaXN0LmNwcApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CmluZGV4IGFjYzk1ZDQuLmZhZGRlZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMzIgQEAKKzIw
MTEtMTAtMzEgIEFuZHJlYXMgS2xpbmcgIDxrbGluZ0B3ZWJraXQub3JnPgorCisgICAgICAgIEtp
bGwgU3R5bGVCYXNlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NzEyMTgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBSZW1vdmUgdGhlIFN0eWxlQmFzZSBjbGFzcyBhbmQgbWFrZSBhbGwgc3ViY2xhc3NlcyBz
dGFuZCBhbG9uZS4gQ1NTUnVsZSBhbmQgU3R5bGVTaGVldAorICAgICAgICBub3cgaW5oZXJpdCBm
cm9tIFJlZkNvdW50ZWQ8VD4gaW5zdGVhZCwgYW5kIFhTTEltcG9ydFJ1bGUgZG9lc24ndCBldmVu
IG5lZWQgdGhhdCwKKyAgICAgICAgc28gU3R5bGVCYXNlIGlzIHJlcGxhY2VkIGJ5IG5vdGhpbmcu
CisKKyAgICAgICAgKiBjc3MvU3R5bGVCYXNlLmNwcDoKKyAgICAgICAgKiBjc3MvU3R5bGVCYXNl
Lmg6CisKKyAgICAgICAgICAgIFJlbW92ZWQuCisKKyAgICAgICAgKiBjc3MvQ1NTUnVsZS5jcHA6
CisgICAgICAgICogY3NzL0NTU1J1bGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1J1bGU6On5D
U1NSdWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1J1bGU6OnVzZVN0cmljdFBhcnNpbmcpOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTUnVsZTo6c2V0UGFyZW50U3R5bGVTaGVldCk6CisgICAgICAg
IChXZWJDb3JlOjpDU1NSdWxlOjpzZXRQYXJlbnRSdWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkNT
U1J1bGU6OnBhcmVudFN0eWxlU2hlZXQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUnVsZTo6cGFy
ZW50UnVsZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NSdWxlOjpiYXNlVVJMKToKKyAgICAgICAg
KFdlYkNvcmU6OkNTU1J1bGU6OkNTU1J1bGUpOgorCisgICAgICAgICAgICBDU1NSdWxlIG5vdyBp
bmhlcml0cyBkaXJlY3RseSBmcm9tIFJlZkNvdW50ZWQsIGFuZCBoYXMgZWl0aGVyIGEgQ1NTUnVs
ZSBvciBhCisgICAgICAgICAgICBDU1NTdHlsZVNoZWV0IGFzIGl0cyBwYXJlbnQuIE1hZGUgdGhl
c2UgZ2V0dGVycy9zZXR0ZXJzIGlubGluZSBzaW5jZSB0aGV5IGFyZQorICAgICAgICAgICAgdHJp
dmlhbCBub3cuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBHTlVtYWtl
ZmlsZS5saXN0LmFtOgorICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBXZWJDb3Jl
LnBybzoKKyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajoKKyAgICAgICAg
KiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKKyAgICAgICAgICAgIFB1cmdl
IFN0eWxlQmFzZS4qIGZyb20gdGhlIGJ1aWxkIHN5c3RlbXMuCisKKyAgICAgICAgKiBiaW5kaW5n
cy9qcy9KU0RPTUJpbmRpbmcuaDoKKyAgICAgICAgKFdlYkNvcmU6OnJvb3QpOgorCisgICAgICAg
ICAgICBOZXcgcm9vdCgpIGZ1bmN0aW9ucyBmb3IgQ1NTUnVsZSBhbmQgU3R5bGVTaGVldC4KKwor
ICAgICAgICAqIGJpbmRpbmdzL2pzL0pTTm9kZUN1c3RvbS5oOgorCisgICAgICAgICAgICBSZW1v
dmUgU3R5bGVCYXNlLmggaW5jbHVkZS4KKworICAgICAgICAqIGNzcy9DU1NTdHlsZVNoZWV0Lmg6
CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNoZWV0OjpwYXJlbnRTdHlsZVNoZWV0KToKKwor
ICAgICAgICAgICAgQWRkZWQgQ1NTLXNwZWNpZmljIHBhcmVudFN0eWxlU2hlZXQoKSBzbyB3ZSBk
b24ndCBoYXZlIHRvIGNhc3QgaXQgdG8gYQorICAgICAgICAgICAgQ1NTU3R5bGVTaGVldCogYXQg
dGhlIGNhbGwgc2l0ZXMuCisKKyAgICAgICAgKiBjc3MvU3R5bGVTaGVldC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTdHlsZVNoZWV0OjpTdHlsZVNoZWV0KToKKyAgICAgICAgKFdlYkNvcmU6OlN0
eWxlU2hlZXQ6OnBhcmVudFN0eWxlU2hlZXQpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVTaGVl
dDo6YmFzZVVSTCk6CisgICAgICAgICogY3NzL1N0eWxlU2hlZXQuaDoKKyAgICAgICAgKFdlYkNv
cmU6OlN0eWxlU2hlZXQ6OnBhcmVudFJ1bGUpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVTaGVl
dDo6c2V0UGFyZW50UnVsZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVNoZWV0Ojppc0NTU1N0
eWxlU2hlZXQpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVTaGVldDo6aXNYU0xTdHlsZVNoZWV0
KToKKworICAgICAgICAgICAgTW92ZSB0aGUgcmVsZXZhbnQgZ3V0cyBmcm9tIFN0eWxlQmFzZSBk
b3duIGludG8gU3R5bGVTaGVldC4KKworICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRTdHls
ZVNoZWV0Q2xpZW50Lmg6CisKKyAgICAgICAgICAgIFJlbW92ZSB1bm5lY2Vzc2FyeSBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRCwgd2UgZ2V0IGl0IGZyb20gQ2FjaGVkUmVzb3VyY2VDbGllbnQuCisK
KyAgICAgICAgKiBzdmcvU1ZHRm9udEZhY2VFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNWR0ZvbnRGYWNlRWxlbWVudDo6aW5zZXJ0ZWRJbnRvRG9jdW1lbnQpOgorICAgICAgICAqIHht
bC9YU0xJbXBvcnRSdWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhTTEltcG9ydFJ1bGU6OlhT
TEltcG9ydFJ1bGUpOgorICAgICAgICAoV2ViQ29yZTo6WFNMSW1wb3J0UnVsZTo6flhTTEltcG9y
dFJ1bGUpOgorICAgICAgICAoV2ViQ29yZTo6WFNMSW1wb3J0UnVsZTo6cGFyZW50U3R5bGVTaGVl
dCk6CisgICAgICAgIChXZWJDb3JlOjpYU0xJbXBvcnRSdWxlOjpzZXRYU0xTdHlsZVNoZWV0KToK
KyAgICAgICAgKFdlYkNvcmU6OlhTTEltcG9ydFJ1bGU6OmxvYWRTaGVldCk6CisKKyAgICAgICAg
KiB4bWwvWFNMSW1wb3J0UnVsZS5oOgorICAgICAgICAoV2ViQ29yZTo6WFNMSW1wb3J0UnVsZTo6
Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlhTTEltcG9ydFJ1bGU6OnNldFBhcmVudFN0eWxl
U2hlZXQpOgorCisgICAgICAgICAgICBSZW1vdmUgaW5oZXJpdGFuY2UgZnJvbSBTdHlsZUJhc2Us
IGFuZCBoYXZlIGNyZWF0ZSgpIHJldHVybiBhIFBhc3NPd25QdHIgaW5zdGVhZC4KKyAgICAgICAg
ICAgIFRoaXMgaXMgZmluZSwgc2luY2UgWFNMU3R5bGVTaGVldCBpcyB0aGUgb25seSBvYmplY3Qg
dGhhdCBldmVyIG1hbmFnZXMgdGhlc2UgcnVsZXMuCisKKyAgICAgICAgKiBjc3MvQ1NTU3R5bGVT
aGVldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNoZWV0Ojp+Q1NTU3R5bGVTaGVl
dCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNoZWV0Ojpvd25lclJ1bGUpOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTU3R5bGVTaGVldDo6ZGVsZXRlUnVsZSk6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NTdHlsZVNoZWV0OjpjaGVja0xvYWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHls
ZVNoZWV0Ojpkb2N1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNoZWV0OjpzdHls
ZVNoZWV0Q2hhbmdlZCk6CisgICAgICAgICogY3NzL0NTU0ltcG9ydFJ1bGUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTSW1wb3J0UnVsZTo6fkNTU0ltcG9ydFJ1bGUpOgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTSW1wb3J0UnVsZTo6c2V0Q1NTU3R5bGVTaGVldCk6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NJbXBvcnRSdWxlOjppbnNlcnRlZEludG9QYXJlbnQpOgorICAgICAgICAqIGNzcy9DU1NN
ZWRpYVJ1bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTTWVkaWFSdWxlOjpDU1NNZWRpYVJ1
bGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTTWVkaWFSdWxlOjp+Q1NTTWVkaWFSdWxlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU01lZGlhUnVsZTo6YXBwZW5kKToKKyAgICAgICAgKFdlYkNvcmU6
OkNTU01lZGlhUnVsZTo6aW5zZXJ0UnVsZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NNZWRpYVJ1
bGU6OmRlbGV0ZVJ1bGUpOgorICAgICAgICAqIGNzcy9DU1NSZWdpb25TdHlsZVJ1bGUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTUmVnaW9uU3R5bGVSdWxlOjpDU1NSZWdpb25TdHlsZVJ1bGUp
OgorICAgICAgICAoV2ViQ29yZTo6Q1NTUmVnaW9uU3R5bGVSdWxlOjp+Q1NTUmVnaW9uU3R5bGVS
dWxlKToKKyAgICAgICAgKiBjc3MvQ1NTUnVsZUxpc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q1NTUnVsZUxpc3Q6OmRlbGV0ZVJ1bGUpOgorICAgICAgICAqIGNzcy9DU1NTdHlsZURlY2xhcmF0
aW9uLmg6CisgICAgICAgICogY3NzL1dlYktpdENTU0tleWZyYW1lc1J1bGUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViS2l0Q1NTS2V5ZnJhbWVzUnVsZTo6fldlYktpdENTU0tleWZyYW1lc1J1
bGUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0Q1NTS2V5ZnJhbWVzUnVsZTo6c2V0TmFtZSk6
CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRDU1NLZXlmcmFtZXNSdWxlOjphcHBlbmQpOgorICAg
ICAgICAqIGRvbS9Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UHJvY2Vzc2luZ0luc3RydWN0aW9uOjpwYXJzZVN0eWxlU2hlZXQpOgorICAgICAgICAqIGluc3Bl
Y3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JD
U1NBZ2VudDo6cGFyZW50U3R5bGVTaGVldCk6CisgICAgICAgICogeG1sL1hTTFN0eWxlU2hlZXQu
aDoKKyAgICAgICAgKiB4bWwvWFNMU3R5bGVTaGVldExpYnhzbHQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6WFNMU3R5bGVTaGVldDo6WFNMU3R5bGVTaGVldCk6CisgICAgICAgIChXZWJDb3JlOjpY
U0xTdHlsZVNoZWV0Ojp+WFNMU3R5bGVTaGVldCk6CisgICAgICAgIChXZWJDb3JlOjpYU0xTdHls
ZVNoZWV0OjpjaGVja0xvYWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpYU0xTdHlsZVNoZWV0Ojps
b2FkQ2hpbGRTaGVldCk6CisgICAgICAgICogeG1sL1hTTFN0eWxlU2hlZXRRdC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpYU0xTdHlsZVNoZWV0Ojp+WFNMU3R5bGVTaGVldCk6CisKKyAgICAgICAg
ICAgIFVzZSB0aGUgbmV3LCBtb3JlIGV4cGxpY2l0LCBwYXJlbnRpbmcgZnVuY3Rpb25zIG9mIFN0
eWxlU2hlZXQuCisKIDIwMTEtMTAtMzEgIFl1cnkgU2VtaWtoYXRza3kgIDx5dXJ5c0BjaHJvbWl1
bS5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZC4gQWRkIFJlc291cmNlUHJldmlld1ZpZXcuanMg
dG8gdGhlIGxpc3Qgb2YgaW5zcGVjdG9yIGZyb250LWVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxp
c3QuYW0KaW5kZXggYmEzYTI5Ny4uNWRhYzczMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
R05VbWFrZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0
LmFtCkBAIC0xMDkxLDggKzEwOTEsNiBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9X
ZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuaCBcCiAJU291cmNlL1dlYkNvcmUvY3NzL1NoYWRv
d1ZhbHVlLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvY3NzL1NoYWRvd1ZhbHVlLmggXAotCVNvdXJj
ZS9XZWJDb3JlL2Nzcy9TdHlsZUJhc2UuY3BwIFwKLQlTb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVC
YXNlLmggXAogCVNvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZU1lZGlhLmNwcCBcCiAJU291cmNlL1dl
YkNvcmUvY3NzL1N0eWxlTWVkaWEuaCBcCiAJU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlU2hlZXQu
Y3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCBmOTFmY2RkLi4xZDY3MWZjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5n
eXBpCkBAIC01MDMsNyArNTAzLDYgQEAKICAgICAgICAgICAgICdjc3MvQ1NTVmFsdWVMaXN0Lmgn
LAogICAgICAgICAgICAgJ2Nzcy9DU1NXcmFwU2hhcGVzLmgnLAogICAgICAgICAgICAgJ2Nzcy9Q
YWlyLmgnLAotICAgICAgICAgICAgJ2Nzcy9TdHlsZUJhc2UuaCcsCiAgICAgICAgICAgICAnY3Nz
L1dlYktpdENTU0ZpbHRlclZhbHVlLmgnLAogICAgICAgICAgICAgJ2Nzcy9XZWJLaXRDU1NUcmFu
c2Zvcm1WYWx1ZS5oJywKICAgICAgICAgICAgICdlZGl0aW5nL0FwcGx5QmxvY2tFbGVtZW50Q29t
bWFuZC5oJywKQEAgLTI0NDksNyArMjQ0OCw2IEBACiAgICAgICAgICAgICAnY3NzL1NlbGVjdG9y
Q2hlY2tlci5oJywKICAgICAgICAgICAgICdjc3MvU2hhZG93VmFsdWUuY3BwJywKICAgICAgICAg
ICAgICdjc3MvU2hhZG93VmFsdWUuaCcsCi0gICAgICAgICAgICAnY3NzL1N0eWxlQmFzZS5jcHAn
LAogICAgICAgICAgICAgJ2Nzcy9TdHlsZU1lZGlhLmNwcCcsCiAgICAgICAgICAgICAnY3NzL1N0
eWxlTWVkaWEuaCcsCiAgICAgICAgICAgICAnY3NzL1N0eWxlU2hlZXQuY3BwJywKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5w
cm8KaW5kZXggZTNiOGVjNy4uY2EwMjdmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5wcm8KKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8KQEAgLTQ0Nyw3ICs0NDcs
NiBAQCBTT1VSQ0VTICs9IFwKICAgICBjc3MvUkdCQ29sb3IuY3BwIFwKICAgICBjc3MvU2VsZWN0
b3JDaGVja2VyLmNwcCBcCiAgICAgY3NzL1NoYWRvd1ZhbHVlLmNwcCBcCi0gICAgY3NzL1N0eWxl
QmFzZS5jcHAgXAogICAgIGNzcy9TdHlsZU1lZGlhLmNwcCBcCiAgICAgY3NzL1N0eWxlU2hlZXQu
Y3BwIFwKICAgICBjc3MvU3R5bGVTaGVldExpc3QuY3BwIFwKQEAgLTE1MjcsNyArMTUyNiw2IEBA
IEhFQURFUlMgKz0gXAogICAgIGNzcy9SR0JDb2xvci5oIFwKICAgICBjc3MvU2VsZWN0b3JDaGVj
a2VyLmggXAogICAgIGNzcy9TaGFkb3dWYWx1ZS5oIFwKLSAgICBjc3MvU3R5bGVCYXNlLmggXAog
ICAgIGNzcy9TdHlsZU1lZGlhLmggXAogICAgIGNzcy9TdHlsZVNoZWV0LmggXAogICAgIGNzcy9T
dHlsZVNoZWV0TGlzdC5oIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNw
cm9qL1dlYkNvcmUudmNwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29y
ZS52Y3Byb2oKaW5kZXggY2ZhMTc2Ny4uMmQzYmQ1NyAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKQEAgLTMyOTMwLDE0ICszMjkzMCw2IEBACiAJCQkJ
PgogCQkJPC9GaWxlPgogCQkJPEZpbGUKLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGNzc1xTdHlsZUJh
c2UuY3BwIgotCQkJCT4KLQkJCTwvRmlsZT4KLQkJCTxGaWxlCi0JCQkJUmVsYXRpdmVQYXRoPSIu
Llxjc3NcU3R5bGVCYXNlLmgiCi0JCQkJPgotCQkJPC9GaWxlPgotCQkJPEZpbGUKIAkJCQlSZWxh
dGl2ZVBhdGg9Ii4uXGNzc1xTdHlsZU1lZGlhLmNwcCIKIAkJCQk+CiAJCQk8L0ZpbGU+CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2og
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXgg
MTc3MDNiMi4uNmYyODE5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMzUxNCw5ICszNTE0LDcgQEAKIAkJQTgwRTZFMTAwQTE5
OTExQzAwN0ZCOEM1IC8qIENTU1N0eWxlRGVjbGFyYXRpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTgwRTZFMEUwQTE5OTExQzAwN0ZCOEM1IC8q
IENTU1N0eWxlRGVjbGFyYXRpb24uY3BwICovOyB9OwogCQlBODBFNzM0RTBBMTk5Qzc3MDA3RkI4
QzUgLyogQ1NTTmFtZXNwYWNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBODBFNzM0NzBBMTk5Qzc3MDA3RkI4QzUgLyogQ1NTTmFtZXNwYWNlLmggKi87
IH07CiAJCUE4MEU3MzRGMEExOTlDNzcwMDdGQjhDNSAvKiBDU1NTZWxlY3Rvci5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBODBFNzM0ODBBMTk5Qzc3
MDA3RkI4QzUgLyogQ1NTU2VsZWN0b3IuY3BwICovOyB9OwotCQlBODBFNzM1MDBBMTk5Qzc3MDA3
RkI4QzUgLyogU3R5bGVCYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBODBFNzM0OTBBMTk5Qzc3MDA3RkI4QzUgLyogU3R5bGVCYXNlLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTgwRTczNTIwQTE5
OUM3NzAwN0ZCOEM1IC8qIENTU1NlbGVjdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBBODBFNzM0QjBBMTk5Qzc3MDA3RkI4QzUgLyogQ1NTU2VsZWN0
b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQlB
ODBFNzM1MzBBMTk5Qzc3MDA3RkI4QzUgLyogU3R5bGVCYXNlLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4MEU3MzRDMEExOTlDNzcwMDdGQjhDNSAv
KiBTdHlsZUJhc2UuY3BwICovOyB9OwogCQlBODBFN0ExNzBBMTlDM0Q2MDA3RkI4QzUgLyogSlNI
VE1MTWV0YUVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQTgwRTdBMTUwQTE5QzNENjAwN0ZCOEM1IC8qIEpTSFRNTE1ldGFFbGVtZW50LmNw
cCAqLzsgfTsKIAkJQTgwRTdBMTgwQTE5QzNENjAwN0ZCOEM1IC8qIEpTSFRNTE1ldGFFbGVtZW50
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBODBFN0Ex
NjBBMTlDM0Q2MDA3RkI4QzUgLyogSlNIVE1MTWV0YUVsZW1lbnQuaCAqLzsgfTsKIAkJQTgwRTdC
MEMwQTE5RDYwNjAwN0ZCOEM1IC8qIEpTSFRNTFRpdGxlRWxlbWVudC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTgwRTdCMDIwQTE5RDYwNjAwN0ZCOEM1
IC8qIEpTSFRNTFRpdGxlRWxlbWVudC5oICovOyB9OwpAQCAtMTA2NzgsOSArMTA2NzYsNyBAQAog
CQlBODBFNkUwRTBBMTk5MTFDMDA3RkI4QzUgLyogQ1NTU3R5bGVEZWNsYXJhdGlvbi5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ1NTU3R5bGVEZWNsYXJhdGlvbi5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4MEU3MzQ3MEExOTlDNzcwMDdGQjhD
NSAvKiBDU1NOYW1lc3BhY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENT
U05hbWVzcGFjZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBODBFNzM0ODBBMTk5
Qzc3MDA3RkI4QzUgLyogQ1NTU2VsZWN0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IENTU1NlbGVjdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJQTgwRTczNDkwQTE5OUM3NzAwN0ZCOEM1IC8qIFN0eWxlQmFzZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gU3R5bGVCYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUE4MEU3MzRCMEExOTlDNzcwMDdGQjhDNSAvKiBDU1NTZWxlY3Rvci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ1NTU2VsZWN0b3IuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJQTgwRTczNEMwQTE5OUM3NzAwN0ZCOEM1IC8qIFN0eWxlQmFzZS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3R5bGVCYXNlLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTgwRTc5OTYwQTE5QkQyMTAwN0ZCOEM1IC8qIFJl
Y3QuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBSZWN0LmlkbDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQTgwRTc5RkMwQTE5QzMwNzAwN0ZCOEM1IC8qIEhUTUxNZXRhRWxlbWVu
dC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxh
c3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEhUTUxNZXRhRWxlbWVudC5pZGw7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4MEU3QTE1MEExOUMzRDYwMDdGQjhDNSAvKiBKU0hU
TUxNZXRhRWxlbWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
SlNIVE1MTWV0YUVsZW1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjA2
MTksOCArMjA2MTUsNiBAQAogCQkJCUU0NEI0QkIyMTQxNjUwRDcwMDJCMUQ4QiAvKiBTZWxlY3Rv
ckNoZWNrZXIuaCAqLywKIAkJCQlBODBFNkNDQTBBMTk4OUNBMDA3RkI4QzUgLyogU2hhZG93VmFs
dWUuY3BwICovLAogCQkJCUE4MEU2Q0JFMEExOTg5Q0EwMDdGQjhDNSAvKiBTaGFkb3dWYWx1ZS5o
ICovLAotCQkJCUE4MEU3MzRDMEExOTlDNzcwMDdGQjhDNSAvKiBTdHlsZUJhc2UuY3BwICovLAot
CQkJCUE4MEU3MzQ5MEExOTlDNzcwMDdGQjhDNSAvKiBTdHlsZUJhc2UuaCAqLywKIAkJCQkwRkY1
MDI2RTEwMkJBOTY2MDA2NkYzOUEgLyogU3R5bGVNZWRpYS5jcHAgKi8sCiAJCQkJMEZGNTAyNkYx
MDJCQTk2QTAwNjZGMzlBIC8qIFN0eWxlTWVkaWEuaCAqLywKIAkJCQkwRkY1MDI3MDEwMkJBOTZB
MDA2NkYzOUEgLyogU3R5bGVNZWRpYS5pZGwgKi8sCkBAIC0yMzk5MCw3ICsyMzk4NCw2IEBACiAJ
CQkJOUI2QzQxNTMxMzQ0OTQ5MDAwMDg1QjYyIC8qIFN0cmluZ1dpdGhEaXJlY3Rpb24uaCBpbiBI
ZWFkZXJzICovLAogCQkJCTg0OUY3Nzc2MEVGRUM2MjAwMDkwODQ5RCAvKiBTdHJva2VTdHlsZUFw
cGxpZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNUVCNkEzMEU4MURDNEYwMEIyNTk2NSAvKiBT
dHlsZUJhY2tncm91bmREYXRhLmggaW4gSGVhZGVycyAqLywKLQkJCQlBODBFNzM1MDBBMTk5Qzc3
MDA3RkI4QzUgLyogU3R5bGVCYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzVFQjY3QjBFODFE
M0JFMDBCMjU5NjUgLyogU3R5bGVCb3hEYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0VGNDQ0
RDBFNjc0NjI4MDAxQzEyODcgLyogU3R5bGVDYWNoZWRJbWFnZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQkM1RUI2N0YwRTgxRDRBNzAwQjI1OTY1IC8qIFN0eWxlRGFzaGJvYXJkUmVnaW9uLmggaW4g
SGVhZGVycyAqLywKQEAgLTI2OTU2LDcgKzI2OTQ5LDYgQEAKIAkJCQlCMkFGRkM5NjBEMDBBNURG
MDAzMDA3NEQgLyogU3RyaW5nTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQjIzNTQwRjIwRDAw
NzgyRTAwMjM4MkZBIC8qIFN0cmluZ1RydW5jYXRvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlC
QzVFQjZBMjBFODFEQzRGMDBCMjU5NjUgLyogU3R5bGVCYWNrZ3JvdW5kRGF0YS5jcHAgaW4gU291
cmNlcyAqLywKLQkJCQlBODBFNzM1MzBBMTk5Qzc3MDA3RkI4QzUgLyogU3R5bGVCYXNlLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUJDNUVCNjdEMEU4MUQ0MjAwMEIyNTk2NSAvKiBTdHlsZUJveERh
dGEuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNFRjQ0N0EwRTY3NDdEMDAwMUMxMjg3IC8qIFN0
eWxlQ2FjaGVkSW1hZ2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQThDNEE3RkUwOUQ1NjMyNzAw
MDNBQzhEIC8qIFN0eWxlZEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oCmluZGV4IGFjZjk0ODcuLjYxOTA5ZTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oCkBAIC0zMCw3ICszMCw2IEBA
CiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJFbGVtZW50LmgiCiAjaW5jbHVkZSAi
TWVkaWFMaXN0LmgiCi0jaW5jbHVkZSAiU3R5bGVCYXNlLmgiCiAjaW5jbHVkZSA8aGVhcC9XZWFr
Lmg+CiAjaW5jbHVkZSA8cnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5oPgogI2luY2x1ZGUgPHJ1
bnRpbWUvTG9va3VwLmg+CkBAIC0xODQsMTQgKzE4MywyNCBAQCBlbnVtIFBhcmFtZXRlck1pc3Np
bmdQb2xpY3kgewogICAgICAgICByZXR1cm4gbm9kZTsKICAgICB9CiAKLSAgICBpbmxpbmUgdm9p
ZCogcm9vdChTdHlsZUJhc2UqIHN0eWxlQmFzZSkKKyAgICBpbmxpbmUgdm9pZCogcm9vdChTdHls
ZVNoZWV0Kik7CisKKyAgICBpbmxpbmUgdm9pZCogcm9vdChDU1NSdWxlKiBydWxlKQogICAgIHsK
LSAgICAgICAgd2hpbGUgKHN0eWxlQmFzZS0+cGFyZW50KCkpCi0gICAgICAgICAgICBzdHlsZUJh
c2UgPSBzdHlsZUJhc2UtPnBhcmVudCgpOworICAgICAgICBpZiAocnVsZS0+cGFyZW50UnVsZSgp
KQorICAgICAgICAgICAgcmV0dXJuIHJvb3QocnVsZS0+cGFyZW50UnVsZSgpKTsKKyAgICAgICAg
aWYgKHJ1bGUtPnBhcmVudFN0eWxlU2hlZXQoKSkKKyAgICAgICAgICAgIHJldHVybiByb290KHJ1
bGUtPnBhcmVudFN0eWxlU2hlZXQoKSk7CisgICAgICAgIHJldHVybiBydWxlOworICAgIH0KIAot
ICAgICAgICBpZiAoTm9kZSogbm9kZSA9IHN0eWxlQmFzZS0+bm9kZSgpKQotICAgICAgICAgICAg
cmV0dXJuIHJvb3Qobm9kZSk7Ci0gICAgICAgIHJldHVybiBzdHlsZUJhc2U7CisgICAgaW5saW5l
IHZvaWQqIHJvb3QoU3R5bGVTaGVldCogc3R5bGVTaGVldCkKKyAgICB7CisgICAgICAgIGlmIChz
dHlsZVNoZWV0LT5wYXJlbnRSdWxlKCkpCisgICAgICAgICAgICByZXR1cm4gcm9vdChzdHlsZVNo
ZWV0LT5wYXJlbnRSdWxlKCkpOworICAgICAgICBpZiAoc3R5bGVTaGVldC0+b3duZXJOb2RlKCkp
CisgICAgICAgICAgICByZXR1cm4gcm9vdChzdHlsZVNoZWV0LT5vd25lck5vZGUoKSk7CisgICAg
ICAgIHJldHVybiBzdHlsZVNoZWV0OwogICAgIH0KIAogICAgIGlubGluZSB2b2lkKiByb290KENT
U1N0eWxlRGVjbGFyYXRpb24qIHN0eWxlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNOb2RlQ3VzdG9tLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05v
ZGVDdXN0b20uaAppbmRleCA1NGMxYTc3Li43Njg4ZWVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU05vZGVDdXN0b20uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU05vZGVDdXN0b20uaApAQCAtMjcsNyArMjcsNiBAQAogI2RlZmluZSBKU05vZGVD
dXN0b21faAogCiAjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCi0jaW5jbHVkZSAiU3R5bGVCYXNl
LmgiCiAjaW5jbHVkZSA8d3RmL0Fsd2F5c0lubGluZS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1wb3J0UnVsZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTSW1wb3J0UnVsZS5jcHAKaW5kZXggMDYxNDg2Yi4uODYzMWEzOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltcG9ydFJ1bGUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NJbXBvcnRSdWxlLmNwcApAQCAtNDksNyArNDksNyBAQCBDU1NJ
bXBvcnRSdWxlOjp+Q1NTSW1wb3J0UnVsZSgpCiAgICAgaWYgKG1fbHN0TWVkaWEpCiAgICAgICAg
IG1fbHN0TWVkaWEtPnNldFBhcmVudFN0eWxlU2hlZXQoMCk7CiAgICAgaWYgKG1fc3R5bGVTaGVl
dCkKLSAgICAgICAgbV9zdHlsZVNoZWV0LT5zZXRQYXJlbnQoMCk7CisgICAgICAgIG1fc3R5bGVT
aGVldC0+c2V0UGFyZW50UnVsZSgwKTsKICAgICBpZiAobV9jYWNoZWRTaGVldCkKICAgICAgICAg
bV9jYWNoZWRTaGVldC0+cmVtb3ZlQ2xpZW50KHRoaXMpOwogfQpAQCAtNTcsNyArNTcsNyBAQCBD
U1NJbXBvcnRSdWxlOjp+Q1NTSW1wb3J0UnVsZSgpCiB2b2lkIENTU0ltcG9ydFJ1bGU6OnNldENT
U1N0eWxlU2hlZXQoY29uc3QgU3RyaW5nJiBocmVmLCBjb25zdCBLVVJMJiBiYXNlVVJMLCBjb25z
dCBTdHJpbmcmIGNoYXJzZXQsIGNvbnN0IENhY2hlZENTU1N0eWxlU2hlZXQqIHNoZWV0KQogewog
ICAgIGlmIChtX3N0eWxlU2hlZXQpCi0gICAgICAgIG1fc3R5bGVTaGVldC0+c2V0UGFyZW50KDAp
OworICAgICAgICBtX3N0eWxlU2hlZXQtPnNldFBhcmVudFJ1bGUoMCk7CiAgICAgbV9zdHlsZVNo
ZWV0ID0gQ1NTU3R5bGVTaGVldDo6Y3JlYXRlKHRoaXMsIGhyZWYsIGJhc2VVUkwsIGNoYXJzZXQp
OwogCiAgICAgYm9vbCBjcm9zc09yaWdpbkNTUyA9IGZhbHNlOwpAQCAtMTI2LDEyICsxMjYsMTIg
QEAgdm9pZCBDU1NJbXBvcnRSdWxlOjppbnNlcnRlZEludG9QYXJlbnQoKQogCiAgICAgLy8gQ2hl
Y2sgZm9yIGEgY3ljbGUgaW4gb3VyIGltcG9ydCBjaGFpbi4gIElmIHdlIGVuY291bnRlciBhIHN0
eWxlc2hlZXQKICAgICAvLyBpbiBvdXIgcGFyZW50IGNoYWluIHdpdGggdGhlIHNhbWUgVVJMLCB0
aGVuIGp1c3QgYmFpbC4KLSAgICBTdHlsZUJhc2UqIHJvb3QgPSB0aGlzOwotICAgIGZvciAoU3R5
bGVCYXNlKiBjdXJyID0gcGFyZW50KCk7IGN1cnI7IGN1cnIgPSBjdXJyLT5wYXJlbnQoKSkgewor
ICAgIENTU1N0eWxlU2hlZXQqIHJvb3RTaGVldDsKKyAgICBmb3IgKENTU1N0eWxlU2hlZXQqIHNo
ZWV0ID0gcGFyZW50U3R5bGVTaGVldCgpOyBzaGVldDsgc2hlZXQgPSBzaGVldC0+cGFyZW50U3R5
bGVTaGVldCgpKSB7CiAgICAgICAgIC8vIEZJWE1FOiBUaGlzIGlzIHdyb25nIGlmIHRoZSBmaW5h
bFVSTCB3YXMgdXBkYXRlZCB2aWEgZG9jdW1lbnQ6OnVwZGF0ZUJhc2VVUkwuCi0gICAgICAgIGlm
IChjdXJyLT5pc0NTU1N0eWxlU2hlZXQoKSAmJiBhYnNIcmVmID09IHN0YXRpY19jYXN0PENTU1N0
eWxlU2hlZXQqPihjdXJyKS0+ZmluYWxVUkwoKS5zdHJpbmcoKSkKKyAgICAgICAgaWYgKGFic0hy
ZWYgPT0gc2hlZXQtPmZpbmFsVVJMKCkuc3RyaW5nKCkpCiAgICAgICAgICAgICByZXR1cm47Ci0g
ICAgICAgIHJvb3QgPSBjdXJyOworICAgICAgICByb290U2hlZXQgPSBzaGVldDsKICAgICB9CiAK
ICAgICBSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdChwYXJlbnRTaGVldC0+ZG9jdW1lbnQoKS0+Y29t
cGxldGVVUkwoYWJzSHJlZikpOwpAQCAtMTQzLDcgKzE0Myw3IEBAIHZvaWQgQ1NTSW1wb3J0UnVs
ZTo6aW5zZXJ0ZWRJbnRvUGFyZW50KCkKICAgICAgICAgLy8gaWYgdGhlIGltcG9ydCBydWxlIGlz
IGlzc3VlZCBkeW5hbWljYWxseSwgdGhlIHNoZWV0IG1heSBiZQogICAgICAgICAvLyByZW1vdmVk
IGZyb20gdGhlIHBlbmRpbmcgc2hlZXQgY291bnQsIHNvIGxldCB0aGUgZG9jIGtub3cKICAgICAg
ICAgLy8gdGhlIHNoZWV0IGJlaW5nIGltcG9ydGVkIGlzIHBlbmRpbmcuCi0gICAgICAgIGlmIChw
YXJlbnRTaGVldCAmJiBwYXJlbnRTaGVldC0+bG9hZENvbXBsZXRlZCgpICYmIHJvb3QgPT0gcGFy
ZW50U2hlZXQpCisgICAgICAgIGlmIChwYXJlbnRTaGVldCAmJiBwYXJlbnRTaGVldC0+bG9hZENv
bXBsZXRlZCgpICYmIHJvb3RTaGVldCA9PSBwYXJlbnRTaGVldCkKICAgICAgICAgICAgIHBhcmVu
dFNoZWV0LT5zdGFydExvYWRpbmdEeW5hbWljU2hlZXQoKTsKICAgICAgICAgbV9sb2FkaW5nID0g
dHJ1ZTsKICAgICAgICAgbV9jYWNoZWRTaGVldC0+YWRkQ2xpZW50KHRoaXMpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU01lZGlhUnVsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTTWVkaWFSdWxlLmNwcAppbmRleCA5ZGE1Yzc5Li42ZmQxZTE4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTTWVkaWFSdWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTTWVkaWFSdWxlLmNwcApAQCAtMzYsNyArMzYsNyBAQCBDU1NNZWRpYVJ1bGU6OkNTU01l
ZGlhUnVsZShDU1NTdHlsZVNoZWV0KiBwYXJlbnQsIFBhc3NSZWZQdHI8TWVkaWFMaXN0PiBtZWRp
YSwgUAogICAgIG1fbHN0TWVkaWEtPnNldFBhcmVudFN0eWxlU2hlZXQocGFyZW50KTsKICAgICBp
bnQgbGVuZ3RoID0gbV9sc3RDU1NSdWxlcy0+bGVuZ3RoKCk7CiAgICAgZm9yIChpbnQgaSA9IDA7
IGkgPCBsZW5ndGg7IGkrKykKLSAgICAgICAgbV9sc3RDU1NSdWxlcy0+aXRlbShpKS0+c2V0UGFy
ZW50KHRoaXMpOworICAgICAgICBtX2xzdENTU1J1bGVzLT5pdGVtKGkpLT5zZXRQYXJlbnRSdWxl
KHRoaXMpOwogfQogCiBDU1NNZWRpYVJ1bGU6On5DU1NNZWRpYVJ1bGUoKQpAQCAtNDYsNyArNDYs
NyBAQCBDU1NNZWRpYVJ1bGU6On5DU1NNZWRpYVJ1bGUoKQogCiAgICAgaW50IGxlbmd0aCA9IG1f
bHN0Q1NTUnVsZXMtPmxlbmd0aCgpOwogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbGVuZ3RoOyBp
KyspCi0gICAgICAgIG1fbHN0Q1NTUnVsZXMtPml0ZW0oaSktPnNldFBhcmVudCgwKTsKKyAgICAg
ICAgbV9sc3RDU1NSdWxlcy0+aXRlbShpKS0+c2V0UGFyZW50UnVsZSgwKTsKIH0KIAogdW5zaWdu
ZWQgQ1NTTWVkaWFSdWxlOjphcHBlbmQoQ1NTUnVsZSogcnVsZSkKQEAgLTU0LDcgKzU0LDcgQEAg
dW5zaWduZWQgQ1NTTWVkaWFSdWxlOjphcHBlbmQoQ1NTUnVsZSogcnVsZSkKICAgICBpZiAoIXJ1
bGUpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgcnVsZS0+c2V0UGFyZW50KHRoaXMpOworICAg
IHJ1bGUtPnNldFBhcmVudFJ1bGUodGhpcyk7CiAgICAgcmV0dXJuIG1fbHN0Q1NTUnVsZXMtPmlu
c2VydFJ1bGUocnVsZSwgbV9sc3RDU1NSdWxlcy0+bGVuZ3RoKCkpOwogfQogCkBAIC04NiwxMSAr
ODYsMTEgQEAgdW5zaWduZWQgQ1NTTWVkaWFSdWxlOjppbnNlcnRSdWxlKGNvbnN0IFN0cmluZyYg
cnVsZSwgdW5zaWduZWQgaW5kZXgsIEV4Y2VwdGlvbkMKICAgICAgICAgcmV0dXJuIDA7CiAgICAg
fQogCi0gICAgbmV3UnVsZS0+c2V0UGFyZW50KHRoaXMpOworICAgIG5ld1J1bGUtPnNldFBhcmVu
dFJ1bGUodGhpcyk7CiAgICAgdW5zaWduZWQgcmV0dXJuZWRJbmRleCA9IG1fbHN0Q1NTUnVsZXMt
Pmluc2VydFJ1bGUobmV3UnVsZS5nZXQoKSwgaW5kZXgpOwogCi0gICAgaWYgKHN0eWxlc2hlZXQo
KSkKLSAgICAgICAgc3R5bGVzaGVldCgpLT5zdHlsZVNoZWV0Q2hhbmdlZCgpOworICAgIGlmIChD
U1NTdHlsZVNoZWV0KiBzdHlsZVNoZWV0ID0gcGFyZW50U3R5bGVTaGVldCgpKQorICAgICAgICBz
dHlsZVNoZWV0LT5zdHlsZVNoZWV0Q2hhbmdlZCgpOwogCiAgICAgcmV0dXJuIHJldHVybmVkSW5k
ZXg7CiB9CkBAIC0xMDYsOCArMTA2LDggQEAgdm9pZCBDU1NNZWRpYVJ1bGU6OmRlbGV0ZVJ1bGUo
dW5zaWduZWQgaW5kZXgsIEV4Y2VwdGlvbkNvZGUmIGVjKQogCiAgICAgbV9sc3RDU1NSdWxlcy0+
ZGVsZXRlUnVsZShpbmRleCk7CiAKLSAgICBpZiAoc3R5bGVzaGVldCgpKQotICAgICAgICBzdHls
ZXNoZWV0KCktPnN0eWxlU2hlZXRDaGFuZ2VkKCk7CisgICAgaWYgKENTU1N0eWxlU2hlZXQqIHN0
eWxlU2hlZXQgPSBwYXJlbnRTdHlsZVNoZWV0KCkpCisgICAgICAgIHN0eWxlU2hlZXQtPnN0eWxl
U2hlZXRDaGFuZ2VkKCk7CiB9CiAKIFN0cmluZyBDU1NNZWRpYVJ1bGU6OmNzc1RleHQoKSBjb25z
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1JlZ2lvblN0eWxlUnVsZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUmVnaW9uU3R5bGVSdWxlLmNwcAppbmRleCAyYmRkNWU3
Li4zNmI4MThjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUmVnaW9uU3R5bGVS
dWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUmVnaW9uU3R5bGVSdWxlLmNwcApA
QCAtNDAsNyArNDAsNyBAQCBDU1NSZWdpb25TdHlsZVJ1bGU6OkNTU1JlZ2lvblN0eWxlUnVsZShD
U1NTdHlsZVNoZWV0KiBwYXJlbnQsIFZlY3RvcjxPd25QdHI8Q1NTUAogICAgICwgbV9ydWxlTGlz
dChydWxlcykKIHsKICAgICBmb3IgKHVuc2lnbmVkIGluZGV4ID0gMDsgaW5kZXggPCBtX3J1bGVM
aXN0LT5sZW5ndGgoKTsgKytpbmRleCkKLSAgICAgICAgbV9ydWxlTGlzdC0+aXRlbShpbmRleCkt
PnNldFBhcmVudCh0aGlzKTsKKyAgICAgICAgbV9ydWxlTGlzdC0+aXRlbShpbmRleCktPnNldFBh
cmVudFJ1bGUodGhpcyk7CiAKICAgICBtX3NlbGVjdG9yTGlzdC5hZG9wdFNlbGVjdG9yVmVjdG9y
KCpzZWxlY3RvcnMpOwogfQpAQCAtNDgsNyArNDgsNyBAQCBDU1NSZWdpb25TdHlsZVJ1bGU6OkNT
U1JlZ2lvblN0eWxlUnVsZShDU1NTdHlsZVNoZWV0KiBwYXJlbnQsIFZlY3RvcjxPd25QdHI8Q1NT
UAogQ1NTUmVnaW9uU3R5bGVSdWxlOjp+Q1NTUmVnaW9uU3R5bGVSdWxlKCkKIHsKICAgICBmb3Ig
KHVuc2lnbmVkIGluZGV4ID0gMDsgaW5kZXggPCBtX3J1bGVMaXN0LT5sZW5ndGgoKTsgKytpbmRl
eCkKLSAgICAgICAgbV9ydWxlTGlzdC0+aXRlbShpbmRleCktPnNldFBhcmVudCgwKTsKKyAgICAg
ICAgbV9ydWxlTGlzdC0+aXRlbShpbmRleCktPnNldFBhcmVudFJ1bGUoMCk7CiB9CiAKIFN0cmlu
ZyBDU1NSZWdpb25TdHlsZVJ1bGU6OmNzc1RleHQoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvY3NzL0NTU1J1bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1J1bGUuY3Bw
CmluZGV4IDQzZDhlYWMuLjkxNWNjMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NSdWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUnVsZS5jcHAKQEAgLTI2LDE5
ICsyNiw2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotQ1NTU3R5bGVTaGVldCogQ1NTUnVs
ZTo6cGFyZW50U3R5bGVTaGVldCgpIGNvbnN0Ci17Ci0gICAgU3R5bGVCYXNlKiBjdXJyID0gcGFy
ZW50KCk7Ci0gICAgd2hpbGUgKGN1cnIgJiYgIWN1cnItPmlzQ1NTU3R5bGVTaGVldCgpKQotICAg
ICAgICBjdXJyID0gY3Vyci0+cGFyZW50KCk7Ci0gICAgcmV0dXJuIGN1cnIgPyBzdGF0aWNfY2Fz
dDxDU1NTdHlsZVNoZWV0Kj4oY3VycikgOiAwOwotfQotCi1DU1NSdWxlKiBDU1NSdWxlOjpwYXJl
bnRSdWxlKCkgY29uc3QKLXsKLSAgICByZXR1cm4gKHBhcmVudCgpICYmIHBhcmVudCgpLT5pc1J1
bGUoKSkgPyBzdGF0aWNfY2FzdDxDU1NSdWxlKj4ocGFyZW50KCkpIDogMDsKLX0KLQogdm9pZCBD
U1NSdWxlOjpzZXRDc3NUZXh0KGNvbnN0IFN0cmluZyYgLypjc3NUZXh0Ki8sIEV4Y2VwdGlvbkNv
ZGUmIC8qZWMqLykKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvY3NzL0NTU1J1bGUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NSdWxlLmgKaW5k
ZXggMDM5Mzg0YS4uNTA4NTY2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1J1
bGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUnVsZS5oCkBAIC0yLDYgKzIsNyBAQAog
ICogKEMpIDE5OTktMjAwMyBMYXJzIEtub2xsIChrbm9sbEBrZGUub3JnKQogICogKEMpIDIwMDIt
MjAwMyBEaXJrIE11ZWxsZXIgKG11ZWxsZXJAa2RlLm9yZykKICAqIENvcHlyaWdodCAoQykgMjAw
MiwgMjAwNiwgMjAwNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTEgQW5kcmVhcyBLbGluZyAoa2xpbmdAd2Via2l0Lm9yZykKICAqCiAgKiBUaGlz
IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
CiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYwpAQCAtMzAsOCArMzEsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB0eXBlZGVm
IGludCBFeGNlcHRpb25Db2RlOwogCi1jbGFzcyBDU1NSdWxlIDogcHVibGljIFN0eWxlQmFzZSB7
CitjbGFzcyBDU1NSdWxlIDogcHVibGljIFJlZkNvdW50ZWQ8Q1NTUnVsZT4gewogcHVibGljOgor
ICAgIHZpcnR1YWwgfkNTU1J1bGUoKSB7IH0KKwogICAgIC8vIEZJWE1FOiBDaGFuZ2UgbmFtZSB0
byBUeXBlLgogICAgIGVudW0gQ1NTUnVsZVR5cGUgewogICAgICAgICBVTktOT1dOX1JVTEUsCkBA
IC01OSw4ICs2MiwzNSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGlzUmVnaW9uU3R5bGVS
dWxlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNJbXBvcnRS
dWxlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIAotICAgIENTU1N0eWxlU2hlZXQqIHBhcmVu
dFN0eWxlU2hlZXQoKSBjb25zdDsKLSAgICBDU1NSdWxlKiBwYXJlbnRSdWxlKCkgY29uc3Q7Cisg
ICAgYm9vbCB1c2VTdHJpY3RQYXJzaW5nKCkgY29uc3QKKyAgICB7CisgICAgICAgIGlmIChwYXJl
bnRSdWxlKCkpCisgICAgICAgICAgICByZXR1cm4gcGFyZW50UnVsZSgpLT51c2VTdHJpY3RQYXJz
aW5nKCk7CisgICAgICAgIGlmIChwYXJlbnRTdHlsZVNoZWV0KCkpCisgICAgICAgICAgICByZXR1
cm4gcGFyZW50U3R5bGVTaGVldCgpLT51c2VTdHJpY3RQYXJzaW5nKCk7CisgICAgICAgIHJldHVy
biB0cnVlOworICAgIH0KKworICAgIHZvaWQgc2V0UGFyZW50U3R5bGVTaGVldChDU1NTdHlsZVNo
ZWV0KiBzdHlsZVNoZWV0KQorICAgIHsKKyAgICAgICAgbV9wYXJlbnRJc1J1bGUgPSBmYWxzZTsK
KyAgICAgICAgbV9wYXJlbnRTdHlsZVNoZWV0ID0gc3R5bGVTaGVldDsKKyAgICB9CisKKyAgICB2
b2lkIHNldFBhcmVudFJ1bGUoQ1NTUnVsZSogcnVsZSkKKyAgICB7CisgICAgICAgIG1fcGFyZW50
SXNSdWxlID0gdHJ1ZTsKKyAgICAgICAgbV9wYXJlbnRSdWxlID0gcnVsZTsKKyAgICB9CisKKyAg
ICBDU1NTdHlsZVNoZWV0KiBwYXJlbnRTdHlsZVNoZWV0KCkgY29uc3QKKyAgICB7CisgICAgICAg
IGlmIChtX3BhcmVudElzUnVsZSkKKyAgICAgICAgICAgIHJldHVybiBtX3BhcmVudFJ1bGUgPyBt
X3BhcmVudFJ1bGUtPnBhcmVudFN0eWxlU2hlZXQoKSA6IDA7CisgICAgICAgIHJldHVybiBtX3Bh
cmVudFN0eWxlU2hlZXQ7CisgICAgfQorCisgICAgQ1NTUnVsZSogcGFyZW50UnVsZSgpIGNvbnN0
IHsgcmV0dXJuIG1fcGFyZW50SXNSdWxlID8gbV9wYXJlbnRSdWxlIDogMDsgfQogCiAgICAgdmly
dHVhbCBTdHJpbmcgY3NzVGV4dCgpIGNvbnN0ID0gMDsKICAgICB2b2lkIHNldENzc1RleHQoY29u
c3QgU3RyaW5nJiwgRXhjZXB0aW9uQ29kZSYpOwpAQCAtNjksMTQgKzk5LDI2IEBAIHB1YmxpYzoK
IAogICAgIHZpcnR1YWwgdm9pZCBpbnNlcnRlZEludG9QYXJlbnQoKSB7IH0KIAorICAgIEtVUkwg
YmFzZVVSTCgpIGNvbnN0CisgICAgeworICAgICAgICBpZiAoQ1NTU3R5bGVTaGVldCogcGFyZW50
U2hlZXQgPSBwYXJlbnRTdHlsZVNoZWV0KCkpCisgICAgICAgICAgICByZXR1cm4gcGFyZW50U2hl
ZXQtPmJhc2VVUkwoKTsKKyAgICAgICAgcmV0dXJuIEtVUkwoKTsKKyAgICB9CisKIHByb3RlY3Rl
ZDoKICAgICBDU1NSdWxlKENTU1N0eWxlU2hlZXQqIHBhcmVudCkKLSAgICAgICAgOiBTdHlsZUJh
c2UocGFyZW50KQorICAgICAgICA6IG1fcGFyZW50SXNSdWxlKGZhbHNlKQorICAgICAgICAsIG1f
cGFyZW50U3R5bGVTaGVldChwYXJlbnQpCiAgICAgewogICAgIH0KIAogcHJpdmF0ZToKLSAgICB2
aXJ0dWFsIGJvb2wgaXNSdWxlKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQorICAgIGJvb2wgbV9w
YXJlbnRJc1J1bGU7CisgICAgdW5pb24geworICAgICAgICBDU1NSdWxlKiBtX3BhcmVudFJ1bGU7
CisgICAgICAgIENTU1N0eWxlU2hlZXQqIG1fcGFyZW50U3R5bGVTaGVldDsKKyAgICB9OwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1J1bGVMaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NSdWxlTGlzdC5jcHAKaW5k
ZXggNzgzOTM2OS4uYThhOWRlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1J1
bGVMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUnVsZUxpc3QuY3BwCkBAIC03
MSw3ICs3MSw4IEBAIHZvaWQgQ1NTUnVsZUxpc3Q6OmRlbGV0ZVJ1bGUodW5zaWduZWQgaW5kZXgp
CiAgICAgaWYgKGluZGV4ID49IG1fbHN0Q1NTUnVsZXMuc2l6ZSgpKQogICAgICAgICByZXR1cm47
CiAKLSAgICBtX2xzdENTU1J1bGVzW2luZGV4XS0+c2V0UGFyZW50KDApOworICAgIC8vIEZJWE1F
OiBPcnBoYW5pbmcgc2hvdWxkIGJlIHRoZSBjYWxsZXIncyByZXNwb25zaWJpbGl0eS4KKyAgICBt
X2xzdENTU1J1bGVzW2luZGV4XS0+c2V0UGFyZW50UnVsZSgwKTsKICAgICBtX2xzdENTU1J1bGVz
LnJlbW92ZShpbmRleCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NT
dHlsZURlY2xhcmF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVEZWNsYXJhdGlv
bi5oCmluZGV4IDU1NmQxMGUuLjlkYjg0Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NTdHlsZURlY2xhcmF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxl
RGVjbGFyYXRpb24uaApAQCAtMjIsNyArMjIsNiBAQAogI2RlZmluZSBDU1NTdHlsZURlY2xhcmF0
aW9uX2gKIAogI2luY2x1ZGUgIkNTU1J1bGUuaCIKLSNpbmNsdWRlICJTdHlsZUJhc2UuaCIKICNp
bmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTaGVldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTU3R5bGVTaGVldC5jcHAKaW5kZXggNTdiMzM5Ni4uMDAyZmNiYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NTdHlsZVNoZWV0LmNwcApAQCAtNzksOCArNzksOCBAQCBDU1NTdHlsZVNoZWV0Ojp+
Q1NTU3R5bGVTaGVldCgpCiAgICAgLy8gaXMgc3RpbGwgb2JzZXJ2YWJsZSBmcm9tIEphdmFTY3Jp
cHQuIFRoaXMgbWF0Y2hlcyB0aGUgYmVoYXZpb3Igb2YgLnBhcmVudE5vZGUgZm9yIG5vZGVzLCBi
dXQKICAgICAvLyBpdCdzIG5vdCBpZGVhbCBiZWNhdXNlIGl0IG1ha2VzIHRoZSBDU1NPTSdzIGJl
aGF2aW9yIGRlcGVuZCBvbiB0aGUgdGltaW5nIG9mIGdhcmJhZ2UgY29sbGVjdGlvbi4KICAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoKCk7ICsraSkgewotICAgICAgICBBU1NFUlQo
aXRlbShpKS0+cGFyZW50KCkgPT0gdGhpcyk7Ci0gICAgICAgIGl0ZW0oaSktPnNldFBhcmVudCgw
KTsKKyAgICAgICAgQVNTRVJUKGl0ZW0oaSktPnBhcmVudFN0eWxlU2hlZXQoKSA9PSB0aGlzKTsK
KyAgICAgICAgaXRlbShpKS0+c2V0UGFyZW50U3R5bGVTaGVldCgwKTsKICAgICB9CiB9CiAKQEAg
LTk4LDcgKzk4LDcgQEAgdm9pZCBDU1NTdHlsZVNoZWV0OjpyZW1vdmUodW5zaWduZWQgaW5kZXgp
CiAKIENTU1J1bGUgKkNTU1N0eWxlU2hlZXQ6Om93bmVyUnVsZSgpIGNvbnN0CiB7Ci0gICAgcmV0
dXJuIChwYXJlbnQoKSAmJiBwYXJlbnQoKS0+aXNSdWxlKCkpID8gc3RhdGljX2Nhc3Q8Q1NTUnVs
ZSo+KHBhcmVudCgpKSA6IDA7CisgICAgcmV0dXJuIHBhcmVudFJ1bGUoKTsKIH0KIAogdW5zaWdu
ZWQgQ1NTU3R5bGVTaGVldDo6aW5zZXJ0UnVsZShjb25zdCBTdHJpbmcmIHJ1bGUsIHVuc2lnbmVk
IGluZGV4LCBFeGNlcHRpb25Db2RlJiBlYykKQEAgLTE3Miw3ICsxNzIsNyBAQCB2b2lkIENTU1N0
eWxlU2hlZXQ6OmRlbGV0ZVJ1bGUodW5zaWduZWQgaW5kZXgsIEV4Y2VwdGlvbkNvZGUmIGVjKQog
ICAgIH0KIAogICAgIGVjID0gMDsKLSAgICBpdGVtKGluZGV4KS0+c2V0UGFyZW50KDApOworICAg
IGl0ZW0oaW5kZXgpLT5zZXRQYXJlbnRTdHlsZVNoZWV0KDApOwogICAgIG1fY2hpbGRyZW4ucmVt
b3ZlKGluZGV4KTsKICAgICBzdHlsZVNoZWV0Q2hhbmdlZCgpOwogfQpAQCAtMjM2LDggKzIzNiw4
IEBAIHZvaWQgQ1NTU3R5bGVTaGVldDo6Y2hlY2tMb2FkZWQoKQogICAgIC8vIFNjcmlwdGFibGVE
b2N1bWVudFBhcnNlcjo6ZXhlY3V0ZVNjcmlwdHNXYWl0aW5nRm9yU3R5bGVzaGVldHMoKS4KICAg
ICAvLyBTZWUgPHJkYXI6Ly9wcm9ibGVtLzY2MjIzMDA+LgogICAgIFJlZlB0cjxDU1NTdHlsZVNo
ZWV0PiBwcm90ZWN0b3IodGhpcyk7Ci0gICAgaWYgKHBhcmVudCgpKQotICAgICAgICBwYXJlbnQo
KS0+Y2hlY2tMb2FkZWQoKTsKKyAgICBpZiAoQ1NTU3R5bGVTaGVldCogc3R5bGVTaGVldCA9IHBh
cmVudFN0eWxlU2hlZXQoKSkKKyAgICAgICAgc3R5bGVTaGVldC0+Y2hlY2tMb2FkZWQoKTsKICAg
ICBtX2xvYWRDb21wbGV0ZWQgPSBvd25lck5vZGUoKSA/IG93bmVyTm9kZSgpLT5zaGVldExvYWRl
ZCgpIDogdHJ1ZTsKIH0KIApAQCAtMjQ5LDM0ICsyNDksMjQgQEAgdm9pZCBDU1NTdHlsZVNoZWV0
OjpzdGFydExvYWRpbmdEeW5hbWljU2hlZXQoKQogCiBEb2N1bWVudCogQ1NTU3R5bGVTaGVldDo6
ZG9jdW1lbnQoKQogewotICAgIFN0eWxlQmFzZSogc3R5bGVPYmplY3QgPSB0aGlzOwotICAgIHdo
aWxlIChzdHlsZU9iamVjdCkgewotICAgICAgICBpZiAoc3R5bGVPYmplY3QtPmlzQ1NTU3R5bGVT
aGVldCgpKSB7Ci0gICAgICAgICAgICBOb2RlKiBvd25lck5vZGUgPSBzdGF0aWNfY2FzdDxDU1NT
dHlsZVNoZWV0Kj4oc3R5bGVPYmplY3QpLT5vd25lck5vZGUoKTsKLSAgICAgICAgICAgIGlmIChv
d25lck5vZGUpCi0gICAgICAgICAgICAgICAgcmV0dXJuIG93bmVyTm9kZS0+ZG9jdW1lbnQoKTsK
LSAgICAgICAgfQotICAgICAgICBpZiAoc3R5bGVPYmplY3QtPmlzUnVsZSgpKQotICAgICAgICAg
ICAgc3R5bGVPYmplY3QgPSBzdGF0aWNfY2FzdDxDU1NSdWxlKj4oc3R5bGVPYmplY3QpLT5wYXJl
bnRTdHlsZVNoZWV0KCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHN0eWxlT2JqZWN0ID0g
c3R5bGVPYmplY3QtPnBhcmVudCgpOworICAgIGZvciAoQ1NTU3R5bGVTaGVldCogc2hlZXQgPSB0
aGlzOyBzaGVldDsgc2hlZXQgPSBzaGVldC0+cGFyZW50U3R5bGVTaGVldCgpKSB7CisgICAgICAg
IGlmIChOb2RlKiBvd25lck5vZGUgPSBzaGVldC0+b3duZXJOb2RlKCkpCisgICAgICAgICAgICBy
ZXR1cm4gb3duZXJOb2RlLT5kb2N1bWVudCgpOwogICAgIH0KLQogICAgIHJldHVybiAwOwogfQog
CiB2b2lkIENTU1N0eWxlU2hlZXQ6OnN0eWxlU2hlZXRDaGFuZ2VkKCkKIHsKLSAgICBTdHlsZUJh
c2UqIHJvb3QgPSB0aGlzOwotICAgIHdoaWxlIChTdHlsZUJhc2UqIHBhcmVudCA9IHJvb3QtPnBh
cmVudCgpKQotICAgICAgICByb290ID0gcGFyZW50OwotICAgIERvY3VtZW50KiBkb2N1bWVudFRv
VXBkYXRlID0gcm9vdC0+aXNDU1NTdHlsZVNoZWV0KCkgPyBzdGF0aWNfY2FzdDxDU1NTdHlsZVNo
ZWV0Kj4ocm9vdCktPmRvY3VtZW50KCkgOiAwOworICAgIENTU1N0eWxlU2hlZXQqIHJvb3RTaGVl
dCA9IHRoaXM7CisgICAgd2hpbGUgKENTU1N0eWxlU2hlZXQqIHBhcmVudCA9IHJvb3RTaGVldC0+
cGFyZW50U3R5bGVTaGVldCgpKQorICAgICAgICByb290U2hlZXQgPSBwYXJlbnQ7CiAKICAgICAv
KiBGSVhNRTogV2UgZG9uJ3QgbmVlZCB0byBkbyBldmVyeXRoaW5nIHVwZGF0ZVN0eWxlU2VsZWN0
b3IgZG9lcywKICAgICAgKiBiYXNpY2FsbHkgd2UganVzdCBuZWVkIHRvIHJlY3JlYXRlIHRoZSBk
b2N1bWVudCdzIHNlbGVjdG9yIHdpdGggdGhlCiAgICAgICogYWxyZWFkeSBleGlzdGluZyBzdHls
ZSBzaGVldHMuCiAgICAgICovCi0gICAgaWYgKGRvY3VtZW50VG9VcGRhdGUpCisgICAgaWYgKERv
Y3VtZW50KiBkb2N1bWVudFRvVXBkYXRlID0gcm9vdFNoZWV0LT5kb2N1bWVudCgpKQogICAgICAg
ICBkb2N1bWVudFRvVXBkYXRlLT5zdHlsZVNlbGVjdG9yQ2hhbmdlZChEZWZlclJlY2FsY1N0eWxl
KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQuaCBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmgKaW5kZXggMzY3ODVhZS4uYWE4NmNj
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTaGVldC5oCkBAIC02Myw2ICs2MywxMyBAQCBwdWJs
aWM6CiAKICAgICB2aXJ0dWFsIH5DU1NTdHlsZVNoZWV0KCk7CiAKKyAgICBDU1NTdHlsZVNoZWV0
KiBwYXJlbnRTdHlsZVNoZWV0KCkgY29uc3QKKyAgICB7CisgICAgICAgIFN0eWxlU2hlZXQqIHBh
cmVudFNoZWV0ID0gU3R5bGVTaGVldDo6cGFyZW50U3R5bGVTaGVldCgpOworICAgICAgICBBU1NF
UlQoIXBhcmVudFNoZWV0IHx8IHBhcmVudFNoZWV0LT5pc0NTU1N0eWxlU2hlZXQoKSk7CisgICAg
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxDU1NTdHlsZVNoZWV0Kj4ocGFyZW50U2hlZXQpOworICAg
IH0KKwogICAgIENTU1J1bGUqIG93bmVyUnVsZSgpIGNvbnN0OwogICAgIFBhc3NSZWZQdHI8Q1NT
UnVsZUxpc3Q+IGNzc1J1bGVzKGJvb2wgb21pdENoYXJzZXRSdWxlcyA9IGZhbHNlKTsKICAgICB1
bnNpZ25lZCBpbnNlcnRSdWxlKGNvbnN0IFN0cmluZyYgcnVsZSwgdW5zaWduZWQgaW5kZXgsIEV4
Y2VwdGlvbkNvZGUmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUJhc2Uu
Y3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlQmFzZS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDgzZTkwNTkuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0
eWxlQmFzZS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw3MiArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAxOTk5LTIwMDMgTGFycyBLbm9sbCAoa25vbGxAa2RlLm9yZykKLSAqICAgICAgICAg
ICAgICAgMTk5OSBXYWxkbyBCYXN0aWFuIChiYXN0aWFuQGtkZS5vcmcpCi0gKiAgICAgICAgICAg
ICAgIDIwMDEgQW5kcmVhcyBTY2hsYXBiYWNoIChzY2hscGJjaEBpYW0udW5pYmUuY2gpCi0gKiAg
ICAgICAgICAgICAgIDIwMDEtMjAwMyBEaXJrIE11ZWxsZXIgKG11ZWxsZXJAa2RlLm9yZykKLSAq
IENvcHlyaWdodCAoQykgMjAwMiwgMjAwNiwgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk
aXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogdmVyc2lvbiAyIG9mIHRoZSBM
aWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRo
aXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNl
ZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxp
ZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQg
YSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiBhbG9u
ZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3
cml0ZSB0bwotICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmts
aW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgot
ICovCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiU3R5bGVCYXNlLmgiCi0KLSNpbmNs
dWRlICJDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbi5oIgotI2luY2x1ZGUgIkRvY3VtZW50Lmgi
Ci0jaW5jbHVkZSAiTm9kZS5oIgotI2luY2x1ZGUgIlN0eWxlU2hlZXQuaCIKLQotbmFtZXNwYWNl
IFdlYkNvcmUgewotCi12b2lkIFN0eWxlQmFzZTo6Y2hlY2tMb2FkZWQoKQotewotICAgIGlmIChw
YXJlbnQoKSkKLSAgICAgICAgcGFyZW50KCktPmNoZWNrTG9hZGVkKCk7Ci19Ci0KLU5vZGUqIFN0
eWxlQmFzZTo6bm9kZSgpCi17Ci0gICAgaWYgKGlzU3R5bGVTaGVldCgpKQotICAgICAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8U3R5bGVTaGVldCo+KHRoaXMpLT5vd25lck5vZGUoKTsKLQotICAgIHJl
dHVybiAwOwotfQotCi1TdHlsZVNoZWV0KiBTdHlsZUJhc2U6OnN0eWxlc2hlZXQoKQotewotICAg
IFN0eWxlQmFzZSAqYiA9IHRoaXM7Ci0gICAgd2hpbGUgKGIgJiYgIWItPmlzU3R5bGVTaGVldCgp
KQotICAgICAgICBiID0gYi0+cGFyZW50KCk7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PFN0eWxl
U2hlZXQqPihiKTsKLX0KLQotS1VSTCBTdHlsZUJhc2U6OmJhc2VVUkwoKSBjb25zdAotewotICAg
IC8vIFRyeSB0byBmaW5kIHRoZSBzdHlsZSBzaGVldC4gSWYgZm91bmQgbG9vayBmb3IgaXRzIFVS
TC4KLSAgICAvLyBJZiBpdCBoYXMgbm9uZSwgZ2V0IHRoZSBVUkwgZnJvbSB0aGUgcGFyZW50IHNo
ZWV0IG9yIHRoZSBwYXJlbnQgbm9kZS4KLQotICAgIFN0eWxlU2hlZXQqIHNoZWV0ID0gY29uc3Rf
Y2FzdDxTdHlsZUJhc2UqPih0aGlzKS0+c3R5bGVzaGVldCgpOwotICAgIGlmICghc2hlZXQpCi0g
ICAgICAgIHJldHVybiBLVVJMKCk7Ci0gICAgaWYgKCFzaGVldC0+ZmluYWxVUkwoKS5pc051bGwo
KSkKLSAgICAgICAgcmV0dXJuIHNoZWV0LT5maW5hbFVSTCgpOwotICAgIGlmIChzaGVldC0+cGFy
ZW50KCkpCi0gICAgICAgIHJldHVybiBzaGVldC0+cGFyZW50KCktPmJhc2VVUkwoKTsKLSAgICBp
ZiAoIXNoZWV0LT5vd25lck5vZGUoKSkKLSAgICAgICAgcmV0dXJuIEtVUkwoKTsKLSAgICByZXR1
cm4gc2hlZXQtPm93bmVyTm9kZSgpLT5kb2N1bWVudCgpLT5iYXNlVVJMKCk7Ci19Ci0KLX0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUJhc2UuaCBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9TdHlsZUJhc2UuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTFmYzY4MC4u
MDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVCYXNlLmgKKysrIC9kZXYvbnVs
bApAQCAtMSw3NCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAxOTk5LTIwMDMgTGFycyBL
bm9sbCAoa25vbGxAa2RlLm9yZykKLSAqIENvcHlyaWdodCAoQykgMTk5OSBXYWxkbyBCYXN0aWFu
IChiYXN0aWFuQGtkZS5vcmcpCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYgU2FtdWVsIFdlaW5pZyAo
c2FtLndlaW5pZ0BnbWlhbC5jb20pCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDYsIDIwMDgg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBm
cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqIG1vZGlmeSBp
dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiBM
aWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRo
ZXIKLSAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkg
bGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhl
IGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5U
WTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJ
VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICog
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICog
WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZQotICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmls
ZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqIHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gKiBCb3N0
b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqLwotCi0jaWZuZGVmIFN0eWxlQmFzZV9oCi0jZGVm
aW5lIFN0eWxlQmFzZV9oCi0KLSNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgotI2luY2x1ZGUgPHd0
Zi9SZWZDb3VudGVkLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotICAgIGNsYXNzIEtVUkw7
Ci0gICAgY2xhc3MgTm9kZTsKLSAgICBjbGFzcyBTdHlsZVNoZWV0OwotCi0gICAgLy8gQmFzZSBj
bGFzcyBmb3IgbW9zdCBDU1MgRE9NIG9iamVjdHMuCi0KLSAgICAvLyBGSVhNRTogV2UgZG9uJ3Qg
bmVlZCB0aGVzZSB0byBhbGwgc2hhcmUgb25lIGJhc2UgY2xhc3MuCi0gICAgLy8gUmVmYWN0b3Ig
c28gdGhleSBkb24ndCBhbnkgbW9yZS4KLQotICAgIGNsYXNzIFN0eWxlQmFzZSA6IHB1YmxpYyBS
ZWZDb3VudGVkPFN0eWxlQmFzZT4gewotICAgIHB1YmxpYzoKLSAgICAgICAgdmlydHVhbCB+U3R5
bGVCYXNlKCkgeyB9Ci0KLSAgICAgICAgU3R5bGVCYXNlKiBwYXJlbnQoKSBjb25zdCB7IHJldHVy
biBtX3BhcmVudDsgfQotICAgICAgICB2b2lkIHNldFBhcmVudChTdHlsZUJhc2UqIHBhcmVudCkg
eyBtX3BhcmVudCA9IHBhcmVudDsgfQotCi0gICAgICAgIC8vIHJldHVybnMgdGhlIHVybCBvZiB0
aGUgc3R5bGUgc2hlZXQgdGhpcyBvYmplY3QgYmVsb25ncyB0bwotICAgICAgICBLVVJMIGJhc2VV
UkwoKSBjb25zdDsKLQotICAgICAgICB2aXJ0dWFsIGJvb2wgaXNSdWxlKCkgY29uc3QgeyByZXR1
cm4gZmFsc2U7IH0KLQotICAgICAgICB2aXJ0dWFsIGJvb2wgaXNTdHlsZVNoZWV0KCkgY29uc3Qg
eyByZXR1cm4gZmFsc2U7IH0KLSAgICAgICAgdmlydHVhbCBib29sIGlzQ1NTU3R5bGVTaGVldCgp
IGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgICAgIHZpcnR1YWwgYm9vbCBpc1hTTFN0eWxl
U2hlZXQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotCi0gICAgICAgIHZpcnR1YWwgdm9pZCBj
aGVja0xvYWRlZCgpOwotCi0gICAgICAgIGJvb2wgdXNlU3RyaWN0UGFyc2luZygpIGNvbnN0IHsg
cmV0dXJuICFtX3BhcmVudCB8fCBtX3BhcmVudC0+dXNlU3RyaWN0UGFyc2luZygpOyB9Ci0KLSAg
ICAgICAgU3R5bGVTaGVldCogc3R5bGVzaGVldCgpOwotICAgICAgICBOb2RlKiBub2RlKCk7Ci0K
LSAgICBwcm90ZWN0ZWQ6Ci0gICAgICAgIFN0eWxlQmFzZShTdHlsZUJhc2UqIHBhcmVudCkKLSAg
ICAgICAgICAgIDogbV9wYXJlbnQocGFyZW50KQotICAgICAgICB7Ci0gICAgICAgIH0KLQotICAg
IHByaXZhdGU6Ci0gICAgICAgIFN0eWxlQmFzZSogbV9wYXJlbnQ7Ci0gICAgfTsKLX0KLQotI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVTaGVldC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvU3R5bGVTaGVldC5jcHAKaW5kZXggZDQwZDM2Yy4uNjRjYTFmNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlU2hlZXQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9TdHlsZVNoZWV0LmNwcApAQCAtMjIsMTMgKzIyLDE0IEBACiAKICNpbmNsdWRl
ICJDU1NSdWxlLmgiCiAjaW5jbHVkZSAiQ1NTU3R5bGVTaGVldC5oIgorI2luY2x1ZGUgIkRvY3Vt
ZW50LmgiCiAjaW5jbHVkZSAiTWVkaWFMaXN0LmgiCiAjaW5jbHVkZSAiTm9kZS5oIgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIFN0eWxlU2hlZXQ6OlN0eWxlU2hlZXQoTm9kZSogcGFyZW50Tm9k
ZSwgY29uc3QgU3RyaW5nJiBvcmlnaW5hbFVSTCwgY29uc3QgS1VSTCYgZmluYWxVUkwpCi0gICAg
OiBTdHlsZUJhc2UoMCkKKyAgICA6IG1fcGFyZW50UnVsZSgwKQogICAgICwgbV9wYXJlbnROb2Rl
KHBhcmVudE5vZGUpCiAgICAgLCBtX29yaWdpbmFsVVJMKG9yaWdpbmFsVVJMKQogICAgICwgbV9m
aW5hbFVSTChmaW5hbFVSTCkKQEAgLTM2LDggKzM3LDggQEAgU3R5bGVTaGVldDo6U3R5bGVTaGVl
dChOb2RlKiBwYXJlbnROb2RlLCBjb25zdCBTdHJpbmcmIG9yaWdpbmFsVVJMLCBjb25zdCBLVVJM
JgogewogfQogCi1TdHlsZVNoZWV0OjpTdHlsZVNoZWV0KFN0eWxlQmFzZSogb3duZXIsIGNvbnN0
IFN0cmluZyYgb3JpZ2luYWxVUkwsIGNvbnN0IEtVUkwmIGZpbmFsVVJMKQotICAgIDogU3R5bGVC
YXNlKG93bmVyKQorU3R5bGVTaGVldDo6U3R5bGVTaGVldChDU1NSdWxlKiBwYXJlbnRSdWxlLCBj
b25zdCBTdHJpbmcmIG9yaWdpbmFsVVJMLCBjb25zdCBLVVJMJiBmaW5hbFVSTCkKKyAgICA6IG1f
cGFyZW50UnVsZShwYXJlbnRSdWxlKQogICAgICwgbV9wYXJlbnROb2RlKDApCiAgICAgLCBtX29y
aWdpbmFsVVJMKG9yaWdpbmFsVVJMKQogICAgICwgbV9maW5hbFVSTChmaW5hbFVSTCkKQEAgLTUz
LDEwICs1NCw4IEBAIFN0eWxlU2hlZXQ6On5TdHlsZVNoZWV0KCkKIAogU3R5bGVTaGVldCogU3R5
bGVTaGVldDo6cGFyZW50U3R5bGVTaGVldCgpIGNvbnN0CiB7Ci0gICAgaWYgKCFwYXJlbnQoKSkK
LSAgICAgICAgcmV0dXJuIDA7Ci0gICAgQVNTRVJUKHBhcmVudCgpLT5pc1J1bGUoKSk7Ci0gICAg
cmV0dXJuIHN0YXRpY19jYXN0PENTU1J1bGUqPihwYXJlbnQoKSktPnBhcmVudFN0eWxlU2hlZXQo
KTsKKyAgICBBU1NFUlQoaXNDU1NTdHlsZVNoZWV0KCkpOworICAgIHJldHVybiBtX3BhcmVudFJ1
bGUgPyBtX3BhcmVudFJ1bGUtPnBhcmVudFN0eWxlU2hlZXQoKSA6IDA7CiB9CiAKIHZvaWQgU3R5
bGVTaGVldDo6c2V0TWVkaWEoUGFzc1JlZlB0cjxNZWRpYUxpc3Q+IG1lZGlhKQpAQCAtNzEsNiAr
NzAsMTcgQEAgdm9pZCBTdHlsZVNoZWV0OjpzZXRNZWRpYShQYXNzUmVmUHRyPE1lZGlhTGlzdD4g
bWVkaWEpCiAgICAgbV9tZWRpYS0+c2V0UGFyZW50U3R5bGVTaGVldChzdGF0aWNfY2FzdDxDU1NT
dHlsZVNoZWV0Kj4odGhpcykpOwogfQogCitLVVJMIFN0eWxlU2hlZXQ6OmJhc2VVUkwoKSBjb25z
dAoreworICAgIGlmICghbV9maW5hbFVSTC5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuIG1fZmlu
YWxVUkw7CisgICAgaWYgKFN0eWxlU2hlZXQqIHBhcmVudFNoZWV0ID0gcGFyZW50U3R5bGVTaGVl
dCgpKQorICAgICAgICByZXR1cm4gcGFyZW50U2hlZXQtPmJhc2VVUkwoKTsKKyAgICBpZiAoIW1f
cGFyZW50Tm9kZSkKKyAgICAgICAgcmV0dXJuIEtVUkwoKTsKKyAgICByZXR1cm4gbV9wYXJlbnRO
b2RlLT5kb2N1bWVudCgpLT5iYXNlVVJMKCk7Cit9CisKIEtVUkwgU3R5bGVTaGVldDo6Y29tcGxl
dGVVUkwoY29uc3QgU3RyaW5nJiB1cmwpIGNvbnN0CiB7CiAgICAgLy8gQWx3YXlzIHJldHVybiBh
IG51bGwgVVJMIHdoZW4gcGFzc2VkIGEgbnVsbCBzdHJpbmcuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvU3R5bGVTaGVldC5oIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlU2hlZXQu
aAppbmRleCA0MDkwOGQwLi5jZmUyN2ZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
U3R5bGVTaGVldC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVNoZWV0LmgKQEAgLTIz
LDE2ICsyMywxNyBAQAogCiAjaW5jbHVkZSAiS1VSTEhhc2guaCIKICNpbmNsdWRlICJQbGF0Zm9y
bVN0cmluZy5oIgotI2luY2x1ZGUgIlN0eWxlQmFzZS5oIgogI2luY2x1ZGUgPHd0Zi9MaXN0SGFz
aFNldC5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAorY2xhc3MgQ1NTUnVsZTsKIGNsYXNzIENhY2hlZENTU1N0eWxlU2hlZXQ7CiBjbGFzcyBN
ZWRpYUxpc3Q7CiBjbGFzcyBOb2RlOwogCi1jbGFzcyBTdHlsZVNoZWV0IDogcHVibGljIFN0eWxl
QmFzZSB7CitjbGFzcyBTdHlsZVNoZWV0IDogcHVibGljIFJlZkNvdW50ZWQ8U3R5bGVTaGVldD4g
ewogcHVibGljOgogICAgIHZpcnR1YWwgflN0eWxlU2hlZXQoKTsKIApAQCAtNDEsNyArNDIsMTEg
QEAgcHVibGljOgogCiAgICAgTm9kZSogb3duZXJOb2RlKCkgY29uc3QgeyByZXR1cm4gbV9wYXJl
bnROb2RlOyB9CiAgICAgdm9pZCBjbGVhck93bmVyTm9kZSgpIHsgbV9wYXJlbnROb2RlID0gMDsg
fQotICAgIFN0eWxlU2hlZXQgKnBhcmVudFN0eWxlU2hlZXQoKSBjb25zdDsKKworICAgIFN0eWxl
U2hlZXQqIHBhcmVudFN0eWxlU2hlZXQoKSBjb25zdDsKKworICAgIENTU1J1bGUqIHBhcmVudFJ1
bGUoKSBjb25zdCB7IHJldHVybiBtX3BhcmVudFJ1bGU7IH0KKyAgICB2b2lkIHNldFBhcmVudFJ1
bGUoQ1NTUnVsZSogcnVsZSkgeyBtX3BhcmVudFJ1bGUgPSBydWxlOyB9CiAKICAgICAvLyBOb3Rl
IHRoYXQgaHJlZiBpcyB0aGUgVVJMIHRoYXQgc3RhcnRlZCB0aGUgcmVkaXJlY3QgY2hhaW4gdGhh
dCBsZWQgdG8KICAgICAvLyB0aGlzIHN0eWxlIHNoZWV0LiBUaGlzIHByb3BlcnR5IHByb2JhYmx5
IGlzbid0IHVzZWZ1bCBmb3IgbXVjaCBleGNlcHQKQEAgLTYzLDEzICs2OCwxNyBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCBLVVJMIGNvbXBsZXRlVVJMKGNvbnN0IFN0cmluZyYgdXJsKSBjb25zdDsK
ICAgICB2aXJ0dWFsIGJvb2wgcGFyc2VTdHJpbmcoY29uc3QgU3RyaW5nJiwgYm9vbCBzdHJpY3Qg
PSB0cnVlKSA9IDA7CiAKKyAgICB2aXJ0dWFsIGJvb2wgaXNDU1NTdHlsZVNoZWV0KCkgY29uc3Qg
eyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNYU0xTdHlsZVNoZWV0KCkgY29u
c3QgeyByZXR1cm4gZmFsc2U7IH0KKworICAgIEtVUkwgYmFzZVVSTCgpIGNvbnN0OworCiBwcm90
ZWN0ZWQ6CiAgICAgU3R5bGVTaGVldChOb2RlKiBvd25lck5vZGUsIGNvbnN0IFN0cmluZyYgaHJl
ZiwgY29uc3QgS1VSTCYgZmluYWxVUkwpOwotICAgIFN0eWxlU2hlZXQoU3R5bGVCYXNlKiBvd25l
ciwgY29uc3QgU3RyaW5nJiBocmVmLCBjb25zdCBLVVJMJiBmaW5hbFVSTCk7CisgICAgU3R5bGVT
aGVldChDU1NSdWxlKiBwYXJlbnRSdWxlLCBjb25zdCBTdHJpbmcmIGhyZWYsIGNvbnN0IEtVUkwm
IGZpbmFsVVJMKTsKIAogcHJpdmF0ZToKLSAgICB2aXJ0dWFsIGJvb2wgaXNTdHlsZVNoZWV0KCkg
Y29uc3QgeyByZXR1cm4gdHJ1ZTsgfQotCisgICAgQ1NTUnVsZSogbV9wYXJlbnRSdWxlOwogICAg
IE5vZGUqIG1fcGFyZW50Tm9kZTsKICAgICBTdHJpbmcgbV9vcmlnaW5hbFVSTDsKICAgICBLVVJM
IG1fZmluYWxVUkw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTS2V5
ZnJhbWVzUnVsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTS2V5ZnJhbWVzUnVs
ZS5jcHAKaW5kZXggN2Q3NmUxNy4uNzdkMzNiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3NzL1dlYktpdENTU0tleWZyYW1lc1J1bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9X
ZWJLaXRDU1NLZXlmcmFtZXNSdWxlLmNwcApAQCAtNDYsNyArNDYsNyBAQCBXZWJLaXRDU1NLZXlm
cmFtZXNSdWxlOjp+V2ViS2l0Q1NTS2V5ZnJhbWVzUnVsZSgpCiAgICAgICAgIFdlYktpdENTU0tl
eWZyYW1lUnVsZSogcnVsZSA9IGl0ZW0oaSk7CiAgICAgICAgIGlmIChDU1NNdXRhYmxlU3R5bGVE
ZWNsYXJhdGlvbiogc3R5bGUgPSBydWxlLT5zdHlsZSgpKQogICAgICAgICAgICAgc3R5bGUtPnNl
dFBhcmVudFJ1bGUoMCk7Ci0gICAgICAgIHJ1bGUtPnNldFBhcmVudCgwKTsKKyAgICAgICAgcnVs
ZS0+c2V0UGFyZW50UnVsZSgwKTsKICAgICB9CiB9CiAKQEAgLTYxLDggKzYxLDggQEAgdm9pZCBX
ZWJLaXRDU1NLZXlmcmFtZXNSdWxlOjpzZXROYW1lKGNvbnN0IFN0cmluZyYgbmFtZSkKIAogICAg
IC8vIFNpbmNlIHRoZSBuYW1lIGlzIHVzZWQgaW4gdGhlIGtleWZyYW1lIG1hcCBsaXN0IGluIENT
U1N0eWxlU2VsZWN0b3IsIHdlIG5lZWQKICAgICAvLyB0byByZWNvbXB1dGUgdGhlIHN0eWxlIHNo
ZWV0IHRvIGdldCB0aGUgdXBkYXRlZCBuYW1lLgotICAgIGlmIChzdHlsZXNoZWV0KCkpCi0gICAg
ICAgIHN0eWxlc2hlZXQoKS0+c3R5bGVTaGVldENoYW5nZWQoKTsKKyAgICBpZiAoQ1NTU3R5bGVT
aGVldCogc3R5bGVTaGVldCA9IHBhcmVudFN0eWxlU2hlZXQoKSkKKyAgICAgICAgc3R5bGVTaGVl
dC0+c3R5bGVTaGVldENoYW5nZWQoKTsKIH0KIAogdW5zaWduZWQgV2ViS2l0Q1NTS2V5ZnJhbWVz
UnVsZTo6bGVuZ3RoKCkgY29uc3QKQEAgLTkwLDcgKzkwLDcgQEAgdm9pZCBXZWJLaXRDU1NLZXlm
cmFtZXNSdWxlOjphcHBlbmQoV2ViS2l0Q1NTS2V5ZnJhbWVSdWxlKiBydWxlKQogICAgICAgICBy
ZXR1cm47CiAKICAgICBtX2xzdENTU1J1bGVzLT5hcHBlbmQocnVsZSk7Ci0gICAgcnVsZS0+c2V0
UGFyZW50KHRoaXMpOworICAgIHJ1bGUtPnNldFBhcmVudFJ1bGUodGhpcyk7CiAKICAgICBpZiAo
Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24qIHN0eWxlID0gcnVsZS0+c3R5bGUoKSkKICAgICAg
ICAgc3R5bGUtPnNldFBhcmVudFJ1bGUodGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vUHJvY2Vzc2luZ0luc3RydWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Qcm9j
ZXNzaW5nSW5zdHJ1Y3Rpb24uY3BwCmluZGV4IDVkYjAwNzEuLjViMGEyZjggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uY3BwCkBAIC0yNDIsNyArMjQyLDEz
IEBAIHZvaWQgUHJvY2Vzc2luZ0luc3RydWN0aW9uOjpwYXJzZVN0eWxlU2hlZXQoY29uc3QgU3Ry
aW5nJiBzaGVldCkKICAgICBtX2NhY2hlZFNoZWV0ID0gMDsKIAogICAgIG1fbG9hZGluZyA9IGZh
bHNlOwotICAgIG1fc2hlZXQtPmNoZWNrTG9hZGVkKCk7CisKKyAgICBpZiAobV9pc0NTUykKKyAg
ICAgICAgc3RhdGljX2Nhc3Q8Q1NTU3R5bGVTaGVldCo+KG1fc2hlZXQuZ2V0KCkpLT5jaGVja0xv
YWRlZCgpOworI2lmIEVOQUJMRShYU0xUKQorICAgIGVsc2UgaWYgKG1faXNYU0wpCisgICAgICAg
IHN0YXRpY19jYXN0PFhTTFN0eWxlU2hlZXQqPihtX3NoZWV0LmdldCgpKS0+Y2hlY2tMb2FkZWQo
KTsKKyNlbmRpZgogfQogCiB2b2lkIFByb2Nlc3NpbmdJbnN0cnVjdGlvbjo6c2V0Q1NTU3R5bGVT
aGVldChQYXNzUmVmUHRyPENTU1N0eWxlU2hlZXQ+IHNoZWV0KQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHAKaW5kZXggMDgzNmNkMy4uOGViMzc0YSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwCkBA
IC0xNzMsMTEgKzE3Myw3IEBAIENTU1N0eWxlU2hlZXQqIEluc3BlY3RvckNTU0FnZW50OjpwYXJl
bnRTdHlsZVNoZWV0KENTU1J1bGUqIHJ1bGUpCiAgICAgaWYgKCFydWxlKQogICAgICAgICByZXR1
cm4gMDsKIAotICAgIFN0eWxlU2hlZXQqIHN0eWxlU2hlZXQgPSBydWxlLT5zdHlsZXNoZWV0KCk7
Ci0gICAgaWYgKHN0eWxlU2hlZXQgJiYgc3R5bGVTaGVldC0+aXNDU1NTdHlsZVNoZWV0KCkpCi0g
ICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxDU1NTdHlsZVNoZWV0Kj4oc3R5bGVTaGVldCk7Ci0K
LSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gcnVsZS0+cGFyZW50U3R5bGVTaGVldCgpOwogfQog
CiAvLyBzdGF0aWMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRTdHlsZVNoZWV0Q2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
U3R5bGVTaGVldENsaWVudC5oCmluZGV4IDZmZGE2MTMuLjFhMjkyNTggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTdHlsZVNoZWV0Q2xpZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFN0eWxlU2hlZXRDbGllbnQuaApAQCAt
MjcsMTQgKzI3LDEyIEBACiAjZGVmaW5lIENhY2hlZFN0eWxlU2hlZXRDbGllbnRfaAogCiAjaW5j
bHVkZSAiQ2FjaGVkUmVzb3VyY2VDbGllbnQuaCIKLSNpbmNsdWRlIDx3dGYvRmFzdEFsbG9jQmFz
ZS5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNs
YXNzIENhY2hlZENTU1N0eWxlU2hlZXQ7CiAKIGNsYXNzIENhY2hlZFN0eWxlU2hlZXRDbGllbnQg
OiBwdWJsaWMgQ2FjaGVkUmVzb3VyY2VDbGllbnQgewotICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwogcHVibGljOgogICAgIHZpcnR1YWwgfkNhY2hlZFN0eWxlU2hlZXRDbGllbnQoKSB7IH0K
ICAgICBzdGF0aWMgQ2FjaGVkUmVzb3VyY2VDbGllbnRUeXBlIGV4cGVjdGVkVHlwZSgpIHsgcmV0
dXJuIFN0eWxlU2hlZXRUeXBlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
Rm9udEZhY2VFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb250RmFjZUVsZW1l
bnQuY3BwCmluZGV4IGRhMmNlYjIuLjg4ODVhZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdGb250RmFjZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdG
b250RmFjZUVsZW1lbnQuY3BwCkBAIC0zMjEsNyArMzIxLDcgQEAgdm9pZCBTVkdGb250RmFjZUVs
ZW1lbnQ6Omluc2VydGVkSW50b0RvY3VtZW50KCkKIHsKICAgICBTVkdFbGVtZW50OjppbnNlcnRl
ZEludG9Eb2N1bWVudCgpOwogICAgIGRvY3VtZW50KCktPm1hcHBlZEVsZW1lbnRTaGVldCgpLT5h
cHBlbmQobV9mb250RmFjZVJ1bGUpOwotICAgIG1fZm9udEZhY2VSdWxlLT5zZXRQYXJlbnQoZG9j
dW1lbnQoKS0+bWFwcGVkRWxlbWVudFNoZWV0KCkpOworICAgIG1fZm9udEZhY2VSdWxlLT5zZXRQ
YXJlbnRTdHlsZVNoZWV0KGRvY3VtZW50KCktPm1hcHBlZEVsZW1lbnRTaGVldCgpKTsKICAgICBy
ZWJ1aWxkRm9udEZhY2UoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hT
TEltcG9ydFJ1bGUuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL1hTTEltcG9ydFJ1bGUuY3BwCmlu
ZGV4IGQyM2YxODIuLjU5NmM0MDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xJ
bXBvcnRSdWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMSW1wb3J0UnVsZS5jcHAK
QEAgLTMyLDcgKzMyLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogWFNMSW1wb3J0UnVsZTo6
WFNMSW1wb3J0UnVsZShYU0xTdHlsZVNoZWV0KiBwYXJlbnQsIGNvbnN0IFN0cmluZyYgaHJlZikK
LSAgICA6IFN0eWxlQmFzZShwYXJlbnQpCisgICAgOiBtX3BhcmVudFN0eWxlU2hlZXQocGFyZW50
KQogICAgICwgbV9zdHJIcmVmKGhyZWYpCiAgICAgLCBtX2NhY2hlZFNoZWV0KDApCiAgICAgLCBt
X2xvYWRpbmcoZmFsc2UpCkBAIC00Miw3ICs0Miw3IEBAIFhTTEltcG9ydFJ1bGU6OlhTTEltcG9y
dFJ1bGUoWFNMU3R5bGVTaGVldCogcGFyZW50LCBjb25zdCBTdHJpbmcmIGhyZWYpCiBYU0xJbXBv
cnRSdWxlOjp+WFNMSW1wb3J0UnVsZSgpCiB7CiAgICAgaWYgKG1fc3R5bGVTaGVldCkKLSAgICAg
ICAgbV9zdHlsZVNoZWV0LT5zZXRQYXJlbnQoMCk7CisgICAgICAgIG1fc3R5bGVTaGVldC0+c2V0
UGFyZW50U3R5bGVTaGVldCgwKTsKICAgICAKICAgICBpZiAobV9jYWNoZWRTaGVldCkKICAgICAg
ICAgbV9jYWNoZWRTaGVldC0+cmVtb3ZlQ2xpZW50KHRoaXMpOwpAQCAtNTAsMTMgKzUwLDEzIEBA
IFhTTEltcG9ydFJ1bGU6On5YU0xJbXBvcnRSdWxlKCkKIAogWFNMU3R5bGVTaGVldCogWFNMSW1w
b3J0UnVsZTo6cGFyZW50U3R5bGVTaGVldCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIChwYXJlbnQo
KSAmJiBwYXJlbnQoKS0+aXNYU0xTdHlsZVNoZWV0KCkpID8gc3RhdGljX2Nhc3Q8WFNMU3R5bGVT
aGVldCo+KHBhcmVudCgpKSA6IDA7CisgICAgcmV0dXJuIG1fcGFyZW50U3R5bGVTaGVldDsKIH0K
IAogdm9pZCBYU0xJbXBvcnRSdWxlOjpzZXRYU0xTdHlsZVNoZWV0KGNvbnN0IFN0cmluZyYgaHJl
ZiwgY29uc3QgS1VSTCYgYmFzZVVSTCwgY29uc3QgU3RyaW5nJiBzaGVldCkKIHsKICAgICBpZiAo
bV9zdHlsZVNoZWV0KQotICAgICAgICBtX3N0eWxlU2hlZXQtPnNldFBhcmVudCgwKTsKKyAgICAg
ICAgbV9zdHlsZVNoZWV0LT5zZXRQYXJlbnRTdHlsZVNoZWV0KDApOwogCiAgICAgbV9zdHlsZVNo
ZWV0ID0gWFNMU3R5bGVTaGVldDo6Y3JlYXRlKHRoaXMsIGhyZWYsIGJhc2VVUkwpOwogCkBAIC03
OSwxMiArNzksMTYgQEAgYm9vbCBYU0xJbXBvcnRSdWxlOjppc0xvYWRpbmcoKQogdm9pZCBYU0xJ
bXBvcnRSdWxlOjpsb2FkU2hlZXQoKQogewogICAgIENhY2hlZFJlc291cmNlTG9hZGVyKiBjYWNo
ZWRSZXNvdXJjZUxvYWRlciA9IDA7Ci0gICAgU3R5bGVCYXNlKiByb290ID0gdGhpczsKLSAgICBT
dHlsZUJhc2UqIHBhcmVudDsKLSAgICB3aGlsZSAoKHBhcmVudCA9IHJvb3QtPnBhcmVudCgpKSkK
LSAgICAgICAgcm9vdCA9IHBhcmVudDsKLSAgICBpZiAocm9vdC0+aXNYU0xTdHlsZVNoZWV0KCkp
Ci0gICAgICAgIGNhY2hlZFJlc291cmNlTG9hZGVyID0gc3RhdGljX2Nhc3Q8WFNMU3R5bGVTaGVl
dCo+KHJvb3QpLT5jYWNoZWRSZXNvdXJjZUxvYWRlcigpOworCisgICAgWFNMU3R5bGVTaGVldCog
cm9vdFNoZWV0ID0gcGFyZW50U3R5bGVTaGVldCgpOworCisgICAgaWYgKHJvb3RTaGVldCkgewor
ICAgICAgICB3aGlsZSAoWFNMU3R5bGVTaGVldCogcGFyZW50U2hlZXQgPSByb290U2hlZXQtPnBh
cmVudFN0eWxlU2hlZXQoKSkKKyAgICAgICAgICAgIHJvb3RTaGVldCA9IHBhcmVudFNoZWV0Owor
ICAgIH0KKworICAgIGlmIChyb290U2hlZXQpCisgICAgICAgIGNhY2hlZFJlc291cmNlTG9hZGVy
ID0gcm9vdFNoZWV0LT5jYWNoZWRSZXNvdXJjZUxvYWRlcigpOwogICAgIAogICAgIFN0cmluZyBh
YnNIcmVmID0gbV9zdHJIcmVmOwogICAgIFhTTFN0eWxlU2hlZXQqIHBhcmVudFNoZWV0ID0gcGFy
ZW50U3R5bGVTaGVldCgpOwpAQCAtOTQsOCArOTgsOCBAQCB2b2lkIFhTTEltcG9ydFJ1bGU6Omxv
YWRTaGVldCgpCiAgICAgCiAgICAgLy8gQ2hlY2sgZm9yIGEgY3ljbGUgaW4gb3VyIGltcG9ydCBj
aGFpbi4gIElmIHdlIGVuY291bnRlciBhIHN0eWxlc2hlZXQKICAgICAvLyBpbiBvdXIgcGFyZW50
IGNoYWluIHdpdGggdGhlIHNhbWUgVVJMLCB0aGVuIGp1c3QgYmFpbC4KLSAgICBmb3IgKHBhcmVu
dCA9IHRoaXMtPnBhcmVudCgpOyBwYXJlbnQ7IHBhcmVudCA9IHBhcmVudC0+cGFyZW50KCkpIHsK
LSAgICAgICAgaWYgKHBhcmVudC0+aXNYU0xTdHlsZVNoZWV0KCkgJiYgYWJzSHJlZiA9PSBzdGF0
aWNfY2FzdDxYU0xTdHlsZVNoZWV0Kj4ocGFyZW50KS0+ZmluYWxVUkwoKS5zdHJpbmcoKSkKKyAg
ICBmb3IgKFhTTFN0eWxlU2hlZXQqIHBhcmVudFNoZWV0ID0gcGFyZW50U3R5bGVTaGVldCgpOyBw
YXJlbnRTaGVldDsgcGFyZW50U2hlZXQgPSBwYXJlbnRTaGVldC0+cGFyZW50U3R5bGVTaGVldCgp
KSB7CisgICAgICAgIGlmIChhYnNIcmVmID09IHBhcmVudFNoZWV0LT5maW5hbFVSTCgpLnN0cmlu
ZygpKQogICAgICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3htbC9YU0xJbXBvcnRSdWxlLmggYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMSW1w
b3J0UnVsZS5oCmluZGV4IDhkOTRlNGMuLmJjODI2YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3htbC9YU0xJbXBvcnRSdWxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hTTEltcG9y
dFJ1bGUuaApAQCAtMjcsMTkgKzI3LDE5IEBACiAKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUhh
bmRsZS5oIgogI2luY2x1ZGUgIkNhY2hlZFN0eWxlU2hlZXRDbGllbnQuaCIKLSNpbmNsdWRlICJT
dHlsZUJhc2UuaCIKICNpbmNsdWRlICJYU0xTdHlsZVNoZWV0LmgiCisjaW5jbHVkZSA8d3RmL1Bh
c3NPd25QdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDYWNoZWRYU0xTdHls
ZVNoZWV0OwogCi1jbGFzcyBYU0xJbXBvcnRSdWxlIDogcHVibGljIFN0eWxlQmFzZSwgcHJpdmF0
ZSBDYWNoZWRTdHlsZVNoZWV0Q2xpZW50IHsKK2NsYXNzIFhTTEltcG9ydFJ1bGUgOiBwcml2YXRl
IENhY2hlZFN0eWxlU2hlZXRDbGllbnQgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
cHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFhTTEltcG9ydFJ1bGU+IGNyZWF0ZShYU0xT
dHlsZVNoZWV0KiBwYXJlbnRTaGVldCwgY29uc3QgU3RyaW5nJiBocmVmKQorICAgIHN0YXRpYyBQ
YXNzT3duUHRyPFhTTEltcG9ydFJ1bGU+IGNyZWF0ZShYU0xTdHlsZVNoZWV0KiBwYXJlbnRTaGVl
dCwgY29uc3QgU3RyaW5nJiBocmVmKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBYU0xJbXBvcnRSdWxlKHBhcmVudFNoZWV0LCBocmVmKSk7CisgICAgICAgIHJldHVybiBhZG9w
dFB0cihuZXcgWFNMSW1wb3J0UnVsZShwYXJlbnRTaGVldCwgaHJlZikpOwogICAgIH0KIAogICAg
IHZpcnR1YWwgflhTTEltcG9ydFJ1bGUoKTsKQEAgLTQ4LDYgKzQ4LDcgQEAgcHVibGljOgogICAg
IFhTTFN0eWxlU2hlZXQqIHN0eWxlU2hlZXQoKSBjb25zdCB7IHJldHVybiBtX3N0eWxlU2hlZXQu
Z2V0KCk7IH0KIAogICAgIFhTTFN0eWxlU2hlZXQqIHBhcmVudFN0eWxlU2hlZXQoKSBjb25zdDsK
KyAgICB2b2lkIHNldFBhcmVudFN0eWxlU2hlZXQoWFNMU3R5bGVTaGVldCogc3R5bGVTaGVldCkg
eyBtX3BhcmVudFN0eWxlU2hlZXQgPSBzdHlsZVNoZWV0OyB9CiAKICAgICBib29sIGlzTG9hZGlu
ZygpOwogICAgIHZvaWQgbG9hZFNoZWV0KCk7CkBAIC01Nyw2ICs1OCw3IEBAIHByaXZhdGU6CiAK
ICAgICB2aXJ0dWFsIHZvaWQgc2V0WFNMU3R5bGVTaGVldChjb25zdCBTdHJpbmcmIGhyZWYsIGNv
bnN0IEtVUkwmIGJhc2VVUkwsIGNvbnN0IFN0cmluZyYgc2hlZXQpOwogICAgIAorICAgIFhTTFN0
eWxlU2hlZXQqIG1fcGFyZW50U3R5bGVTaGVldDsKICAgICBTdHJpbmcgbV9zdHJIcmVmOwogICAg
IFJlZlB0cjxYU0xTdHlsZVNoZWV0PiBtX3N0eWxlU2hlZXQ7CiAgICAgQ2FjaGVkUmVzb3VyY2VI
YW5kbGU8Q2FjaGVkWFNMU3R5bGVTaGVldD4gbV9jYWNoZWRTaGVldDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3htbC9YU0xTdHlsZVNoZWV0LmggYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFNM
U3R5bGVTaGVldC5oCmluZGV4IDU0ZjUyMzIuLjM5MzMyMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3htbC9YU0xTdHlsZVNoZWV0LmgKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hTTFN0
eWxlU2hlZXQuaApAQCAtMTAyLDcgKzEwMiw3IEBAIHByaXZhdGU6CiAgICAgWFNMU3R5bGVTaGVl
dChYU0xJbXBvcnRSdWxlKiBwYXJlbnRJbXBvcnQsIGNvbnN0IFN0cmluZyYgb3JpZ2luYWxVUkws
IGNvbnN0IEtVUkwmIGZpbmFsVVJMKTsKICNlbmRpZgogCi0gICAgVmVjdG9yPFJlZlB0cjxYU0xJ
bXBvcnRSdWxlPiA+IG1fY2hpbGRyZW47CisgICAgVmVjdG9yPE93blB0cjxYU0xJbXBvcnRSdWxl
PiA+IG1fY2hpbGRyZW47CiAKICAgICBEb2N1bWVudCogbV9vd25lckRvY3VtZW50OwogICAgIGJv
b2wgbV9lbWJlZGRlZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xTdHlsZVNo
ZWV0TGlieHNsdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMU3R5bGVTaGVldExpYnhzbHQu
Y3BwCmluZGV4IDU2ODBhM2UuLjc1MjFiNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3ht
bC9YU0xTdHlsZVNoZWV0TGlieHNsdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hTTFN0
eWxlU2hlZXRMaWJ4c2x0LmNwcApAQCAtNTUsMTIgKzU1LDEyIEBAIFNPRlRfTElOSyhsaWJ4c2x0
LCB4c2x0TG9hZFN0eWxlc2hlZXRQSSwgeHNsdFN0eWxlc2hlZXRQdHIsICh4bWxEb2NQdHIgZG9j
KSwgKGRvCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFhTTFN0eWxlU2hlZXQ6OlhTTFN0eWxlU2hl
ZXQoWFNMSW1wb3J0UnVsZSogcGFyZW50UnVsZSwgY29uc3QgU3RyaW5nJiBvcmlnaW5hbFVSTCwg
Y29uc3QgS1VSTCYgZmluYWxVUkwpCi0gICAgOiBTdHlsZVNoZWV0KHBhcmVudFJ1bGUsIG9yaWdp
bmFsVVJMLCBmaW5hbFVSTCkKKyAgICA6IFN0eWxlU2hlZXQoc3RhdGljX2Nhc3Q8Tm9kZSo+KDAp
LCBvcmlnaW5hbFVSTCwgZmluYWxVUkwpCiAgICAgLCBtX2VtYmVkZGVkKGZhbHNlKQogICAgICwg
bV9wcm9jZXNzZWQoZmFsc2UpIC8vIENoaWxkIHNoZWV0cyBnZXQgbWFya2VkIGFzIHByb2Nlc3Nl
ZCB3aGVuIHRoZSBsaWJ4c2x0IGVuZ2luZSBoYXMgZmluYWxseSBzZWVuIHRoZW0uCiAgICAgLCBt
X3N0eWxlc2hlZXREb2MoMCkKICAgICAsIG1fc3R5bGVzaGVldERvY1Rha2VuKGZhbHNlKQotICAg
ICwgbV9wYXJlbnRTdHlsZVNoZWV0KDApCisgICAgLCBtX3BhcmVudFN0eWxlU2hlZXQocGFyZW50
UnVsZSA/IHBhcmVudFJ1bGUtPnBhcmVudFN0eWxlU2hlZXQoKSA6IDApCiB7CiB9CiAKQEAgLTgw
LDggKzgwLDggQEAgWFNMU3R5bGVTaGVldDo6flhTTFN0eWxlU2hlZXQoKQogICAgICAgICB4bWxG
cmVlRG9jKG1fc3R5bGVzaGVldERvYyk7CiAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
bV9jaGlsZHJlbi5zaXplKCk7ICsraSkgewotICAgICAgICBBU1NFUlQobV9jaGlsZHJlbi5hdChp
KS0+cGFyZW50KCkgPT0gdGhpcyk7Ci0gICAgICAgIG1fY2hpbGRyZW4uYXQoaSktPnNldFBhcmVu
dCgwKTsKKyAgICAgICAgQVNTRVJUKG1fY2hpbGRyZW4uYXQoaSktPnBhcmVudFN0eWxlU2hlZXQo
KSA9PSB0aGlzKTsKKyAgICAgICAgbV9jaGlsZHJlbi5hdChpKS0+c2V0UGFyZW50U3R5bGVTaGVl
dCgwKTsKICAgICB9CiB9CiAKQEAgLTk4LDggKzk4LDggQEAgdm9pZCBYU0xTdHlsZVNoZWV0Ojpj
aGVja0xvYWRlZCgpCiB7CiAgICAgaWYgKGlzTG9hZGluZygpKQogICAgICAgICByZXR1cm47Ci0g
ICAgaWYgKHBhcmVudCgpKQotICAgICAgICBwYXJlbnQoKS0+Y2hlY2tMb2FkZWQoKTsKKyAgICBp
ZiAoWFNMU3R5bGVTaGVldCogc3R5bGVTaGVldCA9IHBhcmVudFN0eWxlU2hlZXQoKSkKKyAgICAg
ICAgc3R5bGVTaGVldC0+Y2hlY2tMb2FkZWQoKTsKICAgICBpZiAob3duZXJOb2RlKCkpCiAgICAg
ICAgIG93bmVyTm9kZSgpLT5zaGVldExvYWRlZCgpOwogfQpAQCAtMjI5LDkgKzIyOSwxMCBAQCB2
b2lkIFhTTFN0eWxlU2hlZXQ6OmxvYWRDaGlsZFNoZWV0cygpCiAKIHZvaWQgWFNMU3R5bGVTaGVl
dDo6bG9hZENoaWxkU2hlZXQoY29uc3QgU3RyaW5nJiBocmVmKQogewotICAgIFJlZlB0cjxYU0xJ
bXBvcnRSdWxlPiBjaGlsZFJ1bGUgPSBYU0xJbXBvcnRSdWxlOjpjcmVhdGUodGhpcywgaHJlZik7
Ci0gICAgbV9jaGlsZHJlbi5hcHBlbmQoY2hpbGRSdWxlKTsKLSAgICBjaGlsZFJ1bGUtPmxvYWRT
aGVldCgpOworICAgIE93blB0cjxYU0xJbXBvcnRSdWxlPiBjaGlsZFJ1bGUgPSBYU0xJbXBvcnRS
dWxlOjpjcmVhdGUodGhpcywgaHJlZik7CisgICAgWFNMSW1wb3J0UnVsZSogYyA9IGNoaWxkUnVs
ZS5nZXQoKTsKKyAgICBtX2NoaWxkcmVuLmFwcGVuZChjaGlsZFJ1bGUucmVsZWFzZSgpKTsKKyAg
ICBjLT5sb2FkU2hlZXQoKTsKIH0KIAogeHNsdFN0eWxlc2hlZXRQdHIgWFNMU3R5bGVTaGVldDo6
Y29tcGlsZVN0eWxlU2hlZXQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hTTFN0
eWxlU2hlZXRRdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMU3R5bGVTaGVldFF0LmNwcApp
bmRleCAyY2U5NzZiLi44YTEwZmQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFNM
U3R5bGVTaGVldFF0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMU3R5bGVTaGVldFF0
LmNwcApAQCAtNDIsOCArNDIsOCBAQCBYU0xTdHlsZVNoZWV0OjpYU0xTdHlsZVNoZWV0KE5vZGUq
IHBhcmVudE5vZGUsIGNvbnN0IFN0cmluZyYgb3JpZ2luYWxVUkwsIGNvbnN0CiBYU0xTdHlsZVNo
ZWV0Ojp+WFNMU3R5bGVTaGVldCgpCiB7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1f
Y2hpbGRyZW4uc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgQVNTRVJUKG1fY2hpbGRyZW4uYXQoaSkt
PnBhcmVudCgpID09IHRoaXMpOwotICAgICAgICBtX2NoaWxkcmVuLmF0KGkpLT5zZXRQYXJlbnQo
MCk7CisgICAgICAgIEFTU0VSVChtX2NoaWxkcmVuLmF0KGkpLT5wYXJlbnRTdHlsZVNoZWV0KCkg
PT0gdGhpcyk7CisgICAgICAgIG1fY2hpbGRyZW4uYXQoaSktPnNldFBhcmVudFN0eWxlU2hlZXQo
MCk7CiAgICAgfQogfQogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>