<?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>47664</bug_id>
          
          <creation_ts>2010-10-14 05:03:26 -0700</creation_ts>
          <short_desc>Replace lots of String::format() usages by StringConcatenate</short_desc>
          <delta_ts>2019-02-03 11:11:17 -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>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>30342</blocked>
    
    <blocked>18994</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Nikolas Zimmermann">zimmermann</reporter>
          <assigned_to name="Nikolas Zimmermann">zimmermann</assigned_to>
          <cc>abarth</cc>
    
    <cc>barraclough</cc>
    
    <cc>darin</cc>
    
    <cc>dbates</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>294052</commentid>
    <comment_count>0</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2010-10-14 05:03:26 -0700</bug_when>
    <thetext>A lot of String::format() calls can now be replaced by using wtf/text/StringConcatenate.
As first step, I only chose to eliminate the easy cases, those that don&apos;t involve floating-point  (%..f)/ hex number formattings, and those which don&apos;t dump pointers (%p).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>294125</commentid>
    <comment_count>1</comment_count>
      <attachid>70740</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2010-10-14 08:37:51 -0700</bug_when>
    <thetext>Created attachment 70740
Patch

Attention, this needs a careful review, as it touches a lot of different places.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>294126</commentid>
    <comment_count>2</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2010-10-14 08:38:27 -0700</bug_when>
    <thetext>I&apos;m not sure whether the changed xssAuditor tests are fine, CC&apos;ing Adam to comment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>294131</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-10-14 08:40:32 -0700</bug_when>
    <thetext>Attachment 70740 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;]&quot; exit_code: 1
WebCore/platform/graphics/mac/GraphicsLayerCA.mm:251:  Line contains tab character.  [whitespace/tab] [5]
Total errors found: 1 in 45 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>294146</commentid>
    <comment_count>4</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2010-10-14 09:11:37 -0700</bug_when>
    <thetext>Attachment 70740 did not build on qt:
Build output: http://queues.webkit.org/results/4456037</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>294149</commentid>
    <comment_count>5</comment_count>
      <attachid>70744</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2010-10-14 09:23:00 -0700</bug_when>
    <thetext>Created attachment 70744
Patch v2

Fix style and Qt build.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>294212</commentid>
    <comment_count>6</comment_count>
      <attachid>70744</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2010-10-14 11:16:48 -0700</bug_when>
    <thetext>Comment on attachment 70744
Patch v2

Looks great, but one tiny problem.
Our default char-&gt;UChar conversion is simple latin1, which is to say zero-extend.  You should change &apos;char m_buffer;&apos; to &apos;unsigned char m_buffer;&apos; in the adapter class.
Do you know what accounted for the change in layout test results? - might this be related?

Otherwise all looks good.  At some point in the future it might be nice rename makeString() to String::cat() – I&apos;m not sure, but I think I like the idea of tying it to the class to implicitly indicate that the return type is String – but sticking with the same name from JSC is a fine decision for now, and that would be an easy find &amp; replace later if we do want to do so.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>294221</commentid>
    <comment_count>7</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2010-10-14 11:23:43 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 70744 [details])
&gt; Looks great, but one tiny problem.
&gt; Our default char-&gt;UChar conversion is simple latin1, which is to say zero-extend.  You should change &apos;char m_buffer;&apos; to &apos;unsigned char m_buffer;&apos; in the adapter class.
&gt; Do you know what accounted for the change in layout test results? - might this be related?

I will test it soon. Are you saying only m_buffer should be changed? Not changing the adapter from &lt;char&gt; to -&gt; &lt;unsigned char&gt; ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>294247</commentid>
    <comment_count>8</comment_count>
      <attachid>70761</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2010-10-14 11:41:21 -0700</bug_when>
    <thetext>Created attachment 70761
Patch v3

Fixed Gavins suggestions. I hope Adam can comment first though, regarding the changed xssAuditor tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>294250</commentid>
    <comment_count>9</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2010-10-14 11:42:32 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 70744 [details])
&gt; Looks great, but one tiny problem.
&gt; Our default char-&gt;UChar conversion is simple latin1, which is to say zero-extend.  You should change &apos;char m_buffer;&apos; to &apos;unsigned char m_buffer;&apos; in the adapter class.
&gt; Do you know what accounted for the change in layout test results? - might this be related?

Note: This didn&apos;t affect the xssAuditor tests, still changed, let&apos;s wait for Adam to give ok.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>294260</commentid>
    <comment_count>10</comment_count>
      <attachid>70761</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2010-10-14 11:59:00 -0700</bug_when>
    <thetext>Comment on attachment 70761
Patch v3

r+, contingent on an okay on the results change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>294270</commentid>
    <comment_count>11</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-10-14 12:15:06 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; Note: This didn&apos;t affect the xssAuditor tests, still changed, let&apos;s wait for Adam to give ok.

I can tell you exactly why the xssAuditor test results changed.

The XSSAuditor::canLoadObject code converted a URL to UTF-8, then converted it back to Unicode, interpreting the UTF-8 bytes as Latin-1 when constructing UTF-16. The the console logging mechanism converts the now-incorrect round-tripped UTF-16 data to UTF-8. This process garbled the URL.

The new code is correct, avoiding the incorrect round trip that garbles the URL.

We can wait for Adam to weigh in if you like, but I don’t think we need to. It’s clear to me the old XSSAuditor::canLoadObject code was wrong and the new code is right.

But since the XSSAuditor::canLoadObject change does fix a bug, while the rest of the patch is refactoring that should have no effect on behavior, if you’d like to be scrupulous you could just remove that XSSAuditor::canLoadObject change and land it separately along with the test result changes.

But I think this can just go in as-is.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>294279</commentid>
    <comment_count>12</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2010-10-14 12:27:47 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; (In reply to comment #9)
&gt; &gt; Note: This didn&apos;t affect the xssAuditor tests, still changed, let&apos;s wait for Adam to give ok.
&gt; 
&gt; I can tell you exactly why the xssAuditor test results changed.
&gt; 
&gt; The XSSAuditor::canLoadObject code converted a URL to UTF-8, then converted it back to Unicode, interpreting the UTF-8 bytes as Latin-1 when constructing UTF-16. The the console logging mechanism converts the now-incorrect round-tripped UTF-16 data to UTF-8. This process garbled the URL.
&gt; 
&gt; The new code is correct, avoiding the incorrect round trip that garbles the URL.
Ah, thanks for the analysis, it&apos;s clear now.

&gt; 
&gt; We can wait for Adam to weigh in if you like, but I don’t think we need to. It’s clear to me the old XSSAuditor::canLoadObject code was wrong and the new code is right.
&gt; 
&gt; But since the XSSAuditor::canLoadObject change does fix a bug, while the rest of the patch is refactoring that should have no effect on behavior, if you’d like to be scrupulous you could just remove that XSSAuditor::canLoadObject change and land it separately along with the test result changes.
&gt; 
&gt; But I think this can just go in as-is.

Okay, thanks a lot, I&apos;m landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>294293</commentid>
    <comment_count>13</comment_count>
      <attachid>70761</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-10-14 12:41:58 -0700</bug_when>
    <thetext>Comment on attachment 70761
Patch v3

The XSS auditor rebaselines are fine.  Thanks for giving me a chance to check,</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>294295</commentid>
    <comment_count>14</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2010-10-14 12:44:39 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; (From update of attachment 70761 [details])
&gt; The XSS auditor rebaselines are fine.  Thanks for giving me a chance to check,

Excellent, now invoking webkit-patch land..
(Note, I already mailed Adam before, asking to check these rebaselines, so it was fair to wait :-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>294296</commentid>
    <comment_count>15</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2010-10-14 12:49:40 -0700</bug_when>
    <thetext>Committed r69798: &lt;http://trac.webkit.org/changeset/69798&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>70740</attachid>
            <date>2010-10-14 08:37:51 -0700</date>
            <delta_ts>2010-10-14 09:23:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>KillStringFormatPart1.diff</filename>
            <type>text/plain</type>
            <size>56372</size>
            <attacher name="Nikolas Zimmermann">zimmermann</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDY5NzY0KQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTAtMTAtMTQgIE5pa29sYXMg
WmltbWVybWFubiAgPG56aW1tZXJtYW5uQHJpbS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVwbGFjZSBsb3RzIG9mIFN0cmluZzo6Zm9ybWF0
KCkgdXNhZ2VzIGJ5IFN0cmluZ0NvbmNhdGVuYXRlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NzY2NAorCisgICAgICAgIEFkZCBTdHJpbmdUeXBlQWRh
cHRlcjxjaGFyPiB0byBhY2NlcHQgc2luZ2xlIGNoYXJhY3RlcnMgZm9yIG1ha2VTdHJpbmcoKS4K
KworICAgICAgICAqIHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlLmg6CisgICAgICAgIChXVEY6
Om1ha2VTdHJpbmcpOgorCiAyMDEwLTEwLTE0ICBBbnRvbiBGYWVybiAgPGFudG9uQGJsYWRlaGF3
a2UuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IENzYWJhIE9zenRyb2dvbsOhYy4KSW5kZXg6
IEphdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGUuaAkocmV2aXNpb24g
Njk3NjQpCisrKyBKYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0zNSw2ICszNSwyMSBAQCBjbGFzcyBTdHJpbmdUeXBlQWRhcHRlciB7
CiB9OwogCiB0ZW1wbGF0ZTw+CitjbGFzcyBTdHJpbmdUeXBlQWRhcHRlcjxjaGFyPiB7CitwdWJs
aWM6CisgICAgU3RyaW5nVHlwZUFkYXB0ZXI8Y2hhcj4oY2hhciBidWZmZXIpCisgICAgICAgIDog
bV9idWZmZXIoYnVmZmVyKQorICAgIHsKKyAgICB9CisKKyAgICB1bnNpZ25lZCBsZW5ndGgoKSB7
IHJldHVybiAxOyB9CisgICAgdm9pZCB3cml0ZVRvKFVDaGFyKiBkZXN0aW5hdGlvbikgeyAqZGVz
dGluYXRpb24gPSBtX2J1ZmZlcjsgfQorCitwcml2YXRlOgorICAgIGNoYXIgbV9idWZmZXI7Cit9
OworCit0ZW1wbGF0ZTw+CiBjbGFzcyBTdHJpbmdUeXBlQWRhcHRlcjxjaGFyKj4gewogcHVibGlj
OgogICAgIFN0cmluZ1R5cGVBZGFwdGVyPGNoYXIqPihjaGFyKiBidWZmZXIpCkBAIC0zNjAsNiAr
Mzc1LDEzIEBAIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gdHJ5TWFrZVN0cmluZyhTdHIKICAgICBy
ZXR1cm4gcmVzdWx0SW1wbDsKIH0KIAorLy8gQ29udmVuaWVuY2Ugb25seS4KK3RlbXBsYXRlPHR5
cGVuYW1lIFN0cmluZ1R5cGUxPgorU3RyaW5nIG1ha2VTdHJpbmcoU3RyaW5nVHlwZTEgc3RyaW5n
MSkKK3sKKyAgICByZXR1cm4gU3RyaW5nKHN0cmluZzEpOworfQorCiB0ZW1wbGF0ZTx0eXBlbmFt
ZSBTdHJpbmdUeXBlMSwgdHlwZW5hbWUgU3RyaW5nVHlwZTI+CiBTdHJpbmcgbWFrZVN0cmluZyhT
dHJpbmdUeXBlMSBzdHJpbmcxLCBTdHJpbmdUeXBlMiBzdHJpbmcyKQogewpAQCAtNDI1LDQgKzQ0
Nyw2IEBAIFN0cmluZyBtYWtlU3RyaW5nKFN0cmluZ1R5cGUxIHN0cmluZzEsIFMKIAogfSAvLyBu
YW1lc3BhY2UgV1RGCiAKK3VzaW5nIFdURjo6bWFrZVN0cmluZzsKKwogI2VuZGlmCkluZGV4OiBX
ZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNp
b24gNjk3NjQpCisrKyBXZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsx
LDk1IEBACisyMDEwLTEwLTE0ICBOaWtvbGFzIFppbW1lcm1hbm4gIDxuemltbWVybWFubkByaW0u
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJl
cGxhY2UgbG90cyBvZiBTdHJpbmc6OmZvcm1hdCgpIHVzYWdlcyBieSBTdHJpbmdDb25jYXRlbmF0
ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDc2NjQK
KworICAgICAgICAqIEZvcndhcmRpbmdIZWFkZXJzL3d0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRl
Lmg6IEFkZGVkLgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvd0Jhc2U6OmNyb3NzRG9tYWluQWNjZXNzRXJyb3JN
ZXNzYWdlKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOFByb3h5LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlY4UHJveHk6OnJlcG9ydFVuc2FmZUFjY2Vzc1RvKToKKyAgICAgICAgKiBkb20vRXhj
ZXB0aW9uQmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFeGNlcHRpb25CYXNlOjpFeGNlcHRp
b25CYXNlKToKKyAgICAgICAgKiBkb20vWE1MRG9jdW1lbnRQYXJzZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6WE1MRG9jdW1lbnRQYXJzZXI6OmhhbmRsZUVycm9yKToKKyAgICAgICAgKiBoaXN0
b3J5L1BhZ2VDYWNoZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpsb2dDYW5DYWNoZUZyYW1lRGVj
aXNpb24pOgorICAgICAgICAqIGh0bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6cHJvY2Vzc0ZpbGVEYXRlU3RyaW5nKToKKyAgICAgICAgKiBpbnNwZWN0b3Iv
Q29kZUdlbmVyYXRvckluc3BlY3Rvci5wbToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9y
Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpk
aWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxl
cjo6Y291bnQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6Y3JlYXRlQnJlYWtwb2ludElkKToK
KyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpmb3JtYXRCcmVha3BvaW50SWQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNw
ZWN0b3JQcm9maWxlckFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclByb2Zp
bGVyQWdlbnQ6OmFkZFByb2ZpbGVGaW5pc2hlZE1lc3NhZ2VUb0NvbnNvbGUpOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yUHJvZmlsZXJBZ2VudDo6YWRkU3RhcnRQcm9maWxpbmdNZXNzYWdl
VG9Db25zb2xlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclByb2ZpbGVyQWdlbnQ6Omdl
dEN1cnJlbnRVc2VySW5pdGlhdGVkUHJvZmlsZU5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yUHJvZmlsZXJBZ2VudDo6dGFrZUhlYXBTbmFwc2hvdCk6CisgICAgICAgICogbG9hZGVy
L0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291
cmNlTG9hZGVyOjpwcmludEFjY2Vzc0RlbmllZE1lc3NhZ2UpOgorICAgICAgICAqIGxvYWRlci9G
cmFtZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6Y2hlY2tJZkRp
c3BsYXlJbnNlY3VyZUNvbnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmNo
ZWNrSWZSdW5JbnNlY3VyZUNvbnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6
OnNob3VsZEFsbG93TmF2aWdhdGlvbik6CisgICAgICAgICogbG9hZGVyL2FyY2hpdmUvY2YvTGVn
YWN5V2ViQXJjaGl2ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lXZWJBcmNoaXZlOjpj
cmVhdGVGcm9tU2VsZWN0aW9uKToKKyAgICAgICAgKiBwYWdlL0RPTVdpbmRvdy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpET01XaW5kb3c6OnBvc3RNZXNzYWdlVGltZXJGaXJlZCk6CisgICAgICAg
ICogcGFnZS9QcmludENvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UHJpbnRDb250ZXh0
OjpwYWdlUHJvcGVydHkpOgorICAgICAgICAoV2ViQ29yZTo6UHJpbnRDb250ZXh0OjpwYWdlU2l6
ZUFuZE1hcmdpbnNJblBpeGVscyk6CisgICAgICAgICogcGFnZS9YU1NBdWRpdG9yLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlhTU0F1ZGl0b3I6OmNhbkxvYWRPYmplY3QpOgorICAgICAgICAqIHBs
YXRmb3JtL2VmbC9QbGF0Zm9ybUtleWJvYXJkRXZlbnRFZmwuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Y3JlYXRlS2V5TWFwKToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVdpbmRvd3NLZXlNYXAp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6YW5pbWF0aW9uTmFtZUZvclRyYW5zaXRpb24pOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2JyZXcvSW1hZ2VCcmV3LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkltYWdlOjpsb2FkUGxhdGZvcm1SZXNvdXJjZSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFn
ZUJ1ZmZlcjo6dG9EYXRhVVJMKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9lZmwvSW1h
Z2VFZmwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6bG9hZFJlc291cmNlU2hhcmVkQnVmZmVyKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ndGsvSW1hZ2VCdWZmZXJHdGsuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OnRvRGF0YVVSTCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvaGFpa3UvSW1hZ2VCdWZmZXJIYWlrdS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJbWFnZUJ1ZmZlcjo6dG9EYXRhVVJMKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9t
YWMvR3JhcGhpY3NMYXllckNBLm1tOgorICAgICAgICAoV2ViQ29yZTo6YW5pbWF0aW9uSWRlbnRp
Zmllcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvcXQvSW1hZ2VCdWZmZXJRdC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6dG9EYXRhVVJMKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9za2lhL0ltYWdlQnVmZmVyU2tpYS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJbWFnZUJ1ZmZlcjo6dG9EYXRhVVJMKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy93aW4vV2ViTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViTGF5ZXI6OmRyYXdJbkNv
bnRleHQpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvQ3JlZGVudGlhbFN0b3JhZ2UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6b3JpZ2luU3RyaW5nRnJvbVVSTCk6CisgICAgICAgICogcGxh
dGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZURh
dGFiYXNlOjpzZXRTeW5jaHJvbm91cyk6CisgICAgICAgICogcGxhdGZvcm0vdGV4dC93aW5jZS9U
ZXh0Q29kZWNXaW5DRS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYW5ndWFnZU1hbmFnZXI6Okxh
bmd1YWdlTWFuYWdlcik6CisgICAgICAgICogcGxhdGZvcm0vd2luL0NsaXBib2FyZFV0aWxpdGll
c1dpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjptYXJrdXBUb0NGSFRNTCk6CisgICAgICAgICog
cGxhdGZvcm0vd2luL0xhbmd1YWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmRlZmF1bHRMYW5n
dWFnZSk6CisgICAgICAgICogcGx1Z2lucy9QbHVnaW5TdHJlYW0uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UGx1Z2luU3RyZWFtOjpzdGFydFN0cmVhbSk6CisgICAgICAgICogc3ZnL1NWR1VzZUVs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZHVtcEluc3RhbmNlVHJlZSk6CisgICAgICAg
ICogd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0
Ojpjb25uZWN0KToKKyAgICAgICAgKiB3ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0Q2hhbm5lbDo6YXBwZW5kVG9CdWZmZXIpOgorICAg
ICAgICAqIHdlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OldlYlNvY2tldEhhbmRzaGFrZTo6cmVhZFNlcnZlckhhbmRzaGFrZSk6CisKIDIwMTAtMTAt
MTQgIFBhdmVsIEZlbGRtYW4gIDxwZmVsZG1hbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2
aWV3ZWQgYnkgWXVyeSBTZW1pa2hhdHNreS4KSW5kZXg6IFdlYkNvcmUvRm9yd2FyZGluZ0hlYWRl
cnMvd3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL0Zv
cndhcmRpbmdIZWFkZXJzL3d0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlLmgJKHJldmlzaW9uIDAp
CisrKyBXZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL3d0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRl
LmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNCBAQAorI2lmbmRlZiBXZWJDb3JlX0ZXRF9TdHJp
bmdDb25jYXRlbmF0ZV9oCisjZGVmaW5lIFdlYkNvcmVfRldEX1N0cmluZ0NvbmNhdGVuYXRlX2gK
KyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TdHJpbmdDb25jYXRlbmF0ZS5oPgorI2VuZGlmCklu
ZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwCShyZXZpc2lvbiA2OTc2
NCkKKysrIFdlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzcsNyArMzcsNyBAQAogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAi
V2ViQ29yZUpTQ2xpZW50RGF0YS5oIgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KLSNpbmNs
dWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQ29uY2F0
ZW5hdGUuaD4KIAogdXNpbmcgbmFtZXNwYWNlIEpTQzsKIApAQCAtODMsOCArODMsOCBAQCBTdHJp
bmcgSlNET01XaW5kb3dCYXNlOjpjcm9zc0RvbWFpbkFjY2VzCiAgICAgICAgIHJldHVybiBTdHJp
bmcoKTsKIAogICAgIC8vIEZJWE1FOiB0aGlzIGVycm9yIG1lc3NhZ2Ugc2hvdWxkIGNvbnRhaW4g
bW9yZSBzcGVjaWZpY3Mgb2Ygd2h5IHRoZSBzYW1lIG9yaWdpbiBjaGVjayBoYXMgZmFpbGVkLgot
ICAgIHJldHVybiBTdHJpbmc6OmZvcm1hdCgiVW5zYWZlIEphdmFTY3JpcHQgYXR0ZW1wdCB0byBh
Y2Nlc3MgZnJhbWUgd2l0aCBVUkwgJXMgZnJvbSBmcmFtZSB3aXRoIFVSTCAlcy4gRG9tYWlucywg
cHJvdG9jb2xzIGFuZCBwb3J0cyBtdXN0IG1hdGNoLlxuIiwKLSAgICAgICAgdGFyZ2V0VVJMLnN0
cmluZygpLnV0ZjgoKS5kYXRhKCksIG9yaWdpblVSTC5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsK
KyAgICByZXR1cm4gbWFrZVN0cmluZygiVW5zYWZlIEphdmFTY3JpcHQgYXR0ZW1wdCB0byBhY2Nl
c3MgZnJhbWUgd2l0aCBVUkwgIiwgdGFyZ2V0VVJMLnN0cmluZygpLAorICAgICAgICAgICAgICAg
ICAgICAgICIgZnJvbSBmcmFtZSB3aXRoIFVSTCAiLCBvcmlnaW5VUkwuc3RyaW5nKCksICIuIERv
bWFpbnMsIHByb3RvY29scyBhbmQgcG9ydHMgbXVzdCBtYXRjaC5cbiIpOwogfQogCiB2b2lkIEpT
RE9NV2luZG93QmFzZTo6cHJpbnRFcnJvck1lc3NhZ2UoY29uc3QgU3RyaW5nJiBtZXNzYWdlKSBj
b25zdApJbmRleDogV2ViQ29yZS9iaW5kaW5ncy92OC9WOFByb3h5LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UHJveHkuY3BwCShyZXZpc2lvbiA2OTc2NCkKKysrIFdl
YkNvcmUvYmluZGluZ3MvdjgvVjhQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc3LDcgKzc3
LDcgQEAKICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL1N0cmlu
Z0V4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi9VbnVzZWRQYXJhbS5oPgotI2luY2x1ZGUgPHd0Zi90
ZXh0L0NTdHJpbmcuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZS5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTE5MSwxMSArMTkxLDggQEAgdm9pZCBWOFByb3h5
OjpyZXBvcnRVbnNhZmVBY2Nlc3NUbyhGcmFtZQogCiAgICAgLy8gRklYTUU6IFRoaXMgZXJyb3Ig
bWVzc2FnZSBzaG91bGQgY29udGFpbiBtb3JlIHNwZWNpZmljcyBvZiB3aHkgdGhlIHNhbWUKICAg
ICAvLyBvcmlnaW4gY2hlY2sgaGFzIGZhaWxlZC4KLSAgICBTdHJpbmcgc3RyID0gU3RyaW5nOjpm
b3JtYXQoIlVuc2FmZSBKYXZhU2NyaXB0IGF0dGVtcHQgdG8gYWNjZXNzIGZyYW1lICIKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIndpdGggVVJMICVzIGZyb20gZnJhbWUgd2l0aCBV
UkwgJXMuICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkRvbWFpbnMsIHByb3Rv
Y29scyBhbmQgcG9ydHMgbXVzdCBtYXRjaC5cbiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHRhcmdldERvY3VtZW50LT51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2VEb2N1bWVudC0+dXJsKCkuc3RyaW5n
KCkudXRmOCgpLmRhdGEoKSk7CisgICAgU3RyaW5nIHN0ciA9IG1ha2VTdHJpbmcoIlVuc2FmZSBK
YXZhU2NyaXB0IGF0dGVtcHQgdG8gYWNjZXNzIGZyYW1lIHdpdGggVVJMICIsIHRhcmdldERvY3Vt
ZW50LT51cmwoKS5zdHJpbmcoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIGZyb20g
ZnJhbWUgd2l0aCBVUkwgIiwgc291cmNlRG9jdW1lbnQtPnVybCgpLnN0cmluZygpLCAiLiBEb21h
aW5zLCBwcm90b2NvbHMgYW5kIHBvcnRzIG11c3QgbWF0Y2guXG4iKTsKIAogICAgIC8vIEJ1aWxk
IGEgY29uc29sZSBtZXNzYWdlIHdpdGggZmFrZSBzb3VyY2UgSUQgYW5kIGxpbmUgbnVtYmVyLgog
ICAgIGNvbnN0IFN0cmluZyBrU291cmNlSUQgPSAiIjsKSW5kZXg6IFdlYkNvcmUvZG9tL0V4Y2Vw
dGlvbkJhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL0V4Y2VwdGlvbkJhc2UuY3Bw
CShyZXZpc2lvbiA2OTc2NCkKKysrIFdlYkNvcmUvZG9tL0V4Y2VwdGlvbkJhc2UuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw4IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVk
ZSAiRXhjZXB0aW9uQmFzZS5oIgogCisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5h
dGUuaD4KKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBFeGNlcHRpb25CYXNlOjpFeGNlcHRpb25C
YXNlKGNvbnN0IEV4Y2VwdGlvbkNvZGVEZXNjcmlwdGlvbiYgZGVzY3JpcHRpb24pCkBAIC0zNyw5
ICszOSw5IEBAIEV4Y2VwdGlvbkJhc2U6OkV4Y2VwdGlvbkJhc2UoY29uc3QgRXhjZXAKICAgICAs
IG1fZGVzY3JpcHRpb24oZGVzY3JpcHRpb24uZGVzY3JpcHRpb24pCiB7CiAgICAgaWYgKGRlc2Ny
aXB0aW9uLm5hbWUpCi0gICAgICAgIG1fbWVzc2FnZSA9IFN0cmluZzo6Zm9ybWF0KCIlczogJXMg
RXhjZXB0aW9uICVkIiwgZGVzY3JpcHRpb24ubmFtZSwgZGVzY3JpcHRpb24udHlwZU5hbWUsIGRl
c2NyaXB0aW9uLmNvZGUpOworICAgICAgICBtX21lc3NhZ2UgPSBtYWtlU3RyaW5nKGRlc2NyaXB0
aW9uLm5hbWUsICI6ICIsIGRlc2NyaXB0aW9uLnR5cGVOYW1lLCAiIEV4Y2VwdGlvbiAiLCBTdHJp
bmc6Om51bWJlcihkZXNjcmlwdGlvbi5jb2RlKSk7CiAgICAgZWxzZQotICAgICAgICBtX21lc3Nh
Z2UgPSBTdHJpbmc6OmZvcm1hdCgiJXMgRXhjZXB0aW9uICVkIiwgZGVzY3JpcHRpb24udHlwZU5h
bWUsIGRlc2NyaXB0aW9uLmNvZGUpOworICAgICAgICBtX21lc3NhZ2UgPSBtYWtlU3RyaW5nKGRl
c2NyaXB0aW9uLnR5cGVOYW1lLCAiIEV4Y2VwdGlvbiAiLCBTdHJpbmc6Om51bWJlcihkZXNjcmlw
dGlvbi5jb2RlKSk7CiB9CiAKIFN0cmluZyBFeGNlcHRpb25CYXNlOjp0b1N0cmluZygpIGNvbnN0
CkluZGV4OiBXZWJDb3JlL2RvbS9YTUxEb2N1bWVudFBhcnNlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9kb20vWE1MRG9jdW1lbnRQYXJzZXIuY3BwCShyZXZpc2lvbiA2OTc2NCkKKysrIFdl
YkNvcmUvZG9tL1hNTERvY3VtZW50UGFyc2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTEsNyAr
NTEsNyBAQAogI2luY2x1ZGUgIlNjcmlwdFZhbHVlLmgiCiAjaW5jbHVkZSAiVGV4dFJlc291cmNl
RGVjb2Rlci5oIgogI2luY2x1ZGUgIlRyZWVEZXB0aExpbWl0LmgiCi0jaW5jbHVkZSA8d3RmL3Rl
eHQvQ1N0cmluZy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlLmg+CiAj
aW5jbHVkZSA8d3RmL1N0cmluZ0V4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4K
ICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CkBAIC0xNTEsMTEgKzE1MSwxMSBAQCB2b2lkIFhNTERv
Y3VtZW50UGFyc2VyOjpoYW5kbGVFcnJvcihFcnJvCiAgICAgaWYgKHR5cGUgPT0gZmF0YWwgfHwg
KG1fZXJyb3JDb3VudCA8IG1heEVycm9ycyAmJiBtX2xhc3RFcnJvckxpbmUgIT0gbGluZU51bWJl
ciAmJiBtX2xhc3RFcnJvckNvbHVtbiAhPSBjb2x1bW5OdW1iZXIpKSB7CiAgICAgICAgIHN3aXRj
aCAodHlwZSkgewogICAgICAgICAgICAgY2FzZSB3YXJuaW5nOgotICAgICAgICAgICAgICAgIG1f
ZXJyb3JNZXNzYWdlcyArPSBTdHJpbmc6OmZvcm1hdCgid2FybmluZyBvbiBsaW5lICVkIGF0IGNv
bHVtbiAlZDogJXMiLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIG0pOworICAgICAgICAgICAg
ICAgIG1fZXJyb3JNZXNzYWdlcyArPSBtYWtlU3RyaW5nKCJ3YXJuaW5nIG9uIGxpbmUgIiwgU3Ry
aW5nOjpudW1iZXIobGluZU51bWJlciksICIgYXQgY29sdW1uICIsIFN0cmluZzo6bnVtYmVyKGNv
bHVtbk51bWJlciksICI6ICIsIG0pOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg
ICAgY2FzZSBmYXRhbDoKICAgICAgICAgICAgIGNhc2Ugbm9uRmF0YWw6Ci0gICAgICAgICAgICAg
ICAgbV9lcnJvck1lc3NhZ2VzICs9IFN0cmluZzo6Zm9ybWF0KCJlcnJvciBvbiBsaW5lICVkIGF0
IGNvbHVtbiAlZDogJXMiLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIG0pOworICAgICAgICAg
ICAgICAgIG1fZXJyb3JNZXNzYWdlcyArPSBtYWtlU3RyaW5nKCJlcnJvciBvbiBsaW5lICIsIFN0
cmluZzo6bnVtYmVyKGxpbmVOdW1iZXIpLCAiIGF0IGNvbHVtbiAiLCBTdHJpbmc6Om51bWJlcihj
b2x1bW5OdW1iZXIpLCAiOiAiLCBtKTsKICAgICAgICAgfQogCiAgICAgICAgIG1fbGFzdEVycm9y
TGluZSA9IGxpbmVOdW1iZXI7CkluZGV4OiBXZWJDb3JlL2hpc3RvcnkvUGFnZUNhY2hlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL2hpc3RvcnkvUGFnZUNhY2hlLmNwcAkocmV2aXNpb24gNjk3
NjQpCisrKyBXZWJDb3JlL2hpc3RvcnkvUGFnZUNhY2hlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NDcsNiArNDcsNyBAQAogI2luY2x1ZGUgIlN5c3RlbVRpbWUuaCIKICNpbmNsdWRlIDx3dGYvQ3Vy
cmVudFRpbWUuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisjaW5jbHVkZSA8d3Rm
L3RleHQvU3RyaW5nQ29uY2F0ZW5hdGUuaD4KIAogdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIApAQCAt
NzYsNyArNzcsNyBAQCBzdGF0aWMgdm9pZCBwYWdlQ2FjaGVMb2coY29uc3QgU3RyaW5nJiBwCiAg
ICAgTE9HKFBhZ2VDYWNoZSwgIiVzJXMiLCBwcmVmaXgudXRmOCgpLmRhdGEoKSwgbWVzc2FnZS51
dGY4KCkuZGF0YSgpKTsKIH0KICAgICAKLSNkZWZpbmUgUENMT0coLi4uKSBwYWdlQ2FjaGVMb2co
cGFnZUNhY2hlTG9nUHJlZml4KGluZGVudExldmVsKSwgU3RyaW5nOjpmb3JtYXQoX19WQV9BUkdT
X18pKQorI2RlZmluZSBQQ0xPRyguLi4pIHBhZ2VDYWNoZUxvZyhwYWdlQ2FjaGVMb2dQcmVmaXgo
aW5kZW50TGV2ZWwpLCBtYWtlU3RyaW5nKF9fVkFfQVJHU19fKSkKICAgICAKIHN0YXRpYyBib29s
IGxvZ0NhbkNhY2hlRnJhbWVEZWNpc2lvbihGcmFtZSogZnJhbWUsIGludCBpbmRlbnRMZXZlbCkK
IHsKQEAgLTkwLDkgKzkxLDkgQEAgc3RhdGljIGJvb2wgbG9nQ2FuQ2FjaGVGcmFtZURlY2lzaW9u
KEZyYQogICAgIFBDTE9HKCIrLS0tIik7CiAgICAgS1VSTCBuZXdVUkwgPSBmcmFtZS0+bG9hZGVy
KCktPnByb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXIoKSA/IGZyYW1lLT5sb2FkZXIoKS0+cHJvdmlz
aW9uYWxEb2N1bWVudExvYWRlcigpLT51cmwoKSA6IEtVUkwoKTsKICAgICBpZiAoIW5ld1VSTC5p
c0VtcHR5KCkpCi0gICAgICAgIFBDTE9HKCIgRGV0ZXJtaW5pbmcgaWYgZnJhbWUgY2FuIGJlIGNh
Y2hlZCBuYXZpZ2F0aW5nIGZyb20gKCVzKSB0byAoJXMpOiIsIGN1cnJlbnRVUkwuc3RyaW5nKCku
dXRmOCgpLmRhdGEoKSwgbmV3VVJMLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICBQ
Q0xPRygiIERldGVybWluaW5nIGlmIGZyYW1lIGNhbiBiZSBjYWNoZWQgbmF2aWdhdGluZyBmcm9t
ICgiLCBjdXJyZW50VVJMLnN0cmluZygpLCAiKSB0byAoIiwgbmV3VVJMLnN0cmluZygpLCAiKToi
KTsKICAgICBlbHNlCi0gICAgICAgIFBDTE9HKCIgRGV0ZXJtaW5pbmcgaWYgc3ViZnJhbWUgd2l0
aCBVUkwgKCVzKSBjYW4gYmUgY2FjaGVkOiIsIGN1cnJlbnRVUkwuc3RyaW5nKCkudXRmOCgpLmRh
dGEoKSk7CisgICAgICAgIFBDTE9HKCIgRGV0ZXJtaW5pbmcgaWYgc3ViZnJhbWUgd2l0aCBVUkwg
KCIsIGN1cnJlbnRVUkwuc3RyaW5nKCksICIpIGNhbiBiZSBjYWNoZWQ6Iik7CiAgICAgCiAgICAg
Ym9vbCBjYW5ub3RDYWNoZSA9IGZhbHNlOwogICAgIApJbmRleDogV2ViQ29yZS9odG1sL0ZUUERp
cmVjdG9yeURvY3VtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvRlRQRGlyZWN0
b3J5RG9jdW1lbnQuY3BwCShyZXZpc2lvbiA2OTc2NCkKKysrIFdlYkNvcmUvaHRtbC9GVFBEaXJl
Y3RvcnlEb2N1bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5LDYgKzM5LDcgQEAKICNpbmNs
dWRlICJUZXh0LmgiCiAKICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisjaW5jbHVkZSA8
d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGUuaD4KICNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUu
aD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKQEAgLTI1Myw5ICsyNTQsOSBAQCBz
dGF0aWMgU3RyaW5nIHByb2Nlc3NGaWxlRGF0ZVN0cmluZyhjb25zCiAgICAgU3RyaW5nIGRhdGVT
dHJpbmc7CiAKICAgICBpZiAoZmlsZVRpbWUudG1feWVhciA+IC0xKQotICAgICAgICBkYXRlU3Ry
aW5nID0gU3RyaW5nOjpmb3JtYXQoIiVzICVpLCAlaSIsIG1vbnRoc1ttb250aF0sIGZpbGVUaW1l
LnRtX21kYXksIGZpbGVUaW1lLnRtX3llYXIpOworICAgICAgICBkYXRlU3RyaW5nID0gbWFrZVN0
cmluZyhtb250aHNbbW9udGhdLCAnICcsIFN0cmluZzo6bnVtYmVyKGZpbGVUaW1lLnRtX21kYXkp
LCAiLCAiLCBTdHJpbmc6Om51bWJlcihmaWxlVGltZS50bV95ZWFyKSk7CiAgICAgZWxzZQotICAg
ICAgICBkYXRlU3RyaW5nID0gU3RyaW5nOjpmb3JtYXQoIiVzICVpLCAlaSIsIG1vbnRoc1ttb250
aF0sIGZpbGVUaW1lLnRtX21kYXksIG5vdy50bV95ZWFyKTsKKyAgICAgICAgZGF0ZVN0cmluZyA9
IG1ha2VTdHJpbmcobW9udGhzW21vbnRoXSwgJyAnLCBTdHJpbmc6Om51bWJlcihmaWxlVGltZS50
bV9tZGF5KSwgIiwgIiwgU3RyaW5nOjpudW1iZXIobm93LnRtX3llYXIpKTsKIAogICAgIHJldHVy
biBkYXRlU3RyaW5nICsgdGltZU9mRGF5OwogfQpJbmRleDogV2ViQ29yZS9pbnNwZWN0b3IvQ29k
ZUdlbmVyYXRvckluc3BlY3Rvci5wbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2luc3BlY3Rvci9D
b2RlR2VuZXJhdG9ySW5zcGVjdG9yLnBtCShyZXZpc2lvbiA2OTc2NCkKKysrIFdlYkNvcmUvaW5z
cGVjdG9yL0NvZGVHZW5lcmF0b3JJbnNwZWN0b3IucG0JKHdvcmtpbmcgY29weSkKQEAgLTMxNCw3
ICszMTQsNyBAQCBzdWIgZ2VuZXJhdGVCYWNrZW5kRnVuY3Rpb24KICAgICBteSAkZG9tYWluQWNj
ZXNzb3IgPSAkdHlwZVRyYW5zZm9ybXskZG9tYWlufS0+eyJkb21haW5BY2Nlc3NvciJ9OwogICAg
ICRiYWNrZW5kVHlwZXN7JGRvbWFpbn0gPSAxOwogICAgIHB1c2goQGZ1bmN0aW9uLCAiICAgIGlm
ICghJGRvbWFpbkFjY2Vzc29yKSIpOwotICAgIHB1c2goQGZ1bmN0aW9uLCAiICAgICAgICBwcm90
b2NvbEVycm9ycy0+cHVzaFN0cmluZyhTdHJpbmc6OmZvcm1hdChcIlByb3RvY29sIEVycm9yOiAl
cyBoYW5kbGVyIGlzIG5vdCBhdmFpbGFibGUuXCIsIFwiJGRvbWFpblwiKSk7Iik7CisgICAgcHVz
aChAZnVuY3Rpb24sICIgICAgICAgIHByb3RvY29sRXJyb3JzLT5wdXNoU3RyaW5nKFwiUHJvdG9j
b2wgRXJyb3I6ICRkb21haW4gaGFuZGxlciBpcyBub3QgYXZhaWxhYmxlLlwiKTsiKTsKICAgICBw
dXNoKEBmdW5jdGlvbiwgIiIpOwogCiAgICAgaWYgKHNjYWxhcihAaW5BcmdzKSkgewpAQCAtMzI0
LDcgKzMyNCw3IEBAIHN1YiBnZW5lcmF0ZUJhY2tlbmRGdW5jdGlvbgogICAgICAgICBwdXNoKEBm
dW5jdGlvbiwgIiIpOwogICAgICAgICBwdXNoKEBmdW5jdGlvbiwgIiAgICBSZWZQdHI8SW5zcGVj
dG9yT2JqZWN0PiBhcmd1bWVudHNDb250YWluZXI7Iik7CiAgICAgICAgIHB1c2goQGZ1bmN0aW9u
LCAiICAgIGlmICghKGFyZ3VtZW50c0NvbnRhaW5lciA9IHJlcXVlc3RNZXNzYWdlT2JqZWN0LT5n
ZXRPYmplY3QoXCJhcmd1bWVudHNcIikpKSB7Iik7Ci0gICAgICAgIHB1c2goQGZ1bmN0aW9uLCAi
ICAgICAgICBwcm90b2NvbEVycm9ycy0+cHVzaFN0cmluZyhTdHJpbmc6OmZvcm1hdChcIlByb3Rv
Y29sIEVycm9yOiAnYXJndW1lbnRzJyBwcm9wZXJ0eSB3aXRoIHR5cGUgJ29iamVjdCcgd2FzIG5v
dCBmb3VuZC5cIikpOyIpOworICAgICAgICBwdXNoKEBmdW5jdGlvbiwgIiAgICAgICAgcHJvdG9j
b2xFcnJvcnMtPnB1c2hTdHJpbmcoXCJQcm90b2NvbCBFcnJvcjogJ2FyZ3VtZW50cycgcHJvcGVy
dHkgd2l0aCB0eXBlICdvYmplY3QnIHdhcyBub3QgZm91bmQuXCIpOyIpOwogICAgICAgICBwdXNo
KEBmdW5jdGlvbiwgIiAgICB9IGVsc2UgeyIpOwogICAgICAgICBwdXNoKEBmdW5jdGlvbiwgIiAg
ICAgICAgSW5zcGVjdG9yT2JqZWN0Ojpjb25zdF9pdGVyYXRvciBhcmd1bWVudHNFbmRJdGVyYXRv
ciA9IGFyZ3VtZW50c0NvbnRhaW5lci0+ZW5kKCk7Iik7CiAKQEAgLTMzNywxMCArMzM3LDEwIEBA
IHN1YiBnZW5lcmF0ZUJhY2tlbmRGdW5jdGlvbgogICAgICAgICAgICAgcHVzaChAZnVuY3Rpb24s
ICIiKTsKICAgICAgICAgICAgIHB1c2goQGZ1bmN0aW9uLCAiICAgICAgICBJbnNwZWN0b3JPYmpl
Y3Q6OmNvbnN0X2l0ZXJhdG9yICR7bmFtZX1WYWx1ZUl0ZXJhdG9yID0gYXJndW1lbnRzQ29udGFp
bmVyLT5maW5kKFwiJG5hbWVcIik7Iik7CiAgICAgICAgICAgICBwdXNoKEBmdW5jdGlvbiwgIiAg
ICAgICAgaWYgKCR7bmFtZX1WYWx1ZUl0ZXJhdG9yID09IGFyZ3VtZW50c0VuZEl0ZXJhdG9yKSB7
Iik7Ci0gICAgICAgICAgICBwdXNoKEBmdW5jdGlvbiwgIiAgICAgICAgICAgIHByb3RvY29sRXJy
b3JzLT5wdXNoU3RyaW5nKFN0cmluZzo6Zm9ybWF0KFwiUHJvdG9jb2wgRXJyb3I6IEFyZ3VtZW50
ICclcycgd2l0aCB0eXBlICclcycgd2FzIG5vdCBmb3VuZC5cIiwgXCIkbmFtZVwiLCBcIiRKU09O
VHlwZVwiKSk7Iik7CisgICAgICAgICAgICBwdXNoKEBmdW5jdGlvbiwgIiAgICAgICAgICAgIHBy
b3RvY29sRXJyb3JzLT5wdXNoU3RyaW5nKFwiUHJvdG9jb2wgRXJyb3I6IEFyZ3VtZW50ICckbmFt
ZScgd2l0aCB0eXBlICckSlNPTlR5cGUnIHdhcyBub3QgZm91bmQuXCIpOyIpOwogICAgICAgICAg
ICAgcHVzaChAZnVuY3Rpb24sICIgICAgICAgIH0gZWxzZSB7Iik7CiAgICAgICAgICAgICBwdXNo
KEBmdW5jdGlvbiwgIiAgICAgICAgICAgIGlmICghJHtuYW1lfVZhbHVlSXRlcmF0b3ItPnNlY29u
ZC0+YXMkSlNPTlR5cGUoJiRuYW1lKSkgeyIpOwotICAgICAgICAgICAgcHVzaChAZnVuY3Rpb24s
ICIgICAgICAgICAgICAgICAgcHJvdG9jb2xFcnJvcnMtPnB1c2hTdHJpbmcoU3RyaW5nOjpmb3Jt
YXQoXCJQcm90b2NvbCBFcnJvcjogQXJndW1lbnQgJyVzJyBoYXMgd3JvbmcgdHlwZS4gSXQgc2hv
dWxkIGJlICclcycuXCIsIFwiJG5hbWVcIiwgXCIkSlNPTlR5cGVcIikpOyIpOworICAgICAgICAg
ICAgcHVzaChAZnVuY3Rpb24sICIgICAgICAgICAgICAgICAgcHJvdG9jb2xFcnJvcnMtPnB1c2hT
dHJpbmcoXCJQcm90b2NvbCBFcnJvcjogQXJndW1lbnQgJyRuYW1lJyBoYXMgd3JvbmcgdHlwZS4g
SXQgc2hvdWxkIGJlICckSlNPTlR5cGUnLlwiKTsiKTsKICAgICAgICAgICAgIHB1c2goQGZ1bmN0
aW9uLCAiICAgICAgICAgICAgfSIpOwogICAgICAgICAgICAgcHVzaChAZnVuY3Rpb24sICIgICAg
ICAgIH0iKTsKICAgICAgICAgfQpAQCAtNDU0LDcgKzQ1NCw3IEBAICRtYXBFbnRyaWVzCiAKICAg
ICBIYXNoTWFwPFN0cmluZywgQ2FsbEhhbmRsZXI+OjppdGVyYXRvciBpdCA9IGRpc3BhdGNoTWFw
LmZpbmQoY29tbWFuZCk7CiAgICAgaWYgKGl0ID09IGRpc3BhdGNoTWFwLmVuZCgpKSB7Ci0gICAg
ICAgIHJlcG9ydFByb3RvY29sRXJyb3IoY2FsbElkLCBTdHJpbmc6OmZvcm1hdCgiUHJvdG9jb2wg
RXJyb3I6IEludmFsaWQgY29tbWFuZCB3YXMgcmVjZWl2ZWQuICclcycgd2Fzbid0IGZvdW5kLiIs
IGNvbW1hbmQudXRmOCgpLmRhdGEoKSkpOworICAgICAgICByZXBvcnRQcm90b2NvbEVycm9yKGNh
bGxJZCwgbWFrZVN0cmluZygiUHJvdG9jb2wgRXJyb3I6IEludmFsaWQgY29tbWFuZCB3YXMgcmVj
ZWl2ZWQuICciLCBjb21tYW5kLCAiJyB3YXNuJ3QgZm91bmQuIikpOwogICAgICAgICByZXR1cm47
CiAgICAgfQogCkBAIC02MTQsNyArNjE0LDcgQEAgc3ViIGdlbmVyYXRlU291cmNlCiAgICAgbXkg
QHNvdXJjZUNvbnRlbnQgPSBzcGxpdCgiXHIiLCAkbGljZW5zZVRlbXBsYXRlKTsKICAgICBwdXNo
KEBzb3VyY2VDb250ZW50LCAiXG4jaW5jbHVkZSBcImNvbmZpZy5oXCIiKTsKICAgICBwdXNoKEBz
b3VyY2VDb250ZW50LCAiI2luY2x1ZGUgXCIkY2xhc3NOYW1lLmhcIiIpOwotICAgIHB1c2goQHNv
dXJjZUNvbnRlbnQsICIjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPiIpOworICAgIHB1c2go
QHNvdXJjZUNvbnRlbnQsICIjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGUuaD4i
KTsKICAgICBwdXNoKEBzb3VyY2VDb250ZW50LCAiIik7CiAgICAgcHVzaChAc291cmNlQ29udGVu
dCwgIiNpZiBFTkFCTEUoSU5TUEVDVE9SKSIpOwogICAgIHB1c2goQHNvdXJjZUNvbnRlbnQsICIi
KTsKSW5kZXg6IFdlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCShyZXZp
c2lvbiA2OTc2NCkKKysrIFdlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC05Miw3ICs5Miw3IEBACiAjaW5jbHVkZSAiVGV4dEVuY29kaW5n
LmgiCiAjaW5jbHVkZSAiVGV4dEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiV2luZG93RmVhdHVyZXMu
aCIKLSNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3Ry
aW5nQ29uY2F0ZW5hdGUuaD4KICNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KICNpbmNsdWRl
IDx3dGYvTGlzdEhhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgpAQCAtMTA2
Nyw5ICsxMDY3LDcgQEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpkaWRSZWNlaXZlUmVzcAog
ICAgICAgICAgICAgcmVzb3VyY2UtPnVwZGF0ZVNjcmlwdE9iamVjdChtX2Zyb250ZW5kLmdldCgp
KTsKICAgICB9CiAgICAgaWYgKHJlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCkgPj0gNDAwKSB7Ci0g
ICAgICAgIC8vIFRoZSB1Z2x5IGNvZGUgYmVsb3cgaXMgZHVlIHRvIHRoYXQgU3RyaW5nOjpmb3Jt
YXQoKSBpcyBub3QgdXRmOC1zYWZlIGF0IHRoZSBtb21lbnQuCi0gICAgICAgIFN0cmluZyBtZXNz
YWdlID0gU3RyaW5nOjpmb3JtYXQoIkZhaWxlZCB0byBsb2FkIHJlc291cmNlOiB0aGUgc2VydmVy
IHJlc3BvbmRlZCB3aXRoIGEgc3RhdHVzIG9mICV1ICgiLCByZXNwb25zZS5odHRwU3RhdHVzQ29k
ZSgpKSArIHJlc3BvbnNlLmh0dHBTdGF0dXNUZXh0KCkgKyAiKSI7Ci0KKyAgICAgICAgU3RyaW5n
IG1lc3NhZ2UgPSBtYWtlU3RyaW5nKCJGYWlsZWQgdG8gbG9hZCByZXNvdXJjZTogdGhlIHNlcnZl
ciByZXNwb25kZWQgd2l0aCBhIHN0YXR1cyBvZiAiLCBTdHJpbmc6Om51bWJlcihyZXNwb25zZS5o
dHRwU3RhdHVzQ29kZSgpKSwgIiAoIiwgcmVzcG9uc2UuaHR0cFN0YXR1c1RleHQoKSwgJyknKTsK
ICAgICAgICAgYWRkTWVzc2FnZVRvQ29uc29sZShPdGhlck1lc3NhZ2VTb3VyY2UsIExvZ01lc3Nh
Z2VUeXBlLCBFcnJvck1lc3NhZ2VMZXZlbCwgbWVzc2FnZSwgMCwgcmVzcG9uc2UudXJsKCkuc3Ry
aW5nKCkpOwogICAgIH0KIH0KQEAgLTIwMzIsNyArMjAzMCw3IEBAIHZvaWQgSW5zcGVjdG9yQ29u
dHJvbGxlcjo6b3BlbkluSW5zcGVjdGUKIAogdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpjb3Vu
dChjb25zdCBTdHJpbmcmIHRpdGxlLCB1bnNpZ25lZCBsaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcm
IHNvdXJjZUlEKQogewotICAgIFN0cmluZyBpZGVudGlmaWVyID0gdGl0bGUgKyBTdHJpbmc6OmZv
cm1hdCgiQCVzOiVkIiwgc291cmNlSUQudXRmOCgpLmRhdGEoKSwgbGluZU51bWJlcik7CisgICAg
U3RyaW5nIGlkZW50aWZpZXIgPSBtYWtlU3RyaW5nKHRpdGxlLCAnQCcsIHNvdXJjZUlELCAnOics
IFN0cmluZzo6bnVtYmVyKGxpbmVOdW1iZXIpKTsKICAgICBIYXNoTWFwPFN0cmluZywgdW5zaWdu
ZWQ+OjppdGVyYXRvciBpdCA9IG1fY291bnRzLmZpbmQoaWRlbnRpZmllcik7CiAgICAgaW50IGNv
dW50OwogICAgIGlmIChpdCA9PSBtX2NvdW50cy5lbmQoKSkKQEAgLTIwNDQsNyArMjA0Miw3IEBA
IHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6Y291bnQoY29uc3QgU3QKIAogICAgIG1fY291bnRz
LmFkZChpZGVudGlmaWVyLCBjb3VudCk7CiAKLSAgICBTdHJpbmcgbWVzc2FnZSA9IFN0cmluZzo6
Zm9ybWF0KCIlczogJWQiLCB0aXRsZS51dGY4KCkuZGF0YSgpLCBjb3VudCk7CisgICAgU3RyaW5n
IG1lc3NhZ2UgPSBtYWtlU3RyaW5nKHRpdGxlLCAiOiAiLCBTdHJpbmc6Om51bWJlcihjb3VudCkp
OwogICAgIGFkZE1lc3NhZ2VUb0NvbnNvbGUoSlNNZXNzYWdlU291cmNlLCBMb2dNZXNzYWdlVHlw
ZSwgTG9nTWVzc2FnZUxldmVsLCBtZXNzYWdlLCBsaW5lTnVtYmVyLCBzb3VyY2VJRCk7CiB9CiAK
SW5kZXg6IFdlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAJKHJldmlzaW9uIDY5
NzY0KQorKysgV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC03Nyw2ICs3Nyw3IEBACiAjaW5jbHVkZSAibWFya3VwLmgiCiAKICNpbmNsdWRl
IDx3dGYvdGV4dC9DU3RyaW5nLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5h
dGUuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9MaXN0SGFzaFNl
dC5oPgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KQEAgLTExOTAsNyArMTE5MSw3IEBAIHZvaWQg
SW5zcGVjdG9yRE9NQWdlbnQ6OnJlbW92ZUJyZWFrcG9pbnQKIAogU3RyaW5nIEluc3BlY3RvckRP
TUFnZW50OjpjcmVhdGVCcmVha3BvaW50SWQobG9uZyBub2RlSWQsIGxvbmcgdHlwZSkKIHsKLSAg
ICByZXR1cm4gU3RyaW5nOjpmb3JtYXQoImRvbTolbGQ6JWxkIiwgbm9kZUlkLCB0eXBlKTsKKyAg
ICByZXR1cm4gbWFrZVN0cmluZygiZG9tOiIsIFN0cmluZzo6bnVtYmVyKG5vZGVJZCksICc6Jywg
U3RyaW5nOjpudW1iZXIodHlwZSkpOwogfQogCiB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpnZXRT
dHlsZXMobG9uZyBub2RlSWQsIGJvb2wgYXV0aG9yT25seSwgUmVmUHRyPEluc3BlY3RvclZhbHVl
Piogc3R5bGVzKQpJbmRleDogV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2Vu
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJB
Z2VudC5jcHAJKHJldmlzaW9uIDY5NzY0KQorKysgV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
RGVidWdnZXJBZ2VudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4LDEzICszOCwxMyBAQAogI2lu
Y2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAjaW5jbHVkZSAiU2NyaXB0RGVidWdTZXJ2ZXIuaCIK
ICNpbmNsdWRlIDx3dGYvTUQ1Lmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogc3RhdGljIFN0cmluZyBmb3JtYXRCcmVha3BvaW50SWQoY29uc3QgU3RyaW5nJiBzb3Vy
Y2VJRCwgdW5zaWduZWQgbGluZU51bWJlcikKIHsKLSAgICByZXR1cm4gU3RyaW5nOjpmb3JtYXQo
IiVzOiVkIiwgc291cmNlSUQudXRmOCgpLmRhdGEoKSwgbGluZU51bWJlcik7CisgICAgcmV0dXJu
IG1ha2VTdHJpbmcoc291cmNlSUQsICc6JywgU3RyaW5nOjpudW1iZXIobGluZU51bWJlcikpOwog
fQogCiBQYXNzT3duUHRyPEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ+IEluc3BlY3RvckRlYnVnZ2Vy
QWdlbnQ6OmNyZWF0ZShJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3JDb250cm9sbGVyLCBJ
bnNwZWN0b3JGcm9udGVuZCogZnJvbnRlbmQpCkluZGV4OiBXZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JQcm9maWxlckFnZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JQcm9maWxlckFnZW50LmNwcAkocmV2aXNpb24gNjk3NjQpCisrKyBXZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JQcm9maWxlckFnZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDMs
NyArNDMsNyBAQAogI2luY2x1ZGUgIlNjcmlwdFByb2ZpbGUuaCIKICNpbmNsdWRlICJTY3JpcHRQ
cm9maWxlci5oIgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9D
U3RyaW5nLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGUuaD4KIAogI2lm
IFVTRShKU0MpCiAjaW5jbHVkZSAiSlNET01XaW5kb3cuaCIKQEAgLTg5LDEzICs4OSwxMyBAQCB2
b2lkIEluc3BlY3RvclByb2ZpbGVyQWdlbnQ6OmFkZFByb2ZpbGVGCiB7CiAgICAgUmVmUHRyPFNj
cmlwdFByb2ZpbGU+IHByb2ZpbGUgPSBwcnBQcm9maWxlOwogICAgIFN0cmluZyB0aXRsZSA9IHBy
b2ZpbGUtPnRpdGxlKCk7Ci0gICAgU3RyaW5nIG1lc3NhZ2UgPSBTdHJpbmc6OmZvcm1hdCgiUHJv
ZmlsZSBcIndlYmtpdC1wcm9maWxlOi8vJXMvJXMjJWRcIiBmaW5pc2hlZC4iLCBDUFVQcm9maWxl
VHlwZSwgZW5jb2RlV2l0aFVSTEVzY2FwZVNlcXVlbmNlcyh0aXRsZSkudXRmOCgpLmRhdGEoKSwg
cHJvZmlsZS0+dWlkKCkpOworICAgIFN0cmluZyBtZXNzYWdlID0gbWFrZVN0cmluZygiUHJvZmls
ZSBcIndlYmtpdC1wcm9maWxlOi8vIiwgQ1BVUHJvZmlsZVR5cGUsICcvJywgZW5jb2RlV2l0aFVS
TEVzY2FwZVNlcXVlbmNlcyh0aXRsZSksICcjJywgU3RyaW5nOjpudW1iZXIocHJvZmlsZS0+dWlk
KCkpLCAiXCIgZmluaXNoZWQuIik7CiAgICAgbV9pbnNwZWN0b3JDb250cm9sbGVyLT5hZGRNZXNz
YWdlVG9Db25zb2xlKEpTTWVzc2FnZVNvdXJjZSwgTG9nTWVzc2FnZVR5cGUsIExvZ01lc3NhZ2VM
ZXZlbCwgbWVzc2FnZSwgbGluZU51bWJlciwgc291cmNlVVJMKTsKIH0KIAogdm9pZCBJbnNwZWN0
b3JQcm9maWxlckFnZW50OjphZGRTdGFydFByb2ZpbGluZ01lc3NhZ2VUb0NvbnNvbGUoY29uc3Qg
U3RyaW5nJiB0aXRsZSwgdW5zaWduZWQgbGluZU51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VV
UkwpCiB7Ci0gICAgU3RyaW5nIG1lc3NhZ2UgPSBTdHJpbmc6OmZvcm1hdCgiUHJvZmlsZSBcIndl
YmtpdC1wcm9maWxlOi8vJXMvJXMjMFwiIHN0YXJ0ZWQuIiwgQ1BVUHJvZmlsZVR5cGUsIGVuY29k
ZVdpdGhVUkxFc2NhcGVTZXF1ZW5jZXModGl0bGUpLnV0ZjgoKS5kYXRhKCkpOworICAgIFN0cmlu
ZyBtZXNzYWdlID0gbWFrZVN0cmluZygiUHJvZmlsZSBcIndlYmtpdC1wcm9maWxlOi8vIiwgQ1BV
UHJvZmlsZVR5cGUsICcvJywgZW5jb2RlV2l0aFVSTEVzY2FwZVNlcXVlbmNlcyh0aXRsZSksICIj
MCBcIiBzdGFydGVkLiIpOwogICAgIG1faW5zcGVjdG9yQ29udHJvbGxlci0+YWRkTWVzc2FnZVRv
Q29uc29sZShKU01lc3NhZ2VTb3VyY2UsIExvZ01lc3NhZ2VUeXBlLCBMb2dNZXNzYWdlTGV2ZWws
IG1lc3NhZ2UsIGxpbmVOdW1iZXIsIHNvdXJjZVVSTCk7CiB9CiAKQEAgLTE0Myw3ICsxNDMsNyBA
QCBTdHJpbmcgSW5zcGVjdG9yUHJvZmlsZXJBZ2VudDo6Z2V0Q3VycmVuCiAgICAgaWYgKGluY3Jl
bWVudFByb2ZpbGVOdW1iZXIpCiAgICAgICAgIG1fY3VycmVudFVzZXJJbml0aWF0ZWRQcm9maWxl
TnVtYmVyID0gbV9uZXh0VXNlckluaXRpYXRlZFByb2ZpbGVOdW1iZXIrKzsKIAotICAgIHJldHVy
biBTdHJpbmc6OmZvcm1hdCgiJXMuJWQiLCBVc2VySW5pdGlhdGVkUHJvZmlsZU5hbWUsIG1fY3Vy
cmVudFVzZXJJbml0aWF0ZWRQcm9maWxlTnVtYmVyKTsKKyAgICByZXR1cm4gbWFrZVN0cmluZyhV
c2VySW5pdGlhdGVkUHJvZmlsZU5hbWUsICcuJywgU3RyaW5nOjpudW1iZXIobV9jdXJyZW50VXNl
ckluaXRpYXRlZFByb2ZpbGVOdW1iZXIpKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JQcm9maWxlckFn
ZW50OjpnZXRQcm9maWxlSGVhZGVycyhSZWZQdHI8SW5zcGVjdG9yQXJyYXk+KiBoZWFkZXJzKQpA
QCAtMjMyLDcgKzIzMiw5IEBAIHZvaWQgSW5zcGVjdG9yUHJvZmlsZXJBZ2VudDo6c3RvcFVzZXJJ
bmkKIAogdm9pZCBJbnNwZWN0b3JQcm9maWxlckFnZW50Ojp0YWtlSGVhcFNuYXBzaG90KCkKIHsK
LSAgICBTdHJpbmcgdGl0bGUgPSBTdHJpbmc6OmZvcm1hdCgiJXMuJWQiLCBVc2VySW5pdGlhdGVk
UHJvZmlsZU5hbWUsIG1fbmV4dFVzZXJJbml0aWF0ZWRIZWFwU25hcHNob3ROdW1iZXIrKyk7Cisg
ICAgU3RyaW5nIHRpdGxlID0gbWFrZVN0cmluZyhVc2VySW5pdGlhdGVkUHJvZmlsZU5hbWUsICcu
JywgU3RyaW5nOjpudW1iZXIobV9uZXh0VXNlckluaXRpYXRlZEhlYXBTbmFwc2hvdE51bWJlcikp
OworICAgICsrbV9uZXh0VXNlckluaXRpYXRlZEhlYXBTbmFwc2hvdE51bWJlcjsKKwogICAgIFJl
ZlB0cjxTY3JpcHRIZWFwU25hcHNob3Q+IHNuYXBzaG90ID0gU2NyaXB0UHJvZmlsZXI6OnRha2VI
ZWFwU25hcHNob3QodGl0bGUpOwogICAgIGlmIChzbmFwc2hvdCkgewogICAgICAgICBtX3NuYXBz
aG90cy5hZGQoc25hcHNob3QtPnVpZCgpLCBzbmFwc2hvdCk7CkluZGV4OiBXZWJDb3JlL2xvYWRl
ci9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIv
Q2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwCShyZXZpc2lvbiA2OTc2NCkKKysrIFdlYkNvcmUvbG9h
ZGVyL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDQsNyArNDQs
NyBAQAogI2luY2x1ZGUgIlBpbmdMb2FkZXIuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5o
IgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCi0jaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgor
I2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlLmg+CiAKICNkZWZpbmUgUFJFTE9B
RF9ERUJVRyAwCiAKQEAgLTI4OSwxMiArMjg5LDggQEAgdm9pZCBDYWNoZWRSZXNvdXJjZUxvYWRl
cjo6cHJpbnRBY2Nlc3NEZQogICAgICAgICByZXR1cm47CiAKICAgICBTdHJpbmcgbWVzc2FnZSA9
IG1fZG9jLT51cmwoKS5pc051bGwoKSA/Ci0gICAgICAgIFN0cmluZzo6Zm9ybWF0KCJVbnNhZmUg
YXR0ZW1wdCB0byBsb2FkIFVSTCAlcy4iLAotICAgICAgICAgICAgICAgICAgICAgICB1cmwuc3Ry
aW5nKCkudXRmOCgpLmRhdGEoKSkgOgotICAgICAgICBTdHJpbmc6OmZvcm1hdCgiVW5zYWZlIGF0
dGVtcHQgdG8gbG9hZCBVUkwgJXMgZnJvbSBmcmFtZSB3aXRoIFVSTCAlcy4gIgotICAgICAgICAg
ICAgICAgICAgICAgICAiRG9tYWlucywgcHJvdG9jb2xzIGFuZCBwb3J0cyBtdXN0IG1hdGNoLlxu
IiwKLSAgICAgICAgICAgICAgICAgICAgICAgdXJsLnN0cmluZygpLnV0ZjgoKS5kYXRhKCksCi0g
ICAgICAgICAgICAgICAgICAgICAgIG1fZG9jLT51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgp
KTsKKyAgICAgICAgbWFrZVN0cmluZygiVW5zYWZlIGF0dGVtcHQgdG8gbG9hZCBVUkwgIiwgdXJs
LnN0cmluZygpLCAnLicpIDoKKyAgICAgICAgbWFrZVN0cmluZygiVW5zYWZlIGF0dGVtcHQgdG8g
bG9hZCBVUkwgIiwgdXJsLnN0cmluZygpLCAiIGZyb20gZnJhbWUgd2l0aCBVUkwgIiwgbV9kb2Mt
PnVybCgpLnN0cmluZygpLCAiLiBEb21haW5zLCBwcm90b2NvbHMgYW5kIHBvcnRzIG11c3QgbWF0
Y2guXG4iKTsKIAogICAgIC8vIEZJWE1FOiBwcm92aWRlIGEgcmVhbCBsaW5lIG51bWJlciBhbmQg
c291cmNlIFVSTC4KICAgICBmcmFtZSgpLT5kb21XaW5kb3coKS0+Y29uc29sZSgpLT5hZGRNZXNz
YWdlKE90aGVyTWVzc2FnZVNvdXJjZSwgTG9nTWVzc2FnZVR5cGUsIEVycm9yTWVzc2FnZUxldmVs
LCBtZXNzYWdlLCAxLCBTdHJpbmcoKSk7CkluZGV4OiBXZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRl
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCShyZXZp
c2lvbiA2OTc2NCkKKysrIFdlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTAwLDYgKzEwMCw3IEBACiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CiAj
aW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcu
aD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZS5oPgogCiAjaWYgRU5BQkxF
KFNIQVJFRF9XT1JLRVJTKQogI2luY2x1ZGUgIlNoYXJlZFdvcmtlclJlcG9zaXRvcnkuaCIKQEAg
LTEwMTYsOCArMTAxNyw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmNoZWNrSWZEaXNwbGF5SW5zZWN1
cmUKICAgICBpZiAoIWlzTWl4ZWRDb250ZW50KGNvbnRleHQsIHVybCkpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIFN0cmluZyBtZXNzYWdlID0gU3RyaW5nOjpmb3JtYXQoIlRoZSBwYWdlIGF0ICVz
IGRpc3BsYXllZCBpbnNlY3VyZSBjb250ZW50IGZyb20gJXMuXG4iLAotICAgICAgICBtX1VSTC5z
dHJpbmcoKS51dGY4KCkuZGF0YSgpLCB1cmwuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAg
U3RyaW5nIG1lc3NhZ2UgPSBtYWtlU3RyaW5nKCJUaGUgcGFnZSBhdCAiLCBtX1VSTC5zdHJpbmco
KSwgIiBkaXNwbGF5ZWQgaW5zZWN1cmUgY29udGVudCBmcm9tICIsIHVybC5zdHJpbmcoKSwgIi5c
biIpOwogICAgIG1fZnJhbWUtPmRvbVdpbmRvdygpLT5jb25zb2xlKCktPmFkZE1lc3NhZ2UoSFRN
TE1lc3NhZ2VTb3VyY2UsIExvZ01lc3NhZ2VUeXBlLCBXYXJuaW5nTWVzc2FnZUxldmVsLCBtZXNz
YWdlLCAxLCBTdHJpbmcoKSk7CiAKICAgICBtX2NsaWVudC0+ZGlkRGlzcGxheUluc2VjdXJlQ29u
dGVudCgpOwpAQCAtMTAyOCw4ICsxMDI4LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6Y2hlY2tJZlJ1
bkluc2VjdXJlQ29udAogICAgIGlmICghaXNNaXhlZENvbnRlbnQoY29udGV4dCwgdXJsKSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgU3RyaW5nIG1lc3NhZ2UgPSBTdHJpbmc6OmZvcm1hdCgiVGhl
IHBhZ2UgYXQgJXMgcmFuIGluc2VjdXJlIGNvbnRlbnQgZnJvbSAlcy5cbiIsCi0gICAgICAgIG1f
VVJMLnN0cmluZygpLnV0ZjgoKS5kYXRhKCksIHVybC5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsK
KyAgICBTdHJpbmcgbWVzc2FnZSA9IG1ha2VTdHJpbmcoIlRoZSBwYWdlIGF0ICIsIG1fVVJMLnN0
cmluZygpLCAiIHJhbiBpbnNlY3VyZSBjb250ZW50IGZyb20gIiwgdXJsLnN0cmluZygpLCAiLlxu
Iik7CiAgICAgbV9mcmFtZS0+ZG9tV2luZG93KCktPmNvbnNvbGUoKS0+YWRkTWVzc2FnZShIVE1M
TWVzc2FnZVNvdXJjZSwgTG9nTWVzc2FnZVR5cGUsIFdhcm5pbmdNZXNzYWdlTGV2ZWwsIG1lc3Nh
Z2UsIDEsIFN0cmluZygpKTsKIAogICAgIG1fY2xpZW50LT5kaWRSdW5JbnNlY3VyZUNvbnRlbnQo
Y29udGV4dCk7CkBAIC0xNjY2LDggKzE2NjUsOCBAQCBib29sIEZyYW1lTG9hZGVyOjpzaG91bGRB
bGxvd05hdmlnYXRpb24oCiAgICAgaWYgKHNldHRpbmdzICYmICFzZXR0aW5ncy0+cHJpdmF0ZUJy
b3dzaW5nRW5hYmxlZCgpKSB7CiAgICAgICAgIERvY3VtZW50KiB0YXJnZXREb2N1bWVudCA9IHRh
cmdldEZyYW1lLT5kb2N1bWVudCgpOwogICAgICAgICAvLyBGSVhNRTogdGhpcyBlcnJvciBtZXNz
YWdlIHNob3VsZCBjb250YWluIG1vcmUgc3BlY2lmaWNzIG9mIHdoeSB0aGUgbmF2aWdhdGlvbiBj
aGFuZ2UgaXMgbm90IGFsbG93ZWQuCi0gICAgICAgIFN0cmluZyBtZXNzYWdlID0gU3RyaW5nOjpm
b3JtYXQoIlVuc2FmZSBKYXZhU2NyaXB0IGF0dGVtcHQgdG8gaW5pdGlhdGUgYSBuYXZpZ2F0aW9u
IGNoYW5nZSBmb3IgZnJhbWUgd2l0aCBVUkwgJXMgZnJvbSBmcmFtZSB3aXRoIFVSTCAlcy5cbiIs
Ci0gICAgICAgICAgICB0YXJnZXREb2N1bWVudC0+dXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEo
KSwgYWN0aXZlRG9jdW1lbnQtPnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAgICAg
ICBTdHJpbmcgbWVzc2FnZSA9IG1ha2VTdHJpbmcoIlVuc2FmZSBKYXZhU2NyaXB0IGF0dGVtcHQg
dG8gaW5pdGlhdGUgYSBuYXZpZ2F0aW9uIGNoYW5nZSBmb3IgZnJhbWUgd2l0aCBVUkwgIiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldERvY3VtZW50LT51cmwoKS5z
dHJpbmcoKSwgIiBmcm9tIGZyYW1lIHdpdGggVVJMICIsIGFjdGl2ZURvY3VtZW50LT51cmwoKS5z
dHJpbmcoKSwgIi5cbiIpOwogCiAgICAgICAgIC8vIEZJWE1FOiBzaG91bGQgd2UgcHJpbnQgdG8g
dGhlIGNvbnNvbGUgb2YgdGhlIGFjdGl2ZUZyYW1lIGFzIHdlbGw/CiAgICAgICAgIHRhcmdldEZy
YW1lLT5kb21XaW5kb3coKS0+Y29uc29sZSgpLT5hZGRNZXNzYWdlKEpTTWVzc2FnZVNvdXJjZSwg
TG9nTWVzc2FnZVR5cGUsIEVycm9yTWVzc2FnZUxldmVsLCBtZXNzYWdlLCAxLCBTdHJpbmcoKSk7
CkluZGV4OiBXZWJDb3JlL2xvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5j
cHAJKHJldmlzaW9uIDY5NzY0KQorKysgV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lX
ZWJBcmNoaXZlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDcsNiArNDcsNyBAQAogI2luY2x1ZGUg
IlNlbGVjdGlvbkNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNpbmNs
dWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQ29uY2F0
ZW5hdGUuaD4KICNpbmNsdWRlIDx3dGYvTGlzdEhhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvUmV0
YWluUHRyLmg+CiAKQEAgLTU3Myw4ICs1NzQsOCBAQCBQYXNzUmVmUHRyPExlZ2FjeVdlYkFyY2hp
dmU+IExlZ2FjeVdlYkFyCiAgICAgICAgIAogICAgIC8vIFdyYXAgdGhlIGZyYW1lc2V0IGRvY3Vt
ZW50IGluIGFuIGlmcmFtZSBzbyBpdCBjYW4gYmUgcGFzdGVkIGludG8KICAgICAvLyBhbm90aGVy
IGRvY3VtZW50ICh3aGljaCB3aWxsIGhhdmUgYSBib2R5IG9yIGZyYW1lc2V0IG9mIGl0cyBvd24p
LiAKLSAgICBTdHJpbmcgaWZyYW1lTWFya3VwID0gU3RyaW5nOjpmb3JtYXQoIjxpZnJhbWUgZnJh
bWVib3JkZXI9XCJub1wiIG1hcmdpbndpZHRoPVwiMFwiIG1hcmdpbmhlaWdodD1cIjBcIiB3aWR0
aD1cIjk4JSVcIiBoZWlnaHQ9XCI5OCUlXCIgc3JjPVwiJXNcIj48L2lmcmFtZT4iLCAKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJhbWUtPmxvYWRlcigpLT5kb2N1
bWVudExvYWRlcigpLT5yZXNwb25zZSgpLnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwor
ICAgIFN0cmluZyBpZnJhbWVNYXJrdXAgPSBtYWtlU3RyaW5nKCI8aWZyYW1lIGZyYW1lYm9yZGVy
PVwibm9cIiBtYXJnaW53aWR0aD1cIjBcIiBtYXJnaW5oZWlnaHQ9XCIwXCIgd2lkdGg9XCI5OCUl
XCIgaGVpZ2h0PVwiOTglJVwiIHNyYz1cIiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZnJhbWUtPmxvYWRlcigpLT5kb2N1bWVudExvYWRlcigpLT5yZXNwb25zZSgpLnVy
bCgpLnN0cmluZygpLCAiXCI+PC9pZnJhbWU+Iik7CiAgICAgUmVmUHRyPEFyY2hpdmVSZXNvdXJj
ZT4gaWZyYW1lUmVzb3VyY2UgPSBBcmNoaXZlUmVzb3VyY2U6OmNyZWF0ZSh1dGY4QnVmZmVyKGlm
cmFtZU1hcmt1cCksIGJsYW5rVVJMKCksICJ0ZXh0L2h0bWwiLCAiVVRGLTgiLCBTdHJpbmcoKSk7
CiAKICAgICBWZWN0b3I8UGFzc1JlZlB0cjxBcmNoaXZlUmVzb3VyY2U+ID4gc3VicmVzb3VyY2Vz
OwpJbmRleDogV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9wYWdlL0RPTVdpbmRvdy5jcHAJKHJldmlzaW9uIDY5NzY0KQorKysgV2ViQ29yZS9wYWdlL0RP
TVdpbmRvdy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg2LDcgKzg2LDcgQEAKICNpbmNsdWRlIDxh
bGdvcml0aG0+CiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CiAjaW5jbHVkZSA8d3RmL01h
dGhFeHRyYXMuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisjaW5jbHVkZSA8d3Rm
L3RleHQvU3RyaW5nQ29uY2F0ZW5hdGUuaD4KIAogI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKICNp
bmNsdWRlICJBc3luY0ZpbGVTeXN0ZW0uaCIKQEAgLTc5OCw4ICs3OTgsOCBAQCB2b2lkIERPTVdp
bmRvdzo6cG9zdE1lc3NhZ2VUaW1lckZpcmVkKFBvCiAgICAgaWYgKHRpbWVyLT50YXJnZXRPcmln
aW4oKSkgewogICAgICAgICAvLyBDaGVjayB0YXJnZXQgb3JpZ2luIG5vdyBzaW5jZSB0aGUgdGFy
Z2V0IGRvY3VtZW50IG1heSBoYXZlIGNoYW5nZWQgc2luY2UgdGhlIHNpbWVyIHdhcyBzY2hlZHVs
ZWQuCiAgICAgICAgIGlmICghdGltZXItPnRhcmdldE9yaWdpbigpLT5pc1NhbWVTY2hlbWVIb3N0
UG9ydChkb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpKSkgewotICAgICAgICAgICAgU3RyaW5n
IG1lc3NhZ2UgPSBTdHJpbmc6OmZvcm1hdCgiVW5hYmxlIHRvIHBvc3QgbWVzc2FnZSB0byAlcy4g
UmVjaXBpZW50IGhhcyBvcmlnaW4gJXMuXG4iLCAKLSAgICAgICAgICAgICAgICB0aW1lci0+dGFy
Z2V0T3JpZ2luKCktPnRvU3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgZG9jdW1lbnQoKS0+c2VjdXJp
dHlPcmlnaW4oKS0+dG9TdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgICAgIFN0cmlu
ZyBtZXNzYWdlID0gbWFrZVN0cmluZygiVW5hYmxlIHRvIHBvc3QgbWVzc2FnZSB0byAiLCB0aW1l
ci0+dGFyZ2V0T3JpZ2luKCktPnRvU3RyaW5nKCksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIi4gUmVjaXBpZW50IGhhcyBvcmlnaW4gIiwgZG9jdW1lbnQoKS0+c2Vj
dXJpdHlPcmlnaW4oKS0+dG9TdHJpbmcoKSwgIi5cbiIpOwogICAgICAgICAgICAgY29uc29sZSgp
LT5hZGRNZXNzYWdlKEpTTWVzc2FnZVNvdXJjZSwgTG9nTWVzc2FnZVR5cGUsIEVycm9yTWVzc2Fn
ZUxldmVsLCBtZXNzYWdlLCAwLCBTdHJpbmcoKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIH0KSW5kZXg6IFdlYkNvcmUvcGFnZS9QcmludENvbnRleHQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvcGFnZS9QcmludENvbnRleHQuY3BwCShyZXZpc2lvbiA2OTc2NCkKKysrIFdlYkNv
cmUvcGFnZS9QcmludENvbnRleHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBA
CiAjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCiAjaW5jbHVkZSAiUmVuZGVyTGF5ZXIuaCIKICNpbmNs
dWRlICJSZW5kZXJWaWV3LmgiCi0jaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorI2luY2x1
ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOwogCkBAIC0yMTAsMTggKzIxMCwxOCBAQCBTdHJpbmcgUHJpbnRDb250ZXh0OjpwYWdlUHJv
cGVydHkoRnJhbWUqCiAgICAgaWYgKCFzdHJjbXAocHJvcGVydHlOYW1lLCAibWFyZ2luLWxlZnQi
KSkgewogICAgICAgICBpZiAoc3R5bGUtPm1hcmdpbkxlZnQoKS5pc0F1dG8oKSkKICAgICAgICAg
ICAgIHJldHVybiBTdHJpbmcoImF1dG8iKTsKLSAgICAgICAgcmV0dXJuIFN0cmluZzo6Zm9ybWF0
KCIlZCIsIHN0eWxlLT5tYXJnaW5MZWZ0KCkucmF3VmFsdWUoKSk7CisgICAgICAgIHJldHVybiBT
dHJpbmc6Om51bWJlcihzdHlsZS0+bWFyZ2luTGVmdCgpLnJhd1ZhbHVlKCkpOwogICAgIH0KICAg
ICBpZiAoIXN0cmNtcChwcm9wZXJ0eU5hbWUsICJsaW5lLWhlaWdodCIpKQotICAgICAgICByZXR1
cm4gU3RyaW5nOjpmb3JtYXQoIiVkIiwgc3R5bGUtPmxpbmVIZWlnaHQoKS5yYXdWYWx1ZSgpKTsK
KyAgICAgICAgcmV0dXJuIFN0cmluZzo6bnVtYmVyKHN0eWxlLT5saW5lSGVpZ2h0KCkucmF3VmFs
dWUoKSk7CiAgICAgaWYgKCFzdHJjbXAocHJvcGVydHlOYW1lLCAiZm9udC1zaXplIikpCi0gICAg
ICAgIHJldHVybiBTdHJpbmc6OmZvcm1hdCgiJWQiLCBzdHlsZS0+Zm9udERlc2NyaXB0aW9uKCku
Y29tcHV0ZWRQaXhlbFNpemUoKSk7CisgICAgICAgIHJldHVybiBTdHJpbmc6Om51bWJlcihzdHls
ZS0+Zm9udERlc2NyaXB0aW9uKCkuY29tcHV0ZWRQaXhlbFNpemUoKSk7CiAgICAgaWYgKCFzdHJj
bXAocHJvcGVydHlOYW1lLCAiZm9udC1mYW1pbHkiKSkKLSAgICAgICAgcmV0dXJuIFN0cmluZzo6
Zm9ybWF0KCIlcyIsIHN0eWxlLT5mb250RGVzY3JpcHRpb24oKS5mYW1pbHkoKS5mYW1pbHkoKS5z
dHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgcmV0dXJuIHN0eWxlLT5mb250RGVzY3Jp
cHRpb24oKS5mYW1pbHkoKS5mYW1pbHkoKS5zdHJpbmcoKTsKICAgICBpZiAoIXN0cmNtcChwcm9w
ZXJ0eU5hbWUsICJzaXplIikpCi0gICAgICAgIHJldHVybiBTdHJpbmc6OmZvcm1hdCgiJWQgJWQi
LCBzdHlsZS0+cGFnZVNpemUoKS53aWR0aCgpLnJhd1ZhbHVlKCksIHN0eWxlLT5wYWdlU2l6ZSgp
LmhlaWdodCgpLnJhd1ZhbHVlKCkpOworICAgICAgICByZXR1cm4gbWFrZVN0cmluZyhTdHJpbmc6
Om51bWJlcihzdHlsZS0+cGFnZVNpemUoKS53aWR0aCgpLnJhd1ZhbHVlKCkpLCAnICcsIFN0cmlu
Zzo6bnVtYmVyKHN0eWxlLT5wYWdlU2l6ZSgpLmhlaWdodCgpLnJhd1ZhbHVlKCkpKTsKIAotICAg
IHJldHVybiBTdHJpbmc6OmZvcm1hdCgicGFnZVByb3BlcnR5KCkgdW5pbXBsZW1lbnRlZCBmb3I6
ICVzIiwgcHJvcGVydHlOYW1lKTsKKyAgICByZXR1cm4gbWFrZVN0cmluZygicGFnZVByb3BlcnR5
KCkgdW5pbXBsZW1lbnRlZCBmb3I6ICIsIHByb3BlcnR5TmFtZSk7CiB9CiAKIGJvb2wgUHJpbnRD
b250ZXh0Ojppc1BhZ2VCb3hWaXNpYmxlKEZyYW1lKiBmcmFtZSwgaW50IHBhZ2VOdW1iZXIpCkBA
IC0yMzMsNyArMjMzLDEwIEBAIFN0cmluZyBQcmludENvbnRleHQ6OnBhZ2VTaXplQW5kTWFyZ2lu
c0kKIHsKICAgICBJbnRTaXplIHBhZ2VTaXplKHdpZHRoLCBoZWlnaHQpOwogICAgIGZyYW1lLT5k
b2N1bWVudCgpLT5wYWdlU2l6ZUFuZE1hcmdpbnNJblBpeGVscyhwYWdlTnVtYmVyLCBwYWdlU2l6
ZSwgbWFyZ2luVG9wLCBtYXJnaW5SaWdodCwgbWFyZ2luQm90dG9tLCBtYXJnaW5MZWZ0KTsKLSAg
ICByZXR1cm4gU3RyaW5nOjpmb3JtYXQoIiglZCwgJWQpICVkICVkICVkICVkIiwgcGFnZVNpemUu
d2lkdGgoKSwgcGFnZVNpemUuaGVpZ2h0KCksIG1hcmdpblRvcCwgbWFyZ2luUmlnaHQsIG1hcmdp
bkJvdHRvbSwgbWFyZ2luTGVmdCk7CisKKyAgICAvLyBXZSBkb24ndCBoYXZlIGEgbWFrZVN0cmlu
ZygpIGZ1bmN0aW9uIHRoYXQgdGFrZXMgdXAgdG8gMTIgYXJndW1lbnRzLCBpZiB0aGlzIGlzIGEg
aG90IGZ1bmN0aW9uLCB3ZSBjYW4gcHJvdmlkZSBvbmUuCisgICAgcmV0dXJuIG1ha2VTdHJpbmco
JygnLCBTdHJpbmc6Om51bWJlcihwYWdlU2l6ZS53aWR0aCgpKSwgIiwgIiwgU3RyaW5nOjpudW1i
ZXIocGFnZVNpemUuaGVpZ2h0KCkpLCAiKSAiKSArCisgICAgICAgICAgIG1ha2VTdHJpbmcoU3Ry
aW5nOjpudW1iZXIobWFyZ2luVG9wKSwgJyAnLCBTdHJpbmc6Om51bWJlcihtYXJnaW5SaWdodCks
ICcgJywgU3RyaW5nOjpudW1iZXIobWFyZ2luQm90dG9tKSwgJyAnLCBTdHJpbmc6Om51bWJlciht
YXJnaW5MZWZ0KSk7CiB9CiAKIGludCBQcmludENvbnRleHQ6Om51bWJlck9mUGFnZXMoRnJhbWUq
IGZyYW1lLCBjb25zdCBGbG9hdFNpemUmIHBhZ2VTaXplSW5QaXhlbHMpCkluZGV4OiBXZWJDb3Jl
L3BhZ2UvWFNTQXVkaXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL1hTU0F1ZGl0
b3IuY3BwCShyZXZpc2lvbiA2OTc2NCkKKysrIFdlYkNvcmUvcGFnZS9YU1NBdWRpdG9yLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNDEsOCArNDEsNyBAQAogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAj
aW5jbHVkZSAiVGV4dFJlc291cmNlRGVjb2Rlci5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJp
bmcuaD4KLQotdXNpbmcgbmFtZXNwYWNlIFdURjsKKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdD
b25jYXRlbmF0ZS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTIwMyw3ICsyMDIsNyBA
QCBib29sIFhTU0F1ZGl0b3I6OmNhbkxvYWRPYmplY3QoY29uc3QgU3RyCiAgICAgdGFzay5hbGxv
d1JlcXVlc3RJZk5vSWxsZWdhbFVSSUNoYXJhY3RlcnMgPSB0cnVlOwogCiAgICAgaWYgKGZpbmRJ
blJlcXVlc3QodGFzaykpIHsKLSAgICAgICAgU3RyaW5nIGNvbnNvbGVNZXNzYWdlID0gU3RyaW5n
Ojpmb3JtYXQoIlJlZnVzZWQgdG8gbG9hZCBhbiBvYmplY3QuIFVSTCBmb3VuZCB3aXRoaW4gcmVx
dWVzdDogXCIlc1wiLlxuIiwgdXJsLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICBTdHJpbmcgY29u
c29sZU1lc3NhZ2UgPSBtYWtlU3RyaW5nKCJSZWZ1c2VkIHRvIGxvYWQgYW4gb2JqZWN0LiBVUkwg
Zm91bmQgd2l0aGluIHJlcXVlc3Q6IFwiIiwgdXJsLCAiXCIuXG4iKTsKICAgICAgICAgbV9mcmFt
ZS0+ZG9tV2luZG93KCktPmNvbnNvbGUoKS0+YWRkTWVzc2FnZShKU01lc3NhZ2VTb3VyY2UsIExv
Z01lc3NhZ2VUeXBlLCBFcnJvck1lc3NhZ2VMZXZlbCwgY29uc29sZU1lc3NhZ2UsIDEsIFN0cmlu
ZygpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KSW5kZXg6IFdlYkNvcmUvcGxhdGZv
cm0vZWZsL1BsYXRmb3JtS2V5Ym9hcmRFdmVudEVmbC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9wbGF0Zm9ybS9lZmwvUGxhdGZvcm1LZXlib2FyZEV2ZW50RWZsLmNwcAkocmV2aXNpb24gNjk3
NjQpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2VmbC9QbGF0Zm9ybUtleWJvYXJkRXZlbnRFZmwuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zOSw3ICszOSw3IEBACiAjaW5jbHVkZSA8RXZhcy5oPgogI2lu
Y2x1ZGUgPHN0ZGlvLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KLSNpbmNsdWRlIDx3dGYv
dGV4dC9DU3RyaW5nLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGUuaD4K
ICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
QEAgLTUzLDcgKzUzLDcgQEAgc3RhdGljIFdpbmRvd3NLZXlNYXAgZ1dpbmRvd3NLZXlNYXA7CiBz
dGF0aWMgdm9pZCBjcmVhdGVLZXlNYXAoKQogewogICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAx
OyBpIDwgMjU7IGkrKykgewotICAgICAgICBTdHJpbmcga2V5ID0gU3RyaW5nOjpmb3JtYXQoIkYl
ZCIsIGkpOworICAgICAgICBTdHJpbmcga2V5ID0gbWFrZVN0cmluZygnRicsIFN0cmluZzo6bnVt
YmVyKGkpKTsKICAgICAgICAgZ0tleU1hcC5zZXQoa2V5LCBrZXkpOwogICAgIH0KICAgICBnS2V5
TWFwLnNldCgiQWx0X0wiLCAiQWx0Iik7CkBAIC0xMzMsMTMgKzEzMywxMyBAQCBzdGF0aWMgdm9p
ZCBjcmVhdGVXaW5kb3dzS2V5TWFwKCkKICAgICAvLyBBbHBoYWJldAogICAgIFN0cmluZyBhbHBo
YWJldCA9ICJhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eiI7CiAgICAgZm9yICh1bnNpZ25lZCBp
bnQgaSA9IDA7IGkgPCAyNjsgaSsrKSB7Ci0gICAgICAgIFN0cmluZyBrZXkgPSBTdHJpbmc6OmZv
cm1hdCgiJWMiLCBhbHBoYWJldFtpXSk7CisgICAgICAgIFN0cmluZyBrZXkgPSBhbHBoYWJldFtp
XTsKICAgICAgICAgZ1dpbmRvd3NLZXlNYXAuc2V0KGtleSwgVktfQSArIGkpOwogICAgIH0KIAog
ICAgIC8vIERpZ2l0cwogICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgMTA7IGkrKykg
ewotICAgICAgICBTdHJpbmcga2V5ID0gU3RyaW5nOjpmb3JtYXQoIiVkIiwgaSk7CisgICAgICAg
IFN0cmluZyBrZXkgPSBTdHJpbmc6Om51bWJlcihpKTsKICAgICAgICAgZ1dpbmRvd3NLZXlNYXAu
c2V0KGtleSwgVktfMCArIGkpOwogICAgIH0KIApAQCAtMTYxLDcgKzE2MSw3IEBAIHN0YXRpYyB2
b2lkIGNyZWF0ZVdpbmRvd3NLZXlNYXAoKQogCiAgICAgLy8gRl9YWAogICAgIGZvciAodW5zaWdu
ZWQgaW50IGkgPSAxOyBpIDwgMjU7IGkrKykgewotICAgICAgICBTdHJpbmcga2V5ID0gU3RyaW5n
Ojpmb3JtYXQoIkYlZCIsIGkpOworICAgICAgICBTdHJpbmcga2V5ID0gbWFrZVN0cmluZygnRics
IFN0cmluZzo6bnVtYmVyKGkpKTsKICAgICAgICAgZ1dpbmRvd3NLZXlNYXAuc2V0KGtleSwgVktf
RjEgKyBpKTsKICAgICB9CiB9CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBo
aWNzTGF5ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NMYXllci5jcHAJKHJldmlzaW9uIDY5NzY0KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0xheWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMsNyBAQAog
I2luY2x1ZGUgIlJvdGF0ZVRyYW5zZm9ybU9wZXJhdGlvbi5oIgogI2luY2x1ZGUgIlRleHRTdHJl
YW0uaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisjaW5jbHVkZSA8d3RmL3RleHQv
U3RyaW5nQ29uY2F0ZW5hdGUuaD4KIAogI2lmbmRlZiBOREVCVUcKICNpbmNsdWRlIDxzdGRpby5o
PgpAQCAtMjQ5LDcgKzI1MCw3IEBAIHZvaWQgR3JhcGhpY3NMYXllcjo6cGFpbnRHcmFwaGljc0xh
eWVyQ28KIFN0cmluZyBHcmFwaGljc0xheWVyOjphbmltYXRpb25OYW1lRm9yVHJhbnNpdGlvbihB
bmltYXRlZFByb3BlcnR5SUQgcHJvcGVydHkpCiB7CiAgICAgLy8gfCBpcyBub3QgYSB2YWxpZCBp
ZGVudGlmaWVyIGNoYXJhY3RlciBpbiBDU1MsIHNvIHRoaXMgY2FuIG5ldmVyIGNvbmZsaWN0IHdp
dGggYSBrZXlmcmFtZSBpZGVudGlmaWVyLgotICAgIHJldHVybiBTdHJpbmc6OmZvcm1hdCgiLXx0
cmFuc2l0aW9uJWMtIiwgcHJvcGVydHkpOworICAgIHJldHVybiBtYWtlU3RyaW5nKCItfHRyYW5z
aXRpb24iLCBzdGF0aWNfY2FzdDxjaGFyPihwcm9wZXJ0eSksICctJyk7CiB9CiAKIHZvaWQgR3Jh
cGhpY3NMYXllcjo6c3VzcGVuZEFuaW1hdGlvbnMoZG91YmxlKQpJbmRleDogV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9icmV3L0ltYWdlQnJldy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9icmV3L0ltYWdlQnJldy5jcHAJKHJldmlzaW9uIDY5NzY0KQorKysg
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9icmV3L0ltYWdlQnJldy5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTM2LDEzICszNiwxMyBAQAogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogCiAjaW5j
bHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5o
PgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlLmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogUGFzc1JlZlB0cjxJbWFnZT4gSW1hZ2U6OmxvYWRQbGF0Zm9ybVJlc291cmNl
KGNvbnN0IGNoYXIgKm5hbWUpCiB7Ci0gICAgU3RyaW5nIHJlc291cmNlUGF0aCA9IGhvbWVEaXJl
Y3RvcnlQYXRoKCkgKyBTdHJpbmc6OmZvcm1hdCgicmVzLyVzLnBuZyIsIG5hbWUpOworICAgIFN0
cmluZyByZXNvdXJjZVBhdGggPSBtYWtlU3RyaW5nKGhvbWVEaXJlY3RvcnlQYXRoKCksICJyZXMv
IiwgbmFtZSwgIi5wbmciKTsKIAogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHJlc291cmNlUGF0aC51dGY4KCku
ZGF0YSgpKTsKICAgICBpZiAoIWJ1ZmZlcikKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvSW1hZ2VCdWZmZXJDRy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcAkocmV2aXNpb24gNjk3NjQpCisrKyBXZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zMywxMCArMzMsOSBAQAogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgogI2luY2x1ZGUg
IkltYWdlRGF0YS5oIgogI2luY2x1ZGUgIk1JTUVUeXBlUmVnaXN0cnkuaCIKLSNpbmNsdWRlICJQ
bGF0Zm9ybVN0cmluZy5oIgogI2luY2x1ZGUgPEFwcGxpY2F0aW9uU2VydmljZXMvQXBwbGljYXRp
b25TZXJ2aWNlcy5oPgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+Ci0jaW5jbHVkZSA8d3Rm
L3RleHQvQ1N0cmluZy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlLmg+
CiAjaW5jbHVkZSA8d3RmL093bkFycmF5UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5o
PgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KQEAgLTM3MSw3ICszNzAsNyBAQCBTdHJpbmcg
SW1hZ2VCdWZmZXI6OnRvRGF0YVVSTChjb25zdCBTdHJpCiAgICAgYmFzZTY0RW5jb2RlKHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KENGRGF0YUdldEJ5dGVQdHIoZGF0YS5nZXQoKSkpLCBD
RkRhdGFHZXRMZW5ndGgoZGF0YS5nZXQoKSksIG91dCk7CiAgICAgb3V0LmFwcGVuZCgnXDAnKTsK
IAotICAgIHJldHVybiBTdHJpbmc6OmZvcm1hdCgiZGF0YTolcztiYXNlNjQsJXMiLCBtaW1lVHlw
ZS51dGY4KCkuZGF0YSgpLCBvdXQuZGF0YSgpKTsKKyAgICByZXR1cm4gbWFrZVN0cmluZygiZGF0
YToiLCBtaW1lVHlwZSwgIjtiYXNlNjQsIiwgb3V0LmRhdGEoKSk7CiB9CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWZsL0ltYWdlRWZs
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VmbC9JbWFnZUVm
bC5jcHAJKHJldmlzaW9uIDY5NzY0KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZmwv
SW1hZ2VFZmwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAi
Qml0bWFwSW1hZ2UuaCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKIAorI2luY2x1ZGUgPHd0
Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlLmg+CiAjaW5jbHVkZSA8Y2Fpcm8uaD4KIAogbmFtZXNw
YWNlIFdlYkNvcmUgewpAQCAtNTEsNyArNTIsNyBAQCBzdGF0aWMgUGFzc1JlZlB0cjxTaGFyZWRC
dWZmZXI+IGxvYWRSZXNvCiAKIHN0YXRpYyBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbG9hZFJl
c291cmNlU2hhcmVkQnVmZmVyKGNvbnN0IGNoYXIqIG5hbWUpCiB7Ci0gICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUo
U3RyaW5nOjpmb3JtYXQoREFUQV9ESVIgIi93ZWJraXQtMS4wL2ltYWdlcy8lcy5wbmciLCBuYW1l
KSk7CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVh
dGVXaXRoQ29udGVudHNPZkZpbGUobWFrZVN0cmluZyhEQVRBX0RJUiAiL3dlYmtpdC0xLjAvaW1h
Z2VzLyIsIG5hbWUsICIucG5nIikpOyAgICAKICAgICBpZiAoYnVmZmVyKQogICAgICAgICByZXR1
cm4gYnVmZmVyLnJlbGVhc2UoKTsKICAgICByZXR1cm4gbG9hZFJlc291cmNlU2hhcmVkQnVmZmVy
RmFsbGJhY2soKTsKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL0ltYWdlQnVm
ZmVyR3RrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9J
bWFnZUJ1ZmZlckd0ay5jcHAJKHJldmlzaW9uIDY5NzY0KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9ndGsvSW1hZ2VCdWZmZXJHdGsuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsy
OCw3IEBACiAjaW5jbHVkZSA8Y2Fpcm8uaD4KICNpbmNsdWRlIDxndGsvZ3RrLmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVu
YXRlLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNjcsNyArNjgsNyBAQCBTdHJpbmcg
SW1hZ2VCdWZmZXI6OnRvRGF0YVVSTChjb25zdCBTdHJpCiAgICAgYmFzZTY0RW5jb2RlKHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGJ1ZmZlci5nZXQoKSksIGJ1ZmZlclNpemUsIG91dCk7
CiAgICAgb3V0LmFwcGVuZCgnXDAnKTsKIAotICAgIHJldHVybiBTdHJpbmc6OmZvcm1hdCgiZGF0
YTolcztiYXNlNjQsJXMiLCBtaW1lVHlwZS51dGY4KCkuZGF0YSgpLCBvdXQuZGF0YSgpKTsKKyAg
ICByZXR1cm4gbWFrZVN0cmluZygiZGF0YToiLCBtaW1lVHlwZSwgIjtiYXNlNjQsIiwgb3V0LmRh
dGEoKSk7CiB9CiAKIH0KSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaGFpa3UvSW1h
Z2VCdWZmZXJIYWlrdS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9oYWlrdS9JbWFnZUJ1ZmZlckhhaWt1LmNwcAkocmV2aXNpb24gNjk3NjQpCisrKyBXZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2hhaWt1L0ltYWdlQnVmZmVySGFpa3UuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiTUlNRVR5cGVSZWdpc3RyeS5oIgogI2lu
Y2x1ZGUgIlN0aWxsSW1hZ2VIYWlrdS5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4K
KyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZS5oPgogI2luY2x1ZGUgPEJpdG1h
cFN0cmVhbS5oPgogI2luY2x1ZGUgPFN0cmluZy5oPgogI2luY2x1ZGUgPFRyYW5zbGF0b3JSb3N0
ZXIuaD4KQEAgLTM2Nyw4ICszNjgsNyBAQCBTdHJpbmcgSW1hZ2VCdWZmZXI6OnRvRGF0YVVSTChj
b25zdCBTdHJpCiAgICAgYmFzZTY0RW5jb2RlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+
KHRyYW5zbGF0ZWRTdHJlYW0uQnVmZmVyKCkpLAogICAgICAgICAgICAgICAgICB0cmFuc2xhdGVk
U3RyZWFtLkJ1ZmZlckxlbmd0aCgpLCBlbmNvZGVkQnVmZmVyKTsKIAotICAgIHJldHVybiBTdHJp
bmc6OmZvcm1hdCgiZGF0YTolcztiYXNlNjQsJXMiLCBtaW1lVHlwZS51dGY4KCkuZGF0YSgpLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICBlbmNvZGVkQnVmZmVyLmRhdGEoKSk7CisgICAgcmV0
dXJuIG1ha2VTdHJpbmcoImRhdGE6IiwgbWltZVR5cGUsICI7YmFzZTY0LCIsIGVuY29kZWRCdWZm
ZXIuZGF0YSgpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9tYWMvR3JhcGhpY3NMYXllckNBLm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0dyYXBoaWNzTGF5ZXJDQS5tbQkocmV2aXNpb24g
Njk3NjQpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9HcmFwaGljc0xheWVyQ0Eu
bW0JKHdvcmtpbmcgY29weSkKQEAgLTQ3LDYgKzQ3LDcgQEAKICNpbXBvcnQgPHd0Zi9DdXJyZW50
VGltZS5oPgogI2ltcG9ydCA8d3RmL1VudXNlZFBhcmFtLmg+CiAjaW1wb3J0IDx3dGYvUmV0YWlu
UHRyLmg+CisjaW1wb3J0IDx3dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZS5oPgogCiB1c2luZyBu
YW1lc3BhY2Ugc3RkOwogCkBAIC0yNDcsNyArMjQ4LDcgQEAgc3RhdGljIFN0cmluZyBwcm9wZXJ0
eUlkVG9TdHJpbmcoQW5pbWF0ZQogCiBzdGF0aWMgU3RyaW5nIGFuaW1hdGlvbklkZW50aWZpZXIo
Y29uc3QgU3RyaW5nJiBhbmltYXRpb25OYW1lLCBBbmltYXRlZFByb3BlcnR5SUQgcHJvcGVydHks
IGludCBpbmRleCkKIHsKLSAgICByZXR1cm4gYW5pbWF0aW9uTmFtZSArIFN0cmluZzo6Zm9ybWF0
KCJfJWRfJWQiLCBwcm9wZXJ0eSwgaW5kZXgpOworCXJldHVybiBtYWtlU3RyaW5nKGFuaW1hdGlv
bk5hbWUsICdfJywgU3RyaW5nOjpudW1iZXIocHJvcGVydHkpLCAnXycsIFN0cmluZzo6bnVtYmVy
KGluZGV4KSk7CiB9CiAKIHN0YXRpYyBDQU1lZGlhVGltaW5nRnVuY3Rpb24qIGdldENBTWVkaWFU
aW1pbmdGdW5jdGlvbihjb25zdCBUaW1pbmdGdW5jdGlvbiogdGltaW5nRnVuY3Rpb24pCkluZGV4
OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0ltYWdlQnVmZmVyUXQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvSW1hZ2VCdWZmZXJRdC5jcHAJKHJl
dmlzaW9uIDY5NzY0KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9JbWFnZUJ1ZmZl
clF0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgIlN0aWxs
SW1hZ2VRdC5oIgogI2luY2x1ZGUgIlRyYW5zcGFyZW5jeUxheWVyLmgiCiAjaW5jbHVkZSA8d3Rm
L3RleHQvQ1N0cmluZy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlLmg+
CiAKICNpbmNsdWRlIDxRQnVmZmVyPgogI2luY2x1ZGUgPFFDb2xvcj4KQEAgLTQwMSw3ICs0MDIs
OCBAQCBTdHJpbmcgSW1hZ2VCdWZmZXI6OnRvRGF0YVVSTChjb25zdCBTdHJpCiAgICAgfQogCiAg
ICAgYnVmZmVyLmNsb3NlKCk7Ci0gICAgcmV0dXJuIFN0cmluZzo6Zm9ybWF0KCJkYXRhOiVzO2Jh
c2U2NCwlcyIsIG1pbWVUeXBlLnV0ZjgoKS5kYXRhKCksIGRhdGEudG9CYXNlNjQoKS5kYXRhKCkp
OworCisgICAgcmV0dXJuIG1ha2VTdHJpbmcoImRhdGE6IiwgbWltZVR5cGUsICI7YmFzZTY0LCIs
IGRhdGEudG9CYXNlNjQoKS5kYXRhKCkpOwogfQogCiB9CkluZGV4OiBXZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3NraWEvSW1hZ2VCdWZmZXJTa2lhLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvSW1hZ2VCdWZmZXJTa2lhLmNwcAkocmV2aXNpb24gNjk3
NjQpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvSW1hZ2VCdWZmZXJTa2lhLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNDUsNiArNDUsOCBAQAogI2luY2x1ZGUgIlNrQ29sb3JQcml2
LmgiCiAjaW5jbHVkZSAiU2tpYVV0aWxzLmgiCiAKKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdD
b25jYXRlbmF0ZS5oPgorCiB1c2luZyBuYW1lc3BhY2Ugc3RkOwogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CkBAIC0zMTIsNyArMzE0LDcgQEAgU3RyaW5nIEltYWdlQnVmZmVyOjp0b0RhdGFVUkwoY29u
c3QgU3RyaQogICAgIGJhc2U2NEVuY29kZWREYXRhLmFwcGVuZCgnXDAnKTsKIAogICAgIC8vIEFu
ZCB0aGUgcmVzdWx0aW5nIHN0cmluZy4KLSAgICByZXR1cm4gU3RyaW5nOjpmb3JtYXQoImRhdGE6
aW1hZ2UvcG5nO2Jhc2U2NCwlcyIsIGJhc2U2NEVuY29kZWREYXRhLmRhdGEoKSk7CisgICAgcmV0
dXJuIG1ha2VTdHJpbmcoImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCwiLCBiYXNlNjRFbmNvZGVkRGF0
YS5kYXRhKCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3dpbi9XZWJMYXllci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy93aW4vV2ViTGF5ZXIuY3BwCShyZXZpc2lvbiA2OTc2NCkKKysrIFdl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1dlYkxheWVyLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtOTQsNyArOTQsNyBAQCB2b2lkIFdlYkxheWVyOjpkcmF3SW5Db250ZXh0KFBsYXRmb3JtR3Jh
CiAjZW5kaWYKIAogICAgIGlmIChtX293bmVyLT5zaG93UmVwYWludENvdW50ZXIoKSkgewotICAg
ICAgICBTdHJpbmcgdGV4dCA9IFN0cmluZzo6Zm9ybWF0KCIlZCIsIG1fb3duZXItPmluY3JlbWVu
dFJlcGFpbnRDb3VudCgpKTs7CisgICAgICAgIFN0cmluZyB0ZXh0ID0gU3RyaW5nOjpudW1iZXIo
bV9vd25lci0+aW5jcmVtZW50UmVwYWludENvdW50KCkpOwogCiAgICAgICAgIENHQ29udGV4dFNh
dmVHU3RhdGUoY29udGV4dCk7CiAKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9DcmVk
ZW50aWFsU3RvcmFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L0NyZWRlbnRpYWxTdG9yYWdlLmNwcAkocmV2aXNpb24gNjk3NjQpCisrKyBXZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvQ3JlZGVudGlhbFN0b3JhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw3
ICsyOSw3IEBACiAjaW5jbHVkZSAiQ3JlZGVudGlhbC5oIgogI2luY2x1ZGUgIktVUkwuaCIKICNp
bmNsdWRlICJQcm90ZWN0aW9uU3BhY2VIYXNoLmgiCi0jaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmlu
Zy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlLmg+CiAjaW5jbHVkZSA8
d3RmL3RleHQvU3RyaW5nSGFzaC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVk
ZSA8d3RmL0hhc2hTZXQuaD4KQEAgLTYwLDkgKzYwLDkgQEAgc3RhdGljIFBhdGhUb0RlZmF1bHRQ
cm90ZWN0aW9uU3BhY2VNYXAmIAogc3RhdGljIFN0cmluZyBvcmlnaW5TdHJpbmdGcm9tVVJMKGNv
bnN0IEtVUkwmIHVybCkKIHsKICAgICBpZiAodXJsLnBvcnQoKSkKLSAgICAgICAgcmV0dXJuIHVy
bC5wcm90b2NvbCgpICsgIjovLyIgKyB1cmwuaG9zdCgpICsgU3RyaW5nOjpmb3JtYXQoIjolaS8i
LCB1cmwucG9ydCgpKTsKLSAgICAKLSAgICByZXR1cm4gdXJsLnByb3RvY29sKCkgKyAiOi8vIiAr
IHVybC5ob3N0KCkgKyAiLyI7CisgICAgICAgIHJldHVybiBtYWtlU3RyaW5nKHVybC5wcm90b2Nv
bCgpLCAiOi8vIiwgdXJsLmhvc3QoKSwgJzonLCBTdHJpbmc6Om51bWJlcih1cmwucG9ydCgpKSwg
Jy8nKTsKKworICAgIHJldHVybiBtYWtlU3RyaW5nKHVybC5wcm90b2NvbCgpLCAiOi8vIiwgdXJs
Lmhvc3QoKSwgJy8nKTsKIH0KIAogc3RhdGljIFN0cmluZyBwcm90ZWN0aW9uU3BhY2VNYXBLZXlG
cm9tVVJMKGNvbnN0IEtVUkwmIHVybCkKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0
ZURhdGFiYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVE
YXRhYmFzZS5jcHAJKHJldmlzaW9uIDY5NzY0KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FM
aXRlRGF0YWJhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVk
ZSA8c3FsaXRlMy5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KICNpbmNsdWRlIDx3dGYv
dGV4dC9DU3RyaW5nLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGUuaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0yMTcsNyArMjE4LDcgQEAgaW50NjRfdCBTUUxp
dGVEYXRhYmFzZTo6dG90YWxTaXplKCkKIAogdm9pZCBTUUxpdGVEYXRhYmFzZTo6c2V0U3luY2hy
b25vdXMoU3luY2hyb25vdXNQcmFnbWEgc3luYykKIHsKLSAgICBleGVjdXRlQ29tbWFuZChTdHJp
bmc6OmZvcm1hdCgiUFJBR01BIHN5bmNocm9ub3VzID0gJWkiLCBzeW5jKSk7CisgICAgZXhlY3V0
ZUNvbW1hbmQobWFrZVN0cmluZygiUFJBR01BIHN5bmNocm9ub3VzID0gIiwgU3RyaW5nOjpudW1i
ZXIoc3luYykpKTsKIH0KIAogdm9pZCBTUUxpdGVEYXRhYmFzZTo6c2V0QnVzeVRpbWVvdXQoaW50
IG1zKQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L3dpbmNlL1RleHRDb2RlY1dpbkNFLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL3RleHQvd2luY2UvVGV4dENvZGVjV2lu
Q0UuY3BwCShyZXZpc2lvbiA2OTc2NCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vdGV4dC93aW5jZS9U
ZXh0Q29kZWNXaW5DRS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyLDcgKzMyLDcgQEAKICNpbmNs
dWRlIDx3aW5ubHMuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9I
YXNoU2V0Lmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorI2luY2x1ZGUgPHd0Zi90
ZXh0L1N0cmluZ0NvbmNhdGVuYXRlLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5o
PgogI2luY2x1ZGUgPHd0Zi91bmljb2RlL1VURjguaD4KIApAQCAtMTEwLDcgKzExMCw3IEBAIExh
bmd1YWdlTWFuYWdlcjo6TGFuZ3VhZ2VNYW5hZ2VyKCkKICAgICAgICAgICAgICAgICBpbmZvLm1f
YWxpYXNlcy5hcHBlbmQobmFtZSk7CiAgICAgICAgICAgICAgICAgaW5mby5tX2FsaWFzZXMuYXBw
ZW5kKFN0cmluZyhjcEluZm8ud3N6SGVhZGVyQ2hhcnNldCkubGF0aW4xKCkpOwogICAgICAgICAg
ICAgICAgIGluZm8ubV9hbGlhc2VzLmFwcGVuZChTdHJpbmcoY3BJbmZvLndzekJvZHlDaGFyc2V0
KS5sYXRpbjEoKSk7Ci0gICAgICAgICAgICAgICAgU3RyaW5nIGNwTmFtZSA9IFN0cmluZzo6Zm9y
bWF0KCJjcCVkIiwgY3BJbmZvLnVpQ29kZVBhZ2UpOworICAgICAgICAgICAgICAgIFN0cmluZyBj
cE5hbWUgPSBtYWtlU3RyaW5nKCJjcCIsIFN0cmluZzo6bnVtYmVyKGNwSW5mby51aUNvZGVQYWdl
KSk7CiAgICAgICAgICAgICAgICAgaW5mby5tX2FsaWFzZXMuYXBwZW5kKGNwTmFtZS5sYXRpbjEo
KSk7CiAgICAgICAgICAgICAgICAgc3VwcG9ydGVkQ2hhcnNldHMoKS5hZGQoaS0+c2Vjb25kLmRh
dGEoKSk7CiAgICAgICAgICAgICB9CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL3dpbi9DbGlwYm9h
cmRVdGlsaXRpZXNXaW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vd2luL0Ns
aXBib2FyZFV0aWxpdGllc1dpbi5jcHAJKHJldmlzaW9uIDY5NzY0KQorKysgV2ViQ29yZS9wbGF0
Zm9ybS93aW4vQ2xpcGJvYXJkVXRpbGl0aWVzV2luLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQs
NiArMzQsNyBAQAogI2luY2x1ZGUgPHNobHdhcGkuaD4KICNpbmNsdWRlIDx3aW5pbmV0Lmg+IC8v
IGZvciBJTlRFUk5FVF9NQVhfVVJMX0xFTkdUSAogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcu
aD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZS5oPgogCiAjaWYgUExBVEZP
Uk0oQ0YpCiAjaW5jbHVkZSA8Q29yZUZvdW5kYXRpb24vQ29yZUZvdW5kYXRpb24uaD4KQEAgLTIz
OSw3ICsyNDAsNyBAQCB2b2lkIG1hcmt1cFRvQ0ZIVE1MKGNvbnN0IFN0cmluZyYgbWFya3VwCiAg
ICAgdW5zaWduZWQgZW5kRnJhZ21lbnRPZmZzZXQgPSBzdGFydEZyYWdtZW50T2Zmc2V0ICsgbWFy
a3VwVVRGOC5sZW5ndGgoKTsKICAgICB1bnNpZ25lZCBlbmRIVE1MT2Zmc2V0ID0gZW5kRnJhZ21l
bnRPZmZzZXQgKyBzdHJsZW4oZW5kTWFya3VwKTsKIAotICAgIGFwcGVuZChyZXN1bHQsIFN0cmlu
Zzo6Zm9ybWF0KGhlYWRlciwgc3RhcnRIVE1MT2Zmc2V0LCBlbmRIVE1MT2Zmc2V0LCBzdGFydEZy
YWdtZW50T2Zmc2V0LCBlbmRGcmFnbWVudE9mZnNldCkudXRmOCgpKTsKKyAgICBhcHBlbmQocmVz
dWx0LCBtYWtlU3RyaW5nKGhlYWRlciwgc3RhcnRIVE1MT2Zmc2V0LCBlbmRIVE1MT2Zmc2V0LCBz
dGFydEZyYWdtZW50T2Zmc2V0LCBlbmRGcmFnbWVudE9mZnNldCkudXRmOCgpKTsKICAgICBpZiAo
c291cmNlVVJMVVRGOC5sZW5ndGgoKSkgewogICAgICAgICBhcHBlbmQocmVzdWx0LCBzb3VyY2VV
UkxQcmVmaXgpOwogICAgICAgICBhcHBlbmQocmVzdWx0LCBzb3VyY2VVUkxVVEY4KTsKSW5kZXg6
IFdlYkNvcmUvcGxhdGZvcm0vd2luL0xhbmd1YWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L3BsYXRmb3JtL3dpbi9MYW5ndWFnZS5jcHAJKHJldmlzaW9uIDY5NzY0KQorKysgV2ViQ29yZS9w
bGF0Zm9ybS93aW4vTGFuZ3VhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw4ICsyNiw3IEBA
CiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiTGFuZ3VhZ2UuaCIKIAotI2luY2x1ZGUg
IlBsYXRmb3JtU3RyaW5nLmgiCi0jaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorI2luY2x1
ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IApAQCAtNjAsNyArNTksNyBAQCBTdHJpbmcgZGVmYXVsdExhbmd1YWdlKCkKICAgICBpZiAoY291
bnRyeU5hbWUuaXNFbXB0eSgpKQogICAgICAgICBjb21wdXRlZERlZmF1bHRMYW5ndWFnZSA9IGxh
bmd1YWdlTmFtZTsKICAgICBlbHNlCi0gICAgICAgIGNvbXB1dGVkRGVmYXVsdExhbmd1YWdlID0g
U3RyaW5nOjpmb3JtYXQoIiVzLSVzIiwgbGFuZ3VhZ2VOYW1lLmxhdGluMSgpLmRhdGEoKSwgY291
bnRyeU5hbWUubGF0aW4xKCkuZGF0YSgpKTsKKyAgICAgICAgY29tcHV0ZWREZWZhdWx0TGFuZ3Vh
Z2UgPSBtYWtlU3RyaW5nKGxhbmd1YWdlTmFtZSwgJy0nLCBjb3VudHJ5TmFtZSk7CiAKICAgICBy
ZXR1cm4gY29tcHV0ZWREZWZhdWx0TGFuZ3VhZ2U7CiB9CkluZGV4OiBXZWJDb3JlL3BsdWdpbnMv
UGx1Z2luU3RyZWFtLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsdWdpbnMvUGx1Z2luU3Ry
ZWFtLmNwcAkocmV2aXNpb24gNjk3NjQpCisrKyBXZWJDb3JlL3BsdWdpbnMvUGx1Z2luU3RyZWFt
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQ1LDggKzE0NSw3IEBAIHZvaWQgUGx1Z2luU3RyZWFt
OjpzdGFydFN0cmVhbSgpCiAgICAgICAgIFZlY3RvcjxVQ2hhcj4gc3RyaW5nQnVpbGRlcjsKICAg
ICAgICAgU3RyaW5nIHNlcGFyYXRvcigiOiAiKTsKIAotICAgICAgICBTdHJpbmcgc3RhdHVzTGlu
ZSA9IFN0cmluZzo6Zm9ybWF0KCJIVFRQICVkIE9LXG4iLCBtX3Jlc291cmNlUmVzcG9uc2UuaHR0
cFN0YXR1c0NvZGUoKSk7Ci0KKyAgICAgICAgU3RyaW5nIHN0YXR1c0xpbmUgPSBtYWtlU3RyaW5n
KCJIVFRQICIsIFN0cmluZzo6bnVtYmVyKG1fcmVzb3VyY2VSZXNwb25zZS5odHRwU3RhdHVzQ29k
ZSgpKSwgIiBPS1xuIik7CiAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKHN0YXR1c0xpbmUu
Y2hhcmFjdGVycygpLCBzdGF0dXNMaW5lLmxlbmd0aCgpKTsKIAogICAgICAgICBIVFRQSGVhZGVy
TWFwOjpjb25zdF9pdGVyYXRvciBlbmQgPSBtX3Jlc291cmNlUmVzcG9uc2UuaHR0cEhlYWRlckZp
ZWxkcygpLmVuZCgpOwpJbmRleDogV2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVudC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVudC5jcHAJKHJldmlzaW9uIDY5NzY0KQor
KysgV2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDYg
KzQ3LDggQEAKICNpbmNsdWRlICJYTUxEb2N1bWVudFBhcnNlci5oIgogI2luY2x1ZGUgIlhNTFNl
cmlhbGl6ZXIuaCIKIAorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlLmg+CisK
IC8vIER1bXAgU1ZHRWxlbWVudEluc3RhbmNlIG9iamVjdCB0cmVlIC0gdXNlZnVsIHRvIGRlYnVn
IGluc3RhbmNlUm9vdCBwcm9ibGVtcwogLy8gI2RlZmluZSBEVU1QX0lOU1RBTkNFX1RSRUUKIApA
QCAtMzcwLDcgKzM3Miw3IEBAIHZvaWQgZHVtcEluc3RhbmNlVHJlZSh1bnNpZ25lZCBpbnQmIGRl
cHQKICAgICAgICAgdGV4dCArPSAiICAiOwogCiAgICAgY29uc3QgSGFzaFNldDxTVkdFbGVtZW50
SW5zdGFuY2UqPiYgZWxlbWVudEluc3RhbmNlcyA9IGVsZW1lbnQtPmluc3RhbmNlc0ZvckVsZW1l
bnQoKTsKLSAgICB0ZXh0ICs9IFN0cmluZzo6Zm9ybWF0KCJDb3JyZXNwb25kaW5nIGVsZW1lbnQg
aXMgYXNzb2NpYXRlZCB3aXRoICVpIGluc3RhbmNlKHMpOlxuIiwgZWxlbWVudEluc3RhbmNlcy5z
aXplKCkpOworICAgIHRleHQgKz0gbWFrZVN0cmluZygiQ29ycmVzcG9uZGluZyBlbGVtZW50IGlz
IGFzc29jaWF0ZWQgd2l0aCAiLCBTdHJpbmc6Om51bWJlcihlbGVtZW50SW5zdGFuY2VzLnNpemUo
KSksICIgaW5zdGFuY2Uocyk6XG4iKTsKIAogICAgIGNvbnN0IEhhc2hTZXQ8U1ZHRWxlbWVudElu
c3RhbmNlKj46OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IGVsZW1lbnRJbnN0YW5jZXMuZW5kKCk7CiAg
ICAgZm9yIChIYXNoU2V0PFNWR0VsZW1lbnRJbnN0YW5jZSo+Ojpjb25zdF9pdGVyYXRvciBpdCA9
IGVsZW1lbnRJbnN0YW5jZXMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7CkluZGV4OiBXZWJD
b3JlL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3dlYnNv
Y2tldHMvV2ViU29ja2V0LmNwcAkocmV2aXNpb24gNjk3NjQpCisrKyBXZWJDb3JlL3dlYnNvY2tl
dHMvV2ViU29ja2V0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDcsNiArNDcsNyBAQAogI2luY2x1
ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAj
aW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0
cmluZ0NvbmNhdGVuYXRlLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMTQwLDcgKzE0
MSw3IEBAIHZvaWQgV2ViU29ja2V0Ojpjb25uZWN0KGNvbnN0IEtVUkwmIHVybCwKICAgICAgICAg
cmV0dXJuOwogICAgIH0KICAgICBpZiAoIXBvcnRBbGxvd2VkKHVybCkpIHsKLSAgICAgICAgc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpLT5hZGRNZXNzYWdlKEpTTWVzc2FnZVNvdXJjZSwgTG9nTWVz
c2FnZVR5cGUsIEVycm9yTWVzc2FnZUxldmVsLCBTdHJpbmc6OmZvcm1hdCgiV2ViU29ja2V0IHBv
cnQgJWQgYmxvY2tlZCIsIHVybC5wb3J0KCkpLCAwLCBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkt
PnNlY3VyaXR5T3JpZ2luKCktPnRvU3RyaW5nKCkpOworICAgICAgICBzY3JpcHRFeGVjdXRpb25D
b250ZXh0KCktPmFkZE1lc3NhZ2UoSlNNZXNzYWdlU291cmNlLCBMb2dNZXNzYWdlVHlwZSwgRXJy
b3JNZXNzYWdlTGV2ZWwsIG1ha2VTdHJpbmcoIldlYlNvY2tldCBwb3J0ICIsIFN0cmluZzo6bnVt
YmVyKHVybC5wb3J0KCkpLCAiIGJsb2NrZWQiKSwgMCwgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
LT5zZWN1cml0eU9yaWdpbigpLT50b1N0cmluZygpKTsKICAgICAgICAgbV9zdGF0ZSA9IENMT1NF
RDsKICAgICAgICAgZWMgPSBTRUNVUklUWV9FUlI7CiAgICAgICAgIHJldHVybjsKSW5kZXg6IFdl
YkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHAJKHJldmlzaW9uIDY5NzY0KQorKysg
V2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC00OCw2ICs0OCw3IEBACiAjaW5jbHVkZSAiV2ViU29ja2V0SGFuZHNoYWtlLmgiCiAKICNpbmNs
dWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQ29uY2F0
ZW5hdGUuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAjaW5jbHVkZSA8d3Rm
L0RlcXVlLmg+CiAjaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KQEAgLTI0Niw3ICsyNDcsNyBA
QCBib29sIFdlYlNvY2tldENoYW5uZWw6OmFwcGVuZFRvQnVmZmVyKGNvCiAgICAgICAgIG1fYnVm
ZmVyU2l6ZSA9IG5ld0J1ZmZlclNpemU7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KLSAg
ICBtX2NvbnRleHQtPmFkZE1lc3NhZ2UoSlNNZXNzYWdlU291cmNlLCBMb2dNZXNzYWdlVHlwZSwg
RXJyb3JNZXNzYWdlTGV2ZWwsIFN0cmluZzo6Zm9ybWF0KCJXZWJTb2NrZXQgZnJhbWUgKGF0ICVs
dSBieXRlcykgaXMgdG9vIGxvbmcuIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZz4obmV3QnVm
ZmVyU2l6ZSkpLCAwLCBtX2hhbmRzaGFrZS5jbGllbnRPcmlnaW4oKSk7CisgICAgbV9jb250ZXh0
LT5hZGRNZXNzYWdlKEpTTWVzc2FnZVNvdXJjZSwgTG9nTWVzc2FnZVR5cGUsIEVycm9yTWVzc2Fn
ZUxldmVsLCBtYWtlU3RyaW5nKCJXZWJTb2NrZXQgZnJhbWUgKGF0ICIsIFN0cmluZzo6bnVtYmVy
KHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmc+KG5ld0J1ZmZlclNpemUpKSwgIiBieXRlcykgaXMg
dG9vIGxvbmcuIiksIDAsIG1faGFuZHNoYWtlLmNsaWVudE9yaWdpbigpKTsKICAgICByZXR1cm4g
ZmFsc2U7CiB9CiAKSW5kZXg6IFdlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2Uu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2Uu
Y3BwCShyZXZpc2lvbiA2OTc2NCkKKysrIFdlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5k
c2hha2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Miw2ICs1Miw3IEBACiAjaW5jbHVkZSA8d3Rm
L3RleHQvQXRvbWljU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJp
bmdDb25jYXRlbmF0ZS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTMxOCw3ICszMTks
NyBAQCBpbnQgV2ViU29ja2V0SGFuZHNoYWtlOjpyZWFkU2VydmVySGFuZHNoCiAgICAgbV9yZXNw
b25zZS5zZXRTdGF0dXNUZXh0KHN0YXR1c1RleHQpOwogICAgIGlmIChzdGF0dXNDb2RlICE9IDEw
MSkgewogICAgICAgICBtX21vZGUgPSBGYWlsZWQ7Ci0gICAgICAgIG1fY29udGV4dC0+YWRkTWVz
c2FnZShKU01lc3NhZ2VTb3VyY2UsIExvZ01lc3NhZ2VUeXBlLCBFcnJvck1lc3NhZ2VMZXZlbCwg
U3RyaW5nOjpmb3JtYXQoIlVuZXhwZWN0ZWQgcmVzcG9uc2UgY29kZTogJWQiLCBzdGF0dXNDb2Rl
KSwgMCwgY2xpZW50T3JpZ2luKCkpOworICAgICAgICBtX2NvbnRleHQtPmFkZE1lc3NhZ2UoSlNN
ZXNzYWdlU291cmNlLCBMb2dNZXNzYWdlVHlwZSwgRXJyb3JNZXNzYWdlTGV2ZWwsIG1ha2VTdHJp
bmcoIlVuZXhwZWN0ZWQgcmVzcG9uc2UgY29kZTogIiwgU3RyaW5nOjpudW1iZXIoc3RhdHVzQ29k
ZSkpLCAwLCBjbGllbnRPcmlnaW4oKSk7CiAgICAgICAgIHJldHVybiBsZW47CiAgICAgfQogICAg
IG1fbW9kZSA9IE5vcm1hbDsKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDY5NzY0KQorKysgTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTAtMTAtMTQg
IE5pa29sYXMgWmltbWVybWFubiAgPG56aW1tZXJtYW5uQHJpbS5jb20+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVwbGFjZSBsb3RzIG9mIFN0cmlu
Zzo6Zm9ybWF0KCkgdXNhZ2VzIGJ5IFN0cmluZ0NvbmNhdGVuYXRlCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NzY2NAorCisgICAgICAgIFJlYmFzZWxp
bmUgdHdvIHhzc0F1ZGl0b3IgdGVzdHMsIHRoYXQgaGF2ZSBiZWVuIGNoYW5nZWQsIGFmdGVyIHN3
aXRjaGluZyBmcm9tIFN0cmluZzo6Zm9ybWF0KCkgLT4gbWFrZVN0cmluZygpLgorCisgICAgICAg
ICogaHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL2VtYmVkLXRhZy1udWxsLWNoYXItZXhw
ZWN0ZWQudHh0OgorICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci9vYmpl
Y3QtZW1iZWQtdGFnLW51bGwtY2hhci1leHBlY3RlZC50eHQ6CisKIDIwMTAtMTAtMTQgIFN0ZXZl
IEJsb2NrICA8c3RldmVibG9ja0Bnb29nbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEpl
cmVteSBPcmxvdy4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVk
aXRvci9lbWJlZC10YWctbnVsbC1jaGFyLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3IvZW1iZWQtdGFnLW51bGwtY2hh
ci1leHBlY3RlZC50eHQJKHJldmlzaW9uIDY5NzY0KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9zZWN1cml0eS94c3NBdWRpdG9yL2VtYmVkLXRhZy1udWxsLWNoYXItZXhwZWN0ZWQudHh0CSh3
b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMyBAQAotQ09OU09MRSBNRVNTQUdFOiBsaW5lIDE6IFJl
ZnVzZWQgdG8gbG9hZCBhbiBvYmplY3QuIFVSTCBmb3VuZCB3aXRoaW4gcmVxdWVzdDogImh0dHA6
Ly8xMjcuMC4wLjE6ODAwMC9zZWPDr8K/wr11cml0eS94c3NBdWRpdG9yL3Jlc291cmNlcy9kdW1t
eS5zd2YiLgorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDE6IFJlZnVzZWQgdG8gbG9hZCBhbiBvYmpl
Y3QuIFVSTCBmb3VuZCB3aXRoaW4gcmVxdWVzdDogImh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9zZWPv
v711cml0eS94c3NBdWRpdG9yL3Jlc291cmNlcy9kdW1teS5zd2YiLgogCiAKSW5kZXg6IExheW91
dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci9vYmplY3QtZW1iZWQtdGFnLW51
bGwtY2hhci1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9zZWN1cml0eS94c3NBdWRpdG9yL29iamVjdC1lbWJlZC10YWctbnVsbC1jaGFyLWV4cGVjdGVk
LnR4dAkocmV2aXNpb24gNjk3NjQpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5
L3hzc0F1ZGl0b3Ivb2JqZWN0LWVtYmVkLXRhZy1udWxsLWNoYXItZXhwZWN0ZWQudHh0CSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAotQ09OU09MRSBNRVNTQUdFOiBsaW5lIDE6IFJlZnVz
ZWQgdG8gbG9hZCBhbiBvYmplY3QuIFVSTCBmb3VuZCB3aXRoaW4gcmVxdWVzdDogImh0dHA6Ly8x
MjcuMC4wLjE6ODAwMC9zZWPDr8K/wr11cml0eS94c3NBdWRpdG9yL3Jlc291cmNlcy9kdW1teS5z
d2YiLgorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDE6IFJlZnVzZWQgdG8gbG9hZCBhbiBvYmplY3Qu
IFVSTCBmb3VuZCB3aXRoaW4gcmVxdWVzdDogImh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9zZWPvv711
cml0eS94c3NBdWRpdG9yL3Jlc291cmNlcy9kdW1teS5zd2YiLgogCi1DT05TT0xFIE1FU1NBR0U6
IGxpbmUgMTogUmVmdXNlZCB0byBsb2FkIGFuIG9iamVjdC4gVVJMIGZvdW5kIHdpdGhpbiByZXF1
ZXN0OiAiaHR0cDovLzEyNy4wLjAuMTo4MDAwL3NlY8Ovwr/CvXVyaXR5L3hzc0F1ZGl0b3IvcmVz
b3VyY2VzL2R1bW15LnN3ZiIuCitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMTogUmVmdXNlZCB0byBs
b2FkIGFuIG9iamVjdC4gVVJMIGZvdW5kIHdpdGhpbiByZXF1ZXN0OiAiaHR0cDovLzEyNy4wLjAu
MTo4MDAwL3NlY++/vXVyaXR5L3hzc0F1ZGl0b3IvcmVzb3VyY2VzL2R1bW15LnN3ZiIuCiAKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>70744</attachid>
            <date>2010-10-14 09:23:00 -0700</date>
            <delta_ts>2010-10-14 11:41:21 -0700</delta_ts>
            <desc>Patch v2</desc>
            <filename>KillStringFormatPart1.diff</filename>
            <type>text/plain</type>
            <size>56645</size>
            <attacher name="Nikolas Zimmermann">zimmermann</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDY5NzY0KQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTAtMTAtMTQgIE5pa29sYXMg
WmltbWVybWFubiAgPG56aW1tZXJtYW5uQHJpbS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVwbGFjZSBsb3RzIG9mIFN0cmluZzo6Zm9ybWF0
KCkgdXNhZ2VzIGJ5IFN0cmluZ0NvbmNhdGVuYXRlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NzY2NAorCisgICAgICAgIEFkZCBTdHJpbmdUeXBlQWRh
cHRlcjxjaGFyPiB0byBhY2NlcHQgc2luZ2xlIGNoYXJhY3RlcnMgZm9yIG1ha2VTdHJpbmcoKS4K
KworICAgICAgICAqIHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlLmg6CisgICAgICAgIChXVEY6
Om1ha2VTdHJpbmcpOgorCiAyMDEwLTEwLTE0ICBBbnRvbiBGYWVybiAgPGFudG9uQGJsYWRlaGF3
a2UuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IENzYWJhIE9zenRyb2dvbsOhYy4KSW5kZXg6
IEphdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGUuaAkocmV2aXNpb24g
Njk3NjQpCisrKyBKYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0zNSw2ICszNSwyMSBAQCBjbGFzcyBTdHJpbmdUeXBlQWRhcHRlciB7
CiB9OwogCiB0ZW1wbGF0ZTw+CitjbGFzcyBTdHJpbmdUeXBlQWRhcHRlcjxjaGFyPiB7CitwdWJs
aWM6CisgICAgU3RyaW5nVHlwZUFkYXB0ZXI8Y2hhcj4oY2hhciBidWZmZXIpCisgICAgICAgIDog
bV9idWZmZXIoYnVmZmVyKQorICAgIHsKKyAgICB9CisKKyAgICB1bnNpZ25lZCBsZW5ndGgoKSB7
IHJldHVybiAxOyB9CisgICAgdm9pZCB3cml0ZVRvKFVDaGFyKiBkZXN0aW5hdGlvbikgeyAqZGVz
dGluYXRpb24gPSBtX2J1ZmZlcjsgfQorCitwcml2YXRlOgorICAgIGNoYXIgbV9idWZmZXI7Cit9
OworCit0ZW1wbGF0ZTw+CiBjbGFzcyBTdHJpbmdUeXBlQWRhcHRlcjxjaGFyKj4gewogcHVibGlj
OgogICAgIFN0cmluZ1R5cGVBZGFwdGVyPGNoYXIqPihjaGFyKiBidWZmZXIpCkBAIC0zNjAsNiAr
Mzc1LDEzIEBAIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gdHJ5TWFrZVN0cmluZyhTdHIKICAgICBy
ZXR1cm4gcmVzdWx0SW1wbDsKIH0KIAorLy8gQ29udmVuaWVuY2Ugb25seS4KK3RlbXBsYXRlPHR5
cGVuYW1lIFN0cmluZ1R5cGUxPgorU3RyaW5nIG1ha2VTdHJpbmcoU3RyaW5nVHlwZTEgc3RyaW5n
MSkKK3sKKyAgICByZXR1cm4gU3RyaW5nKHN0cmluZzEpOworfQorCiB0ZW1wbGF0ZTx0eXBlbmFt
ZSBTdHJpbmdUeXBlMSwgdHlwZW5hbWUgU3RyaW5nVHlwZTI+CiBTdHJpbmcgbWFrZVN0cmluZyhT
dHJpbmdUeXBlMSBzdHJpbmcxLCBTdHJpbmdUeXBlMiBzdHJpbmcyKQogewpAQCAtNDI1LDQgKzQ0
Nyw2IEBAIFN0cmluZyBtYWtlU3RyaW5nKFN0cmluZ1R5cGUxIHN0cmluZzEsIFMKIAogfSAvLyBu
YW1lc3BhY2UgV1RGCiAKK3VzaW5nIFdURjo6bWFrZVN0cmluZzsKKwogI2VuZGlmCkluZGV4OiBX
ZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNp
b24gNjk3NjQpCisrKyBXZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsx
LDk1IEBACisyMDEwLTEwLTE0ICBOaWtvbGFzIFppbW1lcm1hbm4gIDxuemltbWVybWFubkByaW0u
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJl
cGxhY2UgbG90cyBvZiBTdHJpbmc6OmZvcm1hdCgpIHVzYWdlcyBieSBTdHJpbmdDb25jYXRlbmF0
ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDc2NjQK
KworICAgICAgICAqIEZvcndhcmRpbmdIZWFkZXJzL3d0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRl
Lmg6IEFkZGVkLgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvd0Jhc2U6OmNyb3NzRG9tYWluQWNjZXNzRXJyb3JN
ZXNzYWdlKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOFByb3h5LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlY4UHJveHk6OnJlcG9ydFVuc2FmZUFjY2Vzc1RvKToKKyAgICAgICAgKiBkb20vRXhj
ZXB0aW9uQmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFeGNlcHRpb25CYXNlOjpFeGNlcHRp
b25CYXNlKToKKyAgICAgICAgKiBkb20vWE1MRG9jdW1lbnRQYXJzZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6WE1MRG9jdW1lbnRQYXJzZXI6OmhhbmRsZUVycm9yKToKKyAgICAgICAgKiBoaXN0
b3J5L1BhZ2VDYWNoZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpsb2dDYW5DYWNoZUZyYW1lRGVj
aXNpb24pOgorICAgICAgICAqIGh0bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6cHJvY2Vzc0ZpbGVEYXRlU3RyaW5nKToKKyAgICAgICAgKiBpbnNwZWN0b3Iv
Q29kZUdlbmVyYXRvckluc3BlY3Rvci5wbToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9y
Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpk
aWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxl
cjo6Y291bnQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6Y3JlYXRlQnJlYWtwb2ludElkKToK
KyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpmb3JtYXRCcmVha3BvaW50SWQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNw
ZWN0b3JQcm9maWxlckFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclByb2Zp
bGVyQWdlbnQ6OmFkZFByb2ZpbGVGaW5pc2hlZE1lc3NhZ2VUb0NvbnNvbGUpOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yUHJvZmlsZXJBZ2VudDo6YWRkU3RhcnRQcm9maWxpbmdNZXNzYWdl
VG9Db25zb2xlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclByb2ZpbGVyQWdlbnQ6Omdl
dEN1cnJlbnRVc2VySW5pdGlhdGVkUHJvZmlsZU5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yUHJvZmlsZXJBZ2VudDo6dGFrZUhlYXBTbmFwc2hvdCk6CisgICAgICAgICogbG9hZGVy
L0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291
cmNlTG9hZGVyOjpwcmludEFjY2Vzc0RlbmllZE1lc3NhZ2UpOgorICAgICAgICAqIGxvYWRlci9G
cmFtZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6Y2hlY2tJZkRp
c3BsYXlJbnNlY3VyZUNvbnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmNo
ZWNrSWZSdW5JbnNlY3VyZUNvbnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6
OnNob3VsZEFsbG93TmF2aWdhdGlvbik6CisgICAgICAgICogbG9hZGVyL2FyY2hpdmUvY2YvTGVn
YWN5V2ViQXJjaGl2ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lXZWJBcmNoaXZlOjpj
cmVhdGVGcm9tU2VsZWN0aW9uKToKKyAgICAgICAgKiBwYWdlL0RPTVdpbmRvdy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpET01XaW5kb3c6OnBvc3RNZXNzYWdlVGltZXJGaXJlZCk6CisgICAgICAg
ICogcGFnZS9QcmludENvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UHJpbnRDb250ZXh0
OjpwYWdlUHJvcGVydHkpOgorICAgICAgICAoV2ViQ29yZTo6UHJpbnRDb250ZXh0OjpwYWdlU2l6
ZUFuZE1hcmdpbnNJblBpeGVscyk6CisgICAgICAgICogcGFnZS9YU1NBdWRpdG9yLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlhTU0F1ZGl0b3I6OmNhbkxvYWRPYmplY3QpOgorICAgICAgICAqIHBs
YXRmb3JtL2VmbC9QbGF0Zm9ybUtleWJvYXJkRXZlbnRFZmwuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Y3JlYXRlS2V5TWFwKToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVdpbmRvd3NLZXlNYXAp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6YW5pbWF0aW9uTmFtZUZvclRyYW5zaXRpb24pOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2JyZXcvSW1hZ2VCcmV3LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkltYWdlOjpsb2FkUGxhdGZvcm1SZXNvdXJjZSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFn
ZUJ1ZmZlcjo6dG9EYXRhVVJMKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9lZmwvSW1h
Z2VFZmwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6bG9hZFJlc291cmNlU2hhcmVkQnVmZmVyKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ndGsvSW1hZ2VCdWZmZXJHdGsuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OnRvRGF0YVVSTCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvaGFpa3UvSW1hZ2VCdWZmZXJIYWlrdS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJbWFnZUJ1ZmZlcjo6dG9EYXRhVVJMKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9t
YWMvR3JhcGhpY3NMYXllckNBLm1tOgorICAgICAgICAoV2ViQ29yZTo6YW5pbWF0aW9uSWRlbnRp
Zmllcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvcXQvSW1hZ2VCdWZmZXJRdC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6dG9EYXRhVVJMKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9za2lhL0ltYWdlQnVmZmVyU2tpYS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJbWFnZUJ1ZmZlcjo6dG9EYXRhVVJMKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy93aW4vV2ViTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViTGF5ZXI6OmRyYXdJbkNv
bnRleHQpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvQ3JlZGVudGlhbFN0b3JhZ2UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6b3JpZ2luU3RyaW5nRnJvbVVSTCk6CisgICAgICAgICogcGxh
dGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZURh
dGFiYXNlOjpzZXRTeW5jaHJvbm91cyk6CisgICAgICAgICogcGxhdGZvcm0vdGV4dC93aW5jZS9U
ZXh0Q29kZWNXaW5DRS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYW5ndWFnZU1hbmFnZXI6Okxh
bmd1YWdlTWFuYWdlcik6CisgICAgICAgICogcGxhdGZvcm0vd2luL0NsaXBib2FyZFV0aWxpdGll
c1dpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjptYXJrdXBUb0NGSFRNTCk6CisgICAgICAgICog
cGxhdGZvcm0vd2luL0xhbmd1YWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmRlZmF1bHRMYW5n
dWFnZSk6CisgICAgICAgICogcGx1Z2lucy9QbHVnaW5TdHJlYW0uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UGx1Z2luU3RyZWFtOjpzdGFydFN0cmVhbSk6CisgICAgICAgICogc3ZnL1NWR1VzZUVs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZHVtcEluc3RhbmNlVHJlZSk6CisgICAgICAg
ICogd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0
Ojpjb25uZWN0KToKKyAgICAgICAgKiB3ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0Q2hhbm5lbDo6YXBwZW5kVG9CdWZmZXIpOgorICAg
ICAgICAqIHdlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OldlYlNvY2tldEhhbmRzaGFrZTo6cmVhZFNlcnZlckhhbmRzaGFrZSk6CisKIDIwMTAtMTAt
MTQgIFBhdmVsIEZlbGRtYW4gIDxwZmVsZG1hbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2
aWV3ZWQgYnkgWXVyeSBTZW1pa2hhdHNreS4KSW5kZXg6IFdlYkNvcmUvRm9yd2FyZGluZ0hlYWRl
cnMvd3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL0Zv
cndhcmRpbmdIZWFkZXJzL3d0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlLmgJKHJldmlzaW9uIDAp
CisrKyBXZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL3d0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRl
LmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNCBAQAorI2lmbmRlZiBXZWJDb3JlX0ZXRF9TdHJp
bmdDb25jYXRlbmF0ZV9oCisjZGVmaW5lIFdlYkNvcmVfRldEX1N0cmluZ0NvbmNhdGVuYXRlX2gK
KyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TdHJpbmdDb25jYXRlbmF0ZS5oPgorI2VuZGlmCklu
ZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwCShyZXZpc2lvbiA2OTc2
NCkKKysrIFdlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzcsNyArMzcsNyBAQAogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAi
V2ViQ29yZUpTQ2xpZW50RGF0YS5oIgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KLSNpbmNs
dWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQ29uY2F0
ZW5hdGUuaD4KIAogdXNpbmcgbmFtZXNwYWNlIEpTQzsKIApAQCAtODMsOCArODMsOCBAQCBTdHJp
bmcgSlNET01XaW5kb3dCYXNlOjpjcm9zc0RvbWFpbkFjY2VzCiAgICAgICAgIHJldHVybiBTdHJp
bmcoKTsKIAogICAgIC8vIEZJWE1FOiB0aGlzIGVycm9yIG1lc3NhZ2Ugc2hvdWxkIGNvbnRhaW4g
bW9yZSBzcGVjaWZpY3Mgb2Ygd2h5IHRoZSBzYW1lIG9yaWdpbiBjaGVjayBoYXMgZmFpbGVkLgot
ICAgIHJldHVybiBTdHJpbmc6OmZvcm1hdCgiVW5zYWZlIEphdmFTY3JpcHQgYXR0ZW1wdCB0byBh
Y2Nlc3MgZnJhbWUgd2l0aCBVUkwgJXMgZnJvbSBmcmFtZSB3aXRoIFVSTCAlcy4gRG9tYWlucywg
cHJvdG9jb2xzIGFuZCBwb3J0cyBtdXN0IG1hdGNoLlxuIiwKLSAgICAgICAgdGFyZ2V0VVJMLnN0
cmluZygpLnV0ZjgoKS5kYXRhKCksIG9yaWdpblVSTC5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsK
KyAgICByZXR1cm4gbWFrZVN0cmluZygiVW5zYWZlIEphdmFTY3JpcHQgYXR0ZW1wdCB0byBhY2Nl
c3MgZnJhbWUgd2l0aCBVUkwgIiwgdGFyZ2V0VVJMLnN0cmluZygpLAorICAgICAgICAgICAgICAg
ICAgICAgICIgZnJvbSBmcmFtZSB3aXRoIFVSTCAiLCBvcmlnaW5VUkwuc3RyaW5nKCksICIuIERv
bWFpbnMsIHByb3RvY29scyBhbmQgcG9ydHMgbXVzdCBtYXRjaC5cbiIpOwogfQogCiB2b2lkIEpT
RE9NV2luZG93QmFzZTo6cHJpbnRFcnJvck1lc3NhZ2UoY29uc3QgU3RyaW5nJiBtZXNzYWdlKSBj
b25zdApJbmRleDogV2ViQ29yZS9iaW5kaW5ncy92OC9WOFByb3h5LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UHJveHkuY3BwCShyZXZpc2lvbiA2OTc2NCkKKysrIFdl
YkNvcmUvYmluZGluZ3MvdjgvVjhQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc3LDcgKzc3
LDcgQEAKICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL1N0cmlu
Z0V4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi9VbnVzZWRQYXJhbS5oPgotI2luY2x1ZGUgPHd0Zi90
ZXh0L0NTdHJpbmcuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZS5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTE5MSwxMSArMTkxLDggQEAgdm9pZCBWOFByb3h5
OjpyZXBvcnRVbnNhZmVBY2Nlc3NUbyhGcmFtZQogCiAgICAgLy8gRklYTUU6IFRoaXMgZXJyb3Ig
bWVzc2FnZSBzaG91bGQgY29udGFpbiBtb3JlIHNwZWNpZmljcyBvZiB3aHkgdGhlIHNhbWUKICAg
ICAvLyBvcmlnaW4gY2hlY2sgaGFzIGZhaWxlZC4KLSAgICBTdHJpbmcgc3RyID0gU3RyaW5nOjpm
b3JtYXQoIlVuc2FmZSBKYXZhU2NyaXB0IGF0dGVtcHQgdG8gYWNjZXNzIGZyYW1lICIKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIndpdGggVVJMICVzIGZyb20gZnJhbWUgd2l0aCBV
UkwgJXMuICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkRvbWFpbnMsIHByb3Rv
Y29scyBhbmQgcG9ydHMgbXVzdCBtYXRjaC5cbiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHRhcmdldERvY3VtZW50LT51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2VEb2N1bWVudC0+dXJsKCkuc3RyaW5n
KCkudXRmOCgpLmRhdGEoKSk7CisgICAgU3RyaW5nIHN0ciA9IG1ha2VTdHJpbmcoIlVuc2FmZSBK
YXZhU2NyaXB0IGF0dGVtcHQgdG8gYWNjZXNzIGZyYW1lIHdpdGggVVJMICIsIHRhcmdldERvY3Vt
ZW50LT51cmwoKS5zdHJpbmcoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIGZyb20g
ZnJhbWUgd2l0aCBVUkwgIiwgc291cmNlRG9jdW1lbnQtPnVybCgpLnN0cmluZygpLCAiLiBEb21h
aW5zLCBwcm90b2NvbHMgYW5kIHBvcnRzIG11c3QgbWF0Y2guXG4iKTsKIAogICAgIC8vIEJ1aWxk
IGEgY29uc29sZSBtZXNzYWdlIHdpdGggZmFrZSBzb3VyY2UgSUQgYW5kIGxpbmUgbnVtYmVyLgog
ICAgIGNvbnN0IFN0cmluZyBrU291cmNlSUQgPSAiIjsKSW5kZXg6IFdlYkNvcmUvZG9tL0V4Y2Vw
dGlvbkJhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL0V4Y2VwdGlvbkJhc2UuY3Bw
CShyZXZpc2lvbiA2OTc2NCkKKysrIFdlYkNvcmUvZG9tL0V4Y2VwdGlvbkJhc2UuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw4IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVk
ZSAiRXhjZXB0aW9uQmFzZS5oIgogCisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5h
dGUuaD4KKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBFeGNlcHRpb25CYXNlOjpFeGNlcHRpb25C
YXNlKGNvbnN0IEV4Y2VwdGlvbkNvZGVEZXNjcmlwdGlvbiYgZGVzY3JpcHRpb24pCkBAIC0zNyw5
ICszOSw5IEBAIEV4Y2VwdGlvbkJhc2U6OkV4Y2VwdGlvbkJhc2UoY29uc3QgRXhjZXAKICAgICAs
IG1fZGVzY3JpcHRpb24oZGVzY3JpcHRpb24uZGVzY3JpcHRpb24pCiB7CiAgICAgaWYgKGRlc2Ny
aXB0aW9uLm5hbWUpCi0gICAgICAgIG1fbWVzc2FnZSA9IFN0cmluZzo6Zm9ybWF0KCIlczogJXMg
RXhjZXB0aW9uICVkIiwgZGVzY3JpcHRpb24ubmFtZSwgZGVzY3JpcHRpb24udHlwZU5hbWUsIGRl
c2NyaXB0aW9uLmNvZGUpOworICAgICAgICBtX21lc3NhZ2UgPSBtYWtlU3RyaW5nKGRlc2NyaXB0
aW9uLm5hbWUsICI6ICIsIGRlc2NyaXB0aW9uLnR5cGVOYW1lLCAiIEV4Y2VwdGlvbiAiLCBTdHJp
bmc6Om51bWJlcihkZXNjcmlwdGlvbi5jb2RlKSk7CiAgICAgZWxzZQotICAgICAgICBtX21lc3Nh
Z2UgPSBTdHJpbmc6OmZvcm1hdCgiJXMgRXhjZXB0aW9uICVkIiwgZGVzY3JpcHRpb24udHlwZU5h
bWUsIGRlc2NyaXB0aW9uLmNvZGUpOworICAgICAgICBtX21lc3NhZ2UgPSBtYWtlU3RyaW5nKGRl
c2NyaXB0aW9uLnR5cGVOYW1lLCAiIEV4Y2VwdGlvbiAiLCBTdHJpbmc6Om51bWJlcihkZXNjcmlw
dGlvbi5jb2RlKSk7CiB9CiAKIFN0cmluZyBFeGNlcHRpb25CYXNlOjp0b1N0cmluZygpIGNvbnN0
CkluZGV4OiBXZWJDb3JlL2RvbS9YTUxEb2N1bWVudFBhcnNlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9kb20vWE1MRG9jdW1lbnRQYXJzZXIuY3BwCShyZXZpc2lvbiA2OTc2NCkKKysrIFdl
YkNvcmUvZG9tL1hNTERvY3VtZW50UGFyc2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTEsNyAr
NTEsNyBAQAogI2luY2x1ZGUgIlNjcmlwdFZhbHVlLmgiCiAjaW5jbHVkZSAiVGV4dFJlc291cmNl
RGVjb2Rlci5oIgogI2luY2x1ZGUgIlRyZWVEZXB0aExpbWl0LmgiCi0jaW5jbHVkZSA8d3RmL3Rl
eHQvQ1N0cmluZy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlLmg+CiAj
aW5jbHVkZSA8d3RmL1N0cmluZ0V4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4K
ICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CkBAIC0xNTEsMTEgKzE1MSwxMSBAQCB2b2lkIFhNTERv
Y3VtZW50UGFyc2VyOjpoYW5kbGVFcnJvcihFcnJvCiAgICAgaWYgKHR5cGUgPT0gZmF0YWwgfHwg
KG1fZXJyb3JDb3VudCA8IG1heEVycm9ycyAmJiBtX2xhc3RFcnJvckxpbmUgIT0gbGluZU51bWJl
ciAmJiBtX2xhc3RFcnJvckNvbHVtbiAhPSBjb2x1bW5OdW1iZXIpKSB7CiAgICAgICAgIHN3aXRj
aCAodHlwZSkgewogICAgICAgICAgICAgY2FzZSB3YXJuaW5nOgotICAgICAgICAgICAgICAgIG1f
ZXJyb3JNZXNzYWdlcyArPSBTdHJpbmc6OmZvcm1hdCgid2FybmluZyBvbiBsaW5lICVkIGF0IGNv
bHVtbiAlZDogJXMiLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIG0pOworICAgICAgICAgICAg
ICAgIG1fZXJyb3JNZXNzYWdlcyArPSBtYWtlU3RyaW5nKCJ3YXJuaW5nIG9uIGxpbmUgIiwgU3Ry
aW5nOjpudW1iZXIobGluZU51bWJlciksICIgYXQgY29sdW1uICIsIFN0cmluZzo6bnVtYmVyKGNv
bHVtbk51bWJlciksICI6ICIsIG0pOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg
ICAgY2FzZSBmYXRhbDoKICAgICAgICAgICAgIGNhc2Ugbm9uRmF0YWw6Ci0gICAgICAgICAgICAg
ICAgbV9lcnJvck1lc3NhZ2VzICs9IFN0cmluZzo6Zm9ybWF0KCJlcnJvciBvbiBsaW5lICVkIGF0
IGNvbHVtbiAlZDogJXMiLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIG0pOworICAgICAgICAg
ICAgICAgIG1fZXJyb3JNZXNzYWdlcyArPSBtYWtlU3RyaW5nKCJlcnJvciBvbiBsaW5lICIsIFN0
cmluZzo6bnVtYmVyKGxpbmVOdW1iZXIpLCAiIGF0IGNvbHVtbiAiLCBTdHJpbmc6Om51bWJlcihj
b2x1bW5OdW1iZXIpLCAiOiAiLCBtKTsKICAgICAgICAgfQogCiAgICAgICAgIG1fbGFzdEVycm9y
TGluZSA9IGxpbmVOdW1iZXI7CkluZGV4OiBXZWJDb3JlL2hpc3RvcnkvUGFnZUNhY2hlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL2hpc3RvcnkvUGFnZUNhY2hlLmNwcAkocmV2aXNpb24gNjk3
NjQpCisrKyBXZWJDb3JlL2hpc3RvcnkvUGFnZUNhY2hlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NDcsNiArNDcsNyBAQAogI2luY2x1ZGUgIlN5c3RlbVRpbWUuaCIKICNpbmNsdWRlIDx3dGYvQ3Vy
cmVudFRpbWUuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisjaW5jbHVkZSA8d3Rm
L3RleHQvU3RyaW5nQ29uY2F0ZW5hdGUuaD4KIAogdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIApAQCAt
NzYsNyArNzcsNyBAQCBzdGF0aWMgdm9pZCBwYWdlQ2FjaGVMb2coY29uc3QgU3RyaW5nJiBwCiAg
ICAgTE9HKFBhZ2VDYWNoZSwgIiVzJXMiLCBwcmVmaXgudXRmOCgpLmRhdGEoKSwgbWVzc2FnZS51
dGY4KCkuZGF0YSgpKTsKIH0KICAgICAKLSNkZWZpbmUgUENMT0coLi4uKSBwYWdlQ2FjaGVMb2co
cGFnZUNhY2hlTG9nUHJlZml4KGluZGVudExldmVsKSwgU3RyaW5nOjpmb3JtYXQoX19WQV9BUkdT
X18pKQorI2RlZmluZSBQQ0xPRyguLi4pIHBhZ2VDYWNoZUxvZyhwYWdlQ2FjaGVMb2dQcmVmaXgo
aW5kZW50TGV2ZWwpLCBtYWtlU3RyaW5nKF9fVkFfQVJHU19fKSkKICAgICAKIHN0YXRpYyBib29s
IGxvZ0NhbkNhY2hlRnJhbWVEZWNpc2lvbihGcmFtZSogZnJhbWUsIGludCBpbmRlbnRMZXZlbCkK
IHsKQEAgLTkwLDkgKzkxLDkgQEAgc3RhdGljIGJvb2wgbG9nQ2FuQ2FjaGVGcmFtZURlY2lzaW9u
KEZyYQogICAgIFBDTE9HKCIrLS0tIik7CiAgICAgS1VSTCBuZXdVUkwgPSBmcmFtZS0+bG9hZGVy
KCktPnByb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXIoKSA/IGZyYW1lLT5sb2FkZXIoKS0+cHJvdmlz
aW9uYWxEb2N1bWVudExvYWRlcigpLT51cmwoKSA6IEtVUkwoKTsKICAgICBpZiAoIW5ld1VSTC5p
c0VtcHR5KCkpCi0gICAgICAgIFBDTE9HKCIgRGV0ZXJtaW5pbmcgaWYgZnJhbWUgY2FuIGJlIGNh
Y2hlZCBuYXZpZ2F0aW5nIGZyb20gKCVzKSB0byAoJXMpOiIsIGN1cnJlbnRVUkwuc3RyaW5nKCku
dXRmOCgpLmRhdGEoKSwgbmV3VVJMLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICBQ
Q0xPRygiIERldGVybWluaW5nIGlmIGZyYW1lIGNhbiBiZSBjYWNoZWQgbmF2aWdhdGluZyBmcm9t
ICgiLCBjdXJyZW50VVJMLnN0cmluZygpLCAiKSB0byAoIiwgbmV3VVJMLnN0cmluZygpLCAiKToi
KTsKICAgICBlbHNlCi0gICAgICAgIFBDTE9HKCIgRGV0ZXJtaW5pbmcgaWYgc3ViZnJhbWUgd2l0
aCBVUkwgKCVzKSBjYW4gYmUgY2FjaGVkOiIsIGN1cnJlbnRVUkwuc3RyaW5nKCkudXRmOCgpLmRh
dGEoKSk7CisgICAgICAgIFBDTE9HKCIgRGV0ZXJtaW5pbmcgaWYgc3ViZnJhbWUgd2l0aCBVUkwg
KCIsIGN1cnJlbnRVUkwuc3RyaW5nKCksICIpIGNhbiBiZSBjYWNoZWQ6Iik7CiAgICAgCiAgICAg
Ym9vbCBjYW5ub3RDYWNoZSA9IGZhbHNlOwogICAgIApJbmRleDogV2ViQ29yZS9odG1sL0ZUUERp
cmVjdG9yeURvY3VtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvRlRQRGlyZWN0
b3J5RG9jdW1lbnQuY3BwCShyZXZpc2lvbiA2OTc2NCkKKysrIFdlYkNvcmUvaHRtbC9GVFBEaXJl
Y3RvcnlEb2N1bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5LDYgKzM5LDcgQEAKICNpbmNs
dWRlICJUZXh0LmgiCiAKICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisjaW5jbHVkZSA8
d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGUuaD4KICNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUu
aD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKQEAgLTI1Myw5ICsyNTQsOSBAQCBz
dGF0aWMgU3RyaW5nIHByb2Nlc3NGaWxlRGF0ZVN0cmluZyhjb25zCiAgICAgU3RyaW5nIGRhdGVT
dHJpbmc7CiAKICAgICBpZiAoZmlsZVRpbWUudG1feWVhciA+IC0xKQotICAgICAgICBkYXRlU3Ry
aW5nID0gU3RyaW5nOjpmb3JtYXQoIiVzICVpLCAlaSIsIG1vbnRoc1ttb250aF0sIGZpbGVUaW1l
LnRtX21kYXksIGZpbGVUaW1lLnRtX3llYXIpOworICAgICAgICBkYXRlU3RyaW5nID0gbWFrZVN0
cmluZyhtb250aHNbbW9udGhdLCAnICcsIFN0cmluZzo6bnVtYmVyKGZpbGVUaW1lLnRtX21kYXkp
LCAiLCAiLCBTdHJpbmc6Om51bWJlcihmaWxlVGltZS50bV95ZWFyKSk7CiAgICAgZWxzZQotICAg
ICAgICBkYXRlU3RyaW5nID0gU3RyaW5nOjpmb3JtYXQoIiVzICVpLCAlaSIsIG1vbnRoc1ttb250
aF0sIGZpbGVUaW1lLnRtX21kYXksIG5vdy50bV95ZWFyKTsKKyAgICAgICAgZGF0ZVN0cmluZyA9
IG1ha2VTdHJpbmcobW9udGhzW21vbnRoXSwgJyAnLCBTdHJpbmc6Om51bWJlcihmaWxlVGltZS50
bV9tZGF5KSwgIiwgIiwgU3RyaW5nOjpudW1iZXIobm93LnRtX3llYXIpKTsKIAogICAgIHJldHVy
biBkYXRlU3RyaW5nICsgdGltZU9mRGF5OwogfQpJbmRleDogV2ViQ29yZS9pbnNwZWN0b3IvQ29k
ZUdlbmVyYXRvckluc3BlY3Rvci5wbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2luc3BlY3Rvci9D
b2RlR2VuZXJhdG9ySW5zcGVjdG9yLnBtCShyZXZpc2lvbiA2OTc2NCkKKysrIFdlYkNvcmUvaW5z
cGVjdG9yL0NvZGVHZW5lcmF0b3JJbnNwZWN0b3IucG0JKHdvcmtpbmcgY29weSkKQEAgLTMxNCw3
ICszMTQsNyBAQCBzdWIgZ2VuZXJhdGVCYWNrZW5kRnVuY3Rpb24KICAgICBteSAkZG9tYWluQWNj
ZXNzb3IgPSAkdHlwZVRyYW5zZm9ybXskZG9tYWlufS0+eyJkb21haW5BY2Nlc3NvciJ9OwogICAg
ICRiYWNrZW5kVHlwZXN7JGRvbWFpbn0gPSAxOwogICAgIHB1c2goQGZ1bmN0aW9uLCAiICAgIGlm
ICghJGRvbWFpbkFjY2Vzc29yKSIpOwotICAgIHB1c2goQGZ1bmN0aW9uLCAiICAgICAgICBwcm90
b2NvbEVycm9ycy0+cHVzaFN0cmluZyhTdHJpbmc6OmZvcm1hdChcIlByb3RvY29sIEVycm9yOiAl
cyBoYW5kbGVyIGlzIG5vdCBhdmFpbGFibGUuXCIsIFwiJGRvbWFpblwiKSk7Iik7CisgICAgcHVz
aChAZnVuY3Rpb24sICIgICAgICAgIHByb3RvY29sRXJyb3JzLT5wdXNoU3RyaW5nKFwiUHJvdG9j
b2wgRXJyb3I6ICRkb21haW4gaGFuZGxlciBpcyBub3QgYXZhaWxhYmxlLlwiKTsiKTsKICAgICBw
dXNoKEBmdW5jdGlvbiwgIiIpOwogCiAgICAgaWYgKHNjYWxhcihAaW5BcmdzKSkgewpAQCAtMzI0
LDcgKzMyNCw3IEBAIHN1YiBnZW5lcmF0ZUJhY2tlbmRGdW5jdGlvbgogICAgICAgICBwdXNoKEBm
dW5jdGlvbiwgIiIpOwogICAgICAgICBwdXNoKEBmdW5jdGlvbiwgIiAgICBSZWZQdHI8SW5zcGVj
dG9yT2JqZWN0PiBhcmd1bWVudHNDb250YWluZXI7Iik7CiAgICAgICAgIHB1c2goQGZ1bmN0aW9u
LCAiICAgIGlmICghKGFyZ3VtZW50c0NvbnRhaW5lciA9IHJlcXVlc3RNZXNzYWdlT2JqZWN0LT5n
ZXRPYmplY3QoXCJhcmd1bWVudHNcIikpKSB7Iik7Ci0gICAgICAgIHB1c2goQGZ1bmN0aW9uLCAi
ICAgICAgICBwcm90b2NvbEVycm9ycy0+cHVzaFN0cmluZyhTdHJpbmc6OmZvcm1hdChcIlByb3Rv
Y29sIEVycm9yOiAnYXJndW1lbnRzJyBwcm9wZXJ0eSB3aXRoIHR5cGUgJ29iamVjdCcgd2FzIG5v
dCBmb3VuZC5cIikpOyIpOworICAgICAgICBwdXNoKEBmdW5jdGlvbiwgIiAgICAgICAgcHJvdG9j
b2xFcnJvcnMtPnB1c2hTdHJpbmcoXCJQcm90b2NvbCBFcnJvcjogJ2FyZ3VtZW50cycgcHJvcGVy
dHkgd2l0aCB0eXBlICdvYmplY3QnIHdhcyBub3QgZm91bmQuXCIpOyIpOwogICAgICAgICBwdXNo
KEBmdW5jdGlvbiwgIiAgICB9IGVsc2UgeyIpOwogICAgICAgICBwdXNoKEBmdW5jdGlvbiwgIiAg
ICAgICAgSW5zcGVjdG9yT2JqZWN0Ojpjb25zdF9pdGVyYXRvciBhcmd1bWVudHNFbmRJdGVyYXRv
ciA9IGFyZ3VtZW50c0NvbnRhaW5lci0+ZW5kKCk7Iik7CiAKQEAgLTMzNywxMCArMzM3LDEwIEBA
IHN1YiBnZW5lcmF0ZUJhY2tlbmRGdW5jdGlvbgogICAgICAgICAgICAgcHVzaChAZnVuY3Rpb24s
ICIiKTsKICAgICAgICAgICAgIHB1c2goQGZ1bmN0aW9uLCAiICAgICAgICBJbnNwZWN0b3JPYmpl
Y3Q6OmNvbnN0X2l0ZXJhdG9yICR7bmFtZX1WYWx1ZUl0ZXJhdG9yID0gYXJndW1lbnRzQ29udGFp
bmVyLT5maW5kKFwiJG5hbWVcIik7Iik7CiAgICAgICAgICAgICBwdXNoKEBmdW5jdGlvbiwgIiAg
ICAgICAgaWYgKCR7bmFtZX1WYWx1ZUl0ZXJhdG9yID09IGFyZ3VtZW50c0VuZEl0ZXJhdG9yKSB7
Iik7Ci0gICAgICAgICAgICBwdXNoKEBmdW5jdGlvbiwgIiAgICAgICAgICAgIHByb3RvY29sRXJy
b3JzLT5wdXNoU3RyaW5nKFN0cmluZzo6Zm9ybWF0KFwiUHJvdG9jb2wgRXJyb3I6IEFyZ3VtZW50
ICclcycgd2l0aCB0eXBlICclcycgd2FzIG5vdCBmb3VuZC5cIiwgXCIkbmFtZVwiLCBcIiRKU09O
VHlwZVwiKSk7Iik7CisgICAgICAgICAgICBwdXNoKEBmdW5jdGlvbiwgIiAgICAgICAgICAgIHBy
b3RvY29sRXJyb3JzLT5wdXNoU3RyaW5nKFwiUHJvdG9jb2wgRXJyb3I6IEFyZ3VtZW50ICckbmFt
ZScgd2l0aCB0eXBlICckSlNPTlR5cGUnIHdhcyBub3QgZm91bmQuXCIpOyIpOwogICAgICAgICAg
ICAgcHVzaChAZnVuY3Rpb24sICIgICAgICAgIH0gZWxzZSB7Iik7CiAgICAgICAgICAgICBwdXNo
KEBmdW5jdGlvbiwgIiAgICAgICAgICAgIGlmICghJHtuYW1lfVZhbHVlSXRlcmF0b3ItPnNlY29u
ZC0+YXMkSlNPTlR5cGUoJiRuYW1lKSkgeyIpOwotICAgICAgICAgICAgcHVzaChAZnVuY3Rpb24s
ICIgICAgICAgICAgICAgICAgcHJvdG9jb2xFcnJvcnMtPnB1c2hTdHJpbmcoU3RyaW5nOjpmb3Jt
YXQoXCJQcm90b2NvbCBFcnJvcjogQXJndW1lbnQgJyVzJyBoYXMgd3JvbmcgdHlwZS4gSXQgc2hv
dWxkIGJlICclcycuXCIsIFwiJG5hbWVcIiwgXCIkSlNPTlR5cGVcIikpOyIpOworICAgICAgICAg
ICAgcHVzaChAZnVuY3Rpb24sICIgICAgICAgICAgICAgICAgcHJvdG9jb2xFcnJvcnMtPnB1c2hT
dHJpbmcoXCJQcm90b2NvbCBFcnJvcjogQXJndW1lbnQgJyRuYW1lJyBoYXMgd3JvbmcgdHlwZS4g
SXQgc2hvdWxkIGJlICckSlNPTlR5cGUnLlwiKTsiKTsKICAgICAgICAgICAgIHB1c2goQGZ1bmN0
aW9uLCAiICAgICAgICAgICAgfSIpOwogICAgICAgICAgICAgcHVzaChAZnVuY3Rpb24sICIgICAg
ICAgIH0iKTsKICAgICAgICAgfQpAQCAtNDU0LDcgKzQ1NCw3IEBAICRtYXBFbnRyaWVzCiAKICAg
ICBIYXNoTWFwPFN0cmluZywgQ2FsbEhhbmRsZXI+OjppdGVyYXRvciBpdCA9IGRpc3BhdGNoTWFw
LmZpbmQoY29tbWFuZCk7CiAgICAgaWYgKGl0ID09IGRpc3BhdGNoTWFwLmVuZCgpKSB7Ci0gICAg
ICAgIHJlcG9ydFByb3RvY29sRXJyb3IoY2FsbElkLCBTdHJpbmc6OmZvcm1hdCgiUHJvdG9jb2wg
RXJyb3I6IEludmFsaWQgY29tbWFuZCB3YXMgcmVjZWl2ZWQuICclcycgd2Fzbid0IGZvdW5kLiIs
IGNvbW1hbmQudXRmOCgpLmRhdGEoKSkpOworICAgICAgICByZXBvcnRQcm90b2NvbEVycm9yKGNh
bGxJZCwgbWFrZVN0cmluZygiUHJvdG9jb2wgRXJyb3I6IEludmFsaWQgY29tbWFuZCB3YXMgcmVj
ZWl2ZWQuICciLCBjb21tYW5kLCAiJyB3YXNuJ3QgZm91bmQuIikpOwogICAgICAgICByZXR1cm47
CiAgICAgfQogCkBAIC02MTQsNyArNjE0LDcgQEAgc3ViIGdlbmVyYXRlU291cmNlCiAgICAgbXkg
QHNvdXJjZUNvbnRlbnQgPSBzcGxpdCgiXHIiLCAkbGljZW5zZVRlbXBsYXRlKTsKICAgICBwdXNo
KEBzb3VyY2VDb250ZW50LCAiXG4jaW5jbHVkZSBcImNvbmZpZy5oXCIiKTsKICAgICBwdXNoKEBz
b3VyY2VDb250ZW50LCAiI2luY2x1ZGUgXCIkY2xhc3NOYW1lLmhcIiIpOwotICAgIHB1c2goQHNv
dXJjZUNvbnRlbnQsICIjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPiIpOworICAgIHB1c2go
QHNvdXJjZUNvbnRlbnQsICIjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGUuaD4i
KTsKICAgICBwdXNoKEBzb3VyY2VDb250ZW50LCAiIik7CiAgICAgcHVzaChAc291cmNlQ29udGVu
dCwgIiNpZiBFTkFCTEUoSU5TUEVDVE9SKSIpOwogICAgIHB1c2goQHNvdXJjZUNvbnRlbnQsICIi
KTsKSW5kZXg6IFdlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCShyZXZp
c2lvbiA2OTc2NCkKKysrIFdlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC05Miw3ICs5Miw3IEBACiAjaW5jbHVkZSAiVGV4dEVuY29kaW5n
LmgiCiAjaW5jbHVkZSAiVGV4dEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiV2luZG93RmVhdHVyZXMu
aCIKLSNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3Ry
aW5nQ29uY2F0ZW5hdGUuaD4KICNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KICNpbmNsdWRl
IDx3dGYvTGlzdEhhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgpAQCAtMTA2
Nyw5ICsxMDY3LDcgQEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpkaWRSZWNlaXZlUmVzcAog
ICAgICAgICAgICAgcmVzb3VyY2UtPnVwZGF0ZVNjcmlwdE9iamVjdChtX2Zyb250ZW5kLmdldCgp
KTsKICAgICB9CiAgICAgaWYgKHJlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCkgPj0gNDAwKSB7Ci0g
ICAgICAgIC8vIFRoZSB1Z2x5IGNvZGUgYmVsb3cgaXMgZHVlIHRvIHRoYXQgU3RyaW5nOjpmb3Jt
YXQoKSBpcyBub3QgdXRmOC1zYWZlIGF0IHRoZSBtb21lbnQuCi0gICAgICAgIFN0cmluZyBtZXNz
YWdlID0gU3RyaW5nOjpmb3JtYXQoIkZhaWxlZCB0byBsb2FkIHJlc291cmNlOiB0aGUgc2VydmVy
IHJlc3BvbmRlZCB3aXRoIGEgc3RhdHVzIG9mICV1ICgiLCByZXNwb25zZS5odHRwU3RhdHVzQ29k
ZSgpKSArIHJlc3BvbnNlLmh0dHBTdGF0dXNUZXh0KCkgKyAiKSI7Ci0KKyAgICAgICAgU3RyaW5n
IG1lc3NhZ2UgPSBtYWtlU3RyaW5nKCJGYWlsZWQgdG8gbG9hZCByZXNvdXJjZTogdGhlIHNlcnZl
ciByZXNwb25kZWQgd2l0aCBhIHN0YXR1cyBvZiAiLCBTdHJpbmc6Om51bWJlcihyZXNwb25zZS5o
dHRwU3RhdHVzQ29kZSgpKSwgIiAoIiwgcmVzcG9uc2UuaHR0cFN0YXR1c1RleHQoKSwgJyknKTsK
ICAgICAgICAgYWRkTWVzc2FnZVRvQ29uc29sZShPdGhlck1lc3NhZ2VTb3VyY2UsIExvZ01lc3Nh
Z2VUeXBlLCBFcnJvck1lc3NhZ2VMZXZlbCwgbWVzc2FnZSwgMCwgcmVzcG9uc2UudXJsKCkuc3Ry
aW5nKCkpOwogICAgIH0KIH0KQEAgLTIwMzIsNyArMjAzMCw3IEBAIHZvaWQgSW5zcGVjdG9yQ29u
dHJvbGxlcjo6b3BlbkluSW5zcGVjdGUKIAogdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpjb3Vu
dChjb25zdCBTdHJpbmcmIHRpdGxlLCB1bnNpZ25lZCBsaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcm
IHNvdXJjZUlEKQogewotICAgIFN0cmluZyBpZGVudGlmaWVyID0gdGl0bGUgKyBTdHJpbmc6OmZv
cm1hdCgiQCVzOiVkIiwgc291cmNlSUQudXRmOCgpLmRhdGEoKSwgbGluZU51bWJlcik7CisgICAg
U3RyaW5nIGlkZW50aWZpZXIgPSBtYWtlU3RyaW5nKHRpdGxlLCAnQCcsIHNvdXJjZUlELCAnOics
IFN0cmluZzo6bnVtYmVyKGxpbmVOdW1iZXIpKTsKICAgICBIYXNoTWFwPFN0cmluZywgdW5zaWdu
ZWQ+OjppdGVyYXRvciBpdCA9IG1fY291bnRzLmZpbmQoaWRlbnRpZmllcik7CiAgICAgaW50IGNv
dW50OwogICAgIGlmIChpdCA9PSBtX2NvdW50cy5lbmQoKSkKQEAgLTIwNDQsNyArMjA0Miw3IEBA
IHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6Y291bnQoY29uc3QgU3QKIAogICAgIG1fY291bnRz
LmFkZChpZGVudGlmaWVyLCBjb3VudCk7CiAKLSAgICBTdHJpbmcgbWVzc2FnZSA9IFN0cmluZzo6
Zm9ybWF0KCIlczogJWQiLCB0aXRsZS51dGY4KCkuZGF0YSgpLCBjb3VudCk7CisgICAgU3RyaW5n
IG1lc3NhZ2UgPSBtYWtlU3RyaW5nKHRpdGxlLCAiOiAiLCBTdHJpbmc6Om51bWJlcihjb3VudCkp
OwogICAgIGFkZE1lc3NhZ2VUb0NvbnNvbGUoSlNNZXNzYWdlU291cmNlLCBMb2dNZXNzYWdlVHlw
ZSwgTG9nTWVzc2FnZUxldmVsLCBtZXNzYWdlLCBsaW5lTnVtYmVyLCBzb3VyY2VJRCk7CiB9CiAK
SW5kZXg6IFdlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAJKHJldmlzaW9uIDY5
NzY0KQorKysgV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC03Nyw2ICs3Nyw3IEBACiAjaW5jbHVkZSAibWFya3VwLmgiCiAKICNpbmNsdWRl
IDx3dGYvdGV4dC9DU3RyaW5nLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5h
dGUuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9MaXN0SGFzaFNl
dC5oPgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KQEAgLTExOTAsNyArMTE5MSw3IEBAIHZvaWQg
SW5zcGVjdG9yRE9NQWdlbnQ6OnJlbW92ZUJyZWFrcG9pbnQKIAogU3RyaW5nIEluc3BlY3RvckRP
TUFnZW50OjpjcmVhdGVCcmVha3BvaW50SWQobG9uZyBub2RlSWQsIGxvbmcgdHlwZSkKIHsKLSAg
ICByZXR1cm4gU3RyaW5nOjpmb3JtYXQoImRvbTolbGQ6JWxkIiwgbm9kZUlkLCB0eXBlKTsKKyAg
ICByZXR1cm4gbWFrZVN0cmluZygiZG9tOiIsIFN0cmluZzo6bnVtYmVyKG5vZGVJZCksICc6Jywg
U3RyaW5nOjpudW1iZXIodHlwZSkpOwogfQogCiB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpnZXRT
dHlsZXMobG9uZyBub2RlSWQsIGJvb2wgYXV0aG9yT25seSwgUmVmUHRyPEluc3BlY3RvclZhbHVl
Piogc3R5bGVzKQpJbmRleDogV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2Vu
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJB
Z2VudC5jcHAJKHJldmlzaW9uIDY5NzY0KQorKysgV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
RGVidWdnZXJBZ2VudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4LDEzICszOCwxMyBAQAogI2lu
Y2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAjaW5jbHVkZSAiU2NyaXB0RGVidWdTZXJ2ZXIuaCIK
ICNpbmNsdWRlIDx3dGYvTUQ1Lmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogc3RhdGljIFN0cmluZyBmb3JtYXRCcmVha3BvaW50SWQoY29uc3QgU3RyaW5nJiBzb3Vy
Y2VJRCwgdW5zaWduZWQgbGluZU51bWJlcikKIHsKLSAgICByZXR1cm4gU3RyaW5nOjpmb3JtYXQo
IiVzOiVkIiwgc291cmNlSUQudXRmOCgpLmRhdGEoKSwgbGluZU51bWJlcik7CisgICAgcmV0dXJu
IG1ha2VTdHJpbmcoc291cmNlSUQsICc6JywgU3RyaW5nOjpudW1iZXIobGluZU51bWJlcikpOwog
fQogCiBQYXNzT3duUHRyPEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ+IEluc3BlY3RvckRlYnVnZ2Vy
QWdlbnQ6OmNyZWF0ZShJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3JDb250cm9sbGVyLCBJ
bnNwZWN0b3JGcm9udGVuZCogZnJvbnRlbmQpCkluZGV4OiBXZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JQcm9maWxlckFnZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JQcm9maWxlckFnZW50LmNwcAkocmV2aXNpb24gNjk3NjQpCisrKyBXZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JQcm9maWxlckFnZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDMs
NyArNDMsNyBAQAogI2luY2x1ZGUgIlNjcmlwdFByb2ZpbGUuaCIKICNpbmNsdWRlICJTY3JpcHRQ
cm9maWxlci5oIgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9D
U3RyaW5nLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGUuaD4KIAogI2lm
IFVTRShKU0MpCiAjaW5jbHVkZSAiSlNET01XaW5kb3cuaCIKQEAgLTg5LDEzICs4OSwxMyBAQCB2
b2lkIEluc3BlY3RvclByb2ZpbGVyQWdlbnQ6OmFkZFByb2ZpbGVGCiB7CiAgICAgUmVmUHRyPFNj
cmlwdFByb2ZpbGU+IHByb2ZpbGUgPSBwcnBQcm9maWxlOwogICAgIFN0cmluZyB0aXRsZSA9IHBy
b2ZpbGUtPnRpdGxlKCk7Ci0gICAgU3RyaW5nIG1lc3NhZ2UgPSBTdHJpbmc6OmZvcm1hdCgiUHJv
ZmlsZSBcIndlYmtpdC1wcm9maWxlOi8vJXMvJXMjJWRcIiBmaW5pc2hlZC4iLCBDUFVQcm9maWxl
VHlwZSwgZW5jb2RlV2l0aFVSTEVzY2FwZVNlcXVlbmNlcyh0aXRsZSkudXRmOCgpLmRhdGEoKSwg
cHJvZmlsZS0+dWlkKCkpOworICAgIFN0cmluZyBtZXNzYWdlID0gbWFrZVN0cmluZygiUHJvZmls
ZSBcIndlYmtpdC1wcm9maWxlOi8vIiwgQ1BVUHJvZmlsZVR5cGUsICcvJywgZW5jb2RlV2l0aFVS
TEVzY2FwZVNlcXVlbmNlcyh0aXRsZSksICcjJywgU3RyaW5nOjpudW1iZXIocHJvZmlsZS0+dWlk
KCkpLCAiXCIgZmluaXNoZWQuIik7CiAgICAgbV9pbnNwZWN0b3JDb250cm9sbGVyLT5hZGRNZXNz
YWdlVG9Db25zb2xlKEpTTWVzc2FnZVNvdXJjZSwgTG9nTWVzc2FnZVR5cGUsIExvZ01lc3NhZ2VM
ZXZlbCwgbWVzc2FnZSwgbGluZU51bWJlciwgc291cmNlVVJMKTsKIH0KIAogdm9pZCBJbnNwZWN0
b3JQcm9maWxlckFnZW50OjphZGRTdGFydFByb2ZpbGluZ01lc3NhZ2VUb0NvbnNvbGUoY29uc3Qg
U3RyaW5nJiB0aXRsZSwgdW5zaWduZWQgbGluZU51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VV
UkwpCiB7Ci0gICAgU3RyaW5nIG1lc3NhZ2UgPSBTdHJpbmc6OmZvcm1hdCgiUHJvZmlsZSBcIndl
YmtpdC1wcm9maWxlOi8vJXMvJXMjMFwiIHN0YXJ0ZWQuIiwgQ1BVUHJvZmlsZVR5cGUsIGVuY29k
ZVdpdGhVUkxFc2NhcGVTZXF1ZW5jZXModGl0bGUpLnV0ZjgoKS5kYXRhKCkpOworICAgIFN0cmlu
ZyBtZXNzYWdlID0gbWFrZVN0cmluZygiUHJvZmlsZSBcIndlYmtpdC1wcm9maWxlOi8vIiwgQ1BV
UHJvZmlsZVR5cGUsICcvJywgZW5jb2RlV2l0aFVSTEVzY2FwZVNlcXVlbmNlcyh0aXRsZSksICIj
MCBcIiBzdGFydGVkLiIpOwogICAgIG1faW5zcGVjdG9yQ29udHJvbGxlci0+YWRkTWVzc2FnZVRv
Q29uc29sZShKU01lc3NhZ2VTb3VyY2UsIExvZ01lc3NhZ2VUeXBlLCBMb2dNZXNzYWdlTGV2ZWws
IG1lc3NhZ2UsIGxpbmVOdW1iZXIsIHNvdXJjZVVSTCk7CiB9CiAKQEAgLTE0Myw3ICsxNDMsNyBA
QCBTdHJpbmcgSW5zcGVjdG9yUHJvZmlsZXJBZ2VudDo6Z2V0Q3VycmVuCiAgICAgaWYgKGluY3Jl
bWVudFByb2ZpbGVOdW1iZXIpCiAgICAgICAgIG1fY3VycmVudFVzZXJJbml0aWF0ZWRQcm9maWxl
TnVtYmVyID0gbV9uZXh0VXNlckluaXRpYXRlZFByb2ZpbGVOdW1iZXIrKzsKIAotICAgIHJldHVy
biBTdHJpbmc6OmZvcm1hdCgiJXMuJWQiLCBVc2VySW5pdGlhdGVkUHJvZmlsZU5hbWUsIG1fY3Vy
cmVudFVzZXJJbml0aWF0ZWRQcm9maWxlTnVtYmVyKTsKKyAgICByZXR1cm4gbWFrZVN0cmluZyhV
c2VySW5pdGlhdGVkUHJvZmlsZU5hbWUsICcuJywgU3RyaW5nOjpudW1iZXIobV9jdXJyZW50VXNl
ckluaXRpYXRlZFByb2ZpbGVOdW1iZXIpKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JQcm9maWxlckFn
ZW50OjpnZXRQcm9maWxlSGVhZGVycyhSZWZQdHI8SW5zcGVjdG9yQXJyYXk+KiBoZWFkZXJzKQpA
QCAtMjMyLDcgKzIzMiw5IEBAIHZvaWQgSW5zcGVjdG9yUHJvZmlsZXJBZ2VudDo6c3RvcFVzZXJJ
bmkKIAogdm9pZCBJbnNwZWN0b3JQcm9maWxlckFnZW50Ojp0YWtlSGVhcFNuYXBzaG90KCkKIHsK
LSAgICBTdHJpbmcgdGl0bGUgPSBTdHJpbmc6OmZvcm1hdCgiJXMuJWQiLCBVc2VySW5pdGlhdGVk
UHJvZmlsZU5hbWUsIG1fbmV4dFVzZXJJbml0aWF0ZWRIZWFwU25hcHNob3ROdW1iZXIrKyk7Cisg
ICAgU3RyaW5nIHRpdGxlID0gbWFrZVN0cmluZyhVc2VySW5pdGlhdGVkUHJvZmlsZU5hbWUsICcu
JywgU3RyaW5nOjpudW1iZXIobV9uZXh0VXNlckluaXRpYXRlZEhlYXBTbmFwc2hvdE51bWJlcikp
OworICAgICsrbV9uZXh0VXNlckluaXRpYXRlZEhlYXBTbmFwc2hvdE51bWJlcjsKKwogICAgIFJl
ZlB0cjxTY3JpcHRIZWFwU25hcHNob3Q+IHNuYXBzaG90ID0gU2NyaXB0UHJvZmlsZXI6OnRha2VI
ZWFwU25hcHNob3QodGl0bGUpOwogICAgIGlmIChzbmFwc2hvdCkgewogICAgICAgICBtX3NuYXBz
aG90cy5hZGQoc25hcHNob3QtPnVpZCgpLCBzbmFwc2hvdCk7CkluZGV4OiBXZWJDb3JlL2xvYWRl
ci9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIv
Q2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwCShyZXZpc2lvbiA2OTc2NCkKKysrIFdlYkNvcmUvbG9h
ZGVyL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDQsNyArNDQs
NyBAQAogI2luY2x1ZGUgIlBpbmdMb2FkZXIuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5o
IgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCi0jaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgor
I2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlLmg+CiAKICNkZWZpbmUgUFJFTE9B
RF9ERUJVRyAwCiAKQEAgLTI4OSwxMiArMjg5LDggQEAgdm9pZCBDYWNoZWRSZXNvdXJjZUxvYWRl
cjo6cHJpbnRBY2Nlc3NEZQogICAgICAgICByZXR1cm47CiAKICAgICBTdHJpbmcgbWVzc2FnZSA9
IG1fZG9jLT51cmwoKS5pc051bGwoKSA/Ci0gICAgICAgIFN0cmluZzo6Zm9ybWF0KCJVbnNhZmUg
YXR0ZW1wdCB0byBsb2FkIFVSTCAlcy4iLAotICAgICAgICAgICAgICAgICAgICAgICB1cmwuc3Ry
aW5nKCkudXRmOCgpLmRhdGEoKSkgOgotICAgICAgICBTdHJpbmc6OmZvcm1hdCgiVW5zYWZlIGF0
dGVtcHQgdG8gbG9hZCBVUkwgJXMgZnJvbSBmcmFtZSB3aXRoIFVSTCAlcy4gIgotICAgICAgICAg
ICAgICAgICAgICAgICAiRG9tYWlucywgcHJvdG9jb2xzIGFuZCBwb3J0cyBtdXN0IG1hdGNoLlxu
IiwKLSAgICAgICAgICAgICAgICAgICAgICAgdXJsLnN0cmluZygpLnV0ZjgoKS5kYXRhKCksCi0g
ICAgICAgICAgICAgICAgICAgICAgIG1fZG9jLT51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgp
KTsKKyAgICAgICAgbWFrZVN0cmluZygiVW5zYWZlIGF0dGVtcHQgdG8gbG9hZCBVUkwgIiwgdXJs
LnN0cmluZygpLCAnLicpIDoKKyAgICAgICAgbWFrZVN0cmluZygiVW5zYWZlIGF0dGVtcHQgdG8g
bG9hZCBVUkwgIiwgdXJsLnN0cmluZygpLCAiIGZyb20gZnJhbWUgd2l0aCBVUkwgIiwgbV9kb2Mt
PnVybCgpLnN0cmluZygpLCAiLiBEb21haW5zLCBwcm90b2NvbHMgYW5kIHBvcnRzIG11c3QgbWF0
Y2guXG4iKTsKIAogICAgIC8vIEZJWE1FOiBwcm92aWRlIGEgcmVhbCBsaW5lIG51bWJlciBhbmQg
c291cmNlIFVSTC4KICAgICBmcmFtZSgpLT5kb21XaW5kb3coKS0+Y29uc29sZSgpLT5hZGRNZXNz
YWdlKE90aGVyTWVzc2FnZVNvdXJjZSwgTG9nTWVzc2FnZVR5cGUsIEVycm9yTWVzc2FnZUxldmVs
LCBtZXNzYWdlLCAxLCBTdHJpbmcoKSk7CkluZGV4OiBXZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRl
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCShyZXZp
c2lvbiA2OTc2NCkKKysrIFdlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTAwLDYgKzEwMCw3IEBACiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CiAj
aW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcu
aD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZS5oPgogCiAjaWYgRU5BQkxF
KFNIQVJFRF9XT1JLRVJTKQogI2luY2x1ZGUgIlNoYXJlZFdvcmtlclJlcG9zaXRvcnkuaCIKQEAg
LTEwMTYsOCArMTAxNyw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmNoZWNrSWZEaXNwbGF5SW5zZWN1
cmUKICAgICBpZiAoIWlzTWl4ZWRDb250ZW50KGNvbnRleHQsIHVybCkpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIFN0cmluZyBtZXNzYWdlID0gU3RyaW5nOjpmb3JtYXQoIlRoZSBwYWdlIGF0ICVz
IGRpc3BsYXllZCBpbnNlY3VyZSBjb250ZW50IGZyb20gJXMuXG4iLAotICAgICAgICBtX1VSTC5z
dHJpbmcoKS51dGY4KCkuZGF0YSgpLCB1cmwuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAg
U3RyaW5nIG1lc3NhZ2UgPSBtYWtlU3RyaW5nKCJUaGUgcGFnZSBhdCAiLCBtX1VSTC5zdHJpbmco
KSwgIiBkaXNwbGF5ZWQgaW5zZWN1cmUgY29udGVudCBmcm9tICIsIHVybC5zdHJpbmcoKSwgIi5c
biIpOwogICAgIG1fZnJhbWUtPmRvbVdpbmRvdygpLT5jb25zb2xlKCktPmFkZE1lc3NhZ2UoSFRN
TE1lc3NhZ2VTb3VyY2UsIExvZ01lc3NhZ2VUeXBlLCBXYXJuaW5nTWVzc2FnZUxldmVsLCBtZXNz
YWdlLCAxLCBTdHJpbmcoKSk7CiAKICAgICBtX2NsaWVudC0+ZGlkRGlzcGxheUluc2VjdXJlQ29u
dGVudCgpOwpAQCAtMTAyOCw4ICsxMDI4LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6Y2hlY2tJZlJ1
bkluc2VjdXJlQ29udAogICAgIGlmICghaXNNaXhlZENvbnRlbnQoY29udGV4dCwgdXJsKSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgU3RyaW5nIG1lc3NhZ2UgPSBTdHJpbmc6OmZvcm1hdCgiVGhl
IHBhZ2UgYXQgJXMgcmFuIGluc2VjdXJlIGNvbnRlbnQgZnJvbSAlcy5cbiIsCi0gICAgICAgIG1f
VVJMLnN0cmluZygpLnV0ZjgoKS5kYXRhKCksIHVybC5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsK
KyAgICBTdHJpbmcgbWVzc2FnZSA9IG1ha2VTdHJpbmcoIlRoZSBwYWdlIGF0ICIsIG1fVVJMLnN0
cmluZygpLCAiIHJhbiBpbnNlY3VyZSBjb250ZW50IGZyb20gIiwgdXJsLnN0cmluZygpLCAiLlxu
Iik7CiAgICAgbV9mcmFtZS0+ZG9tV2luZG93KCktPmNvbnNvbGUoKS0+YWRkTWVzc2FnZShIVE1M
TWVzc2FnZVNvdXJjZSwgTG9nTWVzc2FnZVR5cGUsIFdhcm5pbmdNZXNzYWdlTGV2ZWwsIG1lc3Nh
Z2UsIDEsIFN0cmluZygpKTsKIAogICAgIG1fY2xpZW50LT5kaWRSdW5JbnNlY3VyZUNvbnRlbnQo
Y29udGV4dCk7CkBAIC0xNjY2LDggKzE2NjUsOCBAQCBib29sIEZyYW1lTG9hZGVyOjpzaG91bGRB
bGxvd05hdmlnYXRpb24oCiAgICAgaWYgKHNldHRpbmdzICYmICFzZXR0aW5ncy0+cHJpdmF0ZUJy
b3dzaW5nRW5hYmxlZCgpKSB7CiAgICAgICAgIERvY3VtZW50KiB0YXJnZXREb2N1bWVudCA9IHRh
cmdldEZyYW1lLT5kb2N1bWVudCgpOwogICAgICAgICAvLyBGSVhNRTogdGhpcyBlcnJvciBtZXNz
YWdlIHNob3VsZCBjb250YWluIG1vcmUgc3BlY2lmaWNzIG9mIHdoeSB0aGUgbmF2aWdhdGlvbiBj
aGFuZ2UgaXMgbm90IGFsbG93ZWQuCi0gICAgICAgIFN0cmluZyBtZXNzYWdlID0gU3RyaW5nOjpm
b3JtYXQoIlVuc2FmZSBKYXZhU2NyaXB0IGF0dGVtcHQgdG8gaW5pdGlhdGUgYSBuYXZpZ2F0aW9u
IGNoYW5nZSBmb3IgZnJhbWUgd2l0aCBVUkwgJXMgZnJvbSBmcmFtZSB3aXRoIFVSTCAlcy5cbiIs
Ci0gICAgICAgICAgICB0YXJnZXREb2N1bWVudC0+dXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEo
KSwgYWN0aXZlRG9jdW1lbnQtPnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAgICAg
ICBTdHJpbmcgbWVzc2FnZSA9IG1ha2VTdHJpbmcoIlVuc2FmZSBKYXZhU2NyaXB0IGF0dGVtcHQg
dG8gaW5pdGlhdGUgYSBuYXZpZ2F0aW9uIGNoYW5nZSBmb3IgZnJhbWUgd2l0aCBVUkwgIiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldERvY3VtZW50LT51cmwoKS5z
dHJpbmcoKSwgIiBmcm9tIGZyYW1lIHdpdGggVVJMICIsIGFjdGl2ZURvY3VtZW50LT51cmwoKS5z
dHJpbmcoKSwgIi5cbiIpOwogCiAgICAgICAgIC8vIEZJWE1FOiBzaG91bGQgd2UgcHJpbnQgdG8g
dGhlIGNvbnNvbGUgb2YgdGhlIGFjdGl2ZUZyYW1lIGFzIHdlbGw/CiAgICAgICAgIHRhcmdldEZy
YW1lLT5kb21XaW5kb3coKS0+Y29uc29sZSgpLT5hZGRNZXNzYWdlKEpTTWVzc2FnZVNvdXJjZSwg
TG9nTWVzc2FnZVR5cGUsIEVycm9yTWVzc2FnZUxldmVsLCBtZXNzYWdlLCAxLCBTdHJpbmcoKSk7
CkluZGV4OiBXZWJDb3JlL2xvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5j
cHAJKHJldmlzaW9uIDY5NzY0KQorKysgV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lX
ZWJBcmNoaXZlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDcsNiArNDcsNyBAQAogI2luY2x1ZGUg
IlNlbGVjdGlvbkNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNpbmNs
dWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQ29uY2F0
ZW5hdGUuaD4KICNpbmNsdWRlIDx3dGYvTGlzdEhhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvUmV0
YWluUHRyLmg+CiAKQEAgLTU3Myw4ICs1NzQsOCBAQCBQYXNzUmVmUHRyPExlZ2FjeVdlYkFyY2hp
dmU+IExlZ2FjeVdlYkFyCiAgICAgICAgIAogICAgIC8vIFdyYXAgdGhlIGZyYW1lc2V0IGRvY3Vt
ZW50IGluIGFuIGlmcmFtZSBzbyBpdCBjYW4gYmUgcGFzdGVkIGludG8KICAgICAvLyBhbm90aGVy
IGRvY3VtZW50ICh3aGljaCB3aWxsIGhhdmUgYSBib2R5IG9yIGZyYW1lc2V0IG9mIGl0cyBvd24p
LiAKLSAgICBTdHJpbmcgaWZyYW1lTWFya3VwID0gU3RyaW5nOjpmb3JtYXQoIjxpZnJhbWUgZnJh
bWVib3JkZXI9XCJub1wiIG1hcmdpbndpZHRoPVwiMFwiIG1hcmdpbmhlaWdodD1cIjBcIiB3aWR0
aD1cIjk4JSVcIiBoZWlnaHQ9XCI5OCUlXCIgc3JjPVwiJXNcIj48L2lmcmFtZT4iLCAKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJhbWUtPmxvYWRlcigpLT5kb2N1
bWVudExvYWRlcigpLT5yZXNwb25zZSgpLnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwor
ICAgIFN0cmluZyBpZnJhbWVNYXJrdXAgPSBtYWtlU3RyaW5nKCI8aWZyYW1lIGZyYW1lYm9yZGVy
PVwibm9cIiBtYXJnaW53aWR0aD1cIjBcIiBtYXJnaW5oZWlnaHQ9XCIwXCIgd2lkdGg9XCI5OCUl
XCIgaGVpZ2h0PVwiOTglJVwiIHNyYz1cIiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZnJhbWUtPmxvYWRlcigpLT5kb2N1bWVudExvYWRlcigpLT5yZXNwb25zZSgpLnVy
bCgpLnN0cmluZygpLCAiXCI+PC9pZnJhbWU+Iik7CiAgICAgUmVmUHRyPEFyY2hpdmVSZXNvdXJj
ZT4gaWZyYW1lUmVzb3VyY2UgPSBBcmNoaXZlUmVzb3VyY2U6OmNyZWF0ZSh1dGY4QnVmZmVyKGlm
cmFtZU1hcmt1cCksIGJsYW5rVVJMKCksICJ0ZXh0L2h0bWwiLCAiVVRGLTgiLCBTdHJpbmcoKSk7
CiAKICAgICBWZWN0b3I8UGFzc1JlZlB0cjxBcmNoaXZlUmVzb3VyY2U+ID4gc3VicmVzb3VyY2Vz
OwpJbmRleDogV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9wYWdlL0RPTVdpbmRvdy5jcHAJKHJldmlzaW9uIDY5NzY0KQorKysgV2ViQ29yZS9wYWdlL0RP
TVdpbmRvdy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg2LDcgKzg2LDcgQEAKICNpbmNsdWRlIDxh
bGdvcml0aG0+CiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CiAjaW5jbHVkZSA8d3RmL01h
dGhFeHRyYXMuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisjaW5jbHVkZSA8d3Rm
L3RleHQvU3RyaW5nQ29uY2F0ZW5hdGUuaD4KIAogI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKICNp
bmNsdWRlICJBc3luY0ZpbGVTeXN0ZW0uaCIKQEAgLTc5OCw4ICs3OTgsOCBAQCB2b2lkIERPTVdp
bmRvdzo6cG9zdE1lc3NhZ2VUaW1lckZpcmVkKFBvCiAgICAgaWYgKHRpbWVyLT50YXJnZXRPcmln
aW4oKSkgewogICAgICAgICAvLyBDaGVjayB0YXJnZXQgb3JpZ2luIG5vdyBzaW5jZSB0aGUgdGFy
Z2V0IGRvY3VtZW50IG1heSBoYXZlIGNoYW5nZWQgc2luY2UgdGhlIHNpbWVyIHdhcyBzY2hlZHVs
ZWQuCiAgICAgICAgIGlmICghdGltZXItPnRhcmdldE9yaWdpbigpLT5pc1NhbWVTY2hlbWVIb3N0
UG9ydChkb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpKSkgewotICAgICAgICAgICAgU3RyaW5n
IG1lc3NhZ2UgPSBTdHJpbmc6OmZvcm1hdCgiVW5hYmxlIHRvIHBvc3QgbWVzc2FnZSB0byAlcy4g
UmVjaXBpZW50IGhhcyBvcmlnaW4gJXMuXG4iLCAKLSAgICAgICAgICAgICAgICB0aW1lci0+dGFy
Z2V0T3JpZ2luKCktPnRvU3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgZG9jdW1lbnQoKS0+c2VjdXJp
dHlPcmlnaW4oKS0+dG9TdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgICAgIFN0cmlu
ZyBtZXNzYWdlID0gbWFrZVN0cmluZygiVW5hYmxlIHRvIHBvc3QgbWVzc2FnZSB0byAiLCB0aW1l
ci0+dGFyZ2V0T3JpZ2luKCktPnRvU3RyaW5nKCksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIi4gUmVjaXBpZW50IGhhcyBvcmlnaW4gIiwgZG9jdW1lbnQoKS0+c2Vj
dXJpdHlPcmlnaW4oKS0+dG9TdHJpbmcoKSwgIi5cbiIpOwogICAgICAgICAgICAgY29uc29sZSgp
LT5hZGRNZXNzYWdlKEpTTWVzc2FnZVNvdXJjZSwgTG9nTWVzc2FnZVR5cGUsIEVycm9yTWVzc2Fn
ZUxldmVsLCBtZXNzYWdlLCAwLCBTdHJpbmcoKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIH0KSW5kZXg6IFdlYkNvcmUvcGFnZS9QcmludENvbnRleHQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvcGFnZS9QcmludENvbnRleHQuY3BwCShyZXZpc2lvbiA2OTc2NCkKKysrIFdlYkNv
cmUvcGFnZS9QcmludENvbnRleHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBA
CiAjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCiAjaW5jbHVkZSAiUmVuZGVyTGF5ZXIuaCIKICNpbmNs
dWRlICJSZW5kZXJWaWV3LmgiCi0jaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorI2luY2x1
ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOwogCkBAIC0yMTAsMTggKzIxMCwxOCBAQCBTdHJpbmcgUHJpbnRDb250ZXh0OjpwYWdlUHJv
cGVydHkoRnJhbWUqCiAgICAgaWYgKCFzdHJjbXAocHJvcGVydHlOYW1lLCAibWFyZ2luLWxlZnQi
KSkgewogICAgICAgICBpZiAoc3R5bGUtPm1hcmdpbkxlZnQoKS5pc0F1dG8oKSkKICAgICAgICAg
ICAgIHJldHVybiBTdHJpbmcoImF1dG8iKTsKLSAgICAgICAgcmV0dXJuIFN0cmluZzo6Zm9ybWF0
KCIlZCIsIHN0eWxlLT5tYXJnaW5MZWZ0KCkucmF3VmFsdWUoKSk7CisgICAgICAgIHJldHVybiBT
dHJpbmc6Om51bWJlcihzdHlsZS0+bWFyZ2luTGVmdCgpLnJhd1ZhbHVlKCkpOwogICAgIH0KICAg
ICBpZiAoIXN0cmNtcChwcm9wZXJ0eU5hbWUsICJsaW5lLWhlaWdodCIpKQotICAgICAgICByZXR1
cm4gU3RyaW5nOjpmb3JtYXQoIiVkIiwgc3R5bGUtPmxpbmVIZWlnaHQoKS5yYXdWYWx1ZSgpKTsK
KyAgICAgICAgcmV0dXJuIFN0cmluZzo6bnVtYmVyKHN0eWxlLT5saW5lSGVpZ2h0KCkucmF3VmFs
dWUoKSk7CiAgICAgaWYgKCFzdHJjbXAocHJvcGVydHlOYW1lLCAiZm9udC1zaXplIikpCi0gICAg
ICAgIHJldHVybiBTdHJpbmc6OmZvcm1hdCgiJWQiLCBzdHlsZS0+Zm9udERlc2NyaXB0aW9uKCku
Y29tcHV0ZWRQaXhlbFNpemUoKSk7CisgICAgICAgIHJldHVybiBTdHJpbmc6Om51bWJlcihzdHls
ZS0+Zm9udERlc2NyaXB0aW9uKCkuY29tcHV0ZWRQaXhlbFNpemUoKSk7CiAgICAgaWYgKCFzdHJj
bXAocHJvcGVydHlOYW1lLCAiZm9udC1mYW1pbHkiKSkKLSAgICAgICAgcmV0dXJuIFN0cmluZzo6
Zm9ybWF0KCIlcyIsIHN0eWxlLT5mb250RGVzY3JpcHRpb24oKS5mYW1pbHkoKS5mYW1pbHkoKS5z
dHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgcmV0dXJuIHN0eWxlLT5mb250RGVzY3Jp
cHRpb24oKS5mYW1pbHkoKS5mYW1pbHkoKS5zdHJpbmcoKTsKICAgICBpZiAoIXN0cmNtcChwcm9w
ZXJ0eU5hbWUsICJzaXplIikpCi0gICAgICAgIHJldHVybiBTdHJpbmc6OmZvcm1hdCgiJWQgJWQi
LCBzdHlsZS0+cGFnZVNpemUoKS53aWR0aCgpLnJhd1ZhbHVlKCksIHN0eWxlLT5wYWdlU2l6ZSgp
LmhlaWdodCgpLnJhd1ZhbHVlKCkpOworICAgICAgICByZXR1cm4gbWFrZVN0cmluZyhTdHJpbmc6
Om51bWJlcihzdHlsZS0+cGFnZVNpemUoKS53aWR0aCgpLnJhd1ZhbHVlKCkpLCAnICcsIFN0cmlu
Zzo6bnVtYmVyKHN0eWxlLT5wYWdlU2l6ZSgpLmhlaWdodCgpLnJhd1ZhbHVlKCkpKTsKIAotICAg
IHJldHVybiBTdHJpbmc6OmZvcm1hdCgicGFnZVByb3BlcnR5KCkgdW5pbXBsZW1lbnRlZCBmb3I6
ICVzIiwgcHJvcGVydHlOYW1lKTsKKyAgICByZXR1cm4gbWFrZVN0cmluZygicGFnZVByb3BlcnR5
KCkgdW5pbXBsZW1lbnRlZCBmb3I6ICIsIHByb3BlcnR5TmFtZSk7CiB9CiAKIGJvb2wgUHJpbnRD
b250ZXh0Ojppc1BhZ2VCb3hWaXNpYmxlKEZyYW1lKiBmcmFtZSwgaW50IHBhZ2VOdW1iZXIpCkBA
IC0yMzMsNyArMjMzLDEwIEBAIFN0cmluZyBQcmludENvbnRleHQ6OnBhZ2VTaXplQW5kTWFyZ2lu
c0kKIHsKICAgICBJbnRTaXplIHBhZ2VTaXplKHdpZHRoLCBoZWlnaHQpOwogICAgIGZyYW1lLT5k
b2N1bWVudCgpLT5wYWdlU2l6ZUFuZE1hcmdpbnNJblBpeGVscyhwYWdlTnVtYmVyLCBwYWdlU2l6
ZSwgbWFyZ2luVG9wLCBtYXJnaW5SaWdodCwgbWFyZ2luQm90dG9tLCBtYXJnaW5MZWZ0KTsKLSAg
ICByZXR1cm4gU3RyaW5nOjpmb3JtYXQoIiglZCwgJWQpICVkICVkICVkICVkIiwgcGFnZVNpemUu
d2lkdGgoKSwgcGFnZVNpemUuaGVpZ2h0KCksIG1hcmdpblRvcCwgbWFyZ2luUmlnaHQsIG1hcmdp
bkJvdHRvbSwgbWFyZ2luTGVmdCk7CisKKyAgICAvLyBXZSBkb24ndCBoYXZlIGEgbWFrZVN0cmlu
ZygpIGZ1bmN0aW9uIHRoYXQgdGFrZXMgdXAgdG8gMTIgYXJndW1lbnRzLCBpZiB0aGlzIGlzIGEg
aG90IGZ1bmN0aW9uLCB3ZSBjYW4gcHJvdmlkZSBvbmUuCisgICAgcmV0dXJuIG1ha2VTdHJpbmco
JygnLCBTdHJpbmc6Om51bWJlcihwYWdlU2l6ZS53aWR0aCgpKSwgIiwgIiwgU3RyaW5nOjpudW1i
ZXIocGFnZVNpemUuaGVpZ2h0KCkpLCAiKSAiKSArCisgICAgICAgICAgIG1ha2VTdHJpbmcoU3Ry
aW5nOjpudW1iZXIobWFyZ2luVG9wKSwgJyAnLCBTdHJpbmc6Om51bWJlcihtYXJnaW5SaWdodCks
ICcgJywgU3RyaW5nOjpudW1iZXIobWFyZ2luQm90dG9tKSwgJyAnLCBTdHJpbmc6Om51bWJlciht
YXJnaW5MZWZ0KSk7CiB9CiAKIGludCBQcmludENvbnRleHQ6Om51bWJlck9mUGFnZXMoRnJhbWUq
IGZyYW1lLCBjb25zdCBGbG9hdFNpemUmIHBhZ2VTaXplSW5QaXhlbHMpCkluZGV4OiBXZWJDb3Jl
L3BhZ2UvWFNTQXVkaXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL1hTU0F1ZGl0
b3IuY3BwCShyZXZpc2lvbiA2OTc2NCkKKysrIFdlYkNvcmUvcGFnZS9YU1NBdWRpdG9yLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNDEsOCArNDEsNyBAQAogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAj
aW5jbHVkZSAiVGV4dFJlc291cmNlRGVjb2Rlci5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJp
bmcuaD4KLQotdXNpbmcgbmFtZXNwYWNlIFdURjsKKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdD
b25jYXRlbmF0ZS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTIwMyw3ICsyMDIsNyBA
QCBib29sIFhTU0F1ZGl0b3I6OmNhbkxvYWRPYmplY3QoY29uc3QgU3RyCiAgICAgdGFzay5hbGxv
d1JlcXVlc3RJZk5vSWxsZWdhbFVSSUNoYXJhY3RlcnMgPSB0cnVlOwogCiAgICAgaWYgKGZpbmRJ
blJlcXVlc3QodGFzaykpIHsKLSAgICAgICAgU3RyaW5nIGNvbnNvbGVNZXNzYWdlID0gU3RyaW5n
Ojpmb3JtYXQoIlJlZnVzZWQgdG8gbG9hZCBhbiBvYmplY3QuIFVSTCBmb3VuZCB3aXRoaW4gcmVx
dWVzdDogXCIlc1wiLlxuIiwgdXJsLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICBTdHJpbmcgY29u
c29sZU1lc3NhZ2UgPSBtYWtlU3RyaW5nKCJSZWZ1c2VkIHRvIGxvYWQgYW4gb2JqZWN0LiBVUkwg
Zm91bmQgd2l0aGluIHJlcXVlc3Q6IFwiIiwgdXJsLCAiXCIuXG4iKTsKICAgICAgICAgbV9mcmFt
ZS0+ZG9tV2luZG93KCktPmNvbnNvbGUoKS0+YWRkTWVzc2FnZShKU01lc3NhZ2VTb3VyY2UsIExv
Z01lc3NhZ2VUeXBlLCBFcnJvck1lc3NhZ2VMZXZlbCwgY29uc29sZU1lc3NhZ2UsIDEsIFN0cmlu
ZygpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KSW5kZXg6IFdlYkNvcmUvcGxhdGZv
cm0vZWZsL1BsYXRmb3JtS2V5Ym9hcmRFdmVudEVmbC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9wbGF0Zm9ybS9lZmwvUGxhdGZvcm1LZXlib2FyZEV2ZW50RWZsLmNwcAkocmV2aXNpb24gNjk3
NjQpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2VmbC9QbGF0Zm9ybUtleWJvYXJkRXZlbnRFZmwuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zOSw3ICszOSw3IEBACiAjaW5jbHVkZSA8RXZhcy5oPgogI2lu
Y2x1ZGUgPHN0ZGlvLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KLSNpbmNsdWRlIDx3dGYv
dGV4dC9DU3RyaW5nLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGUuaD4K
ICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
QEAgLTUzLDcgKzUzLDcgQEAgc3RhdGljIFdpbmRvd3NLZXlNYXAgZ1dpbmRvd3NLZXlNYXA7CiBz
dGF0aWMgdm9pZCBjcmVhdGVLZXlNYXAoKQogewogICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAx
OyBpIDwgMjU7IGkrKykgewotICAgICAgICBTdHJpbmcga2V5ID0gU3RyaW5nOjpmb3JtYXQoIkYl
ZCIsIGkpOworICAgICAgICBTdHJpbmcga2V5ID0gbWFrZVN0cmluZygnRicsIFN0cmluZzo6bnVt
YmVyKGkpKTsKICAgICAgICAgZ0tleU1hcC5zZXQoa2V5LCBrZXkpOwogICAgIH0KICAgICBnS2V5
TWFwLnNldCgiQWx0X0wiLCAiQWx0Iik7CkBAIC0xMzMsMTMgKzEzMywxMyBAQCBzdGF0aWMgdm9p
ZCBjcmVhdGVXaW5kb3dzS2V5TWFwKCkKICAgICAvLyBBbHBoYWJldAogICAgIFN0cmluZyBhbHBo
YWJldCA9ICJhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eiI7CiAgICAgZm9yICh1bnNpZ25lZCBp
bnQgaSA9IDA7IGkgPCAyNjsgaSsrKSB7Ci0gICAgICAgIFN0cmluZyBrZXkgPSBTdHJpbmc6OmZv
cm1hdCgiJWMiLCBhbHBoYWJldFtpXSk7CisgICAgICAgIFN0cmluZyBrZXkgPSBhbHBoYWJldFtp
XTsKICAgICAgICAgZ1dpbmRvd3NLZXlNYXAuc2V0KGtleSwgVktfQSArIGkpOwogICAgIH0KIAog
ICAgIC8vIERpZ2l0cwogICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgMTA7IGkrKykg
ewotICAgICAgICBTdHJpbmcga2V5ID0gU3RyaW5nOjpmb3JtYXQoIiVkIiwgaSk7CisgICAgICAg
IFN0cmluZyBrZXkgPSBTdHJpbmc6Om51bWJlcihpKTsKICAgICAgICAgZ1dpbmRvd3NLZXlNYXAu
c2V0KGtleSwgVktfMCArIGkpOwogICAgIH0KIApAQCAtMTYxLDcgKzE2MSw3IEBAIHN0YXRpYyB2
b2lkIGNyZWF0ZVdpbmRvd3NLZXlNYXAoKQogCiAgICAgLy8gRl9YWAogICAgIGZvciAodW5zaWdu
ZWQgaW50IGkgPSAxOyBpIDwgMjU7IGkrKykgewotICAgICAgICBTdHJpbmcga2V5ID0gU3RyaW5n
Ojpmb3JtYXQoIkYlZCIsIGkpOworICAgICAgICBTdHJpbmcga2V5ID0gbWFrZVN0cmluZygnRics
IFN0cmluZzo6bnVtYmVyKGkpKTsKICAgICAgICAgZ1dpbmRvd3NLZXlNYXAuc2V0KGtleSwgVktf
RjEgKyBpKTsKICAgICB9CiB9CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBo
aWNzTGF5ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NMYXllci5jcHAJKHJldmlzaW9uIDY5NzY0KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0xheWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMsNyBAQAog
I2luY2x1ZGUgIlJvdGF0ZVRyYW5zZm9ybU9wZXJhdGlvbi5oIgogI2luY2x1ZGUgIlRleHRTdHJl
YW0uaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisjaW5jbHVkZSA8d3RmL3RleHQv
U3RyaW5nQ29uY2F0ZW5hdGUuaD4KIAogI2lmbmRlZiBOREVCVUcKICNpbmNsdWRlIDxzdGRpby5o
PgpAQCAtMjQ5LDcgKzI1MCw3IEBAIHZvaWQgR3JhcGhpY3NMYXllcjo6cGFpbnRHcmFwaGljc0xh
eWVyQ28KIFN0cmluZyBHcmFwaGljc0xheWVyOjphbmltYXRpb25OYW1lRm9yVHJhbnNpdGlvbihB
bmltYXRlZFByb3BlcnR5SUQgcHJvcGVydHkpCiB7CiAgICAgLy8gfCBpcyBub3QgYSB2YWxpZCBp
ZGVudGlmaWVyIGNoYXJhY3RlciBpbiBDU1MsIHNvIHRoaXMgY2FuIG5ldmVyIGNvbmZsaWN0IHdp
dGggYSBrZXlmcmFtZSBpZGVudGlmaWVyLgotICAgIHJldHVybiBTdHJpbmc6OmZvcm1hdCgiLXx0
cmFuc2l0aW9uJWMtIiwgcHJvcGVydHkpOworICAgIHJldHVybiBtYWtlU3RyaW5nKCItfHRyYW5z
aXRpb24iLCBzdGF0aWNfY2FzdDxjaGFyPihwcm9wZXJ0eSksICctJyk7CiB9CiAKIHZvaWQgR3Jh
cGhpY3NMYXllcjo6c3VzcGVuZEFuaW1hdGlvbnMoZG91YmxlKQpJbmRleDogV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9icmV3L0ltYWdlQnJldy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9icmV3L0ltYWdlQnJldy5jcHAJKHJldmlzaW9uIDY5NzY0KQorKysg
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9icmV3L0ltYWdlQnJldy5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTM2LDEzICszNiwxMyBAQAogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogCiAjaW5j
bHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5o
PgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlLmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogUGFzc1JlZlB0cjxJbWFnZT4gSW1hZ2U6OmxvYWRQbGF0Zm9ybVJlc291cmNl
KGNvbnN0IGNoYXIgKm5hbWUpCiB7Ci0gICAgU3RyaW5nIHJlc291cmNlUGF0aCA9IGhvbWVEaXJl
Y3RvcnlQYXRoKCkgKyBTdHJpbmc6OmZvcm1hdCgicmVzLyVzLnBuZyIsIG5hbWUpOworICAgIFN0
cmluZyByZXNvdXJjZVBhdGggPSBtYWtlU3RyaW5nKGhvbWVEaXJlY3RvcnlQYXRoKCksICJyZXMv
IiwgbmFtZSwgIi5wbmciKTsKIAogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHJlc291cmNlUGF0aC51dGY4KCku
ZGF0YSgpKTsKICAgICBpZiAoIWJ1ZmZlcikKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvSW1hZ2VCdWZmZXJDRy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcAkocmV2aXNpb24gNjk3NjQpCisrKyBXZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zMywxMCArMzMsOSBAQAogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgogI2luY2x1ZGUg
IkltYWdlRGF0YS5oIgogI2luY2x1ZGUgIk1JTUVUeXBlUmVnaXN0cnkuaCIKLSNpbmNsdWRlICJQ
bGF0Zm9ybVN0cmluZy5oIgogI2luY2x1ZGUgPEFwcGxpY2F0aW9uU2VydmljZXMvQXBwbGljYXRp
b25TZXJ2aWNlcy5oPgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+Ci0jaW5jbHVkZSA8d3Rm
L3RleHQvQ1N0cmluZy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlLmg+
CiAjaW5jbHVkZSA8d3RmL093bkFycmF5UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5o
PgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KQEAgLTM3MSw3ICszNzAsNyBAQCBTdHJpbmcg
SW1hZ2VCdWZmZXI6OnRvRGF0YVVSTChjb25zdCBTdHJpCiAgICAgYmFzZTY0RW5jb2RlKHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KENGRGF0YUdldEJ5dGVQdHIoZGF0YS5nZXQoKSkpLCBD
RkRhdGFHZXRMZW5ndGgoZGF0YS5nZXQoKSksIG91dCk7CiAgICAgb3V0LmFwcGVuZCgnXDAnKTsK
IAotICAgIHJldHVybiBTdHJpbmc6OmZvcm1hdCgiZGF0YTolcztiYXNlNjQsJXMiLCBtaW1lVHlw
ZS51dGY4KCkuZGF0YSgpLCBvdXQuZGF0YSgpKTsKKyAgICByZXR1cm4gbWFrZVN0cmluZygiZGF0
YToiLCBtaW1lVHlwZSwgIjtiYXNlNjQsIiwgb3V0LmRhdGEoKSk7CiB9CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWZsL0ltYWdlRWZs
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VmbC9JbWFnZUVm
bC5jcHAJKHJldmlzaW9uIDY5NzY0KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZmwv
SW1hZ2VFZmwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAi
Qml0bWFwSW1hZ2UuaCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKIAorI2luY2x1ZGUgPHd0
Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlLmg+CiAjaW5jbHVkZSA8Y2Fpcm8uaD4KIAogbmFtZXNw
YWNlIFdlYkNvcmUgewpAQCAtNTEsNyArNTIsNyBAQCBzdGF0aWMgUGFzc1JlZlB0cjxTaGFyZWRC
dWZmZXI+IGxvYWRSZXNvCiAKIHN0YXRpYyBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbG9hZFJl
c291cmNlU2hhcmVkQnVmZmVyKGNvbnN0IGNoYXIqIG5hbWUpCiB7Ci0gICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUo
U3RyaW5nOjpmb3JtYXQoREFUQV9ESVIgIi93ZWJraXQtMS4wL2ltYWdlcy8lcy5wbmciLCBuYW1l
KSk7CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVh
dGVXaXRoQ29udGVudHNPZkZpbGUobWFrZVN0cmluZyhEQVRBX0RJUiAiL3dlYmtpdC0xLjAvaW1h
Z2VzLyIsIG5hbWUsICIucG5nIikpOyAgICAKICAgICBpZiAoYnVmZmVyKQogICAgICAgICByZXR1
cm4gYnVmZmVyLnJlbGVhc2UoKTsKICAgICByZXR1cm4gbG9hZFJlc291cmNlU2hhcmVkQnVmZmVy
RmFsbGJhY2soKTsKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL0ltYWdlQnVm
ZmVyR3RrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9J
bWFnZUJ1ZmZlckd0ay5jcHAJKHJldmlzaW9uIDY5NzY0KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9ndGsvSW1hZ2VCdWZmZXJHdGsuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsy
OCw3IEBACiAjaW5jbHVkZSA8Y2Fpcm8uaD4KICNpbmNsdWRlIDxndGsvZ3RrLmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVu
YXRlLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNjcsNyArNjgsNyBAQCBTdHJpbmcg
SW1hZ2VCdWZmZXI6OnRvRGF0YVVSTChjb25zdCBTdHJpCiAgICAgYmFzZTY0RW5jb2RlKHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGJ1ZmZlci5nZXQoKSksIGJ1ZmZlclNpemUsIG91dCk7
CiAgICAgb3V0LmFwcGVuZCgnXDAnKTsKIAotICAgIHJldHVybiBTdHJpbmc6OmZvcm1hdCgiZGF0
YTolcztiYXNlNjQsJXMiLCBtaW1lVHlwZS51dGY4KCkuZGF0YSgpLCBvdXQuZGF0YSgpKTsKKyAg
ICByZXR1cm4gbWFrZVN0cmluZygiZGF0YToiLCBtaW1lVHlwZSwgIjtiYXNlNjQsIiwgb3V0LmRh
dGEoKSk7CiB9CiAKIH0KSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaGFpa3UvSW1h
Z2VCdWZmZXJIYWlrdS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9oYWlrdS9JbWFnZUJ1ZmZlckhhaWt1LmNwcAkocmV2aXNpb24gNjk3NjQpCisrKyBXZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2hhaWt1L0ltYWdlQnVmZmVySGFpa3UuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiTUlNRVR5cGVSZWdpc3RyeS5oIgogI2lu
Y2x1ZGUgIlN0aWxsSW1hZ2VIYWlrdS5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4K
KyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZS5oPgogI2luY2x1ZGUgPEJpdG1h
cFN0cmVhbS5oPgogI2luY2x1ZGUgPFN0cmluZy5oPgogI2luY2x1ZGUgPFRyYW5zbGF0b3JSb3N0
ZXIuaD4KQEAgLTM2Nyw4ICszNjgsNyBAQCBTdHJpbmcgSW1hZ2VCdWZmZXI6OnRvRGF0YVVSTChj
b25zdCBTdHJpCiAgICAgYmFzZTY0RW5jb2RlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+
KHRyYW5zbGF0ZWRTdHJlYW0uQnVmZmVyKCkpLAogICAgICAgICAgICAgICAgICB0cmFuc2xhdGVk
U3RyZWFtLkJ1ZmZlckxlbmd0aCgpLCBlbmNvZGVkQnVmZmVyKTsKIAotICAgIHJldHVybiBTdHJp
bmc6OmZvcm1hdCgiZGF0YTolcztiYXNlNjQsJXMiLCBtaW1lVHlwZS51dGY4KCkuZGF0YSgpLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICBlbmNvZGVkQnVmZmVyLmRhdGEoKSk7CisgICAgcmV0
dXJuIG1ha2VTdHJpbmcoImRhdGE6IiwgbWltZVR5cGUsICI7YmFzZTY0LCIsIGVuY29kZWRCdWZm
ZXIuZGF0YSgpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9tYWMvR3JhcGhpY3NMYXllckNBLm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0dyYXBoaWNzTGF5ZXJDQS5tbQkocmV2aXNpb24g
Njk3NjQpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9HcmFwaGljc0xheWVyQ0Eu
bW0JKHdvcmtpbmcgY29weSkKQEAgLTQ3LDYgKzQ3LDcgQEAKICNpbXBvcnQgPHd0Zi9DdXJyZW50
VGltZS5oPgogI2ltcG9ydCA8d3RmL1VudXNlZFBhcmFtLmg+CiAjaW1wb3J0IDx3dGYvUmV0YWlu
UHRyLmg+CisjaW1wb3J0IDx3dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZS5oPgogCiB1c2luZyBu
YW1lc3BhY2Ugc3RkOwogCkBAIC0yNDcsNyArMjQ4LDcgQEAgc3RhdGljIFN0cmluZyBwcm9wZXJ0
eUlkVG9TdHJpbmcoQW5pbWF0ZQogCiBzdGF0aWMgU3RyaW5nIGFuaW1hdGlvbklkZW50aWZpZXIo
Y29uc3QgU3RyaW5nJiBhbmltYXRpb25OYW1lLCBBbmltYXRlZFByb3BlcnR5SUQgcHJvcGVydHks
IGludCBpbmRleCkKIHsKLSAgICByZXR1cm4gYW5pbWF0aW9uTmFtZSArIFN0cmluZzo6Zm9ybWF0
KCJfJWRfJWQiLCBwcm9wZXJ0eSwgaW5kZXgpOworICAgIHJldHVybiBtYWtlU3RyaW5nKGFuaW1h
dGlvbk5hbWUsICdfJywgU3RyaW5nOjpudW1iZXIocHJvcGVydHkpLCAnXycsIFN0cmluZzo6bnVt
YmVyKGluZGV4KSk7CiB9CiAKIHN0YXRpYyBDQU1lZGlhVGltaW5nRnVuY3Rpb24qIGdldENBTWVk
aWFUaW1pbmdGdW5jdGlvbihjb25zdCBUaW1pbmdGdW5jdGlvbiogdGltaW5nRnVuY3Rpb24pCklu
ZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0ltYWdlQnVmZmVyUXQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvSW1hZ2VCdWZmZXJRdC5jcHAJ
KHJldmlzaW9uIDY5NzY0KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9JbWFnZUJ1
ZmZlclF0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgIlN0
aWxsSW1hZ2VRdC5oIgogI2luY2x1ZGUgIlRyYW5zcGFyZW5jeUxheWVyLmgiCiAjaW5jbHVkZSA8
d3RmL3RleHQvQ1N0cmluZy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRl
Lmg+CiAKICNpbmNsdWRlIDxRQnVmZmVyPgogI2luY2x1ZGUgPFFDb2xvcj4KQEAgLTQwMSw3ICs0
MDIsOCBAQCBTdHJpbmcgSW1hZ2VCdWZmZXI6OnRvRGF0YVVSTChjb25zdCBTdHJpCiAgICAgfQog
CiAgICAgYnVmZmVyLmNsb3NlKCk7Ci0gICAgcmV0dXJuIFN0cmluZzo6Zm9ybWF0KCJkYXRhOiVz
O2Jhc2U2NCwlcyIsIG1pbWVUeXBlLnV0ZjgoKS5kYXRhKCksIGRhdGEudG9CYXNlNjQoKS5kYXRh
KCkpOworCisgICAgcmV0dXJuIG1ha2VTdHJpbmcoImRhdGE6IiwgbWltZVR5cGUsICI7YmFzZTY0
LCIsIGRhdGEudG9CYXNlNjQoKS5kYXRhKCkpOwogfQogCiB9CkluZGV4OiBXZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3NraWEvSW1hZ2VCdWZmZXJTa2lhLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvSW1hZ2VCdWZmZXJTa2lhLmNwcAkocmV2aXNpb24g
Njk3NjQpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvSW1hZ2VCdWZmZXJTa2lh
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDUsNiArNDUsOCBAQAogI2luY2x1ZGUgIlNrQ29sb3JQ
cml2LmgiCiAjaW5jbHVkZSAiU2tpYVV0aWxzLmgiCiAKKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJp
bmdDb25jYXRlbmF0ZS5oPgorCiB1c2luZyBuYW1lc3BhY2Ugc3RkOwogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CkBAIC0zMTIsNyArMzE0LDcgQEAgU3RyaW5nIEltYWdlQnVmZmVyOjp0b0RhdGFVUkwo
Y29uc3QgU3RyaQogICAgIGJhc2U2NEVuY29kZWREYXRhLmFwcGVuZCgnXDAnKTsKIAogICAgIC8v
IEFuZCB0aGUgcmVzdWx0aW5nIHN0cmluZy4KLSAgICByZXR1cm4gU3RyaW5nOjpmb3JtYXQoImRh
dGE6aW1hZ2UvcG5nO2Jhc2U2NCwlcyIsIGJhc2U2NEVuY29kZWREYXRhLmRhdGEoKSk7CisgICAg
cmV0dXJuIG1ha2VTdHJpbmcoImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCwiLCBiYXNlNjRFbmNvZGVk
RGF0YS5kYXRhKCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9XZWJMYXllci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vV2ViTGF5ZXIuY3BwCShyZXZpc2lvbiA2OTc2NCkKKysr
IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1dlYkxheWVyLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtOTQsNyArOTQsNyBAQCB2b2lkIFdlYkxheWVyOjpkcmF3SW5Db250ZXh0KFBsYXRmb3Jt
R3JhCiAjZW5kaWYKIAogICAgIGlmIChtX293bmVyLT5zaG93UmVwYWludENvdW50ZXIoKSkgewot
ICAgICAgICBTdHJpbmcgdGV4dCA9IFN0cmluZzo6Zm9ybWF0KCIlZCIsIG1fb3duZXItPmluY3Jl
bWVudFJlcGFpbnRDb3VudCgpKTs7CisgICAgICAgIFN0cmluZyB0ZXh0ID0gU3RyaW5nOjpudW1i
ZXIobV9vd25lci0+aW5jcmVtZW50UmVwYWludENvdW50KCkpOwogCiAgICAgICAgIENHQ29udGV4
dFNhdmVHU3RhdGUoY29udGV4dCk7CiAKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9D
cmVkZW50aWFsU3RvcmFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL0NyZWRlbnRpYWxTdG9yYWdlLmNwcAkocmV2aXNpb24gNjk3NjQpCisrKyBXZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvQ3JlZGVudGlhbFN0b3JhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
OSw3ICsyOSw3IEBACiAjaW5jbHVkZSAiQ3JlZGVudGlhbC5oIgogI2luY2x1ZGUgIktVUkwuaCIK
ICNpbmNsdWRlICJQcm90ZWN0aW9uU3BhY2VIYXNoLmgiCi0jaW5jbHVkZSA8d3RmL3RleHQvQ1N0
cmluZy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlLmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5j
bHVkZSA8d3RmL0hhc2hTZXQuaD4KQEAgLTYwLDkgKzYwLDkgQEAgc3RhdGljIFBhdGhUb0RlZmF1
bHRQcm90ZWN0aW9uU3BhY2VNYXAmIAogc3RhdGljIFN0cmluZyBvcmlnaW5TdHJpbmdGcm9tVVJM
KGNvbnN0IEtVUkwmIHVybCkKIHsKICAgICBpZiAodXJsLnBvcnQoKSkKLSAgICAgICAgcmV0dXJu
IHVybC5wcm90b2NvbCgpICsgIjovLyIgKyB1cmwuaG9zdCgpICsgU3RyaW5nOjpmb3JtYXQoIjol
aS8iLCB1cmwucG9ydCgpKTsKLSAgICAKLSAgICByZXR1cm4gdXJsLnByb3RvY29sKCkgKyAiOi8v
IiArIHVybC5ob3N0KCkgKyAiLyI7CisgICAgICAgIHJldHVybiBtYWtlU3RyaW5nKHVybC5wcm90
b2NvbCgpLCAiOi8vIiwgdXJsLmhvc3QoKSwgJzonLCBTdHJpbmc6Om51bWJlcih1cmwucG9ydCgp
KSwgJy8nKTsKKworICAgIHJldHVybiBtYWtlU3RyaW5nKHVybC5wcm90b2NvbCgpLCAiOi8vIiwg
dXJsLmhvc3QoKSwgJy8nKTsKIH0KIAogc3RhdGljIFN0cmluZyBwcm90ZWN0aW9uU3BhY2VNYXBL
ZXlGcm9tVVJMKGNvbnN0IEtVUkwmIHVybCkKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vc3FsL1NR
TGl0ZURhdGFiYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxp
dGVEYXRhYmFzZS5jcHAJKHJldmlzaW9uIDY5NzY0KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9zcWwv
U1FMaXRlRGF0YWJhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw2ICszNCw3IEBACiAjaW5j
bHVkZSA8c3FsaXRlMy5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9DU3RyaW5nLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGUu
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0yMTcsNyArMjE4LDcgQEAgaW50NjRfdCBT
UUxpdGVEYXRhYmFzZTo6dG90YWxTaXplKCkKIAogdm9pZCBTUUxpdGVEYXRhYmFzZTo6c2V0U3lu
Y2hyb25vdXMoU3luY2hyb25vdXNQcmFnbWEgc3luYykKIHsKLSAgICBleGVjdXRlQ29tbWFuZChT
dHJpbmc6OmZvcm1hdCgiUFJBR01BIHN5bmNocm9ub3VzID0gJWkiLCBzeW5jKSk7CisgICAgZXhl
Y3V0ZUNvbW1hbmQobWFrZVN0cmluZygiUFJBR01BIHN5bmNocm9ub3VzID0gIiwgU3RyaW5nOjpu
dW1iZXIoc3luYykpKTsKIH0KIAogdm9pZCBTUUxpdGVEYXRhYmFzZTo6c2V0QnVzeVRpbWVvdXQo
aW50IG1zKQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L3dpbmNlL1RleHRDb2RlY1dpbkNF
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL3RleHQvd2luY2UvVGV4dENvZGVj
V2luQ0UuY3BwCShyZXZpc2lvbiA2OTc2NCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vdGV4dC93aW5j
ZS9UZXh0Q29kZWNXaW5DRS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyLDcgKzMyLDcgQEAKICNp
bmNsdWRlIDx3aW5ubHMuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0
Zi9IYXNoU2V0Lmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorI2luY2x1ZGUgPHd0
Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFz
aC5oPgogI2luY2x1ZGUgPHd0Zi91bmljb2RlL1VURjguaD4KIApAQCAtMTEwLDcgKzExMCw3IEBA
IExhbmd1YWdlTWFuYWdlcjo6TGFuZ3VhZ2VNYW5hZ2VyKCkKICAgICAgICAgICAgICAgICBpbmZv
Lm1fYWxpYXNlcy5hcHBlbmQobmFtZSk7CiAgICAgICAgICAgICAgICAgaW5mby5tX2FsaWFzZXMu
YXBwZW5kKFN0cmluZyhjcEluZm8ud3N6SGVhZGVyQ2hhcnNldCkubGF0aW4xKCkpOwogICAgICAg
ICAgICAgICAgIGluZm8ubV9hbGlhc2VzLmFwcGVuZChTdHJpbmcoY3BJbmZvLndzekJvZHlDaGFy
c2V0KS5sYXRpbjEoKSk7Ci0gICAgICAgICAgICAgICAgU3RyaW5nIGNwTmFtZSA9IFN0cmluZzo6
Zm9ybWF0KCJjcCVkIiwgY3BJbmZvLnVpQ29kZVBhZ2UpOworICAgICAgICAgICAgICAgIFN0cmlu
ZyBjcE5hbWUgPSBtYWtlU3RyaW5nKCJjcCIsIFN0cmluZzo6bnVtYmVyKGNwSW5mby51aUNvZGVQ
YWdlKSk7CiAgICAgICAgICAgICAgICAgaW5mby5tX2FsaWFzZXMuYXBwZW5kKGNwTmFtZS5sYXRp
bjEoKSk7CiAgICAgICAgICAgICAgICAgc3VwcG9ydGVkQ2hhcnNldHMoKS5hZGQoaS0+c2Vjb25k
LmRhdGEoKSk7CiAgICAgICAgICAgICB9CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL3dpbi9DbGlw
Ym9hcmRVdGlsaXRpZXNXaW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vd2lu
L0NsaXBib2FyZFV0aWxpdGllc1dpbi5jcHAJKHJldmlzaW9uIDY5NzY0KQorKysgV2ViQ29yZS9w
bGF0Zm9ybS93aW4vQ2xpcGJvYXJkVXRpbGl0aWVzV2luLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzQsNiArMzQsNyBAQAogI2luY2x1ZGUgPHNobHdhcGkuaD4KICNpbmNsdWRlIDx3aW5pbmV0Lmg+
IC8vIGZvciBJTlRFUk5FVF9NQVhfVVJMX0xFTkdUSAogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJp
bmcuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZS5oPgogCiAjaWYgUExB
VEZPUk0oQ0YpCiAjaW5jbHVkZSA8Q29yZUZvdW5kYXRpb24vQ29yZUZvdW5kYXRpb24uaD4KQEAg
LTIzOSw3ICsyNDAsNyBAQCB2b2lkIG1hcmt1cFRvQ0ZIVE1MKGNvbnN0IFN0cmluZyYgbWFya3Vw
CiAgICAgdW5zaWduZWQgZW5kRnJhZ21lbnRPZmZzZXQgPSBzdGFydEZyYWdtZW50T2Zmc2V0ICsg
bWFya3VwVVRGOC5sZW5ndGgoKTsKICAgICB1bnNpZ25lZCBlbmRIVE1MT2Zmc2V0ID0gZW5kRnJh
Z21lbnRPZmZzZXQgKyBzdHJsZW4oZW5kTWFya3VwKTsKIAotICAgIGFwcGVuZChyZXN1bHQsIFN0
cmluZzo6Zm9ybWF0KGhlYWRlciwgc3RhcnRIVE1MT2Zmc2V0LCBlbmRIVE1MT2Zmc2V0LCBzdGFy
dEZyYWdtZW50T2Zmc2V0LCBlbmRGcmFnbWVudE9mZnNldCkudXRmOCgpKTsKKyAgICBhcHBlbmQo
cmVzdWx0LCBtYWtlU3RyaW5nKGhlYWRlciwgc3RhcnRIVE1MT2Zmc2V0LCBlbmRIVE1MT2Zmc2V0
LCBzdGFydEZyYWdtZW50T2Zmc2V0LCBlbmRGcmFnbWVudE9mZnNldCkudXRmOCgpKTsKICAgICBp
ZiAoc291cmNlVVJMVVRGOC5sZW5ndGgoKSkgewogICAgICAgICBhcHBlbmQocmVzdWx0LCBzb3Vy
Y2VVUkxQcmVmaXgpOwogICAgICAgICBhcHBlbmQocmVzdWx0LCBzb3VyY2VVUkxVVEY4KTsKSW5k
ZXg6IFdlYkNvcmUvcGxhdGZvcm0vd2luL0xhbmd1YWdlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL3BsYXRmb3JtL3dpbi9MYW5ndWFnZS5jcHAJKHJldmlzaW9uIDY5NzY0KQorKysgV2ViQ29y
ZS9wbGF0Zm9ybS93aW4vTGFuZ3VhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw4ICsyNiw3
IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiTGFuZ3VhZ2UuaCIKIAotI2luY2x1
ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCi0jaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIApAQCAtNjAsNyArNTksNyBAQCBTdHJpbmcgZGVmYXVsdExhbmd1YWdlKCkKICAgICBpZiAo
Y291bnRyeU5hbWUuaXNFbXB0eSgpKQogICAgICAgICBjb21wdXRlZERlZmF1bHRMYW5ndWFnZSA9
IGxhbmd1YWdlTmFtZTsKICAgICBlbHNlCi0gICAgICAgIGNvbXB1dGVkRGVmYXVsdExhbmd1YWdl
ID0gU3RyaW5nOjpmb3JtYXQoIiVzLSVzIiwgbGFuZ3VhZ2VOYW1lLmxhdGluMSgpLmRhdGEoKSwg
Y291bnRyeU5hbWUubGF0aW4xKCkuZGF0YSgpKTsKKyAgICAgICAgY29tcHV0ZWREZWZhdWx0TGFu
Z3VhZ2UgPSBtYWtlU3RyaW5nKGxhbmd1YWdlTmFtZSwgJy0nLCBjb3VudHJ5TmFtZSk7CiAKICAg
ICByZXR1cm4gY29tcHV0ZWREZWZhdWx0TGFuZ3VhZ2U7CiB9CkluZGV4OiBXZWJDb3JlL3BsdWdp
bnMvUGx1Z2luU3RyZWFtLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsdWdpbnMvUGx1Z2lu
U3RyZWFtLmNwcAkocmV2aXNpb24gNjk3NjQpCisrKyBXZWJDb3JlL3BsdWdpbnMvUGx1Z2luU3Ry
ZWFtLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgIlN1YnJl
c291cmNlTG9hZGVyLmgiCiAjaW5jbHVkZSA8U3RyaW5nRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3Rm
L3RleHQvQ1N0cmluZy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlLmg+
CiAKIC8vIFdlIHVzZSAtMiBoZXJlIGJlY2F1c2Ugc29tZSBwbHVnaW5zIGxpa2UgdG8gcmV0dXJu
IC0xIHRvIGluZGljYXRlIGVycm9yCiAvLyBhbmQgdGhpcyB3YXkgd2Ugd29uJ3QgY2xhc2ggd2l0
aCB0aGVtLgpAQCAtMTQ1LDggKzE0Niw3IEBAIHZvaWQgUGx1Z2luU3RyZWFtOjpzdGFydFN0cmVh
bSgpCiAgICAgICAgIFZlY3RvcjxVQ2hhcj4gc3RyaW5nQnVpbGRlcjsKICAgICAgICAgU3RyaW5n
IHNlcGFyYXRvcigiOiAiKTsKIAotICAgICAgICBTdHJpbmcgc3RhdHVzTGluZSA9IFN0cmluZzo6
Zm9ybWF0KCJIVFRQICVkIE9LXG4iLCBtX3Jlc291cmNlUmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUo
KSk7Ci0KKyAgICAgICAgU3RyaW5nIHN0YXR1c0xpbmUgPSBtYWtlU3RyaW5nKCJIVFRQICIsIFN0
cmluZzo6bnVtYmVyKG1fcmVzb3VyY2VSZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpKSwgIiBPS1xu
Iik7CiAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKHN0YXR1c0xpbmUuY2hhcmFjdGVycygp
LCBzdGF0dXNMaW5lLmxlbmd0aCgpKTsKIAogICAgICAgICBIVFRQSGVhZGVyTWFwOjpjb25zdF9p
dGVyYXRvciBlbmQgPSBtX3Jlc291cmNlUmVzcG9uc2UuaHR0cEhlYWRlckZpZWxkcygpLmVuZCgp
OwpJbmRleDogV2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9zdmcvU1ZHVXNlRWxlbWVudC5jcHAJKHJldmlzaW9uIDY5NzY0KQorKysgV2ViQ29yZS9z
dmcvU1ZHVXNlRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDYgKzQ3LDggQEAKICNp
bmNsdWRlICJYTUxEb2N1bWVudFBhcnNlci5oIgogI2luY2x1ZGUgIlhNTFNlcmlhbGl6ZXIuaCIK
IAorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlLmg+CisKIC8vIER1bXAgU1ZH
RWxlbWVudEluc3RhbmNlIG9iamVjdCB0cmVlIC0gdXNlZnVsIHRvIGRlYnVnIGluc3RhbmNlUm9v
dCBwcm9ibGVtcwogLy8gI2RlZmluZSBEVU1QX0lOU1RBTkNFX1RSRUUKIApAQCAtMzcwLDcgKzM3
Miw3IEBAIHZvaWQgZHVtcEluc3RhbmNlVHJlZSh1bnNpZ25lZCBpbnQmIGRlcHQKICAgICAgICAg
dGV4dCArPSAiICAiOwogCiAgICAgY29uc3QgSGFzaFNldDxTVkdFbGVtZW50SW5zdGFuY2UqPiYg
ZWxlbWVudEluc3RhbmNlcyA9IGVsZW1lbnQtPmluc3RhbmNlc0ZvckVsZW1lbnQoKTsKLSAgICB0
ZXh0ICs9IFN0cmluZzo6Zm9ybWF0KCJDb3JyZXNwb25kaW5nIGVsZW1lbnQgaXMgYXNzb2NpYXRl
ZCB3aXRoICVpIGluc3RhbmNlKHMpOlxuIiwgZWxlbWVudEluc3RhbmNlcy5zaXplKCkpOworICAg
IHRleHQgKz0gbWFrZVN0cmluZygiQ29ycmVzcG9uZGluZyBlbGVtZW50IGlzIGFzc29jaWF0ZWQg
d2l0aCAiLCBTdHJpbmc6Om51bWJlcihlbGVtZW50SW5zdGFuY2VzLnNpemUoKSksICIgaW5zdGFu
Y2Uocyk6XG4iKTsKIAogICAgIGNvbnN0IEhhc2hTZXQ8U1ZHRWxlbWVudEluc3RhbmNlKj46OmNv
bnN0X2l0ZXJhdG9yIGVuZCA9IGVsZW1lbnRJbnN0YW5jZXMuZW5kKCk7CiAgICAgZm9yIChIYXNo
U2V0PFNWR0VsZW1lbnRJbnN0YW5jZSo+Ojpjb25zdF9pdGVyYXRvciBpdCA9IGVsZW1lbnRJbnN0
YW5jZXMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7CkluZGV4OiBXZWJDb3JlL3dlYnNvY2tl
dHMvV2ViU29ja2V0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3dlYnNvY2tldHMvV2ViU29j
a2V0LmNwcAkocmV2aXNpb24gNjk3NjQpCisrKyBXZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDcsNiArNDcsNyBAQAogI2luY2x1ZGUgPHd0Zi9TdGRM
aWJFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3Rm
L3RleHQvU3RyaW5nQnVpbGRlci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVu
YXRlLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMTQwLDcgKzE0MSw3IEBAIHZvaWQg
V2ViU29ja2V0Ojpjb25uZWN0KGNvbnN0IEtVUkwmIHVybCwKICAgICAgICAgcmV0dXJuOwogICAg
IH0KICAgICBpZiAoIXBvcnRBbGxvd2VkKHVybCkpIHsKLSAgICAgICAgc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpLT5hZGRNZXNzYWdlKEpTTWVzc2FnZVNvdXJjZSwgTG9nTWVzc2FnZVR5cGUsIEVy
cm9yTWVzc2FnZUxldmVsLCBTdHJpbmc6OmZvcm1hdCgiV2ViU29ja2V0IHBvcnQgJWQgYmxvY2tl
ZCIsIHVybC5wb3J0KCkpLCAwLCBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnNlY3VyaXR5T3Jp
Z2luKCktPnRvU3RyaW5nKCkpOworICAgICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmFk
ZE1lc3NhZ2UoSlNNZXNzYWdlU291cmNlLCBMb2dNZXNzYWdlVHlwZSwgRXJyb3JNZXNzYWdlTGV2
ZWwsIG1ha2VTdHJpbmcoIldlYlNvY2tldCBwb3J0ICIsIFN0cmluZzo6bnVtYmVyKHVybC5wb3J0
KCkpLCAiIGJsb2NrZWQiKSwgMCwgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5zZWN1cml0eU9y
aWdpbigpLT50b1N0cmluZygpKTsKICAgICAgICAgbV9zdGF0ZSA9IENMT1NFRDsKICAgICAgICAg
ZWMgPSBTRUNVUklUWV9FUlI7CiAgICAgICAgIHJldHVybjsKSW5kZXg6IFdlYkNvcmUvd2Vic29j
a2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3dlYnNvY2tl
dHMvV2ViU29ja2V0Q2hhbm5lbC5jcHAJKHJldmlzaW9uIDY5NzY0KQorKysgV2ViQ29yZS93ZWJz
b2NrZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OCw2ICs0OCw3
IEBACiAjaW5jbHVkZSAiV2ViU29ja2V0SGFuZHNoYWtlLmgiCiAKICNpbmNsdWRlIDx3dGYvdGV4
dC9DU3RyaW5nLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGUuaD4KICNp
bmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CiAj
aW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KQEAgLTI0Niw3ICsyNDcsNyBAQCBib29sIFdlYlNv
Y2tldENoYW5uZWw6OmFwcGVuZFRvQnVmZmVyKGNvCiAgICAgICAgIG1fYnVmZmVyU2l6ZSA9IG5l
d0J1ZmZlclNpemU7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KLSAgICBtX2NvbnRleHQt
PmFkZE1lc3NhZ2UoSlNNZXNzYWdlU291cmNlLCBMb2dNZXNzYWdlVHlwZSwgRXJyb3JNZXNzYWdl
TGV2ZWwsIFN0cmluZzo6Zm9ybWF0KCJXZWJTb2NrZXQgZnJhbWUgKGF0ICVsdSBieXRlcykgaXMg
dG9vIGxvbmcuIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZz4obmV3QnVmZmVyU2l6ZSkpLCAw
LCBtX2hhbmRzaGFrZS5jbGllbnRPcmlnaW4oKSk7CisgICAgbV9jb250ZXh0LT5hZGRNZXNzYWdl
KEpTTWVzc2FnZVNvdXJjZSwgTG9nTWVzc2FnZVR5cGUsIEVycm9yTWVzc2FnZUxldmVsLCBtYWtl
U3RyaW5nKCJXZWJTb2NrZXQgZnJhbWUgKGF0ICIsIFN0cmluZzo6bnVtYmVyKHN0YXRpY19jYXN0
PHVuc2lnbmVkIGxvbmc+KG5ld0J1ZmZlclNpemUpKSwgIiBieXRlcykgaXMgdG9vIGxvbmcuIiks
IDAsIG1faGFuZHNoYWtlLmNsaWVudE9yaWdpbigpKTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAK
SW5kZXg6IFdlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuY3BwCShyZXZpc2lv
biA2OTc2NCkKKysrIFdlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC01Miw2ICs1Miw3IEBACiAjaW5jbHVkZSA8d3RmL3RleHQvQXRvbWlj
U3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90
ZXh0L1N0cmluZ0J1aWxkZXIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0
ZS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTMxOCw3ICszMTksNyBAQCBpbnQgV2Vi
U29ja2V0SGFuZHNoYWtlOjpyZWFkU2VydmVySGFuZHNoCiAgICAgbV9yZXNwb25zZS5zZXRTdGF0
dXNUZXh0KHN0YXR1c1RleHQpOwogICAgIGlmIChzdGF0dXNDb2RlICE9IDEwMSkgewogICAgICAg
ICBtX21vZGUgPSBGYWlsZWQ7Ci0gICAgICAgIG1fY29udGV4dC0+YWRkTWVzc2FnZShKU01lc3Nh
Z2VTb3VyY2UsIExvZ01lc3NhZ2VUeXBlLCBFcnJvck1lc3NhZ2VMZXZlbCwgU3RyaW5nOjpmb3Jt
YXQoIlVuZXhwZWN0ZWQgcmVzcG9uc2UgY29kZTogJWQiLCBzdGF0dXNDb2RlKSwgMCwgY2xpZW50
T3JpZ2luKCkpOworICAgICAgICBtX2NvbnRleHQtPmFkZE1lc3NhZ2UoSlNNZXNzYWdlU291cmNl
LCBMb2dNZXNzYWdlVHlwZSwgRXJyb3JNZXNzYWdlTGV2ZWwsIG1ha2VTdHJpbmcoIlVuZXhwZWN0
ZWQgcmVzcG9uc2UgY29kZTogIiwgU3RyaW5nOjpudW1iZXIoc3RhdHVzQ29kZSkpLCAwLCBjbGll
bnRPcmlnaW4oKSk7CiAgICAgICAgIHJldHVybiBsZW47CiAgICAgfQogICAgIG1fbW9kZSA9IE5v
cm1hbDsKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDY5NzY0KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTAtMTAtMTQgIE5pa29sYXMgWmlt
bWVybWFubiAgPG56aW1tZXJtYW5uQHJpbS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgUmVwbGFjZSBsb3RzIG9mIFN0cmluZzo6Zm9ybWF0KCkg
dXNhZ2VzIGJ5IFN0cmluZ0NvbmNhdGVuYXRlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD00NzY2NAorCisgICAgICAgIFJlYmFzZWxpbmUgdHdvIHhzc0F1
ZGl0b3IgdGVzdHMsIHRoYXQgaGF2ZSBiZWVuIGNoYW5nZWQsIGFmdGVyIHN3aXRjaGluZyBmcm9t
IFN0cmluZzo6Zm9ybWF0KCkgLT4gbWFrZVN0cmluZygpLgorCisgICAgICAgICogaHR0cC90ZXN0
cy9zZWN1cml0eS94c3NBdWRpdG9yL2VtYmVkLXRhZy1udWxsLWNoYXItZXhwZWN0ZWQudHh0Ogor
ICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci9vYmplY3QtZW1iZWQtdGFn
LW51bGwtY2hhci1leHBlY3RlZC50eHQ6CisKIDIwMTAtMTAtMTQgIFN0ZXZlIEJsb2NrICA8c3Rl
dmVibG9ja0Bnb29nbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEplcmVteSBPcmxvdy4K
SW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci9lbWJlZC10
YWctbnVsbC1jaGFyLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3IvZW1iZWQtdGFnLW51bGwtY2hhci1leHBlY3RlZC50
eHQJKHJldmlzaW9uIDY5NzY0KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS94
c3NBdWRpdG9yL2VtYmVkLXRhZy1udWxsLWNoYXItZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkp
CkBAIC0xLDMgKzEsMyBAQAotQ09OU09MRSBNRVNTQUdFOiBsaW5lIDE6IFJlZnVzZWQgdG8gbG9h
ZCBhbiBvYmplY3QuIFVSTCBmb3VuZCB3aXRoaW4gcmVxdWVzdDogImh0dHA6Ly8xMjcuMC4wLjE6
ODAwMC9zZWPDr8K/wr11cml0eS94c3NBdWRpdG9yL3Jlc291cmNlcy9kdW1teS5zd2YiLgorQ09O
U09MRSBNRVNTQUdFOiBsaW5lIDE6IFJlZnVzZWQgdG8gbG9hZCBhbiBvYmplY3QuIFVSTCBmb3Vu
ZCB3aXRoaW4gcmVxdWVzdDogImh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9zZWPvv711cml0eS94c3NB
dWRpdG9yL3Jlc291cmNlcy9kdW1teS5zd2YiLgogCiAKSW5kZXg6IExheW91dFRlc3RzL2h0dHAv
dGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci9vYmplY3QtZW1iZWQtdGFnLW51bGwtY2hhci1leHBl
Y3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS94
c3NBdWRpdG9yL29iamVjdC1lbWJlZC10YWctbnVsbC1jaGFyLWV4cGVjdGVkLnR4dAkocmV2aXNp
b24gNjk3NjQpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3Iv
b2JqZWN0LWVtYmVkLXRhZy1udWxsLWNoYXItZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBA
IC0xLDUgKzEsNSBAQAotQ09OU09MRSBNRVNTQUdFOiBsaW5lIDE6IFJlZnVzZWQgdG8gbG9hZCBh
biBvYmplY3QuIFVSTCBmb3VuZCB3aXRoaW4gcmVxdWVzdDogImh0dHA6Ly8xMjcuMC4wLjE6ODAw
MC9zZWPDr8K/wr11cml0eS94c3NBdWRpdG9yL3Jlc291cmNlcy9kdW1teS5zd2YiLgorQ09OU09M
RSBNRVNTQUdFOiBsaW5lIDE6IFJlZnVzZWQgdG8gbG9hZCBhbiBvYmplY3QuIFVSTCBmb3VuZCB3
aXRoaW4gcmVxdWVzdDogImh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9zZWPvv711cml0eS94c3NBdWRp
dG9yL3Jlc291cmNlcy9kdW1teS5zd2YiLgogCi1DT05TT0xFIE1FU1NBR0U6IGxpbmUgMTogUmVm
dXNlZCB0byBsb2FkIGFuIG9iamVjdC4gVVJMIGZvdW5kIHdpdGhpbiByZXF1ZXN0OiAiaHR0cDov
LzEyNy4wLjAuMTo4MDAwL3NlY8Ovwr/CvXVyaXR5L3hzc0F1ZGl0b3IvcmVzb3VyY2VzL2R1bW15
LnN3ZiIuCitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMTogUmVmdXNlZCB0byBsb2FkIGFuIG9iamVj
dC4gVVJMIGZvdW5kIHdpdGhpbiByZXF1ZXN0OiAiaHR0cDovLzEyNy4wLjAuMTo4MDAwL3NlY++/
vXVyaXR5L3hzc0F1ZGl0b3IvcmVzb3VyY2VzL2R1bW15LnN3ZiIuCiAKIAo=
</data>
<flag name="review"
          id="60632"
          type_id="1"
          status="-"
          setter="barraclough"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>70761</attachid>
            <date>2010-10-14 11:41:21 -0700</date>
            <delta_ts>2010-10-14 12:41:58 -0700</delta_ts>
            <desc>Patch v3</desc>
            <filename>KillStringFormatPart1.diff</filename>
            <type>text/plain</type>
            <size>56654</size>
            <attacher name="Nikolas Zimmermann">zimmermann</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDY5NzY0KQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTAtMTAtMTQgIE5pa29sYXMg
WmltbWVybWFubiAgPG56aW1tZXJtYW5uQHJpbS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVwbGFjZSBsb3RzIG9mIFN0cmluZzo6Zm9ybWF0
KCkgdXNhZ2VzIGJ5IFN0cmluZ0NvbmNhdGVuYXRlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NzY2NAorCisgICAgICAgIEFkZCBTdHJpbmdUeXBlQWRh
cHRlcjxjaGFyPiB0byBhY2NlcHQgc2luZ2xlIGNoYXJhY3RlcnMgZm9yIG1ha2VTdHJpbmcoKS4K
KworICAgICAgICAqIHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlLmg6CisgICAgICAgIChXVEY6
Om1ha2VTdHJpbmcpOgorCiAyMDEwLTEwLTE0ICBBbnRvbiBGYWVybiAgPGFudG9uQGJsYWRlaGF3
a2UuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IENzYWJhIE9zenRyb2dvbsOhYy4KSW5kZXg6
IEphdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGUuaAkocmV2aXNpb24g
Njk3NjQpCisrKyBKYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0zNSw2ICszNSwyMSBAQCBjbGFzcyBTdHJpbmdUeXBlQWRhcHRlciB7
CiB9OwogCiB0ZW1wbGF0ZTw+CitjbGFzcyBTdHJpbmdUeXBlQWRhcHRlcjxjaGFyPiB7CitwdWJs
aWM6CisgICAgU3RyaW5nVHlwZUFkYXB0ZXI8Y2hhcj4oY2hhciBidWZmZXIpCisgICAgICAgIDog
bV9idWZmZXIoYnVmZmVyKQorICAgIHsKKyAgICB9CisKKyAgICB1bnNpZ25lZCBsZW5ndGgoKSB7
IHJldHVybiAxOyB9CisgICAgdm9pZCB3cml0ZVRvKFVDaGFyKiBkZXN0aW5hdGlvbikgeyAqZGVz
dGluYXRpb24gPSBtX2J1ZmZlcjsgfQorCitwcml2YXRlOgorICAgIHVuc2lnbmVkIGNoYXIgbV9i
dWZmZXI7Cit9OworCit0ZW1wbGF0ZTw+CiBjbGFzcyBTdHJpbmdUeXBlQWRhcHRlcjxjaGFyKj4g
ewogcHVibGljOgogICAgIFN0cmluZ1R5cGVBZGFwdGVyPGNoYXIqPihjaGFyKiBidWZmZXIpCkBA
IC0zNjAsNiArMzc1LDEzIEBAIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gdHJ5TWFrZVN0cmluZyhT
dHIKICAgICByZXR1cm4gcmVzdWx0SW1wbDsKIH0KIAorLy8gQ29udmVuaWVuY2Ugb25seS4KK3Rl
bXBsYXRlPHR5cGVuYW1lIFN0cmluZ1R5cGUxPgorU3RyaW5nIG1ha2VTdHJpbmcoU3RyaW5nVHlw
ZTEgc3RyaW5nMSkKK3sKKyAgICByZXR1cm4gU3RyaW5nKHN0cmluZzEpOworfQorCiB0ZW1wbGF0
ZTx0eXBlbmFtZSBTdHJpbmdUeXBlMSwgdHlwZW5hbWUgU3RyaW5nVHlwZTI+CiBTdHJpbmcgbWFr
ZVN0cmluZyhTdHJpbmdUeXBlMSBzdHJpbmcxLCBTdHJpbmdUeXBlMiBzdHJpbmcyKQogewpAQCAt
NDI1LDQgKzQ0Nyw2IEBAIFN0cmluZyBtYWtlU3RyaW5nKFN0cmluZ1R5cGUxIHN0cmluZzEsIFMK
IAogfSAvLyBuYW1lc3BhY2UgV1RGCiAKK3VzaW5nIFdURjo6bWFrZVN0cmluZzsKKwogI2VuZGlm
CkluZGV4OiBXZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL0NoYW5nZUxv
ZwkocmV2aXNpb24gNjk3NjQpCisrKyBXZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDk1IEBACisyMDEwLTEwLTE0ICBOaWtvbGFzIFppbW1lcm1hbm4gIDxuemltbWVy
bWFubkByaW0uY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFJlcGxhY2UgbG90cyBvZiBTdHJpbmc6OmZvcm1hdCgpIHVzYWdlcyBieSBTdHJpbmdD
b25jYXRlbmF0ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NDc2NjQKKworICAgICAgICAqIEZvcndhcmRpbmdIZWFkZXJzL3d0Zi90ZXh0L1N0cmluZ0Nv
bmNhdGVuYXRlLmg6IEFkZGVkLgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFz
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvd0Jhc2U6OmNyb3NzRG9tYWluQWNj
ZXNzRXJyb3JNZXNzYWdlKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOFByb3h5LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlY4UHJveHk6OnJlcG9ydFVuc2FmZUFjY2Vzc1RvKToKKyAgICAgICAg
KiBkb20vRXhjZXB0aW9uQmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFeGNlcHRpb25CYXNl
OjpFeGNlcHRpb25CYXNlKToKKyAgICAgICAgKiBkb20vWE1MRG9jdW1lbnRQYXJzZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6WE1MRG9jdW1lbnRQYXJzZXI6OmhhbmRsZUVycm9yKToKKyAgICAg
ICAgKiBoaXN0b3J5L1BhZ2VDYWNoZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpsb2dDYW5DYWNo
ZUZyYW1lRGVjaXNpb24pOgorICAgICAgICAqIGh0bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6cHJvY2Vzc0ZpbGVEYXRlU3RyaW5nKToKKyAgICAgICAgKiBp
bnNwZWN0b3IvQ29kZUdlbmVyYXRvckluc3BlY3Rvci5wbToKKyAgICAgICAgKiBpbnNwZWN0b3Iv
SW5zcGVjdG9yQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250
cm9sbGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
Q29udHJvbGxlcjo6Y291bnQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JET01BZ2Vu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6Y3JlYXRlQnJlYWtw
b2ludElkKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpmb3JtYXRCcmVha3BvaW50SWQpOgorICAgICAgICAqIGluc3Bl
Y3Rvci9JbnNwZWN0b3JQcm9maWxlckFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvclByb2ZpbGVyQWdlbnQ6OmFkZFByb2ZpbGVGaW5pc2hlZE1lc3NhZ2VUb0NvbnNvbGUpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUHJvZmlsZXJBZ2VudDo6YWRkU3RhcnRQcm9maWxp
bmdNZXNzYWdlVG9Db25zb2xlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclByb2ZpbGVy
QWdlbnQ6OmdldEN1cnJlbnRVc2VySW5pdGlhdGVkUHJvZmlsZU5hbWUpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yUHJvZmlsZXJBZ2VudDo6dGFrZUhlYXBTbmFwc2hvdCk6CisgICAgICAg
ICogbG9hZGVyL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNh
Y2hlZFJlc291cmNlTG9hZGVyOjpwcmludEFjY2Vzc0RlbmllZE1lc3NhZ2UpOgorICAgICAgICAq
IGxvYWRlci9GcmFtZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6
Y2hlY2tJZkRpc3BsYXlJbnNlY3VyZUNvbnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVM
b2FkZXI6OmNoZWNrSWZSdW5JbnNlY3VyZUNvbnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6RnJh
bWVMb2FkZXI6OnNob3VsZEFsbG93TmF2aWdhdGlvbik6CisgICAgICAgICogbG9hZGVyL2FyY2hp
dmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lXZWJB
cmNoaXZlOjpjcmVhdGVGcm9tU2VsZWN0aW9uKToKKyAgICAgICAgKiBwYWdlL0RPTVdpbmRvdy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3c6OnBvc3RNZXNzYWdlVGltZXJGaXJlZCk6
CisgICAgICAgICogcGFnZS9QcmludENvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UHJp
bnRDb250ZXh0OjpwYWdlUHJvcGVydHkpOgorICAgICAgICAoV2ViQ29yZTo6UHJpbnRDb250ZXh0
OjpwYWdlU2l6ZUFuZE1hcmdpbnNJblBpeGVscyk6CisgICAgICAgICogcGFnZS9YU1NBdWRpdG9y
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhTU0F1ZGl0b3I6OmNhbkxvYWRPYmplY3QpOgorICAg
ICAgICAqIHBsYXRmb3JtL2VmbC9QbGF0Zm9ybUtleWJvYXJkRXZlbnRFZmwuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Y3JlYXRlS2V5TWFwKToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVdpbmRv
d3NLZXlNYXApOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6YW5pbWF0aW9uTmFtZUZvclRyYW5z
aXRpb24pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2JyZXcvSW1hZ2VCcmV3LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlOjpsb2FkUGxhdGZvcm1SZXNvdXJjZSk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDRy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJbWFnZUJ1ZmZlcjo6dG9EYXRhVVJMKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9lZmwvSW1hZ2VFZmwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6bG9hZFJlc291cmNlU2hhcmVk
QnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ndGsvSW1hZ2VCdWZmZXJHdGsu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OnRvRGF0YVVSTCk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvaGFpa3UvSW1hZ2VCdWZmZXJIYWlrdS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6dG9EYXRhVVJMKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9tYWMvR3JhcGhpY3NMYXllckNBLm1tOgorICAgICAgICAoV2ViQ29yZTo6YW5pbWF0
aW9uSWRlbnRpZmllcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvcXQvSW1hZ2VCdWZm
ZXJRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6dG9EYXRhVVJMKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9za2lhL0ltYWdlQnVmZmVyU2tpYS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6dG9EYXRhVVJMKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy93aW4vV2ViTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViTGF5ZXI6
OmRyYXdJbkNvbnRleHQpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvQ3JlZGVudGlhbFN0
b3JhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6b3JpZ2luU3RyaW5nRnJvbVVSTCk6CisgICAg
ICAgICogcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNRTGl0ZURhdGFiYXNlOjpzZXRTeW5jaHJvbm91cyk6CisgICAgICAgICogcGxhdGZvcm0vdGV4
dC93aW5jZS9UZXh0Q29kZWNXaW5DRS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYW5ndWFnZU1h
bmFnZXI6Okxhbmd1YWdlTWFuYWdlcik6CisgICAgICAgICogcGxhdGZvcm0vd2luL0NsaXBib2Fy
ZFV0aWxpdGllc1dpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjptYXJrdXBUb0NGSFRNTCk6Cisg
ICAgICAgICogcGxhdGZvcm0vd2luL0xhbmd1YWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmRl
ZmF1bHRMYW5ndWFnZSk6CisgICAgICAgICogcGx1Z2lucy9QbHVnaW5TdHJlYW0uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UGx1Z2luU3RyZWFtOjpzdGFydFN0cmVhbSk6CisgICAgICAgICogc3Zn
L1NWR1VzZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZHVtcEluc3RhbmNlVHJlZSk6
CisgICAgICAgICogd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
V2ViU29ja2V0Ojpjb25uZWN0KToKKyAgICAgICAgKiB3ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5u
ZWwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0Q2hhbm5lbDo6YXBwZW5kVG9CdWZm
ZXIpOgorICAgICAgICAqIHdlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OldlYlNvY2tldEhhbmRzaGFrZTo6cmVhZFNlcnZlckhhbmRzaGFrZSk6CisK
IDIwMTAtMTAtMTQgIFBhdmVsIEZlbGRtYW4gIDxwZmVsZG1hbkBjaHJvbWl1bS5vcmc+CiAKICAg
ICAgICAgUmV2aWV3ZWQgYnkgWXVyeSBTZW1pa2hhdHNreS4KSW5kZXg6IFdlYkNvcmUvRm9yd2Fy
ZGluZ0hlYWRlcnMvd3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGUuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL3d0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlLmgJKHJl
dmlzaW9uIDApCisrKyBXZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL3d0Zi90ZXh0L1N0cmluZ0Nv
bmNhdGVuYXRlLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNCBAQAorI2lmbmRlZiBXZWJDb3Jl
X0ZXRF9TdHJpbmdDb25jYXRlbmF0ZV9oCisjZGVmaW5lIFdlYkNvcmVfRldEX1N0cmluZ0NvbmNh
dGVuYXRlX2gKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TdHJpbmdDb25jYXRlbmF0ZS5oPgor
I2VuZGlmCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwCShyZXZp
c2lvbiA2OTc2NCkKKysrIFdlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzcsNyArMzcsNyBAQAogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAj
aW5jbHVkZSAiV2ViQ29yZUpTQ2xpZW50RGF0YS5oIgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcu
aD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3Ry
aW5nQ29uY2F0ZW5hdGUuaD4KIAogdXNpbmcgbmFtZXNwYWNlIEpTQzsKIApAQCAtODMsOCArODMs
OCBAQCBTdHJpbmcgSlNET01XaW5kb3dCYXNlOjpjcm9zc0RvbWFpbkFjY2VzCiAgICAgICAgIHJl
dHVybiBTdHJpbmcoKTsKIAogICAgIC8vIEZJWE1FOiB0aGlzIGVycm9yIG1lc3NhZ2Ugc2hvdWxk
IGNvbnRhaW4gbW9yZSBzcGVjaWZpY3Mgb2Ygd2h5IHRoZSBzYW1lIG9yaWdpbiBjaGVjayBoYXMg
ZmFpbGVkLgotICAgIHJldHVybiBTdHJpbmc6OmZvcm1hdCgiVW5zYWZlIEphdmFTY3JpcHQgYXR0
ZW1wdCB0byBhY2Nlc3MgZnJhbWUgd2l0aCBVUkwgJXMgZnJvbSBmcmFtZSB3aXRoIFVSTCAlcy4g
RG9tYWlucywgcHJvdG9jb2xzIGFuZCBwb3J0cyBtdXN0IG1hdGNoLlxuIiwKLSAgICAgICAgdGFy
Z2V0VVJMLnN0cmluZygpLnV0ZjgoKS5kYXRhKCksIG9yaWdpblVSTC5zdHJpbmcoKS51dGY4KCku
ZGF0YSgpKTsKKyAgICByZXR1cm4gbWFrZVN0cmluZygiVW5zYWZlIEphdmFTY3JpcHQgYXR0ZW1w
dCB0byBhY2Nlc3MgZnJhbWUgd2l0aCBVUkwgIiwgdGFyZ2V0VVJMLnN0cmluZygpLAorICAgICAg
ICAgICAgICAgICAgICAgICIgZnJvbSBmcmFtZSB3aXRoIFVSTCAiLCBvcmlnaW5VUkwuc3RyaW5n
KCksICIuIERvbWFpbnMsIHByb3RvY29scyBhbmQgcG9ydHMgbXVzdCBtYXRjaC5cbiIpOwogfQog
CiB2b2lkIEpTRE9NV2luZG93QmFzZTo6cHJpbnRFcnJvck1lc3NhZ2UoY29uc3QgU3RyaW5nJiBt
ZXNzYWdlKSBjb25zdApJbmRleDogV2ViQ29yZS9iaW5kaW5ncy92OC9WOFByb3h5LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UHJveHkuY3BwCShyZXZpc2lvbiA2OTc2
NCkKKysrIFdlYkNvcmUvYmluZGluZ3MvdjgvVjhQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTc3LDcgKzc3LDcgQEAKICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAjaW5jbHVkZSA8
d3RmL1N0cmluZ0V4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi9VbnVzZWRQYXJhbS5oPgotI2luY2x1
ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdDb25jYXRl
bmF0ZS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTE5MSwxMSArMTkxLDggQEAgdm9p
ZCBWOFByb3h5OjpyZXBvcnRVbnNhZmVBY2Nlc3NUbyhGcmFtZQogCiAgICAgLy8gRklYTUU6IFRo
aXMgZXJyb3IgbWVzc2FnZSBzaG91bGQgY29udGFpbiBtb3JlIHNwZWNpZmljcyBvZiB3aHkgdGhl
IHNhbWUKICAgICAvLyBvcmlnaW4gY2hlY2sgaGFzIGZhaWxlZC4KLSAgICBTdHJpbmcgc3RyID0g
U3RyaW5nOjpmb3JtYXQoIlVuc2FmZSBKYXZhU2NyaXB0IGF0dGVtcHQgdG8gYWNjZXNzIGZyYW1l
ICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIndpdGggVVJMICVzIGZyb20gZnJh
bWUgd2l0aCBVUkwgJXMuICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkRvbWFp
bnMsIHByb3RvY29scyBhbmQgcG9ydHMgbXVzdCBtYXRjaC5cbiIsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHRhcmdldERvY3VtZW50LT51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0
YSgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2VEb2N1bWVudC0+dXJs
KCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgU3RyaW5nIHN0ciA9IG1ha2VTdHJpbmco
IlVuc2FmZSBKYXZhU2NyaXB0IGF0dGVtcHQgdG8gYWNjZXNzIGZyYW1lIHdpdGggVVJMICIsIHRh
cmdldERvY3VtZW50LT51cmwoKS5zdHJpbmcoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAiIGZyb20gZnJhbWUgd2l0aCBVUkwgIiwgc291cmNlRG9jdW1lbnQtPnVybCgpLnN0cmluZygp
LCAiLiBEb21haW5zLCBwcm90b2NvbHMgYW5kIHBvcnRzIG11c3QgbWF0Y2guXG4iKTsKIAogICAg
IC8vIEJ1aWxkIGEgY29uc29sZSBtZXNzYWdlIHdpdGggZmFrZSBzb3VyY2UgSUQgYW5kIGxpbmUg
bnVtYmVyLgogICAgIGNvbnN0IFN0cmluZyBrU291cmNlSUQgPSAiIjsKSW5kZXg6IFdlYkNvcmUv
ZG9tL0V4Y2VwdGlvbkJhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL0V4Y2VwdGlv
bkJhc2UuY3BwCShyZXZpc2lvbiA2OTc2NCkKKysrIFdlYkNvcmUvZG9tL0V4Y2VwdGlvbkJhc2Uu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw4IEBACiAjaW5jbHVkZSAiY29uZmlnLmgi
CiAjaW5jbHVkZSAiRXhjZXB0aW9uQmFzZS5oIgogCisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5n
Q29uY2F0ZW5hdGUuaD4KKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBFeGNlcHRpb25CYXNlOjpF
eGNlcHRpb25CYXNlKGNvbnN0IEV4Y2VwdGlvbkNvZGVEZXNjcmlwdGlvbiYgZGVzY3JpcHRpb24p
CkBAIC0zNyw5ICszOSw5IEBAIEV4Y2VwdGlvbkJhc2U6OkV4Y2VwdGlvbkJhc2UoY29uc3QgRXhj
ZXAKICAgICAsIG1fZGVzY3JpcHRpb24oZGVzY3JpcHRpb24uZGVzY3JpcHRpb24pCiB7CiAgICAg
aWYgKGRlc2NyaXB0aW9uLm5hbWUpCi0gICAgICAgIG1fbWVzc2FnZSA9IFN0cmluZzo6Zm9ybWF0
KCIlczogJXMgRXhjZXB0aW9uICVkIiwgZGVzY3JpcHRpb24ubmFtZSwgZGVzY3JpcHRpb24udHlw
ZU5hbWUsIGRlc2NyaXB0aW9uLmNvZGUpOworICAgICAgICBtX21lc3NhZ2UgPSBtYWtlU3RyaW5n
KGRlc2NyaXB0aW9uLm5hbWUsICI6ICIsIGRlc2NyaXB0aW9uLnR5cGVOYW1lLCAiIEV4Y2VwdGlv
biAiLCBTdHJpbmc6Om51bWJlcihkZXNjcmlwdGlvbi5jb2RlKSk7CiAgICAgZWxzZQotICAgICAg
ICBtX21lc3NhZ2UgPSBTdHJpbmc6OmZvcm1hdCgiJXMgRXhjZXB0aW9uICVkIiwgZGVzY3JpcHRp
b24udHlwZU5hbWUsIGRlc2NyaXB0aW9uLmNvZGUpOworICAgICAgICBtX21lc3NhZ2UgPSBtYWtl
U3RyaW5nKGRlc2NyaXB0aW9uLnR5cGVOYW1lLCAiIEV4Y2VwdGlvbiAiLCBTdHJpbmc6Om51bWJl
cihkZXNjcmlwdGlvbi5jb2RlKSk7CiB9CiAKIFN0cmluZyBFeGNlcHRpb25CYXNlOjp0b1N0cmlu
ZygpIGNvbnN0CkluZGV4OiBXZWJDb3JlL2RvbS9YTUxEb2N1bWVudFBhcnNlci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9kb20vWE1MRG9jdW1lbnRQYXJzZXIuY3BwCShyZXZpc2lvbiA2OTc2
NCkKKysrIFdlYkNvcmUvZG9tL1hNTERvY3VtZW50UGFyc2VyLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNTEsNyArNTEsNyBAQAogI2luY2x1ZGUgIlNjcmlwdFZhbHVlLmgiCiAjaW5jbHVkZSAiVGV4
dFJlc291cmNlRGVjb2Rlci5oIgogI2luY2x1ZGUgIlRyZWVEZXB0aExpbWl0LmgiCi0jaW5jbHVk
ZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVu
YXRlLmg+CiAjaW5jbHVkZSA8d3RmL1N0cmluZ0V4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi9UaHJl
YWRpbmcuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CkBAIC0xNTEsMTEgKzE1MSwxMSBAQCB2
b2lkIFhNTERvY3VtZW50UGFyc2VyOjpoYW5kbGVFcnJvcihFcnJvCiAgICAgaWYgKHR5cGUgPT0g
ZmF0YWwgfHwgKG1fZXJyb3JDb3VudCA8IG1heEVycm9ycyAmJiBtX2xhc3RFcnJvckxpbmUgIT0g
bGluZU51bWJlciAmJiBtX2xhc3RFcnJvckNvbHVtbiAhPSBjb2x1bW5OdW1iZXIpKSB7CiAgICAg
ICAgIHN3aXRjaCAodHlwZSkgewogICAgICAgICAgICAgY2FzZSB3YXJuaW5nOgotICAgICAgICAg
ICAgICAgIG1fZXJyb3JNZXNzYWdlcyArPSBTdHJpbmc6OmZvcm1hdCgid2FybmluZyBvbiBsaW5l
ICVkIGF0IGNvbHVtbiAlZDogJXMiLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIG0pOworICAg
ICAgICAgICAgICAgIG1fZXJyb3JNZXNzYWdlcyArPSBtYWtlU3RyaW5nKCJ3YXJuaW5nIG9uIGxp
bmUgIiwgU3RyaW5nOjpudW1iZXIobGluZU51bWJlciksICIgYXQgY29sdW1uICIsIFN0cmluZzo6
bnVtYmVyKGNvbHVtbk51bWJlciksICI6ICIsIG0pOwogICAgICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICAgICAgY2FzZSBmYXRhbDoKICAgICAgICAgICAgIGNhc2Ugbm9uRmF0YWw6Ci0gICAg
ICAgICAgICAgICAgbV9lcnJvck1lc3NhZ2VzICs9IFN0cmluZzo6Zm9ybWF0KCJlcnJvciBvbiBs
aW5lICVkIGF0IGNvbHVtbiAlZDogJXMiLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIG0pOwor
ICAgICAgICAgICAgICAgIG1fZXJyb3JNZXNzYWdlcyArPSBtYWtlU3RyaW5nKCJlcnJvciBvbiBs
aW5lICIsIFN0cmluZzo6bnVtYmVyKGxpbmVOdW1iZXIpLCAiIGF0IGNvbHVtbiAiLCBTdHJpbmc6
Om51bWJlcihjb2x1bW5OdW1iZXIpLCAiOiAiLCBtKTsKICAgICAgICAgfQogCiAgICAgICAgIG1f
bGFzdEVycm9yTGluZSA9IGxpbmVOdW1iZXI7CkluZGV4OiBXZWJDb3JlL2hpc3RvcnkvUGFnZUNh
Y2hlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2hpc3RvcnkvUGFnZUNhY2hlLmNwcAkocmV2
aXNpb24gNjk3NjQpCisrKyBXZWJDb3JlL2hpc3RvcnkvUGFnZUNhY2hlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNDcsNiArNDcsNyBAQAogI2luY2x1ZGUgIlN5c3RlbVRpbWUuaCIKICNpbmNsdWRl
IDx3dGYvQ3VycmVudFRpbWUuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisjaW5j
bHVkZSA8d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGUuaD4KIAogdXNpbmcgbmFtZXNwYWNlIHN0
ZDsKIApAQCAtNzYsNyArNzcsNyBAQCBzdGF0aWMgdm9pZCBwYWdlQ2FjaGVMb2coY29uc3QgU3Ry
aW5nJiBwCiAgICAgTE9HKFBhZ2VDYWNoZSwgIiVzJXMiLCBwcmVmaXgudXRmOCgpLmRhdGEoKSwg
bWVzc2FnZS51dGY4KCkuZGF0YSgpKTsKIH0KICAgICAKLSNkZWZpbmUgUENMT0coLi4uKSBwYWdl
Q2FjaGVMb2cocGFnZUNhY2hlTG9nUHJlZml4KGluZGVudExldmVsKSwgU3RyaW5nOjpmb3JtYXQo
X19WQV9BUkdTX18pKQorI2RlZmluZSBQQ0xPRyguLi4pIHBhZ2VDYWNoZUxvZyhwYWdlQ2FjaGVM
b2dQcmVmaXgoaW5kZW50TGV2ZWwpLCBtYWtlU3RyaW5nKF9fVkFfQVJHU19fKSkKICAgICAKIHN0
YXRpYyBib29sIGxvZ0NhbkNhY2hlRnJhbWVEZWNpc2lvbihGcmFtZSogZnJhbWUsIGludCBpbmRl
bnRMZXZlbCkKIHsKQEAgLTkwLDkgKzkxLDkgQEAgc3RhdGljIGJvb2wgbG9nQ2FuQ2FjaGVGcmFt
ZURlY2lzaW9uKEZyYQogICAgIFBDTE9HKCIrLS0tIik7CiAgICAgS1VSTCBuZXdVUkwgPSBmcmFt
ZS0+bG9hZGVyKCktPnByb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXIoKSA/IGZyYW1lLT5sb2FkZXIo
KS0+cHJvdmlzaW9uYWxEb2N1bWVudExvYWRlcigpLT51cmwoKSA6IEtVUkwoKTsKICAgICBpZiAo
IW5ld1VSTC5pc0VtcHR5KCkpCi0gICAgICAgIFBDTE9HKCIgRGV0ZXJtaW5pbmcgaWYgZnJhbWUg
Y2FuIGJlIGNhY2hlZCBuYXZpZ2F0aW5nIGZyb20gKCVzKSB0byAoJXMpOiIsIGN1cnJlbnRVUkwu
c3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgbmV3VVJMLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwor
ICAgICAgICBQQ0xPRygiIERldGVybWluaW5nIGlmIGZyYW1lIGNhbiBiZSBjYWNoZWQgbmF2aWdh
dGluZyBmcm9tICgiLCBjdXJyZW50VVJMLnN0cmluZygpLCAiKSB0byAoIiwgbmV3VVJMLnN0cmlu
ZygpLCAiKToiKTsKICAgICBlbHNlCi0gICAgICAgIFBDTE9HKCIgRGV0ZXJtaW5pbmcgaWYgc3Vi
ZnJhbWUgd2l0aCBVUkwgKCVzKSBjYW4gYmUgY2FjaGVkOiIsIGN1cnJlbnRVUkwuc3RyaW5nKCku
dXRmOCgpLmRhdGEoKSk7CisgICAgICAgIFBDTE9HKCIgRGV0ZXJtaW5pbmcgaWYgc3ViZnJhbWUg
d2l0aCBVUkwgKCIsIGN1cnJlbnRVUkwuc3RyaW5nKCksICIpIGNhbiBiZSBjYWNoZWQ6Iik7CiAg
ICAgCiAgICAgYm9vbCBjYW5ub3RDYWNoZSA9IGZhbHNlOwogICAgIApJbmRleDogV2ViQ29yZS9o
dG1sL0ZUUERpcmVjdG9yeURvY3VtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwv
RlRQRGlyZWN0b3J5RG9jdW1lbnQuY3BwCShyZXZpc2lvbiA2OTc2NCkKKysrIFdlYkNvcmUvaHRt
bC9GVFBEaXJlY3RvcnlEb2N1bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5LDYgKzM5LDcg
QEAKICNpbmNsdWRlICJUZXh0LmgiCiAKICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+Cisj
aW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGUuaD4KICNpbmNsdWRlIDx3dGYvQ3Vy
cmVudFRpbWUuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKQEAgLTI1Myw5ICsy
NTQsOSBAQCBzdGF0aWMgU3RyaW5nIHByb2Nlc3NGaWxlRGF0ZVN0cmluZyhjb25zCiAgICAgU3Ry
aW5nIGRhdGVTdHJpbmc7CiAKICAgICBpZiAoZmlsZVRpbWUudG1feWVhciA+IC0xKQotICAgICAg
ICBkYXRlU3RyaW5nID0gU3RyaW5nOjpmb3JtYXQoIiVzICVpLCAlaSIsIG1vbnRoc1ttb250aF0s
IGZpbGVUaW1lLnRtX21kYXksIGZpbGVUaW1lLnRtX3llYXIpOworICAgICAgICBkYXRlU3RyaW5n
ID0gbWFrZVN0cmluZyhtb250aHNbbW9udGhdLCAnICcsIFN0cmluZzo6bnVtYmVyKGZpbGVUaW1l
LnRtX21kYXkpLCAiLCAiLCBTdHJpbmc6Om51bWJlcihmaWxlVGltZS50bV95ZWFyKSk7CiAgICAg
ZWxzZQotICAgICAgICBkYXRlU3RyaW5nID0gU3RyaW5nOjpmb3JtYXQoIiVzICVpLCAlaSIsIG1v
bnRoc1ttb250aF0sIGZpbGVUaW1lLnRtX21kYXksIG5vdy50bV95ZWFyKTsKKyAgICAgICAgZGF0
ZVN0cmluZyA9IG1ha2VTdHJpbmcobW9udGhzW21vbnRoXSwgJyAnLCBTdHJpbmc6Om51bWJlcihm
aWxlVGltZS50bV9tZGF5KSwgIiwgIiwgU3RyaW5nOjpudW1iZXIobm93LnRtX3llYXIpKTsKIAog
ICAgIHJldHVybiBkYXRlU3RyaW5nICsgdGltZU9mRGF5OwogfQpJbmRleDogV2ViQ29yZS9pbnNw
ZWN0b3IvQ29kZUdlbmVyYXRvckluc3BlY3Rvci5wbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2lu
c3BlY3Rvci9Db2RlR2VuZXJhdG9ySW5zcGVjdG9yLnBtCShyZXZpc2lvbiA2OTc2NCkKKysrIFdl
YkNvcmUvaW5zcGVjdG9yL0NvZGVHZW5lcmF0b3JJbnNwZWN0b3IucG0JKHdvcmtpbmcgY29weSkK
QEAgLTMxNCw3ICszMTQsNyBAQCBzdWIgZ2VuZXJhdGVCYWNrZW5kRnVuY3Rpb24KICAgICBteSAk
ZG9tYWluQWNjZXNzb3IgPSAkdHlwZVRyYW5zZm9ybXskZG9tYWlufS0+eyJkb21haW5BY2Nlc3Nv
ciJ9OwogICAgICRiYWNrZW5kVHlwZXN7JGRvbWFpbn0gPSAxOwogICAgIHB1c2goQGZ1bmN0aW9u
LCAiICAgIGlmICghJGRvbWFpbkFjY2Vzc29yKSIpOwotICAgIHB1c2goQGZ1bmN0aW9uLCAiICAg
ICAgICBwcm90b2NvbEVycm9ycy0+cHVzaFN0cmluZyhTdHJpbmc6OmZvcm1hdChcIlByb3RvY29s
IEVycm9yOiAlcyBoYW5kbGVyIGlzIG5vdCBhdmFpbGFibGUuXCIsIFwiJGRvbWFpblwiKSk7Iik7
CisgICAgcHVzaChAZnVuY3Rpb24sICIgICAgICAgIHByb3RvY29sRXJyb3JzLT5wdXNoU3RyaW5n
KFwiUHJvdG9jb2wgRXJyb3I6ICRkb21haW4gaGFuZGxlciBpcyBub3QgYXZhaWxhYmxlLlwiKTsi
KTsKICAgICBwdXNoKEBmdW5jdGlvbiwgIiIpOwogCiAgICAgaWYgKHNjYWxhcihAaW5BcmdzKSkg
ewpAQCAtMzI0LDcgKzMyNCw3IEBAIHN1YiBnZW5lcmF0ZUJhY2tlbmRGdW5jdGlvbgogICAgICAg
ICBwdXNoKEBmdW5jdGlvbiwgIiIpOwogICAgICAgICBwdXNoKEBmdW5jdGlvbiwgIiAgICBSZWZQ
dHI8SW5zcGVjdG9yT2JqZWN0PiBhcmd1bWVudHNDb250YWluZXI7Iik7CiAgICAgICAgIHB1c2go
QGZ1bmN0aW9uLCAiICAgIGlmICghKGFyZ3VtZW50c0NvbnRhaW5lciA9IHJlcXVlc3RNZXNzYWdl
T2JqZWN0LT5nZXRPYmplY3QoXCJhcmd1bWVudHNcIikpKSB7Iik7Ci0gICAgICAgIHB1c2goQGZ1
bmN0aW9uLCAiICAgICAgICBwcm90b2NvbEVycm9ycy0+cHVzaFN0cmluZyhTdHJpbmc6OmZvcm1h
dChcIlByb3RvY29sIEVycm9yOiAnYXJndW1lbnRzJyBwcm9wZXJ0eSB3aXRoIHR5cGUgJ29iamVj
dCcgd2FzIG5vdCBmb3VuZC5cIikpOyIpOworICAgICAgICBwdXNoKEBmdW5jdGlvbiwgIiAgICAg
ICAgcHJvdG9jb2xFcnJvcnMtPnB1c2hTdHJpbmcoXCJQcm90b2NvbCBFcnJvcjogJ2FyZ3VtZW50
cycgcHJvcGVydHkgd2l0aCB0eXBlICdvYmplY3QnIHdhcyBub3QgZm91bmQuXCIpOyIpOwogICAg
ICAgICBwdXNoKEBmdW5jdGlvbiwgIiAgICB9IGVsc2UgeyIpOwogICAgICAgICBwdXNoKEBmdW5j
dGlvbiwgIiAgICAgICAgSW5zcGVjdG9yT2JqZWN0Ojpjb25zdF9pdGVyYXRvciBhcmd1bWVudHNF
bmRJdGVyYXRvciA9IGFyZ3VtZW50c0NvbnRhaW5lci0+ZW5kKCk7Iik7CiAKQEAgLTMzNywxMCAr
MzM3LDEwIEBAIHN1YiBnZW5lcmF0ZUJhY2tlbmRGdW5jdGlvbgogICAgICAgICAgICAgcHVzaChA
ZnVuY3Rpb24sICIiKTsKICAgICAgICAgICAgIHB1c2goQGZ1bmN0aW9uLCAiICAgICAgICBJbnNw
ZWN0b3JPYmplY3Q6OmNvbnN0X2l0ZXJhdG9yICR7bmFtZX1WYWx1ZUl0ZXJhdG9yID0gYXJndW1l
bnRzQ29udGFpbmVyLT5maW5kKFwiJG5hbWVcIik7Iik7CiAgICAgICAgICAgICBwdXNoKEBmdW5j
dGlvbiwgIiAgICAgICAgaWYgKCR7bmFtZX1WYWx1ZUl0ZXJhdG9yID09IGFyZ3VtZW50c0VuZEl0
ZXJhdG9yKSB7Iik7Ci0gICAgICAgICAgICBwdXNoKEBmdW5jdGlvbiwgIiAgICAgICAgICAgIHBy
b3RvY29sRXJyb3JzLT5wdXNoU3RyaW5nKFN0cmluZzo6Zm9ybWF0KFwiUHJvdG9jb2wgRXJyb3I6
IEFyZ3VtZW50ICclcycgd2l0aCB0eXBlICclcycgd2FzIG5vdCBmb3VuZC5cIiwgXCIkbmFtZVwi
LCBcIiRKU09OVHlwZVwiKSk7Iik7CisgICAgICAgICAgICBwdXNoKEBmdW5jdGlvbiwgIiAgICAg
ICAgICAgIHByb3RvY29sRXJyb3JzLT5wdXNoU3RyaW5nKFwiUHJvdG9jb2wgRXJyb3I6IEFyZ3Vt
ZW50ICckbmFtZScgd2l0aCB0eXBlICckSlNPTlR5cGUnIHdhcyBub3QgZm91bmQuXCIpOyIpOwog
ICAgICAgICAgICAgcHVzaChAZnVuY3Rpb24sICIgICAgICAgIH0gZWxzZSB7Iik7CiAgICAgICAg
ICAgICBwdXNoKEBmdW5jdGlvbiwgIiAgICAgICAgICAgIGlmICghJHtuYW1lfVZhbHVlSXRlcmF0
b3ItPnNlY29uZC0+YXMkSlNPTlR5cGUoJiRuYW1lKSkgeyIpOwotICAgICAgICAgICAgcHVzaChA
ZnVuY3Rpb24sICIgICAgICAgICAgICAgICAgcHJvdG9jb2xFcnJvcnMtPnB1c2hTdHJpbmcoU3Ry
aW5nOjpmb3JtYXQoXCJQcm90b2NvbCBFcnJvcjogQXJndW1lbnQgJyVzJyBoYXMgd3JvbmcgdHlw
ZS4gSXQgc2hvdWxkIGJlICclcycuXCIsIFwiJG5hbWVcIiwgXCIkSlNPTlR5cGVcIikpOyIpOwor
ICAgICAgICAgICAgcHVzaChAZnVuY3Rpb24sICIgICAgICAgICAgICAgICAgcHJvdG9jb2xFcnJv
cnMtPnB1c2hTdHJpbmcoXCJQcm90b2NvbCBFcnJvcjogQXJndW1lbnQgJyRuYW1lJyBoYXMgd3Jv
bmcgdHlwZS4gSXQgc2hvdWxkIGJlICckSlNPTlR5cGUnLlwiKTsiKTsKICAgICAgICAgICAgIHB1
c2goQGZ1bmN0aW9uLCAiICAgICAgICAgICAgfSIpOwogICAgICAgICAgICAgcHVzaChAZnVuY3Rp
b24sICIgICAgICAgIH0iKTsKICAgICAgICAgfQpAQCAtNDU0LDcgKzQ1NCw3IEBAICRtYXBFbnRy
aWVzCiAKICAgICBIYXNoTWFwPFN0cmluZywgQ2FsbEhhbmRsZXI+OjppdGVyYXRvciBpdCA9IGRp
c3BhdGNoTWFwLmZpbmQoY29tbWFuZCk7CiAgICAgaWYgKGl0ID09IGRpc3BhdGNoTWFwLmVuZCgp
KSB7Ci0gICAgICAgIHJlcG9ydFByb3RvY29sRXJyb3IoY2FsbElkLCBTdHJpbmc6OmZvcm1hdCgi
UHJvdG9jb2wgRXJyb3I6IEludmFsaWQgY29tbWFuZCB3YXMgcmVjZWl2ZWQuICclcycgd2Fzbid0
IGZvdW5kLiIsIGNvbW1hbmQudXRmOCgpLmRhdGEoKSkpOworICAgICAgICByZXBvcnRQcm90b2Nv
bEVycm9yKGNhbGxJZCwgbWFrZVN0cmluZygiUHJvdG9jb2wgRXJyb3I6IEludmFsaWQgY29tbWFu
ZCB3YXMgcmVjZWl2ZWQuICciLCBjb21tYW5kLCAiJyB3YXNuJ3QgZm91bmQuIikpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCkBAIC02MTQsNyArNjE0LDcgQEAgc3ViIGdlbmVyYXRlU291cmNl
CiAgICAgbXkgQHNvdXJjZUNvbnRlbnQgPSBzcGxpdCgiXHIiLCAkbGljZW5zZVRlbXBsYXRlKTsK
ICAgICBwdXNoKEBzb3VyY2VDb250ZW50LCAiXG4jaW5jbHVkZSBcImNvbmZpZy5oXCIiKTsKICAg
ICBwdXNoKEBzb3VyY2VDb250ZW50LCAiI2luY2x1ZGUgXCIkY2xhc3NOYW1lLmhcIiIpOwotICAg
IHB1c2goQHNvdXJjZUNvbnRlbnQsICIjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPiIpOwor
ICAgIHB1c2goQHNvdXJjZUNvbnRlbnQsICIjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQ29uY2F0
ZW5hdGUuaD4iKTsKICAgICBwdXNoKEBzb3VyY2VDb250ZW50LCAiIik7CiAgICAgcHVzaChAc291
cmNlQ29udGVudCwgIiNpZiBFTkFCTEUoSU5TUEVDVE9SKSIpOwogICAgIHB1c2goQHNvdXJjZUNv
bnRlbnQsICIiKTsKSW5kZXg6IFdlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIu
Y3BwCShyZXZpc2lvbiA2OTc2NCkKKysrIFdlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRy
b2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05Miw3ICs5Miw3IEBACiAjaW5jbHVkZSAiVGV4
dEVuY29kaW5nLmgiCiAjaW5jbHVkZSAiVGV4dEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiV2luZG93
RmVhdHVyZXMuaCIKLSNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisjaW5jbHVkZSA8d3Rm
L3RleHQvU3RyaW5nQ29uY2F0ZW5hdGUuaD4KICNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4K
ICNpbmNsdWRlIDx3dGYvTGlzdEhhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5o
PgpAQCAtMTA2Nyw5ICsxMDY3LDcgQEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpkaWRSZWNl
aXZlUmVzcAogICAgICAgICAgICAgcmVzb3VyY2UtPnVwZGF0ZVNjcmlwdE9iamVjdChtX2Zyb250
ZW5kLmdldCgpKTsKICAgICB9CiAgICAgaWYgKHJlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCkgPj0g
NDAwKSB7Ci0gICAgICAgIC8vIFRoZSB1Z2x5IGNvZGUgYmVsb3cgaXMgZHVlIHRvIHRoYXQgU3Ry
aW5nOjpmb3JtYXQoKSBpcyBub3QgdXRmOC1zYWZlIGF0IHRoZSBtb21lbnQuCi0gICAgICAgIFN0
cmluZyBtZXNzYWdlID0gU3RyaW5nOjpmb3JtYXQoIkZhaWxlZCB0byBsb2FkIHJlc291cmNlOiB0
aGUgc2VydmVyIHJlc3BvbmRlZCB3aXRoIGEgc3RhdHVzIG9mICV1ICgiLCByZXNwb25zZS5odHRw
U3RhdHVzQ29kZSgpKSArIHJlc3BvbnNlLmh0dHBTdGF0dXNUZXh0KCkgKyAiKSI7Ci0KKyAgICAg
ICAgU3RyaW5nIG1lc3NhZ2UgPSBtYWtlU3RyaW5nKCJGYWlsZWQgdG8gbG9hZCByZXNvdXJjZTog
dGhlIHNlcnZlciByZXNwb25kZWQgd2l0aCBhIHN0YXR1cyBvZiAiLCBTdHJpbmc6Om51bWJlcihy
ZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpKSwgIiAoIiwgcmVzcG9uc2UuaHR0cFN0YXR1c1RleHQo
KSwgJyknKTsKICAgICAgICAgYWRkTWVzc2FnZVRvQ29uc29sZShPdGhlck1lc3NhZ2VTb3VyY2Us
IExvZ01lc3NhZ2VUeXBlLCBFcnJvck1lc3NhZ2VMZXZlbCwgbWVzc2FnZSwgMCwgcmVzcG9uc2Uu
dXJsKCkuc3RyaW5nKCkpOwogICAgIH0KIH0KQEAgLTIwMzIsNyArMjAzMCw3IEBAIHZvaWQgSW5z
cGVjdG9yQ29udHJvbGxlcjo6b3BlbkluSW5zcGVjdGUKIAogdm9pZCBJbnNwZWN0b3JDb250cm9s
bGVyOjpjb3VudChjb25zdCBTdHJpbmcmIHRpdGxlLCB1bnNpZ25lZCBsaW5lTnVtYmVyLCBjb25z
dCBTdHJpbmcmIHNvdXJjZUlEKQogewotICAgIFN0cmluZyBpZGVudGlmaWVyID0gdGl0bGUgKyBT
dHJpbmc6OmZvcm1hdCgiQCVzOiVkIiwgc291cmNlSUQudXRmOCgpLmRhdGEoKSwgbGluZU51bWJl
cik7CisgICAgU3RyaW5nIGlkZW50aWZpZXIgPSBtYWtlU3RyaW5nKHRpdGxlLCAnQCcsIHNvdXJj
ZUlELCAnOicsIFN0cmluZzo6bnVtYmVyKGxpbmVOdW1iZXIpKTsKICAgICBIYXNoTWFwPFN0cmlu
ZywgdW5zaWduZWQ+OjppdGVyYXRvciBpdCA9IG1fY291bnRzLmZpbmQoaWRlbnRpZmllcik7CiAg
ICAgaW50IGNvdW50OwogICAgIGlmIChpdCA9PSBtX2NvdW50cy5lbmQoKSkKQEAgLTIwNDQsNyAr
MjA0Miw3IEBAIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6Y291bnQoY29uc3QgU3QKIAogICAg
IG1fY291bnRzLmFkZChpZGVudGlmaWVyLCBjb3VudCk7CiAKLSAgICBTdHJpbmcgbWVzc2FnZSA9
IFN0cmluZzo6Zm9ybWF0KCIlczogJWQiLCB0aXRsZS51dGY4KCkuZGF0YSgpLCBjb3VudCk7Cisg
ICAgU3RyaW5nIG1lc3NhZ2UgPSBtYWtlU3RyaW5nKHRpdGxlLCAiOiAiLCBTdHJpbmc6Om51bWJl
cihjb3VudCkpOwogICAgIGFkZE1lc3NhZ2VUb0NvbnNvbGUoSlNNZXNzYWdlU291cmNlLCBMb2dN
ZXNzYWdlVHlwZSwgTG9nTWVzc2FnZUxldmVsLCBtZXNzYWdlLCBsaW5lTnVtYmVyLCBzb3VyY2VJ
RCk7CiB9CiAKSW5kZXg6IFdlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAJKHJl
dmlzaW9uIDY5NzY0KQorKysgV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC03Nyw2ICs3Nyw3IEBACiAjaW5jbHVkZSAibWFya3VwLmgiCiAK
ICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5n
Q29uY2F0ZW5hdGUuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9M
aXN0SGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KQEAgLTExOTAsNyArMTE5MSw3
IEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OnJlbW92ZUJyZWFrcG9pbnQKIAogU3RyaW5nIElu
c3BlY3RvckRPTUFnZW50OjpjcmVhdGVCcmVha3BvaW50SWQobG9uZyBub2RlSWQsIGxvbmcgdHlw
ZSkKIHsKLSAgICByZXR1cm4gU3RyaW5nOjpmb3JtYXQoImRvbTolbGQ6JWxkIiwgbm9kZUlkLCB0
eXBlKTsKKyAgICByZXR1cm4gbWFrZVN0cmluZygiZG9tOiIsIFN0cmluZzo6bnVtYmVyKG5vZGVJ
ZCksICc6JywgU3RyaW5nOjpudW1iZXIodHlwZSkpOwogfQogCiB2b2lkIEluc3BlY3RvckRPTUFn
ZW50OjpnZXRTdHlsZXMobG9uZyBub2RlSWQsIGJvb2wgYXV0aG9yT25seSwgUmVmUHRyPEluc3Bl
Y3RvclZhbHVlPiogc3R5bGVzKQpJbmRleDogV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGVi
dWdnZXJBZ2VudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
RGVidWdnZXJBZ2VudC5jcHAJKHJldmlzaW9uIDY5NzY0KQorKysgV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4LDEzICszOCwx
MyBAQAogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAjaW5jbHVkZSAiU2NyaXB0RGVidWdT
ZXJ2ZXIuaCIKICNpbmNsdWRlIDx3dGYvTUQ1Lmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmlu
Zy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlLmg+CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogc3RhdGljIFN0cmluZyBmb3JtYXRCcmVha3BvaW50SWQoY29uc3QgU3Ry
aW5nJiBzb3VyY2VJRCwgdW5zaWduZWQgbGluZU51bWJlcikKIHsKLSAgICByZXR1cm4gU3RyaW5n
Ojpmb3JtYXQoIiVzOiVkIiwgc291cmNlSUQudXRmOCgpLmRhdGEoKSwgbGluZU51bWJlcik7Cisg
ICAgcmV0dXJuIG1ha2VTdHJpbmcoc291cmNlSUQsICc6JywgU3RyaW5nOjpudW1iZXIobGluZU51
bWJlcikpOwogfQogCiBQYXNzT3duUHRyPEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ+IEluc3BlY3Rv
ckRlYnVnZ2VyQWdlbnQ6OmNyZWF0ZShJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3JDb250
cm9sbGVyLCBJbnNwZWN0b3JGcm9udGVuZCogZnJvbnRlbmQpCkluZGV4OiBXZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JQcm9maWxlckFnZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JQcm9maWxlckFnZW50LmNwcAkocmV2aXNpb24gNjk3NjQpCisrKyBX
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQcm9maWxlckFnZW50LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNDMsNyArNDMsNyBAQAogI2luY2x1ZGUgIlNjcmlwdFByb2ZpbGUuaCIKICNpbmNsdWRl
ICJTY3JpcHRQcm9maWxlci5oIgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KLSNpbmNsdWRlIDx3
dGYvdGV4dC9DU3RyaW5nLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGUu
aD4KIAogI2lmIFVTRShKU0MpCiAjaW5jbHVkZSAiSlNET01XaW5kb3cuaCIKQEAgLTg5LDEzICs4
OSwxMyBAQCB2b2lkIEluc3BlY3RvclByb2ZpbGVyQWdlbnQ6OmFkZFByb2ZpbGVGCiB7CiAgICAg
UmVmUHRyPFNjcmlwdFByb2ZpbGU+IHByb2ZpbGUgPSBwcnBQcm9maWxlOwogICAgIFN0cmluZyB0
aXRsZSA9IHByb2ZpbGUtPnRpdGxlKCk7Ci0gICAgU3RyaW5nIG1lc3NhZ2UgPSBTdHJpbmc6OmZv
cm1hdCgiUHJvZmlsZSBcIndlYmtpdC1wcm9maWxlOi8vJXMvJXMjJWRcIiBmaW5pc2hlZC4iLCBD
UFVQcm9maWxlVHlwZSwgZW5jb2RlV2l0aFVSTEVzY2FwZVNlcXVlbmNlcyh0aXRsZSkudXRmOCgp
LmRhdGEoKSwgcHJvZmlsZS0+dWlkKCkpOworICAgIFN0cmluZyBtZXNzYWdlID0gbWFrZVN0cmlu
ZygiUHJvZmlsZSBcIndlYmtpdC1wcm9maWxlOi8vIiwgQ1BVUHJvZmlsZVR5cGUsICcvJywgZW5j
b2RlV2l0aFVSTEVzY2FwZVNlcXVlbmNlcyh0aXRsZSksICcjJywgU3RyaW5nOjpudW1iZXIocHJv
ZmlsZS0+dWlkKCkpLCAiXCIgZmluaXNoZWQuIik7CiAgICAgbV9pbnNwZWN0b3JDb250cm9sbGVy
LT5hZGRNZXNzYWdlVG9Db25zb2xlKEpTTWVzc2FnZVNvdXJjZSwgTG9nTWVzc2FnZVR5cGUsIExv
Z01lc3NhZ2VMZXZlbCwgbWVzc2FnZSwgbGluZU51bWJlciwgc291cmNlVVJMKTsKIH0KIAogdm9p
ZCBJbnNwZWN0b3JQcm9maWxlckFnZW50OjphZGRTdGFydFByb2ZpbGluZ01lc3NhZ2VUb0NvbnNv
bGUoY29uc3QgU3RyaW5nJiB0aXRsZSwgdW5zaWduZWQgbGluZU51bWJlciwgY29uc3QgU3RyaW5n
JiBzb3VyY2VVUkwpCiB7Ci0gICAgU3RyaW5nIG1lc3NhZ2UgPSBTdHJpbmc6OmZvcm1hdCgiUHJv
ZmlsZSBcIndlYmtpdC1wcm9maWxlOi8vJXMvJXMjMFwiIHN0YXJ0ZWQuIiwgQ1BVUHJvZmlsZVR5
cGUsIGVuY29kZVdpdGhVUkxFc2NhcGVTZXF1ZW5jZXModGl0bGUpLnV0ZjgoKS5kYXRhKCkpOwor
ICAgIFN0cmluZyBtZXNzYWdlID0gbWFrZVN0cmluZygiUHJvZmlsZSBcIndlYmtpdC1wcm9maWxl
Oi8vIiwgQ1BVUHJvZmlsZVR5cGUsICcvJywgZW5jb2RlV2l0aFVSTEVzY2FwZVNlcXVlbmNlcyh0
aXRsZSksICIjMCBcIiBzdGFydGVkLiIpOwogICAgIG1faW5zcGVjdG9yQ29udHJvbGxlci0+YWRk
TWVzc2FnZVRvQ29uc29sZShKU01lc3NhZ2VTb3VyY2UsIExvZ01lc3NhZ2VUeXBlLCBMb2dNZXNz
YWdlTGV2ZWwsIG1lc3NhZ2UsIGxpbmVOdW1iZXIsIHNvdXJjZVVSTCk7CiB9CiAKQEAgLTE0Myw3
ICsxNDMsNyBAQCBTdHJpbmcgSW5zcGVjdG9yUHJvZmlsZXJBZ2VudDo6Z2V0Q3VycmVuCiAgICAg
aWYgKGluY3JlbWVudFByb2ZpbGVOdW1iZXIpCiAgICAgICAgIG1fY3VycmVudFVzZXJJbml0aWF0
ZWRQcm9maWxlTnVtYmVyID0gbV9uZXh0VXNlckluaXRpYXRlZFByb2ZpbGVOdW1iZXIrKzsKIAot
ICAgIHJldHVybiBTdHJpbmc6OmZvcm1hdCgiJXMuJWQiLCBVc2VySW5pdGlhdGVkUHJvZmlsZU5h
bWUsIG1fY3VycmVudFVzZXJJbml0aWF0ZWRQcm9maWxlTnVtYmVyKTsKKyAgICByZXR1cm4gbWFr
ZVN0cmluZyhVc2VySW5pdGlhdGVkUHJvZmlsZU5hbWUsICcuJywgU3RyaW5nOjpudW1iZXIobV9j
dXJyZW50VXNlckluaXRpYXRlZFByb2ZpbGVOdW1iZXIpKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JQ
cm9maWxlckFnZW50OjpnZXRQcm9maWxlSGVhZGVycyhSZWZQdHI8SW5zcGVjdG9yQXJyYXk+KiBo
ZWFkZXJzKQpAQCAtMjMyLDcgKzIzMiw5IEBAIHZvaWQgSW5zcGVjdG9yUHJvZmlsZXJBZ2VudDo6
c3RvcFVzZXJJbmkKIAogdm9pZCBJbnNwZWN0b3JQcm9maWxlckFnZW50Ojp0YWtlSGVhcFNuYXBz
aG90KCkKIHsKLSAgICBTdHJpbmcgdGl0bGUgPSBTdHJpbmc6OmZvcm1hdCgiJXMuJWQiLCBVc2Vy
SW5pdGlhdGVkUHJvZmlsZU5hbWUsIG1fbmV4dFVzZXJJbml0aWF0ZWRIZWFwU25hcHNob3ROdW1i
ZXIrKyk7CisgICAgU3RyaW5nIHRpdGxlID0gbWFrZVN0cmluZyhVc2VySW5pdGlhdGVkUHJvZmls
ZU5hbWUsICcuJywgU3RyaW5nOjpudW1iZXIobV9uZXh0VXNlckluaXRpYXRlZEhlYXBTbmFwc2hv
dE51bWJlcikpOworICAgICsrbV9uZXh0VXNlckluaXRpYXRlZEhlYXBTbmFwc2hvdE51bWJlcjsK
KwogICAgIFJlZlB0cjxTY3JpcHRIZWFwU25hcHNob3Q+IHNuYXBzaG90ID0gU2NyaXB0UHJvZmls
ZXI6OnRha2VIZWFwU25hcHNob3QodGl0bGUpOwogICAgIGlmIChzbmFwc2hvdCkgewogICAgICAg
ICBtX3NuYXBzaG90cy5hZGQoc25hcHNob3QtPnVpZCgpLCBzbmFwc2hvdCk7CkluZGV4OiBXZWJD
b3JlL2xvYWRlci9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9sb2FkZXIvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwCShyZXZpc2lvbiA2OTc2NCkKKysrIFdl
YkNvcmUvbG9hZGVyL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NDQsNyArNDQsNyBAQAogI2luY2x1ZGUgIlBpbmdMb2FkZXIuaCIKICNpbmNsdWRlICJTZWN1cml0
eU9yaWdpbi5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCi0jaW5jbHVkZSA8d3RmL3RleHQvQ1N0
cmluZy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlLmg+CiAKICNkZWZp
bmUgUFJFTE9BRF9ERUJVRyAwCiAKQEAgLTI4OSwxMiArMjg5LDggQEAgdm9pZCBDYWNoZWRSZXNv
dXJjZUxvYWRlcjo6cHJpbnRBY2Nlc3NEZQogICAgICAgICByZXR1cm47CiAKICAgICBTdHJpbmcg
bWVzc2FnZSA9IG1fZG9jLT51cmwoKS5pc051bGwoKSA/Ci0gICAgICAgIFN0cmluZzo6Zm9ybWF0
KCJVbnNhZmUgYXR0ZW1wdCB0byBsb2FkIFVSTCAlcy4iLAotICAgICAgICAgICAgICAgICAgICAg
ICB1cmwuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSkgOgotICAgICAgICBTdHJpbmc6OmZvcm1hdCgi
VW5zYWZlIGF0dGVtcHQgdG8gbG9hZCBVUkwgJXMgZnJvbSBmcmFtZSB3aXRoIFVSTCAlcy4gIgot
ICAgICAgICAgICAgICAgICAgICAgICAiRG9tYWlucywgcHJvdG9jb2xzIGFuZCBwb3J0cyBtdXN0
IG1hdGNoLlxuIiwKLSAgICAgICAgICAgICAgICAgICAgICAgdXJsLnN0cmluZygpLnV0ZjgoKS5k
YXRhKCksCi0gICAgICAgICAgICAgICAgICAgICAgIG1fZG9jLT51cmwoKS5zdHJpbmcoKS51dGY4
KCkuZGF0YSgpKTsKKyAgICAgICAgbWFrZVN0cmluZygiVW5zYWZlIGF0dGVtcHQgdG8gbG9hZCBV
UkwgIiwgdXJsLnN0cmluZygpLCAnLicpIDoKKyAgICAgICAgbWFrZVN0cmluZygiVW5zYWZlIGF0
dGVtcHQgdG8gbG9hZCBVUkwgIiwgdXJsLnN0cmluZygpLCAiIGZyb20gZnJhbWUgd2l0aCBVUkwg
IiwgbV9kb2MtPnVybCgpLnN0cmluZygpLCAiLiBEb21haW5zLCBwcm90b2NvbHMgYW5kIHBvcnRz
IG11c3QgbWF0Y2guXG4iKTsKIAogICAgIC8vIEZJWE1FOiBwcm92aWRlIGEgcmVhbCBsaW5lIG51
bWJlciBhbmQgc291cmNlIFVSTC4KICAgICBmcmFtZSgpLT5kb21XaW5kb3coKS0+Y29uc29sZSgp
LT5hZGRNZXNzYWdlKE90aGVyTWVzc2FnZVNvdXJjZSwgTG9nTWVzc2FnZVR5cGUsIEVycm9yTWVz
c2FnZUxldmVsLCBtZXNzYWdlLCAxLCBTdHJpbmcoKSk7CkluZGV4OiBXZWJDb3JlL2xvYWRlci9G
cmFtZUxvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIu
Y3BwCShyZXZpc2lvbiA2OTc2NCkKKysrIFdlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTAwLDYgKzEwMCw3IEBACiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRU
aW1lLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0
L0NTdHJpbmcuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZS5oPgogCiAj
aWYgRU5BQkxFKFNIQVJFRF9XT1JLRVJTKQogI2luY2x1ZGUgIlNoYXJlZFdvcmtlclJlcG9zaXRv
cnkuaCIKQEAgLTEwMTYsOCArMTAxNyw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmNoZWNrSWZEaXNw
bGF5SW5zZWN1cmUKICAgICBpZiAoIWlzTWl4ZWRDb250ZW50KGNvbnRleHQsIHVybCkpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIFN0cmluZyBtZXNzYWdlID0gU3RyaW5nOjpmb3JtYXQoIlRoZSBw
YWdlIGF0ICVzIGRpc3BsYXllZCBpbnNlY3VyZSBjb250ZW50IGZyb20gJXMuXG4iLAotICAgICAg
ICBtX1VSTC5zdHJpbmcoKS51dGY4KCkuZGF0YSgpLCB1cmwuc3RyaW5nKCkudXRmOCgpLmRhdGEo
KSk7CisgICAgU3RyaW5nIG1lc3NhZ2UgPSBtYWtlU3RyaW5nKCJUaGUgcGFnZSBhdCAiLCBtX1VS
TC5zdHJpbmcoKSwgIiBkaXNwbGF5ZWQgaW5zZWN1cmUgY29udGVudCBmcm9tICIsIHVybC5zdHJp
bmcoKSwgIi5cbiIpOwogICAgIG1fZnJhbWUtPmRvbVdpbmRvdygpLT5jb25zb2xlKCktPmFkZE1l
c3NhZ2UoSFRNTE1lc3NhZ2VTb3VyY2UsIExvZ01lc3NhZ2VUeXBlLCBXYXJuaW5nTWVzc2FnZUxl
dmVsLCBtZXNzYWdlLCAxLCBTdHJpbmcoKSk7CiAKICAgICBtX2NsaWVudC0+ZGlkRGlzcGxheUlu
c2VjdXJlQ29udGVudCgpOwpAQCAtMTAyOCw4ICsxMDI4LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6
Y2hlY2tJZlJ1bkluc2VjdXJlQ29udAogICAgIGlmICghaXNNaXhlZENvbnRlbnQoY29udGV4dCwg
dXJsKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgU3RyaW5nIG1lc3NhZ2UgPSBTdHJpbmc6OmZv
cm1hdCgiVGhlIHBhZ2UgYXQgJXMgcmFuIGluc2VjdXJlIGNvbnRlbnQgZnJvbSAlcy5cbiIsCi0g
ICAgICAgIG1fVVJMLnN0cmluZygpLnV0ZjgoKS5kYXRhKCksIHVybC5zdHJpbmcoKS51dGY4KCku
ZGF0YSgpKTsKKyAgICBTdHJpbmcgbWVzc2FnZSA9IG1ha2VTdHJpbmcoIlRoZSBwYWdlIGF0ICIs
IG1fVVJMLnN0cmluZygpLCAiIHJhbiBpbnNlY3VyZSBjb250ZW50IGZyb20gIiwgdXJsLnN0cmlu
ZygpLCAiLlxuIik7CiAgICAgbV9mcmFtZS0+ZG9tV2luZG93KCktPmNvbnNvbGUoKS0+YWRkTWVz
c2FnZShIVE1MTWVzc2FnZVNvdXJjZSwgTG9nTWVzc2FnZVR5cGUsIFdhcm5pbmdNZXNzYWdlTGV2
ZWwsIG1lc3NhZ2UsIDEsIFN0cmluZygpKTsKIAogICAgIG1fY2xpZW50LT5kaWRSdW5JbnNlY3Vy
ZUNvbnRlbnQoY29udGV4dCk7CkBAIC0xNjY2LDggKzE2NjUsOCBAQCBib29sIEZyYW1lTG9hZGVy
OjpzaG91bGRBbGxvd05hdmlnYXRpb24oCiAgICAgaWYgKHNldHRpbmdzICYmICFzZXR0aW5ncy0+
cHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpKSB7CiAgICAgICAgIERvY3VtZW50KiB0YXJnZXREb2N1
bWVudCA9IHRhcmdldEZyYW1lLT5kb2N1bWVudCgpOwogICAgICAgICAvLyBGSVhNRTogdGhpcyBl
cnJvciBtZXNzYWdlIHNob3VsZCBjb250YWluIG1vcmUgc3BlY2lmaWNzIG9mIHdoeSB0aGUgbmF2
aWdhdGlvbiBjaGFuZ2UgaXMgbm90IGFsbG93ZWQuCi0gICAgICAgIFN0cmluZyBtZXNzYWdlID0g
U3RyaW5nOjpmb3JtYXQoIlVuc2FmZSBKYXZhU2NyaXB0IGF0dGVtcHQgdG8gaW5pdGlhdGUgYSBu
YXZpZ2F0aW9uIGNoYW5nZSBmb3IgZnJhbWUgd2l0aCBVUkwgJXMgZnJvbSBmcmFtZSB3aXRoIFVS
TCAlcy5cbiIsCi0gICAgICAgICAgICB0YXJnZXREb2N1bWVudC0+dXJsKCkuc3RyaW5nKCkudXRm
OCgpLmRhdGEoKSwgYWN0aXZlRG9jdW1lbnQtPnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkp
OworICAgICAgICBTdHJpbmcgbWVzc2FnZSA9IG1ha2VTdHJpbmcoIlVuc2FmZSBKYXZhU2NyaXB0
IGF0dGVtcHQgdG8gaW5pdGlhdGUgYSBuYXZpZ2F0aW9uIGNoYW5nZSBmb3IgZnJhbWUgd2l0aCBV
UkwgIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldERvY3VtZW50
LT51cmwoKS5zdHJpbmcoKSwgIiBmcm9tIGZyYW1lIHdpdGggVVJMICIsIGFjdGl2ZURvY3VtZW50
LT51cmwoKS5zdHJpbmcoKSwgIi5cbiIpOwogCiAgICAgICAgIC8vIEZJWE1FOiBzaG91bGQgd2Ug
cHJpbnQgdG8gdGhlIGNvbnNvbGUgb2YgdGhlIGFjdGl2ZUZyYW1lIGFzIHdlbGw/CiAgICAgICAg
IHRhcmdldEZyYW1lLT5kb21XaW5kb3coKS0+Y29uc29sZSgpLT5hZGRNZXNzYWdlKEpTTWVzc2Fn
ZVNvdXJjZSwgTG9nTWVzc2FnZVR5cGUsIEVycm9yTWVzc2FnZUxldmVsLCBtZXNzYWdlLCAxLCBT
dHJpbmcoKSk7CkluZGV4OiBXZWJDb3JlL2xvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hp
dmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2Vi
QXJjaGl2ZS5jcHAJKHJldmlzaW9uIDY5NzY0KQorKysgV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9j
Zi9MZWdhY3lXZWJBcmNoaXZlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDcsNiArNDcsNyBAQAog
I2luY2x1ZGUgIlNlbGVjdGlvbkNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXIu
aCIKICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3Ry
aW5nQ29uY2F0ZW5hdGUuaD4KICNpbmNsdWRlIDx3dGYvTGlzdEhhc2hTZXQuaD4KICNpbmNsdWRl
IDx3dGYvUmV0YWluUHRyLmg+CiAKQEAgLTU3Myw4ICs1NzQsOCBAQCBQYXNzUmVmUHRyPExlZ2Fj
eVdlYkFyY2hpdmU+IExlZ2FjeVdlYkFyCiAgICAgICAgIAogICAgIC8vIFdyYXAgdGhlIGZyYW1l
c2V0IGRvY3VtZW50IGluIGFuIGlmcmFtZSBzbyBpdCBjYW4gYmUgcGFzdGVkIGludG8KICAgICAv
LyBhbm90aGVyIGRvY3VtZW50ICh3aGljaCB3aWxsIGhhdmUgYSBib2R5IG9yIGZyYW1lc2V0IG9m
IGl0cyBvd24pLiAKLSAgICBTdHJpbmcgaWZyYW1lTWFya3VwID0gU3RyaW5nOjpmb3JtYXQoIjxp
ZnJhbWUgZnJhbWVib3JkZXI9XCJub1wiIG1hcmdpbndpZHRoPVwiMFwiIG1hcmdpbmhlaWdodD1c
IjBcIiB3aWR0aD1cIjk4JSVcIiBoZWlnaHQ9XCI5OCUlXCIgc3JjPVwiJXNcIj48L2lmcmFtZT4i
LCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJhbWUtPmxvYWRl
cigpLT5kb2N1bWVudExvYWRlcigpLT5yZXNwb25zZSgpLnVybCgpLnN0cmluZygpLnV0ZjgoKS5k
YXRhKCkpOworICAgIFN0cmluZyBpZnJhbWVNYXJrdXAgPSBtYWtlU3RyaW5nKCI8aWZyYW1lIGZy
YW1lYm9yZGVyPVwibm9cIiBtYXJnaW53aWR0aD1cIjBcIiBtYXJnaW5oZWlnaHQ9XCIwXCIgd2lk
dGg9XCI5OCUlXCIgaGVpZ2h0PVwiOTglJVwiIHNyYz1cIiIsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZnJhbWUtPmxvYWRlcigpLT5kb2N1bWVudExvYWRlcigpLT5yZXNw
b25zZSgpLnVybCgpLnN0cmluZygpLCAiXCI+PC9pZnJhbWU+Iik7CiAgICAgUmVmUHRyPEFyY2hp
dmVSZXNvdXJjZT4gaWZyYW1lUmVzb3VyY2UgPSBBcmNoaXZlUmVzb3VyY2U6OmNyZWF0ZSh1dGY4
QnVmZmVyKGlmcmFtZU1hcmt1cCksIGJsYW5rVVJMKCksICJ0ZXh0L2h0bWwiLCAiVVRGLTgiLCBT
dHJpbmcoKSk7CiAKICAgICBWZWN0b3I8UGFzc1JlZlB0cjxBcmNoaXZlUmVzb3VyY2U+ID4gc3Vi
cmVzb3VyY2VzOwpJbmRleDogV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAJKHJldmlzaW9uIDY5NzY0KQorKysgV2ViQ29y
ZS9wYWdlL0RPTVdpbmRvdy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg2LDcgKzg2LDcgQEAKICNp
bmNsdWRlIDxhbGdvcml0aG0+CiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CiAjaW5jbHVk
ZSA8d3RmL01hdGhFeHRyYXMuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisjaW5j
bHVkZSA8d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGUuaD4KIAogI2lmIEVOQUJMRShGSUxFX1NZ
U1RFTSkKICNpbmNsdWRlICJBc3luY0ZpbGVTeXN0ZW0uaCIKQEAgLTc5OCw4ICs3OTgsOCBAQCB2
b2lkIERPTVdpbmRvdzo6cG9zdE1lc3NhZ2VUaW1lckZpcmVkKFBvCiAgICAgaWYgKHRpbWVyLT50
YXJnZXRPcmlnaW4oKSkgewogICAgICAgICAvLyBDaGVjayB0YXJnZXQgb3JpZ2luIG5vdyBzaW5j
ZSB0aGUgdGFyZ2V0IGRvY3VtZW50IG1heSBoYXZlIGNoYW5nZWQgc2luY2UgdGhlIHNpbWVyIHdh
cyBzY2hlZHVsZWQuCiAgICAgICAgIGlmICghdGltZXItPnRhcmdldE9yaWdpbigpLT5pc1NhbWVT
Y2hlbWVIb3N0UG9ydChkb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpKSkgewotICAgICAgICAg
ICAgU3RyaW5nIG1lc3NhZ2UgPSBTdHJpbmc6OmZvcm1hdCgiVW5hYmxlIHRvIHBvc3QgbWVzc2Fn
ZSB0byAlcy4gUmVjaXBpZW50IGhhcyBvcmlnaW4gJXMuXG4iLCAKLSAgICAgICAgICAgICAgICB0
aW1lci0+dGFyZ2V0T3JpZ2luKCktPnRvU3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgZG9jdW1lbnQo
KS0+c2VjdXJpdHlPcmlnaW4oKS0+dG9TdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAg
ICAgIFN0cmluZyBtZXNzYWdlID0gbWFrZVN0cmluZygiVW5hYmxlIHRvIHBvc3QgbWVzc2FnZSB0
byAiLCB0aW1lci0+dGFyZ2V0T3JpZ2luKCktPnRvU3RyaW5nKCksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIi4gUmVjaXBpZW50IGhhcyBvcmlnaW4gIiwgZG9jdW1l
bnQoKS0+c2VjdXJpdHlPcmlnaW4oKS0+dG9TdHJpbmcoKSwgIi5cbiIpOwogICAgICAgICAgICAg
Y29uc29sZSgpLT5hZGRNZXNzYWdlKEpTTWVzc2FnZVNvdXJjZSwgTG9nTWVzc2FnZVR5cGUsIEVy
cm9yTWVzc2FnZUxldmVsLCBtZXNzYWdlLCAwLCBTdHJpbmcoKSk7CiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIH0KSW5kZXg6IFdlYkNvcmUvcGFnZS9QcmludENvbnRleHQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9QcmludENvbnRleHQuY3BwCShyZXZpc2lvbiA2OTc2NCkK
KysrIFdlYkNvcmUvcGFnZS9QcmludENvbnRleHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3
ICsyNiw3IEBACiAjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCiAjaW5jbHVkZSAiUmVuZGVyTGF5ZXIu
aCIKICNpbmNsdWRlICJSZW5kZXJWaWV3LmgiCi0jaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5o
PgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlLmg+CiAKIHVzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOwogCkBAIC0yMTAsMTggKzIxMCwxOCBAQCBTdHJpbmcgUHJpbnRDb250ZXh0
OjpwYWdlUHJvcGVydHkoRnJhbWUqCiAgICAgaWYgKCFzdHJjbXAocHJvcGVydHlOYW1lLCAibWFy
Z2luLWxlZnQiKSkgewogICAgICAgICBpZiAoc3R5bGUtPm1hcmdpbkxlZnQoKS5pc0F1dG8oKSkK
ICAgICAgICAgICAgIHJldHVybiBTdHJpbmcoImF1dG8iKTsKLSAgICAgICAgcmV0dXJuIFN0cmlu
Zzo6Zm9ybWF0KCIlZCIsIHN0eWxlLT5tYXJnaW5MZWZ0KCkucmF3VmFsdWUoKSk7CisgICAgICAg
IHJldHVybiBTdHJpbmc6Om51bWJlcihzdHlsZS0+bWFyZ2luTGVmdCgpLnJhd1ZhbHVlKCkpOwog
ICAgIH0KICAgICBpZiAoIXN0cmNtcChwcm9wZXJ0eU5hbWUsICJsaW5lLWhlaWdodCIpKQotICAg
ICAgICByZXR1cm4gU3RyaW5nOjpmb3JtYXQoIiVkIiwgc3R5bGUtPmxpbmVIZWlnaHQoKS5yYXdW
YWx1ZSgpKTsKKyAgICAgICAgcmV0dXJuIFN0cmluZzo6bnVtYmVyKHN0eWxlLT5saW5lSGVpZ2h0
KCkucmF3VmFsdWUoKSk7CiAgICAgaWYgKCFzdHJjbXAocHJvcGVydHlOYW1lLCAiZm9udC1zaXpl
IikpCi0gICAgICAgIHJldHVybiBTdHJpbmc6OmZvcm1hdCgiJWQiLCBzdHlsZS0+Zm9udERlc2Ny
aXB0aW9uKCkuY29tcHV0ZWRQaXhlbFNpemUoKSk7CisgICAgICAgIHJldHVybiBTdHJpbmc6Om51
bWJlcihzdHlsZS0+Zm9udERlc2NyaXB0aW9uKCkuY29tcHV0ZWRQaXhlbFNpemUoKSk7CiAgICAg
aWYgKCFzdHJjbXAocHJvcGVydHlOYW1lLCAiZm9udC1mYW1pbHkiKSkKLSAgICAgICAgcmV0dXJu
IFN0cmluZzo6Zm9ybWF0KCIlcyIsIHN0eWxlLT5mb250RGVzY3JpcHRpb24oKS5mYW1pbHkoKS5m
YW1pbHkoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgcmV0dXJuIHN0eWxlLT5m
b250RGVzY3JpcHRpb24oKS5mYW1pbHkoKS5mYW1pbHkoKS5zdHJpbmcoKTsKICAgICBpZiAoIXN0
cmNtcChwcm9wZXJ0eU5hbWUsICJzaXplIikpCi0gICAgICAgIHJldHVybiBTdHJpbmc6OmZvcm1h
dCgiJWQgJWQiLCBzdHlsZS0+cGFnZVNpemUoKS53aWR0aCgpLnJhd1ZhbHVlKCksIHN0eWxlLT5w
YWdlU2l6ZSgpLmhlaWdodCgpLnJhd1ZhbHVlKCkpOworICAgICAgICByZXR1cm4gbWFrZVN0cmlu
ZyhTdHJpbmc6Om51bWJlcihzdHlsZS0+cGFnZVNpemUoKS53aWR0aCgpLnJhd1ZhbHVlKCkpLCAn
ICcsIFN0cmluZzo6bnVtYmVyKHN0eWxlLT5wYWdlU2l6ZSgpLmhlaWdodCgpLnJhd1ZhbHVlKCkp
KTsKIAotICAgIHJldHVybiBTdHJpbmc6OmZvcm1hdCgicGFnZVByb3BlcnR5KCkgdW5pbXBsZW1l
bnRlZCBmb3I6ICVzIiwgcHJvcGVydHlOYW1lKTsKKyAgICByZXR1cm4gbWFrZVN0cmluZygicGFn
ZVByb3BlcnR5KCkgdW5pbXBsZW1lbnRlZCBmb3I6ICIsIHByb3BlcnR5TmFtZSk7CiB9CiAKIGJv
b2wgUHJpbnRDb250ZXh0Ojppc1BhZ2VCb3hWaXNpYmxlKEZyYW1lKiBmcmFtZSwgaW50IHBhZ2VO
dW1iZXIpCkBAIC0yMzMsNyArMjMzLDEwIEBAIFN0cmluZyBQcmludENvbnRleHQ6OnBhZ2VTaXpl
QW5kTWFyZ2luc0kKIHsKICAgICBJbnRTaXplIHBhZ2VTaXplKHdpZHRoLCBoZWlnaHQpOwogICAg
IGZyYW1lLT5kb2N1bWVudCgpLT5wYWdlU2l6ZUFuZE1hcmdpbnNJblBpeGVscyhwYWdlTnVtYmVy
LCBwYWdlU2l6ZSwgbWFyZ2luVG9wLCBtYXJnaW5SaWdodCwgbWFyZ2luQm90dG9tLCBtYXJnaW5M
ZWZ0KTsKLSAgICByZXR1cm4gU3RyaW5nOjpmb3JtYXQoIiglZCwgJWQpICVkICVkICVkICVkIiwg
cGFnZVNpemUud2lkdGgoKSwgcGFnZVNpemUuaGVpZ2h0KCksIG1hcmdpblRvcCwgbWFyZ2luUmln
aHQsIG1hcmdpbkJvdHRvbSwgbWFyZ2luTGVmdCk7CisKKyAgICAvLyBXZSBkb24ndCBoYXZlIGEg
bWFrZVN0cmluZygpIGZ1bmN0aW9uIHRoYXQgdGFrZXMgdXAgdG8gMTIgYXJndW1lbnRzLCBpZiB0
aGlzIGlzIGEgaG90IGZ1bmN0aW9uLCB3ZSBjYW4gcHJvdmlkZSBvbmUuCisgICAgcmV0dXJuIG1h
a2VTdHJpbmcoJygnLCBTdHJpbmc6Om51bWJlcihwYWdlU2l6ZS53aWR0aCgpKSwgIiwgIiwgU3Ry
aW5nOjpudW1iZXIocGFnZVNpemUuaGVpZ2h0KCkpLCAiKSAiKSArCisgICAgICAgICAgIG1ha2VT
dHJpbmcoU3RyaW5nOjpudW1iZXIobWFyZ2luVG9wKSwgJyAnLCBTdHJpbmc6Om51bWJlcihtYXJn
aW5SaWdodCksICcgJywgU3RyaW5nOjpudW1iZXIobWFyZ2luQm90dG9tKSwgJyAnLCBTdHJpbmc6
Om51bWJlcihtYXJnaW5MZWZ0KSk7CiB9CiAKIGludCBQcmludENvbnRleHQ6Om51bWJlck9mUGFn
ZXMoRnJhbWUqIGZyYW1lLCBjb25zdCBGbG9hdFNpemUmIHBhZ2VTaXplSW5QaXhlbHMpCkluZGV4
OiBXZWJDb3JlL3BhZ2UvWFNTQXVkaXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdl
L1hTU0F1ZGl0b3IuY3BwCShyZXZpc2lvbiA2OTc2NCkKKysrIFdlYkNvcmUvcGFnZS9YU1NBdWRp
dG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDEsOCArNDEsNyBAQAogI2luY2x1ZGUgIlNldHRp
bmdzLmgiCiAjaW5jbHVkZSAiVGV4dFJlc291cmNlRGVjb2Rlci5oIgogI2luY2x1ZGUgPHd0Zi90
ZXh0L0NTdHJpbmcuaD4KLQotdXNpbmcgbmFtZXNwYWNlIFdURjsKKyNpbmNsdWRlIDx3dGYvdGV4
dC9TdHJpbmdDb25jYXRlbmF0ZS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTIwMyw3
ICsyMDIsNyBAQCBib29sIFhTU0F1ZGl0b3I6OmNhbkxvYWRPYmplY3QoY29uc3QgU3RyCiAgICAg
dGFzay5hbGxvd1JlcXVlc3RJZk5vSWxsZWdhbFVSSUNoYXJhY3RlcnMgPSB0cnVlOwogCiAgICAg
aWYgKGZpbmRJblJlcXVlc3QodGFzaykpIHsKLSAgICAgICAgU3RyaW5nIGNvbnNvbGVNZXNzYWdl
ID0gU3RyaW5nOjpmb3JtYXQoIlJlZnVzZWQgdG8gbG9hZCBhbiBvYmplY3QuIFVSTCBmb3VuZCB3
aXRoaW4gcmVxdWVzdDogXCIlc1wiLlxuIiwgdXJsLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICBT
dHJpbmcgY29uc29sZU1lc3NhZ2UgPSBtYWtlU3RyaW5nKCJSZWZ1c2VkIHRvIGxvYWQgYW4gb2Jq
ZWN0LiBVUkwgZm91bmQgd2l0aGluIHJlcXVlc3Q6IFwiIiwgdXJsLCAiXCIuXG4iKTsKICAgICAg
ICAgbV9mcmFtZS0+ZG9tV2luZG93KCktPmNvbnNvbGUoKS0+YWRkTWVzc2FnZShKU01lc3NhZ2VT
b3VyY2UsIExvZ01lc3NhZ2VUeXBlLCBFcnJvck1lc3NhZ2VMZXZlbCwgY29uc29sZU1lc3NhZ2Us
IDEsIFN0cmluZygpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KSW5kZXg6IFdlYkNv
cmUvcGxhdGZvcm0vZWZsL1BsYXRmb3JtS2V5Ym9hcmRFdmVudEVmbC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9wbGF0Zm9ybS9lZmwvUGxhdGZvcm1LZXlib2FyZEV2ZW50RWZsLmNwcAkocmV2
aXNpb24gNjk3NjQpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2VmbC9QbGF0Zm9ybUtleWJvYXJkRXZl
bnRFZmwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw3ICszOSw3IEBACiAjaW5jbHVkZSA8RXZh
cy5oPgogI2luY2x1ZGUgPHN0ZGlvLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KLSNpbmNs
dWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQ29uY2F0
ZW5hdGUuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKQEAgLTUzLDcgKzUzLDcgQEAgc3RhdGljIFdpbmRvd3NLZXlNYXAgZ1dpbmRvd3NL
ZXlNYXA7CiBzdGF0aWMgdm9pZCBjcmVhdGVLZXlNYXAoKQogewogICAgIGZvciAodW5zaWduZWQg
aW50IGkgPSAxOyBpIDwgMjU7IGkrKykgewotICAgICAgICBTdHJpbmcga2V5ID0gU3RyaW5nOjpm
b3JtYXQoIkYlZCIsIGkpOworICAgICAgICBTdHJpbmcga2V5ID0gbWFrZVN0cmluZygnRicsIFN0
cmluZzo6bnVtYmVyKGkpKTsKICAgICAgICAgZ0tleU1hcC5zZXQoa2V5LCBrZXkpOwogICAgIH0K
ICAgICBnS2V5TWFwLnNldCgiQWx0X0wiLCAiQWx0Iik7CkBAIC0xMzMsMTMgKzEzMywxMyBAQCBz
dGF0aWMgdm9pZCBjcmVhdGVXaW5kb3dzS2V5TWFwKCkKICAgICAvLyBBbHBoYWJldAogICAgIFN0
cmluZyBhbHBoYWJldCA9ICJhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eiI7CiAgICAgZm9yICh1
bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCAyNjsgaSsrKSB7Ci0gICAgICAgIFN0cmluZyBrZXkgPSBT
dHJpbmc6OmZvcm1hdCgiJWMiLCBhbHBoYWJldFtpXSk7CisgICAgICAgIFN0cmluZyBrZXkgPSBh
bHBoYWJldFtpXTsKICAgICAgICAgZ1dpbmRvd3NLZXlNYXAuc2V0KGtleSwgVktfQSArIGkpOwog
ICAgIH0KIAogICAgIC8vIERpZ2l0cwogICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwg
MTA7IGkrKykgewotICAgICAgICBTdHJpbmcga2V5ID0gU3RyaW5nOjpmb3JtYXQoIiVkIiwgaSk7
CisgICAgICAgIFN0cmluZyBrZXkgPSBTdHJpbmc6Om51bWJlcihpKTsKICAgICAgICAgZ1dpbmRv
d3NLZXlNYXAuc2V0KGtleSwgVktfMCArIGkpOwogICAgIH0KIApAQCAtMTYxLDcgKzE2MSw3IEBA
IHN0YXRpYyB2b2lkIGNyZWF0ZVdpbmRvd3NLZXlNYXAoKQogCiAgICAgLy8gRl9YWAogICAgIGZv
ciAodW5zaWduZWQgaW50IGkgPSAxOyBpIDwgMjU7IGkrKykgewotICAgICAgICBTdHJpbmcga2V5
ID0gU3RyaW5nOjpmb3JtYXQoIkYlZCIsIGkpOworICAgICAgICBTdHJpbmcga2V5ID0gbWFrZVN0
cmluZygnRicsIFN0cmluZzo6bnVtYmVyKGkpKTsKICAgICAgICAgZ1dpbmRvd3NLZXlNYXAuc2V0
KGtleSwgVktfRjEgKyBpKTsKICAgICB9CiB9CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzTGF5ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NMYXllci5jcHAJKHJldmlzaW9uIDY5NzY0KQorKysgV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsNiAr
MzMsNyBAQAogI2luY2x1ZGUgIlJvdGF0ZVRyYW5zZm9ybU9wZXJhdGlvbi5oIgogI2luY2x1ZGUg
IlRleHRTdHJlYW0uaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisjaW5jbHVkZSA8
d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGUuaD4KIAogI2lmbmRlZiBOREVCVUcKICNpbmNsdWRl
IDxzdGRpby5oPgpAQCAtMjQ5LDcgKzI1MCw3IEBAIHZvaWQgR3JhcGhpY3NMYXllcjo6cGFpbnRH
cmFwaGljc0xheWVyQ28KIFN0cmluZyBHcmFwaGljc0xheWVyOjphbmltYXRpb25OYW1lRm9yVHJh
bnNpdGlvbihBbmltYXRlZFByb3BlcnR5SUQgcHJvcGVydHkpCiB7CiAgICAgLy8gfCBpcyBub3Qg
YSB2YWxpZCBpZGVudGlmaWVyIGNoYXJhY3RlciBpbiBDU1MsIHNvIHRoaXMgY2FuIG5ldmVyIGNv
bmZsaWN0IHdpdGggYSBrZXlmcmFtZSBpZGVudGlmaWVyLgotICAgIHJldHVybiBTdHJpbmc6OmZv
cm1hdCgiLXx0cmFuc2l0aW9uJWMtIiwgcHJvcGVydHkpOworICAgIHJldHVybiBtYWtlU3RyaW5n
KCItfHRyYW5zaXRpb24iLCBzdGF0aWNfY2FzdDxjaGFyPihwcm9wZXJ0eSksICctJyk7CiB9CiAK
IHZvaWQgR3JhcGhpY3NMYXllcjo6c3VzcGVuZEFuaW1hdGlvbnMoZG91YmxlKQpJbmRleDogV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9icmV3L0ltYWdlQnJldy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9icmV3L0ltYWdlQnJldy5jcHAJKHJldmlzaW9uIDY5
NzY0KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9icmV3L0ltYWdlQnJldy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTM2LDEzICszNiwxMyBAQAogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5o
IgogCiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dU
RlN0cmluZy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlLmg+CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogUGFzc1JlZlB0cjxJbWFnZT4gSW1hZ2U6OmxvYWRQbGF0Zm9y
bVJlc291cmNlKGNvbnN0IGNoYXIgKm5hbWUpCiB7Ci0gICAgU3RyaW5nIHJlc291cmNlUGF0aCA9
IGhvbWVEaXJlY3RvcnlQYXRoKCkgKyBTdHJpbmc6OmZvcm1hdCgicmVzLyVzLnBuZyIsIG5hbWUp
OworICAgIFN0cmluZyByZXNvdXJjZVBhdGggPSBtYWtlU3RyaW5nKGhvbWVEaXJlY3RvcnlQYXRo
KCksICJyZXMvIiwgbmFtZSwgIi5wbmciKTsKIAogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1
ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHJlc291cmNlUGF0
aC51dGY4KCkuZGF0YSgpKTsKICAgICBpZiAoIWJ1ZmZlcikKSW5kZXg6IFdlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDRy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcAkocmV2aXNpb24gNjk3NjQpCisr
KyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zMywxMCArMzMsOSBAQAogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgog
I2luY2x1ZGUgIkltYWdlRGF0YS5oIgogI2luY2x1ZGUgIk1JTUVUeXBlUmVnaXN0cnkuaCIKLSNp
bmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgogI2luY2x1ZGUgPEFwcGxpY2F0aW9uU2VydmljZXMv
QXBwbGljYXRpb25TZXJ2aWNlcy5oPgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+Ci0jaW5j
bHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNh
dGVuYXRlLmg+CiAjaW5jbHVkZSA8d3RmL093bkFycmF5UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Jl
dGFpblB0ci5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KQEAgLTM3MSw3ICszNzAsNyBA
QCBTdHJpbmcgSW1hZ2VCdWZmZXI6OnRvRGF0YVVSTChjb25zdCBTdHJpCiAgICAgYmFzZTY0RW5j
b2RlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KENGRGF0YUdldEJ5dGVQdHIoZGF0YS5n
ZXQoKSkpLCBDRkRhdGFHZXRMZW5ndGgoZGF0YS5nZXQoKSksIG91dCk7CiAgICAgb3V0LmFwcGVu
ZCgnXDAnKTsKIAotICAgIHJldHVybiBTdHJpbmc6OmZvcm1hdCgiZGF0YTolcztiYXNlNjQsJXMi
LCBtaW1lVHlwZS51dGY4KCkuZGF0YSgpLCBvdXQuZGF0YSgpKTsKKyAgICByZXR1cm4gbWFrZVN0
cmluZygiZGF0YToiLCBtaW1lVHlwZSwgIjtiYXNlNjQsIiwgb3V0LmRhdGEoKSk7CiB9CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWZs
L0ltYWdlRWZsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Vm
bC9JbWFnZUVmbC5jcHAJKHJldmlzaW9uIDY5NzY0KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9lZmwvSW1hZ2VFZmwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw2ICszMiw3IEBACiAj
aW5jbHVkZSAiQml0bWFwSW1hZ2UuaCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKIAorI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlLmg+CiAjaW5jbHVkZSA8Y2Fpcm8uaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNTEsNyArNTIsNyBAQCBzdGF0aWMgUGFzc1JlZlB0
cjxTaGFyZWRCdWZmZXI+IGxvYWRSZXNvCiAKIHN0YXRpYyBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gbG9hZFJlc291cmNlU2hhcmVkQnVmZmVyKGNvbnN0IGNoYXIqIG5hbWUpCiB7Ci0gICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVu
dHNPZkZpbGUoU3RyaW5nOjpmb3JtYXQoREFUQV9ESVIgIi93ZWJraXQtMS4wL2ltYWdlcy8lcy5w
bmciLCBuYW1lKSk7CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gU2hhcmVkQnVm
ZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUobWFrZVN0cmluZyhEQVRBX0RJUiAiL3dlYmtp
dC0xLjAvaW1hZ2VzLyIsIG5hbWUsICIucG5nIikpOyAgICAKICAgICBpZiAoYnVmZmVyKQogICAg
ICAgICByZXR1cm4gYnVmZmVyLnJlbGVhc2UoKTsKICAgICByZXR1cm4gbG9hZFJlc291cmNlU2hh
cmVkQnVmZmVyRmFsbGJhY2soKTsKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3Rr
L0ltYWdlQnVmZmVyR3RrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2d0ay9JbWFnZUJ1ZmZlckd0ay5jcHAJKHJldmlzaW9uIDY5NzY0KQorKysgV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9ndGsvSW1hZ2VCdWZmZXJHdGsuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSA8Y2Fpcm8uaD4KICNpbmNsdWRlIDxndGsvZ3RrLmg+
CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmlu
Z0NvbmNhdGVuYXRlLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNjcsNyArNjgsNyBA
QCBTdHJpbmcgSW1hZ2VCdWZmZXI6OnRvRGF0YVVSTChjb25zdCBTdHJpCiAgICAgYmFzZTY0RW5j
b2RlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGJ1ZmZlci5nZXQoKSksIGJ1ZmZlclNp
emUsIG91dCk7CiAgICAgb3V0LmFwcGVuZCgnXDAnKTsKIAotICAgIHJldHVybiBTdHJpbmc6OmZv
cm1hdCgiZGF0YTolcztiYXNlNjQsJXMiLCBtaW1lVHlwZS51dGY4KCkuZGF0YSgpLCBvdXQuZGF0
YSgpKTsKKyAgICByZXR1cm4gbWFrZVN0cmluZygiZGF0YToiLCBtaW1lVHlwZSwgIjtiYXNlNjQs
Iiwgb3V0LmRhdGEoKSk7CiB9CiAKIH0KSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
aGFpa3UvSW1hZ2VCdWZmZXJIYWlrdS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9oYWlrdS9JbWFnZUJ1ZmZlckhhaWt1LmNwcAkocmV2aXNpb24gNjk3NjQpCisr
KyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2hhaWt1L0ltYWdlQnVmZmVySGFpa3UuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiTUlNRVR5cGVSZWdpc3Ry
eS5oIgogI2luY2x1ZGUgIlN0aWxsSW1hZ2VIYWlrdS5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NT
dHJpbmcuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZS5oPgogI2luY2x1
ZGUgPEJpdG1hcFN0cmVhbS5oPgogI2luY2x1ZGUgPFN0cmluZy5oPgogI2luY2x1ZGUgPFRyYW5z
bGF0b3JSb3N0ZXIuaD4KQEAgLTM2Nyw4ICszNjgsNyBAQCBTdHJpbmcgSW1hZ2VCdWZmZXI6OnRv
RGF0YVVSTChjb25zdCBTdHJpCiAgICAgYmFzZTY0RW5jb2RlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgY2hhcio+KHRyYW5zbGF0ZWRTdHJlYW0uQnVmZmVyKCkpLAogICAgICAgICAgICAgICAgICB0
cmFuc2xhdGVkU3RyZWFtLkJ1ZmZlckxlbmd0aCgpLCBlbmNvZGVkQnVmZmVyKTsKIAotICAgIHJl
dHVybiBTdHJpbmc6OmZvcm1hdCgiZGF0YTolcztiYXNlNjQsJXMiLCBtaW1lVHlwZS51dGY4KCku
ZGF0YSgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICBlbmNvZGVkQnVmZmVyLmRhdGEoKSk7
CisgICAgcmV0dXJuIG1ha2VTdHJpbmcoImRhdGE6IiwgbWltZVR5cGUsICI7YmFzZTY0LCIsIGVu
Y29kZWRCdWZmZXIuZGF0YSgpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDog
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvR3JhcGhpY3NMYXllckNBLm1tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0dyYXBoaWNzTGF5ZXJDQS5tbQko
cmV2aXNpb24gNjk3NjQpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9HcmFwaGlj
c0xheWVyQ0EubW0JKHdvcmtpbmcgY29weSkKQEAgLTQ3LDYgKzQ3LDcgQEAKICNpbXBvcnQgPHd0
Zi9DdXJyZW50VGltZS5oPgogI2ltcG9ydCA8d3RmL1VudXNlZFBhcmFtLmg+CiAjaW1wb3J0IDx3
dGYvUmV0YWluUHRyLmg+CisjaW1wb3J0IDx3dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZS5oPgog
CiB1c2luZyBuYW1lc3BhY2Ugc3RkOwogCkBAIC0yNDcsNyArMjQ4LDcgQEAgc3RhdGljIFN0cmlu
ZyBwcm9wZXJ0eUlkVG9TdHJpbmcoQW5pbWF0ZQogCiBzdGF0aWMgU3RyaW5nIGFuaW1hdGlvbklk
ZW50aWZpZXIoY29uc3QgU3RyaW5nJiBhbmltYXRpb25OYW1lLCBBbmltYXRlZFByb3BlcnR5SUQg
cHJvcGVydHksIGludCBpbmRleCkKIHsKLSAgICByZXR1cm4gYW5pbWF0aW9uTmFtZSArIFN0cmlu
Zzo6Zm9ybWF0KCJfJWRfJWQiLCBwcm9wZXJ0eSwgaW5kZXgpOworICAgIHJldHVybiBtYWtlU3Ry
aW5nKGFuaW1hdGlvbk5hbWUsICdfJywgU3RyaW5nOjpudW1iZXIocHJvcGVydHkpLCAnXycsIFN0
cmluZzo6bnVtYmVyKGluZGV4KSk7CiB9CiAKIHN0YXRpYyBDQU1lZGlhVGltaW5nRnVuY3Rpb24q
IGdldENBTWVkaWFUaW1pbmdGdW5jdGlvbihjb25zdCBUaW1pbmdGdW5jdGlvbiogdGltaW5nRnVu
Y3Rpb24pCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0ltYWdlQnVmZmVyUXQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvSW1hZ2VCdWZm
ZXJRdC5jcHAJKHJldmlzaW9uIDY5NzY0KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9x
dC9JbWFnZUJ1ZmZlclF0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUsNiArMzUsNyBAQAogI2lu
Y2x1ZGUgIlN0aWxsSW1hZ2VRdC5oIgogI2luY2x1ZGUgIlRyYW5zcGFyZW5jeUxheWVyLmgiCiAj
aW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0Nv
bmNhdGVuYXRlLmg+CiAKICNpbmNsdWRlIDxRQnVmZmVyPgogI2luY2x1ZGUgPFFDb2xvcj4KQEAg
LTQwMSw3ICs0MDIsOCBAQCBTdHJpbmcgSW1hZ2VCdWZmZXI6OnRvRGF0YVVSTChjb25zdCBTdHJp
CiAgICAgfQogCiAgICAgYnVmZmVyLmNsb3NlKCk7Ci0gICAgcmV0dXJuIFN0cmluZzo6Zm9ybWF0
KCJkYXRhOiVzO2Jhc2U2NCwlcyIsIG1pbWVUeXBlLnV0ZjgoKS5kYXRhKCksIGRhdGEudG9CYXNl
NjQoKS5kYXRhKCkpOworCisgICAgcmV0dXJuIG1ha2VTdHJpbmcoImRhdGE6IiwgbWltZVR5cGUs
ICI7YmFzZTY0LCIsIGRhdGEudG9CYXNlNjQoKS5kYXRhKCkpOwogfQogCiB9CkluZGV4OiBXZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvSW1hZ2VCdWZmZXJTa2lhLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvSW1hZ2VCdWZmZXJTa2lhLmNwcAko
cmV2aXNpb24gNjk3NjQpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvSW1hZ2VC
dWZmZXJTa2lhLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDUsNiArNDUsOCBAQAogI2luY2x1ZGUg
IlNrQ29sb3JQcml2LmgiCiAjaW5jbHVkZSAiU2tpYVV0aWxzLmgiCiAKKyNpbmNsdWRlIDx3dGYv
dGV4dC9TdHJpbmdDb25jYXRlbmF0ZS5oPgorCiB1c2luZyBuYW1lc3BhY2Ugc3RkOwogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CkBAIC0zMTIsNyArMzE0LDcgQEAgU3RyaW5nIEltYWdlQnVmZmVyOjp0
b0RhdGFVUkwoY29uc3QgU3RyaQogICAgIGJhc2U2NEVuY29kZWREYXRhLmFwcGVuZCgnXDAnKTsK
IAogICAgIC8vIEFuZCB0aGUgcmVzdWx0aW5nIHN0cmluZy4KLSAgICByZXR1cm4gU3RyaW5nOjpm
b3JtYXQoImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCwlcyIsIGJhc2U2NEVuY29kZWREYXRhLmRhdGEo
KSk7CisgICAgcmV0dXJuIG1ha2VTdHJpbmcoImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCwiLCBiYXNl
NjRFbmNvZGVkRGF0YS5kYXRhKCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4
OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9XZWJMYXllci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vV2ViTGF5ZXIuY3BwCShyZXZpc2lvbiA2
OTc2NCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1dlYkxheWVyLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtOTQsNyArOTQsNyBAQCB2b2lkIFdlYkxheWVyOjpkcmF3SW5Db250ZXh0
KFBsYXRmb3JtR3JhCiAjZW5kaWYKIAogICAgIGlmIChtX293bmVyLT5zaG93UmVwYWludENvdW50
ZXIoKSkgewotICAgICAgICBTdHJpbmcgdGV4dCA9IFN0cmluZzo6Zm9ybWF0KCIlZCIsIG1fb3du
ZXItPmluY3JlbWVudFJlcGFpbnRDb3VudCgpKTs7CisgICAgICAgIFN0cmluZyB0ZXh0ID0gU3Ry
aW5nOjpudW1iZXIobV9vd25lci0+aW5jcmVtZW50UmVwYWludENvdW50KCkpOwogCiAgICAgICAg
IENHQ29udGV4dFNhdmVHU3RhdGUoY29udGV4dCk7CiAKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9DcmVkZW50aWFsU3RvcmFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL0NyZWRlbnRpYWxTdG9yYWdlLmNwcAkocmV2aXNpb24gNjk3NjQpCisrKyBX
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ3JlZGVudGlhbFN0b3JhZ2UuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yOSw3ICsyOSw3IEBACiAjaW5jbHVkZSAiQ3JlZGVudGlhbC5oIgogI2luY2x1ZGUg
IktVUkwuaCIKICNpbmNsdWRlICJQcm90ZWN0aW9uU3BhY2VIYXNoLmgiCi0jaW5jbHVkZSA8d3Rm
L3RleHQvQ1N0cmluZy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlLmg+
CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFw
Lmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KQEAgLTYwLDkgKzYwLDkgQEAgc3RhdGljIFBh
dGhUb0RlZmF1bHRQcm90ZWN0aW9uU3BhY2VNYXAmIAogc3RhdGljIFN0cmluZyBvcmlnaW5TdHJp
bmdGcm9tVVJMKGNvbnN0IEtVUkwmIHVybCkKIHsKICAgICBpZiAodXJsLnBvcnQoKSkKLSAgICAg
ICAgcmV0dXJuIHVybC5wcm90b2NvbCgpICsgIjovLyIgKyB1cmwuaG9zdCgpICsgU3RyaW5nOjpm
b3JtYXQoIjolaS8iLCB1cmwucG9ydCgpKTsKLSAgICAKLSAgICByZXR1cm4gdXJsLnByb3RvY29s
KCkgKyAiOi8vIiArIHVybC5ob3N0KCkgKyAiLyI7CisgICAgICAgIHJldHVybiBtYWtlU3RyaW5n
KHVybC5wcm90b2NvbCgpLCAiOi8vIiwgdXJsLmhvc3QoKSwgJzonLCBTdHJpbmc6Om51bWJlcih1
cmwucG9ydCgpKSwgJy8nKTsKKworICAgIHJldHVybiBtYWtlU3RyaW5nKHVybC5wcm90b2NvbCgp
LCAiOi8vIiwgdXJsLmhvc3QoKSwgJy8nKTsKIH0KIAogc3RhdGljIFN0cmluZyBwcm90ZWN0aW9u
U3BhY2VNYXBLZXlGcm9tVVJMKGNvbnN0IEtVUkwmIHVybCkKSW5kZXg6IFdlYkNvcmUvcGxhdGZv
cm0vc3FsL1NRTGl0ZURhdGFiYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3Jt
L3NxbC9TUUxpdGVEYXRhYmFzZS5jcHAJKHJldmlzaW9uIDY5NzY0KQorKysgV2ViQ29yZS9wbGF0
Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw2ICszNCw3
IEBACiAjaW5jbHVkZSA8c3FsaXRlMy5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KICNp
bmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQ29u
Y2F0ZW5hdGUuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0yMTcsNyArMjE4LDcgQEAg
aW50NjRfdCBTUUxpdGVEYXRhYmFzZTo6dG90YWxTaXplKCkKIAogdm9pZCBTUUxpdGVEYXRhYmFz
ZTo6c2V0U3luY2hyb25vdXMoU3luY2hyb25vdXNQcmFnbWEgc3luYykKIHsKLSAgICBleGVjdXRl
Q29tbWFuZChTdHJpbmc6OmZvcm1hdCgiUFJBR01BIHN5bmNocm9ub3VzID0gJWkiLCBzeW5jKSk7
CisgICAgZXhlY3V0ZUNvbW1hbmQobWFrZVN0cmluZygiUFJBR01BIHN5bmNocm9ub3VzID0gIiwg
U3RyaW5nOjpudW1iZXIoc3luYykpKTsKIH0KIAogdm9pZCBTUUxpdGVEYXRhYmFzZTo6c2V0QnVz
eVRpbWVvdXQoaW50IG1zKQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L3dpbmNlL1RleHRD
b2RlY1dpbkNFLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL3RleHQvd2luY2Uv
VGV4dENvZGVjV2luQ0UuY3BwCShyZXZpc2lvbiA2OTc2NCkKKysrIFdlYkNvcmUvcGxhdGZvcm0v
dGV4dC93aW5jZS9UZXh0Q29kZWNXaW5DRS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyLDcgKzMy
LDcgQEAKICNpbmNsdWRlIDx3aW5ubHMuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2lu
Y2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQv
U3RyaW5nSGFzaC5oPgogI2luY2x1ZGUgPHd0Zi91bmljb2RlL1VURjguaD4KIApAQCAtMTEwLDcg
KzExMCw3IEBAIExhbmd1YWdlTWFuYWdlcjo6TGFuZ3VhZ2VNYW5hZ2VyKCkKICAgICAgICAgICAg
ICAgICBpbmZvLm1fYWxpYXNlcy5hcHBlbmQobmFtZSk7CiAgICAgICAgICAgICAgICAgaW5mby5t
X2FsaWFzZXMuYXBwZW5kKFN0cmluZyhjcEluZm8ud3N6SGVhZGVyQ2hhcnNldCkubGF0aW4xKCkp
OwogICAgICAgICAgICAgICAgIGluZm8ubV9hbGlhc2VzLmFwcGVuZChTdHJpbmcoY3BJbmZvLndz
ekJvZHlDaGFyc2V0KS5sYXRpbjEoKSk7Ci0gICAgICAgICAgICAgICAgU3RyaW5nIGNwTmFtZSA9
IFN0cmluZzo6Zm9ybWF0KCJjcCVkIiwgY3BJbmZvLnVpQ29kZVBhZ2UpOworICAgICAgICAgICAg
ICAgIFN0cmluZyBjcE5hbWUgPSBtYWtlU3RyaW5nKCJjcCIsIFN0cmluZzo6bnVtYmVyKGNwSW5m
by51aUNvZGVQYWdlKSk7CiAgICAgICAgICAgICAgICAgaW5mby5tX2FsaWFzZXMuYXBwZW5kKGNw
TmFtZS5sYXRpbjEoKSk7CiAgICAgICAgICAgICAgICAgc3VwcG9ydGVkQ2hhcnNldHMoKS5hZGQo
aS0+c2Vjb25kLmRhdGEoKSk7CiAgICAgICAgICAgICB9CkluZGV4OiBXZWJDb3JlL3BsYXRmb3Jt
L3dpbi9DbGlwYm9hcmRVdGlsaXRpZXNXaW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxh
dGZvcm0vd2luL0NsaXBib2FyZFV0aWxpdGllc1dpbi5jcHAJKHJldmlzaW9uIDY5NzY0KQorKysg
V2ViQ29yZS9wbGF0Zm9ybS93aW4vQ2xpcGJvYXJkVXRpbGl0aWVzV2luLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgPHNobHdhcGkuaD4KICNpbmNsdWRlIDx3
aW5pbmV0Lmg+IC8vIGZvciBJTlRFUk5FVF9NQVhfVVJMX0xFTkdUSAogI2luY2x1ZGUgPHd0Zi90
ZXh0L0NTdHJpbmcuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZS5oPgog
CiAjaWYgUExBVEZPUk0oQ0YpCiAjaW5jbHVkZSA8Q29yZUZvdW5kYXRpb24vQ29yZUZvdW5kYXRp
b24uaD4KQEAgLTIzOSw3ICsyNDAsNyBAQCB2b2lkIG1hcmt1cFRvQ0ZIVE1MKGNvbnN0IFN0cmlu
ZyYgbWFya3VwCiAgICAgdW5zaWduZWQgZW5kRnJhZ21lbnRPZmZzZXQgPSBzdGFydEZyYWdtZW50
T2Zmc2V0ICsgbWFya3VwVVRGOC5sZW5ndGgoKTsKICAgICB1bnNpZ25lZCBlbmRIVE1MT2Zmc2V0
ID0gZW5kRnJhZ21lbnRPZmZzZXQgKyBzdHJsZW4oZW5kTWFya3VwKTsKIAotICAgIGFwcGVuZChy
ZXN1bHQsIFN0cmluZzo6Zm9ybWF0KGhlYWRlciwgc3RhcnRIVE1MT2Zmc2V0LCBlbmRIVE1MT2Zm
c2V0LCBzdGFydEZyYWdtZW50T2Zmc2V0LCBlbmRGcmFnbWVudE9mZnNldCkudXRmOCgpKTsKKyAg
ICBhcHBlbmQocmVzdWx0LCBtYWtlU3RyaW5nKGhlYWRlciwgc3RhcnRIVE1MT2Zmc2V0LCBlbmRI
VE1MT2Zmc2V0LCBzdGFydEZyYWdtZW50T2Zmc2V0LCBlbmRGcmFnbWVudE9mZnNldCkudXRmOCgp
KTsKICAgICBpZiAoc291cmNlVVJMVVRGOC5sZW5ndGgoKSkgewogICAgICAgICBhcHBlbmQocmVz
dWx0LCBzb3VyY2VVUkxQcmVmaXgpOwogICAgICAgICBhcHBlbmQocmVzdWx0LCBzb3VyY2VVUkxV
VEY4KTsKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vd2luL0xhbmd1YWdlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL3dpbi9MYW5ndWFnZS5jcHAJKHJldmlzaW9uIDY5NzY0KQor
KysgV2ViQ29yZS9wbGF0Zm9ybS93aW4vTGFuZ3VhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
Niw4ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiTGFuZ3VhZ2UuaCIK
IAotI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCi0jaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmlu
Zy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlLmg+CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIApAQCAtNjAsNyArNTksNyBAQCBTdHJpbmcgZGVmYXVsdExhbmd1YWdlKCkK
ICAgICBpZiAoY291bnRyeU5hbWUuaXNFbXB0eSgpKQogICAgICAgICBjb21wdXRlZERlZmF1bHRM
YW5ndWFnZSA9IGxhbmd1YWdlTmFtZTsKICAgICBlbHNlCi0gICAgICAgIGNvbXB1dGVkRGVmYXVs
dExhbmd1YWdlID0gU3RyaW5nOjpmb3JtYXQoIiVzLSVzIiwgbGFuZ3VhZ2VOYW1lLmxhdGluMSgp
LmRhdGEoKSwgY291bnRyeU5hbWUubGF0aW4xKCkuZGF0YSgpKTsKKyAgICAgICAgY29tcHV0ZWRE
ZWZhdWx0TGFuZ3VhZ2UgPSBtYWtlU3RyaW5nKGxhbmd1YWdlTmFtZSwgJy0nLCBjb3VudHJ5TmFt
ZSk7CiAKICAgICByZXR1cm4gY29tcHV0ZWREZWZhdWx0TGFuZ3VhZ2U7CiB9CkluZGV4OiBXZWJD
b3JlL3BsdWdpbnMvUGx1Z2luU3RyZWFtLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsdWdp
bnMvUGx1Z2luU3RyZWFtLmNwcAkocmV2aXNpb24gNjk3NjQpCisrKyBXZWJDb3JlL3BsdWdpbnMv
UGx1Z2luU3RyZWFtLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1
ZGUgIlN1YnJlc291cmNlTG9hZGVyLmgiCiAjaW5jbHVkZSA8U3RyaW5nRXh0cmFzLmg+CiAjaW5j
bHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNh
dGVuYXRlLmg+CiAKIC8vIFdlIHVzZSAtMiBoZXJlIGJlY2F1c2Ugc29tZSBwbHVnaW5zIGxpa2Ug
dG8gcmV0dXJuIC0xIHRvIGluZGljYXRlIGVycm9yCiAvLyBhbmQgdGhpcyB3YXkgd2Ugd29uJ3Qg
Y2xhc2ggd2l0aCB0aGVtLgpAQCAtMTQ1LDggKzE0Niw3IEBAIHZvaWQgUGx1Z2luU3RyZWFtOjpz
dGFydFN0cmVhbSgpCiAgICAgICAgIFZlY3RvcjxVQ2hhcj4gc3RyaW5nQnVpbGRlcjsKICAgICAg
ICAgU3RyaW5nIHNlcGFyYXRvcigiOiAiKTsKIAotICAgICAgICBTdHJpbmcgc3RhdHVzTGluZSA9
IFN0cmluZzo6Zm9ybWF0KCJIVFRQICVkIE9LXG4iLCBtX3Jlc291cmNlUmVzcG9uc2UuaHR0cFN0
YXR1c0NvZGUoKSk7Ci0KKyAgICAgICAgU3RyaW5nIHN0YXR1c0xpbmUgPSBtYWtlU3RyaW5nKCJI
VFRQICIsIFN0cmluZzo6bnVtYmVyKG1fcmVzb3VyY2VSZXNwb25zZS5odHRwU3RhdHVzQ29kZSgp
KSwgIiBPS1xuIik7CiAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKHN0YXR1c0xpbmUuY2hh
cmFjdGVycygpLCBzdGF0dXNMaW5lLmxlbmd0aCgpKTsKIAogICAgICAgICBIVFRQSGVhZGVyTWFw
Ojpjb25zdF9pdGVyYXRvciBlbmQgPSBtX3Jlc291cmNlUmVzcG9uc2UuaHR0cEhlYWRlckZpZWxk
cygpLmVuZCgpOwpJbmRleDogV2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVudC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVudC5jcHAJKHJldmlzaW9uIDY5NzY0KQorKysg
V2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDYgKzQ3
LDggQEAKICNpbmNsdWRlICJYTUxEb2N1bWVudFBhcnNlci5oIgogI2luY2x1ZGUgIlhNTFNlcmlh
bGl6ZXIuaCIKIAorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlLmg+CisKIC8v
IER1bXAgU1ZHRWxlbWVudEluc3RhbmNlIG9iamVjdCB0cmVlIC0gdXNlZnVsIHRvIGRlYnVnIGlu
c3RhbmNlUm9vdCBwcm9ibGVtcwogLy8gI2RlZmluZSBEVU1QX0lOU1RBTkNFX1RSRUUKIApAQCAt
MzcwLDcgKzM3Miw3IEBAIHZvaWQgZHVtcEluc3RhbmNlVHJlZSh1bnNpZ25lZCBpbnQmIGRlcHQK
ICAgICAgICAgdGV4dCArPSAiICAiOwogCiAgICAgY29uc3QgSGFzaFNldDxTVkdFbGVtZW50SW5z
dGFuY2UqPiYgZWxlbWVudEluc3RhbmNlcyA9IGVsZW1lbnQtPmluc3RhbmNlc0ZvckVsZW1lbnQo
KTsKLSAgICB0ZXh0ICs9IFN0cmluZzo6Zm9ybWF0KCJDb3JyZXNwb25kaW5nIGVsZW1lbnQgaXMg
YXNzb2NpYXRlZCB3aXRoICVpIGluc3RhbmNlKHMpOlxuIiwgZWxlbWVudEluc3RhbmNlcy5zaXpl
KCkpOworICAgIHRleHQgKz0gbWFrZVN0cmluZygiQ29ycmVzcG9uZGluZyBlbGVtZW50IGlzIGFz
c29jaWF0ZWQgd2l0aCAiLCBTdHJpbmc6Om51bWJlcihlbGVtZW50SW5zdGFuY2VzLnNpemUoKSks
ICIgaW5zdGFuY2Uocyk6XG4iKTsKIAogICAgIGNvbnN0IEhhc2hTZXQ8U1ZHRWxlbWVudEluc3Rh
bmNlKj46OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IGVsZW1lbnRJbnN0YW5jZXMuZW5kKCk7CiAgICAg
Zm9yIChIYXNoU2V0PFNWR0VsZW1lbnRJbnN0YW5jZSo+Ojpjb25zdF9pdGVyYXRvciBpdCA9IGVs
ZW1lbnRJbnN0YW5jZXMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7CkluZGV4OiBXZWJDb3Jl
L3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3dlYnNvY2tl
dHMvV2ViU29ja2V0LmNwcAkocmV2aXNpb24gNjk3NjQpCisrKyBXZWJDb3JlL3dlYnNvY2tldHMv
V2ViU29ja2V0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDcsNiArNDcsNyBAQAogI2luY2x1ZGUg
PHd0Zi9TdGRMaWJFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5j
bHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmlu
Z0NvbmNhdGVuYXRlLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMTQwLDcgKzE0MSw3
IEBAIHZvaWQgV2ViU29ja2V0Ojpjb25uZWN0KGNvbnN0IEtVUkwmIHVybCwKICAgICAgICAgcmV0
dXJuOwogICAgIH0KICAgICBpZiAoIXBvcnRBbGxvd2VkKHVybCkpIHsKLSAgICAgICAgc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpLT5hZGRNZXNzYWdlKEpTTWVzc2FnZVNvdXJjZSwgTG9nTWVzc2Fn
ZVR5cGUsIEVycm9yTWVzc2FnZUxldmVsLCBTdHJpbmc6OmZvcm1hdCgiV2ViU29ja2V0IHBvcnQg
JWQgYmxvY2tlZCIsIHVybC5wb3J0KCkpLCAwLCBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnNl
Y3VyaXR5T3JpZ2luKCktPnRvU3RyaW5nKCkpOworICAgICAgICBzY3JpcHRFeGVjdXRpb25Db250
ZXh0KCktPmFkZE1lc3NhZ2UoSlNNZXNzYWdlU291cmNlLCBMb2dNZXNzYWdlVHlwZSwgRXJyb3JN
ZXNzYWdlTGV2ZWwsIG1ha2VTdHJpbmcoIldlYlNvY2tldCBwb3J0ICIsIFN0cmluZzo6bnVtYmVy
KHVybC5wb3J0KCkpLCAiIGJsb2NrZWQiKSwgMCwgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5z
ZWN1cml0eU9yaWdpbigpLT50b1N0cmluZygpKTsKICAgICAgICAgbV9zdGF0ZSA9IENMT1NFRDsK
ICAgICAgICAgZWMgPSBTRUNVUklUWV9FUlI7CiAgICAgICAgIHJldHVybjsKSW5kZXg6IFdlYkNv
cmUvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHAJKHJldmlzaW9uIDY5NzY0KQorKysgV2Vi
Q29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00
OCw2ICs0OCw3IEBACiAjaW5jbHVkZSAiV2ViU29ja2V0SGFuZHNoYWtlLmgiCiAKICNpbmNsdWRl
IDx3dGYvdGV4dC9DU3RyaW5nLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5h
dGUuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAjaW5jbHVkZSA8d3RmL0Rl
cXVlLmg+CiAjaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KQEAgLTI0Niw3ICsyNDcsNyBAQCBi
b29sIFdlYlNvY2tldENoYW5uZWw6OmFwcGVuZFRvQnVmZmVyKGNvCiAgICAgICAgIG1fYnVmZmVy
U2l6ZSA9IG5ld0J1ZmZlclNpemU7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KLSAgICBt
X2NvbnRleHQtPmFkZE1lc3NhZ2UoSlNNZXNzYWdlU291cmNlLCBMb2dNZXNzYWdlVHlwZSwgRXJy
b3JNZXNzYWdlTGV2ZWwsIFN0cmluZzo6Zm9ybWF0KCJXZWJTb2NrZXQgZnJhbWUgKGF0ICVsdSBi
eXRlcykgaXMgdG9vIGxvbmcuIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZz4obmV3QnVmZmVy
U2l6ZSkpLCAwLCBtX2hhbmRzaGFrZS5jbGllbnRPcmlnaW4oKSk7CisgICAgbV9jb250ZXh0LT5h
ZGRNZXNzYWdlKEpTTWVzc2FnZVNvdXJjZSwgTG9nTWVzc2FnZVR5cGUsIEVycm9yTWVzc2FnZUxl
dmVsLCBtYWtlU3RyaW5nKCJXZWJTb2NrZXQgZnJhbWUgKGF0ICIsIFN0cmluZzo6bnVtYmVyKHN0
YXRpY19jYXN0PHVuc2lnbmVkIGxvbmc+KG5ld0J1ZmZlclNpemUpKSwgIiBieXRlcykgaXMgdG9v
IGxvbmcuIiksIDAsIG1faGFuZHNoYWtlLmNsaWVudE9yaWdpbigpKTsKICAgICByZXR1cm4gZmFs
c2U7CiB9CiAKSW5kZXg6IFdlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuY3Bw
CShyZXZpc2lvbiA2OTc2NCkKKysrIFdlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hh
a2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Miw2ICs1Miw3IEBACiAjaW5jbHVkZSA8d3RmL3Rl
eHQvQXRvbWljU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1
ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdD
b25jYXRlbmF0ZS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTMxOCw3ICszMTksNyBA
QCBpbnQgV2ViU29ja2V0SGFuZHNoYWtlOjpyZWFkU2VydmVySGFuZHNoCiAgICAgbV9yZXNwb25z
ZS5zZXRTdGF0dXNUZXh0KHN0YXR1c1RleHQpOwogICAgIGlmIChzdGF0dXNDb2RlICE9IDEwMSkg
ewogICAgICAgICBtX21vZGUgPSBGYWlsZWQ7Ci0gICAgICAgIG1fY29udGV4dC0+YWRkTWVzc2Fn
ZShKU01lc3NhZ2VTb3VyY2UsIExvZ01lc3NhZ2VUeXBlLCBFcnJvck1lc3NhZ2VMZXZlbCwgU3Ry
aW5nOjpmb3JtYXQoIlVuZXhwZWN0ZWQgcmVzcG9uc2UgY29kZTogJWQiLCBzdGF0dXNDb2RlKSwg
MCwgY2xpZW50T3JpZ2luKCkpOworICAgICAgICBtX2NvbnRleHQtPmFkZE1lc3NhZ2UoSlNNZXNz
YWdlU291cmNlLCBMb2dNZXNzYWdlVHlwZSwgRXJyb3JNZXNzYWdlTGV2ZWwsIG1ha2VTdHJpbmco
IlVuZXhwZWN0ZWQgcmVzcG9uc2UgY29kZTogIiwgU3RyaW5nOjpudW1iZXIoc3RhdHVzQ29kZSkp
LCAwLCBjbGllbnRPcmlnaW4oKSk7CiAgICAgICAgIHJldHVybiBsZW47CiAgICAgfQogICAgIG1f
bW9kZSA9IE5vcm1hbDsKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDY5NzY0KQorKysgTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTAtMTAtMTQgIE5p
a29sYXMgWmltbWVybWFubiAgPG56aW1tZXJtYW5uQHJpbS5jb20+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVwbGFjZSBsb3RzIG9mIFN0cmluZzo6
Zm9ybWF0KCkgdXNhZ2VzIGJ5IFN0cmluZ0NvbmNhdGVuYXRlCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NzY2NAorCisgICAgICAgIFJlYmFzZWxpbmUg
dHdvIHhzc0F1ZGl0b3IgdGVzdHMsIHRoYXQgaGF2ZSBiZWVuIGNoYW5nZWQsIGFmdGVyIHN3aXRj
aGluZyBmcm9tIFN0cmluZzo6Zm9ybWF0KCkgLT4gbWFrZVN0cmluZygpLgorCisgICAgICAgICog
aHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL2VtYmVkLXRhZy1udWxsLWNoYXItZXhwZWN0
ZWQudHh0OgorICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci9vYmplY3Qt
ZW1iZWQtdGFnLW51bGwtY2hhci1leHBlY3RlZC50eHQ6CisKIDIwMTAtMTAtMTQgIFN0ZXZlIEJs
b2NrICA8c3RldmVibG9ja0Bnb29nbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEplcmVt
eSBPcmxvdy4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRv
ci9lbWJlZC10YWctbnVsbC1jaGFyLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3IvZW1iZWQtdGFnLW51bGwtY2hhci1l
eHBlY3RlZC50eHQJKHJldmlzaW9uIDY5NzY0KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9z
ZWN1cml0eS94c3NBdWRpdG9yL2VtYmVkLXRhZy1udWxsLWNoYXItZXhwZWN0ZWQudHh0CSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMyBAQAotQ09OU09MRSBNRVNTQUdFOiBsaW5lIDE6IFJlZnVz
ZWQgdG8gbG9hZCBhbiBvYmplY3QuIFVSTCBmb3VuZCB3aXRoaW4gcmVxdWVzdDogImh0dHA6Ly8x
MjcuMC4wLjE6ODAwMC9zZWPDr8K/wr11cml0eS94c3NBdWRpdG9yL3Jlc291cmNlcy9kdW1teS5z
d2YiLgorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDE6IFJlZnVzZWQgdG8gbG9hZCBhbiBvYmplY3Qu
IFVSTCBmb3VuZCB3aXRoaW4gcmVxdWVzdDogImh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9zZWPvv711
cml0eS94c3NBdWRpdG9yL3Jlc291cmNlcy9kdW1teS5zd2YiLgogCiAKSW5kZXg6IExheW91dFRl
c3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci9vYmplY3QtZW1iZWQtdGFnLW51bGwt
Y2hhci1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9z
ZWN1cml0eS94c3NBdWRpdG9yL29iamVjdC1lbWJlZC10YWctbnVsbC1jaGFyLWV4cGVjdGVkLnR4
dAkocmV2aXNpb24gNjk3NjQpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3hz
c0F1ZGl0b3Ivb2JqZWN0LWVtYmVkLXRhZy1udWxsLWNoYXItZXhwZWN0ZWQudHh0CSh3b3JraW5n
IGNvcHkpCkBAIC0xLDUgKzEsNSBAQAotQ09OU09MRSBNRVNTQUdFOiBsaW5lIDE6IFJlZnVzZWQg
dG8gbG9hZCBhbiBvYmplY3QuIFVSTCBmb3VuZCB3aXRoaW4gcmVxdWVzdDogImh0dHA6Ly8xMjcu
MC4wLjE6ODAwMC9zZWPDr8K/wr11cml0eS94c3NBdWRpdG9yL3Jlc291cmNlcy9kdW1teS5zd2Yi
LgorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDE6IFJlZnVzZWQgdG8gbG9hZCBhbiBvYmplY3QuIFVS
TCBmb3VuZCB3aXRoaW4gcmVxdWVzdDogImh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9zZWPvv711cml0
eS94c3NBdWRpdG9yL3Jlc291cmNlcy9kdW1teS5zd2YiLgogCi1DT05TT0xFIE1FU1NBR0U6IGxp
bmUgMTogUmVmdXNlZCB0byBsb2FkIGFuIG9iamVjdC4gVVJMIGZvdW5kIHdpdGhpbiByZXF1ZXN0
OiAiaHR0cDovLzEyNy4wLjAuMTo4MDAwL3NlY8Ovwr/CvXVyaXR5L3hzc0F1ZGl0b3IvcmVzb3Vy
Y2VzL2R1bW15LnN3ZiIuCitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMTogUmVmdXNlZCB0byBsb2Fk
IGFuIG9iamVjdC4gVVJMIGZvdW5kIHdpdGhpbiByZXF1ZXN0OiAiaHR0cDovLzEyNy4wLjAuMTo4
MDAwL3NlY++/vXVyaXR5L3hzc0F1ZGl0b3IvcmVzb3VyY2VzL2R1bW15LnN3ZiIuCiAKIAo=
</data>
<flag name="review"
          id="60657"
          type_id="1"
          status="+"
          setter="barraclough"
    />
          </attachment>
      

    </bug>

</bugzilla>