<?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>157756</bug_id>
          
          <creation_ts>2016-05-16 14:22:35 -0700</creation_ts>
          <short_desc>WTF should know about Language</short_desc>
          <delta_ts>2016-05-17 13:02:43 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Template Framework</component>
          <version>WebKit 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>
          
          <blocked>157804</blocked>
    
    <blocked>157755</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>achristensen</cc>
    
    <cc>andersca</cc>
    
    <cc>ap</cc>
    
    <cc>bfulgham</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>ggaren</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>mrobinson</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1193528</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-05-16 14:22:35 -0700</bug_when>
    <thetext>Patch forthcoming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1193533</commentid>
    <comment_count>1</comment_count>
      <attachid>279047</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-05-16 14:33:19 -0700</bug_when>
    <thetext>Created attachment 279047
something like this maybe</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1193669</commentid>
    <comment_count>2</comment_count>
      <attachid>279081</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-05-16 19:37:18 -0700</bug_when>
    <thetext>Created attachment 279081
or maybe this</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1193676</commentid>
    <comment_count>3</comment_count>
      <attachid>279084</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-05-16 19:51:34 -0700</bug_when>
    <thetext>Created attachment 279084
less wrong</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1193729</commentid>
    <comment_count>4</comment_count>
      <attachid>279100</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-05-16 21:31:15 -0700</bug_when>
    <thetext>Created attachment 279100
more of it compiles than ever before</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1193736</commentid>
    <comment_count>5</comment_count>
      <attachid>279102</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-05-16 22:06:35 -0700</bug_when>
    <thetext>Created attachment 279102
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1193737</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-05-16 22:09:14 -0700</bug_when>
    <thetext>Attachment 279102 did not pass style-queue:


ERROR: Source/WebKit2/UIProcess/Launcher/mac/ProcessLauncherMac.mm:43:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WTF/wtf/PlatformGTK.cmake:10:  Alphabetical sorting problem. &quot;PlatformUserPreferredLanguagesUnix.cpp&quot; should be before &quot;glib/RunLoopGLib.cpp&quot;.  [list/order] [5]
ERROR: Source/WTF/wtf/spi/cf/CFBundleSPI.h:40:  The parameter name &quot;stringEncoding&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/wtf/spi/cf/CFBundleSPI.h:41:  The parameter name &quot;stringEncoding&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.mm:52:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 5 in 65 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1193738</commentid>
    <comment_count>7</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-05-16 22:12:18 -0700</bug_when>
    <thetext>I CC&apos;d a bunch of people because this touches port-specific things in pretty much every port.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1193757</commentid>
    <comment_count>8</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-05-16 23:30:01 -0700</bug_when>
    <thetext>Is something motivating this change?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1193763</commentid>
    <comment_count>9</comment_count>
      <attachid>279102</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-05-16 23:48:33 -0700</bug_when>
    <thetext>Comment on attachment 279102
the patch

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

&gt; Source/WebCore/platform/Language.cpp:41
&gt; +static void registerLanguageDidChangeCallbackIfNecessary()

What&apos;s this all about?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1193803</commentid>
    <comment_count>10</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-05-17 07:33:16 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; Is something motivating this change?

https://bugs.webkit.org/show_bug.cgi?id=157755</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1193804</commentid>
    <comment_count>11</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-05-17 07:36:00 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; Comment on attachment 279102 [details]
&gt; the patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=279102&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/Language.cpp:41
&gt; &gt; +static void registerLanguageDidChangeCallbackIfNecessary()
&gt; 
&gt; What&apos;s this all about?

The changelog has more details but basically, when the platform preferred language was detected in WebCore, languageDidChange would get called by that code. Now that code is in WTF but languageDidChane is still in WebCore so we need a callback mechanism.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1193875</commentid>
    <comment_count>12</comment_count>
      <attachid>279102</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2016-05-17 10:52:40 -0700</bug_when>
    <thetext>Comment on attachment 279102
the patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1193885</commentid>
    <comment_count>13</comment_count>
      <attachid>279102</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2016-05-17 11:19:11 -0700</bug_when>
    <thetext>Comment on attachment 279102
the patch

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

Looks fine to me.

&gt; Source/WTF/ChangeLog:13
&gt; +        - Move WebCore::platformUserPreferredLanguages() to WTF::platformUserPreferredLanguages().

One question that I&apos;m not sure how to answer is whether sandboxed apps using JSC still work. AppSandboxed ones hopefully do (still could be worth testing), but Apple ones with custom sandboxes are more concerning.

&gt; Source/WTF/ChangeLog:20
&gt; +        Moving platformUserPreferredLanguages() is mostly easy except for the weird callback.
&gt; +        That function would call languageDidChange(), which needs to stay in WebCore. So, this
&gt; +        gives WebCore the ability to register a languageDidChange callback. Other than this new

So other JSC clients will not dynamically adapt to system language change?

Note that I&apos;m not entirely sure if they should, or even if Safari should.

&gt; Source/WTF/wtf/BlockObjCExceptions.mm:34
&gt; +    NSLog(@&quot;*** WebKit discarding exception: &lt;%@&gt; %@&quot;, [exception name], [exception reason]);

I guess we can still say WebKit here, although it would confuse pure JSC users.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1193892</commentid>
    <comment_count>14</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-05-17 11:42:44 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; Comment on attachment 279102 [details]
&gt; the patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=279102&amp;action=review
&gt; 
&gt; Looks fine to me.
&gt; 
&gt; &gt; Source/WTF/ChangeLog:13
&gt; &gt; +        - Move WebCore::platformUserPreferredLanguages() to WTF::platformUserPreferredLanguages().
&gt; 
&gt; One question that I&apos;m not sure how to answer is whether sandboxed apps using
&gt; JSC still work. AppSandboxed ones hopefully do (still could be worth
&gt; testing), but Apple ones with custom sandboxes are more concerning.

Is there a way to defend against sandboxing so that this returns some sensible default (heck, even en_us) when the sandbox doesn&apos;t allow us to do anything smarter?

&gt; 
&gt; &gt; Source/WTF/ChangeLog:20
&gt; &gt; +        Moving platformUserPreferredLanguages() is mostly easy except for the weird callback.
&gt; &gt; +        That function would call languageDidChange(), which needs to stay in WebCore. So, this
&gt; &gt; +        gives WebCore the ability to register a languageDidChange callback. Other than this new
&gt; 
&gt; So other JSC clients will not dynamically adapt to system language change?

They will, but they don&apos;t need a callback to do it.

The current JSC implementation in trunk will ask WebCore for the &quot;default language&quot; every time a global object&apos;s code asks for the default locale for the first time.  So, if you change the platform settings, they will take effect no later than the next time JSC creates a global object.

Once I finish https://bugs.webkit.org/show_bug.cgi?id=157755, it will ask either WTF (via platformUserPreferredLanguages()) or WebCore (the same way it does now).  It will still ask WebCore when the global object is a DOM global object, since WebCore adds its own abilities to override this setting.

&gt; 
&gt; Note that I&apos;m not entirely sure if they should, or even if Safari should.

Yeah, it&apos;s all a bit funky.  I wonder if removing that functionality would break anything at all.

&gt; 
&gt; &gt; Source/WTF/wtf/BlockObjCExceptions.mm:34
&gt; &gt; +    NSLog(@&quot;*** WebKit discarding exception: &lt;%@&gt; %@&quot;, [exception name], [exception reason]);
&gt; 
&gt; I guess we can still say WebKit here, although it would confuse pure JSC
&gt; users.

Oh, that&apos;s funny.  I added a FIXME and filed https://bugs.webkit.org/show_bug.cgi?id=157804.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1193898</commentid>
    <comment_count>15</comment_count>
      <attachid>279142</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-05-17 11:48:29 -0700</bug_when>
    <thetext>Created attachment 279142
patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1193901</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-05-17 11:50:11 -0700</bug_when>
    <thetext>Attachment 279142 did not pass style-queue:


ERROR: Source/WebKit2/UIProcess/Launcher/mac/ProcessLauncherMac.mm:43:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WTF/wtf/PlatformGTK.cmake:10:  Alphabetical sorting problem. &quot;PlatformUserPreferredLanguagesUnix.cpp&quot; should be before &quot;glib/RunLoopGLib.cpp&quot;.  [list/order] [5]
ERROR: Source/WTF/wtf/spi/cf/CFBundleSPI.h:40:  The parameter name &quot;stringEncoding&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/wtf/spi/cf/CFBundleSPI.h:41:  The parameter name &quot;stringEncoding&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.mm:52:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 5 in 65 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1193903</commentid>
    <comment_count>17</comment_count>
      <attachid>279142</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-05-17 11:52:03 -0700</bug_when>
    <thetext>Comment on attachment 279142
patch for landing

I&apos;ll let CQ worry about this beast.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1193928</commentid>
    <comment_count>18</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2016-05-17 12:34:23 -0700</bug_when>
    <thetext>&gt; Is there a way to defend against sandboxing so that this returns some sensible default (heck, even en_us) when the sandbox doesn&apos;t allow us to do anything smarter?

It may happen to work that way - library calls below us will fail (e.g. CFPreferences), and ideally, we&apos;ll just hit all the right fallback paths.

The cost will of course be that sandbox violation logs will be generated, which is far from free.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1193929</commentid>
    <comment_count>19</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-05-17 12:35:43 -0700</bug_when>
    <thetext>(In reply to comment #18)
&gt; &gt; Is there a way to defend against sandboxing so that this returns some sensible default (heck, even en_us) when the sandbox doesn&apos;t allow us to do anything smarter?
&gt; 
&gt; It may happen to work that way - library calls below us will fail (e.g.
&gt; CFPreferences), and ideally, we&apos;ll just hit all the right fallback paths.
&gt; 
&gt; The cost will of course be that sandbox violation logs will be generated,
&gt; which is far from free.

That&apos;s probably pretty good.  Hopefully our caching causes us to remember the failure, so that we do this only once per process.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1193930</commentid>
    <comment_count>20</comment_count>
      <attachid>279142</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-05-17 12:37:56 -0700</bug_when>
    <thetext>Comment on attachment 279142
patch for landing

Clearing flags on attachment: 279142

Committed r201038: &lt;http://trac.webkit.org/changeset/201038&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1193931</commentid>
    <comment_count>21</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-05-17 12:38:04 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1193939</commentid>
    <comment_count>22</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2016-05-17 12:57:14 -0700</bug_when>
    <thetext>&gt; &gt; Note that I&apos;m not entirely sure if they should, or even if Safari should.

&gt; Yeah, it&apos;s all a bit funky.  I wonder if removing that functionality would break anything at all.

Well, it would definitely change the behavior - once you change the language, new tabs will pick it, but old tabs will keep the old one.

What I don&apos;t know is what the expectation for user experience when changing languages is. The pref pane says that running applications will need to be restarted, but in personal experience, that may not be quite right, and may not match actual user expectations. I may have the wrong impression though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1193946</commentid>
    <comment_count>23</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-05-17 13:02:43 -0700</bug_when>
    <thetext>(In reply to comment #22)
&gt; &gt; &gt; Note that I&apos;m not entirely sure if they should, or even if Safari should.
&gt; 
&gt; &gt; Yeah, it&apos;s all a bit funky.  I wonder if removing that functionality would break anything at all.
&gt; 
&gt; Well, it would definitely change the behavior - once you change the
&gt; language, new tabs will pick it, but old tabs will keep the old one.

Right.  It&apos;s a behavior change for sure, but I&apos;m not sure if it&apos;s a bad one or a benign one.

&gt; 
&gt; What I don&apos;t know is what the expectation for user experience when changing
&gt; languages is. The pref pane says that running applications will need to be
&gt; restarted, but in personal experience, that may not be quite right, and may
&gt; not match actual user expectations. I may have the wrong impression though.

My impression has always been that you need to restart an app for the changes to fully take effect, but that the changes may take partial effect in some apps immediately.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>279047</attachid>
            <date>2016-05-16 14:33:19 -0700</date>
            <delta_ts>2016-05-16 19:37:18 -0700</delta_ts>
            <desc>something like this maybe</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>40222</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvd3RmL0Jsb2NrT2JqQ0V4Y2VwdGlvbnMuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV1RGL3d0Zi9CbG9ja09iakNFeGNlcHRpb25zLmgJKHJldmlzaW9uIDApCisrKyBT
b3VyY2UvV1RGL3d0Zi9CbG9ja09iakNFeGNlcHRpb25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSwzMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwMywgMjAxNiBBcHBsZSBJbmMuICBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4g
CisgKi8KKworI2ltcG9ydCA8Rm91bmRhdGlvbi9OU0V4Y2VwdGlvbi5oPgorCitXRUJDT1JFX0VY
UE9SVCBOT19SRVRVUk5fRFVFX1RPX0FTU0VSVCB2b2lkIFJlcG9ydEJsb2NrZWRPYmpDRXhjZXB0
aW9uKE5TRXhjZXB0aW9uICopOworCisjZGVmaW5lIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9O
UyBAdHJ5IHsKKyNkZWZpbmUgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUyB9IEBjYXRjaChOU0V4
Y2VwdGlvbiAqbG9jYWxFeGNlcHRpb24pIHsgUmVwb3J0QmxvY2tlZE9iakNFeGNlcHRpb24obG9j
YWxFeGNlcHRpb24pOyB9CisKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL0Jsb2NrT2JqQ0V4Y2VwdGlv
bnMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvQmxvY2tPYmpDRXhjZXB0aW9ucy5t
bQkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XVEYvd3RmL0Jsb2NrT2JqQ0V4Y2VwdGlvbnMubW0J
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzOCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAw
MywgMjAwNywgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNp
bXBvcnQgIkJsb2NrT2JqQ0V4Y2VwdGlvbnMuaCIKKworI2ltcG9ydCA8d3RmL0Fzc2VydGlvbnMu
aD4KKwordm9pZCBSZXBvcnRCbG9ja2VkT2JqQ0V4Y2VwdGlvbihOU0V4Y2VwdGlvbiAqZXhjZXB0
aW9uKQoreworI2lmIEFTU0VSVF9ESVNBQkxFRAorICAgIE5TTG9nKEAiKioqIFdlYktpdCBkaXNj
YXJkaW5nIGV4Y2VwdGlvbjogPCVAPiAlQCIsIFtleGNlcHRpb24gbmFtZV0sIFtleGNlcHRpb24g
cmVhc29uXSk7CisjZWxzZQorICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoMCwgIlVuY2F1Z2h0IGV4
Y2VwdGlvbiAtICVAIiwgZXhjZXB0aW9uKTsKKyNlbmRpZgorfQpJbmRleDogU291cmNlL1dURi93
dGYvUGxhdGZvcm1Vc2VyUHJlZmVycmVkTGFuZ3VhZ2VzLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dURi93dGYvUGxhdGZvcm1Vc2VyUHJlZmVycmVkTGFuZ3VhZ2VzLmgJKHJldmlzaW9uIDApCisr
KyBTb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybVVzZXJQcmVmZXJyZWRMYW5ndWFnZXMuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMCwwICsxLDQxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBQbGF0Zm9ybVVz
ZXJQcmVmZXJyZWRMYW5ndWFnZXNfaAorI2RlZmluZSBQbGF0Zm9ybVVzZXJQcmVmZXJyZWRMYW5n
dWFnZXNfaAorCisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dU
RlN0cmluZy5oPgorCituYW1lc3BhY2UgV1RGIHsKKworVmVjdG9yPFN0cmluZz4gcGxhdGZvcm1V
c2VyUHJlZmVycmVkTGFuZ3VhZ2VzKCk7CisKK30gLy8gbmFtZXNwYWNlIFdURgorCit1c2luZyBX
Rjo6cGxhdGZvcm1Vc2VyUHJlZmVycmVkTGFuZ3VhZ2VzOworCisjZW5kaWYgLy8gUGxhdGZvcm1V
c2VyUHJlZmVycmVkTGFuZ3VhZ2VzX2gKKwpJbmRleDogU291cmNlL1dURi93dGYvUGxhdGZvcm1V
c2VyUHJlZmVycmVkTGFuZ3VhZ2VzTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3Rm
L1BsYXRmb3JtVXNlclByZWZlcnJlZExhbmd1YWdlc01hYy5tbQkocmV2aXNpb24gMCkKKysrIFNv
dXJjZS9XVEYvd3RmL1BsYXRmb3JtVXNlclByZWZlcnJlZExhbmd1YWdlc01hYy5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtMCwwICsxLDE3MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwMywgMjAw
NSwgMjAwNiwgMjAxMCwgMjAxMSwgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiTGFuZ3VhZ2UuaCIKKwor
I2ltcG9ydCAiQmxvY2tPYmpDRXhjZXB0aW9ucy5oIgorI2ltcG9ydCA8bXV0ZXg+CisjaW1wb3J0
IDx1bmljb2RlL3Vsb2MuaD4KKyNpbXBvcnQgPHd0Zi9Bc3NlcnRpb25zLmg+CisjaW1wb3J0IDx3
dGYvTG9jay5oPgorI2ltcG9ydCA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisjaW1wb3J0IDx3dGYv
UmV0YWluUHRyLmg+CisjaW1wb3J0IDx3dGYvc3BpL2NmL0NGQnVuZGxlU1BJLmg+CisjaW1wb3J0
IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdGF0aWMg
U3RhdGljTG9jayBwcmVmZXJyZWRMYW5ndWFnZXNNdXRleDsKKworc3RhdGljIFZlY3RvcjxTdHJp
bmc+JiBwcmVmZXJyZWRMYW5ndWFnZXMoKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxW
ZWN0b3I8U3RyaW5nPj4gbGFuZ3VhZ2VzOworICAgIHJldHVybiBsYW5ndWFnZXM7Cit9CisKK30K
KworQGludGVyZmFjZSBXZWJMYW5ndWFnZUNoYW5nZU9ic2VydmVyIDogTlNPYmplY3QKK0BlbmQK
KworQGltcGxlbWVudGF0aW9uIFdlYkxhbmd1YWdlQ2hhbmdlT2JzZXJ2ZXIKKworKyAodm9pZCls
YW5ndWFnZVByZWZlcmVuY2VzRGlkQ2hhbmdlOihOU05vdGlmaWNhdGlvbiAqKW5vdGlmaWNhdGlv
bgoreworICAgIFVOVVNFRF9QQVJBTShub3RpZmljYXRpb24pOworCisgICAgeworICAgICAgICBz
dGQ6OmxvY2tfZ3VhcmQ8U3RhdGljTG9jaz4gbG9jayhXZWJDb3JlOjpwcmVmZXJyZWRMYW5ndWFn
ZXNNdXRleCk7CisgICAgICAgIFdlYkNvcmU6OnByZWZlcnJlZExhbmd1YWdlcygpLmNsZWFyKCk7
CisgICAgfQorCisgICAgV2ViQ29yZTo6bGFuZ3VhZ2VEaWRDaGFuZ2UoKTsKK30KKworQGVuZAor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0YXRpYyBTdHJpbmcgaHR0cFN0eWxlTGFuZ3VhZ2VD
b2RlKE5TU3RyaW5nICpsYW5ndWFnZSwgTlNTdHJpbmcgKmNvdW50cnkpCit7CisgICAgU0ludDMy
IGxhbmd1YWdlQ29kZTsKKyAgICBTSW50MzIgcmVnaW9uQ29kZTsgCisgICAgU0ludDMyIHNjcmlw
dENvZGU7IAorICAgIENGU3RyaW5nRW5jb2Rpbmcgc3RyaW5nRW5jb2Rpbmc7CisgICAgCisgICAg
Ym9vbCBsYW5ndWFnZURpZFNwZWNpZnlFeHBsaWNpdFZhcmlhbnQgPSBbbGFuZ3VhZ2UgcmFuZ2VP
ZkNoYXJhY3RlckZyb21TZXQ6W05TQ2hhcmFjdGVyU2V0IGNoYXJhY3RlclNldFdpdGhDaGFyYWN0
ZXJzSW5TdHJpbmc6QCItXyJdXS5sb2NhdGlvbiAhPSBOU05vdEZvdW5kOworCisgICAgLy8gRklY
TUU6IFRoaXMgdHJhbnNmb3JtYXRpb24gaXMgdmVyeSB3cm9uZzoKKyAgICAvLyAxLiBUaGVyZSBp
cyBubyByZWFzb24gd2h5IENGQnVuZGxlIGxvY2FsaXphdGlvbiBuYW1lcyB3b3VsZCBiZSBhdCBh
bGwgcmVsYXRlZCB0byBsYW5ndWFnZSBuYW1lcyBhcyB1c2VkIG9uIHRoZSBXZWIuCisgICAgLy8g
Mi4gU2NyaXB0IE1hbmFnZXIgY29kZXMgY2Fubm90IHJlcHJlc2VudCBhbGwgbGFuZ3VhZ2VzIHRo
YXQgYXJlIG5vdyBzdXBwb3J0ZWQgYnkgdGhlIHBsYXRmb3JtLCBzbyB0aGUgY29udmVyc2lvbiBp
cyBsb3NzeS4KKyAgICAvLyAzLiBUaGlzIHNob3VsZCBwcm9iYWJseSBtYXRjaCB3aGF0IGlzIHNl
bnQgYnkgdGhlIG5ldHdvcmsgbGF5ZXIgYXMgQWNjZXB0LUxhbmd1YWdlLCBidXQgY3VycmVudGx5
LCB0aGF0J3MgaW1wbGVtZW50ZWQgc2VwYXJhdGVseS4KKyAgICBDRkJ1bmRsZUdldExvY2FsaXph
dGlvbkluZm9Gb3JMb2NhbGl6YXRpb24oKENGU3RyaW5nUmVmKWxhbmd1YWdlLCAmbGFuZ3VhZ2VD
b2RlLCAmcmVnaW9uQ29kZSwgJnNjcmlwdENvZGUsICZzdHJpbmdFbmNvZGluZyk7CisgICAgUmV0
YWluUHRyPENGU3RyaW5nUmVmPiBwcmVmZXJyZWRMYW5ndWFnZUNvZGUgPSBhZG9wdENGKENGQnVu
ZGxlQ29weUxvY2FsaXphdGlvbkZvckxvY2FsaXphdGlvbkluZm8obGFuZ3VhZ2VDb2RlLCByZWdp
b25Db2RlLCBzY3JpcHRDb2RlLCBzdHJpbmdFbmNvZGluZykpOworICAgIGlmIChwcmVmZXJyZWRM
YW5ndWFnZUNvZGUpCisgICAgICAgIGxhbmd1YWdlID0gKE5TU3RyaW5nICopcHJlZmVycmVkTGFu
Z3VhZ2VDb2RlLmdldCgpOworCisgICAgLy8gTWFrZSB0aGUgc3RyaW5nIGxvd2VyY2FzZS4KKyAg
ICBOU1N0cmluZyAqbG93ZXJjYXNlTGFuZ3VhZ2VDb2RlID0gW2xhbmd1YWdlIGxvd2VyY2FzZVN0
cmluZ107CisgICAgTlNTdHJpbmcgKmxvd2VyY2FzZUNvdW50cnlDb2RlID0gW2NvdW50cnkgbG93
ZXJjYXNlU3RyaW5nXTsKKyAgICAKKyAgICAvLyBJZiB3ZSBzZWUgYSAiXyIgYWZ0ZXIgYSAyLWxl
dHRlciBsYW5ndWFnZSBjb2RlOgorICAgIC8vIElmIHRoZSBjb3VudHJ5IGlzIHZhbGlkIGFuZCB0
aGUgbGFuZ3VhZ2UgZGlkIG5vdCBzcGVjaWZ5IGEgdmFyaWFudCwgcmVwbGFjZSB0aGUgIl8iIGFu
ZAorICAgIC8vIHdoYXRldmVyIGNvbWVzIGFmdGVyIGl0IHdpdGggIi0iIGZvbGxvd2VkIGJ5IHRo
ZSBjb3VudHJ5IGNvZGUuCisgICAgLy8gT3RoZXJ3aXNlLCByZXBsYWNlIHRoZSAiXyIgd2l0aCBh
ICItIiBhbmQgdXNlIHdoYXRldmVyIGNvdW50cnkKKyAgICAvLyBDRkJ1bmRsZUNvcHlMb2NhbGl6
YXRpb25Gb3JMb2NhbGl6YXRpb25JbmZvKCkgcmV0dXJuZWQuCisgICAgaWYgKFtsb3dlcmNhc2VM
YW5ndWFnZUNvZGUgbGVuZ3RoXSA+PSAzICYmIFtsb3dlcmNhc2VMYW5ndWFnZUNvZGUgY2hhcmFj
dGVyQXRJbmRleDoyXSA9PSAnXycpIHsKKyAgICAgICAgaWYgKGNvdW50cnkgJiYgIWxhbmd1YWdl
RGlkU3BlY2lmeUV4cGxpY2l0VmFyaWFudCkKKyAgICAgICAgICAgIHJldHVybiBbTlNTdHJpbmcg
c3RyaW5nV2l0aEZvcm1hdDpAIiVALSVAIiwgW2xvd2VyY2FzZUxhbmd1YWdlQ29kZSBzdWJzdHJp
bmdXaXRoUmFuZ2U6TlNNYWtlUmFuZ2UoMCwgMildLCBsb3dlcmNhc2VDb3VudHJ5Q29kZV07Cisg
ICAgICAgIAorICAgICAgICAvLyBGYWxsIGJhY2sgdG8gb2xkZXIgYmVoYXZpb3IsIHdoaWNoIHVz
ZWQgdGhlIG9yaWdpbmFsIGxhbmd1YWdlLWJhc2VkIGNvZGUgYnV0IGp1c3QgY2hhbmdlZAorICAg
ICAgICAvLyB0aGUgIl8iIHRvIGEgIi0iLgorICAgICAgICBSZXRhaW5QdHI8TlNNdXRhYmxlU3Ry
aW5nPiBtdXRhYmxlTGFuZ3VhZ2VDb2RlID0gYWRvcHROUyhbbG93ZXJjYXNlTGFuZ3VhZ2VDb2Rl
IG11dGFibGVDb3B5XSk7CisgICAgICAgIFttdXRhYmxlTGFuZ3VhZ2VDb2RlLmdldCgpIHJlcGxh
Y2VDaGFyYWN0ZXJzSW5SYW5nZTpOU01ha2VSYW5nZSgyLCAxKSB3aXRoU3RyaW5nOkAiLSJdOwor
ICAgICAgICByZXR1cm4gbXV0YWJsZUxhbmd1YWdlQ29kZS5nZXQoKTsKKyAgICB9CisKKyAgICBy
ZXR1cm4gbG93ZXJjYXNlTGFuZ3VhZ2VDb2RlOworfQorCitzdGF0aWMgYm9vbCBpc1ZhbGlkSUNV
Q291bnRyeUNvZGUoTlNTdHJpbmcqIGNvdW50cnlDb2RlKQoreworICAgIGlmICghY291bnRyeUNv
ZGUpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBjb25zdCBjaGFyKiBjb25zdCogY291bnRy
aWVzID0gdWxvY19nZXRJU09Db3VudHJpZXMoKTsKKyAgICBjb25zdCBjaGFyKiBjb3VudHJ5VVRG
OCA9IFtjb3VudHJ5Q29kZSBVVEY4U3RyaW5nXTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBj
b3VudHJpZXNbaV07ICsraSkgeworICAgICAgICBjb25zdCBjaGFyKiBwb3NzaWJsZUNvdW50cnkg
PSBjb3VudHJpZXNbaV07CisgICAgICAgIGlmICghc3RyY21wKGNvdW50cnlVVEY4LCBwb3NzaWJs
ZUNvdW50cnkpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIHJldHVybiBm
YWxzZTsKK30KKworVmVjdG9yPFN0cmluZz4gcGxhdGZvcm1Vc2VyUHJlZmVycmVkTGFuZ3VhZ2Vz
KCkKK3sKKyNpZiBQTEFURk9STShNQUMpCisgICAgc3RhdGljIGRpc3BhdGNoX29uY2VfdCBvbmNl
VG9rZW47CisgICAgZGlzcGF0Y2hfb25jZSgmb25jZVRva2VuLCBeeworICAgICAgICBbW05TRGlz
dHJpYnV0ZWROb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0gYWRkT2JzZXJ2ZXI6W1dl
Ykxhbmd1YWdlQ2hhbmdlT2JzZXJ2ZXIgc2VsZl0gc2VsZWN0b3I6QHNlbGVjdG9yKGxhbmd1YWdl
UHJlZmVyZW5jZXNEaWRDaGFuZ2U6KSBuYW1lOkAiQXBwbGVMYW5ndWFnZVByZWZlcmVuY2VzQ2hh
bmdlZE5vdGlmaWNhdGlvbiIgb2JqZWN0Om5pbF07CisgICAgfSk7CisjZW5kaWYKKworICAgIEJF
R0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKKworICAgIHN0ZDo6bG9ja19ndWFyZDxTdGF0aWNM
b2NrPiBsb2NrKHByZWZlcnJlZExhbmd1YWdlc011dGV4KTsKKyAgICBWZWN0b3I8U3RyaW5nPiYg
dXNlclByZWZlcnJlZExhbmd1YWdlcyA9IHByZWZlcnJlZExhbmd1YWdlcygpOworCisgICAgaWYg
KHVzZXJQcmVmZXJyZWRMYW5ndWFnZXMuaXNFbXB0eSgpKSB7CisgICAgICAgIFJldGFpblB0cjxD
RkxvY2FsZVJlZj4gbG9jYWxlID0gYWRvcHRDRihDRkxvY2FsZUNvcHlDdXJyZW50KCkpOworICAg
ICAgICBOU1N0cmluZyAqY291bnRyeUNvZGUgPSAoTlNTdHJpbmcgKilDRkxvY2FsZUdldFZhbHVl
KGxvY2FsZS5nZXQoKSwga0NGTG9jYWxlQ291bnRyeUNvZGUpOworICAgICAgICAKKyAgICAgICAg
aWYgKCFpc1ZhbGlkSUNVQ291bnRyeUNvZGUoY291bnRyeUNvZGUpKQorICAgICAgICAgICAgY291
bnRyeUNvZGUgPSBuaWw7CisgICAgICAgIAorICAgICAgICBSZXRhaW5QdHI8Q0ZBcnJheVJlZj4g
bGFuZ3VhZ2VzID0gYWRvcHRDRihDRkxvY2FsZUNvcHlQcmVmZXJyZWRMYW5ndWFnZXMoKSk7Cisg
ICAgICAgIENGSW5kZXggbGFuZ3VhZ2VDb3VudCA9IENGQXJyYXlHZXRDb3VudChsYW5ndWFnZXMu
Z2V0KCkpOworICAgICAgICBpZiAoIWxhbmd1YWdlQ291bnQpCisgICAgICAgICAgICB1c2VyUHJl
ZmVycmVkTGFuZ3VhZ2VzLmFwcGVuZCgiZW4iKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAg
ICBmb3IgKENGSW5kZXggaSA9IDA7IGkgPCBsYW5ndWFnZUNvdW50OyBpKyspCisgICAgICAgICAg
ICAgICAgdXNlclByZWZlcnJlZExhbmd1YWdlcy5hcHBlbmQoaHR0cFN0eWxlTGFuZ3VhZ2VDb2Rl
KChOU1N0cmluZyAqKUNGQXJyYXlHZXRWYWx1ZUF0SW5kZXgobGFuZ3VhZ2VzLmdldCgpLCBpKSwg
Y291bnRyeUNvZGUpKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIFZlY3RvcjxTdHJpbmc+IHVz
ZXJQcmVmZXJyZWRMYW5ndWFnZXNDb3B5OworICAgIHVzZXJQcmVmZXJyZWRMYW5ndWFnZXNDb3B5
LnJlc2VydmVJbml0aWFsQ2FwYWNpdHkodXNlclByZWZlcnJlZExhbmd1YWdlcy5zaXplKCkpOwor
CisgICAgZm9yIChhdXRvJiBsYW5ndWFnZSA6IHVzZXJQcmVmZXJyZWRMYW5ndWFnZXMpCisgICAg
ICAgIHVzZXJQcmVmZXJyZWRMYW5ndWFnZXNDb3B5LnVuY2hlY2tlZEFwcGVuZChsYW5ndWFnZS5p
c29sYXRlZENvcHkoKSk7CisKKyAgICByZXR1cm4gdXNlclByZWZlcnJlZExhbmd1YWdlc0NvcHk7
CisKKyAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TOworCisgICAgcmV0dXJuIFZlY3RvcjxT
dHJpbmc+KCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdURgpJbmRleDogU291cmNlL1dURi93dGYv
UGxhdGZvcm1Vc2VyUHJlZmVycmVkTGFuZ3VhZ2VzVW5peC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dURi93dGYvUGxhdGZvcm1Vc2VyUHJlZmVycmVkTGFuZ3VhZ2VzVW5peC5jcHAJKHJldmlz
aW9uIDApCisrKyBTb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybVVzZXJQcmVmZXJyZWRMYW5ndWFnZXNV
bml4LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDUwIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDA3IEFscCBUb2tlciA8YWxwQGF0b2tlci5jb20+CisgKiBDb3B5cmlnaHQgKEMpIDIw
MTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgbGlicmFyeSBp
cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlm
eSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisg
KiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBl
aXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBh
bnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4g
dGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJS
QU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFC
SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQor
ICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgor
ICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUg
ZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBC
b3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiUGxhdGZvcm1Vc2VyUHJlZmVycmVkTGFuZ3VhZ2VzLmgiCisKKyNpbmNsdWRlIDxs
b2NhbGUuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RG
U3RyaW5nLmg+CisKK25hbWVzcGFjZSBXVEYgeworCisvLyBVc2luZyBwYW5nb19sYW5ndWFnZV9n
ZXRfZGVmYXVsdCgpIGhlcmUgaXMgbm90IGFuIG9wdGlvbiwgYmVjYXVzZQorLy8gaXQgZG9lc24n
dCBzdXBwb3J0IGNoYW5naW5nIHRoZSBsb2NhbGUgaW4gcnVudGltZSwgc28gaXQgcmV0dXJucwor
Ly8gYWx3YXlzIHRoZSBzYW1lIHZhbHVlLgorc3RhdGljIFN0cmluZyBwbGF0Zm9ybUxhbmd1YWdl
KCkKK3sKKyAgICBTdHJpbmcgbG9jYWxlRGVmYXVsdChzZXRsb2NhbGUoTENfQ1RZUEUsIG51bGxw
dHIpKTsKKyAgICBpZiAobG9jYWxlRGVmYXVsdC5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBT
dHJpbmcoImMiKTsKKworICAgIFN0cmluZyBub3JtYWxpemVkRGVmYXVsdCA9IGxvY2FsZURlZmF1
bHQuY29udmVydFRvQVNDSUlMb3dlcmNhc2UoKTsKKyAgICBub3JtYWxpemVkRGVmYXVsdC5yZXBs
YWNlKCdfJywgJy0nKTsKKyAgICBub3JtYWxpemVkRGVmYXVsdC50cnVuY2F0ZShub3JtYWxpemVk
RGVmYXVsdC5maW5kKCcuJykpOworICAgIHJldHVybiBub3JtYWxpemVkRGVmYXVsdDsKK30KKwor
VmVjdG9yPFN0cmluZz4gcGxhdGZvcm1Vc2VyUHJlZmVycmVkTGFuZ3VhZ2VzKCkKK3sKKyAgICBy
ZXR1cm4geyBwbGF0Zm9ybUxhbmd1YWdlKCkgfTsKK30KKworfSAvLyBuYW1lc3BhY2UgV1RGCklu
ZGV4OiBTb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybVVzZXJQcmVmZXJyZWRMYW5ndWFnZXNXaW4uY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL1BsYXRmb3JtVXNlclByZWZlcnJlZExhbmd1
YWdlc1dpbi5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybVVzZXJQ
cmVmZXJyZWRMYW5ndWFnZXNXaW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNzcgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMTYgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybVVzZXJQcmVmZXJyZWRMYW5ndWFn
ZXMuaCIKKworI2luY2x1ZGUgPHdpbmRvd3MuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+Cisj
aW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXVEYgeworCitzdGF0
aWMgU3RyaW5nIGxvY2FsZUluZm8oTENUWVBFIGxvY2FsZVR5cGUsIGNvbnN0IFN0cmluZyYgZmFs
bGJhY2spCit7CisgICAgTEFOR0lEIGxhbmdJRCA9IEdldFVzZXJEZWZhdWx0VUlMYW5ndWFnZSgp
OworICAgIGludCBsb2NhbGVDaGFycyA9IEdldExvY2FsZUluZm8obGFuZ0lELCBsb2NhbGVUeXBl
LCAwLCAwKTsKKyAgICBpZiAoIWxvY2FsZUNoYXJzKQorICAgICAgICByZXR1cm4gZmFsbGJhY2s7
CisgICAgVUNoYXIqIGxvY2FsZU5hbWVCdWY7CisgICAgU3RyaW5nIGxvY2FsZU5hbWUgPSBTdHJp
bmc6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQobG9jYWxlQ2hhcnMsIGxvY2FsZU5hbWVCdWYpOworICAg
IGxvY2FsZUNoYXJzID0gR2V0TG9jYWxlSW5mbyhsYW5nSUQsIGxvY2FsZVR5cGUsIGxvY2FsZU5h
bWVCdWYsIGxvY2FsZUNoYXJzKTsKKyAgICBpZiAoIWxvY2FsZUNoYXJzKQorICAgICAgICByZXR1
cm4gZmFsbGJhY2s7CisgICAgaWYgKGxvY2FsZU5hbWUuaXNFbXB0eSgpKQorICAgICAgICByZXR1
cm4gZmFsbGJhY2s7CisKKyAgICBsb2NhbGVOYW1lLnRydW5jYXRlKGxvY2FsZU5hbWUubGVuZ3Ro
KCkgLSAxKTsKKyAgICByZXR1cm4gbG9jYWxlTmFtZTsKK30KKworc3RhdGljIFN0cmluZyBwbGF0
Zm9ybUxhbmd1YWdlKCkKK3sKKyAgICBzdGF0aWMgU3RyaW5nIGNvbXB1dGVkRGVmYXVsdExhbmd1
YWdlOworICAgIGlmICghY29tcHV0ZWREZWZhdWx0TGFuZ3VhZ2UuaXNFbXB0eSgpKQorICAgICAg
ICByZXR1cm4gY29tcHV0ZWREZWZhdWx0TGFuZ3VhZ2U7CisKKyAgICBTdHJpbmcgbGFuZ3VhZ2VO
YW1lID0gbG9jYWxlSW5mbyhMT0NBTEVfU0lTTzYzOUxBTkdOQU1FLCAiZW4iKTsKKyAgICBTdHJp
bmcgY291bnRyeU5hbWUgPSBsb2NhbGVJbmZvKExPQ0FMRV9TSVNPMzE2NkNUUllOQU1FLCBTdHJp
bmcoKSk7CisKKyAgICBpZiAoY291bnRyeU5hbWUuaXNFbXB0eSgpKQorICAgICAgICBjb21wdXRl
ZERlZmF1bHRMYW5ndWFnZSA9IGxhbmd1YWdlTmFtZTsKKyAgICBlbHNlCisgICAgICAgIGNvbXB1
dGVkRGVmYXVsdExhbmd1YWdlID0gbGFuZ3VhZ2VOYW1lICsgJy0nICsgY291bnRyeU5hbWU7CisK
KyAgICByZXR1cm4gY29tcHV0ZWREZWZhdWx0TGFuZ3VhZ2U7Cit9CisKK1ZlY3RvcjxTdHJpbmc+
IHBsYXRmb3JtVXNlclByZWZlcnJlZExhbmd1YWdlcygpCit7CisgICAgVmVjdG9yPFN0cmluZz4g
dXNlclByZWZlcnJlZExhbmd1YWdlczsKKyAgICB1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzLmFwcGVu
ZChwbGF0Zm9ybUxhbmd1YWdlKCkpOworICAgIHJldHVybiB1c2VyUHJlZmVycmVkTGFuZ3VhZ2Vz
OworfQorCit9IC8vIG5hbWVzcGFjZSBXVEYKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL3NwaS9jZi9D
RkJ1bmRsZVNQSS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL3NwaS9jZi9DRkJ1bmRs
ZVNQSS5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dURi93dGYvc3BpL2NmL0NGQnVuZGxlU1BJ
LmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxNSBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBDRkJ1bmRsZVNQSV9oCisjZGVmaW5l
IENGQnVuZGxlU1BJX2gKKworI2luY2x1ZGUgPENvcmVGb3VuZGF0aW9uL0NvcmVGb3VuZGF0aW9u
Lmg+CisKKyNpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQorI2ltcG9ydCA8Q29yZUZvdW5kYXRp
b24vQ0ZQcml2Lmg+CisjZWxzZQorI2luY2x1ZGUgPHd0Zi9zcGkvZGFyd2luL1hQQ1NQSS5oPgor
I2VuZGlmCisKK2V4dGVybiAiQyIgewordm9pZCBfQ0ZCdW5kbGVTZXR1cFhQQ0Jvb3RzdHJhcCh4
cGNfb2JqZWN0X3QgYm9vdHN0cmFwKTsKKworQm9vbGVhbiBDRkJ1bmRsZUdldExvY2FsaXphdGlv
bkluZm9Gb3JMb2NhbGl6YXRpb24oQ0ZTdHJpbmdSZWYgbG9jYWxpemF0aW9uTmFtZSwgU0ludDMy
ICpsYW5ndWFnZUNvZGUsIFNJbnQzMiAqcmVnaW9uQ29kZSwgU0ludDMyICpzY3JpcHRDb2RlLCBD
RlN0cmluZ0VuY29kaW5nICpzdHJpbmdFbmNvZGluZyk7CitDRlN0cmluZ1JlZiBDRkJ1bmRsZUNv
cHlMb2NhbGl6YXRpb25Gb3JMb2NhbGl6YXRpb25JbmZvKFNJbnQzMiBsYW5ndWFnZUNvZGUsIFNJ
bnQzMiByZWdpb25Db2RlLCBTSW50MzIgc2NyaXB0Q29kZSwgQ0ZTdHJpbmdFbmNvZGluZyBzdHJp
bmdFbmNvZGluZyk7Cit9CisKKyNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
TGFuZ3VhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xhbmd1
YWdlLmNwcAkocmV2aXNpb24gMjAwOTU3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGFu
Z3VhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxMCwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTAsIDIwMTMsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yOCw2ICsyOCw3IEBACiAKICNp
bmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgor
I2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybVVzZXJQcmVmZXJyZWRMYW5ndWFnZXMuaD4KICNpbmNsdWRl
IDx3dGYvUmV0YWluUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xhbmd1YWdlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGFuZ3VhZ2UuaAkocmV2aXNpb24gMjAwOTU3KQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGFuZ3VhZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtNDIsOCAr
NDIsNiBAQCB0eXBlZGVmIHZvaWQgKCpMYW5ndWFnZUNoYW5nZU9ic2VydmVyRnVuCiBXRUJDT1JF
X0VYUE9SVCB2b2lkIGFkZExhbmd1YWdlQ2hhbmdlT2JzZXJ2ZXIodm9pZCogY29udGV4dCwgTGFu
Z3VhZ2VDaGFuZ2VPYnNlcnZlckZ1bmN0aW9uKTsKIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVtb3Zl
TGFuZ3VhZ2VDaGFuZ2VPYnNlcnZlcih2b2lkKiBjb250ZXh0KTsKIAotVmVjdG9yPFN0cmluZz4g
cGxhdGZvcm1Vc2VyUHJlZmVycmVkTGFuZ3VhZ2VzKCk7Ci0KIFN0cmluZyBkaXNwbGF5TmFtZUZv
ckxhbmd1YWdlTG9jYWxlKGNvbnN0IFN0cmluZyYpOwogCiAvLyBDYWxsZWQgZnJvbSBwbGF0Zm9y
bSBzcGVjaWZpYyBjb2RlIHdoZW4gdGhlIHVzZXIncyBwcmVmZXJyZWQgbGFuZ3VhZ2UocykgY2hh
bmdlLgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0Jsb2NrRXhjZXB0aW9ucy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9CbG9ja0V4Y2VwdGlv
bnMuaAkocmV2aXNpb24gMjAwOTU3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0Js
b2NrRXhjZXB0aW9ucy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMyICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMDMgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0g
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpbXBvcnQgPEZvdW5kYXRp
b24vTlNFeGNlcHRpb24uaD4KLQotV0VCQ09SRV9FWFBPUlQgTk9fUkVUVVJOX0RVRV9UT19BU1NF
UlQgdm9pZCBSZXBvcnRCbG9ja2VkT2JqQ0V4Y2VwdGlvbihOU0V4Y2VwdGlvbiAqKTsKLQotI2Rl
ZmluZSBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMgQHRyeSB7Ci0jZGVmaW5lIEVORF9CTE9D
S19PQkpDX0VYQ0VQVElPTlMgfSBAY2F0Y2goTlNFeGNlcHRpb24gKmxvY2FsRXhjZXB0aW9uKSB7
IFJlcG9ydEJsb2NrZWRPYmpDRXhjZXB0aW9uKGxvY2FsRXhjZXB0aW9uKTsgfQotCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvQmxvY2tFeGNlcHRpb25zLm1tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9CbG9ja0V4Y2VwdGlvbnMubW0JKHJldmlz
aW9uIDIwMDk1NykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9CbG9ja0V4Y2VwdGlv
bnMubW0JKHdvcmtpbmcgY29weSkKQEAgLTEsMzggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAwMywgMjAwNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0g
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaW1wb3J0ICJjb25maWcuaCIKLSNp
bXBvcnQgIkJsb2NrRXhjZXB0aW9ucy5oIgotCi0jaW1wb3J0IDx3dGYvQXNzZXJ0aW9ucy5oPgot
Ci12b2lkIFJlcG9ydEJsb2NrZWRPYmpDRXhjZXB0aW9uKE5TRXhjZXB0aW9uICpleGNlcHRpb24p
Ci17Ci0jaWYgQVNTRVJUX0RJU0FCTEVECi0gICAgTlNMb2coQCIqKiogV2ViS2l0IGRpc2NhcmRp
bmcgZXhjZXB0aW9uOiA8JUA+ICVAIiwgW2V4Y2VwdGlvbiBuYW1lXSwgW2V4Y2VwdGlvbiByZWFz
b25dKTsKLSNlbHNlCi0gICAgQVNTRVJUX1dJVEhfTUVTU0FHRSgwLCAiVW5jYXVnaHQgZXhjZXB0
aW9uIC0gJUAiLCBleGNlcHRpb24pOwotI2VuZGlmCi19CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tYWMvTGFuZ3VhZ2UubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWFjL0xhbmd1YWdlLm1tCShyZXZpc2lvbiAyMDA5NTcpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tYWMvTGFuZ3VhZ2UubW0JKHdvcmtpbmcgY29weSkKQEAgLTEsMTcyICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDUsIDIwMDYsIDIwMTAsIDIwMTEsIDIw
MTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW1wb3J0ICJj
b25maWcuaCIKLSNpbXBvcnQgIkxhbmd1YWdlLmgiCi0KLSNpbXBvcnQgIkJsb2NrRXhjZXB0aW9u
cy5oIgotI2ltcG9ydCAiQ0ZCdW5kbGVTUEkuaCIKLSNpbXBvcnQgIldlYkNvcmVOU1N0cmluZ0V4
dHJhcy5oIgotI2ltcG9ydCA8bXV0ZXg+Ci0jaW1wb3J0IDx1bmljb2RlL3Vsb2MuaD4KLSNpbXBv
cnQgPHd0Zi9Bc3NlcnRpb25zLmg+Ci0jaW1wb3J0IDx3dGYvTG9jay5oPgotI2ltcG9ydCA8d3Rm
L05ldmVyRGVzdHJveWVkLmg+Ci0jaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+Ci0jaW1wb3J0IDx3
dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1zdGF0aWMgU3Rh
dGljTG9jayBwcmVmZXJyZWRMYW5ndWFnZXNNdXRleDsKLQotc3RhdGljIFZlY3RvcjxTdHJpbmc+
JiBwcmVmZXJyZWRMYW5ndWFnZXMoKQotewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxWZWN0
b3I8U3RyaW5nPj4gbGFuZ3VhZ2VzOwotICAgIHJldHVybiBsYW5ndWFnZXM7Ci19Ci0KLX0KLQot
QGludGVyZmFjZSBXZWJMYW5ndWFnZUNoYW5nZU9ic2VydmVyIDogTlNPYmplY3QKLUBlbmQKLQot
QGltcGxlbWVudGF0aW9uIFdlYkxhbmd1YWdlQ2hhbmdlT2JzZXJ2ZXIKLQotKyAodm9pZClsYW5n
dWFnZVByZWZlcmVuY2VzRGlkQ2hhbmdlOihOU05vdGlmaWNhdGlvbiAqKW5vdGlmaWNhdGlvbgot
ewotICAgIFVOVVNFRF9QQVJBTShub3RpZmljYXRpb24pOwotCi0gICAgewotICAgICAgICBzdGQ6
OmxvY2tfZ3VhcmQ8U3RhdGljTG9jaz4gbG9jayhXZWJDb3JlOjpwcmVmZXJyZWRMYW5ndWFnZXNN
dXRleCk7Ci0gICAgICAgIFdlYkNvcmU6OnByZWZlcnJlZExhbmd1YWdlcygpLmNsZWFyKCk7Ci0g
ICAgfQotCi0gICAgV2ViQ29yZTo6bGFuZ3VhZ2VEaWRDaGFuZ2UoKTsKLX0KLQotQGVuZAotCi1u
YW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXN0YXRpYyBTdHJpbmcgaHR0cFN0eWxlTGFuZ3VhZ2VDb2Rl
KE5TU3RyaW5nICpsYW5ndWFnZSwgTlNTdHJpbmcgKmNvdW50cnkpCi17Ci0gICAgU0ludDMyIGxh
bmd1YWdlQ29kZTsKLSAgICBTSW50MzIgcmVnaW9uQ29kZTsgCi0gICAgU0ludDMyIHNjcmlwdENv
ZGU7IAotICAgIENGU3RyaW5nRW5jb2Rpbmcgc3RyaW5nRW5jb2Rpbmc7Ci0gICAgCi0gICAgYm9v
bCBsYW5ndWFnZURpZFNwZWNpZnlFeHBsaWNpdFZhcmlhbnQgPSBbbGFuZ3VhZ2UgcmFuZ2VPZkNo
YXJhY3RlckZyb21TZXQ6W05TQ2hhcmFjdGVyU2V0IGNoYXJhY3RlclNldFdpdGhDaGFyYWN0ZXJz
SW5TdHJpbmc6QCItXyJdXS5sb2NhdGlvbiAhPSBOU05vdEZvdW5kOwotCi0gICAgLy8gRklYTUU6
IFRoaXMgdHJhbnNmb3JtYXRpb24gaXMgdmVyeSB3cm9uZzoKLSAgICAvLyAxLiBUaGVyZSBpcyBu
byByZWFzb24gd2h5IENGQnVuZGxlIGxvY2FsaXphdGlvbiBuYW1lcyB3b3VsZCBiZSBhdCBhbGwg
cmVsYXRlZCB0byBsYW5ndWFnZSBuYW1lcyBhcyB1c2VkIG9uIHRoZSBXZWIuCi0gICAgLy8gMi4g
U2NyaXB0IE1hbmFnZXIgY29kZXMgY2Fubm90IHJlcHJlc2VudCBhbGwgbGFuZ3VhZ2VzIHRoYXQg
YXJlIG5vdyBzdXBwb3J0ZWQgYnkgdGhlIHBsYXRmb3JtLCBzbyB0aGUgY29udmVyc2lvbiBpcyBs
b3NzeS4KLSAgICAvLyAzLiBUaGlzIHNob3VsZCBwcm9iYWJseSBtYXRjaCB3aGF0IGlzIHNlbnQg
YnkgdGhlIG5ldHdvcmsgbGF5ZXIgYXMgQWNjZXB0LUxhbmd1YWdlLCBidXQgY3VycmVudGx5LCB0
aGF0J3MgaW1wbGVtZW50ZWQgc2VwYXJhdGVseS4KLSAgICBDRkJ1bmRsZUdldExvY2FsaXphdGlv
bkluZm9Gb3JMb2NhbGl6YXRpb24oKENGU3RyaW5nUmVmKWxhbmd1YWdlLCAmbGFuZ3VhZ2VDb2Rl
LCAmcmVnaW9uQ29kZSwgJnNjcmlwdENvZGUsICZzdHJpbmdFbmNvZGluZyk7Ci0gICAgUmV0YWlu
UHRyPENGU3RyaW5nUmVmPiBwcmVmZXJyZWRMYW5ndWFnZUNvZGUgPSBhZG9wdENGKENGQnVuZGxl
Q29weUxvY2FsaXphdGlvbkZvckxvY2FsaXphdGlvbkluZm8obGFuZ3VhZ2VDb2RlLCByZWdpb25D
b2RlLCBzY3JpcHRDb2RlLCBzdHJpbmdFbmNvZGluZykpOwotICAgIGlmIChwcmVmZXJyZWRMYW5n
dWFnZUNvZGUpCi0gICAgICAgIGxhbmd1YWdlID0gKE5TU3RyaW5nICopcHJlZmVycmVkTGFuZ3Vh
Z2VDb2RlLmdldCgpOwotCi0gICAgLy8gTWFrZSB0aGUgc3RyaW5nIGxvd2VyY2FzZS4KLSAgICBO
U1N0cmluZyAqbG93ZXJjYXNlTGFuZ3VhZ2VDb2RlID0gW2xhbmd1YWdlIGxvd2VyY2FzZVN0cmlu
Z107Ci0gICAgTlNTdHJpbmcgKmxvd2VyY2FzZUNvdW50cnlDb2RlID0gW2NvdW50cnkgbG93ZXJj
YXNlU3RyaW5nXTsKLSAgICAKLSAgICAvLyBJZiB3ZSBzZWUgYSAiXyIgYWZ0ZXIgYSAyLWxldHRl
ciBsYW5ndWFnZSBjb2RlOgotICAgIC8vIElmIHRoZSBjb3VudHJ5IGlzIHZhbGlkIGFuZCB0aGUg
bGFuZ3VhZ2UgZGlkIG5vdCBzcGVjaWZ5IGEgdmFyaWFudCwgcmVwbGFjZSB0aGUgIl8iIGFuZAot
ICAgIC8vIHdoYXRldmVyIGNvbWVzIGFmdGVyIGl0IHdpdGggIi0iIGZvbGxvd2VkIGJ5IHRoZSBj
b3VudHJ5IGNvZGUuCi0gICAgLy8gT3RoZXJ3aXNlLCByZXBsYWNlIHRoZSAiXyIgd2l0aCBhICIt
IiBhbmQgdXNlIHdoYXRldmVyIGNvdW50cnkKLSAgICAvLyBDRkJ1bmRsZUNvcHlMb2NhbGl6YXRp
b25Gb3JMb2NhbGl6YXRpb25JbmZvKCkgcmV0dXJuZWQuCi0gICAgaWYgKFtsb3dlcmNhc2VMYW5n
dWFnZUNvZGUgbGVuZ3RoXSA+PSAzICYmIFtsb3dlcmNhc2VMYW5ndWFnZUNvZGUgY2hhcmFjdGVy
QXRJbmRleDoyXSA9PSAnXycpIHsKLSAgICAgICAgaWYgKGNvdW50cnkgJiYgIWxhbmd1YWdlRGlk
U3BlY2lmeUV4cGxpY2l0VmFyaWFudCkKLSAgICAgICAgICAgIHJldHVybiBbTlNTdHJpbmcgc3Ry
aW5nV2l0aEZvcm1hdDpAIiVALSVAIiwgW2xvd2VyY2FzZUxhbmd1YWdlQ29kZSBzdWJzdHJpbmdX
aXRoUmFuZ2U6TlNNYWtlUmFuZ2UoMCwgMildLCBsb3dlcmNhc2VDb3VudHJ5Q29kZV07Ci0gICAg
ICAgIAotICAgICAgICAvLyBGYWxsIGJhY2sgdG8gb2xkZXIgYmVoYXZpb3IsIHdoaWNoIHVzZWQg
dGhlIG9yaWdpbmFsIGxhbmd1YWdlLWJhc2VkIGNvZGUgYnV0IGp1c3QgY2hhbmdlZAotICAgICAg
ICAvLyB0aGUgIl8iIHRvIGEgIi0iLgotICAgICAgICBSZXRhaW5QdHI8TlNNdXRhYmxlU3RyaW5n
PiBtdXRhYmxlTGFuZ3VhZ2VDb2RlID0gYWRvcHROUyhbbG93ZXJjYXNlTGFuZ3VhZ2VDb2RlIG11
dGFibGVDb3B5XSk7Ci0gICAgICAgIFttdXRhYmxlTGFuZ3VhZ2VDb2RlLmdldCgpIHJlcGxhY2VD
aGFyYWN0ZXJzSW5SYW5nZTpOU01ha2VSYW5nZSgyLCAxKSB3aXRoU3RyaW5nOkAiLSJdOwotICAg
ICAgICByZXR1cm4gbXV0YWJsZUxhbmd1YWdlQ29kZS5nZXQoKTsKLSAgICB9Ci0KLSAgICByZXR1
cm4gbG93ZXJjYXNlTGFuZ3VhZ2VDb2RlOwotfQotCi1zdGF0aWMgYm9vbCBpc1ZhbGlkSUNVQ291
bnRyeUNvZGUoTlNTdHJpbmcqIGNvdW50cnlDb2RlKQotewotICAgIGlmICghY291bnRyeUNvZGUp
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBjb25zdCBjaGFyKiBjb25zdCogY291bnRyaWVz
ID0gdWxvY19nZXRJU09Db3VudHJpZXMoKTsKLSAgICBjb25zdCBjaGFyKiBjb3VudHJ5VVRGOCA9
IFtjb3VudHJ5Q29kZSBVVEY4U3RyaW5nXTsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBjb3Vu
dHJpZXNbaV07ICsraSkgewotICAgICAgICBjb25zdCBjaGFyKiBwb3NzaWJsZUNvdW50cnkgPSBj
b3VudHJpZXNbaV07Ci0gICAgICAgIGlmICghc3RyY21wKGNvdW50cnlVVEY4LCBwb3NzaWJsZUNv
dW50cnkpKQotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICAgIHJldHVybiBmYWxz
ZTsKLX0KLQotVmVjdG9yPFN0cmluZz4gcGxhdGZvcm1Vc2VyUHJlZmVycmVkTGFuZ3VhZ2VzKCkK
LXsKLSNpZiBQTEFURk9STShNQUMpCi0gICAgc3RhdGljIGRpc3BhdGNoX29uY2VfdCBvbmNlVG9r
ZW47Ci0gICAgZGlzcGF0Y2hfb25jZSgmb25jZVRva2VuLCBeewotICAgICAgICBbW05TRGlzdHJp
YnV0ZWROb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0gYWRkT2JzZXJ2ZXI6W1dlYkxh
bmd1YWdlQ2hhbmdlT2JzZXJ2ZXIgc2VsZl0gc2VsZWN0b3I6QHNlbGVjdG9yKGxhbmd1YWdlUHJl
ZmVyZW5jZXNEaWRDaGFuZ2U6KSBuYW1lOkAiQXBwbGVMYW5ndWFnZVByZWZlcmVuY2VzQ2hhbmdl
ZE5vdGlmaWNhdGlvbiIgb2JqZWN0Om5pbF07Ci0gICAgfSk7Ci0jZW5kaWYKLQotICAgIEJFR0lO
X0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKLQotICAgIHN0ZDo6bG9ja19ndWFyZDxTdGF0aWNMb2Nr
PiBsb2NrKHByZWZlcnJlZExhbmd1YWdlc011dGV4KTsKLSAgICBWZWN0b3I8U3RyaW5nPiYgdXNl
clByZWZlcnJlZExhbmd1YWdlcyA9IHByZWZlcnJlZExhbmd1YWdlcygpOwotCi0gICAgaWYgKHVz
ZXJQcmVmZXJyZWRMYW5ndWFnZXMuaXNFbXB0eSgpKSB7Ci0gICAgICAgIFJldGFpblB0cjxDRkxv
Y2FsZVJlZj4gbG9jYWxlID0gYWRvcHRDRihDRkxvY2FsZUNvcHlDdXJyZW50KCkpOwotICAgICAg
ICBOU1N0cmluZyAqY291bnRyeUNvZGUgPSAoTlNTdHJpbmcgKilDRkxvY2FsZUdldFZhbHVlKGxv
Y2FsZS5nZXQoKSwga0NGTG9jYWxlQ291bnRyeUNvZGUpOwotICAgICAgICAKLSAgICAgICAgaWYg
KCFpc1ZhbGlkSUNVQ291bnRyeUNvZGUoY291bnRyeUNvZGUpKQotICAgICAgICAgICAgY291bnRy
eUNvZGUgPSBuaWw7Ci0gICAgICAgIAotICAgICAgICBSZXRhaW5QdHI8Q0ZBcnJheVJlZj4gbGFu
Z3VhZ2VzID0gYWRvcHRDRihDRkxvY2FsZUNvcHlQcmVmZXJyZWRMYW5ndWFnZXMoKSk7Ci0gICAg
ICAgIENGSW5kZXggbGFuZ3VhZ2VDb3VudCA9IENGQXJyYXlHZXRDb3VudChsYW5ndWFnZXMuZ2V0
KCkpOwotICAgICAgICBpZiAoIWxhbmd1YWdlQ291bnQpCi0gICAgICAgICAgICB1c2VyUHJlZmVy
cmVkTGFuZ3VhZ2VzLmFwcGVuZCgiZW4iKTsKLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBm
b3IgKENGSW5kZXggaSA9IDA7IGkgPCBsYW5ndWFnZUNvdW50OyBpKyspCi0gICAgICAgICAgICAg
ICAgdXNlclByZWZlcnJlZExhbmd1YWdlcy5hcHBlbmQoaHR0cFN0eWxlTGFuZ3VhZ2VDb2RlKChO
U1N0cmluZyAqKUNGQXJyYXlHZXRWYWx1ZUF0SW5kZXgobGFuZ3VhZ2VzLmdldCgpLCBpKSwgY291
bnRyeUNvZGUpKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIFZlY3RvcjxTdHJpbmc+IHVzZXJQ
cmVmZXJyZWRMYW5ndWFnZXNDb3B5OwotICAgIHVzZXJQcmVmZXJyZWRMYW5ndWFnZXNDb3B5LnJl
c2VydmVJbml0aWFsQ2FwYWNpdHkodXNlclByZWZlcnJlZExhbmd1YWdlcy5zaXplKCkpOwotCi0g
ICAgZm9yIChhdXRvJiBsYW5ndWFnZSA6IHVzZXJQcmVmZXJyZWRMYW5ndWFnZXMpCi0gICAgICAg
IHVzZXJQcmVmZXJyZWRMYW5ndWFnZXNDb3B5LnVuY2hlY2tlZEFwcGVuZChsYW5ndWFnZS5pc29s
YXRlZENvcHkoKSk7Ci0KLSAgICByZXR1cm4gdXNlclByZWZlcnJlZExhbmd1YWdlc0NvcHk7Ci0K
LSAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TOwotCi0gICAgcmV0dXJuIFZlY3RvcjxTdHJp
bmc+KCk7Ci19Ci0KLX0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NwaS9jZi9DRkJ1
bmRsZVNQSS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NwaS9jZi9D
RkJ1bmRsZVNQSS5oCShyZXZpc2lvbiAyMDA5NTcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9zcGkvY2YvQ0ZCdW5kbGVTUEkuaAkod29ya2luZyBjb3B5KQpAQCAtMSw0NCArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaWZuZGVmIENG
QnVuZGxlU1BJX2gKLSNkZWZpbmUgQ0ZCdW5kbGVTUElfaAotCi0jaW5jbHVkZSA8Q29yZUZvdW5k
YXRpb24vQ29yZUZvdW5kYXRpb24uaD4KLQotI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCi0j
aW1wb3J0IDxDb3JlRm91bmRhdGlvbi9DRlByaXYuaD4KLSNlbHNlCi0jaW5jbHVkZSA8d3RmL3Nw
aS9kYXJ3aW4vWFBDU1BJLmg+Ci0jZW5kaWYKLQotZXh0ZXJuICJDIiB7Ci12b2lkIF9DRkJ1bmRs
ZVNldHVwWFBDQm9vdHN0cmFwKHhwY19vYmplY3RfdCBib290c3RyYXApOwotCi1Cb29sZWFuIENG
QnVuZGxlR2V0TG9jYWxpemF0aW9uSW5mb0ZvckxvY2FsaXphdGlvbihDRlN0cmluZ1JlZiBsb2Nh
bGl6YXRpb25OYW1lLCBTSW50MzIgKmxhbmd1YWdlQ29kZSwgU0ludDMyICpyZWdpb25Db2RlLCBT
SW50MzIgKnNjcmlwdENvZGUsIENGU3RyaW5nRW5jb2RpbmcgKnN0cmluZ0VuY29kaW5nKTsKLUNG
U3RyaW5nUmVmIENGQnVuZGxlQ29weUxvY2FsaXphdGlvbkZvckxvY2FsaXphdGlvbkluZm8oU0lu
dDMyIGxhbmd1YWdlQ29kZSwgU0ludDMyIHJlZ2lvbkNvZGUsIFNJbnQzMiBzY3JpcHRDb2RlLCBD
RlN0cmluZ0VuY29kaW5nIHN0cmluZ0VuY29kaW5nKTsKLX0KLQotI2VuZGlmCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS91bml4L0xhbmd1YWdlVW5peC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdW5peC9MYW5ndWFnZVVuaXguY3BwCShyZXZpc2lvbiAy
MDA5NTcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS91bml4L0xhbmd1YWdlVW5peC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNDkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAw
NyBBbHAgVG9rZXIgPGFscEBhdG9rZXIuY29tPgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBmcmVl
IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqIG1vZGlmeSBpdCB1
bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiBMaWNl
bnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIK
LSAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0
ZXIgdmVyc2lvbi4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv
cGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsg
d2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkg
b3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogTGli
cmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogWW91
IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZQotICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBD
T1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gKiBCb3N0b24s
IE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVk
ZSAiTGFuZ3VhZ2UuaCIKLQotI2luY2x1ZGUgPGxvY2FsZS5oPgotI2luY2x1ZGUgPHd0Zi9WZWN0
b3IuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQotbmFtZXNwYWNlIFdlYkNv
cmUgewotCi0vLyBVc2luZyBwYW5nb19sYW5ndWFnZV9nZXRfZGVmYXVsdCgpIGhlcmUgaXMgbm90
IGFuIG9wdGlvbiwgYmVjYXVzZQotLy8gaXQgZG9lc24ndCBzdXBwb3J0IGNoYW5naW5nIHRoZSBs
b2NhbGUgaW4gcnVudGltZSwgc28gaXQgcmV0dXJucwotLy8gYWx3YXlzIHRoZSBzYW1lIHZhbHVl
Lgotc3RhdGljIFN0cmluZyBwbGF0Zm9ybUxhbmd1YWdlKCkKLXsKLSAgICBTdHJpbmcgbG9jYWxl
RGVmYXVsdChzZXRsb2NhbGUoTENfQ1RZUEUsIG51bGxwdHIpKTsKLSAgICBpZiAobG9jYWxlRGVm
YXVsdC5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBTdHJpbmcoImMiKTsKLQotICAgIFN0cmlu
ZyBub3JtYWxpemVkRGVmYXVsdCA9IGxvY2FsZURlZmF1bHQuY29udmVydFRvQVNDSUlMb3dlcmNh
c2UoKTsKLSAgICBub3JtYWxpemVkRGVmYXVsdC5yZXBsYWNlKCdfJywgJy0nKTsKLSAgICBub3Jt
YWxpemVkRGVmYXVsdC50cnVuY2F0ZShub3JtYWxpemVkRGVmYXVsdC5maW5kKCcuJykpOwotICAg
IHJldHVybiBub3JtYWxpemVkRGVmYXVsdDsKLX0KLQotVmVjdG9yPFN0cmluZz4gcGxhdGZvcm1V
c2VyUHJlZmVycmVkTGFuZ3VhZ2VzKCkKLXsKLSAgICByZXR1cm4geyBwbGF0Zm9ybUxhbmd1YWdl
KCkgfTsKLX0KLQotfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0xhbmd1YWdl
V2luLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vTGFuZ3Vh
Z2VXaW4uY3BwCShyZXZpc2lvbiAyMDA5NTcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93
aW4vTGFuZ3VhZ2VXaW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDc3ICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMDcgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
Ci0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpbmNsdWRlICJjb25m
aWcuaCIKLSNpbmNsdWRlICJMYW5ndWFnZS5oIgotCi0jaW5jbHVkZSA8d2luZG93cy5oPgotI2lu
Y2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQot
bmFtZXNwYWNlIFdlYkNvcmUgewotCi1zdGF0aWMgU3RyaW5nIGxvY2FsZUluZm8oTENUWVBFIGxv
Y2FsZVR5cGUsIGNvbnN0IFN0cmluZyYgZmFsbGJhY2spCi17Ci0gICAgTEFOR0lEIGxhbmdJRCA9
IEdldFVzZXJEZWZhdWx0VUlMYW5ndWFnZSgpOwotICAgIGludCBsb2NhbGVDaGFycyA9IEdldExv
Y2FsZUluZm8obGFuZ0lELCBsb2NhbGVUeXBlLCAwLCAwKTsKLSAgICBpZiAoIWxvY2FsZUNoYXJz
KQotICAgICAgICByZXR1cm4gZmFsbGJhY2s7Ci0gICAgVUNoYXIqIGxvY2FsZU5hbWVCdWY7Ci0g
ICAgU3RyaW5nIGxvY2FsZU5hbWUgPSBTdHJpbmc6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQobG9jYWxl
Q2hhcnMsIGxvY2FsZU5hbWVCdWYpOwotICAgIGxvY2FsZUNoYXJzID0gR2V0TG9jYWxlSW5mbyhs
YW5nSUQsIGxvY2FsZVR5cGUsIGxvY2FsZU5hbWVCdWYsIGxvY2FsZUNoYXJzKTsKLSAgICBpZiAo
IWxvY2FsZUNoYXJzKQotICAgICAgICByZXR1cm4gZmFsbGJhY2s7Ci0gICAgaWYgKGxvY2FsZU5h
bWUuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gZmFsbGJhY2s7Ci0KLSAgICBsb2NhbGVOYW1l
LnRydW5jYXRlKGxvY2FsZU5hbWUubGVuZ3RoKCkgLSAxKTsKLSAgICByZXR1cm4gbG9jYWxlTmFt
ZTsKLX0KLQotc3RhdGljIFN0cmluZyBwbGF0Zm9ybUxhbmd1YWdlKCkKLXsKLSAgICBzdGF0aWMg
U3RyaW5nIGNvbXB1dGVkRGVmYXVsdExhbmd1YWdlOwotICAgIGlmICghY29tcHV0ZWREZWZhdWx0
TGFuZ3VhZ2UuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gY29tcHV0ZWREZWZhdWx0TGFuZ3Vh
Z2U7Ci0KLSAgICBTdHJpbmcgbGFuZ3VhZ2VOYW1lID0gbG9jYWxlSW5mbyhMT0NBTEVfU0lTTzYz
OUxBTkdOQU1FLCAiZW4iKTsKLSAgICBTdHJpbmcgY291bnRyeU5hbWUgPSBsb2NhbGVJbmZvKExP
Q0FMRV9TSVNPMzE2NkNUUllOQU1FLCBTdHJpbmcoKSk7Ci0KLSAgICBpZiAoY291bnRyeU5hbWUu
aXNFbXB0eSgpKQotICAgICAgICBjb21wdXRlZERlZmF1bHRMYW5ndWFnZSA9IGxhbmd1YWdlTmFt
ZTsKLSAgICBlbHNlCi0gICAgICAgIGNvbXB1dGVkRGVmYXVsdExhbmd1YWdlID0gbGFuZ3VhZ2VO
YW1lICsgJy0nICsgY291bnRyeU5hbWU7Ci0KLSAgICByZXR1cm4gY29tcHV0ZWREZWZhdWx0TGFu
Z3VhZ2U7Ci19Ci0KLVZlY3RvcjxTdHJpbmc+IHBsYXRmb3JtVXNlclByZWZlcnJlZExhbmd1YWdl
cygpCi17Ci0gICAgVmVjdG9yPFN0cmluZz4gdXNlclByZWZlcnJlZExhbmd1YWdlczsKLSAgICB1
c2VyUHJlZmVycmVkTGFuZ3VhZ2VzLmFwcGVuZChwbGF0Zm9ybUxhbmd1YWdlKCkpOwotICAgIHJl
dHVybiB1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzOwotfQotCi19Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>279081</attachid>
            <date>2016-05-16 19:37:18 -0700</date>
            <delta_ts>2016-05-16 19:51:34 -0700</delta_ts>
            <desc>or maybe this</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>67020</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyMDA5NjgpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkod29ya2luZyBjb3B5KQpAQCAtODM2OSw3ICs4MzY5LDcgQEAKIAkJCSk7CiAJCQlydW5P
bmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJCXNoZWxsUGF0aCA9IC9iaW4v
c2g7Ci0JCQlzaGVsbFNjcmlwdCA9ICJzZXQgLWVcblxuaWYgWyBcIiR7QUNUSU9OfVwiID0gXCJp
bnN0YWxsaGRyc1wiIF07IHRoZW5cbiAgICBleGl0IDA7XG5maVxuXG5pZiBbIC1mIC4uLy4uL1Rv
b2xzL1NjcmlwdHMvY2hlY2stZm9yLWluYXBwcm9wcmlhdGUtb2JqYy1jbGFzcy1uYW1lcyBdOyB0
aGVuXG4gICAgLi4vLi4vVG9vbHMvU2NyaXB0cy9jaGVjay1mb3ItaW5hcHByb3ByaWF0ZS1vYmpj
LWNsYXNzLW5hbWVzIEpTXG5maSI7CisJCQlzaGVsbFNjcmlwdCA9ICJzZXQgLWVcblxuaWYgWyBc
IiR7QUNUSU9OfVwiID0gXCJpbnN0YWxsaGRyc1wiIF07IHRoZW5cbiAgICBleGl0IDA7XG5maVxu
XG5pZiBbIC1mIC4uLy4uL1Rvb2xzL1NjcmlwdHMvY2hlY2stZm9yLWluYXBwcm9wcmlhdGUtb2Jq
Yy1jbGFzcy1uYW1lcyBdOyB0aGVuXG4gICAgLi4vLi4vVG9vbHMvU2NyaXB0cy9jaGVjay1mb3It
aW5hcHByb3ByaWF0ZS1vYmpjLWNsYXNzLW5hbWVzIEpTIFdURlxuZmkiOwogCQl9OwogCQkzNzMy
ODExQTE3RkNEMjM1MDA0QUQ1MTkgLyogUG9zdHByb2Nlc3MgSGVhZGVycyAqLyA9IHsKIAkJCWlz
YSA9IFBCWFNoZWxsU2NyaXB0QnVpbGRQaGFzZTsKSW5kZXg6IFNvdXJjZS9XVEYvV1RGLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi9XVEYueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjAwOTY4KQorKysgU291cmNlL1dURi9XVEYu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMzAxLDYgKzMwMSwx
MSBAQAogCQlDRDU0OTdBRDE1ODU3RDAzMDBCNUJDMzAgLyogTWVkaWFUaW1lLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDU0OTdBQjE1ODU3RDAzMDBC
NUJDMzAgLyogTWVkaWFUaW1lLmggKi87IH07CiAJCUNFNDY1MTZFMTlEQjFGQjQwMDNFQ0EwNSAv
KiBOU01hcFRhYmxlU1BJLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBDRTQ2NTE2RDE5REIxRkI0MDAzRUNBMDUgLyogTlNNYXBUYWJsZVNQSS5oICovOyB9
OwogCQlDRTczRTAyNTE5RENCN0FCMDA1ODBENUMgLyogWFBDU1BJLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTczRTAyNDE5RENCN0FCMDA1ODBENUMg
LyogWFBDU1BJLmggKi87IH07CisJCURDRUUyMUZCMUNFQTc1MzgwMDBDMjM5NiAvKiBDRkJ1bmRs
ZVNQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRENF
RTIxRkExQ0VBNzUzODAwMEMyMzk2IC8qIENGQnVuZGxlU1BJLmggKi87IH07CisJCURDRUUyMjAw
MUNFQTc1NTEwMDBDMjM5NiAvKiBCbG9ja09iakNFeGNlcHRpb25zLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBEQ0VFMjFGQzFDRUE3NTUxMDAwQzIzOTYg
LyogQmxvY2tPYmpDRXhjZXB0aW9ucy5oICovOyB9OworCQlEQ0VFMjIwMTFDRUE3NTUxMDAwQzIz
OTYgLyogQmxvY2tPYmpDRXhjZXB0aW9ucy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IERDRUUyMUZEMUNFQTc1NTEwMDBDMjM5NiAvKiBCbG9ja09iakNF
eGNlcHRpb25zLm1tICovOyB9OworCQlEQ0VFMjIwMjFDRUE3NTUxMDAwQzIzOTYgLyogUGxhdGZv
cm1Vc2VyUHJlZmVycmVkTGFuZ3VhZ2VzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBEQ0VFMjFGRTFDRUE3NTUxMDAwQzIzOTYgLyogUGxhdGZvcm1Vc2Vy
UHJlZmVycmVkTGFuZ3VhZ2VzLmggKi87IH07CisJCURDRUUyMjAzMUNFQTc1NTEwMDBDMjM5NiAv
KiBQbGF0Zm9ybVVzZXJQcmVmZXJyZWRMYW5ndWFnZXNNYWMubW0gaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBEQ0VFMjFGRjFDRUE3NTUxMDAwQzIzOTYgLyog
UGxhdGZvcm1Vc2VyUHJlZmVycmVkTGFuZ3VhZ2VzTWFjLm1tICovOyB9OwogCQlERTVBMDlGQzFC
QTM2OTkyMDAzRDQ0MjQgLyogQ29tbW9uQ3J5cHRvU1BJLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBERTVBMDlGQjFCQTM2OTkyMDAzRDQ0MjQgLyogQ29t
bW9uQ3J5cHRvU1BJLmggKi87IH07CiAJCUUxNTU1NkY1MThBMENDMTgwMDZGNDhGQiAvKiBDcnlw
dG9ncmFwaGljVXRpbGl0aWVzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEUxNTU1NkYzMThBMENDMTgwMDZGNDhGQiAvKiBDcnlwdG9ncmFwaGljVXRp
bGl0aWVzLmNwcCAqLzsgfTsKIAkJRTE1NTU2RjYxOEEwQ0MxODAwNkY0OEZCIC8qIENyeXB0b2dy
YXBoaWNVdGlsaXRpZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEUxNTU1NkY0MThBMENDMTgwMDZGNDhGQiAvKiBDcnlwdG9ncmFwaGljVXRpbGl0aWVz
LmggKi87IH07CkBAIC02MjIsNiArNjI3LDExIEBACiAJCUNENTQ5N0FCMTU4NTdEMDMwMEI1QkMz
MCAvKiBNZWRpYVRpbWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFU
aW1lLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNFNDY1MTZEMTlEQjFGQjQwMDNF
Q0EwNSAvKiBOU01hcFRhYmxlU1BJLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IE5TTWFwVGFibGVTUEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0U3M0UwMjQx
OURDQjdBQjAwNTgwRDVDIC8qIFhQQ1NQSS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBYUENTUEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRENFRTIxRkExQ0VB
NzUzODAwMEMyMzk2IC8qIENGQnVuZGxlU1BJLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
bmFtZSA9IENGQnVuZGxlU1BJLmg7IHBhdGggPSBjZi9DRkJ1bmRsZVNQSS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlEQ0VFMjFGQzFDRUE3NTUxMDAwQzIzOTYgLyogQmxvY2tPYmpD
RXhjZXB0aW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCbG9ja09iakNF
eGNlcHRpb25zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCURDRUUyMUZEMUNFQTc1
NTEwMDBDMjM5NiAvKiBCbG9ja09iakNFeGNlcHRpb25zLm1tICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAub2JqY3BwOyBwYXRoID0gQmxvY2tPYmpDRXhjZXB0aW9ucy5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJRENFRTIxRkUxQ0VBNzU1MTAwMEMyMzk2IC8qIFBsYXRmb3JtVXNl
clByZWZlcnJlZExhbmd1YWdlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQ
bGF0Zm9ybVVzZXJQcmVmZXJyZWRMYW5ndWFnZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJRENFRTIxRkYxQ0VBNzU1MTAwMEMyMzk2IC8qIFBsYXRmb3JtVXNlclByZWZlcnJlZExh
bmd1YWdlc01hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFBs
YXRmb3JtVXNlclByZWZlcnJlZExhbmd1YWdlc01hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJREU1QTA5RkIxQkEzNjk5MjAwM0Q0NDI0IC8qIENvbW1vbkNyeXB0b1NQSS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb21tb25DcnlwdG9TUEkuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTE1NTU2RjMxOEEwQ0MxODAwNkY0OEZCIC8qIENyeXB0
b2dyYXBoaWNVdGlsaXRpZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gQ3J5cHRvZ3JhcGhpY1V0aWxpdGllcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUUxNTU1NkY0MThBMENDMTgwMDZGNDhGQiAvKiBDcnlwdG9ncmFwaGljVXRpbGl0aWVzLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENyeXB0b2dyYXBoaWNVdGlsaXRpZXMu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTc2OCw2ICs3NzgsOCBAQAogCQkJCUE4
QTQ3MjVGMTUxQTgyNUEwMDQxMjNGRiAvKiBCaXRtYXAuaCAqLywKIAkJCQlBOEE0NzI2MDE1MUE4
MjVBMDA0MTIzRkYgLyogQml0VmVjdG9yLmNwcCAqLywKIAkJCQlBOEE0NzI2MTE1MUE4MjVBMDA0
MTIzRkYgLyogQml0VmVjdG9yLmggKi8sCisJCQkJRENFRTIxRkMxQ0VBNzU1MTAwMEMyMzk2IC8q
IEJsb2NrT2JqQ0V4Y2VwdGlvbnMuaCAqLywKKwkJCQlEQ0VFMjFGRDFDRUE3NTUxMDAwQzIzOTYg
LyogQmxvY2tPYmpDRXhjZXB0aW9ucy5tbSAqLywKIAkJCQkxQTk0NEY0NjFDM0Q4ODE0MDA1QkQy
OEMgLyogQmxvY2tQdHIuaCAqLywKIAkJCQlBOEE0NzI2NDE1MUE4MjVBMDA0MTIzRkYgLyogQmxv
Y2tTdGFjay5oICovLAogCQkJCUE4QTQ3MjY1MTUxQTgyNUEwMDQxMjNGRiAvKiBCbG9vbUZpbHRl
ci5oICovLApAQCAtODgyLDYgKzg5NCw4IEBACiAJCQkJMEY4MjRBNjUxQjc0NDNBMDAwMkUzNDVE
IC8qIFBhcmtpbmdMb3QuaCAqLywKIAkJCQlBOEE0NzJFRDE1MUE4MjVCMDA0MTIzRkYgLyogUGFz
c1JlZlB0ci5oICovLAogCQkJCUE4NzZEQkQ3MTUxODE2RTUwMERBREI5NSAvKiBQbGF0Zm9ybS5o
ICovLAorCQkJCURDRUUyMUZFMUNFQTc1NTEwMDBDMjM5NiAvKiBQbGF0Zm9ybVVzZXJQcmVmZXJy
ZWRMYW5ndWFnZXMuaCAqLywKKwkJCQlEQ0VFMjFGRjFDRUE3NTUxMDAwQzIzOTYgLyogUGxhdGZv
cm1Vc2VyUHJlZmVycmVkTGFuZ3VhZ2VzTWFjLm1tICovLAogCQkJCTBGRjg2MDk0MUJDQ0JENzQw
MDQ1MTI3RiAvKiBQb2ludGVyQ29tcGFyaXNvbi5oICovLAogCQkJCTBGOUQzMzVEMTY1REJBNzMw
MDVBRDM4NyAvKiBQcmludFN0cmVhbS5jcHAgKi8sCiAJCQkJMEY5RDMzNUUxNjVEQkE3MzAwNUFE
Mzg3IC8qIFByaW50U3RyZWFtLmggKi8sCkBAIC0xMTAxLDEyICsxMTE1LDIxIEBACiAJCUNFRjQ4
MjBDMTlEQTM0NzYwMENDMDRCOCAvKiBzcGkgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJ
CWNoaWxkcmVuID0gKAorCQkJCURDRUUyMUY5MUNFQTc1MkYwMDBDMjM5NiAvKiBjZiAqLywKIAkJ
CQlDRTQ2NTE2QzE5REIxRkI0MDAzRUNBMDUgLyogY29jb2EgKi8sCiAJCQkJQ0U3M0UwMjMxOURD
QjdBQjAwNTgwRDVDIC8qIGRhcndpbiAqLywKIAkJCSk7CiAJCQlwYXRoID0gc3BpOwogCQkJc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsKIAkJfTsKKwkJRENFRTIxRjkxQ0VBNzUyRjAwMEMyMzk2IC8q
IGNmICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQlEQ0VF
MjFGQTFDRUE3NTM4MDAwQzIzOTYgLyogQ0ZCdW5kbGVTUEkuaCAqLywKKwkJCSk7CisJCQluYW1l
ID0gY2Y7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OwogCQlFNEEwQUQzQjFBOTYy
NTE5MDA1MzZERjYgLyogY29jb2EgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxk
cmVuID0gKApAQCAtMTEzOSw2ICsxMTYyLDcgQEAKIAkJCQk5QkQ4RjQwQjE3NkMyQjQ3MDAwMkQ4
NjUgLyogQXRvbWljU3RyaW5nVGFibGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0Njk0MTlDMTZF
QUIxMEEwMDI0RTE0NiAvKiBBdXRvZHJhaW5lZFBvb2wuaCBpbiBIZWFkZXJzICovLAogCQkJCTBG
QjE0RTE5MTgwRkEyMTgwMDlCNkI0RCAvKiBCYWcuaCBpbiBIZWFkZXJzICovLAorCQkJCURDRUUy
MjAwMUNFQTc1NTEwMDBDMjM5NiAvKiBCbG9ja09iakNFeGNlcHRpb25zLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRkIxNEUxQjE4MTBFMURDMDA5QjZCNEQgLyogQmFnVG9IYXNoTWFwLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk4MTM0MDEzOTE1QjA5MkZEMDAxRkYwQjggLyogQmFzZTY0LmggaW4gSGVh
ZGVycyAqLywKIAkJCQlBOEE0NzNBOTE1MUE4MjVCMDA0MTIzRkYgLyogYmlnbnVtLWR0b2EuaCBp
biBIZWFkZXJzICovLApAQCAtMTI5NSw2ICsxMzE5LDcgQEAKIAkJCQlBOEE0NzQzRjE1MUE4MjVC
MDA0MTIzRkYgLyogU3RyaW5nSGFzaC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTc0ODc0NTQxN0Ew
QkRBRTAwRkEwNENCIC8qIFN0cmluZ0hhc2hEdW1wQ29udGV4dC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQThBNDc0NDExNTFBODI1QjAwNDEyM0ZGIC8qIFN0cmluZ0ltcGwuaCBpbiBIZWFkZXJzICov
LAorCQkJCURDRUUyMUZCMUNFQTc1MzgwMDBDMjM5NiAvKiBDRkJ1bmRsZVNQSS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQThBNDc0NDIxNTFBODI1QjAwNDEyM0ZGIC8qIFN0cmluZ09wZXJhdG9ycy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEZEREJGQTgxNjY2REZBMzAwQzU1RkVGIC8qIFN0cmluZ1By
aW50U3RyZWFtLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTZFQjFFMDE4N0QwQkQzMDAzMDEyNkYg
LyogU3RyaW5nVmlldy5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMzEyLDYgKzEzMzcsNyBAQAogCQkJ
CUE4QTQ3NDU1MTUxQTgyNUIwMDQxMjNGRiAvKiBUaHJlYWRTcGVjaWZpYy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNTUzMDcxQ0ExQzQwNDI3MjAwMzg0ODk4IC8qIFRpbnlMUlVDYWNoZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMEZFRDY3QjYxQjIyRDREODAwNjZDRTE1IC8qIFRpbnlQdHJTZXQuaCBp
biBIZWFkZXJzICovLAorCQkJCURDRUUyMjAyMUNFQTc1NTEwMDBDMjM5NiAvKiBQbGF0Zm9ybVVz
ZXJQcmVmZXJyZWRMYW5ndWFnZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0OUVGMTYzMTZCQkZF
MEQwMDBBNDMzMSAvKiBUcmlTdGF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODNGQkE5MzIxOURG
NDU5NzAwRjMwQURCIC8qIFR5cGVDYXN0cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFGREU2NDgx
OTUyMDFDMzAwQzQ4RkZBIC8qIFR5cGVDYXN0c0NGLmggaW4gSGVhZGVycyAqLywKQEAgLTE0NjAs
NiArMTQ4Niw3IEBACiAJCQkJQThBNDczQjMxNTFBODI1QjAwNDEyM0ZGIC8qIGZhc3QtZHRvYS5j
YyBpbiBTb3VyY2VzICovLAogCQkJCTBGODg1RTBGMTg0NUFFQTkwMEYxRTNGQSAvKiBGYXN0Qml0
VmVjdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4QTQ3M0MzMTUxQTgyNUIwMDQxMjNGRiAv
KiBGYXN0TWFsbG9jLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCURDRUUyMjAxMUNFQTc1NTEwMDBD
MjM5NiAvKiBCbG9ja09iakNFeGNlcHRpb25zLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY5RDMz
NjAxNjVEQkE3MzAwNUFEMzg3IC8qIEZpbGVQcmludFN0cmVhbS5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlBOEE0NzNCNTE1MUE4MjVCMDA0MTIzRkYgLyogZml4ZWQtZHRvYS5jYyBpbiBTb3VyY2Vz
ICovLAogCQkJCTFBMUQ4QjlFMTczMTg3OTgwMDE0MURBNCAvKiBGdW5jdGlvbkRpc3BhdGNoZXIu
Y3BwIGluIFNvdXJjZXMgKi8sCkBAIC0xNTEwLDYgKzE1MzcsNyBAQAogCQkJCUE4QTQ3NDY5MTUx
QTgyNUIwMDQxMjNGRiAvKiBVVEY4LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFGQTQ3QzhBMTUy
NTAyREEwMDU2OEQxQiAvKiBXZWJDb3JlVGhyZWFkLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBG
RTQ0NzlDMUI3QUFBMDMwMDk0OThFQiAvKiBXb3JkTG9jay5jcHAgaW4gU291cmNlcyAqLywKKwkJ
CQlEQ0VFMjIwMzFDRUE3NTUxMDAwQzIzOTYgLyogUGxhdGZvcm1Vc2VyUHJlZmVycmVkTGFuZ3Vh
Z2VzTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJRTRBMEFEMzkxQTk2MjQ1NTAwNTM2REY2IC8q
IFdvcmtRdWV1ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFNEEwQUQzRDFBOTYyNTNDMDA1MzZE
RjYgLyogV29ya1F1ZXVlQ29jb2EuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQThBNDc0NDUxNTFB
ODI1QjAwNDEyM0ZGIC8qIFdURlN0cmluZy5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJj
ZS9XVEYvd3RmL0Jsb2NrT2JqQ0V4Y2VwdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RG
L3d0Zi9CbG9ja09iakNFeGNlcHRpb25zLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV1RGL3d0
Zi9CbG9ja09iakNFeGNlcHRpb25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzMiBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAwMywgMjAxNiBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lt
cG9ydCA8Rm91bmRhdGlvbi9OU0V4Y2VwdGlvbi5oPgorCitXVEZfRVhQT1JUX1BSSVZBVEUgTk9f
UkVUVVJOX0RVRV9UT19BU1NFUlQgdm9pZCBSZXBvcnRCbG9ja2VkT2JqQ0V4Y2VwdGlvbihOU0V4
Y2VwdGlvbiAqKTsKKworI2RlZmluZSBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMgQHRyeSB7
CisjZGVmaW5lIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMgfSBAY2F0Y2goTlNFeGNlcHRpb24g
KmxvY2FsRXhjZXB0aW9uKSB7IFJlcG9ydEJsb2NrZWRPYmpDRXhjZXB0aW9uKGxvY2FsRXhjZXB0
aW9uKTsgfQorCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9CbG9ja09iakNFeGNlcHRpb25zLm1tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL0Jsb2NrT2JqQ0V4Y2VwdGlvbnMubW0JKHJldmlz
aW9uIDApCisrKyBTb3VyY2UvV1RGL3d0Zi9CbG9ja09iakNFeGNlcHRpb25zLm1tCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsMzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDcs
IDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJC
bG9ja09iakNFeGNlcHRpb25zLmgiCisKKyNpbXBvcnQgPHd0Zi9Bc3NlcnRpb25zLmg+CisKK3Zv
aWQgUmVwb3J0QmxvY2tlZE9iakNFeGNlcHRpb24oTlNFeGNlcHRpb24gKmV4Y2VwdGlvbikKK3sK
KyNpZiBBU1NFUlRfRElTQUJMRUQKKyAgICBOU0xvZyhAIioqKiBXZWJLaXQgZGlzY2FyZGluZyBl
eGNlcHRpb246IDwlQD4gJUAiLCBbZXhjZXB0aW9uIG5hbWVdLCBbZXhjZXB0aW9uIHJlYXNvbl0p
OworI2Vsc2UKKyAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKDAsICJVbmNhdWdodCBleGNlcHRpb24g
LSAlQCIsIGV4Y2VwdGlvbik7CisjZW5kaWYKK30KSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1BsYXRm
b3JtVXNlclByZWZlcnJlZExhbmd1YWdlcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3Rm
L1BsYXRmb3JtVXNlclByZWZlcnJlZExhbmd1YWdlcy5oCShyZXZpc2lvbiAwKQorKysgU291cmNl
L1dURi93dGYvUGxhdGZvcm1Vc2VyUHJlZmVycmVkTGFuZ3VhZ2VzLmgJKHdvcmtpbmcgY29weSkK
QEAgLTAsMCArMSw0NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgUGxhdGZvcm1Vc2VyUHJlZmVy
cmVkTGFuZ3VhZ2VzX2gKKyNkZWZpbmUgUGxhdGZvcm1Vc2VyUHJlZmVycmVkTGFuZ3VhZ2VzX2gK
KworI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcu
aD4KKworbmFtZXNwYWNlIFdURiB7CisKK1dURl9FWFBPUlRfUFJJVkFURSB2b2lkIHNldFBsYXRm
b3JtVXNlclByZWZlcnJlZExhbmd1YWdlc0NoYW5nZWRDYWxsYmFjayh2b2lkICgqKSgpKTsKKwor
V1RGX0VYUE9SVF9QUklWQVRFIFZlY3RvcjxTdHJpbmc+IHBsYXRmb3JtVXNlclByZWZlcnJlZExh
bmd1YWdlcygpOworCit9IC8vIG5hbWVzcGFjZSBXVEYKKwordXNpbmcgV1RGOjpzZXRQbGF0Zm9y
bVVzZXJQcmVmZXJyZWRMYW5ndWFnZXNDaGFuZ2VkQ2FsbGJhY2s7Cit1c2luZyBXVEY6OnBsYXRm
b3JtVXNlclByZWZlcnJlZExhbmd1YWdlczsKKworI2VuZGlmIC8vIFBsYXRmb3JtVXNlclByZWZl
cnJlZExhbmd1YWdlc19oCisKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1BsYXRmb3JtVXNlclByZWZl
cnJlZExhbmd1YWdlc01hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9QbGF0Zm9y
bVVzZXJQcmVmZXJyZWRMYW5ndWFnZXNNYWMubW0JKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV1RG
L3d0Zi9QbGF0Zm9ybVVzZXJQcmVmZXJyZWRMYW5ndWFnZXNNYWMubW0JKHdvcmtpbmcgY29weSkK
QEAgLTAsMCArMSwxNzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDUsIDIwMDYs
IDIwMTAsIDIwMTEsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIlBsYXRmb3JtVXNlclByZWZlcnJlZExh
bmd1YWdlcy5oIgorCisjaW1wb3J0ICJCbG9ja09iakNFeGNlcHRpb25zLmgiCisjaW1wb3J0IDxt
dXRleD4KKyNpbXBvcnQgPHVuaWNvZGUvdWxvYy5oPgorI2ltcG9ydCA8d3RmL0Fzc2VydGlvbnMu
aD4KKyNpbXBvcnQgPHd0Zi9Mb2NrLmg+CisjaW1wb3J0IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4K
KyNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KKyNpbXBvcnQgPHd0Zi9zcGkvY2YvQ0ZCdW5kbGVT
UEkuaD4KKyNpbXBvcnQgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV1RGIHsK
Kworc3RhdGljIHZvaWQgKCpjYWxsYmFjaykoKTsKKwordm9pZCBzZXRQbGF0Zm9ybVVzZXJQcmVm
ZXJyZWRMYW5ndWFnZXNDaGFuZ2VkQ2FsbGJhY2sodm9pZCAoKnBhc3NlZENhbGxiYWNrKSgpKQor
eworICAgIGNhbGxiYWNrID0gcGFzc2VkQ2FsbGJhY2s7Cit9CisKK3N0YXRpYyBTdGF0aWNMb2Nr
IHByZWZlcnJlZExhbmd1YWdlc011dGV4OworCitzdGF0aWMgVmVjdG9yPFN0cmluZz4mIHByZWZl
cnJlZExhbmd1YWdlcygpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFZlY3RvcjxTdHJp
bmc+PiBsYW5ndWFnZXM7CisgICAgcmV0dXJuIGxhbmd1YWdlczsKK30KKworfQorCitAaW50ZXJm
YWNlIFdURkxhbmd1YWdlQ2hhbmdlT2JzZXJ2ZXIgOiBOU09iamVjdAorQGVuZAorCitAaW1wbGVt
ZW50YXRpb24gV1RGTGFuZ3VhZ2VDaGFuZ2VPYnNlcnZlcgorCisrICh2b2lkKWxhbmd1YWdlUHJl
ZmVyZW5jZXNEaWRDaGFuZ2U6KE5TTm90aWZpY2F0aW9uICopbm90aWZpY2F0aW9uCit7CisgICAg
VU5VU0VEX1BBUkFNKG5vdGlmaWNhdGlvbik7CisKKyAgICB7CisgICAgICAgIHN0ZDo6bG9ja19n
dWFyZDxTdGF0aWNMb2NrPiBsb2NrKFdURjo6cHJlZmVycmVkTGFuZ3VhZ2VzTXV0ZXgpOworICAg
ICAgICBXVEY6OnByZWZlcnJlZExhbmd1YWdlcygpLmNsZWFyKCk7CisgICAgfQorICAgIAorICAg
IGlmIChXVEY6OmNhbGxiYWNrKQorICAgICAgICBXVEY6OmNhbGxiYWNrKCk7Cit9CisKK0BlbmQK
KworbmFtZXNwYWNlIFdURiB7CisKK3N0YXRpYyBTdHJpbmcgaHR0cFN0eWxlTGFuZ3VhZ2VDb2Rl
KE5TU3RyaW5nICpsYW5ndWFnZSwgTlNTdHJpbmcgKmNvdW50cnkpCit7CisgICAgU0ludDMyIGxh
bmd1YWdlQ29kZTsKKyAgICBTSW50MzIgcmVnaW9uQ29kZTsgCisgICAgU0ludDMyIHNjcmlwdENv
ZGU7IAorICAgIENGU3RyaW5nRW5jb2Rpbmcgc3RyaW5nRW5jb2Rpbmc7CisgICAgCisgICAgYm9v
bCBsYW5ndWFnZURpZFNwZWNpZnlFeHBsaWNpdFZhcmlhbnQgPSBbbGFuZ3VhZ2UgcmFuZ2VPZkNo
YXJhY3RlckZyb21TZXQ6W05TQ2hhcmFjdGVyU2V0IGNoYXJhY3RlclNldFdpdGhDaGFyYWN0ZXJz
SW5TdHJpbmc6QCItXyJdXS5sb2NhdGlvbiAhPSBOU05vdEZvdW5kOworCisgICAgLy8gRklYTUU6
IFRoaXMgdHJhbnNmb3JtYXRpb24gaXMgdmVyeSB3cm9uZzoKKyAgICAvLyAxLiBUaGVyZSBpcyBu
byByZWFzb24gd2h5IENGQnVuZGxlIGxvY2FsaXphdGlvbiBuYW1lcyB3b3VsZCBiZSBhdCBhbGwg
cmVsYXRlZCB0byBsYW5ndWFnZSBuYW1lcyBhcyB1c2VkIG9uIHRoZSBXZWIuCisgICAgLy8gMi4g
U2NyaXB0IE1hbmFnZXIgY29kZXMgY2Fubm90IHJlcHJlc2VudCBhbGwgbGFuZ3VhZ2VzIHRoYXQg
YXJlIG5vdyBzdXBwb3J0ZWQgYnkgdGhlIHBsYXRmb3JtLCBzbyB0aGUgY29udmVyc2lvbiBpcyBs
b3NzeS4KKyAgICAvLyAzLiBUaGlzIHNob3VsZCBwcm9iYWJseSBtYXRjaCB3aGF0IGlzIHNlbnQg
YnkgdGhlIG5ldHdvcmsgbGF5ZXIgYXMgQWNjZXB0LUxhbmd1YWdlLCBidXQgY3VycmVudGx5LCB0
aGF0J3MgaW1wbGVtZW50ZWQgc2VwYXJhdGVseS4KKyAgICBDRkJ1bmRsZUdldExvY2FsaXphdGlv
bkluZm9Gb3JMb2NhbGl6YXRpb24oKENGU3RyaW5nUmVmKWxhbmd1YWdlLCAmbGFuZ3VhZ2VDb2Rl
LCAmcmVnaW9uQ29kZSwgJnNjcmlwdENvZGUsICZzdHJpbmdFbmNvZGluZyk7CisgICAgUmV0YWlu
UHRyPENGU3RyaW5nUmVmPiBwcmVmZXJyZWRMYW5ndWFnZUNvZGUgPSBhZG9wdENGKENGQnVuZGxl
Q29weUxvY2FsaXphdGlvbkZvckxvY2FsaXphdGlvbkluZm8obGFuZ3VhZ2VDb2RlLCByZWdpb25D
b2RlLCBzY3JpcHRDb2RlLCBzdHJpbmdFbmNvZGluZykpOworICAgIGlmIChwcmVmZXJyZWRMYW5n
dWFnZUNvZGUpCisgICAgICAgIGxhbmd1YWdlID0gKE5TU3RyaW5nICopcHJlZmVycmVkTGFuZ3Vh
Z2VDb2RlLmdldCgpOworCisgICAgLy8gTWFrZSB0aGUgc3RyaW5nIGxvd2VyY2FzZS4KKyAgICBO
U1N0cmluZyAqbG93ZXJjYXNlTGFuZ3VhZ2VDb2RlID0gW2xhbmd1YWdlIGxvd2VyY2FzZVN0cmlu
Z107CisgICAgTlNTdHJpbmcgKmxvd2VyY2FzZUNvdW50cnlDb2RlID0gW2NvdW50cnkgbG93ZXJj
YXNlU3RyaW5nXTsKKyAgICAKKyAgICAvLyBJZiB3ZSBzZWUgYSAiXyIgYWZ0ZXIgYSAyLWxldHRl
ciBsYW5ndWFnZSBjb2RlOgorICAgIC8vIElmIHRoZSBjb3VudHJ5IGlzIHZhbGlkIGFuZCB0aGUg
bGFuZ3VhZ2UgZGlkIG5vdCBzcGVjaWZ5IGEgdmFyaWFudCwgcmVwbGFjZSB0aGUgIl8iIGFuZAor
ICAgIC8vIHdoYXRldmVyIGNvbWVzIGFmdGVyIGl0IHdpdGggIi0iIGZvbGxvd2VkIGJ5IHRoZSBj
b3VudHJ5IGNvZGUuCisgICAgLy8gT3RoZXJ3aXNlLCByZXBsYWNlIHRoZSAiXyIgd2l0aCBhICIt
IiBhbmQgdXNlIHdoYXRldmVyIGNvdW50cnkKKyAgICAvLyBDRkJ1bmRsZUNvcHlMb2NhbGl6YXRp
b25Gb3JMb2NhbGl6YXRpb25JbmZvKCkgcmV0dXJuZWQuCisgICAgaWYgKFtsb3dlcmNhc2VMYW5n
dWFnZUNvZGUgbGVuZ3RoXSA+PSAzICYmIFtsb3dlcmNhc2VMYW5ndWFnZUNvZGUgY2hhcmFjdGVy
QXRJbmRleDoyXSA9PSAnXycpIHsKKyAgICAgICAgaWYgKGNvdW50cnkgJiYgIWxhbmd1YWdlRGlk
U3BlY2lmeUV4cGxpY2l0VmFyaWFudCkKKyAgICAgICAgICAgIHJldHVybiBbTlNTdHJpbmcgc3Ry
aW5nV2l0aEZvcm1hdDpAIiVALSVAIiwgW2xvd2VyY2FzZUxhbmd1YWdlQ29kZSBzdWJzdHJpbmdX
aXRoUmFuZ2U6TlNNYWtlUmFuZ2UoMCwgMildLCBsb3dlcmNhc2VDb3VudHJ5Q29kZV07CisgICAg
ICAgIAorICAgICAgICAvLyBGYWxsIGJhY2sgdG8gb2xkZXIgYmVoYXZpb3IsIHdoaWNoIHVzZWQg
dGhlIG9yaWdpbmFsIGxhbmd1YWdlLWJhc2VkIGNvZGUgYnV0IGp1c3QgY2hhbmdlZAorICAgICAg
ICAvLyB0aGUgIl8iIHRvIGEgIi0iLgorICAgICAgICBSZXRhaW5QdHI8TlNNdXRhYmxlU3RyaW5n
PiBtdXRhYmxlTGFuZ3VhZ2VDb2RlID0gYWRvcHROUyhbbG93ZXJjYXNlTGFuZ3VhZ2VDb2RlIG11
dGFibGVDb3B5XSk7CisgICAgICAgIFttdXRhYmxlTGFuZ3VhZ2VDb2RlLmdldCgpIHJlcGxhY2VD
aGFyYWN0ZXJzSW5SYW5nZTpOU01ha2VSYW5nZSgyLCAxKSB3aXRoU3RyaW5nOkAiLSJdOworICAg
ICAgICByZXR1cm4gbXV0YWJsZUxhbmd1YWdlQ29kZS5nZXQoKTsKKyAgICB9CisKKyAgICByZXR1
cm4gbG93ZXJjYXNlTGFuZ3VhZ2VDb2RlOworfQorCitzdGF0aWMgYm9vbCBpc1ZhbGlkSUNVQ291
bnRyeUNvZGUoTlNTdHJpbmcqIGNvdW50cnlDb2RlKQoreworICAgIGlmICghY291bnRyeUNvZGUp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBjb25zdCBjaGFyKiBjb25zdCogY291bnRyaWVz
ID0gdWxvY19nZXRJU09Db3VudHJpZXMoKTsKKyAgICBjb25zdCBjaGFyKiBjb3VudHJ5VVRGOCA9
IFtjb3VudHJ5Q29kZSBVVEY4U3RyaW5nXTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBjb3Vu
dHJpZXNbaV07ICsraSkgeworICAgICAgICBjb25zdCBjaGFyKiBwb3NzaWJsZUNvdW50cnkgPSBj
b3VudHJpZXNbaV07CisgICAgICAgIGlmICghc3RyY21wKGNvdW50cnlVVEY4LCBwb3NzaWJsZUNv
dW50cnkpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIHJldHVybiBmYWxz
ZTsKK30KKworVmVjdG9yPFN0cmluZz4gcGxhdGZvcm1Vc2VyUHJlZmVycmVkTGFuZ3VhZ2VzKCkK
K3sKKyNpZiBQTEFURk9STShNQUMpCisgICAgc3RhdGljIGRpc3BhdGNoX29uY2VfdCBvbmNlVG9r
ZW47CisgICAgZGlzcGF0Y2hfb25jZSgmb25jZVRva2VuLCBeeworICAgICAgICBbW05TRGlzdHJp
YnV0ZWROb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0gYWRkT2JzZXJ2ZXI6W1dURkxh
bmd1YWdlQ2hhbmdlT2JzZXJ2ZXIgc2VsZl0gc2VsZWN0b3I6QHNlbGVjdG9yKGxhbmd1YWdlUHJl
ZmVyZW5jZXNEaWRDaGFuZ2U6KSBuYW1lOkAiQXBwbGVMYW5ndWFnZVByZWZlcmVuY2VzQ2hhbmdl
ZE5vdGlmaWNhdGlvbiIgb2JqZWN0Om5pbF07CisgICAgfSk7CisjZW5kaWYKKworICAgIEJFR0lO
X0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKKworICAgIHN0ZDo6bG9ja19ndWFyZDxTdGF0aWNMb2Nr
PiBsb2NrKHByZWZlcnJlZExhbmd1YWdlc011dGV4KTsKKyAgICBWZWN0b3I8U3RyaW5nPiYgdXNl
clByZWZlcnJlZExhbmd1YWdlcyA9IHByZWZlcnJlZExhbmd1YWdlcygpOworCisgICAgaWYgKHVz
ZXJQcmVmZXJyZWRMYW5ndWFnZXMuaXNFbXB0eSgpKSB7CisgICAgICAgIFJldGFpblB0cjxDRkxv
Y2FsZVJlZj4gbG9jYWxlID0gYWRvcHRDRihDRkxvY2FsZUNvcHlDdXJyZW50KCkpOworICAgICAg
ICBOU1N0cmluZyAqY291bnRyeUNvZGUgPSAoTlNTdHJpbmcgKilDRkxvY2FsZUdldFZhbHVlKGxv
Y2FsZS5nZXQoKSwga0NGTG9jYWxlQ291bnRyeUNvZGUpOworICAgICAgICAKKyAgICAgICAgaWYg
KCFpc1ZhbGlkSUNVQ291bnRyeUNvZGUoY291bnRyeUNvZGUpKQorICAgICAgICAgICAgY291bnRy
eUNvZGUgPSBuaWw7CisgICAgICAgIAorICAgICAgICBSZXRhaW5QdHI8Q0ZBcnJheVJlZj4gbGFu
Z3VhZ2VzID0gYWRvcHRDRihDRkxvY2FsZUNvcHlQcmVmZXJyZWRMYW5ndWFnZXMoKSk7CisgICAg
ICAgIENGSW5kZXggbGFuZ3VhZ2VDb3VudCA9IENGQXJyYXlHZXRDb3VudChsYW5ndWFnZXMuZ2V0
KCkpOworICAgICAgICBpZiAoIWxhbmd1YWdlQ291bnQpCisgICAgICAgICAgICB1c2VyUHJlZmVy
cmVkTGFuZ3VhZ2VzLmFwcGVuZCgiZW4iKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBm
b3IgKENGSW5kZXggaSA9IDA7IGkgPCBsYW5ndWFnZUNvdW50OyBpKyspCisgICAgICAgICAgICAg
ICAgdXNlclByZWZlcnJlZExhbmd1YWdlcy5hcHBlbmQoaHR0cFN0eWxlTGFuZ3VhZ2VDb2RlKChO
U1N0cmluZyAqKUNGQXJyYXlHZXRWYWx1ZUF0SW5kZXgobGFuZ3VhZ2VzLmdldCgpLCBpKSwgY291
bnRyeUNvZGUpKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIFZlY3RvcjxTdHJpbmc+IHVzZXJQ
cmVmZXJyZWRMYW5ndWFnZXNDb3B5OworICAgIHVzZXJQcmVmZXJyZWRMYW5ndWFnZXNDb3B5LnJl
c2VydmVJbml0aWFsQ2FwYWNpdHkodXNlclByZWZlcnJlZExhbmd1YWdlcy5zaXplKCkpOworCisg
ICAgZm9yIChhdXRvJiBsYW5ndWFnZSA6IHVzZXJQcmVmZXJyZWRMYW5ndWFnZXMpCisgICAgICAg
IHVzZXJQcmVmZXJyZWRMYW5ndWFnZXNDb3B5LnVuY2hlY2tlZEFwcGVuZChsYW5ndWFnZS5pc29s
YXRlZENvcHkoKSk7CisKKyAgICByZXR1cm4gdXNlclByZWZlcnJlZExhbmd1YWdlc0NvcHk7CisK
KyAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TOworCisgICAgcmV0dXJuIFZlY3RvcjxTdHJp
bmc+KCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdURgpJbmRleDogU291cmNlL1dURi93dGYvUGxh
dGZvcm1Vc2VyUHJlZmVycmVkTGFuZ3VhZ2VzVW5peC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dURi93dGYvUGxhdGZvcm1Vc2VyUHJlZmVycmVkTGFuZ3VhZ2VzVW5peC5jcHAJKHJldmlzaW9u
IDApCisrKyBTb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybVVzZXJQcmVmZXJyZWRMYW5ndWFnZXNVbml4
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDUyIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDA3IEFscCBUb2tlciA8YWxwQGF0b2tlci5jb20+CisgKiBDb3B5cmlnaHQgKEMpIDIwMTYg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBm
cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBp
dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBM
aWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRo
ZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkg
bGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhl
IGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5U
WTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJ
VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICog
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICog
WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmls
ZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0
b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiUGxhdGZvcm1Vc2VyUHJlZmVycmVkTGFuZ3VhZ2VzLmgiCisKKyNpbmNsdWRlIDxsb2Nh
bGUuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+CisKK25hbWVzcGFjZSBXVEYgeworCit2b2lkIHNldFBsYXRmb3JtVXNlclByZWZlcnJl
ZExhbmd1YWdlc0NoYW5nZWRDYWxsYmFjayh2b2lkICgqKSgpKSB7IH0KKworLy8gVXNpbmcgcGFu
Z29fbGFuZ3VhZ2VfZ2V0X2RlZmF1bHQoKSBoZXJlIGlzIG5vdCBhbiBvcHRpb24sIGJlY2F1c2UK
Ky8vIGl0IGRvZXNuJ3Qgc3VwcG9ydCBjaGFuZ2luZyB0aGUgbG9jYWxlIGluIHJ1bnRpbWUsIHNv
IGl0IHJldHVybnMKKy8vIGFsd2F5cyB0aGUgc2FtZSB2YWx1ZS4KK3N0YXRpYyBTdHJpbmcgcGxh
dGZvcm1MYW5ndWFnZSgpCit7CisgICAgU3RyaW5nIGxvY2FsZURlZmF1bHQoc2V0bG9jYWxlKExD
X0NUWVBFLCBudWxscHRyKSk7CisgICAgaWYgKGxvY2FsZURlZmF1bHQuaXNFbXB0eSgpKQorICAg
ICAgICByZXR1cm4gU3RyaW5nKCJjIik7CisKKyAgICBTdHJpbmcgbm9ybWFsaXplZERlZmF1bHQg
PSBsb2NhbGVEZWZhdWx0LmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCk7CisgICAgbm9ybWFsaXpl
ZERlZmF1bHQucmVwbGFjZSgnXycsICctJyk7CisgICAgbm9ybWFsaXplZERlZmF1bHQudHJ1bmNh
dGUobm9ybWFsaXplZERlZmF1bHQuZmluZCgnLicpKTsKKyAgICByZXR1cm4gbm9ybWFsaXplZERl
ZmF1bHQ7Cit9CisKK1ZlY3RvcjxTdHJpbmc+IHBsYXRmb3JtVXNlclByZWZlcnJlZExhbmd1YWdl
cygpCit7CisgICAgcmV0dXJuIHsgcGxhdGZvcm1MYW5ndWFnZSgpIH07Cit9CisKK30gLy8gbmFt
ZXNwYWNlIFdURgpJbmRleDogU291cmNlL1dURi93dGYvUGxhdGZvcm1Vc2VyUHJlZmVycmVkTGFu
Z3VhZ2VzV2luLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybVVzZXJQ
cmVmZXJyZWRMYW5ndWFnZXNXaW4uY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dURi93dGYv
UGxhdGZvcm1Vc2VyUHJlZmVycmVkTGFuZ3VhZ2VzV2luLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDc5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA3LCAyMDE2IEFwcGxlIEluYy4g
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1Vc2VyUHJl
ZmVycmVkTGFuZ3VhZ2VzLmgiCisKKyNpbmNsdWRlIDx3aW5kb3dzLmg+CisjaW5jbHVkZSA8d3Rm
L1ZlY3Rvci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2Ug
V1RGIHsKKwordm9pZCBzZXRQbGF0Zm9ybVVzZXJQcmVmZXJyZWRMYW5ndWFnZXNDaGFuZ2VkQ2Fs
bGJhY2sodm9pZCAoKikoKSkgeyB9CisKK3N0YXRpYyBTdHJpbmcgbG9jYWxlSW5mbyhMQ1RZUEUg
bG9jYWxlVHlwZSwgY29uc3QgU3RyaW5nJiBmYWxsYmFjaykKK3sKKyAgICBMQU5HSUQgbGFuZ0lE
ID0gR2V0VXNlckRlZmF1bHRVSUxhbmd1YWdlKCk7CisgICAgaW50IGxvY2FsZUNoYXJzID0gR2V0
TG9jYWxlSW5mbyhsYW5nSUQsIGxvY2FsZVR5cGUsIDAsIDApOworICAgIGlmICghbG9jYWxlQ2hh
cnMpCisgICAgICAgIHJldHVybiBmYWxsYmFjazsKKyAgICBVQ2hhciogbG9jYWxlTmFtZUJ1ZjsK
KyAgICBTdHJpbmcgbG9jYWxlTmFtZSA9IFN0cmluZzo6Y3JlYXRlVW5pbml0aWFsaXplZChsb2Nh
bGVDaGFycywgbG9jYWxlTmFtZUJ1Zik7CisgICAgbG9jYWxlQ2hhcnMgPSBHZXRMb2NhbGVJbmZv
KGxhbmdJRCwgbG9jYWxlVHlwZSwgbG9jYWxlTmFtZUJ1ZiwgbG9jYWxlQ2hhcnMpOworICAgIGlm
ICghbG9jYWxlQ2hhcnMpCisgICAgICAgIHJldHVybiBmYWxsYmFjazsKKyAgICBpZiAobG9jYWxl
TmFtZS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBmYWxsYmFjazsKKworICAgIGxvY2FsZU5h
bWUudHJ1bmNhdGUobG9jYWxlTmFtZS5sZW5ndGgoKSAtIDEpOworICAgIHJldHVybiBsb2NhbGVO
YW1lOworfQorCitzdGF0aWMgU3RyaW5nIHBsYXRmb3JtTGFuZ3VhZ2UoKQoreworICAgIHN0YXRp
YyBTdHJpbmcgY29tcHV0ZWREZWZhdWx0TGFuZ3VhZ2U7CisgICAgaWYgKCFjb21wdXRlZERlZmF1
bHRMYW5ndWFnZS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBjb21wdXRlZERlZmF1bHRMYW5n
dWFnZTsKKworICAgIFN0cmluZyBsYW5ndWFnZU5hbWUgPSBsb2NhbGVJbmZvKExPQ0FMRV9TSVNP
NjM5TEFOR05BTUUsICJlbiIpOworICAgIFN0cmluZyBjb3VudHJ5TmFtZSA9IGxvY2FsZUluZm8o
TE9DQUxFX1NJU08zMTY2Q1RSWU5BTUUsIFN0cmluZygpKTsKKworICAgIGlmIChjb3VudHJ5TmFt
ZS5pc0VtcHR5KCkpCisgICAgICAgIGNvbXB1dGVkRGVmYXVsdExhbmd1YWdlID0gbGFuZ3VhZ2VO
YW1lOworICAgIGVsc2UKKyAgICAgICAgY29tcHV0ZWREZWZhdWx0TGFuZ3VhZ2UgPSBsYW5ndWFn
ZU5hbWUgKyAnLScgKyBjb3VudHJ5TmFtZTsKKworICAgIHJldHVybiBjb21wdXRlZERlZmF1bHRM
YW5ndWFnZTsKK30KKworVmVjdG9yPFN0cmluZz4gcGxhdGZvcm1Vc2VyUHJlZmVycmVkTGFuZ3Vh
Z2VzKCkKK3sKKyAgICBWZWN0b3I8U3RyaW5nPiB1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzOworICAg
IHVzZXJQcmVmZXJyZWRMYW5ndWFnZXMuYXBwZW5kKHBsYXRmb3JtTGFuZ3VhZ2UoKSk7CisgICAg
cmV0dXJuIHVzZXJQcmVmZXJyZWRMYW5ndWFnZXM7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdURgpJ
bmRleDogU291cmNlL1dURi93dGYvc3BpL2NmL0NGQnVuZGxlU1BJLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dURi93dGYvc3BpL2NmL0NGQnVuZGxlU1BJLmgJKHJldmlzaW9uIDApCisrKyBTb3Vy
Y2UvV1RGL3d0Zi9zcGkvY2YvQ0ZCdW5kbGVTUEkuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDQ0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisj
aWZuZGVmIENGQnVuZGxlU1BJX2gKKyNkZWZpbmUgQ0ZCdW5kbGVTUElfaAorCisjaW5jbHVkZSA8
Q29yZUZvdW5kYXRpb24vQ29yZUZvdW5kYXRpb24uaD4KKworI2lmIFVTRShBUFBMRV9JTlRFUk5B
TF9TREspCisjaW1wb3J0IDxDb3JlRm91bmRhdGlvbi9DRlByaXYuaD4KKyNlbHNlCisjaW5jbHVk
ZSA8d3RmL3NwaS9kYXJ3aW4vWFBDU1BJLmg+CisjZW5kaWYKKworZXh0ZXJuICJDIiB7Cit2b2lk
IF9DRkJ1bmRsZVNldHVwWFBDQm9vdHN0cmFwKHhwY19vYmplY3RfdCBib290c3RyYXApOworCitC
b29sZWFuIENGQnVuZGxlR2V0TG9jYWxpemF0aW9uSW5mb0ZvckxvY2FsaXphdGlvbihDRlN0cmlu
Z1JlZiBsb2NhbGl6YXRpb25OYW1lLCBTSW50MzIgKmxhbmd1YWdlQ29kZSwgU0ludDMyICpyZWdp
b25Db2RlLCBTSW50MzIgKnNjcmlwdENvZGUsIENGU3RyaW5nRW5jb2RpbmcgKnN0cmluZ0VuY29k
aW5nKTsKK0NGU3RyaW5nUmVmIENGQnVuZGxlQ29weUxvY2FsaXphdGlvbkZvckxvY2FsaXphdGlv
bkluZm8oU0ludDMyIGxhbmd1YWdlQ29kZSwgU0ludDMyIHJlZ2lvbkNvZGUsIFNJbnQzMiBzY3Jp
cHRDb2RlLCBDRlN0cmluZ0VuY29kaW5nIHN0cmluZ0VuY29kaW5nKTsKK30KKworI2VuZGlmCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCShyZXZpc2lvbiAyMDA5NjgpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTM2MzQsNyArMzYzNCw2IEBACiAJ
CTkzNEZFOUU1MEI1Q0E1MzkwMDNFNEE3MyAvKiBGaWxlQ2hvb3Nlci5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzRGRTlFNDBCNUNBNTM5MDAzRTRB
NzMgLyogRmlsZUNob29zZXIuY3BwICovOyB9OwogCQk5MzUwMEYzMjEzRkRFM0JFMDA5OUVDMjQg
LyogTlNTY3JvbGxlckltcERldGFpbHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDkzNTAwRjMxMTNGREUzQkUwMDk5RUMyNCAvKiBOU1Njcm9sbGVySW1w
RGV0YWlscy5oICovOyB9OwogCQk5MzUyMDdCRTA5QkQ0MTBBMDBGMjAzOEQgLyogTG9jYWxpemVk
U3RyaW5ncy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
OTM1MjA3QkQwOUJENDEwQTAwRjIwMzhEIC8qIExvY2FsaXplZFN0cmluZ3MuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQk5MzUyMDg0NTA5QkQ0M0I5
MDBGMjAzOEQgLyogTGFuZ3VhZ2UubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA5MzUyMDg0NDA5QkQ0M0I5MDBGMjAzOEQgLyogTGFuZ3VhZ2UubW0gKi87
IH07CiAJCTkzNTM2NzZCMDlBRUQ4OEIwMEQzNUNENiAvKiBTY3JvbGxWaWV3TWFjLm1tIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTM1MzY3NkEwOUFFRDg4
QjAwRDM1Q0Q2IC8qIFNjcm9sbFZpZXdNYWMubW0gKi87IH07CiAJCTkzNUM0NzYzMDlBQzRDRTYw
MEE2QUFCNCAvKiBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzVDNDc2MjA5QUM0Q0U2MDBBNkFBQjQg
LyogTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cy5oICovOyB9OwogCQk5MzVDNDc2ODA5QUM0
RDQzMDBBNkFBQjQgLyogUGxhdGZvcm1LZXlib2FyZEV2ZW50LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzVDNDc2NjA5QUM0RDQzMDBBNkFBQjQgLyog
UGxhdGZvcm1LZXlib2FyZEV2ZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKQEAgLTM3MzQsNyArMzczMyw2IEBACiAJCTkzRjE5OUE4MDgyNDVFNTkw
MDFFOUFCQyAvKiBXZWJDb3JlRnJhbWVWaWV3LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBGNTg3ODU0QzAyREUzNzU5MDFFQTQxMjIgLyogV2ViQ29yZUZy
YW1lVmlldy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTkzRjE5OUI4MDgyNDVFNTkwMDFFOUFCQyAvKiBTY3JvbGxiYXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDN0IyQUY4MDQ1MDgyNDEwMEE4MDAw
RiAvKiBTY3JvbGxiYXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk5M0YxOTlCQjA4MjQ1RTU5MDAxRTlBQkMgLyogV2ViQ29yZUtleWJvYXJkVUlN
b2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCRTk4
M0Q5NTA1MkEyRTBBMDA4OTJEODUgLyogV2ViQ29yZUtleWJvYXJkVUlNb2RlLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJOTNGMTk5QkUwODI0NUU1
OTAwMUU5QUJDIC8qIEJsb2NrRXhjZXB0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNjVBNjQwRjAwNTMzQkIxRjAwODVFNzc3IC8qIEJsb2NrRXhj
ZXB0aW9ucy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTkzRjE5OURFMDgyNDVFNTkwMDFFOUFCQyAvKiBQb3NpdGlvbi5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkU5MUZDOEIwNjEzMzY2NjAwNUUzNzkw
IC8qIFBvc2l0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJOTNGMTk5RTUwODI0NUU1OTAwMUU5QUJDIC8qIEhUTUxDYW52YXNFbGVtZW50Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUY2QTNENjA2
NjNCRjA0MDA0RDI5MTkgLyogSFRNTENhbnZhc0VsZW1lbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5M0YxOTlFQzA4MjQ1RTU5MDAxRTlBQkMg
LyogWFNMU3R5bGVTaGVldC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQkMwNkYyNEEwNkQxOEE3RTAwNEE2RkEzIC8qIFhTTFN0eWxlU2hlZXQuaCAqLzsg
fTsKQEAgLTM3NDYsNyArMzc0NCw2IEBACiAJCTkzRjE5QTlEMDgyNDVFNTkwMDFFOUFCQyAvKiBU
ZXh0UmVzb3VyY2VEZWNvZGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEY1MjNEMjc4MDJERTQzRDcwMTg2MzVDQSAvKiBUZXh0UmVzb3VyY2VEZWNv
ZGVyLmNwcCAqLzsgfTsKIAkJOTNGMTlBQjkwODI0NUU1OTAwMUU5QUJDIC8qIFJhbmdlLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY1MjNEMzAzMDJE
RTQ0NzYwMTg2MzVDQSAvKiBSYW5nZS5jcHAgKi87IH07CiAJCTkzRjE5QUQ1MDgyNDVFNTkwMDFF
OUFCQyAvKiBSZW5kZXJUcmVlQXNUZXh0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDkzOTU1QTQyMDNENzI5MzIwMDg2MzVDRSAvKiBSZW5kZXJUcmVl
QXNUZXh0LmNwcCAqLzsgfTsKLQkJOTNGMTlBRTEwODI0NUU1OTAwMUU5QUJDIC8qIEJsb2NrRXhj
ZXB0aW9ucy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDY1RjgwNjk3MDU0RDlGODYwMDhCRjc3NiAvKiBCbG9ja0V4Y2VwdGlvbnMubW0gKi87IH07CiAJ
CTkzRjE5QUU2MDgyNDVFNTkwMDFFOUFCQyAvKiBTU0xLZXlHZW5lcmF0b3JNYWMuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODRCMkIyNEYwNTZCRjE1
RjAwRDJCNzcxIC8qIFNTTEtleUdlbmVyYXRvck1hYy5jcHAgKi87IH07CiAJCTkzRjE5QUY4MDgy
NDVFNTkwMDFFOUFCQyAvKiBQb3NpdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBCRTkxRkM4QzA2MTMzNjY2MDA1RTM3OTAgLyogUG9zaXRpb24u
Y3BwICovOyB9OwogCQk5M0YxOUFGRDA4MjQ1RTU5MDAxRTlBQkMgLyogSFRNTENhbnZhc0VsZW1l
bnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFG
NkEzRDUwNjYzQkYwNDAwNEQyOTE5IC8qIEhUTUxDYW52YXNFbGVtZW50LmNwcCAqLzsgfTsKQEAg
LTYzNTMsNyArNjM1MCw2IEBACiAJCUUwRkVGMzcyQjQ3QzUzRUFDMUMxRkJFRSAvKiBKU0V2ZW50
U291cmNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEUwRkVGMzcxQjQ3QzUzRUFDMUMxRkJFRSAvKiBKU0V2ZW50U291cmNlLmNwcCAqLzsgfTsKIAkJ
RTEwNzQwMEQwRTc3QkRDMDAwMzNBRjI0IC8qIEpTTWVzc2FnZUNoYW5uZWwuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTEwNzQwMEIwRTc3QkRDMDAw
MzNBRjI0IC8qIEpTTWVzc2FnZUNoYW5uZWwuY3BwICovOyB9OwogCQlFMTA3NDAwRTBFNzdCREMw
MDAzM0FGMjQgLyogSlNNZXNzYWdlQ2hhbm5lbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRTEwNzQwMEMwRTc3QkRDMDAwMzNBRjI0IC8qIEpTTWVzc2Fn
ZUNoYW5uZWwuaCAqLzsgfTsKLQkJRTEwQTM5RTIxQUU4NEU3MTAwQTI5QUUzIC8qIENGQnVuZGxl
U1BJLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTBB
MzlFMTFBRTg0RTcxMDBBMjlBRTMgLyogQ0ZCdW5kbGVTUEkuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMTBCOTM3QzBCNzNDMDBBMDAzRUQ4OTAg
LyogSlNDdXN0b21YUGF0aE5TUmVzb2x2ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEUxMEI5MzdCMEI3M0MwMEEwMDNFRDg5MCAvKiBKU0N1c3RvbVhQ
YXRoTlNSZXNvbHZlci5oICovOyB9OwogCQlFMTBCOTNDMzBCNzNDMjkxMDAzRUQ4OTAgLyogSlND
dXN0b21YUGF0aE5TUmVzb2x2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRTEwQjkzQzIwQjczQzI5MTAwM0VEODkwIC8qIEpTQ3VzdG9tWFBhdGhO
U1Jlc29sdmVyLmNwcCAqLzsgfTsKIAkJRTEwQjlCNkMwQjc0NzU5OTAwM0VEODkwIC8qIE5hdGl2
ZVhQYXRoTlNSZXNvbHZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRTEwQjlCNkEwQjc0NzU5OTAwM0VEODkwIC8qIE5hdGl2ZVhQYXRoTlNSZXNvbHZl
ci5oICovOyB9OwpAQCAtMTAwODksNyArMTAwODUsNiBAQAogCQk2NUEyMTQ2NzA5N0EzMjkxMDBC
OTA1MEEgLyogUGFnZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGFnZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2NUEyMTQ4MjA5N0EzRjUzMDBCOTA1MEEg
LyogRnJhbWVUcmVlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBG
cmFtZVRyZWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2NUEyMTQ4MzA5N0Ez
RjUzMDBCOTA1MEEgLyogRnJhbWVUcmVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBGcmFtZVRyZWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNjVBNjQwRjAw
NTMzQkIxRjAwODVFNzc3IC8qIEJsb2NrRXhjZXB0aW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCbG9ja0V4Y2VwdGlvbnMuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07CiAJCTY1QkYw
MjI5MDk3NDgxNjMwMEM0MzE5NiAvKiBGcmFtZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gRnJhbWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2
NUJGMDIyQTA5NzQ4MTYzMDBDNDMxOTYgLyogRnJhbWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEZyYW1lLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTY1Qzk3
QUYyMDhFQTkwODgwMEFDRDI3MyAvKiBjb25maWcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gY29uZmlnLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IHRhYldpZHRoID0gNDsgdXNlc1RhYnMgPSAwOyB9OwpAQCAtMTAxMjIsNyArMTAxMTcsNiBA
QAogCQk2NURGMzIzNjA5RDFERTY1MDAwQkUzMjUgLyogSlNDYW52YXNQYXR0ZXJuLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0NhbnZhc1BhdHRlcm4uaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNjVERjMyMzYwOUQxREU2NTAwMUJFMzI1IC8qIEpTQ2FudmFz
UHJveHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTQ2FudmFzUHJveHku
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNjVFMEU5NDMxMTMzQzg5RjAwQjRDQjEw
IC8qIEpTRE9NV3JhcHBlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0RP
TVdyYXBwZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNjVGODA2OTcwNTREOUY4
NjAwOEJGNzc2IC8qIEJsb2NrRXhjZXB0aW9ucy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEJsb2NrRXhjZXB0aW9ucy5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07CiAJCTY1
RkVBODY4MDk4MzNBREUwMEJFRDRBQiAvKiBQYWdlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBQYWdlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
Njk3MTAxMDcxQzZCRTE1NTAwMThDN0YxIC8qIEFjY2Vzc2liaWxpdHlTVkdFbGVtZW50LmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFjY2Vzc2liaWxpdHlTVkdFbGVt
ZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNjk3MTAxMDgxQzZCRTE1NTAw
MThDN0YxIC8qIEFjY2Vzc2liaWxpdHlTVkdFbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEFjY2Vzc2liaWxpdHlTVkdFbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC0xMTI5NCw3ICsxMTI4OCw2IEBACiAJCTkzNEZFOUU0MEI1Q0E1MzkwMDNF
NEE3MyAvKiBGaWxlQ2hvb3Nlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBGaWxlQ2hvb3Nlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzNTAw
RjMxMTNGREUzQkUwMDk5RUMyNCAvKiBOU1Njcm9sbGVySW1wRGV0YWlscy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBOU1Njcm9sbGVySW1wRGV0YWlscy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk5MzUyMDdCRDA5QkQ0MTBBMDBGMjAzOEQgLyogTG9jYWxpemVk
U3RyaW5ncy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBMb2NhbGl6ZWRTdHJp
bmdzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTkzNTIwODQ0MDlCRDQzQjkwMEYy
MDM4RCAvKiBMYW5ndWFnZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0
aCA9IExhbmd1YWdlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5MzUzNjc2QTA5
QUVEODhCMDBEMzVDRDYgLyogU2Nyb2xsVmlld01hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLm9iamNwcDsgcGF0aCA9IFNjcm9sbFZpZXdNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTkzNUM0NzYyMDlBQzRDRTYwMEE2QUFCNCAvKiBNb3VzZUV2ZW50V2l0aEhpdFRl
c3RSZXN1bHRzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1vdXNlRXZlbnRX
aXRoSGl0VGVzdFJlc3VsdHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTM1QzQ3
NjYwOUFDNEQ0MzAwQTZBQUI0IC8qIFBsYXRmb3JtS2V5Ym9hcmRFdmVudC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE0Mzk2LDcgKzE0Mzg5LDYgQEAKIAkJRTBGRUYzNzFCNDdD
NTNFQUMxQzFGQkVFIC8qIEpTRXZlbnRTb3VyY2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gSlNFdmVudFNvdXJjZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUUxMDc0MDBCMEU3N0JEQzAwMDMzQUYyNCAvKiBKU01lc3NhZ2VDaGFubmVsLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTTWVzc2FnZUNoYW5uZWwuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMTA3NDAwQzBFNzdCREMwMDAzM0FGMjQg
LyogSlNNZXNzYWdlQ2hhbm5lbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBK
U01lc3NhZ2VDaGFubmVsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUUxMEEzOUUx
MUFFODRFNzEwMEEyOUFFMyAvKiBDRkJ1bmRsZVNQSS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBDRkJ1bmRsZVNQSS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlF
MTBCOTM3QjBCNzNDMDBBMDAzRUQ4OTAgLyogSlNDdXN0b21YUGF0aE5TUmVzb2x2ZXIuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNDdXN0b21YUGF0aE5TUmVzb2x2ZXIuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTEwQjkzQzIwQjczQzI5MTAwM0VEODkwIC8q
IEpTQ3VzdG9tWFBhdGhOU1Jlc29sdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEpTQ3VzdG9tWFBhdGhOU1Jlc29sdmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJRTEwQjlCNkEwQjc0NzU5OTAwM0VEODkwIC8qIE5hdGl2ZVhQYXRoTlNSZXNv
bHZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOYXRpdmVYUGF0aE5TUmVz
b2x2ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE3NTYzLDcgKzE3NTU1LDYg
QEAKIAkJNjUwODZEQTYxOUFDMTcxOTAwOUFGNDZCIC8qIGNmICovID0gewogCQkJaXNhID0gUEJY
R3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKLQkJCQlFMTBBMzlFMTFBRTg0RTcxMDBBMjlBRTMgLyog
Q0ZCdW5kbGVTUEkuaCAqLywKIAkJCQk2NTA4NkRBNzE5QUMxNzE5MDA5QUY0NkIgLyogQ0ZMb2Nh
bGVTUEkuaCAqLywKIAkJCQlBMTBEN0ZFQjFDMjY3NkQxMDBDNkMxMTUgLyogQ0ZOZXR3b3JrQ29u
bmVjdGlvbkNhY2hlU1BJLmggKi8sCiAJCQkJQ0UxMjUyNUExQTFDMDE4MjAwODY0NDgwIC8qIENG
TmV0d29ya1NQSS5oICovLApAQCAtMTc4NDksOCArMTc4NDAsNiBAQAogCQk2NTgyQTE0ODA5OTk5
RDZDMDBCRUVCNkQgLyogbWFjICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJl
biA9ICgKLQkJCQk2NUE2NDBGMDA1MzNCQjFGMDA4NUU3NzcgLyogQmxvY2tFeGNlcHRpb25zLmgg
Ki8sCi0JCQkJNjVGODA2OTcwNTREOUY4NjAwOEJGNzc2IC8qIEJsb2NrRXhjZXB0aW9ucy5tbSAq
LywKIAkJCQlGNTg3ODRGMDAyREUzNzU5MDFFQTQxMjIgLyogQ3Vyc29yTWFjLm1tICovLAogCQkJ
CUE3OTU0NjNEMEI1QzRDODAwMDdCNDM4RiAvKiBEcmFnRGF0YU1hYy5tbSAqLywKIAkJCQlBN0NG
QjNENDBCN0VEMTE4MDA3MEMzMkQgLyogRHJhZ0ltYWdlTWFjLm1tICovLApAQCAtMTc4NjMsNyAr
MTc4NTIsNiBAQAogCQkJCTUxNzlDRTM1MTk1Q0FDN0UwMDE5QzE5OCAvKiBISURHYW1lcGFkUHJv
dmlkZXIuaCAqLywKIAkJCQk5MzVDNDc2RTA5QUM0RDczMDBBNkFBQjQgLyogS2V5RXZlbnRNYWMu
bW0gKi8sCiAJCQkJNTIxRDQ2RjUxMUFFQzk4MTAwNTE0NjEzIC8qIEtpbGxSaW5nTWFjLm1tICov
LAotCQkJCTkzNTIwODQ0MDlCRDQzQjkwMEYyMDM4RCAvKiBMYW5ndWFnZS5tbSAqLywKIAkJCQkw
NkU4MUVENjBBQjVENUU5MDBDODc4MzcgLyogTG9jYWxDdXJyZW50R3JhcGhpY3NDb250ZXh0Lmgg
Ki8sCiAJCQkJMDZFODFFRUIwQUI1REE5NzAwQzg3ODM3IC8qIExvY2FsQ3VycmVudEdyYXBoaWNz
Q29udGV4dC5tbSAqLywKIAkJCQkxNDAyNjQ1RDBBRkRDMTlCMDA1OTE5RTIgLyogTG9nZ2luZ01h
Yy5tbSAqLywKQEAgLTI1MTk4LDcgKzI1MTg2LDYgQEAKIAkJCQkyRURFRjFGNzEyMUIwRUZDMDA3
MjZEQjIgLyogQmxvYlJlZ2lzdHJ5SW1wbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkVCNEJDRDMx
MjFGMDNFMzAwRUM0ODg1IC8qIEJsb2JSZXNvdXJjZUhhbmRsZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJOTc2RDZDN0YxMjJCOEEzRDAwMUZEMUY3IC8qIEJsb2JVUkwuaCBpbiBIZWFkZXJzICovLAot
CQkJCTkzRjE5OUJFMDgyNDVFNTkwMDFFOUFCQyAvKiBCbG9ja0V4Y2VwdGlvbnMuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUJDNUVCNUUxMEU4MUJFODcwMEIyNTk2NSAvKiBCb3JkZXJEYXRhLmggaW4g
SGVhZGVycyAqLywKIAkJCQk1ODk1NTZFRDE4RDRBNDQwMDA3NjRCMDMgLyogQm9yZGVyRWRnZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQkM1RUI1REIwRTgxQjdFQTAwQjI1OTY1IC8qIEJvcmRlclZh
bHVlLmggaW4gSGVhZGVycyAqLywKQEAgLTI1MjY1LDcgKzI1MjUyLDYgQEAKIAkJCQlDREU4QjVG
MTFBNjk3NzhCMDBCNEI2NkEgLyogQ0RNU2Vzc2lvbkNsZWFyS2V5LmggaW4gSGVhZGVycyAqLywK
IAkJCQlDREU1OTU5NzFCRjI2RTIxMDBBMUNCRTggLyogQ0RNU2Vzc2lvbk1lZGlhU291cmNlQVZG
T2JqQy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUZBOTA0Q0ExNzhFNjFGNTAwNEM4QTJEIC8qIENl
cnRpZmljYXRlSW5mby5oIGluIEhlYWRlcnMgKi8sCi0JCQkJRTEwQTM5RTIxQUU4NEU3MTAwQTI5
QUUzIC8qIENGQnVuZGxlU1BJLmggaW4gSGVhZGVycyAqLywKIAkJCQlBMTBEN0ZFQzFDMjY3NkQx
MDBDNkMxMTUgLyogQ0ZOZXR3b3JrQ29ubmVjdGlvbkNhY2hlU1BJLmggaW4gSGVhZGVycyAqLywK
IAkJCQlDRTEyNTI1QjFBMUMwMTgyMDA4NjQ0ODAgLyogQ0ZOZXR3b3JrU1BJLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlFMUE4RTU2NzE3NTUyQjJBMDA3NDg4RTcgLyogQ0ZVUkxFeHRyYXMuaCBpbiBI
ZWFkZXJzICovLApAQCAtMjkxNTksNyArMjkxNDUsNiBAQAogCQkJCTJFREVGMUY2MTIxQjBFRkMw
MDcyNkRCMiAvKiBCbG9iUmVnaXN0cnlJbXBsLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJFQjRC
Q0QyMTIxRjAzRTMwMEVDNDg4NSAvKiBCbG9iUmVzb3VyY2VIYW5kbGUuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJOTc2RDZDN0UxMjJCOEEzRDAwMUZEMUY3IC8qIEJsb2JVUkwuY3BwIGluIFNvdXJj
ZXMgKi8sCi0JCQkJOTNGMTlBRTEwODI0NUU1OTAwMUU5QUJDIC8qIEJsb2NrRXhjZXB0aW9ucy5t
bSBpbiBTb3VyY2VzICovLAogCQkJCTU4QUVFMkY0MThENEJDQ0YwMDIyRTdGRSAvKiBCb3JkZXJF
ZGdlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTZFRDhDMzc5MTgzQkZGOEMwMDlFNTNCRCAvKiBC
b3hTaGFwZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQ0VBNDg1NDA5N0Q5MzAyMDA5NEM5RTQg
LyogYnJlYWtfbGluZXMuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0zMDg5NCw3ICszMDg3OSw2IEBA
CiAJCQkJNDUwQ0VCRjAxNTA3M0JCRTAwMkJCMTQ5IC8qIExhYmVsYWJsZUVsZW1lbnQuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQTQ1NkZBMjYxMUFENEE4MzAwMjBCNDIwIC8qIExhYmVsc05vZGVM
aXN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxODc3MkYxMTI2RTI2MjkwMDNERDU4NiAvKiBM
YW5ndWFnZS5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk5MzUyMDg0NTA5QkQ0M0I5MDBGMjAzOEQg
LyogTGFuZ3VhZ2UubW0gaW4gU291cmNlcyAqLywKIAkJCQkyOTE3QjU2MTE0NzM0OTZDMDA1MkM5
RDAgLyogTGF5ZXJGbHVzaFNjaGVkdWxlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyOTE3QjU2
NjE0NzM0OTk1MDA1MkM5RDAgLyogTGF5ZXJGbHVzaFNjaGVkdWxlck1hYy5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQk3QUEzQTY5RjE5NEI1OUI2MDAxQ0JEMjQgLyogTGF5ZXJQb29sLmNwcCBpbiBT
b3VyY2VzICovLApJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNlclByZWZlcmVu
Y2VzTWVkaWFBRi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9u
VXNlclByZWZlcmVuY2VzTWVkaWFBRi5jcHAJKHJldmlzaW9uIDIwMDk2OCkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlhQUYuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC00Miw2ICs0Miw3IEBACiAjaW5jbHVkZSAiVXNlclN0eWxlU2hlZXRUeXBlcy5oIgog
I2luY2x1ZGUgIlZUVEN1ZS5oIgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorI2lu
Y2x1ZGUgPHd0Zi9QbGF0Zm9ybVVzZXJQcmVmZXJyZWRMYW5ndWFnZXMuaD4KICNpbmNsdWRlIDx3
dGYvUmV0YWluUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1ZGUg
PHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvbWFj
L0Nocm9tZU1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9DaHJv
bWVNYWMubW0JKHJldmlzaW9uIDIwMDk2OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0No
cm9tZU1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjAsOCArMjAsOCBAQAogI2ltcG9ydCAiY29u
ZmlnLmgiCiAjaW1wb3J0ICJDaHJvbWUuaCIKIAotI2ltcG9ydCAiQmxvY2tFeGNlcHRpb25zLmgi
CiAjaW1wb3J0ICJDaHJvbWVDbGllbnQuaCIKKyNpbXBvcnQgPHd0Zi9CbG9ja09iakNFeGNlcHRp
b25zLmg+CiAKICNpZiBQTEFURk9STShJT1MpCiAjaW5jbHVkZSAiV0FLUmVzcG9uZGVyLmgiCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MYW5ndWFnZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGFuZ3VhZ2UuY3BwCShyZXZpc2lvbiAyMDA5NjgpCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MYW5ndWFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEwLCAyMDEzIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMCwgMjAxMywgMjAxNiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5j
bHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisjaW5jbHVkZSA8d3RmL1BsYXRmb3JtVXNlclBy
ZWZlcnJlZExhbmd1YWdlcy5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbmNsdWRl
IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApAQCAtMzcsNiArMzgsMTYgQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCitzdGF0aWMgcmVnaXN0ZXJMYW5ndWFnZURpZENoYW5nZUNhbGxiYWNrSWZO
ZWNlc3NhcnkoKQoreworICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlOworICAgIHN0ZDo6
Y2FsbF9vbmNlKAorICAgICAgICBvbmNlLAorICAgICAgICBbXSB7CisgICAgICAgICAgICBzZXRQ
bGF0Zm9ybVVzZXJQcmVmZXJyZWRMYW5ndWFnZXNDaGFuZ2VkQ2FsbGJhY2sobGFuZ3VhZ2VEaWRD
aGFuZ2UpOworICAgICAgICB9KTsKK30KKwogdHlwZWRlZiBIYXNoTWFwPHZvaWQqLCBMYW5ndWFn
ZUNoYW5nZU9ic2VydmVyRnVuY3Rpb24+IE9ic2VydmVyTWFwOwogc3RhdGljIE9ic2VydmVyTWFw
JiBvYnNlcnZlck1hcCgpCiB7CkBAIC00Niw2ICs1Nyw3IEBAIHN0YXRpYyBPYnNlcnZlck1hcCYg
b2JzZXJ2ZXJNYXAoKQogCiB2b2lkIGFkZExhbmd1YWdlQ2hhbmdlT2JzZXJ2ZXIodm9pZCogY29u
dGV4dCwgTGFuZ3VhZ2VDaGFuZ2VPYnNlcnZlckZ1bmN0aW9uIGN1c3RvbU9ic2VydmVyKQogewor
ICAgIHJlZ2lzdGVyTGFuZ3VhZ2VEaWRDaGFuZ2VDYWxsYmFja0lmTmVjZXNzYXJ5KCk7CiAgICAg
b2JzZXJ2ZXJNYXAoKS5zZXQoY29udGV4dCwgY3VzdG9tT2JzZXJ2ZXIpOwogfQogCkBAIC04Nywx
MyArOTksMTQgQEAgdm9pZCBvdmVycmlkZVVzZXJQcmVmZXJyZWRMYW5ndWFnZXMoY29ucwogICAg
IHByZWZlcnJlZExhbmd1YWdlc092ZXJyaWRlKCkgPSBvdmVycmlkZTsKICAgICBsYW5ndWFnZURp
ZENoYW5nZSgpOwogfQotICAgIAorCiBWZWN0b3I8U3RyaW5nPiB1c2VyUHJlZmVycmVkTGFuZ3Vh
Z2VzKCkKIHsKICAgICBWZWN0b3I8U3RyaW5nPiYgb3ZlcnJpZGUgPSBwcmVmZXJyZWRMYW5ndWFn
ZXNPdmVycmlkZSgpOwogICAgIGlmICghb3ZlcnJpZGUuaXNFbXB0eSgpKQogICAgICAgICByZXR1
cm4gb3ZlcnJpZGU7CiAgICAgCisgICAgcmVnaXN0ZXJMYW5ndWFnZURpZENoYW5nZUNhbGxiYWNr
SWZOZWNlc3NhcnkoKTsKICAgICByZXR1cm4gcGxhdGZvcm1Vc2VyUHJlZmVycmVkTGFuZ3VhZ2Vz
KCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xhbmd1YWdlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGFuZ3VhZ2UuaAkocmV2aXNpb24gMjAw
OTY4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGFuZ3VhZ2UuaAkod29ya2luZyBjb3B5
KQpAQCAtNDIsOCArNDIsNiBAQCB0eXBlZGVmIHZvaWQgKCpMYW5ndWFnZUNoYW5nZU9ic2VydmVy
RnVuCiBXRUJDT1JFX0VYUE9SVCB2b2lkIGFkZExhbmd1YWdlQ2hhbmdlT2JzZXJ2ZXIodm9pZCog
Y29udGV4dCwgTGFuZ3VhZ2VDaGFuZ2VPYnNlcnZlckZ1bmN0aW9uKTsKIFdFQkNPUkVfRVhQT1JU
IHZvaWQgcmVtb3ZlTGFuZ3VhZ2VDaGFuZ2VPYnNlcnZlcih2b2lkKiBjb250ZXh0KTsKIAotVmVj
dG9yPFN0cmluZz4gcGxhdGZvcm1Vc2VyUHJlZmVycmVkTGFuZ3VhZ2VzKCk7Ci0KIFN0cmluZyBk
aXNwbGF5TmFtZUZvckxhbmd1YWdlTG9jYWxlKGNvbnN0IFN0cmluZyYpOwogCiAvLyBDYWxsZWQg
ZnJvbSBwbGF0Zm9ybSBzcGVjaWZpYyBjb2RlIHdoZW4gdGhlIHVzZXIncyBwcmVmZXJyZWQgbGFu
Z3VhZ2UocykgY2hhbmdlLgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvQ29u
dGVudEZpbHRlclVuYmxvY2tIYW5kbGVyQ29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY29jb2EvQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyQ29jb2EubW0J
KHJldmlzaW9uIDIwMDk2OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL0NvbnRl
bnRGaWx0ZXJVbmJsb2NrSGFuZGxlckNvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yOCwxMCAr
MjgsMTAgQEAKIAogI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKIAotI2ltcG9ydCAiQmxv
Y2tFeGNlcHRpb25zLmgiCiAjaW1wb3J0ICJDb250ZW50RmlsdGVyLmgiCiAjaW1wb3J0ICJMb2dn
aW5nLmgiCiAjaW1wb3J0ICJSZXNvdXJjZVJlcXVlc3QuaCIKKyNpbXBvcnQgPHd0Zi9CbG9ja09i
akNFeGNlcHRpb25zLmg+CiAKICNpZiAhTE9HX0RJU0FCTEVECiAjaW1wb3J0IDx3dGYvdGV4dC9D
U3RyaW5nLmg+CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29s
b3JNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
bWFjL0NvbG9yTWFjLm1tCShyZXZpc2lvbiAyMDA5NjgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9tYWMvQ29sb3JNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2
LDcgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiQ29sb3JNYWMuaCIKIAotI2ltcG9y
dCA8V2ViQ29yZS9CbG9ja0V4Y2VwdGlvbnMuaD4KKyNpbXBvcnQgPHd0Zi9CbG9ja09iakNFeGNl
cHRpb25zLmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAjaW1wb3J0IDx3dGYvU3RkTGli
RXh0cmFzLmg+CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9CbG9ja0V4Y2Vw
dGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvQmxvY2tF
eGNlcHRpb25zLmgJKHJldmlzaW9uIDIwMDk2OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21hYy9CbG9ja0V4Y2VwdGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAtMSwzMiArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDAzIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaW1wb3J0IDxG
b3VuZGF0aW9uL05TRXhjZXB0aW9uLmg+Ci0KLVdFQkNPUkVfRVhQT1JUIE5PX1JFVFVSTl9EVUVf
VE9fQVNTRVJUIHZvaWQgUmVwb3J0QmxvY2tlZE9iakNFeGNlcHRpb24oTlNFeGNlcHRpb24gKik7
Ci0KLSNkZWZpbmUgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TIEB0cnkgewotI2RlZmluZSBF
TkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TIH0gQGNhdGNoKE5TRXhjZXB0aW9uICpsb2NhbEV4Y2Vw
dGlvbikgeyBSZXBvcnRCbG9ja2VkT2JqQ0V4Y2VwdGlvbihsb2NhbEV4Y2VwdGlvbik7IH0KLQpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0Jsb2NrRXhjZXB0aW9ucy5tbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvQmxvY2tFeGNlcHRpb25zLm1t
CShyZXZpc2lvbiAyMDA5NjgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvQmxvY2tF
eGNlcHRpb25zLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xLDM4ICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMDMsIDIwMDcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
LSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2ltcG9ydCAiY29uZmln
LmgiCi0jaW1wb3J0ICJCbG9ja0V4Y2VwdGlvbnMuaCIKLQotI2ltcG9ydCA8d3RmL0Fzc2VydGlv
bnMuaD4KLQotdm9pZCBSZXBvcnRCbG9ja2VkT2JqQ0V4Y2VwdGlvbihOU0V4Y2VwdGlvbiAqZXhj
ZXB0aW9uKQotewotI2lmIEFTU0VSVF9ESVNBQkxFRAotICAgIE5TTG9nKEAiKioqIFdlYktpdCBk
aXNjYXJkaW5nIGV4Y2VwdGlvbjogPCVAPiAlQCIsIFtleGNlcHRpb24gbmFtZV0sIFtleGNlcHRp
b24gcmVhc29uXSk7Ci0jZWxzZQotICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoMCwgIlVuY2F1Z2h0
IGV4Y2VwdGlvbiAtICVAIiwgZXhjZXB0aW9uKTsKLSNlbmRpZgotfQpJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWFjL0xhbmd1YWdlLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21hYy9MYW5ndWFnZS5tbQkocmV2aXNpb24gMjAwOTY4KQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWFjL0xhbmd1YWdlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xLDE3
MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA1LCAyMDA2LCAyMDEwLCAy
MDExLCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lt
cG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0ICJMYW5ndWFnZS5oIgotCi0jaW1wb3J0ICJCbG9ja0V4
Y2VwdGlvbnMuaCIKLSNpbXBvcnQgIkNGQnVuZGxlU1BJLmgiCi0jaW1wb3J0ICJXZWJDb3JlTlNT
dHJpbmdFeHRyYXMuaCIKLSNpbXBvcnQgPG11dGV4PgotI2ltcG9ydCA8dW5pY29kZS91bG9jLmg+
Ci0jaW1wb3J0IDx3dGYvQXNzZXJ0aW9ucy5oPgotI2ltcG9ydCA8d3RmL0xvY2suaD4KLSNpbXBv
cnQgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgotI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgotI2lt
cG9ydCA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotc3Rh
dGljIFN0YXRpY0xvY2sgcHJlZmVycmVkTGFuZ3VhZ2VzTXV0ZXg7Ci0KLXN0YXRpYyBWZWN0b3I8
U3RyaW5nPiYgcHJlZmVycmVkTGFuZ3VhZ2VzKCkKLXsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95
ZWQ8VmVjdG9yPFN0cmluZz4+IGxhbmd1YWdlczsKLSAgICByZXR1cm4gbGFuZ3VhZ2VzOwotfQot
Ci19Ci0KLUBpbnRlcmZhY2UgV2ViTGFuZ3VhZ2VDaGFuZ2VPYnNlcnZlciA6IE5TT2JqZWN0Ci1A
ZW5kCi0KLUBpbXBsZW1lbnRhdGlvbiBXZWJMYW5ndWFnZUNoYW5nZU9ic2VydmVyCi0KLSsgKHZv
aWQpbGFuZ3VhZ2VQcmVmZXJlbmNlc0RpZENoYW5nZTooTlNOb3RpZmljYXRpb24gKilub3RpZmlj
YXRpb24KLXsKLSAgICBVTlVTRURfUEFSQU0obm90aWZpY2F0aW9uKTsKLQotICAgIHsKLSAgICAg
ICAgc3RkOjpsb2NrX2d1YXJkPFN0YXRpY0xvY2s+IGxvY2soV2ViQ29yZTo6cHJlZmVycmVkTGFu
Z3VhZ2VzTXV0ZXgpOwotICAgICAgICBXZWJDb3JlOjpwcmVmZXJyZWRMYW5ndWFnZXMoKS5jbGVh
cigpOwotICAgIH0KLQotICAgIFdlYkNvcmU6Omxhbmd1YWdlRGlkQ2hhbmdlKCk7Ci19Ci0KLUBl
bmQKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1zdGF0aWMgU3RyaW5nIGh0dHBTdHlsZUxhbmd1
YWdlQ29kZShOU1N0cmluZyAqbGFuZ3VhZ2UsIE5TU3RyaW5nICpjb3VudHJ5KQotewotICAgIFNJ
bnQzMiBsYW5ndWFnZUNvZGU7Ci0gICAgU0ludDMyIHJlZ2lvbkNvZGU7IAotICAgIFNJbnQzMiBz
Y3JpcHRDb2RlOyAKLSAgICBDRlN0cmluZ0VuY29kaW5nIHN0cmluZ0VuY29kaW5nOwotICAgIAot
ICAgIGJvb2wgbGFuZ3VhZ2VEaWRTcGVjaWZ5RXhwbGljaXRWYXJpYW50ID0gW2xhbmd1YWdlIHJh
bmdlT2ZDaGFyYWN0ZXJGcm9tU2V0OltOU0NoYXJhY3RlclNldCBjaGFyYWN0ZXJTZXRXaXRoQ2hh
cmFjdGVyc0luU3RyaW5nOkAiLV8iXV0ubG9jYXRpb24gIT0gTlNOb3RGb3VuZDsKLQotICAgIC8v
IEZJWE1FOiBUaGlzIHRyYW5zZm9ybWF0aW9uIGlzIHZlcnkgd3Jvbmc6Ci0gICAgLy8gMS4gVGhl
cmUgaXMgbm8gcmVhc29uIHdoeSBDRkJ1bmRsZSBsb2NhbGl6YXRpb24gbmFtZXMgd291bGQgYmUg
YXQgYWxsIHJlbGF0ZWQgdG8gbGFuZ3VhZ2UgbmFtZXMgYXMgdXNlZCBvbiB0aGUgV2ViLgotICAg
IC8vIDIuIFNjcmlwdCBNYW5hZ2VyIGNvZGVzIGNhbm5vdCByZXByZXNlbnQgYWxsIGxhbmd1YWdl
cyB0aGF0IGFyZSBub3cgc3VwcG9ydGVkIGJ5IHRoZSBwbGF0Zm9ybSwgc28gdGhlIGNvbnZlcnNp
b24gaXMgbG9zc3kuCi0gICAgLy8gMy4gVGhpcyBzaG91bGQgcHJvYmFibHkgbWF0Y2ggd2hhdCBp
cyBzZW50IGJ5IHRoZSBuZXR3b3JrIGxheWVyIGFzIEFjY2VwdC1MYW5ndWFnZSwgYnV0IGN1cnJl
bnRseSwgdGhhdCdzIGltcGxlbWVudGVkIHNlcGFyYXRlbHkuCi0gICAgQ0ZCdW5kbGVHZXRMb2Nh
bGl6YXRpb25JbmZvRm9yTG9jYWxpemF0aW9uKChDRlN0cmluZ1JlZilsYW5ndWFnZSwgJmxhbmd1
YWdlQ29kZSwgJnJlZ2lvbkNvZGUsICZzY3JpcHRDb2RlLCAmc3RyaW5nRW5jb2RpbmcpOwotICAg
IFJldGFpblB0cjxDRlN0cmluZ1JlZj4gcHJlZmVycmVkTGFuZ3VhZ2VDb2RlID0gYWRvcHRDRihD
RkJ1bmRsZUNvcHlMb2NhbGl6YXRpb25Gb3JMb2NhbGl6YXRpb25JbmZvKGxhbmd1YWdlQ29kZSwg
cmVnaW9uQ29kZSwgc2NyaXB0Q29kZSwgc3RyaW5nRW5jb2RpbmcpKTsKLSAgICBpZiAocHJlZmVy
cmVkTGFuZ3VhZ2VDb2RlKQotICAgICAgICBsYW5ndWFnZSA9IChOU1N0cmluZyAqKXByZWZlcnJl
ZExhbmd1YWdlQ29kZS5nZXQoKTsKLQotICAgIC8vIE1ha2UgdGhlIHN0cmluZyBsb3dlcmNhc2Uu
Ci0gICAgTlNTdHJpbmcgKmxvd2VyY2FzZUxhbmd1YWdlQ29kZSA9IFtsYW5ndWFnZSBsb3dlcmNh
c2VTdHJpbmddOwotICAgIE5TU3RyaW5nICpsb3dlcmNhc2VDb3VudHJ5Q29kZSA9IFtjb3VudHJ5
IGxvd2VyY2FzZVN0cmluZ107Ci0gICAgCi0gICAgLy8gSWYgd2Ugc2VlIGEgIl8iIGFmdGVyIGEg
Mi1sZXR0ZXIgbGFuZ3VhZ2UgY29kZToKLSAgICAvLyBJZiB0aGUgY291bnRyeSBpcyB2YWxpZCBh
bmQgdGhlIGxhbmd1YWdlIGRpZCBub3Qgc3BlY2lmeSBhIHZhcmlhbnQsIHJlcGxhY2UgdGhlICJf
IiBhbmQKLSAgICAvLyB3aGF0ZXZlciBjb21lcyBhZnRlciBpdCB3aXRoICItIiBmb2xsb3dlZCBi
eSB0aGUgY291bnRyeSBjb2RlLgotICAgIC8vIE90aGVyd2lzZSwgcmVwbGFjZSB0aGUgIl8iIHdp
dGggYSAiLSIgYW5kIHVzZSB3aGF0ZXZlciBjb3VudHJ5Ci0gICAgLy8gQ0ZCdW5kbGVDb3B5TG9j
YWxpemF0aW9uRm9yTG9jYWxpemF0aW9uSW5mbygpIHJldHVybmVkLgotICAgIGlmIChbbG93ZXJj
YXNlTGFuZ3VhZ2VDb2RlIGxlbmd0aF0gPj0gMyAmJiBbbG93ZXJjYXNlTGFuZ3VhZ2VDb2RlIGNo
YXJhY3RlckF0SW5kZXg6Ml0gPT0gJ18nKSB7Ci0gICAgICAgIGlmIChjb3VudHJ5ICYmICFsYW5n
dWFnZURpZFNwZWNpZnlFeHBsaWNpdFZhcmlhbnQpCi0gICAgICAgICAgICByZXR1cm4gW05TU3Ry
aW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCIlQC0lQCIsIFtsb3dlcmNhc2VMYW5ndWFnZUNvZGUgc3Vi
c3RyaW5nV2l0aFJhbmdlOk5TTWFrZVJhbmdlKDAsIDIpXSwgbG93ZXJjYXNlQ291bnRyeUNvZGVd
OwotICAgICAgICAKLSAgICAgICAgLy8gRmFsbCBiYWNrIHRvIG9sZGVyIGJlaGF2aW9yLCB3aGlj
aCB1c2VkIHRoZSBvcmlnaW5hbCBsYW5ndWFnZS1iYXNlZCBjb2RlIGJ1dCBqdXN0IGNoYW5nZWQK
LSAgICAgICAgLy8gdGhlICJfIiB0byBhICItIi4KLSAgICAgICAgUmV0YWluUHRyPE5TTXV0YWJs
ZVN0cmluZz4gbXV0YWJsZUxhbmd1YWdlQ29kZSA9IGFkb3B0TlMoW2xvd2VyY2FzZUxhbmd1YWdl
Q29kZSBtdXRhYmxlQ29weV0pOwotICAgICAgICBbbXV0YWJsZUxhbmd1YWdlQ29kZS5nZXQoKSBy
ZXBsYWNlQ2hhcmFjdGVyc0luUmFuZ2U6TlNNYWtlUmFuZ2UoMiwgMSkgd2l0aFN0cmluZzpAIi0i
XTsKLSAgICAgICAgcmV0dXJuIG11dGFibGVMYW5ndWFnZUNvZGUuZ2V0KCk7Ci0gICAgfQotCi0g
ICAgcmV0dXJuIGxvd2VyY2FzZUxhbmd1YWdlQ29kZTsKLX0KLQotc3RhdGljIGJvb2wgaXNWYWxp
ZElDVUNvdW50cnlDb2RlKE5TU3RyaW5nKiBjb3VudHJ5Q29kZSkKLXsKLSAgICBpZiAoIWNvdW50
cnlDb2RlKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgY29uc3QgY2hhciogY29uc3QqIGNv
dW50cmllcyA9IHVsb2NfZ2V0SVNPQ291bnRyaWVzKCk7Ci0gICAgY29uc3QgY2hhciogY291bnRy
eVVURjggPSBbY291bnRyeUNvZGUgVVRGOFN0cmluZ107Ci0gICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgY291bnRyaWVzW2ldOyArK2kpIHsKLSAgICAgICAgY29uc3QgY2hhciogcG9zc2libGVDb3Vu
dHJ5ID0gY291bnRyaWVzW2ldOwotICAgICAgICBpZiAoIXN0cmNtcChjb3VudHJ5VVRGOCwgcG9z
c2libGVDb3VudHJ5KSkKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLSAgICByZXR1
cm4gZmFsc2U7Ci19Ci0KLVZlY3RvcjxTdHJpbmc+IHBsYXRmb3JtVXNlclByZWZlcnJlZExhbmd1
YWdlcygpCi17Ci0jaWYgUExBVEZPUk0oTUFDKQotICAgIHN0YXRpYyBkaXNwYXRjaF9vbmNlX3Qg
b25jZVRva2VuOwotICAgIGRpc3BhdGNoX29uY2UoJm9uY2VUb2tlbiwgXnsKLSAgICAgICAgW1tO
U0Rpc3RyaWJ1dGVkTm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdIGFkZE9ic2VydmVy
OltXZWJMYW5ndWFnZUNoYW5nZU9ic2VydmVyIHNlbGZdIHNlbGVjdG9yOkBzZWxlY3RvcihsYW5n
dWFnZVByZWZlcmVuY2VzRGlkQ2hhbmdlOikgbmFtZTpAIkFwcGxlTGFuZ3VhZ2VQcmVmZXJlbmNl
c0NoYW5nZWROb3RpZmljYXRpb24iIG9iamVjdDpuaWxdOwotICAgIH0pOwotI2VuZGlmCi0KLSAg
ICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlM7Ci0KLSAgICBzdGQ6OmxvY2tfZ3VhcmQ8U3Rh
dGljTG9jaz4gbG9jayhwcmVmZXJyZWRMYW5ndWFnZXNNdXRleCk7Ci0gICAgVmVjdG9yPFN0cmlu
Zz4mIHVzZXJQcmVmZXJyZWRMYW5ndWFnZXMgPSBwcmVmZXJyZWRMYW5ndWFnZXMoKTsKLQotICAg
IGlmICh1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzLmlzRW1wdHkoKSkgewotICAgICAgICBSZXRhaW5Q
dHI8Q0ZMb2NhbGVSZWY+IGxvY2FsZSA9IGFkb3B0Q0YoQ0ZMb2NhbGVDb3B5Q3VycmVudCgpKTsK
LSAgICAgICAgTlNTdHJpbmcgKmNvdW50cnlDb2RlID0gKE5TU3RyaW5nICopQ0ZMb2NhbGVHZXRW
YWx1ZShsb2NhbGUuZ2V0KCksIGtDRkxvY2FsZUNvdW50cnlDb2RlKTsKLSAgICAgICAgCi0gICAg
ICAgIGlmICghaXNWYWxpZElDVUNvdW50cnlDb2RlKGNvdW50cnlDb2RlKSkKLSAgICAgICAgICAg
IGNvdW50cnlDb2RlID0gbmlsOwotICAgICAgICAKLSAgICAgICAgUmV0YWluUHRyPENGQXJyYXlS
ZWY+IGxhbmd1YWdlcyA9IGFkb3B0Q0YoQ0ZMb2NhbGVDb3B5UHJlZmVycmVkTGFuZ3VhZ2VzKCkp
OwotICAgICAgICBDRkluZGV4IGxhbmd1YWdlQ291bnQgPSBDRkFycmF5R2V0Q291bnQobGFuZ3Vh
Z2VzLmdldCgpKTsKLSAgICAgICAgaWYgKCFsYW5ndWFnZUNvdW50KQotICAgICAgICAgICAgdXNl
clByZWZlcnJlZExhbmd1YWdlcy5hcHBlbmQoImVuIik7Ci0gICAgICAgIGVsc2UgewotICAgICAg
ICAgICAgZm9yIChDRkluZGV4IGkgPSAwOyBpIDwgbGFuZ3VhZ2VDb3VudDsgaSsrKQotICAgICAg
ICAgICAgICAgIHVzZXJQcmVmZXJyZWRMYW5ndWFnZXMuYXBwZW5kKGh0dHBTdHlsZUxhbmd1YWdl
Q29kZSgoTlNTdHJpbmcgKilDRkFycmF5R2V0VmFsdWVBdEluZGV4KGxhbmd1YWdlcy5nZXQoKSwg
aSksIGNvdW50cnlDb2RlKSk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBWZWN0b3I8U3RyaW5n
PiB1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzQ29weTsKLSAgICB1c2VyUHJlZmVycmVkTGFuZ3VhZ2Vz
Q29weS5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHVzZXJQcmVmZXJyZWRMYW5ndWFnZXMuc2l6ZSgp
KTsKLQotICAgIGZvciAoYXV0byYgbGFuZ3VhZ2UgOiB1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzKQot
ICAgICAgICB1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzQ29weS51bmNoZWNrZWRBcHBlbmQobGFuZ3Vh
Z2UuaXNvbGF0ZWRDb3B5KCkpOwotCi0gICAgcmV0dXJuIHVzZXJQcmVmZXJyZWRMYW5ndWFnZXND
b3B5OwotCi0gICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKLQotICAgIHJldHVybiBWZWN0
b3I8U3RyaW5nPigpOwotfQotCi19CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9tYWMvQVZWaWRlb0NhcHR1cmVTb3VyY2UubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWVmlkZW9DYXB0dXJlU291cmNlLm1t
CShyZXZpc2lvbiAyMDA5NjgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9tYWMvQVZWaWRlb0NhcHR1cmVTb3VyY2UubW0JKHdvcmtpbmcgY29weSkKQEAgLTI5LDcgKzI5
LDYgQEAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKSAmJiBVU0UoQVZGT1VOREFUSU9OKQogCiAj
aW1wb3J0ICJBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyLmgiCi0jaW1wb3J0ICJCbG9ja0V4Y2VwdGlv
bnMuaCIKICNpbXBvcnQgIkdyYXBoaWNzQ29udGV4dENHLmgiCiAjaW1wb3J0ICJJbWFnZUJ1ZmZl
ci5oIgogI2ltcG9ydCAiSW50UmVjdC5oIgpAQCAtNDEsNiArNDAsNyBAQAogI2ltcG9ydCAiUmVh
bHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzLmgiCiAjaW1wb3J0IDxBVkZvdW5kYXRpb24vQVZGb3Vu
ZGF0aW9uLmg+CiAjaW1wb3J0IDxvYmpjL3J1bnRpbWUuaD4KKyNpbXBvcnQgPHd0Zi9CbG9ja09i
akNFeGNlcHRpb25zLmg+CiAKICNpbXBvcnQgIkNvcmVNZWRpYVNvZnRMaW5rLmgiCiAjaW1wb3J0
ICJDb3JlVmlkZW9Tb2Z0TGluay5oIgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3Bp
L2NmL0NGQnVuZGxlU1BJLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
c3BpL2NmL0NGQnVuZGxlU1BJLmgJKHJldmlzaW9uIDIwMDk2OCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3NwaS9jZi9DRkJ1bmRsZVNQSS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDQ0ICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
Ci0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNp
Zm5kZWYgQ0ZCdW5kbGVTUElfaAotI2RlZmluZSBDRkJ1bmRsZVNQSV9oCi0KLSNpbmNsdWRlIDxD
b3JlRm91bmRhdGlvbi9Db3JlRm91bmRhdGlvbi5oPgotCi0jaWYgVVNFKEFQUExFX0lOVEVSTkFM
X1NESykKLSNpbXBvcnQgPENvcmVGb3VuZGF0aW9uL0NGUHJpdi5oPgotI2Vsc2UKLSNpbmNsdWRl
IDx3dGYvc3BpL2Rhcndpbi9YUENTUEkuaD4KLSNlbmRpZgotCi1leHRlcm4gIkMiIHsKLXZvaWQg
X0NGQnVuZGxlU2V0dXBYUENCb290c3RyYXAoeHBjX29iamVjdF90IGJvb3RzdHJhcCk7Ci0KLUJv
b2xlYW4gQ0ZCdW5kbGVHZXRMb2NhbGl6YXRpb25JbmZvRm9yTG9jYWxpemF0aW9uKENGU3RyaW5n
UmVmIGxvY2FsaXphdGlvbk5hbWUsIFNJbnQzMiAqbGFuZ3VhZ2VDb2RlLCBTSW50MzIgKnJlZ2lv
bkNvZGUsIFNJbnQzMiAqc2NyaXB0Q29kZSwgQ0ZTdHJpbmdFbmNvZGluZyAqc3RyaW5nRW5jb2Rp
bmcpOwotQ0ZTdHJpbmdSZWYgQ0ZCdW5kbGVDb3B5TG9jYWxpemF0aW9uRm9yTG9jYWxpemF0aW9u
SW5mbyhTSW50MzIgbGFuZ3VhZ2VDb2RlLCBTSW50MzIgcmVnaW9uQ29kZSwgU0ludDMyIHNjcmlw
dENvZGUsIENGU3RyaW5nRW5jb2Rpbmcgc3RyaW5nRW5jb2RpbmcpOwotfQotCi0jZW5kaWYKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3VuaXgvTGFuZ3VhZ2VVbml4LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS91bml4L0xhbmd1YWdlVW5peC5jcHAJKHJl
dmlzaW9uIDIwMDk2OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3VuaXgvTGFuZ3VhZ2VV
bml4LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw0OSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDA3IEFscCBUb2tlciA8YWxwQGF0b2tlci5jb20+Ci0gKgotICogVGhpcyBsaWJyYXJ5
IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9k
aWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMK
LSAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247
IGVpdGhlcgotICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24p
IGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBp
biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdB
UlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5U
QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05V
Ci0gKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAq
Ci0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRo
ZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICogdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAq
IEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIK
LSNpbmNsdWRlICJMYW5ndWFnZS5oIgotCi0jaW5jbHVkZSA8bG9jYWxlLmg+Ci0jaW5jbHVkZSA8
d3RmL1ZlY3Rvci5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgotCi1uYW1lc3Bh
Y2UgV2ViQ29yZSB7Ci0KLS8vIFVzaW5nIHBhbmdvX2xhbmd1YWdlX2dldF9kZWZhdWx0KCkgaGVy
ZSBpcyBub3QgYW4gb3B0aW9uLCBiZWNhdXNlCi0vLyBpdCBkb2Vzbid0IHN1cHBvcnQgY2hhbmdp
bmcgdGhlIGxvY2FsZSBpbiBydW50aW1lLCBzbyBpdCByZXR1cm5zCi0vLyBhbHdheXMgdGhlIHNh
bWUgdmFsdWUuCi1zdGF0aWMgU3RyaW5nIHBsYXRmb3JtTGFuZ3VhZ2UoKQotewotICAgIFN0cmlu
ZyBsb2NhbGVEZWZhdWx0KHNldGxvY2FsZShMQ19DVFlQRSwgbnVsbHB0cikpOwotICAgIGlmIChs
b2NhbGVEZWZhdWx0LmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIFN0cmluZygiYyIpOwotCi0g
ICAgU3RyaW5nIG5vcm1hbGl6ZWREZWZhdWx0ID0gbG9jYWxlRGVmYXVsdC5jb252ZXJ0VG9BU0NJ
SUxvd2VyY2FzZSgpOwotICAgIG5vcm1hbGl6ZWREZWZhdWx0LnJlcGxhY2UoJ18nLCAnLScpOwot
ICAgIG5vcm1hbGl6ZWREZWZhdWx0LnRydW5jYXRlKG5vcm1hbGl6ZWREZWZhdWx0LmZpbmQoJy4n
KSk7Ci0gICAgcmV0dXJuIG5vcm1hbGl6ZWREZWZhdWx0OwotfQotCi1WZWN0b3I8U3RyaW5nPiBw
bGF0Zm9ybVVzZXJQcmVmZXJyZWRMYW5ndWFnZXMoKQotewotICAgIHJldHVybiB7IHBsYXRmb3Jt
TGFuZ3VhZ2UoKSB9OwotfQotCi19CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4v
TGFuZ3VhZ2VXaW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dp
bi9MYW5ndWFnZVdpbi5jcHAJKHJldmlzaW9uIDIwMDk2OCkKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3dpbi9MYW5ndWFnZVdpbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNzcgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNyBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
Ci0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2luY2x1
ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkxhbmd1YWdlLmgiCi0KLSNpbmNsdWRlIDx3aW5kb3dz
Lmg+Ci0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmlu
Zy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXN0YXRpYyBTdHJpbmcgbG9jYWxlSW5mbyhM
Q1RZUEUgbG9jYWxlVHlwZSwgY29uc3QgU3RyaW5nJiBmYWxsYmFjaykKLXsKLSAgICBMQU5HSUQg
bGFuZ0lEID0gR2V0VXNlckRlZmF1bHRVSUxhbmd1YWdlKCk7Ci0gICAgaW50IGxvY2FsZUNoYXJz
ID0gR2V0TG9jYWxlSW5mbyhsYW5nSUQsIGxvY2FsZVR5cGUsIDAsIDApOwotICAgIGlmICghbG9j
YWxlQ2hhcnMpCi0gICAgICAgIHJldHVybiBmYWxsYmFjazsKLSAgICBVQ2hhciogbG9jYWxlTmFt
ZUJ1ZjsKLSAgICBTdHJpbmcgbG9jYWxlTmFtZSA9IFN0cmluZzo6Y3JlYXRlVW5pbml0aWFsaXpl
ZChsb2NhbGVDaGFycywgbG9jYWxlTmFtZUJ1Zik7Ci0gICAgbG9jYWxlQ2hhcnMgPSBHZXRMb2Nh
bGVJbmZvKGxhbmdJRCwgbG9jYWxlVHlwZSwgbG9jYWxlTmFtZUJ1ZiwgbG9jYWxlQ2hhcnMpOwot
ICAgIGlmICghbG9jYWxlQ2hhcnMpCi0gICAgICAgIHJldHVybiBmYWxsYmFjazsKLSAgICBpZiAo
bG9jYWxlTmFtZS5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBmYWxsYmFjazsKLQotICAgIGxv
Y2FsZU5hbWUudHJ1bmNhdGUobG9jYWxlTmFtZS5sZW5ndGgoKSAtIDEpOwotICAgIHJldHVybiBs
b2NhbGVOYW1lOwotfQotCi1zdGF0aWMgU3RyaW5nIHBsYXRmb3JtTGFuZ3VhZ2UoKQotewotICAg
IHN0YXRpYyBTdHJpbmcgY29tcHV0ZWREZWZhdWx0TGFuZ3VhZ2U7Ci0gICAgaWYgKCFjb21wdXRl
ZERlZmF1bHRMYW5ndWFnZS5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBjb21wdXRlZERlZmF1
bHRMYW5ndWFnZTsKLQotICAgIFN0cmluZyBsYW5ndWFnZU5hbWUgPSBsb2NhbGVJbmZvKExPQ0FM
RV9TSVNPNjM5TEFOR05BTUUsICJlbiIpOwotICAgIFN0cmluZyBjb3VudHJ5TmFtZSA9IGxvY2Fs
ZUluZm8oTE9DQUxFX1NJU08zMTY2Q1RSWU5BTUUsIFN0cmluZygpKTsKLQotICAgIGlmIChjb3Vu
dHJ5TmFtZS5pc0VtcHR5KCkpCi0gICAgICAgIGNvbXB1dGVkRGVmYXVsdExhbmd1YWdlID0gbGFu
Z3VhZ2VOYW1lOwotICAgIGVsc2UKLSAgICAgICAgY29tcHV0ZWREZWZhdWx0TGFuZ3VhZ2UgPSBs
YW5ndWFnZU5hbWUgKyAnLScgKyBjb3VudHJ5TmFtZTsKLQotICAgIHJldHVybiBjb21wdXRlZERl
ZmF1bHRMYW5ndWFnZTsKLX0KLQotVmVjdG9yPFN0cmluZz4gcGxhdGZvcm1Vc2VyUHJlZmVycmVk
TGFuZ3VhZ2VzKCkKLXsKLSAgICBWZWN0b3I8U3RyaW5nPiB1c2VyUHJlZmVycmVkTGFuZ3VhZ2Vz
OwotICAgIHVzZXJQcmVmZXJyZWRMYW5ndWFnZXMuYXBwZW5kKHBsYXRmb3JtTGFuZ3VhZ2UoKSk7
Ci0gICAgcmV0dXJuIHVzZXJQcmVmZXJyZWRMYW5ndWFnZXM7Ci19Ci0KLX0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>279084</attachid>
            <date>2016-05-16 19:51:34 -0700</date>
            <delta_ts>2016-05-16 21:31:15 -0700</delta_ts>
            <desc>less wrong</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>83703</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyMDA5NjgpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkod29ya2luZyBjb3B5KQpAQCAtODM2OSw3ICs4MzY5LDcgQEAKIAkJCSk7CiAJCQlydW5P
bmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJCXNoZWxsUGF0aCA9IC9iaW4v
c2g7Ci0JCQlzaGVsbFNjcmlwdCA9ICJzZXQgLWVcblxuaWYgWyBcIiR7QUNUSU9OfVwiID0gXCJp
bnN0YWxsaGRyc1wiIF07IHRoZW5cbiAgICBleGl0IDA7XG5maVxuXG5pZiBbIC1mIC4uLy4uL1Rv
b2xzL1NjcmlwdHMvY2hlY2stZm9yLWluYXBwcm9wcmlhdGUtb2JqYy1jbGFzcy1uYW1lcyBdOyB0
aGVuXG4gICAgLi4vLi4vVG9vbHMvU2NyaXB0cy9jaGVjay1mb3ItaW5hcHByb3ByaWF0ZS1vYmpj
LWNsYXNzLW5hbWVzIEpTXG5maSI7CisJCQlzaGVsbFNjcmlwdCA9ICJzZXQgLWVcblxuaWYgWyBc
IiR7QUNUSU9OfVwiID0gXCJpbnN0YWxsaGRyc1wiIF07IHRoZW5cbiAgICBleGl0IDA7XG5maVxu
XG5pZiBbIC1mIC4uLy4uL1Rvb2xzL1NjcmlwdHMvY2hlY2stZm9yLWluYXBwcm9wcmlhdGUtb2Jq
Yy1jbGFzcy1uYW1lcyBdOyB0aGVuXG4gICAgLi4vLi4vVG9vbHMvU2NyaXB0cy9jaGVjay1mb3It
aW5hcHByb3ByaWF0ZS1vYmpjLWNsYXNzLW5hbWVzIEpTIFdURlxuZmkiOwogCQl9OwogCQkzNzMy
ODExQTE3RkNEMjM1MDA0QUQ1MTkgLyogUG9zdHByb2Nlc3MgSGVhZGVycyAqLyA9IHsKIAkJCWlz
YSA9IFBCWFNoZWxsU2NyaXB0QnVpbGRQaGFzZTsKSW5kZXg6IFNvdXJjZS9XVEYvV1RGLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi9XVEYueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjAwOTY4KQorKysgU291cmNlL1dURi9XVEYu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMzAxLDYgKzMwMSwx
MSBAQAogCQlDRDU0OTdBRDE1ODU3RDAzMDBCNUJDMzAgLyogTWVkaWFUaW1lLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDU0OTdBQjE1ODU3RDAzMDBC
NUJDMzAgLyogTWVkaWFUaW1lLmggKi87IH07CiAJCUNFNDY1MTZFMTlEQjFGQjQwMDNFQ0EwNSAv
KiBOU01hcFRhYmxlU1BJLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBDRTQ2NTE2RDE5REIxRkI0MDAzRUNBMDUgLyogTlNNYXBUYWJsZVNQSS5oICovOyB9
OwogCQlDRTczRTAyNTE5RENCN0FCMDA1ODBENUMgLyogWFBDU1BJLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTczRTAyNDE5RENCN0FCMDA1ODBENUMg
LyogWFBDU1BJLmggKi87IH07CisJCURDRUUyMUZCMUNFQTc1MzgwMDBDMjM5NiAvKiBDRkJ1bmRs
ZVNQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRENF
RTIxRkExQ0VBNzUzODAwMEMyMzk2IC8qIENGQnVuZGxlU1BJLmggKi87IH07CisJCURDRUUyMjAw
MUNFQTc1NTEwMDBDMjM5NiAvKiBCbG9ja09iakNFeGNlcHRpb25zLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBEQ0VFMjFGQzFDRUE3NTUxMDAwQzIzOTYg
LyogQmxvY2tPYmpDRXhjZXB0aW9ucy5oICovOyB9OworCQlEQ0VFMjIwMTFDRUE3NTUxMDAwQzIz
OTYgLyogQmxvY2tPYmpDRXhjZXB0aW9ucy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IERDRUUyMUZEMUNFQTc1NTEwMDBDMjM5NiAvKiBCbG9ja09iakNF
eGNlcHRpb25zLm1tICovOyB9OworCQlEQ0VFMjIwMjFDRUE3NTUxMDAwQzIzOTYgLyogUGxhdGZv
cm1Vc2VyUHJlZmVycmVkTGFuZ3VhZ2VzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBEQ0VFMjFGRTFDRUE3NTUxMDAwQzIzOTYgLyogUGxhdGZvcm1Vc2Vy
UHJlZmVycmVkTGFuZ3VhZ2VzLmggKi87IH07CisJCURDRUUyMjAzMUNFQTc1NTEwMDBDMjM5NiAv
KiBQbGF0Zm9ybVVzZXJQcmVmZXJyZWRMYW5ndWFnZXNNYWMubW0gaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBEQ0VFMjFGRjFDRUE3NTUxMDAwQzIzOTYgLyog
UGxhdGZvcm1Vc2VyUHJlZmVycmVkTGFuZ3VhZ2VzTWFjLm1tICovOyB9OwogCQlERTVBMDlGQzFC
QTM2OTkyMDAzRDQ0MjQgLyogQ29tbW9uQ3J5cHRvU1BJLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBERTVBMDlGQjFCQTM2OTkyMDAzRDQ0MjQgLyogQ29t
bW9uQ3J5cHRvU1BJLmggKi87IH07CiAJCUUxNTU1NkY1MThBMENDMTgwMDZGNDhGQiAvKiBDcnlw
dG9ncmFwaGljVXRpbGl0aWVzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEUxNTU1NkYzMThBMENDMTgwMDZGNDhGQiAvKiBDcnlwdG9ncmFwaGljVXRp
bGl0aWVzLmNwcCAqLzsgfTsKIAkJRTE1NTU2RjYxOEEwQ0MxODAwNkY0OEZCIC8qIENyeXB0b2dy
YXBoaWNVdGlsaXRpZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEUxNTU1NkY0MThBMENDMTgwMDZGNDhGQiAvKiBDcnlwdG9ncmFwaGljVXRpbGl0aWVz
LmggKi87IH07CkBAIC02MjIsNiArNjI3LDExIEBACiAJCUNENTQ5N0FCMTU4NTdEMDMwMEI1QkMz
MCAvKiBNZWRpYVRpbWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFU
aW1lLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNFNDY1MTZEMTlEQjFGQjQwMDNF
Q0EwNSAvKiBOU01hcFRhYmxlU1BJLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IE5TTWFwVGFibGVTUEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0U3M0UwMjQx
OURDQjdBQjAwNTgwRDVDIC8qIFhQQ1NQSS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBYUENTUEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRENFRTIxRkExQ0VB
NzUzODAwMEMyMzk2IC8qIENGQnVuZGxlU1BJLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
bmFtZSA9IENGQnVuZGxlU1BJLmg7IHBhdGggPSBjZi9DRkJ1bmRsZVNQSS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlEQ0VFMjFGQzFDRUE3NTUxMDAwQzIzOTYgLyogQmxvY2tPYmpD
RXhjZXB0aW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCbG9ja09iakNF
eGNlcHRpb25zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCURDRUUyMUZEMUNFQTc1
NTEwMDBDMjM5NiAvKiBCbG9ja09iakNFeGNlcHRpb25zLm1tICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAub2JqY3BwOyBwYXRoID0gQmxvY2tPYmpDRXhjZXB0aW9ucy5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJRENFRTIxRkUxQ0VBNzU1MTAwMEMyMzk2IC8qIFBsYXRmb3JtVXNl
clByZWZlcnJlZExhbmd1YWdlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQ
bGF0Zm9ybVVzZXJQcmVmZXJyZWRMYW5ndWFnZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJRENFRTIxRkYxQ0VBNzU1MTAwMEMyMzk2IC8qIFBsYXRmb3JtVXNlclByZWZlcnJlZExh
bmd1YWdlc01hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFBs
YXRmb3JtVXNlclByZWZlcnJlZExhbmd1YWdlc01hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJREU1QTA5RkIxQkEzNjk5MjAwM0Q0NDI0IC8qIENvbW1vbkNyeXB0b1NQSS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb21tb25DcnlwdG9TUEkuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTE1NTU2RjMxOEEwQ0MxODAwNkY0OEZCIC8qIENyeXB0
b2dyYXBoaWNVdGlsaXRpZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gQ3J5cHRvZ3JhcGhpY1V0aWxpdGllcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUUxNTU1NkY0MThBMENDMTgwMDZGNDhGQiAvKiBDcnlwdG9ncmFwaGljVXRpbGl0aWVzLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENyeXB0b2dyYXBoaWNVdGlsaXRpZXMu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTc2OCw2ICs3NzgsOCBAQAogCQkJCUE4
QTQ3MjVGMTUxQTgyNUEwMDQxMjNGRiAvKiBCaXRtYXAuaCAqLywKIAkJCQlBOEE0NzI2MDE1MUE4
MjVBMDA0MTIzRkYgLyogQml0VmVjdG9yLmNwcCAqLywKIAkJCQlBOEE0NzI2MTE1MUE4MjVBMDA0
MTIzRkYgLyogQml0VmVjdG9yLmggKi8sCisJCQkJRENFRTIxRkMxQ0VBNzU1MTAwMEMyMzk2IC8q
IEJsb2NrT2JqQ0V4Y2VwdGlvbnMuaCAqLywKKwkJCQlEQ0VFMjFGRDFDRUE3NTUxMDAwQzIzOTYg
LyogQmxvY2tPYmpDRXhjZXB0aW9ucy5tbSAqLywKIAkJCQkxQTk0NEY0NjFDM0Q4ODE0MDA1QkQy
OEMgLyogQmxvY2tQdHIuaCAqLywKIAkJCQlBOEE0NzI2NDE1MUE4MjVBMDA0MTIzRkYgLyogQmxv
Y2tTdGFjay5oICovLAogCQkJCUE4QTQ3MjY1MTUxQTgyNUEwMDQxMjNGRiAvKiBCbG9vbUZpbHRl
ci5oICovLApAQCAtODgyLDYgKzg5NCw4IEBACiAJCQkJMEY4MjRBNjUxQjc0NDNBMDAwMkUzNDVE
IC8qIFBhcmtpbmdMb3QuaCAqLywKIAkJCQlBOEE0NzJFRDE1MUE4MjVCMDA0MTIzRkYgLyogUGFz
c1JlZlB0ci5oICovLAogCQkJCUE4NzZEQkQ3MTUxODE2RTUwMERBREI5NSAvKiBQbGF0Zm9ybS5o
ICovLAorCQkJCURDRUUyMUZFMUNFQTc1NTEwMDBDMjM5NiAvKiBQbGF0Zm9ybVVzZXJQcmVmZXJy
ZWRMYW5ndWFnZXMuaCAqLywKKwkJCQlEQ0VFMjFGRjFDRUE3NTUxMDAwQzIzOTYgLyogUGxhdGZv
cm1Vc2VyUHJlZmVycmVkTGFuZ3VhZ2VzTWFjLm1tICovLAogCQkJCTBGRjg2MDk0MUJDQ0JENzQw
MDQ1MTI3RiAvKiBQb2ludGVyQ29tcGFyaXNvbi5oICovLAogCQkJCTBGOUQzMzVEMTY1REJBNzMw
MDVBRDM4NyAvKiBQcmludFN0cmVhbS5jcHAgKi8sCiAJCQkJMEY5RDMzNUUxNjVEQkE3MzAwNUFE
Mzg3IC8qIFByaW50U3RyZWFtLmggKi8sCkBAIC0xMTAxLDEyICsxMTE1LDIxIEBACiAJCUNFRjQ4
MjBDMTlEQTM0NzYwMENDMDRCOCAvKiBzcGkgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJ
CWNoaWxkcmVuID0gKAorCQkJCURDRUUyMUY5MUNFQTc1MkYwMDBDMjM5NiAvKiBjZiAqLywKIAkJ
CQlDRTQ2NTE2QzE5REIxRkI0MDAzRUNBMDUgLyogY29jb2EgKi8sCiAJCQkJQ0U3M0UwMjMxOURD
QjdBQjAwNTgwRDVDIC8qIGRhcndpbiAqLywKIAkJCSk7CiAJCQlwYXRoID0gc3BpOwogCQkJc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsKIAkJfTsKKwkJRENFRTIxRjkxQ0VBNzUyRjAwMEMyMzk2IC8q
IGNmICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQlEQ0VF
MjFGQTFDRUE3NTM4MDAwQzIzOTYgLyogQ0ZCdW5kbGVTUEkuaCAqLywKKwkJCSk7CisJCQluYW1l
ID0gY2Y7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OwogCQlFNEEwQUQzQjFBOTYy
NTE5MDA1MzZERjYgLyogY29jb2EgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxk
cmVuID0gKApAQCAtMTEzOSw2ICsxMTYyLDcgQEAKIAkJCQk5QkQ4RjQwQjE3NkMyQjQ3MDAwMkQ4
NjUgLyogQXRvbWljU3RyaW5nVGFibGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0Njk0MTlDMTZF
QUIxMEEwMDI0RTE0NiAvKiBBdXRvZHJhaW5lZFBvb2wuaCBpbiBIZWFkZXJzICovLAogCQkJCTBG
QjE0RTE5MTgwRkEyMTgwMDlCNkI0RCAvKiBCYWcuaCBpbiBIZWFkZXJzICovLAorCQkJCURDRUUy
MjAwMUNFQTc1NTEwMDBDMjM5NiAvKiBCbG9ja09iakNFeGNlcHRpb25zLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRkIxNEUxQjE4MTBFMURDMDA5QjZCNEQgLyogQmFnVG9IYXNoTWFwLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk4MTM0MDEzOTE1QjA5MkZEMDAxRkYwQjggLyogQmFzZTY0LmggaW4gSGVh
ZGVycyAqLywKIAkJCQlBOEE0NzNBOTE1MUE4MjVCMDA0MTIzRkYgLyogYmlnbnVtLWR0b2EuaCBp
biBIZWFkZXJzICovLApAQCAtMTI5NSw2ICsxMzE5LDcgQEAKIAkJCQlBOEE0NzQzRjE1MUE4MjVC
MDA0MTIzRkYgLyogU3RyaW5nSGFzaC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTc0ODc0NTQxN0Ew
QkRBRTAwRkEwNENCIC8qIFN0cmluZ0hhc2hEdW1wQ29udGV4dC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQThBNDc0NDExNTFBODI1QjAwNDEyM0ZGIC8qIFN0cmluZ0ltcGwuaCBpbiBIZWFkZXJzICov
LAorCQkJCURDRUUyMUZCMUNFQTc1MzgwMDBDMjM5NiAvKiBDRkJ1bmRsZVNQSS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQThBNDc0NDIxNTFBODI1QjAwNDEyM0ZGIC8qIFN0cmluZ09wZXJhdG9ycy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEZEREJGQTgxNjY2REZBMzAwQzU1RkVGIC8qIFN0cmluZ1By
aW50U3RyZWFtLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTZFQjFFMDE4N0QwQkQzMDAzMDEyNkYg
LyogU3RyaW5nVmlldy5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMzEyLDYgKzEzMzcsNyBAQAogCQkJ
CUE4QTQ3NDU1MTUxQTgyNUIwMDQxMjNGRiAvKiBUaHJlYWRTcGVjaWZpYy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNTUzMDcxQ0ExQzQwNDI3MjAwMzg0ODk4IC8qIFRpbnlMUlVDYWNoZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMEZFRDY3QjYxQjIyRDREODAwNjZDRTE1IC8qIFRpbnlQdHJTZXQuaCBp
biBIZWFkZXJzICovLAorCQkJCURDRUUyMjAyMUNFQTc1NTEwMDBDMjM5NiAvKiBQbGF0Zm9ybVVz
ZXJQcmVmZXJyZWRMYW5ndWFnZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0OUVGMTYzMTZCQkZF
MEQwMDBBNDMzMSAvKiBUcmlTdGF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODNGQkE5MzIxOURG
NDU5NzAwRjMwQURCIC8qIFR5cGVDYXN0cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFGREU2NDgx
OTUyMDFDMzAwQzQ4RkZBIC8qIFR5cGVDYXN0c0NGLmggaW4gSGVhZGVycyAqLywKQEAgLTE0NjAs
NiArMTQ4Niw3IEBACiAJCQkJQThBNDczQjMxNTFBODI1QjAwNDEyM0ZGIC8qIGZhc3QtZHRvYS5j
YyBpbiBTb3VyY2VzICovLAogCQkJCTBGODg1RTBGMTg0NUFFQTkwMEYxRTNGQSAvKiBGYXN0Qml0
VmVjdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4QTQ3M0MzMTUxQTgyNUIwMDQxMjNGRiAv
KiBGYXN0TWFsbG9jLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCURDRUUyMjAxMUNFQTc1NTEwMDBD
MjM5NiAvKiBCbG9ja09iakNFeGNlcHRpb25zLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY5RDMz
NjAxNjVEQkE3MzAwNUFEMzg3IC8qIEZpbGVQcmludFN0cmVhbS5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlBOEE0NzNCNTE1MUE4MjVCMDA0MTIzRkYgLyogZml4ZWQtZHRvYS5jYyBpbiBTb3VyY2Vz
ICovLAogCQkJCTFBMUQ4QjlFMTczMTg3OTgwMDE0MURBNCAvKiBGdW5jdGlvbkRpc3BhdGNoZXIu
Y3BwIGluIFNvdXJjZXMgKi8sCkBAIC0xNTEwLDYgKzE1MzcsNyBAQAogCQkJCUE4QTQ3NDY5MTUx
QTgyNUIwMDQxMjNGRiAvKiBVVEY4LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFGQTQ3QzhBMTUy
NTAyREEwMDU2OEQxQiAvKiBXZWJDb3JlVGhyZWFkLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBG
RTQ0NzlDMUI3QUFBMDMwMDk0OThFQiAvKiBXb3JkTG9jay5jcHAgaW4gU291cmNlcyAqLywKKwkJ
CQlEQ0VFMjIwMzFDRUE3NTUxMDAwQzIzOTYgLyogUGxhdGZvcm1Vc2VyUHJlZmVycmVkTGFuZ3Vh
Z2VzTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJRTRBMEFEMzkxQTk2MjQ1NTAwNTM2REY2IC8q
IFdvcmtRdWV1ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFNEEwQUQzRDFBOTYyNTNDMDA1MzZE
RjYgLyogV29ya1F1ZXVlQ29jb2EuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQThBNDc0NDUxNTFB
ODI1QjAwNDEyM0ZGIC8qIFdURlN0cmluZy5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJj
ZS9XVEYvd3RmL0Jsb2NrT2JqQ0V4Y2VwdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RG
L3d0Zi9CbG9ja09iakNFeGNlcHRpb25zLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV1RGL3d0
Zi9CbG9ja09iakNFeGNlcHRpb25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzMiBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAwMywgMjAxNiBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lt
cG9ydCA8Rm91bmRhdGlvbi9OU0V4Y2VwdGlvbi5oPgorCitXVEZfRVhQT1JUX1BSSVZBVEUgTk9f
UkVUVVJOX0RVRV9UT19BU1NFUlQgdm9pZCBSZXBvcnRCbG9ja2VkT2JqQ0V4Y2VwdGlvbihOU0V4
Y2VwdGlvbiAqKTsKKworI2RlZmluZSBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMgQHRyeSB7
CisjZGVmaW5lIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMgfSBAY2F0Y2goTlNFeGNlcHRpb24g
KmxvY2FsRXhjZXB0aW9uKSB7IFJlcG9ydEJsb2NrZWRPYmpDRXhjZXB0aW9uKGxvY2FsRXhjZXB0
aW9uKTsgfQorCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9CbG9ja09iakNFeGNlcHRpb25zLm1tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL0Jsb2NrT2JqQ0V4Y2VwdGlvbnMubW0JKHJldmlz
aW9uIDApCisrKyBTb3VyY2UvV1RGL3d0Zi9CbG9ja09iakNFeGNlcHRpb25zLm1tCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsMzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDcs
IDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJC
bG9ja09iakNFeGNlcHRpb25zLmgiCisKKyNpbXBvcnQgPHd0Zi9Bc3NlcnRpb25zLmg+CisKK3Zv
aWQgUmVwb3J0QmxvY2tlZE9iakNFeGNlcHRpb24oTlNFeGNlcHRpb24gKmV4Y2VwdGlvbikKK3sK
KyNpZiBBU1NFUlRfRElTQUJMRUQKKyAgICBOU0xvZyhAIioqKiBXZWJLaXQgZGlzY2FyZGluZyBl
eGNlcHRpb246IDwlQD4gJUAiLCBbZXhjZXB0aW9uIG5hbWVdLCBbZXhjZXB0aW9uIHJlYXNvbl0p
OworI2Vsc2UKKyAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKDAsICJVbmNhdWdodCBleGNlcHRpb24g
LSAlQCIsIGV4Y2VwdGlvbik7CisjZW5kaWYKK30KSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1BsYXRm
b3JtVXNlclByZWZlcnJlZExhbmd1YWdlcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3Rm
L1BsYXRmb3JtVXNlclByZWZlcnJlZExhbmd1YWdlcy5oCShyZXZpc2lvbiAwKQorKysgU291cmNl
L1dURi93dGYvUGxhdGZvcm1Vc2VyUHJlZmVycmVkTGFuZ3VhZ2VzLmgJKHdvcmtpbmcgY29weSkK
QEAgLTAsMCArMSw0NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgUGxhdGZvcm1Vc2VyUHJlZmVy
cmVkTGFuZ3VhZ2VzX2gKKyNkZWZpbmUgUGxhdGZvcm1Vc2VyUHJlZmVycmVkTGFuZ3VhZ2VzX2gK
KworI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcu
aD4KKworbmFtZXNwYWNlIFdURiB7CisKK1dURl9FWFBPUlRfUFJJVkFURSB2b2lkIHNldFBsYXRm
b3JtVXNlclByZWZlcnJlZExhbmd1YWdlc0NoYW5nZWRDYWxsYmFjayh2b2lkICgqKSgpKTsKKwor
V1RGX0VYUE9SVF9QUklWQVRFIFZlY3RvcjxTdHJpbmc+IHBsYXRmb3JtVXNlclByZWZlcnJlZExh
bmd1YWdlcygpOworCit9IC8vIG5hbWVzcGFjZSBXVEYKKwordXNpbmcgV1RGOjpzZXRQbGF0Zm9y
bVVzZXJQcmVmZXJyZWRMYW5ndWFnZXNDaGFuZ2VkQ2FsbGJhY2s7Cit1c2luZyBXVEY6OnBsYXRm
b3JtVXNlclByZWZlcnJlZExhbmd1YWdlczsKKworI2VuZGlmIC8vIFBsYXRmb3JtVXNlclByZWZl
cnJlZExhbmd1YWdlc19oCisKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1BsYXRmb3JtVXNlclByZWZl
cnJlZExhbmd1YWdlc01hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9QbGF0Zm9y
bVVzZXJQcmVmZXJyZWRMYW5ndWFnZXNNYWMubW0JKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV1RG
L3d0Zi9QbGF0Zm9ybVVzZXJQcmVmZXJyZWRMYW5ndWFnZXNNYWMubW0JKHdvcmtpbmcgY29weSkK
QEAgLTAsMCArMSwxNzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDUsIDIwMDYs
IDIwMTAsIDIwMTEsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIlBsYXRmb3JtVXNlclByZWZlcnJlZExh
bmd1YWdlcy5oIgorCisjaW1wb3J0ICJCbG9ja09iakNFeGNlcHRpb25zLmgiCisjaW1wb3J0IDxt
dXRleD4KKyNpbXBvcnQgPHVuaWNvZGUvdWxvYy5oPgorI2ltcG9ydCA8d3RmL0Fzc2VydGlvbnMu
aD4KKyNpbXBvcnQgPHd0Zi9Mb2NrLmg+CisjaW1wb3J0IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4K
KyNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KKyNpbXBvcnQgPHd0Zi9zcGkvY2YvQ0ZCdW5kbGVT
UEkuaD4KKyNpbXBvcnQgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV1RGIHsK
Kworc3RhdGljIHZvaWQgKCpjYWxsYmFjaykoKTsKKwordm9pZCBzZXRQbGF0Zm9ybVVzZXJQcmVm
ZXJyZWRMYW5ndWFnZXNDaGFuZ2VkQ2FsbGJhY2sodm9pZCAoKnBhc3NlZENhbGxiYWNrKSgpKQor
eworICAgIGNhbGxiYWNrID0gcGFzc2VkQ2FsbGJhY2s7Cit9CisKK3N0YXRpYyBTdGF0aWNMb2Nr
IHByZWZlcnJlZExhbmd1YWdlc011dGV4OworCitzdGF0aWMgVmVjdG9yPFN0cmluZz4mIHByZWZl
cnJlZExhbmd1YWdlcygpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFZlY3RvcjxTdHJp
bmc+PiBsYW5ndWFnZXM7CisgICAgcmV0dXJuIGxhbmd1YWdlczsKK30KKworfQorCitAaW50ZXJm
YWNlIFdURkxhbmd1YWdlQ2hhbmdlT2JzZXJ2ZXIgOiBOU09iamVjdAorQGVuZAorCitAaW1wbGVt
ZW50YXRpb24gV1RGTGFuZ3VhZ2VDaGFuZ2VPYnNlcnZlcgorCisrICh2b2lkKWxhbmd1YWdlUHJl
ZmVyZW5jZXNEaWRDaGFuZ2U6KE5TTm90aWZpY2F0aW9uICopbm90aWZpY2F0aW9uCit7CisgICAg
VU5VU0VEX1BBUkFNKG5vdGlmaWNhdGlvbik7CisKKyAgICB7CisgICAgICAgIHN0ZDo6bG9ja19n
dWFyZDxTdGF0aWNMb2NrPiBsb2NrKFdURjo6cHJlZmVycmVkTGFuZ3VhZ2VzTXV0ZXgpOworICAg
ICAgICBXVEY6OnByZWZlcnJlZExhbmd1YWdlcygpLmNsZWFyKCk7CisgICAgfQorICAgIAorICAg
IGlmIChXVEY6OmNhbGxiYWNrKQorICAgICAgICBXVEY6OmNhbGxiYWNrKCk7Cit9CisKK0BlbmQK
KworbmFtZXNwYWNlIFdURiB7CisKK3N0YXRpYyBTdHJpbmcgaHR0cFN0eWxlTGFuZ3VhZ2VDb2Rl
KE5TU3RyaW5nICpsYW5ndWFnZSwgTlNTdHJpbmcgKmNvdW50cnkpCit7CisgICAgU0ludDMyIGxh
bmd1YWdlQ29kZTsKKyAgICBTSW50MzIgcmVnaW9uQ29kZTsgCisgICAgU0ludDMyIHNjcmlwdENv
ZGU7IAorICAgIENGU3RyaW5nRW5jb2Rpbmcgc3RyaW5nRW5jb2Rpbmc7CisgICAgCisgICAgYm9v
bCBsYW5ndWFnZURpZFNwZWNpZnlFeHBsaWNpdFZhcmlhbnQgPSBbbGFuZ3VhZ2UgcmFuZ2VPZkNo
YXJhY3RlckZyb21TZXQ6W05TQ2hhcmFjdGVyU2V0IGNoYXJhY3RlclNldFdpdGhDaGFyYWN0ZXJz
SW5TdHJpbmc6QCItXyJdXS5sb2NhdGlvbiAhPSBOU05vdEZvdW5kOworCisgICAgLy8gRklYTUU6
IFRoaXMgdHJhbnNmb3JtYXRpb24gaXMgdmVyeSB3cm9uZzoKKyAgICAvLyAxLiBUaGVyZSBpcyBu
byByZWFzb24gd2h5IENGQnVuZGxlIGxvY2FsaXphdGlvbiBuYW1lcyB3b3VsZCBiZSBhdCBhbGwg
cmVsYXRlZCB0byBsYW5ndWFnZSBuYW1lcyBhcyB1c2VkIG9uIHRoZSBXZWIuCisgICAgLy8gMi4g
U2NyaXB0IE1hbmFnZXIgY29kZXMgY2Fubm90IHJlcHJlc2VudCBhbGwgbGFuZ3VhZ2VzIHRoYXQg
YXJlIG5vdyBzdXBwb3J0ZWQgYnkgdGhlIHBsYXRmb3JtLCBzbyB0aGUgY29udmVyc2lvbiBpcyBs
b3NzeS4KKyAgICAvLyAzLiBUaGlzIHNob3VsZCBwcm9iYWJseSBtYXRjaCB3aGF0IGlzIHNlbnQg
YnkgdGhlIG5ldHdvcmsgbGF5ZXIgYXMgQWNjZXB0LUxhbmd1YWdlLCBidXQgY3VycmVudGx5LCB0
aGF0J3MgaW1wbGVtZW50ZWQgc2VwYXJhdGVseS4KKyAgICBDRkJ1bmRsZUdldExvY2FsaXphdGlv
bkluZm9Gb3JMb2NhbGl6YXRpb24oKENGU3RyaW5nUmVmKWxhbmd1YWdlLCAmbGFuZ3VhZ2VDb2Rl
LCAmcmVnaW9uQ29kZSwgJnNjcmlwdENvZGUsICZzdHJpbmdFbmNvZGluZyk7CisgICAgUmV0YWlu
UHRyPENGU3RyaW5nUmVmPiBwcmVmZXJyZWRMYW5ndWFnZUNvZGUgPSBhZG9wdENGKENGQnVuZGxl
Q29weUxvY2FsaXphdGlvbkZvckxvY2FsaXphdGlvbkluZm8obGFuZ3VhZ2VDb2RlLCByZWdpb25D
b2RlLCBzY3JpcHRDb2RlLCBzdHJpbmdFbmNvZGluZykpOworICAgIGlmIChwcmVmZXJyZWRMYW5n
dWFnZUNvZGUpCisgICAgICAgIGxhbmd1YWdlID0gKE5TU3RyaW5nICopcHJlZmVycmVkTGFuZ3Vh
Z2VDb2RlLmdldCgpOworCisgICAgLy8gTWFrZSB0aGUgc3RyaW5nIGxvd2VyY2FzZS4KKyAgICBO
U1N0cmluZyAqbG93ZXJjYXNlTGFuZ3VhZ2VDb2RlID0gW2xhbmd1YWdlIGxvd2VyY2FzZVN0cmlu
Z107CisgICAgTlNTdHJpbmcgKmxvd2VyY2FzZUNvdW50cnlDb2RlID0gW2NvdW50cnkgbG93ZXJj
YXNlU3RyaW5nXTsKKyAgICAKKyAgICAvLyBJZiB3ZSBzZWUgYSAiXyIgYWZ0ZXIgYSAyLWxldHRl
ciBsYW5ndWFnZSBjb2RlOgorICAgIC8vIElmIHRoZSBjb3VudHJ5IGlzIHZhbGlkIGFuZCB0aGUg
bGFuZ3VhZ2UgZGlkIG5vdCBzcGVjaWZ5IGEgdmFyaWFudCwgcmVwbGFjZSB0aGUgIl8iIGFuZAor
ICAgIC8vIHdoYXRldmVyIGNvbWVzIGFmdGVyIGl0IHdpdGggIi0iIGZvbGxvd2VkIGJ5IHRoZSBj
b3VudHJ5IGNvZGUuCisgICAgLy8gT3RoZXJ3aXNlLCByZXBsYWNlIHRoZSAiXyIgd2l0aCBhICIt
IiBhbmQgdXNlIHdoYXRldmVyIGNvdW50cnkKKyAgICAvLyBDRkJ1bmRsZUNvcHlMb2NhbGl6YXRp
b25Gb3JMb2NhbGl6YXRpb25JbmZvKCkgcmV0dXJuZWQuCisgICAgaWYgKFtsb3dlcmNhc2VMYW5n
dWFnZUNvZGUgbGVuZ3RoXSA+PSAzICYmIFtsb3dlcmNhc2VMYW5ndWFnZUNvZGUgY2hhcmFjdGVy
QXRJbmRleDoyXSA9PSAnXycpIHsKKyAgICAgICAgaWYgKGNvdW50cnkgJiYgIWxhbmd1YWdlRGlk
U3BlY2lmeUV4cGxpY2l0VmFyaWFudCkKKyAgICAgICAgICAgIHJldHVybiBbTlNTdHJpbmcgc3Ry
aW5nV2l0aEZvcm1hdDpAIiVALSVAIiwgW2xvd2VyY2FzZUxhbmd1YWdlQ29kZSBzdWJzdHJpbmdX
aXRoUmFuZ2U6TlNNYWtlUmFuZ2UoMCwgMildLCBsb3dlcmNhc2VDb3VudHJ5Q29kZV07CisgICAg
ICAgIAorICAgICAgICAvLyBGYWxsIGJhY2sgdG8gb2xkZXIgYmVoYXZpb3IsIHdoaWNoIHVzZWQg
dGhlIG9yaWdpbmFsIGxhbmd1YWdlLWJhc2VkIGNvZGUgYnV0IGp1c3QgY2hhbmdlZAorICAgICAg
ICAvLyB0aGUgIl8iIHRvIGEgIi0iLgorICAgICAgICBSZXRhaW5QdHI8TlNNdXRhYmxlU3RyaW5n
PiBtdXRhYmxlTGFuZ3VhZ2VDb2RlID0gYWRvcHROUyhbbG93ZXJjYXNlTGFuZ3VhZ2VDb2RlIG11
dGFibGVDb3B5XSk7CisgICAgICAgIFttdXRhYmxlTGFuZ3VhZ2VDb2RlLmdldCgpIHJlcGxhY2VD
aGFyYWN0ZXJzSW5SYW5nZTpOU01ha2VSYW5nZSgyLCAxKSB3aXRoU3RyaW5nOkAiLSJdOworICAg
ICAgICByZXR1cm4gbXV0YWJsZUxhbmd1YWdlQ29kZS5nZXQoKTsKKyAgICB9CisKKyAgICByZXR1
cm4gbG93ZXJjYXNlTGFuZ3VhZ2VDb2RlOworfQorCitzdGF0aWMgYm9vbCBpc1ZhbGlkSUNVQ291
bnRyeUNvZGUoTlNTdHJpbmcqIGNvdW50cnlDb2RlKQoreworICAgIGlmICghY291bnRyeUNvZGUp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBjb25zdCBjaGFyKiBjb25zdCogY291bnRyaWVz
ID0gdWxvY19nZXRJU09Db3VudHJpZXMoKTsKKyAgICBjb25zdCBjaGFyKiBjb3VudHJ5VVRGOCA9
IFtjb3VudHJ5Q29kZSBVVEY4U3RyaW5nXTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBjb3Vu
dHJpZXNbaV07ICsraSkgeworICAgICAgICBjb25zdCBjaGFyKiBwb3NzaWJsZUNvdW50cnkgPSBj
b3VudHJpZXNbaV07CisgICAgICAgIGlmICghc3RyY21wKGNvdW50cnlVVEY4LCBwb3NzaWJsZUNv
dW50cnkpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIHJldHVybiBmYWxz
ZTsKK30KKworVmVjdG9yPFN0cmluZz4gcGxhdGZvcm1Vc2VyUHJlZmVycmVkTGFuZ3VhZ2VzKCkK
K3sKKyNpZiBQTEFURk9STShNQUMpCisgICAgc3RhdGljIGRpc3BhdGNoX29uY2VfdCBvbmNlVG9r
ZW47CisgICAgZGlzcGF0Y2hfb25jZSgmb25jZVRva2VuLCBeeworICAgICAgICBbW05TRGlzdHJp
YnV0ZWROb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0gYWRkT2JzZXJ2ZXI6W1dURkxh
bmd1YWdlQ2hhbmdlT2JzZXJ2ZXIgc2VsZl0gc2VsZWN0b3I6QHNlbGVjdG9yKGxhbmd1YWdlUHJl
ZmVyZW5jZXNEaWRDaGFuZ2U6KSBuYW1lOkAiQXBwbGVMYW5ndWFnZVByZWZlcmVuY2VzQ2hhbmdl
ZE5vdGlmaWNhdGlvbiIgb2JqZWN0Om5pbF07CisgICAgfSk7CisjZW5kaWYKKworICAgIEJFR0lO
X0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKKworICAgIHN0ZDo6bG9ja19ndWFyZDxTdGF0aWNMb2Nr
PiBsb2NrKHByZWZlcnJlZExhbmd1YWdlc011dGV4KTsKKyAgICBWZWN0b3I8U3RyaW5nPiYgdXNl
clByZWZlcnJlZExhbmd1YWdlcyA9IHByZWZlcnJlZExhbmd1YWdlcygpOworCisgICAgaWYgKHVz
ZXJQcmVmZXJyZWRMYW5ndWFnZXMuaXNFbXB0eSgpKSB7CisgICAgICAgIFJldGFpblB0cjxDRkxv
Y2FsZVJlZj4gbG9jYWxlID0gYWRvcHRDRihDRkxvY2FsZUNvcHlDdXJyZW50KCkpOworICAgICAg
ICBOU1N0cmluZyAqY291bnRyeUNvZGUgPSAoTlNTdHJpbmcgKilDRkxvY2FsZUdldFZhbHVlKGxv
Y2FsZS5nZXQoKSwga0NGTG9jYWxlQ291bnRyeUNvZGUpOworICAgICAgICAKKyAgICAgICAgaWYg
KCFpc1ZhbGlkSUNVQ291bnRyeUNvZGUoY291bnRyeUNvZGUpKQorICAgICAgICAgICAgY291bnRy
eUNvZGUgPSBuaWw7CisgICAgICAgIAorICAgICAgICBSZXRhaW5QdHI8Q0ZBcnJheVJlZj4gbGFu
Z3VhZ2VzID0gYWRvcHRDRihDRkxvY2FsZUNvcHlQcmVmZXJyZWRMYW5ndWFnZXMoKSk7CisgICAg
ICAgIENGSW5kZXggbGFuZ3VhZ2VDb3VudCA9IENGQXJyYXlHZXRDb3VudChsYW5ndWFnZXMuZ2V0
KCkpOworICAgICAgICBpZiAoIWxhbmd1YWdlQ291bnQpCisgICAgICAgICAgICB1c2VyUHJlZmVy
cmVkTGFuZ3VhZ2VzLmFwcGVuZCgiZW4iKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBm
b3IgKENGSW5kZXggaSA9IDA7IGkgPCBsYW5ndWFnZUNvdW50OyBpKyspCisgICAgICAgICAgICAg
ICAgdXNlclByZWZlcnJlZExhbmd1YWdlcy5hcHBlbmQoaHR0cFN0eWxlTGFuZ3VhZ2VDb2RlKChO
U1N0cmluZyAqKUNGQXJyYXlHZXRWYWx1ZUF0SW5kZXgobGFuZ3VhZ2VzLmdldCgpLCBpKSwgY291
bnRyeUNvZGUpKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIFZlY3RvcjxTdHJpbmc+IHVzZXJQ
cmVmZXJyZWRMYW5ndWFnZXNDb3B5OworICAgIHVzZXJQcmVmZXJyZWRMYW5ndWFnZXNDb3B5LnJl
c2VydmVJbml0aWFsQ2FwYWNpdHkodXNlclByZWZlcnJlZExhbmd1YWdlcy5zaXplKCkpOworCisg
ICAgZm9yIChhdXRvJiBsYW5ndWFnZSA6IHVzZXJQcmVmZXJyZWRMYW5ndWFnZXMpCisgICAgICAg
IHVzZXJQcmVmZXJyZWRMYW5ndWFnZXNDb3B5LnVuY2hlY2tlZEFwcGVuZChsYW5ndWFnZS5pc29s
YXRlZENvcHkoKSk7CisKKyAgICByZXR1cm4gdXNlclByZWZlcnJlZExhbmd1YWdlc0NvcHk7CisK
KyAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TOworCisgICAgcmV0dXJuIFZlY3RvcjxTdHJp
bmc+KCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdURgpJbmRleDogU291cmNlL1dURi93dGYvUGxh
dGZvcm1Vc2VyUHJlZmVycmVkTGFuZ3VhZ2VzVW5peC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dURi93dGYvUGxhdGZvcm1Vc2VyUHJlZmVycmVkTGFuZ3VhZ2VzVW5peC5jcHAJKHJldmlzaW9u
IDApCisrKyBTb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybVVzZXJQcmVmZXJyZWRMYW5ndWFnZXNVbml4
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDUyIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDA3IEFscCBUb2tlciA8YWxwQGF0b2tlci5jb20+CisgKiBDb3B5cmlnaHQgKEMpIDIwMTYg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBm
cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBp
dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBM
aWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRo
ZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkg
bGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhl
IGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5U
WTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJ
VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICog
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICog
WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmls
ZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0
b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiUGxhdGZvcm1Vc2VyUHJlZmVycmVkTGFuZ3VhZ2VzLmgiCisKKyNpbmNsdWRlIDxsb2Nh
bGUuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+CisKK25hbWVzcGFjZSBXVEYgeworCit2b2lkIHNldFBsYXRmb3JtVXNlclByZWZlcnJl
ZExhbmd1YWdlc0NoYW5nZWRDYWxsYmFjayh2b2lkICgqKSgpKSB7IH0KKworLy8gVXNpbmcgcGFu
Z29fbGFuZ3VhZ2VfZ2V0X2RlZmF1bHQoKSBoZXJlIGlzIG5vdCBhbiBvcHRpb24sIGJlY2F1c2UK
Ky8vIGl0IGRvZXNuJ3Qgc3VwcG9ydCBjaGFuZ2luZyB0aGUgbG9jYWxlIGluIHJ1bnRpbWUsIHNv
IGl0IHJldHVybnMKKy8vIGFsd2F5cyB0aGUgc2FtZSB2YWx1ZS4KK3N0YXRpYyBTdHJpbmcgcGxh
dGZvcm1MYW5ndWFnZSgpCit7CisgICAgU3RyaW5nIGxvY2FsZURlZmF1bHQoc2V0bG9jYWxlKExD
X0NUWVBFLCBudWxscHRyKSk7CisgICAgaWYgKGxvY2FsZURlZmF1bHQuaXNFbXB0eSgpKQorICAg
ICAgICByZXR1cm4gU3RyaW5nKCJjIik7CisKKyAgICBTdHJpbmcgbm9ybWFsaXplZERlZmF1bHQg
PSBsb2NhbGVEZWZhdWx0LmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCk7CisgICAgbm9ybWFsaXpl
ZERlZmF1bHQucmVwbGFjZSgnXycsICctJyk7CisgICAgbm9ybWFsaXplZERlZmF1bHQudHJ1bmNh
dGUobm9ybWFsaXplZERlZmF1bHQuZmluZCgnLicpKTsKKyAgICByZXR1cm4gbm9ybWFsaXplZERl
ZmF1bHQ7Cit9CisKK1ZlY3RvcjxTdHJpbmc+IHBsYXRmb3JtVXNlclByZWZlcnJlZExhbmd1YWdl
cygpCit7CisgICAgcmV0dXJuIHsgcGxhdGZvcm1MYW5ndWFnZSgpIH07Cit9CisKK30gLy8gbmFt
ZXNwYWNlIFdURgpJbmRleDogU291cmNlL1dURi93dGYvUGxhdGZvcm1Vc2VyUHJlZmVycmVkTGFu
Z3VhZ2VzV2luLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybVVzZXJQ
cmVmZXJyZWRMYW5ndWFnZXNXaW4uY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dURi93dGYv
UGxhdGZvcm1Vc2VyUHJlZmVycmVkTGFuZ3VhZ2VzV2luLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDc5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA3LCAyMDE2IEFwcGxlIEluYy4g
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1Vc2VyUHJl
ZmVycmVkTGFuZ3VhZ2VzLmgiCisKKyNpbmNsdWRlIDx3aW5kb3dzLmg+CisjaW5jbHVkZSA8d3Rm
L1ZlY3Rvci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2Ug
V1RGIHsKKwordm9pZCBzZXRQbGF0Zm9ybVVzZXJQcmVmZXJyZWRMYW5ndWFnZXNDaGFuZ2VkQ2Fs
bGJhY2sodm9pZCAoKikoKSkgeyB9CisKK3N0YXRpYyBTdHJpbmcgbG9jYWxlSW5mbyhMQ1RZUEUg
bG9jYWxlVHlwZSwgY29uc3QgU3RyaW5nJiBmYWxsYmFjaykKK3sKKyAgICBMQU5HSUQgbGFuZ0lE
ID0gR2V0VXNlckRlZmF1bHRVSUxhbmd1YWdlKCk7CisgICAgaW50IGxvY2FsZUNoYXJzID0gR2V0
TG9jYWxlSW5mbyhsYW5nSUQsIGxvY2FsZVR5cGUsIDAsIDApOworICAgIGlmICghbG9jYWxlQ2hh
cnMpCisgICAgICAgIHJldHVybiBmYWxsYmFjazsKKyAgICBVQ2hhciogbG9jYWxlTmFtZUJ1ZjsK
KyAgICBTdHJpbmcgbG9jYWxlTmFtZSA9IFN0cmluZzo6Y3JlYXRlVW5pbml0aWFsaXplZChsb2Nh
bGVDaGFycywgbG9jYWxlTmFtZUJ1Zik7CisgICAgbG9jYWxlQ2hhcnMgPSBHZXRMb2NhbGVJbmZv
KGxhbmdJRCwgbG9jYWxlVHlwZSwgbG9jYWxlTmFtZUJ1ZiwgbG9jYWxlQ2hhcnMpOworICAgIGlm
ICghbG9jYWxlQ2hhcnMpCisgICAgICAgIHJldHVybiBmYWxsYmFjazsKKyAgICBpZiAobG9jYWxl
TmFtZS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBmYWxsYmFjazsKKworICAgIGxvY2FsZU5h
bWUudHJ1bmNhdGUobG9jYWxlTmFtZS5sZW5ndGgoKSAtIDEpOworICAgIHJldHVybiBsb2NhbGVO
YW1lOworfQorCitzdGF0aWMgU3RyaW5nIHBsYXRmb3JtTGFuZ3VhZ2UoKQoreworICAgIHN0YXRp
YyBTdHJpbmcgY29tcHV0ZWREZWZhdWx0TGFuZ3VhZ2U7CisgICAgaWYgKCFjb21wdXRlZERlZmF1
bHRMYW5ndWFnZS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBjb21wdXRlZERlZmF1bHRMYW5n
dWFnZTsKKworICAgIFN0cmluZyBsYW5ndWFnZU5hbWUgPSBsb2NhbGVJbmZvKExPQ0FMRV9TSVNP
NjM5TEFOR05BTUUsICJlbiIpOworICAgIFN0cmluZyBjb3VudHJ5TmFtZSA9IGxvY2FsZUluZm8o
TE9DQUxFX1NJU08zMTY2Q1RSWU5BTUUsIFN0cmluZygpKTsKKworICAgIGlmIChjb3VudHJ5TmFt
ZS5pc0VtcHR5KCkpCisgICAgICAgIGNvbXB1dGVkRGVmYXVsdExhbmd1YWdlID0gbGFuZ3VhZ2VO
YW1lOworICAgIGVsc2UKKyAgICAgICAgY29tcHV0ZWREZWZhdWx0TGFuZ3VhZ2UgPSBsYW5ndWFn
ZU5hbWUgKyAnLScgKyBjb3VudHJ5TmFtZTsKKworICAgIHJldHVybiBjb21wdXRlZERlZmF1bHRM
YW5ndWFnZTsKK30KKworVmVjdG9yPFN0cmluZz4gcGxhdGZvcm1Vc2VyUHJlZmVycmVkTGFuZ3Vh
Z2VzKCkKK3sKKyAgICBWZWN0b3I8U3RyaW5nPiB1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzOworICAg
IHVzZXJQcmVmZXJyZWRMYW5ndWFnZXMuYXBwZW5kKHBsYXRmb3JtTGFuZ3VhZ2UoKSk7CisgICAg
cmV0dXJuIHVzZXJQcmVmZXJyZWRMYW5ndWFnZXM7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdURgpJ
bmRleDogU291cmNlL1dURi93dGYvc3BpL2NmL0NGQnVuZGxlU1BJLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dURi93dGYvc3BpL2NmL0NGQnVuZGxlU1BJLmgJKHJldmlzaW9uIDApCisrKyBTb3Vy
Y2UvV1RGL3d0Zi9zcGkvY2YvQ0ZCdW5kbGVTUEkuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDQ0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisj
aWZuZGVmIENGQnVuZGxlU1BJX2gKKyNkZWZpbmUgQ0ZCdW5kbGVTUElfaAorCisjaW5jbHVkZSA8
Q29yZUZvdW5kYXRpb24vQ29yZUZvdW5kYXRpb24uaD4KKworI2lmIFVTRShBUFBMRV9JTlRFUk5B
TF9TREspCisjaW1wb3J0IDxDb3JlRm91bmRhdGlvbi9DRlByaXYuaD4KKyNlbHNlCisjaW5jbHVk
ZSA8d3RmL3NwaS9kYXJ3aW4vWFBDU1BJLmg+CisjZW5kaWYKKworZXh0ZXJuICJDIiB7Cit2b2lk
IF9DRkJ1bmRsZVNldHVwWFBDQm9vdHN0cmFwKHhwY19vYmplY3RfdCBib290c3RyYXApOworCitC
b29sZWFuIENGQnVuZGxlR2V0TG9jYWxpemF0aW9uSW5mb0ZvckxvY2FsaXphdGlvbihDRlN0cmlu
Z1JlZiBsb2NhbGl6YXRpb25OYW1lLCBTSW50MzIgKmxhbmd1YWdlQ29kZSwgU0ludDMyICpyZWdp
b25Db2RlLCBTSW50MzIgKnNjcmlwdENvZGUsIENGU3RyaW5nRW5jb2RpbmcgKnN0cmluZ0VuY29k
aW5nKTsKK0NGU3RyaW5nUmVmIENGQnVuZGxlQ29weUxvY2FsaXphdGlvbkZvckxvY2FsaXphdGlv
bkluZm8oU0ludDMyIGxhbmd1YWdlQ29kZSwgU0ludDMyIHJlZ2lvbkNvZGUsIFNJbnQzMiBzY3Jp
cHRDb2RlLCBDRlN0cmluZ0VuY29kaW5nIHN0cmluZ0VuY29kaW5nKTsKK30KKworI2VuZGlmCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCShyZXZpc2lvbiAyMDA5NjgpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTM2MzQsNyArMzYzNCw2IEBACiAJ
CTkzNEZFOUU1MEI1Q0E1MzkwMDNFNEE3MyAvKiBGaWxlQ2hvb3Nlci5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzRGRTlFNDBCNUNBNTM5MDAzRTRB
NzMgLyogRmlsZUNob29zZXIuY3BwICovOyB9OwogCQk5MzUwMEYzMjEzRkRFM0JFMDA5OUVDMjQg
LyogTlNTY3JvbGxlckltcERldGFpbHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDkzNTAwRjMxMTNGREUzQkUwMDk5RUMyNCAvKiBOU1Njcm9sbGVySW1w
RGV0YWlscy5oICovOyB9OwogCQk5MzUyMDdCRTA5QkQ0MTBBMDBGMjAzOEQgLyogTG9jYWxpemVk
U3RyaW5ncy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
OTM1MjA3QkQwOUJENDEwQTAwRjIwMzhEIC8qIExvY2FsaXplZFN0cmluZ3MuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQk5MzUyMDg0NTA5QkQ0M0I5
MDBGMjAzOEQgLyogTGFuZ3VhZ2UubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA5MzUyMDg0NDA5QkQ0M0I5MDBGMjAzOEQgLyogTGFuZ3VhZ2UubW0gKi87
IH07CiAJCTkzNTM2NzZCMDlBRUQ4OEIwMEQzNUNENiAvKiBTY3JvbGxWaWV3TWFjLm1tIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTM1MzY3NkEwOUFFRDg4
QjAwRDM1Q0Q2IC8qIFNjcm9sbFZpZXdNYWMubW0gKi87IH07CiAJCTkzNUM0NzYzMDlBQzRDRTYw
MEE2QUFCNCAvKiBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzVDNDc2MjA5QUM0Q0U2MDBBNkFBQjQg
LyogTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cy5oICovOyB9OwogCQk5MzVDNDc2ODA5QUM0
RDQzMDBBNkFBQjQgLyogUGxhdGZvcm1LZXlib2FyZEV2ZW50LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzVDNDc2NjA5QUM0RDQzMDBBNkFBQjQgLyog
UGxhdGZvcm1LZXlib2FyZEV2ZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKQEAgLTM3MzQsNyArMzczMyw2IEBACiAJCTkzRjE5OUE4MDgyNDVFNTkw
MDFFOUFCQyAvKiBXZWJDb3JlRnJhbWVWaWV3LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBGNTg3ODU0QzAyREUzNzU5MDFFQTQxMjIgLyogV2ViQ29yZUZy
YW1lVmlldy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTkzRjE5OUI4MDgyNDVFNTkwMDFFOUFCQyAvKiBTY3JvbGxiYXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDN0IyQUY4MDQ1MDgyNDEwMEE4MDAw
RiAvKiBTY3JvbGxiYXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk5M0YxOTlCQjA4MjQ1RTU5MDAxRTlBQkMgLyogV2ViQ29yZUtleWJvYXJkVUlN
b2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCRTk4
M0Q5NTA1MkEyRTBBMDA4OTJEODUgLyogV2ViQ29yZUtleWJvYXJkVUlNb2RlLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJOTNGMTk5QkUwODI0NUU1
OTAwMUU5QUJDIC8qIEJsb2NrRXhjZXB0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNjVBNjQwRjAwNTMzQkIxRjAwODVFNzc3IC8qIEJsb2NrRXhj
ZXB0aW9ucy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTkzRjE5OURFMDgyNDVFNTkwMDFFOUFCQyAvKiBQb3NpdGlvbi5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkU5MUZDOEIwNjEzMzY2NjAwNUUzNzkw
IC8qIFBvc2l0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJOTNGMTk5RTUwODI0NUU1OTAwMUU5QUJDIC8qIEhUTUxDYW52YXNFbGVtZW50Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUY2QTNENjA2
NjNCRjA0MDA0RDI5MTkgLyogSFRNTENhbnZhc0VsZW1lbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5M0YxOTlFQzA4MjQ1RTU5MDAxRTlBQkMg
LyogWFNMU3R5bGVTaGVldC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQkMwNkYyNEEwNkQxOEE3RTAwNEE2RkEzIC8qIFhTTFN0eWxlU2hlZXQuaCAqLzsg
fTsKQEAgLTM3NDYsNyArMzc0NCw2IEBACiAJCTkzRjE5QTlEMDgyNDVFNTkwMDFFOUFCQyAvKiBU
ZXh0UmVzb3VyY2VEZWNvZGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEY1MjNEMjc4MDJERTQzRDcwMTg2MzVDQSAvKiBUZXh0UmVzb3VyY2VEZWNv
ZGVyLmNwcCAqLzsgfTsKIAkJOTNGMTlBQjkwODI0NUU1OTAwMUU5QUJDIC8qIFJhbmdlLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY1MjNEMzAzMDJE
RTQ0NzYwMTg2MzVDQSAvKiBSYW5nZS5jcHAgKi87IH07CiAJCTkzRjE5QUQ1MDgyNDVFNTkwMDFF
OUFCQyAvKiBSZW5kZXJUcmVlQXNUZXh0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDkzOTU1QTQyMDNENzI5MzIwMDg2MzVDRSAvKiBSZW5kZXJUcmVl
QXNUZXh0LmNwcCAqLzsgfTsKLQkJOTNGMTlBRTEwODI0NUU1OTAwMUU5QUJDIC8qIEJsb2NrRXhj
ZXB0aW9ucy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDY1RjgwNjk3MDU0RDlGODYwMDhCRjc3NiAvKiBCbG9ja0V4Y2VwdGlvbnMubW0gKi87IH07CiAJ
CTkzRjE5QUU2MDgyNDVFNTkwMDFFOUFCQyAvKiBTU0xLZXlHZW5lcmF0b3JNYWMuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODRCMkIyNEYwNTZCRjE1
RjAwRDJCNzcxIC8qIFNTTEtleUdlbmVyYXRvck1hYy5jcHAgKi87IH07CiAJCTkzRjE5QUY4MDgy
NDVFNTkwMDFFOUFCQyAvKiBQb3NpdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBCRTkxRkM4QzA2MTMzNjY2MDA1RTM3OTAgLyogUG9zaXRpb24u
Y3BwICovOyB9OwogCQk5M0YxOUFGRDA4MjQ1RTU5MDAxRTlBQkMgLyogSFRNTENhbnZhc0VsZW1l
bnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFG
NkEzRDUwNjYzQkYwNDAwNEQyOTE5IC8qIEhUTUxDYW52YXNFbGVtZW50LmNwcCAqLzsgfTsKQEAg
LTYzNTMsNyArNjM1MCw2IEBACiAJCUUwRkVGMzcyQjQ3QzUzRUFDMUMxRkJFRSAvKiBKU0V2ZW50
U291cmNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEUwRkVGMzcxQjQ3QzUzRUFDMUMxRkJFRSAvKiBKU0V2ZW50U291cmNlLmNwcCAqLzsgfTsKIAkJ
RTEwNzQwMEQwRTc3QkRDMDAwMzNBRjI0IC8qIEpTTWVzc2FnZUNoYW5uZWwuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTEwNzQwMEIwRTc3QkRDMDAw
MzNBRjI0IC8qIEpTTWVzc2FnZUNoYW5uZWwuY3BwICovOyB9OwogCQlFMTA3NDAwRTBFNzdCREMw
MDAzM0FGMjQgLyogSlNNZXNzYWdlQ2hhbm5lbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRTEwNzQwMEMwRTc3QkRDMDAwMzNBRjI0IC8qIEpTTWVzc2Fn
ZUNoYW5uZWwuaCAqLzsgfTsKLQkJRTEwQTM5RTIxQUU4NEU3MTAwQTI5QUUzIC8qIENGQnVuZGxl
U1BJLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTBB
MzlFMTFBRTg0RTcxMDBBMjlBRTMgLyogQ0ZCdW5kbGVTUEkuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMTBCOTM3QzBCNzNDMDBBMDAzRUQ4OTAg
LyogSlNDdXN0b21YUGF0aE5TUmVzb2x2ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEUxMEI5MzdCMEI3M0MwMEEwMDNFRDg5MCAvKiBKU0N1c3RvbVhQ
YXRoTlNSZXNvbHZlci5oICovOyB9OwogCQlFMTBCOTNDMzBCNzNDMjkxMDAzRUQ4OTAgLyogSlND
dXN0b21YUGF0aE5TUmVzb2x2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRTEwQjkzQzIwQjczQzI5MTAwM0VEODkwIC8qIEpTQ3VzdG9tWFBhdGhO
U1Jlc29sdmVyLmNwcCAqLzsgfTsKIAkJRTEwQjlCNkMwQjc0NzU5OTAwM0VEODkwIC8qIE5hdGl2
ZVhQYXRoTlNSZXNvbHZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRTEwQjlCNkEwQjc0NzU5OTAwM0VEODkwIC8qIE5hdGl2ZVhQYXRoTlNSZXNvbHZl
ci5oICovOyB9OwpAQCAtMTAwODksNyArMTAwODUsNiBAQAogCQk2NUEyMTQ2NzA5N0EzMjkxMDBC
OTA1MEEgLyogUGFnZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGFnZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2NUEyMTQ4MjA5N0EzRjUzMDBCOTA1MEEg
LyogRnJhbWVUcmVlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBG
cmFtZVRyZWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2NUEyMTQ4MzA5N0Ez
RjUzMDBCOTA1MEEgLyogRnJhbWVUcmVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBGcmFtZVRyZWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNjVBNjQwRjAw
NTMzQkIxRjAwODVFNzc3IC8qIEJsb2NrRXhjZXB0aW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCbG9ja0V4Y2VwdGlvbnMuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07CiAJCTY1QkYw
MjI5MDk3NDgxNjMwMEM0MzE5NiAvKiBGcmFtZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gRnJhbWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2
NUJGMDIyQTA5NzQ4MTYzMDBDNDMxOTYgLyogRnJhbWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEZyYW1lLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTY1Qzk3
QUYyMDhFQTkwODgwMEFDRDI3MyAvKiBjb25maWcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gY29uZmlnLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IHRhYldpZHRoID0gNDsgdXNlc1RhYnMgPSAwOyB9OwpAQCAtMTAxMjIsNyArMTAxMTcsNiBA
QAogCQk2NURGMzIzNjA5RDFERTY1MDAwQkUzMjUgLyogSlNDYW52YXNQYXR0ZXJuLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0NhbnZhc1BhdHRlcm4uaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNjVERjMyMzYwOUQxREU2NTAwMUJFMzI1IC8qIEpTQ2FudmFz
UHJveHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTQ2FudmFzUHJveHku
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNjVFMEU5NDMxMTMzQzg5RjAwQjRDQjEw
IC8qIEpTRE9NV3JhcHBlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0RP
TVdyYXBwZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNjVGODA2OTcwNTREOUY4
NjAwOEJGNzc2IC8qIEJsb2NrRXhjZXB0aW9ucy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEJsb2NrRXhjZXB0aW9ucy5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07CiAJCTY1
RkVBODY4MDk4MzNBREUwMEJFRDRBQiAvKiBQYWdlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBQYWdlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
Njk3MTAxMDcxQzZCRTE1NTAwMThDN0YxIC8qIEFjY2Vzc2liaWxpdHlTVkdFbGVtZW50LmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFjY2Vzc2liaWxpdHlTVkdFbGVt
ZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNjk3MTAxMDgxQzZCRTE1NTAw
MThDN0YxIC8qIEFjY2Vzc2liaWxpdHlTVkdFbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEFjY2Vzc2liaWxpdHlTVkdFbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC0xMTI5NCw3ICsxMTI4OCw2IEBACiAJCTkzNEZFOUU0MEI1Q0E1MzkwMDNF
NEE3MyAvKiBGaWxlQ2hvb3Nlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBGaWxlQ2hvb3Nlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzNTAw
RjMxMTNGREUzQkUwMDk5RUMyNCAvKiBOU1Njcm9sbGVySW1wRGV0YWlscy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBOU1Njcm9sbGVySW1wRGV0YWlscy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk5MzUyMDdCRDA5QkQ0MTBBMDBGMjAzOEQgLyogTG9jYWxpemVk
U3RyaW5ncy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBMb2NhbGl6ZWRTdHJp
bmdzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTkzNTIwODQ0MDlCRDQzQjkwMEYy
MDM4RCAvKiBMYW5ndWFnZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0
aCA9IExhbmd1YWdlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5MzUzNjc2QTA5
QUVEODhCMDBEMzVDRDYgLyogU2Nyb2xsVmlld01hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLm9iamNwcDsgcGF0aCA9IFNjcm9sbFZpZXdNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTkzNUM0NzYyMDlBQzRDRTYwMEE2QUFCNCAvKiBNb3VzZUV2ZW50V2l0aEhpdFRl
c3RSZXN1bHRzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1vdXNlRXZlbnRX
aXRoSGl0VGVzdFJlc3VsdHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTM1QzQ3
NjYwOUFDNEQ0MzAwQTZBQUI0IC8qIFBsYXRmb3JtS2V5Ym9hcmRFdmVudC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE0Mzk2LDcgKzE0Mzg5LDYgQEAKIAkJRTBGRUYzNzFCNDdD
NTNFQUMxQzFGQkVFIC8qIEpTRXZlbnRTb3VyY2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gSlNFdmVudFNvdXJjZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUUxMDc0MDBCMEU3N0JEQzAwMDMzQUYyNCAvKiBKU01lc3NhZ2VDaGFubmVsLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTTWVzc2FnZUNoYW5uZWwuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMTA3NDAwQzBFNzdCREMwMDAzM0FGMjQg
LyogSlNNZXNzYWdlQ2hhbm5lbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBK
U01lc3NhZ2VDaGFubmVsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUUxMEEzOUUx
MUFFODRFNzEwMEEyOUFFMyAvKiBDRkJ1bmRsZVNQSS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBDRkJ1bmRsZVNQSS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlF
MTBCOTM3QjBCNzNDMDBBMDAzRUQ4OTAgLyogSlNDdXN0b21YUGF0aE5TUmVzb2x2ZXIuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNDdXN0b21YUGF0aE5TUmVzb2x2ZXIuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTEwQjkzQzIwQjczQzI5MTAwM0VEODkwIC8q
IEpTQ3VzdG9tWFBhdGhOU1Jlc29sdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEpTQ3VzdG9tWFBhdGhOU1Jlc29sdmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJRTEwQjlCNkEwQjc0NzU5OTAwM0VEODkwIC8qIE5hdGl2ZVhQYXRoTlNSZXNv
bHZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOYXRpdmVYUGF0aE5TUmVz
b2x2ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE3NTYzLDcgKzE3NTU1LDYg
QEAKIAkJNjUwODZEQTYxOUFDMTcxOTAwOUFGNDZCIC8qIGNmICovID0gewogCQkJaXNhID0gUEJY
R3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKLQkJCQlFMTBBMzlFMTFBRTg0RTcxMDBBMjlBRTMgLyog
Q0ZCdW5kbGVTUEkuaCAqLywKIAkJCQk2NTA4NkRBNzE5QUMxNzE5MDA5QUY0NkIgLyogQ0ZMb2Nh
bGVTUEkuaCAqLywKIAkJCQlBMTBEN0ZFQjFDMjY3NkQxMDBDNkMxMTUgLyogQ0ZOZXR3b3JrQ29u
bmVjdGlvbkNhY2hlU1BJLmggKi8sCiAJCQkJQ0UxMjUyNUExQTFDMDE4MjAwODY0NDgwIC8qIENG
TmV0d29ya1NQSS5oICovLApAQCAtMTc4NDksOCArMTc4NDAsNiBAQAogCQk2NTgyQTE0ODA5OTk5
RDZDMDBCRUVCNkQgLyogbWFjICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJl
biA9ICgKLQkJCQk2NUE2NDBGMDA1MzNCQjFGMDA4NUU3NzcgLyogQmxvY2tFeGNlcHRpb25zLmgg
Ki8sCi0JCQkJNjVGODA2OTcwNTREOUY4NjAwOEJGNzc2IC8qIEJsb2NrRXhjZXB0aW9ucy5tbSAq
LywKIAkJCQlGNTg3ODRGMDAyREUzNzU5MDFFQTQxMjIgLyogQ3Vyc29yTWFjLm1tICovLAogCQkJ
CUE3OTU0NjNEMEI1QzRDODAwMDdCNDM4RiAvKiBEcmFnRGF0YU1hYy5tbSAqLywKIAkJCQlBN0NG
QjNENDBCN0VEMTE4MDA3MEMzMkQgLyogRHJhZ0ltYWdlTWFjLm1tICovLApAQCAtMTc4NjMsNyAr
MTc4NTIsNiBAQAogCQkJCTUxNzlDRTM1MTk1Q0FDN0UwMDE5QzE5OCAvKiBISURHYW1lcGFkUHJv
dmlkZXIuaCAqLywKIAkJCQk5MzVDNDc2RTA5QUM0RDczMDBBNkFBQjQgLyogS2V5RXZlbnRNYWMu
bW0gKi8sCiAJCQkJNTIxRDQ2RjUxMUFFQzk4MTAwNTE0NjEzIC8qIEtpbGxSaW5nTWFjLm1tICov
LAotCQkJCTkzNTIwODQ0MDlCRDQzQjkwMEYyMDM4RCAvKiBMYW5ndWFnZS5tbSAqLywKIAkJCQkw
NkU4MUVENjBBQjVENUU5MDBDODc4MzcgLyogTG9jYWxDdXJyZW50R3JhcGhpY3NDb250ZXh0Lmgg
Ki8sCiAJCQkJMDZFODFFRUIwQUI1REE5NzAwQzg3ODM3IC8qIExvY2FsQ3VycmVudEdyYXBoaWNz
Q29udGV4dC5tbSAqLywKIAkJCQkxNDAyNjQ1RDBBRkRDMTlCMDA1OTE5RTIgLyogTG9nZ2luZ01h
Yy5tbSAqLywKQEAgLTI1MTk4LDcgKzI1MTg2LDYgQEAKIAkJCQkyRURFRjFGNzEyMUIwRUZDMDA3
MjZEQjIgLyogQmxvYlJlZ2lzdHJ5SW1wbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkVCNEJDRDMx
MjFGMDNFMzAwRUM0ODg1IC8qIEJsb2JSZXNvdXJjZUhhbmRsZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJOTc2RDZDN0YxMjJCOEEzRDAwMUZEMUY3IC8qIEJsb2JVUkwuaCBpbiBIZWFkZXJzICovLAot
CQkJCTkzRjE5OUJFMDgyNDVFNTkwMDFFOUFCQyAvKiBCbG9ja0V4Y2VwdGlvbnMuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUJDNUVCNUUxMEU4MUJFODcwMEIyNTk2NSAvKiBCb3JkZXJEYXRhLmggaW4g
SGVhZGVycyAqLywKIAkJCQk1ODk1NTZFRDE4RDRBNDQwMDA3NjRCMDMgLyogQm9yZGVyRWRnZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQkM1RUI1REIwRTgxQjdFQTAwQjI1OTY1IC8qIEJvcmRlclZh
bHVlLmggaW4gSGVhZGVycyAqLywKQEAgLTI1MjY1LDcgKzI1MjUyLDYgQEAKIAkJCQlDREU4QjVG
MTFBNjk3NzhCMDBCNEI2NkEgLyogQ0RNU2Vzc2lvbkNsZWFyS2V5LmggaW4gSGVhZGVycyAqLywK
IAkJCQlDREU1OTU5NzFCRjI2RTIxMDBBMUNCRTggLyogQ0RNU2Vzc2lvbk1lZGlhU291cmNlQVZG
T2JqQy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUZBOTA0Q0ExNzhFNjFGNTAwNEM4QTJEIC8qIENl
cnRpZmljYXRlSW5mby5oIGluIEhlYWRlcnMgKi8sCi0JCQkJRTEwQTM5RTIxQUU4NEU3MTAwQTI5
QUUzIC8qIENGQnVuZGxlU1BJLmggaW4gSGVhZGVycyAqLywKIAkJCQlBMTBEN0ZFQzFDMjY3NkQx
MDBDNkMxMTUgLyogQ0ZOZXR3b3JrQ29ubmVjdGlvbkNhY2hlU1BJLmggaW4gSGVhZGVycyAqLywK
IAkJCQlDRTEyNTI1QjFBMUMwMTgyMDA4NjQ0ODAgLyogQ0ZOZXR3b3JrU1BJLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlFMUE4RTU2NzE3NTUyQjJBMDA3NDg4RTcgLyogQ0ZVUkxFeHRyYXMuaCBpbiBI
ZWFkZXJzICovLApAQCAtMjkxNTksNyArMjkxNDUsNiBAQAogCQkJCTJFREVGMUY2MTIxQjBFRkMw
MDcyNkRCMiAvKiBCbG9iUmVnaXN0cnlJbXBsLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJFQjRC
Q0QyMTIxRjAzRTMwMEVDNDg4NSAvKiBCbG9iUmVzb3VyY2VIYW5kbGUuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJOTc2RDZDN0UxMjJCOEEzRDAwMUZEMUY3IC8qIEJsb2JVUkwuY3BwIGluIFNvdXJj
ZXMgKi8sCi0JCQkJOTNGMTlBRTEwODI0NUU1OTAwMUU5QUJDIC8qIEJsb2NrRXhjZXB0aW9ucy5t
bSBpbiBTb3VyY2VzICovLAogCQkJCTU4QUVFMkY0MThENEJDQ0YwMDIyRTdGRSAvKiBCb3JkZXJF
ZGdlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTZFRDhDMzc5MTgzQkZGOEMwMDlFNTNCRCAvKiBC
b3hTaGFwZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQ0VBNDg1NDA5N0Q5MzAyMDA5NEM5RTQg
LyogYnJlYWtfbGluZXMuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0zMDg5NCw3ICszMDg3OSw2IEBA
CiAJCQkJNDUwQ0VCRjAxNTA3M0JCRTAwMkJCMTQ5IC8qIExhYmVsYWJsZUVsZW1lbnQuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQTQ1NkZBMjYxMUFENEE4MzAwMjBCNDIwIC8qIExhYmVsc05vZGVM
aXN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxODc3MkYxMTI2RTI2MjkwMDNERDU4NiAvKiBM
YW5ndWFnZS5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk5MzUyMDg0NTA5QkQ0M0I5MDBGMjAzOEQg
LyogTGFuZ3VhZ2UubW0gaW4gU291cmNlcyAqLywKIAkJCQkyOTE3QjU2MTE0NzM0OTZDMDA1MkM5
RDAgLyogTGF5ZXJGbHVzaFNjaGVkdWxlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyOTE3QjU2
NjE0NzM0OTk1MDA1MkM5RDAgLyogTGF5ZXJGbHVzaFNjaGVkdWxlck1hYy5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQk3QUEzQTY5RjE5NEI1OUI2MDAxQ0JEMjQgLyogTGF5ZXJQb29sLmNwcCBpbiBT
b3VyY2VzICovLApJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01DdXN0b21Y
UGF0aE5TUmVzb2x2ZXIubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
b2JqYy9ET01DdXN0b21YUGF0aE5TUmVzb2x2ZXIubW0JKHJldmlzaW9uIDIwMDk2OCkKKysrIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NQ3VzdG9tWFBhdGhOU1Jlc29sdmVyLm1tCSh3
b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5j
bHVkZSAiRE9NQ3VzdG9tWFBhdGhOU1Jlc29sdmVyLmgiCiAKLSNpbmNsdWRlICJCbG9ja0V4Y2Vw
dGlvbnMuaCIKKyNpbmNsdWRlIDx3dGYvQmxvY2tPYmpDRXhjZXB0aW9ucy5oPgogI2luY2x1ZGUg
PHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL2lvcy9FZGl0b3JJT1MubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvZWRpdGluZy9pb3MvRWRpdG9ySU9TLm1tCShyZXZpc2lvbiAyMDA5NjgpCisrKyBT
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL2lvcy9FZGl0b3JJT1MubW0JKHdvcmtpbmcgY29weSkKQEAg
LTI2LDcgKzI2LDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJFZGl0b3IuaCIK
IAotI2luY2x1ZGUgIkJsb2NrRXhjZXB0aW9ucy5oIgogI2luY2x1ZGUgIkNhY2hlZEltYWdlLmgi
CiAjaW5jbHVkZSAiQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmgiCiAjaW5jbHVkZSAiQ1NT
UHJpbWl0aXZlVmFsdWVNYXBwaW5ncy5oIgpAQCAtNTgsNiArNTcsNyBAQAogI2luY2x1ZGUgIldB
S0FwcEtpdFN0dWJzLmgiCiAjaW5jbHVkZSAiaHRtbGVkaXRpbmcuaCIKICNpbmNsdWRlICJtYXJr
dXAuaCIKKyNpbmNsdWRlIDx3dGYvQmxvY2tPYmpDRXhjZXB0aW9ucy5oPgogCiBTT0ZUX0xJTktf
RlJBTUVXT1JLKEFwcFN1cHBvcnQpCiBTT0ZUX0xJTksoQXBwU3VwcG9ydCwgQ1BTaGFyZWRSZXNv
dXJjZXNEaXJlY3RvcnksIENGU3RyaW5nUmVmLCAodm9pZCksICgpKQpJbmRleDogU291cmNlL1dl
YkNvcmUvZWRpdGluZy9tYWMvRGljdGlvbmFyeUxvb2t1cC5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL21hYy9EaWN0aW9uYXJ5TG9va3VwLm1tCShyZXZpc2lvbiAyMDA5
NjgpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9EaWN0aW9uYXJ5TG9va3VwLm1tCSh3
b3JraW5nIGNvcHkpCkBAIC0yOCw3ICsyOCw2IEBACiAKICNpZiBQTEFURk9STShNQUMpCiAKLSNp
bXBvcnQgIkJsb2NrRXhjZXB0aW9ucy5oIgogI2ltcG9ydCAiRG9jdW1lbnQuaCIKICNpbXBvcnQg
IkZvY3VzQ29udHJvbGxlci5oIgogI2ltcG9ydCAiRnJhbWUuaCIKQEAgLTQ3LDYgKzQ2LDcgQEAK
ICNpbXBvcnQgIldlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaCIKICNpbXBvcnQgImh0bWxlZGl0aW5n
LmgiCiAjaW1wb3J0IDxQREZLaXQvUERGS2l0Lmg+CisjaW1wb3J0IDx3dGYvQmxvY2tPYmpDRXhj
ZXB0aW9ucy5oPgogI2ltcG9ydCA8d3RmL1JlZlB0ci5oPgogCiBTT0ZUX0xJTktfQ09OU1RBTlRf
TUFZX0ZBSUwoTG9va3VwLCBMVVRlcm1PcHRpb25EaXNhYmxlU2VhcmNoVGVybUluZGljYXRvciwg
TlNTdHJpbmcgKikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0VkaXRvck1hYy5t
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9FZGl0b3JNYWMubW0J
KHJldmlzaW9uIDIwMDk2OCkKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0VkaXRvck1h
Yy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYsNiBAQAogI2ltcG9ydCAiY29uZmlnLmgi
CiAjaW1wb3J0ICJFZGl0b3IuaCIKIAotI2ltcG9ydCAiQmxvY2tFeGNlcHRpb25zLmgiCiAjaW1w
b3J0ICJDU1NQcmltaXRpdmVWYWx1ZU1hcHBpbmdzLmgiCiAjaW1wb3J0ICJDU1NWYWx1ZVBvb2wu
aCIKICNpbXBvcnQgIkNhY2hlZFJlc291cmNlTG9hZGVyLmgiCkBAIC02NSw2ICs2NCw3IEBACiAj
aW1wb3J0ICJXZWJOU0F0dHJpYnV0ZWRTdHJpbmdFeHRyYXMuaCIKICNpbXBvcnQgImh0bWxlZGl0
aW5nLmgiCiAjaW1wb3J0ICJtYXJrdXAuaCIKKyNpbXBvcnQgPHd0Zi9CbG9ja09iakNFeGNlcHRp
b25zLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGFn
ZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzTWVkaWFBRi5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzTWVkaWFBRi5jcHAJKHJldmlzaW9u
IDIwMDk2OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01l
ZGlhQUYuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Miw2ICs0Miw3IEBACiAjaW5jbHVkZSAiVXNl
clN0eWxlU2hlZXRUeXBlcy5oIgogI2luY2x1ZGUgIlZUVEN1ZS5oIgogI2luY2x1ZGUgPHd0Zi9O
ZXZlckRlc3Ryb3llZC5oPgorI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybVVzZXJQcmVmZXJyZWRMYW5n
dWFnZXMuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQv
Q1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BhZ2UvaW9zL0V2ZW50SGFuZGxlcklPUy5tbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wYWdlL2lvcy9FdmVudEhhbmRsZXJJT1MubW0JKHJldmlzaW9uIDIwMDk2
OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvaW9zL0V2ZW50SGFuZGxlcklPUy5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtMjcsNyArMjcsNiBAQAogI2ltcG9ydCAiRXZlbnRIYW5kbGVyLmgiCiAKICNp
bXBvcnQgIkFYT2JqZWN0Q2FjaGUuaCIKLSNpbXBvcnQgIkJsb2NrRXhjZXB0aW9ucy5oIgogI2lt
cG9ydCAiQ2hyb21lLmgiCiAjaW1wb3J0ICJDaHJvbWVDbGllbnQuaCIKICNpbXBvcnQgIkZvY3Vz
Q29udHJvbGxlci5oIgpAQCAtNDIsNiArNDEsNyBAQAogI2ltcG9ydCAiV0FLVmlldy5oIgogI2lt
cG9ydCAiV0FLV2luZG93LmgiCiAjaW1wb3J0ICJXZWJFdmVudC5oIgorI2ltcG9ydCA8d3RmL0Js
b2NrT2JqQ0V4Y2VwdGlvbnMuaD4KICNpbXBvcnQgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2lt
cG9ydCA8d3RmL05vbmNvcHlhYmxlLmg+CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvaW9z
L0ZyYW1lSU9TLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvaW9zL0ZyYW1l
SU9TLm1tCShyZXZpc2lvbiAyMDA5NjgpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL2lvcy9GcmFt
ZUlPUy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjgsNyArMjgsNiBAQAogI2lmIFBMQVRGT1JNKElP
UykKIAogI2ltcG9ydCAiQW5pbWF0aW9uQ29udHJvbGxlci5oIgotI2ltcG9ydCAiQmxvY2tFeGNl
cHRpb25zLmgiCiAjaW1wb3J0ICJET01DU1NTdHlsZURlY2xhcmF0aW9uSW50ZXJuYWwuaCIKICNp
bXBvcnQgIkRPTUNvcmUuaCIKICNpbXBvcnQgIkRPTUludGVybmFsLmgiCkBAIC03MCw2ICs2OSw3
IEBACiAjaW1wb3J0ICJXQUtXaW5kb3cuaCIKICNpbXBvcnQgIldlYkNvcmVTeXN0ZW1JbnRlcmZh
Y2UuaCIKICNpbXBvcnQgPHJ1bnRpbWUvSlNMb2NrLmg+CisjaW1wb3J0IDx3dGYvQmxvY2tPYmpD
RXhjZXB0aW9ucy5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTo6SFRNTE5hbWVzOwogdXNp
bmcgbmFtZXNwYWNlIFdURjo6VW5pY29kZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvbWFj
L0Nocm9tZU1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9DaHJv
bWVNYWMubW0JKHJldmlzaW9uIDIwMDk2OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0No
cm9tZU1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjAsOCArMjAsOCBAQAogI2ltcG9ydCAiY29u
ZmlnLmgiCiAjaW1wb3J0ICJDaHJvbWUuaCIKIAotI2ltcG9ydCAiQmxvY2tFeGNlcHRpb25zLmgi
CiAjaW1wb3J0ICJDaHJvbWVDbGllbnQuaCIKKyNpbXBvcnQgPHd0Zi9CbG9ja09iakNFeGNlcHRp
b25zLmg+CiAKICNpZiBQTEFURk9STShJT1MpCiAjaW5jbHVkZSAiV0FLUmVzcG9uZGVyLmgiCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MYW5ndWFnZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGFuZ3VhZ2UuY3BwCShyZXZpc2lvbiAyMDA5NjgpCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MYW5ndWFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEwLCAyMDEzIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMCwgMjAxMywgMjAxNiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5j
bHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisjaW5jbHVkZSA8d3RmL1BsYXRmb3JtVXNlclBy
ZWZlcnJlZExhbmd1YWdlcy5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbmNsdWRl
IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApAQCAtMzcsNiArMzgsMTYgQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCitzdGF0aWMgcmVnaXN0ZXJMYW5ndWFnZURpZENoYW5nZUNhbGxiYWNrSWZO
ZWNlc3NhcnkoKQoreworICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlOworICAgIHN0ZDo6
Y2FsbF9vbmNlKAorICAgICAgICBvbmNlLAorICAgICAgICBbXSB7CisgICAgICAgICAgICBzZXRQ
bGF0Zm9ybVVzZXJQcmVmZXJyZWRMYW5ndWFnZXNDaGFuZ2VkQ2FsbGJhY2sobGFuZ3VhZ2VEaWRD
aGFuZ2UpOworICAgICAgICB9KTsKK30KKwogdHlwZWRlZiBIYXNoTWFwPHZvaWQqLCBMYW5ndWFn
ZUNoYW5nZU9ic2VydmVyRnVuY3Rpb24+IE9ic2VydmVyTWFwOwogc3RhdGljIE9ic2VydmVyTWFw
JiBvYnNlcnZlck1hcCgpCiB7CkBAIC00Niw2ICs1Nyw3IEBAIHN0YXRpYyBPYnNlcnZlck1hcCYg
b2JzZXJ2ZXJNYXAoKQogCiB2b2lkIGFkZExhbmd1YWdlQ2hhbmdlT2JzZXJ2ZXIodm9pZCogY29u
dGV4dCwgTGFuZ3VhZ2VDaGFuZ2VPYnNlcnZlckZ1bmN0aW9uIGN1c3RvbU9ic2VydmVyKQogewor
ICAgIHJlZ2lzdGVyTGFuZ3VhZ2VEaWRDaGFuZ2VDYWxsYmFja0lmTmVjZXNzYXJ5KCk7CiAgICAg
b2JzZXJ2ZXJNYXAoKS5zZXQoY29udGV4dCwgY3VzdG9tT2JzZXJ2ZXIpOwogfQogCkBAIC04Nywx
MyArOTksMTQgQEAgdm9pZCBvdmVycmlkZVVzZXJQcmVmZXJyZWRMYW5ndWFnZXMoY29ucwogICAg
IHByZWZlcnJlZExhbmd1YWdlc092ZXJyaWRlKCkgPSBvdmVycmlkZTsKICAgICBsYW5ndWFnZURp
ZENoYW5nZSgpOwogfQotICAgIAorCiBWZWN0b3I8U3RyaW5nPiB1c2VyUHJlZmVycmVkTGFuZ3Vh
Z2VzKCkKIHsKICAgICBWZWN0b3I8U3RyaW5nPiYgb3ZlcnJpZGUgPSBwcmVmZXJyZWRMYW5ndWFn
ZXNPdmVycmlkZSgpOwogICAgIGlmICghb3ZlcnJpZGUuaXNFbXB0eSgpKQogICAgICAgICByZXR1
cm4gb3ZlcnJpZGU7CiAgICAgCisgICAgcmVnaXN0ZXJMYW5ndWFnZURpZENoYW5nZUNhbGxiYWNr
SWZOZWNlc3NhcnkoKTsKICAgICByZXR1cm4gcGxhdGZvcm1Vc2VyUHJlZmVycmVkTGFuZ3VhZ2Vz
KCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xhbmd1YWdlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGFuZ3VhZ2UuaAkocmV2aXNpb24gMjAw
OTY4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGFuZ3VhZ2UuaAkod29ya2luZyBjb3B5
KQpAQCAtNDIsOCArNDIsNiBAQCB0eXBlZGVmIHZvaWQgKCpMYW5ndWFnZUNoYW5nZU9ic2VydmVy
RnVuCiBXRUJDT1JFX0VYUE9SVCB2b2lkIGFkZExhbmd1YWdlQ2hhbmdlT2JzZXJ2ZXIodm9pZCog
Y29udGV4dCwgTGFuZ3VhZ2VDaGFuZ2VPYnNlcnZlckZ1bmN0aW9uKTsKIFdFQkNPUkVfRVhQT1JU
IHZvaWQgcmVtb3ZlTGFuZ3VhZ2VDaGFuZ2VPYnNlcnZlcih2b2lkKiBjb250ZXh0KTsKIAotVmVj
dG9yPFN0cmluZz4gcGxhdGZvcm1Vc2VyUHJlZmVycmVkTGFuZ3VhZ2VzKCk7Ci0KIFN0cmluZyBk
aXNwbGF5TmFtZUZvckxhbmd1YWdlTG9jYWxlKGNvbnN0IFN0cmluZyYpOwogCiAvLyBDYWxsZWQg
ZnJvbSBwbGF0Zm9ybSBzcGVjaWZpYyBjb2RlIHdoZW4gdGhlIHVzZXIncyBwcmVmZXJyZWQgbGFu
Z3VhZ2UocykgY2hhbmdlLgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvQ29u
dGVudEZpbHRlclVuYmxvY2tIYW5kbGVyQ29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY29jb2EvQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyQ29jb2EubW0J
KHJldmlzaW9uIDIwMDk2OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL0NvbnRl
bnRGaWx0ZXJVbmJsb2NrSGFuZGxlckNvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yOCwxMCAr
MjgsMTAgQEAKIAogI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKIAotI2ltcG9ydCAiQmxv
Y2tFeGNlcHRpb25zLmgiCiAjaW1wb3J0ICJDb250ZW50RmlsdGVyLmgiCiAjaW1wb3J0ICJMb2dn
aW5nLmgiCiAjaW1wb3J0ICJSZXNvdXJjZVJlcXVlc3QuaCIKKyNpbXBvcnQgPHd0Zi9CbG9ja09i
akNFeGNlcHRpb25zLmg+CiAKICNpZiAhTE9HX0RJU0FCTEVECiAjaW1wb3J0IDx3dGYvdGV4dC9D
U3RyaW5nLmg+CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGT2JqQy5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbmJh
bmRUZXh0VHJhY2tQcml2YXRlQVZGT2JqQy5tbQkocmV2aXNpb24gMjAwOTY4KQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW5iYW5kVGV4dFRy
YWNrUHJpdmF0ZUFWRk9iakMubW0JKHdvcmtpbmcgY29weSkKQEAgLTI5LDcgKzI5LDYgQEAKIAog
I2ltcG9ydCAiSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRk9iakMuaCIKIAotI2ltcG9ydCAiQmxv
Y2tFeGNlcHRpb25zLmgiCiAjaW1wb3J0ICJGbG9hdENvbnZlcnNpb24uaCIKICNpbXBvcnQgIklu
YmFuZFRleHRUcmFja1ByaXZhdGUuaCIKICNpbXBvcnQgIkluYmFuZFRleHRUcmFja1ByaXZhdGVB
VkYuaCIKQEAgLTM3LDYgKzM2LDcgQEAKICNpbXBvcnQgIlNvZnRMaW5raW5nLmgiCiAjaW1wb3J0
IDxBVkZvdW5kYXRpb24vQVZGb3VuZGF0aW9uLmg+CiAjaW1wb3J0IDxvYmpjL3J1bnRpbWUuaD4K
KyNpbXBvcnQgPHd0Zi9CbG9ja09iakNFeGNlcHRpb25zLmg+CiAKIFNPRlRfTElOS19GUkFNRVdP
UktfT1BUSU9OQUwoQVZGb3VuZGF0aW9uKQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25PYmpDLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0J
KHJldmlzaW9uIDIwMDk2OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0JKHdv
cmtpbmcgY29weSkKQEAgLTMzLDcgKzMzLDYgQEAKICNpbXBvcnQgIkF1ZGlvU291cmNlUHJvdmlk
ZXJBVkZPYmpDLmgiCiAjaW1wb3J0ICJBdWRpb1RyYWNrUHJpdmF0ZUFWRk9iakMuaCIKICNpbXBv
cnQgIkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmgiCi0jaW1wb3J0ICJCbG9ja0V4Y2VwdGlvbnMu
aCIKICNpbXBvcnQgIkNETVNlc3Npb25BVkZvdW5kYXRpb25PYmpDLmgiCiAjaW1wb3J0ICJDb29r
aWUuaCIKICNpbXBvcnQgIkV4Y2VwdGlvbkNvZGVQbGFjZWhvbGRlci5oIgpAQCAtNzgsNiArNzcs
NyBAQAogI2ltcG9ydCA8cnVudGltZS9VaW50MTZBcnJheS5oPgogI2ltcG9ydCA8cnVudGltZS9V
aW50MzJBcnJheS5oPgogI2ltcG9ydCA8cnVudGltZS9VaW50OEFycmF5Lmg+CisjaW1wb3J0IDx3
dGYvQmxvY2tPYmpDRXhjZXB0aW9ucy5oPgogI2ltcG9ydCA8d3RmL0N1cnJlbnRUaW1lLmg+CiAj
aW1wb3J0IDx3dGYvTGlzdEhhc2hTZXQuaD4KICNpbXBvcnQgPHd0Zi9OZXZlckRlc3Ryb3llZC5o
PgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJp
dmF0ZUFWRk9iakMubW0JKHJldmlzaW9uIDIwMDk2OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpD
Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw3ICsyOCw2IEBACiAKICNpZiBFTkFCTEUoTUVESUFf
U09VUkNFKSAmJiBVU0UoQVZGT1VOREFUSU9OKQogCi0jaW1wb3J0ICJCbG9ja0V4Y2VwdGlvbnMu
aCIKICNpbXBvcnQgIkNETVNlc3Npb25BVkNvbnRlbnRLZXlTZXNzaW9uLmgiCiAjaW1wb3J0ICJD
RE1TZXNzaW9uTWVkaWFTb3VyY2VBVkZPYmpDLmgiCiAjaW1wb3J0ICJFeGNlcHRpb25Db2RlUGxh
Y2Vob2xkZXIuaCIKQEAgLTUwLDYgKzQ5LDcgQEAKICNpbXBvcnQgPG9iamMvcnVudGltZS5oPgog
I2ltcG9ydCA8d3RmL3RleHQvQXRvbWljU3RyaW5nLmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9DU3Ry
aW5nLmg+CisjaW1wb3J0IDx3dGYvQmxvY2tPYmpDRXhjZXB0aW9ucy5oPgogI2ltcG9ydCA8d3Rm
L0hhc2hDb3VudGVkU2V0Lmg+CiAjaW1wb3J0IDx3dGYvTWFpblRocmVhZC5oPgogI2ltcG9ydCA8
d3RmL1dlYWtQdHIuaD4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
L2NvY29hL1BsYXRmb3JtQ0FGaWx0ZXJzQ29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxhdGZvcm1DQUZpbHRlcnNDb2NvYS5t
bQkocmV2aXNpb24gMjAwOTY4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2EvY29jb2EvUGxhdGZvcm1DQUZpbHRlcnNDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtMjYs
MTIgKzI2LDEyIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW1wb3J0ICJQbGF0Zm9ybUNBRmls
dGVycy5oIgogCi0jaW1wb3J0ICJCbG9ja0V4Y2VwdGlvbnMuaCIKICNpbXBvcnQgIkZsb2F0Q29u
dmVyc2lvbi5oIgogI2ltcG9ydCAiTGVuZ3RoRnVuY3Rpb25zLmgiIC8vIFRoaXMgaXMgYSBsYXll
cmluZyB2aW9sYXRpb24uCiAjaW1wb3J0ICJQbGF0Zm9ybUNBTGF5ZXJDb2NvYS5oIgogI2ltcG9y
dCAiUXVhcnR6Q29yZVNQSS5oIgogI2ltcG9ydCA8UXVhcnR6Q29yZS9RdWFydHpDb3JlLmg+Cisj
aW1wb3J0IDx3dGYvQmxvY2tPYmpDRXhjZXB0aW9ucy5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2Ev
UGxhdGZvcm1DQUxheWVyQ29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxhdGZvcm1DQUxheWVyQ29jb2EubW0JKHJldmlzaW9u
IDIwMDk2OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1Bs
YXRmb3JtQ0FMYXllckNvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw3ICsyNyw2IEBACiAj
aW1wb3J0ICJQbGF0Zm9ybUNBTGF5ZXJDb2NvYS5oIgogCiAjaW1wb3J0ICJBbmltYXRpb25VdGls
aXRpZXMuaCIKLSNpbXBvcnQgIkJsb2NrRXhjZXB0aW9ucy5oIgogI2ltcG9ydCAiR3JhcGhpY3ND
b250ZXh0LmgiCiAjaW1wb3J0ICJHcmFwaGljc0xheWVyQ0EuaCIKICNpbXBvcnQgIkxlbmd0aEZ1
bmN0aW9ucy5oIgpAQCAtNDgsNiArNDcsNyBAQAogI2ltcG9ydCA8QVZGb3VuZGF0aW9uL0FWRm91
bmRhdGlvbi5oPgogI2ltcG9ydCA8UXVhcnR6Q29yZS9RdWFydHpDb3JlLmg+CiAjaW1wb3J0IDxv
YmpjL3J1bnRpbWUuaD4KKyNpbXBvcnQgPHd0Zi9CbG9ja09iakNFeGNlcHRpb25zLmg+CiAjaW1w
b3J0IDx3dGYvQ3VycmVudFRpbWUuaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KIApJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udENvY29hLm1tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRD
b2NvYS5tbQkocmV2aXNpb24gMjAwOTY4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvRm9udENvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw3ICsyNyw2IEBA
CiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIkZvbnQuaCIKIAotI2ltcG9ydCAiQmxvY2tF
eGNlcHRpb25zLmgiCiAjaW1wb3J0ICJDb2xvci5oIgogI2ltcG9ydCAiQ29yZUdyYXBoaWNzU1BJ
LmgiCiAjaW1wb3J0ICJDb3JlVGV4dFNQSS5oIgpAQCAtNDAsNiArMzksNyBAQAogI2ltcG9ydCA8
ZmxvYXQuaD4KICNpbXBvcnQgPHVuaWNvZGUvdWNoYXIuaD4KICNpbXBvcnQgPHd0Zi9Bc3NlcnRp
b25zLmg+CisjaW1wb3J0IDx3dGYvQmxvY2tPYmpDRXhjZXB0aW9ucy5oPgogI2ltcG9ydCA8d3Rm
L05ldmVyRGVzdHJveWVkLmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAjaW1wb3J0IDx3
dGYvU3RkTGliRXh0cmFzLmg+CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9tYWMvQ29sb3JNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvbWFjL0NvbG9yTWFjLm1tCShyZXZpc2lvbiAyMDA5NjgpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29sb3JNYWMubW0JKHdvcmtpbmcgY29weSkKQEAg
LTI2LDcgKzI2LDcgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiQ29sb3JNYWMuaCIK
IAotI2ltcG9ydCA8V2ViQ29yZS9CbG9ja0V4Y2VwdGlvbnMuaD4KKyNpbXBvcnQgPHd0Zi9CbG9j
a09iakNFeGNlcHRpb25zLmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAjaW1wb3J0IDx3
dGYvU3RkTGliRXh0cmFzLmg+CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL21hYy9HcmFwaGljc0NvbnRleHQzRE1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvR3JhcGhpY3NDb250ZXh0M0RNYWMubW0JKHJldmlz
aW9uIDIwMDk2OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9HcmFw
aGljc0NvbnRleHQzRE1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMzIsNyArMzIsNyBAQAogI2lu
Y2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNESU9TLmgiCiAjZW5kaWYKIAotI2ltcG9ydCAiQmxvY2tF
eGNlcHRpb25zLmgiCisjaW1wb3J0IDx3dGYvQmxvY2tPYmpDRXhjZXB0aW9ucy5oPgogCiAjaW5j
bHVkZSAiQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5oIgogI2luY2x1ZGUgPENvcmVHcmFwaGljcy9D
R0JpdG1hcENvbnRleHQuaD4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L21hYy9NZWRpYVBsYXllclByaXZhdGVRVEtpdC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQubW0JKHJl
dmlzaW9uIDIwMDk2OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9N
ZWRpYVBsYXllclByaXZhdGVRVEtpdC5tbQkod29ya2luZyBjb3B5KQpAQCAtMjksNyArMjksNiBA
QAogCiAjaW1wb3J0ICJNZWRpYVBsYXllclByaXZhdGVRVEtpdC5oIgogCi0jaW1wb3J0ICJCbG9j
a0V4Y2VwdGlvbnMuaCIKICNpbXBvcnQgIkRvY3VtZW50TG9hZGVyLmgiCiAjaW1wb3J0ICJHcmFw
aGljc0NvbnRleHQuaCIKICNpbXBvcnQgIlVSTC5oIgpAQCAtNDMsNiArNDIsNyBAQAogI2ltcG9y
dCAiV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oIgogI2ltcG9ydCA8UVRLaXQvUVRLaXQuaD4KICNp
bXBvcnQgPG9iamMvcnVudGltZS5oPgorI2ltcG9ydCA8d3RmL0Jsb2NrT2JqQ0V4Y2VwdGlvbnMu
aD4KICNpbXBvcnQgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCiBTT0ZUX0xJTktfRlJBTUVXT1JL
KFFUS2l0KQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtU3BlZWNo
U3ludGhlc2l6ZXJJT1MubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW9zL1BsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJJT1MubW0JKHJldmlzaW9uIDIwMDk2OCkKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVySU9T
Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yOSwxMSArMjksMTEgQEAKIAogI2lmIEVOQUJMRShTUEVF
Q0hfU1lOVEhFU0lTKQogCi0jaW5jbHVkZSAiQmxvY2tFeGNlcHRpb25zLmgiCiAjaW5jbHVkZSAi
UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVNw
ZWVjaFN5bnRoZXNpc1ZvaWNlLmgiCiAjaW5jbHVkZSAiU29mdExpbmtpbmcuaCIKICNpbmNsdWRl
IDxBVkZvdW5kYXRpb24vQVZTcGVlY2hTeW50aGVzaXMuaD4KKyNpbmNsdWRlIDx3dGYvQmxvY2tP
YmpDRXhjZXB0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KIAogU09GVF9MSU5L
X0ZSQU1FV09SSyhBVkZvdW5kYXRpb24pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
b3MvU2Nyb2xsVmlld0lPUy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pb3MvU2Nyb2xsVmlld0lPUy5tbQkocmV2aXNpb24gMjAwOTY4KQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW9zL1Njcm9sbFZpZXdJT1MubW0JKHdvcmtpbmcgY29weSkKQEAgLTI2LDcg
KzI2LDYgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiU2Nyb2xsVmlldy5oIgogCi0j
aW1wb3J0ICJCbG9ja0V4Y2VwdGlvbnMuaCIKICNpbXBvcnQgIkZsb2F0UmVjdC5oIgogI2ltcG9y
dCAiSW50UmVjdC5oIgogI2ltcG9ydCAiTG9nZ2luZy5oIgpAQCAtMzgsNiArMzcsNyBAQAogI2lt
cG9ydCAiV0FLV2luZG93LmgiCiAjaW1wb3J0ICJXS1ZpZXdQcml2YXRlLmgiCiAjaW1wb3J0ICJX
ZWJDb3JlRnJhbWVWaWV3LmgiCisjaW1wb3J0IDx3dGYvQmxvY2tPYmpDRXhjZXB0aW9ucy5oPgog
I2ltcG9ydCA8d3RmL0N1cnJlbnRUaW1lLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2lkZ2V0SU9TLm1tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XaWRnZXRJT1MubW0JKHJldmlzaW9uIDIwMDk2
OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XaWRnZXRJT1MubW0JKHdvcmtpbmcg
Y29weSkKQEAgLTI2LDcgKzI2LDYgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiV2lk
Z2V0LmgiCiAKLSNpbXBvcnQgIkJsb2NrRXhjZXB0aW9ucy5oIgogI2ltcG9ydCAiQ3Vyc29yLmgi
CiAjaW1wb3J0ICJEb2N1bWVudC5oIgogI2ltcG9ydCAiRm9udENhc2NhZGUuaCIKQEAgLTQwLDYg
KzM5LDcgQEAKICNpbXBvcnQgIldBS1dpbmRvdy5oIgogI2ltcG9ydCAiV2ViQ29yZUZyYW1lVmll
dy5oIgogI2ltcG9ydCAiV2ViQ29yZVZpZXcuaCIKKyNpbXBvcnQgPHd0Zi9CbG9ja09iakNFeGNl
cHRpb25zLmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAKIEBpbnRlcmZhY2UgTlNWaWV3
IChXZWJTZXRTZWxlY3RlZE1ldGhvZHMpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
YWMvQmxvY2tFeGNlcHRpb25zLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWFjL0Jsb2NrRXhjZXB0aW9ucy5oCShyZXZpc2lvbiAyMDA5NjgpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tYWMvQmxvY2tFeGNlcHRpb25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTEs
MzIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwMyBBcHBsZSBJbmMuICBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0
OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8K
LQotI2ltcG9ydCA8Rm91bmRhdGlvbi9OU0V4Y2VwdGlvbi5oPgotCi1XRUJDT1JFX0VYUE9SVCBO
T19SRVRVUk5fRFVFX1RPX0FTU0VSVCB2b2lkIFJlcG9ydEJsb2NrZWRPYmpDRXhjZXB0aW9uKE5T
RXhjZXB0aW9uICopOwotCi0jZGVmaW5lIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUyBAdHJ5
IHsKLSNkZWZpbmUgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUyB9IEBjYXRjaChOU0V4Y2VwdGlv
biAqbG9jYWxFeGNlcHRpb24pIHsgUmVwb3J0QmxvY2tlZE9iakNFeGNlcHRpb24obG9jYWxFeGNl
cHRpb24pOyB9Ci0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9CbG9ja0V4Y2Vw
dGlvbnMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0Jsb2Nr
RXhjZXB0aW9ucy5tbQkocmV2aXNpb24gMjAwOTY4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWFjL0Jsb2NrRXhjZXB0aW9ucy5tbQkod29ya2luZyBjb3B5KQpAQCAtMSwzOCArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
Ci0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNp
bXBvcnQgImNvbmZpZy5oIgotI2ltcG9ydCAiQmxvY2tFeGNlcHRpb25zLmgiCi0KLSNpbXBvcnQg
PHd0Zi9Bc3NlcnRpb25zLmg+Ci0KLXZvaWQgUmVwb3J0QmxvY2tlZE9iakNFeGNlcHRpb24oTlNF
eGNlcHRpb24gKmV4Y2VwdGlvbikKLXsKLSNpZiBBU1NFUlRfRElTQUJMRUQKLSAgICBOU0xvZyhA
IioqKiBXZWJLaXQgZGlzY2FyZGluZyBleGNlcHRpb246IDwlQD4gJUAiLCBbZXhjZXB0aW9uIG5h
bWVdLCBbZXhjZXB0aW9uIHJlYXNvbl0pOwotI2Vsc2UKLSAgICBBU1NFUlRfV0lUSF9NRVNTQUdF
KDAsICJVbmNhdWdodCBleGNlcHRpb24gLSAlQCIsIGV4Y2VwdGlvbik7Ci0jZW5kaWYKLX0KSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9DdXJzb3JNYWMubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0N1cnNvck1hYy5tbQkocmV2aXNpb24gMjAw
OTY4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0N1cnNvck1hYy5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtMjYsOCArMjYsOCBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJD
dXJzb3IuaCIKIAotI2ltcG9ydCAiQmxvY2tFeGNlcHRpb25zLmgiCiAjaW1wb3J0ICJXZWJDb3Jl
U3lzdGVtSW50ZXJmYWNlLmgiCisjaW1wb3J0IDx3dGYvQmxvY2tPYmpDRXhjZXB0aW9ucy5oPgog
I2ltcG9ydCA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCiBAaW50ZXJmYWNlIFdlYkNvcmVDdXJzb3JC
dW5kbGUgOiBOU09iamVjdCB7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9M
YW5ndWFnZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvTGFu
Z3VhZ2UubW0JKHJldmlzaW9uIDIwMDk2OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21h
Yy9MYW5ndWFnZS5tbQkod29ya2luZyBjb3B5KQpAQCAtMSwxNzIgKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAwMywgMjAwNSwgMjAwNiwgMjAxMCwgMjAxMSwgMjAxNiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbXBvcnQgImNvbmZpZy5oIgotI2lt
cG9ydCAiTGFuZ3VhZ2UuaCIKLQotI2ltcG9ydCAiQmxvY2tFeGNlcHRpb25zLmgiCi0jaW1wb3J0
ICJDRkJ1bmRsZVNQSS5oIgotI2ltcG9ydCAiV2ViQ29yZU5TU3RyaW5nRXh0cmFzLmgiCi0jaW1w
b3J0IDxtdXRleD4KLSNpbXBvcnQgPHVuaWNvZGUvdWxvYy5oPgotI2ltcG9ydCA8d3RmL0Fzc2Vy
dGlvbnMuaD4KLSNpbXBvcnQgPHd0Zi9Mb2NrLmg+Ci0jaW1wb3J0IDx3dGYvTmV2ZXJEZXN0cm95
ZWQuaD4KLSNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KLSNpbXBvcnQgPHd0Zi90ZXh0L1dURlN0
cmluZy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXN0YXRpYyBTdGF0aWNMb2NrIHByZWZl
cnJlZExhbmd1YWdlc011dGV4OwotCi1zdGF0aWMgVmVjdG9yPFN0cmluZz4mIHByZWZlcnJlZExh
bmd1YWdlcygpCi17Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFZlY3RvcjxTdHJpbmc+PiBs
YW5ndWFnZXM7Ci0gICAgcmV0dXJuIGxhbmd1YWdlczsKLX0KLQotfQotCi1AaW50ZXJmYWNlIFdl
Ykxhbmd1YWdlQ2hhbmdlT2JzZXJ2ZXIgOiBOU09iamVjdAotQGVuZAotCi1AaW1wbGVtZW50YXRp
b24gV2ViTGFuZ3VhZ2VDaGFuZ2VPYnNlcnZlcgotCi0rICh2b2lkKWxhbmd1YWdlUHJlZmVyZW5j
ZXNEaWRDaGFuZ2U6KE5TTm90aWZpY2F0aW9uICopbm90aWZpY2F0aW9uCi17Ci0gICAgVU5VU0VE
X1BBUkFNKG5vdGlmaWNhdGlvbik7Ci0KLSAgICB7Ci0gICAgICAgIHN0ZDo6bG9ja19ndWFyZDxT
dGF0aWNMb2NrPiBsb2NrKFdlYkNvcmU6OnByZWZlcnJlZExhbmd1YWdlc011dGV4KTsKLSAgICAg
ICAgV2ViQ29yZTo6cHJlZmVycmVkTGFuZ3VhZ2VzKCkuY2xlYXIoKTsKLSAgICB9Ci0KLSAgICBX
ZWJDb3JlOjpsYW5ndWFnZURpZENoYW5nZSgpOwotfQotCi1AZW5kCi0KLW5hbWVzcGFjZSBXZWJD
b3JlIHsKLQotc3RhdGljIFN0cmluZyBodHRwU3R5bGVMYW5ndWFnZUNvZGUoTlNTdHJpbmcgKmxh
bmd1YWdlLCBOU1N0cmluZyAqY291bnRyeSkKLXsKLSAgICBTSW50MzIgbGFuZ3VhZ2VDb2RlOwot
ICAgIFNJbnQzMiByZWdpb25Db2RlOyAKLSAgICBTSW50MzIgc2NyaXB0Q29kZTsgCi0gICAgQ0ZT
dHJpbmdFbmNvZGluZyBzdHJpbmdFbmNvZGluZzsKLSAgICAKLSAgICBib29sIGxhbmd1YWdlRGlk
U3BlY2lmeUV4cGxpY2l0VmFyaWFudCA9IFtsYW5ndWFnZSByYW5nZU9mQ2hhcmFjdGVyRnJvbVNl
dDpbTlNDaGFyYWN0ZXJTZXQgY2hhcmFjdGVyU2V0V2l0aENoYXJhY3RlcnNJblN0cmluZzpAIi1f
Il1dLmxvY2F0aW9uICE9IE5TTm90Rm91bmQ7Ci0KLSAgICAvLyBGSVhNRTogVGhpcyB0cmFuc2Zv
cm1hdGlvbiBpcyB2ZXJ5IHdyb25nOgotICAgIC8vIDEuIFRoZXJlIGlzIG5vIHJlYXNvbiB3aHkg
Q0ZCdW5kbGUgbG9jYWxpemF0aW9uIG5hbWVzIHdvdWxkIGJlIGF0IGFsbCByZWxhdGVkIHRvIGxh
bmd1YWdlIG5hbWVzIGFzIHVzZWQgb24gdGhlIFdlYi4KLSAgICAvLyAyLiBTY3JpcHQgTWFuYWdl
ciBjb2RlcyBjYW5ub3QgcmVwcmVzZW50IGFsbCBsYW5ndWFnZXMgdGhhdCBhcmUgbm93IHN1cHBv
cnRlZCBieSB0aGUgcGxhdGZvcm0sIHNvIHRoZSBjb252ZXJzaW9uIGlzIGxvc3N5LgotICAgIC8v
IDMuIFRoaXMgc2hvdWxkIHByb2JhYmx5IG1hdGNoIHdoYXQgaXMgc2VudCBieSB0aGUgbmV0d29y
ayBsYXllciBhcyBBY2NlcHQtTGFuZ3VhZ2UsIGJ1dCBjdXJyZW50bHksIHRoYXQncyBpbXBsZW1l
bnRlZCBzZXBhcmF0ZWx5LgotICAgIENGQnVuZGxlR2V0TG9jYWxpemF0aW9uSW5mb0ZvckxvY2Fs
aXphdGlvbigoQ0ZTdHJpbmdSZWYpbGFuZ3VhZ2UsICZsYW5ndWFnZUNvZGUsICZyZWdpb25Db2Rl
LCAmc2NyaXB0Q29kZSwgJnN0cmluZ0VuY29kaW5nKTsKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdS
ZWY+IHByZWZlcnJlZExhbmd1YWdlQ29kZSA9IGFkb3B0Q0YoQ0ZCdW5kbGVDb3B5TG9jYWxpemF0
aW9uRm9yTG9jYWxpemF0aW9uSW5mbyhsYW5ndWFnZUNvZGUsIHJlZ2lvbkNvZGUsIHNjcmlwdENv
ZGUsIHN0cmluZ0VuY29kaW5nKSk7Ci0gICAgaWYgKHByZWZlcnJlZExhbmd1YWdlQ29kZSkKLSAg
ICAgICAgbGFuZ3VhZ2UgPSAoTlNTdHJpbmcgKilwcmVmZXJyZWRMYW5ndWFnZUNvZGUuZ2V0KCk7
Ci0KLSAgICAvLyBNYWtlIHRoZSBzdHJpbmcgbG93ZXJjYXNlLgotICAgIE5TU3RyaW5nICpsb3dl
cmNhc2VMYW5ndWFnZUNvZGUgPSBbbGFuZ3VhZ2UgbG93ZXJjYXNlU3RyaW5nXTsKLSAgICBOU1N0
cmluZyAqbG93ZXJjYXNlQ291bnRyeUNvZGUgPSBbY291bnRyeSBsb3dlcmNhc2VTdHJpbmddOwot
ICAgIAotICAgIC8vIElmIHdlIHNlZSBhICJfIiBhZnRlciBhIDItbGV0dGVyIGxhbmd1YWdlIGNv
ZGU6Ci0gICAgLy8gSWYgdGhlIGNvdW50cnkgaXMgdmFsaWQgYW5kIHRoZSBsYW5ndWFnZSBkaWQg
bm90IHNwZWNpZnkgYSB2YXJpYW50LCByZXBsYWNlIHRoZSAiXyIgYW5kCi0gICAgLy8gd2hhdGV2
ZXIgY29tZXMgYWZ0ZXIgaXQgd2l0aCAiLSIgZm9sbG93ZWQgYnkgdGhlIGNvdW50cnkgY29kZS4K
LSAgICAvLyBPdGhlcndpc2UsIHJlcGxhY2UgdGhlICJfIiB3aXRoIGEgIi0iIGFuZCB1c2Ugd2hh
dGV2ZXIgY291bnRyeQotICAgIC8vIENGQnVuZGxlQ29weUxvY2FsaXphdGlvbkZvckxvY2FsaXph
dGlvbkluZm8oKSByZXR1cm5lZC4KLSAgICBpZiAoW2xvd2VyY2FzZUxhbmd1YWdlQ29kZSBsZW5n
dGhdID49IDMgJiYgW2xvd2VyY2FzZUxhbmd1YWdlQ29kZSBjaGFyYWN0ZXJBdEluZGV4OjJdID09
ICdfJykgewotICAgICAgICBpZiAoY291bnRyeSAmJiAhbGFuZ3VhZ2VEaWRTcGVjaWZ5RXhwbGlj
aXRWYXJpYW50KQotICAgICAgICAgICAgcmV0dXJuIFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0
OkAiJUAtJUAiLCBbbG93ZXJjYXNlTGFuZ3VhZ2VDb2RlIHN1YnN0cmluZ1dpdGhSYW5nZTpOU01h
a2VSYW5nZSgwLCAyKV0sIGxvd2VyY2FzZUNvdW50cnlDb2RlXTsKLSAgICAgICAgCi0gICAgICAg
IC8vIEZhbGwgYmFjayB0byBvbGRlciBiZWhhdmlvciwgd2hpY2ggdXNlZCB0aGUgb3JpZ2luYWwg
bGFuZ3VhZ2UtYmFzZWQgY29kZSBidXQganVzdCBjaGFuZ2VkCi0gICAgICAgIC8vIHRoZSAiXyIg
dG8gYSAiLSIuCi0gICAgICAgIFJldGFpblB0cjxOU011dGFibGVTdHJpbmc+IG11dGFibGVMYW5n
dWFnZUNvZGUgPSBhZG9wdE5TKFtsb3dlcmNhc2VMYW5ndWFnZUNvZGUgbXV0YWJsZUNvcHldKTsK
LSAgICAgICAgW211dGFibGVMYW5ndWFnZUNvZGUuZ2V0KCkgcmVwbGFjZUNoYXJhY3RlcnNJblJh
bmdlOk5TTWFrZVJhbmdlKDIsIDEpIHdpdGhTdHJpbmc6QCItIl07Ci0gICAgICAgIHJldHVybiBt
dXRhYmxlTGFuZ3VhZ2VDb2RlLmdldCgpOwotICAgIH0KLQotICAgIHJldHVybiBsb3dlcmNhc2VM
YW5ndWFnZUNvZGU7Ci19Ci0KLXN0YXRpYyBib29sIGlzVmFsaWRJQ1VDb3VudHJ5Q29kZShOU1N0
cmluZyogY291bnRyeUNvZGUpCi17Ci0gICAgaWYgKCFjb3VudHJ5Q29kZSkKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgIGNvbnN0IGNoYXIqIGNvbnN0KiBjb3VudHJpZXMgPSB1bG9jX2dldElT
T0NvdW50cmllcygpOwotICAgIGNvbnN0IGNoYXIqIGNvdW50cnlVVEY4ID0gW2NvdW50cnlDb2Rl
IFVURjhTdHJpbmddOwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGNvdW50cmllc1tpXTsgKytp
KSB7Ci0gICAgICAgIGNvbnN0IGNoYXIqIHBvc3NpYmxlQ291bnRyeSA9IGNvdW50cmllc1tpXTsK
LSAgICAgICAgaWYgKCFzdHJjbXAoY291bnRyeVVURjgsIHBvc3NpYmxlQ291bnRyeSkpCi0gICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi1WZWN0
b3I8U3RyaW5nPiBwbGF0Zm9ybVVzZXJQcmVmZXJyZWRMYW5ndWFnZXMoKQotewotI2lmIFBMQVRG
T1JNKE1BQykKLSAgICBzdGF0aWMgZGlzcGF0Y2hfb25jZV90IG9uY2VUb2tlbjsKLSAgICBkaXNw
YXRjaF9vbmNlKCZvbmNlVG9rZW4sIF57Ci0gICAgICAgIFtbTlNEaXN0cmlidXRlZE5vdGlmaWNh
dGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXSBhZGRPYnNlcnZlcjpbV2ViTGFuZ3VhZ2VDaGFuZ2VP
YnNlcnZlciBzZWxmXSBzZWxlY3RvcjpAc2VsZWN0b3IobGFuZ3VhZ2VQcmVmZXJlbmNlc0RpZENo
YW5nZTopIG5hbWU6QCJBcHBsZUxhbmd1YWdlUHJlZmVyZW5jZXNDaGFuZ2VkTm90aWZpY2F0aW9u
IiBvYmplY3Q6bmlsXTsKLSAgICB9KTsKLSNlbmRpZgotCi0gICAgQkVHSU5fQkxPQ0tfT0JKQ19F
WENFUFRJT05TOwotCi0gICAgc3RkOjpsb2NrX2d1YXJkPFN0YXRpY0xvY2s+IGxvY2socHJlZmVy
cmVkTGFuZ3VhZ2VzTXV0ZXgpOwotICAgIFZlY3RvcjxTdHJpbmc+JiB1c2VyUHJlZmVycmVkTGFu
Z3VhZ2VzID0gcHJlZmVycmVkTGFuZ3VhZ2VzKCk7Ci0KLSAgICBpZiAodXNlclByZWZlcnJlZExh
bmd1YWdlcy5pc0VtcHR5KCkpIHsKLSAgICAgICAgUmV0YWluUHRyPENGTG9jYWxlUmVmPiBsb2Nh
bGUgPSBhZG9wdENGKENGTG9jYWxlQ29weUN1cnJlbnQoKSk7Ci0gICAgICAgIE5TU3RyaW5nICpj
b3VudHJ5Q29kZSA9IChOU1N0cmluZyAqKUNGTG9jYWxlR2V0VmFsdWUobG9jYWxlLmdldCgpLCBr
Q0ZMb2NhbGVDb3VudHJ5Q29kZSk7Ci0gICAgICAgIAotICAgICAgICBpZiAoIWlzVmFsaWRJQ1VD
b3VudHJ5Q29kZShjb3VudHJ5Q29kZSkpCi0gICAgICAgICAgICBjb3VudHJ5Q29kZSA9IG5pbDsK
LSAgICAgICAgCi0gICAgICAgIFJldGFpblB0cjxDRkFycmF5UmVmPiBsYW5ndWFnZXMgPSBhZG9w
dENGKENGTG9jYWxlQ29weVByZWZlcnJlZExhbmd1YWdlcygpKTsKLSAgICAgICAgQ0ZJbmRleCBs
YW5ndWFnZUNvdW50ID0gQ0ZBcnJheUdldENvdW50KGxhbmd1YWdlcy5nZXQoKSk7Ci0gICAgICAg
IGlmICghbGFuZ3VhZ2VDb3VudCkKLSAgICAgICAgICAgIHVzZXJQcmVmZXJyZWRMYW5ndWFnZXMu
YXBwZW5kKCJlbiIpOwotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIGZvciAoQ0ZJbmRleCBp
ID0gMDsgaSA8IGxhbmd1YWdlQ291bnQ7IGkrKykKLSAgICAgICAgICAgICAgICB1c2VyUHJlZmVy
cmVkTGFuZ3VhZ2VzLmFwcGVuZChodHRwU3R5bGVMYW5ndWFnZUNvZGUoKE5TU3RyaW5nICopQ0ZB
cnJheUdldFZhbHVlQXRJbmRleChsYW5ndWFnZXMuZ2V0KCksIGkpLCBjb3VudHJ5Q29kZSkpOwot
ICAgICAgICB9Ci0gICAgfQotCi0gICAgVmVjdG9yPFN0cmluZz4gdXNlclByZWZlcnJlZExhbmd1
YWdlc0NvcHk7Ci0gICAgdXNlclByZWZlcnJlZExhbmd1YWdlc0NvcHkucmVzZXJ2ZUluaXRpYWxD
YXBhY2l0eSh1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzLnNpemUoKSk7Ci0KLSAgICBmb3IgKGF1dG8m
IGxhbmd1YWdlIDogdXNlclByZWZlcnJlZExhbmd1YWdlcykKLSAgICAgICAgdXNlclByZWZlcnJl
ZExhbmd1YWdlc0NvcHkudW5jaGVja2VkQXBwZW5kKGxhbmd1YWdlLmlzb2xhdGVkQ29weSgpKTsK
LQotICAgIHJldHVybiB1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzQ29weTsKLQotICAgIEVORF9CTE9D
S19PQkpDX0VYQ0VQVElPTlM7Ci0KLSAgICByZXR1cm4gVmVjdG9yPFN0cmluZz4oKTsKLX0KLQot
fQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbEFuaW1hdG9yTWFjLm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxBbmltYXRv
ck1hYy5tbQkocmV2aXNpb24gMjAwOTY4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFj
L1Njcm9sbEFuaW1hdG9yTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw3ICsyOSw2IEBACiAK
ICNpbmNsdWRlICJTY3JvbGxBbmltYXRvck1hYy5oIgogCi0jaW5jbHVkZSAiQmxvY2tFeGNlcHRp
b25zLmgiCiAjaW5jbHVkZSAiRmxvYXRQb2ludC5oIgogI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXIu
aCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCkBAIC00Miw2ICs0MSw3IEBACiAjaW5jbHVkZSAiU2Ny
b2xsYmFyVGhlbWVNYWMuaCIKICNpbmNsdWRlICJUZXh0U3RyZWFtLmgiCiAjaW5jbHVkZSAiV2Vi
Q29yZVN5c3RlbUludGVyZmFjZS5oIgorI2luY2x1ZGUgPHd0Zi9CbG9ja09iakNFeGNlcHRpb25z
Lmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tYWMvU2Nyb2xsVmlld01hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsVmlld01hYy5tbQkocmV2aXNpb24gMjAwOTY4KQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbFZpZXdNYWMubW0JKHdvcmtpbmcgY29weSkK
QEAgLTI2LDEzICsyNiwxMyBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJTY3JvbGxW
aWV3LmgiCiAKLSNpbXBvcnQgIkJsb2NrRXhjZXB0aW9ucy5oIgogI2ltcG9ydCAiRmxvYXRSZWN0
LmgiCiAjaW1wb3J0ICJGbG9hdFNpemUuaCIKICNpbXBvcnQgIkludFJlY3QuaCIKICNpbXBvcnQg
IkxvZ2dpbmcuaCIKICNpbXBvcnQgIk5vdEltcGxlbWVudGVkLmgiCiAjaW1wb3J0ICJXZWJDb3Jl
RnJhbWVWaWV3LmgiCisjaW1wb3J0IDx3dGYvQmxvY2tPYmpDRXhjZXB0aW9ucy5oPgogCiBAaW50
ZXJmYWNlIE5TU2Nyb2xsVmlldyAoKQogLSAoTlNFZGdlSW5zZXRzKWNvbnRlbnRJbnNldHM7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsYmFyVGhlbWVNYWMubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbGJhclRoZW1lTWFj
Lm1tCShyZXZpc2lvbiAyMDA5NjgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Ny
b2xsYmFyVGhlbWVNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDYgQEAKICNpbmNs
dWRlICJjb25maWcuaCIKICNpbmNsdWRlICJTY3JvbGxiYXJUaGVtZU1hYy5oIgogCi0jaW5jbHVk
ZSAiQmxvY2tFeGNlcHRpb25zLmgiCiAjaW5jbHVkZSAiQ29sb3JNYWMuaCIKICNpbmNsdWRlICJH
cmFwaGljc0xheWVyLmgiCiAjaW5jbHVkZSAiSW1hZ2VCdWZmZXIuaCIKQEAgLTM4LDYgKzM3LDcg
QEAKICNpbmNsdWRlICJTY3JvbGxWaWV3LmgiCiAjaW5jbHVkZSAiV2ViQ29yZVN5c3RlbUludGVy
ZmFjZS5oIgogI2luY2x1ZGUgPENhcmJvbi9DYXJib24uaD4KKyNpbmNsdWRlIDx3dGYvQmxvY2tP
YmpDRXhjZXB0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3Rm
L05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1RoZW1lTWFjLm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9UaGVtZU1hYy5tbQkocmV2aXNpb24gMjAwOTY4KQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1RoZW1lTWFjLm1tCSh3b3JraW5nIGNvcHkp
CkBAIC0yNyw3ICsyNyw2IEBACiAjaW1wb3J0ICJUaGVtZU1hYy5oIgogCiAjaW1wb3J0ICJBWE9i
amVjdENhY2hlLmgiCi0jaW1wb3J0ICJCbG9ja0V4Y2VwdGlvbnMuaCIKICNpbXBvcnQgIkdyYXBo
aWNzQ29udGV4dC5oIgogI2ltcG9ydCAiSW1hZ2VCdWZmZXIuaCIKICNpbXBvcnQgIkxvY2FsQ3Vy
cmVudEdyYXBoaWNzQ29udGV4dC5oIgpAQCAtMzUsNiArMzQsNyBAQAogI2ltcG9ydCAiU2Nyb2xs
Vmlldy5oIgogI2ltcG9ydCAiV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oIgogI2ltcG9ydCA8Q2Fy
Ym9uL0NhcmJvbi5oPgorI2ltcG9ydCA8d3RmL0Jsb2NrT2JqQ0V4Y2VwdGlvbnMuaD4KICNpbXBv
cnQgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2ltcG9ydCA8d3RmL1N0ZExpYkV4dHJhcy5oPgog
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2lkZ2V0TWFjLm1tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XaWRnZXRNYWMubW0JKHJldmlzaW9u
IDIwMDk2OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XaWRnZXRNYWMubW0JKHdv
cmtpbmcgY29weSkKQEAgLTI2LDggKzI2LDYgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9y
dCAiV2lkZ2V0LmgiCiAKLQotI2ltcG9ydCAiQmxvY2tFeGNlcHRpb25zLmgiCiAjaW1wb3J0ICJD
aHJvbWUuaCIKICNpbXBvcnQgIkN1cnNvci5oIgogI2ltcG9ydCAiRG9jdW1lbnQuaCIKQEAgLTQw
LDYgKzM4LDcgQEAKICNpbXBvcnQgIlJ1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5oIgogI2ltcG9y
dCAiV2ViQ29yZUZyYW1lVmlldy5oIgogI2ltcG9ydCAiV2ViQ29yZVZpZXcuaCIKKyNpbXBvcnQg
PHd0Zi9CbG9ja09iakNFeGNlcHRpb25zLmg+CiAjaW1wb3J0IDx3dGYvUmVmLmg+CiAjaW1wb3J0
IDx3dGYvUmV0YWluUHRyLmg+CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL21hYy9BVlZpZGVvQ2FwdHVyZVNvdXJjZS5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZWaWRlb0NhcHR1cmVTb3VyY2UubW0J
KHJldmlzaW9uIDIwMDk2OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L21hYy9BVlZpZGVvQ2FwdHVyZVNvdXJjZS5tbQkod29ya2luZyBjb3B5KQpAQCAtMjksNyArMjks
NiBAQAogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pICYmIFVTRShBVkZPVU5EQVRJT04pCiAKICNp
bXBvcnQgIkFWQ2FwdHVyZURldmljZU1hbmFnZXIuaCIKLSNpbXBvcnQgIkJsb2NrRXhjZXB0aW9u
cy5oIgogI2ltcG9ydCAiR3JhcGhpY3NDb250ZXh0Q0cuaCIKICNpbXBvcnQgIkltYWdlQnVmZmVy
LmgiCiAjaW1wb3J0ICJJbnRSZWN0LmgiCkBAIC00MSw2ICs0MCw3IEBACiAjaW1wb3J0ICJSZWFs
dGltZU1lZGlhU291cmNlU2V0dGluZ3MuaCIKICNpbXBvcnQgPEFWRm91bmRhdGlvbi9BVkZvdW5k
YXRpb24uaD4KICNpbXBvcnQgPG9iamMvcnVudGltZS5oPgorI2ltcG9ydCA8d3RmL0Jsb2NrT2Jq
Q0V4Y2VwdGlvbnMuaD4KIAogI2ltcG9ydCAiQ29yZU1lZGlhU29mdExpbmsuaCIKICNpbXBvcnQg
IkNvcmVWaWRlb1NvZnRMaW5rLmgiCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL21hYy9Db29raWVKYXJNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9tYWMvQ29va2llSmFyTWFjLm1tCShyZXZpc2lvbiAyMDA5NjgpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9Db29raWVKYXJNYWMubW0JKHdvcmtp
bmcgY29weSkKQEAgLTI2LDEwICsyNiwxMCBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0
ICJQbGF0Zm9ybUNvb2tpZUphci5oIgogCi0jaW1wb3J0ICJCbG9ja0V4Y2VwdGlvbnMuaCIKICNp
bXBvcnQgIkNGTmV0d29ya1NQSS5oIgogI2ltcG9ydCAiTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmgi
CiAjaW1wb3J0ICJXZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmgiCisjaW1wb3J0IDx3dGYvQmxvY2tP
YmpDRXhjZXB0aW9ucy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBzdGF0aWMgTlNIVFRQQ29v
a2llU3RvcmFnZSAqY29va2llU3RvcmFnZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mKTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlRXJyb3JN
YWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMv
UmVzb3VyY2VFcnJvck1hYy5tbQkocmV2aXNpb24gMjAwOTY4KQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VFcnJvck1hYy5tbQkod29ya2luZyBjb3B5KQpA
QCAtMjYsMTAgKzI2LDEwIEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIlJlc291cmNl
RXJyb3IuaCIKIAotI2ltcG9ydCAiQmxvY2tFeGNlcHRpb25zLmgiCiAjaW1wb3J0ICJVUkwuaCIK
ICNpbXBvcnQgPENvcmVGb3VuZGF0aW9uL0NGRXJyb3IuaD4KICNpbXBvcnQgPEZvdW5kYXRpb24v
Rm91bmRhdGlvbi5oPgorI2ltcG9ydCA8d3RmL0Jsb2NrT2JqQ0V4Y2VwdGlvbnMuaD4KIAogI2lm
IFBMQVRGT1JNKElPUykgJiYgVVNFKENGTkVUV09SSykKICNpbXBvcnQgPENGTmV0d29yay9DRlNv
Y2tldFN0cmVhbVByaXYuaD4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
bWFjL1Jlc291cmNlSGFuZGxlTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlSGFuZGxlTWFjLm1tCShyZXZpc2lvbiAyMDA5Njgp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZUhhbmRsZU1h
Yy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjgsNyArMjgsNiBAQAogCiAjaW1wb3J0ICJBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZS5oIgogI2ltcG9ydCAiQXV0aGVudGljYXRpb25NYWMuaCIKLSNpbXBv
cnQgIkJsb2NrRXhjZXB0aW9ucy5oIgogI2ltcG9ydCAiQ0ZOZXR3b3JrU1BJLmgiCiAjaW1wb3J0
ICJDb29raWVTdG9yYWdlLmgiCiAjaW1wb3J0ICJDcmVkZW50aWFsU3RvcmFnZS5oIgpAQCAtNTMs
NiArNTIsNyBAQAogI2ltcG9ydCAiU3luY2hyb25vdXNMb2FkZXJDbGllbnQuaCIKICNpbXBvcnQg
IldlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaCIKICNpbXBvcnQgIldlYkNvcmVVUkxSZXNwb25zZS5o
IgorI2ltcG9ydCA8d3RmL0Jsb2NrT2JqQ0V4Y2VwdGlvbnMuaD4KICNpbXBvcnQgPHd0Zi9SZWYu
aD4KICNpbXBvcnQgPHd0Zi9TY2hlZHVsZVBhaXIuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L0Jhc2U2
NC5oPgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3BpL2NmL0NGQnVuZGxlU1BJLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3BpL2NmL0NGQnVuZGxlU1BJ
LmgJKHJldmlzaW9uIDIwMDk2OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NwaS9jZi9D
RkJ1bmRsZVNQSS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDQ0ICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
LSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpZm5kZWYgQ0ZCdW5kbGVTUElf
aAotI2RlZmluZSBDRkJ1bmRsZVNQSV9oCi0KLSNpbmNsdWRlIDxDb3JlRm91bmRhdGlvbi9Db3Jl
Rm91bmRhdGlvbi5oPgotCi0jaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKLSNpbXBvcnQgPENv
cmVGb3VuZGF0aW9uL0NGUHJpdi5oPgotI2Vsc2UKLSNpbmNsdWRlIDx3dGYvc3BpL2Rhcndpbi9Y
UENTUEkuaD4KLSNlbmRpZgotCi1leHRlcm4gIkMiIHsKLXZvaWQgX0NGQnVuZGxlU2V0dXBYUENC
b290c3RyYXAoeHBjX29iamVjdF90IGJvb3RzdHJhcCk7Ci0KLUJvb2xlYW4gQ0ZCdW5kbGVHZXRM
b2NhbGl6YXRpb25JbmZvRm9yTG9jYWxpemF0aW9uKENGU3RyaW5nUmVmIGxvY2FsaXphdGlvbk5h
bWUsIFNJbnQzMiAqbGFuZ3VhZ2VDb2RlLCBTSW50MzIgKnJlZ2lvbkNvZGUsIFNJbnQzMiAqc2Ny
aXB0Q29kZSwgQ0ZTdHJpbmdFbmNvZGluZyAqc3RyaW5nRW5jb2RpbmcpOwotQ0ZTdHJpbmdSZWYg
Q0ZCdW5kbGVDb3B5TG9jYWxpemF0aW9uRm9yTG9jYWxpemF0aW9uSW5mbyhTSW50MzIgbGFuZ3Vh
Z2VDb2RlLCBTSW50MzIgcmVnaW9uQ29kZSwgU0ludDMyIHNjcmlwdENvZGUsIENGU3RyaW5nRW5j
b2Rpbmcgc3RyaW5nRW5jb2RpbmcpOwotfQotCi0jZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3VuaXgvTGFuZ3VhZ2VVbml4LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS91bml4L0xhbmd1YWdlVW5peC5jcHAJKHJldmlzaW9uIDIwMDk2OCkKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3VuaXgvTGFuZ3VhZ2VVbml4LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMSw0OSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA3IEFscCBUb2tl
ciA8YWxwQGF0b2tlci5jb20+Ci0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7
IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0
ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYXMgcHVi
bGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogdmVyc2lv
biAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9u
LgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0
IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2
ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhh
dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlCi0gKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElC
LiAgSWYgbm90LCB3cml0ZSB0bwotICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5j
LiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAqIEJvc3RvbiwgTUEgMDIxMTAt
MTMwMSwgVVNBLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJMYW5ndWFn
ZS5oIgotCi0jaW5jbHVkZSA8bG9jYWxlLmg+Ci0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgotI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLS8v
IFVzaW5nIHBhbmdvX2xhbmd1YWdlX2dldF9kZWZhdWx0KCkgaGVyZSBpcyBub3QgYW4gb3B0aW9u
LCBiZWNhdXNlCi0vLyBpdCBkb2Vzbid0IHN1cHBvcnQgY2hhbmdpbmcgdGhlIGxvY2FsZSBpbiBy
dW50aW1lLCBzbyBpdCByZXR1cm5zCi0vLyBhbHdheXMgdGhlIHNhbWUgdmFsdWUuCi1zdGF0aWMg
U3RyaW5nIHBsYXRmb3JtTGFuZ3VhZ2UoKQotewotICAgIFN0cmluZyBsb2NhbGVEZWZhdWx0KHNl
dGxvY2FsZShMQ19DVFlQRSwgbnVsbHB0cikpOwotICAgIGlmIChsb2NhbGVEZWZhdWx0LmlzRW1w
dHkoKSkKLSAgICAgICAgcmV0dXJuIFN0cmluZygiYyIpOwotCi0gICAgU3RyaW5nIG5vcm1hbGl6
ZWREZWZhdWx0ID0gbG9jYWxlRGVmYXVsdC5jb252ZXJ0VG9BU0NJSUxvd2VyY2FzZSgpOwotICAg
IG5vcm1hbGl6ZWREZWZhdWx0LnJlcGxhY2UoJ18nLCAnLScpOwotICAgIG5vcm1hbGl6ZWREZWZh
dWx0LnRydW5jYXRlKG5vcm1hbGl6ZWREZWZhdWx0LmZpbmQoJy4nKSk7Ci0gICAgcmV0dXJuIG5v
cm1hbGl6ZWREZWZhdWx0OwotfQotCi1WZWN0b3I8U3RyaW5nPiBwbGF0Zm9ybVVzZXJQcmVmZXJy
ZWRMYW5ndWFnZXMoKQotewotICAgIHJldHVybiB7IHBsYXRmb3JtTGFuZ3VhZ2UoKSB9OwotfQot
Ci19CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vTGFuZ3VhZ2VXaW4uY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9MYW5ndWFnZVdpbi5jcHAJ
KHJldmlzaW9uIDIwMDk2OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9MYW5ndWFn
ZVdpbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNzcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAwNyBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2lu
Y2x1ZGUgIkxhbmd1YWdlLmgiCi0KLSNpbmNsdWRlIDx3aW5kb3dzLmg+Ci0jaW5jbHVkZSA8d3Rm
L1ZlY3Rvci5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgotCi1uYW1lc3BhY2Ug
V2ViQ29yZSB7Ci0KLXN0YXRpYyBTdHJpbmcgbG9jYWxlSW5mbyhMQ1RZUEUgbG9jYWxlVHlwZSwg
Y29uc3QgU3RyaW5nJiBmYWxsYmFjaykKLXsKLSAgICBMQU5HSUQgbGFuZ0lEID0gR2V0VXNlckRl
ZmF1bHRVSUxhbmd1YWdlKCk7Ci0gICAgaW50IGxvY2FsZUNoYXJzID0gR2V0TG9jYWxlSW5mbyhs
YW5nSUQsIGxvY2FsZVR5cGUsIDAsIDApOwotICAgIGlmICghbG9jYWxlQ2hhcnMpCi0gICAgICAg
IHJldHVybiBmYWxsYmFjazsKLSAgICBVQ2hhciogbG9jYWxlTmFtZUJ1ZjsKLSAgICBTdHJpbmcg
bG9jYWxlTmFtZSA9IFN0cmluZzo6Y3JlYXRlVW5pbml0aWFsaXplZChsb2NhbGVDaGFycywgbG9j
YWxlTmFtZUJ1Zik7Ci0gICAgbG9jYWxlQ2hhcnMgPSBHZXRMb2NhbGVJbmZvKGxhbmdJRCwgbG9j
YWxlVHlwZSwgbG9jYWxlTmFtZUJ1ZiwgbG9jYWxlQ2hhcnMpOwotICAgIGlmICghbG9jYWxlQ2hh
cnMpCi0gICAgICAgIHJldHVybiBmYWxsYmFjazsKLSAgICBpZiAobG9jYWxlTmFtZS5pc0VtcHR5
KCkpCi0gICAgICAgIHJldHVybiBmYWxsYmFjazsKLQotICAgIGxvY2FsZU5hbWUudHJ1bmNhdGUo
bG9jYWxlTmFtZS5sZW5ndGgoKSAtIDEpOwotICAgIHJldHVybiBsb2NhbGVOYW1lOwotfQotCi1z
dGF0aWMgU3RyaW5nIHBsYXRmb3JtTGFuZ3VhZ2UoKQotewotICAgIHN0YXRpYyBTdHJpbmcgY29t
cHV0ZWREZWZhdWx0TGFuZ3VhZ2U7Ci0gICAgaWYgKCFjb21wdXRlZERlZmF1bHRMYW5ndWFnZS5p
c0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBjb21wdXRlZERlZmF1bHRMYW5ndWFnZTsKLQotICAg
IFN0cmluZyBsYW5ndWFnZU5hbWUgPSBsb2NhbGVJbmZvKExPQ0FMRV9TSVNPNjM5TEFOR05BTUUs
ICJlbiIpOwotICAgIFN0cmluZyBjb3VudHJ5TmFtZSA9IGxvY2FsZUluZm8oTE9DQUxFX1NJU08z
MTY2Q1RSWU5BTUUsIFN0cmluZygpKTsKLQotICAgIGlmIChjb3VudHJ5TmFtZS5pc0VtcHR5KCkp
Ci0gICAgICAgIGNvbXB1dGVkRGVmYXVsdExhbmd1YWdlID0gbGFuZ3VhZ2VOYW1lOwotICAgIGVs
c2UKLSAgICAgICAgY29tcHV0ZWREZWZhdWx0TGFuZ3VhZ2UgPSBsYW5ndWFnZU5hbWUgKyAnLScg
KyBjb3VudHJ5TmFtZTsKLQotICAgIHJldHVybiBjb21wdXRlZERlZmF1bHRMYW5ndWFnZTsKLX0K
LQotVmVjdG9yPFN0cmluZz4gcGxhdGZvcm1Vc2VyUHJlZmVycmVkTGFuZ3VhZ2VzKCkKLXsKLSAg
ICBWZWN0b3I8U3RyaW5nPiB1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzOwotICAgIHVzZXJQcmVmZXJy
ZWRMYW5ndWFnZXMuYXBwZW5kKHBsYXRmb3JtTGFuZ3VhZ2UoKSk7Ci0gICAgcmV0dXJuIHVzZXJQ
cmVmZXJyZWRMYW5ndWFnZXM7Ci19Ci0KLX0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>279100</attachid>
            <date>2016-05-16 21:31:15 -0700</date>
            <delta_ts>2016-05-16 22:06:35 -0700</delta_ts>
            <desc>more of it compiles than ever before</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>93556</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyMDA5NjgpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkod29ya2luZyBjb3B5KQpAQCAtODM2OSw3ICs4MzY5LDcgQEAKIAkJCSk7CiAJCQlydW5P
bmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJCXNoZWxsUGF0aCA9IC9iaW4v
c2g7Ci0JCQlzaGVsbFNjcmlwdCA9ICJzZXQgLWVcblxuaWYgWyBcIiR7QUNUSU9OfVwiID0gXCJp
bnN0YWxsaGRyc1wiIF07IHRoZW5cbiAgICBleGl0IDA7XG5maVxuXG5pZiBbIC1mIC4uLy4uL1Rv
b2xzL1NjcmlwdHMvY2hlY2stZm9yLWluYXBwcm9wcmlhdGUtb2JqYy1jbGFzcy1uYW1lcyBdOyB0
aGVuXG4gICAgLi4vLi4vVG9vbHMvU2NyaXB0cy9jaGVjay1mb3ItaW5hcHByb3ByaWF0ZS1vYmpj
LWNsYXNzLW5hbWVzIEpTXG5maSI7CisJCQlzaGVsbFNjcmlwdCA9ICJzZXQgLWVcblxuaWYgWyBc
IiR7QUNUSU9OfVwiID0gXCJpbnN0YWxsaGRyc1wiIF07IHRoZW5cbiAgICBleGl0IDA7XG5maVxu
XG5pZiBbIC1mIC4uLy4uL1Rvb2xzL1NjcmlwdHMvY2hlY2stZm9yLWluYXBwcm9wcmlhdGUtb2Jq
Yy1jbGFzcy1uYW1lcyBdOyB0aGVuXG4gICAgLi4vLi4vVG9vbHMvU2NyaXB0cy9jaGVjay1mb3It
aW5hcHByb3ByaWF0ZS1vYmpjLWNsYXNzLW5hbWVzIEpTIFdURlxuZmkiOwogCQl9OwogCQkzNzMy
ODExQTE3RkNEMjM1MDA0QUQ1MTkgLyogUG9zdHByb2Nlc3MgSGVhZGVycyAqLyA9IHsKIAkJCWlz
YSA9IFBCWFNoZWxsU2NyaXB0QnVpbGRQaGFzZTsKSW5kZXg6IFNvdXJjZS9XVEYvV1RGLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi9XVEYueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjAwOTY4KQorKysgU291cmNlL1dURi9XVEYu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMzAxLDYgKzMwMSwx
MSBAQAogCQlDRDU0OTdBRDE1ODU3RDAzMDBCNUJDMzAgLyogTWVkaWFUaW1lLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDU0OTdBQjE1ODU3RDAzMDBC
NUJDMzAgLyogTWVkaWFUaW1lLmggKi87IH07CiAJCUNFNDY1MTZFMTlEQjFGQjQwMDNFQ0EwNSAv
KiBOU01hcFRhYmxlU1BJLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBDRTQ2NTE2RDE5REIxRkI0MDAzRUNBMDUgLyogTlNNYXBUYWJsZVNQSS5oICovOyB9
OwogCQlDRTczRTAyNTE5RENCN0FCMDA1ODBENUMgLyogWFBDU1BJLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTczRTAyNDE5RENCN0FCMDA1ODBENUMg
LyogWFBDU1BJLmggKi87IH07CisJCURDRUUyMUZCMUNFQTc1MzgwMDBDMjM5NiAvKiBDRkJ1bmRs
ZVNQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRENF
RTIxRkExQ0VBNzUzODAwMEMyMzk2IC8qIENGQnVuZGxlU1BJLmggKi87IH07CisJCURDRUUyMjAw
MUNFQTc1NTEwMDBDMjM5NiAvKiBCbG9ja09iakNFeGNlcHRpb25zLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBEQ0VFMjFGQzFDRUE3NTUxMDAwQzIzOTYg
LyogQmxvY2tPYmpDRXhjZXB0aW9ucy5oICovOyB9OworCQlEQ0VFMjIwMTFDRUE3NTUxMDAwQzIz
OTYgLyogQmxvY2tPYmpDRXhjZXB0aW9ucy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IERDRUUyMUZEMUNFQTc1NTEwMDBDMjM5NiAvKiBCbG9ja09iakNF
eGNlcHRpb25zLm1tICovOyB9OworCQlEQ0VFMjIwMjFDRUE3NTUxMDAwQzIzOTYgLyogUGxhdGZv
cm1Vc2VyUHJlZmVycmVkTGFuZ3VhZ2VzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBEQ0VFMjFGRTFDRUE3NTUxMDAwQzIzOTYgLyogUGxhdGZvcm1Vc2Vy
UHJlZmVycmVkTGFuZ3VhZ2VzLmggKi87IH07CisJCURDRUUyMjAzMUNFQTc1NTEwMDBDMjM5NiAv
KiBQbGF0Zm9ybVVzZXJQcmVmZXJyZWRMYW5ndWFnZXNNYWMubW0gaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBEQ0VFMjFGRjFDRUE3NTUxMDAwQzIzOTYgLyog
UGxhdGZvcm1Vc2VyUHJlZmVycmVkTGFuZ3VhZ2VzTWFjLm1tICovOyB9OwogCQlERTVBMDlGQzFC
QTM2OTkyMDAzRDQ0MjQgLyogQ29tbW9uQ3J5cHRvU1BJLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBERTVBMDlGQjFCQTM2OTkyMDAzRDQ0MjQgLyogQ29t
bW9uQ3J5cHRvU1BJLmggKi87IH07CiAJCUUxNTU1NkY1MThBMENDMTgwMDZGNDhGQiAvKiBDcnlw
dG9ncmFwaGljVXRpbGl0aWVzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEUxNTU1NkYzMThBMENDMTgwMDZGNDhGQiAvKiBDcnlwdG9ncmFwaGljVXRp
bGl0aWVzLmNwcCAqLzsgfTsKIAkJRTE1NTU2RjYxOEEwQ0MxODAwNkY0OEZCIC8qIENyeXB0b2dy
YXBoaWNVdGlsaXRpZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEUxNTU1NkY0MThBMENDMTgwMDZGNDhGQiAvKiBDcnlwdG9ncmFwaGljVXRpbGl0aWVz
LmggKi87IH07CkBAIC02MjIsNiArNjI3LDExIEBACiAJCUNENTQ5N0FCMTU4NTdEMDMwMEI1QkMz
MCAvKiBNZWRpYVRpbWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFU
aW1lLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNFNDY1MTZEMTlEQjFGQjQwMDNF
Q0EwNSAvKiBOU01hcFRhYmxlU1BJLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IE5TTWFwVGFibGVTUEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0U3M0UwMjQx
OURDQjdBQjAwNTgwRDVDIC8qIFhQQ1NQSS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBYUENTUEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRENFRTIxRkExQ0VB
NzUzODAwMEMyMzk2IC8qIENGQnVuZGxlU1BJLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
bmFtZSA9IENGQnVuZGxlU1BJLmg7IHBhdGggPSBjZi9DRkJ1bmRsZVNQSS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlEQ0VFMjFGQzFDRUE3NTUxMDAwQzIzOTYgLyogQmxvY2tPYmpD
RXhjZXB0aW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCbG9ja09iakNF
eGNlcHRpb25zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCURDRUUyMUZEMUNFQTc1
NTEwMDBDMjM5NiAvKiBCbG9ja09iakNFeGNlcHRpb25zLm1tICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAub2JqY3BwOyBwYXRoID0gQmxvY2tPYmpDRXhjZXB0aW9ucy5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJRENFRTIxRkUxQ0VBNzU1MTAwMEMyMzk2IC8qIFBsYXRmb3JtVXNl
clByZWZlcnJlZExhbmd1YWdlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQ
bGF0Zm9ybVVzZXJQcmVmZXJyZWRMYW5ndWFnZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJRENFRTIxRkYxQ0VBNzU1MTAwMEMyMzk2IC8qIFBsYXRmb3JtVXNlclByZWZlcnJlZExh
bmd1YWdlc01hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFBs
YXRmb3JtVXNlclByZWZlcnJlZExhbmd1YWdlc01hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJREU1QTA5RkIxQkEzNjk5MjAwM0Q0NDI0IC8qIENvbW1vbkNyeXB0b1NQSS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb21tb25DcnlwdG9TUEkuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTE1NTU2RjMxOEEwQ0MxODAwNkY0OEZCIC8qIENyeXB0
b2dyYXBoaWNVdGlsaXRpZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gQ3J5cHRvZ3JhcGhpY1V0aWxpdGllcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUUxNTU1NkY0MThBMENDMTgwMDZGNDhGQiAvKiBDcnlwdG9ncmFwaGljVXRpbGl0aWVzLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENyeXB0b2dyYXBoaWNVdGlsaXRpZXMu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTc2OCw2ICs3NzgsOCBAQAogCQkJCUE4
QTQ3MjVGMTUxQTgyNUEwMDQxMjNGRiAvKiBCaXRtYXAuaCAqLywKIAkJCQlBOEE0NzI2MDE1MUE4
MjVBMDA0MTIzRkYgLyogQml0VmVjdG9yLmNwcCAqLywKIAkJCQlBOEE0NzI2MTE1MUE4MjVBMDA0
MTIzRkYgLyogQml0VmVjdG9yLmggKi8sCisJCQkJRENFRTIxRkMxQ0VBNzU1MTAwMEMyMzk2IC8q
IEJsb2NrT2JqQ0V4Y2VwdGlvbnMuaCAqLywKKwkJCQlEQ0VFMjFGRDFDRUE3NTUxMDAwQzIzOTYg
LyogQmxvY2tPYmpDRXhjZXB0aW9ucy5tbSAqLywKIAkJCQkxQTk0NEY0NjFDM0Q4ODE0MDA1QkQy
OEMgLyogQmxvY2tQdHIuaCAqLywKIAkJCQlBOEE0NzI2NDE1MUE4MjVBMDA0MTIzRkYgLyogQmxv
Y2tTdGFjay5oICovLAogCQkJCUE4QTQ3MjY1MTUxQTgyNUEwMDQxMjNGRiAvKiBCbG9vbUZpbHRl
ci5oICovLApAQCAtODgyLDYgKzg5NCw4IEBACiAJCQkJMEY4MjRBNjUxQjc0NDNBMDAwMkUzNDVE
IC8qIFBhcmtpbmdMb3QuaCAqLywKIAkJCQlBOEE0NzJFRDE1MUE4MjVCMDA0MTIzRkYgLyogUGFz
c1JlZlB0ci5oICovLAogCQkJCUE4NzZEQkQ3MTUxODE2RTUwMERBREI5NSAvKiBQbGF0Zm9ybS5o
ICovLAorCQkJCURDRUUyMUZFMUNFQTc1NTEwMDBDMjM5NiAvKiBQbGF0Zm9ybVVzZXJQcmVmZXJy
ZWRMYW5ndWFnZXMuaCAqLywKKwkJCQlEQ0VFMjFGRjFDRUE3NTUxMDAwQzIzOTYgLyogUGxhdGZv
cm1Vc2VyUHJlZmVycmVkTGFuZ3VhZ2VzTWFjLm1tICovLAogCQkJCTBGRjg2MDk0MUJDQ0JENzQw
MDQ1MTI3RiAvKiBQb2ludGVyQ29tcGFyaXNvbi5oICovLAogCQkJCTBGOUQzMzVEMTY1REJBNzMw
MDVBRDM4NyAvKiBQcmludFN0cmVhbS5jcHAgKi8sCiAJCQkJMEY5RDMzNUUxNjVEQkE3MzAwNUFE
Mzg3IC8qIFByaW50U3RyZWFtLmggKi8sCkBAIC0xMTAxLDEyICsxMTE1LDIxIEBACiAJCUNFRjQ4
MjBDMTlEQTM0NzYwMENDMDRCOCAvKiBzcGkgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJ
CWNoaWxkcmVuID0gKAorCQkJCURDRUUyMUY5MUNFQTc1MkYwMDBDMjM5NiAvKiBjZiAqLywKIAkJ
CQlDRTQ2NTE2QzE5REIxRkI0MDAzRUNBMDUgLyogY29jb2EgKi8sCiAJCQkJQ0U3M0UwMjMxOURD
QjdBQjAwNTgwRDVDIC8qIGRhcndpbiAqLywKIAkJCSk7CiAJCQlwYXRoID0gc3BpOwogCQkJc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsKIAkJfTsKKwkJRENFRTIxRjkxQ0VBNzUyRjAwMEMyMzk2IC8q
IGNmICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQlEQ0VF
MjFGQTFDRUE3NTM4MDAwQzIzOTYgLyogQ0ZCdW5kbGVTUEkuaCAqLywKKwkJCSk7CisJCQluYW1l
ID0gY2Y7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OwogCQlFNEEwQUQzQjFBOTYy
NTE5MDA1MzZERjYgLyogY29jb2EgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxk
cmVuID0gKApAQCAtMTEzOSw2ICsxMTYyLDcgQEAKIAkJCQk5QkQ4RjQwQjE3NkMyQjQ3MDAwMkQ4
NjUgLyogQXRvbWljU3RyaW5nVGFibGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0Njk0MTlDMTZF
QUIxMEEwMDI0RTE0NiAvKiBBdXRvZHJhaW5lZFBvb2wuaCBpbiBIZWFkZXJzICovLAogCQkJCTBG
QjE0RTE5MTgwRkEyMTgwMDlCNkI0RCAvKiBCYWcuaCBpbiBIZWFkZXJzICovLAorCQkJCURDRUUy
MjAwMUNFQTc1NTEwMDBDMjM5NiAvKiBCbG9ja09iakNFeGNlcHRpb25zLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRkIxNEUxQjE4MTBFMURDMDA5QjZCNEQgLyogQmFnVG9IYXNoTWFwLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk4MTM0MDEzOTE1QjA5MkZEMDAxRkYwQjggLyogQmFzZTY0LmggaW4gSGVh
ZGVycyAqLywKIAkJCQlBOEE0NzNBOTE1MUE4MjVCMDA0MTIzRkYgLyogYmlnbnVtLWR0b2EuaCBp
biBIZWFkZXJzICovLApAQCAtMTI5NSw2ICsxMzE5LDcgQEAKIAkJCQlBOEE0NzQzRjE1MUE4MjVC
MDA0MTIzRkYgLyogU3RyaW5nSGFzaC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTc0ODc0NTQxN0Ew
QkRBRTAwRkEwNENCIC8qIFN0cmluZ0hhc2hEdW1wQ29udGV4dC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQThBNDc0NDExNTFBODI1QjAwNDEyM0ZGIC8qIFN0cmluZ0ltcGwuaCBpbiBIZWFkZXJzICov
LAorCQkJCURDRUUyMUZCMUNFQTc1MzgwMDBDMjM5NiAvKiBDRkJ1bmRsZVNQSS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQThBNDc0NDIxNTFBODI1QjAwNDEyM0ZGIC8qIFN0cmluZ09wZXJhdG9ycy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEZEREJGQTgxNjY2REZBMzAwQzU1RkVGIC8qIFN0cmluZ1By
aW50U3RyZWFtLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTZFQjFFMDE4N0QwQkQzMDAzMDEyNkYg
LyogU3RyaW5nVmlldy5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMzEyLDYgKzEzMzcsNyBAQAogCQkJ
CUE4QTQ3NDU1MTUxQTgyNUIwMDQxMjNGRiAvKiBUaHJlYWRTcGVjaWZpYy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNTUzMDcxQ0ExQzQwNDI3MjAwMzg0ODk4IC8qIFRpbnlMUlVDYWNoZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMEZFRDY3QjYxQjIyRDREODAwNjZDRTE1IC8qIFRpbnlQdHJTZXQuaCBp
biBIZWFkZXJzICovLAorCQkJCURDRUUyMjAyMUNFQTc1NTEwMDBDMjM5NiAvKiBQbGF0Zm9ybVVz
ZXJQcmVmZXJyZWRMYW5ndWFnZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0OUVGMTYzMTZCQkZF
MEQwMDBBNDMzMSAvKiBUcmlTdGF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODNGQkE5MzIxOURG
NDU5NzAwRjMwQURCIC8qIFR5cGVDYXN0cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFGREU2NDgx
OTUyMDFDMzAwQzQ4RkZBIC8qIFR5cGVDYXN0c0NGLmggaW4gSGVhZGVycyAqLywKQEAgLTE0NjAs
NiArMTQ4Niw3IEBACiAJCQkJQThBNDczQjMxNTFBODI1QjAwNDEyM0ZGIC8qIGZhc3QtZHRvYS5j
YyBpbiBTb3VyY2VzICovLAogCQkJCTBGODg1RTBGMTg0NUFFQTkwMEYxRTNGQSAvKiBGYXN0Qml0
VmVjdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4QTQ3M0MzMTUxQTgyNUIwMDQxMjNGRiAv
KiBGYXN0TWFsbG9jLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCURDRUUyMjAxMUNFQTc1NTEwMDBD
MjM5NiAvKiBCbG9ja09iakNFeGNlcHRpb25zLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY5RDMz
NjAxNjVEQkE3MzAwNUFEMzg3IC8qIEZpbGVQcmludFN0cmVhbS5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlBOEE0NzNCNTE1MUE4MjVCMDA0MTIzRkYgLyogZml4ZWQtZHRvYS5jYyBpbiBTb3VyY2Vz
ICovLAogCQkJCTFBMUQ4QjlFMTczMTg3OTgwMDE0MURBNCAvKiBGdW5jdGlvbkRpc3BhdGNoZXIu
Y3BwIGluIFNvdXJjZXMgKi8sCkBAIC0xNTEwLDYgKzE1MzcsNyBAQAogCQkJCUE4QTQ3NDY5MTUx
QTgyNUIwMDQxMjNGRiAvKiBVVEY4LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFGQTQ3QzhBMTUy
NTAyREEwMDU2OEQxQiAvKiBXZWJDb3JlVGhyZWFkLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBG
RTQ0NzlDMUI3QUFBMDMwMDk0OThFQiAvKiBXb3JkTG9jay5jcHAgaW4gU291cmNlcyAqLywKKwkJ
CQlEQ0VFMjIwMzFDRUE3NTUxMDAwQzIzOTYgLyogUGxhdGZvcm1Vc2VyUHJlZmVycmVkTGFuZ3Vh
Z2VzTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJRTRBMEFEMzkxQTk2MjQ1NTAwNTM2REY2IC8q
IFdvcmtRdWV1ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFNEEwQUQzRDFBOTYyNTNDMDA1MzZE
RjYgLyogV29ya1F1ZXVlQ29jb2EuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQThBNDc0NDUxNTFB
ODI1QjAwNDEyM0ZGIC8qIFdURlN0cmluZy5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJj
ZS9XVEYvd3RmL0Jsb2NrT2JqQ0V4Y2VwdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RG
L3d0Zi9CbG9ja09iakNFeGNlcHRpb25zLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV1RGL3d0
Zi9CbG9ja09iakNFeGNlcHRpb25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzMiBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAwMywgMjAxNiBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lt
cG9ydCA8Rm91bmRhdGlvbi9OU0V4Y2VwdGlvbi5oPgorCitXVEZfRVhQT1JUX1BSSVZBVEUgTk9f
UkVUVVJOX0RVRV9UT19BU1NFUlQgdm9pZCBSZXBvcnRCbG9ja2VkT2JqQ0V4Y2VwdGlvbihOU0V4
Y2VwdGlvbiAqKTsKKworI2RlZmluZSBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMgQHRyeSB7
CisjZGVmaW5lIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMgfSBAY2F0Y2goTlNFeGNlcHRpb24g
KmxvY2FsRXhjZXB0aW9uKSB7IFJlcG9ydEJsb2NrZWRPYmpDRXhjZXB0aW9uKGxvY2FsRXhjZXB0
aW9uKTsgfQorCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9CbG9ja09iakNFeGNlcHRpb25zLm1tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL0Jsb2NrT2JqQ0V4Y2VwdGlvbnMubW0JKHJldmlz
aW9uIDApCisrKyBTb3VyY2UvV1RGL3d0Zi9CbG9ja09iakNFeGNlcHRpb25zLm1tCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsMzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDcs
IDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJC
bG9ja09iakNFeGNlcHRpb25zLmgiCisKKyNpbXBvcnQgPHd0Zi9Bc3NlcnRpb25zLmg+CisKK3Zv
aWQgUmVwb3J0QmxvY2tlZE9iakNFeGNlcHRpb24oTlNFeGNlcHRpb24gKmV4Y2VwdGlvbikKK3sK
KyNpZiBBU1NFUlRfRElTQUJMRUQKKyAgICBOU0xvZyhAIioqKiBXZWJLaXQgZGlzY2FyZGluZyBl
eGNlcHRpb246IDwlQD4gJUAiLCBbZXhjZXB0aW9uIG5hbWVdLCBbZXhjZXB0aW9uIHJlYXNvbl0p
OworI2Vsc2UKKyAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKDAsICJVbmNhdWdodCBleGNlcHRpb24g
LSAlQCIsIGV4Y2VwdGlvbik7CisjZW5kaWYKK30KSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1BsYXRm
b3JtVXNlclByZWZlcnJlZExhbmd1YWdlcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3Rm
L1BsYXRmb3JtVXNlclByZWZlcnJlZExhbmd1YWdlcy5oCShyZXZpc2lvbiAwKQorKysgU291cmNl
L1dURi93dGYvUGxhdGZvcm1Vc2VyUHJlZmVycmVkTGFuZ3VhZ2VzLmgJKHdvcmtpbmcgY29weSkK
QEAgLTAsMCArMSw0NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgUGxhdGZvcm1Vc2VyUHJlZmVy
cmVkTGFuZ3VhZ2VzX2gKKyNkZWZpbmUgUGxhdGZvcm1Vc2VyUHJlZmVycmVkTGFuZ3VhZ2VzX2gK
KworI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcu
aD4KKworbmFtZXNwYWNlIFdURiB7CisKK1dURl9FWFBPUlRfUFJJVkFURSB2b2lkIHNldFBsYXRm
b3JtVXNlclByZWZlcnJlZExhbmd1YWdlc0NoYW5nZWRDYWxsYmFjayh2b2lkICgqKSgpKTsKKwor
V1RGX0VYUE9SVF9QUklWQVRFIFZlY3RvcjxTdHJpbmc+IHBsYXRmb3JtVXNlclByZWZlcnJlZExh
bmd1YWdlcygpOworCit9IC8vIG5hbWVzcGFjZSBXVEYKKwordXNpbmcgV1RGOjpzZXRQbGF0Zm9y
bVVzZXJQcmVmZXJyZWRMYW5ndWFnZXNDaGFuZ2VkQ2FsbGJhY2s7Cit1c2luZyBXVEY6OnBsYXRm
b3JtVXNlclByZWZlcnJlZExhbmd1YWdlczsKKworI2VuZGlmIC8vIFBsYXRmb3JtVXNlclByZWZl
cnJlZExhbmd1YWdlc19oCisKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1BsYXRmb3JtVXNlclByZWZl
cnJlZExhbmd1YWdlc01hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9QbGF0Zm9y
bVVzZXJQcmVmZXJyZWRMYW5ndWFnZXNNYWMubW0JKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV1RG
L3d0Zi9QbGF0Zm9ybVVzZXJQcmVmZXJyZWRMYW5ndWFnZXNNYWMubW0JKHdvcmtpbmcgY29weSkK
QEAgLTAsMCArMSwxNzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDUsIDIwMDYs
IDIwMTAsIDIwMTEsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIlBsYXRmb3JtVXNlclByZWZlcnJlZExh
bmd1YWdlcy5oIgorCisjaW1wb3J0ICJCbG9ja09iakNFeGNlcHRpb25zLmgiCisjaW1wb3J0IDxt
dXRleD4KKyNpbXBvcnQgPHVuaWNvZGUvdWxvYy5oPgorI2ltcG9ydCA8d3RmL0Fzc2VydGlvbnMu
aD4KKyNpbXBvcnQgPHd0Zi9Mb2NrLmg+CisjaW1wb3J0IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4K
KyNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KKyNpbXBvcnQgPHd0Zi9zcGkvY2YvQ0ZCdW5kbGVT
UEkuaD4KKyNpbXBvcnQgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV1RGIHsK
Kworc3RhdGljIHZvaWQgKCpjYWxsYmFjaykoKTsKKwordm9pZCBzZXRQbGF0Zm9ybVVzZXJQcmVm
ZXJyZWRMYW5ndWFnZXNDaGFuZ2VkQ2FsbGJhY2sodm9pZCAoKnBhc3NlZENhbGxiYWNrKSgpKQor
eworICAgIGNhbGxiYWNrID0gcGFzc2VkQ2FsbGJhY2s7Cit9CisKK3N0YXRpYyBTdGF0aWNMb2Nr
IHByZWZlcnJlZExhbmd1YWdlc011dGV4OworCitzdGF0aWMgVmVjdG9yPFN0cmluZz4mIHByZWZl
cnJlZExhbmd1YWdlcygpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFZlY3RvcjxTdHJp
bmc+PiBsYW5ndWFnZXM7CisgICAgcmV0dXJuIGxhbmd1YWdlczsKK30KKworfQorCitAaW50ZXJm
YWNlIFdURkxhbmd1YWdlQ2hhbmdlT2JzZXJ2ZXIgOiBOU09iamVjdAorQGVuZAorCitAaW1wbGVt
ZW50YXRpb24gV1RGTGFuZ3VhZ2VDaGFuZ2VPYnNlcnZlcgorCisrICh2b2lkKWxhbmd1YWdlUHJl
ZmVyZW5jZXNEaWRDaGFuZ2U6KE5TTm90aWZpY2F0aW9uICopbm90aWZpY2F0aW9uCit7CisgICAg
VU5VU0VEX1BBUkFNKG5vdGlmaWNhdGlvbik7CisKKyAgICB7CisgICAgICAgIHN0ZDo6bG9ja19n
dWFyZDxTdGF0aWNMb2NrPiBsb2NrKFdURjo6cHJlZmVycmVkTGFuZ3VhZ2VzTXV0ZXgpOworICAg
ICAgICBXVEY6OnByZWZlcnJlZExhbmd1YWdlcygpLmNsZWFyKCk7CisgICAgfQorICAgIAorICAg
IGlmIChXVEY6OmNhbGxiYWNrKQorICAgICAgICBXVEY6OmNhbGxiYWNrKCk7Cit9CisKK0BlbmQK
KworbmFtZXNwYWNlIFdURiB7CisKK3N0YXRpYyBTdHJpbmcgaHR0cFN0eWxlTGFuZ3VhZ2VDb2Rl
KE5TU3RyaW5nICpsYW5ndWFnZSwgTlNTdHJpbmcgKmNvdW50cnkpCit7CisgICAgU0ludDMyIGxh
bmd1YWdlQ29kZTsKKyAgICBTSW50MzIgcmVnaW9uQ29kZTsgCisgICAgU0ludDMyIHNjcmlwdENv
ZGU7IAorICAgIENGU3RyaW5nRW5jb2Rpbmcgc3RyaW5nRW5jb2Rpbmc7CisgICAgCisgICAgYm9v
bCBsYW5ndWFnZURpZFNwZWNpZnlFeHBsaWNpdFZhcmlhbnQgPSBbbGFuZ3VhZ2UgcmFuZ2VPZkNo
YXJhY3RlckZyb21TZXQ6W05TQ2hhcmFjdGVyU2V0IGNoYXJhY3RlclNldFdpdGhDaGFyYWN0ZXJz
SW5TdHJpbmc6QCItXyJdXS5sb2NhdGlvbiAhPSBOU05vdEZvdW5kOworCisgICAgLy8gRklYTUU6
IFRoaXMgdHJhbnNmb3JtYXRpb24gaXMgdmVyeSB3cm9uZzoKKyAgICAvLyAxLiBUaGVyZSBpcyBu
byByZWFzb24gd2h5IENGQnVuZGxlIGxvY2FsaXphdGlvbiBuYW1lcyB3b3VsZCBiZSBhdCBhbGwg
cmVsYXRlZCB0byBsYW5ndWFnZSBuYW1lcyBhcyB1c2VkIG9uIHRoZSBXZWIuCisgICAgLy8gMi4g
U2NyaXB0IE1hbmFnZXIgY29kZXMgY2Fubm90IHJlcHJlc2VudCBhbGwgbGFuZ3VhZ2VzIHRoYXQg
YXJlIG5vdyBzdXBwb3J0ZWQgYnkgdGhlIHBsYXRmb3JtLCBzbyB0aGUgY29udmVyc2lvbiBpcyBs
b3NzeS4KKyAgICAvLyAzLiBUaGlzIHNob3VsZCBwcm9iYWJseSBtYXRjaCB3aGF0IGlzIHNlbnQg
YnkgdGhlIG5ldHdvcmsgbGF5ZXIgYXMgQWNjZXB0LUxhbmd1YWdlLCBidXQgY3VycmVudGx5LCB0
aGF0J3MgaW1wbGVtZW50ZWQgc2VwYXJhdGVseS4KKyAgICBDRkJ1bmRsZUdldExvY2FsaXphdGlv
bkluZm9Gb3JMb2NhbGl6YXRpb24oKENGU3RyaW5nUmVmKWxhbmd1YWdlLCAmbGFuZ3VhZ2VDb2Rl
LCAmcmVnaW9uQ29kZSwgJnNjcmlwdENvZGUsICZzdHJpbmdFbmNvZGluZyk7CisgICAgUmV0YWlu
UHRyPENGU3RyaW5nUmVmPiBwcmVmZXJyZWRMYW5ndWFnZUNvZGUgPSBhZG9wdENGKENGQnVuZGxl
Q29weUxvY2FsaXphdGlvbkZvckxvY2FsaXphdGlvbkluZm8obGFuZ3VhZ2VDb2RlLCByZWdpb25D
b2RlLCBzY3JpcHRDb2RlLCBzdHJpbmdFbmNvZGluZykpOworICAgIGlmIChwcmVmZXJyZWRMYW5n
dWFnZUNvZGUpCisgICAgICAgIGxhbmd1YWdlID0gKE5TU3RyaW5nICopcHJlZmVycmVkTGFuZ3Vh
Z2VDb2RlLmdldCgpOworCisgICAgLy8gTWFrZSB0aGUgc3RyaW5nIGxvd2VyY2FzZS4KKyAgICBO
U1N0cmluZyAqbG93ZXJjYXNlTGFuZ3VhZ2VDb2RlID0gW2xhbmd1YWdlIGxvd2VyY2FzZVN0cmlu
Z107CisgICAgTlNTdHJpbmcgKmxvd2VyY2FzZUNvdW50cnlDb2RlID0gW2NvdW50cnkgbG93ZXJj
YXNlU3RyaW5nXTsKKyAgICAKKyAgICAvLyBJZiB3ZSBzZWUgYSAiXyIgYWZ0ZXIgYSAyLWxldHRl
ciBsYW5ndWFnZSBjb2RlOgorICAgIC8vIElmIHRoZSBjb3VudHJ5IGlzIHZhbGlkIGFuZCB0aGUg
bGFuZ3VhZ2UgZGlkIG5vdCBzcGVjaWZ5IGEgdmFyaWFudCwgcmVwbGFjZSB0aGUgIl8iIGFuZAor
ICAgIC8vIHdoYXRldmVyIGNvbWVzIGFmdGVyIGl0IHdpdGggIi0iIGZvbGxvd2VkIGJ5IHRoZSBj
b3VudHJ5IGNvZGUuCisgICAgLy8gT3RoZXJ3aXNlLCByZXBsYWNlIHRoZSAiXyIgd2l0aCBhICIt
IiBhbmQgdXNlIHdoYXRldmVyIGNvdW50cnkKKyAgICAvLyBDRkJ1bmRsZUNvcHlMb2NhbGl6YXRp
b25Gb3JMb2NhbGl6YXRpb25JbmZvKCkgcmV0dXJuZWQuCisgICAgaWYgKFtsb3dlcmNhc2VMYW5n
dWFnZUNvZGUgbGVuZ3RoXSA+PSAzICYmIFtsb3dlcmNhc2VMYW5ndWFnZUNvZGUgY2hhcmFjdGVy
QXRJbmRleDoyXSA9PSAnXycpIHsKKyAgICAgICAgaWYgKGNvdW50cnkgJiYgIWxhbmd1YWdlRGlk
U3BlY2lmeUV4cGxpY2l0VmFyaWFudCkKKyAgICAgICAgICAgIHJldHVybiBbTlNTdHJpbmcgc3Ry
aW5nV2l0aEZvcm1hdDpAIiVALSVAIiwgW2xvd2VyY2FzZUxhbmd1YWdlQ29kZSBzdWJzdHJpbmdX
aXRoUmFuZ2U6TlNNYWtlUmFuZ2UoMCwgMildLCBsb3dlcmNhc2VDb3VudHJ5Q29kZV07CisgICAg
ICAgIAorICAgICAgICAvLyBGYWxsIGJhY2sgdG8gb2xkZXIgYmVoYXZpb3IsIHdoaWNoIHVzZWQg
dGhlIG9yaWdpbmFsIGxhbmd1YWdlLWJhc2VkIGNvZGUgYnV0IGp1c3QgY2hhbmdlZAorICAgICAg
ICAvLyB0aGUgIl8iIHRvIGEgIi0iLgorICAgICAgICBSZXRhaW5QdHI8TlNNdXRhYmxlU3RyaW5n
PiBtdXRhYmxlTGFuZ3VhZ2VDb2RlID0gYWRvcHROUyhbbG93ZXJjYXNlTGFuZ3VhZ2VDb2RlIG11
dGFibGVDb3B5XSk7CisgICAgICAgIFttdXRhYmxlTGFuZ3VhZ2VDb2RlLmdldCgpIHJlcGxhY2VD
aGFyYWN0ZXJzSW5SYW5nZTpOU01ha2VSYW5nZSgyLCAxKSB3aXRoU3RyaW5nOkAiLSJdOworICAg
ICAgICByZXR1cm4gbXV0YWJsZUxhbmd1YWdlQ29kZS5nZXQoKTsKKyAgICB9CisKKyAgICByZXR1
cm4gbG93ZXJjYXNlTGFuZ3VhZ2VDb2RlOworfQorCitzdGF0aWMgYm9vbCBpc1ZhbGlkSUNVQ291
bnRyeUNvZGUoTlNTdHJpbmcqIGNvdW50cnlDb2RlKQoreworICAgIGlmICghY291bnRyeUNvZGUp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBjb25zdCBjaGFyKiBjb25zdCogY291bnRyaWVz
ID0gdWxvY19nZXRJU09Db3VudHJpZXMoKTsKKyAgICBjb25zdCBjaGFyKiBjb3VudHJ5VVRGOCA9
IFtjb3VudHJ5Q29kZSBVVEY4U3RyaW5nXTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBjb3Vu
dHJpZXNbaV07ICsraSkgeworICAgICAgICBjb25zdCBjaGFyKiBwb3NzaWJsZUNvdW50cnkgPSBj
b3VudHJpZXNbaV07CisgICAgICAgIGlmICghc3RyY21wKGNvdW50cnlVVEY4LCBwb3NzaWJsZUNv
dW50cnkpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIHJldHVybiBmYWxz
ZTsKK30KKworVmVjdG9yPFN0cmluZz4gcGxhdGZvcm1Vc2VyUHJlZmVycmVkTGFuZ3VhZ2VzKCkK
K3sKKyNpZiBQTEFURk9STShNQUMpCisgICAgc3RhdGljIGRpc3BhdGNoX29uY2VfdCBvbmNlVG9r
ZW47CisgICAgZGlzcGF0Y2hfb25jZSgmb25jZVRva2VuLCBeeworICAgICAgICBbW05TRGlzdHJp
YnV0ZWROb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0gYWRkT2JzZXJ2ZXI6W1dURkxh
bmd1YWdlQ2hhbmdlT2JzZXJ2ZXIgc2VsZl0gc2VsZWN0b3I6QHNlbGVjdG9yKGxhbmd1YWdlUHJl
ZmVyZW5jZXNEaWRDaGFuZ2U6KSBuYW1lOkAiQXBwbGVMYW5ndWFnZVByZWZlcmVuY2VzQ2hhbmdl
ZE5vdGlmaWNhdGlvbiIgb2JqZWN0Om5pbF07CisgICAgfSk7CisjZW5kaWYKKworICAgIEJFR0lO
X0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKKworICAgIHN0ZDo6bG9ja19ndWFyZDxTdGF0aWNMb2Nr
PiBsb2NrKHByZWZlcnJlZExhbmd1YWdlc011dGV4KTsKKyAgICBWZWN0b3I8U3RyaW5nPiYgdXNl
clByZWZlcnJlZExhbmd1YWdlcyA9IHByZWZlcnJlZExhbmd1YWdlcygpOworCisgICAgaWYgKHVz
ZXJQcmVmZXJyZWRMYW5ndWFnZXMuaXNFbXB0eSgpKSB7CisgICAgICAgIFJldGFpblB0cjxDRkxv
Y2FsZVJlZj4gbG9jYWxlID0gYWRvcHRDRihDRkxvY2FsZUNvcHlDdXJyZW50KCkpOworICAgICAg
ICBOU1N0cmluZyAqY291bnRyeUNvZGUgPSAoTlNTdHJpbmcgKilDRkxvY2FsZUdldFZhbHVlKGxv
Y2FsZS5nZXQoKSwga0NGTG9jYWxlQ291bnRyeUNvZGUpOworICAgICAgICAKKyAgICAgICAgaWYg
KCFpc1ZhbGlkSUNVQ291bnRyeUNvZGUoY291bnRyeUNvZGUpKQorICAgICAgICAgICAgY291bnRy
eUNvZGUgPSBuaWw7CisgICAgICAgIAorICAgICAgICBSZXRhaW5QdHI8Q0ZBcnJheVJlZj4gbGFu
Z3VhZ2VzID0gYWRvcHRDRihDRkxvY2FsZUNvcHlQcmVmZXJyZWRMYW5ndWFnZXMoKSk7CisgICAg
ICAgIENGSW5kZXggbGFuZ3VhZ2VDb3VudCA9IENGQXJyYXlHZXRDb3VudChsYW5ndWFnZXMuZ2V0
KCkpOworICAgICAgICBpZiAoIWxhbmd1YWdlQ291bnQpCisgICAgICAgICAgICB1c2VyUHJlZmVy
cmVkTGFuZ3VhZ2VzLmFwcGVuZCgiZW4iKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBm
b3IgKENGSW5kZXggaSA9IDA7IGkgPCBsYW5ndWFnZUNvdW50OyBpKyspCisgICAgICAgICAgICAg
ICAgdXNlclByZWZlcnJlZExhbmd1YWdlcy5hcHBlbmQoaHR0cFN0eWxlTGFuZ3VhZ2VDb2RlKChO
U1N0cmluZyAqKUNGQXJyYXlHZXRWYWx1ZUF0SW5kZXgobGFuZ3VhZ2VzLmdldCgpLCBpKSwgY291
bnRyeUNvZGUpKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIFZlY3RvcjxTdHJpbmc+IHVzZXJQ
cmVmZXJyZWRMYW5ndWFnZXNDb3B5OworICAgIHVzZXJQcmVmZXJyZWRMYW5ndWFnZXNDb3B5LnJl
c2VydmVJbml0aWFsQ2FwYWNpdHkodXNlclByZWZlcnJlZExhbmd1YWdlcy5zaXplKCkpOworCisg
ICAgZm9yIChhdXRvJiBsYW5ndWFnZSA6IHVzZXJQcmVmZXJyZWRMYW5ndWFnZXMpCisgICAgICAg
IHVzZXJQcmVmZXJyZWRMYW5ndWFnZXNDb3B5LnVuY2hlY2tlZEFwcGVuZChsYW5ndWFnZS5pc29s
YXRlZENvcHkoKSk7CisKKyAgICByZXR1cm4gdXNlclByZWZlcnJlZExhbmd1YWdlc0NvcHk7CisK
KyAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TOworCisgICAgcmV0dXJuIFZlY3RvcjxTdHJp
bmc+KCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdURgpJbmRleDogU291cmNlL1dURi93dGYvUGxh
dGZvcm1Vc2VyUHJlZmVycmVkTGFuZ3VhZ2VzVW5peC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dURi93dGYvUGxhdGZvcm1Vc2VyUHJlZmVycmVkTGFuZ3VhZ2VzVW5peC5jcHAJKHJldmlzaW9u
IDApCisrKyBTb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybVVzZXJQcmVmZXJyZWRMYW5ndWFnZXNVbml4
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDUyIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDA3IEFscCBUb2tlciA8YWxwQGF0b2tlci5jb20+CisgKiBDb3B5cmlnaHQgKEMpIDIwMTYg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBm
cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBp
dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBM
aWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRo
ZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkg
bGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhl
IGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5U
WTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJ
VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICog
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICog
WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmls
ZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0
b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiUGxhdGZvcm1Vc2VyUHJlZmVycmVkTGFuZ3VhZ2VzLmgiCisKKyNpbmNsdWRlIDxsb2Nh
bGUuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+CisKK25hbWVzcGFjZSBXVEYgeworCit2b2lkIHNldFBsYXRmb3JtVXNlclByZWZlcnJl
ZExhbmd1YWdlc0NoYW5nZWRDYWxsYmFjayh2b2lkICgqKSgpKSB7IH0KKworLy8gVXNpbmcgcGFu
Z29fbGFuZ3VhZ2VfZ2V0X2RlZmF1bHQoKSBoZXJlIGlzIG5vdCBhbiBvcHRpb24sIGJlY2F1c2UK
Ky8vIGl0IGRvZXNuJ3Qgc3VwcG9ydCBjaGFuZ2luZyB0aGUgbG9jYWxlIGluIHJ1bnRpbWUsIHNv
IGl0IHJldHVybnMKKy8vIGFsd2F5cyB0aGUgc2FtZSB2YWx1ZS4KK3N0YXRpYyBTdHJpbmcgcGxh
dGZvcm1MYW5ndWFnZSgpCit7CisgICAgU3RyaW5nIGxvY2FsZURlZmF1bHQoc2V0bG9jYWxlKExD
X0NUWVBFLCBudWxscHRyKSk7CisgICAgaWYgKGxvY2FsZURlZmF1bHQuaXNFbXB0eSgpKQorICAg
ICAgICByZXR1cm4gU3RyaW5nKCJjIik7CisKKyAgICBTdHJpbmcgbm9ybWFsaXplZERlZmF1bHQg
PSBsb2NhbGVEZWZhdWx0LmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCk7CisgICAgbm9ybWFsaXpl
ZERlZmF1bHQucmVwbGFjZSgnXycsICctJyk7CisgICAgbm9ybWFsaXplZERlZmF1bHQudHJ1bmNh
dGUobm9ybWFsaXplZERlZmF1bHQuZmluZCgnLicpKTsKKyAgICByZXR1cm4gbm9ybWFsaXplZERl
ZmF1bHQ7Cit9CisKK1ZlY3RvcjxTdHJpbmc+IHBsYXRmb3JtVXNlclByZWZlcnJlZExhbmd1YWdl
cygpCit7CisgICAgcmV0dXJuIHsgcGxhdGZvcm1MYW5ndWFnZSgpIH07Cit9CisKK30gLy8gbmFt
ZXNwYWNlIFdURgpJbmRleDogU291cmNlL1dURi93dGYvUGxhdGZvcm1Vc2VyUHJlZmVycmVkTGFu
Z3VhZ2VzV2luLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybVVzZXJQ
cmVmZXJyZWRMYW5ndWFnZXNXaW4uY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dURi93dGYv
UGxhdGZvcm1Vc2VyUHJlZmVycmVkTGFuZ3VhZ2VzV2luLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDc5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA3LCAyMDE2IEFwcGxlIEluYy4g
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1Vc2VyUHJl
ZmVycmVkTGFuZ3VhZ2VzLmgiCisKKyNpbmNsdWRlIDx3aW5kb3dzLmg+CisjaW5jbHVkZSA8d3Rm
L1ZlY3Rvci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2Ug
V1RGIHsKKwordm9pZCBzZXRQbGF0Zm9ybVVzZXJQcmVmZXJyZWRMYW5ndWFnZXNDaGFuZ2VkQ2Fs
bGJhY2sodm9pZCAoKikoKSkgeyB9CisKK3N0YXRpYyBTdHJpbmcgbG9jYWxlSW5mbyhMQ1RZUEUg
bG9jYWxlVHlwZSwgY29uc3QgU3RyaW5nJiBmYWxsYmFjaykKK3sKKyAgICBMQU5HSUQgbGFuZ0lE
ID0gR2V0VXNlckRlZmF1bHRVSUxhbmd1YWdlKCk7CisgICAgaW50IGxvY2FsZUNoYXJzID0gR2V0
TG9jYWxlSW5mbyhsYW5nSUQsIGxvY2FsZVR5cGUsIDAsIDApOworICAgIGlmICghbG9jYWxlQ2hh
cnMpCisgICAgICAgIHJldHVybiBmYWxsYmFjazsKKyAgICBVQ2hhciogbG9jYWxlTmFtZUJ1ZjsK
KyAgICBTdHJpbmcgbG9jYWxlTmFtZSA9IFN0cmluZzo6Y3JlYXRlVW5pbml0aWFsaXplZChsb2Nh
bGVDaGFycywgbG9jYWxlTmFtZUJ1Zik7CisgICAgbG9jYWxlQ2hhcnMgPSBHZXRMb2NhbGVJbmZv
KGxhbmdJRCwgbG9jYWxlVHlwZSwgbG9jYWxlTmFtZUJ1ZiwgbG9jYWxlQ2hhcnMpOworICAgIGlm
ICghbG9jYWxlQ2hhcnMpCisgICAgICAgIHJldHVybiBmYWxsYmFjazsKKyAgICBpZiAobG9jYWxl
TmFtZS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBmYWxsYmFjazsKKworICAgIGxvY2FsZU5h
bWUudHJ1bmNhdGUobG9jYWxlTmFtZS5sZW5ndGgoKSAtIDEpOworICAgIHJldHVybiBsb2NhbGVO
YW1lOworfQorCitzdGF0aWMgU3RyaW5nIHBsYXRmb3JtTGFuZ3VhZ2UoKQoreworICAgIHN0YXRp
YyBTdHJpbmcgY29tcHV0ZWREZWZhdWx0TGFuZ3VhZ2U7CisgICAgaWYgKCFjb21wdXRlZERlZmF1
bHRMYW5ndWFnZS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBjb21wdXRlZERlZmF1bHRMYW5n
dWFnZTsKKworICAgIFN0cmluZyBsYW5ndWFnZU5hbWUgPSBsb2NhbGVJbmZvKExPQ0FMRV9TSVNP
NjM5TEFOR05BTUUsICJlbiIpOworICAgIFN0cmluZyBjb3VudHJ5TmFtZSA9IGxvY2FsZUluZm8o
TE9DQUxFX1NJU08zMTY2Q1RSWU5BTUUsIFN0cmluZygpKTsKKworICAgIGlmIChjb3VudHJ5TmFt
ZS5pc0VtcHR5KCkpCisgICAgICAgIGNvbXB1dGVkRGVmYXVsdExhbmd1YWdlID0gbGFuZ3VhZ2VO
YW1lOworICAgIGVsc2UKKyAgICAgICAgY29tcHV0ZWREZWZhdWx0TGFuZ3VhZ2UgPSBsYW5ndWFn
ZU5hbWUgKyAnLScgKyBjb3VudHJ5TmFtZTsKKworICAgIHJldHVybiBjb21wdXRlZERlZmF1bHRM
YW5ndWFnZTsKK30KKworVmVjdG9yPFN0cmluZz4gcGxhdGZvcm1Vc2VyUHJlZmVycmVkTGFuZ3Vh
Z2VzKCkKK3sKKyAgICBWZWN0b3I8U3RyaW5nPiB1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzOworICAg
IHVzZXJQcmVmZXJyZWRMYW5ndWFnZXMuYXBwZW5kKHBsYXRmb3JtTGFuZ3VhZ2UoKSk7CisgICAg
cmV0dXJuIHVzZXJQcmVmZXJyZWRMYW5ndWFnZXM7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdURgpJ
bmRleDogU291cmNlL1dURi93dGYvc3BpL2NmL0NGQnVuZGxlU1BJLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dURi93dGYvc3BpL2NmL0NGQnVuZGxlU1BJLmgJKHJldmlzaW9uIDApCisrKyBTb3Vy
Y2UvV1RGL3d0Zi9zcGkvY2YvQ0ZCdW5kbGVTUEkuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDQ0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisj
aWZuZGVmIENGQnVuZGxlU1BJX2gKKyNkZWZpbmUgQ0ZCdW5kbGVTUElfaAorCisjaW5jbHVkZSA8
Q29yZUZvdW5kYXRpb24vQ29yZUZvdW5kYXRpb24uaD4KKworI2lmIFVTRShBUFBMRV9JTlRFUk5B
TF9TREspCisjaW1wb3J0IDxDb3JlRm91bmRhdGlvbi9DRlByaXYuaD4KKyNlbHNlCisjaW5jbHVk
ZSA8d3RmL3NwaS9kYXJ3aW4vWFBDU1BJLmg+CisjZW5kaWYKKworZXh0ZXJuICJDIiB7Cit2b2lk
IF9DRkJ1bmRsZVNldHVwWFBDQm9vdHN0cmFwKHhwY19vYmplY3RfdCBib290c3RyYXApOworCitC
b29sZWFuIENGQnVuZGxlR2V0TG9jYWxpemF0aW9uSW5mb0ZvckxvY2FsaXphdGlvbihDRlN0cmlu
Z1JlZiBsb2NhbGl6YXRpb25OYW1lLCBTSW50MzIgKmxhbmd1YWdlQ29kZSwgU0ludDMyICpyZWdp
b25Db2RlLCBTSW50MzIgKnNjcmlwdENvZGUsIENGU3RyaW5nRW5jb2RpbmcgKnN0cmluZ0VuY29k
aW5nKTsKK0NGU3RyaW5nUmVmIENGQnVuZGxlQ29weUxvY2FsaXphdGlvbkZvckxvY2FsaXphdGlv
bkluZm8oU0ludDMyIGxhbmd1YWdlQ29kZSwgU0ludDMyIHJlZ2lvbkNvZGUsIFNJbnQzMiBzY3Jp
cHRDb2RlLCBDRlN0cmluZ0VuY29kaW5nIHN0cmluZ0VuY29kaW5nKTsKK30KKworI2VuZGlmCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCShyZXZpc2lvbiAyMDA5NjgpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTM2MzQsNyArMzYzNCw2IEBACiAJ
CTkzNEZFOUU1MEI1Q0E1MzkwMDNFNEE3MyAvKiBGaWxlQ2hvb3Nlci5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzRGRTlFNDBCNUNBNTM5MDAzRTRB
NzMgLyogRmlsZUNob29zZXIuY3BwICovOyB9OwogCQk5MzUwMEYzMjEzRkRFM0JFMDA5OUVDMjQg
LyogTlNTY3JvbGxlckltcERldGFpbHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDkzNTAwRjMxMTNGREUzQkUwMDk5RUMyNCAvKiBOU1Njcm9sbGVySW1w
RGV0YWlscy5oICovOyB9OwogCQk5MzUyMDdCRTA5QkQ0MTBBMDBGMjAzOEQgLyogTG9jYWxpemVk
U3RyaW5ncy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
OTM1MjA3QkQwOUJENDEwQTAwRjIwMzhEIC8qIExvY2FsaXplZFN0cmluZ3MuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQk5MzUyMDg0NTA5QkQ0M0I5
MDBGMjAzOEQgLyogTGFuZ3VhZ2UubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA5MzUyMDg0NDA5QkQ0M0I5MDBGMjAzOEQgLyogTGFuZ3VhZ2UubW0gKi87
IH07CiAJCTkzNTM2NzZCMDlBRUQ4OEIwMEQzNUNENiAvKiBTY3JvbGxWaWV3TWFjLm1tIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTM1MzY3NkEwOUFFRDg4
QjAwRDM1Q0Q2IC8qIFNjcm9sbFZpZXdNYWMubW0gKi87IH07CiAJCTkzNUM0NzYzMDlBQzRDRTYw
MEE2QUFCNCAvKiBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzVDNDc2MjA5QUM0Q0U2MDBBNkFBQjQg
LyogTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cy5oICovOyB9OwogCQk5MzVDNDc2ODA5QUM0
RDQzMDBBNkFBQjQgLyogUGxhdGZvcm1LZXlib2FyZEV2ZW50LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzVDNDc2NjA5QUM0RDQzMDBBNkFBQjQgLyog
UGxhdGZvcm1LZXlib2FyZEV2ZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKQEAgLTM3MzQsNyArMzczMyw2IEBACiAJCTkzRjE5OUE4MDgyNDVFNTkw
MDFFOUFCQyAvKiBXZWJDb3JlRnJhbWVWaWV3LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBGNTg3ODU0QzAyREUzNzU5MDFFQTQxMjIgLyogV2ViQ29yZUZy
YW1lVmlldy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTkzRjE5OUI4MDgyNDVFNTkwMDFFOUFCQyAvKiBTY3JvbGxiYXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDN0IyQUY4MDQ1MDgyNDEwMEE4MDAw
RiAvKiBTY3JvbGxiYXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk5M0YxOTlCQjA4MjQ1RTU5MDAxRTlBQkMgLyogV2ViQ29yZUtleWJvYXJkVUlN
b2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCRTk4
M0Q5NTA1MkEyRTBBMDA4OTJEODUgLyogV2ViQ29yZUtleWJvYXJkVUlNb2RlLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJOTNGMTk5QkUwODI0NUU1
OTAwMUU5QUJDIC8qIEJsb2NrRXhjZXB0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNjVBNjQwRjAwNTMzQkIxRjAwODVFNzc3IC8qIEJsb2NrRXhj
ZXB0aW9ucy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTkzRjE5OURFMDgyNDVFNTkwMDFFOUFCQyAvKiBQb3NpdGlvbi5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkU5MUZDOEIwNjEzMzY2NjAwNUUzNzkw
IC8qIFBvc2l0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJOTNGMTk5RTUwODI0NUU1OTAwMUU5QUJDIC8qIEhUTUxDYW52YXNFbGVtZW50Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUY2QTNENjA2
NjNCRjA0MDA0RDI5MTkgLyogSFRNTENhbnZhc0VsZW1lbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5M0YxOTlFQzA4MjQ1RTU5MDAxRTlBQkMg
LyogWFNMU3R5bGVTaGVldC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQkMwNkYyNEEwNkQxOEE3RTAwNEE2RkEzIC8qIFhTTFN0eWxlU2hlZXQuaCAqLzsg
fTsKQEAgLTM3NDYsNyArMzc0NCw2IEBACiAJCTkzRjE5QTlEMDgyNDVFNTkwMDFFOUFCQyAvKiBU
ZXh0UmVzb3VyY2VEZWNvZGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEY1MjNEMjc4MDJERTQzRDcwMTg2MzVDQSAvKiBUZXh0UmVzb3VyY2VEZWNv
ZGVyLmNwcCAqLzsgfTsKIAkJOTNGMTlBQjkwODI0NUU1OTAwMUU5QUJDIC8qIFJhbmdlLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY1MjNEMzAzMDJE
RTQ0NzYwMTg2MzVDQSAvKiBSYW5nZS5jcHAgKi87IH07CiAJCTkzRjE5QUQ1MDgyNDVFNTkwMDFF
OUFCQyAvKiBSZW5kZXJUcmVlQXNUZXh0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDkzOTU1QTQyMDNENzI5MzIwMDg2MzVDRSAvKiBSZW5kZXJUcmVl
QXNUZXh0LmNwcCAqLzsgfTsKLQkJOTNGMTlBRTEwODI0NUU1OTAwMUU5QUJDIC8qIEJsb2NrRXhj
ZXB0aW9ucy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDY1RjgwNjk3MDU0RDlGODYwMDhCRjc3NiAvKiBCbG9ja0V4Y2VwdGlvbnMubW0gKi87IH07CiAJ
CTkzRjE5QUU2MDgyNDVFNTkwMDFFOUFCQyAvKiBTU0xLZXlHZW5lcmF0b3JNYWMuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODRCMkIyNEYwNTZCRjE1
RjAwRDJCNzcxIC8qIFNTTEtleUdlbmVyYXRvck1hYy5jcHAgKi87IH07CiAJCTkzRjE5QUY4MDgy
NDVFNTkwMDFFOUFCQyAvKiBQb3NpdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBCRTkxRkM4QzA2MTMzNjY2MDA1RTM3OTAgLyogUG9zaXRpb24u
Y3BwICovOyB9OwogCQk5M0YxOUFGRDA4MjQ1RTU5MDAxRTlBQkMgLyogSFRNTENhbnZhc0VsZW1l
bnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFG
NkEzRDUwNjYzQkYwNDAwNEQyOTE5IC8qIEhUTUxDYW52YXNFbGVtZW50LmNwcCAqLzsgfTsKQEAg
LTYzNTMsNyArNjM1MCw2IEBACiAJCUUwRkVGMzcyQjQ3QzUzRUFDMUMxRkJFRSAvKiBKU0V2ZW50
U291cmNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEUwRkVGMzcxQjQ3QzUzRUFDMUMxRkJFRSAvKiBKU0V2ZW50U291cmNlLmNwcCAqLzsgfTsKIAkJ
RTEwNzQwMEQwRTc3QkRDMDAwMzNBRjI0IC8qIEpTTWVzc2FnZUNoYW5uZWwuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTEwNzQwMEIwRTc3QkRDMDAw
MzNBRjI0IC8qIEpTTWVzc2FnZUNoYW5uZWwuY3BwICovOyB9OwogCQlFMTA3NDAwRTBFNzdCREMw
MDAzM0FGMjQgLyogSlNNZXNzYWdlQ2hhbm5lbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRTEwNzQwMEMwRTc3QkRDMDAwMzNBRjI0IC8qIEpTTWVzc2Fn
ZUNoYW5uZWwuaCAqLzsgfTsKLQkJRTEwQTM5RTIxQUU4NEU3MTAwQTI5QUUzIC8qIENGQnVuZGxl
U1BJLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTBB
MzlFMTFBRTg0RTcxMDBBMjlBRTMgLyogQ0ZCdW5kbGVTUEkuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMTBCOTM3QzBCNzNDMDBBMDAzRUQ4OTAg
LyogSlNDdXN0b21YUGF0aE5TUmVzb2x2ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEUxMEI5MzdCMEI3M0MwMEEwMDNFRDg5MCAvKiBKU0N1c3RvbVhQ
YXRoTlNSZXNvbHZlci5oICovOyB9OwogCQlFMTBCOTNDMzBCNzNDMjkxMDAzRUQ4OTAgLyogSlND
dXN0b21YUGF0aE5TUmVzb2x2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRTEwQjkzQzIwQjczQzI5MTAwM0VEODkwIC8qIEpTQ3VzdG9tWFBhdGhO
U1Jlc29sdmVyLmNwcCAqLzsgfTsKIAkJRTEwQjlCNkMwQjc0NzU5OTAwM0VEODkwIC8qIE5hdGl2
ZVhQYXRoTlNSZXNvbHZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRTEwQjlCNkEwQjc0NzU5OTAwM0VEODkwIC8qIE5hdGl2ZVhQYXRoTlNSZXNvbHZl
ci5oICovOyB9OwpAQCAtMTAwODksNyArMTAwODUsNiBAQAogCQk2NUEyMTQ2NzA5N0EzMjkxMDBC
OTA1MEEgLyogUGFnZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGFnZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2NUEyMTQ4MjA5N0EzRjUzMDBCOTA1MEEg
LyogRnJhbWVUcmVlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBG
cmFtZVRyZWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2NUEyMTQ4MzA5N0Ez
RjUzMDBCOTA1MEEgLyogRnJhbWVUcmVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBGcmFtZVRyZWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNjVBNjQwRjAw
NTMzQkIxRjAwODVFNzc3IC8qIEJsb2NrRXhjZXB0aW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCbG9ja0V4Y2VwdGlvbnMuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07CiAJCTY1QkYw
MjI5MDk3NDgxNjMwMEM0MzE5NiAvKiBGcmFtZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gRnJhbWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2
NUJGMDIyQTA5NzQ4MTYzMDBDNDMxOTYgLyogRnJhbWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEZyYW1lLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTY1Qzk3
QUYyMDhFQTkwODgwMEFDRDI3MyAvKiBjb25maWcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gY29uZmlnLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IHRhYldpZHRoID0gNDsgdXNlc1RhYnMgPSAwOyB9OwpAQCAtMTAxMjIsNyArMTAxMTcsNiBA
QAogCQk2NURGMzIzNjA5RDFERTY1MDAwQkUzMjUgLyogSlNDYW52YXNQYXR0ZXJuLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0NhbnZhc1BhdHRlcm4uaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNjVERjMyMzYwOUQxREU2NTAwMUJFMzI1IC8qIEpTQ2FudmFz
UHJveHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTQ2FudmFzUHJveHku
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNjVFMEU5NDMxMTMzQzg5RjAwQjRDQjEw
IC8qIEpTRE9NV3JhcHBlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0RP
TVdyYXBwZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNjVGODA2OTcwNTREOUY4
NjAwOEJGNzc2IC8qIEJsb2NrRXhjZXB0aW9ucy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEJsb2NrRXhjZXB0aW9ucy5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07CiAJCTY1
RkVBODY4MDk4MzNBREUwMEJFRDRBQiAvKiBQYWdlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBQYWdlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
Njk3MTAxMDcxQzZCRTE1NTAwMThDN0YxIC8qIEFjY2Vzc2liaWxpdHlTVkdFbGVtZW50LmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFjY2Vzc2liaWxpdHlTVkdFbGVt
ZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNjk3MTAxMDgxQzZCRTE1NTAw
MThDN0YxIC8qIEFjY2Vzc2liaWxpdHlTVkdFbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEFjY2Vzc2liaWxpdHlTVkdFbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC0xMTI5NCw3ICsxMTI4OCw2IEBACiAJCTkzNEZFOUU0MEI1Q0E1MzkwMDNF
NEE3MyAvKiBGaWxlQ2hvb3Nlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBGaWxlQ2hvb3Nlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzNTAw
RjMxMTNGREUzQkUwMDk5RUMyNCAvKiBOU1Njcm9sbGVySW1wRGV0YWlscy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBOU1Njcm9sbGVySW1wRGV0YWlscy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk5MzUyMDdCRDA5QkQ0MTBBMDBGMjAzOEQgLyogTG9jYWxpemVk
U3RyaW5ncy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBMb2NhbGl6ZWRTdHJp
bmdzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTkzNTIwODQ0MDlCRDQzQjkwMEYy
MDM4RCAvKiBMYW5ndWFnZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0
aCA9IExhbmd1YWdlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5MzUzNjc2QTA5
QUVEODhCMDBEMzVDRDYgLyogU2Nyb2xsVmlld01hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLm9iamNwcDsgcGF0aCA9IFNjcm9sbFZpZXdNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTkzNUM0NzYyMDlBQzRDRTYwMEE2QUFCNCAvKiBNb3VzZUV2ZW50V2l0aEhpdFRl
c3RSZXN1bHRzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1vdXNlRXZlbnRX
aXRoSGl0VGVzdFJlc3VsdHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTM1QzQ3
NjYwOUFDNEQ0MzAwQTZBQUI0IC8qIFBsYXRmb3JtS2V5Ym9hcmRFdmVudC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE0Mzk2LDcgKzE0Mzg5LDYgQEAKIAkJRTBGRUYzNzFCNDdD
NTNFQUMxQzFGQkVFIC8qIEpTRXZlbnRTb3VyY2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gSlNFdmVudFNvdXJjZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUUxMDc0MDBCMEU3N0JEQzAwMDMzQUYyNCAvKiBKU01lc3NhZ2VDaGFubmVsLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTTWVzc2FnZUNoYW5uZWwuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMTA3NDAwQzBFNzdCREMwMDAzM0FGMjQg
LyogSlNNZXNzYWdlQ2hhbm5lbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBK
U01lc3NhZ2VDaGFubmVsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUUxMEEzOUUx
MUFFODRFNzEwMEEyOUFFMyAvKiBDRkJ1bmRsZVNQSS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBDRkJ1bmRsZVNQSS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlF
MTBCOTM3QjBCNzNDMDBBMDAzRUQ4OTAgLyogSlNDdXN0b21YUGF0aE5TUmVzb2x2ZXIuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNDdXN0b21YUGF0aE5TUmVzb2x2ZXIuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTEwQjkzQzIwQjczQzI5MTAwM0VEODkwIC8q
IEpTQ3VzdG9tWFBhdGhOU1Jlc29sdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEpTQ3VzdG9tWFBhdGhOU1Jlc29sdmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJRTEwQjlCNkEwQjc0NzU5OTAwM0VEODkwIC8qIE5hdGl2ZVhQYXRoTlNSZXNv
bHZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOYXRpdmVYUGF0aE5TUmVz
b2x2ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE3NTYzLDcgKzE3NTU1LDYg
QEAKIAkJNjUwODZEQTYxOUFDMTcxOTAwOUFGNDZCIC8qIGNmICovID0gewogCQkJaXNhID0gUEJY
R3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKLQkJCQlFMTBBMzlFMTFBRTg0RTcxMDBBMjlBRTMgLyog
Q0ZCdW5kbGVTUEkuaCAqLywKIAkJCQk2NTA4NkRBNzE5QUMxNzE5MDA5QUY0NkIgLyogQ0ZMb2Nh
bGVTUEkuaCAqLywKIAkJCQlBMTBEN0ZFQjFDMjY3NkQxMDBDNkMxMTUgLyogQ0ZOZXR3b3JrQ29u
bmVjdGlvbkNhY2hlU1BJLmggKi8sCiAJCQkJQ0UxMjUyNUExQTFDMDE4MjAwODY0NDgwIC8qIENG
TmV0d29ya1NQSS5oICovLApAQCAtMTc4NDksOCArMTc4NDAsNiBAQAogCQk2NTgyQTE0ODA5OTk5
RDZDMDBCRUVCNkQgLyogbWFjICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJl
biA9ICgKLQkJCQk2NUE2NDBGMDA1MzNCQjFGMDA4NUU3NzcgLyogQmxvY2tFeGNlcHRpb25zLmgg
Ki8sCi0JCQkJNjVGODA2OTcwNTREOUY4NjAwOEJGNzc2IC8qIEJsb2NrRXhjZXB0aW9ucy5tbSAq
LywKIAkJCQlGNTg3ODRGMDAyREUzNzU5MDFFQTQxMjIgLyogQ3Vyc29yTWFjLm1tICovLAogCQkJ
CUE3OTU0NjNEMEI1QzRDODAwMDdCNDM4RiAvKiBEcmFnRGF0YU1hYy5tbSAqLywKIAkJCQlBN0NG
QjNENDBCN0VEMTE4MDA3MEMzMkQgLyogRHJhZ0ltYWdlTWFjLm1tICovLApAQCAtMTc4NjMsNyAr
MTc4NTIsNiBAQAogCQkJCTUxNzlDRTM1MTk1Q0FDN0UwMDE5QzE5OCAvKiBISURHYW1lcGFkUHJv
dmlkZXIuaCAqLywKIAkJCQk5MzVDNDc2RTA5QUM0RDczMDBBNkFBQjQgLyogS2V5RXZlbnRNYWMu
bW0gKi8sCiAJCQkJNTIxRDQ2RjUxMUFFQzk4MTAwNTE0NjEzIC8qIEtpbGxSaW5nTWFjLm1tICov
LAotCQkJCTkzNTIwODQ0MDlCRDQzQjkwMEYyMDM4RCAvKiBMYW5ndWFnZS5tbSAqLywKIAkJCQkw
NkU4MUVENjBBQjVENUU5MDBDODc4MzcgLyogTG9jYWxDdXJyZW50R3JhcGhpY3NDb250ZXh0Lmgg
Ki8sCiAJCQkJMDZFODFFRUIwQUI1REE5NzAwQzg3ODM3IC8qIExvY2FsQ3VycmVudEdyYXBoaWNz
Q29udGV4dC5tbSAqLywKIAkJCQkxNDAyNjQ1RDBBRkRDMTlCMDA1OTE5RTIgLyogTG9nZ2luZ01h
Yy5tbSAqLywKQEAgLTI1MTk4LDcgKzI1MTg2LDYgQEAKIAkJCQkyRURFRjFGNzEyMUIwRUZDMDA3
MjZEQjIgLyogQmxvYlJlZ2lzdHJ5SW1wbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkVCNEJDRDMx
MjFGMDNFMzAwRUM0ODg1IC8qIEJsb2JSZXNvdXJjZUhhbmRsZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJOTc2RDZDN0YxMjJCOEEzRDAwMUZEMUY3IC8qIEJsb2JVUkwuaCBpbiBIZWFkZXJzICovLAot
CQkJCTkzRjE5OUJFMDgyNDVFNTkwMDFFOUFCQyAvKiBCbG9ja0V4Y2VwdGlvbnMuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUJDNUVCNUUxMEU4MUJFODcwMEIyNTk2NSAvKiBCb3JkZXJEYXRhLmggaW4g
SGVhZGVycyAqLywKIAkJCQk1ODk1NTZFRDE4RDRBNDQwMDA3NjRCMDMgLyogQm9yZGVyRWRnZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQkM1RUI1REIwRTgxQjdFQTAwQjI1OTY1IC8qIEJvcmRlclZh
bHVlLmggaW4gSGVhZGVycyAqLywKQEAgLTI1MjY1LDcgKzI1MjUyLDYgQEAKIAkJCQlDREU4QjVG
MTFBNjk3NzhCMDBCNEI2NkEgLyogQ0RNU2Vzc2lvbkNsZWFyS2V5LmggaW4gSGVhZGVycyAqLywK
IAkJCQlDREU1OTU5NzFCRjI2RTIxMDBBMUNCRTggLyogQ0RNU2Vzc2lvbk1lZGlhU291cmNlQVZG
T2JqQy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUZBOTA0Q0ExNzhFNjFGNTAwNEM4QTJEIC8qIENl
cnRpZmljYXRlSW5mby5oIGluIEhlYWRlcnMgKi8sCi0JCQkJRTEwQTM5RTIxQUU4NEU3MTAwQTI5
QUUzIC8qIENGQnVuZGxlU1BJLmggaW4gSGVhZGVycyAqLywKIAkJCQlBMTBEN0ZFQzFDMjY3NkQx
MDBDNkMxMTUgLyogQ0ZOZXR3b3JrQ29ubmVjdGlvbkNhY2hlU1BJLmggaW4gSGVhZGVycyAqLywK
IAkJCQlDRTEyNTI1QjFBMUMwMTgyMDA4NjQ0ODAgLyogQ0ZOZXR3b3JrU1BJLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlFMUE4RTU2NzE3NTUyQjJBMDA3NDg4RTcgLyogQ0ZVUkxFeHRyYXMuaCBpbiBI
ZWFkZXJzICovLApAQCAtMjkxNTksNyArMjkxNDUsNiBAQAogCQkJCTJFREVGMUY2MTIxQjBFRkMw
MDcyNkRCMiAvKiBCbG9iUmVnaXN0cnlJbXBsLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJFQjRC
Q0QyMTIxRjAzRTMwMEVDNDg4NSAvKiBCbG9iUmVzb3VyY2VIYW5kbGUuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJOTc2RDZDN0UxMjJCOEEzRDAwMUZEMUY3IC8qIEJsb2JVUkwuY3BwIGluIFNvdXJj
ZXMgKi8sCi0JCQkJOTNGMTlBRTEwODI0NUU1OTAwMUU5QUJDIC8qIEJsb2NrRXhjZXB0aW9ucy5t
bSBpbiBTb3VyY2VzICovLAogCQkJCTU4QUVFMkY0MThENEJDQ0YwMDIyRTdGRSAvKiBCb3JkZXJF
ZGdlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTZFRDhDMzc5MTgzQkZGOEMwMDlFNTNCRCAvKiBC
b3hTaGFwZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQ0VBNDg1NDA5N0Q5MzAyMDA5NEM5RTQg
LyogYnJlYWtfbGluZXMuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0zMDg5NCw3ICszMDg3OSw2IEBA
CiAJCQkJNDUwQ0VCRjAxNTA3M0JCRTAwMkJCMTQ5IC8qIExhYmVsYWJsZUVsZW1lbnQuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQTQ1NkZBMjYxMUFENEE4MzAwMjBCNDIwIC8qIExhYmVsc05vZGVM
aXN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxODc3MkYxMTI2RTI2MjkwMDNERDU4NiAvKiBM
YW5ndWFnZS5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk5MzUyMDg0NTA5QkQ0M0I5MDBGMjAzOEQg
LyogTGFuZ3VhZ2UubW0gaW4gU291cmNlcyAqLywKIAkJCQkyOTE3QjU2MTE0NzM0OTZDMDA1MkM5
RDAgLyogTGF5ZXJGbHVzaFNjaGVkdWxlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyOTE3QjU2
NjE0NzM0OTk1MDA1MkM5RDAgLyogTGF5ZXJGbHVzaFNjaGVkdWxlck1hYy5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQk3QUEzQTY5RjE5NEI1OUI2MDAxQ0JEMjQgLyogTGF5ZXJQb29sLmNwcCBpbiBT
b3VyY2VzICovLApJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01DdXN0b21Y
UGF0aE5TUmVzb2x2ZXIubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
b2JqYy9ET01DdXN0b21YUGF0aE5TUmVzb2x2ZXIubW0JKHJldmlzaW9uIDIwMDk2OCkKKysrIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NQ3VzdG9tWFBhdGhOU1Jlc29sdmVyLm1tCSh3
b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5j
bHVkZSAiRE9NQ3VzdG9tWFBhdGhOU1Jlc29sdmVyLmgiCiAKLSNpbmNsdWRlICJCbG9ja0V4Y2Vw
dGlvbnMuaCIKKyNpbmNsdWRlIDx3dGYvQmxvY2tPYmpDRXhjZXB0aW9ucy5oPgogI2luY2x1ZGUg
PHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL2lvcy9FZGl0b3JJT1MubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvZWRpdGluZy9pb3MvRWRpdG9ySU9TLm1tCShyZXZpc2lvbiAyMDA5NjgpCisrKyBT
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL2lvcy9FZGl0b3JJT1MubW0JKHdvcmtpbmcgY29weSkKQEAg
LTI2LDcgKzI2LDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJFZGl0b3IuaCIK
IAotI2luY2x1ZGUgIkJsb2NrRXhjZXB0aW9ucy5oIgogI2luY2x1ZGUgIkNhY2hlZEltYWdlLmgi
CiAjaW5jbHVkZSAiQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmgiCiAjaW5jbHVkZSAiQ1NT
UHJpbWl0aXZlVmFsdWVNYXBwaW5ncy5oIgpAQCAtNTgsNiArNTcsNyBAQAogI2luY2x1ZGUgIldB
S0FwcEtpdFN0dWJzLmgiCiAjaW5jbHVkZSAiaHRtbGVkaXRpbmcuaCIKICNpbmNsdWRlICJtYXJr
dXAuaCIKKyNpbmNsdWRlIDx3dGYvQmxvY2tPYmpDRXhjZXB0aW9ucy5oPgogCiBTT0ZUX0xJTktf
RlJBTUVXT1JLKEFwcFN1cHBvcnQpCiBTT0ZUX0xJTksoQXBwU3VwcG9ydCwgQ1BTaGFyZWRSZXNv
dXJjZXNEaXJlY3RvcnksIENGU3RyaW5nUmVmLCAodm9pZCksICgpKQpJbmRleDogU291cmNlL1dl
YkNvcmUvZWRpdGluZy9tYWMvRGljdGlvbmFyeUxvb2t1cC5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL21hYy9EaWN0aW9uYXJ5TG9va3VwLm1tCShyZXZpc2lvbiAyMDA5
NjgpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9EaWN0aW9uYXJ5TG9va3VwLm1tCSh3
b3JraW5nIGNvcHkpCkBAIC0yOCw3ICsyOCw2IEBACiAKICNpZiBQTEFURk9STShNQUMpCiAKLSNp
bXBvcnQgIkJsb2NrRXhjZXB0aW9ucy5oIgogI2ltcG9ydCAiRG9jdW1lbnQuaCIKICNpbXBvcnQg
IkZvY3VzQ29udHJvbGxlci5oIgogI2ltcG9ydCAiRnJhbWUuaCIKQEAgLTQ3LDYgKzQ2LDcgQEAK
ICNpbXBvcnQgIldlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaCIKICNpbXBvcnQgImh0bWxlZGl0aW5n
LmgiCiAjaW1wb3J0IDxQREZLaXQvUERGS2l0Lmg+CisjaW1wb3J0IDx3dGYvQmxvY2tPYmpDRXhj
ZXB0aW9ucy5oPgogI2ltcG9ydCA8d3RmL1JlZlB0ci5oPgogCiBTT0ZUX0xJTktfQ09OU1RBTlRf
TUFZX0ZBSUwoTG9va3VwLCBMVVRlcm1PcHRpb25EaXNhYmxlU2VhcmNoVGVybUluZGljYXRvciwg
TlNTdHJpbmcgKikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0VkaXRvck1hYy5t
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9FZGl0b3JNYWMubW0J
KHJldmlzaW9uIDIwMDk2OCkKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0VkaXRvck1h
Yy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYsNiBAQAogI2ltcG9ydCAiY29uZmlnLmgi
CiAjaW1wb3J0ICJFZGl0b3IuaCIKIAotI2ltcG9ydCAiQmxvY2tFeGNlcHRpb25zLmgiCiAjaW1w
b3J0ICJDU1NQcmltaXRpdmVWYWx1ZU1hcHBpbmdzLmgiCiAjaW1wb3J0ICJDU1NWYWx1ZVBvb2wu
aCIKICNpbXBvcnQgIkNhY2hlZFJlc291cmNlTG9hZGVyLmgiCkBAIC02NSw2ICs2NCw3IEBACiAj
aW1wb3J0ICJXZWJOU0F0dHJpYnV0ZWRTdHJpbmdFeHRyYXMuaCIKICNpbXBvcnQgImh0bWxlZGl0
aW5nLmgiCiAjaW1wb3J0ICJtYXJrdXAuaCIKKyNpbXBvcnQgPHd0Zi9CbG9ja09iakNFeGNlcHRp
b25zLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGFn
ZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzTWVkaWFBRi5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzTWVkaWFBRi5jcHAJKHJldmlzaW9u
IDIwMDk2OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01l
ZGlhQUYuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Miw2ICs0Miw3IEBACiAjaW5jbHVkZSAiVXNl
clN0eWxlU2hlZXRUeXBlcy5oIgogI2luY2x1ZGUgIlZUVEN1ZS5oIgogI2luY2x1ZGUgPHd0Zi9O
ZXZlckRlc3Ryb3llZC5oPgorI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybVVzZXJQcmVmZXJyZWRMYW5n
dWFnZXMuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQv
Q1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BhZ2UvaW9zL0V2ZW50SGFuZGxlcklPUy5tbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wYWdlL2lvcy9FdmVudEhhbmRsZXJJT1MubW0JKHJldmlzaW9uIDIwMDk2
OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvaW9zL0V2ZW50SGFuZGxlcklPUy5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtMjcsNyArMjcsNiBAQAogI2ltcG9ydCAiRXZlbnRIYW5kbGVyLmgiCiAKICNp
bXBvcnQgIkFYT2JqZWN0Q2FjaGUuaCIKLSNpbXBvcnQgIkJsb2NrRXhjZXB0aW9ucy5oIgogI2lt
cG9ydCAiQ2hyb21lLmgiCiAjaW1wb3J0ICJDaHJvbWVDbGllbnQuaCIKICNpbXBvcnQgIkZvY3Vz
Q29udHJvbGxlci5oIgpAQCAtNDIsNiArNDEsNyBAQAogI2ltcG9ydCAiV0FLVmlldy5oIgogI2lt
cG9ydCAiV0FLV2luZG93LmgiCiAjaW1wb3J0ICJXZWJFdmVudC5oIgorI2ltcG9ydCA8d3RmL0Js
b2NrT2JqQ0V4Y2VwdGlvbnMuaD4KICNpbXBvcnQgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2lt
cG9ydCA8d3RmL05vbmNvcHlhYmxlLmg+CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvaW9z
L0ZyYW1lSU9TLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvaW9zL0ZyYW1l
SU9TLm1tCShyZXZpc2lvbiAyMDA5NjgpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL2lvcy9GcmFt
ZUlPUy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjgsNyArMjgsNiBAQAogI2lmIFBMQVRGT1JNKElP
UykKIAogI2ltcG9ydCAiQW5pbWF0aW9uQ29udHJvbGxlci5oIgotI2ltcG9ydCAiQmxvY2tFeGNl
cHRpb25zLmgiCiAjaW1wb3J0ICJET01DU1NTdHlsZURlY2xhcmF0aW9uSW50ZXJuYWwuaCIKICNp
bXBvcnQgIkRPTUNvcmUuaCIKICNpbXBvcnQgIkRPTUludGVybmFsLmgiCkBAIC03MCw2ICs2OSw3
IEBACiAjaW1wb3J0ICJXQUtXaW5kb3cuaCIKICNpbXBvcnQgIldlYkNvcmVTeXN0ZW1JbnRlcmZh
Y2UuaCIKICNpbXBvcnQgPHJ1bnRpbWUvSlNMb2NrLmg+CisjaW1wb3J0IDx3dGYvQmxvY2tPYmpD
RXhjZXB0aW9ucy5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTo6SFRNTE5hbWVzOwogdXNp
bmcgbmFtZXNwYWNlIFdURjo6VW5pY29kZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvbWFj
L0Nocm9tZU1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9DaHJv
bWVNYWMubW0JKHJldmlzaW9uIDIwMDk2OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0No
cm9tZU1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjAsOCArMjAsOCBAQAogI2ltcG9ydCAiY29u
ZmlnLmgiCiAjaW1wb3J0ICJDaHJvbWUuaCIKIAotI2ltcG9ydCAiQmxvY2tFeGNlcHRpb25zLmgi
CiAjaW1wb3J0ICJDaHJvbWVDbGllbnQuaCIKKyNpbXBvcnQgPHd0Zi9CbG9ja09iakNFeGNlcHRp
b25zLmg+CiAKICNpZiBQTEFURk9STShJT1MpCiAjaW5jbHVkZSAiV0FLUmVzcG9uZGVyLmgiCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9FdmVudEhhbmRsZXJNYWMubW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvRXZlbnRIYW5kbGVyTWFjLm1tCShyZXZpc2lv
biAyMDA5NjgpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9FdmVudEhhbmRsZXJNYWMubW0J
KHdvcmtpbmcgY29weSkKQEAgLTI3LDcgKzI3LDYgQEAKICNpbmNsdWRlICJFdmVudEhhbmRsZXIu
aCIKIAogI2luY2x1ZGUgIkFYT2JqZWN0Q2FjaGUuaCIKLSNpbmNsdWRlICJCbG9ja0V4Y2VwdGlv
bnMuaCIKICNpbmNsdWRlICJDaHJvbWUuaCIKICNpbmNsdWRlICJDaHJvbWVDbGllbnQuaCIKICNp
bmNsdWRlICJEYXRhVHJhbnNmZXIuaCIKQEAgLTYxLDYgKzYwLDcgQEAKICNpbmNsdWRlICJTaGFk
b3dSb290LmgiCiAjaW5jbHVkZSAiV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oIgogI2luY2x1ZGUg
IldoZWVsRXZlbnRUZXN0VHJpZ2dlci5oIgorI2luY2x1ZGUgPHd0Zi9CbG9ja09iakNFeGNlcHRp
b25zLmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJE
ZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvT2JqY1J1bnRpbWVFeHRyYXMuaD4KSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xhbmd1YWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9MYW5ndWFnZS5jcHAJKHJldmlzaW9uIDIwMDk2OCkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL0xhbmd1YWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsx
LDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwLCAyMDEzLCAyMDE2IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtMjgsNiArMjgsNyBAQAogCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3
dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKyNpbmNsdWRlIDx3dGYvUGxhdGZvcm1Vc2VyUHJlZmVycmVk
TGFuZ3VhZ2VzLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogI2luY2x1ZGUgPHd0Zi90
ZXh0L1dURlN0cmluZy5oPgogCkBAIC0zNyw2ICszOCwxNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKK3N0YXRpYyB2b2lkIHJlZ2lzdGVyTGFuZ3VhZ2VEaWRDaGFuZ2VDYWxsYmFja0lmTmVj
ZXNzYXJ5KCkKK3sKKyAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZTsKKyAgICBzdGQ6OmNh
bGxfb25jZSgKKyAgICAgICAgb25jZSwKKyAgICAgICAgW10geworICAgICAgICAgICAgc2V0UGxh
dGZvcm1Vc2VyUHJlZmVycmVkTGFuZ3VhZ2VzQ2hhbmdlZENhbGxiYWNrKGxhbmd1YWdlRGlkQ2hh
bmdlKTsKKyAgICAgICAgfSk7Cit9CisKIHR5cGVkZWYgSGFzaE1hcDx2b2lkKiwgTGFuZ3VhZ2VD
aGFuZ2VPYnNlcnZlckZ1bmN0aW9uPiBPYnNlcnZlck1hcDsKIHN0YXRpYyBPYnNlcnZlck1hcCYg
b2JzZXJ2ZXJNYXAoKQogewpAQCAtNDYsNiArNTcsNyBAQCBzdGF0aWMgT2JzZXJ2ZXJNYXAmIG9i
c2VydmVyTWFwKCkKIAogdm9pZCBhZGRMYW5ndWFnZUNoYW5nZU9ic2VydmVyKHZvaWQqIGNvbnRl
eHQsIExhbmd1YWdlQ2hhbmdlT2JzZXJ2ZXJGdW5jdGlvbiBjdXN0b21PYnNlcnZlcikKIHsKKyAg
ICByZWdpc3Rlckxhbmd1YWdlRGlkQ2hhbmdlQ2FsbGJhY2tJZk5lY2Vzc2FyeSgpOwogICAgIG9i
c2VydmVyTWFwKCkuc2V0KGNvbnRleHQsIGN1c3RvbU9ic2VydmVyKTsKIH0KIApAQCAtODcsMTMg
Kzk5LDE0IEBAIHZvaWQgb3ZlcnJpZGVVc2VyUHJlZmVycmVkTGFuZ3VhZ2VzKGNvbnMKICAgICBw
cmVmZXJyZWRMYW5ndWFnZXNPdmVycmlkZSgpID0gb3ZlcnJpZGU7CiAgICAgbGFuZ3VhZ2VEaWRD
aGFuZ2UoKTsKIH0KLSAgICAKKwogVmVjdG9yPFN0cmluZz4gdXNlclByZWZlcnJlZExhbmd1YWdl
cygpCiB7CiAgICAgVmVjdG9yPFN0cmluZz4mIG92ZXJyaWRlID0gcHJlZmVycmVkTGFuZ3VhZ2Vz
T3ZlcnJpZGUoKTsKICAgICBpZiAoIW92ZXJyaWRlLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJu
IG92ZXJyaWRlOwogICAgIAorICAgIHJlZ2lzdGVyTGFuZ3VhZ2VEaWRDaGFuZ2VDYWxsYmFja0lm
TmVjZXNzYXJ5KCk7CiAgICAgcmV0dXJuIHBsYXRmb3JtVXNlclByZWZlcnJlZExhbmd1YWdlcygp
OwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MYW5ndWFnZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xhbmd1YWdlLmgJKHJldmlzaW9uIDIwMDk2
OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xhbmd1YWdlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTQyLDggKzQyLDYgQEAgdHlwZWRlZiB2b2lkICgqTGFuZ3VhZ2VDaGFuZ2VPYnNlcnZlckZ1
bgogV0VCQ09SRV9FWFBPUlQgdm9pZCBhZGRMYW5ndWFnZUNoYW5nZU9ic2VydmVyKHZvaWQqIGNv
bnRleHQsIExhbmd1YWdlQ2hhbmdlT2JzZXJ2ZXJGdW5jdGlvbik7CiBXRUJDT1JFX0VYUE9SVCB2
b2lkIHJlbW92ZUxhbmd1YWdlQ2hhbmdlT2JzZXJ2ZXIodm9pZCogY29udGV4dCk7CiAKLVZlY3Rv
cjxTdHJpbmc+IHBsYXRmb3JtVXNlclByZWZlcnJlZExhbmd1YWdlcygpOwotCiBTdHJpbmcgZGlz
cGxheU5hbWVGb3JMYW5ndWFnZUxvY2FsZShjb25zdCBTdHJpbmcmKTsKIAogLy8gQ2FsbGVkIGZy
b20gcGxhdGZvcm0gc3BlY2lmaWMgY29kZSB3aGVuIHRoZSB1c2VyJ3MgcHJlZmVycmVkIGxhbmd1
YWdlKHMpIGNoYW5nZS4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL0NvbnRl
bnRGaWx0ZXJVbmJsb2NrSGFuZGxlckNvY29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2NvY29hL0NvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlckNvY29hLm1tCShy
ZXZpc2lvbiAyMDA5NjgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9Db250ZW50
RmlsdGVyVW5ibG9ja0hhbmRsZXJDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtMjgsMTAgKzI4
LDEwIEBACiAKICNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCiAKLSNpbXBvcnQgIkJsb2Nr
RXhjZXB0aW9ucy5oIgogI2ltcG9ydCAiQ29udGVudEZpbHRlci5oIgogI2ltcG9ydCAiTG9nZ2lu
Zy5oIgogI2ltcG9ydCAiUmVzb3VyY2VSZXF1ZXN0LmgiCisjaW1wb3J0IDx3dGYvQmxvY2tPYmpD
RXhjZXB0aW9ucy5oPgogCiAjaWYgIUxPR19ESVNBQkxFRAogI2ltcG9ydCA8d3RmL3RleHQvQ1N0
cmluZy5oPgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRk9iakMubW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW5iYW5k
VGV4dFRyYWNrUHJpdmF0ZUFWRk9iakMubW0JKHJldmlzaW9uIDIwMDk2OCkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0luYmFuZFRleHRUcmFj
a1ByaXZhdGVBVkZPYmpDLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw3ICsyOSw2IEBACiAKICNp
bXBvcnQgIkluYmFuZFRleHRUcmFja1ByaXZhdGVBVkZPYmpDLmgiCiAKLSNpbXBvcnQgIkJsb2Nr
RXhjZXB0aW9ucy5oIgogI2ltcG9ydCAiRmxvYXRDb252ZXJzaW9uLmgiCiAjaW1wb3J0ICJJbmJh
bmRUZXh0VHJhY2tQcml2YXRlLmgiCiAjaW1wb3J0ICJJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZG
LmgiCkBAIC0zNyw2ICszNiw3IEBACiAjaW1wb3J0ICJTb2Z0TGlua2luZy5oIgogI2ltcG9ydCA8
QVZGb3VuZGF0aW9uL0FWRm91bmRhdGlvbi5oPgogI2ltcG9ydCA8b2JqYy9ydW50aW1lLmg+Cisj
aW1wb3J0IDx3dGYvQmxvY2tPYmpDRXhjZXB0aW9ucy5oPgogCiBTT0ZUX0xJTktfRlJBTUVXT1JL
X09QVElPTkFMKEFWRm91bmRhdGlvbikKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
T2JqQy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCShy
ZXZpc2lvbiAyMDA5NjgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMyw3ICszMyw2IEBACiAjaW1wb3J0ICJBdWRpb1NvdXJjZVByb3ZpZGVy
QVZGT2JqQy5oIgogI2ltcG9ydCAiQXVkaW9UcmFja1ByaXZhdGVBVkZPYmpDLmgiCiAjaW1wb3J0
ICJBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oIgotI2ltcG9ydCAiQmxvY2tFeGNlcHRpb25zLmgi
CiAjaW1wb3J0ICJDRE1TZXNzaW9uQVZGb3VuZGF0aW9uT2JqQy5oIgogI2ltcG9ydCAiQ29va2ll
LmgiCiAjaW1wb3J0ICJFeGNlcHRpb25Db2RlUGxhY2Vob2xkZXIuaCIKQEAgLTc4LDYgKzc3LDcg
QEAKICNpbXBvcnQgPHJ1bnRpbWUvVWludDE2QXJyYXkuaD4KICNpbXBvcnQgPHJ1bnRpbWUvVWlu
dDMyQXJyYXkuaD4KICNpbXBvcnQgPHJ1bnRpbWUvVWludDhBcnJheS5oPgorI2ltcG9ydCA8d3Rm
L0Jsb2NrT2JqQ0V4Y2VwdGlvbnMuaD4KICNpbXBvcnQgPHd0Zi9DdXJyZW50VGltZS5oPgogI2lt
cG9ydCA8d3RmL0xpc3RIYXNoU2V0Lmg+CiAjaW1wb3J0IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4K
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZh
dGVBVkZPYmpDLm1tCShyZXZpc2lvbiAyMDA5NjgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5t
bQkod29ya2luZyBjb3B5KQpAQCAtMjgsNyArMjgsNiBAQAogCiAjaWYgRU5BQkxFKE1FRElBX1NP
VVJDRSkgJiYgVVNFKEFWRk9VTkRBVElPTikKIAotI2ltcG9ydCAiQmxvY2tFeGNlcHRpb25zLmgi
CiAjaW1wb3J0ICJDRE1TZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lvbi5oIgogI2ltcG9ydCAiQ0RN
U2Vzc2lvbk1lZGlhU291cmNlQVZGT2JqQy5oIgogI2ltcG9ydCAiRXhjZXB0aW9uQ29kZVBsYWNl
aG9sZGVyLmgiCkBAIC01MCw2ICs0OSw3IEBACiAjaW1wb3J0IDxvYmpjL3J1bnRpbWUuaD4KICNp
bXBvcnQgPHd0Zi90ZXh0L0F0b21pY1N0cmluZy5oPgogI2ltcG9ydCA8d3RmL3RleHQvQ1N0cmlu
Zy5oPgorI2ltcG9ydCA8d3RmL0Jsb2NrT2JqQ0V4Y2VwdGlvbnMuaD4KICNpbXBvcnQgPHd0Zi9I
YXNoQ291bnRlZFNldC5oPgogI2ltcG9ydCA8d3RmL01haW5UaHJlYWQuaD4KICNpbXBvcnQgPHd0
Zi9XZWFrUHRyLmg+CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9j
b2NvYS9QbGF0Zm9ybUNBRmlsdGVyc0NvY29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FGaWx0ZXJzQ29jb2EubW0J
KHJldmlzaW9uIDIwMDk2OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
L2NvY29hL1BsYXRmb3JtQ0FGaWx0ZXJzQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTI2LDEy
ICsyNiwxMiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2ltcG9ydCAiUGxhdGZvcm1DQUZpbHRl
cnMuaCIKIAotI2ltcG9ydCAiQmxvY2tFeGNlcHRpb25zLmgiCiAjaW1wb3J0ICJGbG9hdENvbnZl
cnNpb24uaCIKICNpbXBvcnQgIkxlbmd0aEZ1bmN0aW9ucy5oIiAvLyBUaGlzIGlzIGEgbGF5ZXJp
bmcgdmlvbGF0aW9uLgogI2ltcG9ydCAiUGxhdGZvcm1DQUxheWVyQ29jb2EuaCIKICNpbXBvcnQg
IlF1YXJ0ekNvcmVTUEkuaCIKICNpbXBvcnQgPFF1YXJ0ekNvcmUvUXVhcnR6Q29yZS5oPgorI2lt
cG9ydCA8d3RmL0Jsb2NrT2JqQ0V4Y2VwdGlvbnMuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNv
cmU7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1Bs
YXRmb3JtQ0FMYXllckNvY29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FMYXllckNvY29hLm1tCShyZXZpc2lvbiAy
MDA5NjgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0
Zm9ybUNBTGF5ZXJDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtMjcsNyArMjcsNiBAQAogI2lt
cG9ydCAiUGxhdGZvcm1DQUxheWVyQ29jb2EuaCIKIAogI2ltcG9ydCAiQW5pbWF0aW9uVXRpbGl0
aWVzLmgiCi0jaW1wb3J0ICJCbG9ja0V4Y2VwdGlvbnMuaCIKICNpbXBvcnQgIkdyYXBoaWNzQ29u
dGV4dC5oIgogI2ltcG9ydCAiR3JhcGhpY3NMYXllckNBLmgiCiAjaW1wb3J0ICJMZW5ndGhGdW5j
dGlvbnMuaCIKQEAgLTQ4LDYgKzQ3LDcgQEAKICNpbXBvcnQgPEFWRm91bmRhdGlvbi9BVkZvdW5k
YXRpb24uaD4KICNpbXBvcnQgPFF1YXJ0ekNvcmUvUXVhcnR6Q29yZS5oPgogI2ltcG9ydCA8b2Jq
Yy9ydW50aW1lLmg+CisjaW1wb3J0IDx3dGYvQmxvY2tPYmpDRXhjZXB0aW9ucy5oPgogI2ltcG9y
dCA8d3RmL0N1cnJlbnRUaW1lLmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRDb2NvYS5tbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250Q29j
b2EubW0JKHJldmlzaW9uIDIwMDk2OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL0ZvbnRDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtMjcsNyArMjcsNiBAQAog
I2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJGb250LmgiCiAKLSNpbXBvcnQgIkJsb2NrRXhj
ZXB0aW9ucy5oIgogI2ltcG9ydCAiQ29sb3IuaCIKICNpbXBvcnQgIkNvcmVHcmFwaGljc1NQSS5o
IgogI2ltcG9ydCAiQ29yZVRleHRTUEkuaCIKQEAgLTQwLDYgKzM5LDcgQEAKICNpbXBvcnQgPGZs
b2F0Lmg+CiAjaW1wb3J0IDx1bmljb2RlL3VjaGFyLmg+CiAjaW1wb3J0IDx3dGYvQXNzZXJ0aW9u
cy5oPgorI2ltcG9ydCA8d3RmL0Jsb2NrT2JqQ0V4Y2VwdGlvbnMuaD4KICNpbXBvcnQgPHd0Zi9O
ZXZlckRlc3Ryb3llZC5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogI2ltcG9ydCA8d3Rm
L1N0ZExpYkV4dHJhcy5oPgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
bWFjL0NvbG9yTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL21hYy9Db2xvck1hYy5tbQkocmV2aXNpb24gMjAwOTY4KQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0NvbG9yTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0y
Niw3ICsyNiw3IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIkNvbG9yTWFjLmgiCiAK
LSNpbXBvcnQgPFdlYkNvcmUvQmxvY2tFeGNlcHRpb25zLmg+CisjaW1wb3J0IDx3dGYvQmxvY2tP
YmpDRXhjZXB0aW9ucy5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogI2ltcG9ydCA8d3Rm
L1N0ZExpYkV4dHJhcy5oPgogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9tYWMvR3JhcGhpY3NDb250ZXh0M0RNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0dyYXBoaWNzQ29udGV4dDNETWFjLm1tCShyZXZpc2lv
biAyMDA5NjgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvR3JhcGhp
Y3NDb250ZXh0M0RNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTMyLDcgKzMyLDcgQEAKICNpbmNs
dWRlICJHcmFwaGljc0NvbnRleHQzRElPUy5oIgogI2VuZGlmCiAKLSNpbXBvcnQgIkJsb2NrRXhj
ZXB0aW9ucy5oIgorI2ltcG9ydCA8d3RmL0Jsb2NrT2JqQ0V4Y2VwdGlvbnMuaD4KIAogI2luY2x1
ZGUgIkNhbnZhc1JlbmRlcmluZ0NvbnRleHQuaCIKICNpbmNsdWRlIDxDb3JlR3JhcGhpY3MvQ0dC
aXRtYXBDb250ZXh0Lmg+CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9t
YWMvTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL01lZGlhUGxheWVyUHJpdmF0ZVFUS2l0Lm1tCShyZXZp
c2lvbiAyMDA5NjgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvTWVk
aWFQbGF5ZXJQcml2YXRlUVRLaXQubW0JKHdvcmtpbmcgY29weSkKQEAgLTI5LDcgKzI5LDYgQEAK
IAogI2ltcG9ydCAiTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQuaCIKIAotI2ltcG9ydCAiQmxvY2tF
eGNlcHRpb25zLmgiCiAjaW1wb3J0ICJEb2N1bWVudExvYWRlci5oIgogI2ltcG9ydCAiR3JhcGhp
Y3NDb250ZXh0LmgiCiAjaW1wb3J0ICJVUkwuaCIKQEAgLTQzLDYgKzQyLDcgQEAKICNpbXBvcnQg
IldlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaCIKICNpbXBvcnQgPFFUS2l0L1FUS2l0Lmg+CiAjaW1w
b3J0IDxvYmpjL3J1bnRpbWUuaD4KKyNpbXBvcnQgPHd0Zi9CbG9ja09iakNFeGNlcHRpb25zLmg+
CiAjaW1wb3J0IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAogU09GVF9MSU5LX0ZSQU1FV09SSyhR
VEtpdCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVNwZWVjaFN5
bnRoZXNpemVySU9TLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lv
cy9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVySU9TLm1tCShyZXZpc2lvbiAyMDA5NjgpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcklPUy5t
bQkod29ya2luZyBjb3B5KQpAQCAtMjksMTEgKzI5LDExIEBACiAKICNpZiBFTkFCTEUoU1BFRUNI
X1NZTlRIRVNJUykKIAotI2luY2x1ZGUgIkJsb2NrRXhjZXB0aW9ucy5oIgogI2luY2x1ZGUgIlBs
YXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TcGVl
Y2hTeW50aGVzaXNWb2ljZS5oIgogI2luY2x1ZGUgIlNvZnRMaW5raW5nLmgiCiAjaW5jbHVkZSA8
QVZGb3VuZGF0aW9uL0FWU3BlZWNoU3ludGhlc2lzLmg+CisjaW5jbHVkZSA8d3RmL0Jsb2NrT2Jq
Q0V4Y2VwdGlvbnMuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAKIFNPRlRfTElOS19G
UkFNRVdPUksoQVZGb3VuZGF0aW9uKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9z
L1Njcm9sbFZpZXdJT1MubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW9zL1Njcm9sbFZpZXdJT1MubW0JKHJldmlzaW9uIDIwMDk2OCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2lvcy9TY3JvbGxWaWV3SU9TLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsy
Niw2IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIlNjcm9sbFZpZXcuaCIKIAotI2lt
cG9ydCAiQmxvY2tFeGNlcHRpb25zLmgiCiAjaW1wb3J0ICJGbG9hdFJlY3QuaCIKICNpbXBvcnQg
IkludFJlY3QuaCIKICNpbXBvcnQgIkxvZ2dpbmcuaCIKQEAgLTM4LDYgKzM3LDcgQEAKICNpbXBv
cnQgIldBS1dpbmRvdy5oIgogI2ltcG9ydCAiV0tWaWV3UHJpdmF0ZS5oIgogI2ltcG9ydCAiV2Vi
Q29yZUZyYW1lVmlldy5oIgorI2ltcG9ydCA8d3RmL0Jsb2NrT2JqQ0V4Y2VwdGlvbnMuaD4KICNp
bXBvcnQgPHd0Zi9DdXJyZW50VGltZS5oPgogCiB1c2luZyBuYW1lc3BhY2Ugc3RkOwpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dpZGdldElPUy5tbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2lkZ2V0SU9TLm1tCShyZXZpc2lvbiAyMDA5Njgp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2lkZ2V0SU9TLm1tCSh3b3JraW5nIGNv
cHkpCkBAIC0yNiw3ICsyNiw2IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIldpZGdl
dC5oIgogCi0jaW1wb3J0ICJCbG9ja0V4Y2VwdGlvbnMuaCIKICNpbXBvcnQgIkN1cnNvci5oIgog
I2ltcG9ydCAiRG9jdW1lbnQuaCIKICNpbXBvcnQgIkZvbnRDYXNjYWRlLmgiCkBAIC00MCw2ICsz
OSw3IEBACiAjaW1wb3J0ICJXQUtXaW5kb3cuaCIKICNpbXBvcnQgIldlYkNvcmVGcmFtZVZpZXcu
aCIKICNpbXBvcnQgIldlYkNvcmVWaWV3LmgiCisjaW1wb3J0IDx3dGYvQmxvY2tPYmpDRXhjZXB0
aW9ucy5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogCiBAaW50ZXJmYWNlIE5TVmlldyAo
V2ViU2V0U2VsZWN0ZWRNZXRob2RzKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFj
L0Jsb2NrRXhjZXB0aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21hYy9CbG9ja0V4Y2VwdGlvbnMuaAkocmV2aXNpb24gMjAwOTY4KQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWFjL0Jsb2NrRXhjZXB0aW9ucy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMy
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDMgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoK
LSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
LSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0K
LSNpbXBvcnQgPEZvdW5kYXRpb24vTlNFeGNlcHRpb24uaD4KLQotV0VCQ09SRV9FWFBPUlQgTk9f
UkVUVVJOX0RVRV9UT19BU1NFUlQgdm9pZCBSZXBvcnRCbG9ja2VkT2JqQ0V4Y2VwdGlvbihOU0V4
Y2VwdGlvbiAqKTsKLQotI2RlZmluZSBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMgQHRyeSB7
Ci0jZGVmaW5lIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMgfSBAY2F0Y2goTlNFeGNlcHRpb24g
KmxvY2FsRXhjZXB0aW9uKSB7IFJlcG9ydEJsb2NrZWRPYmpDRXhjZXB0aW9uKGxvY2FsRXhjZXB0
aW9uKTsgfQotCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvQmxvY2tFeGNlcHRp
b25zLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9CbG9ja0V4
Y2VwdGlvbnMubW0JKHJldmlzaW9uIDIwMDk2OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21hYy9CbG9ja0V4Y2VwdGlvbnMubW0JKHdvcmtpbmcgY29weSkKQEAgLTEsMzggKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAwMywgMjAwNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgot
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaW1w
b3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIkJsb2NrRXhjZXB0aW9ucy5oIgotCi0jaW1wb3J0IDx3
dGYvQXNzZXJ0aW9ucy5oPgotCi12b2lkIFJlcG9ydEJsb2NrZWRPYmpDRXhjZXB0aW9uKE5TRXhj
ZXB0aW9uICpleGNlcHRpb24pCi17Ci0jaWYgQVNTRVJUX0RJU0FCTEVECi0gICAgTlNMb2coQCIq
KiogV2ViS2l0IGRpc2NhcmRpbmcgZXhjZXB0aW9uOiA8JUA+ICVAIiwgW2V4Y2VwdGlvbiBuYW1l
XSwgW2V4Y2VwdGlvbiByZWFzb25dKTsKLSNlbHNlCi0gICAgQVNTRVJUX1dJVEhfTUVTU0FHRSgw
LCAiVW5jYXVnaHQgZXhjZXB0aW9uIC0gJUAiLCBleGNlcHRpb24pOwotI2VuZGlmCi19CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvQ3Vyc29yTWFjLm1tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9DdXJzb3JNYWMubW0JKHJldmlzaW9uIDIwMDk2
OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9DdXJzb3JNYWMubW0JKHdvcmtpbmcg
Y29weSkKQEAgLTI2LDggKzI2LDggQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiQ3Vy
c29yLmgiCiAKLSNpbXBvcnQgIkJsb2NrRXhjZXB0aW9ucy5oIgogI2ltcG9ydCAiV2ViQ29yZVN5
c3RlbUludGVyZmFjZS5oIgorI2ltcG9ydCA8d3RmL0Jsb2NrT2JqQ0V4Y2VwdGlvbnMuaD4KICNp
bXBvcnQgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KIAogQGludGVyZmFjZSBXZWJDb3JlQ3Vyc29yQnVu
ZGxlIDogTlNPYmplY3QgeyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvTGFu
Z3VhZ2UubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0xhbmd1
YWdlLm1tCShyZXZpc2lvbiAyMDA5NjgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMv
TGFuZ3VhZ2UubW0JKHdvcmtpbmcgY29weSkKQEAgLTEsMTcyICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMDMsIDIwMDUsIDIwMDYsIDIwMTAsIDIwMTEsIDIwMTYgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBh
cmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW1wb3J0ICJjb25maWcuaCIKLSNpbXBv
cnQgIkxhbmd1YWdlLmgiCi0KLSNpbXBvcnQgIkJsb2NrRXhjZXB0aW9ucy5oIgotI2ltcG9ydCAi
Q0ZCdW5kbGVTUEkuaCIKLSNpbXBvcnQgIldlYkNvcmVOU1N0cmluZ0V4dHJhcy5oIgotI2ltcG9y
dCA8bXV0ZXg+Ci0jaW1wb3J0IDx1bmljb2RlL3Vsb2MuaD4KLSNpbXBvcnQgPHd0Zi9Bc3NlcnRp
b25zLmg+Ci0jaW1wb3J0IDx3dGYvTG9jay5oPgotI2ltcG9ydCA8d3RmL05ldmVyRGVzdHJveWVk
Lmg+Ci0jaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+Ci0jaW1wb3J0IDx3dGYvdGV4dC9XVEZTdHJp
bmcuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1zdGF0aWMgU3RhdGljTG9jayBwcmVmZXJy
ZWRMYW5ndWFnZXNNdXRleDsKLQotc3RhdGljIFZlY3RvcjxTdHJpbmc+JiBwcmVmZXJyZWRMYW5n
dWFnZXMoKQotewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxWZWN0b3I8U3RyaW5nPj4gbGFu
Z3VhZ2VzOwotICAgIHJldHVybiBsYW5ndWFnZXM7Ci19Ci0KLX0KLQotQGludGVyZmFjZSBXZWJM
YW5ndWFnZUNoYW5nZU9ic2VydmVyIDogTlNPYmplY3QKLUBlbmQKLQotQGltcGxlbWVudGF0aW9u
IFdlYkxhbmd1YWdlQ2hhbmdlT2JzZXJ2ZXIKLQotKyAodm9pZClsYW5ndWFnZVByZWZlcmVuY2Vz
RGlkQ2hhbmdlOihOU05vdGlmaWNhdGlvbiAqKW5vdGlmaWNhdGlvbgotewotICAgIFVOVVNFRF9Q
QVJBTShub3RpZmljYXRpb24pOwotCi0gICAgewotICAgICAgICBzdGQ6OmxvY2tfZ3VhcmQ8U3Rh
dGljTG9jaz4gbG9jayhXZWJDb3JlOjpwcmVmZXJyZWRMYW5ndWFnZXNNdXRleCk7Ci0gICAgICAg
IFdlYkNvcmU6OnByZWZlcnJlZExhbmd1YWdlcygpLmNsZWFyKCk7Ci0gICAgfQotCi0gICAgV2Vi
Q29yZTo6bGFuZ3VhZ2VEaWRDaGFuZ2UoKTsKLX0KLQotQGVuZAotCi1uYW1lc3BhY2UgV2ViQ29y
ZSB7Ci0KLXN0YXRpYyBTdHJpbmcgaHR0cFN0eWxlTGFuZ3VhZ2VDb2RlKE5TU3RyaW5nICpsYW5n
dWFnZSwgTlNTdHJpbmcgKmNvdW50cnkpCi17Ci0gICAgU0ludDMyIGxhbmd1YWdlQ29kZTsKLSAg
ICBTSW50MzIgcmVnaW9uQ29kZTsgCi0gICAgU0ludDMyIHNjcmlwdENvZGU7IAotICAgIENGU3Ry
aW5nRW5jb2Rpbmcgc3RyaW5nRW5jb2Rpbmc7Ci0gICAgCi0gICAgYm9vbCBsYW5ndWFnZURpZFNw
ZWNpZnlFeHBsaWNpdFZhcmlhbnQgPSBbbGFuZ3VhZ2UgcmFuZ2VPZkNoYXJhY3RlckZyb21TZXQ6
W05TQ2hhcmFjdGVyU2V0IGNoYXJhY3RlclNldFdpdGhDaGFyYWN0ZXJzSW5TdHJpbmc6QCItXyJd
XS5sb2NhdGlvbiAhPSBOU05vdEZvdW5kOwotCi0gICAgLy8gRklYTUU6IFRoaXMgdHJhbnNmb3Jt
YXRpb24gaXMgdmVyeSB3cm9uZzoKLSAgICAvLyAxLiBUaGVyZSBpcyBubyByZWFzb24gd2h5IENG
QnVuZGxlIGxvY2FsaXphdGlvbiBuYW1lcyB3b3VsZCBiZSBhdCBhbGwgcmVsYXRlZCB0byBsYW5n
dWFnZSBuYW1lcyBhcyB1c2VkIG9uIHRoZSBXZWIuCi0gICAgLy8gMi4gU2NyaXB0IE1hbmFnZXIg
Y29kZXMgY2Fubm90IHJlcHJlc2VudCBhbGwgbGFuZ3VhZ2VzIHRoYXQgYXJlIG5vdyBzdXBwb3J0
ZWQgYnkgdGhlIHBsYXRmb3JtLCBzbyB0aGUgY29udmVyc2lvbiBpcyBsb3NzeS4KLSAgICAvLyAz
LiBUaGlzIHNob3VsZCBwcm9iYWJseSBtYXRjaCB3aGF0IGlzIHNlbnQgYnkgdGhlIG5ldHdvcmsg
bGF5ZXIgYXMgQWNjZXB0LUxhbmd1YWdlLCBidXQgY3VycmVudGx5LCB0aGF0J3MgaW1wbGVtZW50
ZWQgc2VwYXJhdGVseS4KLSAgICBDRkJ1bmRsZUdldExvY2FsaXphdGlvbkluZm9Gb3JMb2NhbGl6
YXRpb24oKENGU3RyaW5nUmVmKWxhbmd1YWdlLCAmbGFuZ3VhZ2VDb2RlLCAmcmVnaW9uQ29kZSwg
JnNjcmlwdENvZGUsICZzdHJpbmdFbmNvZGluZyk7Ci0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVm
PiBwcmVmZXJyZWRMYW5ndWFnZUNvZGUgPSBhZG9wdENGKENGQnVuZGxlQ29weUxvY2FsaXphdGlv
bkZvckxvY2FsaXphdGlvbkluZm8obGFuZ3VhZ2VDb2RlLCByZWdpb25Db2RlLCBzY3JpcHRDb2Rl
LCBzdHJpbmdFbmNvZGluZykpOwotICAgIGlmIChwcmVmZXJyZWRMYW5ndWFnZUNvZGUpCi0gICAg
ICAgIGxhbmd1YWdlID0gKE5TU3RyaW5nICopcHJlZmVycmVkTGFuZ3VhZ2VDb2RlLmdldCgpOwot
Ci0gICAgLy8gTWFrZSB0aGUgc3RyaW5nIGxvd2VyY2FzZS4KLSAgICBOU1N0cmluZyAqbG93ZXJj
YXNlTGFuZ3VhZ2VDb2RlID0gW2xhbmd1YWdlIGxvd2VyY2FzZVN0cmluZ107Ci0gICAgTlNTdHJp
bmcgKmxvd2VyY2FzZUNvdW50cnlDb2RlID0gW2NvdW50cnkgbG93ZXJjYXNlU3RyaW5nXTsKLSAg
ICAKLSAgICAvLyBJZiB3ZSBzZWUgYSAiXyIgYWZ0ZXIgYSAyLWxldHRlciBsYW5ndWFnZSBjb2Rl
OgotICAgIC8vIElmIHRoZSBjb3VudHJ5IGlzIHZhbGlkIGFuZCB0aGUgbGFuZ3VhZ2UgZGlkIG5v
dCBzcGVjaWZ5IGEgdmFyaWFudCwgcmVwbGFjZSB0aGUgIl8iIGFuZAotICAgIC8vIHdoYXRldmVy
IGNvbWVzIGFmdGVyIGl0IHdpdGggIi0iIGZvbGxvd2VkIGJ5IHRoZSBjb3VudHJ5IGNvZGUuCi0g
ICAgLy8gT3RoZXJ3aXNlLCByZXBsYWNlIHRoZSAiXyIgd2l0aCBhICItIiBhbmQgdXNlIHdoYXRl
dmVyIGNvdW50cnkKLSAgICAvLyBDRkJ1bmRsZUNvcHlMb2NhbGl6YXRpb25Gb3JMb2NhbGl6YXRp
b25JbmZvKCkgcmV0dXJuZWQuCi0gICAgaWYgKFtsb3dlcmNhc2VMYW5ndWFnZUNvZGUgbGVuZ3Ro
XSA+PSAzICYmIFtsb3dlcmNhc2VMYW5ndWFnZUNvZGUgY2hhcmFjdGVyQXRJbmRleDoyXSA9PSAn
XycpIHsKLSAgICAgICAgaWYgKGNvdW50cnkgJiYgIWxhbmd1YWdlRGlkU3BlY2lmeUV4cGxpY2l0
VmFyaWFudCkKLSAgICAgICAgICAgIHJldHVybiBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpA
IiVALSVAIiwgW2xvd2VyY2FzZUxhbmd1YWdlQ29kZSBzdWJzdHJpbmdXaXRoUmFuZ2U6TlNNYWtl
UmFuZ2UoMCwgMildLCBsb3dlcmNhc2VDb3VudHJ5Q29kZV07Ci0gICAgICAgIAotICAgICAgICAv
LyBGYWxsIGJhY2sgdG8gb2xkZXIgYmVoYXZpb3IsIHdoaWNoIHVzZWQgdGhlIG9yaWdpbmFsIGxh
bmd1YWdlLWJhc2VkIGNvZGUgYnV0IGp1c3QgY2hhbmdlZAotICAgICAgICAvLyB0aGUgIl8iIHRv
IGEgIi0iLgotICAgICAgICBSZXRhaW5QdHI8TlNNdXRhYmxlU3RyaW5nPiBtdXRhYmxlTGFuZ3Vh
Z2VDb2RlID0gYWRvcHROUyhbbG93ZXJjYXNlTGFuZ3VhZ2VDb2RlIG11dGFibGVDb3B5XSk7Ci0g
ICAgICAgIFttdXRhYmxlTGFuZ3VhZ2VDb2RlLmdldCgpIHJlcGxhY2VDaGFyYWN0ZXJzSW5SYW5n
ZTpOU01ha2VSYW5nZSgyLCAxKSB3aXRoU3RyaW5nOkAiLSJdOwotICAgICAgICByZXR1cm4gbXV0
YWJsZUxhbmd1YWdlQ29kZS5nZXQoKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gbG93ZXJjYXNlTGFu
Z3VhZ2VDb2RlOwotfQotCi1zdGF0aWMgYm9vbCBpc1ZhbGlkSUNVQ291bnRyeUNvZGUoTlNTdHJp
bmcqIGNvdW50cnlDb2RlKQotewotICAgIGlmICghY291bnRyeUNvZGUpCi0gICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICBjb25zdCBjaGFyKiBjb25zdCogY291bnRyaWVzID0gdWxvY19nZXRJU09D
b3VudHJpZXMoKTsKLSAgICBjb25zdCBjaGFyKiBjb3VudHJ5VVRGOCA9IFtjb3VudHJ5Q29kZSBV
VEY4U3RyaW5nXTsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBjb3VudHJpZXNbaV07ICsraSkg
ewotICAgICAgICBjb25zdCBjaGFyKiBwb3NzaWJsZUNvdW50cnkgPSBjb3VudHJpZXNbaV07Ci0g
ICAgICAgIGlmICghc3RyY21wKGNvdW50cnlVVEY4LCBwb3NzaWJsZUNvdW50cnkpKQotICAgICAg
ICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICAgIHJldHVybiBmYWxzZTsKLX0KLQotVmVjdG9y
PFN0cmluZz4gcGxhdGZvcm1Vc2VyUHJlZmVycmVkTGFuZ3VhZ2VzKCkKLXsKLSNpZiBQTEFURk9S
TShNQUMpCi0gICAgc3RhdGljIGRpc3BhdGNoX29uY2VfdCBvbmNlVG9rZW47Ci0gICAgZGlzcGF0
Y2hfb25jZSgmb25jZVRva2VuLCBeewotICAgICAgICBbW05TRGlzdHJpYnV0ZWROb3RpZmljYXRp
b25DZW50ZXIgZGVmYXVsdENlbnRlcl0gYWRkT2JzZXJ2ZXI6W1dlYkxhbmd1YWdlQ2hhbmdlT2Jz
ZXJ2ZXIgc2VsZl0gc2VsZWN0b3I6QHNlbGVjdG9yKGxhbmd1YWdlUHJlZmVyZW5jZXNEaWRDaGFu
Z2U6KSBuYW1lOkAiQXBwbGVMYW5ndWFnZVByZWZlcmVuY2VzQ2hhbmdlZE5vdGlmaWNhdGlvbiIg
b2JqZWN0Om5pbF07Ci0gICAgfSk7Ci0jZW5kaWYKLQotICAgIEJFR0lOX0JMT0NLX09CSkNfRVhD
RVBUSU9OUzsKLQotICAgIHN0ZDo6bG9ja19ndWFyZDxTdGF0aWNMb2NrPiBsb2NrKHByZWZlcnJl
ZExhbmd1YWdlc011dGV4KTsKLSAgICBWZWN0b3I8U3RyaW5nPiYgdXNlclByZWZlcnJlZExhbmd1
YWdlcyA9IHByZWZlcnJlZExhbmd1YWdlcygpOwotCi0gICAgaWYgKHVzZXJQcmVmZXJyZWRMYW5n
dWFnZXMuaXNFbXB0eSgpKSB7Ci0gICAgICAgIFJldGFpblB0cjxDRkxvY2FsZVJlZj4gbG9jYWxl
ID0gYWRvcHRDRihDRkxvY2FsZUNvcHlDdXJyZW50KCkpOwotICAgICAgICBOU1N0cmluZyAqY291
bnRyeUNvZGUgPSAoTlNTdHJpbmcgKilDRkxvY2FsZUdldFZhbHVlKGxvY2FsZS5nZXQoKSwga0NG
TG9jYWxlQ291bnRyeUNvZGUpOwotICAgICAgICAKLSAgICAgICAgaWYgKCFpc1ZhbGlkSUNVQ291
bnRyeUNvZGUoY291bnRyeUNvZGUpKQotICAgICAgICAgICAgY291bnRyeUNvZGUgPSBuaWw7Ci0g
ICAgICAgIAotICAgICAgICBSZXRhaW5QdHI8Q0ZBcnJheVJlZj4gbGFuZ3VhZ2VzID0gYWRvcHRD
RihDRkxvY2FsZUNvcHlQcmVmZXJyZWRMYW5ndWFnZXMoKSk7Ci0gICAgICAgIENGSW5kZXggbGFu
Z3VhZ2VDb3VudCA9IENGQXJyYXlHZXRDb3VudChsYW5ndWFnZXMuZ2V0KCkpOwotICAgICAgICBp
ZiAoIWxhbmd1YWdlQ291bnQpCi0gICAgICAgICAgICB1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzLmFw
cGVuZCgiZW4iKTsKLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBmb3IgKENGSW5kZXggaSA9
IDA7IGkgPCBsYW5ndWFnZUNvdW50OyBpKyspCi0gICAgICAgICAgICAgICAgdXNlclByZWZlcnJl
ZExhbmd1YWdlcy5hcHBlbmQoaHR0cFN0eWxlTGFuZ3VhZ2VDb2RlKChOU1N0cmluZyAqKUNGQXJy
YXlHZXRWYWx1ZUF0SW5kZXgobGFuZ3VhZ2VzLmdldCgpLCBpKSwgY291bnRyeUNvZGUpKTsKLSAg
ICAgICAgfQotICAgIH0KLQotICAgIFZlY3RvcjxTdHJpbmc+IHVzZXJQcmVmZXJyZWRMYW5ndWFn
ZXNDb3B5OwotICAgIHVzZXJQcmVmZXJyZWRMYW5ndWFnZXNDb3B5LnJlc2VydmVJbml0aWFsQ2Fw
YWNpdHkodXNlclByZWZlcnJlZExhbmd1YWdlcy5zaXplKCkpOwotCi0gICAgZm9yIChhdXRvJiBs
YW5ndWFnZSA6IHVzZXJQcmVmZXJyZWRMYW5ndWFnZXMpCi0gICAgICAgIHVzZXJQcmVmZXJyZWRM
YW5ndWFnZXNDb3B5LnVuY2hlY2tlZEFwcGVuZChsYW5ndWFnZS5pc29sYXRlZENvcHkoKSk7Ci0K
LSAgICByZXR1cm4gdXNlclByZWZlcnJlZExhbmd1YWdlc0NvcHk7Ci0KLSAgICBFTkRfQkxPQ0tf
T0JKQ19FWENFUFRJT05TOwotCi0gICAgcmV0dXJuIFZlY3RvcjxTdHJpbmc+KCk7Ci19Ci0KLX0K
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxBbmltYXRvck1hYy5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsQW5pbWF0b3JN
YWMubW0JKHJldmlzaW9uIDIwMDk2OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9T
Y3JvbGxBbmltYXRvck1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjksNyArMjksNiBAQAogCiAj
aW5jbHVkZSAiU2Nyb2xsQW5pbWF0b3JNYWMuaCIKIAotI2luY2x1ZGUgIkJsb2NrRXhjZXB0aW9u
cy5oIgogI2luY2x1ZGUgIkZsb2F0UG9pbnQuaCIKICNpbmNsdWRlICJHcmFwaGljc0xheWVyLmgi
CiAjaW5jbHVkZSAiTG9nZ2luZy5oIgpAQCAtNDIsNiArNDEsNyBAQAogI2luY2x1ZGUgIlNjcm9s
bGJhclRoZW1lTWFjLmgiCiAjaW5jbHVkZSAiVGV4dFN0cmVhbS5oIgogI2luY2x1ZGUgIldlYkNv
cmVTeXN0ZW1JbnRlcmZhY2UuaCIKKyNpbmNsdWRlIDx3dGYvQmxvY2tPYmpDRXhjZXB0aW9ucy5o
PgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWFjL1Njcm9sbFZpZXdNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWFjL1Njcm9sbFZpZXdNYWMubW0JKHJldmlzaW9uIDIwMDk2OCkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxWaWV3TWFjLm1tCSh3b3JraW5nIGNvcHkpCkBA
IC0yNiwxMyArMjYsMTMgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiU2Nyb2xsVmll
dy5oIgogCi0jaW1wb3J0ICJCbG9ja0V4Y2VwdGlvbnMuaCIKICNpbXBvcnQgIkZsb2F0UmVjdC5o
IgogI2ltcG9ydCAiRmxvYXRTaXplLmgiCiAjaW1wb3J0ICJJbnRSZWN0LmgiCiAjaW1wb3J0ICJM
b2dnaW5nLmgiCiAjaW1wb3J0ICJOb3RJbXBsZW1lbnRlZC5oIgogI2ltcG9ydCAiV2ViQ29yZUZy
YW1lVmlldy5oIgorI2ltcG9ydCA8d3RmL0Jsb2NrT2JqQ0V4Y2VwdGlvbnMuaD4KIAogQGludGVy
ZmFjZSBOU1Njcm9sbFZpZXcgKCkKIC0gKE5TRWRnZUluc2V0cyljb250ZW50SW5zZXRzOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbGJhclRoZW1lTWFjLm1tCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxiYXJUaGVtZU1hYy5t
bQkocmV2aXNpb24gMjAwOTY4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9s
bGJhclRoZW1lTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw2IEBACiAjaW5jbHVk
ZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiU2Nyb2xsYmFyVGhlbWVNYWMuaCIKIAotI2luY2x1ZGUg
IkJsb2NrRXhjZXB0aW9ucy5oIgogI2luY2x1ZGUgIkNvbG9yTWFjLmgiCiAjaW5jbHVkZSAiR3Jh
cGhpY3NMYXllci5oIgogI2luY2x1ZGUgIkltYWdlQnVmZmVyLmgiCkBAIC0zOCw2ICszNyw3IEBA
CiAjaW5jbHVkZSAiU2Nyb2xsVmlldy5oIgogI2luY2x1ZGUgIldlYkNvcmVTeXN0ZW1JbnRlcmZh
Y2UuaCIKICNpbmNsdWRlIDxDYXJib24vQ2FyYm9uLmg+CisjaW5jbHVkZSA8d3RmL0Jsb2NrT2Jq
Q0V4Y2VwdGlvbnMuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9O
ZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9UaGVtZU1hYy5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvVGhlbWVNYWMubW0JKHJldmlzaW9uIDIwMDk2OCkKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9UaGVtZU1hYy5tbQkod29ya2luZyBjb3B5KQpA
QCAtMjcsNyArMjcsNiBAQAogI2ltcG9ydCAiVGhlbWVNYWMuaCIKIAogI2ltcG9ydCAiQVhPYmpl
Y3RDYWNoZS5oIgotI2ltcG9ydCAiQmxvY2tFeGNlcHRpb25zLmgiCiAjaW1wb3J0ICJHcmFwaGlj
c0NvbnRleHQuaCIKICNpbXBvcnQgIkltYWdlQnVmZmVyLmgiCiAjaW1wb3J0ICJMb2NhbEN1cnJl
bnRHcmFwaGljc0NvbnRleHQuaCIKQEAgLTM1LDYgKzM0LDcgQEAKICNpbXBvcnQgIlNjcm9sbFZp
ZXcuaCIKICNpbXBvcnQgIldlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaCIKICNpbXBvcnQgPENhcmJv
bi9DYXJib24uaD4KKyNpbXBvcnQgPHd0Zi9CbG9ja09iakNFeGNlcHRpb25zLmg+CiAjaW1wb3J0
IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbXBvcnQgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KIApJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dpZGdldE1hYy5tbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2lkZ2V0TWFjLm1tCShyZXZpc2lvbiAy
MDA5NjgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2lkZ2V0TWFjLm1tCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNiw4ICsyNiw2IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQg
IldpZGdldC5oIgogCi0KLSNpbXBvcnQgIkJsb2NrRXhjZXB0aW9ucy5oIgogI2ltcG9ydCAiQ2hy
b21lLmgiCiAjaW1wb3J0ICJDdXJzb3IuaCIKICNpbXBvcnQgIkRvY3VtZW50LmgiCkBAIC00MCw2
ICszOCw3IEBACiAjaW1wb3J0ICJSdW50aW1lQXBwbGljYXRpb25DaGVja3MuaCIKICNpbXBvcnQg
IldlYkNvcmVGcmFtZVZpZXcuaCIKICNpbXBvcnQgIldlYkNvcmVWaWV3LmgiCisjaW1wb3J0IDx3
dGYvQmxvY2tPYmpDRXhjZXB0aW9ucy5oPgogI2ltcG9ydCA8d3RmL1JlZi5oPgogI2ltcG9ydCA8
d3RmL1JldGFpblB0ci5oPgogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9tYWMvQVZWaWRlb0NhcHR1cmVTb3VyY2UubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWVmlkZW9DYXB0dXJlU291cmNlLm1tCShy
ZXZpc2lvbiAyMDA5NjgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9t
YWMvQVZWaWRlb0NhcHR1cmVTb3VyY2UubW0JKHdvcmtpbmcgY29weSkKQEAgLTI5LDcgKzI5LDYg
QEAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKSAmJiBVU0UoQVZGT1VOREFUSU9OKQogCiAjaW1w
b3J0ICJBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyLmgiCi0jaW1wb3J0ICJCbG9ja0V4Y2VwdGlvbnMu
aCIKICNpbXBvcnQgIkdyYXBoaWNzQ29udGV4dENHLmgiCiAjaW1wb3J0ICJJbWFnZUJ1ZmZlci5o
IgogI2ltcG9ydCAiSW50UmVjdC5oIgpAQCAtNDEsNiArNDAsNyBAQAogI2ltcG9ydCAiUmVhbHRp
bWVNZWRpYVNvdXJjZVNldHRpbmdzLmgiCiAjaW1wb3J0IDxBVkZvdW5kYXRpb24vQVZGb3VuZGF0
aW9uLmg+CiAjaW1wb3J0IDxvYmpjL3J1bnRpbWUuaD4KKyNpbXBvcnQgPHd0Zi9CbG9ja09iakNF
eGNlcHRpb25zLmg+CiAKICNpbXBvcnQgIkNvcmVNZWRpYVNvZnRMaW5rLmgiCiAjaW1wb3J0ICJD
b3JlVmlkZW9Tb2Z0TGluay5oIgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9tYWMvQ29va2llSmFyTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvbWFjL0Nvb2tpZUphck1hYy5tbQkocmV2aXNpb24gMjAwOTY4KQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvQ29va2llSmFyTWFjLm1tCSh3b3JraW5n
IGNvcHkpCkBAIC0yNiwxMCArMjYsMTAgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAi
UGxhdGZvcm1Db29raWVKYXIuaCIKIAotI2ltcG9ydCAiQmxvY2tFeGNlcHRpb25zLmgiCiAjaW1w
b3J0ICJDRk5ldHdvcmtTUEkuaCIKICNpbXBvcnQgIk5ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oIgog
I2ltcG9ydCAiV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oIgorI2ltcG9ydCA8d3RmL0Jsb2NrT2Jq
Q0V4Y2VwdGlvbnMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogc3RhdGljIE5TSFRUUENvb2tp
ZVN0b3JhZ2UgKmNvb2tpZVN0b3JhZ2UoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJik7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZUVycm9yTWFj
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jl
c291cmNlRXJyb3JNYWMubW0JKHJldmlzaW9uIDIwMDk2OCkKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlRXJyb3JNYWMubW0JKHdvcmtpbmcgY29weSkKQEAg
LTI2LDEwICsyNiwxMCBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJSZXNvdXJjZUVy
cm9yLmgiCiAKLSNpbXBvcnQgIkJsb2NrRXhjZXB0aW9ucy5oIgogI2ltcG9ydCAiVVJMLmgiCiAj
aW1wb3J0IDxDb3JlRm91bmRhdGlvbi9DRkVycm9yLmg+CiAjaW1wb3J0IDxGb3VuZGF0aW9uL0Zv
dW5kYXRpb24uaD4KKyNpbXBvcnQgPHd0Zi9CbG9ja09iakNFeGNlcHRpb25zLmg+CiAKICNpZiBQ
TEFURk9STShJT1MpICYmIFVTRShDRk5FVFdPUkspCiAjaW1wb3J0IDxDRk5ldHdvcmsvQ0ZTb2Nr
ZXRTdHJlYW1Qcml2Lmg+CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21h
Yy9SZXNvdXJjZUhhbmRsZU1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZUhhbmRsZU1hYy5tbQkocmV2aXNpb24gMjAwOTY4KQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VIYW5kbGVNYWMu
bW0JKHdvcmtpbmcgY29weSkKQEAgLTI4LDcgKzI4LDYgQEAKIAogI2ltcG9ydCAiQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UuaCIKICNpbXBvcnQgIkF1dGhlbnRpY2F0aW9uTWFjLmgiCi0jaW1wb3J0
ICJCbG9ja0V4Y2VwdGlvbnMuaCIKICNpbXBvcnQgIkNGTmV0d29ya1NQSS5oIgogI2ltcG9ydCAi
Q29va2llU3RvcmFnZS5oIgogI2ltcG9ydCAiQ3JlZGVudGlhbFN0b3JhZ2UuaCIKQEAgLTUzLDYg
KzUyLDcgQEAKICNpbXBvcnQgIlN5bmNocm9ub3VzTG9hZGVyQ2xpZW50LmgiCiAjaW1wb3J0ICJX
ZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmgiCiAjaW1wb3J0ICJXZWJDb3JlVVJMUmVzcG9uc2UuaCIK
KyNpbXBvcnQgPHd0Zi9CbG9ja09iakNFeGNlcHRpb25zLmg+CiAjaW1wb3J0IDx3dGYvUmVmLmg+
CiAjaW1wb3J0IDx3dGYvU2NoZWR1bGVQYWlyLmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9CYXNlNjQu
aD4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NwaS9jZi9DRkJ1bmRsZVNQSS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NwaS9jZi9DRkJ1bmRsZVNQSS5o
CShyZXZpc2lvbiAyMDA5NjgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcGkvY2YvQ0ZC
dW5kbGVTUEkuaAkod29ya2luZyBjb3B5KQpAQCAtMSw0NCArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDE1IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0g
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaWZuZGVmIENGQnVuZGxlU1BJX2gK
LSNkZWZpbmUgQ0ZCdW5kbGVTUElfaAotCi0jaW5jbHVkZSA8Q29yZUZvdW5kYXRpb24vQ29yZUZv
dW5kYXRpb24uaD4KLQotI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCi0jaW1wb3J0IDxDb3Jl
Rm91bmRhdGlvbi9DRlByaXYuaD4KLSNlbHNlCi0jaW5jbHVkZSA8d3RmL3NwaS9kYXJ3aW4vWFBD
U1BJLmg+Ci0jZW5kaWYKLQotZXh0ZXJuICJDIiB7Ci12b2lkIF9DRkJ1bmRsZVNldHVwWFBDQm9v
dHN0cmFwKHhwY19vYmplY3RfdCBib290c3RyYXApOwotCi1Cb29sZWFuIENGQnVuZGxlR2V0TG9j
YWxpemF0aW9uSW5mb0ZvckxvY2FsaXphdGlvbihDRlN0cmluZ1JlZiBsb2NhbGl6YXRpb25OYW1l
LCBTSW50MzIgKmxhbmd1YWdlQ29kZSwgU0ludDMyICpyZWdpb25Db2RlLCBTSW50MzIgKnNjcmlw
dENvZGUsIENGU3RyaW5nRW5jb2RpbmcgKnN0cmluZ0VuY29kaW5nKTsKLUNGU3RyaW5nUmVmIENG
QnVuZGxlQ29weUxvY2FsaXphdGlvbkZvckxvY2FsaXphdGlvbkluZm8oU0ludDMyIGxhbmd1YWdl
Q29kZSwgU0ludDMyIHJlZ2lvbkNvZGUsIFNJbnQzMiBzY3JpcHRDb2RlLCBDRlN0cmluZ0VuY29k
aW5nIHN0cmluZ0VuY29kaW5nKTsKLX0KLQotI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS91bml4L0xhbmd1YWdlVW5peC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vdW5peC9MYW5ndWFnZVVuaXguY3BwCShyZXZpc2lvbiAyMDA5NjgpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS91bml4L0xhbmd1YWdlVW5peC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNDkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNyBBbHAgVG9rZXIg
PGFscEBhdG9rZXIuY29tPgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5
b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVy
bXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFzIHB1Ymxp
c2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqIHZlcnNpb24g
MiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4K
LSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3
aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVu
IHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogTGlicmFyeSBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogWW91IHNob3VsZCBoYXZl
IHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZQotICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4g
IElmIG5vdCwgd3JpdGUgdG8KLSAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4s
IDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gKiBCb3N0b24sIE1BIDAyMTEwLTEz
MDEsIFVTQS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiTGFuZ3VhZ2Uu
aCIKLQotI2luY2x1ZGUgPGxvY2FsZS5oPgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLSNpbmNs
dWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi0vLyBV
c2luZyBwYW5nb19sYW5ndWFnZV9nZXRfZGVmYXVsdCgpIGhlcmUgaXMgbm90IGFuIG9wdGlvbiwg
YmVjYXVzZQotLy8gaXQgZG9lc24ndCBzdXBwb3J0IGNoYW5naW5nIHRoZSBsb2NhbGUgaW4gcnVu
dGltZSwgc28gaXQgcmV0dXJucwotLy8gYWx3YXlzIHRoZSBzYW1lIHZhbHVlLgotc3RhdGljIFN0
cmluZyBwbGF0Zm9ybUxhbmd1YWdlKCkKLXsKLSAgICBTdHJpbmcgbG9jYWxlRGVmYXVsdChzZXRs
b2NhbGUoTENfQ1RZUEUsIG51bGxwdHIpKTsKLSAgICBpZiAobG9jYWxlRGVmYXVsdC5pc0VtcHR5
KCkpCi0gICAgICAgIHJldHVybiBTdHJpbmcoImMiKTsKLQotICAgIFN0cmluZyBub3JtYWxpemVk
RGVmYXVsdCA9IGxvY2FsZURlZmF1bHQuY29udmVydFRvQVNDSUlMb3dlcmNhc2UoKTsKLSAgICBu
b3JtYWxpemVkRGVmYXVsdC5yZXBsYWNlKCdfJywgJy0nKTsKLSAgICBub3JtYWxpemVkRGVmYXVs
dC50cnVuY2F0ZShub3JtYWxpemVkRGVmYXVsdC5maW5kKCcuJykpOwotICAgIHJldHVybiBub3Jt
YWxpemVkRGVmYXVsdDsKLX0KLQotVmVjdG9yPFN0cmluZz4gcGxhdGZvcm1Vc2VyUHJlZmVycmVk
TGFuZ3VhZ2VzKCkKLXsKLSAgICByZXR1cm4geyBwbGF0Zm9ybUxhbmd1YWdlKCkgfTsKLX0KLQot
fQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0xhbmd1YWdlV2luLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vTGFuZ3VhZ2VXaW4uY3BwCShy
ZXZpc2lvbiAyMDA5NjgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vTGFuZ3VhZ2VX
aW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDc3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMDcgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNs
dWRlICJMYW5ndWFnZS5oIgotCi0jaW5jbHVkZSA8d2luZG93cy5oPgotI2luY2x1ZGUgPHd0Zi9W
ZWN0b3IuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQotbmFtZXNwYWNlIFdl
YkNvcmUgewotCi1zdGF0aWMgU3RyaW5nIGxvY2FsZUluZm8oTENUWVBFIGxvY2FsZVR5cGUsIGNv
bnN0IFN0cmluZyYgZmFsbGJhY2spCi17Ci0gICAgTEFOR0lEIGxhbmdJRCA9IEdldFVzZXJEZWZh
dWx0VUlMYW5ndWFnZSgpOwotICAgIGludCBsb2NhbGVDaGFycyA9IEdldExvY2FsZUluZm8obGFu
Z0lELCBsb2NhbGVUeXBlLCAwLCAwKTsKLSAgICBpZiAoIWxvY2FsZUNoYXJzKQotICAgICAgICBy
ZXR1cm4gZmFsbGJhY2s7Ci0gICAgVUNoYXIqIGxvY2FsZU5hbWVCdWY7Ci0gICAgU3RyaW5nIGxv
Y2FsZU5hbWUgPSBTdHJpbmc6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQobG9jYWxlQ2hhcnMsIGxvY2Fs
ZU5hbWVCdWYpOwotICAgIGxvY2FsZUNoYXJzID0gR2V0TG9jYWxlSW5mbyhsYW5nSUQsIGxvY2Fs
ZVR5cGUsIGxvY2FsZU5hbWVCdWYsIGxvY2FsZUNoYXJzKTsKLSAgICBpZiAoIWxvY2FsZUNoYXJz
KQotICAgICAgICByZXR1cm4gZmFsbGJhY2s7Ci0gICAgaWYgKGxvY2FsZU5hbWUuaXNFbXB0eSgp
KQotICAgICAgICByZXR1cm4gZmFsbGJhY2s7Ci0KLSAgICBsb2NhbGVOYW1lLnRydW5jYXRlKGxv
Y2FsZU5hbWUubGVuZ3RoKCkgLSAxKTsKLSAgICByZXR1cm4gbG9jYWxlTmFtZTsKLX0KLQotc3Rh
dGljIFN0cmluZyBwbGF0Zm9ybUxhbmd1YWdlKCkKLXsKLSAgICBzdGF0aWMgU3RyaW5nIGNvbXB1
dGVkRGVmYXVsdExhbmd1YWdlOwotICAgIGlmICghY29tcHV0ZWREZWZhdWx0TGFuZ3VhZ2UuaXNF
bXB0eSgpKQotICAgICAgICByZXR1cm4gY29tcHV0ZWREZWZhdWx0TGFuZ3VhZ2U7Ci0KLSAgICBT
dHJpbmcgbGFuZ3VhZ2VOYW1lID0gbG9jYWxlSW5mbyhMT0NBTEVfU0lTTzYzOUxBTkdOQU1FLCAi
ZW4iKTsKLSAgICBTdHJpbmcgY291bnRyeU5hbWUgPSBsb2NhbGVJbmZvKExPQ0FMRV9TSVNPMzE2
NkNUUllOQU1FLCBTdHJpbmcoKSk7Ci0KLSAgICBpZiAoY291bnRyeU5hbWUuaXNFbXB0eSgpKQot
ICAgICAgICBjb21wdXRlZERlZmF1bHRMYW5ndWFnZSA9IGxhbmd1YWdlTmFtZTsKLSAgICBlbHNl
Ci0gICAgICAgIGNvbXB1dGVkRGVmYXVsdExhbmd1YWdlID0gbGFuZ3VhZ2VOYW1lICsgJy0nICsg
Y291bnRyeU5hbWU7Ci0KLSAgICByZXR1cm4gY29tcHV0ZWREZWZhdWx0TGFuZ3VhZ2U7Ci19Ci0K
LVZlY3RvcjxTdHJpbmc+IHBsYXRmb3JtVXNlclByZWZlcnJlZExhbmd1YWdlcygpCi17Ci0gICAg
VmVjdG9yPFN0cmluZz4gdXNlclByZWZlcnJlZExhbmd1YWdlczsKLSAgICB1c2VyUHJlZmVycmVk
TGFuZ3VhZ2VzLmFwcGVuZChwbGF0Zm9ybUxhbmd1YWdlKCkpOwotICAgIHJldHVybiB1c2VyUHJl
ZmVycmVkTGFuZ3VhZ2VzOwotfQotCi19CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFj
L1JlbW90ZUxheWVyVHJlZVByb3BlcnR5QXBwbGllci5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvbWFjL1JlbW90ZUxheWVyVHJlZVByb3BlcnR5QXBwbGllci5tbQkocmV2
aXNpb24gMjAwOTY4KQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9SZW1vdGVMYXllclRy
ZWVQcm9wZXJ0eUFwcGxpZXIubW0JKHdvcmtpbmcgY29weSkKQEAgLTMwLDEwICszMCwxMCBAQAog
I2ltcG9ydCAiUGxhdGZvcm1DQUxheWVyUmVtb3RlLmgiCiAjaW1wb3J0ICJSZW1vdGVMYXllclRy
ZWVIb3N0LmgiCiAjaW1wb3J0IDxRdWFydHpDb3JlL1F1YXJ0ekNvcmUuaD4KLSNpbXBvcnQgPFdl
YkNvcmUvQmxvY2tFeGNlcHRpb25zLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1BsYXRmb3JtQ0FGaWx0
ZXJzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1F1YXJ0ekNvcmVTUEkuaD4KICNpbXBvcnQgPFdlYkNv
cmUvU2Nyb2xsYmFyVGhlbWVNYWMuaD4KKyNpbXBvcnQgPHd0Zi9CbG9ja09iakNFeGNlcHRpb25z
Lmg+CiAKICNpZiBQTEFURk9STShJT1MpCiAjaW1wb3J0IDxVSUtpdC9VSVZpZXcuaD4KSW5kZXg6
IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXVuY2hlci9tYWMvUHJvY2Vzc0xhdW5jaGVyTWFj
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXVuY2hlci9tYWMv
UHJvY2Vzc0xhdW5jaGVyTWFjLm1tCShyZXZpc2lvbiAyMDA5NjgpCisrKyBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvTGF1bmNoZXIvbWFjL1Byb2Nlc3NMYXVuY2hlck1hYy5tbQkod29ya2luZyBj
b3B5KQpAQCAtMjYsNyArMjYsNiBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJQcm9j
ZXNzTGF1bmNoZXIuaCIKIAotI2ltcG9ydCA8V2ViQ29yZS9DRkJ1bmRsZVNQSS5oPgogI2ltcG9y
dCA8V2ViQ29yZS9TZXJ2ZXJzU1BJLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1NvZnRMaW5raW5nLmg+
CiAjaW1wb3J0IDxXZWJDb3JlL1dlYkNvcmVOU1N0cmluZ0V4dHJhcy5oPgpAQCAtNDEsNiArNDAs
NyBAQAogI2ltcG9ydCA8d3RmL1J1bkxvb3AuaD4KICNpbXBvcnQgPHd0Zi9UaHJlYWRpbmcuaD4K
ICNpbXBvcnQgPHd0Zi9zcGkvZGFyd2luL1hQQ1NQSS5oPgorI2ltcG9ydCA8d3RmL3NwaS9jZi9D
RkJ1bmRsZVNQSS5oPgogI2ltcG9ydCA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2ltcG9ydCA8d3Rm
L3RleHQvV1RGU3RyaW5nLmg+CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9TY3Jv
bGxpbmcvaW9zL1Njcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVJT1MubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1Njcm9sbGluZy9pb3MvU2Nyb2xsaW5n
VHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUy5tbQkocmV2aXNpb24gMjAwOTY4KQorKysgU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1Njcm9sbGluZy9pb3MvU2Nyb2xsaW5nVHJlZU92ZXJmbG93
U2Nyb2xsaW5nTm9kZUlPUy5tbQkod29ya2luZyBjb3B5KQpAQCAtMzAsMTEgKzMwLDExIEBACiAj
aWYgRU5BQkxFKEFTWU5DX1NDUk9MTElORykKIAogI2ltcG9ydCA8UXVhcnR6Q29yZS9RdWFydHpD
b3JlLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL0Jsb2NrRXhjZXB0aW9ucy5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9TY3JvbGxpbmdTdGF0ZU92ZXJmbG93U2Nyb2xsaW5nTm9kZS5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9TY3JvbGxpbmdUcmVlLmg+CiAjaW1wb3J0IDxVSUtpdC9VSVBhbkdlc3R1cmVSZWNvZ25p
emVyLmg+CiAjaW1wb3J0IDxVSUtpdC9VSVNjcm9sbFZpZXcuaD4KKyNpbXBvcnQgPHd0Zi9CbG9j
a09iakNFeGNlcHRpb25zLmg+CiAjaW1wb3J0IDx3dGYvVGVtcG9yYXJ5Q2hhbmdlLmg+CiAKICNp
ZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL21hYy9QbGF0Zm9ybUNBQW5pbWF0aW9uUmVtb3RlLm1tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUGxhdGZvcm1DQUFuaW1hdGlv
blJlbW90ZS5tbQkocmV2aXNpb24gMjAwOTY4KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL21hYy9QbGF0Zm9ybUNBQW5pbWF0aW9uUmVtb3RlLm1tCSh3b3JraW5nIGNvcHkp
CkBAIC0yOSwxMyArMjksMTMgQEAKICNpbXBvcnQgIkFyZ3VtZW50Q29kZXJzLmgiCiAjaW1wb3J0
ICJSZW1vdGVMYXllclRyZWVIb3N0LmgiCiAjaW1wb3J0ICJXZWJDb3JlQXJndW1lbnRDb2RlcnMu
aCIKLSNpbXBvcnQgPFdlYkNvcmUvQmxvY2tFeGNlcHRpb25zLmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L0dyYXBoaWNzTGF5ZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvUGxhdGZvcm1DQUFuaW1hdGlvbkNv
Y29hLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1BsYXRmb3JtQ0FGaWx0ZXJzLmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL1F1YXJ0ekNvcmVTUEkuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGV4dFN0cmVhbS5oPgog
I2ltcG9ydCA8V2ViQ29yZS9UaW1pbmdGdW5jdGlvbi5oPgorI2ltcG9ydCA8d3RmL0Jsb2NrT2Jq
Q0V4Y2VwdGlvbnMuaD4KICNpbXBvcnQgPHd0Zi9DdXJyZW50VGltZS5oPgogI2ltcG9ydCA8d3Rm
L1JldGFpblB0ci5oPgogI2ltcG9ydCA8UXVhcnR6Q29yZS9RdWFydHpDb3JlLmg+CkluZGV4OiBT
b3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9Qb3B1cE1lbnVNYWMubW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvUG9wdXBNZW51TWFjLm1tCShy
ZXZpc2lvbiAyMDA5NjgpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9Qb3B1
cE1lbnVNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTI0LDcgKzI0LDYgQEAKICNpbXBvcnQgIldl
YkZyYW1lSW50ZXJuYWwuaCIKICNpbXBvcnQgPFdlYkNvcmUvSW50UmVjdC5oPgogI2ltcG9ydCA8
V2ViQ29yZS9BWE9iamVjdENhY2hlLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL0Jsb2NrRXhjZXB0aW9u
cy5oPgogI2ltcG9ydCA8V2ViQ29yZS9DaHJvbWUuaD4KICNpbXBvcnQgPFdlYkNvcmUvQ2hyb21l
Q2xpZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0V2ZW50SGFuZGxlci5oPgpAQCAtMzQsNiArMzMs
NyBAQAogI2ltcG9ydCA8V2ViQ29yZS9QYWdlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1BvcHVwTWVu
dUNsaWVudC5oPgogI2ltcG9ydCA8V2ViS2l0U3lzdGVtSW50ZXJmYWNlLmg+CisjaW1wb3J0IDx3
dGYvQmxvY2tPYmpDRXhjZXB0aW9ucy5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIApJ
bmRleDogU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9t
ZUNsaWVudC5tbQkocmV2aXNpb24gMjAwOTY4KQorKysgU291cmNlL1dlYktpdC9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC01NCw3ICs1NCw2
IEBACiAjaW1wb3J0ICJXZWJWaWV3LmgiCiAjaW1wb3J0ICJXZWJWaWV3SW50ZXJuYWwuaCIKICNp
bXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgotI2ltcG9ydCA8V2ViQ29yZS9CbG9ja0V4
Y2VwdGlvbnMuaD4KICNpbXBvcnQgPFdlYkNvcmUvQ29sb3JDaG9vc2VyLmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL0NvbnRleHRNZW51Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0NvbnRleHRNZW51Q29udHJv
bGxlci5oPgpAQCAtODIsNiArODEsNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9TZXJpYWxpemVkQ3J5
cHRvS2V5V3JhcC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XaWRnZXQuaD4KICNpbXBvcnQgPFdlYkNv
cmUvV2luZG93RmVhdHVyZXMuaD4KKyNpbXBvcnQgPHd0Zi9CbG9ja09iakNFeGNlcHRpb25zLmg+
CiAjaW1wb3J0IDx3dGYvUGFzc1JlZlB0ci5oPgogI2ltcG9ydCA8d3RmL1ZlY3Rvci5oPgogI2lt
cG9ydCA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQkocmV2aXNp
b24gMjAwOTY4KQorKysgU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVM
b2FkZXJDbGllbnQubW0JKHdvcmtpbmcgY29weSkKQEAgLTc2LDcgKzc2LDYgQEAKICNpbXBvcnQg
PFdlYkNvcmUvQXV0aGVudGljYXRpb25NYWMuaD4KICNpbXBvcnQgPFdlYkNvcmUvQmFja0Zvcndh
cmRDb250cm9sbGVyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0JhY2tGb3J3YXJkTGlzdC5oPgotI2lt
cG9ydCA8V2ViQ29yZS9CbG9ja0V4Y2VwdGlvbnMuaD4KICNpbXBvcnQgPFdlYkNvcmUvQ2FjaGVk
RnJhbWUuaD4KICNpbXBvcnQgPFdlYkNvcmUvQ2hyb21lLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0RO
Uy5oPgpAQCAtMTIzLDYgKzEyMiw3IEBACiAjaW1wb3J0IDxXZWJLaXRMZWdhY3kvRE9NSFRNTEZv
cm1FbGVtZW50Lmg+CiAjaW1wb3J0IDxXZWJLaXRTeXN0ZW1JbnRlcmZhY2UuaD4KICNpbXBvcnQg
PHJ1bnRpbWUvSW5pdGlhbGl6ZVRocmVhZGluZy5oPgorI2ltcG9ydCA8d3RmL0Jsb2NrT2JqQ0V4
Y2VwdGlvbnMuaD4KICNpbXBvcnQgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW1wb3J0IDx3dGYvUGFz
c1JlZlB0ci5oPgogI2ltcG9ydCA8d3RmL1J1bkxvb3AuaD4KSW5kZXg6IFNvdXJjZS9XZWJLaXQv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50Lm1tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50Lm1t
CShyZXZpc2lvbiAyMDA5NjgpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJHZW9sb2NhdGlvbkNsaWVudC5tbQkod29ya2luZyBjb3B5KQpAQCAtMzMsMTAgKzMzLDEwIEBA
CiAjaW1wb3J0ICJXZWJTZWN1cml0eU9yaWdpbkludGVybmFsLmgiCiAjaW1wb3J0ICJXZWJVSURl
bGVnYXRlUHJpdmF0ZS5oIgogI2ltcG9ydCAiV2ViVmlld0ludGVybmFsLmgiCi0jaW1wb3J0IDxX
ZWJDb3JlL0Jsb2NrRXhjZXB0aW9ucy5oPgogI2ltcG9ydCA8V2ViQ29yZS9Eb2N1bWVudC5oPgog
I2ltcG9ydCA8V2ViQ29yZS9GcmFtZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9HZW9sb2NhdGlvbi5o
PgorI2ltcG9ydCA8d3RmL0Jsb2NrT2JqQ0V4Y2VwdGlvbnMuaD4KIAogI2lmIFBMQVRGT1JNKElP
UykKICNpbXBvcnQgPFdlYkNvcmUvV0FLUmVzcG9uZGVyLmg+CkluZGV4OiBTb3VyY2UvV2ViS2l0
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJOb3RpZmljYXRpb25DbGllbnQubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViTm90aWZpY2F0aW9uQ2xpZW50
Lm1tCShyZXZpc2lvbiAyMDA5NjgpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJOb3RpZmljYXRpb25DbGllbnQubW0JKHdvcmtpbmcgY29weSkKQEAgLTMyLDkgKzMyLDkg
QEAKICNpbXBvcnQgIldlYlNlY3VyaXR5T3JpZ2luSW50ZXJuYWwuaCIKICNpbXBvcnQgIldlYlVJ
RGVsZWdhdGVQcml2YXRlLmgiCiAjaW1wb3J0ICJXZWJWaWV3SW50ZXJuYWwuaCIKLSNpbXBvcnQg
PFdlYkNvcmUvQmxvY2tFeGNlcHRpb25zLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1BhZ2UuaD4KICNp
bXBvcnQgPFdlYkNvcmUvU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oPgorI2ltcG9ydCA8d3RmL0Js
b2NrT2JqQ0V4Y2VwdGlvbnMuaD4KICNlbmRpZgogCiAjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMp
CkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0
ZWdpZXMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tCShyZXZpc2lvbiAyMDA5NjgpCisrKyBTb3VyY2UvV2Vi
S2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW0JKHdvcmtpbmcg
Y29weSkKQEAgLTMwLDcgKzMwLDYgQEAKICNpbXBvcnQgIldlYlBsdWdpblBhY2thZ2UuaCIKICNp
bXBvcnQgIldlYlJlc291cmNlTG9hZFNjaGVkdWxlci5oIgogI2ltcG9ydCA8V2ViQ29yZS9CbG9i
UmVnaXN0cnlJbXBsLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL0Jsb2NrRXhjZXB0aW9ucy5oPgogI2lt
cG9ydCA8V2ViQ29yZS9Db2xvci5oPgogI2ltcG9ydCA8V2ViQ29yZS9NYWluRnJhbWUuaD4KICNp
bXBvcnQgPFdlYkNvcmUvUGFnZS5oPgpAQCAtNDAsNiArMzksNyBAQAogI2ltcG9ydCA8V2ViQ29y
ZS9TaGFyZWRCdWZmZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvU3ViZnJhbWVMb2FkZXIuaD4KICNp
bXBvcnQgPFdlYktpdFN5c3RlbUludGVyZmFjZS5oPgorI2ltcG9ydCA8d3RmL0Jsb2NrT2JqQ0V4
Y2VwdGlvbnMuaD4KICNpbXBvcnQgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCiB1c2luZyBuYW1l
c3BhY2UgV2ViQ29yZTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YlVzZXJNZWRpYUNsaWVudC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJVc2VyTWVkaWFDbGllbnQubW0JKHJldmlzaW9uIDIwMDk2OCkKKysrIFNv
dXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlVzZXJNZWRpYUNsaWVudC5tbQkod29y
a2luZyBjb3B5KQpAQCAtMzEsMTEgKzMxLDExIEBACiAjaW1wb3J0ICJXZWJTZWN1cml0eU9yaWdp
bkludGVybmFsLmgiCiAjaW1wb3J0ICJXZWJVSURlbGVnYXRlUHJpdmF0ZS5oIgogI2ltcG9ydCAi
V2ViVmlld0ludGVybmFsLmgiCi0jaW1wb3J0IDxXZWJDb3JlL0Jsb2NrRXhjZXB0aW9ucy5oPgog
I2ltcG9ydCA8V2ViQ29yZS9QYWdlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1NjcmlwdEV4ZWN1dGlv
bkNvbnRleHQuaD4KICNpbXBvcnQgPFdlYkNvcmUvVXNlck1lZGlhUGVybWlzc2lvbkNoZWNrLmg+
CiAjaW1wb3J0IDxXZWJDb3JlL1VzZXJNZWRpYVJlcXVlc3QuaD4KKyNpbXBvcnQgPHd0Zi9CbG9j
a09iakNFeGNlcHRpb25zLmg+CiAjaW1wb3J0IDx3dGYvSGFzaE1hcC5oPgogI2ltcG9ydCA8d3Rm
L05ldmVyRGVzdHJveWVkLmg+CiAjaW1wb3J0IDx3dGYvUmVmUHRyLmg+CkluZGV4OiBTb3VyY2Uv
V2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJWaXNpdGVkTGlua1N0b3JlLm1tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlZpc2l0ZWRMaW5rU3Rv
cmUubW0JKHJldmlzaW9uIDIwMDk2OCkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYlZpc2l0ZWRMaW5rU3RvcmUubW0JKHdvcmtpbmcgY29weSkKQEAgLTI5LDggKzI5LDgg
QEAKICNpbXBvcnQgIldlYkZyYW1lSW50ZXJuYWwuaCIKICNpbXBvcnQgIldlYkhpc3RvcnlJbnRl
cm5hbC5oIgogI2ltcG9ydCAiV2ViVmlld0ludGVybmFsLmgiCi0jaW1wb3J0IDxXZWJDb3JlL0Js
b2NrRXhjZXB0aW9ucy5oPgogI2ltcG9ydCA8V2ViQ29yZS9QYWdlQ2FjaGUuaD4KKyNpbXBvcnQg
PHd0Zi9CbG9ja09iakNFeGNlcHRpb25zLmg+CiAjaW1wb3J0IDx3dGYvTmV2ZXJEZXN0cm95ZWQu
aD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9X
ZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dl
YlZpZXcvV2ViSFRNTFZpZXcubW0JKHJldmlzaW9uIDIwMDk2OCkKKysrIFNvdXJjZS9XZWJLaXQv
bWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0JKHdvcmtpbmcgY29weSkKQEAgLTcyLDcgKzcyLDYg
QEAKICNpbXBvcnQgIldlYlR5cGVzSW50ZXJuYWwuaCIKICNpbXBvcnQgIldlYlVJRGVsZWdhdGVQ
cml2YXRlLmgiCiAjaW1wb3J0ICJXZWJWaWV3SW50ZXJuYWwuaCIKLSNpbXBvcnQgPFdlYkNvcmUv
QmxvY2tFeGNlcHRpb25zLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0NTU1N0eWxlRGVjbGFyYXRpb24u
aD4KICNpbXBvcnQgPFdlYkNvcmUvQ2FjaGVkSW1hZ2UuaD4KICNpbXBvcnQgPFdlYkNvcmUvQ2Fj
aGVkUmVzb3VyY2VDbGllbnQuaD4KQEAgLTEzMyw2ICsxMzIsNyBAQAogI2ltcG9ydCA8ZGxmY24u
aD4KICNpbXBvcnQgPGxpbWl0cz4KICNpbXBvcnQgPHJ1bnRpbWUvSW5pdGlhbGl6ZVRocmVhZGlu
Zy5oPgorI2ltcG9ydCA8d3RmL0Jsb2NrT2JqQ0V4Y2VwdGlvbnMuaD4KICNpbXBvcnQgPHd0Zi9N
YWluVGhyZWFkLmg+CiAjaW1wb3J0IDx3dGYvTWF0aEV4dHJhcy5oPgogI2ltcG9ydCA8d3RmL09i
amNSdW50aW1lRXh0cmFzLmg+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>279102</attachid>
            <date>2016-05-16 22:06:35 -0700</date>
            <delta_ts>2016-05-17 11:48:29 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>107113</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjAwOTk2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBA
CisyMDE2LTA1LTE2ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
V1RGIHNob3VsZCBrbm93IGFib3V0IExhbmd1YWdlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTc3NTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAgICAgIFRlYWNoIG91ciBzY3JpcHRzIHRoYXQgYSBP
YmpDIGNsYXNzIGJlZ2lubmluZyB3aXRoIFdURiBpcyB0b3RhbGx5IGNvb2wuCisKKyAgICAgICAg
KiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCiAyMDE2LTA1LTE2
ICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgogCiAgICAgICAgIFJFR1JF
U1NJT04ocjIwMDIwOCk6IEl0IG1hZGUgMiBKU0Mgc3RyZXNzIHRlc3RzIGZhaWwgb24geDg2Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjAwOTY4KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oJKHdvcmtpbmcgY29weSkKQEAgLTgzNjksNyArODM2OSw3IEBACiAJCQkpOwogCQkJcnVuT25s
eUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCQlzaGVsbFBhdGggPSAvYmluL3No
OwotCQkJc2hlbGxTY3JpcHQgPSAic2V0IC1lXG5cbmlmIFsgXCIke0FDVElPTn1cIiA9IFwiaW5z
dGFsbGhkcnNcIiBdOyB0aGVuXG4gICAgZXhpdCAwO1xuZmlcblxuaWYgWyAtZiAuLi8uLi9Ub29s
cy9TY3JpcHRzL2NoZWNrLWZvci1pbmFwcHJvcHJpYXRlLW9iamMtY2xhc3MtbmFtZXMgXTsgdGhl
blxuICAgIC4uLy4uL1Rvb2xzL1NjcmlwdHMvY2hlY2stZm9yLWluYXBwcm9wcmlhdGUtb2JqYy1j
bGFzcy1uYW1lcyBKU1xuZmkiOworCQkJc2hlbGxTY3JpcHQgPSAic2V0IC1lXG5cbmlmIFsgXCIk
e0FDVElPTn1cIiA9IFwiaW5zdGFsbGhkcnNcIiBdOyB0aGVuXG4gICAgZXhpdCAwO1xuZmlcblxu
aWYgWyAtZiAuLi8uLi9Ub29scy9TY3JpcHRzL2NoZWNrLWZvci1pbmFwcHJvcHJpYXRlLW9iamMt
Y2xhc3MtbmFtZXMgXTsgdGhlblxuICAgIC4uLy4uL1Rvb2xzL1NjcmlwdHMvY2hlY2stZm9yLWlu
YXBwcm9wcmlhdGUtb2JqYy1jbGFzcy1uYW1lcyBKUyBXVEZcbmZpIjsKIAkJfTsKIAkJMzczMjgx
MUExN0ZDRDIzNTAwNEFENTE5IC8qIFBvc3Rwcm9jZXNzIEhlYWRlcnMgKi8gPSB7CiAJCQlpc2Eg
PSBQQlhTaGVsbFNjcmlwdEJ1aWxkUGhhc2U7CkluZGV4OiBTb3VyY2UvV1RGL0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL0NoYW5nZUxvZwkocmV2aXNpb24gMjAwOTY4KQorKysg
U291cmNlL1dURi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw1NCBAQAorMjAx
Ni0wNS0xNiAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAgIFdURiBz
aG91bGQga25vdyBhYm91dCBMYW5ndWFnZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTU3NzU2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisgICAgICAgIAorICAgICAgICBUaGlzIGNvbnRhaW5zIHR3byBjaGFuZ2VzOgorICAg
ICAgICAKKyAgICAgICAgLSBNb3ZlIGV2ZXJ5dGhpbmcgdGhhdCBXZWJDb3JlJ3MgbG9naWMgZm9y
IGdldHRpbmcgdGhlIHBsYXRmb3JtIHVzZXIgcHJlZmVycmVkIGxhbmd1YWdlCisgICAgICAgICAg
ZGVwZW5kZWQgb24gaW50byBXVEYuIFRoaXMgbWVhbnMgQ0ZCdW5kbGVTUEkuaCBhbmQgQmxvY2tP
YmpDRXhjZXB0aW9ucy5ofGNwcC4KKyAgICAgICAgCisgICAgICAgIC0gTW92ZSBXZWJDb3JlOjpw
bGF0Zm9ybVVzZXJQcmVmZXJyZWRMYW5ndWFnZXMoKSB0byBXVEY6OnBsYXRmb3JtVXNlclByZWZl
cnJlZExhbmd1YWdlcygpLgorICAgICAgICAKKyAgICAgICAgTW92aW5nIHRoZSBkZXBlbmRlbmNp
ZXMgYWNjb3VudHMgZm9yIGEgaHVnZSBjaHVuayBvZiB0aGlzIGNoYW5nZSwgc2luY2Ugd2UgaGF2
ZSB0byByZXdpcmUKKyAgICAgICAgYWxsIG9mIHRoZSByZWZlcmVuY2VzIHRvIHRob3NlIGhlYWRl
cnMgaW4gYWxsIG9mIFdlYktpdC4KKyAgICAgICAgCisgICAgICAgIE1vdmluZyBwbGF0Zm9ybVVz
ZXJQcmVmZXJyZWRMYW5ndWFnZXMoKSBpcyBtb3N0bHkgZWFzeSBleGNlcHQgZm9yIHRoZSB3ZWly
ZCBjYWxsYmFjay4KKyAgICAgICAgVGhhdCBmdW5jdGlvbiB3b3VsZCBjYWxsIGxhbmd1YWdlRGlk
Q2hhbmdlKCksIHdoaWNoIG5lZWRzIHRvIHN0YXkgaW4gV2ViQ29yZS4gU28sIHRoaXMKKyAgICAg
ICAgZ2l2ZXMgV2ViQ29yZSB0aGUgYWJpbGl0eSB0byByZWdpc3RlciBhIGxhbmd1YWdlRGlkQ2hh
bmdlIGNhbGxiYWNrLiBPdGhlciB0aGFuIHRoaXMgbmV3CisgICAgICAgIGxvZ2ljLCB0aGUgY29k
ZSBiZWluZyBhZGRlZCB0byBXVEYgaXMganVzdCBiZWluZyBsaWZ0ZWQgb3V0IG9mIFdlYkNvcmUu
CisKKyAgICAgICAgKiBXVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiB3
dGYvQmxvY2tPYmpDRXhjZXB0aW9ucy5oOiBBZGRlZC4KKyAgICAgICAgKiB3dGYvQmxvY2tPYmpD
RXhjZXB0aW9ucy5tbTogQWRkZWQuCisgICAgICAgIChSZXBvcnRCbG9ja2VkT2JqQ0V4Y2VwdGlv
bik6CisgICAgICAgICogd3RmL1BsYXRmb3JtRWZsLmNtYWtlOgorICAgICAgICAqIHd0Zi9QbGF0
Zm9ybUdUSy5jbWFrZToKKyAgICAgICAgKiB3dGYvUGxhdGZvcm1KU0NPbmx5LmNtYWtlOgorICAg
ICAgICAqIHd0Zi9QbGF0Zm9ybU1hYy5jbWFrZToKKyAgICAgICAgKiB3dGYvUGxhdGZvcm1Vc2Vy
UHJlZmVycmVkTGFuZ3VhZ2VzLmg6IEFkZGVkLgorICAgICAgICAqIHd0Zi9QbGF0Zm9ybVVzZXJQ
cmVmZXJyZWRMYW5ndWFnZXNNYWMubW06IEFkZGVkLgorICAgICAgICAoV1RGOjpzZXRQbGF0Zm9y
bVVzZXJQcmVmZXJyZWRMYW5ndWFnZXNDaGFuZ2VkQ2FsbGJhY2spOgorICAgICAgICAoV1RGOjpw
cmVmZXJyZWRMYW5ndWFnZXMpOgorICAgICAgICAoK1tXVEZMYW5ndWFnZUNoYW5nZU9ic2VydmVy
IGxhbmd1YWdlUHJlZmVyZW5jZXNEaWRDaGFuZ2U6XSk6CisgICAgICAgIChXVEY6Omh0dHBTdHls
ZUxhbmd1YWdlQ29kZSk6CisgICAgICAgIChXVEY6OmlzVmFsaWRJQ1VDb3VudHJ5Q29kZSk6Cisg
ICAgICAgIChXVEY6OnBsYXRmb3JtVXNlclByZWZlcnJlZExhbmd1YWdlcyk6CisgICAgICAgICog
d3RmL1BsYXRmb3JtVXNlclByZWZlcnJlZExhbmd1YWdlc1VuaXguY3BwOiBBZGRlZC4KKyAgICAg
ICAgKFdURjo6c2V0UGxhdGZvcm1Vc2VyUHJlZmVycmVkTGFuZ3VhZ2VzQ2hhbmdlZENhbGxiYWNr
KToKKyAgICAgICAgKFdURjo6cGxhdGZvcm1MYW5ndWFnZSk6CisgICAgICAgIChXVEY6OnBsYXRm
b3JtVXNlclByZWZlcnJlZExhbmd1YWdlcyk6CisgICAgICAgICogd3RmL1BsYXRmb3JtVXNlclBy
ZWZlcnJlZExhbmd1YWdlc1dpbi5jcHA6IEFkZGVkLgorICAgICAgICAoV1RGOjpzZXRQbGF0Zm9y
bVVzZXJQcmVmZXJyZWRMYW5ndWFnZXNDaGFuZ2VkQ2FsbGJhY2spOgorICAgICAgICAoV1RGOjps
b2NhbGVJbmZvKToKKyAgICAgICAgKFdURjo6cGxhdGZvcm1MYW5ndWFnZSk6CisgICAgICAgIChX
VEY6OnBsYXRmb3JtVXNlclByZWZlcnJlZExhbmd1YWdlcyk6CisgICAgICAgICogd3RmL1BsYXRm
b3JtV2luLmNtYWtlOgorICAgICAgICAqIHd0Zi9zcGkvY2Y6IEFkZGVkLgorICAgICAgICAqIHd0
Zi9zcGkvY2YvQ0ZCdW5kbGVTUEkuaDogQWRkZWQuCisKIDIwMTYtMDUtMTUgIENocmlzIER1bWV6
ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBVc2UgbW9yZSByZWZlcmVuY2VzIGluIEpT
IHdyYXBwZXJzIHJlbGF0ZWQgY29kZQpJbmRleDogU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCShyZXZpc2lvbiAyMDA5NjgpCisrKyBTb3VyY2UvV1RGL1dURi54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0zMDEsNiArMzAxLDExIEBACiAJ
CUNENTQ5N0FEMTU4NTdEMDMwMEI1QkMzMCAvKiBNZWRpYVRpbWUuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENENTQ5N0FCMTU4NTdEMDMwMEI1QkMzMCAv
KiBNZWRpYVRpbWUuaCAqLzsgfTsKIAkJQ0U0NjUxNkUxOURCMUZCNDAwM0VDQTA1IC8qIE5TTWFw
VGFibGVTUEkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IENFNDY1MTZEMTlEQjFGQjQwMDNFQ0EwNSAvKiBOU01hcFRhYmxlU1BJLmggKi87IH07CiAJCUNF
NzNFMDI1MTlEQ0I3QUIwMDU4MEQ1QyAvKiBYUENTUEkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFNzNFMDI0MTlEQ0I3QUIwMDU4MEQ1QyAvKiBYUENT
UEkuaCAqLzsgfTsKKwkJRENFRTIxRkIxQ0VBNzUzODAwMEMyMzk2IC8qIENGQnVuZGxlU1BJLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBEQ0VFMjFGQTFD
RUE3NTM4MDAwQzIzOTYgLyogQ0ZCdW5kbGVTUEkuaCAqLzsgfTsKKwkJRENFRTIyMDAxQ0VBNzU1
MTAwMEMyMzk2IC8qIEJsb2NrT2JqQ0V4Y2VwdGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERDRUUyMUZDMUNFQTc1NTEwMDBDMjM5NiAvKiBCbG9j
a09iakNFeGNlcHRpb25zLmggKi87IH07CisJCURDRUUyMjAxMUNFQTc1NTEwMDBDMjM5NiAvKiBC
bG9ja09iakNFeGNlcHRpb25zLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRENFRTIxRkQxQ0VBNzU1MTAwMEMyMzk2IC8qIEJsb2NrT2JqQ0V4Y2VwdGlv
bnMubW0gKi87IH07CisJCURDRUUyMjAyMUNFQTc1NTEwMDBDMjM5NiAvKiBQbGF0Zm9ybVVzZXJQ
cmVmZXJyZWRMYW5ndWFnZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IERDRUUyMUZFMUNFQTc1NTEwMDBDMjM5NiAvKiBQbGF0Zm9ybVVzZXJQcmVmZXJy
ZWRMYW5ndWFnZXMuaCAqLzsgfTsKKwkJRENFRTIyMDMxQ0VBNzU1MTAwMEMyMzk2IC8qIFBsYXRm
b3JtVXNlclByZWZlcnJlZExhbmd1YWdlc01hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERDRUUyMUZGMUNFQTc1NTEwMDBDMjM5NiAvKiBQbGF0Zm9y
bVVzZXJQcmVmZXJyZWRMYW5ndWFnZXNNYWMubW0gKi87IH07CiAJCURFNUEwOUZDMUJBMzY5OTIw
MDNENDQyNCAvKiBDb21tb25DcnlwdG9TUEkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IERFNUEwOUZCMUJBMzY5OTIwMDNENDQyNCAvKiBDb21tb25Dcnlw
dG9TUEkuaCAqLzsgfTsKIAkJRTE1NTU2RjUxOEEwQ0MxODAwNkY0OEZCIC8qIENyeXB0b2dyYXBo
aWNVdGlsaXRpZXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRTE1NTU2RjMxOEEwQ0MxODAwNkY0OEZCIC8qIENyeXB0b2dyYXBoaWNVdGlsaXRpZXMu
Y3BwICovOyB9OwogCQlFMTU1NTZGNjE4QTBDQzE4MDA2RjQ4RkIgLyogQ3J5cHRvZ3JhcGhpY1V0
aWxpdGllcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RTE1NTU2RjQxOEEwQ0MxODAwNkY0OEZCIC8qIENyeXB0b2dyYXBoaWNVdGlsaXRpZXMuaCAqLzsg
fTsKQEAgLTYyMiw2ICs2MjcsMTEgQEAKIAkJQ0Q1NDk3QUIxNTg1N0QwMzAwQjVCQzMwIC8qIE1l
ZGlhVGltZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZWRpYVRpbWUuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0U0NjUxNkQxOURCMUZCNDAwM0VDQTA1IC8q
IE5TTWFwVGFibGVTUEkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTlNNYXBU
YWJsZVNQSS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRTczRTAyNDE5RENCN0FC
MDA1ODBENUMgLyogWFBDU1BJLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFhQ
Q1NQSS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlEQ0VFMjFGQTFDRUE3NTM4MDAw
QzIzOTYgLyogQ0ZCdW5kbGVTUEkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0g
Q0ZCdW5kbGVTUEkuaDsgcGF0aCA9IGNmL0NGQnVuZGxlU1BJLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCURDRUUyMUZDMUNFQTc1NTEwMDBDMjM5NiAvKiBCbG9ja09iakNFeGNlcHRp
b25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJsb2NrT2JqQ0V4Y2VwdGlv
bnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRENFRTIxRkQxQ0VBNzU1MTAwMEMy
Mzk2IC8qIEJsb2NrT2JqQ0V4Y2VwdGlvbnMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5v
YmpjcHA7IHBhdGggPSBCbG9ja09iakNFeGNlcHRpb25zLm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlEQ0VFMjFGRTFDRUE3NTUxMDAwQzIzOTYgLyogUGxhdGZvcm1Vc2VyUHJlZmVy
cmVkTGFuZ3VhZ2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBsYXRmb3Jt
VXNlclByZWZlcnJlZExhbmd1YWdlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlE
Q0VFMjFGRjFDRUE3NTUxMDAwQzIzOTYgLyogUGxhdGZvcm1Vc2VyUHJlZmVycmVkTGFuZ3VhZ2Vz
TWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUGxhdGZvcm1V
c2VyUHJlZmVycmVkTGFuZ3VhZ2VzTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlERTVBMDlGQjFCQTM2OTkyMDAzRDQ0MjQgLyogQ29tbW9uQ3J5cHRvU1BJLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbW1vbkNyeXB0b1NQSS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlFMTU1NTZGMzE4QTBDQzE4MDA2RjQ4RkIgLyogQ3J5cHRvZ3JhcGhp
Y1V0aWxpdGllcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDcnlw
dG9ncmFwaGljVXRpbGl0aWVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTE1
NTU2RjQxOEEwQ0MxODAwNkY0OEZCIC8qIENyeXB0b2dyYXBoaWNVdGlsaXRpZXMuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ3J5cHRvZ3JhcGhpY1V0aWxpdGllcy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzY4LDYgKzc3OCw4IEBACiAJCQkJQThBNDcyNUYx
NTFBODI1QTAwNDEyM0ZGIC8qIEJpdG1hcC5oICovLAogCQkJCUE4QTQ3MjYwMTUxQTgyNUEwMDQx
MjNGRiAvKiBCaXRWZWN0b3IuY3BwICovLAogCQkJCUE4QTQ3MjYxMTUxQTgyNUEwMDQxMjNGRiAv
KiBCaXRWZWN0b3IuaCAqLywKKwkJCQlEQ0VFMjFGQzFDRUE3NTUxMDAwQzIzOTYgLyogQmxvY2tP
YmpDRXhjZXB0aW9ucy5oICovLAorCQkJCURDRUUyMUZEMUNFQTc1NTEwMDBDMjM5NiAvKiBCbG9j
a09iakNFeGNlcHRpb25zLm1tICovLAogCQkJCTFBOTQ0RjQ2MUMzRDg4MTQwMDVCRDI4QyAvKiBC
bG9ja1B0ci5oICovLAogCQkJCUE4QTQ3MjY0MTUxQTgyNUEwMDQxMjNGRiAvKiBCbG9ja1N0YWNr
LmggKi8sCiAJCQkJQThBNDcyNjUxNTFBODI1QTAwNDEyM0ZGIC8qIEJsb29tRmlsdGVyLmggKi8s
CkBAIC04ODIsNiArODk0LDggQEAKIAkJCQkwRjgyNEE2NTFCNzQ0M0EwMDAyRTM0NUQgLyogUGFy
a2luZ0xvdC5oICovLAogCQkJCUE4QTQ3MkVEMTUxQTgyNUIwMDQxMjNGRiAvKiBQYXNzUmVmUHRy
LmggKi8sCiAJCQkJQTg3NkRCRDcxNTE4MTZFNTAwREFEQjk1IC8qIFBsYXRmb3JtLmggKi8sCisJ
CQkJRENFRTIxRkUxQ0VBNzU1MTAwMEMyMzk2IC8qIFBsYXRmb3JtVXNlclByZWZlcnJlZExhbmd1
YWdlcy5oICovLAorCQkJCURDRUUyMUZGMUNFQTc1NTEwMDBDMjM5NiAvKiBQbGF0Zm9ybVVzZXJQ
cmVmZXJyZWRMYW5ndWFnZXNNYWMubW0gKi8sCiAJCQkJMEZGODYwOTQxQkNDQkQ3NDAwNDUxMjdG
IC8qIFBvaW50ZXJDb21wYXJpc29uLmggKi8sCiAJCQkJMEY5RDMzNUQxNjVEQkE3MzAwNUFEMzg3
IC8qIFByaW50U3RyZWFtLmNwcCAqLywKIAkJCQkwRjlEMzM1RTE2NURCQTczMDA1QUQzODcgLyog
UHJpbnRTdHJlYW0uaCAqLywKQEAgLTExMDEsMTIgKzExMTUsMjEgQEAKIAkJQ0VGNDgyMEMxOURB
MzQ3NjAwQ0MwNEI4IC8qIHNwaSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRy
ZW4gPSAoCisJCQkJRENFRTIxRjkxQ0VBNzUyRjAwMEMyMzk2IC8qIGNmICovLAogCQkJCUNFNDY1
MTZDMTlEQjFGQjQwMDNFQ0EwNSAvKiBjb2NvYSAqLywKIAkJCQlDRTczRTAyMzE5RENCN0FCMDA1
ODBENUMgLyogZGFyd2luICovLAogCQkJKTsKIAkJCXBhdGggPSBzcGk7CiAJCQlzb3VyY2VUcmVl
ID0gIjxncm91cD4iOwogCQl9OworCQlEQ0VFMjFGOTFDRUE3NTJGMDAwQzIzOTYgLyogY2YgKi8g
PSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCURDRUUyMUZBMUNF
QTc1MzgwMDBDMjM5NiAvKiBDRkJ1bmRsZVNQSS5oICovLAorCQkJKTsKKwkJCW5hbWUgPSBjZjsK
KwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CiAJCUU0QTBBRDNCMUE5NjI1MTkwMDUz
NkRGNiAvKiBjb2NvYSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAo
CkBAIC0xMTM5LDYgKzExNjIsNyBAQAogCQkJCTlCRDhGNDBCMTc2QzJCNDcwMDAyRDg2NSAvKiBB
dG9taWNTdHJpbmdUYWJsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTQ2OTQxOUMxNkVBQjEwQTAw
MjRFMTQ2IC8qIEF1dG9kcmFpbmVkUG9vbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZCMTRFMTkx
ODBGQTIxODAwOUI2QjREIC8qIEJhZy5oIGluIEhlYWRlcnMgKi8sCisJCQkJRENFRTIyMDAxQ0VB
NzU1MTAwMEMyMzk2IC8qIEJsb2NrT2JqQ0V4Y2VwdGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTBGQjE0RTFCMTgxMEUxREMwMDlCNkI0RCAvKiBCYWdUb0hhc2hNYXAuaCBpbiBIZWFkZXJzICov
LAogCQkJCTgxMzQwMTM5MTVCMDkyRkQwMDFGRjBCOCAvKiBCYXNlNjQuaCBpbiBIZWFkZXJzICov
LAogCQkJCUE4QTQ3M0E5MTUxQTgyNUIwMDQxMjNGRiAvKiBiaWdudW0tZHRvYS5oIGluIEhlYWRl
cnMgKi8sCkBAIC0xMjk1LDYgKzEzMTksNyBAQAogCQkJCUE4QTQ3NDNGMTUxQTgyNUIwMDQxMjNG
RiAvKiBTdHJpbmdIYXNoLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzQ4NzQ1NDE3QTBCREFFMDBG
QTA0Q0IgLyogU3RyaW5nSGFzaER1bXBDb250ZXh0LmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEE0
NzQ0MTE1MUE4MjVCMDA0MTIzRkYgLyogU3RyaW5nSW1wbC5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
RENFRTIxRkIxQ0VBNzUzODAwMEMyMzk2IC8qIENGQnVuZGxlU1BJLmggaW4gSGVhZGVycyAqLywK
IAkJCQlBOEE0NzQ0MjE1MUE4MjVCMDA0MTIzRkYgLyogU3RyaW5nT3BlcmF0b3JzLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwRkREQkZBODE2NjZERkEzMDBDNTVGRUYgLyogU3RyaW5nUHJpbnRTdHJl
YW0uaCBpbiBIZWFkZXJzICovLAogCQkJCTFBNkVCMUUwMTg3RDBCRDMwMDMwMTI2RiAvKiBTdHJp
bmdWaWV3LmggaW4gSGVhZGVycyAqLywKQEAgLTEzMTIsNiArMTMzNyw3IEBACiAJCQkJQThBNDc0
NTUxNTFBODI1QjAwNDEyM0ZGIC8qIFRocmVhZFNwZWNpZmljLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk1NTMwNzFDQTFDNDA0MjcyMDAzODQ4OTggLyogVGlueUxSVUNhY2hlLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRkVENjdCNjFCMjJENEQ4MDA2NkNFMTUgLyogVGlueVB0clNldC5oIGluIEhlYWRl
cnMgKi8sCisJCQkJRENFRTIyMDIxQ0VBNzU1MTAwMEMyMzk2IC8qIFBsYXRmb3JtVXNlclByZWZl
cnJlZExhbmd1YWdlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTQ5RUYxNjMxNkJCRkUwRDAwMEE0
MzMxIC8qIFRyaVN0YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQk4M0ZCQTkzMjE5REY0NTk3MDBG
MzBBREIgLyogVHlwZUNhc3RzLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUZERTY0ODE5NTIwMUMz
MDBDNDhGRkEgLyogVHlwZUNhc3RzQ0YuaCBpbiBIZWFkZXJzICovLApAQCAtMTQ2MCw2ICsxNDg2
LDcgQEAKIAkJCQlBOEE0NzNCMzE1MUE4MjVCMDA0MTIzRkYgLyogZmFzdC1kdG9hLmNjIGluIFNv
dXJjZXMgKi8sCiAJCQkJMEY4ODVFMEYxODQ1QUVBOTAwRjFFM0ZBIC8qIEZhc3RCaXRWZWN0b3Iu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQThBNDczQzMxNTFBODI1QjAwNDEyM0ZGIC8qIEZhc3RN
YWxsb2MuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRENFRTIyMDExQ0VBNzU1MTAwMEMyMzk2IC8q
IEJsb2NrT2JqQ0V4Y2VwdGlvbnMubW0gaW4gU291cmNlcyAqLywKIAkJCQkwRjlEMzM2MDE2NURC
QTczMDA1QUQzODcgLyogRmlsZVByaW50U3RyZWFtLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4
QTQ3M0I1MTUxQTgyNUIwMDQxMjNGRiAvKiBmaXhlZC1kdG9hLmNjIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMUExRDhCOUUxNzMxODc5ODAwMTQxREE0IC8qIEZ1bmN0aW9uRGlzcGF0Y2hlci5jcHAgaW4g
U291cmNlcyAqLywKQEAgLTE1MTAsNiArMTUzNyw3IEBACiAJCQkJQThBNDc0NjkxNTFBODI1QjAw
NDEyM0ZGIC8qIFVURjguY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUZBNDdDOEExNTI1MDJEQTAw
NTY4RDFCIC8qIFdlYkNvcmVUaHJlYWQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZFNDQ3OUMx
QjdBQUEwMzAwOTQ5OEVCIC8qIFdvcmRMb2NrLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCURDRUUy
MjAzMUNFQTc1NTEwMDBDMjM5NiAvKiBQbGF0Zm9ybVVzZXJQcmVmZXJyZWRMYW5ndWFnZXNNYWMu
bW0gaW4gU291cmNlcyAqLywKIAkJCQlFNEEwQUQzOTFBOTYyNDU1MDA1MzZERjYgLyogV29ya1F1
ZXVlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUU0QTBBRDNEMUE5NjI1M0MwMDUzNkRGNiAvKiBX
b3JrUXVldWVDb2NvYS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBOEE0NzQ0NTE1MUE4MjVCMDA0
MTIzRkYgLyogV1RGU3RyaW5nLmNwcCBpbiBTb3VyY2VzICovLApJbmRleDogU291cmNlL1dURi93
dGYvQmxvY2tPYmpDRXhjZXB0aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL0Js
b2NrT2JqQ0V4Y2VwdGlvbnMuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XVEYvd3RmL0Jsb2Nr
T2JqQ0V4Y2VwdGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDMyIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDAzLCAyMDE2IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW1wb3J0IDxG
b3VuZGF0aW9uL05TRXhjZXB0aW9uLmg+CisKK1dURl9FWFBPUlRfUFJJVkFURSBOT19SRVRVUk5f
RFVFX1RPX0FTU0VSVCB2b2lkIFJlcG9ydEJsb2NrZWRPYmpDRXhjZXB0aW9uKE5TRXhjZXB0aW9u
ICopOworCisjZGVmaW5lIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUyBAdHJ5IHsKKyNkZWZp
bmUgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUyB9IEBjYXRjaChOU0V4Y2VwdGlvbiAqbG9jYWxF
eGNlcHRpb24pIHsgUmVwb3J0QmxvY2tlZE9iakNFeGNlcHRpb24obG9jYWxFeGNlcHRpb24pOyB9
CisKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL0Jsb2NrT2JqQ0V4Y2VwdGlvbnMubW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dURi93dGYvQmxvY2tPYmpDRXhjZXB0aW9ucy5tbQkocmV2aXNpb24gMCkK
KysrIFNvdXJjZS9XVEYvd3RmL0Jsb2NrT2JqQ0V4Y2VwdGlvbnMubW0JKHdvcmtpbmcgY29weSkK
QEAgLTAsMCArMSwzOCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwMywgMjAwNywgMjAxNiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLiAKKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIkJsb2NrT2Jq
Q0V4Y2VwdGlvbnMuaCIKKworI2ltcG9ydCA8d3RmL0Fzc2VydGlvbnMuaD4KKwordm9pZCBSZXBv
cnRCbG9ja2VkT2JqQ0V4Y2VwdGlvbihOU0V4Y2VwdGlvbiAqZXhjZXB0aW9uKQoreworI2lmIEFT
U0VSVF9ESVNBQkxFRAorICAgIE5TTG9nKEAiKioqIFdlYktpdCBkaXNjYXJkaW5nIGV4Y2VwdGlv
bjogPCVAPiAlQCIsIFtleGNlcHRpb24gbmFtZV0sIFtleGNlcHRpb24gcmVhc29uXSk7CisjZWxz
ZQorICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoMCwgIlVuY2F1Z2h0IGV4Y2VwdGlvbiAtICVAIiwg
ZXhjZXB0aW9uKTsKKyNlbmRpZgorfQpJbmRleDogU291cmNlL1dURi93dGYvUGxhdGZvcm1FZmwu
Y21ha2UKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvUGxhdGZvcm1FZmwuY21ha2UJKHJl
dmlzaW9uIDIwMDk2OCkKKysrIFNvdXJjZS9XVEYvd3RmL1BsYXRmb3JtRWZsLmNtYWtlCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDQgKzEsNiBAQAogbGlzdChBUFBFTkQgV1RGX1NPVVJDRVMKKyAgICBQ
bGF0Zm9ybVVzZXJQcmVmZXJyZWRMYW5ndWFnZXNVbml4LmNwcAorCiAgICAgZWZsL0Rpc3BhdGNo
UXVldWVFZmwuY3BwCiAgICAgZWZsL01haW5UaHJlYWRFZmwuY3BwCiAgICAgZWZsL1J1bkxvb3BF
ZmwuY3BwCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUdUSy5jbWFrZQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUdUSy5jbWFrZQkocmV2aXNpb24gMjAwOTY4KQor
KysgU291cmNlL1dURi93dGYvUGxhdGZvcm1HVEsuY21ha2UJKHdvcmtpbmcgY29weSkKQEAgLTcs
NiArNyw3IEBAIGxpc3QoQVBQRU5EIFdURl9TT1VSQ0VTCiAgICAgZ2xpYi9HUmVmUHRyLmNwcAog
ICAgIGdsaWIvTWFpblRocmVhZEdMaWIuY3BwCiAgICAgZ2xpYi9SdW5Mb29wR0xpYi5jcHAKKyAg
ICBQbGF0Zm9ybVVzZXJQcmVmZXJyZWRMYW5ndWFnZXNVbml4LmNwcAogKQogCiBsaXN0KEFQUEVO
RCBXVEZfTElCUkFSSUVTCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUpTQ09ubHkuY21h
a2UKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvUGxhdGZvcm1KU0NPbmx5LmNtYWtlCShy
ZXZpc2lvbiAyMDA5NjgpCisrKyBTb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUpTQ09ubHkuY21ha2UJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw3IEBACitsaXN0KEFQUEVORCBXVEZfU09VUkNFUwor
ICAgIFBsYXRmb3JtVXNlclByZWZlcnJlZExhbmd1YWdlc1VuaXguY3BwCispCisKIGlmIChMT1dF
UkNBU0VfRVZFTlRfTE9PUF9UWVBFIFNUUkVRVUFMICJnbGliIikKICAgICBsaXN0KEFQUEVORCBX
VEZfU09VUkNFUwogICAgICAgICBnbGliL0dSZWZQdHIuY3BwCkluZGV4OiBTb3VyY2UvV1RGL3d0
Zi9QbGF0Zm9ybU1hYy5jbWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9QbGF0Zm9y
bU1hYy5jbWFrZQkocmV2aXNpb24gMjAwOTY4KQorKysgU291cmNlL1dURi93dGYvUGxhdGZvcm1N
YWMuY21ha2UJKHdvcmtpbmcgY29weSkKQEAgLTEyLDYgKzEyLDggQEAgbGlzdChBUFBFTkQgV1RG
X0xJQlJBUklFUwogCiBsaXN0KEFQUEVORCBXVEZfU09VUkNFUwogICAgIEF1dG9kcmFpbmVkUG9v
bE1hYy5tbQorICAgIEJsb2NrT2JqQ0V4Y2VwdGlvbnMubW0KKyAgICBQbGF0Zm9ybVVzZXJQcmVm
ZXJyZWRMYW5ndWFnZXNNYWMubW0KICAgICBSdW5Mb29wVGltZXJDRi5jcHAKICAgICBTY2hlZHVs
ZVBhaXJDRi5jcHAKICAgICBTY2hlZHVsZVBhaXJNYWMubW0KSW5kZXg6IFNvdXJjZS9XVEYvd3Rm
L1BsYXRmb3JtVXNlclByZWZlcnJlZExhbmd1YWdlcy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
VEYvd3RmL1BsYXRmb3JtVXNlclByZWZlcnJlZExhbmd1YWdlcy5oCShyZXZpc2lvbiAwKQorKysg
U291cmNlL1dURi93dGYvUGxhdGZvcm1Vc2VyUHJlZmVycmVkTGFuZ3VhZ2VzLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSw0NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgUGxhdGZvcm1Vc2Vy
UHJlZmVycmVkTGFuZ3VhZ2VzX2gKKyNkZWZpbmUgUGxhdGZvcm1Vc2VyUHJlZmVycmVkTGFuZ3Vh
Z2VzX2gKKworI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZT
dHJpbmcuaD4KKworbmFtZXNwYWNlIFdURiB7CisKK1dURl9FWFBPUlRfUFJJVkFURSB2b2lkIHNl
dFBsYXRmb3JtVXNlclByZWZlcnJlZExhbmd1YWdlc0NoYW5nZWRDYWxsYmFjayh2b2lkICgqKSgp
KTsKKworV1RGX0VYUE9SVF9QUklWQVRFIFZlY3RvcjxTdHJpbmc+IHBsYXRmb3JtVXNlclByZWZl
cnJlZExhbmd1YWdlcygpOworCit9IC8vIG5hbWVzcGFjZSBXVEYKKwordXNpbmcgV1RGOjpzZXRQ
bGF0Zm9ybVVzZXJQcmVmZXJyZWRMYW5ndWFnZXNDaGFuZ2VkQ2FsbGJhY2s7Cit1c2luZyBXVEY6
OnBsYXRmb3JtVXNlclByZWZlcnJlZExhbmd1YWdlczsKKworI2VuZGlmIC8vIFBsYXRmb3JtVXNl
clByZWZlcnJlZExhbmd1YWdlc19oCisKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1BsYXRmb3JtVXNl
clByZWZlcnJlZExhbmd1YWdlc01hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9Q
bGF0Zm9ybVVzZXJQcmVmZXJyZWRMYW5ndWFnZXNNYWMubW0JKHJldmlzaW9uIDApCisrKyBTb3Vy
Y2UvV1RGL3d0Zi9QbGF0Zm9ybVVzZXJQcmVmZXJyZWRMYW5ndWFnZXNNYWMubW0JKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSwxNzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDUs
IDIwMDYsIDIwMTAsIDIwMTEsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIlBsYXRmb3JtVXNlclByZWZl
cnJlZExhbmd1YWdlcy5oIgorCisjaW1wb3J0ICJCbG9ja09iakNFeGNlcHRpb25zLmgiCisjaW1w
b3J0IDxtdXRleD4KKyNpbXBvcnQgPHVuaWNvZGUvdWxvYy5oPgorI2ltcG9ydCA8d3RmL0Fzc2Vy
dGlvbnMuaD4KKyNpbXBvcnQgPHd0Zi9Mb2NrLmg+CisjaW1wb3J0IDx3dGYvTmV2ZXJEZXN0cm95
ZWQuaD4KKyNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KKyNpbXBvcnQgPHd0Zi9zcGkvY2YvQ0ZC
dW5kbGVTUEkuaD4KKyNpbXBvcnQgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2Ug
V1RGIHsKKworc3RhdGljIHZvaWQgKCpjYWxsYmFjaykoKTsKKwordm9pZCBzZXRQbGF0Zm9ybVVz
ZXJQcmVmZXJyZWRMYW5ndWFnZXNDaGFuZ2VkQ2FsbGJhY2sodm9pZCAoKnBhc3NlZENhbGxiYWNr
KSgpKQoreworICAgIGNhbGxiYWNrID0gcGFzc2VkQ2FsbGJhY2s7Cit9CisKK3N0YXRpYyBTdGF0
aWNMb2NrIHByZWZlcnJlZExhbmd1YWdlc011dGV4OworCitzdGF0aWMgVmVjdG9yPFN0cmluZz4m
IHByZWZlcnJlZExhbmd1YWdlcygpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFZlY3Rv
cjxTdHJpbmc+PiBsYW5ndWFnZXM7CisgICAgcmV0dXJuIGxhbmd1YWdlczsKK30KKworfQorCitA
aW50ZXJmYWNlIFdURkxhbmd1YWdlQ2hhbmdlT2JzZXJ2ZXIgOiBOU09iamVjdAorQGVuZAorCitA
aW1wbGVtZW50YXRpb24gV1RGTGFuZ3VhZ2VDaGFuZ2VPYnNlcnZlcgorCisrICh2b2lkKWxhbmd1
YWdlUHJlZmVyZW5jZXNEaWRDaGFuZ2U6KE5TTm90aWZpY2F0aW9uICopbm90aWZpY2F0aW9uCit7
CisgICAgVU5VU0VEX1BBUkFNKG5vdGlmaWNhdGlvbik7CisKKyAgICB7CisgICAgICAgIHN0ZDo6
bG9ja19ndWFyZDxTdGF0aWNMb2NrPiBsb2NrKFdURjo6cHJlZmVycmVkTGFuZ3VhZ2VzTXV0ZXgp
OworICAgICAgICBXVEY6OnByZWZlcnJlZExhbmd1YWdlcygpLmNsZWFyKCk7CisgICAgfQorICAg
IAorICAgIGlmIChXVEY6OmNhbGxiYWNrKQorICAgICAgICBXVEY6OmNhbGxiYWNrKCk7Cit9CisK
K0BlbmQKKworbmFtZXNwYWNlIFdURiB7CisKK3N0YXRpYyBTdHJpbmcgaHR0cFN0eWxlTGFuZ3Vh
Z2VDb2RlKE5TU3RyaW5nICpsYW5ndWFnZSwgTlNTdHJpbmcgKmNvdW50cnkpCit7CisgICAgU0lu
dDMyIGxhbmd1YWdlQ29kZTsKKyAgICBTSW50MzIgcmVnaW9uQ29kZTsgCisgICAgU0ludDMyIHNj
cmlwdENvZGU7IAorICAgIENGU3RyaW5nRW5jb2Rpbmcgc3RyaW5nRW5jb2Rpbmc7CisgICAgCisg
ICAgYm9vbCBsYW5ndWFnZURpZFNwZWNpZnlFeHBsaWNpdFZhcmlhbnQgPSBbbGFuZ3VhZ2UgcmFu
Z2VPZkNoYXJhY3RlckZyb21TZXQ6W05TQ2hhcmFjdGVyU2V0IGNoYXJhY3RlclNldFdpdGhDaGFy
YWN0ZXJzSW5TdHJpbmc6QCItXyJdXS5sb2NhdGlvbiAhPSBOU05vdEZvdW5kOworCisgICAgLy8g
RklYTUU6IFRoaXMgdHJhbnNmb3JtYXRpb24gaXMgdmVyeSB3cm9uZzoKKyAgICAvLyAxLiBUaGVy
ZSBpcyBubyByZWFzb24gd2h5IENGQnVuZGxlIGxvY2FsaXphdGlvbiBuYW1lcyB3b3VsZCBiZSBh
dCBhbGwgcmVsYXRlZCB0byBsYW5ndWFnZSBuYW1lcyBhcyB1c2VkIG9uIHRoZSBXZWIuCisgICAg
Ly8gMi4gU2NyaXB0IE1hbmFnZXIgY29kZXMgY2Fubm90IHJlcHJlc2VudCBhbGwgbGFuZ3VhZ2Vz
IHRoYXQgYXJlIG5vdyBzdXBwb3J0ZWQgYnkgdGhlIHBsYXRmb3JtLCBzbyB0aGUgY29udmVyc2lv
biBpcyBsb3NzeS4KKyAgICAvLyAzLiBUaGlzIHNob3VsZCBwcm9iYWJseSBtYXRjaCB3aGF0IGlz
IHNlbnQgYnkgdGhlIG5ldHdvcmsgbGF5ZXIgYXMgQWNjZXB0LUxhbmd1YWdlLCBidXQgY3VycmVu
dGx5LCB0aGF0J3MgaW1wbGVtZW50ZWQgc2VwYXJhdGVseS4KKyAgICBDRkJ1bmRsZUdldExvY2Fs
aXphdGlvbkluZm9Gb3JMb2NhbGl6YXRpb24oKENGU3RyaW5nUmVmKWxhbmd1YWdlLCAmbGFuZ3Vh
Z2VDb2RlLCAmcmVnaW9uQ29kZSwgJnNjcmlwdENvZGUsICZzdHJpbmdFbmNvZGluZyk7CisgICAg
UmV0YWluUHRyPENGU3RyaW5nUmVmPiBwcmVmZXJyZWRMYW5ndWFnZUNvZGUgPSBhZG9wdENGKENG
QnVuZGxlQ29weUxvY2FsaXphdGlvbkZvckxvY2FsaXphdGlvbkluZm8obGFuZ3VhZ2VDb2RlLCBy
ZWdpb25Db2RlLCBzY3JpcHRDb2RlLCBzdHJpbmdFbmNvZGluZykpOworICAgIGlmIChwcmVmZXJy
ZWRMYW5ndWFnZUNvZGUpCisgICAgICAgIGxhbmd1YWdlID0gKE5TU3RyaW5nICopcHJlZmVycmVk
TGFuZ3VhZ2VDb2RlLmdldCgpOworCisgICAgLy8gTWFrZSB0aGUgc3RyaW5nIGxvd2VyY2FzZS4K
KyAgICBOU1N0cmluZyAqbG93ZXJjYXNlTGFuZ3VhZ2VDb2RlID0gW2xhbmd1YWdlIGxvd2VyY2Fz
ZVN0cmluZ107CisgICAgTlNTdHJpbmcgKmxvd2VyY2FzZUNvdW50cnlDb2RlID0gW2NvdW50cnkg
bG93ZXJjYXNlU3RyaW5nXTsKKyAgICAKKyAgICAvLyBJZiB3ZSBzZWUgYSAiXyIgYWZ0ZXIgYSAy
LWxldHRlciBsYW5ndWFnZSBjb2RlOgorICAgIC8vIElmIHRoZSBjb3VudHJ5IGlzIHZhbGlkIGFu
ZCB0aGUgbGFuZ3VhZ2UgZGlkIG5vdCBzcGVjaWZ5IGEgdmFyaWFudCwgcmVwbGFjZSB0aGUgIl8i
IGFuZAorICAgIC8vIHdoYXRldmVyIGNvbWVzIGFmdGVyIGl0IHdpdGggIi0iIGZvbGxvd2VkIGJ5
IHRoZSBjb3VudHJ5IGNvZGUuCisgICAgLy8gT3RoZXJ3aXNlLCByZXBsYWNlIHRoZSAiXyIgd2l0
aCBhICItIiBhbmQgdXNlIHdoYXRldmVyIGNvdW50cnkKKyAgICAvLyBDRkJ1bmRsZUNvcHlMb2Nh
bGl6YXRpb25Gb3JMb2NhbGl6YXRpb25JbmZvKCkgcmV0dXJuZWQuCisgICAgaWYgKFtsb3dlcmNh
c2VMYW5ndWFnZUNvZGUgbGVuZ3RoXSA+PSAzICYmIFtsb3dlcmNhc2VMYW5ndWFnZUNvZGUgY2hh
cmFjdGVyQXRJbmRleDoyXSA9PSAnXycpIHsKKyAgICAgICAgaWYgKGNvdW50cnkgJiYgIWxhbmd1
YWdlRGlkU3BlY2lmeUV4cGxpY2l0VmFyaWFudCkKKyAgICAgICAgICAgIHJldHVybiBbTlNTdHJp
bmcgc3RyaW5nV2l0aEZvcm1hdDpAIiVALSVAIiwgW2xvd2VyY2FzZUxhbmd1YWdlQ29kZSBzdWJz
dHJpbmdXaXRoUmFuZ2U6TlNNYWtlUmFuZ2UoMCwgMildLCBsb3dlcmNhc2VDb3VudHJ5Q29kZV07
CisgICAgICAgIAorICAgICAgICAvLyBGYWxsIGJhY2sgdG8gb2xkZXIgYmVoYXZpb3IsIHdoaWNo
IHVzZWQgdGhlIG9yaWdpbmFsIGxhbmd1YWdlLWJhc2VkIGNvZGUgYnV0IGp1c3QgY2hhbmdlZAor
ICAgICAgICAvLyB0aGUgIl8iIHRvIGEgIi0iLgorICAgICAgICBSZXRhaW5QdHI8TlNNdXRhYmxl
U3RyaW5nPiBtdXRhYmxlTGFuZ3VhZ2VDb2RlID0gYWRvcHROUyhbbG93ZXJjYXNlTGFuZ3VhZ2VD
b2RlIG11dGFibGVDb3B5XSk7CisgICAgICAgIFttdXRhYmxlTGFuZ3VhZ2VDb2RlLmdldCgpIHJl
cGxhY2VDaGFyYWN0ZXJzSW5SYW5nZTpOU01ha2VSYW5nZSgyLCAxKSB3aXRoU3RyaW5nOkAiLSJd
OworICAgICAgICByZXR1cm4gbXV0YWJsZUxhbmd1YWdlQ29kZS5nZXQoKTsKKyAgICB9CisKKyAg
ICByZXR1cm4gbG93ZXJjYXNlTGFuZ3VhZ2VDb2RlOworfQorCitzdGF0aWMgYm9vbCBpc1ZhbGlk
SUNVQ291bnRyeUNvZGUoTlNTdHJpbmcqIGNvdW50cnlDb2RlKQoreworICAgIGlmICghY291bnRy
eUNvZGUpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBjb25zdCBjaGFyKiBjb25zdCogY291
bnRyaWVzID0gdWxvY19nZXRJU09Db3VudHJpZXMoKTsKKyAgICBjb25zdCBjaGFyKiBjb3VudHJ5
VVRGOCA9IFtjb3VudHJ5Q29kZSBVVEY4U3RyaW5nXTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBjb3VudHJpZXNbaV07ICsraSkgeworICAgICAgICBjb25zdCBjaGFyKiBwb3NzaWJsZUNvdW50
cnkgPSBjb3VudHJpZXNbaV07CisgICAgICAgIGlmICghc3RyY21wKGNvdW50cnlVVEY4LCBwb3Nz
aWJsZUNvdW50cnkpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIHJldHVy
biBmYWxzZTsKK30KKworVmVjdG9yPFN0cmluZz4gcGxhdGZvcm1Vc2VyUHJlZmVycmVkTGFuZ3Vh
Z2VzKCkKK3sKKyNpZiBQTEFURk9STShNQUMpCisgICAgc3RhdGljIGRpc3BhdGNoX29uY2VfdCBv
bmNlVG9rZW47CisgICAgZGlzcGF0Y2hfb25jZSgmb25jZVRva2VuLCBeeworICAgICAgICBbW05T
RGlzdHJpYnV0ZWROb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0gYWRkT2JzZXJ2ZXI6
W1dURkxhbmd1YWdlQ2hhbmdlT2JzZXJ2ZXIgc2VsZl0gc2VsZWN0b3I6QHNlbGVjdG9yKGxhbmd1
YWdlUHJlZmVyZW5jZXNEaWRDaGFuZ2U6KSBuYW1lOkAiQXBwbGVMYW5ndWFnZVByZWZlcmVuY2Vz
Q2hhbmdlZE5vdGlmaWNhdGlvbiIgb2JqZWN0Om5pbF07CisgICAgfSk7CisjZW5kaWYKKworICAg
IEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKKworICAgIHN0ZDo6bG9ja19ndWFyZDxTdGF0
aWNMb2NrPiBsb2NrKHByZWZlcnJlZExhbmd1YWdlc011dGV4KTsKKyAgICBWZWN0b3I8U3RyaW5n
PiYgdXNlclByZWZlcnJlZExhbmd1YWdlcyA9IHByZWZlcnJlZExhbmd1YWdlcygpOworCisgICAg
aWYgKHVzZXJQcmVmZXJyZWRMYW5ndWFnZXMuaXNFbXB0eSgpKSB7CisgICAgICAgIFJldGFpblB0
cjxDRkxvY2FsZVJlZj4gbG9jYWxlID0gYWRvcHRDRihDRkxvY2FsZUNvcHlDdXJyZW50KCkpOwor
ICAgICAgICBOU1N0cmluZyAqY291bnRyeUNvZGUgPSAoTlNTdHJpbmcgKilDRkxvY2FsZUdldFZh
bHVlKGxvY2FsZS5nZXQoKSwga0NGTG9jYWxlQ291bnRyeUNvZGUpOworICAgICAgICAKKyAgICAg
ICAgaWYgKCFpc1ZhbGlkSUNVQ291bnRyeUNvZGUoY291bnRyeUNvZGUpKQorICAgICAgICAgICAg
Y291bnRyeUNvZGUgPSBuaWw7CisgICAgICAgIAorICAgICAgICBSZXRhaW5QdHI8Q0ZBcnJheVJl
Zj4gbGFuZ3VhZ2VzID0gYWRvcHRDRihDRkxvY2FsZUNvcHlQcmVmZXJyZWRMYW5ndWFnZXMoKSk7
CisgICAgICAgIENGSW5kZXggbGFuZ3VhZ2VDb3VudCA9IENGQXJyYXlHZXRDb3VudChsYW5ndWFn
ZXMuZ2V0KCkpOworICAgICAgICBpZiAoIWxhbmd1YWdlQ291bnQpCisgICAgICAgICAgICB1c2Vy
UHJlZmVycmVkTGFuZ3VhZ2VzLmFwcGVuZCgiZW4iKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAg
ICAgICBmb3IgKENGSW5kZXggaSA9IDA7IGkgPCBsYW5ndWFnZUNvdW50OyBpKyspCisgICAgICAg
ICAgICAgICAgdXNlclByZWZlcnJlZExhbmd1YWdlcy5hcHBlbmQoaHR0cFN0eWxlTGFuZ3VhZ2VD
b2RlKChOU1N0cmluZyAqKUNGQXJyYXlHZXRWYWx1ZUF0SW5kZXgobGFuZ3VhZ2VzLmdldCgpLCBp
KSwgY291bnRyeUNvZGUpKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIFZlY3RvcjxTdHJpbmc+
IHVzZXJQcmVmZXJyZWRMYW5ndWFnZXNDb3B5OworICAgIHVzZXJQcmVmZXJyZWRMYW5ndWFnZXND
b3B5LnJlc2VydmVJbml0aWFsQ2FwYWNpdHkodXNlclByZWZlcnJlZExhbmd1YWdlcy5zaXplKCkp
OworCisgICAgZm9yIChhdXRvJiBsYW5ndWFnZSA6IHVzZXJQcmVmZXJyZWRMYW5ndWFnZXMpCisg
ICAgICAgIHVzZXJQcmVmZXJyZWRMYW5ndWFnZXNDb3B5LnVuY2hlY2tlZEFwcGVuZChsYW5ndWFn
ZS5pc29sYXRlZENvcHkoKSk7CisKKyAgICByZXR1cm4gdXNlclByZWZlcnJlZExhbmd1YWdlc0Nv
cHk7CisKKyAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TOworCisgICAgcmV0dXJuIFZlY3Rv
cjxTdHJpbmc+KCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdURgpJbmRleDogU291cmNlL1dURi93
dGYvUGxhdGZvcm1Vc2VyUHJlZmVycmVkTGFuZ3VhZ2VzVW5peC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dURi93dGYvUGxhdGZvcm1Vc2VyUHJlZmVycmVkTGFuZ3VhZ2VzVW5peC5jcHAJKHJl
dmlzaW9uIDApCisrKyBTb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybVVzZXJQcmVmZXJyZWRMYW5ndWFn
ZXNVbml4LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDUyIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDA3IEFscCBUb2tlciA8YWxwQGF0b2tlci5jb20+CisgKiBDb3B5cmlnaHQgKEMp
IDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgbGlicmFy
eSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1v
ZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
CisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
OyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9u
KSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQg
aW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBX
QVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFO
VEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdO
VQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisg
KgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0
aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisg
KiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiUGxhdGZvcm1Vc2VyUHJlZmVycmVkTGFuZ3VhZ2VzLmgiCisKKyNpbmNsdWRl
IDxsb2NhbGUuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisjaW5jbHVkZSA8d3RmL3RleHQv
V1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXVEYgeworCit2b2lkIHNldFBsYXRmb3JtVXNlclBy
ZWZlcnJlZExhbmd1YWdlc0NoYW5nZWRDYWxsYmFjayh2b2lkICgqKSgpKSB7IH0KKworLy8gVXNp
bmcgcGFuZ29fbGFuZ3VhZ2VfZ2V0X2RlZmF1bHQoKSBoZXJlIGlzIG5vdCBhbiBvcHRpb24sIGJl
Y2F1c2UKKy8vIGl0IGRvZXNuJ3Qgc3VwcG9ydCBjaGFuZ2luZyB0aGUgbG9jYWxlIGluIHJ1bnRp
bWUsIHNvIGl0IHJldHVybnMKKy8vIGFsd2F5cyB0aGUgc2FtZSB2YWx1ZS4KK3N0YXRpYyBTdHJp
bmcgcGxhdGZvcm1MYW5ndWFnZSgpCit7CisgICAgU3RyaW5nIGxvY2FsZURlZmF1bHQoc2V0bG9j
YWxlKExDX0NUWVBFLCBudWxscHRyKSk7CisgICAgaWYgKGxvY2FsZURlZmF1bHQuaXNFbXB0eSgp
KQorICAgICAgICByZXR1cm4gU3RyaW5nKCJjIik7CisKKyAgICBTdHJpbmcgbm9ybWFsaXplZERl
ZmF1bHQgPSBsb2NhbGVEZWZhdWx0LmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCk7CisgICAgbm9y
bWFsaXplZERlZmF1bHQucmVwbGFjZSgnXycsICctJyk7CisgICAgbm9ybWFsaXplZERlZmF1bHQu
dHJ1bmNhdGUobm9ybWFsaXplZERlZmF1bHQuZmluZCgnLicpKTsKKyAgICByZXR1cm4gbm9ybWFs
aXplZERlZmF1bHQ7Cit9CisKK1ZlY3RvcjxTdHJpbmc+IHBsYXRmb3JtVXNlclByZWZlcnJlZExh
bmd1YWdlcygpCit7CisgICAgcmV0dXJuIHsgcGxhdGZvcm1MYW5ndWFnZSgpIH07Cit9CisKK30g
Ly8gbmFtZXNwYWNlIFdURgpJbmRleDogU291cmNlL1dURi93dGYvUGxhdGZvcm1Vc2VyUHJlZmVy
cmVkTGFuZ3VhZ2VzV2luLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9QbGF0Zm9y
bVVzZXJQcmVmZXJyZWRMYW5ndWFnZXNXaW4uY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dU
Ri93dGYvUGxhdGZvcm1Vc2VyUHJlZmVycmVkTGFuZ3VhZ2VzV2luLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMCwwICsxLDc5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA3LCAyMDE2IEFwcGxl
IEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1V
c2VyUHJlZmVycmVkTGFuZ3VhZ2VzLmgiCisKKyNpbmNsdWRlIDx3aW5kb3dzLmg+CisjaW5jbHVk
ZSA8d3RmL1ZlY3Rvci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1l
c3BhY2UgV1RGIHsKKwordm9pZCBzZXRQbGF0Zm9ybVVzZXJQcmVmZXJyZWRMYW5ndWFnZXNDaGFu
Z2VkQ2FsbGJhY2sodm9pZCAoKikoKSkgeyB9CisKK3N0YXRpYyBTdHJpbmcgbG9jYWxlSW5mbyhM
Q1RZUEUgbG9jYWxlVHlwZSwgY29uc3QgU3RyaW5nJiBmYWxsYmFjaykKK3sKKyAgICBMQU5HSUQg
bGFuZ0lEID0gR2V0VXNlckRlZmF1bHRVSUxhbmd1YWdlKCk7CisgICAgaW50IGxvY2FsZUNoYXJz
ID0gR2V0TG9jYWxlSW5mbyhsYW5nSUQsIGxvY2FsZVR5cGUsIDAsIDApOworICAgIGlmICghbG9j
YWxlQ2hhcnMpCisgICAgICAgIHJldHVybiBmYWxsYmFjazsKKyAgICBVQ2hhciogbG9jYWxlTmFt
ZUJ1ZjsKKyAgICBTdHJpbmcgbG9jYWxlTmFtZSA9IFN0cmluZzo6Y3JlYXRlVW5pbml0aWFsaXpl
ZChsb2NhbGVDaGFycywgbG9jYWxlTmFtZUJ1Zik7CisgICAgbG9jYWxlQ2hhcnMgPSBHZXRMb2Nh
bGVJbmZvKGxhbmdJRCwgbG9jYWxlVHlwZSwgbG9jYWxlTmFtZUJ1ZiwgbG9jYWxlQ2hhcnMpOwor
ICAgIGlmICghbG9jYWxlQ2hhcnMpCisgICAgICAgIHJldHVybiBmYWxsYmFjazsKKyAgICBpZiAo
bG9jYWxlTmFtZS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBmYWxsYmFjazsKKworICAgIGxv
Y2FsZU5hbWUudHJ1bmNhdGUobG9jYWxlTmFtZS5sZW5ndGgoKSAtIDEpOworICAgIHJldHVybiBs
b2NhbGVOYW1lOworfQorCitzdGF0aWMgU3RyaW5nIHBsYXRmb3JtTGFuZ3VhZ2UoKQoreworICAg
IHN0YXRpYyBTdHJpbmcgY29tcHV0ZWREZWZhdWx0TGFuZ3VhZ2U7CisgICAgaWYgKCFjb21wdXRl
ZERlZmF1bHRMYW5ndWFnZS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBjb21wdXRlZERlZmF1
bHRMYW5ndWFnZTsKKworICAgIFN0cmluZyBsYW5ndWFnZU5hbWUgPSBsb2NhbGVJbmZvKExPQ0FM
RV9TSVNPNjM5TEFOR05BTUUsICJlbiIpOworICAgIFN0cmluZyBjb3VudHJ5TmFtZSA9IGxvY2Fs
ZUluZm8oTE9DQUxFX1NJU08zMTY2Q1RSWU5BTUUsIFN0cmluZygpKTsKKworICAgIGlmIChjb3Vu
dHJ5TmFtZS5pc0VtcHR5KCkpCisgICAgICAgIGNvbXB1dGVkRGVmYXVsdExhbmd1YWdlID0gbGFu
Z3VhZ2VOYW1lOworICAgIGVsc2UKKyAgICAgICAgY29tcHV0ZWREZWZhdWx0TGFuZ3VhZ2UgPSBs
YW5ndWFnZU5hbWUgKyAnLScgKyBjb3VudHJ5TmFtZTsKKworICAgIHJldHVybiBjb21wdXRlZERl
ZmF1bHRMYW5ndWFnZTsKK30KKworVmVjdG9yPFN0cmluZz4gcGxhdGZvcm1Vc2VyUHJlZmVycmVk
TGFuZ3VhZ2VzKCkKK3sKKyAgICBWZWN0b3I8U3RyaW5nPiB1c2VyUHJlZmVycmVkTGFuZ3VhZ2Vz
OworICAgIHVzZXJQcmVmZXJyZWRMYW5ndWFnZXMuYXBwZW5kKHBsYXRmb3JtTGFuZ3VhZ2UoKSk7
CisgICAgcmV0dXJuIHVzZXJQcmVmZXJyZWRMYW5ndWFnZXM7Cit9CisKK30gLy8gbmFtZXNwYWNl
IFdURgpJbmRleDogU291cmNlL1dURi93dGYvUGxhdGZvcm1XaW4uY21ha2UKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dURi93dGYvUGxhdGZvcm1XaW4uY21ha2UJKHJldmlzaW9uIDIwMDk2OCkKKysr
IFNvdXJjZS9XVEYvd3RmL1BsYXRmb3JtV2luLmNtYWtlCSh3b3JraW5nIGNvcHkpCkBAIC0xLDQg
KzEsNiBAQAogbGlzdChBUFBFTkQgV1RGX1NPVVJDRVMKKyAgICBQTGF0Zm9ybVVzZXJQcmVmZXJy
ZWRMYW5ndWFnZXNXaW4uY3BwCisKICAgICB0ZXh0L2NmL0F0b21pY1N0cmluZ0ltcGxDRi5jcHAK
ICAgICB0ZXh0L2NmL1N0cmluZ0NGLmNwcAogICAgIHRleHQvY2YvU3RyaW5nSW1wbENGLmNwcApJ
bmRleDogU291cmNlL1dURi93dGYvc3BpL2NmL0NGQnVuZGxlU1BJLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dURi93dGYvc3BpL2NmL0NGQnVuZGxlU1BJLmgJKHJldmlzaW9uIDApCisrKyBTb3Vy
Y2UvV1RGL3d0Zi9zcGkvY2YvQ0ZCdW5kbGVTUEkuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDQ0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisj
aWZuZGVmIENGQnVuZGxlU1BJX2gKKyNkZWZpbmUgQ0ZCdW5kbGVTUElfaAorCisjaW5jbHVkZSA8
Q29yZUZvdW5kYXRpb24vQ29yZUZvdW5kYXRpb24uaD4KKworI2lmIFVTRShBUFBMRV9JTlRFUk5B
TF9TREspCisjaW1wb3J0IDxDb3JlRm91bmRhdGlvbi9DRlByaXYuaD4KKyNlbHNlCisjaW5jbHVk
ZSA8d3RmL3NwaS9kYXJ3aW4vWFBDU1BJLmg+CisjZW5kaWYKKworZXh0ZXJuICJDIiB7Cit2b2lk
IF9DRkJ1bmRsZVNldHVwWFBDQm9vdHN0cmFwKHhwY19vYmplY3RfdCBib290c3RyYXApOworCitC
b29sZWFuIENGQnVuZGxlR2V0TG9jYWxpemF0aW9uSW5mb0ZvckxvY2FsaXphdGlvbihDRlN0cmlu
Z1JlZiBsb2NhbGl6YXRpb25OYW1lLCBTSW50MzIgKmxhbmd1YWdlQ29kZSwgU0ludDMyICpyZWdp
b25Db2RlLCBTSW50MzIgKnNjcmlwdENvZGUsIENGU3RyaW5nRW5jb2RpbmcgKnN0cmluZ0VuY29k
aW5nKTsKK0NGU3RyaW5nUmVmIENGQnVuZGxlQ29weUxvY2FsaXphdGlvbkZvckxvY2FsaXphdGlv
bkluZm8oU0ludDMyIGxhbmd1YWdlQ29kZSwgU0ludDMyIHJlZ2lvbkNvZGUsIFNJbnQzMiBzY3Jp
cHRDb2RlLCBDRlN0cmluZ0VuY29kaW5nIHN0cmluZ0VuY29kaW5nKTsKK30KKworI2VuZGlmCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMDA5NjgpCisrKyBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw4MCBAQAorMjAxNi0wNS0xNiAgRmlsaXAgUGl6
bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAgIFdURiBzaG91bGQga25vdyBhYm91dCBM
YW5ndWFnZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTU3NzU2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
Tm8gbmV3IHRlc3RzIGJlY2F1c2UgdGhpcyBkb2VzIG5vdCBjaGFuZ2UgYmVoYXZpb3IuCisgICAg
ICAgIAorICAgICAgICBUaGlzIGNoYW5nZSBpcyBhbGwgYWJvdXQgbW92aW5nIHNvbWUgbGFuZ3Vh
Z2UgZnVuY3Rpb25hbGl0eSB0byBXVEYuIFF1b3RpbmcgdGhlIFdURgorICAgICAgICBDaGFuZ2VM
b2csIHRoaXMgY29udGFpbnMgdHdvIGNoYW5nZXM6CisKKyAgICAgICAgLSBNb3ZlIGV2ZXJ5dGhp
bmcgdGhhdCBXZWJDb3JlJ3MgbG9naWMgZm9yIGdldHRpbmcgdGhlIHBsYXRmb3JtIHVzZXIgcHJl
ZmVycmVkIGxhbmd1YWdlCisgICAgICAgICAgZGVwZW5kZWQgb24gaW50byBXVEYuIFRoaXMgbWVh
bnMgQ0ZCdW5kbGVTUEkuaCBhbmQgQmxvY2tPYmpDRXhjZXB0aW9ucy5ofGNwcC4KKyAgICAgICAg
CisgICAgICAgIC0gTW92ZSBXZWJDb3JlOjpwbGF0Zm9ybVVzZXJQcmVmZXJyZWRMYW5ndWFnZXMo
KSB0byBXVEY6OnBsYXRmb3JtVXNlclByZWZlcnJlZExhbmd1YWdlcygpLgorICAgICAgICAKKyAg
ICAgICAgVGhlIGNoYW5nZXMgaW4gV2ViQ29yZSBhcmUgbW9zdGx5IGFib3V0IHJld2lyaW5nICNp
bmNsdWRlcyBhbmQgI2ltcG9ydHMgYW5kIHJlbW92aW5nIHRoZQorICAgICAgICBjb2RlIHRoYXQg
d2UgbW92ZWQgdG8gV1RGLiBCdXQgdGhlcmUgaXMgb25lIGxvZ2ljIGNoYW5nZTogcHJldmlvdXNs
eSwKKyAgICAgICAgcGxhdGZvcm1Vc2VyUHJlZmVycmVkTGFuZ3VhZ2VzKCkgd291bGQgY2FsbCBX
ZWJDb3JlOjpsYW5ndWFnZURpZENoYW5nZSgpLiBJdCBjYW4ndCBkbyB0aGF0CisgICAgICAgIGRp
cmVjdGx5IGFueW1vcmUsIGJ1dCBXVEYgZ2l2ZXMgV2ViQ29yZSBzb21lIEFQSSBmb3IgcmVnaXN0
ZXJpbmcgdGhlIGNhbGxiYWNrLiBTbyBpbgorICAgICAgICBMYW5ndWFnZS5jcHAgd2Ugbm93IHJl
Z2lzdGVyIGxhbmd1YWdlRGlkQ2hhbmdlIGFueXRpbWUgd2UgZG8gc29tZXRoaW5nIHRoYXQgd291
bGQKKyAgICAgICAgbmVjZXNzaXRhdGUgaXQsIGxpa2UgY2FsbGluZyBwbGF0Zm9ybVVzZXJQcmVm
ZXJyZWRMYW5ndWFnZXMoKS4gVGhpcyBhbHNvIHJlZ2lzdGVycyB0aGUKKyAgICAgICAgY2FsbGJh
Y2sgaW5zaWRlIGFkZExhbmd1YWdlQ2hhbmdlT2JzZXJ2ZXIoKSwgc2luY2UgaXQncyBwb3NzaWJs
ZSBmb3IgdGhhdCB0byBiZSBjYWxsZWQKKyAgICAgICAgYWZ0ZXIgSlNDIGhhZCBjYWxsZWQgcGxh
dGZvcm1Vc2VyUHJlZmVycmVkTGFuZ3VhZ2VzKCkgYnV0IGJlZm9yZSBXZWJDb3JlIGRvZXMgc28u
CisgICAgICAgIAorICAgICAgICAqIFBsYXRmb3JtRWZsLmNtYWtlOgorICAgICAgICAqIFBsYXRm
b3JtR1RLLmNtYWtlOgorICAgICAgICAqIFBsYXRmb3JtTWFjLmNtYWtlOgorICAgICAgICAqIFBs
YXRmb3JtV2luLmNtYWtlOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvajoKKyAgICAgICAgKiBiaW5kaW5ncy9vYmpjL0RPTUN1c3RvbVhQYXRoTlNSZXNvbHZlci5t
bToKKyAgICAgICAgKiBlZGl0aW5nL2lvcy9FZGl0b3JJT1MubW06CisgICAgICAgICogZWRpdGlu
Zy9tYWMvRGljdGlvbmFyeUxvb2t1cC5tbToKKyAgICAgICAgKiBlZGl0aW5nL21hYy9FZGl0b3JN
YWMubW06CisgICAgICAgICogcGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzTWVkaWFBRi5jcHA6
CisgICAgICAgICogcGFnZS9pb3MvRXZlbnRIYW5kbGVySU9TLm1tOgorICAgICAgICAqIHBhZ2Uv
aW9zL0ZyYW1lSU9TLm1tOgorICAgICAgICAqIHBhZ2UvbWFjL0Nocm9tZU1hYy5tbToKKyAgICAg
ICAgKiBwYWdlL21hYy9FdmVudEhhbmRsZXJNYWMubW06CisgICAgICAgICogcGxhdGZvcm0vTGFu
Z3VhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cmVnaXN0ZXJMYW5ndWFnZURpZENoYW5nZUNh
bGxiYWNrSWZOZWNlc3NhcnkpOgorICAgICAgICAoV2ViQ29yZTo6b2JzZXJ2ZXJNYXApOgorICAg
ICAgICAoV2ViQ29yZTo6YWRkTGFuZ3VhZ2VDaGFuZ2VPYnNlcnZlcik6CisgICAgICAgIChXZWJD
b3JlOjpvdmVycmlkZVVzZXJQcmVmZXJyZWRMYW5ndWFnZXMpOgorICAgICAgICAoV2ViQ29yZTo6
dXNlclByZWZlcnJlZExhbmd1YWdlcyk6CisgICAgICAgICogcGxhdGZvcm0vTGFuZ3VhZ2UuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9Db250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXJDb2Nv
YS5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbmJh
bmRUZXh0VHJhY2tQcml2YXRlQVZGT2JqQy5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1t
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1
ZmZlclByaXZhdGVBVkZPYmpDLm1tOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL2Nv
Y29hL1BsYXRmb3JtQ0FGaWx0ZXJzQ29jb2EubW06CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2EvY29jb2EvUGxhdGZvcm1DQUxheWVyQ29jb2EubW06CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvRm9udENvY29hLm1tOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L21hYy9Db2xvck1hYy5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvR3JhcGhp
Y3NDb250ZXh0M0RNYWMubW06CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL01lZGlh
UGxheWVyUHJpdmF0ZVFUS2l0Lm1tOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9QbGF0Zm9ybVNw
ZWVjaFN5bnRoZXNpemVySU9TLm1tOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9TY3JvbGxWaWV3
SU9TLm1tOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9XaWRnZXRJT1MubW06CisgICAgICAgICog
cGxhdGZvcm0vbWFjL0Jsb2NrRXhjZXB0aW9ucy5oOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRm
b3JtL21hYy9CbG9ja0V4Y2VwdGlvbnMubW06IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0v
bWFjL0N1cnNvck1hYy5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvTGFuZ3VhZ2UubW06IFJl
bW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vbWFjL1Njcm9sbEFuaW1hdG9yTWFjLm1tOgorICAg
ICAgICAqIHBsYXRmb3JtL21hYy9TY3JvbGxWaWV3TWFjLm1tOgorICAgICAgICAqIHBsYXRmb3Jt
L21hYy9TY3JvbGxiYXJUaGVtZU1hYy5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvVGhlbWVN
YWMubW06CisgICAgICAgICogcGxhdGZvcm0vbWFjL1dpZGdldE1hYy5tbToKKyAgICAgICAgKiBw
bGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZWaWRlb0NhcHR1cmVTb3VyY2UubW06CisgICAgICAg
ICogcGxhdGZvcm0vbmV0d29yay9tYWMvQ29va2llSmFyTWFjLm1tOgorICAgICAgICAqIHBsYXRm
b3JtL25ldHdvcmsvbWFjL1Jlc291cmNlRXJyb3JNYWMubW06CisgICAgICAgICogcGxhdGZvcm0v
bmV0d29yay9tYWMvUmVzb3VyY2VIYW5kbGVNYWMubW06CisgICAgICAgICogcGxhdGZvcm0vc3Bp
L2NmL0NGQnVuZGxlU1BJLmg6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vdW5peC9MYW5n
dWFnZVVuaXguY3BwOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9MYW5ndWFnZVdp
bi5jcHA6IFJlbW92ZWQuCisKIDIwMTYtMDUtMTMgIEVucmljYSBDYXN1Y2NpICA8ZW5yaWNhQGFw
cGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgdW51c2VkIGluaXRpYWxpemVyIGZvciBXZWJFdmVu
dCBvbiBpT1MuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUVmbC5jbWFrZQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUVmbC5jbWFrZQkocmV2aXNpb24gMjAwOTY4
KQorKysgU291cmNlL1dlYkNvcmUvUGxhdGZvcm1FZmwuY21ha2UJKHdvcmtpbmcgY29weSkKQEAg
LTIxOCw3ICsyMTgsNiBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKIAogICAgIHBsYXRm
b3JtL3RleHQvaHlwaGVuL0h5cGhlbmF0aW9uTGliSHlwaGVuLmNwcAogCi0gICAgcGxhdGZvcm0v
dW5peC9MYW5ndWFnZVVuaXguY3BwCiAgICAgcGxhdGZvcm0vdW5peC9Mb2dnaW5nVW5peC5jcHAK
IAogICAgIHJlbmRlcmluZy9SZW5kZXJUaGVtZUVmbC5jcHAKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L1BsYXRmb3JtR1RLLmNtYWtlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1BsYXRmb3Jt
R1RLLmNtYWtlCShyZXZpc2lvbiAyMDA5NjgpCisrKyBTb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUdU
Sy5jbWFrZQkod29ya2luZyBjb3B5KQpAQCAtMTgzLDcgKzE4Myw2IEBAIGxpc3QoQVBQRU5EIFdl
YkNvcmVfU09VUkNFUwogCiAgICAgcGxhdGZvcm0vdGV4dC9oeXBoZW4vSHlwaGVuYXRpb25MaWJI
eXBoZW4uY3BwCiAKLSAgICBwbGF0Zm9ybS91bml4L0xhbmd1YWdlVW5peC5jcHAKICAgICBwbGF0
Zm9ybS91bml4L0xvZ2dpbmdVbml4LmNwcAogKQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9QbGF0
Zm9ybU1hYy5jbWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5j
bWFrZQkocmV2aXNpb24gMjAwOTY4KQorKysgU291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMuY21h
a2UJKHdvcmtpbmcgY29weSkKQEAgLTQ2MSw3ICs0NjEsNiBAQCBsaXN0KEFQUEVORCBXZWJDb3Jl
X1NPVVJDRVMKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZUNHLmNwcAog
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlTWF0aERhdGEuY3BwCiAKLSAg
ICBwbGF0Zm9ybS9tYWMvQmxvY2tFeGNlcHRpb25zLm1tCiAgICAgcGxhdGZvcm0vbWFjL0N1cnNv
ck1hYy5tbQogICAgIHBsYXRmb3JtL21hYy9EcmFnRGF0YU1hYy5tbQogICAgIHBsYXRmb3JtL21h
Yy9EcmFnSW1hZ2VNYWMubW0KQEAgLTQ3MSw3ICs0NzAsNiBAQCBsaXN0KEFQUEVORCBXZWJDb3Jl
X1NPVVJDRVMKICAgICBwbGF0Zm9ybS9tYWMvSElER2FtZXBhZFByb3ZpZGVyLmNwcAogICAgIHBs
YXRmb3JtL21hYy9LZXlFdmVudE1hYy5tbQogICAgIHBsYXRmb3JtL21hYy9LaWxsUmluZ01hYy5t
bQotICAgIHBsYXRmb3JtL21hYy9MYW5ndWFnZS5tbQogICAgIHBsYXRmb3JtL21hYy9Mb2NhbEN1
cnJlbnRHcmFwaGljc0NvbnRleHQubW0KICAgICBwbGF0Zm9ybS9tYWMvTG9nZ2luZ01hYy5tbQog
ICAgIHBsYXRmb3JtL21hYy9OU1Njcm9sbGVySW1wRGV0YWlscy5tbQpJbmRleDogU291cmNlL1dl
YkNvcmUvUGxhdGZvcm1XaW4uY21ha2UKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvUGxh
dGZvcm1XaW4uY21ha2UJKHJldmlzaW9uIDIwMDk2OCkKKysrIFNvdXJjZS9XZWJDb3JlL1BsYXRm
b3JtV2luLmNtYWtlCSh3b3JraW5nIGNvcHkpCkBAIC0xMjMsNyArMTIzLDYgQEAgbGlzdChBUFBF
TkQgV2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0vd2luL0dESU9iamVjdENvdW50ZXIuY3Bw
CiAgICAgcGxhdGZvcm0vd2luL0dESVV0aWxpdGllcy5jcHAKICAgICBwbGF0Zm9ybS93aW4vS2V5
RXZlbnRXaW4uY3BwCi0gICAgcGxhdGZvcm0vd2luL0xhbmd1YWdlV2luLmNwcAogICAgIHBsYXRm
b3JtL3dpbi9Mb2NhbGl6ZWRTdHJpbmdzV2luLmNwcAogICAgIHBsYXRmb3JtL3dpbi9Mb2dnaW5n
V2luLmNwcAogICAgIHBsYXRmb3JtL3dpbi9NZW1vcnlQcmVzc3VyZUhhbmRsZXJXaW4uY3BwCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCShyZXZpc2lvbiAyMDA5NjgpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTM2MzQsNyArMzYzNCw2IEBACiAJ
CTkzNEZFOUU1MEI1Q0E1MzkwMDNFNEE3MyAvKiBGaWxlQ2hvb3Nlci5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzRGRTlFNDBCNUNBNTM5MDAzRTRB
NzMgLyogRmlsZUNob29zZXIuY3BwICovOyB9OwogCQk5MzUwMEYzMjEzRkRFM0JFMDA5OUVDMjQg
LyogTlNTY3JvbGxlckltcERldGFpbHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDkzNTAwRjMxMTNGREUzQkUwMDk5RUMyNCAvKiBOU1Njcm9sbGVySW1w
RGV0YWlscy5oICovOyB9OwogCQk5MzUyMDdCRTA5QkQ0MTBBMDBGMjAzOEQgLyogTG9jYWxpemVk
U3RyaW5ncy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
OTM1MjA3QkQwOUJENDEwQTAwRjIwMzhEIC8qIExvY2FsaXplZFN0cmluZ3MuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQk5MzUyMDg0NTA5QkQ0M0I5
MDBGMjAzOEQgLyogTGFuZ3VhZ2UubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA5MzUyMDg0NDA5QkQ0M0I5MDBGMjAzOEQgLyogTGFuZ3VhZ2UubW0gKi87
IH07CiAJCTkzNTM2NzZCMDlBRUQ4OEIwMEQzNUNENiAvKiBTY3JvbGxWaWV3TWFjLm1tIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTM1MzY3NkEwOUFFRDg4
QjAwRDM1Q0Q2IC8qIFNjcm9sbFZpZXdNYWMubW0gKi87IH07CiAJCTkzNUM0NzYzMDlBQzRDRTYw
MEE2QUFCNCAvKiBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzVDNDc2MjA5QUM0Q0U2MDBBNkFBQjQg
LyogTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cy5oICovOyB9OwogCQk5MzVDNDc2ODA5QUM0
RDQzMDBBNkFBQjQgLyogUGxhdGZvcm1LZXlib2FyZEV2ZW50LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzVDNDc2NjA5QUM0RDQzMDBBNkFBQjQgLyog
UGxhdGZvcm1LZXlib2FyZEV2ZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKQEAgLTM3MzQsNyArMzczMyw2IEBACiAJCTkzRjE5OUE4MDgyNDVFNTkw
MDFFOUFCQyAvKiBXZWJDb3JlRnJhbWVWaWV3LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBGNTg3ODU0QzAyREUzNzU5MDFFQTQxMjIgLyogV2ViQ29yZUZy
YW1lVmlldy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTkzRjE5OUI4MDgyNDVFNTkwMDFFOUFCQyAvKiBTY3JvbGxiYXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDN0IyQUY4MDQ1MDgyNDEwMEE4MDAw
RiAvKiBTY3JvbGxiYXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk5M0YxOTlCQjA4MjQ1RTU5MDAxRTlBQkMgLyogV2ViQ29yZUtleWJvYXJkVUlN
b2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCRTk4
M0Q5NTA1MkEyRTBBMDA4OTJEODUgLyogV2ViQ29yZUtleWJvYXJkVUlNb2RlLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJOTNGMTk5QkUwODI0NUU1
OTAwMUU5QUJDIC8qIEJsb2NrRXhjZXB0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNjVBNjQwRjAwNTMzQkIxRjAwODVFNzc3IC8qIEJsb2NrRXhj
ZXB0aW9ucy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTkzRjE5OURFMDgyNDVFNTkwMDFFOUFCQyAvKiBQb3NpdGlvbi5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkU5MUZDOEIwNjEzMzY2NjAwNUUzNzkw
IC8qIFBvc2l0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJOTNGMTk5RTUwODI0NUU1OTAwMUU5QUJDIC8qIEhUTUxDYW52YXNFbGVtZW50Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUY2QTNENjA2
NjNCRjA0MDA0RDI5MTkgLyogSFRNTENhbnZhc0VsZW1lbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5M0YxOTlFQzA4MjQ1RTU5MDAxRTlBQkMg
LyogWFNMU3R5bGVTaGVldC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQkMwNkYyNEEwNkQxOEE3RTAwNEE2RkEzIC8qIFhTTFN0eWxlU2hlZXQuaCAqLzsg
fTsKQEAgLTM3NDYsNyArMzc0NCw2IEBACiAJCTkzRjE5QTlEMDgyNDVFNTkwMDFFOUFCQyAvKiBU
ZXh0UmVzb3VyY2VEZWNvZGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEY1MjNEMjc4MDJERTQzRDcwMTg2MzVDQSAvKiBUZXh0UmVzb3VyY2VEZWNv
ZGVyLmNwcCAqLzsgfTsKIAkJOTNGMTlBQjkwODI0NUU1OTAwMUU5QUJDIC8qIFJhbmdlLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY1MjNEMzAzMDJE
RTQ0NzYwMTg2MzVDQSAvKiBSYW5nZS5jcHAgKi87IH07CiAJCTkzRjE5QUQ1MDgyNDVFNTkwMDFF
OUFCQyAvKiBSZW5kZXJUcmVlQXNUZXh0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDkzOTU1QTQyMDNENzI5MzIwMDg2MzVDRSAvKiBSZW5kZXJUcmVl
QXNUZXh0LmNwcCAqLzsgfTsKLQkJOTNGMTlBRTEwODI0NUU1OTAwMUU5QUJDIC8qIEJsb2NrRXhj
ZXB0aW9ucy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDY1RjgwNjk3MDU0RDlGODYwMDhCRjc3NiAvKiBCbG9ja0V4Y2VwdGlvbnMubW0gKi87IH07CiAJ
CTkzRjE5QUU2MDgyNDVFNTkwMDFFOUFCQyAvKiBTU0xLZXlHZW5lcmF0b3JNYWMuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODRCMkIyNEYwNTZCRjE1
RjAwRDJCNzcxIC8qIFNTTEtleUdlbmVyYXRvck1hYy5jcHAgKi87IH07CiAJCTkzRjE5QUY4MDgy
NDVFNTkwMDFFOUFCQyAvKiBQb3NpdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBCRTkxRkM4QzA2MTMzNjY2MDA1RTM3OTAgLyogUG9zaXRpb24u
Y3BwICovOyB9OwogCQk5M0YxOUFGRDA4MjQ1RTU5MDAxRTlBQkMgLyogSFRNTENhbnZhc0VsZW1l
bnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFG
NkEzRDUwNjYzQkYwNDAwNEQyOTE5IC8qIEhUTUxDYW52YXNFbGVtZW50LmNwcCAqLzsgfTsKQEAg
LTYzNTMsNyArNjM1MCw2IEBACiAJCUUwRkVGMzcyQjQ3QzUzRUFDMUMxRkJFRSAvKiBKU0V2ZW50
U291cmNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEUwRkVGMzcxQjQ3QzUzRUFDMUMxRkJFRSAvKiBKU0V2ZW50U291cmNlLmNwcCAqLzsgfTsKIAkJ
RTEwNzQwMEQwRTc3QkRDMDAwMzNBRjI0IC8qIEpTTWVzc2FnZUNoYW5uZWwuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTEwNzQwMEIwRTc3QkRDMDAw
MzNBRjI0IC8qIEpTTWVzc2FnZUNoYW5uZWwuY3BwICovOyB9OwogCQlFMTA3NDAwRTBFNzdCREMw
MDAzM0FGMjQgLyogSlNNZXNzYWdlQ2hhbm5lbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRTEwNzQwMEMwRTc3QkRDMDAwMzNBRjI0IC8qIEpTTWVzc2Fn
ZUNoYW5uZWwuaCAqLzsgfTsKLQkJRTEwQTM5RTIxQUU4NEU3MTAwQTI5QUUzIC8qIENGQnVuZGxl
U1BJLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTBB
MzlFMTFBRTg0RTcxMDBBMjlBRTMgLyogQ0ZCdW5kbGVTUEkuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMTBCOTM3QzBCNzNDMDBBMDAzRUQ4OTAg
LyogSlNDdXN0b21YUGF0aE5TUmVzb2x2ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEUxMEI5MzdCMEI3M0MwMEEwMDNFRDg5MCAvKiBKU0N1c3RvbVhQ
YXRoTlNSZXNvbHZlci5oICovOyB9OwogCQlFMTBCOTNDMzBCNzNDMjkxMDAzRUQ4OTAgLyogSlND
dXN0b21YUGF0aE5TUmVzb2x2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRTEwQjkzQzIwQjczQzI5MTAwM0VEODkwIC8qIEpTQ3VzdG9tWFBhdGhO
U1Jlc29sdmVyLmNwcCAqLzsgfTsKIAkJRTEwQjlCNkMwQjc0NzU5OTAwM0VEODkwIC8qIE5hdGl2
ZVhQYXRoTlNSZXNvbHZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRTEwQjlCNkEwQjc0NzU5OTAwM0VEODkwIC8qIE5hdGl2ZVhQYXRoTlNSZXNvbHZl
ci5oICovOyB9OwpAQCAtMTAwODksNyArMTAwODUsNiBAQAogCQk2NUEyMTQ2NzA5N0EzMjkxMDBC
OTA1MEEgLyogUGFnZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGFnZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2NUEyMTQ4MjA5N0EzRjUzMDBCOTA1MEEg
LyogRnJhbWVUcmVlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBG
cmFtZVRyZWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2NUEyMTQ4MzA5N0Ez
RjUzMDBCOTA1MEEgLyogRnJhbWVUcmVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBGcmFtZVRyZWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNjVBNjQwRjAw
NTMzQkIxRjAwODVFNzc3IC8qIEJsb2NrRXhjZXB0aW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCbG9ja0V4Y2VwdGlvbnMuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07CiAJCTY1QkYw
MjI5MDk3NDgxNjMwMEM0MzE5NiAvKiBGcmFtZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gRnJhbWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2
NUJGMDIyQTA5NzQ4MTYzMDBDNDMxOTYgLyogRnJhbWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEZyYW1lLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTY1Qzk3
QUYyMDhFQTkwODgwMEFDRDI3MyAvKiBjb25maWcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gY29uZmlnLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IHRhYldpZHRoID0gNDsgdXNlc1RhYnMgPSAwOyB9OwpAQCAtMTAxMjIsNyArMTAxMTcsNiBA
QAogCQk2NURGMzIzNjA5RDFERTY1MDAwQkUzMjUgLyogSlNDYW52YXNQYXR0ZXJuLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0NhbnZhc1BhdHRlcm4uaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNjVERjMyMzYwOUQxREU2NTAwMUJFMzI1IC8qIEpTQ2FudmFz
UHJveHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTQ2FudmFzUHJveHku
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNjVFMEU5NDMxMTMzQzg5RjAwQjRDQjEw
IC8qIEpTRE9NV3JhcHBlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0RP
TVdyYXBwZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNjVGODA2OTcwNTREOUY4
NjAwOEJGNzc2IC8qIEJsb2NrRXhjZXB0aW9ucy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEJsb2NrRXhjZXB0aW9ucy5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07CiAJCTY1
RkVBODY4MDk4MzNBREUwMEJFRDRBQiAvKiBQYWdlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBQYWdlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
Njk3MTAxMDcxQzZCRTE1NTAwMThDN0YxIC8qIEFjY2Vzc2liaWxpdHlTVkdFbGVtZW50LmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFjY2Vzc2liaWxpdHlTVkdFbGVt
ZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNjk3MTAxMDgxQzZCRTE1NTAw
MThDN0YxIC8qIEFjY2Vzc2liaWxpdHlTVkdFbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEFjY2Vzc2liaWxpdHlTVkdFbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC0xMTI5NCw3ICsxMTI4OCw2IEBACiAJCTkzNEZFOUU0MEI1Q0E1MzkwMDNF
NEE3MyAvKiBGaWxlQ2hvb3Nlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBGaWxlQ2hvb3Nlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzNTAw
RjMxMTNGREUzQkUwMDk5RUMyNCAvKiBOU1Njcm9sbGVySW1wRGV0YWlscy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBOU1Njcm9sbGVySW1wRGV0YWlscy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk5MzUyMDdCRDA5QkQ0MTBBMDBGMjAzOEQgLyogTG9jYWxpemVk
U3RyaW5ncy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBMb2NhbGl6ZWRTdHJp
bmdzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTkzNTIwODQ0MDlCRDQzQjkwMEYy
MDM4RCAvKiBMYW5ndWFnZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0
aCA9IExhbmd1YWdlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5MzUzNjc2QTA5
QUVEODhCMDBEMzVDRDYgLyogU2Nyb2xsVmlld01hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLm9iamNwcDsgcGF0aCA9IFNjcm9sbFZpZXdNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTkzNUM0NzYyMDlBQzRDRTYwMEE2QUFCNCAvKiBNb3VzZUV2ZW50V2l0aEhpdFRl
c3RSZXN1bHRzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1vdXNlRXZlbnRX
aXRoSGl0VGVzdFJlc3VsdHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTM1QzQ3
NjYwOUFDNEQ0MzAwQTZBQUI0IC8qIFBsYXRmb3JtS2V5Ym9hcmRFdmVudC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE0Mzk2LDcgKzE0Mzg5LDYgQEAKIAkJRTBGRUYzNzFCNDdD
NTNFQUMxQzFGQkVFIC8qIEpTRXZlbnRTb3VyY2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gSlNFdmVudFNvdXJjZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUUxMDc0MDBCMEU3N0JEQzAwMDMzQUYyNCAvKiBKU01lc3NhZ2VDaGFubmVsLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTTWVzc2FnZUNoYW5uZWwuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMTA3NDAwQzBFNzdCREMwMDAzM0FGMjQg
LyogSlNNZXNzYWdlQ2hhbm5lbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBK
U01lc3NhZ2VDaGFubmVsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUUxMEEzOUUx
MUFFODRFNzEwMEEyOUFFMyAvKiBDRkJ1bmRsZVNQSS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBDRkJ1bmRsZVNQSS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlF
MTBCOTM3QjBCNzNDMDBBMDAzRUQ4OTAgLyogSlNDdXN0b21YUGF0aE5TUmVzb2x2ZXIuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNDdXN0b21YUGF0aE5TUmVzb2x2ZXIuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTEwQjkzQzIwQjczQzI5MTAwM0VEODkwIC8q
IEpTQ3VzdG9tWFBhdGhOU1Jlc29sdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEpTQ3VzdG9tWFBhdGhOU1Jlc29sdmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJRTEwQjlCNkEwQjc0NzU5OTAwM0VEODkwIC8qIE5hdGl2ZVhQYXRoTlNSZXNv
bHZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOYXRpdmVYUGF0aE5TUmVz
b2x2ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE3NTYzLDcgKzE3NTU1LDYg
QEAKIAkJNjUwODZEQTYxOUFDMTcxOTAwOUFGNDZCIC8qIGNmICovID0gewogCQkJaXNhID0gUEJY
R3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKLQkJCQlFMTBBMzlFMTFBRTg0RTcxMDBBMjlBRTMgLyog
Q0ZCdW5kbGVTUEkuaCAqLywKIAkJCQk2NTA4NkRBNzE5QUMxNzE5MDA5QUY0NkIgLyogQ0ZMb2Nh
bGVTUEkuaCAqLywKIAkJCQlBMTBEN0ZFQjFDMjY3NkQxMDBDNkMxMTUgLyogQ0ZOZXR3b3JrQ29u
bmVjdGlvbkNhY2hlU1BJLmggKi8sCiAJCQkJQ0UxMjUyNUExQTFDMDE4MjAwODY0NDgwIC8qIENG
TmV0d29ya1NQSS5oICovLApAQCAtMTc4NDksOCArMTc4NDAsNiBAQAogCQk2NTgyQTE0ODA5OTk5
RDZDMDBCRUVCNkQgLyogbWFjICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJl
biA9ICgKLQkJCQk2NUE2NDBGMDA1MzNCQjFGMDA4NUU3NzcgLyogQmxvY2tFeGNlcHRpb25zLmgg
Ki8sCi0JCQkJNjVGODA2OTcwNTREOUY4NjAwOEJGNzc2IC8qIEJsb2NrRXhjZXB0aW9ucy5tbSAq
LywKIAkJCQlGNTg3ODRGMDAyREUzNzU5MDFFQTQxMjIgLyogQ3Vyc29yTWFjLm1tICovLAogCQkJ
CUE3OTU0NjNEMEI1QzRDODAwMDdCNDM4RiAvKiBEcmFnRGF0YU1hYy5tbSAqLywKIAkJCQlBN0NG
QjNENDBCN0VEMTE4MDA3MEMzMkQgLyogRHJhZ0ltYWdlTWFjLm1tICovLApAQCAtMTc4NjMsNyAr
MTc4NTIsNiBAQAogCQkJCTUxNzlDRTM1MTk1Q0FDN0UwMDE5QzE5OCAvKiBISURHYW1lcGFkUHJv
dmlkZXIuaCAqLywKIAkJCQk5MzVDNDc2RTA5QUM0RDczMDBBNkFBQjQgLyogS2V5RXZlbnRNYWMu
bW0gKi8sCiAJCQkJNTIxRDQ2RjUxMUFFQzk4MTAwNTE0NjEzIC8qIEtpbGxSaW5nTWFjLm1tICov
LAotCQkJCTkzNTIwODQ0MDlCRDQzQjkwMEYyMDM4RCAvKiBMYW5ndWFnZS5tbSAqLywKIAkJCQkw
NkU4MUVENjBBQjVENUU5MDBDODc4MzcgLyogTG9jYWxDdXJyZW50R3JhcGhpY3NDb250ZXh0Lmgg
Ki8sCiAJCQkJMDZFODFFRUIwQUI1REE5NzAwQzg3ODM3IC8qIExvY2FsQ3VycmVudEdyYXBoaWNz
Q29udGV4dC5tbSAqLywKIAkJCQkxNDAyNjQ1RDBBRkRDMTlCMDA1OTE5RTIgLyogTG9nZ2luZ01h
Yy5tbSAqLywKQEAgLTI1MTk4LDcgKzI1MTg2LDYgQEAKIAkJCQkyRURFRjFGNzEyMUIwRUZDMDA3
MjZEQjIgLyogQmxvYlJlZ2lzdHJ5SW1wbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkVCNEJDRDMx
MjFGMDNFMzAwRUM0ODg1IC8qIEJsb2JSZXNvdXJjZUhhbmRsZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJOTc2RDZDN0YxMjJCOEEzRDAwMUZEMUY3IC8qIEJsb2JVUkwuaCBpbiBIZWFkZXJzICovLAot
CQkJCTkzRjE5OUJFMDgyNDVFNTkwMDFFOUFCQyAvKiBCbG9ja0V4Y2VwdGlvbnMuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUJDNUVCNUUxMEU4MUJFODcwMEIyNTk2NSAvKiBCb3JkZXJEYXRhLmggaW4g
SGVhZGVycyAqLywKIAkJCQk1ODk1NTZFRDE4RDRBNDQwMDA3NjRCMDMgLyogQm9yZGVyRWRnZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQkM1RUI1REIwRTgxQjdFQTAwQjI1OTY1IC8qIEJvcmRlclZh
bHVlLmggaW4gSGVhZGVycyAqLywKQEAgLTI1MjY1LDcgKzI1MjUyLDYgQEAKIAkJCQlDREU4QjVG
MTFBNjk3NzhCMDBCNEI2NkEgLyogQ0RNU2Vzc2lvbkNsZWFyS2V5LmggaW4gSGVhZGVycyAqLywK
IAkJCQlDREU1OTU5NzFCRjI2RTIxMDBBMUNCRTggLyogQ0RNU2Vzc2lvbk1lZGlhU291cmNlQVZG
T2JqQy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUZBOTA0Q0ExNzhFNjFGNTAwNEM4QTJEIC8qIENl
cnRpZmljYXRlSW5mby5oIGluIEhlYWRlcnMgKi8sCi0JCQkJRTEwQTM5RTIxQUU4NEU3MTAwQTI5
QUUzIC8qIENGQnVuZGxlU1BJLmggaW4gSGVhZGVycyAqLywKIAkJCQlBMTBEN0ZFQzFDMjY3NkQx
MDBDNkMxMTUgLyogQ0ZOZXR3b3JrQ29ubmVjdGlvbkNhY2hlU1BJLmggaW4gSGVhZGVycyAqLywK
IAkJCQlDRTEyNTI1QjFBMUMwMTgyMDA4NjQ0ODAgLyogQ0ZOZXR3b3JrU1BJLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlFMUE4RTU2NzE3NTUyQjJBMDA3NDg4RTcgLyogQ0ZVUkxFeHRyYXMuaCBpbiBI
ZWFkZXJzICovLApAQCAtMjkxNTksNyArMjkxNDUsNiBAQAogCQkJCTJFREVGMUY2MTIxQjBFRkMw
MDcyNkRCMiAvKiBCbG9iUmVnaXN0cnlJbXBsLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJFQjRC
Q0QyMTIxRjAzRTMwMEVDNDg4NSAvKiBCbG9iUmVzb3VyY2VIYW5kbGUuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJOTc2RDZDN0UxMjJCOEEzRDAwMUZEMUY3IC8qIEJsb2JVUkwuY3BwIGluIFNvdXJj
ZXMgKi8sCi0JCQkJOTNGMTlBRTEwODI0NUU1OTAwMUU5QUJDIC8qIEJsb2NrRXhjZXB0aW9ucy5t
bSBpbiBTb3VyY2VzICovLAogCQkJCTU4QUVFMkY0MThENEJDQ0YwMDIyRTdGRSAvKiBCb3JkZXJF
ZGdlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTZFRDhDMzc5MTgzQkZGOEMwMDlFNTNCRCAvKiBC
b3hTaGFwZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQ0VBNDg1NDA5N0Q5MzAyMDA5NEM5RTQg
LyogYnJlYWtfbGluZXMuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0zMDg5NCw3ICszMDg3OSw2IEBA
CiAJCQkJNDUwQ0VCRjAxNTA3M0JCRTAwMkJCMTQ5IC8qIExhYmVsYWJsZUVsZW1lbnQuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQTQ1NkZBMjYxMUFENEE4MzAwMjBCNDIwIC8qIExhYmVsc05vZGVM
aXN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxODc3MkYxMTI2RTI2MjkwMDNERDU4NiAvKiBM
YW5ndWFnZS5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk5MzUyMDg0NTA5QkQ0M0I5MDBGMjAzOEQg
LyogTGFuZ3VhZ2UubW0gaW4gU291cmNlcyAqLywKIAkJCQkyOTE3QjU2MTE0NzM0OTZDMDA1MkM5
RDAgLyogTGF5ZXJGbHVzaFNjaGVkdWxlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyOTE3QjU2
NjE0NzM0OTk1MDA1MkM5RDAgLyogTGF5ZXJGbHVzaFNjaGVkdWxlck1hYy5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQk3QUEzQTY5RjE5NEI1OUI2MDAxQ0JEMjQgLyogTGF5ZXJQb29sLmNwcCBpbiBT
b3VyY2VzICovLApJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01DdXN0b21Y
UGF0aE5TUmVzb2x2ZXIubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
b2JqYy9ET01DdXN0b21YUGF0aE5TUmVzb2x2ZXIubW0JKHJldmlzaW9uIDIwMDk2OCkKKysrIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NQ3VzdG9tWFBhdGhOU1Jlc29sdmVyLm1tCSh3
b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5j
bHVkZSAiRE9NQ3VzdG9tWFBhdGhOU1Jlc29sdmVyLmgiCiAKLSNpbmNsdWRlICJCbG9ja0V4Y2Vw
dGlvbnMuaCIKKyNpbmNsdWRlIDx3dGYvQmxvY2tPYmpDRXhjZXB0aW9ucy5oPgogI2luY2x1ZGUg
PHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL2lvcy9FZGl0b3JJT1MubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvZWRpdGluZy9pb3MvRWRpdG9ySU9TLm1tCShyZXZpc2lvbiAyMDA5NjgpCisrKyBT
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL2lvcy9FZGl0b3JJT1MubW0JKHdvcmtpbmcgY29weSkKQEAg
LTI2LDcgKzI2LDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJFZGl0b3IuaCIK
IAotI2luY2x1ZGUgIkJsb2NrRXhjZXB0aW9ucy5oIgogI2luY2x1ZGUgIkNhY2hlZEltYWdlLmgi
CiAjaW5jbHVkZSAiQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmgiCiAjaW5jbHVkZSAiQ1NT
UHJpbWl0aXZlVmFsdWVNYXBwaW5ncy5oIgpAQCAtNTgsNiArNTcsNyBAQAogI2luY2x1ZGUgIldB
S0FwcEtpdFN0dWJzLmgiCiAjaW5jbHVkZSAiaHRtbGVkaXRpbmcuaCIKICNpbmNsdWRlICJtYXJr
dXAuaCIKKyNpbmNsdWRlIDx3dGYvQmxvY2tPYmpDRXhjZXB0aW9ucy5oPgogCiBTT0ZUX0xJTktf
RlJBTUVXT1JLKEFwcFN1cHBvcnQpCiBTT0ZUX0xJTksoQXBwU3VwcG9ydCwgQ1BTaGFyZWRSZXNv
dXJjZXNEaXJlY3RvcnksIENGU3RyaW5nUmVmLCAodm9pZCksICgpKQpJbmRleDogU291cmNlL1dl
YkNvcmUvZWRpdGluZy9tYWMvRGljdGlvbmFyeUxvb2t1cC5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL21hYy9EaWN0aW9uYXJ5TG9va3VwLm1tCShyZXZpc2lvbiAyMDA5
NjgpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9EaWN0aW9uYXJ5TG9va3VwLm1tCSh3
b3JraW5nIGNvcHkpCkBAIC0yOCw3ICsyOCw2IEBACiAKICNpZiBQTEFURk9STShNQUMpCiAKLSNp
bXBvcnQgIkJsb2NrRXhjZXB0aW9ucy5oIgogI2ltcG9ydCAiRG9jdW1lbnQuaCIKICNpbXBvcnQg
IkZvY3VzQ29udHJvbGxlci5oIgogI2ltcG9ydCAiRnJhbWUuaCIKQEAgLTQ3LDYgKzQ2LDcgQEAK
ICNpbXBvcnQgIldlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaCIKICNpbXBvcnQgImh0bWxlZGl0aW5n
LmgiCiAjaW1wb3J0IDxQREZLaXQvUERGS2l0Lmg+CisjaW1wb3J0IDx3dGYvQmxvY2tPYmpDRXhj
ZXB0aW9ucy5oPgogI2ltcG9ydCA8d3RmL1JlZlB0ci5oPgogCiBTT0ZUX0xJTktfQ09OU1RBTlRf
TUFZX0ZBSUwoTG9va3VwLCBMVVRlcm1PcHRpb25EaXNhYmxlU2VhcmNoVGVybUluZGljYXRvciwg
TlNTdHJpbmcgKikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0VkaXRvck1hYy5t
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9FZGl0b3JNYWMubW0J
KHJldmlzaW9uIDIwMDk2OCkKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0VkaXRvck1h
Yy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYsNiBAQAogI2ltcG9ydCAiY29uZmlnLmgi
CiAjaW1wb3J0ICJFZGl0b3IuaCIKIAotI2ltcG9ydCAiQmxvY2tFeGNlcHRpb25zLmgiCiAjaW1w
b3J0ICJDU1NQcmltaXRpdmVWYWx1ZU1hcHBpbmdzLmgiCiAjaW1wb3J0ICJDU1NWYWx1ZVBvb2wu
aCIKICNpbXBvcnQgIkNhY2hlZFJlc291cmNlTG9hZGVyLmgiCkBAIC02NSw2ICs2NCw3IEBACiAj
aW1wb3J0ICJXZWJOU0F0dHJpYnV0ZWRTdHJpbmdFeHRyYXMuaCIKICNpbXBvcnQgImh0bWxlZGl0
aW5nLmgiCiAjaW1wb3J0ICJtYXJrdXAuaCIKKyNpbXBvcnQgPHd0Zi9CbG9ja09iakNFeGNlcHRp
b25zLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGFn
ZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzTWVkaWFBRi5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzTWVkaWFBRi5jcHAJKHJldmlzaW9u
IDIwMDk2OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01l
ZGlhQUYuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Miw2ICs0Miw3IEBACiAjaW5jbHVkZSAiVXNl
clN0eWxlU2hlZXRUeXBlcy5oIgogI2luY2x1ZGUgIlZUVEN1ZS5oIgogI2luY2x1ZGUgPHd0Zi9O
ZXZlckRlc3Ryb3llZC5oPgorI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybVVzZXJQcmVmZXJyZWRMYW5n
dWFnZXMuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQv
Q1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BhZ2UvaW9zL0V2ZW50SGFuZGxlcklPUy5tbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wYWdlL2lvcy9FdmVudEhhbmRsZXJJT1MubW0JKHJldmlzaW9uIDIwMDk2
OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvaW9zL0V2ZW50SGFuZGxlcklPUy5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtMjcsNyArMjcsNiBAQAogI2ltcG9ydCAiRXZlbnRIYW5kbGVyLmgiCiAKICNp
bXBvcnQgIkFYT2JqZWN0Q2FjaGUuaCIKLSNpbXBvcnQgIkJsb2NrRXhjZXB0aW9ucy5oIgogI2lt
cG9ydCAiQ2hyb21lLmgiCiAjaW1wb3J0ICJDaHJvbWVDbGllbnQuaCIKICNpbXBvcnQgIkZvY3Vz
Q29udHJvbGxlci5oIgpAQCAtNDIsNiArNDEsNyBAQAogI2ltcG9ydCAiV0FLVmlldy5oIgogI2lt
cG9ydCAiV0FLV2luZG93LmgiCiAjaW1wb3J0ICJXZWJFdmVudC5oIgorI2ltcG9ydCA8d3RmL0Js
b2NrT2JqQ0V4Y2VwdGlvbnMuaD4KICNpbXBvcnQgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2lt
cG9ydCA8d3RmL05vbmNvcHlhYmxlLmg+CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvaW9z
L0ZyYW1lSU9TLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvaW9zL0ZyYW1l
SU9TLm1tCShyZXZpc2lvbiAyMDA5NjgpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL2lvcy9GcmFt
ZUlPUy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjgsNyArMjgsNiBAQAogI2lmIFBMQVRGT1JNKElP
UykKIAogI2ltcG9ydCAiQW5pbWF0aW9uQ29udHJvbGxlci5oIgotI2ltcG9ydCAiQmxvY2tFeGNl
cHRpb25zLmgiCiAjaW1wb3J0ICJET01DU1NTdHlsZURlY2xhcmF0aW9uSW50ZXJuYWwuaCIKICNp
bXBvcnQgIkRPTUNvcmUuaCIKICNpbXBvcnQgIkRPTUludGVybmFsLmgiCkBAIC03MCw2ICs2OSw3
IEBACiAjaW1wb3J0ICJXQUtXaW5kb3cuaCIKICNpbXBvcnQgIldlYkNvcmVTeXN0ZW1JbnRlcmZh
Y2UuaCIKICNpbXBvcnQgPHJ1bnRpbWUvSlNMb2NrLmg+CisjaW1wb3J0IDx3dGYvQmxvY2tPYmpD
RXhjZXB0aW9ucy5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTo6SFRNTE5hbWVzOwogdXNp
bmcgbmFtZXNwYWNlIFdURjo6VW5pY29kZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvbWFj
L0Nocm9tZU1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9DaHJv
bWVNYWMubW0JKHJldmlzaW9uIDIwMDk2OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0No
cm9tZU1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjAsOCArMjAsOCBAQAogI2ltcG9ydCAiY29u
ZmlnLmgiCiAjaW1wb3J0ICJDaHJvbWUuaCIKIAotI2ltcG9ydCAiQmxvY2tFeGNlcHRpb25zLmgi
CiAjaW1wb3J0ICJDaHJvbWVDbGllbnQuaCIKKyNpbXBvcnQgPHd0Zi9CbG9ja09iakNFeGNlcHRp
b25zLmg+CiAKICNpZiBQTEFURk9STShJT1MpCiAjaW5jbHVkZSAiV0FLUmVzcG9uZGVyLmgiCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9FdmVudEhhbmRsZXJNYWMubW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvRXZlbnRIYW5kbGVyTWFjLm1tCShyZXZpc2lv
biAyMDA5NjgpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9FdmVudEhhbmRsZXJNYWMubW0J
KHdvcmtpbmcgY29weSkKQEAgLTI3LDcgKzI3LDYgQEAKICNpbmNsdWRlICJFdmVudEhhbmRsZXIu
aCIKIAogI2luY2x1ZGUgIkFYT2JqZWN0Q2FjaGUuaCIKLSNpbmNsdWRlICJCbG9ja0V4Y2VwdGlv
bnMuaCIKICNpbmNsdWRlICJDaHJvbWUuaCIKICNpbmNsdWRlICJDaHJvbWVDbGllbnQuaCIKICNp
bmNsdWRlICJEYXRhVHJhbnNmZXIuaCIKQEAgLTYxLDYgKzYwLDcgQEAKICNpbmNsdWRlICJTaGFk
b3dSb290LmgiCiAjaW5jbHVkZSAiV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oIgogI2luY2x1ZGUg
IldoZWVsRXZlbnRUZXN0VHJpZ2dlci5oIgorI2luY2x1ZGUgPHd0Zi9CbG9ja09iakNFeGNlcHRp
b25zLmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJE
ZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvT2JqY1J1bnRpbWVFeHRyYXMuaD4KSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xhbmd1YWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9MYW5ndWFnZS5jcHAJKHJldmlzaW9uIDIwMDk2OCkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL0xhbmd1YWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsx
LDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwLCAyMDEzLCAyMDE2IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtMjgsNiArMjgsNyBAQAogCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3
dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKyNpbmNsdWRlIDx3dGYvUGxhdGZvcm1Vc2VyUHJlZmVycmVk
TGFuZ3VhZ2VzLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogI2luY2x1ZGUgPHd0Zi90
ZXh0L1dURlN0cmluZy5oPgogCkBAIC0zNyw2ICszOCwxNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKK3N0YXRpYyB2b2lkIHJlZ2lzdGVyTGFuZ3VhZ2VEaWRDaGFuZ2VDYWxsYmFja0lmTmVj
ZXNzYXJ5KCkKK3sKKyAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZTsKKyAgICBzdGQ6OmNh
bGxfb25jZSgKKyAgICAgICAgb25jZSwKKyAgICAgICAgW10geworICAgICAgICAgICAgc2V0UGxh
dGZvcm1Vc2VyUHJlZmVycmVkTGFuZ3VhZ2VzQ2hhbmdlZENhbGxiYWNrKGxhbmd1YWdlRGlkQ2hh
bmdlKTsKKyAgICAgICAgfSk7Cit9CisKIHR5cGVkZWYgSGFzaE1hcDx2b2lkKiwgTGFuZ3VhZ2VD
aGFuZ2VPYnNlcnZlckZ1bmN0aW9uPiBPYnNlcnZlck1hcDsKIHN0YXRpYyBPYnNlcnZlck1hcCYg
b2JzZXJ2ZXJNYXAoKQogewpAQCAtNDYsNiArNTcsNyBAQCBzdGF0aWMgT2JzZXJ2ZXJNYXAmIG9i
c2VydmVyTWFwKCkKIAogdm9pZCBhZGRMYW5ndWFnZUNoYW5nZU9ic2VydmVyKHZvaWQqIGNvbnRl
eHQsIExhbmd1YWdlQ2hhbmdlT2JzZXJ2ZXJGdW5jdGlvbiBjdXN0b21PYnNlcnZlcikKIHsKKyAg
ICByZWdpc3Rlckxhbmd1YWdlRGlkQ2hhbmdlQ2FsbGJhY2tJZk5lY2Vzc2FyeSgpOwogICAgIG9i
c2VydmVyTWFwKCkuc2V0KGNvbnRleHQsIGN1c3RvbU9ic2VydmVyKTsKIH0KIApAQCAtODcsMTMg
Kzk5LDE0IEBAIHZvaWQgb3ZlcnJpZGVVc2VyUHJlZmVycmVkTGFuZ3VhZ2VzKGNvbnMKICAgICBw
cmVmZXJyZWRMYW5ndWFnZXNPdmVycmlkZSgpID0gb3ZlcnJpZGU7CiAgICAgbGFuZ3VhZ2VEaWRD
aGFuZ2UoKTsKIH0KLSAgICAKKwogVmVjdG9yPFN0cmluZz4gdXNlclByZWZlcnJlZExhbmd1YWdl
cygpCiB7CiAgICAgVmVjdG9yPFN0cmluZz4mIG92ZXJyaWRlID0gcHJlZmVycmVkTGFuZ3VhZ2Vz
T3ZlcnJpZGUoKTsKICAgICBpZiAoIW92ZXJyaWRlLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJu
IG92ZXJyaWRlOwogICAgIAorICAgIHJlZ2lzdGVyTGFuZ3VhZ2VEaWRDaGFuZ2VDYWxsYmFja0lm
TmVjZXNzYXJ5KCk7CiAgICAgcmV0dXJuIHBsYXRmb3JtVXNlclByZWZlcnJlZExhbmd1YWdlcygp
OwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MYW5ndWFnZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xhbmd1YWdlLmgJKHJldmlzaW9uIDIwMDk2
OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xhbmd1YWdlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTQyLDggKzQyLDYgQEAgdHlwZWRlZiB2b2lkICgqTGFuZ3VhZ2VDaGFuZ2VPYnNlcnZlckZ1
bgogV0VCQ09SRV9FWFBPUlQgdm9pZCBhZGRMYW5ndWFnZUNoYW5nZU9ic2VydmVyKHZvaWQqIGNv
bnRleHQsIExhbmd1YWdlQ2hhbmdlT2JzZXJ2ZXJGdW5jdGlvbik7CiBXRUJDT1JFX0VYUE9SVCB2
b2lkIHJlbW92ZUxhbmd1YWdlQ2hhbmdlT2JzZXJ2ZXIodm9pZCogY29udGV4dCk7CiAKLVZlY3Rv
cjxTdHJpbmc+IHBsYXRmb3JtVXNlclByZWZlcnJlZExhbmd1YWdlcygpOwotCiBTdHJpbmcgZGlz
cGxheU5hbWVGb3JMYW5ndWFnZUxvY2FsZShjb25zdCBTdHJpbmcmKTsKIAogLy8gQ2FsbGVkIGZy
b20gcGxhdGZvcm0gc3BlY2lmaWMgY29kZSB3aGVuIHRoZSB1c2VyJ3MgcHJlZmVycmVkIGxhbmd1
YWdlKHMpIGNoYW5nZS4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL0NvbnRl
bnRGaWx0ZXJVbmJsb2NrSGFuZGxlckNvY29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2NvY29hL0NvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlckNvY29hLm1tCShy
ZXZpc2lvbiAyMDA5NjgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9Db250ZW50
RmlsdGVyVW5ibG9ja0hhbmRsZXJDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtMjgsMTAgKzI4
LDEwIEBACiAKICNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCiAKLSNpbXBvcnQgIkJsb2Nr
RXhjZXB0aW9ucy5oIgogI2ltcG9ydCAiQ29udGVudEZpbHRlci5oIgogI2ltcG9ydCAiTG9nZ2lu
Zy5oIgogI2ltcG9ydCAiUmVzb3VyY2VSZXF1ZXN0LmgiCisjaW1wb3J0IDx3dGYvQmxvY2tPYmpD
RXhjZXB0aW9ucy5oPgogCiAjaWYgIUxPR19ESVNBQkxFRAogI2ltcG9ydCA8d3RmL3RleHQvQ1N0
cmluZy5oPgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRk9iakMubW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW5iYW5k
VGV4dFRyYWNrUHJpdmF0ZUFWRk9iakMubW0JKHJldmlzaW9uIDIwMDk2OCkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0luYmFuZFRleHRUcmFj
a1ByaXZhdGVBVkZPYmpDLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw3ICsyOSw2IEBACiAKICNp
bXBvcnQgIkluYmFuZFRleHRUcmFja1ByaXZhdGVBVkZPYmpDLmgiCiAKLSNpbXBvcnQgIkJsb2Nr
RXhjZXB0aW9ucy5oIgogI2ltcG9ydCAiRmxvYXRDb252ZXJzaW9uLmgiCiAjaW1wb3J0ICJJbmJh
bmRUZXh0VHJhY2tQcml2YXRlLmgiCiAjaW1wb3J0ICJJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZG
LmgiCkBAIC0zNyw2ICszNiw3IEBACiAjaW1wb3J0ICJTb2Z0TGlua2luZy5oIgogI2ltcG9ydCA8
QVZGb3VuZGF0aW9uL0FWRm91bmRhdGlvbi5oPgogI2ltcG9ydCA8b2JqYy9ydW50aW1lLmg+Cisj
aW1wb3J0IDx3dGYvQmxvY2tPYmpDRXhjZXB0aW9ucy5oPgogCiBTT0ZUX0xJTktfRlJBTUVXT1JL
X09QVElPTkFMKEFWRm91bmRhdGlvbikKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
T2JqQy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCShy
ZXZpc2lvbiAyMDA5NjgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMyw3ICszMyw2IEBACiAjaW1wb3J0ICJBdWRpb1NvdXJjZVByb3ZpZGVy
QVZGT2JqQy5oIgogI2ltcG9ydCAiQXVkaW9UcmFja1ByaXZhdGVBVkZPYmpDLmgiCiAjaW1wb3J0
ICJBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oIgotI2ltcG9ydCAiQmxvY2tFeGNlcHRpb25zLmgi
CiAjaW1wb3J0ICJDRE1TZXNzaW9uQVZGb3VuZGF0aW9uT2JqQy5oIgogI2ltcG9ydCAiQ29va2ll
LmgiCiAjaW1wb3J0ICJFeGNlcHRpb25Db2RlUGxhY2Vob2xkZXIuaCIKQEAgLTc4LDYgKzc3LDcg
QEAKICNpbXBvcnQgPHJ1bnRpbWUvVWludDE2QXJyYXkuaD4KICNpbXBvcnQgPHJ1bnRpbWUvVWlu
dDMyQXJyYXkuaD4KICNpbXBvcnQgPHJ1bnRpbWUvVWludDhBcnJheS5oPgorI2ltcG9ydCA8d3Rm
L0Jsb2NrT2JqQ0V4Y2VwdGlvbnMuaD4KICNpbXBvcnQgPHd0Zi9DdXJyZW50VGltZS5oPgogI2lt
cG9ydCA8d3RmL0xpc3RIYXNoU2V0Lmg+CiAjaW1wb3J0IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4K
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZh
dGVBVkZPYmpDLm1tCShyZXZpc2lvbiAyMDA5NjgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5t
bQkod29ya2luZyBjb3B5KQpAQCAtMjgsNyArMjgsNiBAQAogCiAjaWYgRU5BQkxFKE1FRElBX1NP
VVJDRSkgJiYgVVNFKEFWRk9VTkRBVElPTikKIAotI2ltcG9ydCAiQmxvY2tFeGNlcHRpb25zLmgi
CiAjaW1wb3J0ICJDRE1TZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lvbi5oIgogI2ltcG9ydCAiQ0RN
U2Vzc2lvbk1lZGlhU291cmNlQVZGT2JqQy5oIgogI2ltcG9ydCAiRXhjZXB0aW9uQ29kZVBsYWNl
aG9sZGVyLmgiCkBAIC01MCw2ICs0OSw3IEBACiAjaW1wb3J0IDxvYmpjL3J1bnRpbWUuaD4KICNp
bXBvcnQgPHd0Zi90ZXh0L0F0b21pY1N0cmluZy5oPgogI2ltcG9ydCA8d3RmL3RleHQvQ1N0cmlu
Zy5oPgorI2ltcG9ydCA8d3RmL0Jsb2NrT2JqQ0V4Y2VwdGlvbnMuaD4KICNpbXBvcnQgPHd0Zi9I
YXNoQ291bnRlZFNldC5oPgogI2ltcG9ydCA8d3RmL01haW5UaHJlYWQuaD4KICNpbXBvcnQgPHd0
Zi9XZWFrUHRyLmg+CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9j
b2NvYS9QbGF0Zm9ybUNBRmlsdGVyc0NvY29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FGaWx0ZXJzQ29jb2EubW0J
KHJldmlzaW9uIDIwMDk2OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
L2NvY29hL1BsYXRmb3JtQ0FGaWx0ZXJzQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTI2LDEy
ICsyNiwxMiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2ltcG9ydCAiUGxhdGZvcm1DQUZpbHRl
cnMuaCIKIAotI2ltcG9ydCAiQmxvY2tFeGNlcHRpb25zLmgiCiAjaW1wb3J0ICJGbG9hdENvbnZl
cnNpb24uaCIKICNpbXBvcnQgIkxlbmd0aEZ1bmN0aW9ucy5oIiAvLyBUaGlzIGlzIGEgbGF5ZXJp
bmcgdmlvbGF0aW9uLgogI2ltcG9ydCAiUGxhdGZvcm1DQUxheWVyQ29jb2EuaCIKICNpbXBvcnQg
IlF1YXJ0ekNvcmVTUEkuaCIKICNpbXBvcnQgPFF1YXJ0ekNvcmUvUXVhcnR6Q29yZS5oPgorI2lt
cG9ydCA8d3RmL0Jsb2NrT2JqQ0V4Y2VwdGlvbnMuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNv
cmU7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1Bs
YXRmb3JtQ0FMYXllckNvY29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FMYXllckNvY29hLm1tCShyZXZpc2lvbiAy
MDA5NjgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0
Zm9ybUNBTGF5ZXJDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtMjcsNyArMjcsNiBAQAogI2lt
cG9ydCAiUGxhdGZvcm1DQUxheWVyQ29jb2EuaCIKIAogI2ltcG9ydCAiQW5pbWF0aW9uVXRpbGl0
aWVzLmgiCi0jaW1wb3J0ICJCbG9ja0V4Y2VwdGlvbnMuaCIKICNpbXBvcnQgIkdyYXBoaWNzQ29u
dGV4dC5oIgogI2ltcG9ydCAiR3JhcGhpY3NMYXllckNBLmgiCiAjaW1wb3J0ICJMZW5ndGhGdW5j
dGlvbnMuaCIKQEAgLTQ4LDYgKzQ3LDcgQEAKICNpbXBvcnQgPEFWRm91bmRhdGlvbi9BVkZvdW5k
YXRpb24uaD4KICNpbXBvcnQgPFF1YXJ0ekNvcmUvUXVhcnR6Q29yZS5oPgogI2ltcG9ydCA8b2Jq
Yy9ydW50aW1lLmg+CisjaW1wb3J0IDx3dGYvQmxvY2tPYmpDRXhjZXB0aW9ucy5oPgogI2ltcG9y
dCA8d3RmL0N1cnJlbnRUaW1lLmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRDb2NvYS5tbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250Q29j
b2EubW0JKHJldmlzaW9uIDIwMDk2OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL0ZvbnRDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtMjcsNyArMjcsNiBAQAog
I2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJGb250LmgiCiAKLSNpbXBvcnQgIkJsb2NrRXhj
ZXB0aW9ucy5oIgogI2ltcG9ydCAiQ29sb3IuaCIKICNpbXBvcnQgIkNvcmVHcmFwaGljc1NQSS5o
IgogI2ltcG9ydCAiQ29yZVRleHRTUEkuaCIKQEAgLTQwLDYgKzM5LDcgQEAKICNpbXBvcnQgPGZs
b2F0Lmg+CiAjaW1wb3J0IDx1bmljb2RlL3VjaGFyLmg+CiAjaW1wb3J0IDx3dGYvQXNzZXJ0aW9u
cy5oPgorI2ltcG9ydCA8d3RmL0Jsb2NrT2JqQ0V4Y2VwdGlvbnMuaD4KICNpbXBvcnQgPHd0Zi9O
ZXZlckRlc3Ryb3llZC5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogI2ltcG9ydCA8d3Rm
L1N0ZExpYkV4dHJhcy5oPgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
bWFjL0NvbG9yTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL21hYy9Db2xvck1hYy5tbQkocmV2aXNpb24gMjAwOTY4KQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0NvbG9yTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0y
Niw3ICsyNiw3IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIkNvbG9yTWFjLmgiCiAK
LSNpbXBvcnQgPFdlYkNvcmUvQmxvY2tFeGNlcHRpb25zLmg+CisjaW1wb3J0IDx3dGYvQmxvY2tP
YmpDRXhjZXB0aW9ucy5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogI2ltcG9ydCA8d3Rm
L1N0ZExpYkV4dHJhcy5oPgogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9tYWMvR3JhcGhpY3NDb250ZXh0M0RNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0dyYXBoaWNzQ29udGV4dDNETWFjLm1tCShyZXZpc2lv
biAyMDA5NjgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvR3JhcGhp
Y3NDb250ZXh0M0RNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTMyLDcgKzMyLDcgQEAKICNpbmNs
dWRlICJHcmFwaGljc0NvbnRleHQzRElPUy5oIgogI2VuZGlmCiAKLSNpbXBvcnQgIkJsb2NrRXhj
ZXB0aW9ucy5oIgorI2ltcG9ydCA8d3RmL0Jsb2NrT2JqQ0V4Y2VwdGlvbnMuaD4KIAogI2luY2x1
ZGUgIkNhbnZhc1JlbmRlcmluZ0NvbnRleHQuaCIKICNpbmNsdWRlIDxDb3JlR3JhcGhpY3MvQ0dC
aXRtYXBDb250ZXh0Lmg+CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9t
YWMvTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL01lZGlhUGxheWVyUHJpdmF0ZVFUS2l0Lm1tCShyZXZp
c2lvbiAyMDA5NjgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvTWVk
aWFQbGF5ZXJQcml2YXRlUVRLaXQubW0JKHdvcmtpbmcgY29weSkKQEAgLTI5LDcgKzI5LDYgQEAK
IAogI2ltcG9ydCAiTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQuaCIKIAotI2ltcG9ydCAiQmxvY2tF
eGNlcHRpb25zLmgiCiAjaW1wb3J0ICJEb2N1bWVudExvYWRlci5oIgogI2ltcG9ydCAiR3JhcGhp
Y3NDb250ZXh0LmgiCiAjaW1wb3J0ICJVUkwuaCIKQEAgLTQzLDYgKzQyLDcgQEAKICNpbXBvcnQg
IldlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaCIKICNpbXBvcnQgPFFUS2l0L1FUS2l0Lmg+CiAjaW1w
b3J0IDxvYmpjL3J1bnRpbWUuaD4KKyNpbXBvcnQgPHd0Zi9CbG9ja09iakNFeGNlcHRpb25zLmg+
CiAjaW1wb3J0IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAogU09GVF9MSU5LX0ZSQU1FV09SSyhR
VEtpdCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVNwZWVjaFN5
bnRoZXNpemVySU9TLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lv
cy9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVySU9TLm1tCShyZXZpc2lvbiAyMDA5NjgpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcklPUy5t
bQkod29ya2luZyBjb3B5KQpAQCAtMjksMTEgKzI5LDExIEBACiAKICNpZiBFTkFCTEUoU1BFRUNI
X1NZTlRIRVNJUykKIAotI2luY2x1ZGUgIkJsb2NrRXhjZXB0aW9ucy5oIgogI2luY2x1ZGUgIlBs
YXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TcGVl
Y2hTeW50aGVzaXNWb2ljZS5oIgogI2luY2x1ZGUgIlNvZnRMaW5raW5nLmgiCiAjaW5jbHVkZSA8
QVZGb3VuZGF0aW9uL0FWU3BlZWNoU3ludGhlc2lzLmg+CisjaW5jbHVkZSA8d3RmL0Jsb2NrT2Jq
Q0V4Y2VwdGlvbnMuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAKIFNPRlRfTElOS19G
UkFNRVdPUksoQVZGb3VuZGF0aW9uKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9z
L1Njcm9sbFZpZXdJT1MubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW9zL1Njcm9sbFZpZXdJT1MubW0JKHJldmlzaW9uIDIwMDk2OCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2lvcy9TY3JvbGxWaWV3SU9TLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsy
Niw2IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIlNjcm9sbFZpZXcuaCIKIAotI2lt
cG9ydCAiQmxvY2tFeGNlcHRpb25zLmgiCiAjaW1wb3J0ICJGbG9hdFJlY3QuaCIKICNpbXBvcnQg
IkludFJlY3QuaCIKICNpbXBvcnQgIkxvZ2dpbmcuaCIKQEAgLTM4LDYgKzM3LDcgQEAKICNpbXBv
cnQgIldBS1dpbmRvdy5oIgogI2ltcG9ydCAiV0tWaWV3UHJpdmF0ZS5oIgogI2ltcG9ydCAiV2Vi
Q29yZUZyYW1lVmlldy5oIgorI2ltcG9ydCA8d3RmL0Jsb2NrT2JqQ0V4Y2VwdGlvbnMuaD4KICNp
bXBvcnQgPHd0Zi9DdXJyZW50VGltZS5oPgogCiB1c2luZyBuYW1lc3BhY2Ugc3RkOwpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dpZGdldElPUy5tbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2lkZ2V0SU9TLm1tCShyZXZpc2lvbiAyMDA5Njgp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2lkZ2V0SU9TLm1tCSh3b3JraW5nIGNv
cHkpCkBAIC0yNiw3ICsyNiw2IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIldpZGdl
dC5oIgogCi0jaW1wb3J0ICJCbG9ja0V4Y2VwdGlvbnMuaCIKICNpbXBvcnQgIkN1cnNvci5oIgog
I2ltcG9ydCAiRG9jdW1lbnQuaCIKICNpbXBvcnQgIkZvbnRDYXNjYWRlLmgiCkBAIC00MCw2ICsz
OSw3IEBACiAjaW1wb3J0ICJXQUtXaW5kb3cuaCIKICNpbXBvcnQgIldlYkNvcmVGcmFtZVZpZXcu
aCIKICNpbXBvcnQgIldlYkNvcmVWaWV3LmgiCisjaW1wb3J0IDx3dGYvQmxvY2tPYmpDRXhjZXB0
aW9ucy5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogCiBAaW50ZXJmYWNlIE5TVmlldyAo
V2ViU2V0U2VsZWN0ZWRNZXRob2RzKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFj
L0Jsb2NrRXhjZXB0aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21hYy9CbG9ja0V4Y2VwdGlvbnMuaAkocmV2aXNpb24gMjAwOTY4KQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWFjL0Jsb2NrRXhjZXB0aW9ucy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMy
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDMgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoK
LSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
LSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0K
LSNpbXBvcnQgPEZvdW5kYXRpb24vTlNFeGNlcHRpb24uaD4KLQotV0VCQ09SRV9FWFBPUlQgTk9f
UkVUVVJOX0RVRV9UT19BU1NFUlQgdm9pZCBSZXBvcnRCbG9ja2VkT2JqQ0V4Y2VwdGlvbihOU0V4
Y2VwdGlvbiAqKTsKLQotI2RlZmluZSBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMgQHRyeSB7
Ci0jZGVmaW5lIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMgfSBAY2F0Y2goTlNFeGNlcHRpb24g
KmxvY2FsRXhjZXB0aW9uKSB7IFJlcG9ydEJsb2NrZWRPYmpDRXhjZXB0aW9uKGxvY2FsRXhjZXB0
aW9uKTsgfQotCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvQmxvY2tFeGNlcHRp
b25zLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9CbG9ja0V4
Y2VwdGlvbnMubW0JKHJldmlzaW9uIDIwMDk2OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21hYy9CbG9ja0V4Y2VwdGlvbnMubW0JKHdvcmtpbmcgY29weSkKQEAgLTEsMzggKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAwMywgMjAwNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgot
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaW1w
b3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIkJsb2NrRXhjZXB0aW9ucy5oIgotCi0jaW1wb3J0IDx3
dGYvQXNzZXJ0aW9ucy5oPgotCi12b2lkIFJlcG9ydEJsb2NrZWRPYmpDRXhjZXB0aW9uKE5TRXhj
ZXB0aW9uICpleGNlcHRpb24pCi17Ci0jaWYgQVNTRVJUX0RJU0FCTEVECi0gICAgTlNMb2coQCIq
KiogV2ViS2l0IGRpc2NhcmRpbmcgZXhjZXB0aW9uOiA8JUA+ICVAIiwgW2V4Y2VwdGlvbiBuYW1l
XSwgW2V4Y2VwdGlvbiByZWFzb25dKTsKLSNlbHNlCi0gICAgQVNTRVJUX1dJVEhfTUVTU0FHRSgw
LCAiVW5jYXVnaHQgZXhjZXB0aW9uIC0gJUAiLCBleGNlcHRpb24pOwotI2VuZGlmCi19CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvQ3Vyc29yTWFjLm1tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9DdXJzb3JNYWMubW0JKHJldmlzaW9uIDIwMDk2
OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9DdXJzb3JNYWMubW0JKHdvcmtpbmcg
Y29weSkKQEAgLTI2LDggKzI2LDggQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiQ3Vy
c29yLmgiCiAKLSNpbXBvcnQgIkJsb2NrRXhjZXB0aW9ucy5oIgogI2ltcG9ydCAiV2ViQ29yZVN5
c3RlbUludGVyZmFjZS5oIgorI2ltcG9ydCA8d3RmL0Jsb2NrT2JqQ0V4Y2VwdGlvbnMuaD4KICNp
bXBvcnQgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KIAogQGludGVyZmFjZSBXZWJDb3JlQ3Vyc29yQnVu
ZGxlIDogTlNPYmplY3QgeyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvTGFu
Z3VhZ2UubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0xhbmd1
YWdlLm1tCShyZXZpc2lvbiAyMDA5NjgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMv
TGFuZ3VhZ2UubW0JKHdvcmtpbmcgY29weSkKQEAgLTEsMTcyICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMDMsIDIwMDUsIDIwMDYsIDIwMTAsIDIwMTEsIDIwMTYgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBh
cmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW1wb3J0ICJjb25maWcuaCIKLSNpbXBv
cnQgIkxhbmd1YWdlLmgiCi0KLSNpbXBvcnQgIkJsb2NrRXhjZXB0aW9ucy5oIgotI2ltcG9ydCAi
Q0ZCdW5kbGVTUEkuaCIKLSNpbXBvcnQgIldlYkNvcmVOU1N0cmluZ0V4dHJhcy5oIgotI2ltcG9y
dCA8bXV0ZXg+Ci0jaW1wb3J0IDx1bmljb2RlL3Vsb2MuaD4KLSNpbXBvcnQgPHd0Zi9Bc3NlcnRp
b25zLmg+Ci0jaW1wb3J0IDx3dGYvTG9jay5oPgotI2ltcG9ydCA8d3RmL05ldmVyRGVzdHJveWVk
Lmg+Ci0jaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+Ci0jaW1wb3J0IDx3dGYvdGV4dC9XVEZTdHJp
bmcuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1zdGF0aWMgU3RhdGljTG9jayBwcmVmZXJy
ZWRMYW5ndWFnZXNNdXRleDsKLQotc3RhdGljIFZlY3RvcjxTdHJpbmc+JiBwcmVmZXJyZWRMYW5n
dWFnZXMoKQotewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxWZWN0b3I8U3RyaW5nPj4gbGFu
Z3VhZ2VzOwotICAgIHJldHVybiBsYW5ndWFnZXM7Ci19Ci0KLX0KLQotQGludGVyZmFjZSBXZWJM
YW5ndWFnZUNoYW5nZU9ic2VydmVyIDogTlNPYmplY3QKLUBlbmQKLQotQGltcGxlbWVudGF0aW9u
IFdlYkxhbmd1YWdlQ2hhbmdlT2JzZXJ2ZXIKLQotKyAodm9pZClsYW5ndWFnZVByZWZlcmVuY2Vz
RGlkQ2hhbmdlOihOU05vdGlmaWNhdGlvbiAqKW5vdGlmaWNhdGlvbgotewotICAgIFVOVVNFRF9Q
QVJBTShub3RpZmljYXRpb24pOwotCi0gICAgewotICAgICAgICBzdGQ6OmxvY2tfZ3VhcmQ8U3Rh
dGljTG9jaz4gbG9jayhXZWJDb3JlOjpwcmVmZXJyZWRMYW5ndWFnZXNNdXRleCk7Ci0gICAgICAg
IFdlYkNvcmU6OnByZWZlcnJlZExhbmd1YWdlcygpLmNsZWFyKCk7Ci0gICAgfQotCi0gICAgV2Vi
Q29yZTo6bGFuZ3VhZ2VEaWRDaGFuZ2UoKTsKLX0KLQotQGVuZAotCi1uYW1lc3BhY2UgV2ViQ29y
ZSB7Ci0KLXN0YXRpYyBTdHJpbmcgaHR0cFN0eWxlTGFuZ3VhZ2VDb2RlKE5TU3RyaW5nICpsYW5n
dWFnZSwgTlNTdHJpbmcgKmNvdW50cnkpCi17Ci0gICAgU0ludDMyIGxhbmd1YWdlQ29kZTsKLSAg
ICBTSW50MzIgcmVnaW9uQ29kZTsgCi0gICAgU0ludDMyIHNjcmlwdENvZGU7IAotICAgIENGU3Ry
aW5nRW5jb2Rpbmcgc3RyaW5nRW5jb2Rpbmc7Ci0gICAgCi0gICAgYm9vbCBsYW5ndWFnZURpZFNw
ZWNpZnlFeHBsaWNpdFZhcmlhbnQgPSBbbGFuZ3VhZ2UgcmFuZ2VPZkNoYXJhY3RlckZyb21TZXQ6
W05TQ2hhcmFjdGVyU2V0IGNoYXJhY3RlclNldFdpdGhDaGFyYWN0ZXJzSW5TdHJpbmc6QCItXyJd
XS5sb2NhdGlvbiAhPSBOU05vdEZvdW5kOwotCi0gICAgLy8gRklYTUU6IFRoaXMgdHJhbnNmb3Jt
YXRpb24gaXMgdmVyeSB3cm9uZzoKLSAgICAvLyAxLiBUaGVyZSBpcyBubyByZWFzb24gd2h5IENG
QnVuZGxlIGxvY2FsaXphdGlvbiBuYW1lcyB3b3VsZCBiZSBhdCBhbGwgcmVsYXRlZCB0byBsYW5n
dWFnZSBuYW1lcyBhcyB1c2VkIG9uIHRoZSBXZWIuCi0gICAgLy8gMi4gU2NyaXB0IE1hbmFnZXIg
Y29kZXMgY2Fubm90IHJlcHJlc2VudCBhbGwgbGFuZ3VhZ2VzIHRoYXQgYXJlIG5vdyBzdXBwb3J0
ZWQgYnkgdGhlIHBsYXRmb3JtLCBzbyB0aGUgY29udmVyc2lvbiBpcyBsb3NzeS4KLSAgICAvLyAz
LiBUaGlzIHNob3VsZCBwcm9iYWJseSBtYXRjaCB3aGF0IGlzIHNlbnQgYnkgdGhlIG5ldHdvcmsg
bGF5ZXIgYXMgQWNjZXB0LUxhbmd1YWdlLCBidXQgY3VycmVudGx5LCB0aGF0J3MgaW1wbGVtZW50
ZWQgc2VwYXJhdGVseS4KLSAgICBDRkJ1bmRsZUdldExvY2FsaXphdGlvbkluZm9Gb3JMb2NhbGl6
YXRpb24oKENGU3RyaW5nUmVmKWxhbmd1YWdlLCAmbGFuZ3VhZ2VDb2RlLCAmcmVnaW9uQ29kZSwg
JnNjcmlwdENvZGUsICZzdHJpbmdFbmNvZGluZyk7Ci0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVm
PiBwcmVmZXJyZWRMYW5ndWFnZUNvZGUgPSBhZG9wdENGKENGQnVuZGxlQ29weUxvY2FsaXphdGlv
bkZvckxvY2FsaXphdGlvbkluZm8obGFuZ3VhZ2VDb2RlLCByZWdpb25Db2RlLCBzY3JpcHRDb2Rl
LCBzdHJpbmdFbmNvZGluZykpOwotICAgIGlmIChwcmVmZXJyZWRMYW5ndWFnZUNvZGUpCi0gICAg
ICAgIGxhbmd1YWdlID0gKE5TU3RyaW5nICopcHJlZmVycmVkTGFuZ3VhZ2VDb2RlLmdldCgpOwot
Ci0gICAgLy8gTWFrZSB0aGUgc3RyaW5nIGxvd2VyY2FzZS4KLSAgICBOU1N0cmluZyAqbG93ZXJj
YXNlTGFuZ3VhZ2VDb2RlID0gW2xhbmd1YWdlIGxvd2VyY2FzZVN0cmluZ107Ci0gICAgTlNTdHJp
bmcgKmxvd2VyY2FzZUNvdW50cnlDb2RlID0gW2NvdW50cnkgbG93ZXJjYXNlU3RyaW5nXTsKLSAg
ICAKLSAgICAvLyBJZiB3ZSBzZWUgYSAiXyIgYWZ0ZXIgYSAyLWxldHRlciBsYW5ndWFnZSBjb2Rl
OgotICAgIC8vIElmIHRoZSBjb3VudHJ5IGlzIHZhbGlkIGFuZCB0aGUgbGFuZ3VhZ2UgZGlkIG5v
dCBzcGVjaWZ5IGEgdmFyaWFudCwgcmVwbGFjZSB0aGUgIl8iIGFuZAotICAgIC8vIHdoYXRldmVy
IGNvbWVzIGFmdGVyIGl0IHdpdGggIi0iIGZvbGxvd2VkIGJ5IHRoZSBjb3VudHJ5IGNvZGUuCi0g
ICAgLy8gT3RoZXJ3aXNlLCByZXBsYWNlIHRoZSAiXyIgd2l0aCBhICItIiBhbmQgdXNlIHdoYXRl
dmVyIGNvdW50cnkKLSAgICAvLyBDRkJ1bmRsZUNvcHlMb2NhbGl6YXRpb25Gb3JMb2NhbGl6YXRp
b25JbmZvKCkgcmV0dXJuZWQuCi0gICAgaWYgKFtsb3dlcmNhc2VMYW5ndWFnZUNvZGUgbGVuZ3Ro
XSA+PSAzICYmIFtsb3dlcmNhc2VMYW5ndWFnZUNvZGUgY2hhcmFjdGVyQXRJbmRleDoyXSA9PSAn
XycpIHsKLSAgICAgICAgaWYgKGNvdW50cnkgJiYgIWxhbmd1YWdlRGlkU3BlY2lmeUV4cGxpY2l0
VmFyaWFudCkKLSAgICAgICAgICAgIHJldHVybiBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpA
IiVALSVAIiwgW2xvd2VyY2FzZUxhbmd1YWdlQ29kZSBzdWJzdHJpbmdXaXRoUmFuZ2U6TlNNYWtl
UmFuZ2UoMCwgMildLCBsb3dlcmNhc2VDb3VudHJ5Q29kZV07Ci0gICAgICAgIAotICAgICAgICAv
LyBGYWxsIGJhY2sgdG8gb2xkZXIgYmVoYXZpb3IsIHdoaWNoIHVzZWQgdGhlIG9yaWdpbmFsIGxh
bmd1YWdlLWJhc2VkIGNvZGUgYnV0IGp1c3QgY2hhbmdlZAotICAgICAgICAvLyB0aGUgIl8iIHRv
IGEgIi0iLgotICAgICAgICBSZXRhaW5QdHI8TlNNdXRhYmxlU3RyaW5nPiBtdXRhYmxlTGFuZ3Vh
Z2VDb2RlID0gYWRvcHROUyhbbG93ZXJjYXNlTGFuZ3VhZ2VDb2RlIG11dGFibGVDb3B5XSk7Ci0g
ICAgICAgIFttdXRhYmxlTGFuZ3VhZ2VDb2RlLmdldCgpIHJlcGxhY2VDaGFyYWN0ZXJzSW5SYW5n
ZTpOU01ha2VSYW5nZSgyLCAxKSB3aXRoU3RyaW5nOkAiLSJdOwotICAgICAgICByZXR1cm4gbXV0
YWJsZUxhbmd1YWdlQ29kZS5nZXQoKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gbG93ZXJjYXNlTGFu
Z3VhZ2VDb2RlOwotfQotCi1zdGF0aWMgYm9vbCBpc1ZhbGlkSUNVQ291bnRyeUNvZGUoTlNTdHJp
bmcqIGNvdW50cnlDb2RlKQotewotICAgIGlmICghY291bnRyeUNvZGUpCi0gICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICBjb25zdCBjaGFyKiBjb25zdCogY291bnRyaWVzID0gdWxvY19nZXRJU09D
b3VudHJpZXMoKTsKLSAgICBjb25zdCBjaGFyKiBjb3VudHJ5VVRGOCA9IFtjb3VudHJ5Q29kZSBV
VEY4U3RyaW5nXTsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBjb3VudHJpZXNbaV07ICsraSkg
ewotICAgICAgICBjb25zdCBjaGFyKiBwb3NzaWJsZUNvdW50cnkgPSBjb3VudHJpZXNbaV07Ci0g
ICAgICAgIGlmICghc3RyY21wKGNvdW50cnlVVEY4LCBwb3NzaWJsZUNvdW50cnkpKQotICAgICAg
ICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICAgIHJldHVybiBmYWxzZTsKLX0KLQotVmVjdG9y
PFN0cmluZz4gcGxhdGZvcm1Vc2VyUHJlZmVycmVkTGFuZ3VhZ2VzKCkKLXsKLSNpZiBQTEFURk9S
TShNQUMpCi0gICAgc3RhdGljIGRpc3BhdGNoX29uY2VfdCBvbmNlVG9rZW47Ci0gICAgZGlzcGF0
Y2hfb25jZSgmb25jZVRva2VuLCBeewotICAgICAgICBbW05TRGlzdHJpYnV0ZWROb3RpZmljYXRp
b25DZW50ZXIgZGVmYXVsdENlbnRlcl0gYWRkT2JzZXJ2ZXI6W1dlYkxhbmd1YWdlQ2hhbmdlT2Jz
ZXJ2ZXIgc2VsZl0gc2VsZWN0b3I6QHNlbGVjdG9yKGxhbmd1YWdlUHJlZmVyZW5jZXNEaWRDaGFu
Z2U6KSBuYW1lOkAiQXBwbGVMYW5ndWFnZVByZWZlcmVuY2VzQ2hhbmdlZE5vdGlmaWNhdGlvbiIg
b2JqZWN0Om5pbF07Ci0gICAgfSk7Ci0jZW5kaWYKLQotICAgIEJFR0lOX0JMT0NLX09CSkNfRVhD
RVBUSU9OUzsKLQotICAgIHN0ZDo6bG9ja19ndWFyZDxTdGF0aWNMb2NrPiBsb2NrKHByZWZlcnJl
ZExhbmd1YWdlc011dGV4KTsKLSAgICBWZWN0b3I8U3RyaW5nPiYgdXNlclByZWZlcnJlZExhbmd1
YWdlcyA9IHByZWZlcnJlZExhbmd1YWdlcygpOwotCi0gICAgaWYgKHVzZXJQcmVmZXJyZWRMYW5n
dWFnZXMuaXNFbXB0eSgpKSB7Ci0gICAgICAgIFJldGFpblB0cjxDRkxvY2FsZVJlZj4gbG9jYWxl
ID0gYWRvcHRDRihDRkxvY2FsZUNvcHlDdXJyZW50KCkpOwotICAgICAgICBOU1N0cmluZyAqY291
bnRyeUNvZGUgPSAoTlNTdHJpbmcgKilDRkxvY2FsZUdldFZhbHVlKGxvY2FsZS5nZXQoKSwga0NG
TG9jYWxlQ291bnRyeUNvZGUpOwotICAgICAgICAKLSAgICAgICAgaWYgKCFpc1ZhbGlkSUNVQ291
bnRyeUNvZGUoY291bnRyeUNvZGUpKQotICAgICAgICAgICAgY291bnRyeUNvZGUgPSBuaWw7Ci0g
ICAgICAgIAotICAgICAgICBSZXRhaW5QdHI8Q0ZBcnJheVJlZj4gbGFuZ3VhZ2VzID0gYWRvcHRD
RihDRkxvY2FsZUNvcHlQcmVmZXJyZWRMYW5ndWFnZXMoKSk7Ci0gICAgICAgIENGSW5kZXggbGFu
Z3VhZ2VDb3VudCA9IENGQXJyYXlHZXRDb3VudChsYW5ndWFnZXMuZ2V0KCkpOwotICAgICAgICBp
ZiAoIWxhbmd1YWdlQ291bnQpCi0gICAgICAgICAgICB1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzLmFw
cGVuZCgiZW4iKTsKLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBmb3IgKENGSW5kZXggaSA9
IDA7IGkgPCBsYW5ndWFnZUNvdW50OyBpKyspCi0gICAgICAgICAgICAgICAgdXNlclByZWZlcnJl
ZExhbmd1YWdlcy5hcHBlbmQoaHR0cFN0eWxlTGFuZ3VhZ2VDb2RlKChOU1N0cmluZyAqKUNGQXJy
YXlHZXRWYWx1ZUF0SW5kZXgobGFuZ3VhZ2VzLmdldCgpLCBpKSwgY291bnRyeUNvZGUpKTsKLSAg
ICAgICAgfQotICAgIH0KLQotICAgIFZlY3RvcjxTdHJpbmc+IHVzZXJQcmVmZXJyZWRMYW5ndWFn
ZXNDb3B5OwotICAgIHVzZXJQcmVmZXJyZWRMYW5ndWFnZXNDb3B5LnJlc2VydmVJbml0aWFsQ2Fw
YWNpdHkodXNlclByZWZlcnJlZExhbmd1YWdlcy5zaXplKCkpOwotCi0gICAgZm9yIChhdXRvJiBs
YW5ndWFnZSA6IHVzZXJQcmVmZXJyZWRMYW5ndWFnZXMpCi0gICAgICAgIHVzZXJQcmVmZXJyZWRM
YW5ndWFnZXNDb3B5LnVuY2hlY2tlZEFwcGVuZChsYW5ndWFnZS5pc29sYXRlZENvcHkoKSk7Ci0K
LSAgICByZXR1cm4gdXNlclByZWZlcnJlZExhbmd1YWdlc0NvcHk7Ci0KLSAgICBFTkRfQkxPQ0tf
T0JKQ19FWENFUFRJT05TOwotCi0gICAgcmV0dXJuIFZlY3RvcjxTdHJpbmc+KCk7Ci19Ci0KLX0K
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxBbmltYXRvck1hYy5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsQW5pbWF0b3JN
YWMubW0JKHJldmlzaW9uIDIwMDk2OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9T
Y3JvbGxBbmltYXRvck1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjksNyArMjksNiBAQAogCiAj
aW5jbHVkZSAiU2Nyb2xsQW5pbWF0b3JNYWMuaCIKIAotI2luY2x1ZGUgIkJsb2NrRXhjZXB0aW9u
cy5oIgogI2luY2x1ZGUgIkZsb2F0UG9pbnQuaCIKICNpbmNsdWRlICJHcmFwaGljc0xheWVyLmgi
CiAjaW5jbHVkZSAiTG9nZ2luZy5oIgpAQCAtNDIsNiArNDEsNyBAQAogI2luY2x1ZGUgIlNjcm9s
bGJhclRoZW1lTWFjLmgiCiAjaW5jbHVkZSAiVGV4dFN0cmVhbS5oIgogI2luY2x1ZGUgIldlYkNv
cmVTeXN0ZW1JbnRlcmZhY2UuaCIKKyNpbmNsdWRlIDx3dGYvQmxvY2tPYmpDRXhjZXB0aW9ucy5o
PgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWFjL1Njcm9sbFZpZXdNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWFjL1Njcm9sbFZpZXdNYWMubW0JKHJldmlzaW9uIDIwMDk2OCkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxWaWV3TWFjLm1tCSh3b3JraW5nIGNvcHkpCkBA
IC0yNiwxMyArMjYsMTMgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiU2Nyb2xsVmll
dy5oIgogCi0jaW1wb3J0ICJCbG9ja0V4Y2VwdGlvbnMuaCIKICNpbXBvcnQgIkZsb2F0UmVjdC5o
IgogI2ltcG9ydCAiRmxvYXRTaXplLmgiCiAjaW1wb3J0ICJJbnRSZWN0LmgiCiAjaW1wb3J0ICJM
b2dnaW5nLmgiCiAjaW1wb3J0ICJOb3RJbXBsZW1lbnRlZC5oIgogI2ltcG9ydCAiV2ViQ29yZUZy
YW1lVmlldy5oIgorI2ltcG9ydCA8d3RmL0Jsb2NrT2JqQ0V4Y2VwdGlvbnMuaD4KIAogQGludGVy
ZmFjZSBOU1Njcm9sbFZpZXcgKCkKIC0gKE5TRWRnZUluc2V0cyljb250ZW50SW5zZXRzOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbGJhclRoZW1lTWFjLm1tCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxiYXJUaGVtZU1hYy5t
bQkocmV2aXNpb24gMjAwOTY4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9s
bGJhclRoZW1lTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw2IEBACiAjaW5jbHVk
ZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiU2Nyb2xsYmFyVGhlbWVNYWMuaCIKIAotI2luY2x1ZGUg
IkJsb2NrRXhjZXB0aW9ucy5oIgogI2luY2x1ZGUgIkNvbG9yTWFjLmgiCiAjaW5jbHVkZSAiR3Jh
cGhpY3NMYXllci5oIgogI2luY2x1ZGUgIkltYWdlQnVmZmVyLmgiCkBAIC0zOCw2ICszNyw3IEBA
CiAjaW5jbHVkZSAiU2Nyb2xsVmlldy5oIgogI2luY2x1ZGUgIldlYkNvcmVTeXN0ZW1JbnRlcmZh
Y2UuaCIKICNpbmNsdWRlIDxDYXJib24vQ2FyYm9uLmg+CisjaW5jbHVkZSA8d3RmL0Jsb2NrT2Jq
Q0V4Y2VwdGlvbnMuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9O
ZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9UaGVtZU1hYy5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvVGhlbWVNYWMubW0JKHJldmlzaW9uIDIwMDk2OCkKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9UaGVtZU1hYy5tbQkod29ya2luZyBjb3B5KQpA
QCAtMjcsNyArMjcsNiBAQAogI2ltcG9ydCAiVGhlbWVNYWMuaCIKIAogI2ltcG9ydCAiQVhPYmpl
Y3RDYWNoZS5oIgotI2ltcG9ydCAiQmxvY2tFeGNlcHRpb25zLmgiCiAjaW1wb3J0ICJHcmFwaGlj
c0NvbnRleHQuaCIKICNpbXBvcnQgIkltYWdlQnVmZmVyLmgiCiAjaW1wb3J0ICJMb2NhbEN1cnJl
bnRHcmFwaGljc0NvbnRleHQuaCIKQEAgLTM1LDYgKzM0LDcgQEAKICNpbXBvcnQgIlNjcm9sbFZp
ZXcuaCIKICNpbXBvcnQgIldlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaCIKICNpbXBvcnQgPENhcmJv
bi9DYXJib24uaD4KKyNpbXBvcnQgPHd0Zi9CbG9ja09iakNFeGNlcHRpb25zLmg+CiAjaW1wb3J0
IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbXBvcnQgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KIApJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dpZGdldE1hYy5tbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2lkZ2V0TWFjLm1tCShyZXZpc2lvbiAy
MDA5NjgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2lkZ2V0TWFjLm1tCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNiw4ICsyNiw2IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQg
IldpZGdldC5oIgogCi0KLSNpbXBvcnQgIkJsb2NrRXhjZXB0aW9ucy5oIgogI2ltcG9ydCAiQ2hy
b21lLmgiCiAjaW1wb3J0ICJDdXJzb3IuaCIKICNpbXBvcnQgIkRvY3VtZW50LmgiCkBAIC00MCw2
ICszOCw3IEBACiAjaW1wb3J0ICJSdW50aW1lQXBwbGljYXRpb25DaGVja3MuaCIKICNpbXBvcnQg
IldlYkNvcmVGcmFtZVZpZXcuaCIKICNpbXBvcnQgIldlYkNvcmVWaWV3LmgiCisjaW1wb3J0IDx3
dGYvQmxvY2tPYmpDRXhjZXB0aW9ucy5oPgogI2ltcG9ydCA8d3RmL1JlZi5oPgogI2ltcG9ydCA8
d3RmL1JldGFpblB0ci5oPgogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9tYWMvQVZWaWRlb0NhcHR1cmVTb3VyY2UubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWVmlkZW9DYXB0dXJlU291cmNlLm1tCShy
ZXZpc2lvbiAyMDA5NjgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9t
YWMvQVZWaWRlb0NhcHR1cmVTb3VyY2UubW0JKHdvcmtpbmcgY29weSkKQEAgLTI5LDcgKzI5LDYg
QEAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKSAmJiBVU0UoQVZGT1VOREFUSU9OKQogCiAjaW1w
b3J0ICJBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyLmgiCi0jaW1wb3J0ICJCbG9ja0V4Y2VwdGlvbnMu
aCIKICNpbXBvcnQgIkdyYXBoaWNzQ29udGV4dENHLmgiCiAjaW1wb3J0ICJJbWFnZUJ1ZmZlci5o
IgogI2ltcG9ydCAiSW50UmVjdC5oIgpAQCAtNDEsNiArNDAsNyBAQAogI2ltcG9ydCAiUmVhbHRp
bWVNZWRpYVNvdXJjZVNldHRpbmdzLmgiCiAjaW1wb3J0IDxBVkZvdW5kYXRpb24vQVZGb3VuZGF0
aW9uLmg+CiAjaW1wb3J0IDxvYmpjL3J1bnRpbWUuaD4KKyNpbXBvcnQgPHd0Zi9CbG9ja09iakNF
eGNlcHRpb25zLmg+CiAKICNpbXBvcnQgIkNvcmVNZWRpYVNvZnRMaW5rLmgiCiAjaW1wb3J0ICJD
b3JlVmlkZW9Tb2Z0TGluay5oIgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9tYWMvQ29va2llSmFyTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvbWFjL0Nvb2tpZUphck1hYy5tbQkocmV2aXNpb24gMjAwOTY4KQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvQ29va2llSmFyTWFjLm1tCSh3b3JraW5n
IGNvcHkpCkBAIC0yNiwxMCArMjYsMTAgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAi
UGxhdGZvcm1Db29raWVKYXIuaCIKIAotI2ltcG9ydCAiQmxvY2tFeGNlcHRpb25zLmgiCiAjaW1w
b3J0ICJDRk5ldHdvcmtTUEkuaCIKICNpbXBvcnQgIk5ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oIgog
I2ltcG9ydCAiV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oIgorI2ltcG9ydCA8d3RmL0Jsb2NrT2Jq
Q0V4Y2VwdGlvbnMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogc3RhdGljIE5TSFRUUENvb2tp
ZVN0b3JhZ2UgKmNvb2tpZVN0b3JhZ2UoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJik7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZUVycm9yTWFj
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jl
c291cmNlRXJyb3JNYWMubW0JKHJldmlzaW9uIDIwMDk2OCkKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlRXJyb3JNYWMubW0JKHdvcmtpbmcgY29weSkKQEAg
LTI2LDEwICsyNiwxMCBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJSZXNvdXJjZUVy
cm9yLmgiCiAKLSNpbXBvcnQgIkJsb2NrRXhjZXB0aW9ucy5oIgogI2ltcG9ydCAiVVJMLmgiCiAj
aW1wb3J0IDxDb3JlRm91bmRhdGlvbi9DRkVycm9yLmg+CiAjaW1wb3J0IDxGb3VuZGF0aW9uL0Zv
dW5kYXRpb24uaD4KKyNpbXBvcnQgPHd0Zi9CbG9ja09iakNFeGNlcHRpb25zLmg+CiAKICNpZiBQ
TEFURk9STShJT1MpICYmIFVTRShDRk5FVFdPUkspCiAjaW1wb3J0IDxDRk5ldHdvcmsvQ0ZTb2Nr
ZXRTdHJlYW1Qcml2Lmg+CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21h
Yy9SZXNvdXJjZUhhbmRsZU1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZUhhbmRsZU1hYy5tbQkocmV2aXNpb24gMjAwOTY4KQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VIYW5kbGVNYWMu
bW0JKHdvcmtpbmcgY29weSkKQEAgLTI4LDcgKzI4LDYgQEAKIAogI2ltcG9ydCAiQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UuaCIKICNpbXBvcnQgIkF1dGhlbnRpY2F0aW9uTWFjLmgiCi0jaW1wb3J0
ICJCbG9ja0V4Y2VwdGlvbnMuaCIKICNpbXBvcnQgIkNGTmV0d29ya1NQSS5oIgogI2ltcG9ydCAi
Q29va2llU3RvcmFnZS5oIgogI2ltcG9ydCAiQ3JlZGVudGlhbFN0b3JhZ2UuaCIKQEAgLTUzLDYg
KzUyLDcgQEAKICNpbXBvcnQgIlN5bmNocm9ub3VzTG9hZGVyQ2xpZW50LmgiCiAjaW1wb3J0ICJX
ZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmgiCiAjaW1wb3J0ICJXZWJDb3JlVVJMUmVzcG9uc2UuaCIK
KyNpbXBvcnQgPHd0Zi9CbG9ja09iakNFeGNlcHRpb25zLmg+CiAjaW1wb3J0IDx3dGYvUmVmLmg+
CiAjaW1wb3J0IDx3dGYvU2NoZWR1bGVQYWlyLmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9CYXNlNjQu
aD4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NwaS9jZi9DRkJ1bmRsZVNQSS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NwaS9jZi9DRkJ1bmRsZVNQSS5o
CShyZXZpc2lvbiAyMDA5NjgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcGkvY2YvQ0ZC
dW5kbGVTUEkuaAkod29ya2luZyBjb3B5KQpAQCAtMSw0NCArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDE1IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0g
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaWZuZGVmIENGQnVuZGxlU1BJX2gK
LSNkZWZpbmUgQ0ZCdW5kbGVTUElfaAotCi0jaW5jbHVkZSA8Q29yZUZvdW5kYXRpb24vQ29yZUZv
dW5kYXRpb24uaD4KLQotI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCi0jaW1wb3J0IDxDb3Jl
Rm91bmRhdGlvbi9DRlByaXYuaD4KLSNlbHNlCi0jaW5jbHVkZSA8d3RmL3NwaS9kYXJ3aW4vWFBD
U1BJLmg+Ci0jZW5kaWYKLQotZXh0ZXJuICJDIiB7Ci12b2lkIF9DRkJ1bmRsZVNldHVwWFBDQm9v
dHN0cmFwKHhwY19vYmplY3RfdCBib290c3RyYXApOwotCi1Cb29sZWFuIENGQnVuZGxlR2V0TG9j
YWxpemF0aW9uSW5mb0ZvckxvY2FsaXphdGlvbihDRlN0cmluZ1JlZiBsb2NhbGl6YXRpb25OYW1l
LCBTSW50MzIgKmxhbmd1YWdlQ29kZSwgU0ludDMyICpyZWdpb25Db2RlLCBTSW50MzIgKnNjcmlw
dENvZGUsIENGU3RyaW5nRW5jb2RpbmcgKnN0cmluZ0VuY29kaW5nKTsKLUNGU3RyaW5nUmVmIENG
QnVuZGxlQ29weUxvY2FsaXphdGlvbkZvckxvY2FsaXphdGlvbkluZm8oU0ludDMyIGxhbmd1YWdl
Q29kZSwgU0ludDMyIHJlZ2lvbkNvZGUsIFNJbnQzMiBzY3JpcHRDb2RlLCBDRlN0cmluZ0VuY29k
aW5nIHN0cmluZ0VuY29kaW5nKTsKLX0KLQotI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS91bml4L0xhbmd1YWdlVW5peC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vdW5peC9MYW5ndWFnZVVuaXguY3BwCShyZXZpc2lvbiAyMDA5NjgpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS91bml4L0xhbmd1YWdlVW5peC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNDkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNyBBbHAgVG9rZXIg
PGFscEBhdG9rZXIuY29tPgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5
b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVy
bXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFzIHB1Ymxp
c2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqIHZlcnNpb24g
MiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4K
LSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3
aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVu
IHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogTGlicmFyeSBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogWW91IHNob3VsZCBoYXZl
IHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZQotICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4g
IElmIG5vdCwgd3JpdGUgdG8KLSAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4s
IDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gKiBCb3N0b24sIE1BIDAyMTEwLTEz
MDEsIFVTQS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiTGFuZ3VhZ2Uu
aCIKLQotI2luY2x1ZGUgPGxvY2FsZS5oPgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLSNpbmNs
dWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi0vLyBV
c2luZyBwYW5nb19sYW5ndWFnZV9nZXRfZGVmYXVsdCgpIGhlcmUgaXMgbm90IGFuIG9wdGlvbiwg
YmVjYXVzZQotLy8gaXQgZG9lc24ndCBzdXBwb3J0IGNoYW5naW5nIHRoZSBsb2NhbGUgaW4gcnVu
dGltZSwgc28gaXQgcmV0dXJucwotLy8gYWx3YXlzIHRoZSBzYW1lIHZhbHVlLgotc3RhdGljIFN0
cmluZyBwbGF0Zm9ybUxhbmd1YWdlKCkKLXsKLSAgICBTdHJpbmcgbG9jYWxlRGVmYXVsdChzZXRs
b2NhbGUoTENfQ1RZUEUsIG51bGxwdHIpKTsKLSAgICBpZiAobG9jYWxlRGVmYXVsdC5pc0VtcHR5
KCkpCi0gICAgICAgIHJldHVybiBTdHJpbmcoImMiKTsKLQotICAgIFN0cmluZyBub3JtYWxpemVk
RGVmYXVsdCA9IGxvY2FsZURlZmF1bHQuY29udmVydFRvQVNDSUlMb3dlcmNhc2UoKTsKLSAgICBu
b3JtYWxpemVkRGVmYXVsdC5yZXBsYWNlKCdfJywgJy0nKTsKLSAgICBub3JtYWxpemVkRGVmYXVs
dC50cnVuY2F0ZShub3JtYWxpemVkRGVmYXVsdC5maW5kKCcuJykpOwotICAgIHJldHVybiBub3Jt
YWxpemVkRGVmYXVsdDsKLX0KLQotVmVjdG9yPFN0cmluZz4gcGxhdGZvcm1Vc2VyUHJlZmVycmVk
TGFuZ3VhZ2VzKCkKLXsKLSAgICByZXR1cm4geyBwbGF0Zm9ybUxhbmd1YWdlKCkgfTsKLX0KLQot
fQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0xhbmd1YWdlV2luLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vTGFuZ3VhZ2VXaW4uY3BwCShy
ZXZpc2lvbiAyMDA5NjgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vTGFuZ3VhZ2VX
aW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDc3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMDcgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNs
dWRlICJMYW5ndWFnZS5oIgotCi0jaW5jbHVkZSA8d2luZG93cy5oPgotI2luY2x1ZGUgPHd0Zi9W
ZWN0b3IuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQotbmFtZXNwYWNlIFdl
YkNvcmUgewotCi1zdGF0aWMgU3RyaW5nIGxvY2FsZUluZm8oTENUWVBFIGxvY2FsZVR5cGUsIGNv
bnN0IFN0cmluZyYgZmFsbGJhY2spCi17Ci0gICAgTEFOR0lEIGxhbmdJRCA9IEdldFVzZXJEZWZh
dWx0VUlMYW5ndWFnZSgpOwotICAgIGludCBsb2NhbGVDaGFycyA9IEdldExvY2FsZUluZm8obGFu
Z0lELCBsb2NhbGVUeXBlLCAwLCAwKTsKLSAgICBpZiAoIWxvY2FsZUNoYXJzKQotICAgICAgICBy
ZXR1cm4gZmFsbGJhY2s7Ci0gICAgVUNoYXIqIGxvY2FsZU5hbWVCdWY7Ci0gICAgU3RyaW5nIGxv
Y2FsZU5hbWUgPSBTdHJpbmc6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQobG9jYWxlQ2hhcnMsIGxvY2Fs
ZU5hbWVCdWYpOwotICAgIGxvY2FsZUNoYXJzID0gR2V0TG9jYWxlSW5mbyhsYW5nSUQsIGxvY2Fs
ZVR5cGUsIGxvY2FsZU5hbWVCdWYsIGxvY2FsZUNoYXJzKTsKLSAgICBpZiAoIWxvY2FsZUNoYXJz
KQotICAgICAgICByZXR1cm4gZmFsbGJhY2s7Ci0gICAgaWYgKGxvY2FsZU5hbWUuaXNFbXB0eSgp
KQotICAgICAgICByZXR1cm4gZmFsbGJhY2s7Ci0KLSAgICBsb2NhbGVOYW1lLnRydW5jYXRlKGxv
Y2FsZU5hbWUubGVuZ3RoKCkgLSAxKTsKLSAgICByZXR1cm4gbG9jYWxlTmFtZTsKLX0KLQotc3Rh
dGljIFN0cmluZyBwbGF0Zm9ybUxhbmd1YWdlKCkKLXsKLSAgICBzdGF0aWMgU3RyaW5nIGNvbXB1
dGVkRGVmYXVsdExhbmd1YWdlOwotICAgIGlmICghY29tcHV0ZWREZWZhdWx0TGFuZ3VhZ2UuaXNF
bXB0eSgpKQotICAgICAgICByZXR1cm4gY29tcHV0ZWREZWZhdWx0TGFuZ3VhZ2U7Ci0KLSAgICBT
dHJpbmcgbGFuZ3VhZ2VOYW1lID0gbG9jYWxlSW5mbyhMT0NBTEVfU0lTTzYzOUxBTkdOQU1FLCAi
ZW4iKTsKLSAgICBTdHJpbmcgY291bnRyeU5hbWUgPSBsb2NhbGVJbmZvKExPQ0FMRV9TSVNPMzE2
NkNUUllOQU1FLCBTdHJpbmcoKSk7Ci0KLSAgICBpZiAoY291bnRyeU5hbWUuaXNFbXB0eSgpKQot
ICAgICAgICBjb21wdXRlZERlZmF1bHRMYW5ndWFnZSA9IGxhbmd1YWdlTmFtZTsKLSAgICBlbHNl
Ci0gICAgICAgIGNvbXB1dGVkRGVmYXVsdExhbmd1YWdlID0gbGFuZ3VhZ2VOYW1lICsgJy0nICsg
Y291bnRyeU5hbWU7Ci0KLSAgICByZXR1cm4gY29tcHV0ZWREZWZhdWx0TGFuZ3VhZ2U7Ci19Ci0K
LVZlY3RvcjxTdHJpbmc+IHBsYXRmb3JtVXNlclByZWZlcnJlZExhbmd1YWdlcygpCi17Ci0gICAg
VmVjdG9yPFN0cmluZz4gdXNlclByZWZlcnJlZExhbmd1YWdlczsKLSAgICB1c2VyUHJlZmVycmVk
TGFuZ3VhZ2VzLmFwcGVuZChwbGF0Zm9ybUxhbmd1YWdlKCkpOwotICAgIHJldHVybiB1c2VyUHJl
ZmVycmVkTGFuZ3VhZ2VzOwotfQotCi19CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMDA5Njgp
CisrKyBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwx
NyBAQAorMjAxNi0wNS0xNiAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAg
ICAgIFdURiBzaG91bGQga25vdyBhYm91dCBMYW5ndWFnZQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU3NzU2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisgICAgICAgIAorICAgICAgICBSZXdpcmVzIGEgYnVuY2ggb2YgaW5j
bHVkZXMvaW1wb3J0cy4KKworICAgICAgICAqIFNoYXJlZC9tYWMvUmVtb3RlTGF5ZXJUcmVlUHJv
cGVydHlBcHBsaWVyLm1tOgorICAgICAgICAqIFVJUHJvY2Vzcy9MYXVuY2hlci9tYWMvUHJvY2Vz
c0xhdW5jaGVyTWFjLm1tOgorICAgICAgICAqIFVJUHJvY2Vzcy9TY3JvbGxpbmcvaW9zL1Njcm9s
bGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVJT1MubW06CisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJQYWdlL21hYy9QbGF0Zm9ybUNBQW5pbWF0aW9uUmVtb3RlLm1tOgorCiAyMDE2LTA1LTE2
ICBDaGVsc2VhIFB1Z2ggIDxjcHVnaEBhcHBsZS5jb20+CiAKICAgICAgICAgW2lPU10gUmVtb3Zl
IGRpc3BhdGNoX2FmdGVyIGluIC1bV0tGb3JtSW5wdXRTZXNzaW9uIHNldFN1Z2dlc3Rpb25zOl0K
SW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvUmVtb3RlTGF5ZXJUcmVlUHJvcGVydHlB
cHBsaWVyLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvUmVtb3Rl
TGF5ZXJUcmVlUHJvcGVydHlBcHBsaWVyLm1tCShyZXZpc2lvbiAyMDA5NjgpCisrKyBTb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvbWFjL1JlbW90ZUxheWVyVHJlZVByb3BlcnR5QXBwbGllci5tbQkod29y
a2luZyBjb3B5KQpAQCAtMzAsMTAgKzMwLDEwIEBACiAjaW1wb3J0ICJQbGF0Zm9ybUNBTGF5ZXJS
ZW1vdGUuaCIKICNpbXBvcnQgIlJlbW90ZUxheWVyVHJlZUhvc3QuaCIKICNpbXBvcnQgPFF1YXJ0
ekNvcmUvUXVhcnR6Q29yZS5oPgotI2ltcG9ydCA8V2ViQ29yZS9CbG9ja0V4Y2VwdGlvbnMuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvUGxhdGZvcm1DQUZpbHRlcnMuaD4KICNpbXBvcnQgPFdlYkNvcmUv
UXVhcnR6Q29yZVNQSS5oPgogI2ltcG9ydCA8V2ViQ29yZS9TY3JvbGxiYXJUaGVtZU1hYy5oPgor
I2ltcG9ydCA8d3RmL0Jsb2NrT2JqQ0V4Y2VwdGlvbnMuaD4KIAogI2lmIFBMQVRGT1JNKElPUykK
ICNpbXBvcnQgPFVJS2l0L1VJVmlldy5oPgpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0xhdW5jaGVyL21hYy9Qcm9jZXNzTGF1bmNoZXJNYWMubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0xhdW5jaGVyL21hYy9Qcm9jZXNzTGF1bmNoZXJNYWMubW0JKHJl
dmlzaW9uIDIwMDk2OCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXVuY2hlci9tYWMv
UHJvY2Vzc0xhdW5jaGVyTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw2IEBACiAj
aW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIlByb2Nlc3NMYXVuY2hlci5oIgogCi0jaW1wb3J0
IDxXZWJDb3JlL0NGQnVuZGxlU1BJLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1NlcnZlcnNTUEkuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvU29mdExpbmtpbmcuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViQ29y
ZU5TU3RyaW5nRXh0cmFzLmg+CkBAIC00MSw2ICs0MCw3IEBACiAjaW1wb3J0IDx3dGYvUnVuTG9v
cC5oPgogI2ltcG9ydCA8d3RmL1RocmVhZGluZy5oPgogI2ltcG9ydCA8d3RmL3NwaS9kYXJ3aW4v
WFBDU1BJLmg+CisjaW1wb3J0IDx3dGYvc3BpL2NmL0NGQnVuZGxlU1BJLmg+CiAjaW1wb3J0IDx3
dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApJbmRl
eDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1Njcm9sbGluZy9pb3MvU2Nyb2xsaW5nVHJlZU92
ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvU2Nyb2xsaW5nL2lvcy9TY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2Rl
SU9TLm1tCShyZXZpc2lvbiAyMDA5NjgpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvU2Ny
b2xsaW5nL2lvcy9TY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9TLm1tCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMCwxMSArMzAsMTEgQEAKICNpZiBFTkFCTEUoQVNZTkNfU0NST0xMSU5H
KQogCiAjaW1wb3J0IDxRdWFydHpDb3JlL1F1YXJ0ekNvcmUuaD4KLSNpbXBvcnQgPFdlYkNvcmUv
QmxvY2tFeGNlcHRpb25zLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1Njcm9sbGluZ1N0YXRlT3ZlcmZs
b3dTY3JvbGxpbmdOb2RlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1Njcm9sbGluZ1RyZWUuaD4KICNp
bXBvcnQgPFVJS2l0L1VJUGFuR2VzdHVyZVJlY29nbml6ZXIuaD4KICNpbXBvcnQgPFVJS2l0L1VJ
U2Nyb2xsVmlldy5oPgorI2ltcG9ydCA8d3RmL0Jsb2NrT2JqQ0V4Y2VwdGlvbnMuaD4KICNpbXBv
cnQgPHd0Zi9UZW1wb3JhcnlDaGFuZ2UuaD4KIAogI2lmIEVOQUJMRShDU1NfU0NST0xMX1NOQVAp
CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1BsYXRmb3JtQ0FB
bmltYXRpb25SZW1vdGUubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL21hYy9QbGF0Zm9ybUNBQW5pbWF0aW9uUmVtb3RlLm1tCShyZXZpc2lvbiAyMDA5
NjgpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1BsYXRmb3JtQ0FB
bmltYXRpb25SZW1vdGUubW0JKHdvcmtpbmcgY29weSkKQEAgLTI5LDEzICsyOSwxMyBAQAogI2lt
cG9ydCAiQXJndW1lbnRDb2RlcnMuaCIKICNpbXBvcnQgIlJlbW90ZUxheWVyVHJlZUhvc3QuaCIK
ICNpbXBvcnQgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgotI2ltcG9ydCA8V2ViQ29yZS9CbG9j
a0V4Y2VwdGlvbnMuaD4KICNpbXBvcnQgPFdlYkNvcmUvR3JhcGhpY3NMYXllci5oPgogI2ltcG9y
dCA8V2ViQ29yZS9QbGF0Zm9ybUNBQW5pbWF0aW9uQ29jb2EuaD4KICNpbXBvcnQgPFdlYkNvcmUv
UGxhdGZvcm1DQUZpbHRlcnMuaD4KICNpbXBvcnQgPFdlYkNvcmUvUXVhcnR6Q29yZVNQSS5oPgog
I2ltcG9ydCA8V2ViQ29yZS9UZXh0U3RyZWFtLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RpbWluZ0Z1
bmN0aW9uLmg+CisjaW1wb3J0IDx3dGYvQmxvY2tPYmpDRXhjZXB0aW9ucy5oPgogI2ltcG9ydCA8
d3RmL0N1cnJlbnRUaW1lLmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAjaW1wb3J0IDxR
dWFydHpDb3JlL1F1YXJ0ekNvcmUuaD4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxv
Zwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDIw
MDk2OCkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAt
MSwzICsxLDIyIEBACisyMDE2LTA1LTE2ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+
CisKKyAgICAgICAgV1RGIHNob3VsZCBrbm93IGFib3V0IExhbmd1YWdlCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTc3NTYKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAgICAgIFJld2lyZXMgYSBidW5j
aCBvZiBpbmNsdWRlcy9pbXBvcnRzLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvUG9wdXBN
ZW51TWFjLm1tOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5tbToK
KyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbToKKyAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5tbToKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9XZWJOb3RpZmljYXRpb25DbGllbnQubW06CisgICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tOgorICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L1dlYlVzZXJNZWRpYUNsaWVudC5tbToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJW
aXNpdGVkTGlua1N0b3JlLm1tOgorICAgICAgICAqIFdlYlZpZXcvV2ViSFRNTFZpZXcubW06CisK
IDIwMTYtMDUtMTMgIENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3JnPgogCiAg
ICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIyMDA4OTQuCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L21hYy9XZWJDb3JlU3VwcG9ydC9Qb3B1cE1lbnVNYWMubW0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvUG9wdXBNZW51TWFjLm1tCShyZXZpc2lvbiAy
MDA5NjgpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9Qb3B1cE1lbnVNYWMu
bW0JKHdvcmtpbmcgY29weSkKQEAgLTI0LDcgKzI0LDYgQEAKICNpbXBvcnQgIldlYkZyYW1lSW50
ZXJuYWwuaCIKICNpbXBvcnQgPFdlYkNvcmUvSW50UmVjdC5oPgogI2ltcG9ydCA8V2ViQ29yZS9B
WE9iamVjdENhY2hlLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL0Jsb2NrRXhjZXB0aW9ucy5oPgogI2lt
cG9ydCA8V2ViQ29yZS9DaHJvbWUuaD4KICNpbXBvcnQgPFdlYkNvcmUvQ2hyb21lQ2xpZW50Lmg+
CiAjaW1wb3J0IDxXZWJDb3JlL0V2ZW50SGFuZGxlci5oPgpAQCAtMzQsNiArMzMsNyBAQAogI2lt
cG9ydCA8V2ViQ29yZS9QYWdlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1BvcHVwTWVudUNsaWVudC5o
PgogI2ltcG9ydCA8V2ViS2l0U3lzdGVtSW50ZXJmYWNlLmg+CisjaW1wb3J0IDx3dGYvQmxvY2tP
YmpDRXhjZXB0aW9ucy5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIApJbmRleDogU291
cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lm1tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5t
bQkocmV2aXNpb24gMjAwOTY4KQorKysgU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViQ2hyb21lQ2xpZW50Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC01NCw3ICs1NCw2IEBACiAjaW1w
b3J0ICJXZWJWaWV3LmgiCiAjaW1wb3J0ICJXZWJWaWV3SW50ZXJuYWwuaCIKICNpbXBvcnQgPEZv
dW5kYXRpb24vRm91bmRhdGlvbi5oPgotI2ltcG9ydCA8V2ViQ29yZS9CbG9ja0V4Y2VwdGlvbnMu
aD4KICNpbXBvcnQgPFdlYkNvcmUvQ29sb3JDaG9vc2VyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0Nv
bnRleHRNZW51Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0NvbnRleHRNZW51Q29udHJvbGxlci5oPgpA
QCAtODIsNiArODEsNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9TZXJpYWxpemVkQ3J5cHRvS2V5V3Jh
cC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XaWRnZXQuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2luZG93
RmVhdHVyZXMuaD4KKyNpbXBvcnQgPHd0Zi9CbG9ja09iakNFeGNlcHRpb25zLmg+CiAjaW1wb3J0
IDx3dGYvUGFzc1JlZlB0ci5oPgogI2ltcG9ydCA8d3RmL1ZlY3Rvci5oPgogI2ltcG9ydCA8d3Rm
L3RleHQvV1RGU3RyaW5nLmg+CkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21h
Yy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQkocmV2aXNpb24gMjAwOTY4
KQorKysgU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGll
bnQubW0JKHdvcmtpbmcgY29weSkKQEAgLTc2LDcgKzc2LDYgQEAKICNpbXBvcnQgPFdlYkNvcmUv
QXV0aGVudGljYXRpb25NYWMuaD4KICNpbXBvcnQgPFdlYkNvcmUvQmFja0ZvcndhcmRDb250cm9s
bGVyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0JhY2tGb3J3YXJkTGlzdC5oPgotI2ltcG9ydCA8V2Vi
Q29yZS9CbG9ja0V4Y2VwdGlvbnMuaD4KICNpbXBvcnQgPFdlYkNvcmUvQ2FjaGVkRnJhbWUuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvQ2hyb21lLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0ROUy5oPgpAQCAt
MTIzLDYgKzEyMiw3IEBACiAjaW1wb3J0IDxXZWJLaXRMZWdhY3kvRE9NSFRNTEZvcm1FbGVtZW50
Lmg+CiAjaW1wb3J0IDxXZWJLaXRTeXN0ZW1JbnRlcmZhY2UuaD4KICNpbXBvcnQgPHJ1bnRpbWUv
SW5pdGlhbGl6ZVRocmVhZGluZy5oPgorI2ltcG9ydCA8d3RmL0Jsb2NrT2JqQ0V4Y2VwdGlvbnMu
aD4KICNpbXBvcnQgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW1wb3J0IDx3dGYvUGFzc1JlZlB0ci5o
PgogI2ltcG9ydCA8d3RmL1J1bkxvb3AuaD4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50Lm1tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50Lm1tCShyZXZpc2lv
biAyMDA5NjgpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2Nh
dGlvbkNsaWVudC5tbQkod29ya2luZyBjb3B5KQpAQCAtMzMsMTAgKzMzLDEwIEBACiAjaW1wb3J0
ICJXZWJTZWN1cml0eU9yaWdpbkludGVybmFsLmgiCiAjaW1wb3J0ICJXZWJVSURlbGVnYXRlUHJp
dmF0ZS5oIgogI2ltcG9ydCAiV2ViVmlld0ludGVybmFsLmgiCi0jaW1wb3J0IDxXZWJDb3JlL0Js
b2NrRXhjZXB0aW9ucy5oPgogI2ltcG9ydCA8V2ViQ29yZS9Eb2N1bWVudC5oPgogI2ltcG9ydCA8
V2ViQ29yZS9GcmFtZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9HZW9sb2NhdGlvbi5oPgorI2ltcG9y
dCA8d3RmL0Jsb2NrT2JqQ0V4Y2VwdGlvbnMuaD4KIAogI2lmIFBMQVRGT1JNKElPUykKICNpbXBv
cnQgPFdlYkNvcmUvV0FLUmVzcG9uZGVyLmg+CkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJOb3RpZmljYXRpb25DbGllbnQubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViTm90aWZpY2F0aW9uQ2xpZW50Lm1tCShyZXZp
c2lvbiAyMDA5NjgpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJOb3Rp
ZmljYXRpb25DbGllbnQubW0JKHdvcmtpbmcgY29weSkKQEAgLTMyLDkgKzMyLDkgQEAKICNpbXBv
cnQgIldlYlNlY3VyaXR5T3JpZ2luSW50ZXJuYWwuaCIKICNpbXBvcnQgIldlYlVJRGVsZWdhdGVQ
cml2YXRlLmgiCiAjaW1wb3J0ICJXZWJWaWV3SW50ZXJuYWwuaCIKLSNpbXBvcnQgPFdlYkNvcmUv
QmxvY2tFeGNlcHRpb25zLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1BhZ2UuaD4KICNpbXBvcnQgPFdl
YkNvcmUvU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oPgorI2ltcG9ydCA8d3RmL0Jsb2NrT2JqQ0V4
Y2VwdGlvbnMuaD4KICNlbmRpZgogCiAjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCkluZGV4OiBT
b3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZv
cm1TdHJhdGVnaWVzLm1tCShyZXZpc2lvbiAyMDA5NjgpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW0JKHdvcmtpbmcgY29weSkKQEAg
LTMwLDcgKzMwLDYgQEAKICNpbXBvcnQgIldlYlBsdWdpblBhY2thZ2UuaCIKICNpbXBvcnQgIldl
YlJlc291cmNlTG9hZFNjaGVkdWxlci5oIgogI2ltcG9ydCA8V2ViQ29yZS9CbG9iUmVnaXN0cnlJ
bXBsLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL0Jsb2NrRXhjZXB0aW9ucy5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9Db2xvci5oPgogI2ltcG9ydCA8V2ViQ29yZS9NYWluRnJhbWUuaD4KICNpbXBvcnQgPFdl
YkNvcmUvUGFnZS5oPgpAQCAtNDAsNiArMzksNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9TaGFyZWRC
dWZmZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvU3ViZnJhbWVMb2FkZXIuaD4KICNpbXBvcnQgPFdl
YktpdFN5c3RlbUludGVyZmFjZS5oPgorI2ltcG9ydCA8d3RmL0Jsb2NrT2JqQ0V4Y2VwdGlvbnMu
aD4KICNpbXBvcnQgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlVzZXJNZWRp
YUNsaWVudC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJVc2VyTWVkaWFDbGllbnQubW0JKHJldmlzaW9uIDIwMDk2OCkKKysrIFNvdXJjZS9XZWJL
aXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlVzZXJNZWRpYUNsaWVudC5tbQkod29ya2luZyBjb3B5
KQpAQCAtMzEsMTEgKzMxLDExIEBACiAjaW1wb3J0ICJXZWJTZWN1cml0eU9yaWdpbkludGVybmFs
LmgiCiAjaW1wb3J0ICJXZWJVSURlbGVnYXRlUHJpdmF0ZS5oIgogI2ltcG9ydCAiV2ViVmlld0lu
dGVybmFsLmgiCi0jaW1wb3J0IDxXZWJDb3JlL0Jsb2NrRXhjZXB0aW9ucy5oPgogI2ltcG9ydCA8
V2ViQ29yZS9QYWdlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQu
aD4KICNpbXBvcnQgPFdlYkNvcmUvVXNlck1lZGlhUGVybWlzc2lvbkNoZWNrLmg+CiAjaW1wb3J0
IDxXZWJDb3JlL1VzZXJNZWRpYVJlcXVlc3QuaD4KKyNpbXBvcnQgPHd0Zi9CbG9ja09iakNFeGNl
cHRpb25zLmg+CiAjaW1wb3J0IDx3dGYvSGFzaE1hcC5oPgogI2ltcG9ydCA8d3RmL05ldmVyRGVz
dHJveWVkLmg+CiAjaW1wb3J0IDx3dGYvUmVmUHRyLmg+CkluZGV4OiBTb3VyY2UvV2ViS2l0L21h
Yy9XZWJDb3JlU3VwcG9ydC9XZWJWaXNpdGVkTGlua1N0b3JlLm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlZpc2l0ZWRMaW5rU3RvcmUubW0JKHJl
dmlzaW9uIDIwMDk2OCkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlZp
c2l0ZWRMaW5rU3RvcmUubW0JKHdvcmtpbmcgY29weSkKQEAgLTI5LDggKzI5LDggQEAKICNpbXBv
cnQgIldlYkZyYW1lSW50ZXJuYWwuaCIKICNpbXBvcnQgIldlYkhpc3RvcnlJbnRlcm5hbC5oIgog
I2ltcG9ydCAiV2ViVmlld0ludGVybmFsLmgiCi0jaW1wb3J0IDxXZWJDb3JlL0Jsb2NrRXhjZXB0
aW9ucy5oPgogI2ltcG9ydCA8V2ViQ29yZS9QYWdlQ2FjaGUuaD4KKyNpbXBvcnQgPHd0Zi9CbG9j
a09iakNFeGNlcHRpb25zLmg+CiAjaW1wb3J0IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAogdXNp
bmcgbmFtZXNwYWNlIFdlYkNvcmU7CkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dl
YkhUTUxWaWV3Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2Vi
SFRNTFZpZXcubW0JKHJldmlzaW9uIDIwMDk2OCkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZp
ZXcvV2ViSFRNTFZpZXcubW0JKHdvcmtpbmcgY29weSkKQEAgLTcyLDcgKzcyLDYgQEAKICNpbXBv
cnQgIldlYlR5cGVzSW50ZXJuYWwuaCIKICNpbXBvcnQgIldlYlVJRGVsZWdhdGVQcml2YXRlLmgi
CiAjaW1wb3J0ICJXZWJWaWV3SW50ZXJuYWwuaCIKLSNpbXBvcnQgPFdlYkNvcmUvQmxvY2tFeGNl
cHRpb25zLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0NTU1N0eWxlRGVjbGFyYXRpb24uaD4KICNpbXBv
cnQgPFdlYkNvcmUvQ2FjaGVkSW1hZ2UuaD4KICNpbXBvcnQgPFdlYkNvcmUvQ2FjaGVkUmVzb3Vy
Y2VDbGllbnQuaD4KQEAgLTEzMyw2ICsxMzIsNyBAQAogI2ltcG9ydCA8ZGxmY24uaD4KICNpbXBv
cnQgPGxpbWl0cz4KICNpbXBvcnQgPHJ1bnRpbWUvSW5pdGlhbGl6ZVRocmVhZGluZy5oPgorI2lt
cG9ydCA8d3RmL0Jsb2NrT2JqQ0V4Y2VwdGlvbnMuaD4KICNpbXBvcnQgPHd0Zi9NYWluVGhyZWFk
Lmg+CiAjaW1wb3J0IDx3dGYvTWF0aEV4dHJhcy5oPgogI2ltcG9ydCA8d3RmL09iamNSdW50aW1l
RXh0cmFzLmg+Cg==
</data>
<flag name="review"
          id="303170"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>279142</attachid>
            <date>2016-05-17 11:48:29 -0700</date>
            <delta_ts>2016-05-17 12:37:56 -0700</delta_ts>
            <desc>patch for landing</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>107736</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjAxMDIzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBA
CisyMDE2LTA1LTE2ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
V1RGIHNob3VsZCBrbm93IGFib3V0IExhbmd1YWdlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTc3NTYKKworICAgICAgICBSZXZpZXdlZCBieSBHZW9m
ZnJleSBHYXJlbi4KKworICAgICAgICBUZWFjaCBvdXIgc2NyaXB0cyB0aGF0IGEgT2JqQyBjbGFz
cyBiZWdpbm5pbmcgd2l0aCBXVEYgaXMgdG90YWxseSBjb29sLgorCisgICAgICAgICogSmF2YVNj
cmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAxNi0wNS0xNyAgSm9zZXBo
IFBlY29yYXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgogCiAgICAgICAgIGNvbnNvbGUgbmFtZXNw
YWNlIGJyZWFrcyBwdXR0aW5nIHByb3BlcnRpZXMgb24gY29uc29sZS5fX3Byb3RvX18KSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyMDEwMjMpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagko
d29ya2luZyBjb3B5KQpAQCAtODQwOCw3ICs4NDA4LDcgQEAKIAkJCSk7CiAJCQlydW5Pbmx5Rm9y
RGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJCXNoZWxsUGF0aCA9IC9iaW4vc2g7Ci0J
CQlzaGVsbFNjcmlwdCA9ICJzZXQgLWVcblxuaWYgWyBcIiR7QUNUSU9OfVwiID0gXCJpbnN0YWxs
aGRyc1wiIF07IHRoZW5cbiAgICBleGl0IDA7XG5maVxuXG5pZiBbIC1mIC4uLy4uL1Rvb2xzL1Nj
cmlwdHMvY2hlY2stZm9yLWluYXBwcm9wcmlhdGUtb2JqYy1jbGFzcy1uYW1lcyBdOyB0aGVuXG4g
ICAgLi4vLi4vVG9vbHMvU2NyaXB0cy9jaGVjay1mb3ItaW5hcHByb3ByaWF0ZS1vYmpjLWNsYXNz
LW5hbWVzIEpTXG5maSI7CisJCQlzaGVsbFNjcmlwdCA9ICJzZXQgLWVcblxuaWYgWyBcIiR7QUNU
SU9OfVwiID0gXCJpbnN0YWxsaGRyc1wiIF07IHRoZW5cbiAgICBleGl0IDA7XG5maVxuXG5pZiBb
IC1mIC4uLy4uL1Rvb2xzL1NjcmlwdHMvY2hlY2stZm9yLWluYXBwcm9wcmlhdGUtb2JqYy1jbGFz
cy1uYW1lcyBdOyB0aGVuXG4gICAgLi4vLi4vVG9vbHMvU2NyaXB0cy9jaGVjay1mb3ItaW5hcHBy
b3ByaWF0ZS1vYmpjLWNsYXNzLW5hbWVzIEpTIFdURlxuZmkiOwogCQl9OwogCQkzNzMyODExQTE3
RkNEMjM1MDA0QUQ1MTkgLyogUG9zdHByb2Nlc3MgSGVhZGVycyAqLyA9IHsKIAkJCWlzYSA9IFBC
WFNoZWxsU2NyaXB0QnVpbGRQaGFzZTsKSW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMDEwMjMpCisrKyBTb3Vy
Y2UvV1RGL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU2IEBACisyMDE2LTA1
LTE2ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAgV1RGIHNob3Vs
ZCBrbm93IGFib3V0IExhbmd1YWdlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNTc3NTYKKworICAgICAgICBSZXZpZXdlZCBieSBHZW9mZnJleSBHYXJl
bi4KKworICAgICAgICBUaGlzIGNvbnRhaW5zIHR3byBjaGFuZ2VzOgorCisgICAgICAgIC0gTW92
ZSBldmVyeXRoaW5nIHRoYXQgV2ViQ29yZSdzIGxvZ2ljIGZvciBnZXR0aW5nIHRoZSBwbGF0Zm9y
bSB1c2VyIHByZWZlcnJlZCBsYW5ndWFnZQorICAgICAgICAgIGRlcGVuZGVkIG9uIGludG8gV1RG
LiBUaGlzIG1lYW5zIENGQnVuZGxlU1BJLmggYW5kIEJsb2NrT2JqQ0V4Y2VwdGlvbnMuaHxjcHAu
CisKKyAgICAgICAgLSBNb3ZlIFdlYkNvcmU6OnBsYXRmb3JtVXNlclByZWZlcnJlZExhbmd1YWdl
cygpIHRvIFdURjo6cGxhdGZvcm1Vc2VyUHJlZmVycmVkTGFuZ3VhZ2VzKCkuCisgICAgICAgICAg
VGhpcyBpcyBuZWVkZWQgYnkgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE1Nzc1NSwgd2hpY2ggd2lsbCBtYWtlIEpTQworICAgICAgICAgIHVzZSB0aGlzIHRvIGRldGVj
dCB0aGUgcGxhdGZvcm0gdXNlciBwcmVmZXJyZWQgbGFuZ3VhZ2Ugd2hlbiBydW5uaW5nIHN0YW5k
YWxvbmUuCisKKyAgICAgICAgTW92aW5nIHRoZSBkZXBlbmRlbmNpZXMgYWNjb3VudHMgZm9yIGEg
aHVnZSBjaHVuayBvZiB0aGlzIGNoYW5nZSwgc2luY2Ugd2UgaGF2ZSB0byByZXdpcmUKKyAgICAg
ICAgYWxsIG9mIHRoZSByZWZlcmVuY2VzIHRvIHRob3NlIGhlYWRlcnMgaW4gYWxsIG9mIFdlYktp
dC4KKworICAgICAgICBNb3ZpbmcgcGxhdGZvcm1Vc2VyUHJlZmVycmVkTGFuZ3VhZ2VzKCkgaXMg
bW9zdGx5IGVhc3kgZXhjZXB0IGZvciB0aGUgd2VpcmQgY2FsbGJhY2suCisgICAgICAgIFRoYXQg
ZnVuY3Rpb24gd291bGQgY2FsbCBsYW5ndWFnZURpZENoYW5nZSgpLCB3aGljaCBuZWVkcyB0byBz
dGF5IGluIFdlYkNvcmUuIFNvLCB0aGlzCisgICAgICAgIGdpdmVzIFdlYkNvcmUgdGhlIGFiaWxp
dHkgdG8gcmVnaXN0ZXIgYSBsYW5ndWFnZURpZENoYW5nZSBjYWxsYmFjay4gT3RoZXIgdGhhbiB0
aGlzIG5ldworICAgICAgICBsb2dpYywgdGhlIGNvZGUgYmVpbmcgYWRkZWQgdG8gV1RGIGlzIGp1
c3QgYmVpbmcgbGlmdGVkIG91dCBvZiBXZWJDb3JlLgorCisgICAgICAgICogV1RGLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogd3RmL0Jsb2NrT2JqQ0V4Y2VwdGlvbnMuaDog
QWRkZWQuCisgICAgICAgICogd3RmL0Jsb2NrT2JqQ0V4Y2VwdGlvbnMubW06IEFkZGVkLgorICAg
ICAgICAoUmVwb3J0QmxvY2tlZE9iakNFeGNlcHRpb24pOgorICAgICAgICAqIHd0Zi9QbGF0Zm9y
bUVmbC5jbWFrZToKKyAgICAgICAgKiB3dGYvUGxhdGZvcm1HVEsuY21ha2U6CisgICAgICAgICog
d3RmL1BsYXRmb3JtSlNDT25seS5jbWFrZToKKyAgICAgICAgKiB3dGYvUGxhdGZvcm1NYWMuY21h
a2U6CisgICAgICAgICogd3RmL1BsYXRmb3JtVXNlclByZWZlcnJlZExhbmd1YWdlcy5oOiBBZGRl
ZC4KKyAgICAgICAgKiB3dGYvUGxhdGZvcm1Vc2VyUHJlZmVycmVkTGFuZ3VhZ2VzTWFjLm1tOiBB
ZGRlZC4KKyAgICAgICAgKFdURjo6c2V0UGxhdGZvcm1Vc2VyUHJlZmVycmVkTGFuZ3VhZ2VzQ2hh
bmdlZENhbGxiYWNrKToKKyAgICAgICAgKFdURjo6cHJlZmVycmVkTGFuZ3VhZ2VzKToKKyAgICAg
ICAgKCtbV1RGTGFuZ3VhZ2VDaGFuZ2VPYnNlcnZlciBsYW5ndWFnZVByZWZlcmVuY2VzRGlkQ2hh
bmdlOl0pOgorICAgICAgICAoV1RGOjpodHRwU3R5bGVMYW5ndWFnZUNvZGUpOgorICAgICAgICAo
V1RGOjppc1ZhbGlkSUNVQ291bnRyeUNvZGUpOgorICAgICAgICAoV1RGOjpwbGF0Zm9ybVVzZXJQ
cmVmZXJyZWRMYW5ndWFnZXMpOgorICAgICAgICAqIHd0Zi9QbGF0Zm9ybVVzZXJQcmVmZXJyZWRM
YW5ndWFnZXNVbml4LmNwcDogQWRkZWQuCisgICAgICAgIChXVEY6OnNldFBsYXRmb3JtVXNlclBy
ZWZlcnJlZExhbmd1YWdlc0NoYW5nZWRDYWxsYmFjayk6CisgICAgICAgIChXVEY6OnBsYXRmb3Jt
TGFuZ3VhZ2UpOgorICAgICAgICAoV1RGOjpwbGF0Zm9ybVVzZXJQcmVmZXJyZWRMYW5ndWFnZXMp
OgorICAgICAgICAqIHd0Zi9QbGF0Zm9ybVVzZXJQcmVmZXJyZWRMYW5ndWFnZXNXaW4uY3BwOiBB
ZGRlZC4KKyAgICAgICAgKFdURjo6c2V0UGxhdGZvcm1Vc2VyUHJlZmVycmVkTGFuZ3VhZ2VzQ2hh
bmdlZENhbGxiYWNrKToKKyAgICAgICAgKFdURjo6bG9jYWxlSW5mbyk6CisgICAgICAgIChXVEY6
OnBsYXRmb3JtTGFuZ3VhZ2UpOgorICAgICAgICAoV1RGOjpwbGF0Zm9ybVVzZXJQcmVmZXJyZWRM
YW5ndWFnZXMpOgorICAgICAgICAqIHd0Zi9QbGF0Zm9ybVdpbi5jbWFrZToKKyAgICAgICAgKiB3
dGYvc3BpL2NmOiBBZGRlZC4KKyAgICAgICAgKiB3dGYvc3BpL2NmL0NGQnVuZGxlU1BJLmg6IEFk
ZGVkLgorCiAyMDE2LTA1LTE3ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uLmZhYmxldEBjcmYuY2Fu
b24uZnI+CiAKICAgICAgICAgRE9NUHJvbWlzZSBzaG91bGQgb25seSByZXN0cmljdCB0aGUgcmVz
b2x1dGlvbiB0eXBlCkluZGV4OiBTb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oJKHJldmlzaW9uIDIwMTAyMykKKysrIFNvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTMwMSw2ICszMDEsMTEgQEAKIAkJQ0Q1NDk3QUQx
NTg1N0QwMzAwQjVCQzMwIC8qIE1lZGlhVGltZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQ0Q1NDk3QUIxNTg1N0QwMzAwQjVCQzMwIC8qIE1lZGlhVGlt
ZS5oICovOyB9OwogCQlDRTQ2NTE2RTE5REIxRkI0MDAzRUNBMDUgLyogTlNNYXBUYWJsZVNQSS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0U0NjUxNkQx
OURCMUZCNDAwM0VDQTA1IC8qIE5TTWFwVGFibGVTUEkuaCAqLzsgfTsKIAkJQ0U3M0UwMjUxOURD
QjdBQjAwNTgwRDVDIC8qIFhQQ1NQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQ0U3M0UwMjQxOURDQjdBQjAwNTgwRDVDIC8qIFhQQ1NQSS5oICovOyB9
OworCQlEQ0VFMjFGQjFDRUE3NTM4MDAwQzIzOTYgLyogQ0ZCdW5kbGVTUEkuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERDRUUyMUZBMUNFQTc1MzgwMDBD
MjM5NiAvKiBDRkJ1bmRsZVNQSS5oICovOyB9OworCQlEQ0VFMjIwMDFDRUE3NTUxMDAwQzIzOTYg
LyogQmxvY2tPYmpDRXhjZXB0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRENFRTIxRkMxQ0VBNzU1MTAwMEMyMzk2IC8qIEJsb2NrT2JqQ0V4Y2Vw
dGlvbnMuaCAqLzsgfTsKKwkJRENFRTIyMDExQ0VBNzU1MTAwMEMyMzk2IC8qIEJsb2NrT2JqQ0V4
Y2VwdGlvbnMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBEQ0VFMjFGRDFDRUE3NTUxMDAwQzIzOTYgLyogQmxvY2tPYmpDRXhjZXB0aW9ucy5tbSAqLzsg
fTsKKwkJRENFRTIyMDIxQ0VBNzU1MTAwMEMyMzk2IC8qIFBsYXRmb3JtVXNlclByZWZlcnJlZExh
bmd1YWdlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RENFRTIxRkUxQ0VBNzU1MTAwMEMyMzk2IC8qIFBsYXRmb3JtVXNlclByZWZlcnJlZExhbmd1YWdl
cy5oICovOyB9OworCQlEQ0VFMjIwMzFDRUE3NTUxMDAwQzIzOTYgLyogUGxhdGZvcm1Vc2VyUHJl
ZmVycmVkTGFuZ3VhZ2VzTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRENFRTIxRkYxQ0VBNzU1MTAwMEMyMzk2IC8qIFBsYXRmb3JtVXNlclByZWZl
cnJlZExhbmd1YWdlc01hYy5tbSAqLzsgfTsKIAkJREU1QTA5RkMxQkEzNjk5MjAwM0Q0NDI0IC8q
IENvbW1vbkNyeXB0b1NQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gREU1QTA5RkIxQkEzNjk5MjAwM0Q0NDI0IC8qIENvbW1vbkNyeXB0b1NQSS5oICov
OyB9OwogCQlFMTU1NTZGNTE4QTBDQzE4MDA2RjQ4RkIgLyogQ3J5cHRvZ3JhcGhpY1V0aWxpdGll
cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTU1
NTZGMzE4QTBDQzE4MDA2RjQ4RkIgLyogQ3J5cHRvZ3JhcGhpY1V0aWxpdGllcy5jcHAgKi87IH07
CiAJCUUxNTU1NkY2MThBMENDMTgwMDZGNDhGQiAvKiBDcnlwdG9ncmFwaGljVXRpbGl0aWVzLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTU1NTZGNDE4
QTBDQzE4MDA2RjQ4RkIgLyogQ3J5cHRvZ3JhcGhpY1V0aWxpdGllcy5oICovOyB9OwpAQCAtNjIy
LDYgKzYyNywxMSBAQAogCQlDRDU0OTdBQjE1ODU3RDAzMDBCNUJDMzAgLyogTWVkaWFUaW1lLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlhVGltZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlDRTQ2NTE2RDE5REIxRkI0MDAzRUNBMDUgLyogTlNNYXBUYWJs
ZVNQSS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOU01hcFRhYmxlU1BJLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNFNzNFMDI0MTlEQ0I3QUIwMDU4MEQ1QyAv
KiBYUENTUEkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gWFBDU1BJLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCURDRUUyMUZBMUNFQTc1MzgwMDBDMjM5NiAvKiBD
RkJ1bmRsZVNQSS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBDRkJ1bmRsZVNQ
SS5oOyBwYXRoID0gY2YvQ0ZCdW5kbGVTUEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJRENFRTIxRkMxQ0VBNzU1MTAwMEMyMzk2IC8qIEJsb2NrT2JqQ0V4Y2VwdGlvbnMuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQmxvY2tPYmpDRXhjZXB0aW9ucy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlEQ0VFMjFGRDFDRUE3NTUxMDAwQzIzOTYgLyogQmxv
Y2tPYmpDRXhjZXB0aW9ucy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0
aCA9IEJsb2NrT2JqQ0V4Y2VwdGlvbnMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CURDRUUyMUZFMUNFQTc1NTEwMDBDMjM5NiAvKiBQbGF0Zm9ybVVzZXJQcmVmZXJyZWRMYW5ndWFn
ZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGxhdGZvcm1Vc2VyUHJlZmVy
cmVkTGFuZ3VhZ2VzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCURDRUUyMUZGMUNF
QTc1NTEwMDBDMjM5NiAvKiBQbGF0Zm9ybVVzZXJQcmVmZXJyZWRMYW5ndWFnZXNNYWMubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBQbGF0Zm9ybVVzZXJQcmVmZXJy
ZWRMYW5ndWFnZXNNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCURFNUEwOUZC
MUJBMzY5OTIwMDNENDQyNCAvKiBDb21tb25DcnlwdG9TUEkuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gQ29tbW9uQ3J5cHRvU1BJLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUUxNTU1NkYzMThBMENDMTgwMDZGNDhGQiAvKiBDcnlwdG9ncmFwaGljVXRpbGl0aWVz
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENyeXB0b2dyYXBoaWNV
dGlsaXRpZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMTU1NTZGNDE4QTBD
QzE4MDA2RjQ4RkIgLyogQ3J5cHRvZ3JhcGhpY1V0aWxpdGllcy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBDcnlwdG9ncmFwaGljVXRpbGl0aWVzLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC03NjgsNiArNzc4LDggQEAKIAkJCQlBOEE0NzI1RjE1MUE4MjVBMDA0
MTIzRkYgLyogQml0bWFwLmggKi8sCiAJCQkJQThBNDcyNjAxNTFBODI1QTAwNDEyM0ZGIC8qIEJp
dFZlY3Rvci5jcHAgKi8sCiAJCQkJQThBNDcyNjExNTFBODI1QTAwNDEyM0ZGIC8qIEJpdFZlY3Rv
ci5oICovLAorCQkJCURDRUUyMUZDMUNFQTc1NTEwMDBDMjM5NiAvKiBCbG9ja09iakNFeGNlcHRp
b25zLmggKi8sCisJCQkJRENFRTIxRkQxQ0VBNzU1MTAwMEMyMzk2IC8qIEJsb2NrT2JqQ0V4Y2Vw
dGlvbnMubW0gKi8sCiAJCQkJMUE5NDRGNDYxQzNEODgxNDAwNUJEMjhDIC8qIEJsb2NrUHRyLmgg
Ki8sCiAJCQkJQThBNDcyNjQxNTFBODI1QTAwNDEyM0ZGIC8qIEJsb2NrU3RhY2suaCAqLywKIAkJ
CQlBOEE0NzI2NTE1MUE4MjVBMDA0MTIzRkYgLyogQmxvb21GaWx0ZXIuaCAqLywKQEAgLTg4Miw2
ICs4OTQsOCBAQAogCQkJCTBGODI0QTY1MUI3NDQzQTAwMDJFMzQ1RCAvKiBQYXJraW5nTG90Lmgg
Ki8sCiAJCQkJQThBNDcyRUQxNTFBODI1QjAwNDEyM0ZGIC8qIFBhc3NSZWZQdHIuaCAqLywKIAkJ
CQlBODc2REJENzE1MTgxNkU1MDBEQURCOTUgLyogUGxhdGZvcm0uaCAqLywKKwkJCQlEQ0VFMjFG
RTFDRUE3NTUxMDAwQzIzOTYgLyogUGxhdGZvcm1Vc2VyUHJlZmVycmVkTGFuZ3VhZ2VzLmggKi8s
CisJCQkJRENFRTIxRkYxQ0VBNzU1MTAwMEMyMzk2IC8qIFBsYXRmb3JtVXNlclByZWZlcnJlZExh
bmd1YWdlc01hYy5tbSAqLywKIAkJCQkwRkY4NjA5NDFCQ0NCRDc0MDA0NTEyN0YgLyogUG9pbnRl
ckNvbXBhcmlzb24uaCAqLywKIAkJCQkwRjlEMzM1RDE2NURCQTczMDA1QUQzODcgLyogUHJpbnRT
dHJlYW0uY3BwICovLAogCQkJCTBGOUQzMzVFMTY1REJBNzMwMDVBRDM4NyAvKiBQcmludFN0cmVh
bS5oICovLApAQCAtMTEwMSwxMiArMTExNSwyMSBAQAogCQlDRUY0ODIwQzE5REEzNDc2MDBDQzA0
QjggLyogc3BpICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJ
CQlEQ0VFMjFGOTFDRUE3NTJGMDAwQzIzOTYgLyogY2YgKi8sCiAJCQkJQ0U0NjUxNkMxOURCMUZC
NDAwM0VDQTA1IC8qIGNvY29hICovLAogCQkJCUNFNzNFMDIzMTlEQ0I3QUIwMDU4MEQ1QyAvKiBk
YXJ3aW4gKi8sCiAJCQkpOwogCQkJcGF0aCA9IHNwaTsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7CiAJCX07CisJCURDRUUyMUY5MUNFQTc1MkYwMDBDMjM5NiAvKiBjZiAqLyA9IHsKKwkJCWlz
YSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJRENFRTIxRkExQ0VBNzUzODAwMEMy
Mzk2IC8qIENGQnVuZGxlU1BJLmggKi8sCisJCQkpOworCQkJbmFtZSA9IGNmOworCQkJc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKIAkJRTRBMEFEM0IxQTk2MjUxOTAwNTM2REY2IC8qIGNv
Y29hICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKQEAgLTExMzks
NiArMTE2Miw3IEBACiAJCQkJOUJEOEY0MEIxNzZDMkI0NzAwMDJEODY1IC8qIEF0b21pY1N0cmlu
Z1RhYmxlLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDY5NDE5QzE2RUFCMTBBMDAyNEUxNDYgLyog
QXV0b2RyYWluZWRQb29sLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkIxNEUxOTE4MEZBMjE4MDA5
QjZCNEQgLyogQmFnLmggaW4gSGVhZGVycyAqLywKKwkJCQlEQ0VFMjIwMDFDRUE3NTUxMDAwQzIz
OTYgLyogQmxvY2tPYmpDRXhjZXB0aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZCMTRFMUIx
ODEwRTFEQzAwOUI2QjREIC8qIEJhZ1RvSGFzaE1hcC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODEz
NDAxMzkxNUIwOTJGRDAwMUZGMEI4IC8qIEJhc2U2NC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQThB
NDczQTkxNTFBODI1QjAwNDEyM0ZGIC8qIGJpZ251bS1kdG9hLmggaW4gSGVhZGVycyAqLywKQEAg
LTEyOTUsNiArMTMxOSw3IEBACiAJCQkJQThBNDc0M0YxNTFBODI1QjAwNDEyM0ZGIC8qIFN0cmlu
Z0hhc2guaCBpbiBIZWFkZXJzICovLAogCQkJCUE3NDg3NDU0MTdBMEJEQUUwMEZBMDRDQiAvKiBT
dHJpbmdIYXNoRHVtcENvbnRleHQuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4QTQ3NDQxMTUxQTgy
NUIwMDQxMjNGRiAvKiBTdHJpbmdJbXBsLmggaW4gSGVhZGVycyAqLywKKwkJCQlEQ0VFMjFGQjFD
RUE3NTM4MDAwQzIzOTYgLyogQ0ZCdW5kbGVTUEkuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4QTQ3
NDQyMTUxQTgyNUIwMDQxMjNGRiAvKiBTdHJpbmdPcGVyYXRvcnMuaCBpbiBIZWFkZXJzICovLAog
CQkJCTBGRERCRkE4MTY2NkRGQTMwMEM1NUZFRiAvKiBTdHJpbmdQcmludFN0cmVhbS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMUE2RUIxRTAxODdEMEJEMzAwMzAxMjZGIC8qIFN0cmluZ1ZpZXcuaCBp
biBIZWFkZXJzICovLApAQCAtMTMxMiw2ICsxMzM3LDcgQEAKIAkJCQlBOEE0NzQ1NTE1MUE4MjVC
MDA0MTIzRkYgLyogVGhyZWFkU3BlY2lmaWMuaCBpbiBIZWFkZXJzICovLAogCQkJCTU1MzA3MUNB
MUM0MDQyNzIwMDM4NDg5OCAvKiBUaW55TFJVQ2FjaGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBG
RUQ2N0I2MUIyMkQ0RDgwMDY2Q0UxNSAvKiBUaW55UHRyU2V0LmggaW4gSGVhZGVycyAqLywKKwkJ
CQlEQ0VFMjIwMjFDRUE3NTUxMDAwQzIzOTYgLyogUGxhdGZvcm1Vc2VyUHJlZmVycmVkTGFuZ3Vh
Z2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDlFRjE2MzE2QkJGRTBEMDAwQTQzMzEgLyogVHJp
U3RhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTgzRkJBOTMyMTlERjQ1OTcwMEYzMEFEQiAvKiBU
eXBlQ2FzdHMuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBRkRFNjQ4MTk1MjAxQzMwMEM0OEZGQSAv
KiBUeXBlQ2FzdHNDRi5oIGluIEhlYWRlcnMgKi8sCkBAIC0xNDYwLDYgKzE0ODYsNyBAQAogCQkJ
CUE4QTQ3M0IzMTUxQTgyNUIwMDQxMjNGRiAvKiBmYXN0LWR0b2EuY2MgaW4gU291cmNlcyAqLywK
IAkJCQkwRjg4NUUwRjE4NDVBRUE5MDBGMUUzRkEgLyogRmFzdEJpdFZlY3Rvci5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlBOEE0NzNDMzE1MUE4MjVCMDA0MTIzRkYgLyogRmFzdE1hbGxvYy5jcHAg
aW4gU291cmNlcyAqLywKKwkJCQlEQ0VFMjIwMTFDRUE3NTUxMDAwQzIzOTYgLyogQmxvY2tPYmpD
RXhjZXB0aW9ucy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTBGOUQzMzYwMTY1REJBNzMwMDVBRDM4
NyAvKiBGaWxlUHJpbnRTdHJlYW0uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQThBNDczQjUxNTFB
ODI1QjAwNDEyM0ZGIC8qIGZpeGVkLWR0b2EuY2MgaW4gU291cmNlcyAqLywKIAkJCQkxQTFEOEI5
RTE3MzE4Nzk4MDAxNDFEQTQgLyogRnVuY3Rpb25EaXNwYXRjaGVyLmNwcCBpbiBTb3VyY2VzICov
LApAQCAtMTUxMCw2ICsxNTM3LDcgQEAKIAkJCQlBOEE0NzQ2OTE1MUE4MjVCMDA0MTIzRkYgLyog
VVRGOC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxRkE0N0M4QTE1MjUwMkRBMDA1NjhEMUIgLyog
V2ViQ29yZVRocmVhZC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkU0NDc5QzFCN0FBQTAzMDA5
NDk4RUIgLyogV29yZExvY2suY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRENFRTIyMDMxQ0VBNzU1
MTAwMEMyMzk2IC8qIFBsYXRmb3JtVXNlclByZWZlcnJlZExhbmd1YWdlc01hYy5tbSBpbiBTb3Vy
Y2VzICovLAogCQkJCUU0QTBBRDM5MUE5NjI0NTUwMDUzNkRGNiAvKiBXb3JrUXVldWUuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJRTRBMEFEM0QxQTk2MjUzQzAwNTM2REY2IC8qIFdvcmtRdWV1ZUNv
Y29hLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4QTQ3NDQ1MTUxQTgyNUIwMDQxMjNGRiAvKiBX
VEZTdHJpbmcuY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9CbG9ja09i
akNFeGNlcHRpb25zLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvQmxvY2tPYmpDRXhj
ZXB0aW9ucy5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dURi93dGYvQmxvY2tPYmpDRXhjZXB0
aW9ucy5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzIgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMDMsIDIwMTYgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbXBvcnQgPEZvdW5kYXRpb24v
TlNFeGNlcHRpb24uaD4KKworV1RGX0VYUE9SVF9QUklWQVRFIE5PX1JFVFVSTl9EVUVfVE9fQVNT
RVJUIHZvaWQgUmVwb3J0QmxvY2tlZE9iakNFeGNlcHRpb24oTlNFeGNlcHRpb24gKik7CisKKyNk
ZWZpbmUgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TIEB0cnkgeworI2RlZmluZSBFTkRfQkxP
Q0tfT0JKQ19FWENFUFRJT05TIH0gQGNhdGNoKE5TRXhjZXB0aW9uICpsb2NhbEV4Y2VwdGlvbikg
eyBSZXBvcnRCbG9ja2VkT2JqQ0V4Y2VwdGlvbihsb2NhbEV4Y2VwdGlvbik7IH0KKwpJbmRleDog
U291cmNlL1dURi93dGYvQmxvY2tPYmpDRXhjZXB0aW9ucy5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV1RGL3d0Zi9CbG9ja09iakNFeGNlcHRpb25zLm1tCShyZXZpc2lvbiAwKQorKysgU291cmNl
L1dURi93dGYvQmxvY2tPYmpDRXhjZXB0aW9ucy5tbQkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDQxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA3LCAyMDE2IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
IAorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiQmxvY2tPYmpDRXhjZXB0aW9u
cy5oIgorCisjaW1wb3J0IDx3dGYvQXNzZXJ0aW9ucy5oPgorCit2b2lkIFJlcG9ydEJsb2NrZWRP
YmpDRXhjZXB0aW9uKE5TRXhjZXB0aW9uICpleGNlcHRpb24pCit7CisgICAgLy8gRklYTUU6IFRo
aXMgaXMgcHJvYmFibHkgZ29pbmcgdG8gYmUgY29uZnVzaW5nIHdoZW4gSmF2YVNjcmlwdENvcmUg
aXMgdXNlZCBzdGFuZGFsb25lLiBKU0MKKyAgICAvLyB3aWxsIGNhbGwgdGhpcyBjb2RlIGFzIHBh
cnQgb2YgZGVmYXVsdCBsb2NhbGUgZGV0ZWN0aW9uLgorICAgIC8vIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTc4MDQKKyNpZiBBU1NFUlRfRElTQUJMRUQKKyAgICBO
U0xvZyhAIioqKiBXZWJLaXQgZGlzY2FyZGluZyBleGNlcHRpb246IDwlQD4gJUAiLCBbZXhjZXB0
aW9uIG5hbWVdLCBbZXhjZXB0aW9uIHJlYXNvbl0pOworI2Vsc2UKKyAgICBBU1NFUlRfV0lUSF9N
RVNTQUdFKDAsICJVbmNhdWdodCBleGNlcHRpb24gLSAlQCIsIGV4Y2VwdGlvbik7CisjZW5kaWYK
K30KSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1BsYXRmb3JtRWZsLmNtYWtlCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XVEYvd3RmL1BsYXRmb3JtRWZsLmNtYWtlCShyZXZpc2lvbiAyMDEwMjMpCisrKyBT
b3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUVmbC5jbWFrZQkod29ya2luZyBjb3B5KQpAQCAtMSw0ICsx
LDYgQEAKIGxpc3QoQVBQRU5EIFdURl9TT1VSQ0VTCisgICAgUGxhdGZvcm1Vc2VyUHJlZmVycmVk
TGFuZ3VhZ2VzVW5peC5jcHAKKwogICAgIGVmbC9EaXNwYXRjaFF1ZXVlRWZsLmNwcAogICAgIGVm
bC9NYWluVGhyZWFkRWZsLmNwcAogICAgIGVmbC9SdW5Mb29wRWZsLmNwcApJbmRleDogU291cmNl
L1dURi93dGYvUGxhdGZvcm1HVEsuY21ha2UKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYv
UGxhdGZvcm1HVEsuY21ha2UJKHJldmlzaW9uIDIwMTAyMykKKysrIFNvdXJjZS9XVEYvd3RmL1Bs
YXRmb3JtR1RLLmNtYWtlCSh3b3JraW5nIGNvcHkpCkBAIC03LDYgKzcsNyBAQCBsaXN0KEFQUEVO
RCBXVEZfU09VUkNFUwogICAgIGdsaWIvR1JlZlB0ci5jcHAKICAgICBnbGliL01haW5UaHJlYWRH
TGliLmNwcAogICAgIGdsaWIvUnVuTG9vcEdMaWIuY3BwCisgICAgUGxhdGZvcm1Vc2VyUHJlZmVy
cmVkTGFuZ3VhZ2VzVW5peC5jcHAKICkKIAogbGlzdChBUFBFTkQgV1RGX0xJQlJBUklFUwpJbmRl
eDogU291cmNlL1dURi93dGYvUGxhdGZvcm1KU0NPbmx5LmNtYWtlCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XVEYvd3RmL1BsYXRmb3JtSlNDT25seS5jbWFrZQkocmV2aXNpb24gMjAxMDIzKQorKysg
U291cmNlL1dURi93dGYvUGxhdGZvcm1KU0NPbmx5LmNtYWtlCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDMgKzEsNyBAQAorbGlzdChBUFBFTkQgV1RGX1NPVVJDRVMKKyAgICBQbGF0Zm9ybVVzZXJQcmVm
ZXJyZWRMYW5ndWFnZXNVbml4LmNwcAorKQorCiBpZiAoTE9XRVJDQVNFX0VWRU5UX0xPT1BfVFlQ
RSBTVFJFUVVBTCAiZ2xpYiIpCiAgICAgbGlzdChBUFBFTkQgV1RGX1NPVVJDRVMKICAgICAgICAg
Z2xpYi9HUmVmUHRyLmNwcApJbmRleDogU291cmNlL1dURi93dGYvUGxhdGZvcm1NYWMuY21ha2UK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvUGxhdGZvcm1NYWMuY21ha2UJKHJldmlzaW9u
IDIwMTAyMykKKysrIFNvdXJjZS9XVEYvd3RmL1BsYXRmb3JtTWFjLmNtYWtlCSh3b3JraW5nIGNv
cHkpCkBAIC0xMiw2ICsxMiw4IEBAIGxpc3QoQVBQRU5EIFdURl9MSUJSQVJJRVMKIAogbGlzdChB
UFBFTkQgV1RGX1NPVVJDRVMKICAgICBBdXRvZHJhaW5lZFBvb2xNYWMubW0KKyAgICBCbG9ja09i
akNFeGNlcHRpb25zLm1tCisgICAgUGxhdGZvcm1Vc2VyUHJlZmVycmVkTGFuZ3VhZ2VzTWFjLm1t
CiAgICAgUnVuTG9vcFRpbWVyQ0YuY3BwCiAgICAgU2NoZWR1bGVQYWlyQ0YuY3BwCiAgICAgU2No
ZWR1bGVQYWlyTWFjLm1tCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybVVzZXJQcmVmZXJy
ZWRMYW5ndWFnZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybVVzZXJQ
cmVmZXJyZWRMYW5ndWFnZXMuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XVEYvd3RmL1BsYXRm
b3JtVXNlclByZWZlcnJlZExhbmd1YWdlcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDQg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaWZuZGVmIFBsYXRmb3JtVXNlclByZWZlcnJlZExhbmd1YWdlc19o
CisjZGVmaW5lIFBsYXRmb3JtVXNlclByZWZlcnJlZExhbmd1YWdlc19oCisKKyNpbmNsdWRlIDx3
dGYvVmVjdG9yLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFj
ZSBXVEYgeworCitXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBzZXRQbGF0Zm9ybVVzZXJQcmVmZXJy
ZWRMYW5ndWFnZXNDaGFuZ2VkQ2FsbGJhY2sodm9pZCAoKikoKSk7CisKK1dURl9FWFBPUlRfUFJJ
VkFURSBWZWN0b3I8U3RyaW5nPiBwbGF0Zm9ybVVzZXJQcmVmZXJyZWRMYW5ndWFnZXMoKTsKKwor
fSAvLyBuYW1lc3BhY2UgV1RGCisKK3VzaW5nIFdURjo6c2V0UGxhdGZvcm1Vc2VyUHJlZmVycmVk
TGFuZ3VhZ2VzQ2hhbmdlZENhbGxiYWNrOwordXNpbmcgV1RGOjpwbGF0Zm9ybVVzZXJQcmVmZXJy
ZWRMYW5ndWFnZXM7CisKKyNlbmRpZiAvLyBQbGF0Zm9ybVVzZXJQcmVmZXJyZWRMYW5ndWFnZXNf
aAorCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybVVzZXJQcmVmZXJyZWRMYW5ndWFnZXNN
YWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvUGxhdGZvcm1Vc2VyUHJlZmVycmVk
TGFuZ3VhZ2VzTWFjLm1tCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dURi93dGYvUGxhdGZvcm1V
c2VyUHJlZmVycmVkTGFuZ3VhZ2VzTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTc5
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA1LCAyMDA2LCAyMDEwLCAyMDExLCAy
MDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAi
Y29uZmlnLmgiCisjaW1wb3J0ICJQbGF0Zm9ybVVzZXJQcmVmZXJyZWRMYW5ndWFnZXMuaCIKKwor
I2ltcG9ydCAiQmxvY2tPYmpDRXhjZXB0aW9ucy5oIgorI2ltcG9ydCA8bXV0ZXg+CisjaW1wb3J0
IDx1bmljb2RlL3Vsb2MuaD4KKyNpbXBvcnQgPHd0Zi9Bc3NlcnRpb25zLmg+CisjaW1wb3J0IDx3
dGYvTG9jay5oPgorI2ltcG9ydCA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisjaW1wb3J0IDx3dGYv
UmV0YWluUHRyLmg+CisjaW1wb3J0IDx3dGYvc3BpL2NmL0NGQnVuZGxlU1BJLmg+CisjaW1wb3J0
IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdURiB7CisKK3N0YXRpYyB2b2lk
ICgqY2FsbGJhY2spKCk7CisKK3ZvaWQgc2V0UGxhdGZvcm1Vc2VyUHJlZmVycmVkTGFuZ3VhZ2Vz
Q2hhbmdlZENhbGxiYWNrKHZvaWQgKCpwYXNzZWRDYWxsYmFjaykoKSkKK3sKKyAgICBjYWxsYmFj
ayA9IHBhc3NlZENhbGxiYWNrOworfQorCitzdGF0aWMgU3RhdGljTG9jayBwcmVmZXJyZWRMYW5n
dWFnZXNNdXRleDsKKworc3RhdGljIFZlY3RvcjxTdHJpbmc+JiBwcmVmZXJyZWRMYW5ndWFnZXMo
KQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxWZWN0b3I8U3RyaW5nPj4gbGFuZ3VhZ2Vz
OworICAgIHJldHVybiBsYW5ndWFnZXM7Cit9CisKK30KKworQGludGVyZmFjZSBXVEZMYW5ndWFn
ZUNoYW5nZU9ic2VydmVyIDogTlNPYmplY3QKK0BlbmQKKworQGltcGxlbWVudGF0aW9uIFdURkxh
bmd1YWdlQ2hhbmdlT2JzZXJ2ZXIKKworKyAodm9pZClsYW5ndWFnZVByZWZlcmVuY2VzRGlkQ2hh
bmdlOihOU05vdGlmaWNhdGlvbiAqKW5vdGlmaWNhdGlvbgoreworICAgIFVOVVNFRF9QQVJBTShu
b3RpZmljYXRpb24pOworCisgICAgeworICAgICAgICBzdGQ6OmxvY2tfZ3VhcmQ8U3RhdGljTG9j
az4gbG9jayhXVEY6OnByZWZlcnJlZExhbmd1YWdlc011dGV4KTsKKyAgICAgICAgV1RGOjpwcmVm
ZXJyZWRMYW5ndWFnZXMoKS5jbGVhcigpOworICAgIH0KKyAgICAKKyAgICBpZiAoV1RGOjpjYWxs
YmFjaykKKyAgICAgICAgV1RGOjpjYWxsYmFjaygpOworfQorCitAZW5kCisKK25hbWVzcGFjZSBX
VEYgeworCitzdGF0aWMgU3RyaW5nIGh0dHBTdHlsZUxhbmd1YWdlQ29kZShOU1N0cmluZyAqbGFu
Z3VhZ2UsIE5TU3RyaW5nICpjb3VudHJ5KQoreworICAgIFNJbnQzMiBsYW5ndWFnZUNvZGU7Cisg
ICAgU0ludDMyIHJlZ2lvbkNvZGU7IAorICAgIFNJbnQzMiBzY3JpcHRDb2RlOyAKKyAgICBDRlN0
cmluZ0VuY29kaW5nIHN0cmluZ0VuY29kaW5nOworICAgIAorICAgIGJvb2wgbGFuZ3VhZ2VEaWRT
cGVjaWZ5RXhwbGljaXRWYXJpYW50ID0gW2xhbmd1YWdlIHJhbmdlT2ZDaGFyYWN0ZXJGcm9tU2V0
OltOU0NoYXJhY3RlclNldCBjaGFyYWN0ZXJTZXRXaXRoQ2hhcmFjdGVyc0luU3RyaW5nOkAiLV8i
XV0ubG9jYXRpb24gIT0gTlNOb3RGb3VuZDsKKworICAgIC8vIEZJWE1FOiBUaGlzIHRyYW5zZm9y
bWF0aW9uIGlzIHZlcnkgd3Jvbmc6CisgICAgLy8gMS4gVGhlcmUgaXMgbm8gcmVhc29uIHdoeSBD
RkJ1bmRsZSBsb2NhbGl6YXRpb24gbmFtZXMgd291bGQgYmUgYXQgYWxsIHJlbGF0ZWQgdG8gbGFu
Z3VhZ2UgbmFtZXMgYXMgdXNlZCBvbiB0aGUgV2ViLgorICAgIC8vIDIuIFNjcmlwdCBNYW5hZ2Vy
IGNvZGVzIGNhbm5vdCByZXByZXNlbnQgYWxsIGxhbmd1YWdlcyB0aGF0IGFyZSBub3cgc3VwcG9y
dGVkIGJ5IHRoZSBwbGF0Zm9ybSwgc28gdGhlIGNvbnZlcnNpb24gaXMgbG9zc3kuCisgICAgLy8g
My4gVGhpcyBzaG91bGQgcHJvYmFibHkgbWF0Y2ggd2hhdCBpcyBzZW50IGJ5IHRoZSBuZXR3b3Jr
IGxheWVyIGFzIEFjY2VwdC1MYW5ndWFnZSwgYnV0IGN1cnJlbnRseSwgdGhhdCdzIGltcGxlbWVu
dGVkIHNlcGFyYXRlbHkuCisgICAgQ0ZCdW5kbGVHZXRMb2NhbGl6YXRpb25JbmZvRm9yTG9jYWxp
emF0aW9uKChDRlN0cmluZ1JlZilsYW5ndWFnZSwgJmxhbmd1YWdlQ29kZSwgJnJlZ2lvbkNvZGUs
ICZzY3JpcHRDb2RlLCAmc3RyaW5nRW5jb2RpbmcpOworICAgIFJldGFpblB0cjxDRlN0cmluZ1Jl
Zj4gcHJlZmVycmVkTGFuZ3VhZ2VDb2RlID0gYWRvcHRDRihDRkJ1bmRsZUNvcHlMb2NhbGl6YXRp
b25Gb3JMb2NhbGl6YXRpb25JbmZvKGxhbmd1YWdlQ29kZSwgcmVnaW9uQ29kZSwgc2NyaXB0Q29k
ZSwgc3RyaW5nRW5jb2RpbmcpKTsKKyAgICBpZiAocHJlZmVycmVkTGFuZ3VhZ2VDb2RlKQorICAg
ICAgICBsYW5ndWFnZSA9IChOU1N0cmluZyAqKXByZWZlcnJlZExhbmd1YWdlQ29kZS5nZXQoKTsK
KworICAgIC8vIE1ha2UgdGhlIHN0cmluZyBsb3dlcmNhc2UuCisgICAgTlNTdHJpbmcgKmxvd2Vy
Y2FzZUxhbmd1YWdlQ29kZSA9IFtsYW5ndWFnZSBsb3dlcmNhc2VTdHJpbmddOworICAgIE5TU3Ry
aW5nICpsb3dlcmNhc2VDb3VudHJ5Q29kZSA9IFtjb3VudHJ5IGxvd2VyY2FzZVN0cmluZ107Cisg
ICAgCisgICAgLy8gSWYgd2Ugc2VlIGEgIl8iIGFmdGVyIGEgMi1sZXR0ZXIgbGFuZ3VhZ2UgY29k
ZToKKyAgICAvLyBJZiB0aGUgY291bnRyeSBpcyB2YWxpZCBhbmQgdGhlIGxhbmd1YWdlIGRpZCBu
b3Qgc3BlY2lmeSBhIHZhcmlhbnQsIHJlcGxhY2UgdGhlICJfIiBhbmQKKyAgICAvLyB3aGF0ZXZl
ciBjb21lcyBhZnRlciBpdCB3aXRoICItIiBmb2xsb3dlZCBieSB0aGUgY291bnRyeSBjb2RlLgor
ICAgIC8vIE90aGVyd2lzZSwgcmVwbGFjZSB0aGUgIl8iIHdpdGggYSAiLSIgYW5kIHVzZSB3aGF0
ZXZlciBjb3VudHJ5CisgICAgLy8gQ0ZCdW5kbGVDb3B5TG9jYWxpemF0aW9uRm9yTG9jYWxpemF0
aW9uSW5mbygpIHJldHVybmVkLgorICAgIGlmIChbbG93ZXJjYXNlTGFuZ3VhZ2VDb2RlIGxlbmd0
aF0gPj0gMyAmJiBbbG93ZXJjYXNlTGFuZ3VhZ2VDb2RlIGNoYXJhY3RlckF0SW5kZXg6Ml0gPT0g
J18nKSB7CisgICAgICAgIGlmIChjb3VudHJ5ICYmICFsYW5ndWFnZURpZFNwZWNpZnlFeHBsaWNp
dFZhcmlhbnQpCisgICAgICAgICAgICByZXR1cm4gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6
QCIlQC0lQCIsIFtsb3dlcmNhc2VMYW5ndWFnZUNvZGUgc3Vic3RyaW5nV2l0aFJhbmdlOk5TTWFr
ZVJhbmdlKDAsIDIpXSwgbG93ZXJjYXNlQ291bnRyeUNvZGVdOworICAgICAgICAKKyAgICAgICAg
Ly8gRmFsbCBiYWNrIHRvIG9sZGVyIGJlaGF2aW9yLCB3aGljaCB1c2VkIHRoZSBvcmlnaW5hbCBs
YW5ndWFnZS1iYXNlZCBjb2RlIGJ1dCBqdXN0IGNoYW5nZWQKKyAgICAgICAgLy8gdGhlICJfIiB0
byBhICItIi4KKyAgICAgICAgUmV0YWluUHRyPE5TTXV0YWJsZVN0cmluZz4gbXV0YWJsZUxhbmd1
YWdlQ29kZSA9IGFkb3B0TlMoW2xvd2VyY2FzZUxhbmd1YWdlQ29kZSBtdXRhYmxlQ29weV0pOwor
ICAgICAgICBbbXV0YWJsZUxhbmd1YWdlQ29kZS5nZXQoKSByZXBsYWNlQ2hhcmFjdGVyc0luUmFu
Z2U6TlNNYWtlUmFuZ2UoMiwgMSkgd2l0aFN0cmluZzpAIi0iXTsKKyAgICAgICAgcmV0dXJuIG11
dGFibGVMYW5ndWFnZUNvZGUuZ2V0KCk7CisgICAgfQorCisgICAgcmV0dXJuIGxvd2VyY2FzZUxh
bmd1YWdlQ29kZTsKK30KKworc3RhdGljIGJvb2wgaXNWYWxpZElDVUNvdW50cnlDb2RlKE5TU3Ry
aW5nKiBjb3VudHJ5Q29kZSkKK3sKKyAgICBpZiAoIWNvdW50cnlDb2RlKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgY29uc3QgY2hhciogY29uc3QqIGNvdW50cmllcyA9IHVsb2NfZ2V0SVNP
Q291bnRyaWVzKCk7CisgICAgY29uc3QgY2hhciogY291bnRyeVVURjggPSBbY291bnRyeUNvZGUg
VVRGOFN0cmluZ107CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgY291bnRyaWVzW2ldOyArK2kp
IHsKKyAgICAgICAgY29uc3QgY2hhciogcG9zc2libGVDb3VudHJ5ID0gY291bnRyaWVzW2ldOwor
ICAgICAgICBpZiAoIXN0cmNtcChjb3VudHJ5VVRGOCwgcG9zc2libGVDb3VudHJ5KSkKKyAgICAg
ICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK1ZlY3Rv
cjxTdHJpbmc+IHBsYXRmb3JtVXNlclByZWZlcnJlZExhbmd1YWdlcygpCit7CisjaWYgUExBVEZP
Uk0oTUFDKQorICAgIHN0YXRpYyBkaXNwYXRjaF9vbmNlX3Qgb25jZVRva2VuOworICAgIGRpc3Bh
dGNoX29uY2UoJm9uY2VUb2tlbiwgXnsKKyAgICAgICAgW1tOU0Rpc3RyaWJ1dGVkTm90aWZpY2F0
aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdIGFkZE9ic2VydmVyOltXVEZMYW5ndWFnZUNoYW5nZU9i
c2VydmVyIHNlbGZdIHNlbGVjdG9yOkBzZWxlY3RvcihsYW5ndWFnZVByZWZlcmVuY2VzRGlkQ2hh
bmdlOikgbmFtZTpAIkFwcGxlTGFuZ3VhZ2VQcmVmZXJlbmNlc0NoYW5nZWROb3RpZmljYXRpb24i
IG9iamVjdDpuaWxdOworICAgIH0pOworI2VuZGlmCisKKyAgICBCRUdJTl9CTE9DS19PQkpDX0VY
Q0VQVElPTlM7CisKKyAgICBzdGQ6OmxvY2tfZ3VhcmQ8U3RhdGljTG9jaz4gbG9jayhwcmVmZXJy
ZWRMYW5ndWFnZXNNdXRleCk7CisgICAgVmVjdG9yPFN0cmluZz4mIHVzZXJQcmVmZXJyZWRMYW5n
dWFnZXMgPSBwcmVmZXJyZWRMYW5ndWFnZXMoKTsKKworICAgIGlmICh1c2VyUHJlZmVycmVkTGFu
Z3VhZ2VzLmlzRW1wdHkoKSkgeworICAgICAgICBSZXRhaW5QdHI8Q0ZMb2NhbGVSZWY+IGxvY2Fs
ZSA9IGFkb3B0Q0YoQ0ZMb2NhbGVDb3B5Q3VycmVudCgpKTsKKyAgICAgICAgTlNTdHJpbmcgKmNv
dW50cnlDb2RlID0gKE5TU3RyaW5nICopQ0ZMb2NhbGVHZXRWYWx1ZShsb2NhbGUuZ2V0KCksIGtD
RkxvY2FsZUNvdW50cnlDb2RlKTsKKyAgICAgICAgCisgICAgICAgIGlmICghaXNWYWxpZElDVUNv
dW50cnlDb2RlKGNvdW50cnlDb2RlKSkKKyAgICAgICAgICAgIGNvdW50cnlDb2RlID0gbmlsOwor
ICAgICAgICAKKyAgICAgICAgUmV0YWluUHRyPENGQXJyYXlSZWY+IGxhbmd1YWdlcyA9IGFkb3B0
Q0YoQ0ZMb2NhbGVDb3B5UHJlZmVycmVkTGFuZ3VhZ2VzKCkpOworICAgICAgICBDRkluZGV4IGxh
bmd1YWdlQ291bnQgPSBDRkFycmF5R2V0Q291bnQobGFuZ3VhZ2VzLmdldCgpKTsKKyAgICAgICAg
aWYgKCFsYW5ndWFnZUNvdW50KQorICAgICAgICAgICAgdXNlclByZWZlcnJlZExhbmd1YWdlcy5h
cHBlbmQoImVuIik7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgZm9yIChDRkluZGV4IGkg
PSAwOyBpIDwgbGFuZ3VhZ2VDb3VudDsgaSsrKQorICAgICAgICAgICAgICAgIHVzZXJQcmVmZXJy
ZWRMYW5ndWFnZXMuYXBwZW5kKGh0dHBTdHlsZUxhbmd1YWdlQ29kZSgoTlNTdHJpbmcgKilDRkFy
cmF5R2V0VmFsdWVBdEluZGV4KGxhbmd1YWdlcy5nZXQoKSwgaSksIGNvdW50cnlDb2RlKSk7Cisg
ICAgICAgIH0KKyAgICB9CisKKyAgICBWZWN0b3I8U3RyaW5nPiB1c2VyUHJlZmVycmVkTGFuZ3Vh
Z2VzQ29weTsKKyAgICB1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzQ29weS5yZXNlcnZlSW5pdGlhbENh
cGFjaXR5KHVzZXJQcmVmZXJyZWRMYW5ndWFnZXMuc2l6ZSgpKTsKKworICAgIGZvciAoYXV0byYg
bGFuZ3VhZ2UgOiB1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzKQorICAgICAgICB1c2VyUHJlZmVycmVk
TGFuZ3VhZ2VzQ29weS51bmNoZWNrZWRBcHBlbmQobGFuZ3VhZ2UuaXNvbGF0ZWRDb3B5KCkpOwor
CisgICAgcmV0dXJuIHVzZXJQcmVmZXJyZWRMYW5ndWFnZXNDb3B5OworCisgICAgRU5EX0JMT0NL
X09CSkNfRVhDRVBUSU9OUzsKKworICAgIHJldHVybiBWZWN0b3I8U3RyaW5nPigpOworfQorCit9
IC8vIG5hbWVzcGFjZSBXVEYKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1BsYXRmb3JtVXNlclByZWZl
cnJlZExhbmd1YWdlc1VuaXguY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL1BsYXRm
b3JtVXNlclByZWZlcnJlZExhbmd1YWdlc1VuaXguY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNl
L1dURi93dGYvUGxhdGZvcm1Vc2VyUHJlZmVycmVkTGFuZ3VhZ2VzVW5peC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSw1MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNyBBbHAgVG9r
ZXIgPGFscEBhdG9rZXIuY29tPgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsg
eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRl
cm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJs
aXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9u
IDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24u
CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQg
d2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZl
biB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2
ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vu
c2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIu
ICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMu
LCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0x
MzAxLCBVU0EuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlBsYXRmb3Jt
VXNlclByZWZlcnJlZExhbmd1YWdlcy5oIgorCisjaW5jbHVkZSA8bG9jYWxlLmg+CisjaW5jbHVk
ZSA8d3RmL1ZlY3Rvci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1l
c3BhY2UgV1RGIHsKKwordm9pZCBzZXRQbGF0Zm9ybVVzZXJQcmVmZXJyZWRMYW5ndWFnZXNDaGFu
Z2VkQ2FsbGJhY2sodm9pZCAoKikoKSkgeyB9CisKKy8vIFVzaW5nIHBhbmdvX2xhbmd1YWdlX2dl
dF9kZWZhdWx0KCkgaGVyZSBpcyBub3QgYW4gb3B0aW9uLCBiZWNhdXNlCisvLyBpdCBkb2Vzbid0
IHN1cHBvcnQgY2hhbmdpbmcgdGhlIGxvY2FsZSBpbiBydW50aW1lLCBzbyBpdCByZXR1cm5zCisv
LyBhbHdheXMgdGhlIHNhbWUgdmFsdWUuCitzdGF0aWMgU3RyaW5nIHBsYXRmb3JtTGFuZ3VhZ2Uo
KQoreworICAgIFN0cmluZyBsb2NhbGVEZWZhdWx0KHNldGxvY2FsZShMQ19DVFlQRSwgbnVsbHB0
cikpOworICAgIGlmIChsb2NhbGVEZWZhdWx0LmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIFN0
cmluZygiYyIpOworCisgICAgU3RyaW5nIG5vcm1hbGl6ZWREZWZhdWx0ID0gbG9jYWxlRGVmYXVs
dC5jb252ZXJ0VG9BU0NJSUxvd2VyY2FzZSgpOworICAgIG5vcm1hbGl6ZWREZWZhdWx0LnJlcGxh
Y2UoJ18nLCAnLScpOworICAgIG5vcm1hbGl6ZWREZWZhdWx0LnRydW5jYXRlKG5vcm1hbGl6ZWRE
ZWZhdWx0LmZpbmQoJy4nKSk7CisgICAgcmV0dXJuIG5vcm1hbGl6ZWREZWZhdWx0OworfQorCitW
ZWN0b3I8U3RyaW5nPiBwbGF0Zm9ybVVzZXJQcmVmZXJyZWRMYW5ndWFnZXMoKQoreworICAgIHJl
dHVybiB7IHBsYXRmb3JtTGFuZ3VhZ2UoKSB9OworfQorCit9IC8vIG5hbWVzcGFjZSBXVEYKSW5k
ZXg6IFNvdXJjZS9XVEYvd3RmL1BsYXRmb3JtVXNlclByZWZlcnJlZExhbmd1YWdlc1dpbi5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvUGxhdGZvcm1Vc2VyUHJlZmVycmVkTGFuZ3Vh
Z2VzV2luLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XVEYvd3RmL1BsYXRmb3JtVXNlclBy
ZWZlcnJlZExhbmd1YWdlc1dpbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw3OSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAwNywgMjAxNiBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlBsYXRmb3JtVXNlclByZWZlcnJlZExhbmd1YWdl
cy5oIgorCisjaW5jbHVkZSA8d2luZG93cy5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNp
bmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdURiB7CisKK3ZvaWQg
c2V0UGxhdGZvcm1Vc2VyUHJlZmVycmVkTGFuZ3VhZ2VzQ2hhbmdlZENhbGxiYWNrKHZvaWQgKCop
KCkpIHsgfQorCitzdGF0aWMgU3RyaW5nIGxvY2FsZUluZm8oTENUWVBFIGxvY2FsZVR5cGUsIGNv
bnN0IFN0cmluZyYgZmFsbGJhY2spCit7CisgICAgTEFOR0lEIGxhbmdJRCA9IEdldFVzZXJEZWZh
dWx0VUlMYW5ndWFnZSgpOworICAgIGludCBsb2NhbGVDaGFycyA9IEdldExvY2FsZUluZm8obGFu
Z0lELCBsb2NhbGVUeXBlLCAwLCAwKTsKKyAgICBpZiAoIWxvY2FsZUNoYXJzKQorICAgICAgICBy
ZXR1cm4gZmFsbGJhY2s7CisgICAgVUNoYXIqIGxvY2FsZU5hbWVCdWY7CisgICAgU3RyaW5nIGxv
Y2FsZU5hbWUgPSBTdHJpbmc6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQobG9jYWxlQ2hhcnMsIGxvY2Fs
ZU5hbWVCdWYpOworICAgIGxvY2FsZUNoYXJzID0gR2V0TG9jYWxlSW5mbyhsYW5nSUQsIGxvY2Fs
ZVR5cGUsIGxvY2FsZU5hbWVCdWYsIGxvY2FsZUNoYXJzKTsKKyAgICBpZiAoIWxvY2FsZUNoYXJz
KQorICAgICAgICByZXR1cm4gZmFsbGJhY2s7CisgICAgaWYgKGxvY2FsZU5hbWUuaXNFbXB0eSgp
KQorICAgICAgICByZXR1cm4gZmFsbGJhY2s7CisKKyAgICBsb2NhbGVOYW1lLnRydW5jYXRlKGxv
Y2FsZU5hbWUubGVuZ3RoKCkgLSAxKTsKKyAgICByZXR1cm4gbG9jYWxlTmFtZTsKK30KKworc3Rh
dGljIFN0cmluZyBwbGF0Zm9ybUxhbmd1YWdlKCkKK3sKKyAgICBzdGF0aWMgU3RyaW5nIGNvbXB1
dGVkRGVmYXVsdExhbmd1YWdlOworICAgIGlmICghY29tcHV0ZWREZWZhdWx0TGFuZ3VhZ2UuaXNF
bXB0eSgpKQorICAgICAgICByZXR1cm4gY29tcHV0ZWREZWZhdWx0TGFuZ3VhZ2U7CisKKyAgICBT
dHJpbmcgbGFuZ3VhZ2VOYW1lID0gbG9jYWxlSW5mbyhMT0NBTEVfU0lTTzYzOUxBTkdOQU1FLCAi
ZW4iKTsKKyAgICBTdHJpbmcgY291bnRyeU5hbWUgPSBsb2NhbGVJbmZvKExPQ0FMRV9TSVNPMzE2
NkNUUllOQU1FLCBTdHJpbmcoKSk7CisKKyAgICBpZiAoY291bnRyeU5hbWUuaXNFbXB0eSgpKQor
ICAgICAgICBjb21wdXRlZERlZmF1bHRMYW5ndWFnZSA9IGxhbmd1YWdlTmFtZTsKKyAgICBlbHNl
CisgICAgICAgIGNvbXB1dGVkRGVmYXVsdExhbmd1YWdlID0gbGFuZ3VhZ2VOYW1lICsgJy0nICsg
Y291bnRyeU5hbWU7CisKKyAgICByZXR1cm4gY29tcHV0ZWREZWZhdWx0TGFuZ3VhZ2U7Cit9CisK
K1ZlY3RvcjxTdHJpbmc+IHBsYXRmb3JtVXNlclByZWZlcnJlZExhbmd1YWdlcygpCit7CisgICAg
VmVjdG9yPFN0cmluZz4gdXNlclByZWZlcnJlZExhbmd1YWdlczsKKyAgICB1c2VyUHJlZmVycmVk
TGFuZ3VhZ2VzLmFwcGVuZChwbGF0Zm9ybUxhbmd1YWdlKCkpOworICAgIHJldHVybiB1c2VyUHJl
ZmVycmVkTGFuZ3VhZ2VzOworfQorCit9IC8vIG5hbWVzcGFjZSBXVEYKSW5kZXg6IFNvdXJjZS9X
VEYvd3RmL1BsYXRmb3JtV2luLmNtYWtlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL1Bs
YXRmb3JtV2luLmNtYWtlCShyZXZpc2lvbiAyMDEwMjMpCisrKyBTb3VyY2UvV1RGL3d0Zi9QbGF0
Zm9ybVdpbi5jbWFrZQkod29ya2luZyBjb3B5KQpAQCAtMSw0ICsxLDYgQEAKIGxpc3QoQVBQRU5E
IFdURl9TT1VSQ0VTCisgICAgUExhdGZvcm1Vc2VyUHJlZmVycmVkTGFuZ3VhZ2VzV2luLmNwcAor
CiAgICAgdGV4dC9jZi9BdG9taWNTdHJpbmdJbXBsQ0YuY3BwCiAgICAgdGV4dC9jZi9TdHJpbmdD
Ri5jcHAKICAgICB0ZXh0L2NmL1N0cmluZ0ltcGxDRi5jcHAKSW5kZXg6IFNvdXJjZS9XVEYvd3Rm
L3NwaS9jZi9DRkJ1bmRsZVNQSS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL3NwaS9j
Zi9DRkJ1bmRsZVNQSS5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dURi93dGYvc3BpL2NmL0NG
QnVuZGxlU1BJLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0NCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxNSBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBDRkJ1bmRsZVNQSV9o
CisjZGVmaW5lIENGQnVuZGxlU1BJX2gKKworI2luY2x1ZGUgPENvcmVGb3VuZGF0aW9uL0NvcmVG
b3VuZGF0aW9uLmg+CisKKyNpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQorI2ltcG9ydCA8Q29y
ZUZvdW5kYXRpb24vQ0ZQcml2Lmg+CisjZWxzZQorI2luY2x1ZGUgPHd0Zi9zcGkvZGFyd2luL1hQ
Q1NQSS5oPgorI2VuZGlmCisKK2V4dGVybiAiQyIgewordm9pZCBfQ0ZCdW5kbGVTZXR1cFhQQ0Jv
b3RzdHJhcCh4cGNfb2JqZWN0X3QgYm9vdHN0cmFwKTsKKworQm9vbGVhbiBDRkJ1bmRsZUdldExv
Y2FsaXphdGlvbkluZm9Gb3JMb2NhbGl6YXRpb24oQ0ZTdHJpbmdSZWYgbG9jYWxpemF0aW9uTmFt
ZSwgU0ludDMyICpsYW5ndWFnZUNvZGUsIFNJbnQzMiAqcmVnaW9uQ29kZSwgU0ludDMyICpzY3Jp
cHRDb2RlLCBDRlN0cmluZ0VuY29kaW5nICpzdHJpbmdFbmNvZGluZyk7CitDRlN0cmluZ1JlZiBD
RkJ1bmRsZUNvcHlMb2NhbGl6YXRpb25Gb3JMb2NhbGl6YXRpb25JbmZvKFNJbnQzMiBsYW5ndWFn
ZUNvZGUsIFNJbnQzMiByZWdpb25Db2RlLCBTSW50MzIgc2NyaXB0Q29kZSwgQ0ZTdHJpbmdFbmNv
ZGluZyBzdHJpbmdFbmNvZGluZyk7Cit9CisKKyNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNp
b24gMjAxMDIzKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsODIgQEAKKzIwMTYtMDUtMTYgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNv
bT4KKworICAgICAgICBXVEYgc2hvdWxkIGtub3cgYWJvdXQgTGFuZ3VhZ2UKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1Nzc1NgorCisgICAgICAgIFJl
dmlld2VkIGJ5IEdlb2ZmcmV5IEdhcmVuLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBiZWNhdXNl
IHRoaXMgZG9lcyBub3QgY2hhbmdlIGJlaGF2aW9yLgorCisgICAgICAgIFRoaXMgY2hhbmdlIGlz
IGFsbCBhYm91dCBtb3Zpbmcgc29tZSBsYW5ndWFnZSBmdW5jdGlvbmFsaXR5IHRvIFdURi4gUXVv
dGluZyB0aGUgV1RGCisgICAgICAgIENoYW5nZUxvZywgdGhpcyBjb250YWlucyB0d28gY2hhbmdl
czoKKworICAgICAgICAtIE1vdmUgZXZlcnl0aGluZyB0aGF0IFdlYkNvcmUncyBsb2dpYyBmb3Ig
Z2V0dGluZyB0aGUgcGxhdGZvcm0gdXNlciBwcmVmZXJyZWQgbGFuZ3VhZ2UKKyAgICAgICAgICBk
ZXBlbmRlZCBvbiBpbnRvIFdURi4gVGhpcyBtZWFucyBDRkJ1bmRsZVNQSS5oIGFuZCBCbG9ja09i
akNFeGNlcHRpb25zLmh8Y3BwLgorCisgICAgICAgIC0gTW92ZSBXZWJDb3JlOjpwbGF0Zm9ybVVz
ZXJQcmVmZXJyZWRMYW5ndWFnZXMoKSB0byBXVEY6OnBsYXRmb3JtVXNlclByZWZlcnJlZExhbmd1
YWdlcygpLgorICAgICAgICAgIFRoaXMgaXMgbmVlZGVkIGJ5IGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNTc3NTUsIHdoaWNoIHdpbGwgbWFrZSBKU0MKKyAgICAgICAg
ICB1c2UgdGhpcyB0byBkZXRlY3QgdGhlIHBsYXRmb3JtIHVzZXIgcHJlZmVycmVkIGxhbmd1YWdl
IHdoZW4gcnVubmluZyBzdGFuZGFsb25lLgorCisgICAgICAgIFRoZSBjaGFuZ2VzIGluIFdlYkNv
cmUgYXJlIG1vc3RseSBhYm91dCByZXdpcmluZyAjaW5jbHVkZXMgYW5kICNpbXBvcnRzIGFuZCBy
ZW1vdmluZyB0aGUKKyAgICAgICAgY29kZSB0aGF0IHdlIG1vdmVkIHRvIFdURi4gQnV0IHRoZXJl
IGlzIG9uZSBsb2dpYyBjaGFuZ2U6IHByZXZpb3VzbHksCisgICAgICAgIHBsYXRmb3JtVXNlclBy
ZWZlcnJlZExhbmd1YWdlcygpIHdvdWxkIGNhbGwgV2ViQ29yZTo6bGFuZ3VhZ2VEaWRDaGFuZ2Uo
KS4gSXQgY2FuJ3QgZG8gdGhhdAorICAgICAgICBkaXJlY3RseSBhbnltb3JlLCBidXQgV1RGIGdp
dmVzIFdlYkNvcmUgc29tZSBBUEkgZm9yIHJlZ2lzdGVyaW5nIHRoZSBjYWxsYmFjay4gU28gaW4K
KyAgICAgICAgTGFuZ3VhZ2UuY3BwIHdlIG5vdyByZWdpc3RlciBsYW5ndWFnZURpZENoYW5nZSBh
bnl0aW1lIHdlIGRvIHNvbWV0aGluZyB0aGF0IHdvdWxkCisgICAgICAgIG5lY2Vzc2l0YXRlIGl0
LCBsaWtlIGNhbGxpbmcgcGxhdGZvcm1Vc2VyUHJlZmVycmVkTGFuZ3VhZ2VzKCkuIFRoaXMgYWxz
byByZWdpc3RlcnMgdGhlCisgICAgICAgIGNhbGxiYWNrIGluc2lkZSBhZGRMYW5ndWFnZUNoYW5n
ZU9ic2VydmVyKCksIHNpbmNlIGl0J3MgcG9zc2libGUgZm9yIHRoYXQgdG8gYmUgY2FsbGVkCisg
ICAgICAgIGFmdGVyIEpTQyBoYWQgY2FsbGVkIHBsYXRmb3JtVXNlclByZWZlcnJlZExhbmd1YWdl
cygpIGJ1dCBiZWZvcmUgV2ViQ29yZSBkb2VzIHNvLgorCisgICAgICAgICogUGxhdGZvcm1FZmwu
Y21ha2U6CisgICAgICAgICogUGxhdGZvcm1HVEsuY21ha2U6CisgICAgICAgICogUGxhdGZvcm1N
YWMuY21ha2U6CisgICAgICAgICogUGxhdGZvcm1XaW4uY21ha2U6CisgICAgICAgICogV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGJpbmRpbmdzL29iamMvRE9N
Q3VzdG9tWFBhdGhOU1Jlc29sdmVyLm1tOgorICAgICAgICAqIGVkaXRpbmcvaW9zL0VkaXRvcklP
Uy5tbToKKyAgICAgICAgKiBlZGl0aW5nL21hYy9EaWN0aW9uYXJ5TG9va3VwLm1tOgorICAgICAg
ICAqIGVkaXRpbmcvbWFjL0VkaXRvck1hYy5tbToKKyAgICAgICAgKiBwYWdlL0NhcHRpb25Vc2Vy
UHJlZmVyZW5jZXNNZWRpYUFGLmNwcDoKKyAgICAgICAgKiBwYWdlL2lvcy9FdmVudEhhbmRsZXJJ
T1MubW06CisgICAgICAgICogcGFnZS9pb3MvRnJhbWVJT1MubW06CisgICAgICAgICogcGFnZS9t
YWMvQ2hyb21lTWFjLm1tOgorICAgICAgICAqIHBhZ2UvbWFjL0V2ZW50SGFuZGxlck1hYy5tbToK
KyAgICAgICAgKiBwbGF0Zm9ybS9MYW5ndWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpyZWdp
c3Rlckxhbmd1YWdlRGlkQ2hhbmdlQ2FsbGJhY2tJZk5lY2Vzc2FyeSk6CisgICAgICAgIChXZWJD
b3JlOjpvYnNlcnZlck1hcCk6CisgICAgICAgIChXZWJDb3JlOjphZGRMYW5ndWFnZUNoYW5nZU9i
c2VydmVyKToKKyAgICAgICAgKFdlYkNvcmU6Om92ZXJyaWRlVXNlclByZWZlcnJlZExhbmd1YWdl
cyk6CisgICAgICAgIChXZWJDb3JlOjp1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9MYW5ndWFnZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL0NvbnRlbnRG
aWx0ZXJVbmJsb2NrSGFuZGxlckNvY29hLm1tOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL0luYmFuZFRleHRUcmFja1ByaXZhdGVBVkZPYmpDLm1tOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbk9iakMubW06CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMubW06CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxhdGZvcm1DQUZpbHRlcnNDb2NvYS5tbToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBTGF5ZXJDb2NvYS5t
bToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250Q29jb2EubW06CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0NvbG9yTWFjLm1tOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL21hYy9HcmFwaGljc0NvbnRleHQzRE1hYy5tbToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9tYWMvTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQubW06CisgICAgICAgICog
cGxhdGZvcm0vaW9zL1BsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJJT1MubW06CisgICAgICAgICog
cGxhdGZvcm0vaW9zL1Njcm9sbFZpZXdJT1MubW06CisgICAgICAgICogcGxhdGZvcm0vaW9zL1dp
ZGdldElPUy5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvQmxvY2tFeGNlcHRpb25zLmg6IFJl
bW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vbWFjL0Jsb2NrRXhjZXB0aW9ucy5tbTogUmVtb3Zl
ZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvQ3Vyc29yTWFjLm1tOgorICAgICAgICAqIHBsYXRm
b3JtL21hYy9MYW5ndWFnZS5tbTogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvU2Ny
b2xsQW5pbWF0b3JNYWMubW06CisgICAgICAgICogcGxhdGZvcm0vbWFjL1Njcm9sbFZpZXdNYWMu
bW06CisgICAgICAgICogcGxhdGZvcm0vbWFjL1Njcm9sbGJhclRoZW1lTWFjLm1tOgorICAgICAg
ICAqIHBsYXRmb3JtL21hYy9UaGVtZU1hYy5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvV2lk
Z2V0TWFjLm1tOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVlZpZGVvQ2Fw
dHVyZVNvdXJjZS5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9Db29raWVKYXJN
YWMubW06CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VFcnJvck1hYy5t
bToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZUhhbmRsZU1hYy5tbToK
KyAgICAgICAgKiBwbGF0Zm9ybS9zcGkvY2YvQ0ZCdW5kbGVTUEkuaDogUmVtb3ZlZC4KKyAgICAg
ICAgKiBwbGF0Zm9ybS91bml4L0xhbmd1YWdlVW5peC5jcHA6IFJlbW92ZWQuCisgICAgICAgICog
cGxhdGZvcm0vd2luL0xhbmd1YWdlV2luLmNwcDogUmVtb3ZlZC4KKwogMjAxNi0wNS0xNyAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFJlZ3Jlc3Npb24ocjE3Nzc4
Nik6IEdseXBoTWV0cmljc01hcDxUPjo6bG9jYXRlUGFnZVNsb3dDYXNlKCkgZmlsbHMgZXhpc3Rp
bmcgcGFnZXMgd2l0aCB1bmtub3duIG1ldHJpY3MKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1BsYXRm
b3JtRWZsLmNtYWtlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1BsYXRmb3JtRWZsLmNt
YWtlCShyZXZpc2lvbiAyMDEwMjMpCisrKyBTb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUVmbC5jbWFr
ZQkod29ya2luZyBjb3B5KQpAQCAtMjE4LDcgKzIxOCw2IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVf
U09VUkNFUwogCiAgICAgcGxhdGZvcm0vdGV4dC9oeXBoZW4vSHlwaGVuYXRpb25MaWJIeXBoZW4u
Y3BwCiAKLSAgICBwbGF0Zm9ybS91bml4L0xhbmd1YWdlVW5peC5jcHAKICAgICBwbGF0Zm9ybS91
bml4L0xvZ2dpbmdVbml4LmNwcAogCiAgICAgcmVuZGVyaW5nL1JlbmRlclRoZW1lRWZsLmNwcApJ
bmRleDogU291cmNlL1dlYkNvcmUvUGxhdGZvcm1HVEsuY21ha2UKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvUGxhdGZvcm1HVEsuY21ha2UJKHJldmlzaW9uIDIwMTAyMykKKysrIFNvdXJj
ZS9XZWJDb3JlL1BsYXRmb3JtR1RLLmNtYWtlCSh3b3JraW5nIGNvcHkpCkBAIC0xODMsNyArMTgz
LDYgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAKICAgICBwbGF0Zm9ybS90ZXh0L2h5
cGhlbi9IeXBoZW5hdGlvbkxpYkh5cGhlbi5jcHAKIAotICAgIHBsYXRmb3JtL3VuaXgvTGFuZ3Vh
Z2VVbml4LmNwcAogICAgIHBsYXRmb3JtL3VuaXgvTG9nZ2luZ1VuaXguY3BwCiApCiAKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCShyZXZpc2lvbiAyMDEwMjMpCisrKyBTb3VyY2UvV2Vi
Q29yZS9QbGF0Zm9ybU1hYy5jbWFrZQkod29ya2luZyBjb3B5KQpAQCAtNDYxLDcgKzQ2MSw2IEBA
IGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL2dyYXBoaWNzL29wZW50
eXBlL09wZW5UeXBlQ0cuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5
cGVNYXRoRGF0YS5jcHAKIAotICAgIHBsYXRmb3JtL21hYy9CbG9ja0V4Y2VwdGlvbnMubW0KICAg
ICBwbGF0Zm9ybS9tYWMvQ3Vyc29yTWFjLm1tCiAgICAgcGxhdGZvcm0vbWFjL0RyYWdEYXRhTWFj
Lm1tCiAgICAgcGxhdGZvcm0vbWFjL0RyYWdJbWFnZU1hYy5tbQpAQCAtNDcxLDcgKzQ3MCw2IEBA
IGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL21hYy9ISURHYW1lcGFk
UHJvdmlkZXIuY3BwCiAgICAgcGxhdGZvcm0vbWFjL0tleUV2ZW50TWFjLm1tCiAgICAgcGxhdGZv
cm0vbWFjL0tpbGxSaW5nTWFjLm1tCi0gICAgcGxhdGZvcm0vbWFjL0xhbmd1YWdlLm1tCiAgICAg
cGxhdGZvcm0vbWFjL0xvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dC5tbQogICAgIHBsYXRmb3Jt
L21hYy9Mb2dnaW5nTWFjLm1tCiAgICAgcGxhdGZvcm0vbWFjL05TU2Nyb2xsZXJJbXBEZXRhaWxz
Lm1tCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybVdpbi5jbWFrZQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybVdpbi5jbWFrZQkocmV2aXNpb24gMjAxMDIzKQorKysg
U291cmNlL1dlYkNvcmUvUGxhdGZvcm1XaW4uY21ha2UJKHdvcmtpbmcgY29weSkKQEAgLTEyMyw3
ICsxMjMsNiBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0Zm9ybS93aW4v
R0RJT2JqZWN0Q291bnRlci5jcHAKICAgICBwbGF0Zm9ybS93aW4vR0RJVXRpbGl0aWVzLmNwcAog
ICAgIHBsYXRmb3JtL3dpbi9LZXlFdmVudFdpbi5jcHAKLSAgICBwbGF0Zm9ybS93aW4vTGFuZ3Vh
Z2VXaW4uY3BwCiAgICAgcGxhdGZvcm0vd2luL0xvY2FsaXplZFN0cmluZ3NXaW4uY3BwCiAgICAg
cGxhdGZvcm0vd2luL0xvZ2dpbmdXaW4uY3BwCiAgICAgcGxhdGZvcm0vd2luL01lbW9yeVByZXNz
dXJlSGFuZGxlcldpbi5jcHAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDIwMTAyMykKKysrIFNvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAt
MzYzNSw3ICszNjM1LDYgQEAKIAkJOTM0RkU5RTUwQjVDQTUzOTAwM0U0QTczIC8qIEZpbGVDaG9v
c2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkz
NEZFOUU0MEI1Q0E1MzkwMDNFNEE3MyAvKiBGaWxlQ2hvb3Nlci5jcHAgKi87IH07CiAJCTkzNTAw
RjMyMTNGREUzQkUwMDk5RUMyNCAvKiBOU1Njcm9sbGVySW1wRGV0YWlscy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTM1MDBGMzExM0ZERTNCRTAwOTlF
QzI0IC8qIE5TU2Nyb2xsZXJJbXBEZXRhaWxzLmggKi87IH07CiAJCTkzNTIwN0JFMDlCRDQxMEEw
MEYyMDM4RCAvKiBMb2NhbGl6ZWRTdHJpbmdzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA5MzUyMDdCRDA5QkQ0MTBBMDBGMjAzOEQgLyogTG9jYWxpemVk
U3RyaW5ncy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
Ci0JCTkzNTIwODQ1MDlCRDQzQjkwMEYyMDM4RCAvKiBMYW5ndWFnZS5tbSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzNTIwODQ0MDlCRDQzQjkwMEYyMDM4
RCAvKiBMYW5ndWFnZS5tbSAqLzsgfTsKIAkJOTM1MzY3NkIwOUFFRDg4QjAwRDM1Q0Q2IC8qIFNj
cm9sbFZpZXdNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA5MzUzNjc2QTA5QUVEODhCMDBEMzVDRDYgLyogU2Nyb2xsVmlld01hYy5tbSAqLzsgfTsK
IAkJOTM1QzQ3NjMwOUFDNENFNjAwQTZBQUI0IC8qIE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3Vs
dHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzNUM0
NzYyMDlBQzRDRTYwMEE2QUFCNCAvKiBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzLmggKi87
IH07CiAJCTkzNUM0NzY4MDlBQzRENDMwMEE2QUFCNCAvKiBQbGF0Zm9ybUtleWJvYXJkRXZlbnQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzNUM0NzY2
MDlBQzRENDMwMEE2QUFCNCAvKiBQbGF0Zm9ybUtleWJvYXJkRXZlbnQuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMzczNSw3ICszNzM0LDYgQEAK
IAkJOTNGMTk5QTgwODI0NUU1OTAwMUU5QUJDIC8qIFdlYkNvcmVGcmFtZVZpZXcuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY1ODc4NTRDMDJERTM3NTkw
MUVBNDEyMiAvKiBXZWJDb3JlRnJhbWVWaWV3LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTNGMTk5QjgwODI0NUU1OTAwMUU5QUJDIC8qIFNjcm9s
bGJhci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM3
QjJBRjgwNDUwODI0MTAwQTgwMDBGIC8qIFNjcm9sbGJhci5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTkzRjE5OUJCMDgyNDVFNTkwMDFFOUFCQyAv
KiBXZWJDb3JlS2V5Ym9hcmRVSU1vZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEJFOTgzRDk1MDUyQTJFMEEwMDg5MkQ4NSAvKiBXZWJDb3JlS2V5Ym9h
cmRVSU1vZGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwotCQk5M0YxOTlCRTA4MjQ1RTU5MDAxRTlBQkMgLyogQmxvY2tFeGNlcHRpb25zLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NUE2NDBGMDA1MzNCQjFG
MDA4NUU3NzcgLyogQmxvY2tFeGNlcHRpb25zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTNGMTk5REUwODI0NUU1OTAwMUU5QUJDIC8qIFBvc2l0
aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCRTkx
RkM4QjA2MTMzNjY2MDA1RTM3OTAgLyogUG9zaXRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5M0YxOTlFNTA4MjQ1RTU5MDAxRTlBQkMgLyog
SFRNTENhbnZhc0VsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDUxRjZBM0Q2MDY2M0JGMDQwMDREMjkxOSAvKiBIVE1MQ2FudmFzRWxlbWVudC5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTkzRjE5
OUVDMDgyNDVFNTkwMDFFOUFCQyAvKiBYU0xTdHlsZVNoZWV0LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzA2RjI0QTA2RDE4QTdFMDA0QTZGQTMgLyog
WFNMU3R5bGVTaGVldC5oICovOyB9OwpAQCAtMzc0Nyw3ICszNzQ1LDYgQEAKIAkJOTNGMTlBOUQw
ODI0NUU1OTAwMUU5QUJDIC8qIFRleHRSZXNvdXJjZURlY29kZXIuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjUyM0QyNzgwMkRFNDNENzAxODYzNUNB
IC8qIFRleHRSZXNvdXJjZURlY29kZXIuY3BwICovOyB9OwogCQk5M0YxOUFCOTA4MjQ1RTU5MDAx
RTlBQkMgLyogUmFuZ2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRjUyM0QzMDMwMkRFNDQ3NjAxODYzNUNBIC8qIFJhbmdlLmNwcCAqLzsgfTsKIAkJ
OTNGMTlBRDUwODI0NUU1OTAwMUU5QUJDIC8qIFJlbmRlclRyZWVBc1RleHQuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTM5NTVBNDIwM0Q3MjkzMjAw
ODYzNUNFIC8qIFJlbmRlclRyZWVBc1RleHQuY3BwICovOyB9OwotCQk5M0YxOUFFMTA4MjQ1RTU5
MDAxRTlBQkMgLyogQmxvY2tFeGNlcHRpb25zLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNjVGODA2OTcwNTREOUY4NjAwOEJGNzc2IC8qIEJsb2NrRXhj
ZXB0aW9ucy5tbSAqLzsgfTsKIAkJOTNGMTlBRTYwODI0NUU1OTAwMUU5QUJDIC8qIFNTTEtleUdl
bmVyYXRvck1hYy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA4NEIyQjI0RjA1NkJGMTVGMDBEMkI3NzEgLyogU1NMS2V5R2VuZXJhdG9yTWFjLmNwcCAq
LzsgfTsKIAkJOTNGMTlBRjgwODI0NUU1OTAwMUU5QUJDIC8qIFBvc2l0aW9uLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJFOTFGQzhDMDYxMzM2NjYw
MDVFMzc5MCAvKiBQb3NpdGlvbi5jcHAgKi87IH07CiAJCTkzRjE5QUZEMDgyNDVFNTkwMDFFOUFC
QyAvKiBIVE1MQ2FudmFzRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1MUY2QTNENTA2NjNCRjA0MDA0RDI5MTkgLyogSFRNTENhbnZhc0Vs
ZW1lbnQuY3BwICovOyB9OwpAQCAtNjM2MCw3ICs2MzU3LDYgQEAKIAkJRTBGRUYzNzJCNDdDNTNF
QUMxQzFGQkVFIC8qIEpTRXZlbnRTb3VyY2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRTBGRUYzNzFCNDdDNTNFQUMxQzFGQkVFIC8qIEpTRXZlbnRT
b3VyY2UuY3BwICovOyB9OwogCQlFMTA3NDAwRDBFNzdCREMwMDAzM0FGMjQgLyogSlNNZXNzYWdl
Q2hhbm5lbC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBFMTA3NDAwQjBFNzdCREMwMDAzM0FGMjQgLyogSlNNZXNzYWdlQ2hhbm5lbC5jcHAgKi87IH07
CiAJCUUxMDc0MDBFMEU3N0JEQzAwMDMzQUYyNCAvKiBKU01lc3NhZ2VDaGFubmVsLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTA3NDAwQzBFNzdCREMw
MDAzM0FGMjQgLyogSlNNZXNzYWdlQ2hhbm5lbC5oICovOyB9OwotCQlFMTBBMzlFMjFBRTg0RTcx
MDBBMjlBRTMgLyogQ0ZCdW5kbGVTUEkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEUxMEEzOUUxMUFFODRFNzEwMEEyOUFFMyAvKiBDRkJ1bmRsZVNQSS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUxMEI5
MzdDMEI3M0MwMEEwMDNFRDg5MCAvKiBKU0N1c3RvbVhQYXRoTlNSZXNvbHZlci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTEwQjkzN0IwQjczQzAwQTAw
M0VEODkwIC8qIEpTQ3VzdG9tWFBhdGhOU1Jlc29sdmVyLmggKi87IH07CiAJCUUxMEI5M0MzMEI3
M0MyOTEwMDNFRDg5MCAvKiBKU0N1c3RvbVhQYXRoTlNSZXNvbHZlci5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTBCOTNDMjBCNzNDMjkxMDAzRUQ4
OTAgLyogSlNDdXN0b21YUGF0aE5TUmVzb2x2ZXIuY3BwICovOyB9OwogCQlFMTBCOUI2QzBCNzQ3
NTk5MDAzRUQ4OTAgLyogTmF0aXZlWFBhdGhOU1Jlc29sdmVyLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTBCOUI2QTBCNzQ3NTk5MDAzRUQ4OTAgLyog
TmF0aXZlWFBhdGhOU1Jlc29sdmVyLmggKi87IH07CkBAIC0xMDA5Niw3ICsxMDA5Miw2IEBACiAJ
CTY1QTIxNDY3MDk3QTMyOTEwMEI5MDUwQSAvKiBQYWdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBQYWdlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTY1QTIx
NDgyMDk3QTNGNTMwMEI5MDUwQSAvKiBGcmFtZVRyZWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEZyYW1lVHJlZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTY1QTIxNDgzMDk3QTNGNTMwMEI5MDUwQSAvKiBGcmFtZVRyZWUuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZyYW1lVHJlZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQk2NUE2NDBGMDA1MzNCQjFGMDA4NUU3NzcgLyogQmxvY2tFeGNlcHRpb25zLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdp
ZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJsb2Nr
RXhjZXB0aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNU
YWJzID0gMDsgfTsKIAkJNjVCRjAyMjkwOTc0ODE2MzAwQzQzMTk2IC8qIEZyYW1lLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGcmFtZS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTY1QkYwMjJBMDk3NDgxNjMwMEM0MzE5NiAvKiBGcmFtZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRnJhbWUuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNjVDOTdBRjIwOEVBOTA4ODAwQUNEMjczIC8qIGNvbmZpZy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBjb25maWcuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA0OyB1c2VzVGFicyA9IDA7IH07CkBA
IC0xMDEyOSw3ICsxMDEyNCw2IEBACiAJCTY1REYzMjM2MDlEMURFNjUwMDBCRTMyNSAvKiBKU0Nh
bnZhc1BhdHRlcm4uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTQ2FudmFz
UGF0dGVybi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2NURGMzIzNjA5RDFERTY1
MDAxQkUzMjUgLyogSlNDYW52YXNQcm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSlNDYW52YXNQcm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2NUUw
RTk0MzExMzNDODlGMDBCNENCMTAgLyogSlNET01XcmFwcGVyLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEpTRE9NV3JhcHBlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQk2NUY4MDY5NzA1NEQ5Rjg2MDA4QkY3NzYgLyogQmxvY2tFeGNlcHRpb25zLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQmxv
Y2tFeGNlcHRpb25zLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVz
ZXNUYWJzID0gMDsgfTsKIAkJNjVGRUE4NjgwOTgzM0FERTAwQkVENEFCIC8qIFBhZ2UuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBhZ2UuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk2OTcxMDEwNzFDNkJFMTU1MDAxOEM3RjEgLyogQWNjZXNzaWJp
bGl0eVNWR0VsZW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
QWNjZXNzaWJpbGl0eVNWR0VsZW1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk2OTcxMDEwODFDNkJFMTU1MDAxOEM3RjEgLyogQWNjZXNzaWJpbGl0eVNWR0VsZW1lbnQuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQWNjZXNzaWJpbGl0eVNWR0VsZW1lbnQu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTExMzAyLDcgKzExMjk2LDYgQEAKIAkJ
OTM0RkU5RTQwQjVDQTUzOTAwM0U0QTczIC8qIEZpbGVDaG9vc2VyLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZpbGVDaG9vc2VyLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJOTM1MDBGMzExM0ZERTNCRTAwOTlFQzI0IC8qIE5TU2Nyb2xsZXJJbXBE
ZXRhaWxzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5TU2Nyb2xsZXJJbXBE
ZXRhaWxzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzNTIwN0JEMDlCRDQxMEEw
MEYyMDM4RCAvKiBMb2NhbGl6ZWRTdHJpbmdzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IExvY2FsaXplZFN0cmluZ3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
OTM1MjA4NDQwOUJENDNCOTAwRjIwMzhEIC8qIExhbmd1YWdlLm1tICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAub2JqY3BwOyBwYXRoID0gTGFuZ3VhZ2UubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTkzNTM2NzZBMDlBRUQ4OEIwMEQzNUNENiAvKiBTY3JvbGxWaWV3TWFjLm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gU2Nyb2xsVmlld01hYy5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTM1QzQ3NjIwOUFDNENFNjAwQTZBQUI0IC8q
IE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk5MzVDNDc2NjA5QUM0RDQzMDBBNkFBQjQgLyogUGxhdGZvcm1LZXlib2Fy
ZEV2ZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBsYXRmb3JtS2V5Ym9h
cmRFdmVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTQ0MTIsNyArMTQ0MDUs
NiBAQAogCQlFMEZFRjM3MUI0N0M1M0VBQzFDMUZCRUUgLyogSlNFdmVudFNvdXJjZS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0V2ZW50U291cmNlLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTEwNzQwMEIwRTc3QkRDMDAwMzNBRjI0IC8qIEpT
TWVzc2FnZUNoYW5uZWwuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
SlNNZXNzYWdlQ2hhbm5lbC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxMDc0
MDBDMEU3N0JEQzAwMDMzQUYyNCAvKiBKU01lc3NhZ2VDaGFubmVsLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEpTTWVzc2FnZUNoYW5uZWwuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJRTEwQTM5RTExQUU4NEU3MTAwQTI5QUUzIC8qIENGQnVuZGxlU1BJLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENGQnVuZGxlU1BJLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUUxMEI5MzdCMEI3M0MwMEEwMDNFRDg5MCAvKiBKU0N1c3RvbVhQ
YXRoTlNSZXNvbHZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0N1c3Rv
bVhQYXRoTlNSZXNvbHZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMTBCOTND
MjBCNzNDMjkxMDAzRUQ4OTAgLyogSlNDdXN0b21YUGF0aE5TUmVzb2x2ZXIuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNDdXN0b21YUGF0aE5TUmVzb2x2ZXIuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMTBCOUI2QTBCNzQ3NTk5MDAzRUQ4OTAg
LyogTmF0aXZlWFBhdGhOU1Jlc29sdmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IE5hdGl2ZVhQYXRoTlNSZXNvbHZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtMTc1ODUsNyArMTc1NzcsNiBAQAogCQk2NTA4NkRBNjE5QUMxNzE5MDA5QUY0NkIgLyogY2Yg
Ki8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAotCQkJCUUxMEEzOUUx
MUFFODRFNzEwMEEyOUFFMyAvKiBDRkJ1bmRsZVNQSS5oICovLAogCQkJCTY1MDg2REE3MTlBQzE3
MTkwMDlBRjQ2QiAvKiBDRkxvY2FsZVNQSS5oICovLAogCQkJCUExMEQ3RkVCMUMyNjc2RDEwMEM2
QzExNSAvKiBDRk5ldHdvcmtDb25uZWN0aW9uQ2FjaGVTUEkuaCAqLywKIAkJCQlDRTEyNTI1QTFB
MUMwMTgyMDA4NjQ0ODAgLyogQ0ZOZXR3b3JrU1BJLmggKi8sCkBAIC0xNzg3MSw4ICsxNzg2Miw2
IEBACiAJCTY1ODJBMTQ4MDk5OTlENkMwMEJFRUI2RCAvKiBtYWMgKi8gPSB7CiAJCQlpc2EgPSBQ
QlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAotCQkJCTY1QTY0MEYwMDUzM0JCMUYwMDg1RTc3NyAv
KiBCbG9ja0V4Y2VwdGlvbnMuaCAqLywKLQkJCQk2NUY4MDY5NzA1NEQ5Rjg2MDA4QkY3NzYgLyog
QmxvY2tFeGNlcHRpb25zLm1tICovLAogCQkJCUY1ODc4NEYwMDJERTM3NTkwMUVBNDEyMiAvKiBD
dXJzb3JNYWMubW0gKi8sCiAJCQkJQTc5NTQ2M0QwQjVDNEM4MDAwN0I0MzhGIC8qIERyYWdEYXRh
TWFjLm1tICovLAogCQkJCUE3Q0ZCM0Q0MEI3RUQxMTgwMDcwQzMyRCAvKiBEcmFnSW1hZ2VNYWMu
bW0gKi8sCkBAIC0xNzg4NSw3ICsxNzg3NCw2IEBACiAJCQkJNTE3OUNFMzUxOTVDQUM3RTAwMTlD
MTk4IC8qIEhJREdhbWVwYWRQcm92aWRlci5oICovLAogCQkJCTkzNUM0NzZFMDlBQzRENzMwMEE2
QUFCNCAvKiBLZXlFdmVudE1hYy5tbSAqLywKIAkJCQk1MjFENDZGNTExQUVDOTgxMDA1MTQ2MTMg
LyogS2lsbFJpbmdNYWMubW0gKi8sCi0JCQkJOTM1MjA4NDQwOUJENDNCOTAwRjIwMzhEIC8qIExh
bmd1YWdlLm1tICovLAogCQkJCTA2RTgxRUQ2MEFCNUQ1RTkwMEM4NzgzNyAvKiBMb2NhbEN1cnJl
bnRHcmFwaGljc0NvbnRleHQuaCAqLywKIAkJCQkwNkU4MUVFQjBBQjVEQTk3MDBDODc4MzcgLyog
TG9jYWxDdXJyZW50R3JhcGhpY3NDb250ZXh0Lm1tICovLAogCQkJCTE0MDI2NDVEMEFGREMxOUIw
MDU5MTlFMiAvKiBMb2dnaW5nTWFjLm1tICovLApAQCAtMjUyMjMsNyArMjUyMTEsNiBAQAogCQkJ
CTJFREVGMUY3MTIxQjBFRkMwMDcyNkRCMiAvKiBCbG9iUmVnaXN0cnlJbXBsLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkyRUI0QkNEMzEyMUYwM0UzMDBFQzQ4ODUgLyogQmxvYlJlc291cmNlSGFuZGxl
LmggaW4gSGVhZGVycyAqLywKIAkJCQk5NzZENkM3RjEyMkI4QTNEMDAxRkQxRjcgLyogQmxvYlVS
TC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJOTNGMTk5QkUwODI0NUU1OTAwMUU5QUJDIC8qIEJsb2Nr
RXhjZXB0aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM1RUI1RTEwRTgxQkU4NzAwQjI1OTY1
IC8qIEJvcmRlckRhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCTU4OTU1NkVEMThENEE0NDAwMDc2
NEIwMyAvKiBCb3JkZXJFZGdlLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzVFQjVEQjBFODFCN0VB
MDBCMjU5NjUgLyogQm9yZGVyVmFsdWUuaCBpbiBIZWFkZXJzICovLApAQCAtMjUyOTAsNyArMjUy
NzcsNiBAQAogCQkJCUNERThCNUYxMUE2OTc3OEIwMEI0QjY2QSAvKiBDRE1TZXNzaW9uQ2xlYXJL
ZXkuaCBpbiBIZWFkZXJzICovLAogCQkJCUNERTU5NTk3MUJGMjZFMjEwMEExQ0JFOCAvKiBDRE1T
ZXNzaW9uTWVkaWFTb3VyY2VBVkZPYmpDLmggaW4gSGVhZGVycyAqLywKIAkJCQk1RkE5MDRDQTE3
OEU2MUY1MDA0QzhBMkQgLyogQ2VydGlmaWNhdGVJbmZvLmggaW4gSGVhZGVycyAqLywKLQkJCQlF
MTBBMzlFMjFBRTg0RTcxMDBBMjlBRTMgLyogQ0ZCdW5kbGVTUEkuaCBpbiBIZWFkZXJzICovLAog
CQkJCUExMEQ3RkVDMUMyNjc2RDEwMEM2QzExNSAvKiBDRk5ldHdvcmtDb25uZWN0aW9uQ2FjaGVT
UEkuaCBpbiBIZWFkZXJzICovLAogCQkJCUNFMTI1MjVCMUExQzAxODIwMDg2NDQ4MCAvKiBDRk5l
dHdvcmtTUEkuaCBpbiBIZWFkZXJzICovLAogCQkJCUUxQThFNTY3MTc1NTJCMkEwMDc0ODhFNyAv
KiBDRlVSTEV4dHJhcy5oIGluIEhlYWRlcnMgKi8sCkBAIC0yOTE4OSw3ICsyOTE3NSw2IEBACiAJ
CQkJMkVERUYxRjYxMjFCMEVGQzAwNzI2REIyIC8qIEJsb2JSZWdpc3RyeUltcGwuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMkVCNEJDRDIxMjFGMDNFMzAwRUM0ODg1IC8qIEJsb2JSZXNvdXJjZUhh
bmRsZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5NzZENkM3RTEyMkI4QTNEMDAxRkQxRjcgLyog
QmxvYlVSTC5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk5M0YxOUFFMTA4MjQ1RTU5MDAxRTlBQkMg
LyogQmxvY2tFeGNlcHRpb25zLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNThBRUUyRjQxOEQ0QkND
RjAwMjJFN0ZFIC8qIEJvcmRlckVkZ2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNkVEOEMzNzkx
ODNCRkY4QzAwOUU1M0JEIC8qIEJveFNoYXBlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDRUE0
ODU0MDk3RDkzMDIwMDk0QzlFNCAvKiBicmVha19saW5lcy5jcHAgaW4gU291cmNlcyAqLywKQEAg
LTMwOTI2LDcgKzMwOTExLDYgQEAKIAkJCQk0NTBDRUJGMDE1MDczQkJFMDAyQkIxNDkgLyogTGFi
ZWxhYmxlRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNDU2RkEyNjExQUQ0QTgzMDAy
MEI0MjAgLyogTGFiZWxzTm9kZUxpc3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTE4NzcyRjEx
MjZFMjYyOTAwM0RENTg2IC8qIExhbmd1YWdlLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTkzNTIw
ODQ1MDlCRDQzQjkwMEYyMDM4RCAvKiBMYW5ndWFnZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTI5
MTdCNTYxMTQ3MzQ5NkMwMDUyQzlEMCAvKiBMYXllckZsdXNoU2NoZWR1bGVyLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTI5MTdCNTY2MTQ3MzQ5OTUwMDUyQzlEMCAvKiBMYXllckZsdXNoU2NoZWR1
bGVyTWFjLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdBQTNBNjlGMTk0QjU5QjYwMDFDQkQyNCAv
KiBMYXllclBvb2wuY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9vYmpjL0RPTUN1c3RvbVhQYXRoTlNSZXNvbHZlci5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTUN1c3RvbVhQYXRoTlNSZXNvbHZlci5tbQkocmV2
aXNpb24gMjAxMDIzKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01DdXN0b21Y
UGF0aE5TUmVzb2x2ZXIubW0JKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAKICNpbmNs
dWRlICJjb25maWcuaCIKICNpbmNsdWRlICJET01DdXN0b21YUGF0aE5TUmVzb2x2ZXIuaCIKIAot
I2luY2x1ZGUgIkJsb2NrRXhjZXB0aW9ucy5oIgorI2luY2x1ZGUgPHd0Zi9CbG9ja09iakNFeGNl
cHRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaW9zL0VkaXRvcklPUy5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2lvcy9FZGl0b3JJT1MubW0JKHJl
dmlzaW9uIDIwMTAyMykKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaW9zL0VkaXRvcklPUy5t
bQkod29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYsNiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgog
I2luY2x1ZGUgIkVkaXRvci5oIgogCi0jaW5jbHVkZSAiQmxvY2tFeGNlcHRpb25zLmgiCiAjaW5j
bHVkZSAiQ2FjaGVkSW1hZ2UuaCIKICNpbmNsdWRlICJDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRp
b24uaCIKICNpbmNsdWRlICJDU1NQcmltaXRpdmVWYWx1ZU1hcHBpbmdzLmgiCkBAIC01OCw2ICs1
Nyw3IEBACiAjaW5jbHVkZSAiV0FLQXBwS2l0U3R1YnMuaCIKICNpbmNsdWRlICJodG1sZWRpdGlu
Zy5oIgogI2luY2x1ZGUgIm1hcmt1cC5oIgorI2luY2x1ZGUgPHd0Zi9CbG9ja09iakNFeGNlcHRp
b25zLmg+CiAKIFNPRlRfTElOS19GUkFNRVdPUksoQXBwU3VwcG9ydCkKIFNPRlRfTElOSyhBcHBT
dXBwb3J0LCBDUFNoYXJlZFJlc291cmNlc0RpcmVjdG9yeSwgQ0ZTdHJpbmdSZWYsICh2b2lkKSwg
KCkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9EaWN0aW9uYXJ5TG9va3VwLm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0RpY3Rpb25hcnlMb29r
dXAubW0JKHJldmlzaW9uIDIwMTAyMykKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0Rp
Y3Rpb25hcnlMb29rdXAubW0JKHdvcmtpbmcgY29weSkKQEAgLTI4LDcgKzI4LDYgQEAKIAogI2lm
IFBMQVRGT1JNKE1BQykKIAotI2ltcG9ydCAiQmxvY2tFeGNlcHRpb25zLmgiCiAjaW1wb3J0ICJE
b2N1bWVudC5oIgogI2ltcG9ydCAiRm9jdXNDb250cm9sbGVyLmgiCiAjaW1wb3J0ICJGcmFtZS5o
IgpAQCAtNDcsNiArNDYsNyBAQAogI2ltcG9ydCAiV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oIgog
I2ltcG9ydCAiaHRtbGVkaXRpbmcuaCIKICNpbXBvcnQgPFBERktpdC9QREZLaXQuaD4KKyNpbXBv
cnQgPHd0Zi9CbG9ja09iakNFeGNlcHRpb25zLmg+CiAjaW1wb3J0IDx3dGYvUmVmUHRyLmg+CiAK
IFNPRlRfTElOS19DT05TVEFOVF9NQVlfRkFJTChMb29rdXAsIExVVGVybU9wdGlvbkRpc2FibGVT
ZWFyY2hUZXJtSW5kaWNhdG9yLCBOU1N0cmluZyAqKQpJbmRleDogU291cmNlL1dlYkNvcmUvZWRp
dGluZy9tYWMvRWRpdG9yTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvbWFjL0VkaXRvck1hYy5tbQkocmV2aXNpb24gMjAxMDIzKQorKysgU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw2IEBA
CiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIkVkaXRvci5oIgogCi0jaW1wb3J0ICJCbG9j
a0V4Y2VwdGlvbnMuaCIKICNpbXBvcnQgIkNTU1ByaW1pdGl2ZVZhbHVlTWFwcGluZ3MuaCIKICNp
bXBvcnQgIkNTU1ZhbHVlUG9vbC5oIgogI2ltcG9ydCAiQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaCIK
QEAgLTY1LDYgKzY0LDcgQEAKICNpbXBvcnQgIldlYk5TQXR0cmlidXRlZFN0cmluZ0V4dHJhcy5o
IgogI2ltcG9ydCAiaHRtbGVkaXRpbmcuaCIKICNpbXBvcnQgIm1hcmt1cC5oIgorI2ltcG9ydCA8
d3RmL0Jsb2NrT2JqQ0V4Y2VwdGlvbnMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXNN
ZWRpYUFGLmNwcAkocmV2aXNpb24gMjAxMDIzKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9DYXB0
aW9uVXNlclByZWZlcmVuY2VzTWVkaWFBRi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQyLDYgKzQy
LDcgQEAKICNpbmNsdWRlICJVc2VyU3R5bGVTaGVldFR5cGVzLmgiCiAjaW5jbHVkZSAiVlRUQ3Vl
LmgiCiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisjaW5jbHVkZSA8d3RmL1BsYXRm
b3JtVXNlclByZWZlcnJlZExhbmd1YWdlcy5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4K
ICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5n
QnVpbGRlci5oPgpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9pb3MvRXZlbnRIYW5kbGVySU9T
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvaW9zL0V2ZW50SGFuZGxlcklP
Uy5tbQkocmV2aXNpb24gMjAxMDIzKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9pb3MvRXZlbnRI
YW5kbGVySU9TLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw3ICsyNyw2IEBACiAjaW1wb3J0ICJF
dmVudEhhbmRsZXIuaCIKIAogI2ltcG9ydCAiQVhPYmplY3RDYWNoZS5oIgotI2ltcG9ydCAiQmxv
Y2tFeGNlcHRpb25zLmgiCiAjaW1wb3J0ICJDaHJvbWUuaCIKICNpbXBvcnQgIkNocm9tZUNsaWVu
dC5oIgogI2ltcG9ydCAiRm9jdXNDb250cm9sbGVyLmgiCkBAIC00Miw2ICs0MSw3IEBACiAjaW1w
b3J0ICJXQUtWaWV3LmgiCiAjaW1wb3J0ICJXQUtXaW5kb3cuaCIKICNpbXBvcnQgIldlYkV2ZW50
LmgiCisjaW1wb3J0IDx3dGYvQmxvY2tPYmpDRXhjZXB0aW9ucy5oPgogI2ltcG9ydCA8d3RmL05l
dmVyRGVzdHJveWVkLmg+CiAjaW1wb3J0IDx3dGYvTm9uY29weWFibGUuaD4KIApJbmRleDogU291
cmNlL1dlYkNvcmUvcGFnZS9pb3MvRnJhbWVJT1MubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGFnZS9pb3MvRnJhbWVJT1MubW0JKHJldmlzaW9uIDIwMTAyMykKKysrIFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvaW9zL0ZyYW1lSU9TLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw3ICsyOCw2
IEBACiAjaWYgUExBVEZPUk0oSU9TKQogCiAjaW1wb3J0ICJBbmltYXRpb25Db250cm9sbGVyLmgi
Ci0jaW1wb3J0ICJCbG9ja0V4Y2VwdGlvbnMuaCIKICNpbXBvcnQgIkRPTUNTU1N0eWxlRGVjbGFy
YXRpb25JbnRlcm5hbC5oIgogI2ltcG9ydCAiRE9NQ29yZS5oIgogI2ltcG9ydCAiRE9NSW50ZXJu
YWwuaCIKQEAgLTcwLDYgKzY5LDcgQEAKICNpbXBvcnQgIldBS1dpbmRvdy5oIgogI2ltcG9ydCAi
V2ViQ29yZVN5c3RlbUludGVyZmFjZS5oIgogI2ltcG9ydCA8cnVudGltZS9KU0xvY2suaD4KKyNp
bXBvcnQgPHd0Zi9CbG9ja09iakNFeGNlcHRpb25zLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOjpIVE1MTmFtZXM7CiB1c2luZyBuYW1lc3BhY2UgV1RGOjpVbmljb2RlOwpJbmRleDogU291
cmNlL1dlYkNvcmUvcGFnZS9tYWMvQ2hyb21lTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvbWFjL0Nocm9tZU1hYy5tbQkocmV2aXNpb24gMjAxMDIzKQorKysgU291cmNl
L1dlYkNvcmUvcGFnZS9tYWMvQ2hyb21lTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yMCw4ICsy
MCw4IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIkNocm9tZS5oIgogCi0jaW1wb3J0
ICJCbG9ja0V4Y2VwdGlvbnMuaCIKICNpbXBvcnQgIkNocm9tZUNsaWVudC5oIgorI2ltcG9ydCA8
d3RmL0Jsb2NrT2JqQ0V4Y2VwdGlvbnMuaD4KIAogI2lmIFBMQVRGT1JNKElPUykKICNpbmNsdWRl
ICJXQUtSZXNwb25kZXIuaCIKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0V2ZW50SGFu
ZGxlck1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9FdmVudEhh
bmRsZXJNYWMubW0JKHJldmlzaW9uIDIwMTAyMykKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvbWFj
L0V2ZW50SGFuZGxlck1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjcsNyArMjcsNiBAQAogI2lu
Y2x1ZGUgIkV2ZW50SGFuZGxlci5oIgogCiAjaW5jbHVkZSAiQVhPYmplY3RDYWNoZS5oIgotI2lu
Y2x1ZGUgIkJsb2NrRXhjZXB0aW9ucy5oIgogI2luY2x1ZGUgIkNocm9tZS5oIgogI2luY2x1ZGUg
IkNocm9tZUNsaWVudC5oIgogI2luY2x1ZGUgIkRhdGFUcmFuc2Zlci5oIgpAQCAtNjEsNiArNjAs
NyBAQAogI2luY2x1ZGUgIlNoYWRvd1Jvb3QuaCIKICNpbmNsdWRlICJXZWJDb3JlU3lzdGVtSW50
ZXJmYWNlLmgiCiAjaW5jbHVkZSAiV2hlZWxFdmVudFRlc3RUcmlnZ2VyLmgiCisjaW5jbHVkZSA8
d3RmL0Jsb2NrT2JqQ0V4Y2VwdGlvbnMuaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgog
I2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi9PYmpjUnVudGlt
ZUV4dHJhcy5oPgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGFuZ3VhZ2UuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xhbmd1YWdlLmNwcAkocmV2aXNp
b24gMjAxMDIzKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGFuZ3VhZ2UuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCwgMjAx
MyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAs
IDIwMTMsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbmNsdWRlIDx3dGYvSGFz
aE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorI2luY2x1ZGUgPHd0Zi9Q
bGF0Zm9ybVVzZXJQcmVmZXJyZWRMYW5ndWFnZXMuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRy
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKQEAgLTM3LDYgKzM4LDE2IEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorc3RhdGljIHZvaWQgcmVnaXN0ZXJMYW5ndWFnZURp
ZENoYW5nZUNhbGxiYWNrSWZOZWNlc3NhcnkoKQoreworICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxh
ZyBvbmNlOworICAgIHN0ZDo6Y2FsbF9vbmNlKAorICAgICAgICBvbmNlLAorICAgICAgICBbXSB7
CisgICAgICAgICAgICBzZXRQbGF0Zm9ybVVzZXJQcmVmZXJyZWRMYW5ndWFnZXNDaGFuZ2VkQ2Fs
bGJhY2sobGFuZ3VhZ2VEaWRDaGFuZ2UpOworICAgICAgICB9KTsKK30KKwogdHlwZWRlZiBIYXNo
TWFwPHZvaWQqLCBMYW5ndWFnZUNoYW5nZU9ic2VydmVyRnVuY3Rpb24+IE9ic2VydmVyTWFwOwog
c3RhdGljIE9ic2VydmVyTWFwJiBvYnNlcnZlck1hcCgpCiB7CkBAIC00Niw2ICs1Nyw3IEBAIHN0
YXRpYyBPYnNlcnZlck1hcCYgb2JzZXJ2ZXJNYXAoKQogCiB2b2lkIGFkZExhbmd1YWdlQ2hhbmdl
T2JzZXJ2ZXIodm9pZCogY29udGV4dCwgTGFuZ3VhZ2VDaGFuZ2VPYnNlcnZlckZ1bmN0aW9uIGN1
c3RvbU9ic2VydmVyKQogeworICAgIHJlZ2lzdGVyTGFuZ3VhZ2VEaWRDaGFuZ2VDYWxsYmFja0lm
TmVjZXNzYXJ5KCk7CiAgICAgb2JzZXJ2ZXJNYXAoKS5zZXQoY29udGV4dCwgY3VzdG9tT2JzZXJ2
ZXIpOwogfQogCkBAIC04NywxMyArOTksMTQgQEAgdm9pZCBvdmVycmlkZVVzZXJQcmVmZXJyZWRM
YW5ndWFnZXMoY29ucwogICAgIHByZWZlcnJlZExhbmd1YWdlc092ZXJyaWRlKCkgPSBvdmVycmlk
ZTsKICAgICBsYW5ndWFnZURpZENoYW5nZSgpOwogfQotICAgIAorCiBWZWN0b3I8U3RyaW5nPiB1
c2VyUHJlZmVycmVkTGFuZ3VhZ2VzKCkKIHsKICAgICBWZWN0b3I8U3RyaW5nPiYgb3ZlcnJpZGUg
PSBwcmVmZXJyZWRMYW5ndWFnZXNPdmVycmlkZSgpOwogICAgIGlmICghb3ZlcnJpZGUuaXNFbXB0
eSgpKQogICAgICAgICByZXR1cm4gb3ZlcnJpZGU7CiAgICAgCisgICAgcmVnaXN0ZXJMYW5ndWFn
ZURpZENoYW5nZUNhbGxiYWNrSWZOZWNlc3NhcnkoKTsKICAgICByZXR1cm4gcGxhdGZvcm1Vc2Vy
UHJlZmVycmVkTGFuZ3VhZ2VzKCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L0xhbmd1YWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGFuZ3Vh
Z2UuaAkocmV2aXNpb24gMjAxMDIzKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGFuZ3Vh
Z2UuaAkod29ya2luZyBjb3B5KQpAQCAtNDIsOCArNDIsNiBAQCB0eXBlZGVmIHZvaWQgKCpMYW5n
dWFnZUNoYW5nZU9ic2VydmVyRnVuCiBXRUJDT1JFX0VYUE9SVCB2b2lkIGFkZExhbmd1YWdlQ2hh
bmdlT2JzZXJ2ZXIodm9pZCogY29udGV4dCwgTGFuZ3VhZ2VDaGFuZ2VPYnNlcnZlckZ1bmN0aW9u
KTsKIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVtb3ZlTGFuZ3VhZ2VDaGFuZ2VPYnNlcnZlcih2b2lk
KiBjb250ZXh0KTsKIAotVmVjdG9yPFN0cmluZz4gcGxhdGZvcm1Vc2VyUHJlZmVycmVkTGFuZ3Vh
Z2VzKCk7Ci0KIFN0cmluZyBkaXNwbGF5TmFtZUZvckxhbmd1YWdlTG9jYWxlKGNvbnN0IFN0cmlu
ZyYpOwogCiAvLyBDYWxsZWQgZnJvbSBwbGF0Zm9ybSBzcGVjaWZpYyBjb2RlIHdoZW4gdGhlIHVz
ZXIncyBwcmVmZXJyZWQgbGFuZ3VhZ2UocykgY2hhbmdlLgpJbmRleDogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vY29jb2EvQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyQ29jb2EubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvQ29udGVudEZpbHRlclVuYmxv
Y2tIYW5kbGVyQ29jb2EubW0JKHJldmlzaW9uIDIwMTAyMykKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2NvY29hL0NvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlckNvY29hLm1tCSh3b3JraW5n
IGNvcHkpCkBAIC0yOCwxMCArMjgsMTAgQEAKIAogI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklO
RykKIAotI2ltcG9ydCAiQmxvY2tFeGNlcHRpb25zLmgiCiAjaW1wb3J0ICJDb250ZW50RmlsdGVy
LmgiCiAjaW1wb3J0ICJMb2dnaW5nLmgiCiAjaW1wb3J0ICJSZXNvdXJjZVJlcXVlc3QuaCIKKyNp
bXBvcnQgPHd0Zi9CbG9ja09iakNFeGNlcHRpb25zLmg+CiAKICNpZiAhTE9HX0RJU0FCTEVECiAj
aW1wb3J0IDx3dGYvdGV4dC9DU3RyaW5nLmg+CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGT2Jq
Qy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGT2JqQy5tbQkocmV2aXNpb24g
MjAxMDIzKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRk9iakMubW0JKHdvcmtpbmcgY29weSkKQEAg
LTI5LDcgKzI5LDYgQEAKIAogI2ltcG9ydCAiSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRk9iakMu
aCIKIAotI2ltcG9ydCAiQmxvY2tFeGNlcHRpb25zLmgiCiAjaW1wb3J0ICJGbG9hdENvbnZlcnNp
b24uaCIKICNpbXBvcnQgIkluYmFuZFRleHRUcmFja1ByaXZhdGUuaCIKICNpbXBvcnQgIkluYmFu
ZFRleHRUcmFja1ByaXZhdGVBVkYuaCIKQEAgLTM3LDYgKzM2LDcgQEAKICNpbXBvcnQgIlNvZnRM
aW5raW5nLmgiCiAjaW1wb3J0IDxBVkZvdW5kYXRpb24vQVZGb3VuZGF0aW9uLmg+CiAjaW1wb3J0
IDxvYmpjL3J1bnRpbWUuaD4KKyNpbXBvcnQgPHd0Zi9CbG9ja09iakNFeGNlcHRpb25zLmg+CiAK
IFNPRlRfTElOS19GUkFNRVdPUktfT1BUSU9OQUwoQVZGb3VuZGF0aW9uKQogCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbk9iakMubW0JKHJldmlzaW9uIDIwMTAyMykKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbk9iakMubW0JKHdvcmtpbmcgY29weSkKQEAgLTMzLDcgKzMzLDYgQEAKICNpbXBvcnQg
IkF1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDLmgiCiAjaW1wb3J0ICJBdWRpb1RyYWNrUHJpdmF0
ZUFWRk9iakMuaCIKICNpbXBvcnQgIkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmgiCi0jaW1wb3J0
ICJCbG9ja0V4Y2VwdGlvbnMuaCIKICNpbXBvcnQgIkNETVNlc3Npb25BVkZvdW5kYXRpb25PYmpD
LmgiCiAjaW1wb3J0ICJDb29raWUuaCIKICNpbXBvcnQgIkV4Y2VwdGlvbkNvZGVQbGFjZWhvbGRl
ci5oIgpAQCAtNzgsNiArNzcsNyBAQAogI2ltcG9ydCA8cnVudGltZS9VaW50MTZBcnJheS5oPgog
I2ltcG9ydCA8cnVudGltZS9VaW50MzJBcnJheS5oPgogI2ltcG9ydCA8cnVudGltZS9VaW50OEFy
cmF5Lmg+CisjaW1wb3J0IDx3dGYvQmxvY2tPYmpDRXhjZXB0aW9ucy5oPgogI2ltcG9ydCA8d3Rm
L0N1cnJlbnRUaW1lLmg+CiAjaW1wb3J0IDx3dGYvTGlzdEhhc2hTZXQuaD4KICNpbXBvcnQgPHd0
Zi9OZXZlckRlc3Ryb3llZC5oPgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMubW0JKHJldmlzaW9uIDIwMTAyMykKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1
ZmZlclByaXZhdGVBVkZPYmpDLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw3ICsyOCw2IEBACiAK
ICNpZiBFTkFCTEUoTUVESUFfU09VUkNFKSAmJiBVU0UoQVZGT1VOREFUSU9OKQogCi0jaW1wb3J0
ICJCbG9ja0V4Y2VwdGlvbnMuaCIKICNpbXBvcnQgIkNETVNlc3Npb25BVkNvbnRlbnRLZXlTZXNz
aW9uLmgiCiAjaW1wb3J0ICJDRE1TZXNzaW9uTWVkaWFTb3VyY2VBVkZPYmpDLmgiCiAjaW1wb3J0
ICJFeGNlcHRpb25Db2RlUGxhY2Vob2xkZXIuaCIKQEAgLTUwLDYgKzQ5LDcgQEAKICNpbXBvcnQg
PG9iamMvcnVudGltZS5oPgogI2ltcG9ydCA8d3RmL3RleHQvQXRvbWljU3RyaW5nLmg+CiAjaW1w
b3J0IDx3dGYvdGV4dC9DU3RyaW5nLmg+CisjaW1wb3J0IDx3dGYvQmxvY2tPYmpDRXhjZXB0aW9u
cy5oPgogI2ltcG9ydCA8d3RmL0hhc2hDb3VudGVkU2V0Lmg+CiAjaW1wb3J0IDx3dGYvTWFpblRo
cmVhZC5oPgogI2ltcG9ydCA8d3RmL1dlYWtQdHIuaD4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FGaWx0ZXJzQ29jb2EubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxhdGZv
cm1DQUZpbHRlcnNDb2NvYS5tbQkocmV2aXNpb24gMjAxMDIzKQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxhdGZvcm1DQUZpbHRlcnNDb2NvYS5tbQkod29y
a2luZyBjb3B5KQpAQCAtMjYsMTIgKzI2LDEyIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW1w
b3J0ICJQbGF0Zm9ybUNBRmlsdGVycy5oIgogCi0jaW1wb3J0ICJCbG9ja0V4Y2VwdGlvbnMuaCIK
ICNpbXBvcnQgIkZsb2F0Q29udmVyc2lvbi5oIgogI2ltcG9ydCAiTGVuZ3RoRnVuY3Rpb25zLmgi
IC8vIFRoaXMgaXMgYSBsYXllcmluZyB2aW9sYXRpb24uCiAjaW1wb3J0ICJQbGF0Zm9ybUNBTGF5
ZXJDb2NvYS5oIgogI2ltcG9ydCAiUXVhcnR6Q29yZVNQSS5oIgogI2ltcG9ydCA8UXVhcnR6Q29y
ZS9RdWFydHpDb3JlLmg+CisjaW1wb3J0IDx3dGYvQmxvY2tPYmpDRXhjZXB0aW9ucy5oPgogCiB1
c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2EvY29jb2EvUGxhdGZvcm1DQUxheWVyQ29jb2EubW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxhdGZvcm1DQUxheWVy
Q29jb2EubW0JKHJldmlzaW9uIDIwMTAyMykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FMYXllckNvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBA
IC0yNyw3ICsyNyw2IEBACiAjaW1wb3J0ICJQbGF0Zm9ybUNBTGF5ZXJDb2NvYS5oIgogCiAjaW1w
b3J0ICJBbmltYXRpb25VdGlsaXRpZXMuaCIKLSNpbXBvcnQgIkJsb2NrRXhjZXB0aW9ucy5oIgog
I2ltcG9ydCAiR3JhcGhpY3NDb250ZXh0LmgiCiAjaW1wb3J0ICJHcmFwaGljc0xheWVyQ0EuaCIK
ICNpbXBvcnQgIkxlbmd0aEZ1bmN0aW9ucy5oIgpAQCAtNDgsNiArNDcsNyBAQAogI2ltcG9ydCA8
QVZGb3VuZGF0aW9uL0FWRm91bmRhdGlvbi5oPgogI2ltcG9ydCA8UXVhcnR6Q29yZS9RdWFydHpD
b3JlLmg+CiAjaW1wb3J0IDxvYmpjL3J1bnRpbWUuaD4KKyNpbXBvcnQgPHd0Zi9CbG9ja09iakNF
eGNlcHRpb25zLmg+CiAjaW1wb3J0IDx3dGYvQ3VycmVudFRpbWUuaD4KICNpbXBvcnQgPHd0Zi9S
ZXRhaW5QdHIuaD4KIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29j
b2EvRm9udENvY29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NvY29hL0ZvbnRDb2NvYS5tbQkocmV2aXNpb24gMjAxMDIzKQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udENvY29hLm1tCSh3b3JraW5nIGNvcHkp
CkBAIC0yNyw3ICsyNyw2IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIkZvbnQuaCIK
IAotI2ltcG9ydCAiQmxvY2tFeGNlcHRpb25zLmgiCiAjaW1wb3J0ICJDb2xvci5oIgogI2ltcG9y
dCAiQ29yZUdyYXBoaWNzU1BJLmgiCiAjaW1wb3J0ICJDb3JlVGV4dFNQSS5oIgpAQCAtNDAsNiAr
MzksNyBAQAogI2ltcG9ydCA8ZmxvYXQuaD4KICNpbXBvcnQgPHVuaWNvZGUvdWNoYXIuaD4KICNp
bXBvcnQgPHd0Zi9Bc3NlcnRpb25zLmg+CisjaW1wb3J0IDx3dGYvQmxvY2tPYmpDRXhjZXB0aW9u
cy5oPgogI2ltcG9ydCA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW1wb3J0IDx3dGYvUmV0YWlu
UHRyLmg+CiAjaW1wb3J0IDx3dGYvU3RkTGliRXh0cmFzLmg+CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29sb3JNYWMubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0NvbG9yTWFjLm1tCShyZXZpc2lvbiAyMDEw
MjMpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29sb3JNYWMubW0J
KHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2lt
cG9ydCAiQ29sb3JNYWMuaCIKIAotI2ltcG9ydCA8V2ViQ29yZS9CbG9ja0V4Y2VwdGlvbnMuaD4K
KyNpbXBvcnQgPHd0Zi9CbG9ja09iakNFeGNlcHRpb25zLmg+CiAjaW1wb3J0IDx3dGYvUmV0YWlu
UHRyLmg+CiAjaW1wb3J0IDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9HcmFwaGljc0NvbnRleHQzRE1hYy5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvR3JhcGhpY3NDb250
ZXh0M0RNYWMubW0JKHJldmlzaW9uIDIwMTAyMykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL21hYy9HcmFwaGljc0NvbnRleHQzRE1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAt
MzIsNyArMzIsNyBAQAogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNESU9TLmgiCiAjZW5kaWYK
IAotI2ltcG9ydCAiQmxvY2tFeGNlcHRpb25zLmgiCisjaW1wb3J0IDx3dGYvQmxvY2tPYmpDRXhj
ZXB0aW9ucy5oPgogCiAjaW5jbHVkZSAiQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5oIgogI2luY2x1
ZGUgPENvcmVHcmFwaGljcy9DR0JpdG1hcENvbnRleHQuaD4KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL21hYy9NZWRpYVBsYXllclByaXZhdGVRVEtpdC5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvTWVkaWFQbGF5ZXJQ
cml2YXRlUVRLaXQubW0JKHJldmlzaW9uIDIwMTAyMykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL21hYy9NZWRpYVBsYXllclByaXZhdGVRVEtpdC5tbQkod29ya2luZyBjb3B5
KQpAQCAtMjksNyArMjksNiBAQAogCiAjaW1wb3J0ICJNZWRpYVBsYXllclByaXZhdGVRVEtpdC5o
IgogCi0jaW1wb3J0ICJCbG9ja0V4Y2VwdGlvbnMuaCIKICNpbXBvcnQgIkRvY3VtZW50TG9hZGVy
LmgiCiAjaW1wb3J0ICJHcmFwaGljc0NvbnRleHQuaCIKICNpbXBvcnQgIlVSTC5oIgpAQCAtNDMs
NiArNDIsNyBAQAogI2ltcG9ydCAiV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oIgogI2ltcG9ydCA8
UVRLaXQvUVRLaXQuaD4KICNpbXBvcnQgPG9iamMvcnVudGltZS5oPgorI2ltcG9ydCA8d3RmL0Js
b2NrT2JqQ0V4Y2VwdGlvbnMuaD4KICNpbXBvcnQgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCiBT
T0ZUX0xJTktfRlJBTUVXT1JLKFFUS2l0KQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW9zL1BsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJJT1MubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJJT1MubW0JKHJl
dmlzaW9uIDIwMTAyMykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVNw
ZWVjaFN5bnRoZXNpemVySU9TLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yOSwxMSArMjksMTEgQEAK
IAogI2lmIEVOQUJMRShTUEVFQ0hfU1lOVEhFU0lTKQogCi0jaW5jbHVkZSAiQmxvY2tFeGNlcHRp
b25zLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UuaCIKICNp
bmNsdWRlICJQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlLmgiCiAjaW5jbHVkZSAiU29mdExp
bmtpbmcuaCIKICNpbmNsdWRlIDxBVkZvdW5kYXRpb24vQVZTcGVlY2hTeW50aGVzaXMuaD4KKyNp
bmNsdWRlIDx3dGYvQmxvY2tPYmpDRXhjZXB0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5Q
dHIuaD4KIAogU09GVF9MSU5LX0ZSQU1FV09SSyhBVkZvdW5kYXRpb24pCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pb3MvU2Nyb2xsVmlld0lPUy5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvU2Nyb2xsVmlld0lPUy5tbQkocmV2aXNpb24gMjAxMDIz
KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Njcm9sbFZpZXdJT1MubW0JKHdvcmtp
bmcgY29weSkKQEAgLTI2LDcgKzI2LDYgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAi
U2Nyb2xsVmlldy5oIgogCi0jaW1wb3J0ICJCbG9ja0V4Y2VwdGlvbnMuaCIKICNpbXBvcnQgIkZs
b2F0UmVjdC5oIgogI2ltcG9ydCAiSW50UmVjdC5oIgogI2ltcG9ydCAiTG9nZ2luZy5oIgpAQCAt
MzgsNiArMzcsNyBAQAogI2ltcG9ydCAiV0FLV2luZG93LmgiCiAjaW1wb3J0ICJXS1ZpZXdQcml2
YXRlLmgiCiAjaW1wb3J0ICJXZWJDb3JlRnJhbWVWaWV3LmgiCisjaW1wb3J0IDx3dGYvQmxvY2tP
YmpDRXhjZXB0aW9ucy5oPgogI2ltcG9ydCA8d3RmL0N1cnJlbnRUaW1lLmg+CiAKIHVzaW5nIG5h
bWVzcGFjZSBzdGQ7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2lkZ2V0SU9T
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XaWRnZXRJT1Mu
bW0JKHJldmlzaW9uIDIwMTAyMykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XaWRn
ZXRJT1MubW0JKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDYgQEAKICNpbXBvcnQgImNvbmZp
Zy5oIgogI2ltcG9ydCAiV2lkZ2V0LmgiCiAKLSNpbXBvcnQgIkJsb2NrRXhjZXB0aW9ucy5oIgog
I2ltcG9ydCAiQ3Vyc29yLmgiCiAjaW1wb3J0ICJEb2N1bWVudC5oIgogI2ltcG9ydCAiRm9udENh
c2NhZGUuaCIKQEAgLTQwLDYgKzM5LDcgQEAKICNpbXBvcnQgIldBS1dpbmRvdy5oIgogI2ltcG9y
dCAiV2ViQ29yZUZyYW1lVmlldy5oIgogI2ltcG9ydCAiV2ViQ29yZVZpZXcuaCIKKyNpbXBvcnQg
PHd0Zi9CbG9ja09iakNFeGNlcHRpb25zLmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAK
IEBpbnRlcmZhY2UgTlNWaWV3IChXZWJTZXRTZWxlY3RlZE1ldGhvZHMpCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tYWMvQmxvY2tFeGNlcHRpb25zLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0Jsb2NrRXhjZXB0aW9ucy5oCShyZXZpc2lvbiAyMDEw
MjMpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvQmxvY2tFeGNlcHRpb25zLmgJKHdv
cmtpbmcgY29weSkKQEAgLTEsMzIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwMyBB
cHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAot
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4gCi0gKi8KLQotI2ltcG9ydCA8Rm91bmRhdGlvbi9OU0V4Y2VwdGlvbi5oPgot
Ci1XRUJDT1JFX0VYUE9SVCBOT19SRVRVUk5fRFVFX1RPX0FTU0VSVCB2b2lkIFJlcG9ydEJsb2Nr
ZWRPYmpDRXhjZXB0aW9uKE5TRXhjZXB0aW9uICopOwotCi0jZGVmaW5lIEJFR0lOX0JMT0NLX09C
SkNfRVhDRVBUSU9OUyBAdHJ5IHsKLSNkZWZpbmUgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUyB9
IEBjYXRjaChOU0V4Y2VwdGlvbiAqbG9jYWxFeGNlcHRpb24pIHsgUmVwb3J0QmxvY2tlZE9iakNF
eGNlcHRpb24obG9jYWxFeGNlcHRpb24pOyB9Ci0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21hYy9CbG9ja0V4Y2VwdGlvbnMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWFjL0Jsb2NrRXhjZXB0aW9ucy5tbQkocmV2aXNpb24gMjAxMDIzKQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0Jsb2NrRXhjZXB0aW9ucy5tbQkod29ya2luZyBjb3B5
KQpAQCAtMSwzOCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA3IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
Ci0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuIAotICovCi0KLSNpbXBvcnQgImNvbmZpZy5oIgotI2ltcG9ydCAiQmxvY2tFeGNlcHRp
b25zLmgiCi0KLSNpbXBvcnQgPHd0Zi9Bc3NlcnRpb25zLmg+Ci0KLXZvaWQgUmVwb3J0QmxvY2tl
ZE9iakNFeGNlcHRpb24oTlNFeGNlcHRpb24gKmV4Y2VwdGlvbikKLXsKLSNpZiBBU1NFUlRfRElT
QUJMRUQKLSAgICBOU0xvZyhAIioqKiBXZWJLaXQgZGlzY2FyZGluZyBleGNlcHRpb246IDwlQD4g
JUAiLCBbZXhjZXB0aW9uIG5hbWVdLCBbZXhjZXB0aW9uIHJlYXNvbl0pOwotI2Vsc2UKLSAgICBB
U1NFUlRfV0lUSF9NRVNTQUdFKDAsICJVbmNhdWdodCBleGNlcHRpb24gLSAlQCIsIGV4Y2VwdGlv
bik7Ci0jZW5kaWYKLX0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9DdXJzb3JN
YWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0N1cnNvck1h
Yy5tbQkocmV2aXNpb24gMjAxMDIzKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0N1
cnNvck1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjYsOCArMjYsOCBAQAogI2ltcG9ydCAiY29u
ZmlnLmgiCiAjaW1wb3J0ICJDdXJzb3IuaCIKIAotI2ltcG9ydCAiQmxvY2tFeGNlcHRpb25zLmgi
CiAjaW1wb3J0ICJXZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmgiCisjaW1wb3J0IDx3dGYvQmxvY2tP
YmpDRXhjZXB0aW9ucy5oPgogI2ltcG9ydCA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCiBAaW50ZXJm
YWNlIFdlYkNvcmVDdXJzb3JCdW5kbGUgOiBOU09iamVjdCB7IH0KSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21hYy9MYW5ndWFnZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tYWMvTGFuZ3VhZ2UubW0JKHJldmlzaW9uIDIwMTAyMykKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21hYy9MYW5ndWFnZS5tbQkod29ya2luZyBjb3B5KQpAQCAtMSwxNzIg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwMywgMjAwNSwgMjAwNiwgMjAxMCwgMjAx
MSwgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbXBv
cnQgImNvbmZpZy5oIgotI2ltcG9ydCAiTGFuZ3VhZ2UuaCIKLQotI2ltcG9ydCAiQmxvY2tFeGNl
cHRpb25zLmgiCi0jaW1wb3J0ICJDRkJ1bmRsZVNQSS5oIgotI2ltcG9ydCAiV2ViQ29yZU5TU3Ry
aW5nRXh0cmFzLmgiCi0jaW1wb3J0IDxtdXRleD4KLSNpbXBvcnQgPHVuaWNvZGUvdWxvYy5oPgot
I2ltcG9ydCA8d3RmL0Fzc2VydGlvbnMuaD4KLSNpbXBvcnQgPHd0Zi9Mb2NrLmg+Ci0jaW1wb3J0
IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KLSNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KLSNpbXBv
cnQgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXN0YXRp
YyBTdGF0aWNMb2NrIHByZWZlcnJlZExhbmd1YWdlc011dGV4OwotCi1zdGF0aWMgVmVjdG9yPFN0
cmluZz4mIHByZWZlcnJlZExhbmd1YWdlcygpCi17Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PFZlY3RvcjxTdHJpbmc+PiBsYW5ndWFnZXM7Ci0gICAgcmV0dXJuIGxhbmd1YWdlczsKLX0KLQot
fQotCi1AaW50ZXJmYWNlIFdlYkxhbmd1YWdlQ2hhbmdlT2JzZXJ2ZXIgOiBOU09iamVjdAotQGVu
ZAotCi1AaW1wbGVtZW50YXRpb24gV2ViTGFuZ3VhZ2VDaGFuZ2VPYnNlcnZlcgotCi0rICh2b2lk
KWxhbmd1YWdlUHJlZmVyZW5jZXNEaWRDaGFuZ2U6KE5TTm90aWZpY2F0aW9uICopbm90aWZpY2F0
aW9uCi17Ci0gICAgVU5VU0VEX1BBUkFNKG5vdGlmaWNhdGlvbik7Ci0KLSAgICB7Ci0gICAgICAg
IHN0ZDo6bG9ja19ndWFyZDxTdGF0aWNMb2NrPiBsb2NrKFdlYkNvcmU6OnByZWZlcnJlZExhbmd1
YWdlc011dGV4KTsKLSAgICAgICAgV2ViQ29yZTo6cHJlZmVycmVkTGFuZ3VhZ2VzKCkuY2xlYXIo
KTsKLSAgICB9Ci0KLSAgICBXZWJDb3JlOjpsYW5ndWFnZURpZENoYW5nZSgpOwotfQotCi1AZW5k
Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotc3RhdGljIFN0cmluZyBodHRwU3R5bGVMYW5ndWFn
ZUNvZGUoTlNTdHJpbmcgKmxhbmd1YWdlLCBOU1N0cmluZyAqY291bnRyeSkKLXsKLSAgICBTSW50
MzIgbGFuZ3VhZ2VDb2RlOwotICAgIFNJbnQzMiByZWdpb25Db2RlOyAKLSAgICBTSW50MzIgc2Ny
aXB0Q29kZTsgCi0gICAgQ0ZTdHJpbmdFbmNvZGluZyBzdHJpbmdFbmNvZGluZzsKLSAgICAKLSAg
ICBib29sIGxhbmd1YWdlRGlkU3BlY2lmeUV4cGxpY2l0VmFyaWFudCA9IFtsYW5ndWFnZSByYW5n
ZU9mQ2hhcmFjdGVyRnJvbVNldDpbTlNDaGFyYWN0ZXJTZXQgY2hhcmFjdGVyU2V0V2l0aENoYXJh
Y3RlcnNJblN0cmluZzpAIi1fIl1dLmxvY2F0aW9uICE9IE5TTm90Rm91bmQ7Ci0KLSAgICAvLyBG
SVhNRTogVGhpcyB0cmFuc2Zvcm1hdGlvbiBpcyB2ZXJ5IHdyb25nOgotICAgIC8vIDEuIFRoZXJl
IGlzIG5vIHJlYXNvbiB3aHkgQ0ZCdW5kbGUgbG9jYWxpemF0aW9uIG5hbWVzIHdvdWxkIGJlIGF0
IGFsbCByZWxhdGVkIHRvIGxhbmd1YWdlIG5hbWVzIGFzIHVzZWQgb24gdGhlIFdlYi4KLSAgICAv
LyAyLiBTY3JpcHQgTWFuYWdlciBjb2RlcyBjYW5ub3QgcmVwcmVzZW50IGFsbCBsYW5ndWFnZXMg
dGhhdCBhcmUgbm93IHN1cHBvcnRlZCBieSB0aGUgcGxhdGZvcm0sIHNvIHRoZSBjb252ZXJzaW9u
IGlzIGxvc3N5LgotICAgIC8vIDMuIFRoaXMgc2hvdWxkIHByb2JhYmx5IG1hdGNoIHdoYXQgaXMg
c2VudCBieSB0aGUgbmV0d29yayBsYXllciBhcyBBY2NlcHQtTGFuZ3VhZ2UsIGJ1dCBjdXJyZW50
bHksIHRoYXQncyBpbXBsZW1lbnRlZCBzZXBhcmF0ZWx5LgotICAgIENGQnVuZGxlR2V0TG9jYWxp
emF0aW9uSW5mb0ZvckxvY2FsaXphdGlvbigoQ0ZTdHJpbmdSZWYpbGFuZ3VhZ2UsICZsYW5ndWFn
ZUNvZGUsICZyZWdpb25Db2RlLCAmc2NyaXB0Q29kZSwgJnN0cmluZ0VuY29kaW5nKTsKLSAgICBS
ZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHByZWZlcnJlZExhbmd1YWdlQ29kZSA9IGFkb3B0Q0YoQ0ZC
dW5kbGVDb3B5TG9jYWxpemF0aW9uRm9yTG9jYWxpemF0aW9uSW5mbyhsYW5ndWFnZUNvZGUsIHJl
Z2lvbkNvZGUsIHNjcmlwdENvZGUsIHN0cmluZ0VuY29kaW5nKSk7Ci0gICAgaWYgKHByZWZlcnJl
ZExhbmd1YWdlQ29kZSkKLSAgICAgICAgbGFuZ3VhZ2UgPSAoTlNTdHJpbmcgKilwcmVmZXJyZWRM
YW5ndWFnZUNvZGUuZ2V0KCk7Ci0KLSAgICAvLyBNYWtlIHRoZSBzdHJpbmcgbG93ZXJjYXNlLgot
ICAgIE5TU3RyaW5nICpsb3dlcmNhc2VMYW5ndWFnZUNvZGUgPSBbbGFuZ3VhZ2UgbG93ZXJjYXNl
U3RyaW5nXTsKLSAgICBOU1N0cmluZyAqbG93ZXJjYXNlQ291bnRyeUNvZGUgPSBbY291bnRyeSBs
b3dlcmNhc2VTdHJpbmddOwotICAgIAotICAgIC8vIElmIHdlIHNlZSBhICJfIiBhZnRlciBhIDIt
bGV0dGVyIGxhbmd1YWdlIGNvZGU6Ci0gICAgLy8gSWYgdGhlIGNvdW50cnkgaXMgdmFsaWQgYW5k
IHRoZSBsYW5ndWFnZSBkaWQgbm90IHNwZWNpZnkgYSB2YXJpYW50LCByZXBsYWNlIHRoZSAiXyIg
YW5kCi0gICAgLy8gd2hhdGV2ZXIgY29tZXMgYWZ0ZXIgaXQgd2l0aCAiLSIgZm9sbG93ZWQgYnkg
dGhlIGNvdW50cnkgY29kZS4KLSAgICAvLyBPdGhlcndpc2UsIHJlcGxhY2UgdGhlICJfIiB3aXRo
IGEgIi0iIGFuZCB1c2Ugd2hhdGV2ZXIgY291bnRyeQotICAgIC8vIENGQnVuZGxlQ29weUxvY2Fs
aXphdGlvbkZvckxvY2FsaXphdGlvbkluZm8oKSByZXR1cm5lZC4KLSAgICBpZiAoW2xvd2VyY2Fz
ZUxhbmd1YWdlQ29kZSBsZW5ndGhdID49IDMgJiYgW2xvd2VyY2FzZUxhbmd1YWdlQ29kZSBjaGFy
YWN0ZXJBdEluZGV4OjJdID09ICdfJykgewotICAgICAgICBpZiAoY291bnRyeSAmJiAhbGFuZ3Vh
Z2VEaWRTcGVjaWZ5RXhwbGljaXRWYXJpYW50KQotICAgICAgICAgICAgcmV0dXJuIFtOU1N0cmlu
ZyBzdHJpbmdXaXRoRm9ybWF0OkAiJUAtJUAiLCBbbG93ZXJjYXNlTGFuZ3VhZ2VDb2RlIHN1YnN0
cmluZ1dpdGhSYW5nZTpOU01ha2VSYW5nZSgwLCAyKV0sIGxvd2VyY2FzZUNvdW50cnlDb2RlXTsK
LSAgICAgICAgCi0gICAgICAgIC8vIEZhbGwgYmFjayB0byBvbGRlciBiZWhhdmlvciwgd2hpY2gg
dXNlZCB0aGUgb3JpZ2luYWwgbGFuZ3VhZ2UtYmFzZWQgY29kZSBidXQganVzdCBjaGFuZ2VkCi0g
ICAgICAgIC8vIHRoZSAiXyIgdG8gYSAiLSIuCi0gICAgICAgIFJldGFpblB0cjxOU011dGFibGVT
dHJpbmc+IG11dGFibGVMYW5ndWFnZUNvZGUgPSBhZG9wdE5TKFtsb3dlcmNhc2VMYW5ndWFnZUNv
ZGUgbXV0YWJsZUNvcHldKTsKLSAgICAgICAgW211dGFibGVMYW5ndWFnZUNvZGUuZ2V0KCkgcmVw
bGFjZUNoYXJhY3RlcnNJblJhbmdlOk5TTWFrZVJhbmdlKDIsIDEpIHdpdGhTdHJpbmc6QCItIl07
Ci0gICAgICAgIHJldHVybiBtdXRhYmxlTGFuZ3VhZ2VDb2RlLmdldCgpOwotICAgIH0KLQotICAg
IHJldHVybiBsb3dlcmNhc2VMYW5ndWFnZUNvZGU7Ci19Ci0KLXN0YXRpYyBib29sIGlzVmFsaWRJ
Q1VDb3VudHJ5Q29kZShOU1N0cmluZyogY291bnRyeUNvZGUpCi17Ci0gICAgaWYgKCFjb3VudHJ5
Q29kZSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGNvbnN0IGNoYXIqIGNvbnN0KiBjb3Vu
dHJpZXMgPSB1bG9jX2dldElTT0NvdW50cmllcygpOwotICAgIGNvbnN0IGNoYXIqIGNvdW50cnlV
VEY4ID0gW2NvdW50cnlDb2RlIFVURjhTdHJpbmddOwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGNvdW50cmllc1tpXTsgKytpKSB7Ci0gICAgICAgIGNvbnN0IGNoYXIqIHBvc3NpYmxlQ291bnRy
eSA9IGNvdW50cmllc1tpXTsKLSAgICAgICAgaWYgKCFzdHJjbXAoY291bnRyeVVURjgsIHBvc3Np
YmxlQ291bnRyeSkpCi0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0gICAgcmV0dXJu
IGZhbHNlOwotfQotCi1WZWN0b3I8U3RyaW5nPiBwbGF0Zm9ybVVzZXJQcmVmZXJyZWRMYW5ndWFn
ZXMoKQotewotI2lmIFBMQVRGT1JNKE1BQykKLSAgICBzdGF0aWMgZGlzcGF0Y2hfb25jZV90IG9u
Y2VUb2tlbjsKLSAgICBkaXNwYXRjaF9vbmNlKCZvbmNlVG9rZW4sIF57Ci0gICAgICAgIFtbTlNE
aXN0cmlidXRlZE5vdGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXSBhZGRPYnNlcnZlcjpb
V2ViTGFuZ3VhZ2VDaGFuZ2VPYnNlcnZlciBzZWxmXSBzZWxlY3RvcjpAc2VsZWN0b3IobGFuZ3Vh
Z2VQcmVmZXJlbmNlc0RpZENoYW5nZTopIG5hbWU6QCJBcHBsZUxhbmd1YWdlUHJlZmVyZW5jZXND
aGFuZ2VkTm90aWZpY2F0aW9uIiBvYmplY3Q6bmlsXTsKLSAgICB9KTsKLSNlbmRpZgotCi0gICAg
QkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TOwotCi0gICAgc3RkOjpsb2NrX2d1YXJkPFN0YXRp
Y0xvY2s+IGxvY2socHJlZmVycmVkTGFuZ3VhZ2VzTXV0ZXgpOwotICAgIFZlY3RvcjxTdHJpbmc+
JiB1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzID0gcHJlZmVycmVkTGFuZ3VhZ2VzKCk7Ci0KLSAgICBp
ZiAodXNlclByZWZlcnJlZExhbmd1YWdlcy5pc0VtcHR5KCkpIHsKLSAgICAgICAgUmV0YWluUHRy
PENGTG9jYWxlUmVmPiBsb2NhbGUgPSBhZG9wdENGKENGTG9jYWxlQ29weUN1cnJlbnQoKSk7Ci0g
ICAgICAgIE5TU3RyaW5nICpjb3VudHJ5Q29kZSA9IChOU1N0cmluZyAqKUNGTG9jYWxlR2V0VmFs
dWUobG9jYWxlLmdldCgpLCBrQ0ZMb2NhbGVDb3VudHJ5Q29kZSk7Ci0gICAgICAgIAotICAgICAg
ICBpZiAoIWlzVmFsaWRJQ1VDb3VudHJ5Q29kZShjb3VudHJ5Q29kZSkpCi0gICAgICAgICAgICBj
b3VudHJ5Q29kZSA9IG5pbDsKLSAgICAgICAgCi0gICAgICAgIFJldGFpblB0cjxDRkFycmF5UmVm
PiBsYW5ndWFnZXMgPSBhZG9wdENGKENGTG9jYWxlQ29weVByZWZlcnJlZExhbmd1YWdlcygpKTsK
LSAgICAgICAgQ0ZJbmRleCBsYW5ndWFnZUNvdW50ID0gQ0ZBcnJheUdldENvdW50KGxhbmd1YWdl
cy5nZXQoKSk7Ci0gICAgICAgIGlmICghbGFuZ3VhZ2VDb3VudCkKLSAgICAgICAgICAgIHVzZXJQ
cmVmZXJyZWRMYW5ndWFnZXMuYXBwZW5kKCJlbiIpOwotICAgICAgICBlbHNlIHsKLSAgICAgICAg
ICAgIGZvciAoQ0ZJbmRleCBpID0gMDsgaSA8IGxhbmd1YWdlQ291bnQ7IGkrKykKLSAgICAgICAg
ICAgICAgICB1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzLmFwcGVuZChodHRwU3R5bGVMYW5ndWFnZUNv
ZGUoKE5TU3RyaW5nICopQ0ZBcnJheUdldFZhbHVlQXRJbmRleChsYW5ndWFnZXMuZ2V0KCksIGkp
LCBjb3VudHJ5Q29kZSkpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgVmVjdG9yPFN0cmluZz4g
dXNlclByZWZlcnJlZExhbmd1YWdlc0NvcHk7Ci0gICAgdXNlclByZWZlcnJlZExhbmd1YWdlc0Nv
cHkucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eSh1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzLnNpemUoKSk7
Ci0KLSAgICBmb3IgKGF1dG8mIGxhbmd1YWdlIDogdXNlclByZWZlcnJlZExhbmd1YWdlcykKLSAg
ICAgICAgdXNlclByZWZlcnJlZExhbmd1YWdlc0NvcHkudW5jaGVja2VkQXBwZW5kKGxhbmd1YWdl
Lmlzb2xhdGVkQ29weSgpKTsKLQotICAgIHJldHVybiB1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzQ29w
eTsKLQotICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlM7Ci0KLSAgICByZXR1cm4gVmVjdG9y
PFN0cmluZz4oKTsKLX0KLQotfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Nj
cm9sbEFuaW1hdG9yTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21hYy9TY3JvbGxBbmltYXRvck1hYy5tbQkocmV2aXNpb24gMjAxMDIzKQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbEFuaW1hdG9yTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBA
IC0yOSw3ICsyOSw2IEBACiAKICNpbmNsdWRlICJTY3JvbGxBbmltYXRvck1hYy5oIgogCi0jaW5j
bHVkZSAiQmxvY2tFeGNlcHRpb25zLmgiCiAjaW5jbHVkZSAiRmxvYXRQb2ludC5oIgogI2luY2x1
ZGUgIkdyYXBoaWNzTGF5ZXIuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCkBAIC00Miw2ICs0MSw3
IEBACiAjaW5jbHVkZSAiU2Nyb2xsYmFyVGhlbWVNYWMuaCIKICNpbmNsdWRlICJUZXh0U3RyZWFt
LmgiCiAjaW5jbHVkZSAiV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oIgorI2luY2x1ZGUgPHd0Zi9C
bG9ja09iakNFeGNlcHRpb25zLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsVmlld01hYy5tbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsVmlld01hYy5tbQkocmV2aXNp
b24gMjAxMDIzKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbFZpZXdNYWMu
bW0JKHdvcmtpbmcgY29weSkKQEAgLTI2LDEzICsyNiwxMyBAQAogI2ltcG9ydCAiY29uZmlnLmgi
CiAjaW1wb3J0ICJTY3JvbGxWaWV3LmgiCiAKLSNpbXBvcnQgIkJsb2NrRXhjZXB0aW9ucy5oIgog
I2ltcG9ydCAiRmxvYXRSZWN0LmgiCiAjaW1wb3J0ICJGbG9hdFNpemUuaCIKICNpbXBvcnQgIklu
dFJlY3QuaCIKICNpbXBvcnQgIkxvZ2dpbmcuaCIKICNpbXBvcnQgIk5vdEltcGxlbWVudGVkLmgi
CiAjaW1wb3J0ICJXZWJDb3JlRnJhbWVWaWV3LmgiCisjaW1wb3J0IDx3dGYvQmxvY2tPYmpDRXhj
ZXB0aW9ucy5oPgogCiBAaW50ZXJmYWNlIE5TU2Nyb2xsVmlldyAoKQogLSAoTlNFZGdlSW5zZXRz
KWNvbnRlbnRJbnNldHM7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xs
YmFyVGhlbWVNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFj
L1Njcm9sbGJhclRoZW1lTWFjLm1tCShyZXZpc2lvbiAyMDEwMjMpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsYmFyVGhlbWVNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTI2
LDcgKzI2LDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJTY3JvbGxiYXJUaGVt
ZU1hYy5oIgogCi0jaW5jbHVkZSAiQmxvY2tFeGNlcHRpb25zLmgiCiAjaW5jbHVkZSAiQ29sb3JN
YWMuaCIKICNpbmNsdWRlICJHcmFwaGljc0xheWVyLmgiCiAjaW5jbHVkZSAiSW1hZ2VCdWZmZXIu
aCIKQEAgLTM4LDYgKzM3LDcgQEAKICNpbmNsdWRlICJTY3JvbGxWaWV3LmgiCiAjaW5jbHVkZSAi
V2ViQ29yZVN5c3RlbUludGVyZmFjZS5oIgogI2luY2x1ZGUgPENhcmJvbi9DYXJib24uaD4KKyNp
bmNsdWRlIDx3dGYvQmxvY2tPYmpDRXhjZXB0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFw
Lmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExp
YkV4dHJhcy5oPgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1RoZW1lTWFjLm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9UaGVtZU1hYy5tbQko
cmV2aXNpb24gMjAxMDIzKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1RoZW1lTWFj
Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw3ICsyNyw2IEBACiAjaW1wb3J0ICJUaGVtZU1hYy5o
IgogCiAjaW1wb3J0ICJBWE9iamVjdENhY2hlLmgiCi0jaW1wb3J0ICJCbG9ja0V4Y2VwdGlvbnMu
aCIKICNpbXBvcnQgIkdyYXBoaWNzQ29udGV4dC5oIgogI2ltcG9ydCAiSW1hZ2VCdWZmZXIuaCIK
ICNpbXBvcnQgIkxvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dC5oIgpAQCAtMzUsNiArMzQsNyBA
QAogI2ltcG9ydCAiU2Nyb2xsVmlldy5oIgogI2ltcG9ydCAiV2ViQ29yZVN5c3RlbUludGVyZmFj
ZS5oIgogI2ltcG9ydCA8Q2FyYm9uL0NhcmJvbi5oPgorI2ltcG9ydCA8d3RmL0Jsb2NrT2JqQ0V4
Y2VwdGlvbnMuaD4KICNpbXBvcnQgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2ltcG9ydCA8d3Rm
L1N0ZExpYkV4dHJhcy5oPgogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2lk
Z2V0TWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XaWRn
ZXRNYWMubW0JKHJldmlzaW9uIDIwMTAyMykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21h
Yy9XaWRnZXRNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTI2LDggKzI2LDYgQEAKICNpbXBvcnQg
ImNvbmZpZy5oIgogI2ltcG9ydCAiV2lkZ2V0LmgiCiAKLQotI2ltcG9ydCAiQmxvY2tFeGNlcHRp
b25zLmgiCiAjaW1wb3J0ICJDaHJvbWUuaCIKICNpbXBvcnQgIkN1cnNvci5oIgogI2ltcG9ydCAi
RG9jdW1lbnQuaCIKQEAgLTQwLDYgKzM4LDcgQEAKICNpbXBvcnQgIlJ1bnRpbWVBcHBsaWNhdGlv
bkNoZWNrcy5oIgogI2ltcG9ydCAiV2ViQ29yZUZyYW1lVmlldy5oIgogI2ltcG9ydCAiV2ViQ29y
ZVZpZXcuaCIKKyNpbXBvcnQgPHd0Zi9CbG9ja09iakNFeGNlcHRpb25zLmg+CiAjaW1wb3J0IDx3
dGYvUmVmLmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVlZpZGVvQ2FwdHVyZVNvdXJjZS5tbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZWaWRl
b0NhcHR1cmVTb3VyY2UubW0JKHJldmlzaW9uIDIwMTAyMykKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVlZpZGVvQ2FwdHVyZVNvdXJjZS5tbQkod29ya2luZyBj
b3B5KQpAQCAtMjksNyArMjksNiBAQAogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pICYmIFVTRShB
VkZPVU5EQVRJT04pCiAKICNpbXBvcnQgIkFWQ2FwdHVyZURldmljZU1hbmFnZXIuaCIKLSNpbXBv
cnQgIkJsb2NrRXhjZXB0aW9ucy5oIgogI2ltcG9ydCAiR3JhcGhpY3NDb250ZXh0Q0cuaCIKICNp
bXBvcnQgIkltYWdlQnVmZmVyLmgiCiAjaW1wb3J0ICJJbnRSZWN0LmgiCkBAIC00MSw2ICs0MCw3
IEBACiAjaW1wb3J0ICJSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MuaCIKICNpbXBvcnQgPEFW
Rm91bmRhdGlvbi9BVkZvdW5kYXRpb24uaD4KICNpbXBvcnQgPG9iamMvcnVudGltZS5oPgorI2lt
cG9ydCA8d3RmL0Jsb2NrT2JqQ0V4Y2VwdGlvbnMuaD4KIAogI2ltcG9ydCAiQ29yZU1lZGlhU29m
dExpbmsuaCIKICNpbXBvcnQgIkNvcmVWaWRlb1NvZnRMaW5rLmgiCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9Db29raWVKYXJNYWMubW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvQ29va2llSmFyTWFjLm1tCShyZXZp
c2lvbiAyMDEwMjMpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9Db29r
aWVKYXJNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTI2LDEwICsyNiwxMCBAQAogI2ltcG9ydCAi
Y29uZmlnLmgiCiAjaW1wb3J0ICJQbGF0Zm9ybUNvb2tpZUphci5oIgogCi0jaW1wb3J0ICJCbG9j
a0V4Y2VwdGlvbnMuaCIKICNpbXBvcnQgIkNGTmV0d29ya1NQSS5oIgogI2ltcG9ydCAiTmV0d29y
a1N0b3JhZ2VTZXNzaW9uLmgiCiAjaW1wb3J0ICJXZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmgiCisj
aW1wb3J0IDx3dGYvQmxvY2tPYmpDRXhjZXB0aW9ucy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiBzdGF0aWMgTlNIVFRQQ29va2llU3RvcmFnZSAqY29va2llU3RvcmFnZShjb25zdCBOZXR3b3Jr
U3RvcmFnZVNlc3Npb24mKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
bWFjL1Jlc291cmNlRXJyb3JNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VFcnJvck1hYy5tbQkocmV2aXNpb24gMjAxMDIzKQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VFcnJvck1hYy5t
bQkod29ya2luZyBjb3B5KQpAQCAtMjYsMTAgKzI2LDEwIEBACiAjaW1wb3J0ICJjb25maWcuaCIK
ICNpbXBvcnQgIlJlc291cmNlRXJyb3IuaCIKIAotI2ltcG9ydCAiQmxvY2tFeGNlcHRpb25zLmgi
CiAjaW1wb3J0ICJVUkwuaCIKICNpbXBvcnQgPENvcmVGb3VuZGF0aW9uL0NGRXJyb3IuaD4KICNp
bXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgorI2ltcG9ydCA8d3RmL0Jsb2NrT2JqQ0V4
Y2VwdGlvbnMuaD4KIAogI2lmIFBMQVRGT1JNKElPUykgJiYgVVNFKENGTkVUV09SSykKICNpbXBv
cnQgPENGTmV0d29yay9DRlNvY2tldFN0cmVhbVByaXYuaD4KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlSGFuZGxlTWFjLm1tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlSGFuZGxlTWFjLm1t
CShyZXZpc2lvbiAyMDEwMjMpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21h
Yy9SZXNvdXJjZUhhbmRsZU1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjgsNyArMjgsNiBAQAog
CiAjaW1wb3J0ICJBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oIgogI2ltcG9ydCAiQXV0aGVudGlj
YXRpb25NYWMuaCIKLSNpbXBvcnQgIkJsb2NrRXhjZXB0aW9ucy5oIgogI2ltcG9ydCAiQ0ZOZXR3
b3JrU1BJLmgiCiAjaW1wb3J0ICJDb29raWVTdG9yYWdlLmgiCiAjaW1wb3J0ICJDcmVkZW50aWFs
U3RvcmFnZS5oIgpAQCAtNTMsNiArNTIsNyBAQAogI2ltcG9ydCAiU3luY2hyb25vdXNMb2FkZXJD
bGllbnQuaCIKICNpbXBvcnQgIldlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaCIKICNpbXBvcnQgIldl
YkNvcmVVUkxSZXNwb25zZS5oIgorI2ltcG9ydCA8d3RmL0Jsb2NrT2JqQ0V4Y2VwdGlvbnMuaD4K
ICNpbXBvcnQgPHd0Zi9SZWYuaD4KICNpbXBvcnQgPHd0Zi9TY2hlZHVsZVBhaXIuaD4KICNpbXBv
cnQgPHd0Zi90ZXh0L0Jhc2U2NC5oPgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3Bp
L2NmL0NGQnVuZGxlU1BJLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
c3BpL2NmL0NGQnVuZGxlU1BJLmgJKHJldmlzaW9uIDIwMTAyMykKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3NwaS9jZi9DRkJ1bmRsZVNQSS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDQ0ICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
Ci0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNp
Zm5kZWYgQ0ZCdW5kbGVTUElfaAotI2RlZmluZSBDRkJ1bmRsZVNQSV9oCi0KLSNpbmNsdWRlIDxD
b3JlRm91bmRhdGlvbi9Db3JlRm91bmRhdGlvbi5oPgotCi0jaWYgVVNFKEFQUExFX0lOVEVSTkFM
X1NESykKLSNpbXBvcnQgPENvcmVGb3VuZGF0aW9uL0NGUHJpdi5oPgotI2Vsc2UKLSNpbmNsdWRl
IDx3dGYvc3BpL2Rhcndpbi9YUENTUEkuaD4KLSNlbmRpZgotCi1leHRlcm4gIkMiIHsKLXZvaWQg
X0NGQnVuZGxlU2V0dXBYUENCb290c3RyYXAoeHBjX29iamVjdF90IGJvb3RzdHJhcCk7Ci0KLUJv
b2xlYW4gQ0ZCdW5kbGVHZXRMb2NhbGl6YXRpb25JbmZvRm9yTG9jYWxpemF0aW9uKENGU3RyaW5n
UmVmIGxvY2FsaXphdGlvbk5hbWUsIFNJbnQzMiAqbGFuZ3VhZ2VDb2RlLCBTSW50MzIgKnJlZ2lv
bkNvZGUsIFNJbnQzMiAqc2NyaXB0Q29kZSwgQ0ZTdHJpbmdFbmNvZGluZyAqc3RyaW5nRW5jb2Rp
bmcpOwotQ0ZTdHJpbmdSZWYgQ0ZCdW5kbGVDb3B5TG9jYWxpemF0aW9uRm9yTG9jYWxpemF0aW9u
SW5mbyhTSW50MzIgbGFuZ3VhZ2VDb2RlLCBTSW50MzIgcmVnaW9uQ29kZSwgU0ludDMyIHNjcmlw
dENvZGUsIENGU3RyaW5nRW5jb2Rpbmcgc3RyaW5nRW5jb2RpbmcpOwotfQotCi0jZW5kaWYKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3VuaXgvTGFuZ3VhZ2VVbml4LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS91bml4L0xhbmd1YWdlVW5peC5jcHAJKHJl
dmlzaW9uIDIwMTAyMykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3VuaXgvTGFuZ3VhZ2VV
bml4LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw0OSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDA3IEFscCBUb2tlciA8YWxwQGF0b2tlci5jb20+Ci0gKgotICogVGhpcyBsaWJyYXJ5
IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9k
aWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMK
LSAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247
IGVpdGhlcgotICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24p
IGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBp
biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdB
UlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5U
QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05V
Ci0gKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAq
Ci0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRo
ZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICogdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAq
IEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIK
LSNpbmNsdWRlICJMYW5ndWFnZS5oIgotCi0jaW5jbHVkZSA8bG9jYWxlLmg+Ci0jaW5jbHVkZSA8
d3RmL1ZlY3Rvci5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgotCi1uYW1lc3Bh
Y2UgV2ViQ29yZSB7Ci0KLS8vIFVzaW5nIHBhbmdvX2xhbmd1YWdlX2dldF9kZWZhdWx0KCkgaGVy
ZSBpcyBub3QgYW4gb3B0aW9uLCBiZWNhdXNlCi0vLyBpdCBkb2Vzbid0IHN1cHBvcnQgY2hhbmdp
bmcgdGhlIGxvY2FsZSBpbiBydW50aW1lLCBzbyBpdCByZXR1cm5zCi0vLyBhbHdheXMgdGhlIHNh
bWUgdmFsdWUuCi1zdGF0aWMgU3RyaW5nIHBsYXRmb3JtTGFuZ3VhZ2UoKQotewotICAgIFN0cmlu
ZyBsb2NhbGVEZWZhdWx0KHNldGxvY2FsZShMQ19DVFlQRSwgbnVsbHB0cikpOwotICAgIGlmIChs
b2NhbGVEZWZhdWx0LmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIFN0cmluZygiYyIpOwotCi0g
ICAgU3RyaW5nIG5vcm1hbGl6ZWREZWZhdWx0ID0gbG9jYWxlRGVmYXVsdC5jb252ZXJ0VG9BU0NJ
SUxvd2VyY2FzZSgpOwotICAgIG5vcm1hbGl6ZWREZWZhdWx0LnJlcGxhY2UoJ18nLCAnLScpOwot
ICAgIG5vcm1hbGl6ZWREZWZhdWx0LnRydW5jYXRlKG5vcm1hbGl6ZWREZWZhdWx0LmZpbmQoJy4n
KSk7Ci0gICAgcmV0dXJuIG5vcm1hbGl6ZWREZWZhdWx0OwotfQotCi1WZWN0b3I8U3RyaW5nPiBw
bGF0Zm9ybVVzZXJQcmVmZXJyZWRMYW5ndWFnZXMoKQotewotICAgIHJldHVybiB7IHBsYXRmb3Jt
TGFuZ3VhZ2UoKSB9OwotfQotCi19CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4v
TGFuZ3VhZ2VXaW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dp
bi9MYW5ndWFnZVdpbi5jcHAJKHJldmlzaW9uIDIwMTAyMykKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3dpbi9MYW5ndWFnZVdpbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNzcgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNyBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
Ci0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2luY2x1
ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkxhbmd1YWdlLmgiCi0KLSNpbmNsdWRlIDx3aW5kb3dz
Lmg+Ci0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmlu
Zy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXN0YXRpYyBTdHJpbmcgbG9jYWxlSW5mbyhM
Q1RZUEUgbG9jYWxlVHlwZSwgY29uc3QgU3RyaW5nJiBmYWxsYmFjaykKLXsKLSAgICBMQU5HSUQg
bGFuZ0lEID0gR2V0VXNlckRlZmF1bHRVSUxhbmd1YWdlKCk7Ci0gICAgaW50IGxvY2FsZUNoYXJz
ID0gR2V0TG9jYWxlSW5mbyhsYW5nSUQsIGxvY2FsZVR5cGUsIDAsIDApOwotICAgIGlmICghbG9j
YWxlQ2hhcnMpCi0gICAgICAgIHJldHVybiBmYWxsYmFjazsKLSAgICBVQ2hhciogbG9jYWxlTmFt
ZUJ1ZjsKLSAgICBTdHJpbmcgbG9jYWxlTmFtZSA9IFN0cmluZzo6Y3JlYXRlVW5pbml0aWFsaXpl
ZChsb2NhbGVDaGFycywgbG9jYWxlTmFtZUJ1Zik7Ci0gICAgbG9jYWxlQ2hhcnMgPSBHZXRMb2Nh
bGVJbmZvKGxhbmdJRCwgbG9jYWxlVHlwZSwgbG9jYWxlTmFtZUJ1ZiwgbG9jYWxlQ2hhcnMpOwot
ICAgIGlmICghbG9jYWxlQ2hhcnMpCi0gICAgICAgIHJldHVybiBmYWxsYmFjazsKLSAgICBpZiAo
bG9jYWxlTmFtZS5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBmYWxsYmFjazsKLQotICAgIGxv
Y2FsZU5hbWUudHJ1bmNhdGUobG9jYWxlTmFtZS5sZW5ndGgoKSAtIDEpOwotICAgIHJldHVybiBs
b2NhbGVOYW1lOwotfQotCi1zdGF0aWMgU3RyaW5nIHBsYXRmb3JtTGFuZ3VhZ2UoKQotewotICAg
IHN0YXRpYyBTdHJpbmcgY29tcHV0ZWREZWZhdWx0TGFuZ3VhZ2U7Ci0gICAgaWYgKCFjb21wdXRl
ZERlZmF1bHRMYW5ndWFnZS5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBjb21wdXRlZERlZmF1
bHRMYW5ndWFnZTsKLQotICAgIFN0cmluZyBsYW5ndWFnZU5hbWUgPSBsb2NhbGVJbmZvKExPQ0FM
RV9TSVNPNjM5TEFOR05BTUUsICJlbiIpOwotICAgIFN0cmluZyBjb3VudHJ5TmFtZSA9IGxvY2Fs
ZUluZm8oTE9DQUxFX1NJU08zMTY2Q1RSWU5BTUUsIFN0cmluZygpKTsKLQotICAgIGlmIChjb3Vu
dHJ5TmFtZS5pc0VtcHR5KCkpCi0gICAgICAgIGNvbXB1dGVkRGVmYXVsdExhbmd1YWdlID0gbGFu
Z3VhZ2VOYW1lOwotICAgIGVsc2UKLSAgICAgICAgY29tcHV0ZWREZWZhdWx0TGFuZ3VhZ2UgPSBs
YW5ndWFnZU5hbWUgKyAnLScgKyBjb3VudHJ5TmFtZTsKLQotICAgIHJldHVybiBjb21wdXRlZERl
ZmF1bHRMYW5ndWFnZTsKLX0KLQotVmVjdG9yPFN0cmluZz4gcGxhdGZvcm1Vc2VyUHJlZmVycmVk
TGFuZ3VhZ2VzKCkKLXsKLSAgICBWZWN0b3I8U3RyaW5nPiB1c2VyUHJlZmVycmVkTGFuZ3VhZ2Vz
OwotICAgIHVzZXJQcmVmZXJyZWRMYW5ndWFnZXMuYXBwZW5kKHBsYXRmb3JtTGFuZ3VhZ2UoKSk7
Ci0gICAgcmV0dXJuIHVzZXJQcmVmZXJyZWRMYW5ndWFnZXM7Ci19Ci0KLX0KSW5kZXg6IFNvdXJj
ZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VM
b2cJKHJldmlzaW9uIDIwMTAyMykKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBACisyMDE2LTA1LTE2ICBGaWxpcCBQaXpsbyAgPGZwaXps
b0BhcHBsZS5jb20+CisKKyAgICAgICAgV1RGIHNob3VsZCBrbm93IGFib3V0IExhbmd1YWdlCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTc3NTYKKwor
ICAgICAgICBSZXZpZXdlZCBieSBHZW9mZnJleSBHYXJlbiBhbmQgQWxleGV5IFByb3NrdXJ5YWtv
di4KKworICAgICAgICBSZXdpcmVzIGEgYnVuY2ggb2YgaW5jbHVkZXMvaW1wb3J0cy4KKworICAg
ICAgICAqIFNoYXJlZC9tYWMvUmVtb3RlTGF5ZXJUcmVlUHJvcGVydHlBcHBsaWVyLm1tOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9MYXVuY2hlci9tYWMvUHJvY2Vzc0xhdW5jaGVyTWFjLm1tOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9TY3JvbGxpbmcvaW9zL1Njcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9s
bGluZ05vZGVJT1MubW06CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9QbGF0Zm9y
bUNBQW5pbWF0aW9uUmVtb3RlLm1tOgorCiAyMDE2LTA1LTE3ICBKZXIgTm9ibGUgIDxqZXIubm9i
bGVAYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQgR1RLKyBhbmQgRUZMIGJ1bGlkIGZp
eDsgbWFrZSB0aGUgYXVkaW8gcGxheWJhY2sgdXNlciBnZXN0dXJlIHJlcXVpcmVtZW50CkluZGV4
OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL1JlbW90ZUxheWVyVHJlZVByb3BlcnR5QXBwbGll
ci5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL1JlbW90ZUxheWVy
VHJlZVByb3BlcnR5QXBwbGllci5tbQkocmV2aXNpb24gMjAxMDIzKQorKysgU291cmNlL1dlYktp
dDIvU2hhcmVkL21hYy9SZW1vdGVMYXllclRyZWVQcm9wZXJ0eUFwcGxpZXIubW0JKHdvcmtpbmcg
Y29weSkKQEAgLTMwLDEwICszMCwxMCBAQAogI2ltcG9ydCAiUGxhdGZvcm1DQUxheWVyUmVtb3Rl
LmgiCiAjaW1wb3J0ICJSZW1vdGVMYXllclRyZWVIb3N0LmgiCiAjaW1wb3J0IDxRdWFydHpDb3Jl
L1F1YXJ0ekNvcmUuaD4KLSNpbXBvcnQgPFdlYkNvcmUvQmxvY2tFeGNlcHRpb25zLmg+CiAjaW1w
b3J0IDxXZWJDb3JlL1BsYXRmb3JtQ0FGaWx0ZXJzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1F1YXJ0
ekNvcmVTUEkuaD4KICNpbXBvcnQgPFdlYkNvcmUvU2Nyb2xsYmFyVGhlbWVNYWMuaD4KKyNpbXBv
cnQgPHd0Zi9CbG9ja09iakNFeGNlcHRpb25zLmg+CiAKICNpZiBQTEFURk9STShJT1MpCiAjaW1w
b3J0IDxVSUtpdC9VSVZpZXcuaD4KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXVu
Y2hlci9tYWMvUHJvY2Vzc0xhdW5jaGVyTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9MYXVuY2hlci9tYWMvUHJvY2Vzc0xhdW5jaGVyTWFjLm1tCShyZXZpc2lv
biAyMDEwMjMpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF1bmNoZXIvbWFjL1Byb2Nl
c3NMYXVuY2hlck1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYsNiBAQAogI2ltcG9y
dCAiY29uZmlnLmgiCiAjaW1wb3J0ICJQcm9jZXNzTGF1bmNoZXIuaCIKIAotI2ltcG9ydCA8V2Vi
Q29yZS9DRkJ1bmRsZVNQSS5oPgogI2ltcG9ydCA8V2ViQ29yZS9TZXJ2ZXJzU1BJLmg+CiAjaW1w
b3J0IDxXZWJDb3JlL1NvZnRMaW5raW5nLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYkNvcmVOU1N0
cmluZ0V4dHJhcy5oPgpAQCAtNDEsNiArNDAsNyBAQAogI2ltcG9ydCA8d3RmL1J1bkxvb3AuaD4K
ICNpbXBvcnQgPHd0Zi9UaHJlYWRpbmcuaD4KICNpbXBvcnQgPHd0Zi9zcGkvZGFyd2luL1hQQ1NQ
SS5oPgorI2ltcG9ydCA8d3RmL3NwaS9jZi9DRkJ1bmRsZVNQSS5oPgogI2ltcG9ydCA8d3RmL3Rl
eHQvQ1N0cmluZy5oPgogI2ltcG9ydCA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKSW5kZXg6IFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9TY3JvbGxpbmcvaW9zL1Njcm9sbGluZ1RyZWVPdmVyZmxv
d1Njcm9sbGluZ05vZGVJT1MubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1Njcm9sbGluZy9pb3MvU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUy5t
bQkocmV2aXNpb24gMjAxMDIzKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1Njcm9sbGlu
Zy9pb3MvU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUy5tbQkod29ya2luZyBj
b3B5KQpAQCAtMzAsMTEgKzMwLDExIEBACiAjaWYgRU5BQkxFKEFTWU5DX1NDUk9MTElORykKIAog
I2ltcG9ydCA8UXVhcnR6Q29yZS9RdWFydHpDb3JlLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL0Jsb2Nr
RXhjZXB0aW9ucy5oPgogI2ltcG9ydCA8V2ViQ29yZS9TY3JvbGxpbmdTdGF0ZU92ZXJmbG93U2Ny
b2xsaW5nTm9kZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9TY3JvbGxpbmdUcmVlLmg+CiAjaW1wb3J0
IDxVSUtpdC9VSVBhbkdlc3R1cmVSZWNvZ25pemVyLmg+CiAjaW1wb3J0IDxVSUtpdC9VSVNjcm9s
bFZpZXcuaD4KKyNpbXBvcnQgPHd0Zi9CbG9ja09iakNFeGNlcHRpb25zLmg+CiAjaW1wb3J0IDx3
dGYvVGVtcG9yYXJ5Q2hhbmdlLmg+CiAKICNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQpJbmRl
eDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9QbGF0Zm9ybUNBQW5pbWF0
aW9uUmVtb3RlLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9tYWMvUGxhdGZvcm1DQUFuaW1hdGlvblJlbW90ZS5tbQkocmV2aXNpb24gMjAxMDIzKQor
KysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9QbGF0Zm9ybUNBQW5pbWF0
aW9uUmVtb3RlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yOSwxMyArMjksMTMgQEAKICNpbXBvcnQg
IkFyZ3VtZW50Q29kZXJzLmgiCiAjaW1wb3J0ICJSZW1vdGVMYXllclRyZWVIb3N0LmgiCiAjaW1w
b3J0ICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKLSNpbXBvcnQgPFdlYkNvcmUvQmxvY2tFeGNl
cHRpb25zLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0dyYXBoaWNzTGF5ZXIuaD4KICNpbXBvcnQgPFdl
YkNvcmUvUGxhdGZvcm1DQUFuaW1hdGlvbkNvY29hLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1BsYXRm
b3JtQ0FGaWx0ZXJzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1F1YXJ0ekNvcmVTUEkuaD4KICNpbXBv
cnQgPFdlYkNvcmUvVGV4dFN0cmVhbS5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaW1pbmdGdW5jdGlv
bi5oPgorI2ltcG9ydCA8d3RmL0Jsb2NrT2JqQ0V4Y2VwdGlvbnMuaD4KICNpbXBvcnQgPHd0Zi9D
dXJyZW50VGltZS5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogI2ltcG9ydCA8UXVhcnR6
Q29yZS9RdWFydHpDb3JlLmg+CkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMDEwMjMp
CisrKyBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyAr
MSwyMiBAQAorMjAxNi0wNS0xNiAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisg
ICAgICAgIFdURiBzaG91bGQga25vdyBhYm91dCBMYW5ndWFnZQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU3NzU2CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgR2VvZmZyZXkgR2FyZW4uCisKKyAgICAgICAgUmV3aXJlcyBhIGJ1bmNoIG9mIGluY2x1ZGVz
L2ltcG9ydHMuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9Qb3B1cE1lbnVNYWMubW06Cisg
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lm1tOgorICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tOgorICAgICAgICAqIFdlYkNvcmVT
dXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50Lm1tOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L1dlYk5vdGlmaWNhdGlvbkNsaWVudC5tbToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXMubW06CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViVXNlck1l
ZGlhQ2xpZW50Lm1tOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlZpc2l0ZWRMaW5rU3Rv
cmUubW06CisgICAgICAgICogV2ViVmlldy9XZWJIVE1MVmlldy5tbToKKwogMjAxNi0wNS0xMyAg
RW5yaWNhIENhc3VjY2kgIDxlbnJpY2FAYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSB1bnVz
ZWQgaW5pdGlhbGl6ZXIgZm9yIFdlYkV2ZW50IG9uIGlPUy4KSW5kZXg6IFNvdXJjZS9XZWJLaXQv
bWFjL1dlYkNvcmVTdXBwb3J0L1BvcHVwTWVudU1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9Qb3B1cE1lbnVNYWMubW0JKHJldmlzaW9uIDIwMTAy
MykKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1BvcHVwTWVudU1hYy5tbQko
d29ya2luZyBjb3B5KQpAQCAtMjQsNyArMjQsNiBAQAogI2ltcG9ydCAiV2ViRnJhbWVJbnRlcm5h
bC5oIgogI2ltcG9ydCA8V2ViQ29yZS9JbnRSZWN0Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0FYT2Jq
ZWN0Q2FjaGUuaD4KLSNpbXBvcnQgPFdlYkNvcmUvQmxvY2tFeGNlcHRpb25zLmg+CiAjaW1wb3J0
IDxXZWJDb3JlL0Nocm9tZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9DaHJvbWVDbGllbnQuaD4KICNp
bXBvcnQgPFdlYkNvcmUvRXZlbnRIYW5kbGVyLmg+CkBAIC0zNCw2ICszMyw3IEBACiAjaW1wb3J0
IDxXZWJDb3JlL1BhZ2UuaD4KICNpbXBvcnQgPFdlYkNvcmUvUG9wdXBNZW51Q2xpZW50Lmg+CiAj
aW1wb3J0IDxXZWJLaXRTeXN0ZW1JbnRlcmZhY2UuaD4KKyNpbXBvcnQgPHd0Zi9CbG9ja09iakNF
eGNlcHRpb25zLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lm1tCShy
ZXZpc2lvbiAyMDEwMjMpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJD
aHJvbWVDbGllbnQubW0JKHdvcmtpbmcgY29weSkKQEAgLTU0LDcgKzU0LDYgQEAKICNpbXBvcnQg
IldlYlZpZXcuaCIKICNpbXBvcnQgIldlYlZpZXdJbnRlcm5hbC5oIgogI2ltcG9ydCA8Rm91bmRh
dGlvbi9Gb3VuZGF0aW9uLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL0Jsb2NrRXhjZXB0aW9ucy5oPgog
I2ltcG9ydCA8V2ViQ29yZS9Db2xvckNob29zZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvQ29udGV4
dE1lbnUuaD4KICNpbXBvcnQgPFdlYkNvcmUvQ29udGV4dE1lbnVDb250cm9sbGVyLmg+CkBAIC04
Miw2ICs4MSw3IEBACiAjaW1wb3J0IDxXZWJDb3JlL1NlcmlhbGl6ZWRDcnlwdG9LZXlXcmFwLmg+
CiAjaW1wb3J0IDxXZWJDb3JlL1dpZGdldC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XaW5kb3dGZWF0
dXJlcy5oPgorI2ltcG9ydCA8d3RmL0Jsb2NrT2JqQ0V4Y2VwdGlvbnMuaD4KICNpbXBvcnQgPHd0
Zi9QYXNzUmVmUHRyLmg+CiAjaW1wb3J0IDx3dGYvVmVjdG9yLmg+CiAjaW1wb3J0IDx3dGYvdGV4
dC9XVEZTdHJpbmcuaD4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YkZyYW1lTG9hZGVyQ2xpZW50Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCShyZXZpc2lvbiAyMDEwMjMpCisr
KyBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5t
bQkod29ya2luZyBjb3B5KQpAQCAtNzYsNyArNzYsNiBAQAogI2ltcG9ydCA8V2ViQ29yZS9BdXRo
ZW50aWNhdGlvbk1hYy5oPgogI2ltcG9ydCA8V2ViQ29yZS9CYWNrRm9yd2FyZENvbnRyb2xsZXIu
aD4KICNpbXBvcnQgPFdlYkNvcmUvQmFja0ZvcndhcmRMaXN0Lmg+Ci0jaW1wb3J0IDxXZWJDb3Jl
L0Jsb2NrRXhjZXB0aW9ucy5oPgogI2ltcG9ydCA8V2ViQ29yZS9DYWNoZWRGcmFtZS5oPgogI2lt
cG9ydCA8V2ViQ29yZS9DaHJvbWUuaD4KICNpbXBvcnQgPFdlYkNvcmUvRE5TLmg+CkBAIC0xMjMs
NiArMTIyLDcgQEAKICNpbXBvcnQgPFdlYktpdExlZ2FjeS9ET01IVE1MRm9ybUVsZW1lbnQuaD4K
ICNpbXBvcnQgPFdlYktpdFN5c3RlbUludGVyZmFjZS5oPgogI2ltcG9ydCA8cnVudGltZS9Jbml0
aWFsaXplVGhyZWFkaW5nLmg+CisjaW1wb3J0IDx3dGYvQmxvY2tPYmpDRXhjZXB0aW9ucy5oPgog
I2ltcG9ydCA8d3RmL01haW5UaHJlYWQuaD4KICNpbXBvcnQgPHd0Zi9QYXNzUmVmUHRyLmg+CiAj
aW1wb3J0IDx3dGYvUnVuTG9vcC5oPgpJbmRleDogU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1
cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQubW0JKHJldmlzaW9uIDIw
MTAyMykKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9u
Q2xpZW50Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zMywxMCArMzMsMTAgQEAKICNpbXBvcnQgIldl
YlNlY3VyaXR5T3JpZ2luSW50ZXJuYWwuaCIKICNpbXBvcnQgIldlYlVJRGVsZWdhdGVQcml2YXRl
LmgiCiAjaW1wb3J0ICJXZWJWaWV3SW50ZXJuYWwuaCIKLSNpbXBvcnQgPFdlYkNvcmUvQmxvY2tF
eGNlcHRpb25zLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0RvY3VtZW50Lmg+CiAjaW1wb3J0IDxXZWJD
b3JlL0ZyYW1lLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0dlb2xvY2F0aW9uLmg+CisjaW1wb3J0IDx3
dGYvQmxvY2tPYmpDRXhjZXB0aW9ucy5oPgogCiAjaWYgUExBVEZPUk0oSU9TKQogI2ltcG9ydCA8
V2ViQ29yZS9XQUtSZXNwb25kZXIuaD4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYk5vdGlmaWNhdGlvbkNsaWVudC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJOb3RpZmljYXRpb25DbGllbnQubW0JKHJldmlzaW9u
IDIwMTAyMykKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYk5vdGlmaWNh
dGlvbkNsaWVudC5tbQkod29ya2luZyBjb3B5KQpAQCAtMzIsOSArMzIsOSBAQAogI2ltcG9ydCAi
V2ViU2VjdXJpdHlPcmlnaW5JbnRlcm5hbC5oIgogI2ltcG9ydCAiV2ViVUlEZWxlZ2F0ZVByaXZh
dGUuaCIKICNpbXBvcnQgIldlYlZpZXdJbnRlcm5hbC5oIgotI2ltcG9ydCA8V2ViQ29yZS9CbG9j
a0V4Y2VwdGlvbnMuaD4KICNpbXBvcnQgPFdlYkNvcmUvUGFnZS5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9TY3JpcHRFeGVjdXRpb25Db250ZXh0Lmg+CisjaW1wb3J0IDx3dGYvQmxvY2tPYmpDRXhjZXB0
aW9ucy5oPgogI2VuZGlmCiAKICNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0
cmF0ZWdpZXMubW0JKHJldmlzaW9uIDIwMTAyMykKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbQkod29ya2luZyBjb3B5KQpAQCAtMzAs
NyArMzAsNiBAQAogI2ltcG9ydCAiV2ViUGx1Z2luUGFja2FnZS5oIgogI2ltcG9ydCAiV2ViUmVz
b3VyY2VMb2FkU2NoZWR1bGVyLmgiCiAjaW1wb3J0IDxXZWJDb3JlL0Jsb2JSZWdpc3RyeUltcGwu
aD4KLSNpbXBvcnQgPFdlYkNvcmUvQmxvY2tFeGNlcHRpb25zLmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L0NvbG9yLmg+CiAjaW1wb3J0IDxXZWJDb3JlL01haW5GcmFtZS5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9QYWdlLmg+CkBAIC00MCw2ICszOSw3IEBACiAjaW1wb3J0IDxXZWJDb3JlL1NoYXJlZEJ1ZmZl
ci5oPgogI2ltcG9ydCA8V2ViQ29yZS9TdWJmcmFtZUxvYWRlci5oPgogI2ltcG9ydCA8V2ViS2l0
U3lzdGVtSW50ZXJmYWNlLmg+CisjaW1wb3J0IDx3dGYvQmxvY2tPYmpDRXhjZXB0aW9ucy5oPgog
I2ltcG9ydCA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OwpJbmRleDogU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViVXNlck1lZGlhQ2xp
ZW50Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YlVzZXJNZWRpYUNsaWVudC5tbQkocmV2aXNpb24gMjAxMDIzKQorKysgU291cmNlL1dlYktpdC9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViVXNlck1lZGlhQ2xpZW50Lm1tCSh3b3JraW5nIGNvcHkpCkBA
IC0zMSwxMSArMzEsMTEgQEAKICNpbXBvcnQgIldlYlNlY3VyaXR5T3JpZ2luSW50ZXJuYWwuaCIK
ICNpbXBvcnQgIldlYlVJRGVsZWdhdGVQcml2YXRlLmgiCiAjaW1wb3J0ICJXZWJWaWV3SW50ZXJu
YWwuaCIKLSNpbXBvcnQgPFdlYkNvcmUvQmxvY2tFeGNlcHRpb25zLmg+CiAjaW1wb3J0IDxXZWJD
b3JlL1BhZ2UuaD4KICNpbXBvcnQgPFdlYkNvcmUvU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oPgog
I2ltcG9ydCA8V2ViQ29yZS9Vc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2suaD4KICNpbXBvcnQgPFdl
YkNvcmUvVXNlck1lZGlhUmVxdWVzdC5oPgorI2ltcG9ydCA8d3RmL0Jsb2NrT2JqQ0V4Y2VwdGlv
bnMuaD4KICNpbXBvcnQgPHd0Zi9IYXNoTWFwLmg+CiAjaW1wb3J0IDx3dGYvTmV2ZXJEZXN0cm95
ZWQuaD4KICNpbXBvcnQgPHd0Zi9SZWZQdHIuaD4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYlZpc2l0ZWRMaW5rU3RvcmUubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViVmlzaXRlZExpbmtTdG9yZS5tbQkocmV2aXNp
b24gMjAxMDIzKQorKysgU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViVmlzaXRl
ZExpbmtTdG9yZS5tbQkod29ya2luZyBjb3B5KQpAQCAtMjksOCArMjksOCBAQAogI2ltcG9ydCAi
V2ViRnJhbWVJbnRlcm5hbC5oIgogI2ltcG9ydCAiV2ViSGlzdG9yeUludGVybmFsLmgiCiAjaW1w
b3J0ICJXZWJWaWV3SW50ZXJuYWwuaCIKLSNpbXBvcnQgPFdlYkNvcmUvQmxvY2tFeGNlcHRpb25z
Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1BhZ2VDYWNoZS5oPgorI2ltcG9ydCA8d3RmL0Jsb2NrT2Jq
Q0V4Y2VwdGlvbnMuaD4KICNpbXBvcnQgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCiB1c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRN
TFZpZXcubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJIVE1M
Vmlldy5tbQkocmV2aXNpb24gMjAxMDIzKQorKysgU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9X
ZWJIVE1MVmlldy5tbQkod29ya2luZyBjb3B5KQpAQCAtNzIsNyArNzIsNiBAQAogI2ltcG9ydCAi
V2ViVHlwZXNJbnRlcm5hbC5oIgogI2ltcG9ydCAiV2ViVUlEZWxlZ2F0ZVByaXZhdGUuaCIKICNp
bXBvcnQgIldlYlZpZXdJbnRlcm5hbC5oIgotI2ltcG9ydCA8V2ViQ29yZS9CbG9ja0V4Y2VwdGlv
bnMuaD4KICNpbXBvcnQgPFdlYkNvcmUvQ1NTU3R5bGVEZWNsYXJhdGlvbi5oPgogI2ltcG9ydCA8
V2ViQ29yZS9DYWNoZWRJbWFnZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9DYWNoZWRSZXNvdXJjZUNs
aWVudC5oPgpAQCAtMTMzLDYgKzEzMiw3IEBACiAjaW1wb3J0IDxkbGZjbi5oPgogI2ltcG9ydCA8
bGltaXRzPgogI2ltcG9ydCA8cnVudGltZS9Jbml0aWFsaXplVGhyZWFkaW5nLmg+CisjaW1wb3J0
IDx3dGYvQmxvY2tPYmpDRXhjZXB0aW9ucy5oPgogI2ltcG9ydCA8d3RmL01haW5UaHJlYWQuaD4K
ICNpbXBvcnQgPHd0Zi9NYXRoRXh0cmFzLmg+CiAjaW1wb3J0IDx3dGYvT2JqY1J1bnRpbWVFeHRy
YXMuaD4K
</data>

          </attachment>
      

    </bug>

</bugzilla>