<?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>32638</bug_id>
          
          <creation_ts>2009-12-16 15:49:23 -0800</creation_ts>
          <short_desc>[V8] V8CustomBinding.h should vanish.</short_desc>
          <delta_ts>2010-02-04 11:36:52 -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 JavaScript</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>32844</dependson>
    
    <dependson>33156</dependson>
    
    <dependson>33182</dependson>
    
    <dependson>33223</dependson>
    
    <dependson>33329</dependson>
    
    <dependson>33547</dependson>
    
    <dependson>33680</dependson>
    
    <dependson>34026</dependson>
          <blocked>32630</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Dimitri Glazkov (Google)">dglazkov</reporter>
          <assigned_to name="Nate Chapin">japhet</assigned_to>
          <cc>abarth</cc>
    
    <cc>japhet</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>172555</commentid>
    <comment_count>0</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2009-12-16 15:49:23 -0800</bug_when>
    <thetext>It&apos;s just a long list of all custom callback declarations. These should just live in the corresponding generated headers.

Net gain of not having to touch one extra place when custom methods are added to IDLs is an epic win.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>172558</commentid>
    <comment_count>1</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2009-12-16 15:53:28 -0800</bug_when>
    <thetext>This may be not-so-trivial, because we&apos;ll have to break the V8Custom class up, but I think the reason behind this class&apos; existence is bogus, so I&apos;d say it&apos;s doable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>172976</commentid>
    <comment_count>2</comment_count>
      <attachid>45106</attachid>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2009-12-17 15:58:48 -0800</bug_when>
    <thetext>Created attachment 45106
Generate header declarations for non-constructor callbacks

I didn&apos;t immediately see a good way to generate declarations for constructors, so I left them in V8CustomBinding.h.  All the other callbacks are now declared in their respective headers.

This patch is huge, but it&apos;s mostly renaming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>173045</commentid>
    <comment_count>3</comment_count>
      <attachid>45106</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-12-17 22:18:58 -0800</bug_when>
    <thetext>Comment on attachment 45106
Generate header declarations for non-constructor callbacks

No ChangeLog.  Also, this patch does not download and apply to TOT:

http://webkit-commit-queue.appspot.com/patch-status/chromium-ews/45106

Detailed code comments to follow.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>173047</commentid>
    <comment_count>4</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-12-17 22:29:36 -0800</bug_when>
    <thetext>+ static v8::Handle&lt;v8::Value&gt; ${name}Callback(const v8::Arguments&amp;);

Is this adding static declarations to a header file?  Maybe this is part of a class?  But the indent is only two spaces...  Can you attach a sample generated file?

+ class V8HTMLPlugInElement {
+   public:

The public should be indented zero spaces.  You can catch this kind of stuff by running check-webkit-style.  (The stylebot would have caught it if the patch applied to TOT).

+ ACCESSOR_GETTER(ClipboardTypes)

I don&apos;t understand the diff for this function.

- for (HashSet&lt;String&gt;::const_iterator it = types.begin(); it != end; ++it, ++index)
+ for (HashSet&lt;String&gt;::const_iterator it = types.begin(); it != end; ++it, index)

Notice that you lost the &quot;++&quot; before index.  Intensional?

Other than that, looks great!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>173317</commentid>
    <comment_count>5</comment_count>
      <attachid>45184</attachid>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2009-12-18 13:47:26 -0800</bug_when>
    <thetext>Created attachment 45184
Example output

Yeah, sorry for my clumsiness with this patch.

Re: the spacing, I just followed the existing pattern in CodeGeneratorV8.pm, which is hopefully more obvious from the example output.

The removing of the &quot;++&quot; was unintentional and will be fixed in the next patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>173345</commentid>
    <comment_count>6</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-12-18 15:10:02 -0800</bug_when>
    <thetext>I understand now.  The generated code is out of style, but I think we have bigger things to worry about than that.  If you post a new version with the above comments addressed, I think we&apos;re good to go.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>173352</commentid>
    <comment_count>7</comment_count>
      <attachid>45193</attachid>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2009-12-18 15:29:58 -0800</bug_when>
    <thetext>Created attachment 45193
patch2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>173355</commentid>
    <comment_count>8</comment_count>
      <attachid>45194</attachid>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2009-12-18 15:32:20 -0800</bug_when>
    <thetext>Created attachment 45194
patch2 again

Doh, I didn&apos;t upload an up to date version of the patch.  Trying again.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>173356</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2009-12-18 15:35:20 -0800</bug_when>
    <thetext>Attachment 45194 did not pass style-queue:

Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
WebCore/bindings/v8/custom/V8SVGElementInstanceCustom.cpp:34:  Found header this file implements after other header. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
WebCore/bindings/v8/custom/V8SVGLengthCustom.cpp:34:  Found header this file implements after other header. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
Total errors found: 2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>173358</commentid>
    <comment_count>10</comment_count>
      <attachid>45194</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-12-18 15:38:27 -0800</bug_when>
    <thetext>Comment on attachment 45194
patch2 again

Ok.  Can you fix the style nits in a followup patch?  The Chromium EWS is probably processing your patch now.  You might want to give it a few minutes to process your patch.  Here&apos;s the URL that should have the results (yeah, we need a better status dashboard):

http://webkit-commit-queue.appspot.com/patch-status/chromium-ews/45194</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>173985</commentid>
    <comment_count>11</comment_count>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2009-12-21 09:29:21 -0800</bug_when>
    <thetext>(In reply to comment #10)
&gt; (From update of attachment 45194 [details])
&gt; Ok.  Can you fix the style nits in a followup patch?  The Chromium EWS is
&gt; probably processing your patch now.  You might want to give it a few minutes to
&gt; process your patch.  Here&apos;s the URL that should have the results (yeah, we need
&gt; a better status dashboard):
&gt; 
&gt; http://webkit-commit-queue.appspot.com/patch-status/chromium-ews/45194

Is it alright if I ignore the last couple style nits?  The complaint is because of include headers that go like this:

#include &quot;config.h&quot;

#if ENABLED(SVG)
#include &quot;PrimaryHeader.h&quot;

That seems like a reasonable exception to me, but I&apos;m not certain of it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>174022</commentid>
    <comment_count>12</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-12-21 11:33:52 -0800</bug_when>
    <thetext>&gt; #if ENABLED(SVG)
&gt; #include &quot;PrimaryHeader.h&quot;

Yeah, that sounds like a false alarm.  We should fix the tool not to complain in that case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>175388</commentid>
    <comment_count>13</comment_count>
      <attachid>45194</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-12-28 21:40:29 -0800</bug_when>
    <thetext>Comment on attachment 45194
patch2 again

Clearing Adam Barth&apos;s review on this obsolete patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>187541</commentid>
    <comment_count>14</comment_count>
      <attachid>48076</attachid>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2010-02-03 16:23:57 -0800</bug_when>
    <thetext>Created attachment 48076
Death to V8Custom!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>187594</commentid>
    <comment_count>15</comment_count>
      <attachid>48076</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-02-03 18:58:32 -0800</bug_when>
    <thetext>Comment on attachment 48076
Death to V8Custom!

Duuude. Are you eventually going to reduce the V8 bindings code to 0? &apos;cuz I think if you said &quot;yes&quot;, I&apos;d believe ya.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>187597</commentid>
    <comment_count>16</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-02-03 19:07:36 -0800</bug_when>
    <thetext>No GYPI change?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>187880</commentid>
    <comment_count>17</comment_count>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2010-02-04 11:36:52 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/54349</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>45106</attachid>
            <date>2009-12-17 15:58:48 -0800</date>
            <delta_ts>2009-12-18 13:47:26 -0800</delta_ts>
            <desc>Generate header declarations for non-constructor callbacks</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>122109</size>
            <attacher name="Nate Chapin">japhet</attacher>
            
              <data encoding="base64">SW5kZXg6IGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtDQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQot
LS0gYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0JKHJldmlzaW9uIDUyMjYxKQ0K
KysrIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCSh3b3JraW5nIGNvcHkpDQpA
QCAtMjgxLDcgKzI4MSwxNiBAQA0KICAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3RU
ZW1wbGF0ZT4gR2V0U2hhZG93T2JqZWN0VGVtcGxhdGUoKTsKIEVORAogICAgIH0KLQorICAKKyAg
ICBmb3JlYWNoIG15ICRmdW5jdGlvbiAoQHskZGF0YU5vZGUtPmZ1bmN0aW9uc30pIHsKKyAgICAg
ICAgbXkgJG5hbWUgPSAkZnVuY3Rpb24tPnNpZ25hdHVyZS0+bmFtZTsKKyAgICAgICAgcHVzaChA
aGVhZGVyQ29udGVudCwgPDxFTkQpOworICBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+ICR7
bmFtZX1DYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJik7CitFTkQKKyAgICB9CisgICAgCisg
ICAgR2VuZXJhdGVTcGVjaWFsQ2FzZUhlYWRlckRlY2xhcmF0aW9ucygkZGF0YU5vZGUpOworICAg
IAogICAgIHB1c2goQGhlYWRlckNvbnRlbnQsIDw8RU5EKTsKIAogIHByaXZhdGU6CkBAIC0yOTgs
NiArMzA3LDE0IEBADQogICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIjZW5kaWYgLy8gJHtjb25k
aXRpb25hbFN0cmluZ31cblxuIikgaWYgJGNvbmRpdGlvbmFsU3RyaW5nOwogfQogCitzdWIgR2Vu
ZXJhdGVTcGVjaWFsQ2FzZUhlYWRlckRlY2xhcmF0aW9ucworeworICAgIG15ICRkYXRhTm9kZSA9
IHNoaWZ0OworICAgIAorICAgIGlmICgkZGF0YU5vZGUtPm5hbWUgZXEgIkhUTUxDb2xsZWN0aW9u
IiB8fCAkZGF0YU5vZGUtPm5hbWUgZXEgIkhUTUxBbGxDb2xsZWN0aW9uIikgeworICAgICAgICBw
dXNoKEBoZWFkZXJDb250ZW50LCAiICBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGNhbGxB
c0Z1bmN0aW9uQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYpO1xuIik7CisgICAgfQorfQog
CiBzdWIgR2VuZXJhdGVTZXRET01FeGNlcHRpb24KIHsKQEAgLTgzOCwxMiArODU1LDcgQEANCiAg
ICAgICAgICAgICAkZnVuY3Rpb24tPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IlY4
Q3VzdG9tIn0pIHsKICAgICAgICAgICAgIGRpZSAiQ3VzdG9tIGFuZCBWOEN1c3RvbSBzaG91bGQg
YmUgbXV0dWFsbHkgZXhjbHVzaXZlISIKICAgICAgICAgfQotICAgICAgICBteSAkY3VzdG9tRnVu
YyA9ICRmdW5jdGlvbi0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tIn0g
fHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAkZnVuY3Rpb24tPnNpZ25hdHVyZS0+ZXh0ZW5k
ZWRBdHRyaWJ1dGVzLT57IlY4Q3VzdG9tIn07Ci0gICAgICAgIGlmICgkY3VzdG9tRnVuYyBlcSAx
KSB7Ci0gICAgICAgICAgICAkY3VzdG9tRnVuYyA9ICRpbnRlcmZhY2VOYW1lIC4gJGNvZGVHZW5l
cmF0b3ItPldLX3VjZmlyc3QoJG5hbWUpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiAiVjhD
dXN0b206OnY4JHtjdXN0b21GdW5jfUNhbGxiYWNrIjsKKyAgICAgICAgcmV0dXJuICJWOCR7aW50
ZXJmYWNlTmFtZX06OiR7bmFtZX1DYWxsYmFjayI7CiAgICAgfSBlbHNlIHsKICAgICAgICAgcmV0
dXJuICIke2ludGVyZmFjZU5hbWV9SW50ZXJuYWw6OiR7bmFtZX1DYWxsYmFjayI7CiAgICAgfQpJ
bmRleDogYmluZGluZ3MvdjgvVjhET01XcmFwcGVyLmNwcA0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIGJpbmRp
bmdzL3Y4L1Y4RE9NV3JhcHBlci5jcHAJKHJldmlzaW9uIDUyMjYxKQ0KKysrIGJpbmRpbmdzL3Y4
L1Y4RE9NV3JhcHBlci5jcHAJKHdvcmtpbmcgY29weSkNCkBAIC00Nyw4ICs0NywxMCBAQA0KICNp
bmNsdWRlICJWOERPTU1hcC5oIgogI2luY2x1ZGUgIlY4RE9NV2luZG93LmgiCiAjaW5jbHVkZSAi
VjhFdmVudExpc3RlbmVyTGlzdC5oIgorI2luY2x1ZGUgIlY4SFRNTENvbGxlY3Rpb24uaCIKICNp
bmNsdWRlICJWOEluZGV4LmgiCiAjaW5jbHVkZSAiVjhJc29sYXRlZFdvcmxkLmgiCisjaW5jbHVk
ZSAiVjhIVE1MUGx1Z0luRWxlbWVudEN1c3RvbS5oIgogI2luY2x1ZGUgIlY4UHJveHkuaCIKICNp
bmNsdWRlICJXZWJHTEFycmF5LmgiCiAjaW5jbHVkZSAiV2ViR0xVbmlmb3JtTG9jYXRpb24uaCIK
QEAgLTI3NCwxMiArMjc2LDEyIEBADQogICAgIGNhc2UgVjhDbGFzc0luZGV4OjpIVE1MQUxMQ09M
TEVDVElPTjoKICAgICAgICAgZGVzY3JpcHRvci0+SW5zdGFuY2VUZW1wbGF0ZSgpLT5NYXJrQXNV
bmRldGVjdGFibGUoKTsgLy8gZmFsbCB0aHJvdWdoCiAgICAgY2FzZSBWOENsYXNzSW5kZXg6OkhU
TUxDT0xMRUNUSU9OOgotICAgICAgICBkZXNjcmlwdG9yLT5JbnN0YW5jZVRlbXBsYXRlKCktPlNl
dENhbGxBc0Z1bmN0aW9uSGFuZGxlcihVU0VfQ0FMTEJBQ0soSFRNTENvbGxlY3Rpb25DYWxsQXNG
dW5jdGlvbikpOworICAgICAgICBkZXNjcmlwdG9yLT5JbnN0YW5jZVRlbXBsYXRlKCktPlNldENh
bGxBc0Z1bmN0aW9uSGFuZGxlcihWOEhUTUxDb2xsZWN0aW9uOjpjYWxsQXNGdW5jdGlvbkNhbGxi
YWNrKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBWOENsYXNzSW5kZXg6OkhUTUxPUFRJT05T
Q09MTEVDVElPTjoKICAgICAgICAgZGVzY3JpcHRvci0+SW5zdGFuY2VUZW1wbGF0ZSgpLT5TZXRO
YW1lZFByb3BlcnR5SGFuZGxlcihVU0VfTkFNRURfUFJPUEVSVFlfR0VUVEVSKEhUTUxDb2xsZWN0
aW9uKSk7CiAgICAgICAgIGRlc2NyaXB0b3ItPkluc3RhbmNlVGVtcGxhdGUoKS0+U2V0SW5kZXhl
ZFByb3BlcnR5SGFuZGxlcihVU0VfSU5ERVhFRF9QUk9QRVJUWV9HRVRURVIoSFRNTE9wdGlvbnND
b2xsZWN0aW9uKSwgVVNFX0lOREVYRURfUFJPUEVSVFlfU0VUVEVSKEhUTUxPcHRpb25zQ29sbGVj
dGlvbikpOwotICAgICAgICBkZXNjcmlwdG9yLT5JbnN0YW5jZVRlbXBsYXRlKCktPlNldENhbGxB
c0Z1bmN0aW9uSGFuZGxlcihVU0VfQ0FMTEJBQ0soSFRNTENvbGxlY3Rpb25DYWxsQXNGdW5jdGlv
bikpOworICAgICAgICBkZXNjcmlwdG9yLT5JbnN0YW5jZVRlbXBsYXRlKCktPlNldENhbGxBc0Z1
bmN0aW9uSGFuZGxlcihWOEhUTUxDb2xsZWN0aW9uOjpjYWxsQXNGdW5jdGlvbkNhbGxiYWNrKTsK
ICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBWOENsYXNzSW5kZXg6OkhUTUxTRUxFQ1RFTEVNRU5U
OgogICAgICAgICBkZXNjcmlwdG9yLT5JbnN0YW5jZVRlbXBsYXRlKCktPlNldEluZGV4ZWRQcm9w
ZXJ0eUhhbmRsZXIoVVNFX0lOREVYRURfUFJPUEVSVFlfR0VUVEVSKEhUTUxTZWxlY3RFbGVtZW50
KSwgVVNFX0lOREVYRURfUFJPUEVSVFlfU0VUVEVSKEhUTUxTZWxlY3RFbGVtZW50KSwgMCwgMCwg
bm9kZUNvbGxlY3Rpb25JbmRleGVkUHJvcGVydHlFbnVtZXJhdG9yPEhUTUxTZWxlY3RFbGVtZW50
Piwgdjg6OkludGVnZXI6Ok5ldyhWOENsYXNzSW5kZXg6Ok5PREUpKTsKQEAgLTMyMCw3ICszMjIs
NyBAQA0KICAgICAgICAgLy8gaGFuZGxpbmcgY29kZS4KICAgICAgICAgZGVzY3JpcHRvci0+SW5z
dGFuY2VUZW1wbGF0ZSgpLT5TZXROYW1lZFByb3BlcnR5SGFuZGxlcihVU0VfTkFNRURfUFJPUEVS
VFlfR0VUVEVSKEhUTUxQbHVnSW5FbGVtZW50KSwgVVNFX05BTUVEX1BST1BFUlRZX1NFVFRFUihI
VE1MUGx1Z0luRWxlbWVudCkpOwogICAgICAgICBkZXNjcmlwdG9yLT5JbnN0YW5jZVRlbXBsYXRl
KCktPlNldEluZGV4ZWRQcm9wZXJ0eUhhbmRsZXIoVVNFX0lOREVYRURfUFJPUEVSVFlfR0VUVEVS
KEhUTUxQbHVnSW5FbGVtZW50KSwgVVNFX0lOREVYRURfUFJPUEVSVFlfU0VUVEVSKEhUTUxQbHVn
SW5FbGVtZW50KSk7Ci0gICAgICAgIGRlc2NyaXB0b3ItPkluc3RhbmNlVGVtcGxhdGUoKS0+U2V0
Q2FsbEFzRnVuY3Rpb25IYW5kbGVyKFVTRV9DQUxMQkFDSyhIVE1MUGx1Z0luRWxlbWVudCkpOwor
ICAgICAgICBkZXNjcmlwdG9yLT5JbnN0YW5jZVRlbXBsYXRlKCktPlNldENhbGxBc0Z1bmN0aW9u
SGFuZGxlcihWOEhUTUxQbHVnSW5FbGVtZW50OjpkZWZhdWx0Q2FsbGJhY2spOwogICAgICAgICBi
cmVhazsKICAgICBjYXNlIFY4Q2xhc3NJbmRleDo6SFRNTEZSQU1FU0VURUxFTUVOVDoKICAgICAg
ICAgZGVzY3JpcHRvci0+SW5zdGFuY2VUZW1wbGF0ZSgpLT5TZXROYW1lZFByb3BlcnR5SGFuZGxl
cihVU0VfTkFNRURfUFJPUEVSVFlfR0VUVEVSKEhUTUxGcmFtZVNldEVsZW1lbnQpKTsKSW5kZXg6
IGJpbmRpbmdzL3Y4L2N1c3RvbS9WOFdlYkdMRmxvYXRBcnJheUN1c3RvbS5jcHANCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0NCi0tLSBiaW5kaW5ncy92OC9jdXN0b20vVjhXZWJHTEZsb2F0QXJyYXlDdXN0b20uY3BwCShy
ZXZpc2lvbiA1MjI2MSkNCisrKyBiaW5kaW5ncy92OC9jdXN0b20vVjhXZWJHTEZsb2F0QXJyYXlD
dXN0b20uY3BwCSh3b3JraW5nIGNvcHkpDQpAQCAtNDQsNyArNDQsNyBAQA0KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi1DQUxMQkFDS19GVU5DX0RFQ0woV2ViR0xGbG9hdEFycmF5Q29uc3RydWN0
b3IpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhDdXN0b206OnY4V2ViR0xGbG9hdEFycmF5Q29u
c3RydWN0b3JDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAgIElOQ19T
VEFUUygiRE9NLldlYkdMRmxvYXRBcnJheS5Db250cnVjdG9yIik7CiAKQEAgLTc2LDEzICs3Niwx
MyBAQA0KICAgICByZXR1cm4gdmFsdWU7CiB9CiAKLUNBTExCQUNLX0ZVTkNfREVDTChXZWJHTEZs
b2F0QXJyYXlHZXQpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhXZWJHTEZsb2F0QXJyYXk6Omdl
dENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgSU5DX1NUQVRTKCJE
T00uV2ViR0xGbG9hdEFycmF5LmdldCgpIik7CiAgICAgcmV0dXJuIGdldFdlYkdMQXJyYXlFbGVt
ZW50PFdlYkdMRmxvYXRBcnJheSwgZmxvYXQ+KGFyZ3MsIFY4Q2xhc3NJbmRleDo6V0VCR0xGTE9B
VEFSUkFZKTsKIH0KIAotQ0FMTEJBQ0tfRlVOQ19ERUNMKFdlYkdMRmxvYXRBcnJheVNldCkKK3Y4
OjpIYW5kbGU8djg6OlZhbHVlPiBWOFdlYkdMRmxvYXRBcnJheTo6c2V0Q2FsbGJhY2soY29uc3Qg
djg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBJTkNfU1RBVFMoIkRPTS5XZWJHTEZsb2F0QXJy
YXkuc2V0KCkiKTsKICAgICByZXR1cm4gc2V0V2ViR0xBcnJheTxXZWJHTEZsb2F0QXJyYXksIFY4
V2ViR0xGbG9hdEFycmF5PihhcmdzLCBWOENsYXNzSW5kZXg6OldFQkdMRkxPQVRBUlJBWSk7Cklu
ZGV4OiBiaW5kaW5ncy92OC9jdXN0b20vVjhET01BcHBsaWNhdGlvbkNhY2hlQ3VzdG9tLmNwcA0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQ0KLS0tIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOERPTUFwcGxpY2F0aW9uQ2FjaGVD
dXN0b20uY3BwCShyZXZpc2lvbiA1MjI2MSkNCisrKyBiaW5kaW5ncy92OC9jdXN0b20vVjhET01B
cHBsaWNhdGlvbkNhY2hlQ3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQ0KQEAgLTI5LDExICsyOSwx
MiBAQA0KICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiRE9NQXBwbGljYXRp
b25DYWNoZS5oIgorI2luY2x1ZGUgIlY4RE9NQXBwbGljYXRpb25DYWNoZS5oIgogCiAjaWYgRU5B
QkxFKE9GRkxJTkVfV0VCX0FQUExJQ0FUSU9OUykKIAogI2luY2x1ZGUgIkFwcGxpY2F0aW9uQ2Fj
aGVIb3N0LmgiCisjaW5jbHVkZSAiRE9NQXBwbGljYXRpb25DYWNoZS5oIgogI2luY2x1ZGUgIlY4
QmluZGluZy5oIgogI2luY2x1ZGUgIlY4Q3VzdG9tQmluZGluZy5oIgogI2luY2x1ZGUgIlY4RG9j
dW1lbnQuaCIKQEAgLTQ0LDcgKzQ1LDcgQEANCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIC8vIEhh
bmRsZXMgYXBwY2FjaGUuYWRkRXZlbnRMaXN0bmVyKG5hbWUsIGZ1bmMsIGNhcHR1cmUpIG1ldGhv
ZCBjYWxscwotQ0FMTEJBQ0tfRlVOQ19ERUNMKERPTUFwcGxpY2F0aW9uQ2FjaGVBZGRFdmVudExp
c3RlbmVyKQorICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOERPTUFwcGxpY2F0aW9uQ2FjaGU6
OmFkZEV2ZW50TGlzdGVuZXJDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewog
ICAgIElOQ19TVEFUUygiRE9NQXBwbGljYXRpb25DYWNoZS5hZGRFdmVudExpc3RlbmVyKCkiKTsK
ICAgICBET01BcHBsaWNhdGlvbkNhY2hlKiBhcHBjYWNoZSA9IFY4RE9NV3JhcHBlcjo6Y29udmVy
dFRvTmF0aXZlT2JqZWN0PERPTUFwcGxpY2F0aW9uQ2FjaGU+KFY4Q2xhc3NJbmRleDo6RE9NQVBQ
TElDQVRJT05DQUNIRSwgYXJncy5Ib2xkZXIoKSk7CkBAIC02MCw3ICs2MSw3IEBADQogfQogCiAv
LyBIYW5kbGVzIGFwcGNhY2hlLnJlbW92ZUV2ZW50TGlzdG5lcihuYW1lLCBmdW5jLCBjYXB0dXJl
KSBtZXRob2QgY2FsbHMKLUNBTExCQUNLX0ZVTkNfREVDTChET01BcHBsaWNhdGlvbkNhY2hlUmVt
b3ZlRXZlbnRMaXN0ZW5lcikKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOERPTUFwcGxpY2F0aW9u
Q2FjaGU6OnJlbW92ZUV2ZW50TGlzdGVuZXJDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBh
cmdzKQogewogICAgIElOQ19TVEFUUygiRE9NQXBwbGljYXRpb25DYWNoZS5yZW1vdmVFdmVudExp
c3RlbmVyKCkiKTsKICAgICBET01BcHBsaWNhdGlvbkNhY2hlKiBhcHBjYWNoZSA9IFY4RE9NV3Jh
cHBlcjo6Y29udmVydFRvTmF0aXZlT2JqZWN0PERPTUFwcGxpY2F0aW9uQ2FjaGU+KFY4Q2xhc3NJ
bmRleDo6RE9NQVBQTElDQVRJT05DQUNIRSwgYXJncy5Ib2xkZXIoKSk7CkluZGV4OiBiaW5kaW5n
cy92OC9jdXN0b20vVjhNZXNzYWdlQ2hhbm5lbENvbnN0cnVjdG9yLmNwcA0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0K
LS0tIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOE1lc3NhZ2VDaGFubmVsQ29uc3RydWN0b3IuY3BwCShy
ZXZpc2lvbiA1MjI2MSkNCisrKyBiaW5kaW5ncy92OC9jdXN0b20vVjhNZXNzYWdlQ2hhbm5lbENv
bnN0cnVjdG9yLmNwcAkod29ya2luZyBjb3B5KQ0KQEAgLTQ0LDcgKzQ0LDcgQEANCiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotQ0FMTEJBQ0tfRlVOQ19ERUNMKE1lc3NhZ2VDaGFubmVsQ29uc3Ry
dWN0b3IpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhDdXN0b206OnY4TWVzc2FnZUNoYW5uZWxD
b25zdHJ1Y3RvckNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgSU5D
X1NUQVRTKCJET00uTWVzc2FnZUNoYW5uZWwuQ29uc3RydWN0b3IiKTsKICAgICAvLyBGSVhNRTog
VGhlIGxvZ2ljIGhlcmUgaXMgYWxtb3N0IGV4YWN0IGR1cGxpY2F0ZSBvZiBWODo6Y29uc3RydWN0
RE9NT2JqZWN0LgpJbmRleDogYmluZGluZ3MvdjgvY3VzdG9tL1Y4V2ViR0xBcnJheUJ1ZmZlckN1
c3RvbS5jcHANCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0NCi0tLSBiaW5kaW5ncy92OC9jdXN0b20vVjhXZWJHTEFycmF5
QnVmZmVyQ3VzdG9tLmNwcAkocmV2aXNpb24gNTIyNjEpDQorKysgYmluZGluZ3MvdjgvY3VzdG9t
L1Y4V2ViR0xBcnJheUJ1ZmZlckN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkNCkBAIC00MSw3ICs0
MSw3IEBADQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUNBTExCQUNLX0ZVTkNfREVDTChXZWJH
TEFycmF5QnVmZmVyQ29uc3RydWN0b3IpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhDdXN0b206
OnY4V2ViR0xBcnJheUJ1ZmZlckNvbnN0cnVjdG9yQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50
cyYgYXJncykKIHsKICAgICBJTkNfU1RBVFMoIkRPTS5XZWJHTEFycmF5QnVmZmVyLkNvbnN0cnVj
dG9yIik7CiAKSW5kZXg6IGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxJbnB1dEVsZW1lbnRDdXN0
b20uY3BwDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09DQotLS0gYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTElucHV0RWxl
bWVudEN1c3RvbS5jcHAJKHJldmlzaW9uIDUyMjYxKQ0KKysrIGJpbmRpbmdzL3Y4L2N1c3RvbS9W
OEhUTUxJbnB1dEVsZW1lbnRDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpDQpAQCAtMjksNiArMjks
OCBAQA0KICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiVjhIVE1MSW5wdXRF
bGVtZW50LmgiCisKICNpbmNsdWRlICJIVE1MSW5wdXRFbGVtZW50LmgiCiAKICNpbmNsdWRlICJW
OEJpbmRpbmcuaCIKQEAgLTkwLDcgKzkyLDcgQEANCiAgICAgaW1wLT5zZXRTZWxlY3Rpb25FbmQo
dmFsdWUtPkludDMyVmFsdWUoKSk7CiB9CiAKLUNBTExCQUNLX0ZVTkNfREVDTChIVE1MSW5wdXRF
bGVtZW50U2V0U2VsZWN0aW9uUmFuZ2UpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhIVE1MSW5w
dXRFbGVtZW50OjpzZXRTZWxlY3Rpb25SYW5nZUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMm
IGFyZ3MpCiB7CiAgICAgSU5DX1NUQVRTKCJET00uSFRNTElucHV0RWxlbWVudC5zZXRTZWxlY3Rp
b25SYW5nZSIpOwogICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gaG9sZGVyID0gYXJncy5Ib2xk
ZXIoKTsKSW5kZXg6IGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxGb3JtRWxlbWVudEN1c3RvbS5j
cHANCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0NCi0tLSBiaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MRm9ybUVsZW1lbnRD
dXN0b20uY3BwCShyZXZpc2lvbiA1MjI2MSkNCisrKyBiaW5kaW5ncy92OC9jdXN0b20vVjhIVE1M
Rm9ybUVsZW1lbnRDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpDQpAQCAtMjksOSArMjksMTAgQEAN
CiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkhUTUxGb3JtRWxlbWVudC5o
IgorI2luY2x1ZGUgIlY4SFRNTEZvcm1FbGVtZW50LmgiCiAKICNpbmNsdWRlICJIVE1MQ29sbGVj
dGlvbi5oIgorI2luY2x1ZGUgIkhUTUxGb3JtRWxlbWVudC5oIgogI2luY2x1ZGUgIlY4QmluZGlu
Zy5oIgogI2luY2x1ZGUgIlY4Q3VzdG9tQmluZGluZy5oIgogI2luY2x1ZGUgIlY4TmFtZWROb2Rl
c0NvbGxlY3Rpb24uaCIKQEAgLTgwLDcgKzgxLDggQEANCiAgICAgcmV0dXJuIFY4RE9NV3JhcHBl
cjo6Y29udmVydFRvVjhPYmplY3QoVjhDbGFzc0luZGV4OjpOT0RFTElTVCwgY29sbGVjdGlvbik7
CiB9CiAKLUNBTExCQUNLX0ZVTkNfREVDTChIVE1MRm9ybUVsZW1lbnRTdWJtaXQpIHsKK3Y4OjpI
YW5kbGU8djg6OlZhbHVlPiBWOEhUTUxGb3JtRWxlbWVudDo6c3VibWl0Q2FsbGJhY2soY29uc3Qg
djg6OkFyZ3VtZW50cyYgYXJncykKK3sKICAgICBJTkNfU1RBVFMoIkRPTS5IVE1MRm9ybUVsZW1l
bnQuc3VibWl0KCkiKTsKICAgICBIVE1MRm9ybUVsZW1lbnQqIGZvcm0gPSBWOERPTVdyYXBwZXI6
OmNvbnZlcnRET01XcmFwcGVyVG9OYXRpdmU8SFRNTEZvcm1FbGVtZW50PihhcmdzLkhvbGRlcigp
KTsKICAgICBGcmFtZSogZnJhbWUgPSBWOFByb3h5OjpyZXRyaWV2ZUZyYW1lRm9yRW50ZXJlZENv
bnRleHQoKTsKSW5kZXg6IGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxQbHVnSW5FbGVtZW50Q3Vz
dG9tLmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0NCi0tLSBiaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MUGx1Z0luRWxl
bWVudEN1c3RvbS5oCShyZXZpc2lvbiAwKQ0KKysrIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxQ
bHVnSW5FbGVtZW50Q3VzdG9tLmgJKHJldmlzaW9uIDApDQpAQCAtMCwwICsxLDQ2IEBADQorLyoK
KyAqIENvcHlyaWdodCAoYykgMjAwOSBHb29nbGUgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIAorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKiAKKyAq
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0
aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
CisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJ
bmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqIAorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRS
SUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAq
IE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaWZuZGVmIFY4SFRNTFBsdWdJbkVsZW1lbnRDdXN0b21faAorI2RlZmluZSBWOEhUTUxQbHVn
SW5FbGVtZW50Q3VzdG9tX2gKKworI2luY2x1ZGUgPHY4Lmg+CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworY2xhc3MgVjhIVE1MUGx1Z0luRWxlbWVudCB7CisgIHB1YmxpYzoKKyAgICBzdGF0aWMg
djg6OkhhbmRsZTx2ODo6VmFsdWU+IGRlZmF1bHRDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRz
Jik7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBWOEhUTUxQbHVn
SW5FbGVtZW50Q3VzdG9tX2gKSW5kZXg6IGJpbmRpbmdzL3Y4L2N1c3RvbS9WOFdlYkdMUmVuZGVy
aW5nQ29udGV4dEN1c3RvbS5jcHANCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBiaW5kaW5ncy92OC9jdXN0b20v
VjhXZWJHTFJlbmRlcmluZ0NvbnRleHRDdXN0b20uY3BwCShyZXZpc2lvbiA1MjI2MSkNCisrKyBi
aW5kaW5ncy92OC9jdXN0b20vVjhXZWJHTFJlbmRlcmluZ0NvbnRleHRDdXN0b20uY3BwCSh3b3Jr
aW5nIGNvcHkpDQpAQCAtMzIsNyArMzIsNyBAQA0KIAogI2lmIEVOQUJMRSgzRF9DQU5WQVMpCiAK
LSNpbmNsdWRlICJXZWJHTFJlbmRlcmluZ0NvbnRleHQuaCIKKyNpbmNsdWRlICJWOFdlYkdMUmVu
ZGVyaW5nQ29udGV4dC5oIgogCiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgogCkBAIC01NSw2
ICs1NSw3IEBADQogI2luY2x1ZGUgIlY4SFRNTENhbnZhc0VsZW1lbnQuaCIKICNpbmNsdWRlICJW
OEhUTUxJbWFnZUVsZW1lbnQuaCIKICNpbmNsdWRlICJWOFByb3h5LmgiCisjaW5jbHVkZSAiV2Vi
R0xSZW5kZXJpbmdDb250ZXh0LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtOTgsNyAr
OTksNyBAQA0KICAgICByZXR1cm4gZGF0YTsKIH0KIAotQ0FMTEJBQ0tfRlVOQ19ERUNMKFdlYkdM
UmVuZGVyaW5nQ29udGV4dEJ1ZmZlckRhdGEpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhXZWJH
TFJlbmRlcmluZ0NvbnRleHQ6OmJ1ZmZlckRhdGFDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRz
JiBhcmdzKQogewogICAgIElOQ19TVEFUUygiRE9NLldlYkdMUmVuZGVyaW5nQ29udGV4dC5idWZm
ZXJEYXRhKCkiKTsKIApAQCAtMTQwLDcgKzE0MSw3IEBADQogICAgIHJldHVybiB2ODo6VW5kZWZp
bmVkKCk7CiB9CiAKLUNBTExCQUNLX0ZVTkNfREVDTChXZWJHTFJlbmRlcmluZ0NvbnRleHRCdWZm
ZXJTdWJEYXRhKQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4V2ViR0xSZW5kZXJpbmdDb250ZXh0
OjpidWZmZXJTdWJEYXRhQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAg
ICBJTkNfU1RBVFMoIkRPTS5XZWJHTFJlbmRlcmluZ0NvbnRleHQuYnVmZmVyU3ViRGF0YSgpIik7
CiAKQEAgLTI4MCwxMyArMjgxLDEzIEBADQogICAgIGtQcm9ncmFtUGFyYW1ldGVyLCBrVW5pZm9y
bQogfTsKIAotQ0FMTEJBQ0tfRlVOQ19ERUNMKFdlYkdMUmVuZGVyaW5nQ29udGV4dEdldEJ1ZmZl
clBhcmFtZXRlcikKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFdlYkdMUmVuZGVyaW5nQ29udGV4
dDo6Z2V0QnVmZmVyUGFyYW1ldGVyQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykK
IHsKICAgICBJTkNfU1RBVFMoIkRPTS5XZWJHTFJlbmRlcmluZ0NvbnRleHQuZ2V0QnVmZmVyUGFy
YW1ldGVyKCkiKTsKICAgICByZXR1cm4gZ2V0T2JqZWN0UGFyYW1ldGVyKGFyZ3MsIGtCdWZmZXIp
OwogfQogCi1DQUxMQkFDS19GVU5DX0RFQ0woV2ViR0xSZW5kZXJpbmdDb250ZXh0R2V0RnJhbWVi
dWZmZXJBdHRhY2htZW50UGFyYW1ldGVyKQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4V2ViR0xS
ZW5kZXJpbmdDb250ZXh0OjpnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJDYWxsYmFj
ayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAgIElOQ19TVEFUUygiRE9NLldlYkdM
UmVuZGVyaW5nQ29udGV4dC5nZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIoKSIpOwog
CkBAIC0zMjIsNyArMzIzLDcgQEANCiAgICAgcmV0dXJuIHRvVjgoaW5mbyk7CiB9CiAKLUNBTExC
QUNLX0ZVTkNfREVDTChXZWJHTFJlbmRlcmluZ0NvbnRleHRHZXRQYXJhbWV0ZXIpCit2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gVjhXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFBhcmFtZXRlckNhbGxi
YWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgSU5DX1NUQVRTKCJET00uV2Vi
R0xSZW5kZXJpbmdDb250ZXh0LmdldFBhcmFtZXRlcigpIik7CiAKQEAgLTM0OCw3ICszNDksNyBA
QA0KICAgICByZXR1cm4gdG9WOChpbmZvKTsKIH0KIAotQ0FMTEJBQ0tfRlVOQ19ERUNMKFdlYkdM
UmVuZGVyaW5nQ29udGV4dEdldFByb2dyYW1QYXJhbWV0ZXIpCit2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gVjhXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFByb2dyYW1QYXJhbWV0ZXJDYWxsYmFjayhj
b25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAgIElOQ19TVEFUUygiRE9NLldlYkdMUmVu
ZGVyaW5nQ29udGV4dC5nZXRQcm9ncmFtUGFyYW1ldGVyKCkiKTsKIApAQCAtMzc1LDEzICszNzYs
MTMgQEANCiAgICAgcmV0dXJuIHRvVjgoaW5mbyk7CiB9CiAKLUNBTExCQUNLX0ZVTkNfREVDTChX
ZWJHTFJlbmRlcmluZ0NvbnRleHRHZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXIpCit2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gVjhXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFJlbmRlcmJ1ZmZlclBhcmFt
ZXRlckNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgSU5DX1NUQVRT
KCJET00uV2ViR0xSZW5kZXJpbmdDb250ZXh0LmdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcigpIik7
CiAgICAgcmV0dXJuIGdldE9iamVjdFBhcmFtZXRlcihhcmdzLCBrUmVuZGVyYnVmZmVyKTsKIH0K
IAotQ0FMTEJBQ0tfRlVOQ19ERUNMKFdlYkdMUmVuZGVyaW5nQ29udGV4dEdldFNoYWRlclBhcmFt
ZXRlcikKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0
U2hhZGVyUGFyYW1ldGVyQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAg
ICBJTkNfU1RBVFMoIkRPTS5XZWJHTFJlbmRlcmluZ0NvbnRleHQuZ2V0U2hhZGVyUGFyYW1ldGVy
KCkiKTsKIApAQCAtNDA4LDEzICs0MDksMTMgQEANCiAgICAgcmV0dXJuIHRvVjgoaW5mbyk7CiB9
CiAKLUNBTExCQUNLX0ZVTkNfREVDTChXZWJHTFJlbmRlcmluZ0NvbnRleHRHZXRUZXhQYXJhbWV0
ZXIpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFRl
eFBhcmFtZXRlckNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgSU5D
X1NUQVRTKCJET00uV2ViR0xSZW5kZXJpbmdDb250ZXh0LmdldFRleFBhcmFtZXRlcigpIik7CiAg
ICAgcmV0dXJuIGdldE9iamVjdFBhcmFtZXRlcihhcmdzLCBrVGV4dHVyZSk7CiB9CiAKLUNBTExC
QUNLX0ZVTkNfREVDTChXZWJHTFJlbmRlcmluZ0NvbnRleHRHZXRVbmlmb3JtKQordjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IFY4V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRVbmlmb3JtQ2FsbGJhY2so
Y29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBJTkNfU1RBVFMoIkRPTS5XZWJHTFJl
bmRlcmluZ0NvbnRleHQuZ2V0VW5pZm9ybSgpIik7CiAKQEAgLTQ0MywxMyArNDQ0LDEzIEBADQog
ICAgIHJldHVybiB0b1Y4KGluZm8pOwogfQogCi1DQUxMQkFDS19GVU5DX0RFQ0woV2ViR0xSZW5k
ZXJpbmdDb250ZXh0R2V0VmVydGV4QXR0cmliKQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4V2Vi
R0xSZW5kZXJpbmdDb250ZXh0OjpnZXRWZXJ0ZXhBdHRyaWJDYWxsYmFjayhjb25zdCB2ODo6QXJn
dW1lbnRzJiBhcmdzKQogewogICAgIElOQ19TVEFUUygiRE9NLldlYkdMUmVuZGVyaW5nQ29udGV4
dC5nZXRWZXJ0ZXhBdHRyaWIoKSIpOwogICAgIHJldHVybiBnZXRPYmplY3RQYXJhbWV0ZXIoYXJn
cywga1ZlcnRleEF0dHJpYik7CiB9CiAKLUNBTExCQUNLX0ZVTkNfREVDTChXZWJHTFJlbmRlcmlu
Z0NvbnRleHRUZXhJbWFnZTJEKQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4V2ViR0xSZW5kZXJp
bmdDb250ZXh0Ojp0ZXhJbWFnZTJEQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykK
IHsKICAgICBJTkNfU1RBVFMoIkRPTS5XZWJHTFJlbmRlcmluZ0NvbnRleHQudGV4SW1hZ2UyRCgp
Iik7CiAKQEAgLTU3MSw3ICs1NzIsNyBAQA0KICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwog
fQogCi1DQUxMQkFDS19GVU5DX0RFQ0woV2ViR0xSZW5kZXJpbmdDb250ZXh0VGV4U3ViSW1hZ2Uy
RCkKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dGV4U3Vi
SW1hZ2UyRENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgSU5DX1NU
QVRTKCJET00uV2ViR0xSZW5kZXJpbmdDb250ZXh0LnRleFN1YkltYWdlMkQoKSIpOwogCkBAIC03
NjMsNDkgKzc2NCw0OSBAQA0KICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwogfQogCi1DQUxM
QkFDS19GVU5DX0RFQ0woV2ViR0xSZW5kZXJpbmdDb250ZXh0VW5pZm9ybTFmdikKK3Y4OjpIYW5k
bGU8djg6OlZhbHVlPiBWOFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybTFmdkNhbGxiYWNr
KGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgSU5DX1NUQVRTKCJET00uV2ViR0xS
ZW5kZXJpbmdDb250ZXh0LnVuaWZvcm0xZnYoKSIpOwogICAgIHJldHVybiB2ZXJ0ZXhBdHRyaWJB
bmRVbmlmb3JtSGVscGVyZihhcmdzLCBrVW5pZm9ybTF2KTsKIH0KIAotQ0FMTEJBQ0tfRlVOQ19E
RUNMKFdlYkdMUmVuZGVyaW5nQ29udGV4dFVuaWZvcm0xaXYpCit2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gVjhXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm0xaXZDYWxsYmFjayhjb25zdCB2ODo6
QXJndW1lbnRzJiBhcmdzKQogewogICAgIElOQ19TVEFUUygiRE9NLldlYkdMUmVuZGVyaW5nQ29u
dGV4dC51bmlmb3JtMWl2KCkiKTsKICAgICByZXR1cm4gdW5pZm9ybUhlbHBlcmkoYXJncywga1Vu
aWZvcm0xdik7CiB9CiAKLUNBTExCQUNLX0ZVTkNfREVDTChXZWJHTFJlbmRlcmluZ0NvbnRleHRV
bmlmb3JtMmZ2KQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4V2ViR0xSZW5kZXJpbmdDb250ZXh0
Ojp1bmlmb3JtMmZ2Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBJ
TkNfU1RBVFMoIkRPTS5XZWJHTFJlbmRlcmluZ0NvbnRleHQudW5pZm9ybTJmdigpIik7CiAgICAg
cmV0dXJuIHZlcnRleEF0dHJpYkFuZFVuaWZvcm1IZWxwZXJmKGFyZ3MsIGtVbmlmb3JtMnYpOwog
fQogCi1DQUxMQkFDS19GVU5DX0RFQ0woV2ViR0xSZW5kZXJpbmdDb250ZXh0VW5pZm9ybTJpdikK
K3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybTJp
dkNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgSU5DX1NUQVRTKCJE
T00uV2ViR0xSZW5kZXJpbmdDb250ZXh0LnVuaWZvcm0yaXYoKSIpOwogICAgIHJldHVybiB1bmlm
b3JtSGVscGVyaShhcmdzLCBrVW5pZm9ybTJ2KTsKIH0KIAotQ0FMTEJBQ0tfRlVOQ19ERUNMKFdl
YkdMUmVuZGVyaW5nQ29udGV4dFVuaWZvcm0zZnYpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhX
ZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm0zZnZDYWxsYmFjayhjb25zdCB2ODo6QXJndW1l
bnRzJiBhcmdzKQogewogICAgIElOQ19TVEFUUygiRE9NLldlYkdMUmVuZGVyaW5nQ29udGV4dC51
bmlmb3JtM2Z2KCkiKTsKICAgICByZXR1cm4gdmVydGV4QXR0cmliQW5kVW5pZm9ybUhlbHBlcmYo
YXJncywga1VuaWZvcm0zdik7CiB9CiAKLUNBTExCQUNLX0ZVTkNfREVDTChXZWJHTFJlbmRlcmlu
Z0NvbnRleHRVbmlmb3JtM2l2KQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4V2ViR0xSZW5kZXJp
bmdDb250ZXh0Ojp1bmlmb3JtM2l2Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykK
IHsKICAgICBJTkNfU1RBVFMoIkRPTS5XZWJHTFJlbmRlcmluZ0NvbnRleHQudW5pZm9ybTNpdigp
Iik7CiAgICAgcmV0dXJuIHVuaWZvcm1IZWxwZXJpKGFyZ3MsIGtVbmlmb3JtM3YpOwogfQogCi1D
QUxMQkFDS19GVU5DX0RFQ0woV2ViR0xSZW5kZXJpbmdDb250ZXh0VW5pZm9ybTRmdikKK3Y4OjpI
YW5kbGU8djg6OlZhbHVlPiBWOFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybTRmdkNhbGxi
YWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgSU5DX1NUQVRTKCJET00uV2Vi
R0xSZW5kZXJpbmdDb250ZXh0LnVuaWZvcm00ZnYoKSIpOwogICAgIHJldHVybiB2ZXJ0ZXhBdHRy
aWJBbmRVbmlmb3JtSGVscGVyZihhcmdzLCBrVW5pZm9ybTR2KTsKIH0KIAotQ0FMTEJBQ0tfRlVO
Q19ERUNMKFdlYkdMUmVuZGVyaW5nQ29udGV4dFVuaWZvcm00aXYpCit2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gVjhXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm00aXZDYWxsYmFjayhjb25zdCB2
ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAgIElOQ19TVEFUUygiRE9NLldlYkdMUmVuZGVyaW5n
Q29udGV4dC51bmlmb3JtNGl2KCkiKTsKICAgICByZXR1cm4gdW5pZm9ybUhlbHBlcmkoYXJncywg
a1VuaWZvcm00dik7CkBAIC04ODEsNDMgKzg4Miw0MyBAQA0KICAgICByZXR1cm4gdjg6OlVuZGVm
aW5lZCgpOwogfQogCi1DQUxMQkFDS19GVU5DX0RFQ0woV2ViR0xSZW5kZXJpbmdDb250ZXh0VW5p
Zm9ybU1hdHJpeDJmdikKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFdlYkdMUmVuZGVyaW5nQ29u
dGV4dDo6dW5pZm9ybU1hdHJpeDJmdkNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3Mp
CiB7CiAgICAgSU5DX1NUQVRTKCJET00uV2ViR0xSZW5kZXJpbmdDb250ZXh0LnVuaWZvcm1NYXRy
aXgyZnYoKSIpOwogICAgIHJldHVybiB1bmlmb3JtTWF0cml4SGVscGVyKGFyZ3MsIDIpOwogfQog
Ci1DQUxMQkFDS19GVU5DX0RFQ0woV2ViR0xSZW5kZXJpbmdDb250ZXh0VW5pZm9ybU1hdHJpeDNm
dikKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9y
bU1hdHJpeDNmdkNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgSU5D
X1NUQVRTKCJET00uV2ViR0xSZW5kZXJpbmdDb250ZXh0LnVuaWZvcm1NYXRyaXgzZnYoKSIpOwog
ICAgIHJldHVybiB1bmlmb3JtTWF0cml4SGVscGVyKGFyZ3MsIDMpOwogfQogCi1DQUxMQkFDS19G
VU5DX0RFQ0woV2ViR0xSZW5kZXJpbmdDb250ZXh0VW5pZm9ybU1hdHJpeDRmdikKK3Y4OjpIYW5k
bGU8djg6OlZhbHVlPiBWOFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybU1hdHJpeDRmdkNh
bGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgSU5DX1NUQVRTKCJET00u
V2ViR0xSZW5kZXJpbmdDb250ZXh0LnVuaWZvcm1NYXRyaXg0ZnYoKSIpOwogICAgIHJldHVybiB1
bmlmb3JtTWF0cml4SGVscGVyKGFyZ3MsIDQpOwogfQogCi1DQUxMQkFDS19GVU5DX0RFQ0woV2Vi
R0xSZW5kZXJpbmdDb250ZXh0VmVydGV4QXR0cmliMWZ2KQordjg6OkhhbmRsZTx2ODo6VmFsdWU+
IFY4V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp2ZXJ0ZXhBdHRyaWIxZnZDYWxsYmFjayhjb25zdCB2
ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAgIElOQ19TVEFUUygiRE9NLldlYkdMUmVuZGVyaW5n
Q29udGV4dC52ZXJ0ZXhBdHRyaWIxZnYoKSIpOwogICAgIHJldHVybiB2ZXJ0ZXhBdHRyaWJBbmRV
bmlmb3JtSGVscGVyZihhcmdzLCBrVmVydGV4QXR0cmliMXYpOwogfQogCi1DQUxMQkFDS19GVU5D
X0RFQ0woV2ViR0xSZW5kZXJpbmdDb250ZXh0VmVydGV4QXR0cmliMmZ2KQordjg6OkhhbmRsZTx2
ODo6VmFsdWU+IFY4V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp2ZXJ0ZXhBdHRyaWIyZnZDYWxsYmFj
ayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAgIElOQ19TVEFUUygiRE9NLldlYkdM
UmVuZGVyaW5nQ29udGV4dC52ZXJ0ZXhBdHRyaWIyZnYoKSIpOwogICAgIHJldHVybiB2ZXJ0ZXhB
dHRyaWJBbmRVbmlmb3JtSGVscGVyZihhcmdzLCBrVmVydGV4QXR0cmliMnYpOwogfQogCi1DQUxM
QkFDS19GVU5DX0RFQ0woV2ViR0xSZW5kZXJpbmdDb250ZXh0VmVydGV4QXR0cmliM2Z2KQordjg6
OkhhbmRsZTx2ODo6VmFsdWU+IFY4V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp2ZXJ0ZXhBdHRyaWIz
ZnZDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAgIElOQ19TVEFUUygi
RE9NLldlYkdMUmVuZGVyaW5nQ29udGV4dC52ZXJ0ZXhBdHRyaWIzZnYoKSIpOwogICAgIHJldHVy
biB2ZXJ0ZXhBdHRyaWJBbmRVbmlmb3JtSGVscGVyZihhcmdzLCBrVmVydGV4QXR0cmliM3YpOwog
fQogCi1DQUxMQkFDS19GVU5DX0RFQ0woV2ViR0xSZW5kZXJpbmdDb250ZXh0VmVydGV4QXR0cmli
NGZ2KQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp2ZXJ0
ZXhBdHRyaWI0ZnZDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAgIElO
Q19TVEFUUygiRE9NLldlYkdMUmVuZGVyaW5nQ29udGV4dC52ZXJ0ZXhBdHRyaWI0ZnYoKSIpOwog
ICAgIHJldHVybiB2ZXJ0ZXhBdHRyaWJBbmRVbmlmb3JtSGVscGVyZihhcmdzLCBrVmVydGV4QXR0
cmliNHYpOwpJbmRleDogYmluZGluZ3MvdjgvY3VzdG9tL1Y4RGF0YWJhc2VDdXN0b20uY3BwDQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09DQotLS0gYmluZGluZ3MvdjgvY3VzdG9tL1Y4RGF0YWJhc2VDdXN0b20uY3BwCShy
ZXZpc2lvbiA1MjI2MSkNCisrKyBiaW5kaW5ncy92OC9jdXN0b20vVjhEYXRhYmFzZUN1c3RvbS5j
cHAJKHdvcmtpbmcgY29weSkNCkBAIC0zMSw2ICszMSw3IEBADQogI2luY2x1ZGUgImNvbmZpZy5o
IgogCiAjaWYgRU5BQkxFKERBVEFCQVNFKQorI2luY2x1ZGUgIlY4RGF0YWJhc2UuaCIKIAogI2lu
Y2x1ZGUgIkRhdGFiYXNlLmgiCiAjaW5jbHVkZSAiVjhCaW5kaW5nLmgiCkBAIC00Miw3ICs0Myw3
IEBADQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUNBTExCQUNLX0ZVTkNfREVDTChEYXRhYmFz
ZUNoYW5nZVZlcnNpb24pCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhEYXRhYmFzZTo6Y2hhbmdl
VmVyc2lvbkNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgSU5DX1NU
QVRTKCJET00uRGF0YWJhc2UuY2hhbmdlVmVyc2lvbigpIik7CiAKQEAgLTEyMywxMyArMTI0LDEz
IEBADQogICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CiB9CiAKLUNBTExCQUNLX0ZVTkNfREVD
TChEYXRhYmFzZVRyYW5zYWN0aW9uKQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4RGF0YWJhc2U6
OnRyYW5zYWN0aW9uQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBJ
TkNfU1RBVFMoIkRPTS5EYXRhYmFzZS50cmFuc2FjdGlvbigpIik7CiAgICAgcmV0dXJuIGNyZWF0
ZVRyYW5zYWN0aW9uKGFyZ3MsIGZhbHNlKTsKIH0KIAotQ0FMTEJBQ0tfRlVOQ19ERUNMKERhdGFi
YXNlUmVhZFRyYW5zYWN0aW9uKQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4RGF0YWJhc2U6OnJl
YWRUcmFuc2FjdGlvbkNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAg
SU5DX1NUQVRTKCJET00uRGF0YWJhc2UucmVhZFRyYW5zYWN0aW9uKCkiKTsKICAgICByZXR1cm4g
Y3JlYXRlVHJhbnNhY3Rpb24oYXJncywgdHJ1ZSk7CkluZGV4OiBiaW5kaW5ncy92OC9jdXN0b20v
VjhET01XaW5kb3dDdXN0b20uY3BwDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gYmluZGluZ3MvdjgvY3VzdG9t
L1Y4RE9NV2luZG93Q3VzdG9tLmNwcAkocmV2aXNpb24gNTIyNjEpDQorKysgYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4RE9NV2luZG93Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQ0KQEAgLTI5LDcgKzI5
LDcgQEANCiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkRPTVdpbmRvdy5o
IgorI2luY2x1ZGUgIlY4RE9NV2luZG93LmgiCiAKICNpbmNsdWRlICJWOEJpbmRpbmcuaCIKICNp
bmNsdWRlICJWOEJpbmRpbmdTdGF0ZS5oIgpAQCAtNDIsNiArNDIsNyBAQA0KICNpbmNsdWRlICJC
YXNlNjQuaCIKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCiAjaW5jbHVkZSAiRE9NVGltZXIu
aCIKKyNpbmNsdWRlICJET01XaW5kb3cuaCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUg
IkZyYW1lTG9hZFJlcXVlc3QuaCIKICNpbmNsdWRlICJGcmFtZVZpZXcuaCIKQEAgLTY3LDcgKzY4
LDcgQEANCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4
Q3VzdG9tOjpXaW5kb3dTZXRUaW1lb3V0SW1wbChjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzLCBi
b29sIHNpbmdsZVNob3QpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gV2luZG93U2V0VGltZW91dElt
cGwoY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncywgYm9vbCBzaW5nbGVTaG90KQogewogICAgIGlu
dCBhcmd1bWVudENvdW50ID0gYXJncy5MZW5ndGgoKTsKIApAQCAtMjEzLDcgKzIxNCw3IEBADQog
QUNDRVNTT1JfU0VUVEVSKERPTVdpbmRvd0xvY2F0aW9uKQogewogICAgIERPTVdpbmRvdyogaW1w
ID0gVjhET01XcmFwcGVyOjpjb252ZXJ0VG9OYXRpdmVPYmplY3Q8RE9NV2luZG93PihWOENsYXNz
SW5kZXg6OkRPTVdJTkRPVywgaW5mby5Ib2xkZXIoKSk7Ci0gICAgV2luZG93U2V0TG9jYXRpb24o
aW1wLCB0b1dlYkNvcmVTdHJpbmcodmFsdWUpKTsKKyAgICBWOEN1c3RvbTo6V2luZG93U2V0TG9j
YXRpb24oaW1wLCB0b1dlYkNvcmVTdHJpbmcodmFsdWUpKTsKIH0KIAogCkBAIC0zMzUsNyArMzM2
LDcgQEANCiAgICAgcmV0dXJuIFY4RE9NV3JhcHBlcjo6Z2V0Q29uc3RydWN0b3IoVjhDbGFzc0lu
ZGV4OjpPUFRJT04sIHdpbmRvdyk7CiB9CiAKLUNBTExCQUNLX0ZVTkNfREVDTChET01XaW5kb3dB
ZGRFdmVudExpc3RlbmVyKQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4RE9NV2luZG93OjphZGRF
dmVudExpc3RlbmVyQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBJ
TkNfU1RBVFMoIkRPTS5ET01XaW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigpIik7CiAKQEAgLTM2OCw3
ICszNjksNyBAQA0KIH0KIAogCi1DQUxMQkFDS19GVU5DX0RFQ0woRE9NV2luZG93UmVtb3ZlRXZl
bnRMaXN0ZW5lcikKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOERPTVdpbmRvdzo6cmVtb3ZlRXZl
bnRMaXN0ZW5lckNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgSU5D
X1NUQVRTKCJET00uRE9NV2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoKSIpOwogCkBAIC0zOTks
NyArNDAwLDcgQEANCiAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKIH0KIAotQ0FMTEJBQ0tf
RlVOQ19ERUNMKERPTVdpbmRvd1Bvc3RNZXNzYWdlKQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4
RE9NV2luZG93Ojpwb3N0TWVzc2FnZUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3Mp
CiB7CiAgICAgSU5DX1NUQVRTKCJET00uRE9NV2luZG93LnBvc3RNZXNzYWdlKCkiKTsKICAgICBE
T01XaW5kb3cqIHdpbmRvdyA9IFY4RE9NV3JhcHBlcjo6Y29udmVydFRvTmF0aXZlT2JqZWN0PERP
TVdpbmRvdz4oVjhDbGFzc0luZGV4OjpET01XSU5ET1csIGFyZ3MuSG9sZGVyKCkpOwpAQCAtNDMy
LDcgKzQzMyw3IEBADQogICAgIHJldHVybiB0aHJvd0Vycm9yKGVjKTsKIH0KIAotQ0FMTEJBQ0tf
RlVOQ19ERUNMKERPTVdpbmRvd0F0b2IpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhET01XaW5k
b3c6OmF0b2JDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAgIElOQ19T
VEFUUygiRE9NLkRPTVdpbmRvdy5hdG9iKCkiKTsKIApAQCAtNDUxLDcgKzQ1Miw3IEBADQogICAg
IHJldHVybiBjb252ZXJ0QmFzZTY0KHN0ciwgZmFsc2UpOwogfQogCi1DQUxMQkFDS19GVU5DX0RF
Q0woRE9NV2luZG93QnRvYSkKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOERPTVdpbmRvdzo6YnRv
YUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgSU5DX1NUQVRTKCJE
T00uRE9NV2luZG93LmJ0b2EoKSIpOwogCkBAIC00NzQsNyArNDc1LDcgQEANCiAvLyBmaXggdGhp
cyBieSBjYWxsaW5nIHRvU3RyaW5nIGZ1bmN0aW9uIG9uIHRoZSByZWNlaXZlci4KIC8vIEhvd2V2
ZXIsIFY4IGltcGxlbWVudHMgdG9TdHJpbmcgaW4gSmF2YVNjcmlwdCwgd2hpY2ggcmVxdWlyZXMK
IC8vIHN3aXRjaGluZyBjb250ZXh0IG9mIHJlY2VpdmVyLiBJIGNvbnNpZGVyIGl0IGlzIGRhbmdl
cm91cy4KLUNBTExCQUNLX0ZVTkNfREVDTChET01XaW5kb3dUb1N0cmluZykKK3Y4OjpIYW5kbGU8
djg6OlZhbHVlPiBWOERPTVdpbmRvdzo6dG9TdHJpbmdDYWxsYmFjayhjb25zdCB2ODo6QXJndW1l
bnRzJiBhcmdzKQogewogICAgIElOQ19TVEFUUygiRE9NLkRPTVdpbmRvdy50b1N0cmluZygpIik7
CiAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBkb21XcmFwcGVyID0gVjhET01XcmFwcGVyOjps
b29rdXBET01XcmFwcGVyKFY4Q2xhc3NJbmRleDo6RE9NV0lORE9XLCBhcmdzLlRoaXMoKSk7CkBA
IC00ODMsMTIgKzQ4NCwxOCBAQA0KICAgICByZXR1cm4gZG9tV3JhcHBlci0+T2JqZWN0UHJvdG9U
b1N0cmluZygpOwogfQogCi1DQUxMQkFDS19GVU5DX0RFQ0woRE9NV2luZG93Tk9QKQordjg6Okhh
bmRsZTx2ODo6VmFsdWU+IFY4RE9NV2luZG93OjpyZWxlYXNlRXZlbnRzQ2FsbGJhY2soY29uc3Qg
djg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBJTkNfU1RBVFMoIkRPTS5ET01XaW5kb3cubm9w
KCkiKTsKICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwogfQogCit2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gVjhET01XaW5kb3c6OmNhcHR1cmVFdmVudHNDYWxsYmFjayhjb25zdCB2ODo6QXJndW1l
bnRzJiBhcmdzKQoreworICAgIElOQ19TVEFUUygiRE9NLkRPTVdpbmRvdy5ub3AoKSIpOworICAg
IHJldHVybiB2ODo6VW5kZWZpbmVkKCk7Cit9CisKIHN0YXRpYyBib29sIGNhblNob3dNb2RhbERp
YWxvZ05vdyhjb25zdCBGcmFtZSogZnJhbWUpCiB7CiAgICAgLy8gQSBmcmFtZSBjYW4gb3V0IGxp
dmUgaXRzIHBhZ2UuIFNlZSBidWcgMTIxOTYxMy4KQEAgLTYxMCw3ICs2MTcsNyBAQA0KIAogCiAK
LUNBTExCQUNLX0ZVTkNfREVDTChET01XaW5kb3dTaG93TW9kYWxEaWFsb2cpCit2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gVjhET01XaW5kb3c6OnNob3dNb2RhbERpYWxvZ0NhbGxiYWNrKGNvbnN0IHY4
OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgSU5DX1NUQVRTKCJET00uRE9NV2luZG93LnNob3dN
b2RhbERpYWxvZygpIik7CiAKQEAgLTcwMCw3ICs3MDcsNyBAQA0KIH0KIAogCi1DQUxMQkFDS19G
VU5DX0RFQ0woRE9NV2luZG93T3BlbikKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOERPTVdpbmRv
dzo6b3BlbkNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgSU5DX1NU
QVRTKCJET00uRE9NV2luZG93Lm9wZW4oKSIpOwogCkBAIC05MDYsMjEgKzkxMywyMSBAQA0KIH0K
IAogCi1DQUxMQkFDS19GVU5DX0RFQ0woRE9NV2luZG93U2V0VGltZW91dCkKK3Y4OjpIYW5kbGU8
djg6OlZhbHVlPiBWOERPTVdpbmRvdzo6c2V0VGltZW91dENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1
bWVudHMmIGFyZ3MpCiB7CiAgICAgSU5DX1NUQVRTKCJET00uRE9NV2luZG93LnNldFRpbWVvdXQo
KSIpOwogICAgIHJldHVybiBXaW5kb3dTZXRUaW1lb3V0SW1wbChhcmdzLCB0cnVlKTsKIH0KIAog
Ci1DQUxMQkFDS19GVU5DX0RFQ0woRE9NV2luZG93U2V0SW50ZXJ2YWwpCit2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gVjhET01XaW5kb3c6OnNldEludGVydmFsQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3Vt
ZW50cyYgYXJncykKIHsKICAgICBJTkNfU1RBVFMoIkRPTS5ET01XaW5kb3cuc2V0SW50ZXJ2YWwo
KSIpOwogICAgIHJldHVybiBXaW5kb3dTZXRUaW1lb3V0SW1wbChhcmdzLCBmYWxzZSk7CiB9CiAK
IAotdm9pZCBWOEN1c3RvbTo6Q2xlYXJUaW1lb3V0SW1wbChjb25zdCB2ODo6QXJndW1lbnRzJiBh
cmdzKQordm9pZCBDbGVhclRpbWVvdXRJbXBsKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7
CiAgICAgaW50IGhhbmRsZSA9IHRvSW50MzIoYXJnc1swXSk7CiAKQEAgLTkzNSwxNCArOTQyLDE0
IEBADQogfQogCiAKLUNBTExCQUNLX0ZVTkNfREVDTChET01XaW5kb3dDbGVhclRpbWVvdXQpCit2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhET01XaW5kb3c6OmNsZWFyVGltZW91dENhbGxiYWNrKGNv
bnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgSU5DX1NUQVRTKCJET00uRE9NV2luZG93
LmNsZWFyVGltZW91dCIpOwogICAgIENsZWFyVGltZW91dEltcGwoYXJncyk7CiAgICAgcmV0dXJu
IHY4OjpVbmRlZmluZWQoKTsKIH0KIAotQ0FMTEJBQ0tfRlVOQ19ERUNMKERPTVdpbmRvd0NsZWFy
SW50ZXJ2YWwpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhET01XaW5kb3c6OmNsZWFySW50ZXJ2
YWxDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAgIElOQ19TVEFUUygi
RE9NLkRPTVdpbmRvdy5jbGVhckludGVydmFsIik7CiAgICAgQ2xlYXJUaW1lb3V0SW1wbChhcmdz
KTsKSW5kZXg6IGJpbmRpbmdzL3Y4L2N1c3RvbS9WOERPTVBhcnNlckNvbnN0cnVjdG9yLmNwcA0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQ0KLS0tIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOERPTVBhcnNlckNvbnN0cnVjdG9y
LmNwcAkocmV2aXNpb24gNTIyNjEpDQorKysgYmluZGluZ3MvdjgvY3VzdG9tL1Y4RE9NUGFyc2Vy
Q29uc3RydWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpDQpAQCAtMzYsNyArMzYsNyBAQA0KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1DQUxMQkFDS19GVU5DX0RFQ0woRE9NUGFyc2VyQ29uc3RydWN0
b3IpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhDdXN0b206OnY4RE9NUGFyc2VyQ29uc3RydWN0
b3JDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAgIElOQ19TVEFUUygi
RE9NLkRPTVBhcnNlci5Db250cnVjdG9yIik7CiAgICAgcmV0dXJuIFY4UHJveHk6OmNvbnN0cnVj
dERPTU9iamVjdDxWOENsYXNzSW5kZXg6OkRPTVBBUlNFUiwgRE9NUGFyc2VyPihhcmdzKTsKSW5k
ZXg6IGJpbmRpbmdzL3Y4L2N1c3RvbS9WOFdvcmtlckN1c3RvbS5jcHANCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0t
LSBiaW5kaW5ncy92OC9jdXN0b20vVjhXb3JrZXJDdXN0b20uY3BwCShyZXZpc2lvbiA1MjI2MSkN
CisrKyBiaW5kaW5ncy92OC9jdXN0b20vVjhXb3JrZXJDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkp
DQpAQCAtMzEsNiArMzEsNyBAQA0KICNpbmNsdWRlICJjb25maWcuaCIKIAogI2lmIEVOQUJMRShX
T1JLRVJTKQorI2luY2x1ZGUgIlY4V29ya2VyLmgiCiAKICNpbmNsdWRlICJXb3JrZXIuaCIKIApA
QCAtNDcsNyArNDgsNyBAQA0KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1DQUxMQkFDS19GVU5D
X0RFQ0woV29ya2VyQ29uc3RydWN0b3IpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhDdXN0b206
OnY4V29ya2VyQ29uc3RydWN0b3JDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQog
ewogICAgIElOQ19TVEFUUyhMIkRPTS5Xb3JrZXIuQ29uc3RydWN0b3IiKTsKIApAQCAtODcsNyAr
ODgsNyBAQA0KICAgICByZXR1cm4gd3JhcHBlck9iamVjdDsKIH0KIAotQ0FMTEJBQ0tfRlVOQ19E
RUNMKFdvcmtlclBvc3RNZXNzYWdlKQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4V29ya2VyOjpw
b3N0TWVzc2FnZUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgSU5D
X1NUQVRTKCJET00uV29ya2VyLnBvc3RNZXNzYWdlIik7CiAgICAgV29ya2VyKiB3b3JrZXIgPSBW
OERPTVdyYXBwZXI6OmNvbnZlcnRUb05hdGl2ZU9iamVjdDxXb3JrZXI+KFY4Q2xhc3NJbmRleDo6
V09SS0VSLCBhcmdzLkhvbGRlcigpKTsKSW5kZXg6IGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxB
bGxDb2xsZWN0aW9uQ3VzdG9tLmNwcA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIGJpbmRpbmdzL3Y4L2N1c3Rv
bS9WOEhUTUxBbGxDb2xsZWN0aW9uQ3VzdG9tLmNwcAkocmV2aXNpb24gNTIyNjEpDQorKysgYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTEFsbENvbGxlY3Rpb25DdXN0b20uY3BwCSh3b3JraW5nIGNv
cHkpDQpAQCAtMjksNiArMjksOCBAQA0KICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiVjhIVE1MQWxsQ29sbGVjdGlvbi5oIgorCiAjaW5jbHVkZSAiSFRNTEFsbENvbGxlY3Rp
b24uaCIKIAogI2luY2x1ZGUgIlY4QmluZGluZy5oIgpAQCAtODgsMTQgKzkwLDE0IEBADQogICAg
IHJldHVybiBnZXROYW1lZEl0ZW1zKGltcCwgdjhTdHJpbmdUb0F0b21pY1dlYkNvcmVTdHJpbmco
bmFtZSkpOwogfQogCi1DQUxMQkFDS19GVU5DX0RFQ0woSFRNTEFsbENvbGxlY3Rpb25JdGVtKQor
djg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SFRNTEFsbENvbGxlY3Rpb246Oml0ZW1DYWxsYmFjayhj
b25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAgIElOQ19TVEFUUygiRE9NLkhUTUxBbGxD
b2xsZWN0aW9uLml0ZW0oKSIpOwogICAgIEhUTUxBbGxDb2xsZWN0aW9uKiBpbXAgPSBWOERPTVdy
YXBwZXI6OmNvbnZlcnRUb05hdGl2ZU9iamVjdDxIVE1MQWxsQ29sbGVjdGlvbj4oVjhDbGFzc0lu
ZGV4OjpIVE1MQUxMQ09MTEVDVElPTiwgYXJncy5Ib2xkZXIoKSk7CiAgICAgcmV0dXJuIGdldEl0
ZW0oaW1wLCBhcmdzWzBdKTsKIH0KIAotQ0FMTEJBQ0tfRlVOQ19ERUNMKEhUTUxBbGxDb2xsZWN0
aW9uTmFtZWRJdGVtKQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SFRNTEFsbENvbGxlY3Rpb246
Om5hbWVkSXRlbUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgSU5D
X1NUQVRTKCJET00uSFRNTEFsbENvbGxlY3Rpb24ubmFtZWRJdGVtKCkiKTsKICAgICBIVE1MQWxs
Q29sbGVjdGlvbiogaW1wID0gVjhET01XcmFwcGVyOjpjb252ZXJ0VG9OYXRpdmVPYmplY3Q8SFRN
TEFsbENvbGxlY3Rpb24+KFY4Q2xhc3NJbmRleDo6SFRNTEFMTENPTExFQ1RJT04sIGFyZ3MuSG9s
ZGVyKCkpOwpAQCAtMTA3LDcgKzEwOSw3IEBADQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLUNB
TExCQUNLX0ZVTkNfREVDTChIVE1MQWxsQ29sbGVjdGlvbkNhbGxBc0Z1bmN0aW9uKQordjg6Okhh
bmRsZTx2ODo6VmFsdWU+IFY4SFRNTEFsbENvbGxlY3Rpb246OmNhbGxBc0Z1bmN0aW9uQ2FsbGJh
Y2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBJTkNfU1RBVFMoIkRPTS5IVE1M
QWxsQ29sbGVjdGlvbi5jYWxsQXNGdW5jdGlvbigpIik7CiAgICAgaWYgKGFyZ3MuTGVuZ3RoKCkg
PCAxKQpJbmRleDogYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTENhbnZhc0VsZW1lbnRDdXN0b20u
Y3BwDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09DQotLS0gYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTENhbnZhc0VsZW1l
bnRDdXN0b20uY3BwCShyZXZpc2lvbiA1MjI2MSkNCisrKyBiaW5kaW5ncy92OC9jdXN0b20vVjhI
VE1MQ2FudmFzRWxlbWVudEN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkNCkBAIC0yOSwxMCArMjks
MTAgQEANCiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkhUTUxDYW52YXNF
bGVtZW50LmgiCi0jaW5jbHVkZSAiQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5oIgorI2luY2x1ZGUg
IlY4SFRNTENhbnZhc0VsZW1lbnQuaCIKIAogI2luY2x1ZGUgIkNhbnZhc1JlbmRlcmluZ0NvbnRl
eHQuaCIKKyNpbmNsdWRlICJIVE1MQ2FudmFzRWxlbWVudC5oIgogI2luY2x1ZGUgIlY4QmluZGlu
Zy5oIgogI2luY2x1ZGUgIlY4Q3VzdG9tQmluZGluZy5oIgogI2luY2x1ZGUgIlY4Tm9kZS5oIgpA
QCAtNDAsNyArNDAsNyBAQA0KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1DQUxMQkFDS19GVU5D
X0RFQ0woSFRNTENhbnZhc0VsZW1lbnRHZXRDb250ZXh0KQordjg6OkhhbmRsZTx2ODo6VmFsdWU+
IFY4SFRNTENhbnZhc0VsZW1lbnQ6OmdldENvbnRleHRDYWxsYmFjayhjb25zdCB2ODo6QXJndW1l
bnRzJiBhcmdzKQogewogICAgIElOQ19TVEFUUygiRE9NLkhUTUxDYW52YXNFbGVtZW50LmNvbnRl
eHQiKTsKICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGhvbGRlciA9IGFyZ3MuSG9sZGVyKCk7
CkluZGV4OiBiaW5kaW5ncy92OC9jdXN0b20vVjhXZWJLaXRQb2ludENvbnN0cnVjdG9yLmNwcA0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQ0KLS0tIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOFdlYktpdFBvaW50Q29uc3RydWN0
b3IuY3BwCShyZXZpc2lvbiA1MjI2MSkNCisrKyBiaW5kaW5ncy92OC9jdXN0b20vVjhXZWJLaXRQ
b2ludENvbnN0cnVjdG9yLmNwcAkod29ya2luZyBjb3B5KQ0KQEAgLTQxLDcgKzQxLDcgQEANCiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotQ0FMTEJBQ0tfRlVOQ19ERUNMKFdlYktpdFBvaW50Q29u
c3RydWN0b3IpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhDdXN0b206OnY4V2ViS2l0UG9pbnRD
b25zdHJ1Y3RvckNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgSU5D
X1NUQVRTKCJET00uV2ViS2l0UG9pbnQuQ29uc3RydWN0b3IiKTsKICAgICBmbG9hdCB4ID0gMDsK
SW5kZXg6IGJpbmRpbmdzL3Y4L2N1c3RvbS9WOERvY3VtZW50Q3VzdG9tLmNwcA0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQ0KLS0tIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOERvY3VtZW50Q3VzdG9tLmNwcAkocmV2aXNpb24g
NTIyNjEpDQorKysgYmluZGluZ3MvdjgvY3VzdG9tL1Y4RG9jdW1lbnRDdXN0b20uY3BwCSh3b3Jr
aW5nIGNvcHkpDQpAQCAtMjksOSArMjksMTAgQEANCiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5o
IgotI2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiVjhEb2N1bWVudC5oIgogCiAjaW5j
bHVkZSAiQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5oIgorI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAj
aW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgogI2luY2x1ZGUgIk5vZGUuaCIKICNpbmNsdWRlICJY
UGF0aE5TUmVzb2x2ZXIuaCIKQEAgLTUwLDcgKzUxLDcgQEANCiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotQ0FMTEJBQ0tfRlVOQ19ERUNMKERvY3VtZW50RXZhbHVhdGUpCit2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gVjhEb2N1bWVudDo6ZXZhbHVhdGVDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRz
JiBhcmdzKQogewogICAgIElOQ19TVEFUUygiRE9NLkRvY3VtZW50LmV2YWx1YXRlKCkiKTsKIApA
QCAtODEsNyArODIsNyBAQA0KICAgICByZXR1cm4gVjhET01XcmFwcGVyOjpjb252ZXJ0VG9WOE9i
amVjdChWOENsYXNzSW5kZXg6OlhQQVRIUkVTVUxULCByZXN1bHQucmVsZWFzZSgpKTsKIH0KIAot
Q0FMTEJBQ0tfRlVOQ19ERUNMKERvY3VtZW50R2V0Q1NTQ2FudmFzQ29udGV4dCkKK3Y4OjpIYW5k
bGU8djg6OlZhbHVlPiBWOERvY3VtZW50OjpnZXRDU1NDYW52YXNDb250ZXh0Q2FsbGJhY2soY29u
c3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBJTkNfU1RBVFMoIkRPTS5Eb2N1bWVudC5n
ZXRDU1NDYW52YXNDb250ZXh0Iik7CiAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBob2xkZXIg
PSBhcmdzLkhvbGRlcigpOwpJbmRleDogYmluZGluZ3MvdjgvY3VzdG9tL1Y4V29ya2VyQ29udGV4
dEN1c3RvbS5jcHANCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBiaW5kaW5ncy92OC9jdXN0b20vVjhXb3JrZXJD
b250ZXh0Q3VzdG9tLmNwcAkocmV2aXNpb24gNTIyNjEpDQorKysgYmluZGluZ3MvdjgvY3VzdG9t
L1Y4V29ya2VyQ29udGV4dEN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkNCkBAIC0zMSw2ICszMSw3
IEBADQogI2luY2x1ZGUgImNvbmZpZy5oIgogCiAjaWYgRU5BQkxFKFdPUktFUlMpCisjaW5jbHVk
ZSAiVjhXb3JrZXJDb250ZXh0LmgiCiAKICNpbmNsdWRlICJET01UaW1lci5oIgogI2luY2x1ZGUg
IkV4Y2VwdGlvbkNvZGUuaCIKQEAgLTk0LDcgKzk1LDcgQEANCiAgICAgcmV0dXJuIHY4OjpJbnRl
Z2VyOjpOZXcodGltZXJJZCk7CiB9CiAKLUNBTExCQUNLX0ZVTkNfREVDTChXb3JrZXJDb250ZXh0
SW1wb3J0U2NyaXB0cykKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFdvcmtlckNvbnRleHQ6Omlt
cG9ydFNjcmlwdHNDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAgIElO
Q19TVEFUUyhMIkRPTS5Xb3JrZXJDb250ZXh0LmltcG9ydFNjcmlwdHMoKSIpOwogICAgIGlmICgh
YXJncy5MZW5ndGgoKSkKQEAgLTEyOCwxOSArMTI5LDE5IEBADQogICAgIHJldHVybiB2ODo6VW5k
ZWZpbmVkKCk7CiB9CiAKLUNBTExCQUNLX0ZVTkNfREVDTChXb3JrZXJDb250ZXh0U2V0VGltZW91
dCkKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFdvcmtlckNvbnRleHQ6OnNldFRpbWVvdXRDYWxs
YmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAgIElOQ19TVEFUUyhMIkRPTS5X
b3JrZXJDb250ZXh0LnNldFRpbWVvdXQoKSIpOwogICAgIHJldHVybiBTZXRUaW1lb3V0T3JJbnRl
cnZhbChhcmdzLCB0cnVlKTsKIH0KIAotQ0FMTEJBQ0tfRlVOQ19ERUNMKFdvcmtlckNvbnRleHRT
ZXRJbnRlcnZhbCkKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFdvcmtlckNvbnRleHQ6OnNldElu
dGVydmFsQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBJTkNfU1RB
VFMoTCJET00uV29ya2VyQ29udGV4dC5zZXRJbnRlcnZhbCgpIik7CiAgICAgcmV0dXJuIFNldFRp
bWVvdXRPckludGVydmFsKGFyZ3MsIGZhbHNlKTsKIH0KIAotQ0FMTEJBQ0tfRlVOQ19ERUNMKFdv
cmtlckNvbnRleHRBZGRFdmVudExpc3RlbmVyKQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4V29y
a2VyQ29udGV4dDo6YWRkRXZlbnRMaXN0ZW5lckNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMm
IGFyZ3MpCiB7CiAgICAgSU5DX1NUQVRTKEwiRE9NLldvcmtlckNvbnRleHQuYWRkRXZlbnRMaXN0
ZW5lcigpIik7CiAgICAgV29ya2VyQ29udGV4dCogd29ya2VyQ29udGV4dCA9IFY4RE9NV3JhcHBl
cjo6Y29udmVydERPTVdyYXBwZXJUb05hdGl2ZTxXb3JrZXJDb250ZXh0PihhcmdzLkhvbGRlcigp
KTsKQEAgLTE1Niw3ICsxNTcsNyBAQA0KICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwogfQog
Ci1DQUxMQkFDS19GVU5DX0RFQ0woV29ya2VyQ29udGV4dFJlbW92ZUV2ZW50TGlzdGVuZXIpCit2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhXb3JrZXJDb250ZXh0OjpyZW1vdmVFdmVudExpc3RlbmVy
Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBJTkNfU1RBVFMoTCJE
T00uV29ya2VyQ29udGV4dC5yZW1vdmVFdmVudExpc3RlbmVyKCkiKTsKICAgICBXb3JrZXJDb250
ZXh0KiB3b3JrZXJDb250ZXh0ID0gVjhET01XcmFwcGVyOjpjb252ZXJ0RE9NV3JhcHBlclRvTmF0
aXZlPFdvcmtlckNvbnRleHQ+KGFyZ3MuSG9sZGVyKCkpOwpJbmRleDogYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4SFRNTENvbGxlY3Rpb25DdXN0b20uY3BwDQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gYmluZGluZ3Mv
djgvY3VzdG9tL1Y4SFRNTENvbGxlY3Rpb25DdXN0b20uY3BwCShyZXZpc2lvbiA1MjI2MSkNCisr
KyBiaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MQ29sbGVjdGlvbkN1c3RvbS5jcHAJKHdvcmtpbmcg
Y29weSkNCkBAIC0yOSw4ICsyOSw5IEBADQogICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJWOEhUTUxDb2xsZWN0aW9uLmgiCisKICNpbmNsdWRlICJIVE1MQ29sbGVjdGlvbi5o
IgotCiAjaW5jbHVkZSAiVjhCaW5kaW5nLmgiCiAjaW5jbHVkZSAiVjhDdXN0b21CaW5kaW5nLmgi
CiAjaW5jbHVkZSAiVjhOYW1lZE5vZGVzQ29sbGVjdGlvbi5oIgpAQCAtODgsMTQgKzg5LDE0IEBA
DQogICAgIHJldHVybiBnZXROYW1lZEl0ZW1zKGltcCwgdjhTdHJpbmdUb0F0b21pY1dlYkNvcmVT
dHJpbmcobmFtZSkpOwogfQogCi1DQUxMQkFDS19GVU5DX0RFQ0woSFRNTENvbGxlY3Rpb25JdGVt
KQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SFRNTENvbGxlY3Rpb246Oml0ZW1DYWxsYmFjayhj
b25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAgIElOQ19TVEFUUygiRE9NLkhUTUxDb2xs
ZWN0aW9uLml0ZW0oKSIpOwogICAgIEhUTUxDb2xsZWN0aW9uKiBpbXAgPSBWOERPTVdyYXBwZXI6
OmNvbnZlcnRUb05hdGl2ZU9iamVjdDxIVE1MQ29sbGVjdGlvbj4oVjhDbGFzc0luZGV4OjpIVE1M
Q09MTEVDVElPTiwgYXJncy5Ib2xkZXIoKSk7CiAgICAgcmV0dXJuIGdldEl0ZW0oaW1wLCBhcmdz
WzBdKTsKIH0KIAotQ0FMTEJBQ0tfRlVOQ19ERUNMKEhUTUxDb2xsZWN0aW9uTmFtZWRJdGVtKQor
djg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SFRNTENvbGxlY3Rpb246Om5hbWVkSXRlbUNhbGxiYWNr
KGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgSU5DX1NUQVRTKCJET00uSFRNTENv
bGxlY3Rpb24ubmFtZWRJdGVtKCkiKTsKICAgICBIVE1MQ29sbGVjdGlvbiogaW1wID0gVjhET01X
cmFwcGVyOjpjb252ZXJ0VG9OYXRpdmVPYmplY3Q8SFRNTENvbGxlY3Rpb24+KFY4Q2xhc3NJbmRl
eDo6SFRNTENPTExFQ1RJT04sIGFyZ3MuSG9sZGVyKCkpOwpAQCAtMTA3LDcgKzEwOCw3IEBADQog
ICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLUNBTExCQUNLX0ZVTkNfREVDTChIVE1MQ29sbGVjdGlv
bkNhbGxBc0Z1bmN0aW9uKQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SFRNTENvbGxlY3Rpb246
OmNhbGxBc0Z1bmN0aW9uQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAg
ICBJTkNfU1RBVFMoIkRPTS5IVE1MQ29sbGVjdGlvbi5jYWxsQXNGdW5jdGlvbigpIik7CiAgICAg
aWYgKGFyZ3MuTGVuZ3RoKCkgPCAxKQpAQCAtMTM3LDQgKzEzOCw1IEBADQogICAgIHJldHVybiB2
ODo6VW5kZWZpbmVkKCk7CiB9CiAKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTE9wdGlvbkVsZW1lbnRDb25zdHJ1Y3Rvci5jcHANCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0NCi0tLSBiaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MT3B0aW9uRWxlbWVudENvbnN0cnVj
dG9yLmNwcAkocmV2aXNpb24gNTIyNjEpDQorKysgYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTE9w
dGlvbkVsZW1lbnRDb25zdHJ1Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkNCkBAIC02Miw3ICs2Miw3
IEBADQogICAgIHJldHVybiBjYWNoZWRUZW1wbGF0ZTsKIH0KIAotQ0FMTEJBQ0tfRlVOQ19ERUNM
KEhUTUxPcHRpb25FbGVtZW50Q29uc3RydWN0b3IpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhD
dXN0b206OnY4SFRNTE9wdGlvbkVsZW1lbnRDb25zdHJ1Y3RvckNhbGxiYWNrKGNvbnN0IHY4OjpB
cmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgSU5DX1NUQVRTKCJET00uSFRNTE9wdGlvbkVsZW1lbnQu
Q29udHJ1Y3RvciIpOwogCkluZGV4OiBiaW5kaW5ncy92OC9jdXN0b20vVjhXZWJHTEJ5dGVBcnJh
eUN1c3RvbS5jcHANCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBiaW5kaW5ncy92OC9jdXN0b20vVjhXZWJHTEJ5
dGVBcnJheUN1c3RvbS5jcHAJKHJldmlzaW9uIDUyMjYxKQ0KKysrIGJpbmRpbmdzL3Y4L2N1c3Rv
bS9WOFdlYkdMQnl0ZUFycmF5Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQ0KQEAgLTQ0LDcgKzQ0
LDcgQEANCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotQ0FMTEJBQ0tfRlVOQ19ERUNMKFdlYkdM
Qnl0ZUFycmF5Q29uc3RydWN0b3IpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhDdXN0b206OnY4
V2ViR0xCeXRlQXJyYXlDb25zdHJ1Y3RvckNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFy
Z3MpCiB7CiAgICAgSU5DX1NUQVRTKCJET00uV2ViR0xCeXRlQXJyYXkuQ29udHJ1Y3RvciIpOwog
CkBAIC03OSwxMyArNzksMTMgQEANCiAgICAgcmV0dXJuIHZhbHVlOwogfQogCi1DQUxMQkFDS19G
VU5DX0RFQ0woV2ViR0xCeXRlQXJyYXlHZXQpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhXZWJH
TEJ5dGVBcnJheTo6Z2V0Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAg
ICBJTkNfU1RBVFMoIkRPTS5XZWJHTEJ5dGVBcnJheS5nZXQoKSIpOwogICAgIHJldHVybiBnZXRX
ZWJHTEFycmF5RWxlbWVudDxXZWJHTEJ5dGVBcnJheSwgc2lnbmVkIGNoYXI+KGFyZ3MsIFY4Q2xh
c3NJbmRleDo6V0VCR0xCWVRFQVJSQVkpOwogfQogCi1DQUxMQkFDS19GVU5DX0RFQ0woV2ViR0xC
eXRlQXJyYXlTZXQpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhXZWJHTEJ5dGVBcnJheTo6c2V0
Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBJTkNfU1RBVFMoIkRP
TS5XZWJHTEJ5dGVBcnJheS5zZXQoKSIpOwogICAgIHJldHVybiBzZXRXZWJHTEFycmF5PFdlYkdM
Qnl0ZUFycmF5LCBWOFdlYkdMQnl0ZUFycmF5PihhcmdzLCBWOENsYXNzSW5kZXg6OldFQkdMQllU
RUFSUkFZKTsKSW5kZXg6IGJpbmRpbmdzL3Y4L2N1c3RvbS9WOE5vZGVDdXN0b20uY3BwDQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09DQotLS0gYmluZGluZ3MvdjgvY3VzdG9tL1Y4Tm9kZUN1c3RvbS5jcHAJKHJldmlzaW9u
IDUyMjYxKQ0KKysrIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOE5vZGVDdXN0b20uY3BwCSh3b3JraW5n
IGNvcHkpDQpAQCAtNDUsNyArNDUsNyBAQA0KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1DQUxM
QkFDS19GVU5DX0RFQ0woTm9kZUFkZEV2ZW50TGlzdGVuZXIpCit2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gVjhOb2RlOjphZGRFdmVudExpc3RlbmVyQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYg
YXJncykKIHsKICAgICBJTkNfU1RBVFMoIkRPTS5Ob2RlLmFkZEV2ZW50TGlzdGVuZXIoKSIpOwog
ICAgIE5vZGUqIG5vZGUgPSBWOERPTVdyYXBwZXI6OmNvbnZlcnRET01XcmFwcGVyVG9Ob2RlPE5v
ZGU+KGFyZ3MuSG9sZGVyKCkpOwpAQCAtNjAsNyArNjAsNyBAQA0KICAgICByZXR1cm4gdjg6OlVu
ZGVmaW5lZCgpOwogfQogCi1DQUxMQkFDS19GVU5DX0RFQ0woTm9kZVJlbW92ZUV2ZW50TGlzdGVu
ZXIpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhOb2RlOjpyZW1vdmVFdmVudExpc3RlbmVyQ2Fs
bGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBJTkNfU1RBVFMoIkRPTS5O
b2RlLnJlbW92ZUV2ZW50TGlzdGVuZXIoKSIpOwogICAgIE5vZGUqIG5vZGUgPSBWOERPTVdyYXBw
ZXI6OmNvbnZlcnRET01XcmFwcGVyVG9Ob2RlPE5vZGU+KGFyZ3MuSG9sZGVyKCkpOwpAQCAtODAs
NyArODAsNyBAQA0KIH0KIAogLy8gVGhpcyBmdW5jdGlvbiBpcyBjdXN0b21pemVkIHRvIHRha2Ug
YWR2YW50YWdlIG9mIHRoZSBvcHRpb25hbCA0dGggYXJndW1lbnQ6IHNob3VsZExhenlBdHRhY2gK
LUNBTExCQUNLX0ZVTkNfREVDTChOb2RlSW5zZXJ0QmVmb3JlKQordjg6OkhhbmRsZTx2ODo6VmFs
dWU+IFY4Tm9kZTo6aW5zZXJ0QmVmb3JlQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJn
cykKIHsKICAgICBJTkNfU1RBVFMoIkRPTS5Ob2RlLmluc2VydEJlZm9yZSIpOwogICAgIHY4OjpI
YW5kbGU8djg6Ok9iamVjdD4gaG9sZGVyID0gYXJncy5Ib2xkZXIoKTsKQEAgLTk5LDcgKzk5LDcg
QEANCiB9CiAKIC8vIFRoaXMgZnVuY3Rpb24gaXMgY3VzdG9taXplZCB0byB0YWtlIGFkdmFudGFn
ZSBvZiB0aGUgb3B0aW9uYWwgNHRoIGFyZ3VtZW50OiBzaG91bGRMYXp5QXR0YWNoCi1DQUxMQkFD
S19GVU5DX0RFQ0woTm9kZVJlcGxhY2VDaGlsZCkKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOE5v
ZGU6OnJlcGxhY2VDaGlsZENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAg
ICAgSU5DX1NUQVRTKCJET00uTm9kZS5yZXBsYWNlQ2hpbGQiKTsKICAgICB2ODo6SGFuZGxlPHY4
OjpPYmplY3Q+IGhvbGRlciA9IGFyZ3MuSG9sZGVyKCk7CkBAIC0xMTcsNyArMTE3LDcgQEANCiAg
ICAgcmV0dXJuIHY4OjpOdWxsKCk7CiB9CiAKLUNBTExCQUNLX0ZVTkNfREVDTChOb2RlUmVtb3Zl
Q2hpbGQpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhOb2RlOjpyZW1vdmVDaGlsZENhbGxiYWNr
KGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgSU5DX1NUQVRTKCJET00uTm9kZS5y
ZW1vdmVDaGlsZCIpOwogICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gaG9sZGVyID0gYXJncy5I
b2xkZXIoKTsKQEAgLTEzNSw3ICsxMzUsNyBAQA0KIH0KIAogLy8gVGhpcyBmdW5jdGlvbiBpcyBj
dXN0b21pemVkIHRvIHRha2UgYWR2YW50YWdlIG9mIHRoZSBvcHRpb25hbCA0dGggYXJndW1lbnQ6
IHNob3VsZExhenlBdHRhY2gKLUNBTExCQUNLX0ZVTkNfREVDTChOb2RlQXBwZW5kQ2hpbGQpCit2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhOb2RlOjphcHBlbmRDaGlsZENhbGxiYWNrKGNvbnN0IHY4
OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgSU5DX1NUQVRTKCJET00uTm9kZS5hcHBlbmRDaGls
ZCIpOwogICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gaG9sZGVyID0gYXJncy5Ib2xkZXIoKTsK
SW5kZXg6IGJpbmRpbmdzL3Y4L2N1c3RvbS9WOE1lc3NhZ2VFdmVudEN1c3RvbS5jcHANCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0NCi0tLSBiaW5kaW5ncy92OC9jdXN0b20vVjhNZXNzYWdlRXZlbnRDdXN0b20uY3BwCShy
ZXZpc2lvbiA1MjI2MSkNCisrKyBiaW5kaW5ncy92OC9jdXN0b20vVjhNZXNzYWdlRXZlbnRDdXN0
b20uY3BwCSh3b3JraW5nIGNvcHkpDQpAQCAtMjksNiArMjksOCBAQA0KICAqLwogCiAjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiVjhNZXNzYWdlRXZlbnQuaCIKKwogI2luY2x1ZGUgIk1l
c3NhZ2VFdmVudC5oIgogI2luY2x1ZGUgIlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgogCkBAIC01
Niw3ICs1OCw3IEBADQogICAgIHJldHVybiBwb3J0QXJyYXk7CiB9CiAKLUNBTExCQUNLX0ZVTkNf
REVDTChNZXNzYWdlRXZlbnRJbml0TWVzc2FnZUV2ZW50KQordjg6OkhhbmRsZTx2ODo6VmFsdWU+
IFY4TWVzc2FnZUV2ZW50Ojppbml0TWVzc2FnZUV2ZW50Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3Vt
ZW50cyYgYXJncykKIHsKICAgICBJTkNfU1RBVFMoIkRPTS5NZXNzYWdlRXZlbnQuaW5pdE1lc3Nh
Z2VFdmVudCIpOwogICAgIE1lc3NhZ2VFdmVudCogZXZlbnQgPSBWOERPTVdyYXBwZXI6OmNvbnZl
cnRUb05hdGl2ZU9iamVjdDxNZXNzYWdlRXZlbnQ+KFY4Q2xhc3NJbmRleDo6TUVTU0FHRUVWRU5U
LCBhcmdzLkhvbGRlcigpKTsKSW5kZXg6IGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxJbWFnZUVs
ZW1lbnRDb25zdHJ1Y3Rvci5jcHANCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBiaW5kaW5ncy92OC9jdXN0b20v
VjhIVE1MSW1hZ2VFbGVtZW50Q29uc3RydWN0b3IuY3BwCShyZXZpc2lvbiA1MjI2MSkNCisrKyBi
aW5kaW5ncy92OC9jdXN0b20vVjhIVE1MSW1hZ2VFbGVtZW50Q29uc3RydWN0b3IuY3BwCSh3b3Jr
aW5nIGNvcHkpDQpAQCAtNjEsNyArNjEsNyBAQA0KICAgICByZXR1cm4gY2FjaGVkVGVtcGxhdGU7
CiB9CiAKLUNBTExCQUNLX0ZVTkNfREVDTChIVE1MSW1hZ2VFbGVtZW50Q29uc3RydWN0b3IpCit2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhDdXN0b206OnY4SFRNTEltYWdlRWxlbWVudENvbnN0cnVj
dG9yQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBJTkNfU1RBVFMo
IkRPTS5IVE1MSW1hZ2VFbGVtZW50LkNvbnRydWN0b3IiKTsKIApJbmRleDogYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4U1FMUmVzdWx0U2V0Um93TGlzdEN1c3RvbS5jcHANCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBi
aW5kaW5ncy92OC9jdXN0b20vVjhTUUxSZXN1bHRTZXRSb3dMaXN0Q3VzdG9tLmNwcAkocmV2aXNp
b24gNTIyNjEpDQorKysgYmluZGluZ3MvdjgvY3VzdG9tL1Y4U1FMUmVzdWx0U2V0Um93TGlzdEN1
c3RvbS5jcHAJKHdvcmtpbmcgY29weSkNCkBAIC0zMSw2ICszMSw3IEBADQogI2luY2x1ZGUgImNv
bmZpZy5oIgogCiAjaWYgRU5BQkxFKERBVEFCQVNFKQorI2luY2x1ZGUgIlY4U1FMUmVzdWx0U2V0
Um93TGlzdC5oIgogCiAjaW5jbHVkZSAiU1FMUmVzdWx0U2V0Um93TGlzdC5oIgogI2luY2x1ZGUg
IlY4QmluZGluZy5oIgpAQCAtMzksNyArNDAsNyBAQA0KIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1DQUxMQkFDS19GVU5DX0RFQ0woU1FMUmVzdWx0U2V0Um93TGlzdEl0ZW0pCit2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gVjhTUUxSZXN1bHRTZXRSb3dMaXN0OjppdGVtQ2FsbGJhY2soY29uc3Qgdjg6
OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBJTkNfU1RBVFMoIkRPTS5TUUxSZXN1bHRTZXRSb3dM
aXN0Lml0ZW0oKSIpOwogCkluZGV4OiBiaW5kaW5ncy92OC9jdXN0b20vVjhOb2RlSXRlcmF0b3JD
dXN0b20uY3BwDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09DQotLS0gYmluZGluZ3MvdjgvY3VzdG9tL1Y4Tm9kZUl0ZXJh
dG9yQ3VzdG9tLmNwcAkocmV2aXNpb24gNTIyNjEpDQorKysgYmluZGluZ3MvdjgvY3VzdG9tL1Y4
Tm9kZUl0ZXJhdG9yQ3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQ0KQEAgLTI5LDggKzI5LDkgQEAN
CiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlY4Tm9kZUl0ZXJhdG9yLmgi
CisKICNpbmNsdWRlICJOb2RlSXRlcmF0b3IuaCIKLQogI2luY2x1ZGUgIlNjcmlwdFN0YXRlLmgi
CiAKICNpbmNsdWRlICJWOEJpbmRpbmcuaCIKQEAgLTU2LDcgKzU3LDcgQEANCiAgICAgcmV0dXJu
IFY4RE9NV3JhcHBlcjo6Y29udmVydE5vZGVUb1Y4T2JqZWN0KG9iamVjdCk7CiB9CiAKLUNBTExC
QUNLX0ZVTkNfREVDTChOb2RlSXRlcmF0b3JOZXh0Tm9kZSkKK3Y4OjpIYW5kbGU8djg6OlZhbHVl
PiBWOE5vZGVJdGVyYXRvcjo6bmV4dE5vZGVDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBh
cmdzKQogewogICAgIElOQ19TVEFUUygiRE9NLk5vZGVJdGVyYXRvci5uZXh0Tm9kZSgpIik7CiAg
ICAgTm9kZUl0ZXJhdG9yKiBub2RlSXRlcmF0b3IgPSBWOERPTVdyYXBwZXI6OmNvbnZlcnRUb05h
dGl2ZU9iamVjdDxOb2RlSXRlcmF0b3I+KFY4Q2xhc3NJbmRleDo6Tk9ERUlURVJBVE9SLCBhcmdz
LkhvbGRlcigpKTsKQEAgLTY3LDcgKzY4LDcgQEANCiAgICAgcmV0dXJuIHRvVjgocmVzdWx0LnJl
bGVhc2UoKSwgZWMsICZzdGF0ZSk7CiB9CiAKLUNBTExCQUNLX0ZVTkNfREVDTChOb2RlSXRlcmF0
b3JQcmV2aW91c05vZGUpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhOb2RlSXRlcmF0b3I6OnBy
ZXZpb3VzTm9kZUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgSU5D
X1NUQVRTKCJET00uTm9kZUl0ZXJhdG9yLnByZXZpb3VzTm9kZSgpIik7CiAgICAgTm9kZUl0ZXJh
dG9yKiBub2RlSXRlcmF0b3IgPSBWOERPTVdyYXBwZXI6OmNvbnZlcnRUb05hdGl2ZU9iamVjdDxO
b2RlSXRlcmF0b3I+KFY4Q2xhc3NJbmRleDo6Tk9ERUlURVJBVE9SLCBhcmdzLkhvbGRlcigpKTsK
SW5kZXg6IGJpbmRpbmdzL3Y4L2N1c3RvbS9WOFNWR0xlbmd0aEN1c3RvbS5jcHANCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0NCi0tLSBiaW5kaW5ncy92OC9jdXN0b20vVjhTVkdMZW5ndGhDdXN0b20uY3BwCShyZXZpc2lv
biA1MjI2MSkNCisrKyBiaW5kaW5ncy92OC9jdXN0b20vVjhTVkdMZW5ndGhDdXN0b20uY3BwCSh3
b3JraW5nIGNvcHkpDQpAQCAtMzIsNiArMzIsOCBAQA0KIAogI2lmIEVOQUJMRShTVkcpCiAKKyNp
bmNsdWRlICJWOFNWR0xlbmd0aC5oIgorCiAjaW5jbHVkZSAiU1ZHTGVuZ3RoLmgiCiAKICNpbmNs
dWRlICJWOEJpbmRpbmcuaCIKQEAgLTQ5LDcgKzUxLDcgQEANCiAgICAgcmV0dXJuIHY4OjpOdW1i
ZXI6Ok5ldyhpbXAudmFsdWUoVjhQcm94eTo6c3ZnQ29udGV4dCh3cmFwcGVyKSkpOwogfQogCi1D
QUxMQkFDS19GVU5DX0RFQ0woU1ZHTGVuZ3RoQ29udmVydFRvU3BlY2lmaWVkVW5pdHMpCit2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gVjhTVkdMZW5ndGg6OmNvbnZlcnRUb1NwZWNpZmllZFVuaXRzQ2Fs
bGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBJTkNfU1RBVFMoIkRPTS5T
VkdMZW5ndGguY29udmVydFRvU3BlY2lmaWVkVW5pdHMiKTsKICAgICBWOFNWR1BPRFR5cGVXcmFw
cGVyPFNWR0xlbmd0aD4qIHdyYXBwZXIgPSBWOERPTVdyYXBwZXI6OmNvbnZlcnRUb05hdGl2ZU9i
amVjdDxWOFNWR1BPRFR5cGVXcmFwcGVyPFNWR0xlbmd0aD4gPihWOENsYXNzSW5kZXg6OlNWR0xF
TkdUSCwgYXJncy5Ib2xkZXIoKSk7CkluZGV4OiBiaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MRG9j
dW1lbnRDdXN0b20uY3BwDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRN
TERvY3VtZW50Q3VzdG9tLmNwcAkocmV2aXNpb24gNTIyNjEpDQorKysgYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4SFRNTERvY3VtZW50Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQ0KQEAgLTI5LDEwICsy
OSwxMSBAQA0KICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiSFRNTERvY3Vt
ZW50LmgiCisjaW5jbHVkZSAiVjhIVE1MRG9jdW1lbnQuaCIKIAogI2luY2x1ZGUgIkZyYW1lLmgi
CiAjaW5jbHVkZSAiSFRNTEFsbENvbGxlY3Rpb24uaCIKKyNpbmNsdWRlICJIVE1MRG9jdW1lbnQu
aCIKICNpbmNsdWRlICJIVE1MQ29sbGVjdGlvbi5oIgogI2luY2x1ZGUgIkhUTUxJRnJhbWVFbGVt
ZW50LmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCkBAIC0xMTUsNyArMTE2LDcgQEANCiAgICAg
cmV0dXJuIHN0cjsKIH0KIAotQ0FMTEJBQ0tfRlVOQ19ERUNMKEhUTUxEb2N1bWVudFdyaXRlKQor
djg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SFRNTERvY3VtZW50Ojp3cml0ZUNhbGxiYWNrKGNvbnN0
IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgSU5DX1NUQVRTKCJET00uSFRNTERvY3VtZW50
LndyaXRlKCkiKTsKICAgICBIVE1MRG9jdW1lbnQqIGh0bWxEb2N1bWVudCA9IFY4RE9NV3JhcHBl
cjo6Y29udmVydERPTVdyYXBwZXJUb05vZGU8SFRNTERvY3VtZW50PihhcmdzLkhvbGRlcigpKTsK
QEAgLTEyNCw3ICsxMjUsNyBAQA0KICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwogfQogCi1D
QUxMQkFDS19GVU5DX0RFQ0woSFRNTERvY3VtZW50V3JpdGVsbikKK3Y4OjpIYW5kbGU8djg6OlZh
bHVlPiBWOEhUTUxEb2N1bWVudDo6d3JpdGVsbkNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMm
IGFyZ3MpCiB7CiAgICAgSU5DX1NUQVRTKCJET00uSFRNTERvY3VtZW50LndyaXRlbG4oKSIpOwog
ICAgIEhUTUxEb2N1bWVudCogaHRtbERvY3VtZW50ID0gVjhET01XcmFwcGVyOjpjb252ZXJ0RE9N
V3JhcHBlclRvTm9kZTxIVE1MRG9jdW1lbnQ+KGFyZ3MuSG9sZGVyKCkpOwpAQCAtMTMzLDcgKzEz
NCw3IEBADQogICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CiB9CiAKLUNBTExCQUNLX0ZVTkNf
REVDTChIVE1MRG9jdW1lbnRPcGVuKQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SFRNTERvY3Vt
ZW50OjpvcGVuQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBJTkNf
U1RBVFMoIkRPTS5IVE1MRG9jdW1lbnQub3BlbigpIik7CiAgICAgSFRNTERvY3VtZW50KiBodG1s
RG9jdW1lbnQgPSBWOERPTVdyYXBwZXI6OmNvbnZlcnRET01XcmFwcGVyVG9Ob2RlPEhUTUxEb2N1
bWVudD4oYXJncy5Ib2xkZXIoKSk7CkluZGV4OiBiaW5kaW5ncy92OC9jdXN0b20vVjhDYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkRDdXN0b20uY3BwDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQ3VzdG9tLmNwcAkocmV2aXNpb24gNTIy
NjEpDQorKysgYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQ3Vz
dG9tLmNwcAkod29ya2luZyBjb3B5KQ0KQEAgLTI5LDcgKzI5LDcgQEANCiAgKi8KIAogI2luY2x1
ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5oIgorI2lu
Y2x1ZGUgIlY4Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmgiCiAKICNpbmNsdWRlICJDYW52YXNH
cmFkaWVudC5oIgogI2luY2x1ZGUgIkNhbnZhc1BhdHRlcm4uaCIKQEAgLTM5LDYgKzM5LDcgQEAN
CiAKICNpbmNsdWRlICJWOEJpbmRpbmcuaCIKICNpbmNsdWRlICJWOENhbnZhc0dyYWRpZW50Lmgi
CisjaW5jbHVkZSAiQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmgiCiAjaW5jbHVkZSAiVjhDYW52
YXNQYXR0ZXJuLmgiCiAjaW5jbHVkZSAiVjhDdXN0b21CaW5kaW5nLmgiCiAjaW5jbHVkZSAiVjhI
VE1MQ2FudmFzRWxlbWVudC5oIgpAQCAtOTksNyArMTAwLDcgQEANCiAKIC8vIFRPRE86IFNldFN0
cm9rZUNvbG9yIGFuZCBTZXRGaWxsQ29sb3IgYXJlIHNpbWlsYXIgZXhjZXB0IGZ1bmN0aW9uIG5h
bWVzLAogLy8gY29uc29saWRhdGUgdGhlbSBpbnRvIG9uZS4KLUNBTExCQUNLX0ZVTkNfREVDTChD
YW52YXNSZW5kZXJpbmdDb250ZXh0MkRTZXRTdHJva2VDb2xvcikKK3Y4OjpIYW5kbGU8djg6OlZh
bHVlPiBWOENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c2V0U3Ryb2tlQ29sb3JDYWxsYmFjayhj
b25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAgIElOQ19TVEFUUygiRE9NLkNhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyRC5zZXRTdHJva2VDb2xvcigpIik7CiAgICAgQ2FudmFzUmVuZGVyaW5n
Q29udGV4dDJEKiBjb250ZXh0ID0gVjhET01XcmFwcGVyOjpjb252ZXJ0VG9OYXRpdmVPYmplY3Q8
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEPihWOENsYXNzSW5kZXg6OkNBTlZBU1JFTkRFUklOR0NP
TlRFWFQyRCwgYXJncy5Ib2xkZXIoKSk7CkBAIC0xMjksNyArMTMwLDcgQEANCiAgICAgcmV0dXJu
IHY4OjpVbmRlZmluZWQoKTsKIH0KIAotQ0FMTEJBQ0tfRlVOQ19ERUNMKENhbnZhc1JlbmRlcmlu
Z0NvbnRleHQyRFNldEZpbGxDb2xvcikKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOENhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyRDo6c2V0RmlsbENvbG9yQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50
cyYgYXJncykKIHsKICAgICBJTkNfU1RBVFMoIkRPTS5DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQu
c2V0RmlsbENvbG9yKCkiKTsKICAgICBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQqIGNvbnRleHQg
PSBWOERPTVdyYXBwZXI6OmNvbnZlcnRUb05hdGl2ZU9iamVjdDxDYW52YXNSZW5kZXJpbmdDb250
ZXh0MkQ+KFY4Q2xhc3NJbmRleDo6Q0FOVkFTUkVOREVSSU5HQ09OVEVYVDJELCBhcmdzLkhvbGRl
cigpKTsKQEAgLTE1OSw3ICsxNjAsNyBAQA0KICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwog
fQogCi1DQUxMQkFDS19GVU5DX0RFQ0woQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEU3Ryb2tlUmVj
dCkKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c3Ry
b2tlUmVjdENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgSU5DX1NU
QVRTKCJET00uQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELnN0cm9rZVJlY3QoKSIpOwogICAgIENh
bnZhc1JlbmRlcmluZ0NvbnRleHQyRCogY29udGV4dCA9IFY4RE9NV3JhcHBlcjo6Y29udmVydFRv
TmF0aXZlT2JqZWN0PENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRD4oVjhDbGFzc0luZGV4OjpDQU5W
QVNSRU5ERVJJTkdDT05URVhUMkQsIGFyZ3MuSG9sZGVyKCkpOwpAQCAtMTc0LDcgKzE3NSw4IEBA
DQogICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CiB9CiAKLUNBTExCQUNLX0ZVTkNfREVDTChD
YW52YXNSZW5kZXJpbmdDb250ZXh0MkRTZXRTaGFkb3cpCisKK3Y4OjpIYW5kbGU8djg6OlZhbHVl
PiBWOENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c2V0U2hhZG93Q2FsbGJhY2soY29uc3Qgdjg6
OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBJTkNfU1RBVFMoIkRPTS5DYW52YXNSZW5kZXJpbmdD
b250ZXh0MkQuc2V0U2hhZG93KCkiKTsKICAgICBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQqIGNv
bnRleHQgPSBWOERPTVdyYXBwZXI6OmNvbnZlcnRUb05hdGl2ZU9iamVjdDxDYW52YXNSZW5kZXJp
bmdDb250ZXh0MkQ+KFY4Q2xhc3NJbmRleDo6Q0FOVkFTUkVOREVSSU5HQ09OVEVYVDJELCBhcmdz
LkhvbGRlcigpKTsKQEAgLTIwOSw3ICsyMTEsOCBAQA0KICAgICByZXR1cm4gdjg6OlVuZGVmaW5l
ZCgpOwogfQogCi1DQUxMQkFDS19GVU5DX0RFQ0woQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJERHJh
d0ltYWdlKQorCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhDYW52YXNSZW5kZXJpbmdDb250ZXh0
MkQ6OmRyYXdJbWFnZUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAg
SU5DX1NUQVRTKCJET00uQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmRyYXdJbWFnZSgpIik7CiAg
ICAgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEKiBjb250ZXh0ID0gVjhET01XcmFwcGVyOjpjb252
ZXJ0VG9OYXRpdmVPYmplY3Q8Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEPihWOENsYXNzSW5kZXg6
OkNBTlZBU1JFTkRFUklOR0NPTlRFWFQyRCwgYXJncy5Ib2xkZXIoKSk7CkBAIC0zMTQsNyArMzE3
LDggQEANCiAgICAgcmV0dXJuIG5vdEhhbmRsZWRCeUludGVyY2VwdG9yKCk7CiB9CiAKLUNBTExC
QUNLX0ZVTkNfREVDTChDYW52YXNSZW5kZXJpbmdDb250ZXh0MkREcmF3SW1hZ2VGcm9tUmVjdCkK
Kwordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpkcmF3
SW1hZ2VGcm9tUmVjdENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAg
SU5DX1NUQVRTKCJET00uQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmRyYXdJbWFnZUZyb21SZWN0
KCkiKTsKICAgICBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQqIGNvbnRleHQgPSBWOERPTVdyYXBw
ZXI6OmNvbnZlcnRUb05hdGl2ZU9iamVjdDxDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ+KFY4Q2xh
c3NJbmRleDo6Q0FOVkFTUkVOREVSSU5HQ09OVEVYVDJELCBhcmdzLkhvbGRlcigpKTsKQEAgLTMz
MCw3ICszMzQsOCBAQA0KICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwogfQogCi1DQUxMQkFD
S19GVU5DX0RFQ0woQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQ3JlYXRlUGF0dGVybikKKwordjg6
OkhhbmRsZTx2ODo6VmFsdWU+IFY4Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpjcmVhdGVQYXR0
ZXJuQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBJTkNfU1RBVFMo
IkRPTS5DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3JlYXRlUGF0dGVybigpIik7CiAgICAgQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEKiBjb250ZXh0ID0gVjhET01XcmFwcGVyOjpjb252ZXJ0VG9O
YXRpdmVPYmplY3Q8Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEPihWOENsYXNzSW5kZXg6OkNBTlZB
U1JFTkRFUklOR0NPTlRFWFQyRCwgYXJncy5Ib2xkZXIoKSk7CkBAIC0zNjMsNyArMzY4LDggQEAN
CiAgICAgcmV0dXJuIG5vdEhhbmRsZWRCeUludGVyY2VwdG9yKCk7CiB9CiAKLUNBTExCQUNLX0ZV
TkNfREVDTChDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRGaWxsVGV4dCkKKwordjg6OkhhbmRsZTx2
ODo6VmFsdWU+IFY4Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpmaWxsVGV4dENhbGxiYWNrKGNv
bnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgSU5DX1NUQVRTKCJET00uQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJELmZpbGxUZXh0KCkiKTsKIApAQCAtMzkwLDcgKzM5Niw4IEBADQogICAg
IHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CiB9CiAKLUNBTExCQUNLX0ZVTkNfREVDTChDYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkRTdHJva2VUZXh0KQorCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhD
YW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnN0cm9rZVRleHRDYWxsYmFjayhjb25zdCB2ODo6QXJn
dW1lbnRzJiBhcmdzKQogewogICAgIElOQ19TVEFUUygiRE9NLkNhbnZhc1JlbmRlcmluZ0NvbnRl
eHQyRC5zdHJva2VUZXh0KCkiKTsKICAgICBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQqIGNvbnRl
eHQgPSBWOERPTVdyYXBwZXI6OmNvbnZlcnRUb05hdGl2ZU9iamVjdDxDYW52YXNSZW5kZXJpbmdD
b250ZXh0MkQ+KFY4Q2xhc3NJbmRleDo6Q0FOVkFTUkVOREVSSU5HQ09OVEVYVDJELCBhcmdzLkhv
bGRlcigpKTsKQEAgLTQxNiw3ICs0MjMsOCBAQA0KICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgp
OwogfQogCi1DQUxMQkFDS19GVU5DX0RFQ0woQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEUHV0SW1h
Z2VEYXRhKQorCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhDYW52YXNSZW5kZXJpbmdDb250ZXh0
MkQ6OnB1dEltYWdlRGF0YUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAg
ICAgSU5DX1NUQVRTKCJET00uQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELnB1dEltYWdlRGF0YSgp
Iik7CiAKSW5kZXg6IGJpbmRpbmdzL3Y4L2N1c3RvbS9WOFhNTEh0dHBSZXF1ZXN0Q3VzdG9tLmNw
cA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQ0KLS0tIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOFhNTEh0dHBSZXF1ZXN0Q3Vz
dG9tLmNwcAkocmV2aXNpb24gNTIyNjEpDQorKysgYmluZGluZ3MvdjgvY3VzdG9tL1Y4WE1MSHR0
cFJlcXVlc3RDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpDQpAQCAtMjksNyArMjksNyBAQA0KICAq
LwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiWE1MSHR0cFJlcXVlc3QuaCIKKyNp
bmNsdWRlICJWOFhNTEh0dHBSZXF1ZXN0LmgiCiAKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1
ZGUgIlY4QmluZGluZy5oIgpAQCAtNDEsNiArNDEsNyBAQA0KICNpbmNsdWRlICJWOFV0aWxpdGll
cy5oIgogI2luY2x1ZGUgIldvcmtlckNvbnRleHQuaCIKICNpbmNsdWRlICJXb3JrZXJDb250ZXh0
RXhlY3V0aW9uUHJveHkuaCIKKyNpbmNsdWRlICJYTUxIdHRwUmVxdWVzdC5oIgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKQEAgLTUxLDcgKzUyLDcgQEANCiAgICAgcmV0dXJuIHhtbEh0dHBSZXF1
ZXN0LT5yZXNwb25zZVRleHQoKS52OFN0cmluZ09yTnVsbCgpOwogfQogCi1DQUxMQkFDS19GVU5D
X0RFQ0woWE1MSHR0cFJlcXVlc3RBZGRFdmVudExpc3RlbmVyKQordjg6OkhhbmRsZTx2ODo6VmFs
dWU+IFY4WE1MSHR0cFJlcXVlc3Q6OmFkZEV2ZW50TGlzdGVuZXJDYWxsYmFjayhjb25zdCB2ODo6
QXJndW1lbnRzJiBhcmdzKQogewogICAgIElOQ19TVEFUUygiRE9NLlhNTEh0dHBSZXF1ZXN0LmFk
ZEV2ZW50TGlzdGVuZXIoKSIpOwogICAgIFhNTEh0dHBSZXF1ZXN0KiB4bWxIdHRwUmVxdWVzdCA9
IFY4RE9NV3JhcHBlcjo6Y29udmVydFRvTmF0aXZlT2JqZWN0PFhNTEh0dHBSZXF1ZXN0PihWOENs
YXNzSW5kZXg6OlhNTEhUVFBSRVFVRVNULCBhcmdzLkhvbGRlcigpKTsKQEAgLTY3LDcgKzY4LDcg
QEANCiAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKIH0KIAotQ0FMTEJBQ0tfRlVOQ19ERUNM
KFhNTEh0dHBSZXF1ZXN0UmVtb3ZlRXZlbnRMaXN0ZW5lcikKK3Y4OjpIYW5kbGU8djg6OlZhbHVl
PiBWOFhNTEh0dHBSZXF1ZXN0OjpyZW1vdmVFdmVudExpc3RlbmVyQ2FsbGJhY2soY29uc3Qgdjg6
OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBJTkNfU1RBVFMoIkRPTS5YTUxIdHRwUmVxdWVzdC5y
ZW1vdmVFdmVudExpc3RlbmVyKCkiKTsKICAgICBYTUxIdHRwUmVxdWVzdCogeG1sSHR0cFJlcXVl
c3QgPSBWOERPTVdyYXBwZXI6OmNvbnZlcnRUb05hdGl2ZU9iamVjdDxYTUxIdHRwUmVxdWVzdD4o
VjhDbGFzc0luZGV4OjpYTUxIVFRQUkVRVUVTVCwgYXJncy5Ib2xkZXIoKSk7CkBAIC04NCw3ICs4
NSw3IEBADQogICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CiB9CiAKLUNBTExCQUNLX0ZVTkNf
REVDTChYTUxIdHRwUmVxdWVzdE9wZW4pCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhYTUxIdHRw
UmVxdWVzdDo6b3BlbkNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAg
SU5DX1NUQVRTKCJET00uWE1MSHR0cFJlcXVlc3Qub3BlbigpIik7CiAgICAgLy8gRm91ciBjYXNl
czoKQEAgLTEzMyw3ICsxMzQsNyBAQA0KICAgICByZXR1cm4gVjhEb2N1bWVudDo6SGFzSW5zdGFu
Y2UodmFsdWUpIHx8IFY4SFRNTERvY3VtZW50OjpIYXNJbnN0YW5jZSh2YWx1ZSk7CiB9CiAKLUNB
TExCQUNLX0ZVTkNfREVDTChYTUxIdHRwUmVxdWVzdFNlbmQpCit2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gVjhYTUxIdHRwUmVxdWVzdDo6c2VuZENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFy
Z3MpCiB7CiAgICAgSU5DX1NUQVRTKCJET00uWE1MSHR0cFJlcXVlc3Quc2VuZCgpIik7CiAgICAg
WE1MSHR0cFJlcXVlc3QqIHhtbEh0dHBSZXF1ZXN0ID0gVjhET01XcmFwcGVyOjpjb252ZXJ0VG9O
YXRpdmVPYmplY3Q8WE1MSHR0cFJlcXVlc3Q+KFY4Q2xhc3NJbmRleDo6WE1MSFRUUFJFUVVFU1Qs
IGFyZ3MuSG9sZGVyKCkpOwpAQCAtMTYzLDcgKzE2NCw4IEBADQogICAgIHJldHVybiB2ODo6VW5k
ZWZpbmVkKCk7CiB9CiAKLUNBTExCQUNLX0ZVTkNfREVDTChYTUxIdHRwUmVxdWVzdFNldFJlcXVl
c3RIZWFkZXIpIHsKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFhNTEh0dHBSZXF1ZXN0OjpzZXRS
ZXF1ZXN0SGVhZGVyQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3sKICAgICBJ
TkNfU1RBVFMoIkRPTS5YTUxIdHRwUmVxdWVzdC5zZXRSZXF1ZXN0SGVhZGVyKCkiKTsKICAgICBp
ZiAoYXJncy5MZW5ndGgoKSA8IDIpCiAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCJOb3QgZW5v
dWdoIGFyZ3VtZW50cyIsIFY4UHJveHk6OlN5bnRheEVycm9yKTsKQEAgLTE3OCw3ICsxODAsNyBA
QA0KICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwogfQogCi1DQUxMQkFDS19GVU5DX0RFQ0wo
WE1MSHR0cFJlcXVlc3RHZXRSZXNwb25zZUhlYWRlcikKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBW
OFhNTEh0dHBSZXF1ZXN0OjpnZXRSZXNwb25zZUhlYWRlckNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1
bWVudHMmIGFyZ3MpCiB7CiAgICAgSU5DX1NUQVRTKCJET00uWE1MSHR0cFJlcXVlc3QuZ2V0UmVz
cG9uc2VIZWFkZXIoKSIpOwogICAgIGlmIChhcmdzLkxlbmd0aCgpIDwgMSkKQEAgLTE5Myw3ICsx
OTUsNyBAQA0KICAgICByZXR1cm4gdjhTdHJpbmdPck51bGwocmVzdWx0KTsKIH0KIAotQ0FMTEJB
Q0tfRlVOQ19ERUNMKFhNTEh0dHBSZXF1ZXN0T3ZlcnJpZGVNaW1lVHlwZSkKK3Y4OjpIYW5kbGU8
djg6OlZhbHVlPiBWOFhNTEh0dHBSZXF1ZXN0OjpvdmVycmlkZU1pbWVUeXBlQ2FsbGJhY2soY29u
c3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBJTkNfU1RBVFMoIkRPTS5YTUxIdHRwUmVx
dWVzdC5vdmVycmlkZU1pbWVUeXBlKCkiKTsKICAgICBpZiAoYXJncy5MZW5ndGgoKSA8IDEpCkBA
IC0yMDUsNyArMjA3LDcgQEANCiAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKIH0KIAotQ0FM
TEJBQ0tfRlVOQ19ERUNMKFhNTEh0dHBSZXF1ZXN0RGlzcGF0Y2hFdmVudCkKK3Y4OjpIYW5kbGU8
djg6OlZhbHVlPiBWOFhNTEh0dHBSZXF1ZXN0OjpkaXNwYXRjaEV2ZW50Q2FsbGJhY2soY29uc3Qg
djg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBJTkNfU1RBVFMoIkRPTS5YTUxIdHRwUmVxdWVz
dC5kaXNwYXRjaEV2ZW50KCkiKTsKICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwpJbmRleDog
YmluZGluZ3MvdjgvY3VzdG9tL1Y4V2ViR0xVbnNpZ25lZFNob3J0QXJyYXlDdXN0b20uY3BwDQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09DQotLS0gYmluZGluZ3MvdjgvY3VzdG9tL1Y4V2ViR0xVbnNpZ25lZFNob3J0QXJy
YXlDdXN0b20uY3BwCShyZXZpc2lvbiA1MjI2MSkNCisrKyBiaW5kaW5ncy92OC9jdXN0b20vVjhX
ZWJHTFVuc2lnbmVkU2hvcnRBcnJheUN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkNCkBAIC00NCw3
ICs0NCw3IEBADQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUNBTExCQUNLX0ZVTkNfREVDTChX
ZWJHTFVuc2lnbmVkU2hvcnRBcnJheUNvbnN0cnVjdG9yKQordjg6OkhhbmRsZTx2ODo6VmFsdWU+
IFY4Q3VzdG9tOjp2OFdlYkdMVW5zaWduZWRTaG9ydEFycmF5Q29uc3RydWN0b3JDYWxsYmFjayhj
b25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAgIElOQ19TVEFUUygiRE9NLldlYkdMVW5z
aWduZWRTaG9ydEFycmF5LkNvbnRydWN0b3IiKTsKIApAQCAtNzksMTMgKzc5LDEzIEBADQogICAg
IHJldHVybiB2YWx1ZTsKIH0KIAotQ0FMTEJBQ0tfRlVOQ19ERUNMKFdlYkdMVW5zaWduZWRTaG9y
dEFycmF5R2V0KQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4V2ViR0xVbnNpZ25lZFNob3J0QXJy
YXk6OmdldENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgSU5DX1NU
QVRTKCJET00uV2ViR0xVbnNpZ25lZFNob3J0QXJyYXkuZ2V0KCkiKTsKICAgICByZXR1cm4gZ2V0
V2ViR0xBcnJheUVsZW1lbnQ8V2ViR0xVbnNpZ25lZFNob3J0QXJyYXksIHVuc2lnbmVkIHNob3J0
PihhcmdzLCBWOENsYXNzSW5kZXg6OldFQkdMVU5TSUdORURTSE9SVEFSUkFZKTsKIH0KIAotQ0FM
TEJBQ0tfRlVOQ19ERUNMKFdlYkdMVW5zaWduZWRTaG9ydEFycmF5U2V0KQordjg6OkhhbmRsZTx2
ODo6VmFsdWU+IFY4V2ViR0xVbnNpZ25lZFNob3J0QXJyYXk6OnNldENhbGxiYWNrKGNvbnN0IHY4
OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgSU5DX1NUQVRTKCJET00uV2ViR0xVbnNpZ25lZFNo
b3J0QXJyYXkuc2V0KCkiKTsKICAgICByZXR1cm4gc2V0V2ViR0xBcnJheTxXZWJHTFVuc2lnbmVk
U2hvcnRBcnJheSwgVjhXZWJHTFVuc2lnbmVkU2hvcnRBcnJheT4oYXJncywgVjhDbGFzc0luZGV4
OjpXRUJHTFVOU0lHTkVEU0hPUlRBUlJBWSk7CkluZGV4OiBiaW5kaW5ncy92OC9jdXN0b20vVjhD
dXN0b21CaW5kaW5nLmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBiaW5kaW5ncy92OC9jdXN0b20vVjhDdXN0
b21CaW5kaW5nLmgJKHJldmlzaW9uIDUyMjYxKQ0KKysrIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEN1
c3RvbUJpbmRpbmcuaAkod29ya2luZyBjb3B5KQ0KQEAgLTM2LDggKzM2LDYgQEANCiAKIHN0cnVj
dCBOUE9iamVjdDsKIAotI2RlZmluZSBDQUxMQkFDS19GVU5DX0RFQ0woTkFNRSkgdjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IFY4Q3VzdG9tOjp2OCMjTkFNRSMjQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3Vt
ZW50cyYgYXJncykKLQogI2RlZmluZSBBQ0NFU1NPUl9HRVRURVIoTkFNRSkgXAogICAgIHY4OjpI
YW5kbGU8djg6OlZhbHVlPiBWOEN1c3RvbTo6djgjI05BTUUjI0FjY2Vzc29yR2V0dGVyKCBcCiAg
ICAgICAgIHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZv
JiBpbmZvKQpAQCAtMjc0LDggKzI3Miw2IEBADQogCiAgICAgICAgIERFQ0xBUkVfUFJPUEVSVFlf
QUNDRVNTT1IoRE9NV2luZG93RXZlbnRIYW5kbGVyKTsKIAotICAgICAgICBERUNMQVJFX0NBTExC
QUNLKEhUTUxDYW52YXNFbGVtZW50R2V0Q29udGV4dCk7Ci0KICAgICAgICAgREVDTEFSRV9QUk9Q
RVJUWV9BQ0NFU1NPUl9TRVRURVIoSFRNTEZyYW1lRWxlbWVudFNyYyk7CiAgICAgICAgIERFQ0xB
UkVfUFJPUEVSVFlfQUNDRVNTT1JfU0VUVEVSKEhUTUxGcmFtZUVsZW1lbnRMb2NhdGlvbik7CiAg
ICAgICAgIERFQ0xBUkVfUFJPUEVSVFlfQUNDRVNTT1JfU0VUVEVSKEhUTUxJRnJhbWVFbGVtZW50
U3JjKTsKQEAgLTI4NCw3ICsyODAsNiBAQA0KIAogICAgICAgICBERUNMQVJFX1BST1BFUlRZX0FD
Q0VTU09SKEhUTUxPcHRpb25zQ29sbGVjdGlvbkxlbmd0aCk7CiAKLSAgICAgICAgREVDTEFSRV9D
QUxMQkFDSyhIVE1MSW5wdXRFbGVtZW50U2V0U2VsZWN0aW9uUmFuZ2UpOwogCiAgICAgICAgIERF
Q0xBUkVfUFJPUEVSVFlfQUNDRVNTT1IoSFRNTElucHV0RWxlbWVudFNlbGVjdGlvblN0YXJ0KTsK
ICAgICAgICAgREVDTEFSRV9QUk9QRVJUWV9BQ0NFU1NPUihIVE1MSW5wdXRFbGVtZW50U2VsZWN0
aW9uRW5kKTsKQEAgLTI5NSw0MyArMjkwLDEwIEBADQogICAgICAgICBERUNMQVJFX05BTUVEX0FD
Q0VTU19DSEVDSyhIaXN0b3J5KTsKICAgICAgICAgREVDTEFSRV9JTkRFWEVEX0FDQ0VTU19DSEVD
SyhMb2NhdGlvbik7CiAKLSAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhIVE1MQ29sbGVjdGlvbkl0
ZW0pOwotICAgICAgICBERUNMQVJFX0NBTExCQUNLKEhUTUxDb2xsZWN0aW9uTmFtZWRJdGVtKTsK
LSAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhIVE1MQ29sbGVjdGlvbkNhbGxBc0Z1bmN0aW9uKTsK
LQotICAgICAgICBERUNMQVJFX0NBTExCQUNLKEhUTUxBbGxDb2xsZWN0aW9uSXRlbSk7Ci0gICAg
ICAgIERFQ0xBUkVfQ0FMTEJBQ0soSFRNTEFsbENvbGxlY3Rpb25OYW1lZEl0ZW0pOwotICAgICAg
ICBERUNMQVJFX0NBTExCQUNLKEhUTUxBbGxDb2xsZWN0aW9uQ2FsbEFzRnVuY3Rpb24pOwotCi0g
ICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soSFRNTFNlbGVjdEVsZW1lbnRSZW1vdmUpOwotCi0gICAg
ICAgIERFQ0xBUkVfQ0FMTEJBQ0soSFRNTE9wdGlvbnNDb2xsZWN0aW9uUmVtb3ZlKTsKLSAgICAg
ICAgREVDTEFSRV9DQUxMQkFDSyhIVE1MT3B0aW9uc0NvbGxlY3Rpb25BZGQpOwotCi0gICAgICAg
IERFQ0xBUkVfQ0FMTEJBQ0soSFRNTERvY3VtZW50V3JpdGUpOwotICAgICAgICBERUNMQVJFX0NB
TExCQUNLKEhUTUxEb2N1bWVudFdyaXRlbG4pOwotICAgICAgICBERUNMQVJFX0NBTExCQUNLKEhU
TUxEb2N1bWVudE9wZW4pOwogICAgICAgICBERUNMQVJFX1BST1BFUlRZX0FDQ0VTU09SKEhUTUxE
b2N1bWVudEFsbCk7CiAgICAgICAgIERFQ0xBUkVfTkFNRURfUFJPUEVSVFlfR0VUVEVSKEhUTUxE
b2N1bWVudCk7CiAgICAgICAgIERFQ0xBUkVfTkFNRURfUFJPUEVSVFlfREVMRVRFUihIVE1MRG9j
dW1lbnQpOwogCi0gICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soRG9jdW1lbnRFdmFsdWF0ZSk7Ci0g
ICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soRG9jdW1lbnRHZXRDU1NDYW52YXNDb250ZXh0KTsKLQot
ICAgICAgICBERUNMQVJFX0NBTExCQUNLKERPTVdpbmRvd0FkZEV2ZW50TGlzdGVuZXIpOwotICAg
ICAgICBERUNMQVJFX0NBTExCQUNLKERPTVdpbmRvd1JlbW92ZUV2ZW50TGlzdGVuZXIpOwotICAg
ICAgICBERUNMQVJFX0NBTExCQUNLKERPTVdpbmRvd1Bvc3RNZXNzYWdlKTsKLSAgICAgICAgREVD
TEFSRV9DQUxMQkFDSyhET01XaW5kb3dTZXRUaW1lb3V0KTsKLSAgICAgICAgREVDTEFSRV9DQUxM
QkFDSyhET01XaW5kb3dTZXRJbnRlcnZhbCk7Ci0gICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soRE9N
V2luZG93QXRvYik7Ci0gICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soRE9NV2luZG93QnRvYSk7Ci0g
ICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soRE9NV2luZG93Tk9QKTsKLSAgICAgICAgREVDTEFSRV9D
QUxMQkFDSyhET01XaW5kb3dUb1N0cmluZyk7Ci0gICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soRE9N
V2luZG93U2hvd01vZGFsRGlhbG9nKTsKLSAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhET01XaW5k
b3dPcGVuKTsKLSAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhET01XaW5kb3dDbGVhclRpbWVvdXQp
OwotICAgICAgICBERUNMQVJFX0NBTExCQUNLKERPTVdpbmRvd0NsZWFySW50ZXJ2YWwpOwotCiAg
ICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soRE9NUGFyc2VyQ29uc3RydWN0b3IpOwogICAgICAgICBE
RUNMQVJFX0NBTExCQUNLKEhUTUxBdWRpb0VsZW1lbnRDb25zdHJ1Y3Rvcik7CiAgICAgICAgIERF
Q0xBUkVfQ0FMTEJBQ0soSFRNTEltYWdlRWxlbWVudENvbnN0cnVjdG9yKTsKQEAgLTM0NCw1NiAr
MzA2LDcgQEANCiAgICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soWFBhdGhFdmFsdWF0b3JDb25zdHJ1
Y3Rvcik7CiAgICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soWFNMVFByb2Nlc3NvckNvbnN0cnVjdG9y
KTsKIAotICAgICAgICBERUNMQVJFX0NBTExCQUNLKFhTTFRQcm9jZXNzb3JJbXBvcnRTdHlsZXNo
ZWV0KTsKLSAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhYU0xUUHJvY2Vzc29yVHJhbnNmb3JtVG9G
cmFnbWVudCk7Ci0gICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soWFNMVFByb2Nlc3NvclRyYW5zZm9y
bVRvRG9jdW1lbnQpOwotICAgICAgICBERUNMQVJFX0NBTExCQUNLKFhTTFRQcm9jZXNzb3JTZXRQ
YXJhbWV0ZXIpOwotICAgICAgICBERUNMQVJFX0NBTExCQUNLKFhTTFRQcm9jZXNzb3JHZXRQYXJh
bWV0ZXIpOwotICAgICAgICBERUNMQVJFX0NBTExCQUNLKFhTTFRQcm9jZXNzb3JSZW1vdmVQYXJh
bWV0ZXIpOwotCi0gICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soQ1NTUHJpbWl0aXZlVmFsdWVHZXRS
R0JDb2xvclZhbHVlKTsKLQotICAgICAgICBERUNMQVJFX0NBTExCQUNLKENhbnZhc1JlbmRlcmlu
Z0NvbnRleHQyRFNldFN0cm9rZUNvbG9yKTsKLSAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhDYW52
YXNSZW5kZXJpbmdDb250ZXh0MkRTZXRGaWxsQ29sb3IpOwotICAgICAgICBERUNMQVJFX0NBTExC
QUNLKENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRFN0cm9rZVJlY3QpOwotICAgICAgICBERUNMQVJF
X0NBTExCQUNLKENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRFNldFNoYWRvdyk7Ci0gICAgICAgIERF
Q0xBUkVfQ0FMTEJBQ0soQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJERHJhd0ltYWdlKTsKLSAgICAg
ICAgREVDTEFSRV9DQUxMQkFDSyhDYW52YXNSZW5kZXJpbmdDb250ZXh0MkREcmF3SW1hZ2VGcm9t
UmVjdCk7Ci0gICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJE
Q3JlYXRlUGF0dGVybik7Ci0gICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soQ2FudmFzUmVuZGVyaW5n
Q29udGV4dDJERmlsbFRleHQpOwotICAgICAgICBERUNMQVJFX0NBTExCQUNLKENhbnZhc1JlbmRl
cmluZ0NvbnRleHQyRFN0cm9rZVRleHQpOwotICAgICAgICBERUNMQVJFX0NBTExCQUNLKENhbnZh
c1JlbmRlcmluZ0NvbnRleHQyRFB1dEltYWdlRGF0YSk7Ci0KICNpZiBFTkFCTEUoM0RfQ0FOVkFT
KQotICAgICAgICBERUNMQVJFX0NBTExCQUNLKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJ1ZmZlckRh
dGEpOwotICAgICAgICBERUNMQVJFX0NBTExCQUNLKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJ1ZmZl
clN1YkRhdGEpOwotICAgICAgICBERUNMQVJFX0NBTExCQUNLKFdlYkdMUmVuZGVyaW5nQ29udGV4
dEdldEJ1ZmZlclBhcmFtZXRlcik7Ci0gICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soV2ViR0xSZW5k
ZXJpbmdDb250ZXh0R2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyKTsKLSAgICAgICAg
REVDTEFSRV9DQUxMQkFDSyhXZWJHTFJlbmRlcmluZ0NvbnRleHRHZXRQYXJhbWV0ZXIpOwotICAg
ICAgICBERUNMQVJFX0NBTExCQUNLKFdlYkdMUmVuZGVyaW5nQ29udGV4dEdldFByb2dyYW1QYXJh
bWV0ZXIpOwotICAgICAgICBERUNMQVJFX0NBTExCQUNLKFdlYkdMUmVuZGVyaW5nQ29udGV4dEdl
dFJlbmRlcmJ1ZmZlclBhcmFtZXRlcik7Ci0gICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soV2ViR0xS
ZW5kZXJpbmdDb250ZXh0R2V0U2hhZGVyUGFyYW1ldGVyKTsKLSAgICAgICAgREVDTEFSRV9DQUxM
QkFDSyhXZWJHTFJlbmRlcmluZ0NvbnRleHRHZXRUZXhQYXJhbWV0ZXIpOwotICAgICAgICBERUNM
QVJFX0NBTExCQUNLKFdlYkdMUmVuZGVyaW5nQ29udGV4dEdldFVuaWZvcm0pOwotICAgICAgICBE
RUNMQVJFX0NBTExCQUNLKFdlYkdMUmVuZGVyaW5nQ29udGV4dEdldFZlcnRleEF0dHJpYik7Ci0g
ICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soV2ViR0xSZW5kZXJpbmdDb250ZXh0VGV4SW1hZ2UyRCk7
Ci0gICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soV2ViR0xSZW5kZXJpbmdDb250ZXh0VGV4U3ViSW1h
Z2UyRCk7Ci0gICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soV2ViR0xSZW5kZXJpbmdDb250ZXh0VW5p
Zm9ybTFmdik7Ci0gICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soV2ViR0xSZW5kZXJpbmdDb250ZXh0
VW5pZm9ybTFpdik7Ci0gICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soV2ViR0xSZW5kZXJpbmdDb250
ZXh0VW5pZm9ybTJmdik7Ci0gICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soV2ViR0xSZW5kZXJpbmdD
b250ZXh0VW5pZm9ybTJpdik7Ci0gICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soV2ViR0xSZW5kZXJp
bmdDb250ZXh0VW5pZm9ybTNmdik7Ci0gICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soV2ViR0xSZW5k
ZXJpbmdDb250ZXh0VW5pZm9ybTNpdik7Ci0gICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soV2ViR0xS
ZW5kZXJpbmdDb250ZXh0VW5pZm9ybTRmdik7Ci0gICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soV2Vi
R0xSZW5kZXJpbmdDb250ZXh0VW5pZm9ybTRpdik7Ci0gICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0so
V2ViR0xSZW5kZXJpbmdDb250ZXh0VW5pZm9ybU1hdHJpeDJmdik7Ci0gICAgICAgIERFQ0xBUkVf
Q0FMTEJBQ0soV2ViR0xSZW5kZXJpbmdDb250ZXh0VW5pZm9ybU1hdHJpeDNmdik7Ci0gICAgICAg
IERFQ0xBUkVfQ0FMTEJBQ0soV2ViR0xSZW5kZXJpbmdDb250ZXh0VW5pZm9ybU1hdHJpeDRmdik7
Ci0gICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soV2ViR0xSZW5kZXJpbmdDb250ZXh0VmVydGV4QXR0
cmliMWZ2KTsKLSAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhXZWJHTFJlbmRlcmluZ0NvbnRleHRW
ZXJ0ZXhBdHRyaWIyZnYpOwotICAgICAgICBERUNMQVJFX0NBTExCQUNLKFdlYkdMUmVuZGVyaW5n
Q29udGV4dFZlcnRleEF0dHJpYjNmdik7Ci0gICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soV2ViR0xS
ZW5kZXJpbmdDb250ZXh0VmVydGV4QXR0cmliNGZ2KTsKLQogICAgICAgICBERUNMQVJFX0NBTExC
QUNLKFdlYkdMQXJyYXlCdWZmZXJDb25zdHJ1Y3Rvcik7CiAgICAgICAgIERFQ0xBUkVfQ0FMTEJB
Q0soV2ViR0xCeXRlQXJyYXlDb25zdHJ1Y3Rvcik7CiAgICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0so
V2ViR0xGbG9hdEFycmF5Q29uc3RydWN0b3IpOwpAQCAtNDA1LDIxICszMTgsNyBAQA0KICNlbmRp
ZgogCiAgICAgICAgIERFQ0xBUkVfUFJPUEVSVFlfQUNDRVNTT1JfR0VUVEVSKENsaXBib2FyZFR5
cGVzKTsKLSAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhDbGlwYm9hcmRDbGVhckRhdGEpOwotICAg
ICAgICBERUNMQVJFX0NBTExCQUNLKENsaXBib2FyZEdldERhdGEpOwotICAgICAgICBERUNMQVJF
X0NBTExCQUNLKENsaXBib2FyZFNldERhdGEpOwotICAgICAgICBERUNMQVJFX0NBTExCQUNLKENs
aXBib2FyZFNldERyYWdJbWFnZSk7CiAKLSAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhFbGVtZW50
UXVlcnlTZWxlY3Rvcik7Ci0gICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soRWxlbWVudFF1ZXJ5U2Vs
ZWN0b3JBbGwpOwotICAgICAgICBERUNMQVJFX0NBTExCQUNLKEVsZW1lbnRTZXRBdHRyaWJ1dGUp
OwotICAgICAgICBERUNMQVJFX0NBTExCQUNLKEVsZW1lbnRTZXRBdHRyaWJ1dGVOb2RlKTsKLSAg
ICAgICAgREVDTEFSRV9DQUxMQkFDSyhFbGVtZW50U2V0QXR0cmlidXRlTlMpOwotICAgICAgICBE
RUNMQVJFX0NBTExCQUNLKEVsZW1lbnRTZXRBdHRyaWJ1dGVOb2RlTlMpOwotCi0gICAgICAgIERF
Q0xBUkVfQ0FMTEJBQ0soSGlzdG9yeVB1c2hTdGF0ZSk7Ci0gICAgICAgIERFQ0xBUkVfQ0FMTEJB
Q0soSGlzdG9yeVJlcGxhY2VTdGF0ZSk7Ci0KICAgICAgICAgREVDTEFSRV9QUk9QRVJUWV9BQ0NF
U1NPUl9TRVRURVIoTG9jYXRpb25Qcm90b2NvbCk7CiAgICAgICAgIERFQ0xBUkVfUFJPUEVSVFlf
QUNDRVNTT1JfU0VUVEVSKExvY2F0aW9uSG9zdCk7CiAgICAgICAgIERFQ0xBUkVfUFJPUEVSVFlf
QUNDRVNTT1JfU0VUVEVSKExvY2F0aW9uSG9zdG5hbWUpOwpAQCAtNDMxLDE3ICszMzAsNiBAQA0K
ICAgICAgICAgREVDTEFSRV9QUk9QRVJUWV9BQ0NFU1NPUl9HRVRURVIoTG9jYXRpb25Bc3NpZ24p
OwogICAgICAgICBERUNMQVJFX1BST1BFUlRZX0FDQ0VTU09SX0dFVFRFUihMb2NhdGlvblJlcGxh
Y2UpOwogICAgICAgICBERUNMQVJFX1BST1BFUlRZX0FDQ0VTU09SX0dFVFRFUihMb2NhdGlvblJl
bG9hZCk7Ci0gICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soTG9jYXRpb25Bc3NpZ24pOwotICAgICAg
ICBERUNMQVJFX0NBTExCQUNLKExvY2F0aW9uUmVwbGFjZSk7Ci0gICAgICAgIERFQ0xBUkVfQ0FM
TEJBQ0soTG9jYXRpb25SZWxvYWQpOwotICAgICAgICBERUNMQVJFX0NBTExCQUNLKExvY2F0aW9u
VG9TdHJpbmcpOwotICAgICAgICBERUNMQVJFX0NBTExCQUNLKExvY2F0aW9uVmFsdWVPZik7Ci0g
ICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soTm9kZUFkZEV2ZW50TGlzdGVuZXIpOwotICAgICAgICBE
RUNMQVJFX0NBTExCQUNLKE5vZGVSZW1vdmVFdmVudExpc3RlbmVyKTsKLSAgICAgICAgREVDTEFS
RV9DQUxMQkFDSyhOb2RlSW5zZXJ0QmVmb3JlKTsKLSAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhO
b2RlUmVwbGFjZUNoaWxkKTsKLSAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhOb2RlUmVtb3ZlQ2hp
bGQpOwotICAgICAgICBERUNMQVJFX0NBTExCQUNLKE5vZGVBcHBlbmRDaGlsZCk7CiAKICAgICAg
ICAgLy8gV2UgYWN0dWFsbHkgb25seSBuZWVkIHRoaXMgYmVjYXVzZSBXZWJLaXQgaGFzCiAgICAg
ICAgIC8vIG5hdmlnYXRvci5hcHBWZXJzaW9uIGFzIGN1c3RvbS4gT3VyIHZlcnNpb24ganVzdApA
QCAtNDU1LDU5ICszNDMsMTMgQEANCiAgICAgICAgIERFQ0xBUkVfUFJPUEVSVFlfQUNDRVNTT1Io
WE1MSHR0cFJlcXVlc3RPbnByb2dyZXNzKTsKICAgICAgICAgREVDTEFSRV9QUk9QRVJUWV9BQ0NF
U1NPUihYTUxIdHRwUmVxdWVzdE9ucmVhZHlzdGF0ZWNoYW5nZSk7CiAgICAgICAgIERFQ0xBUkVf
UFJPUEVSVFlfQUNDRVNTT1IoWE1MSHR0cFJlcXVlc3RSZXNwb25zZVRleHQpOwotICAgICAgICBE
RUNMQVJFX0NBTExCQUNLKFhNTEh0dHBSZXF1ZXN0QWRkRXZlbnRMaXN0ZW5lcik7Ci0gICAgICAg
IERFQ0xBUkVfQ0FMTEJBQ0soWE1MSHR0cFJlcXVlc3RSZW1vdmVFdmVudExpc3RlbmVyKTsKLSAg
ICAgICAgREVDTEFSRV9DQUxMQkFDSyhYTUxIdHRwUmVxdWVzdE9wZW4pOwotICAgICAgICBERUNM
QVJFX0NBTExCQUNLKFhNTEh0dHBSZXF1ZXN0U2VuZCk7Ci0gICAgICAgIERFQ0xBUkVfQ0FMTEJB
Q0soWE1MSHR0cFJlcXVlc3RTZXRSZXF1ZXN0SGVhZGVyKTsKLSAgICAgICAgREVDTEFSRV9DQUxM
QkFDSyhYTUxIdHRwUmVxdWVzdEdldFJlc3BvbnNlSGVhZGVyKTsKLSAgICAgICAgREVDTEFSRV9D
QUxMQkFDSyhYTUxIdHRwUmVxdWVzdE92ZXJyaWRlTWltZVR5cGUpOwotICAgICAgICBERUNMQVJF
X0NBTExCQUNLKFhNTEh0dHBSZXF1ZXN0RGlzcGF0Y2hFdmVudCk7CiAKICAgICAgICAgREVDTEFS
RV9QUk9QRVJUWV9BQ0NFU1NPUihYTUxIdHRwUmVxdWVzdFVwbG9hZE9uYWJvcnQpOwogICAgICAg
ICBERUNMQVJFX1BST1BFUlRZX0FDQ0VTU09SKFhNTEh0dHBSZXF1ZXN0VXBsb2FkT25lcnJvcik7
CiAgICAgICAgIERFQ0xBUkVfUFJPUEVSVFlfQUNDRVNTT1IoWE1MSHR0cFJlcXVlc3RVcGxvYWRP
bmxvYWQpOwogICAgICAgICBERUNMQVJFX1BST1BFUlRZX0FDQ0VTU09SKFhNTEh0dHBSZXF1ZXN0
VXBsb2FkT25sb2Fkc3RhcnQpOwogICAgICAgICBERUNMQVJFX1BST1BFUlRZX0FDQ0VTU09SKFhN
TEh0dHBSZXF1ZXN0VXBsb2FkT25wcm9ncmVzcyk7Ci0gICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0so
WE1MSHR0cFJlcXVlc3RVcGxvYWRBZGRFdmVudExpc3RlbmVyKTsKLSAgICAgICAgREVDTEFSRV9D
QUxMQkFDSyhYTUxIdHRwUmVxdWVzdFVwbG9hZFJlbW92ZUV2ZW50TGlzdGVuZXIpOwotICAgICAg
ICBERUNMQVJFX0NBTExCQUNLKFhNTEh0dHBSZXF1ZXN0VXBsb2FkRGlzcGF0Y2hFdmVudCk7CiAK
LSAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhUcmVlV2Fsa2VyUGFyZW50Tm9kZSk7Ci0gICAgICAg
IERFQ0xBUkVfQ0FMTEJBQ0soVHJlZVdhbGtlckZpcnN0Q2hpbGQpOwotICAgICAgICBERUNMQVJF
X0NBTExCQUNLKFRyZWVXYWxrZXJMYXN0Q2hpbGQpOwotICAgICAgICBERUNMQVJFX0NBTExCQUNL
KFRyZWVXYWxrZXJOZXh0Tm9kZSk7Ci0gICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soVHJlZVdhbGtl
clByZXZpb3VzTm9kZSk7Ci0gICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soVHJlZVdhbGtlck5leHRT
aWJsaW5nKTsKLSAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhUcmVlV2Fsa2VyUHJldmlvdXNTaWJs
aW5nKTsKLQotICAgICAgICBERUNMQVJFX0NBTExCQUNLKEluamVjdGVkU2NyaXB0SG9zdEluc3Bl
Y3RlZFdpbmRvdyk7Ci0gICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soSW5qZWN0ZWRTY3JpcHRIb3N0
Tm9kZUZvcklkKTsKLSAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhJbmplY3RlZFNjcmlwdEhvc3RX
cmFwT2JqZWN0KTsKLSAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhJbmplY3RlZFNjcmlwdEhvc3RV
bndyYXBPYmplY3QpOwotICAgICAgICBERUNMQVJFX0NBTExCQUNLKEluamVjdGVkU2NyaXB0SG9z
dFB1c2hOb2RlUGF0aFRvRnJvbnRlbmQpOwotICAgICAgICBERUNMQVJFX0NBTExCQUNLKEluamVj
dGVkU2NyaXB0SG9zdFdyYXBDYWxsYmFjayk7Ci0jaWYgRU5BQkxFKERBVEFCQVNFKQotICAgICAg
ICBERUNMQVJFX0NBTExCQUNLKEluamVjdGVkU2NyaXB0SG9zdFNlbGVjdERhdGFiYXNlKTsKLSAg
ICAgICAgREVDTEFSRV9DQUxMQkFDSyhJbmplY3RlZFNjcmlwdEhvc3REYXRhYmFzZUZvcklkKTsK
LSNlbmRpZgotI2lmIEVOQUJMRShET01fU1RPUkFHRSkKLSAgICAgICAgREVDTEFSRV9DQUxMQkFD
SyhJbmplY3RlZFNjcmlwdEhvc3RTZWxlY3RET01TdG9yYWdlKTsKLSNlbmRpZgotCi0gICAgICAg
IERFQ0xBUkVfQ0FMTEJBQ0soSW5zcGVjdG9yRnJvbnRlbmRIb3N0U2VhcmNoKTsKLSAgICAgICAg
REVDTEFSRV9DQUxMQkFDSyhJbnNwZWN0b3JGcm9udGVuZEhvc3RTaG93Q29udGV4dE1lbnUpOwot
Ci0gICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soQ29uc29sZVByb2ZpbGUpOwotICAgICAgICBERUNM
QVJFX0NBTExCQUNLKENvbnNvbGVQcm9maWxlRW5kKTsKLQotICAgICAgICBERUNMQVJFX0NBTExC
QUNLKE5vZGVJdGVyYXRvck5leHROb2RlKTsKLSAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhOb2Rl
SXRlcmF0b3JQcmV2aW91c05vZGUpOwotCi0gICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soTm9kZUZp
bHRlckFjY2VwdE5vZGUpOwotCi0gICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soSFRNTEZvcm1FbGVt
ZW50U3VibWl0KTsKLQogICAgICAgICBERUNMQVJFX05BTUVEX1BST1BFUlRZX0dFVFRFUihET01X
aW5kb3cpOwogICAgICAgICBERUNMQVJFX0lOREVYRURfUFJPUEVSVFlfR0VUVEVSKERPTVdpbmRv
dyk7CiAgICAgICAgIERFQ0xBUkVfTkFNRURfQUNDRVNTX0NIRUNLKERPTVdpbmRvdyk7CkBAIC01
MjQsOCArMzY2LDYgQEANCiAgICAgICAgIERFQ0xBUkVfSU5ERVhFRF9QUk9QRVJUWV9HRVRURVIo
SFRNTFBsdWdJbkVsZW1lbnQpOwogICAgICAgICBERUNMQVJFX0lOREVYRURfUFJPUEVSVFlfU0VU
VEVSKEhUTUxQbHVnSW5FbGVtZW50KTsKIAotICAgICAgICBERUNMQVJFX0NBTExCQUNLKEhUTUxQ
bHVnSW5FbGVtZW50KTsKLQogICAgICAgICBERUNMQVJFX05BTUVEX1BST1BFUlRZX0dFVFRFUihT
dHlsZVNoZWV0TGlzdCk7CiAgICAgICAgIERFQ0xBUkVfSU5ERVhFRF9QUk9QRVJUWV9HRVRURVIo
TmFtZWROb2RlTWFwKTsKICAgICAgICAgREVDTEFSRV9JTkRFWEVEX1BST1BFUlRZX0dFVFRFUihI
VE1MRm9ybUVsZW1lbnQpOwpAQCAtNTM4LDU4ICszNzgsMzMgQEANCiAgICAgICAgIERFQ0xBUkVf
TkFNRURfUFJPUEVSVFlfR0VUVEVSKEhUTUxDb2xsZWN0aW9uKTsKIAogI2lmIEVOQUJMRSgzRF9D
QU5WQVMpCi0gICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soV2ViR0xCeXRlQXJyYXlHZXQpOwotICAg
ICAgICBERUNMQVJFX0NBTExCQUNLKFdlYkdMQnl0ZUFycmF5U2V0KTsKICAgICAgICAgREVDTEFS
RV9JTkRFWEVEX1BST1BFUlRZX0dFVFRFUihXZWJHTEJ5dGVBcnJheSk7CiAgICAgICAgIERFQ0xB
UkVfSU5ERVhFRF9QUk9QRVJUWV9TRVRURVIoV2ViR0xCeXRlQXJyYXkpOwogCi0gICAgICAgIERF
Q0xBUkVfQ0FMTEJBQ0soV2ViR0xGbG9hdEFycmF5R2V0KTsKLSAgICAgICAgREVDTEFSRV9DQUxM
QkFDSyhXZWJHTEZsb2F0QXJyYXlTZXQpOwogICAgICAgICBERUNMQVJFX0lOREVYRURfUFJPUEVS
VFlfR0VUVEVSKFdlYkdMRmxvYXRBcnJheSk7CiAgICAgICAgIERFQ0xBUkVfSU5ERVhFRF9QUk9Q
RVJUWV9TRVRURVIoV2ViR0xGbG9hdEFycmF5KTsKIAotICAgICAgICBERUNMQVJFX0NBTExCQUNL
KFdlYkdMSW50QXJyYXlHZXQpOwotICAgICAgICBERUNMQVJFX0NBTExCQUNLKFdlYkdMSW50QXJy
YXlTZXQpOwogICAgICAgICBERUNMQVJFX0lOREVYRURfUFJPUEVSVFlfR0VUVEVSKFdlYkdMSW50
QXJyYXkpOwogICAgICAgICBERUNMQVJFX0lOREVYRURfUFJPUEVSVFlfU0VUVEVSKFdlYkdMSW50
QXJyYXkpOwogCi0gICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soV2ViR0xTaG9ydEFycmF5R2V0KTsK
LSAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhXZWJHTFNob3J0QXJyYXlTZXQpOwogICAgICAgICBE
RUNMQVJFX0lOREVYRURfUFJPUEVSVFlfR0VUVEVSKFdlYkdMU2hvcnRBcnJheSk7CiAgICAgICAg
IERFQ0xBUkVfSU5ERVhFRF9QUk9QRVJUWV9TRVRURVIoV2ViR0xTaG9ydEFycmF5KTsKIAotICAg
ICAgICBERUNMQVJFX0NBTExCQUNLKFdlYkdMVW5zaWduZWRCeXRlQXJyYXlHZXQpOwotICAgICAg
ICBERUNMQVJFX0NBTExCQUNLKFdlYkdMVW5zaWduZWRCeXRlQXJyYXlTZXQpOwogICAgICAgICBE
RUNMQVJFX0lOREVYRURfUFJPUEVSVFlfR0VUVEVSKFdlYkdMVW5zaWduZWRCeXRlQXJyYXkpOwog
ICAgICAgICBERUNMQVJFX0lOREVYRURfUFJPUEVSVFlfU0VUVEVSKFdlYkdMVW5zaWduZWRCeXRl
QXJyYXkpOwogCi0gICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soV2ViR0xVbnNpZ25lZEludEFycmF5
R2V0KTsKLSAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhXZWJHTFVuc2lnbmVkSW50QXJyYXlTZXQp
OwogICAgICAgICBERUNMQVJFX0lOREVYRURfUFJPUEVSVFlfR0VUVEVSKFdlYkdMVW5zaWduZWRJ
bnRBcnJheSk7CiAgICAgICAgIERFQ0xBUkVfSU5ERVhFRF9QUk9QRVJUWV9TRVRURVIoV2ViR0xV
bnNpZ25lZEludEFycmF5KTsKIAotICAgICAgICBERUNMQVJFX0NBTExCQUNLKFdlYkdMVW5zaWdu
ZWRTaG9ydEFycmF5R2V0KTsKLSAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhXZWJHTFVuc2lnbmVk
U2hvcnRBcnJheVNldCk7CiAgICAgICAgIERFQ0xBUkVfSU5ERVhFRF9QUk9QRVJUWV9HRVRURVIo
V2ViR0xVbnNpZ25lZFNob3J0QXJyYXkpOwogICAgICAgICBERUNMQVJFX0lOREVYRURfUFJPUEVS
VFlfU0VUVEVSKFdlYkdMVW5zaWduZWRTaG9ydEFycmF5KTsKICNlbmRpZgogCiAgICAgICAgIERF
Q0xBUkVfUFJPUEVSVFlfQUNDRVNTT1JfR0VUVEVSKE1lc3NhZ2VFdmVudFBvcnRzKTsKLSAgICAg
ICAgREVDTEFSRV9DQUxMQkFDSyhNZXNzYWdlRXZlbnRJbml0TWVzc2FnZUV2ZW50KTsKIAogICAg
ICAgICBERUNMQVJFX1BST1BFUlRZX0FDQ0VTU09SKE1lc3NhZ2VQb3J0T25tZXNzYWdlKTsKICAg
ICAgICAgREVDTEFSRV9QUk9QRVJUWV9BQ0NFU1NPUihNZXNzYWdlUG9ydE9uY2xvc2UpOwotICAg
ICAgICBERUNMQVJFX0NBTExCQUNLKE1lc3NhZ2VQb3J0QWRkRXZlbnRMaXN0ZW5lcik7Ci0gICAg
ICAgIERFQ0xBUkVfQ0FMTEJBQ0soTWVzc2FnZVBvcnRQb3N0TWVzc2FnZSk7Ci0gICAgICAgIERF
Q0xBUkVfQ0FMTEJBQ0soTWVzc2FnZVBvcnRSZW1vdmVFdmVudExpc3RlbmVyKTsKLSAgICAgICAg
REVDTEFSRV9DQUxMQkFDSyhNZXNzYWdlUG9ydFN0YXJ0Q29udmVyc2F0aW9uKTsKIAotICAgICAg
ICBERUNMQVJFX0NBTExCQUNLKERhdGFiYXNlQ2hhbmdlVmVyc2lvbik7Ci0gICAgICAgIERFQ0xB
UkVfQ0FMTEJBQ0soRGF0YWJhc2VUcmFuc2FjdGlvbik7Ci0gICAgICAgIERFQ0xBUkVfQ0FMTEJB
Q0soRGF0YWJhc2VSZWFkVHJhbnNhY3Rpb24pOwotICAgICAgICBERUNMQVJFX0NBTExCQUNLKFNR
TFRyYW5zYWN0aW9uRXhlY3V0ZVNxbCk7Ci0gICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soU1FMUmVz
dWx0U2V0Um93TGlzdEl0ZW0pOwotCiAjaWYgRU5BQkxFKERBVEFHUklEKQogICAgICAgICBERUNM
QVJFX1BST1BFUlRZX0FDQ0VTU09SKEhUTUxEYXRhR3JpZEVsZW1lbnREYXRhU291cmNlKTsKICAg
ICAgICAgREVDTEFSRV9OQU1FRF9QUk9QRVJUWV9HRVRURVIoRGF0YUdyaWRDb2x1bW5MaXN0KTsK
QEAgLTYxMywzNSArNDI4LDE4IEBADQogCiAjaWYgRU5BQkxFKFNWRykKICAgICAgICAgREVDTEFS
RV9QUk9QRVJUWV9BQ0NFU1NPUl9HRVRURVIoU1ZHTGVuZ3RoVmFsdWUpOwotICAgICAgICBERUNM
QVJFX0NBTExCQUNLKFNWR0xlbmd0aENvbnZlcnRUb1NwZWNpZmllZFVuaXRzKTsKLSAgICAgICAg
REVDTEFSRV9DQUxMQkFDSyhTVkdNYXRyaXhNdWx0aXBseSk7Ci0gICAgICAgIERFQ0xBUkVfQ0FM
TEJBQ0soU1ZHTWF0cml4SW52ZXJzZSk7Ci0gICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soU1ZHTWF0
cml4Um90YXRlRnJvbVZlY3Rvcik7Ci0gICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soU1ZHRWxlbWVu
dEluc3RhbmNlQWRkRXZlbnRMaXN0ZW5lcik7Ci0gICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soU1ZH
RWxlbWVudEluc3RhbmNlUmVtb3ZlRXZlbnRMaXN0ZW5lcik7CiAjZW5kaWYKIAogI2lmIEVOQUJM
RShXT1JLRVJTKQogICAgICAgICBERUNMQVJFX1BST1BFUlRZX0FDQ0VTU09SKEFic3RyYWN0V29y
a2VyT25lcnJvcik7Ci0gICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soQWJzdHJhY3RXb3JrZXJBZGRF
dmVudExpc3RlbmVyKTsKLSAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhBYnN0cmFjdFdvcmtlclJl
bW92ZUV2ZW50TGlzdGVuZXIpOwogCiAgICAgICAgIERFQ0xBUkVfUFJPUEVSVFlfQUNDRVNTT1Io
RGVkaWNhdGVkV29ya2VyQ29udGV4dE9ubWVzc2FnZSk7Ci0gICAgICAgIERFQ0xBUkVfQ0FMTEJB
Q0soRGVkaWNhdGVkV29ya2VyQ29udGV4dFBvc3RNZXNzYWdlKTsKIAogICAgICAgICBERUNMQVJF
X1BST1BFUlRZX0FDQ0VTU09SKFdvcmtlck9ubWVzc2FnZSk7Ci0gICAgICAgIERFQ0xBUkVfQ0FM
TEJBQ0soV29ya2VyUG9zdE1lc3NhZ2UpOwogICAgICAgICBERUNMQVJFX0NBTExCQUNLKFdvcmtl
ckNvbnN0cnVjdG9yKTsKIAogICAgICAgICBERUNMQVJFX1BST1BFUlRZX0FDQ0VTU09SX0dFVFRF
UihXb3JrZXJDb250ZXh0U2VsZik7CiAgICAgICAgIERFQ0xBUkVfUFJPUEVSVFlfQUNDRVNTT1Io
V29ya2VyQ29udGV4dE9uZXJyb3IpOwotICAgICAgICBERUNMQVJFX0NBTExCQUNLKFdvcmtlckNv
bnRleHRJbXBvcnRTY3JpcHRzKTsKLSAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhXb3JrZXJDb250
ZXh0U2V0VGltZW91dCk7Ci0gICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soV29ya2VyQ29udGV4dENs
ZWFyVGltZW91dCk7Ci0gICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soV29ya2VyQ29udGV4dFNldElu
dGVydmFsKTsKLSAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhXb3JrZXJDb250ZXh0Q2xlYXJJbnRl
cnZhbCk7Ci0gICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soV29ya2VyQ29udGV4dEFkZEV2ZW50TGlz
dGVuZXIpOwotICAgICAgICBERUNMQVJFX0NBTExCQUNLKFdvcmtlckNvbnRleHRSZW1vdmVFdmVu
dExpc3RlbmVyKTsKIAogI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQogICAgICAgICBERUNMQVJF
X0FDQ0VTU09SX1JVTlRJTUVfRU5BQkxFUihXb3JrZXJDb250ZXh0V2Via2l0Tm90aWZpY2F0aW9u
cyk7CkBAIC02NDksMjAgKzQ0NywxMiBAQA0KICNlbmRpZiAvLyBFTkFCTEUoV09SS0VSUykKIAog
I2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQotICAgICAgICBERUNMQVJFX0NBTExCQUNLKE5vdGlm
aWNhdGlvbkNlbnRlclJlcXVlc3RQZXJtaXNzaW9uKTsKLSAgICAgICAgREVDTEFSRV9DQUxMQkFD
SyhOb3RpZmljYXRpb25DZW50ZXJDcmVhdGVOb3RpZmljYXRpb24pOwotICAgICAgICBERUNMQVJF
X0NBTExCQUNLKE5vdGlmaWNhdGlvbkNlbnRlckNyZWF0ZUhUTUxOb3RpZmljYXRpb24pOwotCi0g
ICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soTm90aWZpY2F0aW9uQWRkRXZlbnRMaXN0ZW5lcik7Ci0g
ICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soTm90aWZpY2F0aW9uUmVtb3ZlRXZlbnRMaXN0ZW5lcik7
CiAgICAgICAgIERFQ0xBUkVfUFJPUEVSVFlfQUNDRVNTT1IoTm90aWZpY2F0aW9uRXZlbnRIYW5k
bGVyKTsKICNlbmRpZiAvLyBFTkFCTEUoTk9USUZJQ0FUSU9OUykKIAogI2lmIEVOQUJMRShPRkZM
SU5FX1dFQl9BUFBMSUNBVElPTlMpCiAgICAgICAgIERFQ0xBUkVfQUNDRVNTT1JfUlVOVElNRV9F
TkFCTEVSKERPTVdpbmRvd0FwcGxpY2F0aW9uQ2FjaGUpOwogICAgICAgICBERUNMQVJFX1BST1BF
UlRZX0FDQ0VTU09SKERPTUFwcGxpY2F0aW9uQ2FjaGVFdmVudEhhbmRsZXIpOwotICAgICAgICBE
RUNMQVJFX0NBTExCQUNLKERPTUFwcGxpY2F0aW9uQ2FjaGVBZGRFdmVudExpc3RlbmVyKTsKLSAg
ICAgICAgREVDTEFSRV9DQUxMQkFDSyhET01BcHBsaWNhdGlvbkNhY2hlUmVtb3ZlRXZlbnRMaXN0
ZW5lcik7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShTSEFSRURfV09SS0VSUykKQEAgLTY3OSwxNSAr
NDY5LDkgQEANCiAgICAgICAgIERFQ0xBUkVfUFJPUEVSVFlfQUNDRVNTT1IoV2ViU29ja2V0T25t
ZXNzYWdlKTsKICAgICAgICAgREVDTEFSRV9QUk9QRVJUWV9BQ0NFU1NPUihXZWJTb2NrZXRPbmNs
b3NlKTsKICAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhXZWJTb2NrZXRDb25zdHJ1Y3Rvcik7Ci0g
ICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soV2ViU29ja2V0QWRkRXZlbnRMaXN0ZW5lcik7Ci0gICAg
ICAgIERFQ0xBUkVfQ0FMTEJBQ0soV2ViU29ja2V0UmVtb3ZlRXZlbnRMaXN0ZW5lcik7Ci0gICAg
ICAgIERFQ0xBUkVfQ0FMTEJBQ0soV2ViU29ja2V0U2VuZCk7Ci0gICAgICAgIERFQ0xBUkVfQ0FM
TEJBQ0soV2ViU29ja2V0Q2xvc2UpOwogICAgICAgICBERUNMQVJFX0FDQ0VTU09SX1JVTlRJTUVf
RU5BQkxFUihET01XaW5kb3dXZWJTb2NrZXQpOwogI2VuZGlmCiAKLSAgICAgICAgREVDTEFSRV9D
QUxMQkFDSyhHZW9sb2NhdGlvbkdldEN1cnJlbnRQb3NpdGlvbik7Ci0gICAgICAgIERFQ0xBUkVf
Q0FMTEJBQ0soR2VvbG9jYXRpb25XYXRjaFBvc2l0aW9uKTsKICAgICAgICAgREVDTEFSRV9QUk9Q
RVJUWV9BQ0NFU1NPUl9HRVRURVIoQ29vcmRpbmF0ZXNBbHRpdHVkZSk7CiAgICAgICAgIERFQ0xB
UkVfUFJPUEVSVFlfQUNDRVNTT1JfR0VUVEVSKENvb3JkaW5hdGVzQWx0aXR1ZGVBY2N1cmFjeSk7
CiAgICAgICAgIERFQ0xBUkVfUFJPUEVSVFlfQUNDRVNTT1JfR0VUVEVSKENvb3JkaW5hdGVzSGVh
ZGluZyk7CkBAIC03MjEsMTAgKzUwNSw3IEBADQogI2lmIEVOQUJMRShTVkcpCiAgICAgICAgIHN0
YXRpYyBWOENsYXNzSW5kZXg6OlY4V3JhcHBlclR5cGUgRG93bmNhc3RTVkdQYXRoU2VnKHZvaWQq
IHBhdGhTZWcpOwogI2VuZGlmCi0KICAgICBwcml2YXRlOgotICAgICAgICBzdGF0aWMgdjg6Okhh
bmRsZTx2ODo6VmFsdWU+IFdpbmRvd1NldFRpbWVvdXRJbXBsKGNvbnN0IHY4OjpBcmd1bWVudHMm
LCBib29sIHNpbmdsZVNob3QpOwotICAgICAgICBzdGF0aWMgdm9pZCBDbGVhclRpbWVvdXRJbXBs
KGNvbnN0IHY4OjpBcmd1bWVudHMmKTsKICAgICAgICAgc3RhdGljIHZvaWQgV2luZG93U2V0TG9j
YXRpb24oRE9NV2luZG93KiwgY29uc3QgU3RyaW5nJik7CiAgICAgfTsKIApJbmRleDogYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4V2ViR0xVbnNpZ25lZEJ5dGVBcnJheUN1c3RvbS5jcHANCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0NCi0tLSBiaW5kaW5ncy92OC9jdXN0b20vVjhXZWJHTFVuc2lnbmVkQnl0ZUFycmF5Q3VzdG9t
LmNwcAkocmV2aXNpb24gNTIyNjEpDQorKysgYmluZGluZ3MvdjgvY3VzdG9tL1Y4V2ViR0xVbnNp
Z25lZEJ5dGVBcnJheUN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkNCkBAIC00NCw3ICs0NCw3IEBA
DQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUNBTExCQUNLX0ZVTkNfREVDTChXZWJHTFVuc2ln
bmVkQnl0ZUFycmF5Q29uc3RydWN0b3IpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhDdXN0b206
OnY4V2ViR0xVbnNpZ25lZEJ5dGVBcnJheUNvbnN0cnVjdG9yQ2FsbGJhY2soY29uc3Qgdjg6OkFy
Z3VtZW50cyYgYXJncykKIHsKICAgICBJTkNfU1RBVFMoIkRPTS5XZWJHTFVuc2lnbmVkQnl0ZUFy
cmF5LkNvbnRydWN0b3IiKTsKIApAQCAtNzksMTMgKzc5LDEzIEBADQogICAgIHJldHVybiB2YWx1
ZTsKIH0KIAotQ0FMTEJBQ0tfRlVOQ19ERUNMKFdlYkdMVW5zaWduZWRCeXRlQXJyYXlHZXQpCit2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhXZWJHTFVuc2lnbmVkQnl0ZUFycmF5OjpnZXRDYWxsYmFj
ayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAgIElOQ19TVEFUUygiRE9NLldlYkdM
VW5zaWduZWRCeXRlQXJyYXkuZ2V0KCkiKTsKICAgICByZXR1cm4gZ2V0V2ViR0xBcnJheUVsZW1l
bnQ8V2ViR0xVbnNpZ25lZEJ5dGVBcnJheSwgdW5zaWduZWQgY2hhcj4oYXJncywgVjhDbGFzc0lu
ZGV4OjpXRUJHTFVOU0lHTkVEQllURUFSUkFZKTsKIH0KIAotQ0FMTEJBQ0tfRlVOQ19ERUNMKFdl
YkdMVW5zaWduZWRCeXRlQXJyYXlTZXQpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhXZWJHTFVu
c2lnbmVkQnl0ZUFycmF5OjpzZXRDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQog
ewogICAgIElOQ19TVEFUUygiRE9NLldlYkdMVW5zaWduZWRCeXRlQXJyYXkuc2V0KCkiKTsKICAg
ICByZXR1cm4gc2V0V2ViR0xBcnJheTxXZWJHTFVuc2lnbmVkQnl0ZUFycmF5LCBWOFdlYkdMVW5z
aWduZWRCeXRlQXJyYXk+KGFyZ3MsIFY4Q2xhc3NJbmRleDo6V0VCR0xVTlNJR05FREJZVEVBUlJB
WSk7CkluZGV4OiBiaW5kaW5ncy92OC9jdXN0b20vVjhTVkdNYXRyaXhDdXN0b20uY3BwDQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09DQotLS0gYmluZGluZ3MvdjgvY3VzdG9tL1Y4U1ZHTWF0cml4Q3VzdG9tLmNwcAkocmV2
aXNpb24gNTIyNjEpDQorKysgYmluZGluZ3MvdjgvY3VzdG9tL1Y4U1ZHTWF0cml4Q3VzdG9tLmNw
cAkod29ya2luZyBjb3B5KQ0KQEAgLTQ0LDcgKzQ0LDcgQEANCiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotQ0FMTEJBQ0tfRlVOQ19ERUNMKFNWR01hdHJpeE11bHRpcGx5KQordjg6OkhhbmRsZTx2
ODo6VmFsdWU+IFY4U1ZHTWF0cml4OjptdWx0aXBseUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVu
dHMmIGFyZ3MpCiB7CiAgICAgSU5DX1NUQVRTKCJET00uU1ZHTWF0cml4Lm11bHRpcGx5KCkiKTsK
ICAgICBpZiAoYXJncy5MZW5ndGgoKSA8IDEpCkBAIC01OSw3ICs1OSw3IEBADQogICAgIHJldHVy
biBWOERPTVdyYXBwZXI6OmNvbnZlcnRUb1Y4T2JqZWN0KFY4Q2xhc3NJbmRleDo6U1ZHTUFUUklY
LCBWOFNWR1N0YXRpY1BPRFR5cGVXcmFwcGVyPFRyYW5zZm9ybWF0aW9uTWF0cml4Pjo6Y3JlYXRl
KG0xLm11bHRMZWZ0KG0yKSkpOwogfQogCi1DQUxMQkFDS19GVU5DX0RFQ0woU1ZHTWF0cml4SW52
ZXJzZSkKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFNWR01hdHJpeDo6aW52ZXJzZUNhbGxiYWNr
KGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgSU5DX1NUQVRTKCJET00uU1ZHTWF0
cml4LmludmVyc2UoKSIpOwogICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IG1hdHJpeCA9ICpWOERP
TVdyYXBwZXI6OmNvbnZlcnRUb05hdGl2ZU9iamVjdDxWOFNWR1BPRFR5cGVXcmFwcGVyPFRyYW5z
Zm9ybWF0aW9uTWF0cml4PiA+KFY4Q2xhc3NJbmRleDo6U1ZHTUFUUklYLCBhcmdzLkhvbGRlcigp
KTsKQEAgLTc3LDcgKzc3LDcgQEANCiAgICAgcmV0dXJuIFY4RE9NV3JhcHBlcjo6Y29udmVydFRv
VjhPYmplY3QoVjhDbGFzc0luZGV4OjpTVkdNQVRSSVgsIFY4U1ZHU3RhdGljUE9EVHlwZVdyYXBw
ZXI8VHJhbnNmb3JtYXRpb25NYXRyaXg+OjpjcmVhdGUocmVzdWx0KSk7CiB9CiAKLUNBTExCQUNL
X0ZVTkNfREVDTChTVkdNYXRyaXhSb3RhdGVGcm9tVmVjdG9yKQordjg6OkhhbmRsZTx2ODo6VmFs
dWU+IFY4U1ZHTWF0cml4Ojpyb3RhdGVGcm9tVmVjdG9yQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3Vt
ZW50cyYgYXJncykKIHsKICAgICBJTkNfU1RBVFMoIkRPTS5TVkdNYXRyaXgucm90YXRlRnJvbVZl
Y3RvcigpIik7CiAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggbWF0cml4ID0gKlY4RE9NV3JhcHBl
cjo6Y29udmVydFRvTmF0aXZlT2JqZWN0PFY4U1ZHUE9EVHlwZVdyYXBwZXI8VHJhbnNmb3JtYXRp
b25NYXRyaXg+ID4oVjhDbGFzc0luZGV4OjpTVkdNQVRSSVgsIGFyZ3MuSG9sZGVyKCkpOwpJbmRl
eDogYmluZGluZ3MvdjgvY3VzdG9tL1Y4RWxlbWVudEN1c3RvbS5jcHANCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0t
LSBiaW5kaW5ncy92OC9jdXN0b20vVjhFbGVtZW50Q3VzdG9tLmNwcAkocmV2aXNpb24gNTIyNjEp
DQorKysgYmluZGluZ3MvdjgvY3VzdG9tL1Y4RWxlbWVudEN1c3RvbS5jcHAJKHdvcmtpbmcgY29w
eSkNCkBAIC0yOSwxMSArMjksMTIgQEANCiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgotI2lu
Y2x1ZGUgIkVsZW1lbnQuaCIKKyNpbmNsdWRlICJWOEVsZW1lbnQuaCIKIAogI2luY2x1ZGUgIkF0
dHIuaCIKICNpbmNsdWRlICJDU1NIZWxwZXIuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgorI2lu
Y2x1ZGUgIkVsZW1lbnQuaCIKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCiAjaW5jbHVkZSAi
SFRNTEZyYW1lRWxlbWVudEJhc2UuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKQEAgLTQ4LDcg
KzQ5LDcgQEANCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotQ0FMTEJBQ0tfRlVOQ19ERUNMKEVs
ZW1lbnRTZXRBdHRyaWJ1dGUpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhFbGVtZW50OjpzZXRB
dHRyaWJ1dGVDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAgIElOQ19T
VEFUUygiRE9NLkVsZW1lbnQuc2V0QXR0cmlidXRlKCkiKTsKICAgICBFbGVtZW50KiBlbGVtZW50
ID0gVjhET01XcmFwcGVyOjpjb252ZXJ0RE9NV3JhcHBlclRvTm9kZTxFbGVtZW50PihhcmdzLkhv
bGRlcigpKTsKQEAgLTY2LDcgKzY3LDcgQEANCiAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsK
IH0KIAotQ0FMTEJBQ0tfRlVOQ19ERUNMKEVsZW1lbnRTZXRBdHRyaWJ1dGVOb2RlKQordjg6Okhh
bmRsZTx2ODo6VmFsdWU+IFY4RWxlbWVudDo6c2V0QXR0cmlidXRlTm9kZUNhbGxiYWNrKGNvbnN0
IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgSU5DX1NUQVRTKCJET00uRWxlbWVudC5zZXRB
dHRyaWJ1dGVOb2RlKCkiKTsKICAgICBpZiAoIVY4QXR0cjo6SGFzSW5zdGFuY2UoYXJnc1swXSkp
CkBAIC04Niw3ICs4Nyw3IEBADQogICAgIHJldHVybiBWOERPTVdyYXBwZXI6OmNvbnZlcnROb2Rl
VG9WOE9iamVjdChyZXN1bHQucmVsZWFzZSgpKTsKIH0KIAotQ0FMTEJBQ0tfRlVOQ19ERUNMKEVs
ZW1lbnRTZXRBdHRyaWJ1dGVOUykKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEVsZW1lbnQ6OnNl
dEF0dHJpYnV0ZU5TQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBJ
TkNfU1RBVFMoIkRPTS5FbGVtZW50LnNldEF0dHJpYnV0ZU5TKCkiKTsKICAgICBFbGVtZW50KiBl
bGVtZW50ID0gVjhET01XcmFwcGVyOjpjb252ZXJ0RE9NV3JhcHBlclRvTm9kZTxFbGVtZW50Pihh
cmdzLkhvbGRlcigpKTsKQEAgLTEwNSw3ICsxMDYsNyBAQA0KICAgICByZXR1cm4gdjg6OlVuZGVm
aW5lZCgpOwogfQogCi1DQUxMQkFDS19GVU5DX0RFQ0woRWxlbWVudFNldEF0dHJpYnV0ZU5vZGVO
UykKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEVsZW1lbnQ6OnNldEF0dHJpYnV0ZU5vZGVOU0Nh
bGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgSU5DX1NUQVRTKCJET00u
RWxlbWVudC5zZXRBdHRyaWJ1dGVOb2RlTlMoKSIpOwogICAgIGlmICghVjhBdHRyOjpIYXNJbnN0
YW5jZShhcmdzWzBdKSkKSW5kZXg6IGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxPcHRpb25zQ29s
bGVjdGlvbkN1c3RvbS5jcHANCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBiaW5kaW5ncy92OC9jdXN0b20vVjhI
VE1MT3B0aW9uc0NvbGxlY3Rpb25DdXN0b20uY3BwCShyZXZpc2lvbiA1MjI2MSkNCisrKyBiaW5k
aW5ncy92OC9jdXN0b20vVjhIVE1MT3B0aW9uc0NvbGxlY3Rpb25DdXN0b20uY3BwCSh3b3JraW5n
IGNvcHkpDQpAQCAtMjksOCArMjksOSBAQA0KICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiVjhIVE1MT3B0aW9uc0NvbGxlY3Rpb24uaCIKKwogI2luY2x1ZGUgIkhUTUxPcHRp
b25zQ29sbGVjdGlvbi5oIgotCiAjaW5jbHVkZSAiSFRNTE9wdGlvbkVsZW1lbnQuaCIKICNpbmNs
dWRlICJFeGNlcHRpb25Db2RlLmgiCiAKQEAgLTQzLDcgKzQ0LDcgQEANCiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotQ0FMTEJBQ0tfRlVOQ19ERUNMKEhUTUxPcHRpb25zQ29sbGVjdGlvblJlbW92
ZSkKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEhUTUxPcHRpb25zQ29sbGVjdGlvbjo6cmVtb3Zl
Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBJTkNfU1RBVFMoIkRP
TS5IVE1MT3B0aW9uc0NvbGxlY3Rpb24ucmVtb3ZlKCkiKTsKICAgICBIVE1MT3B0aW9uc0NvbGxl
Y3Rpb24qIGltcCA9IFY4RE9NV3JhcHBlcjo6Y29udmVydFRvTmF0aXZlT2JqZWN0PEhUTUxPcHRp
b25zQ29sbGVjdGlvbj4oVjhDbGFzc0luZGV4OjpIVE1MT1BUSU9OU0NPTExFQ1RJT04sIGFyZ3Mu
SG9sZGVyKCkpOwpAQCAtNTEsNyArNTIsNyBAQA0KICAgICByZXR1cm4gcmVtb3ZlRWxlbWVudChi
YXNlLCBhcmdzKTsKIH0KIAotQ0FMTEJBQ0tfRlVOQ19ERUNMKEhUTUxPcHRpb25zQ29sbGVjdGlv
bkFkZCkKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEhUTUxPcHRpb25zQ29sbGVjdGlvbjo6YWRk
Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBJTkNfU1RBVFMoIkRP
TS5IVE1MT3B0aW9uc0NvbGxlY3Rpb24uYWRkKCkiKTsKICAgICBpZiAoIVY4SFRNTE9wdGlvbkVs
ZW1lbnQ6Okhhc0luc3RhbmNlKGFyZ3NbMF0pKSB7CkluZGV4OiBiaW5kaW5ncy92OC9jdXN0b20v
VjhDbGlwYm9hcmRDdXN0b20uY3BwDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gYmluZGluZ3MvdjgvY3VzdG9t
L1Y4Q2xpcGJvYXJkQ3VzdG9tLmNwcAkocmV2aXNpb24gNTIyNjEpDQorKysgYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4Q2xpcGJvYXJkQ3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQ0KQEAgLTI5LDggKzI5
LDkgQEANCiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlY4Q2xpcGJvYXJk
LmgiCisKICNpbmNsdWRlICJDbGlwYm9hcmQuaCIKLQogI2luY2x1ZGUgIkhUTUxJbWFnZUVsZW1l
bnQuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJJbnRQb2ludC5oIgpAQCAt
NDQsMjUgKzQ1LDI1IEBADQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUFDQ0VTU09SX0dFVFRF
UihDbGlwYm9hcmRUeXBlcykKLXsKLSAgICBJTkNfU1RBVFMoIkRPTS5DbGlwYm9hcmQudHlwZXMo
KSIpOwotICAgIENsaXBib2FyZCogY2xpcGJvYXJkID0gVjhET01XcmFwcGVyOjpjb252ZXJ0VG9O
YXRpdmVPYmplY3Q8Q2xpcGJvYXJkPihWOENsYXNzSW5kZXg6OkNMSVBCT0FSRCwgaW5mby5Ib2xk
ZXIoKSk7Ci0KLSAgICBIYXNoU2V0PFN0cmluZz4gdHlwZXMgPSBjbGlwYm9hcmQtPnR5cGVzKCk7
Ci0gICAgaWYgKHR5cGVzLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIHY4OjpOdWxsKCk7Ci0K
LSAgICB2ODo6TG9jYWw8djg6OkFycmF5PiByZXN1bHQgPSB2ODo6QXJyYXk6Ok5ldyh0eXBlcy5z
aXplKCkpOwotICAgIEhhc2hTZXQ8U3RyaW5nPjo6Y29uc3RfaXRlcmF0b3IgZW5kID0gdHlwZXMu
ZW5kKCk7Ci0gICAgaW50IGluZGV4ID0gMDsKLSAgICBmb3IgKEhhc2hTZXQ8U3RyaW5nPjo6Y29u
c3RfaXRlcmF0b3IgaXQgPSB0eXBlcy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQsICsraW5kZXgp
Ci0gICAgICAgIHJlc3VsdC0+U2V0KHY4OjpJbnRlZ2VyOjpOZXcoaW5kZXgpLCB2OFN0cmluZygq
aXQpKTsKLQotICAgIHJldHVybiByZXN1bHQ7CitBQ0NFU1NPUl9HRVRURVIoQ2xpcGJvYXJkVHlw
ZXMpDQorew0KKyAgICBJTkNfU1RBVFMoIkRPTS5DbGlwYm9hcmQudHlwZXMoKSIpOw0KKyAgICBD
bGlwYm9hcmQqIGNsaXBib2FyZCA9IFY4RE9NV3JhcHBlcjo6Y29udmVydFRvTmF0aXZlT2JqZWN0
PENsaXBib2FyZD4oVjhDbGFzc0luZGV4OjpDTElQQk9BUkQsIGluZm8uSG9sZGVyKCkpOw0KKw0K
KyAgICBIYXNoU2V0PFN0cmluZz4gdHlwZXMgPSBjbGlwYm9hcmQtPnR5cGVzKCk7DQorICAgIGlm
ICh0eXBlcy5pc0VtcHR5KCkpDQorICAgICAgICByZXR1cm4gdjg6Ok51bGwoKTsNCisNCisgICAg
djg6OkxvY2FsPHY4OjpBcnJheT4gcmVzdWx0ID0gdjg6OkFycmF5OjpOZXcodHlwZXMuc2l6ZSgp
KTsNCisgICAgSGFzaFNldDxTdHJpbmc+Ojpjb25zdF9pdGVyYXRvciBlbmQgPSB0eXBlcy5lbmQo
KTsNCisgICAgaW50IGluZGV4ID0gMDsNCisgICAgZm9yIChIYXNoU2V0PFN0cmluZz46OmNvbnN0
X2l0ZXJhdG9yIGl0ID0gdHlwZXMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0LCBpbmRleCkNCisg
ICAgICAgIHJlc3VsdC0+U2V0KHY4OjpJbnRlZ2VyOjpOZXcoaW5kZXgpLCB2OFN0cmluZygqaXQp
KTsNCisNCisgICAgcmV0dXJuIHJlc3VsdDsNCiB9CiAKLUNBTExCQUNLX0ZVTkNfREVDTChDbGlw
Ym9hcmRDbGVhckRhdGEpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhDbGlwYm9hcmQ6OmNsZWFy
RGF0YUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgSU5DX1NUQVRT
KCJET00uQ2xpcGJvYXJkLmNsZWFyRGF0YSgpIik7CiAgICAgQ2xpcGJvYXJkKiBjbGlwYm9hcmQg
PSBWOERPTVdyYXBwZXI6OmNvbnZlcnRUb05hdGl2ZU9iamVjdDxDbGlwYm9hcmQ+KFY4Q2xhc3NJ
bmRleDo6Q0xJUEJPQVJELCBhcmdzLkhvbGRlcigpKTsKQEAgLTgwLDcgKzgxLDcgQEANCiAgICAg
cmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKIH0KIAotQ0FMTEJBQ0tfRlVOQ19ERUNMKENsaXBib2Fy
ZEdldERhdGEpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhDbGlwYm9hcmQ6OmdldERhdGFDYWxs
YmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAgIElOQ19TVEFUUygiRE9NLkNs
aXBib2FyZC5nZXREYXRhKCkiKTsKICAgICBDbGlwYm9hcmQqIGNsaXBib2FyZCA9IFY4RE9NV3Jh
cHBlcjo6Y29udmVydFRvTmF0aXZlT2JqZWN0PENsaXBib2FyZD4oVjhDbGFzc0luZGV4OjpDTElQ
Qk9BUkQsIGFyZ3MuSG9sZGVyKCkpOwpAQCAtOTYsNyArOTcsNyBAQA0KICAgICByZXR1cm4gdjg6
OlVuZGVmaW5lZCgpOwogfQogCi1DQUxMQkFDS19GVU5DX0RFQ0woQ2xpcGJvYXJkU2V0RGF0YSkK
K3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOENsaXBib2FyZDo6c2V0RGF0YUNhbGxiYWNrKGNvbnN0
IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgSU5DX1NUQVRTKCJET00uQ2xpcGJvYXJkLnNl
dERhdGEoKSIpOwogICAgIENsaXBib2FyZCogY2xpcGJvYXJkID0gVjhET01XcmFwcGVyOjpjb252
ZXJ0VG9OYXRpdmVPYmplY3Q8Q2xpcGJvYXJkPihWOENsYXNzSW5kZXg6OkNMSVBCT0FSRCwgYXJn
cy5Ib2xkZXIoKSk7CkBAIC0xMDksNyArMTEwLDcgQEANCiAgICAgcmV0dXJuIHY4Qm9vbGVhbihj
bGlwYm9hcmQtPnNldERhdGEodHlwZSwgZGF0YSkpOwogfQogCi1DQUxMQkFDS19GVU5DX0RFQ0wo
Q2xpcGJvYXJkU2V0RHJhZ0ltYWdlKQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4Q2xpcGJvYXJk
OjpzZXREcmFnSW1hZ2VDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAg
IElOQ19TVEFUUygiRE9NLkNsaXBib2FyZC5zZXREcmFnSW1hZ2UoKSIpOwogICAgIENsaXBib2Fy
ZCogY2xpcGJvYXJkID0gVjhET01XcmFwcGVyOjpjb252ZXJ0VG9OYXRpdmVPYmplY3Q8Q2xpcGJv
YXJkPihWOENsYXNzSW5kZXg6OkNMSVBCT0FSRCwgYXJncy5Ib2xkZXIoKSk7CkluZGV4OiBiaW5k
aW5ncy92OC9jdXN0b20vVjhTaGFyZWRXb3JrZXJDdXN0b20uY3BwDQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0g
YmluZGluZ3MvdjgvY3VzdG9tL1Y4U2hhcmVkV29ya2VyQ3VzdG9tLmNwcAkocmV2aXNpb24gNTIy
NjEpDQorKysgYmluZGluZ3MvdjgvY3VzdG9tL1Y4U2hhcmVkV29ya2VyQ3VzdG9tLmNwcAkod29y
a2luZyBjb3B5KQ0KQEAgLTQ1LDcgKzQ1LDcgQEANCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
Q0FMTEJBQ0tfRlVOQ19ERUNMKFNoYXJlZFdvcmtlckNvbnN0cnVjdG9yKQordjg6OkhhbmRsZTx2
ODo6VmFsdWU+IFY4Q3VzdG9tOjp2OFNoYXJlZFdvcmtlckNvbnN0cnVjdG9yQ2FsbGJhY2soY29u
c3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBJTkNfU1RBVFMoTCJET00uU2hhcmVkV29y
a2VyLkNvbnN0cnVjdG9yIik7CiAKSW5kZXg6IGJpbmRpbmdzL3Y4L2N1c3RvbS9WOExvY2F0aW9u
Q3VzdG9tLmNwcA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOExvY2F0aW9u
Q3VzdG9tLmNwcAkocmV2aXNpb24gNTIyNjEpDQorKysgYmluZGluZ3MvdjgvY3VzdG9tL1Y4TG9j
YXRpb25DdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpDQpAQCAtMjEwLDcgKzIxMCw3IEBADQogQUND
RVNTT1JfR0VUVEVSKExvY2F0aW9uUmVsb2FkKQogewogICAgIElOQ19TVEFUUygiRE9NLkxvY2F0
aW9uLnJlbG9hZC5fZ2V0Iik7Ci0gICAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlv
blRlbXBsYXRlPiBwcml2YXRlVGVtcGxhdGUgPSB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25U
ZW1wbGF0ZT46Ok5ldyh2ODo6RnVuY3Rpb25UZW1wbGF0ZTo6TmV3KHY4TG9jYXRpb25SZWxvYWRD
YWxsYmFjaywgdjg6OkhhbmRsZTx2ODo6VmFsdWU+KCksIHY4OjpTaWduYXR1cmU6Ok5ldyhWOExv
Y2F0aW9uOjpHZXRSYXdUZW1wbGF0ZSgpKSkpOworICAgIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2
ODo6RnVuY3Rpb25UZW1wbGF0ZT4gcHJpdmF0ZVRlbXBsYXRlID0gdjg6OlBlcnNpc3RlbnQ8djg6
OkZ1bmN0aW9uVGVtcGxhdGU+OjpOZXcodjg6OkZ1bmN0aW9uVGVtcGxhdGU6Ok5ldyhWOExvY2F0
aW9uOjpyZWxvYWRDYWxsYmFjaywgdjg6OkhhbmRsZTx2ODo6VmFsdWU+KCksIHY4OjpTaWduYXR1
cmU6Ok5ldyhWOExvY2F0aW9uOjpHZXRSYXdUZW1wbGF0ZSgpKSkpOwogICAgIHY4OjpIYW5kbGU8
djg6Ok9iamVjdD4gaG9sZGVyID0gVjhET01XcmFwcGVyOjpsb29rdXBET01XcmFwcGVyKFY4Q2xh
c3NJbmRleDo6TE9DQVRJT04sIGluZm8uVGhpcygpKTsKICAgICBpZiAoaG9sZGVyLklzRW1wdHko
KSkgewogICAgICAgICAvLyBjYW4gb25seSByZWFjaCBoZXJlIGJ5ICdvYmplY3QuX19wcm90b19f
LmZ1bmMnLCBhbmQgaXQgc2hvdWxkIHBhc3NlZApAQCAtMjE5LDcgKzIxOSw3IEBADQogICAgIH0K
ICAgICBMb2NhdGlvbiogaW1wID0gVjhET01XcmFwcGVyOjpjb252ZXJ0VG9OYXRpdmVPYmplY3Q8
TG9jYXRpb24+KFY4Q2xhc3NJbmRleDo6TE9DQVRJT04sIGhvbGRlcik7CiAgICAgaWYgKCFWOEJp
bmRpbmdTZWN1cml0eTo6Y2FuQWNjZXNzRnJhbWUoVjhCaW5kaW5nU3RhdGU6Ok9ubHkoKSwgaW1w
LT5mcmFtZSgpLCBmYWxzZSkpIHsKLSAgICAgICAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpG
dW5jdGlvblRlbXBsYXRlPiBzaGFyZWRUZW1wbGF0ZSA9IHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5j
dGlvblRlbXBsYXRlPjo6TmV3KHY4OjpGdW5jdGlvblRlbXBsYXRlOjpOZXcodjhMb2NhdGlvblJl
bG9hZENhbGxiYWNrLCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4oKSwgdjg6OlNpZ25hdHVyZTo6TmV3
KFY4TG9jYXRpb246OkdldFJhd1RlbXBsYXRlKCkpKSk7CisgICAgICAgIHN0YXRpYyB2ODo6UGVy
c2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gc2hhcmVkVGVtcGxhdGUgPSB2ODo6UGVyc2lz
dGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT46Ok5ldyh2ODo6RnVuY3Rpb25UZW1wbGF0ZTo6TmV3
KFY4TG9jYXRpb246OnJlbG9hZENhbGxiYWNrLCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4oKSwgdjg6
OlNpZ25hdHVyZTo6TmV3KFY4TG9jYXRpb246OkdldFJhd1RlbXBsYXRlKCkpKSk7CiAgICAgICAg
IHJldHVybiBzaGFyZWRUZW1wbGF0ZS0+R2V0RnVuY3Rpb24oKTsKICAgICB9CiAgICAgcmV0dXJu
IHByaXZhdGVUZW1wbGF0ZS0+R2V0RnVuY3Rpb24oKTsKQEAgLTIyOCw3ICsyMjgsNyBAQA0KIEFD
Q0VTU09SX0dFVFRFUihMb2NhdGlvblJlcGxhY2UpCiB7CiAgICAgSU5DX1NUQVRTKCJET00uTG9j
YXRpb24ucmVwbGFjZS5fZ2V0Iik7Ci0gICAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5j
dGlvblRlbXBsYXRlPiBwcml2YXRlVGVtcGxhdGUgPSB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rp
b25UZW1wbGF0ZT46Ok5ldyh2ODo6RnVuY3Rpb25UZW1wbGF0ZTo6TmV3KHY4TG9jYXRpb25SZXBs
YWNlQ2FsbGJhY2ssIHY4OjpIYW5kbGU8djg6OlZhbHVlPigpLCB2ODo6U2lnbmF0dXJlOjpOZXco
VjhMb2NhdGlvbjo6R2V0UmF3VGVtcGxhdGUoKSkpKTsKKyAgICBzdGF0aWMgdjg6OlBlcnNpc3Rl
bnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHByaXZhdGVUZW1wbGF0ZSA9IHY4OjpQZXJzaXN0ZW50
PHY4OjpGdW5jdGlvblRlbXBsYXRlPjo6TmV3KHY4OjpGdW5jdGlvblRlbXBsYXRlOjpOZXcoVjhM
b2NhdGlvbjo6cmVwbGFjZUNhbGxiYWNrLCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4oKSwgdjg6OlNp
Z25hdHVyZTo6TmV3KFY4TG9jYXRpb246OkdldFJhd1RlbXBsYXRlKCkpKSk7CiAgICAgdjg6Okhh
bmRsZTx2ODo6T2JqZWN0PiBob2xkZXIgPSBWOERPTVdyYXBwZXI6Omxvb2t1cERPTVdyYXBwZXIo
VjhDbGFzc0luZGV4OjpMT0NBVElPTiwgaW5mby5UaGlzKCkpOwogICAgIGlmIChob2xkZXIuSXNF
bXB0eSgpKSB7CiAgICAgICAgIC8vIGNhbiBvbmx5IHJlYWNoIGhlcmUgYnkgJ29iamVjdC5fX3By
b3RvX18uZnVuYycsIGFuZCBpdCBzaG91bGQgcGFzc2VkCkBAIC0yMzcsNyArMjM3LDcgQEANCiAg
ICAgfQogICAgIExvY2F0aW9uKiBpbXAgPSBWOERPTVdyYXBwZXI6OmNvbnZlcnRUb05hdGl2ZU9i
amVjdDxMb2NhdGlvbj4oVjhDbGFzc0luZGV4OjpMT0NBVElPTiwgaG9sZGVyKTsKICAgICBpZiAo
IVY4QmluZGluZ1NlY3VyaXR5OjpjYW5BY2Nlc3NGcmFtZShWOEJpbmRpbmdTdGF0ZTo6T25seSgp
LCBpbXAtPmZyYW1lKCksIGZhbHNlKSkgewotICAgICAgICBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8
djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHNoYXJlZFRlbXBsYXRlID0gdjg6OlBlcnNpc3RlbnQ8djg6
OkZ1bmN0aW9uVGVtcGxhdGU+OjpOZXcodjg6OkZ1bmN0aW9uVGVtcGxhdGU6Ok5ldyh2OExvY2F0
aW9uUmVwbGFjZUNhbGxiYWNrLCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4oKSwgdjg6OlNpZ25hdHVy
ZTo6TmV3KFY4TG9jYXRpb246OkdldFJhd1RlbXBsYXRlKCkpKSk7CisgICAgICAgIHN0YXRpYyB2
ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gc2hhcmVkVGVtcGxhdGUgPSB2ODo6
UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT46Ok5ldyh2ODo6RnVuY3Rpb25UZW1wbGF0
ZTo6TmV3KFY4TG9jYXRpb246OnJlcGxhY2VDYWxsYmFjaywgdjg6OkhhbmRsZTx2ODo6VmFsdWU+
KCksIHY4OjpTaWduYXR1cmU6Ok5ldyhWOExvY2F0aW9uOjpHZXRSYXdUZW1wbGF0ZSgpKSkpOwog
ICAgICAgICByZXR1cm4gc2hhcmVkVGVtcGxhdGUtPkdldEZ1bmN0aW9uKCk7CiAgICAgfQogICAg
IHJldHVybiBwcml2YXRlVGVtcGxhdGUtPkdldEZ1bmN0aW9uKCk7CkBAIC0yNDcsNyArMjQ3LDcg
QEANCiB7CiAgICAgSU5DX1NUQVRTKCJET00uTG9jYXRpb24uYXNzaWduLl9nZXQiKTsKICAgICBz
dGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHByaXZhdGVUZW1wbGF0
ZSA9Ci0gICAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+OjpOZXcodjg6OkZ1
bmN0aW9uVGVtcGxhdGU6Ok5ldyh2OExvY2F0aW9uQXNzaWduQ2FsbGJhY2ssIHY4OjpIYW5kbGU8
djg6OlZhbHVlPigpLCB2ODo6U2lnbmF0dXJlOjpOZXcoVjhMb2NhdGlvbjo6R2V0UmF3VGVtcGxh
dGUoKSkpKTsKKyAgICAgICAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+OjpO
ZXcodjg6OkZ1bmN0aW9uVGVtcGxhdGU6Ok5ldyhWOExvY2F0aW9uOjphc3NpZ25DYWxsYmFjaywg
djg6OkhhbmRsZTx2ODo6VmFsdWU+KCksIHY4OjpTaWduYXR1cmU6Ok5ldyhWOExvY2F0aW9uOjpH
ZXRSYXdUZW1wbGF0ZSgpKSkpOwogICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gaG9sZGVyID0g
VjhET01XcmFwcGVyOjpsb29rdXBET01XcmFwcGVyKFY4Q2xhc3NJbmRleDo6TE9DQVRJT04sIGlu
Zm8uVGhpcygpKTsKICAgICBpZiAoaG9sZGVyLklzRW1wdHkoKSkgewogICAgICAgICAvLyBjYW4g
b25seSByZWFjaCBoZXJlIGJ5ICdvYmplY3QuX19wcm90b19fLmZ1bmMnLCBhbmQgaXQgc2hvdWxk
IHBhc3NlZApAQCAtMjU2LDEzICsyNTYsMTMgQEANCiAgICAgfQogICAgIExvY2F0aW9uKiBpbXAg
PSBWOERPTVdyYXBwZXI6OmNvbnZlcnRUb05hdGl2ZU9iamVjdDxMb2NhdGlvbj4oVjhDbGFzc0lu
ZGV4OjpMT0NBVElPTiwgaG9sZGVyKTsKICAgICBpZiAoIVY4QmluZGluZ1NlY3VyaXR5OjpjYW5B
Y2Nlc3NGcmFtZShWOEJpbmRpbmdTdGF0ZTo6T25seSgpLCBpbXAtPmZyYW1lKCksIGZhbHNlKSkg
ewotICAgICAgICBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHNo
YXJlZFRlbXBsYXRlID0gdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+OjpOZXco
djg6OkZ1bmN0aW9uVGVtcGxhdGU6Ok5ldyh2OExvY2F0aW9uQXNzaWduQ2FsbGJhY2ssIHY4OjpI
YW5kbGU8djg6OlZhbHVlPigpLCB2ODo6U2lnbmF0dXJlOjpOZXcoVjhMb2NhdGlvbjo6R2V0UmF3
VGVtcGxhdGUoKSkpKTsKKyAgICAgICAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlv
blRlbXBsYXRlPiBzaGFyZWRUZW1wbGF0ZSA9IHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRl
bXBsYXRlPjo6TmV3KHY4OjpGdW5jdGlvblRlbXBsYXRlOjpOZXcoVjhMb2NhdGlvbjo6YXNzaWdu
Q2FsbGJhY2ssIHY4OjpIYW5kbGU8djg6OlZhbHVlPigpLCB2ODo6U2lnbmF0dXJlOjpOZXcoVjhM
b2NhdGlvbjo6R2V0UmF3VGVtcGxhdGUoKSkpKTsKICAgICAgICAgcmV0dXJuIHNoYXJlZFRlbXBs
YXRlLT5HZXRGdW5jdGlvbigpOwogICAgIH0KICAgICByZXR1cm4gcHJpdmF0ZVRlbXBsYXRlLT5H
ZXRGdW5jdGlvbigpOwogfQogCi1DQUxMQkFDS19GVU5DX0RFQ0woTG9jYXRpb25SZWxvYWQpCit2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhMb2NhdGlvbjo6cmVsb2FkQ2FsbGJhY2soY29uc3Qgdjg6
OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICAvLyBGSVhNRTogd2UgaWdub3JlIHRoZSAiZm9yY2Vn
ZXQiIHBhcmFtZXRlci4KIApAQCAtMjc5LDcgKzI3OSw3IEBADQogICAgIHJldHVybiB2ODo6VW5k
ZWZpbmVkKCk7CiB9CiAKLUNBTExCQUNLX0ZVTkNfREVDTChMb2NhdGlvblJlcGxhY2UpCit2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gVjhMb2NhdGlvbjo6cmVwbGFjZUNhbGxiYWNrKGNvbnN0IHY4OjpB
cmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgSU5DX1NUQVRTKCJET00uTG9jYXRpb24ucmVwbGFjZSIp
OwogICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gaG9sZGVyID0gYXJncy5Ib2xkZXIoKTsKQEAg
LTMwMCw3ICszMDAsNyBAQA0KICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwogfQogCi1DQUxM
QkFDS19GVU5DX0RFQ0woTG9jYXRpb25Bc3NpZ24pCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhM
b2NhdGlvbjo6YXNzaWduQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAg
ICBJTkNfU1RBVFMoIkRPTS5Mb2NhdGlvbi5hc3NpZ24iKTsKICAgICB2ODo6SGFuZGxlPHY4OjpP
YmplY3Q+IGhvbGRlciA9IGFyZ3MuSG9sZGVyKCk7CkBAIC0zMjEsNyArMzIxLDcgQEANCiAgICAg
cmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKIH0KIAotQ0FMTEJBQ0tfRlVOQ19ERUNMKExvY2F0aW9u
VmFsdWVPZikKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOExvY2F0aW9uOjp2YWx1ZU9mQ2FsbGJh
Y2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICAvLyBKdXN0IHJldHVybiB0aGUg
dGhpcyBvYmplY3QgdGhlIHdheSB0aGUgbm9ybWFsIHZhbHVlT2YgZnVuY3Rpb24KICAgICAvLyBv
biB0aGUgT2JqZWN0IHByb3RvdHlwZSB3b3VsZC4gIFRoZSB2YWx1ZU9mIGZ1bmN0aW9uIGlzIG9u
bHkKQEAgLTMzMSw3ICszMzEsNyBAQA0KICAgICByZXR1cm4gYXJncy5UaGlzKCk7CiB9CiAKLUNB
TExCQUNLX0ZVTkNfREVDTChMb2NhdGlvblRvU3RyaW5nKQordjg6OkhhbmRsZTx2ODo6VmFsdWU+
IFY4TG9jYXRpb246OnRvU3RyaW5nQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykK
IHsKICAgICBJTkNfU1RBVFMoIkRPTS5Mb2NhdGlvbi50b1N0cmluZyIpOwogICAgIHY4OjpIYW5k
bGU8djg6Ok9iamVjdD4gaG9sZGVyID0gYXJncy5Ib2xkZXIoKTsKSW5kZXg6IGJpbmRpbmdzL3Y4
L2N1c3RvbS9WOFhNTEh0dHBSZXF1ZXN0VXBsb2FkQ3VzdG9tLmNwcA0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0t
IGJpbmRpbmdzL3Y4L2N1c3RvbS9WOFhNTEh0dHBSZXF1ZXN0VXBsb2FkQ3VzdG9tLmNwcAkocmV2
aXNpb24gNTIyNjEpDQorKysgYmluZGluZ3MvdjgvY3VzdG9tL1Y4WE1MSHR0cFJlcXVlc3RVcGxv
YWRDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpDQpAQCAtMjksNyArMjksNyBAQA0KICAqLwogCiAj
aW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiWE1MSHR0cFJlcXVlc3RVcGxvYWQuaCIKKyNp
bmNsdWRlICJWOFhNTEh0dHBSZXF1ZXN0VXBsb2FkLmgiCiAKICNpbmNsdWRlICJFeGNlcHRpb25D
b2RlLmgiCiAjaW5jbHVkZSAiVjhCaW5kaW5nLmgiCkBAIC0zNywxMiArMzcsMTMgQEANCiAjaW5j
bHVkZSAiVjhQcm94eS5oIgogI2luY2x1ZGUgIlY4VXRpbGl0aWVzLmgiCiAjaW5jbHVkZSAiWE1M
SHR0cFJlcXVlc3QuaCIKKyNpbmNsdWRlICJYTUxIdHRwUmVxdWVzdFVwbG9hZC5oIgogCiAjaW5j
bHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1DQUxMQkFD
S19GVU5DX0RFQ0woWE1MSHR0cFJlcXVlc3RVcGxvYWRBZGRFdmVudExpc3RlbmVyKQordjg6Okhh
bmRsZTx2ODo6VmFsdWU+IFY4WE1MSHR0cFJlcXVlc3RVcGxvYWQ6OmFkZEV2ZW50TGlzdGVuZXJD
YWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAgIElOQ19TVEFUUygiRE9N
LlhNTEh0dHBSZXF1ZXN0VXBsb2FkLmFkZEV2ZW50TGlzdGVuZXIoKSIpOwogICAgIFhNTEh0dHBS
ZXF1ZXN0VXBsb2FkKiB4bWxIdHRwUmVxdWVzdFVwbG9hZCA9IFY4RE9NV3JhcHBlcjo6Y29udmVy
dFRvTmF0aXZlT2JqZWN0PFhNTEh0dHBSZXF1ZXN0VXBsb2FkPihWOENsYXNzSW5kZXg6OlhNTEhU
VFBSRVFVRVNUVVBMT0FELCBhcmdzLkhvbGRlcigpKTsKQEAgLTYwLDcgKzYxLDcgQEANCiAgICAg
cmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKIH0KIAotQ0FMTEJBQ0tfRlVOQ19ERUNMKFhNTEh0dHBS
ZXF1ZXN0VXBsb2FkUmVtb3ZlRXZlbnRMaXN0ZW5lcikKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBW
OFhNTEh0dHBSZXF1ZXN0VXBsb2FkOjpyZW1vdmVFdmVudExpc3RlbmVyQ2FsbGJhY2soY29uc3Qg
djg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBJTkNfU1RBVFMoIkRPTS5YTUxIdHRwUmVxdWVz
dFVwbG9hZC5yZW1vdmVFdmVudExpc3RlbmVyKCkiKTsKICAgICBYTUxIdHRwUmVxdWVzdFVwbG9h
ZCogeG1sSHR0cFJlcXVlc3RVcGxvYWQgPSBWOERPTVdyYXBwZXI6OmNvbnZlcnRUb05hdGl2ZU9i
amVjdDxYTUxIdHRwUmVxdWVzdFVwbG9hZD4oVjhDbGFzc0luZGV4OjpYTUxIVFRQUkVRVUVTVFVQ
TE9BRCwgYXJncy5Ib2xkZXIoKSk7CkBAIC03OSw3ICs4MCw3IEBADQogICAgIHJldHVybiB2ODo6
VW5kZWZpbmVkKCk7CiB9CiAKLUNBTExCQUNLX0ZVTkNfREVDTChYTUxIdHRwUmVxdWVzdFVwbG9h
ZERpc3BhdGNoRXZlbnQpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhYTUxIdHRwUmVxdWVzdFVw
bG9hZDo6ZGlzcGF0Y2hFdmVudENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7
CiAgICAgSU5DX1NUQVRTKCJET00uWE1MSHR0cFJlcXVlc3RVcGxvYWQuZGlzcGF0Y2hFdmVudCgp
Iik7CiAgICAgcmV0dXJuIHRocm93RXJyb3IoTk9UX1NVUFBPUlRFRF9FUlIpOwpJbmRleDogYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTFNlbGVjdEVsZW1lbnRDdXN0b20uY3BwDQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
DQotLS0gYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTFNlbGVjdEVsZW1lbnRDdXN0b20uY3BwCShy
ZXZpc2lvbiA1MjI2MSkNCisrKyBiaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MU2VsZWN0RWxlbWVu
dEN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkNCkBAIC0zOSw2ICszOSw3IEBADQogI2luY2x1ZGUg
IlY4Q29sbGVjdGlvbi5oIgogI2luY2x1ZGUgIlY4Q3VzdG9tQmluZGluZy5oIgogI2luY2x1ZGUg
IlY4SFRNTE9wdGlvbkVsZW1lbnQuaCIKKyNpbmNsdWRlICJWOEhUTUxTZWxlY3RFbGVtZW50Lmgi
CiAjaW5jbHVkZSAiVjhOYW1lZE5vZGVzQ29sbGVjdGlvbi5oIgogI2luY2x1ZGUgIlY4UHJveHku
aCIKIApAQCAtOTAsNyArOTEsNyBAQA0KICAgICByZXR1cm4gdG9PcHRpb25zQ29sbGVjdGlvblNl
dHRlcihpbmRleCwgdmFsdWUsIHNlbGVjdCk7CiB9CiAKLUNBTExCQUNLX0ZVTkNfREVDTChIVE1M
U2VsZWN0RWxlbWVudFJlbW92ZSkKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEhUTUxTZWxlY3RF
bGVtZW50OjpyZW1vdmVDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAg
IElOQ19TVEFUUygiRE9NLkhUTUxTZWxlY3RFbGVtZW50LnJlbW92ZSIpOwogICAgIEhUTUxTZWxl
Y3RFbGVtZW50KiBpbXAgPSBWOERPTVdyYXBwZXI6OmNvbnZlcnRET01XcmFwcGVyVG9Ob2RlPEhU
TUxTZWxlY3RFbGVtZW50PihhcmdzLkhvbGRlcigpKTsKSW5kZXg6IGJpbmRpbmdzL3Y4L2N1c3Rv
bS9WOFhQYXRoRXZhbHVhdG9yQ29uc3RydWN0b3IuY3BwDQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4WFBhdGhFdmFsdWF0b3JDb25zdHJ1Y3Rvci5jcHAJKHJldmlzaW9uIDUy
MjYxKQ0KKysrIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOFhQYXRoRXZhbHVhdG9yQ29uc3RydWN0b3Iu
Y3BwCSh3b3JraW5nIGNvcHkpDQpAQCAtMjksMTQgKzI5LDE1IEBADQogICovCiAKICNpbmNsdWRl
ICJjb25maWcuaCIKLSNpbmNsdWRlICJYUGF0aEV2YWx1YXRvci5oIgorI2luY2x1ZGUgIlY4WFBh
dGhFdmFsdWF0b3IuaCIKIAogI2luY2x1ZGUgIlY4QmluZGluZy5oIgogI2luY2x1ZGUgIlY4UHJv
eHkuaCIKKyNpbmNsdWRlICJYUGF0aEV2YWx1YXRvci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLUNBTExCQUNLX0ZVTkNfREVDTChYUGF0aEV2YWx1YXRvckNvbnN0cnVjdG9yKQordjg6Okhh
bmRsZTx2ODo6VmFsdWU+IFY4Q3VzdG9tOjp2OFhQYXRoRXZhbHVhdG9yQ29uc3RydWN0b3JDYWxs
YmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAgIElOQ19TVEFUUygiRE9NLlhQ
YXRoRXZhbHVhdG9yLkNvbnN0cnVjdG9yIik7CiAgICAgcmV0dXJuIFY4UHJveHk6OmNvbnN0cnVj
dERPTU9iamVjdDxWOENsYXNzSW5kZXg6OlhQQVRIRVZBTFVBVE9SLCBYUGF0aEV2YWx1YXRvcj4o
YXJncyk7CkluZGV4OiBiaW5kaW5ncy92OC9jdXN0b20vVjhXZWJTb2NrZXRDdXN0b20uY3BwDQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09DQotLS0gYmluZGluZ3MvdjgvY3VzdG9tL1Y4V2ViU29ja2V0Q3VzdG9tLmNwcAko
cmV2aXNpb24gNTIyNjEpDQorKysgYmluZGluZ3MvdjgvY3VzdG9tL1Y4V2ViU29ja2V0Q3VzdG9t
LmNwcAkod29ya2luZyBjb3B5KQ0KQEAgLTMyLDE5ICszMiwyMCBAQA0KIAogI2lmIEVOQUJMRShX
RUJfU09DS0VUUykKIAotI2luY2x1ZGUgIldlYlNvY2tldC5oIgorI2luY2x1ZGUgIlY4V2ViU29j
a2V0LmgiCiAKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5j
bHVkZSAiVjhCaW5kaW5nLmgiCiAjaW5jbHVkZSAiVjhQcm94eS5oIgogI2luY2x1ZGUgIlY4VXRp
bGl0aWVzLmgiCisjaW5jbHVkZSAiV2ViU29ja2V0LmgiCiAjaW5jbHVkZSAiV29ya2VyQ29udGV4
dC5oIgogI2luY2x1ZGUgIldvcmtlckNvbnRleHRFeGVjdXRpb25Qcm94eS5oIgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLUNBTExCQUNLX0ZVTkNfREVDTChXZWJTb2NrZXRBZGRFdmVudExpc3Rl
bmVyKQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4V2ViU29ja2V0OjphZGRFdmVudExpc3RlbmVy
Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBJTkNfU1RBVFMoIkRP
TS5XZWJTb2NrZXQuYWRkRXZlbnRMaXN0ZW5lcigpIik7CiAgICAgV2ViU29ja2V0KiB3ZWJTb2Nr
ZXQgPSBWOERPTVdyYXBwZXI6OmNvbnZlcnRUb05hdGl2ZU9iamVjdDxXZWJTb2NrZXQ+KFY4Q2xh
c3NJbmRleDo6V0VCU09DS0VULCBhcmdzLkhvbGRlcigpKTsKQEAgLTYwLDcgKzYxLDcgQEANCiAg
ICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKIH0KIAotQ0FMTEJBQ0tfRlVOQ19ERUNMKFdlYlNv
Y2tldFJlbW92ZUV2ZW50TGlzdGVuZXIpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhXZWJTb2Nr
ZXQ6OnJlbW92ZUV2ZW50TGlzdGVuZXJDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdz
KQogewogICAgIElOQ19TVEFUUygiRE9NLldlYlNvY2tldC5yZW1vdmVFdmVudExpc3RlbmVyKCki
KTsKICAgICBXZWJTb2NrZXQqIHdlYlNvY2tldCA9IFY4RE9NV3JhcHBlcjo6Y29udmVydFRvTmF0
aXZlT2JqZWN0PFdlYlNvY2tldD4oVjhDbGFzc0luZGV4OjpXRUJTT0NLRVQsIGFyZ3MuSG9sZGVy
KCkpOwpAQCAtNzUsNyArNzYsNyBAQA0KICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwogfQog
Ci1DQUxMQkFDS19GVU5DX0RFQ0woV2ViU29ja2V0Q29uc3RydWN0b3IpCit2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gVjhDdXN0b206OnY4V2ViU29ja2V0Q29uc3RydWN0b3JDYWxsYmFjayhjb25zdCB2
ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAgIElOQ19TVEFUUygiRE9NLldlYlNvY2tldC5Db25z
dHJ1Y3RvciIpOwogCkBAIC0xMjgsNyArMTI5LDcgQEANCiAgICAgcmV0dXJuIGFyZ3MuSG9sZGVy
KCk7CiB9CiAKLUNBTExCQUNLX0ZVTkNfREVDTChXZWJTb2NrZXRTZW5kKQordjg6OkhhbmRsZTx2
ODo6VmFsdWU+IFY4V2ViU29ja2V0OjpzZW5kQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYg
YXJncykKIHsKICAgICBJTkNfU1RBVFMoIkRPTS5XZWJTb2NrZXQuc2VuZCgpIik7CiAgICAgV2Vi
U29ja2V0KiB3ZWJTb2NrZXQgPSBWOERPTVdyYXBwZXI6OmNvbnZlcnRUb05hdGl2ZU9iamVjdDxX
ZWJTb2NrZXQ+KFY4Q2xhc3NJbmRleDo6V0VCU09DS0VULCBhcmdzLkhvbGRlcigpKTsKQEAgLTE0
Niw3ICsxNDcsNyBAQA0KICAgICByZXR1cm4gdjhCb29sZWFuKHJldCk7CiB9CiAKLUNBTExCQUNL
X0ZVTkNfREVDTChXZWJTb2NrZXRDbG9zZSkKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFdlYlNv
Y2tldDo6Y2xvc2VDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAgIElO
Q19TVEFUUygiRE9NLldlYlNvY2tldC5jbG9zZSgpIik7CiAgICAgV2ViU29ja2V0KiB3ZWJTb2Nr
ZXQgPSBWOERPTVdyYXBwZXI6OmNvbnZlcnRUb05hdGl2ZU9iamVjdDxXZWJTb2NrZXQ+KFY4Q2xh
c3NJbmRleDo6V0VCU09DS0VULCBhcmdzLkhvbGRlcigpKTsKSW5kZXg6IGJpbmRpbmdzL3Y4L2N1
c3RvbS9WOE5vdGlmaWNhdGlvbkNlbnRlckN1c3RvbS5jcHANCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBiaW5k
aW5ncy92OC9jdXN0b20vVjhOb3RpZmljYXRpb25DZW50ZXJDdXN0b20uY3BwCShyZXZpc2lvbiA1
MjI2MSkNCisrKyBiaW5kaW5ncy92OC9jdXN0b20vVjhOb3RpZmljYXRpb25DZW50ZXJDdXN0b20u
Y3BwCSh3b3JraW5nIGNvcHkpDQpAQCAtMzEsNiArMzEsNyBAQA0KICNpbmNsdWRlICJjb25maWcu
aCIKIAogI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQorI2luY2x1ZGUgIlY4Tm90aWZpY2F0aW9u
Q2VudGVyLmgiCiAKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUgIk5vdGlm
aWNhdGlvbi5oIgpAQCAtMzksNDcgKzQwLDQ4IEBADQogI2luY2x1ZGUgIlY4Q3VzdG9tQmluZGlu
Zy5oIgogI2luY2x1ZGUgIlY4Q3VzdG9tRXZlbnRMaXN0ZW5lci5oIgogI2luY2x1ZGUgIlY4Q3Vz
dG9tVm9pZENhbGxiYWNrLmgiCisjaW5jbHVkZSAiVjhOb3RpZmljYXRpb24uaCIKICNpbmNsdWRl
ICJWOFByb3h5LmgiCiAjaW5jbHVkZSAiVjhVdGlsaXRpZXMuaCIKICNpbmNsdWRlICJXb3JrZXJD
b250ZXh0LmgiCiAjaW5jbHVkZSAiV29ya2VyQ29udGV4dEV4ZWN1dGlvblByb3h5LmgiCiAKLW5h
bWVzcGFjZSBXZWJDb3JlIHsKK25hbWVzcGFjZSBXZWJDb3JlIHsNCiAKLUNBTExCQUNLX0ZVTkNf
REVDTChOb3RpZmljYXRpb25BZGRFdmVudExpc3RlbmVyKQotewotICAgIElOQ19TVEFUUygiRE9N
Lk5vdGlmaWNhdGlvbi5hZGRFdmVudExpc3RlbmVyKCkiKTsKLSAgICBOb3RpZmljYXRpb24qIG5v
dGlmaWNhdGlvbiA9IFY4RE9NV3JhcHBlcjo6Y29udmVydFRvTmF0aXZlT2JqZWN0PE5vdGlmaWNh
dGlvbj4oVjhDbGFzc0luZGV4OjpOT1RJRklDQVRJT04sIGFyZ3MuSG9sZGVyKCkpOwordjg6Okhh
bmRsZTx2ODo6VmFsdWU+IFY4Tm90aWZpY2F0aW9uOjphZGRFdmVudExpc3RlbmVyQ2FsbGJhY2so
Y29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykNCit7DQorICAgIElOQ19TVEFUUygiRE9NLk5vdGlm
aWNhdGlvbi5hZGRFdmVudExpc3RlbmVyKCkiKTsNCisgICAgTm90aWZpY2F0aW9uKiBub3RpZmlj
YXRpb24gPSBWOERPTVdyYXBwZXI6OmNvbnZlcnRUb05hdGl2ZU9iamVjdDxOb3RpZmljYXRpb24+
KFY4Q2xhc3NJbmRleDo6Tk9USUZJQ0FUSU9OLCBhcmdzLkhvbGRlcigpKTsNCisNCisgICAgUmVm
UHRyPEV2ZW50TGlzdGVuZXI+IGxpc3RlbmVyID0gVjhET01XcmFwcGVyOjpnZXRFdmVudExpc3Rl
bmVyKG5vdGlmaWNhdGlvbiwgYXJnc1sxXSwgZmFsc2UsIExpc3RlbmVyRmluZE9yQ3JlYXRlKTsN
CisgICAgaWYgKGxpc3RlbmVyKSB7DQorICAgICAgICBTdHJpbmcgdHlwZSA9IHRvV2ViQ29yZVN0
cmluZyhhcmdzWzBdKTsNCisgICAgICAgIGJvb2wgdXNlQ2FwdHVyZSA9IGFyZ3NbMl0tPkJvb2xl
YW5WYWx1ZSgpOw0KKyAgICAgICAgbm90aWZpY2F0aW9uLT5hZGRFdmVudExpc3RlbmVyKHR5cGUs
IGxpc3RlbmVyLCB1c2VDYXB0dXJlKTsNCisgICAgICAgIGNyZWF0ZUhpZGRlbkRlcGVuZGVuY3ko
YXJncy5Ib2xkZXIoKSwgYXJnc1sxXSwgVjhDdXN0b206OmtOb3RpZmljYXRpb25SZXF1ZXN0Q2Fj
aGVJbmRleCk7DQorICAgIH0NCisNCisgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsNCit9DQog
Ci0gICAgUmVmUHRyPEV2ZW50TGlzdGVuZXI+IGxpc3RlbmVyID0gVjhET01XcmFwcGVyOjpnZXRF
dmVudExpc3RlbmVyKG5vdGlmaWNhdGlvbiwgYXJnc1sxXSwgZmFsc2UsIExpc3RlbmVyRmluZE9y
Q3JlYXRlKTsKLSAgICBpZiAobGlzdGVuZXIpIHsKLSAgICAgICAgU3RyaW5nIHR5cGUgPSB0b1dl
YkNvcmVTdHJpbmcoYXJnc1swXSk7Ci0gICAgICAgIGJvb2wgdXNlQ2FwdHVyZSA9IGFyZ3NbMl0t
PkJvb2xlYW5WYWx1ZSgpOwotICAgICAgICBub3RpZmljYXRpb24tPmFkZEV2ZW50TGlzdGVuZXIo
dHlwZSwgbGlzdGVuZXIsIHVzZUNhcHR1cmUpOwotICAgICAgICBjcmVhdGVIaWRkZW5EZXBlbmRl
bmN5KGFyZ3MuSG9sZGVyKCksIGFyZ3NbMV0sIFY4Q3VzdG9tOjprTm90aWZpY2F0aW9uUmVxdWVz
dENhY2hlSW5kZXgpOwotICAgIH0KLQotICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7Cit2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gVjhOb3RpZmljYXRpb246OnJlbW92ZUV2ZW50TGlzdGVuZXJDYWxs
YmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQ0KK3sNCisgICAgSU5DX1NUQVRTKCJET00u
Tm90aWZpY2F0aW9uLnJlbW92ZUV2ZW50TGlzdGVuZXIoKSIpOw0KKyAgICBOb3RpZmljYXRpb24q
IG5vdGlmaWNhdGlvbiA9IFY4RE9NV3JhcHBlcjo6Y29udmVydFRvTmF0aXZlT2JqZWN0PE5vdGlm
aWNhdGlvbj4oVjhDbGFzc0luZGV4OjpOT1RJRklDQVRJT04sIGFyZ3MuSG9sZGVyKCkpOw0KKw0K
KyAgICBSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gbGlzdGVuZXIgPSBWOERPTVdyYXBwZXI6OmdldEV2
ZW50TGlzdGVuZXIobm90aWZpY2F0aW9uLCBhcmdzWzFdLCBmYWxzZSwgTGlzdGVuZXJGaW5kT25s
eSk7DQorICAgIGlmIChsaXN0ZW5lcikgew0KKyAgICAgICAgU3RyaW5nIHR5cGUgPSB0b1dlYkNv
cmVTdHJpbmcoYXJnc1swXSk7DQorICAgICAgICBib29sIHVzZUNhcHR1cmUgPSBhcmdzWzJdLT5C
b29sZWFuVmFsdWUoKTsNCisgICAgICAgIG5vdGlmaWNhdGlvbi0+cmVtb3ZlRXZlbnRMaXN0ZW5l
cih0eXBlLCBsaXN0ZW5lci5nZXQoKSwgdXNlQ2FwdHVyZSk7DQorICAgICAgICByZW1vdmVIaWRk
ZW5EZXBlbmRlbmN5KGFyZ3MuSG9sZGVyKCksIGFyZ3NbMV0sIFY4Q3VzdG9tOjprTm90aWZpY2F0
aW9uUmVxdWVzdENhY2hlSW5kZXgpOw0KKyAgICB9DQorDQorICAgIHJldHVybiB2ODo6VW5kZWZp
bmVkKCk7DQogfQogCi1DQUxMQkFDS19GVU5DX0RFQ0woTm90aWZpY2F0aW9uUmVtb3ZlRXZlbnRM
aXN0ZW5lcikKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOE5vdGlmaWNhdGlvbkNlbnRlcjo6Y3Jl
YXRlSFRNTE5vdGlmaWNhdGlvbkNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7
Ci0gICAgSU5DX1NUQVRTKCJET00uTm90aWZpY2F0aW9uLnJlbW92ZUV2ZW50TGlzdGVuZXIoKSIp
OwotICAgIE5vdGlmaWNhdGlvbiogbm90aWZpY2F0aW9uID0gVjhET01XcmFwcGVyOjpjb252ZXJ0
VG9OYXRpdmVPYmplY3Q8Tm90aWZpY2F0aW9uPihWOENsYXNzSW5kZXg6Ok5PVElGSUNBVElPTiwg
YXJncy5Ib2xkZXIoKSk7Ci0KLSAgICBSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gbGlzdGVuZXIgPSBW
OERPTVdyYXBwZXI6OmdldEV2ZW50TGlzdGVuZXIobm90aWZpY2F0aW9uLCBhcmdzWzFdLCBmYWxz
ZSwgTGlzdGVuZXJGaW5kT25seSk7Ci0gICAgaWYgKGxpc3RlbmVyKSB7Ci0gICAgICAgIFN0cmlu
ZyB0eXBlID0gdG9XZWJDb3JlU3RyaW5nKGFyZ3NbMF0pOwotICAgICAgICBib29sIHVzZUNhcHR1
cmUgPSBhcmdzWzJdLT5Cb29sZWFuVmFsdWUoKTsKLSAgICAgICAgbm90aWZpY2F0aW9uLT5yZW1v
dmVFdmVudExpc3RlbmVyKHR5cGUsIGxpc3RlbmVyLmdldCgpLCB1c2VDYXB0dXJlKTsKLSAgICAg
ICAgcmVtb3ZlSGlkZGVuRGVwZW5kZW5jeShhcmdzLkhvbGRlcigpLCBhcmdzWzFdLCBWOEN1c3Rv
bTo6a05vdGlmaWNhdGlvblJlcXVlc3RDYWNoZUluZGV4KTsKLSAgICB9Ci0KLSAgICByZXR1cm4g
djg6OlVuZGVmaW5lZCgpOwotfQotCi1DQUxMQkFDS19GVU5DX0RFQ0woTm90aWZpY2F0aW9uQ2Vu
dGVyQ3JlYXRlSFRNTE5vdGlmaWNhdGlvbikKLXsKICAgICBJTkNfU1RBVFMoTCJET00uTm90aWZp
Y2F0aW9uQ2VudGVyLkNyZWF0ZUhUTUxOb3RpZmljYXRpb24oKSIpOwogICAgIE5vdGlmaWNhdGlv
bkNlbnRlciogbm90aWZpY2F0aW9uQ2VudGVyID0gVjhET01XcmFwcGVyOjpjb252ZXJ0VG9OYXRp
dmVPYmplY3Q8Tm90aWZpY2F0aW9uQ2VudGVyPihWOENsYXNzSW5kZXg6Ok5PVElGSUNBVElPTkNF
TlRFUiwgYXJncy5Ib2xkZXIoKSk7CiAKQEAgLTk2LDcgKzk4LDcgQEANCiAgICAgcmV0dXJuIFY4
RE9NV3JhcHBlcjo6Y29udmVydFRvVjhPYmplY3QoVjhDbGFzc0luZGV4OjpOT1RJRklDQVRJT04s
IG5vdGlmaWNhdGlvbi5nZXQoKSk7CiB9CiAKLUNBTExCQUNLX0ZVTkNfREVDTChOb3RpZmljYXRp
b25DZW50ZXJDcmVhdGVOb3RpZmljYXRpb24pCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhOb3Rp
ZmljYXRpb25DZW50ZXI6OmNyZWF0ZU5vdGlmaWNhdGlvbkNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1
bWVudHMmIGFyZ3MpCiB7CiAgICAgSU5DX1NUQVRTKEwiRE9NLk5vdGlmaWNhdGlvbkNlbnRlci5D
cmVhdGVOb3RpZmljYXRpb24oKSIpOwogICAgIE5vdGlmaWNhdGlvbkNlbnRlciogbm90aWZpY2F0
aW9uQ2VudGVyID0gVjhET01XcmFwcGVyOjpjb252ZXJ0VG9OYXRpdmVPYmplY3Q8Tm90aWZpY2F0
aW9uQ2VudGVyPihWOENsYXNzSW5kZXg6Ok5PVElGSUNBVElPTkNFTlRFUiwgYXJncy5Ib2xkZXIo
KSk7CkBAIC0xMTMsNyArMTE1LDcgQEANCiAgICAgcmV0dXJuIFY4RE9NV3JhcHBlcjo6Y29udmVy
dFRvVjhPYmplY3QoVjhDbGFzc0luZGV4OjpOT1RJRklDQVRJT04sIG5vdGlmaWNhdGlvbi5nZXQo
KSk7CiB9CiAKLUNBTExCQUNLX0ZVTkNfREVDTChOb3RpZmljYXRpb25DZW50ZXJSZXF1ZXN0UGVy
bWlzc2lvbikKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOE5vdGlmaWNhdGlvbkNlbnRlcjo6cmVx
dWVzdFBlcm1pc3Npb25DYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAg
IElOQ19TVEFUUyhMIkRPTS5Ob3RpZmljYXRpb25DZW50ZXIuUmVxdWVzdFBlcm1pc3Npb24oKSIp
OwogICAgIE5vdGlmaWNhdGlvbkNlbnRlciogbm90aWZpY2F0aW9uQ2VudGVyID0gVjhET01XcmFw
cGVyOjpjb252ZXJ0VG9OYXRpdmVPYmplY3Q8Tm90aWZpY2F0aW9uQ2VudGVyPihWOENsYXNzSW5k
ZXg6Ok5PVElGSUNBVElPTkNFTlRFUiwgYXJncy5Ib2xkZXIoKSk7CkluZGV4OiBiaW5kaW5ncy92
OC9jdXN0b20vVjhNZXNzYWdlUG9ydEN1c3RvbS5jcHANCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBiaW5kaW5n
cy92OC9jdXN0b20vVjhNZXNzYWdlUG9ydEN1c3RvbS5jcHAJKHJldmlzaW9uIDUyMjYxKQ0KKysr
IGJpbmRpbmdzL3Y4L2N1c3RvbS9WOE1lc3NhZ2VQb3J0Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5
KQ0KQEAgLTQzLDcgKzQzLDcgQEANCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotQ0FMTEJBQ0tf
RlVOQ19ERUNMKE1lc3NhZ2VQb3J0QWRkRXZlbnRMaXN0ZW5lcikKK3Y4OjpIYW5kbGU8djg6OlZh
bHVlPiBWOE1lc3NhZ2VQb3J0OjphZGRFdmVudExpc3RlbmVyQ2FsbGJhY2soY29uc3Qgdjg6OkFy
Z3VtZW50cyYgYXJncykKIHsKICAgICBJTkNfU1RBVFMoIkRPTS5NZXNzYWdlUG9ydC5hZGRFdmVu
dExpc3RlbmVyKCkiKTsKICAgICBNZXNzYWdlUG9ydCogbWVzc2FnZVBvcnQgPSBWOERPTVdyYXBw
ZXI6OmNvbnZlcnRUb05hdGl2ZU9iamVjdDxNZXNzYWdlUG9ydD4oVjhDbGFzc0luZGV4OjpNRVNT
QUdFUE9SVCwgYXJncy5Ib2xkZXIoKSk7CkBAIC01OCw3ICs1OCw3IEBADQogICAgIHJldHVybiB2
ODo6VW5kZWZpbmVkKCk7CiB9CiAKLUNBTExCQUNLX0ZVTkNfREVDTChNZXNzYWdlUG9ydFJlbW92
ZUV2ZW50TGlzdGVuZXIpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhNZXNzYWdlUG9ydDo6cmVt
b3ZlRXZlbnRMaXN0ZW5lckNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAg
ICAgSU5DX1NUQVRTKCJET00uTWVzc2FnZVBvcnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigpIik7CiAg
ICAgTWVzc2FnZVBvcnQqIG1lc3NhZ2VQb3J0ID0gVjhET01XcmFwcGVyOjpjb252ZXJ0VG9OYXRp
dmVPYmplY3Q8TWVzc2FnZVBvcnQ+KFY4Q2xhc3NJbmRleDo6TUVTU0FHRVBPUlQsIGFyZ3MuSG9s
ZGVyKCkpOwpAQCAtNzQsNyArNzQsNyBAQA0KICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwog
fQogCi1DQUxMQkFDS19GVU5DX0RFQ0woTWVzc2FnZVBvcnRQb3N0TWVzc2FnZSkKK3Y4OjpIYW5k
bGU8djg6OlZhbHVlPiBWOE1lc3NhZ2VQb3J0Ojpwb3N0TWVzc2FnZUNhbGxiYWNrKGNvbnN0IHY4
OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgSU5DX1NUQVRTKCJET00uTWVzc2FnZVBvcnQucG9z
dE1lc3NhZ2UiKTsKICAgICBNZXNzYWdlUG9ydCogbWVzc2FnZVBvcnQgPSBWOERPTVdyYXBwZXI6
OmNvbnZlcnRUb05hdGl2ZU9iamVjdDxNZXNzYWdlUG9ydD4oVjhDbGFzc0luZGV4OjpNRVNTQUdF
UE9SVCwgYXJncy5Ib2xkZXIoKSk7CkluZGV4OiBiaW5kaW5ncy92OC9jdXN0b20vVjhYU0xUUHJv
Y2Vzc29yQ3VzdG9tLmNwcA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOFhT
TFRQcm9jZXNzb3JDdXN0b20uY3BwCShyZXZpc2lvbiA1MjI2MSkNCisrKyBiaW5kaW5ncy92OC9j
dXN0b20vVjhYU0xUUHJvY2Vzc29yQ3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQ0KQEAgLTI5LDcg
KzI5LDcgQEANCiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlhTTFRQcm9j
ZXNzb3IuaCIKKyNpbmNsdWRlICJWOFhTTFRQcm9jZXNzb3IuaCIKIAogI2luY2x1ZGUgIkRvY3Vt
ZW50LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRGcmFnbWVudC5oIgpAQCAtNDAsMTkgKzQwLDIwIEBA
DQogI2luY2x1ZGUgIlY4RG9jdW1lbnQuaCIKICNpbmNsdWRlICJWOE5vZGUuaCIKICNpbmNsdWRl
ICJWOFByb3h5LmgiCisjaW5jbHVkZSAiWFNMVFByb2Nlc3Nvci5oIgogCiAjaW5jbHVkZSA8d3Rm
L1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUNBTExCQUNLX0ZVTkNfREVDTChY
U0xUUHJvY2Vzc29yQ29uc3RydWN0b3IpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhDdXN0b206
OnY4WFNMVFByb2Nlc3NvckNvbnN0cnVjdG9yQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYg
YXJncykKIHsKICAgICBJTkNfU1RBVFMoIkRPTS5YU0xUUHJvY2Vzc29yLkNvbnN0cnVjdG9yIik7
CiAgICAgcmV0dXJuIFY4UHJveHk6OmNvbnN0cnVjdERPTU9iamVjdDxWOENsYXNzSW5kZXg6OlhT
TFRQUk9DRVNTT1IsIFhTTFRQcm9jZXNzb3I+KGFyZ3MpOwogfQogCiAKLUNBTExCQUNLX0ZVTkNf
REVDTChYU0xUUHJvY2Vzc29ySW1wb3J0U3R5bGVzaGVldCkKK3Y4OjpIYW5kbGU8djg6OlZhbHVl
PiBWOFhTTFRQcm9jZXNzb3I6OmltcG9ydFN0eWxlc2hlZXRDYWxsYmFjayhjb25zdCB2ODo6QXJn
dW1lbnRzJiBhcmdzKQogewogICAgIElOQ19TVEFUUygiRE9NLlhTTFRQcm9jZXNzb3IuaW1wb3J0
U3R5bGVzaGVldCIpOwogICAgIGlmICghVjhOb2RlOjpIYXNJbnN0YW5jZShhcmdzWzBdKSkKQEAg
LTY2LDcgKzY3LDcgQEANCiB9CiAKIAotQ0FMTEJBQ0tfRlVOQ19ERUNMKFhTTFRQcm9jZXNzb3JU
cmFuc2Zvcm1Ub0ZyYWdtZW50KQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4WFNMVFByb2Nlc3Nv
cjo6dHJhbnNmb3JtVG9GcmFnbWVudENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3Mp
CiB7CiAgICAgSU5DX1NUQVRTKCJET00uWFNMVFByb2Nlc3Nvci50cmFuc2Zvcm1Ub0ZyYWdtZW50
Iik7CiAgICAgaWYgKCFWOE5vZGU6Okhhc0luc3RhbmNlKGFyZ3NbMF0pIHx8ICFWOERvY3VtZW50
OjpIYXNJbnN0YW5jZShhcmdzWzFdKSkKQEAgLTgxLDcgKzgyLDcgQEANCiB9CiAKIAotQ0FMTEJB
Q0tfRlVOQ19ERUNMKFhTTFRQcm9jZXNzb3JUcmFuc2Zvcm1Ub0RvY3VtZW50KQordjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IFY4WFNMVFByb2Nlc3Nvcjo6dHJhbnNmb3JtVG9Eb2N1bWVudENhbGxiYWNr
KGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgSU5DX1NUQVRTKCJET00uWFNMVFBy
b2Nlc3Nvci50cmFuc2Zvcm1Ub0RvY3VtZW50Iik7CiAKQEAgLTEwMiw3ICsxMDMsNyBAQA0KIH0K
IAogCi1DQUxMQkFDS19GVU5DX0RFQ0woWFNMVFByb2Nlc3NvclNldFBhcmFtZXRlcikKK3Y4OjpI
YW5kbGU8djg6OlZhbHVlPiBWOFhTTFRQcm9jZXNzb3I6OnNldFBhcmFtZXRlckNhbGxiYWNrKGNv
bnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgSU5DX1NUQVRTKCJET00uWFNMVFByb2Nl
c3Nvci5zZXRQYXJhbWV0ZXIiKTsKICAgICBpZiAoaXNVbmRlZmluZWRPck51bGwoYXJnc1sxXSkg
fHwgaXNVbmRlZmluZWRPck51bGwoYXJnc1syXSkpCkBAIC0xMTksNyArMTIwLDcgQEANCiB9CiAK
IAotQ0FMTEJBQ0tfRlVOQ19ERUNMKFhTTFRQcm9jZXNzb3JHZXRQYXJhbWV0ZXIpCit2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gVjhYU0xUUHJvY2Vzc29yOjpnZXRQYXJhbWV0ZXJDYWxsYmFjayhjb25z
dCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAgIElOQ19TVEFUUygiRE9NLlhTTFRQcm9jZXNz
b3IuZ2V0UGFyYW1ldGVyIik7CiAgICAgaWYgKGlzVW5kZWZpbmVkT3JOdWxsKGFyZ3NbMV0pKQpA
QCAtMTM2LDcgKzEzNyw3IEBADQogICAgIHJldHVybiB2OFN0cmluZyhyZXN1bHQpOwogfQogCi1D
QUxMQkFDS19GVU5DX0RFQ0woWFNMVFByb2Nlc3NvclJlbW92ZVBhcmFtZXRlcikKK3Y4OjpIYW5k
bGU8djg6OlZhbHVlPiBWOFhTTFRQcm9jZXNzb3I6OnJlbW92ZVBhcmFtZXRlckNhbGxiYWNrKGNv
bnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgSU5DX1NUQVRTKCJET00uWFNMVFByb2Nl
c3Nvci5yZW1vdmVQYXJhbWV0ZXIiKTsKICAgICBpZiAoaXNVbmRlZmluZWRPck51bGwoYXJnc1sx
XSkpCkluZGV4OiBiaW5kaW5ncy92OC9jdXN0b20vVjhOb2RlRmlsdGVyQ3VzdG9tLmNwcA0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQ0KLS0tIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOE5vZGVGaWx0ZXJDdXN0b20uY3BwCShy
ZXZpc2lvbiA1MjI2MSkNCisrKyBiaW5kaW5ncy92OC9jdXN0b20vVjhOb2RlRmlsdGVyQ3VzdG9t
LmNwcAkod29ya2luZyBjb3B5KQ0KQEAgLTI5LDkgKzI5LDEwIEBADQogICovCiAKICNpbmNsdWRl
ICJjb25maWcuaCIKLSNpbmNsdWRlICJOb2RlRmlsdGVyLmgiCisjaW5jbHVkZSAiVjhOb2RlRmls
dGVyLmgiCiAKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCisjaW5jbHVkZSAiTm9kZUZpbHRl
ci5oIgogCiAjaW5jbHVkZSAiVjhCaW5kaW5nLmgiCiAjaW5jbHVkZSAiVjhDdXN0b21CaW5kaW5n
LmgiCkBAIC0zOSw3ICs0MCw3IEBADQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUNBTExCQUNL
X0ZVTkNfREVDTChOb2RlRmlsdGVyQWNjZXB0Tm9kZSkKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBW
OE5vZGVGaWx0ZXI6OmFjY2VwdE5vZGVDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdz
KQogewogICAgIElOQ19TVEFUUygiRE9NLk5vZGVGaWx0ZXIuYWNjZXB0Tm9kZSgpIik7CiAgICAg
cmV0dXJuIHRocm93RXJyb3IoTk9UX1NVUFBPUlRFRF9FUlIpOwpJbmRleDogYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4SFRNTFBsdWdJbkVsZW1lbnRDdXN0b20uY3BwDQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTFBsdWdJbkVsZW1lbnRDdXN0b20uY3BwCShyZXZpc2lvbiA1
MjI2MSkNCisrKyBiaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MUGx1Z0luRWxlbWVudEN1c3RvbS5j
cHAJKHdvcmtpbmcgY29weSkNCkBAIC0yOSw4ICsyOSw5IEBADQogKi8KIAogI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIlY4SFRNTFBsdWdJbkVsZW1lbnRDdXN0b20uaCIKKwogI2luY2x1
ZGUgIkhUTUxQbHVnSW5FbGVtZW50LmgiCi0KICNpbmNsdWRlICJTY3JpcHRJbnN0YW5jZS5oIgog
CiAjaW5jbHVkZSAiVjhCaW5kaW5nLmgiCkBAIC03MCw3ICs3MSw3IEBADQogICAgIHJldHVybiBu
cE9iamVjdFNldE5hbWVkUHJvcGVydHkoaW5zdGFuY2UsIG5hbWUsIHZhbHVlKTsKIH0KIAotQ0FM
TEJBQ0tfRlVOQ19ERUNMKEhUTUxQbHVnSW5FbGVtZW50KQordjg6OkhhbmRsZTx2ODo6VmFsdWU+
IFY4SFRNTFBsdWdJbkVsZW1lbnQ6OmRlZmF1bHRDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRz
JiBhcmdzKQogewogICAgIElOQ19TVEFUUygiRE9NLkhUTUxQbHVnaW5FbGVtZW50KCkiKTsKICAg
ICByZXR1cm4gbnBPYmplY3RJbnZva2VEZWZhdWx0SGFuZGxlcihhcmdzKTsKSW5kZXg6IGJpbmRp
bmdzL3Y4L2N1c3RvbS9WOEFic3RyYWN0V29ya2VyQ3VzdG9tLmNwcA0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0t
IGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEFic3RyYWN0V29ya2VyQ3VzdG9tLmNwcAkocmV2aXNpb24g
NTIyNjEpDQorKysgYmluZGluZ3MvdjgvY3VzdG9tL1Y4QWJzdHJhY3RXb3JrZXJDdXN0b20uY3Bw
CSh3b3JraW5nIGNvcHkpDQpAQCAtMzEsOSArMzEsOSBAQA0KICNpbmNsdWRlICJjb25maWcuaCIK
IAogI2lmIEVOQUJMRShXT1JLRVJTKQorI2luY2x1ZGUgIlY4QWJzdHJhY3RXb3JrZXIuaCIKIAog
I2luY2x1ZGUgIkFic3RyYWN0V29ya2VyLmgiCi0KICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgi
CiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgogI2luY2x1ZGUgIlY4QmluZGlu
Zy5oIgpAQCAtNDQsNyArNDQsNyBAQA0KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1DQUxMQkFD
S19GVU5DX0RFQ0woQWJzdHJhY3RXb3JrZXJBZGRFdmVudExpc3RlbmVyKQordjg6OkhhbmRsZTx2
ODo6VmFsdWU+IFY4QWJzdHJhY3RXb3JrZXI6OmFkZEV2ZW50TGlzdGVuZXJDYWxsYmFjayhjb25z
dCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAgIElOQ19TVEFUUyhMIkRPTS5BYnN0cmFjdFdv
cmtlci5hZGRFdmVudExpc3RlbmVyKCkiKTsKICAgICBBYnN0cmFjdFdvcmtlciogd29ya2VyID0g
VjhET01XcmFwcGVyOjpjb252ZXJ0VG9OYXRpdmVPYmplY3Q8QWJzdHJhY3RXb3JrZXI+KFY4Q2xh
c3NJbmRleDo6QUJTVFJBQ1RXT1JLRVIsIGFyZ3MuSG9sZGVyKCkpOwpAQCAtNjAsNyArNjAsNyBA
QA0KICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwogfQogCi1DQUxMQkFDS19GVU5DX0RFQ0wo
QWJzdHJhY3RXb3JrZXJSZW1vdmVFdmVudExpc3RlbmVyKQordjg6OkhhbmRsZTx2ODo6VmFsdWU+
IFY4QWJzdHJhY3RXb3JrZXI6OnJlbW92ZUV2ZW50TGlzdGVuZXJDYWxsYmFjayhjb25zdCB2ODo6
QXJndW1lbnRzJiBhcmdzKQogewogICAgIElOQ19TVEFUUyhMIkRPTS5BYnN0cmFjdFdvcmtlci5y
ZW1vdmVFdmVudExpc3RlbmVyKCkiKTsKICAgICBBYnN0cmFjdFdvcmtlciogd29ya2VyID0gVjhE
T01XcmFwcGVyOjpjb252ZXJ0VG9OYXRpdmVPYmplY3Q8QWJzdHJhY3RXb3JrZXI+KFY4Q2xhc3NJ
bmRleDo6QUJTVFJBQ1RXT1JLRVIsIGFyZ3MuSG9sZGVyKCkpOwpJbmRleDogYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4U1ZHRWxlbWVudEluc3RhbmNlQ3VzdG9tLmNwcA0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIGJp
bmRpbmdzL3Y4L2N1c3RvbS9WOFNWR0VsZW1lbnRJbnN0YW5jZUN1c3RvbS5jcHAJKHJldmlzaW9u
IDUyMjYxKQ0KKysrIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOFNWR0VsZW1lbnRJbnN0YW5jZUN1c3Rv
bS5jcHAJKHdvcmtpbmcgY29weSkNCkBAIC0zMiw5ICszMiwxMCBAQA0KIAogI2lmIEVOQUJMRShT
VkcpCiAKLSNpbmNsdWRlICJTVkdFbGVtZW50SW5zdGFuY2UuaCIKKyNpbmNsdWRlICJWOFNWR0Vs
ZW1lbnRJbnN0YW5jZS5oIgogCiAjaW5jbHVkZSAiRXZlbnRMaXN0ZW5lci5oIgorI2luY2x1ZGUg
IlNWR0VsZW1lbnRJbnN0YW5jZS5oIgogCiAjaW5jbHVkZSAiVjhCaW5kaW5nLmgiCiAjaW5jbHVk
ZSAiVjhDdXN0b21CaW5kaW5nLmgiCkBAIC00NCw3ICs0NSw3IEBADQogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLUNBTExCQUNLX0ZVTkNfREVDTChTVkdFbGVtZW50SW5zdGFuY2VBZGRFdmVudExp
c3RlbmVyKQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4U1ZHRWxlbWVudEluc3RhbmNlOjphZGRF
dmVudExpc3RlbmVyQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBJ
TkNfU1RBVFMoIkRPTS5TVkdFbGVtZW50SW5zdGFuY2UuQWRkRXZlbnRMaXN0ZW5lcigpIik7CiAg
ICAgU1ZHRWxlbWVudEluc3RhbmNlKiBpbnN0YW5jZSA9IFY4RE9NV3JhcHBlcjo6Y29udmVydERP
TVdyYXBwZXJUb05hdGl2ZTxTVkdFbGVtZW50SW5zdGFuY2U+KGFyZ3MuSG9sZGVyKCkpOwpAQCAt
NjAsNyArNjEsNyBAQA0KICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwogfQogCi1DQUxMQkFD
S19GVU5DX0RFQ0woU1ZHRWxlbWVudEluc3RhbmNlUmVtb3ZlRXZlbnRMaXN0ZW5lcikKK3Y4OjpI
YW5kbGU8djg6OlZhbHVlPiBWOFNWR0VsZW1lbnRJbnN0YW5jZTo6cmVtb3ZlRXZlbnRMaXN0ZW5l
ckNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgSU5DX1NUQVRTKCJE
T00uU1ZHRWxlbWVudEluc3RhbmNlLlJlbW92ZUV2ZW50TGlzdGVuZXIoKSIpOwogICAgIFNWR0Vs
ZW1lbnRJbnN0YW5jZSogaW5zdGFuY2UgPSBWOERPTVdyYXBwZXI6OmNvbnZlcnRET01XcmFwcGVy
VG9OYXRpdmU8U1ZHRWxlbWVudEluc3RhbmNlPihhcmdzLkhvbGRlcigpKTsKSW5kZXg6IGJpbmRp
bmdzL3Y4L2N1c3RvbS9WOFdlYktpdENTU01hdHJpeENvbnN0cnVjdG9yLmNwcA0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQ0KLS0tIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOFdlYktpdENTU01hdHJpeENvbnN0cnVjdG9yLmNw
cAkocmV2aXNpb24gNTIyNjEpDQorKysgYmluZGluZ3MvdjgvY3VzdG9tL1Y4V2ViS2l0Q1NTTWF0
cml4Q29uc3RydWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpDQpAQCAtNDQsNyArNDQsNyBAQA0KIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi1DQUxMQkFDS19GVU5DX0RFQ0woV2ViS2l0Q1NTTWF0cml4
Q29uc3RydWN0b3IpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhDdXN0b206OnY4V2ViS2l0Q1NT
TWF0cml4Q29uc3RydWN0b3JDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewog
ICAgIElOQ19TVEFUUygiRE9NLldlYktpdENTU01hdHJpeC5Db25zdHJ1Y3RvciIpOwogCkluZGV4
OiBiaW5kaW5ncy92OC9jdXN0b20vVjhIaXN0b3J5Q3VzdG9tLmNwcA0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0t
IGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEhpc3RvcnlDdXN0b20uY3BwCShyZXZpc2lvbiA1MjI2MSkN
CisrKyBiaW5kaW5ncy92OC9jdXN0b20vVjhIaXN0b3J5Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5
KQ0KQEAgLTI5LDE2ICsyOSwxOCBAQA0KICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5j
bHVkZSAiSGlzdG9yeS5oIgorI2luY2x1ZGUgIlY4SGlzdG9yeS5oIgogCiAjaW5jbHVkZSAiRXhj
ZXB0aW9uQ29kZS5oIgorI2luY2x1ZGUgIkhpc3RvcnkuaCIKICNpbmNsdWRlICJTZXJpYWxpemVk
U2NyaXB0VmFsdWUuaCIKICNpbmNsdWRlICJWOEJpbmRpbmcuaCIKICNpbmNsdWRlICJWOEN1c3Rv
bUJpbmRpbmcuaCIKICNpbmNsdWRlICJWOFByb3h5LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
LUNBTExCQUNLX0ZVTkNfREVDTChIaXN0b3J5UHVzaFN0YXRlKQorCit2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gVjhIaXN0b3J5OjpwdXNoU3RhdGVDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBh
cmdzKQogewogICAgIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IGhpc3RvcnlTdGF0ZSA9
IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKHRvV2ViQ29yZVN0cmluZyhhcmdzWzBdKSk7
CiAKQEAgLTU5LDcgKzYxLDcgQEANCiAgICAgcmV0dXJuIHRocm93RXJyb3IoZWMpOwogfQogCi1D
QUxMQkFDS19GVU5DX0RFQ0woSGlzdG9yeVJlcGxhY2VTdGF0ZSkKK3Y4OjpIYW5kbGU8djg6OlZh
bHVlPiBWOEhpc3Rvcnk6OnJlcGxhY2VTdGF0ZUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMm
IGFyZ3MpCiB7CiAgICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gaGlzdG9yeVN0YXRl
ID0gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUodG9XZWJDb3JlU3RyaW5nKGFyZ3NbMF0p
KTsKIApJbmRleDogYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q29uc29sZUN1c3RvbS5jcHANCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0NCi0tLSBiaW5kaW5ncy92OC9jdXN0b20vVjhDb25zb2xlQ3VzdG9tLmNwcAkocmV2aXNp
b24gNTIyNjEpDQorKysgYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q29uc29sZUN1c3RvbS5jcHAJKHdv
cmtpbmcgY29weSkNCkBAIC0yOSw2ICsyOSw3IEBADQogICovCiAKICNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJWOENvbnNvbGUuaCIKIAogI2luY2x1ZGUgIlY4QmluZGluZy5oIgogI2lu
Y2x1ZGUgIlY4Q3VzdG9tQmluZGluZy5oIgpAQCAtMzcsNyArMzgsNyBAQA0KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi1DQUxMQkFDS19GVU5DX0RFQ0woQ29uc29sZVByb2ZpbGUpCit2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gVjhDb25zb2xlOjpwcm9maWxlQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3Vt
ZW50cyYgYXJncykKIHsKICAgICBJTkNfU1RBVFMoImNvbnNvbGUucHJvZmlsZSgpIik7CiAgICAg
djg6OkhhbmRsZVNjb3BlIHNjb3BlOwpAQCAtNDYsNyArNDcsNyBAQA0KICAgICByZXR1cm4gdjg6
OlVuZGVmaW5lZCgpOwogfQogCi1DQUxMQkFDS19GVU5DX0RFQ0woQ29uc29sZVByb2ZpbGVFbmQp
Cit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhDb25zb2xlOjpwcm9maWxlRW5kQ2FsbGJhY2soY29u
c3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBJTkNfU1RBVFMoImNvbnNvbGUucHJvZmls
ZUVuZCgpIik7CiAgICAgdjg6OlY4OjpQYXVzZVByb2ZpbGVyKCk7CkluZGV4OiBiaW5kaW5ncy92
OC9jdXN0b20vVjhHZW9sb2NhdGlvbkN1c3RvbS5jcHANCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBiaW5kaW5n
cy92OC9jdXN0b20vVjhHZW9sb2NhdGlvbkN1c3RvbS5jcHAJKHJldmlzaW9uIDUyMjYxKQ0KKysr
IGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEdlb2xvY2F0aW9uQ3VzdG9tLmNwcAkod29ya2luZyBjb3B5
KQ0KQEAgLTI0LDYgKzI0LDggQEANCiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIlY4R2VvbG9jYXRpb24uaCIKKwogI2luY2x1ZGUgIkdlb2xvY2F0aW9uLmgiCiAKICNpbmNs
dWRlICJWOEJpbmRpbmcuaCIKQEAgLTE2NSw3ICsxNjcsNyBAQA0KICAgICByZXR1cm4gb3B0aW9u
cy5yZWxlYXNlKCk7CiB9CiAKLUNBTExCQUNLX0ZVTkNfREVDTChHZW9sb2NhdGlvbkdldEN1cnJl
bnRQb3NpdGlvbikKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEdlb2xvY2F0aW9uOjpnZXRDdXJy
ZW50UG9zaXRpb25DYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAgIElO
Q19TVEFUUygiRE9NLkdlb2xvY2F0aW9uLmdldEN1cnJlbnRQb3NpdGlvbigpIik7CiAKQEAgLTE5
MCw3ICsxOTIsNyBAQA0KICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwogfQogCi1DQUxMQkFD
S19GVU5DX0RFQ0woR2VvbG9jYXRpb25XYXRjaFBvc2l0aW9uKQordjg6OkhhbmRsZTx2ODo6VmFs
dWU+IFY4R2VvbG9jYXRpb246OndhdGNoUG9zaXRpb25DYWxsYmFjayhjb25zdCB2ODo6QXJndW1l
bnRzJiBhcmdzKQogewogICAgIElOQ19TVEFUUygiRE9NLkdlb2xvY2F0aW9uLndhdGNoUG9zaXRp
b24oKSIpOwogCkluZGV4OiBiaW5kaW5ncy92OC9jdXN0b20vVjhJbnNwZWN0b3JGcm9udGVuZEhv
c3RDdXN0b20uY3BwDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gYmluZGluZ3MvdjgvY3VzdG9tL1Y4SW5zcGVj
dG9yRnJvbnRlbmRIb3N0Q3VzdG9tLmNwcAkocmV2aXNpb24gNTIyNjEpDQorKysgYmluZGluZ3Mv
djgvY3VzdG9tL1Y4SW5zcGVjdG9yRnJvbnRlbmRIb3N0Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5
KQ0KQEAgLTI5LDEwICsyOSwxMSBAQA0KICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5j
bHVkZSAiSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmgiCisjaW5jbHVkZSAiVjhJbnNwZWN0b3JGcm9u
dGVuZEhvc3QuaCIKIAogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKICNpbmNsdWRlICJJbnNw
ZWN0b3JDb250cm9sbGVyLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmgiCiAj
aW5jbHVkZSAiTm9kZS5oIgogI2luY2x1ZGUgIlJhbmdlLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgpA
QCAtNDUsNyArNDYsNyBAQA0KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1DQUxMQkFDS19GVU5D
X0RFQ0woSW5zcGVjdG9yRnJvbnRlbmRIb3N0U2VhcmNoKQordjg6OkhhbmRsZTx2ODo6VmFsdWU+
IFY4SW5zcGVjdG9yRnJvbnRlbmRIb3N0OjpzZWFyY2hDYWxsYmFjayhjb25zdCB2ODo6QXJndW1l
bnRzJiBhcmdzKQogewogICAgIElOQ19TVEFUUygiSW5zcGVjdG9yRnJvbnRlbmRIb3N0LnNlYXJj
aCgpIik7CiAKQEAgLTg0LDcgKzg1LDcgQEANCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotQ0FM
TEJBQ0tfRlVOQ19ERUNMKEluc3BlY3RvckZyb250ZW5kSG9zdFNob3dDb250ZXh0TWVudSkKK3Y4
OjpIYW5kbGU8djg6OlZhbHVlPiBWOEluc3BlY3RvckZyb250ZW5kSG9zdDo6c2hvd0NvbnRleHRN
ZW51Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICByZXR1cm4gdjg6
OlVuZGVmaW5lZCgpOwogfQpJbmRleDogYmluZGluZ3MvdjgvY3VzdG9tL1Y4RGVkaWNhdGVkV29y
a2VyQ29udGV4dEN1c3RvbS5jcHANCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBiaW5kaW5ncy92OC9jdXN0b20v
VjhEZWRpY2F0ZWRXb3JrZXJDb250ZXh0Q3VzdG9tLmNwcAkocmV2aXNpb24gNTIyNjEpDQorKysg
YmluZGluZ3MvdjgvY3VzdG9tL1Y4RGVkaWNhdGVkV29ya2VyQ29udGV4dEN1c3RvbS5jcHAJKHdv
cmtpbmcgY29weSkNCkBAIC0zMSwxMCArMzEsMTAgQEANCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAK
ICNpZiBFTkFCTEUoV09SS0VSUykKKyNpbmNsdWRlICJWOERlZGljYXRlZFdvcmtlckNvbnRleHQu
aCIKIAorI2luY2x1ZGUgIkRlZGljYXRlZFdvcmtlckNvbnRleHQuaCIKICNpbmNsdWRlICJXb3Jr
ZXJDb250ZXh0RXhlY3V0aW9uUHJveHkuaCIKLQotI2luY2x1ZGUgIkRlZGljYXRlZFdvcmtlckNv
bnRleHQuaCIKICNpbmNsdWRlICJWOEJpbmRpbmcuaCIKICNpbmNsdWRlICJWOE1lc3NhZ2VQb3J0
Q3VzdG9tLmgiCiAjaW5jbHVkZSAiVjhQcm94eS5oIgpAQCAtNDIsNyArNDIsNyBAQA0KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1DQUxMQkFDS19GVU5DX0RFQ0woRGVkaWNhdGVkV29ya2VyQ29u
dGV4dFBvc3RNZXNzYWdlKQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4RGVkaWNhdGVkV29ya2Vy
Q29udGV4dDo6cG9zdE1lc3NhZ2VDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQog
ewogICAgIElOQ19TVEFUUyhMIkRPTS5EZWRpY2F0ZWRXb3JrZXJDb250ZXh0LnBvc3RNZXNzYWdl
Iik7CiAgICAgRGVkaWNhdGVkV29ya2VyQ29udGV4dCogd29ya2VyQ29udGV4dCA9IFY4RE9NV3Jh
cHBlcjo6Y29udmVydFRvTmF0aXZlT2JqZWN0PERlZGljYXRlZFdvcmtlckNvbnRleHQ+KFY4Q2xh
c3NJbmRleDo6REVESUNBVEVEV09SS0VSQ09OVEVYVCwgYXJncy5Ib2xkZXIoKSk7CkluZGV4OiBi
aW5kaW5ncy92OC9jdXN0b20vVjhTUUxUcmFuc2FjdGlvbkN1c3RvbS5jcHANCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0N
Ci0tLSBiaW5kaW5ncy92OC9jdXN0b20vVjhTUUxUcmFuc2FjdGlvbkN1c3RvbS5jcHAJKHJldmlz
aW9uIDUyMjYxKQ0KKysrIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOFNRTFRyYW5zYWN0aW9uQ3VzdG9t
LmNwcAkod29ya2luZyBjb3B5KQ0KQEAgLTMyLDYgKzMyLDggQEANCiAKICNpZiBFTkFCTEUoREFU
QUJBU0UpCiAKKyNpbmNsdWRlICJWOFNRTFRyYW5zYWN0aW9uLmgiCisKICNpbmNsdWRlICJEYXRh
YmFzZS5oIgogI2luY2x1ZGUgIlNRTFZhbHVlLmgiCiAjaW5jbHVkZSAiVjhCaW5kaW5nLmgiCkBA
IC00NSw3ICs0Nyw3IEBADQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUNBTExCQUNLX0ZVTkNf
REVDTChTUUxUcmFuc2FjdGlvbkV4ZWN1dGVTcWwpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhT
UUxUcmFuc2FjdGlvbjo6ZXhlY3V0ZVNxbENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFy
Z3MpCiB7CiAgICAgSU5DX1NUQVRTKCJET00uU1FMVHJhbnNhY3Rpb24uZXhlY3V0ZVNxbCgpIik7
CiAKSW5kZXg6IGJpbmRpbmdzL3Y4L2N1c3RvbS9WOFRyZWVXYWxrZXJDdXN0b20uY3BwDQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09DQotLS0gYmluZGluZ3MvdjgvY3VzdG9tL1Y4VHJlZVdhbGtlckN1c3RvbS5jcHAJKHJl
dmlzaW9uIDUyMjYxKQ0KKysrIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOFRyZWVXYWxrZXJDdXN0b20u
Y3BwCSh3b3JraW5nIGNvcHkpDQpAQCAtMjksMTAgKzI5LDExIEBADQogICovCiAKICNpbmNsdWRl
ICJjb25maWcuaCIKLSNpbmNsdWRlICJUcmVlV2Fsa2VyLmgiCisjaW5jbHVkZSAiVjhUcmVlV2Fs
a2VyLmgiCiAKICNpbmNsdWRlICJOb2RlLmgiCiAjaW5jbHVkZSAiU2NyaXB0U3RhdGUuaCIKKyNp
bmNsdWRlICJUcmVlV2Fsa2VyLmgiCiAKICNpbmNsdWRlICJWOEJpbmRpbmcuaCIKICNpbmNsdWRl
ICJWOEN1c3RvbUJpbmRpbmcuaCIKQEAgLTU0LDcgKzU1LDcgQEANCiAgICAgcmV0dXJuIFY4RE9N
V3JhcHBlcjo6Y29udmVydE5vZGVUb1Y4T2JqZWN0KG9iamVjdCk7CiB9CiAKLUNBTExCQUNLX0ZV
TkNfREVDTChUcmVlV2Fsa2VyUGFyZW50Tm9kZSkKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFRy
ZWVXYWxrZXI6OnBhcmVudE5vZGVDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQog
ewogICAgIElOQ19TVEFUUygiRE9NLlRyZWVXYWxrZXIucGFyZW50Tm9kZSgpIik7CiAgICAgVHJl
ZVdhbGtlciogdHJlZVdhbGtlciA9IFY4RE9NV3JhcHBlcjo6Y29udmVydFRvTmF0aXZlT2JqZWN0
PFRyZWVXYWxrZXI+KFY4Q2xhc3NJbmRleDo6VFJFRVdBTEtFUiwgYXJncy5Ib2xkZXIoKSk7CkBA
IC02NCw3ICs2NSw3IEBADQogICAgIHJldHVybiB0b1Y4KHJlc3VsdC5yZWxlYXNlKCksICZzdGF0
ZSk7CiB9CiAKLUNBTExCQUNLX0ZVTkNfREVDTChUcmVlV2Fsa2VyRmlyc3RDaGlsZCkKK3Y4OjpI
YW5kbGU8djg6OlZhbHVlPiBWOFRyZWVXYWxrZXI6OmZpcnN0Q2hpbGRDYWxsYmFjayhjb25zdCB2
ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAgIElOQ19TVEFUUygiRE9NLlRyZWVXYWxrZXIuZmly
c3RDaGlsZCgpIik7CiAgICAgVHJlZVdhbGtlciogdHJlZVdhbGtlciA9IFY4RE9NV3JhcHBlcjo6
Y29udmVydFRvTmF0aXZlT2JqZWN0PFRyZWVXYWxrZXI+KFY4Q2xhc3NJbmRleDo6VFJFRVdBTEtF
UiwgYXJncy5Ib2xkZXIoKSk7CkBAIC03NCw3ICs3NSw3IEBADQogICAgIHJldHVybiB0b1Y4KHJl
c3VsdC5yZWxlYXNlKCksICZzdGF0ZSk7CiB9CiAKLUNBTExCQUNLX0ZVTkNfREVDTChUcmVlV2Fs
a2VyTGFzdENoaWxkKQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4VHJlZVdhbGtlcjo6bGFzdENo
aWxkQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBJTkNfU1RBVFMo
IkRPTS5UcmVlV2Fsa2VyLmxhc3RDaGlsZCgpIik7CiAgICAgVHJlZVdhbGtlciogdHJlZVdhbGtl
ciA9IFY4RE9NV3JhcHBlcjo6Y29udmVydFRvTmF0aXZlT2JqZWN0PFRyZWVXYWxrZXI+KFY4Q2xh
c3NJbmRleDo6VFJFRVdBTEtFUiwgYXJncy5Ib2xkZXIoKSk7CkBAIC04NCw3ICs4NSw3IEBADQog
ICAgIHJldHVybiB0b1Y4KHJlc3VsdC5yZWxlYXNlKCksICZzdGF0ZSk7CiB9CiAKLUNBTExCQUNL
X0ZVTkNfREVDTChUcmVlV2Fsa2VyTmV4dE5vZGUpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhU
cmVlV2Fsa2VyOjpuZXh0Tm9kZUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7
CiAgICAgSU5DX1NUQVRTKCJET00uVHJlZVdhbGtlci5uZXh0Tm9kZSgpIik7CiAgICAgVHJlZVdh
bGtlciogdHJlZVdhbGtlciA9IFY4RE9NV3JhcHBlcjo6Y29udmVydFRvTmF0aXZlT2JqZWN0PFRy
ZWVXYWxrZXI+KFY4Q2xhc3NJbmRleDo6VFJFRVdBTEtFUiwgYXJncy5Ib2xkZXIoKSk7CkBAIC05
NCw3ICs5NSw3IEBADQogICAgIHJldHVybiB0b1Y4KHJlc3VsdC5yZWxlYXNlKCksICZzdGF0ZSk7
CiB9CiAKLUNBTExCQUNLX0ZVTkNfREVDTChUcmVlV2Fsa2VyUHJldmlvdXNOb2RlKQordjg6Okhh
bmRsZTx2ODo6VmFsdWU+IFY4VHJlZVdhbGtlcjo6cHJldmlvdXNOb2RlQ2FsbGJhY2soY29uc3Qg
djg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBJTkNfU1RBVFMoIkRPTS5UcmVlV2Fsa2VyLnBy
ZXZpb3VzTm9kZSgpIik7CiAgICAgVHJlZVdhbGtlciogdHJlZVdhbGtlciA9IFY4RE9NV3JhcHBl
cjo6Y29udmVydFRvTmF0aXZlT2JqZWN0PFRyZWVXYWxrZXI+KFY4Q2xhc3NJbmRleDo6VFJFRVdB
TEtFUiwgYXJncy5Ib2xkZXIoKSk7CkBAIC0xMDQsNyArMTA1LDcgQEANCiAgICAgcmV0dXJuIHRv
VjgocmVzdWx0LnJlbGVhc2UoKSwgJnN0YXRlKTsKIH0KIAotQ0FMTEJBQ0tfRlVOQ19ERUNMKFRy
ZWVXYWxrZXJOZXh0U2libGluZykKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFRyZWVXYWxrZXI6
Om5leHRTaWJsaW5nQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBJ
TkNfU1RBVFMoIkRPTS5UcmVlV2Fsa2VyLm5leHRTaWJsaW5nKCkiKTsKICAgICBUcmVlV2Fsa2Vy
KiB0cmVlV2Fsa2VyID0gVjhET01XcmFwcGVyOjpjb252ZXJ0VG9OYXRpdmVPYmplY3Q8VHJlZVdh
bGtlcj4oVjhDbGFzc0luZGV4OjpUUkVFV0FMS0VSLCBhcmdzLkhvbGRlcigpKTsKQEAgLTExNCw3
ICsxMTUsNyBAQA0KICAgICByZXR1cm4gdG9WOChyZXN1bHQucmVsZWFzZSgpLCAmc3RhdGUpOwog
fQogCi1DQUxMQkFDS19GVU5DX0RFQ0woVHJlZVdhbGtlclByZXZpb3VzU2libGluZykKK3Y4OjpI
YW5kbGU8djg6OlZhbHVlPiBWOFRyZWVXYWxrZXI6OnByZXZpb3VzU2libGluZ0NhbGxiYWNrKGNv
bnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgSU5DX1NUQVRTKCJET00uVHJlZVdhbGtl
ci5wcmV2aW91c1NpYmxpbmcoKSIpOwogICAgIFRyZWVXYWxrZXIqIHRyZWVXYWxrZXIgPSBWOERP
TVdyYXBwZXI6OmNvbnZlcnRUb05hdGl2ZU9iamVjdDxUcmVlV2Fsa2VyPihWOENsYXNzSW5kZXg6
OlRSRUVXQUxLRVIsIGFyZ3MuSG9sZGVyKCkpOwpJbmRleDogYmluZGluZ3MvdjgvY3VzdG9tL1Y4
WE1MU2VyaWFsaXplckNvbnN0cnVjdG9yLmNwcA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIGJpbmRpbmdzL3Y4
L2N1c3RvbS9WOFhNTFNlcmlhbGl6ZXJDb25zdHJ1Y3Rvci5jcHAJKHJldmlzaW9uIDUyMjYxKQ0K
KysrIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOFhNTFNlcmlhbGl6ZXJDb25zdHJ1Y3Rvci5jcHAJKHdv
cmtpbmcgY29weSkNCkBAIC0yOSwxNCArMjksMTUgQEANCiAgKi8KIAogI2luY2x1ZGUgImNvbmZp
Zy5oIgotI2luY2x1ZGUgIlhNTFNlcmlhbGl6ZXIuaCIKKyNpbmNsdWRlICJWOFhNTFNlcmlhbGl6
ZXIuaCIKIAogI2luY2x1ZGUgIlY4QmluZGluZy5oIgogI2luY2x1ZGUgIlY4UHJveHkuaCIKKyNp
bmNsdWRlICJYTUxTZXJpYWxpemVyLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotQ0FMTEJB
Q0tfRlVOQ19ERUNMKFhNTFNlcmlhbGl6ZXJDb25zdHJ1Y3RvcikKK3Y4OjpIYW5kbGU8djg6OlZh
bHVlPiBWOEN1c3RvbTo6djhYTUxTZXJpYWxpemVyQ29uc3RydWN0b3JDYWxsYmFjayhjb25zdCB2
ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAgIElOQ19TVEFUUygiRE9NLlhNTFNlcmlhbGl6ZXIu
Q29uc3RydWN0b3IiKTsKICAgICByZXR1cm4gVjhQcm94eTo6Y29uc3RydWN0RE9NT2JqZWN0PFY4
Q2xhc3NJbmRleDo6WE1MU0VSSUFMSVpFUiwgWE1MU2VyaWFsaXplcj4oYXJncyk7CkluZGV4OiBi
aW5kaW5ncy92OC9jdXN0b20vVjhXZWJHTFVuc2lnbmVkSW50QXJyYXlDdXN0b20uY3BwDQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09DQotLS0gYmluZGluZ3MvdjgvY3VzdG9tL1Y4V2ViR0xVbnNpZ25lZEludEFycmF5Q3Vz
dG9tLmNwcAkocmV2aXNpb24gNTIyNjEpDQorKysgYmluZGluZ3MvdjgvY3VzdG9tL1Y4V2ViR0xV
bnNpZ25lZEludEFycmF5Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQ0KQEAgLTQ0LDcgKzQ0LDcg
QEANCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotQ0FMTEJBQ0tfRlVOQ19ERUNMKFdlYkdMVW5z
aWduZWRJbnRBcnJheUNvbnN0cnVjdG9yKQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4Q3VzdG9t
Ojp2OFdlYkdMVW5zaWduZWRJbnRBcnJheUNvbnN0cnVjdG9yQ2FsbGJhY2soY29uc3Qgdjg6OkFy
Z3VtZW50cyYgYXJncykKIHsKICAgICBJTkNfU1RBVFMoIkRPTS5XZWJHTFVuc2lnbmVkSW50QXJy
YXkuQ29udHJ1Y3RvciIpOwogCkBAIC03OSwxMyArNzksMTMgQEANCiAgICAgcmV0dXJuIHZhbHVl
OwogfQogCi1DQUxMQkFDS19GVU5DX0RFQ0woV2ViR0xVbnNpZ25lZEludEFycmF5R2V0KQordjg6
OkhhbmRsZTx2ODo6VmFsdWU+IFY4V2ViR0xVbnNpZ25lZEludEFycmF5OjpnZXRDYWxsYmFjayhj
b25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAgIElOQ19TVEFUUygiRE9NLldlYkdMVW5z
aWduZWRJbnRBcnJheS5nZXQoKSIpOwogICAgIHJldHVybiBnZXRXZWJHTEFycmF5RWxlbWVudDxX
ZWJHTFVuc2lnbmVkSW50QXJyYXksIHVuc2lnbmVkIGludD4oYXJncywgVjhDbGFzc0luZGV4OjpX
RUJHTFVOU0lHTkVESU5UQVJSQVkpOwogfQogCi1DQUxMQkFDS19GVU5DX0RFQ0woV2ViR0xVbnNp
Z25lZEludEFycmF5U2V0KQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4V2ViR0xVbnNpZ25lZElu
dEFycmF5OjpzZXRDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAgIElO
Q19TVEFUUygiRE9NLldlYkdMVW5zaWduZWRJbnRBcnJheS5zZXQoKSIpOwogICAgIHJldHVybiBz
ZXRXZWJHTEFycmF5PFdlYkdMVW5zaWduZWRJbnRBcnJheSwgVjhXZWJHTFVuc2lnbmVkSW50QXJy
YXk+KGFyZ3MsIFY4Q2xhc3NJbmRleDo6V0VCR0xVTlNJR05FRElOVEFSUkFZKTsKSW5kZXg6IGJp
bmRpbmdzL3Y4L2N1c3RvbS9WOEluamVjdGVkU2NyaXB0SG9zdEN1c3RvbS5jcHANCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0NCi0tLSBiaW5kaW5ncy92OC9jdXN0b20vVjhJbmplY3RlZFNjcmlwdEhvc3RDdXN0b20uY3Bw
CShyZXZpc2lvbiA1MjI2MSkNCisrKyBiaW5kaW5ncy92OC9jdXN0b20vVjhJbmplY3RlZFNjcmlw
dEhvc3RDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpDQpAQCAtMjksMTIgKzI5LDEzIEBADQogICov
CiAKICNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJJbmplY3RlZFNjcmlwdEhvc3QuaCIK
KyNpbmNsdWRlICJWOEluamVjdGVkU2NyaXB0SG9zdC5oIgogCiAjaW5jbHVkZSAiRGF0YWJhc2Uu
aCIKICNpbmNsdWRlICJET01XaW5kb3cuaCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUg
Ikluc3BlY3RvckNvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJJbmplY3RlZFNjcmlwdEhvc3QuaCIK
ICNpbmNsdWRlICJOb2RlLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogCkBAIC00NCw3ICs0NSw3IEBA
DQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUNBTExCQUNLX0ZVTkNfREVDTChJbmplY3RlZFNj
cmlwdEhvc3RJbnNwZWN0ZWRXaW5kb3cpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhJbmplY3Rl
ZFNjcmlwdEhvc3Q6Omluc3BlY3RlZFdpbmRvd0NhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMm
IGFyZ3MpCiB7CiAgICAgSU5DX1NUQVRTKCJJbmplY3RlZFNjcmlwdEhvc3QuaW5zcGVjdGVkV2lu
ZG93KCkiKTsKIApAQCAtNTUsMTMgKzU2LDEzIEBADQogICAgIHJldHVybiBWOERPTVdyYXBwZXI6
OmNvbnZlcnRUb1Y4T2JqZWN0PERPTVdpbmRvdz4oVjhDbGFzc0luZGV4OjpET01XSU5ET1csIGlj
LT5pbnNwZWN0ZWRQYWdlKCktPm1haW5GcmFtZSgpLT5kb21XaW5kb3coKSk7CiB9CiAKLUNBTExC
QUNLX0ZVTkNfREVDTChJbmplY3RlZFNjcmlwdEhvc3RXcmFwQ2FsbGJhY2spCit2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gVjhJbmplY3RlZFNjcmlwdEhvc3Q6OndyYXBDYWxsYmFja0NhbGxiYWNrKGNv
bnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgSU5DX1NUQVRTKCJJbmplY3RlZFNjcmlw
dEhvc3Qud3JhcENhbGxiYWNrKCkiKTsKICAgICByZXR1cm4gYXJnc1swXTsKIH0KIAotQ0FMTEJB
Q0tfRlVOQ19ERUNMKEluamVjdGVkU2NyaXB0SG9zdE5vZGVGb3JJZCkKK3Y4OjpIYW5kbGU8djg6
OlZhbHVlPiBWOEluamVjdGVkU2NyaXB0SG9zdDo6bm9kZUZvcklkQ2FsbGJhY2soY29uc3Qgdjg6
OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBJTkNfU1RBVFMoIkluamVjdGVkU2NyaXB0SG9zdC5u
b2RlRm9ySWQoKSIpOwogICAgIGlmIChhcmdzLkxlbmd0aCgpIDwgMSkKQEAgLTgwLDcgKzgxLDcg
QEANCiAgICAgcmV0dXJuIFY4RE9NV3JhcHBlcjo6Y29udmVydFRvVjhPYmplY3QoVjhDbGFzc0lu
ZGV4OjpOT0RFLCBub2RlKTsKIH0KIAotQ0FMTEJBQ0tfRlVOQ19ERUNMKEluamVjdGVkU2NyaXB0
SG9zdFdyYXBPYmplY3QpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhJbmplY3RlZFNjcmlwdEhv
c3Q6OndyYXBPYmplY3RDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAg
IElOQ19TVEFUUygiSW5qZWN0ZWRTY3JpcHRIb3N0LndyYXBPYmplY3QoKSIpOwogICAgIGlmIChh
cmdzLkxlbmd0aCgpIDwgMikKQEAgLTkwLDcgKzkxLDcgQEANCiAgICAgcmV0dXJuIGhvc3QtPndy
YXBPYmplY3QoU2NyaXB0VmFsdWUoYXJnc1swXSksIHRvV2ViQ29yZVN0cmluZ1dpdGhOdWxsQ2hl
Y2soYXJnc1sxXSkpLnY4VmFsdWUoKTsKIH0KIAotQ0FMTEJBQ0tfRlVOQ19ERUNMKEluamVjdGVk
U2NyaXB0SG9zdFVud3JhcE9iamVjdCkKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEluamVjdGVk
U2NyaXB0SG9zdDo6dW53cmFwT2JqZWN0Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJn
cykKIHsKICAgICBJTkNfU1RBVFMoIkluamVjdGVkU2NyaXB0SG9zdC51bndyYXBPYmplY3QoKSIp
OwogICAgIGlmIChhcmdzLkxlbmd0aCgpIDwgMSkKQEAgLTEwMCw3ICsxMDEsNyBAQA0KICAgICBy
ZXR1cm4gaG9zdC0+dW53cmFwT2JqZWN0KHRvV2ViQ29yZVN0cmluZ1dpdGhOdWxsQ2hlY2soYXJn
c1swXSkpLnY4VmFsdWUoKTsKIH0KIAotQ0FMTEJBQ0tfRlVOQ19ERUNMKEluamVjdGVkU2NyaXB0
SG9zdFB1c2hOb2RlUGF0aFRvRnJvbnRlbmQpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhJbmpl
Y3RlZFNjcmlwdEhvc3Q6OnB1c2hOb2RlUGF0aFRvRnJvbnRlbmRDYWxsYmFjayhjb25zdCB2ODo6
QXJndW1lbnRzJiBhcmdzKQogewogICAgIElOQ19TVEFUUygiSW5qZWN0ZWRTY3JpcHRIb3N0LnB1
c2hOb2RlUGF0aFRvRnJvbnRlbmQoKSIpOwogICAgIGlmIChhcmdzLkxlbmd0aCgpIDwgMikKQEAg
LTExNiw3ICsxMTcsNyBAQA0KIH0KIAogI2lmIEVOQUJMRShEQVRBQkFTRSkKLUNBTExCQUNLX0ZV
TkNfREVDTChJbmplY3RlZFNjcmlwdEhvc3REYXRhYmFzZUZvcklkKQordjg6OkhhbmRsZTx2ODo6
VmFsdWU+IFY4SW5qZWN0ZWRTY3JpcHRIb3N0OjpkYXRhYmFzZUZvcklkQ2FsbGJhY2soY29uc3Qg
djg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBJTkNfU1RBVFMoIkluamVjdGVkU2NyaXB0SG9z
dC5kYXRhYmFzZUZvcklkKCkiKTsKICAgICBpZiAoYXJncy5MZW5ndGgoKSA8IDEpCkBAIC0xMjks
NyArMTMwLDcgQEANCiAgICAgcmV0dXJuIFY4RE9NV3JhcHBlcjo6Y29udmVydFRvVjhPYmplY3Q8
RGF0YWJhc2U+KFY4Q2xhc3NJbmRleDo6REFUQUJBU0UsIGRhdGFiYXNlKTsKIH0KIAotQ0FMTEJB
Q0tfRlVOQ19ERUNMKEluamVjdGVkU2NyaXB0SG9zdFNlbGVjdERhdGFiYXNlKQordjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IFY4SW5qZWN0ZWRTY3JpcHRIb3N0OjpzZWxlY3REYXRhYmFzZUNhbGxiYWNr
KGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgSU5DX1NUQVRTKCJJbmplY3RlZFNj
cmlwdEhvc3Quc2VsZWN0RGF0YWJhc2UoKSIpOwogICAgIGlmIChhcmdzLkxlbmd0aCgpIDwgMSkK
QEAgLTE0NSw3ICsxNDYsNyBAQA0KICNlbmRpZgogCiAjaWYgRU5BQkxFKERPTV9TVE9SQUdFKQot
Q0FMTEJBQ0tfRlVOQ19ERUNMKEluamVjdGVkU2NyaXB0SG9zdFNlbGVjdERPTVN0b3JhZ2UpCit2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhJbmplY3RlZFNjcmlwdEhvc3Q6OnNlbGVjdERPTVN0b3Jh
Z2VDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAgIElOQ19TVEFUUygi
SW5qZWN0ZWRTY3JpcHRIb3N0LnNlbGVjdERPTVN0b3JhZ2UoKSIpOwogICAgIGlmIChhcmdzLkxl
bmd0aCgpIDwgMSkKSW5kZXg6IGJpbmRpbmdzL3Y4L2N1c3RvbS9WOFdlYkdMSW50QXJyYXlDdXN0
b20uY3BwDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09DQotLS0gYmluZGluZ3MvdjgvY3VzdG9tL1Y4V2ViR0xJbnRBcnJh
eUN1c3RvbS5jcHAJKHJldmlzaW9uIDUyMjYxKQ0KKysrIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOFdl
YkdMSW50QXJyYXlDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpDQpAQCAtNDQsNyArNDQsNyBAQA0K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1DQUxMQkFDS19GVU5DX0RFQ0woV2ViR0xJbnRBcnJh
eUNvbnN0cnVjdG9yKQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4Q3VzdG9tOjp2OFdlYkdMSW50
QXJyYXlDb25zdHJ1Y3RvckNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAg
ICAgSU5DX1NUQVRTKCJET00uV2ViR0xJbnRBcnJheS5Db250cnVjdG9yIik7CiAKQEAgLTc5LDEz
ICs3OSwxMyBAQA0KICAgICByZXR1cm4gdmFsdWU7CiB9CiAKLUNBTExCQUNLX0ZVTkNfREVDTChX
ZWJHTEludEFycmF5R2V0KQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4V2ViR0xJbnRBcnJheTo6
Z2V0Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBJTkNfU1RBVFMo
IkRPTS5XZWJHTEludEFycmF5LmdldCgpIik7CiAgICAgcmV0dXJuIGdldFdlYkdMQXJyYXlFbGVt
ZW50PFdlYkdMSW50QXJyYXksIGludD4oYXJncywgVjhDbGFzc0luZGV4OjpXRUJHTElOVEFSUkFZ
KTsKIH0KIAotQ0FMTEJBQ0tfRlVOQ19ERUNMKFdlYkdMSW50QXJyYXlTZXQpCit2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gVjhXZWJHTEludEFycmF5OjpzZXRDYWxsYmFjayhjb25zdCB2ODo6QXJndW1l
bnRzJiBhcmdzKQogewogICAgIElOQ19TVEFUUygiRE9NLldlYkdMSW50QXJyYXkuc2V0KCkiKTsK
ICAgICByZXR1cm4gc2V0V2ViR0xBcnJheTxXZWJHTEludEFycmF5LCBWOFdlYkdMSW50QXJyYXk+
KGFyZ3MsIFY4Q2xhc3NJbmRleDo6V0VCR0xJTlRBUlJBWSk7CkluZGV4OiBiaW5kaW5ncy92OC9j
dXN0b20vVjhIVE1MQXVkaW9FbGVtZW50Q29uc3RydWN0b3IuY3BwDQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0g
YmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTEF1ZGlvRWxlbWVudENvbnN0cnVjdG9yLmNwcAkocmV2
aXNpb24gNTIyNjEpDQorKysgYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTEF1ZGlvRWxlbWVudENv
bnN0cnVjdG9yLmNwcAkod29ya2luZyBjb3B5KQ0KQEAgLTYxLDcgKzYxLDcgQEANCiAgICAgcmV0
dXJuIGNhY2hlZFRlbXBsYXRlOwogfQogCi1DQUxMQkFDS19GVU5DX0RFQ0woSFRNTEF1ZGlvRWxl
bWVudENvbnN0cnVjdG9yKQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4Q3VzdG9tOjp2OEhUTUxB
dWRpb0VsZW1lbnRDb25zdHJ1Y3RvckNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3Mp
CiB7CiAgICAgSU5DX1NUQVRTKCJET00uSFRNTEF1ZGlvRWxlbWVudC5Db250cnVjdG9yIik7CiAK
SW5kZXg6IGJpbmRpbmdzL3Y4L2N1c3RvbS9WOFdlYkdMU2hvcnRBcnJheUN1c3RvbS5jcHANCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0NCi0tLSBiaW5kaW5ncy92OC9jdXN0b20vVjhXZWJHTFNob3J0QXJyYXlDdXN0b20u
Y3BwCShyZXZpc2lvbiA1MjI2MSkNCisrKyBiaW5kaW5ncy92OC9jdXN0b20vVjhXZWJHTFNob3J0
QXJyYXlDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpDQpAQCAtNDQsNyArNDQsNyBAQA0KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1DQUxMQkFDS19GVU5DX0RFQ0woV2ViR0xTaG9ydEFycmF5Q29u
c3RydWN0b3IpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhDdXN0b206OnY4V2ViR0xTaG9ydEFy
cmF5Q29uc3RydWN0b3JDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAg
IElOQ19TVEFUUygiRE9NLldlYkdMU2hvcnRBcnJheS5Db250cnVjdG9yIik7CiAKQEAgLTc5LDEz
ICs3OSwxMyBAQA0KICAgICByZXR1cm4gdmFsdWU7CiB9CiAKLUNBTExCQUNLX0ZVTkNfREVDTChX
ZWJHTFNob3J0QXJyYXlHZXQpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhXZWJHTFNob3J0QXJy
YXk6OmdldENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgSU5DX1NU
QVRTKCJET00uV2ViR0xTaG9ydEFycmF5LmdldCgpIik7CiAgICAgcmV0dXJuIGdldFdlYkdMQXJy
YXlFbGVtZW50PFdlYkdMU2hvcnRBcnJheSwgc2hvcnQ+KGFyZ3MsIFY4Q2xhc3NJbmRleDo6V0VC
R0xTSE9SVEFSUkFZKTsKIH0KIAotQ0FMTEJBQ0tfRlVOQ19ERUNMKFdlYkdMU2hvcnRBcnJheVNl
dCkKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFdlYkdMU2hvcnRBcnJheTo6c2V0Q2FsbGJhY2so
Y29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBJTkNfU1RBVFMoIkRPTS5XZWJHTFNo
b3J0QXJyYXkuc2V0KCkiKTsKICAgICByZXR1cm4gc2V0V2ViR0xBcnJheTxXZWJHTFNob3J0QXJy
YXksIFY4V2ViR0xTaG9ydEFycmF5PihhcmdzLCBWOENsYXNzSW5kZXg6OldFQkdMU0hPUlRBUlJB
WSk7CkluZGV4OiBiaW5kaW5ncy92OC9jdXN0b20vVjhYTUxIdHRwUmVxdWVzdENvbnN0cnVjdG9y
LmNwcA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQ0KLS0tIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOFhNTEh0dHBSZXF1ZXN0
Q29uc3RydWN0b3IuY3BwCShyZXZpc2lvbiA1MjI2MSkNCisrKyBiaW5kaW5ncy92OC9jdXN0b20v
VjhYTUxIdHRwUmVxdWVzdENvbnN0cnVjdG9yLmNwcAkod29ya2luZyBjb3B5KQ0KQEAgLTI5LDYg
KzI5LDcgQEANCiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlY4WE1MSHR0
cFJlcXVlc3QuaCIKIAogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiVjhCaW5kaW5nLmgi
CkBAIC00MSw3ICs0Miw3IEBADQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUNBTExCQUNLX0ZV
TkNfREVDTChYTUxIdHRwUmVxdWVzdENvbnN0cnVjdG9yKQordjg6OkhhbmRsZTx2ODo6VmFsdWU+
IFY4Q3VzdG9tOjp2OFhNTEh0dHBSZXF1ZXN0Q29uc3RydWN0b3JDYWxsYmFjayhjb25zdCB2ODo6
QXJndW1lbnRzJiBhcmdzKQogewogICAgIElOQ19TVEFUUygiRE9NLlhNTEh0dHBSZXF1ZXN0LkNv
bnN0cnVjdG9yIik7CiAK
</data>
<flag name="review"
          id="27088"
          type_id="1"
          status="-"
          setter="abarth"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>45184</attachid>
            <date>2009-12-18 13:47:26 -0800</date>
            <delta_ts>2009-12-18 13:47:26 -0800</delta_ts>
            <desc>Example output</desc>
            <filename>V8Location.h</filename>
            <type>text/plain</type>
            <size>1695</size>
            <attacher name="Nate Chapin">japhet</attacher>
            
              <data encoding="base64">LyoKICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBXZWJLaXQgb3BlbiBzb3VyY2UgcHJvamVj
dC4KICAgIFRoaXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtYmluZGluZ3Mu
cGwuIERPIE5PVCBNT0RJRlkhCgogICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlv
dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJt
cyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKICAgIExpY2Vuc2UgYXMgcHVibGlz
aGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgogICAgdmVyc2lvbiAy
IG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgoK
ICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg
YmUgdXNlZnVsLAogICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl
IGltcGxpZWQgd2FycmFudHkgb2YKICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCiAgICBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KCiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2
ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiAgICBh
bG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90
LCB3cml0ZSB0bwogICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVt
cGxlIFBsYWNlIC0gU3VpdGUgMzMwLAogICAgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuCiov
CgojaWZuZGVmIFY4TG9jYXRpb25fSAojZGVmaW5lIFY4TG9jYXRpb25fSAoKI2luY2x1ZGUgPHY4
Lmg+CiNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgojaW5jbHVkZSAiU3RyaW5nSGFzaC5oIgoKbmFt
ZXNwYWNlIFdlYkNvcmUgewoKY2xhc3MgVjhDbGFzc0luZGV4OwoKY2xhc3MgVjhMb2NhdGlvbiB7
CgogcHVibGljOgogIHN0YXRpYyBib29sIEhhc0luc3RhbmNlKHY4OjpIYW5kbGU8djg6OlZhbHVl
PiB2YWx1ZSk7CiAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBH
ZXRSYXdUZW1wbGF0ZSgpOwogIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gYXNzaWduQ2Fs
bGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYpOwogIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gcmVwbGFjZUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmKTsKICBzdGF0aWMgdjg6Okhh
bmRsZTx2ODo6VmFsdWU+IHJlbG9hZENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmKTsKICBz
dGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvU3RyaW5nQ2FsbGJhY2soY29uc3Qgdjg6OkFy
Z3VtZW50cyYpOwogIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWVPZkNhbGxiYWNr
KGNvbnN0IHY4OjpBcmd1bWVudHMmKTsKCiBwcml2YXRlOgogIHN0YXRpYyB2ODo6UGVyc2lzdGVu
dDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gR2V0VGVtcGxhdGUoKTsKCiAgZnJpZW5kIGNsYXNzIFY4
Q2xhc3NJbmRleDsKfTsKCn0KCiNlbmRpZiAvLyBWOExvY2F0aW9uX0gK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>45193</attachid>
            <date>2009-12-18 15:29:58 -0800</date>
            <delta_ts>2009-12-18 15:32:20 -0800</delta_ts>
            <desc>patch2</desc>
            <filename>patch2.txt</filename>
            <type>text/plain</type>
            <size>124073</size>
            <attacher name="Nate Chapin">japhet</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1MjM0NCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNzkgQEAKKzIwMDktMTItMTggIE5hdGUgQ2hhcGluICA8amFwaGV0QGNocm9taXVt
Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBH
ZW5lcmF0ZSBWOCBiaW5kaW5ncyBub24tY29uc3RydWN0b3IgY2FsbGJhY2sgZGVjbGFyYXRpb25z
IAorICAgICAgICBpbiBDb2RlR2VuZXJhdG9yVjgucG0gaW5zdGVhZCBvZiBtYW51YWxseSBkZWNs
YXJpbmcgdGhlbSBpbgorICAgICAgICBWOEN1c3RvbUJpbmRpbmcuaC4KKworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzI2MzgKKworICAgICAgICAqIGJp
bmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtOgorICAgICAgICAqIGJpbmRpbmdzL3Y4
L1Y4RE9NV3JhcHBlci5jcHA6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4QWJzdHJh
Y3RXb3JrZXJDdXN0b20uY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOENhbnZh
c1JlbmRlcmluZ0NvbnRleHQyREN1c3RvbS5jcHA6CisgICAgICAgICogYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4Q2xpcGJvYXJkQ3VzdG9tLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20v
VjhDb25zb2xlQ3VzdG9tLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhDdXN0
b21CaW5kaW5nLmg6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4RE9NQXBwbGljYXRp
b25DYWNoZUN1c3RvbS5jcHA6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4RE9NUGFy
c2VyQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOERPTVdp
bmRvd0N1c3RvbS5jcHA6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4RGF0YWJhc2VD
dXN0b20uY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOERlZGljYXRlZFdvcmtl
ckNvbnRleHRDdXN0b20uY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOERvY3Vt
ZW50Q3VzdG9tLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhHZW9sb2NhdGlv
bkN1c3RvbS5jcHA6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTEFsbENvbGxl
Y3Rpb25DdXN0b20uY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxBdWRp
b0VsZW1lbnRDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4
SFRNTENhbnZhc0VsZW1lbnRDdXN0b20uY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3Rv
bS9WOEhUTUxDb2xsZWN0aW9uQ3VzdG9tLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0
b20vVjhIVE1MRG9jdW1lbnRDdXN0b20uY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3Rv
bS9WOEhUTUxGb3JtRWxlbWVudEN1c3RvbS5jcHA6CisgICAgICAgICogYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4SFRNTEltYWdlRWxlbWVudENvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKiBiaW5kaW5n
cy92OC9jdXN0b20vVjhIVE1MSW5wdXRFbGVtZW50Q3VzdG9tLmNwcDoKKyAgICAgICAgKiBiaW5k
aW5ncy92OC9jdXN0b20vVjhIVE1MT3B0aW9uRWxlbWVudENvbnN0cnVjdG9yLmNwcDoKKyAgICAg
ICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MT3B0aW9uc0NvbGxlY3Rpb25DdXN0b20uY3Bw
OgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxQbHVnSW5FbGVtZW50Q3VzdG9t
LmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MUGx1Z0luRWxlbWVudEN1
c3RvbS5oOiBBZGRlZC4KKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MU2VsZWN0
RWxlbWVudEN1c3RvbS5jcHA6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4SGlzdG9y
eUN1c3RvbS5jcHA6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4SW5qZWN0ZWRTY3Jp
cHRIb3N0Q3VzdG9tLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhJbnNwZWN0
b3JGcm9udGVuZEhvc3RDdXN0b20uY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9W
OExvY2F0aW9uQ3VzdG9tLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhNZXNz
YWdlQ2hhbm5lbENvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20v
VjhNZXNzYWdlRXZlbnRDdXN0b20uY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9W
OE1lc3NhZ2VQb3J0Q3VzdG9tLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhO
b2RlQ3VzdG9tLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhOb2RlRmlsdGVy
Q3VzdG9tLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhOb2RlSXRlcmF0b3JD
dXN0b20uY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOE5vdGlmaWNhdGlvbkNl
bnRlckN1c3RvbS5jcHA6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4U1FMUmVzdWx0
U2V0Um93TGlzdEN1c3RvbS5jcHA6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4U1FM
VHJhbnNhY3Rpb25DdXN0b20uY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOFNW
R0VsZW1lbnRJbnN0YW5jZUN1c3RvbS5jcHA6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9t
L1Y4U1ZHTGVuZ3RoQ3VzdG9tLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhT
VkdNYXRyaXhDdXN0b20uY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOFNoYXJl
ZFdvcmtlckN1c3RvbS5jcHA6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4VHJlZVdh
bGtlckN1c3RvbS5jcHA6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4V2ViR0xBcnJh
eUJ1ZmZlckN1c3RvbS5jcHA6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4V2ViR0xC
eXRlQXJyYXlDdXN0b20uY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOFdlYkdM
RmxvYXRBcnJheUN1c3RvbS5jcHA6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4V2Vi
R0xJbnRBcnJheUN1c3RvbS5jcHA6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4V2Vi
R0xSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0
b20vVjhXZWJHTFNob3J0QXJyYXlDdXN0b20uY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1
c3RvbS9WOFdlYkdMVW5zaWduZWRCeXRlQXJyYXlDdXN0b20uY3BwOgorICAgICAgICAqIGJpbmRp
bmdzL3Y4L2N1c3RvbS9WOFdlYkdMVW5zaWduZWRJbnRBcnJheUN1c3RvbS5jcHA6CisgICAgICAg
ICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4V2ViR0xVbnNpZ25lZFNob3J0QXJyYXlDdXN0b20uY3Bw
OgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOFdlYktpdENTU01hdHJpeENvbnN0cnVj
dG9yLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhXZWJLaXRQb2ludENvbnN0
cnVjdG9yLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhXZWJTb2NrZXRDdXN0
b20uY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOFdvcmtlckNvbnRleHRDdXN0
b20uY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOFdvcmtlckN1c3RvbS5jcHA6
CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4WE1MSHR0cFJlcXVlc3RDb25zdHJ1Y3Rv
ci5jcHA6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4WE1MSHR0cFJlcXVlc3RDdXN0
b20uY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOFhNTEh0dHBSZXF1ZXN0VXBs
b2FkQ3VzdG9tLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhYTUxTZXJpYWxp
emVyQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOFhQYXRo
RXZhbHVhdG9yQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9W
OFhTTFRQcm9jZXNzb3JDdXN0b20uY3BwOgorCiAyMDA5LTEyLTE4ICBCcmlhbiBXZWluc3RlaW4g
IDxid2VpbnN0ZWluQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBBZGFtIFJvYmVu
LgpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCShy
ZXZpc2lvbiA1MjM0MSkKKysrIFdlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9y
VjgucG0JKHdvcmtpbmcgY29weSkKQEAgLTI4Miw2ICsyODIsMTYgQEAKIEVORAogICAgIH0KIAor
CisgICAgZm9yZWFjaCBteSAkZnVuY3Rpb24gKEB7JGRhdGFOb2RlLT5mdW5jdGlvbnN9KSB7Cisg
ICAgICAgIG15ICRuYW1lID0gJGZ1bmN0aW9uLT5zaWduYXR1cmUtPm5hbWU7CisgICAgICAgIHB1
c2goQGhlYWRlckNvbnRlbnQsIDw8RU5EKTsKKyAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVl
PiAke25hbWV9Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYpOworRU5ECisgICAgfQorCisg
ICAgR2VuZXJhdGVTcGVjaWFsQ2FzZUhlYWRlckRlY2xhcmF0aW9ucygkZGF0YU5vZGUpOworICAg
IAogICAgIHB1c2goQGhlYWRlckNvbnRlbnQsIDw8RU5EKTsKIAogIHByaXZhdGU6CkBAIC0yOTgs
NiArMzA4LDE0IEBACiAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiNlbmRpZiAvLyAke2NvbmRp
dGlvbmFsU3RyaW5nfVxuXG4iKSBpZiAkY29uZGl0aW9uYWxTdHJpbmc7CiB9CiAKK3N1YiBHZW5l
cmF0ZVNwZWNpYWxDYXNlSGVhZGVyRGVjbGFyYXRpb25zCit7CisgICAgbXkgJGRhdGFOb2RlID0g
c2hpZnQ7CisgICAgCisgICAgaWYgKCRkYXRhTm9kZS0+bmFtZSBlcSAiSFRNTENvbGxlY3Rpb24i
IHx8ICRkYXRhTm9kZS0+bmFtZSBlcSAiSFRNTEFsbENvbGxlY3Rpb24iKSB7CisgICAgICAgIHB1
c2goQGhlYWRlckNvbnRlbnQsICIgIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gY2FsbEFz
RnVuY3Rpb25DYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJik7XG4iKTsKKyAgICB9Cit9CiAK
IHN1YiBHZW5lcmF0ZVNldERPTUV4Y2VwdGlvbgogewpAQCAtODM4LDEyICs4NTYsNyBAQAogICAg
ICAgICAgICAgJGZ1bmN0aW9uLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJWOEN1
c3RvbSJ9KSB7CiAgICAgICAgICAgICBkaWUgIkN1c3RvbSBhbmQgVjhDdXN0b20gc2hvdWxkIGJl
IG11dHVhbGx5IGV4Y2x1c2l2ZSEiCiAgICAgICAgIH0KLSAgICAgICAgbXkgJGN1c3RvbUZ1bmMg
PSAkZnVuY3Rpb24tPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbSJ9IHx8
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgJGZ1bmN0aW9uLT5zaWduYXR1cmUtPmV4dGVuZGVk
QXR0cmlidXRlcy0+eyJWOEN1c3RvbSJ9OwotICAgICAgICBpZiAoJGN1c3RvbUZ1bmMgZXEgMSkg
ewotICAgICAgICAgICAgJGN1c3RvbUZ1bmMgPSAkaW50ZXJmYWNlTmFtZSAuICRjb2RlR2VuZXJh
dG9yLT5XS191Y2ZpcnN0KCRuYW1lKTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gIlY4Q3Vz
dG9tOjp2OCR7Y3VzdG9tRnVuY31DYWxsYmFjayI7CisgICAgICAgIHJldHVybiAiVjgke2ludGVy
ZmFjZU5hbWV9Ojoke25hbWV9Q2FsbGJhY2siOwogICAgIH0gZWxzZSB7CiAgICAgICAgIHJldHVy
biAiJHtpbnRlcmZhY2VOYW1lfUludGVybmFsOjoke25hbWV9Q2FsbGJhY2siOwogICAgIH0KSW5k
ZXg6IFdlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XcmFwcGVyLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5jcHAJKHJldmlzaW9uIDUyMzQxKQorKysg
V2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdyYXBwZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00
Nyw4ICs0NywxMCBAQAogI2luY2x1ZGUgIlY4RE9NTWFwLmgiCiAjaW5jbHVkZSAiVjhET01XaW5k
b3cuaCIKICNpbmNsdWRlICJWOEV2ZW50TGlzdGVuZXJMaXN0LmgiCisjaW5jbHVkZSAiVjhIVE1M
Q29sbGVjdGlvbi5oIgogI2luY2x1ZGUgIlY4SW5kZXguaCIKICNpbmNsdWRlICJWOElzb2xhdGVk
V29ybGQuaCIKKyNpbmNsdWRlICJWOEhUTUxQbHVnSW5FbGVtZW50Q3VzdG9tLmgiCiAjaW5jbHVk
ZSAiVjhQcm94eS5oIgogI2luY2x1ZGUgIldlYkdMQXJyYXkuaCIKICNpbmNsdWRlICJXZWJHTFVu
aWZvcm1Mb2NhdGlvbi5oIgpAQCAtMjc0LDEyICsyNzYsMTIgQEAKICAgICBjYXNlIFY4Q2xhc3NJ
bmRleDo6SFRNTEFMTENPTExFQ1RJT046CiAgICAgICAgIGRlc2NyaXB0b3ItPkluc3RhbmNlVGVt
cGxhdGUoKS0+TWFya0FzVW5kZXRlY3RhYmxlKCk7IC8vIGZhbGwgdGhyb3VnaAogICAgIGNhc2Ug
VjhDbGFzc0luZGV4OjpIVE1MQ09MTEVDVElPTjoKLSAgICAgICAgZGVzY3JpcHRvci0+SW5zdGFu
Y2VUZW1wbGF0ZSgpLT5TZXRDYWxsQXNGdW5jdGlvbkhhbmRsZXIoVVNFX0NBTExCQUNLKEhUTUxD
b2xsZWN0aW9uQ2FsbEFzRnVuY3Rpb24pKTsKKyAgICAgICAgZGVzY3JpcHRvci0+SW5zdGFuY2VU
ZW1wbGF0ZSgpLT5TZXRDYWxsQXNGdW5jdGlvbkhhbmRsZXIoVjhIVE1MQ29sbGVjdGlvbjo6Y2Fs
bEFzRnVuY3Rpb25DYWxsYmFjayk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgVjhDbGFzc0lu
ZGV4OjpIVE1MT1BUSU9OU0NPTExFQ1RJT046CiAgICAgICAgIGRlc2NyaXB0b3ItPkluc3RhbmNl
VGVtcGxhdGUoKS0+U2V0TmFtZWRQcm9wZXJ0eUhhbmRsZXIoVVNFX05BTUVEX1BST1BFUlRZX0dF
VFRFUihIVE1MQ29sbGVjdGlvbikpOwogICAgICAgICBkZXNjcmlwdG9yLT5JbnN0YW5jZVRlbXBs
YXRlKCktPlNldEluZGV4ZWRQcm9wZXJ0eUhhbmRsZXIoVVNFX0lOREVYRURfUFJPUEVSVFlfR0VU
VEVSKEhUTUxPcHRpb25zQ29sbGVjdGlvbiksIFVTRV9JTkRFWEVEX1BST1BFUlRZX1NFVFRFUihI
VE1MT3B0aW9uc0NvbGxlY3Rpb24pKTsKLSAgICAgICAgZGVzY3JpcHRvci0+SW5zdGFuY2VUZW1w
bGF0ZSgpLT5TZXRDYWxsQXNGdW5jdGlvbkhhbmRsZXIoVVNFX0NBTExCQUNLKEhUTUxDb2xsZWN0
aW9uQ2FsbEFzRnVuY3Rpb24pKTsKKyAgICAgICAgZGVzY3JpcHRvci0+SW5zdGFuY2VUZW1wbGF0
ZSgpLT5TZXRDYWxsQXNGdW5jdGlvbkhhbmRsZXIoVjhIVE1MQ29sbGVjdGlvbjo6Y2FsbEFzRnVu
Y3Rpb25DYWxsYmFjayk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgVjhDbGFzc0luZGV4OjpI
VE1MU0VMRUNURUxFTUVOVDoKICAgICAgICAgZGVzY3JpcHRvci0+SW5zdGFuY2VUZW1wbGF0ZSgp
LT5TZXRJbmRleGVkUHJvcGVydHlIYW5kbGVyKFVTRV9JTkRFWEVEX1BST1BFUlRZX0dFVFRFUihI
VE1MU2VsZWN0RWxlbWVudCksIFVTRV9JTkRFWEVEX1BST1BFUlRZX1NFVFRFUihIVE1MU2VsZWN0
RWxlbWVudCksIDAsIDAsIG5vZGVDb2xsZWN0aW9uSW5kZXhlZFByb3BlcnR5RW51bWVyYXRvcjxI
VE1MU2VsZWN0RWxlbWVudD4sIHY4OjpJbnRlZ2VyOjpOZXcoVjhDbGFzc0luZGV4OjpOT0RFKSk7
CkBAIC0zMjAsNyArMzIyLDcgQEAKICAgICAgICAgLy8gaGFuZGxpbmcgY29kZS4KICAgICAgICAg
ZGVzY3JpcHRvci0+SW5zdGFuY2VUZW1wbGF0ZSgpLT5TZXROYW1lZFByb3BlcnR5SGFuZGxlcihV
U0VfTkFNRURfUFJPUEVSVFlfR0VUVEVSKEhUTUxQbHVnSW5FbGVtZW50KSwgVVNFX05BTUVEX1BS
T1BFUlRZX1NFVFRFUihIVE1MUGx1Z0luRWxlbWVudCkpOwogICAgICAgICBkZXNjcmlwdG9yLT5J
bnN0YW5jZVRlbXBsYXRlKCktPlNldEluZGV4ZWRQcm9wZXJ0eUhhbmRsZXIoVVNFX0lOREVYRURf
UFJPUEVSVFlfR0VUVEVSKEhUTUxQbHVnSW5FbGVtZW50KSwgVVNFX0lOREVYRURfUFJPUEVSVFlf
U0VUVEVSKEhUTUxQbHVnSW5FbGVtZW50KSk7Ci0gICAgICAgIGRlc2NyaXB0b3ItPkluc3RhbmNl
VGVtcGxhdGUoKS0+U2V0Q2FsbEFzRnVuY3Rpb25IYW5kbGVyKFVTRV9DQUxMQkFDSyhIVE1MUGx1
Z0luRWxlbWVudCkpOworICAgICAgICBkZXNjcmlwdG9yLT5JbnN0YW5jZVRlbXBsYXRlKCktPlNl
dENhbGxBc0Z1bmN0aW9uSGFuZGxlcihWOEhUTUxQbHVnSW5FbGVtZW50OjpkZWZhdWx0Q2FsbGJh
Y2spOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFY4Q2xhc3NJbmRleDo6SFRNTEZSQU1FU0VU
RUxFTUVOVDoKICAgICAgICAgZGVzY3JpcHRvci0+SW5zdGFuY2VUZW1wbGF0ZSgpLT5TZXROYW1l
ZFByb3BlcnR5SGFuZGxlcihVU0VfTkFNRURfUFJPUEVSVFlfR0VUVEVSKEhUTUxGcmFtZVNldEVs
ZW1lbnQpKTsKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4V2ViR0xGbG9hdEFy
cmF5Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9W
OFdlYkdMRmxvYXRBcnJheUN1c3RvbS5jcHAJKHJldmlzaW9uIDUyMzQxKQorKysgV2ViQ29yZS9i
aW5kaW5ncy92OC9jdXN0b20vVjhXZWJHTEZsb2F0QXJyYXlDdXN0b20uY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC00NCw3ICs0NCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotQ0FMTEJBQ0tf
RlVOQ19ERUNMKFdlYkdMRmxvYXRBcnJheUNvbnN0cnVjdG9yKQordjg6OkhhbmRsZTx2ODo6VmFs
dWU+IFY4Q3VzdG9tOjp2OFdlYkdMRmxvYXRBcnJheUNvbnN0cnVjdG9yQ2FsbGJhY2soY29uc3Qg
djg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBJTkNfU1RBVFMoIkRPTS5XZWJHTEZsb2F0QXJy
YXkuQ29udHJ1Y3RvciIpOwogCkBAIC03NiwxMyArNzYsMTMgQEAKICAgICByZXR1cm4gdmFsdWU7
CiB9CiAKLUNBTExCQUNLX0ZVTkNfREVDTChXZWJHTEZsb2F0QXJyYXlHZXQpCit2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gVjhXZWJHTEZsb2F0QXJyYXk6OmdldENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1
bWVudHMmIGFyZ3MpCiB7CiAgICAgSU5DX1NUQVRTKCJET00uV2ViR0xGbG9hdEFycmF5LmdldCgp
Iik7CiAgICAgcmV0dXJuIGdldFdlYkdMQXJyYXlFbGVtZW50PFdlYkdMRmxvYXRBcnJheSwgZmxv
YXQ+KGFyZ3MsIFY4Q2xhc3NJbmRleDo6V0VCR0xGTE9BVEFSUkFZKTsKIH0KIAotQ0FMTEJBQ0tf
RlVOQ19ERUNMKFdlYkdMRmxvYXRBcnJheVNldCkKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFdl
YkdMRmxvYXRBcnJheTo6c2V0Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsK
ICAgICBJTkNfU1RBVFMoIkRPTS5XZWJHTEZsb2F0QXJyYXkuc2V0KCkiKTsKICAgICByZXR1cm4g
c2V0V2ViR0xBcnJheTxXZWJHTEZsb2F0QXJyYXksIFY4V2ViR0xGbG9hdEFycmF5PihhcmdzLCBW
OENsYXNzSW5kZXg6OldFQkdMRkxPQVRBUlJBWSk7CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4
L2N1c3RvbS9WOERPTUFwcGxpY2F0aW9uQ2FjaGVDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RE9NQXBwbGljYXRpb25DYWNoZUN1c3RvbS5jcHAJ
KHJldmlzaW9uIDUyMzQxKQorKysgV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhET01BcHBs
aWNhdGlvbkNhY2hlQ3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjksMTEgKzI5LDEyIEBA
CiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkRPTUFwcGxpY2F0aW9uQ2Fj
aGUuaCIKKyNpbmNsdWRlICJWOERPTUFwcGxpY2F0aW9uQ2FjaGUuaCIKIAogI2lmIEVOQUJMRShP
RkZMSU5FX1dFQl9BUFBMSUNBVElPTlMpCiAKICNpbmNsdWRlICJBcHBsaWNhdGlvbkNhY2hlSG9z
dC5oIgorI2luY2x1ZGUgIkRPTUFwcGxpY2F0aW9uQ2FjaGUuaCIKICNpbmNsdWRlICJWOEJpbmRp
bmcuaCIKICNpbmNsdWRlICJWOEN1c3RvbUJpbmRpbmcuaCIKICNpbmNsdWRlICJWOERvY3VtZW50
LmgiCkBAIC00NCw3ICs0NSw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIC8vIEhhbmRsZXMg
YXBwY2FjaGUuYWRkRXZlbnRMaXN0bmVyKG5hbWUsIGZ1bmMsIGNhcHR1cmUpIG1ldGhvZCBjYWxs
cwotQ0FMTEJBQ0tfRlVOQ19ERUNMKERPTUFwcGxpY2F0aW9uQ2FjaGVBZGRFdmVudExpc3RlbmVy
KQorICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOERPTUFwcGxpY2F0aW9uQ2FjaGU6OmFkZEV2
ZW50TGlzdGVuZXJDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAgIElO
Q19TVEFUUygiRE9NQXBwbGljYXRpb25DYWNoZS5hZGRFdmVudExpc3RlbmVyKCkiKTsKICAgICBE
T01BcHBsaWNhdGlvbkNhY2hlKiBhcHBjYWNoZSA9IFY4RE9NV3JhcHBlcjo6Y29udmVydFRvTmF0
aXZlT2JqZWN0PERPTUFwcGxpY2F0aW9uQ2FjaGU+KFY4Q2xhc3NJbmRleDo6RE9NQVBQTElDQVRJ
T05DQUNIRSwgYXJncy5Ib2xkZXIoKSk7CkBAIC02MCw3ICs2MSw3IEBACiB9CiAKIC8vIEhhbmRs
ZXMgYXBwY2FjaGUucmVtb3ZlRXZlbnRMaXN0bmVyKG5hbWUsIGZ1bmMsIGNhcHR1cmUpIG1ldGhv
ZCBjYWxscwotQ0FMTEJBQ0tfRlVOQ19ERUNMKERPTUFwcGxpY2F0aW9uQ2FjaGVSZW1vdmVFdmVu
dExpc3RlbmVyKQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4RE9NQXBwbGljYXRpb25DYWNoZTo6
cmVtb3ZlRXZlbnRMaXN0ZW5lckNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7
CiAgICAgSU5DX1NUQVRTKCJET01BcHBsaWNhdGlvbkNhY2hlLnJlbW92ZUV2ZW50TGlzdGVuZXIo
KSIpOwogICAgIERPTUFwcGxpY2F0aW9uQ2FjaGUqIGFwcGNhY2hlID0gVjhET01XcmFwcGVyOjpj
b252ZXJ0VG9OYXRpdmVPYmplY3Q8RE9NQXBwbGljYXRpb25DYWNoZT4oVjhDbGFzc0luZGV4OjpE
T01BUFBMSUNBVElPTkNBQ0hFLCBhcmdzLkhvbGRlcigpKTsKSW5kZXg6IFdlYkNvcmUvYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4TWVzc2FnZUNoYW5uZWxDb25zdHJ1Y3Rvci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhNZXNzYWdlQ2hhbm5lbENvbnN0cnVjdG9y
LmNwcAkocmV2aXNpb24gNTIzNDEpCisrKyBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE1l
c3NhZ2VDaGFubmVsQ29uc3RydWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NCw3ICs0NCw3
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotQ0FMTEJBQ0tfRlVOQ19ERUNMKE1lc3NhZ2VD
aGFubmVsQ29uc3RydWN0b3IpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhDdXN0b206OnY4TWVz
c2FnZUNoYW5uZWxDb25zdHJ1Y3RvckNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3Mp
CiB7CiAgICAgSU5DX1NUQVRTKCJET00uTWVzc2FnZUNoYW5uZWwuQ29uc3RydWN0b3IiKTsKICAg
ICAvLyBGSVhNRTogVGhlIGxvZ2ljIGhlcmUgaXMgYWxtb3N0IGV4YWN0IGR1cGxpY2F0ZSBvZiBW
ODo6Y29uc3RydWN0RE9NT2JqZWN0LgpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20v
VjhXZWJHTEFycmF5QnVmZmVyQ3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRp
bmdzL3Y4L2N1c3RvbS9WOFdlYkdMQXJyYXlCdWZmZXJDdXN0b20uY3BwCShyZXZpc2lvbiA1MjM0
MSkKKysrIFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4V2ViR0xBcnJheUJ1ZmZlckN1c3Rv
bS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQxLDcgKzQxLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1DQUxMQkFDS19GVU5DX0RFQ0woV2ViR0xBcnJheUJ1ZmZlckNvbnN0cnVjdG9yKQor
djg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4Q3VzdG9tOjp2OFdlYkdMQXJyYXlCdWZmZXJDb25zdHJ1
Y3RvckNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgSU5DX1NUQVRT
KCJET00uV2ViR0xBcnJheUJ1ZmZlci5Db25zdHJ1Y3RvciIpOwogCkluZGV4OiBXZWJDb3JlL2Jp
bmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxJbnB1dEVsZW1lbnRDdXN0b20uY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTElucHV0RWxlbWVudEN1c3RvbS5j
cHAJKHJldmlzaW9uIDUyMzQxKQorKysgV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1M
SW5wdXRFbGVtZW50Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjksNiArMjksOCBAQAog
ICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJWOEhUTUxJbnB1dEVsZW1lbnQu
aCIKKwogI2luY2x1ZGUgIkhUTUxJbnB1dEVsZW1lbnQuaCIKIAogI2luY2x1ZGUgIlY4QmluZGlu
Zy5oIgpAQCAtOTAsNyArOTIsNyBAQAogICAgIGltcC0+c2V0U2VsZWN0aW9uRW5kKHZhbHVlLT5J
bnQzMlZhbHVlKCkpOwogfQogCi1DQUxMQkFDS19GVU5DX0RFQ0woSFRNTElucHV0RWxlbWVudFNl
dFNlbGVjdGlvblJhbmdlKQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SFRNTElucHV0RWxlbWVu
dDo6c2V0U2VsZWN0aW9uUmFuZ2VDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQog
ewogICAgIElOQ19TVEFUUygiRE9NLkhUTUxJbnB1dEVsZW1lbnQuc2V0U2VsZWN0aW9uUmFuZ2Ui
KTsKICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGhvbGRlciA9IGFyZ3MuSG9sZGVyKCk7Cklu
ZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxGb3JtRWxlbWVudEN1c3RvbS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MRm9ybUVs
ZW1lbnRDdXN0b20uY3BwCShyZXZpc2lvbiA1MjM0MSkKKysrIFdlYkNvcmUvYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4SFRNTEZvcm1FbGVtZW50Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjks
OSArMjksMTAgQEAKICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiSFRNTEZv
cm1FbGVtZW50LmgiCisjaW5jbHVkZSAiVjhIVE1MRm9ybUVsZW1lbnQuaCIKIAogI2luY2x1ZGUg
IkhUTUxDb2xsZWN0aW9uLmgiCisjaW5jbHVkZSAiSFRNTEZvcm1FbGVtZW50LmgiCiAjaW5jbHVk
ZSAiVjhCaW5kaW5nLmgiCiAjaW5jbHVkZSAiVjhDdXN0b21CaW5kaW5nLmgiCiAjaW5jbHVkZSAi
VjhOYW1lZE5vZGVzQ29sbGVjdGlvbi5oIgpAQCAtODAsNyArODEsOCBAQAogICAgIHJldHVybiBW
OERPTVdyYXBwZXI6OmNvbnZlcnRUb1Y4T2JqZWN0KFY4Q2xhc3NJbmRleDo6Tk9ERUxJU1QsIGNv
bGxlY3Rpb24pOwogfQogCi1DQUxMQkFDS19GVU5DX0RFQ0woSFRNTEZvcm1FbGVtZW50U3VibWl0
KSB7Cit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhIVE1MRm9ybUVsZW1lbnQ6OnN1Ym1pdENhbGxi
YWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCit7CiAgICAgSU5DX1NUQVRTKCJET00uSFRN
TEZvcm1FbGVtZW50LnN1Ym1pdCgpIik7CiAgICAgSFRNTEZvcm1FbGVtZW50KiBmb3JtID0gVjhE
T01XcmFwcGVyOjpjb252ZXJ0RE9NV3JhcHBlclRvTmF0aXZlPEhUTUxGb3JtRWxlbWVudD4oYXJn
cy5Ib2xkZXIoKSk7CiAgICAgRnJhbWUqIGZyYW1lID0gVjhQcm94eTo6cmV0cmlldmVGcmFtZUZv
ckVudGVyZWRDb250ZXh0KCk7CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhU
TUxQbHVnSW5FbGVtZW50Q3VzdG9tLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy92
OC9jdXN0b20vVjhIVE1MUGx1Z0luRWxlbWVudEN1c3RvbS5oCShyZXZpc2lvbiAwKQorKysgV2Vi
Q29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MUGx1Z0luRWxlbWVudEN1c3RvbS5oCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDQ2IEBACisvKgorICogQ29weXJpZ2h0IChjKSAyMDA5IEdvb2ds
ZSBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqIAorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAq
IE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAq
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3Jp
dHRlbiBwZXJtaXNzaW9uLgorICogCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
RSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElN
SVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisg
KiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgVjhIVE1MUGx1Z0luRWxlbWVu
dEN1c3RvbV9oCisjZGVmaW5lIFY4SFRNTFBsdWdJbkVsZW1lbnRDdXN0b21faAorCisjaW5jbHVk
ZSA8djguaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBWOEhUTUxQbHVnSW5FbGVt
ZW50IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGRlZmF1bHRD
YWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJik7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCisKKyNlbmRpZiAvLyBWOEhUTUxQbHVnSW5FbGVtZW50Q3VzdG9tX2gKSW5kZXg6IFdlYkNv
cmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4V2ViR0xSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFdlYkdMUmVuZGVyaW5n
Q29udGV4dEN1c3RvbS5jcHAJKHJldmlzaW9uIDUyMzQxKQorKysgV2ViQ29yZS9iaW5kaW5ncy92
OC9jdXN0b20vVjhXZWJHTFJlbmRlcmluZ0NvbnRleHRDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zMiw3ICszMiw3IEBACiAKICNpZiBFTkFCTEUoM0RfQ0FOVkFTKQogCi0jaW5jbHVkZSAi
V2ViR0xSZW5kZXJpbmdDb250ZXh0LmgiCisjaW5jbHVkZSAiVjhXZWJHTFJlbmRlcmluZ0NvbnRl
eHQuaCIKIAogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKIApAQCAtNTUsNiArNTUsNyBAQAog
I2luY2x1ZGUgIlY4SFRNTENhbnZhc0VsZW1lbnQuaCIKICNpbmNsdWRlICJWOEhUTUxJbWFnZUVs
ZW1lbnQuaCIKICNpbmNsdWRlICJWOFByb3h5LmgiCisjaW5jbHVkZSAiV2ViR0xSZW5kZXJpbmdD
b250ZXh0LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtOTgsNyArOTksNyBAQAogICAg
IHJldHVybiBkYXRhOwogfQogCi1DQUxMQkFDS19GVU5DX0RFQ0woV2ViR0xSZW5kZXJpbmdDb250
ZXh0QnVmZmVyRGF0YSkKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFdlYkdMUmVuZGVyaW5nQ29u
dGV4dDo6YnVmZmVyRGF0YUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAg
ICAgSU5DX1NUQVRTKCJET00uV2ViR0xSZW5kZXJpbmdDb250ZXh0LmJ1ZmZlckRhdGEoKSIpOwog
CkBAIC0xNDAsNyArMTQxLDcgQEAKICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwogfQogCi1D
QUxMQkFDS19GVU5DX0RFQ0woV2ViR0xSZW5kZXJpbmdDb250ZXh0QnVmZmVyU3ViRGF0YSkKK3Y4
OjpIYW5kbGU8djg6OlZhbHVlPiBWOFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6YnVmZmVyU3ViRGF0
YUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgSU5DX1NUQVRTKCJE
T00uV2ViR0xSZW5kZXJpbmdDb250ZXh0LmJ1ZmZlclN1YkRhdGEoKSIpOwogCkBAIC0yODAsMTMg
KzI4MSwxMyBAQAogICAgIGtQcm9ncmFtUGFyYW1ldGVyLCBrVW5pZm9ybQogfTsKIAotQ0FMTEJB
Q0tfRlVOQ19ERUNMKFdlYkdMUmVuZGVyaW5nQ29udGV4dEdldEJ1ZmZlclBhcmFtZXRlcikKK3Y4
OjpIYW5kbGU8djg6OlZhbHVlPiBWOFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0QnVmZmVyUGFy
YW1ldGVyQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBJTkNfU1RB
VFMoIkRPTS5XZWJHTFJlbmRlcmluZ0NvbnRleHQuZ2V0QnVmZmVyUGFyYW1ldGVyKCkiKTsKICAg
ICByZXR1cm4gZ2V0T2JqZWN0UGFyYW1ldGVyKGFyZ3MsIGtCdWZmZXIpOwogfQogCi1DQUxMQkFD
S19GVU5DX0RFQ0woV2ViR0xSZW5kZXJpbmdDb250ZXh0R2V0RnJhbWVidWZmZXJBdHRhY2htZW50
UGFyYW1ldGVyKQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4V2ViR0xSZW5kZXJpbmdDb250ZXh0
OjpnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJDYWxsYmFjayhjb25zdCB2ODo6QXJn
dW1lbnRzJiBhcmdzKQogewogICAgIElOQ19TVEFUUygiRE9NLldlYkdMUmVuZGVyaW5nQ29udGV4
dC5nZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIoKSIpOwogCkBAIC0zMjIsNyArMzIz
LDcgQEAKICAgICByZXR1cm4gdG9WOChpbmZvKTsKIH0KIAotQ0FMTEJBQ0tfRlVOQ19ERUNMKFdl
YkdMUmVuZGVyaW5nQ29udGV4dEdldFBhcmFtZXRlcikKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBW
OFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0UGFyYW1ldGVyQ2FsbGJhY2soY29uc3Qgdjg6OkFy
Z3VtZW50cyYgYXJncykKIHsKICAgICBJTkNfU1RBVFMoIkRPTS5XZWJHTFJlbmRlcmluZ0NvbnRl
eHQuZ2V0UGFyYW1ldGVyKCkiKTsKIApAQCAtMzQ4LDcgKzM0OSw3IEBACiAgICAgcmV0dXJuIHRv
VjgoaW5mbyk7CiB9CiAKLUNBTExCQUNLX0ZVTkNfREVDTChXZWJHTFJlbmRlcmluZ0NvbnRleHRH
ZXRQcm9ncmFtUGFyYW1ldGVyKQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4V2ViR0xSZW5kZXJp
bmdDb250ZXh0OjpnZXRQcm9ncmFtUGFyYW1ldGVyQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50
cyYgYXJncykKIHsKICAgICBJTkNfU1RBVFMoIkRPTS5XZWJHTFJlbmRlcmluZ0NvbnRleHQuZ2V0
UHJvZ3JhbVBhcmFtZXRlcigpIik7CiAKQEAgLTM3NSwxMyArMzc2LDEzIEBACiAgICAgcmV0dXJu
IHRvVjgoaW5mbyk7CiB9CiAKLUNBTExCQUNLX0ZVTkNfREVDTChXZWJHTFJlbmRlcmluZ0NvbnRl
eHRHZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXIpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhXZWJH
TFJlbmRlcmluZ0NvbnRleHQ6OmdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlckNhbGxiYWNrKGNvbnN0
IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgSU5DX1NUQVRTKCJET00uV2ViR0xSZW5kZXJp
bmdDb250ZXh0LmdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcigpIik7CiAgICAgcmV0dXJuIGdldE9i
amVjdFBhcmFtZXRlcihhcmdzLCBrUmVuZGVyYnVmZmVyKTsKIH0KIAotQ0FMTEJBQ0tfRlVOQ19E
RUNMKFdlYkdMUmVuZGVyaW5nQ29udGV4dEdldFNoYWRlclBhcmFtZXRlcikKK3Y4OjpIYW5kbGU8
djg6OlZhbHVlPiBWOFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0U2hhZGVyUGFyYW1ldGVyQ2Fs
bGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBJTkNfU1RBVFMoIkRPTS5X
ZWJHTFJlbmRlcmluZ0NvbnRleHQuZ2V0U2hhZGVyUGFyYW1ldGVyKCkiKTsKIApAQCAtNDA4LDEz
ICs0MDksMTMgQEAKICAgICByZXR1cm4gdG9WOChpbmZvKTsKIH0KIAotQ0FMTEJBQ0tfRlVOQ19E
RUNMKFdlYkdMUmVuZGVyaW5nQ29udGV4dEdldFRleFBhcmFtZXRlcikKK3Y4OjpIYW5kbGU8djg6
OlZhbHVlPiBWOFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0VGV4UGFyYW1ldGVyQ2FsbGJhY2so
Y29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBJTkNfU1RBVFMoIkRPTS5XZWJHTFJl
bmRlcmluZ0NvbnRleHQuZ2V0VGV4UGFyYW1ldGVyKCkiKTsKICAgICByZXR1cm4gZ2V0T2JqZWN0
UGFyYW1ldGVyKGFyZ3MsIGtUZXh0dXJlKTsKIH0KIAotQ0FMTEJBQ0tfRlVOQ19ERUNMKFdlYkdM
UmVuZGVyaW5nQ29udGV4dEdldFVuaWZvcm0pCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhXZWJH
TFJlbmRlcmluZ0NvbnRleHQ6OmdldFVuaWZvcm1DYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRz
JiBhcmdzKQogewogICAgIElOQ19TVEFUUygiRE9NLldlYkdMUmVuZGVyaW5nQ29udGV4dC5nZXRV
bmlmb3JtKCkiKTsKIApAQCAtNDQzLDEzICs0NDQsMTMgQEAKICAgICByZXR1cm4gdG9WOChpbmZv
KTsKIH0KIAotQ0FMTEJBQ0tfRlVOQ19ERUNMKFdlYkdMUmVuZGVyaW5nQ29udGV4dEdldFZlcnRl
eEF0dHJpYikKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6
Z2V0VmVydGV4QXR0cmliQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAg
ICBJTkNfU1RBVFMoIkRPTS5XZWJHTFJlbmRlcmluZ0NvbnRleHQuZ2V0VmVydGV4QXR0cmliKCki
KTsKICAgICByZXR1cm4gZ2V0T2JqZWN0UGFyYW1ldGVyKGFyZ3MsIGtWZXJ0ZXhBdHRyaWIpOwog
fQogCi1DQUxMQkFDS19GVU5DX0RFQ0woV2ViR0xSZW5kZXJpbmdDb250ZXh0VGV4SW1hZ2UyRCkK
K3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dGV4SW1hZ2Uy
RENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgSU5DX1NUQVRTKCJE
T00uV2ViR0xSZW5kZXJpbmdDb250ZXh0LnRleEltYWdlMkQoKSIpOwogCkBAIC01NzEsNyArNTcy
LDcgQEAKICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwogfQogCi1DQUxMQkFDS19GVU5DX0RF
Q0woV2ViR0xSZW5kZXJpbmdDb250ZXh0VGV4U3ViSW1hZ2UyRCkKK3Y4OjpIYW5kbGU8djg6OlZh
bHVlPiBWOFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dGV4U3ViSW1hZ2UyRENhbGxiYWNrKGNvbnN0
IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgSU5DX1NUQVRTKCJET00uV2ViR0xSZW5kZXJp
bmdDb250ZXh0LnRleFN1YkltYWdlMkQoKSIpOwogCkBAIC03NjMsNDkgKzc2NCw0OSBAQAogICAg
IHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CiB9CiAKLUNBTExCQUNLX0ZVTkNfREVDTChXZWJHTFJl
bmRlcmluZ0NvbnRleHRVbmlmb3JtMWZ2KQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4V2ViR0xS
ZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtMWZ2Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYg
YXJncykKIHsKICAgICBJTkNfU1RBVFMoIkRPTS5XZWJHTFJlbmRlcmluZ0NvbnRleHQudW5pZm9y
bTFmdigpIik7CiAgICAgcmV0dXJuIHZlcnRleEF0dHJpYkFuZFVuaWZvcm1IZWxwZXJmKGFyZ3Ms
IGtVbmlmb3JtMXYpOwogfQogCi1DQUxMQkFDS19GVU5DX0RFQ0woV2ViR0xSZW5kZXJpbmdDb250
ZXh0VW5pZm9ybTFpdikKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFdlYkdMUmVuZGVyaW5nQ29u
dGV4dDo6dW5pZm9ybTFpdkNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAg
ICAgSU5DX1NUQVRTKCJET00uV2ViR0xSZW5kZXJpbmdDb250ZXh0LnVuaWZvcm0xaXYoKSIpOwog
ICAgIHJldHVybiB1bmlmb3JtSGVscGVyaShhcmdzLCBrVW5pZm9ybTF2KTsKIH0KIAotQ0FMTEJB
Q0tfRlVOQ19ERUNMKFdlYkdMUmVuZGVyaW5nQ29udGV4dFVuaWZvcm0yZnYpCit2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gVjhXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm0yZnZDYWxsYmFjayhj
b25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAgIElOQ19TVEFUUygiRE9NLldlYkdMUmVu
ZGVyaW5nQ29udGV4dC51bmlmb3JtMmZ2KCkiKTsKICAgICByZXR1cm4gdmVydGV4QXR0cmliQW5k
VW5pZm9ybUhlbHBlcmYoYXJncywga1VuaWZvcm0ydik7CiB9CiAKLUNBTExCQUNLX0ZVTkNfREVD
TChXZWJHTFJlbmRlcmluZ0NvbnRleHRVbmlmb3JtMml2KQordjg6OkhhbmRsZTx2ODo6VmFsdWU+
IFY4V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtMml2Q2FsbGJhY2soY29uc3Qgdjg6OkFy
Z3VtZW50cyYgYXJncykKIHsKICAgICBJTkNfU1RBVFMoIkRPTS5XZWJHTFJlbmRlcmluZ0NvbnRl
eHQudW5pZm9ybTJpdigpIik7CiAgICAgcmV0dXJuIHVuaWZvcm1IZWxwZXJpKGFyZ3MsIGtVbmlm
b3JtMnYpOwogfQogCi1DQUxMQkFDS19GVU5DX0RFQ0woV2ViR0xSZW5kZXJpbmdDb250ZXh0VW5p
Zm9ybTNmdikKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6
dW5pZm9ybTNmdkNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgSU5D
X1NUQVRTKCJET00uV2ViR0xSZW5kZXJpbmdDb250ZXh0LnVuaWZvcm0zZnYoKSIpOwogICAgIHJl
dHVybiB2ZXJ0ZXhBdHRyaWJBbmRVbmlmb3JtSGVscGVyZihhcmdzLCBrVW5pZm9ybTN2KTsKIH0K
IAotQ0FMTEJBQ0tfRlVOQ19ERUNMKFdlYkdMUmVuZGVyaW5nQ29udGV4dFVuaWZvcm0zaXYpCit2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm0zaXZD
YWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAgIElOQ19TVEFUUygiRE9N
LldlYkdMUmVuZGVyaW5nQ29udGV4dC51bmlmb3JtM2l2KCkiKTsKICAgICByZXR1cm4gdW5pZm9y
bUhlbHBlcmkoYXJncywga1VuaWZvcm0zdik7CiB9CiAKLUNBTExCQUNLX0ZVTkNfREVDTChXZWJH
TFJlbmRlcmluZ0NvbnRleHRVbmlmb3JtNGZ2KQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4V2Vi
R0xSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtNGZ2Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50
cyYgYXJncykKIHsKICAgICBJTkNfU1RBVFMoIkRPTS5XZWJHTFJlbmRlcmluZ0NvbnRleHQudW5p
Zm9ybTRmdigpIik7CiAgICAgcmV0dXJuIHZlcnRleEF0dHJpYkFuZFVuaWZvcm1IZWxwZXJmKGFy
Z3MsIGtVbmlmb3JtNHYpOwogfQogCi1DQUxMQkFDS19GVU5DX0RFQ0woV2ViR0xSZW5kZXJpbmdD
b250ZXh0VW5pZm9ybTRpdikKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFdlYkdMUmVuZGVyaW5n
Q29udGV4dDo6dW5pZm9ybTRpdkNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7
CiAgICAgSU5DX1NUQVRTKCJET00uV2ViR0xSZW5kZXJpbmdDb250ZXh0LnVuaWZvcm00aXYoKSIp
OwogICAgIHJldHVybiB1bmlmb3JtSGVscGVyaShhcmdzLCBrVW5pZm9ybTR2KTsKQEAgLTg4MSw0
MyArODgyLDQzIEBACiAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKIH0KIAotQ0FMTEJBQ0tf
RlVOQ19ERUNMKFdlYkdMUmVuZGVyaW5nQ29udGV4dFVuaWZvcm1NYXRyaXgyZnYpCit2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gVjhXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm1NYXRyaXgyZnZD
YWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAgIElOQ19TVEFUUygiRE9N
LldlYkdMUmVuZGVyaW5nQ29udGV4dC51bmlmb3JtTWF0cml4MmZ2KCkiKTsKICAgICByZXR1cm4g
dW5pZm9ybU1hdHJpeEhlbHBlcihhcmdzLCAyKTsKIH0KIAotQ0FMTEJBQ0tfRlVOQ19ERUNMKFdl
YkdMUmVuZGVyaW5nQ29udGV4dFVuaWZvcm1NYXRyaXgzZnYpCit2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gVjhXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm1NYXRyaXgzZnZDYWxsYmFjayhjb25z
dCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAgIElOQ19TVEFUUygiRE9NLldlYkdMUmVuZGVy
aW5nQ29udGV4dC51bmlmb3JtTWF0cml4M2Z2KCkiKTsKICAgICByZXR1cm4gdW5pZm9ybU1hdHJp
eEhlbHBlcihhcmdzLCAzKTsKIH0KIAotQ0FMTEJBQ0tfRlVOQ19ERUNMKFdlYkdMUmVuZGVyaW5n
Q29udGV4dFVuaWZvcm1NYXRyaXg0ZnYpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhXZWJHTFJl
bmRlcmluZ0NvbnRleHQ6OnVuaWZvcm1NYXRyaXg0ZnZDYWxsYmFjayhjb25zdCB2ODo6QXJndW1l
bnRzJiBhcmdzKQogewogICAgIElOQ19TVEFUUygiRE9NLldlYkdMUmVuZGVyaW5nQ29udGV4dC51
bmlmb3JtTWF0cml4NGZ2KCkiKTsKICAgICByZXR1cm4gdW5pZm9ybU1hdHJpeEhlbHBlcihhcmdz
LCA0KTsKIH0KIAotQ0FMTEJBQ0tfRlVOQ19ERUNMKFdlYkdMUmVuZGVyaW5nQ29udGV4dFZlcnRl
eEF0dHJpYjFmdikKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFdlYkdMUmVuZGVyaW5nQ29udGV4
dDo6dmVydGV4QXR0cmliMWZ2Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsK
ICAgICBJTkNfU1RBVFMoIkRPTS5XZWJHTFJlbmRlcmluZ0NvbnRleHQudmVydGV4QXR0cmliMWZ2
KCkiKTsKICAgICByZXR1cm4gdmVydGV4QXR0cmliQW5kVW5pZm9ybUhlbHBlcmYoYXJncywga1Zl
cnRleEF0dHJpYjF2KTsKIH0KIAotQ0FMTEJBQ0tfRlVOQ19ERUNMKFdlYkdMUmVuZGVyaW5nQ29u
dGV4dFZlcnRleEF0dHJpYjJmdikKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFdlYkdMUmVuZGVy
aW5nQ29udGV4dDo6dmVydGV4QXR0cmliMmZ2Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYg
YXJncykKIHsKICAgICBJTkNfU1RBVFMoIkRPTS5XZWJHTFJlbmRlcmluZ0NvbnRleHQudmVydGV4
QXR0cmliMmZ2KCkiKTsKICAgICByZXR1cm4gdmVydGV4QXR0cmliQW5kVW5pZm9ybUhlbHBlcmYo
YXJncywga1ZlcnRleEF0dHJpYjJ2KTsKIH0KIAotQ0FMTEJBQ0tfRlVOQ19ERUNMKFdlYkdMUmVu
ZGVyaW5nQ29udGV4dFZlcnRleEF0dHJpYjNmdikKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFdl
YkdMUmVuZGVyaW5nQ29udGV4dDo6dmVydGV4QXR0cmliM2Z2Q2FsbGJhY2soY29uc3Qgdjg6OkFy
Z3VtZW50cyYgYXJncykKIHsKICAgICBJTkNfU1RBVFMoIkRPTS5XZWJHTFJlbmRlcmluZ0NvbnRl
eHQudmVydGV4QXR0cmliM2Z2KCkiKTsKICAgICByZXR1cm4gdmVydGV4QXR0cmliQW5kVW5pZm9y
bUhlbHBlcmYoYXJncywga1ZlcnRleEF0dHJpYjN2KTsKIH0KIAotQ0FMTEJBQ0tfRlVOQ19ERUNM
KFdlYkdMUmVuZGVyaW5nQ29udGV4dFZlcnRleEF0dHJpYjRmdikKK3Y4OjpIYW5kbGU8djg6OlZh
bHVlPiBWOFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dmVydGV4QXR0cmliNGZ2Q2FsbGJhY2soY29u
c3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBJTkNfU1RBVFMoIkRPTS5XZWJHTFJlbmRl
cmluZ0NvbnRleHQudmVydGV4QXR0cmliNGZ2KCkiKTsKICAgICByZXR1cm4gdmVydGV4QXR0cmli
QW5kVW5pZm9ybUhlbHBlcmYoYXJncywga1ZlcnRleEF0dHJpYjR2KTsKSW5kZXg6IFdlYkNvcmUv
YmluZGluZ3MvdjgvY3VzdG9tL1Y4RGF0YWJhc2VDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RGF0YWJhc2VDdXN0b20uY3BwCShyZXZpc2lvbiA1
MjM0MSkKKysrIFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RGF0YWJhc2VDdXN0b20uY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAK
ICNpZiBFTkFCTEUoREFUQUJBU0UpCisjaW5jbHVkZSAiVjhEYXRhYmFzZS5oIgogCiAjaW5jbHVk
ZSAiRGF0YWJhc2UuaCIKICNpbmNsdWRlICJWOEJpbmRpbmcuaCIKQEAgLTQyLDcgKzQzLDcgQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1DQUxMQkFDS19GVU5DX0RFQ0woRGF0YWJhc2VDaGFu
Z2VWZXJzaW9uKQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4RGF0YWJhc2U6OmNoYW5nZVZlcnNp
b25DYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAgIElOQ19TVEFUUygi
RE9NLkRhdGFiYXNlLmNoYW5nZVZlcnNpb24oKSIpOwogCkBAIC0xMjMsMTMgKzEyNCwxMyBAQAog
ICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CiB9CiAKLUNBTExCQUNLX0ZVTkNfREVDTChEYXRh
YmFzZVRyYW5zYWN0aW9uKQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4RGF0YWJhc2U6OnRyYW5z
YWN0aW9uQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBJTkNfU1RB
VFMoIkRPTS5EYXRhYmFzZS50cmFuc2FjdGlvbigpIik7CiAgICAgcmV0dXJuIGNyZWF0ZVRyYW5z
YWN0aW9uKGFyZ3MsIGZhbHNlKTsKIH0KIAotQ0FMTEJBQ0tfRlVOQ19ERUNMKERhdGFiYXNlUmVh
ZFRyYW5zYWN0aW9uKQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4RGF0YWJhc2U6OnJlYWRUcmFu
c2FjdGlvbkNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgSU5DX1NU
QVRTKCJET00uRGF0YWJhc2UucmVhZFRyYW5zYWN0aW9uKCkiKTsKICAgICByZXR1cm4gY3JlYXRl
VHJhbnNhY3Rpb24oYXJncywgdHJ1ZSk7CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOERPTVBhcnNlckNvbnN0cnVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRp
bmdzL3Y4L2N1c3RvbS9WOERPTVBhcnNlckNvbnN0cnVjdG9yLmNwcAkocmV2aXNpb24gNTIzNDEp
CisrKyBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERPTVBhcnNlckNvbnN0cnVjdG9yLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzYsNyArMzYsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLUNBTExCQUNLX0ZVTkNfREVDTChET01QYXJzZXJDb25zdHJ1Y3RvcikKK3Y4OjpIYW5kbGU8
djg6OlZhbHVlPiBWOEN1c3RvbTo6djhET01QYXJzZXJDb25zdHJ1Y3RvckNhbGxiYWNrKGNvbnN0
IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgSU5DX1NUQVRTKCJET00uRE9NUGFyc2VyLkNv
bnRydWN0b3IiKTsKICAgICByZXR1cm4gVjhQcm94eTo6Y29uc3RydWN0RE9NT2JqZWN0PFY4Q2xh
c3NJbmRleDo6RE9NUEFSU0VSLCBET01QYXJzZXI+KGFyZ3MpOwpJbmRleDogV2ViQ29yZS9iaW5k
aW5ncy92OC9jdXN0b20vVjhET01XaW5kb3dDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RE9NV2luZG93Q3VzdG9tLmNwcAkocmV2aXNpb24gNTIz
NDEpCisrKyBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERPTVdpbmRvd0N1c3RvbS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTI5LDcgKzI5LDcgQEAKICAqLwogCiAjaW5jbHVkZSAiY29uZmln
LmgiCi0jaW5jbHVkZSAiRE9NV2luZG93LmgiCisjaW5jbHVkZSAiVjhET01XaW5kb3cuaCIKIAog
I2luY2x1ZGUgIlY4QmluZGluZy5oIgogI2luY2x1ZGUgIlY4QmluZGluZ1N0YXRlLmgiCkBAIC00
Myw2ICs0Myw3IEBACiAjaW5jbHVkZSAiQ2hyb21lLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29k
ZS5oIgogI2luY2x1ZGUgIkRPTVRpbWVyLmgiCisjaW5jbHVkZSAiRE9NV2luZG93LmgiCiAjaW5j
bHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJGcmFtZUxvYWRSZXF1ZXN0LmgiCiAjaW5jbHVkZSAi
RnJhbWVWaWV3LmgiCkBAIC02OCw3ICs2OSw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
djg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4Q3VzdG9tOjpXaW5kb3dTZXRUaW1lb3V0SW1wbChjb25z
dCB2ODo6QXJndW1lbnRzJiBhcmdzLCBib29sIHNpbmdsZVNob3QpCit2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gV2luZG93U2V0VGltZW91dEltcGwoY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncywgYm9v
bCBzaW5nbGVTaG90KQogewogICAgIGludCBhcmd1bWVudENvdW50ID0gYXJncy5MZW5ndGgoKTsK
IApAQCAtMjE0LDcgKzIxNSw3IEBACiBBQ0NFU1NPUl9TRVRURVIoRE9NV2luZG93TG9jYXRpb24p
CiB7CiAgICAgRE9NV2luZG93KiBpbXAgPSBWOERPTVdyYXBwZXI6OmNvbnZlcnRUb05hdGl2ZU9i
amVjdDxET01XaW5kb3c+KFY4Q2xhc3NJbmRleDo6RE9NV0lORE9XLCBpbmZvLkhvbGRlcigpKTsK
LSAgICBXaW5kb3dTZXRMb2NhdGlvbihpbXAsIHRvV2ViQ29yZVN0cmluZyh2YWx1ZSkpOworICAg
IFY4Q3VzdG9tOjpXaW5kb3dTZXRMb2NhdGlvbihpbXAsIHRvV2ViQ29yZVN0cmluZyh2YWx1ZSkp
OwogfQogCiAKQEAgLTMzNiw3ICszMzcsNyBAQAogICAgIHJldHVybiBWOERPTVdyYXBwZXI6Omdl
dENvbnN0cnVjdG9yKFY4Q2xhc3NJbmRleDo6T1BUSU9OLCB3aW5kb3cpOwogfQogCi1DQUxMQkFD
S19GVU5DX0RFQ0woRE9NV2luZG93QWRkRXZlbnRMaXN0ZW5lcikKK3Y4OjpIYW5kbGU8djg6OlZh
bHVlPiBWOERPTVdpbmRvdzo6YWRkRXZlbnRMaXN0ZW5lckNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1
bWVudHMmIGFyZ3MpCiB7CiAgICAgSU5DX1NUQVRTKCJET00uRE9NV2luZG93LmFkZEV2ZW50TGlz
dGVuZXIoKSIpOwogCkBAIC0zNjksNyArMzcwLDcgQEAKIH0KIAogCi1DQUxMQkFDS19GVU5DX0RF
Q0woRE9NV2luZG93UmVtb3ZlRXZlbnRMaXN0ZW5lcikKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBW
OERPTVdpbmRvdzo6cmVtb3ZlRXZlbnRMaXN0ZW5lckNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVu
dHMmIGFyZ3MpCiB7CiAgICAgSU5DX1NUQVRTKCJET00uRE9NV2luZG93LnJlbW92ZUV2ZW50TGlz
dGVuZXIoKSIpOwogCkBAIC00MDAsNyArNDAxLDcgQEAKICAgICByZXR1cm4gdjg6OlVuZGVmaW5l
ZCgpOwogfQogCi1DQUxMQkFDS19GVU5DX0RFQ0woRE9NV2luZG93UG9zdE1lc3NhZ2UpCit2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gVjhET01XaW5kb3c6OnBvc3RNZXNzYWdlQ2FsbGJhY2soY29uc3Qg
djg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBJTkNfU1RBVFMoIkRPTS5ET01XaW5kb3cucG9z
dE1lc3NhZ2UoKSIpOwogICAgIERPTVdpbmRvdyogd2luZG93ID0gVjhET01XcmFwcGVyOjpjb252
ZXJ0VG9OYXRpdmVPYmplY3Q8RE9NV2luZG93PihWOENsYXNzSW5kZXg6OkRPTVdJTkRPVywgYXJn
cy5Ib2xkZXIoKSk7CkBAIC00MzMsNyArNDM0LDcgQEAKICAgICByZXR1cm4gdGhyb3dFcnJvcihl
Yyk7CiB9CiAKLUNBTExCQUNLX0ZVTkNfREVDTChET01XaW5kb3dBdG9iKQordjg6OkhhbmRsZTx2
ODo6VmFsdWU+IFY4RE9NV2luZG93OjphdG9iQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYg
YXJncykKIHsKICAgICBJTkNfU1RBVFMoIkRPTS5ET01XaW5kb3cuYXRvYigpIik7CiAKQEAgLTQ1
Miw3ICs0NTMsNyBAQAogICAgIHJldHVybiBjb252ZXJ0QmFzZTY0KHN0ciwgZmFsc2UpOwogfQog
Ci1DQUxMQkFDS19GVU5DX0RFQ0woRE9NV2luZG93QnRvYSkKK3Y4OjpIYW5kbGU8djg6OlZhbHVl
PiBWOERPTVdpbmRvdzo6YnRvYUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7
CiAgICAgSU5DX1NUQVRTKCJET00uRE9NV2luZG93LmJ0b2EoKSIpOwogCkBAIC00NzUsNyArNDc2
LDcgQEAKIC8vIGZpeCB0aGlzIGJ5IGNhbGxpbmcgdG9TdHJpbmcgZnVuY3Rpb24gb24gdGhlIHJl
Y2VpdmVyLgogLy8gSG93ZXZlciwgVjggaW1wbGVtZW50cyB0b1N0cmluZyBpbiBKYXZhU2NyaXB0
LCB3aGljaCByZXF1aXJlcwogLy8gc3dpdGNoaW5nIGNvbnRleHQgb2YgcmVjZWl2ZXIuIEkgY29u
c2lkZXIgaXQgaXMgZGFuZ2Vyb3VzLgotQ0FMTEJBQ0tfRlVOQ19ERUNMKERPTVdpbmRvd1RvU3Ry
aW5nKQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4RE9NV2luZG93Ojp0b1N0cmluZ0NhbGxiYWNr
KGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgSU5DX1NUQVRTKCJET00uRE9NV2lu
ZG93LnRvU3RyaW5nKCkiKTsKICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGRvbVdyYXBwZXIg
PSBWOERPTVdyYXBwZXI6Omxvb2t1cERPTVdyYXBwZXIoVjhDbGFzc0luZGV4OjpET01XSU5ET1cs
IGFyZ3MuVGhpcygpKTsKQEAgLTQ4NCwxMiArNDg1LDE4IEBACiAgICAgcmV0dXJuIGRvbVdyYXBw
ZXItPk9iamVjdFByb3RvVG9TdHJpbmcoKTsKIH0KIAotQ0FMTEJBQ0tfRlVOQ19ERUNMKERPTVdp
bmRvd05PUCkKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOERPTVdpbmRvdzo6cmVsZWFzZUV2ZW50
c0NhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgSU5DX1NUQVRTKCJE
T00uRE9NV2luZG93Lm5vcCgpIik7CiAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKIH0KIAor
djg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4RE9NV2luZG93OjpjYXB0dXJlRXZlbnRzQ2FsbGJhY2so
Y29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3sKKyAgICBJTkNfU1RBVFMoIkRPTS5ET01XaW5k
b3cubm9wKCkiKTsKKyAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOworfQorCiBzdGF0aWMgYm9v
bCBjYW5TaG93TW9kYWxEaWFsb2dOb3coY29uc3QgRnJhbWUqIGZyYW1lKQogewogICAgIC8vIEEg
ZnJhbWUgY2FuIG91dCBsaXZlIGl0cyBwYWdlLiBTZWUgYnVnIDEyMTk2MTMuCkBAIC02MTEsNyAr
NjE4LDcgQEAKIAogCiAKLUNBTExCQUNLX0ZVTkNfREVDTChET01XaW5kb3dTaG93TW9kYWxEaWFs
b2cpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhET01XaW5kb3c6OnNob3dNb2RhbERpYWxvZ0Nh
bGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgSU5DX1NUQVRTKCJET00u
RE9NV2luZG93LnNob3dNb2RhbERpYWxvZygpIik7CiAKQEAgLTcwMSw3ICs3MDgsNyBAQAogfQog
CiAKLUNBTExCQUNLX0ZVTkNfREVDTChET01XaW5kb3dPcGVuKQordjg6OkhhbmRsZTx2ODo6VmFs
dWU+IFY4RE9NV2luZG93OjpvcGVuQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykK
IHsKICAgICBJTkNfU1RBVFMoIkRPTS5ET01XaW5kb3cub3BlbigpIik7CiAKQEAgLTkwNywyMSAr
OTE0LDIxIEBACiB9CiAKIAotQ0FMTEJBQ0tfRlVOQ19ERUNMKERPTVdpbmRvd1NldFRpbWVvdXQp
Cit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhET01XaW5kb3c6OnNldFRpbWVvdXRDYWxsYmFjayhj
b25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAgIElOQ19TVEFUUygiRE9NLkRPTVdpbmRv
dy5zZXRUaW1lb3V0KCkiKTsKICAgICByZXR1cm4gV2luZG93U2V0VGltZW91dEltcGwoYXJncywg
dHJ1ZSk7CiB9CiAKIAotQ0FMTEJBQ0tfRlVOQ19ERUNMKERPTVdpbmRvd1NldEludGVydmFsKQor
djg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4RE9NV2luZG93OjpzZXRJbnRlcnZhbENhbGxiYWNrKGNv
bnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgSU5DX1NUQVRTKCJET00uRE9NV2luZG93
LnNldEludGVydmFsKCkiKTsKICAgICByZXR1cm4gV2luZG93U2V0VGltZW91dEltcGwoYXJncywg
ZmFsc2UpOwogfQogCiAKLXZvaWQgVjhDdXN0b206OkNsZWFyVGltZW91dEltcGwoY29uc3Qgdjg6
OkFyZ3VtZW50cyYgYXJncykKK3ZvaWQgQ2xlYXJUaW1lb3V0SW1wbChjb25zdCB2ODo6QXJndW1l
bnRzJiBhcmdzKQogewogICAgIGludCBoYW5kbGUgPSB0b0ludDMyKGFyZ3NbMF0pOwogCkBAIC05
MzYsMTQgKzk0MywxNCBAQAogfQogCiAKLUNBTExCQUNLX0ZVTkNfREVDTChET01XaW5kb3dDbGVh
clRpbWVvdXQpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhET01XaW5kb3c6OmNsZWFyVGltZW91
dENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgSU5DX1NUQVRTKCJE
T00uRE9NV2luZG93LmNsZWFyVGltZW91dCIpOwogICAgIENsZWFyVGltZW91dEltcGwoYXJncyk7
CiAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKIH0KIAotQ0FMTEJBQ0tfRlVOQ19ERUNMKERP
TVdpbmRvd0NsZWFySW50ZXJ2YWwpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhET01XaW5kb3c6
OmNsZWFySW50ZXJ2YWxDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAg
IElOQ19TVEFUUygiRE9NLkRPTVdpbmRvdy5jbGVhckludGVydmFsIik7CiAgICAgQ2xlYXJUaW1l
b3V0SW1wbChhcmdzKTsKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4V29ya2Vy
Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFdv
cmtlckN1c3RvbS5jcHAJKHJldmlzaW9uIDUyMzQxKQorKysgV2ViQ29yZS9iaW5kaW5ncy92OC9j
dXN0b20vVjhXb3JrZXJDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2ICszMSw3IEBA
CiAjaW5jbHVkZSAiY29uZmlnLmgiCiAKICNpZiBFTkFCTEUoV09SS0VSUykKKyNpbmNsdWRlICJW
OFdvcmtlci5oIgogCiAjaW5jbHVkZSAiV29ya2VyLmgiCiAKQEAgLTQ3LDcgKzQ4LDcgQEAKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi1DQUxMQkFDS19GVU5DX0RFQ0woV29ya2VyQ29uc3RydWN0
b3IpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhDdXN0b206OnY4V29ya2VyQ29uc3RydWN0b3JD
YWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAgIElOQ19TVEFUUyhMIkRP
TS5Xb3JrZXIuQ29uc3RydWN0b3IiKTsKIApAQCAtODcsNyArODgsNyBAQAogICAgIHJldHVybiB3
cmFwcGVyT2JqZWN0OwogfQogCi1DQUxMQkFDS19GVU5DX0RFQ0woV29ya2VyUG9zdE1lc3NhZ2Up
Cit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhXb3JrZXI6OnBvc3RNZXNzYWdlQ2FsbGJhY2soY29u
c3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBJTkNfU1RBVFMoIkRPTS5Xb3JrZXIucG9z
dE1lc3NhZ2UiKTsKICAgICBXb3JrZXIqIHdvcmtlciA9IFY4RE9NV3JhcHBlcjo6Y29udmVydFRv
TmF0aXZlT2JqZWN0PFdvcmtlcj4oVjhDbGFzc0luZGV4OjpXT1JLRVIsIGFyZ3MuSG9sZGVyKCkp
OwpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MQWxsQ29sbGVjdGlvbkN1
c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1M
QWxsQ29sbGVjdGlvbkN1c3RvbS5jcHAJKHJldmlzaW9uIDUyMzQxKQorKysgV2ViQ29yZS9iaW5k
aW5ncy92OC9jdXN0b20vVjhIVE1MQWxsQ29sbGVjdGlvbkN1c3RvbS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTI5LDYgKzI5LDggQEAKICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiVjhIVE1MQWxsQ29sbGVjdGlvbi5oIgorCiAjaW5jbHVkZSAiSFRNTEFsbENvbGxlY3Rpb24u
aCIKIAogI2luY2x1ZGUgIlY4QmluZGluZy5oIgpAQCAtODgsMTQgKzkwLDE0IEBACiAgICAgcmV0
dXJuIGdldE5hbWVkSXRlbXMoaW1wLCB2OFN0cmluZ1RvQXRvbWljV2ViQ29yZVN0cmluZyhuYW1l
KSk7CiB9CiAKLUNBTExCQUNLX0ZVTkNfREVDTChIVE1MQWxsQ29sbGVjdGlvbkl0ZW0pCit2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gVjhIVE1MQWxsQ29sbGVjdGlvbjo6aXRlbUNhbGxiYWNrKGNvbnN0
IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgSU5DX1NUQVRTKCJET00uSFRNTEFsbENvbGxl
Y3Rpb24uaXRlbSgpIik7CiAgICAgSFRNTEFsbENvbGxlY3Rpb24qIGltcCA9IFY4RE9NV3JhcHBl
cjo6Y29udmVydFRvTmF0aXZlT2JqZWN0PEhUTUxBbGxDb2xsZWN0aW9uPihWOENsYXNzSW5kZXg6
OkhUTUxBTExDT0xMRUNUSU9OLCBhcmdzLkhvbGRlcigpKTsKICAgICByZXR1cm4gZ2V0SXRlbShp
bXAsIGFyZ3NbMF0pOwogfQogCi1DQUxMQkFDS19GVU5DX0RFQ0woSFRNTEFsbENvbGxlY3Rpb25O
YW1lZEl0ZW0pCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhIVE1MQWxsQ29sbGVjdGlvbjo6bmFt
ZWRJdGVtQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBJTkNfU1RB
VFMoIkRPTS5IVE1MQWxsQ29sbGVjdGlvbi5uYW1lZEl0ZW0oKSIpOwogICAgIEhUTUxBbGxDb2xs
ZWN0aW9uKiBpbXAgPSBWOERPTVdyYXBwZXI6OmNvbnZlcnRUb05hdGl2ZU9iamVjdDxIVE1MQWxs
Q29sbGVjdGlvbj4oVjhDbGFzc0luZGV4OjpIVE1MQUxMQ09MTEVDVElPTiwgYXJncy5Ib2xkZXIo
KSk7CkBAIC0xMDcsNyArMTA5LDcgQEAKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1DQUxMQkFD
S19GVU5DX0RFQ0woSFRNTEFsbENvbGxlY3Rpb25DYWxsQXNGdW5jdGlvbikKK3Y4OjpIYW5kbGU8
djg6OlZhbHVlPiBWOEhUTUxBbGxDb2xsZWN0aW9uOjpjYWxsQXNGdW5jdGlvbkNhbGxiYWNrKGNv
bnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgSU5DX1NUQVRTKCJET00uSFRNTEFsbENv
bGxlY3Rpb24uY2FsbEFzRnVuY3Rpb24oKSIpOwogICAgIGlmIChhcmdzLkxlbmd0aCgpIDwgMSkK
SW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTENhbnZhc0VsZW1lbnRDdXN0
b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTENh
bnZhc0VsZW1lbnRDdXN0b20uY3BwCShyZXZpc2lvbiA1MjM0MSkKKysrIFdlYkNvcmUvYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4SFRNTENhbnZhc0VsZW1lbnRDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yOSwxMCArMjksMTAgQEAKICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVk
ZSAiSFRNTENhbnZhc0VsZW1lbnQuaCIKLSNpbmNsdWRlICJDYW52YXNSZW5kZXJpbmdDb250ZXh0
LmgiCisjaW5jbHVkZSAiVjhIVE1MQ2FudmFzRWxlbWVudC5oIgogCiAjaW5jbHVkZSAiQ2FudmFz
UmVuZGVyaW5nQ29udGV4dC5oIgorI2luY2x1ZGUgIkhUTUxDYW52YXNFbGVtZW50LmgiCiAjaW5j
bHVkZSAiVjhCaW5kaW5nLmgiCiAjaW5jbHVkZSAiVjhDdXN0b21CaW5kaW5nLmgiCiAjaW5jbHVk
ZSAiVjhOb2RlLmgiCkBAIC00MCw3ICs0MCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
Q0FMTEJBQ0tfRlVOQ19ERUNMKEhUTUxDYW52YXNFbGVtZW50R2V0Q29udGV4dCkKK3Y4OjpIYW5k
bGU8djg6OlZhbHVlPiBWOEhUTUxDYW52YXNFbGVtZW50OjpnZXRDb250ZXh0Q2FsbGJhY2soY29u
c3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBJTkNfU1RBVFMoIkRPTS5IVE1MQ2FudmFz
RWxlbWVudC5jb250ZXh0Iik7CiAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBob2xkZXIgPSBh
cmdzLkhvbGRlcigpOwpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhXZWJLaXRQ
b2ludENvbnN0cnVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1
c3RvbS9WOFdlYktpdFBvaW50Q29uc3RydWN0b3IuY3BwCShyZXZpc2lvbiA1MjM0MSkKKysrIFdl
YkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4V2ViS2l0UG9pbnRDb25zdHJ1Y3Rvci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTQxLDcgKzQxLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1D
QUxMQkFDS19GVU5DX0RFQ0woV2ViS2l0UG9pbnRDb25zdHJ1Y3RvcikKK3Y4OjpIYW5kbGU8djg6
OlZhbHVlPiBWOEN1c3RvbTo6djhXZWJLaXRQb2ludENvbnN0cnVjdG9yQ2FsbGJhY2soY29uc3Qg
djg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBJTkNfU1RBVFMoIkRPTS5XZWJLaXRQb2ludC5D
b25zdHJ1Y3RvciIpOwogICAgIGZsb2F0IHggPSAwOwpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy92
OC9jdXN0b20vVjhEb2N1bWVudEN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5k
aW5ncy92OC9jdXN0b20vVjhEb2N1bWVudEN1c3RvbS5jcHAJKHJldmlzaW9uIDUyMzQxKQorKysg
V2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhEb2N1bWVudEN1c3RvbS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTI5LDkgKzI5LDEwIEBACiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgotI2lu
Y2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiVjhEb2N1bWVudC5oIgogCiAjaW5jbHVkZSAi
Q2FudmFzUmVuZGVyaW5nQ29udGV4dC5oIgorI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVk
ZSAiRXhjZXB0aW9uQ29kZS5oIgogI2luY2x1ZGUgIk5vZGUuaCIKICNpbmNsdWRlICJYUGF0aE5T
UmVzb2x2ZXIuaCIKQEAgLTUwLDcgKzUxLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1D
QUxMQkFDS19GVU5DX0RFQ0woRG9jdW1lbnRFdmFsdWF0ZSkKK3Y4OjpIYW5kbGU8djg6OlZhbHVl
PiBWOERvY3VtZW50OjpldmFsdWF0ZUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3Mp
CiB7CiAgICAgSU5DX1NUQVRTKCJET00uRG9jdW1lbnQuZXZhbHVhdGUoKSIpOwogCkBAIC04MSw3
ICs4Miw3IEBACiAgICAgcmV0dXJuIFY4RE9NV3JhcHBlcjo6Y29udmVydFRvVjhPYmplY3QoVjhD
bGFzc0luZGV4OjpYUEFUSFJFU1VMVCwgcmVzdWx0LnJlbGVhc2UoKSk7CiB9CiAKLUNBTExCQUNL
X0ZVTkNfREVDTChEb2N1bWVudEdldENTU0NhbnZhc0NvbnRleHQpCit2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gVjhEb2N1bWVudDo6Z2V0Q1NTQ2FudmFzQ29udGV4dENhbGxiYWNrKGNvbnN0IHY4OjpB
cmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgSU5DX1NUQVRTKCJET00uRG9jdW1lbnQuZ2V0Q1NTQ2Fu
dmFzQ29udGV4dCIpOwogICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gaG9sZGVyID0gYXJncy5I
b2xkZXIoKTsKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4V29ya2VyQ29udGV4
dEN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhX
b3JrZXJDb250ZXh0Q3VzdG9tLmNwcAkocmV2aXNpb24gNTIzNDEpCisrKyBXZWJDb3JlL2JpbmRp
bmdzL3Y4L2N1c3RvbS9WOFdvcmtlckNvbnRleHRDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAKICNpZiBFTkFCTEUoV09SS0VS
UykKKyNpbmNsdWRlICJWOFdvcmtlckNvbnRleHQuaCIKIAogI2luY2x1ZGUgIkRPTVRpbWVyLmgi
CiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgpAQCAtOTQsNyArOTUsNyBAQAogICAgIHJldHVy
biB2ODo6SW50ZWdlcjo6TmV3KHRpbWVySWQpOwogfQogCi1DQUxMQkFDS19GVU5DX0RFQ0woV29y
a2VyQ29udGV4dEltcG9ydFNjcmlwdHMpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhXb3JrZXJD
b250ZXh0OjppbXBvcnRTY3JpcHRzQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykK
IHsKICAgICBJTkNfU1RBVFMoTCJET00uV29ya2VyQ29udGV4dC5pbXBvcnRTY3JpcHRzKCkiKTsK
ICAgICBpZiAoIWFyZ3MuTGVuZ3RoKCkpCkBAIC0xMjgsMTkgKzEyOSwxOSBAQAogICAgIHJldHVy
biB2ODo6VW5kZWZpbmVkKCk7CiB9CiAKLUNBTExCQUNLX0ZVTkNfREVDTChXb3JrZXJDb250ZXh0
U2V0VGltZW91dCkKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFdvcmtlckNvbnRleHQ6OnNldFRp
bWVvdXRDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAgIElOQ19TVEFU
UyhMIkRPTS5Xb3JrZXJDb250ZXh0LnNldFRpbWVvdXQoKSIpOwogICAgIHJldHVybiBTZXRUaW1l
b3V0T3JJbnRlcnZhbChhcmdzLCB0cnVlKTsKIH0KIAotQ0FMTEJBQ0tfRlVOQ19ERUNMKFdvcmtl
ckNvbnRleHRTZXRJbnRlcnZhbCkKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFdvcmtlckNvbnRl
eHQ6OnNldEludGVydmFsQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAg
ICBJTkNfU1RBVFMoTCJET00uV29ya2VyQ29udGV4dC5zZXRJbnRlcnZhbCgpIik7CiAgICAgcmV0
dXJuIFNldFRpbWVvdXRPckludGVydmFsKGFyZ3MsIGZhbHNlKTsKIH0KIAotQ0FMTEJBQ0tfRlVO
Q19ERUNMKFdvcmtlckNvbnRleHRBZGRFdmVudExpc3RlbmVyKQordjg6OkhhbmRsZTx2ODo6VmFs
dWU+IFY4V29ya2VyQ29udGV4dDo6YWRkRXZlbnRMaXN0ZW5lckNhbGxiYWNrKGNvbnN0IHY4OjpB
cmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgSU5DX1NUQVRTKEwiRE9NLldvcmtlckNvbnRleHQuYWRk
RXZlbnRMaXN0ZW5lcigpIik7CiAgICAgV29ya2VyQ29udGV4dCogd29ya2VyQ29udGV4dCA9IFY4
RE9NV3JhcHBlcjo6Y29udmVydERPTVdyYXBwZXJUb05hdGl2ZTxXb3JrZXJDb250ZXh0Pihhcmdz
LkhvbGRlcigpKTsKQEAgLTE1Niw3ICsxNTcsNyBAQAogICAgIHJldHVybiB2ODo6VW5kZWZpbmVk
KCk7CiB9CiAKLUNBTExCQUNLX0ZVTkNfREVDTChXb3JrZXJDb250ZXh0UmVtb3ZlRXZlbnRMaXN0
ZW5lcikKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFdvcmtlckNvbnRleHQ6OnJlbW92ZUV2ZW50
TGlzdGVuZXJDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAgIElOQ19T
VEFUUyhMIkRPTS5Xb3JrZXJDb250ZXh0LnJlbW92ZUV2ZW50TGlzdGVuZXIoKSIpOwogICAgIFdv
cmtlckNvbnRleHQqIHdvcmtlckNvbnRleHQgPSBWOERPTVdyYXBwZXI6OmNvbnZlcnRET01XcmFw
cGVyVG9OYXRpdmU8V29ya2VyQ29udGV4dD4oYXJncy5Ib2xkZXIoKSk7CkluZGV4OiBXZWJDb3Jl
L2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxDb2xsZWN0aW9uQ3VzdG9tLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxDb2xsZWN0aW9uQ3VzdG9tLmNw
cAkocmV2aXNpb24gNTIzNDEpCisrKyBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxD
b2xsZWN0aW9uQ3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjksOCArMjksOSBAQAogICov
CiAKICNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJWOEhUTUxDb2xsZWN0aW9uLmgiCisK
ICNpbmNsdWRlICJIVE1MQ29sbGVjdGlvbi5oIgotCiAjaW5jbHVkZSAiVjhCaW5kaW5nLmgiCiAj
aW5jbHVkZSAiVjhDdXN0b21CaW5kaW5nLmgiCiAjaW5jbHVkZSAiVjhOYW1lZE5vZGVzQ29sbGVj
dGlvbi5oIgpAQCAtODgsMTQgKzg5LDE0IEBACiAgICAgcmV0dXJuIGdldE5hbWVkSXRlbXMoaW1w
LCB2OFN0cmluZ1RvQXRvbWljV2ViQ29yZVN0cmluZyhuYW1lKSk7CiB9CiAKLUNBTExCQUNLX0ZV
TkNfREVDTChIVE1MQ29sbGVjdGlvbkl0ZW0pCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhIVE1M
Q29sbGVjdGlvbjo6aXRlbUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAg
ICAgSU5DX1NUQVRTKCJET00uSFRNTENvbGxlY3Rpb24uaXRlbSgpIik7CiAgICAgSFRNTENvbGxl
Y3Rpb24qIGltcCA9IFY4RE9NV3JhcHBlcjo6Y29udmVydFRvTmF0aXZlT2JqZWN0PEhUTUxDb2xs
ZWN0aW9uPihWOENsYXNzSW5kZXg6OkhUTUxDT0xMRUNUSU9OLCBhcmdzLkhvbGRlcigpKTsKICAg
ICByZXR1cm4gZ2V0SXRlbShpbXAsIGFyZ3NbMF0pOwogfQogCi1DQUxMQkFDS19GVU5DX0RFQ0wo
SFRNTENvbGxlY3Rpb25OYW1lZEl0ZW0pCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhIVE1MQ29s
bGVjdGlvbjo6bmFtZWRJdGVtQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsK
ICAgICBJTkNfU1RBVFMoIkRPTS5IVE1MQ29sbGVjdGlvbi5uYW1lZEl0ZW0oKSIpOwogICAgIEhU
TUxDb2xsZWN0aW9uKiBpbXAgPSBWOERPTVdyYXBwZXI6OmNvbnZlcnRUb05hdGl2ZU9iamVjdDxI
VE1MQ29sbGVjdGlvbj4oVjhDbGFzc0luZGV4OjpIVE1MQ09MTEVDVElPTiwgYXJncy5Ib2xkZXIo
KSk7CkBAIC0xMDcsNyArMTA4LDcgQEAKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1DQUxMQkFD
S19GVU5DX0RFQ0woSFRNTENvbGxlY3Rpb25DYWxsQXNGdW5jdGlvbikKK3Y4OjpIYW5kbGU8djg6
OlZhbHVlPiBWOEhUTUxDb2xsZWN0aW9uOjpjYWxsQXNGdW5jdGlvbkNhbGxiYWNrKGNvbnN0IHY4
OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgSU5DX1NUQVRTKCJET00uSFRNTENvbGxlY3Rpb24u
Y2FsbEFzRnVuY3Rpb24oKSIpOwogICAgIGlmIChhcmdzLkxlbmd0aCgpIDwgMSkKQEAgLTEzNyw0
ICsxMzgsNSBAQAogICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CiB9CiAKKwogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MT3B0
aW9uRWxlbWVudENvbnN0cnVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdz
L3Y4L2N1c3RvbS9WOEhUTUxPcHRpb25FbGVtZW50Q29uc3RydWN0b3IuY3BwCShyZXZpc2lvbiA1
MjM0MSkKKysrIFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTE9wdGlvbkVsZW1lbnRD
b25zdHJ1Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYyLDcgKzYyLDcgQEAKICAgICByZXR1
cm4gY2FjaGVkVGVtcGxhdGU7CiB9CiAKLUNBTExCQUNLX0ZVTkNfREVDTChIVE1MT3B0aW9uRWxl
bWVudENvbnN0cnVjdG9yKQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4Q3VzdG9tOjp2OEhUTUxP
cHRpb25FbGVtZW50Q29uc3RydWN0b3JDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdz
KQogewogICAgIElOQ19TVEFUUygiRE9NLkhUTUxPcHRpb25FbGVtZW50LkNvbnRydWN0b3IiKTsK
IApJbmRleDogV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhXZWJHTEJ5dGVBcnJheUN1c3Rv
bS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhXZWJHTEJ5
dGVBcnJheUN1c3RvbS5jcHAJKHJldmlzaW9uIDUyMzQxKQorKysgV2ViQ29yZS9iaW5kaW5ncy92
OC9jdXN0b20vVjhXZWJHTEJ5dGVBcnJheUN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ0
LDcgKzQ0LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1DQUxMQkFDS19GVU5DX0RFQ0wo
V2ViR0xCeXRlQXJyYXlDb25zdHJ1Y3RvcikKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEN1c3Rv
bTo6djhXZWJHTEJ5dGVBcnJheUNvbnN0cnVjdG9yQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50
cyYgYXJncykKIHsKICAgICBJTkNfU1RBVFMoIkRPTS5XZWJHTEJ5dGVBcnJheS5Db250cnVjdG9y
Iik7CiAKQEAgLTc5LDEzICs3OSwxMyBAQAogICAgIHJldHVybiB2YWx1ZTsKIH0KIAotQ0FMTEJB
Q0tfRlVOQ19ERUNMKFdlYkdMQnl0ZUFycmF5R2V0KQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4
V2ViR0xCeXRlQXJyYXk6OmdldENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7
CiAgICAgSU5DX1NUQVRTKCJET00uV2ViR0xCeXRlQXJyYXkuZ2V0KCkiKTsKICAgICByZXR1cm4g
Z2V0V2ViR0xBcnJheUVsZW1lbnQ8V2ViR0xCeXRlQXJyYXksIHNpZ25lZCBjaGFyPihhcmdzLCBW
OENsYXNzSW5kZXg6OldFQkdMQllURUFSUkFZKTsKIH0KIAotQ0FMTEJBQ0tfRlVOQ19ERUNMKFdl
YkdMQnl0ZUFycmF5U2V0KQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4V2ViR0xCeXRlQXJyYXk6
OnNldENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgSU5DX1NUQVRT
KCJET00uV2ViR0xCeXRlQXJyYXkuc2V0KCkiKTsKICAgICByZXR1cm4gc2V0V2ViR0xBcnJheTxX
ZWJHTEJ5dGVBcnJheSwgVjhXZWJHTEJ5dGVBcnJheT4oYXJncywgVjhDbGFzc0luZGV4OjpXRUJH
TEJZVEVBUlJBWSk7CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE5vZGVDdXN0
b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Tm9kZUN1
c3RvbS5jcHAJKHJldmlzaW9uIDUyMzQxKQorKysgV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20v
VjhOb2RlQ3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDUsNyArNDUsNyBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLUNBTExCQUNLX0ZVTkNfREVDTChOb2RlQWRkRXZlbnRMaXN0ZW5l
cikKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOE5vZGU6OmFkZEV2ZW50TGlzdGVuZXJDYWxsYmFj
ayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAgIElOQ19TVEFUUygiRE9NLk5vZGUu
YWRkRXZlbnRMaXN0ZW5lcigpIik7CiAgICAgTm9kZSogbm9kZSA9IFY4RE9NV3JhcHBlcjo6Y29u
dmVydERPTVdyYXBwZXJUb05vZGU8Tm9kZT4oYXJncy5Ib2xkZXIoKSk7CkBAIC02MCw3ICs2MCw3
IEBACiAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKIH0KIAotQ0FMTEJBQ0tfRlVOQ19ERUNM
KE5vZGVSZW1vdmVFdmVudExpc3RlbmVyKQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4Tm9kZTo6
cmVtb3ZlRXZlbnRMaXN0ZW5lckNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7
CiAgICAgSU5DX1NUQVRTKCJET00uTm9kZS5yZW1vdmVFdmVudExpc3RlbmVyKCkiKTsKICAgICBO
b2RlKiBub2RlID0gVjhET01XcmFwcGVyOjpjb252ZXJ0RE9NV3JhcHBlclRvTm9kZTxOb2RlPihh
cmdzLkhvbGRlcigpKTsKQEAgLTgwLDcgKzgwLDcgQEAKIH0KIAogLy8gVGhpcyBmdW5jdGlvbiBp
cyBjdXN0b21pemVkIHRvIHRha2UgYWR2YW50YWdlIG9mIHRoZSBvcHRpb25hbCA0dGggYXJndW1l
bnQ6IHNob3VsZExhenlBdHRhY2gKLUNBTExCQUNLX0ZVTkNfREVDTChOb2RlSW5zZXJ0QmVmb3Jl
KQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4Tm9kZTo6aW5zZXJ0QmVmb3JlQ2FsbGJhY2soY29u
c3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBJTkNfU1RBVFMoIkRPTS5Ob2RlLmluc2Vy
dEJlZm9yZSIpOwogICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gaG9sZGVyID0gYXJncy5Ib2xk
ZXIoKTsKQEAgLTk5LDcgKzk5LDcgQEAKIH0KIAogLy8gVGhpcyBmdW5jdGlvbiBpcyBjdXN0b21p
emVkIHRvIHRha2UgYWR2YW50YWdlIG9mIHRoZSBvcHRpb25hbCA0dGggYXJndW1lbnQ6IHNob3Vs
ZExhenlBdHRhY2gKLUNBTExCQUNLX0ZVTkNfREVDTChOb2RlUmVwbGFjZUNoaWxkKQordjg6Okhh
bmRsZTx2ODo6VmFsdWU+IFY4Tm9kZTo6cmVwbGFjZUNoaWxkQ2FsbGJhY2soY29uc3Qgdjg6OkFy
Z3VtZW50cyYgYXJncykKIHsKICAgICBJTkNfU1RBVFMoIkRPTS5Ob2RlLnJlcGxhY2VDaGlsZCIp
OwogICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gaG9sZGVyID0gYXJncy5Ib2xkZXIoKTsKQEAg
LTExNyw3ICsxMTcsNyBAQAogICAgIHJldHVybiB2ODo6TnVsbCgpOwogfQogCi1DQUxMQkFDS19G
VU5DX0RFQ0woTm9kZVJlbW92ZUNoaWxkKQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4Tm9kZTo6
cmVtb3ZlQ2hpbGRDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAgIElO
Q19TVEFUUygiRE9NLk5vZGUucmVtb3ZlQ2hpbGQiKTsKICAgICB2ODo6SGFuZGxlPHY4OjpPYmpl
Y3Q+IGhvbGRlciA9IGFyZ3MuSG9sZGVyKCk7CkBAIC0xMzUsNyArMTM1LDcgQEAKIH0KIAogLy8g
VGhpcyBmdW5jdGlvbiBpcyBjdXN0b21pemVkIHRvIHRha2UgYWR2YW50YWdlIG9mIHRoZSBvcHRp
b25hbCA0dGggYXJndW1lbnQ6IHNob3VsZExhenlBdHRhY2gKLUNBTExCQUNLX0ZVTkNfREVDTChO
b2RlQXBwZW5kQ2hpbGQpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhOb2RlOjphcHBlbmRDaGls
ZENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgSU5DX1NUQVRTKCJE
T00uTm9kZS5hcHBlbmRDaGlsZCIpOwogICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gaG9sZGVy
ID0gYXJncy5Ib2xkZXIoKTsKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4TWVz
c2FnZUV2ZW50Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1
c3RvbS9WOE1lc3NhZ2VFdmVudEN1c3RvbS5jcHAJKHJldmlzaW9uIDUyMzQxKQorKysgV2ViQ29y
ZS9iaW5kaW5ncy92OC9jdXN0b20vVjhNZXNzYWdlRXZlbnRDdXN0b20uY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yOSw2ICsyOSw4IEBACiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIlY4TWVzc2FnZUV2ZW50LmgiCisKICNpbmNsdWRlICJNZXNzYWdlRXZlbnQuaCIKICNpbmNs
dWRlICJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKIApAQCAtNTYsNyArNTgsNyBAQAogICAgIHJl
dHVybiBwb3J0QXJyYXk7CiB9CiAKLUNBTExCQUNLX0ZVTkNfREVDTChNZXNzYWdlRXZlbnRJbml0
TWVzc2FnZUV2ZW50KQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4TWVzc2FnZUV2ZW50Ojppbml0
TWVzc2FnZUV2ZW50Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBJ
TkNfU1RBVFMoIkRPTS5NZXNzYWdlRXZlbnQuaW5pdE1lc3NhZ2VFdmVudCIpOwogICAgIE1lc3Nh
Z2VFdmVudCogZXZlbnQgPSBWOERPTVdyYXBwZXI6OmNvbnZlcnRUb05hdGl2ZU9iamVjdDxNZXNz
YWdlRXZlbnQ+KFY4Q2xhc3NJbmRleDo6TUVTU0FHRUVWRU5ULCBhcmdzLkhvbGRlcigpKTsKSW5k
ZXg6IFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTEltYWdlRWxlbWVudENvbnN0cnVj
dG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxJ
bWFnZUVsZW1lbnRDb25zdHJ1Y3Rvci5jcHAJKHJldmlzaW9uIDUyMzQxKQorKysgV2ViQ29yZS9i
aW5kaW5ncy92OC9jdXN0b20vVjhIVE1MSW1hZ2VFbGVtZW50Q29uc3RydWN0b3IuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC02MSw3ICs2MSw3IEBACiAgICAgcmV0dXJuIGNhY2hlZFRlbXBsYXRlOwog
fQogCi1DQUxMQkFDS19GVU5DX0RFQ0woSFRNTEltYWdlRWxlbWVudENvbnN0cnVjdG9yKQordjg6
OkhhbmRsZTx2ODo6VmFsdWU+IFY4Q3VzdG9tOjp2OEhUTUxJbWFnZUVsZW1lbnRDb25zdHJ1Y3Rv
ckNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgSU5DX1NUQVRTKCJE
T00uSFRNTEltYWdlRWxlbWVudC5Db250cnVjdG9yIik7CiAKSW5kZXg6IFdlYkNvcmUvYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4U1FMUmVzdWx0U2V0Um93TGlzdEN1c3RvbS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhTUUxSZXN1bHRTZXRSb3dMaXN0Q3VzdG9t
LmNwcAkocmV2aXNpb24gNTIzNDEpCisrKyBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFNR
TFJlc3VsdFNldFJvd0xpc3RDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2ICszMSw3
IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAKICNpZiBFTkFCTEUoREFUQUJBU0UpCisjaW5jbHVk
ZSAiVjhTUUxSZXN1bHRTZXRSb3dMaXN0LmgiCiAKICNpbmNsdWRlICJTUUxSZXN1bHRTZXRSb3dM
aXN0LmgiCiAjaW5jbHVkZSAiVjhCaW5kaW5nLmgiCkBAIC0zOSw3ICs0MCw3IEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotQ0FMTEJBQ0tfRlVOQ19ERUNMKFNRTFJlc3VsdFNldFJvd0xpc3RJ
dGVtKQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4U1FMUmVzdWx0U2V0Um93TGlzdDo6aXRlbUNh
bGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgSU5DX1NUQVRTKCJET00u
U1FMUmVzdWx0U2V0Um93TGlzdC5pdGVtKCkiKTsKIApJbmRleDogV2ViQ29yZS9iaW5kaW5ncy92
OC9jdXN0b20vVjhOb2RlSXRlcmF0b3JDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
YmluZGluZ3MvdjgvY3VzdG9tL1Y4Tm9kZUl0ZXJhdG9yQ3VzdG9tLmNwcAkocmV2aXNpb24gNTIz
NDEpCisrKyBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE5vZGVJdGVyYXRvckN1c3RvbS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDggKzI5LDkgQEAKICAqLwogCiAjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiVjhOb2RlSXRlcmF0b3IuaCIKKwogI2luY2x1ZGUgIk5vZGVJdGVy
YXRvci5oIgotCiAjaW5jbHVkZSAiU2NyaXB0U3RhdGUuaCIKIAogI2luY2x1ZGUgIlY4QmluZGlu
Zy5oIgpAQCAtNTYsNyArNTcsNyBAQAogICAgIHJldHVybiBWOERPTVdyYXBwZXI6OmNvbnZlcnRO
b2RlVG9WOE9iamVjdChvYmplY3QpOwogfQogCi1DQUxMQkFDS19GVU5DX0RFQ0woTm9kZUl0ZXJh
dG9yTmV4dE5vZGUpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhOb2RlSXRlcmF0b3I6Om5leHRO
b2RlQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBJTkNfU1RBVFMo
IkRPTS5Ob2RlSXRlcmF0b3IubmV4dE5vZGUoKSIpOwogICAgIE5vZGVJdGVyYXRvciogbm9kZUl0
ZXJhdG9yID0gVjhET01XcmFwcGVyOjpjb252ZXJ0VG9OYXRpdmVPYmplY3Q8Tm9kZUl0ZXJhdG9y
PihWOENsYXNzSW5kZXg6Ok5PREVJVEVSQVRPUiwgYXJncy5Ib2xkZXIoKSk7CkBAIC02Nyw3ICs2
OCw3IEBACiAgICAgcmV0dXJuIHRvVjgocmVzdWx0LnJlbGVhc2UoKSwgZWMsICZzdGF0ZSk7CiB9
CiAKLUNBTExCQUNLX0ZVTkNfREVDTChOb2RlSXRlcmF0b3JQcmV2aW91c05vZGUpCit2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gVjhOb2RlSXRlcmF0b3I6OnByZXZpb3VzTm9kZUNhbGxiYWNrKGNvbnN0
IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgSU5DX1NUQVRTKCJET00uTm9kZUl0ZXJhdG9y
LnByZXZpb3VzTm9kZSgpIik7CiAgICAgTm9kZUl0ZXJhdG9yKiBub2RlSXRlcmF0b3IgPSBWOERP
TVdyYXBwZXI6OmNvbnZlcnRUb05hdGl2ZU9iamVjdDxOb2RlSXRlcmF0b3I+KFY4Q2xhc3NJbmRl
eDo6Tk9ERUlURVJBVE9SLCBhcmdzLkhvbGRlcigpKTsKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3Mv
djgvY3VzdG9tL1Y4U1ZHTGVuZ3RoQ3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Jp
bmRpbmdzL3Y4L2N1c3RvbS9WOFNWR0xlbmd0aEN1c3RvbS5jcHAJKHJldmlzaW9uIDUyMzQxKQor
KysgV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhTVkdMZW5ndGhDdXN0b20uY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMiw2ICszMiw4IEBACiAKICNpZiBFTkFCTEUoU1ZHKQogCisjaW5jbHVk
ZSAiVjhTVkdMZW5ndGguaCIKKwogI2luY2x1ZGUgIlNWR0xlbmd0aC5oIgogCiAjaW5jbHVkZSAi
VjhCaW5kaW5nLmgiCkBAIC00OSw3ICs1MSw3IEBACiAgICAgcmV0dXJuIHY4OjpOdW1iZXI6Ok5l
dyhpbXAudmFsdWUoVjhQcm94eTo6c3ZnQ29udGV4dCh3cmFwcGVyKSkpOwogfQogCi1DQUxMQkFD
S19GVU5DX0RFQ0woU1ZHTGVuZ3RoQ29udmVydFRvU3BlY2lmaWVkVW5pdHMpCit2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gVjhTVkdMZW5ndGg6OmNvbnZlcnRUb1NwZWNpZmllZFVuaXRzQ2FsbGJhY2so
Y29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBJTkNfU1RBVFMoIkRPTS5TVkdMZW5n
dGguY29udmVydFRvU3BlY2lmaWVkVW5pdHMiKTsKICAgICBWOFNWR1BPRFR5cGVXcmFwcGVyPFNW
R0xlbmd0aD4qIHdyYXBwZXIgPSBWOERPTVdyYXBwZXI6OmNvbnZlcnRUb05hdGl2ZU9iamVjdDxW
OFNWR1BPRFR5cGVXcmFwcGVyPFNWR0xlbmd0aD4gPihWOENsYXNzSW5kZXg6OlNWR0xFTkdUSCwg
YXJncy5Ib2xkZXIoKSk7CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxE
b2N1bWVudEN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0
b20vVjhIVE1MRG9jdW1lbnRDdXN0b20uY3BwCShyZXZpc2lvbiA1MjM0MSkKKysrIFdlYkNvcmUv
YmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTERvY3VtZW50Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjksMTAgKzI5LDExIEBACiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1
ZGUgIkhUTUxEb2N1bWVudC5oIgorI2luY2x1ZGUgIlY4SFRNTERvY3VtZW50LmgiCiAKICNpbmNs
dWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkhUTUxBbGxDb2xsZWN0aW9uLmgiCisjaW5jbHVkZSAi
SFRNTERvY3VtZW50LmgiCiAjaW5jbHVkZSAiSFRNTENvbGxlY3Rpb24uaCIKICNpbmNsdWRlICJI
VE1MSUZyYW1lRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgpAQCAtMTE1LDcgKzEx
Niw3IEBACiAgICAgcmV0dXJuIHN0cjsKIH0KIAotQ0FMTEJBQ0tfRlVOQ19ERUNMKEhUTUxEb2N1
bWVudFdyaXRlKQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SFRNTERvY3VtZW50Ojp3cml0ZUNh
bGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgSU5DX1NUQVRTKCJET00u
SFRNTERvY3VtZW50LndyaXRlKCkiKTsKICAgICBIVE1MRG9jdW1lbnQqIGh0bWxEb2N1bWVudCA9
IFY4RE9NV3JhcHBlcjo6Y29udmVydERPTVdyYXBwZXJUb05vZGU8SFRNTERvY3VtZW50Pihhcmdz
LkhvbGRlcigpKTsKQEAgLTEyNCw3ICsxMjUsNyBAQAogICAgIHJldHVybiB2ODo6VW5kZWZpbmVk
KCk7CiB9CiAKLUNBTExCQUNLX0ZVTkNfREVDTChIVE1MRG9jdW1lbnRXcml0ZWxuKQordjg6Okhh
bmRsZTx2ODo6VmFsdWU+IFY4SFRNTERvY3VtZW50Ojp3cml0ZWxuQ2FsbGJhY2soY29uc3Qgdjg6
OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBJTkNfU1RBVFMoIkRPTS5IVE1MRG9jdW1lbnQud3Jp
dGVsbigpIik7CiAgICAgSFRNTERvY3VtZW50KiBodG1sRG9jdW1lbnQgPSBWOERPTVdyYXBwZXI6
OmNvbnZlcnRET01XcmFwcGVyVG9Ob2RlPEhUTUxEb2N1bWVudD4oYXJncy5Ib2xkZXIoKSk7CkBA
IC0xMzMsNyArMTM0LDcgQEAKICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwogfQogCi1DQUxM
QkFDS19GVU5DX0RFQ0woSFRNTERvY3VtZW50T3BlbikKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBW
OEhUTUxEb2N1bWVudDo6b3BlbkNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7
CiAgICAgSU5DX1NUQVRTKCJET00uSFRNTERvY3VtZW50Lm9wZW4oKSIpOwogICAgIEhUTUxEb2N1
bWVudCogaHRtbERvY3VtZW50ID0gVjhET01XcmFwcGVyOjpjb252ZXJ0RE9NV3JhcHBlclRvTm9k
ZTxIVE1MRG9jdW1lbnQ+KGFyZ3MuSG9sZGVyKCkpOwpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy92
OC9jdXN0b20vVjhDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRDdXN0b20uY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJE
Q3VzdG9tLmNwcAkocmV2aXNpb24gNTIzNDEpCisrKyBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTI5LDcgKzI5LDcgQEAKICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJELmgiCisjaW5jbHVkZSAiVjhDYW52YXNSZW5kZXJpbmdDb250
ZXh0MkQuaCIKIAogI2luY2x1ZGUgIkNhbnZhc0dyYWRpZW50LmgiCiAjaW5jbHVkZSAiQ2FudmFz
UGF0dGVybi5oIgpAQCAtMzksNiArMzksNyBAQAogCiAjaW5jbHVkZSAiVjhCaW5kaW5nLmgiCiAj
aW5jbHVkZSAiVjhDYW52YXNHcmFkaWVudC5oIgorI2luY2x1ZGUgIkNhbnZhc1JlbmRlcmluZ0Nv
bnRleHQyRC5oIgogI2luY2x1ZGUgIlY4Q2FudmFzUGF0dGVybi5oIgogI2luY2x1ZGUgIlY4Q3Vz
dG9tQmluZGluZy5oIgogI2luY2x1ZGUgIlY4SFRNTENhbnZhc0VsZW1lbnQuaCIKQEAgLTk5LDcg
KzEwMCw3IEBACiAKIC8vIFRPRE86IFNldFN0cm9rZUNvbG9yIGFuZCBTZXRGaWxsQ29sb3IgYXJl
IHNpbWlsYXIgZXhjZXB0IGZ1bmN0aW9uIG5hbWVzLAogLy8gY29uc29saWRhdGUgdGhlbSBpbnRv
IG9uZS4KLUNBTExCQUNLX0ZVTkNfREVDTChDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRTZXRTdHJv
a2VDb2xvcikKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOENhbnZhc1JlbmRlcmluZ0NvbnRleHQy
RDo6c2V0U3Ryb2tlQ29sb3JDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewog
ICAgIElOQ19TVEFUUygiRE9NLkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5zZXRTdHJva2VDb2xv
cigpIik7CiAgICAgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEKiBjb250ZXh0ID0gVjhET01XcmFw
cGVyOjpjb252ZXJ0VG9OYXRpdmVPYmplY3Q8Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEPihWOENs
YXNzSW5kZXg6OkNBTlZBU1JFTkRFUklOR0NPTlRFWFQyRCwgYXJncy5Ib2xkZXIoKSk7CkBAIC0x
MjksNyArMTMwLDcgQEAKICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwogfQogCi1DQUxMQkFD
S19GVU5DX0RFQ0woQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEU2V0RmlsbENvbG9yKQordjg6Okhh
bmRsZTx2ODo6VmFsdWU+IFY4Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzZXRGaWxsQ29sb3JD
YWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAgIElOQ19TVEFUUygiRE9N
LkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5zZXRGaWxsQ29sb3IoKSIpOwogICAgIENhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyRCogY29udGV4dCA9IFY4RE9NV3JhcHBlcjo6Y29udmVydFRvTmF0aXZl
T2JqZWN0PENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRD4oVjhDbGFzc0luZGV4OjpDQU5WQVNSRU5E
RVJJTkdDT05URVhUMkQsIGFyZ3MuSG9sZGVyKCkpOwpAQCAtMTU5LDcgKzE2MCw3IEBACiAgICAg
cmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKIH0KIAotQ0FMTEJBQ0tfRlVOQ19ERUNMKENhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyRFN0cm9rZVJlY3QpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhDYW52
YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnN0cm9rZVJlY3RDYWxsYmFjayhjb25zdCB2ODo6QXJndW1l
bnRzJiBhcmdzKQogewogICAgIElOQ19TVEFUUygiRE9NLkNhbnZhc1JlbmRlcmluZ0NvbnRleHQy
RC5zdHJva2VSZWN0KCkiKTsKICAgICBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQqIGNvbnRleHQg
PSBWOERPTVdyYXBwZXI6OmNvbnZlcnRUb05hdGl2ZU9iamVjdDxDYW52YXNSZW5kZXJpbmdDb250
ZXh0MkQ+KFY4Q2xhc3NJbmRleDo6Q0FOVkFTUkVOREVSSU5HQ09OVEVYVDJELCBhcmdzLkhvbGRl
cigpKTsKQEAgLTE3NCw3ICsxNzUsOCBAQAogICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CiB9
CiAKLUNBTExCQUNLX0ZVTkNfREVDTChDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRTZXRTaGFkb3cp
CisKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c2V0
U2hhZG93Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBJTkNfU1RB
VFMoIkRPTS5DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuc2V0U2hhZG93KCkiKTsKICAgICBDYW52
YXNSZW5kZXJpbmdDb250ZXh0MkQqIGNvbnRleHQgPSBWOERPTVdyYXBwZXI6OmNvbnZlcnRUb05h
dGl2ZU9iamVjdDxDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ+KFY4Q2xhc3NJbmRleDo6Q0FOVkFT
UkVOREVSSU5HQ09OVEVYVDJELCBhcmdzLkhvbGRlcigpKTsKQEAgLTIwOSw3ICsyMTEsOCBAQAog
ICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CiB9CiAKLUNBTExCQUNLX0ZVTkNfREVDTChDYW52
YXNSZW5kZXJpbmdDb250ZXh0MkREcmF3SW1hZ2UpCisKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBW
OENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6ZHJhd0ltYWdlQ2FsbGJhY2soY29uc3Qgdjg6OkFy
Z3VtZW50cyYgYXJncykKIHsKICAgICBJTkNfU1RBVFMoIkRPTS5DYW52YXNSZW5kZXJpbmdDb250
ZXh0MkQuZHJhd0ltYWdlKCkiKTsKICAgICBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQqIGNvbnRl
eHQgPSBWOERPTVdyYXBwZXI6OmNvbnZlcnRUb05hdGl2ZU9iamVjdDxDYW52YXNSZW5kZXJpbmdD
b250ZXh0MkQ+KFY4Q2xhc3NJbmRleDo6Q0FOVkFTUkVOREVSSU5HQ09OVEVYVDJELCBhcmdzLkhv
bGRlcigpKTsKQEAgLTMxNCw3ICszMTcsOCBAQAogICAgIHJldHVybiBub3RIYW5kbGVkQnlJbnRl
cmNlcHRvcigpOwogfQogCi1DQUxMQkFDS19GVU5DX0RFQ0woQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDJERHJhd0ltYWdlRnJvbVJlY3QpCisKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOENhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyRDo6ZHJhd0ltYWdlRnJvbVJlY3RDYWxsYmFjayhjb25zdCB2ODo6QXJn
dW1lbnRzJiBhcmdzKQogewogICAgIElOQ19TVEFUUygiRE9NLkNhbnZhc1JlbmRlcmluZ0NvbnRl
eHQyRC5kcmF3SW1hZ2VGcm9tUmVjdCgpIik7CiAgICAgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJE
KiBjb250ZXh0ID0gVjhET01XcmFwcGVyOjpjb252ZXJ0VG9OYXRpdmVPYmplY3Q8Q2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJEPihWOENsYXNzSW5kZXg6OkNBTlZBU1JFTkRFUklOR0NPTlRFWFQyRCwg
YXJncy5Ib2xkZXIoKSk7CkBAIC0zMzAsNyArMzM0LDggQEAKICAgICByZXR1cm4gdjg6OlVuZGVm
aW5lZCgpOwogfQogCi1DQUxMQkFDS19GVU5DX0RFQ0woQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJE
Q3JlYXRlUGF0dGVybikKKwordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4Q2FudmFzUmVuZGVyaW5n
Q29udGV4dDJEOjpjcmVhdGVQYXR0ZXJuQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJn
cykKIHsKICAgICBJTkNfU1RBVFMoIkRPTS5DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3JlYXRl
UGF0dGVybigpIik7CiAgICAgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEKiBjb250ZXh0ID0gVjhE
T01XcmFwcGVyOjpjb252ZXJ0VG9OYXRpdmVPYmplY3Q8Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJE
PihWOENsYXNzSW5kZXg6OkNBTlZBU1JFTkRFUklOR0NPTlRFWFQyRCwgYXJncy5Ib2xkZXIoKSk7
CkBAIC0zNjMsNyArMzY4LDggQEAKICAgICByZXR1cm4gbm90SGFuZGxlZEJ5SW50ZXJjZXB0b3Io
KTsKIH0KIAotQ0FMTEJBQ0tfRlVOQ19ERUNMKENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREZpbGxU
ZXh0KQorCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6
OmZpbGxUZXh0Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBJTkNf
U1RBVFMoIkRPTS5DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuZmlsbFRleHQoKSIpOwogCkBAIC0z
OTAsNyArMzk2LDggQEAKICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwogfQogCi1DQUxMQkFD
S19GVU5DX0RFQ0woQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEU3Ryb2tlVGV4dCkKKwordjg6Okhh
bmRsZTx2ODo6VmFsdWU+IFY4Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzdHJva2VUZXh0Q2Fs
bGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBJTkNfU1RBVFMoIkRPTS5D
YW52YXNSZW5kZXJpbmdDb250ZXh0MkQuc3Ryb2tlVGV4dCgpIik7CiAgICAgQ2FudmFzUmVuZGVy
aW5nQ29udGV4dDJEKiBjb250ZXh0ID0gVjhET01XcmFwcGVyOjpjb252ZXJ0VG9OYXRpdmVPYmpl
Y3Q8Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEPihWOENsYXNzSW5kZXg6OkNBTlZBU1JFTkRFUklO
R0NPTlRFWFQyRCwgYXJncy5Ib2xkZXIoKSk7CkBAIC00MTYsNyArNDIzLDggQEAKICAgICByZXR1
cm4gdjg6OlVuZGVmaW5lZCgpOwogfQogCi1DQUxMQkFDS19GVU5DX0RFQ0woQ2FudmFzUmVuZGVy
aW5nQ29udGV4dDJEUHV0SW1hZ2VEYXRhKQorCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhDYW52
YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnB1dEltYWdlRGF0YUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1
bWVudHMmIGFyZ3MpCiB7CiAgICAgSU5DX1NUQVRTKCJET00uQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDJELnB1dEltYWdlRGF0YSgpIik7CiAKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9t
L1Y4WE1MSHR0cFJlcXVlc3RDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4WE1MSHR0cFJlcXVlc3RDdXN0b20uY3BwCShyZXZpc2lvbiA1MjM0MSkK
KysrIFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4WE1MSHR0cFJlcXVlc3RDdXN0b20uY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yOSw3ICsyOSw3IEBACiAgKi8KIAogI2luY2x1ZGUgImNvbmZp
Zy5oIgotI2luY2x1ZGUgIlhNTEh0dHBSZXF1ZXN0LmgiCisjaW5jbHVkZSAiVjhYTUxIdHRwUmVx
dWVzdC5oIgogCiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJWOEJpbmRpbmcuaCIKQEAg
LTQxLDYgKzQxLDcgQEAKICNpbmNsdWRlICJWOFV0aWxpdGllcy5oIgogI2luY2x1ZGUgIldvcmtl
ckNvbnRleHQuaCIKICNpbmNsdWRlICJXb3JrZXJDb250ZXh0RXhlY3V0aW9uUHJveHkuaCIKKyNp
bmNsdWRlICJYTUxIdHRwUmVxdWVzdC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTUx
LDcgKzUyLDcgQEAKICAgICByZXR1cm4geG1sSHR0cFJlcXVlc3QtPnJlc3BvbnNlVGV4dCgpLnY4
U3RyaW5nT3JOdWxsKCk7CiB9CiAKLUNBTExCQUNLX0ZVTkNfREVDTChYTUxIdHRwUmVxdWVzdEFk
ZEV2ZW50TGlzdGVuZXIpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhYTUxIdHRwUmVxdWVzdDo6
YWRkRXZlbnRMaXN0ZW5lckNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAg
ICAgSU5DX1NUQVRTKCJET00uWE1MSHR0cFJlcXVlc3QuYWRkRXZlbnRMaXN0ZW5lcigpIik7CiAg
ICAgWE1MSHR0cFJlcXVlc3QqIHhtbEh0dHBSZXF1ZXN0ID0gVjhET01XcmFwcGVyOjpjb252ZXJ0
VG9OYXRpdmVPYmplY3Q8WE1MSHR0cFJlcXVlc3Q+KFY4Q2xhc3NJbmRleDo6WE1MSFRUUFJFUVVF
U1QsIGFyZ3MuSG9sZGVyKCkpOwpAQCAtNjcsNyArNjgsNyBAQAogICAgIHJldHVybiB2ODo6VW5k
ZWZpbmVkKCk7CiB9CiAKLUNBTExCQUNLX0ZVTkNfREVDTChYTUxIdHRwUmVxdWVzdFJlbW92ZUV2
ZW50TGlzdGVuZXIpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhYTUxIdHRwUmVxdWVzdDo6cmVt
b3ZlRXZlbnRMaXN0ZW5lckNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAg
ICAgSU5DX1NUQVRTKCJET00uWE1MSHR0cFJlcXVlc3QucmVtb3ZlRXZlbnRMaXN0ZW5lcigpIik7
CiAgICAgWE1MSHR0cFJlcXVlc3QqIHhtbEh0dHBSZXF1ZXN0ID0gVjhET01XcmFwcGVyOjpjb252
ZXJ0VG9OYXRpdmVPYmplY3Q8WE1MSHR0cFJlcXVlc3Q+KFY4Q2xhc3NJbmRleDo6WE1MSFRUUFJF
UVVFU1QsIGFyZ3MuSG9sZGVyKCkpOwpAQCAtODQsNyArODUsNyBAQAogICAgIHJldHVybiB2ODo6
VW5kZWZpbmVkKCk7CiB9CiAKLUNBTExCQUNLX0ZVTkNfREVDTChYTUxIdHRwUmVxdWVzdE9wZW4p
Cit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhYTUxIdHRwUmVxdWVzdDo6b3BlbkNhbGxiYWNrKGNv
bnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgSU5DX1NUQVRTKCJET00uWE1MSHR0cFJl
cXVlc3Qub3BlbigpIik7CiAgICAgLy8gRm91ciBjYXNlczoKQEAgLTEzMyw3ICsxMzQsNyBAQAog
ICAgIHJldHVybiBWOERvY3VtZW50OjpIYXNJbnN0YW5jZSh2YWx1ZSkgfHwgVjhIVE1MRG9jdW1l
bnQ6Okhhc0luc3RhbmNlKHZhbHVlKTsKIH0KIAotQ0FMTEJBQ0tfRlVOQ19ERUNMKFhNTEh0dHBS
ZXF1ZXN0U2VuZCkKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFhNTEh0dHBSZXF1ZXN0OjpzZW5k
Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBJTkNfU1RBVFMoIkRP
TS5YTUxIdHRwUmVxdWVzdC5zZW5kKCkiKTsKICAgICBYTUxIdHRwUmVxdWVzdCogeG1sSHR0cFJl
cXVlc3QgPSBWOERPTVdyYXBwZXI6OmNvbnZlcnRUb05hdGl2ZU9iamVjdDxYTUxIdHRwUmVxdWVz
dD4oVjhDbGFzc0luZGV4OjpYTUxIVFRQUkVRVUVTVCwgYXJncy5Ib2xkZXIoKSk7CkBAIC0xNjMs
NyArMTY0LDggQEAKICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwogfQogCi1DQUxMQkFDS19G
VU5DX0RFQ0woWE1MSHR0cFJlcXVlc3RTZXRSZXF1ZXN0SGVhZGVyKSB7Cit2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gVjhYTUxIdHRwUmVxdWVzdDo6c2V0UmVxdWVzdEhlYWRlckNhbGxiYWNrKGNvbnN0
IHY4OjpBcmd1bWVudHMmIGFyZ3MpCit7CiAgICAgSU5DX1NUQVRTKCJET00uWE1MSHR0cFJlcXVl
c3Quc2V0UmVxdWVzdEhlYWRlcigpIik7CiAgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPCAyKQogICAg
ICAgICByZXR1cm4gdGhyb3dFcnJvcigiTm90IGVub3VnaCBhcmd1bWVudHMiLCBWOFByb3h5OjpT
eW50YXhFcnJvcik7CkBAIC0xNzgsNyArMTgwLDcgQEAKICAgICByZXR1cm4gdjg6OlVuZGVmaW5l
ZCgpOwogfQogCi1DQUxMQkFDS19GVU5DX0RFQ0woWE1MSHR0cFJlcXVlc3RHZXRSZXNwb25zZUhl
YWRlcikKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFhNTEh0dHBSZXF1ZXN0OjpnZXRSZXNwb25z
ZUhlYWRlckNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgSU5DX1NU
QVRTKCJET00uWE1MSHR0cFJlcXVlc3QuZ2V0UmVzcG9uc2VIZWFkZXIoKSIpOwogICAgIGlmIChh
cmdzLkxlbmd0aCgpIDwgMSkKQEAgLTE5Myw3ICsxOTUsNyBAQAogICAgIHJldHVybiB2OFN0cmlu
Z09yTnVsbChyZXN1bHQpOwogfQogCi1DQUxMQkFDS19GVU5DX0RFQ0woWE1MSHR0cFJlcXVlc3RP
dmVycmlkZU1pbWVUeXBlKQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4WE1MSHR0cFJlcXVlc3Q6
Om92ZXJyaWRlTWltZVR5cGVDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewog
ICAgIElOQ19TVEFUUygiRE9NLlhNTEh0dHBSZXF1ZXN0Lm92ZXJyaWRlTWltZVR5cGUoKSIpOwog
ICAgIGlmIChhcmdzLkxlbmd0aCgpIDwgMSkKQEAgLTIwNSw3ICsyMDcsNyBAQAogICAgIHJldHVy
biB2ODo6VW5kZWZpbmVkKCk7CiB9CiAKLUNBTExCQUNLX0ZVTkNfREVDTChYTUxIdHRwUmVxdWVz
dERpc3BhdGNoRXZlbnQpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhYTUxIdHRwUmVxdWVzdDo6
ZGlzcGF0Y2hFdmVudENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAg
SU5DX1NUQVRTKCJET00uWE1MSHR0cFJlcXVlc3QuZGlzcGF0Y2hFdmVudCgpIik7CiAgICAgcmV0
dXJuIHY4OjpVbmRlZmluZWQoKTsKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4
V2ViR0xVbnNpZ25lZFNob3J0QXJyYXlDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
YmluZGluZ3MvdjgvY3VzdG9tL1Y4V2ViR0xVbnNpZ25lZFNob3J0QXJyYXlDdXN0b20uY3BwCShy
ZXZpc2lvbiA1MjM0MSkKKysrIFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4V2ViR0xVbnNp
Z25lZFNob3J0QXJyYXlDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NCw3ICs0NCw3IEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotQ0FMTEJBQ0tfRlVOQ19ERUNMKFdlYkdMVW5zaWdu
ZWRTaG9ydEFycmF5Q29uc3RydWN0b3IpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhDdXN0b206
OnY4V2ViR0xVbnNpZ25lZFNob3J0QXJyYXlDb25zdHJ1Y3RvckNhbGxiYWNrKGNvbnN0IHY4OjpB
cmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgSU5DX1NUQVRTKCJET00uV2ViR0xVbnNpZ25lZFNob3J0
QXJyYXkuQ29udHJ1Y3RvciIpOwogCkBAIC03OSwxMyArNzksMTMgQEAKICAgICByZXR1cm4gdmFs
dWU7CiB9CiAKLUNBTExCQUNLX0ZVTkNfREVDTChXZWJHTFVuc2lnbmVkU2hvcnRBcnJheUdldCkK
K3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFdlYkdMVW5zaWduZWRTaG9ydEFycmF5OjpnZXRDYWxs
YmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAgIElOQ19TVEFUUygiRE9NLldl
YkdMVW5zaWduZWRTaG9ydEFycmF5LmdldCgpIik7CiAgICAgcmV0dXJuIGdldFdlYkdMQXJyYXlF
bGVtZW50PFdlYkdMVW5zaWduZWRTaG9ydEFycmF5LCB1bnNpZ25lZCBzaG9ydD4oYXJncywgVjhD
bGFzc0luZGV4OjpXRUJHTFVOU0lHTkVEU0hPUlRBUlJBWSk7CiB9CiAKLUNBTExCQUNLX0ZVTkNf
REVDTChXZWJHTFVuc2lnbmVkU2hvcnRBcnJheVNldCkKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBW
OFdlYkdMVW5zaWduZWRTaG9ydEFycmF5OjpzZXRDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRz
JiBhcmdzKQogewogICAgIElOQ19TVEFUUygiRE9NLldlYkdMVW5zaWduZWRTaG9ydEFycmF5LnNl
dCgpIik7CiAgICAgcmV0dXJuIHNldFdlYkdMQXJyYXk8V2ViR0xVbnNpZ25lZFNob3J0QXJyYXks
IFY4V2ViR0xVbnNpZ25lZFNob3J0QXJyYXk+KGFyZ3MsIFY4Q2xhc3NJbmRleDo6V0VCR0xVTlNJ
R05FRFNIT1JUQVJSQVkpOwpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhDdXN0
b21CaW5kaW5nLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhD
dXN0b21CaW5kaW5nLmgJKHJldmlzaW9uIDUyMzQxKQorKysgV2ViQ29yZS9iaW5kaW5ncy92OC9j
dXN0b20vVjhDdXN0b21CaW5kaW5nLmgJKHdvcmtpbmcgY29weSkKQEAgLTM2LDggKzM2LDYgQEAK
IAogc3RydWN0IE5QT2JqZWN0OwogCi0jZGVmaW5lIENBTExCQUNLX0ZVTkNfREVDTChOQU1FKSB2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhDdXN0b206OnY4IyNOQU1FIyNDYWxsYmFjayhjb25zdCB2
ODo6QXJndW1lbnRzJiBhcmdzKQotCiAjZGVmaW5lIEFDQ0VTU09SX0dFVFRFUihOQU1FKSBcCiAg
ICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4Q3VzdG9tOjp2OCMjTkFNRSMjQWNjZXNzb3JHZXR0
ZXIoIFwKICAgICAgICAgdjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nl
c3NvckluZm8mIGluZm8pCkBAIC0yNzQsOCArMjcyLDYgQEAKIAogICAgICAgICBERUNMQVJFX1BS
T1BFUlRZX0FDQ0VTU09SKERPTVdpbmRvd0V2ZW50SGFuZGxlcik7CiAKLSAgICAgICAgREVDTEFS
RV9DQUxMQkFDSyhIVE1MQ2FudmFzRWxlbWVudEdldENvbnRleHQpOwotCiAgICAgICAgIERFQ0xB
UkVfUFJPUEVSVFlfQUNDRVNTT1JfU0VUVEVSKEhUTUxGcmFtZUVsZW1lbnRTcmMpOwogICAgICAg
ICBERUNMQVJFX1BST1BFUlRZX0FDQ0VTU09SX1NFVFRFUihIVE1MRnJhbWVFbGVtZW50TG9jYXRp
b24pOwogICAgICAgICBERUNMQVJFX1BST1BFUlRZX0FDQ0VTU09SX1NFVFRFUihIVE1MSUZyYW1l
RWxlbWVudFNyYyk7CkBAIC0yODQsNyArMjgwLDYgQEAKIAogICAgICAgICBERUNMQVJFX1BST1BF
UlRZX0FDQ0VTU09SKEhUTUxPcHRpb25zQ29sbGVjdGlvbkxlbmd0aCk7CiAKLSAgICAgICAgREVD
TEFSRV9DQUxMQkFDSyhIVE1MSW5wdXRFbGVtZW50U2V0U2VsZWN0aW9uUmFuZ2UpOwogCiAgICAg
ICAgIERFQ0xBUkVfUFJPUEVSVFlfQUNDRVNTT1IoSFRNTElucHV0RWxlbWVudFNlbGVjdGlvblN0
YXJ0KTsKICAgICAgICAgREVDTEFSRV9QUk9QRVJUWV9BQ0NFU1NPUihIVE1MSW5wdXRFbGVtZW50
U2VsZWN0aW9uRW5kKTsKQEAgLTI5NSw0MyArMjkwLDEwIEBACiAgICAgICAgIERFQ0xBUkVfTkFN
RURfQUNDRVNTX0NIRUNLKEhpc3RvcnkpOwogICAgICAgICBERUNMQVJFX0lOREVYRURfQUNDRVNT
X0NIRUNLKExvY2F0aW9uKTsKIAotICAgICAgICBERUNMQVJFX0NBTExCQUNLKEhUTUxDb2xsZWN0
aW9uSXRlbSk7Ci0gICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soSFRNTENvbGxlY3Rpb25OYW1lZEl0
ZW0pOwotICAgICAgICBERUNMQVJFX0NBTExCQUNLKEhUTUxDb2xsZWN0aW9uQ2FsbEFzRnVuY3Rp
b24pOwotCi0gICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soSFRNTEFsbENvbGxlY3Rpb25JdGVtKTsK
LSAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhIVE1MQWxsQ29sbGVjdGlvbk5hbWVkSXRlbSk7Ci0g
ICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soSFRNTEFsbENvbGxlY3Rpb25DYWxsQXNGdW5jdGlvbik7
Ci0KLSAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhIVE1MU2VsZWN0RWxlbWVudFJlbW92ZSk7Ci0K
LSAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhIVE1MT3B0aW9uc0NvbGxlY3Rpb25SZW1vdmUpOwot
ICAgICAgICBERUNMQVJFX0NBTExCQUNLKEhUTUxPcHRpb25zQ29sbGVjdGlvbkFkZCk7Ci0KLSAg
ICAgICAgREVDTEFSRV9DQUxMQkFDSyhIVE1MRG9jdW1lbnRXcml0ZSk7Ci0gICAgICAgIERFQ0xB
UkVfQ0FMTEJBQ0soSFRNTERvY3VtZW50V3JpdGVsbik7Ci0gICAgICAgIERFQ0xBUkVfQ0FMTEJB
Q0soSFRNTERvY3VtZW50T3Blbik7CiAgICAgICAgIERFQ0xBUkVfUFJPUEVSVFlfQUNDRVNTT1Io
SFRNTERvY3VtZW50QWxsKTsKICAgICAgICAgREVDTEFSRV9OQU1FRF9QUk9QRVJUWV9HRVRURVIo
SFRNTERvY3VtZW50KTsKICAgICAgICAgREVDTEFSRV9OQU1FRF9QUk9QRVJUWV9ERUxFVEVSKEhU
TUxEb2N1bWVudCk7CiAKLSAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhEb2N1bWVudEV2YWx1YXRl
KTsKLSAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhEb2N1bWVudEdldENTU0NhbnZhc0NvbnRleHQp
OwotCi0gICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soRE9NV2luZG93QWRkRXZlbnRMaXN0ZW5lcik7
Ci0gICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soRE9NV2luZG93UmVtb3ZlRXZlbnRMaXN0ZW5lcik7
Ci0gICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soRE9NV2luZG93UG9zdE1lc3NhZ2UpOwotICAgICAg
ICBERUNMQVJFX0NBTExCQUNLKERPTVdpbmRvd1NldFRpbWVvdXQpOwotICAgICAgICBERUNMQVJF
X0NBTExCQUNLKERPTVdpbmRvd1NldEludGVydmFsKTsKLSAgICAgICAgREVDTEFSRV9DQUxMQkFD
SyhET01XaW5kb3dBdG9iKTsKLSAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhET01XaW5kb3dCdG9h
KTsKLSAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhET01XaW5kb3dOT1ApOwotICAgICAgICBERUNM
QVJFX0NBTExCQUNLKERPTVdpbmRvd1RvU3RyaW5nKTsKLSAgICAgICAgREVDTEFSRV9DQUxMQkFD
SyhET01XaW5kb3dTaG93TW9kYWxEaWFsb2cpOwotICAgICAgICBERUNMQVJFX0NBTExCQUNLKERP
TVdpbmRvd09wZW4pOwotICAgICAgICBERUNMQVJFX0NBTExCQUNLKERPTVdpbmRvd0NsZWFyVGlt
ZW91dCk7Ci0gICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soRE9NV2luZG93Q2xlYXJJbnRlcnZhbCk7
Ci0KICAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhET01QYXJzZXJDb25zdHJ1Y3Rvcik7CiAgICAg
ICAgIERFQ0xBUkVfQ0FMTEJBQ0soSFRNTEF1ZGlvRWxlbWVudENvbnN0cnVjdG9yKTsKICAgICAg
ICAgREVDTEFSRV9DQUxMQkFDSyhIVE1MSW1hZ2VFbGVtZW50Q29uc3RydWN0b3IpOwpAQCAtMzQ0
LDU2ICszMDYsNyBAQAogICAgICAgICBERUNMQVJFX0NBTExCQUNLKFhQYXRoRXZhbHVhdG9yQ29u
c3RydWN0b3IpOwogICAgICAgICBERUNMQVJFX0NBTExCQUNLKFhTTFRQcm9jZXNzb3JDb25zdHJ1
Y3Rvcik7CiAKLSAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhYU0xUUHJvY2Vzc29ySW1wb3J0U3R5
bGVzaGVldCk7Ci0gICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soWFNMVFByb2Nlc3NvclRyYW5zZm9y
bVRvRnJhZ21lbnQpOwotICAgICAgICBERUNMQVJFX0NBTExCQUNLKFhTTFRQcm9jZXNzb3JUcmFu
c2Zvcm1Ub0RvY3VtZW50KTsKLSAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhYU0xUUHJvY2Vzc29y
U2V0UGFyYW1ldGVyKTsKLSAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhYU0xUUHJvY2Vzc29yR2V0
UGFyYW1ldGVyKTsKLSAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhYU0xUUHJvY2Vzc29yUmVtb3Zl
UGFyYW1ldGVyKTsKLQotICAgICAgICBERUNMQVJFX0NBTExCQUNLKENTU1ByaW1pdGl2ZVZhbHVl
R2V0UkdCQ29sb3JWYWx1ZSk7Ci0KLSAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhDYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkRTZXRTdHJva2VDb2xvcik7Ci0gICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0so
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEU2V0RmlsbENvbG9yKTsKLSAgICAgICAgREVDTEFSRV9D
QUxMQkFDSyhDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRTdHJva2VSZWN0KTsKLSAgICAgICAgREVD
TEFSRV9DQUxMQkFDSyhDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRTZXRTaGFkb3cpOwotICAgICAg
ICBERUNMQVJFX0NBTExCQUNLKENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRERyYXdJbWFnZSk7Ci0g
ICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJERHJhd0ltYWdl
RnJvbVJlY3QpOwotICAgICAgICBERUNMQVJFX0NBTExCQUNLKENhbnZhc1JlbmRlcmluZ0NvbnRl
eHQyRENyZWF0ZVBhdHRlcm4pOwotICAgICAgICBERUNMQVJFX0NBTExCQUNLKENhbnZhc1JlbmRl
cmluZ0NvbnRleHQyREZpbGxUZXh0KTsKLSAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhDYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkRTdHJva2VUZXh0KTsKLSAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhD
YW52YXNSZW5kZXJpbmdDb250ZXh0MkRQdXRJbWFnZURhdGEpOwotCiAjaWYgRU5BQkxFKDNEX0NB
TlZBUykKLSAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhXZWJHTFJlbmRlcmluZ0NvbnRleHRCdWZm
ZXJEYXRhKTsKLSAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhXZWJHTFJlbmRlcmluZ0NvbnRleHRC
dWZmZXJTdWJEYXRhKTsKLSAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhXZWJHTFJlbmRlcmluZ0Nv
bnRleHRHZXRCdWZmZXJQYXJhbWV0ZXIpOwotICAgICAgICBERUNMQVJFX0NBTExCQUNLKFdlYkdM
UmVuZGVyaW5nQ29udGV4dEdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcik7Ci0gICAg
ICAgIERFQ0xBUkVfQ0FMTEJBQ0soV2ViR0xSZW5kZXJpbmdDb250ZXh0R2V0UGFyYW1ldGVyKTsK
LSAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhXZWJHTFJlbmRlcmluZ0NvbnRleHRHZXRQcm9ncmFt
UGFyYW1ldGVyKTsKLSAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhXZWJHTFJlbmRlcmluZ0NvbnRl
eHRHZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXIpOwotICAgICAgICBERUNMQVJFX0NBTExCQUNLKFdl
YkdMUmVuZGVyaW5nQ29udGV4dEdldFNoYWRlclBhcmFtZXRlcik7Ci0gICAgICAgIERFQ0xBUkVf
Q0FMTEJBQ0soV2ViR0xSZW5kZXJpbmdDb250ZXh0R2V0VGV4UGFyYW1ldGVyKTsKLSAgICAgICAg
REVDTEFSRV9DQUxMQkFDSyhXZWJHTFJlbmRlcmluZ0NvbnRleHRHZXRVbmlmb3JtKTsKLSAgICAg
ICAgREVDTEFSRV9DQUxMQkFDSyhXZWJHTFJlbmRlcmluZ0NvbnRleHRHZXRWZXJ0ZXhBdHRyaWIp
OwotICAgICAgICBERUNMQVJFX0NBTExCQUNLKFdlYkdMUmVuZGVyaW5nQ29udGV4dFRleEltYWdl
MkQpOwotICAgICAgICBERUNMQVJFX0NBTExCQUNLKFdlYkdMUmVuZGVyaW5nQ29udGV4dFRleFN1
YkltYWdlMkQpOwotICAgICAgICBERUNMQVJFX0NBTExCQUNLKFdlYkdMUmVuZGVyaW5nQ29udGV4
dFVuaWZvcm0xZnYpOwotICAgICAgICBERUNMQVJFX0NBTExCQUNLKFdlYkdMUmVuZGVyaW5nQ29u
dGV4dFVuaWZvcm0xaXYpOwotICAgICAgICBERUNMQVJFX0NBTExCQUNLKFdlYkdMUmVuZGVyaW5n
Q29udGV4dFVuaWZvcm0yZnYpOwotICAgICAgICBERUNMQVJFX0NBTExCQUNLKFdlYkdMUmVuZGVy
aW5nQ29udGV4dFVuaWZvcm0yaXYpOwotICAgICAgICBERUNMQVJFX0NBTExCQUNLKFdlYkdMUmVu
ZGVyaW5nQ29udGV4dFVuaWZvcm0zZnYpOwotICAgICAgICBERUNMQVJFX0NBTExCQUNLKFdlYkdM
UmVuZGVyaW5nQ29udGV4dFVuaWZvcm0zaXYpOwotICAgICAgICBERUNMQVJFX0NBTExCQUNLKFdl
YkdMUmVuZGVyaW5nQ29udGV4dFVuaWZvcm00ZnYpOwotICAgICAgICBERUNMQVJFX0NBTExCQUNL
KFdlYkdMUmVuZGVyaW5nQ29udGV4dFVuaWZvcm00aXYpOwotICAgICAgICBERUNMQVJFX0NBTExC
QUNLKFdlYkdMUmVuZGVyaW5nQ29udGV4dFVuaWZvcm1NYXRyaXgyZnYpOwotICAgICAgICBERUNM
QVJFX0NBTExCQUNLKFdlYkdMUmVuZGVyaW5nQ29udGV4dFVuaWZvcm1NYXRyaXgzZnYpOwotICAg
ICAgICBERUNMQVJFX0NBTExCQUNLKFdlYkdMUmVuZGVyaW5nQ29udGV4dFVuaWZvcm1NYXRyaXg0
ZnYpOwotICAgICAgICBERUNMQVJFX0NBTExCQUNLKFdlYkdMUmVuZGVyaW5nQ29udGV4dFZlcnRl
eEF0dHJpYjFmdik7Ci0gICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soV2ViR0xSZW5kZXJpbmdDb250
ZXh0VmVydGV4QXR0cmliMmZ2KTsKLSAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhXZWJHTFJlbmRl
cmluZ0NvbnRleHRWZXJ0ZXhBdHRyaWIzZnYpOwotICAgICAgICBERUNMQVJFX0NBTExCQUNLKFdl
YkdMUmVuZGVyaW5nQ29udGV4dFZlcnRleEF0dHJpYjRmdik7Ci0KICAgICAgICAgREVDTEFSRV9D
QUxMQkFDSyhXZWJHTEFycmF5QnVmZmVyQ29uc3RydWN0b3IpOwogICAgICAgICBERUNMQVJFX0NB
TExCQUNLKFdlYkdMQnl0ZUFycmF5Q29uc3RydWN0b3IpOwogICAgICAgICBERUNMQVJFX0NBTExC
QUNLKFdlYkdMRmxvYXRBcnJheUNvbnN0cnVjdG9yKTsKQEAgLTQwNSwyMSArMzE4LDcgQEAKICNl
bmRpZgogCiAgICAgICAgIERFQ0xBUkVfUFJPUEVSVFlfQUNDRVNTT1JfR0VUVEVSKENsaXBib2Fy
ZFR5cGVzKTsKLSAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhDbGlwYm9hcmRDbGVhckRhdGEpOwot
ICAgICAgICBERUNMQVJFX0NBTExCQUNLKENsaXBib2FyZEdldERhdGEpOwotICAgICAgICBERUNM
QVJFX0NBTExCQUNLKENsaXBib2FyZFNldERhdGEpOwotICAgICAgICBERUNMQVJFX0NBTExCQUNL
KENsaXBib2FyZFNldERyYWdJbWFnZSk7CiAKLSAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhFbGVt
ZW50UXVlcnlTZWxlY3Rvcik7Ci0gICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soRWxlbWVudFF1ZXJ5
U2VsZWN0b3JBbGwpOwotICAgICAgICBERUNMQVJFX0NBTExCQUNLKEVsZW1lbnRTZXRBdHRyaWJ1
dGUpOwotICAgICAgICBERUNMQVJFX0NBTExCQUNLKEVsZW1lbnRTZXRBdHRyaWJ1dGVOb2RlKTsK
LSAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhFbGVtZW50U2V0QXR0cmlidXRlTlMpOwotICAgICAg
ICBERUNMQVJFX0NBTExCQUNLKEVsZW1lbnRTZXRBdHRyaWJ1dGVOb2RlTlMpOwotCi0gICAgICAg
IERFQ0xBUkVfQ0FMTEJBQ0soSGlzdG9yeVB1c2hTdGF0ZSk7Ci0gICAgICAgIERFQ0xBUkVfQ0FM
TEJBQ0soSGlzdG9yeVJlcGxhY2VTdGF0ZSk7Ci0KICAgICAgICAgREVDTEFSRV9QUk9QRVJUWV9B
Q0NFU1NPUl9TRVRURVIoTG9jYXRpb25Qcm90b2NvbCk7CiAgICAgICAgIERFQ0xBUkVfUFJPUEVS
VFlfQUNDRVNTT1JfU0VUVEVSKExvY2F0aW9uSG9zdCk7CiAgICAgICAgIERFQ0xBUkVfUFJPUEVS
VFlfQUNDRVNTT1JfU0VUVEVSKExvY2F0aW9uSG9zdG5hbWUpOwpAQCAtNDMxLDE3ICszMzAsNiBA
QAogICAgICAgICBERUNMQVJFX1BST1BFUlRZX0FDQ0VTU09SX0dFVFRFUihMb2NhdGlvbkFzc2ln
bik7CiAgICAgICAgIERFQ0xBUkVfUFJPUEVSVFlfQUNDRVNTT1JfR0VUVEVSKExvY2F0aW9uUmVw
bGFjZSk7CiAgICAgICAgIERFQ0xBUkVfUFJPUEVSVFlfQUNDRVNTT1JfR0VUVEVSKExvY2F0aW9u
UmVsb2FkKTsKLSAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhMb2NhdGlvbkFzc2lnbik7Ci0gICAg
ICAgIERFQ0xBUkVfQ0FMTEJBQ0soTG9jYXRpb25SZXBsYWNlKTsKLSAgICAgICAgREVDTEFSRV9D
QUxMQkFDSyhMb2NhdGlvblJlbG9hZCk7Ci0gICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soTG9jYXRp
b25Ub1N0cmluZyk7Ci0gICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soTG9jYXRpb25WYWx1ZU9mKTsK
LSAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhOb2RlQWRkRXZlbnRMaXN0ZW5lcik7Ci0gICAgICAg
IERFQ0xBUkVfQ0FMTEJBQ0soTm9kZVJlbW92ZUV2ZW50TGlzdGVuZXIpOwotICAgICAgICBERUNM
QVJFX0NBTExCQUNLKE5vZGVJbnNlcnRCZWZvcmUpOwotICAgICAgICBERUNMQVJFX0NBTExCQUNL
KE5vZGVSZXBsYWNlQ2hpbGQpOwotICAgICAgICBERUNMQVJFX0NBTExCQUNLKE5vZGVSZW1vdmVD
aGlsZCk7Ci0gICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soTm9kZUFwcGVuZENoaWxkKTsKIAogICAg
ICAgICAvLyBXZSBhY3R1YWxseSBvbmx5IG5lZWQgdGhpcyBiZWNhdXNlIFdlYktpdCBoYXMKICAg
ICAgICAgLy8gbmF2aWdhdG9yLmFwcFZlcnNpb24gYXMgY3VzdG9tLiBPdXIgdmVyc2lvbiBqdXN0
CkBAIC00NTUsNTkgKzM0MywxMyBAQAogICAgICAgICBERUNMQVJFX1BST1BFUlRZX0FDQ0VTU09S
KFhNTEh0dHBSZXF1ZXN0T25wcm9ncmVzcyk7CiAgICAgICAgIERFQ0xBUkVfUFJPUEVSVFlfQUND
RVNTT1IoWE1MSHR0cFJlcXVlc3RPbnJlYWR5c3RhdGVjaGFuZ2UpOwogICAgICAgICBERUNMQVJF
X1BST1BFUlRZX0FDQ0VTU09SKFhNTEh0dHBSZXF1ZXN0UmVzcG9uc2VUZXh0KTsKLSAgICAgICAg
REVDTEFSRV9DQUxMQkFDSyhYTUxIdHRwUmVxdWVzdEFkZEV2ZW50TGlzdGVuZXIpOwotICAgICAg
ICBERUNMQVJFX0NBTExCQUNLKFhNTEh0dHBSZXF1ZXN0UmVtb3ZlRXZlbnRMaXN0ZW5lcik7Ci0g
ICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soWE1MSHR0cFJlcXVlc3RPcGVuKTsKLSAgICAgICAgREVD
TEFSRV9DQUxMQkFDSyhYTUxIdHRwUmVxdWVzdFNlbmQpOwotICAgICAgICBERUNMQVJFX0NBTExC
QUNLKFhNTEh0dHBSZXF1ZXN0U2V0UmVxdWVzdEhlYWRlcik7Ci0gICAgICAgIERFQ0xBUkVfQ0FM
TEJBQ0soWE1MSHR0cFJlcXVlc3RHZXRSZXNwb25zZUhlYWRlcik7Ci0gICAgICAgIERFQ0xBUkVf
Q0FMTEJBQ0soWE1MSHR0cFJlcXVlc3RPdmVycmlkZU1pbWVUeXBlKTsKLSAgICAgICAgREVDTEFS
RV9DQUxMQkFDSyhYTUxIdHRwUmVxdWVzdERpc3BhdGNoRXZlbnQpOwogCiAgICAgICAgIERFQ0xB
UkVfUFJPUEVSVFlfQUNDRVNTT1IoWE1MSHR0cFJlcXVlc3RVcGxvYWRPbmFib3J0KTsKICAgICAg
ICAgREVDTEFSRV9QUk9QRVJUWV9BQ0NFU1NPUihYTUxIdHRwUmVxdWVzdFVwbG9hZE9uZXJyb3Ip
OwogICAgICAgICBERUNMQVJFX1BST1BFUlRZX0FDQ0VTU09SKFhNTEh0dHBSZXF1ZXN0VXBsb2Fk
T25sb2FkKTsKICAgICAgICAgREVDTEFSRV9QUk9QRVJUWV9BQ0NFU1NPUihYTUxIdHRwUmVxdWVz
dFVwbG9hZE9ubG9hZHN0YXJ0KTsKICAgICAgICAgREVDTEFSRV9QUk9QRVJUWV9BQ0NFU1NPUihY
TUxIdHRwUmVxdWVzdFVwbG9hZE9ucHJvZ3Jlc3MpOwotICAgICAgICBERUNMQVJFX0NBTExCQUNL
KFhNTEh0dHBSZXF1ZXN0VXBsb2FkQWRkRXZlbnRMaXN0ZW5lcik7Ci0gICAgICAgIERFQ0xBUkVf
Q0FMTEJBQ0soWE1MSHR0cFJlcXVlc3RVcGxvYWRSZW1vdmVFdmVudExpc3RlbmVyKTsKLSAgICAg
ICAgREVDTEFSRV9DQUxMQkFDSyhYTUxIdHRwUmVxdWVzdFVwbG9hZERpc3BhdGNoRXZlbnQpOwog
Ci0gICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soVHJlZVdhbGtlclBhcmVudE5vZGUpOwotICAgICAg
ICBERUNMQVJFX0NBTExCQUNLKFRyZWVXYWxrZXJGaXJzdENoaWxkKTsKLSAgICAgICAgREVDTEFS
RV9DQUxMQkFDSyhUcmVlV2Fsa2VyTGFzdENoaWxkKTsKLSAgICAgICAgREVDTEFSRV9DQUxMQkFD
SyhUcmVlV2Fsa2VyTmV4dE5vZGUpOwotICAgICAgICBERUNMQVJFX0NBTExCQUNLKFRyZWVXYWxr
ZXJQcmV2aW91c05vZGUpOwotICAgICAgICBERUNMQVJFX0NBTExCQUNLKFRyZWVXYWxrZXJOZXh0
U2libGluZyk7Ci0gICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soVHJlZVdhbGtlclByZXZpb3VzU2li
bGluZyk7Ci0KLSAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhJbmplY3RlZFNjcmlwdEhvc3RJbnNw
ZWN0ZWRXaW5kb3cpOwotICAgICAgICBERUNMQVJFX0NBTExCQUNLKEluamVjdGVkU2NyaXB0SG9z
dE5vZGVGb3JJZCk7Ci0gICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soSW5qZWN0ZWRTY3JpcHRIb3N0
V3JhcE9iamVjdCk7Ci0gICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soSW5qZWN0ZWRTY3JpcHRIb3N0
VW53cmFwT2JqZWN0KTsKLSAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhJbmplY3RlZFNjcmlwdEhv
c3RQdXNoTm9kZVBhdGhUb0Zyb250ZW5kKTsKLSAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhJbmpl
Y3RlZFNjcmlwdEhvc3RXcmFwQ2FsbGJhY2spOwotI2lmIEVOQUJMRShEQVRBQkFTRSkKLSAgICAg
ICAgREVDTEFSRV9DQUxMQkFDSyhJbmplY3RlZFNjcmlwdEhvc3RTZWxlY3REYXRhYmFzZSk7Ci0g
ICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soSW5qZWN0ZWRTY3JpcHRIb3N0RGF0YWJhc2VGb3JJZCk7
Ci0jZW5kaWYKLSNpZiBFTkFCTEUoRE9NX1NUT1JBR0UpCi0gICAgICAgIERFQ0xBUkVfQ0FMTEJB
Q0soSW5qZWN0ZWRTY3JpcHRIb3N0U2VsZWN0RE9NU3RvcmFnZSk7Ci0jZW5kaWYKLQotICAgICAg
ICBERUNMQVJFX0NBTExCQUNLKEluc3BlY3RvckZyb250ZW5kSG9zdFNlYXJjaCk7Ci0gICAgICAg
IERFQ0xBUkVfQ0FMTEJBQ0soSW5zcGVjdG9yRnJvbnRlbmRIb3N0U2hvd0NvbnRleHRNZW51KTsK
LQotICAgICAgICBERUNMQVJFX0NBTExCQUNLKENvbnNvbGVQcm9maWxlKTsKLSAgICAgICAgREVD
TEFSRV9DQUxMQkFDSyhDb25zb2xlUHJvZmlsZUVuZCk7Ci0KLSAgICAgICAgREVDTEFSRV9DQUxM
QkFDSyhOb2RlSXRlcmF0b3JOZXh0Tm9kZSk7Ci0gICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soTm9k
ZUl0ZXJhdG9yUHJldmlvdXNOb2RlKTsKLQotICAgICAgICBERUNMQVJFX0NBTExCQUNLKE5vZGVG
aWx0ZXJBY2NlcHROb2RlKTsKLQotICAgICAgICBERUNMQVJFX0NBTExCQUNLKEhUTUxGb3JtRWxl
bWVudFN1Ym1pdCk7Ci0KICAgICAgICAgREVDTEFSRV9OQU1FRF9QUk9QRVJUWV9HRVRURVIoRE9N
V2luZG93KTsKICAgICAgICAgREVDTEFSRV9JTkRFWEVEX1BST1BFUlRZX0dFVFRFUihET01XaW5k
b3cpOwogICAgICAgICBERUNMQVJFX05BTUVEX0FDQ0VTU19DSEVDSyhET01XaW5kb3cpOwpAQCAt
NTI0LDggKzM2Niw2IEBACiAgICAgICAgIERFQ0xBUkVfSU5ERVhFRF9QUk9QRVJUWV9HRVRURVIo
SFRNTFBsdWdJbkVsZW1lbnQpOwogICAgICAgICBERUNMQVJFX0lOREVYRURfUFJPUEVSVFlfU0VU
VEVSKEhUTUxQbHVnSW5FbGVtZW50KTsKIAotICAgICAgICBERUNMQVJFX0NBTExCQUNLKEhUTUxQ
bHVnSW5FbGVtZW50KTsKLQogICAgICAgICBERUNMQVJFX05BTUVEX1BST1BFUlRZX0dFVFRFUihT
dHlsZVNoZWV0TGlzdCk7CiAgICAgICAgIERFQ0xBUkVfSU5ERVhFRF9QUk9QRVJUWV9HRVRURVIo
TmFtZWROb2RlTWFwKTsKICAgICAgICAgREVDTEFSRV9JTkRFWEVEX1BST1BFUlRZX0dFVFRFUihI
VE1MRm9ybUVsZW1lbnQpOwpAQCAtNTM4LDU4ICszNzgsMzMgQEAKICAgICAgICAgREVDTEFSRV9O
QU1FRF9QUk9QRVJUWV9HRVRURVIoSFRNTENvbGxlY3Rpb24pOwogCiAjaWYgRU5BQkxFKDNEX0NB
TlZBUykKLSAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhXZWJHTEJ5dGVBcnJheUdldCk7Ci0gICAg
ICAgIERFQ0xBUkVfQ0FMTEJBQ0soV2ViR0xCeXRlQXJyYXlTZXQpOwogICAgICAgICBERUNMQVJF
X0lOREVYRURfUFJPUEVSVFlfR0VUVEVSKFdlYkdMQnl0ZUFycmF5KTsKICAgICAgICAgREVDTEFS
RV9JTkRFWEVEX1BST1BFUlRZX1NFVFRFUihXZWJHTEJ5dGVBcnJheSk7CiAKLSAgICAgICAgREVD
TEFSRV9DQUxMQkFDSyhXZWJHTEZsb2F0QXJyYXlHZXQpOwotICAgICAgICBERUNMQVJFX0NBTExC
QUNLKFdlYkdMRmxvYXRBcnJheVNldCk7CiAgICAgICAgIERFQ0xBUkVfSU5ERVhFRF9QUk9QRVJU
WV9HRVRURVIoV2ViR0xGbG9hdEFycmF5KTsKICAgICAgICAgREVDTEFSRV9JTkRFWEVEX1BST1BF
UlRZX1NFVFRFUihXZWJHTEZsb2F0QXJyYXkpOwogCi0gICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0so
V2ViR0xJbnRBcnJheUdldCk7Ci0gICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soV2ViR0xJbnRBcnJh
eVNldCk7CiAgICAgICAgIERFQ0xBUkVfSU5ERVhFRF9QUk9QRVJUWV9HRVRURVIoV2ViR0xJbnRB
cnJheSk7CiAgICAgICAgIERFQ0xBUkVfSU5ERVhFRF9QUk9QRVJUWV9TRVRURVIoV2ViR0xJbnRB
cnJheSk7CiAKLSAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhXZWJHTFNob3J0QXJyYXlHZXQpOwot
ICAgICAgICBERUNMQVJFX0NBTExCQUNLKFdlYkdMU2hvcnRBcnJheVNldCk7CiAgICAgICAgIERF
Q0xBUkVfSU5ERVhFRF9QUk9QRVJUWV9HRVRURVIoV2ViR0xTaG9ydEFycmF5KTsKICAgICAgICAg
REVDTEFSRV9JTkRFWEVEX1BST1BFUlRZX1NFVFRFUihXZWJHTFNob3J0QXJyYXkpOwogCi0gICAg
ICAgIERFQ0xBUkVfQ0FMTEJBQ0soV2ViR0xVbnNpZ25lZEJ5dGVBcnJheUdldCk7Ci0gICAgICAg
IERFQ0xBUkVfQ0FMTEJBQ0soV2ViR0xVbnNpZ25lZEJ5dGVBcnJheVNldCk7CiAgICAgICAgIERF
Q0xBUkVfSU5ERVhFRF9QUk9QRVJUWV9HRVRURVIoV2ViR0xVbnNpZ25lZEJ5dGVBcnJheSk7CiAg
ICAgICAgIERFQ0xBUkVfSU5ERVhFRF9QUk9QRVJUWV9TRVRURVIoV2ViR0xVbnNpZ25lZEJ5dGVB
cnJheSk7CiAKLSAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhXZWJHTFVuc2lnbmVkSW50QXJyYXlH
ZXQpOwotICAgICAgICBERUNMQVJFX0NBTExCQUNLKFdlYkdMVW5zaWduZWRJbnRBcnJheVNldCk7
CiAgICAgICAgIERFQ0xBUkVfSU5ERVhFRF9QUk9QRVJUWV9HRVRURVIoV2ViR0xVbnNpZ25lZElu
dEFycmF5KTsKICAgICAgICAgREVDTEFSRV9JTkRFWEVEX1BST1BFUlRZX1NFVFRFUihXZWJHTFVu
c2lnbmVkSW50QXJyYXkpOwogCi0gICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soV2ViR0xVbnNpZ25l
ZFNob3J0QXJyYXlHZXQpOwotICAgICAgICBERUNMQVJFX0NBTExCQUNLKFdlYkdMVW5zaWduZWRT
aG9ydEFycmF5U2V0KTsKICAgICAgICAgREVDTEFSRV9JTkRFWEVEX1BST1BFUlRZX0dFVFRFUihX
ZWJHTFVuc2lnbmVkU2hvcnRBcnJheSk7CiAgICAgICAgIERFQ0xBUkVfSU5ERVhFRF9QUk9QRVJU
WV9TRVRURVIoV2ViR0xVbnNpZ25lZFNob3J0QXJyYXkpOwogI2VuZGlmCiAKICAgICAgICAgREVD
TEFSRV9QUk9QRVJUWV9BQ0NFU1NPUl9HRVRURVIoTWVzc2FnZUV2ZW50UG9ydHMpOwotICAgICAg
ICBERUNMQVJFX0NBTExCQUNLKE1lc3NhZ2VFdmVudEluaXRNZXNzYWdlRXZlbnQpOwogCiAgICAg
ICAgIERFQ0xBUkVfUFJPUEVSVFlfQUNDRVNTT1IoTWVzc2FnZVBvcnRPbm1lc3NhZ2UpOwogICAg
ICAgICBERUNMQVJFX1BST1BFUlRZX0FDQ0VTU09SKE1lc3NhZ2VQb3J0T25jbG9zZSk7Ci0gICAg
ICAgIERFQ0xBUkVfQ0FMTEJBQ0soTWVzc2FnZVBvcnRBZGRFdmVudExpc3RlbmVyKTsKLSAgICAg
ICAgREVDTEFSRV9DQUxMQkFDSyhNZXNzYWdlUG9ydFBvc3RNZXNzYWdlKTsKLSAgICAgICAgREVD
TEFSRV9DQUxMQkFDSyhNZXNzYWdlUG9ydFJlbW92ZUV2ZW50TGlzdGVuZXIpOwotICAgICAgICBE
RUNMQVJFX0NBTExCQUNLKE1lc3NhZ2VQb3J0U3RhcnRDb252ZXJzYXRpb24pOwogCi0gICAgICAg
IERFQ0xBUkVfQ0FMTEJBQ0soRGF0YWJhc2VDaGFuZ2VWZXJzaW9uKTsKLSAgICAgICAgREVDTEFS
RV9DQUxMQkFDSyhEYXRhYmFzZVRyYW5zYWN0aW9uKTsKLSAgICAgICAgREVDTEFSRV9DQUxMQkFD
SyhEYXRhYmFzZVJlYWRUcmFuc2FjdGlvbik7Ci0gICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soU1FM
VHJhbnNhY3Rpb25FeGVjdXRlU3FsKTsKLSAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhTUUxSZXN1
bHRTZXRSb3dMaXN0SXRlbSk7Ci0KICNpZiBFTkFCTEUoREFUQUdSSUQpCiAgICAgICAgIERFQ0xB
UkVfUFJPUEVSVFlfQUNDRVNTT1IoSFRNTERhdGFHcmlkRWxlbWVudERhdGFTb3VyY2UpOwogICAg
ICAgICBERUNMQVJFX05BTUVEX1BST1BFUlRZX0dFVFRFUihEYXRhR3JpZENvbHVtbkxpc3QpOwpA
QCAtNjEzLDM1ICs0MjgsMTggQEAKIAogI2lmIEVOQUJMRShTVkcpCiAgICAgICAgIERFQ0xBUkVf
UFJPUEVSVFlfQUNDRVNTT1JfR0VUVEVSKFNWR0xlbmd0aFZhbHVlKTsKLSAgICAgICAgREVDTEFS
RV9DQUxMQkFDSyhTVkdMZW5ndGhDb252ZXJ0VG9TcGVjaWZpZWRVbml0cyk7Ci0gICAgICAgIERF
Q0xBUkVfQ0FMTEJBQ0soU1ZHTWF0cml4TXVsdGlwbHkpOwotICAgICAgICBERUNMQVJFX0NBTExC
QUNLKFNWR01hdHJpeEludmVyc2UpOwotICAgICAgICBERUNMQVJFX0NBTExCQUNLKFNWR01hdHJp
eFJvdGF0ZUZyb21WZWN0b3IpOwotICAgICAgICBERUNMQVJFX0NBTExCQUNLKFNWR0VsZW1lbnRJ
bnN0YW5jZUFkZEV2ZW50TGlzdGVuZXIpOwotICAgICAgICBERUNMQVJFX0NBTExCQUNLKFNWR0Vs
ZW1lbnRJbnN0YW5jZVJlbW92ZUV2ZW50TGlzdGVuZXIpOwogI2VuZGlmCiAKICNpZiBFTkFCTEUo
V09SS0VSUykKICAgICAgICAgREVDTEFSRV9QUk9QRVJUWV9BQ0NFU1NPUihBYnN0cmFjdFdvcmtl
ck9uZXJyb3IpOwotICAgICAgICBERUNMQVJFX0NBTExCQUNLKEFic3RyYWN0V29ya2VyQWRkRXZl
bnRMaXN0ZW5lcik7Ci0gICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soQWJzdHJhY3RXb3JrZXJSZW1v
dmVFdmVudExpc3RlbmVyKTsKIAogICAgICAgICBERUNMQVJFX1BST1BFUlRZX0FDQ0VTU09SKERl
ZGljYXRlZFdvcmtlckNvbnRleHRPbm1lc3NhZ2UpOwotICAgICAgICBERUNMQVJFX0NBTExCQUNL
KERlZGljYXRlZFdvcmtlckNvbnRleHRQb3N0TWVzc2FnZSk7CiAKICAgICAgICAgREVDTEFSRV9Q
Uk9QRVJUWV9BQ0NFU1NPUihXb3JrZXJPbm1lc3NhZ2UpOwotICAgICAgICBERUNMQVJFX0NBTExC
QUNLKFdvcmtlclBvc3RNZXNzYWdlKTsKICAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhXb3JrZXJD
b25zdHJ1Y3Rvcik7CiAKICAgICAgICAgREVDTEFSRV9QUk9QRVJUWV9BQ0NFU1NPUl9HRVRURVIo
V29ya2VyQ29udGV4dFNlbGYpOwogICAgICAgICBERUNMQVJFX1BST1BFUlRZX0FDQ0VTU09SKFdv
cmtlckNvbnRleHRPbmVycm9yKTsKLSAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhXb3JrZXJDb250
ZXh0SW1wb3J0U2NyaXB0cyk7Ci0gICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soV29ya2VyQ29udGV4
dFNldFRpbWVvdXQpOwotICAgICAgICBERUNMQVJFX0NBTExCQUNLKFdvcmtlckNvbnRleHRDbGVh
clRpbWVvdXQpOwotICAgICAgICBERUNMQVJFX0NBTExCQUNLKFdvcmtlckNvbnRleHRTZXRJbnRl
cnZhbCk7Ci0gICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soV29ya2VyQ29udGV4dENsZWFySW50ZXJ2
YWwpOwotICAgICAgICBERUNMQVJFX0NBTExCQUNLKFdvcmtlckNvbnRleHRBZGRFdmVudExpc3Rl
bmVyKTsKLSAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhXb3JrZXJDb250ZXh0UmVtb3ZlRXZlbnRM
aXN0ZW5lcik7CiAKICNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKICAgICAgICAgREVDTEFSRV9B
Q0NFU1NPUl9SVU5USU1FX0VOQUJMRVIoV29ya2VyQ29udGV4dFdlYmtpdE5vdGlmaWNhdGlvbnMp
OwpAQCAtNjQ5LDIwICs0NDcsMTIgQEAKICNlbmRpZiAvLyBFTkFCTEUoV09SS0VSUykKIAogI2lm
IEVOQUJMRShOT1RJRklDQVRJT05TKQotICAgICAgICBERUNMQVJFX0NBTExCQUNLKE5vdGlmaWNh
dGlvbkNlbnRlclJlcXVlc3RQZXJtaXNzaW9uKTsKLSAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhO
b3RpZmljYXRpb25DZW50ZXJDcmVhdGVOb3RpZmljYXRpb24pOwotICAgICAgICBERUNMQVJFX0NB
TExCQUNLKE5vdGlmaWNhdGlvbkNlbnRlckNyZWF0ZUhUTUxOb3RpZmljYXRpb24pOwotCi0gICAg
ICAgIERFQ0xBUkVfQ0FMTEJBQ0soTm90aWZpY2F0aW9uQWRkRXZlbnRMaXN0ZW5lcik7Ci0gICAg
ICAgIERFQ0xBUkVfQ0FMTEJBQ0soTm90aWZpY2F0aW9uUmVtb3ZlRXZlbnRMaXN0ZW5lcik7CiAg
ICAgICAgIERFQ0xBUkVfUFJPUEVSVFlfQUNDRVNTT1IoTm90aWZpY2F0aW9uRXZlbnRIYW5kbGVy
KTsKICNlbmRpZiAvLyBFTkFCTEUoTk9USUZJQ0FUSU9OUykKIAogI2lmIEVOQUJMRShPRkZMSU5F
X1dFQl9BUFBMSUNBVElPTlMpCiAgICAgICAgIERFQ0xBUkVfQUNDRVNTT1JfUlVOVElNRV9FTkFC
TEVSKERPTVdpbmRvd0FwcGxpY2F0aW9uQ2FjaGUpOwogICAgICAgICBERUNMQVJFX1BST1BFUlRZ
X0FDQ0VTU09SKERPTUFwcGxpY2F0aW9uQ2FjaGVFdmVudEhhbmRsZXIpOwotICAgICAgICBERUNM
QVJFX0NBTExCQUNLKERPTUFwcGxpY2F0aW9uQ2FjaGVBZGRFdmVudExpc3RlbmVyKTsKLSAgICAg
ICAgREVDTEFSRV9DQUxMQkFDSyhET01BcHBsaWNhdGlvbkNhY2hlUmVtb3ZlRXZlbnRMaXN0ZW5l
cik7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShTSEFSRURfV09SS0VSUykKQEAgLTY3OSwxNSArNDY5
LDkgQEAKICAgICAgICAgREVDTEFSRV9QUk9QRVJUWV9BQ0NFU1NPUihXZWJTb2NrZXRPbm1lc3Nh
Z2UpOwogICAgICAgICBERUNMQVJFX1BST1BFUlRZX0FDQ0VTU09SKFdlYlNvY2tldE9uY2xvc2Up
OwogICAgICAgICBERUNMQVJFX0NBTExCQUNLKFdlYlNvY2tldENvbnN0cnVjdG9yKTsKLSAgICAg
ICAgREVDTEFSRV9DQUxMQkFDSyhXZWJTb2NrZXRBZGRFdmVudExpc3RlbmVyKTsKLSAgICAgICAg
REVDTEFSRV9DQUxMQkFDSyhXZWJTb2NrZXRSZW1vdmVFdmVudExpc3RlbmVyKTsKLSAgICAgICAg
REVDTEFSRV9DQUxMQkFDSyhXZWJTb2NrZXRTZW5kKTsKLSAgICAgICAgREVDTEFSRV9DQUxMQkFD
SyhXZWJTb2NrZXRDbG9zZSk7CiAgICAgICAgIERFQ0xBUkVfQUNDRVNTT1JfUlVOVElNRV9FTkFC
TEVSKERPTVdpbmRvd1dlYlNvY2tldCk7CiAjZW5kaWYKIAotICAgICAgICBERUNMQVJFX0NBTExC
QUNLKEdlb2xvY2F0aW9uR2V0Q3VycmVudFBvc2l0aW9uKTsKLSAgICAgICAgREVDTEFSRV9DQUxM
QkFDSyhHZW9sb2NhdGlvbldhdGNoUG9zaXRpb24pOwogICAgICAgICBERUNMQVJFX1BST1BFUlRZ
X0FDQ0VTU09SX0dFVFRFUihDb29yZGluYXRlc0FsdGl0dWRlKTsKICAgICAgICAgREVDTEFSRV9Q
Uk9QRVJUWV9BQ0NFU1NPUl9HRVRURVIoQ29vcmRpbmF0ZXNBbHRpdHVkZUFjY3VyYWN5KTsKICAg
ICAgICAgREVDTEFSRV9QUk9QRVJUWV9BQ0NFU1NPUl9HRVRURVIoQ29vcmRpbmF0ZXNIZWFkaW5n
KTsKQEAgLTcyMSwxMCArNTA1LDcgQEAKICNpZiBFTkFCTEUoU1ZHKQogICAgICAgICBzdGF0aWMg
VjhDbGFzc0luZGV4OjpWOFdyYXBwZXJUeXBlIERvd25jYXN0U1ZHUGF0aFNlZyh2b2lkKiBwYXRo
U2VnKTsKICNlbmRpZgotCiAgICAgcHJpdmF0ZToKLSAgICAgICAgc3RhdGljIHY4OjpIYW5kbGU8
djg6OlZhbHVlPiBXaW5kb3dTZXRUaW1lb3V0SW1wbChjb25zdCB2ODo6QXJndW1lbnRzJiwgYm9v
bCBzaW5nbGVTaG90KTsKLSAgICAgICAgc3RhdGljIHZvaWQgQ2xlYXJUaW1lb3V0SW1wbChjb25z
dCB2ODo6QXJndW1lbnRzJik7CiAgICAgICAgIHN0YXRpYyB2b2lkIFdpbmRvd1NldExvY2F0aW9u
KERPTVdpbmRvdyosIGNvbnN0IFN0cmluZyYpOwogICAgIH07CiAKSW5kZXg6IFdlYkNvcmUvYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4V2ViR0xVbnNpZ25lZEJ5dGVBcnJheUN1c3RvbS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhXZWJHTFVuc2lnbmVkQnl0ZUFy
cmF5Q3VzdG9tLmNwcAkocmV2aXNpb24gNTIzNDEpCisrKyBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1
c3RvbS9WOFdlYkdMVW5zaWduZWRCeXRlQXJyYXlDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC00NCw3ICs0NCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotQ0FMTEJBQ0tfRlVOQ19E
RUNMKFdlYkdMVW5zaWduZWRCeXRlQXJyYXlDb25zdHJ1Y3RvcikKK3Y4OjpIYW5kbGU8djg6OlZh
bHVlPiBWOEN1c3RvbTo6djhXZWJHTFVuc2lnbmVkQnl0ZUFycmF5Q29uc3RydWN0b3JDYWxsYmFj
ayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAgIElOQ19TVEFUUygiRE9NLldlYkdM
VW5zaWduZWRCeXRlQXJyYXkuQ29udHJ1Y3RvciIpOwogCkBAIC03OSwxMyArNzksMTMgQEAKICAg
ICByZXR1cm4gdmFsdWU7CiB9CiAKLUNBTExCQUNLX0ZVTkNfREVDTChXZWJHTFVuc2lnbmVkQnl0
ZUFycmF5R2V0KQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4V2ViR0xVbnNpZ25lZEJ5dGVBcnJh
eTo6Z2V0Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBJTkNfU1RB
VFMoIkRPTS5XZWJHTFVuc2lnbmVkQnl0ZUFycmF5LmdldCgpIik7CiAgICAgcmV0dXJuIGdldFdl
YkdMQXJyYXlFbGVtZW50PFdlYkdMVW5zaWduZWRCeXRlQXJyYXksIHVuc2lnbmVkIGNoYXI+KGFy
Z3MsIFY4Q2xhc3NJbmRleDo6V0VCR0xVTlNJR05FREJZVEVBUlJBWSk7CiB9CiAKLUNBTExCQUNL
X0ZVTkNfREVDTChXZWJHTFVuc2lnbmVkQnl0ZUFycmF5U2V0KQordjg6OkhhbmRsZTx2ODo6VmFs
dWU+IFY4V2ViR0xVbnNpZ25lZEJ5dGVBcnJheTo6c2V0Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3Vt
ZW50cyYgYXJncykKIHsKICAgICBJTkNfU1RBVFMoIkRPTS5XZWJHTFVuc2lnbmVkQnl0ZUFycmF5
LnNldCgpIik7CiAgICAgcmV0dXJuIHNldFdlYkdMQXJyYXk8V2ViR0xVbnNpZ25lZEJ5dGVBcnJh
eSwgVjhXZWJHTFVuc2lnbmVkQnl0ZUFycmF5PihhcmdzLCBWOENsYXNzSW5kZXg6OldFQkdMVU5T
SUdORURCWVRFQVJSQVkpOwpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhTVkdN
YXRyaXhDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9t
L1Y4U1ZHTWF0cml4Q3VzdG9tLmNwcAkocmV2aXNpb24gNTIzNDEpCisrKyBXZWJDb3JlL2JpbmRp
bmdzL3Y4L2N1c3RvbS9WOFNWR01hdHJpeEN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ0
LDcgKzQ0LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1DQUxMQkFDS19GVU5DX0RFQ0wo
U1ZHTWF0cml4TXVsdGlwbHkpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhTVkdNYXRyaXg6Om11
bHRpcGx5Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBJTkNfU1RB
VFMoIkRPTS5TVkdNYXRyaXgubXVsdGlwbHkoKSIpOwogICAgIGlmIChhcmdzLkxlbmd0aCgpIDwg
MSkKQEAgLTU5LDcgKzU5LDcgQEAKICAgICByZXR1cm4gVjhET01XcmFwcGVyOjpjb252ZXJ0VG9W
OE9iamVjdChWOENsYXNzSW5kZXg6OlNWR01BVFJJWCwgVjhTVkdTdGF0aWNQT0RUeXBlV3JhcHBl
cjxUcmFuc2Zvcm1hdGlvbk1hdHJpeD46OmNyZWF0ZShtMS5tdWx0TGVmdChtMikpKTsKIH0KIAot
Q0FMTEJBQ0tfRlVOQ19ERUNMKFNWR01hdHJpeEludmVyc2UpCit2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gVjhTVkdNYXRyaXg6OmludmVyc2VDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdz
KQogewogICAgIElOQ19TVEFUUygiRE9NLlNWR01hdHJpeC5pbnZlcnNlKCkiKTsKICAgICBUcmFu
c2Zvcm1hdGlvbk1hdHJpeCBtYXRyaXggPSAqVjhET01XcmFwcGVyOjpjb252ZXJ0VG9OYXRpdmVP
YmplY3Q8VjhTVkdQT0RUeXBlV3JhcHBlcjxUcmFuc2Zvcm1hdGlvbk1hdHJpeD4gPihWOENsYXNz
SW5kZXg6OlNWR01BVFJJWCwgYXJncy5Ib2xkZXIoKSk7CkBAIC03Nyw3ICs3Nyw3IEBACiAgICAg
cmV0dXJuIFY4RE9NV3JhcHBlcjo6Y29udmVydFRvVjhPYmplY3QoVjhDbGFzc0luZGV4OjpTVkdN
QVRSSVgsIFY4U1ZHU3RhdGljUE9EVHlwZVdyYXBwZXI8VHJhbnNmb3JtYXRpb25NYXRyaXg+Ojpj
cmVhdGUocmVzdWx0KSk7CiB9CiAKLUNBTExCQUNLX0ZVTkNfREVDTChTVkdNYXRyaXhSb3RhdGVG
cm9tVmVjdG9yKQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4U1ZHTWF0cml4Ojpyb3RhdGVGcm9t
VmVjdG9yQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBJTkNfU1RB
VFMoIkRPTS5TVkdNYXRyaXgucm90YXRlRnJvbVZlY3RvcigpIik7CiAgICAgVHJhbnNmb3JtYXRp
b25NYXRyaXggbWF0cml4ID0gKlY4RE9NV3JhcHBlcjo6Y29udmVydFRvTmF0aXZlT2JqZWN0PFY4
U1ZHUE9EVHlwZVdyYXBwZXI8VHJhbnNmb3JtYXRpb25NYXRyaXg+ID4oVjhDbGFzc0luZGV4OjpT
VkdNQVRSSVgsIGFyZ3MuSG9sZGVyKCkpOwpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0
b20vVjhFbGVtZW50Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3Y4
L2N1c3RvbS9WOEVsZW1lbnRDdXN0b20uY3BwCShyZXZpc2lvbiA1MjM0MSkKKysrIFdlYkNvcmUv
YmluZGluZ3MvdjgvY3VzdG9tL1Y4RWxlbWVudEN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTI5LDExICsyOSwxMiBAQAogICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJF
bGVtZW50LmgiCisjaW5jbHVkZSAiVjhFbGVtZW50LmgiCiAKICNpbmNsdWRlICJBdHRyLmgiCiAj
aW5jbHVkZSAiQ1NTSGVscGVyLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJF
bGVtZW50LmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgogI2luY2x1ZGUgIkhUTUxGcmFt
ZUVsZW1lbnRCYXNlLmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCkBAIC00OCw3ICs0OSw3IEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotQ0FMTEJBQ0tfRlVOQ19ERUNMKEVsZW1lbnRTZXRB
dHRyaWJ1dGUpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhFbGVtZW50OjpzZXRBdHRyaWJ1dGVD
YWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAgIElOQ19TVEFUUygiRE9N
LkVsZW1lbnQuc2V0QXR0cmlidXRlKCkiKTsKICAgICBFbGVtZW50KiBlbGVtZW50ID0gVjhET01X
cmFwcGVyOjpjb252ZXJ0RE9NV3JhcHBlclRvTm9kZTxFbGVtZW50PihhcmdzLkhvbGRlcigpKTsK
QEAgLTY2LDcgKzY3LDcgQEAKICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwogfQogCi1DQUxM
QkFDS19GVU5DX0RFQ0woRWxlbWVudFNldEF0dHJpYnV0ZU5vZGUpCit2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gVjhFbGVtZW50OjpzZXRBdHRyaWJ1dGVOb2RlQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3Vt
ZW50cyYgYXJncykKIHsKICAgICBJTkNfU1RBVFMoIkRPTS5FbGVtZW50LnNldEF0dHJpYnV0ZU5v
ZGUoKSIpOwogICAgIGlmICghVjhBdHRyOjpIYXNJbnN0YW5jZShhcmdzWzBdKSkKQEAgLTg2LDcg
Kzg3LDcgQEAKICAgICByZXR1cm4gVjhET01XcmFwcGVyOjpjb252ZXJ0Tm9kZVRvVjhPYmplY3Qo
cmVzdWx0LnJlbGVhc2UoKSk7CiB9CiAKLUNBTExCQUNLX0ZVTkNfREVDTChFbGVtZW50U2V0QXR0
cmlidXRlTlMpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhFbGVtZW50OjpzZXRBdHRyaWJ1dGVO
U0NhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgSU5DX1NUQVRTKCJE
T00uRWxlbWVudC5zZXRBdHRyaWJ1dGVOUygpIik7CiAgICAgRWxlbWVudCogZWxlbWVudCA9IFY4
RE9NV3JhcHBlcjo6Y29udmVydERPTVdyYXBwZXJUb05vZGU8RWxlbWVudD4oYXJncy5Ib2xkZXIo
KSk7CkBAIC0xMDUsNyArMTA2LDcgQEAKICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwogfQog
Ci1DQUxMQkFDS19GVU5DX0RFQ0woRWxlbWVudFNldEF0dHJpYnV0ZU5vZGVOUykKK3Y4OjpIYW5k
bGU8djg6OlZhbHVlPiBWOEVsZW1lbnQ6OnNldEF0dHJpYnV0ZU5vZGVOU0NhbGxiYWNrKGNvbnN0
IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgSU5DX1NUQVRTKCJET00uRWxlbWVudC5zZXRB
dHRyaWJ1dGVOb2RlTlMoKSIpOwogICAgIGlmICghVjhBdHRyOjpIYXNJbnN0YW5jZShhcmdzWzBd
KSkKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTE9wdGlvbnNDb2xsZWN0
aW9uQ3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9W
OEhUTUxPcHRpb25zQ29sbGVjdGlvbkN1c3RvbS5jcHAJKHJldmlzaW9uIDUyMzQxKQorKysgV2Vi
Q29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MT3B0aW9uc0NvbGxlY3Rpb25DdXN0b20uY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yOSw4ICsyOSw5IEBACiAgKi8KIAogI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIlY4SFRNTE9wdGlvbnNDb2xsZWN0aW9uLmgiCisKICNpbmNsdWRlICJI
VE1MT3B0aW9uc0NvbGxlY3Rpb24uaCIKLQogI2luY2x1ZGUgIkhUTUxPcHRpb25FbGVtZW50Lmgi
CiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgogCkBAIC00Myw3ICs0NCw3IEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotQ0FMTEJBQ0tfRlVOQ19ERUNMKEhUTUxPcHRpb25zQ29sbGVjdGlv
blJlbW92ZSkKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEhUTUxPcHRpb25zQ29sbGVjdGlvbjo6
cmVtb3ZlQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBJTkNfU1RB
VFMoIkRPTS5IVE1MT3B0aW9uc0NvbGxlY3Rpb24ucmVtb3ZlKCkiKTsKICAgICBIVE1MT3B0aW9u
c0NvbGxlY3Rpb24qIGltcCA9IFY4RE9NV3JhcHBlcjo6Y29udmVydFRvTmF0aXZlT2JqZWN0PEhU
TUxPcHRpb25zQ29sbGVjdGlvbj4oVjhDbGFzc0luZGV4OjpIVE1MT1BUSU9OU0NPTExFQ1RJT04s
IGFyZ3MuSG9sZGVyKCkpOwpAQCAtNTEsNyArNTIsNyBAQAogICAgIHJldHVybiByZW1vdmVFbGVt
ZW50KGJhc2UsIGFyZ3MpOwogfQogCi1DQUxMQkFDS19GVU5DX0RFQ0woSFRNTE9wdGlvbnNDb2xs
ZWN0aW9uQWRkKQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SFRNTE9wdGlvbnNDb2xsZWN0aW9u
OjphZGRDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAgIElOQ19TVEFU
UygiRE9NLkhUTUxPcHRpb25zQ29sbGVjdGlvbi5hZGQoKSIpOwogICAgIGlmICghVjhIVE1MT3B0
aW9uRWxlbWVudDo6SGFzSW5zdGFuY2UoYXJnc1swXSkpIHsKSW5kZXg6IFdlYkNvcmUvYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4Q2xpcGJvYXJkQ3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L2JpbmRpbmdzL3Y4L2N1c3RvbS9WOENsaXBib2FyZEN1c3RvbS5jcHAJKHJldmlzaW9uIDUyMzQx
KQorKysgV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhDbGlwYm9hcmRDdXN0b20uY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yOSw4ICsyOSw5IEBACiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIlY4Q2xpcGJvYXJkLmgiCisKICNpbmNsdWRlICJDbGlwYm9hcmQuaCIKLQog
I2luY2x1ZGUgIkhUTUxJbWFnZUVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNp
bmNsdWRlICJJbnRQb2ludC5oIgpAQCAtNjIsNyArNjMsNyBAQAogICAgIHJldHVybiByZXN1bHQ7
CiB9CiAKLUNBTExCQUNLX0ZVTkNfREVDTChDbGlwYm9hcmRDbGVhckRhdGEpCit2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gVjhDbGlwYm9hcmQ6OmNsZWFyRGF0YUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1
bWVudHMmIGFyZ3MpCiB7CiAgICAgSU5DX1NUQVRTKCJET00uQ2xpcGJvYXJkLmNsZWFyRGF0YSgp
Iik7CiAgICAgQ2xpcGJvYXJkKiBjbGlwYm9hcmQgPSBWOERPTVdyYXBwZXI6OmNvbnZlcnRUb05h
dGl2ZU9iamVjdDxDbGlwYm9hcmQ+KFY4Q2xhc3NJbmRleDo6Q0xJUEJPQVJELCBhcmdzLkhvbGRl
cigpKTsKQEAgLTgwLDcgKzgxLDcgQEAKICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwogfQog
Ci1DQUxMQkFDS19GVU5DX0RFQ0woQ2xpcGJvYXJkR2V0RGF0YSkKK3Y4OjpIYW5kbGU8djg6OlZh
bHVlPiBWOENsaXBib2FyZDo6Z2V0RGF0YUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFy
Z3MpCiB7CiAgICAgSU5DX1NUQVRTKCJET00uQ2xpcGJvYXJkLmdldERhdGEoKSIpOwogICAgIENs
aXBib2FyZCogY2xpcGJvYXJkID0gVjhET01XcmFwcGVyOjpjb252ZXJ0VG9OYXRpdmVPYmplY3Q8
Q2xpcGJvYXJkPihWOENsYXNzSW5kZXg6OkNMSVBCT0FSRCwgYXJncy5Ib2xkZXIoKSk7CkBAIC05
Niw3ICs5Nyw3IEBACiAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKIH0KIAotQ0FMTEJBQ0tf
RlVOQ19ERUNMKENsaXBib2FyZFNldERhdGEpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhDbGlw
Ym9hcmQ6OnNldERhdGFDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAg
IElOQ19TVEFUUygiRE9NLkNsaXBib2FyZC5zZXREYXRhKCkiKTsKICAgICBDbGlwYm9hcmQqIGNs
aXBib2FyZCA9IFY4RE9NV3JhcHBlcjo6Y29udmVydFRvTmF0aXZlT2JqZWN0PENsaXBib2FyZD4o
VjhDbGFzc0luZGV4OjpDTElQQk9BUkQsIGFyZ3MuSG9sZGVyKCkpOwpAQCAtMTA5LDcgKzExMCw3
IEBACiAgICAgcmV0dXJuIHY4Qm9vbGVhbihjbGlwYm9hcmQtPnNldERhdGEodHlwZSwgZGF0YSkp
OwogfQogCi1DQUxMQkFDS19GVU5DX0RFQ0woQ2xpcGJvYXJkU2V0RHJhZ0ltYWdlKQordjg6Okhh
bmRsZTx2ODo6VmFsdWU+IFY4Q2xpcGJvYXJkOjpzZXREcmFnSW1hZ2VDYWxsYmFjayhjb25zdCB2
ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAgIElOQ19TVEFUUygiRE9NLkNsaXBib2FyZC5zZXRE
cmFnSW1hZ2UoKSIpOwogICAgIENsaXBib2FyZCogY2xpcGJvYXJkID0gVjhET01XcmFwcGVyOjpj
b252ZXJ0VG9OYXRpdmVPYmplY3Q8Q2xpcGJvYXJkPihWOENsYXNzSW5kZXg6OkNMSVBCT0FSRCwg
YXJncy5Ib2xkZXIoKSk7CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFNoYXJl
ZFdvcmtlckN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0
b20vVjhTaGFyZWRXb3JrZXJDdXN0b20uY3BwCShyZXZpc2lvbiA1MjM0MSkKKysrIFdlYkNvcmUv
YmluZGluZ3MvdjgvY3VzdG9tL1Y4U2hhcmVkV29ya2VyQ3VzdG9tLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNDUsNyArNDUsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUNBTExCQUNLX0ZV
TkNfREVDTChTaGFyZWRXb3JrZXJDb25zdHJ1Y3RvcikKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBW
OEN1c3RvbTo6djhTaGFyZWRXb3JrZXJDb25zdHJ1Y3RvckNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1
bWVudHMmIGFyZ3MpCiB7CiAgICAgSU5DX1NUQVRTKEwiRE9NLlNoYXJlZFdvcmtlci5Db25zdHJ1
Y3RvciIpOwogCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOExvY2F0aW9uQ3Vz
dG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOExvY2F0
aW9uQ3VzdG9tLmNwcAkocmV2aXNpb24gNTIzNDEpCisrKyBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1
c3RvbS9WOExvY2F0aW9uQ3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjEwLDcgKzIxMCw3
IEBACiBBQ0NFU1NPUl9HRVRURVIoTG9jYXRpb25SZWxvYWQpCiB7CiAgICAgSU5DX1NUQVRTKCJE
T00uTG9jYXRpb24ucmVsb2FkLl9nZXQiKTsKLSAgICBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6
OkZ1bmN0aW9uVGVtcGxhdGU+IHByaXZhdGVUZW1wbGF0ZSA9IHY4OjpQZXJzaXN0ZW50PHY4OjpG
dW5jdGlvblRlbXBsYXRlPjo6TmV3KHY4OjpGdW5jdGlvblRlbXBsYXRlOjpOZXcodjhMb2NhdGlv
blJlbG9hZENhbGxiYWNrLCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4oKSwgdjg6OlNpZ25hdHVyZTo6
TmV3KFY4TG9jYXRpb246OkdldFJhd1RlbXBsYXRlKCkpKSk7CisgICAgc3RhdGljIHY4OjpQZXJz
aXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBwcml2YXRlVGVtcGxhdGUgPSB2ODo6UGVyc2lz
dGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT46Ok5ldyh2ODo6RnVuY3Rpb25UZW1wbGF0ZTo6TmV3
KFY4TG9jYXRpb246OnJlbG9hZENhbGxiYWNrLCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4oKSwgdjg6
OlNpZ25hdHVyZTo6TmV3KFY4TG9jYXRpb246OkdldFJhd1RlbXBsYXRlKCkpKSk7CiAgICAgdjg6
OkhhbmRsZTx2ODo6T2JqZWN0PiBob2xkZXIgPSBWOERPTVdyYXBwZXI6Omxvb2t1cERPTVdyYXBw
ZXIoVjhDbGFzc0luZGV4OjpMT0NBVElPTiwgaW5mby5UaGlzKCkpOwogICAgIGlmIChob2xkZXIu
SXNFbXB0eSgpKSB7CiAgICAgICAgIC8vIGNhbiBvbmx5IHJlYWNoIGhlcmUgYnkgJ29iamVjdC5f
X3Byb3RvX18uZnVuYycsIGFuZCBpdCBzaG91bGQgcGFzc2VkCkBAIC0yMTksNyArMjE5LDcgQEAK
ICAgICB9CiAgICAgTG9jYXRpb24qIGltcCA9IFY4RE9NV3JhcHBlcjo6Y29udmVydFRvTmF0aXZl
T2JqZWN0PExvY2F0aW9uPihWOENsYXNzSW5kZXg6OkxPQ0FUSU9OLCBob2xkZXIpOwogICAgIGlm
ICghVjhCaW5kaW5nU2VjdXJpdHk6OmNhbkFjY2Vzc0ZyYW1lKFY4QmluZGluZ1N0YXRlOjpPbmx5
KCksIGltcC0+ZnJhbWUoKSwgZmFsc2UpKSB7Ci0gICAgICAgIHN0YXRpYyB2ODo6UGVyc2lzdGVu
dDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gc2hhcmVkVGVtcGxhdGUgPSB2ODo6UGVyc2lzdGVudDx2
ODo6RnVuY3Rpb25UZW1wbGF0ZT46Ok5ldyh2ODo6RnVuY3Rpb25UZW1wbGF0ZTo6TmV3KHY4TG9j
YXRpb25SZWxvYWRDYWxsYmFjaywgdjg6OkhhbmRsZTx2ODo6VmFsdWU+KCksIHY4OjpTaWduYXR1
cmU6Ok5ldyhWOExvY2F0aW9uOjpHZXRSYXdUZW1wbGF0ZSgpKSkpOworICAgICAgICBzdGF0aWMg
djg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHNoYXJlZFRlbXBsYXRlID0gdjg6
OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+OjpOZXcodjg6OkZ1bmN0aW9uVGVtcGxh
dGU6Ok5ldyhWOExvY2F0aW9uOjpyZWxvYWRDYWxsYmFjaywgdjg6OkhhbmRsZTx2ODo6VmFsdWU+
KCksIHY4OjpTaWduYXR1cmU6Ok5ldyhWOExvY2F0aW9uOjpHZXRSYXdUZW1wbGF0ZSgpKSkpOwog
ICAgICAgICByZXR1cm4gc2hhcmVkVGVtcGxhdGUtPkdldEZ1bmN0aW9uKCk7CiAgICAgfQogICAg
IHJldHVybiBwcml2YXRlVGVtcGxhdGUtPkdldEZ1bmN0aW9uKCk7CkBAIC0yMjgsNyArMjI4LDcg
QEAKIEFDQ0VTU09SX0dFVFRFUihMb2NhdGlvblJlcGxhY2UpCiB7CiAgICAgSU5DX1NUQVRTKCJE
T00uTG9jYXRpb24ucmVwbGFjZS5fZ2V0Iik7Ci0gICAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4
OjpGdW5jdGlvblRlbXBsYXRlPiBwcml2YXRlVGVtcGxhdGUgPSB2ODo6UGVyc2lzdGVudDx2ODo6
RnVuY3Rpb25UZW1wbGF0ZT46Ok5ldyh2ODo6RnVuY3Rpb25UZW1wbGF0ZTo6TmV3KHY4TG9jYXRp
b25SZXBsYWNlQ2FsbGJhY2ssIHY4OjpIYW5kbGU8djg6OlZhbHVlPigpLCB2ODo6U2lnbmF0dXJl
OjpOZXcoVjhMb2NhdGlvbjo6R2V0UmF3VGVtcGxhdGUoKSkpKTsKKyAgICBzdGF0aWMgdjg6OlBl
cnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHByaXZhdGVUZW1wbGF0ZSA9IHY4OjpQZXJz
aXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPjo6TmV3KHY4OjpGdW5jdGlvblRlbXBsYXRlOjpO
ZXcoVjhMb2NhdGlvbjo6cmVwbGFjZUNhbGxiYWNrLCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4oKSwg
djg6OlNpZ25hdHVyZTo6TmV3KFY4TG9jYXRpb246OkdldFJhd1RlbXBsYXRlKCkpKSk7CiAgICAg
djg6OkhhbmRsZTx2ODo6T2JqZWN0PiBob2xkZXIgPSBWOERPTVdyYXBwZXI6Omxvb2t1cERPTVdy
YXBwZXIoVjhDbGFzc0luZGV4OjpMT0NBVElPTiwgaW5mby5UaGlzKCkpOwogICAgIGlmIChob2xk
ZXIuSXNFbXB0eSgpKSB7CiAgICAgICAgIC8vIGNhbiBvbmx5IHJlYWNoIGhlcmUgYnkgJ29iamVj
dC5fX3Byb3RvX18uZnVuYycsIGFuZCBpdCBzaG91bGQgcGFzc2VkCkBAIC0yMzcsNyArMjM3LDcg
QEAKICAgICB9CiAgICAgTG9jYXRpb24qIGltcCA9IFY4RE9NV3JhcHBlcjo6Y29udmVydFRvTmF0
aXZlT2JqZWN0PExvY2F0aW9uPihWOENsYXNzSW5kZXg6OkxPQ0FUSU9OLCBob2xkZXIpOwogICAg
IGlmICghVjhCaW5kaW5nU2VjdXJpdHk6OmNhbkFjY2Vzc0ZyYW1lKFY4QmluZGluZ1N0YXRlOjpP
bmx5KCksIGltcC0+ZnJhbWUoKSwgZmFsc2UpKSB7Ci0gICAgICAgIHN0YXRpYyB2ODo6UGVyc2lz
dGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gc2hhcmVkVGVtcGxhdGUgPSB2ODo6UGVyc2lzdGVu
dDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT46Ok5ldyh2ODo6RnVuY3Rpb25UZW1wbGF0ZTo6TmV3KHY4
TG9jYXRpb25SZXBsYWNlQ2FsbGJhY2ssIHY4OjpIYW5kbGU8djg6OlZhbHVlPigpLCB2ODo6U2ln
bmF0dXJlOjpOZXcoVjhMb2NhdGlvbjo6R2V0UmF3VGVtcGxhdGUoKSkpKTsKKyAgICAgICAgc3Rh
dGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBzaGFyZWRUZW1wbGF0ZSA9
IHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPjo6TmV3KHY4OjpGdW5jdGlvblRl
bXBsYXRlOjpOZXcoVjhMb2NhdGlvbjo6cmVwbGFjZUNhbGxiYWNrLCB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4oKSwgdjg6OlNpZ25hdHVyZTo6TmV3KFY4TG9jYXRpb246OkdldFJhd1RlbXBsYXRlKCkp
KSk7CiAgICAgICAgIHJldHVybiBzaGFyZWRUZW1wbGF0ZS0+R2V0RnVuY3Rpb24oKTsKICAgICB9
CiAgICAgcmV0dXJuIHByaXZhdGVUZW1wbGF0ZS0+R2V0RnVuY3Rpb24oKTsKQEAgLTI0Nyw3ICsy
NDcsNyBAQAogewogICAgIElOQ19TVEFUUygiRE9NLkxvY2F0aW9uLmFzc2lnbi5fZ2V0Iik7CiAg
ICAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBwcml2YXRlVGVt
cGxhdGUgPQotICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPjo6TmV3KHY4
OjpGdW5jdGlvblRlbXBsYXRlOjpOZXcodjhMb2NhdGlvbkFzc2lnbkNhbGxiYWNrLCB2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4oKSwgdjg6OlNpZ25hdHVyZTo6TmV3KFY4TG9jYXRpb246OkdldFJhd1Rl
bXBsYXRlKCkpKSk7CisgICAgICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRl
Pjo6TmV3KHY4OjpGdW5jdGlvblRlbXBsYXRlOjpOZXcoVjhMb2NhdGlvbjo6YXNzaWduQ2FsbGJh
Y2ssIHY4OjpIYW5kbGU8djg6OlZhbHVlPigpLCB2ODo6U2lnbmF0dXJlOjpOZXcoVjhMb2NhdGlv
bjo6R2V0UmF3VGVtcGxhdGUoKSkpKTsKICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGhvbGRl
ciA9IFY4RE9NV3JhcHBlcjo6bG9va3VwRE9NV3JhcHBlcihWOENsYXNzSW5kZXg6OkxPQ0FUSU9O
LCBpbmZvLlRoaXMoKSk7CiAgICAgaWYgKGhvbGRlci5Jc0VtcHR5KCkpIHsKICAgICAgICAgLy8g
Y2FuIG9ubHkgcmVhY2ggaGVyZSBieSAnb2JqZWN0Ll9fcHJvdG9fXy5mdW5jJywgYW5kIGl0IHNo
b3VsZCBwYXNzZWQKQEAgLTI1NiwxMyArMjU2LDEzIEBACiAgICAgfQogICAgIExvY2F0aW9uKiBp
bXAgPSBWOERPTVdyYXBwZXI6OmNvbnZlcnRUb05hdGl2ZU9iamVjdDxMb2NhdGlvbj4oVjhDbGFz
c0luZGV4OjpMT0NBVElPTiwgaG9sZGVyKTsKICAgICBpZiAoIVY4QmluZGluZ1NlY3VyaXR5Ojpj
YW5BY2Nlc3NGcmFtZShWOEJpbmRpbmdTdGF0ZTo6T25seSgpLCBpbXAtPmZyYW1lKCksIGZhbHNl
KSkgewotICAgICAgICBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+
IHNoYXJlZFRlbXBsYXRlID0gdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+OjpO
ZXcodjg6OkZ1bmN0aW9uVGVtcGxhdGU6Ok5ldyh2OExvY2F0aW9uQXNzaWduQ2FsbGJhY2ssIHY4
OjpIYW5kbGU8djg6OlZhbHVlPigpLCB2ODo6U2lnbmF0dXJlOjpOZXcoVjhMb2NhdGlvbjo6R2V0
UmF3VGVtcGxhdGUoKSkpKTsKKyAgICAgICAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5j
dGlvblRlbXBsYXRlPiBzaGFyZWRUZW1wbGF0ZSA9IHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlv
blRlbXBsYXRlPjo6TmV3KHY4OjpGdW5jdGlvblRlbXBsYXRlOjpOZXcoVjhMb2NhdGlvbjo6YXNz
aWduQ2FsbGJhY2ssIHY4OjpIYW5kbGU8djg6OlZhbHVlPigpLCB2ODo6U2lnbmF0dXJlOjpOZXco
VjhMb2NhdGlvbjo6R2V0UmF3VGVtcGxhdGUoKSkpKTsKICAgICAgICAgcmV0dXJuIHNoYXJlZFRl
bXBsYXRlLT5HZXRGdW5jdGlvbigpOwogICAgIH0KICAgICByZXR1cm4gcHJpdmF0ZVRlbXBsYXRl
LT5HZXRGdW5jdGlvbigpOwogfQogCi1DQUxMQkFDS19GVU5DX0RFQ0woTG9jYXRpb25SZWxvYWQp
Cit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhMb2NhdGlvbjo6cmVsb2FkQ2FsbGJhY2soY29uc3Qg
djg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICAvLyBGSVhNRTogd2UgaWdub3JlIHRoZSAiZm9y
Y2VnZXQiIHBhcmFtZXRlci4KIApAQCAtMjc5LDcgKzI3OSw3IEBACiAgICAgcmV0dXJuIHY4OjpV
bmRlZmluZWQoKTsKIH0KIAotQ0FMTEJBQ0tfRlVOQ19ERUNMKExvY2F0aW9uUmVwbGFjZSkKK3Y4
OjpIYW5kbGU8djg6OlZhbHVlPiBWOExvY2F0aW9uOjpyZXBsYWNlQ2FsbGJhY2soY29uc3Qgdjg6
OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBJTkNfU1RBVFMoIkRPTS5Mb2NhdGlvbi5yZXBsYWNl
Iik7CiAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBob2xkZXIgPSBhcmdzLkhvbGRlcigpOwpA
QCAtMzAwLDcgKzMwMCw3IEBACiAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKIH0KIAotQ0FM
TEJBQ0tfRlVOQ19ERUNMKExvY2F0aW9uQXNzaWduKQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4
TG9jYXRpb246OmFzc2lnbkNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAg
ICAgSU5DX1NUQVRTKCJET00uTG9jYXRpb24uYXNzaWduIik7CiAgICAgdjg6OkhhbmRsZTx2ODo6
T2JqZWN0PiBob2xkZXIgPSBhcmdzLkhvbGRlcigpOwpAQCAtMzIxLDcgKzMyMSw3IEBACiAgICAg
cmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKIH0KIAotQ0FMTEJBQ0tfRlVOQ19ERUNMKExvY2F0aW9u
VmFsdWVPZikKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOExvY2F0aW9uOjp2YWx1ZU9mQ2FsbGJh
Y2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICAvLyBKdXN0IHJldHVybiB0aGUg
dGhpcyBvYmplY3QgdGhlIHdheSB0aGUgbm9ybWFsIHZhbHVlT2YgZnVuY3Rpb24KICAgICAvLyBv
biB0aGUgT2JqZWN0IHByb3RvdHlwZSB3b3VsZC4gIFRoZSB2YWx1ZU9mIGZ1bmN0aW9uIGlzIG9u
bHkKQEAgLTMzMSw3ICszMzEsNyBAQAogICAgIHJldHVybiBhcmdzLlRoaXMoKTsKIH0KIAotQ0FM
TEJBQ0tfRlVOQ19ERUNMKExvY2F0aW9uVG9TdHJpbmcpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
VjhMb2NhdGlvbjo6dG9TdHJpbmdDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQog
ewogICAgIElOQ19TVEFUUygiRE9NLkxvY2F0aW9uLnRvU3RyaW5nIik7CiAgICAgdjg6OkhhbmRs
ZTx2ODo6T2JqZWN0PiBob2xkZXIgPSBhcmdzLkhvbGRlcigpOwpJbmRleDogV2ViQ29yZS9iaW5k
aW5ncy92OC9jdXN0b20vVjhIVE1MU2VsZWN0RWxlbWVudEN1c3RvbS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MU2VsZWN0RWxlbWVudEN1c3RvbS5j
cHAJKHJldmlzaW9uIDUyMzQxKQorKysgV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1M
U2VsZWN0RWxlbWVudEN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5LDYgKzM5LDcgQEAK
ICNpbmNsdWRlICJWOENvbGxlY3Rpb24uaCIKICNpbmNsdWRlICJWOEN1c3RvbUJpbmRpbmcuaCIK
ICNpbmNsdWRlICJWOEhUTUxPcHRpb25FbGVtZW50LmgiCisjaW5jbHVkZSAiVjhIVE1MU2VsZWN0
RWxlbWVudC5oIgogI2luY2x1ZGUgIlY4TmFtZWROb2Rlc0NvbGxlY3Rpb24uaCIKICNpbmNsdWRl
ICJWOFByb3h5LmgiCiAKQEAgLTkwLDcgKzkxLDcgQEAKICAgICByZXR1cm4gdG9PcHRpb25zQ29s
bGVjdGlvblNldHRlcihpbmRleCwgdmFsdWUsIHNlbGVjdCk7CiB9CiAKLUNBTExCQUNLX0ZVTkNf
REVDTChIVE1MU2VsZWN0RWxlbWVudFJlbW92ZSkKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEhU
TUxTZWxlY3RFbGVtZW50OjpyZW1vdmVDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdz
KQogewogICAgIElOQ19TVEFUUygiRE9NLkhUTUxTZWxlY3RFbGVtZW50LnJlbW92ZSIpOwogICAg
IEhUTUxTZWxlY3RFbGVtZW50KiBpbXAgPSBWOERPTVdyYXBwZXI6OmNvbnZlcnRET01XcmFwcGVy
VG9Ob2RlPEhUTUxTZWxlY3RFbGVtZW50PihhcmdzLkhvbGRlcigpKTsKSW5kZXg6IFdlYkNvcmUv
YmluZGluZ3MvdjgvY3VzdG9tL1Y4WE1MSHR0cFJlcXVlc3RVcGxvYWRDdXN0b20uY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4WE1MSHR0cFJlcXVlc3RVcGxv
YWRDdXN0b20uY3BwCShyZXZpc2lvbiA1MjM0MSkKKysrIFdlYkNvcmUvYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4WE1MSHR0cFJlcXVlc3RVcGxvYWRDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
OSw3ICsyOSw3IEBACiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlhNTEh0
dHBSZXF1ZXN0VXBsb2FkLmgiCisjaW5jbHVkZSAiVjhYTUxIdHRwUmVxdWVzdFVwbG9hZC5oIgog
CiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgogI2luY2x1ZGUgIlY4QmluZGluZy5oIgpAQCAt
MzcsMTIgKzM3LDEzIEBACiAjaW5jbHVkZSAiVjhQcm94eS5oIgogI2luY2x1ZGUgIlY4VXRpbGl0
aWVzLmgiCiAjaW5jbHVkZSAiWE1MSHR0cFJlcXVlc3QuaCIKKyNpbmNsdWRlICJYTUxIdHRwUmVx
dWVzdFVwbG9hZC5oIgogCiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi1DQUxMQkFDS19GVU5DX0RFQ0woWE1MSHR0cFJlcXVlc3RVcGxvYWRBZGRF
dmVudExpc3RlbmVyKQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4WE1MSHR0cFJlcXVlc3RVcGxv
YWQ6OmFkZEV2ZW50TGlzdGVuZXJDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQog
ewogICAgIElOQ19TVEFUUygiRE9NLlhNTEh0dHBSZXF1ZXN0VXBsb2FkLmFkZEV2ZW50TGlzdGVu
ZXIoKSIpOwogICAgIFhNTEh0dHBSZXF1ZXN0VXBsb2FkKiB4bWxIdHRwUmVxdWVzdFVwbG9hZCA9
IFY4RE9NV3JhcHBlcjo6Y29udmVydFRvTmF0aXZlT2JqZWN0PFhNTEh0dHBSZXF1ZXN0VXBsb2Fk
PihWOENsYXNzSW5kZXg6OlhNTEhUVFBSRVFVRVNUVVBMT0FELCBhcmdzLkhvbGRlcigpKTsKQEAg
LTYwLDcgKzYxLDcgQEAKICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwogfQogCi1DQUxMQkFD
S19GVU5DX0RFQ0woWE1MSHR0cFJlcXVlc3RVcGxvYWRSZW1vdmVFdmVudExpc3RlbmVyKQordjg6
OkhhbmRsZTx2ODo6VmFsdWU+IFY4WE1MSHR0cFJlcXVlc3RVcGxvYWQ6OnJlbW92ZUV2ZW50TGlz
dGVuZXJDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAgIElOQ19TVEFU
UygiRE9NLlhNTEh0dHBSZXF1ZXN0VXBsb2FkLnJlbW92ZUV2ZW50TGlzdGVuZXIoKSIpOwogICAg
IFhNTEh0dHBSZXF1ZXN0VXBsb2FkKiB4bWxIdHRwUmVxdWVzdFVwbG9hZCA9IFY4RE9NV3JhcHBl
cjo6Y29udmVydFRvTmF0aXZlT2JqZWN0PFhNTEh0dHBSZXF1ZXN0VXBsb2FkPihWOENsYXNzSW5k
ZXg6OlhNTEhUVFBSRVFVRVNUVVBMT0FELCBhcmdzLkhvbGRlcigpKTsKQEAgLTc5LDcgKzgwLDcg
QEAKICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwogfQogCi1DQUxMQkFDS19GVU5DX0RFQ0wo
WE1MSHR0cFJlcXVlc3RVcGxvYWREaXNwYXRjaEV2ZW50KQordjg6OkhhbmRsZTx2ODo6VmFsdWU+
IFY4WE1MSHR0cFJlcXVlc3RVcGxvYWQ6OmRpc3BhdGNoRXZlbnRDYWxsYmFjayhjb25zdCB2ODo6
QXJndW1lbnRzJiBhcmdzKQogewogICAgIElOQ19TVEFUUygiRE9NLlhNTEh0dHBSZXF1ZXN0VXBs
b2FkLmRpc3BhdGNoRXZlbnQoKSIpOwogICAgIHJldHVybiB0aHJvd0Vycm9yKE5PVF9TVVBQT1JU
RURfRVJSKTsKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4WFBhdGhFdmFsdWF0
b3JDb25zdHJ1Y3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0
b20vVjhYUGF0aEV2YWx1YXRvckNvbnN0cnVjdG9yLmNwcAkocmV2aXNpb24gNTIzNDEpCisrKyBX
ZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFhQYXRoRXZhbHVhdG9yQ29uc3RydWN0b3IuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yOSwxNCArMjksMTUgQEAKICAqLwogCiAjaW5jbHVkZSAiY29u
ZmlnLmgiCi0jaW5jbHVkZSAiWFBhdGhFdmFsdWF0b3IuaCIKKyNpbmNsdWRlICJWOFhQYXRoRXZh
bHVhdG9yLmgiCiAKICNpbmNsdWRlICJWOEJpbmRpbmcuaCIKICNpbmNsdWRlICJWOFByb3h5Lmgi
CisjaW5jbHVkZSAiWFBhdGhFdmFsdWF0b3IuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1D
QUxMQkFDS19GVU5DX0RFQ0woWFBhdGhFdmFsdWF0b3JDb25zdHJ1Y3RvcikKK3Y4OjpIYW5kbGU8
djg6OlZhbHVlPiBWOEN1c3RvbTo6djhYUGF0aEV2YWx1YXRvckNvbnN0cnVjdG9yQ2FsbGJhY2so
Y29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBJTkNfU1RBVFMoIkRPTS5YUGF0aEV2
YWx1YXRvci5Db25zdHJ1Y3RvciIpOwogICAgIHJldHVybiBWOFByb3h5Ojpjb25zdHJ1Y3RET01P
YmplY3Q8VjhDbGFzc0luZGV4OjpYUEFUSEVWQUxVQVRPUiwgWFBhdGhFdmFsdWF0b3I+KGFyZ3Mp
OwpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhXZWJTb2NrZXRDdXN0b20uY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4V2ViU29ja2V0Q3Vz
dG9tLmNwcAkocmV2aXNpb24gNTIzNDEpCisrKyBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9W
OFdlYlNvY2tldEN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyLDE5ICszMiwyMCBAQAog
CiAjaWYgRU5BQkxFKFdFQl9TT0NLRVRTKQogCi0jaW5jbHVkZSAiV2ViU29ja2V0LmgiCisjaW5j
bHVkZSAiVjhXZWJTb2NrZXQuaCIKIAogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiU2V0
dGluZ3MuaCIKICNpbmNsdWRlICJWOEJpbmRpbmcuaCIKICNpbmNsdWRlICJWOFByb3h5LmgiCiAj
aW5jbHVkZSAiVjhVdGlsaXRpZXMuaCIKKyNpbmNsdWRlICJXZWJTb2NrZXQuaCIKICNpbmNsdWRl
ICJXb3JrZXJDb250ZXh0LmgiCiAjaW5jbHVkZSAiV29ya2VyQ29udGV4dEV4ZWN1dGlvblByb3h5
LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotQ0FMTEJBQ0tfRlVOQ19ERUNMKFdlYlNvY2tl
dEFkZEV2ZW50TGlzdGVuZXIpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhXZWJTb2NrZXQ6OmFk
ZEV2ZW50TGlzdGVuZXJDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAg
IElOQ19TVEFUUygiRE9NLldlYlNvY2tldC5hZGRFdmVudExpc3RlbmVyKCkiKTsKICAgICBXZWJT
b2NrZXQqIHdlYlNvY2tldCA9IFY4RE9NV3JhcHBlcjo6Y29udmVydFRvTmF0aXZlT2JqZWN0PFdl
YlNvY2tldD4oVjhDbGFzc0luZGV4OjpXRUJTT0NLRVQsIGFyZ3MuSG9sZGVyKCkpOwpAQCAtNjAs
NyArNjEsNyBAQAogICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CiB9CiAKLUNBTExCQUNLX0ZV
TkNfREVDTChXZWJTb2NrZXRSZW1vdmVFdmVudExpc3RlbmVyKQordjg6OkhhbmRsZTx2ODo6VmFs
dWU+IFY4V2ViU29ja2V0OjpyZW1vdmVFdmVudExpc3RlbmVyQ2FsbGJhY2soY29uc3Qgdjg6OkFy
Z3VtZW50cyYgYXJncykKIHsKICAgICBJTkNfU1RBVFMoIkRPTS5XZWJTb2NrZXQucmVtb3ZlRXZl
bnRMaXN0ZW5lcigpIik7CiAgICAgV2ViU29ja2V0KiB3ZWJTb2NrZXQgPSBWOERPTVdyYXBwZXI6
OmNvbnZlcnRUb05hdGl2ZU9iamVjdDxXZWJTb2NrZXQ+KFY4Q2xhc3NJbmRleDo6V0VCU09DS0VU
LCBhcmdzLkhvbGRlcigpKTsKQEAgLTc1LDcgKzc2LDcgQEAKICAgICByZXR1cm4gdjg6OlVuZGVm
aW5lZCgpOwogfQogCi1DQUxMQkFDS19GVU5DX0RFQ0woV2ViU29ja2V0Q29uc3RydWN0b3IpCit2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhDdXN0b206OnY4V2ViU29ja2V0Q29uc3RydWN0b3JDYWxs
YmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAgIElOQ19TVEFUUygiRE9NLldl
YlNvY2tldC5Db25zdHJ1Y3RvciIpOwogCkBAIC0xMjgsNyArMTI5LDcgQEAKICAgICByZXR1cm4g
YXJncy5Ib2xkZXIoKTsKIH0KIAotQ0FMTEJBQ0tfRlVOQ19ERUNMKFdlYlNvY2tldFNlbmQpCit2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhXZWJTb2NrZXQ6OnNlbmRDYWxsYmFjayhjb25zdCB2ODo6
QXJndW1lbnRzJiBhcmdzKQogewogICAgIElOQ19TVEFUUygiRE9NLldlYlNvY2tldC5zZW5kKCki
KTsKICAgICBXZWJTb2NrZXQqIHdlYlNvY2tldCA9IFY4RE9NV3JhcHBlcjo6Y29udmVydFRvTmF0
aXZlT2JqZWN0PFdlYlNvY2tldD4oVjhDbGFzc0luZGV4OjpXRUJTT0NLRVQsIGFyZ3MuSG9sZGVy
KCkpOwpAQCAtMTQ2LDcgKzE0Nyw3IEBACiAgICAgcmV0dXJuIHY4Qm9vbGVhbihyZXQpOwogfQog
Ci1DQUxMQkFDS19GVU5DX0RFQ0woV2ViU29ja2V0Q2xvc2UpCit2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gVjhXZWJTb2NrZXQ6OmNsb3NlQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykK
IHsKICAgICBJTkNfU1RBVFMoIkRPTS5XZWJTb2NrZXQuY2xvc2UoKSIpOwogICAgIFdlYlNvY2tl
dCogd2ViU29ja2V0ID0gVjhET01XcmFwcGVyOjpjb252ZXJ0VG9OYXRpdmVPYmplY3Q8V2ViU29j
a2V0PihWOENsYXNzSW5kZXg6OldFQlNPQ0tFVCwgYXJncy5Ib2xkZXIoKSk7CkluZGV4OiBXZWJD
b3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE5vdGlmaWNhdGlvbkNlbnRlckN1c3RvbS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhOb3RpZmljYXRpb25DZW50
ZXJDdXN0b20uY3BwCShyZXZpc2lvbiA1MjM0MSkKKysrIFdlYkNvcmUvYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4Tm90aWZpY2F0aW9uQ2VudGVyQ3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEs
NiArMzEsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogCiAjaWYgRU5BQkxFKE5PVElGSUNBVElP
TlMpCisjaW5jbHVkZSAiVjhOb3RpZmljYXRpb25DZW50ZXIuaCIKIAogI2luY2x1ZGUgIk5vdElt
cGxlbWVudGVkLmgiCiAjaW5jbHVkZSAiTm90aWZpY2F0aW9uLmgiCkBAIC0zOSw2ICs0MCw3IEBA
CiAjaW5jbHVkZSAiVjhDdXN0b21CaW5kaW5nLmgiCiAjaW5jbHVkZSAiVjhDdXN0b21FdmVudExp
c3RlbmVyLmgiCiAjaW5jbHVkZSAiVjhDdXN0b21Wb2lkQ2FsbGJhY2suaCIKKyNpbmNsdWRlICJW
OE5vdGlmaWNhdGlvbi5oIgogI2luY2x1ZGUgIlY4UHJveHkuaCIKICNpbmNsdWRlICJWOFV0aWxp
dGllcy5oIgogI2luY2x1ZGUgIldvcmtlckNvbnRleHQuaCIKQEAgLTQ2LDcgKzQ4LDcgQEAKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi1DQUxMQkFDS19GVU5DX0RFQ0woTm90aWZpY2F0aW9uQWRk
RXZlbnRMaXN0ZW5lcikKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOE5vdGlmaWNhdGlvbjo6YWRk
RXZlbnRMaXN0ZW5lckNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAg
SU5DX1NUQVRTKCJET00uTm90aWZpY2F0aW9uLmFkZEV2ZW50TGlzdGVuZXIoKSIpOwogICAgIE5v
dGlmaWNhdGlvbiogbm90aWZpY2F0aW9uID0gVjhET01XcmFwcGVyOjpjb252ZXJ0VG9OYXRpdmVP
YmplY3Q8Tm90aWZpY2F0aW9uPihWOENsYXNzSW5kZXg6Ok5PVElGSUNBVElPTiwgYXJncy5Ib2xk
ZXIoKSk7CkBAIC02Miw3ICs2NCw3IEBACiAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKIH0K
IAotQ0FMTEJBQ0tfRlVOQ19ERUNMKE5vdGlmaWNhdGlvblJlbW92ZUV2ZW50TGlzdGVuZXIpCit2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhOb3RpZmljYXRpb246OnJlbW92ZUV2ZW50TGlzdGVuZXJD
YWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAgIElOQ19TVEFUUygiRE9N
Lk5vdGlmaWNhdGlvbi5yZW1vdmVFdmVudExpc3RlbmVyKCkiKTsKICAgICBOb3RpZmljYXRpb24q
IG5vdGlmaWNhdGlvbiA9IFY4RE9NV3JhcHBlcjo6Y29udmVydFRvTmF0aXZlT2JqZWN0PE5vdGlm
aWNhdGlvbj4oVjhDbGFzc0luZGV4OjpOT1RJRklDQVRJT04sIGFyZ3MuSG9sZGVyKCkpOwpAQCAt
NzgsNyArODAsNyBAQAogICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CiB9CiAKLUNBTExCQUNL
X0ZVTkNfREVDTChOb3RpZmljYXRpb25DZW50ZXJDcmVhdGVIVE1MTm90aWZpY2F0aW9uKQordjg6
OkhhbmRsZTx2ODo6VmFsdWU+IFY4Tm90aWZpY2F0aW9uQ2VudGVyOjpjcmVhdGVIVE1MTm90aWZp
Y2F0aW9uQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBJTkNfU1RB
VFMoTCJET00uTm90aWZpY2F0aW9uQ2VudGVyLkNyZWF0ZUhUTUxOb3RpZmljYXRpb24oKSIpOwog
ICAgIE5vdGlmaWNhdGlvbkNlbnRlciogbm90aWZpY2F0aW9uQ2VudGVyID0gVjhET01XcmFwcGVy
Ojpjb252ZXJ0VG9OYXRpdmVPYmplY3Q8Tm90aWZpY2F0aW9uQ2VudGVyPihWOENsYXNzSW5kZXg6
Ok5PVElGSUNBVElPTkNFTlRFUiwgYXJncy5Ib2xkZXIoKSk7CkBAIC05Niw3ICs5OCw3IEBACiAg
ICAgcmV0dXJuIFY4RE9NV3JhcHBlcjo6Y29udmVydFRvVjhPYmplY3QoVjhDbGFzc0luZGV4OjpO
T1RJRklDQVRJT04sIG5vdGlmaWNhdGlvbi5nZXQoKSk7CiB9CiAKLUNBTExCQUNLX0ZVTkNfREVD
TChOb3RpZmljYXRpb25DZW50ZXJDcmVhdGVOb3RpZmljYXRpb24pCit2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gVjhOb3RpZmljYXRpb25DZW50ZXI6OmNyZWF0ZU5vdGlmaWNhdGlvbkNhbGxiYWNrKGNv
bnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgSU5DX1NUQVRTKEwiRE9NLk5vdGlmaWNh
dGlvbkNlbnRlci5DcmVhdGVOb3RpZmljYXRpb24oKSIpOwogICAgIE5vdGlmaWNhdGlvbkNlbnRl
ciogbm90aWZpY2F0aW9uQ2VudGVyID0gVjhET01XcmFwcGVyOjpjb252ZXJ0VG9OYXRpdmVPYmpl
Y3Q8Tm90aWZpY2F0aW9uQ2VudGVyPihWOENsYXNzSW5kZXg6Ok5PVElGSUNBVElPTkNFTlRFUiwg
YXJncy5Ib2xkZXIoKSk7CkBAIC0xMTMsNyArMTE1LDcgQEAKICAgICByZXR1cm4gVjhET01XcmFw
cGVyOjpjb252ZXJ0VG9WOE9iamVjdChWOENsYXNzSW5kZXg6Ok5PVElGSUNBVElPTiwgbm90aWZp
Y2F0aW9uLmdldCgpKTsKIH0KIAotQ0FMTEJBQ0tfRlVOQ19ERUNMKE5vdGlmaWNhdGlvbkNlbnRl
clJlcXVlc3RQZXJtaXNzaW9uKQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4Tm90aWZpY2F0aW9u
Q2VudGVyOjpyZXF1ZXN0UGVybWlzc2lvbkNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFy
Z3MpCiB7CiAgICAgSU5DX1NUQVRTKEwiRE9NLk5vdGlmaWNhdGlvbkNlbnRlci5SZXF1ZXN0UGVy
bWlzc2lvbigpIik7CiAgICAgTm90aWZpY2F0aW9uQ2VudGVyKiBub3RpZmljYXRpb25DZW50ZXIg
PSBWOERPTVdyYXBwZXI6OmNvbnZlcnRUb05hdGl2ZU9iamVjdDxOb3RpZmljYXRpb25DZW50ZXI+
KFY4Q2xhc3NJbmRleDo6Tk9USUZJQ0FUSU9OQ0VOVEVSLCBhcmdzLkhvbGRlcigpKTsKSW5kZXg6
IFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4TWVzc2FnZVBvcnRDdXN0b20uY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4TWVzc2FnZVBvcnRDdXN0b20u
Y3BwCShyZXZpc2lvbiA1MjM0MSkKKysrIFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4TWVz
c2FnZVBvcnRDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Myw3ICs0Myw3IEBACiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotQ0FMTEJBQ0tfRlVOQ19ERUNMKE1lc3NhZ2VQb3J0QWRkRXZl
bnRMaXN0ZW5lcikKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOE1lc3NhZ2VQb3J0OjphZGRFdmVu
dExpc3RlbmVyQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBJTkNf
U1RBVFMoIkRPTS5NZXNzYWdlUG9ydC5hZGRFdmVudExpc3RlbmVyKCkiKTsKICAgICBNZXNzYWdl
UG9ydCogbWVzc2FnZVBvcnQgPSBWOERPTVdyYXBwZXI6OmNvbnZlcnRUb05hdGl2ZU9iamVjdDxN
ZXNzYWdlUG9ydD4oVjhDbGFzc0luZGV4OjpNRVNTQUdFUE9SVCwgYXJncy5Ib2xkZXIoKSk7CkBA
IC01OCw3ICs1OCw3IEBACiAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKIH0KIAotQ0FMTEJB
Q0tfRlVOQ19ERUNMKE1lc3NhZ2VQb3J0UmVtb3ZlRXZlbnRMaXN0ZW5lcikKK3Y4OjpIYW5kbGU8
djg6OlZhbHVlPiBWOE1lc3NhZ2VQb3J0OjpyZW1vdmVFdmVudExpc3RlbmVyQ2FsbGJhY2soY29u
c3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBJTkNfU1RBVFMoIkRPTS5NZXNzYWdlUG9y
dC5yZW1vdmVFdmVudExpc3RlbmVyKCkiKTsKICAgICBNZXNzYWdlUG9ydCogbWVzc2FnZVBvcnQg
PSBWOERPTVdyYXBwZXI6OmNvbnZlcnRUb05hdGl2ZU9iamVjdDxNZXNzYWdlUG9ydD4oVjhDbGFz
c0luZGV4OjpNRVNTQUdFUE9SVCwgYXJncy5Ib2xkZXIoKSk7CkBAIC03NCw3ICs3NCw3IEBACiAg
ICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKIH0KIAotQ0FMTEJBQ0tfRlVOQ19ERUNMKE1lc3Nh
Z2VQb3J0UG9zdE1lc3NhZ2UpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhNZXNzYWdlUG9ydDo6
cG9zdE1lc3NhZ2VDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAgIElO
Q19TVEFUUygiRE9NLk1lc3NhZ2VQb3J0LnBvc3RNZXNzYWdlIik7CiAgICAgTWVzc2FnZVBvcnQq
IG1lc3NhZ2VQb3J0ID0gVjhET01XcmFwcGVyOjpjb252ZXJ0VG9OYXRpdmVPYmplY3Q8TWVzc2Fn
ZVBvcnQ+KFY4Q2xhc3NJbmRleDo6TUVTU0FHRVBPUlQsIGFyZ3MuSG9sZGVyKCkpOwpJbmRleDog
V2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhYU0xUUHJvY2Vzc29yQ3VzdG9tLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFhTTFRQcm9jZXNzb3JDdXN0
b20uY3BwCShyZXZpc2lvbiA1MjM0MSkKKysrIFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4
WFNMVFByb2Nlc3NvckN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDcgKzI5LDcgQEAK
ICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiWFNMVFByb2Nlc3Nvci5oIgor
I2luY2x1ZGUgIlY4WFNMVFByb2Nlc3Nvci5oIgogCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNp
bmNsdWRlICJEb2N1bWVudEZyYWdtZW50LmgiCkBAIC00MCwxOSArNDAsMjAgQEAKICNpbmNsdWRl
ICJWOERvY3VtZW50LmgiCiAjaW5jbHVkZSAiVjhOb2RlLmgiCiAjaW5jbHVkZSAiVjhQcm94eS5o
IgorI2luY2x1ZGUgIlhTTFRQcm9jZXNzb3IuaCIKIAogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1DQUxMQkFDS19GVU5DX0RFQ0woWFNMVFByb2Nlc3Nv
ckNvbnN0cnVjdG9yKQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4Q3VzdG9tOjp2OFhTTFRQcm9j
ZXNzb3JDb25zdHJ1Y3RvckNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAg
ICAgSU5DX1NUQVRTKCJET00uWFNMVFByb2Nlc3Nvci5Db25zdHJ1Y3RvciIpOwogICAgIHJldHVy
biBWOFByb3h5Ojpjb25zdHJ1Y3RET01PYmplY3Q8VjhDbGFzc0luZGV4OjpYU0xUUFJPQ0VTU09S
LCBYU0xUUHJvY2Vzc29yPihhcmdzKTsKIH0KIAogCi1DQUxMQkFDS19GVU5DX0RFQ0woWFNMVFBy
b2Nlc3NvckltcG9ydFN0eWxlc2hlZXQpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhYU0xUUHJv
Y2Vzc29yOjppbXBvcnRTdHlsZXNoZWV0Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJn
cykKIHsKICAgICBJTkNfU1RBVFMoIkRPTS5YU0xUUHJvY2Vzc29yLmltcG9ydFN0eWxlc2hlZXQi
KTsKICAgICBpZiAoIVY4Tm9kZTo6SGFzSW5zdGFuY2UoYXJnc1swXSkpCkBAIC02Niw3ICs2Nyw3
IEBACiB9CiAKIAotQ0FMTEJBQ0tfRlVOQ19ERUNMKFhTTFRQcm9jZXNzb3JUcmFuc2Zvcm1Ub0Zy
YWdtZW50KQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4WFNMVFByb2Nlc3Nvcjo6dHJhbnNmb3Jt
VG9GcmFnbWVudENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgSU5D
X1NUQVRTKCJET00uWFNMVFByb2Nlc3Nvci50cmFuc2Zvcm1Ub0ZyYWdtZW50Iik7CiAgICAgaWYg
KCFWOE5vZGU6Okhhc0luc3RhbmNlKGFyZ3NbMF0pIHx8ICFWOERvY3VtZW50OjpIYXNJbnN0YW5j
ZShhcmdzWzFdKSkKQEAgLTgxLDcgKzgyLDcgQEAKIH0KIAogCi1DQUxMQkFDS19GVU5DX0RFQ0wo
WFNMVFByb2Nlc3NvclRyYW5zZm9ybVRvRG9jdW1lbnQpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
VjhYU0xUUHJvY2Vzc29yOjp0cmFuc2Zvcm1Ub0RvY3VtZW50Q2FsbGJhY2soY29uc3Qgdjg6OkFy
Z3VtZW50cyYgYXJncykKIHsKICAgICBJTkNfU1RBVFMoIkRPTS5YU0xUUHJvY2Vzc29yLnRyYW5z
Zm9ybVRvRG9jdW1lbnQiKTsKIApAQCAtMTAyLDcgKzEwMyw3IEBACiB9CiAKIAotQ0FMTEJBQ0tf
RlVOQ19ERUNMKFhTTFRQcm9jZXNzb3JTZXRQYXJhbWV0ZXIpCit2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gVjhYU0xUUHJvY2Vzc29yOjpzZXRQYXJhbWV0ZXJDYWxsYmFjayhjb25zdCB2ODo6QXJndW1l
bnRzJiBhcmdzKQogewogICAgIElOQ19TVEFUUygiRE9NLlhTTFRQcm9jZXNzb3Iuc2V0UGFyYW1l
dGVyIik7CiAgICAgaWYgKGlzVW5kZWZpbmVkT3JOdWxsKGFyZ3NbMV0pIHx8IGlzVW5kZWZpbmVk
T3JOdWxsKGFyZ3NbMl0pKQpAQCAtMTE5LDcgKzEyMCw3IEBACiB9CiAKIAotQ0FMTEJBQ0tfRlVO
Q19ERUNMKFhTTFRQcm9jZXNzb3JHZXRQYXJhbWV0ZXIpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
VjhYU0xUUHJvY2Vzc29yOjpnZXRQYXJhbWV0ZXJDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRz
JiBhcmdzKQogewogICAgIElOQ19TVEFUUygiRE9NLlhTTFRQcm9jZXNzb3IuZ2V0UGFyYW1ldGVy
Iik7CiAgICAgaWYgKGlzVW5kZWZpbmVkT3JOdWxsKGFyZ3NbMV0pKQpAQCAtMTM2LDcgKzEzNyw3
IEBACiAgICAgcmV0dXJuIHY4U3RyaW5nKHJlc3VsdCk7CiB9CiAKLUNBTExCQUNLX0ZVTkNfREVD
TChYU0xUUHJvY2Vzc29yUmVtb3ZlUGFyYW1ldGVyKQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4
WFNMVFByb2Nlc3Nvcjo6cmVtb3ZlUGFyYW1ldGVyQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50
cyYgYXJncykKIHsKICAgICBJTkNfU1RBVFMoIkRPTS5YU0xUUHJvY2Vzc29yLnJlbW92ZVBhcmFt
ZXRlciIpOwogICAgIGlmIChpc1VuZGVmaW5lZE9yTnVsbChhcmdzWzFdKSkKSW5kZXg6IFdlYkNv
cmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Tm9kZUZpbHRlckN1c3RvbS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhOb2RlRmlsdGVyQ3VzdG9tLmNwcAkocmV2
aXNpb24gNTIzNDEpCisrKyBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE5vZGVGaWx0ZXJD
dXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw5ICsyOSwxMCBAQAogICovCiAKICNpbmNs
dWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJOb2RlRmlsdGVyLmgiCisjaW5jbHVkZSAiVjhOb2Rl
RmlsdGVyLmgiCiAKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCisjaW5jbHVkZSAiTm9kZUZp
bHRlci5oIgogCiAjaW5jbHVkZSAiVjhCaW5kaW5nLmgiCiAjaW5jbHVkZSAiVjhDdXN0b21CaW5k
aW5nLmgiCkBAIC0zOSw3ICs0MCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotQ0FMTEJB
Q0tfRlVOQ19ERUNMKE5vZGVGaWx0ZXJBY2NlcHROb2RlKQordjg6OkhhbmRsZTx2ODo6VmFsdWU+
IFY4Tm9kZUZpbHRlcjo6YWNjZXB0Tm9kZUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFy
Z3MpCiB7CiAgICAgSU5DX1NUQVRTKCJET00uTm9kZUZpbHRlci5hY2NlcHROb2RlKCkiKTsKICAg
ICByZXR1cm4gdGhyb3dFcnJvcihOT1RfU1VQUE9SVEVEX0VSUik7CkluZGV4OiBXZWJDb3JlL2Jp
bmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxQbHVnSW5FbGVtZW50Q3VzdG9tLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxQbHVnSW5FbGVtZW50Q3VzdG9t
LmNwcAkocmV2aXNpb24gNTIzNDEpCisrKyBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhU
TUxQbHVnSW5FbGVtZW50Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjksOCArMjksOSBA
QAogKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlY4SFRNTFBsdWdJbkVsZW1l
bnRDdXN0b20uaCIKKwogI2luY2x1ZGUgIkhUTUxQbHVnSW5FbGVtZW50LmgiCi0KICNpbmNsdWRl
ICJTY3JpcHRJbnN0YW5jZS5oIgogCiAjaW5jbHVkZSAiVjhCaW5kaW5nLmgiCkBAIC03MCw3ICs3
MSw3IEBACiAgICAgcmV0dXJuIG5wT2JqZWN0U2V0TmFtZWRQcm9wZXJ0eShpbnN0YW5jZSwgbmFt
ZSwgdmFsdWUpOwogfQogCi1DQUxMQkFDS19GVU5DX0RFQ0woSFRNTFBsdWdJbkVsZW1lbnQpCit2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhIVE1MUGx1Z0luRWxlbWVudDo6ZGVmYXVsdENhbGxiYWNr
KGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgSU5DX1NUQVRTKCJET00uSFRNTFBs
dWdpbkVsZW1lbnQoKSIpOwogICAgIHJldHVybiBucE9iamVjdEludm9rZURlZmF1bHRIYW5kbGVy
KGFyZ3MpOwpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhBYnN0cmFjdFdvcmtl
ckN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhB
YnN0cmFjdFdvcmtlckN1c3RvbS5jcHAJKHJldmlzaW9uIDUyMzQxKQorKysgV2ViQ29yZS9iaW5k
aW5ncy92OC9jdXN0b20vVjhBYnN0cmFjdFdvcmtlckN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTMxLDkgKzMxLDkgQEAKICNpbmNsdWRlICJjb25maWcuaCIKIAogI2lmIEVOQUJMRShXT1JL
RVJTKQorI2luY2x1ZGUgIlY4QWJzdHJhY3RXb3JrZXIuaCIKIAogI2luY2x1ZGUgIkFic3RyYWN0
V29ya2VyLmgiCi0KICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCiAjaW5jbHVkZSAiU2NyaXB0
RXhlY3V0aW9uQ29udGV4dC5oIgogI2luY2x1ZGUgIlY4QmluZGluZy5oIgpAQCAtNDQsNyArNDQs
NyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUNBTExCQUNLX0ZVTkNfREVDTChBYnN0cmFj
dFdvcmtlckFkZEV2ZW50TGlzdGVuZXIpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhBYnN0cmFj
dFdvcmtlcjo6YWRkRXZlbnRMaXN0ZW5lckNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFy
Z3MpCiB7CiAgICAgSU5DX1NUQVRTKEwiRE9NLkFic3RyYWN0V29ya2VyLmFkZEV2ZW50TGlzdGVu
ZXIoKSIpOwogICAgIEFic3RyYWN0V29ya2VyKiB3b3JrZXIgPSBWOERPTVdyYXBwZXI6OmNvbnZl
cnRUb05hdGl2ZU9iamVjdDxBYnN0cmFjdFdvcmtlcj4oVjhDbGFzc0luZGV4OjpBQlNUUkFDVFdP
UktFUiwgYXJncy5Ib2xkZXIoKSk7CkBAIC02MCw3ICs2MCw3IEBACiAgICAgcmV0dXJuIHY4OjpV
bmRlZmluZWQoKTsKIH0KIAotQ0FMTEJBQ0tfRlVOQ19ERUNMKEFic3RyYWN0V29ya2VyUmVtb3Zl
RXZlbnRMaXN0ZW5lcikKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEFic3RyYWN0V29ya2VyOjpy
ZW1vdmVFdmVudExpc3RlbmVyQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsK
ICAgICBJTkNfU1RBVFMoTCJET00uQWJzdHJhY3RXb3JrZXIucmVtb3ZlRXZlbnRMaXN0ZW5lcigp
Iik7CiAgICAgQWJzdHJhY3RXb3JrZXIqIHdvcmtlciA9IFY4RE9NV3JhcHBlcjo6Y29udmVydFRv
TmF0aXZlT2JqZWN0PEFic3RyYWN0V29ya2VyPihWOENsYXNzSW5kZXg6OkFCU1RSQUNUV09SS0VS
LCBhcmdzLkhvbGRlcigpKTsKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4V2Vi
S2l0Q1NTTWF0cml4Q29uc3RydWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4V2ViS2l0Q1NTTWF0cml4Q29uc3RydWN0b3IuY3BwCShyZXZpc2lvbiA1
MjM0MSkKKysrIFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4V2ViS2l0Q1NTTWF0cml4Q29u
c3RydWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NCw3ICs0NCw3IEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotQ0FMTEJBQ0tfRlVOQ19ERUNMKFdlYktpdENTU01hdHJpeENvbnN0cnVj
dG9yKQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4Q3VzdG9tOjp2OFdlYktpdENTU01hdHJpeENv
bnN0cnVjdG9yQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBJTkNf
U1RBVFMoIkRPTS5XZWJLaXRDU1NNYXRyaXguQ29uc3RydWN0b3IiKTsKIApJbmRleDogV2ViQ29y
ZS9iaW5kaW5ncy92OC9jdXN0b20vVjhTVkdFbGVtZW50SW5zdGFuY2VDdXN0b20uY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4U1ZHRWxlbWVudEluc3RhbmNl
Q3VzdG9tLmNwcAkocmV2aXNpb24gNTIzNDEpCisrKyBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOFNWR0VsZW1lbnRJbnN0YW5jZUN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyLDkg
KzMyLDEwIEBACiAKICNpZiBFTkFCTEUoU1ZHKQogCi0jaW5jbHVkZSAiU1ZHRWxlbWVudEluc3Rh
bmNlLmgiCisjaW5jbHVkZSAiVjhTVkdFbGVtZW50SW5zdGFuY2UuaCIKIAogI2luY2x1ZGUgIkV2
ZW50TGlzdGVuZXIuaCIKKyNpbmNsdWRlICJTVkdFbGVtZW50SW5zdGFuY2UuaCIKIAogI2luY2x1
ZGUgIlY4QmluZGluZy5oIgogI2luY2x1ZGUgIlY4Q3VzdG9tQmluZGluZy5oIgpAQCAtNDQsNyAr
NDUsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUNBTExCQUNLX0ZVTkNfREVDTChTVkdF
bGVtZW50SW5zdGFuY2VBZGRFdmVudExpc3RlbmVyKQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4
U1ZHRWxlbWVudEluc3RhbmNlOjphZGRFdmVudExpc3RlbmVyQ2FsbGJhY2soY29uc3Qgdjg6OkFy
Z3VtZW50cyYgYXJncykKIHsKICAgICBJTkNfU1RBVFMoIkRPTS5TVkdFbGVtZW50SW5zdGFuY2Uu
QWRkRXZlbnRMaXN0ZW5lcigpIik7CiAgICAgU1ZHRWxlbWVudEluc3RhbmNlKiBpbnN0YW5jZSA9
IFY4RE9NV3JhcHBlcjo6Y29udmVydERPTVdyYXBwZXJUb05hdGl2ZTxTVkdFbGVtZW50SW5zdGFu
Y2U+KGFyZ3MuSG9sZGVyKCkpOwpAQCAtNjAsNyArNjEsNyBAQAogICAgIHJldHVybiB2ODo6VW5k
ZWZpbmVkKCk7CiB9CiAKLUNBTExCQUNLX0ZVTkNfREVDTChTVkdFbGVtZW50SW5zdGFuY2VSZW1v
dmVFdmVudExpc3RlbmVyKQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4U1ZHRWxlbWVudEluc3Rh
bmNlOjpyZW1vdmVFdmVudExpc3RlbmVyQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJn
cykKIHsKICAgICBJTkNfU1RBVFMoIkRPTS5TVkdFbGVtZW50SW5zdGFuY2UuUmVtb3ZlRXZlbnRM
aXN0ZW5lcigpIik7CiAgICAgU1ZHRWxlbWVudEluc3RhbmNlKiBpbnN0YW5jZSA9IFY4RE9NV3Jh
cHBlcjo6Y29udmVydERPTVdyYXBwZXJUb05hdGl2ZTxTVkdFbGVtZW50SW5zdGFuY2U+KGFyZ3Mu
SG9sZGVyKCkpOwpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIaXN0b3J5Q3Vz
dG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhpc3Rv
cnlDdXN0b20uY3BwCShyZXZpc2lvbiA1MjM0MSkKKysrIFdlYkNvcmUvYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4SGlzdG9yeUN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDE2ICsyOSwxOCBA
QAogICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJIaXN0b3J5LmgiCisjaW5j
bHVkZSAiVjhIaXN0b3J5LmgiCiAKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCisjaW5jbHVk
ZSAiSGlzdG9yeS5oIgogI2luY2x1ZGUgIlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgogI2luY2x1
ZGUgIlY4QmluZGluZy5oIgogI2luY2x1ZGUgIlY4Q3VzdG9tQmluZGluZy5oIgogI2luY2x1ZGUg
IlY4UHJveHkuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewotQ0FMTEJBQ0tfRlVOQ19ERUNMKEhp
c3RvcnlQdXNoU3RhdGUpCisKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEhpc3Rvcnk6OnB1c2hT
dGF0ZUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgUmVmUHRyPFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZT4gaGlzdG9yeVN0YXRlID0gU2VyaWFsaXplZFNjcmlwdFZhbHVl
OjpjcmVhdGUodG9XZWJDb3JlU3RyaW5nKGFyZ3NbMF0pKTsKIApAQCAtNTksNyArNjEsNyBAQAog
ICAgIHJldHVybiB0aHJvd0Vycm9yKGVjKTsKIH0KIAotQ0FMTEJBQ0tfRlVOQ19ERUNMKEhpc3Rv
cnlSZXBsYWNlU3RhdGUpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhIaXN0b3J5OjpyZXBsYWNl
U3RhdGVDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAgIFJlZlB0cjxT
ZXJpYWxpemVkU2NyaXB0VmFsdWU+IGhpc3RvcnlTdGF0ZSA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZTo6Y3JlYXRlKHRvV2ViQ29yZVN0cmluZyhhcmdzWzBdKSk7CiAKSW5kZXg6IFdlYkNvcmUvYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4Q29uc29sZUN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9iaW5kaW5ncy92OC9jdXN0b20vVjhDb25zb2xlQ3VzdG9tLmNwcAkocmV2aXNpb24gNTIzNDEp
CisrKyBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOENvbnNvbGVDdXN0b20uY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw3IEBACiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIlY4Q29uc29sZS5oIgogCiAjaW5jbHVkZSAiVjhCaW5kaW5nLmgiCiAjaW5jbHVk
ZSAiVjhDdXN0b21CaW5kaW5nLmgiCkBAIC0zNyw3ICszOCw3IEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotQ0FMTEJBQ0tfRlVOQ19ERUNMKENvbnNvbGVQcm9maWxlKQordjg6OkhhbmRsZTx2
ODo6VmFsdWU+IFY4Q29uc29sZTo6cHJvZmlsZUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMm
IGFyZ3MpCiB7CiAgICAgSU5DX1NUQVRTKCJjb25zb2xlLnByb2ZpbGUoKSIpOwogICAgIHY4OjpI
YW5kbGVTY29wZSBzY29wZTsKQEAgLTQ2LDcgKzQ3LDcgQEAKICAgICByZXR1cm4gdjg6OlVuZGVm
aW5lZCgpOwogfQogCi1DQUxMQkFDS19GVU5DX0RFQ0woQ29uc29sZVByb2ZpbGVFbmQpCit2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gVjhDb25zb2xlOjpwcm9maWxlRW5kQ2FsbGJhY2soY29uc3Qgdjg6
OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBJTkNfU1RBVFMoImNvbnNvbGUucHJvZmlsZUVuZCgp
Iik7CiAgICAgdjg6OlY4OjpQYXVzZVByb2ZpbGVyKCk7CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdz
L3Y4L2N1c3RvbS9WOEdlb2xvY2F0aW9uQ3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEdlb2xvY2F0aW9uQ3VzdG9tLmNwcAkocmV2aXNpb24gNTIz
NDEpCisrKyBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEdlb2xvY2F0aW9uQ3VzdG9tLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjQsNiArMjQsOCBAQAogICovCiAKICNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJWOEdlb2xvY2F0aW9uLmgiCisKICNpbmNsdWRlICJHZW9sb2NhdGlv
bi5oIgogCiAjaW5jbHVkZSAiVjhCaW5kaW5nLmgiCkBAIC0xNjUsNyArMTY3LDcgQEAKICAgICBy
ZXR1cm4gb3B0aW9ucy5yZWxlYXNlKCk7CiB9CiAKLUNBTExCQUNLX0ZVTkNfREVDTChHZW9sb2Nh
dGlvbkdldEN1cnJlbnRQb3NpdGlvbikKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEdlb2xvY2F0
aW9uOjpnZXRDdXJyZW50UG9zaXRpb25DYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdz
KQogewogICAgIElOQ19TVEFUUygiRE9NLkdlb2xvY2F0aW9uLmdldEN1cnJlbnRQb3NpdGlvbigp
Iik7CiAKQEAgLTE5MCw3ICsxOTIsNyBAQAogICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CiB9
CiAKLUNBTExCQUNLX0ZVTkNfREVDTChHZW9sb2NhdGlvbldhdGNoUG9zaXRpb24pCit2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gVjhHZW9sb2NhdGlvbjo6d2F0Y2hQb3NpdGlvbkNhbGxiYWNrKGNvbnN0
IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgSU5DX1NUQVRTKCJET00uR2VvbG9jYXRpb24u
d2F0Y2hQb3NpdGlvbigpIik7CiAKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4
SW5zcGVjdG9yRnJvbnRlbmRIb3N0Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Jp
bmRpbmdzL3Y4L2N1c3RvbS9WOEluc3BlY3RvckZyb250ZW5kSG9zdEN1c3RvbS5jcHAJKHJldmlz
aW9uIDUyMzQxKQorKysgV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhJbnNwZWN0b3JGcm9u
dGVuZEhvc3RDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOSwxMCArMjksMTEgQEAKICAq
LwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiSW5zcGVjdG9yRnJvbnRlbmRIb3N0
LmgiCisjaW5jbHVkZSAiVjhJbnNwZWN0b3JGcm9udGVuZEhvc3QuaCIKIAogI2luY2x1ZGUgIkV4
Y2VwdGlvbkNvZGUuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JDb250cm9sbGVyLmgiCisjaW5jbHVk
ZSAiSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmgiCiAjaW5jbHVkZSAiTm9kZS5oIgogI2luY2x1ZGUg
IlJhbmdlLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgpAQCAtNDUsNyArNDYsNyBAQAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLUNBTExCQUNLX0ZVTkNfREVDTChJbnNwZWN0b3JGcm9udGVuZEhvc3RT
ZWFyY2gpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhJbnNwZWN0b3JGcm9udGVuZEhvc3Q6OnNl
YXJjaENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgSU5DX1NUQVRT
KCJJbnNwZWN0b3JGcm9udGVuZEhvc3Quc2VhcmNoKCkiKTsKIApAQCAtODQsNyArODUsNyBAQAog
ICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLUNBTExCQUNLX0ZVTkNfREVDTChJbnNwZWN0b3JGcm9u
dGVuZEhvc3RTaG93Q29udGV4dE1lbnUpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhJbnNwZWN0
b3JGcm9udGVuZEhvc3Q6OnNob3dDb250ZXh0TWVudUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVu
dHMmIGFyZ3MpCiB7CiAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKIH0KSW5kZXg6IFdlYkNv
cmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4WE1MU2VyaWFsaXplckNvbnN0cnVjdG9yLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFhNTFNlcmlhbGl6ZXJDb25z
dHJ1Y3Rvci5jcHAJKHJldmlzaW9uIDUyMzQxKQorKysgV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0
b20vVjhYTUxTZXJpYWxpemVyQ29uc3RydWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOSwx
NCArMjksMTUgQEAKICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiWE1MU2Vy
aWFsaXplci5oIgorI2luY2x1ZGUgIlY4WE1MU2VyaWFsaXplci5oIgogCiAjaW5jbHVkZSAiVjhC
aW5kaW5nLmgiCiAjaW5jbHVkZSAiVjhQcm94eS5oIgorI2luY2x1ZGUgIlhNTFNlcmlhbGl6ZXIu
aCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1DQUxMQkFDS19GVU5DX0RFQ0woWE1MU2VyaWFs
aXplckNvbnN0cnVjdG9yKQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4Q3VzdG9tOjp2OFhNTFNl
cmlhbGl6ZXJDb25zdHJ1Y3RvckNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7
CiAgICAgSU5DX1NUQVRTKCJET00uWE1MU2VyaWFsaXplci5Db25zdHJ1Y3RvciIpOwogICAgIHJl
dHVybiBWOFByb3h5Ojpjb25zdHJ1Y3RET01PYmplY3Q8VjhDbGFzc0luZGV4OjpYTUxTRVJJQUxJ
WkVSLCBYTUxTZXJpYWxpemVyPihhcmdzKTsKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4U1FMVHJhbnNhY3Rpb25DdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4U1FMVHJhbnNhY3Rpb25DdXN0b20uY3BwCShyZXZpc2lvbiA1MjM0
MSkKKysrIFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4U1FMVHJhbnNhY3Rpb25DdXN0b20u
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw2ICszMiw4IEBACiAKICNpZiBFTkFCTEUoREFUQUJB
U0UpCiAKKyNpbmNsdWRlICJWOFNRTFRyYW5zYWN0aW9uLmgiCisKICNpbmNsdWRlICJEYXRhYmFz
ZS5oIgogI2luY2x1ZGUgIlNRTFZhbHVlLmgiCiAjaW5jbHVkZSAiVjhCaW5kaW5nLmgiCkBAIC00
NSw3ICs0Nyw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotQ0FMTEJBQ0tfRlVOQ19ERUNM
KFNRTFRyYW5zYWN0aW9uRXhlY3V0ZVNxbCkKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFNRTFRy
YW5zYWN0aW9uOjpleGVjdXRlU3FsQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykK
IHsKICAgICBJTkNfU1RBVFMoIkRPTS5TUUxUcmFuc2FjdGlvbi5leGVjdXRlU3FsKCkiKTsKIApJ
bmRleDogV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhUcmVlV2Fsa2VyQ3VzdG9tLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFRyZWVXYWxrZXJDdXN0
b20uY3BwCShyZXZpc2lvbiA1MjM0MSkKKysrIFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4
VHJlZVdhbGtlckN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDEwICsyOSwxMSBAQAog
ICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJUcmVlV2Fsa2VyLmgiCisjaW5j
bHVkZSAiVjhUcmVlV2Fsa2VyLmgiCiAKICNpbmNsdWRlICJOb2RlLmgiCiAjaW5jbHVkZSAiU2Ny
aXB0U3RhdGUuaCIKKyNpbmNsdWRlICJUcmVlV2Fsa2VyLmgiCiAKICNpbmNsdWRlICJWOEJpbmRp
bmcuaCIKICNpbmNsdWRlICJWOEN1c3RvbUJpbmRpbmcuaCIKQEAgLTU0LDcgKzU1LDcgQEAKICAg
ICByZXR1cm4gVjhET01XcmFwcGVyOjpjb252ZXJ0Tm9kZVRvVjhPYmplY3Qob2JqZWN0KTsKIH0K
IAotQ0FMTEJBQ0tfRlVOQ19ERUNMKFRyZWVXYWxrZXJQYXJlbnROb2RlKQordjg6OkhhbmRsZTx2
ODo6VmFsdWU+IFY4VHJlZVdhbGtlcjo6cGFyZW50Tm9kZUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1
bWVudHMmIGFyZ3MpCiB7CiAgICAgSU5DX1NUQVRTKCJET00uVHJlZVdhbGtlci5wYXJlbnROb2Rl
KCkiKTsKICAgICBUcmVlV2Fsa2VyKiB0cmVlV2Fsa2VyID0gVjhET01XcmFwcGVyOjpjb252ZXJ0
VG9OYXRpdmVPYmplY3Q8VHJlZVdhbGtlcj4oVjhDbGFzc0luZGV4OjpUUkVFV0FMS0VSLCBhcmdz
LkhvbGRlcigpKTsKQEAgLTY0LDcgKzY1LDcgQEAKICAgICByZXR1cm4gdG9WOChyZXN1bHQucmVs
ZWFzZSgpLCAmc3RhdGUpOwogfQogCi1DQUxMQkFDS19GVU5DX0RFQ0woVHJlZVdhbGtlckZpcnN0
Q2hpbGQpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhUcmVlV2Fsa2VyOjpmaXJzdENoaWxkQ2Fs
bGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBJTkNfU1RBVFMoIkRPTS5U
cmVlV2Fsa2VyLmZpcnN0Q2hpbGQoKSIpOwogICAgIFRyZWVXYWxrZXIqIHRyZWVXYWxrZXIgPSBW
OERPTVdyYXBwZXI6OmNvbnZlcnRUb05hdGl2ZU9iamVjdDxUcmVlV2Fsa2VyPihWOENsYXNzSW5k
ZXg6OlRSRUVXQUxLRVIsIGFyZ3MuSG9sZGVyKCkpOwpAQCAtNzQsNyArNzUsNyBAQAogICAgIHJl
dHVybiB0b1Y4KHJlc3VsdC5yZWxlYXNlKCksICZzdGF0ZSk7CiB9CiAKLUNBTExCQUNLX0ZVTkNf
REVDTChUcmVlV2Fsa2VyTGFzdENoaWxkKQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4VHJlZVdh
bGtlcjo6bGFzdENoaWxkQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAg
ICBJTkNfU1RBVFMoIkRPTS5UcmVlV2Fsa2VyLmxhc3RDaGlsZCgpIik7CiAgICAgVHJlZVdhbGtl
ciogdHJlZVdhbGtlciA9IFY4RE9NV3JhcHBlcjo6Y29udmVydFRvTmF0aXZlT2JqZWN0PFRyZWVX
YWxrZXI+KFY4Q2xhc3NJbmRleDo6VFJFRVdBTEtFUiwgYXJncy5Ib2xkZXIoKSk7CkBAIC04NCw3
ICs4NSw3IEBACiAgICAgcmV0dXJuIHRvVjgocmVzdWx0LnJlbGVhc2UoKSwgJnN0YXRlKTsKIH0K
IAotQ0FMTEJBQ0tfRlVOQ19ERUNMKFRyZWVXYWxrZXJOZXh0Tm9kZSkKK3Y4OjpIYW5kbGU8djg6
OlZhbHVlPiBWOFRyZWVXYWxrZXI6Om5leHROb2RlQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50
cyYgYXJncykKIHsKICAgICBJTkNfU1RBVFMoIkRPTS5UcmVlV2Fsa2VyLm5leHROb2RlKCkiKTsK
ICAgICBUcmVlV2Fsa2VyKiB0cmVlV2Fsa2VyID0gVjhET01XcmFwcGVyOjpjb252ZXJ0VG9OYXRp
dmVPYmplY3Q8VHJlZVdhbGtlcj4oVjhDbGFzc0luZGV4OjpUUkVFV0FMS0VSLCBhcmdzLkhvbGRl
cigpKTsKQEAgLTk0LDcgKzk1LDcgQEAKICAgICByZXR1cm4gdG9WOChyZXN1bHQucmVsZWFzZSgp
LCAmc3RhdGUpOwogfQogCi1DQUxMQkFDS19GVU5DX0RFQ0woVHJlZVdhbGtlclByZXZpb3VzTm9k
ZSkKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFRyZWVXYWxrZXI6OnByZXZpb3VzTm9kZUNhbGxi
YWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgSU5DX1NUQVRTKCJET00uVHJl
ZVdhbGtlci5wcmV2aW91c05vZGUoKSIpOwogICAgIFRyZWVXYWxrZXIqIHRyZWVXYWxrZXIgPSBW
OERPTVdyYXBwZXI6OmNvbnZlcnRUb05hdGl2ZU9iamVjdDxUcmVlV2Fsa2VyPihWOENsYXNzSW5k
ZXg6OlRSRUVXQUxLRVIsIGFyZ3MuSG9sZGVyKCkpOwpAQCAtMTA0LDcgKzEwNSw3IEBACiAgICAg
cmV0dXJuIHRvVjgocmVzdWx0LnJlbGVhc2UoKSwgJnN0YXRlKTsKIH0KIAotQ0FMTEJBQ0tfRlVO
Q19ERUNMKFRyZWVXYWxrZXJOZXh0U2libGluZykKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFRy
ZWVXYWxrZXI6Om5leHRTaWJsaW5nQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykK
IHsKICAgICBJTkNfU1RBVFMoIkRPTS5UcmVlV2Fsa2VyLm5leHRTaWJsaW5nKCkiKTsKICAgICBU
cmVlV2Fsa2VyKiB0cmVlV2Fsa2VyID0gVjhET01XcmFwcGVyOjpjb252ZXJ0VG9OYXRpdmVPYmpl
Y3Q8VHJlZVdhbGtlcj4oVjhDbGFzc0luZGV4OjpUUkVFV0FMS0VSLCBhcmdzLkhvbGRlcigpKTsK
QEAgLTExNCw3ICsxMTUsNyBAQAogICAgIHJldHVybiB0b1Y4KHJlc3VsdC5yZWxlYXNlKCksICZz
dGF0ZSk7CiB9CiAKLUNBTExCQUNLX0ZVTkNfREVDTChUcmVlV2Fsa2VyUHJldmlvdXNTaWJsaW5n
KQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4VHJlZVdhbGtlcjo6cHJldmlvdXNTaWJsaW5nQ2Fs
bGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBJTkNfU1RBVFMoIkRPTS5U
cmVlV2Fsa2VyLnByZXZpb3VzU2libGluZygpIik7CiAgICAgVHJlZVdhbGtlciogdHJlZVdhbGtl
ciA9IFY4RE9NV3JhcHBlcjo6Y29udmVydFRvTmF0aXZlT2JqZWN0PFRyZWVXYWxrZXI+KFY4Q2xh
c3NJbmRleDo6VFJFRVdBTEtFUiwgYXJncy5Ib2xkZXIoKSk7CkluZGV4OiBXZWJDb3JlL2JpbmRp
bmdzL3Y4L2N1c3RvbS9WOERlZGljYXRlZFdvcmtlckNvbnRleHRDdXN0b20uY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RGVkaWNhdGVkV29ya2VyQ29udGV4
dEN1c3RvbS5jcHAJKHJldmlzaW9uIDUyMzQxKQorKysgV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0
b20vVjhEZWRpY2F0ZWRXb3JrZXJDb250ZXh0Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzEsMTAgKzMxLDEwIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAKICNpZiBFTkFCTEUoV09SS0VS
UykKKyNpbmNsdWRlICJWOERlZGljYXRlZFdvcmtlckNvbnRleHQuaCIKIAorI2luY2x1ZGUgIkRl
ZGljYXRlZFdvcmtlckNvbnRleHQuaCIKICNpbmNsdWRlICJXb3JrZXJDb250ZXh0RXhlY3V0aW9u
UHJveHkuaCIKLQotI2luY2x1ZGUgIkRlZGljYXRlZFdvcmtlckNvbnRleHQuaCIKICNpbmNsdWRl
ICJWOEJpbmRpbmcuaCIKICNpbmNsdWRlICJWOE1lc3NhZ2VQb3J0Q3VzdG9tLmgiCiAjaW5jbHVk
ZSAiVjhQcm94eS5oIgpAQCAtNDIsNyArNDIsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LUNBTExCQUNLX0ZVTkNfREVDTChEZWRpY2F0ZWRXb3JrZXJDb250ZXh0UG9zdE1lc3NhZ2UpCit2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhEZWRpY2F0ZWRXb3JrZXJDb250ZXh0Ojpwb3N0TWVzc2Fn
ZUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgSU5DX1NUQVRTKEwi
RE9NLkRlZGljYXRlZFdvcmtlckNvbnRleHQucG9zdE1lc3NhZ2UiKTsKICAgICBEZWRpY2F0ZWRX
b3JrZXJDb250ZXh0KiB3b3JrZXJDb250ZXh0ID0gVjhET01XcmFwcGVyOjpjb252ZXJ0VG9OYXRp
dmVPYmplY3Q8RGVkaWNhdGVkV29ya2VyQ29udGV4dD4oVjhDbGFzc0luZGV4OjpERURJQ0FURURX
T1JLRVJDT05URVhULCBhcmdzLkhvbGRlcigpKTsKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4V2ViR0xVbnNpZ25lZEludEFycmF5Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFdlYkdMVW5zaWduZWRJbnRBcnJheUN1c3RvbS5j
cHAJKHJldmlzaW9uIDUyMzQxKQorKysgV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhXZWJH
TFVuc2lnbmVkSW50QXJyYXlDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NCw3ICs0NCw3
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotQ0FMTEJBQ0tfRlVOQ19ERUNMKFdlYkdMVW5z
aWduZWRJbnRBcnJheUNvbnN0cnVjdG9yKQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4Q3VzdG9t
Ojp2OFdlYkdMVW5zaWduZWRJbnRBcnJheUNvbnN0cnVjdG9yQ2FsbGJhY2soY29uc3Qgdjg6OkFy
Z3VtZW50cyYgYXJncykKIHsKICAgICBJTkNfU1RBVFMoIkRPTS5XZWJHTFVuc2lnbmVkSW50QXJy
YXkuQ29udHJ1Y3RvciIpOwogCkBAIC03OSwxMyArNzksMTMgQEAKICAgICByZXR1cm4gdmFsdWU7
CiB9CiAKLUNBTExCQUNLX0ZVTkNfREVDTChXZWJHTFVuc2lnbmVkSW50QXJyYXlHZXQpCit2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gVjhXZWJHTFVuc2lnbmVkSW50QXJyYXk6OmdldENhbGxiYWNrKGNv
bnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgSU5DX1NUQVRTKCJET00uV2ViR0xVbnNp
Z25lZEludEFycmF5LmdldCgpIik7CiAgICAgcmV0dXJuIGdldFdlYkdMQXJyYXlFbGVtZW50PFdl
YkdMVW5zaWduZWRJbnRBcnJheSwgdW5zaWduZWQgaW50PihhcmdzLCBWOENsYXNzSW5kZXg6OldF
QkdMVU5TSUdORURJTlRBUlJBWSk7CiB9CiAKLUNBTExCQUNLX0ZVTkNfREVDTChXZWJHTFVuc2ln
bmVkSW50QXJyYXlTZXQpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhXZWJHTFVuc2lnbmVkSW50
QXJyYXk6OnNldENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgSU5D
X1NUQVRTKCJET00uV2ViR0xVbnNpZ25lZEludEFycmF5LnNldCgpIik7CiAgICAgcmV0dXJuIHNl
dFdlYkdMQXJyYXk8V2ViR0xVbnNpZ25lZEludEFycmF5LCBWOFdlYkdMVW5zaWduZWRJbnRBcnJh
eT4oYXJncywgVjhDbGFzc0luZGV4OjpXRUJHTFVOU0lHTkVESU5UQVJSQVkpOwpJbmRleDogV2Vi
Q29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhJbmplY3RlZFNjcmlwdEhvc3RDdXN0b20uY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SW5qZWN0ZWRTY3JpcHRI
b3N0Q3VzdG9tLmNwcAkocmV2aXNpb24gNTIzNDEpCisrKyBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1
c3RvbS9WOEluamVjdGVkU2NyaXB0SG9zdEN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5
LDEyICsyOSwxMyBAQAogICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJJbmpl
Y3RlZFNjcmlwdEhvc3QuaCIKKyNpbmNsdWRlICJWOEluamVjdGVkU2NyaXB0SG9zdC5oIgogCiAj
aW5jbHVkZSAiRGF0YWJhc2UuaCIKICNpbmNsdWRlICJET01XaW5kb3cuaCIKICNpbmNsdWRlICJG
cmFtZS5oIgogI2luY2x1ZGUgIkluc3BlY3RvckNvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJJbmpl
Y3RlZFNjcmlwdEhvc3QuaCIKICNpbmNsdWRlICJOb2RlLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgog
CkBAIC00NCw3ICs0NSw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotQ0FMTEJBQ0tfRlVO
Q19ERUNMKEluamVjdGVkU2NyaXB0SG9zdEluc3BlY3RlZFdpbmRvdykKK3Y4OjpIYW5kbGU8djg6
OlZhbHVlPiBWOEluamVjdGVkU2NyaXB0SG9zdDo6aW5zcGVjdGVkV2luZG93Q2FsbGJhY2soY29u
c3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBJTkNfU1RBVFMoIkluamVjdGVkU2NyaXB0
SG9zdC5pbnNwZWN0ZWRXaW5kb3coKSIpOwogCkBAIC01NSwxMyArNTYsMTMgQEAKICAgICByZXR1
cm4gVjhET01XcmFwcGVyOjpjb252ZXJ0VG9WOE9iamVjdDxET01XaW5kb3c+KFY4Q2xhc3NJbmRl
eDo6RE9NV0lORE9XLCBpYy0+aW5zcGVjdGVkUGFnZSgpLT5tYWluRnJhbWUoKS0+ZG9tV2luZG93
KCkpOwogfQogCi1DQUxMQkFDS19GVU5DX0RFQ0woSW5qZWN0ZWRTY3JpcHRIb3N0V3JhcENhbGxi
YWNrKQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SW5qZWN0ZWRTY3JpcHRIb3N0Ojp3cmFwQ2Fs
bGJhY2tDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAgIElOQ19TVEFU
UygiSW5qZWN0ZWRTY3JpcHRIb3N0LndyYXBDYWxsYmFjaygpIik7CiAgICAgcmV0dXJuIGFyZ3Nb
MF07CiB9CiAKLUNBTExCQUNLX0ZVTkNfREVDTChJbmplY3RlZFNjcmlwdEhvc3ROb2RlRm9ySWQp
Cit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhJbmplY3RlZFNjcmlwdEhvc3Q6Om5vZGVGb3JJZENh
bGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgSU5DX1NUQVRTKCJJbmpl
Y3RlZFNjcmlwdEhvc3Qubm9kZUZvcklkKCkiKTsKICAgICBpZiAoYXJncy5MZW5ndGgoKSA8IDEp
CkBAIC04MCw3ICs4MSw3IEBACiAgICAgcmV0dXJuIFY4RE9NV3JhcHBlcjo6Y29udmVydFRvVjhP
YmplY3QoVjhDbGFzc0luZGV4OjpOT0RFLCBub2RlKTsKIH0KIAotQ0FMTEJBQ0tfRlVOQ19ERUNM
KEluamVjdGVkU2NyaXB0SG9zdFdyYXBPYmplY3QpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhJ
bmplY3RlZFNjcmlwdEhvc3Q6OndyYXBPYmplY3RDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRz
JiBhcmdzKQogewogICAgIElOQ19TVEFUUygiSW5qZWN0ZWRTY3JpcHRIb3N0LndyYXBPYmplY3Qo
KSIpOwogICAgIGlmIChhcmdzLkxlbmd0aCgpIDwgMikKQEAgLTkwLDcgKzkxLDcgQEAKICAgICBy
ZXR1cm4gaG9zdC0+d3JhcE9iamVjdChTY3JpcHRWYWx1ZShhcmdzWzBdKSwgdG9XZWJDb3JlU3Ry
aW5nV2l0aE51bGxDaGVjayhhcmdzWzFdKSkudjhWYWx1ZSgpOwogfQogCi1DQUxMQkFDS19GVU5D
X0RFQ0woSW5qZWN0ZWRTY3JpcHRIb3N0VW53cmFwT2JqZWN0KQordjg6OkhhbmRsZTx2ODo6VmFs
dWU+IFY4SW5qZWN0ZWRTY3JpcHRIb3N0Ojp1bndyYXBPYmplY3RDYWxsYmFjayhjb25zdCB2ODo6
QXJndW1lbnRzJiBhcmdzKQogewogICAgIElOQ19TVEFUUygiSW5qZWN0ZWRTY3JpcHRIb3N0LnVu
d3JhcE9iamVjdCgpIik7CiAgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPCAxKQpAQCAtMTAwLDcgKzEw
MSw3IEBACiAgICAgcmV0dXJuIGhvc3QtPnVud3JhcE9iamVjdCh0b1dlYkNvcmVTdHJpbmdXaXRo
TnVsbENoZWNrKGFyZ3NbMF0pKS52OFZhbHVlKCk7CiB9CiAKLUNBTExCQUNLX0ZVTkNfREVDTChJ
bmplY3RlZFNjcmlwdEhvc3RQdXNoTm9kZVBhdGhUb0Zyb250ZW5kKQordjg6OkhhbmRsZTx2ODo6
VmFsdWU+IFY4SW5qZWN0ZWRTY3JpcHRIb3N0OjpwdXNoTm9kZVBhdGhUb0Zyb250ZW5kQ2FsbGJh
Y2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBJTkNfU1RBVFMoIkluamVjdGVk
U2NyaXB0SG9zdC5wdXNoTm9kZVBhdGhUb0Zyb250ZW5kKCkiKTsKICAgICBpZiAoYXJncy5MZW5n
dGgoKSA8IDIpCkBAIC0xMTYsNyArMTE3LDcgQEAKIH0KIAogI2lmIEVOQUJMRShEQVRBQkFTRSkK
LUNBTExCQUNLX0ZVTkNfREVDTChJbmplY3RlZFNjcmlwdEhvc3REYXRhYmFzZUZvcklkKQordjg6
OkhhbmRsZTx2ODo6VmFsdWU+IFY4SW5qZWN0ZWRTY3JpcHRIb3N0OjpkYXRhYmFzZUZvcklkQ2Fs
bGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBJTkNfU1RBVFMoIkluamVj
dGVkU2NyaXB0SG9zdC5kYXRhYmFzZUZvcklkKCkiKTsKICAgICBpZiAoYXJncy5MZW5ndGgoKSA8
IDEpCkBAIC0xMjksNyArMTMwLDcgQEAKICAgICByZXR1cm4gVjhET01XcmFwcGVyOjpjb252ZXJ0
VG9WOE9iamVjdDxEYXRhYmFzZT4oVjhDbGFzc0luZGV4OjpEQVRBQkFTRSwgZGF0YWJhc2UpOwog
fQogCi1DQUxMQkFDS19GVU5DX0RFQ0woSW5qZWN0ZWRTY3JpcHRIb3N0U2VsZWN0RGF0YWJhc2Up
Cit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhJbmplY3RlZFNjcmlwdEhvc3Q6OnNlbGVjdERhdGFi
YXNlQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBJTkNfU1RBVFMo
IkluamVjdGVkU2NyaXB0SG9zdC5zZWxlY3REYXRhYmFzZSgpIik7CiAgICAgaWYgKGFyZ3MuTGVu
Z3RoKCkgPCAxKQpAQCAtMTQ1LDcgKzE0Niw3IEBACiAjZW5kaWYKIAogI2lmIEVOQUJMRShET01f
U1RPUkFHRSkKLUNBTExCQUNLX0ZVTkNfREVDTChJbmplY3RlZFNjcmlwdEhvc3RTZWxlY3RET01T
dG9yYWdlKQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SW5qZWN0ZWRTY3JpcHRIb3N0OjpzZWxl
Y3RET01TdG9yYWdlQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBJ
TkNfU1RBVFMoIkluamVjdGVkU2NyaXB0SG9zdC5zZWxlY3RET01TdG9yYWdlKCkiKTsKICAgICBp
ZiAoYXJncy5MZW5ndGgoKSA8IDEpCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9W
OFdlYkdMSW50QXJyYXlDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3Mv
djgvY3VzdG9tL1Y4V2ViR0xJbnRBcnJheUN1c3RvbS5jcHAJKHJldmlzaW9uIDUyMzQxKQorKysg
V2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhXZWJHTEludEFycmF5Q3VzdG9tLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNDQsNyArNDQsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUNB
TExCQUNLX0ZVTkNfREVDTChXZWJHTEludEFycmF5Q29uc3RydWN0b3IpCit2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gVjhDdXN0b206OnY4V2ViR0xJbnRBcnJheUNvbnN0cnVjdG9yQ2FsbGJhY2soY29u
c3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBJTkNfU1RBVFMoIkRPTS5XZWJHTEludEFy
cmF5LkNvbnRydWN0b3IiKTsKIApAQCAtNzksMTMgKzc5LDEzIEBACiAgICAgcmV0dXJuIHZhbHVl
OwogfQogCi1DQUxMQkFDS19GVU5DX0RFQ0woV2ViR0xJbnRBcnJheUdldCkKK3Y4OjpIYW5kbGU8
djg6OlZhbHVlPiBWOFdlYkdMSW50QXJyYXk6OmdldENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVu
dHMmIGFyZ3MpCiB7CiAgICAgSU5DX1NUQVRTKCJET00uV2ViR0xJbnRBcnJheS5nZXQoKSIpOwog
ICAgIHJldHVybiBnZXRXZWJHTEFycmF5RWxlbWVudDxXZWJHTEludEFycmF5LCBpbnQ+KGFyZ3Ms
IFY4Q2xhc3NJbmRleDo6V0VCR0xJTlRBUlJBWSk7CiB9CiAKLUNBTExCQUNLX0ZVTkNfREVDTChX
ZWJHTEludEFycmF5U2V0KQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4V2ViR0xJbnRBcnJheTo6
c2V0Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBJTkNfU1RBVFMo
IkRPTS5XZWJHTEludEFycmF5LnNldCgpIik7CiAgICAgcmV0dXJuIHNldFdlYkdMQXJyYXk8V2Vi
R0xJbnRBcnJheSwgVjhXZWJHTEludEFycmF5PihhcmdzLCBWOENsYXNzSW5kZXg6OldFQkdMSU5U
QVJSQVkpOwpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MQXVkaW9FbGVt
ZW50Q29uc3RydWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4SFRNTEF1ZGlvRWxlbWVudENvbnN0cnVjdG9yLmNwcAkocmV2aXNpb24gNTIzNDEpCisr
KyBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxBdWRpb0VsZW1lbnRDb25zdHJ1Y3Rv
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYxLDcgKzYxLDcgQEAKICAgICByZXR1cm4gY2FjaGVk
VGVtcGxhdGU7CiB9CiAKLUNBTExCQUNLX0ZVTkNfREVDTChIVE1MQXVkaW9FbGVtZW50Q29uc3Ry
dWN0b3IpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhDdXN0b206OnY4SFRNTEF1ZGlvRWxlbWVu
dENvbnN0cnVjdG9yQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBJ
TkNfU1RBVFMoIkRPTS5IVE1MQXVkaW9FbGVtZW50LkNvbnRydWN0b3IiKTsKIApJbmRleDogV2Vi
Q29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhXZWJHTFNob3J0QXJyYXlDdXN0b20uY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4V2ViR0xTaG9ydEFycmF5Q3Vz
dG9tLmNwcAkocmV2aXNpb24gNTIzNDEpCisrKyBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9W
OFdlYkdMU2hvcnRBcnJheUN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDcgKzQ0LDcg
QEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1DQUxMQkFDS19GVU5DX0RFQ0woV2ViR0xTaG9y
dEFycmF5Q29uc3RydWN0b3IpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhDdXN0b206OnY4V2Vi
R0xTaG9ydEFycmF5Q29uc3RydWN0b3JDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdz
KQogewogICAgIElOQ19TVEFUUygiRE9NLldlYkdMU2hvcnRBcnJheS5Db250cnVjdG9yIik7CiAK
QEAgLTc5LDEzICs3OSwxMyBAQAogICAgIHJldHVybiB2YWx1ZTsKIH0KIAotQ0FMTEJBQ0tfRlVO
Q19ERUNMKFdlYkdMU2hvcnRBcnJheUdldCkKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFdlYkdM
U2hvcnRBcnJheTo6Z2V0Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAg
ICBJTkNfU1RBVFMoIkRPTS5XZWJHTFNob3J0QXJyYXkuZ2V0KCkiKTsKICAgICByZXR1cm4gZ2V0
V2ViR0xBcnJheUVsZW1lbnQ8V2ViR0xTaG9ydEFycmF5LCBzaG9ydD4oYXJncywgVjhDbGFzc0lu
ZGV4OjpXRUJHTFNIT1JUQVJSQVkpOwogfQogCi1DQUxMQkFDS19GVU5DX0RFQ0woV2ViR0xTaG9y
dEFycmF5U2V0KQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4V2ViR0xTaG9ydEFycmF5OjpzZXRD
YWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAgIElOQ19TVEFUUygiRE9N
LldlYkdMU2hvcnRBcnJheS5zZXQoKSIpOwogICAgIHJldHVybiBzZXRXZWJHTEFycmF5PFdlYkdM
U2hvcnRBcnJheSwgVjhXZWJHTFNob3J0QXJyYXk+KGFyZ3MsIFY4Q2xhc3NJbmRleDo6V0VCR0xT
SE9SVEFSUkFZKTsKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4WE1MSHR0cFJl
cXVlc3RDb25zdHJ1Y3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy92OC9j
dXN0b20vVjhYTUxIdHRwUmVxdWVzdENvbnN0cnVjdG9yLmNwcAkocmV2aXNpb24gNTIzNDEpCisr
KyBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFhNTEh0dHBSZXF1ZXN0Q29uc3RydWN0b3Iu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw3IEBACiAgKi8KIAogI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIlY4WE1MSHR0cFJlcXVlc3QuaCIKIAogI2luY2x1ZGUgIkZyYW1l
LmgiCiAjaW5jbHVkZSAiVjhCaW5kaW5nLmgiCkBAIC00MSw3ICs0Miw3IEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotQ0FMTEJBQ0tfRlVOQ19ERUNMKFhNTEh0dHBSZXF1ZXN0Q29uc3RydWN0
b3IpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhDdXN0b206OnY4WE1MSHR0cFJlcXVlc3RDb25z
dHJ1Y3RvckNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgSU5DX1NU
QVRTKCJET00uWE1MSHR0cFJlcXVlc3QuQ29uc3RydWN0b3IiKTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>45194</attachid>
            <date>2009-12-18 15:32:20 -0800</date>
            <delta_ts>2009-12-28 21:40:28 -0800</delta_ts>
            <desc>patch2 again</desc>
            <filename>patch2.txt</filename>
            <type>text/plain</type>
            <size>123936</size>
            <attacher name="Nate Chapin">japhet</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1MjM0NCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNzkgQEAKKzIwMDktMTItMTggIE5hdGUgQ2hhcGluICA8amFwaGV0QGNocm9taXVt
Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBH
ZW5lcmF0ZSBWOCBiaW5kaW5ncyBub24tY29uc3RydWN0b3IgY2FsbGJhY2sgZGVjbGFyYXRpb25z
IAorICAgICAgICBpbiBDb2RlR2VuZXJhdG9yVjgucG0gaW5zdGVhZCBvZiBtYW51YWxseSBkZWNs
YXJpbmcgdGhlbSBpbgorICAgICAgICBWOEN1c3RvbUJpbmRpbmcuaC4KKworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzI2MzgKKworICAgICAgICAqIGJp
bmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtOgorICAgICAgICAqIGJpbmRpbmdzL3Y4
L1Y4RE9NV3JhcHBlci5jcHA6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4QWJzdHJh
Y3RXb3JrZXJDdXN0b20uY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOENhbnZh
c1JlbmRlcmluZ0NvbnRleHQyREN1c3RvbS5jcHA6CisgICAgICAgICogYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4Q2xpcGJvYXJkQ3VzdG9tLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20v
VjhDb25zb2xlQ3VzdG9tLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhDdXN0
b21CaW5kaW5nLmg6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4RE9NQXBwbGljYXRp
b25DYWNoZUN1c3RvbS5jcHA6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4RE9NUGFy
c2VyQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOERPTVdp
bmRvd0N1c3RvbS5jcHA6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4RGF0YWJhc2VD
dXN0b20uY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOERlZGljYXRlZFdvcmtl
ckNvbnRleHRDdXN0b20uY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOERvY3Vt
ZW50Q3VzdG9tLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhHZW9sb2NhdGlv
bkN1c3RvbS5jcHA6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTEFsbENvbGxl
Y3Rpb25DdXN0b20uY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxBdWRp
b0VsZW1lbnRDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4
SFRNTENhbnZhc0VsZW1lbnRDdXN0b20uY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3Rv
bS9WOEhUTUxDb2xsZWN0aW9uQ3VzdG9tLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0
b20vVjhIVE1MRG9jdW1lbnRDdXN0b20uY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3Rv
bS9WOEhUTUxGb3JtRWxlbWVudEN1c3RvbS5jcHA6CisgICAgICAgICogYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4SFRNTEltYWdlRWxlbWVudENvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKiBiaW5kaW5n
cy92OC9jdXN0b20vVjhIVE1MSW5wdXRFbGVtZW50Q3VzdG9tLmNwcDoKKyAgICAgICAgKiBiaW5k
aW5ncy92OC9jdXN0b20vVjhIVE1MT3B0aW9uRWxlbWVudENvbnN0cnVjdG9yLmNwcDoKKyAgICAg
ICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MT3B0aW9uc0NvbGxlY3Rpb25DdXN0b20uY3Bw
OgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxQbHVnSW5FbGVtZW50Q3VzdG9t
LmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MUGx1Z0luRWxlbWVudEN1
c3RvbS5oOiBBZGRlZC4KKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MU2VsZWN0
RWxlbWVudEN1c3RvbS5jcHA6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4SGlzdG9y
eUN1c3RvbS5jcHA6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4SW5qZWN0ZWRTY3Jp
cHRIb3N0Q3VzdG9tLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhJbnNwZWN0
b3JGcm9udGVuZEhvc3RDdXN0b20uY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9W
OExvY2F0aW9uQ3VzdG9tLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhNZXNz
YWdlQ2hhbm5lbENvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20v
VjhNZXNzYWdlRXZlbnRDdXN0b20uY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9W
OE1lc3NhZ2VQb3J0Q3VzdG9tLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhO
b2RlQ3VzdG9tLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhOb2RlRmlsdGVy
Q3VzdG9tLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhOb2RlSXRlcmF0b3JD
dXN0b20uY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOE5vdGlmaWNhdGlvbkNl
bnRlckN1c3RvbS5jcHA6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4U1FMUmVzdWx0
U2V0Um93TGlzdEN1c3RvbS5jcHA6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4U1FM
VHJhbnNhY3Rpb25DdXN0b20uY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOFNW
R0VsZW1lbnRJbnN0YW5jZUN1c3RvbS5jcHA6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9t
L1Y4U1ZHTGVuZ3RoQ3VzdG9tLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhT
VkdNYXRyaXhDdXN0b20uY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOFNoYXJl
ZFdvcmtlckN1c3RvbS5jcHA6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4VHJlZVdh
bGtlckN1c3RvbS5jcHA6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4V2ViR0xBcnJh
eUJ1ZmZlckN1c3RvbS5jcHA6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4V2ViR0xC
eXRlQXJyYXlDdXN0b20uY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOFdlYkdM
RmxvYXRBcnJheUN1c3RvbS5jcHA6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4V2Vi
R0xJbnRBcnJheUN1c3RvbS5jcHA6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4V2Vi
R0xSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0
b20vVjhXZWJHTFNob3J0QXJyYXlDdXN0b20uY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1
c3RvbS9WOFdlYkdMVW5zaWduZWRCeXRlQXJyYXlDdXN0b20uY3BwOgorICAgICAgICAqIGJpbmRp
bmdzL3Y4L2N1c3RvbS9WOFdlYkdMVW5zaWduZWRJbnRBcnJheUN1c3RvbS5jcHA6CisgICAgICAg
ICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4V2ViR0xVbnNpZ25lZFNob3J0QXJyYXlDdXN0b20uY3Bw
OgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOFdlYktpdENTU01hdHJpeENvbnN0cnVj
dG9yLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhXZWJLaXRQb2ludENvbnN0
cnVjdG9yLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhXZWJTb2NrZXRDdXN0
b20uY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOFdvcmtlckNvbnRleHRDdXN0
b20uY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOFdvcmtlckN1c3RvbS5jcHA6
CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4WE1MSHR0cFJlcXVlc3RDb25zdHJ1Y3Rv
ci5jcHA6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4WE1MSHR0cFJlcXVlc3RDdXN0
b20uY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOFhNTEh0dHBSZXF1ZXN0VXBs
b2FkQ3VzdG9tLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhYTUxTZXJpYWxp
emVyQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOFhQYXRo
RXZhbHVhdG9yQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9W
OFhTTFRQcm9jZXNzb3JDdXN0b20uY3BwOgorCiAyMDA5LTEyLTE4ICBCcmlhbiBXZWluc3RlaW4g
IDxid2VpbnN0ZWluQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBBZGFtIFJvYmVu
LgpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCShy
ZXZpc2lvbiA1MjM0MSkKKysrIFdlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9y
VjgucG0JKHdvcmtpbmcgY29weSkKQEAgLTI4Miw2ICsyODIsMTYgQEAKIEVORAogICAgIH0KIAor
CisgICAgZm9yZWFjaCBteSAkZnVuY3Rpb24gKEB7JGRhdGFOb2RlLT5mdW5jdGlvbnN9KSB7Cisg
ICAgICAgIG15ICRuYW1lID0gJGZ1bmN0aW9uLT5zaWduYXR1cmUtPm5hbWU7CisgICAgICAgIHB1
c2goQGhlYWRlckNvbnRlbnQsIDw8RU5EKTsKKyAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVl
PiAke25hbWV9Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYpOworRU5ECisgICAgfQorCisg
ICAgR2VuZXJhdGVTcGVjaWFsQ2FzZUhlYWRlckRlY2xhcmF0aW9ucygkZGF0YU5vZGUpOworICAg
IAogICAgIHB1c2goQGhlYWRlckNvbnRlbnQsIDw8RU5EKTsKIAogIHByaXZhdGU6CkBAIC0yOTgs
NiArMzA4LDE0IEBACiAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiNlbmRpZiAvLyAke2NvbmRp
dGlvbmFsU3RyaW5nfVxuXG4iKSBpZiAkY29uZGl0aW9uYWxTdHJpbmc7CiB9CiAKK3N1YiBHZW5l
cmF0ZVNwZWNpYWxDYXNlSGVhZGVyRGVjbGFyYXRpb25zCit7CisgICAgbXkgJGRhdGFOb2RlID0g
c2hpZnQ7CisgICAgCisgICAgaWYgKCRkYXRhTm9kZS0+bmFtZSBlcSAiSFRNTENvbGxlY3Rpb24i
IHx8ICRkYXRhTm9kZS0+bmFtZSBlcSAiSFRNTEFsbENvbGxlY3Rpb24iKSB7CisgICAgICAgIHB1
c2goQGhlYWRlckNvbnRlbnQsICIgIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gY2FsbEFz
RnVuY3Rpb25DYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJik7XG4iKTsKKyAgICB9Cit9CiAK
IHN1YiBHZW5lcmF0ZVNldERPTUV4Y2VwdGlvbgogewpAQCAtODM4LDEyICs4NTYsNyBAQAogICAg
ICAgICAgICAgJGZ1bmN0aW9uLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJWOEN1
c3RvbSJ9KSB7CiAgICAgICAgICAgICBkaWUgIkN1c3RvbSBhbmQgVjhDdXN0b20gc2hvdWxkIGJl
IG11dHVhbGx5IGV4Y2x1c2l2ZSEiCiAgICAgICAgIH0KLSAgICAgICAgbXkgJGN1c3RvbUZ1bmMg
PSAkZnVuY3Rpb24tPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbSJ9IHx8
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgJGZ1bmN0aW9uLT5zaWduYXR1cmUtPmV4dGVuZGVk
QXR0cmlidXRlcy0+eyJWOEN1c3RvbSJ9OwotICAgICAgICBpZiAoJGN1c3RvbUZ1bmMgZXEgMSkg
ewotICAgICAgICAgICAgJGN1c3RvbUZ1bmMgPSAkaW50ZXJmYWNlTmFtZSAuICRjb2RlR2VuZXJh
dG9yLT5XS191Y2ZpcnN0KCRuYW1lKTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gIlY4Q3Vz
dG9tOjp2OCR7Y3VzdG9tRnVuY31DYWxsYmFjayI7CisgICAgICAgIHJldHVybiAiVjgke2ludGVy
ZmFjZU5hbWV9Ojoke25hbWV9Q2FsbGJhY2siOwogICAgIH0gZWxzZSB7CiAgICAgICAgIHJldHVy
biAiJHtpbnRlcmZhY2VOYW1lfUludGVybmFsOjoke25hbWV9Q2FsbGJhY2siOwogICAgIH0KSW5k
ZXg6IFdlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XcmFwcGVyLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5jcHAJKHJldmlzaW9uIDUyMzQxKQorKysg
V2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdyYXBwZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00
Nyw2ICs0Nyw4IEBACiAjaW5jbHVkZSAiVjhET01NYXAuaCIKICNpbmNsdWRlICJWOERPTVdpbmRv
dy5oIgogI2luY2x1ZGUgIlY4RXZlbnRMaXN0ZW5lckxpc3QuaCIKKyNpbmNsdWRlICJWOEhUTUxD
b2xsZWN0aW9uLmgiCisjaW5jbHVkZSAiVjhIVE1MUGx1Z0luRWxlbWVudEN1c3RvbS5oIgogI2lu
Y2x1ZGUgIlY4SW5kZXguaCIKICNpbmNsdWRlICJWOElzb2xhdGVkV29ybGQuaCIKICNpbmNsdWRl
ICJWOFByb3h5LmgiCkBAIC0yNzQsMTIgKzI3NiwxMiBAQAogICAgIGNhc2UgVjhDbGFzc0luZGV4
OjpIVE1MQUxMQ09MTEVDVElPTjoKICAgICAgICAgZGVzY3JpcHRvci0+SW5zdGFuY2VUZW1wbGF0
ZSgpLT5NYXJrQXNVbmRldGVjdGFibGUoKTsgLy8gZmFsbCB0aHJvdWdoCiAgICAgY2FzZSBWOENs
YXNzSW5kZXg6OkhUTUxDT0xMRUNUSU9OOgotICAgICAgICBkZXNjcmlwdG9yLT5JbnN0YW5jZVRl
bXBsYXRlKCktPlNldENhbGxBc0Z1bmN0aW9uSGFuZGxlcihVU0VfQ0FMTEJBQ0soSFRNTENvbGxl
Y3Rpb25DYWxsQXNGdW5jdGlvbikpOworICAgICAgICBkZXNjcmlwdG9yLT5JbnN0YW5jZVRlbXBs
YXRlKCktPlNldENhbGxBc0Z1bmN0aW9uSGFuZGxlcihWOEhUTUxDb2xsZWN0aW9uOjpjYWxsQXNG
dW5jdGlvbkNhbGxiYWNrKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBWOENsYXNzSW5kZXg6
OkhUTUxPUFRJT05TQ09MTEVDVElPTjoKICAgICAgICAgZGVzY3JpcHRvci0+SW5zdGFuY2VUZW1w
bGF0ZSgpLT5TZXROYW1lZFByb3BlcnR5SGFuZGxlcihVU0VfTkFNRURfUFJPUEVSVFlfR0VUVEVS
KEhUTUxDb2xsZWN0aW9uKSk7CiAgICAgICAgIGRlc2NyaXB0b3ItPkluc3RhbmNlVGVtcGxhdGUo
KS0+U2V0SW5kZXhlZFByb3BlcnR5SGFuZGxlcihVU0VfSU5ERVhFRF9QUk9QRVJUWV9HRVRURVIo
SFRNTE9wdGlvbnNDb2xsZWN0aW9uKSwgVVNFX0lOREVYRURfUFJPUEVSVFlfU0VUVEVSKEhUTUxP
cHRpb25zQ29sbGVjdGlvbikpOwotICAgICAgICBkZXNjcmlwdG9yLT5JbnN0YW5jZVRlbXBsYXRl
KCktPlNldENhbGxBc0Z1bmN0aW9uSGFuZGxlcihVU0VfQ0FMTEJBQ0soSFRNTENvbGxlY3Rpb25D
YWxsQXNGdW5jdGlvbikpOworICAgICAgICBkZXNjcmlwdG9yLT5JbnN0YW5jZVRlbXBsYXRlKCkt
PlNldENhbGxBc0Z1bmN0aW9uSGFuZGxlcihWOEhUTUxDb2xsZWN0aW9uOjpjYWxsQXNGdW5jdGlv
bkNhbGxiYWNrKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBWOENsYXNzSW5kZXg6OkhUTUxT
RUxFQ1RFTEVNRU5UOgogICAgICAgICBkZXNjcmlwdG9yLT5JbnN0YW5jZVRlbXBsYXRlKCktPlNl
dEluZGV4ZWRQcm9wZXJ0eUhhbmRsZXIoVVNFX0lOREVYRURfUFJPUEVSVFlfR0VUVEVSKEhUTUxT
ZWxlY3RFbGVtZW50KSwgVVNFX0lOREVYRURfUFJPUEVSVFlfU0VUVEVSKEhUTUxTZWxlY3RFbGVt
ZW50KSwgMCwgMCwgbm9kZUNvbGxlY3Rpb25JbmRleGVkUHJvcGVydHlFbnVtZXJhdG9yPEhUTUxT
ZWxlY3RFbGVtZW50Piwgdjg6OkludGVnZXI6Ok5ldyhWOENsYXNzSW5kZXg6Ok5PREUpKTsKQEAg
LTMyMCw3ICszMjIsNyBAQAogICAgICAgICAvLyBoYW5kbGluZyBjb2RlLgogICAgICAgICBkZXNj
cmlwdG9yLT5JbnN0YW5jZVRlbXBsYXRlKCktPlNldE5hbWVkUHJvcGVydHlIYW5kbGVyKFVTRV9O
QU1FRF9QUk9QRVJUWV9HRVRURVIoSFRNTFBsdWdJbkVsZW1lbnQpLCBVU0VfTkFNRURfUFJPUEVS
VFlfU0VUVEVSKEhUTUxQbHVnSW5FbGVtZW50KSk7CiAgICAgICAgIGRlc2NyaXB0b3ItPkluc3Rh
bmNlVGVtcGxhdGUoKS0+U2V0SW5kZXhlZFByb3BlcnR5SGFuZGxlcihVU0VfSU5ERVhFRF9QUk9Q
RVJUWV9HRVRURVIoSFRNTFBsdWdJbkVsZW1lbnQpLCBVU0VfSU5ERVhFRF9QUk9QRVJUWV9TRVRU
RVIoSFRNTFBsdWdJbkVsZW1lbnQpKTsKLSAgICAgICAgZGVzY3JpcHRvci0+SW5zdGFuY2VUZW1w
bGF0ZSgpLT5TZXRDYWxsQXNGdW5jdGlvbkhhbmRsZXIoVVNFX0NBTExCQUNLKEhUTUxQbHVnSW5F
bGVtZW50KSk7CisgICAgICAgIGRlc2NyaXB0b3ItPkluc3RhbmNlVGVtcGxhdGUoKS0+U2V0Q2Fs
bEFzRnVuY3Rpb25IYW5kbGVyKFY4SFRNTFBsdWdJbkVsZW1lbnQ6OmRlZmF1bHRDYWxsYmFjayk7
CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgVjhDbGFzc0luZGV4OjpIVE1MRlJBTUVTRVRFTEVN
RU5UOgogICAgICAgICBkZXNjcmlwdG9yLT5JbnN0YW5jZVRlbXBsYXRlKCktPlNldE5hbWVkUHJv
cGVydHlIYW5kbGVyKFVTRV9OQU1FRF9QUk9QRVJUWV9HRVRURVIoSFRNTEZyYW1lU2V0RWxlbWVu
dCkpOwpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhXZWJHTEZsb2F0QXJyYXlD
dXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4V2Vi
R0xGbG9hdEFycmF5Q3VzdG9tLmNwcAkocmV2aXNpb24gNTIzNDEpCisrKyBXZWJDb3JlL2JpbmRp
bmdzL3Y4L2N1c3RvbS9WOFdlYkdMRmxvYXRBcnJheUN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTQ0LDcgKzQ0LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1DQUxMQkFDS19GVU5D
X0RFQ0woV2ViR0xGbG9hdEFycmF5Q29uc3RydWN0b3IpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
VjhDdXN0b206OnY4V2ViR0xGbG9hdEFycmF5Q29uc3RydWN0b3JDYWxsYmFjayhjb25zdCB2ODo6
QXJndW1lbnRzJiBhcmdzKQogewogICAgIElOQ19TVEFUUygiRE9NLldlYkdMRmxvYXRBcnJheS5D
b250cnVjdG9yIik7CiAKQEAgLTc2LDEzICs3NiwxMyBAQAogICAgIHJldHVybiB2YWx1ZTsKIH0K
IAotQ0FMTEJBQ0tfRlVOQ19ERUNMKFdlYkdMRmxvYXRBcnJheUdldCkKK3Y4OjpIYW5kbGU8djg6
OlZhbHVlPiBWOFdlYkdMRmxvYXRBcnJheTo6Z2V0Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50
cyYgYXJncykKIHsKICAgICBJTkNfU1RBVFMoIkRPTS5XZWJHTEZsb2F0QXJyYXkuZ2V0KCkiKTsK
ICAgICByZXR1cm4gZ2V0V2ViR0xBcnJheUVsZW1lbnQ8V2ViR0xGbG9hdEFycmF5LCBmbG9hdD4o
YXJncywgVjhDbGFzc0luZGV4OjpXRUJHTEZMT0FUQVJSQVkpOwogfQogCi1DQUxMQkFDS19GVU5D
X0RFQ0woV2ViR0xGbG9hdEFycmF5U2V0KQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4V2ViR0xG
bG9hdEFycmF5OjpzZXRDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAg
IElOQ19TVEFUUygiRE9NLldlYkdMRmxvYXRBcnJheS5zZXQoKSIpOwogICAgIHJldHVybiBzZXRX
ZWJHTEFycmF5PFdlYkdMRmxvYXRBcnJheSwgVjhXZWJHTEZsb2F0QXJyYXk+KGFyZ3MsIFY4Q2xh
c3NJbmRleDo6V0VCR0xGTE9BVEFSUkFZKTsKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4RE9NQXBwbGljYXRpb25DYWNoZUN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9iaW5kaW5ncy92OC9jdXN0b20vVjhET01BcHBsaWNhdGlvbkNhY2hlQ3VzdG9tLmNwcAkocmV2
aXNpb24gNTIzNDEpCisrKyBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERPTUFwcGxpY2F0
aW9uQ2FjaGVDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOSwxMSArMjksMTIgQEAKICAq
LwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiRE9NQXBwbGljYXRpb25DYWNoZS5o
IgorI2luY2x1ZGUgIlY4RE9NQXBwbGljYXRpb25DYWNoZS5oIgogCiAjaWYgRU5BQkxFKE9GRkxJ
TkVfV0VCX0FQUExJQ0FUSU9OUykKIAogI2luY2x1ZGUgIkFwcGxpY2F0aW9uQ2FjaGVIb3N0Lmgi
CisjaW5jbHVkZSAiRE9NQXBwbGljYXRpb25DYWNoZS5oIgogI2luY2x1ZGUgIlY4QmluZGluZy5o
IgogI2luY2x1ZGUgIlY4Q3VzdG9tQmluZGluZy5oIgogI2luY2x1ZGUgIlY4RG9jdW1lbnQuaCIK
QEAgLTQ0LDcgKzQ1LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogLy8gSGFuZGxlcyBhcHBj
YWNoZS5hZGRFdmVudExpc3RuZXIobmFtZSwgZnVuYywgY2FwdHVyZSkgbWV0aG9kIGNhbGxzCi1D
QUxMQkFDS19GVU5DX0RFQ0woRE9NQXBwbGljYXRpb25DYWNoZUFkZEV2ZW50TGlzdGVuZXIpCit2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhET01BcHBsaWNhdGlvbkNhY2hlOjphZGRFdmVudExpc3Rl
bmVyQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBJTkNfU1RBVFMo
IkRPTUFwcGxpY2F0aW9uQ2FjaGUuYWRkRXZlbnRMaXN0ZW5lcigpIik7CiAgICAgRE9NQXBwbGlj
YXRpb25DYWNoZSogYXBwY2FjaGUgPSBWOERPTVdyYXBwZXI6OmNvbnZlcnRUb05hdGl2ZU9iamVj
dDxET01BcHBsaWNhdGlvbkNhY2hlPihWOENsYXNzSW5kZXg6OkRPTUFQUExJQ0FUSU9OQ0FDSEUs
IGFyZ3MuSG9sZGVyKCkpOwpAQCAtNjAsNyArNjEsNyBAQAogfQogCiAvLyBIYW5kbGVzIGFwcGNh
Y2hlLnJlbW92ZUV2ZW50TGlzdG5lcihuYW1lLCBmdW5jLCBjYXB0dXJlKSBtZXRob2QgY2FsbHMK
LUNBTExCQUNLX0ZVTkNfREVDTChET01BcHBsaWNhdGlvbkNhY2hlUmVtb3ZlRXZlbnRMaXN0ZW5l
cikKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOERPTUFwcGxpY2F0aW9uQ2FjaGU6OnJlbW92ZUV2
ZW50TGlzdGVuZXJDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAgIElO
Q19TVEFUUygiRE9NQXBwbGljYXRpb25DYWNoZS5yZW1vdmVFdmVudExpc3RlbmVyKCkiKTsKICAg
ICBET01BcHBsaWNhdGlvbkNhY2hlKiBhcHBjYWNoZSA9IFY4RE9NV3JhcHBlcjo6Y29udmVydFRv
TmF0aXZlT2JqZWN0PERPTUFwcGxpY2F0aW9uQ2FjaGU+KFY4Q2xhc3NJbmRleDo6RE9NQVBQTElD
QVRJT05DQUNIRSwgYXJncy5Ib2xkZXIoKSk7CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1
c3RvbS9WOE1lc3NhZ2VDaGFubmVsQ29uc3RydWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4TWVzc2FnZUNoYW5uZWxDb25zdHJ1Y3Rvci5jcHAJKHJl
dmlzaW9uIDUyMzQxKQorKysgV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhNZXNzYWdlQ2hh
bm5lbENvbnN0cnVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDQsNyArNDQsNyBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLUNBTExCQUNLX0ZVTkNfREVDTChNZXNzYWdlQ2hhbm5lbENv
bnN0cnVjdG9yKQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4Q3VzdG9tOjp2OE1lc3NhZ2VDaGFu
bmVsQ29uc3RydWN0b3JDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAg
IElOQ19TVEFUUygiRE9NLk1lc3NhZ2VDaGFubmVsLkNvbnN0cnVjdG9yIik7CiAgICAgLy8gRklY
TUU6IFRoZSBsb2dpYyBoZXJlIGlzIGFsbW9zdCBleGFjdCBkdXBsaWNhdGUgb2YgVjg6OmNvbnN0
cnVjdERPTU9iamVjdC4KSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4V2ViR0xB
cnJheUJ1ZmZlckN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy92OC9j
dXN0b20vVjhXZWJHTEFycmF5QnVmZmVyQ3VzdG9tLmNwcAkocmV2aXNpb24gNTIzNDEpCisrKyBX
ZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFdlYkdMQXJyYXlCdWZmZXJDdXN0b20uY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC00MSw3ICs0MSw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
Q0FMTEJBQ0tfRlVOQ19ERUNMKFdlYkdMQXJyYXlCdWZmZXJDb25zdHJ1Y3RvcikKK3Y4OjpIYW5k
bGU8djg6OlZhbHVlPiBWOEN1c3RvbTo6djhXZWJHTEFycmF5QnVmZmVyQ29uc3RydWN0b3JDYWxs
YmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAgIElOQ19TVEFUUygiRE9NLldl
YkdMQXJyYXlCdWZmZXIuQ29uc3RydWN0b3IiKTsKIApJbmRleDogV2ViQ29yZS9iaW5kaW5ncy92
OC9jdXN0b20vVjhIVE1MSW5wdXRFbGVtZW50Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxJbnB1dEVsZW1lbnRDdXN0b20uY3BwCShyZXZp
c2lvbiA1MjM0MSkKKysrIFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTElucHV0RWxl
bWVudEN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDggQEAKICAqLwogCiAj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiVjhIVE1MSW5wdXRFbGVtZW50LmgiCisKICNp
bmNsdWRlICJIVE1MSW5wdXRFbGVtZW50LmgiCiAKICNpbmNsdWRlICJWOEJpbmRpbmcuaCIKQEAg
LTkwLDcgKzkyLDcgQEAKICAgICBpbXAtPnNldFNlbGVjdGlvbkVuZCh2YWx1ZS0+SW50MzJWYWx1
ZSgpKTsKIH0KIAotQ0FMTEJBQ0tfRlVOQ19ERUNMKEhUTUxJbnB1dEVsZW1lbnRTZXRTZWxlY3Rp
b25SYW5nZSkKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEhUTUxJbnB1dEVsZW1lbnQ6OnNldFNl
bGVjdGlvblJhbmdlQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBJ
TkNfU1RBVFMoIkRPTS5IVE1MSW5wdXRFbGVtZW50LnNldFNlbGVjdGlvblJhbmdlIik7CiAgICAg
djg6OkhhbmRsZTx2ODo6T2JqZWN0PiBob2xkZXIgPSBhcmdzLkhvbGRlcigpOwpJbmRleDogV2Vi
Q29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MRm9ybUVsZW1lbnRDdXN0b20uY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTEZvcm1FbGVtZW50Q3Vz
dG9tLmNwcAkocmV2aXNpb24gNTIzNDEpCisrKyBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9W
OEhUTUxGb3JtRWxlbWVudEN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDkgKzI5LDEw
IEBACiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkhUTUxGb3JtRWxlbWVu
dC5oIgorI2luY2x1ZGUgIlY4SFRNTEZvcm1FbGVtZW50LmgiCiAKICNpbmNsdWRlICJIVE1MQ29s
bGVjdGlvbi5oIgorI2luY2x1ZGUgIkhUTUxGb3JtRWxlbWVudC5oIgogI2luY2x1ZGUgIlY4Qmlu
ZGluZy5oIgogI2luY2x1ZGUgIlY4Q3VzdG9tQmluZGluZy5oIgogI2luY2x1ZGUgIlY4TmFtZWRO
b2Rlc0NvbGxlY3Rpb24uaCIKQEAgLTgwLDcgKzgxLDggQEAKICAgICByZXR1cm4gVjhET01XcmFw
cGVyOjpjb252ZXJ0VG9WOE9iamVjdChWOENsYXNzSW5kZXg6Ok5PREVMSVNULCBjb2xsZWN0aW9u
KTsKIH0KIAotQ0FMTEJBQ0tfRlVOQ19ERUNMKEhUTUxGb3JtRWxlbWVudFN1Ym1pdCkgewordjg6
OkhhbmRsZTx2ODo6VmFsdWU+IFY4SFRNTEZvcm1FbGVtZW50OjpzdWJtaXRDYWxsYmFjayhjb25z
dCB2ODo6QXJndW1lbnRzJiBhcmdzKQorewogICAgIElOQ19TVEFUUygiRE9NLkhUTUxGb3JtRWxl
bWVudC5zdWJtaXQoKSIpOwogICAgIEhUTUxGb3JtRWxlbWVudCogZm9ybSA9IFY4RE9NV3JhcHBl
cjo6Y29udmVydERPTVdyYXBwZXJUb05hdGl2ZTxIVE1MRm9ybUVsZW1lbnQ+KGFyZ3MuSG9sZGVy
KCkpOwogICAgIEZyYW1lKiBmcmFtZSA9IFY4UHJveHk6OnJldHJpZXZlRnJhbWVGb3JFbnRlcmVk
Q29udGV4dCgpOwpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MUGx1Z0lu
RWxlbWVudEN1c3RvbS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9t
L1Y4SFRNTFBsdWdJbkVsZW1lbnRDdXN0b20uaAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTFBsdWdJbkVsZW1lbnRDdXN0b20uaAkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSw0NiBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAwOSBHb29nbGUgSW5jLgor
ICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIAorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMg
YXJlCisgKiBtZXQ6CisgKiAKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBj
b3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVy
IHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmli
dXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQg
ZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbi4KKyAqIAorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFY4SFRNTFBsdWdJbkVsZW1lbnRDdXN0b21f
aAorI2RlZmluZSBWOEhUTUxQbHVnSW5FbGVtZW50Q3VzdG9tX2gKKworI2luY2x1ZGUgPHY4Lmg+
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgVjhIVE1MUGx1Z0luRWxlbWVudCB7Citw
dWJsaWM6CisgICAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBkZWZhdWx0Q2FsbGJhY2so
Y29uc3Qgdjg6OkFyZ3VtZW50cyYpOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisj
ZW5kaWYgLy8gVjhIVE1MUGx1Z0luRWxlbWVudEN1c3RvbV9oCkluZGV4OiBXZWJDb3JlL2JpbmRp
bmdzL3Y4L2N1c3RvbS9WOFdlYkdMUmVuZGVyaW5nQ29udGV4dEN1c3RvbS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhXZWJHTFJlbmRlcmluZ0NvbnRleHRD
dXN0b20uY3BwCShyZXZpc2lvbiA1MjM0MSkKKysrIFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9t
L1Y4V2ViR0xSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIs
NyArMzIsNyBAQAogCiAjaWYgRU5BQkxFKDNEX0NBTlZBUykKIAotI2luY2x1ZGUgIldlYkdMUmVu
ZGVyaW5nQ29udGV4dC5oIgorI2luY2x1ZGUgIlY4V2ViR0xSZW5kZXJpbmdDb250ZXh0LmgiCiAK
ICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCiAKQEAgLTU1LDYgKzU1LDcgQEAKICNpbmNsdWRl
ICJWOEhUTUxDYW52YXNFbGVtZW50LmgiCiAjaW5jbHVkZSAiVjhIVE1MSW1hZ2VFbGVtZW50Lmgi
CiAjaW5jbHVkZSAiVjhQcm94eS5oIgorI2luY2x1ZGUgIldlYkdMUmVuZGVyaW5nQ29udGV4dC5o
IgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTk4LDcgKzk5LDcgQEAKICAgICByZXR1cm4g
ZGF0YTsKIH0KIAotQ0FMTEJBQ0tfRlVOQ19ERUNMKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJ1ZmZl
ckRhdGEpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmJ1
ZmZlckRhdGFDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAgIElOQ19T
VEFUUygiRE9NLldlYkdMUmVuZGVyaW5nQ29udGV4dC5idWZmZXJEYXRhKCkiKTsKIApAQCAtMTQw
LDcgKzE0MSw3IEBACiAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKIH0KIAotQ0FMTEJBQ0tf
RlVOQ19ERUNMKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJ1ZmZlclN1YkRhdGEpCit2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gVjhXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmJ1ZmZlclN1YkRhdGFDYWxsYmFj
ayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAgIElOQ19TVEFUUygiRE9NLldlYkdM
UmVuZGVyaW5nQ29udGV4dC5idWZmZXJTdWJEYXRhKCkiKTsKIApAQCAtMjgwLDEzICsyODEsMTMg
QEAKICAgICBrUHJvZ3JhbVBhcmFtZXRlciwga1VuaWZvcm0KIH07CiAKLUNBTExCQUNLX0ZVTkNf
REVDTChXZWJHTFJlbmRlcmluZ0NvbnRleHRHZXRCdWZmZXJQYXJhbWV0ZXIpCit2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gVjhXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldEJ1ZmZlclBhcmFtZXRlckNh
bGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgSU5DX1NUQVRTKCJET00u
V2ViR0xSZW5kZXJpbmdDb250ZXh0LmdldEJ1ZmZlclBhcmFtZXRlcigpIik7CiAgICAgcmV0dXJu
IGdldE9iamVjdFBhcmFtZXRlcihhcmdzLCBrQnVmZmVyKTsKIH0KIAotQ0FMTEJBQ0tfRlVOQ19E
RUNMKFdlYkdMUmVuZGVyaW5nQ29udGV4dEdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRl
cikKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0RnJh
bWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYg
YXJncykKIHsKICAgICBJTkNfU1RBVFMoIkRPTS5XZWJHTFJlbmRlcmluZ0NvbnRleHQuZ2V0RnJh
bWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyKCkiKTsKIApAQCAtMzIyLDcgKzMyMyw3IEBACiAg
ICAgcmV0dXJuIHRvVjgoaW5mbyk7CiB9CiAKLUNBTExCQUNLX0ZVTkNfREVDTChXZWJHTFJlbmRl
cmluZ0NvbnRleHRHZXRQYXJhbWV0ZXIpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhXZWJHTFJl
bmRlcmluZ0NvbnRleHQ6OmdldFBhcmFtZXRlckNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMm
IGFyZ3MpCiB7CiAgICAgSU5DX1NUQVRTKCJET00uV2ViR0xSZW5kZXJpbmdDb250ZXh0LmdldFBh
cmFtZXRlcigpIik7CiAKQEAgLTM0OCw3ICszNDksNyBAQAogICAgIHJldHVybiB0b1Y4KGluZm8p
OwogfQogCi1DQUxMQkFDS19GVU5DX0RFQ0woV2ViR0xSZW5kZXJpbmdDb250ZXh0R2V0UHJvZ3Jh
bVBhcmFtZXRlcikKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFdlYkdMUmVuZGVyaW5nQ29udGV4
dDo6Z2V0UHJvZ3JhbVBhcmFtZXRlckNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3Mp
CiB7CiAgICAgSU5DX1NUQVRTKCJET00uV2ViR0xSZW5kZXJpbmdDb250ZXh0LmdldFByb2dyYW1Q
YXJhbWV0ZXIoKSIpOwogCkBAIC0zNzUsMTMgKzM3NiwxMyBAQAogICAgIHJldHVybiB0b1Y4KGlu
Zm8pOwogfQogCi1DQUxMQkFDS19GVU5DX0RFQ0woV2ViR0xSZW5kZXJpbmdDb250ZXh0R2V0UmVu
ZGVyYnVmZmVyUGFyYW1ldGVyKQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4V2ViR0xSZW5kZXJp
bmdDb250ZXh0OjpnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJDYWxsYmFjayhjb25zdCB2ODo6QXJn
dW1lbnRzJiBhcmdzKQogewogICAgIElOQ19TVEFUUygiRE9NLldlYkdMUmVuZGVyaW5nQ29udGV4
dC5nZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXIoKSIpOwogICAgIHJldHVybiBnZXRPYmplY3RQYXJh
bWV0ZXIoYXJncywga1JlbmRlcmJ1ZmZlcik7CiB9CiAKLUNBTExCQUNLX0ZVTkNfREVDTChXZWJH
TFJlbmRlcmluZ0NvbnRleHRHZXRTaGFkZXJQYXJhbWV0ZXIpCit2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gVjhXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFNoYWRlclBhcmFtZXRlckNhbGxiYWNrKGNv
bnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgSU5DX1NUQVRTKCJET00uV2ViR0xSZW5k
ZXJpbmdDb250ZXh0LmdldFNoYWRlclBhcmFtZXRlcigpIik7CiAKQEAgLTQwOCwxMyArNDA5LDEz
IEBACiAgICAgcmV0dXJuIHRvVjgoaW5mbyk7CiB9CiAKLUNBTExCQUNLX0ZVTkNfREVDTChXZWJH
TFJlbmRlcmluZ0NvbnRleHRHZXRUZXhQYXJhbWV0ZXIpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
VjhXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFRleFBhcmFtZXRlckNhbGxiYWNrKGNvbnN0IHY4
OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgSU5DX1NUQVRTKCJET00uV2ViR0xSZW5kZXJpbmdD
b250ZXh0LmdldFRleFBhcmFtZXRlcigpIik7CiAgICAgcmV0dXJuIGdldE9iamVjdFBhcmFtZXRl
cihhcmdzLCBrVGV4dHVyZSk7CiB9CiAKLUNBTExCQUNLX0ZVTkNfREVDTChXZWJHTFJlbmRlcmlu
Z0NvbnRleHRHZXRVbmlmb3JtKQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4V2ViR0xSZW5kZXJp
bmdDb250ZXh0OjpnZXRVbmlmb3JtQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykK
IHsKICAgICBJTkNfU1RBVFMoIkRPTS5XZWJHTFJlbmRlcmluZ0NvbnRleHQuZ2V0VW5pZm9ybSgp
Iik7CiAKQEAgLTQ0MywxMyArNDQ0LDEzIEBACiAgICAgcmV0dXJuIHRvVjgoaW5mbyk7CiB9CiAK
LUNBTExCQUNLX0ZVTkNfREVDTChXZWJHTFJlbmRlcmluZ0NvbnRleHRHZXRWZXJ0ZXhBdHRyaWIp
Cit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFZlcnRl
eEF0dHJpYkNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgSU5DX1NU
QVRTKCJET00uV2ViR0xSZW5kZXJpbmdDb250ZXh0LmdldFZlcnRleEF0dHJpYigpIik7CiAgICAg
cmV0dXJuIGdldE9iamVjdFBhcmFtZXRlcihhcmdzLCBrVmVydGV4QXR0cmliKTsKIH0KIAotQ0FM
TEJBQ0tfRlVOQ19ERUNMKFdlYkdMUmVuZGVyaW5nQ29udGV4dFRleEltYWdlMkQpCit2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gVjhXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnRleEltYWdlMkRDYWxsYmFj
ayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAgIElOQ19TVEFUUygiRE9NLldlYkdM
UmVuZGVyaW5nQ29udGV4dC50ZXhJbWFnZTJEKCkiKTsKIApAQCAtNTcxLDcgKzU3Miw3IEBACiAg
ICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKIH0KIAotQ0FMTEJBQ0tfRlVOQ19ERUNMKFdlYkdM
UmVuZGVyaW5nQ29udGV4dFRleFN1YkltYWdlMkQpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhX
ZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnRleFN1YkltYWdlMkRDYWxsYmFjayhjb25zdCB2ODo6QXJn
dW1lbnRzJiBhcmdzKQogewogICAgIElOQ19TVEFUUygiRE9NLldlYkdMUmVuZGVyaW5nQ29udGV4
dC50ZXhTdWJJbWFnZTJEKCkiKTsKIApAQCAtNzYzLDQ5ICs3NjQsNDkgQEAKICAgICByZXR1cm4g
djg6OlVuZGVmaW5lZCgpOwogfQogCi1DQUxMQkFDS19GVU5DX0RFQ0woV2ViR0xSZW5kZXJpbmdD
b250ZXh0VW5pZm9ybTFmdikKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFdlYkdMUmVuZGVyaW5n
Q29udGV4dDo6dW5pZm9ybTFmdkNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7
CiAgICAgSU5DX1NUQVRTKCJET00uV2ViR0xSZW5kZXJpbmdDb250ZXh0LnVuaWZvcm0xZnYoKSIp
OwogICAgIHJldHVybiB2ZXJ0ZXhBdHRyaWJBbmRVbmlmb3JtSGVscGVyZihhcmdzLCBrVW5pZm9y
bTF2KTsKIH0KIAotQ0FMTEJBQ0tfRlVOQ19ERUNMKFdlYkdMUmVuZGVyaW5nQ29udGV4dFVuaWZv
cm0xaXYpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnVu
aWZvcm0xaXZDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAgIElOQ19T
VEFUUygiRE9NLldlYkdMUmVuZGVyaW5nQ29udGV4dC51bmlmb3JtMWl2KCkiKTsKICAgICByZXR1
cm4gdW5pZm9ybUhlbHBlcmkoYXJncywga1VuaWZvcm0xdik7CiB9CiAKLUNBTExCQUNLX0ZVTkNf
REVDTChXZWJHTFJlbmRlcmluZ0NvbnRleHRVbmlmb3JtMmZ2KQordjg6OkhhbmRsZTx2ODo6VmFs
dWU+IFY4V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtMmZ2Q2FsbGJhY2soY29uc3Qgdjg6
OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBJTkNfU1RBVFMoIkRPTS5XZWJHTFJlbmRlcmluZ0Nv
bnRleHQudW5pZm9ybTJmdigpIik7CiAgICAgcmV0dXJuIHZlcnRleEF0dHJpYkFuZFVuaWZvcm1I
ZWxwZXJmKGFyZ3MsIGtVbmlmb3JtMnYpOwogfQogCi1DQUxMQkFDS19GVU5DX0RFQ0woV2ViR0xS
ZW5kZXJpbmdDb250ZXh0VW5pZm9ybTJpdikKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFdlYkdM
UmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybTJpdkNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMm
IGFyZ3MpCiB7CiAgICAgSU5DX1NUQVRTKCJET00uV2ViR0xSZW5kZXJpbmdDb250ZXh0LnVuaWZv
cm0yaXYoKSIpOwogICAgIHJldHVybiB1bmlmb3JtSGVscGVyaShhcmdzLCBrVW5pZm9ybTJ2KTsK
IH0KIAotQ0FMTEJBQ0tfRlVOQ19ERUNMKFdlYkdMUmVuZGVyaW5nQ29udGV4dFVuaWZvcm0zZnYp
Cit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm0z
ZnZDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAgIElOQ19TVEFUUygi
RE9NLldlYkdMUmVuZGVyaW5nQ29udGV4dC51bmlmb3JtM2Z2KCkiKTsKICAgICByZXR1cm4gdmVy
dGV4QXR0cmliQW5kVW5pZm9ybUhlbHBlcmYoYXJncywga1VuaWZvcm0zdik7CiB9CiAKLUNBTExC
QUNLX0ZVTkNfREVDTChXZWJHTFJlbmRlcmluZ0NvbnRleHRVbmlmb3JtM2l2KQordjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IFY4V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtM2l2Q2FsbGJhY2so
Y29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBJTkNfU1RBVFMoIkRPTS5XZWJHTFJl
bmRlcmluZ0NvbnRleHQudW5pZm9ybTNpdigpIik7CiAgICAgcmV0dXJuIHVuaWZvcm1IZWxwZXJp
KGFyZ3MsIGtVbmlmb3JtM3YpOwogfQogCi1DQUxMQkFDS19GVU5DX0RFQ0woV2ViR0xSZW5kZXJp
bmdDb250ZXh0VW5pZm9ybTRmdikKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFdlYkdMUmVuZGVy
aW5nQ29udGV4dDo6dW5pZm9ybTRmdkNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3Mp
CiB7CiAgICAgSU5DX1NUQVRTKCJET00uV2ViR0xSZW5kZXJpbmdDb250ZXh0LnVuaWZvcm00ZnYo
KSIpOwogICAgIHJldHVybiB2ZXJ0ZXhBdHRyaWJBbmRVbmlmb3JtSGVscGVyZihhcmdzLCBrVW5p
Zm9ybTR2KTsKIH0KIAotQ0FMTEJBQ0tfRlVOQ19ERUNMKFdlYkdMUmVuZGVyaW5nQ29udGV4dFVu
aWZvcm00aXYpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhXZWJHTFJlbmRlcmluZ0NvbnRleHQ6
OnVuaWZvcm00aXZDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAgIElO
Q19TVEFUUygiRE9NLldlYkdMUmVuZGVyaW5nQ29udGV4dC51bmlmb3JtNGl2KCkiKTsKICAgICBy
ZXR1cm4gdW5pZm9ybUhlbHBlcmkoYXJncywga1VuaWZvcm00dik7CkBAIC04ODEsNDMgKzg4Miw0
MyBAQAogICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CiB9CiAKLUNBTExCQUNLX0ZVTkNfREVD
TChXZWJHTFJlbmRlcmluZ0NvbnRleHRVbmlmb3JtTWF0cml4MmZ2KQordjg6OkhhbmRsZTx2ODo6
VmFsdWU+IFY4V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtTWF0cml4MmZ2Q2FsbGJhY2so
Y29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBJTkNfU1RBVFMoIkRPTS5XZWJHTFJl
bmRlcmluZ0NvbnRleHQudW5pZm9ybU1hdHJpeDJmdigpIik7CiAgICAgcmV0dXJuIHVuaWZvcm1N
YXRyaXhIZWxwZXIoYXJncywgMik7CiB9CiAKLUNBTExCQUNLX0ZVTkNfREVDTChXZWJHTFJlbmRl
cmluZ0NvbnRleHRVbmlmb3JtTWF0cml4M2Z2KQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4V2Vi
R0xSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtTWF0cml4M2Z2Q2FsbGJhY2soY29uc3Qgdjg6OkFy
Z3VtZW50cyYgYXJncykKIHsKICAgICBJTkNfU1RBVFMoIkRPTS5XZWJHTFJlbmRlcmluZ0NvbnRl
eHQudW5pZm9ybU1hdHJpeDNmdigpIik7CiAgICAgcmV0dXJuIHVuaWZvcm1NYXRyaXhIZWxwZXIo
YXJncywgMyk7CiB9CiAKLUNBTExCQUNLX0ZVTkNfREVDTChXZWJHTFJlbmRlcmluZ0NvbnRleHRV
bmlmb3JtTWF0cml4NGZ2KQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4V2ViR0xSZW5kZXJpbmdD
b250ZXh0Ojp1bmlmb3JtTWF0cml4NGZ2Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJn
cykKIHsKICAgICBJTkNfU1RBVFMoIkRPTS5XZWJHTFJlbmRlcmluZ0NvbnRleHQudW5pZm9ybU1h
dHJpeDRmdigpIik7CiAgICAgcmV0dXJuIHVuaWZvcm1NYXRyaXhIZWxwZXIoYXJncywgNCk7CiB9
CiAKLUNBTExCQUNLX0ZVTkNfREVDTChXZWJHTFJlbmRlcmluZ0NvbnRleHRWZXJ0ZXhBdHRyaWIx
ZnYpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnZlcnRl
eEF0dHJpYjFmdkNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgSU5D
X1NUQVRTKCJET00uV2ViR0xSZW5kZXJpbmdDb250ZXh0LnZlcnRleEF0dHJpYjFmdigpIik7CiAg
ICAgcmV0dXJuIHZlcnRleEF0dHJpYkFuZFVuaWZvcm1IZWxwZXJmKGFyZ3MsIGtWZXJ0ZXhBdHRy
aWIxdik7CiB9CiAKLUNBTExCQUNLX0ZVTkNfREVDTChXZWJHTFJlbmRlcmluZ0NvbnRleHRWZXJ0
ZXhBdHRyaWIyZnYpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhXZWJHTFJlbmRlcmluZ0NvbnRl
eHQ6OnZlcnRleEF0dHJpYjJmdkNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7
CiAgICAgSU5DX1NUQVRTKCJET00uV2ViR0xSZW5kZXJpbmdDb250ZXh0LnZlcnRleEF0dHJpYjJm
digpIik7CiAgICAgcmV0dXJuIHZlcnRleEF0dHJpYkFuZFVuaWZvcm1IZWxwZXJmKGFyZ3MsIGtW
ZXJ0ZXhBdHRyaWIydik7CiB9CiAKLUNBTExCQUNLX0ZVTkNfREVDTChXZWJHTFJlbmRlcmluZ0Nv
bnRleHRWZXJ0ZXhBdHRyaWIzZnYpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhXZWJHTFJlbmRl
cmluZ0NvbnRleHQ6OnZlcnRleEF0dHJpYjNmdkNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMm
IGFyZ3MpCiB7CiAgICAgSU5DX1NUQVRTKCJET00uV2ViR0xSZW5kZXJpbmdDb250ZXh0LnZlcnRl
eEF0dHJpYjNmdigpIik7CiAgICAgcmV0dXJuIHZlcnRleEF0dHJpYkFuZFVuaWZvcm1IZWxwZXJm
KGFyZ3MsIGtWZXJ0ZXhBdHRyaWIzdik7CiB9CiAKLUNBTExCQUNLX0ZVTkNfREVDTChXZWJHTFJl
bmRlcmluZ0NvbnRleHRWZXJ0ZXhBdHRyaWI0ZnYpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhX
ZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnZlcnRleEF0dHJpYjRmdkNhbGxiYWNrKGNvbnN0IHY4OjpB
cmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgSU5DX1NUQVRTKCJET00uV2ViR0xSZW5kZXJpbmdDb250
ZXh0LnZlcnRleEF0dHJpYjRmdigpIik7CiAgICAgcmV0dXJuIHZlcnRleEF0dHJpYkFuZFVuaWZv
cm1IZWxwZXJmKGFyZ3MsIGtWZXJ0ZXhBdHRyaWI0dik7CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdz
L3Y4L2N1c3RvbS9WOERhdGFiYXNlQ3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Jp
bmRpbmdzL3Y4L2N1c3RvbS9WOERhdGFiYXNlQ3VzdG9tLmNwcAkocmV2aXNpb24gNTIzNDEpCisr
KyBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERhdGFiYXNlQ3VzdG9tLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogCiAjaWYgRU5B
QkxFKERBVEFCQVNFKQorI2luY2x1ZGUgIlY4RGF0YWJhc2UuaCIKIAogI2luY2x1ZGUgIkRhdGFi
YXNlLmgiCiAjaW5jbHVkZSAiVjhCaW5kaW5nLmgiCkBAIC00Miw3ICs0Myw3IEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotQ0FMTEJBQ0tfRlVOQ19ERUNMKERhdGFiYXNlQ2hhbmdlVmVyc2lv
bikKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOERhdGFiYXNlOjpjaGFuZ2VWZXJzaW9uQ2FsbGJh
Y2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBJTkNfU1RBVFMoIkRPTS5EYXRh
YmFzZS5jaGFuZ2VWZXJzaW9uKCkiKTsKIApAQCAtMTIzLDEzICsxMjQsMTMgQEAKICAgICByZXR1
cm4gdjg6OlVuZGVmaW5lZCgpOwogfQogCi1DQUxMQkFDS19GVU5DX0RFQ0woRGF0YWJhc2VUcmFu
c2FjdGlvbikKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOERhdGFiYXNlOjp0cmFuc2FjdGlvbkNh
bGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgSU5DX1NUQVRTKCJET00u
RGF0YWJhc2UudHJhbnNhY3Rpb24oKSIpOwogICAgIHJldHVybiBjcmVhdGVUcmFuc2FjdGlvbihh
cmdzLCBmYWxzZSk7CiB9CiAKLUNBTExCQUNLX0ZVTkNfREVDTChEYXRhYmFzZVJlYWRUcmFuc2Fj
dGlvbikKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOERhdGFiYXNlOjpyZWFkVHJhbnNhY3Rpb25D
YWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAgIElOQ19TVEFUUygiRE9N
LkRhdGFiYXNlLnJlYWRUcmFuc2FjdGlvbigpIik7CiAgICAgcmV0dXJuIGNyZWF0ZVRyYW5zYWN0
aW9uKGFyZ3MsIHRydWUpOwpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhET01Q
YXJzZXJDb25zdHJ1Y3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy92OC9j
dXN0b20vVjhET01QYXJzZXJDb25zdHJ1Y3Rvci5jcHAJKHJldmlzaW9uIDUyMzQxKQorKysgV2Vi
Q29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhET01QYXJzZXJDb25zdHJ1Y3Rvci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTM2LDcgKzM2LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1DQUxM
QkFDS19GVU5DX0RFQ0woRE9NUGFyc2VyQ29uc3RydWN0b3IpCit2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gVjhDdXN0b206OnY4RE9NUGFyc2VyQ29uc3RydWN0b3JDYWxsYmFjayhjb25zdCB2ODo6QXJn
dW1lbnRzJiBhcmdzKQogewogICAgIElOQ19TVEFUUygiRE9NLkRPTVBhcnNlci5Db250cnVjdG9y
Iik7CiAgICAgcmV0dXJuIFY4UHJveHk6OmNvbnN0cnVjdERPTU9iamVjdDxWOENsYXNzSW5kZXg6
OkRPTVBBUlNFUiwgRE9NUGFyc2VyPihhcmdzKTsKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4RE9NV2luZG93Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRp
bmdzL3Y4L2N1c3RvbS9WOERPTVdpbmRvd0N1c3RvbS5jcHAJKHJldmlzaW9uIDUyMzQxKQorKysg
V2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhET01XaW5kb3dDdXN0b20uY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yOSw3ICsyOSw3IEBACiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgotI2lu
Y2x1ZGUgIkRPTVdpbmRvdy5oIgorI2luY2x1ZGUgIlY4RE9NV2luZG93LmgiCiAKICNpbmNsdWRl
ICJWOEJpbmRpbmcuaCIKICNpbmNsdWRlICJWOEJpbmRpbmdTdGF0ZS5oIgpAQCAtNDMsNiArNDMs
NyBAQAogI2luY2x1ZGUgIkNocm9tZS5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKICNp
bmNsdWRlICJET01UaW1lci5oIgorI2luY2x1ZGUgIkRPTVdpbmRvdy5oIgogI2luY2x1ZGUgIkZy
YW1lLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkUmVxdWVzdC5oIgogI2luY2x1ZGUgIkZyYW1lVmll
dy5oIgpAQCAtNjgsNyArNjksNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXY4OjpIYW5k
bGU8djg6OlZhbHVlPiBWOEN1c3RvbTo6V2luZG93U2V0VGltZW91dEltcGwoY29uc3Qgdjg6OkFy
Z3VtZW50cyYgYXJncywgYm9vbCBzaW5nbGVTaG90KQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFdp
bmRvd1NldFRpbWVvdXRJbXBsKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MsIGJvb2wgc2luZ2xl
U2hvdCkKIHsKICAgICBpbnQgYXJndW1lbnRDb3VudCA9IGFyZ3MuTGVuZ3RoKCk7CiAKQEAgLTIx
NCw3ICsyMTUsNyBAQAogQUNDRVNTT1JfU0VUVEVSKERPTVdpbmRvd0xvY2F0aW9uKQogewogICAg
IERPTVdpbmRvdyogaW1wID0gVjhET01XcmFwcGVyOjpjb252ZXJ0VG9OYXRpdmVPYmplY3Q8RE9N
V2luZG93PihWOENsYXNzSW5kZXg6OkRPTVdJTkRPVywgaW5mby5Ib2xkZXIoKSk7Ci0gICAgV2lu
ZG93U2V0TG9jYXRpb24oaW1wLCB0b1dlYkNvcmVTdHJpbmcodmFsdWUpKTsKKyAgICBWOEN1c3Rv
bTo6V2luZG93U2V0TG9jYXRpb24oaW1wLCB0b1dlYkNvcmVTdHJpbmcodmFsdWUpKTsKIH0KIAog
CkBAIC0zMzYsNyArMzM3LDcgQEAKICAgICByZXR1cm4gVjhET01XcmFwcGVyOjpnZXRDb25zdHJ1
Y3RvcihWOENsYXNzSW5kZXg6Ok9QVElPTiwgd2luZG93KTsKIH0KIAotQ0FMTEJBQ0tfRlVOQ19E
RUNMKERPTVdpbmRvd0FkZEV2ZW50TGlzdGVuZXIpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhE
T01XaW5kb3c6OmFkZEV2ZW50TGlzdGVuZXJDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBh
cmdzKQogewogICAgIElOQ19TVEFUUygiRE9NLkRPTVdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCki
KTsKIApAQCAtMzY5LDcgKzM3MCw3IEBACiB9CiAKIAotQ0FMTEJBQ0tfRlVOQ19ERUNMKERPTVdp
bmRvd1JlbW92ZUV2ZW50TGlzdGVuZXIpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhET01XaW5k
b3c6OnJlbW92ZUV2ZW50TGlzdGVuZXJDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdz
KQogewogICAgIElOQ19TVEFUUygiRE9NLkRPTVdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCki
KTsKIApAQCAtNDAwLDcgKzQwMSw3IEBACiAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKIH0K
IAotQ0FMTEJBQ0tfRlVOQ19ERUNMKERPTVdpbmRvd1Bvc3RNZXNzYWdlKQordjg6OkhhbmRsZTx2
ODo6VmFsdWU+IFY4RE9NV2luZG93Ojpwb3N0TWVzc2FnZUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1
bWVudHMmIGFyZ3MpCiB7CiAgICAgSU5DX1NUQVRTKCJET00uRE9NV2luZG93LnBvc3RNZXNzYWdl
KCkiKTsKICAgICBET01XaW5kb3cqIHdpbmRvdyA9IFY4RE9NV3JhcHBlcjo6Y29udmVydFRvTmF0
aXZlT2JqZWN0PERPTVdpbmRvdz4oVjhDbGFzc0luZGV4OjpET01XSU5ET1csIGFyZ3MuSG9sZGVy
KCkpOwpAQCAtNDMzLDcgKzQzNCw3IEBACiAgICAgcmV0dXJuIHRocm93RXJyb3IoZWMpOwogfQog
Ci1DQUxMQkFDS19GVU5DX0RFQ0woRE9NV2luZG93QXRvYikKK3Y4OjpIYW5kbGU8djg6OlZhbHVl
PiBWOERPTVdpbmRvdzo6YXRvYkNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7
CiAgICAgSU5DX1NUQVRTKCJET00uRE9NV2luZG93LmF0b2IoKSIpOwogCkBAIC00NTIsNyArNDUz
LDcgQEAKICAgICByZXR1cm4gY29udmVydEJhc2U2NChzdHIsIGZhbHNlKTsKIH0KIAotQ0FMTEJB
Q0tfRlVOQ19ERUNMKERPTVdpbmRvd0J0b2EpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhET01X
aW5kb3c6OmJ0b2FDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAgIElO
Q19TVEFUUygiRE9NLkRPTVdpbmRvdy5idG9hKCkiKTsKIApAQCAtNDc1LDcgKzQ3Niw3IEBACiAv
LyBmaXggdGhpcyBieSBjYWxsaW5nIHRvU3RyaW5nIGZ1bmN0aW9uIG9uIHRoZSByZWNlaXZlci4K
IC8vIEhvd2V2ZXIsIFY4IGltcGxlbWVudHMgdG9TdHJpbmcgaW4gSmF2YVNjcmlwdCwgd2hpY2gg
cmVxdWlyZXMKIC8vIHN3aXRjaGluZyBjb250ZXh0IG9mIHJlY2VpdmVyLiBJIGNvbnNpZGVyIGl0
IGlzIGRhbmdlcm91cy4KLUNBTExCQUNLX0ZVTkNfREVDTChET01XaW5kb3dUb1N0cmluZykKK3Y4
OjpIYW5kbGU8djg6OlZhbHVlPiBWOERPTVdpbmRvdzo6dG9TdHJpbmdDYWxsYmFjayhjb25zdCB2
ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAgIElOQ19TVEFUUygiRE9NLkRPTVdpbmRvdy50b1N0
cmluZygpIik7CiAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBkb21XcmFwcGVyID0gVjhET01X
cmFwcGVyOjpsb29rdXBET01XcmFwcGVyKFY4Q2xhc3NJbmRleDo6RE9NV0lORE9XLCBhcmdzLlRo
aXMoKSk7CkBAIC00ODQsMTIgKzQ4NSwxOCBAQAogICAgIHJldHVybiBkb21XcmFwcGVyLT5PYmpl
Y3RQcm90b1RvU3RyaW5nKCk7CiB9CiAKLUNBTExCQUNLX0ZVTkNfREVDTChET01XaW5kb3dOT1Ap
Cit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhET01XaW5kb3c6OnJlbGVhc2VFdmVudHNDYWxsYmFj
ayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAgIElOQ19TVEFUUygiRE9NLkRPTVdp
bmRvdy5ub3AoKSIpOwogICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CiB9CiAKK3Y4OjpIYW5k
bGU8djg6OlZhbHVlPiBWOERPTVdpbmRvdzo6Y2FwdHVyZUV2ZW50c0NhbGxiYWNrKGNvbnN0IHY4
OjpBcmd1bWVudHMmIGFyZ3MpCit7CisgICAgSU5DX1NUQVRTKCJET00uRE9NV2luZG93Lm5vcCgp
Iik7CisgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKK30KKwogc3RhdGljIGJvb2wgY2FuU2hv
d01vZGFsRGlhbG9nTm93KGNvbnN0IEZyYW1lKiBmcmFtZSkKIHsKICAgICAvLyBBIGZyYW1lIGNh
biBvdXQgbGl2ZSBpdHMgcGFnZS4gU2VlIGJ1ZyAxMjE5NjEzLgpAQCAtNjExLDcgKzYxOCw3IEBA
CiAKIAogCi1DQUxMQkFDS19GVU5DX0RFQ0woRE9NV2luZG93U2hvd01vZGFsRGlhbG9nKQordjg6
OkhhbmRsZTx2ODo6VmFsdWU+IFY4RE9NV2luZG93OjpzaG93TW9kYWxEaWFsb2dDYWxsYmFjayhj
b25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAgIElOQ19TVEFUUygiRE9NLkRPTVdpbmRv
dy5zaG93TW9kYWxEaWFsb2coKSIpOwogCkBAIC03MDEsNyArNzA4LDcgQEAKIH0KIAogCi1DQUxM
QkFDS19GVU5DX0RFQ0woRE9NV2luZG93T3BlbikKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOERP
TVdpbmRvdzo6b3BlbkNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAg
SU5DX1NUQVRTKCJET00uRE9NV2luZG93Lm9wZW4oKSIpOwogCkBAIC05MDcsMjEgKzkxNCwyMSBA
QAogfQogCiAKLUNBTExCQUNLX0ZVTkNfREVDTChET01XaW5kb3dTZXRUaW1lb3V0KQordjg6Okhh
bmRsZTx2ODo6VmFsdWU+IFY4RE9NV2luZG93OjpzZXRUaW1lb3V0Q2FsbGJhY2soY29uc3Qgdjg6
OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBJTkNfU1RBVFMoIkRPTS5ET01XaW5kb3cuc2V0VGlt
ZW91dCgpIik7CiAgICAgcmV0dXJuIFdpbmRvd1NldFRpbWVvdXRJbXBsKGFyZ3MsIHRydWUpOwog
fQogCiAKLUNBTExCQUNLX0ZVTkNfREVDTChET01XaW5kb3dTZXRJbnRlcnZhbCkKK3Y4OjpIYW5k
bGU8djg6OlZhbHVlPiBWOERPTVdpbmRvdzo6c2V0SW50ZXJ2YWxDYWxsYmFjayhjb25zdCB2ODo6
QXJndW1lbnRzJiBhcmdzKQogewogICAgIElOQ19TVEFUUygiRE9NLkRPTVdpbmRvdy5zZXRJbnRl
cnZhbCgpIik7CiAgICAgcmV0dXJuIFdpbmRvd1NldFRpbWVvdXRJbXBsKGFyZ3MsIGZhbHNlKTsK
IH0KIAogCi12b2lkIFY4Q3VzdG9tOjpDbGVhclRpbWVvdXRJbXBsKGNvbnN0IHY4OjpBcmd1bWVu
dHMmIGFyZ3MpCit2b2lkIENsZWFyVGltZW91dEltcGwoY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJn
cykKIHsKICAgICBpbnQgaGFuZGxlID0gdG9JbnQzMihhcmdzWzBdKTsKIApAQCAtOTM2LDE0ICs5
NDMsMTQgQEAKIH0KIAogCi1DQUxMQkFDS19GVU5DX0RFQ0woRE9NV2luZG93Q2xlYXJUaW1lb3V0
KQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4RE9NV2luZG93OjpjbGVhclRpbWVvdXRDYWxsYmFj
ayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAgIElOQ19TVEFUUygiRE9NLkRPTVdp
bmRvdy5jbGVhclRpbWVvdXQiKTsKICAgICBDbGVhclRpbWVvdXRJbXBsKGFyZ3MpOwogICAgIHJl
dHVybiB2ODo6VW5kZWZpbmVkKCk7CiB9CiAKLUNBTExCQUNLX0ZVTkNfREVDTChET01XaW5kb3dD
bGVhckludGVydmFsKQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4RE9NV2luZG93OjpjbGVhcklu
dGVydmFsQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBJTkNfU1RB
VFMoIkRPTS5ET01XaW5kb3cuY2xlYXJJbnRlcnZhbCIpOwogICAgIENsZWFyVGltZW91dEltcGwo
YXJncyk7CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFdvcmtlckN1c3RvbS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhXb3JrZXJDdXN0
b20uY3BwCShyZXZpc2lvbiA1MjM0MSkKKysrIFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4
V29ya2VyQ3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1
ZGUgImNvbmZpZy5oIgogCiAjaWYgRU5BQkxFKFdPUktFUlMpCisjaW5jbHVkZSAiVjhXb3JrZXIu
aCIKIAogI2luY2x1ZGUgIldvcmtlci5oIgogCkBAIC00Nyw3ICs0OCw3IEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotQ0FMTEJBQ0tfRlVOQ19ERUNMKFdvcmtlckNvbnN0cnVjdG9yKQordjg6
OkhhbmRsZTx2ODo6VmFsdWU+IFY4Q3VzdG9tOjp2OFdvcmtlckNvbnN0cnVjdG9yQ2FsbGJhY2so
Y29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBJTkNfU1RBVFMoTCJET00uV29ya2Vy
LkNvbnN0cnVjdG9yIik7CiAKQEAgLTg3LDcgKzg4LDcgQEAKICAgICByZXR1cm4gd3JhcHBlck9i
amVjdDsKIH0KIAotQ0FMTEJBQ0tfRlVOQ19ERUNMKFdvcmtlclBvc3RNZXNzYWdlKQordjg6Okhh
bmRsZTx2ODo6VmFsdWU+IFY4V29ya2VyOjpwb3N0TWVzc2FnZUNhbGxiYWNrKGNvbnN0IHY4OjpB
cmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgSU5DX1NUQVRTKCJET00uV29ya2VyLnBvc3RNZXNzYWdl
Iik7CiAgICAgV29ya2VyKiB3b3JrZXIgPSBWOERPTVdyYXBwZXI6OmNvbnZlcnRUb05hdGl2ZU9i
amVjdDxXb3JrZXI+KFY4Q2xhc3NJbmRleDo6V09SS0VSLCBhcmdzLkhvbGRlcigpKTsKSW5kZXg6
IFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTEFsbENvbGxlY3Rpb25DdXN0b20uY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTEFsbENvbGxl
Y3Rpb25DdXN0b20uY3BwCShyZXZpc2lvbiA1MjM0MSkKKysrIFdlYkNvcmUvYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4SFRNTEFsbENvbGxlY3Rpb25DdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
OSw2ICsyOSw4IEBACiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlY4SFRN
TEFsbENvbGxlY3Rpb24uaCIKKwogI2luY2x1ZGUgIkhUTUxBbGxDb2xsZWN0aW9uLmgiCiAKICNp
bmNsdWRlICJWOEJpbmRpbmcuaCIKQEAgLTg4LDE0ICs5MCwxNCBAQAogICAgIHJldHVybiBnZXRO
YW1lZEl0ZW1zKGltcCwgdjhTdHJpbmdUb0F0b21pY1dlYkNvcmVTdHJpbmcobmFtZSkpOwogfQog
Ci1DQUxMQkFDS19GVU5DX0RFQ0woSFRNTEFsbENvbGxlY3Rpb25JdGVtKQordjg6OkhhbmRsZTx2
ODo6VmFsdWU+IFY4SFRNTEFsbENvbGxlY3Rpb246Oml0ZW1DYWxsYmFjayhjb25zdCB2ODo6QXJn
dW1lbnRzJiBhcmdzKQogewogICAgIElOQ19TVEFUUygiRE9NLkhUTUxBbGxDb2xsZWN0aW9uLml0
ZW0oKSIpOwogICAgIEhUTUxBbGxDb2xsZWN0aW9uKiBpbXAgPSBWOERPTVdyYXBwZXI6OmNvbnZl
cnRUb05hdGl2ZU9iamVjdDxIVE1MQWxsQ29sbGVjdGlvbj4oVjhDbGFzc0luZGV4OjpIVE1MQUxM
Q09MTEVDVElPTiwgYXJncy5Ib2xkZXIoKSk7CiAgICAgcmV0dXJuIGdldEl0ZW0oaW1wLCBhcmdz
WzBdKTsKIH0KIAotQ0FMTEJBQ0tfRlVOQ19ERUNMKEhUTUxBbGxDb2xsZWN0aW9uTmFtZWRJdGVt
KQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SFRNTEFsbENvbGxlY3Rpb246Om5hbWVkSXRlbUNh
bGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgSU5DX1NUQVRTKCJET00u
SFRNTEFsbENvbGxlY3Rpb24ubmFtZWRJdGVtKCkiKTsKICAgICBIVE1MQWxsQ29sbGVjdGlvbiog
aW1wID0gVjhET01XcmFwcGVyOjpjb252ZXJ0VG9OYXRpdmVPYmplY3Q8SFRNTEFsbENvbGxlY3Rp
b24+KFY4Q2xhc3NJbmRleDo6SFRNTEFMTENPTExFQ1RJT04sIGFyZ3MuSG9sZGVyKCkpOwpAQCAt
MTA3LDcgKzEwOSw3IEBACiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotQ0FMTEJBQ0tfRlVOQ19E
RUNMKEhUTUxBbGxDb2xsZWN0aW9uQ2FsbEFzRnVuY3Rpb24pCit2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gVjhIVE1MQWxsQ29sbGVjdGlvbjo6Y2FsbEFzRnVuY3Rpb25DYWxsYmFjayhjb25zdCB2ODo6
QXJndW1lbnRzJiBhcmdzKQogewogICAgIElOQ19TVEFUUygiRE9NLkhUTUxBbGxDb2xsZWN0aW9u
LmNhbGxBc0Z1bmN0aW9uKCkiKTsKICAgICBpZiAoYXJncy5MZW5ndGgoKSA8IDEpCkluZGV4OiBX
ZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxDYW52YXNFbGVtZW50Q3VzdG9tLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxDYW52YXNFbGVt
ZW50Q3VzdG9tLmNwcAkocmV2aXNpb24gNTIzNDEpCisrKyBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1
c3RvbS9WOEhUTUxDYW52YXNFbGVtZW50Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjks
MTAgKzI5LDEwIEBACiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkhUTUxD
YW52YXNFbGVtZW50LmgiCi0jaW5jbHVkZSAiQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5oIgorI2lu
Y2x1ZGUgIlY4SFRNTENhbnZhc0VsZW1lbnQuaCIKIAogI2luY2x1ZGUgIkNhbnZhc1JlbmRlcmlu
Z0NvbnRleHQuaCIKKyNpbmNsdWRlICJIVE1MQ2FudmFzRWxlbWVudC5oIgogI2luY2x1ZGUgIlY4
QmluZGluZy5oIgogI2luY2x1ZGUgIlY4Q3VzdG9tQmluZGluZy5oIgogI2luY2x1ZGUgIlY4Tm9k
ZS5oIgpAQCAtNDAsNyArNDAsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUNBTExCQUNL
X0ZVTkNfREVDTChIVE1MQ2FudmFzRWxlbWVudEdldENvbnRleHQpCit2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gVjhIVE1MQ2FudmFzRWxlbWVudDo6Z2V0Q29udGV4dENhbGxiYWNrKGNvbnN0IHY4OjpB
cmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgSU5DX1NUQVRTKCJET00uSFRNTENhbnZhc0VsZW1lbnQu
Y29udGV4dCIpOwogICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gaG9sZGVyID0gYXJncy5Ib2xk
ZXIoKTsKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4V2ViS2l0UG9pbnRDb25z
dHJ1Y3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhX
ZWJLaXRQb2ludENvbnN0cnVjdG9yLmNwcAkocmV2aXNpb24gNTIzNDEpCisrKyBXZWJDb3JlL2Jp
bmRpbmdzL3Y4L2N1c3RvbS9WOFdlYktpdFBvaW50Q29uc3RydWN0b3IuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC00MSw3ICs0MSw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotQ0FMTEJBQ0tf
RlVOQ19ERUNMKFdlYktpdFBvaW50Q29uc3RydWN0b3IpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
VjhDdXN0b206OnY4V2ViS2l0UG9pbnRDb25zdHJ1Y3RvckNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1
bWVudHMmIGFyZ3MpCiB7CiAgICAgSU5DX1NUQVRTKCJET00uV2ViS2l0UG9pbnQuQ29uc3RydWN0
b3IiKTsKICAgICBmbG9hdCB4ID0gMDsKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9t
L1Y4RG9jdW1lbnRDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4RG9jdW1lbnRDdXN0b20uY3BwCShyZXZpc2lvbiA1MjM0MSkKKysrIFdlYkNvcmUv
YmluZGluZ3MvdjgvY3VzdG9tL1Y4RG9jdW1lbnRDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yOSw5ICsyOSwxMCBAQAogICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJE
b2N1bWVudC5oIgorI2luY2x1ZGUgIlY4RG9jdW1lbnQuaCIKIAogI2luY2x1ZGUgIkNhbnZhc1Jl
bmRlcmluZ0NvbnRleHQuaCIKKyNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkV4Y2Vw
dGlvbkNvZGUuaCIKICNpbmNsdWRlICJOb2RlLmgiCiAjaW5jbHVkZSAiWFBhdGhOU1Jlc29sdmVy
LmgiCkBAIC01MCw3ICs1MSw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotQ0FMTEJBQ0tf
RlVOQ19ERUNMKERvY3VtZW50RXZhbHVhdGUpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhEb2N1
bWVudDo6ZXZhbHVhdGVDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAg
IElOQ19TVEFUUygiRE9NLkRvY3VtZW50LmV2YWx1YXRlKCkiKTsKIApAQCAtODEsNyArODIsNyBA
QAogICAgIHJldHVybiBWOERPTVdyYXBwZXI6OmNvbnZlcnRUb1Y4T2JqZWN0KFY4Q2xhc3NJbmRl
eDo6WFBBVEhSRVNVTFQsIHJlc3VsdC5yZWxlYXNlKCkpOwogfQogCi1DQUxMQkFDS19GVU5DX0RF
Q0woRG9jdW1lbnRHZXRDU1NDYW52YXNDb250ZXh0KQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4
RG9jdW1lbnQ6OmdldENTU0NhbnZhc0NvbnRleHRDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRz
JiBhcmdzKQogewogICAgIElOQ19TVEFUUygiRE9NLkRvY3VtZW50LmdldENTU0NhbnZhc0NvbnRl
eHQiKTsKICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGhvbGRlciA9IGFyZ3MuSG9sZGVyKCk7
CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFdvcmtlckNvbnRleHRDdXN0b20u
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4V29ya2VyQ29u
dGV4dEN1c3RvbS5jcHAJKHJldmlzaW9uIDUyMzQxKQorKysgV2ViQ29yZS9iaW5kaW5ncy92OC9j
dXN0b20vVjhXb3JrZXJDb250ZXh0Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsNiAr
MzEsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogCiAjaWYgRU5BQkxFKFdPUktFUlMpCisjaW5j
bHVkZSAiVjhXb3JrZXJDb250ZXh0LmgiCiAKICNpbmNsdWRlICJET01UaW1lci5oIgogI2luY2x1
ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKQEAgLTk0LDcgKzk1LDcgQEAKICAgICByZXR1cm4gdjg6Oklu
dGVnZXI6Ok5ldyh0aW1lcklkKTsKIH0KIAotQ0FMTEJBQ0tfRlVOQ19ERUNMKFdvcmtlckNvbnRl
eHRJbXBvcnRTY3JpcHRzKQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4V29ya2VyQ29udGV4dDo6
aW1wb3J0U2NyaXB0c0NhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAg
SU5DX1NUQVRTKEwiRE9NLldvcmtlckNvbnRleHQuaW1wb3J0U2NyaXB0cygpIik7CiAgICAgaWYg
KCFhcmdzLkxlbmd0aCgpKQpAQCAtMTI4LDE5ICsxMjksMTkgQEAKICAgICByZXR1cm4gdjg6OlVu
ZGVmaW5lZCgpOwogfQogCi1DQUxMQkFDS19GVU5DX0RFQ0woV29ya2VyQ29udGV4dFNldFRpbWVv
dXQpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhXb3JrZXJDb250ZXh0OjpzZXRUaW1lb3V0Q2Fs
bGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBJTkNfU1RBVFMoTCJET00u
V29ya2VyQ29udGV4dC5zZXRUaW1lb3V0KCkiKTsKICAgICByZXR1cm4gU2V0VGltZW91dE9ySW50
ZXJ2YWwoYXJncywgdHJ1ZSk7CiB9CiAKLUNBTExCQUNLX0ZVTkNfREVDTChXb3JrZXJDb250ZXh0
U2V0SW50ZXJ2YWwpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhXb3JrZXJDb250ZXh0OjpzZXRJ
bnRlcnZhbENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgSU5DX1NU
QVRTKEwiRE9NLldvcmtlckNvbnRleHQuc2V0SW50ZXJ2YWwoKSIpOwogICAgIHJldHVybiBTZXRU
aW1lb3V0T3JJbnRlcnZhbChhcmdzLCBmYWxzZSk7CiB9CiAKLUNBTExCQUNLX0ZVTkNfREVDTChX
b3JrZXJDb250ZXh0QWRkRXZlbnRMaXN0ZW5lcikKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFdv
cmtlckNvbnRleHQ6OmFkZEV2ZW50TGlzdGVuZXJDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRz
JiBhcmdzKQogewogICAgIElOQ19TVEFUUyhMIkRPTS5Xb3JrZXJDb250ZXh0LmFkZEV2ZW50TGlz
dGVuZXIoKSIpOwogICAgIFdvcmtlckNvbnRleHQqIHdvcmtlckNvbnRleHQgPSBWOERPTVdyYXBw
ZXI6OmNvbnZlcnRET01XcmFwcGVyVG9OYXRpdmU8V29ya2VyQ29udGV4dD4oYXJncy5Ib2xkZXIo
KSk7CkBAIC0xNTYsNyArMTU3LDcgQEAKICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwogfQog
Ci1DQUxMQkFDS19GVU5DX0RFQ0woV29ya2VyQ29udGV4dFJlbW92ZUV2ZW50TGlzdGVuZXIpCit2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhXb3JrZXJDb250ZXh0OjpyZW1vdmVFdmVudExpc3RlbmVy
Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBJTkNfU1RBVFMoTCJE
T00uV29ya2VyQ29udGV4dC5yZW1vdmVFdmVudExpc3RlbmVyKCkiKTsKICAgICBXb3JrZXJDb250
ZXh0KiB3b3JrZXJDb250ZXh0ID0gVjhET01XcmFwcGVyOjpjb252ZXJ0RE9NV3JhcHBlclRvTmF0
aXZlPFdvcmtlckNvbnRleHQ+KGFyZ3MuSG9sZGVyKCkpOwpJbmRleDogV2ViQ29yZS9iaW5kaW5n
cy92OC9jdXN0b20vVjhIVE1MQ29sbGVjdGlvbkN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MQ29sbGVjdGlvbkN1c3RvbS5jcHAJKHJldmlz
aW9uIDUyMzQxKQorKysgV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MQ29sbGVjdGlv
bkN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDggKzI5LDkgQEAKICAqLwogCiAjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiVjhIVE1MQ29sbGVjdGlvbi5oIgorCiAjaW5jbHVk
ZSAiSFRNTENvbGxlY3Rpb24uaCIKLQogI2luY2x1ZGUgIlY4QmluZGluZy5oIgogI2luY2x1ZGUg
IlY4Q3VzdG9tQmluZGluZy5oIgogI2luY2x1ZGUgIlY4TmFtZWROb2Rlc0NvbGxlY3Rpb24uaCIK
QEAgLTg4LDE0ICs4OSwxNCBAQAogICAgIHJldHVybiBnZXROYW1lZEl0ZW1zKGltcCwgdjhTdHJp
bmdUb0F0b21pY1dlYkNvcmVTdHJpbmcobmFtZSkpOwogfQogCi1DQUxMQkFDS19GVU5DX0RFQ0wo
SFRNTENvbGxlY3Rpb25JdGVtKQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SFRNTENvbGxlY3Rp
b246Oml0ZW1DYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAgIElOQ19T
VEFUUygiRE9NLkhUTUxDb2xsZWN0aW9uLml0ZW0oKSIpOwogICAgIEhUTUxDb2xsZWN0aW9uKiBp
bXAgPSBWOERPTVdyYXBwZXI6OmNvbnZlcnRUb05hdGl2ZU9iamVjdDxIVE1MQ29sbGVjdGlvbj4o
VjhDbGFzc0luZGV4OjpIVE1MQ09MTEVDVElPTiwgYXJncy5Ib2xkZXIoKSk7CiAgICAgcmV0dXJu
IGdldEl0ZW0oaW1wLCBhcmdzWzBdKTsKIH0KIAotQ0FMTEJBQ0tfRlVOQ19ERUNMKEhUTUxDb2xs
ZWN0aW9uTmFtZWRJdGVtKQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SFRNTENvbGxlY3Rpb246
Om5hbWVkSXRlbUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgSU5D
X1NUQVRTKCJET00uSFRNTENvbGxlY3Rpb24ubmFtZWRJdGVtKCkiKTsKICAgICBIVE1MQ29sbGVj
dGlvbiogaW1wID0gVjhET01XcmFwcGVyOjpjb252ZXJ0VG9OYXRpdmVPYmplY3Q8SFRNTENvbGxl
Y3Rpb24+KFY4Q2xhc3NJbmRleDo6SFRNTENPTExFQ1RJT04sIGFyZ3MuSG9sZGVyKCkpOwpAQCAt
MTA3LDcgKzEwOCw3IEBACiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotQ0FMTEJBQ0tfRlVOQ19E
RUNMKEhUTUxDb2xsZWN0aW9uQ2FsbEFzRnVuY3Rpb24pCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
VjhIVE1MQ29sbGVjdGlvbjo6Y2FsbEFzRnVuY3Rpb25DYWxsYmFjayhjb25zdCB2ODo6QXJndW1l
bnRzJiBhcmdzKQogewogICAgIElOQ19TVEFUUygiRE9NLkhUTUxDb2xsZWN0aW9uLmNhbGxBc0Z1
bmN0aW9uKCkiKTsKICAgICBpZiAoYXJncy5MZW5ndGgoKSA8IDEpCkluZGV4OiBXZWJDb3JlL2Jp
bmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxPcHRpb25FbGVtZW50Q29uc3RydWN0b3IuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTE9wdGlvbkVsZW1lbnRD
b25zdHJ1Y3Rvci5jcHAJKHJldmlzaW9uIDUyMzQxKQorKysgV2ViQ29yZS9iaW5kaW5ncy92OC9j
dXN0b20vVjhIVE1MT3B0aW9uRWxlbWVudENvbnN0cnVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNjIsNyArNjIsNyBAQAogICAgIHJldHVybiBjYWNoZWRUZW1wbGF0ZTsKIH0KIAotQ0FMTEJB
Q0tfRlVOQ19ERUNMKEhUTUxPcHRpb25FbGVtZW50Q29uc3RydWN0b3IpCit2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gVjhDdXN0b206OnY4SFRNTE9wdGlvbkVsZW1lbnRDb25zdHJ1Y3RvckNhbGxiYWNr
KGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgSU5DX1NUQVRTKCJET00uSFRNTE9w
dGlvbkVsZW1lbnQuQ29udHJ1Y3RvciIpOwogCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1
c3RvbS9WOFdlYkdMQnl0ZUFycmF5Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Jp
bmRpbmdzL3Y4L2N1c3RvbS9WOFdlYkdMQnl0ZUFycmF5Q3VzdG9tLmNwcAkocmV2aXNpb24gNTIz
NDEpCisrKyBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFdlYkdMQnl0ZUFycmF5Q3VzdG9t
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDQsNyArNDQsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLUNBTExCQUNLX0ZVTkNfREVDTChXZWJHTEJ5dGVBcnJheUNvbnN0cnVjdG9yKQordjg6
OkhhbmRsZTx2ODo6VmFsdWU+IFY4Q3VzdG9tOjp2OFdlYkdMQnl0ZUFycmF5Q29uc3RydWN0b3JD
YWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAgIElOQ19TVEFUUygiRE9N
LldlYkdMQnl0ZUFycmF5LkNvbnRydWN0b3IiKTsKIApAQCAtNzksMTMgKzc5LDEzIEBACiAgICAg
cmV0dXJuIHZhbHVlOwogfQogCi1DQUxMQkFDS19GVU5DX0RFQ0woV2ViR0xCeXRlQXJyYXlHZXQp
Cit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhXZWJHTEJ5dGVBcnJheTo6Z2V0Q2FsbGJhY2soY29u
c3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBJTkNfU1RBVFMoIkRPTS5XZWJHTEJ5dGVB
cnJheS5nZXQoKSIpOwogICAgIHJldHVybiBnZXRXZWJHTEFycmF5RWxlbWVudDxXZWJHTEJ5dGVB
cnJheSwgc2lnbmVkIGNoYXI+KGFyZ3MsIFY4Q2xhc3NJbmRleDo6V0VCR0xCWVRFQVJSQVkpOwog
fQogCi1DQUxMQkFDS19GVU5DX0RFQ0woV2ViR0xCeXRlQXJyYXlTZXQpCit2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gVjhXZWJHTEJ5dGVBcnJheTo6c2V0Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50
cyYgYXJncykKIHsKICAgICBJTkNfU1RBVFMoIkRPTS5XZWJHTEJ5dGVBcnJheS5zZXQoKSIpOwog
ICAgIHJldHVybiBzZXRXZWJHTEFycmF5PFdlYkdMQnl0ZUFycmF5LCBWOFdlYkdMQnl0ZUFycmF5
PihhcmdzLCBWOENsYXNzSW5kZXg6OldFQkdMQllURUFSUkFZKTsKSW5kZXg6IFdlYkNvcmUvYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4Tm9kZUN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9i
aW5kaW5ncy92OC9jdXN0b20vVjhOb2RlQ3VzdG9tLmNwcAkocmV2aXNpb24gNTIzNDEpCisrKyBX
ZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE5vZGVDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC00NSw3ICs0NSw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotQ0FMTEJBQ0tfRlVO
Q19ERUNMKE5vZGVBZGRFdmVudExpc3RlbmVyKQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4Tm9k
ZTo6YWRkRXZlbnRMaXN0ZW5lckNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7
CiAgICAgSU5DX1NUQVRTKCJET00uTm9kZS5hZGRFdmVudExpc3RlbmVyKCkiKTsKICAgICBOb2Rl
KiBub2RlID0gVjhET01XcmFwcGVyOjpjb252ZXJ0RE9NV3JhcHBlclRvTm9kZTxOb2RlPihhcmdz
LkhvbGRlcigpKTsKQEAgLTYwLDcgKzYwLDcgQEAKICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgp
OwogfQogCi1DQUxMQkFDS19GVU5DX0RFQ0woTm9kZVJlbW92ZUV2ZW50TGlzdGVuZXIpCit2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gVjhOb2RlOjpyZW1vdmVFdmVudExpc3RlbmVyQ2FsbGJhY2soY29u
c3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBJTkNfU1RBVFMoIkRPTS5Ob2RlLnJlbW92
ZUV2ZW50TGlzdGVuZXIoKSIpOwogICAgIE5vZGUqIG5vZGUgPSBWOERPTVdyYXBwZXI6OmNvbnZl
cnRET01XcmFwcGVyVG9Ob2RlPE5vZGU+KGFyZ3MuSG9sZGVyKCkpOwpAQCAtODAsNyArODAsNyBA
QAogfQogCiAvLyBUaGlzIGZ1bmN0aW9uIGlzIGN1c3RvbWl6ZWQgdG8gdGFrZSBhZHZhbnRhZ2Ug
b2YgdGhlIG9wdGlvbmFsIDR0aCBhcmd1bWVudDogc2hvdWxkTGF6eUF0dGFjaAotQ0FMTEJBQ0tf
RlVOQ19ERUNMKE5vZGVJbnNlcnRCZWZvcmUpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhOb2Rl
OjppbnNlcnRCZWZvcmVDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAg
IElOQ19TVEFUUygiRE9NLk5vZGUuaW5zZXJ0QmVmb3JlIik7CiAgICAgdjg6OkhhbmRsZTx2ODo6
T2JqZWN0PiBob2xkZXIgPSBhcmdzLkhvbGRlcigpOwpAQCAtOTksNyArOTksNyBAQAogfQogCiAv
LyBUaGlzIGZ1bmN0aW9uIGlzIGN1c3RvbWl6ZWQgdG8gdGFrZSBhZHZhbnRhZ2Ugb2YgdGhlIG9w
dGlvbmFsIDR0aCBhcmd1bWVudDogc2hvdWxkTGF6eUF0dGFjaAotQ0FMTEJBQ0tfRlVOQ19ERUNM
KE5vZGVSZXBsYWNlQ2hpbGQpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhOb2RlOjpyZXBsYWNl
Q2hpbGRDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAgIElOQ19TVEFU
UygiRE9NLk5vZGUucmVwbGFjZUNoaWxkIik7CiAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBo
b2xkZXIgPSBhcmdzLkhvbGRlcigpOwpAQCAtMTE3LDcgKzExNyw3IEBACiAgICAgcmV0dXJuIHY4
OjpOdWxsKCk7CiB9CiAKLUNBTExCQUNLX0ZVTkNfREVDTChOb2RlUmVtb3ZlQ2hpbGQpCit2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gVjhOb2RlOjpyZW1vdmVDaGlsZENhbGxiYWNrKGNvbnN0IHY4OjpB
cmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgSU5DX1NUQVRTKCJET00uTm9kZS5yZW1vdmVDaGlsZCIp
OwogICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gaG9sZGVyID0gYXJncy5Ib2xkZXIoKTsKQEAg
LTEzNSw3ICsxMzUsNyBAQAogfQogCiAvLyBUaGlzIGZ1bmN0aW9uIGlzIGN1c3RvbWl6ZWQgdG8g
dGFrZSBhZHZhbnRhZ2Ugb2YgdGhlIG9wdGlvbmFsIDR0aCBhcmd1bWVudDogc2hvdWxkTGF6eUF0
dGFjaAotQ0FMTEJBQ0tfRlVOQ19ERUNMKE5vZGVBcHBlbmRDaGlsZCkKK3Y4OjpIYW5kbGU8djg6
OlZhbHVlPiBWOE5vZGU6OmFwcGVuZENoaWxkQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYg
YXJncykKIHsKICAgICBJTkNfU1RBVFMoIkRPTS5Ob2RlLmFwcGVuZENoaWxkIik7CiAgICAgdjg6
OkhhbmRsZTx2ODo6T2JqZWN0PiBob2xkZXIgPSBhcmdzLkhvbGRlcigpOwpJbmRleDogV2ViQ29y
ZS9iaW5kaW5ncy92OC9jdXN0b20vVjhNZXNzYWdlRXZlbnRDdXN0b20uY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4TWVzc2FnZUV2ZW50Q3VzdG9tLmNwcAko
cmV2aXNpb24gNTIzNDEpCisrKyBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE1lc3NhZ2VF
dmVudEN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDggQEAKICAqLwogCiAj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiVjhNZXNzYWdlRXZlbnQuaCIKKwogI2luY2x1
ZGUgIk1lc3NhZ2VFdmVudC5oIgogI2luY2x1ZGUgIlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgog
CkBAIC01Niw3ICs1OCw3IEBACiAgICAgcmV0dXJuIHBvcnRBcnJheTsKIH0KIAotQ0FMTEJBQ0tf
RlVOQ19ERUNMKE1lc3NhZ2VFdmVudEluaXRNZXNzYWdlRXZlbnQpCit2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gVjhNZXNzYWdlRXZlbnQ6OmluaXRNZXNzYWdlRXZlbnRDYWxsYmFjayhjb25zdCB2ODo6
QXJndW1lbnRzJiBhcmdzKQogewogICAgIElOQ19TVEFUUygiRE9NLk1lc3NhZ2VFdmVudC5pbml0
TWVzc2FnZUV2ZW50Iik7CiAgICAgTWVzc2FnZUV2ZW50KiBldmVudCA9IFY4RE9NV3JhcHBlcjo6
Y29udmVydFRvTmF0aXZlT2JqZWN0PE1lc3NhZ2VFdmVudD4oVjhDbGFzc0luZGV4OjpNRVNTQUdF
RVZFTlQsIGFyZ3MuSG9sZGVyKCkpOwpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20v
VjhIVE1MSW1hZ2VFbGVtZW50Q29uc3RydWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
YmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTEltYWdlRWxlbWVudENvbnN0cnVjdG9yLmNwcAkocmV2
aXNpb24gNTIzNDEpCisrKyBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxJbWFnZUVs
ZW1lbnRDb25zdHJ1Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYxLDcgKzYxLDcgQEAKICAg
ICByZXR1cm4gY2FjaGVkVGVtcGxhdGU7CiB9CiAKLUNBTExCQUNLX0ZVTkNfREVDTChIVE1MSW1h
Z2VFbGVtZW50Q29uc3RydWN0b3IpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhDdXN0b206OnY4
SFRNTEltYWdlRWxlbWVudENvbnN0cnVjdG9yQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYg
YXJncykKIHsKICAgICBJTkNfU1RBVFMoIkRPTS5IVE1MSW1hZ2VFbGVtZW50LkNvbnRydWN0b3Ii
KTsKIApJbmRleDogV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhTUUxSZXN1bHRTZXRSb3dM
aXN0Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9W
OFNRTFJlc3VsdFNldFJvd0xpc3RDdXN0b20uY3BwCShyZXZpc2lvbiA1MjM0MSkKKysrIFdlYkNv
cmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4U1FMUmVzdWx0U2V0Um93TGlzdEN1c3RvbS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKIAogI2lm
IEVOQUJMRShEQVRBQkFTRSkKKyNpbmNsdWRlICJWOFNRTFJlc3VsdFNldFJvd0xpc3QuaCIKIAog
I2luY2x1ZGUgIlNRTFJlc3VsdFNldFJvd0xpc3QuaCIKICNpbmNsdWRlICJWOEJpbmRpbmcuaCIK
QEAgLTM5LDcgKzQwLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1DQUxMQkFDS19GVU5D
X0RFQ0woU1FMUmVzdWx0U2V0Um93TGlzdEl0ZW0pCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhT
UUxSZXN1bHRTZXRSb3dMaXN0OjppdGVtQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJn
cykKIHsKICAgICBJTkNfU1RBVFMoIkRPTS5TUUxSZXN1bHRTZXRSb3dMaXN0Lml0ZW0oKSIpOwog
CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE5vZGVJdGVyYXRvckN1c3RvbS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhOb2RlSXRlcmF0
b3JDdXN0b20uY3BwCShyZXZpc2lvbiA1MjM0MSkKKysrIFdlYkNvcmUvYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4Tm9kZUl0ZXJhdG9yQ3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjksOCArMjks
OSBAQAogICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJWOE5vZGVJdGVyYXRv
ci5oIgorCiAjaW5jbHVkZSAiTm9kZUl0ZXJhdG9yLmgiCi0KICNpbmNsdWRlICJTY3JpcHRTdGF0
ZS5oIgogCiAjaW5jbHVkZSAiVjhCaW5kaW5nLmgiCkBAIC01Niw3ICs1Nyw3IEBACiAgICAgcmV0
dXJuIFY4RE9NV3JhcHBlcjo6Y29udmVydE5vZGVUb1Y4T2JqZWN0KG9iamVjdCk7CiB9CiAKLUNB
TExCQUNLX0ZVTkNfREVDTChOb2RlSXRlcmF0b3JOZXh0Tm9kZSkKK3Y4OjpIYW5kbGU8djg6OlZh
bHVlPiBWOE5vZGVJdGVyYXRvcjo6bmV4dE5vZGVDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRz
JiBhcmdzKQogewogICAgIElOQ19TVEFUUygiRE9NLk5vZGVJdGVyYXRvci5uZXh0Tm9kZSgpIik7
CiAgICAgTm9kZUl0ZXJhdG9yKiBub2RlSXRlcmF0b3IgPSBWOERPTVdyYXBwZXI6OmNvbnZlcnRU
b05hdGl2ZU9iamVjdDxOb2RlSXRlcmF0b3I+KFY4Q2xhc3NJbmRleDo6Tk9ERUlURVJBVE9SLCBh
cmdzLkhvbGRlcigpKTsKQEAgLTY3LDcgKzY4LDcgQEAKICAgICByZXR1cm4gdG9WOChyZXN1bHQu
cmVsZWFzZSgpLCBlYywgJnN0YXRlKTsKIH0KIAotQ0FMTEJBQ0tfRlVOQ19ERUNMKE5vZGVJdGVy
YXRvclByZXZpb3VzTm9kZSkKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOE5vZGVJdGVyYXRvcjo6
cHJldmlvdXNOb2RlQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBJ
TkNfU1RBVFMoIkRPTS5Ob2RlSXRlcmF0b3IucHJldmlvdXNOb2RlKCkiKTsKICAgICBOb2RlSXRl
cmF0b3IqIG5vZGVJdGVyYXRvciA9IFY4RE9NV3JhcHBlcjo6Y29udmVydFRvTmF0aXZlT2JqZWN0
PE5vZGVJdGVyYXRvcj4oVjhDbGFzc0luZGV4OjpOT0RFSVRFUkFUT1IsIGFyZ3MuSG9sZGVyKCkp
OwpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhTVkdMZW5ndGhDdXN0b20uY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4U1ZHTGVuZ3RoQ3Vz
dG9tLmNwcAkocmV2aXNpb24gNTIzNDEpCisrKyBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9W
OFNWR0xlbmd0aEN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDkgKzMxLDkgQEAKICNp
bmNsdWRlIDxjb25maWcuaD4KIAogI2lmIEVOQUJMRShTVkcpCisjaW5jbHVkZSAiVjhTVkdMZW5n
dGguaCIKIAogI2luY2x1ZGUgIlNWR0xlbmd0aC5oIgotCiAjaW5jbHVkZSAiVjhCaW5kaW5nLmgi
CiAjaW5jbHVkZSAiVjhDdXN0b21CaW5kaW5nLmgiCiAjaW5jbHVkZSAiVjhTVkdQT0RUeXBlV3Jh
cHBlci5oIgpAQCAtNDksNyArNDksNyBAQAogICAgIHJldHVybiB2ODo6TnVtYmVyOjpOZXcoaW1w
LnZhbHVlKFY4UHJveHk6OnN2Z0NvbnRleHQod3JhcHBlcikpKTsKIH0KIAotQ0FMTEJBQ0tfRlVO
Q19ERUNMKFNWR0xlbmd0aENvbnZlcnRUb1NwZWNpZmllZFVuaXRzKQordjg6OkhhbmRsZTx2ODo6
VmFsdWU+IFY4U1ZHTGVuZ3RoOjpjb252ZXJ0VG9TcGVjaWZpZWRVbml0c0NhbGxiYWNrKGNvbnN0
IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgSU5DX1NUQVRTKCJET00uU1ZHTGVuZ3RoLmNv
bnZlcnRUb1NwZWNpZmllZFVuaXRzIik7CiAgICAgVjhTVkdQT0RUeXBlV3JhcHBlcjxTVkdMZW5n
dGg+KiB3cmFwcGVyID0gVjhET01XcmFwcGVyOjpjb252ZXJ0VG9OYXRpdmVPYmplY3Q8VjhTVkdQ
T0RUeXBlV3JhcHBlcjxTVkdMZW5ndGg+ID4oVjhDbGFzc0luZGV4OjpTVkdMRU5HVEgsIGFyZ3Mu
SG9sZGVyKCkpOwpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MRG9jdW1l
bnRDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4
SFRNTERvY3VtZW50Q3VzdG9tLmNwcAkocmV2aXNpb24gNTIzNDEpCisrKyBXZWJDb3JlL2JpbmRp
bmdzL3Y4L2N1c3RvbS9WOEhUTUxEb2N1bWVudEN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTI5LDEwICsyOSwxMSBAQAogICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJI
VE1MRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJWOEhUTUxEb2N1bWVudC5oIgogCiAjaW5jbHVkZSAi
RnJhbWUuaCIKICNpbmNsdWRlICJIVE1MQWxsQ29sbGVjdGlvbi5oIgorI2luY2x1ZGUgIkhUTUxE
b2N1bWVudC5oIgogI2luY2x1ZGUgIkhUTUxDb2xsZWN0aW9uLmgiCiAjaW5jbHVkZSAiSFRNTElG
cmFtZUVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKQEAgLTExNSw3ICsxMTYsNyBA
QAogICAgIHJldHVybiBzdHI7CiB9CiAKLUNBTExCQUNLX0ZVTkNfREVDTChIVE1MRG9jdW1lbnRX
cml0ZSkKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEhUTUxEb2N1bWVudDo6d3JpdGVDYWxsYmFj
ayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAgIElOQ19TVEFUUygiRE9NLkhUTUxE
b2N1bWVudC53cml0ZSgpIik7CiAgICAgSFRNTERvY3VtZW50KiBodG1sRG9jdW1lbnQgPSBWOERP
TVdyYXBwZXI6OmNvbnZlcnRET01XcmFwcGVyVG9Ob2RlPEhUTUxEb2N1bWVudD4oYXJncy5Ib2xk
ZXIoKSk7CkBAIC0xMjQsNyArMTI1LDcgQEAKICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwog
fQogCi1DQUxMQkFDS19GVU5DX0RFQ0woSFRNTERvY3VtZW50V3JpdGVsbikKK3Y4OjpIYW5kbGU8
djg6OlZhbHVlPiBWOEhUTUxEb2N1bWVudDo6d3JpdGVsbkNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1
bWVudHMmIGFyZ3MpCiB7CiAgICAgSU5DX1NUQVRTKCJET00uSFRNTERvY3VtZW50LndyaXRlbG4o
KSIpOwogICAgIEhUTUxEb2N1bWVudCogaHRtbERvY3VtZW50ID0gVjhET01XcmFwcGVyOjpjb252
ZXJ0RE9NV3JhcHBlclRvTm9kZTxIVE1MRG9jdW1lbnQ+KGFyZ3MuSG9sZGVyKCkpOwpAQCAtMTMz
LDcgKzEzNCw3IEBACiAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKIH0KIAotQ0FMTEJBQ0tf
RlVOQ19ERUNMKEhUTUxEb2N1bWVudE9wZW4pCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhIVE1M
RG9jdW1lbnQ6Om9wZW5DYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAg
IElOQ19TVEFUUygiRE9NLkhUTUxEb2N1bWVudC5vcGVuKCkiKTsKICAgICBIVE1MRG9jdW1lbnQq
IGh0bWxEb2N1bWVudCA9IFY4RE9NV3JhcHBlcjo6Y29udmVydERPTVdyYXBwZXJUb05vZGU8SFRN
TERvY3VtZW50PihhcmdzLkhvbGRlcigpKTsKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQ3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREN1c3Rv
bS5jcHAJKHJldmlzaW9uIDUyMzQxKQorKysgV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhD
YW52YXNSZW5kZXJpbmdDb250ZXh0MkRDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw5
ICsyOSwxMCBAQAogICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJDYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkQuaCIKKyNpbmNsdWRlICJWOENhbnZhc1JlbmRlcmluZ0NvbnRleHQy
RC5oIgogCiAjaW5jbHVkZSAiQ2FudmFzR3JhZGllbnQuaCIKKyNpbmNsdWRlICJDYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkQuaCIKICNpbmNsdWRlICJDYW52YXNQYXR0ZXJuLmgiCiAjaW5jbHVkZSAi
Q2FudmFzU3R5bGUuaCIKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCkBAIC05OSw3ICsxMDAs
NyBAQAogCiAvLyBUT0RPOiBTZXRTdHJva2VDb2xvciBhbmQgU2V0RmlsbENvbG9yIGFyZSBzaW1p
bGFyIGV4Y2VwdCBmdW5jdGlvbiBuYW1lcywKIC8vIGNvbnNvbGlkYXRlIHRoZW0gaW50byBvbmUu
Ci1DQUxMQkFDS19GVU5DX0RFQ0woQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEU2V0U3Ryb2tlQ29s
b3IpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNl
dFN0cm9rZUNvbG9yQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBJ
TkNfU1RBVFMoIkRPTS5DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuc2V0U3Ryb2tlQ29sb3IoKSIp
OwogICAgIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCogY29udGV4dCA9IFY4RE9NV3JhcHBlcjo6
Y29udmVydFRvTmF0aXZlT2JqZWN0PENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRD4oVjhDbGFzc0lu
ZGV4OjpDQU5WQVNSRU5ERVJJTkdDT05URVhUMkQsIGFyZ3MuSG9sZGVyKCkpOwpAQCAtMTI5LDcg
KzEzMCw3IEBACiAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKIH0KIAotQ0FMTEJBQ0tfRlVO
Q19ERUNMKENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRFNldEZpbGxDb2xvcikKK3Y4OjpIYW5kbGU8
djg6OlZhbHVlPiBWOENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c2V0RmlsbENvbG9yQ2FsbGJh
Y2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBJTkNfU1RBVFMoIkRPTS5DYW52
YXNSZW5kZXJpbmdDb250ZXh0MkQuc2V0RmlsbENvbG9yKCkiKTsKICAgICBDYW52YXNSZW5kZXJp
bmdDb250ZXh0MkQqIGNvbnRleHQgPSBWOERPTVdyYXBwZXI6OmNvbnZlcnRUb05hdGl2ZU9iamVj
dDxDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ+KFY4Q2xhc3NJbmRleDo6Q0FOVkFTUkVOREVSSU5H
Q09OVEVYVDJELCBhcmdzLkhvbGRlcigpKTsKQEAgLTE1OSw3ICsxNjAsNyBAQAogICAgIHJldHVy
biB2ODo6VW5kZWZpbmVkKCk7CiB9CiAKLUNBTExCQUNLX0ZVTkNfREVDTChDYW52YXNSZW5kZXJp
bmdDb250ZXh0MkRTdHJva2VSZWN0KQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4Q2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJEOjpzdHJva2VSZWN0Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYg
YXJncykKIHsKICAgICBJTkNfU1RBVFMoIkRPTS5DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuc3Ry
b2tlUmVjdCgpIik7CiAgICAgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEKiBjb250ZXh0ID0gVjhE
T01XcmFwcGVyOjpjb252ZXJ0VG9OYXRpdmVPYmplY3Q8Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJE
PihWOENsYXNzSW5kZXg6OkNBTlZBU1JFTkRFUklOR0NPTlRFWFQyRCwgYXJncy5Ib2xkZXIoKSk7
CkBAIC0xNzQsNyArMTc1LDcgQEAKICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwogfQogCi1D
QUxMQkFDS19GVU5DX0RFQ0woQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEU2V0U2hhZG93KQordjg6
OkhhbmRsZTx2ODo6VmFsdWU+IFY4Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzZXRTaGFkb3dD
YWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAgIElOQ19TVEFUUygiRE9N
LkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5zZXRTaGFkb3coKSIpOwogICAgIENhbnZhc1JlbmRl
cmluZ0NvbnRleHQyRCogY29udGV4dCA9IFY4RE9NV3JhcHBlcjo6Y29udmVydFRvTmF0aXZlT2Jq
ZWN0PENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRD4oVjhDbGFzc0luZGV4OjpDQU5WQVNSRU5ERVJJ
TkdDT05URVhUMkQsIGFyZ3MuSG9sZGVyKCkpOwpAQCAtMjA5LDcgKzIxMCw3IEBACiAgICAgcmV0
dXJuIHY4OjpVbmRlZmluZWQoKTsKIH0KIAotQ0FMTEJBQ0tfRlVOQ19ERUNMKENhbnZhc1JlbmRl
cmluZ0NvbnRleHQyRERyYXdJbWFnZSkKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOENhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyRDo6ZHJhd0ltYWdlQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYg
YXJncykKIHsKICAgICBJTkNfU1RBVFMoIkRPTS5DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuZHJh
d0ltYWdlKCkiKTsKICAgICBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQqIGNvbnRleHQgPSBWOERP
TVdyYXBwZXI6OmNvbnZlcnRUb05hdGl2ZU9iamVjdDxDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ+
KFY4Q2xhc3NJbmRleDo6Q0FOVkFTUkVOREVSSU5HQ09OVEVYVDJELCBhcmdzLkhvbGRlcigpKTsK
QEAgLTMxNCw3ICszMTUsOCBAQAogICAgIHJldHVybiBub3RIYW5kbGVkQnlJbnRlcmNlcHRvcigp
OwogfQogCi1DQUxMQkFDS19GVU5DX0RFQ0woQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJERHJhd0lt
YWdlRnJvbVJlY3QpCisKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOENhbnZhc1JlbmRlcmluZ0Nv
bnRleHQyRDo6ZHJhd0ltYWdlRnJvbVJlY3RDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBh
cmdzKQogewogICAgIElOQ19TVEFUUygiRE9NLkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5kcmF3
SW1hZ2VGcm9tUmVjdCgpIik7CiAgICAgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEKiBjb250ZXh0
ID0gVjhET01XcmFwcGVyOjpjb252ZXJ0VG9OYXRpdmVPYmplY3Q8Q2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJEPihWOENsYXNzSW5kZXg6OkNBTlZBU1JFTkRFUklOR0NPTlRFWFQyRCwgYXJncy5Ib2xk
ZXIoKSk7CkBAIC0zMzAsNyArMzMyLDcgQEAKICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwog
fQogCi1DQUxMQkFDS19GVU5DX0RFQ0woQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQ3JlYXRlUGF0
dGVybikKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6
Y3JlYXRlUGF0dGVybkNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAg
SU5DX1NUQVRTKCJET00uQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNyZWF0ZVBhdHRlcm4oKSIp
OwogICAgIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCogY29udGV4dCA9IFY4RE9NV3JhcHBlcjo6
Y29udmVydFRvTmF0aXZlT2JqZWN0PENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRD4oVjhDbGFzc0lu
ZGV4OjpDQU5WQVNSRU5ERVJJTkdDT05URVhUMkQsIGFyZ3MuSG9sZGVyKCkpOwpAQCAtMzYzLDcg
KzM2NSw3IEBACiAgICAgcmV0dXJuIG5vdEhhbmRsZWRCeUludGVyY2VwdG9yKCk7CiB9CiAKLUNB
TExCQUNLX0ZVTkNfREVDTChDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRGaWxsVGV4dCkKK3Y4OjpI
YW5kbGU8djg6OlZhbHVlPiBWOENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6ZmlsbFRleHRDYWxs
YmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAgIElOQ19TVEFUUygiRE9NLkNh
bnZhc1JlbmRlcmluZ0NvbnRleHQyRC5maWxsVGV4dCgpIik7CiAKQEAgLTM5MCw3ICszOTIsNyBA
QAogICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CiB9CiAKLUNBTExCQUNLX0ZVTkNfREVDTChD
YW52YXNSZW5kZXJpbmdDb250ZXh0MkRTdHJva2VUZXh0KQordjg6OkhhbmRsZTx2ODo6VmFsdWU+
IFY4Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzdHJva2VUZXh0Q2FsbGJhY2soY29uc3Qgdjg6
OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBJTkNfU1RBVFMoIkRPTS5DYW52YXNSZW5kZXJpbmdD
b250ZXh0MkQuc3Ryb2tlVGV4dCgpIik7CiAgICAgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEKiBj
b250ZXh0ID0gVjhET01XcmFwcGVyOjpjb252ZXJ0VG9OYXRpdmVPYmplY3Q8Q2FudmFzUmVuZGVy
aW5nQ29udGV4dDJEPihWOENsYXNzSW5kZXg6OkNBTlZBU1JFTkRFUklOR0NPTlRFWFQyRCwgYXJn
cy5Ib2xkZXIoKSk7CkBAIC00MTYsNyArNDE4LDcgQEAKICAgICByZXR1cm4gdjg6OlVuZGVmaW5l
ZCgpOwogfQogCi1DQUxMQkFDS19GVU5DX0RFQ0woQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEUHV0
SW1hZ2VEYXRhKQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4Q2FudmFzUmVuZGVyaW5nQ29udGV4
dDJEOjpwdXRJbWFnZURhdGFDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewog
ICAgIElOQ19TVEFUUygiRE9NLkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5wdXRJbWFnZURhdGEo
KSIpOwogCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFhNTEh0dHBSZXF1ZXN0
Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFhN
TEh0dHBSZXF1ZXN0Q3VzdG9tLmNwcAkocmV2aXNpb24gNTIzNDEpCisrKyBXZWJDb3JlL2JpbmRp
bmdzL3Y4L2N1c3RvbS9WOFhNTEh0dHBSZXF1ZXN0Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjksNyArMjksNyBAQAogICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJY
TUxIdHRwUmVxdWVzdC5oIgorI2luY2x1ZGUgIlY4WE1MSHR0cFJlcXVlc3QuaCIKIAogI2luY2x1
ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiVjhCaW5kaW5nLmgiCkBAIC00MSw2ICs0MSw3IEBACiAj
aW5jbHVkZSAiVjhVdGlsaXRpZXMuaCIKICNpbmNsdWRlICJXb3JrZXJDb250ZXh0LmgiCiAjaW5j
bHVkZSAiV29ya2VyQ29udGV4dEV4ZWN1dGlvblByb3h5LmgiCisjaW5jbHVkZSAiWE1MSHR0cFJl
cXVlc3QuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC01MSw3ICs1Miw3IEBACiAgICAg
cmV0dXJuIHhtbEh0dHBSZXF1ZXN0LT5yZXNwb25zZVRleHQoKS52OFN0cmluZ09yTnVsbCgpOwog
fQogCi1DQUxMQkFDS19GVU5DX0RFQ0woWE1MSHR0cFJlcXVlc3RBZGRFdmVudExpc3RlbmVyKQor
djg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4WE1MSHR0cFJlcXVlc3Q6OmFkZEV2ZW50TGlzdGVuZXJD
YWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAgIElOQ19TVEFUUygiRE9N
LlhNTEh0dHBSZXF1ZXN0LmFkZEV2ZW50TGlzdGVuZXIoKSIpOwogICAgIFhNTEh0dHBSZXF1ZXN0
KiB4bWxIdHRwUmVxdWVzdCA9IFY4RE9NV3JhcHBlcjo6Y29udmVydFRvTmF0aXZlT2JqZWN0PFhN
TEh0dHBSZXF1ZXN0PihWOENsYXNzSW5kZXg6OlhNTEhUVFBSRVFVRVNULCBhcmdzLkhvbGRlcigp
KTsKQEAgLTY3LDcgKzY4LDcgQEAKICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwogfQogCi1D
QUxMQkFDS19GVU5DX0RFQ0woWE1MSHR0cFJlcXVlc3RSZW1vdmVFdmVudExpc3RlbmVyKQordjg6
OkhhbmRsZTx2ODo6VmFsdWU+IFY4WE1MSHR0cFJlcXVlc3Q6OnJlbW92ZUV2ZW50TGlzdGVuZXJD
YWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAgIElOQ19TVEFUUygiRE9N
LlhNTEh0dHBSZXF1ZXN0LnJlbW92ZUV2ZW50TGlzdGVuZXIoKSIpOwogICAgIFhNTEh0dHBSZXF1
ZXN0KiB4bWxIdHRwUmVxdWVzdCA9IFY4RE9NV3JhcHBlcjo6Y29udmVydFRvTmF0aXZlT2JqZWN0
PFhNTEh0dHBSZXF1ZXN0PihWOENsYXNzSW5kZXg6OlhNTEhUVFBSRVFVRVNULCBhcmdzLkhvbGRl
cigpKTsKQEAgLTg0LDcgKzg1LDcgQEAKICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwogfQog
Ci1DQUxMQkFDS19GVU5DX0RFQ0woWE1MSHR0cFJlcXVlc3RPcGVuKQordjg6OkhhbmRsZTx2ODo6
VmFsdWU+IFY4WE1MSHR0cFJlcXVlc3Q6Om9wZW5DYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRz
JiBhcmdzKQogewogICAgIElOQ19TVEFUUygiRE9NLlhNTEh0dHBSZXF1ZXN0Lm9wZW4oKSIpOwog
ICAgIC8vIEZvdXIgY2FzZXM6CkBAIC0xMzMsNyArMTM0LDcgQEAKICAgICByZXR1cm4gVjhEb2N1
bWVudDo6SGFzSW5zdGFuY2UodmFsdWUpIHx8IFY4SFRNTERvY3VtZW50OjpIYXNJbnN0YW5jZSh2
YWx1ZSk7CiB9CiAKLUNBTExCQUNLX0ZVTkNfREVDTChYTUxIdHRwUmVxdWVzdFNlbmQpCit2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gVjhYTUxIdHRwUmVxdWVzdDo6c2VuZENhbGxiYWNrKGNvbnN0IHY4
OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgSU5DX1NUQVRTKCJET00uWE1MSHR0cFJlcXVlc3Qu
c2VuZCgpIik7CiAgICAgWE1MSHR0cFJlcXVlc3QqIHhtbEh0dHBSZXF1ZXN0ID0gVjhET01XcmFw
cGVyOjpjb252ZXJ0VG9OYXRpdmVPYmplY3Q8WE1MSHR0cFJlcXVlc3Q+KFY4Q2xhc3NJbmRleDo6
WE1MSFRUUFJFUVVFU1QsIGFyZ3MuSG9sZGVyKCkpOwpAQCAtMTYzLDcgKzE2NCw4IEBACiAgICAg
cmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKIH0KIAotQ0FMTEJBQ0tfRlVOQ19ERUNMKFhNTEh0dHBS
ZXF1ZXN0U2V0UmVxdWVzdEhlYWRlcikgewordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4WE1MSHR0
cFJlcXVlc3Q6OnNldFJlcXVlc3RIZWFkZXJDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBh
cmdzKQorewogICAgIElOQ19TVEFUUygiRE9NLlhNTEh0dHBSZXF1ZXN0LnNldFJlcXVlc3RIZWFk
ZXIoKSIpOwogICAgIGlmIChhcmdzLkxlbmd0aCgpIDwgMikKICAgICAgICAgcmV0dXJuIHRocm93
RXJyb3IoIk5vdCBlbm91Z2ggYXJndW1lbnRzIiwgVjhQcm94eTo6U3ludGF4RXJyb3IpOwpAQCAt
MTc4LDcgKzE4MCw3IEBACiAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKIH0KIAotQ0FMTEJB
Q0tfRlVOQ19ERUNMKFhNTEh0dHBSZXF1ZXN0R2V0UmVzcG9uc2VIZWFkZXIpCit2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gVjhYTUxIdHRwUmVxdWVzdDo6Z2V0UmVzcG9uc2VIZWFkZXJDYWxsYmFjayhj
b25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAgIElOQ19TVEFUUygiRE9NLlhNTEh0dHBS
ZXF1ZXN0LmdldFJlc3BvbnNlSGVhZGVyKCkiKTsKICAgICBpZiAoYXJncy5MZW5ndGgoKSA8IDEp
CkBAIC0xOTMsNyArMTk1LDcgQEAKICAgICByZXR1cm4gdjhTdHJpbmdPck51bGwocmVzdWx0KTsK
IH0KIAotQ0FMTEJBQ0tfRlVOQ19ERUNMKFhNTEh0dHBSZXF1ZXN0T3ZlcnJpZGVNaW1lVHlwZSkK
K3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFhNTEh0dHBSZXF1ZXN0OjpvdmVycmlkZU1pbWVUeXBl
Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBJTkNfU1RBVFMoIkRP
TS5YTUxIdHRwUmVxdWVzdC5vdmVycmlkZU1pbWVUeXBlKCkiKTsKICAgICBpZiAoYXJncy5MZW5n
dGgoKSA8IDEpCkBAIC0yMDUsNyArMjA3LDcgQEAKICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgp
OwogfQogCi1DQUxMQkFDS19GVU5DX0RFQ0woWE1MSHR0cFJlcXVlc3REaXNwYXRjaEV2ZW50KQor
djg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4WE1MSHR0cFJlcXVlc3Q6OmRpc3BhdGNoRXZlbnRDYWxs
YmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAgIElOQ19TVEFUUygiRE9NLlhN
TEh0dHBSZXF1ZXN0LmRpc3BhdGNoRXZlbnQoKSIpOwogICAgIHJldHVybiB2ODo6VW5kZWZpbmVk
KCk7CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFdlYkdMVW5zaWduZWRTaG9y
dEFycmF5Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOFdlYkdMVW5zaWduZWRTaG9ydEFycmF5Q3VzdG9tLmNwcAkocmV2aXNpb24gNTIzNDEpCisr
KyBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFdlYkdMVW5zaWduZWRTaG9ydEFycmF5Q3Vz
dG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDQsNyArNDQsNyBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLUNBTExCQUNLX0ZVTkNfREVDTChXZWJHTFVuc2lnbmVkU2hvcnRBcnJheUNvbnN0
cnVjdG9yKQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4Q3VzdG9tOjp2OFdlYkdMVW5zaWduZWRT
aG9ydEFycmF5Q29uc3RydWN0b3JDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQog
ewogICAgIElOQ19TVEFUUygiRE9NLldlYkdMVW5zaWduZWRTaG9ydEFycmF5LkNvbnRydWN0b3Ii
KTsKIApAQCAtNzksMTMgKzc5LDEzIEBACiAgICAgcmV0dXJuIHZhbHVlOwogfQogCi1DQUxMQkFD
S19GVU5DX0RFQ0woV2ViR0xVbnNpZ25lZFNob3J0QXJyYXlHZXQpCit2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gVjhXZWJHTFVuc2lnbmVkU2hvcnRBcnJheTo6Z2V0Q2FsbGJhY2soY29uc3Qgdjg6OkFy
Z3VtZW50cyYgYXJncykKIHsKICAgICBJTkNfU1RBVFMoIkRPTS5XZWJHTFVuc2lnbmVkU2hvcnRB
cnJheS5nZXQoKSIpOwogICAgIHJldHVybiBnZXRXZWJHTEFycmF5RWxlbWVudDxXZWJHTFVuc2ln
bmVkU2hvcnRBcnJheSwgdW5zaWduZWQgc2hvcnQ+KGFyZ3MsIFY4Q2xhc3NJbmRleDo6V0VCR0xV
TlNJR05FRFNIT1JUQVJSQVkpOwogfQogCi1DQUxMQkFDS19GVU5DX0RFQ0woV2ViR0xVbnNpZ25l
ZFNob3J0QXJyYXlTZXQpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhXZWJHTFVuc2lnbmVkU2hv
cnRBcnJheTo6c2V0Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBJ
TkNfU1RBVFMoIkRPTS5XZWJHTFVuc2lnbmVkU2hvcnRBcnJheS5zZXQoKSIpOwogICAgIHJldHVy
biBzZXRXZWJHTEFycmF5PFdlYkdMVW5zaWduZWRTaG9ydEFycmF5LCBWOFdlYkdMVW5zaWduZWRT
aG9ydEFycmF5PihhcmdzLCBWOENsYXNzSW5kZXg6OldFQkdMVU5TSUdORURTSE9SVEFSUkFZKTsK
SW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q3VzdG9tQmluZGluZy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q3VzdG9tQmluZGluZy5oCShy
ZXZpc2lvbiA1MjM0MSkKKysrIFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q3VzdG9tQmlu
ZGluZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw4ICszNiw2IEBACiAKIHN0cnVjdCBOUE9iamVj
dDsKIAotI2RlZmluZSBDQUxMQkFDS19GVU5DX0RFQ0woTkFNRSkgdjg6OkhhbmRsZTx2ODo6VmFs
dWU+IFY4Q3VzdG9tOjp2OCMjTkFNRSMjQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJn
cykKLQogI2RlZmluZSBBQ0NFU1NPUl9HRVRURVIoTkFNRSkgXAogICAgIHY4OjpIYW5kbGU8djg6
OlZhbHVlPiBWOEN1c3RvbTo6djgjI05BTUUjI0FjY2Vzc29yR2V0dGVyKCBcCiAgICAgICAgIHY4
OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQpA
QCAtMjc0LDggKzI3Miw2IEBACiAKICAgICAgICAgREVDTEFSRV9QUk9QRVJUWV9BQ0NFU1NPUihE
T01XaW5kb3dFdmVudEhhbmRsZXIpOwogCi0gICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soSFRNTENh
bnZhc0VsZW1lbnRHZXRDb250ZXh0KTsKLQogICAgICAgICBERUNMQVJFX1BST1BFUlRZX0FDQ0VT
U09SX1NFVFRFUihIVE1MRnJhbWVFbGVtZW50U3JjKTsKICAgICAgICAgREVDTEFSRV9QUk9QRVJU
WV9BQ0NFU1NPUl9TRVRURVIoSFRNTEZyYW1lRWxlbWVudExvY2F0aW9uKTsKICAgICAgICAgREVD
TEFSRV9QUk9QRVJUWV9BQ0NFU1NPUl9TRVRURVIoSFRNTElGcmFtZUVsZW1lbnRTcmMpOwpAQCAt
Mjg0LDcgKzI4MCw2IEBACiAKICAgICAgICAgREVDTEFSRV9QUk9QRVJUWV9BQ0NFU1NPUihIVE1M
T3B0aW9uc0NvbGxlY3Rpb25MZW5ndGgpOwogCi0gICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soSFRN
TElucHV0RWxlbWVudFNldFNlbGVjdGlvblJhbmdlKTsKIAogICAgICAgICBERUNMQVJFX1BST1BF
UlRZX0FDQ0VTU09SKEhUTUxJbnB1dEVsZW1lbnRTZWxlY3Rpb25TdGFydCk7CiAgICAgICAgIERF
Q0xBUkVfUFJPUEVSVFlfQUNDRVNTT1IoSFRNTElucHV0RWxlbWVudFNlbGVjdGlvbkVuZCk7CkBA
IC0yOTUsNDMgKzI5MCwxMCBAQAogICAgICAgICBERUNMQVJFX05BTUVEX0FDQ0VTU19DSEVDSyhI
aXN0b3J5KTsKICAgICAgICAgREVDTEFSRV9JTkRFWEVEX0FDQ0VTU19DSEVDSyhMb2NhdGlvbik7
CiAKLSAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhIVE1MQ29sbGVjdGlvbkl0ZW0pOwotICAgICAg
ICBERUNMQVJFX0NBTExCQUNLKEhUTUxDb2xsZWN0aW9uTmFtZWRJdGVtKTsKLSAgICAgICAgREVD
TEFSRV9DQUxMQkFDSyhIVE1MQ29sbGVjdGlvbkNhbGxBc0Z1bmN0aW9uKTsKLQotICAgICAgICBE
RUNMQVJFX0NBTExCQUNLKEhUTUxBbGxDb2xsZWN0aW9uSXRlbSk7Ci0gICAgICAgIERFQ0xBUkVf
Q0FMTEJBQ0soSFRNTEFsbENvbGxlY3Rpb25OYW1lZEl0ZW0pOwotICAgICAgICBERUNMQVJFX0NB
TExCQUNLKEhUTUxBbGxDb2xsZWN0aW9uQ2FsbEFzRnVuY3Rpb24pOwotCi0gICAgICAgIERFQ0xB
UkVfQ0FMTEJBQ0soSFRNTFNlbGVjdEVsZW1lbnRSZW1vdmUpOwotCi0gICAgICAgIERFQ0xBUkVf
Q0FMTEJBQ0soSFRNTE9wdGlvbnNDb2xsZWN0aW9uUmVtb3ZlKTsKLSAgICAgICAgREVDTEFSRV9D
QUxMQkFDSyhIVE1MT3B0aW9uc0NvbGxlY3Rpb25BZGQpOwotCi0gICAgICAgIERFQ0xBUkVfQ0FM
TEJBQ0soSFRNTERvY3VtZW50V3JpdGUpOwotICAgICAgICBERUNMQVJFX0NBTExCQUNLKEhUTUxE
b2N1bWVudFdyaXRlbG4pOwotICAgICAgICBERUNMQVJFX0NBTExCQUNLKEhUTUxEb2N1bWVudE9w
ZW4pOwogICAgICAgICBERUNMQVJFX1BST1BFUlRZX0FDQ0VTU09SKEhUTUxEb2N1bWVudEFsbCk7
CiAgICAgICAgIERFQ0xBUkVfTkFNRURfUFJPUEVSVFlfR0VUVEVSKEhUTUxEb2N1bWVudCk7CiAg
ICAgICAgIERFQ0xBUkVfTkFNRURfUFJPUEVSVFlfREVMRVRFUihIVE1MRG9jdW1lbnQpOwogCi0g
ICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soRG9jdW1lbnRFdmFsdWF0ZSk7Ci0gICAgICAgIERFQ0xB
UkVfQ0FMTEJBQ0soRG9jdW1lbnRHZXRDU1NDYW52YXNDb250ZXh0KTsKLQotICAgICAgICBERUNM
QVJFX0NBTExCQUNLKERPTVdpbmRvd0FkZEV2ZW50TGlzdGVuZXIpOwotICAgICAgICBERUNMQVJF
X0NBTExCQUNLKERPTVdpbmRvd1JlbW92ZUV2ZW50TGlzdGVuZXIpOwotICAgICAgICBERUNMQVJF
X0NBTExCQUNLKERPTVdpbmRvd1Bvc3RNZXNzYWdlKTsKLSAgICAgICAgREVDTEFSRV9DQUxMQkFD
SyhET01XaW5kb3dTZXRUaW1lb3V0KTsKLSAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhET01XaW5k
b3dTZXRJbnRlcnZhbCk7Ci0gICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soRE9NV2luZG93QXRvYik7
Ci0gICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soRE9NV2luZG93QnRvYSk7Ci0gICAgICAgIERFQ0xB
UkVfQ0FMTEJBQ0soRE9NV2luZG93Tk9QKTsKLSAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhET01X
aW5kb3dUb1N0cmluZyk7Ci0gICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soRE9NV2luZG93U2hvd01v
ZGFsRGlhbG9nKTsKLSAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhET01XaW5kb3dPcGVuKTsKLSAg
ICAgICAgREVDTEFSRV9DQUxMQkFDSyhET01XaW5kb3dDbGVhclRpbWVvdXQpOwotICAgICAgICBE
RUNMQVJFX0NBTExCQUNLKERPTVdpbmRvd0NsZWFySW50ZXJ2YWwpOwotCiAgICAgICAgIERFQ0xB
UkVfQ0FMTEJBQ0soRE9NUGFyc2VyQ29uc3RydWN0b3IpOwogICAgICAgICBERUNMQVJFX0NBTExC
QUNLKEhUTUxBdWRpb0VsZW1lbnRDb25zdHJ1Y3Rvcik7CiAgICAgICAgIERFQ0xBUkVfQ0FMTEJB
Q0soSFRNTEltYWdlRWxlbWVudENvbnN0cnVjdG9yKTsKQEAgLTM0NCw1NiArMzA2LDcgQEAKICAg
ICAgICAgREVDTEFSRV9DQUxMQkFDSyhYUGF0aEV2YWx1YXRvckNvbnN0cnVjdG9yKTsKICAgICAg
ICAgREVDTEFSRV9DQUxMQkFDSyhYU0xUUHJvY2Vzc29yQ29uc3RydWN0b3IpOwogCi0gICAgICAg
IERFQ0xBUkVfQ0FMTEJBQ0soWFNMVFByb2Nlc3NvckltcG9ydFN0eWxlc2hlZXQpOwotICAgICAg
ICBERUNMQVJFX0NBTExCQUNLKFhTTFRQcm9jZXNzb3JUcmFuc2Zvcm1Ub0ZyYWdtZW50KTsKLSAg
ICAgICAgREVDTEFSRV9DQUxMQkFDSyhYU0xUUHJvY2Vzc29yVHJhbnNmb3JtVG9Eb2N1bWVudCk7
Ci0gICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soWFNMVFByb2Nlc3NvclNldFBhcmFtZXRlcik7Ci0g
ICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soWFNMVFByb2Nlc3NvckdldFBhcmFtZXRlcik7Ci0gICAg
ICAgIERFQ0xBUkVfQ0FMTEJBQ0soWFNMVFByb2Nlc3NvclJlbW92ZVBhcmFtZXRlcik7Ci0KLSAg
ICAgICAgREVDTEFSRV9DQUxMQkFDSyhDU1NQcmltaXRpdmVWYWx1ZUdldFJHQkNvbG9yVmFsdWUp
OwotCi0gICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEU2V0
U3Ryb2tlQ29sb3IpOwotICAgICAgICBERUNMQVJFX0NBTExCQUNLKENhbnZhc1JlbmRlcmluZ0Nv
bnRleHQyRFNldEZpbGxDb2xvcik7Ci0gICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJEU3Ryb2tlUmVjdCk7Ci0gICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEU2V0U2hhZG93KTsKLSAgICAgICAgREVDTEFSRV9DQUxMQkFD
SyhDYW52YXNSZW5kZXJpbmdDb250ZXh0MkREcmF3SW1hZ2UpOwotICAgICAgICBERUNMQVJFX0NB
TExCQUNLKENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRERyYXdJbWFnZUZyb21SZWN0KTsKLSAgICAg
ICAgREVDTEFSRV9DQUxMQkFDSyhDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRDcmVhdGVQYXR0ZXJu
KTsKLSAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRGaWxs
VGV4dCk7Ci0gICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJE
U3Ryb2tlVGV4dCk7Ci0gICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJEUHV0SW1hZ2VEYXRhKTsKLQogI2lmIEVOQUJMRSgzRF9DQU5WQVMpCi0gICAgICAgIERF
Q0xBUkVfQ0FMTEJBQ0soV2ViR0xSZW5kZXJpbmdDb250ZXh0QnVmZmVyRGF0YSk7Ci0gICAgICAg
IERFQ0xBUkVfQ0FMTEJBQ0soV2ViR0xSZW5kZXJpbmdDb250ZXh0QnVmZmVyU3ViRGF0YSk7Ci0g
ICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soV2ViR0xSZW5kZXJpbmdDb250ZXh0R2V0QnVmZmVyUGFy
YW1ldGVyKTsKLSAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhXZWJHTFJlbmRlcmluZ0NvbnRleHRH
ZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIpOwotICAgICAgICBERUNMQVJFX0NBTExC
QUNLKFdlYkdMUmVuZGVyaW5nQ29udGV4dEdldFBhcmFtZXRlcik7Ci0gICAgICAgIERFQ0xBUkVf
Q0FMTEJBQ0soV2ViR0xSZW5kZXJpbmdDb250ZXh0R2V0UHJvZ3JhbVBhcmFtZXRlcik7Ci0gICAg
ICAgIERFQ0xBUkVfQ0FMTEJBQ0soV2ViR0xSZW5kZXJpbmdDb250ZXh0R2V0UmVuZGVyYnVmZmVy
UGFyYW1ldGVyKTsKLSAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhXZWJHTFJlbmRlcmluZ0NvbnRl
eHRHZXRTaGFkZXJQYXJhbWV0ZXIpOwotICAgICAgICBERUNMQVJFX0NBTExCQUNLKFdlYkdMUmVu
ZGVyaW5nQ29udGV4dEdldFRleFBhcmFtZXRlcik7Ci0gICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0so
V2ViR0xSZW5kZXJpbmdDb250ZXh0R2V0VW5pZm9ybSk7Ci0gICAgICAgIERFQ0xBUkVfQ0FMTEJB
Q0soV2ViR0xSZW5kZXJpbmdDb250ZXh0R2V0VmVydGV4QXR0cmliKTsKLSAgICAgICAgREVDTEFS
RV9DQUxMQkFDSyhXZWJHTFJlbmRlcmluZ0NvbnRleHRUZXhJbWFnZTJEKTsKLSAgICAgICAgREVD
TEFSRV9DQUxMQkFDSyhXZWJHTFJlbmRlcmluZ0NvbnRleHRUZXhTdWJJbWFnZTJEKTsKLSAgICAg
ICAgREVDTEFSRV9DQUxMQkFDSyhXZWJHTFJlbmRlcmluZ0NvbnRleHRVbmlmb3JtMWZ2KTsKLSAg
ICAgICAgREVDTEFSRV9DQUxMQkFDSyhXZWJHTFJlbmRlcmluZ0NvbnRleHRVbmlmb3JtMWl2KTsK
LSAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhXZWJHTFJlbmRlcmluZ0NvbnRleHRVbmlmb3JtMmZ2
KTsKLSAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhXZWJHTFJlbmRlcmluZ0NvbnRleHRVbmlmb3Jt
Mml2KTsKLSAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhXZWJHTFJlbmRlcmluZ0NvbnRleHRVbmlm
b3JtM2Z2KTsKLSAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhXZWJHTFJlbmRlcmluZ0NvbnRleHRV
bmlmb3JtM2l2KTsKLSAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhXZWJHTFJlbmRlcmluZ0NvbnRl
eHRVbmlmb3JtNGZ2KTsKLSAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhXZWJHTFJlbmRlcmluZ0Nv
bnRleHRVbmlmb3JtNGl2KTsKLSAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhXZWJHTFJlbmRlcmlu
Z0NvbnRleHRVbmlmb3JtTWF0cml4MmZ2KTsKLSAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhXZWJH
TFJlbmRlcmluZ0NvbnRleHRVbmlmb3JtTWF0cml4M2Z2KTsKLSAgICAgICAgREVDTEFSRV9DQUxM
QkFDSyhXZWJHTFJlbmRlcmluZ0NvbnRleHRVbmlmb3JtTWF0cml4NGZ2KTsKLSAgICAgICAgREVD
TEFSRV9DQUxMQkFDSyhXZWJHTFJlbmRlcmluZ0NvbnRleHRWZXJ0ZXhBdHRyaWIxZnYpOwotICAg
ICAgICBERUNMQVJFX0NBTExCQUNLKFdlYkdMUmVuZGVyaW5nQ29udGV4dFZlcnRleEF0dHJpYjJm
dik7Ci0gICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soV2ViR0xSZW5kZXJpbmdDb250ZXh0VmVydGV4
QXR0cmliM2Z2KTsKLSAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhXZWJHTFJlbmRlcmluZ0NvbnRl
eHRWZXJ0ZXhBdHRyaWI0ZnYpOwotCiAgICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soV2ViR0xBcnJh
eUJ1ZmZlckNvbnN0cnVjdG9yKTsKICAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhXZWJHTEJ5dGVB
cnJheUNvbnN0cnVjdG9yKTsKICAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhXZWJHTEZsb2F0QXJy
YXlDb25zdHJ1Y3Rvcik7CkBAIC00MDUsMjEgKzMxOCw3IEBACiAjZW5kaWYKIAogICAgICAgICBE
RUNMQVJFX1BST1BFUlRZX0FDQ0VTU09SX0dFVFRFUihDbGlwYm9hcmRUeXBlcyk7Ci0gICAgICAg
IERFQ0xBUkVfQ0FMTEJBQ0soQ2xpcGJvYXJkQ2xlYXJEYXRhKTsKLSAgICAgICAgREVDTEFSRV9D
QUxMQkFDSyhDbGlwYm9hcmRHZXREYXRhKTsKLSAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhDbGlw
Ym9hcmRTZXREYXRhKTsKLSAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhDbGlwYm9hcmRTZXREcmFn
SW1hZ2UpOwogCi0gICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soRWxlbWVudFF1ZXJ5U2VsZWN0b3Ip
OwotICAgICAgICBERUNMQVJFX0NBTExCQUNLKEVsZW1lbnRRdWVyeVNlbGVjdG9yQWxsKTsKLSAg
ICAgICAgREVDTEFSRV9DQUxMQkFDSyhFbGVtZW50U2V0QXR0cmlidXRlKTsKLSAgICAgICAgREVD
TEFSRV9DQUxMQkFDSyhFbGVtZW50U2V0QXR0cmlidXRlTm9kZSk7Ci0gICAgICAgIERFQ0xBUkVf
Q0FMTEJBQ0soRWxlbWVudFNldEF0dHJpYnV0ZU5TKTsKLSAgICAgICAgREVDTEFSRV9DQUxMQkFD
SyhFbGVtZW50U2V0QXR0cmlidXRlTm9kZU5TKTsKLQotICAgICAgICBERUNMQVJFX0NBTExCQUNL
KEhpc3RvcnlQdXNoU3RhdGUpOwotICAgICAgICBERUNMQVJFX0NBTExCQUNLKEhpc3RvcnlSZXBs
YWNlU3RhdGUpOwotCiAgICAgICAgIERFQ0xBUkVfUFJPUEVSVFlfQUNDRVNTT1JfU0VUVEVSKExv
Y2F0aW9uUHJvdG9jb2wpOwogICAgICAgICBERUNMQVJFX1BST1BFUlRZX0FDQ0VTU09SX1NFVFRF
UihMb2NhdGlvbkhvc3QpOwogICAgICAgICBERUNMQVJFX1BST1BFUlRZX0FDQ0VTU09SX1NFVFRF
UihMb2NhdGlvbkhvc3RuYW1lKTsKQEAgLTQzMSwxNyArMzMwLDYgQEAKICAgICAgICAgREVDTEFS
RV9QUk9QRVJUWV9BQ0NFU1NPUl9HRVRURVIoTG9jYXRpb25Bc3NpZ24pOwogICAgICAgICBERUNM
QVJFX1BST1BFUlRZX0FDQ0VTU09SX0dFVFRFUihMb2NhdGlvblJlcGxhY2UpOwogICAgICAgICBE
RUNMQVJFX1BST1BFUlRZX0FDQ0VTU09SX0dFVFRFUihMb2NhdGlvblJlbG9hZCk7Ci0gICAgICAg
IERFQ0xBUkVfQ0FMTEJBQ0soTG9jYXRpb25Bc3NpZ24pOwotICAgICAgICBERUNMQVJFX0NBTExC
QUNLKExvY2F0aW9uUmVwbGFjZSk7Ci0gICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soTG9jYXRpb25S
ZWxvYWQpOwotICAgICAgICBERUNMQVJFX0NBTExCQUNLKExvY2F0aW9uVG9TdHJpbmcpOwotICAg
ICAgICBERUNMQVJFX0NBTExCQUNLKExvY2F0aW9uVmFsdWVPZik7Ci0gICAgICAgIERFQ0xBUkVf
Q0FMTEJBQ0soTm9kZUFkZEV2ZW50TGlzdGVuZXIpOwotICAgICAgICBERUNMQVJFX0NBTExCQUNL
KE5vZGVSZW1vdmVFdmVudExpc3RlbmVyKTsKLSAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhOb2Rl
SW5zZXJ0QmVmb3JlKTsKLSAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhOb2RlUmVwbGFjZUNoaWxk
KTsKLSAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhOb2RlUmVtb3ZlQ2hpbGQpOwotICAgICAgICBE
RUNMQVJFX0NBTExCQUNLKE5vZGVBcHBlbmRDaGlsZCk7CiAKICAgICAgICAgLy8gV2UgYWN0dWFs
bHkgb25seSBuZWVkIHRoaXMgYmVjYXVzZSBXZWJLaXQgaGFzCiAgICAgICAgIC8vIG5hdmlnYXRv
ci5hcHBWZXJzaW9uIGFzIGN1c3RvbS4gT3VyIHZlcnNpb24ganVzdApAQCAtNDU1LDU5ICszNDMs
MTMgQEAKICAgICAgICAgREVDTEFSRV9QUk9QRVJUWV9BQ0NFU1NPUihYTUxIdHRwUmVxdWVzdE9u
cHJvZ3Jlc3MpOwogICAgICAgICBERUNMQVJFX1BST1BFUlRZX0FDQ0VTU09SKFhNTEh0dHBSZXF1
ZXN0T25yZWFkeXN0YXRlY2hhbmdlKTsKICAgICAgICAgREVDTEFSRV9QUk9QRVJUWV9BQ0NFU1NP
UihYTUxIdHRwUmVxdWVzdFJlc3BvbnNlVGV4dCk7Ci0gICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0so
WE1MSHR0cFJlcXVlc3RBZGRFdmVudExpc3RlbmVyKTsKLSAgICAgICAgREVDTEFSRV9DQUxMQkFD
SyhYTUxIdHRwUmVxdWVzdFJlbW92ZUV2ZW50TGlzdGVuZXIpOwotICAgICAgICBERUNMQVJFX0NB
TExCQUNLKFhNTEh0dHBSZXF1ZXN0T3Blbik7Ci0gICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soWE1M
SHR0cFJlcXVlc3RTZW5kKTsKLSAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhYTUxIdHRwUmVxdWVz
dFNldFJlcXVlc3RIZWFkZXIpOwotICAgICAgICBERUNMQVJFX0NBTExCQUNLKFhNTEh0dHBSZXF1
ZXN0R2V0UmVzcG9uc2VIZWFkZXIpOwotICAgICAgICBERUNMQVJFX0NBTExCQUNLKFhNTEh0dHBS
ZXF1ZXN0T3ZlcnJpZGVNaW1lVHlwZSk7Ci0gICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soWE1MSHR0
cFJlcXVlc3REaXNwYXRjaEV2ZW50KTsKIAogICAgICAgICBERUNMQVJFX1BST1BFUlRZX0FDQ0VT
U09SKFhNTEh0dHBSZXF1ZXN0VXBsb2FkT25hYm9ydCk7CiAgICAgICAgIERFQ0xBUkVfUFJPUEVS
VFlfQUNDRVNTT1IoWE1MSHR0cFJlcXVlc3RVcGxvYWRPbmVycm9yKTsKICAgICAgICAgREVDTEFS
RV9QUk9QRVJUWV9BQ0NFU1NPUihYTUxIdHRwUmVxdWVzdFVwbG9hZE9ubG9hZCk7CiAgICAgICAg
IERFQ0xBUkVfUFJPUEVSVFlfQUNDRVNTT1IoWE1MSHR0cFJlcXVlc3RVcGxvYWRPbmxvYWRzdGFy
dCk7CiAgICAgICAgIERFQ0xBUkVfUFJPUEVSVFlfQUNDRVNTT1IoWE1MSHR0cFJlcXVlc3RVcGxv
YWRPbnByb2dyZXNzKTsKLSAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhYTUxIdHRwUmVxdWVzdFVw
bG9hZEFkZEV2ZW50TGlzdGVuZXIpOwotICAgICAgICBERUNMQVJFX0NBTExCQUNLKFhNTEh0dHBS
ZXF1ZXN0VXBsb2FkUmVtb3ZlRXZlbnRMaXN0ZW5lcik7Ci0gICAgICAgIERFQ0xBUkVfQ0FMTEJB
Q0soWE1MSHR0cFJlcXVlc3RVcGxvYWREaXNwYXRjaEV2ZW50KTsKIAotICAgICAgICBERUNMQVJF
X0NBTExCQUNLKFRyZWVXYWxrZXJQYXJlbnROb2RlKTsKLSAgICAgICAgREVDTEFSRV9DQUxMQkFD
SyhUcmVlV2Fsa2VyRmlyc3RDaGlsZCk7Ci0gICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soVHJlZVdh
bGtlckxhc3RDaGlsZCk7Ci0gICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soVHJlZVdhbGtlck5leHRO
b2RlKTsKLSAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhUcmVlV2Fsa2VyUHJldmlvdXNOb2RlKTsK
LSAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhUcmVlV2Fsa2VyTmV4dFNpYmxpbmcpOwotICAgICAg
ICBERUNMQVJFX0NBTExCQUNLKFRyZWVXYWxrZXJQcmV2aW91c1NpYmxpbmcpOwotCi0gICAgICAg
IERFQ0xBUkVfQ0FMTEJBQ0soSW5qZWN0ZWRTY3JpcHRIb3N0SW5zcGVjdGVkV2luZG93KTsKLSAg
ICAgICAgREVDTEFSRV9DQUxMQkFDSyhJbmplY3RlZFNjcmlwdEhvc3ROb2RlRm9ySWQpOwotICAg
ICAgICBERUNMQVJFX0NBTExCQUNLKEluamVjdGVkU2NyaXB0SG9zdFdyYXBPYmplY3QpOwotICAg
ICAgICBERUNMQVJFX0NBTExCQUNLKEluamVjdGVkU2NyaXB0SG9zdFVud3JhcE9iamVjdCk7Ci0g
ICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soSW5qZWN0ZWRTY3JpcHRIb3N0UHVzaE5vZGVQYXRoVG9G
cm9udGVuZCk7Ci0gICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soSW5qZWN0ZWRTY3JpcHRIb3N0V3Jh
cENhbGxiYWNrKTsKLSNpZiBFTkFCTEUoREFUQUJBU0UpCi0gICAgICAgIERFQ0xBUkVfQ0FMTEJB
Q0soSW5qZWN0ZWRTY3JpcHRIb3N0U2VsZWN0RGF0YWJhc2UpOwotICAgICAgICBERUNMQVJFX0NB
TExCQUNLKEluamVjdGVkU2NyaXB0SG9zdERhdGFiYXNlRm9ySWQpOwotI2VuZGlmCi0jaWYgRU5B
QkxFKERPTV9TVE9SQUdFKQotICAgICAgICBERUNMQVJFX0NBTExCQUNLKEluamVjdGVkU2NyaXB0
SG9zdFNlbGVjdERPTVN0b3JhZ2UpOwotI2VuZGlmCi0KLSAgICAgICAgREVDTEFSRV9DQUxMQkFD
SyhJbnNwZWN0b3JGcm9udGVuZEhvc3RTZWFyY2gpOwotICAgICAgICBERUNMQVJFX0NBTExCQUNL
KEluc3BlY3RvckZyb250ZW5kSG9zdFNob3dDb250ZXh0TWVudSk7Ci0KLSAgICAgICAgREVDTEFS
RV9DQUxMQkFDSyhDb25zb2xlUHJvZmlsZSk7Ci0gICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soQ29u
c29sZVByb2ZpbGVFbmQpOwotCi0gICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soTm9kZUl0ZXJhdG9y
TmV4dE5vZGUpOwotICAgICAgICBERUNMQVJFX0NBTExCQUNLKE5vZGVJdGVyYXRvclByZXZpb3Vz
Tm9kZSk7Ci0KLSAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhOb2RlRmlsdGVyQWNjZXB0Tm9kZSk7
Ci0KLSAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhIVE1MRm9ybUVsZW1lbnRTdWJtaXQpOwotCiAg
ICAgICAgIERFQ0xBUkVfTkFNRURfUFJPUEVSVFlfR0VUVEVSKERPTVdpbmRvdyk7CiAgICAgICAg
IERFQ0xBUkVfSU5ERVhFRF9QUk9QRVJUWV9HRVRURVIoRE9NV2luZG93KTsKICAgICAgICAgREVD
TEFSRV9OQU1FRF9BQ0NFU1NfQ0hFQ0soRE9NV2luZG93KTsKQEAgLTUyNCw4ICszNjYsNiBAQAog
ICAgICAgICBERUNMQVJFX0lOREVYRURfUFJPUEVSVFlfR0VUVEVSKEhUTUxQbHVnSW5FbGVtZW50
KTsKICAgICAgICAgREVDTEFSRV9JTkRFWEVEX1BST1BFUlRZX1NFVFRFUihIVE1MUGx1Z0luRWxl
bWVudCk7CiAKLSAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhIVE1MUGx1Z0luRWxlbWVudCk7Ci0K
ICAgICAgICAgREVDTEFSRV9OQU1FRF9QUk9QRVJUWV9HRVRURVIoU3R5bGVTaGVldExpc3QpOwog
ICAgICAgICBERUNMQVJFX0lOREVYRURfUFJPUEVSVFlfR0VUVEVSKE5hbWVkTm9kZU1hcCk7CiAg
ICAgICAgIERFQ0xBUkVfSU5ERVhFRF9QUk9QRVJUWV9HRVRURVIoSFRNTEZvcm1FbGVtZW50KTsK
QEAgLTUzOCw1OCArMzc4LDMzIEBACiAgICAgICAgIERFQ0xBUkVfTkFNRURfUFJPUEVSVFlfR0VU
VEVSKEhUTUxDb2xsZWN0aW9uKTsKIAogI2lmIEVOQUJMRSgzRF9DQU5WQVMpCi0gICAgICAgIERF
Q0xBUkVfQ0FMTEJBQ0soV2ViR0xCeXRlQXJyYXlHZXQpOwotICAgICAgICBERUNMQVJFX0NBTExC
QUNLKFdlYkdMQnl0ZUFycmF5U2V0KTsKICAgICAgICAgREVDTEFSRV9JTkRFWEVEX1BST1BFUlRZ
X0dFVFRFUihXZWJHTEJ5dGVBcnJheSk7CiAgICAgICAgIERFQ0xBUkVfSU5ERVhFRF9QUk9QRVJU
WV9TRVRURVIoV2ViR0xCeXRlQXJyYXkpOwogCi0gICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soV2Vi
R0xGbG9hdEFycmF5R2V0KTsKLSAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhXZWJHTEZsb2F0QXJy
YXlTZXQpOwogICAgICAgICBERUNMQVJFX0lOREVYRURfUFJPUEVSVFlfR0VUVEVSKFdlYkdMRmxv
YXRBcnJheSk7CiAgICAgICAgIERFQ0xBUkVfSU5ERVhFRF9QUk9QRVJUWV9TRVRURVIoV2ViR0xG
bG9hdEFycmF5KTsKIAotICAgICAgICBERUNMQVJFX0NBTExCQUNLKFdlYkdMSW50QXJyYXlHZXQp
OwotICAgICAgICBERUNMQVJFX0NBTExCQUNLKFdlYkdMSW50QXJyYXlTZXQpOwogICAgICAgICBE
RUNMQVJFX0lOREVYRURfUFJPUEVSVFlfR0VUVEVSKFdlYkdMSW50QXJyYXkpOwogICAgICAgICBE
RUNMQVJFX0lOREVYRURfUFJPUEVSVFlfU0VUVEVSKFdlYkdMSW50QXJyYXkpOwogCi0gICAgICAg
IERFQ0xBUkVfQ0FMTEJBQ0soV2ViR0xTaG9ydEFycmF5R2V0KTsKLSAgICAgICAgREVDTEFSRV9D
QUxMQkFDSyhXZWJHTFNob3J0QXJyYXlTZXQpOwogICAgICAgICBERUNMQVJFX0lOREVYRURfUFJP
UEVSVFlfR0VUVEVSKFdlYkdMU2hvcnRBcnJheSk7CiAgICAgICAgIERFQ0xBUkVfSU5ERVhFRF9Q
Uk9QRVJUWV9TRVRURVIoV2ViR0xTaG9ydEFycmF5KTsKIAotICAgICAgICBERUNMQVJFX0NBTExC
QUNLKFdlYkdMVW5zaWduZWRCeXRlQXJyYXlHZXQpOwotICAgICAgICBERUNMQVJFX0NBTExCQUNL
KFdlYkdMVW5zaWduZWRCeXRlQXJyYXlTZXQpOwogICAgICAgICBERUNMQVJFX0lOREVYRURfUFJP
UEVSVFlfR0VUVEVSKFdlYkdMVW5zaWduZWRCeXRlQXJyYXkpOwogICAgICAgICBERUNMQVJFX0lO
REVYRURfUFJPUEVSVFlfU0VUVEVSKFdlYkdMVW5zaWduZWRCeXRlQXJyYXkpOwogCi0gICAgICAg
IERFQ0xBUkVfQ0FMTEJBQ0soV2ViR0xVbnNpZ25lZEludEFycmF5R2V0KTsKLSAgICAgICAgREVD
TEFSRV9DQUxMQkFDSyhXZWJHTFVuc2lnbmVkSW50QXJyYXlTZXQpOwogICAgICAgICBERUNMQVJF
X0lOREVYRURfUFJPUEVSVFlfR0VUVEVSKFdlYkdMVW5zaWduZWRJbnRBcnJheSk7CiAgICAgICAg
IERFQ0xBUkVfSU5ERVhFRF9QUk9QRVJUWV9TRVRURVIoV2ViR0xVbnNpZ25lZEludEFycmF5KTsK
IAotICAgICAgICBERUNMQVJFX0NBTExCQUNLKFdlYkdMVW5zaWduZWRTaG9ydEFycmF5R2V0KTsK
LSAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhXZWJHTFVuc2lnbmVkU2hvcnRBcnJheVNldCk7CiAg
ICAgICAgIERFQ0xBUkVfSU5ERVhFRF9QUk9QRVJUWV9HRVRURVIoV2ViR0xVbnNpZ25lZFNob3J0
QXJyYXkpOwogICAgICAgICBERUNMQVJFX0lOREVYRURfUFJPUEVSVFlfU0VUVEVSKFdlYkdMVW5z
aWduZWRTaG9ydEFycmF5KTsKICNlbmRpZgogCiAgICAgICAgIERFQ0xBUkVfUFJPUEVSVFlfQUND
RVNTT1JfR0VUVEVSKE1lc3NhZ2VFdmVudFBvcnRzKTsKLSAgICAgICAgREVDTEFSRV9DQUxMQkFD
SyhNZXNzYWdlRXZlbnRJbml0TWVzc2FnZUV2ZW50KTsKIAogICAgICAgICBERUNMQVJFX1BST1BF
UlRZX0FDQ0VTU09SKE1lc3NhZ2VQb3J0T25tZXNzYWdlKTsKICAgICAgICAgREVDTEFSRV9QUk9Q
RVJUWV9BQ0NFU1NPUihNZXNzYWdlUG9ydE9uY2xvc2UpOwotICAgICAgICBERUNMQVJFX0NBTExC
QUNLKE1lc3NhZ2VQb3J0QWRkRXZlbnRMaXN0ZW5lcik7Ci0gICAgICAgIERFQ0xBUkVfQ0FMTEJB
Q0soTWVzc2FnZVBvcnRQb3N0TWVzc2FnZSk7Ci0gICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soTWVz
c2FnZVBvcnRSZW1vdmVFdmVudExpc3RlbmVyKTsKLSAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhN
ZXNzYWdlUG9ydFN0YXJ0Q29udmVyc2F0aW9uKTsKIAotICAgICAgICBERUNMQVJFX0NBTExCQUNL
KERhdGFiYXNlQ2hhbmdlVmVyc2lvbik7Ci0gICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soRGF0YWJh
c2VUcmFuc2FjdGlvbik7Ci0gICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soRGF0YWJhc2VSZWFkVHJh
bnNhY3Rpb24pOwotICAgICAgICBERUNMQVJFX0NBTExCQUNLKFNRTFRyYW5zYWN0aW9uRXhlY3V0
ZVNxbCk7Ci0gICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soU1FMUmVzdWx0U2V0Um93TGlzdEl0ZW0p
OwotCiAjaWYgRU5BQkxFKERBVEFHUklEKQogICAgICAgICBERUNMQVJFX1BST1BFUlRZX0FDQ0VT
U09SKEhUTUxEYXRhR3JpZEVsZW1lbnREYXRhU291cmNlKTsKICAgICAgICAgREVDTEFSRV9OQU1F
RF9QUk9QRVJUWV9HRVRURVIoRGF0YUdyaWRDb2x1bW5MaXN0KTsKQEAgLTYxMywzNSArNDI4LDE4
IEBACiAKICNpZiBFTkFCTEUoU1ZHKQogICAgICAgICBERUNMQVJFX1BST1BFUlRZX0FDQ0VTU09S
X0dFVFRFUihTVkdMZW5ndGhWYWx1ZSk7Ci0gICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soU1ZHTGVu
Z3RoQ29udmVydFRvU3BlY2lmaWVkVW5pdHMpOwotICAgICAgICBERUNMQVJFX0NBTExCQUNLKFNW
R01hdHJpeE11bHRpcGx5KTsKLSAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhTVkdNYXRyaXhJbnZl
cnNlKTsKLSAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhTVkdNYXRyaXhSb3RhdGVGcm9tVmVjdG9y
KTsKLSAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhTVkdFbGVtZW50SW5zdGFuY2VBZGRFdmVudExp
c3RlbmVyKTsKLSAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhTVkdFbGVtZW50SW5zdGFuY2VSZW1v
dmVFdmVudExpc3RlbmVyKTsKICNlbmRpZgogCiAjaWYgRU5BQkxFKFdPUktFUlMpCiAgICAgICAg
IERFQ0xBUkVfUFJPUEVSVFlfQUNDRVNTT1IoQWJzdHJhY3RXb3JrZXJPbmVycm9yKTsKLSAgICAg
ICAgREVDTEFSRV9DQUxMQkFDSyhBYnN0cmFjdFdvcmtlckFkZEV2ZW50TGlzdGVuZXIpOwotICAg
ICAgICBERUNMQVJFX0NBTExCQUNLKEFic3RyYWN0V29ya2VyUmVtb3ZlRXZlbnRMaXN0ZW5lcik7
CiAKICAgICAgICAgREVDTEFSRV9QUk9QRVJUWV9BQ0NFU1NPUihEZWRpY2F0ZWRXb3JrZXJDb250
ZXh0T25tZXNzYWdlKTsKLSAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhEZWRpY2F0ZWRXb3JrZXJD
b250ZXh0UG9zdE1lc3NhZ2UpOwogCiAgICAgICAgIERFQ0xBUkVfUFJPUEVSVFlfQUNDRVNTT1Io
V29ya2VyT25tZXNzYWdlKTsKLSAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhXb3JrZXJQb3N0TWVz
c2FnZSk7CiAgICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soV29ya2VyQ29uc3RydWN0b3IpOwogCiAg
ICAgICAgIERFQ0xBUkVfUFJPUEVSVFlfQUNDRVNTT1JfR0VUVEVSKFdvcmtlckNvbnRleHRTZWxm
KTsKICAgICAgICAgREVDTEFSRV9QUk9QRVJUWV9BQ0NFU1NPUihXb3JrZXJDb250ZXh0T25lcnJv
cik7Ci0gICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soV29ya2VyQ29udGV4dEltcG9ydFNjcmlwdHMp
OwotICAgICAgICBERUNMQVJFX0NBTExCQUNLKFdvcmtlckNvbnRleHRTZXRUaW1lb3V0KTsKLSAg
ICAgICAgREVDTEFSRV9DQUxMQkFDSyhXb3JrZXJDb250ZXh0Q2xlYXJUaW1lb3V0KTsKLSAgICAg
ICAgREVDTEFSRV9DQUxMQkFDSyhXb3JrZXJDb250ZXh0U2V0SW50ZXJ2YWwpOwotICAgICAgICBE
RUNMQVJFX0NBTExCQUNLKFdvcmtlckNvbnRleHRDbGVhckludGVydmFsKTsKLSAgICAgICAgREVD
TEFSRV9DQUxMQkFDSyhXb3JrZXJDb250ZXh0QWRkRXZlbnRMaXN0ZW5lcik7Ci0gICAgICAgIERF
Q0xBUkVfQ0FMTEJBQ0soV29ya2VyQ29udGV4dFJlbW92ZUV2ZW50TGlzdGVuZXIpOwogCiAjaWYg
RU5BQkxFKE5PVElGSUNBVElPTlMpCiAgICAgICAgIERFQ0xBUkVfQUNDRVNTT1JfUlVOVElNRV9F
TkFCTEVSKFdvcmtlckNvbnRleHRXZWJraXROb3RpZmljYXRpb25zKTsKQEAgLTY0OSwyMCArNDQ3
LDEyIEBACiAjZW5kaWYgLy8gRU5BQkxFKFdPUktFUlMpCiAKICNpZiBFTkFCTEUoTk9USUZJQ0FU
SU9OUykKLSAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhOb3RpZmljYXRpb25DZW50ZXJSZXF1ZXN0
UGVybWlzc2lvbik7Ci0gICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soTm90aWZpY2F0aW9uQ2VudGVy
Q3JlYXRlTm90aWZpY2F0aW9uKTsKLSAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhOb3RpZmljYXRp
b25DZW50ZXJDcmVhdGVIVE1MTm90aWZpY2F0aW9uKTsKLQotICAgICAgICBERUNMQVJFX0NBTExC
QUNLKE5vdGlmaWNhdGlvbkFkZEV2ZW50TGlzdGVuZXIpOwotICAgICAgICBERUNMQVJFX0NBTExC
QUNLKE5vdGlmaWNhdGlvblJlbW92ZUV2ZW50TGlzdGVuZXIpOwogICAgICAgICBERUNMQVJFX1BS
T1BFUlRZX0FDQ0VTU09SKE5vdGlmaWNhdGlvbkV2ZW50SGFuZGxlcik7CiAjZW5kaWYgLy8gRU5B
QkxFKE5PVElGSUNBVElPTlMpCiAKICNpZiBFTkFCTEUoT0ZGTElORV9XRUJfQVBQTElDQVRJT05T
KQogICAgICAgICBERUNMQVJFX0FDQ0VTU09SX1JVTlRJTUVfRU5BQkxFUihET01XaW5kb3dBcHBs
aWNhdGlvbkNhY2hlKTsKICAgICAgICAgREVDTEFSRV9QUk9QRVJUWV9BQ0NFU1NPUihET01BcHBs
aWNhdGlvbkNhY2hlRXZlbnRIYW5kbGVyKTsKLSAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhET01B
cHBsaWNhdGlvbkNhY2hlQWRkRXZlbnRMaXN0ZW5lcik7Ci0gICAgICAgIERFQ0xBUkVfQ0FMTEJB
Q0soRE9NQXBwbGljYXRpb25DYWNoZVJlbW92ZUV2ZW50TGlzdGVuZXIpOwogI2VuZGlmCiAKICNp
ZiBFTkFCTEUoU0hBUkVEX1dPUktFUlMpCkBAIC02NzksMTUgKzQ2OSw5IEBACiAgICAgICAgIERF
Q0xBUkVfUFJPUEVSVFlfQUNDRVNTT1IoV2ViU29ja2V0T25tZXNzYWdlKTsKICAgICAgICAgREVD
TEFSRV9QUk9QRVJUWV9BQ0NFU1NPUihXZWJTb2NrZXRPbmNsb3NlKTsKICAgICAgICAgREVDTEFS
RV9DQUxMQkFDSyhXZWJTb2NrZXRDb25zdHJ1Y3Rvcik7Ci0gICAgICAgIERFQ0xBUkVfQ0FMTEJB
Q0soV2ViU29ja2V0QWRkRXZlbnRMaXN0ZW5lcik7Ci0gICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0so
V2ViU29ja2V0UmVtb3ZlRXZlbnRMaXN0ZW5lcik7Ci0gICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0so
V2ViU29ja2V0U2VuZCk7Ci0gICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soV2ViU29ja2V0Q2xvc2Up
OwogICAgICAgICBERUNMQVJFX0FDQ0VTU09SX1JVTlRJTUVfRU5BQkxFUihET01XaW5kb3dXZWJT
b2NrZXQpOwogI2VuZGlmCiAKLSAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhHZW9sb2NhdGlvbkdl
dEN1cnJlbnRQb3NpdGlvbik7Ci0gICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soR2VvbG9jYXRpb25X
YXRjaFBvc2l0aW9uKTsKICAgICAgICAgREVDTEFSRV9QUk9QRVJUWV9BQ0NFU1NPUl9HRVRURVIo
Q29vcmRpbmF0ZXNBbHRpdHVkZSk7CiAgICAgICAgIERFQ0xBUkVfUFJPUEVSVFlfQUNDRVNTT1Jf
R0VUVEVSKENvb3JkaW5hdGVzQWx0aXR1ZGVBY2N1cmFjeSk7CiAgICAgICAgIERFQ0xBUkVfUFJP
UEVSVFlfQUNDRVNTT1JfR0VUVEVSKENvb3JkaW5hdGVzSGVhZGluZyk7CkBAIC03MjEsMTAgKzUw
NSw3IEBACiAjaWYgRU5BQkxFKFNWRykKICAgICAgICAgc3RhdGljIFY4Q2xhc3NJbmRleDo6VjhX
cmFwcGVyVHlwZSBEb3duY2FzdFNWR1BhdGhTZWcodm9pZCogcGF0aFNlZyk7CiAjZW5kaWYKLQog
ICAgIHByaXZhdGU6Ci0gICAgICAgIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gV2luZG93
U2V0VGltZW91dEltcGwoY29uc3Qgdjg6OkFyZ3VtZW50cyYsIGJvb2wgc2luZ2xlU2hvdCk7Ci0g
ICAgICAgIHN0YXRpYyB2b2lkIENsZWFyVGltZW91dEltcGwoY29uc3Qgdjg6OkFyZ3VtZW50cyYp
OwogICAgICAgICBzdGF0aWMgdm9pZCBXaW5kb3dTZXRMb2NhdGlvbihET01XaW5kb3cqLCBjb25z
dCBTdHJpbmcmKTsKICAgICB9OwogCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9W
OFdlYkdMVW5zaWduZWRCeXRlQXJyYXlDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
YmluZGluZ3MvdjgvY3VzdG9tL1Y4V2ViR0xVbnNpZ25lZEJ5dGVBcnJheUN1c3RvbS5jcHAJKHJl
dmlzaW9uIDUyMzQxKQorKysgV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhXZWJHTFVuc2ln
bmVkQnl0ZUFycmF5Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDQsNyArNDQsNyBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUNBTExCQUNLX0ZVTkNfREVDTChXZWJHTFVuc2lnbmVk
Qnl0ZUFycmF5Q29uc3RydWN0b3IpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhDdXN0b206OnY4
V2ViR0xVbnNpZ25lZEJ5dGVBcnJheUNvbnN0cnVjdG9yQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3Vt
ZW50cyYgYXJncykKIHsKICAgICBJTkNfU1RBVFMoIkRPTS5XZWJHTFVuc2lnbmVkQnl0ZUFycmF5
LkNvbnRydWN0b3IiKTsKIApAQCAtNzksMTMgKzc5LDEzIEBACiAgICAgcmV0dXJuIHZhbHVlOwog
fQogCi1DQUxMQkFDS19GVU5DX0RFQ0woV2ViR0xVbnNpZ25lZEJ5dGVBcnJheUdldCkKK3Y4OjpI
YW5kbGU8djg6OlZhbHVlPiBWOFdlYkdMVW5zaWduZWRCeXRlQXJyYXk6OmdldENhbGxiYWNrKGNv
bnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgSU5DX1NUQVRTKCJET00uV2ViR0xVbnNp
Z25lZEJ5dGVBcnJheS5nZXQoKSIpOwogICAgIHJldHVybiBnZXRXZWJHTEFycmF5RWxlbWVudDxX
ZWJHTFVuc2lnbmVkQnl0ZUFycmF5LCB1bnNpZ25lZCBjaGFyPihhcmdzLCBWOENsYXNzSW5kZXg6
OldFQkdMVU5TSUdORURCWVRFQVJSQVkpOwogfQogCi1DQUxMQkFDS19GVU5DX0RFQ0woV2ViR0xV
bnNpZ25lZEJ5dGVBcnJheVNldCkKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFdlYkdMVW5zaWdu
ZWRCeXRlQXJyYXk6OnNldENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAg
ICAgSU5DX1NUQVRTKCJET00uV2ViR0xVbnNpZ25lZEJ5dGVBcnJheS5zZXQoKSIpOwogICAgIHJl
dHVybiBzZXRXZWJHTEFycmF5PFdlYkdMVW5zaWduZWRCeXRlQXJyYXksIFY4V2ViR0xVbnNpZ25l
ZEJ5dGVBcnJheT4oYXJncywgVjhDbGFzc0luZGV4OjpXRUJHTFVOU0lHTkVEQllURUFSUkFZKTsK
SW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4U1ZHTWF0cml4Q3VzdG9tLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFNWR01hdHJpeEN1c3Rv
bS5jcHAJKHJldmlzaW9uIDUyMzQxKQorKysgV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhT
VkdNYXRyaXhDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NCw3ICs0NCw3IEBACiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotQ0FMTEJBQ0tfRlVOQ19ERUNMKFNWR01hdHJpeE11bHRpcGx5
KQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4U1ZHTWF0cml4OjptdWx0aXBseUNhbGxiYWNrKGNv
bnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgSU5DX1NUQVRTKCJET00uU1ZHTWF0cml4
Lm11bHRpcGx5KCkiKTsKICAgICBpZiAoYXJncy5MZW5ndGgoKSA8IDEpCkBAIC01OSw3ICs1OSw3
IEBACiAgICAgcmV0dXJuIFY4RE9NV3JhcHBlcjo6Y29udmVydFRvVjhPYmplY3QoVjhDbGFzc0lu
ZGV4OjpTVkdNQVRSSVgsIFY4U1ZHU3RhdGljUE9EVHlwZVdyYXBwZXI8VHJhbnNmb3JtYXRpb25N
YXRyaXg+OjpjcmVhdGUobTEubXVsdExlZnQobTIpKSk7CiB9CiAKLUNBTExCQUNLX0ZVTkNfREVD
TChTVkdNYXRyaXhJbnZlcnNlKQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4U1ZHTWF0cml4Ojpp
bnZlcnNlQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBJTkNfU1RB
VFMoIkRPTS5TVkdNYXRyaXguaW52ZXJzZSgpIik7CiAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXgg
bWF0cml4ID0gKlY4RE9NV3JhcHBlcjo6Y29udmVydFRvTmF0aXZlT2JqZWN0PFY4U1ZHUE9EVHlw
ZVdyYXBwZXI8VHJhbnNmb3JtYXRpb25NYXRyaXg+ID4oVjhDbGFzc0luZGV4OjpTVkdNQVRSSVgs
IGFyZ3MuSG9sZGVyKCkpOwpAQCAtNzcsNyArNzcsNyBAQAogICAgIHJldHVybiBWOERPTVdyYXBw
ZXI6OmNvbnZlcnRUb1Y4T2JqZWN0KFY4Q2xhc3NJbmRleDo6U1ZHTUFUUklYLCBWOFNWR1N0YXRp
Y1BPRFR5cGVXcmFwcGVyPFRyYW5zZm9ybWF0aW9uTWF0cml4Pjo6Y3JlYXRlKHJlc3VsdCkpOwog
fQogCi1DQUxMQkFDS19GVU5DX0RFQ0woU1ZHTWF0cml4Um90YXRlRnJvbVZlY3RvcikKK3Y4OjpI
YW5kbGU8djg6OlZhbHVlPiBWOFNWR01hdHJpeDo6cm90YXRlRnJvbVZlY3RvckNhbGxiYWNrKGNv
bnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgSU5DX1NUQVRTKCJET00uU1ZHTWF0cml4
LnJvdGF0ZUZyb21WZWN0b3IoKSIpOwogICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IG1hdHJpeCA9
ICpWOERPTVdyYXBwZXI6OmNvbnZlcnRUb05hdGl2ZU9iamVjdDxWOFNWR1BPRFR5cGVXcmFwcGVy
PFRyYW5zZm9ybWF0aW9uTWF0cml4PiA+KFY4Q2xhc3NJbmRleDo6U1ZHTUFUUklYLCBhcmdzLkhv
bGRlcigpKTsKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RWxlbWVudEN1c3Rv
bS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhFbGVtZW50
Q3VzdG9tLmNwcAkocmV2aXNpb24gNTIzNDEpCisrKyBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOEVsZW1lbnRDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOSwxMSArMjksMTIgQEAK
ICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiRWxlbWVudC5oIgorI2luY2x1
ZGUgIlY4RWxlbWVudC5oIgogCiAjaW5jbHVkZSAiQXR0ci5oIgogI2luY2x1ZGUgIkNTU0hlbHBl
ci5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiRWxlbWVudC5oIgogI2luY2x1
ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKICNpbmNsdWRlICJIVE1MRnJhbWVFbGVtZW50QmFzZS5oIgog
I2luY2x1ZGUgIkhUTUxOYW1lcy5oIgpAQCAtNDgsNyArNDksNyBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLUNBTExCQUNLX0ZVTkNfREVDTChFbGVtZW50U2V0QXR0cmlidXRlKQordjg6Okhh
bmRsZTx2ODo6VmFsdWU+IFY4RWxlbWVudDo6c2V0QXR0cmlidXRlQ2FsbGJhY2soY29uc3Qgdjg6
OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBJTkNfU1RBVFMoIkRPTS5FbGVtZW50LnNldEF0dHJp
YnV0ZSgpIik7CiAgICAgRWxlbWVudCogZWxlbWVudCA9IFY4RE9NV3JhcHBlcjo6Y29udmVydERP
TVdyYXBwZXJUb05vZGU8RWxlbWVudD4oYXJncy5Ib2xkZXIoKSk7CkBAIC02Niw3ICs2Nyw3IEBA
CiAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKIH0KIAotQ0FMTEJBQ0tfRlVOQ19ERUNMKEVs
ZW1lbnRTZXRBdHRyaWJ1dGVOb2RlKQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4RWxlbWVudDo6
c2V0QXR0cmlidXRlTm9kZUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAg
ICAgSU5DX1NUQVRTKCJET00uRWxlbWVudC5zZXRBdHRyaWJ1dGVOb2RlKCkiKTsKICAgICBpZiAo
IVY4QXR0cjo6SGFzSW5zdGFuY2UoYXJnc1swXSkpCkBAIC04Niw3ICs4Nyw3IEBACiAgICAgcmV0
dXJuIFY4RE9NV3JhcHBlcjo6Y29udmVydE5vZGVUb1Y4T2JqZWN0KHJlc3VsdC5yZWxlYXNlKCkp
OwogfQogCi1DQUxMQkFDS19GVU5DX0RFQ0woRWxlbWVudFNldEF0dHJpYnV0ZU5TKQordjg6Okhh
bmRsZTx2ODo6VmFsdWU+IFY4RWxlbWVudDo6c2V0QXR0cmlidXRlTlNDYWxsYmFjayhjb25zdCB2
ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAgIElOQ19TVEFUUygiRE9NLkVsZW1lbnQuc2V0QXR0
cmlidXRlTlMoKSIpOwogICAgIEVsZW1lbnQqIGVsZW1lbnQgPSBWOERPTVdyYXBwZXI6OmNvbnZl
cnRET01XcmFwcGVyVG9Ob2RlPEVsZW1lbnQ+KGFyZ3MuSG9sZGVyKCkpOwpAQCAtMTA1LDcgKzEw
Niw3IEBACiAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKIH0KIAotQ0FMTEJBQ0tfRlVOQ19E
RUNMKEVsZW1lbnRTZXRBdHRyaWJ1dGVOb2RlTlMpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhF
bGVtZW50OjpzZXRBdHRyaWJ1dGVOb2RlTlNDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBh
cmdzKQogewogICAgIElOQ19TVEFUUygiRE9NLkVsZW1lbnQuc2V0QXR0cmlidXRlTm9kZU5TKCki
KTsKICAgICBpZiAoIVY4QXR0cjo6SGFzSW5zdGFuY2UoYXJnc1swXSkpCkluZGV4OiBXZWJDb3Jl
L2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxPcHRpb25zQ29sbGVjdGlvbkN1c3RvbS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MT3B0aW9uc0NvbGxl
Y3Rpb25DdXN0b20uY3BwCShyZXZpc2lvbiA1MjM0MSkKKysrIFdlYkNvcmUvYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4SFRNTE9wdGlvbnNDb2xsZWN0aW9uQ3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjksOCArMjksOSBAQAogICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJW
OEhUTUxPcHRpb25zQ29sbGVjdGlvbi5oIgorCiAjaW5jbHVkZSAiSFRNTE9wdGlvbnNDb2xsZWN0
aW9uLmgiCi0KICNpbmNsdWRlICJIVE1MT3B0aW9uRWxlbWVudC5oIgogI2luY2x1ZGUgIkV4Y2Vw
dGlvbkNvZGUuaCIKIApAQCAtNDMsNyArNDQsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LUNBTExCQUNLX0ZVTkNfREVDTChIVE1MT3B0aW9uc0NvbGxlY3Rpb25SZW1vdmUpCit2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gVjhIVE1MT3B0aW9uc0NvbGxlY3Rpb246OnJlbW92ZUNhbGxiYWNrKGNv
bnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgSU5DX1NUQVRTKCJET00uSFRNTE9wdGlv
bnNDb2xsZWN0aW9uLnJlbW92ZSgpIik7CiAgICAgSFRNTE9wdGlvbnNDb2xsZWN0aW9uKiBpbXAg
PSBWOERPTVdyYXBwZXI6OmNvbnZlcnRUb05hdGl2ZU9iamVjdDxIVE1MT3B0aW9uc0NvbGxlY3Rp
b24+KFY4Q2xhc3NJbmRleDo6SFRNTE9QVElPTlNDT0xMRUNUSU9OLCBhcmdzLkhvbGRlcigpKTsK
QEAgLTUxLDcgKzUyLDcgQEAKICAgICByZXR1cm4gcmVtb3ZlRWxlbWVudChiYXNlLCBhcmdzKTsK
IH0KIAotQ0FMTEJBQ0tfRlVOQ19ERUNMKEhUTUxPcHRpb25zQ29sbGVjdGlvbkFkZCkKK3Y4OjpI
YW5kbGU8djg6OlZhbHVlPiBWOEhUTUxPcHRpb25zQ29sbGVjdGlvbjo6YWRkQ2FsbGJhY2soY29u
c3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBJTkNfU1RBVFMoIkRPTS5IVE1MT3B0aW9u
c0NvbGxlY3Rpb24uYWRkKCkiKTsKICAgICBpZiAoIVY4SFRNTE9wdGlvbkVsZW1lbnQ6Okhhc0lu
c3RhbmNlKGFyZ3NbMF0pKSB7CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOENs
aXBib2FyZEN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0
b20vVjhDbGlwYm9hcmRDdXN0b20uY3BwCShyZXZpc2lvbiA1MjM0MSkKKysrIFdlYkNvcmUvYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4Q2xpcGJvYXJkQ3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MjksOCArMjksOSBAQAogICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJWOENs
aXBib2FyZC5oIgorCiAjaW5jbHVkZSAiQ2xpcGJvYXJkLmgiCi0KICNpbmNsdWRlICJIVE1MSW1h
Z2VFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiSW50UG9pbnQu
aCIKQEAgLTYyLDcgKzYzLDcgQEAKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1DQUxMQkFDS19G
VU5DX0RFQ0woQ2xpcGJvYXJkQ2xlYXJEYXRhKQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4Q2xp
cGJvYXJkOjpjbGVhckRhdGFDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewog
ICAgIElOQ19TVEFUUygiRE9NLkNsaXBib2FyZC5jbGVhckRhdGEoKSIpOwogICAgIENsaXBib2Fy
ZCogY2xpcGJvYXJkID0gVjhET01XcmFwcGVyOjpjb252ZXJ0VG9OYXRpdmVPYmplY3Q8Q2xpcGJv
YXJkPihWOENsYXNzSW5kZXg6OkNMSVBCT0FSRCwgYXJncy5Ib2xkZXIoKSk7CkBAIC04MCw3ICs4
MSw3IEBACiAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKIH0KIAotQ0FMTEJBQ0tfRlVOQ19E
RUNMKENsaXBib2FyZEdldERhdGEpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhDbGlwYm9hcmQ6
OmdldERhdGFDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAgIElOQ19T
VEFUUygiRE9NLkNsaXBib2FyZC5nZXREYXRhKCkiKTsKICAgICBDbGlwYm9hcmQqIGNsaXBib2Fy
ZCA9IFY4RE9NV3JhcHBlcjo6Y29udmVydFRvTmF0aXZlT2JqZWN0PENsaXBib2FyZD4oVjhDbGFz
c0luZGV4OjpDTElQQk9BUkQsIGFyZ3MuSG9sZGVyKCkpOwpAQCAtOTYsNyArOTcsNyBAQAogICAg
IHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CiB9CiAKLUNBTExCQUNLX0ZVTkNfREVDTChDbGlwYm9h
cmRTZXREYXRhKQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4Q2xpcGJvYXJkOjpzZXREYXRhQ2Fs
bGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBJTkNfU1RBVFMoIkRPTS5D
bGlwYm9hcmQuc2V0RGF0YSgpIik7CiAgICAgQ2xpcGJvYXJkKiBjbGlwYm9hcmQgPSBWOERPTVdy
YXBwZXI6OmNvbnZlcnRUb05hdGl2ZU9iamVjdDxDbGlwYm9hcmQ+KFY4Q2xhc3NJbmRleDo6Q0xJ
UEJPQVJELCBhcmdzLkhvbGRlcigpKTsKQEAgLTEwOSw3ICsxMTAsNyBAQAogICAgIHJldHVybiB2
OEJvb2xlYW4oY2xpcGJvYXJkLT5zZXREYXRhKHR5cGUsIGRhdGEpKTsKIH0KIAotQ0FMTEJBQ0tf
RlVOQ19ERUNMKENsaXBib2FyZFNldERyYWdJbWFnZSkKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBW
OENsaXBib2FyZDo6c2V0RHJhZ0ltYWdlQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJn
cykKIHsKICAgICBJTkNfU1RBVFMoIkRPTS5DbGlwYm9hcmQuc2V0RHJhZ0ltYWdlKCkiKTsKICAg
ICBDbGlwYm9hcmQqIGNsaXBib2FyZCA9IFY4RE9NV3JhcHBlcjo6Y29udmVydFRvTmF0aXZlT2Jq
ZWN0PENsaXBib2FyZD4oVjhDbGFzc0luZGV4OjpDTElQQk9BUkQsIGFyZ3MuSG9sZGVyKCkpOwpJ
bmRleDogV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhTaGFyZWRXb3JrZXJDdXN0b20uY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4U2hhcmVkV29ya2Vy
Q3VzdG9tLmNwcAkocmV2aXNpb24gNTIzNDEpCisrKyBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOFNoYXJlZFdvcmtlckN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDcgKzQ1LDcg
QEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1DQUxMQkFDS19GVU5DX0RFQ0woU2hhcmVkV29y
a2VyQ29uc3RydWN0b3IpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhDdXN0b206OnY4U2hhcmVk
V29ya2VyQ29uc3RydWN0b3JDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewog
ICAgIElOQ19TVEFUUyhMIkRPTS5TaGFyZWRXb3JrZXIuQ29uc3RydWN0b3IiKTsKIApJbmRleDog
V2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhMb2NhdGlvbkN1c3RvbS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhMb2NhdGlvbkN1c3RvbS5jcHAJKHJl
dmlzaW9uIDUyMzQxKQorKysgV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhMb2NhdGlvbkN1
c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxMCw3ICsyMTAsNyBAQAogQUNDRVNTT1JfR0VU
VEVSKExvY2F0aW9uUmVsb2FkKQogewogICAgIElOQ19TVEFUUygiRE9NLkxvY2F0aW9uLnJlbG9h
ZC5fZ2V0Iik7Ci0gICAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRl
PiBwcml2YXRlVGVtcGxhdGUgPSB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT46
Ok5ldyh2ODo6RnVuY3Rpb25UZW1wbGF0ZTo6TmV3KHY4TG9jYXRpb25SZWxvYWRDYWxsYmFjaywg
djg6OkhhbmRsZTx2ODo6VmFsdWU+KCksIHY4OjpTaWduYXR1cmU6Ok5ldyhWOExvY2F0aW9uOjpH
ZXRSYXdUZW1wbGF0ZSgpKSkpOworICAgIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rp
b25UZW1wbGF0ZT4gcHJpdmF0ZVRlbXBsYXRlID0gdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9u
VGVtcGxhdGU+OjpOZXcodjg6OkZ1bmN0aW9uVGVtcGxhdGU6Ok5ldyhWOExvY2F0aW9uOjpyZWxv
YWRDYWxsYmFjaywgdjg6OkhhbmRsZTx2ODo6VmFsdWU+KCksIHY4OjpTaWduYXR1cmU6Ok5ldyhW
OExvY2F0aW9uOjpHZXRSYXdUZW1wbGF0ZSgpKSkpOwogICAgIHY4OjpIYW5kbGU8djg6Ok9iamVj
dD4gaG9sZGVyID0gVjhET01XcmFwcGVyOjpsb29rdXBET01XcmFwcGVyKFY4Q2xhc3NJbmRleDo6
TE9DQVRJT04sIGluZm8uVGhpcygpKTsKICAgICBpZiAoaG9sZGVyLklzRW1wdHkoKSkgewogICAg
ICAgICAvLyBjYW4gb25seSByZWFjaCBoZXJlIGJ5ICdvYmplY3QuX19wcm90b19fLmZ1bmMnLCBh
bmQgaXQgc2hvdWxkIHBhc3NlZApAQCAtMjE5LDcgKzIxOSw3IEBACiAgICAgfQogICAgIExvY2F0
aW9uKiBpbXAgPSBWOERPTVdyYXBwZXI6OmNvbnZlcnRUb05hdGl2ZU9iamVjdDxMb2NhdGlvbj4o
VjhDbGFzc0luZGV4OjpMT0NBVElPTiwgaG9sZGVyKTsKICAgICBpZiAoIVY4QmluZGluZ1NlY3Vy
aXR5OjpjYW5BY2Nlc3NGcmFtZShWOEJpbmRpbmdTdGF0ZTo6T25seSgpLCBpbXAtPmZyYW1lKCks
IGZhbHNlKSkgewotICAgICAgICBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVt
cGxhdGU+IHNoYXJlZFRlbXBsYXRlID0gdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxh
dGU+OjpOZXcodjg6OkZ1bmN0aW9uVGVtcGxhdGU6Ok5ldyh2OExvY2F0aW9uUmVsb2FkQ2FsbGJh
Y2ssIHY4OjpIYW5kbGU8djg6OlZhbHVlPigpLCB2ODo6U2lnbmF0dXJlOjpOZXcoVjhMb2NhdGlv
bjo6R2V0UmF3VGVtcGxhdGUoKSkpKTsKKyAgICAgICAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4
OjpGdW5jdGlvblRlbXBsYXRlPiBzaGFyZWRUZW1wbGF0ZSA9IHY4OjpQZXJzaXN0ZW50PHY4OjpG
dW5jdGlvblRlbXBsYXRlPjo6TmV3KHY4OjpGdW5jdGlvblRlbXBsYXRlOjpOZXcoVjhMb2NhdGlv
bjo6cmVsb2FkQ2FsbGJhY2ssIHY4OjpIYW5kbGU8djg6OlZhbHVlPigpLCB2ODo6U2lnbmF0dXJl
OjpOZXcoVjhMb2NhdGlvbjo6R2V0UmF3VGVtcGxhdGUoKSkpKTsKICAgICAgICAgcmV0dXJuIHNo
YXJlZFRlbXBsYXRlLT5HZXRGdW5jdGlvbigpOwogICAgIH0KICAgICByZXR1cm4gcHJpdmF0ZVRl
bXBsYXRlLT5HZXRGdW5jdGlvbigpOwpAQCAtMjI4LDcgKzIyOCw3IEBACiBBQ0NFU1NPUl9HRVRU
RVIoTG9jYXRpb25SZXBsYWNlKQogewogICAgIElOQ19TVEFUUygiRE9NLkxvY2F0aW9uLnJlcGxh
Y2UuX2dldCIpOwotICAgIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0
ZT4gcHJpdmF0ZVRlbXBsYXRlID0gdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+
OjpOZXcodjg6OkZ1bmN0aW9uVGVtcGxhdGU6Ok5ldyh2OExvY2F0aW9uUmVwbGFjZUNhbGxiYWNr
LCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4oKSwgdjg6OlNpZ25hdHVyZTo6TmV3KFY4TG9jYXRpb246
OkdldFJhd1RlbXBsYXRlKCkpKSk7CisgICAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5j
dGlvblRlbXBsYXRlPiBwcml2YXRlVGVtcGxhdGUgPSB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rp
b25UZW1wbGF0ZT46Ok5ldyh2ODo6RnVuY3Rpb25UZW1wbGF0ZTo6TmV3KFY4TG9jYXRpb246OnJl
cGxhY2VDYWxsYmFjaywgdjg6OkhhbmRsZTx2ODo6VmFsdWU+KCksIHY4OjpTaWduYXR1cmU6Ok5l
dyhWOExvY2F0aW9uOjpHZXRSYXdUZW1wbGF0ZSgpKSkpOwogICAgIHY4OjpIYW5kbGU8djg6Ok9i
amVjdD4gaG9sZGVyID0gVjhET01XcmFwcGVyOjpsb29rdXBET01XcmFwcGVyKFY4Q2xhc3NJbmRl
eDo6TE9DQVRJT04sIGluZm8uVGhpcygpKTsKICAgICBpZiAoaG9sZGVyLklzRW1wdHkoKSkgewog
ICAgICAgICAvLyBjYW4gb25seSByZWFjaCBoZXJlIGJ5ICdvYmplY3QuX19wcm90b19fLmZ1bmMn
LCBhbmQgaXQgc2hvdWxkIHBhc3NlZApAQCAtMjM3LDcgKzIzNyw3IEBACiAgICAgfQogICAgIExv
Y2F0aW9uKiBpbXAgPSBWOERPTVdyYXBwZXI6OmNvbnZlcnRUb05hdGl2ZU9iamVjdDxMb2NhdGlv
bj4oVjhDbGFzc0luZGV4OjpMT0NBVElPTiwgaG9sZGVyKTsKICAgICBpZiAoIVY4QmluZGluZ1Nl
Y3VyaXR5OjpjYW5BY2Nlc3NGcmFtZShWOEJpbmRpbmdTdGF0ZTo6T25seSgpLCBpbXAtPmZyYW1l
KCksIGZhbHNlKSkgewotICAgICAgICBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9u
VGVtcGxhdGU+IHNoYXJlZFRlbXBsYXRlID0gdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVt
cGxhdGU+OjpOZXcodjg6OkZ1bmN0aW9uVGVtcGxhdGU6Ok5ldyh2OExvY2F0aW9uUmVwbGFjZUNh
bGxiYWNrLCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4oKSwgdjg6OlNpZ25hdHVyZTo6TmV3KFY4TG9j
YXRpb246OkdldFJhd1RlbXBsYXRlKCkpKSk7CisgICAgICAgIHN0YXRpYyB2ODo6UGVyc2lzdGVu
dDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gc2hhcmVkVGVtcGxhdGUgPSB2ODo6UGVyc2lzdGVudDx2
ODo6RnVuY3Rpb25UZW1wbGF0ZT46Ok5ldyh2ODo6RnVuY3Rpb25UZW1wbGF0ZTo6TmV3KFY4TG9j
YXRpb246OnJlcGxhY2VDYWxsYmFjaywgdjg6OkhhbmRsZTx2ODo6VmFsdWU+KCksIHY4OjpTaWdu
YXR1cmU6Ok5ldyhWOExvY2F0aW9uOjpHZXRSYXdUZW1wbGF0ZSgpKSkpOwogICAgICAgICByZXR1
cm4gc2hhcmVkVGVtcGxhdGUtPkdldEZ1bmN0aW9uKCk7CiAgICAgfQogICAgIHJldHVybiBwcml2
YXRlVGVtcGxhdGUtPkdldEZ1bmN0aW9uKCk7CkBAIC0yNDcsNyArMjQ3LDcgQEAKIHsKICAgICBJ
TkNfU1RBVFMoIkRPTS5Mb2NhdGlvbi5hc3NpZ24uX2dldCIpOwogICAgIHN0YXRpYyB2ODo6UGVy
c2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gcHJpdmF0ZVRlbXBsYXRlID0KLSAgICB2ODo6
UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT46Ok5ldyh2ODo6RnVuY3Rpb25UZW1wbGF0
ZTo6TmV3KHY4TG9jYXRpb25Bc3NpZ25DYWxsYmFjaywgdjg6OkhhbmRsZTx2ODo6VmFsdWU+KCks
IHY4OjpTaWduYXR1cmU6Ok5ldyhWOExvY2F0aW9uOjpHZXRSYXdUZW1wbGF0ZSgpKSkpOworICAg
ICAgICB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT46Ok5ldyh2ODo6RnVuY3Rp
b25UZW1wbGF0ZTo6TmV3KFY4TG9jYXRpb246OmFzc2lnbkNhbGxiYWNrLCB2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4oKSwgdjg6OlNpZ25hdHVyZTo6TmV3KFY4TG9jYXRpb246OkdldFJhd1RlbXBsYXRl
KCkpKSk7CiAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBob2xkZXIgPSBWOERPTVdyYXBwZXI6
Omxvb2t1cERPTVdyYXBwZXIoVjhDbGFzc0luZGV4OjpMT0NBVElPTiwgaW5mby5UaGlzKCkpOwog
ICAgIGlmIChob2xkZXIuSXNFbXB0eSgpKSB7CiAgICAgICAgIC8vIGNhbiBvbmx5IHJlYWNoIGhl
cmUgYnkgJ29iamVjdC5fX3Byb3RvX18uZnVuYycsIGFuZCBpdCBzaG91bGQgcGFzc2VkCkBAIC0y
NTYsMTMgKzI1NiwxMyBAQAogICAgIH0KICAgICBMb2NhdGlvbiogaW1wID0gVjhET01XcmFwcGVy
Ojpjb252ZXJ0VG9OYXRpdmVPYmplY3Q8TG9jYXRpb24+KFY4Q2xhc3NJbmRleDo6TE9DQVRJT04s
IGhvbGRlcik7CiAgICAgaWYgKCFWOEJpbmRpbmdTZWN1cml0eTo6Y2FuQWNjZXNzRnJhbWUoVjhC
aW5kaW5nU3RhdGU6Ok9ubHkoKSwgaW1wLT5mcmFtZSgpLCBmYWxzZSkpIHsKLSAgICAgICAgc3Rh
dGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBzaGFyZWRUZW1wbGF0ZSA9
IHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPjo6TmV3KHY4OjpGdW5jdGlvblRl
bXBsYXRlOjpOZXcodjhMb2NhdGlvbkFzc2lnbkNhbGxiYWNrLCB2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4oKSwgdjg6OlNpZ25hdHVyZTo6TmV3KFY4TG9jYXRpb246OkdldFJhd1RlbXBsYXRlKCkpKSk7
CisgICAgICAgIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gc2hh
cmVkVGVtcGxhdGUgPSB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT46Ok5ldyh2
ODo6RnVuY3Rpb25UZW1wbGF0ZTo6TmV3KFY4TG9jYXRpb246OmFzc2lnbkNhbGxiYWNrLCB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4oKSwgdjg6OlNpZ25hdHVyZTo6TmV3KFY4TG9jYXRpb246OkdldFJh
d1RlbXBsYXRlKCkpKSk7CiAgICAgICAgIHJldHVybiBzaGFyZWRUZW1wbGF0ZS0+R2V0RnVuY3Rp
b24oKTsKICAgICB9CiAgICAgcmV0dXJuIHByaXZhdGVUZW1wbGF0ZS0+R2V0RnVuY3Rpb24oKTsK
IH0KIAotQ0FMTEJBQ0tfRlVOQ19ERUNMKExvY2F0aW9uUmVsb2FkKQordjg6OkhhbmRsZTx2ODo6
VmFsdWU+IFY4TG9jYXRpb246OnJlbG9hZENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFy
Z3MpCiB7CiAgICAgLy8gRklYTUU6IHdlIGlnbm9yZSB0aGUgImZvcmNlZ2V0IiBwYXJhbWV0ZXIu
CiAKQEAgLTI3OSw3ICsyNzksNyBAQAogICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CiB9CiAK
LUNBTExCQUNLX0ZVTkNfREVDTChMb2NhdGlvblJlcGxhY2UpCit2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gVjhMb2NhdGlvbjo6cmVwbGFjZUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3Mp
CiB7CiAgICAgSU5DX1NUQVRTKCJET00uTG9jYXRpb24ucmVwbGFjZSIpOwogICAgIHY4OjpIYW5k
bGU8djg6Ok9iamVjdD4gaG9sZGVyID0gYXJncy5Ib2xkZXIoKTsKQEAgLTMwMCw3ICszMDAsNyBA
QAogICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CiB9CiAKLUNBTExCQUNLX0ZVTkNfREVDTChM
b2NhdGlvbkFzc2lnbikKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOExvY2F0aW9uOjphc3NpZ25D
YWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAgIElOQ19TVEFUUygiRE9N
LkxvY2F0aW9uLmFzc2lnbiIpOwogICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gaG9sZGVyID0g
YXJncy5Ib2xkZXIoKTsKQEAgLTMyMSw3ICszMjEsNyBAQAogICAgIHJldHVybiB2ODo6VW5kZWZp
bmVkKCk7CiB9CiAKLUNBTExCQUNLX0ZVTkNfREVDTChMb2NhdGlvblZhbHVlT2YpCit2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gVjhMb2NhdGlvbjo6dmFsdWVPZkNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1
bWVudHMmIGFyZ3MpCiB7CiAgICAgLy8gSnVzdCByZXR1cm4gdGhlIHRoaXMgb2JqZWN0IHRoZSB3
YXkgdGhlIG5vcm1hbCB2YWx1ZU9mIGZ1bmN0aW9uCiAgICAgLy8gb24gdGhlIE9iamVjdCBwcm90
b3R5cGUgd291bGQuICBUaGUgdmFsdWVPZiBmdW5jdGlvbiBpcyBvbmx5CkBAIC0zMzEsNyArMzMx
LDcgQEAKICAgICByZXR1cm4gYXJncy5UaGlzKCk7CiB9CiAKLUNBTExCQUNLX0ZVTkNfREVDTChM
b2NhdGlvblRvU3RyaW5nKQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4TG9jYXRpb246OnRvU3Ry
aW5nQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBJTkNfU1RBVFMo
IkRPTS5Mb2NhdGlvbi50b1N0cmluZyIpOwogICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gaG9s
ZGVyID0gYXJncy5Ib2xkZXIoKTsKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4
SFRNTFNlbGVjdEVsZW1lbnRDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4SFRNTFNlbGVjdEVsZW1lbnRDdXN0b20uY3BwCShyZXZpc2lvbiA1MjM0
MSkKKysrIFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTFNlbGVjdEVsZW1lbnRDdXN0
b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw2ICszOSw3IEBACiAjaW5jbHVkZSAiVjhDb2xs
ZWN0aW9uLmgiCiAjaW5jbHVkZSAiVjhDdXN0b21CaW5kaW5nLmgiCiAjaW5jbHVkZSAiVjhIVE1M
T3B0aW9uRWxlbWVudC5oIgorI2luY2x1ZGUgIlY4SFRNTFNlbGVjdEVsZW1lbnQuaCIKICNpbmNs
dWRlICJWOE5hbWVkTm9kZXNDb2xsZWN0aW9uLmgiCiAjaW5jbHVkZSAiVjhQcm94eS5oIgogCkBA
IC05MCw3ICs5MSw3IEBACiAgICAgcmV0dXJuIHRvT3B0aW9uc0NvbGxlY3Rpb25TZXR0ZXIoaW5k
ZXgsIHZhbHVlLCBzZWxlY3QpOwogfQogCi1DQUxMQkFDS19GVU5DX0RFQ0woSFRNTFNlbGVjdEVs
ZW1lbnRSZW1vdmUpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhIVE1MU2VsZWN0RWxlbWVudDo6
cmVtb3ZlQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBJTkNfU1RB
VFMoIkRPTS5IVE1MU2VsZWN0RWxlbWVudC5yZW1vdmUiKTsKICAgICBIVE1MU2VsZWN0RWxlbWVu
dCogaW1wID0gVjhET01XcmFwcGVyOjpjb252ZXJ0RE9NV3JhcHBlclRvTm9kZTxIVE1MU2VsZWN0
RWxlbWVudD4oYXJncy5Ib2xkZXIoKSk7CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOFhNTEh0dHBSZXF1ZXN0VXBsb2FkQ3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFhNTEh0dHBSZXF1ZXN0VXBsb2FkQ3VzdG9tLmNwcAkocmV2
aXNpb24gNTIzNDEpCisrKyBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFhNTEh0dHBSZXF1
ZXN0VXBsb2FkQ3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjksNyArMjksNyBAQAogICov
CiAKICNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJYTUxIdHRwUmVxdWVzdFVwbG9hZC5o
IgorI2luY2x1ZGUgIlY4WE1MSHR0cFJlcXVlc3RVcGxvYWQuaCIKIAogI2luY2x1ZGUgIkV4Y2Vw
dGlvbkNvZGUuaCIKICNpbmNsdWRlICJWOEJpbmRpbmcuaCIKQEAgLTM3LDEyICszNywxMyBAQAog
I2luY2x1ZGUgIlY4UHJveHkuaCIKICNpbmNsdWRlICJWOFV0aWxpdGllcy5oIgogI2luY2x1ZGUg
IlhNTEh0dHBSZXF1ZXN0LmgiCisjaW5jbHVkZSAiWE1MSHR0cFJlcXVlc3RVcGxvYWQuaCIKIAog
I2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotQ0FM
TEJBQ0tfRlVOQ19ERUNMKFhNTEh0dHBSZXF1ZXN0VXBsb2FkQWRkRXZlbnRMaXN0ZW5lcikKK3Y4
OjpIYW5kbGU8djg6OlZhbHVlPiBWOFhNTEh0dHBSZXF1ZXN0VXBsb2FkOjphZGRFdmVudExpc3Rl
bmVyQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBJTkNfU1RBVFMo
IkRPTS5YTUxIdHRwUmVxdWVzdFVwbG9hZC5hZGRFdmVudExpc3RlbmVyKCkiKTsKICAgICBYTUxI
dHRwUmVxdWVzdFVwbG9hZCogeG1sSHR0cFJlcXVlc3RVcGxvYWQgPSBWOERPTVdyYXBwZXI6OmNv
bnZlcnRUb05hdGl2ZU9iamVjdDxYTUxIdHRwUmVxdWVzdFVwbG9hZD4oVjhDbGFzc0luZGV4OjpY
TUxIVFRQUkVRVUVTVFVQTE9BRCwgYXJncy5Ib2xkZXIoKSk7CkBAIC02MCw3ICs2MSw3IEBACiAg
ICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKIH0KIAotQ0FMTEJBQ0tfRlVOQ19ERUNMKFhNTEh0
dHBSZXF1ZXN0VXBsb2FkUmVtb3ZlRXZlbnRMaXN0ZW5lcikKK3Y4OjpIYW5kbGU8djg6OlZhbHVl
PiBWOFhNTEh0dHBSZXF1ZXN0VXBsb2FkOjpyZW1vdmVFdmVudExpc3RlbmVyQ2FsbGJhY2soY29u
c3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBJTkNfU1RBVFMoIkRPTS5YTUxIdHRwUmVx
dWVzdFVwbG9hZC5yZW1vdmVFdmVudExpc3RlbmVyKCkiKTsKICAgICBYTUxIdHRwUmVxdWVzdFVw
bG9hZCogeG1sSHR0cFJlcXVlc3RVcGxvYWQgPSBWOERPTVdyYXBwZXI6OmNvbnZlcnRUb05hdGl2
ZU9iamVjdDxYTUxIdHRwUmVxdWVzdFVwbG9hZD4oVjhDbGFzc0luZGV4OjpYTUxIVFRQUkVRVUVT
VFVQTE9BRCwgYXJncy5Ib2xkZXIoKSk7CkBAIC03OSw3ICs4MCw3IEBACiAgICAgcmV0dXJuIHY4
OjpVbmRlZmluZWQoKTsKIH0KIAotQ0FMTEJBQ0tfRlVOQ19ERUNMKFhNTEh0dHBSZXF1ZXN0VXBs
b2FkRGlzcGF0Y2hFdmVudCkKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFhNTEh0dHBSZXF1ZXN0
VXBsb2FkOjpkaXNwYXRjaEV2ZW50Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykK
IHsKICAgICBJTkNfU1RBVFMoIkRPTS5YTUxIdHRwUmVxdWVzdFVwbG9hZC5kaXNwYXRjaEV2ZW50
KCkiKTsKICAgICByZXR1cm4gdGhyb3dFcnJvcihOT1RfU1VQUE9SVEVEX0VSUik7CkluZGV4OiBX
ZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFhQYXRoRXZhbHVhdG9yQ29uc3RydWN0b3IuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4WFBhdGhFdmFsdWF0
b3JDb25zdHJ1Y3Rvci5jcHAJKHJldmlzaW9uIDUyMzQxKQorKysgV2ViQ29yZS9iaW5kaW5ncy92
OC9jdXN0b20vVjhYUGF0aEV2YWx1YXRvckNvbnN0cnVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjksMTQgKzI5LDE1IEBACiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUg
IlhQYXRoRXZhbHVhdG9yLmgiCisjaW5jbHVkZSAiVjhYUGF0aEV2YWx1YXRvci5oIgogCiAjaW5j
bHVkZSAiVjhCaW5kaW5nLmgiCiAjaW5jbHVkZSAiVjhQcm94eS5oIgorI2luY2x1ZGUgIlhQYXRo
RXZhbHVhdG9yLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotQ0FMTEJBQ0tfRlVOQ19ERUNM
KFhQYXRoRXZhbHVhdG9yQ29uc3RydWN0b3IpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhDdXN0
b206OnY4WFBhdGhFdmFsdWF0b3JDb25zdHJ1Y3RvckNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVu
dHMmIGFyZ3MpCiB7CiAgICAgSU5DX1NUQVRTKCJET00uWFBhdGhFdmFsdWF0b3IuQ29uc3RydWN0
b3IiKTsKICAgICByZXR1cm4gVjhQcm94eTo6Y29uc3RydWN0RE9NT2JqZWN0PFY4Q2xhc3NJbmRl
eDo6WFBBVEhFVkFMVUFUT1IsIFhQYXRoRXZhbHVhdG9yPihhcmdzKTsKSW5kZXg6IFdlYkNvcmUv
YmluZGluZ3MvdjgvY3VzdG9tL1Y4V2ViU29ja2V0Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFdlYlNvY2tldEN1c3RvbS5jcHAJKHJldmlzaW9u
IDUyMzQxKQorKysgV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhXZWJTb2NrZXRDdXN0b20u
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiwxOSArMzIsMjAgQEAKIAogI2lmIEVOQUJMRShXRUJf
U09DS0VUUykKIAotI2luY2x1ZGUgIldlYlNvY2tldC5oIgorI2luY2x1ZGUgIlY4V2ViU29ja2V0
LmgiCiAKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVk
ZSAiVjhCaW5kaW5nLmgiCiAjaW5jbHVkZSAiVjhQcm94eS5oIgogI2luY2x1ZGUgIlY4VXRpbGl0
aWVzLmgiCisjaW5jbHVkZSAiV2ViU29ja2V0LmgiCiAjaW5jbHVkZSAiV29ya2VyQ29udGV4dC5o
IgogI2luY2x1ZGUgIldvcmtlckNvbnRleHRFeGVjdXRpb25Qcm94eS5oIgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLUNBTExCQUNLX0ZVTkNfREVDTChXZWJTb2NrZXRBZGRFdmVudExpc3RlbmVy
KQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4V2ViU29ja2V0OjphZGRFdmVudExpc3RlbmVyQ2Fs
bGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBJTkNfU1RBVFMoIkRPTS5X
ZWJTb2NrZXQuYWRkRXZlbnRMaXN0ZW5lcigpIik7CiAgICAgV2ViU29ja2V0KiB3ZWJTb2NrZXQg
PSBWOERPTVdyYXBwZXI6OmNvbnZlcnRUb05hdGl2ZU9iamVjdDxXZWJTb2NrZXQ+KFY4Q2xhc3NJ
bmRleDo6V0VCU09DS0VULCBhcmdzLkhvbGRlcigpKTsKQEAgLTYwLDcgKzYxLDcgQEAKICAgICBy
ZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwogfQogCi1DQUxMQkFDS19GVU5DX0RFQ0woV2ViU29ja2V0
UmVtb3ZlRXZlbnRMaXN0ZW5lcikKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFdlYlNvY2tldDo6
cmVtb3ZlRXZlbnRMaXN0ZW5lckNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7
CiAgICAgSU5DX1NUQVRTKCJET00uV2ViU29ja2V0LnJlbW92ZUV2ZW50TGlzdGVuZXIoKSIpOwog
ICAgIFdlYlNvY2tldCogd2ViU29ja2V0ID0gVjhET01XcmFwcGVyOjpjb252ZXJ0VG9OYXRpdmVP
YmplY3Q8V2ViU29ja2V0PihWOENsYXNzSW5kZXg6OldFQlNPQ0tFVCwgYXJncy5Ib2xkZXIoKSk7
CkBAIC03NSw3ICs3Niw3IEBACiAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKIH0KIAotQ0FM
TEJBQ0tfRlVOQ19ERUNMKFdlYlNvY2tldENvbnN0cnVjdG9yKQordjg6OkhhbmRsZTx2ODo6VmFs
dWU+IFY4Q3VzdG9tOjp2OFdlYlNvY2tldENvbnN0cnVjdG9yQ2FsbGJhY2soY29uc3Qgdjg6OkFy
Z3VtZW50cyYgYXJncykKIHsKICAgICBJTkNfU1RBVFMoIkRPTS5XZWJTb2NrZXQuQ29uc3RydWN0
b3IiKTsKIApAQCAtMTI4LDcgKzEyOSw3IEBACiAgICAgcmV0dXJuIGFyZ3MuSG9sZGVyKCk7CiB9
CiAKLUNBTExCQUNLX0ZVTkNfREVDTChXZWJTb2NrZXRTZW5kKQordjg6OkhhbmRsZTx2ODo6VmFs
dWU+IFY4V2ViU29ja2V0OjpzZW5kQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykK
IHsKICAgICBJTkNfU1RBVFMoIkRPTS5XZWJTb2NrZXQuc2VuZCgpIik7CiAgICAgV2ViU29ja2V0
KiB3ZWJTb2NrZXQgPSBWOERPTVdyYXBwZXI6OmNvbnZlcnRUb05hdGl2ZU9iamVjdDxXZWJTb2Nr
ZXQ+KFY4Q2xhc3NJbmRleDo6V0VCU09DS0VULCBhcmdzLkhvbGRlcigpKTsKQEAgLTE0Niw3ICsx
NDcsNyBAQAogICAgIHJldHVybiB2OEJvb2xlYW4ocmV0KTsKIH0KIAotQ0FMTEJBQ0tfRlVOQ19E
RUNMKFdlYlNvY2tldENsb3NlKQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4V2ViU29ja2V0Ojpj
bG9zZUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgSU5DX1NUQVRT
KCJET00uV2ViU29ja2V0LmNsb3NlKCkiKTsKICAgICBXZWJTb2NrZXQqIHdlYlNvY2tldCA9IFY4
RE9NV3JhcHBlcjo6Y29udmVydFRvTmF0aXZlT2JqZWN0PFdlYlNvY2tldD4oVjhDbGFzc0luZGV4
OjpXRUJTT0NLRVQsIGFyZ3MuSG9sZGVyKCkpOwpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy92OC9j
dXN0b20vVjhOb3RpZmljYXRpb25DZW50ZXJDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Tm90aWZpY2F0aW9uQ2VudGVyQ3VzdG9tLmNwcAkocmV2
aXNpb24gNTIzNDEpCisrKyBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE5vdGlmaWNhdGlv
bkNlbnRlckN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNs
dWRlICJjb25maWcuaCIKIAogI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQorI2luY2x1ZGUgIlY4
Tm90aWZpY2F0aW9uQ2VudGVyLmgiCiAKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2lu
Y2x1ZGUgIk5vdGlmaWNhdGlvbi5oIgpAQCAtMzksNiArNDAsNyBAQAogI2luY2x1ZGUgIlY4Q3Vz
dG9tQmluZGluZy5oIgogI2luY2x1ZGUgIlY4Q3VzdG9tRXZlbnRMaXN0ZW5lci5oIgogI2luY2x1
ZGUgIlY4Q3VzdG9tVm9pZENhbGxiYWNrLmgiCisjaW5jbHVkZSAiVjhOb3RpZmljYXRpb24uaCIK
ICNpbmNsdWRlICJWOFByb3h5LmgiCiAjaW5jbHVkZSAiVjhVdGlsaXRpZXMuaCIKICNpbmNsdWRl
ICJXb3JrZXJDb250ZXh0LmgiCkBAIC00Niw3ICs0OCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotQ0FMTEJBQ0tfRlVOQ19ERUNMKE5vdGlmaWNhdGlvbkFkZEV2ZW50TGlzdGVuZXIpCit2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhOb3RpZmljYXRpb246OmFkZEV2ZW50TGlzdGVuZXJDYWxs
YmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAgIElOQ19TVEFUUygiRE9NLk5v
dGlmaWNhdGlvbi5hZGRFdmVudExpc3RlbmVyKCkiKTsKICAgICBOb3RpZmljYXRpb24qIG5vdGlm
aWNhdGlvbiA9IFY4RE9NV3JhcHBlcjo6Y29udmVydFRvTmF0aXZlT2JqZWN0PE5vdGlmaWNhdGlv
bj4oVjhDbGFzc0luZGV4OjpOT1RJRklDQVRJT04sIGFyZ3MuSG9sZGVyKCkpOwpAQCAtNjIsNyAr
NjQsNyBAQAogICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CiB9CiAKLUNBTExCQUNLX0ZVTkNf
REVDTChOb3RpZmljYXRpb25SZW1vdmVFdmVudExpc3RlbmVyKQordjg6OkhhbmRsZTx2ODo6VmFs
dWU+IFY4Tm90aWZpY2F0aW9uOjpyZW1vdmVFdmVudExpc3RlbmVyQ2FsbGJhY2soY29uc3Qgdjg6
OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBJTkNfU1RBVFMoIkRPTS5Ob3RpZmljYXRpb24ucmVt
b3ZlRXZlbnRMaXN0ZW5lcigpIik7CiAgICAgTm90aWZpY2F0aW9uKiBub3RpZmljYXRpb24gPSBW
OERPTVdyYXBwZXI6OmNvbnZlcnRUb05hdGl2ZU9iamVjdDxOb3RpZmljYXRpb24+KFY4Q2xhc3NJ
bmRleDo6Tk9USUZJQ0FUSU9OLCBhcmdzLkhvbGRlcigpKTsKQEAgLTc4LDcgKzgwLDcgQEAKICAg
ICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwogfQogCi1DQUxMQkFDS19GVU5DX0RFQ0woTm90aWZp
Y2F0aW9uQ2VudGVyQ3JlYXRlSFRNTE5vdGlmaWNhdGlvbikKK3Y4OjpIYW5kbGU8djg6OlZhbHVl
PiBWOE5vdGlmaWNhdGlvbkNlbnRlcjo6Y3JlYXRlSFRNTE5vdGlmaWNhdGlvbkNhbGxiYWNrKGNv
bnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgSU5DX1NUQVRTKEwiRE9NLk5vdGlmaWNh
dGlvbkNlbnRlci5DcmVhdGVIVE1MTm90aWZpY2F0aW9uKCkiKTsKICAgICBOb3RpZmljYXRpb25D
ZW50ZXIqIG5vdGlmaWNhdGlvbkNlbnRlciA9IFY4RE9NV3JhcHBlcjo6Y29udmVydFRvTmF0aXZl
T2JqZWN0PE5vdGlmaWNhdGlvbkNlbnRlcj4oVjhDbGFzc0luZGV4OjpOT1RJRklDQVRJT05DRU5U
RVIsIGFyZ3MuSG9sZGVyKCkpOwpAQCAtOTYsNyArOTgsNyBAQAogICAgIHJldHVybiBWOERPTVdy
YXBwZXI6OmNvbnZlcnRUb1Y4T2JqZWN0KFY4Q2xhc3NJbmRleDo6Tk9USUZJQ0FUSU9OLCBub3Rp
ZmljYXRpb24uZ2V0KCkpOwogfQogCi1DQUxMQkFDS19GVU5DX0RFQ0woTm90aWZpY2F0aW9uQ2Vu
dGVyQ3JlYXRlTm90aWZpY2F0aW9uKQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4Tm90aWZpY2F0
aW9uQ2VudGVyOjpjcmVhdGVOb3RpZmljYXRpb25DYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRz
JiBhcmdzKQogewogICAgIElOQ19TVEFUUyhMIkRPTS5Ob3RpZmljYXRpb25DZW50ZXIuQ3JlYXRl
Tm90aWZpY2F0aW9uKCkiKTsKICAgICBOb3RpZmljYXRpb25DZW50ZXIqIG5vdGlmaWNhdGlvbkNl
bnRlciA9IFY4RE9NV3JhcHBlcjo6Y29udmVydFRvTmF0aXZlT2JqZWN0PE5vdGlmaWNhdGlvbkNl
bnRlcj4oVjhDbGFzc0luZGV4OjpOT1RJRklDQVRJT05DRU5URVIsIGFyZ3MuSG9sZGVyKCkpOwpA
QCAtMTEzLDcgKzExNSw3IEBACiAgICAgcmV0dXJuIFY4RE9NV3JhcHBlcjo6Y29udmVydFRvVjhP
YmplY3QoVjhDbGFzc0luZGV4OjpOT1RJRklDQVRJT04sIG5vdGlmaWNhdGlvbi5nZXQoKSk7CiB9
CiAKLUNBTExCQUNLX0ZVTkNfREVDTChOb3RpZmljYXRpb25DZW50ZXJSZXF1ZXN0UGVybWlzc2lv
bikKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOE5vdGlmaWNhdGlvbkNlbnRlcjo6cmVxdWVzdFBl
cm1pc3Npb25DYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAgIElOQ19T
VEFUUyhMIkRPTS5Ob3RpZmljYXRpb25DZW50ZXIuUmVxdWVzdFBlcm1pc3Npb24oKSIpOwogICAg
IE5vdGlmaWNhdGlvbkNlbnRlciogbm90aWZpY2F0aW9uQ2VudGVyID0gVjhET01XcmFwcGVyOjpj
b252ZXJ0VG9OYXRpdmVPYmplY3Q8Tm90aWZpY2F0aW9uQ2VudGVyPihWOENsYXNzSW5kZXg6Ok5P
VElGSUNBVElPTkNFTlRFUiwgYXJncy5Ib2xkZXIoKSk7CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdz
L3Y4L2N1c3RvbS9WOE1lc3NhZ2VQb3J0Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE1lc3NhZ2VQb3J0Q3VzdG9tLmNwcAkocmV2aXNpb24gNTIz
NDEpCisrKyBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE1lc3NhZ2VQb3J0Q3VzdG9tLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNDMsNyArNDMsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLUNBTExCQUNLX0ZVTkNfREVDTChNZXNzYWdlUG9ydEFkZEV2ZW50TGlzdGVuZXIpCit2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gVjhNZXNzYWdlUG9ydDo6YWRkRXZlbnRMaXN0ZW5lckNhbGxiYWNr
KGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgSU5DX1NUQVRTKCJET00uTWVzc2Fn
ZVBvcnQuYWRkRXZlbnRMaXN0ZW5lcigpIik7CiAgICAgTWVzc2FnZVBvcnQqIG1lc3NhZ2VQb3J0
ID0gVjhET01XcmFwcGVyOjpjb252ZXJ0VG9OYXRpdmVPYmplY3Q8TWVzc2FnZVBvcnQ+KFY4Q2xh
c3NJbmRleDo6TUVTU0FHRVBPUlQsIGFyZ3MuSG9sZGVyKCkpOwpAQCAtNTgsNyArNTgsNyBAQAog
ICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CiB9CiAKLUNBTExCQUNLX0ZVTkNfREVDTChNZXNz
YWdlUG9ydFJlbW92ZUV2ZW50TGlzdGVuZXIpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhNZXNz
YWdlUG9ydDo6cmVtb3ZlRXZlbnRMaXN0ZW5lckNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMm
IGFyZ3MpCiB7CiAgICAgSU5DX1NUQVRTKCJET00uTWVzc2FnZVBvcnQucmVtb3ZlRXZlbnRMaXN0
ZW5lcigpIik7CiAgICAgTWVzc2FnZVBvcnQqIG1lc3NhZ2VQb3J0ID0gVjhET01XcmFwcGVyOjpj
b252ZXJ0VG9OYXRpdmVPYmplY3Q8TWVzc2FnZVBvcnQ+KFY4Q2xhc3NJbmRleDo6TUVTU0FHRVBP
UlQsIGFyZ3MuSG9sZGVyKCkpOwpAQCAtNzQsNyArNzQsNyBAQAogICAgIHJldHVybiB2ODo6VW5k
ZWZpbmVkKCk7CiB9CiAKLUNBTExCQUNLX0ZVTkNfREVDTChNZXNzYWdlUG9ydFBvc3RNZXNzYWdl
KQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4TWVzc2FnZVBvcnQ6OnBvc3RNZXNzYWdlQ2FsbGJh
Y2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBJTkNfU1RBVFMoIkRPTS5NZXNz
YWdlUG9ydC5wb3N0TWVzc2FnZSIpOwogICAgIE1lc3NhZ2VQb3J0KiBtZXNzYWdlUG9ydCA9IFY4
RE9NV3JhcHBlcjo6Y29udmVydFRvTmF0aXZlT2JqZWN0PE1lc3NhZ2VQb3J0PihWOENsYXNzSW5k
ZXg6Ok1FU1NBR0VQT1JULCBhcmdzLkhvbGRlcigpKTsKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3Mv
djgvY3VzdG9tL1Y4WFNMVFByb2Nlc3NvckN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9iaW5kaW5ncy92OC9jdXN0b20vVjhYU0xUUHJvY2Vzc29yQ3VzdG9tLmNwcAkocmV2aXNpb24g
NTIzNDEpCisrKyBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFhTTFRQcm9jZXNzb3JDdXN0
b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw3ICsyOSw3IEBACiAgKi8KIAogI2luY2x1ZGUg
ImNvbmZpZy5oIgotI2luY2x1ZGUgIlhTTFRQcm9jZXNzb3IuaCIKKyNpbmNsdWRlICJWOFhTTFRQ
cm9jZXNzb3IuaCIKIAogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRG
cmFnbWVudC5oIgpAQCAtNDAsMTkgKzQwLDIwIEBACiAjaW5jbHVkZSAiVjhEb2N1bWVudC5oIgog
I2luY2x1ZGUgIlY4Tm9kZS5oIgogI2luY2x1ZGUgIlY4UHJveHkuaCIKKyNpbmNsdWRlICJYU0xU
UHJvY2Vzc29yLmgiCiAKICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotQ0FMTEJBQ0tfRlVOQ19ERUNMKFhTTFRQcm9jZXNzb3JDb25zdHJ1Y3RvcikKK3Y4
OjpIYW5kbGU8djg6OlZhbHVlPiBWOEN1c3RvbTo6djhYU0xUUHJvY2Vzc29yQ29uc3RydWN0b3JD
YWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAgIElOQ19TVEFUUygiRE9N
LlhTTFRQcm9jZXNzb3IuQ29uc3RydWN0b3IiKTsKICAgICByZXR1cm4gVjhQcm94eTo6Y29uc3Ry
dWN0RE9NT2JqZWN0PFY4Q2xhc3NJbmRleDo6WFNMVFBST0NFU1NPUiwgWFNMVFByb2Nlc3Nvcj4o
YXJncyk7CiB9CiAKIAotQ0FMTEJBQ0tfRlVOQ19ERUNMKFhTTFRQcm9jZXNzb3JJbXBvcnRTdHls
ZXNoZWV0KQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4WFNMVFByb2Nlc3Nvcjo6aW1wb3J0U3R5
bGVzaGVldENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgSU5DX1NU
QVRTKCJET00uWFNMVFByb2Nlc3Nvci5pbXBvcnRTdHlsZXNoZWV0Iik7CiAgICAgaWYgKCFWOE5v
ZGU6Okhhc0luc3RhbmNlKGFyZ3NbMF0pKQpAQCAtNjYsNyArNjcsNyBAQAogfQogCiAKLUNBTExC
QUNLX0ZVTkNfREVDTChYU0xUUHJvY2Vzc29yVHJhbnNmb3JtVG9GcmFnbWVudCkKK3Y4OjpIYW5k
bGU8djg6OlZhbHVlPiBWOFhTTFRQcm9jZXNzb3I6OnRyYW5zZm9ybVRvRnJhZ21lbnRDYWxsYmFj
ayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAgIElOQ19TVEFUUygiRE9NLlhTTFRQ
cm9jZXNzb3IudHJhbnNmb3JtVG9GcmFnbWVudCIpOwogICAgIGlmICghVjhOb2RlOjpIYXNJbnN0
YW5jZShhcmdzWzBdKSB8fCAhVjhEb2N1bWVudDo6SGFzSW5zdGFuY2UoYXJnc1sxXSkpCkBAIC04
MSw3ICs4Miw3IEBACiB9CiAKIAotQ0FMTEJBQ0tfRlVOQ19ERUNMKFhTTFRQcm9jZXNzb3JUcmFu
c2Zvcm1Ub0RvY3VtZW50KQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4WFNMVFByb2Nlc3Nvcjo6
dHJhbnNmb3JtVG9Eb2N1bWVudENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7
CiAgICAgSU5DX1NUQVRTKCJET00uWFNMVFByb2Nlc3Nvci50cmFuc2Zvcm1Ub0RvY3VtZW50Iik7
CiAKQEAgLTEwMiw3ICsxMDMsNyBAQAogfQogCiAKLUNBTExCQUNLX0ZVTkNfREVDTChYU0xUUHJv
Y2Vzc29yU2V0UGFyYW1ldGVyKQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4WFNMVFByb2Nlc3Nv
cjo6c2V0UGFyYW1ldGVyQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAg
ICBJTkNfU1RBVFMoIkRPTS5YU0xUUHJvY2Vzc29yLnNldFBhcmFtZXRlciIpOwogICAgIGlmIChp
c1VuZGVmaW5lZE9yTnVsbChhcmdzWzFdKSB8fCBpc1VuZGVmaW5lZE9yTnVsbChhcmdzWzJdKSkK
QEAgLTExOSw3ICsxMjAsNyBAQAogfQogCiAKLUNBTExCQUNLX0ZVTkNfREVDTChYU0xUUHJvY2Vz
c29yR2V0UGFyYW1ldGVyKQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4WFNMVFByb2Nlc3Nvcjo6
Z2V0UGFyYW1ldGVyQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBJ
TkNfU1RBVFMoIkRPTS5YU0xUUHJvY2Vzc29yLmdldFBhcmFtZXRlciIpOwogICAgIGlmIChpc1Vu
ZGVmaW5lZE9yTnVsbChhcmdzWzFdKSkKQEAgLTEzNiw3ICsxMzcsNyBAQAogICAgIHJldHVybiB2
OFN0cmluZyhyZXN1bHQpOwogfQogCi1DQUxMQkFDS19GVU5DX0RFQ0woWFNMVFByb2Nlc3NvclJl
bW92ZVBhcmFtZXRlcikKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFhTTFRQcm9jZXNzb3I6OnJl
bW92ZVBhcmFtZXRlckNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAg
SU5DX1NUQVRTKCJET00uWFNMVFByb2Nlc3Nvci5yZW1vdmVQYXJhbWV0ZXIiKTsKICAgICBpZiAo
aXNVbmRlZmluZWRPck51bGwoYXJnc1sxXSkpCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1
c3RvbS9WOE5vZGVGaWx0ZXJDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4Tm9kZUZpbHRlckN1c3RvbS5jcHAJKHJldmlzaW9uIDUyMzQxKQorKysg
V2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhOb2RlRmlsdGVyQ3VzdG9tLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjksOSArMjksMTAgQEAKICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCi0j
aW5jbHVkZSAiTm9kZUZpbHRlci5oIgorI2luY2x1ZGUgIlY4Tm9kZUZpbHRlci5oIgogCiAjaW5j
bHVkZSAiRXhjZXB0aW9uQ29kZS5oIgorI2luY2x1ZGUgIk5vZGVGaWx0ZXIuaCIKIAogI2luY2x1
ZGUgIlY4QmluZGluZy5oIgogI2luY2x1ZGUgIlY4Q3VzdG9tQmluZGluZy5oIgpAQCAtMzksNyAr
NDAsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUNBTExCQUNLX0ZVTkNfREVDTChOb2Rl
RmlsdGVyQWNjZXB0Tm9kZSkKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOE5vZGVGaWx0ZXI6OmFj
Y2VwdE5vZGVDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAgIElOQ19T
VEFUUygiRE9NLk5vZGVGaWx0ZXIuYWNjZXB0Tm9kZSgpIik7CiAgICAgcmV0dXJuIHRocm93RXJy
b3IoTk9UX1NVUFBPUlRFRF9FUlIpOwpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20v
VjhIVE1MUGx1Z0luRWxlbWVudEN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5k
aW5ncy92OC9jdXN0b20vVjhIVE1MUGx1Z0luRWxlbWVudEN1c3RvbS5jcHAJKHJldmlzaW9uIDUy
MzQxKQorKysgV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MUGx1Z0luRWxlbWVudEN1
c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDggKzI5LDkgQEAKICovCiAKICNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJWOEhUTUxQbHVnSW5FbGVtZW50Q3VzdG9tLmgiCisKICNp
bmNsdWRlICJIVE1MUGx1Z0luRWxlbWVudC5oIgotCiAjaW5jbHVkZSAiU2NyaXB0SW5zdGFuY2Uu
aCIKIAogI2luY2x1ZGUgIlY4QmluZGluZy5oIgpAQCAtNzAsNyArNzEsNyBAQAogICAgIHJldHVy
biBucE9iamVjdFNldE5hbWVkUHJvcGVydHkoaW5zdGFuY2UsIG5hbWUsIHZhbHVlKTsKIH0KIAot
Q0FMTEJBQ0tfRlVOQ19ERUNMKEhUTUxQbHVnSW5FbGVtZW50KQordjg6OkhhbmRsZTx2ODo6VmFs
dWU+IFY4SFRNTFBsdWdJbkVsZW1lbnQ6OmRlZmF1bHRDYWxsYmFjayhjb25zdCB2ODo6QXJndW1l
bnRzJiBhcmdzKQogewogICAgIElOQ19TVEFUUygiRE9NLkhUTUxQbHVnaW5FbGVtZW50KCkiKTsK
ICAgICByZXR1cm4gbnBPYmplY3RJbnZva2VEZWZhdWx0SGFuZGxlcihhcmdzKTsKSW5kZXg6IFdl
YkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4QWJzdHJhY3RXb3JrZXJDdXN0b20uY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4QWJzdHJhY3RXb3JrZXJDdXN0
b20uY3BwCShyZXZpc2lvbiA1MjM0MSkKKysrIFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4
QWJzdHJhY3RXb3JrZXJDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw5ICszMSw5IEBA
CiAjaW5jbHVkZSAiY29uZmlnLmgiCiAKICNpZiBFTkFCTEUoV09SS0VSUykKKyNpbmNsdWRlICJW
OEFic3RyYWN0V29ya2VyLmgiCiAKICNpbmNsdWRlICJBYnN0cmFjdFdvcmtlci5oIgotCiAjaW5j
bHVkZSAiRXhjZXB0aW9uQ29kZS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQu
aCIKICNpbmNsdWRlICJWOEJpbmRpbmcuaCIKQEAgLTQ0LDcgKzQ0LDcgQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi1DQUxMQkFDS19GVU5DX0RFQ0woQWJzdHJhY3RXb3JrZXJBZGRFdmVudExp
c3RlbmVyKQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4QWJzdHJhY3RXb3JrZXI6OmFkZEV2ZW50
TGlzdGVuZXJDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAgIElOQ19T
VEFUUyhMIkRPTS5BYnN0cmFjdFdvcmtlci5hZGRFdmVudExpc3RlbmVyKCkiKTsKICAgICBBYnN0
cmFjdFdvcmtlciogd29ya2VyID0gVjhET01XcmFwcGVyOjpjb252ZXJ0VG9OYXRpdmVPYmplY3Q8
QWJzdHJhY3RXb3JrZXI+KFY4Q2xhc3NJbmRleDo6QUJTVFJBQ1RXT1JLRVIsIGFyZ3MuSG9sZGVy
KCkpOwpAQCAtNjAsNyArNjAsNyBAQAogICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CiB9CiAK
LUNBTExCQUNLX0ZVTkNfREVDTChBYnN0cmFjdFdvcmtlclJlbW92ZUV2ZW50TGlzdGVuZXIpCit2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhBYnN0cmFjdFdvcmtlcjo6cmVtb3ZlRXZlbnRMaXN0ZW5l
ckNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgSU5DX1NUQVRTKEwi
RE9NLkFic3RyYWN0V29ya2VyLnJlbW92ZUV2ZW50TGlzdGVuZXIoKSIpOwogICAgIEFic3RyYWN0
V29ya2VyKiB3b3JrZXIgPSBWOERPTVdyYXBwZXI6OmNvbnZlcnRUb05hdGl2ZU9iamVjdDxBYnN0
cmFjdFdvcmtlcj4oVjhDbGFzc0luZGV4OjpBQlNUUkFDVFdPUktFUiwgYXJncy5Ib2xkZXIoKSk7
CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFdlYktpdENTU01hdHJpeENvbnN0
cnVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFdl
YktpdENTU01hdHJpeENvbnN0cnVjdG9yLmNwcAkocmV2aXNpb24gNTIzNDEpCisrKyBXZWJDb3Jl
L2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFdlYktpdENTU01hdHJpeENvbnN0cnVjdG9yLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNDQsNyArNDQsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUNB
TExCQUNLX0ZVTkNfREVDTChXZWJLaXRDU1NNYXRyaXhDb25zdHJ1Y3RvcikKK3Y4OjpIYW5kbGU8
djg6OlZhbHVlPiBWOEN1c3RvbTo6djhXZWJLaXRDU1NNYXRyaXhDb25zdHJ1Y3RvckNhbGxiYWNr
KGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgSU5DX1NUQVRTKCJET00uV2ViS2l0
Q1NTTWF0cml4LkNvbnN0cnVjdG9yIik7CiAKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4U1ZHRWxlbWVudEluc3RhbmNlQ3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFNWR0VsZW1lbnRJbnN0YW5jZUN1c3RvbS5jcHAJKHJldmlz
aW9uIDUyMzQxKQorKysgV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhTVkdFbGVtZW50SW5z
dGFuY2VDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSwxMSArMzEsMTEgQEAKICNpbmNs
dWRlIDxjb25maWcuaD4KIAogI2lmIEVOQUJMRShTVkcpCisjaW5jbHVkZSAiVjhTVkdFbGVtZW50
SW5zdGFuY2UuaCIKIAorI2luY2x1ZGUgIkV2ZW50TGlzdGVuZXIuaCIKICNpbmNsdWRlICJTVkdF
bGVtZW50SW5zdGFuY2UuaCIKIAotI2luY2x1ZGUgIkV2ZW50TGlzdGVuZXIuaCIKLQogI2luY2x1
ZGUgIlY4QmluZGluZy5oIgogI2luY2x1ZGUgIlY4Q3VzdG9tQmluZGluZy5oIgogI2luY2x1ZGUg
IlY4Q3VzdG9tRXZlbnRMaXN0ZW5lci5oIgpAQCAtNDQsNyArNDQsNyBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLUNBTExCQUNLX0ZVTkNfREVDTChTVkdFbGVtZW50SW5zdGFuY2VBZGRFdmVu
dExpc3RlbmVyKQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4U1ZHRWxlbWVudEluc3RhbmNlOjph
ZGRFdmVudExpc3RlbmVyQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAg
ICBJTkNfU1RBVFMoIkRPTS5TVkdFbGVtZW50SW5zdGFuY2UuQWRkRXZlbnRMaXN0ZW5lcigpIik7
CiAgICAgU1ZHRWxlbWVudEluc3RhbmNlKiBpbnN0YW5jZSA9IFY4RE9NV3JhcHBlcjo6Y29udmVy
dERPTVdyYXBwZXJUb05hdGl2ZTxTVkdFbGVtZW50SW5zdGFuY2U+KGFyZ3MuSG9sZGVyKCkpOwpA
QCAtNjAsNyArNjAsNyBAQAogICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CiB9CiAKLUNBTExC
QUNLX0ZVTkNfREVDTChTVkdFbGVtZW50SW5zdGFuY2VSZW1vdmVFdmVudExpc3RlbmVyKQordjg6
OkhhbmRsZTx2ODo6VmFsdWU+IFY4U1ZHRWxlbWVudEluc3RhbmNlOjpyZW1vdmVFdmVudExpc3Rl
bmVyQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBJTkNfU1RBVFMo
IkRPTS5TVkdFbGVtZW50SW5zdGFuY2UuUmVtb3ZlRXZlbnRMaXN0ZW5lcigpIik7CiAgICAgU1ZH
RWxlbWVudEluc3RhbmNlKiBpbnN0YW5jZSA9IFY4RE9NV3JhcHBlcjo6Y29udmVydERPTVdyYXBw
ZXJUb05hdGl2ZTxTVkdFbGVtZW50SW5zdGFuY2U+KGFyZ3MuSG9sZGVyKCkpOwpJbmRleDogV2Vi
Q29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIaXN0b3J5Q3VzdG9tLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhpc3RvcnlDdXN0b20uY3BwCShyZXZpc2lv
biA1MjM0MSkKKysrIFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SGlzdG9yeUN1c3RvbS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDE2ICsyOSwxOCBAQAogICovCiAKICNpbmNsdWRlICJj
b25maWcuaCIKLSNpbmNsdWRlICJIaXN0b3J5LmgiCisjaW5jbHVkZSAiVjhIaXN0b3J5LmgiCiAK
ICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCisjaW5jbHVkZSAiSGlzdG9yeS5oIgogI2luY2x1
ZGUgIlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgogI2luY2x1ZGUgIlY4QmluZGluZy5oIgogI2lu
Y2x1ZGUgIlY4Q3VzdG9tQmluZGluZy5oIgogI2luY2x1ZGUgIlY4UHJveHkuaCIKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewotQ0FMTEJBQ0tfRlVOQ19ERUNMKEhpc3RvcnlQdXNoU3RhdGUpCisKK3Y4
OjpIYW5kbGU8djg6OlZhbHVlPiBWOEhpc3Rvcnk6OnB1c2hTdGF0ZUNhbGxiYWNrKGNvbnN0IHY4
OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4g
aGlzdG9yeVN0YXRlID0gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUodG9XZWJDb3JlU3Ry
aW5nKGFyZ3NbMF0pKTsKIApAQCAtNTksNyArNjEsNyBAQAogICAgIHJldHVybiB0aHJvd0Vycm9y
KGVjKTsKIH0KIAotQ0FMTEJBQ0tfRlVOQ19ERUNMKEhpc3RvcnlSZXBsYWNlU3RhdGUpCit2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gVjhIaXN0b3J5OjpyZXBsYWNlU3RhdGVDYWxsYmFjayhjb25zdCB2
ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAgIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+
IGhpc3RvcnlTdGF0ZSA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKHRvV2ViQ29yZVN0
cmluZyhhcmdzWzBdKSk7CiAKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q29u
c29sZUN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20v
VjhDb25zb2xlQ3VzdG9tLmNwcAkocmV2aXNpb24gNTIzNDEpCisrKyBXZWJDb3JlL2JpbmRpbmdz
L3Y4L2N1c3RvbS9WOENvbnNvbGVDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsy
OSw3IEBACiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlY4Q29uc29sZS5o
IgogCiAjaW5jbHVkZSAiVjhCaW5kaW5nLmgiCiAjaW5jbHVkZSAiVjhDdXN0b21CaW5kaW5nLmgi
CkBAIC0zNyw3ICszOCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotQ0FMTEJBQ0tfRlVO
Q19ERUNMKENvbnNvbGVQcm9maWxlKQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4Q29uc29sZTo6
cHJvZmlsZUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgSU5DX1NU
QVRTKCJjb25zb2xlLnByb2ZpbGUoKSIpOwogICAgIHY4OjpIYW5kbGVTY29wZSBzY29wZTsKQEAg
LTQ2LDcgKzQ3LDcgQEAKICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwogfQogCi1DQUxMQkFD
S19GVU5DX0RFQ0woQ29uc29sZVByb2ZpbGVFbmQpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhD
b25zb2xlOjpwcm9maWxlRW5kQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsK
ICAgICBJTkNfU1RBVFMoImNvbnNvbGUucHJvZmlsZUVuZCgpIik7CiAgICAgdjg6OlY4OjpQYXVz
ZVByb2ZpbGVyKCk7CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEdlb2xvY2F0
aW9uQ3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9W
OEdlb2xvY2F0aW9uQ3VzdG9tLmNwcAkocmV2aXNpb24gNTIzNDEpCisrKyBXZWJDb3JlL2JpbmRp
bmdzL3Y4L2N1c3RvbS9WOEdlb2xvY2F0aW9uQ3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MjQsNiArMjQsOCBAQAogICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJWOEdl
b2xvY2F0aW9uLmgiCisKICNpbmNsdWRlICJHZW9sb2NhdGlvbi5oIgogCiAjaW5jbHVkZSAiVjhC
aW5kaW5nLmgiCkBAIC0xNjUsNyArMTY3LDcgQEAKICAgICByZXR1cm4gb3B0aW9ucy5yZWxlYXNl
KCk7CiB9CiAKLUNBTExCQUNLX0ZVTkNfREVDTChHZW9sb2NhdGlvbkdldEN1cnJlbnRQb3NpdGlv
bikKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEdlb2xvY2F0aW9uOjpnZXRDdXJyZW50UG9zaXRp
b25DYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAgIElOQ19TVEFUUygi
RE9NLkdlb2xvY2F0aW9uLmdldEN1cnJlbnRQb3NpdGlvbigpIik7CiAKQEAgLTE5MCw3ICsxOTIs
NyBAQAogICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CiB9CiAKLUNBTExCQUNLX0ZVTkNfREVD
TChHZW9sb2NhdGlvbldhdGNoUG9zaXRpb24pCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhHZW9s
b2NhdGlvbjo6d2F0Y2hQb3NpdGlvbkNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3Mp
CiB7CiAgICAgSU5DX1NUQVRTKCJET00uR2VvbG9jYXRpb24ud2F0Y2hQb3NpdGlvbigpIik7CiAK
SW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SW5zcGVjdG9yRnJvbnRlbmRIb3N0
Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOElu
c3BlY3RvckZyb250ZW5kSG9zdEN1c3RvbS5jcHAJKHJldmlzaW9uIDUyMzQxKQorKysgV2ViQ29y
ZS9iaW5kaW5ncy92OC9jdXN0b20vVjhJbnNwZWN0b3JGcm9udGVuZEhvc3RDdXN0b20uY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yOSwxMCArMjksMTEgQEAKICAqLwogCiAjaW5jbHVkZSAiY29uZmln
LmgiCi0jaW5jbHVkZSAiSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmgiCisjaW5jbHVkZSAiVjhJbnNw
ZWN0b3JGcm9udGVuZEhvc3QuaCIKIAogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKICNpbmNs
dWRlICJJbnNwZWN0b3JDb250cm9sbGVyLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yRnJvbnRlbmRI
b3N0LmgiCiAjaW5jbHVkZSAiTm9kZS5oIgogI2luY2x1ZGUgIlJhbmdlLmgiCiAjaW5jbHVkZSAi
UGFnZS5oIgpAQCAtNDUsNyArNDYsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUNBTExC
QUNLX0ZVTkNfREVDTChJbnNwZWN0b3JGcm9udGVuZEhvc3RTZWFyY2gpCit2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gVjhJbnNwZWN0b3JGcm9udGVuZEhvc3Q6OnNlYXJjaENhbGxiYWNrKGNvbnN0IHY4
OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgSU5DX1NUQVRTKCJJbnNwZWN0b3JGcm9udGVuZEhv
c3Quc2VhcmNoKCkiKTsKIApAQCAtODQsNyArODUsNyBAQAogICAgIHJldHVybiByZXN1bHQ7CiB9
CiAKLUNBTExCQUNLX0ZVTkNfREVDTChJbnNwZWN0b3JGcm9udGVuZEhvc3RTaG93Q29udGV4dE1l
bnUpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhJbnNwZWN0b3JGcm9udGVuZEhvc3Q6OnNob3dD
b250ZXh0TWVudUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgcmV0
dXJuIHY4OjpVbmRlZmluZWQoKTsKIH0KSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9t
L1Y4WE1MU2VyaWFsaXplckNvbnN0cnVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Jp
bmRpbmdzL3Y4L2N1c3RvbS9WOFhNTFNlcmlhbGl6ZXJDb25zdHJ1Y3Rvci5jcHAJKHJldmlzaW9u
IDUyMzQxKQorKysgV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhYTUxTZXJpYWxpemVyQ29u
c3RydWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOSwxNCArMjksMTUgQEAKICAqLwogCiAj
aW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiWE1MU2VyaWFsaXplci5oIgorI2luY2x1ZGUg
IlY4WE1MU2VyaWFsaXplci5oIgogCiAjaW5jbHVkZSAiVjhCaW5kaW5nLmgiCiAjaW5jbHVkZSAi
VjhQcm94eS5oIgorI2luY2x1ZGUgIlhNTFNlcmlhbGl6ZXIuaCIKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1DQUxMQkFDS19GVU5DX0RFQ0woWE1MU2VyaWFsaXplckNvbnN0cnVjdG9yKQordjg6
OkhhbmRsZTx2ODo6VmFsdWU+IFY4Q3VzdG9tOjp2OFhNTFNlcmlhbGl6ZXJDb25zdHJ1Y3RvckNh
bGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgSU5DX1NUQVRTKCJET00u
WE1MU2VyaWFsaXplci5Db25zdHJ1Y3RvciIpOwogICAgIHJldHVybiBWOFByb3h5Ojpjb25zdHJ1
Y3RET01PYmplY3Q8VjhDbGFzc0luZGV4OjpYTUxTRVJJQUxJWkVSLCBYTUxTZXJpYWxpemVyPihh
cmdzKTsKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4U1FMVHJhbnNhY3Rpb25D
dXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4U1FM
VHJhbnNhY3Rpb25DdXN0b20uY3BwCShyZXZpc2lvbiA1MjM0MSkKKysrIFdlYkNvcmUvYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4U1FMVHJhbnNhY3Rpb25DdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zMiw2ICszMiw4IEBACiAKICNpZiBFTkFCTEUoREFUQUJBU0UpCiAKKyNpbmNsdWRlICJWOFNR
TFRyYW5zYWN0aW9uLmgiCisKICNpbmNsdWRlICJEYXRhYmFzZS5oIgogI2luY2x1ZGUgIlNRTFZh
bHVlLmgiCiAjaW5jbHVkZSAiVjhCaW5kaW5nLmgiCkBAIC00NSw3ICs0Nyw3IEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotQ0FMTEJBQ0tfRlVOQ19ERUNMKFNRTFRyYW5zYWN0aW9uRXhlY3V0
ZVNxbCkKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFNRTFRyYW5zYWN0aW9uOjpleGVjdXRlU3Fs
Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBJTkNfU1RBVFMoIkRP
TS5TUUxUcmFuc2FjdGlvbi5leGVjdXRlU3FsKCkiKTsKIApJbmRleDogV2ViQ29yZS9iaW5kaW5n
cy92OC9jdXN0b20vVjhUcmVlV2Fsa2VyQ3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFRyZWVXYWxrZXJDdXN0b20uY3BwCShyZXZpc2lvbiA1MjM0
MSkKKysrIFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4VHJlZVdhbGtlckN1c3RvbS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTI5LDEwICsyOSwxMSBAQAogICovCiAKICNpbmNsdWRlICJjb25m
aWcuaCIKLSNpbmNsdWRlICJUcmVlV2Fsa2VyLmgiCisjaW5jbHVkZSAiVjhUcmVlV2Fsa2VyLmgi
CiAKICNpbmNsdWRlICJOb2RlLmgiCiAjaW5jbHVkZSAiU2NyaXB0U3RhdGUuaCIKKyNpbmNsdWRl
ICJUcmVlV2Fsa2VyLmgiCiAKICNpbmNsdWRlICJWOEJpbmRpbmcuaCIKICNpbmNsdWRlICJWOEN1
c3RvbUJpbmRpbmcuaCIKQEAgLTU0LDcgKzU1LDcgQEAKICAgICByZXR1cm4gVjhET01XcmFwcGVy
Ojpjb252ZXJ0Tm9kZVRvVjhPYmplY3Qob2JqZWN0KTsKIH0KIAotQ0FMTEJBQ0tfRlVOQ19ERUNM
KFRyZWVXYWxrZXJQYXJlbnROb2RlKQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4VHJlZVdhbGtl
cjo6cGFyZW50Tm9kZUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAg
SU5DX1NUQVRTKCJET00uVHJlZVdhbGtlci5wYXJlbnROb2RlKCkiKTsKICAgICBUcmVlV2Fsa2Vy
KiB0cmVlV2Fsa2VyID0gVjhET01XcmFwcGVyOjpjb252ZXJ0VG9OYXRpdmVPYmplY3Q8VHJlZVdh
bGtlcj4oVjhDbGFzc0luZGV4OjpUUkVFV0FMS0VSLCBhcmdzLkhvbGRlcigpKTsKQEAgLTY0LDcg
KzY1LDcgQEAKICAgICByZXR1cm4gdG9WOChyZXN1bHQucmVsZWFzZSgpLCAmc3RhdGUpOwogfQog
Ci1DQUxMQkFDS19GVU5DX0RFQ0woVHJlZVdhbGtlckZpcnN0Q2hpbGQpCit2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gVjhUcmVlV2Fsa2VyOjpmaXJzdENoaWxkQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3Vt
ZW50cyYgYXJncykKIHsKICAgICBJTkNfU1RBVFMoIkRPTS5UcmVlV2Fsa2VyLmZpcnN0Q2hpbGQo
KSIpOwogICAgIFRyZWVXYWxrZXIqIHRyZWVXYWxrZXIgPSBWOERPTVdyYXBwZXI6OmNvbnZlcnRU
b05hdGl2ZU9iamVjdDxUcmVlV2Fsa2VyPihWOENsYXNzSW5kZXg6OlRSRUVXQUxLRVIsIGFyZ3Mu
SG9sZGVyKCkpOwpAQCAtNzQsNyArNzUsNyBAQAogICAgIHJldHVybiB0b1Y4KHJlc3VsdC5yZWxl
YXNlKCksICZzdGF0ZSk7CiB9CiAKLUNBTExCQUNLX0ZVTkNfREVDTChUcmVlV2Fsa2VyTGFzdENo
aWxkKQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4VHJlZVdhbGtlcjo6bGFzdENoaWxkQ2FsbGJh
Y2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBJTkNfU1RBVFMoIkRPTS5UcmVl
V2Fsa2VyLmxhc3RDaGlsZCgpIik7CiAgICAgVHJlZVdhbGtlciogdHJlZVdhbGtlciA9IFY4RE9N
V3JhcHBlcjo6Y29udmVydFRvTmF0aXZlT2JqZWN0PFRyZWVXYWxrZXI+KFY4Q2xhc3NJbmRleDo6
VFJFRVdBTEtFUiwgYXJncy5Ib2xkZXIoKSk7CkBAIC04NCw3ICs4NSw3IEBACiAgICAgcmV0dXJu
IHRvVjgocmVzdWx0LnJlbGVhc2UoKSwgJnN0YXRlKTsKIH0KIAotQ0FMTEJBQ0tfRlVOQ19ERUNM
KFRyZWVXYWxrZXJOZXh0Tm9kZSkKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFRyZWVXYWxrZXI6
Om5leHROb2RlQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBJTkNf
U1RBVFMoIkRPTS5UcmVlV2Fsa2VyLm5leHROb2RlKCkiKTsKICAgICBUcmVlV2Fsa2VyKiB0cmVl
V2Fsa2VyID0gVjhET01XcmFwcGVyOjpjb252ZXJ0VG9OYXRpdmVPYmplY3Q8VHJlZVdhbGtlcj4o
VjhDbGFzc0luZGV4OjpUUkVFV0FMS0VSLCBhcmdzLkhvbGRlcigpKTsKQEAgLTk0LDcgKzk1LDcg
QEAKICAgICByZXR1cm4gdG9WOChyZXN1bHQucmVsZWFzZSgpLCAmc3RhdGUpOwogfQogCi1DQUxM
QkFDS19GVU5DX0RFQ0woVHJlZVdhbGtlclByZXZpb3VzTm9kZSkKK3Y4OjpIYW5kbGU8djg6OlZh
bHVlPiBWOFRyZWVXYWxrZXI6OnByZXZpb3VzTm9kZUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVu
dHMmIGFyZ3MpCiB7CiAgICAgSU5DX1NUQVRTKCJET00uVHJlZVdhbGtlci5wcmV2aW91c05vZGUo
KSIpOwogICAgIFRyZWVXYWxrZXIqIHRyZWVXYWxrZXIgPSBWOERPTVdyYXBwZXI6OmNvbnZlcnRU
b05hdGl2ZU9iamVjdDxUcmVlV2Fsa2VyPihWOENsYXNzSW5kZXg6OlRSRUVXQUxLRVIsIGFyZ3Mu
SG9sZGVyKCkpOwpAQCAtMTA0LDcgKzEwNSw3IEBACiAgICAgcmV0dXJuIHRvVjgocmVzdWx0LnJl
bGVhc2UoKSwgJnN0YXRlKTsKIH0KIAotQ0FMTEJBQ0tfRlVOQ19ERUNMKFRyZWVXYWxrZXJOZXh0
U2libGluZykKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFRyZWVXYWxrZXI6Om5leHRTaWJsaW5n
Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBJTkNfU1RBVFMoIkRP
TS5UcmVlV2Fsa2VyLm5leHRTaWJsaW5nKCkiKTsKICAgICBUcmVlV2Fsa2VyKiB0cmVlV2Fsa2Vy
ID0gVjhET01XcmFwcGVyOjpjb252ZXJ0VG9OYXRpdmVPYmplY3Q8VHJlZVdhbGtlcj4oVjhDbGFz
c0luZGV4OjpUUkVFV0FMS0VSLCBhcmdzLkhvbGRlcigpKTsKQEAgLTExNCw3ICsxMTUsNyBAQAog
ICAgIHJldHVybiB0b1Y4KHJlc3VsdC5yZWxlYXNlKCksICZzdGF0ZSk7CiB9CiAKLUNBTExCQUNL
X0ZVTkNfREVDTChUcmVlV2Fsa2VyUHJldmlvdXNTaWJsaW5nKQordjg6OkhhbmRsZTx2ODo6VmFs
dWU+IFY4VHJlZVdhbGtlcjo6cHJldmlvdXNTaWJsaW5nQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3Vt
ZW50cyYgYXJncykKIHsKICAgICBJTkNfU1RBVFMoIkRPTS5UcmVlV2Fsa2VyLnByZXZpb3VzU2li
bGluZygpIik7CiAgICAgVHJlZVdhbGtlciogdHJlZVdhbGtlciA9IFY4RE9NV3JhcHBlcjo6Y29u
dmVydFRvTmF0aXZlT2JqZWN0PFRyZWVXYWxrZXI+KFY4Q2xhc3NJbmRleDo6VFJFRVdBTEtFUiwg
YXJncy5Ib2xkZXIoKSk7CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERlZGlj
YXRlZFdvcmtlckNvbnRleHRDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4RGVkaWNhdGVkV29ya2VyQ29udGV4dEN1c3RvbS5jcHAJKHJldmlzaW9u
IDUyMzQxKQorKysgV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhEZWRpY2F0ZWRXb3JrZXJD
b250ZXh0Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsMTAgKzMxLDEwIEBACiAjaW5j
bHVkZSAiY29uZmlnLmgiCiAKICNpZiBFTkFCTEUoV09SS0VSUykKKyNpbmNsdWRlICJWOERlZGlj
YXRlZFdvcmtlckNvbnRleHQuaCIKIAorI2luY2x1ZGUgIkRlZGljYXRlZFdvcmtlckNvbnRleHQu
aCIKICNpbmNsdWRlICJXb3JrZXJDb250ZXh0RXhlY3V0aW9uUHJveHkuaCIKLQotI2luY2x1ZGUg
IkRlZGljYXRlZFdvcmtlckNvbnRleHQuaCIKICNpbmNsdWRlICJWOEJpbmRpbmcuaCIKICNpbmNs
dWRlICJWOE1lc3NhZ2VQb3J0Q3VzdG9tLmgiCiAjaW5jbHVkZSAiVjhQcm94eS5oIgpAQCAtNDIs
NyArNDIsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUNBTExCQUNLX0ZVTkNfREVDTChE
ZWRpY2F0ZWRXb3JrZXJDb250ZXh0UG9zdE1lc3NhZ2UpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
VjhEZWRpY2F0ZWRXb3JrZXJDb250ZXh0Ojpwb3N0TWVzc2FnZUNhbGxiYWNrKGNvbnN0IHY4OjpB
cmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgSU5DX1NUQVRTKEwiRE9NLkRlZGljYXRlZFdvcmtlckNv
bnRleHQucG9zdE1lc3NhZ2UiKTsKICAgICBEZWRpY2F0ZWRXb3JrZXJDb250ZXh0KiB3b3JrZXJD
b250ZXh0ID0gVjhET01XcmFwcGVyOjpjb252ZXJ0VG9OYXRpdmVPYmplY3Q8RGVkaWNhdGVkV29y
a2VyQ29udGV4dD4oVjhDbGFzc0luZGV4OjpERURJQ0FURURXT1JLRVJDT05URVhULCBhcmdzLkhv
bGRlcigpKTsKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4V2ViR0xVbnNpZ25l
ZEludEFycmF5Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1
c3RvbS9WOFdlYkdMVW5zaWduZWRJbnRBcnJheUN1c3RvbS5jcHAJKHJldmlzaW9uIDUyMzQxKQor
KysgV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhXZWJHTFVuc2lnbmVkSW50QXJyYXlDdXN0
b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NCw3ICs0NCw3IEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotQ0FMTEJBQ0tfRlVOQ19ERUNMKFdlYkdMVW5zaWduZWRJbnRBcnJheUNvbnN0cnVj
dG9yKQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4Q3VzdG9tOjp2OFdlYkdMVW5zaWduZWRJbnRB
cnJheUNvbnN0cnVjdG9yQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAg
ICBJTkNfU1RBVFMoIkRPTS5XZWJHTFVuc2lnbmVkSW50QXJyYXkuQ29udHJ1Y3RvciIpOwogCkBA
IC03OSwxMyArNzksMTMgQEAKICAgICByZXR1cm4gdmFsdWU7CiB9CiAKLUNBTExCQUNLX0ZVTkNf
REVDTChXZWJHTFVuc2lnbmVkSW50QXJyYXlHZXQpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhX
ZWJHTFVuc2lnbmVkSW50QXJyYXk6OmdldENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFy
Z3MpCiB7CiAgICAgSU5DX1NUQVRTKCJET00uV2ViR0xVbnNpZ25lZEludEFycmF5LmdldCgpIik7
CiAgICAgcmV0dXJuIGdldFdlYkdMQXJyYXlFbGVtZW50PFdlYkdMVW5zaWduZWRJbnRBcnJheSwg
dW5zaWduZWQgaW50PihhcmdzLCBWOENsYXNzSW5kZXg6OldFQkdMVU5TSUdORURJTlRBUlJBWSk7
CiB9CiAKLUNBTExCQUNLX0ZVTkNfREVDTChXZWJHTFVuc2lnbmVkSW50QXJyYXlTZXQpCit2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gVjhXZWJHTFVuc2lnbmVkSW50QXJyYXk6OnNldENhbGxiYWNrKGNv
bnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgSU5DX1NUQVRTKCJET00uV2ViR0xVbnNp
Z25lZEludEFycmF5LnNldCgpIik7CiAgICAgcmV0dXJuIHNldFdlYkdMQXJyYXk8V2ViR0xVbnNp
Z25lZEludEFycmF5LCBWOFdlYkdMVW5zaWduZWRJbnRBcnJheT4oYXJncywgVjhDbGFzc0luZGV4
OjpXRUJHTFVOU0lHTkVESU5UQVJSQVkpOwpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0
b20vVjhJbmplY3RlZFNjcmlwdEhvc3RDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
YmluZGluZ3MvdjgvY3VzdG9tL1Y4SW5qZWN0ZWRTY3JpcHRIb3N0Q3VzdG9tLmNwcAkocmV2aXNp
b24gNTIzNDEpCisrKyBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEluamVjdGVkU2NyaXB0
SG9zdEN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDExICsyOSwxMiBAQAogICovCiAK
ICNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJJbmplY3RlZFNjcmlwdEhvc3QuaCIKKyNp
bmNsdWRlICJWOEluamVjdGVkU2NyaXB0SG9zdC5oIgogCiAjaW5jbHVkZSAiRGF0YWJhc2UuaCIK
ICNpbmNsdWRlICJET01XaW5kb3cuaCIKICNpbmNsdWRlICJGcmFtZS5oIgorI2luY2x1ZGUgIklu
amVjdGVkU2NyaXB0SG9zdC5oIgogI2luY2x1ZGUgIkluc3BlY3RvckNvbnRyb2xsZXIuaCIKICNp
bmNsdWRlICJOb2RlLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgpAQCAtNDQsNyArNDUsNyBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLUNBTExCQUNLX0ZVTkNfREVDTChJbmplY3RlZFNjcmlwdEhv
c3RJbnNwZWN0ZWRXaW5kb3cpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhJbmplY3RlZFNjcmlw
dEhvc3Q6Omluc3BlY3RlZFdpbmRvd0NhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3Mp
CiB7CiAgICAgSU5DX1NUQVRTKCJJbmplY3RlZFNjcmlwdEhvc3QuaW5zcGVjdGVkV2luZG93KCki
KTsKIApAQCAtNTUsMTMgKzU2LDEzIEBACiAgICAgcmV0dXJuIFY4RE9NV3JhcHBlcjo6Y29udmVy
dFRvVjhPYmplY3Q8RE9NV2luZG93PihWOENsYXNzSW5kZXg6OkRPTVdJTkRPVywgaWMtPmluc3Bl
Y3RlZFBhZ2UoKS0+bWFpbkZyYW1lKCktPmRvbVdpbmRvdygpKTsKIH0KIAotQ0FMTEJBQ0tfRlVO
Q19ERUNMKEluamVjdGVkU2NyaXB0SG9zdFdyYXBDYWxsYmFjaykKK3Y4OjpIYW5kbGU8djg6OlZh
bHVlPiBWOEluamVjdGVkU2NyaXB0SG9zdDo6d3JhcENhbGxiYWNrQ2FsbGJhY2soY29uc3Qgdjg6
OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBJTkNfU1RBVFMoIkluamVjdGVkU2NyaXB0SG9zdC53
cmFwQ2FsbGJhY2soKSIpOwogICAgIHJldHVybiBhcmdzWzBdOwogfQogCi1DQUxMQkFDS19GVU5D
X0RFQ0woSW5qZWN0ZWRTY3JpcHRIb3N0Tm9kZUZvcklkKQordjg6OkhhbmRsZTx2ODo6VmFsdWU+
IFY4SW5qZWN0ZWRTY3JpcHRIb3N0Ojpub2RlRm9ySWRDYWxsYmFjayhjb25zdCB2ODo6QXJndW1l
bnRzJiBhcmdzKQogewogICAgIElOQ19TVEFUUygiSW5qZWN0ZWRTY3JpcHRIb3N0Lm5vZGVGb3JJ
ZCgpIik7CiAgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPCAxKQpAQCAtODAsNyArODEsNyBAQAogICAg
IHJldHVybiBWOERPTVdyYXBwZXI6OmNvbnZlcnRUb1Y4T2JqZWN0KFY4Q2xhc3NJbmRleDo6Tk9E
RSwgbm9kZSk7CiB9CiAKLUNBTExCQUNLX0ZVTkNfREVDTChJbmplY3RlZFNjcmlwdEhvc3RXcmFw
T2JqZWN0KQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SW5qZWN0ZWRTY3JpcHRIb3N0Ojp3cmFw
T2JqZWN0Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBJTkNfU1RB
VFMoIkluamVjdGVkU2NyaXB0SG9zdC53cmFwT2JqZWN0KCkiKTsKICAgICBpZiAoYXJncy5MZW5n
dGgoKSA8IDIpCkBAIC05MCw3ICs5MSw3IEBACiAgICAgcmV0dXJuIGhvc3QtPndyYXBPYmplY3Qo
U2NyaXB0VmFsdWUoYXJnc1swXSksIHRvV2ViQ29yZVN0cmluZ1dpdGhOdWxsQ2hlY2soYXJnc1sx
XSkpLnY4VmFsdWUoKTsKIH0KIAotQ0FMTEJBQ0tfRlVOQ19ERUNMKEluamVjdGVkU2NyaXB0SG9z
dFVud3JhcE9iamVjdCkKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEluamVjdGVkU2NyaXB0SG9z
dDo6dW53cmFwT2JqZWN0Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAg
ICBJTkNfU1RBVFMoIkluamVjdGVkU2NyaXB0SG9zdC51bndyYXBPYmplY3QoKSIpOwogICAgIGlm
IChhcmdzLkxlbmd0aCgpIDwgMSkKQEAgLTEwMCw3ICsxMDEsNyBAQAogICAgIHJldHVybiBob3N0
LT51bndyYXBPYmplY3QodG9XZWJDb3JlU3RyaW5nV2l0aE51bGxDaGVjayhhcmdzWzBdKSkudjhW
YWx1ZSgpOwogfQogCi1DQUxMQkFDS19GVU5DX0RFQ0woSW5qZWN0ZWRTY3JpcHRIb3N0UHVzaE5v
ZGVQYXRoVG9Gcm9udGVuZCkKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEluamVjdGVkU2NyaXB0
SG9zdDo6cHVzaE5vZGVQYXRoVG9Gcm9udGVuZENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMm
IGFyZ3MpCiB7CiAgICAgSU5DX1NUQVRTKCJJbmplY3RlZFNjcmlwdEhvc3QucHVzaE5vZGVQYXRo
VG9Gcm9udGVuZCgpIik7CiAgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPCAyKQpAQCAtMTE2LDcgKzEx
Nyw3IEBACiB9CiAKICNpZiBFTkFCTEUoREFUQUJBU0UpCi1DQUxMQkFDS19GVU5DX0RFQ0woSW5q
ZWN0ZWRTY3JpcHRIb3N0RGF0YWJhc2VGb3JJZCkKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOElu
amVjdGVkU2NyaXB0SG9zdDo6ZGF0YWJhc2VGb3JJZENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVu
dHMmIGFyZ3MpCiB7CiAgICAgSU5DX1NUQVRTKCJJbmplY3RlZFNjcmlwdEhvc3QuZGF0YWJhc2VG
b3JJZCgpIik7CiAgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPCAxKQpAQCAtMTI5LDcgKzEzMCw3IEBA
CiAgICAgcmV0dXJuIFY4RE9NV3JhcHBlcjo6Y29udmVydFRvVjhPYmplY3Q8RGF0YWJhc2U+KFY4
Q2xhc3NJbmRleDo6REFUQUJBU0UsIGRhdGFiYXNlKTsKIH0KIAotQ0FMTEJBQ0tfRlVOQ19ERUNM
KEluamVjdGVkU2NyaXB0SG9zdFNlbGVjdERhdGFiYXNlKQordjg6OkhhbmRsZTx2ODo6VmFsdWU+
IFY4SW5qZWN0ZWRTY3JpcHRIb3N0OjpzZWxlY3REYXRhYmFzZUNhbGxiYWNrKGNvbnN0IHY4OjpB
cmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgSU5DX1NUQVRTKCJJbmplY3RlZFNjcmlwdEhvc3Quc2Vs
ZWN0RGF0YWJhc2UoKSIpOwogICAgIGlmIChhcmdzLkxlbmd0aCgpIDwgMSkKQEAgLTE0NSw3ICsx
NDYsNyBAQAogI2VuZGlmCiAKICNpZiBFTkFCTEUoRE9NX1NUT1JBR0UpCi1DQUxMQkFDS19GVU5D
X0RFQ0woSW5qZWN0ZWRTY3JpcHRIb3N0U2VsZWN0RE9NU3RvcmFnZSkKK3Y4OjpIYW5kbGU8djg6
OlZhbHVlPiBWOEluamVjdGVkU2NyaXB0SG9zdDo6c2VsZWN0RE9NU3RvcmFnZUNhbGxiYWNrKGNv
bnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgSU5DX1NUQVRTKCJJbmplY3RlZFNjcmlw
dEhvc3Quc2VsZWN0RE9NU3RvcmFnZSgpIik7CiAgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPCAxKQpJ
bmRleDogV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhXZWJHTEludEFycmF5Q3VzdG9tLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFdlYkdMSW50QXJy
YXlDdXN0b20uY3BwCShyZXZpc2lvbiA1MjM0MSkKKysrIFdlYkNvcmUvYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4V2ViR0xJbnRBcnJheUN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDcgKzQ0
LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1DQUxMQkFDS19GVU5DX0RFQ0woV2ViR0xJ
bnRBcnJheUNvbnN0cnVjdG9yKQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4Q3VzdG9tOjp2OFdl
YkdMSW50QXJyYXlDb25zdHJ1Y3RvckNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3Mp
CiB7CiAgICAgSU5DX1NUQVRTKCJET00uV2ViR0xJbnRBcnJheS5Db250cnVjdG9yIik7CiAKQEAg
LTc5LDEzICs3OSwxMyBAQAogICAgIHJldHVybiB2YWx1ZTsKIH0KIAotQ0FMTEJBQ0tfRlVOQ19E
RUNMKFdlYkdMSW50QXJyYXlHZXQpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhXZWJHTEludEFy
cmF5OjpnZXRDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAgIElOQ19T
VEFUUygiRE9NLldlYkdMSW50QXJyYXkuZ2V0KCkiKTsKICAgICByZXR1cm4gZ2V0V2ViR0xBcnJh
eUVsZW1lbnQ8V2ViR0xJbnRBcnJheSwgaW50PihhcmdzLCBWOENsYXNzSW5kZXg6OldFQkdMSU5U
QVJSQVkpOwogfQogCi1DQUxMQkFDS19GVU5DX0RFQ0woV2ViR0xJbnRBcnJheVNldCkKK3Y4OjpI
YW5kbGU8djg6OlZhbHVlPiBWOFdlYkdMSW50QXJyYXk6OnNldENhbGxiYWNrKGNvbnN0IHY4OjpB
cmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgSU5DX1NUQVRTKCJET00uV2ViR0xJbnRBcnJheS5zZXQo
KSIpOwogICAgIHJldHVybiBzZXRXZWJHTEFycmF5PFdlYkdMSW50QXJyYXksIFY4V2ViR0xJbnRB
cnJheT4oYXJncywgVjhDbGFzc0luZGV4OjpXRUJHTElOVEFSUkFZKTsKSW5kZXg6IFdlYkNvcmUv
YmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTEF1ZGlvRWxlbWVudENvbnN0cnVjdG9yLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxBdWRpb0VsZW1lbnRD
b25zdHJ1Y3Rvci5jcHAJKHJldmlzaW9uIDUyMzQxKQorKysgV2ViQ29yZS9iaW5kaW5ncy92OC9j
dXN0b20vVjhIVE1MQXVkaW9FbGVtZW50Q29uc3RydWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC02MSw3ICs2MSw3IEBACiAgICAgcmV0dXJuIGNhY2hlZFRlbXBsYXRlOwogfQogCi1DQUxMQkFD
S19GVU5DX0RFQ0woSFRNTEF1ZGlvRWxlbWVudENvbnN0cnVjdG9yKQordjg6OkhhbmRsZTx2ODo6
VmFsdWU+IFY4Q3VzdG9tOjp2OEhUTUxBdWRpb0VsZW1lbnRDb25zdHJ1Y3RvckNhbGxiYWNrKGNv
bnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgSU5DX1NUQVRTKCJET00uSFRNTEF1ZGlv
RWxlbWVudC5Db250cnVjdG9yIik7CiAKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9t
L1Y4V2ViR0xTaG9ydEFycmF5Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRp
bmdzL3Y4L2N1c3RvbS9WOFdlYkdMU2hvcnRBcnJheUN1c3RvbS5jcHAJKHJldmlzaW9uIDUyMzQx
KQorKysgV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhXZWJHTFNob3J0QXJyYXlDdXN0b20u
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NCw3ICs0NCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotQ0FMTEJBQ0tfRlVOQ19ERUNMKFdlYkdMU2hvcnRBcnJheUNvbnN0cnVjdG9yKQordjg6
OkhhbmRsZTx2ODo6VmFsdWU+IFY4Q3VzdG9tOjp2OFdlYkdMU2hvcnRBcnJheUNvbnN0cnVjdG9y
Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBJTkNfU1RBVFMoIkRP
TS5XZWJHTFNob3J0QXJyYXkuQ29udHJ1Y3RvciIpOwogCkBAIC03OSwxMyArNzksMTMgQEAKICAg
ICByZXR1cm4gdmFsdWU7CiB9CiAKLUNBTExCQUNLX0ZVTkNfREVDTChXZWJHTFNob3J0QXJyYXlH
ZXQpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhXZWJHTFNob3J0QXJyYXk6OmdldENhbGxiYWNr
KGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgSU5DX1NUQVRTKCJET00uV2ViR0xT
aG9ydEFycmF5LmdldCgpIik7CiAgICAgcmV0dXJuIGdldFdlYkdMQXJyYXlFbGVtZW50PFdlYkdM
U2hvcnRBcnJheSwgc2hvcnQ+KGFyZ3MsIFY4Q2xhc3NJbmRleDo6V0VCR0xTSE9SVEFSUkFZKTsK
IH0KIAotQ0FMTEJBQ0tfRlVOQ19ERUNMKFdlYkdMU2hvcnRBcnJheVNldCkKK3Y4OjpIYW5kbGU8
djg6OlZhbHVlPiBWOFdlYkdMU2hvcnRBcnJheTo6c2V0Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3Vt
ZW50cyYgYXJncykKIHsKICAgICBJTkNfU1RBVFMoIkRPTS5XZWJHTFNob3J0QXJyYXkuc2V0KCki
KTsKICAgICByZXR1cm4gc2V0V2ViR0xBcnJheTxXZWJHTFNob3J0QXJyYXksIFY4V2ViR0xTaG9y
dEFycmF5PihhcmdzLCBWOENsYXNzSW5kZXg6OldFQkdMU0hPUlRBUlJBWSk7CkluZGV4OiBXZWJD
b3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFhNTEh0dHBSZXF1ZXN0Q29uc3RydWN0b3IuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4WE1MSHR0cFJlcXVlc3RD
b25zdHJ1Y3Rvci5jcHAJKHJldmlzaW9uIDUyMzQxKQorKysgV2ViQ29yZS9iaW5kaW5ncy92OC9j
dXN0b20vVjhYTUxIdHRwUmVxdWVzdENvbnN0cnVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MjksNiArMjksNyBAQAogICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJWOFhN
TEh0dHBSZXF1ZXN0LmgiCiAKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIlY4QmluZGlu
Zy5oIgpAQCAtNDEsNyArNDIsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUNBTExCQUNL
X0ZVTkNfREVDTChYTUxIdHRwUmVxdWVzdENvbnN0cnVjdG9yKQordjg6OkhhbmRsZTx2ODo6VmFs
dWU+IFY4Q3VzdG9tOjp2OFhNTEh0dHBSZXF1ZXN0Q29uc3RydWN0b3JDYWxsYmFjayhjb25zdCB2
ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAgIElOQ19TVEFUUygiRE9NLlhNTEh0dHBSZXF1ZXN0
LkNvbnN0cnVjdG9yIik7CiAK
</data>
<flag name="commit-queue"
          id="27178"
          type_id="3"
          status="-"
          setter="japhet"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>48076</attachid>
            <date>2010-02-03 16:23:57 -0800</date>
            <delta_ts>2010-02-03 18:58:31 -0800</delta_ts>
            <desc>Death to V8Custom!</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>38940</size>
            <attacher name="Nate Chapin">japhet</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViRGV2VG9vbHNGcm9udGVuZEltcGwuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViRGV2VG9vbHNGcm9udGVuZEltcGwu
Y3BwCShyZXZpc2lvbiA1NDMwOSkKKysrIFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViRGV2VG9vbHNG
cm9udGVuZEltcGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Miw3ICs1Miw2IEBACiAjaW5jbHVk
ZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJUb29sc0FnZW50LmgiCiAjaW5jbHVkZSAiVjhCaW5k
aW5nLmgiCi0jaW5jbHVkZSAiVjhDdXN0b21CaW5kaW5nLmgiCiAjaW5jbHVkZSAiVjhET01XcmFw
cGVyLmgiCiAjaW5jbHVkZSAiVjhJbnNwZWN0b3JGcm9udGVuZEhvc3QuaCIKICNpbmNsdWRlICJW
OE5vZGUuaCIKSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9zcmMvRGVidWdnZXJBZ2VudEltcGwuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9zcmMvRGVidWdnZXJBZ2VudEltcGwuY3Bw
CShyZXZpc2lvbiA1NDMwOSkKKysrIFdlYktpdC9jaHJvbWl1bS9zcmMvRGVidWdnZXJBZ2VudElt
cGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MSw3ICs1MSw2IEBACiB1c2luZyBXZWJDb3JlOjpQ
YWdlOwogdXNpbmcgV2ViQ29yZTo6U3RyaW5nOwogdXNpbmcgV2ViQ29yZTo6VjhDbGFzc0luZGV4
OwotdXNpbmcgV2ViQ29yZTo6VjhDdXN0b207CiB1c2luZyBXZWJDb3JlOjpWOERPTVdpbmRvdzsK
IHVzaW5nIFdlYkNvcmU6OlY4RE9NV3JhcHBlcjsKIHVzaW5nIFdlYkNvcmU6OlY4UHJveHk7Cklu
ZGV4OiBXZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cJKHJldmlzaW9uIDU0MzA5KQorKysgV2ViS2l0L2Nocm9taXVtL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDEwLTAyLTAzICBOYXRlIENo
YXBpbiAgPGphcGhldEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgUmVtb3ZlIHJlZmVyZW5jZXMgdG8gVjhDdXN0b20uCisKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMyNjM4CisKKyAg
ICAgICAgKiBzcmMvRGVidWdnZXJBZ2VudEltcGwuY3BwOgorICAgICAgICAqIHNyYy9XZWJEZXZU
b29sc0Zyb250ZW5kSW1wbC5jcHA6CisKIDIwMTAtMDItMDMgIERyZXcgV2lsc29uICA8YXR3aWxz
b25AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFsZXhleSBQcm9za3VyeWFr
b3YuCkluZGV4OiBXZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL0NoYW5n
ZUxvZwkocmV2aXNpb24gNTQzMDkpCisrKyBXZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5
KQpAQCAtMSw1ICsxLDc2IEBACiAyMDEwLTAyLTAzICBOYXRlIENoYXBpbiAgPGphcGhldEBjaHJv
bWl1bS5vcmc+CiAKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgW1Y4XSBEZWxldGUgVjhDdXN0b21CaW5kaW5nLmggYW5kIGFsbCByZWZlcmVuY2VzIHRvIFY4
Q3VzdG9tCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTMyNjM4CisKKyAgICAgICAgKiBiaW5kaW5ncy92OC9OUFY4T2JqZWN0LmNwcDoKKyAgICAgICAg
KiBiaW5kaW5ncy92OC9WOERPTVdpbmRvd1NoZWxsLmg6CisgICAgICAgICogYmluZGluZ3Mvdjgv
VjhOUE9iamVjdC5jcHA6CisgICAgICAgICogYmluZGluZ3MvdjgvVjhVdGlsaXRpZXMuY3BwOgor
ICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEFic3RyYWN0V29ya2VyQ3VzdG9tLmNwcDoK
KyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhBdHRyQ3VzdG9tLmNwcDoKKyAgICAgICAg
KiBiaW5kaW5ncy92OC9jdXN0b20vVjhDU1NTdHlsZURlY2xhcmF0aW9uQ3VzdG9tLmNwcDoKKyAg
ICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRDdXN0
b20uY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOENsaXBib2FyZEN1c3RvbS5j
cHA6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q29vcmRpbmF0ZXNDdXN0b20uY3Bw
OgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEN1c3RvbUJpbmRpbmcuaDogUmVtb3Zl
ZC4KKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhET01BcHBsaWNhdGlvbkNhY2hlQ3Vz
dG9tLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhET01XaW5kb3dDdXN0b20u
Y3BwOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOERhdGFHcmlkQ29sdW1uTGlzdEN1
c3RvbS5jcHA6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4RGF0YWJhc2VDdXN0b20u
Y3BwOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEVsZW1lbnRDdXN0b20uY3BwOgor
ICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEV2ZW50U291cmNlQ29uc3RydWN0b3IuY3Bw
OgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEV2ZW50U291cmNlQ3VzdG9tLmNwcDoK
KyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhHZW9sb2NhdGlvbkN1c3RvbS5jcHA6Cisg
ICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTEFsbENvbGxlY3Rpb25DdXN0b20uY3Bw
OgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxBdWRpb0VsZW1lbnRDb25zdHJ1
Y3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjp2OEhUTUxBdWRpb0VsZW1lbnRDb25zdHJ1Y3Rv
ckNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlY4SFRNTEF1ZGlvRWxlbWVudENvbnN0cnVj
dG9yOjpHZXRUZW1wbGF0ZSk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTENv
bGxlY3Rpb25DdXN0b20uY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxE
YXRhR3JpZEVsZW1lbnRDdXN0b20uY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9W
OEhUTUxGcmFtZUVsZW1lbnRDdXN0b20uY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3Rv
bS9WOEhUTUxJRnJhbWVFbGVtZW50Q3VzdG9tLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy92OC9j
dXN0b20vVjhIVE1MSW1hZ2VFbGVtZW50Q29uc3RydWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6djhIVE1MSW1hZ2VFbGVtZW50Q29uc3RydWN0b3JDYWxsYmFjayk6CisgICAgICAgIChXZWJD
b3JlOjpWOEhUTUxJbWFnZUVsZW1lbnRDb25zdHJ1Y3Rvcjo6R2V0VGVtcGxhdGUpOgorICAgICAg
ICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxJbnB1dEVsZW1lbnRDdXN0b20uY3BwOgorICAg
ICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxPcHRpb25FbGVtZW50Q29uc3RydWN0b3Iu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6djhIVE1MT3B0aW9uRWxlbWVudENvbnN0cnVjdG9yQ2Fs
bGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6VjhIVE1MT3B0aW9uRWxlbWVudENvbnN0cnVjdG9y
OjpHZXRUZW1wbGF0ZSk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTFBsdWdJ
bkVsZW1lbnRDdXN0b20uY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEhpc3Rv
cnlDdXN0b20uY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEluc3BlY3RvckZy
b250ZW5kSG9zdEN1c3RvbS5jcHA6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4TG9j
YXRpb25DdXN0b20uY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOE1lc3NhZ2VQ
b3J0Q3VzdG9tLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhOb2RlQ3VzdG9t
LmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhOb2RlRmlsdGVyQ3VzdG9tLmNw
cDoKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhTUUxSZXN1bHRTZXRSb3dMaXN0Q3Vz
dG9tLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhTUUxUcmFuc2FjdGlvbkN1
c3RvbS5jcHA6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4U1ZHRWxlbWVudEluc3Rh
bmNlQ3VzdG9tLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhTVkdMZW5ndGhD
dXN0b20uY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOFNoYXJlZFdvcmtlckN1
c3RvbS5jcHA6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4U3RvcmFnZUN1c3RvbS5j
cHA6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4V2ViR0xBcnJheUJ1ZmZlckN1c3Rv
bS5jcHA6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4V2ViR0xBcnJheUN1c3RvbS5o
OgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOFdlYkdMQnl0ZUFycmF5Q3VzdG9tLmNw
cDoKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhXZWJHTEZsb2F0QXJyYXlDdXN0b20u
Y3BwOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOFdlYkdMSW50QXJyYXlDdXN0b20u
Y3BwOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOFdlYkdMU2hvcnRBcnJheUN1c3Rv
bS5jcHA6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4V2ViR0xVbnNpZ25lZEJ5dGVB
cnJheUN1c3RvbS5jcHA6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4V2ViR0xVbnNp
Z25lZEludEFycmF5Q3VzdG9tLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhX
ZWJHTFVuc2lnbmVkU2hvcnRBcnJheUN1c3RvbS5jcHA6CisgICAgICAgICogYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4V2ViS2l0UG9pbnRDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgICogYmluZGluZ3Mv
djgvY3VzdG9tL1Y4V29ya2VyQ29udGV4dEN1c3RvbS5jcHA6CisgICAgICAgICogYmluZGluZ3Mv
djgvY3VzdG9tL1Y4V29ya2VyQ3VzdG9tLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0
b20vVjhYTUxIdHRwUmVxdWVzdENvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy92
OC9jdXN0b20vVjhYTUxIdHRwUmVxdWVzdEN1c3RvbS5jcHA6CisgICAgICAgICogYmluZGluZ3Mv
djgvY3VzdG9tL1Y4WE1MSHR0cFJlcXVlc3RVcGxvYWRDdXN0b20uY3BwOgorCisyMDEwLTAyLTAz
ICBOYXRlIENoYXBpbiAgPGphcGhldEBjaHJvbWl1bS5vcmc+CisKICAgICAgICAgVW5yZXZpZXdl
ZCwgQ2hyb21pdW0gbWFjIGJ1aWxkIGZpeC4KIAogICAgICAgICBbVjhdIFJlbW92ZSB1bnVzZWQg
VjhQcm94eSogdmFyaWFibGUgZnJvbSBnZW5lcmF0ZWQgd3JhcHBpbmcgY29kZS4KSW5kZXg6IFdl
YkNvcmUvYmluZGluZ3MvdjgvVjhET01XaW5kb3dTaGVsbC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvYmluZGluZ3MvdjgvVjhET01XaW5kb3dTaGVsbC5oCShyZXZpc2lvbiA1NDMwOSkKKysrIFdl
YkNvcmUvYmluZGluZ3MvdjgvVjhET01XaW5kb3dTaGVsbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
MSw3ICszMSw2IEBACiAjaWZuZGVmIFY4RE9NV2luZG93U2hlbGxfaAogI2RlZmluZSBWOERPTVdp
bmRvd1NoZWxsX2gKIAotI2luY2x1ZGUgIlY4Q3VzdG9tQmluZGluZy5oIgogI2luY2x1ZGUgIlY4
SW5kZXguaCIKICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZD
b3VudGVkLmg+CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4TlBPYmplY3QuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvdjgvVjhOUE9iamVjdC5jcHAJKHJldmlzaW9uIDU0
MzA5KQorKysgV2ViQ29yZS9iaW5kaW5ncy92OC9WOE5QT2JqZWN0LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzUsNyArMzUsNiBAQAogI2luY2x1ZGUgIkhUTUxQbHVnSW5FbGVtZW50LmgiCiAjaW5j
bHVkZSAiSWRlbnRpZmllclJlcC5oIgogI2luY2x1ZGUgIk5QVjhPYmplY3QuaCIKLSNpbmNsdWRl
ICJWOEN1c3RvbUJpbmRpbmcuaCIKICNpbmNsdWRlICJWOERPTU1hcC5oIgogI2luY2x1ZGUgIlY4
SFRNTEFwcGxldEVsZW1lbnQuaCIKICNpbmNsdWRlICJWOEhUTUxFbWJlZEVsZW1lbnQuaCIKSW5k
ZXg6IFdlYkNvcmUvYmluZGluZ3MvdjgvTlBWOE9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9iaW5kaW5ncy92OC9OUFY4T2JqZWN0LmNwcAkocmV2aXNpb24gNTQzMDkpCisrKyBXZWJD
b3JlL2JpbmRpbmdzL3Y4L05QVjhPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw3ICsz
NCw2IEBACiAjaW5jbHVkZSAiT3duQXJyYXlQdHIuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmlu
Zy5oIgogI2luY2x1ZGUgIlNjcmlwdENvbnRyb2xsZXIuaCIKLSNpbmNsdWRlICJWOEN1c3RvbUJp
bmRpbmcuaCIKICNpbmNsdWRlICJWOEdDQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIlY4SGVscGVy
cy5oIgogI2luY2x1ZGUgIlY4SW5kZXguaCIKQEAgLTUyLDcgKzUxLDYgQEAKIHVzaW5nIFdlYkNv
cmU6OnRvVjhDb250ZXh0OwogdXNpbmcgV2ViQ29yZTo6dG9WOFByb3h5OwogdXNpbmcgV2ViQ29y
ZTo6VjhDbGFzc0luZGV4OwotdXNpbmcgV2ViQ29yZTo6VjhDdXN0b207CiB1c2luZyBXZWJDb3Jl
OjpWOERPTVdyYXBwZXI7CiB1c2luZyBXZWJDb3JlOjpWOEdDQ29udHJvbGxlcjsKIHVzaW5nIFdl
YkNvcmU6OlY4UHJveHk7CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4VXRpbGl0aWVzLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4VXRpbGl0aWVzLmNwcAkocmV2
aXNpb24gNTQzMDkpCisrKyBXZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4VXRpbGl0aWVzLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzcsNyArMzcsNiBAQAogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVk
ZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgogI2luY2x1ZGUgIlNjcmlwdFN0YXRlLmgiCi0j
aW5jbHVkZSAiVjhDdXN0b21CaW5kaW5nLmgiCiAjaW5jbHVkZSAiVjhCaW5kaW5nLmgiCiAjaW5j
bHVkZSAiVjhQcm94eS5oIgogI2luY2x1ZGUgIldvcmtlckNvbnRleHQuaCIKSW5kZXg6IFdlYkNv
cmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4V2ViR0xGbG9hdEFycmF5Q3VzdG9tLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFdlYkdMRmxvYXRBcnJheUN1c3Rv
bS5jcHAJKHJldmlzaW9uIDU0MzA5KQorKysgV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhX
ZWJHTEZsb2F0QXJyYXlDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw3ICszOSw2IEBA
CiAjaW5jbHVkZSAiVjhXZWJHTEFycmF5QnVmZmVyLmgiCiAjaW5jbHVkZSAiVjhXZWJHTEFycmF5
Q3VzdG9tLmgiCiAjaW5jbHVkZSAiVjhXZWJHTEZsb2F0QXJyYXkuaCIKLSNpbmNsdWRlICJWOEN1
c3RvbUJpbmRpbmcuaCIKICNpbmNsdWRlICJWOFByb3h5LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RE9NQXBwbGljYXRpb25DYWNo
ZUN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhE
T01BcHBsaWNhdGlvbkNhY2hlQ3VzdG9tLmNwcAkocmV2aXNpb24gNTQzMDkpCisrKyBXZWJDb3Jl
L2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERPTUFwcGxpY2F0aW9uQ2FjaGVDdXN0b20uY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zNiw3ICszNiw2IEBACiAjaW5jbHVkZSAiQXBwbGljYXRpb25DYWNoZUhv
c3QuaCIKICNpbmNsdWRlICJET01BcHBsaWNhdGlvbkNhY2hlLmgiCiAjaW5jbHVkZSAiVjhCaW5k
aW5nLmgiCi0jaW5jbHVkZSAiVjhDdXN0b21CaW5kaW5nLmgiCiAjaW5jbHVkZSAiVjhEb2N1bWVu
dC5oIgogI2luY2x1ZGUgIlY4UHJveHkuaCIKICNpbmNsdWRlICJWOFV0aWxpdGllcy5oIgpJbmRl
eDogV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhXZWJHTEFycmF5QnVmZmVyQ3VzdG9tLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFdlYkdMQXJyYXlC
dWZmZXJDdXN0b20uY3BwCShyZXZpc2lvbiA1NDMwOSkKKysrIFdlYkNvcmUvYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4V2ViR0xBcnJheUJ1ZmZlckN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2
LDcgKzM2LDYgQEAKIAogI2luY2x1ZGUgIlY4QmluZGluZy5oIgogI2luY2x1ZGUgIlY4V2ViR0xB
cnJheUJ1ZmZlci5oIgotI2luY2x1ZGUgIlY4Q3VzdG9tQmluZGluZy5oIgogI2luY2x1ZGUgIlY4
UHJveHkuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy92
OC9jdXN0b20vVjhEYXRhR3JpZENvbHVtbkxpc3RDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RGF0YUdyaWRDb2x1bW5MaXN0Q3VzdG9tLmNwcAko
cmV2aXNpb24gNTQzMDkpCisrKyBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERhdGFHcmlk
Q29sdW1uTGlzdEN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDcgKzMzLDYgQEAKIAog
I2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiVjhCaW5kaW5nLmgiCi0jaW5jbHVkZSAi
VjhDdXN0b21CaW5kaW5nLmgiCiAjaW5jbHVkZSAiVjhQcm94eS5oIgogCiAjaWYgRU5BQkxFKERB
VEFHUklEKQpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MRnJhbWVFbGVt
ZW50Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9W
OEhUTUxGcmFtZUVsZW1lbnRDdXN0b20uY3BwCShyZXZpc2lvbiA1NDMwOSkKKysrIFdlYkNvcmUv
YmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTEZyYW1lRWxlbWVudEN1c3RvbS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTM1LDcgKzM1LDYgQEAKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRl
ICJWOEJpbmRpbmcuaCIKICNpbmNsdWRlICJWOEJpbmRpbmdTdGF0ZS5oIgotI2luY2x1ZGUgIlY4
Q3VzdG9tQmluZGluZy5oIgogI2luY2x1ZGUgIlY4UHJveHkuaCIKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MSW5wdXRFbGVtZW50
Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhU
TUxJbnB1dEVsZW1lbnRDdXN0b20uY3BwCShyZXZpc2lvbiA1NDMwOSkKKysrIFdlYkNvcmUvYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTElucHV0RWxlbWVudEN1c3RvbS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTM0LDcgKzM0LDYgQEAKICNpbmNsdWRlICJIVE1MSW5wdXRFbGVtZW50LmgiCiAKICNp
bmNsdWRlICJWOEJpbmRpbmcuaCIKLSNpbmNsdWRlICJWOEN1c3RvbUJpbmRpbmcuaCIKICNpbmNs
dWRlICJWOFByb3h5LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKSW5kZXg6IFdlYkNvcmUvYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4RGF0YWJhc2VDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RGF0YWJhc2VDdXN0b20uY3BwCShyZXZpc2lvbiA1NDMw
OSkKKysrIFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RGF0YWJhc2VDdXN0b20uY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zNSw3ICszNSw2IEBACiAKICNpbmNsdWRlICJEYXRhYmFzZS5oIgog
I2luY2x1ZGUgIlY4QmluZGluZy5oIgotI2luY2x1ZGUgIlY4Q3VzdG9tQmluZGluZy5oIgogI2lu
Y2x1ZGUgIlY4Q3VzdG9tU1FMVHJhbnNhY3Rpb25DYWxsYmFjay5oIgogI2luY2x1ZGUgIlY4Q3Vz
dG9tU1FMVHJhbnNhY3Rpb25FcnJvckNhbGxiYWNrLmgiCiAjaW5jbHVkZSAiVjhDdXN0b21Wb2lk
Q2FsbGJhY2suaCIKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4U3RvcmFnZUN1
c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhTdG9y
YWdlQ3VzdG9tLmNwcAkocmV2aXNpb24gNTQzMDkpCisrKyBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1
c3RvbS9WOFN0b3JhZ2VDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw3ICszNSw2IEBA
CiAKICNpbmNsdWRlICJTdG9yYWdlLmgiCiAjaW5jbHVkZSAiVjhCaW5kaW5nLmgiCi0jaW5jbHVk
ZSAiVjhDdXN0b21CaW5kaW5nLmgiCiAjaW5jbHVkZSAiVjhQcm94eS5oIgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERPTVdpbmRvd0N1
c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhET01X
aW5kb3dDdXN0b20uY3BwCShyZXZpc2lvbiA1NDMwOSkKKysrIFdlYkNvcmUvYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4RE9NV2luZG93Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTUsNyArNTUs
NiBAQAogI2luY2x1ZGUgIlY4QmluZGluZy5oIgogI2luY2x1ZGUgIlY4QmluZGluZ0RPTVdpbmRv
dy5oIgogI2luY2x1ZGUgIlY4QmluZGluZ1N0YXRlLmgiCi0jaW5jbHVkZSAiVjhDdXN0b21CaW5k
aW5nLmgiCiAjaW5jbHVkZSAiVjhDdXN0b21FdmVudExpc3RlbmVyLmgiCiAjaW5jbHVkZSAiVjhI
VE1MQ29sbGVjdGlvbi5oIgogI2luY2x1ZGUgIlY4TWVzc2FnZVBvcnRDdXN0b20uaCIKSW5kZXg6
IFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTEFsbENvbGxlY3Rpb25DdXN0b20uY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTEFsbENvbGxl
Y3Rpb25DdXN0b20uY3BwCShyZXZpc2lvbiA1NDMwOSkKKysrIFdlYkNvcmUvYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4SFRNTEFsbENvbGxlY3Rpb25DdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
NCw3ICszNCw2IEBACiAjaW5jbHVkZSAiSFRNTEFsbENvbGxlY3Rpb24uaCIKIAogI2luY2x1ZGUg
IlY4QmluZGluZy5oIgotI2luY2x1ZGUgIlY4Q3VzdG9tQmluZGluZy5oIgogI2luY2x1ZGUgIlY4
TmFtZWROb2Rlc0NvbGxlY3Rpb24uaCIKICNpbmNsdWRlICJWOE5vZGUuaCIKICNpbmNsdWRlICJW
OE5vZGVMaXN0LmgiCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFdvcmtlckN1
c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhXb3Jr
ZXJDdXN0b20uY3BwCShyZXZpc2lvbiA1NDMwOSkKKysrIFdlYkNvcmUvYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4V29ya2VyQ3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzksNyArMzksNiBAQAog
I2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiCiAj
aW5jbHVkZSAiVjhCaW5kaW5nLmgiCi0jaW5jbHVkZSAiVjhDdXN0b21CaW5kaW5nLmgiCiAjaW5j
bHVkZSAiVjhNZXNzYWdlUG9ydEN1c3RvbS5oIgogI2luY2x1ZGUgIlY4UHJveHkuaCIKICNpbmNs
dWRlICJWOFV0aWxpdGllcy5oIgpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhD
b29yZGluYXRlc0N1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy92OC9j
dXN0b20vVjhDb29yZGluYXRlc0N1c3RvbS5jcHAJKHJldmlzaW9uIDU0MzA5KQorKysgV2ViQ29y
ZS9iaW5kaW5ncy92OC9jdXN0b20vVjhDb29yZGluYXRlc0N1c3RvbS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTI4LDcgKzI4LDYgQEAKIAogI2luY2x1ZGUgIkNvb3JkaW5hdGVzLmgiCiAjaW5jbHVk
ZSAiVjhCaW5kaW5nLmgiCi0jaW5jbHVkZSAiVjhDdXN0b21CaW5kaW5nLmgiCiAjaW5jbHVkZSAi
VjhQcm94eS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdz
L3Y4L2N1c3RvbS9WOFdlYktpdFBvaW50Q29uc3RydWN0b3IuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4V2ViS2l0UG9pbnRDb25zdHJ1Y3Rvci5jcHAJKHJl
dmlzaW9uIDU0MzA5KQorKysgV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhXZWJLaXRQb2lu
dENvbnN0cnVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIsNyArMzIsNiBAQAogI2luY2x1
ZGUgIlY4V2ViS2l0UG9pbnQuaCIKIAogI2luY2x1ZGUgIlY4QmluZGluZy5oIgotI2luY2x1ZGUg
IlY4Q3VzdG9tQmluZGluZy5oIgogI2luY2x1ZGUgIlY4RE9NV3JhcHBlci5oIgogI2luY2x1ZGUg
IlY4SW5kZXguaCIKICNpbmNsdWRlICJWOFByb3h5LmgiCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdz
L3Y4L2N1c3RvbS9WOFdvcmtlckNvbnRleHRDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4V29ya2VyQ29udGV4dEN1c3RvbS5jcHAJKHJldmlzaW9u
IDU0MzA5KQorKysgV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhXb3JrZXJDb250ZXh0Q3Vz
dG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzgsNyArMzgsNiBAQAogI2luY2x1ZGUgIlJ1bnRp
bWVFbmFibGVkRmVhdHVyZXMuaCIKICNpbmNsdWRlICJTY2hlZHVsZWRBY3Rpb24uaCIKICNpbmNs
dWRlICJWOEJpbmRpbmcuaCIKLSNpbmNsdWRlICJWOEN1c3RvbUJpbmRpbmcuaCIKICNpbmNsdWRl
ICJWOFByb3h5LmgiCiAjaW5jbHVkZSAiVjhVdGlsaXRpZXMuaCIKICNpbmNsdWRlICJWOFdvcmtl
ckNvbnRleHRFdmVudExpc3RlbmVyLmgiCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOEhUTUxDb2xsZWN0aW9uQ3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRp
bmdzL3Y4L2N1c3RvbS9WOEhUTUxDb2xsZWN0aW9uQ3VzdG9tLmNwcAkocmV2aXNpb24gNTQzMDkp
CisrKyBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxDb2xsZWN0aW9uQ3VzdG9tLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzMsNyArMzMsNiBAQAogCiAjaW5jbHVkZSAiSFRNTENvbGxl
Y3Rpb24uaCIKICNpbmNsdWRlICJWOEJpbmRpbmcuaCIKLSNpbmNsdWRlICJWOEN1c3RvbUJpbmRp
bmcuaCIKICNpbmNsdWRlICJWOEhUTUxBbGxDb2xsZWN0aW9uLmgiCiAjaW5jbHVkZSAiVjhOYW1l
ZE5vZGVzQ29sbGVjdGlvbi5oIgogI2luY2x1ZGUgIlY4Tm9kZS5oIgpJbmRleDogV2ViQ29yZS9i
aW5kaW5ncy92OC9jdXN0b20vVjhIVE1MT3B0aW9uRWxlbWVudENvbnN0cnVjdG9yLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxPcHRpb25FbGVtZW50
Q29uc3RydWN0b3IuY3BwCShyZXZpc2lvbiA1NDMwOSkKKysrIFdlYkNvcmUvYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4SFRNTE9wdGlvbkVsZW1lbnRDb25zdHJ1Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTQ0LDI2ICs0NCw4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdjg6OlBlcnNpc3Rl
bnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IFY4SFRNTE9wdGlvbkVsZW1lbnRDb25zdHJ1Y3Rvcjo6
R2V0VGVtcGxhdGUoKQorc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2OEhUTUxPcHRpb25F
bGVtZW50Q29uc3RydWN0b3JDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewot
ICAgIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gY2FjaGVkVGVt
cGxhdGU7Ci0gICAgaWYgKCFjYWNoZWRUZW1wbGF0ZS5Jc0VtcHR5KCkpCi0gICAgICAgIHJldHVy
biBjYWNoZWRUZW1wbGF0ZTsKLQotICAgIHY4OjpIYW5kbGVTY29wZSBzY29wZTsKLSAgICB2ODo6
TG9jYWw8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHJlc3VsdCA9IHY4OjpGdW5jdGlvblRlbXBsYXRl
OjpOZXcoVVNFX0NBTExCQUNLKEhUTUxPcHRpb25FbGVtZW50Q29uc3RydWN0b3IpKTsKLQotICAg
IHY4OjpMb2NhbDx2ODo6T2JqZWN0VGVtcGxhdGU+IGluc3RhbmNlID0gcmVzdWx0LT5JbnN0YW5j
ZVRlbXBsYXRlKCk7Ci0gICAgaW5zdGFuY2UtPlNldEludGVybmFsRmllbGRDb3VudChWOEhUTUxP
cHRpb25FbGVtZW50OjppbnRlcm5hbEZpZWxkQ291bnQpOwotICAgIHJlc3VsdC0+U2V0Q2xhc3NO
YW1lKHY4OjpTdHJpbmc6Ok5ldygiSFRNTE9wdGlvbkVsZW1lbnQiKSk7Ci0gICAgcmVzdWx0LT5J
bmhlcml0KFY4RE9NV3JhcHBlcjo6Z2V0VGVtcGxhdGUoVjhDbGFzc0luZGV4OjpIVE1MT1BUSU9O
RUxFTUVOVCkpOwotCi0gICAgY2FjaGVkVGVtcGxhdGUgPSB2ODo6UGVyc2lzdGVudDx2ODo6RnVu
Y3Rpb25UZW1wbGF0ZT46Ok5ldyhyZXN1bHQpOwotICAgIHJldHVybiBjYWNoZWRUZW1wbGF0ZTsK
LX0KLQotdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4Q3VzdG9tOjp2OEhUTUxPcHRpb25FbGVtZW50
Q29uc3RydWN0b3JDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQotewogICAgIElO
Q19TVEFUUygiRE9NLkhUTUxPcHRpb25FbGVtZW50LkNvbnRydWN0b3IiKTsKIAogICAgIGlmICgh
YXJncy5Jc0NvbnN0cnVjdENhbGwoKSkKQEAgLTExMCw0ICs5MiwyMiBAQAogICAgIHJldHVybiBh
cmdzLkhvbGRlcigpOwogfQogCit2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4g
VjhIVE1MT3B0aW9uRWxlbWVudENvbnN0cnVjdG9yOjpHZXRUZW1wbGF0ZSgpCit7CisgICAgc3Rh
dGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBjYWNoZWRUZW1wbGF0ZTsK
KyAgICBpZiAoIWNhY2hlZFRlbXBsYXRlLklzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIGNhY2hl
ZFRlbXBsYXRlOworCisgICAgdjg6OkhhbmRsZVNjb3BlIHNjb3BlOworICAgIHY4OjpMb2NhbDx2
ODo6RnVuY3Rpb25UZW1wbGF0ZT4gcmVzdWx0ID0gdjg6OkZ1bmN0aW9uVGVtcGxhdGU6Ok5ldyh2
OEhUTUxPcHRpb25FbGVtZW50Q29uc3RydWN0b3JDYWxsYmFjayk7CisKKyAgICB2ODo6TG9jYWw8
djg6Ok9iamVjdFRlbXBsYXRlPiBpbnN0YW5jZSA9IHJlc3VsdC0+SW5zdGFuY2VUZW1wbGF0ZSgp
OworICAgIGluc3RhbmNlLT5TZXRJbnRlcm5hbEZpZWxkQ291bnQoVjhIVE1MT3B0aW9uRWxlbWVu
dDo6aW50ZXJuYWxGaWVsZENvdW50KTsKKyAgICByZXN1bHQtPlNldENsYXNzTmFtZSh2ODo6U3Ry
aW5nOjpOZXcoIkhUTUxPcHRpb25FbGVtZW50IikpOworICAgIHJlc3VsdC0+SW5oZXJpdChWOERP
TVdyYXBwZXI6OmdldFRlbXBsYXRlKFY4Q2xhc3NJbmRleDo6SFRNTE9QVElPTkVMRU1FTlQpKTsK
KworICAgIGNhY2hlZFRlbXBsYXRlID0gdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxh
dGU+OjpOZXcocmVzdWx0KTsKKyAgICByZXR1cm4gY2FjaGVkVGVtcGxhdGU7Cit9CisKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4V2Vi
R0xCeXRlQXJyYXlDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4V2ViR0xCeXRlQXJyYXlDdXN0b20uY3BwCShyZXZpc2lvbiA1NDMwOSkKKysrIFdl
YkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4V2ViR0xCeXRlQXJyYXlDdXN0b20uY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zOSw3ICszOSw2IEBACiAjaW5jbHVkZSAiVjhXZWJHTEFycmF5QnVmZmVy
LmgiCiAjaW5jbHVkZSAiVjhXZWJHTEFycmF5Q3VzdG9tLmgiCiAjaW5jbHVkZSAiVjhXZWJHTEJ5
dGVBcnJheS5oIgotI2luY2x1ZGUgIlY4Q3VzdG9tQmluZGluZy5oIgogI2luY2x1ZGUgIlY4UHJv
eHkuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy92OC9j
dXN0b20vVjhOb2RlQ3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3Y4
L2N1c3RvbS9WOE5vZGVDdXN0b20uY3BwCShyZXZpc2lvbiA1NDMwOSkKKysrIFdlYkNvcmUvYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4Tm9kZUN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5LDcg
KzM5LDYgQEAKICNpbmNsdWRlICJWOEJpbmRpbmcuaCIKICNpbmNsdWRlICJWOENEQVRBU2VjdGlv
bi5oIgogI2luY2x1ZGUgIlY4Q29tbWVudC5oIgotI2luY2x1ZGUgIlY4Q3VzdG9tQmluZGluZy5o
IgogI2luY2x1ZGUgIlY4Q3VzdG9tRXZlbnRMaXN0ZW5lci5oIgogI2luY2x1ZGUgIlY4RG9jdW1l
bnQuaCIKICNpbmNsdWRlICJWOERvY3VtZW50RnJhZ21lbnQuaCIKSW5kZXg6IFdlYkNvcmUvYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTEltYWdlRWxlbWVudENvbnN0cnVjdG9yLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxJbWFnZUVsZW1lbnRDb25z
dHJ1Y3Rvci5jcHAJKHJldmlzaW9uIDU0MzA5KQorKysgV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0
b20vVjhIVE1MSW1hZ2VFbGVtZW50Q29uc3RydWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00
NCwyNiArNDQsOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXY4OjpQZXJzaXN0ZW50PHY4
OjpGdW5jdGlvblRlbXBsYXRlPiBWOEhUTUxJbWFnZUVsZW1lbnRDb25zdHJ1Y3Rvcjo6R2V0VGVt
cGxhdGUoKQorc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2OEhUTUxJbWFnZUVsZW1lbnRD
b25zdHJ1Y3RvckNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7Ci0gICAgc3Rh
dGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBjYWNoZWRUZW1wbGF0ZTsK
LSAgICBpZiAoIWNhY2hlZFRlbXBsYXRlLklzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIGNhY2hl
ZFRlbXBsYXRlOwotCi0gICAgdjg6OkhhbmRsZVNjb3BlIHNjb3BlOwotICAgIHY4OjpMb2NhbDx2
ODo6RnVuY3Rpb25UZW1wbGF0ZT4gcmVzdWx0ID0gdjg6OkZ1bmN0aW9uVGVtcGxhdGU6Ok5ldyhV
U0VfQ0FMTEJBQ0soSFRNTEltYWdlRWxlbWVudENvbnN0cnVjdG9yKSk7Ci0KLSAgICB2ODo6TG9j
YWw8djg6Ok9iamVjdFRlbXBsYXRlPiBpbnN0YW5jZSA9IHJlc3VsdC0+SW5zdGFuY2VUZW1wbGF0
ZSgpOwotICAgIGluc3RhbmNlLT5TZXRJbnRlcm5hbEZpZWxkQ291bnQoVjhIVE1MSW1hZ2VFbGVt
ZW50OjppbnRlcm5hbEZpZWxkQ291bnQpOwotICAgIHJlc3VsdC0+U2V0Q2xhc3NOYW1lKHY4OjpT
dHJpbmc6Ok5ldygiSFRNTEltYWdlRWxlbWVudCIpKTsKLSAgICByZXN1bHQtPkluaGVyaXQoVjhE
T01XcmFwcGVyOjpnZXRUZW1wbGF0ZShWOENsYXNzSW5kZXg6OkhUTUxJTUFHRUVMRU1FTlQpKTsK
LQotICAgIGNhY2hlZFRlbXBsYXRlID0gdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxh
dGU+OjpOZXcocmVzdWx0KTsKLSAgICByZXR1cm4gY2FjaGVkVGVtcGxhdGU7Ci19Ci0KLXY4OjpI
YW5kbGU8djg6OlZhbHVlPiBWOEN1c3RvbTo6djhIVE1MSW1hZ2VFbGVtZW50Q29uc3RydWN0b3JD
YWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQotewogICAgIElOQ19TVEFUUygiRE9N
LkhUTUxJbWFnZUVsZW1lbnQuQ29udHJ1Y3RvciIpOwogCiAgICAgaWYgKCFhcmdzLklzQ29uc3Ry
dWN0Q2FsbCgpKQpAQCAtOTQsNCArNzYsMjIgQEAKICAgICByZXR1cm4gYXJncy5Ib2xkZXIoKTsK
IH0KIAordjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IFY4SFRNTEltYWdlRWxl
bWVudENvbnN0cnVjdG9yOjpHZXRUZW1wbGF0ZSgpCit7CisgICAgc3RhdGljIHY4OjpQZXJzaXN0
ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBjYWNoZWRUZW1wbGF0ZTsKKyAgICBpZiAoIWNhY2hl
ZFRlbXBsYXRlLklzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIGNhY2hlZFRlbXBsYXRlOworCisg
ICAgdjg6OkhhbmRsZVNjb3BlIHNjb3BlOworICAgIHY4OjpMb2NhbDx2ODo6RnVuY3Rpb25UZW1w
bGF0ZT4gcmVzdWx0ID0gdjg6OkZ1bmN0aW9uVGVtcGxhdGU6Ok5ldyh2OEhUTUxJbWFnZUVsZW1l
bnRDb25zdHJ1Y3RvckNhbGxiYWNrKTsKKworICAgIHY4OjpMb2NhbDx2ODo6T2JqZWN0VGVtcGxh
dGU+IGluc3RhbmNlID0gcmVzdWx0LT5JbnN0YW5jZVRlbXBsYXRlKCk7CisgICAgaW5zdGFuY2Ut
PlNldEludGVybmFsRmllbGRDb3VudChWOEhUTUxJbWFnZUVsZW1lbnQ6OmludGVybmFsRmllbGRD
b3VudCk7CisgICAgcmVzdWx0LT5TZXRDbGFzc05hbWUodjg6OlN0cmluZzo6TmV3KCJIVE1MSW1h
Z2VFbGVtZW50IikpOworICAgIHJlc3VsdC0+SW5oZXJpdChWOERPTVdyYXBwZXI6OmdldFRlbXBs
YXRlKFY4Q2xhc3NJbmRleDo6SFRNTElNQUdFRUxFTUVOVCkpOworCisgICAgY2FjaGVkVGVtcGxh
dGUgPSB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT46Ok5ldyhyZXN1bHQpOwor
ICAgIHJldHVybiBjYWNoZWRUZW1wbGF0ZTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJ
bmRleDogV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhTUUxSZXN1bHRTZXRSb3dMaXN0Q3Vz
dG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFNRTFJl
c3VsdFNldFJvd0xpc3RDdXN0b20uY3BwCShyZXZpc2lvbiA1NDMwOSkKKysrIFdlYkNvcmUvYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4U1FMUmVzdWx0U2V0Um93TGlzdEN1c3RvbS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTM1LDcgKzM1LDYgQEAKIAogI2luY2x1ZGUgIlNRTFJlc3VsdFNldFJvd0xpc3Qu
aCIKICNpbmNsdWRlICJWOEJpbmRpbmcuaCIKLSNpbmNsdWRlICJWOEN1c3RvbUJpbmRpbmcuaCIK
ICNpbmNsdWRlICJWOFByb3h5LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKSW5kZXg6IFdlYkNv
cmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4U1ZHTGVuZ3RoQ3VzdG9tLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFNWR0xlbmd0aEN1c3RvbS5jcHAJKHJldmlz
aW9uIDU0MzA5KQorKysgV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhTVkdMZW5ndGhDdXN0
b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw3ICszNSw2IEBACiAKICNpbmNsdWRlICJTVkdM
ZW5ndGguaCIKICNpbmNsdWRlICJWOEJpbmRpbmcuaCIKLSNpbmNsdWRlICJWOEN1c3RvbUJpbmRp
bmcuaCIKICNpbmNsdWRlICJWOFNWR1BPRFR5cGVXcmFwcGVyLmgiCiAjaW5jbHVkZSAiVjhQcm94
eS5oIgogCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFdlYkdMQXJyYXlDdXN0
b20uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFdlYkdMQXJy
YXlDdXN0b20uaAkocmV2aXNpb24gNTQzMDkpCisrKyBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOFdlYkdMQXJyYXlDdXN0b20uaAkod29ya2luZyBjb3B5KQpAQCAtMzYsNyArMzYsNiBAQAog
CiAjaW5jbHVkZSAiVjhCaW5kaW5nLmgiCiAjaW5jbHVkZSAiVjhXZWJHTEFycmF5QnVmZmVyLmgi
Ci0jaW5jbHVkZSAiVjhDdXN0b21CaW5kaW5nLmgiCiAjaW5jbHVkZSAiVjhQcm94eS5oIgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOENh
bnZhc1JlbmRlcmluZ0NvbnRleHQyREN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9i
aW5kaW5ncy92OC9jdXN0b20vVjhDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRDdXN0b20uY3BwCShy
ZXZpc2lvbiA1NDMwOSkKKysrIFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJEQ3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDEsNyArNDEsNiBA
QAogI2luY2x1ZGUgIlY4QmluZGluZy5oIgogI2luY2x1ZGUgIlY4Q2FudmFzR3JhZGllbnQuaCIK
ICNpbmNsdWRlICJWOENhbnZhc1BhdHRlcm4uaCIKLSNpbmNsdWRlICJWOEN1c3RvbUJpbmRpbmcu
aCIKICNpbmNsdWRlICJWOEhUTUxDYW52YXNFbGVtZW50LmgiCiAjaW5jbHVkZSAiVjhIVE1MSW1h
Z2VFbGVtZW50LmgiCiAjaW5jbHVkZSAiVjhIVE1MVmlkZW9FbGVtZW50LmgiCkluZGV4OiBXZWJD
b3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFhNTEh0dHBSZXF1ZXN0Q3VzdG9tLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFhNTEh0dHBSZXF1ZXN0Q3VzdG9t
LmNwcAkocmV2aXNpb24gNTQzMDkpCisrKyBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFhN
TEh0dHBSZXF1ZXN0Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQsNyArMzQsNiBAQAog
I2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiVjhCaW5kaW5nLmgiCiAjaW5jbHVkZSAiVjhC
bG9iLmgiCi0jaW5jbHVkZSAiVjhDdXN0b21CaW5kaW5nLmgiCiAjaW5jbHVkZSAiVjhEb2N1bWVu
dC5oIgogI2luY2x1ZGUgIlY4SFRNTERvY3VtZW50LmgiCiAjaW5jbHVkZSAiVjhQcm94eS5oIgpJ
bmRleDogV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhXZWJHTFVuc2lnbmVkU2hvcnRBcnJh
eUN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhX
ZWJHTFVuc2lnbmVkU2hvcnRBcnJheUN1c3RvbS5jcHAJKHJldmlzaW9uIDU0MzA5KQorKysgV2Vi
Q29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhXZWJHTFVuc2lnbmVkU2hvcnRBcnJheUN1c3RvbS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTM5LDcgKzM5LDYgQEAKICNpbmNsdWRlICJWOFdlYkdMQXJy
YXlCdWZmZXIuaCIKICNpbmNsdWRlICJWOFdlYkdMQXJyYXlDdXN0b20uaCIKICNpbmNsdWRlICJW
OFdlYkdMVW5zaWduZWRTaG9ydEFycmF5LmgiCi0jaW5jbHVkZSAiVjhDdXN0b21CaW5kaW5nLmgi
CiAjaW5jbHVkZSAiVjhQcm94eS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkluZGV4OiBXZWJD
b3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxEYXRhR3JpZEVsZW1lbnRDdXN0b20uY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTERhdGFHcmlkRWxl
bWVudEN1c3RvbS5jcHAJKHJldmlzaW9uIDU0MzA5KQorKysgV2ViQ29yZS9iaW5kaW5ncy92OC9j
dXN0b20vVjhIVE1MRGF0YUdyaWRFbGVtZW50Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzMsNyArMzMsNiBAQAogCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJWOEJpbmRp
bmcuaCIKLSNpbmNsdWRlICJWOEN1c3RvbUJpbmRpbmcuaCIKICNpbmNsdWRlICJWOERhdGFHcmlk
RGF0YVNvdXJjZS5oIgogI2luY2x1ZGUgIlY4UHJveHkuaCIKIApJbmRleDogV2ViQ29yZS9iaW5k
aW5ncy92OC9jdXN0b20vVjhDU1NTdHlsZURlY2xhcmF0aW9uQ3VzdG9tLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOENTU1N0eWxlRGVjbGFyYXRpb25DdXN0
b20uY3BwCShyZXZpc2lvbiA1NDMwOSkKKysrIFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4
Q1NTU3R5bGVEZWNsYXJhdGlvbkN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4LDcgKzM4
LDYgQEAKICNpbmNsdWRlICJFdmVudFRhcmdldC5oIgogCiAjaW5jbHVkZSAiVjhCaW5kaW5nLmgi
Ci0jaW5jbHVkZSAiVjhDdXN0b21CaW5kaW5nLmgiCiAjaW5jbHVkZSAiVjhQcm94eS5oIgogCiAj
aW5jbHVkZSA8d3RmL0FTQ0lJQ1R5cGUuaD4KSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4Q3VzdG9tQmluZGluZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4Q3VzdG9tQmluZGluZy5oCShyZXZpc2lvbiA1NDMwOSkKKysrIFdlYkNvcmUvYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4Q3VzdG9tQmluZGluZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUx
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqIAotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6
Ci0gKiAKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
Ci0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9m
IEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAq
IAotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZ
UklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotIAotI2lmbmRlZiBWOEN1c3RvbUJpbmRpbmdfaAotI2RlZmluZSBWOEN1c3RvbUJp
bmRpbmdfaAotCi0jaW5jbHVkZSAiVjhJbmRleC5oIgotI2luY2x1ZGUgPHY4Lmg+Ci0KLW5hbWVz
cGFjZSBXZWJDb3JlIHsKLSAgICBjbGFzcyBWOEN1c3RvbSB7Ci0gICAgcHVibGljOgotI2RlZmlu
ZSBERUNMQVJFX0NBTExCQUNLKE5BTUUpIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdjgj
I05BTUUjI0NhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCi0jZGVmaW5lIFVTRV9D
QUxMQkFDSyhOQU1FKSBWOEN1c3RvbTo6djgjI05BTUUjI0NhbGxiYWNrCi0KLSAgICAgICAgREVD
TEFSRV9DQUxMQkFDSyhIVE1MQXVkaW9FbGVtZW50Q29uc3RydWN0b3IpOwotICAgICAgICBERUNM
QVJFX0NBTExCQUNLKEhUTUxJbWFnZUVsZW1lbnRDb25zdHJ1Y3Rvcik7Ci0gICAgICAgIERFQ0xB
UkVfQ0FMTEJBQ0soSFRNTE9wdGlvbkVsZW1lbnRDb25zdHJ1Y3Rvcik7Ci0KLSN1bmRlZiBERUNM
QVJFX0NBTExCQUNLCi0gICAgfTsKLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8v
IFY4Q3VzdG9tQmluZGluZ19oCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFdl
YkdMVW5zaWduZWRCeXRlQXJyYXlDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4V2ViR0xVbnNpZ25lZEJ5dGVBcnJheUN1c3RvbS5jcHAJKHJldmlz
aW9uIDU0MzA5KQorKysgV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhXZWJHTFVuc2lnbmVk
Qnl0ZUFycmF5Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzksNyArMzksNiBAQAogI2lu
Y2x1ZGUgIlY4V2ViR0xBcnJheUJ1ZmZlci5oIgogI2luY2x1ZGUgIlY4V2ViR0xBcnJheUN1c3Rv
bS5oIgogI2luY2x1ZGUgIlY4V2ViR0xVbnNpZ25lZEJ5dGVBcnJheS5oIgotI2luY2x1ZGUgIlY4
Q3VzdG9tQmluZGluZy5oIgogI2luY2x1ZGUgIlY4UHJveHkuaCIKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhFbGVtZW50Q3VzdG9tLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEVsZW1lbnRDdXN0
b20uY3BwCShyZXZpc2lvbiA1NDMwOSkKKysrIFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4
RWxlbWVudEN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQzLDcgKzQzLDYgQEAKICNpbmNs
dWRlICJWOEF0dHIuaCIKICNpbmNsdWRlICJWOEJpbmRpbmcuaCIKICNpbmNsdWRlICJWOEJpbmRp
bmdTdGF0ZS5oIgotI2luY2x1ZGUgIlY4Q3VzdG9tQmluZGluZy5oIgogI2luY2x1ZGUgIlY4SFRN
TEVsZW1lbnQuaCIKICNpbmNsdWRlICJWOFByb3h5LmgiCiAjaW5jbHVkZSAiVjhTVkdFbGVtZW50
LmgiCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOENsaXBib2FyZEN1c3RvbS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhDbGlwYm9hcmRD
dXN0b20uY3BwCShyZXZpc2lvbiA1NDMwOSkKKysrIFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9t
L1Y4Q2xpcGJvYXJkQ3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzksNyArMzksNiBAQAog
I2luY2x1ZGUgIkVsZW1lbnQuaCIKIAogI2luY2x1ZGUgIlY4QmluZGluZy5oIgotI2luY2x1ZGUg
IlY4Q3VzdG9tQmluZGluZy5oIgogI2luY2x1ZGUgIlY4Tm9kZS5oIgogI2luY2x1ZGUgIlY4UHJv
eHkuaCIKIApJbmRleDogV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhTaGFyZWRXb3JrZXJD
dXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4U2hh
cmVkV29ya2VyQ3VzdG9tLmNwcAkocmV2aXNpb24gNTQzMDkpCisrKyBXZWJDb3JlL2JpbmRpbmdz
L3Y4L2N1c3RvbS9WOFNoYXJlZFdvcmtlckN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3
LDcgKzM3LDYgQEAKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCiAjaW5jbHVkZSAiRnJhbWUu
aCIKICNpbmNsdWRlICJWOEJpbmRpbmcuaCIKLSNpbmNsdWRlICJWOEN1c3RvbUJpbmRpbmcuaCIK
ICNpbmNsdWRlICJWOFByb3h5LmgiCiAjaW5jbHVkZSAiVjhVdGlsaXRpZXMuaCIKICNpbmNsdWRl
ICJXb3JrZXJDb250ZXh0LmgiCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOExv
Y2F0aW9uQ3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOExvY2F0aW9uQ3VzdG9tLmNwcAkocmV2aXNpb24gNTQzMDkpCisrKyBXZWJDb3JlL2JpbmRp
bmdzL3Y4L2N1c3RvbS9WOExvY2F0aW9uQ3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDEs
NyArNDEsNiBAQAogI2luY2x1ZGUgIlNjcmlwdENvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJWOEJp
bmRpbmcuaCIKICNpbmNsdWRlICJWOEJpbmRpbmdTdGF0ZS5oIgotI2luY2x1ZGUgIlY4Q3VzdG9t
QmluZGluZy5oIgogI2luY2x1ZGUgIlY4Q3VzdG9tRXZlbnRMaXN0ZW5lci5oIgogI2luY2x1ZGUg
IlY4RE9NV2luZG93LmgiCiAjaW5jbHVkZSAiVjhMb2NhdGlvbi5oIgpJbmRleDogV2ViQ29yZS9i
aW5kaW5ncy92OC9jdXN0b20vVjhBdHRyQ3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEF0dHJDdXN0b20uY3BwCShyZXZpc2lvbiA1NDMwOSkKKysr
IFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4QXR0ckN1c3RvbS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTM2LDcgKzM2LDYgQEAKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCiAjaW5jbHVk
ZSAiVjhCaW5kaW5nLmgiCiAjaW5jbHVkZSAiVjhCaW5kaW5nU3RhdGUuaCIKLSNpbmNsdWRlICJW
OEN1c3RvbUJpbmRpbmcuaCIKICNpbmNsdWRlICJWOFByb3h5LmgiCiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RXZlbnRTb3VyY2VDb25z
dHJ1Y3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhF
dmVudFNvdXJjZUNvbnN0cnVjdG9yLmNwcAkocmV2aXNpb24gNTQzMDkpCisrKyBXZWJDb3JlL2Jp
bmRpbmdzL3Y4L2N1c3RvbS9WOEV2ZW50U291cmNlQ29uc3RydWN0b3IuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zNiw3ICszNiw2IEBACiAjaW5jbHVkZSAiRXZlbnRTb3VyY2UuaCIKICNpbmNsdWRl
ICJGcmFtZS5oIgogI2luY2x1ZGUgIlY4QmluZGluZy5oIgotI2luY2x1ZGUgIlY4Q3VzdG9tQmlu
ZGluZy5oIgogI2luY2x1ZGUgIlY4UHJveHkuaCIKICNpbmNsdWRlICJWOFV0aWxpdGllcy5oIgog
I2luY2x1ZGUgIldvcmtlckNvbnRleHQuaCIKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4WE1MSHR0cFJlcXVlc3RVcGxvYWRDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4WE1MSHR0cFJlcXVlc3RVcGxvYWRDdXN0b20uY3BwCShy
ZXZpc2lvbiA1NDMwOSkKKysrIFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4WE1MSHR0cFJl
cXVlc3RVcGxvYWRDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw3ICszMyw2IEBACiAK
ICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCiAjaW5jbHVkZSAiVjhCaW5kaW5nLmgiCi0jaW5j
bHVkZSAiVjhDdXN0b21CaW5kaW5nLmgiCiAjaW5jbHVkZSAiVjhQcm94eS5oIgogI2luY2x1ZGUg
IlY4VXRpbGl0aWVzLmgiCiAjaW5jbHVkZSAiWE1MSHR0cFJlcXVlc3QuaCIKSW5kZXg6IFdlYkNv
cmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4TWVzc2FnZVBvcnRDdXN0b20uY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4TWVzc2FnZVBvcnRDdXN0b20uY3BwCShy
ZXZpc2lvbiA1NDMwOSkKKysrIFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4TWVzc2FnZVBv
cnRDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw3ICszNCw2IEBACiAjaW5jbHVkZSAi
TWVzc2FnZVBvcnQuaCIKICNpbmNsdWRlICJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKICNpbmNs
dWRlICJWOEJpbmRpbmcuaCIKLSNpbmNsdWRlICJWOEN1c3RvbUJpbmRpbmcuaCIKICNpbmNsdWRl
ICJWOE1lc3NhZ2VQb3J0Q3VzdG9tLmgiCiAjaW5jbHVkZSAiVjhNZXNzYWdlUG9ydC5oIgogI2lu
Y2x1ZGUgIlY4UHJveHkuaCIKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Tm9k
ZUZpbHRlckN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0
b20vVjhOb2RlRmlsdGVyQ3VzdG9tLmNwcAkocmV2aXNpb24gNTQzMDkpCisrKyBXZWJDb3JlL2Jp
bmRpbmdzL3Y4L2N1c3RvbS9WOE5vZGVGaWx0ZXJDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zNSw3ICszNSw2IEBACiAjaW5jbHVkZSAiTm9kZUZpbHRlci5oIgogCiAjaW5jbHVkZSAiVjhC
aW5kaW5nLmgiCi0jaW5jbHVkZSAiVjhDdXN0b21CaW5kaW5nLmgiCiAjaW5jbHVkZSAiVjhQcm94
eS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1
c3RvbS9WOEhUTUxQbHVnSW5FbGVtZW50Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxQbHVnSW5FbGVtZW50Q3VzdG9tLmNwcAkocmV2aXNp
b24gNTQzMDkpCisrKyBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxQbHVnSW5FbGVt
ZW50Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsNyArMzMsNiBAQAogCiAjaW5jbHVk
ZSAiU2NyaXB0SW5zdGFuY2UuaCIKICNpbmNsdWRlICJWOEJpbmRpbmcuaCIKLSNpbmNsdWRlICJW
OEN1c3RvbUJpbmRpbmcuaCIKICNpbmNsdWRlICJWOEhUTUxBcHBsZXRFbGVtZW50LmgiCiAjaW5j
bHVkZSAiVjhIVE1MRW1iZWRFbGVtZW50LmgiCiAjaW5jbHVkZSAiVjhIVE1MT2JqZWN0RWxlbWVu
dC5oIgpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhBYnN0cmFjdFdvcmtlckN1
c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhBYnN0
cmFjdFdvcmtlckN1c3RvbS5jcHAJKHJldmlzaW9uIDU0MzA5KQorKysgV2ViQ29yZS9iaW5kaW5n
cy92OC9jdXN0b20vVjhBYnN0cmFjdFdvcmtlckN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTM3LDcgKzM3LDYgQEAKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCiAjaW5jbHVkZSAiU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dC5oIgogI2luY2x1ZGUgIlY4QmluZGluZy5oIgotI2luY2x1ZGUg
IlY4Q3VzdG9tQmluZGluZy5oIgogI2luY2x1ZGUgIlY4UHJveHkuaCIKICNpbmNsdWRlICJWOFV0
aWxpdGllcy5oIgogI2luY2x1ZGUgIldvcmtlckNvbnRleHRFeGVjdXRpb25Qcm94eS5oIgpJbmRl
eDogV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhTVkdFbGVtZW50SW5zdGFuY2VDdXN0b20u
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4U1ZHRWxlbWVu
dEluc3RhbmNlQ3VzdG9tLmNwcAkocmV2aXNpb24gNTQzMDkpCisrKyBXZWJDb3JlL2JpbmRpbmdz
L3Y4L2N1c3RvbS9WOFNWR0VsZW1lbnRJbnN0YW5jZUN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTM3LDcgKzM3LDYgQEAKICNpbmNsdWRlICJTVkdFbGVtZW50SW5zdGFuY2UuaCIKIAogI2lu
Y2x1ZGUgIlY4QmluZGluZy5oIgotI2luY2x1ZGUgIlY4Q3VzdG9tQmluZGluZy5oIgogI2luY2x1
ZGUgIlY4Q3VzdG9tRXZlbnRMaXN0ZW5lci5oIgogI2luY2x1ZGUgIlY4U1ZHUE9EVHlwZVdyYXBw
ZXIuaCIKICNpbmNsdWRlICJWOFByb3h5LmgiCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1
c3RvbS9WOEhpc3RvcnlDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3Mv
djgvY3VzdG9tL1Y4SGlzdG9yeUN1c3RvbS5jcHAJKHJldmlzaW9uIDU0MzA5KQorKysgV2ViQ29y
ZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIaXN0b3J5Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzYsNyArMzYsNiBAQAogI2luY2x1ZGUgIlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgogI2lu
Y2x1ZGUgIlY4QmluZGluZy5oIgogI2luY2x1ZGUgIlY4QmluZGluZ1N0YXRlLmgiCi0jaW5jbHVk
ZSAiVjhDdXN0b21CaW5kaW5nLmgiCiAjaW5jbHVkZSAiVjhET01XaW5kb3cuaCIKICNpbmNsdWRl
ICJWOFByb3h5LmgiCiAKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTElG
cmFtZUVsZW1lbnRDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4SFRNTElGcmFtZUVsZW1lbnRDdXN0b20uY3BwCShyZXZpc2lvbiA1NDMwOSkKKysr
IFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTElGcmFtZUVsZW1lbnRDdXN0b20uY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zNSw3ICszNSw2IEBACiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgi
IAogI2luY2x1ZGUgIlY4QmluZGluZy5oIgogI2luY2x1ZGUgIlY4QmluZGluZ1N0YXRlLmgiCi0j
aW5jbHVkZSAiVjhDdXN0b21CaW5kaW5nLmgiCiAjaW5jbHVkZSAiVjhQcm94eS5oIgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEV2ZW50
U291cmNlQ3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOEV2ZW50U291cmNlQ3VzdG9tLmNwcAkocmV2aXNpb24gNTQzMDkpCisrKyBXZWJDb3JlL2Jp
bmRpbmdzL3Y4L2N1c3RvbS9WOEV2ZW50U291cmNlQ3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzEsNyArMzEsNiBAQAogI2luY2x1ZGUgIkV2ZW50U291cmNlLmgiCiAKICNpbmNsdWRlICJW
OEJpbmRpbmcuaCIKLSNpbmNsdWRlICJWOEN1c3RvbUJpbmRpbmcuaCIKICNpbmNsdWRlICJWOFBy
b3h5LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4R2VvbG9jYXRpb25DdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4R2VvbG9jYXRpb25DdXN0b20uY3BwCShyZXZpc2lvbiA1NDMwOSkK
KysrIFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4R2VvbG9jYXRpb25DdXN0b20uY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yOSw3ICsyOSw2IEBACiAjaW5jbHVkZSAiR2VvbG9jYXRpb24uaCIK
IAogI2luY2x1ZGUgIlY4QmluZGluZy5oIgotI2luY2x1ZGUgIlY4Q3VzdG9tQmluZGluZy5oIgog
I2luY2x1ZGUgIlY4Q3VzdG9tUG9zaXRpb25DYWxsYmFjay5oIgogI2luY2x1ZGUgIlY4Q3VzdG9t
UG9zaXRpb25FcnJvckNhbGxiYWNrLmgiCiAjaW5jbHVkZSAiVjhQcm94eS5oIgpJbmRleDogV2Vi
Q29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhJbnNwZWN0b3JGcm9udGVuZEhvc3RDdXN0b20uY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SW5zcGVjdG9yRnJv
bnRlbmRIb3N0Q3VzdG9tLmNwcAkocmV2aXNpb24gNTQzMDkpCisrKyBXZWJDb3JlL2JpbmRpbmdz
L3Y4L2N1c3RvbS9WOEluc3BlY3RvckZyb250ZW5kSG9zdEN1c3RvbS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTM1LDcgKzM1LDYgQEAKICNpbmNsdWRlICJJbnNwZWN0b3JGcm9udGVuZEhvc3QuaCIK
IAogI2luY2x1ZGUgIlY4QmluZGluZy5oIgotI2luY2x1ZGUgIlY4Q3VzdG9tQmluZGluZy5oIgog
I2luY2x1ZGUgIlY4UHJveHkuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpJbmRleDogV2ViQ29y
ZS9iaW5kaW5ncy92OC9jdXN0b20vVjhTUUxUcmFuc2FjdGlvbkN1c3RvbS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhTUUxUcmFuc2FjdGlvbkN1c3RvbS5j
cHAJKHJldmlzaW9uIDU0MzA5KQorKysgV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhTUUxU
cmFuc2FjdGlvbkN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3LDcgKzM3LDYgQEAKICNp
bmNsdWRlICJEYXRhYmFzZS5oIgogI2luY2x1ZGUgIlNRTFZhbHVlLmgiCiAjaW5jbHVkZSAiVjhC
aW5kaW5nLmgiCi0jaW5jbHVkZSAiVjhDdXN0b21CaW5kaW5nLmgiCiAjaW5jbHVkZSAiVjhDdXN0
b21TUUxTdGF0ZW1lbnRDYWxsYmFjay5oIgogI2luY2x1ZGUgIlY4Q3VzdG9tU1FMU3RhdGVtZW50
RXJyb3JDYWxsYmFjay5oIgogI2luY2x1ZGUgIlY4UHJveHkuaCIKSW5kZXg6IFdlYkNvcmUvYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4V2ViR0xVbnNpZ25lZEludEFycmF5Q3VzdG9tLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFdlYkdMVW5zaWduZWRJbnRBcnJh
eUN1c3RvbS5jcHAJKHJldmlzaW9uIDU0MzA5KQorKysgV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0
b20vVjhXZWJHTFVuc2lnbmVkSW50QXJyYXlDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
OSw3ICszOSw2IEBACiAjaW5jbHVkZSAiVjhXZWJHTEFycmF5QnVmZmVyLmgiCiAjaW5jbHVkZSAi
VjhXZWJHTEFycmF5Q3VzdG9tLmgiCiAjaW5jbHVkZSAiVjhXZWJHTFVuc2lnbmVkSW50QXJyYXku
aCIKLSNpbmNsdWRlICJWOEN1c3RvbUJpbmRpbmcuaCIKICNpbmNsdWRlICJWOFByb3h5LmgiCiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4
V2ViR0xJbnRBcnJheUN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy92
OC9jdXN0b20vVjhXZWJHTEludEFycmF5Q3VzdG9tLmNwcAkocmV2aXNpb24gNTQzMDkpCisrKyBX
ZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFdlYkdMSW50QXJyYXlDdXN0b20uY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zOSw3ICszOSw2IEBACiAjaW5jbHVkZSAiVjhXZWJHTEFycmF5QnVmZmVy
LmgiCiAjaW5jbHVkZSAiVjhXZWJHTEFycmF5Q3VzdG9tLmgiCiAjaW5jbHVkZSAiVjhXZWJHTElu
dEFycmF5LmgiCi0jaW5jbHVkZSAiVjhDdXN0b21CaW5kaW5nLmgiCiAjaW5jbHVkZSAiVjhQcm94
eS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1
c3RvbS9WOEhUTUxBdWRpb0VsZW1lbnRDb25zdHJ1Y3Rvci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MQXVkaW9FbGVtZW50Q29uc3RydWN0b3IuY3Bw
CShyZXZpc2lvbiA1NDMwOSkKKysrIFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTEF1
ZGlvRWxlbWVudENvbnN0cnVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDQsMjYgKzQ0LDgg
QEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi12ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25U
ZW1wbGF0ZT4gVjhIVE1MQXVkaW9FbGVtZW50Q29uc3RydWN0b3I6OkdldFRlbXBsYXRlKCkKK3N0
YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdjhIVE1MQXVkaW9FbGVtZW50Q29uc3RydWN0b3JD
YWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewotICAgIHN0YXRpYyB2ODo6UGVy
c2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gY2FjaGVkVGVtcGxhdGU7Ci0gICAgaWYgKCFj
YWNoZWRUZW1wbGF0ZS5Jc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBjYWNoZWRUZW1wbGF0ZTsK
LQotICAgIHY4OjpIYW5kbGVTY29wZSBzY29wZTsKLSAgICB2ODo6TG9jYWw8djg6OkZ1bmN0aW9u
VGVtcGxhdGU+IHJlc3VsdCA9IHY4OjpGdW5jdGlvblRlbXBsYXRlOjpOZXcoVVNFX0NBTExCQUNL
KEhUTUxBdWRpb0VsZW1lbnRDb25zdHJ1Y3RvcikpOwotCi0gICAgdjg6OkxvY2FsPHY4OjpPYmpl
Y3RUZW1wbGF0ZT4gaW5zdGFuY2UgPSByZXN1bHQtPkluc3RhbmNlVGVtcGxhdGUoKTsKLSAgICBp
bnN0YW5jZS0+U2V0SW50ZXJuYWxGaWVsZENvdW50KFY4SFRNTEF1ZGlvRWxlbWVudDo6aW50ZXJu
YWxGaWVsZENvdW50KTsKLSAgICByZXN1bHQtPlNldENsYXNzTmFtZSh2ODo6U3RyaW5nOjpOZXco
IkhUTUxBdWRpb0VsZW1lbnQiKSk7Ci0gICAgcmVzdWx0LT5Jbmhlcml0KFY4RE9NV3JhcHBlcjo6
Z2V0VGVtcGxhdGUoVjhDbGFzc0luZGV4OjpIVE1MQVVESU9FTEVNRU5UKSk7Ci0KLSAgICBjYWNo
ZWRUZW1wbGF0ZSA9IHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPjo6TmV3KHJl
c3VsdCk7Ci0gICAgcmV0dXJuIGNhY2hlZFRlbXBsYXRlOwotfQotCi12ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gVjhDdXN0b206OnY4SFRNTEF1ZGlvRWxlbWVudENvbnN0cnVjdG9yQ2FsbGJhY2soY29u
c3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKLXsKICAgICBJTkNfU1RBVFMoIkRPTS5IVE1MQXVkaW9F
bGVtZW50LkNvbnRydWN0b3IiKTsKIAogICAgIGlmICghYXJncy5Jc0NvbnN0cnVjdENhbGwoKSkK
QEAgLTk0LDQgKzc2LDIyIEBACiAgICAgcmV0dXJuIGFyZ3MuSG9sZGVyKCk7CiB9CiAKK3Y4OjpQ
ZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBWOEhUTUxBdWRpb0VsZW1lbnRDb25zdHJ1
Y3Rvcjo6R2V0VGVtcGxhdGUoKQoreworICAgIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVu
Y3Rpb25UZW1wbGF0ZT4gY2FjaGVkVGVtcGxhdGU7CisgICAgaWYgKCFjYWNoZWRUZW1wbGF0ZS5J
c0VtcHR5KCkpCisgICAgICAgIHJldHVybiBjYWNoZWRUZW1wbGF0ZTsKKworICAgIHY4OjpIYW5k
bGVTY29wZSBzY29wZTsKKyAgICB2ODo6TG9jYWw8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHJlc3Vs
dCA9IHY4OjpGdW5jdGlvblRlbXBsYXRlOjpOZXcodjhIVE1MQXVkaW9FbGVtZW50Q29uc3RydWN0
b3JDYWxsYmFjayk7CisKKyAgICB2ODo6TG9jYWw8djg6Ok9iamVjdFRlbXBsYXRlPiBpbnN0YW5j
ZSA9IHJlc3VsdC0+SW5zdGFuY2VUZW1wbGF0ZSgpOworICAgIGluc3RhbmNlLT5TZXRJbnRlcm5h
bEZpZWxkQ291bnQoVjhIVE1MQXVkaW9FbGVtZW50OjppbnRlcm5hbEZpZWxkQ291bnQpOworICAg
IHJlc3VsdC0+U2V0Q2xhc3NOYW1lKHY4OjpTdHJpbmc6Ok5ldygiSFRNTEF1ZGlvRWxlbWVudCIp
KTsKKyAgICByZXN1bHQtPkluaGVyaXQoVjhET01XcmFwcGVyOjpnZXRUZW1wbGF0ZShWOENsYXNz
SW5kZXg6OkhUTUxBVURJT0VMRU1FTlQpKTsKKworICAgIGNhY2hlZFRlbXBsYXRlID0gdjg6OlBl
cnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+OjpOZXcocmVzdWx0KTsKKyAgICByZXR1cm4g
Y2FjaGVkVGVtcGxhdGU7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNv
cmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4V2ViR0xTaG9ydEFycmF5Q3VzdG9tLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFdlYkdMU2hvcnRBcnJheUN1c3Rv
bS5jcHAJKHJldmlzaW9uIDU0MzA5KQorKysgV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhX
ZWJHTFNob3J0QXJyYXlDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw3ICszOSw2IEBA
CiAjaW5jbHVkZSAiVjhXZWJHTEFycmF5QnVmZmVyLmgiCiAjaW5jbHVkZSAiVjhXZWJHTEFycmF5
Q3VzdG9tLmgiCiAjaW5jbHVkZSAiVjhXZWJHTFNob3J0QXJyYXkuaCIKLSNpbmNsdWRlICJWOEN1
c3RvbUJpbmRpbmcuaCIKICNpbmNsdWRlICJWOFByb3h5LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4WE1MSHR0cFJlcXVlc3RDb25z
dHJ1Y3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhY
TUxIdHRwUmVxdWVzdENvbnN0cnVjdG9yLmNwcAkocmV2aXNpb24gNTQzMDkpCisrKyBXZWJDb3Jl
L2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFhNTEh0dHBSZXF1ZXN0Q29uc3RydWN0b3IuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMyw3ICszMyw2IEBACiAKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1
ZGUgIlY4QmluZGluZy5oIgotI2luY2x1ZGUgIlY4Q3VzdG9tQmluZGluZy5oIgogI2luY2x1ZGUg
IlY4UHJveHkuaCIKICNpbmNsdWRlICJWOFV0aWxpdGllcy5oIgogI2luY2x1ZGUgIldvcmtlckNv
bnRleHQuaCIK
</data>
<flag name="review"
          id="30693"
          type_id="1"
          status="+"
          setter="dglazkov"
    />
          </attachment>
      

    </bug>

</bugzilla>