<?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>70659</bug_id>
          
          <creation_ts>2011-10-21 16:13:42 -0700</creation_ts>
          <short_desc>EventTarget.h shouldn&apos;t need to know about every feature and ifdef</short_desc>
          <delta_ts>2011-10-25 14:58:36 -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>UI Events</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Adam Barth">abarth</reporter>
          <assigned_to name="Adam Barth">abarth</assigned_to>
          <cc>abarth</cc>
    
    <cc>darin</cc>
    
    <cc>eric</cc>
    
    <cc>gustavo</cc>
    
    <cc>japhet</cc>
    
    <cc>rakuco</cc>
    
    <cc>sam</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>488750</commentid>
    <comment_count>0</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-10-21 16:13:42 -0700</bug_when>
    <thetext>EventTarget.h shouldn&apos;t need to know about every feature and ifdef</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>488751</commentid>
    <comment_count>1</comment_count>
      <attachid>112040</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-10-21 16:14:11 -0700</bug_when>
    <thetext>Created attachment 112040
work in progress</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>488820</commentid>
    <comment_count>2</comment_count>
      <attachid>112059</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-10-21 19:22:15 -0700</bug_when>
    <thetext>Created attachment 112059
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>488821</commentid>
    <comment_count>3</comment_count>
      <attachid>112059</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2011-10-21 19:37:22 -0700</bug_when>
    <thetext>Comment on attachment 112059
Patch

Attachment 112059 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/10203066</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>488822</commentid>
    <comment_count>4</comment_count>
      <attachid>112059</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2011-10-21 19:42:17 -0700</bug_when>
    <thetext>Comment on attachment 112059
Patch

Attachment 112059 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/10203067</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>488834</commentid>
    <comment_count>5</comment_count>
      <attachid>112059</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2011-10-21 20:20:52 -0700</bug_when>
    <thetext>Comment on attachment 112059
Patch

Attachment 112059 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/10202093</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>488975</commentid>
    <comment_count>6</comment_count>
      <attachid>112101</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-10-22 17:49:46 -0700</bug_when>
    <thetext>Created attachment 112101
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>488976</commentid>
    <comment_count>7</comment_count>
      <attachid>112101</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-10-22 18:04:28 -0700</bug_when>
    <thetext>Comment on attachment 112101
Patch

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

&gt; Source/WebCore/CMakeLists.txt:2351
&gt; +GENERATE_EVENT_FACTORY(${WEBCORE_DIR}/dom/EventTargetFactory.in EventInterfaces.h)

Not immediately obvious to me why one of these is passed a .cpp file and the other a .h.

&gt; Source/WebCore/dom/EventTarget.h:-109
&gt; -        virtual XMLHttpRequest* toXMLHttpRequest();
&gt; -        virtual XMLHttpRequestUpload* toXMLHttpRequestUpload();
&gt; -        virtual DOMApplicationCache* toDOMApplicationCache();

Can you remove a zillion includes to this file now?  Or certainly class declarations?

&gt; Source/WebCore/dom/make_event_factory.pl:65
&gt; +printFactoryFile(&quot;$outputDir/${namespace}Factory.cpp&quot;) if $namespace eq &quot;Event&quot;;

Feels like a hack.  Why not have a --factory option like the other generator has?

&gt; Source/WebCore/dom/make_event_factory.pl:134
&gt; +    return &quot;EVENT&quot; if $camelCase eq &quot;Event&quot;;
&gt; +    return &quot;EVENT_TARGET&quot; if $camelCase eq &quot;EventTarget&quot;;

Why not pass this in?  Or at least put this at the very top of the file where other assumptions like this should be made?

&gt; Source/WebCore/dom/make_event_factory.pl:151
&gt; +    print F &quot;#include \&quot;${namespace}Factory.h\&quot;\n&quot;;
&gt;      print F &quot;\n&quot;;
&gt; -    print F &quot;#include \&quot;EventHeaders.h\&quot;\n&quot;;
&gt; +    print F &quot;#include \&quot;${namespace}Headers.h\&quot;\n&quot;;

Namespace seems like the wrong word.  Just Name?  Or prefix?

&gt; Source/WebCore/dom/make_event_factory.pl:248
&gt; +    print F &quot;#ifndef ${namespace}Headers_h\n&quot;;

Does the other script use namespace for this varaible?  Certainly the make_names script must have something like this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>488979</commentid>
    <comment_count>8</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-10-22 18:18:46 -0700</bug_when>
    <thetext>&gt; &gt; Source/WebCore/CMakeLists.txt:2351
&gt; &gt; +GENERATE_EVENT_FACTORY(${WEBCORE_DIR}/dom/EventTargetFactory.in EventInterfaces.h)
&gt; 
&gt; Not immediately obvious to me why one of these is passed a .cpp file and the other a .h.

The Event one creates a CPP file that backs document.createEvent.  There is not document.createEventTarget, so no CPP file is needed.

&gt; &gt; Source/WebCore/dom/EventTarget.h:-109
&gt; &gt; -        virtual XMLHttpRequest* toXMLHttpRequest();
&gt; &gt; -        virtual XMLHttpRequestUpload* toXMLHttpRequestUpload();
&gt; &gt; -        virtual DOMApplicationCache* toDOMApplicationCache();
&gt; 
&gt; Can you remove a zillion includes to this file now?  Or certainly class declarations?

Yes!  I can also remove a zillion includes from JSEventTarget.cpp.  Will do in a followup patch.

&gt; &gt; Source/WebCore/dom/make_event_factory.pl:65
&gt; &gt; +printFactoryFile(&quot;$outputDir/${namespace}Factory.cpp&quot;) if $namespace eq &quot;Event&quot;;
&gt; 
&gt; Feels like a hack.  Why not have a --factory option like the other generator has?

It is a hack!  We can generalize now, or wait until we actually need the generality.

&gt; &gt; Source/WebCore/dom/make_event_factory.pl:134
&gt; &gt; +    return &quot;EVENT&quot; if $camelCase eq &quot;Event&quot;;
&gt; &gt; +    return &quot;EVENT_TARGET&quot; if $camelCase eq &quot;EventTarget&quot;;
&gt; 
&gt; Why not pass this in?  Or at least put this at the very top of the file where other assumptions like this should be made?

We could.  I have a dream of actually just doing the case conversion at some point.  It seemed like overkill to do it now though.

&gt; &gt; Source/WebCore/dom/make_event_factory.pl:151
&gt; &gt; +    print F &quot;#include \&quot;${namespace}Factory.h\&quot;\n&quot;;
&gt; &gt;      print F &quot;\n&quot;;
&gt; &gt; -    print F &quot;#include \&quot;EventHeaders.h\&quot;\n&quot;;
&gt; &gt; +    print F &quot;#include \&quot;${namespace}Headers.h\&quot;\n&quot;;
&gt; 
&gt; Namespace seems like the wrong word.  Just Name?  Or prefix?

The namespace terminology came from the HTML and SVG &quot;in&quot; files which use HTML and SVG as their namespace, respectively.  I&apos;m happy to rename the variable to whatever you like.

&gt; &gt; Source/WebCore/dom/make_event_factory.pl:248
&gt; &gt; +    print F &quot;#ifndef ${namespace}Headers_h\n&quot;;
&gt; 
&gt; Does the other script use namespace for this varaible?  Certainly the make_names script must have something like this.

I&apos;m not sure how make_names create include guards.  I can certainly investigate.  The make_names code generator uses a somewhat different approach than we&apos;re using here.  For example, make_names needs to know about both JSC and V8 where as this script doesn&apos;t know about either.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>488992</commentid>
    <comment_count>9</comment_count>
      <attachid>112104</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-10-22 21:12:18 -0700</bug_when>
    <thetext>Created attachment 112104
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>488993</commentid>
    <comment_count>10</comment_count>
      <attachid>112104</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2011-10-22 21:22:28 -0700</bug_when>
    <thetext>Comment on attachment 112104
Patch

Attachment 112104 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/10203305</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>488994</commentid>
    <comment_count>11</comment_count>
      <attachid>112104</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2011-10-22 21:25:59 -0700</bug_when>
    <thetext>Comment on attachment 112104
Patch

Attachment 112104 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/10203306</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>489127</commentid>
    <comment_count>12</comment_count>
      <attachid>112104</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-10-23 21:01:44 -0700</bug_when>
    <thetext>Comment on attachment 112104
Patch

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

review+ but note that this broke both Qt and EFL so it could have been a &quot;review- because it breaks the build&quot;

&gt; Source/WebCore/bindings/js/JSEventTarget.cpp:119
&gt; +    AtomicString desiredInterface = target-&gt;interfaceName();

This can be const AtomicString&amp; because there is no need to increment/decrement the reference count here.

&gt; Source/WebCore/bindings/js/WorkerScriptController.cpp:89
&gt; -        m_workerContextWrapper.set(*m_globalData, JSDedicatedWorkerContext::create(*m_globalData, structure, m_workerContext-&gt;toDedicatedWorkerContext()));
&gt; +        m_workerContextWrapper.set(*m_globalData, JSDedicatedWorkerContext::create(*m_globalData, structure, static_cast&lt;DedicatedWorkerContext*&gt;(m_workerContext)));

Would be nice to have the cast checked in debug builds.

&gt; Source/WebCore/bindings/v8/V8DOMWrapper.cpp:346
&gt; +    AtomicString desiredInterface = target-&gt;interfaceName();

Ditto.

&gt; Source/WebCore/dom/EventTargetFactory.in:4
&gt; +namespace=&quot;EventTarget&quot;
&gt; +
&gt; +EventSource
&gt; +MessagePort

Since these files are often in alphabetical order, I’d like to see a comment explaining what the order is and why.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>489144</commentid>
    <comment_count>13</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-10-23 21:35:27 -0700</bug_when>
    <thetext>Thanks for the review.  I&apos;m make sure to the patch builds before landing it.

&gt; Since these files are often in alphabetical order, I’d like to see a comment explaining what the order is and why.

I think I just used the same order they used to be in EventTarget.h.  I&apos;ll alphabetize them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>489163</commentid>
    <comment_count>14</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-10-23 22:07:51 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; &gt; Since these files are often in alphabetical order, I’d like to see a comment explaining what the order is and why.
&gt; 
&gt; I think I just used the same order they used to be in EventTarget.h.  I&apos;ll alphabetize them.

Could that have any effects? It might have some performance effect, if the common types were at the top of the cascade of ifs before and aren’t any more. I suppose there is no overlap of these interfaces, by definition. (If there was, then we’d need to be careful about specific before general.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>489168</commentid>
    <comment_count>15</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-10-23 22:14:40 -0700</bug_when>
    <thetext>I&apos;ll write a microbenchmark to see if I can measure a difference.  I suspect we won&apos;t be able to, but it&apos;s worth checking.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>489637</commentid>
    <comment_count>16</comment_count>
      <attachid>112245</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-10-24 14:18:58 -0700</bug_when>
    <thetext>Created attachment 112245
for EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>489647</commentid>
    <comment_count>17</comment_count>
      <attachid>112245</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2011-10-24 14:32:59 -0700</bug_when>
    <thetext>Comment on attachment 112245
for EWS

Attachment 112245 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/10201902</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>489648</commentid>
    <comment_count>18</comment_count>
      <attachid>112249</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-10-24 14:33:04 -0700</bug_when>
    <thetext>Created attachment 112249
Microbenchmark</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>489649</commentid>
    <comment_count>19</comment_count>
      <attachid>112249</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-10-24 14:33:35 -0700</bug_when>
    <thetext>Comment on attachment 112249
Microbenchmark

Oops.  Not for review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>489971</commentid>
    <comment_count>20</comment_count>
      <attachid>112245</attachid>
    <who name="Raphael Kubo da Costa (:rakuco)">rakuco</who>
    <bug_when>2011-10-25 05:22:44 -0700</bug_when>
    <thetext>Comment on attachment 112245
for EWS

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

&gt; Source/WebCore/CMakeLists.txt:2319
&gt; +GENERATE_EVENT_FACTORY(${WEBCORE_DIR}/dom/EventTargetFactory.in EventInterfaces.h)

Shouldn&apos;t this be EventTargetInterfaces.h?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>490127</commentid>
    <comment_count>21</comment_count>
      <attachid>112245</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-10-25 10:39:29 -0700</bug_when>
    <thetext>Comment on attachment 112245
for EWS

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

&gt;&gt; Source/WebCore/CMakeLists.txt:2319
&gt;&gt; +GENERATE_EVENT_FACTORY(${WEBCORE_DIR}/dom/EventTargetFactory.in EventInterfaces.h)
&gt; 
&gt; Shouldn&apos;t this be EventTargetInterfaces.h?

You&apos;re totally right.  Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>490168</commentid>
    <comment_count>22</comment_count>
      <attachid>112363</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-10-25 11:16:17 -0700</bug_when>
    <thetext>Created attachment 112363
for EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>490191</commentid>
    <comment_count>23</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-10-25 11:46:11 -0700</bug_when>
    <thetext>Sigh, that didn&apos;t help.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>490197</commentid>
    <comment_count>24</comment_count>
      <attachid>112363</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2011-10-25 11:55:06 -0700</bug_when>
    <thetext>Comment on attachment 112363
for EWS

Attachment 112363 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/10208419</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>490264</commentid>
    <comment_count>25</comment_count>
    <who name="Raphael Kubo da Costa (:rakuco)">rakuco</who>
    <bug_when>2011-10-25 12:57:02 -0700</bug_when>
    <thetext>Alright, so the macro call in Source/WebCore/CMakeLists.txt called add_custom_output, which generated a make target but nothing depended on it, so the Perl script was never called.

Adding

  ADD_SOURCE_WEBCORE_DERIVED_DEPENDENCIES(${WEBCORE_DIR}/dom/EventNames.cpp EventTargetInterfaces.h)

after the GENERATE_EVENT_FACTORY call should fix the problem.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>490270</commentid>
    <comment_count>26</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-10-25 13:02:15 -0700</bug_when>
    <thetext>That makes sense.  I&apos;ll give that a try.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>490272</commentid>
    <comment_count>27</comment_count>
      <attachid>112381</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-10-25 13:04:16 -0700</bug_when>
    <thetext>Created attachment 112381
for EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>490313</commentid>
    <comment_count>28</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-10-25 13:40:53 -0700</bug_when>
    <thetext>Yay!  Success.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>490317</commentid>
    <comment_count>29</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-10-25 13:43:04 -0700</bug_when>
    <thetext>Committed r98388: &lt;http://trac.webkit.org/changeset/98388&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>490393</commentid>
    <comment_count>30</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-10-25 14:58:36 -0700</bug_when>
    <thetext>Sorting the file (with benchmark) are in https://bugs.webkit.org/show_bug.cgi?id=70855</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>112040</attachid>
            <date>2011-10-21 16:14:11 -0700</date>
            <delta_ts>2011-10-21 19:22:12 -0700</delta_ts>
            <desc>work in progress</desc>
            <filename>bug-70659-20111021161410.patch</filename>
            <type>text/plain</type>
            <size>7266</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDk4MTY1KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTEtMTAtMjEgIEFkYW0gQmFy
dGggIDxhYmFydGhAd2Via2l0Lm9yZz4KKworICAgICAgICBFdmVudFRhcmdldC5oIHNob3VsZG4n
dCBuZWVkIHRvIGtub3cgYWJvdXQgZXZlcnkgZmVhdHVyZSBhbmQgaWZkZWYKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcwNjU5CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiAoT09QUyEp
CisKKyAgICAgICAgKiBkb20vRXZlbnRUYXJnZXRGYWN0b3J5LmluOiBBZGRlZC4KKyAgICAgICAg
KiBkb20vbWFrZV9ldmVudF9mYWN0b3J5LnBsOgorCiAyMDExLTEwLTIxICBBZGFtIEJhcnRoICA8
YWJhcnRoQHdlYmtpdC5vcmc+CiAKICAgICAgICAgSW50cm9kdWNlIEV2ZW50OjpoYXNJbnRlcmZh
Y2UgdG8gbWFrZSB1c2VzIG9mIGludGVyZmFjZU5hbWUgbW9yZSByZWFkYWJsZQpJbmRleDogU291
cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0RmFjdG9yeS5pbgo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXRGYWN0b3J5LmluCShyZXZpc2lvbiAwKQorKysgU291
cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0RmFjdG9yeS5pbgkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSwyNyBAQAorbmFtZXNwYWNlPSJFdmVudFRhcmdldCIKKworRXZlbnRTb3VyY2UKK01lc3Nh
Z2VQb3J0CitOb2RlCitET01XaW5kb3cKK1hNTEh0dHBSZXF1ZXN0CitYTUxIdHRwUmVxdWVzdFVw
bG9hZAorRE9NQXBwbGljYXRpb25DYWNoZQorU1ZHRWxlbWVudEluc3RhbmNlIGNvbmRpdGlvbmFs
PVNWRworV29ya2VyIGNvbmRpdGlvbmFsPVdPUktFUlMKK0RlZGljYXRlZFdvcmtlckNvbnRleHQg
Y29uZGl0aW9uYWw9V09SS0VSUworU2hhcmVkV29ya2VyIGNvbmRpdGlvbmFsPVNIQVJFRF9XT1JL
RVJTCitTaGFyZWRXb3JrZXJDb250ZXh0IGNvbmRpdGlvbmFsPVNIQVJFRF9XT1JLRVJTCitBdWRp
b0NvbnRleHQgY29uZGl0aW9uYWw9V0VCX0FVRElPCitKYXZhU2NyaXB0QXVkaW9Ob2RlIGNvbmRp
dGlvbmFsPVdFQl9BVURJTworV2ViU29ja2V0IGNvbmRpdGlvbmFsPVdFQl9TT0NLRVRTCitOb3Rp
ZmljYXRpb24gY29uZGl0aW9uYWw9Tk9USUZJQ0FUSU9OUworRmlsZVJlYWRlciBjb25kaXRpb25h
bD1CTE9CCitGaWxlV3JpdGVyIGNvbmRpdGlvbmFsPUZJTEVfU1lTVEVNCitJREJEYXRhYmFzZSBj
b25kaXRpb25hbD1JTkRFWEVEX0RBVEFCQVNFCitJREJSZXF1ZXN0IGNvbmRpdGlvbmFsPUlOREVY
RURfREFUQUJBU0UKK0lEQlRyYW5zYWN0aW9uIGNvbmRpdGlvbmFsPUlOREVYRURfREFUQUJBU0UK
K0lEQlZlcnNpb25DaGFuZ2VSZXF1ZXN0IGNvbmRpdGlvbmFsPUlOREVYRURfREFUQUJBU0UKK01l
ZGlhU3RyZWFtIGNvbmRpdGlvbmFsPU1FRElBX1NUUkVBTQorTG9jYWxNZWRpYVN0cmVhbSBjb25k
aXRpb25hbD1NRURJQV9TVFJFQU0KK1BlZXJDb25uZWN0aW9uIGNvbmRpdGlvbmFsPU1FRElBX1NU
UkVBTQpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL21ha2VfZXZlbnRfZmFjdG9yeS5wbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vbWFrZV9ldmVudF9mYWN0b3J5LnBsCShyZXZp
c2lvbiA5ODE1MSkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9tYWtlX2V2ZW50X2ZhY3RvcnkucGwJ
KHdvcmtpbmcgY29weSkKQEAgLTQ3LDYgKzQ3LDcgQEAgc3ViIHByaW50SGVhZGVyc0ZpbGUoJCk7
CiBteSAkZXZlbnRzRmlsZSA9ICIiOwogbXkgJG91dHB1dERpciA9ICIuIjsKIG15ICVwYXJzZWRF
dmVudHMgPSAoKTsKK215ICRuYW1lc3BhY2U7CiAKIHJlcXVpcmUgQ29uZmlnOwogCkBAIC02MSw5
ICs2Miw5IEBAIGRpZSAiWW91IG11c3Qgc3BlY2lmeSAtLWV2ZW50cyA8ZmlsZT4iIHUKIAogbXkg
JWV2ZW50cyA9ICV7cmVhZEV2ZW50cygkZXZlbnRzRmlsZSl9OwogCi1wcmludEZhY3RvcnlGaWxl
KCIkb3V0cHV0RGlyL0V2ZW50RmFjdG9yeS5jcHAiKTsKLXByaW50TWFjcm9GaWxlKCIkb3V0cHV0
RGlyL0V2ZW50SW50ZXJmYWNlcy5oIik7Ci1wcmludEhlYWRlcnNGaWxlKCIkb3V0cHV0RGlyL0V2
ZW50SGVhZGVycy5oIik7CitwcmludEZhY3RvcnlGaWxlKCIkb3V0cHV0RGlyLyR7bmFtZXNwYWNl
fUZhY3RvcnkuY3BwIikgaWYgJG5hbWVzcGFjZSBlcSAiRXZlbnQiOworcHJpbnRNYWNyb0ZpbGUo
IiRvdXRwdXREaXIvJHtuYW1lc3BhY2V9SW50ZXJmYWNlcy5oIik7CitwcmludEhlYWRlcnNGaWxl
KCIkb3V0cHV0RGlyLyR7bmFtZXNwYWNlfUhlYWRlcnMuaCIpOwogCiBzdWIgZGVmYXVsdEV2ZW50
UHJvcGVydHlIYXNoCiB7CkBAIC04OSw3ICs5MCw4IEBAIHN1YiBwYXJhbWV0ZXJzSGFuZGxlcgog
ewogICAgIG15ICgkcGFyYW1ldGVyLCAkdmFsdWUpID0gQF87CiAKLSAgICBkaWUgIlVua25vd24g
cGFyYW1ldGVyICRwYXJhbWV0ZXIgZm9yIGV2ZW50c1xuIiB1bmxlc3MgJHBhcmFtZXRlciBlcSAi
bmFtZXNwYWNlIjsKKyAgICBkaWUgIlVua25vd24gcGFyYW1ldGVyICRwYXJhbWV0ZXJcbiIgdW5s
ZXNzICRwYXJhbWV0ZXIgZXEgIm5hbWVzcGFjZSI7CisgICAgJG5hbWVzcGFjZSA9ICR2YWx1ZTsK
IH0KIAogc3ViIHJlYWROYW1lcygkJCQpCkBAIC0xMjQsNiArMTI2LDE2IEBAIHN1YiBpbnRlcmZh
Y2VGb3JFdmVudCgkKQogICAgIHJldHVybiAkaW50ZXJmYWNlTmFtZTsKIH0KIAorc3ViIHRvTWFj
cm9TdHlsZSgkKQoreworICAgIG15ICgkY2FtZWxDYXNlKSA9IEBfOworCisgICAgcmV0dXJuICJF
VkVOVCIgaWYgJGNhbWVsQ2FzZSBlcSAiRXZlbnQiOworICAgIHJldHVybiAiRVZFTlRfVEFSR0VU
IiBpZiAkY2FtZWxDYXNlIGVxICJFdmVudFRhcmdldCI7CisKKyAgICBkaWUgIk9rLCB5b3UgZ290
IG1lLiBUaGlzIHNjcmlwdCBpcyByZWFsbHkganVzdCBhIGdpYW50IGhhY2suIjsKK30KKwogc3Vi
IHByaW50RmFjdG9yeUZpbGUoJCkKIHsKICAgICBteSAkcGF0aCA9IHNoaWZ0OwpAQCAtMTM0LDEz
ICsxNDYsMTMgQEAgc3ViIHByaW50RmFjdG9yeUZpbGUoJCkKICAgICBwcmludExpY2Vuc2VIZWFk
ZXIoJEYpOwogCiAgICAgcHJpbnQgRiAiI2luY2x1ZGUgXCJjb25maWcuaFwiXG4iOwotICAgIHBy
aW50IEYgIiNpbmNsdWRlIFwiRXZlbnRGYWN0b3J5LmhcIlxuIjsKKyAgICBwcmludCBGICIjaW5j
bHVkZSBcIiR7bmFtZXNwYWNlfUZhY3RvcnkuaFwiXG4iOwogICAgIHByaW50IEYgIlxuIjsKLSAg
ICBwcmludCBGICIjaW5jbHVkZSBcIkV2ZW50SGVhZGVycy5oXCJcbiI7CisgICAgcHJpbnQgRiAi
I2luY2x1ZGUgXCIke25hbWVzcGFjZX1IZWFkZXJzLmhcIlxuIjsKICAgICBwcmludCBGICJcbiI7
CiAgICAgcHJpbnQgRiAibmFtZXNwYWNlIFdlYkNvcmUge1xuIjsKICAgICBwcmludCBGICJcbiI7
Ci0gICAgcHJpbnQgRiAiUGFzc1JlZlB0cjxFdmVudD4gRXZlbnRGYWN0b3J5OjpjcmVhdGUoY29u
c3QgU3RyaW5nJiBldmVudFR5cGUpXG4iOworICAgIHByaW50IEYgIlBhc3NSZWZQdHI8JG5hbWVz
cGFjZT4gJHtuYW1lc3BhY2V9RmFjdG9yeTo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgdHlwZSlcbiI7
CiAgICAgcHJpbnQgRiAie1xuIjsKIAogICAgIGZvciBteSAkZXZlbnROYW1lIChzb3J0IGtleXMg
JXBhcnNlZEV2ZW50cykgewpAQCAtMTQ4LDcgKzE2MCw3IEBAIHN1YiBwcmludEZhY3RvcnlGaWxl
KCQpCiAgICAgICAgIG15ICRpbnRlcmZhY2VOYW1lID0gaW50ZXJmYWNlRm9yRXZlbnQoJGV2ZW50
TmFtZSk7CiAKICAgICAgICAgcHJpbnQgRiAiI2lmIEVOQUJMRSgkY29uZGl0aW9uYWwpXG4iIGlm
ICRjb25kaXRpb25hbDsKLSAgICAgICAgcHJpbnQgRiAiICAgIGlmIChldmVudFR5cGUgPT0gXCIk
ZXZlbnROYW1lXCIpXG4iOworICAgICAgICBwcmludCBGICIgICAgaWYgKHR5cGUgPT0gXCIkZXZl
bnROYW1lXCIpXG4iOwogICAgICAgICBwcmludCBGICIgICAgICAgIHJldHVybiAke2ludGVyZmFj
ZU5hbWV9OjpjcmVhdGUoKTtcbiI7CiAgICAgICAgIHByaW50IEYgIiNlbmRpZlxuIiBpZiAkY29u
ZGl0aW9uYWw7CiAgICAgfQpAQCAtMTY5LDggKzE4MSw4IEBAIHN1YiBwcmludE1hY3JvRmlsZSgk
KQogCiAgICAgcHJpbnRMaWNlbnNlSGVhZGVyKCRGKTsKIAotICAgIHByaW50IEYgIiNpZm5kZWYg
RXZlbnRJbnRlcmZhY2VzX2hcbiI7Ci0gICAgcHJpbnQgRiAiI2RlZmluZSBFdmVudEludGVyZmFj
ZXNfaFxuIjsKKyAgICBwcmludCBGICIjaWZuZGVmICR7bmFtZXNwYWNlfUludGVyZmFjZXNfaFxu
IjsKKyAgICBwcmludCBGICIjZGVmaW5lICR7bmFtZXNwYWNlfUludGVyZmFjZXNfaFxuIjsKICAg
ICBwcmludCBGICJcbiI7CiAKICAgICBteSAldW5jb25kaXRpb25hbEludGVyZmFjZXMgPSAoKTsK
QEAgLTE5MCwzNCArMjAyLDM2IEBAIHN1YiBwcmludE1hY3JvRmlsZSgkKQogICAgICAgICB9CiAg
ICAgfQogCisgICAgbXkgJG1hY3JvU3R5bGVkTmFtZXNwYWNlID0gdG9NYWNyb1N0eWxlKCRuYW1l
c3BhY2UpOworCiAgICAgZm9yIG15ICRjb25kaXRpb25hbCAoc29ydCBrZXlzICVpbnRlcmZhY2Vz
QnlDb25kaXRpb25hbCkgewogICAgICAgICBwcmludCBGICIjaWYgRU5BQkxFKCRjb25kaXRpb25h
bClcbiI7Ci0gICAgICAgIHByaW50IEYgIiNkZWZpbmUgRE9NX0VWRU5UX0lOVEVSRkFDRVNfRk9S
X0VBQ0hfJGNvbmRpdGlvbmFsKG1hY3JvKSBcXFxuIjsKKyAgICAgICAgcHJpbnQgRiAiI2RlZmlu
ZSBET01fJHttYWNyb1N0eWxlZE5hbWVzcGFjZX1fSU5URVJGQUNFU19GT1JfRUFDSF8kY29uZGl0
aW9uYWwobWFjcm8pIFxcXG4iOwogCiAgICAgICAgIGZvciBteSAkaW50ZXJmYWNlIChzb3J0IGtl
eXMgJXsgJGludGVyZmFjZXNCeUNvbmRpdGlvbmFseyRjb25kaXRpb25hbH0gfSkgewogICAgICAg
ICAgICAgbmV4dCBpZiBkZWZpbmVkKCR1bmNvbmRpdGlvbmFsSW50ZXJmYWNlc3skaW50ZXJmYWNl
fSk7CiAgICAgICAgICAgICBwcmludCBGICIgICAgbWFjcm8oJGludGVyZmFjZSkgXFxcbiI7CiAg
ICAgICAgIH0KIAotICAgICAgICBwcmludCBGICIvLyBFbmQgb2YgRE9NX0VWRU5UX0lOVEVSRkFD
RVNfRk9SX0VBQ0hfJGNvbmRpdGlvbmFsXG4iOworICAgICAgICBwcmludCBGICIvLyBFbmQgb2Yg
RE9NXyR7bWFjcm9TdHlsZWROYW1lc3BhY2V9X0lOVEVSRkFDRVNfRk9SX0VBQ0hfJGNvbmRpdGlv
bmFsXG4iOwogICAgICAgICBwcmludCBGICIjZWxzZVxuIjsKLSAgICAgICAgcHJpbnQgRiAiI2Rl
ZmluZSBET01fRVZFTlRfSU5URVJGQUNFU19GT1JfRUFDSF8kY29uZGl0aW9uYWwobWFjcm8pXG4i
OworICAgICAgICBwcmludCBGICIjZGVmaW5lIERPTV8ke21hY3JvU3R5bGVkTmFtZXNwYWNlfV9J
TlRFUkZBQ0VTX0ZPUl9FQUNIXyRjb25kaXRpb25hbChtYWNybylcbiI7CiAgICAgICAgIHByaW50
IEYgIiNlbmRpZlxuIjsKICAgICAgICAgcHJpbnQgRiAiXG4iOwogICAgIH0KIAotICAgIHByaW50
IEYgIiNkZWZpbmUgRE9NX0VWRU5UX0lOVEVSRkFDRVNfRk9SX0VBQ0gobWFjcm8pIFxcXG4iOwor
ICAgIHByaW50IEYgIiNkZWZpbmUgRE9NXyR7bWFjcm9TdHlsZWROYW1lc3BhY2V9X0lOVEVSRkFD
RVNfRk9SX0VBQ0gobWFjcm8pIFxcXG4iOwogICAgIHByaW50IEYgIiAgICBcXFxuIjsKICAgICBm
b3IgbXkgJGludGVyZmFjZSAoc29ydCBrZXlzICV1bmNvbmRpdGlvbmFsSW50ZXJmYWNlcykgewog
ICAgICAgICAgICAgcHJpbnQgRiAiICAgIG1hY3JvKCRpbnRlcmZhY2UpIFxcXG4iOwogICAgIH0K
ICAgICBwcmludCBGICIgICAgXFxcbiI7CiAgICAgZm9yIG15ICRjb25kaXRpb25hbCAoc29ydCBr
ZXlzICVpbnRlcmZhY2VzQnlDb25kaXRpb25hbCkgewotICAgICAgICBwcmludCBGICIgICAgRE9N
X0VWRU5UX0lOVEVSRkFDRVNfRk9SX0VBQ0hfJGNvbmRpdGlvbmFsKG1hY3JvKSBcXFxuIjsKKyAg
ICAgICAgcHJpbnQgRiAiICAgIERPTV8ke21hY3JvU3R5bGVkTmFtZXNwYWNlfV9JTlRFUkZBQ0VT
X0ZPUl9FQUNIXyRjb25kaXRpb25hbChtYWNybykgXFxcbiI7CiAgICAgfQogCiAgICAgcHJpbnQg
RiAiXG4iOwotICAgIHByaW50IEYgIiNlbmRpZiAvLyBFdmVudEludGVyZmFjZXNfaFxuIjsKKyAg
ICBwcmludCBGICIjZW5kaWYgLy8gJHtuYW1lc3BhY2V9SW50ZXJmYWNlc19oXG4iOwogCiAgICAg
Y2xvc2UgRjsKIH0KQEAgLTIzMSw4ICsyNDUsOCBAQCBzdWIgcHJpbnRIZWFkZXJzRmlsZSgkKQog
CiAgICAgcHJpbnRMaWNlbnNlSGVhZGVyKCRGKTsKIAotICAgIHByaW50IEYgIiNpZm5kZWYgRXZl
bnRIZWFkZXJzX2hcbiI7Ci0gICAgcHJpbnQgRiAiI2RlZmluZSBFdmVudEhlYWRlcnNfaFxuIjsK
KyAgICBwcmludCBGICIjaWZuZGVmICR7bmFtZXNwYWNlfUhlYWRlcnNfaFxuIjsKKyAgICBwcmlu
dCBGICIjZGVmaW5lICR7bmFtZXNwYWNlfUhlYWRlcnNfaFxuIjsKICAgICBwcmludCBGICJcbiI7
CiAKICAgICBteSAlaW5jbHVkZWRJbnRlcmZhY2VzID0gKCk7CkBAIC0yNTUsNyArMjY5LDcgQEAg
c3ViIHByaW50SGVhZGVyc0ZpbGUoJCkKICAgICB9CiAKICAgICBwcmludCBGICJcbiI7Ci0gICAg
cHJpbnQgRiAiI2VuZGlmIC8vIEV2ZW50SGVhZGVyc19oXG4iOworICAgIHByaW50IEYgIiNlbmRp
ZiAvLyAke25hbWVzcGFjZX1IZWFkZXJzX2hcbiI7CiAKICAgICBjbG9zZSBGOwogfQpAQCAtMjY3
LDcgKzI4MSw3IEBAIHN1YiBwcmludExpY2Vuc2VIZWFkZXIoJCkKICAgICBwcmludCBGICIvKgog
ICogVEhJUyBGSUxFIFdBUyBBVVRPTUFUSUNBTExZIEdFTkVSQVRFRCwgRE8gTk9UIEVESVQuCiAg
KgotICogVGhpcyBmaWxlIHdhcyBnZW5lcmF0ZWQgYnkgdGhlIGRvbS9tYWtlX2V2ZW50cy5wbCBz
Y3JpcHQuCisgKiBUaGlzIGZpbGUgd2FzIGdlbmVyYXRlZCBieSB0aGUgZG9tL21ha2VfZXZlbnRf
ZmFjdG9yeS5wbCBzY3JpcHQuCiAgKgogICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMu
ICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>112059</attachid>
            <date>2011-10-21 19:22:15 -0700</date>
            <delta_ts>2011-10-22 17:49:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-70659-20111021192214.patch</filename>
            <type>text/plain</type>
            <size>76931</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDk4MTgyKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTM0IEBACisyMDExLTEwLTIxICBBZGFtIEJh
cnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CisKKyAgICAgICAgRXZlbnRUYXJnZXQuaCBzaG91bGRu
J3QgbmVlZCB0byBrbm93IGFib3V0IGV2ZXJ5IGZlYXR1cmUgYW5kIGlmZGVmCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MDY1OQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggZm9sbG93cyB0
aGUgYXBwcm9hY2ggb2YgRXZlbnQuaCBhbmQgaW50cm9kdWNlcyBhbgorICAgICAgICBpbnRlcmZh
Y2VOYW1lIHZpcnR1YWwgZnVuY3Rpb24gdGhhdCByZXR1cm5zIHRoZSBuYW1lIG9mIHRoZSBET00K
KyAgICAgICAgaW50ZXJmYWNlIGZvciB0aGUgY29uY3JldGUgdHlwZSBvZiB0aGUgb2JqZWN0LiAg
VGhpcyBmdW5jdGlvbiBsZXRzIHVzCisgICAgICAgIHJlbW92ZSBhIGxhcmdlIG51bWJlciBvZiBm
YWtlIGR5bmFtaWMgY2FzdHMuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAg
KiBDb2RlR2VuZXJhdG9ycy5wcmk6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAg
ICAgICAgKiBHTlVtYWtlZmlsZS5hbToKKyAgICAgICAgKiBXZWJDb3JlLmd5cC9XZWJDb3JlLmd5
cDoKKyAgICAgICAgKiBXZWJDb3JlLmd5cC9zY3JpcHRzL2FjdGlvbl9tYWtlbmFtZXMucHk6Cisg
ICAgICAgICAgICAtIFRlYWNoIGFjdGlvbl9tYWtlbmFtZXMgaG93IHRvIGhhbmRsZSB0aGUgbmV3
ICJpbiIgZmlsZS4KKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS52
Y3Byb2ovV2ViQ29yZS52Y3Byb2o6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRXZlbnRUYXJnZXQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6dG9KUyk6CisgICAgICAgICAgICAtIFVzZSB0aGUgbmV3IGF1dG9nZW5l
cmF0ZWQgbWFjcm8gdG8gcmVtb3ZlIGEgbGFyZ2UgYW1vdW50IG9mCisgICAgICAgICAgICAgIGZl
YXR1cmUtc3BlY2lmaWMgY29kZS4KKyAgICAgICAgKiBiaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRD
b250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclNjcmlwdENvbnRyb2xsZXI6
OmluaXRTY3JpcHQpOgorICAgICAgICAqIGJpbmRpbmdzL29iamMvRE9NLm1tOgorICAgICAgICAo
a2l0KToKKyAgICAgICAgICAgIC0gVGhlIFNWR0VsZW1lbnRJbnN0YW5jZSBicmFuY2ggd2FzIG5l
dmVyIHRha2VuIHByZXZpb3VzbHkgYmVjYXVzZQorICAgICAgICAgICAgICBTVkdFbGVtZW50SW5z
dGFuY2U6OnRvTm9kZSByZXR1cm5zIGEgbm9uLU5VTEwgdmFsdWUuIFRoaXMgY29kZQorICAgICAg
ICAgICAgICB3YXMgaW50cm9kdWNlZCBpbiBodHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNl
dC80MjYxOCBhbmQKKyAgICAgICAgICAgICAgZG9lc24ndCBhcHBlYXIgdG8gaGF2ZSBldmVyIHdv
cmtlZCBhcyB0aGUgYXV0aG9yIGludGVuZGVkLgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4RE9N
V3JhcHBlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOERPTVdyYXBwZXI6OmNvbnZlcnRFdmVu
dFRhcmdldFRvVjhPYmplY3QpOgorICAgICAgICAgICAgLSBVc2UgdGhlIG5ldyBhdXRvZ2VuZXJh
dGVkIG1hY3JvIHRvIHJlbW92ZSBhIGxhcmdlIGFtb3VudCBvZgorICAgICAgICAgICAgICBmZWF0
dXJlLXNwZWNpZmljIGNvZGUuCisgICAgICAgICogZG9tL0V2ZW50TmFtZXMuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RXZlbnROYW1lczo6RXZlbnROYW1lcyk6CisgICAgICAgICogZG9tL0V2ZW50
TmFtZXMuaDoKKyAgICAgICAgKiBkb20vRXZlbnRUYXJnZXQuY3BwOgorICAgICAgICAqIGRvbS9F
dmVudFRhcmdldC5oOgorICAgICAgICAqIGRvbS9FdmVudFRhcmdldEZhY3RvcnkuaW46IEFkZGVk
LgorICAgICAgICAgICAgLSBBZGQgYSBuZXcgImluIiBmaWxlIHRoYXQgbGlzdHMgYWxsIHRoZSBF
dmVudFRhcmdldHMuCisgICAgICAgICogZG9tL0xvY2FsTWVkaWFTdHJlYW0uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6TG9jYWxNZWRpYVN0cmVhbTo6aW50ZXJmYWNlTmFtZSk6CisgICAgICAgICog
ZG9tL0xvY2FsTWVkaWFTdHJlYW0uaDoKKyAgICAgICAgKiBkb20vTWVkaWFTdHJlYW0uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW06OmludGVyZmFjZU5hbWUpOgorICAgICAgICAq
IGRvbS9NZWRpYVN0cmVhbS5oOgorICAgICAgICAqIGRvbS9NZXNzYWdlUG9ydC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpNZXNzYWdlUG9ydDo6aW50ZXJmYWNlTmFtZSk6CisgICAgICAgICogZG9t
L01lc3NhZ2VQb3J0Lmg6CisgICAgICAgICogZG9tL05vZGUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Tm9kZTo6dG9Ob2RlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OmludGVyZmFjZU5hbWUp
OgorICAgICAgICAqIGRvbS9Ob2RlLmg6CisgICAgICAgICogZG9tL21ha2VfZXZlbnRfZmFjdG9y
eS5wbDoKKyAgICAgICAgICAgIC0gR2VuZXJhbGl6ZSBtYWtlX2V2ZW50X2ZhY3RvcnkucGwgdG8g
YmUgYWJsZSB0byBnZW5lcmF0ZQorICAgICAgICAgICAgICBpbnRlcmZhY2VzIGZvciBkaWZmZXJl
bnQgbmFtZXNwYWNlcy4KKyAgICAgICAgKiBmaWxlYXBpL0ZpbGVSZWFkZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RmlsZVJlYWRlcjo6aW50ZXJmYWNlTmFtZSk6CisgICAgICAgICogZmlsZWFw
aS9GaWxlUmVhZGVyLmg6CisgICAgICAgICogZmlsZWFwaS9GaWxlV3JpdGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkZpbGVXcml0ZXI6OmludGVyZmFjZU5hbWUpOgorICAgICAgICAqIGZpbGVh
cGkvRmlsZVdyaXRlci5oOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9ET01BcHBsaWNhdGlv
bkNhY2hlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTUFwcGxpY2F0aW9uQ2FjaGU6OmludGVy
ZmFjZU5hbWUpOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9ET01BcHBsaWNhdGlvbkNhY2hl
Lmg6CisgICAgICAgICogbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Tm90aWZpY2F0aW9uOjppbnRlcmZhY2VOYW1lKToKKyAgICAgICAgKiBub3RpZmlj
YXRpb25zL05vdGlmaWNhdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uOjpz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KToKKyAgICAgICAgKiBwMnAvUGVlckNvbm5lY3Rpb24uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UGVlckNvbm5lY3Rpb246OmludGVyZmFjZU5hbWUpOgorICAg
ICAgICAqIHAycC9QZWVyQ29ubmVjdGlvbi5oOgorICAgICAgICAqIHBhZ2UvRE9NV2luZG93LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvdzo6aW50ZXJmYWNlTmFtZSk6CisgICAgICAg
IChXZWJDb3JlOjpET01XaW5kb3c6OnRvRE9NV2luZG93KToKKyAgICAgICAgKiBwYWdlL0RPTVdp
bmRvdy5oOgorICAgICAgICAqIHBhZ2UvRXZlbnRTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RXZlbnRTb3VyY2U6OmludGVyZmFjZU5hbWUpOgorICAgICAgICAqIHBhZ2UvRXZlbnRTb3Vy
Y2UuaDoKKyAgICAgICAgKiBzdG9yYWdlL0lEQkRhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OklEQkRhdGFiYXNlOjppbnRlcmZhY2VOYW1lKToKKyAgICAgICAgKiBzdG9yYWdlL0lEQkRh
dGFiYXNlLmg6CisgICAgICAgICogc3RvcmFnZS9JREJSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OklEQlJlcXVlc3Q6OmludGVyZmFjZU5hbWUpOgorICAgICAgICAqIHN0b3JhZ2UvSURC
UmVxdWVzdC5oOgorICAgICAgICAqIHN0b3JhZ2UvSURCVHJhbnNhY3Rpb24uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OmludGVyZmFjZU5hbWUpOgorICAgICAgICAqIHN0
b3JhZ2UvSURCVHJhbnNhY3Rpb24uaDoKKyAgICAgICAgKiBzdG9yYWdlL0lEQlZlcnNpb25DaGFu
Z2VSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlZlcnNpb25DaGFuZ2VSZXF1ZXN0
OjppbnRlcmZhY2VOYW1lKToKKyAgICAgICAgKiBzdG9yYWdlL0lEQlZlcnNpb25DaGFuZ2VSZXF1
ZXN0Lmg6CisgICAgICAgICogc3ZnL1NWR0VsZW1lbnRJbnN0YW5jZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdFbGVtZW50SW5zdGFuY2U6OmludGVyZmFjZU5hbWUpOgorICAgICAgICAqIHN2
Zy9TVkdFbGVtZW50SW5zdGFuY2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VsZW1lbnRJbnN0
YW5jZTo6dG9Ob2RlKToKKyAgICAgICAgKiB3ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6QXVkaW9Db250ZXh0OjppbnRlcmZhY2VOYW1lKToKKyAgICAgICAgKFdl
YkNvcmU6OkF1ZGlvQ29udGV4dDo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCk6CisgICAgICAgICog
d2ViYXVkaW8vQXVkaW9Db250ZXh0Lmg6CisgICAgICAgICogd2ViYXVkaW8vSmF2YVNjcmlwdEF1
ZGlvTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKYXZhU2NyaXB0QXVkaW9Ob2RlOjppbnRl
cmZhY2VOYW1lKToKKyAgICAgICAgKiB3ZWJhdWRpby9KYXZhU2NyaXB0QXVkaW9Ob2RlLmg6Cisg
ICAgICAgICogd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
U29ja2V0OjppbnRlcmZhY2VOYW1lKToKKyAgICAgICAgKiB3ZWJzb2NrZXRzL1dlYlNvY2tldC5o
OgorICAgICAgICAqIHdvcmtlcnMvRGVkaWNhdGVkV29ya2VyQ29udGV4dC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpEZWRpY2F0ZWRXb3JrZXJDb250ZXh0OjppbnRlcmZhY2VOYW1lKToKKyAgICAg
ICAgKiB3b3JrZXJzL0RlZGljYXRlZFdvcmtlckNvbnRleHQuaDoKKyAgICAgICAgKiB3b3JrZXJz
L0RlZmF1bHRTaGFyZWRXb3JrZXJSZXBvc2l0b3J5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNo
YXJlZFdvcmtlckNvbm5lY3RUYXNrOjpwZXJmb3JtVGFzayk6CisgICAgICAgICogd29ya2Vycy9T
aGFyZWRXb3JrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkV29ya2VyOjppbnRlcmZh
Y2VOYW1lKToKKyAgICAgICAgKiB3b3JrZXJzL1NoYXJlZFdvcmtlci5oOgorICAgICAgICAqIHdv
cmtlcnMvU2hhcmVkV29ya2VyQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRX
b3JrZXJDb250ZXh0OjppbnRlcmZhY2VOYW1lKToKKyAgICAgICAgKiB3b3JrZXJzL1NoYXJlZFdv
cmtlckNvbnRleHQuaDoKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpXb3JrZXI6OmludGVyZmFjZU5hbWUpOgorICAgICAgICAqIHdvcmtlcnMvV29ya2Vy
Lmg6CisgICAgICAgICogeG1sL1hNTEh0dHBSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlhNTEh0dHBSZXF1ZXN0OjppbnRlcmZhY2VOYW1lKToKKyAgICAgICAgKiB4bWwvWE1MSHR0cFJl
cXVlc3QuaDoKKyAgICAgICAgKiB4bWwvWE1MSHR0cFJlcXVlc3RVcGxvYWQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3RVcGxvYWQ6OmludGVyZmFjZU5hbWUpOgorICAgICAg
ICAqIHhtbC9YTUxIdHRwUmVxdWVzdFVwbG9hZC5oOgorCiAyMDExLTEwLTIxICBCZXRoIERha2lu
ICA8YmRha2luQGFwcGxlLmNvbT4KIAogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NzA2NDcKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiA5
ODE1MSkKKysrIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBA
IC0yMzQ4LDYgKzIzNDgsOSBAQCBHRU5FUkFURV9FVkVOVF9GQUNUT1JZKCR7V0VCQ09SRV9ESVJ9
L2RvCiBMSVNUKEFQUEVORCBXZWJDb3JlX1NPVVJDRVMgJHtERVJJVkVEX1NPVVJDRVNfV0VCQ09S
RV9ESVJ9L0V2ZW50RmFjdG9yeS5jcHApCiAKIAorR0VORVJBVEVfRVZFTlRfRkFDVE9SWSgke1dF
QkNPUkVfRElSfS9kb20vRXZlbnRUYXJnZXRGYWN0b3J5LmluKQorCisKIEdFTkVSQVRFX0ZPTlRf
TkFNRVMoJHtXRUJDT1JFX0RJUn0vY3NzL1dlYktpdEZvbnRGYW1pbHlOYW1lcy5pbikKIExJU1Qo
QVBQRU5EIFdlYkNvcmVfU09VUkNFUyAke0RFUklWRURfU09VUkNFU19XRUJDT1JFX0RJUn0vV2Vi
S2l0Rm9udEZhbWlseU5hbWVzLmNwcCkKIApJbmRleDogU291cmNlL1dlYkNvcmUvQ29kZUdlbmVy
YXRvcnMucHJpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NvZGVHZW5lcmF0b3JzLnBy
aQkocmV2aXNpb24gOTgxNTEpCisrKyBTb3VyY2UvV2ViQ29yZS9Db2RlR2VuZXJhdG9ycy5wcmkJ
KHdvcmtpbmcgY29weSkKQEAgLTM0LDYgKzM0LDggQEAgSFRNTF9FTlRJVElFUyA9ICQkUFdEL2h0
bWwvcGFyc2VyL0hUTUxFbgogCiBFVkVOVF9GQUNUT1JZID0gJCRQV0QvZG9tL0V2ZW50RmFjdG9y
eS5pbgogCitFVkVOVF9UQVJHRVRfRkFDVE9SWSA9ICQkUFdEL2RvbS9FdmVudFRhcmdldEZhY3Rv
cnkuaW4KKwogQ09MT1JEQVRBX0dQRVJGID0gJCRQV0QvcGxhdGZvcm0vQ29sb3JEYXRhLmdwZXJm
CiAKIFdBTERPQ1NTUFJPUFMgPSAkJFBXRC9jc3MvQ1NTUHJvcGVydHlOYW1lcy5pbgpAQCAtNzcy
LDYgKzc3NCwxMyBAQCBldmVudGZhY3RvcnkuY29tbWFuZHMgPSBwZXJsIC1JJCRQV0QvYmluCiBl
dmVudGZhY3RvcnkuZGVwZW5kcyA9ICQkUFdEL2RvbS9tYWtlX2V2ZW50X2ZhY3RvcnkucGwgJCRF
VkVOVF9GQUNUT1JZCiBhZGRFeHRyYUNvbXBpbGVyKGV2ZW50ZmFjdG9yeSkKIAorIyBHRU5FUkFU
T1IgNS1GOgorZXZlbnR0YXJnZXRmYWN0b3J5LmlucHV0ID0gRVZFTlRfVEFSR0VUX0ZBQ1RPUlkK
K2V2ZW50dGFyZ2V0ZmFjdG9yeS53a1NjcmlwdCA9ICQkUFdEL2RvbS9tYWtlX2V2ZW50X2ZhY3Rv
cnkucGwKK2V2ZW50dGFyZ2V0ZmFjdG9yeS5jb21tYW5kcyA9IHBlcmwgLUkkJFBXRC9iaW5kaW5n
cy9zY3JpcHRzICQkZXZlbnRmYWN0b3J5LndrU2NyaXB0IC0tZXZlbnRzICQkRVZFTlRfVEFSR0VU
X0ZBQ1RPUlkgLS1vdXRwdXREaXIgJCRXQ19HRU5FUkFURURfU09VUkNFU19ESVIKK2V2ZW50dGFy
Z2V0ZmFjdG9yeS5kZXBlbmRzID0gJCRQV0QvZG9tL21ha2VfZXZlbnRfZmFjdG9yeS5wbCAkJEVW
RU5UX1RBUkdFVF9GQUNUT1JZCithZGRFeHRyYUNvbXBpbGVyKGV2ZW50dGFyZ2V0ZmFjdG9yeSkK
KwogIyBHRU5FUkFUT1IgOC1BOgogZW50aXRpZXMub3V0cHV0ID0gJCR7V0NfR0VORVJBVEVEX1NP
VVJDRVNfRElSfS9IVE1MRW50aXR5VGFibGUuY3BwCiBlbnRpdGllcy5pbnB1dCA9IEhUTUxfRU5U
SVRJRVMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQkocmV2aXNpb24gOTgxNTEp
CisrKyBTb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCSh3b3JraW5nIGNvcHkpCkBA
IC02MDAsNiArNjAwLDcgQEAgYWxsIDogXAogICAgIENTU1ZhbHVlS2V5d29yZHMuaCBcCiAgICAg
Q29sb3JEYXRhLmNwcCBcCiAgICAgRXZlbnRGYWN0b3J5LmNwcCBcCisgICAgRXZlbnRUYXJnZXRJ
bnRlcmZhY2VzLmggXAogICAgIEhUTUxFbGVtZW50RmFjdG9yeS5jcHAgXAogICAgIEhUTUxFbnRp
dHlUYWJsZS5jcHAgXAogICAgIEhUTUxOYW1lcy5jcHAgXApAQCAtODYwLDExICs4NjEsMTQgQEAg
WExpbmtOYW1lcy5jcHAgOiBkb20vbWFrZV9uYW1lcy5wbCBzdmcveAogCiAjIC0tLS0tLS0tCiAg
Ci0jIFJlZ2lzdGVyIGV2ZW50IGNvbnN0cnVjdG9ycworIyBSZWdpc3RlciBldmVudCBjb25zdHJ1
Y3RvcnMgYW5kIHRhcmdldHMKIAotRXZlbnRGYWN0b3J5LmNwcCA6IGRvbS9tYWtlX2V2ZW50X2Zh
Y3RvcnkucGwgZG9tL0V2ZW50RmFjdG9yeS5pbgorRXZlbnRGYWN0b3J5LmNwcCBFdmVudEhlYWRl
cnMuaCBFdmVudEludGVyZmFjZXMuaCA6IGRvbS9tYWtlX2V2ZW50X2ZhY3RvcnkucGwgZG9tL0V2
ZW50RmFjdG9yeS5pbgogCXBlcmwgLUkgJChXZWJDb3JlKS9iaW5kaW5ncy9zY3JpcHRzICQ8IC0t
ZXZlbnRzICQoV2ViQ29yZSkvZG9tL0V2ZW50RmFjdG9yeS5pbgogCitFdmVudFRhcmdldEhlYWRl
cnMuaCBFdmVudFRhcmdldEludGVyZmFjZXMuaCA6IGRvbS9tYWtlX2V2ZW50X2ZhY3RvcnkucGwg
ZG9tL0V2ZW50VGFyZ2V0RmFjdG9yeS5pbgorCXBlcmwgLUkgJChXZWJDb3JlKS9iaW5kaW5ncy9z
Y3JpcHRzICQ8IC0tZXZlbnRzICQoV2ViQ29yZSkvZG9tL0V2ZW50VGFyZ2V0RmFjdG9yeS5pbgor
CiAjIC0tLS0tLS0tCiAgCiAjIE1hdGhNTCB0YWcgYW5kIGF0dHJpYnV0ZSBuYW1lcywgYW5kIGVs
ZW1lbnQgZmFjdG9yeQpJbmRleDogU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0JKHJldmlzaW9uIDk4MTUxKQor
KysgU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0JKHdvcmtpbmcgY29weSkKQEAgLTY4NCw2
ICs2ODQsOSBAQCBEZXJpdmVkU291cmNlcy9XZWJDb3JlL1hNTE5hbWVzLmNwcCBEZXJpCiBEZXJp
dmVkU291cmNlcy9XZWJDb3JlL0V2ZW50RmFjdG9yeS5jcHAgRGVyaXZlZFNvdXJjZXMvV2ViQ29y
ZS9FdmVudEhlYWRlcnMuaCBEZXJpdmVkU291cmNlcy9XZWJDb3JlL0V2ZW50SW50ZXJmYWNlcy5o
OiAkKFdlYkNvcmUpL2RvbS9tYWtlX2V2ZW50X2ZhY3RvcnkucGwgJChXZWJDb3JlKS9kb20vRXZl
bnRGYWN0b3J5LmluCiAJJChBTV9WX0dFTikkKFBFUkwpIC1JJChXZWJDb3JlKS9iaW5kaW5ncy9z
Y3JpcHRzICQ8IC0tZXZlbnRzICQoV2ViQ29yZSkvZG9tL0V2ZW50RmFjdG9yeS5pbiAtLW91dHB1
dERpciAiJChHRU5TT1VSQ0VTX1dFQkNPUkUpIgogCitEZXJpdmVkU291cmNlcy9XZWJDb3JlL0V2
ZW50VGFyZ2V0SGVhZGVycy5oIERlcml2ZWRTb3VyY2VzL1dlYkNvcmUvRXZlbnRUYXJnZXRJbnRl
cmZhY2VzLmg6ICQoV2ViQ29yZSkvZG9tL21ha2VfZXZlbnRfZmFjdG9yeS5wbCAkKFdlYkNvcmUp
L2RvbS9FdmVudFRhcmdldEZhY3RvcnkuaW4KKwkkKEFNX1ZfR0VOKSQoUEVSTCkgLUkkKFdlYkNv
cmUpL2JpbmRpbmdzL3NjcmlwdHMgJDwgLS1ldmVudHMgJChXZWJDb3JlKS9kb20vRXZlbnRUYXJn
ZXRGYWN0b3J5LmluIC0tb3V0cHV0RGlyICIkKEdFTlNPVVJDRVNfV0VCQ09SRSkiCisKICMgQWxs
IFdlYiBJbnNwZWN0b3IgZ2VuZXJhdGVkIGZpbGVzIGFyZSBjcmVhdGVkIHdpdGggdGhpcyBvbmUg
Y2FsbCB0byBDb2RlR2VuZXJhdG9ySW5zcGVjdG9yLnBtCiBEZXJpdmVkU291cmNlcy9XZWJDb3Jl
L0luc3BlY3RvclByb3RvY29sVmVyc2lvbi5oIDogJChXZWJDb3JlKS9pbnNwZWN0b3IvSW5zcGVj
dG9yLmpzb24gJChXZWJDb3JlKS9pbnNwZWN0b3IvZ2VuZXJhdGUtaW5zcGVjdG9yLXByb3RvY29s
LXZlcnNpb24KIAkkKFBZVEhPTikgJChXZWJDb3JlKS9pbnNwZWN0b3IvZ2VuZXJhdGUtaW5zcGVj
dG9yLXByb3RvY29sLXZlcnNpb24gLW8gJChHRU5TT1VSQ0VTX1dFQkNPUkUpL0luc3BlY3RvclBy
b3RvY29sVmVyc2lvbi5oICQoV2ViQ29yZSkvaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5neXBpCShyZXZpc2lvbiA5ODE1MSkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNv
cmUuZ3lwaQkod29ya2luZyBjb3B5KQpAQCAtNzA1MCw2ICs3MDUwLDEwIEBACiAgICAgICAgICAg
ICAnPChQUk9EVUNUX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9EZWJ1Z2dlclNjcmlwdFNv
dXJjZS5oJywKICAgICAgICAgICAgICc8KFBST0RVQ1RfRElSKS9EZXJpdmVkU291cmNlcy9XZWJD
b3JlL0RvY1R5cGVTdHJpbmdzLmNwcCcsCiAgICAgICAgICAgICAnPChQUk9EVUNUX0RJUikvRGVy
aXZlZFNvdXJjZXMvV2ViQ29yZS9FdmVudEZhY3RvcnkuY3BwJywKKyAgICAgICAgICAgICc8KFBS
T0RVQ1RfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0V2ZW50SGVhZGVycy5oJywKKyAgICAg
ICAgICAgICc8KFBST0RVQ1RfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0V2ZW50SW50ZXJm
YWNlcy5oJywKKyAgICAgICAgICAgICc8KFBST0RVQ1RfRElSKS9EZXJpdmVkU291cmNlcy9XZWJD
b3JlL0V2ZW50VGFyZ2V0SGVhZGVycy5oJywKKyAgICAgICAgICAgICc8KFBST0RVQ1RfRElSKS9E
ZXJpdmVkU291cmNlcy9XZWJDb3JlL0V2ZW50VGFyZ2V0SW50ZXJmYWNlcy5oJywKICAgICAgICAg
ICAgICc8KFBST0RVQ1RfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0hUTUxFbGVtZW50RmFj
dG9yeS5jcHAnLAogICAgICAgICAgICAgJzwoUFJPRFVDVF9ESVIpL0Rlcml2ZWRTb3VyY2VzL1dl
YkNvcmUvSFRNTEVsZW1lbnRGYWN0b3J5LmgnLAogICAgICAgICAgICAgJzwoUFJPRFVDVF9ESVIp
L0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSFRNTEVudGl0eVRhYmxlLmNwcCcsCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLmd5cC9XZWJDb3JlLmd5cAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLmd5cC9XZWJDb3JlLmd5cAkocmV2aXNpb24gOTgxNTEpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLmd5cC9XZWJDb3JlLmd5cAkod29ya2luZyBjb3B5KQpAQCAtNjc4
LDYgKzY3OCwyNCBAQAogICAgICAgICAgIF0sCiAgICAgICAgIH0sCiAgICAgICAgIHsKKyAgICAg
ICAgICAnYWN0aW9uX25hbWUnOiAnRXZlbnRUYXJnZXRGYWN0b3J5JywKKyAgICAgICAgICAnaW5w
dXRzJzogWworICAgICAgICAgICAgJy4uL2RvbS9tYWtlX2V2ZW50X2ZhY3RvcnkucGwnLAorICAg
ICAgICAgICAgJy4uL2RvbS9FdmVudFRhcmdldEZhY3RvcnkuaW4nLAorICAgICAgICAgIF0sCisg
ICAgICAgICAgJ291dHB1dHMnOiBbCisgICAgICAgICAgICAnPChTSEFSRURfSU5URVJNRURJQVRF
X0RJUikvd2Via2l0L0V2ZW50VGFyZ2V0SGVhZGVycy5oJywKKyAgICAgICAgICAgICc8KFNIQVJF
RF9JTlRFUk1FRElBVEVfRElSKS93ZWJraXQvRXZlbnRUYXJnZXRJbnRlcmZhY2VzLmgnLAorICAg
ICAgICAgIF0sCisgICAgICAgICAgJ2FjdGlvbic6IFsKKyAgICAgICAgICAgICdweXRob24nLAor
ICAgICAgICAgICAgJ3NjcmlwdHMvYWN0aW9uX21ha2VuYW1lcy5weScsCisgICAgICAgICAgICAn
PEAoX291dHB1dHMpJywKKyAgICAgICAgICAgICctLScsCisgICAgICAgICAgICAnPEAoX2lucHV0
cyknLAorICAgICAgICAgIF0sCisgICAgICAgIH0sCisgICAgICAgIHsKICAgICAgICAgICAnYWN0
aW9uX25hbWUnOiAnTWF0aE1MTmFtZXMnLAogICAgICAgICAgICdpbnB1dHMnOiBbCiAgICAgICAg
ICAgICAnLi4vZG9tL21ha2VfbmFtZXMucGwnLApAQCAtOTkzLDYgKzEwMTEsMTAgQEAKICAgICAg
ICAgJzwoU0hBUkVEX0lOVEVSTUVESUFURV9ESVIpL3dlYmtpdC9IVE1MRWxlbWVudEZhY3Rvcnku
Y3BwJywKICAgICAgICAgJzwoU0hBUkVEX0lOVEVSTUVESUFURV9ESVIpL3dlYmtpdC9IVE1MTmFt
ZXMuY3BwJywKICAgICAgICAgJzwoU0hBUkVEX0lOVEVSTUVESUFURV9ESVIpL3dlYmtpdC9FdmVu
dEZhY3RvcnkuY3BwJywKKyAgICAgICAgJzwoU0hBUkVEX0lOVEVSTUVESUFURV9ESVIpL3dlYmtp
dC9FdmVudEhlYWRlcnMuaCcsCisgICAgICAgICc8KFNIQVJFRF9JTlRFUk1FRElBVEVfRElSKS93
ZWJraXQvRXZlbnRJbnRlcmZhY2VzLmgnLAorICAgICAgICAnPChTSEFSRURfSU5URVJNRURJQVRF
X0RJUikvd2Via2l0L0V2ZW50VGFyZ2V0SGVhZGVycy5oJywKKyAgICAgICAgJzwoU0hBUkVEX0lO
VEVSTUVESUFURV9ESVIpL3dlYmtpdC9FdmVudFRhcmdldEludGVyZmFjZXMuaCcsCiAgICAgICAg
ICc8KFNIQVJFRF9JTlRFUk1FRElBVEVfRElSKS93ZWJraXQvVXNlckFnZW50U3R5bGVTaGVldHNE
YXRhLmNwcCcsCiAgICAgICAgICc8KFNIQVJFRF9JTlRFUk1FRElBVEVfRElSKS93ZWJraXQvVjhI
VE1MRWxlbWVudFdyYXBwZXJGYWN0b3J5LmNwcCcsCiAgICAgICAgICc8KFNIQVJFRF9JTlRFUk1F
RElBVEVfRElSKS93ZWJraXQvWExpbmtOYW1lcy5jcHAnLApJbmRleDogU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5neXAvc2NyaXB0cy9hY3Rpb25fbWFrZW5hbWVzLnB5Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwL3NjcmlwdHMvYWN0aW9uX21ha2VuYW1lcy5weQkocmV2
aXNpb24gOTgxNTEpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cC9zY3JpcHRzL2FjdGlv
bl9tYWtlbmFtZXMucHkJKHdvcmtpbmcgY29weSkKQEAgLTEyOSw3ICsxMjksNyBAQCBkZWYgbWFp
bihhcmdzKToKICAgICAgICAgICAgICBvciBpbnB1dEJhc2VuYW1lLmVuZHN3aXRoKCdhdHRycy5p
bicpOgogICAgICAgICAgICAgYXNzZXJ0IGF0dHJJbnB1dCA9PSBOb25lCiAgICAgICAgICAgICBh
dHRySW5wdXQgPSBpbnB1dEFic1Bvc2l4Ci0gICAgICAgIGVsaWYgaW5wdXRCYXNlbmFtZS5lbmRz
d2l0aCgnRXZlbnRGYWN0b3J5LmluJyk6CisgICAgICAgIGVsaWYgaW5wdXRCYXNlbmFtZS5lbmRz
d2l0aCgnRXZlbnRGYWN0b3J5LmluJykgb3IgaW5wdXRCYXNlbmFtZS5lbmRzd2l0aCgnRXZlbnRU
YXJnZXRGYWN0b3J5LmluJyk6CiAgICAgICAgICAgICBldmVudHNJbnB1dCA9IGlucHV0QWJzUG9z
aXgKICAgICAgICAgZWxpZiBpbnB1dEJhc2VuYW1lLmVuZHN3aXRoKCdOYW1lcy5pbicpOgogICAg
ICAgICAgICAgb3B0aW9ucy5hcHBlbmQoaW5wdXRBYnNQb3NpeCkKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCShyZXZpc2lvbiA5ODE1MSkKKysr
IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCSh3b3JraW5nIGNv
cHkpCkBAIC01NTQsNiArNTU0LDE0IEBACiAJCQkJPgogCQkJPC9GaWxlPgogCQkJPEZpbGUKKwkJ
CQlSZWxhdGl2ZVBhdGg9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmpcJChQcm9qZWN0TmFt
ZSlcRGVyaXZlZFNvdXJjZXNcRXZlbnRUYXJnZXRIZWFkZXJzLmgiCisJCQkJPgorCQkJPC9GaWxl
PgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxv
YmpcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcRXZlbnRUYXJnZXRJbnRlcmZhY2VzLmgi
CisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKIAkJCQlSZWxhdGl2ZVBhdGg9IiQoQ29uZmln
dXJhdGlvbkJ1aWxkRGlyKVxvYmpcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSFRNTEVs
ZW1lbnRGYWN0b3J5LmgiCiAJCQkJPgogCQkJPC9GaWxlPgpJbmRleDogU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gOTgxNTEp
CisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdv
cmtpbmcgY29weSkKQEAgLTMyOTgsNiArMzI5OCw4IEBACiAJCTk3OEFENjc1MTQxMzBBOEQwMEM3
Q0FFMyAvKiBIVE1MU3BhbkVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDk3OEFENjcyMTQxMzBBOEQwMEM3Q0FFMyAvKiBIVE1MU3BhbkVsZW1l
bnQuaCAqLzsgfTsKIAkJOTc5RjQzRDMxMDc1RTQ0QTAwMDBGODNCIC8qIE5hdmlnYXRpb25TY2hl
ZHVsZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
OTc5RjQzRDExMDc1RTQ0QTAwMDBGODNCIC8qIE5hdmlnYXRpb25TY2hlZHVsZXIuY3BwICovOyB9
OwogCQk5NzlGNDNENDEwNzVFNDRBMDAwMEY4M0IgLyogTmF2aWdhdGlvblNjaGVkdWxlci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTc5RjQzRDIxMDc1
RTQ0QTAwMDBGODNCIC8qIE5hdmlnYXRpb25TY2hlZHVsZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk5N0FBM0NBNTE0NTIzN0NDMDAzRTFEQTYg
LyogRXZlbnRUYXJnZXRIZWFkZXJzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA5N0FBM0NBMzE0NTIzN0NDMDAzRTFEQTYgLyogRXZlbnRUYXJnZXRIZWFk
ZXJzLmggKi87IH07CisJCTk3QUEzQ0E2MTQ1MjM3Q0MwMDNFMURBNiAvKiBFdmVudFRhcmdldElu
dGVyZmFjZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDk3QUEzQ0E0MTQ1MjM3Q0MwMDNFMURBNiAvKiBFdmVudFRhcmdldEludGVyZmFjZXMuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5N0IxRjAyRTEz
QjAyNUNBMDBGNTEwM0YgLyogU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzc1NjlFMDAxM0FGMTcyQzAwQ0RC
QThFIC8qIFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyLmNwcCAqLzsgfTsKIAkJOTdCMUYwMkYxM0Iw
MjVEMjAwRjUxMDNGIC8qIFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzNzU2OUUwMjEzQUYxNzJDMDBDREJBOEUg
LyogU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIuaCAqLzsgfTsKIAkJOTdCQzg0ODMxMjM2RkQ5MzAw
MEM2MTYxIC8qIFRleHREb2N1bWVudFBhcnNlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5N0JDODQ4MTEyMzZGRDkzMDAwQzYxNjEgLyogVGV4dERv
Y3VtZW50UGFyc2VyLmNwcCAqLzsgfTsKQEAgLTEwNDkzLDYgKzEwNDk1LDggQEAKIAkJOTc4QUQ2
NzMxNDEzMEE4RDAwQzdDQUUzIC8qIEhUTUxTcGFuRWxlbWVudC5pZGwgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
OyBwYXRoID0gSFRNTFNwYW5FbGVtZW50LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJOTc5RjQzRDExMDc1RTQ0QTAwMDBGODNCIC8qIE5hdmlnYXRpb25TY2hlZHVsZXIuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTmF2aWdhdGlvblNjaGVkdWxlci5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk3OUY0M0QyMTA3NUU0NEEwMDAwRjgz
QiAvKiBOYXZpZ2F0aW9uU2NoZWR1bGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IE5hdmlnYXRpb25TY2hlZHVsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
OTdBQTNDQTMxNDUyMzdDQzAwM0UxREE2IC8qIEV2ZW50VGFyZ2V0SGVhZGVycy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBFdmVudFRhcmdldEhlYWRlcnMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTdBQTNDQTQxNDUyMzdDQzAwM0UxREE2IC8qIEV2ZW50VGFy
Z2V0SW50ZXJmYWNlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBFdmVudFRh
cmdldEludGVyZmFjZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTdCQzg0ODEx
MjM2RkQ5MzAwMEM2MTYxIC8qIFRleHREb2N1bWVudFBhcnNlci5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBUZXh0RG9jdW1lbnRQYXJzZXIuY3BwOyBwYXRoID0gcGFy
c2VyL1RleHREb2N1bWVudFBhcnNlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTk3QkM4NDgyMTIzNkZEOTMwMDBDNjE2MSAvKiBUZXh0RG9jdW1lbnRQYXJzZXIuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gVGV4dERvY3VtZW50UGFyc2VyLmg7IHBhdGggPSBw
YXJzZXIvVGV4dERvY3VtZW50UGFyc2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTk3QkM4NDlBMTIzNzBBNEIwMDBDNjE2MSAvKiBIVE1MSW5wdXRTdHJlYW0uaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gSFRNTElucHV0U3RyZWFtLmg7IHBhdGggPSBwYXJzZXIv
SFRNTElucHV0U3RyZWFtLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNTI4Niw2
ICsxNTI5MCw4IEBACiAJCQkJOTc2NjUwNEUxNDRGQkZGRTAwRjZCQjUxIC8qIEV2ZW50RmFjdG9y
eS5jcHAgKi8sCiAJCQkJOTcwQjcyQTUxNDUwMDhFQjAwRjAwQTM3IC8qIEV2ZW50SGVhZGVycy5o
ICovLAogCQkJCTk3MEI3Mjg5MTQ0RkZBQzYwMEYwMEEzNyAvKiBFdmVudEludGVyZmFjZXMuaCAq
LywKKwkJCQk5N0FBM0NBMzE0NTIzN0NDMDAzRTFEQTYgLyogRXZlbnRUYXJnZXRIZWFkZXJzLmgg
Ki8sCisJCQkJOTdBQTNDQTQxNDUyMzdDQzAwM0UxREE2IC8qIEV2ZW50VGFyZ2V0SW50ZXJmYWNl
cy5oICovLAogCQkJCUExN0M4MTIwMEYyQTVDRjcwMDVEQUFFQiAvKiBIVE1MRWxlbWVudEZhY3Rv
cnkuY3BwICovLAogCQkJCUExN0M4MTIxMEYyQTVDRjcwMDVEQUFFQiAvKiBIVE1MRWxlbWVudEZh
Y3RvcnkuaCAqLywKIAkJCQlBOEJDMDQ5MTEyMTRGNjk2MDBCNUYxMjIgLyogSFRNTEVudGl0eVRh
YmxlLmNwcCAqLywKQEAgLTI0NzExLDYgKzI0NzE3LDggQEAKIAkJCQlBMEVFMERGODE0NEY4MjU1
MDBGODBCMEQgLyogV2ViR0xEZWJ1Z1NoYWRlcnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTk3MEI3
MjhBMTQ0RkZBQzYwMEYwMEEzNyAvKiBFdmVudEludGVyZmFjZXMuaCBpbiBIZWFkZXJzICovLAog
CQkJCTk3MEI3MkE2MTQ1MDA4RUIwMEYwMEEzNyAvKiBFdmVudEhlYWRlcnMuaCBpbiBIZWFkZXJz
ICovLAorCQkJCTk3QUEzQ0E1MTQ1MjM3Q0MwMDNFMURBNiAvKiBFdmVudFRhcmdldEhlYWRlcnMu
aCBpbiBIZWFkZXJzICovLAorCQkJCTk3QUEzQ0E2MTQ1MjM3Q0MwMDNFMURBNiAvKiBFdmVudFRh
cmdldEludGVyZmFjZXMuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBs
b3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpJbmRleDogU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNFdmVudFRhcmdldC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNFdmVudFRhcmdldC5jcHAJKHJldmlzaW9uIDk4MTUxKQorKysgU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudFRhcmdldC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTI4LDYgKzI4LDggQEAKIAogI2luY2x1ZGUgIkRPTVdpbmRvdy5oIgogI2luY2x1ZGUgIkRvY3Vt
ZW50LmgiCisjaW5jbHVkZSAiRXZlbnRUYXJnZXRIZWFkZXJzLmgiCisjaW5jbHVkZSAiRXZlbnRU
YXJnZXRJbnRlcmZhY2VzLmgiCiAjaW5jbHVkZSAiSlNET01XaW5kb3cuaCIKICNpbmNsdWRlICJK
U0RPTVdpbmRvd1NoZWxsLmgiCiAjaW5jbHVkZSAiSlNFdmVudExpc3RlbmVyLmgiCkBAIC0xMDUs
OTQgKzEwNywyOCBAQCB1c2luZyBuYW1lc3BhY2UgSlNDOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKKyNkZWZpbmUgVFJZX1RPX1dSQVBfV0lUSF9JTlRFUkZBQ0UoaW50ZXJmYWNlTmFtZSkgXAor
ICAgIGlmIChldmVudE5hbWVzKCkuaW50ZXJmYWNlRm9yIyNpbnRlcmZhY2VOYW1lID09IGRlc2ly
ZWRJbnRlcmZhY2UpIFwKKyAgICAgICAgcmV0dXJuIHRvSlMoZXhlYywgZ2xvYmFsT2JqZWN0LCBz
dGF0aWNfY2FzdDxpbnRlcmZhY2VOYW1lKj4odGFyZ2V0KSk7CisKIEpTVmFsdWUgdG9KUyhFeGVj
U3RhdGUqIGV4ZWMsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEV2ZW50VGFyZ2V0
KiB0YXJnZXQpCiB7CiAgICAgaWYgKCF0YXJnZXQpCiAgICAgICAgIHJldHVybiBqc051bGwoKTsK
IAotICAgIGlmIChFdmVudFNvdXJjZSogZXZlbnRTb3VyY2UgPSB0YXJnZXQtPnRvRXZlbnRTb3Vy
Y2UoKSkKLSAgICAgICAgcmV0dXJuIHRvSlMoZXhlYywgZ2xvYmFsT2JqZWN0LCBldmVudFNvdXJj
ZSk7Ci0KLSNpZiBFTkFCTEUoU1ZHKQotICAgIC8vIFNWR0VsZW1lbnRJbnN0YW5jZSBzdXBwb3J0
cyBib3RoIHRvU1ZHRWxlbWVudEluc3RhbmNlIGFuZCB0b05vZGUgc2luY2Ugc28gbXVjaCBtb3Vz
ZSBoYW5kbGluZyBjb2RlIGRlcGVuZHMgb24gdG9Ob2RlIHJldHVybmluZyBhIHZhbGlkIG5vZGUu
Ci0gICAgaWYgKFNWR0VsZW1lbnRJbnN0YW5jZSogaW5zdGFuY2UgPSB0YXJnZXQtPnRvU1ZHRWxl
bWVudEluc3RhbmNlKCkpCi0gICAgICAgIHJldHVybiB0b0pTKGV4ZWMsIGdsb2JhbE9iamVjdCwg
aW5zdGFuY2UpOwotI2VuZGlmCi0gICAgCi0gICAgaWYgKE5vZGUqIG5vZGUgPSB0YXJnZXQtPnRv
Tm9kZSgpKQotICAgICAgICByZXR1cm4gdG9KUyhleGVjLCBnbG9iYWxPYmplY3QsIG5vZGUpOwot
Ci0gICAgaWYgKERPTVdpbmRvdyogZG9tV2luZG93ID0gdGFyZ2V0LT50b0RPTVdpbmRvdygpKQot
ICAgICAgICByZXR1cm4gdG9KUyhleGVjLCBnbG9iYWxPYmplY3QsIGRvbVdpbmRvdyk7Ci0KLSAg
ICBpZiAoWE1MSHR0cFJlcXVlc3QqIHhociA9IHRhcmdldC0+dG9YTUxIdHRwUmVxdWVzdCgpKQot
ICAgICAgICByZXR1cm4gdG9KUyhleGVjLCBnbG9iYWxPYmplY3QsIHhocik7Ci0KLSAgICBpZiAo
WE1MSHR0cFJlcXVlc3RVcGxvYWQqIHVwbG9hZCA9IHRhcmdldC0+dG9YTUxIdHRwUmVxdWVzdFVw
bG9hZCgpKQotICAgICAgICByZXR1cm4gdG9KUyhleGVjLCBnbG9iYWxPYmplY3QsIHVwbG9hZCk7
Ci0KLSAgICBpZiAoRE9NQXBwbGljYXRpb25DYWNoZSogY2FjaGUgPSB0YXJnZXQtPnRvRE9NQXBw
bGljYXRpb25DYWNoZSgpKQotICAgICAgICByZXR1cm4gdG9KUyhleGVjLCBnbG9iYWxPYmplY3Qs
IGNhY2hlKTsKLQotICAgIGlmIChNZXNzYWdlUG9ydCogbWVzc2FnZVBvcnQgPSB0YXJnZXQtPnRv
TWVzc2FnZVBvcnQoKSkKLSAgICAgICAgcmV0dXJuIHRvSlMoZXhlYywgZ2xvYmFsT2JqZWN0LCBt
ZXNzYWdlUG9ydCk7CisgICAgQXRvbWljU3RyaW5nIGRlc2lyZWRJbnRlcmZhY2UgPSB0YXJnZXQt
PmludGVyZmFjZU5hbWUoKTsKIAorICAgIC8vIEZJWE1FOiBXaHkgY2FuJ3Qgd2UgdXNlIHRvSlMg
Zm9yIHRoZXNlIGNhc2VzPwogI2lmIEVOQUJMRShXT1JLRVJTKQotICAgIGlmIChXb3JrZXIqIHdv
cmtlciA9IHRhcmdldC0+dG9Xb3JrZXIoKSkKLSAgICAgICAgcmV0dXJuIHRvSlMoZXhlYywgZ2xv
YmFsT2JqZWN0LCB3b3JrZXIpOwotCi0gICAgaWYgKERlZGljYXRlZFdvcmtlckNvbnRleHQqIHdv
cmtlckNvbnRleHQgPSB0YXJnZXQtPnRvRGVkaWNhdGVkV29ya2VyQ29udGV4dCgpKQotICAgICAg
ICByZXR1cm4gdG9KU0RPTUdsb2JhbE9iamVjdCh3b3JrZXJDb250ZXh0LCBleGVjKTsKKyAgICBp
ZiAoZXZlbnROYW1lcygpLmludGVyZmFjZUZvckRlZGljYXRlZFdvcmtlckNvbnRleHQgPT0gZGVz
aXJlZEludGVyZmFjZSkKKyAgICAgICAgcmV0dXJuIHRvSlNET01HbG9iYWxPYmplY3Qoc3RhdGlj
X2Nhc3Q8RGVkaWNhdGVkV29ya2VyQ29udGV4dCo+KHRhcmdldCksIGV4ZWMpOwogI2VuZGlmCi0K
ICNpZiBFTkFCTEUoU0hBUkVEX1dPUktFUlMpCi0gICAgaWYgKFNoYXJlZFdvcmtlciogc2hhcmVk
V29ya2VyID0gdGFyZ2V0LT50b1NoYXJlZFdvcmtlcigpKQotICAgICAgICByZXR1cm4gdG9KUyhl
eGVjLCBnbG9iYWxPYmplY3QsIHNoYXJlZFdvcmtlcik7Ci0KLSAgICBpZiAoU2hhcmVkV29ya2Vy
Q29udGV4dCogd29ya2VyQ29udGV4dCA9IHRhcmdldC0+dG9TaGFyZWRXb3JrZXJDb250ZXh0KCkp
Ci0gICAgICAgIHJldHVybiB0b0pTRE9NR2xvYmFsT2JqZWN0KHdvcmtlckNvbnRleHQsIGV4ZWMp
OwotI2VuZGlmCi0KLSNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKLSAgICBpZiAoTm90aWZpY2F0
aW9uKiBub3RpZmljYXRpb24gPSB0YXJnZXQtPnRvTm90aWZpY2F0aW9uKCkpCi0gICAgICAgIHJl
dHVybiB0b0pTKGV4ZWMsIGdsb2JhbE9iamVjdCwgbm90aWZpY2F0aW9uKTsKLSNlbmRpZgotCi0j
aWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCi0gICAgaWYgKElEQkRhdGFiYXNlKiBpZGJEYXRh
YmFzZSA9IHRhcmdldC0+dG9JREJEYXRhYmFzZSgpKQotICAgICAgICByZXR1cm4gdG9KUyhleGVj
LCBnbG9iYWxPYmplY3QsIGlkYkRhdGFiYXNlKTsKLQotICAgIGlmIChJREJSZXF1ZXN0KiBpZGJS
ZXF1ZXN0ID0gdGFyZ2V0LT50b0lEQlJlcXVlc3QoKSkKLSAgICAgICAgcmV0dXJuIHRvSlMoZXhl
YywgZ2xvYmFsT2JqZWN0LCBpZGJSZXF1ZXN0KTsKLQotICAgIGlmIChJREJUcmFuc2FjdGlvbiog
aWRiVHJhbnNhY3Rpb24gPSB0YXJnZXQtPnRvSURCVHJhbnNhY3Rpb24oKSkKLSAgICAgICAgcmV0
dXJuIHRvSlMoZXhlYywgZ2xvYmFsT2JqZWN0LCBpZGJUcmFuc2FjdGlvbik7Ci0jZW5kaWYKLQot
I2lmIEVOQUJMRShXRUJfQVVESU8pCi0gICAgaWYgKEphdmFTY3JpcHRBdWRpb05vZGUqIGpzQXVk
aW9Ob2RlID0gdGFyZ2V0LT50b0phdmFTY3JpcHRBdWRpb05vZGUoKSkKLSAgICAgICAgcmV0dXJu
IHRvSlMoZXhlYywgZ2xvYmFsT2JqZWN0LCBqc0F1ZGlvTm9kZSk7Ci0gICAgaWYgKEF1ZGlvQ29u
dGV4dCogYXVkaW9Db250ZXh0ID0gdGFyZ2V0LT50b0F1ZGlvQ29udGV4dCgpKQotICAgICAgICBy
ZXR1cm4gdG9KUyhleGVjLCBnbG9iYWxPYmplY3QsIGF1ZGlvQ29udGV4dCk7Ci0jZW5kaWYKLQot
I2lmIEVOQUJMRShXRUJfU09DS0VUUykKLSAgICBpZiAoV2ViU29ja2V0KiB3ZWJTb2NrZXQgPSB0
YXJnZXQtPnRvV2ViU29ja2V0KCkpCi0gICAgICAgIHJldHVybiB0b0pTKGV4ZWMsIGdsb2JhbE9i
amVjdCwgd2ViU29ja2V0KTsKLSNlbmRpZgotCi0jaWYgRU5BQkxFKEJMT0IpCi0gICAgaWYgKEZp
bGVSZWFkZXIqIGZpbGVSZWFkZXIgPSB0YXJnZXQtPnRvRmlsZVJlYWRlcigpKQotICAgICAgICBy
ZXR1cm4gdG9KUyhleGVjLCBnbG9iYWxPYmplY3QsIGZpbGVSZWFkZXIpOworICAgIGlmIChldmVu
dE5hbWVzKCkuaW50ZXJmYWNlRm9yU2hhcmVkV29ya2VyQ29udGV4dCA9PSBkZXNpcmVkSW50ZXJm
YWNlKQorICAgICAgICByZXR1cm4gdG9KU0RPTUdsb2JhbE9iamVjdChzdGF0aWNfY2FzdDxTaGFy
ZWRXb3JrZXJDb250ZXh0Kj4odGFyZ2V0KSwgZXhlYyk7CiAjZW5kaWYKIAotI2lmIEVOQUJMRShN
RURJQV9TVFJFQU0pCi0gICAgaWYgKExvY2FsTWVkaWFTdHJlYW0qIHN0cmVhbSA9IHRhcmdldC0+
dG9Mb2NhbE1lZGlhU3RyZWFtKCkpCi0gICAgICAgIHJldHVybiB0b0pTKGV4ZWMsIGdsb2JhbE9i
amVjdCwgc3RyZWFtKTsKLQotICAgIGlmIChNZWRpYVN0cmVhbSogc3RyZWFtID0gdGFyZ2V0LT50
b01lZGlhU3RyZWFtKCkpCi0gICAgICAgIHJldHVybiB0b0pTKGV4ZWMsIGdsb2JhbE9iamVjdCwg
c3RyZWFtKTsKLSNlbmRpZgorICAgIERPTV9FVkVOVF9UQVJHRVRfSU5URVJGQUNFU19GT1JfRUFD
SChUUllfVE9fV1JBUF9XSVRIX0lOVEVSRkFDRSkKIAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwogICAgIHJldHVybiBqc051bGwoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1dvcmtlclNjcmlwdENvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiA5ODE1MSkK
KysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRyb2xsZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC04Niw3ICs4Niw3IEBAIHZvaWQgV29ya2VyU2NyaXB0Q29udHJv
bGxlcjo6aW5pdFNjcmlwdCgKICAgICAgICAgU3Ryb25nPEpTRGVkaWNhdGVkV29ya2VyQ29udGV4
dFByb3RvdHlwZT4gZGVkaWNhdGVkQ29udGV4dFByb3RvdHlwZSgqbV9nbG9iYWxEYXRhLCBKU0Rl
ZGljYXRlZFdvcmtlckNvbnRleHRQcm90b3R5cGU6OmNyZWF0ZSgqbV9nbG9iYWxEYXRhLCAwLCBk
ZWRpY2F0ZWRDb250ZXh0UHJvdG90eXBlU3RydWN0dXJlKSk7CiAgICAgICAgIFN0cnVjdHVyZSog
c3RydWN0dXJlID0gSlNEZWRpY2F0ZWRXb3JrZXJDb250ZXh0OjpjcmVhdGVTdHJ1Y3R1cmUoKm1f
Z2xvYmFsRGF0YSwgMCwgZGVkaWNhdGVkQ29udGV4dFByb3RvdHlwZS5nZXQoKSk7CiAKLSAgICAg
ICAgbV93b3JrZXJDb250ZXh0V3JhcHBlci5zZXQoKm1fZ2xvYmFsRGF0YSwgSlNEZWRpY2F0ZWRX
b3JrZXJDb250ZXh0OjpjcmVhdGUoKm1fZ2xvYmFsRGF0YSwgc3RydWN0dXJlLCBtX3dvcmtlckNv
bnRleHQtPnRvRGVkaWNhdGVkV29ya2VyQ29udGV4dCgpKSk7CisgICAgICAgIG1fd29ya2VyQ29u
dGV4dFdyYXBwZXIuc2V0KCptX2dsb2JhbERhdGEsIEpTRGVkaWNhdGVkV29ya2VyQ29udGV4dDo6
Y3JlYXRlKCptX2dsb2JhbERhdGEsIHN0cnVjdHVyZSwgc3RhdGljX2Nhc3Q8RGVkaWNhdGVkV29y
a2VyQ29udGV4dCo+KG1fd29ya2VyQ29udGV4dCkpKTsKICAgICAgICAgd29ya2VyQ29udGV4dFBy
b3RvdHlwZVN0cnVjdHVyZS0+c2V0R2xvYmFsT2JqZWN0KCptX2dsb2JhbERhdGEsIG1fd29ya2Vy
Q29udGV4dFdyYXBwZXIuZ2V0KCkpOwogICAgICAgICBkZWRpY2F0ZWRDb250ZXh0UHJvdG90eXBl
U3RydWN0dXJlLT5zZXRHbG9iYWxPYmplY3QoKm1fZ2xvYmFsRGF0YSwgbV93b3JrZXJDb250ZXh0
V3JhcHBlci5nZXQoKSk7CiAgICAgICAgIEFTU0VSVChzdHJ1Y3R1cmUtPmdsb2JhbE9iamVjdCgp
ID09IG1fd29ya2VyQ29udGV4dFdyYXBwZXIpOwpAQCAtMTAwLDcgKzEwMCw3IEBAIHZvaWQgV29y
a2VyU2NyaXB0Q29udHJvbGxlcjo6aW5pdFNjcmlwdCgKICAgICAgICAgU3Ryb25nPEpTU2hhcmVk
V29ya2VyQ29udGV4dFByb3RvdHlwZT4gc2hhcmVkQ29udGV4dFByb3RvdHlwZSgqbV9nbG9iYWxE
YXRhLCBKU1NoYXJlZFdvcmtlckNvbnRleHRQcm90b3R5cGU6OmNyZWF0ZSgqbV9nbG9iYWxEYXRh
LCAwLCBzaGFyZWRDb250ZXh0UHJvdG90eXBlU3RydWN0dXJlKSk7CiAgICAgICAgIFN0cnVjdHVy
ZSogc3RydWN0dXJlID0gSlNTaGFyZWRXb3JrZXJDb250ZXh0OjpjcmVhdGVTdHJ1Y3R1cmUoKm1f
Z2xvYmFsRGF0YSwgMCwgc2hhcmVkQ29udGV4dFByb3RvdHlwZS5nZXQoKSk7CiAKLSAgICAgICAg
bV93b3JrZXJDb250ZXh0V3JhcHBlci5zZXQoKm1fZ2xvYmFsRGF0YSwgSlNTaGFyZWRXb3JrZXJD
b250ZXh0OjpjcmVhdGUoKm1fZ2xvYmFsRGF0YSwgc3RydWN0dXJlLCBtX3dvcmtlckNvbnRleHQt
PnRvU2hhcmVkV29ya2VyQ29udGV4dCgpKSk7CisgICAgICAgIG1fd29ya2VyQ29udGV4dFdyYXBw
ZXIuc2V0KCptX2dsb2JhbERhdGEsIEpTU2hhcmVkV29ya2VyQ29udGV4dDo6Y3JlYXRlKCptX2ds
b2JhbERhdGEsIHN0cnVjdHVyZSwgc3RhdGljX2Nhc3Q8U2hhcmVkV29ya2VyQ29udGV4dCo+KG1f
d29ya2VyQ29udGV4dCkpKTsKICAgICAgICAgd29ya2VyQ29udGV4dFByb3RvdHlwZS0+c3RydWN0
dXJlKCktPnNldEdsb2JhbE9iamVjdCgqbV9nbG9iYWxEYXRhLCBtX3dvcmtlckNvbnRleHRXcmFw
cGVyLmdldCgpKTsKICAgICAgICAgc2hhcmVkQ29udGV4dFByb3RvdHlwZS0+c3RydWN0dXJlKCkt
PnNldEdsb2JhbE9iamVjdCgqbV9nbG9iYWxEYXRhLCBtX3dvcmtlckNvbnRleHRXcmFwcGVyLmdl
dCgpKTsKICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET00ubW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET00ubW0JKHJldmlz
aW9uIDk4MTUxKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET00ubW0JKHdvcmtp
bmcgY29weSkKQEAgLTM0MywxMSArMzQzLDYgQEAgaWQgPERPTUV2ZW50VGFyZ2V0PiBraXQoV2Vi
Q29yZTo6RXZlbnRUYQogICAgIGlmIChXZWJDb3JlOjpOb2RlKiBub2RlID0gZXZlbnRUYXJnZXQt
PnRvTm9kZSgpKQogICAgICAgICByZXR1cm4ga2l0KG5vZGUpOwogCi0jaWYgRU5BQkxFKFNWR19E
T01fT0JKQ19CSU5ESU5HUykKLSAgICBpZiAoV2ViQ29yZTo6U1ZHRWxlbWVudEluc3RhbmNlKiBz
dmdFbGVtZW50SW5zdGFuY2UgPSBldmVudFRhcmdldC0+dG9TVkdFbGVtZW50SW5zdGFuY2UoKSkK
LSAgICAgICAgcmV0dXJuIGtpdChzdmdFbGVtZW50SW5zdGFuY2UpOwotI2VuZGlmCi0KICAgICAv
LyBXZSBkb24ndCBoYXZlIGFuIE9iakMgYmluZGluZyBmb3IgWE1MSHR0cFJlcXVlc3QuCiAKICAg
ICByZXR1cm4gbmlsOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XcmFw
cGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdy
YXBwZXIuY3BwCShyZXZpc2lvbiA5ODE1MSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L1Y4RE9NV3JhcHBlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1LDYgKzM1LDggQEAKICNpbmNs
dWRlICJDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbi5oIgogI2luY2x1ZGUgIkRPTURhdGFTdG9y
ZS5oIgogI2luY2x1ZGUgIkRvY3VtZW50TG9hZGVyLmgiCisjaW5jbHVkZSAiRXZlbnRUYXJnZXRI
ZWFkZXJzLmgiCisjaW5jbHVkZSAiRXZlbnRUYXJnZXRJbnRlcmZhY2VzLmgiCiAjaW5jbHVkZSAi
RnJhbWVMb2FkZXJDbGllbnQuaCIKICNpbmNsdWRlICJOb3RpZmljYXRpb24uaCIKICNpbmNsdWRl
ICJWOEFic3RyYWN0RXZlbnRMaXN0ZW5lci5oIgpAQCAtMzMxLDExNCArMzMzLDIwIEBAIHY4OjpI
YW5kbGU8djg6Ok9iamVjdD4gVjhET01XcmFwcGVyOjpnZXQKICAgICByZXR1cm4gZG9tTm9kZU1h
cC5nZXQobm9kZSk7CiB9CiAKKyNkZWZpbmUgVFJZX1RPX1dSQVBfV0lUSF9JTlRFUkZBQ0UoaW50
ZXJmYWNlTmFtZSkgXAorICAgIGlmIChldmVudE5hbWVzKCkuaW50ZXJmYWNlRm9yIyNpbnRlcmZh
Y2VOYW1lID09IGRlc2lyZWRJbnRlcmZhY2UpIFwKKyAgICAgICAgcmV0dXJuIHRvVjgoc3RhdGlj
X2Nhc3Q8aW50ZXJmYWNlTmFtZSo+KHRhcmdldCkpOworCiAvLyBBIEpTIG9iamVjdCBvZiB0eXBl
IEV2ZW50VGFyZ2V0IGlzIGxpbWl0ZWQgdG8gYSBzbWFsbCBudW1iZXIgb2YgcG9zc2libGUgY2xh
c3Nlcy4KLS8vIENoZWNrIEV2ZW50VGFyZ2V0LmggZm9yIG5ldyB0eXBlIGNvbnZlcnNpb24gbWV0
aG9kcwogdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4RE9NV3JhcHBlcjo6Y29udmVydEV2ZW50VGFy
Z2V0VG9WOE9iamVjdChFdmVudFRhcmdldCogdGFyZ2V0KQogewogICAgIGlmICghdGFyZ2V0KQog
ICAgICAgICByZXR1cm4gdjg6Ok51bGwoKTsKIAotI2lmIEVOQUJMRShTVkcpCi0gICAgaWYgKFNW
R0VsZW1lbnRJbnN0YW5jZSogaW5zdGFuY2UgPSB0YXJnZXQtPnRvU1ZHRWxlbWVudEluc3RhbmNl
KCkpCi0gICAgICAgIHJldHVybiB0b1Y4KGluc3RhbmNlKTsKLSNlbmRpZgotCi0jaWYgRU5BQkxF
KFdPUktFUlMpCi0gICAgaWYgKFdvcmtlciogd29ya2VyID0gdGFyZ2V0LT50b1dvcmtlcigpKQot
ICAgICAgICByZXR1cm4gdG9WOCh3b3JrZXIpOwotCi0gICAgaWYgKERlZGljYXRlZFdvcmtlckNv
bnRleHQqIHdvcmtlckNvbnRleHQgPSB0YXJnZXQtPnRvRGVkaWNhdGVkV29ya2VyQ29udGV4dCgp
KQotICAgICAgICByZXR1cm4gdG9WOCh3b3JrZXJDb250ZXh0KTsKLSNlbmRpZiAvLyBXT1JLRVJT
Ci0KLSNpZiBFTkFCTEUoU0hBUkVEX1dPUktFUlMpCi0gICAgaWYgKFNoYXJlZFdvcmtlciogc2hh
cmVkV29ya2VyID0gdGFyZ2V0LT50b1NoYXJlZFdvcmtlcigpKQotICAgICAgICByZXR1cm4gdG9W
OChzaGFyZWRXb3JrZXIpOwotCi0gICAgaWYgKFNoYXJlZFdvcmtlckNvbnRleHQqIHNoYXJlZFdv
cmtlckNvbnRleHQgPSB0YXJnZXQtPnRvU2hhcmVkV29ya2VyQ29udGV4dCgpKQotICAgICAgICBy
ZXR1cm4gdG9WOChzaGFyZWRXb3JrZXJDb250ZXh0KTsKLSNlbmRpZiAvLyBTSEFSRURfV09SS0VS
UwotCi0jaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCi0gICAgaWYgKE5vdGlmaWNhdGlvbiogbm90
aWZpY2F0aW9uID0gdGFyZ2V0LT50b05vdGlmaWNhdGlvbigpKQotICAgICAgICByZXR1cm4gdG9W
OChub3RpZmljYXRpb24pOwotI2VuZGlmCi0KLSNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkK
LSAgICBpZiAoSURCRGF0YWJhc2UqIGlkYkRhdGFiYXNlID0gdGFyZ2V0LT50b0lEQkRhdGFiYXNl
KCkpCi0gICAgICAgIHJldHVybiB0b1Y4KGlkYkRhdGFiYXNlKTsKLSAgICBpZiAoSURCUmVxdWVz
dCogaWRiUmVxdWVzdCA9IHRhcmdldC0+dG9JREJSZXF1ZXN0KCkpCi0gICAgICAgIHJldHVybiB0
b1Y4KGlkYlJlcXVlc3QpOwotICAgIGlmIChJREJUcmFuc2FjdGlvbiogaWRiVHJhbnNhY3Rpb24g
PSB0YXJnZXQtPnRvSURCVHJhbnNhY3Rpb24oKSkKLSAgICAgICAgcmV0dXJuIHRvVjgoaWRiVHJh
bnNhY3Rpb24pOwotI2VuZGlmCi0KLSNpZiBFTkFCTEUoV0VCX1NPQ0tFVFMpCi0gICAgaWYgKFdl
YlNvY2tldCogd2ViU29ja2V0ID0gdGFyZ2V0LT50b1dlYlNvY2tldCgpKQotICAgICAgICByZXR1
cm4gdG9WOCh3ZWJTb2NrZXQpOwotI2VuZGlmCi0KLSAgICBpZiAoTm9kZSogbm9kZSA9IHRhcmdl
dC0+dG9Ob2RlKCkpCi0gICAgICAgIHJldHVybiB0b1Y4KG5vZGUpOwotCi0gICAgaWYgKERPTVdp
bmRvdyogZG9tV2luZG93ID0gdGFyZ2V0LT50b0RPTVdpbmRvdygpKQotICAgICAgICByZXR1cm4g
dG9WOChkb21XaW5kb3cpOwotCi0gICAgLy8gWE1MSHR0cFJlcXVlc3QgaXMgY3JlYXRlZCB3aXRo
aW4gaXRzIEpTIGNvdW50ZXJwYXJ0LgotICAgIGlmIChYTUxIdHRwUmVxdWVzdCogeG1sSHR0cFJl
cXVlc3QgPSB0YXJnZXQtPnRvWE1MSHR0cFJlcXVlc3QoKSkgewotICAgICAgICB2ODo6SGFuZGxl
PHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBnZXRBY3RpdmVET01PYmplY3RNYXAoKS5nZXQoeG1sSHR0
cFJlcXVlc3QpOwotICAgICAgICBBU1NFUlQoIXdyYXBwZXIuSXNFbXB0eSgpKTsKLSAgICAgICAg
cmV0dXJuIHdyYXBwZXI7Ci0gICAgfQotCi0gICAgLy8gTWVzc2FnZVBvcnQgaXMgY3JlYXRlZCB3
aXRoaW4gaXRzIEpTIGNvdW50ZXJwYXJ0Ci0gICAgaWYgKE1lc3NhZ2VQb3J0KiBwb3J0ID0gdGFy
Z2V0LT50b01lc3NhZ2VQb3J0KCkpIHsKLSAgICAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3
cmFwcGVyID0gZ2V0QWN0aXZlRE9NT2JqZWN0TWFwKCkuZ2V0KHBvcnQpOwotICAgICAgICBBU1NF
UlQoIXdyYXBwZXIuSXNFbXB0eSgpKTsKLSAgICAgICAgcmV0dXJuIHdyYXBwZXI7Ci0gICAgfQot
Ci0gICAgaWYgKFhNTEh0dHBSZXF1ZXN0VXBsb2FkKiB1cGxvYWQgPSB0YXJnZXQtPnRvWE1MSHR0
cFJlcXVlc3RVcGxvYWQoKSkgewotICAgICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBw
ZXIgPSBnZXRET01PYmplY3RNYXAoKS5nZXQodXBsb2FkKTsKLSAgICAgICAgQVNTRVJUKCF3cmFw
cGVyLklzRW1wdHkoKSk7Ci0gICAgICAgIHJldHVybiB3cmFwcGVyOwotICAgIH0KLQotICAgIGlm
IChET01BcHBsaWNhdGlvbkNhY2hlKiBkb21BcHBDYWNoZSA9IHRhcmdldC0+dG9ET01BcHBsaWNh
dGlvbkNhY2hlKCkpCi0gICAgICAgIHJldHVybiB0b1Y4KGRvbUFwcENhY2hlKTsKLQotICAgIGlm
IChFdmVudFNvdXJjZSogZXZlbnRTb3VyY2UgPSB0YXJnZXQtPnRvRXZlbnRTb3VyY2UoKSkKLSAg
ICAgICAgcmV0dXJuIHRvVjgoZXZlbnRTb3VyY2UpOwotCi0jaWYgRU5BQkxFKEJMT0IpCi0gICAg
aWYgKEZpbGVSZWFkZXIqIGZpbGVSZWFkZXIgPSB0YXJnZXQtPnRvRmlsZVJlYWRlcigpKQotICAg
ICAgICByZXR1cm4gdG9WOChmaWxlUmVhZGVyKTsKLSNlbmRpZgotCi0jaWYgRU5BQkxFKEZJTEVf
U1lTVEVNKQotICAgIGlmIChGaWxlV3JpdGVyKiBmaWxlV3JpdGVyID0gdGFyZ2V0LT50b0ZpbGVX
cml0ZXIoKSkKLSAgICAgICAgcmV0dXJuIHRvVjgoZmlsZVdyaXRlcik7Ci0jZW5kaWYKLQotI2lm
IEVOQUJMRShXRUJfQVVESU8pCi0gICAgaWYgKEphdmFTY3JpcHRBdWRpb05vZGUqIGpzQXVkaW9O
b2RlID0gdGFyZ2V0LT50b0phdmFTY3JpcHRBdWRpb05vZGUoKSkKLSAgICAgICAgcmV0dXJuIHRv
VjgoanNBdWRpb05vZGUpOwotICAgIGlmIChBdWRpb0NvbnRleHQqIGF1ZGlvQ29udGV4dCA9IHRh
cmdldC0+dG9BdWRpb0NvbnRleHQoKSkKLSAgICAgICAgcmV0dXJuIHRvVjgoYXVkaW9Db250ZXh0
KTsKLSNlbmRpZiAgICAKLQotI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCi0gICAgaWYgKExvY2Fs
TWVkaWFTdHJlYW0qIHN0cmVhbSA9IHRhcmdldC0+dG9Mb2NhbE1lZGlhU3RyZWFtKCkpCi0gICAg
ICAgIHJldHVybiB0b1Y4KHN0cmVhbSk7Ci0KLSAgICBpZiAoTWVkaWFTdHJlYW0qIHN0cmVhbSA9
IHRhcmdldC0+dG9NZWRpYVN0cmVhbSgpKQotICAgICAgICByZXR1cm4gdG9WOChzdHJlYW0pOwot
Ci0gICAgaWYgKFBlZXJDb25uZWN0aW9uKiBwZWVyQ29ubmVjdGlvbiA9IHRhcmdldC0+dG9QZWVy
Q29ubmVjdGlvbigpKQotICAgICAgICByZXR1cm4gdG9WOChwZWVyQ29ubmVjdGlvbik7Ci0jZW5k
aWYKKyAgICBBdG9taWNTdHJpbmcgZGVzaXJlZEludGVyZmFjZSA9IHRhcmdldC0+aW50ZXJmYWNl
TmFtZSgpOworICAgIERPTV9FVkVOVF9UQVJHRVRfSU5URVJGQUNFU19GT1JfRUFDSChUUllfVE9f
V1JBUF9XSVRIX0lOVEVSRkFDRSkKIAotICAgIEFTU0VSVCgwKTsKKyAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKICAgICByZXR1cm4gbm90SGFuZGxlZEJ5SW50ZXJjZXB0b3IoKTsKIH0KIApJbmRl
eDogU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TmFtZXMuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2RvbS9FdmVudE5hbWVzLmNwcAkocmV2aXNpb24gOTgxNTEpCisrKyBTb3VyY2Uv
V2ViQ29yZS9kb20vRXZlbnROYW1lcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDYgKzMzLDcg
QEAgRXZlbnROYW1lczo6RXZlbnROYW1lcygpCiAgICAgOiBkdW1teSgwKQogRE9NX0VWRU5UX05B
TUVTX0ZPUl9FQUNIKElOSVRJQUxJWkVfRVZFTlRfTkFNRSkKIERPTV9FVkVOVF9JTlRFUkZBQ0VT
X0ZPUl9FQUNIKElOSVRJQUxJWkVfRVZFTlRfSU5URVJGQUNFKQorRE9NX0VWRU5UX1RBUkdFVF9J
TlRFUkZBQ0VTX0ZPUl9FQUNIKElOSVRJQUxJWkVfRVZFTlRfSU5URVJGQUNFKQogewogfQogCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRXZlbnROYW1lcy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2RvbS9FdmVudE5hbWVzLmgJKHJldmlzaW9uIDk4MTUxKQorKysgU291cmNlL1dl
YkNvcmUvZG9tL0V2ZW50TmFtZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMjMsNiArMjMsNyBAQAog
I2RlZmluZSBFdmVudE5hbWVzX2gKIAogI2luY2x1ZGUgIkV2ZW50SW50ZXJmYWNlcy5oIgorI2lu
Y2x1ZGUgIkV2ZW50VGFyZ2V0SW50ZXJmYWNlcy5oIgogI2luY2x1ZGUgIlRocmVhZEdsb2JhbERh
dGEuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmcuaD4KIApAQCAtMjA1LDYgKzIw
Niw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICAjZGVmaW5lIERPTV9FVkVOVF9J
TlRFUkZBQ0VfREVDTEFSRShuYW1lKSBBdG9taWNTdHJpbmcgaW50ZXJmYWNlRm9yIyNuYW1lOwog
ICAgICAgICBET01fRVZFTlRfSU5URVJGQUNFU19GT1JfRUFDSChET01fRVZFTlRfSU5URVJGQUNF
X0RFQ0xBUkUpCisgICAgICAgIERPTV9FVkVOVF9UQVJHRVRfSU5URVJGQUNFU19GT1JfRUFDSChE
T01fRVZFTlRfSU5URVJGQUNFX0RFQ0xBUkUpCiAgICAgICAgICN1bmRlZiBET01fRVZFTlRfSU5U
RVJGQUNFX0RFQ0xBUkUKICAgICB9OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRU
YXJnZXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5j
cHAJKHJldmlzaW9uIDk4MTUxKQorKysgU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtODAsMTEgKzgwLDYgQEAgRXZlbnRUYXJnZXQ6On5FdmVudFRh
cmdldCgpCiB7CiB9CiAKLUV2ZW50U291cmNlKiBFdmVudFRhcmdldDo6dG9FdmVudFNvdXJjZSgp
Ci17Ci0gICAgcmV0dXJuIDA7Ci19Ci0KIE5vZGUqIEV2ZW50VGFyZ2V0Ojp0b05vZGUoKQogewog
ICAgIHJldHVybiAwOwpAQCAtOTUsMTMxICs5MCw2IEBAIERPTVdpbmRvdyogRXZlbnRUYXJnZXQ6
OnRvRE9NV2luZG93KCkKICAgICByZXR1cm4gMDsKIH0KIAotWE1MSHR0cFJlcXVlc3QqIEV2ZW50
VGFyZ2V0Ojp0b1hNTEh0dHBSZXF1ZXN0KCkKLXsKLSAgICByZXR1cm4gMDsKLX0KLQotWE1MSHR0
cFJlcXVlc3RVcGxvYWQqIEV2ZW50VGFyZ2V0Ojp0b1hNTEh0dHBSZXF1ZXN0VXBsb2FkKCkKLXsK
LSAgICByZXR1cm4gMDsKLX0KLQotRE9NQXBwbGljYXRpb25DYWNoZSogRXZlbnRUYXJnZXQ6OnRv
RE9NQXBwbGljYXRpb25DYWNoZSgpCi17Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLSNpZiBFTkFCTEUo
U1ZHKQotU1ZHRWxlbWVudEluc3RhbmNlKiBFdmVudFRhcmdldDo6dG9TVkdFbGVtZW50SW5zdGFu
Y2UoKQotewotICAgIHJldHVybiAwOwotfQotI2VuZGlmCi0KLSNpZiBFTkFCTEUoV0VCX0FVRElP
KQotQXVkaW9Db250ZXh0KiBFdmVudFRhcmdldDo6dG9BdWRpb0NvbnRleHQoKQotewotICAgIHJl
dHVybiAwOwotfQotCi1KYXZhU2NyaXB0QXVkaW9Ob2RlKiBFdmVudFRhcmdldDo6dG9KYXZhU2Ny
aXB0QXVkaW9Ob2RlKCkKLXsKLSAgICByZXR1cm4gMDsKLX0KLSNlbmRpZgotCi0jaWYgRU5BQkxF
KFdFQl9TT0NLRVRTKQotV2ViU29ja2V0KiBFdmVudFRhcmdldDo6dG9XZWJTb2NrZXQoKQotewot
ICAgIHJldHVybiAwOwotfQotI2VuZGlmCi0KLU1lc3NhZ2VQb3J0KiBFdmVudFRhcmdldDo6dG9N
ZXNzYWdlUG9ydCgpCi17Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLSNpZiBFTkFCTEUoV09SS0VSUykK
LVdvcmtlciogRXZlbnRUYXJnZXQ6OnRvV29ya2VyKCkKLXsKLSAgICByZXR1cm4gMDsKLX0KLQot
RGVkaWNhdGVkV29ya2VyQ29udGV4dCogRXZlbnRUYXJnZXQ6OnRvRGVkaWNhdGVkV29ya2VyQ29u
dGV4dCgpCi17Ci0gICAgcmV0dXJuIDA7Ci19Ci0jZW5kaWYKLQotI2lmIEVOQUJMRShTSEFSRURf
V09SS0VSUykKLVNoYXJlZFdvcmtlciogRXZlbnRUYXJnZXQ6OnRvU2hhcmVkV29ya2VyKCkKLXsK
LSAgICByZXR1cm4gMDsKLX0KLVNoYXJlZFdvcmtlckNvbnRleHQqIEV2ZW50VGFyZ2V0Ojp0b1No
YXJlZFdvcmtlckNvbnRleHQoKQotewotICAgIHJldHVybiAwOwotfQotI2VuZGlmCi0KLSNpZiBF
TkFCTEUoTk9USUZJQ0FUSU9OUykKLU5vdGlmaWNhdGlvbiogRXZlbnRUYXJnZXQ6OnRvTm90aWZp
Y2F0aW9uKCkKLXsKLSAgICByZXR1cm4gMDsKLX0KLSNlbmRpZgotCi0jaWYgRU5BQkxFKEJMT0Ip
Ci1GaWxlUmVhZGVyKiBFdmVudFRhcmdldDo6dG9GaWxlUmVhZGVyKCkKLXsKLSAgICByZXR1cm4g
MDsKLX0KLSNlbmRpZgotI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKLUZpbGVXcml0ZXIqIEV2ZW50
VGFyZ2V0Ojp0b0ZpbGVXcml0ZXIoKQotewotICAgIHJldHVybiAwOwotfQotI2VuZGlmCi0KLSNp
ZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKLUlEQkRhdGFiYXNlKiBFdmVudFRhcmdldDo6dG9J
REJEYXRhYmFzZSgpCi17Ci0gICAgcmV0dXJuIDA7Ci19Ci1JREJSZXF1ZXN0KiBFdmVudFRhcmdl
dDo6dG9JREJSZXF1ZXN0KCkKLXsKLSAgICByZXR1cm4gMDsKLX0KLUlEQlRyYW5zYWN0aW9uKiBF
dmVudFRhcmdldDo6dG9JREJUcmFuc2FjdGlvbigpCi17Ci0gICAgcmV0dXJuIDA7Ci19Ci1JREJW
ZXJzaW9uQ2hhbmdlUmVxdWVzdCogRXZlbnRUYXJnZXQ6OnRvSURCVmVyc2lvbkNoYW5nZVJlcXVl
c3QoKQotewotICAgIHJldHVybiAwOwotfQotI2VuZGlmCi0KLSNpZiBFTkFCTEUoTUVESUFfU1RS
RUFNKQotTWVkaWFTdHJlYW0qIEV2ZW50VGFyZ2V0Ojp0b01lZGlhU3RyZWFtKCkKLXsKLSAgICBy
ZXR1cm4gMDsKLX0KLQotTG9jYWxNZWRpYVN0cmVhbSogRXZlbnRUYXJnZXQ6OnRvTG9jYWxNZWRp
YVN0cmVhbSgpCi17Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLVBlZXJDb25uZWN0aW9uKiBFdmVudFRh
cmdldDo6dG9QZWVyQ29ubmVjdGlvbigpCi17Ci0gICAgcmV0dXJuIDA7Ci19Ci0jZW5kaWYKLQog
Ym9vbCBFdmVudFRhcmdldDo6YWRkRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2
ZW50VHlwZSwgUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiBsaXN0ZW5lciwgYm9vbCB1c2VDYXB0
dXJlKQogewogICAgIEV2ZW50VGFyZ2V0RGF0YSogZCA9IGVuc3VyZUV2ZW50VGFyZ2V0RGF0YSgp
OwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmgJKHJldmlzaW9uIDk4MTUxKQorKysgU291
cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmgJKHdvcmtpbmcgY29weSkKQEAgLTEwMCw1OCAr
MTAwLDExIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCByZWYoKSB7IHJlZkV2
ZW50VGFyZ2V0KCk7IH0KICAgICAgICAgdm9pZCBkZXJlZigpIHsgZGVyZWZFdmVudFRhcmdldCgp
OyB9CiAKLSAgICAgICAgdmlydHVhbCBFdmVudFNvdXJjZSogdG9FdmVudFNvdXJjZSgpOwotICAg
ICAgICB2aXJ0dWFsIE1lc3NhZ2VQb3J0KiB0b01lc3NhZ2VQb3J0KCk7CisgICAgICAgIHZpcnR1
YWwgY29uc3QgQXRvbWljU3RyaW5nJiBpbnRlcmZhY2VOYW1lKCkgY29uc3QgPSAwOworICAgICAg
ICB2aXJ0dWFsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KSBjb25zdCA9IDA7CisKICAgICAgICAgdmlydHVhbCBOb2RlKiB0b05vZGUoKTsKICAgICAgICAg
dmlydHVhbCBET01XaW5kb3cqIHRvRE9NV2luZG93KCk7Ci0gICAgICAgIHZpcnR1YWwgWE1MSHR0
cFJlcXVlc3QqIHRvWE1MSHR0cFJlcXVlc3QoKTsKLSAgICAgICAgdmlydHVhbCBYTUxIdHRwUmVx
dWVzdFVwbG9hZCogdG9YTUxIdHRwUmVxdWVzdFVwbG9hZCgpOwotICAgICAgICB2aXJ0dWFsIERP
TUFwcGxpY2F0aW9uQ2FjaGUqIHRvRE9NQXBwbGljYXRpb25DYWNoZSgpOwotI2lmIEVOQUJMRShT
VkcpCi0gICAgICAgIHZpcnR1YWwgU1ZHRWxlbWVudEluc3RhbmNlKiB0b1NWR0VsZW1lbnRJbnN0
YW5jZSgpOwotI2VuZGlmCi0jaWYgRU5BQkxFKFdPUktFUlMpCi0gICAgICAgIHZpcnR1YWwgV29y
a2VyKiB0b1dvcmtlcigpOwotICAgICAgICB2aXJ0dWFsIERlZGljYXRlZFdvcmtlckNvbnRleHQq
IHRvRGVkaWNhdGVkV29ya2VyQ29udGV4dCgpOwotI2VuZGlmCi0jaWYgRU5BQkxFKFNIQVJFRF9X
T1JLRVJTKQotICAgICAgICB2aXJ0dWFsIFNoYXJlZFdvcmtlciogdG9TaGFyZWRXb3JrZXIoKTsK
LSAgICAgICAgdmlydHVhbCBTaGFyZWRXb3JrZXJDb250ZXh0KiB0b1NoYXJlZFdvcmtlckNvbnRl
eHQoKTsKLSNlbmRpZgotCi0jaWYgRU5BQkxFKFdFQl9BVURJTykKLSAgICAgICAgdmlydHVhbCBB
dWRpb0NvbnRleHQqIHRvQXVkaW9Db250ZXh0KCk7Ci0gICAgICAgIHZpcnR1YWwgSmF2YVNjcmlw
dEF1ZGlvTm9kZSogdG9KYXZhU2NyaXB0QXVkaW9Ob2RlKCk7Ci0jZW5kaWYKLQotI2lmIEVOQUJM
RShXRUJfU09DS0VUUykKLSAgICAgICAgdmlydHVhbCBXZWJTb2NrZXQqIHRvV2ViU29ja2V0KCk7
Ci0jZW5kaWYKLQotI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQotICAgICAgICB2aXJ0dWFsIE5v
dGlmaWNhdGlvbiogdG9Ob3RpZmljYXRpb24oKTsKLSNlbmRpZgotI2lmIEVOQUJMRShCTE9CKQot
ICAgICAgICB2aXJ0dWFsIEZpbGVSZWFkZXIqIHRvRmlsZVJlYWRlcigpOwotI2VuZGlmCi0jaWYg
RU5BQkxFKEZJTEVfU1lTVEVNKQotICAgICAgICB2aXJ0dWFsIEZpbGVXcml0ZXIqIHRvRmlsZVdy
aXRlcigpOwotI2VuZGlmCi0KLSNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKLSAgICAgICAg
dmlydHVhbCBJREJEYXRhYmFzZSogdG9JREJEYXRhYmFzZSgpOwotICAgICAgICB2aXJ0dWFsIElE
QlJlcXVlc3QqIHRvSURCUmVxdWVzdCgpOwotICAgICAgICB2aXJ0dWFsIElEQlRyYW5zYWN0aW9u
KiB0b0lEQlRyYW5zYWN0aW9uKCk7Ci0gICAgICAgIHZpcnR1YWwgSURCVmVyc2lvbkNoYW5nZVJl
cXVlc3QqIHRvSURCVmVyc2lvbkNoYW5nZVJlcXVlc3QoKTsKLSNlbmRpZgotCi0jaWYgRU5BQkxF
KE1FRElBX1NUUkVBTSkKLSAgICAgICAgdmlydHVhbCBNZWRpYVN0cmVhbSogdG9NZWRpYVN0cmVh
bSgpOwotICAgICAgICB2aXJ0dWFsIExvY2FsTWVkaWFTdHJlYW0qIHRvTG9jYWxNZWRpYVN0cmVh
bSgpOwotICAgICAgICB2aXJ0dWFsIFBlZXJDb25uZWN0aW9uKiB0b1BlZXJDb25uZWN0aW9uKCk7
Ci0jZW5kaWYKLQotICAgICAgICB2aXJ0dWFsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdCA9IDA7CiAKICAgICAgICAgdmlydHVhbCBib29sIGFk
ZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFBhc3NSZWZQdHI8
RXZlbnRMaXN0ZW5lcj4sIGJvb2wgdXNlQ2FwdHVyZSk7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBy
ZW1vdmVFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBFdmVudExp
c3RlbmVyKiwgYm9vbCB1c2VDYXB0dXJlKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9FdmVu
dFRhcmdldEZhY3RvcnkuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50
VGFyZ2V0RmFjdG9yeS5pbgkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9FdmVu
dFRhcmdldEZhY3RvcnkuaW4JKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjcgQEAKK25hbWVzcGFj
ZT0iRXZlbnRUYXJnZXQiCisKK0V2ZW50U291cmNlCitNZXNzYWdlUG9ydAorTm9kZQorRE9NV2lu
ZG93CitYTUxIdHRwUmVxdWVzdAorWE1MSHR0cFJlcXVlc3RVcGxvYWQKK0RPTUFwcGxpY2F0aW9u
Q2FjaGUKK1NWR0VsZW1lbnRJbnN0YW5jZSBjb25kaXRpb25hbD1TVkcKK1dvcmtlciBjb25kaXRp
b25hbD1XT1JLRVJTCitEZWRpY2F0ZWRXb3JrZXJDb250ZXh0IGNvbmRpdGlvbmFsPVdPUktFUlMK
K1NoYXJlZFdvcmtlciBjb25kaXRpb25hbD1TSEFSRURfV09SS0VSUworU2hhcmVkV29ya2VyQ29u
dGV4dCBjb25kaXRpb25hbD1TSEFSRURfV09SS0VSUworQXVkaW9Db250ZXh0IGNvbmRpdGlvbmFs
PVdFQl9BVURJTworSmF2YVNjcmlwdEF1ZGlvTm9kZSBjb25kaXRpb25hbD1XRUJfQVVESU8KK1dl
YlNvY2tldCBjb25kaXRpb25hbD1XRUJfU09DS0VUUworTm90aWZpY2F0aW9uIGNvbmRpdGlvbmFs
PU5PVElGSUNBVElPTlMKK0ZpbGVSZWFkZXIgY29uZGl0aW9uYWw9QkxPQgorRmlsZVdyaXRlciBj
b25kaXRpb25hbD1GSUxFX1NZU1RFTQorSURCRGF0YWJhc2UgY29uZGl0aW9uYWw9SU5ERVhFRF9E
QVRBQkFTRQorSURCUmVxdWVzdCBjb25kaXRpb25hbD1JTkRFWEVEX0RBVEFCQVNFCitJREJUcmFu
c2FjdGlvbiBjb25kaXRpb25hbD1JTkRFWEVEX0RBVEFCQVNFCitJREJWZXJzaW9uQ2hhbmdlUmVx
dWVzdCBjb25kaXRpb25hbD1JTkRFWEVEX0RBVEFCQVNFCitNZWRpYVN0cmVhbSBjb25kaXRpb25h
bD1NRURJQV9TVFJFQU0KK0xvY2FsTWVkaWFTdHJlYW0gY29uZGl0aW9uYWw9TUVESUFfU1RSRUFN
CitQZWVyQ29ubmVjdGlvbiBjb25kaXRpb25hbD1NRURJQV9TVFJFQU0KSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2RvbS9Mb2NhbE1lZGlhU3RyZWFtLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9kb20vTG9jYWxNZWRpYVN0cmVhbS5jcHAJKHJldmlzaW9uIDk4MTUxKQorKysgU291cmNl
L1dlYkNvcmUvZG9tL0xvY2FsTWVkaWFTdHJlYW0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2
ICsyOCw3IEBACiAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogCisjaW5jbHVkZSAiRXZlbnRO
YW1lcy5oIgogI2luY2x1ZGUgIlVVSUQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNjUs
OSArNjYsOSBAQCBMb2NhbE1lZGlhU3RyZWFtOjp+TG9jYWxNZWRpYVN0cmVhbSgpCiB7CiB9CiAK
LUxvY2FsTWVkaWFTdHJlYW0qIExvY2FsTWVkaWFTdHJlYW06OnRvTG9jYWxNZWRpYVN0cmVhbSgp
Citjb25zdCBBdG9taWNTdHJpbmcmIExvY2FsTWVkaWFTdHJlYW06OmludGVyZmFjZU5hbWUoKSBj
b25zdAogewotICAgIHJldHVybiB0aGlzOworICAgIHJldHVybiBldmVudE5hbWVzKCkuaW50ZXJm
YWNlRm9yTG9jYWxNZWRpYVN0cmVhbTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRl
eDogU291cmNlL1dlYkNvcmUvZG9tL0xvY2FsTWVkaWFTdHJlYW0uaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9kb20vTG9jYWxNZWRpYVN0cmVhbS5oCShyZXZpc2lvbiA5ODE1MSkKKysr
IFNvdXJjZS9XZWJDb3JlL2RvbS9Mb2NhbE1lZGlhU3RyZWFtLmgJKHdvcmtpbmcgY29weSkKQEAg
LTQwLDggKzQwLDggQEAgcHVibGljOgogCiAgICAgdm9pZCBzdG9wKCk7CiAKLSAgICAvLyBFdmVu
dFRhcmdldC4KLSAgICB2aXJ0dWFsIExvY2FsTWVkaWFTdHJlYW0qIHRvTG9jYWxNZWRpYVN0cmVh
bSgpOworICAgIC8vIEV2ZW50VGFyZ2V0CisgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcm
IGludGVyZmFjZU5hbWUoKSBjb25zdDsKIAogcHJpdmF0ZToKICAgICBMb2NhbE1lZGlhU3RyZWFt
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBNZWRpYVN0cmVhbVNvdXJjZVZlY3RvciYp
OwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL01lZGlhU3RyZWFtLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9kb20vTWVkaWFTdHJlYW0uY3BwCShyZXZpc2lvbiA5ODE1MSkKKysr
IFNvdXJjZS9XZWJDb3JlL2RvbS9NZWRpYVN0cmVhbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY0
LDExICs2NCw2IEBAIE1lZGlhU3RyZWFtOjpSZWFkeVN0YXRlIE1lZGlhU3RyZWFtOjpyZWEKICAg
ICByZXR1cm4gbV9kZXNjcmlwdG9yLT5lbmRlZCgpID8gRU5ERUQgOiBMSVZFOwogfQogCi1NZWRp
YVN0cmVhbSogTWVkaWFTdHJlYW06OnRvTWVkaWFTdHJlYW0oKQotewotICAgIHJldHVybiB0aGlz
OwotfQotCiB2b2lkIE1lZGlhU3RyZWFtOjpzdHJlYW1FbmRlZCgpCiB7CiAgICAgaWYgKHJlYWR5
U3RhdGUoKSA9PSBFTkRFRCkKQEAgLTc5LDYgKzc0LDExIEBAIHZvaWQgTWVkaWFTdHJlYW06OnN0
cmVhbUVuZGVkKCkKICAgICBkaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygp
LmVuZGVkRXZlbnQsIGZhbHNlLCBmYWxzZSkpOwogfQogCitjb25zdCBBdG9taWNTdHJpbmcmIE1l
ZGlhU3RyZWFtOjppbnRlcmZhY2VOYW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZXZlbnROYW1l
cygpLmludGVyZmFjZUZvck1lZGlhU3RyZWFtOworfQorCiBTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBNZWRpYVN0cmVhbTo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0CiB7CiAgICAgcmV0
dXJuIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC5nZXQoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2RvbS9NZWRpYVN0cmVhbS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9NZWRp
YVN0cmVhbS5oCShyZXZpc2lvbiA5ODE1MSkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9NZWRpYVN0
cmVhbS5oCSh3b3JraW5nIGNvcHkpCkBAIC02MSw3ICs2MSw3IEBAIHB1YmxpYzoKICAgICBNZWRp
YVN0cmVhbURlc2NyaXB0b3IqIGRlc2NyaXB0b3IoKSBjb25zdCB7IHJldHVybiBtX2Rlc2NyaXB0
b3IuZ2V0KCk7IH0KIAogICAgIC8vIEV2ZW50VGFyZ2V0IGltcGxlbWVudGF0aW9uLgotICAgIHZp
cnR1YWwgTWVkaWFTdHJlYW0qIHRvTWVkaWFTdHJlYW0oKTsKKyAgICB2aXJ0dWFsIGNvbnN0IEF0
b21pY1N0cmluZyYgaW50ZXJmYWNlTmFtZSgpIGNvbnN0OwogICAgIHZpcnR1YWwgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0OwogCiAgICAgdXNp
bmcgUmVmQ291bnRlZDxNZWRpYVN0cmVhbT46OnJlZjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Rv
bS9NZXNzYWdlUG9ydC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL01lc3Nh
Z2VQb3J0LmNwcAkocmV2aXNpb24gOTgxNTEpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vTWVzc2Fn
ZVBvcnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTksNiArMTU5LDExIEBAIHZvaWQgTWVzc2Fn
ZVBvcnQ6OmNvbnRleHREZXN0cm95ZWQoKQogICAgIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCA9
IDA7CiB9CiAKK2NvbnN0IEF0b21pY1N0cmluZyYgTWVzc2FnZVBvcnQ6OmludGVyZmFjZU5hbWUo
KSBjb25zdAoreworICAgIHJldHVybiBldmVudE5hbWVzKCkuaW50ZXJmYWNlRm9yTWVzc2FnZVBv
cnQ7Cit9CisKIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIE1lc3NhZ2VQb3J0OjpzY3JpcHRFeGVj
dXRpb25Db250ZXh0KCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9zY3JpcHRFeGVjdXRpb25Db250
ZXh0OwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VQb3J0LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VQb3J0LmgJKHJldmlzaW9uIDk4MTUxKQorKysg
U291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VQb3J0LmgJKHdvcmtpbmcgY29weSkKQEAgLTgyLDEw
ICs4Miw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICB2b2lkIGNvbnRleHREZXN0
cm95ZWQoKTsKIAorICAgICAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgaW50ZXJmYWNl
TmFtZSgpIGNvbnN0OwogICAgICAgICB2aXJ0dWFsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdDsKIAotICAgICAgICB2aXJ0dWFsIE1lc3NhZ2VQ
b3J0KiB0b01lc3NhZ2VQb3J0KCkgeyByZXR1cm4gdGhpczsgfQotCiAgICAgICAgIHZvaWQgZGlz
cGF0Y2hNZXNzYWdlcygpOwogCiAgICAgICAgIHVzaW5nIFJlZkNvdW50ZWQ8TWVzc2FnZVBvcnQ+
OjpyZWY7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCShyZXZpc2lvbiA5ODE1MSkKKysrIFNvdXJjZS9X
ZWJDb3JlL2RvbS9Ob2RlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTc1LDYgKzU3NSwxMSBAQCB2
b2lkIE5vZGU6OnNldFNoYWRvd0hvc3QoRWxlbWVudCogaG9zdCkKICAgICBzZXRQYXJlbnQoaG9z
dCk7CiB9CiAKK05vZGUqIE5vZGU6OnRvTm9kZSgpCit7CisgICAgcmV0dXJuIHRoaXM7Cit9CisK
IEhUTUxJbnB1dEVsZW1lbnQqIE5vZGU6OnRvSW5wdXRFbGVtZW50KCkKIHsKICAgICAvLyBJZiBv
bmUgb2YgdGhlIGJlbG93IEFTU0VSVHMgdHJpZ2dlciwgeW91IGFyZSBjYWxsaW5nIHRoaXMgZnVu
Y3Rpb24KQEAgLTI1MTcsNyArMjUyMiwxMCBAQCBOb2RlKiBOb2RlOjplbmNsb3NpbmdMaW5rRXZl
bnRQYXJlbnRPclNlCiAgICAgcmV0dXJuIDA7CiB9CiAKLS8vIC0tLS0tLS0tCitjb25zdCBBdG9t
aWNTdHJpbmcmIE5vZGU6OmludGVyZmFjZU5hbWUoKSBjb25zdAoreworICAgIHJldHVybiBldmVu
dE5hbWVzKCkuaW50ZXJmYWNlRm9yTm9kZTsKK30KIAogU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
Tm9kZTo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0CiB7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9kb20vTm9kZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgJ
KHJldmlzaW9uIDk4MTUxKQorKysgU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaAkod29ya2luZyBj
b3B5KQpAQCAtNTM1LDEwICs1MzUsMTAgQEAgcHVibGljOgogCiAgICAgdW5zaWduZWQgc2hvcnQg
Y29tcGFyZURvY3VtZW50UG9zaXRpb24oTm9kZSopOwogCi0gICAgdmlydHVhbCBOb2RlKiB0b05v
ZGUoKSB7IHJldHVybiB0aGlzOyB9Ci0KKyAgICB2aXJ0dWFsIE5vZGUqIHRvTm9kZSgpOwogICAg
IHZpcnR1YWwgSFRNTElucHV0RWxlbWVudCogdG9JbnB1dEVsZW1lbnQoKTsKIAorICAgIHZpcnR1
YWwgY29uc3QgQXRvbWljU3RyaW5nJiBpbnRlcmZhY2VOYW1lKCkgY29uc3Q7CiAgICAgdmlydHVh
bCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3Q7
CiAKICAgICB2aXJ0dWFsIGJvb2wgYWRkRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcm
IGV2ZW50VHlwZSwgUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiwgYm9vbCB1c2VDYXB0dXJlKTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9tYWtlX2V2ZW50X2ZhY3RvcnkucGwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL21ha2VfZXZlbnRfZmFjdG9yeS5wbAkocmV2aXNpb24g
OTgxNTEpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vbWFrZV9ldmVudF9mYWN0b3J5LnBsCSh3b3Jr
aW5nIGNvcHkpCkBAIC00Nyw2ICs0Nyw3IEBAIHN1YiBwcmludEhlYWRlcnNGaWxlKCQpOwogbXkg
JGV2ZW50c0ZpbGUgPSAiIjsKIG15ICRvdXRwdXREaXIgPSAiLiI7CiBteSAlcGFyc2VkRXZlbnRz
ID0gKCk7CitteSAkbmFtZXNwYWNlOwogCiByZXF1aXJlIENvbmZpZzsKIApAQCAtNjEsOSArNjIs
OSBAQCBkaWUgIllvdSBtdXN0IHNwZWNpZnkgLS1ldmVudHMgPGZpbGU+IiB1CiAKIG15ICVldmVu
dHMgPSAle3JlYWRFdmVudHMoJGV2ZW50c0ZpbGUpfTsKIAotcHJpbnRGYWN0b3J5RmlsZSgiJG91
dHB1dERpci9FdmVudEZhY3RvcnkuY3BwIik7Ci1wcmludE1hY3JvRmlsZSgiJG91dHB1dERpci9F
dmVudEludGVyZmFjZXMuaCIpOwotcHJpbnRIZWFkZXJzRmlsZSgiJG91dHB1dERpci9FdmVudEhl
YWRlcnMuaCIpOworcHJpbnRGYWN0b3J5RmlsZSgiJG91dHB1dERpci8ke25hbWVzcGFjZX1GYWN0
b3J5LmNwcCIpIGlmICRuYW1lc3BhY2UgZXEgIkV2ZW50IjsKK3ByaW50TWFjcm9GaWxlKCIkb3V0
cHV0RGlyLyR7bmFtZXNwYWNlfUludGVyZmFjZXMuaCIpOworcHJpbnRIZWFkZXJzRmlsZSgiJG91
dHB1dERpci8ke25hbWVzcGFjZX1IZWFkZXJzLmgiKTsKIAogc3ViIGRlZmF1bHRFdmVudFByb3Bl
cnR5SGFzaAogewpAQCAtODksNyArOTAsOCBAQCBzdWIgcGFyYW1ldGVyc0hhbmRsZXIKIHsKICAg
ICBteSAoJHBhcmFtZXRlciwgJHZhbHVlKSA9IEBfOwogCi0gICAgZGllICJVbmtub3duIHBhcmFt
ZXRlciAkcGFyYW1ldGVyIGZvciBldmVudHNcbiIgdW5sZXNzICRwYXJhbWV0ZXIgZXEgIm5hbWVz
cGFjZSI7CisgICAgZGllICJVbmtub3duIHBhcmFtZXRlciAkcGFyYW1ldGVyXG4iIHVubGVzcyAk
cGFyYW1ldGVyIGVxICJuYW1lc3BhY2UiOworICAgICRuYW1lc3BhY2UgPSAkdmFsdWU7CiB9CiAK
IHN1YiByZWFkTmFtZXMoJCQkKQpAQCAtMTI0LDYgKzEyNiwxNiBAQCBzdWIgaW50ZXJmYWNlRm9y
RXZlbnQoJCkKICAgICByZXR1cm4gJGludGVyZmFjZU5hbWU7CiB9CiAKK3N1YiB0b01hY3JvU3R5
bGUoJCkKK3sKKyAgICBteSAoJGNhbWVsQ2FzZSkgPSBAXzsKKworICAgIHJldHVybiAiRVZFTlQi
IGlmICRjYW1lbENhc2UgZXEgIkV2ZW50IjsKKyAgICByZXR1cm4gIkVWRU5UX1RBUkdFVCIgaWYg
JGNhbWVsQ2FzZSBlcSAiRXZlbnRUYXJnZXQiOworCisgICAgZGllICJPaywgeW91IGdvdCBtZS4g
VGhpcyBzY3JpcHQgaXMgcmVhbGx5IGp1c3QgYSBnaWFudCBoYWNrLiI7Cit9CisKIHN1YiBwcmlu
dEZhY3RvcnlGaWxlKCQpCiB7CiAgICAgbXkgJHBhdGggPSBzaGlmdDsKQEAgLTEzNCwxMyArMTQ2
LDEzIEBAIHN1YiBwcmludEZhY3RvcnlGaWxlKCQpCiAgICAgcHJpbnRMaWNlbnNlSGVhZGVyKCRG
KTsKIAogICAgIHByaW50IEYgIiNpbmNsdWRlIFwiY29uZmlnLmhcIlxuIjsKLSAgICBwcmludCBG
ICIjaW5jbHVkZSBcIkV2ZW50RmFjdG9yeS5oXCJcbiI7CisgICAgcHJpbnQgRiAiI2luY2x1ZGUg
XCIke25hbWVzcGFjZX1GYWN0b3J5LmhcIlxuIjsKICAgICBwcmludCBGICJcbiI7Ci0gICAgcHJp
bnQgRiAiI2luY2x1ZGUgXCJFdmVudEhlYWRlcnMuaFwiXG4iOworICAgIHByaW50IEYgIiNpbmNs
dWRlIFwiJHtuYW1lc3BhY2V9SGVhZGVycy5oXCJcbiI7CiAgICAgcHJpbnQgRiAiXG4iOwogICAg
IHByaW50IEYgIm5hbWVzcGFjZSBXZWJDb3JlIHtcbiI7CiAgICAgcHJpbnQgRiAiXG4iOwotICAg
IHByaW50IEYgIlBhc3NSZWZQdHI8RXZlbnQ+IEV2ZW50RmFjdG9yeTo6Y3JlYXRlKGNvbnN0IFN0
cmluZyYgZXZlbnRUeXBlKVxuIjsKKyAgICBwcmludCBGICJQYXNzUmVmUHRyPCRuYW1lc3BhY2U+
ICR7bmFtZXNwYWNlfUZhY3Rvcnk6OmNyZWF0ZShjb25zdCBTdHJpbmcmIHR5cGUpXG4iOwogICAg
IHByaW50IEYgIntcbiI7CiAKICAgICBmb3IgbXkgJGV2ZW50TmFtZSAoc29ydCBrZXlzICVwYXJz
ZWRFdmVudHMpIHsKQEAgLTE0OCw3ICsxNjAsNyBAQCBzdWIgcHJpbnRGYWN0b3J5RmlsZSgkKQog
ICAgICAgICBteSAkaW50ZXJmYWNlTmFtZSA9IGludGVyZmFjZUZvckV2ZW50KCRldmVudE5hbWUp
OwogCiAgICAgICAgIHByaW50IEYgIiNpZiBFTkFCTEUoJGNvbmRpdGlvbmFsKVxuIiBpZiAkY29u
ZGl0aW9uYWw7Ci0gICAgICAgIHByaW50IEYgIiAgICBpZiAoZXZlbnRUeXBlID09IFwiJGV2ZW50
TmFtZVwiKVxuIjsKKyAgICAgICAgcHJpbnQgRiAiICAgIGlmICh0eXBlID09IFwiJGV2ZW50TmFt
ZVwiKVxuIjsKICAgICAgICAgcHJpbnQgRiAiICAgICAgICByZXR1cm4gJHtpbnRlcmZhY2VOYW1l
fTo6Y3JlYXRlKCk7XG4iOwogICAgICAgICBwcmludCBGICIjZW5kaWZcbiIgaWYgJGNvbmRpdGlv
bmFsOwogICAgIH0KQEAgLTE2OSw4ICsxODEsOCBAQCBzdWIgcHJpbnRNYWNyb0ZpbGUoJCkKIAog
ICAgIHByaW50TGljZW5zZUhlYWRlcigkRik7CiAKLSAgICBwcmludCBGICIjaWZuZGVmIEV2ZW50
SW50ZXJmYWNlc19oXG4iOwotICAgIHByaW50IEYgIiNkZWZpbmUgRXZlbnRJbnRlcmZhY2VzX2hc
biI7CisgICAgcHJpbnQgRiAiI2lmbmRlZiAke25hbWVzcGFjZX1JbnRlcmZhY2VzX2hcbiI7Cisg
ICAgcHJpbnQgRiAiI2RlZmluZSAke25hbWVzcGFjZX1JbnRlcmZhY2VzX2hcbiI7CiAgICAgcHJp
bnQgRiAiXG4iOwogCiAgICAgbXkgJXVuY29uZGl0aW9uYWxJbnRlcmZhY2VzID0gKCk7CkBAIC0x
OTAsMzQgKzIwMiwzNiBAQCBzdWIgcHJpbnRNYWNyb0ZpbGUoJCkKICAgICAgICAgfQogICAgIH0K
IAorICAgIG15ICRtYWNyb1N0eWxlZE5hbWVzcGFjZSA9IHRvTWFjcm9TdHlsZSgkbmFtZXNwYWNl
KTsKKwogICAgIGZvciBteSAkY29uZGl0aW9uYWwgKHNvcnQga2V5cyAlaW50ZXJmYWNlc0J5Q29u
ZGl0aW9uYWwpIHsKICAgICAgICAgcHJpbnQgRiAiI2lmIEVOQUJMRSgkY29uZGl0aW9uYWwpXG4i
OwotICAgICAgICBwcmludCBGICIjZGVmaW5lIERPTV9FVkVOVF9JTlRFUkZBQ0VTX0ZPUl9FQUNI
XyRjb25kaXRpb25hbChtYWNybykgXFxcbiI7CisgICAgICAgIHByaW50IEYgIiNkZWZpbmUgRE9N
XyR7bWFjcm9TdHlsZWROYW1lc3BhY2V9X0lOVEVSRkFDRVNfRk9SX0VBQ0hfJGNvbmRpdGlvbmFs
KG1hY3JvKSBcXFxuIjsKIAogICAgICAgICBmb3IgbXkgJGludGVyZmFjZSAoc29ydCBrZXlzICV7
ICRpbnRlcmZhY2VzQnlDb25kaXRpb25hbHskY29uZGl0aW9uYWx9IH0pIHsKICAgICAgICAgICAg
IG5leHQgaWYgZGVmaW5lZCgkdW5jb25kaXRpb25hbEludGVyZmFjZXN7JGludGVyZmFjZX0pOwog
ICAgICAgICAgICAgcHJpbnQgRiAiICAgIG1hY3JvKCRpbnRlcmZhY2UpIFxcXG4iOwogICAgICAg
ICB9CiAKLSAgICAgICAgcHJpbnQgRiAiLy8gRW5kIG9mIERPTV9FVkVOVF9JTlRFUkZBQ0VTX0ZP
Ul9FQUNIXyRjb25kaXRpb25hbFxuIjsKKyAgICAgICAgcHJpbnQgRiAiLy8gRW5kIG9mIERPTV8k
e21hY3JvU3R5bGVkTmFtZXNwYWNlfV9JTlRFUkZBQ0VTX0ZPUl9FQUNIXyRjb25kaXRpb25hbFxu
IjsKICAgICAgICAgcHJpbnQgRiAiI2Vsc2VcbiI7Ci0gICAgICAgIHByaW50IEYgIiNkZWZpbmUg
RE9NX0VWRU5UX0lOVEVSRkFDRVNfRk9SX0VBQ0hfJGNvbmRpdGlvbmFsKG1hY3JvKVxuIjsKKyAg
ICAgICAgcHJpbnQgRiAiI2RlZmluZSBET01fJHttYWNyb1N0eWxlZE5hbWVzcGFjZX1fSU5URVJG
QUNFU19GT1JfRUFDSF8kY29uZGl0aW9uYWwobWFjcm8pXG4iOwogICAgICAgICBwcmludCBGICIj
ZW5kaWZcbiI7CiAgICAgICAgIHByaW50IEYgIlxuIjsKICAgICB9CiAKLSAgICBwcmludCBGICIj
ZGVmaW5lIERPTV9FVkVOVF9JTlRFUkZBQ0VTX0ZPUl9FQUNIKG1hY3JvKSBcXFxuIjsKKyAgICBw
cmludCBGICIjZGVmaW5lIERPTV8ke21hY3JvU3R5bGVkTmFtZXNwYWNlfV9JTlRFUkZBQ0VTX0ZP
Ul9FQUNIKG1hY3JvKSBcXFxuIjsKICAgICBwcmludCBGICIgICAgXFxcbiI7CiAgICAgZm9yIG15
ICRpbnRlcmZhY2UgKHNvcnQga2V5cyAldW5jb25kaXRpb25hbEludGVyZmFjZXMpIHsKICAgICAg
ICAgICAgIHByaW50IEYgIiAgICBtYWNybygkaW50ZXJmYWNlKSBcXFxuIjsKICAgICB9CiAgICAg
cHJpbnQgRiAiICAgIFxcXG4iOwogICAgIGZvciBteSAkY29uZGl0aW9uYWwgKHNvcnQga2V5cyAl
aW50ZXJmYWNlc0J5Q29uZGl0aW9uYWwpIHsKLSAgICAgICAgcHJpbnQgRiAiICAgIERPTV9FVkVO
VF9JTlRFUkZBQ0VTX0ZPUl9FQUNIXyRjb25kaXRpb25hbChtYWNybykgXFxcbiI7CisgICAgICAg
IHByaW50IEYgIiAgICBET01fJHttYWNyb1N0eWxlZE5hbWVzcGFjZX1fSU5URVJGQUNFU19GT1Jf
RUFDSF8kY29uZGl0aW9uYWwobWFjcm8pIFxcXG4iOwogICAgIH0KIAogICAgIHByaW50IEYgIlxu
IjsKLSAgICBwcmludCBGICIjZW5kaWYgLy8gRXZlbnRJbnRlcmZhY2VzX2hcbiI7CisgICAgcHJp
bnQgRiAiI2VuZGlmIC8vICR7bmFtZXNwYWNlfUludGVyZmFjZXNfaFxuIjsKIAogICAgIGNsb3Nl
IEY7CiB9CkBAIC0yMzEsOCArMjQ1LDggQEAgc3ViIHByaW50SGVhZGVyc0ZpbGUoJCkKIAogICAg
IHByaW50TGljZW5zZUhlYWRlcigkRik7CiAKLSAgICBwcmludCBGICIjaWZuZGVmIEV2ZW50SGVh
ZGVyc19oXG4iOwotICAgIHByaW50IEYgIiNkZWZpbmUgRXZlbnRIZWFkZXJzX2hcbiI7CisgICAg
cHJpbnQgRiAiI2lmbmRlZiAke25hbWVzcGFjZX1IZWFkZXJzX2hcbiI7CisgICAgcHJpbnQgRiAi
I2RlZmluZSAke25hbWVzcGFjZX1IZWFkZXJzX2hcbiI7CiAgICAgcHJpbnQgRiAiXG4iOwogCiAg
ICAgbXkgJWluY2x1ZGVkSW50ZXJmYWNlcyA9ICgpOwpAQCAtMjU1LDcgKzI2OSw3IEBAIHN1YiBw
cmludEhlYWRlcnNGaWxlKCQpCiAgICAgfQogCiAgICAgcHJpbnQgRiAiXG4iOwotICAgIHByaW50
IEYgIiNlbmRpZiAvLyBFdmVudEhlYWRlcnNfaFxuIjsKKyAgICBwcmludCBGICIjZW5kaWYgLy8g
JHtuYW1lc3BhY2V9SGVhZGVyc19oXG4iOwogCiAgICAgY2xvc2UgRjsKIH0KQEAgLTI2Nyw3ICsy
ODEsNyBAQCBzdWIgcHJpbnRMaWNlbnNlSGVhZGVyKCQpCiAgICAgcHJpbnQgRiAiLyoKICAqIFRI
SVMgRklMRSBXQVMgQVVUT01BVElDQUxMWSBHRU5FUkFURUQsIERPIE5PVCBFRElULgogICoKLSAq
IFRoaXMgZmlsZSB3YXMgZ2VuZXJhdGVkIGJ5IHRoZSBkb20vbWFrZV9ldmVudHMucGwgc2NyaXB0
LgorICogVGhpcyBmaWxlIHdhcyBnZW5lcmF0ZWQgYnkgdGhlIGRvbS9tYWtlX2V2ZW50X2ZhY3Rv
cnkucGwgc2NyaXB0LgogICoKICAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiAgQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVS
ZWFkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRl
ci5jcHAJKHJldmlzaW9uIDk4MTUxKQorKysgU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVh
ZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjIsNiArNjIsMTEgQEAgRmlsZVJlYWRlcjo6fkZp
bGVSZWFkZXIoKQogICAgIHRlcm1pbmF0ZSgpOwogfQogCitjb25zdCBBdG9taWNTdHJpbmcmIEZp
bGVSZWFkZXI6OmludGVyZmFjZU5hbWUoKSBjb25zdAoreworICAgIHJldHVybiBldmVudE5hbWVz
KCkuaW50ZXJmYWNlRm9yRmlsZVJlYWRlcjsKK30KKwogYm9vbCBGaWxlUmVhZGVyOjpoYXNQZW5k
aW5nQWN0aXZpdHkoKSBjb25zdAogewogICAgIHJldHVybiBtX3N0YXRlID09IExPQURJTkcgfHwg
QWN0aXZlRE9NT2JqZWN0OjpoYXNQZW5kaW5nQWN0aXZpdHkoKTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2ZpbGVhcGkvRmlsZVJlYWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Zp
bGVhcGkvRmlsZVJlYWRlci5oCShyZXZpc2lvbiA5ODE1MSkKKysrIFNvdXJjZS9XZWJDb3JlL2Zp
bGVhcGkvRmlsZVJlYWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC04NSw3ICs4NSw3IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIGJvb2wgaGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3Q7CiAKICAgICAv
LyBFdmVudFRhcmdldAotICAgIHZpcnR1YWwgRmlsZVJlYWRlciogdG9GaWxlUmVhZGVyKCkgeyBy
ZXR1cm4gdGhpczsgfQorICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBpbnRlcmZhY2VO
YW1lKCkgY29uc3Q7CiAgICAgdmlydHVhbCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRF
eGVjdXRpb25Db250ZXh0KCkgY29uc3QgeyByZXR1cm4gQWN0aXZlRE9NT2JqZWN0OjpzY3JpcHRF
eGVjdXRpb25Db250ZXh0KCk7IH0KIAogICAgIC8vIEZpbGVSZWFkZXJMb2FkZXJDbGllbnQKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVdyaXRlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlV3JpdGVyLmNwcAkocmV2aXNpb24gOTgxNTEpCisr
KyBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVXcml0ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC02NSw2ICs2NSwxMSBAQCBGaWxlV3JpdGVyOjp+RmlsZVdyaXRlcigpCiAgICAgICAgIHN0b3Ao
KTsKIH0KIAorY29uc3QgQXRvbWljU3RyaW5nJiBGaWxlV3JpdGVyOjppbnRlcmZhY2VOYW1lKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gZXZlbnROYW1lcygpLmludGVyZmFjZUZvckZpbGVXcml0ZXI7
Cit9CisKIGJvb2wgRmlsZVdyaXRlcjo6aGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3QKIHsKICAg
ICByZXR1cm4gbV9yZWFkeVN0YXRlID09IFdSSVRJTkcgfHwgQWN0aXZlRE9NT2JqZWN0OjpoYXNQ
ZW5kaW5nQWN0aXZpdHkoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVdyaXRl
ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVdyaXRlci5oCShy
ZXZpc2lvbiA5ODE1MSkKKysrIFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVdyaXRlci5oCSh3
b3JraW5nIGNvcHkpCkBAIC03Niw3ICs3Niw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQg
c3RvcCgpOwogCiAgICAgLy8gRXZlbnRUYXJnZXQKLSAgICB2aXJ0dWFsIEZpbGVXcml0ZXIqIHRv
RmlsZVdyaXRlcigpIHsgcmV0dXJuIHRoaXM7IH0KKyAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0
cmluZyYgaW50ZXJmYWNlTmFtZSgpIGNvbnN0OwogICAgIHZpcnR1YWwgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIEFjdGl2ZURP
TU9iamVjdDo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOyB9CiAKICAgICB1c2luZyBSZWZDb3Vu
dGVkPEZpbGVXcml0ZXJCYXNlPjo6cmVmOwpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL2Fw
cGNhY2hlL0RPTUFwcGxpY2F0aW9uQ2FjaGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2xvYWRlci9hcHBjYWNoZS9ET01BcHBsaWNhdGlvbkNhY2hlLmNwcAkocmV2aXNpb24gOTgx
NTEpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvRE9NQXBwbGljYXRpb25DYWNo
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg0LDYgKzg0LDExIEBAIHZvaWQgRE9NQXBwbGljYXRp
b25DYWNoZTo6c3dhcENhY2hlKEV4Y2UKICAgICAgICAgZWMgPSBJTlZBTElEX1NUQVRFX0VSUjsK
IH0KIAorY29uc3QgQXRvbWljU3RyaW5nJiBET01BcHBsaWNhdGlvbkNhY2hlOjppbnRlcmZhY2VO
YW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZXZlbnROYW1lcygpLmludGVyZmFjZUZvckRPTUFw
cGxpY2F0aW9uQ2FjaGU7Cit9CisKIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIERPTUFwcGxpY2F0
aW9uQ2FjaGU6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdAogewogICAgIGlmIChtX2Zy
YW1lKQpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0RPTUFwcGxpY2F0aW9u
Q2FjaGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvRE9N
QXBwbGljYXRpb25DYWNoZS5oCShyZXZpc2lvbiA5ODE1MSkKKysrIFNvdXJjZS9XZWJDb3JlL2xv
YWRlci9hcHBjYWNoZS9ET01BcHBsaWNhdGlvbkNhY2hlLmgJKHdvcmtpbmcgY29weSkKQEAgLTY5
LDggKzY5LDggQEAgcHVibGljOgogICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIo
Y2FjaGVkKTsKICAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKG9ic29sZXRlKTsK
IAorICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBpbnRlcmZhY2VOYW1lKCkgY29uc3Q7
CiAgICAgdmlydHVhbCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250
ZXh0KCkgY29uc3Q7Ci0gICAgRE9NQXBwbGljYXRpb25DYWNoZSogdG9ET01BcHBsaWNhdGlvbkNh
Y2hlKCkgeyByZXR1cm4gdGhpczsgfQogCiAgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYg
dG9FdmVudFR5cGUoQXBwbGljYXRpb25DYWNoZUhvc3Q6OkV2ZW50SUQgaWQpOwogCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uY3BwCShyZXZpc2lv
biA5ODE1MSkKKysrIFNvdXJjZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTA0LDYgKzEwNCwxMSBAQCBQYXNzUmVmUHRyPE5vdGlmaWNh
dGlvbj4gTm90aWZpY2F0aW9uOjpjCiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBOb3RpZmljYXRp
b24oY29udGVudHMsIGNvbnRleHQsIGVjLCBwcm92aWRlcikpOwogfQogCitjb25zdCBBdG9taWNT
dHJpbmcmIE5vdGlmaWNhdGlvbjo6aW50ZXJmYWNlTmFtZSgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IGV2ZW50TmFtZXMoKS5pbnRlcmZhY2VGb3JOb3RpZmljYXRpb247Cit9CisKIHZvaWQgTm90aWZp
Y2F0aW9uOjpzaG93KCkgCiB7CiAjaWYgUExBVEZPUk0oUVQpCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmgJKHJldmlzaW9uIDk4MTUxKQorKysgU291
cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uaAkod29ya2luZyBjb3B5KQpA
QCAtODMsMTMgKzgzLDEzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgREVGSU5FX0FU
VFJJQlVURV9FVkVOVF9MSVNURU5FUihlcnJvcik7CiAgICAgICAgIERFRklORV9BVFRSSUJVVEVf
RVZFTlRfTElTVEVORVIoY2xvc2UpOwogICAgICAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJ
U1RFTkVSKGNsaWNrKTsKLSAgICAKKwogICAgICAgICB1c2luZyBSZWZDb3VudGVkPE5vdGlmaWNh
dGlvbj46OnJlZjsKICAgICAgICAgdXNpbmcgUmVmQ291bnRlZDxOb3RpZmljYXRpb24+OjpkZXJl
ZjsKLSAgICAKKwogICAgICAgICAvLyBFdmVudFRhcmdldCBpbnRlcmZhY2UKKyAgICAgICAgdmly
dHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIGludGVyZmFjZU5hbWUoKSBjb25zdDsKICAgICAgICAg
dmlydHVhbCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkg
Y29uc3QgeyByZXR1cm4gQWN0aXZlRE9NT2JqZWN0OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7
IH0KLSAgICAgICAgdmlydHVhbCBOb3RpZmljYXRpb24qIHRvTm90aWZpY2F0aW9uKCkgeyByZXR1
cm4gdGhpczsgfQogCiAgICAgICAgIC8vIEFjdGl2ZURPTU9iamVjdCBpbnRlcmZhY2UKICAgICAg
ICAgdmlydHVhbCB2b2lkIGNvbnRleHREZXN0cm95ZWQoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3AycC9QZWVyQ29ubmVjdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcDJw
L1BlZXJDb25uZWN0aW9uLmNwcAkocmV2aXNpb24gOTgxNTEpCisrKyBTb3VyY2UvV2ViQ29yZS9w
MnAvUGVlckNvbm5lY3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMzYsOSArMjM2LDkgQEAg
dm9pZCBQZWVyQ29ubmVjdGlvbjo6cmVtb3RlU3RyZWFtUmVtb3ZlZAogICAgIGRpc3BhdGNoRXZl
bnQoTWVkaWFTdHJlYW1FdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5yZW1vdmVzdHJlYW1FdmVu
dCwgZmFsc2UsIGZhbHNlLCBzdHJlYW0ucmVsZWFzZSgpKSk7CiB9CiAKLVBlZXJDb25uZWN0aW9u
KiBQZWVyQ29ubmVjdGlvbjo6dG9QZWVyQ29ubmVjdGlvbigpCitjb25zdCBBdG9taWNTdHJpbmcm
IFBlZXJDb25uZWN0aW9uOjppbnRlcmZhY2VOYW1lKCkgY29uc3QKIHsKLSAgICByZXR1cm4gdGhp
czsKKyAgICByZXR1cm4gZXZlbnROYW1lcygpLmludGVyZmFjZUZvclBlZXJDb25uZWN0aW9uOwog
fQogCiBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBQZWVyQ29ubmVjdGlvbjo6c2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpIGNvbnN0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wMnAvUGVlckNvbm5lY3Rp
b24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wMnAvUGVlckNvbm5lY3Rpb24uaAko
cmV2aXNpb24gOTgxNTEpCisrKyBTb3VyY2UvV2ViQ29yZS9wMnAvUGVlckNvbm5lY3Rpb24uaAko
d29ya2luZyBjb3B5KQpAQCAtNzksOSArNzksNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lk
IHJlbW90ZVN0cmVhbVJlbW92ZWQoTWVkaWFTdHJlYW1EZXNjcmlwdG9yKik7CiAKICAgICAvLyBF
dmVudFRhcmdldAotICAgIHZpcnR1YWwgUGVlckNvbm5lY3Rpb24qIHRvUGVlckNvbm5lY3Rpb24o
KTsKLQotICAgIC8vIEV2ZW50VGFyZ2V0IGltcGxlbWVudGF0aW9uLgorICAgIHZpcnR1YWwgY29u
c3QgQXRvbWljU3RyaW5nJiBpbnRlcmZhY2VOYW1lKCkgY29uc3Q7CiAgICAgdmlydHVhbCBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3Q7CiAKICAg
ICAvLyBBY3RpdmVET01PYmplY3QKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAJKHJl
dmlzaW9uIDk4MTUxKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC00NDYsMTEgKzQ0NiwyMSBAQCBET01XaW5kb3c6On5ET01XaW5kb3coKQog
ICAgIHJlbW92ZUFsbEJlZm9yZVVubG9hZEV2ZW50TGlzdGVuZXJzKHRoaXMpOwogfQogCitjb25z
dCBBdG9taWNTdHJpbmcmIERPTVdpbmRvdzo6aW50ZXJmYWNlTmFtZSgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIGV2ZW50TmFtZXMoKS5pbnRlcmZhY2VGb3JET01XaW5kb3c7Cit9CisKIFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIERPTVdpbmRvdzo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0
CiB7CiAgICAgcmV0dXJuIGRvY3VtZW50KCk7CiB9CiAKK0RPTVdpbmRvdyogRE9NV2luZG93Ojp0
b0RPTVdpbmRvdygpCit7CisgICAgcmV0dXJuIHRoaXM7Cit9CisKIFBhc3NSZWZQdHI8TWVkaWFR
dWVyeUxpc3Q+IERPTVdpbmRvdzo6bWF0Y2hNZWRpYShjb25zdCBTdHJpbmcmIG1lZGlhKQogewog
ICAgIHJldHVybiBkb2N1bWVudCgpID8gZG9jdW1lbnQoKS0+bWVkaWFRdWVyeU1hdGNoZXIoKS0+
bWF0Y2hNZWRpYShtZWRpYSkgOiAwOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5k
b3cuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5oCShyZXZp
c2lvbiA5ODE1MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTg1LDkgKzg1LDExIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgc3Rh
dGljIFBhc3NSZWZQdHI8RE9NV2luZG93PiBjcmVhdGUoRnJhbWUqIGZyYW1lKSB7IHJldHVybiBh
ZG9wdFJlZihuZXcgRE9NV2luZG93KGZyYW1lKSk7IH0KICAgICAgICAgdmlydHVhbCB+RE9NV2lu
ZG93KCk7CiAKLSAgICAgICAgdmlydHVhbCBET01XaW5kb3cqIHRvRE9NV2luZG93KCkgeyByZXR1
cm4gdGhpczsgfQorICAgICAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgaW50ZXJmYWNl
TmFtZSgpIGNvbnN0OwogICAgICAgICB2aXJ0dWFsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdDsKIAorICAgICAgICB2aXJ0dWFsIERPTVdpbmRv
dyogdG9ET01XaW5kb3coKTsKKwogICAgICAgICBGcmFtZSogZnJhbWUoKSBjb25zdCB7IHJldHVy
biBtX2ZyYW1lOyB9CiAgICAgICAgIHZvaWQgZGlzY29ubmVjdEZyYW1lKCk7CiAKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRTb3VyY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvRXZlbnRTb3VyY2UuY3BwCShyZXZpc2lvbiA5ODE1MSkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvRXZlbnRTb3VyY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODYsNiArMTg2
LDExIEBAIHZvaWQgRXZlbnRTb3VyY2U6OmNsb3NlKCkKICAgICBtX3N0YXRlID0gQ0xPU0VEOwog
fQogCitjb25zdCBBdG9taWNTdHJpbmcmIEV2ZW50U291cmNlOjppbnRlcmZhY2VOYW1lKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gZXZlbnROYW1lcygpLmludGVyZmFjZUZvckV2ZW50U291cmNlOwor
fQorCiBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBFdmVudFNvdXJjZTo6c2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIEFjdGl2ZURPTU9iamVjdDo6c2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudFNvdXJjZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRTb3VyY2UuaAkocmV2aXNp
b24gOTgxNTEpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50U291cmNlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTc1LDcgKzc1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB1c2lu
ZyBSZWZDb3VudGVkPEV2ZW50U291cmNlPjo6cmVmOwogICAgICAgICB1c2luZyBSZWZDb3VudGVk
PEV2ZW50U291cmNlPjo6ZGVyZWY7CiAKLSAgICAgICAgdmlydHVhbCBFdmVudFNvdXJjZSogdG9F
dmVudFNvdXJjZSgpIHsgcmV0dXJuIHRoaXM7IH0KKyAgICAgICAgdmlydHVhbCBjb25zdCBBdG9t
aWNTdHJpbmcmIGludGVyZmFjZU5hbWUoKSBjb25zdDsKICAgICAgICAgdmlydHVhbCBTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3Q7CiAKICAgICAg
ICAgdmlydHVhbCB2b2lkIHN0b3AoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURC
RGF0YWJhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0
YWJhc2UuY3BwCShyZXZpc2lvbiA5ODE1MSkKKysrIFNvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURC
RGF0YWJhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTgsNiArMjE4LDExIEBAIHZvaWQgSURC
RGF0YWJhc2U6OnN0b3AoKQogICAgIG1fc3RvcHBlZCA9IHRydWU7CiB9CiAKK2NvbnN0IEF0b21p
Y1N0cmluZyYgSURCRGF0YWJhc2U6OmludGVyZmFjZU5hbWUoKSBjb25zdAoreworICAgIHJldHVy
biBldmVudE5hbWVzKCkuaW50ZXJmYWNlRm9ySURCRGF0YWJhc2U7Cit9CisKIFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIElEQkRhdGFiYXNlOjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QK
IHsKICAgICByZXR1cm4gQWN0aXZlRE9NT2JqZWN0OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFiYXNlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJEYXRhYmFzZS5oCShyZXZpc2lvbiA5ODE1MSkK
KysrIFNvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJhc2UuaAkod29ya2luZyBjb3B5KQpA
QCAtODIsMTAgKzgyLDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzdG9wKCk7CiAKICAg
ICAvLyBFdmVudFRhcmdldAotICAgIHZpcnR1YWwgSURCRGF0YWJhc2UqIHRvSURCRGF0YWJhc2Uo
KSB7IHJldHVybiB0aGlzOyB9CisgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIGludGVy
ZmFjZU5hbWUoKSBjb25zdDsKICAgICB2aXJ0dWFsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdDsKIAotCiAgICAgdm9pZCBvcGVuKCk7CiAgICAg
dm9pZCBlbnF1ZXVlRXZlbnQoUGFzc1JlZlB0cjxFdmVudD4pOwogICAgIGJvb2wgZGlzcGF0Y2hF
dmVudChQYXNzUmVmUHRyPEV2ZW50PiBldmVudCwgRXhjZXB0aW9uQ29kZSYgZWMpIHsgcmV0dXJu
IEV2ZW50VGFyZ2V0OjpkaXNwYXRjaEV2ZW50KGV2ZW50LCBlYyk7IH0KSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3N0b3JhZ2UvSURCUmVxdWVzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvc3RvcmFnZS9JREJSZXF1ZXN0LmNwcAkocmV2aXNpb24gOTgxNTEpCisrKyBTb3VyY2UvV2Vi
Q29yZS9zdG9yYWdlL0lEQlJlcXVlc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNjEsNiArMjYx
LDExIEBAIHZvaWQgSURCUmVxdWVzdDo6b25CbG9ja2VkKCkKICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKIH0KIAorY29uc3QgQXRvbWljU3RyaW5nJiBJREJSZXF1ZXN0OjppbnRlcmZhY2VOYW1l
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gZXZlbnROYW1lcygpLmludGVyZmFjZUZvcklEQlJlcXVl
c3Q7Cit9CisKIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIElEQlJlcXVlc3Q6OnNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKSBjb25zdAogewogICAgIHJldHVybiBBY3RpdmVET01PYmplY3Q6OnNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCUmVx
dWVzdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCUmVxdWVzdC5o
CShyZXZpc2lvbiA5ODE1MSkKKysrIFNvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCUmVxdWVzdC5o
CSh3b3JraW5nIGNvcHkpCkBAIC04Nyw3ICs4Nyw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJv
b2wgaGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3Q7CiAKICAgICAvLyBFdmVudFRhcmdldAotICAg
IHZpcnR1YWwgSURCUmVxdWVzdCogdG9JREJSZXF1ZXN0KCkgeyByZXR1cm4gdGhpczsgfQorICAg
IHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBpbnRlcmZhY2VOYW1lKCkgY29uc3Q7CiAgICAg
dmlydHVhbCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkg
Y29uc3Q7CiAgICAgdmlydHVhbCBib29sIGRpc3BhdGNoRXZlbnQoUGFzc1JlZlB0cjxFdmVudD4p
OwogICAgIGJvb2wgZGlzcGF0Y2hFdmVudChQYXNzUmVmUHRyPEV2ZW50PiBldmVudCwgRXhjZXB0
aW9uQ29kZSYgZWMpIHsgcmV0dXJuIEV2ZW50VGFyZ2V0OjpkaXNwYXRjaEV2ZW50KGV2ZW50LCBl
Yyk7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCVHJhbnNhY3Rpb24uY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCVHJhbnNhY3Rpb24uY3BwCShy
ZXZpc2lvbiA5ODE1MSkKKysrIFNvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCVHJhbnNhY3Rpb24u
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzgsNiArMTM4LDExIEBAIGJvb2wgSURCVHJhbnNhY3Rp
b246Omhhc1BlbmRpbmdBY3Rpdml0eSgKICAgICByZXR1cm4gIW1fZmluaXNoZWQgfHwgQWN0aXZl
RE9NT2JqZWN0OjpoYXNQZW5kaW5nQWN0aXZpdHkoKTsKIH0KIAorY29uc3QgQXRvbWljU3RyaW5n
JiBJREJUcmFuc2FjdGlvbjo6aW50ZXJmYWNlTmFtZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGV2
ZW50TmFtZXMoKS5pbnRlcmZhY2VGb3JJREJUcmFuc2FjdGlvbjsKK30KKwogU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogSURCVHJhbnNhY3Rpb246OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25z
dAogewogICAgIHJldHVybiBBY3RpdmVET01PYmplY3Q6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCVHJhbnNhY3Rpb24uaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQlRyYW5zYWN0aW9uLmgJKHJldmlzaW9u
IDk4MTUxKQorKysgU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJUcmFuc2FjdGlvbi5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC03NCw3ICs3NCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgb25D
b21wbGV0ZSgpOwogCiAgICAgLy8gRXZlbnRUYXJnZXQKLSAgICB2aXJ0dWFsIElEQlRyYW5zYWN0
aW9uKiB0b0lEQlRyYW5zYWN0aW9uKCkgeyByZXR1cm4gdGhpczsgfQorICAgIHZpcnR1YWwgY29u
c3QgQXRvbWljU3RyaW5nJiBpbnRlcmZhY2VOYW1lKCkgY29uc3Q7CiAgICAgdmlydHVhbCBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3Q7CiAgICAg
dmlydHVhbCBib29sIGRpc3BhdGNoRXZlbnQoUGFzc1JlZlB0cjxFdmVudD4pOwogICAgIGJvb2wg
ZGlzcGF0Y2hFdmVudChQYXNzUmVmUHRyPEV2ZW50PiBldmVudCwgRXhjZXB0aW9uQ29kZSYgZWMp
IHsgcmV0dXJuIEV2ZW50VGFyZ2V0OjpkaXNwYXRjaEV2ZW50KGV2ZW50LCBlYyk7IH0KSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCVmVyc2lvbkNoYW5nZVJlcXVlc3QuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCVmVyc2lvbkNoYW5nZVJlcXVlc3Qu
Y3BwCShyZXZpc2lvbiA5ODE1MSkKKysrIFNvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCVmVyc2lv
bkNoYW5nZVJlcXVlc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OCw2ICs0OCwxMSBAQCBJREJW
ZXJzaW9uQ2hhbmdlUmVxdWVzdDo6fklEQlZlcnNpb25DaGFuCiB7CiB9CiAKK2NvbnN0IEF0b21p
Y1N0cmluZyYgSURCVmVyc2lvbkNoYW5nZVJlcXVlc3Q6OmludGVyZmFjZU5hbWUoKSBjb25zdAor
eworICAgIHJldHVybiBldmVudE5hbWVzKCkuaW50ZXJmYWNlRm9ySURCVmVyc2lvbkNoYW5nZVJl
cXVlc3Q7Cit9CisKIHZvaWQgSURCVmVyc2lvbkNoYW5nZVJlcXVlc3Q6Om9uQmxvY2tlZCgpCiB7
CiAgICAgQVNTRVJUKCFtX2Vycm9yQ29kZSAmJiBtX2Vycm9yTWVzc2FnZS5pc051bGwoKSAmJiAh
bV9yZXN1bHQpOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJWZXJzaW9uQ2hhbmdl
UmVxdWVzdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCVmVyc2lv
bkNoYW5nZVJlcXVlc3QuaAkocmV2aXNpb24gOTgxNTEpCisrKyBTb3VyY2UvV2ViQ29yZS9zdG9y
YWdlL0lEQlZlcnNpb25DaGFuZ2VSZXF1ZXN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDYgKzM5
LDkgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIG9uQmxvY2tlZCgpOwogCisgICAgLy8g
RXZlbnRUYXJnZXQKKyAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgaW50ZXJmYWNlTmFt
ZSgpIGNvbnN0OworCiAgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUihibG9ja2Vk
KTsKIAogcHJpdmF0ZToKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50SW5zdGFu
Y2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50SW5zdGFu
Y2UuY3BwCShyZXZpc2lvbiA5ODE1MSkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50
SW5zdGFuY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjEsNiArMTIxLDExIEBAIHZvaWQgU1ZH
RWxlbWVudEluc3RhbmNlOjppbnZhbGlkYXRlQWxsSW4KICAgICBlbGVtZW50LT5kb2N1bWVudCgp
LT51cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVldHMoKTsKIH0KIAorY29uc3QgQXRv
bWljU3RyaW5nJiBTVkdFbGVtZW50SW5zdGFuY2U6OmludGVyZmFjZU5hbWUoKSBjb25zdAorewor
ICAgIHJldHVybiBldmVudE5hbWVzKCkuaW50ZXJmYWNlRm9yU1ZHRWxlbWVudEluc3RhbmNlOwor
fQorCiBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBTVkdFbGVtZW50SW5zdGFuY2U6OnNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKSBjb25zdAogewogICAgIHJldHVybiBtX2VsZW1lbnQtPmRvY3VtZW50
KCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudEluc3RhbmNlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnRJbnN0YW5jZS5oCShyZXZpc2lv
biA5ODE1MSkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50SW5zdGFuY2UuaAkod29y
a2luZyBjb3B5KQpAQCAtNDcsNiArNDcsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIH5TVkdF
bGVtZW50SW5zdGFuY2UoKTsKIAorICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBpbnRl
cmZhY2VOYW1lKCkgY29uc3Q7CiAgICAgdmlydHVhbCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3Q7CiAKICAgICB2aXJ0dWFsIGJvb2wgYWRkRXZl
bnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUGFzc1JlZlB0cjxFdmVu
dExpc3RlbmVyPiwgYm9vbCB1c2VDYXB0dXJlKTsKQEAgLTEzOSw3ICsxNDAsNiBAQCBwcml2YXRl
OgogICAgIFNWR0VsZW1lbnRJbnN0YW5jZShTVkdVc2VFbGVtZW50KiwgU1ZHVXNlRWxlbWVudCos
IFBhc3NSZWZQdHI8U1ZHRWxlbWVudD4gb3JpZ2luYWxFbGVtZW50KTsKIAogICAgIHZpcnR1YWwg
Tm9kZSogdG9Ob2RlKCkgeyByZXR1cm4gc2hhZG93VHJlZUVsZW1lbnQoKTsgfQotICAgIHZpcnR1
YWwgU1ZHRWxlbWVudEluc3RhbmNlKiB0b1NWR0VsZW1lbnRJbnN0YW5jZSgpIHsgcmV0dXJuIHRo
aXM7IH0KIAogICAgIHZvaWQgYXBwZW5kQ2hpbGQoUGFzc1JlZlB0cjxTVkdFbGVtZW50SW5zdGFu
Y2U+IGNoaWxkKTsKICAgICB2b2lkIHNldFNoYWRvd1RyZWVFbGVtZW50KFNWR0VsZW1lbnQqKTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcAkocmV2aXNpb24g
OTgxNTEpCisrKyBTb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC03MzEsMTQgKzczMSwxNCBAQCB2b2lkIEF1ZGlvQ29udGV4dDo6aGFuZGxl
RGlydHlBdWRpb05vZGVPCiAgICAgbV9kaXJ0eUF1ZGlvTm9kZU91dHB1dHMuY2xlYXIoKTsKIH0K
IAotU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogQXVkaW9Db250ZXh0OjpzY3JpcHRFeGVjdXRpb25D
b250ZXh0KCkgY29uc3QKK2NvbnN0IEF0b21pY1N0cmluZyYgQXVkaW9Db250ZXh0OjppbnRlcmZh
Y2VOYW1lKCkgY29uc3QKIHsKLSAgICByZXR1cm4gZG9jdW1lbnQoKTsKKyAgICByZXR1cm4gZXZl
bnROYW1lcygpLmludGVyZmFjZUZvckF1ZGlvQ29udGV4dDsKIH0KIAotQXVkaW9Db250ZXh0KiBB
dWRpb0NvbnRleHQ6OnRvQXVkaW9Db250ZXh0KCkKK1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIEF1
ZGlvQ29udGV4dDo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJu
IHRoaXM7CisgICAgcmV0dXJuIGRvY3VtZW50KCk7CiB9CiAKIHZvaWQgQXVkaW9Db250ZXh0Ojpz
dGFydFJlbmRlcmluZygpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9BdWRpb0NvbnRl
eHQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9BdWRpb0NvbnRleHQu
aAkocmV2aXNpb24gOTgxNTEpCisrKyBTb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9BdWRpb0NvbnRl
eHQuaAkod29ya2luZyBjb3B5KQpAQCAtMjA4LDggKzIwOCw4IEBAIHB1YmxpYzoKICAgICB2b2lk
IG1hcmtBdWRpb05vZGVPdXRwdXREaXJ0eShBdWRpb05vZGVPdXRwdXQqKTsKIAogICAgIC8vIEV2
ZW50VGFyZ2V0CisgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIGludGVyZmFjZU5hbWUo
KSBjb25zdDsKICAgICB2aXJ0dWFsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKSBjb25zdDsKLSAgICB2aXJ0dWFsIEF1ZGlvQ29udGV4dCogdG9BdWRpb0Nv
bnRleHQoKTsKICAgICB2aXJ0dWFsIEV2ZW50VGFyZ2V0RGF0YSogZXZlbnRUYXJnZXREYXRhKCkg
eyByZXR1cm4gJm1fZXZlbnRUYXJnZXREYXRhOyB9CiAgICAgdmlydHVhbCBFdmVudFRhcmdldERh
dGEqIGVuc3VyZUV2ZW50VGFyZ2V0RGF0YSgpIHsgcmV0dXJuICZtX2V2ZW50VGFyZ2V0RGF0YTsg
fQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9KYXZhU2NyaXB0QXVkaW9Ob2RlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9KYXZhU2NyaXB0QXVkaW9O
b2RlLmNwcAkocmV2aXNpb24gOTgxNTEpCisrKyBTb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9KYXZh
U2NyaXB0QXVkaW9Ob2RlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE5LDExICsxMTksNiBAQCB2
b2lkIEphdmFTY3JpcHRBdWRpb05vZGU6OnVuaW5pdGlhbGl6ZSgpCiAgICAgQXVkaW9Ob2RlOjp1
bmluaXRpYWxpemUoKTsKIH0KIAotSmF2YVNjcmlwdEF1ZGlvTm9kZSogSmF2YVNjcmlwdEF1ZGlv
Tm9kZTo6dG9KYXZhU2NyaXB0QXVkaW9Ob2RlKCkKLXsKLSAgICByZXR1cm4gdGhpczsKLX0KLQog
dm9pZCBKYXZhU2NyaXB0QXVkaW9Ob2RlOjpwcm9jZXNzKHNpemVfdCBmcmFtZXNUb1Byb2Nlc3Mp
CiB7CiAgICAgLy8gRGlzY3Vzc2lvbiBhYm91dCBpbnB1dHMgYW5kIG91dHB1dHM6CkBAIC0yNjIs
NiArMjU3LDExIEBAIHZvaWQgSmF2YVNjcmlwdEF1ZGlvTm9kZTo6cmVzZXQoKQogICAgIH0KIH0K
IAorY29uc3QgQXRvbWljU3RyaW5nJiBKYXZhU2NyaXB0QXVkaW9Ob2RlOjppbnRlcmZhY2VOYW1l
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gZXZlbnROYW1lcygpLmludGVyZmFjZUZvckphdmFTY3Jp
cHRBdWRpb05vZGU7Cit9CisKIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIEphdmFTY3JpcHRBdWRp
b05vZGU6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdAogewogICAgIHJldHVybiBjb25z
dF9jYXN0PEphdmFTY3JpcHRBdWRpb05vZGUqPih0aGlzKS0+Y29udGV4dCgpLT5kb2N1bWVudCgp
OwpJbmRleDogU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vSmF2YVNjcmlwdEF1ZGlvTm9kZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0phdmFTY3JpcHRBdWRpb05vZGUu
aAkocmV2aXNpb24gOTgxNTEpCisrKyBTb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9KYXZhU2NyaXB0
QXVkaW9Ob2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTYzLDggKzYzLDggQEAgcHVibGljOgogICAg
IHZpcnR1YWwgdm9pZCB1bmluaXRpYWxpemUoKTsKIAogICAgIC8vIEV2ZW50VGFyZ2V0CisgICAg
dmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIGludGVyZmFjZU5hbWUoKSBjb25zdDsKICAgICB2
aXJ0dWFsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBj
b25zdDsKLSAgICB2aXJ0dWFsIEphdmFTY3JpcHRBdWRpb05vZGUqIHRvSmF2YVNjcmlwdEF1ZGlv
Tm9kZSgpOwogICAgIHZpcnR1YWwgRXZlbnRUYXJnZXREYXRhKiBldmVudFRhcmdldERhdGEoKSB7
IHJldHVybiAmbV9ldmVudFRhcmdldERhdGE7IH0KICAgICB2aXJ0dWFsIEV2ZW50VGFyZ2V0RGF0
YSogZW5zdXJlRXZlbnRUYXJnZXREYXRhKCkgIHsgcmV0dXJuICZtX2V2ZW50VGFyZ2V0RGF0YTsg
fQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwCShyZXZpc2lv
biA5ODE1MSkKKysrIFNvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNDA3LDYgKzQwNywxMSBAQCB2b2lkIFdlYlNvY2tldDo6c2V0QmluYXJ5
VHlwZShjb25zdCBTdHJpCiAgICAgcmV0dXJuOwogfQogCitjb25zdCBBdG9taWNTdHJpbmcmIFdl
YlNvY2tldDo6aW50ZXJmYWNlTmFtZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGV2ZW50TmFtZXMo
KS5pbnRlcmZhY2VGb3JXZWJTb2NrZXQ7Cit9CisKIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIFdl
YlNvY2tldDo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIEFj
dGl2ZURPTU9iamVjdDo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwpJbmRleDogU291cmNlL1dl
YkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS93ZWJzb2NrZXRzL1dlYlNvY2tldC5oCShyZXZpc2lvbiA5ODE1MSkKKysrIFNvdXJjZS9XZWJD
b3JlL3dlYnNvY2tldHMvV2ViU29ja2V0LmgJKHdvcmtpbmcgY29weSkKQEAgLTkwLDkgKzkwLDkg
QEAgcHVibGljOgogICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIoY2xvc2UpOwog
CiAgICAgLy8gRXZlbnRUYXJnZXQKLSAgICB2aXJ0dWFsIFdlYlNvY2tldCogdG9XZWJTb2NrZXQo
KSB7IHJldHVybiB0aGlzOyB9Ci0KKyAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgaW50
ZXJmYWNlTmFtZSgpIGNvbnN0OwogICAgIHZpcnR1YWwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0OworCiAgICAgdmlydHVhbCB2b2lkIGNvbnRl
eHREZXN0cm95ZWQoKTsKICAgICB2aXJ0dWFsIGJvb2wgY2FuU3VzcGVuZCgpIGNvbnN0OwogICAg
IHZpcnR1YWwgdm9pZCBzdXNwZW5kKFJlYXNvbkZvclN1c3BlbnNpb24pOwpJbmRleDogU291cmNl
L1dlYkNvcmUvd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJDb250ZXh0LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL0RlZGljYXRlZFdvcmtlckNvbnRleHQuY3BwCShyZXZp
c2lvbiA5ODE1MSkKKysrIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvRGVkaWNhdGVkV29ya2VyQ29u
dGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDYgKzQ2LDExIEBAIERlZGljYXRlZFdvcmtl
ckNvbnRleHQ6OkRlZGljYXRlZFdvcmtlckMKIHsKIH0KIAorY29uc3QgQXRvbWljU3RyaW5nJiBE
ZWRpY2F0ZWRXb3JrZXJDb250ZXh0OjppbnRlcmZhY2VOYW1lKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gZXZlbnROYW1lcygpLmludGVyZmFjZUZvckRlZGljYXRlZFdvcmtlckNvbnRleHQ7Cit9CisK
IC8vIEZJWE1FOiByZW1vdmUgdGhpcyB3aGVuIHdlIHVwZGF0ZSB0aGUgT2JqQyBiaW5kaW5ncyAo
YnVnICMyODc3NCkuCiB2b2lkIERlZGljYXRlZFdvcmtlckNvbnRleHQ6OnBvc3RNZXNzYWdlKFBh
c3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBtZXNzYWdlLCBNZXNzYWdlUG9ydCogcG9y
dCwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL0Rl
ZGljYXRlZFdvcmtlckNvbnRleHQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL0RlZGljYXRlZFdvcmtlckNvbnRleHQuaAkocmV2aXNpb24gOTgxNTEpCisrKyBTb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL0RlZGljYXRlZFdvcmtlckNvbnRleHQuaAkod29ya2luZyBjb3B5KQpA
QCAtNTQsNyArNTQsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgdm9p
ZCBpbXBvcnRTY3JpcHRzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB1cmxzLCBFeGNlcHRpb25Db2Rl
Jik7CiAKICAgICAgICAgLy8gRXZlbnRUYXJnZXQKLSAgICAgICAgdmlydHVhbCBEZWRpY2F0ZWRX
b3JrZXJDb250ZXh0KiB0b0RlZGljYXRlZFdvcmtlckNvbnRleHQoKSB7IHJldHVybiB0aGlzOyB9
CisgICAgICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBpbnRlcmZhY2VOYW1lKCkgY29u
c3Q7CisKICAgICAgICAgdm9pZCBwb3N0TWVzc2FnZShQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZT4sIEV4Y2VwdGlvbkNvZGUmKTsKICAgICAgICAgdm9pZCBwb3N0TWVzc2FnZShQYXNz
UmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4sIGNvbnN0IE1lc3NhZ2VQb3J0QXJyYXkqLCBF
eGNlcHRpb25Db2RlJik7CiAgICAgICAgIC8vIEZJWE1FOiByZW1vdmUgdGhpcyB3aGVuIHdlIHVw
ZGF0ZSB0aGUgT2JqQyBiaW5kaW5ncyAoYnVnICMyODc3NCkuCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL0RlZmF1bHRTaGFyZWRXb3JrZXJSZXBvc2l0b3J5LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL0RlZmF1bHRTaGFyZWRXb3JrZXJSZXBvc2l0b3J5LmNw
cAkocmV2aXNpb24gOTgxNTEpCisrKyBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL0RlZmF1bHRTaGFy
ZWRXb3JrZXJSZXBvc2l0b3J5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjU5LDcgKzI1OSw3IEBA
IHByaXZhdGU6CiAgICAgICAgIC8vIFNpbmNlIGNsb3NlKCkgc3RvcHMgdGhlIHRocmVhZCBldmVu
dCBsb29wLCB0aGlzIHNob3VsZCBub3QgZXZlciBnZXQgY2FsbGVkIHdoaWxlIGNsb3NpbmcuCiAg
ICAgICAgIEFTU0VSVCghd29ya2VyQ29udGV4dC0+aXNDbG9zaW5nKCkpOwogICAgICAgICBBU1NF
UlQod29ya2VyQ29udGV4dC0+aXNTaGFyZWRXb3JrZXJDb250ZXh0KCkpOwotICAgICAgICB3b3Jr
ZXJDb250ZXh0LT50b1NoYXJlZFdvcmtlckNvbnRleHQoKS0+ZGlzcGF0Y2hFdmVudChjcmVhdGVD
b25uZWN0RXZlbnQocG9ydCkpOworICAgICAgICB3b3JrZXJDb250ZXh0LT5kaXNwYXRjaEV2ZW50
KGNyZWF0ZUNvbm5lY3RFdmVudChwb3J0KSk7CiAgICAgfQogCiAgICAgT3duUHRyPE1lc3NhZ2VQ
b3J0Q2hhbm5lbD4gbV9jaGFubmVsOwpJbmRleDogU291cmNlL1dlYkNvcmUvd29ya2Vycy9TaGFy
ZWRXb3JrZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2hhcmVk
V29ya2VyLmNwcAkocmV2aXNpb24gOTgxNTEpCisrKyBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL1No
YXJlZFdvcmtlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTczLDYgKzczLDExIEBAIFNoYXJlZFdv
cmtlcjo6flNoYXJlZFdvcmtlcigpCiB7CiB9CiAKK2NvbnN0IEF0b21pY1N0cmluZyYgU2hhcmVk
V29ya2VyOjppbnRlcmZhY2VOYW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZXZlbnROYW1lcygp
LmludGVyZmFjZUZvclNoYXJlZFdvcmtlcjsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQog
CiAjZW5kaWYgIC8vIEVOQUJMRShTSEFSRURfV09SS0VSUykKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvU2hhcmVkV29ya2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvd29y
a2Vycy9TaGFyZWRXb3JrZXIuaAkocmV2aXNpb24gOTgxNTEpCisrKyBTb3VyY2UvV2ViQ29yZS93
b3JrZXJzL1NoYXJlZFdvcmtlci5oCSh3b3JraW5nIGNvcHkpCkBAIC00NSw2ICs0NSw4IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICBNZXNzYWdlUG9ydCogcG9ydCgpIGNvbnN0IHsg
cmV0dXJuIG1fcG9ydC5nZXQoKTsgfQogCisgICAgICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3Ry
aW5nJiBpbnRlcmZhY2VOYW1lKCkgY29uc3Q7CisKICAgICBwcml2YXRlOgogICAgICAgICBTaGFy
ZWRXb3JrZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOwogCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL1NoYXJlZFdvcmtlckNvbnRleHQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvU2hhcmVkV29ya2VyQ29udGV4dC5jcHAJKHJldmlzaW9uIDk4MTUxKQor
KysgU291cmNlL1dlYkNvcmUvd29ya2Vycy9TaGFyZWRXb3JrZXJDb250ZXh0LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNTksNiArNTksMTEgQEAgU2hhcmVkV29ya2VyQ29udGV4dDo6flNoYXJlZFdv
cmtlckNvbnRleAogewogfQogCitjb25zdCBBdG9taWNTdHJpbmcmIFNoYXJlZFdvcmtlckNvbnRl
eHQ6OmludGVyZmFjZU5hbWUoKSBjb25zdAoreworICAgIHJldHVybiBldmVudE5hbWVzKCkuaW50
ZXJmYWNlRm9yU2hhcmVkV29ya2VyQ29udGV4dDsKK30KKwogU2hhcmVkV29ya2VyVGhyZWFkKiBT
aGFyZWRXb3JrZXJDb250ZXh0Ojp0aHJlYWQoKQogewogICAgIHJldHVybiBzdGF0aWNfY2FzdDxT
aGFyZWRXb3JrZXJUaHJlYWQqPihCYXNlOjp0aHJlYWQoKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL1NoYXJlZFdvcmtlckNvbnRleHQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL1NoYXJlZFdvcmtlckNvbnRleHQuaAkocmV2aXNpb24gOTgxNTEpCisrKyBT
b3VyY2UvV2ViQ29yZS93b3JrZXJzL1NoYXJlZFdvcmtlckNvbnRleHQuaAkod29ya2luZyBjb3B5
KQpAQCAtNTIsNyArNTIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwg
Ym9vbCBpc1NoYXJlZFdvcmtlckNvbnRleHQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAKICAg
ICAgICAgLy8gRXZlbnRUYXJnZXQKLSAgICAgICAgdmlydHVhbCBTaGFyZWRXb3JrZXJDb250ZXh0
KiB0b1NoYXJlZFdvcmtlckNvbnRleHQoKSB7IHJldHVybiB0aGlzOyB9CisgICAgICAgIHZpcnR1
YWwgY29uc3QgQXRvbWljU3RyaW5nJiBpbnRlcmZhY2VOYW1lKCkgY29uc3Q7CiAKICAgICAgICAg
Ly8gU2V0dGVycy9HZXR0ZXJzIGZvciBhdHRyaWJ1dGVzIGluIFNoYXJlZFdvcmtlckNvbnRleHQu
aWRsCiAgICAgICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIoY29ubmVjdCk7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXIuY3BwCShyZXZpc2lvbiA5ODE1MSkKKysrIFNvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODUsNiArODUs
MTEgQEAgV29ya2VyOjp+V29ya2VyKCkKICAgICBtX2NvbnRleHRQcm94eS0+d29ya2VyT2JqZWN0
RGVzdHJveWVkKCk7CiB9CiAKK2NvbnN0IEF0b21pY1N0cmluZyYgV29ya2VyOjppbnRlcmZhY2VO
YW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZXZlbnROYW1lcygpLmludGVyZmFjZUZvcldvcmtl
cjsKK30KKwogLy8gRklYTUU6IHJlbW92ZSB0aGlzIHdoZW4gd2UgdXBkYXRlIHRoZSBPYmpDIGJp
bmRpbmdzIChidWcgIzI4Nzc0KS4KIHZvaWQgV29ya2VyOjpwb3N0TWVzc2FnZShQYXNzUmVmUHRy
PFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbWVzc2FnZSwgTWVzc2FnZVBvcnQqIHBvcnQsIEV4Y2Vw
dGlvbkNvZGUmIGVjKQogewpJbmRleDogU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXIuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlci5oCShyZXZpc2lvbiA5
ODE1MSkKKysrIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyLmgJKHdvcmtpbmcgY29weSkK
QEAgLTU0LDcgKzU0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBzdGF0aWMgUGFz
c1JlZlB0cjxXb3JrZXI+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3Ry
aW5nJiB1cmwsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICAgICAgdmlydHVhbCB+V29ya2VyKCk7CiAK
LSAgICAgICAgdmlydHVhbCBXb3JrZXIqIHRvV29ya2VyKCkgeyByZXR1cm4gdGhpczsgfQorICAg
ICAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgaW50ZXJmYWNlTmFtZSgpIGNvbnN0Owog
CiAgICAgICAgIHZvaWQgcG9zdE1lc3NhZ2UoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFs
dWU+IG1lc3NhZ2UsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICAgICAgdm9pZCBwb3N0TWVzc2FnZShQ
YXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbWVzc2FnZSwgY29uc3QgTWVzc2FnZVBv
cnRBcnJheSosIEV4Y2VwdGlvbkNvZGUmKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3htbC9YTUxI
dHRwUmVxdWVzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBS
ZXF1ZXN0LmNwcAkocmV2aXNpb24gOTgxNTEpCisrKyBTb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0
cFJlcXVlc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTE4LDYgKzExMTgsMTEgQEAgdm9pZCBY
TUxIdHRwUmVxdWVzdDo6Y29udGV4dERlc3Ryb3llZCgpCiAgICAgQWN0aXZlRE9NT2JqZWN0Ojpj
b250ZXh0RGVzdHJveWVkKCk7CiB9CiAKK2NvbnN0IEF0b21pY1N0cmluZyYgWE1MSHR0cFJlcXVl
c3Q6OmludGVyZmFjZU5hbWUoKSBjb25zdAoreworICAgIHJldHVybiBldmVudE5hbWVzKCkuaW50
ZXJmYWNlRm9yWE1MSHR0cFJlcXVlc3Q7Cit9CisKIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIFhN
TEh0dHBSZXF1ZXN0OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QKIHsKICAgICByZXR1
cm4gQWN0aXZlRE9NT2JqZWN0OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS94bWwvWE1MSHR0cFJlcXVlc3QuaAkocmV2aXNpb24gOTgxNTEpCisrKyBTb3VyY2UvV2Vi
Q29yZS94bWwvWE1MSHR0cFJlcXVlc3QuaAkod29ya2luZyBjb3B5KQpAQCAtNjksMTQgKzY5LDEz
IEBAIHB1YmxpYzoKICAgICAgICAgUmVzcG9uc2VUeXBlQXJyYXlCdWZmZXIKICAgICB9OwogCi0g
ICAgdmlydHVhbCBYTUxIdHRwUmVxdWVzdCogdG9YTUxIdHRwUmVxdWVzdCgpIHsgcmV0dXJuIHRo
aXM7IH0KLQogICAgIHZpcnR1YWwgdm9pZCBjb250ZXh0RGVzdHJveWVkKCk7CiAgICAgdmlydHVh
bCBib29sIGNhblN1c3BlbmQoKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgc3VzcGVuZChSZWFz
b25Gb3JTdXNwZW5zaW9uKTsKICAgICB2aXJ0dWFsIHZvaWQgcmVzdW1lKCk7CiAgICAgdmlydHVh
bCB2b2lkIHN0b3AoKTsKIAorICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBpbnRlcmZh
Y2VOYW1lKCkgY29uc3Q7CiAgICAgdmlydHVhbCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3Q7CiAKICAgICBjb25zdCBLVVJMJiB1cmwoKSBjb25z
dCB7IHJldHVybiBtX3VybDsgfQpJbmRleDogU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1
ZXN0VXBsb2FkLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJl
cXVlc3RVcGxvYWQuY3BwCShyZXZpc2lvbiA5ODE1MSkKKysrIFNvdXJjZS9XZWJDb3JlL3htbC9Y
TUxIdHRwUmVxdWVzdFVwbG9hZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQxLDYgKzQxLDExIEBA
IFhNTEh0dHBSZXF1ZXN0VXBsb2FkOjpYTUxIdHRwUmVxdWVzdFVwbG8KIHsKIH0KIAorY29uc3Qg
QXRvbWljU3RyaW5nJiBYTUxIdHRwUmVxdWVzdFVwbG9hZDo6aW50ZXJmYWNlTmFtZSgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIGV2ZW50TmFtZXMoKS5pbnRlcmZhY2VGb3JYTUxIdHRwUmVxdWVzdFVw
bG9hZDsKK30KKwogU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogWE1MSHR0cFJlcXVlc3RVcGxvYWQ6
OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdAogewogICAgIHJldHVybiBtX3htbEh0dHBS
ZXF1ZXN0LT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS94
bWwvWE1MSHR0cFJlcXVlc3RVcGxvYWQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS94
bWwvWE1MSHR0cFJlcXVlc3RVcGxvYWQuaAkocmV2aXNpb24gOTgxNTEpCisrKyBTb3VyY2UvV2Vi
Q29yZS94bWwvWE1MSHR0cFJlcXVlc3RVcGxvYWQuaAkod29ya2luZyBjb3B5KQpAQCAtNTQsOCAr
NTQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgZGVyZWYoKSB7IG1feG1s
SHR0cFJlcXVlc3QtPmRlcmVmKCk7IH0KICAgICAgICAgWE1MSHR0cFJlcXVlc3QqIHhtbEh0dHBS
ZXF1ZXN0KCkgY29uc3QgeyByZXR1cm4gbV94bWxIdHRwUmVxdWVzdDsgfQogCi0gICAgICAgIHZp
cnR1YWwgWE1MSHR0cFJlcXVlc3RVcGxvYWQqIHRvWE1MSHR0cFJlcXVlc3RVcGxvYWQoKSB7IHJl
dHVybiB0aGlzOyB9Ci0KKyAgICAgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIGludGVy
ZmFjZU5hbWUoKSBjb25zdDsKICAgICAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0OwogCiAgICAgICAgIERFRklORV9BVFRSSUJVVEVfRVZF
TlRfTElTVEVORVIoYWJvcnQpOwpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VM
b2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHJldmlz
aW9uIDk4MTgyKQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMyArMSwxNSBAQAorMjAxMS0xMC0yMSAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3
ZWJraXQub3JnPgorCisgICAgICAgIEV2ZW50VGFyZ2V0Lmggc2hvdWxkbid0IG5lZWQgdG8ga25v
dyBhYm91dCBldmVyeSBmZWF0dXJlIGFuZCBpZmRlZgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzA2NTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGNhc3QgaXNuJ3QgbmVlZGVkIGJlY2F1c2UgZGlz
cGF0Y2hFdmVudCBpcyBhIHZpcnR1YWwgZnVuY3Rpb24uCisKKyAgICAgICAgKiBzcmMvV2ViU2hh
cmVkV29ya2VySW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNoYXJlZFdvcmtlckltcGw6
OmNvbm5lY3RUYXNrKToKKwogMjAxMS0xMC0yMSAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQu
b3JnPgogCiAgICAgICAgIEludHJvZHVjZSBFdmVudDo6aGFzSW50ZXJmYWNlIHRvIG1ha2UgdXNl
cyBvZiBpbnRlcmZhY2VOYW1lIG1vcmUgcmVhZGFibGUKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYlNoYXJlZFdvcmtlckltcGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNoYXJlZFdvcmtlckltcGwuY3BwCShyZXZpc2lvbiA5ODE1
MSkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNoYXJlZFdvcmtlckltcGwuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC05Miw3ICs5Miw3IEBAIHZvaWQgV2ViU2hhcmVkV29ya2VySW1w
bDo6Y29ubmVjdFRhc2soU2MKICAgICBBU1NFUlQoY29udGV4dC0+aXNXb3JrZXJDb250ZXh0KCkp
OwogICAgIFdvcmtlckNvbnRleHQqIHdvcmtlckNvbnRleHQgPSBzdGF0aWNfY2FzdDxXb3JrZXJD
b250ZXh0Kj4oY29udGV4dCk7CiAgICAgQVNTRVJUKHdvcmtlckNvbnRleHQtPmlzU2hhcmVkV29y
a2VyQ29udGV4dCgpKTsKLSAgICB3b3JrZXJDb250ZXh0LT50b1NoYXJlZFdvcmtlckNvbnRleHQo
KS0+ZGlzcGF0Y2hFdmVudChjcmVhdGVDb25uZWN0RXZlbnQocG9ydCkpOworICAgIHdvcmtlckNv
bnRleHQtPmRpc3BhdGNoRXZlbnQoY3JlYXRlQ29ubmVjdEV2ZW50KHBvcnQpKTsKIH0KIAogdm9p
ZCBXZWJTaGFyZWRXb3JrZXJJbXBsOjpzdGFydFdvcmtlckNvbnRleHQoY29uc3QgV2ViVVJMJiB1
cmwsIGNvbnN0IFdlYlN0cmluZyYgbmFtZSwgY29uc3QgV2ViU3RyaW5nJiB1c2VyQWdlbnQsIGNv
bnN0IFdlYlN0cmluZyYgc291cmNlQ29kZSwgbG9uZyBsb25nKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>112101</attachid>
            <date>2011-10-22 17:49:46 -0700</date>
            <delta_ts>2011-10-22 21:12:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-70659-20111022174944.patch</filename>
            <type>text/plain</type>
            <size>78679</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDk4MTgyKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTM0IEBACisyMDExLTEwLTIxICBBZGFtIEJh
cnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CisKKyAgICAgICAgRXZlbnRUYXJnZXQuaCBzaG91bGRu
J3QgbmVlZCB0byBrbm93IGFib3V0IGV2ZXJ5IGZlYXR1cmUgYW5kIGlmZGVmCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MDY1OQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggZm9sbG93cyB0
aGUgYXBwcm9hY2ggb2YgRXZlbnQuaCBhbmQgaW50cm9kdWNlcyBhbgorICAgICAgICBpbnRlcmZh
Y2VOYW1lIHZpcnR1YWwgZnVuY3Rpb24gdGhhdCByZXR1cm5zIHRoZSBuYW1lIG9mIHRoZSBET00K
KyAgICAgICAgaW50ZXJmYWNlIGZvciB0aGUgY29uY3JldGUgdHlwZSBvZiB0aGUgb2JqZWN0LiAg
VGhpcyBmdW5jdGlvbiBsZXRzIHVzCisgICAgICAgIHJlbW92ZSBhIGxhcmdlIG51bWJlciBvZiBm
YWtlIGR5bmFtaWMgY2FzdHMuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAg
KiBDb2RlR2VuZXJhdG9ycy5wcmk6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAg
ICAgICAgKiBHTlVtYWtlZmlsZS5hbToKKyAgICAgICAgKiBXZWJDb3JlLmd5cC9XZWJDb3JlLmd5
cDoKKyAgICAgICAgKiBXZWJDb3JlLmd5cC9zY3JpcHRzL2FjdGlvbl9tYWtlbmFtZXMucHk6Cisg
ICAgICAgICAgICAtIFRlYWNoIGFjdGlvbl9tYWtlbmFtZXMgaG93IHRvIGhhbmRsZSB0aGUgbmV3
ICJpbiIgZmlsZS4KKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS52
Y3Byb2ovV2ViQ29yZS52Y3Byb2o6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRXZlbnRUYXJnZXQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6dG9KUyk6CisgICAgICAgICAgICAtIFVzZSB0aGUgbmV3IGF1dG9nZW5l
cmF0ZWQgbWFjcm8gdG8gcmVtb3ZlIGEgbGFyZ2UgYW1vdW50IG9mCisgICAgICAgICAgICAgIGZl
YXR1cmUtc3BlY2lmaWMgY29kZS4KKyAgICAgICAgKiBiaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRD
b250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclNjcmlwdENvbnRyb2xsZXI6
OmluaXRTY3JpcHQpOgorICAgICAgICAqIGJpbmRpbmdzL29iamMvRE9NLm1tOgorICAgICAgICAo
a2l0KToKKyAgICAgICAgICAgIC0gVGhlIFNWR0VsZW1lbnRJbnN0YW5jZSBicmFuY2ggd2FzIG5l
dmVyIHRha2VuIHByZXZpb3VzbHkgYmVjYXVzZQorICAgICAgICAgICAgICBTVkdFbGVtZW50SW5z
dGFuY2U6OnRvTm9kZSByZXR1cm5zIGEgbm9uLU5VTEwgdmFsdWUuIFRoaXMgY29kZQorICAgICAg
ICAgICAgICB3YXMgaW50cm9kdWNlZCBpbiBodHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNl
dC80MjYxOCBhbmQKKyAgICAgICAgICAgICAgZG9lc24ndCBhcHBlYXIgdG8gaGF2ZSBldmVyIHdv
cmtlZCBhcyB0aGUgYXV0aG9yIGludGVuZGVkLgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4RE9N
V3JhcHBlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOERPTVdyYXBwZXI6OmNvbnZlcnRFdmVu
dFRhcmdldFRvVjhPYmplY3QpOgorICAgICAgICAgICAgLSBVc2UgdGhlIG5ldyBhdXRvZ2VuZXJh
dGVkIG1hY3JvIHRvIHJlbW92ZSBhIGxhcmdlIGFtb3VudCBvZgorICAgICAgICAgICAgICBmZWF0
dXJlLXNwZWNpZmljIGNvZGUuCisgICAgICAgICogZG9tL0V2ZW50TmFtZXMuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RXZlbnROYW1lczo6RXZlbnROYW1lcyk6CisgICAgICAgICogZG9tL0V2ZW50
TmFtZXMuaDoKKyAgICAgICAgKiBkb20vRXZlbnRUYXJnZXQuY3BwOgorICAgICAgICAqIGRvbS9F
dmVudFRhcmdldC5oOgorICAgICAgICAqIGRvbS9FdmVudFRhcmdldEZhY3RvcnkuaW46IEFkZGVk
LgorICAgICAgICAgICAgLSBBZGQgYSBuZXcgImluIiBmaWxlIHRoYXQgbGlzdHMgYWxsIHRoZSBF
dmVudFRhcmdldHMuCisgICAgICAgICogZG9tL0xvY2FsTWVkaWFTdHJlYW0uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6TG9jYWxNZWRpYVN0cmVhbTo6aW50ZXJmYWNlTmFtZSk6CisgICAgICAgICog
ZG9tL0xvY2FsTWVkaWFTdHJlYW0uaDoKKyAgICAgICAgKiBkb20vTWVkaWFTdHJlYW0uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW06OmludGVyZmFjZU5hbWUpOgorICAgICAgICAq
IGRvbS9NZWRpYVN0cmVhbS5oOgorICAgICAgICAqIGRvbS9NZXNzYWdlUG9ydC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpNZXNzYWdlUG9ydDo6aW50ZXJmYWNlTmFtZSk6CisgICAgICAgICogZG9t
L01lc3NhZ2VQb3J0Lmg6CisgICAgICAgICogZG9tL05vZGUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Tm9kZTo6dG9Ob2RlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OmludGVyZmFjZU5hbWUp
OgorICAgICAgICAqIGRvbS9Ob2RlLmg6CisgICAgICAgICogZG9tL21ha2VfZXZlbnRfZmFjdG9y
eS5wbDoKKyAgICAgICAgICAgIC0gR2VuZXJhbGl6ZSBtYWtlX2V2ZW50X2ZhY3RvcnkucGwgdG8g
YmUgYWJsZSB0byBnZW5lcmF0ZQorICAgICAgICAgICAgICBpbnRlcmZhY2VzIGZvciBkaWZmZXJl
bnQgbmFtZXNwYWNlcy4KKyAgICAgICAgKiBmaWxlYXBpL0ZpbGVSZWFkZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RmlsZVJlYWRlcjo6aW50ZXJmYWNlTmFtZSk6CisgICAgICAgICogZmlsZWFw
aS9GaWxlUmVhZGVyLmg6CisgICAgICAgICogZmlsZWFwaS9GaWxlV3JpdGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkZpbGVXcml0ZXI6OmludGVyZmFjZU5hbWUpOgorICAgICAgICAqIGZpbGVh
cGkvRmlsZVdyaXRlci5oOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9ET01BcHBsaWNhdGlv
bkNhY2hlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTUFwcGxpY2F0aW9uQ2FjaGU6OmludGVy
ZmFjZU5hbWUpOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9ET01BcHBsaWNhdGlvbkNhY2hl
Lmg6CisgICAgICAgICogbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Tm90aWZpY2F0aW9uOjppbnRlcmZhY2VOYW1lKToKKyAgICAgICAgKiBub3RpZmlj
YXRpb25zL05vdGlmaWNhdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uOjpz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KToKKyAgICAgICAgKiBwMnAvUGVlckNvbm5lY3Rpb24uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UGVlckNvbm5lY3Rpb246OmludGVyZmFjZU5hbWUpOgorICAg
ICAgICAqIHAycC9QZWVyQ29ubmVjdGlvbi5oOgorICAgICAgICAqIHBhZ2UvRE9NV2luZG93LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvdzo6aW50ZXJmYWNlTmFtZSk6CisgICAgICAg
IChXZWJDb3JlOjpET01XaW5kb3c6OnRvRE9NV2luZG93KToKKyAgICAgICAgKiBwYWdlL0RPTVdp
bmRvdy5oOgorICAgICAgICAqIHBhZ2UvRXZlbnRTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RXZlbnRTb3VyY2U6OmludGVyZmFjZU5hbWUpOgorICAgICAgICAqIHBhZ2UvRXZlbnRTb3Vy
Y2UuaDoKKyAgICAgICAgKiBzdG9yYWdlL0lEQkRhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OklEQkRhdGFiYXNlOjppbnRlcmZhY2VOYW1lKToKKyAgICAgICAgKiBzdG9yYWdlL0lEQkRh
dGFiYXNlLmg6CisgICAgICAgICogc3RvcmFnZS9JREJSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OklEQlJlcXVlc3Q6OmludGVyZmFjZU5hbWUpOgorICAgICAgICAqIHN0b3JhZ2UvSURC
UmVxdWVzdC5oOgorICAgICAgICAqIHN0b3JhZ2UvSURCVHJhbnNhY3Rpb24uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OmludGVyZmFjZU5hbWUpOgorICAgICAgICAqIHN0
b3JhZ2UvSURCVHJhbnNhY3Rpb24uaDoKKyAgICAgICAgKiBzdG9yYWdlL0lEQlZlcnNpb25DaGFu
Z2VSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlZlcnNpb25DaGFuZ2VSZXF1ZXN0
OjppbnRlcmZhY2VOYW1lKToKKyAgICAgICAgKiBzdG9yYWdlL0lEQlZlcnNpb25DaGFuZ2VSZXF1
ZXN0Lmg6CisgICAgICAgICogc3ZnL1NWR0VsZW1lbnRJbnN0YW5jZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdFbGVtZW50SW5zdGFuY2U6OmludGVyZmFjZU5hbWUpOgorICAgICAgICAqIHN2
Zy9TVkdFbGVtZW50SW5zdGFuY2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VsZW1lbnRJbnN0
YW5jZTo6dG9Ob2RlKToKKyAgICAgICAgKiB3ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6QXVkaW9Db250ZXh0OjppbnRlcmZhY2VOYW1lKToKKyAgICAgICAgKFdl
YkNvcmU6OkF1ZGlvQ29udGV4dDo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCk6CisgICAgICAgICog
d2ViYXVkaW8vQXVkaW9Db250ZXh0Lmg6CisgICAgICAgICogd2ViYXVkaW8vSmF2YVNjcmlwdEF1
ZGlvTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKYXZhU2NyaXB0QXVkaW9Ob2RlOjppbnRl
cmZhY2VOYW1lKToKKyAgICAgICAgKiB3ZWJhdWRpby9KYXZhU2NyaXB0QXVkaW9Ob2RlLmg6Cisg
ICAgICAgICogd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
U29ja2V0OjppbnRlcmZhY2VOYW1lKToKKyAgICAgICAgKiB3ZWJzb2NrZXRzL1dlYlNvY2tldC5o
OgorICAgICAgICAqIHdvcmtlcnMvRGVkaWNhdGVkV29ya2VyQ29udGV4dC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpEZWRpY2F0ZWRXb3JrZXJDb250ZXh0OjppbnRlcmZhY2VOYW1lKToKKyAgICAg
ICAgKiB3b3JrZXJzL0RlZGljYXRlZFdvcmtlckNvbnRleHQuaDoKKyAgICAgICAgKiB3b3JrZXJz
L0RlZmF1bHRTaGFyZWRXb3JrZXJSZXBvc2l0b3J5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNo
YXJlZFdvcmtlckNvbm5lY3RUYXNrOjpwZXJmb3JtVGFzayk6CisgICAgICAgICogd29ya2Vycy9T
aGFyZWRXb3JrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkV29ya2VyOjppbnRlcmZh
Y2VOYW1lKToKKyAgICAgICAgKiB3b3JrZXJzL1NoYXJlZFdvcmtlci5oOgorICAgICAgICAqIHdv
cmtlcnMvU2hhcmVkV29ya2VyQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRX
b3JrZXJDb250ZXh0OjppbnRlcmZhY2VOYW1lKToKKyAgICAgICAgKiB3b3JrZXJzL1NoYXJlZFdv
cmtlckNvbnRleHQuaDoKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpXb3JrZXI6OmludGVyZmFjZU5hbWUpOgorICAgICAgICAqIHdvcmtlcnMvV29ya2Vy
Lmg6CisgICAgICAgICogeG1sL1hNTEh0dHBSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlhNTEh0dHBSZXF1ZXN0OjppbnRlcmZhY2VOYW1lKToKKyAgICAgICAgKiB4bWwvWE1MSHR0cFJl
cXVlc3QuaDoKKyAgICAgICAgKiB4bWwvWE1MSHR0cFJlcXVlc3RVcGxvYWQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3RVcGxvYWQ6OmludGVyZmFjZU5hbWUpOgorICAgICAg
ICAqIHhtbC9YTUxIdHRwUmVxdWVzdFVwbG9hZC5oOgorCiAyMDExLTEwLTIxICBCZXRoIERha2lu
ICA8YmRha2luQGFwcGxlLmNvbT4KIAogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NzA2NDcKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiA5
ODE1MSkKKysrIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBA
IC0yMzQ0LDEwICsyMzQ0LDEzIEBAIEdFTkVSQVRFX0RPTV9OQU1FUyhIVE1MICR7V0VCQ09SRV9E
SVJ9L2gKIExJU1QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUyAke0RFUklWRURfU09VUkNFU19XRUJD
T1JFX0RJUn0vSFRNTE5hbWVzLmNwcCAke0RFUklWRURfU09VUkNFU19XRUJDT1JFX0RJUn0vSFRN
TEVsZW1lbnRGYWN0b3J5LmNwcCAke0RFUklWRURfU09VUkNFU19XRUJDT1JFX0RJUn0vSlNIVE1M
RWxlbWVudFdyYXBwZXJGYWN0b3J5LmNwcCkKIAogCi1HRU5FUkFURV9FVkVOVF9GQUNUT1JZKCR7
V0VCQ09SRV9ESVJ9L2RvbS9FdmVudEZhY3RvcnkuaW4pCitHRU5FUkFURV9FVkVOVF9GQUNUT1JZ
KCR7V0VCQ09SRV9ESVJ9L2RvbS9FdmVudEZhY3RvcnkuaW4gRXZlbnRGYWN0b3J5LmNwcCkKIExJ
U1QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUyAke0RFUklWRURfU09VUkNFU19XRUJDT1JFX0RJUn0v
RXZlbnRGYWN0b3J5LmNwcCkKIAogCitHRU5FUkFURV9FVkVOVF9GQUNUT1JZKCR7V0VCQ09SRV9E
SVJ9L2RvbS9FdmVudFRhcmdldEZhY3RvcnkuaW4gRXZlbnRJbnRlcmZhY2VzLmgpCisKKwogR0VO
RVJBVEVfRk9OVF9OQU1FUygke1dFQkNPUkVfRElSfS9jc3MvV2ViS2l0Rm9udEZhbWlseU5hbWVz
LmluKQogTElTVChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTICR7REVSSVZFRF9TT1VSQ0VTX1dFQkNP
UkVfRElSfS9XZWJLaXRGb250RmFtaWx5TmFtZXMuY3BwKQogCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9Db2RlR2VuZXJhdG9ycy5wcmkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ29kZUdl
bmVyYXRvcnMucHJpCShyZXZpc2lvbiA5ODE1MSkKKysrIFNvdXJjZS9XZWJDb3JlL0NvZGVHZW5l
cmF0b3JzLnByaQkod29ya2luZyBjb3B5KQpAQCAtMzQsNiArMzQsOCBAQCBIVE1MX0VOVElUSUVT
ID0gJCRQV0QvaHRtbC9wYXJzZXIvSFRNTEVuCiAKIEVWRU5UX0ZBQ1RPUlkgPSAkJFBXRC9kb20v
RXZlbnRGYWN0b3J5LmluCiAKK0VWRU5UX1RBUkdFVF9GQUNUT1JZID0gJCRQV0QvZG9tL0V2ZW50
VGFyZ2V0RmFjdG9yeS5pbgorCiBDT0xPUkRBVEFfR1BFUkYgPSAkJFBXRC9wbGF0Zm9ybS9Db2xv
ckRhdGEuZ3BlcmYKIAogV0FMRE9DU1NQUk9QUyA9ICQkUFdEL2Nzcy9DU1NQcm9wZXJ0eU5hbWVz
LmluCkBAIC03NzIsNiArNzc0LDE0IEBAIGV2ZW50ZmFjdG9yeS5jb21tYW5kcyA9IHBlcmwgLUkk
JFBXRC9iaW4KIGV2ZW50ZmFjdG9yeS5kZXBlbmRzID0gJCRQV0QvZG9tL21ha2VfZXZlbnRfZmFj
dG9yeS5wbCAkJEVWRU5UX0ZBQ1RPUlkKIGFkZEV4dHJhQ29tcGlsZXIoZXZlbnRmYWN0b3J5KQog
CisjIEdFTkVSQVRPUiA1LUY6CitldmVudGZhY3Rvcnkub3V0cHV0ID0gJCR7V0NfR0VORVJBVEVE
X1NPVVJDRVNfRElSfS9FdmVudFRhcmdldEludGVyZmFjZXMuaAorZXZlbnR0YXJnZXRmYWN0b3J5
LmlucHV0ID0gRVZFTlRfVEFSR0VUX0ZBQ1RPUlkKK2V2ZW50dGFyZ2V0ZmFjdG9yeS53a1Njcmlw
dCA9ICQkUFdEL2RvbS9tYWtlX2V2ZW50X2ZhY3RvcnkucGwKK2V2ZW50dGFyZ2V0ZmFjdG9yeS5j
b21tYW5kcyA9IHBlcmwgLUkkJFBXRC9iaW5kaW5ncy9zY3JpcHRzICQkZXZlbnRmYWN0b3J5Lndr
U2NyaXB0IC0tZXZlbnRzICQkRVZFTlRfVEFSR0VUX0ZBQ1RPUlkgLS1vdXRwdXREaXIgJCRXQ19H
RU5FUkFURURfU09VUkNFU19ESVIKK2V2ZW50dGFyZ2V0ZmFjdG9yeS5kZXBlbmRzID0gJCRQV0Qv
ZG9tL21ha2VfZXZlbnRfZmFjdG9yeS5wbCAkJEVWRU5UX1RBUkdFVF9GQUNUT1JZCithZGRFeHRy
YUNvbXBpbGVyKGV2ZW50dGFyZ2V0ZmFjdG9yeSkKKwogIyBHRU5FUkFUT1IgOC1BOgogZW50aXRp
ZXMub3V0cHV0ID0gJCR7V0NfR0VORVJBVEVEX1NPVVJDRVNfRElSfS9IVE1MRW50aXR5VGFibGUu
Y3BwCiBlbnRpdGllcy5pbnB1dCA9IEhUTUxfRU5USVRJRVMKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L0Rlcml2ZWRTb3VyY2VzLm1ha2UKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvRGVyaXZl
ZFNvdXJjZXMubWFrZQkocmV2aXNpb24gOTgxNTEpCisrKyBTb3VyY2UvV2ViQ29yZS9EZXJpdmVk
U291cmNlcy5tYWtlCSh3b3JraW5nIGNvcHkpCkBAIC02MDAsNiArNjAwLDcgQEAgYWxsIDogXAog
ICAgIENTU1ZhbHVlS2V5d29yZHMuaCBcCiAgICAgQ29sb3JEYXRhLmNwcCBcCiAgICAgRXZlbnRG
YWN0b3J5LmNwcCBcCisgICAgRXZlbnRUYXJnZXRJbnRlcmZhY2VzLmggXAogICAgIEhUTUxFbGVt
ZW50RmFjdG9yeS5jcHAgXAogICAgIEhUTUxFbnRpdHlUYWJsZS5jcHAgXAogICAgIEhUTUxOYW1l
cy5jcHAgXApAQCAtODYwLDExICs4NjEsMTQgQEAgWExpbmtOYW1lcy5jcHAgOiBkb20vbWFrZV9u
YW1lcy5wbCBzdmcveAogCiAjIC0tLS0tLS0tCiAgCi0jIFJlZ2lzdGVyIGV2ZW50IGNvbnN0cnVj
dG9ycworIyBSZWdpc3RlciBldmVudCBjb25zdHJ1Y3RvcnMgYW5kIHRhcmdldHMKIAotRXZlbnRG
YWN0b3J5LmNwcCA6IGRvbS9tYWtlX2V2ZW50X2ZhY3RvcnkucGwgZG9tL0V2ZW50RmFjdG9yeS5p
bgorRXZlbnRGYWN0b3J5LmNwcCBFdmVudEhlYWRlcnMuaCBFdmVudEludGVyZmFjZXMuaCA6IGRv
bS9tYWtlX2V2ZW50X2ZhY3RvcnkucGwgZG9tL0V2ZW50RmFjdG9yeS5pbgogCXBlcmwgLUkgJChX
ZWJDb3JlKS9iaW5kaW5ncy9zY3JpcHRzICQ8IC0tZXZlbnRzICQoV2ViQ29yZSkvZG9tL0V2ZW50
RmFjdG9yeS5pbgogCitFdmVudFRhcmdldEhlYWRlcnMuaCBFdmVudFRhcmdldEludGVyZmFjZXMu
aCA6IGRvbS9tYWtlX2V2ZW50X2ZhY3RvcnkucGwgZG9tL0V2ZW50VGFyZ2V0RmFjdG9yeS5pbgor
CXBlcmwgLUkgJChXZWJDb3JlKS9iaW5kaW5ncy9zY3JpcHRzICQ8IC0tZXZlbnRzICQoV2ViQ29y
ZSkvZG9tL0V2ZW50VGFyZ2V0RmFjdG9yeS5pbgorCiAjIC0tLS0tLS0tCiAgCiAjIE1hdGhNTCB0
YWcgYW5kIGF0dHJpYnV0ZSBuYW1lcywgYW5kIGVsZW1lbnQgZmFjdG9yeQpJbmRleDogU291cmNl
L1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvR05V
bWFrZWZpbGUuYW0JKHJldmlzaW9uIDk4MTUxKQorKysgU291cmNlL1dlYkNvcmUvR05VbWFrZWZp
bGUuYW0JKHdvcmtpbmcgY29weSkKQEAgLTY4NCw2ICs2ODQsOSBAQCBEZXJpdmVkU291cmNlcy9X
ZWJDb3JlL1hNTE5hbWVzLmNwcCBEZXJpCiBEZXJpdmVkU291cmNlcy9XZWJDb3JlL0V2ZW50RmFj
dG9yeS5jcHAgRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9FdmVudEhlYWRlcnMuaCBEZXJpdmVkU291
cmNlcy9XZWJDb3JlL0V2ZW50SW50ZXJmYWNlcy5oOiAkKFdlYkNvcmUpL2RvbS9tYWtlX2V2ZW50
X2ZhY3RvcnkucGwgJChXZWJDb3JlKS9kb20vRXZlbnRGYWN0b3J5LmluCiAJJChBTV9WX0dFTikk
KFBFUkwpIC1JJChXZWJDb3JlKS9iaW5kaW5ncy9zY3JpcHRzICQ8IC0tZXZlbnRzICQoV2ViQ29y
ZSkvZG9tL0V2ZW50RmFjdG9yeS5pbiAtLW91dHB1dERpciAiJChHRU5TT1VSQ0VTX1dFQkNPUkUp
IgogCitEZXJpdmVkU291cmNlcy9XZWJDb3JlL0V2ZW50VGFyZ2V0SGVhZGVycy5oIERlcml2ZWRT
b3VyY2VzL1dlYkNvcmUvRXZlbnRUYXJnZXRJbnRlcmZhY2VzLmg6ICQoV2ViQ29yZSkvZG9tL21h
a2VfZXZlbnRfZmFjdG9yeS5wbCAkKFdlYkNvcmUpL2RvbS9FdmVudFRhcmdldEZhY3RvcnkuaW4K
KwkkKEFNX1ZfR0VOKSQoUEVSTCkgLUkkKFdlYkNvcmUpL2JpbmRpbmdzL3NjcmlwdHMgJDwgLS1l
dmVudHMgJChXZWJDb3JlKS9kb20vRXZlbnRUYXJnZXRGYWN0b3J5LmluIC0tb3V0cHV0RGlyICIk
KEdFTlNPVVJDRVNfV0VCQ09SRSkiCisKICMgQWxsIFdlYiBJbnNwZWN0b3IgZ2VuZXJhdGVkIGZp
bGVzIGFyZSBjcmVhdGVkIHdpdGggdGhpcyBvbmUgY2FsbCB0byBDb2RlR2VuZXJhdG9ySW5zcGVj
dG9yLnBtCiBEZXJpdmVkU291cmNlcy9XZWJDb3JlL0luc3BlY3RvclByb3RvY29sVmVyc2lvbi5o
IDogJChXZWJDb3JlKS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpzb24gJChXZWJDb3JlKS9pbnNwZWN0
b3IvZ2VuZXJhdGUtaW5zcGVjdG9yLXByb3RvY29sLXZlcnNpb24KIAkkKFBZVEhPTikgJChXZWJD
b3JlKS9pbnNwZWN0b3IvZ2VuZXJhdGUtaW5zcGVjdG9yLXByb3RvY29sLXZlcnNpb24gLW8gJChH
RU5TT1VSQ0VTX1dFQkNPUkUpL0luc3BlY3RvclByb3RvY29sVmVyc2lvbi5oICQoV2ViQ29yZSkv
aW5zcGVjdG9yL0luc3BlY3Rvci5qc29uCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmls
ZS5saXN0LmFtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3Qu
YW0JKHJldmlzaW9uIDk4MTUxKQorKysgU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5h
bQkod29ya2luZyBjb3B5KQpAQCAtMTIsNiArMTIsOCBAQCB3ZWJjb3JlX2J1aWx0X3NvdXJjZXMg
Kz0gXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvRXZlbnRGYWN0b3J5LmNwcCBcCiAJRGVyaXZl
ZFNvdXJjZXMvV2ViQ29yZS9FdmVudEhlYWRlcnMuaCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29y
ZS9FdmVudEludGVyZmFjZXMuaCBcCisJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9FdmVudFRhcmdl
dEhlYWRlcnMuaCBcCisJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9FdmVudFRhcmdldEludGVyZmFj
ZXMuaCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9IVE1MRWxlbWVudEZhY3RvcnkuY3BwIFwK
IAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0hUTUxFbGVtZW50RmFjdG9yeS5oIFwKIAlEZXJpdmVk
U291cmNlcy9XZWJDb3JlL0hUTUxFbnRpdHlUYWJsZS5jcHAgXApJbmRleDogU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5neXBpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lw
aQkocmV2aXNpb24gOTgxNTEpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkJKHdvcmtp
bmcgY29weSkKQEAgLTcwNTAsNiArNzA1MCwxMCBAQAogICAgICAgICAgICAgJzwoUFJPRFVDVF9E
SVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvRGVidWdnZXJTY3JpcHRTb3VyY2UuaCcsCiAgICAg
ICAgICAgICAnPChQUk9EVUNUX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9Eb2NUeXBlU3Ry
aW5ncy5jcHAnLAogICAgICAgICAgICAgJzwoUFJPRFVDVF9ESVIpL0Rlcml2ZWRTb3VyY2VzL1dl
YkNvcmUvRXZlbnRGYWN0b3J5LmNwcCcsCisgICAgICAgICAgICAnPChQUk9EVUNUX0RJUikvRGVy
aXZlZFNvdXJjZXMvV2ViQ29yZS9FdmVudEhlYWRlcnMuaCcsCisgICAgICAgICAgICAnPChQUk9E
VUNUX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9FdmVudEludGVyZmFjZXMuaCcsCisgICAg
ICAgICAgICAnPChQUk9EVUNUX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9FdmVudFRhcmdl
dEhlYWRlcnMuaCcsCisgICAgICAgICAgICAnPChQUk9EVUNUX0RJUikvRGVyaXZlZFNvdXJjZXMv
V2ViQ29yZS9FdmVudFRhcmdldEludGVyZmFjZXMuaCcsCiAgICAgICAgICAgICAnPChQUk9EVUNU
X0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9IVE1MRWxlbWVudEZhY3RvcnkuY3BwJywKICAg
ICAgICAgICAgICc8KFBST0RVQ1RfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0hUTUxFbGVt
ZW50RmFjdG9yeS5oJywKICAgICAgICAgICAgICc8KFBST0RVQ1RfRElSKS9EZXJpdmVkU291cmNl
cy9XZWJDb3JlL0hUTUxFbnRpdHlUYWJsZS5jcHAnLApJbmRleDogU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5neXAvV2ViQ29yZS5neXAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5neXAvV2ViQ29yZS5neXAJKHJldmlzaW9uIDk4MTUxKQorKysgU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5neXAvV2ViQ29yZS5neXAJKHdvcmtpbmcgY29weSkKQEAgLTY3OCw2ICs2NzgsMjQgQEAK
ICAgICAgICAgICBdLAogICAgICAgICB9LAogICAgICAgICB7CisgICAgICAgICAgJ2FjdGlvbl9u
YW1lJzogJ0V2ZW50VGFyZ2V0RmFjdG9yeScsCisgICAgICAgICAgJ2lucHV0cyc6IFsKKyAgICAg
ICAgICAgICcuLi9kb20vbWFrZV9ldmVudF9mYWN0b3J5LnBsJywKKyAgICAgICAgICAgICcuLi9k
b20vRXZlbnRUYXJnZXRGYWN0b3J5LmluJywKKyAgICAgICAgICBdLAorICAgICAgICAgICdvdXRw
dXRzJzogWworICAgICAgICAgICAgJzwoU0hBUkVEX0lOVEVSTUVESUFURV9ESVIpL3dlYmtpdC9F
dmVudFRhcmdldEhlYWRlcnMuaCcsCisgICAgICAgICAgICAnPChTSEFSRURfSU5URVJNRURJQVRF
X0RJUikvd2Via2l0L0V2ZW50VGFyZ2V0SW50ZXJmYWNlcy5oJywKKyAgICAgICAgICBdLAorICAg
ICAgICAgICdhY3Rpb24nOiBbCisgICAgICAgICAgICAncHl0aG9uJywKKyAgICAgICAgICAgICdz
Y3JpcHRzL2FjdGlvbl9tYWtlbmFtZXMucHknLAorICAgICAgICAgICAgJzxAKF9vdXRwdXRzKScs
CisgICAgICAgICAgICAnLS0nLAorICAgICAgICAgICAgJzxAKF9pbnB1dHMpJywKKyAgICAgICAg
ICBdLAorICAgICAgICB9LAorICAgICAgICB7CiAgICAgICAgICAgJ2FjdGlvbl9uYW1lJzogJ01h
dGhNTE5hbWVzJywKICAgICAgICAgICAnaW5wdXRzJzogWwogICAgICAgICAgICAgJy4uL2RvbS9t
YWtlX25hbWVzLnBsJywKQEAgLTk5Myw2ICsxMDExLDEwIEBACiAgICAgICAgICc8KFNIQVJFRF9J
TlRFUk1FRElBVEVfRElSKS93ZWJraXQvSFRNTEVsZW1lbnRGYWN0b3J5LmNwcCcsCiAgICAgICAg
ICc8KFNIQVJFRF9JTlRFUk1FRElBVEVfRElSKS93ZWJraXQvSFRNTE5hbWVzLmNwcCcsCiAgICAg
ICAgICc8KFNIQVJFRF9JTlRFUk1FRElBVEVfRElSKS93ZWJraXQvRXZlbnRGYWN0b3J5LmNwcCcs
CisgICAgICAgICc8KFNIQVJFRF9JTlRFUk1FRElBVEVfRElSKS93ZWJraXQvRXZlbnRIZWFkZXJz
LmgnLAorICAgICAgICAnPChTSEFSRURfSU5URVJNRURJQVRFX0RJUikvd2Via2l0L0V2ZW50SW50
ZXJmYWNlcy5oJywKKyAgICAgICAgJzwoU0hBUkVEX0lOVEVSTUVESUFURV9ESVIpL3dlYmtpdC9F
dmVudFRhcmdldEhlYWRlcnMuaCcsCisgICAgICAgICc8KFNIQVJFRF9JTlRFUk1FRElBVEVfRElS
KS93ZWJraXQvRXZlbnRUYXJnZXRJbnRlcmZhY2VzLmgnLAogICAgICAgICAnPChTSEFSRURfSU5U
RVJNRURJQVRFX0RJUikvd2Via2l0L1VzZXJBZ2VudFN0eWxlU2hlZXRzRGF0YS5jcHAnLAogICAg
ICAgICAnPChTSEFSRURfSU5URVJNRURJQVRFX0RJUikvd2Via2l0L1Y4SFRNTEVsZW1lbnRXcmFw
cGVyRmFjdG9yeS5jcHAnLAogICAgICAgICAnPChTSEFSRURfSU5URVJNRURJQVRFX0RJUikvd2Vi
a2l0L1hMaW5rTmFtZXMuY3BwJywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwL3Nj
cmlwdHMvYWN0aW9uX21ha2VuYW1lcy5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLmd5cC9zY3JpcHRzL2FjdGlvbl9tYWtlbmFtZXMucHkJKHJldmlzaW9uIDk4MTUxKQor
KysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXAvc2NyaXB0cy9hY3Rpb25fbWFrZW5hbWVzLnB5
CSh3b3JraW5nIGNvcHkpCkBAIC0xMjksNyArMTI5LDcgQEAgZGVmIG1haW4oYXJncyk6CiAgICAg
ICAgICAgICAgb3IgaW5wdXRCYXNlbmFtZS5lbmRzd2l0aCgnYXR0cnMuaW4nKToKICAgICAgICAg
ICAgIGFzc2VydCBhdHRySW5wdXQgPT0gTm9uZQogICAgICAgICAgICAgYXR0cklucHV0ID0gaW5w
dXRBYnNQb3NpeAotICAgICAgICBlbGlmIGlucHV0QmFzZW5hbWUuZW5kc3dpdGgoJ0V2ZW50RmFj
dG9yeS5pbicpOgorICAgICAgICBlbGlmIGlucHV0QmFzZW5hbWUuZW5kc3dpdGgoJ0V2ZW50RmFj
dG9yeS5pbicpIG9yIGlucHV0QmFzZW5hbWUuZW5kc3dpdGgoJ0V2ZW50VGFyZ2V0RmFjdG9yeS5p
bicpOgogICAgICAgICAgICAgZXZlbnRzSW5wdXQgPSBpbnB1dEFic1Bvc2l4CiAgICAgICAgIGVs
aWYgaW5wdXRCYXNlbmFtZS5lbmRzd2l0aCgnTmFtZXMuaW4nKToKICAgICAgICAgICAgIG9wdGlv
bnMuYXBwZW5kKGlucHV0QWJzUG9zaXgpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZj
cHJvai9XZWJDb3JlLnZjcHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LnZjcHJvai9XZWJDb3JlLnZjcHJvagkocmV2aXNpb24gOTgxNTEpCisrKyBTb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagkod29ya2luZyBjb3B5KQpAQCAtNTU0LDYg
KzU1NCwxNCBAQAogCQkJCT4KIAkJCTwvRmlsZT4KIAkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRo
PSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3Vy
Y2VzXEV2ZW50VGFyZ2V0SGVhZGVycy5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJ
CQkJUmVsYXRpdmVQYXRoPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqXCQoUHJvamVjdE5h
bWUpXERlcml2ZWRTb3VyY2VzXEV2ZW50VGFyZ2V0SW50ZXJmYWNlcy5oIgorCQkJCT4KKwkJCTwv
RmlsZT4KKwkJCTxGaWxlCiAJCQkJUmVsYXRpdmVQYXRoPSIkKENvbmZpZ3VyYXRpb25CdWlsZERp
cilcb2JqXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEhUTUxFbGVtZW50RmFjdG9yeS5o
IgogCQkJCT4KIAkJCTwvRmlsZT4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDk4MTUxKQorKysgU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBA
IC0zMjk4LDYgKzMyOTgsOCBAQAogCQk5NzhBRDY3NTE0MTMwQThEMDBDN0NBRTMgLyogSFRNTFNw
YW5FbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA5NzhBRDY3MjE0MTMwQThEMDBDN0NBRTMgLyogSFRNTFNwYW5FbGVtZW50LmggKi87IH07CiAJ
CTk3OUY0M0QzMTA3NUU0NEEwMDAwRjgzQiAvKiBOYXZpZ2F0aW9uU2NoZWR1bGVyLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3OUY0M0QxMTA3NUU0
NEEwMDAwRjgzQiAvKiBOYXZpZ2F0aW9uU2NoZWR1bGVyLmNwcCAqLzsgfTsKIAkJOTc5RjQzRDQx
MDc1RTQ0QTAwMDBGODNCIC8qIE5hdmlnYXRpb25TY2hlZHVsZXIuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3OUY0M0QyMTA3NUU0NEEwMDAwRjgzQiAv
KiBOYXZpZ2F0aW9uU2NoZWR1bGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKKwkJOTdBQTNDQTUxNDUyMzdDQzAwM0UxREE2IC8qIEV2ZW50VGFyZ2V0
SGVhZGVycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
OTdBQTNDQTMxNDUyMzdDQzAwM0UxREE2IC8qIEV2ZW50VGFyZ2V0SGVhZGVycy5oICovOyB9Owor
CQk5N0FBM0NBNjE0NTIzN0NDMDAzRTFEQTYgLyogRXZlbnRUYXJnZXRJbnRlcmZhY2VzLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5N0FBM0NBNDE0NTIz
N0NDMDAzRTFEQTYgLyogRXZlbnRUYXJnZXRJbnRlcmZhY2VzLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTdCMUYwMkUxM0IwMjVDQTAwRjUxMDNG
IC8qIFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDM3NTY5RTAwMTNBRjE3MkMwMENEQkE4RSAvKiBTaGFyZWRC
dWZmZXJDaHVua1JlYWRlci5jcHAgKi87IH07CiAJCTk3QjFGMDJGMTNCMDI1RDIwMEY1MTAzRiAv
KiBTaGFyZWRCdWZmZXJDaHVua1JlYWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMzc1NjlFMDIxM0FGMTcyQzAwQ0RCQThFIC8qIFNoYXJlZEJ1ZmZl
ckNodW5rUmVhZGVyLmggKi87IH07CiAJCTk3QkM4NDgzMTIzNkZEOTMwMDBDNjE2MSAvKiBUZXh0
RG9jdW1lbnRQYXJzZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gOTdCQzg0ODExMjM2RkQ5MzAwMEM2MTYxIC8qIFRleHREb2N1bWVudFBhcnNlci5j
cHAgKi87IH07CkBAIC0xMDQ5Myw2ICsxMDQ5NSw4IEBACiAJCTk3OEFENjczMTQxMzBBOEQwMEM3
Q0FFMyAvKiBIVE1MU3BhbkVsZW1lbnQuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEhUTUxT
cGFuRWxlbWVudC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk3OUY0M0QxMTA3
NUU0NEEwMDAwRjgzQiAvKiBOYXZpZ2F0aW9uU2NoZWR1bGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE5hdmlnYXRpb25TY2hlZHVsZXIuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk5NzlGNDNEMjEwNzVFNDRBMDAwMEY4M0IgLyogTmF2aWdhdGlv
blNjaGVkdWxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOYXZpZ2F0aW9u
U2NoZWR1bGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk3QUEzQ0EzMTQ1MjM3
Q0MwMDNFMURBNiAvKiBFdmVudFRhcmdldEhlYWRlcnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gRXZlbnRUYXJnZXRIZWFkZXJzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTk3QUEzQ0E0MTQ1MjM3Q0MwMDNFMURBNiAvKiBFdmVudFRhcmdldEludGVyZmFjZXMu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRXZlbnRUYXJnZXRJbnRlcmZhY2Vz
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk3QkM4NDgxMTIzNkZEOTMwMDBDNjE2
MSAvKiBUZXh0RG9jdW1lbnRQYXJzZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBuYW1lID0gVGV4dERvY3VtZW50UGFyc2VyLmNwcDsgcGF0aCA9IHBhcnNlci9UZXh0RG9jdW1l
bnRQYXJzZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5N0JDODQ4MjEyMzZG
RDkzMDAwQzYxNjEgLyogVGV4dERvY3VtZW50UGFyc2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgbmFtZSA9IFRleHREb2N1bWVudFBhcnNlci5oOyBwYXRoID0gcGFyc2VyL1RleHREb2N1
bWVudFBhcnNlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5N0JDODQ5QTEyMzcw
QTRCMDAwQzYxNjEgLyogSFRNTElucHV0U3RyZWFtLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgbmFtZSA9IEhUTUxJbnB1dFN0cmVhbS5oOyBwYXRoID0gcGFyc2VyL0hUTUxJbnB1dFN0cmVh
bS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTUyODYsNiArMTUyOTAsOCBAQAog
CQkJCTk3NjY1MDRFMTQ0RkJGRkUwMEY2QkI1MSAvKiBFdmVudEZhY3RvcnkuY3BwICovLAogCQkJ
CTk3MEI3MkE1MTQ1MDA4RUIwMEYwMEEzNyAvKiBFdmVudEhlYWRlcnMuaCAqLywKIAkJCQk5NzBC
NzI4OTE0NEZGQUM2MDBGMDBBMzcgLyogRXZlbnRJbnRlcmZhY2VzLmggKi8sCisJCQkJOTdBQTND
QTMxNDUyMzdDQzAwM0UxREE2IC8qIEV2ZW50VGFyZ2V0SGVhZGVycy5oICovLAorCQkJCTk3QUEz
Q0E0MTQ1MjM3Q0MwMDNFMURBNiAvKiBFdmVudFRhcmdldEludGVyZmFjZXMuaCAqLywKIAkJCQlB
MTdDODEyMDBGMkE1Q0Y3MDA1REFBRUIgLyogSFRNTEVsZW1lbnRGYWN0b3J5LmNwcCAqLywKIAkJ
CQlBMTdDODEyMTBGMkE1Q0Y3MDA1REFBRUIgLyogSFRNTEVsZW1lbnRGYWN0b3J5LmggKi8sCiAJ
CQkJQThCQzA0OTExMjE0RjY5NjAwQjVGMTIyIC8qIEhUTUxFbnRpdHlUYWJsZS5jcHAgKi8sCkBA
IC0yNDcxMSw2ICsyNDcxNyw4IEBACiAJCQkJQTBFRTBERjgxNDRGODI1NTAwRjgwQjBEIC8qIFdl
YkdMRGVidWdTaGFkZXJzLmggaW4gSGVhZGVycyAqLywKIAkJCQk5NzBCNzI4QTE0NEZGQUM2MDBG
MDBBMzcgLyogRXZlbnRJbnRlcmZhY2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQk5NzBCNzJBNjE0
NTAwOEVCMDBGMDBBMzcgLyogRXZlbnRIZWFkZXJzLmggaW4gSGVhZGVycyAqLywKKwkJCQk5N0FB
M0NBNTE0NTIzN0NDMDAzRTFEQTYgLyogRXZlbnRUYXJnZXRIZWFkZXJzLmggaW4gSGVhZGVycyAq
LywKKwkJCQk5N0FBM0NBNjE0NTIzN0NDMDAzRTFEQTYgLyogRXZlbnRUYXJnZXRJbnRlcmZhY2Vz
LmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9j
ZXNzaW5nID0gMDsKIAkJfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZl
bnRUYXJnZXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RXZlbnRUYXJnZXQuY3BwCShyZXZpc2lvbiA5ODE1MSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRXZlbnRUYXJnZXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw4IEBA
CiAKICNpbmNsdWRlICJET01XaW5kb3cuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1
ZGUgIkV2ZW50VGFyZ2V0SGVhZGVycy5oIgorI2luY2x1ZGUgIkV2ZW50VGFyZ2V0SW50ZXJmYWNl
cy5oIgogI2luY2x1ZGUgIkpTRE9NV2luZG93LmgiCiAjaW5jbHVkZSAiSlNET01XaW5kb3dTaGVs
bC5oIgogI2luY2x1ZGUgIkpTRXZlbnRMaXN0ZW5lci5oIgpAQCAtMTA1LDk0ICsxMDcsMjggQEAg
dXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCisjZGVmaW5lIFRS
WV9UT19XUkFQX1dJVEhfSU5URVJGQUNFKGludGVyZmFjZU5hbWUpIFwKKyAgICBpZiAoZXZlbnRO
YW1lcygpLmludGVyZmFjZUZvciMjaW50ZXJmYWNlTmFtZSA9PSBkZXNpcmVkSW50ZXJmYWNlKSBc
CisgICAgICAgIHJldHVybiB0b0pTKGV4ZWMsIGdsb2JhbE9iamVjdCwgc3RhdGljX2Nhc3Q8aW50
ZXJmYWNlTmFtZSo+KHRhcmdldCkpOworCiBKU1ZhbHVlIHRvSlMoRXhlY1N0YXRlKiBleGVjLCBK
U0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFdmVudFRhcmdldCogdGFyZ2V0KQogewog
ICAgIGlmICghdGFyZ2V0KQogICAgICAgICByZXR1cm4ganNOdWxsKCk7CiAKLSAgICBpZiAoRXZl
bnRTb3VyY2UqIGV2ZW50U291cmNlID0gdGFyZ2V0LT50b0V2ZW50U291cmNlKCkpCi0gICAgICAg
IHJldHVybiB0b0pTKGV4ZWMsIGdsb2JhbE9iamVjdCwgZXZlbnRTb3VyY2UpOwotCi0jaWYgRU5B
QkxFKFNWRykKLSAgICAvLyBTVkdFbGVtZW50SW5zdGFuY2Ugc3VwcG9ydHMgYm90aCB0b1NWR0Vs
ZW1lbnRJbnN0YW5jZSBhbmQgdG9Ob2RlIHNpbmNlIHNvIG11Y2ggbW91c2UgaGFuZGxpbmcgY29k
ZSBkZXBlbmRzIG9uIHRvTm9kZSByZXR1cm5pbmcgYSB2YWxpZCBub2RlLgotICAgIGlmIChTVkdF
bGVtZW50SW5zdGFuY2UqIGluc3RhbmNlID0gdGFyZ2V0LT50b1NWR0VsZW1lbnRJbnN0YW5jZSgp
KQotICAgICAgICByZXR1cm4gdG9KUyhleGVjLCBnbG9iYWxPYmplY3QsIGluc3RhbmNlKTsKLSNl
bmRpZgotICAgIAotICAgIGlmIChOb2RlKiBub2RlID0gdGFyZ2V0LT50b05vZGUoKSkKLSAgICAg
ICAgcmV0dXJuIHRvSlMoZXhlYywgZ2xvYmFsT2JqZWN0LCBub2RlKTsKLQotICAgIGlmIChET01X
aW5kb3cqIGRvbVdpbmRvdyA9IHRhcmdldC0+dG9ET01XaW5kb3coKSkKLSAgICAgICAgcmV0dXJu
IHRvSlMoZXhlYywgZ2xvYmFsT2JqZWN0LCBkb21XaW5kb3cpOwotCi0gICAgaWYgKFhNTEh0dHBS
ZXF1ZXN0KiB4aHIgPSB0YXJnZXQtPnRvWE1MSHR0cFJlcXVlc3QoKSkKLSAgICAgICAgcmV0dXJu
IHRvSlMoZXhlYywgZ2xvYmFsT2JqZWN0LCB4aHIpOwotCi0gICAgaWYgKFhNTEh0dHBSZXF1ZXN0
VXBsb2FkKiB1cGxvYWQgPSB0YXJnZXQtPnRvWE1MSHR0cFJlcXVlc3RVcGxvYWQoKSkKLSAgICAg
ICAgcmV0dXJuIHRvSlMoZXhlYywgZ2xvYmFsT2JqZWN0LCB1cGxvYWQpOwotCi0gICAgaWYgKERP
TUFwcGxpY2F0aW9uQ2FjaGUqIGNhY2hlID0gdGFyZ2V0LT50b0RPTUFwcGxpY2F0aW9uQ2FjaGUo
KSkKLSAgICAgICAgcmV0dXJuIHRvSlMoZXhlYywgZ2xvYmFsT2JqZWN0LCBjYWNoZSk7Ci0KLSAg
ICBpZiAoTWVzc2FnZVBvcnQqIG1lc3NhZ2VQb3J0ID0gdGFyZ2V0LT50b01lc3NhZ2VQb3J0KCkp
Ci0gICAgICAgIHJldHVybiB0b0pTKGV4ZWMsIGdsb2JhbE9iamVjdCwgbWVzc2FnZVBvcnQpOwor
ICAgIEF0b21pY1N0cmluZyBkZXNpcmVkSW50ZXJmYWNlID0gdGFyZ2V0LT5pbnRlcmZhY2VOYW1l
KCk7CiAKKyAgICAvLyBGSVhNRTogV2h5IGNhbid0IHdlIHVzZSB0b0pTIGZvciB0aGVzZSBjYXNl
cz8KICNpZiBFTkFCTEUoV09SS0VSUykKLSAgICBpZiAoV29ya2VyKiB3b3JrZXIgPSB0YXJnZXQt
PnRvV29ya2VyKCkpCi0gICAgICAgIHJldHVybiB0b0pTKGV4ZWMsIGdsb2JhbE9iamVjdCwgd29y
a2VyKTsKLQotICAgIGlmIChEZWRpY2F0ZWRXb3JrZXJDb250ZXh0KiB3b3JrZXJDb250ZXh0ID0g
dGFyZ2V0LT50b0RlZGljYXRlZFdvcmtlckNvbnRleHQoKSkKLSAgICAgICAgcmV0dXJuIHRvSlNE
T01HbG9iYWxPYmplY3Qod29ya2VyQ29udGV4dCwgZXhlYyk7CisgICAgaWYgKGV2ZW50TmFtZXMo
KS5pbnRlcmZhY2VGb3JEZWRpY2F0ZWRXb3JrZXJDb250ZXh0ID09IGRlc2lyZWRJbnRlcmZhY2Up
CisgICAgICAgIHJldHVybiB0b0pTRE9NR2xvYmFsT2JqZWN0KHN0YXRpY19jYXN0PERlZGljYXRl
ZFdvcmtlckNvbnRleHQqPih0YXJnZXQpLCBleGVjKTsKICNlbmRpZgotCiAjaWYgRU5BQkxFKFNI
QVJFRF9XT1JLRVJTKQotICAgIGlmIChTaGFyZWRXb3JrZXIqIHNoYXJlZFdvcmtlciA9IHRhcmdl
dC0+dG9TaGFyZWRXb3JrZXIoKSkKLSAgICAgICAgcmV0dXJuIHRvSlMoZXhlYywgZ2xvYmFsT2Jq
ZWN0LCBzaGFyZWRXb3JrZXIpOwotCi0gICAgaWYgKFNoYXJlZFdvcmtlckNvbnRleHQqIHdvcmtl
ckNvbnRleHQgPSB0YXJnZXQtPnRvU2hhcmVkV29ya2VyQ29udGV4dCgpKQotICAgICAgICByZXR1
cm4gdG9KU0RPTUdsb2JhbE9iamVjdCh3b3JrZXJDb250ZXh0LCBleGVjKTsKLSNlbmRpZgotCi0j
aWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCi0gICAgaWYgKE5vdGlmaWNhdGlvbiogbm90aWZpY2F0
aW9uID0gdGFyZ2V0LT50b05vdGlmaWNhdGlvbigpKQotICAgICAgICByZXR1cm4gdG9KUyhleGVj
LCBnbG9iYWxPYmplY3QsIG5vdGlmaWNhdGlvbik7Ci0jZW5kaWYKLQotI2lmIEVOQUJMRShJTkRF
WEVEX0RBVEFCQVNFKQotICAgIGlmIChJREJEYXRhYmFzZSogaWRiRGF0YWJhc2UgPSB0YXJnZXQt
PnRvSURCRGF0YWJhc2UoKSkKLSAgICAgICAgcmV0dXJuIHRvSlMoZXhlYywgZ2xvYmFsT2JqZWN0
LCBpZGJEYXRhYmFzZSk7Ci0KLSAgICBpZiAoSURCUmVxdWVzdCogaWRiUmVxdWVzdCA9IHRhcmdl
dC0+dG9JREJSZXF1ZXN0KCkpCi0gICAgICAgIHJldHVybiB0b0pTKGV4ZWMsIGdsb2JhbE9iamVj
dCwgaWRiUmVxdWVzdCk7Ci0KLSAgICBpZiAoSURCVHJhbnNhY3Rpb24qIGlkYlRyYW5zYWN0aW9u
ID0gdGFyZ2V0LT50b0lEQlRyYW5zYWN0aW9uKCkpCi0gICAgICAgIHJldHVybiB0b0pTKGV4ZWMs
IGdsb2JhbE9iamVjdCwgaWRiVHJhbnNhY3Rpb24pOwotI2VuZGlmCi0KLSNpZiBFTkFCTEUoV0VC
X0FVRElPKQotICAgIGlmIChKYXZhU2NyaXB0QXVkaW9Ob2RlKiBqc0F1ZGlvTm9kZSA9IHRhcmdl
dC0+dG9KYXZhU2NyaXB0QXVkaW9Ob2RlKCkpCi0gICAgICAgIHJldHVybiB0b0pTKGV4ZWMsIGds
b2JhbE9iamVjdCwganNBdWRpb05vZGUpOwotICAgIGlmIChBdWRpb0NvbnRleHQqIGF1ZGlvQ29u
dGV4dCA9IHRhcmdldC0+dG9BdWRpb0NvbnRleHQoKSkKLSAgICAgICAgcmV0dXJuIHRvSlMoZXhl
YywgZ2xvYmFsT2JqZWN0LCBhdWRpb0NvbnRleHQpOwotI2VuZGlmCi0KLSNpZiBFTkFCTEUoV0VC
X1NPQ0tFVFMpCi0gICAgaWYgKFdlYlNvY2tldCogd2ViU29ja2V0ID0gdGFyZ2V0LT50b1dlYlNv
Y2tldCgpKQotICAgICAgICByZXR1cm4gdG9KUyhleGVjLCBnbG9iYWxPYmplY3QsIHdlYlNvY2tl
dCk7Ci0jZW5kaWYKLQotI2lmIEVOQUJMRShCTE9CKQotICAgIGlmIChGaWxlUmVhZGVyKiBmaWxl
UmVhZGVyID0gdGFyZ2V0LT50b0ZpbGVSZWFkZXIoKSkKLSAgICAgICAgcmV0dXJuIHRvSlMoZXhl
YywgZ2xvYmFsT2JqZWN0LCBmaWxlUmVhZGVyKTsKKyAgICBpZiAoZXZlbnROYW1lcygpLmludGVy
ZmFjZUZvclNoYXJlZFdvcmtlckNvbnRleHQgPT0gZGVzaXJlZEludGVyZmFjZSkKKyAgICAgICAg
cmV0dXJuIHRvSlNET01HbG9iYWxPYmplY3Qoc3RhdGljX2Nhc3Q8U2hhcmVkV29ya2VyQ29udGV4
dCo+KHRhcmdldCksIGV4ZWMpOwogI2VuZGlmCiAKLSNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQot
ICAgIGlmIChMb2NhbE1lZGlhU3RyZWFtKiBzdHJlYW0gPSB0YXJnZXQtPnRvTG9jYWxNZWRpYVN0
cmVhbSgpKQotICAgICAgICByZXR1cm4gdG9KUyhleGVjLCBnbG9iYWxPYmplY3QsIHN0cmVhbSk7
Ci0KLSAgICBpZiAoTWVkaWFTdHJlYW0qIHN0cmVhbSA9IHRhcmdldC0+dG9NZWRpYVN0cmVhbSgp
KQotICAgICAgICByZXR1cm4gdG9KUyhleGVjLCBnbG9iYWxPYmplY3QsIHN0cmVhbSk7Ci0jZW5k
aWYKKyAgICBET01fRVZFTlRfVEFSR0VUX0lOVEVSRkFDRVNfRk9SX0VBQ0goVFJZX1RPX1dSQVBf
V0lUSF9JTlRFUkZBQ0UpCiAKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4g
anNOdWxsKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRD
b250cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9X
b3JrZXJTY3JpcHRDb250cm9sbGVyLmNwcAkocmV2aXNpb24gOTgxNTEpCisrKyBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtODYsNyArODYsNyBAQCB2b2lkIFdvcmtlclNjcmlwdENvbnRyb2xsZXI6OmluaXRTY3Jp
cHQoCiAgICAgICAgIFN0cm9uZzxKU0RlZGljYXRlZFdvcmtlckNvbnRleHRQcm90b3R5cGU+IGRl
ZGljYXRlZENvbnRleHRQcm90b3R5cGUoKm1fZ2xvYmFsRGF0YSwgSlNEZWRpY2F0ZWRXb3JrZXJD
b250ZXh0UHJvdG90eXBlOjpjcmVhdGUoKm1fZ2xvYmFsRGF0YSwgMCwgZGVkaWNhdGVkQ29udGV4
dFByb3RvdHlwZVN0cnVjdHVyZSkpOwogICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IEpT
RGVkaWNhdGVkV29ya2VyQ29udGV4dDo6Y3JlYXRlU3RydWN0dXJlKCptX2dsb2JhbERhdGEsIDAs
IGRlZGljYXRlZENvbnRleHRQcm90b3R5cGUuZ2V0KCkpOwogCi0gICAgICAgIG1fd29ya2VyQ29u
dGV4dFdyYXBwZXIuc2V0KCptX2dsb2JhbERhdGEsIEpTRGVkaWNhdGVkV29ya2VyQ29udGV4dDo6
Y3JlYXRlKCptX2dsb2JhbERhdGEsIHN0cnVjdHVyZSwgbV93b3JrZXJDb250ZXh0LT50b0RlZGlj
YXRlZFdvcmtlckNvbnRleHQoKSkpOworICAgICAgICBtX3dvcmtlckNvbnRleHRXcmFwcGVyLnNl
dCgqbV9nbG9iYWxEYXRhLCBKU0RlZGljYXRlZFdvcmtlckNvbnRleHQ6OmNyZWF0ZSgqbV9nbG9i
YWxEYXRhLCBzdHJ1Y3R1cmUsIHN0YXRpY19jYXN0PERlZGljYXRlZFdvcmtlckNvbnRleHQqPiht
X3dvcmtlckNvbnRleHQpKSk7CiAgICAgICAgIHdvcmtlckNvbnRleHRQcm90b3R5cGVTdHJ1Y3R1
cmUtPnNldEdsb2JhbE9iamVjdCgqbV9nbG9iYWxEYXRhLCBtX3dvcmtlckNvbnRleHRXcmFwcGVy
LmdldCgpKTsKICAgICAgICAgZGVkaWNhdGVkQ29udGV4dFByb3RvdHlwZVN0cnVjdHVyZS0+c2V0
R2xvYmFsT2JqZWN0KCptX2dsb2JhbERhdGEsIG1fd29ya2VyQ29udGV4dFdyYXBwZXIuZ2V0KCkp
OwogICAgICAgICBBU1NFUlQoc3RydWN0dXJlLT5nbG9iYWxPYmplY3QoKSA9PSBtX3dvcmtlckNv
bnRleHRXcmFwcGVyKTsKQEAgLTEwMCw3ICsxMDAsNyBAQCB2b2lkIFdvcmtlclNjcmlwdENvbnRy
b2xsZXI6OmluaXRTY3JpcHQoCiAgICAgICAgIFN0cm9uZzxKU1NoYXJlZFdvcmtlckNvbnRleHRQ
cm90b3R5cGU+IHNoYXJlZENvbnRleHRQcm90b3R5cGUoKm1fZ2xvYmFsRGF0YSwgSlNTaGFyZWRX
b3JrZXJDb250ZXh0UHJvdG90eXBlOjpjcmVhdGUoKm1fZ2xvYmFsRGF0YSwgMCwgc2hhcmVkQ29u
dGV4dFByb3RvdHlwZVN0cnVjdHVyZSkpOwogICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9
IEpTU2hhcmVkV29ya2VyQ29udGV4dDo6Y3JlYXRlU3RydWN0dXJlKCptX2dsb2JhbERhdGEsIDAs
IHNoYXJlZENvbnRleHRQcm90b3R5cGUuZ2V0KCkpOwogCi0gICAgICAgIG1fd29ya2VyQ29udGV4
dFdyYXBwZXIuc2V0KCptX2dsb2JhbERhdGEsIEpTU2hhcmVkV29ya2VyQ29udGV4dDo6Y3JlYXRl
KCptX2dsb2JhbERhdGEsIHN0cnVjdHVyZSwgbV93b3JrZXJDb250ZXh0LT50b1NoYXJlZFdvcmtl
ckNvbnRleHQoKSkpOworICAgICAgICBtX3dvcmtlckNvbnRleHRXcmFwcGVyLnNldCgqbV9nbG9i
YWxEYXRhLCBKU1NoYXJlZFdvcmtlckNvbnRleHQ6OmNyZWF0ZSgqbV9nbG9iYWxEYXRhLCBzdHJ1
Y3R1cmUsIHN0YXRpY19jYXN0PFNoYXJlZFdvcmtlckNvbnRleHQqPihtX3dvcmtlckNvbnRleHQp
KSk7CiAgICAgICAgIHdvcmtlckNvbnRleHRQcm90b3R5cGUtPnN0cnVjdHVyZSgpLT5zZXRHbG9i
YWxPYmplY3QoKm1fZ2xvYmFsRGF0YSwgbV93b3JrZXJDb250ZXh0V3JhcHBlci5nZXQoKSk7CiAg
ICAgICAgIHNoYXJlZENvbnRleHRQcm90b3R5cGUtPnN0cnVjdHVyZSgpLT5zZXRHbG9iYWxPYmpl
Y3QoKm1fZ2xvYmFsRGF0YSwgbV93b3JrZXJDb250ZXh0V3JhcHBlci5nZXQoKSk7CiAjZW5kaWYK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NLm1tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NLm1tCShyZXZpc2lvbiA5ODE1MSkKKysr
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0z
NDMsMTEgKzM0Myw2IEBAIGlkIDxET01FdmVudFRhcmdldD4ga2l0KFdlYkNvcmU6OkV2ZW50VGEK
ICAgICBpZiAoV2ViQ29yZTo6Tm9kZSogbm9kZSA9IGV2ZW50VGFyZ2V0LT50b05vZGUoKSkKICAg
ICAgICAgcmV0dXJuIGtpdChub2RlKTsKIAotI2lmIEVOQUJMRShTVkdfRE9NX09CSkNfQklORElO
R1MpCi0gICAgaWYgKFdlYkNvcmU6OlNWR0VsZW1lbnRJbnN0YW5jZSogc3ZnRWxlbWVudEluc3Rh
bmNlID0gZXZlbnRUYXJnZXQtPnRvU1ZHRWxlbWVudEluc3RhbmNlKCkpCi0gICAgICAgIHJldHVy
biBraXQoc3ZnRWxlbWVudEluc3RhbmNlKTsKLSNlbmRpZgotCiAgICAgLy8gV2UgZG9uJ3QgaGF2
ZSBhbiBPYmpDIGJpbmRpbmcgZm9yIFhNTEh0dHBSZXF1ZXN0LgogCiAgICAgcmV0dXJuIG5pbDsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XcmFwcGVyLmNwcAkocmV2
aXNpb24gOTgxNTEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdyYXBwZXIu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw2ICszNSw4IEBACiAjaW5jbHVkZSAiQ1NTTXV0YWJs
ZVN0eWxlRGVjbGFyYXRpb24uaCIKICNpbmNsdWRlICJET01EYXRhU3RvcmUuaCIKICNpbmNsdWRl
ICJEb2N1bWVudExvYWRlci5oIgorI2luY2x1ZGUgIkV2ZW50VGFyZ2V0SGVhZGVycy5oIgorI2lu
Y2x1ZGUgIkV2ZW50VGFyZ2V0SW50ZXJmYWNlcy5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyQ2xp
ZW50LmgiCiAjaW5jbHVkZSAiTm90aWZpY2F0aW9uLmgiCiAjaW5jbHVkZSAiVjhBYnN0cmFjdEV2
ZW50TGlzdGVuZXIuaCIKQEAgLTMzMSwxMTQgKzMzMywyMCBAQCB2ODo6SGFuZGxlPHY4OjpPYmpl
Y3Q+IFY4RE9NV3JhcHBlcjo6Z2V0CiAgICAgcmV0dXJuIGRvbU5vZGVNYXAuZ2V0KG5vZGUpOwog
fQogCisjZGVmaW5lIFRSWV9UT19XUkFQX1dJVEhfSU5URVJGQUNFKGludGVyZmFjZU5hbWUpIFwK
KyAgICBpZiAoZXZlbnROYW1lcygpLmludGVyZmFjZUZvciMjaW50ZXJmYWNlTmFtZSA9PSBkZXNp
cmVkSW50ZXJmYWNlKSBcCisgICAgICAgIHJldHVybiB0b1Y4KHN0YXRpY19jYXN0PGludGVyZmFj
ZU5hbWUqPih0YXJnZXQpKTsKKwogLy8gQSBKUyBvYmplY3Qgb2YgdHlwZSBFdmVudFRhcmdldCBp
cyBsaW1pdGVkIHRvIGEgc21hbGwgbnVtYmVyIG9mIHBvc3NpYmxlIGNsYXNzZXMuCi0vLyBDaGVj
ayBFdmVudFRhcmdldC5oIGZvciBuZXcgdHlwZSBjb252ZXJzaW9uIG1ldGhvZHMKIHY4OjpIYW5k
bGU8djg6OlZhbHVlPiBWOERPTVdyYXBwZXI6OmNvbnZlcnRFdmVudFRhcmdldFRvVjhPYmplY3Qo
RXZlbnRUYXJnZXQqIHRhcmdldCkKIHsKICAgICBpZiAoIXRhcmdldCkKICAgICAgICAgcmV0dXJu
IHY4OjpOdWxsKCk7CiAKLSNpZiBFTkFCTEUoU1ZHKQotICAgIGlmIChTVkdFbGVtZW50SW5zdGFu
Y2UqIGluc3RhbmNlID0gdGFyZ2V0LT50b1NWR0VsZW1lbnRJbnN0YW5jZSgpKQotICAgICAgICBy
ZXR1cm4gdG9WOChpbnN0YW5jZSk7Ci0jZW5kaWYKLQotI2lmIEVOQUJMRShXT1JLRVJTKQotICAg
IGlmIChXb3JrZXIqIHdvcmtlciA9IHRhcmdldC0+dG9Xb3JrZXIoKSkKLSAgICAgICAgcmV0dXJu
IHRvVjgod29ya2VyKTsKLQotICAgIGlmIChEZWRpY2F0ZWRXb3JrZXJDb250ZXh0KiB3b3JrZXJD
b250ZXh0ID0gdGFyZ2V0LT50b0RlZGljYXRlZFdvcmtlckNvbnRleHQoKSkKLSAgICAgICAgcmV0
dXJuIHRvVjgod29ya2VyQ29udGV4dCk7Ci0jZW5kaWYgLy8gV09SS0VSUwotCi0jaWYgRU5BQkxF
KFNIQVJFRF9XT1JLRVJTKQotICAgIGlmIChTaGFyZWRXb3JrZXIqIHNoYXJlZFdvcmtlciA9IHRh
cmdldC0+dG9TaGFyZWRXb3JrZXIoKSkKLSAgICAgICAgcmV0dXJuIHRvVjgoc2hhcmVkV29ya2Vy
KTsKLQotICAgIGlmIChTaGFyZWRXb3JrZXJDb250ZXh0KiBzaGFyZWRXb3JrZXJDb250ZXh0ID0g
dGFyZ2V0LT50b1NoYXJlZFdvcmtlckNvbnRleHQoKSkKLSAgICAgICAgcmV0dXJuIHRvVjgoc2hh
cmVkV29ya2VyQ29udGV4dCk7Ci0jZW5kaWYgLy8gU0hBUkVEX1dPUktFUlMKLQotI2lmIEVOQUJM
RShOT1RJRklDQVRJT05TKQotICAgIGlmIChOb3RpZmljYXRpb24qIG5vdGlmaWNhdGlvbiA9IHRh
cmdldC0+dG9Ob3RpZmljYXRpb24oKSkKLSAgICAgICAgcmV0dXJuIHRvVjgobm90aWZpY2F0aW9u
KTsKLSNlbmRpZgotCi0jaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCi0gICAgaWYgKElEQkRh
dGFiYXNlKiBpZGJEYXRhYmFzZSA9IHRhcmdldC0+dG9JREJEYXRhYmFzZSgpKQotICAgICAgICBy
ZXR1cm4gdG9WOChpZGJEYXRhYmFzZSk7Ci0gICAgaWYgKElEQlJlcXVlc3QqIGlkYlJlcXVlc3Qg
PSB0YXJnZXQtPnRvSURCUmVxdWVzdCgpKQotICAgICAgICByZXR1cm4gdG9WOChpZGJSZXF1ZXN0
KTsKLSAgICBpZiAoSURCVHJhbnNhY3Rpb24qIGlkYlRyYW5zYWN0aW9uID0gdGFyZ2V0LT50b0lE
QlRyYW5zYWN0aW9uKCkpCi0gICAgICAgIHJldHVybiB0b1Y4KGlkYlRyYW5zYWN0aW9uKTsKLSNl
bmRpZgotCi0jaWYgRU5BQkxFKFdFQl9TT0NLRVRTKQotICAgIGlmIChXZWJTb2NrZXQqIHdlYlNv
Y2tldCA9IHRhcmdldC0+dG9XZWJTb2NrZXQoKSkKLSAgICAgICAgcmV0dXJuIHRvVjgod2ViU29j
a2V0KTsKLSNlbmRpZgotCi0gICAgaWYgKE5vZGUqIG5vZGUgPSB0YXJnZXQtPnRvTm9kZSgpKQot
ICAgICAgICByZXR1cm4gdG9WOChub2RlKTsKLQotICAgIGlmIChET01XaW5kb3cqIGRvbVdpbmRv
dyA9IHRhcmdldC0+dG9ET01XaW5kb3coKSkKLSAgICAgICAgcmV0dXJuIHRvVjgoZG9tV2luZG93
KTsKLQotICAgIC8vIFhNTEh0dHBSZXF1ZXN0IGlzIGNyZWF0ZWQgd2l0aGluIGl0cyBKUyBjb3Vu
dGVycGFydC4KLSAgICBpZiAoWE1MSHR0cFJlcXVlc3QqIHhtbEh0dHBSZXF1ZXN0ID0gdGFyZ2V0
LT50b1hNTEh0dHBSZXF1ZXN0KCkpIHsKLSAgICAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3
cmFwcGVyID0gZ2V0QWN0aXZlRE9NT2JqZWN0TWFwKCkuZ2V0KHhtbEh0dHBSZXF1ZXN0KTsKLSAg
ICAgICAgQVNTRVJUKCF3cmFwcGVyLklzRW1wdHkoKSk7Ci0gICAgICAgIHJldHVybiB3cmFwcGVy
OwotICAgIH0KLQotICAgIC8vIE1lc3NhZ2VQb3J0IGlzIGNyZWF0ZWQgd2l0aGluIGl0cyBKUyBj
b3VudGVycGFydAotICAgIGlmIChNZXNzYWdlUG9ydCogcG9ydCA9IHRhcmdldC0+dG9NZXNzYWdl
UG9ydCgpKSB7Ci0gICAgICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlciA9IGdldEFj
dGl2ZURPTU9iamVjdE1hcCgpLmdldChwb3J0KTsKLSAgICAgICAgQVNTRVJUKCF3cmFwcGVyLklz
RW1wdHkoKSk7Ci0gICAgICAgIHJldHVybiB3cmFwcGVyOwotICAgIH0KLQotICAgIGlmIChYTUxI
dHRwUmVxdWVzdFVwbG9hZCogdXBsb2FkID0gdGFyZ2V0LT50b1hNTEh0dHBSZXF1ZXN0VXBsb2Fk
KCkpIHsKLSAgICAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0gZ2V0RE9NT2Jq
ZWN0TWFwKCkuZ2V0KHVwbG9hZCk7Ci0gICAgICAgIEFTU0VSVCghd3JhcHBlci5Jc0VtcHR5KCkp
OwotICAgICAgICByZXR1cm4gd3JhcHBlcjsKLSAgICB9Ci0KLSAgICBpZiAoRE9NQXBwbGljYXRp
b25DYWNoZSogZG9tQXBwQ2FjaGUgPSB0YXJnZXQtPnRvRE9NQXBwbGljYXRpb25DYWNoZSgpKQot
ICAgICAgICByZXR1cm4gdG9WOChkb21BcHBDYWNoZSk7Ci0KLSAgICBpZiAoRXZlbnRTb3VyY2Uq
IGV2ZW50U291cmNlID0gdGFyZ2V0LT50b0V2ZW50U291cmNlKCkpCi0gICAgICAgIHJldHVybiB0
b1Y4KGV2ZW50U291cmNlKTsKLQotI2lmIEVOQUJMRShCTE9CKQotICAgIGlmIChGaWxlUmVhZGVy
KiBmaWxlUmVhZGVyID0gdGFyZ2V0LT50b0ZpbGVSZWFkZXIoKSkKLSAgICAgICAgcmV0dXJuIHRv
VjgoZmlsZVJlYWRlcik7Ci0jZW5kaWYKLQotI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKLSAgICBp
ZiAoRmlsZVdyaXRlciogZmlsZVdyaXRlciA9IHRhcmdldC0+dG9GaWxlV3JpdGVyKCkpCi0gICAg
ICAgIHJldHVybiB0b1Y4KGZpbGVXcml0ZXIpOwotI2VuZGlmCi0KLSNpZiBFTkFCTEUoV0VCX0FV
RElPKQotICAgIGlmIChKYXZhU2NyaXB0QXVkaW9Ob2RlKiBqc0F1ZGlvTm9kZSA9IHRhcmdldC0+
dG9KYXZhU2NyaXB0QXVkaW9Ob2RlKCkpCi0gICAgICAgIHJldHVybiB0b1Y4KGpzQXVkaW9Ob2Rl
KTsKLSAgICBpZiAoQXVkaW9Db250ZXh0KiBhdWRpb0NvbnRleHQgPSB0YXJnZXQtPnRvQXVkaW9D
b250ZXh0KCkpCi0gICAgICAgIHJldHVybiB0b1Y4KGF1ZGlvQ29udGV4dCk7Ci0jZW5kaWYgICAg
Ci0KLSNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQotICAgIGlmIChMb2NhbE1lZGlhU3RyZWFtKiBz
dHJlYW0gPSB0YXJnZXQtPnRvTG9jYWxNZWRpYVN0cmVhbSgpKQotICAgICAgICByZXR1cm4gdG9W
OChzdHJlYW0pOwotCi0gICAgaWYgKE1lZGlhU3RyZWFtKiBzdHJlYW0gPSB0YXJnZXQtPnRvTWVk
aWFTdHJlYW0oKSkKLSAgICAgICAgcmV0dXJuIHRvVjgoc3RyZWFtKTsKLQotICAgIGlmIChQZWVy
Q29ubmVjdGlvbiogcGVlckNvbm5lY3Rpb24gPSB0YXJnZXQtPnRvUGVlckNvbm5lY3Rpb24oKSkK
LSAgICAgICAgcmV0dXJuIHRvVjgocGVlckNvbm5lY3Rpb24pOwotI2VuZGlmCisgICAgQXRvbWlj
U3RyaW5nIGRlc2lyZWRJbnRlcmZhY2UgPSB0YXJnZXQtPmludGVyZmFjZU5hbWUoKTsKKyAgICBE
T01fRVZFTlRfVEFSR0VUX0lOVEVSRkFDRVNfRk9SX0VBQ0goVFJZX1RPX1dSQVBfV0lUSF9JTlRF
UkZBQ0UpCiAKLSAgICBBU1NFUlQoMCk7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAg
cmV0dXJuIG5vdEhhbmRsZWRCeUludGVyY2VwdG9yKCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2RvbS9FdmVudE5hbWVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20v
RXZlbnROYW1lcy5jcHAJKHJldmlzaW9uIDk4MTUxKQorKysgU291cmNlL1dlYkNvcmUvZG9tL0V2
ZW50TmFtZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw2ICszMyw3IEBAIEV2ZW50TmFtZXM6
OkV2ZW50TmFtZXMoKQogICAgIDogZHVtbXkoMCkKIERPTV9FVkVOVF9OQU1FU19GT1JfRUFDSChJ
TklUSUFMSVpFX0VWRU5UX05BTUUpCiBET01fRVZFTlRfSU5URVJGQUNFU19GT1JfRUFDSChJTklU
SUFMSVpFX0VWRU5UX0lOVEVSRkFDRSkKK0RPTV9FVkVOVF9UQVJHRVRfSU5URVJGQUNFU19GT1Jf
RUFDSChJTklUSUFMSVpFX0VWRU5UX0lOVEVSRkFDRSkKIHsKIH0KIApJbmRleDogU291cmNlL1dl
YkNvcmUvZG9tL0V2ZW50TmFtZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20v
RXZlbnROYW1lcy5oCShyZXZpc2lvbiA5ODE1MSkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9FdmVu
dE5hbWVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTIzLDYgKzIzLDcgQEAKICNkZWZpbmUgRXZlbnRO
YW1lc19oCiAKICNpbmNsdWRlICJFdmVudEludGVyZmFjZXMuaCIKKyNpbmNsdWRlICJFdmVudFRh
cmdldEludGVyZmFjZXMuaCIKICNpbmNsdWRlICJUaHJlYWRHbG9iYWxEYXRhLmgiCiAjaW5jbHVk
ZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nLmg+CiAKQEAgLTIwNSw2ICsyMDYsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKICAgICAgICAgI2RlZmluZSBET01fRVZFTlRfSU5URVJGQUNFX0RFQ0xB
UkUobmFtZSkgQXRvbWljU3RyaW5nIGludGVyZmFjZUZvciMjbmFtZTsKICAgICAgICAgRE9NX0VW
RU5UX0lOVEVSRkFDRVNfRk9SX0VBQ0goRE9NX0VWRU5UX0lOVEVSRkFDRV9ERUNMQVJFKQorICAg
ICAgICBET01fRVZFTlRfVEFSR0VUX0lOVEVSRkFDRVNfRk9SX0VBQ0goRE9NX0VWRU5UX0lOVEVS
RkFDRV9ERUNMQVJFKQogICAgICAgICAjdW5kZWYgRE9NX0VWRU5UX0lOVEVSRkFDRV9ERUNMQVJF
CiAgICAgfTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuY3BwCShyZXZpc2lvbiA5
ODE1MSkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTgwLDExICs4MCw2IEBAIEV2ZW50VGFyZ2V0Ojp+RXZlbnRUYXJnZXQoKQogewogfQog
Ci1FdmVudFNvdXJjZSogRXZlbnRUYXJnZXQ6OnRvRXZlbnRTb3VyY2UoKQotewotICAgIHJldHVy
biAwOwotfQotCiBOb2RlKiBFdmVudFRhcmdldDo6dG9Ob2RlKCkKIHsKICAgICByZXR1cm4gMDsK
QEAgLTk1LDEzMSArOTAsNiBAQCBET01XaW5kb3cqIEV2ZW50VGFyZ2V0Ojp0b0RPTVdpbmRvdygp
CiAgICAgcmV0dXJuIDA7CiB9CiAKLVhNTEh0dHBSZXF1ZXN0KiBFdmVudFRhcmdldDo6dG9YTUxI
dHRwUmVxdWVzdCgpCi17Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLVhNTEh0dHBSZXF1ZXN0VXBsb2Fk
KiBFdmVudFRhcmdldDo6dG9YTUxIdHRwUmVxdWVzdFVwbG9hZCgpCi17Ci0gICAgcmV0dXJuIDA7
Ci19Ci0KLURPTUFwcGxpY2F0aW9uQ2FjaGUqIEV2ZW50VGFyZ2V0Ojp0b0RPTUFwcGxpY2F0aW9u
Q2FjaGUoKQotewotICAgIHJldHVybiAwOwotfQotCi0jaWYgRU5BQkxFKFNWRykKLVNWR0VsZW1l
bnRJbnN0YW5jZSogRXZlbnRUYXJnZXQ6OnRvU1ZHRWxlbWVudEluc3RhbmNlKCkKLXsKLSAgICBy
ZXR1cm4gMDsKLX0KLSNlbmRpZgotCi0jaWYgRU5BQkxFKFdFQl9BVURJTykKLUF1ZGlvQ29udGV4
dCogRXZlbnRUYXJnZXQ6OnRvQXVkaW9Db250ZXh0KCkKLXsKLSAgICByZXR1cm4gMDsKLX0KLQot
SmF2YVNjcmlwdEF1ZGlvTm9kZSogRXZlbnRUYXJnZXQ6OnRvSmF2YVNjcmlwdEF1ZGlvTm9kZSgp
Ci17Ci0gICAgcmV0dXJuIDA7Ci19Ci0jZW5kaWYKLQotI2lmIEVOQUJMRShXRUJfU09DS0VUUykK
LVdlYlNvY2tldCogRXZlbnRUYXJnZXQ6OnRvV2ViU29ja2V0KCkKLXsKLSAgICByZXR1cm4gMDsK
LX0KLSNlbmRpZgotCi1NZXNzYWdlUG9ydCogRXZlbnRUYXJnZXQ6OnRvTWVzc2FnZVBvcnQoKQot
ewotICAgIHJldHVybiAwOwotfQotCi0jaWYgRU5BQkxFKFdPUktFUlMpCi1Xb3JrZXIqIEV2ZW50
VGFyZ2V0Ojp0b1dvcmtlcigpCi17Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLURlZGljYXRlZFdvcmtl
ckNvbnRleHQqIEV2ZW50VGFyZ2V0Ojp0b0RlZGljYXRlZFdvcmtlckNvbnRleHQoKQotewotICAg
IHJldHVybiAwOwotfQotI2VuZGlmCi0KLSNpZiBFTkFCTEUoU0hBUkVEX1dPUktFUlMpCi1TaGFy
ZWRXb3JrZXIqIEV2ZW50VGFyZ2V0Ojp0b1NoYXJlZFdvcmtlcigpCi17Ci0gICAgcmV0dXJuIDA7
Ci19Ci1TaGFyZWRXb3JrZXJDb250ZXh0KiBFdmVudFRhcmdldDo6dG9TaGFyZWRXb3JrZXJDb250
ZXh0KCkKLXsKLSAgICByZXR1cm4gMDsKLX0KLSNlbmRpZgotCi0jaWYgRU5BQkxFKE5PVElGSUNB
VElPTlMpCi1Ob3RpZmljYXRpb24qIEV2ZW50VGFyZ2V0Ojp0b05vdGlmaWNhdGlvbigpCi17Ci0g
ICAgcmV0dXJuIDA7Ci19Ci0jZW5kaWYKLQotI2lmIEVOQUJMRShCTE9CKQotRmlsZVJlYWRlciog
RXZlbnRUYXJnZXQ6OnRvRmlsZVJlYWRlcigpCi17Ci0gICAgcmV0dXJuIDA7Ci19Ci0jZW5kaWYK
LSNpZiBFTkFCTEUoRklMRV9TWVNURU0pCi1GaWxlV3JpdGVyKiBFdmVudFRhcmdldDo6dG9GaWxl
V3JpdGVyKCkKLXsKLSAgICByZXR1cm4gMDsKLX0KLSNlbmRpZgotCi0jaWYgRU5BQkxFKElOREVY
RURfREFUQUJBU0UpCi1JREJEYXRhYmFzZSogRXZlbnRUYXJnZXQ6OnRvSURCRGF0YWJhc2UoKQot
ewotICAgIHJldHVybiAwOwotfQotSURCUmVxdWVzdCogRXZlbnRUYXJnZXQ6OnRvSURCUmVxdWVz
dCgpCi17Ci0gICAgcmV0dXJuIDA7Ci19Ci1JREJUcmFuc2FjdGlvbiogRXZlbnRUYXJnZXQ6OnRv
SURCVHJhbnNhY3Rpb24oKQotewotICAgIHJldHVybiAwOwotfQotSURCVmVyc2lvbkNoYW5nZVJl
cXVlc3QqIEV2ZW50VGFyZ2V0Ojp0b0lEQlZlcnNpb25DaGFuZ2VSZXF1ZXN0KCkKLXsKLSAgICBy
ZXR1cm4gMDsKLX0KLSNlbmRpZgotCi0jaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKLU1lZGlhU3Ry
ZWFtKiBFdmVudFRhcmdldDo6dG9NZWRpYVN0cmVhbSgpCi17Ci0gICAgcmV0dXJuIDA7Ci19Ci0K
LUxvY2FsTWVkaWFTdHJlYW0qIEV2ZW50VGFyZ2V0Ojp0b0xvY2FsTWVkaWFTdHJlYW0oKQotewot
ICAgIHJldHVybiAwOwotfQotCi1QZWVyQ29ubmVjdGlvbiogRXZlbnRUYXJnZXQ6OnRvUGVlckNv
bm5lY3Rpb24oKQotewotICAgIHJldHVybiAwOwotfQotI2VuZGlmCi0KIGJvb2wgRXZlbnRUYXJn
ZXQ6OmFkZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFBhc3NS
ZWZQdHI8RXZlbnRMaXN0ZW5lcj4gbGlzdGVuZXIsIGJvb2wgdXNlQ2FwdHVyZSkKIHsKICAgICBF
dmVudFRhcmdldERhdGEqIGQgPSBlbnN1cmVFdmVudFRhcmdldERhdGEoKTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2RvbS9FdmVudFRhcmdldC5oCShyZXZpc2lvbiA5ODE1MSkKKysrIFNvdXJjZS9XZWJDb3JlL2Rv
bS9FdmVudFRhcmdldC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDAsNTggKzEwMCwxMSBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgcmVmKCkgeyByZWZFdmVudFRhcmdldCgpOyB9
CiAgICAgICAgIHZvaWQgZGVyZWYoKSB7IGRlcmVmRXZlbnRUYXJnZXQoKTsgfQogCi0gICAgICAg
IHZpcnR1YWwgRXZlbnRTb3VyY2UqIHRvRXZlbnRTb3VyY2UoKTsKLSAgICAgICAgdmlydHVhbCBN
ZXNzYWdlUG9ydCogdG9NZXNzYWdlUG9ydCgpOworICAgICAgICB2aXJ0dWFsIGNvbnN0IEF0b21p
Y1N0cmluZyYgaW50ZXJmYWNlTmFtZSgpIGNvbnN0ID0gMDsKKyAgICAgICAgdmlydHVhbCBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QgPSAwOwor
CiAgICAgICAgIHZpcnR1YWwgTm9kZSogdG9Ob2RlKCk7CiAgICAgICAgIHZpcnR1YWwgRE9NV2lu
ZG93KiB0b0RPTVdpbmRvdygpOwotICAgICAgICB2aXJ0dWFsIFhNTEh0dHBSZXF1ZXN0KiB0b1hN
TEh0dHBSZXF1ZXN0KCk7Ci0gICAgICAgIHZpcnR1YWwgWE1MSHR0cFJlcXVlc3RVcGxvYWQqIHRv
WE1MSHR0cFJlcXVlc3RVcGxvYWQoKTsKLSAgICAgICAgdmlydHVhbCBET01BcHBsaWNhdGlvbkNh
Y2hlKiB0b0RPTUFwcGxpY2F0aW9uQ2FjaGUoKTsKLSNpZiBFTkFCTEUoU1ZHKQotICAgICAgICB2
aXJ0dWFsIFNWR0VsZW1lbnRJbnN0YW5jZSogdG9TVkdFbGVtZW50SW5zdGFuY2UoKTsKLSNlbmRp
ZgotI2lmIEVOQUJMRShXT1JLRVJTKQotICAgICAgICB2aXJ0dWFsIFdvcmtlciogdG9Xb3JrZXIo
KTsKLSAgICAgICAgdmlydHVhbCBEZWRpY2F0ZWRXb3JrZXJDb250ZXh0KiB0b0RlZGljYXRlZFdv
cmtlckNvbnRleHQoKTsKLSNlbmRpZgotI2lmIEVOQUJMRShTSEFSRURfV09SS0VSUykKLSAgICAg
ICAgdmlydHVhbCBTaGFyZWRXb3JrZXIqIHRvU2hhcmVkV29ya2VyKCk7Ci0gICAgICAgIHZpcnR1
YWwgU2hhcmVkV29ya2VyQ29udGV4dCogdG9TaGFyZWRXb3JrZXJDb250ZXh0KCk7Ci0jZW5kaWYK
LQotI2lmIEVOQUJMRShXRUJfQVVESU8pCi0gICAgICAgIHZpcnR1YWwgQXVkaW9Db250ZXh0KiB0
b0F1ZGlvQ29udGV4dCgpOwotICAgICAgICB2aXJ0dWFsIEphdmFTY3JpcHRBdWRpb05vZGUqIHRv
SmF2YVNjcmlwdEF1ZGlvTm9kZSgpOwotI2VuZGlmCi0KLSNpZiBFTkFCTEUoV0VCX1NPQ0tFVFMp
Ci0gICAgICAgIHZpcnR1YWwgV2ViU29ja2V0KiB0b1dlYlNvY2tldCgpOwotI2VuZGlmCi0KLSNp
ZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKLSAgICAgICAgdmlydHVhbCBOb3RpZmljYXRpb24qIHRv
Tm90aWZpY2F0aW9uKCk7Ci0jZW5kaWYKLSNpZiBFTkFCTEUoQkxPQikKLSAgICAgICAgdmlydHVh
bCBGaWxlUmVhZGVyKiB0b0ZpbGVSZWFkZXIoKTsKLSNlbmRpZgotI2lmIEVOQUJMRShGSUxFX1NZ
U1RFTSkKLSAgICAgICAgdmlydHVhbCBGaWxlV3JpdGVyKiB0b0ZpbGVXcml0ZXIoKTsKLSNlbmRp
ZgotCi0jaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCi0gICAgICAgIHZpcnR1YWwgSURCRGF0
YWJhc2UqIHRvSURCRGF0YWJhc2UoKTsKLSAgICAgICAgdmlydHVhbCBJREJSZXF1ZXN0KiB0b0lE
QlJlcXVlc3QoKTsKLSAgICAgICAgdmlydHVhbCBJREJUcmFuc2FjdGlvbiogdG9JREJUcmFuc2Fj
dGlvbigpOwotICAgICAgICB2aXJ0dWFsIElEQlZlcnNpb25DaGFuZ2VSZXF1ZXN0KiB0b0lEQlZl
cnNpb25DaGFuZ2VSZXF1ZXN0KCk7Ci0jZW5kaWYKLQotI2lmIEVOQUJMRShNRURJQV9TVFJFQU0p
Ci0gICAgICAgIHZpcnR1YWwgTWVkaWFTdHJlYW0qIHRvTWVkaWFTdHJlYW0oKTsKLSAgICAgICAg
dmlydHVhbCBMb2NhbE1lZGlhU3RyZWFtKiB0b0xvY2FsTWVkaWFTdHJlYW0oKTsKLSAgICAgICAg
dmlydHVhbCBQZWVyQ29ubmVjdGlvbiogdG9QZWVyQ29ubmVjdGlvbigpOwotI2VuZGlmCi0KLSAg
ICAgICAgdmlydHVhbCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250
ZXh0KCkgY29uc3QgPSAwOwogCiAgICAgICAgIHZpcnR1YWwgYm9vbCBhZGRFdmVudExpc3RlbmVy
KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+
LCBib29sIHVzZUNhcHR1cmUpOwogICAgICAgICB2aXJ0dWFsIGJvb2wgcmVtb3ZlRXZlbnRMaXN0
ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgRXZlbnRMaXN0ZW5lciosIGJvb2wg
dXNlQ2FwdHVyZSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXRGYWN0b3J5
LmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldEZhY3Rvcnku
aW4JKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXRGYWN0b3J5
LmluCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDI3IEBACituYW1lc3BhY2U9IkV2ZW50VGFyZ2V0
IgorCitFdmVudFNvdXJjZQorTWVzc2FnZVBvcnQKK05vZGUKK0RPTVdpbmRvdworWE1MSHR0cFJl
cXVlc3QKK1hNTEh0dHBSZXF1ZXN0VXBsb2FkCitET01BcHBsaWNhdGlvbkNhY2hlCitTVkdFbGVt
ZW50SW5zdGFuY2UgY29uZGl0aW9uYWw9U1ZHCitXb3JrZXIgY29uZGl0aW9uYWw9V09SS0VSUwor
RGVkaWNhdGVkV29ya2VyQ29udGV4dCBjb25kaXRpb25hbD1XT1JLRVJTCitTaGFyZWRXb3JrZXIg
Y29uZGl0aW9uYWw9U0hBUkVEX1dPUktFUlMKK1NoYXJlZFdvcmtlckNvbnRleHQgY29uZGl0aW9u
YWw9U0hBUkVEX1dPUktFUlMKK0F1ZGlvQ29udGV4dCBjb25kaXRpb25hbD1XRUJfQVVESU8KK0ph
dmFTY3JpcHRBdWRpb05vZGUgY29uZGl0aW9uYWw9V0VCX0FVRElPCitXZWJTb2NrZXQgY29uZGl0
aW9uYWw9V0VCX1NPQ0tFVFMKK05vdGlmaWNhdGlvbiBjb25kaXRpb25hbD1OT1RJRklDQVRJT05T
CitGaWxlUmVhZGVyIGNvbmRpdGlvbmFsPUJMT0IKK0ZpbGVXcml0ZXIgY29uZGl0aW9uYWw9RklM
RV9TWVNURU0KK0lEQkRhdGFiYXNlIGNvbmRpdGlvbmFsPUlOREVYRURfREFUQUJBU0UKK0lEQlJl
cXVlc3QgY29uZGl0aW9uYWw9SU5ERVhFRF9EQVRBQkFTRQorSURCVHJhbnNhY3Rpb24gY29uZGl0
aW9uYWw9SU5ERVhFRF9EQVRBQkFTRQorSURCVmVyc2lvbkNoYW5nZVJlcXVlc3QgY29uZGl0aW9u
YWw9SU5ERVhFRF9EQVRBQkFTRQorTWVkaWFTdHJlYW0gY29uZGl0aW9uYWw9TUVESUFfU1RSRUFN
CitMb2NhbE1lZGlhU3RyZWFtIGNvbmRpdGlvbmFsPU1FRElBX1NUUkVBTQorUGVlckNvbm5lY3Rp
b24gY29uZGl0aW9uYWw9TUVESUFfU1RSRUFNCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vTG9j
YWxNZWRpYVN0cmVhbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0xvY2Fs
TWVkaWFTdHJlYW0uY3BwCShyZXZpc2lvbiA5ODE1MSkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9M
b2NhbE1lZGlhU3RyZWFtLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgsNiArMjgsNyBAQAogCiAj
aWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKIAorI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKICNpbmNs
dWRlICJVVUlELmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTY1LDkgKzY2LDkgQEAgTG9j
YWxNZWRpYVN0cmVhbTo6fkxvY2FsTWVkaWFTdHJlYW0oKQogewogfQogCi1Mb2NhbE1lZGlhU3Ry
ZWFtKiBMb2NhbE1lZGlhU3RyZWFtOjp0b0xvY2FsTWVkaWFTdHJlYW0oKQorY29uc3QgQXRvbWlj
U3RyaW5nJiBMb2NhbE1lZGlhU3RyZWFtOjppbnRlcmZhY2VOYW1lKCkgY29uc3QKIHsKLSAgICBy
ZXR1cm4gdGhpczsKKyAgICByZXR1cm4gZXZlbnROYW1lcygpLmludGVyZmFjZUZvckxvY2FsTWVk
aWFTdHJlYW07CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2RvbS9Mb2NhbE1lZGlhU3RyZWFtLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
ZG9tL0xvY2FsTWVkaWFTdHJlYW0uaAkocmV2aXNpb24gOTgxNTEpCisrKyBTb3VyY2UvV2ViQ29y
ZS9kb20vTG9jYWxNZWRpYVN0cmVhbS5oCSh3b3JraW5nIGNvcHkpCkBAIC00MCw4ICs0MCw4IEBA
IHB1YmxpYzoKIAogICAgIHZvaWQgc3RvcCgpOwogCi0gICAgLy8gRXZlbnRUYXJnZXQuCi0gICAg
dmlydHVhbCBMb2NhbE1lZGlhU3RyZWFtKiB0b0xvY2FsTWVkaWFTdHJlYW0oKTsKKyAgICAvLyBF
dmVudFRhcmdldAorICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBpbnRlcmZhY2VOYW1l
KCkgY29uc3Q7CiAKIHByaXZhdGU6CiAgICAgTG9jYWxNZWRpYVN0cmVhbShTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiwgY29uc3QgTWVkaWFTdHJlYW1Tb3VyY2VWZWN0b3ImKTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2RvbS9NZWRpYVN0cmVhbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvZG9tL01lZGlhU3RyZWFtLmNwcAkocmV2aXNpb24gOTgxNTEpCisrKyBTb3VyY2UvV2ViQ29y
ZS9kb20vTWVkaWFTdHJlYW0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NCwxMSArNjQsNiBAQCBN
ZWRpYVN0cmVhbTo6UmVhZHlTdGF0ZSBNZWRpYVN0cmVhbTo6cmVhCiAgICAgcmV0dXJuIG1fZGVz
Y3JpcHRvci0+ZW5kZWQoKSA/IEVOREVEIDogTElWRTsKIH0KIAotTWVkaWFTdHJlYW0qIE1lZGlh
U3RyZWFtOjp0b01lZGlhU3RyZWFtKCkKLXsKLSAgICByZXR1cm4gdGhpczsKLX0KLQogdm9pZCBN
ZWRpYVN0cmVhbTo6c3RyZWFtRW5kZWQoKQogewogICAgIGlmIChyZWFkeVN0YXRlKCkgPT0gRU5E
RUQpCkBAIC03OSw2ICs3NCwxMSBAQCB2b2lkIE1lZGlhU3RyZWFtOjpzdHJlYW1FbmRlZCgpCiAg
ICAgZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5lbmRlZEV2ZW50LCBm
YWxzZSwgZmFsc2UpKTsKIH0KIAorY29uc3QgQXRvbWljU3RyaW5nJiBNZWRpYVN0cmVhbTo6aW50
ZXJmYWNlTmFtZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGV2ZW50TmFtZXMoKS5pbnRlcmZhY2VG
b3JNZWRpYVN0cmVhbTsKK30KKwogU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogTWVkaWFTdHJlYW06
OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdAogewogICAgIHJldHVybiBtX3NjcmlwdEV4
ZWN1dGlvbkNvbnRleHQuZ2V0KCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vTWVkaWFTdHJl
YW0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vTWVkaWFTdHJlYW0uaAkocmV2
aXNpb24gOTgxNTEpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vTWVkaWFTdHJlYW0uaAkod29ya2lu
ZyBjb3B5KQpAQCAtNjEsNyArNjEsNyBAQCBwdWJsaWM6CiAgICAgTWVkaWFTdHJlYW1EZXNjcmlw
dG9yKiBkZXNjcmlwdG9yKCkgY29uc3QgeyByZXR1cm4gbV9kZXNjcmlwdG9yLmdldCgpOyB9CiAK
ICAgICAvLyBFdmVudFRhcmdldCBpbXBsZW1lbnRhdGlvbi4KLSAgICB2aXJ0dWFsIE1lZGlhU3Ry
ZWFtKiB0b01lZGlhU3RyZWFtKCk7CisgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIGlu
dGVyZmFjZU5hbWUoKSBjb25zdDsKICAgICB2aXJ0dWFsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdDsKIAogICAgIHVzaW5nIFJlZkNvdW50ZWQ8
TWVkaWFTdHJlYW0+OjpyZWY7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZVBvcnQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlUG9ydC5jcHAJKHJl
dmlzaW9uIDk4MTUxKQorKysgU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VQb3J0LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTU5LDYgKzE1OSwxMSBAQCB2b2lkIE1lc3NhZ2VQb3J0Ojpjb250ZXh0
RGVzdHJveWVkKCkKICAgICBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQgPSAwOwogfQogCitjb25z
dCBBdG9taWNTdHJpbmcmIE1lc3NhZ2VQb3J0OjppbnRlcmZhY2VOYW1lKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gZXZlbnROYW1lcygpLmludGVyZmFjZUZvck1lc3NhZ2VQb3J0OworfQorCiBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBNZXNzYWdlUG9ydDo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
IGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlUG9ydC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2RvbS9NZXNzYWdlUG9ydC5oCShyZXZpc2lvbiA5ODE1MSkKKysrIFNvdXJjZS9XZWJDb3Jl
L2RvbS9NZXNzYWdlUG9ydC5oCSh3b3JraW5nIGNvcHkpCkBAIC04MiwxMCArODIsOSBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgdm9pZCBjb250ZXh0RGVzdHJveWVkKCk7CiAKKyAg
ICAgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIGludGVyZmFjZU5hbWUoKSBjb25zdDsK
ICAgICAgICAgdmlydHVhbCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25D
b250ZXh0KCkgY29uc3Q7CiAKLSAgICAgICAgdmlydHVhbCBNZXNzYWdlUG9ydCogdG9NZXNzYWdl
UG9ydCgpIHsgcmV0dXJuIHRoaXM7IH0KLQogICAgICAgICB2b2lkIGRpc3BhdGNoTWVzc2FnZXMo
KTsKIAogICAgICAgICB1c2luZyBSZWZDb3VudGVkPE1lc3NhZ2VQb3J0Pjo6cmVmOwpJbmRleDog
U291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2RvbS9Ob2RlLmNwcAkocmV2aXNpb24gOTgxNTEpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vTm9k
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU3NSw2ICs1NzUsMTEgQEAgdm9pZCBOb2RlOjpzZXRT
aGFkb3dIb3N0KEVsZW1lbnQqIGhvc3QpCiAgICAgc2V0UGFyZW50KGhvc3QpOwogfQogCitOb2Rl
KiBOb2RlOjp0b05vZGUoKQoreworICAgIHJldHVybiB0aGlzOworfQorCiBIVE1MSW5wdXRFbGVt
ZW50KiBOb2RlOjp0b0lucHV0RWxlbWVudCgpCiB7CiAgICAgLy8gSWYgb25lIG9mIHRoZSBiZWxv
dyBBU1NFUlRzIHRyaWdnZXIsIHlvdSBhcmUgY2FsbGluZyB0aGlzIGZ1bmN0aW9uCkBAIC0yNTE3
LDcgKzI1MjIsMTAgQEAgTm9kZSogTm9kZTo6ZW5jbG9zaW5nTGlua0V2ZW50UGFyZW50T3JTZQog
ICAgIHJldHVybiAwOwogfQogCi0vLyAtLS0tLS0tLQorY29uc3QgQXRvbWljU3RyaW5nJiBOb2Rl
OjppbnRlcmZhY2VOYW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZXZlbnROYW1lcygpLmludGVy
ZmFjZUZvck5vZGU7Cit9CiAKIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIE5vZGU6OnNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKSBjb25zdAogewpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL05vZGUu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCShyZXZpc2lvbiA5ODE1
MSkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTUzNSwx
MCArNTM1LDEwIEBAIHB1YmxpYzoKIAogICAgIHVuc2lnbmVkIHNob3J0IGNvbXBhcmVEb2N1bWVu
dFBvc2l0aW9uKE5vZGUqKTsKIAotICAgIHZpcnR1YWwgTm9kZSogdG9Ob2RlKCkgeyByZXR1cm4g
dGhpczsgfQotCisgICAgdmlydHVhbCBOb2RlKiB0b05vZGUoKTsKICAgICB2aXJ0dWFsIEhUTUxJ
bnB1dEVsZW1lbnQqIHRvSW5wdXRFbGVtZW50KCk7CiAKKyAgICB2aXJ0dWFsIGNvbnN0IEF0b21p
Y1N0cmluZyYgaW50ZXJmYWNlTmFtZSgpIGNvbnN0OwogICAgIHZpcnR1YWwgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0OwogCiAgICAgdmlydHVh
bCBib29sIGFkZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFBh
c3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4sIGJvb2wgdXNlQ2FwdHVyZSk7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9kb20vbWFrZV9ldmVudF9mYWN0b3J5LnBsCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2RvbS9tYWtlX2V2ZW50X2ZhY3RvcnkucGwJKHJldmlzaW9uIDk4MTUxKQorKysgU291
cmNlL1dlYkNvcmUvZG9tL21ha2VfZXZlbnRfZmFjdG9yeS5wbAkod29ya2luZyBjb3B5KQpAQCAt
NDcsNiArNDcsNyBAQCBzdWIgcHJpbnRIZWFkZXJzRmlsZSgkKTsKIG15ICRldmVudHNGaWxlID0g
IiI7CiBteSAkb3V0cHV0RGlyID0gIi4iOwogbXkgJXBhcnNlZEV2ZW50cyA9ICgpOworbXkgJG5h
bWVzcGFjZTsKIAogcmVxdWlyZSBDb25maWc7CiAKQEAgLTYxLDkgKzYyLDkgQEAgZGllICJZb3Ug
bXVzdCBzcGVjaWZ5IC0tZXZlbnRzIDxmaWxlPiIgdQogCiBteSAlZXZlbnRzID0gJXtyZWFkRXZl
bnRzKCRldmVudHNGaWxlKX07CiAKLXByaW50RmFjdG9yeUZpbGUoIiRvdXRwdXREaXIvRXZlbnRG
YWN0b3J5LmNwcCIpOwotcHJpbnRNYWNyb0ZpbGUoIiRvdXRwdXREaXIvRXZlbnRJbnRlcmZhY2Vz
LmgiKTsKLXByaW50SGVhZGVyc0ZpbGUoIiRvdXRwdXREaXIvRXZlbnRIZWFkZXJzLmgiKTsKK3By
aW50RmFjdG9yeUZpbGUoIiRvdXRwdXREaXIvJHtuYW1lc3BhY2V9RmFjdG9yeS5jcHAiKSBpZiAk
bmFtZXNwYWNlIGVxICJFdmVudCI7CitwcmludE1hY3JvRmlsZSgiJG91dHB1dERpci8ke25hbWVz
cGFjZX1JbnRlcmZhY2VzLmgiKTsKK3ByaW50SGVhZGVyc0ZpbGUoIiRvdXRwdXREaXIvJHtuYW1l
c3BhY2V9SGVhZGVycy5oIik7CiAKIHN1YiBkZWZhdWx0RXZlbnRQcm9wZXJ0eUhhc2gKIHsKQEAg
LTg5LDcgKzkwLDggQEAgc3ViIHBhcmFtZXRlcnNIYW5kbGVyCiB7CiAgICAgbXkgKCRwYXJhbWV0
ZXIsICR2YWx1ZSkgPSBAXzsKIAotICAgIGRpZSAiVW5rbm93biBwYXJhbWV0ZXIgJHBhcmFtZXRl
ciBmb3IgZXZlbnRzXG4iIHVubGVzcyAkcGFyYW1ldGVyIGVxICJuYW1lc3BhY2UiOworICAgIGRp
ZSAiVW5rbm93biBwYXJhbWV0ZXIgJHBhcmFtZXRlclxuIiB1bmxlc3MgJHBhcmFtZXRlciBlcSAi
bmFtZXNwYWNlIjsKKyAgICAkbmFtZXNwYWNlID0gJHZhbHVlOwogfQogCiBzdWIgcmVhZE5hbWVz
KCQkJCkKQEAgLTEyNCw2ICsxMjYsMTYgQEAgc3ViIGludGVyZmFjZUZvckV2ZW50KCQpCiAgICAg
cmV0dXJuICRpbnRlcmZhY2VOYW1lOwogfQogCitzdWIgdG9NYWNyb1N0eWxlKCQpCit7CisgICAg
bXkgKCRjYW1lbENhc2UpID0gQF87CisKKyAgICByZXR1cm4gIkVWRU5UIiBpZiAkY2FtZWxDYXNl
IGVxICJFdmVudCI7CisgICAgcmV0dXJuICJFVkVOVF9UQVJHRVQiIGlmICRjYW1lbENhc2UgZXEg
IkV2ZW50VGFyZ2V0IjsKKworICAgIGRpZSAiT2ssIHlvdSBnb3QgbWUuIFRoaXMgc2NyaXB0IGlz
IHJlYWxseSBqdXN0IGEgZ2lhbnQgaGFjay4iOworfQorCiBzdWIgcHJpbnRGYWN0b3J5RmlsZSgk
KQogewogICAgIG15ICRwYXRoID0gc2hpZnQ7CkBAIC0xMzQsMTMgKzE0NiwxMyBAQCBzdWIgcHJp
bnRGYWN0b3J5RmlsZSgkKQogICAgIHByaW50TGljZW5zZUhlYWRlcigkRik7CiAKICAgICBwcmlu
dCBGICIjaW5jbHVkZSBcImNvbmZpZy5oXCJcbiI7Ci0gICAgcHJpbnQgRiAiI2luY2x1ZGUgXCJF
dmVudEZhY3RvcnkuaFwiXG4iOworICAgIHByaW50IEYgIiNpbmNsdWRlIFwiJHtuYW1lc3BhY2V9
RmFjdG9yeS5oXCJcbiI7CiAgICAgcHJpbnQgRiAiXG4iOwotICAgIHByaW50IEYgIiNpbmNsdWRl
IFwiRXZlbnRIZWFkZXJzLmhcIlxuIjsKKyAgICBwcmludCBGICIjaW5jbHVkZSBcIiR7bmFtZXNw
YWNlfUhlYWRlcnMuaFwiXG4iOwogICAgIHByaW50IEYgIlxuIjsKICAgICBwcmludCBGICJuYW1l
c3BhY2UgV2ViQ29yZSB7XG4iOwogICAgIHByaW50IEYgIlxuIjsKLSAgICBwcmludCBGICJQYXNz
UmVmUHRyPEV2ZW50PiBFdmVudEZhY3Rvcnk6OmNyZWF0ZShjb25zdCBTdHJpbmcmIGV2ZW50VHlw
ZSlcbiI7CisgICAgcHJpbnQgRiAiUGFzc1JlZlB0cjwkbmFtZXNwYWNlPiAke25hbWVzcGFjZX1G
YWN0b3J5OjpjcmVhdGUoY29uc3QgU3RyaW5nJiB0eXBlKVxuIjsKICAgICBwcmludCBGICJ7XG4i
OwogCiAgICAgZm9yIG15ICRldmVudE5hbWUgKHNvcnQga2V5cyAlcGFyc2VkRXZlbnRzKSB7CkBA
IC0xNDgsNyArMTYwLDcgQEAgc3ViIHByaW50RmFjdG9yeUZpbGUoJCkKICAgICAgICAgbXkgJGlu
dGVyZmFjZU5hbWUgPSBpbnRlcmZhY2VGb3JFdmVudCgkZXZlbnROYW1lKTsKIAogICAgICAgICBw
cmludCBGICIjaWYgRU5BQkxFKCRjb25kaXRpb25hbClcbiIgaWYgJGNvbmRpdGlvbmFsOwotICAg
ICAgICBwcmludCBGICIgICAgaWYgKGV2ZW50VHlwZSA9PSBcIiRldmVudE5hbWVcIilcbiI7Cisg
ICAgICAgIHByaW50IEYgIiAgICBpZiAodHlwZSA9PSBcIiRldmVudE5hbWVcIilcbiI7CiAgICAg
ICAgIHByaW50IEYgIiAgICAgICAgcmV0dXJuICR7aW50ZXJmYWNlTmFtZX06OmNyZWF0ZSgpO1xu
IjsKICAgICAgICAgcHJpbnQgRiAiI2VuZGlmXG4iIGlmICRjb25kaXRpb25hbDsKICAgICB9CkBA
IC0xNjksOCArMTgxLDggQEAgc3ViIHByaW50TWFjcm9GaWxlKCQpCiAKICAgICBwcmludExpY2Vu
c2VIZWFkZXIoJEYpOwogCi0gICAgcHJpbnQgRiAiI2lmbmRlZiBFdmVudEludGVyZmFjZXNfaFxu
IjsKLSAgICBwcmludCBGICIjZGVmaW5lIEV2ZW50SW50ZXJmYWNlc19oXG4iOworICAgIHByaW50
IEYgIiNpZm5kZWYgJHtuYW1lc3BhY2V9SW50ZXJmYWNlc19oXG4iOworICAgIHByaW50IEYgIiNk
ZWZpbmUgJHtuYW1lc3BhY2V9SW50ZXJmYWNlc19oXG4iOwogICAgIHByaW50IEYgIlxuIjsKIAog
ICAgIG15ICV1bmNvbmRpdGlvbmFsSW50ZXJmYWNlcyA9ICgpOwpAQCAtMTkwLDM0ICsyMDIsMzYg
QEAgc3ViIHByaW50TWFjcm9GaWxlKCQpCiAgICAgICAgIH0KICAgICB9CiAKKyAgICBteSAkbWFj
cm9TdHlsZWROYW1lc3BhY2UgPSB0b01hY3JvU3R5bGUoJG5hbWVzcGFjZSk7CisKICAgICBmb3Ig
bXkgJGNvbmRpdGlvbmFsIChzb3J0IGtleXMgJWludGVyZmFjZXNCeUNvbmRpdGlvbmFsKSB7CiAg
ICAgICAgIHByaW50IEYgIiNpZiBFTkFCTEUoJGNvbmRpdGlvbmFsKVxuIjsKLSAgICAgICAgcHJp
bnQgRiAiI2RlZmluZSBET01fRVZFTlRfSU5URVJGQUNFU19GT1JfRUFDSF8kY29uZGl0aW9uYWwo
bWFjcm8pIFxcXG4iOworICAgICAgICBwcmludCBGICIjZGVmaW5lIERPTV8ke21hY3JvU3R5bGVk
TmFtZXNwYWNlfV9JTlRFUkZBQ0VTX0ZPUl9FQUNIXyRjb25kaXRpb25hbChtYWNybykgXFxcbiI7
CiAKICAgICAgICAgZm9yIG15ICRpbnRlcmZhY2UgKHNvcnQga2V5cyAleyAkaW50ZXJmYWNlc0J5
Q29uZGl0aW9uYWx7JGNvbmRpdGlvbmFsfSB9KSB7CiAgICAgICAgICAgICBuZXh0IGlmIGRlZmlu
ZWQoJHVuY29uZGl0aW9uYWxJbnRlcmZhY2VzeyRpbnRlcmZhY2V9KTsKICAgICAgICAgICAgIHBy
aW50IEYgIiAgICBtYWNybygkaW50ZXJmYWNlKSBcXFxuIjsKICAgICAgICAgfQogCi0gICAgICAg
IHByaW50IEYgIi8vIEVuZCBvZiBET01fRVZFTlRfSU5URVJGQUNFU19GT1JfRUFDSF8kY29uZGl0
aW9uYWxcbiI7CisgICAgICAgIHByaW50IEYgIi8vIEVuZCBvZiBET01fJHttYWNyb1N0eWxlZE5h
bWVzcGFjZX1fSU5URVJGQUNFU19GT1JfRUFDSF8kY29uZGl0aW9uYWxcbiI7CiAgICAgICAgIHBy
aW50IEYgIiNlbHNlXG4iOwotICAgICAgICBwcmludCBGICIjZGVmaW5lIERPTV9FVkVOVF9JTlRF
UkZBQ0VTX0ZPUl9FQUNIXyRjb25kaXRpb25hbChtYWNybylcbiI7CisgICAgICAgIHByaW50IEYg
IiNkZWZpbmUgRE9NXyR7bWFjcm9TdHlsZWROYW1lc3BhY2V9X0lOVEVSRkFDRVNfRk9SX0VBQ0hf
JGNvbmRpdGlvbmFsKG1hY3JvKVxuIjsKICAgICAgICAgcHJpbnQgRiAiI2VuZGlmXG4iOwogICAg
ICAgICBwcmludCBGICJcbiI7CiAgICAgfQogCi0gICAgcHJpbnQgRiAiI2RlZmluZSBET01fRVZF
TlRfSU5URVJGQUNFU19GT1JfRUFDSChtYWNybykgXFxcbiI7CisgICAgcHJpbnQgRiAiI2RlZmlu
ZSBET01fJHttYWNyb1N0eWxlZE5hbWVzcGFjZX1fSU5URVJGQUNFU19GT1JfRUFDSChtYWNybykg
XFxcbiI7CiAgICAgcHJpbnQgRiAiICAgIFxcXG4iOwogICAgIGZvciBteSAkaW50ZXJmYWNlIChz
b3J0IGtleXMgJXVuY29uZGl0aW9uYWxJbnRlcmZhY2VzKSB7CiAgICAgICAgICAgICBwcmludCBG
ICIgICAgbWFjcm8oJGludGVyZmFjZSkgXFxcbiI7CiAgICAgfQogICAgIHByaW50IEYgIiAgICBc
XFxuIjsKICAgICBmb3IgbXkgJGNvbmRpdGlvbmFsIChzb3J0IGtleXMgJWludGVyZmFjZXNCeUNv
bmRpdGlvbmFsKSB7Ci0gICAgICAgIHByaW50IEYgIiAgICBET01fRVZFTlRfSU5URVJGQUNFU19G
T1JfRUFDSF8kY29uZGl0aW9uYWwobWFjcm8pIFxcXG4iOworICAgICAgICBwcmludCBGICIgICAg
RE9NXyR7bWFjcm9TdHlsZWROYW1lc3BhY2V9X0lOVEVSRkFDRVNfRk9SX0VBQ0hfJGNvbmRpdGlv
bmFsKG1hY3JvKSBcXFxuIjsKICAgICB9CiAKICAgICBwcmludCBGICJcbiI7Ci0gICAgcHJpbnQg
RiAiI2VuZGlmIC8vIEV2ZW50SW50ZXJmYWNlc19oXG4iOworICAgIHByaW50IEYgIiNlbmRpZiAv
LyAke25hbWVzcGFjZX1JbnRlcmZhY2VzX2hcbiI7CiAKICAgICBjbG9zZSBGOwogfQpAQCAtMjMx
LDggKzI0NSw4IEBAIHN1YiBwcmludEhlYWRlcnNGaWxlKCQpCiAKICAgICBwcmludExpY2Vuc2VI
ZWFkZXIoJEYpOwogCi0gICAgcHJpbnQgRiAiI2lmbmRlZiBFdmVudEhlYWRlcnNfaFxuIjsKLSAg
ICBwcmludCBGICIjZGVmaW5lIEV2ZW50SGVhZGVyc19oXG4iOworICAgIHByaW50IEYgIiNpZm5k
ZWYgJHtuYW1lc3BhY2V9SGVhZGVyc19oXG4iOworICAgIHByaW50IEYgIiNkZWZpbmUgJHtuYW1l
c3BhY2V9SGVhZGVyc19oXG4iOwogICAgIHByaW50IEYgIlxuIjsKIAogICAgIG15ICVpbmNsdWRl
ZEludGVyZmFjZXMgPSAoKTsKQEAgLTI1NSw3ICsyNjksNyBAQCBzdWIgcHJpbnRIZWFkZXJzRmls
ZSgkKQogICAgIH0KIAogICAgIHByaW50IEYgIlxuIjsKLSAgICBwcmludCBGICIjZW5kaWYgLy8g
RXZlbnRIZWFkZXJzX2hcbiI7CisgICAgcHJpbnQgRiAiI2VuZGlmIC8vICR7bmFtZXNwYWNlfUhl
YWRlcnNfaFxuIjsKIAogICAgIGNsb3NlIEY7CiB9CkBAIC0yNjcsNyArMjgxLDcgQEAgc3ViIHBy
aW50TGljZW5zZUhlYWRlcigkKQogICAgIHByaW50IEYgIi8qCiAgKiBUSElTIEZJTEUgV0FTIEFV
VE9NQVRJQ0FMTFkgR0VORVJBVEVELCBETyBOT1QgRURJVC4KICAqCi0gKiBUaGlzIGZpbGUgd2Fz
IGdlbmVyYXRlZCBieSB0aGUgZG9tL21ha2VfZXZlbnRzLnBsIHNjcmlwdC4KKyAqIFRoaXMgZmls
ZSB3YXMgZ2VuZXJhdGVkIGJ5IHRoZSBkb20vbWFrZV9ldmVudF9mYWN0b3J5LnBsIHNjcmlwdC4K
ICAqCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgpJbmRleDogU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXIuY3BwCShyZXZpc2lv
biA5ODE1MSkKKysrIFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTYyLDYgKzYyLDExIEBAIEZpbGVSZWFkZXI6On5GaWxlUmVhZGVyKCkKICAg
ICB0ZXJtaW5hdGUoKTsKIH0KIAorY29uc3QgQXRvbWljU3RyaW5nJiBGaWxlUmVhZGVyOjppbnRl
cmZhY2VOYW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZXZlbnROYW1lcygpLmludGVyZmFjZUZv
ckZpbGVSZWFkZXI7Cit9CisKIGJvb2wgRmlsZVJlYWRlcjo6aGFzUGVuZGluZ0FjdGl2aXR5KCkg
Y29uc3QKIHsKICAgICByZXR1cm4gbV9zdGF0ZSA9PSBMT0FESU5HIHx8IEFjdGl2ZURPTU9iamVj
dDo6aGFzUGVuZGluZ0FjdGl2aXR5KCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Zp
bGVSZWFkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFk
ZXIuaAkocmV2aXNpb24gOTgxNTEpCisrKyBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFk
ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtODUsNyArODUsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCBib29sIGhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0OwogCiAgICAgLy8gRXZlbnRUYXJnZXQK
LSAgICB2aXJ0dWFsIEZpbGVSZWFkZXIqIHRvRmlsZVJlYWRlcigpIHsgcmV0dXJuIHRoaXM7IH0K
KyAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgaW50ZXJmYWNlTmFtZSgpIGNvbnN0Owog
ICAgIHZpcnR1YWwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpIGNvbnN0IHsgcmV0dXJuIEFjdGl2ZURPTU9iamVjdDo6c2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpOyB9CiAKICAgICAvLyBGaWxlUmVhZGVyTG9hZGVyQ2xpZW50CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9maWxlYXBpL0ZpbGVXcml0ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2ZpbGVhcGkvRmlsZVdyaXRlci5jcHAJKHJldmlzaW9uIDk4MTUxKQorKysgU291cmNlL1dlYkNv
cmUvZmlsZWFwaS9GaWxlV3JpdGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjUsNiArNjUsMTEg
QEAgRmlsZVdyaXRlcjo6fkZpbGVXcml0ZXIoKQogICAgICAgICBzdG9wKCk7CiB9CiAKK2NvbnN0
IEF0b21pY1N0cmluZyYgRmlsZVdyaXRlcjo6aW50ZXJmYWNlTmFtZSgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIGV2ZW50TmFtZXMoKS5pbnRlcmZhY2VGb3JGaWxlV3JpdGVyOworfQorCiBib29sIEZp
bGVXcml0ZXI6Omhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fcmVh
ZHlTdGF0ZSA9PSBXUklUSU5HIHx8IEFjdGl2ZURPTU9iamVjdDo6aGFzUGVuZGluZ0FjdGl2aXR5
KCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVXcml0ZXIuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVXcml0ZXIuaAkocmV2aXNpb24gOTgxNTEp
CisrKyBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVXcml0ZXIuaAkod29ya2luZyBjb3B5KQpA
QCAtNzYsNyArNzYsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHN0b3AoKTsKIAogICAg
IC8vIEV2ZW50VGFyZ2V0Ci0gICAgdmlydHVhbCBGaWxlV3JpdGVyKiB0b0ZpbGVXcml0ZXIoKSB7
IHJldHVybiB0aGlzOyB9CisgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIGludGVyZmFj
ZU5hbWUoKSBjb25zdDsKICAgICB2aXJ0dWFsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdCB7IHJldHVybiBBY3RpdmVET01PYmplY3Q6OnNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKTsgfQogCiAgICAgdXNpbmcgUmVmQ291bnRlZDxGaWxlV3JpdGVy
QmFzZT46OnJlZjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9ET01BcHBs
aWNhdGlvbkNhY2hlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBw
Y2FjaGUvRE9NQXBwbGljYXRpb25DYWNoZS5jcHAJKHJldmlzaW9uIDk4MTUxKQorKysgU291cmNl
L1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0RPTUFwcGxpY2F0aW9uQ2FjaGUuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC04NCw2ICs4NCwxMSBAQCB2b2lkIERPTUFwcGxpY2F0aW9uQ2FjaGU6OnN3YXBD
YWNoZShFeGNlCiAgICAgICAgIGVjID0gSU5WQUxJRF9TVEFURV9FUlI7CiB9CiAKK2NvbnN0IEF0
b21pY1N0cmluZyYgRE9NQXBwbGljYXRpb25DYWNoZTo6aW50ZXJmYWNlTmFtZSgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIGV2ZW50TmFtZXMoKS5pbnRlcmZhY2VGb3JET01BcHBsaWNhdGlvbkNhY2hl
OworfQorCiBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBET01BcHBsaWNhdGlvbkNhY2hlOjpzY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QKIHsKICAgICBpZiAobV9mcmFtZSkKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9ET01BcHBsaWNhdGlvbkNhY2hlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0RPTUFwcGxpY2F0aW9uQ2Fj
aGUuaAkocmV2aXNpb24gOTgxNTEpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUv
RE9NQXBwbGljYXRpb25DYWNoZS5oCSh3b3JraW5nIGNvcHkpCkBAIC02OSw4ICs2OSw4IEBAIHB1
YmxpYzoKICAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKGNhY2hlZCk7CiAgICAg
REVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUihvYnNvbGV0ZSk7CiAKKyAgICB2aXJ0dWFs
IGNvbnN0IEF0b21pY1N0cmluZyYgaW50ZXJmYWNlTmFtZSgpIGNvbnN0OwogICAgIHZpcnR1YWwg
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0Owot
ICAgIERPTUFwcGxpY2F0aW9uQ2FjaGUqIHRvRE9NQXBwbGljYXRpb25DYWNoZSgpIHsgcmV0dXJu
IHRoaXM7IH0KIAogICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIHRvRXZlbnRUeXBlKEFw
cGxpY2F0aW9uQ2FjaGVIb3N0OjpFdmVudElEIGlkKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUv
bm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmNwcAkocmV2aXNpb24gOTgxNTEpCisrKyBT
b3VyY2UvV2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEwNCw2ICsxMDQsMTEgQEAgUGFzc1JlZlB0cjxOb3RpZmljYXRpb24+IE5vdGlmaWNh
dGlvbjo6YwogICAgIHJldHVybiBhZG9wdFJlZihuZXcgTm90aWZpY2F0aW9uKGNvbnRlbnRzLCBj
b250ZXh0LCBlYywgcHJvdmlkZXIpKTsKIH0KIAorY29uc3QgQXRvbWljU3RyaW5nJiBOb3RpZmlj
YXRpb246OmludGVyZmFjZU5hbWUoKSBjb25zdAoreworICAgIHJldHVybiBldmVudE5hbWVzKCku
aW50ZXJmYWNlRm9yTm90aWZpY2F0aW9uOworfQorCiB2b2lkIE5vdGlmaWNhdGlvbjo6c2hvdygp
IAogewogI2lmIFBMQVRGT1JNKFFUKQpJbmRleDogU291cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9u
cy9Ob3RpZmljYXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9ub3RpZmljYXRp
b25zL05vdGlmaWNhdGlvbi5oCShyZXZpc2lvbiA5ODE1MSkKKysrIFNvdXJjZS9XZWJDb3JlL25v
dGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTgzLDEzICs4Mywx
MyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRf
TElTVEVORVIoZXJyb3IpOwogICAgICAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVS
KGNsb3NlKTsKICAgICAgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUihjbGljayk7
Ci0gICAgCisKICAgICAgICAgdXNpbmcgUmVmQ291bnRlZDxOb3RpZmljYXRpb24+OjpyZWY7CiAg
ICAgICAgIHVzaW5nIFJlZkNvdW50ZWQ8Tm90aWZpY2F0aW9uPjo6ZGVyZWY7Ci0gICAgCisKICAg
ICAgICAgLy8gRXZlbnRUYXJnZXQgaW50ZXJmYWNlCisgICAgICAgIHZpcnR1YWwgY29uc3QgQXRv
bWljU3RyaW5nJiBpbnRlcmZhY2VOYW1lKCkgY29uc3Q7CiAgICAgICAgIHZpcnR1YWwgU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IHsgcmV0dXJu
IEFjdGl2ZURPTU9iamVjdDo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOyB9Ci0gICAgICAgIHZp
cnR1YWwgTm90aWZpY2F0aW9uKiB0b05vdGlmaWNhdGlvbigpIHsgcmV0dXJuIHRoaXM7IH0KIAog
ICAgICAgICAvLyBBY3RpdmVET01PYmplY3QgaW50ZXJmYWNlCiAgICAgICAgIHZpcnR1YWwgdm9p
ZCBjb250ZXh0RGVzdHJveWVkKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wMnAvUGVlckNvbm5l
Y3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3AycC9QZWVyQ29ubmVjdGlv
bi5jcHAJKHJldmlzaW9uIDk4MTUxKQorKysgU291cmNlL1dlYkNvcmUvcDJwL1BlZXJDb25uZWN0
aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjM2LDkgKzIzNiw5IEBAIHZvaWQgUGVlckNvbm5l
Y3Rpb246OnJlbW90ZVN0cmVhbVJlbW92ZWQKICAgICBkaXNwYXRjaEV2ZW50KE1lZGlhU3RyZWFt
RXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkucmVtb3Zlc3RyZWFtRXZlbnQsIGZhbHNlLCBmYWxz
ZSwgc3RyZWFtLnJlbGVhc2UoKSkpOwogfQogCi1QZWVyQ29ubmVjdGlvbiogUGVlckNvbm5lY3Rp
b246OnRvUGVlckNvbm5lY3Rpb24oKQorY29uc3QgQXRvbWljU3RyaW5nJiBQZWVyQ29ubmVjdGlv
bjo6aW50ZXJmYWNlTmFtZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHRoaXM7CisgICAgcmV0dXJu
IGV2ZW50TmFtZXMoKS5pbnRlcmZhY2VGb3JQZWVyQ29ubmVjdGlvbjsKIH0KIAogU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogUGVlckNvbm5lY3Rpb246OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBj
b25zdApJbmRleDogU291cmNlL1dlYkNvcmUvcDJwL1BlZXJDb25uZWN0aW9uLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcDJwL1BlZXJDb25uZWN0aW9uLmgJKHJldmlzaW9uIDk4MTUx
KQorKysgU291cmNlL1dlYkNvcmUvcDJwL1BlZXJDb25uZWN0aW9uLmgJKHdvcmtpbmcgY29weSkK
QEAgLTc5LDkgKzc5LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCByZW1vdGVTdHJlYW1S
ZW1vdmVkKE1lZGlhU3RyZWFtRGVzY3JpcHRvciopOwogCiAgICAgLy8gRXZlbnRUYXJnZXQKLSAg
ICB2aXJ0dWFsIFBlZXJDb25uZWN0aW9uKiB0b1BlZXJDb25uZWN0aW9uKCk7Ci0KLSAgICAvLyBF
dmVudFRhcmdldCBpbXBsZW1lbnRhdGlvbi4KKyAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmlu
ZyYgaW50ZXJmYWNlTmFtZSgpIGNvbnN0OwogICAgIHZpcnR1YWwgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0OwogCiAgICAgLy8gQWN0aXZlRE9N
T2JqZWN0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCShyZXZpc2lvbiA5ODE1MSkK
KysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NDQ2LDExICs0NDYsMjEgQEAgRE9NV2luZG93Ojp+RE9NV2luZG93KCkKICAgICByZW1vdmVBbGxC
ZWZvcmVVbmxvYWRFdmVudExpc3RlbmVycyh0aGlzKTsKIH0KIAorY29uc3QgQXRvbWljU3RyaW5n
JiBET01XaW5kb3c6OmludGVyZmFjZU5hbWUoKSBjb25zdAoreworICAgIHJldHVybiBldmVudE5h
bWVzKCkuaW50ZXJmYWNlRm9yRE9NV2luZG93OworfQorCiBTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBET01XaW5kb3c6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdAogewogICAgIHJldHVy
biBkb2N1bWVudCgpOwogfQogCitET01XaW5kb3cqIERPTVdpbmRvdzo6dG9ET01XaW5kb3coKQor
eworICAgIHJldHVybiB0aGlzOworfQorCiBQYXNzUmVmUHRyPE1lZGlhUXVlcnlMaXN0PiBET01X
aW5kb3c6Om1hdGNoTWVkaWEoY29uc3QgU3RyaW5nJiBtZWRpYSkKIHsKICAgICByZXR1cm4gZG9j
dW1lbnQoKSA/IGRvY3VtZW50KCktPm1lZGlhUXVlcnlNYXRjaGVyKCktPm1hdGNoTWVkaWEobWVk
aWEpIDogMDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaAkocmV2aXNpb24gOTgxNTEpCisr
KyBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5oCSh3b3JraW5nIGNvcHkpCkBAIC04NSw5
ICs4NSwxMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRy
PERPTVdpbmRvdz4gY3JlYXRlKEZyYW1lKiBmcmFtZSkgeyByZXR1cm4gYWRvcHRSZWYobmV3IERP
TVdpbmRvdyhmcmFtZSkpOyB9CiAgICAgICAgIHZpcnR1YWwgfkRPTVdpbmRvdygpOwogCi0gICAg
ICAgIHZpcnR1YWwgRE9NV2luZG93KiB0b0RPTVdpbmRvdygpIHsgcmV0dXJuIHRoaXM7IH0KKyAg
ICAgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIGludGVyZmFjZU5hbWUoKSBjb25zdDsK
ICAgICAgICAgdmlydHVhbCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25D
b250ZXh0KCkgY29uc3Q7CiAKKyAgICAgICAgdmlydHVhbCBET01XaW5kb3cqIHRvRE9NV2luZG93
KCk7CisKICAgICAgICAgRnJhbWUqIGZyYW1lKCkgY29uc3QgeyByZXR1cm4gbV9mcmFtZTsgfQog
ICAgICAgICB2b2lkIGRpc2Nvbm5lY3RGcmFtZSgpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
YWdlL0V2ZW50U291cmNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0V2
ZW50U291cmNlLmNwcAkocmV2aXNpb24gOTgxNTEpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0V2
ZW50U291cmNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTg2LDYgKzE4NiwxMSBAQCB2b2lkIEV2
ZW50U291cmNlOjpjbG9zZSgpCiAgICAgbV9zdGF0ZSA9IENMT1NFRDsKIH0KIAorY29uc3QgQXRv
bWljU3RyaW5nJiBFdmVudFNvdXJjZTo6aW50ZXJmYWNlTmFtZSgpIGNvbnN0Cit7CisgICAgcmV0
dXJuIGV2ZW50TmFtZXMoKS5pbnRlcmZhY2VGb3JFdmVudFNvdXJjZTsKK30KKwogU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogRXZlbnRTb3VyY2U6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25z
dAogewogICAgIHJldHVybiBBY3RpdmVET01PYmplY3Q6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRTb3VyY2UuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50U291cmNlLmgJKHJldmlzaW9uIDk4MTUxKQorKysg
U291cmNlL1dlYkNvcmUvcGFnZS9FdmVudFNvdXJjZS5oCSh3b3JraW5nIGNvcHkpCkBAIC03NSw3
ICs3NSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdXNpbmcgUmVmQ291bnRlZDxF
dmVudFNvdXJjZT46OnJlZjsKICAgICAgICAgdXNpbmcgUmVmQ291bnRlZDxFdmVudFNvdXJjZT46
OmRlcmVmOwogCi0gICAgICAgIHZpcnR1YWwgRXZlbnRTb3VyY2UqIHRvRXZlbnRTb3VyY2UoKSB7
IHJldHVybiB0aGlzOyB9CisgICAgICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBpbnRl
cmZhY2VOYW1lKCkgY29uc3Q7CiAgICAgICAgIHZpcnR1YWwgU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0OwogCiAgICAgICAgIHZpcnR1YWwgdm9p
ZCBzdG9wKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFiYXNlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFiYXNlLmNwcAkocmV2
aXNpb24gOTgxNTEpCisrKyBTb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFiYXNlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjE4LDYgKzIxOCwxMSBAQCB2b2lkIElEQkRhdGFiYXNlOjpzdG9w
KCkKICAgICBtX3N0b3BwZWQgPSB0cnVlOwogfQogCitjb25zdCBBdG9taWNTdHJpbmcmIElEQkRh
dGFiYXNlOjppbnRlcmZhY2VOYW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZXZlbnROYW1lcygp
LmludGVyZmFjZUZvcklEQkRhdGFiYXNlOworfQorCiBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBJ
REJEYXRhYmFzZTo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0CiB7CiAgICAgcmV0dXJu
IEFjdGl2ZURPTU9iamVjdDo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwpJbmRleDogU291cmNl
L1dlYkNvcmUvc3RvcmFnZS9JREJEYXRhYmFzZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3N0b3JhZ2UvSURCRGF0YWJhc2UuaAkocmV2aXNpb24gOTgxNTEpCisrKyBTb3VyY2UvV2Vi
Q29yZS9zdG9yYWdlL0lEQkRhdGFiYXNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTgyLDEwICs4Miw5
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc3RvcCgpOwogCiAgICAgLy8gRXZlbnRUYXJn
ZXQKLSAgICB2aXJ0dWFsIElEQkRhdGFiYXNlKiB0b0lEQkRhdGFiYXNlKCkgeyByZXR1cm4gdGhp
czsgfQorICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBpbnRlcmZhY2VOYW1lKCkgY29u
c3Q7CiAgICAgdmlydHVhbCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25D
b250ZXh0KCkgY29uc3Q7CiAKLQogICAgIHZvaWQgb3BlbigpOwogICAgIHZvaWQgZW5xdWV1ZUV2
ZW50KFBhc3NSZWZQdHI8RXZlbnQ+KTsKICAgICBib29sIGRpc3BhdGNoRXZlbnQoUGFzc1JlZlB0
cjxFdmVudD4gZXZlbnQsIEV4Y2VwdGlvbkNvZGUmIGVjKSB7IHJldHVybiBFdmVudFRhcmdldDo6
ZGlzcGF0Y2hFdmVudChldmVudCwgZWMpOyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdG9yYWdl
L0lEQlJlcXVlc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURC
UmVxdWVzdC5jcHAJKHJldmlzaW9uIDk4MTUxKQorKysgU291cmNlL1dlYkNvcmUvc3RvcmFnZS9J
REJSZXF1ZXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYxLDYgKzI2MSwxMSBAQCB2b2lkIElE
QlJlcXVlc3Q6Om9uQmxvY2tlZCgpCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKK2Nv
bnN0IEF0b21pY1N0cmluZyYgSURCUmVxdWVzdDo6aW50ZXJmYWNlTmFtZSgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIGV2ZW50TmFtZXMoKS5pbnRlcmZhY2VGb3JJREJSZXF1ZXN0OworfQorCiBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBJREJSZXF1ZXN0OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkg
Y29uc3QKIHsKICAgICByZXR1cm4gQWN0aXZlRE9NT2JqZWN0OjpzY3JpcHRFeGVjdXRpb25Db250
ZXh0KCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQlJlcXVlc3QuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQlJlcXVlc3QuaAkocmV2aXNpb24gOTgx
NTEpCisrKyBTb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQlJlcXVlc3QuaAkod29ya2luZyBjb3B5
KQpAQCAtODcsNyArODcsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGhhc1BlbmRpbmdB
Y3Rpdml0eSgpIGNvbnN0OwogCiAgICAgLy8gRXZlbnRUYXJnZXQKLSAgICB2aXJ0dWFsIElEQlJl
cXVlc3QqIHRvSURCUmVxdWVzdCgpIHsgcmV0dXJuIHRoaXM7IH0KKyAgICB2aXJ0dWFsIGNvbnN0
IEF0b21pY1N0cmluZyYgaW50ZXJmYWNlTmFtZSgpIGNvbnN0OwogICAgIHZpcnR1YWwgU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0OwogICAgIHZp
cnR1YWwgYm9vbCBkaXNwYXRjaEV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+KTsKICAgICBib29sIGRp
c3BhdGNoRXZlbnQoUGFzc1JlZlB0cjxFdmVudD4gZXZlbnQsIEV4Y2VwdGlvbkNvZGUmIGVjKSB7
IHJldHVybiBFdmVudFRhcmdldDo6ZGlzcGF0Y2hFdmVudChldmVudCwgZWMpOyB9CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQlRyYW5zYWN0aW9uLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQlRyYW5zYWN0aW9uLmNwcAkocmV2aXNpb24gOTgxNTEp
CisrKyBTb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQlRyYW5zYWN0aW9uLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTM4LDYgKzEzOCwxMSBAQCBib29sIElEQlRyYW5zYWN0aW9uOjpoYXNQZW5kaW5n
QWN0aXZpdHkoCiAgICAgcmV0dXJuICFtX2ZpbmlzaGVkIHx8IEFjdGl2ZURPTU9iamVjdDo6aGFz
UGVuZGluZ0FjdGl2aXR5KCk7CiB9CiAKK2NvbnN0IEF0b21pY1N0cmluZyYgSURCVHJhbnNhY3Rp
b246OmludGVyZmFjZU5hbWUoKSBjb25zdAoreworICAgIHJldHVybiBldmVudE5hbWVzKCkuaW50
ZXJmYWNlRm9ySURCVHJhbnNhY3Rpb247Cit9CisKIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIElE
QlRyYW5zYWN0aW9uOjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QKIHsKICAgICByZXR1
cm4gQWN0aXZlRE9NT2JqZWN0OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9zdG9yYWdlL0lEQlRyYW5zYWN0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvc3RvcmFnZS9JREJUcmFuc2FjdGlvbi5oCShyZXZpc2lvbiA5ODE1MSkKKysrIFNv
dXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCVHJhbnNhY3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAt
NzQsNyArNzQsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIG9uQ29tcGxldGUoKTsKIAog
ICAgIC8vIEV2ZW50VGFyZ2V0Ci0gICAgdmlydHVhbCBJREJUcmFuc2FjdGlvbiogdG9JREJUcmFu
c2FjdGlvbigpIHsgcmV0dXJuIHRoaXM7IH0KKyAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmlu
ZyYgaW50ZXJmYWNlTmFtZSgpIGNvbnN0OwogICAgIHZpcnR1YWwgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBk
aXNwYXRjaEV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+KTsKICAgICBib29sIGRpc3BhdGNoRXZlbnQo
UGFzc1JlZlB0cjxFdmVudD4gZXZlbnQsIEV4Y2VwdGlvbkNvZGUmIGVjKSB7IHJldHVybiBFdmVu
dFRhcmdldDo6ZGlzcGF0Y2hFdmVudChldmVudCwgZWMpOyB9CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9zdG9yYWdlL0lEQlZlcnNpb25DaGFuZ2VSZXF1ZXN0LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9zdG9yYWdlL0lEQlZlcnNpb25DaGFuZ2VSZXF1ZXN0LmNwcAkocmV2aXNpb24g
OTgxNTEpCisrKyBTb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQlZlcnNpb25DaGFuZ2VSZXF1ZXN0
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDgsNiArNDgsMTEgQEAgSURCVmVyc2lvbkNoYW5nZVJl
cXVlc3Q6On5JREJWZXJzaW9uQ2hhbgogewogfQogCitjb25zdCBBdG9taWNTdHJpbmcmIElEQlZl
cnNpb25DaGFuZ2VSZXF1ZXN0OjppbnRlcmZhY2VOYW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
ZXZlbnROYW1lcygpLmludGVyZmFjZUZvcklEQlZlcnNpb25DaGFuZ2VSZXF1ZXN0OworfQorCiB2
b2lkIElEQlZlcnNpb25DaGFuZ2VSZXF1ZXN0OjpvbkJsb2NrZWQoKQogewogICAgIEFTU0VSVCgh
bV9lcnJvckNvZGUgJiYgbV9lcnJvck1lc3NhZ2UuaXNOdWxsKCkgJiYgIW1fcmVzdWx0KTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCVmVyc2lvbkNoYW5nZVJlcXVlc3QuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQlZlcnNpb25DaGFuZ2VSZXF1ZXN0
LmgJKHJldmlzaW9uIDk4MTUxKQorKysgU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJWZXJzaW9u
Q2hhbmdlUmVxdWVzdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw2ICszOSw5IEBAIHB1YmxpYzoK
IAogICAgIHZpcnR1YWwgdm9pZCBvbkJsb2NrZWQoKTsKIAorICAgIC8vIEV2ZW50VGFyZ2V0Cisg
ICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIGludGVyZmFjZU5hbWUoKSBjb25zdDsKKwog
ICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIoYmxvY2tlZCk7CiAKIHByaXZhdGU6
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudEluc3RhbmNlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudEluc3RhbmNlLmNwcAkocmV2aXNp
b24gOTgxNTEpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudEluc3RhbmNlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTIxLDYgKzEyMSwxMSBAQCB2b2lkIFNWR0VsZW1lbnRJbnN0YW5j
ZTo6aW52YWxpZGF0ZUFsbEluCiAgICAgZWxlbWVudC0+ZG9jdW1lbnQoKS0+dXBkYXRlTGF5b3V0
SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzKCk7CiB9CiAKK2NvbnN0IEF0b21pY1N0cmluZyYgU1ZH
RWxlbWVudEluc3RhbmNlOjppbnRlcmZhY2VOYW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZXZl
bnROYW1lcygpLmludGVyZmFjZUZvclNWR0VsZW1lbnRJbnN0YW5jZTsKK30KKwogU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogU1ZHRWxlbWVudEluc3RhbmNlOjpzY3JpcHRFeGVjdXRpb25Db250ZXh0
KCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9lbGVtZW50LT5kb2N1bWVudCgpOwpJbmRleDogU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnRJbnN0YW5jZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50SW5zdGFuY2UuaAkocmV2aXNpb24gOTgxNTEpCisrKyBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudEluc3RhbmNlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTQ3LDYgKzQ3LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB+U1ZHRWxlbWVudEluc3RhbmNl
KCk7CiAKKyAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgaW50ZXJmYWNlTmFtZSgpIGNv
bnN0OwogICAgIHZpcnR1YWwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpIGNvbnN0OwogCiAgICAgdmlydHVhbCBib29sIGFkZEV2ZW50TGlzdGVuZXIoY29u
c3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4sIGJv
b2wgdXNlQ2FwdHVyZSk7CkBAIC0xMzksNyArMTQwLDYgQEAgcHJpdmF0ZToKICAgICBTVkdFbGVt
ZW50SW5zdGFuY2UoU1ZHVXNlRWxlbWVudCosIFNWR1VzZUVsZW1lbnQqLCBQYXNzUmVmUHRyPFNW
R0VsZW1lbnQ+IG9yaWdpbmFsRWxlbWVudCk7CiAKICAgICB2aXJ0dWFsIE5vZGUqIHRvTm9kZSgp
IHsgcmV0dXJuIHNoYWRvd1RyZWVFbGVtZW50KCk7IH0KLSAgICB2aXJ0dWFsIFNWR0VsZW1lbnRJ
bnN0YW5jZSogdG9TVkdFbGVtZW50SW5zdGFuY2UoKSB7IHJldHVybiB0aGlzOyB9CiAKICAgICB2
b2lkIGFwcGVuZENoaWxkKFBhc3NSZWZQdHI8U1ZHRWxlbWVudEluc3RhbmNlPiBjaGlsZCk7CiAg
ICAgdm9pZCBzZXRTaGFkb3dUcmVlRWxlbWVudChTVkdFbGVtZW50Kik7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS93ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAJKHJldmlzaW9uIDk4MTUxKQorKysgU291
cmNlL1dlYkNvcmUvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NzMxLDE0ICs3MzEsMTQgQEAgdm9pZCBBdWRpb0NvbnRleHQ6OmhhbmRsZURpcnR5QXVkaW9Ob2Rl
TwogICAgIG1fZGlydHlBdWRpb05vZGVPdXRwdXRzLmNsZWFyKCk7CiB9CiAKLVNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIEF1ZGlvQ29udGV4dDo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0
Citjb25zdCBBdG9taWNTdHJpbmcmIEF1ZGlvQ29udGV4dDo6aW50ZXJmYWNlTmFtZSgpIGNvbnN0
CiB7Ci0gICAgcmV0dXJuIGRvY3VtZW50KCk7CisgICAgcmV0dXJuIGV2ZW50TmFtZXMoKS5pbnRl
cmZhY2VGb3JBdWRpb0NvbnRleHQ7CiB9CiAKLUF1ZGlvQ29udGV4dCogQXVkaW9Db250ZXh0Ojp0
b0F1ZGlvQ29udGV4dCgpCitTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBBdWRpb0NvbnRleHQ6OnNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdAogewotICAgIHJldHVybiB0aGlzOworICAgIHJl
dHVybiBkb2N1bWVudCgpOwogfQogCiB2b2lkIEF1ZGlvQ29udGV4dDo6c3RhcnRSZW5kZXJpbmco
KQpJbmRleDogU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmgJKHJldmlzaW9uIDk4
MTUxKQorKysgU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTIwOCw4ICsyMDgsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBtYXJrQXVkaW9Ob2Rl
T3V0cHV0RGlydHkoQXVkaW9Ob2RlT3V0cHV0Kik7CiAKICAgICAvLyBFdmVudFRhcmdldAorICAg
IHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBpbnRlcmZhY2VOYW1lKCkgY29uc3Q7CiAgICAg
dmlydHVhbCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkg
Y29uc3Q7Ci0gICAgdmlydHVhbCBBdWRpb0NvbnRleHQqIHRvQXVkaW9Db250ZXh0KCk7CiAgICAg
dmlydHVhbCBFdmVudFRhcmdldERhdGEqIGV2ZW50VGFyZ2V0RGF0YSgpIHsgcmV0dXJuICZtX2V2
ZW50VGFyZ2V0RGF0YTsgfQogICAgIHZpcnR1YWwgRXZlbnRUYXJnZXREYXRhKiBlbnN1cmVFdmVu
dFRhcmdldERhdGEoKSB7IHJldHVybiAmbV9ldmVudFRhcmdldERhdGE7IH0KIApJbmRleDogU291
cmNlL1dlYkNvcmUvd2ViYXVkaW8vSmF2YVNjcmlwdEF1ZGlvTm9kZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vSmF2YVNjcmlwdEF1ZGlvTm9kZS5jcHAJKHJldmlz
aW9uIDk4MTUxKQorKysgU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vSmF2YVNjcmlwdEF1ZGlvTm9k
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExOSwxMSArMTE5LDYgQEAgdm9pZCBKYXZhU2NyaXB0
QXVkaW9Ob2RlOjp1bmluaXRpYWxpemUoKQogICAgIEF1ZGlvTm9kZTo6dW5pbml0aWFsaXplKCk7
CiB9CiAKLUphdmFTY3JpcHRBdWRpb05vZGUqIEphdmFTY3JpcHRBdWRpb05vZGU6OnRvSmF2YVNj
cmlwdEF1ZGlvTm9kZSgpCi17Ci0gICAgcmV0dXJuIHRoaXM7Ci19Ci0KIHZvaWQgSmF2YVNjcmlw
dEF1ZGlvTm9kZTo6cHJvY2VzcyhzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKQogewogICAgIC8vIERp
c2N1c3Npb24gYWJvdXQgaW5wdXRzIGFuZCBvdXRwdXRzOgpAQCAtMjYyLDYgKzI1NywxMSBAQCB2
b2lkIEphdmFTY3JpcHRBdWRpb05vZGU6OnJlc2V0KCkKICAgICB9CiB9CiAKK2NvbnN0IEF0b21p
Y1N0cmluZyYgSmF2YVNjcmlwdEF1ZGlvTm9kZTo6aW50ZXJmYWNlTmFtZSgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIGV2ZW50TmFtZXMoKS5pbnRlcmZhY2VGb3JKYXZhU2NyaXB0QXVkaW9Ob2RlOwor
fQorCiBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBKYXZhU2NyaXB0QXVkaW9Ob2RlOjpzY3JpcHRF
eGVjdXRpb25Db250ZXh0KCkgY29uc3QKIHsKICAgICByZXR1cm4gY29uc3RfY2FzdDxKYXZhU2Ny
aXB0QXVkaW9Ob2RlKj4odGhpcyktPmNvbnRleHQoKS0+ZG9jdW1lbnQoKTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3dlYmF1ZGlvL0phdmFTY3JpcHRBdWRpb05vZGUuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS93ZWJhdWRpby9KYXZhU2NyaXB0QXVkaW9Ob2RlLmgJKHJldmlzaW9uIDk4
MTUxKQorKysgU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vSmF2YVNjcmlwdEF1ZGlvTm9kZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC02Myw4ICs2Myw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQg
dW5pbml0aWFsaXplKCk7CiAKICAgICAvLyBFdmVudFRhcmdldAorICAgIHZpcnR1YWwgY29uc3Qg
QXRvbWljU3RyaW5nJiBpbnRlcmZhY2VOYW1lKCkgY29uc3Q7CiAgICAgdmlydHVhbCBTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3Q7Ci0gICAgdmly
dHVhbCBKYXZhU2NyaXB0QXVkaW9Ob2RlKiB0b0phdmFTY3JpcHRBdWRpb05vZGUoKTsKICAgICB2
aXJ0dWFsIEV2ZW50VGFyZ2V0RGF0YSogZXZlbnRUYXJnZXREYXRhKCkgeyByZXR1cm4gJm1fZXZl
bnRUYXJnZXREYXRhOyB9CiAgICAgdmlydHVhbCBFdmVudFRhcmdldERhdGEqIGVuc3VyZUV2ZW50
VGFyZ2V0RGF0YSgpICB7IHJldHVybiAmbV9ldmVudFRhcmdldERhdGE7IH0KIApJbmRleDogU291
cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcAkocmV2aXNpb24gOTgxNTEpCisrKyBT
b3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTQwNyw2ICs0MDcsMTEgQEAgdm9pZCBXZWJTb2NrZXQ6OnNldEJpbmFyeVR5cGUoY29uc3QgU3Ry
aQogICAgIHJldHVybjsKIH0KIAorY29uc3QgQXRvbWljU3RyaW5nJiBXZWJTb2NrZXQ6OmludGVy
ZmFjZU5hbWUoKSBjb25zdAoreworICAgIHJldHVybiBldmVudE5hbWVzKCkuaW50ZXJmYWNlRm9y
V2ViU29ja2V0OworfQorCiBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBXZWJTb2NrZXQ6OnNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdAogewogICAgIHJldHVybiBBY3RpdmVET01PYmplY3Q6
OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3dlYnNvY2tl
dHMvV2ViU29ja2V0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9X
ZWJTb2NrZXQuaAkocmV2aXNpb24gOTgxNTEpCisrKyBTb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRz
L1dlYlNvY2tldC5oCSh3b3JraW5nIGNvcHkpCkBAIC05MCw5ICs5MCw5IEBAIHB1YmxpYzoKICAg
ICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKGNsb3NlKTsKIAogICAgIC8vIEV2ZW50
VGFyZ2V0Ci0gICAgdmlydHVhbCBXZWJTb2NrZXQqIHRvV2ViU29ja2V0KCkgeyByZXR1cm4gdGhp
czsgfQotCisgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIGludGVyZmFjZU5hbWUoKSBj
b25zdDsKICAgICB2aXJ0dWFsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKSBjb25zdDsKKwogICAgIHZpcnR1YWwgdm9pZCBjb250ZXh0RGVzdHJveWVkKCk7
CiAgICAgdmlydHVhbCBib29sIGNhblN1c3BlbmQoKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQg
c3VzcGVuZChSZWFzb25Gb3JTdXNwZW5zaW9uKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvRGVkaWNhdGVkV29ya2VyQ29udGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJDb250ZXh0LmNwcAkocmV2aXNpb24gOTgxNTEpCisr
KyBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL0RlZGljYXRlZFdvcmtlckNvbnRleHQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC00Niw2ICs0NiwxMSBAQCBEZWRpY2F0ZWRXb3JrZXJDb250ZXh0OjpEZWRp
Y2F0ZWRXb3JrZXJDCiB7CiB9CiAKK2NvbnN0IEF0b21pY1N0cmluZyYgRGVkaWNhdGVkV29ya2Vy
Q29udGV4dDo6aW50ZXJmYWNlTmFtZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGV2ZW50TmFtZXMo
KS5pbnRlcmZhY2VGb3JEZWRpY2F0ZWRXb3JrZXJDb250ZXh0OworfQorCiAvLyBGSVhNRTogcmVt
b3ZlIHRoaXMgd2hlbiB3ZSB1cGRhdGUgdGhlIE9iakMgYmluZGluZ3MgKGJ1ZyAjMjg3NzQpLgog
dm9pZCBEZWRpY2F0ZWRXb3JrZXJDb250ZXh0Ojpwb3N0TWVzc2FnZShQYXNzUmVmUHRyPFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZT4gbWVzc2FnZSwgTWVzc2FnZVBvcnQqIHBvcnQsIEV4Y2VwdGlvbkNv
ZGUmIGVjKQogewpJbmRleDogU291cmNlL1dlYkNvcmUvd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJD
b250ZXh0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvd29ya2Vycy9EZWRpY2F0ZWRX
b3JrZXJDb250ZXh0LmgJKHJldmlzaW9uIDk4MTUxKQorKysgU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9EZWRpY2F0ZWRXb3JrZXJDb250ZXh0LmgJKHdvcmtpbmcgY29weSkKQEAgLTU0LDcgKzU0LDgg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFsIHZvaWQgaW1wb3J0U2NyaXB0
cyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgdXJscywgRXhjZXB0aW9uQ29kZSYpOwogCiAgICAgICAg
IC8vIEV2ZW50VGFyZ2V0Ci0gICAgICAgIHZpcnR1YWwgRGVkaWNhdGVkV29ya2VyQ29udGV4dCog
dG9EZWRpY2F0ZWRXb3JrZXJDb250ZXh0KCkgeyByZXR1cm4gdGhpczsgfQorICAgICAgICB2aXJ0
dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgaW50ZXJmYWNlTmFtZSgpIGNvbnN0OworCiAgICAgICAg
IHZvaWQgcG9zdE1lc3NhZ2UoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+LCBFeGNl
cHRpb25Db2RlJik7CiAgICAgICAgIHZvaWQgcG9zdE1lc3NhZ2UoUGFzc1JlZlB0cjxTZXJpYWxp
emVkU2NyaXB0VmFsdWU+LCBjb25zdCBNZXNzYWdlUG9ydEFycmF5KiwgRXhjZXB0aW9uQ29kZSYp
OwogICAgICAgICAvLyBGSVhNRTogcmVtb3ZlIHRoaXMgd2hlbiB3ZSB1cGRhdGUgdGhlIE9iakMg
YmluZGluZ3MgKGJ1ZyAjMjg3NzQpLgpJbmRleDogU291cmNlL1dlYkNvcmUvd29ya2Vycy9EZWZh
dWx0U2hhcmVkV29ya2VyUmVwb3NpdG9yeS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvd29ya2Vycy9EZWZhdWx0U2hhcmVkV29ya2VyUmVwb3NpdG9yeS5jcHAJKHJldmlzaW9uIDk4
MTUxKQorKysgU291cmNlL1dlYkNvcmUvd29ya2Vycy9EZWZhdWx0U2hhcmVkV29ya2VyUmVwb3Np
dG9yeS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1OSw3ICsyNTksNyBAQCBwcml2YXRlOgogICAg
ICAgICAvLyBTaW5jZSBjbG9zZSgpIHN0b3BzIHRoZSB0aHJlYWQgZXZlbnQgbG9vcCwgdGhpcyBz
aG91bGQgbm90IGV2ZXIgZ2V0IGNhbGxlZCB3aGlsZSBjbG9zaW5nLgogICAgICAgICBBU1NFUlQo
IXdvcmtlckNvbnRleHQtPmlzQ2xvc2luZygpKTsKICAgICAgICAgQVNTRVJUKHdvcmtlckNvbnRl
eHQtPmlzU2hhcmVkV29ya2VyQ29udGV4dCgpKTsKLSAgICAgICAgd29ya2VyQ29udGV4dC0+dG9T
aGFyZWRXb3JrZXJDb250ZXh0KCktPmRpc3BhdGNoRXZlbnQoY3JlYXRlQ29ubmVjdEV2ZW50KHBv
cnQpKTsKKyAgICAgICAgd29ya2VyQ29udGV4dC0+ZGlzcGF0Y2hFdmVudChjcmVhdGVDb25uZWN0
RXZlbnQocG9ydCkpOwogICAgIH0KIAogICAgIE93blB0cjxNZXNzYWdlUG9ydENoYW5uZWw+IG1f
Y2hhbm5lbDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2hhcmVkV29ya2VyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL1NoYXJlZFdvcmtlci5jcHAJKHJl
dmlzaW9uIDk4MTUxKQorKysgU291cmNlL1dlYkNvcmUvd29ya2Vycy9TaGFyZWRXb3JrZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC03Myw2ICs3MywxMSBAQCBTaGFyZWRXb3JrZXI6On5TaGFyZWRX
b3JrZXIoKQogewogfQogCitjb25zdCBBdG9taWNTdHJpbmcmIFNoYXJlZFdvcmtlcjo6aW50ZXJm
YWNlTmFtZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGV2ZW50TmFtZXMoKS5pbnRlcmZhY2VGb3JT
aGFyZWRXb3JrZXI7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmICAvLyBF
TkFCTEUoU0hBUkVEX1dPUktFUlMpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL1NoYXJl
ZFdvcmtlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2hhcmVkV29y
a2VyLmgJKHJldmlzaW9uIDk4MTUxKQorKysgU291cmNlL1dlYkNvcmUvd29ya2Vycy9TaGFyZWRX
b3JrZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNDUsNiArNDUsOCBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKICAgICAgICAgTWVzc2FnZVBvcnQqIHBvcnQoKSBjb25zdCB7IHJldHVybiBtX3BvcnQu
Z2V0KCk7IH0KIAorICAgICAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgaW50ZXJmYWNl
TmFtZSgpIGNvbnN0OworCiAgICAgcHJpdmF0ZToKICAgICAgICAgU2hhcmVkV29ya2VyKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvd29ya2Vycy9TaGFy
ZWRXb3JrZXJDb250ZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS93b3JrZXJz
L1NoYXJlZFdvcmtlckNvbnRleHQuY3BwCShyZXZpc2lvbiA5ODE1MSkKKysrIFNvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvU2hhcmVkV29ya2VyQ29udGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU5
LDYgKzU5LDExIEBAIFNoYXJlZFdvcmtlckNvbnRleHQ6On5TaGFyZWRXb3JrZXJDb250ZXgKIHsK
IH0KIAorY29uc3QgQXRvbWljU3RyaW5nJiBTaGFyZWRXb3JrZXJDb250ZXh0OjppbnRlcmZhY2VO
YW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZXZlbnROYW1lcygpLmludGVyZmFjZUZvclNoYXJl
ZFdvcmtlckNvbnRleHQ7Cit9CisKIFNoYXJlZFdvcmtlclRocmVhZCogU2hhcmVkV29ya2VyQ29u
dGV4dDo6dGhyZWFkKCkKIHsKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8U2hhcmVkV29ya2VyVGhy
ZWFkKj4oQmFzZTo6dGhyZWFkKCkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvd29ya2Vycy9TaGFy
ZWRXb3JrZXJDb250ZXh0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvd29ya2Vycy9T
aGFyZWRXb3JrZXJDb250ZXh0LmgJKHJldmlzaW9uIDk4MTUxKQorKysgU291cmNlL1dlYkNvcmUv
d29ya2Vycy9TaGFyZWRXb3JrZXJDb250ZXh0LmgJKHdvcmtpbmcgY29weSkKQEAgLTUyLDcgKzUy
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNTaGFyZWRX
b3JrZXJDb250ZXh0KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogCiAgICAgICAgIC8vIEV2ZW50
VGFyZ2V0Ci0gICAgICAgIHZpcnR1YWwgU2hhcmVkV29ya2VyQ29udGV4dCogdG9TaGFyZWRXb3Jr
ZXJDb250ZXh0KCkgeyByZXR1cm4gdGhpczsgfQorICAgICAgICB2aXJ0dWFsIGNvbnN0IEF0b21p
Y1N0cmluZyYgaW50ZXJmYWNlTmFtZSgpIGNvbnN0OwogCiAgICAgICAgIC8vIFNldHRlcnMvR2V0
dGVycyBmb3IgYXR0cmlidXRlcyBpbiBTaGFyZWRXb3JrZXJDb250ZXh0LmlkbAogICAgICAgICBE
RUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKGNvbm5lY3QpOwpJbmRleDogU291cmNlL1dl
YkNvcmUvd29ya2Vycy9Xb3JrZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvV29ya2VyLmNwcAkocmV2aXNpb24gOTgxNTEpCisrKyBTb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL1dvcmtlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg1LDYgKzg1LDExIEBAIFdvcmtlcjo6
fldvcmtlcigpCiAgICAgbV9jb250ZXh0UHJveHktPndvcmtlck9iamVjdERlc3Ryb3llZCgpOwog
fQogCitjb25zdCBBdG9taWNTdHJpbmcmIFdvcmtlcjo6aW50ZXJmYWNlTmFtZSgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIGV2ZW50TmFtZXMoKS5pbnRlcmZhY2VGb3JXb3JrZXI7Cit9CisKIC8vIEZJ
WE1FOiByZW1vdmUgdGhpcyB3aGVuIHdlIHVwZGF0ZSB0aGUgT2JqQyBiaW5kaW5ncyAoYnVnICMy
ODc3NCkuCiB2b2lkIFdvcmtlcjo6cG9zdE1lc3NhZ2UoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2Ny
aXB0VmFsdWU+IG1lc3NhZ2UsIE1lc3NhZ2VQb3J0KiBwb3J0LCBFeGNlcHRpb25Db2RlJiBlYykK
IHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXIuaAkocmV2aXNpb24gOTgxNTEpCisrKyBTb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlci5oCSh3b3JraW5nIGNvcHkpCkBAIC01NCw3ICs1NCw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8V29ya2Vy
PiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYgdXJsLCBFeGNl
cHRpb25Db2RlJik7CiAgICAgICAgIHZpcnR1YWwgfldvcmtlcigpOwogCi0gICAgICAgIHZpcnR1
YWwgV29ya2VyKiB0b1dvcmtlcigpIHsgcmV0dXJuIHRoaXM7IH0KKyAgICAgICAgdmlydHVhbCBj
b25zdCBBdG9taWNTdHJpbmcmIGludGVyZmFjZU5hbWUoKSBjb25zdDsKIAogICAgICAgICB2b2lk
IHBvc3RNZXNzYWdlKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBtZXNzYWdlLCBF
eGNlcHRpb25Db2RlJik7CiAgICAgICAgIHZvaWQgcG9zdE1lc3NhZ2UoUGFzc1JlZlB0cjxTZXJp
YWxpemVkU2NyaXB0VmFsdWU+IG1lc3NhZ2UsIGNvbnN0IE1lc3NhZ2VQb3J0QXJyYXkqLCBFeGNl
cHRpb25Db2RlJik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAJKHJl
dmlzaW9uIDk4MTUxKQorKysgU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTExOCw2ICsxMTE4LDExIEBAIHZvaWQgWE1MSHR0cFJlcXVlc3Q6
OmNvbnRleHREZXN0cm95ZWQoKQogICAgIEFjdGl2ZURPTU9iamVjdDo6Y29udGV4dERlc3Ryb3ll
ZCgpOwogfQogCitjb25zdCBBdG9taWNTdHJpbmcmIFhNTEh0dHBSZXF1ZXN0OjppbnRlcmZhY2VO
YW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZXZlbnROYW1lcygpLmludGVyZmFjZUZvclhNTEh0
dHBSZXF1ZXN0OworfQorCiBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBYTUxIdHRwUmVxdWVzdDo6
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIEFjdGl2ZURPTU9i
amVjdDo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwpJbmRleDogU291cmNlL1dlYkNvcmUveG1s
L1hNTEh0dHBSZXF1ZXN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUveG1sL1hNTEh0
dHBSZXF1ZXN0LmgJKHJldmlzaW9uIDk4MTUxKQorKysgU291cmNlL1dlYkNvcmUveG1sL1hNTEh0
dHBSZXF1ZXN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTY5LDE0ICs2OSwxMyBAQCBwdWJsaWM6CiAg
ICAgICAgIFJlc3BvbnNlVHlwZUFycmF5QnVmZmVyCiAgICAgfTsKIAotICAgIHZpcnR1YWwgWE1M
SHR0cFJlcXVlc3QqIHRvWE1MSHR0cFJlcXVlc3QoKSB7IHJldHVybiB0aGlzOyB9Ci0KICAgICB2
aXJ0dWFsIHZvaWQgY29udGV4dERlc3Ryb3llZCgpOwogICAgIHZpcnR1YWwgYm9vbCBjYW5TdXNw
ZW5kKCkgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIHN1c3BlbmQoUmVhc29uRm9yU3VzcGVuc2lv
bik7CiAgICAgdmlydHVhbCB2b2lkIHJlc3VtZSgpOwogICAgIHZpcnR1YWwgdm9pZCBzdG9wKCk7
CiAKKyAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgaW50ZXJmYWNlTmFtZSgpIGNvbnN0
OwogICAgIHZpcnR1YWwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpIGNvbnN0OwogCiAgICAgY29uc3QgS1VSTCYgdXJsKCkgY29uc3QgeyByZXR1cm4gbV91
cmw7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdFVwbG9hZC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0VXBsb2FkLmNw
cAkocmV2aXNpb24gOTgxNTEpCisrKyBTb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3RV
cGxvYWQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MSw2ICs0MSwxMSBAQCBYTUxIdHRwUmVxdWVz
dFVwbG9hZDo6WE1MSHR0cFJlcXVlc3RVcGxvCiB7CiB9CiAKK2NvbnN0IEF0b21pY1N0cmluZyYg
WE1MSHR0cFJlcXVlc3RVcGxvYWQ6OmludGVyZmFjZU5hbWUoKSBjb25zdAoreworICAgIHJldHVy
biBldmVudE5hbWVzKCkuaW50ZXJmYWNlRm9yWE1MSHR0cFJlcXVlc3RVcGxvYWQ7Cit9CisKIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIFhNTEh0dHBSZXF1ZXN0VXBsb2FkOjpzY3JpcHRFeGVjdXRp
b25Db250ZXh0KCkgY29uc3QKIHsKICAgICByZXR1cm4gbV94bWxIdHRwUmVxdWVzdC0+c2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpOwpJbmRleDogU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1
ZXN0VXBsb2FkLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1
ZXN0VXBsb2FkLmgJKHJldmlzaW9uIDk4MTUxKQorKysgU291cmNlL1dlYkNvcmUveG1sL1hNTEh0
dHBSZXF1ZXN0VXBsb2FkLmgJKHdvcmtpbmcgY29weSkKQEAgLTU0LDggKzU0LDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogICAgICAgICB2b2lkIGRlcmVmKCkgeyBtX3htbEh0dHBSZXF1ZXN0LT5k
ZXJlZigpOyB9CiAgICAgICAgIFhNTEh0dHBSZXF1ZXN0KiB4bWxIdHRwUmVxdWVzdCgpIGNvbnN0
IHsgcmV0dXJuIG1feG1sSHR0cFJlcXVlc3Q7IH0KIAotICAgICAgICB2aXJ0dWFsIFhNTEh0dHBS
ZXF1ZXN0VXBsb2FkKiB0b1hNTEh0dHBSZXF1ZXN0VXBsb2FkKCkgeyByZXR1cm4gdGhpczsgfQot
CisgICAgICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBpbnRlcmZhY2VOYW1lKCkgY29u
c3Q7CiAgICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKSBjb25zdDsKIAogICAgICAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKGFi
b3J0KTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCShyZXZpc2lvbiA5ODE4MikKKysr
IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMTUgQEAKKzIwMTEtMTAtMjEgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KKwor
ICAgICAgICBFdmVudFRhcmdldC5oIHNob3VsZG4ndCBuZWVkIHRvIGtub3cgYWJvdXQgZXZlcnkg
ZmVhdHVyZSBhbmQgaWZkZWYKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTcwNjU5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgVGhpcyBjYXN0IGlzbid0IG5lZWRlZCBiZWNhdXNlIGRpc3BhdGNoRXZlbnQgaXMg
YSB2aXJ0dWFsIGZ1bmN0aW9uLgorCisgICAgICAgICogc3JjL1dlYlNoYXJlZFdvcmtlckltcGwu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJTaGFyZWRXb3JrZXJJbXBsOjpjb25uZWN0VGFzayk6
CisKIDIwMTEtMTAtMjEgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KIAogICAgICAg
ICBJbnRyb2R1Y2UgRXZlbnQ6Omhhc0ludGVyZmFjZSB0byBtYWtlIHVzZXMgb2YgaW50ZXJmYWNl
TmFtZSBtb3JlIHJlYWRhYmxlCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJT
aGFyZWRXb3JrZXJJbXBsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJTaGFyZWRXb3JrZXJJbXBsLmNwcAkocmV2aXNpb24gOTgxNTEpCisrKyBTb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTaGFyZWRXb3JrZXJJbXBsLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtOTIsNyArOTIsNyBAQCB2b2lkIFdlYlNoYXJlZFdvcmtlckltcGw6OmNvbm5lY3RUYXNr
KFNjCiAgICAgQVNTRVJUKGNvbnRleHQtPmlzV29ya2VyQ29udGV4dCgpKTsKICAgICBXb3JrZXJD
b250ZXh0KiB3b3JrZXJDb250ZXh0ID0gc3RhdGljX2Nhc3Q8V29ya2VyQ29udGV4dCo+KGNvbnRl
eHQpOwogICAgIEFTU0VSVCh3b3JrZXJDb250ZXh0LT5pc1NoYXJlZFdvcmtlckNvbnRleHQoKSk7
Ci0gICAgd29ya2VyQ29udGV4dC0+dG9TaGFyZWRXb3JrZXJDb250ZXh0KCktPmRpc3BhdGNoRXZl
bnQoY3JlYXRlQ29ubmVjdEV2ZW50KHBvcnQpKTsKKyAgICB3b3JrZXJDb250ZXh0LT5kaXNwYXRj
aEV2ZW50KGNyZWF0ZUNvbm5lY3RFdmVudChwb3J0KSk7CiB9CiAKIHZvaWQgV2ViU2hhcmVkV29y
a2VySW1wbDo6c3RhcnRXb3JrZXJDb250ZXh0KGNvbnN0IFdlYlVSTCYgdXJsLCBjb25zdCBXZWJT
dHJpbmcmIG5hbWUsIGNvbnN0IFdlYlN0cmluZyYgdXNlckFnZW50LCBjb25zdCBXZWJTdHJpbmcm
IHNvdXJjZUNvZGUsIGxvbmcgbG9uZykKSW5kZXg6IFNvdXJjZS9jbWFrZS9XZWJLaXRNYWNyb3Mu
Y21ha2UKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL2NtYWtlL1dlYktpdE1hY3Jvcy5jbWFrZQkocmV2
aXNpb24gOTgxNTEpCisrKyBTb3VyY2UvY21ha2UvV2ViS2l0TWFjcm9zLmNtYWtlCSh3b3JraW5n
IGNvcHkpCkBAIC0zNywxMCArMzcsMTAgQEAgTUFDUk8gKEdFTkVSQVRFX0ZPTlRfTkFNRVMgX2lu
ZmlsZSkKIEVORE1BQ1JPICgpCiAKIAotTUFDUk8gKEdFTkVSQVRFX0VWRU5UX0ZBQ1RPUlkgX2lu
ZmlsZSkKK01BQ1JPIChHRU5FUkFURV9FVkVOVF9GQUNUT1JZIF9pbmZpbGUgX291dGZpbGUpCiAg
ICAgU0VUKE5BTUVTX0dFTkVSQVRPUiAke1dFQkNPUkVfRElSfS9kb20vbWFrZV9ldmVudF9mYWN0
b3J5LnBsKQogICAgIFNFVChfYXJndW1lbnRzICAtLWV2ZW50cyAke19pbmZpbGV9KQotICAgIFNF
VChfb3V0cHV0ZmlsZXMgJHtERVJJVkVEX1NPVVJDRVNfV0VCQ09SRV9ESVJ9L0V2ZW50RmFjdG9y
eS5jcHApCisgICAgU0VUKF9vdXRwdXRmaWxlcyAke0RFUklWRURfU09VUkNFU19XRUJDT1JFX0RJ
Un0vJHtfb3V0ZmlsZX0pCiAKICAgICBBRERfQ1VTVE9NX0NPTU1BTkQoCiAgICAgICAgIE9VVFBV
VCAgJHtfb3V0cHV0ZmlsZXN9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>112104</attachid>
            <date>2011-10-22 21:12:18 -0700</date>
            <delta_ts>2011-10-24 14:18:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-70659-20111022211217.patch</filename>
            <type>text/plain</type>
            <size>78774</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDk4MTk3KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTM0IEBACisyMDExLTEwLTIxICBBZGFtIEJh
cnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CisKKyAgICAgICAgRXZlbnRUYXJnZXQuaCBzaG91bGRu
J3QgbmVlZCB0byBrbm93IGFib3V0IGV2ZXJ5IGZlYXR1cmUgYW5kIGlmZGVmCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MDY1OQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggZm9sbG93cyB0
aGUgYXBwcm9hY2ggb2YgRXZlbnQuaCBhbmQgaW50cm9kdWNlcyBhbgorICAgICAgICBpbnRlcmZh
Y2VOYW1lIHZpcnR1YWwgZnVuY3Rpb24gdGhhdCByZXR1cm5zIHRoZSBuYW1lIG9mIHRoZSBET00K
KyAgICAgICAgaW50ZXJmYWNlIGZvciB0aGUgY29uY3JldGUgdHlwZSBvZiB0aGUgb2JqZWN0LiAg
VGhpcyBmdW5jdGlvbiBsZXRzIHVzCisgICAgICAgIHJlbW92ZSBhIGxhcmdlIG51bWJlciBvZiBm
YWtlIGR5bmFtaWMgY2FzdHMuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAg
KiBDb2RlR2VuZXJhdG9ycy5wcmk6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAg
ICAgICAgKiBHTlVtYWtlZmlsZS5hbToKKyAgICAgICAgKiBXZWJDb3JlLmd5cC9XZWJDb3JlLmd5
cDoKKyAgICAgICAgKiBXZWJDb3JlLmd5cC9zY3JpcHRzL2FjdGlvbl9tYWtlbmFtZXMucHk6Cisg
ICAgICAgICAgICAtIFRlYWNoIGFjdGlvbl9tYWtlbmFtZXMgaG93IHRvIGhhbmRsZSB0aGUgbmV3
ICJpbiIgZmlsZS4KKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS52
Y3Byb2ovV2ViQ29yZS52Y3Byb2o6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRXZlbnRUYXJnZXQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6dG9KUyk6CisgICAgICAgICAgICAtIFVzZSB0aGUgbmV3IGF1dG9nZW5l
cmF0ZWQgbWFjcm8gdG8gcmVtb3ZlIGEgbGFyZ2UgYW1vdW50IG9mCisgICAgICAgICAgICAgIGZl
YXR1cmUtc3BlY2lmaWMgY29kZS4KKyAgICAgICAgKiBiaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRD
b250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclNjcmlwdENvbnRyb2xsZXI6
OmluaXRTY3JpcHQpOgorICAgICAgICAqIGJpbmRpbmdzL29iamMvRE9NLm1tOgorICAgICAgICAo
a2l0KToKKyAgICAgICAgICAgIC0gVGhlIFNWR0VsZW1lbnRJbnN0YW5jZSBicmFuY2ggd2FzIG5l
dmVyIHRha2VuIHByZXZpb3VzbHkgYmVjYXVzZQorICAgICAgICAgICAgICBTVkdFbGVtZW50SW5z
dGFuY2U6OnRvTm9kZSByZXR1cm5zIGEgbm9uLU5VTEwgdmFsdWUuIFRoaXMgY29kZQorICAgICAg
ICAgICAgICB3YXMgaW50cm9kdWNlZCBpbiBodHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNl
dC80MjYxOCBhbmQKKyAgICAgICAgICAgICAgZG9lc24ndCBhcHBlYXIgdG8gaGF2ZSBldmVyIHdv
cmtlZCBhcyB0aGUgYXV0aG9yIGludGVuZGVkLgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4RE9N
V3JhcHBlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOERPTVdyYXBwZXI6OmNvbnZlcnRFdmVu
dFRhcmdldFRvVjhPYmplY3QpOgorICAgICAgICAgICAgLSBVc2UgdGhlIG5ldyBhdXRvZ2VuZXJh
dGVkIG1hY3JvIHRvIHJlbW92ZSBhIGxhcmdlIGFtb3VudCBvZgorICAgICAgICAgICAgICBmZWF0
dXJlLXNwZWNpZmljIGNvZGUuCisgICAgICAgICogZG9tL0V2ZW50TmFtZXMuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RXZlbnROYW1lczo6RXZlbnROYW1lcyk6CisgICAgICAgICogZG9tL0V2ZW50
TmFtZXMuaDoKKyAgICAgICAgKiBkb20vRXZlbnRUYXJnZXQuY3BwOgorICAgICAgICAqIGRvbS9F
dmVudFRhcmdldC5oOgorICAgICAgICAqIGRvbS9FdmVudFRhcmdldEZhY3RvcnkuaW46IEFkZGVk
LgorICAgICAgICAgICAgLSBBZGQgYSBuZXcgImluIiBmaWxlIHRoYXQgbGlzdHMgYWxsIHRoZSBF
dmVudFRhcmdldHMuCisgICAgICAgICogZG9tL0xvY2FsTWVkaWFTdHJlYW0uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6TG9jYWxNZWRpYVN0cmVhbTo6aW50ZXJmYWNlTmFtZSk6CisgICAgICAgICog
ZG9tL0xvY2FsTWVkaWFTdHJlYW0uaDoKKyAgICAgICAgKiBkb20vTWVkaWFTdHJlYW0uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW06OmludGVyZmFjZU5hbWUpOgorICAgICAgICAq
IGRvbS9NZWRpYVN0cmVhbS5oOgorICAgICAgICAqIGRvbS9NZXNzYWdlUG9ydC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpNZXNzYWdlUG9ydDo6aW50ZXJmYWNlTmFtZSk6CisgICAgICAgICogZG9t
L01lc3NhZ2VQb3J0Lmg6CisgICAgICAgICogZG9tL05vZGUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Tm9kZTo6dG9Ob2RlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OmludGVyZmFjZU5hbWUp
OgorICAgICAgICAqIGRvbS9Ob2RlLmg6CisgICAgICAgICogZG9tL21ha2VfZXZlbnRfZmFjdG9y
eS5wbDoKKyAgICAgICAgICAgIC0gR2VuZXJhbGl6ZSBtYWtlX2V2ZW50X2ZhY3RvcnkucGwgdG8g
YmUgYWJsZSB0byBnZW5lcmF0ZQorICAgICAgICAgICAgICBpbnRlcmZhY2VzIGZvciBkaWZmZXJl
bnQgbmFtZXNwYWNlcy4KKyAgICAgICAgKiBmaWxlYXBpL0ZpbGVSZWFkZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RmlsZVJlYWRlcjo6aW50ZXJmYWNlTmFtZSk6CisgICAgICAgICogZmlsZWFw
aS9GaWxlUmVhZGVyLmg6CisgICAgICAgICogZmlsZWFwaS9GaWxlV3JpdGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkZpbGVXcml0ZXI6OmludGVyZmFjZU5hbWUpOgorICAgICAgICAqIGZpbGVh
cGkvRmlsZVdyaXRlci5oOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9ET01BcHBsaWNhdGlv
bkNhY2hlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTUFwcGxpY2F0aW9uQ2FjaGU6OmludGVy
ZmFjZU5hbWUpOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9ET01BcHBsaWNhdGlvbkNhY2hl
Lmg6CisgICAgICAgICogbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Tm90aWZpY2F0aW9uOjppbnRlcmZhY2VOYW1lKToKKyAgICAgICAgKiBub3RpZmlj
YXRpb25zL05vdGlmaWNhdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uOjpz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KToKKyAgICAgICAgKiBwMnAvUGVlckNvbm5lY3Rpb24uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UGVlckNvbm5lY3Rpb246OmludGVyZmFjZU5hbWUpOgorICAg
ICAgICAqIHAycC9QZWVyQ29ubmVjdGlvbi5oOgorICAgICAgICAqIHBhZ2UvRE9NV2luZG93LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvdzo6aW50ZXJmYWNlTmFtZSk6CisgICAgICAg
IChXZWJDb3JlOjpET01XaW5kb3c6OnRvRE9NV2luZG93KToKKyAgICAgICAgKiBwYWdlL0RPTVdp
bmRvdy5oOgorICAgICAgICAqIHBhZ2UvRXZlbnRTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RXZlbnRTb3VyY2U6OmludGVyZmFjZU5hbWUpOgorICAgICAgICAqIHBhZ2UvRXZlbnRTb3Vy
Y2UuaDoKKyAgICAgICAgKiBzdG9yYWdlL0lEQkRhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OklEQkRhdGFiYXNlOjppbnRlcmZhY2VOYW1lKToKKyAgICAgICAgKiBzdG9yYWdlL0lEQkRh
dGFiYXNlLmg6CisgICAgICAgICogc3RvcmFnZS9JREJSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OklEQlJlcXVlc3Q6OmludGVyZmFjZU5hbWUpOgorICAgICAgICAqIHN0b3JhZ2UvSURC
UmVxdWVzdC5oOgorICAgICAgICAqIHN0b3JhZ2UvSURCVHJhbnNhY3Rpb24uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OmludGVyZmFjZU5hbWUpOgorICAgICAgICAqIHN0
b3JhZ2UvSURCVHJhbnNhY3Rpb24uaDoKKyAgICAgICAgKiBzdG9yYWdlL0lEQlZlcnNpb25DaGFu
Z2VSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlZlcnNpb25DaGFuZ2VSZXF1ZXN0
OjppbnRlcmZhY2VOYW1lKToKKyAgICAgICAgKiBzdG9yYWdlL0lEQlZlcnNpb25DaGFuZ2VSZXF1
ZXN0Lmg6CisgICAgICAgICogc3ZnL1NWR0VsZW1lbnRJbnN0YW5jZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdFbGVtZW50SW5zdGFuY2U6OmludGVyZmFjZU5hbWUpOgorICAgICAgICAqIHN2
Zy9TVkdFbGVtZW50SW5zdGFuY2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VsZW1lbnRJbnN0
YW5jZTo6dG9Ob2RlKToKKyAgICAgICAgKiB3ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6QXVkaW9Db250ZXh0OjppbnRlcmZhY2VOYW1lKToKKyAgICAgICAgKFdl
YkNvcmU6OkF1ZGlvQ29udGV4dDo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCk6CisgICAgICAgICog
d2ViYXVkaW8vQXVkaW9Db250ZXh0Lmg6CisgICAgICAgICogd2ViYXVkaW8vSmF2YVNjcmlwdEF1
ZGlvTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKYXZhU2NyaXB0QXVkaW9Ob2RlOjppbnRl
cmZhY2VOYW1lKToKKyAgICAgICAgKiB3ZWJhdWRpby9KYXZhU2NyaXB0QXVkaW9Ob2RlLmg6Cisg
ICAgICAgICogd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
U29ja2V0OjppbnRlcmZhY2VOYW1lKToKKyAgICAgICAgKiB3ZWJzb2NrZXRzL1dlYlNvY2tldC5o
OgorICAgICAgICAqIHdvcmtlcnMvRGVkaWNhdGVkV29ya2VyQ29udGV4dC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpEZWRpY2F0ZWRXb3JrZXJDb250ZXh0OjppbnRlcmZhY2VOYW1lKToKKyAgICAg
ICAgKiB3b3JrZXJzL0RlZGljYXRlZFdvcmtlckNvbnRleHQuaDoKKyAgICAgICAgKiB3b3JrZXJz
L0RlZmF1bHRTaGFyZWRXb3JrZXJSZXBvc2l0b3J5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNo
YXJlZFdvcmtlckNvbm5lY3RUYXNrOjpwZXJmb3JtVGFzayk6CisgICAgICAgICogd29ya2Vycy9T
aGFyZWRXb3JrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkV29ya2VyOjppbnRlcmZh
Y2VOYW1lKToKKyAgICAgICAgKiB3b3JrZXJzL1NoYXJlZFdvcmtlci5oOgorICAgICAgICAqIHdv
cmtlcnMvU2hhcmVkV29ya2VyQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRX
b3JrZXJDb250ZXh0OjppbnRlcmZhY2VOYW1lKToKKyAgICAgICAgKiB3b3JrZXJzL1NoYXJlZFdv
cmtlckNvbnRleHQuaDoKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpXb3JrZXI6OmludGVyZmFjZU5hbWUpOgorICAgICAgICAqIHdvcmtlcnMvV29ya2Vy
Lmg6CisgICAgICAgICogeG1sL1hNTEh0dHBSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlhNTEh0dHBSZXF1ZXN0OjppbnRlcmZhY2VOYW1lKToKKyAgICAgICAgKiB4bWwvWE1MSHR0cFJl
cXVlc3QuaDoKKyAgICAgICAgKiB4bWwvWE1MSHR0cFJlcXVlc3RVcGxvYWQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3RVcGxvYWQ6OmludGVyZmFjZU5hbWUpOgorICAgICAg
ICAqIHhtbC9YTUxIdHRwUmVxdWVzdFVwbG9hZC5oOgorCiAyMDExLTEwLTIyICBBZGFtIEJlcmdr
dmlzdCAgPGFkYW0uYmVyZ2t2aXN0QGVyaWNzc29uLmNvbT4KIAogICAgICAgICBNb3ZlIGFsbCBN
ZWRpYVN0cmVhbSBhbmQgUGVlckNvbm5lY3Rpb24gcmVsYXRlZCBub24tcGxhdGZvcm0gZmlsZXMg
dG8gV2ViQ29yZS9tZWRpYXN0cmVhbQpJbmRleDogU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50
eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9u
IDk4MTk3KQorKysgU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkK
QEAgLTIzMTUsMTAgKzIzMTUsMTMgQEAgR0VORVJBVEVfRE9NX05BTUVTKEhUTUwgJHtXRUJDT1JF
X0RJUn0vaAogTElTVChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTICR7REVSSVZFRF9TT1VSQ0VTX1dF
QkNPUkVfRElSfS9IVE1MTmFtZXMuY3BwICR7REVSSVZFRF9TT1VSQ0VTX1dFQkNPUkVfRElSfS9I
VE1MRWxlbWVudEZhY3RvcnkuY3BwICR7REVSSVZFRF9TT1VSQ0VTX1dFQkNPUkVfRElSfS9KU0hU
TUxFbGVtZW50V3JhcHBlckZhY3RvcnkuY3BwKQogCiAKLUdFTkVSQVRFX0VWRU5UX0ZBQ1RPUlko
JHtXRUJDT1JFX0RJUn0vZG9tL0V2ZW50RmFjdG9yeS5pbikKK0dFTkVSQVRFX0VWRU5UX0ZBQ1RP
UlkoJHtXRUJDT1JFX0RJUn0vZG9tL0V2ZW50RmFjdG9yeS5pbiBFdmVudEZhY3RvcnkuY3BwKQog
TElTVChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTICR7REVSSVZFRF9TT1VSQ0VTX1dFQkNPUkVfRElS
fS9FdmVudEZhY3RvcnkuY3BwKQogCiAKK0dFTkVSQVRFX0VWRU5UX0ZBQ1RPUlkoJHtXRUJDT1JF
X0RJUn0vZG9tL0V2ZW50VGFyZ2V0RmFjdG9yeS5pbiBFdmVudEludGVyZmFjZXMuaCkKKworCiBH
RU5FUkFURV9GT05UX05BTUVTKCR7V0VCQ09SRV9ESVJ9L2Nzcy9XZWJLaXRGb250RmFtaWx5TmFt
ZXMuaW4pCiBMSVNUKEFQUEVORCBXZWJDb3JlX1NPVVJDRVMgJHtERVJJVkVEX1NPVVJDRVNfV0VC
Q09SRV9ESVJ9L1dlYktpdEZvbnRGYW1pbHlOYW1lcy5jcHApCiAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL0NvZGVHZW5lcmF0b3JzLnByaQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Db2Rl
R2VuZXJhdG9ycy5wcmkJKHJldmlzaW9uIDk4MTk3KQorKysgU291cmNlL1dlYkNvcmUvQ29kZUdl
bmVyYXRvcnMucHJpCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw2ICszNCw4IEBAIEhUTUxfRU5USVRJ
RVMgPSAkJFBXRC9odG1sL3BhcnNlci9IVE1MRW4KIAogRVZFTlRfRkFDVE9SWSA9ICQkUFdEL2Rv
bS9FdmVudEZhY3RvcnkuaW4KIAorRVZFTlRfVEFSR0VUX0ZBQ1RPUlkgPSAkJFBXRC9kb20vRXZl
bnRUYXJnZXRGYWN0b3J5LmluCisKIENPTE9SREFUQV9HUEVSRiA9ICQkUFdEL3BsYXRmb3JtL0Nv
bG9yRGF0YS5ncGVyZgogCiBXQUxET0NTU1BST1BTID0gJCRQV0QvY3NzL0NTU1Byb3BlcnR5TmFt
ZXMuaW4KQEAgLTc2MSw2ICs3NjMsMTQgQEAgZXZlbnRmYWN0b3J5LmNvbW1hbmRzID0gcGVybCAt
SSQkUFdEL2JpbgogZXZlbnRmYWN0b3J5LmRlcGVuZHMgPSAkJFBXRC9kb20vbWFrZV9ldmVudF9m
YWN0b3J5LnBsICQkRVZFTlRfRkFDVE9SWQogYWRkRXh0cmFDb21waWxlcihldmVudGZhY3Rvcnkp
CiAKKyMgR0VORVJBVE9SIDUtRjoKK2V2ZW50ZmFjdG9yeS5vdXRwdXQgPSAkJHtXQ19HRU5FUkFU
RURfU09VUkNFU19ESVJ9L0V2ZW50VGFyZ2V0SW50ZXJmYWNlcy5oCitldmVudHRhcmdldGZhY3Rv
cnkuaW5wdXQgPSBFVkVOVF9UQVJHRVRfRkFDVE9SWQorZXZlbnR0YXJnZXRmYWN0b3J5LndrU2Ny
aXB0ID0gJCRQV0QvZG9tL21ha2VfZXZlbnRfZmFjdG9yeS5wbAorZXZlbnR0YXJnZXRmYWN0b3J5
LmNvbW1hbmRzID0gcGVybCAtSSQkUFdEL2JpbmRpbmdzL3NjcmlwdHMgJCRldmVudGZhY3Rvcnku
d2tTY3JpcHQgLS1ldmVudHMgJCRFVkVOVF9UQVJHRVRfRkFDVE9SWSAtLW91dHB1dERpciAkJFdD
X0dFTkVSQVRFRF9TT1VSQ0VTX0RJUgorZXZlbnR0YXJnZXRmYWN0b3J5LmRlcGVuZHMgPSAkJFBX
RC9kb20vbWFrZV9ldmVudF9mYWN0b3J5LnBsICQkRVZFTlRfVEFSR0VUX0ZBQ1RPUlkKK2FkZEV4
dHJhQ29tcGlsZXIoZXZlbnR0YXJnZXRmYWN0b3J5KQorCiAjIEdFTkVSQVRPUiA4LUE6CiBlbnRp
dGllcy5vdXRwdXQgPSAkJHtXQ19HRU5FUkFURURfU09VUkNFU19ESVJ9L0hUTUxFbnRpdHlUYWJs
ZS5jcHAKIGVudGl0aWVzLmlucHV0ID0gSFRNTF9FTlRJVElFUwpJbmRleDogU291cmNlL1dlYkNv
cmUvRGVyaXZlZFNvdXJjZXMubWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9EZXJp
dmVkU291cmNlcy5tYWtlCShyZXZpc2lvbiA5ODE5NykKKysrIFNvdXJjZS9XZWJDb3JlL0Rlcml2
ZWRTb3VyY2VzLm1ha2UJKHdvcmtpbmcgY29weSkKQEAgLTU4OCw2ICs1ODgsNyBAQCBhbGwgOiBc
CiAgICAgQ1NTVmFsdWVLZXl3b3Jkcy5oIFwKICAgICBDb2xvckRhdGEuY3BwIFwKICAgICBFdmVu
dEZhY3RvcnkuY3BwIFwKKyAgICBFdmVudFRhcmdldEludGVyZmFjZXMuaCBcCiAgICAgSFRNTEVs
ZW1lbnRGYWN0b3J5LmNwcCBcCiAgICAgSFRNTEVudGl0eVRhYmxlLmNwcCBcCiAgICAgSFRNTE5h
bWVzLmNwcCBcCkBAIC04NDgsMTEgKzg0OSwxNCBAQCBYTGlua05hbWVzLmNwcCA6IGRvbS9tYWtl
X25hbWVzLnBsIHN2Zy94CiAKICMgLS0tLS0tLS0KICAKLSMgUmVnaXN0ZXIgZXZlbnQgY29uc3Ry
dWN0b3JzCisjIFJlZ2lzdGVyIGV2ZW50IGNvbnN0cnVjdG9ycyBhbmQgdGFyZ2V0cwogCi1FdmVu
dEZhY3RvcnkuY3BwIDogZG9tL21ha2VfZXZlbnRfZmFjdG9yeS5wbCBkb20vRXZlbnRGYWN0b3J5
LmluCitFdmVudEZhY3RvcnkuY3BwIEV2ZW50SGVhZGVycy5oIEV2ZW50SW50ZXJmYWNlcy5oIDog
ZG9tL21ha2VfZXZlbnRfZmFjdG9yeS5wbCBkb20vRXZlbnRGYWN0b3J5LmluCiAJcGVybCAtSSAk
KFdlYkNvcmUpL2JpbmRpbmdzL3NjcmlwdHMgJDwgLS1ldmVudHMgJChXZWJDb3JlKS9kb20vRXZl
bnRGYWN0b3J5LmluCiAKK0V2ZW50VGFyZ2V0SGVhZGVycy5oIEV2ZW50VGFyZ2V0SW50ZXJmYWNl
cy5oIDogZG9tL21ha2VfZXZlbnRfZmFjdG9yeS5wbCBkb20vRXZlbnRUYXJnZXRGYWN0b3J5Lmlu
CisJcGVybCAtSSAkKFdlYkNvcmUpL2JpbmRpbmdzL3NjcmlwdHMgJDwgLS1ldmVudHMgJChXZWJD
b3JlKS9kb20vRXZlbnRUYXJnZXRGYWN0b3J5LmluCisKICMgLS0tLS0tLS0KICAKICMgTWF0aE1M
IHRhZyBhbmQgYXR0cmlidXRlIG5hbWVzLCBhbmQgZWxlbWVudCBmYWN0b3J5CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9H
TlVtYWtlZmlsZS5hbQkocmV2aXNpb24gOTgxOTcpCisrKyBTb3VyY2UvV2ViQ29yZS9HTlVtYWtl
ZmlsZS5hbQkod29ya2luZyBjb3B5KQpAQCAtNjg0LDYgKzY4NCw5IEBAIERlcml2ZWRTb3VyY2Vz
L1dlYkNvcmUvWE1MTmFtZXMuY3BwIERlcmkKIERlcml2ZWRTb3VyY2VzL1dlYkNvcmUvRXZlbnRG
YWN0b3J5LmNwcCBEZXJpdmVkU291cmNlcy9XZWJDb3JlL0V2ZW50SGVhZGVycy5oIERlcml2ZWRT
b3VyY2VzL1dlYkNvcmUvRXZlbnRJbnRlcmZhY2VzLmg6ICQoV2ViQ29yZSkvZG9tL21ha2VfZXZl
bnRfZmFjdG9yeS5wbCAkKFdlYkNvcmUpL2RvbS9FdmVudEZhY3RvcnkuaW4KIAkkKEFNX1ZfR0VO
KSQoUEVSTCkgLUkkKFdlYkNvcmUpL2JpbmRpbmdzL3NjcmlwdHMgJDwgLS1ldmVudHMgJChXZWJD
b3JlKS9kb20vRXZlbnRGYWN0b3J5LmluIC0tb3V0cHV0RGlyICIkKEdFTlNPVVJDRVNfV0VCQ09S
RSkiCiAKK0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvRXZlbnRUYXJnZXRIZWFkZXJzLmggRGVyaXZl
ZFNvdXJjZXMvV2ViQ29yZS9FdmVudFRhcmdldEludGVyZmFjZXMuaDogJChXZWJDb3JlKS9kb20v
bWFrZV9ldmVudF9mYWN0b3J5LnBsICQoV2ViQ29yZSkvZG9tL0V2ZW50VGFyZ2V0RmFjdG9yeS5p
bgorCSQoQU1fVl9HRU4pJChQRVJMKSAtSSQoV2ViQ29yZSkvYmluZGluZ3Mvc2NyaXB0cyAkPCAt
LWV2ZW50cyAkKFdlYkNvcmUpL2RvbS9FdmVudFRhcmdldEZhY3RvcnkuaW4gLS1vdXRwdXREaXIg
IiQoR0VOU09VUkNFU19XRUJDT1JFKSIKKwogIyBBbGwgV2ViIEluc3BlY3RvciBnZW5lcmF0ZWQg
ZmlsZXMgYXJlIGNyZWF0ZWQgd2l0aCB0aGlzIG9uZSBjYWxsIHRvIENvZGVHZW5lcmF0b3JJbnNw
ZWN0b3IucG0KIERlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSW5zcGVjdG9yUHJvdG9jb2xWZXJzaW9u
LmggOiAkKFdlYkNvcmUpL2luc3BlY3Rvci9JbnNwZWN0b3IuanNvbiAkKFdlYkNvcmUpL2luc3Bl
Y3Rvci9nZW5lcmF0ZS1pbnNwZWN0b3ItcHJvdG9jb2wtdmVyc2lvbgogCSQoUFlUSE9OKSAkKFdl
YkNvcmUpL2luc3BlY3Rvci9nZW5lcmF0ZS1pbnNwZWN0b3ItcHJvdG9jb2wtdmVyc2lvbiAtbyAk
KEdFTlNPVVJDRVNfV0VCQ09SRSkvSW5zcGVjdG9yUHJvdG9jb2xWZXJzaW9uLmggJChXZWJDb3Jl
KS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpzb24KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0dOVW1ha2Vm
aWxlLmxpc3QuYW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlz
dC5hbQkocmV2aXNpb24gOTgxOTcpCisrKyBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0
LmFtCSh3b3JraW5nIGNvcHkpCkBAIC0xMiw2ICsxMiw4IEBAIHdlYmNvcmVfYnVpbHRfc291cmNl
cyArPSBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9FdmVudEZhY3RvcnkuY3BwIFwKIAlEZXJp
dmVkU291cmNlcy9XZWJDb3JlL0V2ZW50SGVhZGVycy5oIFwKIAlEZXJpdmVkU291cmNlcy9XZWJD
b3JlL0V2ZW50SW50ZXJmYWNlcy5oIFwKKwlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0V2ZW50VGFy
Z2V0SGVhZGVycy5oIFwKKwlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0V2ZW50VGFyZ2V0SW50ZXJm
YWNlcy5oIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0hUTUxFbGVtZW50RmFjdG9yeS5jcHAg
XAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSFRNTEVsZW1lbnRGYWN0b3J5LmggXAogCURlcml2
ZWRTb3VyY2VzL1dlYkNvcmUvSFRNTEVudGl0eVRhYmxlLmNwcCBcCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLmd5cGkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS5n
eXBpCShyZXZpc2lvbiA5ODE5NykKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQkod29y
a2luZyBjb3B5KQpAQCAtNzA0OCw2ICs3MDQ4LDEwIEBACiAgICAgICAgICAgICAnPChQUk9EVUNU
X0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9EZWJ1Z2dlclNjcmlwdFNvdXJjZS5oJywKICAg
ICAgICAgICAgICc8KFBST0RVQ1RfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0RvY1R5cGVT
dHJpbmdzLmNwcCcsCiAgICAgICAgICAgICAnPChQUk9EVUNUX0RJUikvRGVyaXZlZFNvdXJjZXMv
V2ViQ29yZS9FdmVudEZhY3RvcnkuY3BwJywKKyAgICAgICAgICAgICc8KFBST0RVQ1RfRElSKS9E
ZXJpdmVkU291cmNlcy9XZWJDb3JlL0V2ZW50SGVhZGVycy5oJywKKyAgICAgICAgICAgICc8KFBS
T0RVQ1RfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0V2ZW50SW50ZXJmYWNlcy5oJywKKyAg
ICAgICAgICAgICc8KFBST0RVQ1RfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0V2ZW50VGFy
Z2V0SGVhZGVycy5oJywKKyAgICAgICAgICAgICc8KFBST0RVQ1RfRElSKS9EZXJpdmVkU291cmNl
cy9XZWJDb3JlL0V2ZW50VGFyZ2V0SW50ZXJmYWNlcy5oJywKICAgICAgICAgICAgICc8KFBST0RV
Q1RfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0hUTUxFbGVtZW50RmFjdG9yeS5jcHAnLAog
ICAgICAgICAgICAgJzwoUFJPRFVDVF9ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSFRNTEVs
ZW1lbnRGYWN0b3J5LmgnLAogICAgICAgICAgICAgJzwoUFJPRFVDVF9ESVIpL0Rlcml2ZWRTb3Vy
Y2VzL1dlYkNvcmUvSFRNTEVudGl0eVRhYmxlLmNwcCcsCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLmd5cC9XZWJDb3JlLmd5cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLmd5cC9XZWJDb3JlLmd5cAkocmV2aXNpb24gOTgxOTcpCisrKyBTb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLmd5cC9XZWJDb3JlLmd5cAkod29ya2luZyBjb3B5KQpAQCAtNjc4LDYgKzY3OCwyNCBA
QAogICAgICAgICAgIF0sCiAgICAgICAgIH0sCiAgICAgICAgIHsKKyAgICAgICAgICAnYWN0aW9u
X25hbWUnOiAnRXZlbnRUYXJnZXRGYWN0b3J5JywKKyAgICAgICAgICAnaW5wdXRzJzogWworICAg
ICAgICAgICAgJy4uL2RvbS9tYWtlX2V2ZW50X2ZhY3RvcnkucGwnLAorICAgICAgICAgICAgJy4u
L2RvbS9FdmVudFRhcmdldEZhY3RvcnkuaW4nLAorICAgICAgICAgIF0sCisgICAgICAgICAgJ291
dHB1dHMnOiBbCisgICAgICAgICAgICAnPChTSEFSRURfSU5URVJNRURJQVRFX0RJUikvd2Via2l0
L0V2ZW50VGFyZ2V0SGVhZGVycy5oJywKKyAgICAgICAgICAgICc8KFNIQVJFRF9JTlRFUk1FRElB
VEVfRElSKS93ZWJraXQvRXZlbnRUYXJnZXRJbnRlcmZhY2VzLmgnLAorICAgICAgICAgIF0sCisg
ICAgICAgICAgJ2FjdGlvbic6IFsKKyAgICAgICAgICAgICdweXRob24nLAorICAgICAgICAgICAg
J3NjcmlwdHMvYWN0aW9uX21ha2VuYW1lcy5weScsCisgICAgICAgICAgICAnPEAoX291dHB1dHMp
JywKKyAgICAgICAgICAgICctLScsCisgICAgICAgICAgICAnPEAoX2lucHV0cyknLAorICAgICAg
ICAgIF0sCisgICAgICAgIH0sCisgICAgICAgIHsKICAgICAgICAgICAnYWN0aW9uX25hbWUnOiAn
TWF0aE1MTmFtZXMnLAogICAgICAgICAgICdpbnB1dHMnOiBbCiAgICAgICAgICAgICAnLi4vZG9t
L21ha2VfbmFtZXMucGwnLApAQCAtOTk0LDYgKzEwMTIsMTAgQEAKICAgICAgICAgJzwoU0hBUkVE
X0lOVEVSTUVESUFURV9ESVIpL3dlYmtpdC9IVE1MRWxlbWVudEZhY3RvcnkuY3BwJywKICAgICAg
ICAgJzwoU0hBUkVEX0lOVEVSTUVESUFURV9ESVIpL3dlYmtpdC9IVE1MTmFtZXMuY3BwJywKICAg
ICAgICAgJzwoU0hBUkVEX0lOVEVSTUVESUFURV9ESVIpL3dlYmtpdC9FdmVudEZhY3RvcnkuY3Bw
JywKKyAgICAgICAgJzwoU0hBUkVEX0lOVEVSTUVESUFURV9ESVIpL3dlYmtpdC9FdmVudEhlYWRl
cnMuaCcsCisgICAgICAgICc8KFNIQVJFRF9JTlRFUk1FRElBVEVfRElSKS93ZWJraXQvRXZlbnRJ
bnRlcmZhY2VzLmgnLAorICAgICAgICAnPChTSEFSRURfSU5URVJNRURJQVRFX0RJUikvd2Via2l0
L0V2ZW50VGFyZ2V0SGVhZGVycy5oJywKKyAgICAgICAgJzwoU0hBUkVEX0lOVEVSTUVESUFURV9E
SVIpL3dlYmtpdC9FdmVudFRhcmdldEludGVyZmFjZXMuaCcsCiAgICAgICAgICc8KFNIQVJFRF9J
TlRFUk1FRElBVEVfRElSKS93ZWJraXQvVXNlckFnZW50U3R5bGVTaGVldHNEYXRhLmNwcCcsCiAg
ICAgICAgICc8KFNIQVJFRF9JTlRFUk1FRElBVEVfRElSKS93ZWJraXQvVjhIVE1MRWxlbWVudFdy
YXBwZXJGYWN0b3J5LmNwcCcsCiAgICAgICAgICc8KFNIQVJFRF9JTlRFUk1FRElBVEVfRElSKS93
ZWJraXQvWExpbmtOYW1lcy5jcHAnLApJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXAv
c2NyaXB0cy9hY3Rpb25fbWFrZW5hbWVzLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUuZ3lwL3NjcmlwdHMvYWN0aW9uX21ha2VuYW1lcy5weQkocmV2aXNpb24gOTgxOTcp
CisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cC9zY3JpcHRzL2FjdGlvbl9tYWtlbmFtZXMu
cHkJKHdvcmtpbmcgY29weSkKQEAgLTEyOSw3ICsxMjksNyBAQCBkZWYgbWFpbihhcmdzKToKICAg
ICAgICAgICAgICBvciBpbnB1dEJhc2VuYW1lLmVuZHN3aXRoKCdhdHRycy5pbicpOgogICAgICAg
ICAgICAgYXNzZXJ0IGF0dHJJbnB1dCA9PSBOb25lCiAgICAgICAgICAgICBhdHRySW5wdXQgPSBp
bnB1dEFic1Bvc2l4Ci0gICAgICAgIGVsaWYgaW5wdXRCYXNlbmFtZS5lbmRzd2l0aCgnRXZlbnRG
YWN0b3J5LmluJyk6CisgICAgICAgIGVsaWYgaW5wdXRCYXNlbmFtZS5lbmRzd2l0aCgnRXZlbnRG
YWN0b3J5LmluJykgb3IgaW5wdXRCYXNlbmFtZS5lbmRzd2l0aCgnRXZlbnRUYXJnZXRGYWN0b3J5
LmluJyk6CiAgICAgICAgICAgICBldmVudHNJbnB1dCA9IGlucHV0QWJzUG9zaXgKICAgICAgICAg
ZWxpZiBpbnB1dEJhc2VuYW1lLmVuZHN3aXRoKCdOYW1lcy5pbicpOgogICAgICAgICAgICAgb3B0
aW9ucy5hcHBlbmQoaW5wdXRBYnNQb3NpeCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
dmNwcm9qL1dlYkNvcmUudmNwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNv
cmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCShyZXZpc2lvbiA5ODE5NykKKysrIFNvdXJjZS9XZWJD
b3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC01NTQs
NiArNTU0LDE0IEBACiAJCQkJPgogCQkJPC9GaWxlPgogCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBh
dGg9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmpcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNv
dXJjZXNcRXZlbnRUYXJnZXRIZWFkZXJzLmgiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUK
KwkJCQlSZWxhdGl2ZVBhdGg9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmpcJChQcm9qZWN0
TmFtZSlcRGVyaXZlZFNvdXJjZXNcRXZlbnRUYXJnZXRJbnRlcmZhY2VzLmgiCisJCQkJPgorCQkJ
PC9GaWxlPgorCQkJPEZpbGUKIAkJCQlSZWxhdGl2ZVBhdGg9IiQoQ29uZmlndXJhdGlvbkJ1aWxk
RGlyKVxvYmpcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSFRNTEVsZW1lbnRGYWN0b3J5
LmgiCiAJCQkJPgogCQkJPC9GaWxlPgpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gOTgxOTcpCisrKyBTb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkK
QEAgLTMyNzUsNiArMzI3NSw4IEBACiAJCTk3OEFENjc1MTQxMzBBOEQwMEM3Q0FFMyAvKiBIVE1M
U3BhbkVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDk3OEFENjcyMTQxMzBBOEQwMEM3Q0FFMyAvKiBIVE1MU3BhbkVsZW1lbnQuaCAqLzsgfTsK
IAkJOTc5RjQzRDMxMDc1RTQ0QTAwMDBGODNCIC8qIE5hdmlnYXRpb25TY2hlZHVsZXIuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTc5RjQzRDExMDc1
RTQ0QTAwMDBGODNCIC8qIE5hdmlnYXRpb25TY2hlZHVsZXIuY3BwICovOyB9OwogCQk5NzlGNDNE
NDEwNzVFNDRBMDAwMEY4M0IgLyogTmF2aWdhdGlvblNjaGVkdWxlci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTc5RjQzRDIxMDc1RTQ0QTAwMDBGODNC
IC8qIE5hdmlnYXRpb25TY2hlZHVsZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OworCQk5N0FBM0NBNTE0NTIzN0NDMDAzRTFEQTYgLyogRXZlbnRUYXJn
ZXRIZWFkZXJzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA5N0FBM0NBMzE0NTIzN0NDMDAzRTFEQTYgLyogRXZlbnRUYXJnZXRIZWFkZXJzLmggKi87IH07
CisJCTk3QUEzQ0E2MTQ1MjM3Q0MwMDNFMURBNiAvKiBFdmVudFRhcmdldEludGVyZmFjZXMuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3QUEzQ0E0MTQ1
MjM3Q0MwMDNFMURBNiAvKiBFdmVudFRhcmdldEludGVyZmFjZXMuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5N0IxRjAyRTEzQjAyNUNBMDBGNTEw
M0YgLyogU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzc1NjlFMDAxM0FGMTcyQzAwQ0RCQThFIC8qIFNoYXJl
ZEJ1ZmZlckNodW5rUmVhZGVyLmNwcCAqLzsgfTsKIAkJOTdCMUYwMkYxM0IwMjVEMjAwRjUxMDNG
IC8qIFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAzNzU2OUUwMjEzQUYxNzJDMDBDREJBOEUgLyogU2hhcmVkQnVm
ZmVyQ2h1bmtSZWFkZXIuaCAqLzsgfTsKIAkJOTdCQzg0ODMxMjM2RkQ5MzAwMEM2MTYxIC8qIFRl
eHREb2N1bWVudFBhcnNlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA5N0JDODQ4MTEyMzZGRDkzMDAwQzYxNjEgLyogVGV4dERvY3VtZW50UGFyc2Vy
LmNwcCAqLzsgfTsKQEAgLTEwNDE0LDYgKzEwNDE2LDggQEAKIAkJOTc4QUQ2NzMxNDEzMEE4RDAw
QzdDQUUzIC8qIEhUTUxTcGFuRWxlbWVudC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gSFRN
TFNwYW5FbGVtZW50LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTc5RjQzRDEx
MDc1RTQ0QTAwMDBGODNCIC8qIE5hdmlnYXRpb25TY2hlZHVsZXIuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTmF2aWdhdGlvblNjaGVkdWxlci5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk3OUY0M0QyMTA3NUU0NEEwMDAwRjgzQiAvKiBOYXZpZ2F0
aW9uU2NoZWR1bGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5hdmlnYXRp
b25TY2hlZHVsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTdBQTNDQTMxNDUy
MzdDQzAwM0UxREE2IC8qIEV2ZW50VGFyZ2V0SGVhZGVycy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBFdmVudFRhcmdldEhlYWRlcnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJOTdBQTNDQTQxNDUyMzdDQzAwM0UxREE2IC8qIEV2ZW50VGFyZ2V0SW50ZXJmYWNl
cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBFdmVudFRhcmdldEludGVyZmFj
ZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTdCQzg0ODExMjM2RkQ5MzAwMEM2
MTYxIC8qIFRleHREb2N1bWVudFBhcnNlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IG5hbWUgPSBUZXh0RG9jdW1lbnRQYXJzZXIuY3BwOyBwYXRoID0gcGFyc2VyL1RleHREb2N1
bWVudFBhcnNlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk3QkM4NDgyMTIz
NkZEOTMwMDBDNjE2MSAvKiBUZXh0RG9jdW1lbnRQYXJzZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBuYW1lID0gVGV4dERvY3VtZW50UGFyc2VyLmg7IHBhdGggPSBwYXJzZXIvVGV4dERv
Y3VtZW50UGFyc2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk3QkM4NDlBMTIz
NzBBNEIwMDBDNjE2MSAvKiBIVE1MSW5wdXRTdHJlYW0uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBuYW1lID0gSFRNTElucHV0U3RyZWFtLmg7IHBhdGggPSBwYXJzZXIvSFRNTElucHV0U3Ry
ZWFtLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNTE1Nyw2ICsxNTE2MSw4IEBA
CiAJCQkJOTc2NjUwNEUxNDRGQkZGRTAwRjZCQjUxIC8qIEV2ZW50RmFjdG9yeS5jcHAgKi8sCiAJ
CQkJOTcwQjcyQTUxNDUwMDhFQjAwRjAwQTM3IC8qIEV2ZW50SGVhZGVycy5oICovLAogCQkJCTk3
MEI3Mjg5MTQ0RkZBQzYwMEYwMEEzNyAvKiBFdmVudEludGVyZmFjZXMuaCAqLywKKwkJCQk5N0FB
M0NBMzE0NTIzN0NDMDAzRTFEQTYgLyogRXZlbnRUYXJnZXRIZWFkZXJzLmggKi8sCisJCQkJOTdB
QTNDQTQxNDUyMzdDQzAwM0UxREE2IC8qIEV2ZW50VGFyZ2V0SW50ZXJmYWNlcy5oICovLAogCQkJ
CUExN0M4MTIwMEYyQTVDRjcwMDVEQUFFQiAvKiBIVE1MRWxlbWVudEZhY3RvcnkuY3BwICovLAog
CQkJCUExN0M4MTIxMEYyQTVDRjcwMDVEQUFFQiAvKiBIVE1MRWxlbWVudEZhY3RvcnkuaCAqLywK
IAkJCQlBOEJDMDQ5MTEyMTRGNjk2MDBCNUYxMjIgLyogSFRNTEVudGl0eVRhYmxlLmNwcCAqLywK
QEAgLTI0NTAwLDYgKzI0NTA2LDggQEAKIAkJCQlBMEVFMERGODE0NEY4MjU1MDBGODBCMEQgLyog
V2ViR0xEZWJ1Z1NoYWRlcnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTk3MEI3MjhBMTQ0RkZBQzYw
MEYwMEEzNyAvKiBFdmVudEludGVyZmFjZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTk3MEI3MkE2
MTQ1MDA4RUIwMEYwMEEzNyAvKiBFdmVudEhlYWRlcnMuaCBpbiBIZWFkZXJzICovLAorCQkJCTk3
QUEzQ0E1MTQ1MjM3Q0MwMDNFMURBNiAvKiBFdmVudFRhcmdldEhlYWRlcnMuaCBpbiBIZWFkZXJz
ICovLAorCQkJCTk3QUEzQ0E2MTQ1MjM3Q0MwMDNFMURBNiAvKiBFdmVudFRhcmdldEludGVyZmFj
ZXMuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHBy
b2Nlc3NpbmcgPSAwOwogCQl9OwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNF
dmVudFRhcmdldC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNFdmVudFRhcmdldC5jcHAJKHJldmlzaW9uIDk4MTk3KQorKysgU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNFdmVudFRhcmdldC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4LDYgKzI4LDgg
QEAKIAogI2luY2x1ZGUgIkRPTVdpbmRvdy5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5j
bHVkZSAiRXZlbnRUYXJnZXRIZWFkZXJzLmgiCisjaW5jbHVkZSAiRXZlbnRUYXJnZXRJbnRlcmZh
Y2VzLmgiCiAjaW5jbHVkZSAiSlNET01XaW5kb3cuaCIKICNpbmNsdWRlICJKU0RPTVdpbmRvd1No
ZWxsLmgiCiAjaW5jbHVkZSAiSlNFdmVudExpc3RlbmVyLmgiCkBAIC0xMDUsOTQgKzEwNywyOCBA
QCB1c2luZyBuYW1lc3BhY2UgSlNDOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKKyNkZWZpbmUg
VFJZX1RPX1dSQVBfV0lUSF9JTlRFUkZBQ0UoaW50ZXJmYWNlTmFtZSkgXAorICAgIGlmIChldmVu
dE5hbWVzKCkuaW50ZXJmYWNlRm9yIyNpbnRlcmZhY2VOYW1lID09IGRlc2lyZWRJbnRlcmZhY2Up
IFwKKyAgICAgICAgcmV0dXJuIHRvSlMoZXhlYywgZ2xvYmFsT2JqZWN0LCBzdGF0aWNfY2FzdDxp
bnRlcmZhY2VOYW1lKj4odGFyZ2V0KSk7CisKIEpTVmFsdWUgdG9KUyhFeGVjU3RhdGUqIGV4ZWMs
IEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEV2ZW50VGFyZ2V0KiB0YXJnZXQpCiB7
CiAgICAgaWYgKCF0YXJnZXQpCiAgICAgICAgIHJldHVybiBqc051bGwoKTsKIAotICAgIGlmIChF
dmVudFNvdXJjZSogZXZlbnRTb3VyY2UgPSB0YXJnZXQtPnRvRXZlbnRTb3VyY2UoKSkKLSAgICAg
ICAgcmV0dXJuIHRvSlMoZXhlYywgZ2xvYmFsT2JqZWN0LCBldmVudFNvdXJjZSk7Ci0KLSNpZiBF
TkFCTEUoU1ZHKQotICAgIC8vIFNWR0VsZW1lbnRJbnN0YW5jZSBzdXBwb3J0cyBib3RoIHRvU1ZH
RWxlbWVudEluc3RhbmNlIGFuZCB0b05vZGUgc2luY2Ugc28gbXVjaCBtb3VzZSBoYW5kbGluZyBj
b2RlIGRlcGVuZHMgb24gdG9Ob2RlIHJldHVybmluZyBhIHZhbGlkIG5vZGUuCi0gICAgaWYgKFNW
R0VsZW1lbnRJbnN0YW5jZSogaW5zdGFuY2UgPSB0YXJnZXQtPnRvU1ZHRWxlbWVudEluc3RhbmNl
KCkpCi0gICAgICAgIHJldHVybiB0b0pTKGV4ZWMsIGdsb2JhbE9iamVjdCwgaW5zdGFuY2UpOwot
I2VuZGlmCi0gICAgCi0gICAgaWYgKE5vZGUqIG5vZGUgPSB0YXJnZXQtPnRvTm9kZSgpKQotICAg
ICAgICByZXR1cm4gdG9KUyhleGVjLCBnbG9iYWxPYmplY3QsIG5vZGUpOwotCi0gICAgaWYgKERP
TVdpbmRvdyogZG9tV2luZG93ID0gdGFyZ2V0LT50b0RPTVdpbmRvdygpKQotICAgICAgICByZXR1
cm4gdG9KUyhleGVjLCBnbG9iYWxPYmplY3QsIGRvbVdpbmRvdyk7Ci0KLSAgICBpZiAoWE1MSHR0
cFJlcXVlc3QqIHhociA9IHRhcmdldC0+dG9YTUxIdHRwUmVxdWVzdCgpKQotICAgICAgICByZXR1
cm4gdG9KUyhleGVjLCBnbG9iYWxPYmplY3QsIHhocik7Ci0KLSAgICBpZiAoWE1MSHR0cFJlcXVl
c3RVcGxvYWQqIHVwbG9hZCA9IHRhcmdldC0+dG9YTUxIdHRwUmVxdWVzdFVwbG9hZCgpKQotICAg
ICAgICByZXR1cm4gdG9KUyhleGVjLCBnbG9iYWxPYmplY3QsIHVwbG9hZCk7Ci0KLSAgICBpZiAo
RE9NQXBwbGljYXRpb25DYWNoZSogY2FjaGUgPSB0YXJnZXQtPnRvRE9NQXBwbGljYXRpb25DYWNo
ZSgpKQotICAgICAgICByZXR1cm4gdG9KUyhleGVjLCBnbG9iYWxPYmplY3QsIGNhY2hlKTsKLQot
ICAgIGlmIChNZXNzYWdlUG9ydCogbWVzc2FnZVBvcnQgPSB0YXJnZXQtPnRvTWVzc2FnZVBvcnQo
KSkKLSAgICAgICAgcmV0dXJuIHRvSlMoZXhlYywgZ2xvYmFsT2JqZWN0LCBtZXNzYWdlUG9ydCk7
CisgICAgQXRvbWljU3RyaW5nIGRlc2lyZWRJbnRlcmZhY2UgPSB0YXJnZXQtPmludGVyZmFjZU5h
bWUoKTsKIAorICAgIC8vIEZJWE1FOiBXaHkgY2FuJ3Qgd2UgdXNlIHRvSlMgZm9yIHRoZXNlIGNh
c2VzPwogI2lmIEVOQUJMRShXT1JLRVJTKQotICAgIGlmIChXb3JrZXIqIHdvcmtlciA9IHRhcmdl
dC0+dG9Xb3JrZXIoKSkKLSAgICAgICAgcmV0dXJuIHRvSlMoZXhlYywgZ2xvYmFsT2JqZWN0LCB3
b3JrZXIpOwotCi0gICAgaWYgKERlZGljYXRlZFdvcmtlckNvbnRleHQqIHdvcmtlckNvbnRleHQg
PSB0YXJnZXQtPnRvRGVkaWNhdGVkV29ya2VyQ29udGV4dCgpKQotICAgICAgICByZXR1cm4gdG9K
U0RPTUdsb2JhbE9iamVjdCh3b3JrZXJDb250ZXh0LCBleGVjKTsKKyAgICBpZiAoZXZlbnROYW1l
cygpLmludGVyZmFjZUZvckRlZGljYXRlZFdvcmtlckNvbnRleHQgPT0gZGVzaXJlZEludGVyZmFj
ZSkKKyAgICAgICAgcmV0dXJuIHRvSlNET01HbG9iYWxPYmplY3Qoc3RhdGljX2Nhc3Q8RGVkaWNh
dGVkV29ya2VyQ29udGV4dCo+KHRhcmdldCksIGV4ZWMpOwogI2VuZGlmCi0KICNpZiBFTkFCTEUo
U0hBUkVEX1dPUktFUlMpCi0gICAgaWYgKFNoYXJlZFdvcmtlciogc2hhcmVkV29ya2VyID0gdGFy
Z2V0LT50b1NoYXJlZFdvcmtlcigpKQotICAgICAgICByZXR1cm4gdG9KUyhleGVjLCBnbG9iYWxP
YmplY3QsIHNoYXJlZFdvcmtlcik7Ci0KLSAgICBpZiAoU2hhcmVkV29ya2VyQ29udGV4dCogd29y
a2VyQ29udGV4dCA9IHRhcmdldC0+dG9TaGFyZWRXb3JrZXJDb250ZXh0KCkpCi0gICAgICAgIHJl
dHVybiB0b0pTRE9NR2xvYmFsT2JqZWN0KHdvcmtlckNvbnRleHQsIGV4ZWMpOwotI2VuZGlmCi0K
LSNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKLSAgICBpZiAoTm90aWZpY2F0aW9uKiBub3RpZmlj
YXRpb24gPSB0YXJnZXQtPnRvTm90aWZpY2F0aW9uKCkpCi0gICAgICAgIHJldHVybiB0b0pTKGV4
ZWMsIGdsb2JhbE9iamVjdCwgbm90aWZpY2F0aW9uKTsKLSNlbmRpZgotCi0jaWYgRU5BQkxFKElO
REVYRURfREFUQUJBU0UpCi0gICAgaWYgKElEQkRhdGFiYXNlKiBpZGJEYXRhYmFzZSA9IHRhcmdl
dC0+dG9JREJEYXRhYmFzZSgpKQotICAgICAgICByZXR1cm4gdG9KUyhleGVjLCBnbG9iYWxPYmpl
Y3QsIGlkYkRhdGFiYXNlKTsKLQotICAgIGlmIChJREJSZXF1ZXN0KiBpZGJSZXF1ZXN0ID0gdGFy
Z2V0LT50b0lEQlJlcXVlc3QoKSkKLSAgICAgICAgcmV0dXJuIHRvSlMoZXhlYywgZ2xvYmFsT2Jq
ZWN0LCBpZGJSZXF1ZXN0KTsKLQotICAgIGlmIChJREJUcmFuc2FjdGlvbiogaWRiVHJhbnNhY3Rp
b24gPSB0YXJnZXQtPnRvSURCVHJhbnNhY3Rpb24oKSkKLSAgICAgICAgcmV0dXJuIHRvSlMoZXhl
YywgZ2xvYmFsT2JqZWN0LCBpZGJUcmFuc2FjdGlvbik7Ci0jZW5kaWYKLQotI2lmIEVOQUJMRShX
RUJfQVVESU8pCi0gICAgaWYgKEphdmFTY3JpcHRBdWRpb05vZGUqIGpzQXVkaW9Ob2RlID0gdGFy
Z2V0LT50b0phdmFTY3JpcHRBdWRpb05vZGUoKSkKLSAgICAgICAgcmV0dXJuIHRvSlMoZXhlYywg
Z2xvYmFsT2JqZWN0LCBqc0F1ZGlvTm9kZSk7Ci0gICAgaWYgKEF1ZGlvQ29udGV4dCogYXVkaW9D
b250ZXh0ID0gdGFyZ2V0LT50b0F1ZGlvQ29udGV4dCgpKQotICAgICAgICByZXR1cm4gdG9KUyhl
eGVjLCBnbG9iYWxPYmplY3QsIGF1ZGlvQ29udGV4dCk7Ci0jZW5kaWYKLQotI2lmIEVOQUJMRShX
RUJfU09DS0VUUykKLSAgICBpZiAoV2ViU29ja2V0KiB3ZWJTb2NrZXQgPSB0YXJnZXQtPnRvV2Vi
U29ja2V0KCkpCi0gICAgICAgIHJldHVybiB0b0pTKGV4ZWMsIGdsb2JhbE9iamVjdCwgd2ViU29j
a2V0KTsKLSNlbmRpZgotCi0jaWYgRU5BQkxFKEJMT0IpCi0gICAgaWYgKEZpbGVSZWFkZXIqIGZp
bGVSZWFkZXIgPSB0YXJnZXQtPnRvRmlsZVJlYWRlcigpKQotICAgICAgICByZXR1cm4gdG9KUyhl
eGVjLCBnbG9iYWxPYmplY3QsIGZpbGVSZWFkZXIpOworICAgIGlmIChldmVudE5hbWVzKCkuaW50
ZXJmYWNlRm9yU2hhcmVkV29ya2VyQ29udGV4dCA9PSBkZXNpcmVkSW50ZXJmYWNlKQorICAgICAg
ICByZXR1cm4gdG9KU0RPTUdsb2JhbE9iamVjdChzdGF0aWNfY2FzdDxTaGFyZWRXb3JrZXJDb250
ZXh0Kj4odGFyZ2V0KSwgZXhlYyk7CiAjZW5kaWYKIAotI2lmIEVOQUJMRShNRURJQV9TVFJFQU0p
Ci0gICAgaWYgKExvY2FsTWVkaWFTdHJlYW0qIHN0cmVhbSA9IHRhcmdldC0+dG9Mb2NhbE1lZGlh
U3RyZWFtKCkpCi0gICAgICAgIHJldHVybiB0b0pTKGV4ZWMsIGdsb2JhbE9iamVjdCwgc3RyZWFt
KTsKLQotICAgIGlmIChNZWRpYVN0cmVhbSogc3RyZWFtID0gdGFyZ2V0LT50b01lZGlhU3RyZWFt
KCkpCi0gICAgICAgIHJldHVybiB0b0pTKGV4ZWMsIGdsb2JhbE9iamVjdCwgc3RyZWFtKTsKLSNl
bmRpZgorICAgIERPTV9FVkVOVF9UQVJHRVRfSU5URVJGQUNFU19GT1JfRUFDSChUUllfVE9fV1JB
UF9XSVRIX0lOVEVSRkFDRSkKIAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVy
biBqc051bGwoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dvcmtlclNjcmlw
dENvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1dvcmtlclNjcmlwdENvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiA5ODE5NykKKysrIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC04Niw3ICs4Niw3IEBAIHZvaWQgV29ya2VyU2NyaXB0Q29udHJvbGxlcjo6aW5pdFNj
cmlwdCgKICAgICAgICAgU3Ryb25nPEpTRGVkaWNhdGVkV29ya2VyQ29udGV4dFByb3RvdHlwZT4g
ZGVkaWNhdGVkQ29udGV4dFByb3RvdHlwZSgqbV9nbG9iYWxEYXRhLCBKU0RlZGljYXRlZFdvcmtl
ckNvbnRleHRQcm90b3R5cGU6OmNyZWF0ZSgqbV9nbG9iYWxEYXRhLCAwLCBkZWRpY2F0ZWRDb250
ZXh0UHJvdG90eXBlU3RydWN0dXJlKSk7CiAgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0g
SlNEZWRpY2F0ZWRXb3JrZXJDb250ZXh0OjpjcmVhdGVTdHJ1Y3R1cmUoKm1fZ2xvYmFsRGF0YSwg
MCwgZGVkaWNhdGVkQ29udGV4dFByb3RvdHlwZS5nZXQoKSk7CiAKLSAgICAgICAgbV93b3JrZXJD
b250ZXh0V3JhcHBlci5zZXQoKm1fZ2xvYmFsRGF0YSwgSlNEZWRpY2F0ZWRXb3JrZXJDb250ZXh0
OjpjcmVhdGUoKm1fZ2xvYmFsRGF0YSwgc3RydWN0dXJlLCBtX3dvcmtlckNvbnRleHQtPnRvRGVk
aWNhdGVkV29ya2VyQ29udGV4dCgpKSk7CisgICAgICAgIG1fd29ya2VyQ29udGV4dFdyYXBwZXIu
c2V0KCptX2dsb2JhbERhdGEsIEpTRGVkaWNhdGVkV29ya2VyQ29udGV4dDo6Y3JlYXRlKCptX2ds
b2JhbERhdGEsIHN0cnVjdHVyZSwgc3RhdGljX2Nhc3Q8RGVkaWNhdGVkV29ya2VyQ29udGV4dCo+
KG1fd29ya2VyQ29udGV4dCkpKTsKICAgICAgICAgd29ya2VyQ29udGV4dFByb3RvdHlwZVN0cnVj
dHVyZS0+c2V0R2xvYmFsT2JqZWN0KCptX2dsb2JhbERhdGEsIG1fd29ya2VyQ29udGV4dFdyYXBw
ZXIuZ2V0KCkpOwogICAgICAgICBkZWRpY2F0ZWRDb250ZXh0UHJvdG90eXBlU3RydWN0dXJlLT5z
ZXRHbG9iYWxPYmplY3QoKm1fZ2xvYmFsRGF0YSwgbV93b3JrZXJDb250ZXh0V3JhcHBlci5nZXQo
KSk7CiAgICAgICAgIEFTU0VSVChzdHJ1Y3R1cmUtPmdsb2JhbE9iamVjdCgpID09IG1fd29ya2Vy
Q29udGV4dFdyYXBwZXIpOwpAQCAtMTAwLDcgKzEwMCw3IEBAIHZvaWQgV29ya2VyU2NyaXB0Q29u
dHJvbGxlcjo6aW5pdFNjcmlwdCgKICAgICAgICAgU3Ryb25nPEpTU2hhcmVkV29ya2VyQ29udGV4
dFByb3RvdHlwZT4gc2hhcmVkQ29udGV4dFByb3RvdHlwZSgqbV9nbG9iYWxEYXRhLCBKU1NoYXJl
ZFdvcmtlckNvbnRleHRQcm90b3R5cGU6OmNyZWF0ZSgqbV9nbG9iYWxEYXRhLCAwLCBzaGFyZWRD
b250ZXh0UHJvdG90eXBlU3RydWN0dXJlKSk7CiAgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJl
ID0gSlNTaGFyZWRXb3JrZXJDb250ZXh0OjpjcmVhdGVTdHJ1Y3R1cmUoKm1fZ2xvYmFsRGF0YSwg
MCwgc2hhcmVkQ29udGV4dFByb3RvdHlwZS5nZXQoKSk7CiAKLSAgICAgICAgbV93b3JrZXJDb250
ZXh0V3JhcHBlci5zZXQoKm1fZ2xvYmFsRGF0YSwgSlNTaGFyZWRXb3JrZXJDb250ZXh0OjpjcmVh
dGUoKm1fZ2xvYmFsRGF0YSwgc3RydWN0dXJlLCBtX3dvcmtlckNvbnRleHQtPnRvU2hhcmVkV29y
a2VyQ29udGV4dCgpKSk7CisgICAgICAgIG1fd29ya2VyQ29udGV4dFdyYXBwZXIuc2V0KCptX2ds
b2JhbERhdGEsIEpTU2hhcmVkV29ya2VyQ29udGV4dDo6Y3JlYXRlKCptX2dsb2JhbERhdGEsIHN0
cnVjdHVyZSwgc3RhdGljX2Nhc3Q8U2hhcmVkV29ya2VyQ29udGV4dCo+KG1fd29ya2VyQ29udGV4
dCkpKTsKICAgICAgICAgd29ya2VyQ29udGV4dFByb3RvdHlwZS0+c3RydWN0dXJlKCktPnNldEds
b2JhbE9iamVjdCgqbV9nbG9iYWxEYXRhLCBtX3dvcmtlckNvbnRleHRXcmFwcGVyLmdldCgpKTsK
ICAgICAgICAgc2hhcmVkQ29udGV4dFByb3RvdHlwZS0+c3RydWN0dXJlKCktPnNldEdsb2JhbE9i
amVjdCgqbV9nbG9iYWxEYXRhLCBtX3dvcmtlckNvbnRleHRXcmFwcGVyLmdldCgpKTsKICNlbmRp
ZgpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET00ubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET00ubW0JKHJldmlzaW9uIDk4MTk3KQor
KysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET00ubW0JKHdvcmtpbmcgY29weSkKQEAg
LTM0MywxMSArMzQzLDYgQEAgaWQgPERPTUV2ZW50VGFyZ2V0PiBraXQoV2ViQ29yZTo6RXZlbnRU
YQogICAgIGlmIChXZWJDb3JlOjpOb2RlKiBub2RlID0gZXZlbnRUYXJnZXQtPnRvTm9kZSgpKQog
ICAgICAgICByZXR1cm4ga2l0KG5vZGUpOwogCi0jaWYgRU5BQkxFKFNWR19ET01fT0JKQ19CSU5E
SU5HUykKLSAgICBpZiAoV2ViQ29yZTo6U1ZHRWxlbWVudEluc3RhbmNlKiBzdmdFbGVtZW50SW5z
dGFuY2UgPSBldmVudFRhcmdldC0+dG9TVkdFbGVtZW50SW5zdGFuY2UoKSkKLSAgICAgICAgcmV0
dXJuIGtpdChzdmdFbGVtZW50SW5zdGFuY2UpOwotI2VuZGlmCi0KICAgICAvLyBXZSBkb24ndCBo
YXZlIGFuIE9iakMgYmluZGluZyBmb3IgWE1MSHR0cFJlcXVlc3QuCiAKICAgICByZXR1cm4gbmls
OwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XcmFwcGVyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdyYXBwZXIuY3BwCShy
ZXZpc2lvbiA5ODE5NykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBl
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1LDYgKzM1LDggQEAKICNpbmNsdWRlICJDU1NNdXRh
YmxlU3R5bGVEZWNsYXJhdGlvbi5oIgogI2luY2x1ZGUgIkRPTURhdGFTdG9yZS5oIgogI2luY2x1
ZGUgIkRvY3VtZW50TG9hZGVyLmgiCisjaW5jbHVkZSAiRXZlbnRUYXJnZXRIZWFkZXJzLmgiCisj
aW5jbHVkZSAiRXZlbnRUYXJnZXRJbnRlcmZhY2VzLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXJD
bGllbnQuaCIKICNpbmNsdWRlICJOb3RpZmljYXRpb24uaCIKICNpbmNsdWRlICJWOEFic3RyYWN0
RXZlbnRMaXN0ZW5lci5oIgpAQCAtMzMxLDExNCArMzMzLDIwIEBAIHY4OjpIYW5kbGU8djg6Ok9i
amVjdD4gVjhET01XcmFwcGVyOjpnZXQKICAgICByZXR1cm4gZG9tTm9kZU1hcC5nZXQobm9kZSk7
CiB9CiAKKyNkZWZpbmUgVFJZX1RPX1dSQVBfV0lUSF9JTlRFUkZBQ0UoaW50ZXJmYWNlTmFtZSkg
XAorICAgIGlmIChldmVudE5hbWVzKCkuaW50ZXJmYWNlRm9yIyNpbnRlcmZhY2VOYW1lID09IGRl
c2lyZWRJbnRlcmZhY2UpIFwKKyAgICAgICAgcmV0dXJuIHRvVjgoc3RhdGljX2Nhc3Q8aW50ZXJm
YWNlTmFtZSo+KHRhcmdldCkpOworCiAvLyBBIEpTIG9iamVjdCBvZiB0eXBlIEV2ZW50VGFyZ2V0
IGlzIGxpbWl0ZWQgdG8gYSBzbWFsbCBudW1iZXIgb2YgcG9zc2libGUgY2xhc3Nlcy4KLS8vIENo
ZWNrIEV2ZW50VGFyZ2V0LmggZm9yIG5ldyB0eXBlIGNvbnZlcnNpb24gbWV0aG9kcwogdjg6Okhh
bmRsZTx2ODo6VmFsdWU+IFY4RE9NV3JhcHBlcjo6Y29udmVydEV2ZW50VGFyZ2V0VG9WOE9iamVj
dChFdmVudFRhcmdldCogdGFyZ2V0KQogewogICAgIGlmICghdGFyZ2V0KQogICAgICAgICByZXR1
cm4gdjg6Ok51bGwoKTsKIAotI2lmIEVOQUJMRShTVkcpCi0gICAgaWYgKFNWR0VsZW1lbnRJbnN0
YW5jZSogaW5zdGFuY2UgPSB0YXJnZXQtPnRvU1ZHRWxlbWVudEluc3RhbmNlKCkpCi0gICAgICAg
IHJldHVybiB0b1Y4KGluc3RhbmNlKTsKLSNlbmRpZgotCi0jaWYgRU5BQkxFKFdPUktFUlMpCi0g
ICAgaWYgKFdvcmtlciogd29ya2VyID0gdGFyZ2V0LT50b1dvcmtlcigpKQotICAgICAgICByZXR1
cm4gdG9WOCh3b3JrZXIpOwotCi0gICAgaWYgKERlZGljYXRlZFdvcmtlckNvbnRleHQqIHdvcmtl
ckNvbnRleHQgPSB0YXJnZXQtPnRvRGVkaWNhdGVkV29ya2VyQ29udGV4dCgpKQotICAgICAgICBy
ZXR1cm4gdG9WOCh3b3JrZXJDb250ZXh0KTsKLSNlbmRpZiAvLyBXT1JLRVJTCi0KLSNpZiBFTkFC
TEUoU0hBUkVEX1dPUktFUlMpCi0gICAgaWYgKFNoYXJlZFdvcmtlciogc2hhcmVkV29ya2VyID0g
dGFyZ2V0LT50b1NoYXJlZFdvcmtlcigpKQotICAgICAgICByZXR1cm4gdG9WOChzaGFyZWRXb3Jr
ZXIpOwotCi0gICAgaWYgKFNoYXJlZFdvcmtlckNvbnRleHQqIHNoYXJlZFdvcmtlckNvbnRleHQg
PSB0YXJnZXQtPnRvU2hhcmVkV29ya2VyQ29udGV4dCgpKQotICAgICAgICByZXR1cm4gdG9WOChz
aGFyZWRXb3JrZXJDb250ZXh0KTsKLSNlbmRpZiAvLyBTSEFSRURfV09SS0VSUwotCi0jaWYgRU5B
QkxFKE5PVElGSUNBVElPTlMpCi0gICAgaWYgKE5vdGlmaWNhdGlvbiogbm90aWZpY2F0aW9uID0g
dGFyZ2V0LT50b05vdGlmaWNhdGlvbigpKQotICAgICAgICByZXR1cm4gdG9WOChub3RpZmljYXRp
b24pOwotI2VuZGlmCi0KLSNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKLSAgICBpZiAoSURC
RGF0YWJhc2UqIGlkYkRhdGFiYXNlID0gdGFyZ2V0LT50b0lEQkRhdGFiYXNlKCkpCi0gICAgICAg
IHJldHVybiB0b1Y4KGlkYkRhdGFiYXNlKTsKLSAgICBpZiAoSURCUmVxdWVzdCogaWRiUmVxdWVz
dCA9IHRhcmdldC0+dG9JREJSZXF1ZXN0KCkpCi0gICAgICAgIHJldHVybiB0b1Y4KGlkYlJlcXVl
c3QpOwotICAgIGlmIChJREJUcmFuc2FjdGlvbiogaWRiVHJhbnNhY3Rpb24gPSB0YXJnZXQtPnRv
SURCVHJhbnNhY3Rpb24oKSkKLSAgICAgICAgcmV0dXJuIHRvVjgoaWRiVHJhbnNhY3Rpb24pOwot
I2VuZGlmCi0KLSNpZiBFTkFCTEUoV0VCX1NPQ0tFVFMpCi0gICAgaWYgKFdlYlNvY2tldCogd2Vi
U29ja2V0ID0gdGFyZ2V0LT50b1dlYlNvY2tldCgpKQotICAgICAgICByZXR1cm4gdG9WOCh3ZWJT
b2NrZXQpOwotI2VuZGlmCi0KLSAgICBpZiAoTm9kZSogbm9kZSA9IHRhcmdldC0+dG9Ob2RlKCkp
Ci0gICAgICAgIHJldHVybiB0b1Y4KG5vZGUpOwotCi0gICAgaWYgKERPTVdpbmRvdyogZG9tV2lu
ZG93ID0gdGFyZ2V0LT50b0RPTVdpbmRvdygpKQotICAgICAgICByZXR1cm4gdG9WOChkb21XaW5k
b3cpOwotCi0gICAgLy8gWE1MSHR0cFJlcXVlc3QgaXMgY3JlYXRlZCB3aXRoaW4gaXRzIEpTIGNv
dW50ZXJwYXJ0LgotICAgIGlmIChYTUxIdHRwUmVxdWVzdCogeG1sSHR0cFJlcXVlc3QgPSB0YXJn
ZXQtPnRvWE1MSHR0cFJlcXVlc3QoKSkgewotICAgICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+
IHdyYXBwZXIgPSBnZXRBY3RpdmVET01PYmplY3RNYXAoKS5nZXQoeG1sSHR0cFJlcXVlc3QpOwot
ICAgICAgICBBU1NFUlQoIXdyYXBwZXIuSXNFbXB0eSgpKTsKLSAgICAgICAgcmV0dXJuIHdyYXBw
ZXI7Ci0gICAgfQotCi0gICAgLy8gTWVzc2FnZVBvcnQgaXMgY3JlYXRlZCB3aXRoaW4gaXRzIEpT
IGNvdW50ZXJwYXJ0Ci0gICAgaWYgKE1lc3NhZ2VQb3J0KiBwb3J0ID0gdGFyZ2V0LT50b01lc3Nh
Z2VQb3J0KCkpIHsKLSAgICAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0gZ2V0
QWN0aXZlRE9NT2JqZWN0TWFwKCkuZ2V0KHBvcnQpOwotICAgICAgICBBU1NFUlQoIXdyYXBwZXIu
SXNFbXB0eSgpKTsKLSAgICAgICAgcmV0dXJuIHdyYXBwZXI7Ci0gICAgfQotCi0gICAgaWYgKFhN
TEh0dHBSZXF1ZXN0VXBsb2FkKiB1cGxvYWQgPSB0YXJnZXQtPnRvWE1MSHR0cFJlcXVlc3RVcGxv
YWQoKSkgewotICAgICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBnZXRET01P
YmplY3RNYXAoKS5nZXQodXBsb2FkKTsKLSAgICAgICAgQVNTRVJUKCF3cmFwcGVyLklzRW1wdHko
KSk7Ci0gICAgICAgIHJldHVybiB3cmFwcGVyOwotICAgIH0KLQotICAgIGlmIChET01BcHBsaWNh
dGlvbkNhY2hlKiBkb21BcHBDYWNoZSA9IHRhcmdldC0+dG9ET01BcHBsaWNhdGlvbkNhY2hlKCkp
Ci0gICAgICAgIHJldHVybiB0b1Y4KGRvbUFwcENhY2hlKTsKLQotICAgIGlmIChFdmVudFNvdXJj
ZSogZXZlbnRTb3VyY2UgPSB0YXJnZXQtPnRvRXZlbnRTb3VyY2UoKSkKLSAgICAgICAgcmV0dXJu
IHRvVjgoZXZlbnRTb3VyY2UpOwotCi0jaWYgRU5BQkxFKEJMT0IpCi0gICAgaWYgKEZpbGVSZWFk
ZXIqIGZpbGVSZWFkZXIgPSB0YXJnZXQtPnRvRmlsZVJlYWRlcigpKQotICAgICAgICByZXR1cm4g
dG9WOChmaWxlUmVhZGVyKTsKLSNlbmRpZgotCi0jaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQotICAg
IGlmIChGaWxlV3JpdGVyKiBmaWxlV3JpdGVyID0gdGFyZ2V0LT50b0ZpbGVXcml0ZXIoKSkKLSAg
ICAgICAgcmV0dXJuIHRvVjgoZmlsZVdyaXRlcik7Ci0jZW5kaWYKLQotI2lmIEVOQUJMRShXRUJf
QVVESU8pCi0gICAgaWYgKEphdmFTY3JpcHRBdWRpb05vZGUqIGpzQXVkaW9Ob2RlID0gdGFyZ2V0
LT50b0phdmFTY3JpcHRBdWRpb05vZGUoKSkKLSAgICAgICAgcmV0dXJuIHRvVjgoanNBdWRpb05v
ZGUpOwotICAgIGlmIChBdWRpb0NvbnRleHQqIGF1ZGlvQ29udGV4dCA9IHRhcmdldC0+dG9BdWRp
b0NvbnRleHQoKSkKLSAgICAgICAgcmV0dXJuIHRvVjgoYXVkaW9Db250ZXh0KTsKLSNlbmRpZiAg
ICAKLQotI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCi0gICAgaWYgKExvY2FsTWVkaWFTdHJlYW0q
IHN0cmVhbSA9IHRhcmdldC0+dG9Mb2NhbE1lZGlhU3RyZWFtKCkpCi0gICAgICAgIHJldHVybiB0
b1Y4KHN0cmVhbSk7Ci0KLSAgICBpZiAoTWVkaWFTdHJlYW0qIHN0cmVhbSA9IHRhcmdldC0+dG9N
ZWRpYVN0cmVhbSgpKQotICAgICAgICByZXR1cm4gdG9WOChzdHJlYW0pOwotCi0gICAgaWYgKFBl
ZXJDb25uZWN0aW9uKiBwZWVyQ29ubmVjdGlvbiA9IHRhcmdldC0+dG9QZWVyQ29ubmVjdGlvbigp
KQotICAgICAgICByZXR1cm4gdG9WOChwZWVyQ29ubmVjdGlvbik7Ci0jZW5kaWYKKyAgICBBdG9t
aWNTdHJpbmcgZGVzaXJlZEludGVyZmFjZSA9IHRhcmdldC0+aW50ZXJmYWNlTmFtZSgpOworICAg
IERPTV9FVkVOVF9UQVJHRVRfSU5URVJGQUNFU19GT1JfRUFDSChUUllfVE9fV1JBUF9XSVRIX0lO
VEVSRkFDRSkKIAotICAgIEFTU0VSVCgwKTsKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAg
ICByZXR1cm4gbm90SGFuZGxlZEJ5SW50ZXJjZXB0b3IoKTsKIH0KIApJbmRleDogU291cmNlL1dl
YkNvcmUvZG9tL0V2ZW50TmFtZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Rv
bS9FdmVudE5hbWVzLmNwcAkocmV2aXNpb24gOTgxOTcpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20v
RXZlbnROYW1lcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDYgKzMzLDcgQEAgRXZlbnROYW1l
czo6RXZlbnROYW1lcygpCiAgICAgOiBkdW1teSgwKQogRE9NX0VWRU5UX05BTUVTX0ZPUl9FQUNI
KElOSVRJQUxJWkVfRVZFTlRfTkFNRSkKIERPTV9FVkVOVF9JTlRFUkZBQ0VTX0ZPUl9FQUNIKElO
SVRJQUxJWkVfRVZFTlRfSU5URVJGQUNFKQorRE9NX0VWRU5UX1RBUkdFVF9JTlRFUkZBQ0VTX0ZP
Ul9FQUNIKElOSVRJQUxJWkVfRVZFTlRfSU5URVJGQUNFKQogewogfQogCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9kb20vRXZlbnROYW1lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Rv
bS9FdmVudE5hbWVzLmgJKHJldmlzaW9uIDk4MTk3KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0V2
ZW50TmFtZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMjMsNiArMjMsNyBAQAogI2RlZmluZSBFdmVu
dE5hbWVzX2gKIAogI2luY2x1ZGUgIkV2ZW50SW50ZXJmYWNlcy5oIgorI2luY2x1ZGUgIkV2ZW50
VGFyZ2V0SW50ZXJmYWNlcy5oIgogI2luY2x1ZGUgIlRocmVhZEdsb2JhbERhdGEuaCIKICNpbmNs
dWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmcuaD4KIApAQCAtMjA1LDYgKzIwNiw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogICAgICAgICAjZGVmaW5lIERPTV9FVkVOVF9JTlRFUkZBQ0VfREVD
TEFSRShuYW1lKSBBdG9taWNTdHJpbmcgaW50ZXJmYWNlRm9yIyNuYW1lOwogICAgICAgICBET01f
RVZFTlRfSU5URVJGQUNFU19GT1JfRUFDSChET01fRVZFTlRfSU5URVJGQUNFX0RFQ0xBUkUpCisg
ICAgICAgIERPTV9FVkVOVF9UQVJHRVRfSU5URVJGQUNFU19GT1JfRUFDSChET01fRVZFTlRfSU5U
RVJGQUNFX0RFQ0xBUkUpCiAgICAgICAgICN1bmRlZiBET01fRVZFTlRfSU5URVJGQUNFX0RFQ0xB
UkUKICAgICB9OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5jcHAJKHJldmlzaW9u
IDk4MTk3KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtODAsMTEgKzgwLDYgQEAgRXZlbnRUYXJnZXQ6On5FdmVudFRhcmdldCgpCiB7CiB9
CiAKLUV2ZW50U291cmNlKiBFdmVudFRhcmdldDo6dG9FdmVudFNvdXJjZSgpCi17Ci0gICAgcmV0
dXJuIDA7Ci19Ci0KIE5vZGUqIEV2ZW50VGFyZ2V0Ojp0b05vZGUoKQogewogICAgIHJldHVybiAw
OwpAQCAtOTUsMTMxICs5MCw2IEBAIERPTVdpbmRvdyogRXZlbnRUYXJnZXQ6OnRvRE9NV2luZG93
KCkKICAgICByZXR1cm4gMDsKIH0KIAotWE1MSHR0cFJlcXVlc3QqIEV2ZW50VGFyZ2V0Ojp0b1hN
TEh0dHBSZXF1ZXN0KCkKLXsKLSAgICByZXR1cm4gMDsKLX0KLQotWE1MSHR0cFJlcXVlc3RVcGxv
YWQqIEV2ZW50VGFyZ2V0Ojp0b1hNTEh0dHBSZXF1ZXN0VXBsb2FkKCkKLXsKLSAgICByZXR1cm4g
MDsKLX0KLQotRE9NQXBwbGljYXRpb25DYWNoZSogRXZlbnRUYXJnZXQ6OnRvRE9NQXBwbGljYXRp
b25DYWNoZSgpCi17Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLSNpZiBFTkFCTEUoU1ZHKQotU1ZHRWxl
bWVudEluc3RhbmNlKiBFdmVudFRhcmdldDo6dG9TVkdFbGVtZW50SW5zdGFuY2UoKQotewotICAg
IHJldHVybiAwOwotfQotI2VuZGlmCi0KLSNpZiBFTkFCTEUoV0VCX0FVRElPKQotQXVkaW9Db250
ZXh0KiBFdmVudFRhcmdldDo6dG9BdWRpb0NvbnRleHQoKQotewotICAgIHJldHVybiAwOwotfQot
Ci1KYXZhU2NyaXB0QXVkaW9Ob2RlKiBFdmVudFRhcmdldDo6dG9KYXZhU2NyaXB0QXVkaW9Ob2Rl
KCkKLXsKLSAgICByZXR1cm4gMDsKLX0KLSNlbmRpZgotCi0jaWYgRU5BQkxFKFdFQl9TT0NLRVRT
KQotV2ViU29ja2V0KiBFdmVudFRhcmdldDo6dG9XZWJTb2NrZXQoKQotewotICAgIHJldHVybiAw
OwotfQotI2VuZGlmCi0KLU1lc3NhZ2VQb3J0KiBFdmVudFRhcmdldDo6dG9NZXNzYWdlUG9ydCgp
Ci17Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLSNpZiBFTkFCTEUoV09SS0VSUykKLVdvcmtlciogRXZl
bnRUYXJnZXQ6OnRvV29ya2VyKCkKLXsKLSAgICByZXR1cm4gMDsKLX0KLQotRGVkaWNhdGVkV29y
a2VyQ29udGV4dCogRXZlbnRUYXJnZXQ6OnRvRGVkaWNhdGVkV29ya2VyQ29udGV4dCgpCi17Ci0g
ICAgcmV0dXJuIDA7Ci19Ci0jZW5kaWYKLQotI2lmIEVOQUJMRShTSEFSRURfV09SS0VSUykKLVNo
YXJlZFdvcmtlciogRXZlbnRUYXJnZXQ6OnRvU2hhcmVkV29ya2VyKCkKLXsKLSAgICByZXR1cm4g
MDsKLX0KLVNoYXJlZFdvcmtlckNvbnRleHQqIEV2ZW50VGFyZ2V0Ojp0b1NoYXJlZFdvcmtlckNv
bnRleHQoKQotewotICAgIHJldHVybiAwOwotfQotI2VuZGlmCi0KLSNpZiBFTkFCTEUoTk9USUZJ
Q0FUSU9OUykKLU5vdGlmaWNhdGlvbiogRXZlbnRUYXJnZXQ6OnRvTm90aWZpY2F0aW9uKCkKLXsK
LSAgICByZXR1cm4gMDsKLX0KLSNlbmRpZgotCi0jaWYgRU5BQkxFKEJMT0IpCi1GaWxlUmVhZGVy
KiBFdmVudFRhcmdldDo6dG9GaWxlUmVhZGVyKCkKLXsKLSAgICByZXR1cm4gMDsKLX0KLSNlbmRp
ZgotI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKLUZpbGVXcml0ZXIqIEV2ZW50VGFyZ2V0Ojp0b0Zp
bGVXcml0ZXIoKQotewotICAgIHJldHVybiAwOwotfQotI2VuZGlmCi0KLSNpZiBFTkFCTEUoSU5E
RVhFRF9EQVRBQkFTRSkKLUlEQkRhdGFiYXNlKiBFdmVudFRhcmdldDo6dG9JREJEYXRhYmFzZSgp
Ci17Ci0gICAgcmV0dXJuIDA7Ci19Ci1JREJSZXF1ZXN0KiBFdmVudFRhcmdldDo6dG9JREJSZXF1
ZXN0KCkKLXsKLSAgICByZXR1cm4gMDsKLX0KLUlEQlRyYW5zYWN0aW9uKiBFdmVudFRhcmdldDo6
dG9JREJUcmFuc2FjdGlvbigpCi17Ci0gICAgcmV0dXJuIDA7Ci19Ci1JREJWZXJzaW9uQ2hhbmdl
UmVxdWVzdCogRXZlbnRUYXJnZXQ6OnRvSURCVmVyc2lvbkNoYW5nZVJlcXVlc3QoKQotewotICAg
IHJldHVybiAwOwotfQotI2VuZGlmCi0KLSNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQotTWVkaWFT
dHJlYW0qIEV2ZW50VGFyZ2V0Ojp0b01lZGlhU3RyZWFtKCkKLXsKLSAgICByZXR1cm4gMDsKLX0K
LQotTG9jYWxNZWRpYVN0cmVhbSogRXZlbnRUYXJnZXQ6OnRvTG9jYWxNZWRpYVN0cmVhbSgpCi17
Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLVBlZXJDb25uZWN0aW9uKiBFdmVudFRhcmdldDo6dG9QZWVy
Q29ubmVjdGlvbigpCi17Ci0gICAgcmV0dXJuIDA7Ci19Ci0jZW5kaWYKLQogYm9vbCBFdmVudFRh
cmdldDo6YWRkRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUGFz
c1JlZlB0cjxFdmVudExpc3RlbmVyPiBsaXN0ZW5lciwgYm9vbCB1c2VDYXB0dXJlKQogewogICAg
IEV2ZW50VGFyZ2V0RGF0YSogZCA9IGVuc3VyZUV2ZW50VGFyZ2V0RGF0YSgpOwpJbmRleDogU291
cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvZG9tL0V2ZW50VGFyZ2V0LmgJKHJldmlzaW9uIDk4MTk3KQorKysgU291cmNlL1dlYkNvcmUv
ZG9tL0V2ZW50VGFyZ2V0LmgJKHdvcmtpbmcgY29weSkKQEAgLTEwMCw1OCArMTAwLDExIEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCByZWYoKSB7IHJlZkV2ZW50VGFyZ2V0KCk7
IH0KICAgICAgICAgdm9pZCBkZXJlZigpIHsgZGVyZWZFdmVudFRhcmdldCgpOyB9CiAKLSAgICAg
ICAgdmlydHVhbCBFdmVudFNvdXJjZSogdG9FdmVudFNvdXJjZSgpOwotICAgICAgICB2aXJ0dWFs
IE1lc3NhZ2VQb3J0KiB0b01lc3NhZ2VQb3J0KCk7CisgICAgICAgIHZpcnR1YWwgY29uc3QgQXRv
bWljU3RyaW5nJiBpbnRlcmZhY2VOYW1lKCkgY29uc3QgPSAwOworICAgICAgICB2aXJ0dWFsIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdCA9IDA7
CisKICAgICAgICAgdmlydHVhbCBOb2RlKiB0b05vZGUoKTsKICAgICAgICAgdmlydHVhbCBET01X
aW5kb3cqIHRvRE9NV2luZG93KCk7Ci0gICAgICAgIHZpcnR1YWwgWE1MSHR0cFJlcXVlc3QqIHRv
WE1MSHR0cFJlcXVlc3QoKTsKLSAgICAgICAgdmlydHVhbCBYTUxIdHRwUmVxdWVzdFVwbG9hZCog
dG9YTUxIdHRwUmVxdWVzdFVwbG9hZCgpOwotICAgICAgICB2aXJ0dWFsIERPTUFwcGxpY2F0aW9u
Q2FjaGUqIHRvRE9NQXBwbGljYXRpb25DYWNoZSgpOwotI2lmIEVOQUJMRShTVkcpCi0gICAgICAg
IHZpcnR1YWwgU1ZHRWxlbWVudEluc3RhbmNlKiB0b1NWR0VsZW1lbnRJbnN0YW5jZSgpOwotI2Vu
ZGlmCi0jaWYgRU5BQkxFKFdPUktFUlMpCi0gICAgICAgIHZpcnR1YWwgV29ya2VyKiB0b1dvcmtl
cigpOwotICAgICAgICB2aXJ0dWFsIERlZGljYXRlZFdvcmtlckNvbnRleHQqIHRvRGVkaWNhdGVk
V29ya2VyQ29udGV4dCgpOwotI2VuZGlmCi0jaWYgRU5BQkxFKFNIQVJFRF9XT1JLRVJTKQotICAg
ICAgICB2aXJ0dWFsIFNoYXJlZFdvcmtlciogdG9TaGFyZWRXb3JrZXIoKTsKLSAgICAgICAgdmly
dHVhbCBTaGFyZWRXb3JrZXJDb250ZXh0KiB0b1NoYXJlZFdvcmtlckNvbnRleHQoKTsKLSNlbmRp
ZgotCi0jaWYgRU5BQkxFKFdFQl9BVURJTykKLSAgICAgICAgdmlydHVhbCBBdWRpb0NvbnRleHQq
IHRvQXVkaW9Db250ZXh0KCk7Ci0gICAgICAgIHZpcnR1YWwgSmF2YVNjcmlwdEF1ZGlvTm9kZSog
dG9KYXZhU2NyaXB0QXVkaW9Ob2RlKCk7Ci0jZW5kaWYKLQotI2lmIEVOQUJMRShXRUJfU09DS0VU
UykKLSAgICAgICAgdmlydHVhbCBXZWJTb2NrZXQqIHRvV2ViU29ja2V0KCk7Ci0jZW5kaWYKLQot
I2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQotICAgICAgICB2aXJ0dWFsIE5vdGlmaWNhdGlvbiog
dG9Ob3RpZmljYXRpb24oKTsKLSNlbmRpZgotI2lmIEVOQUJMRShCTE9CKQotICAgICAgICB2aXJ0
dWFsIEZpbGVSZWFkZXIqIHRvRmlsZVJlYWRlcigpOwotI2VuZGlmCi0jaWYgRU5BQkxFKEZJTEVf
U1lTVEVNKQotICAgICAgICB2aXJ0dWFsIEZpbGVXcml0ZXIqIHRvRmlsZVdyaXRlcigpOwotI2Vu
ZGlmCi0KLSNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKLSAgICAgICAgdmlydHVhbCBJREJE
YXRhYmFzZSogdG9JREJEYXRhYmFzZSgpOwotICAgICAgICB2aXJ0dWFsIElEQlJlcXVlc3QqIHRv
SURCUmVxdWVzdCgpOwotICAgICAgICB2aXJ0dWFsIElEQlRyYW5zYWN0aW9uKiB0b0lEQlRyYW5z
YWN0aW9uKCk7Ci0gICAgICAgIHZpcnR1YWwgSURCVmVyc2lvbkNoYW5nZVJlcXVlc3QqIHRvSURC
VmVyc2lvbkNoYW5nZVJlcXVlc3QoKTsKLSNlbmRpZgotCi0jaWYgRU5BQkxFKE1FRElBX1NUUkVB
TSkKLSAgICAgICAgdmlydHVhbCBNZWRpYVN0cmVhbSogdG9NZWRpYVN0cmVhbSgpOwotICAgICAg
ICB2aXJ0dWFsIExvY2FsTWVkaWFTdHJlYW0qIHRvTG9jYWxNZWRpYVN0cmVhbSgpOwotICAgICAg
ICB2aXJ0dWFsIFBlZXJDb25uZWN0aW9uKiB0b1BlZXJDb25uZWN0aW9uKCk7Ci0jZW5kaWYKLQot
ICAgICAgICB2aXJ0dWFsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKSBjb25zdCA9IDA7CiAKICAgICAgICAgdmlydHVhbCBib29sIGFkZEV2ZW50TGlzdGVu
ZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5l
cj4sIGJvb2wgdXNlQ2FwdHVyZSk7CiAgICAgICAgIHZpcnR1YWwgYm9vbCByZW1vdmVFdmVudExp
c3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBFdmVudExpc3RlbmVyKiwgYm9v
bCB1c2VDYXB0dXJlKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldEZhY3Rv
cnkuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0RmFjdG9y
eS5pbgkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldEZhY3Rv
cnkuaW4JKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjcgQEAKK25hbWVzcGFjZT0iRXZlbnRUYXJn
ZXQiCisKK0V2ZW50U291cmNlCitNZXNzYWdlUG9ydAorTm9kZQorRE9NV2luZG93CitYTUxIdHRw
UmVxdWVzdAorWE1MSHR0cFJlcXVlc3RVcGxvYWQKK0RPTUFwcGxpY2F0aW9uQ2FjaGUKK1NWR0Vs
ZW1lbnRJbnN0YW5jZSBjb25kaXRpb25hbD1TVkcKK1dvcmtlciBjb25kaXRpb25hbD1XT1JLRVJT
CitEZWRpY2F0ZWRXb3JrZXJDb250ZXh0IGNvbmRpdGlvbmFsPVdPUktFUlMKK1NoYXJlZFdvcmtl
ciBjb25kaXRpb25hbD1TSEFSRURfV09SS0VSUworU2hhcmVkV29ya2VyQ29udGV4dCBjb25kaXRp
b25hbD1TSEFSRURfV09SS0VSUworQXVkaW9Db250ZXh0IGNvbmRpdGlvbmFsPVdFQl9BVURJTwor
SmF2YVNjcmlwdEF1ZGlvTm9kZSBjb25kaXRpb25hbD1XRUJfQVVESU8KK1dlYlNvY2tldCBjb25k
aXRpb25hbD1XRUJfU09DS0VUUworTm90aWZpY2F0aW9uIGNvbmRpdGlvbmFsPU5PVElGSUNBVElP
TlMKK0ZpbGVSZWFkZXIgY29uZGl0aW9uYWw9QkxPQgorRmlsZVdyaXRlciBjb25kaXRpb25hbD1G
SUxFX1NZU1RFTQorSURCRGF0YWJhc2UgY29uZGl0aW9uYWw9SU5ERVhFRF9EQVRBQkFTRQorSURC
UmVxdWVzdCBjb25kaXRpb25hbD1JTkRFWEVEX0RBVEFCQVNFCitJREJUcmFuc2FjdGlvbiBjb25k
aXRpb25hbD1JTkRFWEVEX0RBVEFCQVNFCitJREJWZXJzaW9uQ2hhbmdlUmVxdWVzdCBjb25kaXRp
b25hbD1JTkRFWEVEX0RBVEFCQVNFCitNZWRpYVN0cmVhbSBjb25kaXRpb25hbD1NRURJQV9TVFJF
QU0KK0xvY2FsTWVkaWFTdHJlYW0gY29uZGl0aW9uYWw9TUVESUFfU1RSRUFNCitQZWVyQ29ubmVj
dGlvbiBjb25kaXRpb25hbD1NRURJQV9TVFJFQU0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9N
ZXNzYWdlUG9ydC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VQ
b3J0LmNwcAkocmV2aXNpb24gOTgxOTcpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZVBv
cnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTksNiArMTU5LDExIEBAIHZvaWQgTWVzc2FnZVBv
cnQ6OmNvbnRleHREZXN0cm95ZWQoKQogICAgIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCA9IDA7
CiB9CiAKK2NvbnN0IEF0b21pY1N0cmluZyYgTWVzc2FnZVBvcnQ6OmludGVyZmFjZU5hbWUoKSBj
b25zdAoreworICAgIHJldHVybiBldmVudE5hbWVzKCkuaW50ZXJmYWNlRm9yTWVzc2FnZVBvcnQ7
Cit9CisKIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIE1lc3NhZ2VQb3J0OjpzY3JpcHRFeGVjdXRp
b25Db250ZXh0KCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0
OwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VQb3J0LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VQb3J0LmgJKHJldmlzaW9uIDk4MTk3KQorKysgU291
cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VQb3J0LmgJKHdvcmtpbmcgY29weSkKQEAgLTgyLDEwICs4
Miw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICB2b2lkIGNvbnRleHREZXN0cm95
ZWQoKTsKIAorICAgICAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgaW50ZXJmYWNlTmFt
ZSgpIGNvbnN0OwogICAgICAgICB2aXJ0dWFsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdDsKIAotICAgICAgICB2aXJ0dWFsIE1lc3NhZ2VQb3J0
KiB0b01lc3NhZ2VQb3J0KCkgeyByZXR1cm4gdGhpczsgfQotCiAgICAgICAgIHZvaWQgZGlzcGF0
Y2hNZXNzYWdlcygpOwogCiAgICAgICAgIHVzaW5nIFJlZkNvdW50ZWQ8TWVzc2FnZVBvcnQ+Ojpy
ZWY7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCShyZXZpc2lvbiA5ODE5NykKKysrIFNvdXJjZS9XZWJD
b3JlL2RvbS9Ob2RlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTc1LDYgKzU3NSwxMSBAQCB2b2lk
IE5vZGU6OnNldFNoYWRvd0hvc3QoRWxlbWVudCogaG9zdCkKICAgICBzZXRQYXJlbnQoaG9zdCk7
CiB9CiAKK05vZGUqIE5vZGU6OnRvTm9kZSgpCit7CisgICAgcmV0dXJuIHRoaXM7Cit9CisKIEhU
TUxJbnB1dEVsZW1lbnQqIE5vZGU6OnRvSW5wdXRFbGVtZW50KCkKIHsKICAgICAvLyBJZiBvbmUg
b2YgdGhlIGJlbG93IEFTU0VSVHMgdHJpZ2dlciwgeW91IGFyZSBjYWxsaW5nIHRoaXMgZnVuY3Rp
b24KQEAgLTI1MTcsNyArMjUyMiwxMCBAQCBOb2RlKiBOb2RlOjplbmNsb3NpbmdMaW5rRXZlbnRQ
YXJlbnRPclNlCiAgICAgcmV0dXJuIDA7CiB9CiAKLS8vIC0tLS0tLS0tCitjb25zdCBBdG9taWNT
dHJpbmcmIE5vZGU6OmludGVyZmFjZU5hbWUoKSBjb25zdAoreworICAgIHJldHVybiBldmVudE5h
bWVzKCkuaW50ZXJmYWNlRm9yTm9kZTsKK30KIAogU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogTm9k
ZTo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0CiB7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9kb20vTm9kZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgJKHJl
dmlzaW9uIDk4MTk3KQorKysgU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaAkod29ya2luZyBjb3B5
KQpAQCAtNTM1LDEwICs1MzUsMTAgQEAgcHVibGljOgogCiAgICAgdW5zaWduZWQgc2hvcnQgY29t
cGFyZURvY3VtZW50UG9zaXRpb24oTm9kZSopOwogCi0gICAgdmlydHVhbCBOb2RlKiB0b05vZGUo
KSB7IHJldHVybiB0aGlzOyB9Ci0KKyAgICB2aXJ0dWFsIE5vZGUqIHRvTm9kZSgpOwogICAgIHZp
cnR1YWwgSFRNTElucHV0RWxlbWVudCogdG9JbnB1dEVsZW1lbnQoKTsKIAorICAgIHZpcnR1YWwg
Y29uc3QgQXRvbWljU3RyaW5nJiBpbnRlcmZhY2VOYW1lKCkgY29uc3Q7CiAgICAgdmlydHVhbCBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3Q7CiAK
ICAgICB2aXJ0dWFsIGJvb2wgYWRkRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2
ZW50VHlwZSwgUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiwgYm9vbCB1c2VDYXB0dXJlKTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9tYWtlX2V2ZW50X2ZhY3RvcnkucGwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvZG9tL21ha2VfZXZlbnRfZmFjdG9yeS5wbAkocmV2aXNpb24gOTgx
OTcpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vbWFrZV9ldmVudF9mYWN0b3J5LnBsCSh3b3JraW5n
IGNvcHkpCkBAIC00Nyw2ICs0Nyw3IEBAIHN1YiBwcmludEhlYWRlcnNGaWxlKCQpOwogbXkgJGV2
ZW50c0ZpbGUgPSAiIjsKIG15ICRvdXRwdXREaXIgPSAiLiI7CiBteSAlcGFyc2VkRXZlbnRzID0g
KCk7CitteSAkbmFtZXNwYWNlOwogCiByZXF1aXJlIENvbmZpZzsKIApAQCAtNjEsOSArNjIsOSBA
QCBkaWUgIllvdSBtdXN0IHNwZWNpZnkgLS1ldmVudHMgPGZpbGU+IiB1CiAKIG15ICVldmVudHMg
PSAle3JlYWRFdmVudHMoJGV2ZW50c0ZpbGUpfTsKIAotcHJpbnRGYWN0b3J5RmlsZSgiJG91dHB1
dERpci9FdmVudEZhY3RvcnkuY3BwIik7Ci1wcmludE1hY3JvRmlsZSgiJG91dHB1dERpci9FdmVu
dEludGVyZmFjZXMuaCIpOwotcHJpbnRIZWFkZXJzRmlsZSgiJG91dHB1dERpci9FdmVudEhlYWRl
cnMuaCIpOworcHJpbnRGYWN0b3J5RmlsZSgiJG91dHB1dERpci8ke25hbWVzcGFjZX1GYWN0b3J5
LmNwcCIpIGlmICRuYW1lc3BhY2UgZXEgIkV2ZW50IjsKK3ByaW50TWFjcm9GaWxlKCIkb3V0cHV0
RGlyLyR7bmFtZXNwYWNlfUludGVyZmFjZXMuaCIpOworcHJpbnRIZWFkZXJzRmlsZSgiJG91dHB1
dERpci8ke25hbWVzcGFjZX1IZWFkZXJzLmgiKTsKIAogc3ViIGRlZmF1bHRFdmVudFByb3BlcnR5
SGFzaAogewpAQCAtODksNyArOTAsOCBAQCBzdWIgcGFyYW1ldGVyc0hhbmRsZXIKIHsKICAgICBt
eSAoJHBhcmFtZXRlciwgJHZhbHVlKSA9IEBfOwogCi0gICAgZGllICJVbmtub3duIHBhcmFtZXRl
ciAkcGFyYW1ldGVyIGZvciBldmVudHNcbiIgdW5sZXNzICRwYXJhbWV0ZXIgZXEgIm5hbWVzcGFj
ZSI7CisgICAgZGllICJVbmtub3duIHBhcmFtZXRlciAkcGFyYW1ldGVyXG4iIHVubGVzcyAkcGFy
YW1ldGVyIGVxICJuYW1lc3BhY2UiOworICAgICRuYW1lc3BhY2UgPSAkdmFsdWU7CiB9CiAKIHN1
YiByZWFkTmFtZXMoJCQkKQpAQCAtMTI0LDYgKzEyNiwxNiBAQCBzdWIgaW50ZXJmYWNlRm9yRXZl
bnQoJCkKICAgICByZXR1cm4gJGludGVyZmFjZU5hbWU7CiB9CiAKK3N1YiB0b01hY3JvU3R5bGUo
JCkKK3sKKyAgICBteSAoJGNhbWVsQ2FzZSkgPSBAXzsKKworICAgIHJldHVybiAiRVZFTlQiIGlm
ICRjYW1lbENhc2UgZXEgIkV2ZW50IjsKKyAgICByZXR1cm4gIkVWRU5UX1RBUkdFVCIgaWYgJGNh
bWVsQ2FzZSBlcSAiRXZlbnRUYXJnZXQiOworCisgICAgZGllICJPaywgeW91IGdvdCBtZS4gVGhp
cyBzY3JpcHQgaXMgcmVhbGx5IGp1c3QgYSBnaWFudCBoYWNrLiI7Cit9CisKIHN1YiBwcmludEZh
Y3RvcnlGaWxlKCQpCiB7CiAgICAgbXkgJHBhdGggPSBzaGlmdDsKQEAgLTEzNCwxMyArMTQ2LDEz
IEBAIHN1YiBwcmludEZhY3RvcnlGaWxlKCQpCiAgICAgcHJpbnRMaWNlbnNlSGVhZGVyKCRGKTsK
IAogICAgIHByaW50IEYgIiNpbmNsdWRlIFwiY29uZmlnLmhcIlxuIjsKLSAgICBwcmludCBGICIj
aW5jbHVkZSBcIkV2ZW50RmFjdG9yeS5oXCJcbiI7CisgICAgcHJpbnQgRiAiI2luY2x1ZGUgXCIk
e25hbWVzcGFjZX1GYWN0b3J5LmhcIlxuIjsKICAgICBwcmludCBGICJcbiI7Ci0gICAgcHJpbnQg
RiAiI2luY2x1ZGUgXCJFdmVudEhlYWRlcnMuaFwiXG4iOworICAgIHByaW50IEYgIiNpbmNsdWRl
IFwiJHtuYW1lc3BhY2V9SGVhZGVycy5oXCJcbiI7CiAgICAgcHJpbnQgRiAiXG4iOwogICAgIHBy
aW50IEYgIm5hbWVzcGFjZSBXZWJDb3JlIHtcbiI7CiAgICAgcHJpbnQgRiAiXG4iOwotICAgIHBy
aW50IEYgIlBhc3NSZWZQdHI8RXZlbnQ+IEV2ZW50RmFjdG9yeTo6Y3JlYXRlKGNvbnN0IFN0cmlu
ZyYgZXZlbnRUeXBlKVxuIjsKKyAgICBwcmludCBGICJQYXNzUmVmUHRyPCRuYW1lc3BhY2U+ICR7
bmFtZXNwYWNlfUZhY3Rvcnk6OmNyZWF0ZShjb25zdCBTdHJpbmcmIHR5cGUpXG4iOwogICAgIHBy
aW50IEYgIntcbiI7CiAKICAgICBmb3IgbXkgJGV2ZW50TmFtZSAoc29ydCBrZXlzICVwYXJzZWRF
dmVudHMpIHsKQEAgLTE0OCw3ICsxNjAsNyBAQCBzdWIgcHJpbnRGYWN0b3J5RmlsZSgkKQogICAg
ICAgICBteSAkaW50ZXJmYWNlTmFtZSA9IGludGVyZmFjZUZvckV2ZW50KCRldmVudE5hbWUpOwog
CiAgICAgICAgIHByaW50IEYgIiNpZiBFTkFCTEUoJGNvbmRpdGlvbmFsKVxuIiBpZiAkY29uZGl0
aW9uYWw7Ci0gICAgICAgIHByaW50IEYgIiAgICBpZiAoZXZlbnRUeXBlID09IFwiJGV2ZW50TmFt
ZVwiKVxuIjsKKyAgICAgICAgcHJpbnQgRiAiICAgIGlmICh0eXBlID09IFwiJGV2ZW50TmFtZVwi
KVxuIjsKICAgICAgICAgcHJpbnQgRiAiICAgICAgICByZXR1cm4gJHtpbnRlcmZhY2VOYW1lfTo6
Y3JlYXRlKCk7XG4iOwogICAgICAgICBwcmludCBGICIjZW5kaWZcbiIgaWYgJGNvbmRpdGlvbmFs
OwogICAgIH0KQEAgLTE2OSw4ICsxODEsOCBAQCBzdWIgcHJpbnRNYWNyb0ZpbGUoJCkKIAogICAg
IHByaW50TGljZW5zZUhlYWRlcigkRik7CiAKLSAgICBwcmludCBGICIjaWZuZGVmIEV2ZW50SW50
ZXJmYWNlc19oXG4iOwotICAgIHByaW50IEYgIiNkZWZpbmUgRXZlbnRJbnRlcmZhY2VzX2hcbiI7
CisgICAgcHJpbnQgRiAiI2lmbmRlZiAke25hbWVzcGFjZX1JbnRlcmZhY2VzX2hcbiI7CisgICAg
cHJpbnQgRiAiI2RlZmluZSAke25hbWVzcGFjZX1JbnRlcmZhY2VzX2hcbiI7CiAgICAgcHJpbnQg
RiAiXG4iOwogCiAgICAgbXkgJXVuY29uZGl0aW9uYWxJbnRlcmZhY2VzID0gKCk7CkBAIC0xOTAs
MzQgKzIwMiwzNiBAQCBzdWIgcHJpbnRNYWNyb0ZpbGUoJCkKICAgICAgICAgfQogICAgIH0KIAor
ICAgIG15ICRtYWNyb1N0eWxlZE5hbWVzcGFjZSA9IHRvTWFjcm9TdHlsZSgkbmFtZXNwYWNlKTsK
KwogICAgIGZvciBteSAkY29uZGl0aW9uYWwgKHNvcnQga2V5cyAlaW50ZXJmYWNlc0J5Q29uZGl0
aW9uYWwpIHsKICAgICAgICAgcHJpbnQgRiAiI2lmIEVOQUJMRSgkY29uZGl0aW9uYWwpXG4iOwot
ICAgICAgICBwcmludCBGICIjZGVmaW5lIERPTV9FVkVOVF9JTlRFUkZBQ0VTX0ZPUl9FQUNIXyRj
b25kaXRpb25hbChtYWNybykgXFxcbiI7CisgICAgICAgIHByaW50IEYgIiNkZWZpbmUgRE9NXyR7
bWFjcm9TdHlsZWROYW1lc3BhY2V9X0lOVEVSRkFDRVNfRk9SX0VBQ0hfJGNvbmRpdGlvbmFsKG1h
Y3JvKSBcXFxuIjsKIAogICAgICAgICBmb3IgbXkgJGludGVyZmFjZSAoc29ydCBrZXlzICV7ICRp
bnRlcmZhY2VzQnlDb25kaXRpb25hbHskY29uZGl0aW9uYWx9IH0pIHsKICAgICAgICAgICAgIG5l
eHQgaWYgZGVmaW5lZCgkdW5jb25kaXRpb25hbEludGVyZmFjZXN7JGludGVyZmFjZX0pOwogICAg
ICAgICAgICAgcHJpbnQgRiAiICAgIG1hY3JvKCRpbnRlcmZhY2UpIFxcXG4iOwogICAgICAgICB9
CiAKLSAgICAgICAgcHJpbnQgRiAiLy8gRW5kIG9mIERPTV9FVkVOVF9JTlRFUkZBQ0VTX0ZPUl9F
QUNIXyRjb25kaXRpb25hbFxuIjsKKyAgICAgICAgcHJpbnQgRiAiLy8gRW5kIG9mIERPTV8ke21h
Y3JvU3R5bGVkTmFtZXNwYWNlfV9JTlRFUkZBQ0VTX0ZPUl9FQUNIXyRjb25kaXRpb25hbFxuIjsK
ICAgICAgICAgcHJpbnQgRiAiI2Vsc2VcbiI7Ci0gICAgICAgIHByaW50IEYgIiNkZWZpbmUgRE9N
X0VWRU5UX0lOVEVSRkFDRVNfRk9SX0VBQ0hfJGNvbmRpdGlvbmFsKG1hY3JvKVxuIjsKKyAgICAg
ICAgcHJpbnQgRiAiI2RlZmluZSBET01fJHttYWNyb1N0eWxlZE5hbWVzcGFjZX1fSU5URVJGQUNF
U19GT1JfRUFDSF8kY29uZGl0aW9uYWwobWFjcm8pXG4iOwogICAgICAgICBwcmludCBGICIjZW5k
aWZcbiI7CiAgICAgICAgIHByaW50IEYgIlxuIjsKICAgICB9CiAKLSAgICBwcmludCBGICIjZGVm
aW5lIERPTV9FVkVOVF9JTlRFUkZBQ0VTX0ZPUl9FQUNIKG1hY3JvKSBcXFxuIjsKKyAgICBwcmlu
dCBGICIjZGVmaW5lIERPTV8ke21hY3JvU3R5bGVkTmFtZXNwYWNlfV9JTlRFUkZBQ0VTX0ZPUl9F
QUNIKG1hY3JvKSBcXFxuIjsKICAgICBwcmludCBGICIgICAgXFxcbiI7CiAgICAgZm9yIG15ICRp
bnRlcmZhY2UgKHNvcnQga2V5cyAldW5jb25kaXRpb25hbEludGVyZmFjZXMpIHsKICAgICAgICAg
ICAgIHByaW50IEYgIiAgICBtYWNybygkaW50ZXJmYWNlKSBcXFxuIjsKICAgICB9CiAgICAgcHJp
bnQgRiAiICAgIFxcXG4iOwogICAgIGZvciBteSAkY29uZGl0aW9uYWwgKHNvcnQga2V5cyAlaW50
ZXJmYWNlc0J5Q29uZGl0aW9uYWwpIHsKLSAgICAgICAgcHJpbnQgRiAiICAgIERPTV9FVkVOVF9J
TlRFUkZBQ0VTX0ZPUl9FQUNIXyRjb25kaXRpb25hbChtYWNybykgXFxcbiI7CisgICAgICAgIHBy
aW50IEYgIiAgICBET01fJHttYWNyb1N0eWxlZE5hbWVzcGFjZX1fSU5URVJGQUNFU19GT1JfRUFD
SF8kY29uZGl0aW9uYWwobWFjcm8pIFxcXG4iOwogICAgIH0KIAogICAgIHByaW50IEYgIlxuIjsK
LSAgICBwcmludCBGICIjZW5kaWYgLy8gRXZlbnRJbnRlcmZhY2VzX2hcbiI7CisgICAgcHJpbnQg
RiAiI2VuZGlmIC8vICR7bmFtZXNwYWNlfUludGVyZmFjZXNfaFxuIjsKIAogICAgIGNsb3NlIEY7
CiB9CkBAIC0yMzEsOCArMjQ1LDggQEAgc3ViIHByaW50SGVhZGVyc0ZpbGUoJCkKIAogICAgIHBy
aW50TGljZW5zZUhlYWRlcigkRik7CiAKLSAgICBwcmludCBGICIjaWZuZGVmIEV2ZW50SGVhZGVy
c19oXG4iOwotICAgIHByaW50IEYgIiNkZWZpbmUgRXZlbnRIZWFkZXJzX2hcbiI7CisgICAgcHJp
bnQgRiAiI2lmbmRlZiAke25hbWVzcGFjZX1IZWFkZXJzX2hcbiI7CisgICAgcHJpbnQgRiAiI2Rl
ZmluZSAke25hbWVzcGFjZX1IZWFkZXJzX2hcbiI7CiAgICAgcHJpbnQgRiAiXG4iOwogCiAgICAg
bXkgJWluY2x1ZGVkSW50ZXJmYWNlcyA9ICgpOwpAQCAtMjU1LDcgKzI2OSw3IEBAIHN1YiBwcmlu
dEhlYWRlcnNGaWxlKCQpCiAgICAgfQogCiAgICAgcHJpbnQgRiAiXG4iOwotICAgIHByaW50IEYg
IiNlbmRpZiAvLyBFdmVudEhlYWRlcnNfaFxuIjsKKyAgICBwcmludCBGICIjZW5kaWYgLy8gJHtu
YW1lc3BhY2V9SGVhZGVyc19oXG4iOwogCiAgICAgY2xvc2UgRjsKIH0KQEAgLTI2Nyw3ICsyODEs
NyBAQCBzdWIgcHJpbnRMaWNlbnNlSGVhZGVyKCQpCiAgICAgcHJpbnQgRiAiLyoKICAqIFRISVMg
RklMRSBXQVMgQVVUT01BVElDQUxMWSBHRU5FUkFURUQsIERPIE5PVCBFRElULgogICoKLSAqIFRo
aXMgZmlsZSB3YXMgZ2VuZXJhdGVkIGJ5IHRoZSBkb20vbWFrZV9ldmVudHMucGwgc2NyaXB0Lgor
ICogVGhpcyBmaWxlIHdhcyBnZW5lcmF0ZWQgYnkgdGhlIGRvbS9tYWtlX2V2ZW50X2ZhY3Rvcnku
cGwgc2NyaXB0LgogICoKICAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiAgQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFk
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlci5j
cHAJKHJldmlzaW9uIDk4MTk3KQorKysgU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVy
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjIsNiArNjIsMTEgQEAgRmlsZVJlYWRlcjo6fkZpbGVS
ZWFkZXIoKQogICAgIHRlcm1pbmF0ZSgpOwogfQogCitjb25zdCBBdG9taWNTdHJpbmcmIEZpbGVS
ZWFkZXI6OmludGVyZmFjZU5hbWUoKSBjb25zdAoreworICAgIHJldHVybiBldmVudE5hbWVzKCku
aW50ZXJmYWNlRm9yRmlsZVJlYWRlcjsKK30KKwogYm9vbCBGaWxlUmVhZGVyOjpoYXNQZW5kaW5n
QWN0aXZpdHkoKSBjb25zdAogewogICAgIHJldHVybiBtX3N0YXRlID09IExPQURJTkcgfHwgQWN0
aXZlRE9NT2JqZWN0OjpoYXNQZW5kaW5nQWN0aXZpdHkoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2ZpbGVhcGkvRmlsZVJlYWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2ZpbGVh
cGkvRmlsZVJlYWRlci5oCShyZXZpc2lvbiA5ODE5NykKKysrIFNvdXJjZS9XZWJDb3JlL2ZpbGVh
cGkvRmlsZVJlYWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC04NSw3ICs4NSw3IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIGJvb2wgaGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3Q7CiAKICAgICAvLyBF
dmVudFRhcmdldAotICAgIHZpcnR1YWwgRmlsZVJlYWRlciogdG9GaWxlUmVhZGVyKCkgeyByZXR1
cm4gdGhpczsgfQorICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBpbnRlcmZhY2VOYW1l
KCkgY29uc3Q7CiAgICAgdmlydHVhbCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVj
dXRpb25Db250ZXh0KCkgY29uc3QgeyByZXR1cm4gQWN0aXZlRE9NT2JqZWN0OjpzY3JpcHRFeGVj
dXRpb25Db250ZXh0KCk7IH0KIAogICAgIC8vIEZpbGVSZWFkZXJMb2FkZXJDbGllbnQKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVdyaXRlci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlV3JpdGVyLmNwcAkocmV2aXNpb24gOTgxOTcpCisrKyBT
b3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVXcml0ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02
NSw2ICs2NSwxMSBAQCBGaWxlV3JpdGVyOjp+RmlsZVdyaXRlcigpCiAgICAgICAgIHN0b3AoKTsK
IH0KIAorY29uc3QgQXRvbWljU3RyaW5nJiBGaWxlV3JpdGVyOjppbnRlcmZhY2VOYW1lKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gZXZlbnROYW1lcygpLmludGVyZmFjZUZvckZpbGVXcml0ZXI7Cit9
CisKIGJvb2wgRmlsZVdyaXRlcjo6aGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3QKIHsKICAgICBy
ZXR1cm4gbV9yZWFkeVN0YXRlID09IFdSSVRJTkcgfHwgQWN0aXZlRE9NT2JqZWN0OjpoYXNQZW5k
aW5nQWN0aXZpdHkoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVdyaXRlci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVdyaXRlci5oCShyZXZp
c2lvbiA5ODE5NykKKysrIFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVdyaXRlci5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC03Niw3ICs3Niw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc3Rv
cCgpOwogCiAgICAgLy8gRXZlbnRUYXJnZXQKLSAgICB2aXJ0dWFsIEZpbGVXcml0ZXIqIHRvRmls
ZVdyaXRlcigpIHsgcmV0dXJuIHRoaXM7IH0KKyAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmlu
ZyYgaW50ZXJmYWNlTmFtZSgpIGNvbnN0OwogICAgIHZpcnR1YWwgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIEFjdGl2ZURPTU9i
amVjdDo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOyB9CiAKICAgICB1c2luZyBSZWZDb3VudGVk
PEZpbGVXcml0ZXJCYXNlPjo6cmVmOwpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNh
Y2hlL0RPTUFwcGxpY2F0aW9uQ2FjaGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2xvYWRlci9hcHBjYWNoZS9ET01BcHBsaWNhdGlvbkNhY2hlLmNwcAkocmV2aXNpb24gOTgxOTcp
CisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvRE9NQXBwbGljYXRpb25DYWNoZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTg0LDYgKzg0LDExIEBAIHZvaWQgRE9NQXBwbGljYXRpb25D
YWNoZTo6c3dhcENhY2hlKEV4Y2UKICAgICAgICAgZWMgPSBJTlZBTElEX1NUQVRFX0VSUjsKIH0K
IAorY29uc3QgQXRvbWljU3RyaW5nJiBET01BcHBsaWNhdGlvbkNhY2hlOjppbnRlcmZhY2VOYW1l
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gZXZlbnROYW1lcygpLmludGVyZmFjZUZvckRPTUFwcGxp
Y2F0aW9uQ2FjaGU7Cit9CisKIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIERPTUFwcGxpY2F0aW9u
Q2FjaGU6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdAogewogICAgIGlmIChtX2ZyYW1l
KQpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0RPTUFwcGxpY2F0aW9uQ2Fj
aGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvRE9NQXBw
bGljYXRpb25DYWNoZS5oCShyZXZpc2lvbiA5ODE5NykKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRl
ci9hcHBjYWNoZS9ET01BcHBsaWNhdGlvbkNhY2hlLmgJKHdvcmtpbmcgY29weSkKQEAgLTY5LDgg
KzY5LDggQEAgcHVibGljOgogICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIoY2Fj
aGVkKTsKICAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKG9ic29sZXRlKTsKIAor
ICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBpbnRlcmZhY2VOYW1lKCkgY29uc3Q7CiAg
ICAgdmlydHVhbCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0
KCkgY29uc3Q7Ci0gICAgRE9NQXBwbGljYXRpb25DYWNoZSogdG9ET01BcHBsaWNhdGlvbkNhY2hl
KCkgeyByZXR1cm4gdGhpczsgfQogCiAgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgdG9F
dmVudFR5cGUoQXBwbGljYXRpb25DYWNoZUhvc3Q6OkV2ZW50SUQgaWQpOwogCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9tZWRpYXN0cmVhbS9Mb2NhbE1lZGlhU3RyZWFtLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9tZWRpYXN0cmVhbS9Mb2NhbE1lZGlhU3RyZWFtLmNwcAkocmV2aXNp
b24gOTgxOTcpCisrKyBTb3VyY2UvV2ViQ29yZS9tZWRpYXN0cmVhbS9Mb2NhbE1lZGlhU3RyZWFt
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjUsOSArNjUsOSBAQCBMb2NhbE1lZGlhU3RyZWFtOjp+
TG9jYWxNZWRpYVN0cmVhbSgpCiB7CiB9CiAKLUxvY2FsTWVkaWFTdHJlYW0qIExvY2FsTWVkaWFT
dHJlYW06OnRvTG9jYWxNZWRpYVN0cmVhbSgpCitjb25zdCBBdG9taWNTdHJpbmcmIExvY2FsTWVk
aWFTdHJlYW06OmludGVyZmFjZU5hbWUoKSBjb25zdAogewotICAgIHJldHVybiB0aGlzOworICAg
IHJldHVybiBldmVudE5hbWVzKCkuaW50ZXJmYWNlRm9yTG9jYWxNZWRpYVN0cmVhbTsKIH0KIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvbWVkaWFzdHJlYW0v
TG9jYWxNZWRpYVN0cmVhbS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL21lZGlhc3Ry
ZWFtL0xvY2FsTWVkaWFTdHJlYW0uaAkocmV2aXNpb24gOTgxOTcpCisrKyBTb3VyY2UvV2ViQ29y
ZS9tZWRpYXN0cmVhbS9Mb2NhbE1lZGlhU3RyZWFtLmgJKHdvcmtpbmcgY29weSkKQEAgLTQwLDgg
KzQwLDggQEAgcHVibGljOgogCiAgICAgdm9pZCBzdG9wKCk7CiAKLSAgICAvLyBFdmVudFRhcmdl
dC4KLSAgICB2aXJ0dWFsIExvY2FsTWVkaWFTdHJlYW0qIHRvTG9jYWxNZWRpYVN0cmVhbSgpOwor
ICAgIC8vIEV2ZW50VGFyZ2V0CisgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIGludGVy
ZmFjZU5hbWUoKSBjb25zdDsKIAogcHJpdmF0ZToKICAgICBMb2NhbE1lZGlhU3RyZWFtKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBNZWRpYVN0cmVhbVNvdXJjZVZlY3RvciYpOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0uY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmNwcAkocmV2aXNpb24g
OTgxOTcpCisrKyBTb3VyY2UvV2ViQ29yZS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTY0LDExICs2NCw2IEBAIE1lZGlhU3RyZWFtOjpSZWFkeVN0YXRlIE1l
ZGlhU3RyZWFtOjpyZWEKICAgICByZXR1cm4gbV9kZXNjcmlwdG9yLT5lbmRlZCgpID8gRU5ERUQg
OiBMSVZFOwogfQogCi1NZWRpYVN0cmVhbSogTWVkaWFTdHJlYW06OnRvTWVkaWFTdHJlYW0oKQot
ewotICAgIHJldHVybiB0aGlzOwotfQotCiB2b2lkIE1lZGlhU3RyZWFtOjpzdHJlYW1FbmRlZCgp
CiB7CiAgICAgaWYgKHJlYWR5U3RhdGUoKSA9PSBFTkRFRCkKQEAgLTc5LDYgKzc0LDExIEBAIHZv
aWQgTWVkaWFTdHJlYW06OnN0cmVhbUVuZGVkKCkKICAgICBkaXNwYXRjaEV2ZW50KEV2ZW50Ojpj
cmVhdGUoZXZlbnROYW1lcygpLmVuZGVkRXZlbnQsIGZhbHNlLCBmYWxzZSkpOwogfQogCitjb25z
dCBBdG9taWNTdHJpbmcmIE1lZGlhU3RyZWFtOjppbnRlcmZhY2VOYW1lKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gZXZlbnROYW1lcygpLmludGVyZmFjZUZvck1lZGlhU3RyZWFtOworfQorCiBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBNZWRpYVN0cmVhbTo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
IGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC5nZXQoKTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0uaAkocmV2aXNpb24gOTgx
OTcpCisrKyBTb3VyY2UvV2ViQ29yZS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5oCSh3b3JraW5n
IGNvcHkpCkBAIC02MCw4ICs2MCw4IEBAIHB1YmxpYzoKIAogICAgIE1lZGlhU3RyZWFtRGVzY3Jp
cHRvciogZGVzY3JpcHRvcigpIGNvbnN0IHsgcmV0dXJuIG1fZGVzY3JpcHRvci5nZXQoKTsgfQog
Ci0gICAgLy8gRXZlbnRUYXJnZXQgaW1wbGVtZW50YXRpb24uCi0gICAgdmlydHVhbCBNZWRpYVN0
cmVhbSogdG9NZWRpYVN0cmVhbSgpOworICAgIC8vIEV2ZW50VGFyZ2V0CisgICAgdmlydHVhbCBj
b25zdCBBdG9taWNTdHJpbmcmIGludGVyZmFjZU5hbWUoKSBjb25zdDsKICAgICB2aXJ0dWFsIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdDsKIAog
ICAgIHVzaW5nIFJlZkNvdW50ZWQ8TWVkaWFTdHJlYW0+OjpyZWY7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9tZWRpYXN0cmVhbS9QZWVyQ29ubmVjdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvbWVkaWFzdHJlYW0vUGVlckNvbm5lY3Rpb24uY3BwCShyZXZpc2lvbiA5ODE5NykK
KysrIFNvdXJjZS9XZWJDb3JlL21lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9uLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjM2LDkgKzIzNiw5IEBAIHZvaWQgUGVlckNvbm5lY3Rpb246OnJlbW90ZVN0
cmVhbVJlbW92ZWQKICAgICBkaXNwYXRjaEV2ZW50KE1lZGlhU3RyZWFtRXZlbnQ6OmNyZWF0ZShl
dmVudE5hbWVzKCkucmVtb3Zlc3RyZWFtRXZlbnQsIGZhbHNlLCBmYWxzZSwgc3RyZWFtLnJlbGVh
c2UoKSkpOwogfQogCi1QZWVyQ29ubmVjdGlvbiogUGVlckNvbm5lY3Rpb246OnRvUGVlckNvbm5l
Y3Rpb24oKQorY29uc3QgQXRvbWljU3RyaW5nJiBQZWVyQ29ubmVjdGlvbjo6aW50ZXJmYWNlTmFt
ZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHRoaXM7CisgICAgcmV0dXJuIGV2ZW50TmFtZXMoKS5p
bnRlcmZhY2VGb3JQZWVyQ29ubmVjdGlvbjsKIH0KIAogU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
UGVlckNvbm5lY3Rpb246OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdApJbmRleDogU291
cmNlL1dlYkNvcmUvbWVkaWFzdHJlYW0vUGVlckNvbm5lY3Rpb24uaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9tZWRpYXN0cmVhbS9QZWVyQ29ubmVjdGlvbi5oCShyZXZpc2lvbiA5ODE5
NykKKysrIFNvdXJjZS9XZWJDb3JlL21lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9uLmgJKHdvcmtp
bmcgY29weSkKQEAgLTc5LDkgKzc5LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCByZW1v
dGVTdHJlYW1SZW1vdmVkKE1lZGlhU3RyZWFtRGVzY3JpcHRvciopOwogCiAgICAgLy8gRXZlbnRU
YXJnZXQKLSAgICB2aXJ0dWFsIFBlZXJDb25uZWN0aW9uKiB0b1BlZXJDb25uZWN0aW9uKCk7Ci0K
LSAgICAvLyBFdmVudFRhcmdldCBpbXBsZW1lbnRhdGlvbi4KKyAgICB2aXJ0dWFsIGNvbnN0IEF0
b21pY1N0cmluZyYgaW50ZXJmYWNlTmFtZSgpIGNvbnN0OwogICAgIHZpcnR1YWwgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0OwogCiAgICAgLy8g
QWN0aXZlRE9NT2JqZWN0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlm
aWNhdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucy9O
b3RpZmljYXRpb24uY3BwCShyZXZpc2lvbiA5ODE5NykKKysrIFNvdXJjZS9XZWJDb3JlL25vdGlm
aWNhdGlvbnMvTm90aWZpY2F0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA0LDYgKzEwNCwx
MSBAQCBQYXNzUmVmUHRyPE5vdGlmaWNhdGlvbj4gTm90aWZpY2F0aW9uOjpjCiAgICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBOb3RpZmljYXRpb24oY29udGVudHMsIGNvbnRleHQsIGVjLCBwcm92aWRl
cikpOwogfQogCitjb25zdCBBdG9taWNTdHJpbmcmIE5vdGlmaWNhdGlvbjo6aW50ZXJmYWNlTmFt
ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGV2ZW50TmFtZXMoKS5pbnRlcmZhY2VGb3JOb3RpZmlj
YXRpb247Cit9CisKIHZvaWQgTm90aWZpY2F0aW9uOjpzaG93KCkgCiB7CiAjaWYgUExBVEZPUk0o
UVQpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmgJ
KHJldmlzaW9uIDk4MTk3KQorKysgU291cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmlj
YXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtODMsMTMgKzgzLDEzIEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICAgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUihlcnJvcik7CiAg
ICAgICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIoY2xvc2UpOwogICAgICAgICBE
RUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKGNsaWNrKTsKLSAgICAKKwogICAgICAgICB1
c2luZyBSZWZDb3VudGVkPE5vdGlmaWNhdGlvbj46OnJlZjsKICAgICAgICAgdXNpbmcgUmVmQ291
bnRlZDxOb3RpZmljYXRpb24+OjpkZXJlZjsKLSAgICAKKwogICAgICAgICAvLyBFdmVudFRhcmdl
dCBpbnRlcmZhY2UKKyAgICAgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIGludGVyZmFj
ZU5hbWUoKSBjb25zdDsKICAgICAgICAgdmlydHVhbCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QgeyByZXR1cm4gQWN0aXZlRE9NT2JqZWN0Ojpz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCk7IH0KLSAgICAgICAgdmlydHVhbCBOb3RpZmljYXRpb24q
IHRvTm90aWZpY2F0aW9uKCkgeyByZXR1cm4gdGhpczsgfQogCiAgICAgICAgIC8vIEFjdGl2ZURP
TU9iamVjdCBpbnRlcmZhY2UKICAgICAgICAgdmlydHVhbCB2b2lkIGNvbnRleHREZXN0cm95ZWQo
KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAJKHJldmlzaW9uIDk4MTk3KQorKysg
U291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NDYs
MTEgKzQ0NiwyMSBAQCBET01XaW5kb3c6On5ET01XaW5kb3coKQogICAgIHJlbW92ZUFsbEJlZm9y
ZVVubG9hZEV2ZW50TGlzdGVuZXJzKHRoaXMpOwogfQogCitjb25zdCBBdG9taWNTdHJpbmcmIERP
TVdpbmRvdzo6aW50ZXJmYWNlTmFtZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGV2ZW50TmFtZXMo
KS5pbnRlcmZhY2VGb3JET01XaW5kb3c7Cit9CisKIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIERP
TVdpbmRvdzo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGRv
Y3VtZW50KCk7CiB9CiAKK0RPTVdpbmRvdyogRE9NV2luZG93Ojp0b0RPTVdpbmRvdygpCit7Cisg
ICAgcmV0dXJuIHRoaXM7Cit9CisKIFBhc3NSZWZQdHI8TWVkaWFRdWVyeUxpc3Q+IERPTVdpbmRv
dzo6bWF0Y2hNZWRpYShjb25zdCBTdHJpbmcmIG1lZGlhKQogewogICAgIHJldHVybiBkb2N1bWVu
dCgpID8gZG9jdW1lbnQoKS0+bWVkaWFRdWVyeU1hdGNoZXIoKS0+bWF0Y2hNZWRpYShtZWRpYSkg
OiAwOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5oCShyZXZpc2lvbiA5ODE5NykKKysrIFNv
dXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmgJKHdvcmtpbmcgY29weSkKQEAgLTg1LDkgKzg1
LDExIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8RE9N
V2luZG93PiBjcmVhdGUoRnJhbWUqIGZyYW1lKSB7IHJldHVybiBhZG9wdFJlZihuZXcgRE9NV2lu
ZG93KGZyYW1lKSk7IH0KICAgICAgICAgdmlydHVhbCB+RE9NV2luZG93KCk7CiAKLSAgICAgICAg
dmlydHVhbCBET01XaW5kb3cqIHRvRE9NV2luZG93KCkgeyByZXR1cm4gdGhpczsgfQorICAgICAg
ICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgaW50ZXJmYWNlTmFtZSgpIGNvbnN0OwogICAg
ICAgICB2aXJ0dWFsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKSBjb25zdDsKIAorICAgICAgICB2aXJ0dWFsIERPTVdpbmRvdyogdG9ET01XaW5kb3coKTsK
KwogICAgICAgICBGcmFtZSogZnJhbWUoKSBjb25zdCB7IHJldHVybiBtX2ZyYW1lOyB9CiAgICAg
ICAgIHZvaWQgZGlzY29ubmVjdEZyYW1lKCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
RXZlbnRTb3VyY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRT
b3VyY2UuY3BwCShyZXZpc2lvbiA5ODE5NykKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRT
b3VyY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODYsNiArMTg2LDExIEBAIHZvaWQgRXZlbnRT
b3VyY2U6OmNsb3NlKCkKICAgICBtX3N0YXRlID0gQ0xPU0VEOwogfQogCitjb25zdCBBdG9taWNT
dHJpbmcmIEV2ZW50U291cmNlOjppbnRlcmZhY2VOYW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
ZXZlbnROYW1lcygpLmludGVyZmFjZUZvckV2ZW50U291cmNlOworfQorCiBTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBFdmVudFNvdXJjZTo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0CiB7
CiAgICAgcmV0dXJuIEFjdGl2ZURPTU9iamVjdDo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudFNvdXJjZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRTb3VyY2UuaAkocmV2aXNpb24gOTgxOTcpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wYWdlL0V2ZW50U291cmNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTc1LDcgKzc1
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB1c2luZyBSZWZDb3VudGVkPEV2ZW50
U291cmNlPjo6cmVmOwogICAgICAgICB1c2luZyBSZWZDb3VudGVkPEV2ZW50U291cmNlPjo6ZGVy
ZWY7CiAKLSAgICAgICAgdmlydHVhbCBFdmVudFNvdXJjZSogdG9FdmVudFNvdXJjZSgpIHsgcmV0
dXJuIHRoaXM7IH0KKyAgICAgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIGludGVyZmFj
ZU5hbWUoKSBjb25zdDsKICAgICAgICAgdmlydHVhbCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3Q7CiAKICAgICAgICAgdmlydHVhbCB2b2lkIHN0
b3AoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJhc2UuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJhc2UuY3BwCShyZXZpc2lv
biA5ODE5NykKKysrIFNvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJhc2UuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yMTgsNiArMjE4LDExIEBAIHZvaWQgSURCRGF0YWJhc2U6OnN0b3AoKQog
ICAgIG1fc3RvcHBlZCA9IHRydWU7CiB9CiAKK2NvbnN0IEF0b21pY1N0cmluZyYgSURCRGF0YWJh
c2U6OmludGVyZmFjZU5hbWUoKSBjb25zdAoreworICAgIHJldHVybiBldmVudE5hbWVzKCkuaW50
ZXJmYWNlRm9ySURCRGF0YWJhc2U7Cit9CisKIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIElEQkRh
dGFiYXNlOjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QKIHsKICAgICByZXR1cm4gQWN0
aXZlRE9NT2JqZWN0OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9zdG9yYWdlL0lEQkRhdGFiYXNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
c3RvcmFnZS9JREJEYXRhYmFzZS5oCShyZXZpc2lvbiA5ODE5NykKKysrIFNvdXJjZS9XZWJDb3Jl
L3N0b3JhZ2UvSURCRGF0YWJhc2UuaAkod29ya2luZyBjb3B5KQpAQCAtODIsMTAgKzgyLDkgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzdG9wKCk7CiAKICAgICAvLyBFdmVudFRhcmdldAot
ICAgIHZpcnR1YWwgSURCRGF0YWJhc2UqIHRvSURCRGF0YWJhc2UoKSB7IHJldHVybiB0aGlzOyB9
CisgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIGludGVyZmFjZU5hbWUoKSBjb25zdDsK
ICAgICB2aXJ0dWFsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKSBjb25zdDsKIAotCiAgICAgdm9pZCBvcGVuKCk7CiAgICAgdm9pZCBlbnF1ZXVlRXZlbnQo
UGFzc1JlZlB0cjxFdmVudD4pOwogICAgIGJvb2wgZGlzcGF0Y2hFdmVudChQYXNzUmVmUHRyPEV2
ZW50PiBldmVudCwgRXhjZXB0aW9uQ29kZSYgZWMpIHsgcmV0dXJuIEV2ZW50VGFyZ2V0OjpkaXNw
YXRjaEV2ZW50KGV2ZW50LCBlYyk7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURC
UmVxdWVzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJSZXF1
ZXN0LmNwcAkocmV2aXNpb24gOTgxOTcpCisrKyBTb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQlJl
cXVlc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNjEsNiArMjYxLDExIEBAIHZvaWQgSURCUmVx
dWVzdDo6b25CbG9ja2VkKCkKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAorY29uc3Qg
QXRvbWljU3RyaW5nJiBJREJSZXF1ZXN0OjppbnRlcmZhY2VOYW1lKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gZXZlbnROYW1lcygpLmludGVyZmFjZUZvcklEQlJlcXVlc3Q7Cit9CisKIFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIElEQlJlcXVlc3Q6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25z
dAogewogICAgIHJldHVybiBBY3RpdmVET01PYmplY3Q6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCUmVxdWVzdC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCUmVxdWVzdC5oCShyZXZpc2lvbiA5ODE5NykK
KysrIFNvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCUmVxdWVzdC5oCSh3b3JraW5nIGNvcHkpCkBA
IC04Nyw3ICs4Nyw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgaGFzUGVuZGluZ0FjdGl2
aXR5KCkgY29uc3Q7CiAKICAgICAvLyBFdmVudFRhcmdldAotICAgIHZpcnR1YWwgSURCUmVxdWVz
dCogdG9JREJSZXF1ZXN0KCkgeyByZXR1cm4gdGhpczsgfQorICAgIHZpcnR1YWwgY29uc3QgQXRv
bWljU3RyaW5nJiBpbnRlcmZhY2VOYW1lKCkgY29uc3Q7CiAgICAgdmlydHVhbCBTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3Q7CiAgICAgdmlydHVh
bCBib29sIGRpc3BhdGNoRXZlbnQoUGFzc1JlZlB0cjxFdmVudD4pOwogICAgIGJvb2wgZGlzcGF0
Y2hFdmVudChQYXNzUmVmUHRyPEV2ZW50PiBldmVudCwgRXhjZXB0aW9uQ29kZSYgZWMpIHsgcmV0
dXJuIEV2ZW50VGFyZ2V0OjpkaXNwYXRjaEV2ZW50KGV2ZW50LCBlYyk7IH0KSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3N0b3JhZ2UvSURCVHJhbnNhY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3N0b3JhZ2UvSURCVHJhbnNhY3Rpb24uY3BwCShyZXZpc2lvbiA5ODE5NykKKysr
IFNvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCVHJhbnNhY3Rpb24uY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xMzgsNiArMTM4LDExIEBAIGJvb2wgSURCVHJhbnNhY3Rpb246Omhhc1BlbmRpbmdBY3Rp
dml0eSgKICAgICByZXR1cm4gIW1fZmluaXNoZWQgfHwgQWN0aXZlRE9NT2JqZWN0OjpoYXNQZW5k
aW5nQWN0aXZpdHkoKTsKIH0KIAorY29uc3QgQXRvbWljU3RyaW5nJiBJREJUcmFuc2FjdGlvbjo6
aW50ZXJmYWNlTmFtZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGV2ZW50TmFtZXMoKS5pbnRlcmZh
Y2VGb3JJREJUcmFuc2FjdGlvbjsKK30KKwogU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogSURCVHJh
bnNhY3Rpb246OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdAogewogICAgIHJldHVybiBB
Y3RpdmVET01PYmplY3Q6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3N0b3JhZ2UvSURCVHJhbnNhY3Rpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9zdG9yYWdlL0lEQlRyYW5zYWN0aW9uLmgJKHJldmlzaW9uIDk4MTk3KQorKysgU291cmNl
L1dlYkNvcmUvc3RvcmFnZS9JREJUcmFuc2FjdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC03NCw3
ICs3NCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgb25Db21wbGV0ZSgpOwogCiAgICAg
Ly8gRXZlbnRUYXJnZXQKLSAgICB2aXJ0dWFsIElEQlRyYW5zYWN0aW9uKiB0b0lEQlRyYW5zYWN0
aW9uKCkgeyByZXR1cm4gdGhpczsgfQorICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBp
bnRlcmZhY2VOYW1lKCkgY29uc3Q7CiAgICAgdmlydHVhbCBTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIGRpc3Bh
dGNoRXZlbnQoUGFzc1JlZlB0cjxFdmVudD4pOwogICAgIGJvb2wgZGlzcGF0Y2hFdmVudChQYXNz
UmVmUHRyPEV2ZW50PiBldmVudCwgRXhjZXB0aW9uQ29kZSYgZWMpIHsgcmV0dXJuIEV2ZW50VGFy
Z2V0OjpkaXNwYXRjaEV2ZW50KGV2ZW50LCBlYyk7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N0
b3JhZ2UvSURCVmVyc2lvbkNoYW5nZVJlcXVlc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3N0b3JhZ2UvSURCVmVyc2lvbkNoYW5nZVJlcXVlc3QuY3BwCShyZXZpc2lvbiA5ODE5
NykKKysrIFNvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCVmVyc2lvbkNoYW5nZVJlcXVlc3QuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC00OCw2ICs0OCwxMSBAQCBJREJWZXJzaW9uQ2hhbmdlUmVxdWVz
dDo6fklEQlZlcnNpb25DaGFuCiB7CiB9CiAKK2NvbnN0IEF0b21pY1N0cmluZyYgSURCVmVyc2lv
bkNoYW5nZVJlcXVlc3Q6OmludGVyZmFjZU5hbWUoKSBjb25zdAoreworICAgIHJldHVybiBldmVu
dE5hbWVzKCkuaW50ZXJmYWNlRm9ySURCVmVyc2lvbkNoYW5nZVJlcXVlc3Q7Cit9CisKIHZvaWQg
SURCVmVyc2lvbkNoYW5nZVJlcXVlc3Q6Om9uQmxvY2tlZCgpCiB7CiAgICAgQVNTRVJUKCFtX2Vy
cm9yQ29kZSAmJiBtX2Vycm9yTWVzc2FnZS5pc051bGwoKSAmJiAhbV9yZXN1bHQpOwpJbmRleDog
U291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJWZXJzaW9uQ2hhbmdlUmVxdWVzdC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCVmVyc2lvbkNoYW5nZVJlcXVlc3QuaAko
cmV2aXNpb24gOTgxOTcpCisrKyBTb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQlZlcnNpb25DaGFu
Z2VSZXF1ZXN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDYgKzM5LDkgQEAgcHVibGljOgogCiAg
ICAgdmlydHVhbCB2b2lkIG9uQmxvY2tlZCgpOwogCisgICAgLy8gRXZlbnRUYXJnZXQKKyAgICB2
aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgaW50ZXJmYWNlTmFtZSgpIGNvbnN0OworCiAgICAg
REVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUihibG9ja2VkKTsKIAogcHJpdmF0ZToKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50SW5zdGFuY2UuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50SW5zdGFuY2UuY3BwCShyZXZpc2lvbiA5
ODE5NykKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50SW5zdGFuY2UuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMjEsNiArMTIxLDExIEBAIHZvaWQgU1ZHRWxlbWVudEluc3RhbmNlOjpp
bnZhbGlkYXRlQWxsSW4KICAgICBlbGVtZW50LT5kb2N1bWVudCgpLT51cGRhdGVMYXlvdXRJZ25v
cmVQZW5kaW5nU3R5bGVzaGVldHMoKTsKIH0KIAorY29uc3QgQXRvbWljU3RyaW5nJiBTVkdFbGVt
ZW50SW5zdGFuY2U6OmludGVyZmFjZU5hbWUoKSBjb25zdAoreworICAgIHJldHVybiBldmVudE5h
bWVzKCkuaW50ZXJmYWNlRm9yU1ZHRWxlbWVudEluc3RhbmNlOworfQorCiBTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBTVkdFbGVtZW50SW5zdGFuY2U6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBj
b25zdAogewogICAgIHJldHVybiBtX2VsZW1lbnQtPmRvY3VtZW50KCk7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRWxlbWVudEluc3RhbmNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0VsZW1lbnRJbnN0YW5jZS5oCShyZXZpc2lvbiA5ODE5NykKKysrIFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50SW5zdGFuY2UuaAkod29ya2luZyBjb3B5KQpAQCAtNDcs
NiArNDcsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIH5TVkdFbGVtZW50SW5zdGFuY2UoKTsK
IAorICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBpbnRlcmZhY2VOYW1lKCkgY29uc3Q7
CiAgICAgdmlydHVhbCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250
ZXh0KCkgY29uc3Q7CiAKICAgICB2aXJ0dWFsIGJvb2wgYWRkRXZlbnRMaXN0ZW5lcihjb25zdCBB
dG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiwgYm9vbCB1
c2VDYXB0dXJlKTsKQEAgLTEzOSw3ICsxNDAsNiBAQCBwcml2YXRlOgogICAgIFNWR0VsZW1lbnRJ
bnN0YW5jZShTVkdVc2VFbGVtZW50KiwgU1ZHVXNlRWxlbWVudCosIFBhc3NSZWZQdHI8U1ZHRWxl
bWVudD4gb3JpZ2luYWxFbGVtZW50KTsKIAogICAgIHZpcnR1YWwgTm9kZSogdG9Ob2RlKCkgeyBy
ZXR1cm4gc2hhZG93VHJlZUVsZW1lbnQoKTsgfQotICAgIHZpcnR1YWwgU1ZHRWxlbWVudEluc3Rh
bmNlKiB0b1NWR0VsZW1lbnRJbnN0YW5jZSgpIHsgcmV0dXJuIHRoaXM7IH0KIAogICAgIHZvaWQg
YXBwZW5kQ2hpbGQoUGFzc1JlZlB0cjxTVkdFbGVtZW50SW5zdGFuY2U+IGNoaWxkKTsKICAgICB2
b2lkIHNldFNoYWRvd1RyZWVFbGVtZW50KFNWR0VsZW1lbnQqKTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcAkocmV2aXNpb24gOTgxOTcpCisrKyBTb3VyY2Uv
V2ViQ29yZS93ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MzEs
MTQgKzczMSwxNCBAQCB2b2lkIEF1ZGlvQ29udGV4dDo6aGFuZGxlRGlydHlBdWRpb05vZGVPCiAg
ICAgbV9kaXJ0eUF1ZGlvTm9kZU91dHB1dHMuY2xlYXIoKTsKIH0KIAotU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogQXVkaW9Db250ZXh0OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QKK2Nv
bnN0IEF0b21pY1N0cmluZyYgQXVkaW9Db250ZXh0OjppbnRlcmZhY2VOYW1lKCkgY29uc3QKIHsK
LSAgICByZXR1cm4gZG9jdW1lbnQoKTsKKyAgICByZXR1cm4gZXZlbnROYW1lcygpLmludGVyZmFj
ZUZvckF1ZGlvQ29udGV4dDsKIH0KIAotQXVkaW9Db250ZXh0KiBBdWRpb0NvbnRleHQ6OnRvQXVk
aW9Db250ZXh0KCkKK1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIEF1ZGlvQ29udGV4dDo6c2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHRoaXM7CisgICAgcmV0dXJu
IGRvY3VtZW50KCk7CiB9CiAKIHZvaWQgQXVkaW9Db250ZXh0OjpzdGFydFJlbmRlcmluZygpCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9BdWRpb0NvbnRleHQuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9BdWRpb0NvbnRleHQuaAkocmV2aXNpb24gOTgxOTcp
CisrKyBTb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9BdWRpb0NvbnRleHQuaAkod29ya2luZyBjb3B5
KQpAQCAtMjA4LDggKzIwOCw4IEBAIHB1YmxpYzoKICAgICB2b2lkIG1hcmtBdWRpb05vZGVPdXRw
dXREaXJ0eShBdWRpb05vZGVPdXRwdXQqKTsKIAogICAgIC8vIEV2ZW50VGFyZ2V0CisgICAgdmly
dHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIGludGVyZmFjZU5hbWUoKSBjb25zdDsKICAgICB2aXJ0
dWFsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25z
dDsKLSAgICB2aXJ0dWFsIEF1ZGlvQ29udGV4dCogdG9BdWRpb0NvbnRleHQoKTsKICAgICB2aXJ0
dWFsIEV2ZW50VGFyZ2V0RGF0YSogZXZlbnRUYXJnZXREYXRhKCkgeyByZXR1cm4gJm1fZXZlbnRU
YXJnZXREYXRhOyB9CiAgICAgdmlydHVhbCBFdmVudFRhcmdldERhdGEqIGVuc3VyZUV2ZW50VGFy
Z2V0RGF0YSgpIHsgcmV0dXJuICZtX2V2ZW50VGFyZ2V0RGF0YTsgfQogCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS93ZWJhdWRpby9KYXZhU2NyaXB0QXVkaW9Ob2RlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS93ZWJhdWRpby9KYXZhU2NyaXB0QXVkaW9Ob2RlLmNwcAkocmV2aXNpb24g
OTgxOTcpCisrKyBTb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9KYXZhU2NyaXB0QXVkaW9Ob2RlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTE5LDExICsxMTksNiBAQCB2b2lkIEphdmFTY3JpcHRBdWRp
b05vZGU6OnVuaW5pdGlhbGl6ZSgpCiAgICAgQXVkaW9Ob2RlOjp1bmluaXRpYWxpemUoKTsKIH0K
IAotSmF2YVNjcmlwdEF1ZGlvTm9kZSogSmF2YVNjcmlwdEF1ZGlvTm9kZTo6dG9KYXZhU2NyaXB0
QXVkaW9Ob2RlKCkKLXsKLSAgICByZXR1cm4gdGhpczsKLX0KLQogdm9pZCBKYXZhU2NyaXB0QXVk
aW9Ob2RlOjpwcm9jZXNzKHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpCiB7CiAgICAgLy8gRGlzY3Vz
c2lvbiBhYm91dCBpbnB1dHMgYW5kIG91dHB1dHM6CkBAIC0yNjIsNiArMjU3LDExIEBAIHZvaWQg
SmF2YVNjcmlwdEF1ZGlvTm9kZTo6cmVzZXQoKQogICAgIH0KIH0KIAorY29uc3QgQXRvbWljU3Ry
aW5nJiBKYXZhU2NyaXB0QXVkaW9Ob2RlOjppbnRlcmZhY2VOYW1lKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gZXZlbnROYW1lcygpLmludGVyZmFjZUZvckphdmFTY3JpcHRBdWRpb05vZGU7Cit9CisK
IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIEphdmFTY3JpcHRBdWRpb05vZGU6OnNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKSBjb25zdAogewogICAgIHJldHVybiBjb25zdF9jYXN0PEphdmFTY3JpcHRB
dWRpb05vZGUqPih0aGlzKS0+Y29udGV4dCgpLT5kb2N1bWVudCgpOwpJbmRleDogU291cmNlL1dl
YkNvcmUvd2ViYXVkaW8vSmF2YVNjcmlwdEF1ZGlvTm9kZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3dlYmF1ZGlvL0phdmFTY3JpcHRBdWRpb05vZGUuaAkocmV2aXNpb24gOTgxOTcp
CisrKyBTb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9KYXZhU2NyaXB0QXVkaW9Ob2RlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTYzLDggKzYzLDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCB1bmlu
aXRpYWxpemUoKTsKIAogICAgIC8vIEV2ZW50VGFyZ2V0CisgICAgdmlydHVhbCBjb25zdCBBdG9t
aWNTdHJpbmcmIGludGVyZmFjZU5hbWUoKSBjb25zdDsKICAgICB2aXJ0dWFsIFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdDsKLSAgICB2aXJ0dWFs
IEphdmFTY3JpcHRBdWRpb05vZGUqIHRvSmF2YVNjcmlwdEF1ZGlvTm9kZSgpOwogICAgIHZpcnR1
YWwgRXZlbnRUYXJnZXREYXRhKiBldmVudFRhcmdldERhdGEoKSB7IHJldHVybiAmbV9ldmVudFRh
cmdldERhdGE7IH0KICAgICB2aXJ0dWFsIEV2ZW50VGFyZ2V0RGF0YSogZW5zdXJlRXZlbnRUYXJn
ZXREYXRhKCkgIHsgcmV0dXJuICZtX2V2ZW50VGFyZ2V0RGF0YTsgfQogCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwCShyZXZpc2lvbiA5ODE5NykKKysrIFNvdXJj
ZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDA3
LDYgKzQwNywxMSBAQCB2b2lkIFdlYlNvY2tldDo6c2V0QmluYXJ5VHlwZShjb25zdCBTdHJpCiAg
ICAgcmV0dXJuOwogfQogCitjb25zdCBBdG9taWNTdHJpbmcmIFdlYlNvY2tldDo6aW50ZXJmYWNl
TmFtZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGV2ZW50TmFtZXMoKS5pbnRlcmZhY2VGb3JXZWJT
b2NrZXQ7Cit9CisKIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIFdlYlNvY2tldDo6c2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIEFjdGl2ZURPTU9iamVjdDo6c2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9X
ZWJTb2NrZXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNv
Y2tldC5oCShyZXZpc2lvbiA5ODE5NykKKysrIFNvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2Vi
U29ja2V0LmgJKHdvcmtpbmcgY29weSkKQEAgLTkwLDkgKzkwLDkgQEAgcHVibGljOgogICAgIERF
RklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIoY2xvc2UpOwogCiAgICAgLy8gRXZlbnRUYXJn
ZXQKLSAgICB2aXJ0dWFsIFdlYlNvY2tldCogdG9XZWJTb2NrZXQoKSB7IHJldHVybiB0aGlzOyB9
Ci0KKyAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgaW50ZXJmYWNlTmFtZSgpIGNvbnN0
OwogICAgIHZpcnR1YWwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpIGNvbnN0OworCiAgICAgdmlydHVhbCB2b2lkIGNvbnRleHREZXN0cm95ZWQoKTsKICAg
ICB2aXJ0dWFsIGJvb2wgY2FuU3VzcGVuZCgpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBzdXNw
ZW5kKFJlYXNvbkZvclN1c3BlbnNpb24pOwpJbmRleDogU291cmNlL1dlYkNvcmUvd29ya2Vycy9E
ZWRpY2F0ZWRXb3JrZXJDb250ZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS93
b3JrZXJzL0RlZGljYXRlZFdvcmtlckNvbnRleHQuY3BwCShyZXZpc2lvbiA5ODE5NykKKysrIFNv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvRGVkaWNhdGVkV29ya2VyQ29udGV4dC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTQ2LDYgKzQ2LDExIEBAIERlZGljYXRlZFdvcmtlckNvbnRleHQ6OkRlZGljYXRl
ZFdvcmtlckMKIHsKIH0KIAorY29uc3QgQXRvbWljU3RyaW5nJiBEZWRpY2F0ZWRXb3JrZXJDb250
ZXh0OjppbnRlcmZhY2VOYW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZXZlbnROYW1lcygpLmlu
dGVyZmFjZUZvckRlZGljYXRlZFdvcmtlckNvbnRleHQ7Cit9CisKIC8vIEZJWE1FOiByZW1vdmUg
dGhpcyB3aGVuIHdlIHVwZGF0ZSB0aGUgT2JqQyBiaW5kaW5ncyAoYnVnICMyODc3NCkuCiB2b2lk
IERlZGljYXRlZFdvcmtlckNvbnRleHQ6OnBvc3RNZXNzYWdlKFBhc3NSZWZQdHI8U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlPiBtZXNzYWdlLCBNZXNzYWdlUG9ydCogcG9ydCwgRXhjZXB0aW9uQ29kZSYg
ZWMpCiB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL0RlZGljYXRlZFdvcmtlckNvbnRl
eHQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL0RlZGljYXRlZFdvcmtl
ckNvbnRleHQuaAkocmV2aXNpb24gOTgxOTcpCisrKyBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL0Rl
ZGljYXRlZFdvcmtlckNvbnRleHQuaAkod29ya2luZyBjb3B5KQpAQCAtNTQsNyArNTQsOCBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBpbXBvcnRTY3JpcHRzKGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiB1cmxzLCBFeGNlcHRpb25Db2RlJik7CiAKICAgICAgICAgLy8g
RXZlbnRUYXJnZXQKLSAgICAgICAgdmlydHVhbCBEZWRpY2F0ZWRXb3JrZXJDb250ZXh0KiB0b0Rl
ZGljYXRlZFdvcmtlckNvbnRleHQoKSB7IHJldHVybiB0aGlzOyB9CisgICAgICAgIHZpcnR1YWwg
Y29uc3QgQXRvbWljU3RyaW5nJiBpbnRlcmZhY2VOYW1lKCkgY29uc3Q7CisKICAgICAgICAgdm9p
ZCBwb3N0TWVzc2FnZShQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4sIEV4Y2VwdGlv
bkNvZGUmKTsKICAgICAgICAgdm9pZCBwb3N0TWVzc2FnZShQYXNzUmVmUHRyPFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZT4sIGNvbnN0IE1lc3NhZ2VQb3J0QXJyYXkqLCBFeGNlcHRpb25Db2RlJik7CiAg
ICAgICAgIC8vIEZJWE1FOiByZW1vdmUgdGhpcyB3aGVuIHdlIHVwZGF0ZSB0aGUgT2JqQyBiaW5k
aW5ncyAoYnVnICMyODc3NCkuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL0RlZmF1bHRT
aGFyZWRXb3JrZXJSZXBvc2l0b3J5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS93
b3JrZXJzL0RlZmF1bHRTaGFyZWRXb3JrZXJSZXBvc2l0b3J5LmNwcAkocmV2aXNpb24gOTgxOTcp
CisrKyBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL0RlZmF1bHRTaGFyZWRXb3JrZXJSZXBvc2l0b3J5
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjU5LDcgKzI1OSw3IEBAIHByaXZhdGU6CiAgICAgICAg
IC8vIFNpbmNlIGNsb3NlKCkgc3RvcHMgdGhlIHRocmVhZCBldmVudCBsb29wLCB0aGlzIHNob3Vs
ZCBub3QgZXZlciBnZXQgY2FsbGVkIHdoaWxlIGNsb3NpbmcuCiAgICAgICAgIEFTU0VSVCghd29y
a2VyQ29udGV4dC0+aXNDbG9zaW5nKCkpOwogICAgICAgICBBU1NFUlQod29ya2VyQ29udGV4dC0+
aXNTaGFyZWRXb3JrZXJDb250ZXh0KCkpOwotICAgICAgICB3b3JrZXJDb250ZXh0LT50b1NoYXJl
ZFdvcmtlckNvbnRleHQoKS0+ZGlzcGF0Y2hFdmVudChjcmVhdGVDb25uZWN0RXZlbnQocG9ydCkp
OworICAgICAgICB3b3JrZXJDb250ZXh0LT5kaXNwYXRjaEV2ZW50KGNyZWF0ZUNvbm5lY3RFdmVu
dChwb3J0KSk7CiAgICAgfQogCiAgICAgT3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbD4gbV9jaGFu
bmVsOwpJbmRleDogU291cmNlL1dlYkNvcmUvd29ya2Vycy9TaGFyZWRXb3JrZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2hhcmVkV29ya2VyLmNwcAkocmV2aXNp
b24gOTgxOTcpCisrKyBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL1NoYXJlZFdvcmtlci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTczLDYgKzczLDExIEBAIFNoYXJlZFdvcmtlcjo6flNoYXJlZFdvcmtl
cigpCiB7CiB9CiAKK2NvbnN0IEF0b21pY1N0cmluZyYgU2hhcmVkV29ya2VyOjppbnRlcmZhY2VO
YW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZXZlbnROYW1lcygpLmludGVyZmFjZUZvclNoYXJl
ZFdvcmtlcjsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgIC8vIEVOQUJM
RShTSEFSRURfV09SS0VSUykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2hhcmVkV29y
a2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvd29ya2Vycy9TaGFyZWRXb3JrZXIu
aAkocmV2aXNpb24gOTgxOTcpCisrKyBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL1NoYXJlZFdvcmtl
ci5oCSh3b3JraW5nIGNvcHkpCkBAIC00NSw2ICs0NSw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogICAgICAgICBNZXNzYWdlUG9ydCogcG9ydCgpIGNvbnN0IHsgcmV0dXJuIG1fcG9ydC5nZXQo
KTsgfQogCisgICAgICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBpbnRlcmZhY2VOYW1l
KCkgY29uc3Q7CisKICAgICBwcml2YXRlOgogICAgICAgICBTaGFyZWRXb3JrZXIoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCopOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL1NoYXJlZFdv
cmtlckNvbnRleHQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2hh
cmVkV29ya2VyQ29udGV4dC5jcHAJKHJldmlzaW9uIDk4MTk3KQorKysgU291cmNlL1dlYkNvcmUv
d29ya2Vycy9TaGFyZWRXb3JrZXJDb250ZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTksNiAr
NTksMTEgQEAgU2hhcmVkV29ya2VyQ29udGV4dDo6flNoYXJlZFdvcmtlckNvbnRleAogewogfQog
Citjb25zdCBBdG9taWNTdHJpbmcmIFNoYXJlZFdvcmtlckNvbnRleHQ6OmludGVyZmFjZU5hbWUo
KSBjb25zdAoreworICAgIHJldHVybiBldmVudE5hbWVzKCkuaW50ZXJmYWNlRm9yU2hhcmVkV29y
a2VyQ29udGV4dDsKK30KKwogU2hhcmVkV29ya2VyVGhyZWFkKiBTaGFyZWRXb3JrZXJDb250ZXh0
Ojp0aHJlYWQoKQogewogICAgIHJldHVybiBzdGF0aWNfY2FzdDxTaGFyZWRXb3JrZXJUaHJlYWQq
PihCYXNlOjp0aHJlYWQoKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL1NoYXJlZFdv
cmtlckNvbnRleHQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL1NoYXJl
ZFdvcmtlckNvbnRleHQuaAkocmV2aXNpb24gOTgxOTcpCisrKyBTb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL1NoYXJlZFdvcmtlckNvbnRleHQuaAkod29ya2luZyBjb3B5KQpAQCAtNTIsNyArNTIsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc1NoYXJlZFdvcmtl
ckNvbnRleHQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAKICAgICAgICAgLy8gRXZlbnRUYXJn
ZXQKLSAgICAgICAgdmlydHVhbCBTaGFyZWRXb3JrZXJDb250ZXh0KiB0b1NoYXJlZFdvcmtlckNv
bnRleHQoKSB7IHJldHVybiB0aGlzOyB9CisgICAgICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3Ry
aW5nJiBpbnRlcmZhY2VOYW1lKCkgY29uc3Q7CiAKICAgICAgICAgLy8gU2V0dGVycy9HZXR0ZXJz
IGZvciBhdHRyaWJ1dGVzIGluIFNoYXJlZFdvcmtlckNvbnRleHQuaWRsCiAgICAgICAgIERFRklO
RV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIoY29ubmVjdCk7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL1dvcmtlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9Xb3JrZXIuY3BwCShyZXZpc2lvbiA5ODE5NykKKysrIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
V29ya2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODUsNiArODUsMTEgQEAgV29ya2VyOjp+V29y
a2VyKCkKICAgICBtX2NvbnRleHRQcm94eS0+d29ya2VyT2JqZWN0RGVzdHJveWVkKCk7CiB9CiAK
K2NvbnN0IEF0b21pY1N0cmluZyYgV29ya2VyOjppbnRlcmZhY2VOYW1lKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gZXZlbnROYW1lcygpLmludGVyZmFjZUZvcldvcmtlcjsKK30KKwogLy8gRklYTUU6
IHJlbW92ZSB0aGlzIHdoZW4gd2UgdXBkYXRlIHRoZSBPYmpDIGJpbmRpbmdzIChidWcgIzI4Nzc0
KS4KIHZvaWQgV29ya2VyOjpwb3N0TWVzc2FnZShQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZT4gbWVzc2FnZSwgTWVzc2FnZVBvcnQqIHBvcnQsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewpJ
bmRleDogU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXIuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlci5oCShyZXZpc2lvbiA5ODE5NykKKysrIFNvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvV29ya2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTU0LDcgKzU0LDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxXb3JrZXI+IGNy
ZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiB1cmwsIEV4Y2VwdGlv
bkNvZGUmKTsKICAgICAgICAgdmlydHVhbCB+V29ya2VyKCk7CiAKLSAgICAgICAgdmlydHVhbCBX
b3JrZXIqIHRvV29ya2VyKCkgeyByZXR1cm4gdGhpczsgfQorICAgICAgICB2aXJ0dWFsIGNvbnN0
IEF0b21pY1N0cmluZyYgaW50ZXJmYWNlTmFtZSgpIGNvbnN0OwogCiAgICAgICAgIHZvaWQgcG9z
dE1lc3NhZ2UoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1lc3NhZ2UsIEV4Y2Vw
dGlvbkNvZGUmKTsKICAgICAgICAgdm9pZCBwb3N0TWVzc2FnZShQYXNzUmVmUHRyPFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZT4gbWVzc2FnZSwgY29uc3QgTWVzc2FnZVBvcnRBcnJheSosIEV4Y2VwdGlv
bkNvZGUmKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAkocmV2aXNp
b24gOTgxOTcpCisrKyBTb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMTE4LDYgKzExMTgsMTEgQEAgdm9pZCBYTUxIdHRwUmVxdWVzdDo6Y29u
dGV4dERlc3Ryb3llZCgpCiAgICAgQWN0aXZlRE9NT2JqZWN0Ojpjb250ZXh0RGVzdHJveWVkKCk7
CiB9CiAKK2NvbnN0IEF0b21pY1N0cmluZyYgWE1MSHR0cFJlcXVlc3Q6OmludGVyZmFjZU5hbWUo
KSBjb25zdAoreworICAgIHJldHVybiBldmVudE5hbWVzKCkuaW50ZXJmYWNlRm9yWE1MSHR0cFJl
cXVlc3Q7Cit9CisKIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIFhNTEh0dHBSZXF1ZXN0OjpzY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QKIHsKICAgICByZXR1cm4gQWN0aXZlRE9NT2JqZWN0
OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS94bWwvWE1M
SHR0cFJlcXVlc3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJl
cXVlc3QuaAkocmV2aXNpb24gOTgxOTcpCisrKyBTb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJl
cXVlc3QuaAkod29ya2luZyBjb3B5KQpAQCAtNjksMTQgKzY5LDEzIEBAIHB1YmxpYzoKICAgICAg
ICAgUmVzcG9uc2VUeXBlQXJyYXlCdWZmZXIKICAgICB9OwogCi0gICAgdmlydHVhbCBYTUxIdHRw
UmVxdWVzdCogdG9YTUxIdHRwUmVxdWVzdCgpIHsgcmV0dXJuIHRoaXM7IH0KLQogICAgIHZpcnR1
YWwgdm9pZCBjb250ZXh0RGVzdHJveWVkKCk7CiAgICAgdmlydHVhbCBib29sIGNhblN1c3BlbmQo
KSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgc3VzcGVuZChSZWFzb25Gb3JTdXNwZW5zaW9uKTsK
ICAgICB2aXJ0dWFsIHZvaWQgcmVzdW1lKCk7CiAgICAgdmlydHVhbCB2b2lkIHN0b3AoKTsKIAor
ICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBpbnRlcmZhY2VOYW1lKCkgY29uc3Q7CiAg
ICAgdmlydHVhbCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0
KCkgY29uc3Q7CiAKICAgICBjb25zdCBLVVJMJiB1cmwoKSBjb25zdCB7IHJldHVybiBtX3VybDsg
fQpJbmRleDogU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0VXBsb2FkLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3RVcGxvYWQuY3BwCShy
ZXZpc2lvbiA5ODE5NykKKysrIFNvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdFVwbG9h
ZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQxLDYgKzQxLDExIEBAIFhNTEh0dHBSZXF1ZXN0VXBs
b2FkOjpYTUxIdHRwUmVxdWVzdFVwbG8KIHsKIH0KIAorY29uc3QgQXRvbWljU3RyaW5nJiBYTUxI
dHRwUmVxdWVzdFVwbG9hZDo6aW50ZXJmYWNlTmFtZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGV2
ZW50TmFtZXMoKS5pbnRlcmZhY2VGb3JYTUxIdHRwUmVxdWVzdFVwbG9hZDsKK30KKwogU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogWE1MSHR0cFJlcXVlc3RVcGxvYWQ6OnNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKSBjb25zdAogewogICAgIHJldHVybiBtX3htbEh0dHBSZXF1ZXN0LT5zY3JpcHRFeGVj
dXRpb25Db250ZXh0KCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3RV
cGxvYWQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3RV
cGxvYWQuaAkocmV2aXNpb24gOTgxOTcpCisrKyBTb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJl
cXVlc3RVcGxvYWQuaAkod29ya2luZyBjb3B5KQpAQCAtNTQsOCArNTQsNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAgICAgICAgIHZvaWQgZGVyZWYoKSB7IG1feG1sSHR0cFJlcXVlc3QtPmRlcmVm
KCk7IH0KICAgICAgICAgWE1MSHR0cFJlcXVlc3QqIHhtbEh0dHBSZXF1ZXN0KCkgY29uc3QgeyBy
ZXR1cm4gbV94bWxIdHRwUmVxdWVzdDsgfQogCi0gICAgICAgIHZpcnR1YWwgWE1MSHR0cFJlcXVl
c3RVcGxvYWQqIHRvWE1MSHR0cFJlcXVlc3RVcGxvYWQoKSB7IHJldHVybiB0aGlzOyB9Ci0KKyAg
ICAgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIGludGVyZmFjZU5hbWUoKSBjb25zdDsK
ICAgICAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
IGNvbnN0OwogCiAgICAgICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIoYWJvcnQp
OwpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHJldmlzaW9uIDk4MTk3KQorKysgU291
cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwx
NSBAQAorMjAxMS0xMC0yMSAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgorCisgICAg
ICAgIEV2ZW50VGFyZ2V0Lmggc2hvdWxkbid0IG5lZWQgdG8ga25vdyBhYm91dCBldmVyeSBmZWF0
dXJlIGFuZCBpZmRlZgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NzA2NTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBUaGlzIGNhc3QgaXNuJ3QgbmVlZGVkIGJlY2F1c2UgZGlzcGF0Y2hFdmVudCBpcyBhIHZp
cnR1YWwgZnVuY3Rpb24uCisKKyAgICAgICAgKiBzcmMvV2ViU2hhcmVkV29ya2VySW1wbC5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYlNoYXJlZFdvcmtlckltcGw6OmNvbm5lY3RUYXNrKToKKwog
MjAxMS0xMC0yMSAgTmF0IER1Y2EgIDxuZHVjYUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW2No
cm9taXVtXSBNYWtlIHNldFZpc2liaWxpdHkgZXh0ZW5zaW9uLSBhbmQgdGhyZWFkLWNvcnJlY3QK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNoYXJlZFdvcmtlckltcGwuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNoYXJlZFdvcmtl
ckltcGwuY3BwCShyZXZpc2lvbiA5ODE5NykKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYlNoYXJlZFdvcmtlckltcGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05Miw3ICs5Miw3IEBA
IHZvaWQgV2ViU2hhcmVkV29ya2VySW1wbDo6Y29ubmVjdFRhc2soU2MKICAgICBBU1NFUlQoY29u
dGV4dC0+aXNXb3JrZXJDb250ZXh0KCkpOwogICAgIFdvcmtlckNvbnRleHQqIHdvcmtlckNvbnRl
eHQgPSBzdGF0aWNfY2FzdDxXb3JrZXJDb250ZXh0Kj4oY29udGV4dCk7CiAgICAgQVNTRVJUKHdv
cmtlckNvbnRleHQtPmlzU2hhcmVkV29ya2VyQ29udGV4dCgpKTsKLSAgICB3b3JrZXJDb250ZXh0
LT50b1NoYXJlZFdvcmtlckNvbnRleHQoKS0+ZGlzcGF0Y2hFdmVudChjcmVhdGVDb25uZWN0RXZl
bnQocG9ydCkpOworICAgIHdvcmtlckNvbnRleHQtPmRpc3BhdGNoRXZlbnQoY3JlYXRlQ29ubmVj
dEV2ZW50KHBvcnQpKTsKIH0KIAogdm9pZCBXZWJTaGFyZWRXb3JrZXJJbXBsOjpzdGFydFdvcmtl
ckNvbnRleHQoY29uc3QgV2ViVVJMJiB1cmwsIGNvbnN0IFdlYlN0cmluZyYgbmFtZSwgY29uc3Qg
V2ViU3RyaW5nJiB1c2VyQWdlbnQsIGNvbnN0IFdlYlN0cmluZyYgc291cmNlQ29kZSwgbG9uZyBs
b25nKQpJbmRleDogU291cmNlL2NtYWtlL1dlYktpdE1hY3Jvcy5jbWFrZQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvY21ha2UvV2ViS2l0TWFjcm9zLmNtYWtlCShyZXZpc2lvbiA5ODE5NykKKysrIFNv
dXJjZS9jbWFrZS9XZWJLaXRNYWNyb3MuY21ha2UJKHdvcmtpbmcgY29weSkKQEAgLTM3LDEwICsz
NywxMCBAQCBNQUNSTyAoR0VORVJBVEVfRk9OVF9OQU1FUyBfaW5maWxlKQogRU5ETUFDUk8gKCkK
IAogCi1NQUNSTyAoR0VORVJBVEVfRVZFTlRfRkFDVE9SWSBfaW5maWxlKQorTUFDUk8gKEdFTkVS
QVRFX0VWRU5UX0ZBQ1RPUlkgX2luZmlsZSBfb3V0ZmlsZSkKICAgICBTRVQoTkFNRVNfR0VORVJB
VE9SICR7V0VCQ09SRV9ESVJ9L2RvbS9tYWtlX2V2ZW50X2ZhY3RvcnkucGwpCiAgICAgU0VUKF9h
cmd1bWVudHMgIC0tZXZlbnRzICR7X2luZmlsZX0pCi0gICAgU0VUKF9vdXRwdXRmaWxlcyAke0RF
UklWRURfU09VUkNFU19XRUJDT1JFX0RJUn0vRXZlbnRGYWN0b3J5LmNwcCkKKyAgICBTRVQoX291
dHB1dGZpbGVzICR7REVSSVZFRF9TT1VSQ0VTX1dFQkNPUkVfRElSfS8ke19vdXRmaWxlfSkKIAog
ICAgIEFERF9DVVNUT01fQ09NTUFORCgKICAgICAgICAgT1VUUFVUICAke19vdXRwdXRmaWxlc30K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>112245</attachid>
            <date>2011-10-24 14:18:58 -0700</date>
            <delta_ts>2011-10-25 11:15:48 -0700</delta_ts>
            <desc>for EWS</desc>
            <filename>bug-70659-20111024141918.patch</filename>
            <type>text/plain</type>
            <size>79157</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDk4MjgxKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTM0IEBACisyMDExLTEwLTI0ICBBZGFtIEJh
cnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CisKKyAgICAgICAgRXZlbnRUYXJnZXQuaCBzaG91bGRu
J3QgbmVlZCB0byBrbm93IGFib3V0IGV2ZXJ5IGZlYXR1cmUgYW5kIGlmZGVmCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MDY1OQorCisgICAgICAgIFJl
dmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgIFRoaXMgcGF0Y2ggZm9sbG93cyB0aGUg
YXBwcm9hY2ggb2YgRXZlbnQuaCBhbmQgaW50cm9kdWNlcyBhbgorICAgICAgICBpbnRlcmZhY2VO
YW1lIHZpcnR1YWwgZnVuY3Rpb24gdGhhdCByZXR1cm5zIHRoZSBuYW1lIG9mIHRoZSBET00KKyAg
ICAgICAgaW50ZXJmYWNlIGZvciB0aGUgY29uY3JldGUgdHlwZSBvZiB0aGUgb2JqZWN0LiAgVGhp
cyBmdW5jdGlvbiBsZXRzIHVzCisgICAgICAgIHJlbW92ZSBhIGxhcmdlIG51bWJlciBvZiBmYWtl
IGR5bmFtaWMgY2FzdHMuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBD
b2RlR2VuZXJhdG9ycy5wcmk6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAg
ICAgKiBHTlVtYWtlZmlsZS5hbToKKyAgICAgICAgKiBXZWJDb3JlLmd5cC9XZWJDb3JlLmd5cDoK
KyAgICAgICAgKiBXZWJDb3JlLmd5cC9zY3JpcHRzL2FjdGlvbl9tYWtlbmFtZXMucHk6CisgICAg
ICAgICAgICAtIFRlYWNoIGFjdGlvbl9tYWtlbmFtZXMgaG93IHRvIGhhbmRsZSB0aGUgbmV3ICJp
biIgZmlsZS4KKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS52Y3By
b2ovV2ViQ29yZS52Y3Byb2o6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRXZlbnRUYXJnZXQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6dG9KUyk6CisgICAgICAgICAgICAtIFVzZSB0aGUgbmV3IGF1dG9nZW5lcmF0
ZWQgbWFjcm8gdG8gcmVtb3ZlIGEgbGFyZ2UgYW1vdW50IG9mCisgICAgICAgICAgICAgIGZlYXR1
cmUtc3BlY2lmaWMgY29kZS4KKyAgICAgICAgKiBiaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250
cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclNjcmlwdENvbnRyb2xsZXI6Omlu
aXRTY3JpcHQpOgorICAgICAgICAqIGJpbmRpbmdzL29iamMvRE9NLm1tOgorICAgICAgICAoa2l0
KToKKyAgICAgICAgICAgIC0gVGhlIFNWR0VsZW1lbnRJbnN0YW5jZSBicmFuY2ggd2FzIG5ldmVy
IHRha2VuIHByZXZpb3VzbHkgYmVjYXVzZQorICAgICAgICAgICAgICBTVkdFbGVtZW50SW5zdGFu
Y2U6OnRvTm9kZSByZXR1cm5zIGEgbm9uLU5VTEwgdmFsdWUuIFRoaXMgY29kZQorICAgICAgICAg
ICAgICB3YXMgaW50cm9kdWNlZCBpbiBodHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC80
MjYxOCBhbmQKKyAgICAgICAgICAgICAgZG9lc24ndCBhcHBlYXIgdG8gaGF2ZSBldmVyIHdvcmtl
ZCBhcyB0aGUgYXV0aG9yIGludGVuZGVkLgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4RE9NV3Jh
cHBlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOERPTVdyYXBwZXI6OmNvbnZlcnRFdmVudFRh
cmdldFRvVjhPYmplY3QpOgorICAgICAgICAgICAgLSBVc2UgdGhlIG5ldyBhdXRvZ2VuZXJhdGVk
IG1hY3JvIHRvIHJlbW92ZSBhIGxhcmdlIGFtb3VudCBvZgorICAgICAgICAgICAgICBmZWF0dXJl
LXNwZWNpZmljIGNvZGUuCisgICAgICAgICogZG9tL0V2ZW50TmFtZXMuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RXZlbnROYW1lczo6RXZlbnROYW1lcyk6CisgICAgICAgICogZG9tL0V2ZW50TmFt
ZXMuaDoKKyAgICAgICAgKiBkb20vRXZlbnRUYXJnZXQuY3BwOgorICAgICAgICAqIGRvbS9FdmVu
dFRhcmdldC5oOgorICAgICAgICAqIGRvbS9FdmVudFRhcmdldEZhY3RvcnkuaW46IEFkZGVkLgor
ICAgICAgICAgICAgLSBBZGQgYSBuZXcgImluIiBmaWxlIHRoYXQgbGlzdHMgYWxsIHRoZSBFdmVu
dFRhcmdldHMuCisgICAgICAgICogZG9tL0xvY2FsTWVkaWFTdHJlYW0uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6TG9jYWxNZWRpYVN0cmVhbTo6aW50ZXJmYWNlTmFtZSk6CisgICAgICAgICogZG9t
L0xvY2FsTWVkaWFTdHJlYW0uaDoKKyAgICAgICAgKiBkb20vTWVkaWFTdHJlYW0uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW06OmludGVyZmFjZU5hbWUpOgorICAgICAgICAqIGRv
bS9NZWRpYVN0cmVhbS5oOgorICAgICAgICAqIGRvbS9NZXNzYWdlUG9ydC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpNZXNzYWdlUG9ydDo6aW50ZXJmYWNlTmFtZSk6CisgICAgICAgICogZG9tL01l
c3NhZ2VQb3J0Lmg6CisgICAgICAgICogZG9tL05vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Tm9kZTo6dG9Ob2RlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OmludGVyZmFjZU5hbWUpOgor
ICAgICAgICAqIGRvbS9Ob2RlLmg6CisgICAgICAgICogZG9tL21ha2VfZXZlbnRfZmFjdG9yeS5w
bDoKKyAgICAgICAgICAgIC0gR2VuZXJhbGl6ZSBtYWtlX2V2ZW50X2ZhY3RvcnkucGwgdG8gYmUg
YWJsZSB0byBnZW5lcmF0ZQorICAgICAgICAgICAgICBpbnRlcmZhY2VzIGZvciBkaWZmZXJlbnQg
bmFtZXNwYWNlcy4KKyAgICAgICAgKiBmaWxlYXBpL0ZpbGVSZWFkZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RmlsZVJlYWRlcjo6aW50ZXJmYWNlTmFtZSk6CisgICAgICAgICogZmlsZWFwaS9G
aWxlUmVhZGVyLmg6CisgICAgICAgICogZmlsZWFwaS9GaWxlV3JpdGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkZpbGVXcml0ZXI6OmludGVyZmFjZU5hbWUpOgorICAgICAgICAqIGZpbGVhcGkv
RmlsZVdyaXRlci5oOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9ET01BcHBsaWNhdGlvbkNh
Y2hlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTUFwcGxpY2F0aW9uQ2FjaGU6OmludGVyZmFj
ZU5hbWUpOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9ET01BcHBsaWNhdGlvbkNhY2hlLmg6
CisgICAgICAgICogbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Tm90aWZpY2F0aW9uOjppbnRlcmZhY2VOYW1lKToKKyAgICAgICAgKiBub3RpZmljYXRp
b25zL05vdGlmaWNhdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uOjpzY3Jp
cHRFeGVjdXRpb25Db250ZXh0KToKKyAgICAgICAgKiBwMnAvUGVlckNvbm5lY3Rpb24uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UGVlckNvbm5lY3Rpb246OmludGVyZmFjZU5hbWUpOgorICAgICAg
ICAqIHAycC9QZWVyQ29ubmVjdGlvbi5oOgorICAgICAgICAqIHBhZ2UvRE9NV2luZG93LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvdzo6aW50ZXJmYWNlTmFtZSk6CisgICAgICAgIChX
ZWJDb3JlOjpET01XaW5kb3c6OnRvRE9NV2luZG93KToKKyAgICAgICAgKiBwYWdlL0RPTVdpbmRv
dy5oOgorICAgICAgICAqIHBhZ2UvRXZlbnRTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RXZlbnRTb3VyY2U6OmludGVyZmFjZU5hbWUpOgorICAgICAgICAqIHBhZ2UvRXZlbnRTb3VyY2Uu
aDoKKyAgICAgICAgKiBzdG9yYWdlL0lEQkRhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OklEQkRhdGFiYXNlOjppbnRlcmZhY2VOYW1lKToKKyAgICAgICAgKiBzdG9yYWdlL0lEQkRhdGFi
YXNlLmg6CisgICAgICAgICogc3RvcmFnZS9JREJSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OklEQlJlcXVlc3Q6OmludGVyZmFjZU5hbWUpOgorICAgICAgICAqIHN0b3JhZ2UvSURCUmVx
dWVzdC5oOgorICAgICAgICAqIHN0b3JhZ2UvSURCVHJhbnNhY3Rpb24uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OmludGVyZmFjZU5hbWUpOgorICAgICAgICAqIHN0b3Jh
Z2UvSURCVHJhbnNhY3Rpb24uaDoKKyAgICAgICAgKiBzdG9yYWdlL0lEQlZlcnNpb25DaGFuZ2VS
ZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlZlcnNpb25DaGFuZ2VSZXF1ZXN0Ojpp
bnRlcmZhY2VOYW1lKToKKyAgICAgICAgKiBzdG9yYWdlL0lEQlZlcnNpb25DaGFuZ2VSZXF1ZXN0
Lmg6CisgICAgICAgICogc3ZnL1NWR0VsZW1lbnRJbnN0YW5jZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTVkdFbGVtZW50SW5zdGFuY2U6OmludGVyZmFjZU5hbWUpOgorICAgICAgICAqIHN2Zy9T
VkdFbGVtZW50SW5zdGFuY2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VsZW1lbnRJbnN0YW5j
ZTo6dG9Ob2RlKToKKyAgICAgICAgKiB3ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6QXVkaW9Db250ZXh0OjppbnRlcmZhY2VOYW1lKToKKyAgICAgICAgKFdlYkNv
cmU6OkF1ZGlvQ29udGV4dDo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCk6CisgICAgICAgICogd2Vi
YXVkaW8vQXVkaW9Db250ZXh0Lmg6CisgICAgICAgICogd2ViYXVkaW8vSmF2YVNjcmlwdEF1ZGlv
Tm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKYXZhU2NyaXB0QXVkaW9Ob2RlOjppbnRlcmZh
Y2VOYW1lKToKKyAgICAgICAgKiB3ZWJhdWRpby9KYXZhU2NyaXB0QXVkaW9Ob2RlLmg6CisgICAg
ICAgICogd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29j
a2V0OjppbnRlcmZhY2VOYW1lKToKKyAgICAgICAgKiB3ZWJzb2NrZXRzL1dlYlNvY2tldC5oOgor
ICAgICAgICAqIHdvcmtlcnMvRGVkaWNhdGVkV29ya2VyQ29udGV4dC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpEZWRpY2F0ZWRXb3JrZXJDb250ZXh0OjppbnRlcmZhY2VOYW1lKToKKyAgICAgICAg
KiB3b3JrZXJzL0RlZGljYXRlZFdvcmtlckNvbnRleHQuaDoKKyAgICAgICAgKiB3b3JrZXJzL0Rl
ZmF1bHRTaGFyZWRXb3JrZXJSZXBvc2l0b3J5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJl
ZFdvcmtlckNvbm5lY3RUYXNrOjpwZXJmb3JtVGFzayk6CisgICAgICAgICogd29ya2Vycy9TaGFy
ZWRXb3JrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkV29ya2VyOjppbnRlcmZhY2VO
YW1lKToKKyAgICAgICAgKiB3b3JrZXJzL1NoYXJlZFdvcmtlci5oOgorICAgICAgICAqIHdvcmtl
cnMvU2hhcmVkV29ya2VyQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRXb3Jr
ZXJDb250ZXh0OjppbnRlcmZhY2VOYW1lKToKKyAgICAgICAgKiB3b3JrZXJzL1NoYXJlZFdvcmtl
ckNvbnRleHQuaDoKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpXb3JrZXI6OmludGVyZmFjZU5hbWUpOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyLmg6
CisgICAgICAgICogeG1sL1hNTEh0dHBSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhN
TEh0dHBSZXF1ZXN0OjppbnRlcmZhY2VOYW1lKToKKyAgICAgICAgKiB4bWwvWE1MSHR0cFJlcXVl
c3QuaDoKKyAgICAgICAgKiB4bWwvWE1MSHR0cFJlcXVlc3RVcGxvYWQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6WE1MSHR0cFJlcXVlc3RVcGxvYWQ6OmludGVyZmFjZU5hbWUpOgorICAgICAgICAq
IHhtbC9YTUxIdHRwUmVxdWVzdFVwbG9hZC5oOgorCiAyMDExLTEwLTI0ICBNaWhuZWEgT3ZpZGVu
aWUgIDxtaWhuZWFAYWRvYmUuY29tPgogCiAgICAgICAgIFVzZSBTdHJpbmdCdWlsZGVyIGluIENT
U1J1bGVMaXN0OjpydWxlc1RleHQoKS9DU1NTZWxlY3Rvckxpc3Q6OnNlbGVjdG9yc1RleHQoKQpJ
bmRleDogU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDk4MjgxKQorKysgU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTIzMTIsMTAgKzIzMTIsMTMgQEAg
R0VORVJBVEVfRE9NX05BTUVTKEhUTUwgJHtXRUJDT1JFX0RJUn0vaAogTElTVChBUFBFTkQgV2Vi
Q29yZV9TT1VSQ0VTICR7REVSSVZFRF9TT1VSQ0VTX1dFQkNPUkVfRElSfS9IVE1MTmFtZXMuY3Bw
ICR7REVSSVZFRF9TT1VSQ0VTX1dFQkNPUkVfRElSfS9IVE1MRWxlbWVudEZhY3RvcnkuY3BwICR7
REVSSVZFRF9TT1VSQ0VTX1dFQkNPUkVfRElSfS9KU0hUTUxFbGVtZW50V3JhcHBlckZhY3Rvcnku
Y3BwKQogCiAKLUdFTkVSQVRFX0VWRU5UX0ZBQ1RPUlkoJHtXRUJDT1JFX0RJUn0vZG9tL0V2ZW50
RmFjdG9yeS5pbikKK0dFTkVSQVRFX0VWRU5UX0ZBQ1RPUlkoJHtXRUJDT1JFX0RJUn0vZG9tL0V2
ZW50RmFjdG9yeS5pbiBFdmVudEZhY3RvcnkuY3BwKQogTElTVChBUFBFTkQgV2ViQ29yZV9TT1VS
Q0VTICR7REVSSVZFRF9TT1VSQ0VTX1dFQkNPUkVfRElSfS9FdmVudEZhY3RvcnkuY3BwKQogCiAK
K0dFTkVSQVRFX0VWRU5UX0ZBQ1RPUlkoJHtXRUJDT1JFX0RJUn0vZG9tL0V2ZW50VGFyZ2V0RmFj
dG9yeS5pbiBFdmVudEludGVyZmFjZXMuaCkKKworCiBHRU5FUkFURV9GT05UX05BTUVTKCR7V0VC
Q09SRV9ESVJ9L2Nzcy9XZWJLaXRGb250RmFtaWx5TmFtZXMuaW4pCiBMSVNUKEFQUEVORCBXZWJD
b3JlX1NPVVJDRVMgJHtERVJJVkVEX1NPVVJDRVNfV0VCQ09SRV9ESVJ9L1dlYktpdEZvbnRGYW1p
bHlOYW1lcy5jcHApCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NvZGVHZW5lcmF0b3JzLnByaQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Db2RlR2VuZXJhdG9ycy5wcmkJKHJldmlzaW9u
IDk4MjgxKQorKysgU291cmNlL1dlYkNvcmUvQ29kZUdlbmVyYXRvcnMucHJpCSh3b3JraW5nIGNv
cHkpCkBAIC0zNCw2ICszNCw4IEBAIEhUTUxfRU5USVRJRVMgPSAkJFBXRC9odG1sL3BhcnNlci9I
VE1MRW4KIAogRVZFTlRfRkFDVE9SWSA9ICQkUFdEL2RvbS9FdmVudEZhY3RvcnkuaW4KIAorRVZF
TlRfVEFSR0VUX0ZBQ1RPUlkgPSAkJFBXRC9kb20vRXZlbnRUYXJnZXRGYWN0b3J5LmluCisKIENP
TE9SREFUQV9HUEVSRiA9ICQkUFdEL3BsYXRmb3JtL0NvbG9yRGF0YS5ncGVyZgogCiBXQUxET0NT
U1BST1BTID0gJCRQV0QvY3NzL0NTU1Byb3BlcnR5TmFtZXMuaW4KQEAgLTc2MCw2ICs3NjIsMTQg
QEAgZXZlbnRmYWN0b3J5LmNvbW1hbmRzID0gcGVybCAtSSQkUFdEL2JpbgogZXZlbnRmYWN0b3J5
LmRlcGVuZHMgPSAkJFBXRC9kb20vbWFrZV9ldmVudF9mYWN0b3J5LnBsICQkRVZFTlRfRkFDVE9S
WQogYWRkRXh0cmFDb21waWxlcihldmVudGZhY3RvcnkpCiAKKyMgR0VORVJBVE9SIDUtRjoKK2V2
ZW50dGFyZ2V0ZmFjdG9yeS5vdXRwdXQgPSAkJHtXQ19HRU5FUkFURURfU09VUkNFU19ESVJ9L0V2
ZW50VGFyZ2V0SW50ZXJmYWNlcy5oCitldmVudHRhcmdldGZhY3RvcnkuaW5wdXQgPSBFVkVOVF9U
QVJHRVRfRkFDVE9SWQorZXZlbnR0YXJnZXRmYWN0b3J5LndrU2NyaXB0ID0gJCRQV0QvZG9tL21h
a2VfZXZlbnRfZmFjdG9yeS5wbAorZXZlbnR0YXJnZXRmYWN0b3J5LmNvbW1hbmRzID0gcGVybCAt
SSQkUFdEL2JpbmRpbmdzL3NjcmlwdHMgJCRldmVudGZhY3Rvcnkud2tTY3JpcHQgLS1ldmVudHMg
JCRFVkVOVF9UQVJHRVRfRkFDVE9SWSAtLW91dHB1dERpciAkJFdDX0dFTkVSQVRFRF9TT1VSQ0VT
X0RJUgorZXZlbnR0YXJnZXRmYWN0b3J5LmRlcGVuZHMgPSAkJFBXRC9kb20vbWFrZV9ldmVudF9m
YWN0b3J5LnBsICQkRVZFTlRfVEFSR0VUX0ZBQ1RPUlkKK2FkZEV4dHJhQ29tcGlsZXIoZXZlbnR0
YXJnZXRmYWN0b3J5KQorCiAjIEdFTkVSQVRPUiA4LUE6CiBlbnRpdGllcy5vdXRwdXQgPSAkJHtX
Q19HRU5FUkFURURfU09VUkNFU19ESVJ9L0hUTUxFbnRpdHlUYWJsZS5jcHAKIGVudGl0aWVzLmlu
cHV0ID0gSFRNTF9FTlRJVElFUwpJbmRleDogU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMu
bWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCShy
ZXZpc2lvbiA5ODI4MSkKKysrIFNvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UJKHdv
cmtpbmcgY29weSkKQEAgLTU4Nyw2ICs1ODcsNyBAQCBhbGwgOiBcCiAgICAgQ1NTVmFsdWVLZXl3
b3Jkcy5oIFwKICAgICBDb2xvckRhdGEuY3BwIFwKICAgICBFdmVudEZhY3RvcnkuY3BwIFwKKyAg
ICBFdmVudFRhcmdldEludGVyZmFjZXMuaCBcCiAgICAgSFRNTEVsZW1lbnRGYWN0b3J5LmNwcCBc
CiAgICAgSFRNTEVudGl0eVRhYmxlLmNwcCBcCiAgICAgSFRNTE5hbWVzLmNwcCBcCkBAIC04NDcs
MTEgKzg0OCwxNCBAQCBYTGlua05hbWVzLmNwcCA6IGRvbS9tYWtlX25hbWVzLnBsIHN2Zy94CiAK
ICMgLS0tLS0tLS0KICAKLSMgUmVnaXN0ZXIgZXZlbnQgY29uc3RydWN0b3JzCisjIFJlZ2lzdGVy
IGV2ZW50IGNvbnN0cnVjdG9ycyBhbmQgdGFyZ2V0cwogCi1FdmVudEZhY3RvcnkuY3BwIDogZG9t
L21ha2VfZXZlbnRfZmFjdG9yeS5wbCBkb20vRXZlbnRGYWN0b3J5LmluCitFdmVudEZhY3Rvcnku
Y3BwIEV2ZW50SGVhZGVycy5oIEV2ZW50SW50ZXJmYWNlcy5oIDogZG9tL21ha2VfZXZlbnRfZmFj
dG9yeS5wbCBkb20vRXZlbnRGYWN0b3J5LmluCiAJcGVybCAtSSAkKFdlYkNvcmUpL2JpbmRpbmdz
L3NjcmlwdHMgJDwgLS1ldmVudHMgJChXZWJDb3JlKS9kb20vRXZlbnRGYWN0b3J5LmluCiAKK0V2
ZW50VGFyZ2V0SGVhZGVycy5oIEV2ZW50VGFyZ2V0SW50ZXJmYWNlcy5oIDogZG9tL21ha2VfZXZl
bnRfZmFjdG9yeS5wbCBkb20vRXZlbnRUYXJnZXRGYWN0b3J5LmluCisJcGVybCAtSSAkKFdlYkNv
cmUpL2JpbmRpbmdzL3NjcmlwdHMgJDwgLS1ldmVudHMgJChXZWJDb3JlKS9kb20vRXZlbnRUYXJn
ZXRGYWN0b3J5LmluCisKICMgLS0tLS0tLS0KICAKICMgTWF0aE1MIHRhZyBhbmQgYXR0cmlidXRl
IG5hbWVzLCBhbmQgZWxlbWVudCBmYWN0b3J5CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9HTlVtYWtl
ZmlsZS5hbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQkocmV2
aXNpb24gOTgyODEpCisrKyBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQkod29ya2luZyBj
b3B5KQpAQCAtNjg0LDYgKzY4NCw5IEBAIERlcml2ZWRTb3VyY2VzL1dlYkNvcmUvWE1MTmFtZXMu
Y3BwIERlcmkKIERlcml2ZWRTb3VyY2VzL1dlYkNvcmUvRXZlbnRGYWN0b3J5LmNwcCBEZXJpdmVk
U291cmNlcy9XZWJDb3JlL0V2ZW50SGVhZGVycy5oIERlcml2ZWRTb3VyY2VzL1dlYkNvcmUvRXZl
bnRJbnRlcmZhY2VzLmg6ICQoV2ViQ29yZSkvZG9tL21ha2VfZXZlbnRfZmFjdG9yeS5wbCAkKFdl
YkNvcmUpL2RvbS9FdmVudEZhY3RvcnkuaW4KIAkkKEFNX1ZfR0VOKSQoUEVSTCkgLUkkKFdlYkNv
cmUpL2JpbmRpbmdzL3NjcmlwdHMgJDwgLS1ldmVudHMgJChXZWJDb3JlKS9kb20vRXZlbnRGYWN0
b3J5LmluIC0tb3V0cHV0RGlyICIkKEdFTlNPVVJDRVNfV0VCQ09SRSkiCiAKK0Rlcml2ZWRTb3Vy
Y2VzL1dlYkNvcmUvRXZlbnRUYXJnZXRIZWFkZXJzLmggRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9F
dmVudFRhcmdldEludGVyZmFjZXMuaDogJChXZWJDb3JlKS9kb20vbWFrZV9ldmVudF9mYWN0b3J5
LnBsICQoV2ViQ29yZSkvZG9tL0V2ZW50VGFyZ2V0RmFjdG9yeS5pbgorCSQoQU1fVl9HRU4pJChQ
RVJMKSAtSSQoV2ViQ29yZSkvYmluZGluZ3Mvc2NyaXB0cyAkPCAtLWV2ZW50cyAkKFdlYkNvcmUp
L2RvbS9FdmVudFRhcmdldEZhY3RvcnkuaW4gLS1vdXRwdXREaXIgIiQoR0VOU09VUkNFU19XRUJD
T1JFKSIKKwogIyBBbGwgV2ViIEluc3BlY3RvciBnZW5lcmF0ZWQgZmlsZXMgYXJlIGNyZWF0ZWQg
d2l0aCB0aGlzIG9uZSBjYWxsIHRvIENvZGVHZW5lcmF0b3JJbnNwZWN0b3IucHkKIERlcml2ZWRT
b3VyY2VzL1dlYkNvcmUvSW5zcGVjdG9yUHJvdG9jb2xWZXJzaW9uLmggOiAkKFdlYkNvcmUpL2lu
c3BlY3Rvci9JbnNwZWN0b3IuanNvbiAkKFdlYkNvcmUpL2luc3BlY3Rvci9nZW5lcmF0ZS1pbnNw
ZWN0b3ItcHJvdG9jb2wtdmVyc2lvbgogCSQoUFlUSE9OKSAkKFdlYkNvcmUpL2luc3BlY3Rvci9n
ZW5lcmF0ZS1pbnNwZWN0b3ItcHJvdG9jb2wtdmVyc2lvbiAtbyAkKEdFTlNPVVJDRVNfV0VCQ09S
RSkvSW5zcGVjdG9yUHJvdG9jb2xWZXJzaW9uLmggJChXZWJDb3JlKS9pbnNwZWN0b3IvSW5zcGVj
dG9yLmpzb24KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQkocmV2aXNpb24gOTgy
ODEpCisrKyBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCSh3b3JraW5nIGNvcHkp
CkBAIC0xMiw2ICsxMiw4IEBAIHdlYmNvcmVfYnVpbHRfc291cmNlcyArPSBcCiAJRGVyaXZlZFNv
dXJjZXMvV2ViQ29yZS9FdmVudEZhY3RvcnkuY3BwIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3Jl
L0V2ZW50SGVhZGVycy5oIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0V2ZW50SW50ZXJmYWNl
cy5oIFwKKwlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0V2ZW50VGFyZ2V0SGVhZGVycy5oIFwKKwlE
ZXJpdmVkU291cmNlcy9XZWJDb3JlL0V2ZW50VGFyZ2V0SW50ZXJmYWNlcy5oIFwKIAlEZXJpdmVk
U291cmNlcy9XZWJDb3JlL0hUTUxFbGVtZW50RmFjdG9yeS5jcHAgXAogCURlcml2ZWRTb3VyY2Vz
L1dlYkNvcmUvSFRNTEVsZW1lbnRGYWN0b3J5LmggXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUv
SFRNTEVudGl0eVRhYmxlLmNwcCBcCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCShyZXZpc2lvbiA5ODI4
MSkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQkod29ya2luZyBjb3B5KQpAQCAtNzA0
Nyw2ICs3MDQ3LDEwIEBACiAgICAgICAgICAgICAnPChQUk9EVUNUX0RJUikvRGVyaXZlZFNvdXJj
ZXMvV2ViQ29yZS9EZWJ1Z2dlclNjcmlwdFNvdXJjZS5oJywKICAgICAgICAgICAgICc8KFBST0RV
Q1RfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0RvY1R5cGVTdHJpbmdzLmNwcCcsCiAgICAg
ICAgICAgICAnPChQUk9EVUNUX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9FdmVudEZhY3Rv
cnkuY3BwJywKKyAgICAgICAgICAgICc8KFBST0RVQ1RfRElSKS9EZXJpdmVkU291cmNlcy9XZWJD
b3JlL0V2ZW50SGVhZGVycy5oJywKKyAgICAgICAgICAgICc8KFBST0RVQ1RfRElSKS9EZXJpdmVk
U291cmNlcy9XZWJDb3JlL0V2ZW50SW50ZXJmYWNlcy5oJywKKyAgICAgICAgICAgICc8KFBST0RV
Q1RfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0V2ZW50VGFyZ2V0SGVhZGVycy5oJywKKyAg
ICAgICAgICAgICc8KFBST0RVQ1RfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0V2ZW50VGFy
Z2V0SW50ZXJmYWNlcy5oJywKICAgICAgICAgICAgICc8KFBST0RVQ1RfRElSKS9EZXJpdmVkU291
cmNlcy9XZWJDb3JlL0hUTUxFbGVtZW50RmFjdG9yeS5jcHAnLAogICAgICAgICAgICAgJzwoUFJP
RFVDVF9ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSFRNTEVsZW1lbnRGYWN0b3J5LmgnLAog
ICAgICAgICAgICAgJzwoUFJPRFVDVF9ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSFRNTEVu
dGl0eVRhYmxlLmNwcCcsCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cC9XZWJDb3Jl
Lmd5cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cC9XZWJDb3JlLmd5
cAkocmV2aXNpb24gOTgyODEpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cC9XZWJDb3Jl
Lmd5cAkod29ya2luZyBjb3B5KQpAQCAtNjc4LDYgKzY3OCwyNCBAQAogICAgICAgICAgIF0sCiAg
ICAgICAgIH0sCiAgICAgICAgIHsKKyAgICAgICAgICAnYWN0aW9uX25hbWUnOiAnRXZlbnRUYXJn
ZXRGYWN0b3J5JywKKyAgICAgICAgICAnaW5wdXRzJzogWworICAgICAgICAgICAgJy4uL2RvbS9t
YWtlX2V2ZW50X2ZhY3RvcnkucGwnLAorICAgICAgICAgICAgJy4uL2RvbS9FdmVudFRhcmdldEZh
Y3RvcnkuaW4nLAorICAgICAgICAgIF0sCisgICAgICAgICAgJ291dHB1dHMnOiBbCisgICAgICAg
ICAgICAnPChTSEFSRURfSU5URVJNRURJQVRFX0RJUikvd2Via2l0L0V2ZW50VGFyZ2V0SGVhZGVy
cy5oJywKKyAgICAgICAgICAgICc8KFNIQVJFRF9JTlRFUk1FRElBVEVfRElSKS93ZWJraXQvRXZl
bnRUYXJnZXRJbnRlcmZhY2VzLmgnLAorICAgICAgICAgIF0sCisgICAgICAgICAgJ2FjdGlvbic6
IFsKKyAgICAgICAgICAgICdweXRob24nLAorICAgICAgICAgICAgJ3NjcmlwdHMvYWN0aW9uX21h
a2VuYW1lcy5weScsCisgICAgICAgICAgICAnPEAoX291dHB1dHMpJywKKyAgICAgICAgICAgICct
LScsCisgICAgICAgICAgICAnPEAoX2lucHV0cyknLAorICAgICAgICAgIF0sCisgICAgICAgIH0s
CisgICAgICAgIHsKICAgICAgICAgICAnYWN0aW9uX25hbWUnOiAnTWF0aE1MTmFtZXMnLAogICAg
ICAgICAgICdpbnB1dHMnOiBbCiAgICAgICAgICAgICAnLi4vZG9tL21ha2VfbmFtZXMucGwnLApA
QCAtOTk0LDYgKzEwMTIsMTAgQEAKICAgICAgICAgJzwoU0hBUkVEX0lOVEVSTUVESUFURV9ESVIp
L3dlYmtpdC9IVE1MRWxlbWVudEZhY3RvcnkuY3BwJywKICAgICAgICAgJzwoU0hBUkVEX0lOVEVS
TUVESUFURV9ESVIpL3dlYmtpdC9IVE1MTmFtZXMuY3BwJywKICAgICAgICAgJzwoU0hBUkVEX0lO
VEVSTUVESUFURV9ESVIpL3dlYmtpdC9FdmVudEZhY3RvcnkuY3BwJywKKyAgICAgICAgJzwoU0hB
UkVEX0lOVEVSTUVESUFURV9ESVIpL3dlYmtpdC9FdmVudEhlYWRlcnMuaCcsCisgICAgICAgICc8
KFNIQVJFRF9JTlRFUk1FRElBVEVfRElSKS93ZWJraXQvRXZlbnRJbnRlcmZhY2VzLmgnLAorICAg
ICAgICAnPChTSEFSRURfSU5URVJNRURJQVRFX0RJUikvd2Via2l0L0V2ZW50VGFyZ2V0SGVhZGVy
cy5oJywKKyAgICAgICAgJzwoU0hBUkVEX0lOVEVSTUVESUFURV9ESVIpL3dlYmtpdC9FdmVudFRh
cmdldEludGVyZmFjZXMuaCcsCiAgICAgICAgICc8KFNIQVJFRF9JTlRFUk1FRElBVEVfRElSKS93
ZWJraXQvVXNlckFnZW50U3R5bGVTaGVldHNEYXRhLmNwcCcsCiAgICAgICAgICc8KFNIQVJFRF9J
TlRFUk1FRElBVEVfRElSKS93ZWJraXQvVjhIVE1MRWxlbWVudFdyYXBwZXJGYWN0b3J5LmNwcCcs
CiAgICAgICAgICc8KFNIQVJFRF9JTlRFUk1FRElBVEVfRElSKS93ZWJraXQvWExpbmtOYW1lcy5j
cHAnLApJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXAvc2NyaXB0cy9hY3Rpb25fbWFr
ZW5hbWVzLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwL3Njcmlw
dHMvYWN0aW9uX21ha2VuYW1lcy5weQkocmV2aXNpb24gOTgyODEpCisrKyBTb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLmd5cC9zY3JpcHRzL2FjdGlvbl9tYWtlbmFtZXMucHkJKHdvcmtpbmcgY29weSkK
QEAgLTEyOSw3ICsxMjksNyBAQCBkZWYgbWFpbihhcmdzKToKICAgICAgICAgICAgICBvciBpbnB1
dEJhc2VuYW1lLmVuZHN3aXRoKCdhdHRycy5pbicpOgogICAgICAgICAgICAgYXNzZXJ0IGF0dHJJ
bnB1dCA9PSBOb25lCiAgICAgICAgICAgICBhdHRySW5wdXQgPSBpbnB1dEFic1Bvc2l4Ci0gICAg
ICAgIGVsaWYgaW5wdXRCYXNlbmFtZS5lbmRzd2l0aCgnRXZlbnRGYWN0b3J5LmluJyk6CisgICAg
ICAgIGVsaWYgaW5wdXRCYXNlbmFtZS5lbmRzd2l0aCgnRXZlbnRGYWN0b3J5LmluJykgb3IgaW5w
dXRCYXNlbmFtZS5lbmRzd2l0aCgnRXZlbnRUYXJnZXRGYWN0b3J5LmluJyk6CiAgICAgICAgICAg
ICBldmVudHNJbnB1dCA9IGlucHV0QWJzUG9zaXgKICAgICAgICAgZWxpZiBpbnB1dEJhc2VuYW1l
LmVuZHN3aXRoKCdOYW1lcy5pbicpOgogICAgICAgICAgICAgb3B0aW9ucy5hcHBlbmQoaW5wdXRB
YnNQb3NpeCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNw
cm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUu
dmNwcm9qCShyZXZpc2lvbiA5ODI4MSkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9q
L1dlYkNvcmUudmNwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC01NTQsNiArNTU0LDE0IEBACiAJCQkJ
PgogCQkJPC9GaWxlPgogCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9IiQoQ29uZmlndXJhdGlv
bkJ1aWxkRGlyKVxvYmpcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcRXZlbnRUYXJnZXRI
ZWFkZXJzLmgiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9
IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmpcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJj
ZXNcRXZlbnRUYXJnZXRJbnRlcmZhY2VzLmgiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUK
IAkJCQlSZWxhdGl2ZVBhdGg9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmpcJChQcm9qZWN0
TmFtZSlcRGVyaXZlZFNvdXJjZXNcSFRNTEVsZW1lbnRGYWN0b3J5LmgiCiAJCQkJPgogCQkJPC9G
aWxlPgpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagkocmV2aXNpb24gOTgyODEpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTMyNzAsNiArMzI3MCw4
IEBACiAJCTk3OEFENjc1MTQxMzBBOEQwMEM3Q0FFMyAvKiBIVE1MU3BhbkVsZW1lbnQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3OEFENjcyMTQxMzBB
OEQwMEM3Q0FFMyAvKiBIVE1MU3BhbkVsZW1lbnQuaCAqLzsgfTsKIAkJOTc5RjQzRDMxMDc1RTQ0
QTAwMDBGODNCIC8qIE5hdmlnYXRpb25TY2hlZHVsZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTc5RjQzRDExMDc1RTQ0QTAwMDBGODNCIC8qIE5h
dmlnYXRpb25TY2hlZHVsZXIuY3BwICovOyB9OwogCQk5NzlGNDNENDEwNzVFNDRBMDAwMEY4M0Ig
LyogTmF2aWdhdGlvblNjaGVkdWxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gOTc5RjQzRDIxMDc1RTQ0QTAwMDBGODNCIC8qIE5hdmlnYXRpb25TY2hl
ZHVsZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owor
CQk5N0FBM0NBNTE0NTIzN0NDMDAzRTFEQTYgLyogRXZlbnRUYXJnZXRIZWFkZXJzLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5N0FBM0NBMzE0NTIzN0ND
MDAzRTFEQTYgLyogRXZlbnRUYXJnZXRIZWFkZXJzLmggKi87IH07CisJCTk3QUEzQ0E2MTQ1MjM3
Q0MwMDNFMURBNiAvKiBFdmVudFRhcmdldEludGVyZmFjZXMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3QUEzQ0E0MTQ1MjM3Q0MwMDNFMURBNiAvKiBF
dmVudFRhcmdldEludGVyZmFjZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQk5N0IxRjAyRTEzQjAyNUNBMDBGNTEwM0YgLyogU2hhcmVkQnVmZmVy
Q2h1bmtSZWFkZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMzc1NjlFMDAxM0FGMTcyQzAwQ0RCQThFIC8qIFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVy
LmNwcCAqLzsgfTsKIAkJOTdCMUYwMkYxM0IwMjVEMjAwRjUxMDNGIC8qIFNoYXJlZEJ1ZmZlckNo
dW5rUmVhZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAzNzU2OUUwMjEzQUYxNzJDMDBDREJBOEUgLyogU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIuaCAq
LzsgfTsKIAkJOTdCQzg0ODMxMjM2RkQ5MzAwMEM2MTYxIC8qIFRleHREb2N1bWVudFBhcnNlci5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5N0JDODQ4
MTEyMzZGRDkzMDAwQzYxNjEgLyogVGV4dERvY3VtZW50UGFyc2VyLmNwcCAqLzsgfTsKQEAgLTEw
NDAxLDYgKzEwNDAzLDggQEAKIAkJOTc4QUQ2NzMxNDEzMEE4RDAwQzdDQUUzIC8qIEhUTUxTcGFu
RWxlbWVudC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gSFRNTFNwYW5FbGVtZW50LmlkbDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTc5RjQzRDExMDc1RTQ0QTAwMDBGODNCIC8q
IE5hdmlnYXRpb25TY2hlZHVsZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gTmF2aWdhdGlvblNjaGVkdWxlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTk3OUY0M0QyMTA3NUU0NEEwMDAwRjgzQiAvKiBOYXZpZ2F0aW9uU2NoZWR1bGVyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5hdmlnYXRpb25TY2hlZHVsZXIuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTdBQTNDQTMxNDUyMzdDQzAwM0UxREE2IC8qIEV2
ZW50VGFyZ2V0SGVhZGVycy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBFdmVu
dFRhcmdldEhlYWRlcnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTdBQTNDQTQx
NDUyMzdDQzAwM0UxREE2IC8qIEV2ZW50VGFyZ2V0SW50ZXJmYWNlcy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBFdmVudFRhcmdldEludGVyZmFjZXMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJOTdCQzg0ODExMjM2RkQ5MzAwMEM2MTYxIC8qIFRleHREb2N1bWVu
dFBhcnNlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBUZXh0RG9j
dW1lbnRQYXJzZXIuY3BwOyBwYXRoID0gcGFyc2VyL1RleHREb2N1bWVudFBhcnNlci5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk3QkM4NDgyMTIzNkZEOTMwMDBDNjE2MSAvKiBU
ZXh0RG9jdW1lbnRQYXJzZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gVGV4
dERvY3VtZW50UGFyc2VyLmg7IHBhdGggPSBwYXJzZXIvVGV4dERvY3VtZW50UGFyc2VyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk3QkM4NDlBMTIzNzBBNEIwMDBDNjE2MSAvKiBI
VE1MSW5wdXRTdHJlYW0uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gSFRNTElu
cHV0U3RyZWFtLmg7IHBhdGggPSBwYXJzZXIvSFRNTElucHV0U3RyZWFtLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC0xNTE0Miw2ICsxNTE0Niw4IEBACiAJCQkJOTc2NjUwNEUxNDRG
QkZGRTAwRjZCQjUxIC8qIEV2ZW50RmFjdG9yeS5jcHAgKi8sCiAJCQkJOTcwQjcyQTUxNDUwMDhF
QjAwRjAwQTM3IC8qIEV2ZW50SGVhZGVycy5oICovLAogCQkJCTk3MEI3Mjg5MTQ0RkZBQzYwMEYw
MEEzNyAvKiBFdmVudEludGVyZmFjZXMuaCAqLywKKwkJCQk5N0FBM0NBMzE0NTIzN0NDMDAzRTFE
QTYgLyogRXZlbnRUYXJnZXRIZWFkZXJzLmggKi8sCisJCQkJOTdBQTNDQTQxNDUyMzdDQzAwM0Ux
REE2IC8qIEV2ZW50VGFyZ2V0SW50ZXJmYWNlcy5oICovLAogCQkJCUExN0M4MTIwMEYyQTVDRjcw
MDVEQUFFQiAvKiBIVE1MRWxlbWVudEZhY3RvcnkuY3BwICovLAogCQkJCUExN0M4MTIxMEYyQTVD
RjcwMDVEQUFFQiAvKiBIVE1MRWxlbWVudEZhY3RvcnkuaCAqLywKIAkJCQlBOEJDMDQ5MTEyMTRG
Njk2MDBCNUYxMjIgLyogSFRNTEVudGl0eVRhYmxlLmNwcCAqLywKQEAgLTI0NDc0LDYgKzI0NDgw
LDggQEAKIAkJCQlBMEVFMERGODE0NEY4MjU1MDBGODBCMEQgLyogV2ViR0xEZWJ1Z1NoYWRlcnMu
aCBpbiBIZWFkZXJzICovLAogCQkJCTk3MEI3MjhBMTQ0RkZBQzYwMEYwMEEzNyAvKiBFdmVudElu
dGVyZmFjZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTk3MEI3MkE2MTQ1MDA4RUIwMEYwMEEzNyAv
KiBFdmVudEhlYWRlcnMuaCBpbiBIZWFkZXJzICovLAorCQkJCTk3QUEzQ0E1MTQ1MjM3Q0MwMDNF
MURBNiAvKiBFdmVudFRhcmdldEhlYWRlcnMuaCBpbiBIZWFkZXJzICovLAorCQkJCTk3QUEzQ0E2
MTQ1MjM3Q0MwMDNFMURBNiAvKiBFdmVudFRhcmdldEludGVyZmFjZXMuaCBpbiBIZWFkZXJzICov
LAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9
OwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudFRhcmdldC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudFRhcmdldC5jcHAJ
KHJldmlzaW9uIDk4MjgxKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudFRh
cmdldC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4LDYgKzI4LDggQEAKIAogI2luY2x1ZGUgIkRP
TVdpbmRvdy5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiRXZlbnRUYXJnZXRI
ZWFkZXJzLmgiCisjaW5jbHVkZSAiRXZlbnRUYXJnZXRJbnRlcmZhY2VzLmgiCiAjaW5jbHVkZSAi
SlNET01XaW5kb3cuaCIKICNpbmNsdWRlICJKU0RPTVdpbmRvd1NoZWxsLmgiCiAjaW5jbHVkZSAi
SlNFdmVudExpc3RlbmVyLmgiCkBAIC0xMDUsOTQgKzEwNywyOCBAQCB1c2luZyBuYW1lc3BhY2Ug
SlNDOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKKyNkZWZpbmUgVFJZX1RPX1dSQVBfV0lUSF9J
TlRFUkZBQ0UoaW50ZXJmYWNlTmFtZSkgXAorICAgIGlmIChldmVudE5hbWVzKCkuaW50ZXJmYWNl
Rm9yIyNpbnRlcmZhY2VOYW1lID09IGRlc2lyZWRJbnRlcmZhY2UpIFwKKyAgICAgICAgcmV0dXJu
IHRvSlMoZXhlYywgZ2xvYmFsT2JqZWN0LCBzdGF0aWNfY2FzdDxpbnRlcmZhY2VOYW1lKj4odGFy
Z2V0KSk7CisKIEpTVmFsdWUgdG9KUyhFeGVjU3RhdGUqIGV4ZWMsIEpTRE9NR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEV2ZW50VGFyZ2V0KiB0YXJnZXQpCiB7CiAgICAgaWYgKCF0YXJnZXQp
CiAgICAgICAgIHJldHVybiBqc051bGwoKTsKIAotICAgIGlmIChFdmVudFNvdXJjZSogZXZlbnRT
b3VyY2UgPSB0YXJnZXQtPnRvRXZlbnRTb3VyY2UoKSkKLSAgICAgICAgcmV0dXJuIHRvSlMoZXhl
YywgZ2xvYmFsT2JqZWN0LCBldmVudFNvdXJjZSk7Ci0KLSNpZiBFTkFCTEUoU1ZHKQotICAgIC8v
IFNWR0VsZW1lbnRJbnN0YW5jZSBzdXBwb3J0cyBib3RoIHRvU1ZHRWxlbWVudEluc3RhbmNlIGFu
ZCB0b05vZGUgc2luY2Ugc28gbXVjaCBtb3VzZSBoYW5kbGluZyBjb2RlIGRlcGVuZHMgb24gdG9O
b2RlIHJldHVybmluZyBhIHZhbGlkIG5vZGUuCi0gICAgaWYgKFNWR0VsZW1lbnRJbnN0YW5jZSog
aW5zdGFuY2UgPSB0YXJnZXQtPnRvU1ZHRWxlbWVudEluc3RhbmNlKCkpCi0gICAgICAgIHJldHVy
biB0b0pTKGV4ZWMsIGdsb2JhbE9iamVjdCwgaW5zdGFuY2UpOwotI2VuZGlmCi0gICAgCi0gICAg
aWYgKE5vZGUqIG5vZGUgPSB0YXJnZXQtPnRvTm9kZSgpKQotICAgICAgICByZXR1cm4gdG9KUyhl
eGVjLCBnbG9iYWxPYmplY3QsIG5vZGUpOwotCi0gICAgaWYgKERPTVdpbmRvdyogZG9tV2luZG93
ID0gdGFyZ2V0LT50b0RPTVdpbmRvdygpKQotICAgICAgICByZXR1cm4gdG9KUyhleGVjLCBnbG9i
YWxPYmplY3QsIGRvbVdpbmRvdyk7Ci0KLSAgICBpZiAoWE1MSHR0cFJlcXVlc3QqIHhociA9IHRh
cmdldC0+dG9YTUxIdHRwUmVxdWVzdCgpKQotICAgICAgICByZXR1cm4gdG9KUyhleGVjLCBnbG9i
YWxPYmplY3QsIHhocik7Ci0KLSAgICBpZiAoWE1MSHR0cFJlcXVlc3RVcGxvYWQqIHVwbG9hZCA9
IHRhcmdldC0+dG9YTUxIdHRwUmVxdWVzdFVwbG9hZCgpKQotICAgICAgICByZXR1cm4gdG9KUyhl
eGVjLCBnbG9iYWxPYmplY3QsIHVwbG9hZCk7Ci0KLSAgICBpZiAoRE9NQXBwbGljYXRpb25DYWNo
ZSogY2FjaGUgPSB0YXJnZXQtPnRvRE9NQXBwbGljYXRpb25DYWNoZSgpKQotICAgICAgICByZXR1
cm4gdG9KUyhleGVjLCBnbG9iYWxPYmplY3QsIGNhY2hlKTsKLQotICAgIGlmIChNZXNzYWdlUG9y
dCogbWVzc2FnZVBvcnQgPSB0YXJnZXQtPnRvTWVzc2FnZVBvcnQoKSkKLSAgICAgICAgcmV0dXJu
IHRvSlMoZXhlYywgZ2xvYmFsT2JqZWN0LCBtZXNzYWdlUG9ydCk7CisgICAgQXRvbWljU3RyaW5n
IGRlc2lyZWRJbnRlcmZhY2UgPSB0YXJnZXQtPmludGVyZmFjZU5hbWUoKTsKIAorICAgIC8vIEZJ
WE1FOiBXaHkgY2FuJ3Qgd2UgdXNlIHRvSlMgZm9yIHRoZXNlIGNhc2VzPwogI2lmIEVOQUJMRShX
T1JLRVJTKQotICAgIGlmIChXb3JrZXIqIHdvcmtlciA9IHRhcmdldC0+dG9Xb3JrZXIoKSkKLSAg
ICAgICAgcmV0dXJuIHRvSlMoZXhlYywgZ2xvYmFsT2JqZWN0LCB3b3JrZXIpOwotCi0gICAgaWYg
KERlZGljYXRlZFdvcmtlckNvbnRleHQqIHdvcmtlckNvbnRleHQgPSB0YXJnZXQtPnRvRGVkaWNh
dGVkV29ya2VyQ29udGV4dCgpKQotICAgICAgICByZXR1cm4gdG9KU0RPTUdsb2JhbE9iamVjdCh3
b3JrZXJDb250ZXh0LCBleGVjKTsKKyAgICBpZiAoZXZlbnROYW1lcygpLmludGVyZmFjZUZvckRl
ZGljYXRlZFdvcmtlckNvbnRleHQgPT0gZGVzaXJlZEludGVyZmFjZSkKKyAgICAgICAgcmV0dXJu
IHRvSlNET01HbG9iYWxPYmplY3Qoc3RhdGljX2Nhc3Q8RGVkaWNhdGVkV29ya2VyQ29udGV4dCo+
KHRhcmdldCksIGV4ZWMpOwogI2VuZGlmCi0KICNpZiBFTkFCTEUoU0hBUkVEX1dPUktFUlMpCi0g
ICAgaWYgKFNoYXJlZFdvcmtlciogc2hhcmVkV29ya2VyID0gdGFyZ2V0LT50b1NoYXJlZFdvcmtl
cigpKQotICAgICAgICByZXR1cm4gdG9KUyhleGVjLCBnbG9iYWxPYmplY3QsIHNoYXJlZFdvcmtl
cik7Ci0KLSAgICBpZiAoU2hhcmVkV29ya2VyQ29udGV4dCogd29ya2VyQ29udGV4dCA9IHRhcmdl
dC0+dG9TaGFyZWRXb3JrZXJDb250ZXh0KCkpCi0gICAgICAgIHJldHVybiB0b0pTRE9NR2xvYmFs
T2JqZWN0KHdvcmtlckNvbnRleHQsIGV4ZWMpOwotI2VuZGlmCi0KLSNpZiBFTkFCTEUoTk9USUZJ
Q0FUSU9OUykKLSAgICBpZiAoTm90aWZpY2F0aW9uKiBub3RpZmljYXRpb24gPSB0YXJnZXQtPnRv
Tm90aWZpY2F0aW9uKCkpCi0gICAgICAgIHJldHVybiB0b0pTKGV4ZWMsIGdsb2JhbE9iamVjdCwg
bm90aWZpY2F0aW9uKTsKLSNlbmRpZgotCi0jaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCi0g
ICAgaWYgKElEQkRhdGFiYXNlKiBpZGJEYXRhYmFzZSA9IHRhcmdldC0+dG9JREJEYXRhYmFzZSgp
KQotICAgICAgICByZXR1cm4gdG9KUyhleGVjLCBnbG9iYWxPYmplY3QsIGlkYkRhdGFiYXNlKTsK
LQotICAgIGlmIChJREJSZXF1ZXN0KiBpZGJSZXF1ZXN0ID0gdGFyZ2V0LT50b0lEQlJlcXVlc3Qo
KSkKLSAgICAgICAgcmV0dXJuIHRvSlMoZXhlYywgZ2xvYmFsT2JqZWN0LCBpZGJSZXF1ZXN0KTsK
LQotICAgIGlmIChJREJUcmFuc2FjdGlvbiogaWRiVHJhbnNhY3Rpb24gPSB0YXJnZXQtPnRvSURC
VHJhbnNhY3Rpb24oKSkKLSAgICAgICAgcmV0dXJuIHRvSlMoZXhlYywgZ2xvYmFsT2JqZWN0LCBp
ZGJUcmFuc2FjdGlvbik7Ci0jZW5kaWYKLQotI2lmIEVOQUJMRShXRUJfQVVESU8pCi0gICAgaWYg
KEphdmFTY3JpcHRBdWRpb05vZGUqIGpzQXVkaW9Ob2RlID0gdGFyZ2V0LT50b0phdmFTY3JpcHRB
dWRpb05vZGUoKSkKLSAgICAgICAgcmV0dXJuIHRvSlMoZXhlYywgZ2xvYmFsT2JqZWN0LCBqc0F1
ZGlvTm9kZSk7Ci0gICAgaWYgKEF1ZGlvQ29udGV4dCogYXVkaW9Db250ZXh0ID0gdGFyZ2V0LT50
b0F1ZGlvQ29udGV4dCgpKQotICAgICAgICByZXR1cm4gdG9KUyhleGVjLCBnbG9iYWxPYmplY3Qs
IGF1ZGlvQ29udGV4dCk7Ci0jZW5kaWYKLQotI2lmIEVOQUJMRShXRUJfU09DS0VUUykKLSAgICBp
ZiAoV2ViU29ja2V0KiB3ZWJTb2NrZXQgPSB0YXJnZXQtPnRvV2ViU29ja2V0KCkpCi0gICAgICAg
IHJldHVybiB0b0pTKGV4ZWMsIGdsb2JhbE9iamVjdCwgd2ViU29ja2V0KTsKLSNlbmRpZgotCi0j
aWYgRU5BQkxFKEJMT0IpCi0gICAgaWYgKEZpbGVSZWFkZXIqIGZpbGVSZWFkZXIgPSB0YXJnZXQt
PnRvRmlsZVJlYWRlcigpKQotICAgICAgICByZXR1cm4gdG9KUyhleGVjLCBnbG9iYWxPYmplY3Qs
IGZpbGVSZWFkZXIpOworICAgIGlmIChldmVudE5hbWVzKCkuaW50ZXJmYWNlRm9yU2hhcmVkV29y
a2VyQ29udGV4dCA9PSBkZXNpcmVkSW50ZXJmYWNlKQorICAgICAgICByZXR1cm4gdG9KU0RPTUds
b2JhbE9iamVjdChzdGF0aWNfY2FzdDxTaGFyZWRXb3JrZXJDb250ZXh0Kj4odGFyZ2V0KSwgZXhl
Yyk7CiAjZW5kaWYKIAotI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCi0gICAgaWYgKExvY2FsTWVk
aWFTdHJlYW0qIHN0cmVhbSA9IHRhcmdldC0+dG9Mb2NhbE1lZGlhU3RyZWFtKCkpCi0gICAgICAg
IHJldHVybiB0b0pTKGV4ZWMsIGdsb2JhbE9iamVjdCwgc3RyZWFtKTsKLQotICAgIGlmIChNZWRp
YVN0cmVhbSogc3RyZWFtID0gdGFyZ2V0LT50b01lZGlhU3RyZWFtKCkpCi0gICAgICAgIHJldHVy
biB0b0pTKGV4ZWMsIGdsb2JhbE9iamVjdCwgc3RyZWFtKTsKLSNlbmRpZgorICAgIERPTV9FVkVO
VF9UQVJHRVRfSU5URVJGQUNFU19GT1JfRUFDSChUUllfVE9fV1JBUF9XSVRIX0lOVEVSRkFDRSkK
IAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBqc051bGwoKTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRyb2xsZXIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRy
b2xsZXIuY3BwCShyZXZpc2lvbiA5ODI4MSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1dvcmtlclNjcmlwdENvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04Niw3ICs4Niw3
IEBAIHZvaWQgV29ya2VyU2NyaXB0Q29udHJvbGxlcjo6aW5pdFNjcmlwdCgKICAgICAgICAgU3Ry
b25nPEpTRGVkaWNhdGVkV29ya2VyQ29udGV4dFByb3RvdHlwZT4gZGVkaWNhdGVkQ29udGV4dFBy
b3RvdHlwZSgqbV9nbG9iYWxEYXRhLCBKU0RlZGljYXRlZFdvcmtlckNvbnRleHRQcm90b3R5cGU6
OmNyZWF0ZSgqbV9nbG9iYWxEYXRhLCAwLCBkZWRpY2F0ZWRDb250ZXh0UHJvdG90eXBlU3RydWN0
dXJlKSk7CiAgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gSlNEZWRpY2F0ZWRXb3JrZXJD
b250ZXh0OjpjcmVhdGVTdHJ1Y3R1cmUoKm1fZ2xvYmFsRGF0YSwgMCwgZGVkaWNhdGVkQ29udGV4
dFByb3RvdHlwZS5nZXQoKSk7CiAKLSAgICAgICAgbV93b3JrZXJDb250ZXh0V3JhcHBlci5zZXQo
Km1fZ2xvYmFsRGF0YSwgSlNEZWRpY2F0ZWRXb3JrZXJDb250ZXh0OjpjcmVhdGUoKm1fZ2xvYmFs
RGF0YSwgc3RydWN0dXJlLCBtX3dvcmtlckNvbnRleHQtPnRvRGVkaWNhdGVkV29ya2VyQ29udGV4
dCgpKSk7CisgICAgICAgIG1fd29ya2VyQ29udGV4dFdyYXBwZXIuc2V0KCptX2dsb2JhbERhdGEs
IEpTRGVkaWNhdGVkV29ya2VyQ29udGV4dDo6Y3JlYXRlKCptX2dsb2JhbERhdGEsIHN0cnVjdHVy
ZSwgc3RhdGljX2Nhc3Q8RGVkaWNhdGVkV29ya2VyQ29udGV4dCo+KG1fd29ya2VyQ29udGV4dCkp
KTsKICAgICAgICAgd29ya2VyQ29udGV4dFByb3RvdHlwZVN0cnVjdHVyZS0+c2V0R2xvYmFsT2Jq
ZWN0KCptX2dsb2JhbERhdGEsIG1fd29ya2VyQ29udGV4dFdyYXBwZXIuZ2V0KCkpOwogICAgICAg
ICBkZWRpY2F0ZWRDb250ZXh0UHJvdG90eXBlU3RydWN0dXJlLT5zZXRHbG9iYWxPYmplY3QoKm1f
Z2xvYmFsRGF0YSwgbV93b3JrZXJDb250ZXh0V3JhcHBlci5nZXQoKSk7CiAgICAgICAgIEFTU0VS
VChzdHJ1Y3R1cmUtPmdsb2JhbE9iamVjdCgpID09IG1fd29ya2VyQ29udGV4dFdyYXBwZXIpOwpA
QCAtMTAwLDcgKzEwMCw3IEBAIHZvaWQgV29ya2VyU2NyaXB0Q29udHJvbGxlcjo6aW5pdFNjcmlw
dCgKICAgICAgICAgU3Ryb25nPEpTU2hhcmVkV29ya2VyQ29udGV4dFByb3RvdHlwZT4gc2hhcmVk
Q29udGV4dFByb3RvdHlwZSgqbV9nbG9iYWxEYXRhLCBKU1NoYXJlZFdvcmtlckNvbnRleHRQcm90
b3R5cGU6OmNyZWF0ZSgqbV9nbG9iYWxEYXRhLCAwLCBzaGFyZWRDb250ZXh0UHJvdG90eXBlU3Ry
dWN0dXJlKSk7CiAgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gSlNTaGFyZWRXb3JrZXJD
b250ZXh0OjpjcmVhdGVTdHJ1Y3R1cmUoKm1fZ2xvYmFsRGF0YSwgMCwgc2hhcmVkQ29udGV4dFBy
b3RvdHlwZS5nZXQoKSk7CiAKLSAgICAgICAgbV93b3JrZXJDb250ZXh0V3JhcHBlci5zZXQoKm1f
Z2xvYmFsRGF0YSwgSlNTaGFyZWRXb3JrZXJDb250ZXh0OjpjcmVhdGUoKm1fZ2xvYmFsRGF0YSwg
c3RydWN0dXJlLCBtX3dvcmtlckNvbnRleHQtPnRvU2hhcmVkV29ya2VyQ29udGV4dCgpKSk7Cisg
ICAgICAgIG1fd29ya2VyQ29udGV4dFdyYXBwZXIuc2V0KCptX2dsb2JhbERhdGEsIEpTU2hhcmVk
V29ya2VyQ29udGV4dDo6Y3JlYXRlKCptX2dsb2JhbERhdGEsIHN0cnVjdHVyZSwgc3RhdGljX2Nh
c3Q8U2hhcmVkV29ya2VyQ29udGV4dCo+KG1fd29ya2VyQ29udGV4dCkpKTsKICAgICAgICAgd29y
a2VyQ29udGV4dFByb3RvdHlwZS0+c3RydWN0dXJlKCktPnNldEdsb2JhbE9iamVjdCgqbV9nbG9i
YWxEYXRhLCBtX3dvcmtlckNvbnRleHRXcmFwcGVyLmdldCgpKTsKICAgICAgICAgc2hhcmVkQ29u
dGV4dFByb3RvdHlwZS0+c3RydWN0dXJlKCktPnNldEdsb2JhbE9iamVjdCgqbV9nbG9iYWxEYXRh
LCBtX3dvcmtlckNvbnRleHRXcmFwcGVyLmdldCgpKTsKICNlbmRpZgpJbmRleDogU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvb2JqYy9ET00ubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvb2JqYy9ET00ubW0JKHJldmlzaW9uIDk4MjgxKQorKysgU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvb2JqYy9ET00ubW0JKHdvcmtpbmcgY29weSkKQEAgLTM0MywxMSArMzQzLDYgQEAg
aWQgPERPTUV2ZW50VGFyZ2V0PiBraXQoV2ViQ29yZTo6RXZlbnRUYQogICAgIGlmIChXZWJDb3Jl
OjpOb2RlKiBub2RlID0gZXZlbnRUYXJnZXQtPnRvTm9kZSgpKQogICAgICAgICByZXR1cm4ga2l0
KG5vZGUpOwogCi0jaWYgRU5BQkxFKFNWR19ET01fT0JKQ19CSU5ESU5HUykKLSAgICBpZiAoV2Vi
Q29yZTo6U1ZHRWxlbWVudEluc3RhbmNlKiBzdmdFbGVtZW50SW5zdGFuY2UgPSBldmVudFRhcmdl
dC0+dG9TVkdFbGVtZW50SW5zdGFuY2UoKSkKLSAgICAgICAgcmV0dXJuIGtpdChzdmdFbGVtZW50
SW5zdGFuY2UpOwotI2VuZGlmCi0KICAgICAvLyBXZSBkb24ndCBoYXZlIGFuIE9iakMgYmluZGlu
ZyBmb3IgWE1MSHR0cFJlcXVlc3QuCiAKICAgICByZXR1cm4gbmlsOwpJbmRleDogU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvVjhET01XcmFwcGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdyYXBwZXIuY3BwCShyZXZpc2lvbiA5ODI4MSkKKysr
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTM1LDYgKzM1LDggQEAKICNpbmNsdWRlICJDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlv
bi5oIgogI2luY2x1ZGUgIkRPTURhdGFTdG9yZS5oIgogI2luY2x1ZGUgIkRvY3VtZW50TG9hZGVy
LmgiCisjaW5jbHVkZSAiRXZlbnRUYXJnZXRIZWFkZXJzLmgiCisjaW5jbHVkZSAiRXZlbnRUYXJn
ZXRJbnRlcmZhY2VzLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXJDbGllbnQuaCIKICNpbmNsdWRl
ICJOb3RpZmljYXRpb24uaCIKICNpbmNsdWRlICJWOEFic3RyYWN0RXZlbnRMaXN0ZW5lci5oIgpA
QCAtMzMxLDExNCArMzMzLDIwIEBAIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gVjhET01XcmFwcGVy
OjpnZXQKICAgICByZXR1cm4gZG9tTm9kZU1hcC5nZXQobm9kZSk7CiB9CiAKKyNkZWZpbmUgVFJZ
X1RPX1dSQVBfV0lUSF9JTlRFUkZBQ0UoaW50ZXJmYWNlTmFtZSkgXAorICAgIGlmIChldmVudE5h
bWVzKCkuaW50ZXJmYWNlRm9yIyNpbnRlcmZhY2VOYW1lID09IGRlc2lyZWRJbnRlcmZhY2UpIFwK
KyAgICAgICAgcmV0dXJuIHRvVjgoc3RhdGljX2Nhc3Q8aW50ZXJmYWNlTmFtZSo+KHRhcmdldCkp
OworCiAvLyBBIEpTIG9iamVjdCBvZiB0eXBlIEV2ZW50VGFyZ2V0IGlzIGxpbWl0ZWQgdG8gYSBz
bWFsbCBudW1iZXIgb2YgcG9zc2libGUgY2xhc3Nlcy4KLS8vIENoZWNrIEV2ZW50VGFyZ2V0Lmgg
Zm9yIG5ldyB0eXBlIGNvbnZlcnNpb24gbWV0aG9kcwogdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4
RE9NV3JhcHBlcjo6Y29udmVydEV2ZW50VGFyZ2V0VG9WOE9iamVjdChFdmVudFRhcmdldCogdGFy
Z2V0KQogewogICAgIGlmICghdGFyZ2V0KQogICAgICAgICByZXR1cm4gdjg6Ok51bGwoKTsKIAot
I2lmIEVOQUJMRShTVkcpCi0gICAgaWYgKFNWR0VsZW1lbnRJbnN0YW5jZSogaW5zdGFuY2UgPSB0
YXJnZXQtPnRvU1ZHRWxlbWVudEluc3RhbmNlKCkpCi0gICAgICAgIHJldHVybiB0b1Y4KGluc3Rh
bmNlKTsKLSNlbmRpZgotCi0jaWYgRU5BQkxFKFdPUktFUlMpCi0gICAgaWYgKFdvcmtlciogd29y
a2VyID0gdGFyZ2V0LT50b1dvcmtlcigpKQotICAgICAgICByZXR1cm4gdG9WOCh3b3JrZXIpOwot
Ci0gICAgaWYgKERlZGljYXRlZFdvcmtlckNvbnRleHQqIHdvcmtlckNvbnRleHQgPSB0YXJnZXQt
PnRvRGVkaWNhdGVkV29ya2VyQ29udGV4dCgpKQotICAgICAgICByZXR1cm4gdG9WOCh3b3JrZXJD
b250ZXh0KTsKLSNlbmRpZiAvLyBXT1JLRVJTCi0KLSNpZiBFTkFCTEUoU0hBUkVEX1dPUktFUlMp
Ci0gICAgaWYgKFNoYXJlZFdvcmtlciogc2hhcmVkV29ya2VyID0gdGFyZ2V0LT50b1NoYXJlZFdv
cmtlcigpKQotICAgICAgICByZXR1cm4gdG9WOChzaGFyZWRXb3JrZXIpOwotCi0gICAgaWYgKFNo
YXJlZFdvcmtlckNvbnRleHQqIHNoYXJlZFdvcmtlckNvbnRleHQgPSB0YXJnZXQtPnRvU2hhcmVk
V29ya2VyQ29udGV4dCgpKQotICAgICAgICByZXR1cm4gdG9WOChzaGFyZWRXb3JrZXJDb250ZXh0
KTsKLSNlbmRpZiAvLyBTSEFSRURfV09SS0VSUwotCi0jaWYgRU5BQkxFKE5PVElGSUNBVElPTlMp
Ci0gICAgaWYgKE5vdGlmaWNhdGlvbiogbm90aWZpY2F0aW9uID0gdGFyZ2V0LT50b05vdGlmaWNh
dGlvbigpKQotICAgICAgICByZXR1cm4gdG9WOChub3RpZmljYXRpb24pOwotI2VuZGlmCi0KLSNp
ZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKLSAgICBpZiAoSURCRGF0YWJhc2UqIGlkYkRhdGFi
YXNlID0gdGFyZ2V0LT50b0lEQkRhdGFiYXNlKCkpCi0gICAgICAgIHJldHVybiB0b1Y4KGlkYkRh
dGFiYXNlKTsKLSAgICBpZiAoSURCUmVxdWVzdCogaWRiUmVxdWVzdCA9IHRhcmdldC0+dG9JREJS
ZXF1ZXN0KCkpCi0gICAgICAgIHJldHVybiB0b1Y4KGlkYlJlcXVlc3QpOwotICAgIGlmIChJREJU
cmFuc2FjdGlvbiogaWRiVHJhbnNhY3Rpb24gPSB0YXJnZXQtPnRvSURCVHJhbnNhY3Rpb24oKSkK
LSAgICAgICAgcmV0dXJuIHRvVjgoaWRiVHJhbnNhY3Rpb24pOwotI2VuZGlmCi0KLSNpZiBFTkFC
TEUoV0VCX1NPQ0tFVFMpCi0gICAgaWYgKFdlYlNvY2tldCogd2ViU29ja2V0ID0gdGFyZ2V0LT50
b1dlYlNvY2tldCgpKQotICAgICAgICByZXR1cm4gdG9WOCh3ZWJTb2NrZXQpOwotI2VuZGlmCi0K
LSAgICBpZiAoTm9kZSogbm9kZSA9IHRhcmdldC0+dG9Ob2RlKCkpCi0gICAgICAgIHJldHVybiB0
b1Y4KG5vZGUpOwotCi0gICAgaWYgKERPTVdpbmRvdyogZG9tV2luZG93ID0gdGFyZ2V0LT50b0RP
TVdpbmRvdygpKQotICAgICAgICByZXR1cm4gdG9WOChkb21XaW5kb3cpOwotCi0gICAgLy8gWE1M
SHR0cFJlcXVlc3QgaXMgY3JlYXRlZCB3aXRoaW4gaXRzIEpTIGNvdW50ZXJwYXJ0LgotICAgIGlm
IChYTUxIdHRwUmVxdWVzdCogeG1sSHR0cFJlcXVlc3QgPSB0YXJnZXQtPnRvWE1MSHR0cFJlcXVl
c3QoKSkgewotICAgICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBnZXRBY3Rp
dmVET01PYmplY3RNYXAoKS5nZXQoeG1sSHR0cFJlcXVlc3QpOwotICAgICAgICBBU1NFUlQoIXdy
YXBwZXIuSXNFbXB0eSgpKTsKLSAgICAgICAgcmV0dXJuIHdyYXBwZXI7Ci0gICAgfQotCi0gICAg
Ly8gTWVzc2FnZVBvcnQgaXMgY3JlYXRlZCB3aXRoaW4gaXRzIEpTIGNvdW50ZXJwYXJ0Ci0gICAg
aWYgKE1lc3NhZ2VQb3J0KiBwb3J0ID0gdGFyZ2V0LT50b01lc3NhZ2VQb3J0KCkpIHsKLSAgICAg
ICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0gZ2V0QWN0aXZlRE9NT2JqZWN0TWFw
KCkuZ2V0KHBvcnQpOwotICAgICAgICBBU1NFUlQoIXdyYXBwZXIuSXNFbXB0eSgpKTsKLSAgICAg
ICAgcmV0dXJuIHdyYXBwZXI7Ci0gICAgfQotCi0gICAgaWYgKFhNTEh0dHBSZXF1ZXN0VXBsb2Fk
KiB1cGxvYWQgPSB0YXJnZXQtPnRvWE1MSHR0cFJlcXVlc3RVcGxvYWQoKSkgewotICAgICAgICB2
ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBnZXRET01PYmplY3RNYXAoKS5nZXQodXBs
b2FkKTsKLSAgICAgICAgQVNTRVJUKCF3cmFwcGVyLklzRW1wdHkoKSk7Ci0gICAgICAgIHJldHVy
biB3cmFwcGVyOwotICAgIH0KLQotICAgIGlmIChET01BcHBsaWNhdGlvbkNhY2hlKiBkb21BcHBD
YWNoZSA9IHRhcmdldC0+dG9ET01BcHBsaWNhdGlvbkNhY2hlKCkpCi0gICAgICAgIHJldHVybiB0
b1Y4KGRvbUFwcENhY2hlKTsKLQotICAgIGlmIChFdmVudFNvdXJjZSogZXZlbnRTb3VyY2UgPSB0
YXJnZXQtPnRvRXZlbnRTb3VyY2UoKSkKLSAgICAgICAgcmV0dXJuIHRvVjgoZXZlbnRTb3VyY2Up
OwotCi0jaWYgRU5BQkxFKEJMT0IpCi0gICAgaWYgKEZpbGVSZWFkZXIqIGZpbGVSZWFkZXIgPSB0
YXJnZXQtPnRvRmlsZVJlYWRlcigpKQotICAgICAgICByZXR1cm4gdG9WOChmaWxlUmVhZGVyKTsK
LSNlbmRpZgotCi0jaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQotICAgIGlmIChGaWxlV3JpdGVyKiBm
aWxlV3JpdGVyID0gdGFyZ2V0LT50b0ZpbGVXcml0ZXIoKSkKLSAgICAgICAgcmV0dXJuIHRvVjgo
ZmlsZVdyaXRlcik7Ci0jZW5kaWYKLQotI2lmIEVOQUJMRShXRUJfQVVESU8pCi0gICAgaWYgKEph
dmFTY3JpcHRBdWRpb05vZGUqIGpzQXVkaW9Ob2RlID0gdGFyZ2V0LT50b0phdmFTY3JpcHRBdWRp
b05vZGUoKSkKLSAgICAgICAgcmV0dXJuIHRvVjgoanNBdWRpb05vZGUpOwotICAgIGlmIChBdWRp
b0NvbnRleHQqIGF1ZGlvQ29udGV4dCA9IHRhcmdldC0+dG9BdWRpb0NvbnRleHQoKSkKLSAgICAg
ICAgcmV0dXJuIHRvVjgoYXVkaW9Db250ZXh0KTsKLSNlbmRpZiAgICAKLQotI2lmIEVOQUJMRShN
RURJQV9TVFJFQU0pCi0gICAgaWYgKExvY2FsTWVkaWFTdHJlYW0qIHN0cmVhbSA9IHRhcmdldC0+
dG9Mb2NhbE1lZGlhU3RyZWFtKCkpCi0gICAgICAgIHJldHVybiB0b1Y4KHN0cmVhbSk7Ci0KLSAg
ICBpZiAoTWVkaWFTdHJlYW0qIHN0cmVhbSA9IHRhcmdldC0+dG9NZWRpYVN0cmVhbSgpKQotICAg
ICAgICByZXR1cm4gdG9WOChzdHJlYW0pOwotCi0gICAgaWYgKFBlZXJDb25uZWN0aW9uKiBwZWVy
Q29ubmVjdGlvbiA9IHRhcmdldC0+dG9QZWVyQ29ubmVjdGlvbigpKQotICAgICAgICByZXR1cm4g
dG9WOChwZWVyQ29ubmVjdGlvbik7Ci0jZW5kaWYKKyAgICBBdG9taWNTdHJpbmcgZGVzaXJlZElu
dGVyZmFjZSA9IHRhcmdldC0+aW50ZXJmYWNlTmFtZSgpOworICAgIERPTV9FVkVOVF9UQVJHRVRf
SU5URVJGQUNFU19GT1JfRUFDSChUUllfVE9fV1JBUF9XSVRIX0lOVEVSRkFDRSkKIAotICAgIEFT
U0VSVCgwKTsKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gbm90SGFuZGxl
ZEJ5SW50ZXJjZXB0b3IoKTsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TmFt
ZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9FdmVudE5hbWVzLmNwcAko
cmV2aXNpb24gOTgyODEpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRXZlbnROYW1lcy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTMzLDYgKzMzLDcgQEAgRXZlbnROYW1lczo6RXZlbnROYW1lcygpCiAg
ICAgOiBkdW1teSgwKQogRE9NX0VWRU5UX05BTUVTX0ZPUl9FQUNIKElOSVRJQUxJWkVfRVZFTlRf
TkFNRSkKIERPTV9FVkVOVF9JTlRFUkZBQ0VTX0ZPUl9FQUNIKElOSVRJQUxJWkVfRVZFTlRfSU5U
RVJGQUNFKQorRE9NX0VWRU5UX1RBUkdFVF9JTlRFUkZBQ0VTX0ZPUl9FQUNIKElOSVRJQUxJWkVf
RVZFTlRfSU5URVJGQUNFKQogewogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRO
YW1lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9FdmVudE5hbWVzLmgJKHJl
dmlzaW9uIDk4MjgxKQorKysgU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TmFtZXMuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjMsNiArMjMsNyBAQAogI2RlZmluZSBFdmVudE5hbWVzX2gKIAogI2luY2x1
ZGUgIkV2ZW50SW50ZXJmYWNlcy5oIgorI2luY2x1ZGUgIkV2ZW50VGFyZ2V0SW50ZXJmYWNlcy5o
IgogI2luY2x1ZGUgIlRocmVhZEdsb2JhbERhdGEuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9BdG9t
aWNTdHJpbmcuaD4KIApAQCAtMjA1LDYgKzIwNiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
ICAgICAgICAjZGVmaW5lIERPTV9FVkVOVF9JTlRFUkZBQ0VfREVDTEFSRShuYW1lKSBBdG9taWNT
dHJpbmcgaW50ZXJmYWNlRm9yIyNuYW1lOwogICAgICAgICBET01fRVZFTlRfSU5URVJGQUNFU19G
T1JfRUFDSChET01fRVZFTlRfSU5URVJGQUNFX0RFQ0xBUkUpCisgICAgICAgIERPTV9FVkVOVF9U
QVJHRVRfSU5URVJGQUNFU19GT1JfRUFDSChET01fRVZFTlRfSU5URVJGQUNFX0RFQ0xBUkUpCiAg
ICAgICAgICN1bmRlZiBET01fRVZFTlRfSU5URVJGQUNFX0RFQ0xBUkUKICAgICB9OwogCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5jcHAJKHJldmlzaW9uIDk4MjgxKQorKysgU291cmNl
L1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODAsMTEgKzgw
LDYgQEAgRXZlbnRUYXJnZXQ6On5FdmVudFRhcmdldCgpCiB7CiB9CiAKLUV2ZW50U291cmNlKiBF
dmVudFRhcmdldDo6dG9FdmVudFNvdXJjZSgpCi17Ci0gICAgcmV0dXJuIDA7Ci19Ci0KIE5vZGUq
IEV2ZW50VGFyZ2V0Ojp0b05vZGUoKQogewogICAgIHJldHVybiAwOwpAQCAtOTUsMTMxICs5MCw2
IEBAIERPTVdpbmRvdyogRXZlbnRUYXJnZXQ6OnRvRE9NV2luZG93KCkKICAgICByZXR1cm4gMDsK
IH0KIAotWE1MSHR0cFJlcXVlc3QqIEV2ZW50VGFyZ2V0Ojp0b1hNTEh0dHBSZXF1ZXN0KCkKLXsK
LSAgICByZXR1cm4gMDsKLX0KLQotWE1MSHR0cFJlcXVlc3RVcGxvYWQqIEV2ZW50VGFyZ2V0Ojp0
b1hNTEh0dHBSZXF1ZXN0VXBsb2FkKCkKLXsKLSAgICByZXR1cm4gMDsKLX0KLQotRE9NQXBwbGlj
YXRpb25DYWNoZSogRXZlbnRUYXJnZXQ6OnRvRE9NQXBwbGljYXRpb25DYWNoZSgpCi17Ci0gICAg
cmV0dXJuIDA7Ci19Ci0KLSNpZiBFTkFCTEUoU1ZHKQotU1ZHRWxlbWVudEluc3RhbmNlKiBFdmVu
dFRhcmdldDo6dG9TVkdFbGVtZW50SW5zdGFuY2UoKQotewotICAgIHJldHVybiAwOwotfQotI2Vu
ZGlmCi0KLSNpZiBFTkFCTEUoV0VCX0FVRElPKQotQXVkaW9Db250ZXh0KiBFdmVudFRhcmdldDo6
dG9BdWRpb0NvbnRleHQoKQotewotICAgIHJldHVybiAwOwotfQotCi1KYXZhU2NyaXB0QXVkaW9O
b2RlKiBFdmVudFRhcmdldDo6dG9KYXZhU2NyaXB0QXVkaW9Ob2RlKCkKLXsKLSAgICByZXR1cm4g
MDsKLX0KLSNlbmRpZgotCi0jaWYgRU5BQkxFKFdFQl9TT0NLRVRTKQotV2ViU29ja2V0KiBFdmVu
dFRhcmdldDo6dG9XZWJTb2NrZXQoKQotewotICAgIHJldHVybiAwOwotfQotI2VuZGlmCi0KLU1l
c3NhZ2VQb3J0KiBFdmVudFRhcmdldDo6dG9NZXNzYWdlUG9ydCgpCi17Ci0gICAgcmV0dXJuIDA7
Ci19Ci0KLSNpZiBFTkFCTEUoV09SS0VSUykKLVdvcmtlciogRXZlbnRUYXJnZXQ6OnRvV29ya2Vy
KCkKLXsKLSAgICByZXR1cm4gMDsKLX0KLQotRGVkaWNhdGVkV29ya2VyQ29udGV4dCogRXZlbnRU
YXJnZXQ6OnRvRGVkaWNhdGVkV29ya2VyQ29udGV4dCgpCi17Ci0gICAgcmV0dXJuIDA7Ci19Ci0j
ZW5kaWYKLQotI2lmIEVOQUJMRShTSEFSRURfV09SS0VSUykKLVNoYXJlZFdvcmtlciogRXZlbnRU
YXJnZXQ6OnRvU2hhcmVkV29ya2VyKCkKLXsKLSAgICByZXR1cm4gMDsKLX0KLVNoYXJlZFdvcmtl
ckNvbnRleHQqIEV2ZW50VGFyZ2V0Ojp0b1NoYXJlZFdvcmtlckNvbnRleHQoKQotewotICAgIHJl
dHVybiAwOwotfQotI2VuZGlmCi0KLSNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKLU5vdGlmaWNh
dGlvbiogRXZlbnRUYXJnZXQ6OnRvTm90aWZpY2F0aW9uKCkKLXsKLSAgICByZXR1cm4gMDsKLX0K
LSNlbmRpZgotCi0jaWYgRU5BQkxFKEJMT0IpCi1GaWxlUmVhZGVyKiBFdmVudFRhcmdldDo6dG9G
aWxlUmVhZGVyKCkKLXsKLSAgICByZXR1cm4gMDsKLX0KLSNlbmRpZgotI2lmIEVOQUJMRShGSUxF
X1NZU1RFTSkKLUZpbGVXcml0ZXIqIEV2ZW50VGFyZ2V0Ojp0b0ZpbGVXcml0ZXIoKQotewotICAg
IHJldHVybiAwOwotfQotI2VuZGlmCi0KLSNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKLUlE
QkRhdGFiYXNlKiBFdmVudFRhcmdldDo6dG9JREJEYXRhYmFzZSgpCi17Ci0gICAgcmV0dXJuIDA7
Ci19Ci1JREJSZXF1ZXN0KiBFdmVudFRhcmdldDo6dG9JREJSZXF1ZXN0KCkKLXsKLSAgICByZXR1
cm4gMDsKLX0KLUlEQlRyYW5zYWN0aW9uKiBFdmVudFRhcmdldDo6dG9JREJUcmFuc2FjdGlvbigp
Ci17Ci0gICAgcmV0dXJuIDA7Ci19Ci1JREJWZXJzaW9uQ2hhbmdlUmVxdWVzdCogRXZlbnRUYXJn
ZXQ6OnRvSURCVmVyc2lvbkNoYW5nZVJlcXVlc3QoKQotewotICAgIHJldHVybiAwOwotfQotI2Vu
ZGlmCi0KLSNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQotTWVkaWFTdHJlYW0qIEV2ZW50VGFyZ2V0
Ojp0b01lZGlhU3RyZWFtKCkKLXsKLSAgICByZXR1cm4gMDsKLX0KLQotTG9jYWxNZWRpYVN0cmVh
bSogRXZlbnRUYXJnZXQ6OnRvTG9jYWxNZWRpYVN0cmVhbSgpCi17Ci0gICAgcmV0dXJuIDA7Ci19
Ci0KLVBlZXJDb25uZWN0aW9uKiBFdmVudFRhcmdldDo6dG9QZWVyQ29ubmVjdGlvbigpCi17Ci0g
ICAgcmV0dXJuIDA7Ci19Ci0jZW5kaWYKLQogYm9vbCBFdmVudFRhcmdldDo6YWRkRXZlbnRMaXN0
ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUGFzc1JlZlB0cjxFdmVudExpc3Rl
bmVyPiBsaXN0ZW5lciwgYm9vbCB1c2VDYXB0dXJlKQogewogICAgIEV2ZW50VGFyZ2V0RGF0YSog
ZCA9IGVuc3VyZUV2ZW50VGFyZ2V0RGF0YSgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0V2
ZW50VGFyZ2V0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0
LmgJKHJldmlzaW9uIDk4MjgxKQorKysgU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTEwMCw1OCArMTAwLDExIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICAgICAgdm9pZCByZWYoKSB7IHJlZkV2ZW50VGFyZ2V0KCk7IH0KICAgICAgICAgdm9pZCBk
ZXJlZigpIHsgZGVyZWZFdmVudFRhcmdldCgpOyB9CiAKLSAgICAgICAgdmlydHVhbCBFdmVudFNv
dXJjZSogdG9FdmVudFNvdXJjZSgpOwotICAgICAgICB2aXJ0dWFsIE1lc3NhZ2VQb3J0KiB0b01l
c3NhZ2VQb3J0KCk7CisgICAgICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBpbnRlcmZh
Y2VOYW1lKCkgY29uc3QgPSAwOworICAgICAgICB2aXJ0dWFsIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdCA9IDA7CisKICAgICAgICAgdmlydHVh
bCBOb2RlKiB0b05vZGUoKTsKICAgICAgICAgdmlydHVhbCBET01XaW5kb3cqIHRvRE9NV2luZG93
KCk7Ci0gICAgICAgIHZpcnR1YWwgWE1MSHR0cFJlcXVlc3QqIHRvWE1MSHR0cFJlcXVlc3QoKTsK
LSAgICAgICAgdmlydHVhbCBYTUxIdHRwUmVxdWVzdFVwbG9hZCogdG9YTUxIdHRwUmVxdWVzdFVw
bG9hZCgpOwotICAgICAgICB2aXJ0dWFsIERPTUFwcGxpY2F0aW9uQ2FjaGUqIHRvRE9NQXBwbGlj
YXRpb25DYWNoZSgpOwotI2lmIEVOQUJMRShTVkcpCi0gICAgICAgIHZpcnR1YWwgU1ZHRWxlbWVu
dEluc3RhbmNlKiB0b1NWR0VsZW1lbnRJbnN0YW5jZSgpOwotI2VuZGlmCi0jaWYgRU5BQkxFKFdP
UktFUlMpCi0gICAgICAgIHZpcnR1YWwgV29ya2VyKiB0b1dvcmtlcigpOwotICAgICAgICB2aXJ0
dWFsIERlZGljYXRlZFdvcmtlckNvbnRleHQqIHRvRGVkaWNhdGVkV29ya2VyQ29udGV4dCgpOwot
I2VuZGlmCi0jaWYgRU5BQkxFKFNIQVJFRF9XT1JLRVJTKQotICAgICAgICB2aXJ0dWFsIFNoYXJl
ZFdvcmtlciogdG9TaGFyZWRXb3JrZXIoKTsKLSAgICAgICAgdmlydHVhbCBTaGFyZWRXb3JrZXJD
b250ZXh0KiB0b1NoYXJlZFdvcmtlckNvbnRleHQoKTsKLSNlbmRpZgotCi0jaWYgRU5BQkxFKFdF
Ql9BVURJTykKLSAgICAgICAgdmlydHVhbCBBdWRpb0NvbnRleHQqIHRvQXVkaW9Db250ZXh0KCk7
Ci0gICAgICAgIHZpcnR1YWwgSmF2YVNjcmlwdEF1ZGlvTm9kZSogdG9KYXZhU2NyaXB0QXVkaW9O
b2RlKCk7Ci0jZW5kaWYKLQotI2lmIEVOQUJMRShXRUJfU09DS0VUUykKLSAgICAgICAgdmlydHVh
bCBXZWJTb2NrZXQqIHRvV2ViU29ja2V0KCk7Ci0jZW5kaWYKLQotI2lmIEVOQUJMRShOT1RJRklD
QVRJT05TKQotICAgICAgICB2aXJ0dWFsIE5vdGlmaWNhdGlvbiogdG9Ob3RpZmljYXRpb24oKTsK
LSNlbmRpZgotI2lmIEVOQUJMRShCTE9CKQotICAgICAgICB2aXJ0dWFsIEZpbGVSZWFkZXIqIHRv
RmlsZVJlYWRlcigpOwotI2VuZGlmCi0jaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQotICAgICAgICB2
aXJ0dWFsIEZpbGVXcml0ZXIqIHRvRmlsZVdyaXRlcigpOwotI2VuZGlmCi0KLSNpZiBFTkFCTEUo
SU5ERVhFRF9EQVRBQkFTRSkKLSAgICAgICAgdmlydHVhbCBJREJEYXRhYmFzZSogdG9JREJEYXRh
YmFzZSgpOwotICAgICAgICB2aXJ0dWFsIElEQlJlcXVlc3QqIHRvSURCUmVxdWVzdCgpOwotICAg
ICAgICB2aXJ0dWFsIElEQlRyYW5zYWN0aW9uKiB0b0lEQlRyYW5zYWN0aW9uKCk7Ci0gICAgICAg
IHZpcnR1YWwgSURCVmVyc2lvbkNoYW5nZVJlcXVlc3QqIHRvSURCVmVyc2lvbkNoYW5nZVJlcXVl
c3QoKTsKLSNlbmRpZgotCi0jaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKLSAgICAgICAgdmlydHVh
bCBNZWRpYVN0cmVhbSogdG9NZWRpYVN0cmVhbSgpOwotICAgICAgICB2aXJ0dWFsIExvY2FsTWVk
aWFTdHJlYW0qIHRvTG9jYWxNZWRpYVN0cmVhbSgpOwotICAgICAgICB2aXJ0dWFsIFBlZXJDb25u
ZWN0aW9uKiB0b1BlZXJDb25uZWN0aW9uKCk7Ci0jZW5kaWYKLQotICAgICAgICB2aXJ0dWFsIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdCA9IDA7
CiAKICAgICAgICAgdmlydHVhbCBib29sIGFkZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3Ry
aW5nJiBldmVudFR5cGUsIFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4sIGJvb2wgdXNlQ2FwdHVy
ZSk7CiAgICAgICAgIHZpcnR1YWwgYm9vbCByZW1vdmVFdmVudExpc3RlbmVyKGNvbnN0IEF0b21p
Y1N0cmluZyYgZXZlbnRUeXBlLCBFdmVudExpc3RlbmVyKiwgYm9vbCB1c2VDYXB0dXJlKTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldEZhY3RvcnkuaW4KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0RmFjdG9yeS5pbgkocmV2aXNpb24gMCkK
KysrIFNvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldEZhY3RvcnkuaW4JKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsMjcgQEAKK25hbWVzcGFjZT0iRXZlbnRUYXJnZXQiCisKK0V2ZW50U291cmNl
CitNZXNzYWdlUG9ydAorTm9kZQorRE9NV2luZG93CitYTUxIdHRwUmVxdWVzdAorWE1MSHR0cFJl
cXVlc3RVcGxvYWQKK0RPTUFwcGxpY2F0aW9uQ2FjaGUKK1NWR0VsZW1lbnRJbnN0YW5jZSBjb25k
aXRpb25hbD1TVkcKK1dvcmtlciBjb25kaXRpb25hbD1XT1JLRVJTCitEZWRpY2F0ZWRXb3JrZXJD
b250ZXh0IGNvbmRpdGlvbmFsPVdPUktFUlMKK1NoYXJlZFdvcmtlciBjb25kaXRpb25hbD1TSEFS
RURfV09SS0VSUworU2hhcmVkV29ya2VyQ29udGV4dCBjb25kaXRpb25hbD1TSEFSRURfV09SS0VS
UworQXVkaW9Db250ZXh0IGNvbmRpdGlvbmFsPVdFQl9BVURJTworSmF2YVNjcmlwdEF1ZGlvTm9k
ZSBjb25kaXRpb25hbD1XRUJfQVVESU8KK1dlYlNvY2tldCBjb25kaXRpb25hbD1XRUJfU09DS0VU
UworTm90aWZpY2F0aW9uIGNvbmRpdGlvbmFsPU5PVElGSUNBVElPTlMKK0ZpbGVSZWFkZXIgY29u
ZGl0aW9uYWw9QkxPQgorRmlsZVdyaXRlciBjb25kaXRpb25hbD1GSUxFX1NZU1RFTQorSURCRGF0
YWJhc2UgY29uZGl0aW9uYWw9SU5ERVhFRF9EQVRBQkFTRQorSURCUmVxdWVzdCBjb25kaXRpb25h
bD1JTkRFWEVEX0RBVEFCQVNFCitJREJUcmFuc2FjdGlvbiBjb25kaXRpb25hbD1JTkRFWEVEX0RB
VEFCQVNFCitJREJWZXJzaW9uQ2hhbmdlUmVxdWVzdCBjb25kaXRpb25hbD1JTkRFWEVEX0RBVEFC
QVNFCitNZWRpYVN0cmVhbSBjb25kaXRpb25hbD1NRURJQV9TVFJFQU0KK0xvY2FsTWVkaWFTdHJl
YW0gY29uZGl0aW9uYWw9TUVESUFfU1RSRUFNCitQZWVyQ29ubmVjdGlvbiBjb25kaXRpb25hbD1N
RURJQV9TVFJFQU0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlUG9ydC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VQb3J0LmNwcAkocmV2aXNpb24g
OTgyODEpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZVBvcnQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xNTksNiArMTU5LDExIEBAIHZvaWQgTWVzc2FnZVBvcnQ6OmNvbnRleHREZXN0cm95
ZWQoKQogICAgIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCA9IDA7CiB9CiAKK2NvbnN0IEF0b21p
Y1N0cmluZyYgTWVzc2FnZVBvcnQ6OmludGVyZmFjZU5hbWUoKSBjb25zdAoreworICAgIHJldHVy
biBldmVudE5hbWVzKCkuaW50ZXJmYWNlRm9yTWVzc2FnZVBvcnQ7Cit9CisKIFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIE1lc3NhZ2VQb3J0OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QK
IHsKICAgICByZXR1cm4gbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0OwpJbmRleDogU291cmNlL1dl
YkNvcmUvZG9tL01lc3NhZ2VQb3J0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9t
L01lc3NhZ2VQb3J0LmgJKHJldmlzaW9uIDk4MjgxKQorKysgU291cmNlL1dlYkNvcmUvZG9tL01l
c3NhZ2VQb3J0LmgJKHdvcmtpbmcgY29weSkKQEAgLTgyLDEwICs4Miw5IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogICAgICAgICB2b2lkIGNvbnRleHREZXN0cm95ZWQoKTsKIAorICAgICAgICB2
aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgaW50ZXJmYWNlTmFtZSgpIGNvbnN0OwogICAgICAg
ICB2aXJ0dWFsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KSBjb25zdDsKIAotICAgICAgICB2aXJ0dWFsIE1lc3NhZ2VQb3J0KiB0b01lc3NhZ2VQb3J0KCkg
eyByZXR1cm4gdGhpczsgfQotCiAgICAgICAgIHZvaWQgZGlzcGF0Y2hNZXNzYWdlcygpOwogCiAg
ICAgICAgIHVzaW5nIFJlZkNvdW50ZWQ8TWVzc2FnZVBvcnQ+OjpyZWY7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9kb20vTm9kZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL05v
ZGUuY3BwCShyZXZpc2lvbiA5ODI4MSkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNTc1LDYgKzU3NSwxMSBAQCB2b2lkIE5vZGU6OnNldFNoYWRvd0hv
c3QoRWxlbWVudCogaG9zdCkKICAgICBzZXRQYXJlbnQoaG9zdCk7CiB9CiAKK05vZGUqIE5vZGU6
OnRvTm9kZSgpCit7CisgICAgcmV0dXJuIHRoaXM7Cit9CisKIEhUTUxJbnB1dEVsZW1lbnQqIE5v
ZGU6OnRvSW5wdXRFbGVtZW50KCkKIHsKICAgICAvLyBJZiBvbmUgb2YgdGhlIGJlbG93IEFTU0VS
VHMgdHJpZ2dlciwgeW91IGFyZSBjYWxsaW5nIHRoaXMgZnVuY3Rpb24KQEAgLTI1MTQsNyArMjUx
OSwxMCBAQCBOb2RlKiBOb2RlOjplbmNsb3NpbmdMaW5rRXZlbnRQYXJlbnRPclNlCiAgICAgcmV0
dXJuIDA7CiB9CiAKLS8vIC0tLS0tLS0tCitjb25zdCBBdG9taWNTdHJpbmcmIE5vZGU6OmludGVy
ZmFjZU5hbWUoKSBjb25zdAoreworICAgIHJldHVybiBldmVudE5hbWVzKCkuaW50ZXJmYWNlRm9y
Tm9kZTsKK30KIAogU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogTm9kZTo6c2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpIGNvbnN0CiB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgJKHJldmlzaW9uIDk4MjgxKQorKysg
U291cmNlL1dlYkNvcmUvZG9tL05vZGUuaAkod29ya2luZyBjb3B5KQpAQCAtNTM1LDEwICs1MzUs
MTAgQEAgcHVibGljOgogCiAgICAgdW5zaWduZWQgc2hvcnQgY29tcGFyZURvY3VtZW50UG9zaXRp
b24oTm9kZSopOwogCi0gICAgdmlydHVhbCBOb2RlKiB0b05vZGUoKSB7IHJldHVybiB0aGlzOyB9
Ci0KKyAgICB2aXJ0dWFsIE5vZGUqIHRvTm9kZSgpOwogICAgIHZpcnR1YWwgSFRNTElucHV0RWxl
bWVudCogdG9JbnB1dEVsZW1lbnQoKTsKIAorICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5n
JiBpbnRlcmZhY2VOYW1lKCkgY29uc3Q7CiAgICAgdmlydHVhbCBTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3Q7CiAKICAgICB2aXJ0dWFsIGJvb2wg
YWRkRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUGFzc1JlZlB0
cjxFdmVudExpc3RlbmVyPiwgYm9vbCB1c2VDYXB0dXJlKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2RvbS9tYWtlX2V2ZW50X2ZhY3RvcnkucGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
ZG9tL21ha2VfZXZlbnRfZmFjdG9yeS5wbAkocmV2aXNpb24gOTgyODEpCisrKyBTb3VyY2UvV2Vi
Q29yZS9kb20vbWFrZV9ldmVudF9mYWN0b3J5LnBsCSh3b3JraW5nIGNvcHkpCkBAIC00Nyw2ICs0
Nyw3IEBAIHN1YiBwcmludEhlYWRlcnNGaWxlKCQpOwogbXkgJGV2ZW50c0ZpbGUgPSAiIjsKIG15
ICRvdXRwdXREaXIgPSAiLiI7CiBteSAlcGFyc2VkRXZlbnRzID0gKCk7CitteSAkbmFtZXNwYWNl
OwogCiByZXF1aXJlIENvbmZpZzsKIApAQCAtNjEsOSArNjIsOSBAQCBkaWUgIllvdSBtdXN0IHNw
ZWNpZnkgLS1ldmVudHMgPGZpbGU+IiB1CiAKIG15ICVldmVudHMgPSAle3JlYWRFdmVudHMoJGV2
ZW50c0ZpbGUpfTsKIAotcHJpbnRGYWN0b3J5RmlsZSgiJG91dHB1dERpci9FdmVudEZhY3Rvcnku
Y3BwIik7Ci1wcmludE1hY3JvRmlsZSgiJG91dHB1dERpci9FdmVudEludGVyZmFjZXMuaCIpOwot
cHJpbnRIZWFkZXJzRmlsZSgiJG91dHB1dERpci9FdmVudEhlYWRlcnMuaCIpOworcHJpbnRGYWN0
b3J5RmlsZSgiJG91dHB1dERpci8ke25hbWVzcGFjZX1GYWN0b3J5LmNwcCIpIGlmICRuYW1lc3Bh
Y2UgZXEgIkV2ZW50IjsKK3ByaW50TWFjcm9GaWxlKCIkb3V0cHV0RGlyLyR7bmFtZXNwYWNlfUlu
dGVyZmFjZXMuaCIpOworcHJpbnRIZWFkZXJzRmlsZSgiJG91dHB1dERpci8ke25hbWVzcGFjZX1I
ZWFkZXJzLmgiKTsKIAogc3ViIGRlZmF1bHRFdmVudFByb3BlcnR5SGFzaAogewpAQCAtODksNyAr
OTAsOCBAQCBzdWIgcGFyYW1ldGVyc0hhbmRsZXIKIHsKICAgICBteSAoJHBhcmFtZXRlciwgJHZh
bHVlKSA9IEBfOwogCi0gICAgZGllICJVbmtub3duIHBhcmFtZXRlciAkcGFyYW1ldGVyIGZvciBl
dmVudHNcbiIgdW5sZXNzICRwYXJhbWV0ZXIgZXEgIm5hbWVzcGFjZSI7CisgICAgZGllICJVbmtu
b3duIHBhcmFtZXRlciAkcGFyYW1ldGVyXG4iIHVubGVzcyAkcGFyYW1ldGVyIGVxICJuYW1lc3Bh
Y2UiOworICAgICRuYW1lc3BhY2UgPSAkdmFsdWU7CiB9CiAKIHN1YiByZWFkTmFtZXMoJCQkKQpA
QCAtMTI0LDYgKzEyNiwxNiBAQCBzdWIgaW50ZXJmYWNlRm9yRXZlbnQoJCkKICAgICByZXR1cm4g
JGludGVyZmFjZU5hbWU7CiB9CiAKK3N1YiB0b01hY3JvU3R5bGUoJCkKK3sKKyAgICBteSAoJGNh
bWVsQ2FzZSkgPSBAXzsKKworICAgIHJldHVybiAiRVZFTlQiIGlmICRjYW1lbENhc2UgZXEgIkV2
ZW50IjsKKyAgICByZXR1cm4gIkVWRU5UX1RBUkdFVCIgaWYgJGNhbWVsQ2FzZSBlcSAiRXZlbnRU
YXJnZXQiOworCisgICAgZGllICJPaywgeW91IGdvdCBtZS4gVGhpcyBzY3JpcHQgaXMgcmVhbGx5
IGp1c3QgYSBnaWFudCBoYWNrLiI7Cit9CisKIHN1YiBwcmludEZhY3RvcnlGaWxlKCQpCiB7CiAg
ICAgbXkgJHBhdGggPSBzaGlmdDsKQEAgLTEzNCwxMyArMTQ2LDEzIEBAIHN1YiBwcmludEZhY3Rv
cnlGaWxlKCQpCiAgICAgcHJpbnRMaWNlbnNlSGVhZGVyKCRGKTsKIAogICAgIHByaW50IEYgIiNp
bmNsdWRlIFwiY29uZmlnLmhcIlxuIjsKLSAgICBwcmludCBGICIjaW5jbHVkZSBcIkV2ZW50RmFj
dG9yeS5oXCJcbiI7CisgICAgcHJpbnQgRiAiI2luY2x1ZGUgXCIke25hbWVzcGFjZX1GYWN0b3J5
LmhcIlxuIjsKICAgICBwcmludCBGICJcbiI7Ci0gICAgcHJpbnQgRiAiI2luY2x1ZGUgXCJFdmVu
dEhlYWRlcnMuaFwiXG4iOworICAgIHByaW50IEYgIiNpbmNsdWRlIFwiJHtuYW1lc3BhY2V9SGVh
ZGVycy5oXCJcbiI7CiAgICAgcHJpbnQgRiAiXG4iOwogICAgIHByaW50IEYgIm5hbWVzcGFjZSBX
ZWJDb3JlIHtcbiI7CiAgICAgcHJpbnQgRiAiXG4iOwotICAgIHByaW50IEYgIlBhc3NSZWZQdHI8
RXZlbnQ+IEV2ZW50RmFjdG9yeTo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgZXZlbnRUeXBlKVxuIjsK
KyAgICBwcmludCBGICJQYXNzUmVmUHRyPCRuYW1lc3BhY2U+ICR7bmFtZXNwYWNlfUZhY3Rvcnk6
OmNyZWF0ZShjb25zdCBTdHJpbmcmIHR5cGUpXG4iOwogICAgIHByaW50IEYgIntcbiI7CiAKICAg
ICBmb3IgbXkgJGV2ZW50TmFtZSAoc29ydCBrZXlzICVwYXJzZWRFdmVudHMpIHsKQEAgLTE0OCw3
ICsxNjAsNyBAQCBzdWIgcHJpbnRGYWN0b3J5RmlsZSgkKQogICAgICAgICBteSAkaW50ZXJmYWNl
TmFtZSA9IGludGVyZmFjZUZvckV2ZW50KCRldmVudE5hbWUpOwogCiAgICAgICAgIHByaW50IEYg
IiNpZiBFTkFCTEUoJGNvbmRpdGlvbmFsKVxuIiBpZiAkY29uZGl0aW9uYWw7Ci0gICAgICAgIHBy
aW50IEYgIiAgICBpZiAoZXZlbnRUeXBlID09IFwiJGV2ZW50TmFtZVwiKVxuIjsKKyAgICAgICAg
cHJpbnQgRiAiICAgIGlmICh0eXBlID09IFwiJGV2ZW50TmFtZVwiKVxuIjsKICAgICAgICAgcHJp
bnQgRiAiICAgICAgICByZXR1cm4gJHtpbnRlcmZhY2VOYW1lfTo6Y3JlYXRlKCk7XG4iOwogICAg
ICAgICBwcmludCBGICIjZW5kaWZcbiIgaWYgJGNvbmRpdGlvbmFsOwogICAgIH0KQEAgLTE2OSw4
ICsxODEsOCBAQCBzdWIgcHJpbnRNYWNyb0ZpbGUoJCkKIAogICAgIHByaW50TGljZW5zZUhlYWRl
cigkRik7CiAKLSAgICBwcmludCBGICIjaWZuZGVmIEV2ZW50SW50ZXJmYWNlc19oXG4iOwotICAg
IHByaW50IEYgIiNkZWZpbmUgRXZlbnRJbnRlcmZhY2VzX2hcbiI7CisgICAgcHJpbnQgRiAiI2lm
bmRlZiAke25hbWVzcGFjZX1JbnRlcmZhY2VzX2hcbiI7CisgICAgcHJpbnQgRiAiI2RlZmluZSAk
e25hbWVzcGFjZX1JbnRlcmZhY2VzX2hcbiI7CiAgICAgcHJpbnQgRiAiXG4iOwogCiAgICAgbXkg
JXVuY29uZGl0aW9uYWxJbnRlcmZhY2VzID0gKCk7CkBAIC0xOTAsMzQgKzIwMiwzNiBAQCBzdWIg
cHJpbnRNYWNyb0ZpbGUoJCkKICAgICAgICAgfQogICAgIH0KIAorICAgIG15ICRtYWNyb1N0eWxl
ZE5hbWVzcGFjZSA9IHRvTWFjcm9TdHlsZSgkbmFtZXNwYWNlKTsKKwogICAgIGZvciBteSAkY29u
ZGl0aW9uYWwgKHNvcnQga2V5cyAlaW50ZXJmYWNlc0J5Q29uZGl0aW9uYWwpIHsKICAgICAgICAg
cHJpbnQgRiAiI2lmIEVOQUJMRSgkY29uZGl0aW9uYWwpXG4iOwotICAgICAgICBwcmludCBGICIj
ZGVmaW5lIERPTV9FVkVOVF9JTlRFUkZBQ0VTX0ZPUl9FQUNIXyRjb25kaXRpb25hbChtYWNybykg
XFxcbiI7CisgICAgICAgIHByaW50IEYgIiNkZWZpbmUgRE9NXyR7bWFjcm9TdHlsZWROYW1lc3Bh
Y2V9X0lOVEVSRkFDRVNfRk9SX0VBQ0hfJGNvbmRpdGlvbmFsKG1hY3JvKSBcXFxuIjsKIAogICAg
ICAgICBmb3IgbXkgJGludGVyZmFjZSAoc29ydCBrZXlzICV7ICRpbnRlcmZhY2VzQnlDb25kaXRp
b25hbHskY29uZGl0aW9uYWx9IH0pIHsKICAgICAgICAgICAgIG5leHQgaWYgZGVmaW5lZCgkdW5j
b25kaXRpb25hbEludGVyZmFjZXN7JGludGVyZmFjZX0pOwogICAgICAgICAgICAgcHJpbnQgRiAi
ICAgIG1hY3JvKCRpbnRlcmZhY2UpIFxcXG4iOwogICAgICAgICB9CiAKLSAgICAgICAgcHJpbnQg
RiAiLy8gRW5kIG9mIERPTV9FVkVOVF9JTlRFUkZBQ0VTX0ZPUl9FQUNIXyRjb25kaXRpb25hbFxu
IjsKKyAgICAgICAgcHJpbnQgRiAiLy8gRW5kIG9mIERPTV8ke21hY3JvU3R5bGVkTmFtZXNwYWNl
fV9JTlRFUkZBQ0VTX0ZPUl9FQUNIXyRjb25kaXRpb25hbFxuIjsKICAgICAgICAgcHJpbnQgRiAi
I2Vsc2VcbiI7Ci0gICAgICAgIHByaW50IEYgIiNkZWZpbmUgRE9NX0VWRU5UX0lOVEVSRkFDRVNf
Rk9SX0VBQ0hfJGNvbmRpdGlvbmFsKG1hY3JvKVxuIjsKKyAgICAgICAgcHJpbnQgRiAiI2RlZmlu
ZSBET01fJHttYWNyb1N0eWxlZE5hbWVzcGFjZX1fSU5URVJGQUNFU19GT1JfRUFDSF8kY29uZGl0
aW9uYWwobWFjcm8pXG4iOwogICAgICAgICBwcmludCBGICIjZW5kaWZcbiI7CiAgICAgICAgIHBy
aW50IEYgIlxuIjsKICAgICB9CiAKLSAgICBwcmludCBGICIjZGVmaW5lIERPTV9FVkVOVF9JTlRF
UkZBQ0VTX0ZPUl9FQUNIKG1hY3JvKSBcXFxuIjsKKyAgICBwcmludCBGICIjZGVmaW5lIERPTV8k
e21hY3JvU3R5bGVkTmFtZXNwYWNlfV9JTlRFUkZBQ0VTX0ZPUl9FQUNIKG1hY3JvKSBcXFxuIjsK
ICAgICBwcmludCBGICIgICAgXFxcbiI7CiAgICAgZm9yIG15ICRpbnRlcmZhY2UgKHNvcnQga2V5
cyAldW5jb25kaXRpb25hbEludGVyZmFjZXMpIHsKICAgICAgICAgICAgIHByaW50IEYgIiAgICBt
YWNybygkaW50ZXJmYWNlKSBcXFxuIjsKICAgICB9CiAgICAgcHJpbnQgRiAiICAgIFxcXG4iOwog
ICAgIGZvciBteSAkY29uZGl0aW9uYWwgKHNvcnQga2V5cyAlaW50ZXJmYWNlc0J5Q29uZGl0aW9u
YWwpIHsKLSAgICAgICAgcHJpbnQgRiAiICAgIERPTV9FVkVOVF9JTlRFUkZBQ0VTX0ZPUl9FQUNI
XyRjb25kaXRpb25hbChtYWNybykgXFxcbiI7CisgICAgICAgIHByaW50IEYgIiAgICBET01fJHtt
YWNyb1N0eWxlZE5hbWVzcGFjZX1fSU5URVJGQUNFU19GT1JfRUFDSF8kY29uZGl0aW9uYWwobWFj
cm8pIFxcXG4iOwogICAgIH0KIAogICAgIHByaW50IEYgIlxuIjsKLSAgICBwcmludCBGICIjZW5k
aWYgLy8gRXZlbnRJbnRlcmZhY2VzX2hcbiI7CisgICAgcHJpbnQgRiAiI2VuZGlmIC8vICR7bmFt
ZXNwYWNlfUludGVyZmFjZXNfaFxuIjsKIAogICAgIGNsb3NlIEY7CiB9CkBAIC0yMzEsOCArMjQ1
LDggQEAgc3ViIHByaW50SGVhZGVyc0ZpbGUoJCkKIAogICAgIHByaW50TGljZW5zZUhlYWRlcigk
Rik7CiAKLSAgICBwcmludCBGICIjaWZuZGVmIEV2ZW50SGVhZGVyc19oXG4iOwotICAgIHByaW50
IEYgIiNkZWZpbmUgRXZlbnRIZWFkZXJzX2hcbiI7CisgICAgcHJpbnQgRiAiI2lmbmRlZiAke25h
bWVzcGFjZX1IZWFkZXJzX2hcbiI7CisgICAgcHJpbnQgRiAiI2RlZmluZSAke25hbWVzcGFjZX1I
ZWFkZXJzX2hcbiI7CiAgICAgcHJpbnQgRiAiXG4iOwogCiAgICAgbXkgJWluY2x1ZGVkSW50ZXJm
YWNlcyA9ICgpOwpAQCAtMjU1LDcgKzI2OSw3IEBAIHN1YiBwcmludEhlYWRlcnNGaWxlKCQpCiAg
ICAgfQogCiAgICAgcHJpbnQgRiAiXG4iOwotICAgIHByaW50IEYgIiNlbmRpZiAvLyBFdmVudEhl
YWRlcnNfaFxuIjsKKyAgICBwcmludCBGICIjZW5kaWYgLy8gJHtuYW1lc3BhY2V9SGVhZGVyc19o
XG4iOwogCiAgICAgY2xvc2UgRjsKIH0KQEAgLTI2Nyw3ICsyODEsNyBAQCBzdWIgcHJpbnRMaWNl
bnNlSGVhZGVyKCQpCiAgICAgcHJpbnQgRiAiLyoKICAqIFRISVMgRklMRSBXQVMgQVVUT01BVElD
QUxMWSBHRU5FUkFURUQsIERPIE5PVCBFRElULgogICoKLSAqIFRoaXMgZmlsZSB3YXMgZ2VuZXJh
dGVkIGJ5IHRoZSBkb20vbWFrZV9ldmVudHMucGwgc2NyaXB0LgorICogVGhpcyBmaWxlIHdhcyBn
ZW5lcmF0ZWQgYnkgdGhlIGRvbS9tYWtlX2V2ZW50X2ZhY3RvcnkucGwgc2NyaXB0LgogICoKICAq
IENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlci5jcHAJKHJldmlzaW9uIDk4Mjgx
KQorKysgU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNjIsNiArNjIsMTEgQEAgRmlsZVJlYWRlcjo6fkZpbGVSZWFkZXIoKQogICAgIHRlcm1p
bmF0ZSgpOwogfQogCitjb25zdCBBdG9taWNTdHJpbmcmIEZpbGVSZWFkZXI6OmludGVyZmFjZU5h
bWUoKSBjb25zdAoreworICAgIHJldHVybiBldmVudE5hbWVzKCkuaW50ZXJmYWNlRm9yRmlsZVJl
YWRlcjsKK30KKwogYm9vbCBGaWxlUmVhZGVyOjpoYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdAog
ewogICAgIHJldHVybiBtX3N0YXRlID09IExPQURJTkcgfHwgQWN0aXZlRE9NT2JqZWN0OjpoYXNQ
ZW5kaW5nQWN0aXZpdHkoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRl
ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlci5oCShy
ZXZpc2lvbiA5ODI4MSkKKysrIFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlci5oCSh3
b3JraW5nIGNvcHkpCkBAIC04NSw3ICs4NSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wg
aGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3Q7CiAKICAgICAvLyBFdmVudFRhcmdldAotICAgIHZp
cnR1YWwgRmlsZVJlYWRlciogdG9GaWxlUmVhZGVyKCkgeyByZXR1cm4gdGhpczsgfQorICAgIHZp
cnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBpbnRlcmZhY2VOYW1lKCkgY29uc3Q7CiAgICAgdmly
dHVhbCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29u
c3QgeyByZXR1cm4gQWN0aXZlRE9NT2JqZWN0OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7IH0K
IAogICAgIC8vIEZpbGVSZWFkZXJMb2FkZXJDbGllbnQKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Zp
bGVhcGkvRmlsZVdyaXRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZmlsZWFw
aS9GaWxlV3JpdGVyLmNwcAkocmV2aXNpb24gOTgyODEpCisrKyBTb3VyY2UvV2ViQ29yZS9maWxl
YXBpL0ZpbGVXcml0ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NSw2ICs2NSwxMSBAQCBGaWxl
V3JpdGVyOjp+RmlsZVdyaXRlcigpCiAgICAgICAgIHN0b3AoKTsKIH0KIAorY29uc3QgQXRvbWlj
U3RyaW5nJiBGaWxlV3JpdGVyOjppbnRlcmZhY2VOYW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
ZXZlbnROYW1lcygpLmludGVyZmFjZUZvckZpbGVXcml0ZXI7Cit9CisKIGJvb2wgRmlsZVdyaXRl
cjo6aGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9yZWFkeVN0YXRl
ID09IFdSSVRJTkcgfHwgQWN0aXZlRE9NT2JqZWN0OjpoYXNQZW5kaW5nQWN0aXZpdHkoKTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVdyaXRlci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVdyaXRlci5oCShyZXZpc2lvbiA5ODI4MSkKKysrIFNv
dXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVdyaXRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC03Niw3
ICs3Niw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc3RvcCgpOwogCiAgICAgLy8gRXZl
bnRUYXJnZXQKLSAgICB2aXJ0dWFsIEZpbGVXcml0ZXIqIHRvRmlsZVdyaXRlcigpIHsgcmV0dXJu
IHRoaXM7IH0KKyAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgaW50ZXJmYWNlTmFtZSgp
IGNvbnN0OwogICAgIHZpcnR1YWwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIEFjdGl2ZURPTU9iamVjdDo6c2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpOyB9CiAKICAgICB1c2luZyBSZWZDb3VudGVkPEZpbGVXcml0ZXJCYXNlPjo6
cmVmOwpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0RPTUFwcGxpY2F0aW9u
Q2FjaGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9E
T01BcHBsaWNhdGlvbkNhY2hlLmNwcAkocmV2aXNpb24gOTgyODEpCisrKyBTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvYXBwY2FjaGUvRE9NQXBwbGljYXRpb25DYWNoZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTg0LDYgKzg0LDExIEBAIHZvaWQgRE9NQXBwbGljYXRpb25DYWNoZTo6c3dhcENhY2hlKEV4
Y2UKICAgICAgICAgZWMgPSBJTlZBTElEX1NUQVRFX0VSUjsKIH0KIAorY29uc3QgQXRvbWljU3Ry
aW5nJiBET01BcHBsaWNhdGlvbkNhY2hlOjppbnRlcmZhY2VOYW1lKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gZXZlbnROYW1lcygpLmludGVyZmFjZUZvckRPTUFwcGxpY2F0aW9uQ2FjaGU7Cit9CisK
IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIERPTUFwcGxpY2F0aW9uQ2FjaGU6OnNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKSBjb25zdAogewogICAgIGlmIChtX2ZyYW1lKQpJbmRleDogU291cmNlL1dl
YkNvcmUvbG9hZGVyL2FwcGNhY2hlL0RPTUFwcGxpY2F0aW9uQ2FjaGUuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvRE9NQXBwbGljYXRpb25DYWNoZS5oCShy
ZXZpc2lvbiA5ODI4MSkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9ET01BcHBs
aWNhdGlvbkNhY2hlLmgJKHdvcmtpbmcgY29weSkKQEAgLTY5LDggKzY5LDggQEAgcHVibGljOgog
ICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIoY2FjaGVkKTsKICAgICBERUZJTkVf
QVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKG9ic29sZXRlKTsKIAorICAgIHZpcnR1YWwgY29uc3Qg
QXRvbWljU3RyaW5nJiBpbnRlcmZhY2VOYW1lKCkgY29uc3Q7CiAgICAgdmlydHVhbCBTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3Q7Ci0gICAgRE9N
QXBwbGljYXRpb25DYWNoZSogdG9ET01BcHBsaWNhdGlvbkNhY2hlKCkgeyByZXR1cm4gdGhpczsg
fQogCiAgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgdG9FdmVudFR5cGUoQXBwbGljYXRp
b25DYWNoZUhvc3Q6OkV2ZW50SUQgaWQpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9tZWRpYXN0
cmVhbS9Mb2NhbE1lZGlhU3RyZWFtLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9t
ZWRpYXN0cmVhbS9Mb2NhbE1lZGlhU3RyZWFtLmNwcAkocmV2aXNpb24gOTgyODEpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9tZWRpYXN0cmVhbS9Mb2NhbE1lZGlhU3RyZWFtLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNjUsOSArNjUsOSBAQCBMb2NhbE1lZGlhU3RyZWFtOjp+TG9jYWxNZWRpYVN0cmVhbSgp
CiB7CiB9CiAKLUxvY2FsTWVkaWFTdHJlYW0qIExvY2FsTWVkaWFTdHJlYW06OnRvTG9jYWxNZWRp
YVN0cmVhbSgpCitjb25zdCBBdG9taWNTdHJpbmcmIExvY2FsTWVkaWFTdHJlYW06OmludGVyZmFj
ZU5hbWUoKSBjb25zdAogewotICAgIHJldHVybiB0aGlzOworICAgIHJldHVybiBldmVudE5hbWVz
KCkuaW50ZXJmYWNlRm9yTG9jYWxNZWRpYVN0cmVhbTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvbWVkaWFzdHJlYW0vTG9jYWxNZWRpYVN0cmVhbS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL21lZGlhc3RyZWFtL0xvY2FsTWVkaWFTdHJl
YW0uaAkocmV2aXNpb24gOTgyODEpCisrKyBTb3VyY2UvV2ViQ29yZS9tZWRpYXN0cmVhbS9Mb2Nh
bE1lZGlhU3RyZWFtLmgJKHdvcmtpbmcgY29weSkKQEAgLTQwLDggKzQwLDggQEAgcHVibGljOgog
CiAgICAgdm9pZCBzdG9wKCk7CiAKLSAgICAvLyBFdmVudFRhcmdldC4KLSAgICB2aXJ0dWFsIExv
Y2FsTWVkaWFTdHJlYW0qIHRvTG9jYWxNZWRpYVN0cmVhbSgpOworICAgIC8vIEV2ZW50VGFyZ2V0
CisgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIGludGVyZmFjZU5hbWUoKSBjb25zdDsK
IAogcHJpdmF0ZToKICAgICBMb2NhbE1lZGlhU3RyZWFtKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
LCBjb25zdCBNZWRpYVN0cmVhbVNvdXJjZVZlY3RvciYpOwpJbmRleDogU291cmNlL1dlYkNvcmUv
bWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmNwcAkocmV2aXNpb24gOTgyODEpCisrKyBTb3VyY2Uv
V2ViQ29yZS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY0
LDExICs2NCw2IEBAIE1lZGlhU3RyZWFtOjpSZWFkeVN0YXRlIE1lZGlhU3RyZWFtOjpyZWEKICAg
ICByZXR1cm4gbV9kZXNjcmlwdG9yLT5lbmRlZCgpID8gRU5ERUQgOiBMSVZFOwogfQogCi1NZWRp
YVN0cmVhbSogTWVkaWFTdHJlYW06OnRvTWVkaWFTdHJlYW0oKQotewotICAgIHJldHVybiB0aGlz
OwotfQotCiB2b2lkIE1lZGlhU3RyZWFtOjpzdHJlYW1FbmRlZCgpCiB7CiAgICAgaWYgKHJlYWR5
U3RhdGUoKSA9PSBFTkRFRCkKQEAgLTc5LDYgKzc0LDExIEBAIHZvaWQgTWVkaWFTdHJlYW06OnN0
cmVhbUVuZGVkKCkKICAgICBkaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygp
LmVuZGVkRXZlbnQsIGZhbHNlLCBmYWxzZSkpOwogfQogCitjb25zdCBBdG9taWNTdHJpbmcmIE1l
ZGlhU3RyZWFtOjppbnRlcmZhY2VOYW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZXZlbnROYW1l
cygpLmludGVyZmFjZUZvck1lZGlhU3RyZWFtOworfQorCiBTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBNZWRpYVN0cmVhbTo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0CiB7CiAgICAgcmV0
dXJuIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC5nZXQoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
bWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0uaAkocmV2aXNpb24gOTgyODEpCisrKyBTb3VyY2UvV2Vi
Q29yZS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5oCSh3b3JraW5nIGNvcHkpCkBAIC02MCw4ICs2
MCw4IEBAIHB1YmxpYzoKIAogICAgIE1lZGlhU3RyZWFtRGVzY3JpcHRvciogZGVzY3JpcHRvcigp
IGNvbnN0IHsgcmV0dXJuIG1fZGVzY3JpcHRvci5nZXQoKTsgfQogCi0gICAgLy8gRXZlbnRUYXJn
ZXQgaW1wbGVtZW50YXRpb24uCi0gICAgdmlydHVhbCBNZWRpYVN0cmVhbSogdG9NZWRpYVN0cmVh
bSgpOworICAgIC8vIEV2ZW50VGFyZ2V0CisgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcm
IGludGVyZmFjZU5hbWUoKSBjb25zdDsKICAgICB2aXJ0dWFsIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdDsKIAogICAgIHVzaW5nIFJlZkNvdW50
ZWQ8TWVkaWFTdHJlYW0+OjpyZWY7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9tZWRpYXN0cmVhbS9Q
ZWVyQ29ubmVjdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbWVkaWFzdHJl
YW0vUGVlckNvbm5lY3Rpb24uY3BwCShyZXZpc2lvbiA5ODI4MSkKKysrIFNvdXJjZS9XZWJDb3Jl
L21lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjM2LDkg
KzIzNiw5IEBAIHZvaWQgUGVlckNvbm5lY3Rpb246OnJlbW90ZVN0cmVhbVJlbW92ZWQKICAgICBk
aXNwYXRjaEV2ZW50KE1lZGlhU3RyZWFtRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkucmVtb3Zl
c3RyZWFtRXZlbnQsIGZhbHNlLCBmYWxzZSwgc3RyZWFtLnJlbGVhc2UoKSkpOwogfQogCi1QZWVy
Q29ubmVjdGlvbiogUGVlckNvbm5lY3Rpb246OnRvUGVlckNvbm5lY3Rpb24oKQorY29uc3QgQXRv
bWljU3RyaW5nJiBQZWVyQ29ubmVjdGlvbjo6aW50ZXJmYWNlTmFtZSgpIGNvbnN0CiB7Ci0gICAg
cmV0dXJuIHRoaXM7CisgICAgcmV0dXJuIGV2ZW50TmFtZXMoKS5pbnRlcmZhY2VGb3JQZWVyQ29u
bmVjdGlvbjsKIH0KIAogU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogUGVlckNvbm5lY3Rpb246OnNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdApJbmRleDogU291cmNlL1dlYkNvcmUvbWVkaWFz
dHJlYW0vUGVlckNvbm5lY3Rpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9tZWRp
YXN0cmVhbS9QZWVyQ29ubmVjdGlvbi5oCShyZXZpc2lvbiA5ODI4MSkKKysrIFNvdXJjZS9XZWJD
b3JlL21lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTc5LDkg
Kzc5LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCByZW1vdGVTdHJlYW1SZW1vdmVkKE1l
ZGlhU3RyZWFtRGVzY3JpcHRvciopOwogCiAgICAgLy8gRXZlbnRUYXJnZXQKLSAgICB2aXJ0dWFs
IFBlZXJDb25uZWN0aW9uKiB0b1BlZXJDb25uZWN0aW9uKCk7Ci0KLSAgICAvLyBFdmVudFRhcmdl
dCBpbXBsZW1lbnRhdGlvbi4KKyAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgaW50ZXJm
YWNlTmFtZSgpIGNvbnN0OwogICAgIHZpcnR1YWwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0OwogCiAgICAgLy8gQWN0aXZlRE9NT2JqZWN0Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uY3BwCShy
ZXZpc2lvbiA5ODI4MSkKKysrIFNvdXJjZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0
aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA0LDYgKzEwNCwxMSBAQCBQYXNzUmVmUHRyPE5v
dGlmaWNhdGlvbj4gTm90aWZpY2F0aW9uOjpjCiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBOb3Rp
ZmljYXRpb24oY29udGVudHMsIGNvbnRleHQsIGVjLCBwcm92aWRlcikpOwogfQogCitjb25zdCBB
dG9taWNTdHJpbmcmIE5vdGlmaWNhdGlvbjo6aW50ZXJmYWNlTmFtZSgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIGV2ZW50TmFtZXMoKS5pbnRlcmZhY2VGb3JOb3RpZmljYXRpb247Cit9CisKIHZvaWQg
Tm90aWZpY2F0aW9uOjpzaG93KCkgCiB7CiAjaWYgUExBVEZPUk0oUVQpCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmgJKHJldmlzaW9uIDk4MjgxKQor
KysgU291cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uaAkod29ya2luZyBj
b3B5KQpAQCAtODMsMTMgKzgzLDEzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgREVG
SU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUihlcnJvcik7CiAgICAgICAgIERFRklORV9BVFRS
SUJVVEVfRVZFTlRfTElTVEVORVIoY2xvc2UpOwogICAgICAgICBERUZJTkVfQVRUUklCVVRFX0VW
RU5UX0xJU1RFTkVSKGNsaWNrKTsKLSAgICAKKwogICAgICAgICB1c2luZyBSZWZDb3VudGVkPE5v
dGlmaWNhdGlvbj46OnJlZjsKICAgICAgICAgdXNpbmcgUmVmQ291bnRlZDxOb3RpZmljYXRpb24+
OjpkZXJlZjsKLSAgICAKKwogICAgICAgICAvLyBFdmVudFRhcmdldCBpbnRlcmZhY2UKKyAgICAg
ICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIGludGVyZmFjZU5hbWUoKSBjb25zdDsKICAg
ICAgICAgdmlydHVhbCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250
ZXh0KCkgY29uc3QgeyByZXR1cm4gQWN0aXZlRE9NT2JqZWN0OjpzY3JpcHRFeGVjdXRpb25Db250
ZXh0KCk7IH0KLSAgICAgICAgdmlydHVhbCBOb3RpZmljYXRpb24qIHRvTm90aWZpY2F0aW9uKCkg
eyByZXR1cm4gdGhpczsgfQogCiAgICAgICAgIC8vIEFjdGl2ZURPTU9iamVjdCBpbnRlcmZhY2UK
ICAgICAgICAgdmlydHVhbCB2b2lkIGNvbnRleHREZXN0cm95ZWQoKTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
YWdlL0RPTVdpbmRvdy5jcHAJKHJldmlzaW9uIDk4MjgxKQorKysgU291cmNlL1dlYkNvcmUvcGFn
ZS9ET01XaW5kb3cuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NDYsMTEgKzQ0NiwyMSBAQCBET01X
aW5kb3c6On5ET01XaW5kb3coKQogICAgIHJlbW92ZUFsbEJlZm9yZVVubG9hZEV2ZW50TGlzdGVu
ZXJzKHRoaXMpOwogfQogCitjb25zdCBBdG9taWNTdHJpbmcmIERPTVdpbmRvdzo6aW50ZXJmYWNl
TmFtZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGV2ZW50TmFtZXMoKS5pbnRlcmZhY2VGb3JET01X
aW5kb3c7Cit9CisKIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIERPTVdpbmRvdzo6c2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGRvY3VtZW50KCk7CiB9CiAKK0RP
TVdpbmRvdyogRE9NV2luZG93Ojp0b0RPTVdpbmRvdygpCit7CisgICAgcmV0dXJuIHRoaXM7Cit9
CisKIFBhc3NSZWZQdHI8TWVkaWFRdWVyeUxpc3Q+IERPTVdpbmRvdzo6bWF0Y2hNZWRpYShjb25z
dCBTdHJpbmcmIG1lZGlhKQogewogICAgIHJldHVybiBkb2N1bWVudCgpID8gZG9jdW1lbnQoKS0+
bWVkaWFRdWVyeU1hdGNoZXIoKS0+bWF0Y2hNZWRpYShtZWRpYSkgOiAwOwpJbmRleDogU291cmNl
L1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
YWdlL0RPTVdpbmRvdy5oCShyZXZpc2lvbiA5ODI4MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
RE9NV2luZG93LmgJKHdvcmtpbmcgY29weSkKQEAgLTg1LDkgKzg1LDExIEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8RE9NV2luZG93PiBjcmVhdGUoRnJh
bWUqIGZyYW1lKSB7IHJldHVybiBhZG9wdFJlZihuZXcgRE9NV2luZG93KGZyYW1lKSk7IH0KICAg
ICAgICAgdmlydHVhbCB+RE9NV2luZG93KCk7CiAKLSAgICAgICAgdmlydHVhbCBET01XaW5kb3cq
IHRvRE9NV2luZG93KCkgeyByZXR1cm4gdGhpczsgfQorICAgICAgICB2aXJ0dWFsIGNvbnN0IEF0
b21pY1N0cmluZyYgaW50ZXJmYWNlTmFtZSgpIGNvbnN0OwogICAgICAgICB2aXJ0dWFsIFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdDsKIAorICAg
ICAgICB2aXJ0dWFsIERPTVdpbmRvdyogdG9ET01XaW5kb3coKTsKKwogICAgICAgICBGcmFtZSog
ZnJhbWUoKSBjb25zdCB7IHJldHVybiBtX2ZyYW1lOyB9CiAgICAgICAgIHZvaWQgZGlzY29ubmVj
dEZyYW1lKCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRTb3VyY2UuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRTb3VyY2UuY3BwCShyZXZpc2lv
biA5ODI4MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRTb3VyY2UuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xODYsNiArMTg2LDExIEBAIHZvaWQgRXZlbnRTb3VyY2U6OmNsb3NlKCkKICAg
ICBtX3N0YXRlID0gQ0xPU0VEOwogfQogCitjb25zdCBBdG9taWNTdHJpbmcmIEV2ZW50U291cmNl
OjppbnRlcmZhY2VOYW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZXZlbnROYW1lcygpLmludGVy
ZmFjZUZvckV2ZW50U291cmNlOworfQorCiBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBFdmVudFNv
dXJjZTo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIEFjdGl2
ZURPTU9iamVjdDo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwpJbmRleDogU291cmNlL1dlYkNv
cmUvcGFnZS9FdmVudFNvdXJjZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
RXZlbnRTb3VyY2UuaAkocmV2aXNpb24gOTgyODEpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0V2
ZW50U291cmNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTc1LDcgKzc1LDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogICAgICAgICB1c2luZyBSZWZDb3VudGVkPEV2ZW50U291cmNlPjo6cmVmOwogICAg
ICAgICB1c2luZyBSZWZDb3VudGVkPEV2ZW50U291cmNlPjo6ZGVyZWY7CiAKLSAgICAgICAgdmly
dHVhbCBFdmVudFNvdXJjZSogdG9FdmVudFNvdXJjZSgpIHsgcmV0dXJuIHRoaXM7IH0KKyAgICAg
ICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIGludGVyZmFjZU5hbWUoKSBjb25zdDsKICAg
ICAgICAgdmlydHVhbCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250
ZXh0KCkgY29uc3Q7CiAKICAgICAgICAgdmlydHVhbCB2b2lkIHN0b3AoKTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJhc2UuY3BwCShyZXZpc2lvbiA5ODI4MSkKKysrIFNvdXJj
ZS9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTgs
NiArMjE4LDExIEBAIHZvaWQgSURCRGF0YWJhc2U6OnN0b3AoKQogICAgIG1fc3RvcHBlZCA9IHRy
dWU7CiB9CiAKK2NvbnN0IEF0b21pY1N0cmluZyYgSURCRGF0YWJhc2U6OmludGVyZmFjZU5hbWUo
KSBjb25zdAoreworICAgIHJldHVybiBldmVudE5hbWVzKCkuaW50ZXJmYWNlRm9ySURCRGF0YWJh
c2U7Cit9CisKIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIElEQkRhdGFiYXNlOjpzY3JpcHRFeGVj
dXRpb25Db250ZXh0KCkgY29uc3QKIHsKICAgICByZXR1cm4gQWN0aXZlRE9NT2JqZWN0OjpzY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkRh
dGFiYXNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJEYXRhYmFz
ZS5oCShyZXZpc2lvbiA5ODI4MSkKKysrIFNvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJh
c2UuaAkod29ya2luZyBjb3B5KQpAQCAtODIsMTAgKzgyLDkgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgdm9pZCBzdG9wKCk7CiAKICAgICAvLyBFdmVudFRhcmdldAotICAgIHZpcnR1YWwgSURCRGF0
YWJhc2UqIHRvSURCRGF0YWJhc2UoKSB7IHJldHVybiB0aGlzOyB9CisgICAgdmlydHVhbCBjb25z
dCBBdG9taWNTdHJpbmcmIGludGVyZmFjZU5hbWUoKSBjb25zdDsKICAgICB2aXJ0dWFsIFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdDsKIAotCiAg
ICAgdm9pZCBvcGVuKCk7CiAgICAgdm9pZCBlbnF1ZXVlRXZlbnQoUGFzc1JlZlB0cjxFdmVudD4p
OwogICAgIGJvb2wgZGlzcGF0Y2hFdmVudChQYXNzUmVmUHRyPEV2ZW50PiBldmVudCwgRXhjZXB0
aW9uQ29kZSYgZWMpIHsgcmV0dXJuIEV2ZW50VGFyZ2V0OjpkaXNwYXRjaEV2ZW50KGV2ZW50LCBl
Yyk7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCUmVxdWVzdC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJSZXF1ZXN0LmNwcAkocmV2aXNpb24g
OTgyODEpCisrKyBTb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQlJlcXVlc3QuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yNjEsNiArMjYxLDExIEBAIHZvaWQgSURCUmVxdWVzdDo6b25CbG9ja2VkKCkK
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAorY29uc3QgQXRvbWljU3RyaW5nJiBJREJS
ZXF1ZXN0OjppbnRlcmZhY2VOYW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZXZlbnROYW1lcygp
LmludGVyZmFjZUZvcklEQlJlcXVlc3Q7Cit9CisKIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIElE
QlJlcXVlc3Q6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdAogewogICAgIHJldHVybiBB
Y3RpdmVET01PYmplY3Q6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3N0b3JhZ2UvSURCUmVxdWVzdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3N0b3JhZ2UvSURCUmVxdWVzdC5oCShyZXZpc2lvbiA5ODI4MSkKKysrIFNvdXJjZS9XZWJDb3Jl
L3N0b3JhZ2UvSURCUmVxdWVzdC5oCSh3b3JraW5nIGNvcHkpCkBAIC04Nyw3ICs4Nyw3IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgaGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3Q7CiAKICAg
ICAvLyBFdmVudFRhcmdldAotICAgIHZpcnR1YWwgSURCUmVxdWVzdCogdG9JREJSZXF1ZXN0KCkg
eyByZXR1cm4gdGhpczsgfQorICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBpbnRlcmZh
Y2VOYW1lKCkgY29uc3Q7CiAgICAgdmlydHVhbCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIGRpc3BhdGNoRXZl
bnQoUGFzc1JlZlB0cjxFdmVudD4pOwogICAgIGJvb2wgZGlzcGF0Y2hFdmVudChQYXNzUmVmUHRy
PEV2ZW50PiBldmVudCwgRXhjZXB0aW9uQ29kZSYgZWMpIHsgcmV0dXJuIEV2ZW50VGFyZ2V0Ojpk
aXNwYXRjaEV2ZW50KGV2ZW50LCBlYyk7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N0b3JhZ2Uv
SURCVHJhbnNhY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N0b3JhZ2Uv
SURCVHJhbnNhY3Rpb24uY3BwCShyZXZpc2lvbiA5ODI4MSkKKysrIFNvdXJjZS9XZWJDb3JlL3N0
b3JhZ2UvSURCVHJhbnNhY3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzgsNiArMTM4LDEx
IEBAIGJvb2wgSURCVHJhbnNhY3Rpb246Omhhc1BlbmRpbmdBY3Rpdml0eSgKICAgICByZXR1cm4g
IW1fZmluaXNoZWQgfHwgQWN0aXZlRE9NT2JqZWN0OjpoYXNQZW5kaW5nQWN0aXZpdHkoKTsKIH0K
IAorY29uc3QgQXRvbWljU3RyaW5nJiBJREJUcmFuc2FjdGlvbjo6aW50ZXJmYWNlTmFtZSgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIGV2ZW50TmFtZXMoKS5pbnRlcmZhY2VGb3JJREJUcmFuc2FjdGlv
bjsKK30KKwogU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogSURCVHJhbnNhY3Rpb246OnNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKSBjb25zdAogewogICAgIHJldHVybiBBY3RpdmVET01PYmplY3Q6OnNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURC
VHJhbnNhY3Rpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQlRy
YW5zYWN0aW9uLmgJKHJldmlzaW9uIDk4MjgxKQorKysgU291cmNlL1dlYkNvcmUvc3RvcmFnZS9J
REJUcmFuc2FjdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC03NCw3ICs3NCw3IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIHZvaWQgb25Db21wbGV0ZSgpOwogCiAgICAgLy8gRXZlbnRUYXJnZXQKLSAg
ICB2aXJ0dWFsIElEQlRyYW5zYWN0aW9uKiB0b0lEQlRyYW5zYWN0aW9uKCkgeyByZXR1cm4gdGhp
czsgfQorICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBpbnRlcmZhY2VOYW1lKCkgY29u
c3Q7CiAgICAgdmlydHVhbCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25D
b250ZXh0KCkgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIGRpc3BhdGNoRXZlbnQoUGFzc1JlZlB0
cjxFdmVudD4pOwogICAgIGJvb2wgZGlzcGF0Y2hFdmVudChQYXNzUmVmUHRyPEV2ZW50PiBldmVu
dCwgRXhjZXB0aW9uQ29kZSYgZWMpIHsgcmV0dXJuIEV2ZW50VGFyZ2V0OjpkaXNwYXRjaEV2ZW50
KGV2ZW50LCBlYyk7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCVmVyc2lvbkNo
YW5nZVJlcXVlc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURC
VmVyc2lvbkNoYW5nZVJlcXVlc3QuY3BwCShyZXZpc2lvbiA5ODI4MSkKKysrIFNvdXJjZS9XZWJD
b3JlL3N0b3JhZ2UvSURCVmVyc2lvbkNoYW5nZVJlcXVlc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC00OCw2ICs0OCwxMSBAQCBJREJWZXJzaW9uQ2hhbmdlUmVxdWVzdDo6fklEQlZlcnNpb25DaGFu
CiB7CiB9CiAKK2NvbnN0IEF0b21pY1N0cmluZyYgSURCVmVyc2lvbkNoYW5nZVJlcXVlc3Q6Omlu
dGVyZmFjZU5hbWUoKSBjb25zdAoreworICAgIHJldHVybiBldmVudE5hbWVzKCkuaW50ZXJmYWNl
Rm9ySURCVmVyc2lvbkNoYW5nZVJlcXVlc3Q7Cit9CisKIHZvaWQgSURCVmVyc2lvbkNoYW5nZVJl
cXVlc3Q6Om9uQmxvY2tlZCgpCiB7CiAgICAgQVNTRVJUKCFtX2Vycm9yQ29kZSAmJiBtX2Vycm9y
TWVzc2FnZS5pc051bGwoKSAmJiAhbV9yZXN1bHQpOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3Rv
cmFnZS9JREJWZXJzaW9uQ2hhbmdlUmVxdWVzdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3N0b3JhZ2UvSURCVmVyc2lvbkNoYW5nZVJlcXVlc3QuaAkocmV2aXNpb24gOTgyODEpCisr
KyBTb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQlZlcnNpb25DaGFuZ2VSZXF1ZXN0LmgJKHdvcmtp
bmcgY29weSkKQEAgLTM5LDYgKzM5LDkgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIG9u
QmxvY2tlZCgpOwogCisgICAgLy8gRXZlbnRUYXJnZXQKKyAgICB2aXJ0dWFsIGNvbnN0IEF0b21p
Y1N0cmluZyYgaW50ZXJmYWNlTmFtZSgpIGNvbnN0OworCiAgICAgREVGSU5FX0FUVFJJQlVURV9F
VkVOVF9MSVNURU5FUihibG9ja2VkKTsKIAogcHJpdmF0ZToKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdFbGVtZW50SW5zdGFuY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdFbGVtZW50SW5zdGFuY2UuY3BwCShyZXZpc2lvbiA5ODI4MSkKKysrIFNvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdFbGVtZW50SW5zdGFuY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjEs
NiArMTIxLDExIEBAIHZvaWQgU1ZHRWxlbWVudEluc3RhbmNlOjppbnZhbGlkYXRlQWxsSW4KICAg
ICBlbGVtZW50LT5kb2N1bWVudCgpLT51cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVl
dHMoKTsKIH0KIAorY29uc3QgQXRvbWljU3RyaW5nJiBTVkdFbGVtZW50SW5zdGFuY2U6OmludGVy
ZmFjZU5hbWUoKSBjb25zdAoreworICAgIHJldHVybiBldmVudE5hbWVzKCkuaW50ZXJmYWNlRm9y
U1ZHRWxlbWVudEluc3RhbmNlOworfQorCiBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBTVkdFbGVt
ZW50SW5zdGFuY2U6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdAogewogICAgIHJldHVy
biBtX2VsZW1lbnQtPmRvY3VtZW50KCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxl
bWVudEluc3RhbmNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1l
bnRJbnN0YW5jZS5oCShyZXZpc2lvbiA5ODI4MSkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdF
bGVtZW50SW5zdGFuY2UuaAkod29ya2luZyBjb3B5KQpAQCAtNDcsNiArNDcsNyBAQCBwdWJsaWM6
CiAKICAgICB2aXJ0dWFsIH5TVkdFbGVtZW50SW5zdGFuY2UoKTsKIAorICAgIHZpcnR1YWwgY29u
c3QgQXRvbWljU3RyaW5nJiBpbnRlcmZhY2VOYW1lKCkgY29uc3Q7CiAgICAgdmlydHVhbCBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3Q7CiAKICAg
ICB2aXJ0dWFsIGJvb2wgYWRkRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50
VHlwZSwgUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiwgYm9vbCB1c2VDYXB0dXJlKTsKQEAgLTEz
OSw3ICsxNDAsNiBAQCBwcml2YXRlOgogICAgIFNWR0VsZW1lbnRJbnN0YW5jZShTVkdVc2VFbGVt
ZW50KiwgU1ZHVXNlRWxlbWVudCosIFBhc3NSZWZQdHI8U1ZHRWxlbWVudD4gb3JpZ2luYWxFbGVt
ZW50KTsKIAogICAgIHZpcnR1YWwgTm9kZSogdG9Ob2RlKCkgeyByZXR1cm4gc2hhZG93VHJlZUVs
ZW1lbnQoKTsgfQotICAgIHZpcnR1YWwgU1ZHRWxlbWVudEluc3RhbmNlKiB0b1NWR0VsZW1lbnRJ
bnN0YW5jZSgpIHsgcmV0dXJuIHRoaXM7IH0KIAogICAgIHZvaWQgYXBwZW5kQ2hpbGQoUGFzc1Jl
ZlB0cjxTVkdFbGVtZW50SW5zdGFuY2U+IGNoaWxkKTsKICAgICB2b2lkIHNldFNoYWRvd1RyZWVF
bGVtZW50KFNWR0VsZW1lbnQqKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0F1ZGlv
Q29udGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vQXVkaW9D
b250ZXh0LmNwcAkocmV2aXNpb24gOTgyODEpCisrKyBTb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9B
dWRpb0NvbnRleHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MzEsMTQgKzczMSwxNCBAQCB2b2lk
IEF1ZGlvQ29udGV4dDo6aGFuZGxlRGlydHlBdWRpb05vZGVPCiAgICAgbV9kaXJ0eUF1ZGlvTm9k
ZU91dHB1dHMuY2xlYXIoKTsKIH0KIAotU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogQXVkaW9Db250
ZXh0OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QKK2NvbnN0IEF0b21pY1N0cmluZyYg
QXVkaW9Db250ZXh0OjppbnRlcmZhY2VOYW1lKCkgY29uc3QKIHsKLSAgICByZXR1cm4gZG9jdW1l
bnQoKTsKKyAgICByZXR1cm4gZXZlbnROYW1lcygpLmludGVyZmFjZUZvckF1ZGlvQ29udGV4dDsK
IH0KIAotQXVkaW9Db250ZXh0KiBBdWRpb0NvbnRleHQ6OnRvQXVkaW9Db250ZXh0KCkKK1Njcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIEF1ZGlvQ29udGV4dDo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
IGNvbnN0CiB7Ci0gICAgcmV0dXJuIHRoaXM7CisgICAgcmV0dXJuIGRvY3VtZW50KCk7CiB9CiAK
IHZvaWQgQXVkaW9Db250ZXh0OjpzdGFydFJlbmRlcmluZygpCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS93ZWJhdWRpby9BdWRpb0NvbnRleHQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS93
ZWJhdWRpby9BdWRpb0NvbnRleHQuaAkocmV2aXNpb24gOTgyODEpCisrKyBTb3VyY2UvV2ViQ29y
ZS93ZWJhdWRpby9BdWRpb0NvbnRleHQuaAkod29ya2luZyBjb3B5KQpAQCAtMjA4LDggKzIwOCw4
IEBAIHB1YmxpYzoKICAgICB2b2lkIG1hcmtBdWRpb05vZGVPdXRwdXREaXJ0eShBdWRpb05vZGVP
dXRwdXQqKTsKIAogICAgIC8vIEV2ZW50VGFyZ2V0CisgICAgdmlydHVhbCBjb25zdCBBdG9taWNT
dHJpbmcmIGludGVyZmFjZU5hbWUoKSBjb25zdDsKICAgICB2aXJ0dWFsIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdDsKLSAgICB2aXJ0dWFsIEF1
ZGlvQ29udGV4dCogdG9BdWRpb0NvbnRleHQoKTsKICAgICB2aXJ0dWFsIEV2ZW50VGFyZ2V0RGF0
YSogZXZlbnRUYXJnZXREYXRhKCkgeyByZXR1cm4gJm1fZXZlbnRUYXJnZXREYXRhOyB9CiAgICAg
dmlydHVhbCBFdmVudFRhcmdldERhdGEqIGVuc3VyZUV2ZW50VGFyZ2V0RGF0YSgpIHsgcmV0dXJu
ICZtX2V2ZW50VGFyZ2V0RGF0YTsgfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9K
YXZhU2NyaXB0QXVkaW9Ob2RlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS93ZWJh
dWRpby9KYXZhU2NyaXB0QXVkaW9Ob2RlLmNwcAkocmV2aXNpb24gOTgyODEpCisrKyBTb3VyY2Uv
V2ViQ29yZS93ZWJhdWRpby9KYXZhU2NyaXB0QXVkaW9Ob2RlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTE5LDExICsxMTksNiBAQCB2b2lkIEphdmFTY3JpcHRBdWRpb05vZGU6OnVuaW5pdGlhbGl6
ZSgpCiAgICAgQXVkaW9Ob2RlOjp1bmluaXRpYWxpemUoKTsKIH0KIAotSmF2YVNjcmlwdEF1ZGlv
Tm9kZSogSmF2YVNjcmlwdEF1ZGlvTm9kZTo6dG9KYXZhU2NyaXB0QXVkaW9Ob2RlKCkKLXsKLSAg
ICByZXR1cm4gdGhpczsKLX0KLQogdm9pZCBKYXZhU2NyaXB0QXVkaW9Ob2RlOjpwcm9jZXNzKHNp
emVfdCBmcmFtZXNUb1Byb2Nlc3MpCiB7CiAgICAgLy8gRGlzY3Vzc2lvbiBhYm91dCBpbnB1dHMg
YW5kIG91dHB1dHM6CkBAIC0yNjIsNiArMjU3LDExIEBAIHZvaWQgSmF2YVNjcmlwdEF1ZGlvTm9k
ZTo6cmVzZXQoKQogICAgIH0KIH0KIAorY29uc3QgQXRvbWljU3RyaW5nJiBKYXZhU2NyaXB0QXVk
aW9Ob2RlOjppbnRlcmZhY2VOYW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZXZlbnROYW1lcygp
LmludGVyZmFjZUZvckphdmFTY3JpcHRBdWRpb05vZGU7Cit9CisKIFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIEphdmFTY3JpcHRBdWRpb05vZGU6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25z
dAogewogICAgIHJldHVybiBjb25zdF9jYXN0PEphdmFTY3JpcHRBdWRpb05vZGUqPih0aGlzKS0+
Y29udGV4dCgpLT5kb2N1bWVudCgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vSmF2
YVNjcmlwdEF1ZGlvTm9kZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3dlYmF1ZGlv
L0phdmFTY3JpcHRBdWRpb05vZGUuaAkocmV2aXNpb24gOTgyODEpCisrKyBTb3VyY2UvV2ViQ29y
ZS93ZWJhdWRpby9KYXZhU2NyaXB0QXVkaW9Ob2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTYzLDgg
KzYzLDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCB1bmluaXRpYWxpemUoKTsKIAogICAg
IC8vIEV2ZW50VGFyZ2V0CisgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIGludGVyZmFj
ZU5hbWUoKSBjb25zdDsKICAgICB2aXJ0dWFsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdDsKLSAgICB2aXJ0dWFsIEphdmFTY3JpcHRBdWRpb05v
ZGUqIHRvSmF2YVNjcmlwdEF1ZGlvTm9kZSgpOwogICAgIHZpcnR1YWwgRXZlbnRUYXJnZXREYXRh
KiBldmVudFRhcmdldERhdGEoKSB7IHJldHVybiAmbV9ldmVudFRhcmdldERhdGE7IH0KICAgICB2
aXJ0dWFsIEV2ZW50VGFyZ2V0RGF0YSogZW5zdXJlRXZlbnRUYXJnZXREYXRhKCkgIHsgcmV0dXJu
ICZtX2V2ZW50VGFyZ2V0RGF0YTsgfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRz
L1dlYlNvY2tldC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9X
ZWJTb2NrZXQuY3BwCShyZXZpc2lvbiA5ODI4MSkKKysrIFNvdXJjZS9XZWJDb3JlL3dlYnNvY2tl
dHMvV2ViU29ja2V0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDA3LDYgKzQwNywxMSBAQCB2b2lk
IFdlYlNvY2tldDo6c2V0QmluYXJ5VHlwZShjb25zdCBTdHJpCiAgICAgcmV0dXJuOwogfQogCitj
b25zdCBBdG9taWNTdHJpbmcmIFdlYlNvY2tldDo6aW50ZXJmYWNlTmFtZSgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIGV2ZW50TmFtZXMoKS5pbnRlcmZhY2VGb3JXZWJTb2NrZXQ7Cit9CisKIFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIFdlYlNvY2tldDo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNv
bnN0CiB7CiAgICAgcmV0dXJuIEFjdGl2ZURPTU9iamVjdDo6c2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldC5oCShyZXZpc2lvbiA5
ODI4MSkKKysrIFNvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTkwLDkgKzkwLDkgQEAgcHVibGljOgogICAgIERFRklORV9BVFRSSUJVVEVfRVZF
TlRfTElTVEVORVIoY2xvc2UpOwogCiAgICAgLy8gRXZlbnRUYXJnZXQKLSAgICB2aXJ0dWFsIFdl
YlNvY2tldCogdG9XZWJTb2NrZXQoKSB7IHJldHVybiB0aGlzOyB9Ci0KKyAgICB2aXJ0dWFsIGNv
bnN0IEF0b21pY1N0cmluZyYgaW50ZXJmYWNlTmFtZSgpIGNvbnN0OwogICAgIHZpcnR1YWwgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0OworCiAg
ICAgdmlydHVhbCB2b2lkIGNvbnRleHREZXN0cm95ZWQoKTsKICAgICB2aXJ0dWFsIGJvb2wgY2Fu
U3VzcGVuZCgpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBzdXNwZW5kKFJlYXNvbkZvclN1c3Bl
bnNpb24pOwpJbmRleDogU291cmNlL1dlYkNvcmUvd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJDb250
ZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL0RlZGljYXRlZFdv
cmtlckNvbnRleHQuY3BwCShyZXZpc2lvbiA5ODI4MSkKKysrIFNvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvRGVkaWNhdGVkV29ya2VyQ29udGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDYgKzQ2
LDExIEBAIERlZGljYXRlZFdvcmtlckNvbnRleHQ6OkRlZGljYXRlZFdvcmtlckMKIHsKIH0KIAor
Y29uc3QgQXRvbWljU3RyaW5nJiBEZWRpY2F0ZWRXb3JrZXJDb250ZXh0OjppbnRlcmZhY2VOYW1l
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gZXZlbnROYW1lcygpLmludGVyZmFjZUZvckRlZGljYXRl
ZFdvcmtlckNvbnRleHQ7Cit9CisKIC8vIEZJWE1FOiByZW1vdmUgdGhpcyB3aGVuIHdlIHVwZGF0
ZSB0aGUgT2JqQyBiaW5kaW5ncyAoYnVnICMyODc3NCkuCiB2b2lkIERlZGljYXRlZFdvcmtlckNv
bnRleHQ6OnBvc3RNZXNzYWdlKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBtZXNz
YWdlLCBNZXNzYWdlUG9ydCogcG9ydCwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL0RlZGljYXRlZFdvcmtlckNvbnRleHQuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL0RlZGljYXRlZFdvcmtlckNvbnRleHQuaAkocmV2aXNp
b24gOTgyODEpCisrKyBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL0RlZGljYXRlZFdvcmtlckNvbnRl
eHQuaAkod29ya2luZyBjb3B5KQpAQCAtNTQsNyArNTQsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgICAgIHZpcnR1YWwgdm9pZCBpbXBvcnRTY3JpcHRzKGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiB1cmxzLCBFeGNlcHRpb25Db2RlJik7CiAKICAgICAgICAgLy8gRXZlbnRUYXJnZXQKLSAgICAg
ICAgdmlydHVhbCBEZWRpY2F0ZWRXb3JrZXJDb250ZXh0KiB0b0RlZGljYXRlZFdvcmtlckNvbnRl
eHQoKSB7IHJldHVybiB0aGlzOyB9CisgICAgICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5n
JiBpbnRlcmZhY2VOYW1lKCkgY29uc3Q7CisKICAgICAgICAgdm9pZCBwb3N0TWVzc2FnZShQYXNz
UmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4sIEV4Y2VwdGlvbkNvZGUmKTsKICAgICAgICAg
dm9pZCBwb3N0TWVzc2FnZShQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4sIGNvbnN0
IE1lc3NhZ2VQb3J0QXJyYXkqLCBFeGNlcHRpb25Db2RlJik7CiAgICAgICAgIC8vIEZJWE1FOiBy
ZW1vdmUgdGhpcyB3aGVuIHdlIHVwZGF0ZSB0aGUgT2JqQyBiaW5kaW5ncyAoYnVnICMyODc3NCku
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL0RlZmF1bHRTaGFyZWRXb3JrZXJSZXBvc2l0
b3J5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL0RlZmF1bHRTaGFy
ZWRXb3JrZXJSZXBvc2l0b3J5LmNwcAkocmV2aXNpb24gOTgyODEpCisrKyBTb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL0RlZmF1bHRTaGFyZWRXb3JrZXJSZXBvc2l0b3J5LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjU5LDcgKzI1OSw3IEBAIHByaXZhdGU6CiAgICAgICAgIC8vIFNpbmNlIGNsb3NlKCkg
c3RvcHMgdGhlIHRocmVhZCBldmVudCBsb29wLCB0aGlzIHNob3VsZCBub3QgZXZlciBnZXQgY2Fs
bGVkIHdoaWxlIGNsb3NpbmcuCiAgICAgICAgIEFTU0VSVCghd29ya2VyQ29udGV4dC0+aXNDbG9z
aW5nKCkpOwogICAgICAgICBBU1NFUlQod29ya2VyQ29udGV4dC0+aXNTaGFyZWRXb3JrZXJDb250
ZXh0KCkpOwotICAgICAgICB3b3JrZXJDb250ZXh0LT50b1NoYXJlZFdvcmtlckNvbnRleHQoKS0+
ZGlzcGF0Y2hFdmVudChjcmVhdGVDb25uZWN0RXZlbnQocG9ydCkpOworICAgICAgICB3b3JrZXJD
b250ZXh0LT5kaXNwYXRjaEV2ZW50KGNyZWF0ZUNvbm5lY3RFdmVudChwb3J0KSk7CiAgICAgfQog
CiAgICAgT3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbD4gbV9jaGFubmVsOwpJbmRleDogU291cmNl
L1dlYkNvcmUvd29ya2Vycy9TaGFyZWRXb3JrZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvU2hhcmVkV29ya2VyLmNwcAkocmV2aXNpb24gOTgyODEpCisrKyBTb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL1NoYXJlZFdvcmtlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcz
LDYgKzczLDExIEBAIFNoYXJlZFdvcmtlcjo6flNoYXJlZFdvcmtlcigpCiB7CiB9CiAKK2NvbnN0
IEF0b21pY1N0cmluZyYgU2hhcmVkV29ya2VyOjppbnRlcmZhY2VOYW1lKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gZXZlbnROYW1lcygpLmludGVyZmFjZUZvclNoYXJlZFdvcmtlcjsKK30KKwogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgIC8vIEVOQUJMRShTSEFSRURfV09SS0VSUykK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2hhcmVkV29ya2VyLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvd29ya2Vycy9TaGFyZWRXb3JrZXIuaAkocmV2aXNpb24gOTgyODEp
CisrKyBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL1NoYXJlZFdvcmtlci5oCSh3b3JraW5nIGNvcHkp
CkBAIC00NSw2ICs0NSw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICBNZXNzYWdl
UG9ydCogcG9ydCgpIGNvbnN0IHsgcmV0dXJuIG1fcG9ydC5nZXQoKTsgfQogCisgICAgICAgIHZp
cnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBpbnRlcmZhY2VOYW1lKCkgY29uc3Q7CisKICAgICBw
cml2YXRlOgogICAgICAgICBTaGFyZWRXb3JrZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOwog
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL1NoYXJlZFdvcmtlckNvbnRleHQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2hhcmVkV29ya2VyQ29udGV4dC5j
cHAJKHJldmlzaW9uIDk4MjgxKQorKysgU291cmNlL1dlYkNvcmUvd29ya2Vycy9TaGFyZWRXb3Jr
ZXJDb250ZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTksNiArNTksMTEgQEAgU2hhcmVkV29y
a2VyQ29udGV4dDo6flNoYXJlZFdvcmtlckNvbnRleAogewogfQogCitjb25zdCBBdG9taWNTdHJp
bmcmIFNoYXJlZFdvcmtlckNvbnRleHQ6OmludGVyZmFjZU5hbWUoKSBjb25zdAoreworICAgIHJl
dHVybiBldmVudE5hbWVzKCkuaW50ZXJmYWNlRm9yU2hhcmVkV29ya2VyQ29udGV4dDsKK30KKwog
U2hhcmVkV29ya2VyVGhyZWFkKiBTaGFyZWRXb3JrZXJDb250ZXh0Ojp0aHJlYWQoKQogewogICAg
IHJldHVybiBzdGF0aWNfY2FzdDxTaGFyZWRXb3JrZXJUaHJlYWQqPihCYXNlOjp0aHJlYWQoKSk7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL1NoYXJlZFdvcmtlckNvbnRleHQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL1NoYXJlZFdvcmtlckNvbnRleHQuaAko
cmV2aXNpb24gOTgyODEpCisrKyBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL1NoYXJlZFdvcmtlckNv
bnRleHQuaAkod29ya2luZyBjb3B5KQpAQCAtNTIsNyArNTIsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc1NoYXJlZFdvcmtlckNvbnRleHQoKSBjb25zdCB7
IHJldHVybiB0cnVlOyB9CiAKICAgICAgICAgLy8gRXZlbnRUYXJnZXQKLSAgICAgICAgdmlydHVh
bCBTaGFyZWRXb3JrZXJDb250ZXh0KiB0b1NoYXJlZFdvcmtlckNvbnRleHQoKSB7IHJldHVybiB0
aGlzOyB9CisgICAgICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBpbnRlcmZhY2VOYW1l
KCkgY29uc3Q7CiAKICAgICAgICAgLy8gU2V0dGVycy9HZXR0ZXJzIGZvciBhdHRyaWJ1dGVzIGlu
IFNoYXJlZFdvcmtlckNvbnRleHQuaWRsCiAgICAgICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRf
TElTVEVORVIoY29ubmVjdCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXIuY3BwCShyZXZp
c2lvbiA5ODI4MSkKKysrIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtODUsNiArODUsMTEgQEAgV29ya2VyOjp+V29ya2VyKCkKICAgICBtX2NvbnRl
eHRQcm94eS0+d29ya2VyT2JqZWN0RGVzdHJveWVkKCk7CiB9CiAKK2NvbnN0IEF0b21pY1N0cmlu
ZyYgV29ya2VyOjppbnRlcmZhY2VOYW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZXZlbnROYW1l
cygpLmludGVyZmFjZUZvcldvcmtlcjsKK30KKwogLy8gRklYTUU6IHJlbW92ZSB0aGlzIHdoZW4g
d2UgdXBkYXRlIHRoZSBPYmpDIGJpbmRpbmdzIChidWcgIzI4Nzc0KS4KIHZvaWQgV29ya2VyOjpw
b3N0TWVzc2FnZShQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbWVzc2FnZSwgTWVz
c2FnZVBvcnQqIHBvcnQsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewpJbmRleDogU291cmNlL1dlYkNv
cmUvd29ya2Vycy9Xb3JrZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS93b3JrZXJz
L1dvcmtlci5oCShyZXZpc2lvbiA5ODI4MSkKKysrIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29y
a2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTU0LDcgKzU0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxXb3JrZXI+IGNyZWF0ZShTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiB1cmwsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICAgICAg
dmlydHVhbCB+V29ya2VyKCk7CiAKLSAgICAgICAgdmlydHVhbCBXb3JrZXIqIHRvV29ya2VyKCkg
eyByZXR1cm4gdGhpczsgfQorICAgICAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgaW50
ZXJmYWNlTmFtZSgpIGNvbnN0OwogCiAgICAgICAgIHZvaWQgcG9zdE1lc3NhZ2UoUGFzc1JlZlB0
cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1lc3NhZ2UsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICAg
ICAgdm9pZCBwb3N0TWVzc2FnZShQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbWVz
c2FnZSwgY29uc3QgTWVzc2FnZVBvcnRBcnJheSosIEV4Y2VwdGlvbkNvZGUmKTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAkocmV2aXNpb24gOTgyODEpCisrKyBTb3Vy
Y2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTE4
LDYgKzExMTgsMTEgQEAgdm9pZCBYTUxIdHRwUmVxdWVzdDo6Y29udGV4dERlc3Ryb3llZCgpCiAg
ICAgQWN0aXZlRE9NT2JqZWN0Ojpjb250ZXh0RGVzdHJveWVkKCk7CiB9CiAKK2NvbnN0IEF0b21p
Y1N0cmluZyYgWE1MSHR0cFJlcXVlc3Q6OmludGVyZmFjZU5hbWUoKSBjb25zdAoreworICAgIHJl
dHVybiBldmVudE5hbWVzKCkuaW50ZXJmYWNlRm9yWE1MSHR0cFJlcXVlc3Q7Cit9CisKIFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIFhNTEh0dHBSZXF1ZXN0OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0
KCkgY29uc3QKIHsKICAgICByZXR1cm4gQWN0aXZlRE9NT2JqZWN0OjpzY3JpcHRFeGVjdXRpb25D
b250ZXh0KCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuaAkocmV2aXNpb24g
OTgyODEpCisrKyBTb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuaAkod29ya2luZyBj
b3B5KQpAQCAtNjksMTQgKzY5LDEzIEBAIHB1YmxpYzoKICAgICAgICAgUmVzcG9uc2VUeXBlQXJy
YXlCdWZmZXIKICAgICB9OwogCi0gICAgdmlydHVhbCBYTUxIdHRwUmVxdWVzdCogdG9YTUxIdHRw
UmVxdWVzdCgpIHsgcmV0dXJuIHRoaXM7IH0KLQogICAgIHZpcnR1YWwgdm9pZCBjb250ZXh0RGVz
dHJveWVkKCk7CiAgICAgdmlydHVhbCBib29sIGNhblN1c3BlbmQoKSBjb25zdDsKICAgICB2aXJ0
dWFsIHZvaWQgc3VzcGVuZChSZWFzb25Gb3JTdXNwZW5zaW9uKTsKICAgICB2aXJ0dWFsIHZvaWQg
cmVzdW1lKCk7CiAgICAgdmlydHVhbCB2b2lkIHN0b3AoKTsKIAorICAgIHZpcnR1YWwgY29uc3Qg
QXRvbWljU3RyaW5nJiBpbnRlcmZhY2VOYW1lKCkgY29uc3Q7CiAgICAgdmlydHVhbCBTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3Q7CiAKICAgICBj
b25zdCBLVVJMJiB1cmwoKSBjb25zdCB7IHJldHVybiBtX3VybDsgfQpJbmRleDogU291cmNlL1dl
YkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0VXBsb2FkLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3RVcGxvYWQuY3BwCShyZXZpc2lvbiA5ODI4MSkKKysr
IFNvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdFVwbG9hZC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTQxLDYgKzQxLDExIEBAIFhNTEh0dHBSZXF1ZXN0VXBsb2FkOjpYTUxIdHRwUmVxdWVz
dFVwbG8KIHsKIH0KIAorY29uc3QgQXRvbWljU3RyaW5nJiBYTUxIdHRwUmVxdWVzdFVwbG9hZDo6
aW50ZXJmYWNlTmFtZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGV2ZW50TmFtZXMoKS5pbnRlcmZh
Y2VGb3JYTUxIdHRwUmVxdWVzdFVwbG9hZDsKK30KKwogU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
WE1MSHR0cFJlcXVlc3RVcGxvYWQ6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdAogewog
ICAgIHJldHVybiBtX3htbEh0dHBSZXF1ZXN0LT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3RVcGxvYWQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3RVcGxvYWQuaAkocmV2aXNpb24g
OTgyODEpCisrKyBTb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3RVcGxvYWQuaAkod29y
a2luZyBjb3B5KQpAQCAtNTQsOCArNTQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAg
IHZvaWQgZGVyZWYoKSB7IG1feG1sSHR0cFJlcXVlc3QtPmRlcmVmKCk7IH0KICAgICAgICAgWE1M
SHR0cFJlcXVlc3QqIHhtbEh0dHBSZXF1ZXN0KCkgY29uc3QgeyByZXR1cm4gbV94bWxIdHRwUmVx
dWVzdDsgfQogCi0gICAgICAgIHZpcnR1YWwgWE1MSHR0cFJlcXVlc3RVcGxvYWQqIHRvWE1MSHR0
cFJlcXVlc3RVcGxvYWQoKSB7IHJldHVybiB0aGlzOyB9Ci0KKyAgICAgICAgdmlydHVhbCBjb25z
dCBBdG9taWNTdHJpbmcmIGludGVyZmFjZU5hbWUoKSBjb25zdDsKICAgICAgICAgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0OwogCiAgICAgICAg
IERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIoYWJvcnQpOwpJbmRleDogU291cmNlL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cJKHJldmlzaW9uIDk4MjgxKQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1
bS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNSBAQAorMjAxMS0xMC0yNCAg
QWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgorCisgICAgICAgIEV2ZW50VGFyZ2V0Lmgg
c2hvdWxkbid0IG5lZWQgdG8ga25vdyBhYm91dCBldmVyeSBmZWF0dXJlIGFuZCBpZmRlZgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzA2NTkKKworICAg
ICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICBUaGlzIGNhc3QgaXNuJ3Qg
bmVlZGVkIGJlY2F1c2UgZGlzcGF0Y2hFdmVudCBpcyBhIHZpcnR1YWwgZnVuY3Rpb24uCisKKyAg
ICAgICAgKiBzcmMvV2ViU2hhcmVkV29ya2VySW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlNoYXJlZFdvcmtlckltcGw6OmNvbm5lY3RUYXNrKToKKwogMjAxMS0xMC0yNCAgSm9zaHVhIEJl
bGwgIDxqc2JlbGxAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIEluZGV4ZWREQjogVGhyb3cgREFU
QV9FUlIgb24gaW52YWxpZCBrZXlzLCByZW1vdmUgbnVsbCBrZXkgc3VwcG9ydApJbmRleDogU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2hhcmVkV29ya2VySW1wbC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2hhcmVkV29ya2VySW1wbC5jcHAJ
KHJldmlzaW9uIDk4MjgxKQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2hhcmVk
V29ya2VySW1wbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkyLDcgKzkyLDcgQEAgdm9pZCBXZWJT
aGFyZWRXb3JrZXJJbXBsOjpjb25uZWN0VGFzayhTYwogICAgIEFTU0VSVChjb250ZXh0LT5pc1dv
cmtlckNvbnRleHQoKSk7CiAgICAgV29ya2VyQ29udGV4dCogd29ya2VyQ29udGV4dCA9IHN0YXRp
Y19jYXN0PFdvcmtlckNvbnRleHQqPihjb250ZXh0KTsKICAgICBBU1NFUlQod29ya2VyQ29udGV4
dC0+aXNTaGFyZWRXb3JrZXJDb250ZXh0KCkpOwotICAgIHdvcmtlckNvbnRleHQtPnRvU2hhcmVk
V29ya2VyQ29udGV4dCgpLT5kaXNwYXRjaEV2ZW50KGNyZWF0ZUNvbm5lY3RFdmVudChwb3J0KSk7
CisgICAgd29ya2VyQ29udGV4dC0+ZGlzcGF0Y2hFdmVudChjcmVhdGVDb25uZWN0RXZlbnQocG9y
dCkpOwogfQogCiB2b2lkIFdlYlNoYXJlZFdvcmtlckltcGw6OnN0YXJ0V29ya2VyQ29udGV4dChj
b25zdCBXZWJVUkwmIHVybCwgY29uc3QgV2ViU3RyaW5nJiBuYW1lLCBjb25zdCBXZWJTdHJpbmcm
IHVzZXJBZ2VudCwgY29uc3QgV2ViU3RyaW5nJiBzb3VyY2VDb2RlLCBsb25nIGxvbmcpCkluZGV4
OiBTb3VyY2UvY21ha2UvV2ViS2l0TWFjcm9zLmNtYWtlCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9j
bWFrZS9XZWJLaXRNYWNyb3MuY21ha2UJKHJldmlzaW9uIDk4MjgxKQorKysgU291cmNlL2NtYWtl
L1dlYktpdE1hY3Jvcy5jbWFrZQkod29ya2luZyBjb3B5KQpAQCAtMzcsMTUgKzM3LDEzIEBAIE1B
Q1JPIChHRU5FUkFURV9GT05UX05BTUVTIF9pbmZpbGUpCiBFTkRNQUNSTyAoKQogCiAKLU1BQ1JP
IChHRU5FUkFURV9FVkVOVF9GQUNUT1JZIF9pbmZpbGUpCitNQUNSTyAoR0VORVJBVEVfRVZFTlRf
RkFDVE9SWSBfaW5maWxlIF9vdXRmaWxlKQogICAgIFNFVChOQU1FU19HRU5FUkFUT1IgJHtXRUJD
T1JFX0RJUn0vZG9tL21ha2VfZXZlbnRfZmFjdG9yeS5wbCkKLSAgICBTRVQoX2FyZ3VtZW50cyAg
LS1ldmVudHMgJHtfaW5maWxlfSkKLSAgICBTRVQoX291dHB1dGZpbGVzICR7REVSSVZFRF9TT1VS
Q0VTX1dFQkNPUkVfRElSfS9FdmVudEZhY3RvcnkuY3BwKQogCiAgICAgQUREX0NVU1RPTV9DT01N
QU5EKAotICAgICAgICBPVVRQVVQgICR7X291dHB1dGZpbGVzfQorICAgICAgICBPVVRQVVQgICR7
REVSSVZFRF9TT1VSQ0VTX1dFQkNPUkVfRElSfS8ke19vdXRmaWxlfQogICAgICAgICBERVBFTkRT
ICR7TkFNRVNfR0VORVJBVE9SfSAke1NDUklQVFNfQklORElOR1N9ICR7X2luZmlsZX0KLSAgICAg
ICAgQ09NTUFORCAke1BFUkxfRVhFQ1VUQUJMRX0gLUkke1dFQkNPUkVfRElSfS9iaW5kaW5ncy9z
Y3JpcHRzICR7TkFNRVNfR0VORVJBVE9SfSAtLW91dHB1dERpciAke0RFUklWRURfU09VUkNFU19X
RUJDT1JFX0RJUn0gJHtfYXJndW1lbnRzfQorICAgICAgICBDT01NQU5EICR7UEVSTF9FWEVDVVRB
QkxFfSAtSSR7V0VCQ09SRV9ESVJ9L2JpbmRpbmdzL3NjcmlwdHMgJHtOQU1FU19HRU5FUkFUT1J9
IC0tZXZlbnRzICR7X2luZmlsZX0gLS1vdXRwdXREaXIgJHtERVJJVkVEX1NPVVJDRVNfV0VCQ09S
RV9ESVJ9CiAgICAgICAgIFZFUkJBVElNKQogRU5ETUFDUk8gKCkKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>112249</attachid>
            <date>2011-10-24 14:33:04 -0700</date>
            <delta_ts>2011-10-25 11:16:01 -0700</delta_ts>
            <desc>Microbenchmark</desc>
            <filename>bug-70659-20111024143324.patch</filename>
            <type>text/plain</type>
            <size>857</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">SW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvQmluZGluZ3MvZXZlbnQtdGFyZ2V0LXdyYXBwZXIuaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBQZXJmb3JtYW5jZVRlc3RzL0JpbmRpbmdzL2V2ZW50LXRhcmdldC13
cmFwcGVyLmh0bWwJKHJldmlzaW9uIDApCisrKyBQZXJmb3JtYW5jZVRlc3RzL0JpbmRpbmdzL2V2
ZW50LXRhcmdldC13cmFwcGVyLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjYgQEAKKzwh
RE9DVFlQRSBodG1sPgorPGJvZHk+Cis8cHJlIGlkPSJsb2ciPjwvcHJlPgorPHNjcmlwdCBzcmM9
Ii4uL1BhcnNlci9yZXNvdXJjZXMvcnVubmVyLmpzIj48L3NjcmlwdD4KKzxhIGhyZWY9IiMiPkNs
aWNrIGhlcmUgdG8gc3RhcnQ8L2E+Cis8c2NyaXB0PgordmFyIGxpbmsgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgnYScpWzBdOwordmFyIGV2dCA9IG51bGw7Cit2YXIga0l0ZXJhdG9u
c1BlclRlc3QgPSAxMDAwMDAwOworCitsaW5rLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVu
Y3Rpb24oZXZlbnQpIHsKKyAgbGluay50ZXh0Q29udGVudCA9ICcnOworICB3aW5kb3cuZXZ0ID0g
ZXZlbnQ7CisgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7CisKKyAgc3RhcnQoMjAsIGZ1bmN0aW9u
KCkgeworICAgICAgdmFyIGUgPSB3aW5kb3cuZXZ0OworICAgICAgZm9yICh2YXIgeCA9IDA7IHgg
PCBrSXRlcmF0b25zUGVyVGVzdDsgeCsrKSB7CisgICAgICAgICAgZS50YXJnZXQ7CisgICAgICB9
CisgIH0pOworCisgIHJldHVybiBmYWxzZTsKK30sIGZhbHNlKTsKKzwvc2NyaXB0PgorPC9ib2R5
Pgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>112363</attachid>
            <date>2011-10-25 11:16:17 -0700</date>
            <delta_ts>2011-10-25 13:04:07 -0700</delta_ts>
            <desc>for EWS</desc>
            <filename>bug-70659-20111025111615.patch</filename>
            <type>text/plain</type>
            <size>79280</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDk4MzU4KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTM0IEBACisyMDExLTEwLTI1ICBBZGFtIEJh
cnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CisKKyAgICAgICAgRXZlbnRUYXJnZXQuaCBzaG91bGRu
J3QgbmVlZCB0byBrbm93IGFib3V0IGV2ZXJ5IGZlYXR1cmUgYW5kIGlmZGVmCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MDY1OQorCisgICAgICAgIFJl
dmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgIFRoaXMgcGF0Y2ggZm9sbG93cyB0aGUg
YXBwcm9hY2ggb2YgRXZlbnQuaCBhbmQgaW50cm9kdWNlcyBhbgorICAgICAgICBpbnRlcmZhY2VO
YW1lIHZpcnR1YWwgZnVuY3Rpb24gdGhhdCByZXR1cm5zIHRoZSBuYW1lIG9mIHRoZSBET00KKyAg
ICAgICAgaW50ZXJmYWNlIGZvciB0aGUgY29uY3JldGUgdHlwZSBvZiB0aGUgb2JqZWN0LiAgVGhp
cyBmdW5jdGlvbiBsZXRzIHVzCisgICAgICAgIHJlbW92ZSBhIGxhcmdlIG51bWJlciBvZiBmYWtl
IGR5bmFtaWMgY2FzdHMuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBD
b2RlR2VuZXJhdG9ycy5wcmk6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAg
ICAgKiBHTlVtYWtlZmlsZS5hbToKKyAgICAgICAgKiBXZWJDb3JlLmd5cC9XZWJDb3JlLmd5cDoK
KyAgICAgICAgKiBXZWJDb3JlLmd5cC9zY3JpcHRzL2FjdGlvbl9tYWtlbmFtZXMucHk6CisgICAg
ICAgICAgICAtIFRlYWNoIGFjdGlvbl9tYWtlbmFtZXMgaG93IHRvIGhhbmRsZSB0aGUgbmV3ICJp
biIgZmlsZS4KKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS52Y3By
b2ovV2ViQ29yZS52Y3Byb2o6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRXZlbnRUYXJnZXQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6dG9KUyk6CisgICAgICAgICAgICAtIFVzZSB0aGUgbmV3IGF1dG9nZW5lcmF0
ZWQgbWFjcm8gdG8gcmVtb3ZlIGEgbGFyZ2UgYW1vdW50IG9mCisgICAgICAgICAgICAgIGZlYXR1
cmUtc3BlY2lmaWMgY29kZS4KKyAgICAgICAgKiBiaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250
cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclNjcmlwdENvbnRyb2xsZXI6Omlu
aXRTY3JpcHQpOgorICAgICAgICAqIGJpbmRpbmdzL29iamMvRE9NLm1tOgorICAgICAgICAoa2l0
KToKKyAgICAgICAgICAgIC0gVGhlIFNWR0VsZW1lbnRJbnN0YW5jZSBicmFuY2ggd2FzIG5ldmVy
IHRha2VuIHByZXZpb3VzbHkgYmVjYXVzZQorICAgICAgICAgICAgICBTVkdFbGVtZW50SW5zdGFu
Y2U6OnRvTm9kZSByZXR1cm5zIGEgbm9uLU5VTEwgdmFsdWUuIFRoaXMgY29kZQorICAgICAgICAg
ICAgICB3YXMgaW50cm9kdWNlZCBpbiBodHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC80
MjYxOCBhbmQKKyAgICAgICAgICAgICAgZG9lc24ndCBhcHBlYXIgdG8gaGF2ZSBldmVyIHdvcmtl
ZCBhcyB0aGUgYXV0aG9yIGludGVuZGVkLgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4RE9NV3Jh
cHBlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOERPTVdyYXBwZXI6OmNvbnZlcnRFdmVudFRh
cmdldFRvVjhPYmplY3QpOgorICAgICAgICAgICAgLSBVc2UgdGhlIG5ldyBhdXRvZ2VuZXJhdGVk
IG1hY3JvIHRvIHJlbW92ZSBhIGxhcmdlIGFtb3VudCBvZgorICAgICAgICAgICAgICBmZWF0dXJl
LXNwZWNpZmljIGNvZGUuCisgICAgICAgICogZG9tL0V2ZW50TmFtZXMuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RXZlbnROYW1lczo6RXZlbnROYW1lcyk6CisgICAgICAgICogZG9tL0V2ZW50TmFt
ZXMuaDoKKyAgICAgICAgKiBkb20vRXZlbnRUYXJnZXQuY3BwOgorICAgICAgICAqIGRvbS9FdmVu
dFRhcmdldC5oOgorICAgICAgICAqIGRvbS9FdmVudFRhcmdldEZhY3RvcnkuaW46IEFkZGVkLgor
ICAgICAgICAgICAgLSBBZGQgYSBuZXcgImluIiBmaWxlIHRoYXQgbGlzdHMgYWxsIHRoZSBFdmVu
dFRhcmdldHMuCisgICAgICAgICogZG9tL0xvY2FsTWVkaWFTdHJlYW0uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6TG9jYWxNZWRpYVN0cmVhbTo6aW50ZXJmYWNlTmFtZSk6CisgICAgICAgICogZG9t
L0xvY2FsTWVkaWFTdHJlYW0uaDoKKyAgICAgICAgKiBkb20vTWVkaWFTdHJlYW0uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW06OmludGVyZmFjZU5hbWUpOgorICAgICAgICAqIGRv
bS9NZWRpYVN0cmVhbS5oOgorICAgICAgICAqIGRvbS9NZXNzYWdlUG9ydC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpNZXNzYWdlUG9ydDo6aW50ZXJmYWNlTmFtZSk6CisgICAgICAgICogZG9tL01l
c3NhZ2VQb3J0Lmg6CisgICAgICAgICogZG9tL05vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Tm9kZTo6dG9Ob2RlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OmludGVyZmFjZU5hbWUpOgor
ICAgICAgICAqIGRvbS9Ob2RlLmg6CisgICAgICAgICogZG9tL21ha2VfZXZlbnRfZmFjdG9yeS5w
bDoKKyAgICAgICAgICAgIC0gR2VuZXJhbGl6ZSBtYWtlX2V2ZW50X2ZhY3RvcnkucGwgdG8gYmUg
YWJsZSB0byBnZW5lcmF0ZQorICAgICAgICAgICAgICBpbnRlcmZhY2VzIGZvciBkaWZmZXJlbnQg
bmFtZXNwYWNlcy4KKyAgICAgICAgKiBmaWxlYXBpL0ZpbGVSZWFkZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RmlsZVJlYWRlcjo6aW50ZXJmYWNlTmFtZSk6CisgICAgICAgICogZmlsZWFwaS9G
aWxlUmVhZGVyLmg6CisgICAgICAgICogZmlsZWFwaS9GaWxlV3JpdGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkZpbGVXcml0ZXI6OmludGVyZmFjZU5hbWUpOgorICAgICAgICAqIGZpbGVhcGkv
RmlsZVdyaXRlci5oOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9ET01BcHBsaWNhdGlvbkNh
Y2hlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTUFwcGxpY2F0aW9uQ2FjaGU6OmludGVyZmFj
ZU5hbWUpOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9ET01BcHBsaWNhdGlvbkNhY2hlLmg6
CisgICAgICAgICogbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Tm90aWZpY2F0aW9uOjppbnRlcmZhY2VOYW1lKToKKyAgICAgICAgKiBub3RpZmljYXRp
b25zL05vdGlmaWNhdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uOjpzY3Jp
cHRFeGVjdXRpb25Db250ZXh0KToKKyAgICAgICAgKiBwMnAvUGVlckNvbm5lY3Rpb24uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UGVlckNvbm5lY3Rpb246OmludGVyZmFjZU5hbWUpOgorICAgICAg
ICAqIHAycC9QZWVyQ29ubmVjdGlvbi5oOgorICAgICAgICAqIHBhZ2UvRE9NV2luZG93LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvdzo6aW50ZXJmYWNlTmFtZSk6CisgICAgICAgIChX
ZWJDb3JlOjpET01XaW5kb3c6OnRvRE9NV2luZG93KToKKyAgICAgICAgKiBwYWdlL0RPTVdpbmRv
dy5oOgorICAgICAgICAqIHBhZ2UvRXZlbnRTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RXZlbnRTb3VyY2U6OmludGVyZmFjZU5hbWUpOgorICAgICAgICAqIHBhZ2UvRXZlbnRTb3VyY2Uu
aDoKKyAgICAgICAgKiBzdG9yYWdlL0lEQkRhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OklEQkRhdGFiYXNlOjppbnRlcmZhY2VOYW1lKToKKyAgICAgICAgKiBzdG9yYWdlL0lEQkRhdGFi
YXNlLmg6CisgICAgICAgICogc3RvcmFnZS9JREJSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OklEQlJlcXVlc3Q6OmludGVyZmFjZU5hbWUpOgorICAgICAgICAqIHN0b3JhZ2UvSURCUmVx
dWVzdC5oOgorICAgICAgICAqIHN0b3JhZ2UvSURCVHJhbnNhY3Rpb24uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OmludGVyZmFjZU5hbWUpOgorICAgICAgICAqIHN0b3Jh
Z2UvSURCVHJhbnNhY3Rpb24uaDoKKyAgICAgICAgKiBzdG9yYWdlL0lEQlZlcnNpb25DaGFuZ2VS
ZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlZlcnNpb25DaGFuZ2VSZXF1ZXN0Ojpp
bnRlcmZhY2VOYW1lKToKKyAgICAgICAgKiBzdG9yYWdlL0lEQlZlcnNpb25DaGFuZ2VSZXF1ZXN0
Lmg6CisgICAgICAgICogc3ZnL1NWR0VsZW1lbnRJbnN0YW5jZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTVkdFbGVtZW50SW5zdGFuY2U6OmludGVyZmFjZU5hbWUpOgorICAgICAgICAqIHN2Zy9T
VkdFbGVtZW50SW5zdGFuY2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VsZW1lbnRJbnN0YW5j
ZTo6dG9Ob2RlKToKKyAgICAgICAgKiB3ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6QXVkaW9Db250ZXh0OjppbnRlcmZhY2VOYW1lKToKKyAgICAgICAgKFdlYkNv
cmU6OkF1ZGlvQ29udGV4dDo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCk6CisgICAgICAgICogd2Vi
YXVkaW8vQXVkaW9Db250ZXh0Lmg6CisgICAgICAgICogd2ViYXVkaW8vSmF2YVNjcmlwdEF1ZGlv
Tm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKYXZhU2NyaXB0QXVkaW9Ob2RlOjppbnRlcmZh
Y2VOYW1lKToKKyAgICAgICAgKiB3ZWJhdWRpby9KYXZhU2NyaXB0QXVkaW9Ob2RlLmg6CisgICAg
ICAgICogd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29j
a2V0OjppbnRlcmZhY2VOYW1lKToKKyAgICAgICAgKiB3ZWJzb2NrZXRzL1dlYlNvY2tldC5oOgor
ICAgICAgICAqIHdvcmtlcnMvRGVkaWNhdGVkV29ya2VyQ29udGV4dC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpEZWRpY2F0ZWRXb3JrZXJDb250ZXh0OjppbnRlcmZhY2VOYW1lKToKKyAgICAgICAg
KiB3b3JrZXJzL0RlZGljYXRlZFdvcmtlckNvbnRleHQuaDoKKyAgICAgICAgKiB3b3JrZXJzL0Rl
ZmF1bHRTaGFyZWRXb3JrZXJSZXBvc2l0b3J5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJl
ZFdvcmtlckNvbm5lY3RUYXNrOjpwZXJmb3JtVGFzayk6CisgICAgICAgICogd29ya2Vycy9TaGFy
ZWRXb3JrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkV29ya2VyOjppbnRlcmZhY2VO
YW1lKToKKyAgICAgICAgKiB3b3JrZXJzL1NoYXJlZFdvcmtlci5oOgorICAgICAgICAqIHdvcmtl
cnMvU2hhcmVkV29ya2VyQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRXb3Jr
ZXJDb250ZXh0OjppbnRlcmZhY2VOYW1lKToKKyAgICAgICAgKiB3b3JrZXJzL1NoYXJlZFdvcmtl
ckNvbnRleHQuaDoKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpXb3JrZXI6OmludGVyZmFjZU5hbWUpOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyLmg6
CisgICAgICAgICogeG1sL1hNTEh0dHBSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhN
TEh0dHBSZXF1ZXN0OjppbnRlcmZhY2VOYW1lKToKKyAgICAgICAgKiB4bWwvWE1MSHR0cFJlcXVl
c3QuaDoKKyAgICAgICAgKiB4bWwvWE1MSHR0cFJlcXVlc3RVcGxvYWQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6WE1MSHR0cFJlcXVlc3RVcGxvYWQ6OmludGVyZmFjZU5hbWUpOgorICAgICAgICAq
IHhtbC9YTUxIdHRwUmVxdWVzdFVwbG9hZC5oOgorCiAyMDExLTEwLTI0ICBSeW9zdWtlIE5pd2Eg
IDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIE1lcmdlIGVuZE9mTGluZSB3aXRoIGxvZ2lj
YWxFbmRPZkxpbmUgYW5kIHN0YXJ0T2ZMaW5lIHdpdGggbG9naWNhbFN0YXJ0T2ZMaW5lCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gOTgzNTgpCisrKyBTb3VyY2UvV2ViQ29yZS9D
TWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMjMxMywxMCArMjMxMywxMyBAQCBHRU5F
UkFURV9ET01fTkFNRVMoSFRNTCAke1dFQkNPUkVfRElSfS9oCiBMSVNUKEFQUEVORCBXZWJDb3Jl
X1NPVVJDRVMgJHtERVJJVkVEX1NPVVJDRVNfV0VCQ09SRV9ESVJ9L0hUTUxOYW1lcy5jcHAgJHtE
RVJJVkVEX1NPVVJDRVNfV0VCQ09SRV9ESVJ9L0hUTUxFbGVtZW50RmFjdG9yeS5jcHAgJHtERVJJ
VkVEX1NPVVJDRVNfV0VCQ09SRV9ESVJ9L0pTSFRNTEVsZW1lbnRXcmFwcGVyRmFjdG9yeS5jcHAp
CiAKIAotR0VORVJBVEVfRVZFTlRfRkFDVE9SWSgke1dFQkNPUkVfRElSfS9kb20vRXZlbnRGYWN0
b3J5LmluKQorR0VORVJBVEVfRVZFTlRfRkFDVE9SWSgke1dFQkNPUkVfRElSfS9kb20vRXZlbnRG
YWN0b3J5LmluIEV2ZW50RmFjdG9yeS5jcHApCiBMSVNUKEFQUEVORCBXZWJDb3JlX1NPVVJDRVMg
JHtERVJJVkVEX1NPVVJDRVNfV0VCQ09SRV9ESVJ9L0V2ZW50RmFjdG9yeS5jcHApCiAKIAorR0VO
RVJBVEVfRVZFTlRfRkFDVE9SWSgke1dFQkNPUkVfRElSfS9kb20vRXZlbnRUYXJnZXRGYWN0b3J5
LmluIEV2ZW50VGFyZ2V0SW50ZXJmYWNlcy5oKQorCisKIEdFTkVSQVRFX0ZPTlRfTkFNRVMoJHtX
RUJDT1JFX0RJUn0vY3NzL1dlYktpdEZvbnRGYW1pbHlOYW1lcy5pbikKIExJU1QoQVBQRU5EIFdl
YkNvcmVfU09VUkNFUyAke0RFUklWRURfU09VUkNFU19XRUJDT1JFX0RJUn0vV2ViS2l0Rm9udEZh
bWlseU5hbWVzLmNwcCkKIApJbmRleDogU291cmNlL1dlYkNvcmUvQ29kZUdlbmVyYXRvcnMucHJp
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NvZGVHZW5lcmF0b3JzLnByaQkocmV2aXNp
b24gOTgzNTgpCisrKyBTb3VyY2UvV2ViQ29yZS9Db2RlR2VuZXJhdG9ycy5wcmkJKHdvcmtpbmcg
Y29weSkKQEAgLTM0LDYgKzM0LDggQEAgSFRNTF9FTlRJVElFUyA9ICQkUFdEL2h0bWwvcGFyc2Vy
L0hUTUxFbgogCiBFVkVOVF9GQUNUT1JZID0gJCRQV0QvZG9tL0V2ZW50RmFjdG9yeS5pbgogCitF
VkVOVF9UQVJHRVRfRkFDVE9SWSA9ICQkUFdEL2RvbS9FdmVudFRhcmdldEZhY3RvcnkuaW4KKwog
Q09MT1JEQVRBX0dQRVJGID0gJCRQV0QvcGxhdGZvcm0vQ29sb3JEYXRhLmdwZXJmCiAKIFdBTERP
Q1NTUFJPUFMgPSAkJFBXRC9jc3MvQ1NTUHJvcGVydHlOYW1lcy5pbgpAQCAtNzYwLDYgKzc2Miwx
NCBAQCBldmVudGZhY3RvcnkuY29tbWFuZHMgPSBwZXJsIC1JJCRQV0QvYmluCiBldmVudGZhY3Rv
cnkuZGVwZW5kcyA9ICQkUFdEL2RvbS9tYWtlX2V2ZW50X2ZhY3RvcnkucGwgJCRFVkVOVF9GQUNU
T1JZCiBhZGRFeHRyYUNvbXBpbGVyKGV2ZW50ZmFjdG9yeSkKIAorIyBHRU5FUkFUT1IgNS1GOgor
ZXZlbnR0YXJnZXRmYWN0b3J5Lm91dHB1dCA9ICQke1dDX0dFTkVSQVRFRF9TT1VSQ0VTX0RJUn0v
RXZlbnRUYXJnZXRJbnRlcmZhY2VzLmgKK2V2ZW50dGFyZ2V0ZmFjdG9yeS5pbnB1dCA9IEVWRU5U
X1RBUkdFVF9GQUNUT1JZCitldmVudHRhcmdldGZhY3Rvcnkud2tTY3JpcHQgPSAkJFBXRC9kb20v
bWFrZV9ldmVudF9mYWN0b3J5LnBsCitldmVudHRhcmdldGZhY3RvcnkuY29tbWFuZHMgPSBwZXJs
IC1JJCRQV0QvYmluZGluZ3Mvc2NyaXB0cyAkJGV2ZW50ZmFjdG9yeS53a1NjcmlwdCAtLWV2ZW50
cyAkJEVWRU5UX1RBUkdFVF9GQUNUT1JZIC0tb3V0cHV0RGlyICQkV0NfR0VORVJBVEVEX1NPVVJD
RVNfRElSCitldmVudHRhcmdldGZhY3RvcnkuZGVwZW5kcyA9ICQkUFdEL2RvbS9tYWtlX2V2ZW50
X2ZhY3RvcnkucGwgJCRFVkVOVF9UQVJHRVRfRkFDVE9SWQorYWRkRXh0cmFDb21waWxlcihldmVu
dHRhcmdldGZhY3RvcnkpCisKICMgR0VORVJBVE9SIDgtQToKIGVudGl0aWVzLm91dHB1dCA9ICQk
e1dDX0dFTkVSQVRFRF9TT1VSQ0VTX0RJUn0vSFRNTEVudGl0eVRhYmxlLmNwcAogZW50aXRpZXMu
aW5wdXQgPSBIVE1MX0VOVElUSUVTCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNl
cy5tYWtlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UJ
KHJldmlzaW9uIDk4MzU4KQorKysgU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQko
d29ya2luZyBjb3B5KQpAQCAtNTg3LDYgKzU4Nyw3IEBAIGFsbCA6IFwKICAgICBDU1NWYWx1ZUtl
eXdvcmRzLmggXAogICAgIENvbG9yRGF0YS5jcHAgXAogICAgIEV2ZW50RmFjdG9yeS5jcHAgXAor
ICAgIEV2ZW50VGFyZ2V0SW50ZXJmYWNlcy5oIFwKICAgICBIVE1MRWxlbWVudEZhY3RvcnkuY3Bw
IFwKICAgICBIVE1MRW50aXR5VGFibGUuY3BwIFwKICAgICBIVE1MTmFtZXMuY3BwIFwKQEAgLTg0
NywxMSArODQ4LDE0IEBAIFhMaW5rTmFtZXMuY3BwIDogZG9tL21ha2VfbmFtZXMucGwgc3ZnL3gK
IAogIyAtLS0tLS0tLQogIAotIyBSZWdpc3RlciBldmVudCBjb25zdHJ1Y3RvcnMKKyMgUmVnaXN0
ZXIgZXZlbnQgY29uc3RydWN0b3JzIGFuZCB0YXJnZXRzCiAKLUV2ZW50RmFjdG9yeS5jcHAgOiBk
b20vbWFrZV9ldmVudF9mYWN0b3J5LnBsIGRvbS9FdmVudEZhY3RvcnkuaW4KK0V2ZW50RmFjdG9y
eS5jcHAgRXZlbnRIZWFkZXJzLmggRXZlbnRJbnRlcmZhY2VzLmggOiBkb20vbWFrZV9ldmVudF9m
YWN0b3J5LnBsIGRvbS9FdmVudEZhY3RvcnkuaW4KIAlwZXJsIC1JICQoV2ViQ29yZSkvYmluZGlu
Z3Mvc2NyaXB0cyAkPCAtLWV2ZW50cyAkKFdlYkNvcmUpL2RvbS9FdmVudEZhY3RvcnkuaW4KIAor
RXZlbnRUYXJnZXRIZWFkZXJzLmggRXZlbnRUYXJnZXRJbnRlcmZhY2VzLmggOiBkb20vbWFrZV9l
dmVudF9mYWN0b3J5LnBsIGRvbS9FdmVudFRhcmdldEZhY3RvcnkuaW4KKwlwZXJsIC1JICQoV2Vi
Q29yZSkvYmluZGluZ3Mvc2NyaXB0cyAkPCAtLWV2ZW50cyAkKFdlYkNvcmUpL2RvbS9FdmVudFRh
cmdldEZhY3RvcnkuaW4KKwogIyAtLS0tLS0tLQogIAogIyBNYXRoTUwgdGFnIGFuZCBhdHRyaWJ1
dGUgbmFtZXMsIGFuZCBlbGVtZW50IGZhY3RvcnkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0dOVW1h
a2VmaWxlLmFtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCShy
ZXZpc2lvbiA5ODM1OCkKKysrIFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCSh3b3JraW5n
IGNvcHkpCkBAIC02ODQsNiArNjg0LDkgQEAgRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9YTUxOYW1l
cy5jcHAgRGVyaQogRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9FdmVudEZhY3RvcnkuY3BwIERlcml2
ZWRTb3VyY2VzL1dlYkNvcmUvRXZlbnRIZWFkZXJzLmggRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9F
dmVudEludGVyZmFjZXMuaDogJChXZWJDb3JlKS9kb20vbWFrZV9ldmVudF9mYWN0b3J5LnBsICQo
V2ViQ29yZSkvZG9tL0V2ZW50RmFjdG9yeS5pbgogCSQoQU1fVl9HRU4pJChQRVJMKSAtSSQoV2Vi
Q29yZSkvYmluZGluZ3Mvc2NyaXB0cyAkPCAtLWV2ZW50cyAkKFdlYkNvcmUpL2RvbS9FdmVudEZh
Y3RvcnkuaW4gLS1vdXRwdXREaXIgIiQoR0VOU09VUkNFU19XRUJDT1JFKSIKIAorRGVyaXZlZFNv
dXJjZXMvV2ViQ29yZS9FdmVudFRhcmdldEhlYWRlcnMuaCBEZXJpdmVkU291cmNlcy9XZWJDb3Jl
L0V2ZW50VGFyZ2V0SW50ZXJmYWNlcy5oOiAkKFdlYkNvcmUpL2RvbS9tYWtlX2V2ZW50X2ZhY3Rv
cnkucGwgJChXZWJDb3JlKS9kb20vRXZlbnRUYXJnZXRGYWN0b3J5LmluCisJJChBTV9WX0dFTikk
KFBFUkwpIC1JJChXZWJDb3JlKS9iaW5kaW5ncy9zY3JpcHRzICQ8IC0tZXZlbnRzICQoV2ViQ29y
ZSkvZG9tL0V2ZW50VGFyZ2V0RmFjdG9yeS5pbiAtLW91dHB1dERpciAiJChHRU5TT1VSQ0VTX1dF
QkNPUkUpIgorCiAjIEFsbCBXZWIgSW5zcGVjdG9yIGdlbmVyYXRlZCBmaWxlcyBhcmUgY3JlYXRl
ZCB3aXRoIHRoaXMgb25lIGNhbGwgdG8gQ29kZUdlbmVyYXRvckluc3BlY3Rvci5weQogRGVyaXZl
ZFNvdXJjZXMvV2ViQ29yZS9JbnNwZWN0b3JQcm90b2NvbFZlcnNpb24uaCA6ICQoV2ViQ29yZSkv
aW5zcGVjdG9yL0luc3BlY3Rvci5qc29uICQoV2ViQ29yZSkvaW5zcGVjdG9yL2dlbmVyYXRlLWlu
c3BlY3Rvci1wcm90b2NvbC12ZXJzaW9uCiAJJChQWVRIT04pICQoV2ViQ29yZSkvaW5zcGVjdG9y
L2dlbmVyYXRlLWluc3BlY3Rvci1wcm90b2NvbC12ZXJzaW9uIC1vICQoR0VOU09VUkNFU19XRUJD
T1JFKS9JbnNwZWN0b3JQcm90b2NvbFZlcnNpb24uaCAkKFdlYkNvcmUpL2luc3BlY3Rvci9JbnNw
ZWN0b3IuanNvbgpJbmRleDogU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCShyZXZpc2lvbiA5
ODM1OCkKKysrIFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHdvcmtpbmcgY29w
eSkKQEAgLTEyLDYgKzEyLDggQEAgd2ViY29yZV9idWlsdF9zb3VyY2VzICs9IFwKIAlEZXJpdmVk
U291cmNlcy9XZWJDb3JlL0V2ZW50RmFjdG9yeS5jcHAgXAogCURlcml2ZWRTb3VyY2VzL1dlYkNv
cmUvRXZlbnRIZWFkZXJzLmggXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvRXZlbnRJbnRlcmZh
Y2VzLmggXAorCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvRXZlbnRUYXJnZXRIZWFkZXJzLmggXAor
CURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvRXZlbnRUYXJnZXRJbnRlcmZhY2VzLmggXAogCURlcml2
ZWRTb3VyY2VzL1dlYkNvcmUvSFRNTEVsZW1lbnRGYWN0b3J5LmNwcCBcCiAJRGVyaXZlZFNvdXJj
ZXMvV2ViQ29yZS9IVE1MRWxlbWVudEZhY3RvcnkuaCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29y
ZS9IVE1MRW50aXR5VGFibGUuY3BwIFwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lw
aQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkJKHJldmlzaW9uIDk4
MzU4KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCSh3b3JraW5nIGNvcHkpCkBAIC03
MDQ5LDYgKzcwNDksMTAgQEAKICAgICAgICAgICAgICc8KFBST0RVQ1RfRElSKS9EZXJpdmVkU291
cmNlcy9XZWJDb3JlL0RlYnVnZ2VyU2NyaXB0U291cmNlLmgnLAogICAgICAgICAgICAgJzwoUFJP
RFVDVF9ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvRG9jVHlwZVN0cmluZ3MuY3BwJywKICAg
ICAgICAgICAgICc8KFBST0RVQ1RfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0V2ZW50RmFj
dG9yeS5jcHAnLAorICAgICAgICAgICAgJzwoUFJPRFVDVF9ESVIpL0Rlcml2ZWRTb3VyY2VzL1dl
YkNvcmUvRXZlbnRIZWFkZXJzLmgnLAorICAgICAgICAgICAgJzwoUFJPRFVDVF9ESVIpL0Rlcml2
ZWRTb3VyY2VzL1dlYkNvcmUvRXZlbnRJbnRlcmZhY2VzLmgnLAorICAgICAgICAgICAgJzwoUFJP
RFVDVF9ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvRXZlbnRUYXJnZXRIZWFkZXJzLmgnLAor
ICAgICAgICAgICAgJzwoUFJPRFVDVF9ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvRXZlbnRU
YXJnZXRJbnRlcmZhY2VzLmgnLAogICAgICAgICAgICAgJzwoUFJPRFVDVF9ESVIpL0Rlcml2ZWRT
b3VyY2VzL1dlYkNvcmUvSFRNTEVsZW1lbnRGYWN0b3J5LmNwcCcsCiAgICAgICAgICAgICAnPChQ
Uk9EVUNUX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9IVE1MRWxlbWVudEZhY3RvcnkuaCcs
CiAgICAgICAgICAgICAnPChQUk9EVUNUX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9IVE1M
RW50aXR5VGFibGUuY3BwJywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwL1dlYkNv
cmUuZ3lwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwL1dlYkNvcmUu
Z3lwCShyZXZpc2lvbiA5ODM1OCkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwL1dlYkNv
cmUuZ3lwCSh3b3JraW5nIGNvcHkpCkBAIC02NzgsNiArNjc4LDI0IEBACiAgICAgICAgICAgXSwK
ICAgICAgICAgfSwKICAgICAgICAgeworICAgICAgICAgICdhY3Rpb25fbmFtZSc6ICdFdmVudFRh
cmdldEZhY3RvcnknLAorICAgICAgICAgICdpbnB1dHMnOiBbCisgICAgICAgICAgICAnLi4vZG9t
L21ha2VfZXZlbnRfZmFjdG9yeS5wbCcsCisgICAgICAgICAgICAnLi4vZG9tL0V2ZW50VGFyZ2V0
RmFjdG9yeS5pbicsCisgICAgICAgICAgXSwKKyAgICAgICAgICAnb3V0cHV0cyc6IFsKKyAgICAg
ICAgICAgICc8KFNIQVJFRF9JTlRFUk1FRElBVEVfRElSKS93ZWJraXQvRXZlbnRUYXJnZXRIZWFk
ZXJzLmgnLAorICAgICAgICAgICAgJzwoU0hBUkVEX0lOVEVSTUVESUFURV9ESVIpL3dlYmtpdC9F
dmVudFRhcmdldEludGVyZmFjZXMuaCcsCisgICAgICAgICAgXSwKKyAgICAgICAgICAnYWN0aW9u
JzogWworICAgICAgICAgICAgJ3B5dGhvbicsCisgICAgICAgICAgICAnc2NyaXB0cy9hY3Rpb25f
bWFrZW5hbWVzLnB5JywKKyAgICAgICAgICAgICc8QChfb3V0cHV0cyknLAorICAgICAgICAgICAg
Jy0tJywKKyAgICAgICAgICAgICc8QChfaW5wdXRzKScsCisgICAgICAgICAgXSwKKyAgICAgICAg
fSwKKyAgICAgICAgewogICAgICAgICAgICdhY3Rpb25fbmFtZSc6ICdNYXRoTUxOYW1lcycsCiAg
ICAgICAgICAgJ2lucHV0cyc6IFsKICAgICAgICAgICAgICcuLi9kb20vbWFrZV9uYW1lcy5wbCcs
CkBAIC05OTQsNiArMTAxMiwxMCBAQAogICAgICAgICAnPChTSEFSRURfSU5URVJNRURJQVRFX0RJ
Uikvd2Via2l0L0hUTUxFbGVtZW50RmFjdG9yeS5jcHAnLAogICAgICAgICAnPChTSEFSRURfSU5U
RVJNRURJQVRFX0RJUikvd2Via2l0L0hUTUxOYW1lcy5jcHAnLAogICAgICAgICAnPChTSEFSRURf
SU5URVJNRURJQVRFX0RJUikvd2Via2l0L0V2ZW50RmFjdG9yeS5jcHAnLAorICAgICAgICAnPChT
SEFSRURfSU5URVJNRURJQVRFX0RJUikvd2Via2l0L0V2ZW50SGVhZGVycy5oJywKKyAgICAgICAg
JzwoU0hBUkVEX0lOVEVSTUVESUFURV9ESVIpL3dlYmtpdC9FdmVudEludGVyZmFjZXMuaCcsCisg
ICAgICAgICc8KFNIQVJFRF9JTlRFUk1FRElBVEVfRElSKS93ZWJraXQvRXZlbnRUYXJnZXRIZWFk
ZXJzLmgnLAorICAgICAgICAnPChTSEFSRURfSU5URVJNRURJQVRFX0RJUikvd2Via2l0L0V2ZW50
VGFyZ2V0SW50ZXJmYWNlcy5oJywKICAgICAgICAgJzwoU0hBUkVEX0lOVEVSTUVESUFURV9ESVIp
L3dlYmtpdC9Vc2VyQWdlbnRTdHlsZVNoZWV0c0RhdGEuY3BwJywKICAgICAgICAgJzwoU0hBUkVE
X0lOVEVSTUVESUFURV9ESVIpL3dlYmtpdC9WOEhUTUxFbGVtZW50V3JhcHBlckZhY3RvcnkuY3Bw
JywKICAgICAgICAgJzwoU0hBUkVEX0lOVEVSTUVESUFURV9ESVIpL3dlYmtpdC9YTGlua05hbWVz
LmNwcCcsCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cC9zY3JpcHRzL2FjdGlvbl9t
YWtlbmFtZXMucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXAvc2Ny
aXB0cy9hY3Rpb25fbWFrZW5hbWVzLnB5CShyZXZpc2lvbiA5ODM1OCkKKysrIFNvdXJjZS9XZWJD
b3JlL1dlYkNvcmUuZ3lwL3NjcmlwdHMvYWN0aW9uX21ha2VuYW1lcy5weQkod29ya2luZyBjb3B5
KQpAQCAtMTI5LDcgKzEyOSw3IEBAIGRlZiBtYWluKGFyZ3MpOgogICAgICAgICAgICAgIG9yIGlu
cHV0QmFzZW5hbWUuZW5kc3dpdGgoJ2F0dHJzLmluJyk6CiAgICAgICAgICAgICBhc3NlcnQgYXR0
cklucHV0ID09IE5vbmUKICAgICAgICAgICAgIGF0dHJJbnB1dCA9IGlucHV0QWJzUG9zaXgKLSAg
ICAgICAgZWxpZiBpbnB1dEJhc2VuYW1lLmVuZHN3aXRoKCdFdmVudEZhY3RvcnkuaW4nKToKKyAg
ICAgICAgZWxpZiBpbnB1dEJhc2VuYW1lLmVuZHN3aXRoKCdFdmVudEZhY3RvcnkuaW4nKSBvciBp
bnB1dEJhc2VuYW1lLmVuZHN3aXRoKCdFdmVudFRhcmdldEZhY3RvcnkuaW4nKToKICAgICAgICAg
ICAgIGV2ZW50c0lucHV0ID0gaW5wdXRBYnNQb3NpeAogICAgICAgICBlbGlmIGlucHV0QmFzZW5h
bWUuZW5kc3dpdGgoJ05hbWVzLmluJyk6CiAgICAgICAgICAgICBvcHRpb25zLmFwcGVuZChpbnB1
dEFic1Bvc2l4KQpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52
Y3Byb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29y
ZS52Y3Byb2oJKHJldmlzaW9uIDk4MzU4KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3By
b2ovV2ViQ29yZS52Y3Byb2oJKHdvcmtpbmcgY29weSkKQEAgLTU1NCw2ICs1NTQsMTQgQEAKIAkJ
CQk+CiAJCQk8L0ZpbGU+CiAJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iJChDb25maWd1cmF0
aW9uQnVpbGREaXIpXG9ialwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xFdmVudFRhcmdl
dEhlYWRlcnMuaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0
aD0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9ialwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291
cmNlc1xFdmVudFRhcmdldEludGVyZmFjZXMuaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8Rmls
ZQogCQkJCVJlbGF0aXZlUGF0aD0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9ialwkKFByb2pl
Y3ROYW1lKVxEZXJpdmVkU291cmNlc1xIVE1MRWxlbWVudEZhY3RvcnkuaCIKIAkJCQk+CiAJCQk8
L0ZpbGU+CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCShyZXZpc2lvbiA5ODM1OCkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMzI3MCw2ICszMjcw
LDggQEAKIAkJOTc4QUQ2NzUxNDEzMEE4RDAwQzdDQUUzIC8qIEhUTUxTcGFuRWxlbWVudC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTc4QUQ2NzIxNDEz
MEE4RDAwQzdDQUUzIC8qIEhUTUxTcGFuRWxlbWVudC5oICovOyB9OwogCQk5NzlGNDNEMzEwNzVF
NDRBMDAwMEY4M0IgLyogTmF2aWdhdGlvblNjaGVkdWxlci5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NzlGNDNEMTEwNzVFNDRBMDAwMEY4M0IgLyog
TmF2aWdhdGlvblNjaGVkdWxlci5jcHAgKi87IH07CiAJCTk3OUY0M0Q0MTA3NUU0NEEwMDAwRjgz
QiAvKiBOYXZpZ2F0aW9uU2NoZWR1bGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA5NzlGNDNEMjEwNzVFNDRBMDAwMEY4M0IgLyogTmF2aWdhdGlvblNj
aGVkdWxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CisJCTk3QUEzQ0E1MTQ1MjM3Q0MwMDNFMURBNiAvKiBFdmVudFRhcmdldEhlYWRlcnMuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3QUEzQ0EzMTQ1MjM3
Q0MwMDNFMURBNiAvKiBFdmVudFRhcmdldEhlYWRlcnMuaCAqLzsgfTsKKwkJOTdBQTNDQTYxNDUy
MzdDQzAwM0UxREE2IC8qIEV2ZW50VGFyZ2V0SW50ZXJmYWNlcy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTdBQTNDQTQxNDUyMzdDQzAwM0UxREE2IC8q
IEV2ZW50VGFyZ2V0SW50ZXJmYWNlcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTk3QjFGMDJFMTNCMDI1Q0EwMEY1MTAzRiAvKiBTaGFyZWRCdWZm
ZXJDaHVua1JlYWRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAzNzU2OUUwMDEzQUYxNzJDMDBDREJBOEUgLyogU2hhcmVkQnVmZmVyQ2h1bmtSZWFk
ZXIuY3BwICovOyB9OwogCQk5N0IxRjAyRjEzQjAyNUQyMDBGNTEwM0YgLyogU2hhcmVkQnVmZmVy
Q2h1bmtSZWFkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDM3NTY5RTAyMTNBRjE3MkMwMENEQkE4RSAvKiBTaGFyZWRCdWZmZXJDaHVua1JlYWRlci5o
ICovOyB9OwogCQk5N0JDODQ4MzEyMzZGRDkzMDAwQzYxNjEgLyogVGV4dERvY3VtZW50UGFyc2Vy
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3QkM4
NDgxMTIzNkZEOTMwMDBDNjE2MSAvKiBUZXh0RG9jdW1lbnRQYXJzZXIuY3BwICovOyB9OwpAQCAt
MTA0MDIsNiArMTA0MDQsOCBAQAogCQk5NzhBRDY3MzE0MTMwQThEMDBDN0NBRTMgLyogSFRNTFNw
YW5FbGVtZW50LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBIVE1MU3BhbkVsZW1lbnQuaWRs
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5NzlGNDNEMTEwNzVFNDRBMDAwMEY4M0Ig
LyogTmF2aWdhdGlvblNjaGVkdWxlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBOYXZpZ2F0aW9uU2NoZWR1bGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJOTc5RjQzRDIxMDc1RTQ0QTAwMDBGODNCIC8qIE5hdmlnYXRpb25TY2hlZHVsZXIuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTmF2aWdhdGlvblNjaGVkdWxlci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5N0FBM0NBMzE0NTIzN0NDMDAzRTFEQTYgLyog
RXZlbnRUYXJnZXRIZWFkZXJzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEV2
ZW50VGFyZ2V0SGVhZGVycy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5N0FBM0NB
NDE0NTIzN0NDMDAzRTFEQTYgLyogRXZlbnRUYXJnZXRJbnRlcmZhY2VzLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEV2ZW50VGFyZ2V0SW50ZXJmYWNlcy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk5N0JDODQ4MTEyMzZGRDkzMDAwQzYxNjEgLyogVGV4dERvY3Vt
ZW50UGFyc2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFRleHRE
b2N1bWVudFBhcnNlci5jcHA7IHBhdGggPSBwYXJzZXIvVGV4dERvY3VtZW50UGFyc2VyLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTdCQzg0ODIxMjM2RkQ5MzAwMEM2MTYxIC8q
IFRleHREb2N1bWVudFBhcnNlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBU
ZXh0RG9jdW1lbnRQYXJzZXIuaDsgcGF0aCA9IHBhcnNlci9UZXh0RG9jdW1lbnRQYXJzZXIuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTdCQzg0OUExMjM3MEE0QjAwMEM2MTYxIC8q
IEhUTUxJbnB1dFN0cmVhbS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBIVE1M
SW5wdXRTdHJlYW0uaDsgcGF0aCA9IHBhcnNlci9IVE1MSW5wdXRTdHJlYW0uaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE1MTQ1LDYgKzE1MTQ5LDggQEAKIAkJCQk5NzY2NTA0RTE0
NEZCRkZFMDBGNkJCNTEgLyogRXZlbnRGYWN0b3J5LmNwcCAqLywKIAkJCQk5NzBCNzJBNTE0NTAw
OEVCMDBGMDBBMzcgLyogRXZlbnRIZWFkZXJzLmggKi8sCiAJCQkJOTcwQjcyODkxNDRGRkFDNjAw
RjAwQTM3IC8qIEV2ZW50SW50ZXJmYWNlcy5oICovLAorCQkJCTk3QUEzQ0EzMTQ1MjM3Q0MwMDNF
MURBNiAvKiBFdmVudFRhcmdldEhlYWRlcnMuaCAqLywKKwkJCQk5N0FBM0NBNDE0NTIzN0NDMDAz
RTFEQTYgLyogRXZlbnRUYXJnZXRJbnRlcmZhY2VzLmggKi8sCiAJCQkJQTE3QzgxMjAwRjJBNUNG
NzAwNURBQUVCIC8qIEhUTUxFbGVtZW50RmFjdG9yeS5jcHAgKi8sCiAJCQkJQTE3QzgxMjEwRjJB
NUNGNzAwNURBQUVCIC8qIEhUTUxFbGVtZW50RmFjdG9yeS5oICovLAogCQkJCUE4QkMwNDkxMTIx
NEY2OTYwMEI1RjEyMiAvKiBIVE1MRW50aXR5VGFibGUuY3BwICovLApAQCAtMjQ0NzksNiArMjQ0
ODUsOCBAQAogCQkJCTk3NjY1MDEzMTQ0RkFBNDIwMEY2QkI1MSAvKiBFdmVudEZhY3RvcnkuaCBp
biBIZWFkZXJzICovLAogCQkJCUEwRUUwREY2MTQ0RjgyNTUwMEY4MEIwRCAvKiBXZWJHTERlYnVn
UmVuZGVyZXJJbmZvLmggaW4gSGVhZGVycyAqLywKIAkJCQlBMEVFMERGODE0NEY4MjU1MDBGODBC
MEQgLyogV2ViR0xEZWJ1Z1NoYWRlcnMuaCBpbiBIZWFkZXJzICovLAorCQkJCTk3QUEzQ0E1MTQ1
MjM3Q0MwMDNFMURBNiAvKiBFdmVudFRhcmdldEhlYWRlcnMuaCBpbiBIZWFkZXJzICovLAorCQkJ
CTk3QUEzQ0E2MTQ1MjM3Q0MwMDNFMURBNiAvKiBFdmVudFRhcmdldEludGVyZmFjZXMuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTk3MEI3MjhBMTQ0RkZBQzYwMEYwMEEzNyAvKiBFdmVudEludGVyZmFj
ZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTk3MEI3MkE2MTQ1MDA4RUIwMEYwMEEzNyAvKiBFdmVu
dEhlYWRlcnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTlCM0E4ODcyMTQ1NjMyRjkwMDNBRThGNSAv
KiBET01ET01TZXR0YWJsZVRva2VuTGlzdC5oIGluIEhlYWRlcnMgKi8sCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50VGFyZ2V0LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50VGFyZ2V0LmNwcAkocmV2aXNpb24gOTgzNTgp
CisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50VGFyZ2V0LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjgsNiArMjgsOCBAQAogCiAjaW5jbHVkZSAiRE9NV2luZG93LmgiCiAjaW5j
bHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJFdmVudFRhcmdldEhlYWRlcnMuaCIKKyNpbmNs
dWRlICJFdmVudFRhcmdldEludGVyZmFjZXMuaCIKICNpbmNsdWRlICJKU0RPTVdpbmRvdy5oIgog
I2luY2x1ZGUgIkpTRE9NV2luZG93U2hlbGwuaCIKICNpbmNsdWRlICJKU0V2ZW50TGlzdGVuZXIu
aCIKQEAgLTEwNSw5NCArMTA3LDI4IEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAorI2RlZmluZSBUUllfVE9fV1JBUF9XSVRIX0lOVEVSRkFDRShpbnRlcmZh
Y2VOYW1lKSBcCisgICAgaWYgKGV2ZW50TmFtZXMoKS5pbnRlcmZhY2VGb3IjI2ludGVyZmFjZU5h
bWUgPT0gZGVzaXJlZEludGVyZmFjZSkgXAorICAgICAgICByZXR1cm4gdG9KUyhleGVjLCBnbG9i
YWxPYmplY3QsIHN0YXRpY19jYXN0PGludGVyZmFjZU5hbWUqPih0YXJnZXQpKTsKKwogSlNWYWx1
ZSB0b0pTKEV4ZWNTdGF0ZSogZXhlYywgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
RXZlbnRUYXJnZXQqIHRhcmdldCkKIHsKICAgICBpZiAoIXRhcmdldCkKICAgICAgICAgcmV0dXJu
IGpzTnVsbCgpOwogCi0gICAgaWYgKEV2ZW50U291cmNlKiBldmVudFNvdXJjZSA9IHRhcmdldC0+
dG9FdmVudFNvdXJjZSgpKQotICAgICAgICByZXR1cm4gdG9KUyhleGVjLCBnbG9iYWxPYmplY3Qs
IGV2ZW50U291cmNlKTsKLQotI2lmIEVOQUJMRShTVkcpCi0gICAgLy8gU1ZHRWxlbWVudEluc3Rh
bmNlIHN1cHBvcnRzIGJvdGggdG9TVkdFbGVtZW50SW5zdGFuY2UgYW5kIHRvTm9kZSBzaW5jZSBz
byBtdWNoIG1vdXNlIGhhbmRsaW5nIGNvZGUgZGVwZW5kcyBvbiB0b05vZGUgcmV0dXJuaW5nIGEg
dmFsaWQgbm9kZS4KLSAgICBpZiAoU1ZHRWxlbWVudEluc3RhbmNlKiBpbnN0YW5jZSA9IHRhcmdl
dC0+dG9TVkdFbGVtZW50SW5zdGFuY2UoKSkKLSAgICAgICAgcmV0dXJuIHRvSlMoZXhlYywgZ2xv
YmFsT2JqZWN0LCBpbnN0YW5jZSk7Ci0jZW5kaWYKLSAgICAKLSAgICBpZiAoTm9kZSogbm9kZSA9
IHRhcmdldC0+dG9Ob2RlKCkpCi0gICAgICAgIHJldHVybiB0b0pTKGV4ZWMsIGdsb2JhbE9iamVj
dCwgbm9kZSk7Ci0KLSAgICBpZiAoRE9NV2luZG93KiBkb21XaW5kb3cgPSB0YXJnZXQtPnRvRE9N
V2luZG93KCkpCi0gICAgICAgIHJldHVybiB0b0pTKGV4ZWMsIGdsb2JhbE9iamVjdCwgZG9tV2lu
ZG93KTsKLQotICAgIGlmIChYTUxIdHRwUmVxdWVzdCogeGhyID0gdGFyZ2V0LT50b1hNTEh0dHBS
ZXF1ZXN0KCkpCi0gICAgICAgIHJldHVybiB0b0pTKGV4ZWMsIGdsb2JhbE9iamVjdCwgeGhyKTsK
LQotICAgIGlmIChYTUxIdHRwUmVxdWVzdFVwbG9hZCogdXBsb2FkID0gdGFyZ2V0LT50b1hNTEh0
dHBSZXF1ZXN0VXBsb2FkKCkpCi0gICAgICAgIHJldHVybiB0b0pTKGV4ZWMsIGdsb2JhbE9iamVj
dCwgdXBsb2FkKTsKLQotICAgIGlmIChET01BcHBsaWNhdGlvbkNhY2hlKiBjYWNoZSA9IHRhcmdl
dC0+dG9ET01BcHBsaWNhdGlvbkNhY2hlKCkpCi0gICAgICAgIHJldHVybiB0b0pTKGV4ZWMsIGds
b2JhbE9iamVjdCwgY2FjaGUpOwotCi0gICAgaWYgKE1lc3NhZ2VQb3J0KiBtZXNzYWdlUG9ydCA9
IHRhcmdldC0+dG9NZXNzYWdlUG9ydCgpKQotICAgICAgICByZXR1cm4gdG9KUyhleGVjLCBnbG9i
YWxPYmplY3QsIG1lc3NhZ2VQb3J0KTsKKyAgICBBdG9taWNTdHJpbmcgZGVzaXJlZEludGVyZmFj
ZSA9IHRhcmdldC0+aW50ZXJmYWNlTmFtZSgpOwogCisgICAgLy8gRklYTUU6IFdoeSBjYW4ndCB3
ZSB1c2UgdG9KUyBmb3IgdGhlc2UgY2FzZXM/CiAjaWYgRU5BQkxFKFdPUktFUlMpCi0gICAgaWYg
KFdvcmtlciogd29ya2VyID0gdGFyZ2V0LT50b1dvcmtlcigpKQotICAgICAgICByZXR1cm4gdG9K
UyhleGVjLCBnbG9iYWxPYmplY3QsIHdvcmtlcik7Ci0KLSAgICBpZiAoRGVkaWNhdGVkV29ya2Vy
Q29udGV4dCogd29ya2VyQ29udGV4dCA9IHRhcmdldC0+dG9EZWRpY2F0ZWRXb3JrZXJDb250ZXh0
KCkpCi0gICAgICAgIHJldHVybiB0b0pTRE9NR2xvYmFsT2JqZWN0KHdvcmtlckNvbnRleHQsIGV4
ZWMpOworICAgIGlmIChldmVudE5hbWVzKCkuaW50ZXJmYWNlRm9yRGVkaWNhdGVkV29ya2VyQ29u
dGV4dCA9PSBkZXNpcmVkSW50ZXJmYWNlKQorICAgICAgICByZXR1cm4gdG9KU0RPTUdsb2JhbE9i
amVjdChzdGF0aWNfY2FzdDxEZWRpY2F0ZWRXb3JrZXJDb250ZXh0Kj4odGFyZ2V0KSwgZXhlYyk7
CiAjZW5kaWYKLQogI2lmIEVOQUJMRShTSEFSRURfV09SS0VSUykKLSAgICBpZiAoU2hhcmVkV29y
a2VyKiBzaGFyZWRXb3JrZXIgPSB0YXJnZXQtPnRvU2hhcmVkV29ya2VyKCkpCi0gICAgICAgIHJl
dHVybiB0b0pTKGV4ZWMsIGdsb2JhbE9iamVjdCwgc2hhcmVkV29ya2VyKTsKLQotICAgIGlmIChT
aGFyZWRXb3JrZXJDb250ZXh0KiB3b3JrZXJDb250ZXh0ID0gdGFyZ2V0LT50b1NoYXJlZFdvcmtl
ckNvbnRleHQoKSkKLSAgICAgICAgcmV0dXJuIHRvSlNET01HbG9iYWxPYmplY3Qod29ya2VyQ29u
dGV4dCwgZXhlYyk7Ci0jZW5kaWYKLQotI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQotICAgIGlm
IChOb3RpZmljYXRpb24qIG5vdGlmaWNhdGlvbiA9IHRhcmdldC0+dG9Ob3RpZmljYXRpb24oKSkK
LSAgICAgICAgcmV0dXJuIHRvSlMoZXhlYywgZ2xvYmFsT2JqZWN0LCBub3RpZmljYXRpb24pOwot
I2VuZGlmCi0KLSNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKLSAgICBpZiAoSURCRGF0YWJh
c2UqIGlkYkRhdGFiYXNlID0gdGFyZ2V0LT50b0lEQkRhdGFiYXNlKCkpCi0gICAgICAgIHJldHVy
biB0b0pTKGV4ZWMsIGdsb2JhbE9iamVjdCwgaWRiRGF0YWJhc2UpOwotCi0gICAgaWYgKElEQlJl
cXVlc3QqIGlkYlJlcXVlc3QgPSB0YXJnZXQtPnRvSURCUmVxdWVzdCgpKQotICAgICAgICByZXR1
cm4gdG9KUyhleGVjLCBnbG9iYWxPYmplY3QsIGlkYlJlcXVlc3QpOwotCi0gICAgaWYgKElEQlRy
YW5zYWN0aW9uKiBpZGJUcmFuc2FjdGlvbiA9IHRhcmdldC0+dG9JREJUcmFuc2FjdGlvbigpKQot
ICAgICAgICByZXR1cm4gdG9KUyhleGVjLCBnbG9iYWxPYmplY3QsIGlkYlRyYW5zYWN0aW9uKTsK
LSNlbmRpZgotCi0jaWYgRU5BQkxFKFdFQl9BVURJTykKLSAgICBpZiAoSmF2YVNjcmlwdEF1ZGlv
Tm9kZSoganNBdWRpb05vZGUgPSB0YXJnZXQtPnRvSmF2YVNjcmlwdEF1ZGlvTm9kZSgpKQotICAg
ICAgICByZXR1cm4gdG9KUyhleGVjLCBnbG9iYWxPYmplY3QsIGpzQXVkaW9Ob2RlKTsKLSAgICBp
ZiAoQXVkaW9Db250ZXh0KiBhdWRpb0NvbnRleHQgPSB0YXJnZXQtPnRvQXVkaW9Db250ZXh0KCkp
Ci0gICAgICAgIHJldHVybiB0b0pTKGV4ZWMsIGdsb2JhbE9iamVjdCwgYXVkaW9Db250ZXh0KTsK
LSNlbmRpZgotCi0jaWYgRU5BQkxFKFdFQl9TT0NLRVRTKQotICAgIGlmIChXZWJTb2NrZXQqIHdl
YlNvY2tldCA9IHRhcmdldC0+dG9XZWJTb2NrZXQoKSkKLSAgICAgICAgcmV0dXJuIHRvSlMoZXhl
YywgZ2xvYmFsT2JqZWN0LCB3ZWJTb2NrZXQpOwotI2VuZGlmCi0KLSNpZiBFTkFCTEUoQkxPQikK
LSAgICBpZiAoRmlsZVJlYWRlciogZmlsZVJlYWRlciA9IHRhcmdldC0+dG9GaWxlUmVhZGVyKCkp
Ci0gICAgICAgIHJldHVybiB0b0pTKGV4ZWMsIGdsb2JhbE9iamVjdCwgZmlsZVJlYWRlcik7Cisg
ICAgaWYgKGV2ZW50TmFtZXMoKS5pbnRlcmZhY2VGb3JTaGFyZWRXb3JrZXJDb250ZXh0ID09IGRl
c2lyZWRJbnRlcmZhY2UpCisgICAgICAgIHJldHVybiB0b0pTRE9NR2xvYmFsT2JqZWN0KHN0YXRp
Y19jYXN0PFNoYXJlZFdvcmtlckNvbnRleHQqPih0YXJnZXQpLCBleGVjKTsKICNlbmRpZgogCi0j
aWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKLSAgICBpZiAoTG9jYWxNZWRpYVN0cmVhbSogc3RyZWFt
ID0gdGFyZ2V0LT50b0xvY2FsTWVkaWFTdHJlYW0oKSkKLSAgICAgICAgcmV0dXJuIHRvSlMoZXhl
YywgZ2xvYmFsT2JqZWN0LCBzdHJlYW0pOwotCi0gICAgaWYgKE1lZGlhU3RyZWFtKiBzdHJlYW0g
PSB0YXJnZXQtPnRvTWVkaWFTdHJlYW0oKSkKLSAgICAgICAgcmV0dXJuIHRvSlMoZXhlYywgZ2xv
YmFsT2JqZWN0LCBzdHJlYW0pOwotI2VuZGlmCisgICAgRE9NX0VWRU5UX1RBUkdFVF9JTlRFUkZB
Q0VTX0ZPUl9FQUNIKFRSWV9UT19XUkFQX1dJVEhfSU5URVJGQUNFKQogCiAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIGpzTnVsbCgpOwpJbmRleDogU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvV29ya2VyU2NyaXB0Q29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV29ya2VyU2NyaXB0Q29udHJvbGxlci5jcHAJKHJldmlz
aW9uIDk4MzU4KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV29ya2VyU2NyaXB0Q29u
dHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg2LDcgKzg2LDcgQEAgdm9pZCBXb3JrZXJT
Y3JpcHRDb250cm9sbGVyOjppbml0U2NyaXB0KAogICAgICAgICBTdHJvbmc8SlNEZWRpY2F0ZWRX
b3JrZXJDb250ZXh0UHJvdG90eXBlPiBkZWRpY2F0ZWRDb250ZXh0UHJvdG90eXBlKCptX2dsb2Jh
bERhdGEsIEpTRGVkaWNhdGVkV29ya2VyQ29udGV4dFByb3RvdHlwZTo6Y3JlYXRlKCptX2dsb2Jh
bERhdGEsIDAsIGRlZGljYXRlZENvbnRleHRQcm90b3R5cGVTdHJ1Y3R1cmUpKTsKICAgICAgICAg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBKU0RlZGljYXRlZFdvcmtlckNvbnRleHQ6OmNyZWF0ZVN0
cnVjdHVyZSgqbV9nbG9iYWxEYXRhLCAwLCBkZWRpY2F0ZWRDb250ZXh0UHJvdG90eXBlLmdldCgp
KTsKIAotICAgICAgICBtX3dvcmtlckNvbnRleHRXcmFwcGVyLnNldCgqbV9nbG9iYWxEYXRhLCBK
U0RlZGljYXRlZFdvcmtlckNvbnRleHQ6OmNyZWF0ZSgqbV9nbG9iYWxEYXRhLCBzdHJ1Y3R1cmUs
IG1fd29ya2VyQ29udGV4dC0+dG9EZWRpY2F0ZWRXb3JrZXJDb250ZXh0KCkpKTsKKyAgICAgICAg
bV93b3JrZXJDb250ZXh0V3JhcHBlci5zZXQoKm1fZ2xvYmFsRGF0YSwgSlNEZWRpY2F0ZWRXb3Jr
ZXJDb250ZXh0OjpjcmVhdGUoKm1fZ2xvYmFsRGF0YSwgc3RydWN0dXJlLCBzdGF0aWNfY2FzdDxE
ZWRpY2F0ZWRXb3JrZXJDb250ZXh0Kj4obV93b3JrZXJDb250ZXh0KSkpOwogICAgICAgICB3b3Jr
ZXJDb250ZXh0UHJvdG90eXBlU3RydWN0dXJlLT5zZXRHbG9iYWxPYmplY3QoKm1fZ2xvYmFsRGF0
YSwgbV93b3JrZXJDb250ZXh0V3JhcHBlci5nZXQoKSk7CiAgICAgICAgIGRlZGljYXRlZENvbnRl
eHRQcm90b3R5cGVTdHJ1Y3R1cmUtPnNldEdsb2JhbE9iamVjdCgqbV9nbG9iYWxEYXRhLCBtX3dv
cmtlckNvbnRleHRXcmFwcGVyLmdldCgpKTsKICAgICAgICAgQVNTRVJUKHN0cnVjdHVyZS0+Z2xv
YmFsT2JqZWN0KCkgPT0gbV93b3JrZXJDb250ZXh0V3JhcHBlcik7CkBAIC0xMDAsNyArMTAwLDcg
QEAgdm9pZCBXb3JrZXJTY3JpcHRDb250cm9sbGVyOjppbml0U2NyaXB0KAogICAgICAgICBTdHJv
bmc8SlNTaGFyZWRXb3JrZXJDb250ZXh0UHJvdG90eXBlPiBzaGFyZWRDb250ZXh0UHJvdG90eXBl
KCptX2dsb2JhbERhdGEsIEpTU2hhcmVkV29ya2VyQ29udGV4dFByb3RvdHlwZTo6Y3JlYXRlKCpt
X2dsb2JhbERhdGEsIDAsIHNoYXJlZENvbnRleHRQcm90b3R5cGVTdHJ1Y3R1cmUpKTsKICAgICAg
ICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBKU1NoYXJlZFdvcmtlckNvbnRleHQ6OmNyZWF0ZVN0
cnVjdHVyZSgqbV9nbG9iYWxEYXRhLCAwLCBzaGFyZWRDb250ZXh0UHJvdG90eXBlLmdldCgpKTsK
IAotICAgICAgICBtX3dvcmtlckNvbnRleHRXcmFwcGVyLnNldCgqbV9nbG9iYWxEYXRhLCBKU1No
YXJlZFdvcmtlckNvbnRleHQ6OmNyZWF0ZSgqbV9nbG9iYWxEYXRhLCBzdHJ1Y3R1cmUsIG1fd29y
a2VyQ29udGV4dC0+dG9TaGFyZWRXb3JrZXJDb250ZXh0KCkpKTsKKyAgICAgICAgbV93b3JrZXJD
b250ZXh0V3JhcHBlci5zZXQoKm1fZ2xvYmFsRGF0YSwgSlNTaGFyZWRXb3JrZXJDb250ZXh0Ojpj
cmVhdGUoKm1fZ2xvYmFsRGF0YSwgc3RydWN0dXJlLCBzdGF0aWNfY2FzdDxTaGFyZWRXb3JrZXJD
b250ZXh0Kj4obV93b3JrZXJDb250ZXh0KSkpOwogICAgICAgICB3b3JrZXJDb250ZXh0UHJvdG90
eXBlLT5zdHJ1Y3R1cmUoKS0+c2V0R2xvYmFsT2JqZWN0KCptX2dsb2JhbERhdGEsIG1fd29ya2Vy
Q29udGV4dFdyYXBwZXIuZ2V0KCkpOwogICAgICAgICBzaGFyZWRDb250ZXh0UHJvdG90eXBlLT5z
dHJ1Y3R1cmUoKS0+c2V0R2xvYmFsT2JqZWN0KCptX2dsb2JhbERhdGEsIG1fd29ya2VyQ29udGV4
dFdyYXBwZXIuZ2V0KCkpOwogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9v
YmpjL0RPTS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RP
TS5tbQkocmV2aXNpb24gOTgzNTgpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RP
TS5tbQkod29ya2luZyBjb3B5KQpAQCAtMzQzLDExICszNDMsNiBAQCBpZCA8RE9NRXZlbnRUYXJn
ZXQ+IGtpdChXZWJDb3JlOjpFdmVudFRhCiAgICAgaWYgKFdlYkNvcmU6Ok5vZGUqIG5vZGUgPSBl
dmVudFRhcmdldC0+dG9Ob2RlKCkpCiAgICAgICAgIHJldHVybiBraXQobm9kZSk7CiAKLSNpZiBF
TkFCTEUoU1ZHX0RPTV9PQkpDX0JJTkRJTkdTKQotICAgIGlmIChXZWJDb3JlOjpTVkdFbGVtZW50
SW5zdGFuY2UqIHN2Z0VsZW1lbnRJbnN0YW5jZSA9IGV2ZW50VGFyZ2V0LT50b1NWR0VsZW1lbnRJ
bnN0YW5jZSgpKQotICAgICAgICByZXR1cm4ga2l0KHN2Z0VsZW1lbnRJbnN0YW5jZSk7Ci0jZW5k
aWYKLQogICAgIC8vIFdlIGRvbid0IGhhdmUgYW4gT2JqQyBiaW5kaW5nIGZvciBYTUxIdHRwUmVx
dWVzdC4KIAogICAgIHJldHVybiBuaWw7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9WOERPTVdyYXBwZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L1Y4RE9NV3JhcHBlci5jcHAJKHJldmlzaW9uIDk4MzU4KQorKysgU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvVjhET01XcmFwcGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUsNiArMzUs
OCBAQAogI2luY2x1ZGUgIkNTU011dGFibGVTdHlsZURlY2xhcmF0aW9uLmgiCiAjaW5jbHVkZSAi
RE9NRGF0YVN0b3JlLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRMb2FkZXIuaCIKKyNpbmNsdWRlICJF
dmVudFRhcmdldEhlYWRlcnMuaCIKKyNpbmNsdWRlICJFdmVudFRhcmdldEludGVyZmFjZXMuaCIK
ICNpbmNsdWRlICJGcmFtZUxvYWRlckNsaWVudC5oIgogI2luY2x1ZGUgIk5vdGlmaWNhdGlvbi5o
IgogI2luY2x1ZGUgIlY4QWJzdHJhY3RFdmVudExpc3RlbmVyLmgiCkBAIC0zMzEsMTE0ICszMzMs
MjAgQEAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBWOERPTVdyYXBwZXI6OmdldAogICAgIHJldHVy
biBkb21Ob2RlTWFwLmdldChub2RlKTsKIH0KIAorI2RlZmluZSBUUllfVE9fV1JBUF9XSVRIX0lO
VEVSRkFDRShpbnRlcmZhY2VOYW1lKSBcCisgICAgaWYgKGV2ZW50TmFtZXMoKS5pbnRlcmZhY2VG
b3IjI2ludGVyZmFjZU5hbWUgPT0gZGVzaXJlZEludGVyZmFjZSkgXAorICAgICAgICByZXR1cm4g
dG9WOChzdGF0aWNfY2FzdDxpbnRlcmZhY2VOYW1lKj4odGFyZ2V0KSk7CisKIC8vIEEgSlMgb2Jq
ZWN0IG9mIHR5cGUgRXZlbnRUYXJnZXQgaXMgbGltaXRlZCB0byBhIHNtYWxsIG51bWJlciBvZiBw
b3NzaWJsZSBjbGFzc2VzLgotLy8gQ2hlY2sgRXZlbnRUYXJnZXQuaCBmb3IgbmV3IHR5cGUgY29u
dmVyc2lvbiBtZXRob2RzCiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhET01XcmFwcGVyOjpjb252
ZXJ0RXZlbnRUYXJnZXRUb1Y4T2JqZWN0KEV2ZW50VGFyZ2V0KiB0YXJnZXQpCiB7CiAgICAgaWYg
KCF0YXJnZXQpCiAgICAgICAgIHJldHVybiB2ODo6TnVsbCgpOwogCi0jaWYgRU5BQkxFKFNWRykK
LSAgICBpZiAoU1ZHRWxlbWVudEluc3RhbmNlKiBpbnN0YW5jZSA9IHRhcmdldC0+dG9TVkdFbGVt
ZW50SW5zdGFuY2UoKSkKLSAgICAgICAgcmV0dXJuIHRvVjgoaW5zdGFuY2UpOwotI2VuZGlmCi0K
LSNpZiBFTkFCTEUoV09SS0VSUykKLSAgICBpZiAoV29ya2VyKiB3b3JrZXIgPSB0YXJnZXQtPnRv
V29ya2VyKCkpCi0gICAgICAgIHJldHVybiB0b1Y4KHdvcmtlcik7Ci0KLSAgICBpZiAoRGVkaWNh
dGVkV29ya2VyQ29udGV4dCogd29ya2VyQ29udGV4dCA9IHRhcmdldC0+dG9EZWRpY2F0ZWRXb3Jr
ZXJDb250ZXh0KCkpCi0gICAgICAgIHJldHVybiB0b1Y4KHdvcmtlckNvbnRleHQpOwotI2VuZGlm
IC8vIFdPUktFUlMKLQotI2lmIEVOQUJMRShTSEFSRURfV09SS0VSUykKLSAgICBpZiAoU2hhcmVk
V29ya2VyKiBzaGFyZWRXb3JrZXIgPSB0YXJnZXQtPnRvU2hhcmVkV29ya2VyKCkpCi0gICAgICAg
IHJldHVybiB0b1Y4KHNoYXJlZFdvcmtlcik7Ci0KLSAgICBpZiAoU2hhcmVkV29ya2VyQ29udGV4
dCogc2hhcmVkV29ya2VyQ29udGV4dCA9IHRhcmdldC0+dG9TaGFyZWRXb3JrZXJDb250ZXh0KCkp
Ci0gICAgICAgIHJldHVybiB0b1Y4KHNoYXJlZFdvcmtlckNvbnRleHQpOwotI2VuZGlmIC8vIFNI
QVJFRF9XT1JLRVJTCi0KLSNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKLSAgICBpZiAoTm90aWZp
Y2F0aW9uKiBub3RpZmljYXRpb24gPSB0YXJnZXQtPnRvTm90aWZpY2F0aW9uKCkpCi0gICAgICAg
IHJldHVybiB0b1Y4KG5vdGlmaWNhdGlvbik7Ci0jZW5kaWYKLQotI2lmIEVOQUJMRShJTkRFWEVE
X0RBVEFCQVNFKQotICAgIGlmIChJREJEYXRhYmFzZSogaWRiRGF0YWJhc2UgPSB0YXJnZXQtPnRv
SURCRGF0YWJhc2UoKSkKLSAgICAgICAgcmV0dXJuIHRvVjgoaWRiRGF0YWJhc2UpOwotICAgIGlm
IChJREJSZXF1ZXN0KiBpZGJSZXF1ZXN0ID0gdGFyZ2V0LT50b0lEQlJlcXVlc3QoKSkKLSAgICAg
ICAgcmV0dXJuIHRvVjgoaWRiUmVxdWVzdCk7Ci0gICAgaWYgKElEQlRyYW5zYWN0aW9uKiBpZGJU
cmFuc2FjdGlvbiA9IHRhcmdldC0+dG9JREJUcmFuc2FjdGlvbigpKQotICAgICAgICByZXR1cm4g
dG9WOChpZGJUcmFuc2FjdGlvbik7Ci0jZW5kaWYKLQotI2lmIEVOQUJMRShXRUJfU09DS0VUUykK
LSAgICBpZiAoV2ViU29ja2V0KiB3ZWJTb2NrZXQgPSB0YXJnZXQtPnRvV2ViU29ja2V0KCkpCi0g
ICAgICAgIHJldHVybiB0b1Y4KHdlYlNvY2tldCk7Ci0jZW5kaWYKLQotICAgIGlmIChOb2RlKiBu
b2RlID0gdGFyZ2V0LT50b05vZGUoKSkKLSAgICAgICAgcmV0dXJuIHRvVjgobm9kZSk7Ci0KLSAg
ICBpZiAoRE9NV2luZG93KiBkb21XaW5kb3cgPSB0YXJnZXQtPnRvRE9NV2luZG93KCkpCi0gICAg
ICAgIHJldHVybiB0b1Y4KGRvbVdpbmRvdyk7Ci0KLSAgICAvLyBYTUxIdHRwUmVxdWVzdCBpcyBj
cmVhdGVkIHdpdGhpbiBpdHMgSlMgY291bnRlcnBhcnQuCi0gICAgaWYgKFhNTEh0dHBSZXF1ZXN0
KiB4bWxIdHRwUmVxdWVzdCA9IHRhcmdldC0+dG9YTUxIdHRwUmVxdWVzdCgpKSB7Ci0gICAgICAg
IHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlciA9IGdldEFjdGl2ZURPTU9iamVjdE1hcCgp
LmdldCh4bWxIdHRwUmVxdWVzdCk7Ci0gICAgICAgIEFTU0VSVCghd3JhcHBlci5Jc0VtcHR5KCkp
OwotICAgICAgICByZXR1cm4gd3JhcHBlcjsKLSAgICB9Ci0KLSAgICAvLyBNZXNzYWdlUG9ydCBp
cyBjcmVhdGVkIHdpdGhpbiBpdHMgSlMgY291bnRlcnBhcnQKLSAgICBpZiAoTWVzc2FnZVBvcnQq
IHBvcnQgPSB0YXJnZXQtPnRvTWVzc2FnZVBvcnQoKSkgewotICAgICAgICB2ODo6SGFuZGxlPHY4
OjpPYmplY3Q+IHdyYXBwZXIgPSBnZXRBY3RpdmVET01PYmplY3RNYXAoKS5nZXQocG9ydCk7Ci0g
ICAgICAgIEFTU0VSVCghd3JhcHBlci5Jc0VtcHR5KCkpOwotICAgICAgICByZXR1cm4gd3JhcHBl
cjsKLSAgICB9Ci0KLSAgICBpZiAoWE1MSHR0cFJlcXVlc3RVcGxvYWQqIHVwbG9hZCA9IHRhcmdl
dC0+dG9YTUxIdHRwUmVxdWVzdFVwbG9hZCgpKSB7Ci0gICAgICAgIHY4OjpIYW5kbGU8djg6Ok9i
amVjdD4gd3JhcHBlciA9IGdldERPTU9iamVjdE1hcCgpLmdldCh1cGxvYWQpOwotICAgICAgICBB
U1NFUlQoIXdyYXBwZXIuSXNFbXB0eSgpKTsKLSAgICAgICAgcmV0dXJuIHdyYXBwZXI7Ci0gICAg
fQotCi0gICAgaWYgKERPTUFwcGxpY2F0aW9uQ2FjaGUqIGRvbUFwcENhY2hlID0gdGFyZ2V0LT50
b0RPTUFwcGxpY2F0aW9uQ2FjaGUoKSkKLSAgICAgICAgcmV0dXJuIHRvVjgoZG9tQXBwQ2FjaGUp
OwotCi0gICAgaWYgKEV2ZW50U291cmNlKiBldmVudFNvdXJjZSA9IHRhcmdldC0+dG9FdmVudFNv
dXJjZSgpKQotICAgICAgICByZXR1cm4gdG9WOChldmVudFNvdXJjZSk7Ci0KLSNpZiBFTkFCTEUo
QkxPQikKLSAgICBpZiAoRmlsZVJlYWRlciogZmlsZVJlYWRlciA9IHRhcmdldC0+dG9GaWxlUmVh
ZGVyKCkpCi0gICAgICAgIHJldHVybiB0b1Y4KGZpbGVSZWFkZXIpOwotI2VuZGlmCi0KLSNpZiBF
TkFCTEUoRklMRV9TWVNURU0pCi0gICAgaWYgKEZpbGVXcml0ZXIqIGZpbGVXcml0ZXIgPSB0YXJn
ZXQtPnRvRmlsZVdyaXRlcigpKQotICAgICAgICByZXR1cm4gdG9WOChmaWxlV3JpdGVyKTsKLSNl
bmRpZgotCi0jaWYgRU5BQkxFKFdFQl9BVURJTykKLSAgICBpZiAoSmF2YVNjcmlwdEF1ZGlvTm9k
ZSoganNBdWRpb05vZGUgPSB0YXJnZXQtPnRvSmF2YVNjcmlwdEF1ZGlvTm9kZSgpKQotICAgICAg
ICByZXR1cm4gdG9WOChqc0F1ZGlvTm9kZSk7Ci0gICAgaWYgKEF1ZGlvQ29udGV4dCogYXVkaW9D
b250ZXh0ID0gdGFyZ2V0LT50b0F1ZGlvQ29udGV4dCgpKQotICAgICAgICByZXR1cm4gdG9WOChh
dWRpb0NvbnRleHQpOwotI2VuZGlmICAgIAotCi0jaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKLSAg
ICBpZiAoTG9jYWxNZWRpYVN0cmVhbSogc3RyZWFtID0gdGFyZ2V0LT50b0xvY2FsTWVkaWFTdHJl
YW0oKSkKLSAgICAgICAgcmV0dXJuIHRvVjgoc3RyZWFtKTsKLQotICAgIGlmIChNZWRpYVN0cmVh
bSogc3RyZWFtID0gdGFyZ2V0LT50b01lZGlhU3RyZWFtKCkpCi0gICAgICAgIHJldHVybiB0b1Y4
KHN0cmVhbSk7Ci0KLSAgICBpZiAoUGVlckNvbm5lY3Rpb24qIHBlZXJDb25uZWN0aW9uID0gdGFy
Z2V0LT50b1BlZXJDb25uZWN0aW9uKCkpCi0gICAgICAgIHJldHVybiB0b1Y4KHBlZXJDb25uZWN0
aW9uKTsKLSNlbmRpZgorICAgIEF0b21pY1N0cmluZyBkZXNpcmVkSW50ZXJmYWNlID0gdGFyZ2V0
LT5pbnRlcmZhY2VOYW1lKCk7CisgICAgRE9NX0VWRU5UX1RBUkdFVF9JTlRFUkZBQ0VTX0ZPUl9F
QUNIKFRSWV9UT19XUkFQX1dJVEhfSU5URVJGQUNFKQogCi0gICAgQVNTRVJUKDApOworICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBub3RIYW5kbGVkQnlJbnRlcmNlcHRvcigp
OwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRXZlbnROYW1lcy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TmFtZXMuY3BwCShyZXZpc2lvbiA5ODM1OCkK
KysrIFNvdXJjZS9XZWJDb3JlL2RvbS9FdmVudE5hbWVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzMsNiArMzMsNyBAQCBFdmVudE5hbWVzOjpFdmVudE5hbWVzKCkKICAgICA6IGR1bW15KDApCiBE
T01fRVZFTlRfTkFNRVNfRk9SX0VBQ0goSU5JVElBTElaRV9FVkVOVF9OQU1FKQogRE9NX0VWRU5U
X0lOVEVSRkFDRVNfRk9SX0VBQ0goSU5JVElBTElaRV9FVkVOVF9JTlRFUkZBQ0UpCitET01fRVZF
TlRfVEFSR0VUX0lOVEVSRkFDRVNfRk9SX0VBQ0goSU5JVElBTElaRV9FVkVOVF9JTlRFUkZBQ0Up
CiB7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9FdmVudE5hbWVzLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TmFtZXMuaAkocmV2aXNpb24gOTgzNTgpCisr
KyBTb3VyY2UvV2ViQ29yZS9kb20vRXZlbnROYW1lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw2
ICsyMyw3IEBACiAjZGVmaW5lIEV2ZW50TmFtZXNfaAogCiAjaW5jbHVkZSAiRXZlbnRJbnRlcmZh
Y2VzLmgiCisjaW5jbHVkZSAiRXZlbnRUYXJnZXRJbnRlcmZhY2VzLmgiCiAjaW5jbHVkZSAiVGhy
ZWFkR2xvYmFsRGF0YS5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZy5oPgogCkBA
IC0yMDUsNiArMjA2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgICNkZWZpbmUg
RE9NX0VWRU5UX0lOVEVSRkFDRV9ERUNMQVJFKG5hbWUpIEF0b21pY1N0cmluZyBpbnRlcmZhY2VG
b3IjI25hbWU7CiAgICAgICAgIERPTV9FVkVOVF9JTlRFUkZBQ0VTX0ZPUl9FQUNIKERPTV9FVkVO
VF9JTlRFUkZBQ0VfREVDTEFSRSkKKyAgICAgICAgRE9NX0VWRU5UX1RBUkdFVF9JTlRFUkZBQ0VT
X0ZPUl9FQUNIKERPTV9FVkVOVF9JTlRFUkZBQ0VfREVDTEFSRSkKICAgICAgICAgI3VuZGVmIERP
TV9FVkVOVF9JTlRFUkZBQ0VfREVDTEFSRQogICAgIH07CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2RvbS9FdmVudFRhcmdldC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0V2
ZW50VGFyZ2V0LmNwcAkocmV2aXNpb24gOTgzNTgpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRXZl
bnRUYXJnZXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MCwxMSArODAsNiBAQCBFdmVudFRhcmdl
dDo6fkV2ZW50VGFyZ2V0KCkKIHsKIH0KIAotRXZlbnRTb3VyY2UqIEV2ZW50VGFyZ2V0Ojp0b0V2
ZW50U291cmNlKCkKLXsKLSAgICByZXR1cm4gMDsKLX0KLQogTm9kZSogRXZlbnRUYXJnZXQ6OnRv
Tm9kZSgpCiB7CiAgICAgcmV0dXJuIDA7CkBAIC05NSwxMzEgKzkwLDYgQEAgRE9NV2luZG93KiBF
dmVudFRhcmdldDo6dG9ET01XaW5kb3coKQogICAgIHJldHVybiAwOwogfQogCi1YTUxIdHRwUmVx
dWVzdCogRXZlbnRUYXJnZXQ6OnRvWE1MSHR0cFJlcXVlc3QoKQotewotICAgIHJldHVybiAwOwot
fQotCi1YTUxIdHRwUmVxdWVzdFVwbG9hZCogRXZlbnRUYXJnZXQ6OnRvWE1MSHR0cFJlcXVlc3RV
cGxvYWQoKQotewotICAgIHJldHVybiAwOwotfQotCi1ET01BcHBsaWNhdGlvbkNhY2hlKiBFdmVu
dFRhcmdldDo6dG9ET01BcHBsaWNhdGlvbkNhY2hlKCkKLXsKLSAgICByZXR1cm4gMDsKLX0KLQot
I2lmIEVOQUJMRShTVkcpCi1TVkdFbGVtZW50SW5zdGFuY2UqIEV2ZW50VGFyZ2V0Ojp0b1NWR0Vs
ZW1lbnRJbnN0YW5jZSgpCi17Ci0gICAgcmV0dXJuIDA7Ci19Ci0jZW5kaWYKLQotI2lmIEVOQUJM
RShXRUJfQVVESU8pCi1BdWRpb0NvbnRleHQqIEV2ZW50VGFyZ2V0Ojp0b0F1ZGlvQ29udGV4dCgp
Ci17Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLUphdmFTY3JpcHRBdWRpb05vZGUqIEV2ZW50VGFyZ2V0
Ojp0b0phdmFTY3JpcHRBdWRpb05vZGUoKQotewotICAgIHJldHVybiAwOwotfQotI2VuZGlmCi0K
LSNpZiBFTkFCTEUoV0VCX1NPQ0tFVFMpCi1XZWJTb2NrZXQqIEV2ZW50VGFyZ2V0Ojp0b1dlYlNv
Y2tldCgpCi17Ci0gICAgcmV0dXJuIDA7Ci19Ci0jZW5kaWYKLQotTWVzc2FnZVBvcnQqIEV2ZW50
VGFyZ2V0Ojp0b01lc3NhZ2VQb3J0KCkKLXsKLSAgICByZXR1cm4gMDsKLX0KLQotI2lmIEVOQUJM
RShXT1JLRVJTKQotV29ya2VyKiBFdmVudFRhcmdldDo6dG9Xb3JrZXIoKQotewotICAgIHJldHVy
biAwOwotfQotCi1EZWRpY2F0ZWRXb3JrZXJDb250ZXh0KiBFdmVudFRhcmdldDo6dG9EZWRpY2F0
ZWRXb3JrZXJDb250ZXh0KCkKLXsKLSAgICByZXR1cm4gMDsKLX0KLSNlbmRpZgotCi0jaWYgRU5B
QkxFKFNIQVJFRF9XT1JLRVJTKQotU2hhcmVkV29ya2VyKiBFdmVudFRhcmdldDo6dG9TaGFyZWRX
b3JrZXIoKQotewotICAgIHJldHVybiAwOwotfQotU2hhcmVkV29ya2VyQ29udGV4dCogRXZlbnRU
YXJnZXQ6OnRvU2hhcmVkV29ya2VyQ29udGV4dCgpCi17Ci0gICAgcmV0dXJuIDA7Ci19Ci0jZW5k
aWYKLQotI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQotTm90aWZpY2F0aW9uKiBFdmVudFRhcmdl
dDo6dG9Ob3RpZmljYXRpb24oKQotewotICAgIHJldHVybiAwOwotfQotI2VuZGlmCi0KLSNpZiBF
TkFCTEUoQkxPQikKLUZpbGVSZWFkZXIqIEV2ZW50VGFyZ2V0Ojp0b0ZpbGVSZWFkZXIoKQotewot
ICAgIHJldHVybiAwOwotfQotI2VuZGlmCi0jaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQotRmlsZVdy
aXRlciogRXZlbnRUYXJnZXQ6OnRvRmlsZVdyaXRlcigpCi17Ci0gICAgcmV0dXJuIDA7Ci19Ci0j
ZW5kaWYKLQotI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQotSURCRGF0YWJhc2UqIEV2ZW50
VGFyZ2V0Ojp0b0lEQkRhdGFiYXNlKCkKLXsKLSAgICByZXR1cm4gMDsKLX0KLUlEQlJlcXVlc3Qq
IEV2ZW50VGFyZ2V0Ojp0b0lEQlJlcXVlc3QoKQotewotICAgIHJldHVybiAwOwotfQotSURCVHJh
bnNhY3Rpb24qIEV2ZW50VGFyZ2V0Ojp0b0lEQlRyYW5zYWN0aW9uKCkKLXsKLSAgICByZXR1cm4g
MDsKLX0KLUlEQlZlcnNpb25DaGFuZ2VSZXF1ZXN0KiBFdmVudFRhcmdldDo6dG9JREJWZXJzaW9u
Q2hhbmdlUmVxdWVzdCgpCi17Ci0gICAgcmV0dXJuIDA7Ci19Ci0jZW5kaWYKLQotI2lmIEVOQUJM
RShNRURJQV9TVFJFQU0pCi1NZWRpYVN0cmVhbSogRXZlbnRUYXJnZXQ6OnRvTWVkaWFTdHJlYW0o
KQotewotICAgIHJldHVybiAwOwotfQotCi1Mb2NhbE1lZGlhU3RyZWFtKiBFdmVudFRhcmdldDo6
dG9Mb2NhbE1lZGlhU3RyZWFtKCkKLXsKLSAgICByZXR1cm4gMDsKLX0KLQotUGVlckNvbm5lY3Rp
b24qIEV2ZW50VGFyZ2V0Ojp0b1BlZXJDb25uZWN0aW9uKCkKLXsKLSAgICByZXR1cm4gMDsKLX0K
LSNlbmRpZgotCiBib29sIEV2ZW50VGFyZ2V0OjphZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0b21p
Y1N0cmluZyYgZXZlbnRUeXBlLCBQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+IGxpc3RlbmVyLCBi
b29sIHVzZUNhcHR1cmUpCiB7CiAgICAgRXZlbnRUYXJnZXREYXRhKiBkID0gZW5zdXJlRXZlbnRU
YXJnZXREYXRhKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuaAkocmV2aXNpb24gOTgz
NTgpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuaAkod29ya2luZyBjb3B5KQpA
QCAtMTAwLDU4ICsxMDAsMTEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2b2lkIHJl
ZigpIHsgcmVmRXZlbnRUYXJnZXQoKTsgfQogICAgICAgICB2b2lkIGRlcmVmKCkgeyBkZXJlZkV2
ZW50VGFyZ2V0KCk7IH0KIAotICAgICAgICB2aXJ0dWFsIEV2ZW50U291cmNlKiB0b0V2ZW50U291
cmNlKCk7Ci0gICAgICAgIHZpcnR1YWwgTWVzc2FnZVBvcnQqIHRvTWVzc2FnZVBvcnQoKTsKKyAg
ICAgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIGludGVyZmFjZU5hbWUoKSBjb25zdCA9
IDA7CisgICAgICAgIHZpcnR1YWwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpIGNvbnN0ID0gMDsKKwogICAgICAgICB2aXJ0dWFsIE5vZGUqIHRvTm9kZSgp
OwogICAgICAgICB2aXJ0dWFsIERPTVdpbmRvdyogdG9ET01XaW5kb3coKTsKLSAgICAgICAgdmly
dHVhbCBYTUxIdHRwUmVxdWVzdCogdG9YTUxIdHRwUmVxdWVzdCgpOwotICAgICAgICB2aXJ0dWFs
IFhNTEh0dHBSZXF1ZXN0VXBsb2FkKiB0b1hNTEh0dHBSZXF1ZXN0VXBsb2FkKCk7Ci0gICAgICAg
IHZpcnR1YWwgRE9NQXBwbGljYXRpb25DYWNoZSogdG9ET01BcHBsaWNhdGlvbkNhY2hlKCk7Ci0j
aWYgRU5BQkxFKFNWRykKLSAgICAgICAgdmlydHVhbCBTVkdFbGVtZW50SW5zdGFuY2UqIHRvU1ZH
RWxlbWVudEluc3RhbmNlKCk7Ci0jZW5kaWYKLSNpZiBFTkFCTEUoV09SS0VSUykKLSAgICAgICAg
dmlydHVhbCBXb3JrZXIqIHRvV29ya2VyKCk7Ci0gICAgICAgIHZpcnR1YWwgRGVkaWNhdGVkV29y
a2VyQ29udGV4dCogdG9EZWRpY2F0ZWRXb3JrZXJDb250ZXh0KCk7Ci0jZW5kaWYKLSNpZiBFTkFC
TEUoU0hBUkVEX1dPUktFUlMpCi0gICAgICAgIHZpcnR1YWwgU2hhcmVkV29ya2VyKiB0b1NoYXJl
ZFdvcmtlcigpOwotICAgICAgICB2aXJ0dWFsIFNoYXJlZFdvcmtlckNvbnRleHQqIHRvU2hhcmVk
V29ya2VyQ29udGV4dCgpOwotI2VuZGlmCi0KLSNpZiBFTkFCTEUoV0VCX0FVRElPKQotICAgICAg
ICB2aXJ0dWFsIEF1ZGlvQ29udGV4dCogdG9BdWRpb0NvbnRleHQoKTsKLSAgICAgICAgdmlydHVh
bCBKYXZhU2NyaXB0QXVkaW9Ob2RlKiB0b0phdmFTY3JpcHRBdWRpb05vZGUoKTsKLSNlbmRpZgot
Ci0jaWYgRU5BQkxFKFdFQl9TT0NLRVRTKQotICAgICAgICB2aXJ0dWFsIFdlYlNvY2tldCogdG9X
ZWJTb2NrZXQoKTsKLSNlbmRpZgotCi0jaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCi0gICAgICAg
IHZpcnR1YWwgTm90aWZpY2F0aW9uKiB0b05vdGlmaWNhdGlvbigpOwotI2VuZGlmCi0jaWYgRU5B
QkxFKEJMT0IpCi0gICAgICAgIHZpcnR1YWwgRmlsZVJlYWRlciogdG9GaWxlUmVhZGVyKCk7Ci0j
ZW5kaWYKLSNpZiBFTkFCTEUoRklMRV9TWVNURU0pCi0gICAgICAgIHZpcnR1YWwgRmlsZVdyaXRl
ciogdG9GaWxlV3JpdGVyKCk7Ci0jZW5kaWYKLQotI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNF
KQotICAgICAgICB2aXJ0dWFsIElEQkRhdGFiYXNlKiB0b0lEQkRhdGFiYXNlKCk7Ci0gICAgICAg
IHZpcnR1YWwgSURCUmVxdWVzdCogdG9JREJSZXF1ZXN0KCk7Ci0gICAgICAgIHZpcnR1YWwgSURC
VHJhbnNhY3Rpb24qIHRvSURCVHJhbnNhY3Rpb24oKTsKLSAgICAgICAgdmlydHVhbCBJREJWZXJz
aW9uQ2hhbmdlUmVxdWVzdCogdG9JREJWZXJzaW9uQ2hhbmdlUmVxdWVzdCgpOwotI2VuZGlmCi0K
LSNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQotICAgICAgICB2aXJ0dWFsIE1lZGlhU3RyZWFtKiB0
b01lZGlhU3RyZWFtKCk7Ci0gICAgICAgIHZpcnR1YWwgTG9jYWxNZWRpYVN0cmVhbSogdG9Mb2Nh
bE1lZGlhU3RyZWFtKCk7Ci0gICAgICAgIHZpcnR1YWwgUGVlckNvbm5lY3Rpb24qIHRvUGVlckNv
bm5lY3Rpb24oKTsKLSNlbmRpZgotCi0gICAgICAgIHZpcnR1YWwgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0ID0gMDsKIAogICAgICAgICB2aXJ0
dWFsIGJvb2wgYWRkRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwg
UGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiwgYm9vbCB1c2VDYXB0dXJlKTsKICAgICAgICAgdmly
dHVhbCBib29sIHJlbW92ZUV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5
cGUsIEV2ZW50TGlzdGVuZXIqLCBib29sIHVzZUNhcHR1cmUpOwpJbmRleDogU291cmNlL1dlYkNv
cmUvZG9tL0V2ZW50VGFyZ2V0RmFjdG9yeS5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9kb20vRXZlbnRUYXJnZXRGYWN0b3J5LmluCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNv
cmUvZG9tL0V2ZW50VGFyZ2V0RmFjdG9yeS5pbgkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyNyBA
QAorbmFtZXNwYWNlPSJFdmVudFRhcmdldCIKKworRXZlbnRTb3VyY2UKK01lc3NhZ2VQb3J0CitO
b2RlCitET01XaW5kb3cKK1hNTEh0dHBSZXF1ZXN0CitYTUxIdHRwUmVxdWVzdFVwbG9hZAorRE9N
QXBwbGljYXRpb25DYWNoZQorU1ZHRWxlbWVudEluc3RhbmNlIGNvbmRpdGlvbmFsPVNWRworV29y
a2VyIGNvbmRpdGlvbmFsPVdPUktFUlMKK0RlZGljYXRlZFdvcmtlckNvbnRleHQgY29uZGl0aW9u
YWw9V09SS0VSUworU2hhcmVkV29ya2VyIGNvbmRpdGlvbmFsPVNIQVJFRF9XT1JLRVJTCitTaGFy
ZWRXb3JrZXJDb250ZXh0IGNvbmRpdGlvbmFsPVNIQVJFRF9XT1JLRVJTCitBdWRpb0NvbnRleHQg
Y29uZGl0aW9uYWw9V0VCX0FVRElPCitKYXZhU2NyaXB0QXVkaW9Ob2RlIGNvbmRpdGlvbmFsPVdF
Ql9BVURJTworV2ViU29ja2V0IGNvbmRpdGlvbmFsPVdFQl9TT0NLRVRTCitOb3RpZmljYXRpb24g
Y29uZGl0aW9uYWw9Tk9USUZJQ0FUSU9OUworRmlsZVJlYWRlciBjb25kaXRpb25hbD1CTE9CCitG
aWxlV3JpdGVyIGNvbmRpdGlvbmFsPUZJTEVfU1lTVEVNCitJREJEYXRhYmFzZSBjb25kaXRpb25h
bD1JTkRFWEVEX0RBVEFCQVNFCitJREJSZXF1ZXN0IGNvbmRpdGlvbmFsPUlOREVYRURfREFUQUJB
U0UKK0lEQlRyYW5zYWN0aW9uIGNvbmRpdGlvbmFsPUlOREVYRURfREFUQUJBU0UKK0lEQlZlcnNp
b25DaGFuZ2VSZXF1ZXN0IGNvbmRpdGlvbmFsPUlOREVYRURfREFUQUJBU0UKK01lZGlhU3RyZWFt
IGNvbmRpdGlvbmFsPU1FRElBX1NUUkVBTQorTG9jYWxNZWRpYVN0cmVhbSBjb25kaXRpb25hbD1N
RURJQV9TVFJFQU0KK1BlZXJDb25uZWN0aW9uIGNvbmRpdGlvbmFsPU1FRElBX1NUUkVBTQpJbmRl
eDogU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VQb3J0LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9kb20vTWVzc2FnZVBvcnQuY3BwCShyZXZpc2lvbiA5ODM1OCkKKysrIFNvdXJj
ZS9XZWJDb3JlL2RvbS9NZXNzYWdlUG9ydC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1OSw2ICsx
NTksMTEgQEAgdm9pZCBNZXNzYWdlUG9ydDo6Y29udGV4dERlc3Ryb3llZCgpCiAgICAgbV9zY3Jp
cHRFeGVjdXRpb25Db250ZXh0ID0gMDsKIH0KIAorY29uc3QgQXRvbWljU3RyaW5nJiBNZXNzYWdl
UG9ydDo6aW50ZXJmYWNlTmFtZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGV2ZW50TmFtZXMoKS5p
bnRlcmZhY2VGb3JNZXNzYWdlUG9ydDsKK30KKwogU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogTWVz
c2FnZVBvcnQ6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdAogewogICAgIHJldHVybiBt
X3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vTWVzc2Fn
ZVBvcnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZVBvcnQuaAko
cmV2aXNpb24gOTgzNTgpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZVBvcnQuaAkod29y
a2luZyBjb3B5KQpAQCAtODIsMTAgKzgyLDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAg
ICAgIHZvaWQgY29udGV4dERlc3Ryb3llZCgpOwogCisgICAgICAgIHZpcnR1YWwgY29uc3QgQXRv
bWljU3RyaW5nJiBpbnRlcmZhY2VOYW1lKCkgY29uc3Q7CiAgICAgICAgIHZpcnR1YWwgU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0OwogCi0gICAg
ICAgIHZpcnR1YWwgTWVzc2FnZVBvcnQqIHRvTWVzc2FnZVBvcnQoKSB7IHJldHVybiB0aGlzOyB9
Ci0KICAgICAgICAgdm9pZCBkaXNwYXRjaE1lc3NhZ2VzKCk7CiAKICAgICAgICAgdXNpbmcgUmVm
Q291bnRlZDxNZXNzYWdlUG9ydD46OnJlZjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Ob2Rl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAJKHJldmlzaW9u
IDk4MzU4KQorKysgU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC01NzUsNiArNTc1LDExIEBAIHZvaWQgTm9kZTo6c2V0U2hhZG93SG9zdChFbGVtZW50KiBob3N0
KQogICAgIHNldFBhcmVudChob3N0KTsKIH0KIAorTm9kZSogTm9kZTo6dG9Ob2RlKCkKK3sKKyAg
ICByZXR1cm4gdGhpczsKK30KKwogSFRNTElucHV0RWxlbWVudCogTm9kZTo6dG9JbnB1dEVsZW1l
bnQoKQogewogICAgIC8vIElmIG9uZSBvZiB0aGUgYmVsb3cgQVNTRVJUcyB0cmlnZ2VyLCB5b3Ug
YXJlIGNhbGxpbmcgdGhpcyBmdW5jdGlvbgpAQCAtMjUxNCw3ICsyNTE5LDEwIEBAIE5vZGUqIE5v
ZGU6OmVuY2xvc2luZ0xpbmtFdmVudFBhcmVudE9yU2UKICAgICByZXR1cm4gMDsKIH0KIAotLy8g
LS0tLS0tLS0KK2NvbnN0IEF0b21pY1N0cmluZyYgTm9kZTo6aW50ZXJmYWNlTmFtZSgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIGV2ZW50TmFtZXMoKS5pbnRlcmZhY2VGb3JOb2RlOworfQogCiBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBOb2RlOjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QK
IHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvZG9tL05vZGUuaAkocmV2aXNpb24gOTgzNTgpCisrKyBTb3VyY2UvV2ViQ29yZS9k
b20vTm9kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01MzUsMTAgKzUzNSwxMCBAQCBwdWJsaWM6CiAK
ICAgICB1bnNpZ25lZCBzaG9ydCBjb21wYXJlRG9jdW1lbnRQb3NpdGlvbihOb2RlKik7CiAKLSAg
ICB2aXJ0dWFsIE5vZGUqIHRvTm9kZSgpIHsgcmV0dXJuIHRoaXM7IH0KLQorICAgIHZpcnR1YWwg
Tm9kZSogdG9Ob2RlKCk7CiAgICAgdmlydHVhbCBIVE1MSW5wdXRFbGVtZW50KiB0b0lucHV0RWxl
bWVudCgpOwogCisgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIGludGVyZmFjZU5hbWUo
KSBjb25zdDsKICAgICB2aXJ0dWFsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKSBjb25zdDsKIAogICAgIHZpcnR1YWwgYm9vbCBhZGRFdmVudExpc3RlbmVy
KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+
LCBib29sIHVzZUNhcHR1cmUpOwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL21ha2VfZXZlbnRf
ZmFjdG9yeS5wbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vbWFrZV9ldmVudF9m
YWN0b3J5LnBsCShyZXZpc2lvbiA5ODM1OCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9tYWtlX2V2
ZW50X2ZhY3RvcnkucGwJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDYgKzQ3LDcgQEAgc3ViIHByaW50
SGVhZGVyc0ZpbGUoJCk7CiBteSAkZXZlbnRzRmlsZSA9ICIiOwogbXkgJG91dHB1dERpciA9ICIu
IjsKIG15ICVwYXJzZWRFdmVudHMgPSAoKTsKK215ICRuYW1lc3BhY2U7CiAKIHJlcXVpcmUgQ29u
ZmlnOwogCkBAIC02MSw5ICs2Miw5IEBAIGRpZSAiWW91IG11c3Qgc3BlY2lmeSAtLWV2ZW50cyA8
ZmlsZT4iIHUKIAogbXkgJWV2ZW50cyA9ICV7cmVhZEV2ZW50cygkZXZlbnRzRmlsZSl9OwogCi1w
cmludEZhY3RvcnlGaWxlKCIkb3V0cHV0RGlyL0V2ZW50RmFjdG9yeS5jcHAiKTsKLXByaW50TWFj
cm9GaWxlKCIkb3V0cHV0RGlyL0V2ZW50SW50ZXJmYWNlcy5oIik7Ci1wcmludEhlYWRlcnNGaWxl
KCIkb3V0cHV0RGlyL0V2ZW50SGVhZGVycy5oIik7CitwcmludEZhY3RvcnlGaWxlKCIkb3V0cHV0
RGlyLyR7bmFtZXNwYWNlfUZhY3RvcnkuY3BwIikgaWYgJG5hbWVzcGFjZSBlcSAiRXZlbnQiOwor
cHJpbnRNYWNyb0ZpbGUoIiRvdXRwdXREaXIvJHtuYW1lc3BhY2V9SW50ZXJmYWNlcy5oIik7Citw
cmludEhlYWRlcnNGaWxlKCIkb3V0cHV0RGlyLyR7bmFtZXNwYWNlfUhlYWRlcnMuaCIpOwogCiBz
dWIgZGVmYXVsdEV2ZW50UHJvcGVydHlIYXNoCiB7CkBAIC04OSw3ICs5MCw4IEBAIHN1YiBwYXJh
bWV0ZXJzSGFuZGxlcgogewogICAgIG15ICgkcGFyYW1ldGVyLCAkdmFsdWUpID0gQF87CiAKLSAg
ICBkaWUgIlVua25vd24gcGFyYW1ldGVyICRwYXJhbWV0ZXIgZm9yIGV2ZW50c1xuIiB1bmxlc3Mg
JHBhcmFtZXRlciBlcSAibmFtZXNwYWNlIjsKKyAgICBkaWUgIlVua25vd24gcGFyYW1ldGVyICRw
YXJhbWV0ZXJcbiIgdW5sZXNzICRwYXJhbWV0ZXIgZXEgIm5hbWVzcGFjZSI7CisgICAgJG5hbWVz
cGFjZSA9ICR2YWx1ZTsKIH0KIAogc3ViIHJlYWROYW1lcygkJCQpCkBAIC0xMjQsNiArMTI2LDE2
IEBAIHN1YiBpbnRlcmZhY2VGb3JFdmVudCgkKQogICAgIHJldHVybiAkaW50ZXJmYWNlTmFtZTsK
IH0KIAorc3ViIHRvTWFjcm9TdHlsZSgkKQoreworICAgIG15ICgkY2FtZWxDYXNlKSA9IEBfOwor
CisgICAgcmV0dXJuICJFVkVOVCIgaWYgJGNhbWVsQ2FzZSBlcSAiRXZlbnQiOworICAgIHJldHVy
biAiRVZFTlRfVEFSR0VUIiBpZiAkY2FtZWxDYXNlIGVxICJFdmVudFRhcmdldCI7CisKKyAgICBk
aWUgIk9rLCB5b3UgZ290IG1lLiBUaGlzIHNjcmlwdCBpcyByZWFsbHkganVzdCBhIGdpYW50IGhh
Y2suIjsKK30KKwogc3ViIHByaW50RmFjdG9yeUZpbGUoJCkKIHsKICAgICBteSAkcGF0aCA9IHNo
aWZ0OwpAQCAtMTM0LDEzICsxNDYsMTMgQEAgc3ViIHByaW50RmFjdG9yeUZpbGUoJCkKICAgICBw
cmludExpY2Vuc2VIZWFkZXIoJEYpOwogCiAgICAgcHJpbnQgRiAiI2luY2x1ZGUgXCJjb25maWcu
aFwiXG4iOwotICAgIHByaW50IEYgIiNpbmNsdWRlIFwiRXZlbnRGYWN0b3J5LmhcIlxuIjsKKyAg
ICBwcmludCBGICIjaW5jbHVkZSBcIiR7bmFtZXNwYWNlfUZhY3RvcnkuaFwiXG4iOwogICAgIHBy
aW50IEYgIlxuIjsKLSAgICBwcmludCBGICIjaW5jbHVkZSBcIkV2ZW50SGVhZGVycy5oXCJcbiI7
CisgICAgcHJpbnQgRiAiI2luY2x1ZGUgXCIke25hbWVzcGFjZX1IZWFkZXJzLmhcIlxuIjsKICAg
ICBwcmludCBGICJcbiI7CiAgICAgcHJpbnQgRiAibmFtZXNwYWNlIFdlYkNvcmUge1xuIjsKICAg
ICBwcmludCBGICJcbiI7Ci0gICAgcHJpbnQgRiAiUGFzc1JlZlB0cjxFdmVudD4gRXZlbnRGYWN0
b3J5OjpjcmVhdGUoY29uc3QgU3RyaW5nJiBldmVudFR5cGUpXG4iOworICAgIHByaW50IEYgIlBh
c3NSZWZQdHI8JG5hbWVzcGFjZT4gJHtuYW1lc3BhY2V9RmFjdG9yeTo6Y3JlYXRlKGNvbnN0IFN0
cmluZyYgdHlwZSlcbiI7CiAgICAgcHJpbnQgRiAie1xuIjsKIAogICAgIGZvciBteSAkZXZlbnRO
YW1lIChzb3J0IGtleXMgJXBhcnNlZEV2ZW50cykgewpAQCAtMTQ4LDcgKzE2MCw3IEBAIHN1YiBw
cmludEZhY3RvcnlGaWxlKCQpCiAgICAgICAgIG15ICRpbnRlcmZhY2VOYW1lID0gaW50ZXJmYWNl
Rm9yRXZlbnQoJGV2ZW50TmFtZSk7CiAKICAgICAgICAgcHJpbnQgRiAiI2lmIEVOQUJMRSgkY29u
ZGl0aW9uYWwpXG4iIGlmICRjb25kaXRpb25hbDsKLSAgICAgICAgcHJpbnQgRiAiICAgIGlmIChl
dmVudFR5cGUgPT0gXCIkZXZlbnROYW1lXCIpXG4iOworICAgICAgICBwcmludCBGICIgICAgaWYg
KHR5cGUgPT0gXCIkZXZlbnROYW1lXCIpXG4iOwogICAgICAgICBwcmludCBGICIgICAgICAgIHJl
dHVybiAke2ludGVyZmFjZU5hbWV9OjpjcmVhdGUoKTtcbiI7CiAgICAgICAgIHByaW50IEYgIiNl
bmRpZlxuIiBpZiAkY29uZGl0aW9uYWw7CiAgICAgfQpAQCAtMTY5LDggKzE4MSw4IEBAIHN1YiBw
cmludE1hY3JvRmlsZSgkKQogCiAgICAgcHJpbnRMaWNlbnNlSGVhZGVyKCRGKTsKIAotICAgIHBy
aW50IEYgIiNpZm5kZWYgRXZlbnRJbnRlcmZhY2VzX2hcbiI7Ci0gICAgcHJpbnQgRiAiI2RlZmlu
ZSBFdmVudEludGVyZmFjZXNfaFxuIjsKKyAgICBwcmludCBGICIjaWZuZGVmICR7bmFtZXNwYWNl
fUludGVyZmFjZXNfaFxuIjsKKyAgICBwcmludCBGICIjZGVmaW5lICR7bmFtZXNwYWNlfUludGVy
ZmFjZXNfaFxuIjsKICAgICBwcmludCBGICJcbiI7CiAKICAgICBteSAldW5jb25kaXRpb25hbElu
dGVyZmFjZXMgPSAoKTsKQEAgLTE5MCwzNCArMjAyLDM2IEBAIHN1YiBwcmludE1hY3JvRmlsZSgk
KQogICAgICAgICB9CiAgICAgfQogCisgICAgbXkgJG1hY3JvU3R5bGVkTmFtZXNwYWNlID0gdG9N
YWNyb1N0eWxlKCRuYW1lc3BhY2UpOworCiAgICAgZm9yIG15ICRjb25kaXRpb25hbCAoc29ydCBr
ZXlzICVpbnRlcmZhY2VzQnlDb25kaXRpb25hbCkgewogICAgICAgICBwcmludCBGICIjaWYgRU5B
QkxFKCRjb25kaXRpb25hbClcbiI7Ci0gICAgICAgIHByaW50IEYgIiNkZWZpbmUgRE9NX0VWRU5U
X0lOVEVSRkFDRVNfRk9SX0VBQ0hfJGNvbmRpdGlvbmFsKG1hY3JvKSBcXFxuIjsKKyAgICAgICAg
cHJpbnQgRiAiI2RlZmluZSBET01fJHttYWNyb1N0eWxlZE5hbWVzcGFjZX1fSU5URVJGQUNFU19G
T1JfRUFDSF8kY29uZGl0aW9uYWwobWFjcm8pIFxcXG4iOwogCiAgICAgICAgIGZvciBteSAkaW50
ZXJmYWNlIChzb3J0IGtleXMgJXsgJGludGVyZmFjZXNCeUNvbmRpdGlvbmFseyRjb25kaXRpb25h
bH0gfSkgewogICAgICAgICAgICAgbmV4dCBpZiBkZWZpbmVkKCR1bmNvbmRpdGlvbmFsSW50ZXJm
YWNlc3skaW50ZXJmYWNlfSk7CiAgICAgICAgICAgICBwcmludCBGICIgICAgbWFjcm8oJGludGVy
ZmFjZSkgXFxcbiI7CiAgICAgICAgIH0KIAotICAgICAgICBwcmludCBGICIvLyBFbmQgb2YgRE9N
X0VWRU5UX0lOVEVSRkFDRVNfRk9SX0VBQ0hfJGNvbmRpdGlvbmFsXG4iOworICAgICAgICBwcmlu
dCBGICIvLyBFbmQgb2YgRE9NXyR7bWFjcm9TdHlsZWROYW1lc3BhY2V9X0lOVEVSRkFDRVNfRk9S
X0VBQ0hfJGNvbmRpdGlvbmFsXG4iOwogICAgICAgICBwcmludCBGICIjZWxzZVxuIjsKLSAgICAg
ICAgcHJpbnQgRiAiI2RlZmluZSBET01fRVZFTlRfSU5URVJGQUNFU19GT1JfRUFDSF8kY29uZGl0
aW9uYWwobWFjcm8pXG4iOworICAgICAgICBwcmludCBGICIjZGVmaW5lIERPTV8ke21hY3JvU3R5
bGVkTmFtZXNwYWNlfV9JTlRFUkZBQ0VTX0ZPUl9FQUNIXyRjb25kaXRpb25hbChtYWNybylcbiI7
CiAgICAgICAgIHByaW50IEYgIiNlbmRpZlxuIjsKICAgICAgICAgcHJpbnQgRiAiXG4iOwogICAg
IH0KIAotICAgIHByaW50IEYgIiNkZWZpbmUgRE9NX0VWRU5UX0lOVEVSRkFDRVNfRk9SX0VBQ0go
bWFjcm8pIFxcXG4iOworICAgIHByaW50IEYgIiNkZWZpbmUgRE9NXyR7bWFjcm9TdHlsZWROYW1l
c3BhY2V9X0lOVEVSRkFDRVNfRk9SX0VBQ0gobWFjcm8pIFxcXG4iOwogICAgIHByaW50IEYgIiAg
ICBcXFxuIjsKICAgICBmb3IgbXkgJGludGVyZmFjZSAoc29ydCBrZXlzICV1bmNvbmRpdGlvbmFs
SW50ZXJmYWNlcykgewogICAgICAgICAgICAgcHJpbnQgRiAiICAgIG1hY3JvKCRpbnRlcmZhY2Up
IFxcXG4iOwogICAgIH0KICAgICBwcmludCBGICIgICAgXFxcbiI7CiAgICAgZm9yIG15ICRjb25k
aXRpb25hbCAoc29ydCBrZXlzICVpbnRlcmZhY2VzQnlDb25kaXRpb25hbCkgewotICAgICAgICBw
cmludCBGICIgICAgRE9NX0VWRU5UX0lOVEVSRkFDRVNfRk9SX0VBQ0hfJGNvbmRpdGlvbmFsKG1h
Y3JvKSBcXFxuIjsKKyAgICAgICAgcHJpbnQgRiAiICAgIERPTV8ke21hY3JvU3R5bGVkTmFtZXNw
YWNlfV9JTlRFUkZBQ0VTX0ZPUl9FQUNIXyRjb25kaXRpb25hbChtYWNybykgXFxcbiI7CiAgICAg
fQogCiAgICAgcHJpbnQgRiAiXG4iOwotICAgIHByaW50IEYgIiNlbmRpZiAvLyBFdmVudEludGVy
ZmFjZXNfaFxuIjsKKyAgICBwcmludCBGICIjZW5kaWYgLy8gJHtuYW1lc3BhY2V9SW50ZXJmYWNl
c19oXG4iOwogCiAgICAgY2xvc2UgRjsKIH0KQEAgLTIzMSw4ICsyNDUsOCBAQCBzdWIgcHJpbnRI
ZWFkZXJzRmlsZSgkKQogCiAgICAgcHJpbnRMaWNlbnNlSGVhZGVyKCRGKTsKIAotICAgIHByaW50
IEYgIiNpZm5kZWYgRXZlbnRIZWFkZXJzX2hcbiI7Ci0gICAgcHJpbnQgRiAiI2RlZmluZSBFdmVu
dEhlYWRlcnNfaFxuIjsKKyAgICBwcmludCBGICIjaWZuZGVmICR7bmFtZXNwYWNlfUhlYWRlcnNf
aFxuIjsKKyAgICBwcmludCBGICIjZGVmaW5lICR7bmFtZXNwYWNlfUhlYWRlcnNfaFxuIjsKICAg
ICBwcmludCBGICJcbiI7CiAKICAgICBteSAlaW5jbHVkZWRJbnRlcmZhY2VzID0gKCk7CkBAIC0y
NTUsNyArMjY5LDcgQEAgc3ViIHByaW50SGVhZGVyc0ZpbGUoJCkKICAgICB9CiAKICAgICBwcmlu
dCBGICJcbiI7Ci0gICAgcHJpbnQgRiAiI2VuZGlmIC8vIEV2ZW50SGVhZGVyc19oXG4iOworICAg
IHByaW50IEYgIiNlbmRpZiAvLyAke25hbWVzcGFjZX1IZWFkZXJzX2hcbiI7CiAKICAgICBjbG9z
ZSBGOwogfQpAQCAtMjY3LDcgKzI4MSw3IEBAIHN1YiBwcmludExpY2Vuc2VIZWFkZXIoJCkKICAg
ICBwcmludCBGICIvKgogICogVEhJUyBGSUxFIFdBUyBBVVRPTUFUSUNBTExZIEdFTkVSQVRFRCwg
RE8gTk9UIEVESVQuCiAgKgotICogVGhpcyBmaWxlIHdhcyBnZW5lcmF0ZWQgYnkgdGhlIGRvbS9t
YWtlX2V2ZW50cy5wbCBzY3JpcHQuCisgKiBUaGlzIGZpbGUgd2FzIGdlbmVyYXRlZCBieSB0aGUg
ZG9tL21ha2VfZXZlbnRfZmFjdG9yeS5wbCBzY3JpcHQuCiAgKgogICogQ29weXJpZ2h0IChDKSAy
MDExIEdvb2dsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvZmlsZWFwaS9GaWxlUmVhZGVyLmNwcAkocmV2aXNpb24gOTgzNTgpCisrKyBTb3VyY2UvV2Vi
Q29yZS9maWxlYXBpL0ZpbGVSZWFkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Miw2ICs2Miwx
MSBAQCBGaWxlUmVhZGVyOjp+RmlsZVJlYWRlcigpCiAgICAgdGVybWluYXRlKCk7CiB9CiAKK2Nv
bnN0IEF0b21pY1N0cmluZyYgRmlsZVJlYWRlcjo6aW50ZXJmYWNlTmFtZSgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIGV2ZW50TmFtZXMoKS5pbnRlcmZhY2VGb3JGaWxlUmVhZGVyOworfQorCiBib29s
IEZpbGVSZWFkZXI6Omhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1f
c3RhdGUgPT0gTE9BRElORyB8fCBBY3RpdmVET01PYmplY3Q6Omhhc1BlbmRpbmdBY3Rpdml0eSgp
OwpJbmRleDogU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyLmgJKHJldmlzaW9uIDk4MzU4KQor
KysgU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyLmgJKHdvcmtpbmcgY29weSkKQEAg
LTg1LDcgKzg1LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBoYXNQZW5kaW5nQWN0aXZp
dHkoKSBjb25zdDsKIAogICAgIC8vIEV2ZW50VGFyZ2V0Ci0gICAgdmlydHVhbCBGaWxlUmVhZGVy
KiB0b0ZpbGVSZWFkZXIoKSB7IHJldHVybiB0aGlzOyB9CisgICAgdmlydHVhbCBjb25zdCBBdG9t
aWNTdHJpbmcmIGludGVyZmFjZU5hbWUoKSBjb25zdDsKICAgICB2aXJ0dWFsIFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdCB7IHJldHVybiBBY3Rp
dmVET01PYmplY3Q6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsgfQogCiAgICAgLy8gRmlsZVJl
YWRlckxvYWRlckNsaWVudApJbmRleDogU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlV3JpdGVy
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVXcml0ZXIuY3Bw
CShyZXZpc2lvbiA5ODM1OCkKKysrIFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVdyaXRlci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTY1LDYgKzY1LDExIEBAIEZpbGVXcml0ZXI6On5GaWxlV3Jp
dGVyKCkKICAgICAgICAgc3RvcCgpOwogfQogCitjb25zdCBBdG9taWNTdHJpbmcmIEZpbGVXcml0
ZXI6OmludGVyZmFjZU5hbWUoKSBjb25zdAoreworICAgIHJldHVybiBldmVudE5hbWVzKCkuaW50
ZXJmYWNlRm9yRmlsZVdyaXRlcjsKK30KKwogYm9vbCBGaWxlV3JpdGVyOjpoYXNQZW5kaW5nQWN0
aXZpdHkoKSBjb25zdAogewogICAgIHJldHVybiBtX3JlYWR5U3RhdGUgPT0gV1JJVElORyB8fCBB
Y3RpdmVET01PYmplY3Q6Omhhc1BlbmRpbmdBY3Rpdml0eSgpOwpJbmRleDogU291cmNlL1dlYkNv
cmUvZmlsZWFwaS9GaWxlV3JpdGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZmls
ZWFwaS9GaWxlV3JpdGVyLmgJKHJldmlzaW9uIDk4MzU4KQorKysgU291cmNlL1dlYkNvcmUvZmls
ZWFwaS9GaWxlV3JpdGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTc2LDcgKzc2LDcgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgdm9pZCBzdG9wKCk7CiAKICAgICAvLyBFdmVudFRhcmdldAotICAgIHZp
cnR1YWwgRmlsZVdyaXRlciogdG9GaWxlV3JpdGVyKCkgeyByZXR1cm4gdGhpczsgfQorICAgIHZp
cnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBpbnRlcmZhY2VOYW1lKCkgY29uc3Q7CiAgICAgdmly
dHVhbCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29u
c3QgeyByZXR1cm4gQWN0aXZlRE9NT2JqZWN0OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7IH0K
IAogICAgIHVzaW5nIFJlZkNvdW50ZWQ8RmlsZVdyaXRlckJhc2U+OjpyZWY7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvRE9NQXBwbGljYXRpb25DYWNoZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0RPTUFwcGxpY2F0aW9uQ2Fj
aGUuY3BwCShyZXZpc2lvbiA5ODM1OCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNo
ZS9ET01BcHBsaWNhdGlvbkNhY2hlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODQsNiArODQsMTEg
QEAgdm9pZCBET01BcHBsaWNhdGlvbkNhY2hlOjpzd2FwQ2FjaGUoRXhjZQogICAgICAgICBlYyA9
IElOVkFMSURfU1RBVEVfRVJSOwogfQogCitjb25zdCBBdG9taWNTdHJpbmcmIERPTUFwcGxpY2F0
aW9uQ2FjaGU6OmludGVyZmFjZU5hbWUoKSBjb25zdAoreworICAgIHJldHVybiBldmVudE5hbWVz
KCkuaW50ZXJmYWNlRm9yRE9NQXBwbGljYXRpb25DYWNoZTsKK30KKwogU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogRE9NQXBwbGljYXRpb25DYWNoZTo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNv
bnN0CiB7CiAgICAgaWYgKG1fZnJhbWUpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBw
Y2FjaGUvRE9NQXBwbGljYXRpb25DYWNoZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2xvYWRlci9hcHBjYWNoZS9ET01BcHBsaWNhdGlvbkNhY2hlLmgJKHJldmlzaW9uIDk4MzU4KQor
KysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0RPTUFwcGxpY2F0aW9uQ2FjaGUuaAko
d29ya2luZyBjb3B5KQpAQCAtNjksOCArNjksOCBAQCBwdWJsaWM6CiAgICAgREVGSU5FX0FUVFJJ
QlVURV9FVkVOVF9MSVNURU5FUihjYWNoZWQpOwogICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRf
TElTVEVORVIob2Jzb2xldGUpOwogCisgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIGlu
dGVyZmFjZU5hbWUoKSBjb25zdDsKICAgICB2aXJ0dWFsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdDsKLSAgICBET01BcHBsaWNhdGlvbkNhY2hl
KiB0b0RPTUFwcGxpY2F0aW9uQ2FjaGUoKSB7IHJldHVybiB0aGlzOyB9CiAKICAgICBzdGF0aWMg
Y29uc3QgQXRvbWljU3RyaW5nJiB0b0V2ZW50VHlwZShBcHBsaWNhdGlvbkNhY2hlSG9zdDo6RXZl
bnRJRCBpZCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL21lZGlhc3RyZWFtL0xvY2FsTWVkaWFT
dHJlYW0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL21lZGlhc3RyZWFtL0xvY2Fs
TWVkaWFTdHJlYW0uY3BwCShyZXZpc2lvbiA5ODM1OCkKKysrIFNvdXJjZS9XZWJDb3JlL21lZGlh
c3RyZWFtL0xvY2FsTWVkaWFTdHJlYW0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NSw5ICs2NSw5
IEBAIExvY2FsTWVkaWFTdHJlYW06On5Mb2NhbE1lZGlhU3RyZWFtKCkKIHsKIH0KIAotTG9jYWxN
ZWRpYVN0cmVhbSogTG9jYWxNZWRpYVN0cmVhbTo6dG9Mb2NhbE1lZGlhU3RyZWFtKCkKK2NvbnN0
IEF0b21pY1N0cmluZyYgTG9jYWxNZWRpYVN0cmVhbTo6aW50ZXJmYWNlTmFtZSgpIGNvbnN0CiB7
Ci0gICAgcmV0dXJuIHRoaXM7CisgICAgcmV0dXJuIGV2ZW50TmFtZXMoKS5pbnRlcmZhY2VGb3JM
b2NhbE1lZGlhU3RyZWFtOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9tZWRpYXN0cmVhbS9Mb2NhbE1lZGlhU3RyZWFtLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvbWVkaWFzdHJlYW0vTG9jYWxNZWRpYVN0cmVhbS5oCShyZXZpc2lvbiA5
ODM1OCkKKysrIFNvdXJjZS9XZWJDb3JlL21lZGlhc3RyZWFtL0xvY2FsTWVkaWFTdHJlYW0uaAko
d29ya2luZyBjb3B5KQpAQCAtNDAsOCArNDAsOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHN0b3Ao
KTsKIAotICAgIC8vIEV2ZW50VGFyZ2V0LgotICAgIHZpcnR1YWwgTG9jYWxNZWRpYVN0cmVhbSog
dG9Mb2NhbE1lZGlhU3RyZWFtKCk7CisgICAgLy8gRXZlbnRUYXJnZXQKKyAgICB2aXJ0dWFsIGNv
bnN0IEF0b21pY1N0cmluZyYgaW50ZXJmYWNlTmFtZSgpIGNvbnN0OwogCiBwcml2YXRlOgogICAg
IExvY2FsTWVkaWFTdHJlYW0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IE1lZGlhU3Ry
ZWFtU291cmNlVmVjdG9yJik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9tZWRpYXN0cmVhbS9NZWRp
YVN0cmVhbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbWVkaWFzdHJlYW0vTWVk
aWFTdHJlYW0uY3BwCShyZXZpc2lvbiA5ODM1OCkKKysrIFNvdXJjZS9XZWJDb3JlL21lZGlhc3Ry
ZWFtL01lZGlhU3RyZWFtLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjQsMTEgKzY0LDYgQEAgTWVk
aWFTdHJlYW06OlJlYWR5U3RhdGUgTWVkaWFTdHJlYW06OnJlYQogICAgIHJldHVybiBtX2Rlc2Ny
aXB0b3ItPmVuZGVkKCkgPyBFTkRFRCA6IExJVkU7CiB9CiAKLU1lZGlhU3RyZWFtKiBNZWRpYVN0
cmVhbTo6dG9NZWRpYVN0cmVhbSgpCi17Ci0gICAgcmV0dXJuIHRoaXM7Ci19Ci0KIHZvaWQgTWVk
aWFTdHJlYW06OnN0cmVhbUVuZGVkKCkKIHsKICAgICBpZiAocmVhZHlTdGF0ZSgpID09IEVOREVE
KQpAQCAtNzksNiArNzQsMTEgQEAgdm9pZCBNZWRpYVN0cmVhbTo6c3RyZWFtRW5kZWQoKQogICAg
IGRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuZW5kZWRFdmVudCwgZmFs
c2UsIGZhbHNlKSk7CiB9CiAKK2NvbnN0IEF0b21pY1N0cmluZyYgTWVkaWFTdHJlYW06OmludGVy
ZmFjZU5hbWUoKSBjb25zdAoreworICAgIHJldHVybiBldmVudE5hbWVzKCkuaW50ZXJmYWNlRm9y
TWVkaWFTdHJlYW07Cit9CisKIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIE1lZGlhU3RyZWFtOjpz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9zY3JpcHRFeGVj
dXRpb25Db250ZXh0LmdldCgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvbWVkaWFzdHJlYW0vTWVk
aWFTdHJlYW0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9tZWRpYXN0cmVhbS9NZWRp
YVN0cmVhbS5oCShyZXZpc2lvbiA5ODM1OCkKKysrIFNvdXJjZS9XZWJDb3JlL21lZGlhc3RyZWFt
L01lZGlhU3RyZWFtLmgJKHdvcmtpbmcgY29weSkKQEAgLTYwLDggKzYwLDggQEAgcHVibGljOgog
CiAgICAgTWVkaWFTdHJlYW1EZXNjcmlwdG9yKiBkZXNjcmlwdG9yKCkgY29uc3QgeyByZXR1cm4g
bV9kZXNjcmlwdG9yLmdldCgpOyB9CiAKLSAgICAvLyBFdmVudFRhcmdldCBpbXBsZW1lbnRhdGlv
bi4KLSAgICB2aXJ0dWFsIE1lZGlhU3RyZWFtKiB0b01lZGlhU3RyZWFtKCk7CisgICAgLy8gRXZl
bnRUYXJnZXQKKyAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgaW50ZXJmYWNlTmFtZSgp
IGNvbnN0OwogICAgIHZpcnR1YWwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpIGNvbnN0OwogCiAgICAgdXNpbmcgUmVmQ291bnRlZDxNZWRpYVN0cmVhbT46
OnJlZjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL21lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9uLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9tZWRpYXN0cmVhbS9QZWVyQ29ubmVjdGlv
bi5jcHAJKHJldmlzaW9uIDk4MzU4KQorKysgU291cmNlL1dlYkNvcmUvbWVkaWFzdHJlYW0vUGVl
ckNvbm5lY3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMzYsOSArMjM2LDkgQEAgdm9pZCBQ
ZWVyQ29ubmVjdGlvbjo6cmVtb3RlU3RyZWFtUmVtb3ZlZAogICAgIGRpc3BhdGNoRXZlbnQoTWVk
aWFTdHJlYW1FdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5yZW1vdmVzdHJlYW1FdmVudCwgZmFs
c2UsIGZhbHNlLCBzdHJlYW0ucmVsZWFzZSgpKSk7CiB9CiAKLVBlZXJDb25uZWN0aW9uKiBQZWVy
Q29ubmVjdGlvbjo6dG9QZWVyQ29ubmVjdGlvbigpCitjb25zdCBBdG9taWNTdHJpbmcmIFBlZXJD
b25uZWN0aW9uOjppbnRlcmZhY2VOYW1lKCkgY29uc3QKIHsKLSAgICByZXR1cm4gdGhpczsKKyAg
ICByZXR1cm4gZXZlbnROYW1lcygpLmludGVyZmFjZUZvclBlZXJDb25uZWN0aW9uOwogfQogCiBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBQZWVyQ29ubmVjdGlvbjo6c2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpIGNvbnN0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9tZWRpYXN0cmVhbS9QZWVyQ29ubmVj
dGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL21lZGlhc3RyZWFtL1BlZXJDb25u
ZWN0aW9uLmgJKHJldmlzaW9uIDk4MzU4KQorKysgU291cmNlL1dlYkNvcmUvbWVkaWFzdHJlYW0v
UGVlckNvbm5lY3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtNzksOSArNzksNyBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCB2b2lkIHJlbW90ZVN0cmVhbVJlbW92ZWQoTWVkaWFTdHJlYW1EZXNjcmlw
dG9yKik7CiAKICAgICAvLyBFdmVudFRhcmdldAotICAgIHZpcnR1YWwgUGVlckNvbm5lY3Rpb24q
IHRvUGVlckNvbm5lY3Rpb24oKTsKLQotICAgIC8vIEV2ZW50VGFyZ2V0IGltcGxlbWVudGF0aW9u
LgorICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBpbnRlcmZhY2VOYW1lKCkgY29uc3Q7
CiAgICAgdmlydHVhbCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250
ZXh0KCkgY29uc3Q7CiAKICAgICAvLyBBY3RpdmVET01PYmplY3QKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5jcHAJKHJldmlzaW9uIDk4MzU4KQor
KysgU291cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xMDQsNiArMTA0LDExIEBAIFBhc3NSZWZQdHI8Tm90aWZpY2F0aW9uPiBOb3Rp
ZmljYXRpb246OmMKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IE5vdGlmaWNhdGlvbihjb250ZW50
cywgY29udGV4dCwgZWMsIHByb3ZpZGVyKSk7CiB9CiAKK2NvbnN0IEF0b21pY1N0cmluZyYgTm90
aWZpY2F0aW9uOjppbnRlcmZhY2VOYW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZXZlbnROYW1l
cygpLmludGVyZmFjZUZvck5vdGlmaWNhdGlvbjsKK30KKwogdm9pZCBOb3RpZmljYXRpb246OnNo
b3coKSAKIHsKICNpZiBQTEFURk9STShRVCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL25vdGlmaWNh
dGlvbnMvTm90aWZpY2F0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbm90aWZp
Y2F0aW9ucy9Ob3RpZmljYXRpb24uaAkocmV2aXNpb24gOTgzNTgpCisrKyBTb3VyY2UvV2ViQ29y
ZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC04MywxMyAr
ODMsMTMgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBERUZJTkVfQVRUUklCVVRFX0VW
RU5UX0xJU1RFTkVSKGVycm9yKTsKICAgICAgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNU
RU5FUihjbG9zZSk7CiAgICAgICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIoY2xp
Y2spOwotICAgIAorCiAgICAgICAgIHVzaW5nIFJlZkNvdW50ZWQ8Tm90aWZpY2F0aW9uPjo6cmVm
OwogICAgICAgICB1c2luZyBSZWZDb3VudGVkPE5vdGlmaWNhdGlvbj46OmRlcmVmOwotICAgIAor
CiAgICAgICAgIC8vIEV2ZW50VGFyZ2V0IGludGVyZmFjZQorICAgICAgICB2aXJ0dWFsIGNvbnN0
IEF0b21pY1N0cmluZyYgaW50ZXJmYWNlTmFtZSgpIGNvbnN0OwogICAgICAgICB2aXJ0dWFsIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdCB7IHJl
dHVybiBBY3RpdmVET01PYmplY3Q6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsgfQotICAgICAg
ICB2aXJ0dWFsIE5vdGlmaWNhdGlvbiogdG9Ob3RpZmljYXRpb24oKSB7IHJldHVybiB0aGlzOyB9
CiAKICAgICAgICAgLy8gQWN0aXZlRE9NT2JqZWN0IGludGVyZmFjZQogICAgICAgICB2aXJ0dWFs
IHZvaWQgY29udGV4dERlc3Ryb3llZCgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9ET01X
aW5kb3cuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNw
cAkocmV2aXNpb24gOTgzNTgpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTQ0NiwxMSArNDQ2LDIxIEBAIERPTVdpbmRvdzo6fkRPTVdpbmRv
dygpCiAgICAgcmVtb3ZlQWxsQmVmb3JlVW5sb2FkRXZlbnRMaXN0ZW5lcnModGhpcyk7CiB9CiAK
K2NvbnN0IEF0b21pY1N0cmluZyYgRE9NV2luZG93OjppbnRlcmZhY2VOYW1lKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gZXZlbnROYW1lcygpLmludGVyZmFjZUZvckRPTVdpbmRvdzsKK30KKwogU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCogRE9NV2luZG93OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkg
Y29uc3QKIHsKICAgICByZXR1cm4gZG9jdW1lbnQoKTsKIH0KIAorRE9NV2luZG93KiBET01XaW5k
b3c6OnRvRE9NV2luZG93KCkKK3sKKyAgICByZXR1cm4gdGhpczsKK30KKwogUGFzc1JlZlB0cjxN
ZWRpYVF1ZXJ5TGlzdD4gRE9NV2luZG93OjptYXRjaE1lZGlhKGNvbnN0IFN0cmluZyYgbWVkaWEp
CiB7CiAgICAgcmV0dXJuIGRvY3VtZW50KCkgPyBkb2N1bWVudCgpLT5tZWRpYVF1ZXJ5TWF0Y2hl
cigpLT5tYXRjaE1lZGlhKG1lZGlhKSA6IDA7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0RP
TVdpbmRvdy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmgJ
KHJldmlzaW9uIDk4MzU4KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaAkod29y
a2luZyBjb3B5KQpAQCAtODUsOSArODUsMTEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxET01XaW5kb3c+IGNyZWF0ZShGcmFtZSogZnJhbWUpIHsgcmV0
dXJuIGFkb3B0UmVmKG5ldyBET01XaW5kb3coZnJhbWUpKTsgfQogICAgICAgICB2aXJ0dWFsIH5E
T01XaW5kb3coKTsKIAotICAgICAgICB2aXJ0dWFsIERPTVdpbmRvdyogdG9ET01XaW5kb3coKSB7
IHJldHVybiB0aGlzOyB9CisgICAgICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBpbnRl
cmZhY2VOYW1lKCkgY29uc3Q7CiAgICAgICAgIHZpcnR1YWwgU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0OwogCisgICAgICAgIHZpcnR1YWwgRE9N
V2luZG93KiB0b0RPTVdpbmRvdygpOworCiAgICAgICAgIEZyYW1lKiBmcmFtZSgpIGNvbnN0IHsg
cmV0dXJuIG1fZnJhbWU7IH0KICAgICAgICAgdm9pZCBkaXNjb25uZWN0RnJhbWUoKTsKIApJbmRl
eDogU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudFNvdXJjZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGFnZS9FdmVudFNvdXJjZS5jcHAJKHJldmlzaW9uIDk4MzU4KQorKysgU291
cmNlL1dlYkNvcmUvcGFnZS9FdmVudFNvdXJjZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4Niw2
ICsxODYsMTEgQEAgdm9pZCBFdmVudFNvdXJjZTo6Y2xvc2UoKQogICAgIG1fc3RhdGUgPSBDTE9T
RUQ7CiB9CiAKK2NvbnN0IEF0b21pY1N0cmluZyYgRXZlbnRTb3VyY2U6OmludGVyZmFjZU5hbWUo
KSBjb25zdAoreworICAgIHJldHVybiBldmVudE5hbWVzKCkuaW50ZXJmYWNlRm9yRXZlbnRTb3Vy
Y2U7Cit9CisKIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIEV2ZW50U291cmNlOjpzY3JpcHRFeGVj
dXRpb25Db250ZXh0KCkgY29uc3QKIHsKICAgICByZXR1cm4gQWN0aXZlRE9NT2JqZWN0OjpzY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50U291
cmNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudFNvdXJjZS5oCShy
ZXZpc2lvbiA5ODM1OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRTb3VyY2UuaAkod29y
a2luZyBjb3B5KQpAQCAtNzUsNyArNzUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAg
IHVzaW5nIFJlZkNvdW50ZWQ8RXZlbnRTb3VyY2U+OjpyZWY7CiAgICAgICAgIHVzaW5nIFJlZkNv
dW50ZWQ8RXZlbnRTb3VyY2U+OjpkZXJlZjsKIAotICAgICAgICB2aXJ0dWFsIEV2ZW50U291cmNl
KiB0b0V2ZW50U291cmNlKCkgeyByZXR1cm4gdGhpczsgfQorICAgICAgICB2aXJ0dWFsIGNvbnN0
IEF0b21pY1N0cmluZyYgaW50ZXJmYWNlTmFtZSgpIGNvbnN0OwogICAgICAgICB2aXJ0dWFsIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdDsKIAog
ICAgICAgICB2aXJ0dWFsIHZvaWQgc3RvcCgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3RvcmFn
ZS9JREJEYXRhYmFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3RvcmFnZS9J
REJEYXRhYmFzZS5jcHAJKHJldmlzaW9uIDk4MzU4KQorKysgU291cmNlL1dlYkNvcmUvc3RvcmFn
ZS9JREJEYXRhYmFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxOCw2ICsyMTgsMTEgQEAgdm9p
ZCBJREJEYXRhYmFzZTo6c3RvcCgpCiAgICAgbV9zdG9wcGVkID0gdHJ1ZTsKIH0KIAorY29uc3Qg
QXRvbWljU3RyaW5nJiBJREJEYXRhYmFzZTo6aW50ZXJmYWNlTmFtZSgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIGV2ZW50TmFtZXMoKS5pbnRlcmZhY2VGb3JJREJEYXRhYmFzZTsKK30KKwogU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogSURCRGF0YWJhc2U6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBj
b25zdAogewogICAgIHJldHVybiBBY3RpdmVET01PYmplY3Q6OnNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJhc2UuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFiYXNlLmgJKHJldmlzaW9uIDk4
MzU4KQorKysgU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJEYXRhYmFzZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC04MiwxMCArODIsOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHN0b3AoKTsK
IAogICAgIC8vIEV2ZW50VGFyZ2V0Ci0gICAgdmlydHVhbCBJREJEYXRhYmFzZSogdG9JREJEYXRh
YmFzZSgpIHsgcmV0dXJuIHRoaXM7IH0KKyAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYg
aW50ZXJmYWNlTmFtZSgpIGNvbnN0OwogICAgIHZpcnR1YWwgU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0OwogCi0KICAgICB2b2lkIG9wZW4oKTsK
ICAgICB2b2lkIGVucXVldWVFdmVudChQYXNzUmVmUHRyPEV2ZW50Pik7CiAgICAgYm9vbCBkaXNw
YXRjaEV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+IGV2ZW50LCBFeGNlcHRpb25Db2RlJiBlYykgeyBy
ZXR1cm4gRXZlbnRUYXJnZXQ6OmRpc3BhdGNoRXZlbnQoZXZlbnQsIGVjKTsgfQpJbmRleDogU291
cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJSZXF1ZXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9zdG9yYWdlL0lEQlJlcXVlc3QuY3BwCShyZXZpc2lvbiA5ODM1OCkKKysrIFNvdXJj
ZS9XZWJDb3JlL3N0b3JhZ2UvSURCUmVxdWVzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2MSw2
ICsyNjEsMTEgQEAgdm9pZCBJREJSZXF1ZXN0OjpvbkJsb2NrZWQoKQogICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwogfQogCitjb25zdCBBdG9taWNTdHJpbmcmIElEQlJlcXVlc3Q6OmludGVyZmFj
ZU5hbWUoKSBjb25zdAoreworICAgIHJldHVybiBldmVudE5hbWVzKCkuaW50ZXJmYWNlRm9ySURC
UmVxdWVzdDsKK30KKwogU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogSURCUmVxdWVzdDo6c2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIEFjdGl2ZURPTU9iamVjdDo6
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3RvcmFnZS9J
REJSZXF1ZXN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJSZXF1
ZXN0LmgJKHJldmlzaW9uIDk4MzU4KQorKysgU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJSZXF1
ZXN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTg3LDcgKzg3LDcgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgYm9vbCBoYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdDsKIAogICAgIC8vIEV2ZW50VGFyZ2V0
Ci0gICAgdmlydHVhbCBJREJSZXF1ZXN0KiB0b0lEQlJlcXVlc3QoKSB7IHJldHVybiB0aGlzOyB9
CisgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIGludGVyZmFjZU5hbWUoKSBjb25zdDsK
ICAgICB2aXJ0dWFsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgZGlzcGF0Y2hFdmVudChQYXNzUmVmUHRyPEV2
ZW50Pik7CiAgICAgYm9vbCBkaXNwYXRjaEV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+IGV2ZW50LCBF
eGNlcHRpb25Db2RlJiBlYykgeyByZXR1cm4gRXZlbnRUYXJnZXQ6OmRpc3BhdGNoRXZlbnQoZXZl
bnQsIGVjKTsgfQpJbmRleDogU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJUcmFuc2FjdGlvbi5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJUcmFuc2FjdGlvbi5j
cHAJKHJldmlzaW9uIDk4MzU4KQorKysgU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJUcmFuc2Fj
dGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzOCw2ICsxMzgsMTEgQEAgYm9vbCBJREJUcmFu
c2FjdGlvbjo6aGFzUGVuZGluZ0FjdGl2aXR5KAogICAgIHJldHVybiAhbV9maW5pc2hlZCB8fCBB
Y3RpdmVET01PYmplY3Q6Omhhc1BlbmRpbmdBY3Rpdml0eSgpOwogfQogCitjb25zdCBBdG9taWNT
dHJpbmcmIElEQlRyYW5zYWN0aW9uOjppbnRlcmZhY2VOYW1lKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gZXZlbnROYW1lcygpLmludGVyZmFjZUZvcklEQlRyYW5zYWN0aW9uOworfQorCiBTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBJREJUcmFuc2FjdGlvbjo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
IGNvbnN0CiB7CiAgICAgcmV0dXJuIEFjdGl2ZURPTU9iamVjdDo6c2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJUcmFuc2FjdGlvbi5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCVHJhbnNhY3Rpb24uaAkocmV2
aXNpb24gOTgzNTgpCisrKyBTb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQlRyYW5zYWN0aW9uLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTc0LDcgKzc0LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9p
ZCBvbkNvbXBsZXRlKCk7CiAKICAgICAvLyBFdmVudFRhcmdldAotICAgIHZpcnR1YWwgSURCVHJh
bnNhY3Rpb24qIHRvSURCVHJhbnNhY3Rpb24oKSB7IHJldHVybiB0aGlzOyB9CisgICAgdmlydHVh
bCBjb25zdCBBdG9taWNTdHJpbmcmIGludGVyZmFjZU5hbWUoKSBjb25zdDsKICAgICB2aXJ0dWFs
IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdDsK
ICAgICB2aXJ0dWFsIGJvb2wgZGlzcGF0Y2hFdmVudChQYXNzUmVmUHRyPEV2ZW50Pik7CiAgICAg
Ym9vbCBkaXNwYXRjaEV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+IGV2ZW50LCBFeGNlcHRpb25Db2Rl
JiBlYykgeyByZXR1cm4gRXZlbnRUYXJnZXQ6OmRpc3BhdGNoRXZlbnQoZXZlbnQsIGVjKTsgfQpJ
bmRleDogU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJWZXJzaW9uQ2hhbmdlUmVxdWVzdC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJWZXJzaW9uQ2hhbmdlUmVx
dWVzdC5jcHAJKHJldmlzaW9uIDk4MzU4KQorKysgU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJW
ZXJzaW9uQ2hhbmdlUmVxdWVzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDYgKzQ4LDExIEBA
IElEQlZlcnNpb25DaGFuZ2VSZXF1ZXN0Ojp+SURCVmVyc2lvbkNoYW4KIHsKIH0KIAorY29uc3Qg
QXRvbWljU3RyaW5nJiBJREJWZXJzaW9uQ2hhbmdlUmVxdWVzdDo6aW50ZXJmYWNlTmFtZSgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIGV2ZW50TmFtZXMoKS5pbnRlcmZhY2VGb3JJREJWZXJzaW9uQ2hh
bmdlUmVxdWVzdDsKK30KKwogdm9pZCBJREJWZXJzaW9uQ2hhbmdlUmVxdWVzdDo6b25CbG9ja2Vk
KCkKIHsKICAgICBBU1NFUlQoIW1fZXJyb3JDb2RlICYmIG1fZXJyb3JNZXNzYWdlLmlzTnVsbCgp
ICYmICFtX3Jlc3VsdCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQlZlcnNpb25D
aGFuZ2VSZXF1ZXN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJW
ZXJzaW9uQ2hhbmdlUmVxdWVzdC5oCShyZXZpc2lvbiA5ODM1OCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3N0b3JhZ2UvSURCVmVyc2lvbkNoYW5nZVJlcXVlc3QuaAkod29ya2luZyBjb3B5KQpAQCAtMzks
NiArMzksOSBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgb25CbG9ja2VkKCk7CiAKKyAg
ICAvLyBFdmVudFRhcmdldAorICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBpbnRlcmZh
Y2VOYW1lKCkgY29uc3Q7CisKICAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKGJs
b2NrZWQpOwogCiBwcml2YXRlOgpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnRJ
bnN0YW5jZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnRJ
bnN0YW5jZS5jcHAJKHJldmlzaW9uIDk4MzU4KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0Vs
ZW1lbnRJbnN0YW5jZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyMSw2ICsxMjEsMTEgQEAgdm9p
ZCBTVkdFbGVtZW50SW5zdGFuY2U6OmludmFsaWRhdGVBbGxJbgogICAgIGVsZW1lbnQtPmRvY3Vt
ZW50KCktPnVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cygpOwogfQogCitjb25z
dCBBdG9taWNTdHJpbmcmIFNWR0VsZW1lbnRJbnN0YW5jZTo6aW50ZXJmYWNlTmFtZSgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIGV2ZW50TmFtZXMoKS5pbnRlcmZhY2VGb3JTVkdFbGVtZW50SW5zdGFu
Y2U7Cit9CisKIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIFNWR0VsZW1lbnRJbnN0YW5jZTo6c2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fZWxlbWVudC0+ZG9j
dW1lbnQoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50SW5zdGFuY2UuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudEluc3RhbmNlLmgJKHJl
dmlzaW9uIDk4MzU4KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnRJbnN0YW5jZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC00Nyw2ICs0Nyw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwg
flNWR0VsZW1lbnRJbnN0YW5jZSgpOwogCisgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcm
IGludGVyZmFjZU5hbWUoKSBjb25zdDsKICAgICB2aXJ0dWFsIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdDsKIAogICAgIHZpcnR1YWwgYm9vbCBh
ZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBQYXNzUmVmUHRy
PEV2ZW50TGlzdGVuZXI+LCBib29sIHVzZUNhcHR1cmUpOwpAQCAtMTM5LDcgKzE0MCw2IEBAIHBy
aXZhdGU6CiAgICAgU1ZHRWxlbWVudEluc3RhbmNlKFNWR1VzZUVsZW1lbnQqLCBTVkdVc2VFbGVt
ZW50KiwgUGFzc1JlZlB0cjxTVkdFbGVtZW50PiBvcmlnaW5hbEVsZW1lbnQpOwogCiAgICAgdmly
dHVhbCBOb2RlKiB0b05vZGUoKSB7IHJldHVybiBzaGFkb3dUcmVlRWxlbWVudCgpOyB9Ci0gICAg
dmlydHVhbCBTVkdFbGVtZW50SW5zdGFuY2UqIHRvU1ZHRWxlbWVudEluc3RhbmNlKCkgeyByZXR1
cm4gdGhpczsgfQogCiAgICAgdm9pZCBhcHBlbmRDaGlsZChQYXNzUmVmUHRyPFNWR0VsZW1lbnRJ
bnN0YW5jZT4gY2hpbGQpOwogICAgIHZvaWQgc2V0U2hhZG93VHJlZUVsZW1lbnQoU1ZHRWxlbWVu
dCopOwpJbmRleDogU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwCShyZXZp
c2lvbiA5ODM1OCkKKysrIFNvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTczMSwxNCArNzMxLDE0IEBAIHZvaWQgQXVkaW9Db250ZXh0Ojpo
YW5kbGVEaXJ0eUF1ZGlvTm9kZU8KICAgICBtX2RpcnR5QXVkaW9Ob2RlT3V0cHV0cy5jbGVhcigp
OwogfQogCi1TY3JpcHRFeGVjdXRpb25Db250ZXh0KiBBdWRpb0NvbnRleHQ6OnNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKSBjb25zdAorY29uc3QgQXRvbWljU3RyaW5nJiBBdWRpb0NvbnRleHQ6Omlu
dGVyZmFjZU5hbWUoKSBjb25zdAogewotICAgIHJldHVybiBkb2N1bWVudCgpOworICAgIHJldHVy
biBldmVudE5hbWVzKCkuaW50ZXJmYWNlRm9yQXVkaW9Db250ZXh0OwogfQogCi1BdWRpb0NvbnRl
eHQqIEF1ZGlvQ29udGV4dDo6dG9BdWRpb0NvbnRleHQoKQorU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogQXVkaW9Db250ZXh0OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QKIHsKLSAgICBy
ZXR1cm4gdGhpczsKKyAgICByZXR1cm4gZG9jdW1lbnQoKTsKIH0KIAogdm9pZCBBdWRpb0NvbnRl
eHQ6OnN0YXJ0UmVuZGVyaW5nKCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0F1ZGlv
Q29udGV4dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0F1ZGlvQ29u
dGV4dC5oCShyZXZpc2lvbiA5ODM1OCkKKysrIFNvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0F1ZGlv
Q29udGV4dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMDgsOCArMjA4LDggQEAgcHVibGljOgogICAg
IHZvaWQgbWFya0F1ZGlvTm9kZU91dHB1dERpcnR5KEF1ZGlvTm9kZU91dHB1dCopOwogCiAgICAg
Ly8gRXZlbnRUYXJnZXQKKyAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgaW50ZXJmYWNl
TmFtZSgpIGNvbnN0OwogICAgIHZpcnR1YWwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0OwotICAgIHZpcnR1YWwgQXVkaW9Db250ZXh0KiB0b0F1
ZGlvQ29udGV4dCgpOwogICAgIHZpcnR1YWwgRXZlbnRUYXJnZXREYXRhKiBldmVudFRhcmdldERh
dGEoKSB7IHJldHVybiAmbV9ldmVudFRhcmdldERhdGE7IH0KICAgICB2aXJ0dWFsIEV2ZW50VGFy
Z2V0RGF0YSogZW5zdXJlRXZlbnRUYXJnZXREYXRhKCkgeyByZXR1cm4gJm1fZXZlbnRUYXJnZXRE
YXRhOyB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0phdmFTY3JpcHRBdWRpb05v
ZGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0phdmFTY3JpcHRB
dWRpb05vZGUuY3BwCShyZXZpc2lvbiA5ODM1OCkKKysrIFNvdXJjZS9XZWJDb3JlL3dlYmF1ZGlv
L0phdmFTY3JpcHRBdWRpb05vZGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTksMTEgKzExOSw2
IEBAIHZvaWQgSmF2YVNjcmlwdEF1ZGlvTm9kZTo6dW5pbml0aWFsaXplKCkKICAgICBBdWRpb05v
ZGU6OnVuaW5pdGlhbGl6ZSgpOwogfQogCi1KYXZhU2NyaXB0QXVkaW9Ob2RlKiBKYXZhU2NyaXB0
QXVkaW9Ob2RlOjp0b0phdmFTY3JpcHRBdWRpb05vZGUoKQotewotICAgIHJldHVybiB0aGlzOwot
fQotCiB2b2lkIEphdmFTY3JpcHRBdWRpb05vZGU6OnByb2Nlc3Moc2l6ZV90IGZyYW1lc1RvUHJv
Y2VzcykKIHsKICAgICAvLyBEaXNjdXNzaW9uIGFib3V0IGlucHV0cyBhbmQgb3V0cHV0czoKQEAg
LTI2Miw2ICsyNTcsMTEgQEAgdm9pZCBKYXZhU2NyaXB0QXVkaW9Ob2RlOjpyZXNldCgpCiAgICAg
fQogfQogCitjb25zdCBBdG9taWNTdHJpbmcmIEphdmFTY3JpcHRBdWRpb05vZGU6OmludGVyZmFj
ZU5hbWUoKSBjb25zdAoreworICAgIHJldHVybiBldmVudE5hbWVzKCkuaW50ZXJmYWNlRm9ySmF2
YVNjcmlwdEF1ZGlvTm9kZTsKK30KKwogU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogSmF2YVNjcmlw
dEF1ZGlvTm9kZTo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0CiB7CiAgICAgcmV0dXJu
IGNvbnN0X2Nhc3Q8SmF2YVNjcmlwdEF1ZGlvTm9kZSo+KHRoaXMpLT5jb250ZXh0KCktPmRvY3Vt
ZW50KCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9KYXZhU2NyaXB0QXVkaW9Ob2Rl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vSmF2YVNjcmlwdEF1ZGlv
Tm9kZS5oCShyZXZpc2lvbiA5ODM1OCkKKysrIFNvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0phdmFT
Y3JpcHRBdWRpb05vZGUuaAkod29ya2luZyBjb3B5KQpAQCAtNjMsOCArNjMsOCBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCB2b2lkIHVuaW5pdGlhbGl6ZSgpOwogCiAgICAgLy8gRXZlbnRUYXJnZXQK
KyAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgaW50ZXJmYWNlTmFtZSgpIGNvbnN0Owog
ICAgIHZpcnR1YWwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpIGNvbnN0OwotICAgIHZpcnR1YWwgSmF2YVNjcmlwdEF1ZGlvTm9kZSogdG9KYXZhU2NyaXB0
QXVkaW9Ob2RlKCk7CiAgICAgdmlydHVhbCBFdmVudFRhcmdldERhdGEqIGV2ZW50VGFyZ2V0RGF0
YSgpIHsgcmV0dXJuICZtX2V2ZW50VGFyZ2V0RGF0YTsgfQogICAgIHZpcnR1YWwgRXZlbnRUYXJn
ZXREYXRhKiBlbnN1cmVFdmVudFRhcmdldERhdGEoKSAgeyByZXR1cm4gJm1fZXZlbnRUYXJnZXRE
YXRhOyB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAJKHJl
dmlzaW9uIDk4MzU4KQorKysgU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC00MDcsNiArNDA3LDExIEBAIHZvaWQgV2ViU29ja2V0OjpzZXRC
aW5hcnlUeXBlKGNvbnN0IFN0cmkKICAgICByZXR1cm47CiB9CiAKK2NvbnN0IEF0b21pY1N0cmlu
ZyYgV2ViU29ja2V0OjppbnRlcmZhY2VOYW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZXZlbnRO
YW1lcygpLmludGVyZmFjZUZvcldlYlNvY2tldDsKK30KKwogU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogV2ViU29ja2V0OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QKIHsKICAgICByZXR1
cm4gQWN0aXZlRE9NT2JqZWN0OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0LmgJKHJldmlzaW9uIDk4MzU4KQorKysgU291cmNl
L1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXQuaAkod29ya2luZyBjb3B5KQpAQCAtOTAsOSAr
OTAsOSBAQCBwdWJsaWM6CiAgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUihjbG9z
ZSk7CiAKICAgICAvLyBFdmVudFRhcmdldAotICAgIHZpcnR1YWwgV2ViU29ja2V0KiB0b1dlYlNv
Y2tldCgpIHsgcmV0dXJuIHRoaXM7IH0KLQorICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5n
JiBpbnRlcmZhY2VOYW1lKCkgY29uc3Q7CiAgICAgdmlydHVhbCBTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3Q7CisKICAgICB2aXJ0dWFsIHZvaWQg
Y29udGV4dERlc3Ryb3llZCgpOwogICAgIHZpcnR1YWwgYm9vbCBjYW5TdXNwZW5kKCkgY29uc3Q7
CiAgICAgdmlydHVhbCB2b2lkIHN1c3BlbmQoUmVhc29uRm9yU3VzcGVuc2lvbik7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS93b3JrZXJzL0RlZGljYXRlZFdvcmtlckNvbnRleHQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvRGVkaWNhdGVkV29ya2VyQ29udGV4dC5jcHAJ
KHJldmlzaW9uIDk4MzU4KQorKysgU291cmNlL1dlYkNvcmUvd29ya2Vycy9EZWRpY2F0ZWRXb3Jr
ZXJDb250ZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDYsNiArNDYsMTEgQEAgRGVkaWNhdGVk
V29ya2VyQ29udGV4dDo6RGVkaWNhdGVkV29ya2VyQwogewogfQogCitjb25zdCBBdG9taWNTdHJp
bmcmIERlZGljYXRlZFdvcmtlckNvbnRleHQ6OmludGVyZmFjZU5hbWUoKSBjb25zdAoreworICAg
IHJldHVybiBldmVudE5hbWVzKCkuaW50ZXJmYWNlRm9yRGVkaWNhdGVkV29ya2VyQ29udGV4dDsK
K30KKwogLy8gRklYTUU6IHJlbW92ZSB0aGlzIHdoZW4gd2UgdXBkYXRlIHRoZSBPYmpDIGJpbmRp
bmdzIChidWcgIzI4Nzc0KS4KIHZvaWQgRGVkaWNhdGVkV29ya2VyQ29udGV4dDo6cG9zdE1lc3Nh
Z2UoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1lc3NhZ2UsIE1lc3NhZ2VQb3J0
KiBwb3J0LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvRGVkaWNhdGVkV29ya2VyQ29udGV4dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvRGVkaWNhdGVkV29ya2VyQ29udGV4dC5oCShyZXZpc2lvbiA5ODM1OCkKKysrIFNv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvRGVkaWNhdGVkV29ya2VyQ29udGV4dC5oCSh3b3JraW5nIGNv
cHkpCkBAIC01NCw3ICs1NCw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVh
bCB2b2lkIGltcG9ydFNjcmlwdHMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHVybHMsIEV4Y2VwdGlv
bkNvZGUmKTsKIAogICAgICAgICAvLyBFdmVudFRhcmdldAotICAgICAgICB2aXJ0dWFsIERlZGlj
YXRlZFdvcmtlckNvbnRleHQqIHRvRGVkaWNhdGVkV29ya2VyQ29udGV4dCgpIHsgcmV0dXJuIHRo
aXM7IH0KKyAgICAgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIGludGVyZmFjZU5hbWUo
KSBjb25zdDsKKwogICAgICAgICB2b2lkIHBvc3RNZXNzYWdlKFBhc3NSZWZQdHI8U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlPiwgRXhjZXB0aW9uQ29kZSYpOwogICAgICAgICB2b2lkIHBvc3RNZXNzYWdl
KFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiwgY29uc3QgTWVzc2FnZVBvcnRBcnJh
eSosIEV4Y2VwdGlvbkNvZGUmKTsKICAgICAgICAgLy8gRklYTUU6IHJlbW92ZSB0aGlzIHdoZW4g
d2UgdXBkYXRlIHRoZSBPYmpDIGJpbmRpbmdzIChidWcgIzI4Nzc0KS4KSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvRGVmYXVsdFNoYXJlZFdvcmtlclJlcG9zaXRvcnkuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvRGVmYXVsdFNoYXJlZFdvcmtlclJlcG9zaXRv
cnkuY3BwCShyZXZpc2lvbiA5ODM1OCkKKysrIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvRGVmYXVs
dFNoYXJlZFdvcmtlclJlcG9zaXRvcnkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNTksNyArMjU5
LDcgQEAgcHJpdmF0ZToKICAgICAgICAgLy8gU2luY2UgY2xvc2UoKSBzdG9wcyB0aGUgdGhyZWFk
IGV2ZW50IGxvb3AsIHRoaXMgc2hvdWxkIG5vdCBldmVyIGdldCBjYWxsZWQgd2hpbGUgY2xvc2lu
Zy4KICAgICAgICAgQVNTRVJUKCF3b3JrZXJDb250ZXh0LT5pc0Nsb3NpbmcoKSk7CiAgICAgICAg
IEFTU0VSVCh3b3JrZXJDb250ZXh0LT5pc1NoYXJlZFdvcmtlckNvbnRleHQoKSk7Ci0gICAgICAg
IHdvcmtlckNvbnRleHQtPnRvU2hhcmVkV29ya2VyQ29udGV4dCgpLT5kaXNwYXRjaEV2ZW50KGNy
ZWF0ZUNvbm5lY3RFdmVudChwb3J0KSk7CisgICAgICAgIHdvcmtlckNvbnRleHQtPmRpc3BhdGNo
RXZlbnQoY3JlYXRlQ29ubmVjdEV2ZW50KHBvcnQpKTsKICAgICB9CiAKICAgICBPd25QdHI8TWVz
c2FnZVBvcnRDaGFubmVsPiBtX2NoYW5uZWw7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS93b3JrZXJz
L1NoYXJlZFdvcmtlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvd29ya2Vycy9T
aGFyZWRXb3JrZXIuY3BwCShyZXZpc2lvbiA5ODM1OCkKKysrIFNvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvU2hhcmVkV29ya2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzMsNiArNzMsMTEgQEAgU2hh
cmVkV29ya2VyOjp+U2hhcmVkV29ya2VyKCkKIHsKIH0KIAorY29uc3QgQXRvbWljU3RyaW5nJiBT
aGFyZWRXb3JrZXI6OmludGVyZmFjZU5hbWUoKSBjb25zdAoreworICAgIHJldHVybiBldmVudE5h
bWVzKCkuaW50ZXJmYWNlRm9yU2hhcmVkV29ya2VyOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCiAKICNlbmRpZiAgLy8gRU5BQkxFKFNIQVJFRF9XT1JLRVJTKQpJbmRleDogU291cmNlL1dl
YkNvcmUvd29ya2Vycy9TaGFyZWRXb3JrZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL1NoYXJlZFdvcmtlci5oCShyZXZpc2lvbiA5ODM1OCkKKysrIFNvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvU2hhcmVkV29ya2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDYgKzQ1LDgg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIE1lc3NhZ2VQb3J0KiBwb3J0KCkgY29u
c3QgeyByZXR1cm4gbV9wb3J0LmdldCgpOyB9CiAKKyAgICAgICAgdmlydHVhbCBjb25zdCBBdG9t
aWNTdHJpbmcmIGludGVyZmFjZU5hbWUoKSBjb25zdDsKKwogICAgIHByaXZhdGU6CiAgICAgICAg
IFNoYXJlZFdvcmtlcihTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7CiAKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvU2hhcmVkV29ya2VyQ29udGV4dC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvd29ya2Vycy9TaGFyZWRXb3JrZXJDb250ZXh0LmNwcAkocmV2aXNpb24gOTgz
NTgpCisrKyBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL1NoYXJlZFdvcmtlckNvbnRleHQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC01OSw2ICs1OSwxMSBAQCBTaGFyZWRXb3JrZXJDb250ZXh0Ojp+U2hh
cmVkV29ya2VyQ29udGV4CiB7CiB9CiAKK2NvbnN0IEF0b21pY1N0cmluZyYgU2hhcmVkV29ya2Vy
Q29udGV4dDo6aW50ZXJmYWNlTmFtZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGV2ZW50TmFtZXMo
KS5pbnRlcmZhY2VGb3JTaGFyZWRXb3JrZXJDb250ZXh0OworfQorCiBTaGFyZWRXb3JrZXJUaHJl
YWQqIFNoYXJlZFdvcmtlckNvbnRleHQ6OnRocmVhZCgpCiB7CiAgICAgcmV0dXJuIHN0YXRpY19j
YXN0PFNoYXJlZFdvcmtlclRocmVhZCo+KEJhc2U6OnRocmVhZCgpKTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvU2hhcmVkV29ya2VyQ29udGV4dC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvU2hhcmVkV29ya2VyQ29udGV4dC5oCShyZXZpc2lvbiA5ODM1OCkK
KysrIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2hhcmVkV29ya2VyQ29udGV4dC5oCSh3b3JraW5n
IGNvcHkpCkBAIC01Miw3ICs1Miw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmly
dHVhbCBib29sIGlzU2hhcmVkV29ya2VyQ29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0K
IAogICAgICAgICAvLyBFdmVudFRhcmdldAotICAgICAgICB2aXJ0dWFsIFNoYXJlZFdvcmtlckNv
bnRleHQqIHRvU2hhcmVkV29ya2VyQ29udGV4dCgpIHsgcmV0dXJuIHRoaXM7IH0KKyAgICAgICAg
dmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIGludGVyZmFjZU5hbWUoKSBjb25zdDsKIAogICAg
ICAgICAvLyBTZXR0ZXJzL0dldHRlcnMgZm9yIGF0dHJpYnV0ZXMgaW4gU2hhcmVkV29ya2VyQ29u
dGV4dC5pZGwKICAgICAgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUihjb25uZWN0
KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlci5jcHAJKHJldmlzaW9uIDk4MzU4KQorKysg
U291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NSw2
ICs4NSwxMSBAQCBXb3JrZXI6On5Xb3JrZXIoKQogICAgIG1fY29udGV4dFByb3h5LT53b3JrZXJP
YmplY3REZXN0cm95ZWQoKTsKIH0KIAorY29uc3QgQXRvbWljU3RyaW5nJiBXb3JrZXI6OmludGVy
ZmFjZU5hbWUoKSBjb25zdAoreworICAgIHJldHVybiBldmVudE5hbWVzKCkuaW50ZXJmYWNlRm9y
V29ya2VyOworfQorCiAvLyBGSVhNRTogcmVtb3ZlIHRoaXMgd2hlbiB3ZSB1cGRhdGUgdGhlIE9i
akMgYmluZGluZ3MgKGJ1ZyAjMjg3NzQpLgogdm9pZCBXb3JrZXI6OnBvc3RNZXNzYWdlKFBhc3NS
ZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBtZXNzYWdlLCBNZXNzYWdlUG9ydCogcG9ydCwg
RXhjZXB0aW9uQ29kZSYgZWMpCiB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtl
ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyLmgJKHJldmlz
aW9uIDk4MzU4KQorKysgU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXIuaAkod29ya2luZyBj
b3B5KQpAQCAtNTQsNyArNTQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHN0YXRp
YyBQYXNzUmVmUHRyPFdvcmtlcj4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25z
dCBTdHJpbmcmIHVybCwgRXhjZXB0aW9uQ29kZSYpOwogICAgICAgICB2aXJ0dWFsIH5Xb3JrZXIo
KTsKIAotICAgICAgICB2aXJ0dWFsIFdvcmtlciogdG9Xb3JrZXIoKSB7IHJldHVybiB0aGlzOyB9
CisgICAgICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBpbnRlcmZhY2VOYW1lKCkgY29u
c3Q7CiAKICAgICAgICAgdm9pZCBwb3N0TWVzc2FnZShQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZT4gbWVzc2FnZSwgRXhjZXB0aW9uQ29kZSYpOwogICAgICAgICB2b2lkIHBvc3RNZXNz
YWdlKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBtZXNzYWdlLCBjb25zdCBNZXNz
YWdlUG9ydEFycmF5KiwgRXhjZXB0aW9uQ29kZSYpOwpJbmRleDogU291cmNlL1dlYkNvcmUveG1s
L1hNTEh0dHBSZXF1ZXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS94bWwvWE1M
SHR0cFJlcXVlc3QuY3BwCShyZXZpc2lvbiA5ODM1OCkKKysrIFNvdXJjZS9XZWJDb3JlL3htbC9Y
TUxIdHRwUmVxdWVzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExMTgsNiArMTExOCwxMSBAQCB2
b2lkIFhNTEh0dHBSZXF1ZXN0Ojpjb250ZXh0RGVzdHJveWVkKCkKICAgICBBY3RpdmVET01PYmpl
Y3Q6OmNvbnRleHREZXN0cm95ZWQoKTsKIH0KIAorY29uc3QgQXRvbWljU3RyaW5nJiBYTUxIdHRw
UmVxdWVzdDo6aW50ZXJmYWNlTmFtZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGV2ZW50TmFtZXMo
KS5pbnRlcmZhY2VGb3JYTUxIdHRwUmVxdWVzdDsKK30KKwogU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogWE1MSHR0cFJlcXVlc3Q6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdAogewogICAg
IHJldHVybiBBY3RpdmVET01PYmplY3Q6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5oCShyZXZpc2lvbiA5ODM1OCkKKysrIFNvdXJj
ZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5oCSh3b3JraW5nIGNvcHkpCkBAIC02OSwxNCAr
NjksMTMgQEAgcHVibGljOgogICAgICAgICBSZXNwb25zZVR5cGVBcnJheUJ1ZmZlcgogICAgIH07
CiAKLSAgICB2aXJ0dWFsIFhNTEh0dHBSZXF1ZXN0KiB0b1hNTEh0dHBSZXF1ZXN0KCkgeyByZXR1
cm4gdGhpczsgfQotCiAgICAgdmlydHVhbCB2b2lkIGNvbnRleHREZXN0cm95ZWQoKTsKICAgICB2
aXJ0dWFsIGJvb2wgY2FuU3VzcGVuZCgpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBzdXNwZW5k
KFJlYXNvbkZvclN1c3BlbnNpb24pOwogICAgIHZpcnR1YWwgdm9pZCByZXN1bWUoKTsKICAgICB2
aXJ0dWFsIHZvaWQgc3RvcCgpOwogCisgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIGlu
dGVyZmFjZU5hbWUoKSBjb25zdDsKICAgICB2aXJ0dWFsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdDsKIAogICAgIGNvbnN0IEtVUkwmIHVybCgp
IGNvbnN0IHsgcmV0dXJuIG1fdXJsOyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0
cFJlcXVlc3RVcGxvYWQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3htbC9YTUxI
dHRwUmVxdWVzdFVwbG9hZC5jcHAJKHJldmlzaW9uIDk4MzU4KQorKysgU291cmNlL1dlYkNvcmUv
eG1sL1hNTEh0dHBSZXF1ZXN0VXBsb2FkLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDEsNiArNDEs
MTEgQEAgWE1MSHR0cFJlcXVlc3RVcGxvYWQ6OlhNTEh0dHBSZXF1ZXN0VXBsbwogewogfQogCitj
b25zdCBBdG9taWNTdHJpbmcmIFhNTEh0dHBSZXF1ZXN0VXBsb2FkOjppbnRlcmZhY2VOYW1lKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gZXZlbnROYW1lcygpLmludGVyZmFjZUZvclhNTEh0dHBSZXF1
ZXN0VXBsb2FkOworfQorCiBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBYTUxIdHRwUmVxdWVzdFVw
bG9hZDo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1feG1s
SHR0cFJlcXVlc3QtPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3htbC9YTUxIdHRwUmVxdWVzdFVwbG9hZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3htbC9YTUxIdHRwUmVxdWVzdFVwbG9hZC5oCShyZXZpc2lvbiA5ODM1OCkKKysrIFNvdXJj
ZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdFVwbG9hZC5oCSh3b3JraW5nIGNvcHkpCkBAIC01
NCw4ICs1NCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCBkZXJlZigpIHsg
bV94bWxIdHRwUmVxdWVzdC0+ZGVyZWYoKTsgfQogICAgICAgICBYTUxIdHRwUmVxdWVzdCogeG1s
SHR0cFJlcXVlc3QoKSBjb25zdCB7IHJldHVybiBtX3htbEh0dHBSZXF1ZXN0OyB9CiAKLSAgICAg
ICAgdmlydHVhbCBYTUxIdHRwUmVxdWVzdFVwbG9hZCogdG9YTUxIdHRwUmVxdWVzdFVwbG9hZCgp
IHsgcmV0dXJuIHRoaXM7IH0KLQorICAgICAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYg
aW50ZXJmYWNlTmFtZSgpIGNvbnN0OwogICAgICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3Q7CiAKICAgICAgICAgREVGSU5FX0FUVFJJQlVU
RV9FVkVOVF9MSVNURU5FUihhYm9ydCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL0No
YW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwko
cmV2aXNpb24gOTgzNTgpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwkod29y
a2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDExLTEwLTI1ICBBZGFtIEJhcnRoICA8YWJh
cnRoQHdlYmtpdC5vcmc+CisKKyAgICAgICAgRXZlbnRUYXJnZXQuaCBzaG91bGRuJ3QgbmVlZCB0
byBrbm93IGFib3V0IGV2ZXJ5IGZlYXR1cmUgYW5kIGlmZGVmCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MDY1OQorCisgICAgICAgIFJldmlld2VkIGJ5
IERhcmluIEFkbGVyLgorCisgICAgICAgIFRoaXMgY2FzdCBpc24ndCBuZWVkZWQgYmVjYXVzZSBk
aXNwYXRjaEV2ZW50IGlzIGEgdmlydHVhbCBmdW5jdGlvbi4KKworICAgICAgICAqIHNyYy9XZWJT
aGFyZWRXb3JrZXJJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViU2hhcmVkV29ya2VySW1w
bDo6Y29ubmVjdFRhc2spOgorCiAyMDExLTEwLTI1ICBHZW5lIEdpcmFyZCAgPGdpcmFyZEBjaHJv
bWl1bS5vcmc+CiAKICAgICAgICAgUmUtZW5hYmxlIHRvdWNoIHRlc3RzIChmcm9tIDY2NTc3KQpJ
bmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2hhcmVkV29ya2VySW1wbC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2hhcmVkV29ya2Vy
SW1wbC5jcHAJKHJldmlzaW9uIDk4MzU4KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViU2hhcmVkV29ya2VySW1wbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkyLDcgKzkyLDcgQEAg
dm9pZCBXZWJTaGFyZWRXb3JrZXJJbXBsOjpjb25uZWN0VGFzayhTYwogICAgIEFTU0VSVChjb250
ZXh0LT5pc1dvcmtlckNvbnRleHQoKSk7CiAgICAgV29ya2VyQ29udGV4dCogd29ya2VyQ29udGV4
dCA9IHN0YXRpY19jYXN0PFdvcmtlckNvbnRleHQqPihjb250ZXh0KTsKICAgICBBU1NFUlQod29y
a2VyQ29udGV4dC0+aXNTaGFyZWRXb3JrZXJDb250ZXh0KCkpOwotICAgIHdvcmtlckNvbnRleHQt
PnRvU2hhcmVkV29ya2VyQ29udGV4dCgpLT5kaXNwYXRjaEV2ZW50KGNyZWF0ZUNvbm5lY3RFdmVu
dChwb3J0KSk7CisgICAgd29ya2VyQ29udGV4dC0+ZGlzcGF0Y2hFdmVudChjcmVhdGVDb25uZWN0
RXZlbnQocG9ydCkpOwogfQogCiB2b2lkIFdlYlNoYXJlZFdvcmtlckltcGw6OnN0YXJ0V29ya2Vy
Q29udGV4dChjb25zdCBXZWJVUkwmIHVybCwgY29uc3QgV2ViU3RyaW5nJiBuYW1lLCBjb25zdCBX
ZWJTdHJpbmcmIHVzZXJBZ2VudCwgY29uc3QgV2ViU3RyaW5nJiBzb3VyY2VDb2RlLCBsb25nIGxv
bmcpCkluZGV4OiBTb3VyY2UvY21ha2UvV2ViS2l0TWFjcm9zLmNtYWtlCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9jbWFrZS9XZWJLaXRNYWNyb3MuY21ha2UJKHJldmlzaW9uIDk4MzU4KQorKysgU291
cmNlL2NtYWtlL1dlYktpdE1hY3Jvcy5jbWFrZQkod29ya2luZyBjb3B5KQpAQCAtMzcsMTUgKzM3
LDEzIEBAIE1BQ1JPIChHRU5FUkFURV9GT05UX05BTUVTIF9pbmZpbGUpCiBFTkRNQUNSTyAoKQog
CiAKLU1BQ1JPIChHRU5FUkFURV9FVkVOVF9GQUNUT1JZIF9pbmZpbGUpCitNQUNSTyAoR0VORVJB
VEVfRVZFTlRfRkFDVE9SWSBfaW5maWxlIF9vdXRmaWxlKQogICAgIFNFVChOQU1FU19HRU5FUkFU
T1IgJHtXRUJDT1JFX0RJUn0vZG9tL21ha2VfZXZlbnRfZmFjdG9yeS5wbCkKLSAgICBTRVQoX2Fy
Z3VtZW50cyAgLS1ldmVudHMgJHtfaW5maWxlfSkKLSAgICBTRVQoX291dHB1dGZpbGVzICR7REVS
SVZFRF9TT1VSQ0VTX1dFQkNPUkVfRElSfS9FdmVudEZhY3RvcnkuY3BwKQogCiAgICAgQUREX0NV
U1RPTV9DT01NQU5EKAotICAgICAgICBPVVRQVVQgICR7X291dHB1dGZpbGVzfQorICAgICAgICBP
VVRQVVQgICR7REVSSVZFRF9TT1VSQ0VTX1dFQkNPUkVfRElSfS8ke19vdXRmaWxlfQogICAgICAg
ICBERVBFTkRTICR7TkFNRVNfR0VORVJBVE9SfSAke1NDUklQVFNfQklORElOR1N9ICR7X2luZmls
ZX0KLSAgICAgICAgQ09NTUFORCAke1BFUkxfRVhFQ1VUQUJMRX0gLUkke1dFQkNPUkVfRElSfS9i
aW5kaW5ncy9zY3JpcHRzICR7TkFNRVNfR0VORVJBVE9SfSAtLW91dHB1dERpciAke0RFUklWRURf
U09VUkNFU19XRUJDT1JFX0RJUn0gJHtfYXJndW1lbnRzfQorICAgICAgICBDT01NQU5EICR7UEVS
TF9FWEVDVVRBQkxFfSAtSSR7V0VCQ09SRV9ESVJ9L2JpbmRpbmdzL3NjcmlwdHMgJHtOQU1FU19H
RU5FUkFUT1J9IC0tZXZlbnRzICR7X2luZmlsZX0gLS1vdXRwdXREaXIgJHtERVJJVkVEX1NPVVJD
RVNfV0VCQ09SRV9ESVJ9CiAgICAgICAgIFZFUkJBVElNKQogRU5ETUFDUk8gKCkKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>112381</attachid>
            <date>2011-10-25 13:04:16 -0700</date>
            <delta_ts>2011-10-25 13:04:16 -0700</delta_ts>
            <desc>for EWS</desc>
            <filename>bug-70659-20111025130415.patch</filename>
            <type>text/plain</type>
            <size>79348</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDk4MzY4KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTM0IEBACisyMDExLTEwLTI1ICBBZGFtIEJh
cnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CisKKyAgICAgICAgRXZlbnRUYXJnZXQuaCBzaG91bGRu
J3QgbmVlZCB0byBrbm93IGFib3V0IGV2ZXJ5IGZlYXR1cmUgYW5kIGlmZGVmCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MDY1OQorCisgICAgICAgIFJl
dmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgIFRoaXMgcGF0Y2ggZm9sbG93cyB0aGUg
YXBwcm9hY2ggb2YgRXZlbnQuaCBhbmQgaW50cm9kdWNlcyBhbgorICAgICAgICBpbnRlcmZhY2VO
YW1lIHZpcnR1YWwgZnVuY3Rpb24gdGhhdCByZXR1cm5zIHRoZSBuYW1lIG9mIHRoZSBET00KKyAg
ICAgICAgaW50ZXJmYWNlIGZvciB0aGUgY29uY3JldGUgdHlwZSBvZiB0aGUgb2JqZWN0LiAgVGhp
cyBmdW5jdGlvbiBsZXRzIHVzCisgICAgICAgIHJlbW92ZSBhIGxhcmdlIG51bWJlciBvZiBmYWtl
IGR5bmFtaWMgY2FzdHMuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBD
b2RlR2VuZXJhdG9ycy5wcmk6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAg
ICAgKiBHTlVtYWtlZmlsZS5hbToKKyAgICAgICAgKiBXZWJDb3JlLmd5cC9XZWJDb3JlLmd5cDoK
KyAgICAgICAgKiBXZWJDb3JlLmd5cC9zY3JpcHRzL2FjdGlvbl9tYWtlbmFtZXMucHk6CisgICAg
ICAgICAgICAtIFRlYWNoIGFjdGlvbl9tYWtlbmFtZXMgaG93IHRvIGhhbmRsZSB0aGUgbmV3ICJp
biIgZmlsZS4KKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS52Y3By
b2ovV2ViQ29yZS52Y3Byb2o6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRXZlbnRUYXJnZXQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6dG9KUyk6CisgICAgICAgICAgICAtIFVzZSB0aGUgbmV3IGF1dG9nZW5lcmF0
ZWQgbWFjcm8gdG8gcmVtb3ZlIGEgbGFyZ2UgYW1vdW50IG9mCisgICAgICAgICAgICAgIGZlYXR1
cmUtc3BlY2lmaWMgY29kZS4KKyAgICAgICAgKiBiaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250
cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclNjcmlwdENvbnRyb2xsZXI6Omlu
aXRTY3JpcHQpOgorICAgICAgICAqIGJpbmRpbmdzL29iamMvRE9NLm1tOgorICAgICAgICAoa2l0
KToKKyAgICAgICAgICAgIC0gVGhlIFNWR0VsZW1lbnRJbnN0YW5jZSBicmFuY2ggd2FzIG5ldmVy
IHRha2VuIHByZXZpb3VzbHkgYmVjYXVzZQorICAgICAgICAgICAgICBTVkdFbGVtZW50SW5zdGFu
Y2U6OnRvTm9kZSByZXR1cm5zIGEgbm9uLU5VTEwgdmFsdWUuIFRoaXMgY29kZQorICAgICAgICAg
ICAgICB3YXMgaW50cm9kdWNlZCBpbiBodHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC80
MjYxOCBhbmQKKyAgICAgICAgICAgICAgZG9lc24ndCBhcHBlYXIgdG8gaGF2ZSBldmVyIHdvcmtl
ZCBhcyB0aGUgYXV0aG9yIGludGVuZGVkLgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4RE9NV3Jh
cHBlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOERPTVdyYXBwZXI6OmNvbnZlcnRFdmVudFRh
cmdldFRvVjhPYmplY3QpOgorICAgICAgICAgICAgLSBVc2UgdGhlIG5ldyBhdXRvZ2VuZXJhdGVk
IG1hY3JvIHRvIHJlbW92ZSBhIGxhcmdlIGFtb3VudCBvZgorICAgICAgICAgICAgICBmZWF0dXJl
LXNwZWNpZmljIGNvZGUuCisgICAgICAgICogZG9tL0V2ZW50TmFtZXMuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RXZlbnROYW1lczo6RXZlbnROYW1lcyk6CisgICAgICAgICogZG9tL0V2ZW50TmFt
ZXMuaDoKKyAgICAgICAgKiBkb20vRXZlbnRUYXJnZXQuY3BwOgorICAgICAgICAqIGRvbS9FdmVu
dFRhcmdldC5oOgorICAgICAgICAqIGRvbS9FdmVudFRhcmdldEZhY3RvcnkuaW46IEFkZGVkLgor
ICAgICAgICAgICAgLSBBZGQgYSBuZXcgImluIiBmaWxlIHRoYXQgbGlzdHMgYWxsIHRoZSBFdmVu
dFRhcmdldHMuCisgICAgICAgICogZG9tL0xvY2FsTWVkaWFTdHJlYW0uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6TG9jYWxNZWRpYVN0cmVhbTo6aW50ZXJmYWNlTmFtZSk6CisgICAgICAgICogZG9t
L0xvY2FsTWVkaWFTdHJlYW0uaDoKKyAgICAgICAgKiBkb20vTWVkaWFTdHJlYW0uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW06OmludGVyZmFjZU5hbWUpOgorICAgICAgICAqIGRv
bS9NZWRpYVN0cmVhbS5oOgorICAgICAgICAqIGRvbS9NZXNzYWdlUG9ydC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpNZXNzYWdlUG9ydDo6aW50ZXJmYWNlTmFtZSk6CisgICAgICAgICogZG9tL01l
c3NhZ2VQb3J0Lmg6CisgICAgICAgICogZG9tL05vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Tm9kZTo6dG9Ob2RlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OmludGVyZmFjZU5hbWUpOgor
ICAgICAgICAqIGRvbS9Ob2RlLmg6CisgICAgICAgICogZG9tL21ha2VfZXZlbnRfZmFjdG9yeS5w
bDoKKyAgICAgICAgICAgIC0gR2VuZXJhbGl6ZSBtYWtlX2V2ZW50X2ZhY3RvcnkucGwgdG8gYmUg
YWJsZSB0byBnZW5lcmF0ZQorICAgICAgICAgICAgICBpbnRlcmZhY2VzIGZvciBkaWZmZXJlbnQg
bmFtZXNwYWNlcy4KKyAgICAgICAgKiBmaWxlYXBpL0ZpbGVSZWFkZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RmlsZVJlYWRlcjo6aW50ZXJmYWNlTmFtZSk6CisgICAgICAgICogZmlsZWFwaS9G
aWxlUmVhZGVyLmg6CisgICAgICAgICogZmlsZWFwaS9GaWxlV3JpdGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkZpbGVXcml0ZXI6OmludGVyZmFjZU5hbWUpOgorICAgICAgICAqIGZpbGVhcGkv
RmlsZVdyaXRlci5oOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9ET01BcHBsaWNhdGlvbkNh
Y2hlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTUFwcGxpY2F0aW9uQ2FjaGU6OmludGVyZmFj
ZU5hbWUpOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9ET01BcHBsaWNhdGlvbkNhY2hlLmg6
CisgICAgICAgICogbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Tm90aWZpY2F0aW9uOjppbnRlcmZhY2VOYW1lKToKKyAgICAgICAgKiBub3RpZmljYXRp
b25zL05vdGlmaWNhdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uOjpzY3Jp
cHRFeGVjdXRpb25Db250ZXh0KToKKyAgICAgICAgKiBwMnAvUGVlckNvbm5lY3Rpb24uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UGVlckNvbm5lY3Rpb246OmludGVyZmFjZU5hbWUpOgorICAgICAg
ICAqIHAycC9QZWVyQ29ubmVjdGlvbi5oOgorICAgICAgICAqIHBhZ2UvRE9NV2luZG93LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvdzo6aW50ZXJmYWNlTmFtZSk6CisgICAgICAgIChX
ZWJDb3JlOjpET01XaW5kb3c6OnRvRE9NV2luZG93KToKKyAgICAgICAgKiBwYWdlL0RPTVdpbmRv
dy5oOgorICAgICAgICAqIHBhZ2UvRXZlbnRTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RXZlbnRTb3VyY2U6OmludGVyZmFjZU5hbWUpOgorICAgICAgICAqIHBhZ2UvRXZlbnRTb3VyY2Uu
aDoKKyAgICAgICAgKiBzdG9yYWdlL0lEQkRhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OklEQkRhdGFiYXNlOjppbnRlcmZhY2VOYW1lKToKKyAgICAgICAgKiBzdG9yYWdlL0lEQkRhdGFi
YXNlLmg6CisgICAgICAgICogc3RvcmFnZS9JREJSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OklEQlJlcXVlc3Q6OmludGVyZmFjZU5hbWUpOgorICAgICAgICAqIHN0b3JhZ2UvSURCUmVx
dWVzdC5oOgorICAgICAgICAqIHN0b3JhZ2UvSURCVHJhbnNhY3Rpb24uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OmludGVyZmFjZU5hbWUpOgorICAgICAgICAqIHN0b3Jh
Z2UvSURCVHJhbnNhY3Rpb24uaDoKKyAgICAgICAgKiBzdG9yYWdlL0lEQlZlcnNpb25DaGFuZ2VS
ZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlZlcnNpb25DaGFuZ2VSZXF1ZXN0Ojpp
bnRlcmZhY2VOYW1lKToKKyAgICAgICAgKiBzdG9yYWdlL0lEQlZlcnNpb25DaGFuZ2VSZXF1ZXN0
Lmg6CisgICAgICAgICogc3ZnL1NWR0VsZW1lbnRJbnN0YW5jZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTVkdFbGVtZW50SW5zdGFuY2U6OmludGVyZmFjZU5hbWUpOgorICAgICAgICAqIHN2Zy9T
VkdFbGVtZW50SW5zdGFuY2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VsZW1lbnRJbnN0YW5j
ZTo6dG9Ob2RlKToKKyAgICAgICAgKiB3ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6QXVkaW9Db250ZXh0OjppbnRlcmZhY2VOYW1lKToKKyAgICAgICAgKFdlYkNv
cmU6OkF1ZGlvQ29udGV4dDo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCk6CisgICAgICAgICogd2Vi
YXVkaW8vQXVkaW9Db250ZXh0Lmg6CisgICAgICAgICogd2ViYXVkaW8vSmF2YVNjcmlwdEF1ZGlv
Tm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKYXZhU2NyaXB0QXVkaW9Ob2RlOjppbnRlcmZh
Y2VOYW1lKToKKyAgICAgICAgKiB3ZWJhdWRpby9KYXZhU2NyaXB0QXVkaW9Ob2RlLmg6CisgICAg
ICAgICogd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29j
a2V0OjppbnRlcmZhY2VOYW1lKToKKyAgICAgICAgKiB3ZWJzb2NrZXRzL1dlYlNvY2tldC5oOgor
ICAgICAgICAqIHdvcmtlcnMvRGVkaWNhdGVkV29ya2VyQ29udGV4dC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpEZWRpY2F0ZWRXb3JrZXJDb250ZXh0OjppbnRlcmZhY2VOYW1lKToKKyAgICAgICAg
KiB3b3JrZXJzL0RlZGljYXRlZFdvcmtlckNvbnRleHQuaDoKKyAgICAgICAgKiB3b3JrZXJzL0Rl
ZmF1bHRTaGFyZWRXb3JrZXJSZXBvc2l0b3J5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJl
ZFdvcmtlckNvbm5lY3RUYXNrOjpwZXJmb3JtVGFzayk6CisgICAgICAgICogd29ya2Vycy9TaGFy
ZWRXb3JrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkV29ya2VyOjppbnRlcmZhY2VO
YW1lKToKKyAgICAgICAgKiB3b3JrZXJzL1NoYXJlZFdvcmtlci5oOgorICAgICAgICAqIHdvcmtl
cnMvU2hhcmVkV29ya2VyQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRXb3Jr
ZXJDb250ZXh0OjppbnRlcmZhY2VOYW1lKToKKyAgICAgICAgKiB3b3JrZXJzL1NoYXJlZFdvcmtl
ckNvbnRleHQuaDoKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpXb3JrZXI6OmludGVyZmFjZU5hbWUpOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyLmg6
CisgICAgICAgICogeG1sL1hNTEh0dHBSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhN
TEh0dHBSZXF1ZXN0OjppbnRlcmZhY2VOYW1lKToKKyAgICAgICAgKiB4bWwvWE1MSHR0cFJlcXVl
c3QuaDoKKyAgICAgICAgKiB4bWwvWE1MSHR0cFJlcXVlc3RVcGxvYWQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6WE1MSHR0cFJlcXVlc3RVcGxvYWQ6OmludGVyZmFjZU5hbWUpOgorICAgICAgICAq
IHhtbC9YTUxIdHRwUmVxdWVzdFVwbG9hZC5oOgorCiAyMDExLTEwLTI1ICBNYXJrIEhhaG5lbmJl
cmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIGdldE93blByb3BlcnR5
U2xvdCB0byBNZXRob2RUYWJsZQpJbmRleDogU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDk4
MzY4KQorKysgU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAg
LTIzMTMsMTAgKzIzMTMsMTQgQEAgR0VORVJBVEVfRE9NX05BTUVTKEhUTUwgJHtXRUJDT1JFX0RJ
Un0vaAogTElTVChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTICR7REVSSVZFRF9TT1VSQ0VTX1dFQkNP
UkVfRElSfS9IVE1MTmFtZXMuY3BwICR7REVSSVZFRF9TT1VSQ0VTX1dFQkNPUkVfRElSfS9IVE1M
RWxlbWVudEZhY3RvcnkuY3BwICR7REVSSVZFRF9TT1VSQ0VTX1dFQkNPUkVfRElSfS9KU0hUTUxF
bGVtZW50V3JhcHBlckZhY3RvcnkuY3BwKQogCiAKLUdFTkVSQVRFX0VWRU5UX0ZBQ1RPUlkoJHtX
RUJDT1JFX0RJUn0vZG9tL0V2ZW50RmFjdG9yeS5pbikKK0dFTkVSQVRFX0VWRU5UX0ZBQ1RPUlko
JHtXRUJDT1JFX0RJUn0vZG9tL0V2ZW50RmFjdG9yeS5pbiBFdmVudEZhY3RvcnkuY3BwKQogTElT
VChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTICR7REVSSVZFRF9TT1VSQ0VTX1dFQkNPUkVfRElSfS9F
dmVudEZhY3RvcnkuY3BwKQogCiAKK0dFTkVSQVRFX0VWRU5UX0ZBQ1RPUlkoJHtXRUJDT1JFX0RJ
Un0vZG9tL0V2ZW50VGFyZ2V0RmFjdG9yeS5pbiBFdmVudFRhcmdldEludGVyZmFjZXMuaCkKK0FE
RF9TT1VSQ0VfV0VCQ09SRV9ERVJJVkVEX0RFUEVOREVOQ0lFUygke1dFQkNPUkVfRElSfS9kb20v
RXZlbnROYW1lcy5jcHAgRXZlbnRUYXJnZXRJbnRlcmZhY2VzLmgpCisKKwogR0VORVJBVEVfRk9O
VF9OQU1FUygke1dFQkNPUkVfRElSfS9jc3MvV2ViS2l0Rm9udEZhbWlseU5hbWVzLmluKQogTElT
VChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTICR7REVSSVZFRF9TT1VSQ0VTX1dFQkNPUkVfRElSfS9X
ZWJLaXRGb250RmFtaWx5TmFtZXMuY3BwKQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Db2RlR2Vu
ZXJhdG9ycy5wcmkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ29kZUdlbmVyYXRvcnMu
cHJpCShyZXZpc2lvbiA5ODM2OCkKKysrIFNvdXJjZS9XZWJDb3JlL0NvZGVHZW5lcmF0b3JzLnBy
aQkod29ya2luZyBjb3B5KQpAQCAtMzQsNiArMzQsOCBAQCBIVE1MX0VOVElUSUVTID0gJCRQV0Qv
aHRtbC9wYXJzZXIvSFRNTEVuCiAKIEVWRU5UX0ZBQ1RPUlkgPSAkJFBXRC9kb20vRXZlbnRGYWN0
b3J5LmluCiAKK0VWRU5UX1RBUkdFVF9GQUNUT1JZID0gJCRQV0QvZG9tL0V2ZW50VGFyZ2V0RmFj
dG9yeS5pbgorCiBDT0xPUkRBVEFfR1BFUkYgPSAkJFBXRC9wbGF0Zm9ybS9Db2xvckRhdGEuZ3Bl
cmYKIAogV0FMRE9DU1NQUk9QUyA9ICQkUFdEL2Nzcy9DU1NQcm9wZXJ0eU5hbWVzLmluCkBAIC03
NjAsNiArNzYyLDE0IEBAIGV2ZW50ZmFjdG9yeS5jb21tYW5kcyA9IHBlcmwgLUkkJFBXRC9iaW4K
IGV2ZW50ZmFjdG9yeS5kZXBlbmRzID0gJCRQV0QvZG9tL21ha2VfZXZlbnRfZmFjdG9yeS5wbCAk
JEVWRU5UX0ZBQ1RPUlkKIGFkZEV4dHJhQ29tcGlsZXIoZXZlbnRmYWN0b3J5KQogCisjIEdFTkVS
QVRPUiA1LUY6CitldmVudHRhcmdldGZhY3Rvcnkub3V0cHV0ID0gJCR7V0NfR0VORVJBVEVEX1NP
VVJDRVNfRElSfS9FdmVudFRhcmdldEludGVyZmFjZXMuaAorZXZlbnR0YXJnZXRmYWN0b3J5Lmlu
cHV0ID0gRVZFTlRfVEFSR0VUX0ZBQ1RPUlkKK2V2ZW50dGFyZ2V0ZmFjdG9yeS53a1NjcmlwdCA9
ICQkUFdEL2RvbS9tYWtlX2V2ZW50X2ZhY3RvcnkucGwKK2V2ZW50dGFyZ2V0ZmFjdG9yeS5jb21t
YW5kcyA9IHBlcmwgLUkkJFBXRC9iaW5kaW5ncy9zY3JpcHRzICQkZXZlbnRmYWN0b3J5LndrU2Ny
aXB0IC0tZXZlbnRzICQkRVZFTlRfVEFSR0VUX0ZBQ1RPUlkgLS1vdXRwdXREaXIgJCRXQ19HRU5F
UkFURURfU09VUkNFU19ESVIKK2V2ZW50dGFyZ2V0ZmFjdG9yeS5kZXBlbmRzID0gJCRQV0QvZG9t
L21ha2VfZXZlbnRfZmFjdG9yeS5wbCAkJEVWRU5UX1RBUkdFVF9GQUNUT1JZCithZGRFeHRyYUNv
bXBpbGVyKGV2ZW50dGFyZ2V0ZmFjdG9yeSkKKwogIyBHRU5FUkFUT1IgOC1BOgogZW50aXRpZXMu
b3V0cHV0ID0gJCR7V0NfR0VORVJBVEVEX1NPVVJDRVNfRElSfS9IVE1MRW50aXR5VGFibGUuY3Bw
CiBlbnRpdGllcy5pbnB1dCA9IEhUTUxfRU5USVRJRVMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0Rl
cml2ZWRTb3VyY2VzLm1ha2UKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvRGVyaXZlZFNv
dXJjZXMubWFrZQkocmV2aXNpb24gOTgzNjgpCisrKyBTb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291
cmNlcy5tYWtlCSh3b3JraW5nIGNvcHkpCkBAIC01ODcsNiArNTg3LDcgQEAgYWxsIDogXAogICAg
IENTU1ZhbHVlS2V5d29yZHMuaCBcCiAgICAgQ29sb3JEYXRhLmNwcCBcCiAgICAgRXZlbnRGYWN0
b3J5LmNwcCBcCisgICAgRXZlbnRUYXJnZXRJbnRlcmZhY2VzLmggXAogICAgIEhUTUxFbGVtZW50
RmFjdG9yeS5jcHAgXAogICAgIEhUTUxFbnRpdHlUYWJsZS5jcHAgXAogICAgIEhUTUxOYW1lcy5j
cHAgXApAQCAtODQ3LDExICs4NDgsMTQgQEAgWExpbmtOYW1lcy5jcHAgOiBkb20vbWFrZV9uYW1l
cy5wbCBzdmcveAogCiAjIC0tLS0tLS0tCiAgCi0jIFJlZ2lzdGVyIGV2ZW50IGNvbnN0cnVjdG9y
cworIyBSZWdpc3RlciBldmVudCBjb25zdHJ1Y3RvcnMgYW5kIHRhcmdldHMKIAotRXZlbnRGYWN0
b3J5LmNwcCA6IGRvbS9tYWtlX2V2ZW50X2ZhY3RvcnkucGwgZG9tL0V2ZW50RmFjdG9yeS5pbgor
RXZlbnRGYWN0b3J5LmNwcCBFdmVudEhlYWRlcnMuaCBFdmVudEludGVyZmFjZXMuaCA6IGRvbS9t
YWtlX2V2ZW50X2ZhY3RvcnkucGwgZG9tL0V2ZW50RmFjdG9yeS5pbgogCXBlcmwgLUkgJChXZWJD
b3JlKS9iaW5kaW5ncy9zY3JpcHRzICQ8IC0tZXZlbnRzICQoV2ViQ29yZSkvZG9tL0V2ZW50RmFj
dG9yeS5pbgogCitFdmVudFRhcmdldEhlYWRlcnMuaCBFdmVudFRhcmdldEludGVyZmFjZXMuaCA6
IGRvbS9tYWtlX2V2ZW50X2ZhY3RvcnkucGwgZG9tL0V2ZW50VGFyZ2V0RmFjdG9yeS5pbgorCXBl
cmwgLUkgJChXZWJDb3JlKS9iaW5kaW5ncy9zY3JpcHRzICQ8IC0tZXZlbnRzICQoV2ViQ29yZSkv
ZG9tL0V2ZW50VGFyZ2V0RmFjdG9yeS5pbgorCiAjIC0tLS0tLS0tCiAgCiAjIE1hdGhNTCB0YWcg
YW5kIGF0dHJpYnV0ZSBuYW1lcywgYW5kIGVsZW1lbnQgZmFjdG9yeQpJbmRleDogU291cmNlL1dl
YkNvcmUvR05VbWFrZWZpbGUuYW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvR05VbWFr
ZWZpbGUuYW0JKHJldmlzaW9uIDk4MzY4KQorKysgU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUu
YW0JKHdvcmtpbmcgY29weSkKQEAgLTY4NCw2ICs2ODQsOSBAQCBEZXJpdmVkU291cmNlcy9XZWJD
b3JlL1hNTE5hbWVzLmNwcCBEZXJpCiBEZXJpdmVkU291cmNlcy9XZWJDb3JlL0V2ZW50RmFjdG9y
eS5jcHAgRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9FdmVudEhlYWRlcnMuaCBEZXJpdmVkU291cmNl
cy9XZWJDb3JlL0V2ZW50SW50ZXJmYWNlcy5oOiAkKFdlYkNvcmUpL2RvbS9tYWtlX2V2ZW50X2Zh
Y3RvcnkucGwgJChXZWJDb3JlKS9kb20vRXZlbnRGYWN0b3J5LmluCiAJJChBTV9WX0dFTikkKFBF
UkwpIC1JJChXZWJDb3JlKS9iaW5kaW5ncy9zY3JpcHRzICQ8IC0tZXZlbnRzICQoV2ViQ29yZSkv
ZG9tL0V2ZW50RmFjdG9yeS5pbiAtLW91dHB1dERpciAiJChHRU5TT1VSQ0VTX1dFQkNPUkUpIgog
CitEZXJpdmVkU291cmNlcy9XZWJDb3JlL0V2ZW50VGFyZ2V0SGVhZGVycy5oIERlcml2ZWRTb3Vy
Y2VzL1dlYkNvcmUvRXZlbnRUYXJnZXRJbnRlcmZhY2VzLmg6ICQoV2ViQ29yZSkvZG9tL21ha2Vf
ZXZlbnRfZmFjdG9yeS5wbCAkKFdlYkNvcmUpL2RvbS9FdmVudFRhcmdldEZhY3RvcnkuaW4KKwkk
KEFNX1ZfR0VOKSQoUEVSTCkgLUkkKFdlYkNvcmUpL2JpbmRpbmdzL3NjcmlwdHMgJDwgLS1ldmVu
dHMgJChXZWJDb3JlKS9kb20vRXZlbnRUYXJnZXRGYWN0b3J5LmluIC0tb3V0cHV0RGlyICIkKEdF
TlNPVVJDRVNfV0VCQ09SRSkiCisKICMgQWxsIFdlYiBJbnNwZWN0b3IgZ2VuZXJhdGVkIGZpbGVz
IGFyZSBjcmVhdGVkIHdpdGggdGhpcyBvbmUgY2FsbCB0byBDb2RlR2VuZXJhdG9ySW5zcGVjdG9y
LnB5CiBEZXJpdmVkU291cmNlcy9XZWJDb3JlL0luc3BlY3RvclByb3RvY29sVmVyc2lvbi5oIDog
JChXZWJDb3JlKS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpzb24gJChXZWJDb3JlKS9pbnNwZWN0b3Iv
Z2VuZXJhdGUtaW5zcGVjdG9yLXByb3RvY29sLXZlcnNpb24KIAkkKFBZVEhPTikgJChXZWJDb3Jl
KS9pbnNwZWN0b3IvZ2VuZXJhdGUtaW5zcGVjdG9yLXByb3RvY29sLXZlcnNpb24gLW8gJChHRU5T
T1VSQ0VTX1dFQkNPUkUpL0luc3BlY3RvclByb3RvY29sVmVyc2lvbi5oICQoV2ViQ29yZSkvaW5z
cGVjdG9yL0luc3BlY3Rvci5qc29uCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5s
aXN0LmFtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0J
KHJldmlzaW9uIDk4MzY4KQorKysgU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQko
d29ya2luZyBjb3B5KQpAQCAtMTIsNiArMTIsOCBAQCB3ZWJjb3JlX2J1aWx0X3NvdXJjZXMgKz0g
XAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvRXZlbnRGYWN0b3J5LmNwcCBcCiAJRGVyaXZlZFNv
dXJjZXMvV2ViQ29yZS9FdmVudEhlYWRlcnMuaCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9F
dmVudEludGVyZmFjZXMuaCBcCisJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9FdmVudFRhcmdldEhl
YWRlcnMuaCBcCisJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9FdmVudFRhcmdldEludGVyZmFjZXMu
aCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9IVE1MRWxlbWVudEZhY3RvcnkuY3BwIFwKIAlE
ZXJpdmVkU291cmNlcy9XZWJDb3JlL0hUTUxFbGVtZW50RmFjdG9yeS5oIFwKIAlEZXJpdmVkU291
cmNlcy9XZWJDb3JlL0hUTUxFbnRpdHlUYWJsZS5jcHAgXApJbmRleDogU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5neXBpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQko
cmV2aXNpb24gOTgzNjgpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkJKHdvcmtpbmcg
Y29weSkKQEAgLTcwNTEsNiArNzA1MSwxMCBAQAogICAgICAgICAgICAgJzwoUFJPRFVDVF9ESVIp
L0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvRGVidWdnZXJTY3JpcHRTb3VyY2UuaCcsCiAgICAgICAg
ICAgICAnPChQUk9EVUNUX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9Eb2NUeXBlU3RyaW5n
cy5jcHAnLAogICAgICAgICAgICAgJzwoUFJPRFVDVF9ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNv
cmUvRXZlbnRGYWN0b3J5LmNwcCcsCisgICAgICAgICAgICAnPChQUk9EVUNUX0RJUikvRGVyaXZl
ZFNvdXJjZXMvV2ViQ29yZS9FdmVudEhlYWRlcnMuaCcsCisgICAgICAgICAgICAnPChQUk9EVUNU
X0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9FdmVudEludGVyZmFjZXMuaCcsCisgICAgICAg
ICAgICAnPChQUk9EVUNUX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9FdmVudFRhcmdldEhl
YWRlcnMuaCcsCisgICAgICAgICAgICAnPChQUk9EVUNUX0RJUikvRGVyaXZlZFNvdXJjZXMvV2Vi
Q29yZS9FdmVudFRhcmdldEludGVyZmFjZXMuaCcsCiAgICAgICAgICAgICAnPChQUk9EVUNUX0RJ
UikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9IVE1MRWxlbWVudEZhY3RvcnkuY3BwJywKICAgICAg
ICAgICAgICc8KFBST0RVQ1RfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0hUTUxFbGVtZW50
RmFjdG9yeS5oJywKICAgICAgICAgICAgICc8KFBST0RVQ1RfRElSKS9EZXJpdmVkU291cmNlcy9X
ZWJDb3JlL0hUTUxFbnRpdHlUYWJsZS5jcHAnLApJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5neXAvV2ViQ29yZS5neXAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS5n
eXAvV2ViQ29yZS5neXAJKHJldmlzaW9uIDk4MzY4KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5neXAvV2ViQ29yZS5neXAJKHdvcmtpbmcgY29weSkKQEAgLTY3OCw2ICs2NzgsMjQgQEAKICAg
ICAgICAgICBdLAogICAgICAgICB9LAogICAgICAgICB7CisgICAgICAgICAgJ2FjdGlvbl9uYW1l
JzogJ0V2ZW50VGFyZ2V0RmFjdG9yeScsCisgICAgICAgICAgJ2lucHV0cyc6IFsKKyAgICAgICAg
ICAgICcuLi9kb20vbWFrZV9ldmVudF9mYWN0b3J5LnBsJywKKyAgICAgICAgICAgICcuLi9kb20v
RXZlbnRUYXJnZXRGYWN0b3J5LmluJywKKyAgICAgICAgICBdLAorICAgICAgICAgICdvdXRwdXRz
JzogWworICAgICAgICAgICAgJzwoU0hBUkVEX0lOVEVSTUVESUFURV9ESVIpL3dlYmtpdC9FdmVu
dFRhcmdldEhlYWRlcnMuaCcsCisgICAgICAgICAgICAnPChTSEFSRURfSU5URVJNRURJQVRFX0RJ
Uikvd2Via2l0L0V2ZW50VGFyZ2V0SW50ZXJmYWNlcy5oJywKKyAgICAgICAgICBdLAorICAgICAg
ICAgICdhY3Rpb24nOiBbCisgICAgICAgICAgICAncHl0aG9uJywKKyAgICAgICAgICAgICdzY3Jp
cHRzL2FjdGlvbl9tYWtlbmFtZXMucHknLAorICAgICAgICAgICAgJzxAKF9vdXRwdXRzKScsCisg
ICAgICAgICAgICAnLS0nLAorICAgICAgICAgICAgJzxAKF9pbnB1dHMpJywKKyAgICAgICAgICBd
LAorICAgICAgICB9LAorICAgICAgICB7CiAgICAgICAgICAgJ2FjdGlvbl9uYW1lJzogJ01hdGhN
TE5hbWVzJywKICAgICAgICAgICAnaW5wdXRzJzogWwogICAgICAgICAgICAgJy4uL2RvbS9tYWtl
X25hbWVzLnBsJywKQEAgLTk5NCw2ICsxMDEyLDEwIEBACiAgICAgICAgICc8KFNIQVJFRF9JTlRF
Uk1FRElBVEVfRElSKS93ZWJraXQvSFRNTEVsZW1lbnRGYWN0b3J5LmNwcCcsCiAgICAgICAgICc8
KFNIQVJFRF9JTlRFUk1FRElBVEVfRElSKS93ZWJraXQvSFRNTE5hbWVzLmNwcCcsCiAgICAgICAg
ICc8KFNIQVJFRF9JTlRFUk1FRElBVEVfRElSKS93ZWJraXQvRXZlbnRGYWN0b3J5LmNwcCcsCisg
ICAgICAgICc8KFNIQVJFRF9JTlRFUk1FRElBVEVfRElSKS93ZWJraXQvRXZlbnRIZWFkZXJzLmgn
LAorICAgICAgICAnPChTSEFSRURfSU5URVJNRURJQVRFX0RJUikvd2Via2l0L0V2ZW50SW50ZXJm
YWNlcy5oJywKKyAgICAgICAgJzwoU0hBUkVEX0lOVEVSTUVESUFURV9ESVIpL3dlYmtpdC9FdmVu
dFRhcmdldEhlYWRlcnMuaCcsCisgICAgICAgICc8KFNIQVJFRF9JTlRFUk1FRElBVEVfRElSKS93
ZWJraXQvRXZlbnRUYXJnZXRJbnRlcmZhY2VzLmgnLAogICAgICAgICAnPChTSEFSRURfSU5URVJN
RURJQVRFX0RJUikvd2Via2l0L1VzZXJBZ2VudFN0eWxlU2hlZXRzRGF0YS5jcHAnLAogICAgICAg
ICAnPChTSEFSRURfSU5URVJNRURJQVRFX0RJUikvd2Via2l0L1Y4SFRNTEVsZW1lbnRXcmFwcGVy
RmFjdG9yeS5jcHAnLAogICAgICAgICAnPChTSEFSRURfSU5URVJNRURJQVRFX0RJUikvd2Via2l0
L1hMaW5rTmFtZXMuY3BwJywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwL3Njcmlw
dHMvYWN0aW9uX21ha2VuYW1lcy5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLmd5cC9zY3JpcHRzL2FjdGlvbl9tYWtlbmFtZXMucHkJKHJldmlzaW9uIDk4MzY4KQorKysg
U291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXAvc2NyaXB0cy9hY3Rpb25fbWFrZW5hbWVzLnB5CSh3
b3JraW5nIGNvcHkpCkBAIC0xMjksNyArMTI5LDcgQEAgZGVmIG1haW4oYXJncyk6CiAgICAgICAg
ICAgICAgb3IgaW5wdXRCYXNlbmFtZS5lbmRzd2l0aCgnYXR0cnMuaW4nKToKICAgICAgICAgICAg
IGFzc2VydCBhdHRySW5wdXQgPT0gTm9uZQogICAgICAgICAgICAgYXR0cklucHV0ID0gaW5wdXRB
YnNQb3NpeAotICAgICAgICBlbGlmIGlucHV0QmFzZW5hbWUuZW5kc3dpdGgoJ0V2ZW50RmFjdG9y
eS5pbicpOgorICAgICAgICBlbGlmIGlucHV0QmFzZW5hbWUuZW5kc3dpdGgoJ0V2ZW50RmFjdG9y
eS5pbicpIG9yIGlucHV0QmFzZW5hbWUuZW5kc3dpdGgoJ0V2ZW50VGFyZ2V0RmFjdG9yeS5pbicp
OgogICAgICAgICAgICAgZXZlbnRzSW5wdXQgPSBpbnB1dEFic1Bvc2l4CiAgICAgICAgIGVsaWYg
aW5wdXRCYXNlbmFtZS5lbmRzd2l0aCgnTmFtZXMuaW4nKToKICAgICAgICAgICAgIG9wdGlvbnMu
YXBwZW5kKGlucHV0QWJzUG9zaXgpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJv
ai9XZWJDb3JlLnZjcHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZj
cHJvai9XZWJDb3JlLnZjcHJvagkocmV2aXNpb24gOTgzNjgpCisrKyBTb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagkod29ya2luZyBjb3B5KQpAQCAtNTU0LDYgKzU1
NCwxNCBAQAogCQkJCT4KIAkJCTwvRmlsZT4KIAkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIk
KENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2Vz
XEV2ZW50VGFyZ2V0SGVhZGVycy5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJ
UmVsYXRpdmVQYXRoPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqXCQoUHJvamVjdE5hbWUp
XERlcml2ZWRTb3VyY2VzXEV2ZW50VGFyZ2V0SW50ZXJmYWNlcy5oIgorCQkJCT4KKwkJCTwvRmls
ZT4KKwkJCTxGaWxlCiAJCQkJUmVsYXRpdmVQYXRoPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilc
b2JqXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEhUTUxFbGVtZW50RmFjdG9yeS5oIgog
CQkJCT4KIAkJCTwvRmlsZT4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDk4MzY4KQorKysgU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0z
MjcwLDYgKzMyNzAsOCBAQAogCQk5NzhBRDY3NTE0MTMwQThEMDBDN0NBRTMgLyogSFRNTFNwYW5F
bGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5
NzhBRDY3MjE0MTMwQThEMDBDN0NBRTMgLyogSFRNTFNwYW5FbGVtZW50LmggKi87IH07CiAJCTk3
OUY0M0QzMTA3NUU0NEEwMDAwRjgzQiAvKiBOYXZpZ2F0aW9uU2NoZWR1bGVyLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3OUY0M0QxMTA3NUU0NEEw
MDAwRjgzQiAvKiBOYXZpZ2F0aW9uU2NoZWR1bGVyLmNwcCAqLzsgfTsKIAkJOTc5RjQzRDQxMDc1
RTQ0QTAwMDBGODNCIC8qIE5hdmlnYXRpb25TY2hlZHVsZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3OUY0M0QyMTA3NUU0NEEwMDAwRjgzQiAvKiBO
YXZpZ2F0aW9uU2NoZWR1bGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKKwkJOTdBQTNDQTUxNDUyMzdDQzAwM0UxREE2IC8qIEV2ZW50VGFyZ2V0SGVh
ZGVycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTdB
QTNDQTMxNDUyMzdDQzAwM0UxREE2IC8qIEV2ZW50VGFyZ2V0SGVhZGVycy5oICovOyB9OworCQk5
N0FBM0NBNjE0NTIzN0NDMDAzRTFEQTYgLyogRXZlbnRUYXJnZXRJbnRlcmZhY2VzLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5N0FBM0NBNDE0NTIzN0ND
MDAzRTFEQTYgLyogRXZlbnRUYXJnZXRJbnRlcmZhY2VzLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTdCMUYwMkUxM0IwMjVDQTAwRjUxMDNGIC8q
IFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDM3NTY5RTAwMTNBRjE3MkMwMENEQkE4RSAvKiBTaGFyZWRCdWZm
ZXJDaHVua1JlYWRlci5jcHAgKi87IH07CiAJCTk3QjFGMDJGMTNCMDI1RDIwMEY1MTAzRiAvKiBT
aGFyZWRCdWZmZXJDaHVua1JlYWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMzc1NjlFMDIxM0FGMTcyQzAwQ0RCQThFIC8qIFNoYXJlZEJ1ZmZlckNo
dW5rUmVhZGVyLmggKi87IH07CiAJCTk3QkM4NDgzMTIzNkZEOTMwMDBDNjE2MSAvKiBUZXh0RG9j
dW1lbnRQYXJzZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gOTdCQzg0ODExMjM2RkQ5MzAwMEM2MTYxIC8qIFRleHREb2N1bWVudFBhcnNlci5jcHAg
Ki87IH07CkBAIC0xMDQwMiw2ICsxMDQwNCw4IEBACiAJCTk3OEFENjczMTQxMzBBOEQwMEM3Q0FF
MyAvKiBIVE1MU3BhbkVsZW1lbnQuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEhUTUxTcGFu
RWxlbWVudC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk3OUY0M0QxMTA3NUU0
NEEwMDAwRjgzQiAvKiBOYXZpZ2F0aW9uU2NoZWR1bGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IE5hdmlnYXRpb25TY2hlZHVsZXIuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk5NzlGNDNEMjEwNzVFNDRBMDAwMEY4M0IgLyogTmF2aWdhdGlvblNj
aGVkdWxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOYXZpZ2F0aW9uU2No
ZWR1bGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk3QUEzQ0EzMTQ1MjM3Q0Mw
MDNFMURBNiAvKiBFdmVudFRhcmdldEhlYWRlcnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gRXZlbnRUYXJnZXRIZWFkZXJzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTk3QUEzQ0E0MTQ1MjM3Q0MwMDNFMURBNiAvKiBFdmVudFRhcmdldEludGVyZmFjZXMuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRXZlbnRUYXJnZXRJbnRlcmZhY2VzLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk3QkM4NDgxMTIzNkZEOTMwMDBDNjE2MSAv
KiBUZXh0RG9jdW1lbnRQYXJzZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBu
YW1lID0gVGV4dERvY3VtZW50UGFyc2VyLmNwcDsgcGF0aCA9IHBhcnNlci9UZXh0RG9jdW1lbnRQ
YXJzZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5N0JDODQ4MjEyMzZGRDkz
MDAwQzYxNjEgLyogVGV4dERvY3VtZW50UGFyc2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgbmFtZSA9IFRleHREb2N1bWVudFBhcnNlci5oOyBwYXRoID0gcGFyc2VyL1RleHREb2N1bWVu
dFBhcnNlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5N0JDODQ5QTEyMzcwQTRC
MDAwQzYxNjEgLyogSFRNTElucHV0U3RyZWFtLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
bmFtZSA9IEhUTUxJbnB1dFN0cmVhbS5oOyBwYXRoID0gcGFyc2VyL0hUTUxJbnB1dFN0cmVhbS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTUxNDUsNiArMTUxNDksOCBAQAogCQkJ
CTk3NjY1MDRFMTQ0RkJGRkUwMEY2QkI1MSAvKiBFdmVudEZhY3RvcnkuY3BwICovLAogCQkJCTk3
MEI3MkE1MTQ1MDA4RUIwMEYwMEEzNyAvKiBFdmVudEhlYWRlcnMuaCAqLywKIAkJCQk5NzBCNzI4
OTE0NEZGQUM2MDBGMDBBMzcgLyogRXZlbnRJbnRlcmZhY2VzLmggKi8sCisJCQkJOTdBQTNDQTMx
NDUyMzdDQzAwM0UxREE2IC8qIEV2ZW50VGFyZ2V0SGVhZGVycy5oICovLAorCQkJCTk3QUEzQ0E0
MTQ1MjM3Q0MwMDNFMURBNiAvKiBFdmVudFRhcmdldEludGVyZmFjZXMuaCAqLywKIAkJCQlBMTdD
ODEyMDBGMkE1Q0Y3MDA1REFBRUIgLyogSFRNTEVsZW1lbnRGYWN0b3J5LmNwcCAqLywKIAkJCQlB
MTdDODEyMTBGMkE1Q0Y3MDA1REFBRUIgLyogSFRNTEVsZW1lbnRGYWN0b3J5LmggKi8sCiAJCQkJ
QThCQzA0OTExMjE0RjY5NjAwQjVGMTIyIC8qIEhUTUxFbnRpdHlUYWJsZS5jcHAgKi8sCkBAIC0y
NDQ3OSw2ICsyNDQ4NSw4IEBACiAJCQkJOTc2NjUwMTMxNDRGQUE0MjAwRjZCQjUxIC8qIEV2ZW50
RmFjdG9yeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTBFRTBERjYxNDRGODI1NTAwRjgwQjBEIC8q
IFdlYkdMRGVidWdSZW5kZXJlckluZm8uaCBpbiBIZWFkZXJzICovLAogCQkJCUEwRUUwREY4MTQ0
RjgyNTUwMEY4MEIwRCAvKiBXZWJHTERlYnVnU2hhZGVycy5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
OTdBQTNDQTUxNDUyMzdDQzAwM0UxREE2IC8qIEV2ZW50VGFyZ2V0SGVhZGVycy5oIGluIEhlYWRl
cnMgKi8sCisJCQkJOTdBQTNDQTYxNDUyMzdDQzAwM0UxREE2IC8qIEV2ZW50VGFyZ2V0SW50ZXJm
YWNlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTcwQjcyOEExNDRGRkFDNjAwRjAwQTM3IC8qIEV2
ZW50SW50ZXJmYWNlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTcwQjcyQTYxNDUwMDhFQjAwRjAw
QTM3IC8qIEV2ZW50SGVhZGVycy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOUIzQTg4NzIxNDU2MzJG
OTAwM0FFOEY1IC8qIERPTURPTVNldHRhYmxlVG9rZW5MaXN0LmggaW4gSGVhZGVycyAqLywKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRUYXJnZXQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRUYXJnZXQuY3BwCShyZXZp
c2lvbiA5ODM2OCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRUYXJnZXQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw4IEBACiAKICNpbmNsdWRlICJET01XaW5k
b3cuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIkV2ZW50VGFyZ2V0SGVhZGVy
cy5oIgorI2luY2x1ZGUgIkV2ZW50VGFyZ2V0SW50ZXJmYWNlcy5oIgogI2luY2x1ZGUgIkpTRE9N
V2luZG93LmgiCiAjaW5jbHVkZSAiSlNET01XaW5kb3dTaGVsbC5oIgogI2luY2x1ZGUgIkpTRXZl
bnRMaXN0ZW5lci5oIgpAQCAtMTA1LDk0ICsxMDcsMjggQEAgdXNpbmcgbmFtZXNwYWNlIEpTQzsK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCisjZGVmaW5lIFRSWV9UT19XUkFQX1dJVEhfSU5URVJG
QUNFKGludGVyZmFjZU5hbWUpIFwKKyAgICBpZiAoZXZlbnROYW1lcygpLmludGVyZmFjZUZvciMj
aW50ZXJmYWNlTmFtZSA9PSBkZXNpcmVkSW50ZXJmYWNlKSBcCisgICAgICAgIHJldHVybiB0b0pT
KGV4ZWMsIGdsb2JhbE9iamVjdCwgc3RhdGljX2Nhc3Q8aW50ZXJmYWNlTmFtZSo+KHRhcmdldCkp
OworCiBKU1ZhbHVlIHRvSlMoRXhlY1N0YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBFdmVudFRhcmdldCogdGFyZ2V0KQogewogICAgIGlmICghdGFyZ2V0KQogICAg
ICAgICByZXR1cm4ganNOdWxsKCk7CiAKLSAgICBpZiAoRXZlbnRTb3VyY2UqIGV2ZW50U291cmNl
ID0gdGFyZ2V0LT50b0V2ZW50U291cmNlKCkpCi0gICAgICAgIHJldHVybiB0b0pTKGV4ZWMsIGds
b2JhbE9iamVjdCwgZXZlbnRTb3VyY2UpOwotCi0jaWYgRU5BQkxFKFNWRykKLSAgICAvLyBTVkdF
bGVtZW50SW5zdGFuY2Ugc3VwcG9ydHMgYm90aCB0b1NWR0VsZW1lbnRJbnN0YW5jZSBhbmQgdG9O
b2RlIHNpbmNlIHNvIG11Y2ggbW91c2UgaGFuZGxpbmcgY29kZSBkZXBlbmRzIG9uIHRvTm9kZSBy
ZXR1cm5pbmcgYSB2YWxpZCBub2RlLgotICAgIGlmIChTVkdFbGVtZW50SW5zdGFuY2UqIGluc3Rh
bmNlID0gdGFyZ2V0LT50b1NWR0VsZW1lbnRJbnN0YW5jZSgpKQotICAgICAgICByZXR1cm4gdG9K
UyhleGVjLCBnbG9iYWxPYmplY3QsIGluc3RhbmNlKTsKLSNlbmRpZgotICAgIAotICAgIGlmIChO
b2RlKiBub2RlID0gdGFyZ2V0LT50b05vZGUoKSkKLSAgICAgICAgcmV0dXJuIHRvSlMoZXhlYywg
Z2xvYmFsT2JqZWN0LCBub2RlKTsKLQotICAgIGlmIChET01XaW5kb3cqIGRvbVdpbmRvdyA9IHRh
cmdldC0+dG9ET01XaW5kb3coKSkKLSAgICAgICAgcmV0dXJuIHRvSlMoZXhlYywgZ2xvYmFsT2Jq
ZWN0LCBkb21XaW5kb3cpOwotCi0gICAgaWYgKFhNTEh0dHBSZXF1ZXN0KiB4aHIgPSB0YXJnZXQt
PnRvWE1MSHR0cFJlcXVlc3QoKSkKLSAgICAgICAgcmV0dXJuIHRvSlMoZXhlYywgZ2xvYmFsT2Jq
ZWN0LCB4aHIpOwotCi0gICAgaWYgKFhNTEh0dHBSZXF1ZXN0VXBsb2FkKiB1cGxvYWQgPSB0YXJn
ZXQtPnRvWE1MSHR0cFJlcXVlc3RVcGxvYWQoKSkKLSAgICAgICAgcmV0dXJuIHRvSlMoZXhlYywg
Z2xvYmFsT2JqZWN0LCB1cGxvYWQpOwotCi0gICAgaWYgKERPTUFwcGxpY2F0aW9uQ2FjaGUqIGNh
Y2hlID0gdGFyZ2V0LT50b0RPTUFwcGxpY2F0aW9uQ2FjaGUoKSkKLSAgICAgICAgcmV0dXJuIHRv
SlMoZXhlYywgZ2xvYmFsT2JqZWN0LCBjYWNoZSk7Ci0KLSAgICBpZiAoTWVzc2FnZVBvcnQqIG1l
c3NhZ2VQb3J0ID0gdGFyZ2V0LT50b01lc3NhZ2VQb3J0KCkpCi0gICAgICAgIHJldHVybiB0b0pT
KGV4ZWMsIGdsb2JhbE9iamVjdCwgbWVzc2FnZVBvcnQpOworICAgIEF0b21pY1N0cmluZyBkZXNp
cmVkSW50ZXJmYWNlID0gdGFyZ2V0LT5pbnRlcmZhY2VOYW1lKCk7CiAKKyAgICAvLyBGSVhNRTog
V2h5IGNhbid0IHdlIHVzZSB0b0pTIGZvciB0aGVzZSBjYXNlcz8KICNpZiBFTkFCTEUoV09SS0VS
UykKLSAgICBpZiAoV29ya2VyKiB3b3JrZXIgPSB0YXJnZXQtPnRvV29ya2VyKCkpCi0gICAgICAg
IHJldHVybiB0b0pTKGV4ZWMsIGdsb2JhbE9iamVjdCwgd29ya2VyKTsKLQotICAgIGlmIChEZWRp
Y2F0ZWRXb3JrZXJDb250ZXh0KiB3b3JrZXJDb250ZXh0ID0gdGFyZ2V0LT50b0RlZGljYXRlZFdv
cmtlckNvbnRleHQoKSkKLSAgICAgICAgcmV0dXJuIHRvSlNET01HbG9iYWxPYmplY3Qod29ya2Vy
Q29udGV4dCwgZXhlYyk7CisgICAgaWYgKGV2ZW50TmFtZXMoKS5pbnRlcmZhY2VGb3JEZWRpY2F0
ZWRXb3JrZXJDb250ZXh0ID09IGRlc2lyZWRJbnRlcmZhY2UpCisgICAgICAgIHJldHVybiB0b0pT
RE9NR2xvYmFsT2JqZWN0KHN0YXRpY19jYXN0PERlZGljYXRlZFdvcmtlckNvbnRleHQqPih0YXJn
ZXQpLCBleGVjKTsKICNlbmRpZgotCiAjaWYgRU5BQkxFKFNIQVJFRF9XT1JLRVJTKQotICAgIGlm
IChTaGFyZWRXb3JrZXIqIHNoYXJlZFdvcmtlciA9IHRhcmdldC0+dG9TaGFyZWRXb3JrZXIoKSkK
LSAgICAgICAgcmV0dXJuIHRvSlMoZXhlYywgZ2xvYmFsT2JqZWN0LCBzaGFyZWRXb3JrZXIpOwot
Ci0gICAgaWYgKFNoYXJlZFdvcmtlckNvbnRleHQqIHdvcmtlckNvbnRleHQgPSB0YXJnZXQtPnRv
U2hhcmVkV29ya2VyQ29udGV4dCgpKQotICAgICAgICByZXR1cm4gdG9KU0RPTUdsb2JhbE9iamVj
dCh3b3JrZXJDb250ZXh0LCBleGVjKTsKLSNlbmRpZgotCi0jaWYgRU5BQkxFKE5PVElGSUNBVElP
TlMpCi0gICAgaWYgKE5vdGlmaWNhdGlvbiogbm90aWZpY2F0aW9uID0gdGFyZ2V0LT50b05vdGlm
aWNhdGlvbigpKQotICAgICAgICByZXR1cm4gdG9KUyhleGVjLCBnbG9iYWxPYmplY3QsIG5vdGlm
aWNhdGlvbik7Ci0jZW5kaWYKLQotI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQotICAgIGlm
IChJREJEYXRhYmFzZSogaWRiRGF0YWJhc2UgPSB0YXJnZXQtPnRvSURCRGF0YWJhc2UoKSkKLSAg
ICAgICAgcmV0dXJuIHRvSlMoZXhlYywgZ2xvYmFsT2JqZWN0LCBpZGJEYXRhYmFzZSk7Ci0KLSAg
ICBpZiAoSURCUmVxdWVzdCogaWRiUmVxdWVzdCA9IHRhcmdldC0+dG9JREJSZXF1ZXN0KCkpCi0g
ICAgICAgIHJldHVybiB0b0pTKGV4ZWMsIGdsb2JhbE9iamVjdCwgaWRiUmVxdWVzdCk7Ci0KLSAg
ICBpZiAoSURCVHJhbnNhY3Rpb24qIGlkYlRyYW5zYWN0aW9uID0gdGFyZ2V0LT50b0lEQlRyYW5z
YWN0aW9uKCkpCi0gICAgICAgIHJldHVybiB0b0pTKGV4ZWMsIGdsb2JhbE9iamVjdCwgaWRiVHJh
bnNhY3Rpb24pOwotI2VuZGlmCi0KLSNpZiBFTkFCTEUoV0VCX0FVRElPKQotICAgIGlmIChKYXZh
U2NyaXB0QXVkaW9Ob2RlKiBqc0F1ZGlvTm9kZSA9IHRhcmdldC0+dG9KYXZhU2NyaXB0QXVkaW9O
b2RlKCkpCi0gICAgICAgIHJldHVybiB0b0pTKGV4ZWMsIGdsb2JhbE9iamVjdCwganNBdWRpb05v
ZGUpOwotICAgIGlmIChBdWRpb0NvbnRleHQqIGF1ZGlvQ29udGV4dCA9IHRhcmdldC0+dG9BdWRp
b0NvbnRleHQoKSkKLSAgICAgICAgcmV0dXJuIHRvSlMoZXhlYywgZ2xvYmFsT2JqZWN0LCBhdWRp
b0NvbnRleHQpOwotI2VuZGlmCi0KLSNpZiBFTkFCTEUoV0VCX1NPQ0tFVFMpCi0gICAgaWYgKFdl
YlNvY2tldCogd2ViU29ja2V0ID0gdGFyZ2V0LT50b1dlYlNvY2tldCgpKQotICAgICAgICByZXR1
cm4gdG9KUyhleGVjLCBnbG9iYWxPYmplY3QsIHdlYlNvY2tldCk7Ci0jZW5kaWYKLQotI2lmIEVO
QUJMRShCTE9CKQotICAgIGlmIChGaWxlUmVhZGVyKiBmaWxlUmVhZGVyID0gdGFyZ2V0LT50b0Zp
bGVSZWFkZXIoKSkKLSAgICAgICAgcmV0dXJuIHRvSlMoZXhlYywgZ2xvYmFsT2JqZWN0LCBmaWxl
UmVhZGVyKTsKKyAgICBpZiAoZXZlbnROYW1lcygpLmludGVyZmFjZUZvclNoYXJlZFdvcmtlckNv
bnRleHQgPT0gZGVzaXJlZEludGVyZmFjZSkKKyAgICAgICAgcmV0dXJuIHRvSlNET01HbG9iYWxP
YmplY3Qoc3RhdGljX2Nhc3Q8U2hhcmVkV29ya2VyQ29udGV4dCo+KHRhcmdldCksIGV4ZWMpOwog
I2VuZGlmCiAKLSNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQotICAgIGlmIChMb2NhbE1lZGlhU3Ry
ZWFtKiBzdHJlYW0gPSB0YXJnZXQtPnRvTG9jYWxNZWRpYVN0cmVhbSgpKQotICAgICAgICByZXR1
cm4gdG9KUyhleGVjLCBnbG9iYWxPYmplY3QsIHN0cmVhbSk7Ci0KLSAgICBpZiAoTWVkaWFTdHJl
YW0qIHN0cmVhbSA9IHRhcmdldC0+dG9NZWRpYVN0cmVhbSgpKQotICAgICAgICByZXR1cm4gdG9K
UyhleGVjLCBnbG9iYWxPYmplY3QsIHN0cmVhbSk7Ci0jZW5kaWYKKyAgICBET01fRVZFTlRfVEFS
R0VUX0lOVEVSRkFDRVNfRk9SX0VBQ0goVFJZX1RPX1dSQVBfV0lUSF9JTlRFUkZBQ0UpCiAKICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4ganNOdWxsKCk7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVy
LmNwcAkocmV2aXNpb24gOTgzNjgpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9Xb3Jr
ZXJTY3JpcHRDb250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODYsNyArODYsNyBAQCB2
b2lkIFdvcmtlclNjcmlwdENvbnRyb2xsZXI6OmluaXRTY3JpcHQoCiAgICAgICAgIFN0cm9uZzxK
U0RlZGljYXRlZFdvcmtlckNvbnRleHRQcm90b3R5cGU+IGRlZGljYXRlZENvbnRleHRQcm90b3R5
cGUoKm1fZ2xvYmFsRGF0YSwgSlNEZWRpY2F0ZWRXb3JrZXJDb250ZXh0UHJvdG90eXBlOjpjcmVh
dGUoKm1fZ2xvYmFsRGF0YSwgMCwgZGVkaWNhdGVkQ29udGV4dFByb3RvdHlwZVN0cnVjdHVyZSkp
OwogICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IEpTRGVkaWNhdGVkV29ya2VyQ29udGV4
dDo6Y3JlYXRlU3RydWN0dXJlKCptX2dsb2JhbERhdGEsIDAsIGRlZGljYXRlZENvbnRleHRQcm90
b3R5cGUuZ2V0KCkpOwogCi0gICAgICAgIG1fd29ya2VyQ29udGV4dFdyYXBwZXIuc2V0KCptX2ds
b2JhbERhdGEsIEpTRGVkaWNhdGVkV29ya2VyQ29udGV4dDo6Y3JlYXRlKCptX2dsb2JhbERhdGEs
IHN0cnVjdHVyZSwgbV93b3JrZXJDb250ZXh0LT50b0RlZGljYXRlZFdvcmtlckNvbnRleHQoKSkp
OworICAgICAgICBtX3dvcmtlckNvbnRleHRXcmFwcGVyLnNldCgqbV9nbG9iYWxEYXRhLCBKU0Rl
ZGljYXRlZFdvcmtlckNvbnRleHQ6OmNyZWF0ZSgqbV9nbG9iYWxEYXRhLCBzdHJ1Y3R1cmUsIHN0
YXRpY19jYXN0PERlZGljYXRlZFdvcmtlckNvbnRleHQqPihtX3dvcmtlckNvbnRleHQpKSk7CiAg
ICAgICAgIHdvcmtlckNvbnRleHRQcm90b3R5cGVTdHJ1Y3R1cmUtPnNldEdsb2JhbE9iamVjdCgq
bV9nbG9iYWxEYXRhLCBtX3dvcmtlckNvbnRleHRXcmFwcGVyLmdldCgpKTsKICAgICAgICAgZGVk
aWNhdGVkQ29udGV4dFByb3RvdHlwZVN0cnVjdHVyZS0+c2V0R2xvYmFsT2JqZWN0KCptX2dsb2Jh
bERhdGEsIG1fd29ya2VyQ29udGV4dFdyYXBwZXIuZ2V0KCkpOwogICAgICAgICBBU1NFUlQoc3Ry
dWN0dXJlLT5nbG9iYWxPYmplY3QoKSA9PSBtX3dvcmtlckNvbnRleHRXcmFwcGVyKTsKQEAgLTEw
MCw3ICsxMDAsNyBAQCB2b2lkIFdvcmtlclNjcmlwdENvbnRyb2xsZXI6OmluaXRTY3JpcHQoCiAg
ICAgICAgIFN0cm9uZzxKU1NoYXJlZFdvcmtlckNvbnRleHRQcm90b3R5cGU+IHNoYXJlZENvbnRl
eHRQcm90b3R5cGUoKm1fZ2xvYmFsRGF0YSwgSlNTaGFyZWRXb3JrZXJDb250ZXh0UHJvdG90eXBl
OjpjcmVhdGUoKm1fZ2xvYmFsRGF0YSwgMCwgc2hhcmVkQ29udGV4dFByb3RvdHlwZVN0cnVjdHVy
ZSkpOwogICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IEpTU2hhcmVkV29ya2VyQ29udGV4
dDo6Y3JlYXRlU3RydWN0dXJlKCptX2dsb2JhbERhdGEsIDAsIHNoYXJlZENvbnRleHRQcm90b3R5
cGUuZ2V0KCkpOwogCi0gICAgICAgIG1fd29ya2VyQ29udGV4dFdyYXBwZXIuc2V0KCptX2dsb2Jh
bERhdGEsIEpTU2hhcmVkV29ya2VyQ29udGV4dDo6Y3JlYXRlKCptX2dsb2JhbERhdGEsIHN0cnVj
dHVyZSwgbV93b3JrZXJDb250ZXh0LT50b1NoYXJlZFdvcmtlckNvbnRleHQoKSkpOworICAgICAg
ICBtX3dvcmtlckNvbnRleHRXcmFwcGVyLnNldCgqbV9nbG9iYWxEYXRhLCBKU1NoYXJlZFdvcmtl
ckNvbnRleHQ6OmNyZWF0ZSgqbV9nbG9iYWxEYXRhLCBzdHJ1Y3R1cmUsIHN0YXRpY19jYXN0PFNo
YXJlZFdvcmtlckNvbnRleHQqPihtX3dvcmtlckNvbnRleHQpKSk7CiAgICAgICAgIHdvcmtlckNv
bnRleHRQcm90b3R5cGUtPnN0cnVjdHVyZSgpLT5zZXRHbG9iYWxPYmplY3QoKm1fZ2xvYmFsRGF0
YSwgbV93b3JrZXJDb250ZXh0V3JhcHBlci5nZXQoKSk7CiAgICAgICAgIHNoYXJlZENvbnRleHRQ
cm90b3R5cGUtPnN0cnVjdHVyZSgpLT5zZXRHbG9iYWxPYmplY3QoKm1fZ2xvYmFsRGF0YSwgbV93
b3JrZXJDb250ZXh0V3JhcHBlci5nZXQoKSk7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL29iamMvRE9NLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL29iamMvRE9NLm1tCShyZXZpc2lvbiA5ODM2OCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL29iamMvRE9NLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zNDMsMTEgKzM0Myw2IEBAIGlkIDxE
T01FdmVudFRhcmdldD4ga2l0KFdlYkNvcmU6OkV2ZW50VGEKICAgICBpZiAoV2ViQ29yZTo6Tm9k
ZSogbm9kZSA9IGV2ZW50VGFyZ2V0LT50b05vZGUoKSkKICAgICAgICAgcmV0dXJuIGtpdChub2Rl
KTsKIAotI2lmIEVOQUJMRShTVkdfRE9NX09CSkNfQklORElOR1MpCi0gICAgaWYgKFdlYkNvcmU6
OlNWR0VsZW1lbnRJbnN0YW5jZSogc3ZnRWxlbWVudEluc3RhbmNlID0gZXZlbnRUYXJnZXQtPnRv
U1ZHRWxlbWVudEluc3RhbmNlKCkpCi0gICAgICAgIHJldHVybiBraXQoc3ZnRWxlbWVudEluc3Rh
bmNlKTsKLSNlbmRpZgotCiAgICAgLy8gV2UgZG9uJ3QgaGF2ZSBhbiBPYmpDIGJpbmRpbmcgZm9y
IFhNTEh0dHBSZXF1ZXN0LgogCiAgICAgcmV0dXJuIG5pbDsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvVjhET01XcmFwcGVyLmNwcAkocmV2aXNpb24gOTgzNjgpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdyYXBwZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zNSw2ICszNSw4IEBACiAjaW5jbHVkZSAiQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24uaCIK
ICNpbmNsdWRlICJET01EYXRhU3RvcmUuaCIKICNpbmNsdWRlICJEb2N1bWVudExvYWRlci5oIgor
I2luY2x1ZGUgIkV2ZW50VGFyZ2V0SGVhZGVycy5oIgorI2luY2x1ZGUgIkV2ZW50VGFyZ2V0SW50
ZXJmYWNlcy5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyQ2xpZW50LmgiCiAjaW5jbHVkZSAiTm90
aWZpY2F0aW9uLmgiCiAjaW5jbHVkZSAiVjhBYnN0cmFjdEV2ZW50TGlzdGVuZXIuaCIKQEAgLTMz
MSwxMTQgKzMzMywyMCBAQCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IFY4RE9NV3JhcHBlcjo6Z2V0
CiAgICAgcmV0dXJuIGRvbU5vZGVNYXAuZ2V0KG5vZGUpOwogfQogCisjZGVmaW5lIFRSWV9UT19X
UkFQX1dJVEhfSU5URVJGQUNFKGludGVyZmFjZU5hbWUpIFwKKyAgICBpZiAoZXZlbnROYW1lcygp
LmludGVyZmFjZUZvciMjaW50ZXJmYWNlTmFtZSA9PSBkZXNpcmVkSW50ZXJmYWNlKSBcCisgICAg
ICAgIHJldHVybiB0b1Y4KHN0YXRpY19jYXN0PGludGVyZmFjZU5hbWUqPih0YXJnZXQpKTsKKwog
Ly8gQSBKUyBvYmplY3Qgb2YgdHlwZSBFdmVudFRhcmdldCBpcyBsaW1pdGVkIHRvIGEgc21hbGwg
bnVtYmVyIG9mIHBvc3NpYmxlIGNsYXNzZXMuCi0vLyBDaGVjayBFdmVudFRhcmdldC5oIGZvciBu
ZXcgdHlwZSBjb252ZXJzaW9uIG1ldGhvZHMKIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOERPTVdy
YXBwZXI6OmNvbnZlcnRFdmVudFRhcmdldFRvVjhPYmplY3QoRXZlbnRUYXJnZXQqIHRhcmdldCkK
IHsKICAgICBpZiAoIXRhcmdldCkKICAgICAgICAgcmV0dXJuIHY4OjpOdWxsKCk7CiAKLSNpZiBF
TkFCTEUoU1ZHKQotICAgIGlmIChTVkdFbGVtZW50SW5zdGFuY2UqIGluc3RhbmNlID0gdGFyZ2V0
LT50b1NWR0VsZW1lbnRJbnN0YW5jZSgpKQotICAgICAgICByZXR1cm4gdG9WOChpbnN0YW5jZSk7
Ci0jZW5kaWYKLQotI2lmIEVOQUJMRShXT1JLRVJTKQotICAgIGlmIChXb3JrZXIqIHdvcmtlciA9
IHRhcmdldC0+dG9Xb3JrZXIoKSkKLSAgICAgICAgcmV0dXJuIHRvVjgod29ya2VyKTsKLQotICAg
IGlmIChEZWRpY2F0ZWRXb3JrZXJDb250ZXh0KiB3b3JrZXJDb250ZXh0ID0gdGFyZ2V0LT50b0Rl
ZGljYXRlZFdvcmtlckNvbnRleHQoKSkKLSAgICAgICAgcmV0dXJuIHRvVjgod29ya2VyQ29udGV4
dCk7Ci0jZW5kaWYgLy8gV09SS0VSUwotCi0jaWYgRU5BQkxFKFNIQVJFRF9XT1JLRVJTKQotICAg
IGlmIChTaGFyZWRXb3JrZXIqIHNoYXJlZFdvcmtlciA9IHRhcmdldC0+dG9TaGFyZWRXb3JrZXIo
KSkKLSAgICAgICAgcmV0dXJuIHRvVjgoc2hhcmVkV29ya2VyKTsKLQotICAgIGlmIChTaGFyZWRX
b3JrZXJDb250ZXh0KiBzaGFyZWRXb3JrZXJDb250ZXh0ID0gdGFyZ2V0LT50b1NoYXJlZFdvcmtl
ckNvbnRleHQoKSkKLSAgICAgICAgcmV0dXJuIHRvVjgoc2hhcmVkV29ya2VyQ29udGV4dCk7Ci0j
ZW5kaWYgLy8gU0hBUkVEX1dPUktFUlMKLQotI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQotICAg
IGlmIChOb3RpZmljYXRpb24qIG5vdGlmaWNhdGlvbiA9IHRhcmdldC0+dG9Ob3RpZmljYXRpb24o
KSkKLSAgICAgICAgcmV0dXJuIHRvVjgobm90aWZpY2F0aW9uKTsKLSNlbmRpZgotCi0jaWYgRU5B
QkxFKElOREVYRURfREFUQUJBU0UpCi0gICAgaWYgKElEQkRhdGFiYXNlKiBpZGJEYXRhYmFzZSA9
IHRhcmdldC0+dG9JREJEYXRhYmFzZSgpKQotICAgICAgICByZXR1cm4gdG9WOChpZGJEYXRhYmFz
ZSk7Ci0gICAgaWYgKElEQlJlcXVlc3QqIGlkYlJlcXVlc3QgPSB0YXJnZXQtPnRvSURCUmVxdWVz
dCgpKQotICAgICAgICByZXR1cm4gdG9WOChpZGJSZXF1ZXN0KTsKLSAgICBpZiAoSURCVHJhbnNh
Y3Rpb24qIGlkYlRyYW5zYWN0aW9uID0gdGFyZ2V0LT50b0lEQlRyYW5zYWN0aW9uKCkpCi0gICAg
ICAgIHJldHVybiB0b1Y4KGlkYlRyYW5zYWN0aW9uKTsKLSNlbmRpZgotCi0jaWYgRU5BQkxFKFdF
Ql9TT0NLRVRTKQotICAgIGlmIChXZWJTb2NrZXQqIHdlYlNvY2tldCA9IHRhcmdldC0+dG9XZWJT
b2NrZXQoKSkKLSAgICAgICAgcmV0dXJuIHRvVjgod2ViU29ja2V0KTsKLSNlbmRpZgotCi0gICAg
aWYgKE5vZGUqIG5vZGUgPSB0YXJnZXQtPnRvTm9kZSgpKQotICAgICAgICByZXR1cm4gdG9WOChu
b2RlKTsKLQotICAgIGlmIChET01XaW5kb3cqIGRvbVdpbmRvdyA9IHRhcmdldC0+dG9ET01XaW5k
b3coKSkKLSAgICAgICAgcmV0dXJuIHRvVjgoZG9tV2luZG93KTsKLQotICAgIC8vIFhNTEh0dHBS
ZXF1ZXN0IGlzIGNyZWF0ZWQgd2l0aGluIGl0cyBKUyBjb3VudGVycGFydC4KLSAgICBpZiAoWE1M
SHR0cFJlcXVlc3QqIHhtbEh0dHBSZXF1ZXN0ID0gdGFyZ2V0LT50b1hNTEh0dHBSZXF1ZXN0KCkp
IHsKLSAgICAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0gZ2V0QWN0aXZlRE9N
T2JqZWN0TWFwKCkuZ2V0KHhtbEh0dHBSZXF1ZXN0KTsKLSAgICAgICAgQVNTRVJUKCF3cmFwcGVy
LklzRW1wdHkoKSk7Ci0gICAgICAgIHJldHVybiB3cmFwcGVyOwotICAgIH0KLQotICAgIC8vIE1l
c3NhZ2VQb3J0IGlzIGNyZWF0ZWQgd2l0aGluIGl0cyBKUyBjb3VudGVycGFydAotICAgIGlmIChN
ZXNzYWdlUG9ydCogcG9ydCA9IHRhcmdldC0+dG9NZXNzYWdlUG9ydCgpKSB7Ci0gICAgICAgIHY4
OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlciA9IGdldEFjdGl2ZURPTU9iamVjdE1hcCgpLmdl
dChwb3J0KTsKLSAgICAgICAgQVNTRVJUKCF3cmFwcGVyLklzRW1wdHkoKSk7Ci0gICAgICAgIHJl
dHVybiB3cmFwcGVyOwotICAgIH0KLQotICAgIGlmIChYTUxIdHRwUmVxdWVzdFVwbG9hZCogdXBs
b2FkID0gdGFyZ2V0LT50b1hNTEh0dHBSZXF1ZXN0VXBsb2FkKCkpIHsKLSAgICAgICAgdjg6Okhh
bmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0gZ2V0RE9NT2JqZWN0TWFwKCkuZ2V0KHVwbG9hZCk7
Ci0gICAgICAgIEFTU0VSVCghd3JhcHBlci5Jc0VtcHR5KCkpOwotICAgICAgICByZXR1cm4gd3Jh
cHBlcjsKLSAgICB9Ci0KLSAgICBpZiAoRE9NQXBwbGljYXRpb25DYWNoZSogZG9tQXBwQ2FjaGUg
PSB0YXJnZXQtPnRvRE9NQXBwbGljYXRpb25DYWNoZSgpKQotICAgICAgICByZXR1cm4gdG9WOChk
b21BcHBDYWNoZSk7Ci0KLSAgICBpZiAoRXZlbnRTb3VyY2UqIGV2ZW50U291cmNlID0gdGFyZ2V0
LT50b0V2ZW50U291cmNlKCkpCi0gICAgICAgIHJldHVybiB0b1Y4KGV2ZW50U291cmNlKTsKLQot
I2lmIEVOQUJMRShCTE9CKQotICAgIGlmIChGaWxlUmVhZGVyKiBmaWxlUmVhZGVyID0gdGFyZ2V0
LT50b0ZpbGVSZWFkZXIoKSkKLSAgICAgICAgcmV0dXJuIHRvVjgoZmlsZVJlYWRlcik7Ci0jZW5k
aWYKLQotI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKLSAgICBpZiAoRmlsZVdyaXRlciogZmlsZVdy
aXRlciA9IHRhcmdldC0+dG9GaWxlV3JpdGVyKCkpCi0gICAgICAgIHJldHVybiB0b1Y4KGZpbGVX
cml0ZXIpOwotI2VuZGlmCi0KLSNpZiBFTkFCTEUoV0VCX0FVRElPKQotICAgIGlmIChKYXZhU2Ny
aXB0QXVkaW9Ob2RlKiBqc0F1ZGlvTm9kZSA9IHRhcmdldC0+dG9KYXZhU2NyaXB0QXVkaW9Ob2Rl
KCkpCi0gICAgICAgIHJldHVybiB0b1Y4KGpzQXVkaW9Ob2RlKTsKLSAgICBpZiAoQXVkaW9Db250
ZXh0KiBhdWRpb0NvbnRleHQgPSB0YXJnZXQtPnRvQXVkaW9Db250ZXh0KCkpCi0gICAgICAgIHJl
dHVybiB0b1Y4KGF1ZGlvQ29udGV4dCk7Ci0jZW5kaWYgICAgCi0KLSNpZiBFTkFCTEUoTUVESUFf
U1RSRUFNKQotICAgIGlmIChMb2NhbE1lZGlhU3RyZWFtKiBzdHJlYW0gPSB0YXJnZXQtPnRvTG9j
YWxNZWRpYVN0cmVhbSgpKQotICAgICAgICByZXR1cm4gdG9WOChzdHJlYW0pOwotCi0gICAgaWYg
KE1lZGlhU3RyZWFtKiBzdHJlYW0gPSB0YXJnZXQtPnRvTWVkaWFTdHJlYW0oKSkKLSAgICAgICAg
cmV0dXJuIHRvVjgoc3RyZWFtKTsKLQotICAgIGlmIChQZWVyQ29ubmVjdGlvbiogcGVlckNvbm5l
Y3Rpb24gPSB0YXJnZXQtPnRvUGVlckNvbm5lY3Rpb24oKSkKLSAgICAgICAgcmV0dXJuIHRvVjgo
cGVlckNvbm5lY3Rpb24pOwotI2VuZGlmCisgICAgQXRvbWljU3RyaW5nIGRlc2lyZWRJbnRlcmZh
Y2UgPSB0YXJnZXQtPmludGVyZmFjZU5hbWUoKTsKKyAgICBET01fRVZFTlRfVEFSR0VUX0lOVEVS
RkFDRVNfRk9SX0VBQ0goVFJZX1RPX1dSQVBfV0lUSF9JTlRFUkZBQ0UpCiAKLSAgICBBU1NFUlQo
MCk7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIG5vdEhhbmRsZWRCeUlu
dGVyY2VwdG9yKCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9FdmVudE5hbWVzLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRXZlbnROYW1lcy5jcHAJKHJldmlz
aW9uIDk4MzY4KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TmFtZXMuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zMyw2ICszMyw3IEBAIEV2ZW50TmFtZXM6OkV2ZW50TmFtZXMoKQogICAgIDog
ZHVtbXkoMCkKIERPTV9FVkVOVF9OQU1FU19GT1JfRUFDSChJTklUSUFMSVpFX0VWRU5UX05BTUUp
CiBET01fRVZFTlRfSU5URVJGQUNFU19GT1JfRUFDSChJTklUSUFMSVpFX0VWRU5UX0lOVEVSRkFD
RSkKK0RPTV9FVkVOVF9UQVJHRVRfSU5URVJGQUNFU19GT1JfRUFDSChJTklUSUFMSVpFX0VWRU5U
X0lOVEVSRkFDRSkKIHsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TmFtZXMu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRXZlbnROYW1lcy5oCShyZXZpc2lv
biA5ODM2OCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9FdmVudE5hbWVzLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTIzLDYgKzIzLDcgQEAKICNkZWZpbmUgRXZlbnROYW1lc19oCiAKICNpbmNsdWRlICJF
dmVudEludGVyZmFjZXMuaCIKKyNpbmNsdWRlICJFdmVudFRhcmdldEludGVyZmFjZXMuaCIKICNp
bmNsdWRlICJUaHJlYWRHbG9iYWxEYXRhLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3Ry
aW5nLmg+CiAKQEAgLTIwNSw2ICsyMDYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAg
ICAgI2RlZmluZSBET01fRVZFTlRfSU5URVJGQUNFX0RFQ0xBUkUobmFtZSkgQXRvbWljU3RyaW5n
IGludGVyZmFjZUZvciMjbmFtZTsKICAgICAgICAgRE9NX0VWRU5UX0lOVEVSRkFDRVNfRk9SX0VB
Q0goRE9NX0VWRU5UX0lOVEVSRkFDRV9ERUNMQVJFKQorICAgICAgICBET01fRVZFTlRfVEFSR0VU
X0lOVEVSRkFDRVNfRk9SX0VBQ0goRE9NX0VWRU5UX0lOVEVSRkFDRV9ERUNMQVJFKQogICAgICAg
ICAjdW5kZWYgRE9NX0VWRU5UX0lOVEVSRkFDRV9ERUNMQVJFCiAgICAgfTsKIApJbmRleDogU291
cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9kb20vRXZlbnRUYXJnZXQuY3BwCShyZXZpc2lvbiA5ODM2OCkKKysrIFNvdXJjZS9XZWJD
b3JlL2RvbS9FdmVudFRhcmdldC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgwLDExICs4MCw2IEBA
IEV2ZW50VGFyZ2V0Ojp+RXZlbnRUYXJnZXQoKQogewogfQogCi1FdmVudFNvdXJjZSogRXZlbnRU
YXJnZXQ6OnRvRXZlbnRTb3VyY2UoKQotewotICAgIHJldHVybiAwOwotfQotCiBOb2RlKiBFdmVu
dFRhcmdldDo6dG9Ob2RlKCkKIHsKICAgICByZXR1cm4gMDsKQEAgLTk1LDEzMSArOTAsNiBAQCBE
T01XaW5kb3cqIEV2ZW50VGFyZ2V0Ojp0b0RPTVdpbmRvdygpCiAgICAgcmV0dXJuIDA7CiB9CiAK
LVhNTEh0dHBSZXF1ZXN0KiBFdmVudFRhcmdldDo6dG9YTUxIdHRwUmVxdWVzdCgpCi17Ci0gICAg
cmV0dXJuIDA7Ci19Ci0KLVhNTEh0dHBSZXF1ZXN0VXBsb2FkKiBFdmVudFRhcmdldDo6dG9YTUxI
dHRwUmVxdWVzdFVwbG9hZCgpCi17Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLURPTUFwcGxpY2F0aW9u
Q2FjaGUqIEV2ZW50VGFyZ2V0Ojp0b0RPTUFwcGxpY2F0aW9uQ2FjaGUoKQotewotICAgIHJldHVy
biAwOwotfQotCi0jaWYgRU5BQkxFKFNWRykKLVNWR0VsZW1lbnRJbnN0YW5jZSogRXZlbnRUYXJn
ZXQ6OnRvU1ZHRWxlbWVudEluc3RhbmNlKCkKLXsKLSAgICByZXR1cm4gMDsKLX0KLSNlbmRpZgot
Ci0jaWYgRU5BQkxFKFdFQl9BVURJTykKLUF1ZGlvQ29udGV4dCogRXZlbnRUYXJnZXQ6OnRvQXVk
aW9Db250ZXh0KCkKLXsKLSAgICByZXR1cm4gMDsKLX0KLQotSmF2YVNjcmlwdEF1ZGlvTm9kZSog
RXZlbnRUYXJnZXQ6OnRvSmF2YVNjcmlwdEF1ZGlvTm9kZSgpCi17Ci0gICAgcmV0dXJuIDA7Ci19
Ci0jZW5kaWYKLQotI2lmIEVOQUJMRShXRUJfU09DS0VUUykKLVdlYlNvY2tldCogRXZlbnRUYXJn
ZXQ6OnRvV2ViU29ja2V0KCkKLXsKLSAgICByZXR1cm4gMDsKLX0KLSNlbmRpZgotCi1NZXNzYWdl
UG9ydCogRXZlbnRUYXJnZXQ6OnRvTWVzc2FnZVBvcnQoKQotewotICAgIHJldHVybiAwOwotfQot
Ci0jaWYgRU5BQkxFKFdPUktFUlMpCi1Xb3JrZXIqIEV2ZW50VGFyZ2V0Ojp0b1dvcmtlcigpCi17
Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLURlZGljYXRlZFdvcmtlckNvbnRleHQqIEV2ZW50VGFyZ2V0
Ojp0b0RlZGljYXRlZFdvcmtlckNvbnRleHQoKQotewotICAgIHJldHVybiAwOwotfQotI2VuZGlm
Ci0KLSNpZiBFTkFCTEUoU0hBUkVEX1dPUktFUlMpCi1TaGFyZWRXb3JrZXIqIEV2ZW50VGFyZ2V0
Ojp0b1NoYXJlZFdvcmtlcigpCi17Ci0gICAgcmV0dXJuIDA7Ci19Ci1TaGFyZWRXb3JrZXJDb250
ZXh0KiBFdmVudFRhcmdldDo6dG9TaGFyZWRXb3JrZXJDb250ZXh0KCkKLXsKLSAgICByZXR1cm4g
MDsKLX0KLSNlbmRpZgotCi0jaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCi1Ob3RpZmljYXRpb24q
IEV2ZW50VGFyZ2V0Ojp0b05vdGlmaWNhdGlvbigpCi17Ci0gICAgcmV0dXJuIDA7Ci19Ci0jZW5k
aWYKLQotI2lmIEVOQUJMRShCTE9CKQotRmlsZVJlYWRlciogRXZlbnRUYXJnZXQ6OnRvRmlsZVJl
YWRlcigpCi17Ci0gICAgcmV0dXJuIDA7Ci19Ci0jZW5kaWYKLSNpZiBFTkFCTEUoRklMRV9TWVNU
RU0pCi1GaWxlV3JpdGVyKiBFdmVudFRhcmdldDo6dG9GaWxlV3JpdGVyKCkKLXsKLSAgICByZXR1
cm4gMDsKLX0KLSNlbmRpZgotCi0jaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCi1JREJEYXRh
YmFzZSogRXZlbnRUYXJnZXQ6OnRvSURCRGF0YWJhc2UoKQotewotICAgIHJldHVybiAwOwotfQot
SURCUmVxdWVzdCogRXZlbnRUYXJnZXQ6OnRvSURCUmVxdWVzdCgpCi17Ci0gICAgcmV0dXJuIDA7
Ci19Ci1JREJUcmFuc2FjdGlvbiogRXZlbnRUYXJnZXQ6OnRvSURCVHJhbnNhY3Rpb24oKQotewot
ICAgIHJldHVybiAwOwotfQotSURCVmVyc2lvbkNoYW5nZVJlcXVlc3QqIEV2ZW50VGFyZ2V0Ojp0
b0lEQlZlcnNpb25DaGFuZ2VSZXF1ZXN0KCkKLXsKLSAgICByZXR1cm4gMDsKLX0KLSNlbmRpZgot
Ci0jaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKLU1lZGlhU3RyZWFtKiBFdmVudFRhcmdldDo6dG9N
ZWRpYVN0cmVhbSgpCi17Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLUxvY2FsTWVkaWFTdHJlYW0qIEV2
ZW50VGFyZ2V0Ojp0b0xvY2FsTWVkaWFTdHJlYW0oKQotewotICAgIHJldHVybiAwOwotfQotCi1Q
ZWVyQ29ubmVjdGlvbiogRXZlbnRUYXJnZXQ6OnRvUGVlckNvbm5lY3Rpb24oKQotewotICAgIHJl
dHVybiAwOwotfQotI2VuZGlmCi0KIGJvb2wgRXZlbnRUYXJnZXQ6OmFkZEV2ZW50TGlzdGVuZXIo
Y29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4g
bGlzdGVuZXIsIGJvb2wgdXNlQ2FwdHVyZSkKIHsKICAgICBFdmVudFRhcmdldERhdGEqIGQgPSBl
bnN1cmVFdmVudFRhcmdldERhdGEoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRh
cmdldC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5oCShy
ZXZpc2lvbiA5ODM2OCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMDAsNTggKzEwMCwxMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
ICAgIHZvaWQgcmVmKCkgeyByZWZFdmVudFRhcmdldCgpOyB9CiAgICAgICAgIHZvaWQgZGVyZWYo
KSB7IGRlcmVmRXZlbnRUYXJnZXQoKTsgfQogCi0gICAgICAgIHZpcnR1YWwgRXZlbnRTb3VyY2Uq
IHRvRXZlbnRTb3VyY2UoKTsKLSAgICAgICAgdmlydHVhbCBNZXNzYWdlUG9ydCogdG9NZXNzYWdl
UG9ydCgpOworICAgICAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgaW50ZXJmYWNlTmFt
ZSgpIGNvbnN0ID0gMDsKKyAgICAgICAgdmlydHVhbCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QgPSAwOworCiAgICAgICAgIHZpcnR1YWwgTm9k
ZSogdG9Ob2RlKCk7CiAgICAgICAgIHZpcnR1YWwgRE9NV2luZG93KiB0b0RPTVdpbmRvdygpOwot
ICAgICAgICB2aXJ0dWFsIFhNTEh0dHBSZXF1ZXN0KiB0b1hNTEh0dHBSZXF1ZXN0KCk7Ci0gICAg
ICAgIHZpcnR1YWwgWE1MSHR0cFJlcXVlc3RVcGxvYWQqIHRvWE1MSHR0cFJlcXVlc3RVcGxvYWQo
KTsKLSAgICAgICAgdmlydHVhbCBET01BcHBsaWNhdGlvbkNhY2hlKiB0b0RPTUFwcGxpY2F0aW9u
Q2FjaGUoKTsKLSNpZiBFTkFCTEUoU1ZHKQotICAgICAgICB2aXJ0dWFsIFNWR0VsZW1lbnRJbnN0
YW5jZSogdG9TVkdFbGVtZW50SW5zdGFuY2UoKTsKLSNlbmRpZgotI2lmIEVOQUJMRShXT1JLRVJT
KQotICAgICAgICB2aXJ0dWFsIFdvcmtlciogdG9Xb3JrZXIoKTsKLSAgICAgICAgdmlydHVhbCBE
ZWRpY2F0ZWRXb3JrZXJDb250ZXh0KiB0b0RlZGljYXRlZFdvcmtlckNvbnRleHQoKTsKLSNlbmRp
ZgotI2lmIEVOQUJMRShTSEFSRURfV09SS0VSUykKLSAgICAgICAgdmlydHVhbCBTaGFyZWRXb3Jr
ZXIqIHRvU2hhcmVkV29ya2VyKCk7Ci0gICAgICAgIHZpcnR1YWwgU2hhcmVkV29ya2VyQ29udGV4
dCogdG9TaGFyZWRXb3JrZXJDb250ZXh0KCk7Ci0jZW5kaWYKLQotI2lmIEVOQUJMRShXRUJfQVVE
SU8pCi0gICAgICAgIHZpcnR1YWwgQXVkaW9Db250ZXh0KiB0b0F1ZGlvQ29udGV4dCgpOwotICAg
ICAgICB2aXJ0dWFsIEphdmFTY3JpcHRBdWRpb05vZGUqIHRvSmF2YVNjcmlwdEF1ZGlvTm9kZSgp
OwotI2VuZGlmCi0KLSNpZiBFTkFCTEUoV0VCX1NPQ0tFVFMpCi0gICAgICAgIHZpcnR1YWwgV2Vi
U29ja2V0KiB0b1dlYlNvY2tldCgpOwotI2VuZGlmCi0KLSNpZiBFTkFCTEUoTk9USUZJQ0FUSU9O
UykKLSAgICAgICAgdmlydHVhbCBOb3RpZmljYXRpb24qIHRvTm90aWZpY2F0aW9uKCk7Ci0jZW5k
aWYKLSNpZiBFTkFCTEUoQkxPQikKLSAgICAgICAgdmlydHVhbCBGaWxlUmVhZGVyKiB0b0ZpbGVS
ZWFkZXIoKTsKLSNlbmRpZgotI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKLSAgICAgICAgdmlydHVh
bCBGaWxlV3JpdGVyKiB0b0ZpbGVXcml0ZXIoKTsKLSNlbmRpZgotCi0jaWYgRU5BQkxFKElOREVY
RURfREFUQUJBU0UpCi0gICAgICAgIHZpcnR1YWwgSURCRGF0YWJhc2UqIHRvSURCRGF0YWJhc2Uo
KTsKLSAgICAgICAgdmlydHVhbCBJREJSZXF1ZXN0KiB0b0lEQlJlcXVlc3QoKTsKLSAgICAgICAg
dmlydHVhbCBJREJUcmFuc2FjdGlvbiogdG9JREJUcmFuc2FjdGlvbigpOwotICAgICAgICB2aXJ0
dWFsIElEQlZlcnNpb25DaGFuZ2VSZXF1ZXN0KiB0b0lEQlZlcnNpb25DaGFuZ2VSZXF1ZXN0KCk7
Ci0jZW5kaWYKLQotI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCi0gICAgICAgIHZpcnR1YWwgTWVk
aWFTdHJlYW0qIHRvTWVkaWFTdHJlYW0oKTsKLSAgICAgICAgdmlydHVhbCBMb2NhbE1lZGlhU3Ry
ZWFtKiB0b0xvY2FsTWVkaWFTdHJlYW0oKTsKLSAgICAgICAgdmlydHVhbCBQZWVyQ29ubmVjdGlv
biogdG9QZWVyQ29ubmVjdGlvbigpOwotI2VuZGlmCi0KLSAgICAgICAgdmlydHVhbCBTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QgPSAwOwogCiAg
ICAgICAgIHZpcnR1YWwgYm9vbCBhZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYg
ZXZlbnRUeXBlLCBQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+LCBib29sIHVzZUNhcHR1cmUpOwog
ICAgICAgICB2aXJ0dWFsIGJvb2wgcmVtb3ZlRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJp
bmcmIGV2ZW50VHlwZSwgRXZlbnRMaXN0ZW5lciosIGJvb2wgdXNlQ2FwdHVyZSk7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXRGYWN0b3J5LmluCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldEZhY3RvcnkuaW4JKHJldmlzaW9uIDApCisrKyBT
b3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXRGYWN0b3J5LmluCShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDI3IEBACituYW1lc3BhY2U9IkV2ZW50VGFyZ2V0IgorCitFdmVudFNvdXJjZQorTWVz
c2FnZVBvcnQKK05vZGUKK0RPTVdpbmRvdworWE1MSHR0cFJlcXVlc3QKK1hNTEh0dHBSZXF1ZXN0
VXBsb2FkCitET01BcHBsaWNhdGlvbkNhY2hlCitTVkdFbGVtZW50SW5zdGFuY2UgY29uZGl0aW9u
YWw9U1ZHCitXb3JrZXIgY29uZGl0aW9uYWw9V09SS0VSUworRGVkaWNhdGVkV29ya2VyQ29udGV4
dCBjb25kaXRpb25hbD1XT1JLRVJTCitTaGFyZWRXb3JrZXIgY29uZGl0aW9uYWw9U0hBUkVEX1dP
UktFUlMKK1NoYXJlZFdvcmtlckNvbnRleHQgY29uZGl0aW9uYWw9U0hBUkVEX1dPUktFUlMKK0F1
ZGlvQ29udGV4dCBjb25kaXRpb25hbD1XRUJfQVVESU8KK0phdmFTY3JpcHRBdWRpb05vZGUgY29u
ZGl0aW9uYWw9V0VCX0FVRElPCitXZWJTb2NrZXQgY29uZGl0aW9uYWw9V0VCX1NPQ0tFVFMKK05v
dGlmaWNhdGlvbiBjb25kaXRpb25hbD1OT1RJRklDQVRJT05TCitGaWxlUmVhZGVyIGNvbmRpdGlv
bmFsPUJMT0IKK0ZpbGVXcml0ZXIgY29uZGl0aW9uYWw9RklMRV9TWVNURU0KK0lEQkRhdGFiYXNl
IGNvbmRpdGlvbmFsPUlOREVYRURfREFUQUJBU0UKK0lEQlJlcXVlc3QgY29uZGl0aW9uYWw9SU5E
RVhFRF9EQVRBQkFTRQorSURCVHJhbnNhY3Rpb24gY29uZGl0aW9uYWw9SU5ERVhFRF9EQVRBQkFT
RQorSURCVmVyc2lvbkNoYW5nZVJlcXVlc3QgY29uZGl0aW9uYWw9SU5ERVhFRF9EQVRBQkFTRQor
TWVkaWFTdHJlYW0gY29uZGl0aW9uYWw9TUVESUFfU1RSRUFNCitMb2NhbE1lZGlhU3RyZWFtIGNv
bmRpdGlvbmFsPU1FRElBX1NUUkVBTQorUGVlckNvbm5lY3Rpb24gY29uZGl0aW9uYWw9TUVESUFf
U1RSRUFNCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZVBvcnQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlUG9ydC5jcHAJKHJldmlzaW9uIDk4MzY4
KQorKysgU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VQb3J0LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTU5LDYgKzE1OSwxMSBAQCB2b2lkIE1lc3NhZ2VQb3J0Ojpjb250ZXh0RGVzdHJveWVkKCkK
ICAgICBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQgPSAwOwogfQogCitjb25zdCBBdG9taWNTdHJp
bmcmIE1lc3NhZ2VQb3J0OjppbnRlcmZhY2VOYW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZXZl
bnROYW1lcygpLmludGVyZmFjZUZvck1lc3NhZ2VQb3J0OworfQorCiBTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBNZXNzYWdlUG9ydDo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0CiB7CiAg
ICAgcmV0dXJuIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2RvbS9NZXNzYWdlUG9ydC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9NZXNz
YWdlUG9ydC5oCShyZXZpc2lvbiA5ODM2OCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdl
UG9ydC5oCSh3b3JraW5nIGNvcHkpCkBAIC04MiwxMCArODIsOSBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKICAgICAgICAgdm9pZCBjb250ZXh0RGVzdHJveWVkKCk7CiAKKyAgICAgICAgdmlydHVh
bCBjb25zdCBBdG9taWNTdHJpbmcmIGludGVyZmFjZU5hbWUoKSBjb25zdDsKICAgICAgICAgdmly
dHVhbCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29u
c3Q7CiAKLSAgICAgICAgdmlydHVhbCBNZXNzYWdlUG9ydCogdG9NZXNzYWdlUG9ydCgpIHsgcmV0
dXJuIHRoaXM7IH0KLQogICAgICAgICB2b2lkIGRpc3BhdGNoTWVzc2FnZXMoKTsKIAogICAgICAg
ICB1c2luZyBSZWZDb3VudGVkPE1lc3NhZ2VQb3J0Pjo6cmVmOwpJbmRleDogU291cmNlL1dlYkNv
cmUvZG9tL05vZGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNw
cAkocmV2aXNpb24gOTgzNjgpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTU3NSw2ICs1NzUsMTEgQEAgdm9pZCBOb2RlOjpzZXRTaGFkb3dIb3N0KEVs
ZW1lbnQqIGhvc3QpCiAgICAgc2V0UGFyZW50KGhvc3QpOwogfQogCitOb2RlKiBOb2RlOjp0b05v
ZGUoKQoreworICAgIHJldHVybiB0aGlzOworfQorCiBIVE1MSW5wdXRFbGVtZW50KiBOb2RlOjp0
b0lucHV0RWxlbWVudCgpCiB7CiAgICAgLy8gSWYgb25lIG9mIHRoZSBiZWxvdyBBU1NFUlRzIHRy
aWdnZXIsIHlvdSBhcmUgY2FsbGluZyB0aGlzIGZ1bmN0aW9uCkBAIC0yNTE0LDcgKzI1MTksMTAg
QEAgTm9kZSogTm9kZTo6ZW5jbG9zaW5nTGlua0V2ZW50UGFyZW50T3JTZQogICAgIHJldHVybiAw
OwogfQogCi0vLyAtLS0tLS0tLQorY29uc3QgQXRvbWljU3RyaW5nJiBOb2RlOjppbnRlcmZhY2VO
YW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZXZlbnROYW1lcygpLmludGVyZmFjZUZvck5vZGU7
Cit9CiAKIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIE5vZGU6OnNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKSBjb25zdAogewpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCShyZXZpc2lvbiA5ODM2OCkKKysrIFNvdXJj
ZS9XZWJDb3JlL2RvbS9Ob2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTUzNSwxMCArNTM1LDEwIEBA
IHB1YmxpYzoKIAogICAgIHVuc2lnbmVkIHNob3J0IGNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKE5v
ZGUqKTsKIAotICAgIHZpcnR1YWwgTm9kZSogdG9Ob2RlKCkgeyByZXR1cm4gdGhpczsgfQotCisg
ICAgdmlydHVhbCBOb2RlKiB0b05vZGUoKTsKICAgICB2aXJ0dWFsIEhUTUxJbnB1dEVsZW1lbnQq
IHRvSW5wdXRFbGVtZW50KCk7CiAKKyAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgaW50
ZXJmYWNlTmFtZSgpIGNvbnN0OwogICAgIHZpcnR1YWwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0OwogCiAgICAgdmlydHVhbCBib29sIGFkZEV2
ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFBhc3NSZWZQdHI8RXZl
bnRMaXN0ZW5lcj4sIGJvb2wgdXNlQ2FwdHVyZSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20v
bWFrZV9ldmVudF9mYWN0b3J5LnBsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9t
YWtlX2V2ZW50X2ZhY3RvcnkucGwJKHJldmlzaW9uIDk4MzY4KQorKysgU291cmNlL1dlYkNvcmUv
ZG9tL21ha2VfZXZlbnRfZmFjdG9yeS5wbAkod29ya2luZyBjb3B5KQpAQCAtNDcsNiArNDcsNyBA
QCBzdWIgcHJpbnRIZWFkZXJzRmlsZSgkKTsKIG15ICRldmVudHNGaWxlID0gIiI7CiBteSAkb3V0
cHV0RGlyID0gIi4iOwogbXkgJXBhcnNlZEV2ZW50cyA9ICgpOworbXkgJG5hbWVzcGFjZTsKIAog
cmVxdWlyZSBDb25maWc7CiAKQEAgLTYxLDkgKzYyLDkgQEAgZGllICJZb3UgbXVzdCBzcGVjaWZ5
IC0tZXZlbnRzIDxmaWxlPiIgdQogCiBteSAlZXZlbnRzID0gJXtyZWFkRXZlbnRzKCRldmVudHNG
aWxlKX07CiAKLXByaW50RmFjdG9yeUZpbGUoIiRvdXRwdXREaXIvRXZlbnRGYWN0b3J5LmNwcCIp
OwotcHJpbnRNYWNyb0ZpbGUoIiRvdXRwdXREaXIvRXZlbnRJbnRlcmZhY2VzLmgiKTsKLXByaW50
SGVhZGVyc0ZpbGUoIiRvdXRwdXREaXIvRXZlbnRIZWFkZXJzLmgiKTsKK3ByaW50RmFjdG9yeUZp
bGUoIiRvdXRwdXREaXIvJHtuYW1lc3BhY2V9RmFjdG9yeS5jcHAiKSBpZiAkbmFtZXNwYWNlIGVx
ICJFdmVudCI7CitwcmludE1hY3JvRmlsZSgiJG91dHB1dERpci8ke25hbWVzcGFjZX1JbnRlcmZh
Y2VzLmgiKTsKK3ByaW50SGVhZGVyc0ZpbGUoIiRvdXRwdXREaXIvJHtuYW1lc3BhY2V9SGVhZGVy
cy5oIik7CiAKIHN1YiBkZWZhdWx0RXZlbnRQcm9wZXJ0eUhhc2gKIHsKQEAgLTg5LDcgKzkwLDgg
QEAgc3ViIHBhcmFtZXRlcnNIYW5kbGVyCiB7CiAgICAgbXkgKCRwYXJhbWV0ZXIsICR2YWx1ZSkg
PSBAXzsKIAotICAgIGRpZSAiVW5rbm93biBwYXJhbWV0ZXIgJHBhcmFtZXRlciBmb3IgZXZlbnRz
XG4iIHVubGVzcyAkcGFyYW1ldGVyIGVxICJuYW1lc3BhY2UiOworICAgIGRpZSAiVW5rbm93biBw
YXJhbWV0ZXIgJHBhcmFtZXRlclxuIiB1bmxlc3MgJHBhcmFtZXRlciBlcSAibmFtZXNwYWNlIjsK
KyAgICAkbmFtZXNwYWNlID0gJHZhbHVlOwogfQogCiBzdWIgcmVhZE5hbWVzKCQkJCkKQEAgLTEy
NCw2ICsxMjYsMTYgQEAgc3ViIGludGVyZmFjZUZvckV2ZW50KCQpCiAgICAgcmV0dXJuICRpbnRl
cmZhY2VOYW1lOwogfQogCitzdWIgdG9NYWNyb1N0eWxlKCQpCit7CisgICAgbXkgKCRjYW1lbENh
c2UpID0gQF87CisKKyAgICByZXR1cm4gIkVWRU5UIiBpZiAkY2FtZWxDYXNlIGVxICJFdmVudCI7
CisgICAgcmV0dXJuICJFVkVOVF9UQVJHRVQiIGlmICRjYW1lbENhc2UgZXEgIkV2ZW50VGFyZ2V0
IjsKKworICAgIGRpZSAiT2ssIHlvdSBnb3QgbWUuIFRoaXMgc2NyaXB0IGlzIHJlYWxseSBqdXN0
IGEgZ2lhbnQgaGFjay4iOworfQorCiBzdWIgcHJpbnRGYWN0b3J5RmlsZSgkKQogewogICAgIG15
ICRwYXRoID0gc2hpZnQ7CkBAIC0xMzQsMTMgKzE0NiwxMyBAQCBzdWIgcHJpbnRGYWN0b3J5Rmls
ZSgkKQogICAgIHByaW50TGljZW5zZUhlYWRlcigkRik7CiAKICAgICBwcmludCBGICIjaW5jbHVk
ZSBcImNvbmZpZy5oXCJcbiI7Ci0gICAgcHJpbnQgRiAiI2luY2x1ZGUgXCJFdmVudEZhY3Rvcnku
aFwiXG4iOworICAgIHByaW50IEYgIiNpbmNsdWRlIFwiJHtuYW1lc3BhY2V9RmFjdG9yeS5oXCJc
biI7CiAgICAgcHJpbnQgRiAiXG4iOwotICAgIHByaW50IEYgIiNpbmNsdWRlIFwiRXZlbnRIZWFk
ZXJzLmhcIlxuIjsKKyAgICBwcmludCBGICIjaW5jbHVkZSBcIiR7bmFtZXNwYWNlfUhlYWRlcnMu
aFwiXG4iOwogICAgIHByaW50IEYgIlxuIjsKICAgICBwcmludCBGICJuYW1lc3BhY2UgV2ViQ29y
ZSB7XG4iOwogICAgIHByaW50IEYgIlxuIjsKLSAgICBwcmludCBGICJQYXNzUmVmUHRyPEV2ZW50
PiBFdmVudEZhY3Rvcnk6OmNyZWF0ZShjb25zdCBTdHJpbmcmIGV2ZW50VHlwZSlcbiI7CisgICAg
cHJpbnQgRiAiUGFzc1JlZlB0cjwkbmFtZXNwYWNlPiAke25hbWVzcGFjZX1GYWN0b3J5OjpjcmVh
dGUoY29uc3QgU3RyaW5nJiB0eXBlKVxuIjsKICAgICBwcmludCBGICJ7XG4iOwogCiAgICAgZm9y
IG15ICRldmVudE5hbWUgKHNvcnQga2V5cyAlcGFyc2VkRXZlbnRzKSB7CkBAIC0xNDgsNyArMTYw
LDcgQEAgc3ViIHByaW50RmFjdG9yeUZpbGUoJCkKICAgICAgICAgbXkgJGludGVyZmFjZU5hbWUg
PSBpbnRlcmZhY2VGb3JFdmVudCgkZXZlbnROYW1lKTsKIAogICAgICAgICBwcmludCBGICIjaWYg
RU5BQkxFKCRjb25kaXRpb25hbClcbiIgaWYgJGNvbmRpdGlvbmFsOwotICAgICAgICBwcmludCBG
ICIgICAgaWYgKGV2ZW50VHlwZSA9PSBcIiRldmVudE5hbWVcIilcbiI7CisgICAgICAgIHByaW50
IEYgIiAgICBpZiAodHlwZSA9PSBcIiRldmVudE5hbWVcIilcbiI7CiAgICAgICAgIHByaW50IEYg
IiAgICAgICAgcmV0dXJuICR7aW50ZXJmYWNlTmFtZX06OmNyZWF0ZSgpO1xuIjsKICAgICAgICAg
cHJpbnQgRiAiI2VuZGlmXG4iIGlmICRjb25kaXRpb25hbDsKICAgICB9CkBAIC0xNjksOCArMTgx
LDggQEAgc3ViIHByaW50TWFjcm9GaWxlKCQpCiAKICAgICBwcmludExpY2Vuc2VIZWFkZXIoJEYp
OwogCi0gICAgcHJpbnQgRiAiI2lmbmRlZiBFdmVudEludGVyZmFjZXNfaFxuIjsKLSAgICBwcmlu
dCBGICIjZGVmaW5lIEV2ZW50SW50ZXJmYWNlc19oXG4iOworICAgIHByaW50IEYgIiNpZm5kZWYg
JHtuYW1lc3BhY2V9SW50ZXJmYWNlc19oXG4iOworICAgIHByaW50IEYgIiNkZWZpbmUgJHtuYW1l
c3BhY2V9SW50ZXJmYWNlc19oXG4iOwogICAgIHByaW50IEYgIlxuIjsKIAogICAgIG15ICV1bmNv
bmRpdGlvbmFsSW50ZXJmYWNlcyA9ICgpOwpAQCAtMTkwLDM0ICsyMDIsMzYgQEAgc3ViIHByaW50
TWFjcm9GaWxlKCQpCiAgICAgICAgIH0KICAgICB9CiAKKyAgICBteSAkbWFjcm9TdHlsZWROYW1l
c3BhY2UgPSB0b01hY3JvU3R5bGUoJG5hbWVzcGFjZSk7CisKICAgICBmb3IgbXkgJGNvbmRpdGlv
bmFsIChzb3J0IGtleXMgJWludGVyZmFjZXNCeUNvbmRpdGlvbmFsKSB7CiAgICAgICAgIHByaW50
IEYgIiNpZiBFTkFCTEUoJGNvbmRpdGlvbmFsKVxuIjsKLSAgICAgICAgcHJpbnQgRiAiI2RlZmlu
ZSBET01fRVZFTlRfSU5URVJGQUNFU19GT1JfRUFDSF8kY29uZGl0aW9uYWwobWFjcm8pIFxcXG4i
OworICAgICAgICBwcmludCBGICIjZGVmaW5lIERPTV8ke21hY3JvU3R5bGVkTmFtZXNwYWNlfV9J
TlRFUkZBQ0VTX0ZPUl9FQUNIXyRjb25kaXRpb25hbChtYWNybykgXFxcbiI7CiAKICAgICAgICAg
Zm9yIG15ICRpbnRlcmZhY2UgKHNvcnQga2V5cyAleyAkaW50ZXJmYWNlc0J5Q29uZGl0aW9uYWx7
JGNvbmRpdGlvbmFsfSB9KSB7CiAgICAgICAgICAgICBuZXh0IGlmIGRlZmluZWQoJHVuY29uZGl0
aW9uYWxJbnRlcmZhY2VzeyRpbnRlcmZhY2V9KTsKICAgICAgICAgICAgIHByaW50IEYgIiAgICBt
YWNybygkaW50ZXJmYWNlKSBcXFxuIjsKICAgICAgICAgfQogCi0gICAgICAgIHByaW50IEYgIi8v
IEVuZCBvZiBET01fRVZFTlRfSU5URVJGQUNFU19GT1JfRUFDSF8kY29uZGl0aW9uYWxcbiI7Cisg
ICAgICAgIHByaW50IEYgIi8vIEVuZCBvZiBET01fJHttYWNyb1N0eWxlZE5hbWVzcGFjZX1fSU5U
RVJGQUNFU19GT1JfRUFDSF8kY29uZGl0aW9uYWxcbiI7CiAgICAgICAgIHByaW50IEYgIiNlbHNl
XG4iOwotICAgICAgICBwcmludCBGICIjZGVmaW5lIERPTV9FVkVOVF9JTlRFUkZBQ0VTX0ZPUl9F
QUNIXyRjb25kaXRpb25hbChtYWNybylcbiI7CisgICAgICAgIHByaW50IEYgIiNkZWZpbmUgRE9N
XyR7bWFjcm9TdHlsZWROYW1lc3BhY2V9X0lOVEVSRkFDRVNfRk9SX0VBQ0hfJGNvbmRpdGlvbmFs
KG1hY3JvKVxuIjsKICAgICAgICAgcHJpbnQgRiAiI2VuZGlmXG4iOwogICAgICAgICBwcmludCBG
ICJcbiI7CiAgICAgfQogCi0gICAgcHJpbnQgRiAiI2RlZmluZSBET01fRVZFTlRfSU5URVJGQUNF
U19GT1JfRUFDSChtYWNybykgXFxcbiI7CisgICAgcHJpbnQgRiAiI2RlZmluZSBET01fJHttYWNy
b1N0eWxlZE5hbWVzcGFjZX1fSU5URVJGQUNFU19GT1JfRUFDSChtYWNybykgXFxcbiI7CiAgICAg
cHJpbnQgRiAiICAgIFxcXG4iOwogICAgIGZvciBteSAkaW50ZXJmYWNlIChzb3J0IGtleXMgJXVu
Y29uZGl0aW9uYWxJbnRlcmZhY2VzKSB7CiAgICAgICAgICAgICBwcmludCBGICIgICAgbWFjcm8o
JGludGVyZmFjZSkgXFxcbiI7CiAgICAgfQogICAgIHByaW50IEYgIiAgICBcXFxuIjsKICAgICBm
b3IgbXkgJGNvbmRpdGlvbmFsIChzb3J0IGtleXMgJWludGVyZmFjZXNCeUNvbmRpdGlvbmFsKSB7
Ci0gICAgICAgIHByaW50IEYgIiAgICBET01fRVZFTlRfSU5URVJGQUNFU19GT1JfRUFDSF8kY29u
ZGl0aW9uYWwobWFjcm8pIFxcXG4iOworICAgICAgICBwcmludCBGICIgICAgRE9NXyR7bWFjcm9T
dHlsZWROYW1lc3BhY2V9X0lOVEVSRkFDRVNfRk9SX0VBQ0hfJGNvbmRpdGlvbmFsKG1hY3JvKSBc
XFxuIjsKICAgICB9CiAKICAgICBwcmludCBGICJcbiI7Ci0gICAgcHJpbnQgRiAiI2VuZGlmIC8v
IEV2ZW50SW50ZXJmYWNlc19oXG4iOworICAgIHByaW50IEYgIiNlbmRpZiAvLyAke25hbWVzcGFj
ZX1JbnRlcmZhY2VzX2hcbiI7CiAKICAgICBjbG9zZSBGOwogfQpAQCAtMjMxLDggKzI0NSw4IEBA
IHN1YiBwcmludEhlYWRlcnNGaWxlKCQpCiAKICAgICBwcmludExpY2Vuc2VIZWFkZXIoJEYpOwog
Ci0gICAgcHJpbnQgRiAiI2lmbmRlZiBFdmVudEhlYWRlcnNfaFxuIjsKLSAgICBwcmludCBGICIj
ZGVmaW5lIEV2ZW50SGVhZGVyc19oXG4iOworICAgIHByaW50IEYgIiNpZm5kZWYgJHtuYW1lc3Bh
Y2V9SGVhZGVyc19oXG4iOworICAgIHByaW50IEYgIiNkZWZpbmUgJHtuYW1lc3BhY2V9SGVhZGVy
c19oXG4iOwogICAgIHByaW50IEYgIlxuIjsKIAogICAgIG15ICVpbmNsdWRlZEludGVyZmFjZXMg
PSAoKTsKQEAgLTI1NSw3ICsyNjksNyBAQCBzdWIgcHJpbnRIZWFkZXJzRmlsZSgkKQogICAgIH0K
IAogICAgIHByaW50IEYgIlxuIjsKLSAgICBwcmludCBGICIjZW5kaWYgLy8gRXZlbnRIZWFkZXJz
X2hcbiI7CisgICAgcHJpbnQgRiAiI2VuZGlmIC8vICR7bmFtZXNwYWNlfUhlYWRlcnNfaFxuIjsK
IAogICAgIGNsb3NlIEY7CiB9CkBAIC0yNjcsNyArMjgxLDcgQEAgc3ViIHByaW50TGljZW5zZUhl
YWRlcigkKQogICAgIHByaW50IEYgIi8qCiAgKiBUSElTIEZJTEUgV0FTIEFVVE9NQVRJQ0FMTFkg
R0VORVJBVEVELCBETyBOT1QgRURJVC4KICAqCi0gKiBUaGlzIGZpbGUgd2FzIGdlbmVyYXRlZCBi
eSB0aGUgZG9tL21ha2VfZXZlbnRzLnBsIHNjcmlwdC4KKyAqIFRoaXMgZmlsZSB3YXMgZ2VuZXJh
dGVkIGJ5IHRoZSBkb20vbWFrZV9ldmVudF9mYWN0b3J5LnBsIHNjcmlwdC4KICAqCiAgKiBDb3B5
cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgpJbmRl
eDogU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXIuY3BwCShyZXZpc2lvbiA5ODM2OCkKKysr
IFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTYyLDYgKzYyLDExIEBAIEZpbGVSZWFkZXI6On5GaWxlUmVhZGVyKCkKICAgICB0ZXJtaW5hdGUo
KTsKIH0KIAorY29uc3QgQXRvbWljU3RyaW5nJiBGaWxlUmVhZGVyOjppbnRlcmZhY2VOYW1lKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gZXZlbnROYW1lcygpLmludGVyZmFjZUZvckZpbGVSZWFkZXI7
Cit9CisKIGJvb2wgRmlsZVJlYWRlcjo6aGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3QKIHsKICAg
ICByZXR1cm4gbV9zdGF0ZSA9PSBMT0FESU5HIHx8IEFjdGl2ZURPTU9iamVjdDo6aGFzUGVuZGlu
Z0FjdGl2aXR5KCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXIuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXIuaAkocmV2aXNp
b24gOTgzNjgpCisrKyBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXIuaAkod29ya2lu
ZyBjb3B5KQpAQCAtODUsNyArODUsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGhhc1Bl
bmRpbmdBY3Rpdml0eSgpIGNvbnN0OwogCiAgICAgLy8gRXZlbnRUYXJnZXQKLSAgICB2aXJ0dWFs
IEZpbGVSZWFkZXIqIHRvRmlsZVJlYWRlcigpIHsgcmV0dXJuIHRoaXM7IH0KKyAgICB2aXJ0dWFs
IGNvbnN0IEF0b21pY1N0cmluZyYgaW50ZXJmYWNlTmFtZSgpIGNvbnN0OwogICAgIHZpcnR1YWwg
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IHsg
cmV0dXJuIEFjdGl2ZURPTU9iamVjdDo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOyB9CiAKICAg
ICAvLyBGaWxlUmVhZGVyTG9hZGVyQ2xpZW50CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9maWxlYXBp
L0ZpbGVXcml0ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmls
ZVdyaXRlci5jcHAJKHJldmlzaW9uIDk4MzY4KQorKysgU291cmNlL1dlYkNvcmUvZmlsZWFwaS9G
aWxlV3JpdGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjUsNiArNjUsMTEgQEAgRmlsZVdyaXRl
cjo6fkZpbGVXcml0ZXIoKQogICAgICAgICBzdG9wKCk7CiB9CiAKK2NvbnN0IEF0b21pY1N0cmlu
ZyYgRmlsZVdyaXRlcjo6aW50ZXJmYWNlTmFtZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGV2ZW50
TmFtZXMoKS5pbnRlcmZhY2VGb3JGaWxlV3JpdGVyOworfQorCiBib29sIEZpbGVXcml0ZXI6Omhh
c1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fcmVhZHlTdGF0ZSA9PSBX
UklUSU5HIHx8IEFjdGl2ZURPTU9iamVjdDo6aGFzUGVuZGluZ0FjdGl2aXR5KCk7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVXcml0ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9maWxlYXBpL0ZpbGVXcml0ZXIuaAkocmV2aXNpb24gOTgzNjgpCisrKyBTb3VyY2Uv
V2ViQ29yZS9maWxlYXBpL0ZpbGVXcml0ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNzYsNyArNzYs
NyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHN0b3AoKTsKIAogICAgIC8vIEV2ZW50VGFy
Z2V0Ci0gICAgdmlydHVhbCBGaWxlV3JpdGVyKiB0b0ZpbGVXcml0ZXIoKSB7IHJldHVybiB0aGlz
OyB9CisgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIGludGVyZmFjZU5hbWUoKSBjb25z
dDsKICAgICB2aXJ0dWFsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKSBjb25zdCB7IHJldHVybiBBY3RpdmVET01PYmplY3Q6OnNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKTsgfQogCiAgICAgdXNpbmcgUmVmQ291bnRlZDxGaWxlV3JpdGVyQmFzZT46OnJlZjsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9ET01BcHBsaWNhdGlvbkNhY2hl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvRE9NQXBw
bGljYXRpb25DYWNoZS5jcHAJKHJldmlzaW9uIDk4MzY4KQorKysgU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2FwcGNhY2hlL0RPTUFwcGxpY2F0aW9uQ2FjaGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04
NCw2ICs4NCwxMSBAQCB2b2lkIERPTUFwcGxpY2F0aW9uQ2FjaGU6OnN3YXBDYWNoZShFeGNlCiAg
ICAgICAgIGVjID0gSU5WQUxJRF9TVEFURV9FUlI7CiB9CiAKK2NvbnN0IEF0b21pY1N0cmluZyYg
RE9NQXBwbGljYXRpb25DYWNoZTo6aW50ZXJmYWNlTmFtZSgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IGV2ZW50TmFtZXMoKS5pbnRlcmZhY2VGb3JET01BcHBsaWNhdGlvbkNhY2hlOworfQorCiBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBET01BcHBsaWNhdGlvbkNhY2hlOjpzY3JpcHRFeGVjdXRpb25D
b250ZXh0KCkgY29uc3QKIHsKICAgICBpZiAobV9mcmFtZSkKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2xvYWRlci9hcHBjYWNoZS9ET01BcHBsaWNhdGlvbkNhY2hlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0RPTUFwcGxpY2F0aW9uQ2FjaGUuaAkocmV2aXNp
b24gOTgzNjgpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvRE9NQXBwbGljYXRp
b25DYWNoZS5oCSh3b3JraW5nIGNvcHkpCkBAIC02OSw4ICs2OSw4IEBAIHB1YmxpYzoKICAgICBE
RUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKGNhY2hlZCk7CiAgICAgREVGSU5FX0FUVFJJ
QlVURV9FVkVOVF9MSVNURU5FUihvYnNvbGV0ZSk7CiAKKyAgICB2aXJ0dWFsIGNvbnN0IEF0b21p
Y1N0cmluZyYgaW50ZXJmYWNlTmFtZSgpIGNvbnN0OwogICAgIHZpcnR1YWwgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0OwotICAgIERPTUFwcGxp
Y2F0aW9uQ2FjaGUqIHRvRE9NQXBwbGljYXRpb25DYWNoZSgpIHsgcmV0dXJuIHRoaXM7IH0KIAog
ICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIHRvRXZlbnRUeXBlKEFwcGxpY2F0aW9uQ2Fj
aGVIb3N0OjpFdmVudElEIGlkKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvbWVkaWFzdHJlYW0v
TG9jYWxNZWRpYVN0cmVhbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbWVkaWFz
dHJlYW0vTG9jYWxNZWRpYVN0cmVhbS5jcHAJKHJldmlzaW9uIDk4MzY4KQorKysgU291cmNlL1dl
YkNvcmUvbWVkaWFzdHJlYW0vTG9jYWxNZWRpYVN0cmVhbS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTY1LDkgKzY1LDkgQEAgTG9jYWxNZWRpYVN0cmVhbTo6fkxvY2FsTWVkaWFTdHJlYW0oKQogewog
fQogCi1Mb2NhbE1lZGlhU3RyZWFtKiBMb2NhbE1lZGlhU3RyZWFtOjp0b0xvY2FsTWVkaWFTdHJl
YW0oKQorY29uc3QgQXRvbWljU3RyaW5nJiBMb2NhbE1lZGlhU3RyZWFtOjppbnRlcmZhY2VOYW1l
KCkgY29uc3QKIHsKLSAgICByZXR1cm4gdGhpczsKKyAgICByZXR1cm4gZXZlbnROYW1lcygpLmlu
dGVyZmFjZUZvckxvY2FsTWVkaWFTdHJlYW07CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL21lZGlhc3RyZWFtL0xvY2FsTWVkaWFTdHJlYW0uaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9tZWRpYXN0cmVhbS9Mb2NhbE1lZGlhU3RyZWFtLmgJ
KHJldmlzaW9uIDk4MzY4KQorKysgU291cmNlL1dlYkNvcmUvbWVkaWFzdHJlYW0vTG9jYWxNZWRp
YVN0cmVhbS5oCSh3b3JraW5nIGNvcHkpCkBAIC00MCw4ICs0MCw4IEBAIHB1YmxpYzoKIAogICAg
IHZvaWQgc3RvcCgpOwogCi0gICAgLy8gRXZlbnRUYXJnZXQuCi0gICAgdmlydHVhbCBMb2NhbE1l
ZGlhU3RyZWFtKiB0b0xvY2FsTWVkaWFTdHJlYW0oKTsKKyAgICAvLyBFdmVudFRhcmdldAorICAg
IHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBpbnRlcmZhY2VOYW1lKCkgY29uc3Q7CiAKIHBy
aXZhdGU6CiAgICAgTG9jYWxNZWRpYVN0cmVhbShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29u
c3QgTWVkaWFTdHJlYW1Tb3VyY2VWZWN0b3ImKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL21lZGlh
c3RyZWFtL01lZGlhU3RyZWFtLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9tZWRp
YXN0cmVhbS9NZWRpYVN0cmVhbS5jcHAJKHJldmlzaW9uIDk4MzY4KQorKysgU291cmNlL1dlYkNv
cmUvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NCwxMSAr
NjQsNiBAQCBNZWRpYVN0cmVhbTo6UmVhZHlTdGF0ZSBNZWRpYVN0cmVhbTo6cmVhCiAgICAgcmV0
dXJuIG1fZGVzY3JpcHRvci0+ZW5kZWQoKSA/IEVOREVEIDogTElWRTsKIH0KIAotTWVkaWFTdHJl
YW0qIE1lZGlhU3RyZWFtOjp0b01lZGlhU3RyZWFtKCkKLXsKLSAgICByZXR1cm4gdGhpczsKLX0K
LQogdm9pZCBNZWRpYVN0cmVhbTo6c3RyZWFtRW5kZWQoKQogewogICAgIGlmIChyZWFkeVN0YXRl
KCkgPT0gRU5ERUQpCkBAIC03OSw2ICs3NCwxMSBAQCB2b2lkIE1lZGlhU3RyZWFtOjpzdHJlYW1F
bmRlZCgpCiAgICAgZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5lbmRl
ZEV2ZW50LCBmYWxzZSwgZmFsc2UpKTsKIH0KIAorY29uc3QgQXRvbWljU3RyaW5nJiBNZWRpYVN0
cmVhbTo6aW50ZXJmYWNlTmFtZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGV2ZW50TmFtZXMoKS5p
bnRlcmZhY2VGb3JNZWRpYVN0cmVhbTsKK30KKwogU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogTWVk
aWFTdHJlYW06OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdAogewogICAgIHJldHVybiBt
X3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuZ2V0KCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9tZWRp
YXN0cmVhbS9NZWRpYVN0cmVhbS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL21lZGlh
c3RyZWFtL01lZGlhU3RyZWFtLmgJKHJldmlzaW9uIDk4MzY4KQorKysgU291cmNlL1dlYkNvcmUv
bWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0uaAkod29ya2luZyBjb3B5KQpAQCAtNjAsOCArNjAsOCBA
QCBwdWJsaWM6CiAKICAgICBNZWRpYVN0cmVhbURlc2NyaXB0b3IqIGRlc2NyaXB0b3IoKSBjb25z
dCB7IHJldHVybiBtX2Rlc2NyaXB0b3IuZ2V0KCk7IH0KIAotICAgIC8vIEV2ZW50VGFyZ2V0IGlt
cGxlbWVudGF0aW9uLgotICAgIHZpcnR1YWwgTWVkaWFTdHJlYW0qIHRvTWVkaWFTdHJlYW0oKTsK
KyAgICAvLyBFdmVudFRhcmdldAorICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBpbnRl
cmZhY2VOYW1lKCkgY29uc3Q7CiAgICAgdmlydHVhbCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3Q7CiAKICAgICB1c2luZyBSZWZDb3VudGVkPE1l
ZGlhU3RyZWFtPjo6cmVmOwpJbmRleDogU291cmNlL1dlYkNvcmUvbWVkaWFzdHJlYW0vUGVlckNv
bm5lY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL21lZGlhc3RyZWFtL1Bl
ZXJDb25uZWN0aW9uLmNwcAkocmV2aXNpb24gOTgzNjgpCisrKyBTb3VyY2UvV2ViQ29yZS9tZWRp
YXN0cmVhbS9QZWVyQ29ubmVjdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIzNiw5ICsyMzYs
OSBAQCB2b2lkIFBlZXJDb25uZWN0aW9uOjpyZW1vdGVTdHJlYW1SZW1vdmVkCiAgICAgZGlzcGF0
Y2hFdmVudChNZWRpYVN0cmVhbUV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLnJlbW92ZXN0cmVh
bUV2ZW50LCBmYWxzZSwgZmFsc2UsIHN0cmVhbS5yZWxlYXNlKCkpKTsKIH0KIAotUGVlckNvbm5l
Y3Rpb24qIFBlZXJDb25uZWN0aW9uOjp0b1BlZXJDb25uZWN0aW9uKCkKK2NvbnN0IEF0b21pY1N0
cmluZyYgUGVlckNvbm5lY3Rpb246OmludGVyZmFjZU5hbWUoKSBjb25zdAogewotICAgIHJldHVy
biB0aGlzOworICAgIHJldHVybiBldmVudE5hbWVzKCkuaW50ZXJmYWNlRm9yUGVlckNvbm5lY3Rp
b247CiB9CiAKIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIFBlZXJDb25uZWN0aW9uOjpzY3JpcHRF
eGVjdXRpb25Db250ZXh0KCkgY29uc3QKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL21lZGlhc3RyZWFt
L1BlZXJDb25uZWN0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbWVkaWFzdHJl
YW0vUGVlckNvbm5lY3Rpb24uaAkocmV2aXNpb24gOTgzNjgpCisrKyBTb3VyY2UvV2ViQ29yZS9t
ZWRpYXN0cmVhbS9QZWVyQ29ubmVjdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC03OSw5ICs3OSw3
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3RlU3RyZWFtUmVtb3ZlZChNZWRpYVN0
cmVhbURlc2NyaXB0b3IqKTsKIAogICAgIC8vIEV2ZW50VGFyZ2V0Ci0gICAgdmlydHVhbCBQZWVy
Q29ubmVjdGlvbiogdG9QZWVyQ29ubmVjdGlvbigpOwotCi0gICAgLy8gRXZlbnRUYXJnZXQgaW1w
bGVtZW50YXRpb24uCisgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIGludGVyZmFjZU5h
bWUoKSBjb25zdDsKICAgICB2aXJ0dWFsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKSBjb25zdDsKIAogICAgIC8vIEFjdGl2ZURPTU9iamVjdApJbmRleDog
U291cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmNwcAkocmV2aXNp
b24gOTgzNjgpCisrKyBTb3VyY2UvV2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTEwNCw2ICsxMDQsMTEgQEAgUGFzc1JlZlB0cjxOb3RpZmlj
YXRpb24+IE5vdGlmaWNhdGlvbjo6YwogICAgIHJldHVybiBhZG9wdFJlZihuZXcgTm90aWZpY2F0
aW9uKGNvbnRlbnRzLCBjb250ZXh0LCBlYywgcHJvdmlkZXIpKTsKIH0KIAorY29uc3QgQXRvbWlj
U3RyaW5nJiBOb3RpZmljYXRpb246OmludGVyZmFjZU5hbWUoKSBjb25zdAoreworICAgIHJldHVy
biBldmVudE5hbWVzKCkuaW50ZXJmYWNlRm9yTm90aWZpY2F0aW9uOworfQorCiB2b2lkIE5vdGlm
aWNhdGlvbjo6c2hvdygpIAogewogI2lmIFBMQVRGT1JNKFFUKQpJbmRleDogU291cmNlL1dlYkNv
cmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5oCShyZXZpc2lvbiA5ODM2OCkKKysrIFNv
dXJjZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmgJKHdvcmtpbmcgY29weSkK
QEAgLTgzLDEzICs4MywxMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIERFRklORV9B
VFRSSUJVVEVfRVZFTlRfTElTVEVORVIoZXJyb3IpOwogICAgICAgICBERUZJTkVfQVRUUklCVVRF
X0VWRU5UX0xJU1RFTkVSKGNsb3NlKTsKICAgICAgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9M
SVNURU5FUihjbGljayk7Ci0gICAgCisKICAgICAgICAgdXNpbmcgUmVmQ291bnRlZDxOb3RpZmlj
YXRpb24+OjpyZWY7CiAgICAgICAgIHVzaW5nIFJlZkNvdW50ZWQ8Tm90aWZpY2F0aW9uPjo6ZGVy
ZWY7Ci0gICAgCisKICAgICAgICAgLy8gRXZlbnRUYXJnZXQgaW50ZXJmYWNlCisgICAgICAgIHZp
cnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBpbnRlcmZhY2VOYW1lKCkgY29uc3Q7CiAgICAgICAg
IHZpcnR1YWwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
IGNvbnN0IHsgcmV0dXJuIEFjdGl2ZURPTU9iamVjdDo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
OyB9Ci0gICAgICAgIHZpcnR1YWwgTm90aWZpY2F0aW9uKiB0b05vdGlmaWNhdGlvbigpIHsgcmV0
dXJuIHRoaXM7IH0KIAogICAgICAgICAvLyBBY3RpdmVET01PYmplY3QgaW50ZXJmYWNlCiAgICAg
ICAgIHZpcnR1YWwgdm9pZCBjb250ZXh0RGVzdHJveWVkKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wYWdlL0RPTVdpbmRvdy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9E
T01XaW5kb3cuY3BwCShyZXZpc2lvbiA5ODM2OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9N
V2luZG93LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDQ2LDExICs0NDYsMjEgQEAgRE9NV2luZG93
Ojp+RE9NV2luZG93KCkKICAgICByZW1vdmVBbGxCZWZvcmVVbmxvYWRFdmVudExpc3RlbmVycyh0
aGlzKTsKIH0KIAorY29uc3QgQXRvbWljU3RyaW5nJiBET01XaW5kb3c6OmludGVyZmFjZU5hbWUo
KSBjb25zdAoreworICAgIHJldHVybiBldmVudE5hbWVzKCkuaW50ZXJmYWNlRm9yRE9NV2luZG93
OworfQorCiBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBET01XaW5kb3c6OnNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKSBjb25zdAogewogICAgIHJldHVybiBkb2N1bWVudCgpOwogfQogCitET01XaW5k
b3cqIERPTVdpbmRvdzo6dG9ET01XaW5kb3coKQoreworICAgIHJldHVybiB0aGlzOworfQorCiBQ
YXNzUmVmUHRyPE1lZGlhUXVlcnlMaXN0PiBET01XaW5kb3c6Om1hdGNoTWVkaWEoY29uc3QgU3Ry
aW5nJiBtZWRpYSkKIHsKICAgICByZXR1cm4gZG9jdW1lbnQoKSA/IGRvY3VtZW50KCktPm1lZGlh
UXVlcnlNYXRjaGVyKCktPm1hdGNoTWVkaWEobWVkaWEpIDogMDsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BhZ2UvRE9NV2luZG93LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9E
T01XaW5kb3cuaAkocmV2aXNpb24gOTgzNjgpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdp
bmRvdy5oCSh3b3JraW5nIGNvcHkpCkBAIC04NSw5ICs4NSwxMSBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPERPTVdpbmRvdz4gY3JlYXRlKEZyYW1lKiBm
cmFtZSkgeyByZXR1cm4gYWRvcHRSZWYobmV3IERPTVdpbmRvdyhmcmFtZSkpOyB9CiAgICAgICAg
IHZpcnR1YWwgfkRPTVdpbmRvdygpOwogCi0gICAgICAgIHZpcnR1YWwgRE9NV2luZG93KiB0b0RP
TVdpbmRvdygpIHsgcmV0dXJuIHRoaXM7IH0KKyAgICAgICAgdmlydHVhbCBjb25zdCBBdG9taWNT
dHJpbmcmIGludGVyZmFjZU5hbWUoKSBjb25zdDsKICAgICAgICAgdmlydHVhbCBTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3Q7CiAKKyAgICAgICAg
dmlydHVhbCBET01XaW5kb3cqIHRvRE9NV2luZG93KCk7CisKICAgICAgICAgRnJhbWUqIGZyYW1l
KCkgY29uc3QgeyByZXR1cm4gbV9mcmFtZTsgfQogICAgICAgICB2b2lkIGRpc2Nvbm5lY3RGcmFt
ZSgpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50U291cmNlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50U291cmNlLmNwcAkocmV2aXNpb24gOTgz
NjgpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50U291cmNlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTg2LDYgKzE4NiwxMSBAQCB2b2lkIEV2ZW50U291cmNlOjpjbG9zZSgpCiAgICAgbV9z
dGF0ZSA9IENMT1NFRDsKIH0KIAorY29uc3QgQXRvbWljU3RyaW5nJiBFdmVudFNvdXJjZTo6aW50
ZXJmYWNlTmFtZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGV2ZW50TmFtZXMoKS5pbnRlcmZhY2VG
b3JFdmVudFNvdXJjZTsKK30KKwogU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogRXZlbnRTb3VyY2U6
OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdAogewogICAgIHJldHVybiBBY3RpdmVET01P
YmplY3Q6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bh
Z2UvRXZlbnRTb3VyY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50
U291cmNlLmgJKHJldmlzaW9uIDk4MzY4KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudFNv
dXJjZS5oCSh3b3JraW5nIGNvcHkpCkBAIC03NSw3ICs3NSw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKICAgICAgICAgdXNpbmcgUmVmQ291bnRlZDxFdmVudFNvdXJjZT46OnJlZjsKICAgICAgICAg
dXNpbmcgUmVmQ291bnRlZDxFdmVudFNvdXJjZT46OmRlcmVmOwogCi0gICAgICAgIHZpcnR1YWwg
RXZlbnRTb3VyY2UqIHRvRXZlbnRTb3VyY2UoKSB7IHJldHVybiB0aGlzOyB9CisgICAgICAgIHZp
cnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBpbnRlcmZhY2VOYW1lKCkgY29uc3Q7CiAgICAgICAg
IHZpcnR1YWwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
IGNvbnN0OwogCiAgICAgICAgIHZpcnR1YWwgdm9pZCBzdG9wKCk7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9zdG9yYWdlL0lEQkRhdGFiYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9zdG9yYWdlL0lEQkRhdGFiYXNlLmNwcAkocmV2aXNpb24gOTgzNjgpCisrKyBTb3VyY2UvV2Vi
Q29yZS9zdG9yYWdlL0lEQkRhdGFiYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjE4LDYgKzIx
OCwxMSBAQCB2b2lkIElEQkRhdGFiYXNlOjpzdG9wKCkKICAgICBtX3N0b3BwZWQgPSB0cnVlOwog
fQogCitjb25zdCBBdG9taWNTdHJpbmcmIElEQkRhdGFiYXNlOjppbnRlcmZhY2VOYW1lKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gZXZlbnROYW1lcygpLmludGVyZmFjZUZvcklEQkRhdGFiYXNlOwor
fQorCiBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBJREJEYXRhYmFzZTo6c2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIEFjdGl2ZURPTU9iamVjdDo6c2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJEYXRhYmFz
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJhc2UuaAko
cmV2aXNpb24gOTgzNjgpCisrKyBTb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFiYXNlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTgyLDEwICs4Miw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZv
aWQgc3RvcCgpOwogCiAgICAgLy8gRXZlbnRUYXJnZXQKLSAgICB2aXJ0dWFsIElEQkRhdGFiYXNl
KiB0b0lEQkRhdGFiYXNlKCkgeyByZXR1cm4gdGhpczsgfQorICAgIHZpcnR1YWwgY29uc3QgQXRv
bWljU3RyaW5nJiBpbnRlcmZhY2VOYW1lKCkgY29uc3Q7CiAgICAgdmlydHVhbCBTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3Q7CiAKLQogICAgIHZv
aWQgb3BlbigpOwogICAgIHZvaWQgZW5xdWV1ZUV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+KTsKICAg
ICBib29sIGRpc3BhdGNoRXZlbnQoUGFzc1JlZlB0cjxFdmVudD4gZXZlbnQsIEV4Y2VwdGlvbkNv
ZGUmIGVjKSB7IHJldHVybiBFdmVudFRhcmdldDo6ZGlzcGF0Y2hFdmVudChldmVudCwgZWMpOyB9
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQlJlcXVlc3QuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCUmVxdWVzdC5jcHAJKHJldmlzaW9uIDk4MzY4
KQorKysgU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJSZXF1ZXN0LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjYxLDYgKzI2MSwxMSBAQCB2b2lkIElEQlJlcXVlc3Q6Om9uQmxvY2tlZCgpCiAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKK2NvbnN0IEF0b21pY1N0cmluZyYgSURCUmVxdWVz
dDo6aW50ZXJmYWNlTmFtZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGV2ZW50TmFtZXMoKS5pbnRl
cmZhY2VGb3JJREJSZXF1ZXN0OworfQorCiBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBJREJSZXF1
ZXN0OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QKIHsKICAgICByZXR1cm4gQWN0aXZl
RE9NT2JqZWN0OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9zdG9yYWdlL0lEQlJlcXVlc3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdG9y
YWdlL0lEQlJlcXVlc3QuaAkocmV2aXNpb24gOTgzNjgpCisrKyBTb3VyY2UvV2ViQ29yZS9zdG9y
YWdlL0lEQlJlcXVlc3QuaAkod29ya2luZyBjb3B5KQpAQCAtODcsNyArODcsNyBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCBib29sIGhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0OwogCiAgICAgLy8g
RXZlbnRUYXJnZXQKLSAgICB2aXJ0dWFsIElEQlJlcXVlc3QqIHRvSURCUmVxdWVzdCgpIHsgcmV0
dXJuIHRoaXM7IH0KKyAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgaW50ZXJmYWNlTmFt
ZSgpIGNvbnN0OwogICAgIHZpcnR1YWwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBkaXNwYXRjaEV2ZW50KFBh
c3NSZWZQdHI8RXZlbnQ+KTsKICAgICBib29sIGRpc3BhdGNoRXZlbnQoUGFzc1JlZlB0cjxFdmVu
dD4gZXZlbnQsIEV4Y2VwdGlvbkNvZGUmIGVjKSB7IHJldHVybiBFdmVudFRhcmdldDo6ZGlzcGF0
Y2hFdmVudChldmVudCwgZWMpOyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQlRy
YW5zYWN0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQlRy
YW5zYWN0aW9uLmNwcAkocmV2aXNpb24gOTgzNjgpCisrKyBTb3VyY2UvV2ViQ29yZS9zdG9yYWdl
L0lEQlRyYW5zYWN0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM4LDYgKzEzOCwxMSBAQCBi
b29sIElEQlRyYW5zYWN0aW9uOjpoYXNQZW5kaW5nQWN0aXZpdHkoCiAgICAgcmV0dXJuICFtX2Zp
bmlzaGVkIHx8IEFjdGl2ZURPTU9iamVjdDo6aGFzUGVuZGluZ0FjdGl2aXR5KCk7CiB9CiAKK2Nv
bnN0IEF0b21pY1N0cmluZyYgSURCVHJhbnNhY3Rpb246OmludGVyZmFjZU5hbWUoKSBjb25zdAor
eworICAgIHJldHVybiBldmVudE5hbWVzKCkuaW50ZXJmYWNlRm9ySURCVHJhbnNhY3Rpb247Cit9
CisKIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIElEQlRyYW5zYWN0aW9uOjpzY3JpcHRFeGVjdXRp
b25Db250ZXh0KCkgY29uc3QKIHsKICAgICByZXR1cm4gQWN0aXZlRE9NT2JqZWN0OjpzY3JpcHRF
eGVjdXRpb25Db250ZXh0KCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQlRyYW5z
YWN0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJUcmFuc2Fj
dGlvbi5oCShyZXZpc2lvbiA5ODM2OCkKKysrIFNvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCVHJh
bnNhY3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtNzQsNyArNzQsNyBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCB2b2lkIG9uQ29tcGxldGUoKTsKIAogICAgIC8vIEV2ZW50VGFyZ2V0Ci0gICAgdmly
dHVhbCBJREJUcmFuc2FjdGlvbiogdG9JREJUcmFuc2FjdGlvbigpIHsgcmV0dXJuIHRoaXM7IH0K
KyAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgaW50ZXJmYWNlTmFtZSgpIGNvbnN0Owog
ICAgIHZpcnR1YWwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBkaXNwYXRjaEV2ZW50KFBhc3NSZWZQdHI8RXZl
bnQ+KTsKICAgICBib29sIGRpc3BhdGNoRXZlbnQoUGFzc1JlZlB0cjxFdmVudD4gZXZlbnQsIEV4
Y2VwdGlvbkNvZGUmIGVjKSB7IHJldHVybiBFdmVudFRhcmdldDo6ZGlzcGF0Y2hFdmVudChldmVu
dCwgZWMpOyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQlZlcnNpb25DaGFuZ2VS
ZXF1ZXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQlZlcnNp
b25DaGFuZ2VSZXF1ZXN0LmNwcAkocmV2aXNpb24gOTgzNjgpCisrKyBTb3VyY2UvV2ViQ29yZS9z
dG9yYWdlL0lEQlZlcnNpb25DaGFuZ2VSZXF1ZXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDgs
NiArNDgsMTEgQEAgSURCVmVyc2lvbkNoYW5nZVJlcXVlc3Q6On5JREJWZXJzaW9uQ2hhbgogewog
fQogCitjb25zdCBBdG9taWNTdHJpbmcmIElEQlZlcnNpb25DaGFuZ2VSZXF1ZXN0OjppbnRlcmZh
Y2VOYW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZXZlbnROYW1lcygpLmludGVyZmFjZUZvcklE
QlZlcnNpb25DaGFuZ2VSZXF1ZXN0OworfQorCiB2b2lkIElEQlZlcnNpb25DaGFuZ2VSZXF1ZXN0
OjpvbkJsb2NrZWQoKQogewogICAgIEFTU0VSVCghbV9lcnJvckNvZGUgJiYgbV9lcnJvck1lc3Nh
Z2UuaXNOdWxsKCkgJiYgIW1fcmVzdWx0KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N0b3JhZ2Uv
SURCVmVyc2lvbkNoYW5nZVJlcXVlc3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9z
dG9yYWdlL0lEQlZlcnNpb25DaGFuZ2VSZXF1ZXN0LmgJKHJldmlzaW9uIDk4MzY4KQorKysgU291
cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJWZXJzaW9uQ2hhbmdlUmVxdWVzdC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zOSw2ICszOSw5IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBvbkJsb2Nr
ZWQoKTsKIAorICAgIC8vIEV2ZW50VGFyZ2V0CisgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJp
bmcmIGludGVyZmFjZU5hbWUoKSBjb25zdDsKKwogICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRf
TElTVEVORVIoYmxvY2tlZCk7CiAKIHByaXZhdGU6CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRWxlbWVudEluc3RhbmNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRWxlbWVudEluc3RhbmNlLmNwcAkocmV2aXNpb24gOTgzNjgpCisrKyBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRWxlbWVudEluc3RhbmNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTIxLDYgKzEy
MSwxMSBAQCB2b2lkIFNWR0VsZW1lbnRJbnN0YW5jZTo6aW52YWxpZGF0ZUFsbEluCiAgICAgZWxl
bWVudC0+ZG9jdW1lbnQoKS0+dXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzKCk7
CiB9CiAKK2NvbnN0IEF0b21pY1N0cmluZyYgU1ZHRWxlbWVudEluc3RhbmNlOjppbnRlcmZhY2VO
YW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZXZlbnROYW1lcygpLmludGVyZmFjZUZvclNWR0Vs
ZW1lbnRJbnN0YW5jZTsKK30KKwogU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogU1ZHRWxlbWVudElu
c3RhbmNlOjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9l
bGVtZW50LT5kb2N1bWVudCgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnRJ
bnN0YW5jZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50SW5z
dGFuY2UuaAkocmV2aXNpb24gOTgzNjgpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVu
dEluc3RhbmNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDYgKzQ3LDcgQEAgcHVibGljOgogCiAg
ICAgdmlydHVhbCB+U1ZHRWxlbWVudEluc3RhbmNlKCk7CiAKKyAgICB2aXJ0dWFsIGNvbnN0IEF0
b21pY1N0cmluZyYgaW50ZXJmYWNlTmFtZSgpIGNvbnN0OwogICAgIHZpcnR1YWwgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0OwogCiAgICAgdmly
dHVhbCBib29sIGFkZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUs
IFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4sIGJvb2wgdXNlQ2FwdHVyZSk7CkBAIC0xMzksNyAr
MTQwLDYgQEAgcHJpdmF0ZToKICAgICBTVkdFbGVtZW50SW5zdGFuY2UoU1ZHVXNlRWxlbWVudCos
IFNWR1VzZUVsZW1lbnQqLCBQYXNzUmVmUHRyPFNWR0VsZW1lbnQ+IG9yaWdpbmFsRWxlbWVudCk7
CiAKICAgICB2aXJ0dWFsIE5vZGUqIHRvTm9kZSgpIHsgcmV0dXJuIHNoYWRvd1RyZWVFbGVtZW50
KCk7IH0KLSAgICB2aXJ0dWFsIFNWR0VsZW1lbnRJbnN0YW5jZSogdG9TVkdFbGVtZW50SW5zdGFu
Y2UoKSB7IHJldHVybiB0aGlzOyB9CiAKICAgICB2b2lkIGFwcGVuZENoaWxkKFBhc3NSZWZQdHI8
U1ZHRWxlbWVudEluc3RhbmNlPiBjaGlsZCk7CiAgICAgdm9pZCBzZXRTaGFkb3dUcmVlRWxlbWVu
dChTVkdFbGVtZW50Kik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9BdWRpb0NvbnRl
eHQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0F1ZGlvQ29udGV4
dC5jcHAJKHJldmlzaW9uIDk4MzY4KQorKysgU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vQXVkaW9D
b250ZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzMxLDE0ICs3MzEsMTQgQEAgdm9pZCBBdWRp
b0NvbnRleHQ6OmhhbmRsZURpcnR5QXVkaW9Ob2RlTwogICAgIG1fZGlydHlBdWRpb05vZGVPdXRw
dXRzLmNsZWFyKCk7CiB9CiAKLVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIEF1ZGlvQ29udGV4dDo6
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0Citjb25zdCBBdG9taWNTdHJpbmcmIEF1ZGlv
Q29udGV4dDo6aW50ZXJmYWNlTmFtZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGRvY3VtZW50KCk7
CisgICAgcmV0dXJuIGV2ZW50TmFtZXMoKS5pbnRlcmZhY2VGb3JBdWRpb0NvbnRleHQ7CiB9CiAK
LUF1ZGlvQ29udGV4dCogQXVkaW9Db250ZXh0Ojp0b0F1ZGlvQ29udGV4dCgpCitTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBBdWRpb0NvbnRleHQ6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25z
dAogewotICAgIHJldHVybiB0aGlzOworICAgIHJldHVybiBkb2N1bWVudCgpOwogfQogCiB2b2lk
IEF1ZGlvQ29udGV4dDo6c3RhcnRSZW5kZXJpbmcoKQpJbmRleDogU291cmNlL1dlYkNvcmUvd2Vi
YXVkaW8vQXVkaW9Db250ZXh0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvd2ViYXVk
aW8vQXVkaW9Db250ZXh0LmgJKHJldmlzaW9uIDk4MzY4KQorKysgU291cmNlL1dlYkNvcmUvd2Vi
YXVkaW8vQXVkaW9Db250ZXh0LmgJKHdvcmtpbmcgY29weSkKQEAgLTIwOCw4ICsyMDgsOCBAQCBw
dWJsaWM6CiAgICAgdm9pZCBtYXJrQXVkaW9Ob2RlT3V0cHV0RGlydHkoQXVkaW9Ob2RlT3V0cHV0
Kik7CiAKICAgICAvLyBFdmVudFRhcmdldAorICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5n
JiBpbnRlcmZhY2VOYW1lKCkgY29uc3Q7CiAgICAgdmlydHVhbCBTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3Q7Ci0gICAgdmlydHVhbCBBdWRpb0Nv
bnRleHQqIHRvQXVkaW9Db250ZXh0KCk7CiAgICAgdmlydHVhbCBFdmVudFRhcmdldERhdGEqIGV2
ZW50VGFyZ2V0RGF0YSgpIHsgcmV0dXJuICZtX2V2ZW50VGFyZ2V0RGF0YTsgfQogICAgIHZpcnR1
YWwgRXZlbnRUYXJnZXREYXRhKiBlbnN1cmVFdmVudFRhcmdldERhdGEoKSB7IHJldHVybiAmbV9l
dmVudFRhcmdldERhdGE7IH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vSmF2YVNj
cmlwdEF1ZGlvTm9kZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvd2ViYXVkaW8v
SmF2YVNjcmlwdEF1ZGlvTm9kZS5jcHAJKHJldmlzaW9uIDk4MzY4KQorKysgU291cmNlL1dlYkNv
cmUvd2ViYXVkaW8vSmF2YVNjcmlwdEF1ZGlvTm9kZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEx
OSwxMSArMTE5LDYgQEAgdm9pZCBKYXZhU2NyaXB0QXVkaW9Ob2RlOjp1bmluaXRpYWxpemUoKQog
ICAgIEF1ZGlvTm9kZTo6dW5pbml0aWFsaXplKCk7CiB9CiAKLUphdmFTY3JpcHRBdWRpb05vZGUq
IEphdmFTY3JpcHRBdWRpb05vZGU6OnRvSmF2YVNjcmlwdEF1ZGlvTm9kZSgpCi17Ci0gICAgcmV0
dXJuIHRoaXM7Ci19Ci0KIHZvaWQgSmF2YVNjcmlwdEF1ZGlvTm9kZTo6cHJvY2VzcyhzaXplX3Qg
ZnJhbWVzVG9Qcm9jZXNzKQogewogICAgIC8vIERpc2N1c3Npb24gYWJvdXQgaW5wdXRzIGFuZCBv
dXRwdXRzOgpAQCAtMjYyLDYgKzI1NywxMSBAQCB2b2lkIEphdmFTY3JpcHRBdWRpb05vZGU6OnJl
c2V0KCkKICAgICB9CiB9CiAKK2NvbnN0IEF0b21pY1N0cmluZyYgSmF2YVNjcmlwdEF1ZGlvTm9k
ZTo6aW50ZXJmYWNlTmFtZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGV2ZW50TmFtZXMoKS5pbnRl
cmZhY2VGb3JKYXZhU2NyaXB0QXVkaW9Ob2RlOworfQorCiBTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBKYXZhU2NyaXB0QXVkaW9Ob2RlOjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QKIHsK
ICAgICByZXR1cm4gY29uc3RfY2FzdDxKYXZhU2NyaXB0QXVkaW9Ob2RlKj4odGhpcyktPmNvbnRl
eHQoKS0+ZG9jdW1lbnQoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0phdmFTY3Jp
cHRBdWRpb05vZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9KYXZh
U2NyaXB0QXVkaW9Ob2RlLmgJKHJldmlzaW9uIDk4MzY4KQorKysgU291cmNlL1dlYkNvcmUvd2Vi
YXVkaW8vSmF2YVNjcmlwdEF1ZGlvTm9kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC02Myw4ICs2Myw4
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgdW5pbml0aWFsaXplKCk7CiAKICAgICAvLyBF
dmVudFRhcmdldAorICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBpbnRlcmZhY2VOYW1l
KCkgY29uc3Q7CiAgICAgdmlydHVhbCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVj
dXRpb25Db250ZXh0KCkgY29uc3Q7Ci0gICAgdmlydHVhbCBKYXZhU2NyaXB0QXVkaW9Ob2RlKiB0
b0phdmFTY3JpcHRBdWRpb05vZGUoKTsKICAgICB2aXJ0dWFsIEV2ZW50VGFyZ2V0RGF0YSogZXZl
bnRUYXJnZXREYXRhKCkgeyByZXR1cm4gJm1fZXZlbnRUYXJnZXREYXRhOyB9CiAgICAgdmlydHVh
bCBFdmVudFRhcmdldERhdGEqIGVuc3VyZUV2ZW50VGFyZ2V0RGF0YSgpICB7IHJldHVybiAmbV9l
dmVudFRhcmdldERhdGE7IH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJT
b2NrZXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29j
a2V0LmNwcAkocmV2aXNpb24gOTgzNjgpCisrKyBTb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dl
YlNvY2tldC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQwNyw2ICs0MDcsMTEgQEAgdm9pZCBXZWJT
b2NrZXQ6OnNldEJpbmFyeVR5cGUoY29uc3QgU3RyaQogICAgIHJldHVybjsKIH0KIAorY29uc3Qg
QXRvbWljU3RyaW5nJiBXZWJTb2NrZXQ6OmludGVyZmFjZU5hbWUoKSBjb25zdAoreworICAgIHJl
dHVybiBldmVudE5hbWVzKCkuaW50ZXJmYWNlRm9yV2ViU29ja2V0OworfQorCiBTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBXZWJTb2NrZXQ6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdAog
ewogICAgIHJldHVybiBBY3RpdmVET01PYmplY3Q6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXQuaAkocmV2aXNpb24gOTgzNjgp
CisrKyBTb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldC5oCSh3b3JraW5nIGNvcHkp
CkBAIC05MCw5ICs5MCw5IEBAIHB1YmxpYzoKICAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJ
U1RFTkVSKGNsb3NlKTsKIAogICAgIC8vIEV2ZW50VGFyZ2V0Ci0gICAgdmlydHVhbCBXZWJTb2Nr
ZXQqIHRvV2ViU29ja2V0KCkgeyByZXR1cm4gdGhpczsgfQotCisgICAgdmlydHVhbCBjb25zdCBB
dG9taWNTdHJpbmcmIGludGVyZmFjZU5hbWUoKSBjb25zdDsKICAgICB2aXJ0dWFsIFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdDsKKwogICAgIHZp
cnR1YWwgdm9pZCBjb250ZXh0RGVzdHJveWVkKCk7CiAgICAgdmlydHVhbCBib29sIGNhblN1c3Bl
bmQoKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgc3VzcGVuZChSZWFzb25Gb3JTdXNwZW5zaW9u
KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvRGVkaWNhdGVkV29ya2VyQ29udGV4dC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJD
b250ZXh0LmNwcAkocmV2aXNpb24gOTgzNjgpCisrKyBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL0Rl
ZGljYXRlZFdvcmtlckNvbnRleHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Niw2ICs0NiwxMSBA
QCBEZWRpY2F0ZWRXb3JrZXJDb250ZXh0OjpEZWRpY2F0ZWRXb3JrZXJDCiB7CiB9CiAKK2NvbnN0
IEF0b21pY1N0cmluZyYgRGVkaWNhdGVkV29ya2VyQ29udGV4dDo6aW50ZXJmYWNlTmFtZSgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIGV2ZW50TmFtZXMoKS5pbnRlcmZhY2VGb3JEZWRpY2F0ZWRXb3Jr
ZXJDb250ZXh0OworfQorCiAvLyBGSVhNRTogcmVtb3ZlIHRoaXMgd2hlbiB3ZSB1cGRhdGUgdGhl
IE9iakMgYmluZGluZ3MgKGJ1ZyAjMjg3NzQpLgogdm9pZCBEZWRpY2F0ZWRXb3JrZXJDb250ZXh0
Ojpwb3N0TWVzc2FnZShQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbWVzc2FnZSwg
TWVzc2FnZVBvcnQqIHBvcnQsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewpJbmRleDogU291cmNlL1dl
YkNvcmUvd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJDb250ZXh0LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJDb250ZXh0LmgJKHJldmlzaW9uIDk4
MzY4KQorKysgU291cmNlL1dlYkNvcmUvd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJDb250ZXh0LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTU0LDcgKzU0LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
ICAgICB2aXJ0dWFsIHZvaWQgaW1wb3J0U2NyaXB0cyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgdXJs
cywgRXhjZXB0aW9uQ29kZSYpOwogCiAgICAgICAgIC8vIEV2ZW50VGFyZ2V0Ci0gICAgICAgIHZp
cnR1YWwgRGVkaWNhdGVkV29ya2VyQ29udGV4dCogdG9EZWRpY2F0ZWRXb3JrZXJDb250ZXh0KCkg
eyByZXR1cm4gdGhpczsgfQorICAgICAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgaW50
ZXJmYWNlTmFtZSgpIGNvbnN0OworCiAgICAgICAgIHZvaWQgcG9zdE1lc3NhZ2UoUGFzc1JlZlB0
cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+LCBFeGNlcHRpb25Db2RlJik7CiAgICAgICAgIHZvaWQg
cG9zdE1lc3NhZ2UoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+LCBjb25zdCBNZXNz
YWdlUG9ydEFycmF5KiwgRXhjZXB0aW9uQ29kZSYpOwogICAgICAgICAvLyBGSVhNRTogcmVtb3Zl
IHRoaXMgd2hlbiB3ZSB1cGRhdGUgdGhlIE9iakMgYmluZGluZ3MgKGJ1ZyAjMjg3NzQpLgpJbmRl
eDogU291cmNlL1dlYkNvcmUvd29ya2Vycy9EZWZhdWx0U2hhcmVkV29ya2VyUmVwb3NpdG9yeS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvd29ya2Vycy9EZWZhdWx0U2hhcmVkV29y
a2VyUmVwb3NpdG9yeS5jcHAJKHJldmlzaW9uIDk4MzY4KQorKysgU291cmNlL1dlYkNvcmUvd29y
a2Vycy9EZWZhdWx0U2hhcmVkV29ya2VyUmVwb3NpdG9yeS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTI1OSw3ICsyNTksNyBAQCBwcml2YXRlOgogICAgICAgICAvLyBTaW5jZSBjbG9zZSgpIHN0b3Bz
IHRoZSB0aHJlYWQgZXZlbnQgbG9vcCwgdGhpcyBzaG91bGQgbm90IGV2ZXIgZ2V0IGNhbGxlZCB3
aGlsZSBjbG9zaW5nLgogICAgICAgICBBU1NFUlQoIXdvcmtlckNvbnRleHQtPmlzQ2xvc2luZygp
KTsKICAgICAgICAgQVNTRVJUKHdvcmtlckNvbnRleHQtPmlzU2hhcmVkV29ya2VyQ29udGV4dCgp
KTsKLSAgICAgICAgd29ya2VyQ29udGV4dC0+dG9TaGFyZWRXb3JrZXJDb250ZXh0KCktPmRpc3Bh
dGNoRXZlbnQoY3JlYXRlQ29ubmVjdEV2ZW50KHBvcnQpKTsKKyAgICAgICAgd29ya2VyQ29udGV4
dC0+ZGlzcGF0Y2hFdmVudChjcmVhdGVDb25uZWN0RXZlbnQocG9ydCkpOwogICAgIH0KIAogICAg
IE93blB0cjxNZXNzYWdlUG9ydENoYW5uZWw+IG1fY2hhbm5lbDsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvU2hhcmVkV29ya2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL1NoYXJlZFdvcmtlci5jcHAJKHJldmlzaW9uIDk4MzY4KQorKysgU291cmNlL1dl
YkNvcmUvd29ya2Vycy9TaGFyZWRXb3JrZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03Myw2ICs3
MywxMSBAQCBTaGFyZWRXb3JrZXI6On5TaGFyZWRXb3JrZXIoKQogewogfQogCitjb25zdCBBdG9t
aWNTdHJpbmcmIFNoYXJlZFdvcmtlcjo6aW50ZXJmYWNlTmFtZSgpIGNvbnN0Cit7CisgICAgcmV0
dXJuIGV2ZW50TmFtZXMoKS5pbnRlcmZhY2VGb3JTaGFyZWRXb3JrZXI7Cit9CisKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmICAvLyBFTkFCTEUoU0hBUkVEX1dPUktFUlMpCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL1NoYXJlZFdvcmtlci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvU2hhcmVkV29ya2VyLmgJKHJldmlzaW9uIDk4MzY4KQorKysg
U291cmNlL1dlYkNvcmUvd29ya2Vycy9TaGFyZWRXb3JrZXIuaAkod29ya2luZyBjb3B5KQpAQCAt
NDUsNiArNDUsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgTWVzc2FnZVBvcnQq
IHBvcnQoKSBjb25zdCB7IHJldHVybiBtX3BvcnQuZ2V0KCk7IH0KIAorICAgICAgICB2aXJ0dWFs
IGNvbnN0IEF0b21pY1N0cmluZyYgaW50ZXJmYWNlTmFtZSgpIGNvbnN0OworCiAgICAgcHJpdmF0
ZToKICAgICAgICAgU2hhcmVkV29ya2VyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKIApJbmRl
eDogU291cmNlL1dlYkNvcmUvd29ya2Vycy9TaGFyZWRXb3JrZXJDb250ZXh0LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL1NoYXJlZFdvcmtlckNvbnRleHQuY3BwCShy
ZXZpc2lvbiA5ODM2OCkKKysrIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2hhcmVkV29ya2VyQ29u
dGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU5LDYgKzU5LDExIEBAIFNoYXJlZFdvcmtlckNv
bnRleHQ6On5TaGFyZWRXb3JrZXJDb250ZXgKIHsKIH0KIAorY29uc3QgQXRvbWljU3RyaW5nJiBT
aGFyZWRXb3JrZXJDb250ZXh0OjppbnRlcmZhY2VOYW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
ZXZlbnROYW1lcygpLmludGVyZmFjZUZvclNoYXJlZFdvcmtlckNvbnRleHQ7Cit9CisKIFNoYXJl
ZFdvcmtlclRocmVhZCogU2hhcmVkV29ya2VyQ29udGV4dDo6dGhyZWFkKCkKIHsKICAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8U2hhcmVkV29ya2VyVGhyZWFkKj4oQmFzZTo6dGhyZWFkKCkpOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvd29ya2Vycy9TaGFyZWRXb3JrZXJDb250ZXh0LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvd29ya2Vycy9TaGFyZWRXb3JrZXJDb250ZXh0LmgJKHJldmlz
aW9uIDk4MzY4KQorKysgU291cmNlL1dlYkNvcmUvd29ya2Vycy9TaGFyZWRXb3JrZXJDb250ZXh0
LmgJKHdvcmtpbmcgY29weSkKQEAgLTUyLDcgKzUyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
ICAgICAgICB2aXJ0dWFsIGJvb2wgaXNTaGFyZWRXb3JrZXJDb250ZXh0KCkgY29uc3QgeyByZXR1
cm4gdHJ1ZTsgfQogCiAgICAgICAgIC8vIEV2ZW50VGFyZ2V0Ci0gICAgICAgIHZpcnR1YWwgU2hh
cmVkV29ya2VyQ29udGV4dCogdG9TaGFyZWRXb3JrZXJDb250ZXh0KCkgeyByZXR1cm4gdGhpczsg
fQorICAgICAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgaW50ZXJmYWNlTmFtZSgpIGNv
bnN0OwogCiAgICAgICAgIC8vIFNldHRlcnMvR2V0dGVycyBmb3IgYXR0cmlidXRlcyBpbiBTaGFy
ZWRXb3JrZXJDb250ZXh0LmlkbAogICAgICAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RF
TkVSKGNvbm5lY3QpOwpJbmRleDogU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyLmNwcAkocmV2aXNpb24g
OTgzNjgpCisrKyBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTg1LDYgKzg1LDExIEBAIFdvcmtlcjo6fldvcmtlcigpCiAgICAgbV9jb250ZXh0UHJv
eHktPndvcmtlck9iamVjdERlc3Ryb3llZCgpOwogfQogCitjb25zdCBBdG9taWNTdHJpbmcmIFdv
cmtlcjo6aW50ZXJmYWNlTmFtZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGV2ZW50TmFtZXMoKS5p
bnRlcmZhY2VGb3JXb3JrZXI7Cit9CisKIC8vIEZJWE1FOiByZW1vdmUgdGhpcyB3aGVuIHdlIHVw
ZGF0ZSB0aGUgT2JqQyBiaW5kaW5ncyAoYnVnICMyODc3NCkuCiB2b2lkIFdvcmtlcjo6cG9zdE1l
c3NhZ2UoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1lc3NhZ2UsIE1lc3NhZ2VQ
b3J0KiBwb3J0LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvV29ya2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3Jr
ZXIuaAkocmV2aXNpb24gOTgzNjgpCisrKyBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlci5o
CSh3b3JraW5nIGNvcHkpCkBAIC01NCw3ICs1NCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICAgICAgc3RhdGljIFBhc3NSZWZQdHI8V29ya2VyPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCosIGNvbnN0IFN0cmluZyYgdXJsLCBFeGNlcHRpb25Db2RlJik7CiAgICAgICAgIHZpcnR1
YWwgfldvcmtlcigpOwogCi0gICAgICAgIHZpcnR1YWwgV29ya2VyKiB0b1dvcmtlcigpIHsgcmV0
dXJuIHRoaXM7IH0KKyAgICAgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIGludGVyZmFj
ZU5hbWUoKSBjb25zdDsKIAogICAgICAgICB2b2lkIHBvc3RNZXNzYWdlKFBhc3NSZWZQdHI8U2Vy
aWFsaXplZFNjcmlwdFZhbHVlPiBtZXNzYWdlLCBFeGNlcHRpb25Db2RlJik7CiAgICAgICAgIHZv
aWQgcG9zdE1lc3NhZ2UoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1lc3NhZ2Us
IGNvbnN0IE1lc3NhZ2VQb3J0QXJyYXkqLCBFeGNlcHRpb25Db2RlJik7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAJKHJldmlzaW9uIDk4MzY4KQorKysgU291cmNlL1dl
YkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTExOCw2ICsx
MTE4LDExIEBAIHZvaWQgWE1MSHR0cFJlcXVlc3Q6OmNvbnRleHREZXN0cm95ZWQoKQogICAgIEFj
dGl2ZURPTU9iamVjdDo6Y29udGV4dERlc3Ryb3llZCgpOwogfQogCitjb25zdCBBdG9taWNTdHJp
bmcmIFhNTEh0dHBSZXF1ZXN0OjppbnRlcmZhY2VOYW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
ZXZlbnROYW1lcygpLmludGVyZmFjZUZvclhNTEh0dHBSZXF1ZXN0OworfQorCiBTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBYTUxIdHRwUmVxdWVzdDo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNv
bnN0CiB7CiAgICAgcmV0dXJuIEFjdGl2ZURPTU9iamVjdDo6c2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpOwpJbmRleDogU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmgJKHJldmlzaW9uIDk4MzY4
KQorKysgU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmgJKHdvcmtpbmcgY29weSkK
QEAgLTY5LDE0ICs2OSwxMyBAQCBwdWJsaWM6CiAgICAgICAgIFJlc3BvbnNlVHlwZUFycmF5QnVm
ZmVyCiAgICAgfTsKIAotICAgIHZpcnR1YWwgWE1MSHR0cFJlcXVlc3QqIHRvWE1MSHR0cFJlcXVl
c3QoKSB7IHJldHVybiB0aGlzOyB9Ci0KICAgICB2aXJ0dWFsIHZvaWQgY29udGV4dERlc3Ryb3ll
ZCgpOwogICAgIHZpcnR1YWwgYm9vbCBjYW5TdXNwZW5kKCkgY29uc3Q7CiAgICAgdmlydHVhbCB2
b2lkIHN1c3BlbmQoUmVhc29uRm9yU3VzcGVuc2lvbik7CiAgICAgdmlydHVhbCB2b2lkIHJlc3Vt
ZSgpOwogICAgIHZpcnR1YWwgdm9pZCBzdG9wKCk7CiAKKyAgICB2aXJ0dWFsIGNvbnN0IEF0b21p
Y1N0cmluZyYgaW50ZXJmYWNlTmFtZSgpIGNvbnN0OwogICAgIHZpcnR1YWwgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0OwogCiAgICAgY29uc3Qg
S1VSTCYgdXJsKCkgY29uc3QgeyByZXR1cm4gbV91cmw7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3htbC9YTUxIdHRwUmVxdWVzdFVwbG9hZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUveG1sL1hNTEh0dHBSZXF1ZXN0VXBsb2FkLmNwcAkocmV2aXNpb24gOTgzNjgpCisrKyBTb3Vy
Y2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3RVcGxvYWQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC00MSw2ICs0MSwxMSBAQCBYTUxIdHRwUmVxdWVzdFVwbG9hZDo6WE1MSHR0cFJlcXVlc3RVcGxv
CiB7CiB9CiAKK2NvbnN0IEF0b21pY1N0cmluZyYgWE1MSHR0cFJlcXVlc3RVcGxvYWQ6OmludGVy
ZmFjZU5hbWUoKSBjb25zdAoreworICAgIHJldHVybiBldmVudE5hbWVzKCkuaW50ZXJmYWNlRm9y
WE1MSHR0cFJlcXVlc3RVcGxvYWQ7Cit9CisKIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIFhNTEh0
dHBSZXF1ZXN0VXBsb2FkOjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QKIHsKICAgICBy
ZXR1cm4gbV94bWxIdHRwUmVxdWVzdC0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwpJbmRleDog
U291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0VXBsb2FkLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0VXBsb2FkLmgJKHJldmlzaW9uIDk4MzY4
KQorKysgU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0VXBsb2FkLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTU0LDggKzU0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2b2lk
IGRlcmVmKCkgeyBtX3htbEh0dHBSZXF1ZXN0LT5kZXJlZigpOyB9CiAgICAgICAgIFhNTEh0dHBS
ZXF1ZXN0KiB4bWxIdHRwUmVxdWVzdCgpIGNvbnN0IHsgcmV0dXJuIG1feG1sSHR0cFJlcXVlc3Q7
IH0KIAotICAgICAgICB2aXJ0dWFsIFhNTEh0dHBSZXF1ZXN0VXBsb2FkKiB0b1hNTEh0dHBSZXF1
ZXN0VXBsb2FkKCkgeyByZXR1cm4gdGhpczsgfQotCisgICAgICAgIHZpcnR1YWwgY29uc3QgQXRv
bWljU3RyaW5nJiBpbnRlcmZhY2VOYW1lKCkgY29uc3Q7CiAgICAgICAgIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdDsKIAogICAgICAgICBERUZJ
TkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKGFib3J0KTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCShyZXZpc2lvbiA5ODM2OCkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTEtMTAtMjUgIEFkYW0g
QmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KKworICAgICAgICBFdmVudFRhcmdldC5oIHNob3Vs
ZG4ndCBuZWVkIHRvIGtub3cgYWJvdXQgZXZlcnkgZmVhdHVyZSBhbmQgaWZkZWYKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcwNjU5CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgVGhpcyBjYXN0IGlzbid0IG5lZWRl
ZCBiZWNhdXNlIGRpc3BhdGNoRXZlbnQgaXMgYSB2aXJ0dWFsIGZ1bmN0aW9uLgorCisgICAgICAg
ICogc3JjL1dlYlNoYXJlZFdvcmtlckltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJTaGFy
ZWRXb3JrZXJJbXBsOjpjb25uZWN0VGFzayk6CisKIDIwMTEtMTAtMjUgIEdlbmUgR2lyYXJkICA8
Z2lyYXJkQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZS1lbmFibGUgdG91Y2ggdGVzdHMgKGZy
b20gNjY1NzcpCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTaGFyZWRXb3Jr
ZXJJbXBsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJT
aGFyZWRXb3JrZXJJbXBsLmNwcAkocmV2aXNpb24gOTgzNjgpCisrKyBTb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJTaGFyZWRXb3JrZXJJbXBsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTIs
NyArOTIsNyBAQCB2b2lkIFdlYlNoYXJlZFdvcmtlckltcGw6OmNvbm5lY3RUYXNrKFNjCiAgICAg
QVNTRVJUKGNvbnRleHQtPmlzV29ya2VyQ29udGV4dCgpKTsKICAgICBXb3JrZXJDb250ZXh0KiB3
b3JrZXJDb250ZXh0ID0gc3RhdGljX2Nhc3Q8V29ya2VyQ29udGV4dCo+KGNvbnRleHQpOwogICAg
IEFTU0VSVCh3b3JrZXJDb250ZXh0LT5pc1NoYXJlZFdvcmtlckNvbnRleHQoKSk7Ci0gICAgd29y
a2VyQ29udGV4dC0+dG9TaGFyZWRXb3JrZXJDb250ZXh0KCktPmRpc3BhdGNoRXZlbnQoY3JlYXRl
Q29ubmVjdEV2ZW50KHBvcnQpKTsKKyAgICB3b3JrZXJDb250ZXh0LT5kaXNwYXRjaEV2ZW50KGNy
ZWF0ZUNvbm5lY3RFdmVudChwb3J0KSk7CiB9CiAKIHZvaWQgV2ViU2hhcmVkV29ya2VySW1wbDo6
c3RhcnRXb3JrZXJDb250ZXh0KGNvbnN0IFdlYlVSTCYgdXJsLCBjb25zdCBXZWJTdHJpbmcmIG5h
bWUsIGNvbnN0IFdlYlN0cmluZyYgdXNlckFnZW50LCBjb25zdCBXZWJTdHJpbmcmIHNvdXJjZUNv
ZGUsIGxvbmcgbG9uZykKSW5kZXg6IFNvdXJjZS9jbWFrZS9XZWJLaXRNYWNyb3MuY21ha2UKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL2NtYWtlL1dlYktpdE1hY3Jvcy5jbWFrZQkocmV2aXNpb24gOTgz
NjgpCisrKyBTb3VyY2UvY21ha2UvV2ViS2l0TWFjcm9zLmNtYWtlCSh3b3JraW5nIGNvcHkpCkBA
IC0zNywxNSArMzcsMTMgQEAgTUFDUk8gKEdFTkVSQVRFX0ZPTlRfTkFNRVMgX2luZmlsZSkKIEVO
RE1BQ1JPICgpCiAKIAotTUFDUk8gKEdFTkVSQVRFX0VWRU5UX0ZBQ1RPUlkgX2luZmlsZSkKK01B
Q1JPIChHRU5FUkFURV9FVkVOVF9GQUNUT1JZIF9pbmZpbGUgX291dGZpbGUpCiAgICAgU0VUKE5B
TUVTX0dFTkVSQVRPUiAke1dFQkNPUkVfRElSfS9kb20vbWFrZV9ldmVudF9mYWN0b3J5LnBsKQot
ICAgIFNFVChfYXJndW1lbnRzICAtLWV2ZW50cyAke19pbmZpbGV9KQotICAgIFNFVChfb3V0cHV0
ZmlsZXMgJHtERVJJVkVEX1NPVVJDRVNfV0VCQ09SRV9ESVJ9L0V2ZW50RmFjdG9yeS5jcHApCiAK
ICAgICBBRERfQ1VTVE9NX0NPTU1BTkQoCi0gICAgICAgIE9VVFBVVCAgJHtfb3V0cHV0ZmlsZXN9
CisgICAgICAgIE9VVFBVVCAgJHtERVJJVkVEX1NPVVJDRVNfV0VCQ09SRV9ESVJ9LyR7X291dGZp
bGV9CiAgICAgICAgIERFUEVORFMgJHtOQU1FU19HRU5FUkFUT1J9ICR7U0NSSVBUU19CSU5ESU5H
U30gJHtfaW5maWxlfQotICAgICAgICBDT01NQU5EICR7UEVSTF9FWEVDVVRBQkxFfSAtSSR7V0VC
Q09SRV9ESVJ9L2JpbmRpbmdzL3NjcmlwdHMgJHtOQU1FU19HRU5FUkFUT1J9IC0tb3V0cHV0RGly
ICR7REVSSVZFRF9TT1VSQ0VTX1dFQkNPUkVfRElSfSAke19hcmd1bWVudHN9CisgICAgICAgIENP
TU1BTkQgJHtQRVJMX0VYRUNVVEFCTEV9IC1JJHtXRUJDT1JFX0RJUn0vYmluZGluZ3Mvc2NyaXB0
cyAke05BTUVTX0dFTkVSQVRPUn0gLS1ldmVudHMgJHtfaW5maWxlfSAtLW91dHB1dERpciAke0RF
UklWRURfU09VUkNFU19XRUJDT1JFX0RJUn0KICAgICAgICAgVkVSQkFUSU0pCiBFTkRNQUNSTyAo
KQogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>