<?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>101311</bug_id>
          
          <creation_ts>2012-11-05 23:34:22 -0800</creation_ts>
          <short_desc>Make namedItem return a node list only in HTMLFormControlsCollection and HTMLOptionsCollection</short_desc>
          <delta_ts>2013-04-25 00:21:23 -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>DOM</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>
          
          <blocked>78909</blocked>
    
    <blocked>115150</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Ryosuke Niwa">rniwa</assigned_to>
          <cc>abarth</cc>
    
    <cc>abecsi</cc>
    
    <cc>arv</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>dglazkov</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>haraken</cc>
    
    <cc>ian</cc>
    
    <cc>japhet</cc>
    
    <cc>mifenton</cc>
    
    <cc>mjs</cc>
    
    <cc>ojan</cc>
    
    <cc>peter+ews</cc>
    
    <cc>rakuco</cc>
    
    <cc>sam</cc>
    
    <cc>tkent</cc>
    
    <cc>vestbo</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>759303</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-11-05 23:34:22 -0800</bug_when>
    <thetext>DOM4 and HTML5 specifications make HTMLFormControlsCollection and HTMLOptionsCollection’s namedItem and named getter return a node list when there are multiple matches.

However, by default HTMLCollection’s namedItem and named getter returns the first item that matched the name, and this behavior can be much more efficient since it can stop the search as soon as it finds the first match. We should introduce the former two interfaces (they’re currently both implemented as HTMLCollection in WebKit) so that we can confine the said obnoxious, inefficient, behavior to those two interfaces.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>759304</commentid>
    <comment_count>1</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-11-05 23:36:52 -0800</bug_when>
    <thetext>HTMLCollection specification:
http://www.w3.org/TR/domcore/#htmlcollection

HTML*Collection specifications:
http://www.whatwg.org/specs/web-apps/current-work/multipage/common-dom-interfaces.html#collections-0</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>759350</commentid>
    <comment_count>2</comment_count>
      <attachid>172507</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-11-06 00:39:52 -0800</bug_when>
    <thetext>Created attachment 172507
Work in progress

Somehow v8 binding is broken and I don’t know why. I’m gonna just give up for now and come back to it later.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>759351</commentid>
    <comment_count>3</comment_count>
      <attachid>172507</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-11-06 00:44:35 -0800</bug_when>
    <thetext>Comment on attachment 172507
Work in progress

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

&gt; Source/WebCore/bindings/v8/custom/V8HTMLOptionsCollectionCustom.cpp:54
&gt; +        return v8Undefined();

You have the isolate.  You should pass it to v8Undefined.

&gt; Source/WebCore/bindings/v8/custom/V8HTMLOptionsCollectionCustom.cpp:67
&gt; +        return v8Undefined();

ditto</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>759942</commentid>
    <comment_count>4</comment_count>
    <who name="Ian &apos;Hixie&apos; Hickson">ian</who>
    <bug_when>2012-11-06 12:03:41 -0800</bug_when>
    <thetext>(In reply to comment #1)
&gt; HTMLCollection specification:
&gt; http://www.w3.org/TR/domcore/#htmlcollection

That&apos;s an obsolete link, the up to date link is: http://dom.spec.whatwg.org/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>760162</commentid>
    <comment_count>5</comment_count>
      <attachid>172670</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-11-06 16:13:38 -0800</bug_when>
    <thetext>Created attachment 172670
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>760170</commentid>
    <comment_count>6</comment_count>
      <attachid>172672</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-11-06 16:16:48 -0800</bug_when>
    <thetext>Created attachment 172672
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>760175</commentid>
    <comment_count>7</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-11-06 16:19:03 -0800</bug_when>
    <thetext>I’m getting one test failure like this on fast/dom/wrapper-classes.html:

-PASS jsWrapperClass(document.createElement(&apos;select&apos;).options.constructor) is &apos;HTMLOptionsCollectionConstructor&apos;
+FAIL jsWrapperClass(document.createElement(&apos;select&apos;).options.constructor) should be HTMLOptionsCollectionConstructor. Was Function.

As far as I can tell HTMLCollection has the same failure above. Does anyone know how to fix this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>760177</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-06 16:21:11 -0800</bug_when>
    <thetext>Attachment 172672 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;LayoutTests/fast...&quot; exit_code: 1
Source/WebCore/html/HTMLFormControlsCollection.h:55:  Should have a space between // and comment  [whitespace/comments] [4]
Total errors found: 1 in 35 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>760209</commentid>
    <comment_count>9</comment_count>
      <attachid>172672</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-06 16:49:50 -0800</bug_when>
    <thetext>Comment on attachment 172672
Patch

Attachment 172672 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/14745493</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>760227</commentid>
    <comment_count>10</comment_count>
      <attachid>172672</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-11-06 17:13:18 -0800</bug_when>
    <thetext>Comment on attachment 172672
Patch

Attachment 172672 did not pass win-ews (win):
Output: http://queues.webkit.org/results/14761140</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>760258</commentid>
    <comment_count>11</comment_count>
      <attachid>172672</attachid>
    <who name="Peter Beverloo (cr-android ews)">peter+ews</who>
    <bug_when>2012-11-06 18:03:04 -0800</bug_when>
    <thetext>Comment on attachment 172672
Patch

Attachment 172672 did not pass cr-android-ews (chromium-android):
Output: http://queues.webkit.org/results/14760170</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>760310</commentid>
    <comment_count>12</comment_count>
      <attachid>172703</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-11-06 19:32:22 -0800</bug_when>
    <thetext>Created attachment 172703
Fixed builds</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>760339</commentid>
    <comment_count>13</comment_count>
      <attachid>172703</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-11-06 20:29:44 -0800</bug_when>
    <thetext>Comment on attachment 172703
Fixed builds

Attachment 172703 did not pass win-ews (win):
Output: http://queues.webkit.org/results/14733935</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>760347</commentid>
    <comment_count>14</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-11-06 20:55:24 -0800</bug_when>
    <thetext>7&gt;c1xx : fatal error C1083: Cannot open source file: &apos;..\html\HTMLFormCollection.cpp&apos;: No such file or directory
7&gt;IDBFactoryBackendInterface.cpp

I can fix that easily :) once the review is done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>760409</commentid>
    <comment_count>15</comment_count>
      <attachid>172703</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-11-06 22:40:55 -0800</bug_when>
    <thetext>Comment on attachment 172703
Fixed builds

Attachment 172703 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/14747651

New failing tests:
fast/dom/dom-constructors.html
fast/dom/wrapper-classes.html
inspector/console/console-format-collections.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>760492</commentid>
    <comment_count>16</comment_count>
      <attachid>172703</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-07 02:40:46 -0800</bug_when>
    <thetext>Comment on attachment 172703
Fixed builds

Attachment 172703 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/14765020

New failing tests:
dom/html/level2/html/HTMLCollection06.html
dom/html/level2/html/HTMLCollection04.html
dom/xhtml/level2/html/HTMLCollection09.xhtml
dom/xhtml/level2/html/HTMLCollection05.xhtml
dom/xhtml/level2/html/HTMLCollection07.xhtml
dom/html/level2/html/HTMLDocument07.html
dom/xhtml/level2/html/HTMLCollection04.xhtml
dom/html/level2/html/HTMLCollection10.html
dom/html/level2/html/HTMLDocument08.html
dom/xhtml/level2/html/HTMLCollection11.xhtml
dom/html/level2/html/HTMLCollection12.html
dom/html/level2/html/HTMLCollection09.html
dom/html/level2/html/HTMLDocument09.html
dom/html/level2/html/HTMLDocument10.html
dom/xhtml/level2/html/HTMLCollection12.xhtml
dom/xhtml/level2/html/HTMLCollection03.xhtml
dom/xhtml/level2/html/HTMLCollection08.xhtml
dom/html/level2/html/HTMLCollection11.html
dom/xhtml/level2/html/HTMLCollection10.xhtml
dom/xhtml/level2/html/HTMLCollection01.xhtml
dom/html/level2/html/HTMLCollection08.html
dom/html/level2/html/HTMLDocument11.html
dom/html/level2/html/HTMLCollection02.html
dom/html/level2/html/HTMLCollection03.html
dom/xhtml/level2/html/HTMLCollection06.xhtml
dom/html/level2/html/HTMLCollection07.html
dom/html/level2/html/HTMLCollection01.html
dom/html/level2/html/HTMLCollection05.html
dom/html/level2/html/AppletsCollection.html
dom/xhtml/level2/html/HTMLCollection02.xhtml</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>760619</commentid>
    <comment_count>17</comment_count>
      <attachid>172703</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-11-07 06:12:54 -0800</bug_when>
    <thetext>Comment on attachment 172703
Fixed builds

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

&gt; Source/WebCore/page/DOMWindow.idl:473
&gt; +    attribute HTMLFormControlsCollectionConstructor HTMLFormControlsCollection;
&gt; +    attribute HTMLOptionsCollectionConstructor HTMLOptionsCollection;

I guess the failures are caused by this change. Once you expose HTMLOptionsCollection to DOMWindow, window.HTMLOptionsCollection should look like a Function:

    function HTMLOptionsCollection() { [native code] }

So the right way to fix the problem would be just to update the test cases. You can write a test that just checks if (an instance of HTMLOptionsCollection).constructor === HTMLOptionsCollection.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>760935</commentid>
    <comment_count>18</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-11-07 11:40:07 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 172507 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=172507&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/bindings/v8/custom/V8HTMLOptionsCollectionCustom.cpp:54
&gt; &gt; +        return v8Undefined();
&gt; 
&gt; You have the isolate.  You should pass it to v8Undefined.
&gt; 
&gt; &gt; Source/WebCore/bindings/v8/custom/V8HTMLOptionsCollectionCustom.cpp:67
&gt; &gt; +        return v8Undefined();
&gt; 
&gt; ditto

Unfortunately, doing this in namedPropertyGetter results in not falling back to access properties :( So I’m reverting that back.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>761007</commentid>
    <comment_count>19</comment_count>
      <attachid>172864</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-11-07 13:20:57 -0800</bug_when>
    <thetext>Created attachment 172864
Reverted v8::Undefined(isolate) change to fix tests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>761042</commentid>
    <comment_count>20</comment_count>
      <attachid>172864</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-11-07 14:12:05 -0800</bug_when>
    <thetext>Comment on attachment 172864
Reverted v8::Undefined(isolate) change to fix tests

Attachment 172864 did not pass win-ews (win):
Output: http://queues.webkit.org/results/14745814</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>761671</commentid>
    <comment_count>21</comment_count>
      <attachid>172864</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-08 05:07:31 -0800</bug_when>
    <thetext>Comment on attachment 172864
Reverted v8::Undefined(isolate) change to fix tests

Attachment 172864 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/14771135

New failing tests:
fast/dom/htmlcollection-reachable.html
fast/dom/html-collections-named-getter.html
fast/dom/gc-9.html
inspector/console/console-format-collections.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>762475</commentid>
    <comment_count>22</comment_count>
      <attachid>173182</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-11-08 20:08:31 -0800</bug_when>
    <thetext>Created attachment 173182
Fixed more tests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>762979</commentid>
    <comment_count>23</comment_count>
      <attachid>173182</attachid>
    <who name="Erik Arvidsson">arv</who>
    <bug_when>2012-11-09 06:56:27 -0800</bug_when>
    <thetext>Comment on attachment 173182
Fixed more tests

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

&gt; Source/WebCore/ChangeLog:10
&gt; +        there are multiple matches. Introducing these two interfaces allow us to &quot;regular&quot; HTMLCollection&apos;s named getter

typo

&gt; LayoutTests/fast/dom/html-collections-named-getter.html:30
&gt; +var newDoc = document.implementation.createDocument(null, &apos;html&apos;, null);

This is never used

&gt; LayoutTests/fast/dom/html-collections-named-getter.html:101
&gt; +var successfullyParsed = true;

No need for this line

&gt; LayoutTests/fast/dom/wrapper-classes-expected.txt:145
&gt; +FAIL jsWrapperClass(document.createElement(&apos;select&apos;).options.constructor) should be HTMLOptionsCollectionConstructor. Was Function.

How come this broke by this change?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>763197</commentid>
    <comment_count>24</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-11-09 11:36:23 -0800</bug_when>
    <thetext>(In reply to comment #23)
&gt; (From update of attachment 173182 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=173182&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:10
&gt; &gt; +        there are multiple matches. Introducing these two interfaces allow us to &quot;regular&quot; HTMLCollection&apos;s named getter
&gt; 
&gt; typo

Where?

&gt; &gt; LayoutTests/fast/dom/html-collections-named-getter.html:30
&gt; &gt; +var newDoc = document.implementation.createDocument(null, &apos;html&apos;, null);
&gt; 
&gt; This is never used

Will remove.

&gt; &gt; LayoutTests/fast/dom/html-collections-named-getter.html:101
&gt; &gt; +var successfullyParsed = true;
&gt; 
&gt; No need for this line

Nah… I’d like to keep it there.

&gt; &gt; LayoutTests/fast/dom/wrapper-classes-expected.txt:145
&gt; &gt; +FAIL jsWrapperClass(document.createElement(&apos;select&apos;).options.constructor) should be HTMLOptionsCollectionConstructor. Was Function.
&gt; 
&gt; How come this broke by this change?

See haraken’s comment #17.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>763220</commentid>
    <comment_count>25</comment_count>
      <attachid>173182</attachid>
    <who name="Erik Arvidsson">arv</who>
    <bug_when>2012-11-09 12:06:35 -0800</bug_when>
    <thetext>Comment on attachment 173182
Fixed more tests

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

&gt;&gt;&gt; Source/WebCore/ChangeLog:10
&gt;&gt;&gt; +        there are multiple matches. Introducing these two interfaces allow us to &quot;regular&quot; HTMLCollection&apos;s named getter
&gt;&gt; 
&gt;&gt; typo
&gt; 
&gt; Where?

allow us to &quot;regular&quot;...

&gt;&gt;&gt; LayoutTests/fast/dom/html-collections-named-getter.html:101
&gt;&gt;&gt; +var successfullyParsed = true;
&gt;&gt; 
&gt;&gt; No need for this line
&gt; 
&gt; Nah… I’d like to keep it there.

Why? This has no effect.;

js-test-*.js takes care of successfullyParsed for you already. If there is a parse error js-test-* will take care of it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>763221</commentid>
    <comment_count>26</comment_count>
      <attachid>173182</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-11-09 12:09:31 -0800</bug_when>
    <thetext>Comment on attachment 173182
Fixed more tests

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

&gt;&gt;&gt;&gt; Source/WebCore/ChangeLog:10
&gt;&gt;&gt;&gt; +        there are multiple matches. Introducing these two interfaces allow us to &quot;regular&quot; HTMLCollection&apos;s named getter
&gt;&gt;&gt; 
&gt;&gt;&gt; typo
&gt;&gt; 
&gt;&gt; Where?
&gt; 
&gt; allow us to &quot;regular&quot;...

regular is spelled correctly, right? I precisely meant http://www.answers.com/topic/regular.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>763226</commentid>
    <comment_count>27</comment_count>
      <attachid>173345</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-11-09 12:13:31 -0800</bug_when>
    <thetext>Created attachment 173345
Synced to ToT</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>763233</commentid>
    <comment_count>28</comment_count>
    <who name="Erik Arvidsson">arv</who>
    <bug_when>2012-11-09 12:26:16 -0800</bug_when>
    <thetext>(In reply to comment #26)
&gt; (From update of attachment 173182 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=173182&amp;action=review
&gt; 
&gt; &gt;&gt;&gt;&gt; Source/WebCore/ChangeLog:10
&gt; &gt;&gt;&gt;&gt; +        there are multiple matches. Introducing these two interfaces allow us to &quot;regular&quot; HTMLCollection&apos;s named getter
&gt; &gt;&gt;&gt; 
&gt; &gt;&gt;&gt; typo
&gt; &gt;&gt; 
&gt; &gt;&gt; Where?
&gt; &gt; 
&gt; &gt; allow us to &quot;regular&quot;...
&gt; 
&gt; regular is spelled correctly, right? I precisely meant http://www.answers.com/topic/regular.

not a typo... just grammar problem. You need a verb somewhere.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>763235</commentid>
    <comment_count>29</comment_count>
      <attachid>173182</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-11-09 12:27:23 -0800</bug_when>
    <thetext>Comment on attachment 173182
Fixed more tests

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

&gt;&gt;&gt;&gt;&gt;&gt; Source/WebCore/ChangeLog:10
&gt;&gt;&gt;&gt;&gt;&gt; +        there are multiple matches. Introducing these two interfaces allow us to &quot;regular&quot; HTMLCollection&apos;s named getter
&gt;&gt;&gt;&gt;&gt; 
&gt;&gt;&gt;&gt;&gt; typo
&gt;&gt;&gt;&gt; 
&gt;&gt;&gt;&gt; Where?
&gt;&gt;&gt; 
&gt;&gt;&gt; allow us to &quot;regular&quot;...
&gt;&gt; 
&gt;&gt; regular is spelled correctly, right? I precisely meant http://www.answers.com/topic/regular.
&gt; 
&gt; not a typo... just grammar problem. You need a verb somewhere.

Oh, I see. Yeah, it’s missing &quot;make&quot; there.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>763415</commentid>
    <comment_count>30</comment_count>
      <attachid>173345</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-09 16:02:56 -0800</bug_when>
    <thetext>Comment on attachment 173345
Synced to ToT

Attachment 173345 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/14771839

New failing tests:
inspector/console/console-format-collections.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>763477</commentid>
    <comment_count>31</comment_count>
      <attachid>173345</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-09 17:10:27 -0800</bug_when>
    <thetext>Comment on attachment 173345
Synced to ToT

Attachment 173345 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/14775752

New failing tests:
inspector/console/console-format-collections.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>769916</commentid>
    <comment_count>32</comment_count>
      <attachid>174813</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-11-17 00:18:51 -0800</bug_when>
    <thetext>Created attachment 174813
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>769924</commentid>
    <comment_count>33</comment_count>
      <attachid>174813</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-17 01:56:59 -0800</bug_when>
    <thetext>Comment on attachment 174813
Patch

Attachment 174813 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/14875291

New failing tests:
inspector/console/console-format-collections.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>769930</commentid>
    <comment_count>34</comment_count>
      <attachid>174813</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-17 02:55:45 -0800</bug_when>
    <thetext>Comment on attachment 174813
Patch

Attachment 174813 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/14861514

New failing tests:
inspector/console/console-format-collections.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>769998</commentid>
    <comment_count>35</comment_count>
      <attachid>174813</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2012-11-17 13:05:14 -0800</bug_when>
    <thetext>Comment on attachment 174813
Patch

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

&gt; Source/WebCore/ChangeLog:59
&gt; +        (WebCore):

Stray change log line here should be removed.

&gt; Source/WebCore/ChangeLog:63
&gt; +        (WebCore):

Stray change log line here should be removed.

&gt; Source/WebCore/ChangeLog:70
&gt; +        (WebCore):

Stray change log line here should be removed.

&gt; Source/WebCore/ChangeLog:74
&gt; +        (WebCore): Removed Document::objects since it was not used anywhere.

Comment should be here, but not the (WebCore): prefix.

&gt; Source/WebCore/ChangeLog:76
&gt; +        (Document):

Stray change log line here should be removed.

&gt; Source/WebCore/ChangeLog:96
&gt; +        (HTMLFormControlsCollection):

Stray change log line here should be removed.

&gt; Source/WebCore/ChangeLog:100
&gt; +        (WebCore):

Stray change log line here should be removed.

&gt; Source/WebCore/html/HTMLFormControlsCollection.h:34
&gt;  // This class is just a big hack to find form elements even in malformed HTML elements.

Should add a blank line before this comment.

&gt; LayoutTests/fast/dom/wrapper-classes-expected.txt:145
&gt; -PASS jsWrapperClass(document.createElement(&apos;select&apos;).options.constructor) is &apos;HTMLOptionsCollectionConstructor&apos;
&gt; +FAIL jsWrapperClass(document.createElement(&apos;select&apos;).options.constructor) should be HTMLOptionsCollectionConstructor. Was Function.

I don’t see any comment about this new expected failure in the change log.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>770235</commentid>
    <comment_count>36</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-11-18 17:19:11 -0800</bug_when>
    <thetext>Thanks for the review. Will address the comments before I land the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>770239</commentid>
    <comment_count>37</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-11-18 17:29:13 -0800</bug_when>
    <thetext>Committed r135093: &lt;http://trac.webkit.org/changeset/135093&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>770419</commentid>
    <comment_count>38</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-11-19 00:20:41 -0800</bug_when>
    <thetext>It appears global-constructors.html needs updated expectation after this patch:
--- /home/buildslave-1/webkit-buildslave/efl-linux-64-debug-wk2/build/layout-test-results/fast/js/global-constructors-expected.txt
+++ /home/buildslave-1/webkit-buildslave/efl-linux-64-debug-wk2/build/layout-test-results/fast/js/global-constructors-actual.txt
@@ -75,6 +75,7 @@
 PASS HTMLEmbedElement.toString() is &apos;[object HTMLEmbedElementConstructor]&apos;
 PASS HTMLFieldSetElement.toString() is &apos;[object HTMLFieldSetElementConstructor]&apos;
 PASS HTMLFontElement.toString() is &apos;[object HTMLFontElementConstructor]&apos;
+PASS HTMLFormControlsCollection.toString() is &apos;[object HTMLFormControlsCollectionConstructor]&apos;
 PASS HTMLFormElement.toString() is &apos;[object HTMLFormElementConstructor]&apos;
 PASS HTMLFrameElement.toString() is &apos;[object HTMLFrameElementConstructor]&apos;
 PASS HTMLFrameSetElement.toString() is &apos;[object HTMLFrameSetElementConstructor]&apos;
@@ -102,6 +103,7 @@
 PASS HTMLObjectElement.toString() is &apos;[object HTMLObjectElementConstructor]&apos;
 PASS HTMLOptGroupElement.toString() is &apos;[object HTMLOptGroupElementConstructor]&apos;
 PASS HTMLOptionElement.toString() is &apos;[object HTMLOptionElementConstructor]&apos;
+PASS HTMLOptionsCollection.toString() is &apos;[object HTMLOptionsCollectionConstructor]&apos;
 PASS HTMLOutputElement.toString() is &apos;[object HTMLOutputElementConstructor]&apos;
 PASS HTMLParagraphElement.toString() is &apos;[object HTMLParagraphElementConstructor]&apos;
 PASS HTMLParamElement.toString() is &apos;[object HTMLParamElementConstructor]&apos;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>172507</attachid>
            <date>2012-11-06 00:39:52 -0800</date>
            <delta_ts>2012-11-06 16:13:32 -0800</delta_ts>
            <desc>Work in progress</desc>
            <filename>wip101311</filename>
            <type>text/plain</type>
            <size>61637</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvVGFyZ2V0LnByaQkocmV2aXNpb24gMTMzNTY4KQorKysgU291cmNlL1dlYkNvcmUvVGFy
Z2V0LnByaQkod29ya2luZyBjb3B5KQpAQCAtMTMyLDYgKzEzMiw3IEBACiAgICAgIGJpbmRpbmdz
L2pzL0pTSFRNTERvY3VtZW50Q3VzdG9tLmNwcCBcCiAgICAgIGJpbmRpbmdzL2pzL0pTSFRNTEVs
ZW1lbnRDdXN0b20uY3BwIFwKICAgICAgYmluZGluZ3MvanMvSlNIVE1MRW1iZWRFbGVtZW50Q3Vz
dG9tLmNwcCBcCisgICAgIGJpbmRpbmdzL2pzL0pTSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb25D
dXN0b20uY3BwIFwKICAgICAgYmluZGluZ3MvanMvSlNIVE1MRm9ybUVsZW1lbnRDdXN0b20uY3Bw
IFwKICAgICAgYmluZGluZ3MvanMvSlNIVE1MRnJhbWVFbGVtZW50Q3VzdG9tLmNwcCBcCiAgICAg
IGJpbmRpbmdzL2pzL0pTSFRNTEZyYW1lU2V0RWxlbWVudEN1c3RvbS5jcHAgXApAQCAtNjAyLDcg
KzYwMyw3IEBACiAgICAgaHRtbC9IVE1MRW1iZWRFbGVtZW50LmNwcCBcCiAgICAgaHRtbC9IVE1M
RmllbGRTZXRFbGVtZW50LmNwcCBcCiAgICAgaHRtbC9IVE1MRm9udEVsZW1lbnQuY3BwIFwKLSAg
ICBodG1sL0hUTUxGb3JtQ29sbGVjdGlvbi5jcHAgXAorICAgIGh0bWwvSFRNTEZvcm1Db250cm9s
c0NvbGxlY3Rpb24uY3BwIFwKICAgICBodG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwIFwK
ICAgICBodG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnRXaXRoU3RhdGUuY3BwIFwKICAgICBodG1s
L0hUTUxGb3JtRWxlbWVudC5jcHAgXApAQCAtMTc1Nyw3ICsxNzU4LDcgQEAKICAgICBodG1sL0hU
TUxFbWJlZEVsZW1lbnQuaCBcCiAgICAgaHRtbC9IVE1MRmllbGRTZXRFbGVtZW50LmggXAogICAg
IGh0bWwvSFRNTEZvbnRFbGVtZW50LmggXAotICAgIGh0bWwvSFRNTEZvcm1Db2xsZWN0aW9uLmgg
XAorICAgIGh0bWwvSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uaCBcCiAgICAgaHRtbC9IVE1M
Rm9ybUNvbnRyb2xFbGVtZW50LmggXAogICAgIGh0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudFdp
dGhTdGF0ZS5oIFwKICAgICBodG1sL0hUTUxGb3JtRWxlbWVudC5oIFwKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL1VzZVY4LmNtYWtlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1VzZVY4LmNt
YWtlCShyZXZpc2lvbiAxMzM1NjgpCisrKyBTb3VyY2UvV2ViQ29yZS9Vc2VWOC5jbWFrZQkod29y
a2luZyBjb3B5KQpAQCAtMTA1LDYgKzEwNSw3IEBACiAgICAgYmluZGluZ3MvdjgvY3VzdG9tL1Y4
SFRNTENvbGxlY3Rpb25DdXN0b20uY3BwCiAgICAgYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTERv
Y3VtZW50Q3VzdG9tLmNwcAogICAgIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxFbGVtZW50Q3Vz
dG9tLmNwcAorICAgIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxGb3JtQ29udHJvbHNDb2xsZWN0
aW9uQ3VzdG9tLmNwcAogICAgIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxGb3JtRWxlbWVudEN1
c3RvbS5jcHAKICAgICBiaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MRnJhbWVFbGVtZW50Q3VzdG9t
LmNwcAogICAgIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxGcmFtZVNldEVsZW1lbnRDdXN0b20u
Y3BwCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHJldmlzaW9uIDEzMzU2OCkK
KysrIFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHdvcmtpbmcgY29weSkKQEAg
LTMzNyw2ICszMzcsOCBAQAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNIVE1MRmllbGRTZXRF
bGVtZW50LmggXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNIVE1MRm9udEVsZW1lbnQuY3Bw
IFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTSFRNTEZvbnRFbGVtZW50LmggXAorCURlcml2
ZWRTb3VyY2VzL1dlYkNvcmUvSlNIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5jcHAgXAorCURl
cml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5oIFwKIAlE
ZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTSFRNTEZvcm1FbGVtZW50LmNwcCBcCiAJRGVyaXZlZFNv
dXJjZXMvV2ViQ29yZS9KU0hUTUxGb3JtRWxlbWVudC5oIFwKIAlEZXJpdmVkU291cmNlcy9XZWJD
b3JlL0pTSFRNTEZyYW1lRWxlbWVudC5jcHAgXApAQCAtMTQ0MCw2ICsxNDQyLDcgQEAKIAkkKFdl
YkNvcmUpL2h0bWwvSFRNTEVtYmVkRWxlbWVudC5pZGwgXAogCSQoV2ViQ29yZSkvaHRtbC9IVE1M
RmllbGRTZXRFbGVtZW50LmlkbCBcCiAJJChXZWJDb3JlKS9odG1sL0hUTUxGb250RWxlbWVudC5p
ZGwgXAorCSQoV2ViQ29yZSkvaHRtbC9IVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5pZGwgXAog
CSQoV2ViQ29yZSkvaHRtbC9IVE1MRm9ybUVsZW1lbnQuaWRsIFwKIAkkKFdlYkNvcmUpL2h0bWwv
SFRNTEZyYW1lRWxlbWVudC5pZGwgXAogCSQoV2ViQ29yZSkvaHRtbC9IVE1MRnJhbWVTZXRFbGVt
ZW50LmlkbCBcCkBAIC0yMzI0LDYgKzIzMjcsNyBAQAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTSFRNTEVsZW1lbnRDdXN0b20uY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0hUTUxFbWJlZEVsZW1lbnRDdXN0b20uY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0hUTUxFbWJlZEVsZW1lbnRDdXN0b20uaCBcCisJU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbkN1c3RvbS5jcHAgXAogCVNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEZvcm1FbGVtZW50Q3VzdG9tLmNwcCBcCiAJU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MRnJhbWVFbGVtZW50Q3VzdG9tLmNwcCBcCiAJU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MRnJhbWVTZXRFbGVtZW50Q3VzdG9tLmNwcCBc
CkBAIC0zMzI5LDggKzMzMzMsOCBAQAogCVNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZpZWxkU2V0
RWxlbWVudC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb250RWxlbWVudC5jcHAgXAog
CVNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvbnRFbGVtZW50LmggXAotCVNvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEZvcm1Db2xsZWN0aW9uLmNwcCBcCi0JU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
Rm9ybUNvbGxlY3Rpb24uaCBcCisJU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xz
Q29sbGVjdGlvbi5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sc0Nv
bGxlY3Rpb24uaCBcCiAJU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50
LmNwcCBcCiAJU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmggXAog
CVNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudFdpdGhTdGF0ZS5jcHAg
XApJbmRleDogU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLmNwcAkocmV2aXNpb24gMTMzNTY4KQorKysg
U291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjMs
NiArMTYzLDcgQEAKICNpbmNsdWRlICJKU0hUTUxFbWJlZEVsZW1lbnQuY3BwIgogI2luY2x1ZGUg
IkpTSFRNTEZpZWxkU2V0RWxlbWVudC5jcHAiCiAjaW5jbHVkZSAiSlNIVE1MRm9udEVsZW1lbnQu
Y3BwIgorI2luY2x1ZGUgIkpTSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uY3BwIgogI2luY2x1
ZGUgIkpTSFRNTEZvcm1FbGVtZW50LmNwcCIKICNpbmNsdWRlICJKU0hUTUxGcmFtZUVsZW1lbnQu
Y3BwIgogI2luY2x1ZGUgIkpTSFRNTEZyYW1lU2V0RWxlbWVudC5jcHAiCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9Vc2VKU0MuY21ha2UKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvVXNlSlND
LmNtYWtlCShyZXZpc2lvbiAxMzM1NjgpCisrKyBTb3VyY2UvV2ViQ29yZS9Vc2VKU0MuY21ha2UJ
KHdvcmtpbmcgY29weSkKQEAgLTg0LDYgKzg0LDcgQEAKICAgICBiaW5kaW5ncy9qcy9KU0hUTUxE
b2N1bWVudEN1c3RvbS5jcHAKICAgICBiaW5kaW5ncy9qcy9KU0hUTUxFbGVtZW50Q3VzdG9tLmNw
cAogICAgIGJpbmRpbmdzL2pzL0pTSFRNTEVtYmVkRWxlbWVudEN1c3RvbS5jcHAKKyAgICBiaW5k
aW5ncy9qcy9KU0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uQ3VzdG9tLmNwcAogICAgIGJpbmRp
bmdzL2pzL0pTSFRNTEZvcm1FbGVtZW50Q3VzdG9tLmNwcAogICAgIGJpbmRpbmdzL2pzL0pTSFRN
TEZyYW1lRWxlbWVudEN1c3RvbS5jcHAKICAgICBiaW5kaW5ncy9qcy9KU0hUTUxGcmFtZVNldEVs
ZW1lbnRDdXN0b20uY3BwCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5wcmkK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMucHJpCShyZXZpc2lv
biAxMzM1NjgpCisrKyBTb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5wcmkJKHdvcmtpbmcg
Y29weSkKQEAgLTM1MCw2ICszNTAsNyBAQAogICAgICQkUFdEL2h0bWwvSFRNTEVtYmVkRWxlbWVu
dC5pZGwgXAogICAgICQkUFdEL2h0bWwvSFRNTEZpZWxkU2V0RWxlbWVudC5pZGwgXAogICAgICQk
UFdEL2h0bWwvSFRNTEZvbnRFbGVtZW50LmlkbCBcCisgICAgJCRQV0QvaHRtbC9IVE1MRm9ybUNv
bnRyb2xzQ29sbGVjdGlvbi5pZGwgXAogICAgICQkUFdEL2h0bWwvSFRNTEZvcm1FbGVtZW50Lmlk
bCBcCiAgICAgJCRQV0QvaHRtbC9IVE1MRnJhbWVFbGVtZW50LmlkbCBcCiAgICAgJCRQV0QvaHRt
bC9IVE1MRnJhbWVTZXRFbGVtZW50LmlkbCBcCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRWxl
bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCShy
ZXZpc2lvbiAxMzM1NjgpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTQ2LDcgKzQ2LDcgQEAKICNpbmNsdWRlICJIVE1MQ29sbGVjdGlvbi5oIgog
I2luY2x1ZGUgIkhUTUxEb2N1bWVudC5oIgogI2luY2x1ZGUgIkhUTUxFbGVtZW50LmgiCi0jaW5j
bHVkZSAiSFRNTEZvcm1Db2xsZWN0aW9uLmgiCisjaW5jbHVkZSAiSFRNTEZvcm1Db250cm9sc0Nv
bGxlY3Rpb24uaCIKICNpbmNsdWRlICJIVE1MRnJhbWVPd25lckVsZW1lbnQuaCIKICNpbmNsdWRl
ICJIVE1MTGFiZWxFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCkBAIC0yMzQ1LDcg
KzIzNDUsNyBAQAogICAgICAgICBjb2xsZWN0aW9uID0gSFRNTE9wdGlvbnNDb2xsZWN0aW9uOjpj
cmVhdGUoZWxlbWVudCk7CiAgICAgfSBlbHNlIGlmICh0eXBlID09IEZvcm1Db250cm9scykgewog
ICAgICAgICBBU1NFUlQoZWxlbWVudC0+aGFzVGFnTmFtZShmb3JtVGFnKSB8fCBlbGVtZW50LT5o
YXNUYWdOYW1lKGZpZWxkc2V0VGFnKSk7Ci0gICAgICAgIGNvbGxlY3Rpb24gPSBIVE1MRm9ybUNv
bGxlY3Rpb246OmNyZWF0ZShlbGVtZW50KTsKKyAgICAgICAgY29sbGVjdGlvbiA9IEhUTUxGb3Jt
Q29udHJvbHNDb2xsZWN0aW9uOjpjcmVhdGUoZWxlbWVudCk7CiAjaWYgRU5BQkxFKE1JQ1JPREFU
QSkKICAgICB9IGVsc2UgaWYgKHR5cGUgPT0gSXRlbVByb3BlcnRpZXMpIHsKICAgICAgICAgY29s
bGVjdGlvbiA9IEhUTUxQcm9wZXJ0aWVzQ29sbGVjdGlvbjo6Y3JlYXRlKGVsZW1lbnQpOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MQ29sbGVjdGlvbkN1c3RvbS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MQ29sbGVjdGlv
bkN1c3RvbS5jcHAJKHJldmlzaW9uIDEzMzU2OCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTSFRNTENvbGxlY3Rpb25DdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMCwxMSAr
MjAsMTMgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJKU0hUTUxDb2xsZWN0aW9u
LmgiCiAKKyNpbmNsdWRlICJIVE1MQWxsQ29sbGVjdGlvbi5oIgogI2luY2x1ZGUgIkhUTUxDb2xs
ZWN0aW9uLmgiCisjaW5jbHVkZSAiSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uaCIKICNpbmNs
dWRlICJIVE1MT3B0aW9uc0NvbGxlY3Rpb24uaCIKLSNpbmNsdWRlICJIVE1MQWxsQ29sbGVjdGlv
bi5oIgogI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgogI2luY2x1ZGUgIkpTSFRNTEFsbENvbGxl
Y3Rpb24uaCIKKyNpbmNsdWRlICJKU0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmgiCiAjaW5j
bHVkZSAiSlNIVE1MT3B0aW9uc0NvbGxlY3Rpb24uaCIKICNpbmNsdWRlICJKU05vZGUuaCIKICNp
bmNsdWRlICJKU05vZGVMaXN0LmgiCkBAIC0zOSwyNiArNDEsNiBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLXN0YXRpYyBKU1ZhbHVlIGdldE5hbWVkSXRlbXMoRXhlY1N0YXRlKiBleGVjLCBK
U0hUTUxDb2xsZWN0aW9uKiBjb2xsZWN0aW9uLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQot
ewotICAgIFZlY3RvcjxSZWZQdHI8Tm9kZT4gPiBuYW1lZEl0ZW1zOwotICAgIGNvbnN0IEF0b21p
Y1N0cmluZyYgbmFtZSA9IHByb3BlcnR5TmFtZVRvQXRvbWljU3RyaW5nKHByb3BlcnR5TmFtZSk7
Ci0gICAgY29sbGVjdGlvbi0+aW1wbCgpLT5uYW1lZEl0ZW1zKG5hbWUsIG5hbWVkSXRlbXMpOwot
Ci0gICAgaWYgKG5hbWVkSXRlbXMuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4ganNVbmRlZmlu
ZWQoKTsKLSAgICBpZiAobmFtZWRJdGVtcy5zaXplKCkgPT0gMSkKLSAgICAgICAgcmV0dXJuIHRv
SlMoZXhlYywgY29sbGVjdGlvbi0+Z2xvYmFsT2JqZWN0KCksIG5hbWVkSXRlbXNbMF0uZ2V0KCkp
OwotCi0gICAgaWYgKGNvbGxlY3Rpb24tPmltcGwoKS0+dHlwZSgpID09IEZvcm1Db250cm9scykK
LSAgICAgICByZXR1cm4gdG9KUyhleGVjLCBjb2xsZWN0aW9uLT5nbG9iYWxPYmplY3QoKSwgY29s
bGVjdGlvbi0+aW1wbCgpLT5iYXNlKCktPnJhZGlvTm9kZUxpc3QobmFtZSkuZ2V0KCkpOwotCi0g
ICAgLy8gRklYTUU6IEhUTUw1IHNwZWNpZmllcyB0aGF0IHRoaXMgc2hvdWxkIGJlIGEgRHluYW1p
Y05vZGVMaXN0LgotICAgIC8vIEZJWE1FOiBIVE1MNSBzcGVjaWZpZXMgdGhhdCBub24tSFRNTE9w
dGlvbnNDb2xsZWN0aW9uIGNvbGxlY3Rpb25zIHNob3VsZCByZXR1cm4KLSAgICAvLyB0aGUgZmly
c3QgbWF0Y2hpbmcgaXRlbSBpbnN0ZWFkIG9mIGEgTm9kZUxpc3QuCi0gICAgcmV0dXJuIHRvSlMo
ZXhlYywgY29sbGVjdGlvbi0+Z2xvYmFsT2JqZWN0KCksIFN0YXRpY05vZGVMaXN0OjphZG9wdChu
YW1lZEl0ZW1zKS5nZXQoKSk7Ci19Ci0KIGJvb2wgSlNIVE1MQ29sbGVjdGlvbjo6Y2FuR2V0SXRl
bXNGb3JOYW1lKEV4ZWNTdGF0ZSosIEhUTUxDb2xsZWN0aW9uKiBjb2xsZWN0aW9uLCBQcm9wZXJ0
eU5hbWUgcHJvcGVydHlOYW1lKQogewogICAgIHJldHVybiBjb2xsZWN0aW9uLT5oYXNOYW1lZEl0
ZW0ocHJvcGVydHlOYW1lVG9BdG9taWNTdHJpbmcocHJvcGVydHlOYW1lKSk7CkBAIC02NiwxNSAr
NDgsMTEgQEAKIAogSlNWYWx1ZSBKU0hUTUxDb2xsZWN0aW9uOjpuYW1lR2V0dGVyKEV4ZWNTdGF0
ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsK
LSAgICBKU0hUTUxDb2xsZWN0aW9uKiB0aGlzT2JqID0ganNDYXN0PEpTSFRNTENvbGxlY3Rpb24q
Pihhc09iamVjdChzbG90QmFzZSkpOwotICAgIHJldHVybiBnZXROYW1lZEl0ZW1zKGV4ZWMsIHRo
aXNPYmosIHByb3BlcnR5TmFtZSk7CisgICAgSlNIVE1MQ29sbGVjdGlvbiogY29sbGVjdGlvbiA9
IGpzQ2FzdDxKU0hUTUxDb2xsZWN0aW9uKj4oYXNPYmplY3Qoc2xvdEJhc2UpKTsKKyAgICBjb25z
dCBBdG9taWNTdHJpbmcmIG5hbWUgPSBwcm9wZXJ0eU5hbWVUb0F0b21pY1N0cmluZyhwcm9wZXJ0
eU5hbWUpOworICAgIHJldHVybiB0b0pTKGV4ZWMsIGNvbGxlY3Rpb24tPmdsb2JhbE9iamVjdCgp
LCBjb2xsZWN0aW9uLT5pbXBsKCktPm5hbWVkSXRlbShuYW1lKSk7CiB9CiAKLUpTVmFsdWUgSlNI
VE1MQ29sbGVjdGlvbjo6bmFtZWRJdGVtKEV4ZWNTdGF0ZSogZXhlYykKLXsKLSAgICByZXR1cm4g
Z2V0TmFtZWRJdGVtcyhleGVjLCB0aGlzLCBJZGVudGlmaWVyKGV4ZWMsIGV4ZWMtPmFyZ3VtZW50
KDApLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSkpOwotfQotCiBKU1ZhbHVlIHRvSlMoRXhl
Y1N0YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBIVE1MQ29sbGVj
dGlvbiogY29sbGVjdGlvbikKIHsKICAgICBpZiAoIWNvbGxlY3Rpb24pCkBAIC04NiwxOCArNjQs
MTcgQEAKICAgICAgICAgcmV0dXJuIHdyYXBwZXI7CiAKICAgICBzd2l0Y2ggKGNvbGxlY3Rpb24t
PnR5cGUoKSkgewotICAgICAgICBjYXNlIFNlbGVjdE9wdGlvbnM6Ci0gICAgICAgICAgICB3cmFw
cGVyID0gQ1JFQVRFX0RPTV9XUkFQUEVSKGV4ZWMsIGdsb2JhbE9iamVjdCwgSFRNTE9wdGlvbnND
b2xsZWN0aW9uLCBjb2xsZWN0aW9uKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNl
IERvY0FsbDoKLSAgICAgICAgICAgIHdyYXBwZXIgPSBDUkVBVEVfRE9NX1dSQVBQRVIoZXhlYywg
Z2xvYmFsT2JqZWN0LCBIVE1MQWxsQ29sbGVjdGlvbiwgY29sbGVjdGlvbik7Ci0gICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIHdyYXBwZXIgPSBDUkVBVEVf
RE9NX1dSQVBQRVIoZXhlYywgZ2xvYmFsT2JqZWN0LCBIVE1MQ29sbGVjdGlvbiwgY29sbGVjdGlv
bik7Ci0gICAgICAgICAgICBicmVhazsKKyAgICBjYXNlIEZvcm1Db250cm9sczoKKyAgICAgICAg
cmV0dXJuIENSRUFURV9ET01fV1JBUFBFUihleGVjLCBnbG9iYWxPYmplY3QsIEhUTUxGb3JtQ29u
dHJvbHNDb2xsZWN0aW9uLCBjb2xsZWN0aW9uKTsKKyAgICBjYXNlIFNlbGVjdE9wdGlvbnM6Cisg
ICAgICAgIHJldHVybiBDUkVBVEVfRE9NX1dSQVBQRVIoZXhlYywgZ2xvYmFsT2JqZWN0LCBIVE1M
T3B0aW9uc0NvbGxlY3Rpb24sIGNvbGxlY3Rpb24pOworICAgIGNhc2UgRG9jQWxsOgorICAgICAg
ICByZXR1cm4gQ1JFQVRFX0RPTV9XUkFQUEVSKGV4ZWMsIGdsb2JhbE9iamVjdCwgSFRNTEFsbENv
bGxlY3Rpb24sIGNvbGxlY3Rpb24pOworICAgIGRlZmF1bHQ6CisgICAgICAgIGJyZWFrOwogICAg
IH0KIAotICAgIHJldHVybiB3cmFwcGVyOworICAgIHJldHVybiBDUkVBVEVfRE9NX1dSQVBQRVIo
ZXhlYywgZ2xvYmFsT2JqZWN0LCBIVE1MQ29sbGVjdGlvbiwgY29sbGVjdGlvbik7CiB9CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
SFRNTEFsbENvbGxlY3Rpb25DdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTSFRNTEFsbENvbGxlY3Rpb25DdXN0b20uY3BwCShyZXZpc2lvbiAxMzM1
NjgpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxBbGxDb2xsZWN0aW9uQ3Vz
dG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTAsOSArNTAsOCBAQAogICAgIGlmIChuYW1lZEl0
ZW1zLnNpemUoKSA9PSAxKQogICAgICAgICByZXR1cm4gdG9KUyhleGVjLCBjb2xsZWN0aW9uLT5n
bG9iYWxPYmplY3QoKSwgbmFtZWRJdGVtc1swXS5nZXQoKSk7CiAKLSAgICAvLyBGSVhNRTogSFRN
TDUgc3BlY2lmaWVzIHRoYXQgdGhpcyBzaG91bGQgYmUgYSBEeW5hbWljTm9kZUxpc3QuCi0gICAg
Ly8gRklYTUU6IEhUTUw1IHNwZWNpZmllcyB0aGF0IG5vbi1IVE1MT3B0aW9uc0NvbGxlY3Rpb24g
Y29sbGVjdGlvbnMgc2hvdWxkIHJldHVybgotICAgIC8vIHRoZSBmaXJzdCBtYXRjaGluZyBpdGVt
IGluc3RlYWQgb2YgYSBOb2RlTGlzdC4KKyAgICAvLyBGSVhNRTogSFRNTDUgc3BlY2lmaWNhdGlv
biBzYXlzIHRoaXMgc2hvdWxkIGJlIGEgSFRNTENvbGxlY3Rpb24uCisgICAgLy8gaHR0cDovL3d3
dy53aGF0d2cub3JnL3NwZWNzL3dlYi1hcHBzL2N1cnJlbnQtd29yay9tdWx0aXBhZ2UvY29tbW9u
LWRvbS1pbnRlcmZhY2VzLmh0bWwjaHRtbGFsbGNvbGxlY3Rpb24KICAgICByZXR1cm4gdG9KUyhl
eGVjLCBjb2xsZWN0aW9uLT5nbG9iYWxPYmplY3QoKSwgU3RhdGljTm9kZUxpc3Q6OmFkb3B0KG5h
bWVkSXRlbXMpLmdldCgpKTsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNCaW5kaW5nc0FsbEluT25lLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0JpbmRpbmdzQWxsSW5PbmUuY3BwCShyZXZpc2lvbiAxMzM1NjgpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0JpbmRpbmdzQWxsSW5PbmUuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC04OSw2ICs4OSw3IEBACiAjaW5jbHVkZSAiSlNIVE1MRG9jdW1lbnRDdXN0b20uY3Bw
IgogI2luY2x1ZGUgIkpTSFRNTEVsZW1lbnRDdXN0b20uY3BwIgogI2luY2x1ZGUgIkpTSFRNTEVt
YmVkRWxlbWVudEN1c3RvbS5jcHAiCisjaW5jbHVkZSAiSlNIVE1MRm9ybUNvbnRyb2xzQ29sbGVj
dGlvbkN1c3RvbS5jcHAiCiAjaW5jbHVkZSAiSlNIVE1MRm9ybUVsZW1lbnRDdXN0b20uY3BwIgog
I2luY2x1ZGUgIkpTSFRNTEZyYW1lRWxlbWVudEN1c3RvbS5jcHAiCiAjaW5jbHVkZSAiSlNIVE1M
RnJhbWVTZXRFbGVtZW50Q3VzdG9tLmNwcCIKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb25DdXN0b20uY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb25D
dXN0b20uY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNI
VE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbkN1c3RvbS5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsNzMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMDggQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5
b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVy
bXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxp
c2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24g
MiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4K
KyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3
aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVu
IHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZl
IHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4g
IElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4s
IDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEz
MDEsIFVTQS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSlNIVE1MQ29s
bGVjdGlvbi5oIgorCisjaW5jbHVkZSAiSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uaCIKKyNp
bmNsdWRlICJIVE1MQWxsQ29sbGVjdGlvbi5oIgorI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgor
I2luY2x1ZGUgIkpTSFRNTEFsbENvbGxlY3Rpb24uaCIKKyNpbmNsdWRlICJKU0hUTUxGb3JtQ29u
dHJvbHNDb2xsZWN0aW9uLmgiCisjaW5jbHVkZSAiSlNIVE1MT3B0aW9uc0NvbGxlY3Rpb24uaCIK
KyNpbmNsdWRlICJKU05vZGUuaCIKKyNpbmNsdWRlICJKU05vZGVMaXN0LmgiCisjaW5jbHVkZSAi
SlNSYWRpb05vZGVMaXN0LmgiCisjaW5jbHVkZSAiTm9kZS5oIgorI2luY2x1ZGUgIlJhZGlvTm9k
ZUxpc3QuaCIKKyNpbmNsdWRlICJTdGF0aWNOb2RlTGlzdC5oIgorI2luY2x1ZGUgPHd0Zi9WZWN0
b3IuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmcuaD4KKwordXNpbmcgbmFtZXNw
YWNlIEpTQzsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdGF0aWMgSlNWYWx1ZSBnZXROYW1l
ZEl0ZW1zKEV4ZWNTdGF0ZSogZXhlYywgSlNIVE1MQ29sbGVjdGlvbiogY29sbGVjdGlvbiwgUHJv
cGVydHlOYW1lIHByb3BlcnR5TmFtZSkKK3sKKyAgICBWZWN0b3I8UmVmUHRyPE5vZGU+ID4gbmFt
ZWRJdGVtczsKKyAgICBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUgPSBwcm9wZXJ0eU5hbWVUb0F0
b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUpOworICAgIGNvbGxlY3Rpb24tPmltcGwoKS0+bmFtZWRJ
dGVtcyhuYW1lLCBuYW1lZEl0ZW1zKTsKKworICAgIGlmIChuYW1lZEl0ZW1zLmlzRW1wdHkoKSkK
KyAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CisgICAgaWYgKG5hbWVkSXRlbXMuc2l6ZSgp
ID09IDEpCisgICAgICAgIHJldHVybiB0b0pTKGV4ZWMsIGNvbGxlY3Rpb24tPmdsb2JhbE9iamVj
dCgpLCBuYW1lZEl0ZW1zWzBdLmdldCgpKTsKKworICAgIEFTU0VSVChjb2xsZWN0aW9uLT5pbXBs
KCktPnR5cGUoKSA9PSBGb3JtQ29udHJvbHMpOworICAgIHJldHVybiB0b0pTKGV4ZWMsIGNvbGxl
Y3Rpb24tPmdsb2JhbE9iamVjdCgpLCBjb2xsZWN0aW9uLT5pbXBsKCktPmJhc2UoKS0+cmFkaW9O
b2RlTGlzdChuYW1lKS5nZXQoKSk7Cit9CisKK2Jvb2wgSlNIVE1MRm9ybUNvbnRyb2xzQ29sbGVj
dGlvbjo6Y2FuR2V0SXRlbXNGb3JOYW1lKEV4ZWNTdGF0ZSosIEhUTUxGb3JtQ29udHJvbHNDb2xs
ZWN0aW9uKiBjb2xsZWN0aW9uLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQoreworICAgIHJl
dHVybiBjb2xsZWN0aW9uLT5oYXNOYW1lZEl0ZW0ocHJvcGVydHlOYW1lVG9BdG9taWNTdHJpbmco
cHJvcGVydHlOYW1lKSk7Cit9CisKK0pTVmFsdWUgSlNIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlv
bjo6bmFtZUdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIFByb3BlcnR5
TmFtZSBwcm9wZXJ0eU5hbWUpCit7CisgICAgSlNIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbiog
dGhpc09iaiA9IGpzQ2FzdDxKU0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uKj4oYXNPYmplY3Qo
c2xvdEJhc2UpKTsKKyAgICByZXR1cm4gZ2V0TmFtZWRJdGVtcyhleGVjLCB0aGlzT2JqLCBwcm9w
ZXJ0eU5hbWUpOworfQorCitKU1ZhbHVlIEpTSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb246Om5h
bWVkSXRlbShFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgcmV0dXJuIGdldE5hbWVkSXRlbXMoZXhl
YywgdGhpcywgSWRlbnRpZmllcihleGVjLCBleGVjLT5hcmd1bWVudCgwKS50b1N0cmluZyhleGVj
KS0+dmFsdWUoZXhlYykpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MT3B0aW9uc0NvbGxlY3Rpb25DdXN0b20uY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTE9wdGlvbnND
b2xsZWN0aW9uQ3VzdG9tLmNwcAkocmV2aXNpb24gMTMzNTY4KQorKysgU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNIVE1MT3B0aW9uc0NvbGxlY3Rpb25DdXN0b20uY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yNSw5ICsyNSwxMSBAQAogI2luY2x1ZGUgIkhUTUxPcHRpb25FbGVtZW50LmgiCiAj
aW5jbHVkZSAiSFRNTE9wdGlvbnNDb2xsZWN0aW9uLmgiCiAjaW5jbHVkZSAiSFRNTFNlbGVjdEVs
ZW1lbnQuaCIKKyNpbmNsdWRlICJTdGF0aWNOb2RlTGlzdC5oIgogI2luY2x1ZGUgIkpTSFRNTE9w
dGlvbkVsZW1lbnQuaCIKICNpbmNsdWRlICJKU0hUTUxTZWxlY3RFbGVtZW50LmgiCiAjaW5jbHVk
ZSAiSlNIVE1MU2VsZWN0RWxlbWVudEN1c3RvbS5oIgorI2luY2x1ZGUgIkpTTm9kZUxpc3QuaCIK
IAogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CiAKQEAgLTM1LDYgKzM3LDM3IEBACiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAorc3RhdGljIEpTVmFsdWUgZ2V0TmFtZWRJdGVtcyhFeGVjU3Rh
dGUqIGV4ZWMsIEpTSFRNTENvbGxlY3Rpb24qIGNvbGxlY3Rpb24sIFByb3BlcnR5TmFtZSBwcm9w
ZXJ0eU5hbWUpCit7CisgICAgVmVjdG9yPFJlZlB0cjxOb2RlPiA+IG5hbWVkSXRlbXM7CisgICAg
Y29uc3QgQXRvbWljU3RyaW5nJiBuYW1lID0gcHJvcGVydHlOYW1lVG9BdG9taWNTdHJpbmcocHJv
cGVydHlOYW1lKTsKKyAgICBjb2xsZWN0aW9uLT5pbXBsKCktPm5hbWVkSXRlbXMobmFtZSwgbmFt
ZWRJdGVtcyk7CisKKyAgICBpZiAobmFtZWRJdGVtcy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVy
biBqc1VuZGVmaW5lZCgpOworICAgIGlmIChuYW1lZEl0ZW1zLnNpemUoKSA9PSAxKQorICAgICAg
ICByZXR1cm4gdG9KUyhleGVjLCBjb2xsZWN0aW9uLT5nbG9iYWxPYmplY3QoKSwgbmFtZWRJdGVt
c1swXS5nZXQoKSk7CisKKyAgICAvLyBGSVhNRTogSFRNTDUgc3BlY2lmaWVzIHRoYXQgdGhpcyBz
aG91bGQgYmUgYSBEeW5hbWljTm9kZUxpc3QuCisgICAgcmV0dXJuIHRvSlMoZXhlYywgY29sbGVj
dGlvbi0+Z2xvYmFsT2JqZWN0KCksIFN0YXRpY05vZGVMaXN0OjphZG9wdChuYW1lZEl0ZW1zKS5n
ZXQoKSk7Cit9CisKK2Jvb2wgSlNIVE1MT3B0aW9uc0NvbGxlY3Rpb246OmNhbkdldEl0ZW1zRm9y
TmFtZShFeGVjU3RhdGUqLCBIVE1MT3B0aW9uc0NvbGxlY3Rpb24qIGNvbGxlY3Rpb24sIFByb3Bl
cnR5TmFtZSBwcm9wZXJ0eU5hbWUpCit7CisgICAgcmV0dXJuIGNvbGxlY3Rpb24tPmhhc05hbWVk
SXRlbShwcm9wZXJ0eU5hbWVUb0F0b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUpKTsKK30KKworSlNW
YWx1ZSBKU0hUTUxPcHRpb25zQ29sbGVjdGlvbjo6bmFtZUdldHRlcihFeGVjU3RhdGUqIGV4ZWMs
IEpTVmFsdWUgc2xvdEJhc2UsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCit7CisgICAgSlNI
VE1MT3B0aW9uc0NvbGxlY3Rpb24qIHRoaXNPYmogPSBqc0Nhc3Q8SlNIVE1MT3B0aW9uc0NvbGxl
Y3Rpb24qPihhc09iamVjdChzbG90QmFzZSkpOworICAgIHJldHVybiBnZXROYW1lZEl0ZW1zKGV4
ZWMsIHRoaXNPYmosIHByb3BlcnR5TmFtZSk7Cit9CisKK0pTVmFsdWUgSlNIVE1MT3B0aW9uc0Nv
bGxlY3Rpb246Om5hbWVkSXRlbShFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgcmV0dXJuIGdldE5h
bWVkSXRlbXMoZXhlYywgdGhpcywgSWRlbnRpZmllcihleGVjLCBleGVjLT5hcmd1bWVudCgwKS50
b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpKTsKK30KKwogSlNWYWx1ZSBKU0hUTUxPcHRpb25z
Q29sbGVjdGlvbjo6bGVuZ3RoKEV4ZWNTdGF0ZSopIGNvbnN0CiB7CiAgICAgSFRNTE9wdGlvbnND
b2xsZWN0aW9uKiBpbXAgPSBzdGF0aWNfY2FzdDxIVE1MT3B0aW9uc0NvbGxlY3Rpb24qPihpbXBs
KCkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTEFsbENv
bGxlY3Rpb25DdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L2N1c3RvbS9WOEhUTUxBbGxDb2xsZWN0aW9uQ3VzdG9tLmNwcAkocmV2aXNpb24gMTMzNTY4
KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTEFsbENvbGxlY3Rp
b25DdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MSw2ICs1MSw4IEBACiAgICAgaWYgKG5h
bWVkSXRlbXMuc2l6ZSgpID09IDEpCiAgICAgICAgIHJldHVybiB0b1Y4KG5hbWVkSXRlbXMuYXQo
MCkucmVsZWFzZSgpLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOwogCisgICAgLy8gRklYTUU6
IEhUTUw1IHNwZWNpZmljYXRpb24gc2F5cyB0aGlzIHNob3VsZCBiZSBhIEhUTUxDb2xsZWN0aW9u
LgorICAgIC8vIGh0dHA6Ly93d3cud2hhdHdnLm9yZy9zcGVjcy93ZWItYXBwcy9jdXJyZW50LXdv
cmsvbXVsdGlwYWdlL2NvbW1vbi1kb20taW50ZXJmYWNlcy5odG1sI2h0bWxhbGxjb2xsZWN0aW9u
CiAgICAgcmV0dXJuIHRvVjgoVjhOYW1lZE5vZGVzQ29sbGVjdGlvbjo6Y3JlYXRlKG5hbWVkSXRl
bXMpLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MQ29sbGVjdGlvbkN1c3RvbS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTENvbGxlY3Rpb25D
dXN0b20uY3BwCShyZXZpc2lvbiAxMzM1NjgpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9jdXN0b20vVjhIVE1MQ29sbGVjdGlvbkN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMy
LDMzICszMiwxNSBAQAogI2luY2x1ZGUgIlY4SFRNTENvbGxlY3Rpb24uaCIKIAogI2luY2x1ZGUg
IkhUTUxDb2xsZWN0aW9uLmgiCi0jaW5jbHVkZSAiUmFkaW9Ob2RlTGlzdC5oIgogI2luY2x1ZGUg
IlY4QmluZGluZy5oIgogI2luY2x1ZGUgIlY4SFRNTEFsbENvbGxlY3Rpb24uaCIKKyNpbmNsdWRl
ICJWOEhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmgiCisjaW5jbHVkZSAiVjhIVE1MT3B0aW9u
c0NvbGxlY3Rpb24uaCIKICNpbmNsdWRlICJWOE5hbWVkTm9kZXNDb2xsZWN0aW9uLmgiCiAjaW5j
bHVkZSAiVjhOb2RlLmgiCi0jaW5jbHVkZSAiVjhOb2RlTGlzdC5oIgotI2luY2x1ZGUgIlY4UmFk
aW9Ob2RlTGlzdC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gZ2V0TmFtZWRJdGVtcyhIVE1MQ29sbGVjdGlvbiogY29sbGVjdGlvbiwgQXRv
bWljU3RyaW5nIG5hbWUsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0LCB2
ODo6SXNvbGF0ZSogaXNvbGF0ZSkKLXsKLSAgICBWZWN0b3I8UmVmUHRyPE5vZGU+ID4gbmFtZWRJ
dGVtczsKLSAgICBjb2xsZWN0aW9uLT5uYW1lZEl0ZW1zKG5hbWUsIG5hbWVkSXRlbXMpOwotCi0g
ICAgaWYgKCFuYW1lZEl0ZW1zLnNpemUoKSkKLSAgICAgICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7
Ci0KLSAgICBpZiAobmFtZWRJdGVtcy5zaXplKCkgPT0gMSkKLSAgICAgICAgcmV0dXJuIHRvVjgo
bmFtZWRJdGVtcy5hdCgwKS5yZWxlYXNlKCksIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7Ci0K
LSAgICBpZiAoY29sbGVjdGlvbi0+dHlwZSgpID09IEZvcm1Db250cm9scykKLSAgICAgICAgcmV0
dXJuIHRvVjgoY29sbGVjdGlvbi0+YmFzZSgpLT5yYWRpb05vZGVMaXN0KG5hbWUpLmdldCgpLCBj
cmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOwotCi0gICAgcmV0dXJuIHRvVjgoVjhOYW1lZE5vZGVz
Q29sbGVjdGlvbjo6Y3JlYXRlKG5hbWVkSXRlbXMpLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUp
OwotfQotCiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhIVE1MQ29sbGVjdGlvbjo6bmFtZWRQcm9w
ZXJ0eUdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29y
SW5mbyYgaW5mbykKIHsKICAgICBJTkNfU1RBVFMoIkRPTS5IVE1MQ29sbGVjdGlvbi5OYW1lZFBy
b3BlcnR5R2V0dGVyIik7CkBAIC02OSwyOCArNTEsMjUgQEAKICAgICAgICAgcmV0dXJuIHY4VW5k
ZWZpbmVkKCk7CiAKICAgICBIVE1MQ29sbGVjdGlvbiogaW1wID0gVjhIVE1MQ29sbGVjdGlvbjo6
dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7Ci0gICAgcmV0dXJuIGdldE5hbWVkSXRlbXMoaW1wLCB0
b1dlYkNvcmVBdG9taWNTdHJpbmcobmFtZSksIGluZm8uSG9sZGVyKCksIGluZm8uR2V0SXNvbGF0
ZSgpKTsKKyAgICByZXR1cm4gdG9WOChpbXAtPm5hbWVkSXRlbSh0b1dlYkNvcmVBdG9taWNTdHJp
bmcobmFtZSkpLCBpbmZvLkhvbGRlcigpLCBpbmZvLkdldElzb2xhdGUoKSk7CiB9CiAKLXY4OjpI
YW5kbGU8djg6OlZhbHVlPiBWOEhUTUxDb2xsZWN0aW9uOjpuYW1lZEl0ZW1DYWxsYmFjayhjb25z
dCB2ODo6QXJndW1lbnRzJiBhcmdzKQotewotICAgIElOQ19TVEFUUygiRE9NLkhUTUxDb2xsZWN0
aW9uLm5hbWVkSXRlbSgpIik7Ci0gICAgSFRNTENvbGxlY3Rpb24qIGltcCA9IFY4SFRNTENvbGxl
Y3Rpb246OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOwotICAgIHY4OjpIYW5kbGU8djg6OlZhbHVl
PiByZXN1bHQgPSBnZXROYW1lZEl0ZW1zKGltcCwgdG9XZWJDb3JlU3RyaW5nKGFyZ3NbMF0pLCBh
cmdzLkhvbGRlcigpLCBhcmdzLkdldElzb2xhdGUoKSk7Ci0KLSAgICBpZiAocmVzdWx0LklzRW1w
dHkoKSkKLSAgICAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKLQotICAgIHJldHVybiByZXN1
bHQ7Ci19Ci0KIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4KEhUTUxDb2xsZWN0aW9uKiBpbXBs
LCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCwgdjg6Oklzb2xhdGUqIGlz
b2xhdGUpCiB7CiAgICAgaWYgKCFpbXBsKQogICAgICAgICByZXR1cm4gdjhOdWxsV2l0aENoZWNr
KGlzb2xhdGUpOwogCi0gICAgaWYgKGltcGwtPnR5cGUoKSA9PSBEb2NBbGwpCisgICAgc3dpdGNo
IChpbXBsLT50eXBlKCkpIHsKKyAgICBjYXNlIEZvcm1Db250cm9sczoKKyAgICAgICAgcmV0dXJu
IHRvVjgoc3RhdGljX2Nhc3Q8SFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24qPihpbXBsKSwgY3Jl
YXRpb25Db250ZXh0LCBpc29sYXRlKTsKKyAgICBjYXNlIFNlbGVjdE9wdGlvbnM6CisgICAgICAg
IHJldHVybiB0b1Y4KHN0YXRpY19jYXN0PEhUTUxPcHRpb25zQ29sbGVjdGlvbio+KGltcGwpLCBj
cmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOworICAgIGNhc2UgRG9jQWxsOgogICAgICAgICByZXR1
cm4gdG9WOChzdGF0aWNfY2FzdDxIVE1MQWxsQ29sbGVjdGlvbio+KGltcGwpLCBjcmVhdGlvbkNv
bnRleHQsIGlzb2xhdGUpOworICAgIGRlZmF1bHQ6CisgICAgICAgIGJyZWFrOworICAgIH0KKwog
ICAgIHJldHVybiBWOEhUTUxDb2xsZWN0aW9uOjp3cmFwKGltcGwsIGNyZWF0aW9uQ29udGV4dCwg
aXNvbGF0ZSk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9W
OEhUTUxPcHRpb25zQ29sbGVjdGlvbkN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTE9wdGlvbnNDb2xsZWN0aW9uQ3VzdG9tLmNw
cAkocmV2aXNpb24gMTMzNTY4KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9t
L1Y4SFRNTE9wdGlvbnNDb2xsZWN0aW9uQ3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzks
MTAgKzM5LDUxIEBACiAjaW5jbHVkZSAiVjhDb2xsZWN0aW9uLmgiCiAjaW5jbHVkZSAiVjhIVE1M
T3B0aW9uRWxlbWVudC5oIgogI2luY2x1ZGUgIlY4SFRNTFNlbGVjdEVsZW1lbnRDdXN0b20uaCIK
KyNpbmNsdWRlICJWOE5hbWVkTm9kZXNDb2xsZWN0aW9uLmgiCiAjaW5jbHVkZSAiVjhOb2RlLmgi
CisjaW5jbHVkZSAiVjhOb2RlTGlzdC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK3N0YXRp
YyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gZ2V0TmFtZWRJdGVtcyhIVE1MT3B0aW9uc0NvbGxlY3Rp
b24qIGNvbGxlY3Rpb24sIEF0b21pY1N0cmluZyBuYW1lLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+
IGNyZWF0aW9uQ29udGV4dCwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCit7CisgICAgVmVjdG9yPFJl
ZlB0cjxOb2RlPiA+IG5hbWVkSXRlbXM7CisgICAgY29sbGVjdGlvbi0+bmFtZWRJdGVtcyhuYW1l
LCBuYW1lZEl0ZW1zKTsKKworICAgIGlmICghbmFtZWRJdGVtcy5zaXplKCkpCisgICAgICAgIHJl
dHVybiB2OFVuZGVmaW5lZCgpOworCisgICAgaWYgKG5hbWVkSXRlbXMuc2l6ZSgpID09IDEpCisg
ICAgICAgIHJldHVybiB0b1Y4KG5hbWVkSXRlbXMuYXQoMCkucmVsZWFzZSgpLCBjcmVhdGlvbkNv
bnRleHQsIGlzb2xhdGUpOworCisgICAgcmV0dXJuIHRvVjgoVjhOYW1lZE5vZGVzQ29sbGVjdGlv
bjo6Y3JlYXRlKG5hbWVkSXRlbXMpLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOworfQorCit2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhIVE1MT3B0aW9uc0NvbGxlY3Rpb246Om5hbWVkUHJvcGVy
dHlHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3Nvcklu
Zm8mIGluZm8pCit7CisgICAgSU5DX1NUQVRTKCJET00uSFRNTENvbGxlY3Rpb24uTmFtZWRQcm9w
ZXJ0eUdldHRlciIpOworCisgICAgaWYgKCFpbmZvLkhvbGRlcigpLT5HZXRSZWFsTmFtZWRQcm9w
ZXJ0eUluUHJvdG90eXBlQ2hhaW4obmFtZSkuSXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gdjhV
bmRlZmluZWQoKTsKKyAgICBpZiAoaW5mby5Ib2xkZXIoKS0+SGFzUmVhbE5hbWVkQ2FsbGJhY2tQ
cm9wZXJ0eShuYW1lKSkKKyAgICAgICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7CisKKyAgICBIVE1M
T3B0aW9uc0NvbGxlY3Rpb24qIGltcCA9IFY4SFRNTE9wdGlvbnNDb2xsZWN0aW9uOjp0b05hdGl2
ZShpbmZvLkhvbGRlcigpKTsKKyAgICByZXR1cm4gZ2V0TmFtZWRJdGVtcyhpbXAsIHRvV2ViQ29y
ZUF0b21pY1N0cmluZyhuYW1lKSwgaW5mby5Ib2xkZXIoKSwgaW5mby5HZXRJc29sYXRlKCkpOwor
fQorCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhIVE1MT3B0aW9uc0NvbGxlY3Rpb246Om5hbWVk
SXRlbUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCit7CisgICAgSU5DX1NUQVRT
KCJET00uSFRNTENvbGxlY3Rpb24ubmFtZWRJdGVtKCkiKTsKKyAgICBIVE1MT3B0aW9uc0NvbGxl
Y3Rpb24qIGltcCA9IFY4SFRNTE9wdGlvbnNDb2xsZWN0aW9uOjp0b05hdGl2ZShhcmdzLkhvbGRl
cigpKTsKKyAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gcmVzdWx0ID0gZ2V0TmFtZWRJdGVtcyhp
bXAsIHRvV2ViQ29yZVN0cmluZyhhcmdzWzBdKSwgYXJncy5Ib2xkZXIoKSwgYXJncy5HZXRJc29s
YXRlKCkpOworCisgICAgaWYgKHJlc3VsdC5Jc0VtcHR5KCkpCisgICAgICAgIHJldHVybiB2ODo6
VW5kZWZpbmVkKCk7CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCiB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gVjhIVE1MT3B0aW9uc0NvbGxlY3Rpb246OnJlbW92ZUNhbGxiYWNrKGNvbnN0IHY4OjpB
cmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgSU5DX1NUQVRTKCJET00uSFRNTE9wdGlvbnNDb2xsZWN0
aW9uLnJlbW92ZSgpIik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20v
VjhIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbkN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTEZvcm1Db250cm9sc0NvbGxlY3Rp
b25DdXN0b20uY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4SFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb25DdXN0b20uY3BwCShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDgxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZQorICogbWV0OgorICogCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29w
eXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0
aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCisgKiAKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IK
KyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlY4SFRN
TEZvcm1Db250cm9sc0NvbGxlY3Rpb24uaCIKKworI2luY2x1ZGUgIkhUTUxDb2xsZWN0aW9uLmgi
CisjaW5jbHVkZSAiUmFkaW9Ob2RlTGlzdC5oIgorI2luY2x1ZGUgIlY4QmluZGluZy5oIgorI2lu
Y2x1ZGUgIlY4Tm9kZS5oIgorI2luY2x1ZGUgIlY4UmFkaW9Ob2RlTGlzdC5oIgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gZ2V0TmFtZWRJdGVt
cyhIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbiogY29sbGVjdGlvbiwgQXRvbWljU3RyaW5nIG5h
bWUsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0LCB2ODo6SXNvbGF0ZSog
aXNvbGF0ZSkKK3sKKyAgICBWZWN0b3I8UmVmUHRyPE5vZGU+ID4gbmFtZWRJdGVtczsKKyAgICBj
b2xsZWN0aW9uLT5uYW1lZEl0ZW1zKG5hbWUsIG5hbWVkSXRlbXMpOworCisgICAgaWYgKCFuYW1l
ZEl0ZW1zLnNpemUoKSkKKyAgICAgICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7CisKKyAgICBpZiAo
bmFtZWRJdGVtcy5zaXplKCkgPT0gMSkKKyAgICAgICAgcmV0dXJuIHRvVjgobmFtZWRJdGVtcy5h
dCgwKS5yZWxlYXNlKCksIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7CisKKyAgICByZXR1cm4g
dG9WOChjb2xsZWN0aW9uLT5iYXNlKCktPnJhZGlvTm9kZUxpc3QobmFtZSkuZ2V0KCksIGNyZWF0
aW9uQ29udGV4dCwgaXNvbGF0ZSk7Cit9CisKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEhUTUxG
b3JtQ29udHJvbHNDb2xsZWN0aW9uOjpuYW1lZFByb3BlcnR5R2V0dGVyKHY4OjpMb2NhbDx2ODo6
U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIElOQ19T
VEFUUygiRE9NLkhUTUxDb2xsZWN0aW9uLk5hbWVkUHJvcGVydHlHZXR0ZXIiKTsKKworICAgIGlm
ICghaW5mby5Ib2xkZXIoKS0+R2V0UmVhbE5hbWVkUHJvcGVydHlJblByb3RvdHlwZUNoYWluKG5h
bWUpLklzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7CisgICAgaWYgKGlu
Zm8uSG9sZGVyKCktPkhhc1JlYWxOYW1lZENhbGxiYWNrUHJvcGVydHkobmFtZSkpCisgICAgICAg
IHJldHVybiB2OFVuZGVmaW5lZCgpOworCisgICAgSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24q
IGltcCA9IFY4SFRNTENvbGxlY3Rpb246OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOworICAgIHJl
dHVybiBnZXROYW1lZEl0ZW1zKGltcCwgdG9XZWJDb3JlQXRvbWljU3RyaW5nKG5hbWUpLCBpbmZv
LkhvbGRlcigpLCBpbmZvLkdldElzb2xhdGUoKSk7Cit9CisKK3Y4OjpIYW5kbGU8djg6OlZhbHVl
PiBWOEhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uOjpuYW1lZEl0ZW1DYWxsYmFjayhjb25zdCB2
ODo6QXJndW1lbnRzJiBhcmdzKQoreworICAgIElOQ19TVEFUUygiRE9NLkhUTUxDb2xsZWN0aW9u
Lm5hbWVkSXRlbSgpIik7CisgICAgSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24qIGltcCA9IFY4
SFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb246OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOworICAg
IHY4OjpIYW5kbGU8djg6OlZhbHVlPiByZXN1bHQgPSBnZXROYW1lZEl0ZW1zKGltcCwgdG9XZWJD
b3JlU3RyaW5nKGFyZ3NbMF0pLCBhcmdzLkhvbGRlcigpLCBhcmdzLkdldElzb2xhdGUoKSk7CisK
KyAgICBpZiAocmVzdWx0LklzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQo
KTsKKworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLmd5cGkJKHJldmlzaW9uIDEzMzU2OCkKKysrIFNvdXJjZS9XZWJDb3JlL1dl
YkNvcmUuZ3lwaQkod29ya2luZyBjb3B5KQpAQCAtMTA4NCw2ICsxMDg0LDcgQEAKICAgICAgICAg
ICAgICdodG1sL0hUTUxFbWJlZEVsZW1lbnQuaWRsJywKICAgICAgICAgICAgICdodG1sL0hUTUxG
aWVsZFNldEVsZW1lbnQuaWRsJywKICAgICAgICAgICAgICdodG1sL0hUTUxGb250RWxlbWVudC5p
ZGwnLAorICAgICAgICAgICAgJ2h0bWwvSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uaWRsJywK
ICAgICAgICAgICAgICdodG1sL0hUTUxGb3JtRWxlbWVudC5pZGwnLAogICAgICAgICAgICAgJ2h0
bWwvSFRNTEZyYW1lRWxlbWVudC5pZGwnLAogICAgICAgICAgICAgJ2h0bWwvSFRNTEZyYW1lU2V0
RWxlbWVudC5pZGwnLApAQCAtMjA3Nyw2ICsyMDc4LDcgQEAKICAgICAgICAgICAgICdiaW5kaW5n
cy9qcy9KU0hUTUxFbGVtZW50Q3VzdG9tLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvanMv
SlNIVE1MRW1iZWRFbGVtZW50Q3VzdG9tLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvanMv
SlNIVE1MRW1iZWRFbGVtZW50Q3VzdG9tLmgnLAorICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pT
SFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb25DdXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5k
aW5ncy9qcy9KU0hUTUxGb3JtRWxlbWVudEN1c3RvbS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRp
bmdzL2pzL0pTSFRNTEZyYW1lRWxlbWVudEN1c3RvbS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRp
bmdzL2pzL0pTSFRNTEZyYW1lU2V0RWxlbWVudEN1c3RvbS5jcHAnLApAQCAtMjM5MSw2ICsyMzkz
LDcgQEAKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MQ29sbGVjdGlvbkN1
c3RvbS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxEb2N1bWVu
dEN1c3RvbS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxFbGVt
ZW50Q3VzdG9tLmNwcCcsCisgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTEZv
cm1Db250cm9sc0NvbGxlY3Rpb25DdXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy92
OC9jdXN0b20vVjhIVE1MRm9ybUVsZW1lbnRDdXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5k
aW5ncy92OC9jdXN0b20vVjhIVE1MRnJhbWVFbGVtZW50Q3VzdG9tLmNwcCcsCiAgICAgICAgICAg
ICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTEZyYW1lU2V0RWxlbWVudEN1c3RvbS5jcHAnLApA
QCAtNDEwNCw4ICs0MTA3LDggQEAKICAgICAgICAgICAgICdodG1sL0hUTUxGaWVsZFNldEVsZW1l
bnQuaCcsCiAgICAgICAgICAgICAnaHRtbC9IVE1MRm9udEVsZW1lbnQuY3BwJywKICAgICAgICAg
ICAgICdodG1sL0hUTUxGb250RWxlbWVudC5oJywKLSAgICAgICAgICAgICdodG1sL0hUTUxGb3Jt
Q29sbGVjdGlvbi5jcHAnLAotICAgICAgICAgICAgJ2h0bWwvSFRNTEZvcm1Db2xsZWN0aW9uLmgn
LAorICAgICAgICAgICAgJ2h0bWwvSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uY3BwJywKKyAg
ICAgICAgICAgICdodG1sL0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmgnLAogICAgICAgICAg
ICAgJ2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHAnLAogICAgICAgICAgICAgJ2h0bWwv
SFRNTEZvcm1Db250cm9sRWxlbWVudFdpdGhTdGF0ZS5jcHAnLAogICAgICAgICAgICAgJ2h0bWwv
SFRNTEZvcm1FbGVtZW50LmNwcCcsCkBAIC03NjA3LDYgKzc2MTAsOCBAQAogICAgICAgICAgICAg
JzwoUFJPRFVDVF9ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNIVE1MRmllbGRTZXRFbGVt
ZW50LmgnLAogICAgICAgICAgICAgJzwoUFJPRFVDVF9ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNv
cmUvSlNIVE1MRm9udEVsZW1lbnQuY3BwJywKICAgICAgICAgICAgICc8KFBST0RVQ1RfRElSKS9E
ZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTSFRNTEZvbnRFbGVtZW50LmgnLAorICAgICAgICAgICAg
JzwoUFJPRFVDVF9ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNIVE1MRm9ybUNvbnRyb2xz
Q29sbGVjdGlvbi5jcHAnLAorICAgICAgICAgICAgJzwoUFJPRFVDVF9ESVIpL0Rlcml2ZWRTb3Vy
Y2VzL1dlYkNvcmUvSlNIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5oJywKICAgICAgICAgICAg
ICc8KFBST0RVQ1RfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTSFRNTEZvcm1FbGVtZW50
LmNwcCcsCiAgICAgICAgICAgICAnPChQUk9EVUNUX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29y
ZS9KU0hUTUxGb3JtRWxlbWVudC5oJywKICAgICAgICAgICAgICc8KFBST0RVQ1RfRElSKS9EZXJp
dmVkU291cmNlcy9XZWJDb3JlL0pTSFRNTEZyYW1lRWxlbWVudC5jcHAnLApJbmRleDogU291cmNl
L1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9EZXJpdmVkU291cmNlcy5tYWtlCShyZXZpc2lvbiAxMzM1NjgpCisrKyBTb3VyY2UvV2ViQ29y
ZS9EZXJpdmVkU291cmNlcy5tYWtlCSh3b3JraW5nIGNvcHkpCkBAIC0zMDAsNiArMzAwLDcgQEAK
ICAgICAkKFdlYkNvcmUpL2h0bWwvSFRNTEVtYmVkRWxlbWVudC5pZGwgXAogICAgICQoV2ViQ29y
ZSkvaHRtbC9IVE1MRmllbGRTZXRFbGVtZW50LmlkbCBcCiAgICAgJChXZWJDb3JlKS9odG1sL0hU
TUxGb250RWxlbWVudC5pZGwgXAorICAgICQoV2ViQ29yZSkvaHRtbC9IVE1MRm9ybUNvbnRyb2xz
Q29sbGVjdGlvbi5pZGwgXAogICAgICQoV2ViQ29yZSkvaHRtbC9IVE1MRm9ybUVsZW1lbnQuaWRs
IFwKICAgICAkKFdlYkNvcmUpL2h0bWwvSFRNTEZyYW1lRWxlbWVudC5pZGwgXAogICAgICQoV2Vi
Q29yZSkvaHRtbC9IVE1MRnJhbWVTZXRFbGVtZW50LmlkbCBcCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxGb3JtQ29sbGVjdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEZvcm1Db2xsZWN0aW9uLmgJKHJldmlzaW9uIDEzMzU2OCkKKysrIFNvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEZvcm1Db2xsZWN0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNTcg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMTk5OSBMYXJzIEtub2xsIChrbm9sbEBrZGUu
b3JnKQotICogICAgICAgICAgIChDKSAxOTk5IEFudHRpIEtvaXZpc3RvIChrb2l2aXN0b0BrZGUu
b3JnKQotICogQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMg
ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiBtb2RpZnkg
aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICog
TGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0
aGVyCi0gKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55
IGxhdGVyIHZlcnNpb24uCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRo
ZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFO
VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hBTlRBQklM
SVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAq
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAq
IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljIExpY2Vuc2UKLSAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZp
bGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gKiB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICogQm9z
dG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKgotICovCi0KLSNpZm5kZWYgSFRNTEZvcm1Db2xs
ZWN0aW9uX2gKLSNkZWZpbmUgSFRNTEZvcm1Db2xsZWN0aW9uX2gKLQotI2luY2x1ZGUgIkhUTUxD
b2xsZWN0aW9uLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgRm9ybUFzc29jaWF0
ZWRFbGVtZW50OwotY2xhc3MgSFRNTEVsZW1lbnQ7Ci1jbGFzcyBIVE1MSW1hZ2VFbGVtZW50Owot
Y2xhc3MgUXVhbGlmaWVkTmFtZTsKLS8vIFRoaXMgY2xhc3MgaXMganVzdCBhIGJpZyBoYWNrIHRv
IGZpbmQgZm9ybSBlbGVtZW50cyBldmVuIGluIG1hbGZvcm1lZCBIVE1MIGVsZW1lbnRzLgotLy8g
VGhlIGZhbW91cyA8dGFibGU+PHRyPjxmb3JtPjx0ZD4gcHJvYmxlbS4KLQotY2xhc3MgSFRNTEZv
cm1Db2xsZWN0aW9uIDogcHVibGljIEhUTUxDb2xsZWN0aW9uIHsKLXB1YmxpYzoKLSAgICBzdGF0
aWMgUGFzc1JlZlB0cjxIVE1MRm9ybUNvbGxlY3Rpb24+IGNyZWF0ZShFbGVtZW50Kik7Ci0KLSAg
ICB2aXJ0dWFsIH5IVE1MRm9ybUNvbGxlY3Rpb24oKTsKLQotICAgIHZpcnR1YWwgTm9kZSogbmFt
ZWRJdGVtKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSkgY29uc3Q7Ci0KLXByaXZhdGU6Ci0gICAg
SFRNTEZvcm1Db2xsZWN0aW9uKEVsZW1lbnQqKTsKLQotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVO
YW1lQ2FjaGUoKSBjb25zdDsKLQotICAgIGNvbnN0IFZlY3RvcjxGb3JtQXNzb2NpYXRlZEVsZW1l
bnQqPiYgZm9ybUNvbnRyb2xFbGVtZW50cygpIGNvbnN0OwotICAgIGNvbnN0IFZlY3RvcjxIVE1M
SW1hZ2VFbGVtZW50Kj4mIGZvcm1JbWFnZUVsZW1lbnRzKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBF
bGVtZW50KiB2aXJ0dWFsSXRlbUFmdGVyKHVuc2lnbmVkJiBvZmZzZXRJbkFycmF5LCBFbGVtZW50
KikgY29uc3QgT1ZFUlJJREU7Ci19OwotCi19IC8vbmFtZXNwYWNlCi0KLSNlbmRpZgpJbmRleDog
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmNwcAkocmV2aXNpb24gMTMzNTY4KQor
KysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC00MSw3ICs0MSw3IEBACiAjaW5jbHVkZSAiRnJhbWVMb2FkZXIuaCIKICNpbmNsdWRlICJG
cmFtZUxvYWRlckNsaWVudC5oIgogI2luY2x1ZGUgIkhUTUxEb2N1bWVudC5oIgotI2luY2x1ZGUg
IkhUTUxGb3JtQ29sbGVjdGlvbi5oIgorI2luY2x1ZGUgIkhUTUxDb2xsZWN0aW9uLmgiCiAjaW5j
bHVkZSAiSFRNTEltYWdlRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxJbnB1dEVsZW1lbnQuaCIK
ICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZv
cm1Db250cm9sc0NvbGxlY3Rpb24uaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uaWRsCShyZXZpc2lvbiAwKQorKysgU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5pZGwJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsMjYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcsIDIwMTIg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2IFNh
bXVlbCBXZWluaWcgPHNhbS53ZWluaWdAZ21haWwuY29tPgorICoKKyAqIFRoaXMgbGlicmFyeSBp
cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlm
eSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisg
KiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBl
aXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBh
bnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4g
dGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJS
QU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFC
SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQor
ICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgor
ICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUg
ZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBC
b3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCitbCisgICAgSW5kZXhlZEdldHRlciwK
KyAgICBOYW1lZEdldHRlcgorXSBpbnRlcmZhY2UgSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24g
OiBIVE1MQ29sbGVjdGlvbiB7CisgICAgW0N1c3RvbV0gTm9kZSBuYW1lZEl0ZW0oaW4gW09wdGlv
bmFsPURlZmF1bHRJc1VuZGVmaW5lZF0gRE9NU3RyaW5nIG5hbWUpOworfTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uY3BwCShy
ZXZpc2lvbiAxMzM1NTEpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbHND
b2xsZWN0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjEsNyArMjEsNyBAQAogICovCiAKICNp
bmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJIVE1MRm9ybUNvbGxlY3Rpb24uaCIKKyNpbmNs
dWRlICJIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5oIgogCiAjaW5jbHVkZSAiSFRNTEZpZWxk
U2V0RWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxGb3JtQ29udHJvbEVsZW1lbnQuaCIKQEAgLTM2
LDIyICszNiwyMiBAQAogLy8gU2luY2UgdGhlIGNvbGxlY3Rpb25zIGFyZSB0byBiZSAibGl2ZSIs
IHdlIGhhdmUgdG8gZG8gdGhlCiAvLyBjYWxjdWxhdGlvbiBldmVyeSB0aW1lIGlmIGFueXRoaW5n
IGhhcyBjaGFuZ2VkLgogCi1IVE1MRm9ybUNvbGxlY3Rpb246OkhUTUxGb3JtQ29sbGVjdGlvbihF
bGVtZW50KiBiYXNlKQorSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb246OkhUTUxGb3JtQ29udHJv
bHNDb2xsZWN0aW9uKEVsZW1lbnQqIGJhc2UpCiAgICAgOiBIVE1MQ29sbGVjdGlvbihiYXNlLCBG
b3JtQ29udHJvbHMsIE92ZXJyaWRlc0l0ZW1BZnRlcikKIHsKICAgICBBU1NFUlQoYmFzZS0+aGFz
VGFnTmFtZShmb3JtVGFnKSB8fCBiYXNlLT5oYXNUYWdOYW1lKGZpZWxkc2V0VGFnKSk7CiB9CiAK
LVBhc3NSZWZQdHI8SFRNTEZvcm1Db2xsZWN0aW9uPiBIVE1MRm9ybUNvbGxlY3Rpb246OmNyZWF0
ZShFbGVtZW50KiBiYXNlKQorUGFzc1JlZlB0cjxIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbj4g
SFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb246OmNyZWF0ZShFbGVtZW50KiBiYXNlKQogewotICAg
IHJldHVybiBhZG9wdFJlZihuZXcgSFRNTEZvcm1Db2xsZWN0aW9uKGJhc2UpKTsKKyAgICByZXR1
cm4gYWRvcHRSZWYobmV3IEhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uKGJhc2UpKTsKIH0KIAot
SFRNTEZvcm1Db2xsZWN0aW9uOjp+SFRNTEZvcm1Db2xsZWN0aW9uKCkKK0hUTUxGb3JtQ29udHJv
bHNDb2xsZWN0aW9uOjp+SFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24oKQogewogfQogCi1jb25z
dCBWZWN0b3I8Rm9ybUFzc29jaWF0ZWRFbGVtZW50Kj4mIEhUTUxGb3JtQ29sbGVjdGlvbjo6Zm9y
bUNvbnRyb2xFbGVtZW50cygpIGNvbnN0Citjb25zdCBWZWN0b3I8Rm9ybUFzc29jaWF0ZWRFbGVt
ZW50Kj4mIEhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uOjpmb3JtQ29udHJvbEVsZW1lbnRzKCkg
Y29uc3QKIHsKICAgICBBU1NFUlQoYmFzZSgpKTsKICAgICBBU1NFUlQoYmFzZSgpLT5oYXNUYWdO
YW1lKGZvcm1UYWcpIHx8IGJhc2UoKS0+aGFzVGFnTmFtZShmaWVsZHNldFRhZykpOwpAQCAtNjAs
MTQgKzYwLDE0IEBACiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEhUTUxGaWVsZFNldEVsZW1lbnQq
PihiYXNlKCkpLT5hc3NvY2lhdGVkRWxlbWVudHMoKTsKIH0KIAotY29uc3QgVmVjdG9yPEhUTUxJ
bWFnZUVsZW1lbnQqPiYgSFRNTEZvcm1Db2xsZWN0aW9uOjpmb3JtSW1hZ2VFbGVtZW50cygpIGNv
bnN0Citjb25zdCBWZWN0b3I8SFRNTEltYWdlRWxlbWVudCo+JiBIVE1MRm9ybUNvbnRyb2xzQ29s
bGVjdGlvbjo6Zm9ybUltYWdlRWxlbWVudHMoKSBjb25zdAogewogICAgIEFTU0VSVChiYXNlKCkp
OwogICAgIEFTU0VSVChiYXNlKCktPmhhc1RhZ05hbWUoZm9ybVRhZykpOwogICAgIHJldHVybiBz
dGF0aWNfY2FzdDxIVE1MRm9ybUVsZW1lbnQqPihiYXNlKCkpLT5pbWFnZUVsZW1lbnRzKCk7CiB9
CiAKLUVsZW1lbnQqIEhUTUxGb3JtQ29sbGVjdGlvbjo6dmlydHVhbEl0ZW1BZnRlcih1bnNpZ25l
ZCYgb2Zmc2V0LCBFbGVtZW50KiBwcmV2aW91c0l0ZW0pIGNvbnN0CitFbGVtZW50KiBIVE1MRm9y
bUNvbnRyb2xzQ29sbGVjdGlvbjo6dmlydHVhbEl0ZW1BZnRlcih1bnNpZ25lZCYgb2Zmc2V0LCBF
bGVtZW50KiBwcmV2aW91c0l0ZW0pIGNvbnN0CiB7CiAgICAgY29uc3QgVmVjdG9yPEZvcm1Bc3Nv
Y2lhdGVkRWxlbWVudCo+JiBlbGVtZW50c0FycmF5ID0gZm9ybUNvbnRyb2xFbGVtZW50cygpOwog
ICAgIGlmIChwcmV2aW91c0l0ZW0pCkBAIC0xMDQsNyArMTA0LDcgQEAKICAgICByZXR1cm4gMDsK
IH0KIAotTm9kZSogSFRNTEZvcm1Db2xsZWN0aW9uOjpuYW1lZEl0ZW0oY29uc3QgQXRvbWljU3Ry
aW5nJiBuYW1lKSBjb25zdAorTm9kZSogSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb246Om5hbWVk
SXRlbShjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpIGNvbnN0CiB7CiAgICAgLy8gaHR0cDovL21z
ZG4ubWljcm9zb2Z0LmNvbS93b3Jrc2hvcC9hdXRob3IvZGh0bWwvcmVmZXJlbmNlL21ldGhvZHMv
bmFtZWRpdGVtLmFzcAogICAgIC8vIFRoaXMgbWV0aG9kIGZpcnN0IHNlYXJjaGVzIGZvciBhbiBv
YmplY3Qgd2l0aCBhIG1hdGNoaW5nIGlkCkBAIC0xMTgsNyArMTE4LDcgQEAKICAgICByZXR1cm4g
Zmlyc3ROYW1lZEl0ZW0oZm9ybUNvbnRyb2xFbGVtZW50cygpLCBpbWFnZXNFbGVtZW50cywgbmFt
ZUF0dHIsIG5hbWUpOwogfQogCi12b2lkIEhUTUxGb3JtQ29sbGVjdGlvbjo6dXBkYXRlTmFtZUNh
Y2hlKCkgY29uc3QKK3ZvaWQgSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb246OnVwZGF0ZU5hbWVD
YWNoZSgpIGNvbnN0CiB7CiAgICAgaWYgKGhhc05hbWVDYWNoZSgpKQogICAgICAgICByZXR1cm47
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29sbGVjdGlvbi5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbGxlY3Rpb24uY3BwCShyZXZp
c2lvbiAxMzM1NjgpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29sbGVjdGlvbi5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTEsMTYzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDE5OTkgTGFycyBLbm9sbCAoa25vbGxAa2RlLm9yZykKLSAqICAgICAgICAgICAoQykgMTk5OSBB
bnR0aSBLb2l2aXN0byAoa29pdmlzdG9Aa2RlLm9yZykKLSAqIENvcHlyaWdodCAoQykgMjAwMywg
MjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAxMCwgMjAxMSwgMjAxMiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlv
dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJt
cyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYXMgcHVibGlz
aGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogdmVyc2lvbiAy
IG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgot
ICoKLSAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdp
bGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4g
dGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUg
cmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
Ci0gKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAg
SWYgbm90LCB3cml0ZSB0bwotICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwg
NTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAqIEJvc3RvbiwgTUEgMDIxMTAtMTMw
MSwgVVNBLgotICoKLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiSFRNTEZv
cm1Db2xsZWN0aW9uLmgiCi0KLSNpbmNsdWRlICJIVE1MRmllbGRTZXRFbGVtZW50LmgiCi0jaW5j
bHVkZSAiSFRNTEZvcm1Db250cm9sRWxlbWVudC5oIgotI2luY2x1ZGUgIkhUTUxGb3JtRWxlbWVu
dC5oIgotI2luY2x1ZGUgIkhUTUxJbWFnZUVsZW1lbnQuaCIKLSNpbmNsdWRlICJIVE1MTmFtZXMu
aCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi11c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwot
Ci0vLyBTaW5jZSB0aGUgY29sbGVjdGlvbnMgYXJlIHRvIGJlICJsaXZlIiwgd2UgaGF2ZSB0byBk
byB0aGUKLS8vIGNhbGN1bGF0aW9uIGV2ZXJ5IHRpbWUgaWYgYW55dGhpbmcgaGFzIGNoYW5nZWQu
Ci0KLUhUTUxGb3JtQ29sbGVjdGlvbjo6SFRNTEZvcm1Db2xsZWN0aW9uKEVsZW1lbnQqIGJhc2Up
Ci0gICAgOiBIVE1MQ29sbGVjdGlvbihiYXNlLCBGb3JtQ29udHJvbHMsIE92ZXJyaWRlc0l0ZW1B
ZnRlcikKLXsKLSAgICBBU1NFUlQoYmFzZS0+aGFzVGFnTmFtZShmb3JtVGFnKSB8fCBiYXNlLT5o
YXNUYWdOYW1lKGZpZWxkc2V0VGFnKSk7Ci19Ci0KLVBhc3NSZWZQdHI8SFRNTEZvcm1Db2xsZWN0
aW9uPiBIVE1MRm9ybUNvbGxlY3Rpb246OmNyZWF0ZShFbGVtZW50KiBiYXNlKQotewotICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgSFRNTEZvcm1Db2xsZWN0aW9uKGJhc2UpKTsKLX0KLQotSFRNTEZv
cm1Db2xsZWN0aW9uOjp+SFRNTEZvcm1Db2xsZWN0aW9uKCkKLXsKLX0KLQotY29uc3QgVmVjdG9y
PEZvcm1Bc3NvY2lhdGVkRWxlbWVudCo+JiBIVE1MRm9ybUNvbGxlY3Rpb246OmZvcm1Db250cm9s
RWxlbWVudHMoKSBjb25zdAotewotICAgIEFTU0VSVChiYXNlKCkpOwotICAgIEFTU0VSVChiYXNl
KCktPmhhc1RhZ05hbWUoZm9ybVRhZykgfHwgYmFzZSgpLT5oYXNUYWdOYW1lKGZpZWxkc2V0VGFn
KSk7Ci0gICAgaWYgKGJhc2UoKS0+aGFzVGFnTmFtZShmb3JtVGFnKSkKLSAgICAgICAgcmV0dXJu
IHN0YXRpY19jYXN0PEhUTUxGb3JtRWxlbWVudCo+KGJhc2UoKSktPmFzc29jaWF0ZWRFbGVtZW50
cygpOwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxIVE1MRmllbGRTZXRFbGVtZW50Kj4oYmFzZSgp
KS0+YXNzb2NpYXRlZEVsZW1lbnRzKCk7Ci19Ci0KLWNvbnN0IFZlY3RvcjxIVE1MSW1hZ2VFbGVt
ZW50Kj4mIEhUTUxGb3JtQ29sbGVjdGlvbjo6Zm9ybUltYWdlRWxlbWVudHMoKSBjb25zdAotewot
ICAgIEFTU0VSVChiYXNlKCkpOwotICAgIEFTU0VSVChiYXNlKCktPmhhc1RhZ05hbWUoZm9ybVRh
ZykpOwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxIVE1MRm9ybUVsZW1lbnQqPihiYXNlKCkpLT5p
bWFnZUVsZW1lbnRzKCk7Ci19Ci0KLUVsZW1lbnQqIEhUTUxGb3JtQ29sbGVjdGlvbjo6dmlydHVh
bEl0ZW1BZnRlcih1bnNpZ25lZCYgb2Zmc2V0LCBFbGVtZW50KiBwcmV2aW91c0l0ZW0pIGNvbnN0
Ci17Ci0gICAgY29uc3QgVmVjdG9yPEZvcm1Bc3NvY2lhdGVkRWxlbWVudCo+JiBlbGVtZW50c0Fy
cmF5ID0gZm9ybUNvbnRyb2xFbGVtZW50cygpOwotICAgIGlmIChwcmV2aW91c0l0ZW0pCi0gICAg
ICAgIG9mZnNldCsrOwotICAgIHdoaWxlIChvZmZzZXQgPCBlbGVtZW50c0FycmF5LnNpemUoKSkg
ewotICAgICAgICBGb3JtQXNzb2NpYXRlZEVsZW1lbnQqIGVsZW1lbnQgPSBlbGVtZW50c0FycmF5
W29mZnNldF07Ci0gICAgICAgIGlmIChlbGVtZW50LT5pc0VudW1lcmF0YWJsZSgpKQotICAgICAg
ICAgICAgcmV0dXJuIHRvSFRNTEVsZW1lbnQoZWxlbWVudCk7Ci0gICAgICAgIG9mZnNldCsrOwot
ICAgIH0KLSAgICByZXR1cm4gMDsKLX0KLQotc3RhdGljIEhUTUxFbGVtZW50KiBmaXJzdE5hbWVk
SXRlbShjb25zdCBWZWN0b3I8Rm9ybUFzc29jaWF0ZWRFbGVtZW50Kj4mIGVsZW1lbnRzQXJyYXks
Ci0gICAgY29uc3QgVmVjdG9yPEhUTUxJbWFnZUVsZW1lbnQqPiogaW1hZ2VFbGVtZW50c0FycmF5
LCBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSwgY29uc3QgU3RyaW5nJiBuYW1lKQotewot
ICAgIEFTU0VSVChhdHRyTmFtZSA9PSBpZEF0dHIgfHwgYXR0ck5hbWUgPT0gbmFtZUF0dHIpOwot
Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGVsZW1lbnRzQXJyYXkuc2l6ZSgpOyArK2kp
IHsKLSAgICAgICAgSFRNTEVsZW1lbnQqIGVsZW1lbnQgPSB0b0hUTUxFbGVtZW50KGVsZW1lbnRz
QXJyYXlbaV0pOwotICAgICAgICBpZiAoZWxlbWVudHNBcnJheVtpXS0+aXNFbnVtZXJhdGFibGUo
KSAmJiBlbGVtZW50LT5mYXN0R2V0QXR0cmlidXRlKGF0dHJOYW1lKSA9PSBuYW1lKQotICAgICAg
ICAgICAgcmV0dXJuIGVsZW1lbnQ7Ci0gICAgfQotCi0gICAgaWYgKCFpbWFnZUVsZW1lbnRzQXJy
YXkpCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGlt
YWdlRWxlbWVudHNBcnJheS0+c2l6ZSgpOyArK2kpIHsKLSAgICAgICAgSFRNTEltYWdlRWxlbWVu
dCogZWxlbWVudCA9ICgqaW1hZ2VFbGVtZW50c0FycmF5KVtpXTsKLSAgICAgICAgaWYgKGVsZW1l
bnQtPmZhc3RHZXRBdHRyaWJ1dGUoYXR0ck5hbWUpID09IG5hbWUpCi0gICAgICAgICAgICByZXR1
cm4gZWxlbWVudDsKLSAgICB9Ci0KLSAgICByZXR1cm4gMDsKLX0KLQotTm9kZSogSFRNTEZvcm1D
b2xsZWN0aW9uOjpuYW1lZEl0ZW0oY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKSBjb25zdAotewot
ICAgIC8vIGh0dHA6Ly9tc2RuLm1pY3Jvc29mdC5jb20vd29ya3Nob3AvYXV0aG9yL2RodG1sL3Jl
ZmVyZW5jZS9tZXRob2RzL25hbWVkaXRlbS5hc3AKLSAgICAvLyBUaGlzIG1ldGhvZCBmaXJzdCBz
ZWFyY2hlcyBmb3IgYW4gb2JqZWN0IHdpdGggYSBtYXRjaGluZyBpZAotICAgIC8vIGF0dHJpYnV0
ZS4gSWYgYSBtYXRjaCBpcyBub3QgZm91bmQsIHRoZSBtZXRob2QgdGhlbiBzZWFyY2hlcyBmb3Ig
YW4KLSAgICAvLyBvYmplY3Qgd2l0aCBhIG1hdGNoaW5nIG5hbWUgYXR0cmlidXRlLCBidXQgb25s
eSBvbiB0aG9zZSBlbGVtZW50cwotICAgIC8vIHRoYXQgYXJlIGFsbG93ZWQgYSBuYW1lIGF0dHJp
YnV0ZS4KLSAgICBjb25zdCBWZWN0b3I8SFRNTEltYWdlRWxlbWVudCo+KiBpbWFnZXNFbGVtZW50
cyA9IGJhc2UoKS0+aGFzVGFnTmFtZShmaWVsZHNldFRhZykgPyAwIDogJmZvcm1JbWFnZUVsZW1l
bnRzKCk7Ci0gICAgaWYgKEhUTUxFbGVtZW50KiBpdGVtID0gZmlyc3ROYW1lZEl0ZW0oZm9ybUNv
bnRyb2xFbGVtZW50cygpLCBpbWFnZXNFbGVtZW50cywgaWRBdHRyLCBuYW1lKSkKLSAgICAgICAg
cmV0dXJuIGl0ZW07Ci0KLSAgICByZXR1cm4gZmlyc3ROYW1lZEl0ZW0oZm9ybUNvbnRyb2xFbGVt
ZW50cygpLCBpbWFnZXNFbGVtZW50cywgbmFtZUF0dHIsIG5hbWUpOwotfQotCi12b2lkIEhUTUxG
b3JtQ29sbGVjdGlvbjo6dXBkYXRlTmFtZUNhY2hlKCkgY29uc3QKLXsKLSAgICBpZiAoaGFzTmFt
ZUNhY2hlKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIEhhc2hTZXQ8QXRvbWljU3RyaW5nSW1w
bCo+IGZvdW5kSW5wdXRFbGVtZW50czsKLQotICAgIGNvbnN0IFZlY3RvcjxGb3JtQXNzb2NpYXRl
ZEVsZW1lbnQqPiYgZWxlbWVudHNBcnJheSA9IGZvcm1Db250cm9sRWxlbWVudHMoKTsKLQotICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBlbGVtZW50c0FycmF5LnNpemUoKTsgKytpKSB7Ci0g
ICAgICAgIEZvcm1Bc3NvY2lhdGVkRWxlbWVudCogYXNzb2NpYXRlZEVsZW1lbnQgPSBlbGVtZW50
c0FycmF5W2ldOwotICAgICAgICBpZiAoYXNzb2NpYXRlZEVsZW1lbnQtPmlzRW51bWVyYXRhYmxl
KCkpIHsKLSAgICAgICAgICAgIEhUTUxFbGVtZW50KiBlbGVtZW50ID0gdG9IVE1MRWxlbWVudChh
c3NvY2lhdGVkRWxlbWVudCk7Ci0gICAgICAgICAgICBjb25zdCBBdG9taWNTdHJpbmcmIGlkQXR0
clZhbCA9IGVsZW1lbnQtPmdldElkQXR0cmlidXRlKCk7Ci0gICAgICAgICAgICBjb25zdCBBdG9t
aWNTdHJpbmcmIG5hbWVBdHRyVmFsID0gZWxlbWVudC0+Z2V0TmFtZUF0dHJpYnV0ZSgpOwotICAg
ICAgICAgICAgaWYgKCFpZEF0dHJWYWwuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICAgICAgYXBw
ZW5kSWRDYWNoZShpZEF0dHJWYWwsIGVsZW1lbnQpOwotICAgICAgICAgICAgICAgIGZvdW5kSW5w
dXRFbGVtZW50cy5hZGQoaWRBdHRyVmFsLmltcGwoKSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAg
ICAgICBpZiAoIW5hbWVBdHRyVmFsLmlzRW1wdHkoKSAmJiBpZEF0dHJWYWwgIT0gbmFtZUF0dHJW
YWwpIHsKLSAgICAgICAgICAgICAgICBhcHBlbmROYW1lQ2FjaGUobmFtZUF0dHJWYWwsIGVsZW1l
bnQpOwotICAgICAgICAgICAgICAgIGZvdW5kSW5wdXRFbGVtZW50cy5hZGQobmFtZUF0dHJWYWwu
aW1wbCgpKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLQotICAgIGlmIChiYXNl
KCktPmhhc1RhZ05hbWUoZm9ybVRhZykpIHsKLSAgICAgICAgY29uc3QgVmVjdG9yPEhUTUxJbWFn
ZUVsZW1lbnQqPiYgaW1hZ2VFbGVtZW50c0FycmF5ID0gZm9ybUltYWdlRWxlbWVudHMoKTsKLSAg
ICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGltYWdlRWxlbWVudHNBcnJheS5zaXplKCk7
ICsraSkgewotICAgICAgICAgICAgSFRNTEltYWdlRWxlbWVudCogZWxlbWVudCA9IGltYWdlRWxl
bWVudHNBcnJheVtpXTsKLSAgICAgICAgICAgIGNvbnN0IEF0b21pY1N0cmluZyYgaWRBdHRyVmFs
ID0gZWxlbWVudC0+Z2V0SWRBdHRyaWJ1dGUoKTsKLSAgICAgICAgICAgIGNvbnN0IEF0b21pY1N0
cmluZyYgbmFtZUF0dHJWYWwgPSBlbGVtZW50LT5nZXROYW1lQXR0cmlidXRlKCk7Ci0gICAgICAg
ICAgICBpZiAoIWlkQXR0clZhbC5pc0VtcHR5KCkgJiYgIWZvdW5kSW5wdXRFbGVtZW50cy5jb250
YWlucyhpZEF0dHJWYWwuaW1wbCgpKSkKLSAgICAgICAgICAgICAgICBhcHBlbmRJZENhY2hlKGlk
QXR0clZhbCwgZWxlbWVudCk7Ci0gICAgICAgICAgICBpZiAoIW5hbWVBdHRyVmFsLmlzRW1wdHko
KSAmJiBpZEF0dHJWYWwgIT0gbmFtZUF0dHJWYWwgJiYgIWZvdW5kSW5wdXRFbGVtZW50cy5jb250
YWlucyhuYW1lQXR0clZhbC5pbXBsKCkpKQotICAgICAgICAgICAgICAgIGFwcGVuZE5hbWVDYWNo
ZShuYW1lQXR0clZhbCwgZWxlbWVudCk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBzZXRIYXNO
YW1lQ2FjaGUoKTsKLX0KLQotfQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVs
ZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVu
dC5oCShyZXZpc2lvbiAxMzM1NjgpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxl
bWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw3ICszOCw2IEBACiBjbGFzcyBIVE1MRm9ybUNv
bnRyb2xFbGVtZW50OwogY2xhc3MgSFRNTEltYWdlRWxlbWVudDsKIGNsYXNzIEhUTUxJbnB1dEVs
ZW1lbnQ7Ci1jbGFzcyBIVE1MRm9ybUNvbGxlY3Rpb247CiBjbGFzcyBUZXh0RW5jb2Rpbmc7CiAK
IGNsYXNzIEhUTUxGb3JtRWxlbWVudCA6IHB1YmxpYyBIVE1MRWxlbWVudCB7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxGaWVsZFNldEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZpZWxkU2V0RWxlbWVudC5jcHAJKHJldmlzaW9uIDEzMzU2
OCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZpZWxkU2V0RWxlbWVudC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTI1LDcgKzI1LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRl
ICJIVE1MRmllbGRTZXRFbGVtZW50LmgiCiAKLSNpbmNsdWRlICJIVE1MRm9ybUNvbGxlY3Rpb24u
aCIKKyNpbmNsdWRlICJIVE1MQ29sbGVjdGlvbi5oIgogI2luY2x1ZGUgIkhUTUxMZWdlbmRFbGVt
ZW50LmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiSFRNTE9iamVjdEVsZW1l
bnQuaCIKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rp
b24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbHND
b2xsZWN0aW9uLmgJKHJldmlzaW9uIDEzMzU1MSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEZvcm1Db250cm9sc0NvbGxlY3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMjAsOCArMjAsOCBA
QAogICoKICAqLwogCi0jaWZuZGVmIEhUTUxGb3JtQ29sbGVjdGlvbl9oCi0jZGVmaW5lIEhUTUxG
b3JtQ29sbGVjdGlvbl9oCisjaWZuZGVmIEhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uX2gKKyNk
ZWZpbmUgSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb25faAogCiAjaW5jbHVkZSAiSFRNTENvbGxl
Y3Rpb24uaCIKIApAQCAtMzQsMTYgKzM0LDE2IEBACiAvLyBUaGlzIGNsYXNzIGlzIGp1c3QgYSBi
aWcgaGFjayB0byBmaW5kIGZvcm0gZWxlbWVudHMgZXZlbiBpbiBtYWxmb3JtZWQgSFRNTCBlbGVt
ZW50cy4KIC8vIFRoZSBmYW1vdXMgPHRhYmxlPjx0cj48Zm9ybT48dGQ+IHByb2JsZW0uCiAKLWNs
YXNzIEhUTUxGb3JtQ29sbGVjdGlvbiA6IHB1YmxpYyBIVE1MQ29sbGVjdGlvbiB7CitjbGFzcyBI
VE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbiA6IHB1YmxpYyBIVE1MQ29sbGVjdGlvbiB7CiBwdWJs
aWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SFRNTEZvcm1Db2xsZWN0aW9uPiBjcmVhdGUoRWxl
bWVudCopOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPEhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9u
PiBjcmVhdGUoRWxlbWVudCopOwogCi0gICAgdmlydHVhbCB+SFRNTEZvcm1Db2xsZWN0aW9uKCk7
CisgICAgdmlydHVhbCB+SFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24oKTsKIAogICAgIHZpcnR1
YWwgTm9kZSogbmFtZWRJdGVtKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSkgY29uc3Q7CiAKIHBy
aXZhdGU6Ci0gICAgSFRNTEZvcm1Db2xsZWN0aW9uKEVsZW1lbnQqKTsKKyAgICBIVE1MRm9ybUNv
bnRyb2xzQ29sbGVjdGlvbihFbGVtZW50Kik7CiAKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlTmFt
ZUNhY2hlKCkgY29uc3Q7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENvbGxlY3Rp
b24uaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENvbGxlY3Rpb24u
aWRsCShyZXZpc2lvbiAxMzM1NjgpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDb2xsZWN0
aW9uLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjgsNyArMjgsNyBAQAogXSBpbnRlcmZhY2UgSFRN
TENvbGxlY3Rpb24gewogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIGxlbmd0
aDsKICAgICBOb2RlIGl0ZW0oaW4gW09wdGlvbmFsPURlZmF1bHRJc1VuZGVmaW5lZF0gdW5zaWdu
ZWQgbG9uZyBpbmRleCk7Ci0gICAgW0N1c3RvbV0gTm9kZSBuYW1lZEl0ZW0oaW4gW09wdGlvbmFs
PURlZmF1bHRJc1VuZGVmaW5lZF0gRE9NU3RyaW5nIG5hbWUpOworICAgIE5vZGUgbmFtZWRJdGVt
KGluIFtPcHRpb25hbD1EZWZhdWx0SXNVbmRlZmluZWRdIERPTVN0cmluZyBuYW1lKTsKIAogI2lm
IGRlZmluZWQoTEFOR1VBR0VfT0JKRUNUSVZFX0MpICYmIExBTkdVQUdFX09CSkVDVElWRV9DCiAg
ICAgTm9kZUxpc3QgdGFncyhpbiBbT3B0aW9uYWw9RGVmYXVsdElzVW5kZWZpbmVkXSBET01TdHJp
bmcgbmFtZSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRpb25zQ29sbGVjdGlv
bi5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0aW9uc0NvbGxl
Y3Rpb24uaWRsCShyZXZpc2lvbiAxMzM1NjgpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxP
cHRpb25zQ29sbGVjdGlvbi5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTIwLDIwICsyMCwyMiBAQAog
CiBbCiAgICAgSlNHZW5lcmF0ZVRvTmF0aXZlT2JqZWN0LAotICAgIEN1c3RvbUluZGV4ZWRTZXR0
ZXIKKyAgICBDdXN0b21JbmRleGVkU2V0dGVyLAorICAgIE5hbWVkR2V0dGVyCiBdIGludGVyZmFj
ZSBIVE1MT3B0aW9uc0NvbGxlY3Rpb24gOiBIVE1MQ29sbGVjdGlvbiB7Ci0gICAgICAgICAgICAg
YXR0cmlidXRlIGxvbmcgc2VsZWN0ZWRJbmRleDsKLSAgICAgICAgICAgICBbQ3VzdG9tXSBhdHRy
aWJ1dGUgdW5zaWduZWQgbG9uZyBsZW5ndGgKLSAgICAgICAgICAgICAgICAgICAgc2V0dGVyIHJh
aXNlcyAoRE9NRXhjZXB0aW9uKTsKKyAgICBhdHRyaWJ1dGUgbG9uZyBzZWxlY3RlZEluZGV4Owor
ICAgIFtDdXN0b21dIGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIGxlbmd0aAorICAgICAgICBzZXR0
ZXIgcmFpc2VzIChET01FeGNlcHRpb24pOwogCisgICAgW0N1c3RvbV0gTm9kZSBuYW1lZEl0ZW0o
aW4gW09wdGlvbmFsPURlZmF1bHRJc1VuZGVmaW5lZF0gRE9NU3RyaW5nIG5hbWUpOworCiAgICAg
W0N1c3RvbV0gdm9pZCBhZGQoaW4gW09wdGlvbmFsPURlZmF1bHRJc1VuZGVmaW5lZF0gSFRNTE9w
dGlvbkVsZW1lbnQgb3B0aW9uLCAKICAgICAgICAgICAgICAgICAgICAgICBpbiBbT3B0aW9uYWxd
IHVuc2lnbmVkIGxvbmcgaW5kZXgpCiAgICAgICAgICByYWlzZXMgKERPTUV4Y2VwdGlvbik7CiAg
ICAgW0N1c3RvbV0gdm9pZCByZW1vdmUoaW4gW09wdGlvbmFsPURlZmF1bHRJc1VuZGVmaW5lZF0g
dW5zaWduZWQgbG9uZyBpbmRleCk7CiAKICNpZiBkZWZpbmVkKExBTkdVQUdFX09CSkVDVElWRV9D
KSAmJiBMQU5HVUFHRV9PQkpFQ1RJVkVfQwotICAgIE5vZGUgaXRlbShpbiB1bnNpZ25lZCBsb25n
IGluZGV4KTsgCi0gICAgTm9kZSBuYW1lZEl0ZW0oaW4gRE9NU3RyaW5nIG5hbWUpOyAKKyAgICBO
b2RlIGl0ZW0oaW4gdW5zaWduZWQgbG9uZyBpbmRleCk7CiAjZW5kaWYKIH07CiAKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZpZWxkU2V0RWxlbWVudC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZpZWxkU2V0RWxlbWVudC5oCShyZXZpc2lvbiAxMzM1Njgp
CisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGaWVsZFNldEVsZW1lbnQuaAkod29ya2luZyBj
b3B5KQpAQCAtMzEsNyArMzEsNiBAQAogCiBjbGFzcyBGb3JtQXNzb2NpYXRlZEVsZW1lbnQ7CiBj
bGFzcyBIVE1MQ29sbGVjdGlvbjsKLWNsYXNzIEhUTUxGb3JtQ29sbGVjdGlvbjsKIAogY2xhc3Mg
SFRNTEZpZWxkU2V0RWxlbWVudCA6IHB1YmxpYyBIVE1MRm9ybUNvbnRyb2xFbGVtZW50IHsKIHB1
YmxpYzoKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAxMzM1NjgpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNDQxLDYgKzQ0MSw3
IEBACiAgICAgaHRtbC9IVE1MRW1iZWRFbGVtZW50LmlkbAogICAgIGh0bWwvSFRNTEZpZWxkU2V0
RWxlbWVudC5pZGwKICAgICBodG1sL0hUTUxGb250RWxlbWVudC5pZGwKKyAgICBodG1sL0hUTUxG
b3JtQ29udHJvbHNDb2xsZWN0aW9uLmlkbAogICAgIGh0bWwvSFRNTEZvcm1FbGVtZW50LmlkbAog
ICAgIGh0bWwvSFRNTEZyYW1lRWxlbWVudC5pZGwKICAgICBodG1sL0hUTUxGcmFtZVNldEVsZW1l
bnQuaWRsCkBAIC0xMzczLDcgKzEzNzQsNyBAQAogICAgIGh0bWwvSFRNTEVtYmVkRWxlbWVudC5j
cHAKICAgICBodG1sL0hUTUxGaWVsZFNldEVsZW1lbnQuY3BwCiAgICAgaHRtbC9IVE1MRm9udEVs
ZW1lbnQuY3BwCi0gICAgaHRtbC9IVE1MRm9ybUNvbGxlY3Rpb24uY3BwCisgICAgaHRtbC9IVE1M
Rm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5jcHAKICAgICBodG1sL0hUTUxGb3JtQ29udHJvbEVsZW1l
bnQuY3BwCiAgICAgaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50V2l0aFN0YXRlLmNwcAogICAg
IGh0bWwvSFRNTEZvcm1FbGVtZW50LmNwcApJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTMzNTY4KQorKysgU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNv
cHkpCkBAIC0zNzQyLDYgKzM3NDIsNyBAQAogCQk5QTFCNkY5NzE1ODg2OUM4MDAxMUE4QzQgLyog
SlNET01TdHJpbmdMaXN0Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDlBMUI2Rjk2MTU4ODY5QzgwMDExQThDNCAvKiBKU0RPTVN0cmluZ0xp
c3RDdXN0b20uY3BwICovOyB9OwogCQk5QjBGQjE5MTE0MERCNTc5MDAyMjU4OEYgLyogSFRUUFZh
bGlkYXRpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gOUIwRkIxOEYxNDBEQjU3OTAwMjI1ODhGIC8qIEhUVFBWYWxpZGF0aW9uLmNwcCAqLzsgfTsK
IAkJOUIwRkIxOTIxNDBEQjU3OTAwMjI1ODhGIC8qIEhUVFBWYWxpZGF0aW9uLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QjBGQjE5MDE0MERCNTc5MDAy
MjU4OEYgLyogSFRUUFZhbGlkYXRpb24uaCAqLzsgfTsKKwkJOUIxQUIwN0MxNjQ4QzdDNDAwNTFG
M0YyIC8qIEpTSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb25DdXN0b20uY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUIxQUIwN0IxNjQ4QzdDNDAwNTFG
M0YyIC8qIEpTSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb25DdXN0b20uY3BwICovOyB9OwogCQk5
QjI0REU4RTE1MTk0Qjk1MDBDNTlDMjcgLyogSFRNTEJESUVsZW1lbnQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlCMjRERThDMTUxOTRCOTUwMEM1OUMy
NyAvKiBIVE1MQkRJRWxlbWVudC5oICovOyB9OwogCQk5QjJCN0FDMTE1MDk4NTBBMDA4OTMyQ0Mg
LyogTWljcm9EYXRhSXRlbVZhbHVlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDlCMkY3Q0Y3MTQ1NjIxMjAwMDdGOEI1MCAvKiBNaWNyb0RhdGFJdGVt
VmFsdWUuY3BwICovOyB9OwogCQk5QjJEOEE3OTE0OTk3Q0NGMDBFQ0VGM0UgLyogVW5kb1N0ZXAu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlCMkQ4QTc4
MTQ5OTdDQ0YwMEVDRUYzRSAvKiBVbmRvU3RlcC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0zNzYwLDYgKzM3NjEsOCBAQAogCQk5QkM2QzIxQzEz
Q0NDOTdCMDA4RTAzMzcgLyogSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUJDNkMyMUExM0NDQzk3QjAw
OEUwMzM3IC8qIEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmNwcCAqLzsgfTsKIAkJOUJEMEJG
OTMxMkE0MkJGNTAwNzJGRDQzIC8qIFNjb3BlZEV2ZW50UXVldWUuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlCRDBCRjkxMTJBNDJCRjUwMDcyRkQ0MyAv
KiBTY29wZWRFdmVudFF1ZXVlLmggKi87IH07CiAJCTlCRDBCRjk0MTJBNDJCRjUwMDcyRkQ0MyAv
KiBTY29wZWRFdmVudFF1ZXVlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDlCRDBCRjkyMTJBNDJCRjUwMDcyRkQ0MyAvKiBTY29wZWRFdmVudFF1ZXVl
LmNwcCAqLzsgfTsKKwkJOUJGOUE4ODAxNjQ4REQyRjAwMUM2QjIzIC8qIEpTSFRNTEZvcm1Db250
cm9sc0NvbGxlY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gOUJGOUE4N0UxNjQ4REQyRjAwMUM2QjIzIC8qIEpTSFRNTEZvcm1Db250cm9sc0Nv
bGxlY3Rpb24uY3BwICovOyB9OworCQk5QkY5QTg4MTE2NDhERDJGMDAxQzZCMjMgLyogSlNIVE1M
Rm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gOUJGOUE4N0YxNjQ4REQyRjAwMUM2QjIzIC8qIEpTSFRNTEZvcm1Db250
cm9sc0NvbGxlY3Rpb24uaCAqLzsgfTsKIAkJOUYwRDZCMkUxMjFCRkVCQTAwNkMwMjg4IC8qIElu
c3BlY3RvclByb2ZpbGVyQWdlbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gOUYwRDZCMkMxMjFCRkVCQTAwNkMwMjg4IC8qIEluc3BlY3RvclByb2Zp
bGVyQWdlbnQuY3BwICovOyB9OwogCQk5RjBENkIyRjEyMUJGRUJBMDA2QzAyODggLyogSW5zcGVj
dG9yUHJvZmlsZXJBZ2VudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gOUYwRDZCMkQxMjFCRkVCQTAwNkMwMjg4IC8qIEluc3BlY3RvclByb2ZpbGVyQWdl
bnQuaCAqLzsgfTsKIAkJOUYzQjk0N0UxMjI0MTc1ODAwNTMwNEU3IC8qIFNjcmlwdEhlYXBTbmFw
c2hvdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUYz
Qjk0N0QxMjI0MTc1ODAwNTMwNEU3IC8qIFNjcmlwdEhlYXBTbmFwc2hvdC5oICovOyB9OwpAQCAt
NDM0Nyw4ICs0MzUwLDggQEAKIAkJQThEMDY1QUUwQTI0NDZDRDAwNUU3MjAzIC8qIEpTSFRNTEZv
cm1FbGVtZW50Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEE4RDA2NUFEMEEyNDQ2Q0QwMDVFNzIwMyAvKiBKU0hUTUxGb3JtRWxlbWVudEN1
c3RvbS5jcHAgKi87IH07CiAJCUE4RDA2QjM5MEEyNjVEQ0QwMDVFNzIwMyAvKiBIVE1MTmFtZXMu
aCBpbiBDb3B5IEdlbmVyYXRlZCBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEE4RDA2QjM3MEEyNjVEQ0QwMDVFNzIwMyAvKiBIVE1MTmFtZXMuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9ICgpOyB9OyB9OwogCQlBOEQwNkIzQTBBMjY1RENEMDA1RTcyMDMg
LyogSFRNTE5hbWVzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEE4RDA2QjM4MEEyNjVEQ0QwMDVFNzIwMyAvKiBIVE1MTmFtZXMuY3BwICovOyB9Owot
CQlBOERGM0ZDRTA5N0ZBMEZDMDA1Mjk4MUIgLyogSFRNTEZvcm1Db2xsZWN0aW9uLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBOERGM0ZDNjA5N0ZBMEZC
MDA1Mjk4MUIgLyogSFRNTEZvcm1Db2xsZWN0aW9uLmggKi87IH07Ci0JCUE4REYzRkNGMDk3RkEw
RkMwMDUyOTgxQiAvKiBIVE1MRm9ybUNvbGxlY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThERjNGQzcwOTdGQTBGQjAwNTI5ODFCIC8qIEhU
TUxGb3JtQ29sbGVjdGlvbi5jcHAgKi87IH07CisJCUE4REYzRkNFMDk3RkEwRkMwMDUyOTgxQiAv
KiBIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQThERjNGQzYwOTdGQTBGQjAwNTI5ODFCIC8qIEhUTUxGb3Jt
Q29udHJvbHNDb2xsZWN0aW9uLmggKi87IH07CisJCUE4REYzRkNGMDk3RkEwRkMwMDUyOTgxQiAv
KiBIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBOERGM0ZDNzA5N0ZBMEZCMDA1Mjk4MUIgLyogSFRNTEZv
cm1Db250cm9sc0NvbGxlY3Rpb24uY3BwICovOyB9OwogCQlBOERGM0ZEMDA5N0ZBMEZDMDA1Mjk4
MUIgLyogSFRNTENvbGxlY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEE4REYzRkM4MDk3RkEwRkIwMDUyOTgxQiAvKiBIVE1MQ29sbGVjdGlvbi5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUE4REYz
RkQxMDk3RkEwRkMwMDUyOTgxQiAvKiBIVE1MQ29sbGVjdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBOERGM0ZDOTA5N0ZBMEZCMDA1Mjk4MUIg
LyogSFRNTENvbGxlY3Rpb24uY3BwICovOyB9OwogCQlBOERGM0ZEMjA5N0ZBMEZDMDA1Mjk4MUIg
LyogSFRNTEJhc2VGb250RWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQThERjNGQ0EwOTdGQTBGQjAwNTI5ODFCIC8qIEhUTUxCYXNlRm9udEVs
ZW1lbnQuaCAqLzsgfTsKQEAgLTExMDA4LDYgKzExMDExLDggQEAKIAkJOUExQjZGOTYxNTg4NjlD
ODAwMTFBOEM0IC8qIEpTRE9NU3RyaW5nTGlzdEN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBKU0RPTVN0cmluZ0xpc3RDdXN0b20uY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk5QjBGQjE4RjE0MERCNTc5MDAyMjU4OEYgLyogSFRUUFZhbGlk
YXRpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSFRUUFZhbGlk
YXRpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5QjBGQjE5MDE0MERCNTc5
MDAyMjU4OEYgLyogSFRUUFZhbGlkYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSFRUUFZhbGlkYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOUIx
QUIwNzkxNjQ4QzY5RDAwNTFGM0YyIC8qIEhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmlkbCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBh
dGggPSBIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTlCMUFCMDdCMTY0OEM3QzQwMDUxRjNGMiAvKiBKU0hUTUxGb3JtQ29udHJvbHND
b2xsZWN0aW9uQ3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEpTSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb25DdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk5QjI0REU4QzE1MTk0Qjk1MDBDNTlDMjcgLyogSFRNTEJESUVsZW1lbnQu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSFRNTEJESUVsZW1lbnQuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUIyRDhBNzgxNDk5N0NDRjAwRUNFRjNFIC8qIFVu
ZG9TdGVwLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVuZG9TdGVwLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlCMkY3Q0Y3MTQ1NjIxMjAwMDdGOEI1MCAvKiBN
aWNyb0RhdGFJdGVtVmFsdWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gTWljcm9EYXRhSXRlbVZhbHVlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTExMDI3LDYgKzExMDMyLDggQEAKIAkJOUJDNkMyMUExM0NDQzk3QjAwOEUwMzM3IC8qIEhUTUxU
ZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJOUJEMEJGOTExMkE0MkJGNTAwNzJGRDQzIC8qIFNjb3BlZEV2ZW50UXVldWUu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2NvcGVkRXZlbnRRdWV1ZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5QkQwQkY5MjEyQTQyQkY1MDA3MkZENDMgLyog
U2NvcGVkRXZlbnRRdWV1ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBTY29wZWRFdmVudFF1ZXVlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOUJG
OUE4N0UxNjQ4REQyRjAwMUM2QjIzIC8qIEpTSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNIVE1MRm9ybUNvbnRyb2xz
Q29sbGVjdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTlCRjlBODdGMTY0
OEREMkYwMDFDNkIyMyAvKiBKU0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUYwRDZCMkMxMjFCRkVCQTAwNkMwMjg4IC8q
IEluc3BlY3RvclByb2ZpbGVyQWdlbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gSW5zcGVjdG9yUHJvZmlsZXJBZ2VudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTlGMEQ2QjJEMTIxQkZFQkEwMDZDMDI4OCAvKiBJbnNwZWN0b3JQcm9maWxlckFn
ZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluc3BlY3RvclByb2ZpbGVy
QWdlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUYzQjk0N0QxMjI0MTc1ODAw
NTMwNEU3IC8qIFNjcmlwdEhlYXBTbmFwc2hvdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBTY3JpcHRIZWFwU25hcHNob3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTExNTEyLDggKzExNTE5LDggQEAKIAkJQThEMDY1QUQwQTI0NDZDRDAwNUU3MjAzIC8qIEpT
SFRNTEZvcm1FbGVtZW50Q3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEpTSFRNTEZvcm1FbGVtZW50Q3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQThEMDZCMzcwQTI2NURDRDAwNUU3MjAzIC8qIEhUTUxOYW1lcy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSFRNTE5hbWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUE4RDA2QjM4MEEyNjVEQ0QwMDVFNzIwMyAvKiBIVE1MTmFtZXMuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEhUTUxOYW1lcy5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUE4REYzRkM2MDk3RkEwRkIwMDUyOTgxQiAvKiBIVE1M
Rm9ybUNvbGxlY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhUTUxG
b3JtQ29sbGVjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlBOERGM0ZDNzA5
N0ZBMEZCMDA1Mjk4MUIgLyogSFRNTEZvcm1Db2xsZWN0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBIVE1MRm9ybUNvbGxlY3Rpb24uY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlBOERGM0ZDNjA5N0ZBMEZCMDA1Mjk4MUIgLyogSFRNTEZvcm1D
b250cm9sc0NvbGxlY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhU
TUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUE4REYzRkM3MDk3RkEwRkIwMDUyOTgxQiAvKiBIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSFRNTEZvcm1Db250cm9s
c0NvbGxlY3Rpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBOERGM0ZDODA5
N0ZBMEZCMDA1Mjk4MUIgLyogSFRNTENvbGxlY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEhUTUxDb2xsZWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUE4REYzRkM5MDk3RkEwRkIwMDUyOTgxQiAvKiBIVE1MQ29sbGVjdGlvbi5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSFRNTENvbGxlY3Rpb24uY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBOERGM0ZDQTA5N0ZBMEZCMDA1Mjk4MUIgLyogSFRN
TEJhc2VGb250RWxlbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSFRN
TEJhc2VGb250RWxlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTc1MjUs
OCArMTc1MzIsOSBAQAogCQkJCUE4Q0ZGNzk4MEExNTY5NzgwMDBBNDIzNCAvKiBIVE1MRm9udEVs
ZW1lbnQuY3BwICovLAogCQkJCUE4Q0ZGNzlDMEExNTY5NzgwMDBBNDIzNCAvKiBIVE1MRm9udEVs
ZW1lbnQuaCAqLywKIAkJCQkxQUUyQTlGNTBBMUNEQTU3MDBCNDJCMjUgLyogSFRNTEZvbnRFbGVt
ZW50LmlkbCAqLywKLQkJCQlBOERGM0ZDNzA5N0ZBMEZCMDA1Mjk4MUIgLyogSFRNTEZvcm1Db2xs
ZWN0aW9uLmNwcCAqLywKLQkJCQlBOERGM0ZDNjA5N0ZBMEZCMDA1Mjk4MUIgLyogSFRNTEZvcm1D
b2xsZWN0aW9uLmggKi8sCisJCQkJQThERjNGQzcwOTdGQTBGQjAwNTI5ODFCIC8qIEhUTUxGb3Jt
Q29udHJvbHNDb2xsZWN0aW9uLmNwcCAqLywKKwkJCQlBOERGM0ZDNjA5N0ZBMEZCMDA1Mjk4MUIg
LyogSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uaCAqLywKKwkJCQk5QjFBQjA3OTE2NDhDNjlE
MDA1MUYzRjIgLyogSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uaWRsICovLAogCQkJCUE4MTM2
OUIzMDk3Mzc0RjUwMEQ3NDQ2MyAvKiBIVE1MRm9ybUNvbnRyb2xFbGVtZW50LmNwcCAqLywKIAkJ
CQlBODEzNjlCMjA5NzM3NEY1MDBENzQ0NjMgLyogSFRNTEZvcm1Db250cm9sRWxlbWVudC5oICov
LAogCQkJCUUxNEYxQzQyMTRCNURBQzYwMEVBOTAwOSAvKiBIVE1MRm9ybUNvbnRyb2xFbGVtZW50
V2l0aFN0YXRlLmNwcCAqLywKQEAgLTE4NDE0LDYgKzE4NDIyLDggQEAKIAkJCQkxQUUyQUExMzBB
MUNEQUIzMDBCNDJCMjUgLyogSlNIVE1MRmllbGRTZXRFbGVtZW50LmggKi8sCiAJCQkJMUFFMkFB
MTQwQTFDREFCMzAwQjQyQjI1IC8qIEpTSFRNTEZvbnRFbGVtZW50LmNwcCAqLywKIAkJCQkxQUUy
QUExNTBBMUNEQUIzMDBCNDJCMjUgLyogSlNIVE1MRm9udEVsZW1lbnQuaCAqLywKKwkJCQk5QkY5
QTg3RTE2NDhERDJGMDAxQzZCMjMgLyogSlNIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5jcHAg
Ki8sCisJCQkJOUJGOUE4N0YxNjQ4REQyRjAwMUM2QjIzIC8qIEpTSFRNTEZvcm1Db250cm9sc0Nv
bGxlY3Rpb24uaCAqLywKIAkJCQlBOEQwNjRGOTBBMjNDMENDMDA1RTcyMDMgLyogSlNIVE1MRm9y
bUVsZW1lbnQuY3BwICovLAogCQkJCUE4RDA2NEZBMEEyM0MwQ0MwMDVFNzIwMyAvKiBKU0hUTUxG
b3JtRWxlbWVudC5oICovLAogCQkJCUJDNDkxOEMwMEJGRUEwNTAwMDlENjMxNiAvKiBKU0hUTUxG
cmFtZUVsZW1lbnQuY3BwICovLApAQCAtMjA0NTgsNiArMjA0NjgsNyBAQAogCQkJCUJDNTgyM0Y0
MEMwQTk4REYwMDUzRjFCNSAvKiBKU0hUTUxFbGVtZW50Q3VzdG9tLmNwcCAqLywKIAkJCQlCQzZE
NDRCRDBDMDdFRkI2MDA3MkQyQzkgLyogSlNIVE1MRW1iZWRFbGVtZW50Q3VzdG9tLmNwcCAqLywK
IAkJCQlFMUFEMTQyMDEyOTVFQTZCMDBBQ0E5ODkgLyogSlNIVE1MRW1iZWRFbGVtZW50Q3VzdG9t
LmggKi8sCisJCQkJOUIxQUIwN0IxNjQ4QzdDNDAwNTFGM0YyIC8qIEpTSFRNTEZvcm1Db250cm9s
c0NvbGxlY3Rpb25DdXN0b20uY3BwICovLAogCQkJCUE4RDA2NUFEMEEyNDQ2Q0QwMDVFNzIwMyAv
KiBKU0hUTUxGb3JtRWxlbWVudEN1c3RvbS5jcHAgKi8sCiAJCQkJQkMyRUQ3QTQwQzZDMEYzNjAw
OTIwQkZGIC8qIEpTSFRNTEZyYW1lRWxlbWVudEN1c3RvbS5jcHAgKi8sCiAJCQkJQkNENDFBQkEw
QzA2MERFODAwQzBFNDQ2IC8qIEpTSFRNTEZyYW1lU2V0RWxlbWVudEN1c3RvbS5jcHAgKi8sCkBA
IC0yMzcwOSw3ICsyMzcyMCw3IEBACiAJCQkJQTgxMzY5RDQwOTczNzRGNjAwRDc0NDYzIC8qIEhU
TUxGaWVsZFNldEVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4Q0ZGN0E2MEExNTY5Nzgw
MDBBNDIzNCAvKiBIVE1MRm9udEVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTk3N0IzODZG
MTIyODgzRTkwMEI4MUZGOCAvKiBIVE1MRm9ybWF0dGluZ0VsZW1lbnRMaXN0LmggaW4gSGVhZGVy
cyAqLywKLQkJCQlBOERGM0ZDRTA5N0ZBMEZDMDA1Mjk4MUIgLyogSFRNTEZvcm1Db2xsZWN0aW9u
LmggaW4gSGVhZGVycyAqLywKKwkJCQlBOERGM0ZDRTA5N0ZBMEZDMDA1Mjk4MUIgLyogSFRNTEZv
cm1Db250cm9sc0NvbGxlY3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUE4MTM2OUNFMDk3Mzc0
RjYwMEQ3NDQ2MyAvKiBIVE1MRm9ybUNvbnRyb2xFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJ
CQlFMTRGMUM0NTE0QjVEQUM2MDBFQTkwMDkgLyogSFRNTEZvcm1Db250cm9sRWxlbWVudFdpdGhT
dGF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTgxMzY5RDAwOTczNzRGNjAwRDc0NDYzIC8qIEhU
TUxGb3JtRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNTY4Nyw2ICsyNTY5OCw3IEBACiAJ
CQkJM0ZGRkY5QTkxNTlEOUE1NTAwMjBCQkQ1IC8qIFdlYktpdENTU1ZpZXdwb3J0UnVsZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJOTNDMzhCRkYxNjQ0NzNDNzAwMDkxRUIyIC8qIFNjcm9sbGluZ1N0
YXRlRml4ZWROb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQk5M0MzOEMwMzE2NDQ3M0REMDAwOTFF
QjIgLyogU2Nyb2xsaW5nVHJlZUZpeGVkTm9kZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJOUJGOUE4
ODExNjQ4REQyRjAwMUM2QjIzIC8qIEpTSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uaCBpbiBI
ZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3Npbmcg
PSAwOwogCQl9OwpAQCAtMjY5MTYsNyArMjY5MjgsNyBAQAogCQkJCUE4MTM2OUQ1MDk3Mzc0RjYw
MEQ3NDQ2MyAvKiBIVE1MRmllbGRTZXRFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4
Q0ZGN0EyMEExNTY5NzgwMDBBNDIzNCAvKiBIVE1MRm9udEVsZW1lbnQuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJOTc3QjM4NkUxMjI4ODNFOTAwQjgxRkY4IC8qIEhUTUxGb3JtYXR0aW5nRWxlbWVu
dExpc3QuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJQThERjNGQ0YwOTdGQTBGQzAwNTI5ODFCIC8q
IEhUTUxGb3JtQ29sbGVjdGlvbi5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlBOERGM0ZDRjA5N0ZB
MEZDMDA1Mjk4MUIgLyogSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQTgxMzY5Q0YwOTczNzRGNjAwRDc0NDYzIC8qIEhUTUxGb3JtQ29udHJvbEVsZW1l
bnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTE0RjFDNDQxNEI1REFDNjAwRUE5MDA5IC8qIEhU
TUxGb3JtQ29udHJvbEVsZW1lbnRXaXRoU3RhdGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTgx
MzY5RDEwOTczNzRGNjAwRDc0NDYzIC8qIEhUTUxGb3JtRWxlbWVudC5jcHAgaW4gU291cmNlcyAq
LywKQEAgLTI3MzMxLDYgKzI3MzQzLDcgQEAKIAkJCQlCQzZENDRCRTBDMDdFRkI2MDA3MkQyQzkg
LyogSlNIVE1MRW1iZWRFbGVtZW50Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBRTJB
QTI2MEExQ0RBQjQwMEI0MkIyNSAvKiBKU0hUTUxGaWVsZFNldEVsZW1lbnQuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMUFFMkFBMjgwQTFDREFCNDAwQjQyQjI1IC8qIEpTSFRNTEZvbnRFbGVtZW50
LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTlCMUFCMDdDMTY0OEM3QzQwMDUxRjNGMiAvKiBKU0hU
TUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4
RDA2NEZCMEEyM0MwQ0MwMDVFNzIwMyAvKiBKU0hUTUxGb3JtRWxlbWVudC5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlBOEQwNjVBRTBBMjQ0NkNEMDA1RTcyMDMgLyogSlNIVE1MRm9ybUVsZW1lbnRD
dXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkM0OTE4QzYwQkZFQTA1MDAwOUQ2MzE2IC8q
IEpTSFRNTEZyYW1lRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKQEAgLTI4NzcyLDYgKzI4Nzg1
LDcgQEAKIAkJCQk0RkZDMDIyRDE2NDNCNzI2MDA0RTE2MzggLyogRWxlbWVudFJhcmVEYXRhLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTkzQzM4QkZFMTY0NDczQzcwMDA5MUVCMiAvKiBTY3JvbGxp
bmdTdGF0ZUZpeGVkTm9kZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5M0MzOEMwNDE2NDQ3M0RE
MDAwOTFFQjIgLyogU2Nyb2xsaW5nVHJlZUZpeGVkTm9kZS5tbSBpbiBTb3VyY2VzICovLAorCQkJ
CTlCRjlBODgwMTY0OEREMkYwMDFDNkIyMyAvKiBKU0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9u
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHBy
b2Nlc3NpbmcgPSAwOwogCQl9Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>172670</attachid>
            <date>2012-11-06 16:13:38 -0800</date>
            <delta_ts>2012-11-06 16:16:46 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-101311-20121106161151.patch</filename>
            <type>text/plain</type>
            <size>99409</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEzMzY2NikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEwNCBAQAorMjAxMi0xMS0wNiAgUnlvc3Vr
ZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KKworICAgICAgICBNYWtlIG5hbWVkSXRlbSByZXR1
cm4gYSBub2RlIGxpc3Qgb25seSBpbiBIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbiBhbmQgSFRN
TE9wdGlvbnNDb2xsZWN0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMDEzMTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBJbnRyb2R1Y2UgdHdvIG5ldyBpbnRlcmZhY2VzIEhUTUxGb3JtQ29udHJvbHND
b2xsZWN0aW9uIGFuZCBIVE1MT3B0aW9uc0NvbGxlY3Rpb24gdG8gYmUgdXNlZCBieSBmb3JtLmVs
ZW1lbnRzCisgICAgICAgIGFuZCBzZWxlY3Qub3B0aW9ucy4gVGhlc2UgdHdvIGludGVyZmFjZXMg
aGF2ZSB0aGUgbmFtZWQgZ2V0dGVyIGFuZCBuYW1lZEl0ZW0gdGhhdCByZXR1cm5zIGEgbGl2ZSBO
b2RlTGlzdCB3aGVuCisgICAgICAgIHRoZXJlIGFyZSBtdWx0aXBsZSBtYXRjaGVzLiBJbnRyb2R1
Y2luZyB0aGVzZSB0d28gaW50ZXJmYWNlcyBhbGxvdyB1cyB0byAicmVndWxhciIgSFRNTENvbGxl
Y3Rpb24ncyBuYW1lZCBnZXR0ZXIKKyAgICAgICAgYW5kIG5hbWVkSXRlbSB0byByZXR1cm4gZXhh
Y3RseSBvbmUgbm9kZSBvciBudWxsIGFzIHNwZWNpZmllZCBpbiBIVE1MNToKKyAgICAgICAgaHR0
cDovL3d3dy53aGF0d2cub3JnL3NwZWNzL3dlYi1hcHBzL2N1cnJlbnQtd29yay9tdWx0aXBhZ2Uv
Y29tbW9uLWRvbS1pbnRlcmZhY2VzLmh0bWwjY29sbGVjdGlvbnMtMAorCisgICAgICAgIFVuZm9y
dHVuYXRlbHksIEhUTUxPcHRpb25zQ29sbGVjdGlvbiBzdGlsbCBoYXMgYSBidWcgdGhhdCBpdHMg
bmFtZWQgZ2V0dGVyIGFuZCBuYW1lZEl0ZW0gcmV0dXJucworICAgICAgICBhIHN0YXRpYyBOb2Rl
TGlzdCBpbnN0ZWFkIG9mIGEgbGl2ZSBOb2RlTGlzdCAoRHluYW1pY05vZGVMaXN0KSBhdCB0aGUg
bW9tZW50LgorCisgICAgICAgIEFsc28gZ290IHJpZCBvZiBEb2N1bWVudDo6b2JqZWN0cyBzaW5j
ZSBpdCdzIG5vdCBleHBvc2VkIGluIElETCBvciBjYWxsZWQgYW55d2hlcmUuCisKKyAgICAgICAg
VGVzdDogZmFzdC9kb20vaHRtbC1jb2xsZWN0aW9ucy1uYW1lZEl0ZW0uaHRtbAorCisgICAgICAg
ICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMuY3BwOgorICAgICAg
ICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMucHJpOgor
ICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogVGFyZ2V0LnByaToKKyAg
ICAgICAgKiBVc2VKU0MuY21ha2U6CisgICAgICAgICogVXNlVjguY21ha2U6CisgICAgICAgICog
V2ViQ29yZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ajoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0JpbmRpbmdzQWxsSW5PbmUuY3BwOgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL0pTSFRNTEFsbENvbGxlY3Rpb25DdXN0b20uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Z2V0TmFtZWRJdGVtcyk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNIVE1MQ29s
bGVjdGlvbkN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0hUTUxDb2xsZWN0aW9uOjpu
YW1lR2V0dGVyKTogTm93IHJldHVybnMgZXhhY3RseSBvbmUgbm9kZSBvciBudWxsLgorICAgICAg
ICAoV2ViQ29yZTo6dG9KUyk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNIVE1MRm9ybUNvbnRy
b2xzQ29sbGVjdGlvbkN1c3RvbS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Z2V0TmFt
ZWRJdGVtcyk6IFJldHVybnMgUmFkaW9Ob2RlTGlzdCB3aGVuIHRoZXJlIGFyZSBtdWx0aXBsZSBt
YXRjaGVzLgorICAgICAgICAoV2ViQ29yZTo6SlNIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbjo6
Y2FuR2V0SXRlbXNGb3JOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkpTSFRNTEZvcm1Db250cm9s
c0NvbGxlY3Rpb246Om5hbWVHZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SlNIVE1MRm9ybUNv
bnRyb2xzQ29sbGVjdGlvbjo6bmFtZWRJdGVtKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0hU
TUxPcHRpb25zQ29sbGVjdGlvbkN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpnZXROYW1l
ZEl0ZW1zKTogUmV0dXJucyBhIHN0YXRpYyBOb2RlTGlzdCB3aGVuIHRoZXJlIGFyZSBtdWx0aXBs
ZSBtYXRjaGVzLgorICAgICAgICBUaGlzIGlzIGEgYnVnLiBJdCBzaG91bGQgYmUgYSBsaXZlIE5v
ZGVMaXN0IGluc3RlYWQuCisgICAgICAgIChXZWJDb3JlOjpKU0hUTUxPcHRpb25zQ29sbGVjdGlv
bjo6Y2FuR2V0SXRlbXNGb3JOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkpTSFRNTE9wdGlvbnND
b2xsZWN0aW9uOjpuYW1lR2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkpTSFRNTE9wdGlvbnND
b2xsZWN0aW9uOjpuYW1lZEl0ZW0pOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0NvZGVHZW5lcmF0
b3JKUy5wbTogSW5jbHVkZSBKU05vZGUuanMgZm9yIGFsbCBIVE1MKkNvbGxlY3Rpb24gaW50ZXJm
YWNlcyBmb3Igc2ltcGxpY2l0eS4KKyAgICAgICAgKiBiaW5kaW5ncy9qcy9Db2RlR2VuZXJhdG9y
VjgucG06IEhUTUxPcHRpb25zQ29sbGVjdGlvbiBub3cgaW5oZXJpdHMgZnJvbSBIVE1MQ29sbGVj
dGlvbi4gU2VlCisgICAgICAgIGh0dHA6Ly93d3cud2hhdHdnLm9yZy9zcGVjcy93ZWItYXBwcy9j
dXJyZW50LXdvcmsvbXVsdGlwYWdlL2NvbW1vbi1kb20taW50ZXJmYWNlcy5odG1sI2h0bWxvcHRp
b25zY29sbGVjdGlvbgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxBbGxDb2xs
ZWN0aW9uQ3VzdG9tLmNwcDogUGFzcyBpbiBpc29sYXRlIHdoZW4gd2UgY2FuLgorICAgICAgICAo
V2ViQ29yZTo6Z2V0TmFtZWRJdGVtcyk6IEFkZGVkIGEgY29tbWVudCBhYm91dCBob3cgd2Ugc2hv
dWxkIGJlIHJldHVybmluZworICAgICAgICBhIEhUTUxDb2xsZWN0aW9uIHdoZW4gdGhlcmUgYXJl
IG11bHRpcGxlIG1hdGNoZXMuCisgICAgICAgIChXZWJDb3JlOjpnZXRJdGVtKToKKyAgICAgICAg
KFdlYkNvcmU6OlY4SFRNTEFsbENvbGxlY3Rpb246Om5hbWVkUHJvcGVydHlHZXR0ZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6VjhIVE1MQWxsQ29sbGVjdGlvbjo6bmFtZWRJdGVtQ2FsbGJhY2spOgor
ICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxDb2xsZWN0aW9uQ3VzdG9tLmNwcDog
Tm93IHJldHVybnMgZXhhY3RseSBvbmUgbm9kZSBvciBudWxsLgorICAgICAgICAoV2ViQ29yZSk6
CisgICAgICAgIChXZWJDb3JlOjpWOEhUTUxDb2xsZWN0aW9uOjpuYW1lZFByb3BlcnR5R2V0dGVy
KToKKyAgICAgICAgKFdlYkNvcmU6OnRvVjgpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3Rv
bS9WOEhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uQ3VzdG9tLmNwcDogQWRkZWQuCisgICAgICAg
IChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OmdldE5hbWVkSXRlbXMpOiBSZXR1cm5zIFJh
ZGlvTm9kZUxpc3Qgd2hlbiB0aGVyZSBhcmUgbXVsdGlwbGUgbWF0Y2hlcy4KKyAgICAgICAgKFdl
YkNvcmU6OlY4SFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb246Om5hbWVkUHJvcGVydHlHZXR0ZXIp
OgorICAgICAgICAoV2ViQ29yZTo6VjhIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbjo6bmFtZWRJ
dGVtQ2FsbGJhY2spOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxPcHRpb25z
Q29sbGVjdGlvbkN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpnZXROYW1lZEl0ZW1zKTog
UmV0dXJucyBhIHN0YXRpYyBOb2RlTGlzdCB3aGVuIHRoZXJlIGFyZSBtdWx0aXBsZSBtYXRjaGVz
LgorICAgICAgICBUaGlzIGlzIGEgYnVnLiBJdCBzaG91bGQgYmUgYSBsaXZlIE5vZGVMaXN0IGlu
c3RlYWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlY4SFRNTE9wdGlv
bnNDb2xsZWN0aW9uOjpuYW1lZFByb3BlcnR5R2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlY4
SFRNTE9wdGlvbnNDb2xsZWN0aW9uOjpuYW1lZEl0ZW1DYWxsYmFjayk6CisgICAgICAgICogZG9t
L0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOiBSZW1vdmVkIERvY3VtZW50OjpvYmpl
Y3RzIHNpbmNlIGl0IHdhcyBub3QgdXNlZCBhbnl3aGVyZS4KKyAgICAgICAgKiBkb20vRG9jdW1l
bnQuaDoKKyAgICAgICAgKERvY3VtZW50KToKKyAgICAgICAgKiBkb20vRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpFbGVtZW50UmFyZURhdGE6OmVuc3VyZUNhY2hlZEhUTUxDb2xsZWN0
aW9uKTogZm9ybS5lbGVtZW50cyBzaG91bGQgaW5zdGFudGlhdGUKKyAgICAgICAgYSBIVE1MRm9y
bUNvbnRyb2xzQ29sbGVjdGlvbiBpbnN0ZWFkIG9mIGEgSFRNTENvbGxlY3Rpb24uCisgICAgICAg
ICogaHRtbC9Db2xsZWN0aW9uVHlwZS5oOgorICAgICAgICAqIGh0bWwvSFRNTENvbGxlY3Rpb24u
aWRsOiBSZW1vdmVkIFtDdXN0b21dIHNpbmNlIG5hbWVkSXRlbSBpcyBhIHJlZ3VsYXIgZnVuY3Rp
b24gY2FsbCBub3cuCisgICAgICAgICogaHRtbC9IVE1MRmllbGRTZXRFbGVtZW50LmNwcDoKKyAg
ICAgICAgKiBodG1sL0hUTUxGaWVsZFNldEVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxG
b3JtQ29sbGVjdGlvbi5jcHA6IFJlbW92ZWQuCisgICAgICAgICogaHRtbC9IVE1MRm9ybUNvbGxl
Y3Rpb24uaDogUmVtb3ZlZC4KKyAgICAgICAgKiBodG1sL0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0
aW9uLmNwcDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbGxlY3Rp
b24uY3BwLgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb246OkhU
TUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGb3JtQ29u
dHJvbHNDb2xsZWN0aW9uOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZvcm1Db250
cm9sc0NvbGxlY3Rpb246On5IVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbik6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbjo6Zm9ybUNvbnRyb2xFbGVtZW50cyk6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbjo6Zm9ybUltYWdl
RWxlbWVudHMpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb246
OnZpcnR1YWxJdGVtQWZ0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZvcm1Db250cm9sc0Nv
bGxlY3Rpb246Om5hbWVkSXRlbSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRm9ybUNvbnRyb2xz
Q29sbGVjdGlvbjo6dXBkYXRlTmFtZUNhY2hlKToKKyAgICAgICAgKiBodG1sL0hUTUxGb3JtQ29u
dHJvbHNDb2xsZWN0aW9uLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZv
cm1Db2xsZWN0aW9uLmguCisgICAgICAgIChIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbik6Cisg
ICAgICAgICogaHRtbC9IVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5pZGw6IEFkZGVkLgorICAg
ICAgICAqIGh0bWwvSFRNTEZvcm1FbGVtZW50LmNwcDoKKyAgICAgICAgKiBodG1sL0hUTUxGb3Jt
RWxlbWVudC5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogaHRtbC9IVE1MT3B0aW9u
c0NvbGxlY3Rpb24uaWRsOgorCiAyMDEyLTExLTA2ICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZp
ZXcuYm90QGdtYWlsLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTMz
NTI2LgpJbmRleDogU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDEzMzU2OCkKKysrIFNvdXJj
ZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC00NDEsNiArNDQxLDcg
QEAgU0VUKFdlYkNvcmVfSURMX0ZJTEVTCiAgICAgaHRtbC9IVE1MRW1iZWRFbGVtZW50LmlkbAog
ICAgIGh0bWwvSFRNTEZpZWxkU2V0RWxlbWVudC5pZGwKICAgICBodG1sL0hUTUxGb250RWxlbWVu
dC5pZGwKKyAgICBodG1sL0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmlkbAogICAgIGh0bWwv
SFRNTEZvcm1FbGVtZW50LmlkbAogICAgIGh0bWwvSFRNTEZyYW1lRWxlbWVudC5pZGwKICAgICBo
dG1sL0hUTUxGcmFtZVNldEVsZW1lbnQuaWRsCkBAIC0xMzczLDcgKzEzNzQsNyBAQCBTRVQoV2Vi
Q29yZV9TT1VSQ0VTCiAgICAgaHRtbC9IVE1MRW1iZWRFbGVtZW50LmNwcAogICAgIGh0bWwvSFRN
TEZpZWxkU2V0RWxlbWVudC5jcHAKICAgICBodG1sL0hUTUxGb250RWxlbWVudC5jcHAKLSAgICBo
dG1sL0hUTUxGb3JtQ29sbGVjdGlvbi5jcHAKKyAgICBodG1sL0hUTUxGb3JtQ29udHJvbHNDb2xs
ZWN0aW9uLmNwcAogICAgIGh0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHAKICAgICBodG1s
L0hUTUxGb3JtQ29udHJvbEVsZW1lbnRXaXRoU3RhdGUuY3BwCiAgICAgaHRtbC9IVE1MRm9ybUVs
ZW1lbnQuY3BwCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMuY3BwCShyZXZpc2lvbiAxMzM1
NjgpCisrKyBTb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTE2Myw2ICsxNjMsNyBAQAogI2luY2x1ZGUgIkpTSFRNTEVtYmVkRWxlbWVudC5jcHAiCiAj
aW5jbHVkZSAiSlNIVE1MRmllbGRTZXRFbGVtZW50LmNwcCIKICNpbmNsdWRlICJKU0hUTUxGb250
RWxlbWVudC5jcHAiCisjaW5jbHVkZSAiSlNIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5jcHAi
CiAjaW5jbHVkZSAiSlNIVE1MRm9ybUVsZW1lbnQuY3BwIgogI2luY2x1ZGUgIkpTSFRNTEZyYW1l
RWxlbWVudC5jcHAiCiAjaW5jbHVkZSAiSlNIVE1MRnJhbWVTZXRFbGVtZW50LmNwcCIKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQkocmV2aXNpb24gMTMzNTY4KQorKysgU291cmNl
L1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQkod29ya2luZyBjb3B5KQpAQCAtMzAwLDYgKzMw
MCw3IEBAIEJJTkRJTkdfSURMUyA9IFwKICAgICAkKFdlYkNvcmUpL2h0bWwvSFRNTEVtYmVkRWxl
bWVudC5pZGwgXAogICAgICQoV2ViQ29yZSkvaHRtbC9IVE1MRmllbGRTZXRFbGVtZW50LmlkbCBc
CiAgICAgJChXZWJDb3JlKS9odG1sL0hUTUxGb250RWxlbWVudC5pZGwgXAorICAgICQoV2ViQ29y
ZSkvaHRtbC9IVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5pZGwgXAogICAgICQoV2ViQ29yZSkv
aHRtbC9IVE1MRm9ybUVsZW1lbnQuaWRsIFwKICAgICAkKFdlYkNvcmUpL2h0bWwvSFRNTEZyYW1l
RWxlbWVudC5pZGwgXAogICAgICQoV2ViQ29yZSkvaHRtbC9IVE1MRnJhbWVTZXRFbGVtZW50Lmlk
bCBcCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5wcmkKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMucHJpCShyZXZpc2lvbiAxMzM1NjgpCisr
KyBTb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5wcmkJKHdvcmtpbmcgY29weSkKQEAgLTM1
MCw2ICszNTAsNyBAQCBJRExfQklORElOR1MgKz0gXAogICAgICQkUFdEL2h0bWwvSFRNTEVtYmVk
RWxlbWVudC5pZGwgXAogICAgICQkUFdEL2h0bWwvSFRNTEZpZWxkU2V0RWxlbWVudC5pZGwgXAog
ICAgICQkUFdEL2h0bWwvSFRNTEZvbnRFbGVtZW50LmlkbCBcCisgICAgJCRQV0QvaHRtbC9IVE1M
Rm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5pZGwgXAogICAgICQkUFdEL2h0bWwvSFRNTEZvcm1FbGVt
ZW50LmlkbCBcCiAgICAgJCRQV0QvaHRtbC9IVE1MRnJhbWVFbGVtZW50LmlkbCBcCiAgICAgJCRQ
V0QvaHRtbC9IVE1MRnJhbWVTZXRFbGVtZW50LmlkbCBcCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9H
TlVtYWtlZmlsZS5saXN0LmFtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0dOVW1ha2Vm
aWxlLmxpc3QuYW0JKHJldmlzaW9uIDEzMzU2OCkKKysrIFNvdXJjZS9XZWJDb3JlL0dOVW1ha2Vm
aWxlLmxpc3QuYW0JKHdvcmtpbmcgY29weSkKQEAgLTMzNyw2ICszMzcsOCBAQCB3ZWJjb3JlX2J1
aWx0X3NvdXJjZXMgKz0gXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNIVE1MRmllbGRTZXRF
bGVtZW50LmggXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNIVE1MRm9udEVsZW1lbnQuY3Bw
IFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTSFRNTEZvbnRFbGVtZW50LmggXAorCURlcml2
ZWRTb3VyY2VzL1dlYkNvcmUvSlNIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5jcHAgXAorCURl
cml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5oIFwKIAlE
ZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTSFRNTEZvcm1FbGVtZW50LmNwcCBcCiAJRGVyaXZlZFNv
dXJjZXMvV2ViQ29yZS9KU0hUTUxGb3JtRWxlbWVudC5oIFwKIAlEZXJpdmVkU291cmNlcy9XZWJD
b3JlL0pTSFRNTEZyYW1lRWxlbWVudC5jcHAgXApAQCAtMTQ0MCw2ICsxNDQyLDcgQEAgZG9tX2Jp
bmRpbmdfaWRscyArPSBcCiAJJChXZWJDb3JlKS9odG1sL0hUTUxFbWJlZEVsZW1lbnQuaWRsIFwK
IAkkKFdlYkNvcmUpL2h0bWwvSFRNTEZpZWxkU2V0RWxlbWVudC5pZGwgXAogCSQoV2ViQ29yZSkv
aHRtbC9IVE1MRm9udEVsZW1lbnQuaWRsIFwKKwkkKFdlYkNvcmUpL2h0bWwvSFRNTEZvcm1Db250
cm9sc0NvbGxlY3Rpb24uaWRsIFwKIAkkKFdlYkNvcmUpL2h0bWwvSFRNTEZvcm1FbGVtZW50Lmlk
bCBcCiAJJChXZWJDb3JlKS9odG1sL0hUTUxGcmFtZUVsZW1lbnQuaWRsIFwKIAkkKFdlYkNvcmUp
L2h0bWwvSFRNTEZyYW1lU2V0RWxlbWVudC5pZGwgXApAQCAtMjMyNCw2ICsyMzI3LDcgQEAgd2Vi
Y29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxFbGVt
ZW50Q3VzdG9tLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MRW1iZWRF
bGVtZW50Q3VzdG9tLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MRW1i
ZWRFbGVtZW50Q3VzdG9tLmggXAorCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEZv
cm1Db250cm9sc0NvbGxlY3Rpb25DdXN0b20uY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0hUTUxGb3JtRWxlbWVudEN1c3RvbS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTSFRNTEZyYW1lRWxlbWVudEN1c3RvbS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTSFRNTEZyYW1lU2V0RWxlbWVudEN1c3RvbS5jcHAgXApAQCAtMzMyOSw4ICsz
MzMzLDggQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxG
aWVsZFNldEVsZW1lbnQuaCBcCiAJU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9udEVsZW1lbnQu
Y3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb250RWxlbWVudC5oIFwKLQlTb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxGb3JtQ29sbGVjdGlvbi5jcHAgXAotCVNvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEZvcm1Db2xsZWN0aW9uLmggXAorCVNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1D
b250cm9sc0NvbGxlY3Rpb24uY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29u
dHJvbHNDb2xsZWN0aW9uLmggXAogCVNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9s
RWxlbWVudC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVu
dC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnRXaXRoU3Rh
dGUuY3BwIFwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQkocmV2aXNpb24gMTMzNTY4KQorKysgU291cmNlL1dl
YkNvcmUvVGFyZ2V0LnByaQkod29ya2luZyBjb3B5KQpAQCAtMTMyLDYgKzEzMiw3IEBAIFNPVVJD
RVMgKz0gXAogICAgICBiaW5kaW5ncy9qcy9KU0hUTUxEb2N1bWVudEN1c3RvbS5jcHAgXAogICAg
ICBiaW5kaW5ncy9qcy9KU0hUTUxFbGVtZW50Q3VzdG9tLmNwcCBcCiAgICAgIGJpbmRpbmdzL2pz
L0pTSFRNTEVtYmVkRWxlbWVudEN1c3RvbS5jcHAgXAorICAgICBiaW5kaW5ncy9qcy9KU0hUTUxG
b3JtQ29udHJvbHNDb2xsZWN0aW9uQ3VzdG9tLmNwcCBcCiAgICAgIGJpbmRpbmdzL2pzL0pTSFRN
TEZvcm1FbGVtZW50Q3VzdG9tLmNwcCBcCiAgICAgIGJpbmRpbmdzL2pzL0pTSFRNTEZyYW1lRWxl
bWVudEN1c3RvbS5jcHAgXAogICAgICBiaW5kaW5ncy9qcy9KU0hUTUxGcmFtZVNldEVsZW1lbnRD
dXN0b20uY3BwIFwKQEAgLTYwMiw3ICs2MDMsNyBAQCBTT1VSQ0VTICs9IFwKICAgICBodG1sL0hU
TUxFbWJlZEVsZW1lbnQuY3BwIFwKICAgICBodG1sL0hUTUxGaWVsZFNldEVsZW1lbnQuY3BwIFwK
ICAgICBodG1sL0hUTUxGb250RWxlbWVudC5jcHAgXAotICAgIGh0bWwvSFRNTEZvcm1Db2xsZWN0
aW9uLmNwcCBcCisgICAgaHRtbC9IVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5jcHAgXAogICAg
IGh0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHAgXAogICAgIGh0bWwvSFRNTEZvcm1Db250
cm9sRWxlbWVudFdpdGhTdGF0ZS5jcHAgXAogICAgIGh0bWwvSFRNTEZvcm1FbGVtZW50LmNwcCBc
CkBAIC0xNzU3LDcgKzE3NTgsNyBAQCBIRUFERVJTICs9IFwKICAgICBodG1sL0hUTUxFbWJlZEVs
ZW1lbnQuaCBcCiAgICAgaHRtbC9IVE1MRmllbGRTZXRFbGVtZW50LmggXAogICAgIGh0bWwvSFRN
TEZvbnRFbGVtZW50LmggXAotICAgIGh0bWwvSFRNTEZvcm1Db2xsZWN0aW9uLmggXAorICAgIGh0
bWwvSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uaCBcCiAgICAgaHRtbC9IVE1MRm9ybUNvbnRy
b2xFbGVtZW50LmggXAogICAgIGh0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudFdpdGhTdGF0ZS5o
IFwKICAgICBodG1sL0hUTUxGb3JtRWxlbWVudC5oIFwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1Vz
ZUpTQy5jbWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Vc2VKU0MuY21ha2UJKHJl
dmlzaW9uIDEzMzU2OCkKKysrIFNvdXJjZS9XZWJDb3JlL1VzZUpTQy5jbWFrZQkod29ya2luZyBj
b3B5KQpAQCAtODQsNiArODQsNyBAQCBMSVNUKEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKICAgICBi
aW5kaW5ncy9qcy9KU0hUTUxEb2N1bWVudEN1c3RvbS5jcHAKICAgICBiaW5kaW5ncy9qcy9KU0hU
TUxFbGVtZW50Q3VzdG9tLmNwcAogICAgIGJpbmRpbmdzL2pzL0pTSFRNTEVtYmVkRWxlbWVudEN1
c3RvbS5jcHAKKyAgICBiaW5kaW5ncy9qcy9KU0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uQ3Vz
dG9tLmNwcAogICAgIGJpbmRpbmdzL2pzL0pTSFRNTEZvcm1FbGVtZW50Q3VzdG9tLmNwcAogICAg
IGJpbmRpbmdzL2pzL0pTSFRNTEZyYW1lRWxlbWVudEN1c3RvbS5jcHAKICAgICBiaW5kaW5ncy9q
cy9KU0hUTUxGcmFtZVNldEVsZW1lbnRDdXN0b20uY3BwCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9V
c2VWOC5jbWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Vc2VWOC5jbWFrZQkocmV2
aXNpb24gMTMzNTY4KQorKysgU291cmNlL1dlYkNvcmUvVXNlVjguY21ha2UJKHdvcmtpbmcgY29w
eSkKQEAgLTEwNSw2ICsxMDUsNyBAQCBMSVNUKEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKICAgICBi
aW5kaW5ncy92OC9jdXN0b20vVjhIVE1MQ29sbGVjdGlvbkN1c3RvbS5jcHAKICAgICBiaW5kaW5n
cy92OC9jdXN0b20vVjhIVE1MRG9jdW1lbnRDdXN0b20uY3BwCiAgICAgYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4SFRNTEVsZW1lbnRDdXN0b20uY3BwCisgICAgYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRN
TEZvcm1Db250cm9sc0NvbGxlY3Rpb25DdXN0b20uY3BwCiAgICAgYmluZGluZ3MvdjgvY3VzdG9t
L1Y4SFRNTEZvcm1FbGVtZW50Q3VzdG9tLmNwcAogICAgIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEhU
TUxGcmFtZUVsZW1lbnRDdXN0b20uY3BwCiAgICAgYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTEZy
YW1lU2V0RWxlbWVudEN1c3RvbS5jcHAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lw
aQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkJKHJldmlzaW9uIDEz
MzU2OCkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQkod29ya2luZyBjb3B5KQpAQCAt
MTA4NCw2ICsxMDg0LDcgQEAKICAgICAgICAgICAgICdodG1sL0hUTUxFbWJlZEVsZW1lbnQuaWRs
JywKICAgICAgICAgICAgICdodG1sL0hUTUxGaWVsZFNldEVsZW1lbnQuaWRsJywKICAgICAgICAg
ICAgICdodG1sL0hUTUxGb250RWxlbWVudC5pZGwnLAorICAgICAgICAgICAgJ2h0bWwvSFRNTEZv
cm1Db250cm9sc0NvbGxlY3Rpb24uaWRsJywKICAgICAgICAgICAgICdodG1sL0hUTUxGb3JtRWxl
bWVudC5pZGwnLAogICAgICAgICAgICAgJ2h0bWwvSFRNTEZyYW1lRWxlbWVudC5pZGwnLAogICAg
ICAgICAgICAgJ2h0bWwvSFRNTEZyYW1lU2V0RWxlbWVudC5pZGwnLApAQCAtMjA3Nyw2ICsyMDc4
LDcgQEAKICAgICAgICAgICAgICdiaW5kaW5ncy9qcy9KU0hUTUxFbGVtZW50Q3VzdG9tLmNwcCcs
CiAgICAgICAgICAgICAnYmluZGluZ3MvanMvSlNIVE1MRW1iZWRFbGVtZW50Q3VzdG9tLmNwcCcs
CiAgICAgICAgICAgICAnYmluZGluZ3MvanMvSlNIVE1MRW1iZWRFbGVtZW50Q3VzdG9tLmgnLAor
ICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb25DdXN0
b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy9qcy9KU0hUTUxGb3JtRWxlbWVudEN1c3Rv
bS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTSFRNTEZyYW1lRWxlbWVudEN1c3Rv
bS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTSFRNTEZyYW1lU2V0RWxlbWVudEN1
c3RvbS5jcHAnLApAQCAtMjM5MSw2ICsyMzkzLDcgQEAKICAgICAgICAgICAgICdiaW5kaW5ncy92
OC9jdXN0b20vVjhIVE1MQ29sbGVjdGlvbkN1c3RvbS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRp
bmdzL3Y4L2N1c3RvbS9WOEhUTUxEb2N1bWVudEN1c3RvbS5jcHAnLAogICAgICAgICAgICAgJ2Jp
bmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxFbGVtZW50Q3VzdG9tLmNwcCcsCisgICAgICAgICAgICAn
YmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb25DdXN0b20uY3Bw
JywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MRm9ybUVsZW1lbnRDdXN0
b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MRnJhbWVFbGVt
ZW50Q3VzdG9tLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTEZy
YW1lU2V0RWxlbWVudEN1c3RvbS5jcHAnLApAQCAtNDEwNCw4ICs0MTA3LDggQEAKICAgICAgICAg
ICAgICdodG1sL0hUTUxGaWVsZFNldEVsZW1lbnQuaCcsCiAgICAgICAgICAgICAnaHRtbC9IVE1M
Rm9udEVsZW1lbnQuY3BwJywKICAgICAgICAgICAgICdodG1sL0hUTUxGb250RWxlbWVudC5oJywK
LSAgICAgICAgICAgICdodG1sL0hUTUxGb3JtQ29sbGVjdGlvbi5jcHAnLAotICAgICAgICAgICAg
J2h0bWwvSFRNTEZvcm1Db2xsZWN0aW9uLmgnLAorICAgICAgICAgICAgJ2h0bWwvSFRNTEZvcm1D
b250cm9sc0NvbGxlY3Rpb24uY3BwJywKKyAgICAgICAgICAgICdodG1sL0hUTUxGb3JtQ29udHJv
bHNDb2xsZWN0aW9uLmgnLAogICAgICAgICAgICAgJ2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVu
dC5jcHAnLAogICAgICAgICAgICAgJ2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudFdpdGhTdGF0
ZS5jcHAnLAogICAgICAgICAgICAgJ2h0bWwvSFRNTEZvcm1FbGVtZW50LmNwcCcsCkBAIC03NjA3
LDYgKzc2MTAsOCBAQAogICAgICAgICAgICAgJzwoUFJPRFVDVF9ESVIpL0Rlcml2ZWRTb3VyY2Vz
L1dlYkNvcmUvSlNIVE1MRmllbGRTZXRFbGVtZW50LmgnLAogICAgICAgICAgICAgJzwoUFJPRFVD
VF9ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNIVE1MRm9udEVsZW1lbnQuY3BwJywKICAg
ICAgICAgICAgICc8KFBST0RVQ1RfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTSFRNTEZv
bnRFbGVtZW50LmgnLAorICAgICAgICAgICAgJzwoUFJPRFVDVF9ESVIpL0Rlcml2ZWRTb3VyY2Vz
L1dlYkNvcmUvSlNIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5jcHAnLAorICAgICAgICAgICAg
JzwoUFJPRFVDVF9ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNIVE1MRm9ybUNvbnRyb2xz
Q29sbGVjdGlvbi5oJywKICAgICAgICAgICAgICc8KFBST0RVQ1RfRElSKS9EZXJpdmVkU291cmNl
cy9XZWJDb3JlL0pTSFRNTEZvcm1FbGVtZW50LmNwcCcsCiAgICAgICAgICAgICAnPChQUk9EVUNU
X0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0hUTUxGb3JtRWxlbWVudC5oJywKICAgICAg
ICAgICAgICc8KFBST0RVQ1RfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTSFRNTEZyYW1l
RWxlbWVudC5jcHAnLApJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTMzNTY4KQorKysgU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0zNzQy
LDYgKzM3NDIsNyBAQAogCQk5QTFCNkY5NzE1ODg2OUM4MDAxMUE4QzQgLyogSlNET01TdHJpbmdM
aXN0Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDlBMUI2Rjk2MTU4ODY5QzgwMDExQThDNCAvKiBKU0RPTVN0cmluZ0xpc3RDdXN0b20uY3Bw
ICovOyB9OwogCQk5QjBGQjE5MTE0MERCNTc5MDAyMjU4OEYgLyogSFRUUFZhbGlkYXRpb24uY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUIwRkIxOEYx
NDBEQjU3OTAwMjI1ODhGIC8qIEhUVFBWYWxpZGF0aW9uLmNwcCAqLzsgfTsKIAkJOUIwRkIxOTIx
NDBEQjU3OTAwMjI1ODhGIC8qIEhUVFBWYWxpZGF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QjBGQjE5MDE0MERCNTc5MDAyMjU4OEYgLyogSFRU
UFZhbGlkYXRpb24uaCAqLzsgfTsKKwkJOUIxQUIwN0MxNjQ4QzdDNDAwNTFGM0YyIC8qIEpTSFRN
TEZvcm1Db250cm9sc0NvbGxlY3Rpb25DdXN0b20uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUIxQUIwN0IxNjQ4QzdDNDAwNTFGM0YyIC8qIEpTSFRN
TEZvcm1Db250cm9sc0NvbGxlY3Rpb25DdXN0b20uY3BwICovOyB9OwogCQk5QjI0REU4RTE1MTk0
Qjk1MDBDNTlDMjcgLyogSFRNTEJESUVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlCMjRERThDMTUxOTRCOTUwMEM1OUMyNyAvKiBIVE1MQkRJ
RWxlbWVudC5oICovOyB9OwogCQk5QjJCN0FDMTE1MDk4NTBBMDA4OTMyQ0MgLyogTWljcm9EYXRh
SXRlbVZhbHVlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDlCMkY3Q0Y3MTQ1NjIxMjAwMDdGOEI1MCAvKiBNaWNyb0RhdGFJdGVtVmFsdWUuY3BwICov
OyB9OwogCQk5QjJEOEE3OTE0OTk3Q0NGMDBFQ0VGM0UgLyogVW5kb1N0ZXAuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlCMkQ4QTc4MTQ5OTdDQ0YwMEVD
RUYzRSAvKiBVbmRvU3RlcC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CkBAIC0zNzYwLDYgKzM3NjEsOCBAQAogCQk5QkM2QzIxQzEzQ0NDOTdCMDA4RTAz
MzcgLyogSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUJDNkMyMUExM0NDQzk3QjAwOEUwMzM3IC8qIEhU
TUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmNwcCAqLzsgfTsKIAkJOUJEMEJGOTMxMkE0MkJGNTAw
NzJGRDQzIC8qIFNjb3BlZEV2ZW50UXVldWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDlCRDBCRjkxMTJBNDJCRjUwMDcyRkQ0MyAvKiBTY29wZWRFdmVu
dFF1ZXVlLmggKi87IH07CiAJCTlCRDBCRjk0MTJBNDJCRjUwMDcyRkQ0MyAvKiBTY29wZWRFdmVu
dFF1ZXVlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDlCRDBCRjkyMTJBNDJCRjUwMDcyRkQ0MyAvKiBTY29wZWRFdmVudFF1ZXVlLmNwcCAqLzsgfTsK
KwkJOUJGOUE4ODAxNjQ4REQyRjAwMUM2QjIzIC8qIEpTSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rp
b24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUJG
OUE4N0UxNjQ4REQyRjAwMUM2QjIzIC8qIEpTSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uY3Bw
ICovOyB9OworCQk5QkY5QTg4MTE2NDhERDJGMDAxQzZCMjMgLyogSlNIVE1MRm9ybUNvbnRyb2xz
Q29sbGVjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gOUJGOUE4N0YxNjQ4REQyRjAwMUM2QjIzIC8qIEpTSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rp
b24uaCAqLzsgfTsKIAkJOUYwRDZCMkUxMjFCRkVCQTAwNkMwMjg4IC8qIEluc3BlY3RvclByb2Zp
bGVyQWdlbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gOUYwRDZCMkMxMjFCRkVCQTAwNkMwMjg4IC8qIEluc3BlY3RvclByb2ZpbGVyQWdlbnQuY3Bw
ICovOyB9OwogCQk5RjBENkIyRjEyMUJGRUJBMDA2QzAyODggLyogSW5zcGVjdG9yUHJvZmlsZXJB
Z2VudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUYw
RDZCMkQxMjFCRkVCQTAwNkMwMjg4IC8qIEluc3BlY3RvclByb2ZpbGVyQWdlbnQuaCAqLzsgfTsK
IAkJOUYzQjk0N0UxMjI0MTc1ODAwNTMwNEU3IC8qIFNjcmlwdEhlYXBTbmFwc2hvdC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUYzQjk0N0QxMjI0MTc1
ODAwNTMwNEU3IC8qIFNjcmlwdEhlYXBTbmFwc2hvdC5oICovOyB9OwpAQCAtNDM0Nyw4ICs0MzUw
LDggQEAKIAkJQThEMDY1QUUwQTI0NDZDRDAwNUU3MjAzIC8qIEpTSFRNTEZvcm1FbGVtZW50Q3Vz
dG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4
RDA2NUFEMEEyNDQ2Q0QwMDVFNzIwMyAvKiBKU0hUTUxGb3JtRWxlbWVudEN1c3RvbS5jcHAgKi87
IH07CiAJCUE4RDA2QjM5MEEyNjVEQ0QwMDVFNzIwMyAvKiBIVE1MTmFtZXMuaCBpbiBDb3B5IEdl
bmVyYXRlZCBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4RDA2
QjM3MEEyNjVEQ0QwMDVFNzIwMyAvKiBIVE1MTmFtZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9ICgpOyB9OyB9OwogCQlBOEQwNkIzQTBBMjY1RENEMDA1RTcyMDMgLyogSFRNTE5hbWVz
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4RDA2
QjM4MEEyNjVEQ0QwMDVFNzIwMyAvKiBIVE1MTmFtZXMuY3BwICovOyB9OwotCQlBOERGM0ZDRTA5
N0ZBMEZDMDA1Mjk4MUIgLyogSFRNTEZvcm1Db2xsZWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBOERGM0ZDNjA5N0ZBMEZCMDA1Mjk4MUIgLyog
SFRNTEZvcm1Db2xsZWN0aW9uLmggKi87IH07Ci0JCUE4REYzRkNGMDk3RkEwRkMwMDUyOTgxQiAv
KiBIVE1MRm9ybUNvbGxlY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQThERjNGQzcwOTdGQTBGQjAwNTI5ODFCIC8qIEhUTUxGb3JtQ29sbGVj
dGlvbi5jcHAgKi87IH07CisJCUE4REYzRkNFMDk3RkEwRkMwMDUyOTgxQiAvKiBIVE1MRm9ybUNv
bnRyb2xzQ29sbGVjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQThERjNGQzYwOTdGQTBGQjAwNTI5ODFCIC8qIEhUTUxGb3JtQ29udHJvbHNDb2xs
ZWN0aW9uLmggKi87IH07CisJCUE4REYzRkNGMDk3RkEwRkMwMDUyOTgxQiAvKiBIVE1MRm9ybUNv
bnRyb2xzQ29sbGVjdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBOERGM0ZDNzA5N0ZBMEZCMDA1Mjk4MUIgLyogSFRNTEZvcm1Db250cm9sc0Nv
bGxlY3Rpb24uY3BwICovOyB9OwogCQlBOERGM0ZEMDA5N0ZBMEZDMDA1Mjk4MUIgLyogSFRNTENv
bGxlY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEE4REYzRkM4MDk3RkEwRkIwMDUyOTgxQiAvKiBIVE1MQ29sbGVjdGlvbi5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUE4REYzRkQxMDk3RkEwRkMw
MDUyOTgxQiAvKiBIVE1MQ29sbGVjdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBBOERGM0ZDOTA5N0ZBMEZCMDA1Mjk4MUIgLyogSFRNTENvbGxl
Y3Rpb24uY3BwICovOyB9OwogCQlBOERGM0ZEMjA5N0ZBMEZDMDA1Mjk4MUIgLyogSFRNTEJhc2VG
b250RWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQThERjNGQ0EwOTdGQTBGQjAwNTI5ODFCIC8qIEhUTUxCYXNlRm9udEVsZW1lbnQuaCAqLzsg
fTsKQEAgLTExMDA4LDYgKzExMDExLDggQEAKIAkJOUExQjZGOTYxNTg4NjlDODAwMTFBOEM0IC8q
IEpTRE9NU3RyaW5nTGlzdEN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBKU0RPTVN0cmluZ0xpc3RDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk5QjBGQjE4RjE0MERCNTc5MDAyMjU4OEYgLyogSFRUUFZhbGlkYXRpb24uY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSFRUUFZhbGlkYXRpb24uY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5QjBGQjE5MDE0MERCNTc5MDAyMjU4OEYgLyog
SFRUUFZhbGlkYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSFRUUFZh
bGlkYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOUIxQUIwNzkxNjQ4QzY5
RDAwNTFGM0YyIC8qIEhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmlkbCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBIVE1MRm9y
bUNvbnRyb2xzQ29sbGVjdGlvbi5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTlC
MUFCMDdCMTY0OEM3QzQwMDUxRjNGMiAvKiBKU0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uQ3Vz
dG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTSFRNTEZvcm1D
b250cm9sc0NvbGxlY3Rpb25DdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk5QjI0REU4QzE1MTk0Qjk1MDBDNTlDMjcgLyogSFRNTEJESUVsZW1lbnQuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSFRNTEJESUVsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJOUIyRDhBNzgxNDk5N0NDRjAwRUNFRjNFIC8qIFVuZG9TdGVwLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVuZG9TdGVwLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTlCMkY3Q0Y3MTQ1NjIxMjAwMDdGOEI1MCAvKiBNaWNyb0RhdGFJdGVt
VmFsdWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWljcm9EYXRh
SXRlbVZhbHVlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTExMDI3LDYgKzEx
MDMyLDggQEAKIAkJOUJDNkMyMUExM0NDQzk3QjAwOEUwMzM3IC8qIEhUTUxUZXh0Rm9ybUNvbnRy
b2xFbGVtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEhUTUxU
ZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
OUJEMEJGOTExMkE0MkJGNTAwNzJGRDQzIC8qIFNjb3BlZEV2ZW50UXVldWUuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2NvcGVkRXZlbnRRdWV1ZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk5QkQwQkY5MjEyQTQyQkY1MDA3MkZENDMgLyogU2NvcGVkRXZlbnRR
dWV1ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTY29wZWRFdmVu
dFF1ZXVlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOUJGOUE4N0UxNjQ4REQy
RjAwMUM2QjIzIC8qIEpTSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTlCRjlBODdGMTY0OEREMkYwMDFDNkIy
MyAvKiBKU0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEpTSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJOUYwRDZCMkMxMjFCRkVCQTAwNkMwMjg4IC8qIEluc3BlY3RvclBy
b2ZpbGVyQWdlbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5z
cGVjdG9yUHJvZmlsZXJBZ2VudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlG
MEQ2QjJEMTIxQkZFQkEwMDZDMDI4OCAvKiBJbnNwZWN0b3JQcm9maWxlckFnZW50LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluc3BlY3RvclByb2ZpbGVyQWdlbnQuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUYzQjk0N0QxMjI0MTc1ODAwNTMwNEU3IC8qIFNj
cmlwdEhlYXBTbmFwc2hvdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY3Jp
cHRIZWFwU25hcHNob3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTExNTEyLDgg
KzExNTE5LDggQEAKIAkJQThEMDY1QUQwQTI0NDZDRDAwNUU3MjAzIC8qIEpTSFRNTEZvcm1FbGVt
ZW50Q3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTSFRN
TEZvcm1FbGVtZW50Q3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQThE
MDZCMzcwQTI2NURDRDAwNUU3MjAzIC8qIEhUTUxOYW1lcy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gSFRNTE5hbWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUE4RDA2QjM4MEEyNjVEQ0QwMDVFNzIwMyAvKiBIVE1MTmFtZXMuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEhUTUxOYW1lcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCUE4REYzRkM2MDk3RkEwRkIwMDUyOTgxQiAvKiBIVE1MRm9ybUNvbGxlY3Rp
b24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhUTUxGb3JtQ29sbGVjdGlv
bi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlBOERGM0ZDNzA5N0ZBMEZCMDA1Mjk4
MUIgLyogSFRNTEZvcm1Db2xsZWN0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBIVE1MRm9ybUNvbGxlY3Rpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlBOERGM0ZDNjA5N0ZBMEZCMDA1Mjk4MUIgLyogSFRNTEZvcm1Db250cm9sc0NvbGxl
Y3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhUTUxGb3JtQ29udHJv
bHNDb2xsZWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE4REYzRkM3MDk3
RkEwRkIwMDUyOTgxQiAvKiBIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24u
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBOERGM0ZDODA5N0ZBMEZCMDA1Mjk4
MUIgLyogSFRNTENvbGxlY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEhUTUxDb2xsZWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4REYzRkM5
MDk3RkEwRkIwMDUyOTgxQiAvKiBIVE1MQ29sbGVjdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gSFRNTENvbGxlY3Rpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlBOERGM0ZDQTA5N0ZBMEZCMDA1Mjk4MUIgLyogSFRNTEJhc2VGb250RWxl
bWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSFRNTEJhc2VGb250RWxl
bWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTc1MjUsOCArMTc1MzIsOSBA
QAogCQkJCUE4Q0ZGNzk4MEExNTY5NzgwMDBBNDIzNCAvKiBIVE1MRm9udEVsZW1lbnQuY3BwICov
LAogCQkJCUE4Q0ZGNzlDMEExNTY5NzgwMDBBNDIzNCAvKiBIVE1MRm9udEVsZW1lbnQuaCAqLywK
IAkJCQkxQUUyQTlGNTBBMUNEQTU3MDBCNDJCMjUgLyogSFRNTEZvbnRFbGVtZW50LmlkbCAqLywK
LQkJCQlBOERGM0ZDNzA5N0ZBMEZCMDA1Mjk4MUIgLyogSFRNTEZvcm1Db2xsZWN0aW9uLmNwcCAq
LywKLQkJCQlBOERGM0ZDNjA5N0ZBMEZCMDA1Mjk4MUIgLyogSFRNTEZvcm1Db2xsZWN0aW9uLmgg
Ki8sCisJCQkJQThERjNGQzcwOTdGQTBGQjAwNTI5ODFCIC8qIEhUTUxGb3JtQ29udHJvbHNDb2xs
ZWN0aW9uLmNwcCAqLywKKwkJCQlBOERGM0ZDNjA5N0ZBMEZCMDA1Mjk4MUIgLyogSFRNTEZvcm1D
b250cm9sc0NvbGxlY3Rpb24uaCAqLywKKwkJCQk5QjFBQjA3OTE2NDhDNjlEMDA1MUYzRjIgLyog
SFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uaWRsICovLAogCQkJCUE4MTM2OUIzMDk3Mzc0RjUw
MEQ3NDQ2MyAvKiBIVE1MRm9ybUNvbnRyb2xFbGVtZW50LmNwcCAqLywKIAkJCQlBODEzNjlCMjA5
NzM3NEY1MDBENzQ0NjMgLyogSFRNTEZvcm1Db250cm9sRWxlbWVudC5oICovLAogCQkJCUUxNEYx
QzQyMTRCNURBQzYwMEVBOTAwOSAvKiBIVE1MRm9ybUNvbnRyb2xFbGVtZW50V2l0aFN0YXRlLmNw
cCAqLywKQEAgLTE4NDE0LDYgKzE4NDIyLDggQEAKIAkJCQkxQUUyQUExMzBBMUNEQUIzMDBCNDJC
MjUgLyogSlNIVE1MRmllbGRTZXRFbGVtZW50LmggKi8sCiAJCQkJMUFFMkFBMTQwQTFDREFCMzAw
QjQyQjI1IC8qIEpTSFRNTEZvbnRFbGVtZW50LmNwcCAqLywKIAkJCQkxQUUyQUExNTBBMUNEQUIz
MDBCNDJCMjUgLyogSlNIVE1MRm9udEVsZW1lbnQuaCAqLywKKwkJCQk5QkY5QTg3RTE2NDhERDJG
MDAxQzZCMjMgLyogSlNIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5jcHAgKi8sCisJCQkJOUJG
OUE4N0YxNjQ4REQyRjAwMUM2QjIzIC8qIEpTSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uaCAq
LywKIAkJCQlBOEQwNjRGOTBBMjNDMENDMDA1RTcyMDMgLyogSlNIVE1MRm9ybUVsZW1lbnQuY3Bw
ICovLAogCQkJCUE4RDA2NEZBMEEyM0MwQ0MwMDVFNzIwMyAvKiBKU0hUTUxGb3JtRWxlbWVudC5o
ICovLAogCQkJCUJDNDkxOEMwMEJGRUEwNTAwMDlENjMxNiAvKiBKU0hUTUxGcmFtZUVsZW1lbnQu
Y3BwICovLApAQCAtMjA0NTgsNiArMjA0NjgsNyBAQAogCQkJCUJDNTgyM0Y0MEMwQTk4REYwMDUz
RjFCNSAvKiBKU0hUTUxFbGVtZW50Q3VzdG9tLmNwcCAqLywKIAkJCQlCQzZENDRCRDBDMDdFRkI2
MDA3MkQyQzkgLyogSlNIVE1MRW1iZWRFbGVtZW50Q3VzdG9tLmNwcCAqLywKIAkJCQlFMUFEMTQy
MDEyOTVFQTZCMDBBQ0E5ODkgLyogSlNIVE1MRW1iZWRFbGVtZW50Q3VzdG9tLmggKi8sCisJCQkJ
OUIxQUIwN0IxNjQ4QzdDNDAwNTFGM0YyIC8qIEpTSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb25D
dXN0b20uY3BwICovLAogCQkJCUE4RDA2NUFEMEEyNDQ2Q0QwMDVFNzIwMyAvKiBKU0hUTUxGb3Jt
RWxlbWVudEN1c3RvbS5jcHAgKi8sCiAJCQkJQkMyRUQ3QTQwQzZDMEYzNjAwOTIwQkZGIC8qIEpT
SFRNTEZyYW1lRWxlbWVudEN1c3RvbS5jcHAgKi8sCiAJCQkJQkNENDFBQkEwQzA2MERFODAwQzBF
NDQ2IC8qIEpTSFRNTEZyYW1lU2V0RWxlbWVudEN1c3RvbS5jcHAgKi8sCkBAIC0yMzcwOSw3ICsy
MzcyMCw3IEBACiAJCQkJQTgxMzY5RDQwOTczNzRGNjAwRDc0NDYzIC8qIEhUTUxGaWVsZFNldEVs
ZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4Q0ZGN0E2MEExNTY5NzgwMDBBNDIzNCAvKiBI
VE1MRm9udEVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTk3N0IzODZGMTIyODgzRTkwMEI4
MUZGOCAvKiBIVE1MRm9ybWF0dGluZ0VsZW1lbnRMaXN0LmggaW4gSGVhZGVycyAqLywKLQkJCQlB
OERGM0ZDRTA5N0ZBMEZDMDA1Mjk4MUIgLyogSFRNTEZvcm1Db2xsZWN0aW9uLmggaW4gSGVhZGVy
cyAqLywKKwkJCQlBOERGM0ZDRTA5N0ZBMEZDMDA1Mjk4MUIgLyogSFRNTEZvcm1Db250cm9sc0Nv
bGxlY3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUE4MTM2OUNFMDk3Mzc0RjYwMEQ3NDQ2MyAv
KiBIVE1MRm9ybUNvbnRyb2xFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlFMTRGMUM0NTE0
QjVEQUM2MDBFQTkwMDkgLyogSFRNTEZvcm1Db250cm9sRWxlbWVudFdpdGhTdGF0ZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQTgxMzY5RDAwOTczNzRGNjAwRDc0NDYzIC8qIEhUTUxGb3JtRWxlbWVu
dC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNTY4Nyw2ICsyNTY5OCw3IEBACiAJCQkJM0ZGRkY5QTkx
NTlEOUE1NTAwMjBCQkQ1IC8qIFdlYktpdENTU1ZpZXdwb3J0UnVsZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJOTNDMzhCRkYxNjQ0NzNDNzAwMDkxRUIyIC8qIFNjcm9sbGluZ1N0YXRlRml4ZWROb2Rl
LmggaW4gSGVhZGVycyAqLywKIAkJCQk5M0MzOEMwMzE2NDQ3M0REMDAwOTFFQjIgLyogU2Nyb2xs
aW5nVHJlZUZpeGVkTm9kZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJOUJGOUE4ODExNjQ4REQyRjAw
MUM2QjIzIC8qIEpTSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uaCBpbiBIZWFkZXJzICovLAog
CQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpA
QCAtMjY5MTYsNyArMjY5MjgsNyBAQAogCQkJCUE4MTM2OUQ1MDk3Mzc0RjYwMEQ3NDQ2MyAvKiBI
VE1MRmllbGRTZXRFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4Q0ZGN0EyMEExNTY5
NzgwMDBBNDIzNCAvKiBIVE1MRm9udEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTc3
QjM4NkUxMjI4ODNFOTAwQjgxRkY4IC8qIEhUTUxGb3JtYXR0aW5nRWxlbWVudExpc3QuY3BwIGlu
IFNvdXJjZXMgKi8sCi0JCQkJQThERjNGQ0YwOTdGQTBGQzAwNTI5ODFCIC8qIEhUTUxGb3JtQ29s
bGVjdGlvbi5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlBOERGM0ZDRjA5N0ZBMEZDMDA1Mjk4MUIg
LyogSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTgx
MzY5Q0YwOTczNzRGNjAwRDc0NDYzIC8qIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJRTE0RjFDNDQxNEI1REFDNjAwRUE5MDA5IC8qIEhUTUxGb3JtQ29udHJv
bEVsZW1lbnRXaXRoU3RhdGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTgxMzY5RDEwOTczNzRG
NjAwRDc0NDYzIC8qIEhUTUxGb3JtRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKQEAgLTI3MzMx
LDYgKzI3MzQzLDcgQEAKIAkJCQlCQzZENDRCRTBDMDdFRkI2MDA3MkQyQzkgLyogSlNIVE1MRW1i
ZWRFbGVtZW50Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBRTJBQTI2MEExQ0RBQjQw
MEI0MkIyNSAvKiBKU0hUTUxGaWVsZFNldEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MUFFMkFBMjgwQTFDREFCNDAwQjQyQjI1IC8qIEpTSFRNTEZvbnRFbGVtZW50LmNwcCBpbiBTb3Vy
Y2VzICovLAorCQkJCTlCMUFCMDdDMTY0OEM3QzQwMDUxRjNGMiAvKiBKU0hUTUxGb3JtQ29udHJv
bHNDb2xsZWN0aW9uQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4RDA2NEZCMEEyM0Mw
Q0MwMDVFNzIwMyAvKiBKU0hUTUxGb3JtRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlB
OEQwNjVBRTBBMjQ0NkNEMDA1RTcyMDMgLyogSlNIVE1MRm9ybUVsZW1lbnRDdXN0b20uY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQkM0OTE4QzYwQkZFQTA1MDAwOUQ2MzE2IC8qIEpTSFRNTEZyYW1l
RWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKQEAgLTI4NzcyLDYgKzI4Nzg1LDcgQEAKIAkJCQk0
RkZDMDIyRDE2NDNCNzI2MDA0RTE2MzggLyogRWxlbWVudFJhcmVEYXRhLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTkzQzM4QkZFMTY0NDczQzcwMDA5MUVCMiAvKiBTY3JvbGxpbmdTdGF0ZUZpeGVk
Tm9kZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5M0MzOEMwNDE2NDQ3M0REMDAwOTFFQjIgLyog
U2Nyb2xsaW5nVHJlZUZpeGVkTm9kZS5tbSBpbiBTb3VyY2VzICovLAorCQkJCTlCRjlBODgwMTY0
OEREMkYwMDFDNkIyMyAvKiBKU0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAw
OwogCQl9OwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNCaW5kaW5nc0FsbElu
T25lLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0JpbmRp
bmdzQWxsSW5PbmUuY3BwCShyZXZpc2lvbiAxMzM1NjgpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0JpbmRpbmdzQWxsSW5PbmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04OSw2ICs4
OSw3IEBACiAjaW5jbHVkZSAiSlNIVE1MRG9jdW1lbnRDdXN0b20uY3BwIgogI2luY2x1ZGUgIkpT
SFRNTEVsZW1lbnRDdXN0b20uY3BwIgogI2luY2x1ZGUgIkpTSFRNTEVtYmVkRWxlbWVudEN1c3Rv
bS5jcHAiCisjaW5jbHVkZSAiSlNIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbkN1c3RvbS5jcHAi
CiAjaW5jbHVkZSAiSlNIVE1MRm9ybUVsZW1lbnRDdXN0b20uY3BwIgogI2luY2x1ZGUgIkpTSFRN
TEZyYW1lRWxlbWVudEN1c3RvbS5jcHAiCiAjaW5jbHVkZSAiSlNIVE1MRnJhbWVTZXRFbGVtZW50
Q3VzdG9tLmNwcCIKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEFsbENv
bGxlY3Rpb25DdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTSFRNTEFsbENvbGxlY3Rpb25DdXN0b20uY3BwCShyZXZpc2lvbiAxMzM1NjgpCisrKyBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxBbGxDb2xsZWN0aW9uQ3VzdG9tLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNTAsOSArNTAsOCBAQCBzdGF0aWMgSlNWYWx1ZSBnZXROYW1lZEl0
ZW1zKEV4ZWNTdGF0ZSogCiAgICAgaWYgKG5hbWVkSXRlbXMuc2l6ZSgpID09IDEpCiAgICAgICAg
IHJldHVybiB0b0pTKGV4ZWMsIGNvbGxlY3Rpb24tPmdsb2JhbE9iamVjdCgpLCBuYW1lZEl0ZW1z
WzBdLmdldCgpKTsKIAotICAgIC8vIEZJWE1FOiBIVE1MNSBzcGVjaWZpZXMgdGhhdCB0aGlzIHNo
b3VsZCBiZSBhIER5bmFtaWNOb2RlTGlzdC4KLSAgICAvLyBGSVhNRTogSFRNTDUgc3BlY2lmaWVz
IHRoYXQgbm9uLUhUTUxPcHRpb25zQ29sbGVjdGlvbiBjb2xsZWN0aW9ucyBzaG91bGQgcmV0dXJu
Ci0gICAgLy8gdGhlIGZpcnN0IG1hdGNoaW5nIGl0ZW0gaW5zdGVhZCBvZiBhIE5vZGVMaXN0Lgor
ICAgIC8vIEZJWE1FOiBIVE1MNSBzcGVjaWZpY2F0aW9uIHNheXMgdGhpcyBzaG91bGQgYmUgYSBI
VE1MQ29sbGVjdGlvbi4KKyAgICAvLyBodHRwOi8vd3d3LndoYXR3Zy5vcmcvc3BlY3Mvd2ViLWFw
cHMvY3VycmVudC13b3JrL211bHRpcGFnZS9jb21tb24tZG9tLWludGVyZmFjZXMuaHRtbCNodG1s
YWxsY29sbGVjdGlvbgogICAgIHJldHVybiB0b0pTKGV4ZWMsIGNvbGxlY3Rpb24tPmdsb2JhbE9i
amVjdCgpLCBTdGF0aWNOb2RlTGlzdDo6YWRvcHQobmFtZWRJdGVtcykuZ2V0KCkpOwogfQogCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxDb2xsZWN0aW9uQ3VzdG9tLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxDb2xsZWN0
aW9uQ3VzdG9tLmNwcAkocmV2aXNpb24gMTMzNTY4KQorKysgU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNIVE1MQ29sbGVjdGlvbkN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIwLDEx
ICsyMCwxMyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkpTSFRNTENvbGxlY3Rp
b24uaCIKIAorI2luY2x1ZGUgIkhUTUxBbGxDb2xsZWN0aW9uLmgiCiAjaW5jbHVkZSAiSFRNTENv
bGxlY3Rpb24uaCIKKyNpbmNsdWRlICJIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5oIgogI2lu
Y2x1ZGUgIkhUTUxPcHRpb25zQ29sbGVjdGlvbi5oIgotI2luY2x1ZGUgIkhUTUxBbGxDb2xsZWN0
aW9uLmgiCiAjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCiAjaW5jbHVkZSAiSlNIVE1MQWxsQ29s
bGVjdGlvbi5oIgorI2luY2x1ZGUgIkpTSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uaCIKICNp
bmNsdWRlICJKU0hUTUxPcHRpb25zQ29sbGVjdGlvbi5oIgogI2luY2x1ZGUgIkpTTm9kZS5oIgog
I2luY2x1ZGUgIkpTTm9kZUxpc3QuaCIKQEAgLTM5LDI2ICs0MSw2IEBAIHVzaW5nIG5hbWVzcGFj
ZSBKU0M7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIEpTVmFsdWUgZ2V0TmFtZWRJ
dGVtcyhFeGVjU3RhdGUqIGV4ZWMsIEpTSFRNTENvbGxlY3Rpb24qIGNvbGxlY3Rpb24sIFByb3Bl
cnR5TmFtZSBwcm9wZXJ0eU5hbWUpCi17Ci0gICAgVmVjdG9yPFJlZlB0cjxOb2RlPiA+IG5hbWVk
SXRlbXM7Ci0gICAgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lID0gcHJvcGVydHlOYW1lVG9BdG9t
aWNTdHJpbmcocHJvcGVydHlOYW1lKTsKLSAgICBjb2xsZWN0aW9uLT5pbXBsKCktPm5hbWVkSXRl
bXMobmFtZSwgbmFtZWRJdGVtcyk7Ci0KLSAgICBpZiAobmFtZWRJdGVtcy5pc0VtcHR5KCkpCi0g
ICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwotICAgIGlmIChuYW1lZEl0ZW1zLnNpemUoKSA9
PSAxKQotICAgICAgICByZXR1cm4gdG9KUyhleGVjLCBjb2xsZWN0aW9uLT5nbG9iYWxPYmplY3Qo
KSwgbmFtZWRJdGVtc1swXS5nZXQoKSk7Ci0KLSAgICBpZiAoY29sbGVjdGlvbi0+aW1wbCgpLT50
eXBlKCkgPT0gRm9ybUNvbnRyb2xzKQotICAgICAgIHJldHVybiB0b0pTKGV4ZWMsIGNvbGxlY3Rp
b24tPmdsb2JhbE9iamVjdCgpLCBjb2xsZWN0aW9uLT5pbXBsKCktPmJhc2UoKS0+cmFkaW9Ob2Rl
TGlzdChuYW1lKS5nZXQoKSk7Ci0KLSAgICAvLyBGSVhNRTogSFRNTDUgc3BlY2lmaWVzIHRoYXQg
dGhpcyBzaG91bGQgYmUgYSBEeW5hbWljTm9kZUxpc3QuCi0gICAgLy8gRklYTUU6IEhUTUw1IHNw
ZWNpZmllcyB0aGF0IG5vbi1IVE1MT3B0aW9uc0NvbGxlY3Rpb24gY29sbGVjdGlvbnMgc2hvdWxk
IHJldHVybgotICAgIC8vIHRoZSBmaXJzdCBtYXRjaGluZyBpdGVtIGluc3RlYWQgb2YgYSBOb2Rl
TGlzdC4KLSAgICByZXR1cm4gdG9KUyhleGVjLCBjb2xsZWN0aW9uLT5nbG9iYWxPYmplY3QoKSwg
U3RhdGljTm9kZUxpc3Q6OmFkb3B0KG5hbWVkSXRlbXMpLmdldCgpKTsKLX0KLQogYm9vbCBKU0hU
TUxDb2xsZWN0aW9uOjpjYW5HZXRJdGVtc0Zvck5hbWUoRXhlY1N0YXRlKiwgSFRNTENvbGxlY3Rp
b24qIGNvbGxlY3Rpb24sIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCiB7CiAgICAgcmV0dXJu
IGNvbGxlY3Rpb24tPmhhc05hbWVkSXRlbShwcm9wZXJ0eU5hbWVUb0F0b21pY1N0cmluZyhwcm9w
ZXJ0eU5hbWUpKTsKQEAgLTY2LDEzICs0OCw5IEBAIGJvb2wgSlNIVE1MQ29sbGVjdGlvbjo6Y2Fu
R2V0SXRlbXNGb3JOYW0KIAogSlNWYWx1ZSBKU0hUTUxDb2xsZWN0aW9uOjpuYW1lR2V0dGVyKEV4
ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFt
ZSkKIHsKLSAgICBKU0hUTUxDb2xsZWN0aW9uKiB0aGlzT2JqID0ganNDYXN0PEpTSFRNTENvbGxl
Y3Rpb24qPihhc09iamVjdChzbG90QmFzZSkpOwotICAgIHJldHVybiBnZXROYW1lZEl0ZW1zKGV4
ZWMsIHRoaXNPYmosIHByb3BlcnR5TmFtZSk7Ci19Ci0KLUpTVmFsdWUgSlNIVE1MQ29sbGVjdGlv
bjo6bmFtZWRJdGVtKEV4ZWNTdGF0ZSogZXhlYykKLXsKLSAgICByZXR1cm4gZ2V0TmFtZWRJdGVt
cyhleGVjLCB0aGlzLCBJZGVudGlmaWVyKGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KDApLnRvU3RyaW5n
KGV4ZWMpLT52YWx1ZShleGVjKSkpOworICAgIEpTSFRNTENvbGxlY3Rpb24qIGNvbGxlY3Rpb24g
PSBqc0Nhc3Q8SlNIVE1MQ29sbGVjdGlvbio+KGFzT2JqZWN0KHNsb3RCYXNlKSk7CisgICAgY29u
c3QgQXRvbWljU3RyaW5nJiBuYW1lID0gcHJvcGVydHlOYW1lVG9BdG9taWNTdHJpbmcocHJvcGVy
dHlOYW1lKTsKKyAgICByZXR1cm4gdG9KUyhleGVjLCBjb2xsZWN0aW9uLT5nbG9iYWxPYmplY3Qo
KSwgY29sbGVjdGlvbi0+aW1wbCgpLT5uYW1lZEl0ZW0obmFtZSkpOwogfQogCiBKU1ZhbHVlIHRv
SlMoRXhlY1N0YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBIVE1M
Q29sbGVjdGlvbiogY29sbGVjdGlvbikKQEAgLTg2LDE4ICs2NCwxNyBAQCBKU1ZhbHVlIHRvSlMo
RXhlY1N0YXRlKiBleGVjLCBKU0RPTUdsb2JhCiAgICAgICAgIHJldHVybiB3cmFwcGVyOwogCiAg
ICAgc3dpdGNoIChjb2xsZWN0aW9uLT50eXBlKCkpIHsKLSAgICAgICAgY2FzZSBTZWxlY3RPcHRp
b25zOgotICAgICAgICAgICAgd3JhcHBlciA9IENSRUFURV9ET01fV1JBUFBFUihleGVjLCBnbG9i
YWxPYmplY3QsIEhUTUxPcHRpb25zQ29sbGVjdGlvbiwgY29sbGVjdGlvbik7Ci0gICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgY2FzZSBEb2NBbGw6Ci0gICAgICAgICAgICB3cmFwcGVyID0gQ1JF
QVRFX0RPTV9XUkFQUEVSKGV4ZWMsIGdsb2JhbE9iamVjdCwgSFRNTEFsbENvbGxlY3Rpb24sIGNv
bGxlY3Rpb24pOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAg
ICAgICB3cmFwcGVyID0gQ1JFQVRFX0RPTV9XUkFQUEVSKGV4ZWMsIGdsb2JhbE9iamVjdCwgSFRN
TENvbGxlY3Rpb24sIGNvbGxlY3Rpb24pOwotICAgICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBG
b3JtQ29udHJvbHM6CisgICAgICAgIHJldHVybiBDUkVBVEVfRE9NX1dSQVBQRVIoZXhlYywgZ2xv
YmFsT2JqZWN0LCBIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbiwgY29sbGVjdGlvbik7CisgICAg
Y2FzZSBTZWxlY3RPcHRpb25zOgorICAgICAgICByZXR1cm4gQ1JFQVRFX0RPTV9XUkFQUEVSKGV4
ZWMsIGdsb2JhbE9iamVjdCwgSFRNTE9wdGlvbnNDb2xsZWN0aW9uLCBjb2xsZWN0aW9uKTsKKyAg
ICBjYXNlIERvY0FsbDoKKyAgICAgICAgcmV0dXJuIENSRUFURV9ET01fV1JBUFBFUihleGVjLCBn
bG9iYWxPYmplY3QsIEhUTUxBbGxDb2xsZWN0aW9uLCBjb2xsZWN0aW9uKTsKKyAgICBkZWZhdWx0
OgorICAgICAgICBicmVhazsKICAgICB9CiAKLSAgICByZXR1cm4gd3JhcHBlcjsKKyAgICByZXR1
cm4gQ1JFQVRFX0RPTV9XUkFQUEVSKGV4ZWMsIGdsb2JhbE9iamVjdCwgSFRNTENvbGxlY3Rpb24s
IGNvbGxlY3Rpb24pOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uQ3VzdG9tLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxGb3JtQ29u
dHJvbHNDb2xsZWN0aW9uQ3VzdG9tLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb25DdXN0b20uY3BwCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDcxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA3LCAyMDA4
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMg
ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkg
aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICog
TGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0
aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55
IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRo
ZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFO
VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklM
SVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAq
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAq
IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZp
bGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9z
dG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIkhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmgiCisKKworI2luY2x1ZGUgIkhUTUxB
bGxDb2xsZWN0aW9uLmgiCisjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCisjaW5jbHVkZSAiSlNI
VE1MQ29sbGVjdGlvbi5oIgorI2luY2x1ZGUgIkpTSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24u
aCIKKyNpbmNsdWRlICJKU05vZGUuaCIKKyNpbmNsdWRlICJKU05vZGVMaXN0LmgiCisjaW5jbHVk
ZSAiSlNSYWRpb05vZGVMaXN0LmgiCisjaW5jbHVkZSAiTm9kZS5oIgorI2luY2x1ZGUgIlJhZGlv
Tm9kZUxpc3QuaCIKKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisjaW5jbHVkZSA8d3RmL3RleHQv
QXRvbWljU3RyaW5nLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBKU0M7CisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworc3RhdGljIEpTVmFsdWUgZ2V0TmFtZWRJdGVtcyhFeGVjU3RhdGUqIGV4ZWMsIEpT
SFRNTENvbGxlY3Rpb24qIGNvbGxlY3Rpb24sIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCit7
CisgICAgVmVjdG9yPFJlZlB0cjxOb2RlPiA+IG5hbWVkSXRlbXM7CisgICAgY29uc3QgQXRvbWlj
U3RyaW5nJiBuYW1lID0gcHJvcGVydHlOYW1lVG9BdG9taWNTdHJpbmcocHJvcGVydHlOYW1lKTsK
KyAgICBjb2xsZWN0aW9uLT5pbXBsKCktPm5hbWVkSXRlbXMobmFtZSwgbmFtZWRJdGVtcyk7CisK
KyAgICBpZiAobmFtZWRJdGVtcy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBqc1VuZGVmaW5l
ZCgpOworICAgIGlmIChuYW1lZEl0ZW1zLnNpemUoKSA9PSAxKQorICAgICAgICByZXR1cm4gdG9K
UyhleGVjLCBjb2xsZWN0aW9uLT5nbG9iYWxPYmplY3QoKSwgbmFtZWRJdGVtc1swXS5nZXQoKSk7
CisKKyAgICBBU1NFUlQoY29sbGVjdGlvbi0+aW1wbCgpLT50eXBlKCkgPT0gRm9ybUNvbnRyb2xz
KTsKKyAgICByZXR1cm4gdG9KUyhleGVjLCBjb2xsZWN0aW9uLT5nbG9iYWxPYmplY3QoKSwgY29s
bGVjdGlvbi0+aW1wbCgpLT5iYXNlKCktPnJhZGlvTm9kZUxpc3QobmFtZSkuZ2V0KCkpOworfQor
Citib29sIEpTSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb246OmNhbkdldEl0ZW1zRm9yTmFtZShF
eGVjU3RhdGUqLCBIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbiogY29sbGVjdGlvbiwgUHJvcGVy
dHlOYW1lIHByb3BlcnR5TmFtZSkKK3sKKyAgICByZXR1cm4gY29sbGVjdGlvbi0+aGFzTmFtZWRJ
dGVtKHByb3BlcnR5TmFtZVRvQXRvbWljU3RyaW5nKHByb3BlcnR5TmFtZSkpOworfQorCitKU1Zh
bHVlIEpTSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb246Om5hbWVHZXR0ZXIoRXhlY1N0YXRlKiBl
eGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQoreworICAg
IEpTSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24qIHRoaXNPYmogPSBqc0Nhc3Q8SlNIVE1MRm9y
bUNvbnRyb2xzQ29sbGVjdGlvbio+KGFzT2JqZWN0KHNsb3RCYXNlKSk7CisgICAgcmV0dXJuIGdl
dE5hbWVkSXRlbXMoZXhlYywgdGhpc09iaiwgcHJvcGVydHlOYW1lKTsKK30KKworSlNWYWx1ZSBK
U0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uOjpuYW1lZEl0ZW0oRXhlY1N0YXRlKiBleGVjKQor
eworICAgIHJldHVybiBnZXROYW1lZEl0ZW1zKGV4ZWMsIHRoaXMsIElkZW50aWZpZXIoZXhlYywg
ZXhlYy0+YXJndW1lbnQoMCkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKSk7Cit9CisKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
SFRNTE9wdGlvbnNDb2xsZWN0aW9uQ3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0hUTUxPcHRpb25zQ29sbGVjdGlvbkN1c3RvbS5jcHAJKHJldmlz
aW9uIDEzMzU2OCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTE9wdGlvbnND
b2xsZWN0aW9uQ3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgsNiArMjgsOCBAQAogI2lu
Y2x1ZGUgIkpTSFRNTE9wdGlvbkVsZW1lbnQuaCIKICNpbmNsdWRlICJKU0hUTUxTZWxlY3RFbGVt
ZW50LmgiCiAjaW5jbHVkZSAiSlNIVE1MU2VsZWN0RWxlbWVudEN1c3RvbS5oIgorI2luY2x1ZGUg
IkpTTm9kZUxpc3QuaCIKKyNpbmNsdWRlICJTdGF0aWNOb2RlTGlzdC5oIgogCiAjaW5jbHVkZSA8
d3RmL01hdGhFeHRyYXMuaD4KIApAQCAtMzUsNiArMzcsMzcgQEAgdXNpbmcgbmFtZXNwYWNlIEpT
QzsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitzdGF0aWMgSlNWYWx1ZSBnZXROYW1lZEl0ZW1z
KEV4ZWNTdGF0ZSogZXhlYywgSlNIVE1MQ29sbGVjdGlvbiogY29sbGVjdGlvbiwgUHJvcGVydHlO
YW1lIHByb3BlcnR5TmFtZSkKK3sKKyAgICBWZWN0b3I8UmVmUHRyPE5vZGU+ID4gbmFtZWRJdGVt
czsKKyAgICBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUgPSBwcm9wZXJ0eU5hbWVUb0F0b21pY1N0
cmluZyhwcm9wZXJ0eU5hbWUpOworICAgIGNvbGxlY3Rpb24tPmltcGwoKS0+bmFtZWRJdGVtcyhu
YW1lLCBuYW1lZEl0ZW1zKTsKKworICAgIGlmIChuYW1lZEl0ZW1zLmlzRW1wdHkoKSkKKyAgICAg
ICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CisgICAgaWYgKG5hbWVkSXRlbXMuc2l6ZSgpID09IDEp
CisgICAgICAgIHJldHVybiB0b0pTKGV4ZWMsIGNvbGxlY3Rpb24tPmdsb2JhbE9iamVjdCgpLCBu
YW1lZEl0ZW1zWzBdLmdldCgpKTsKKworICAgIC8vIEZJWE1FOiBIVE1MNSBzcGVjaWZpZXMgdGhh
dCB0aGlzIHNob3VsZCBiZSBhIER5bmFtaWNOb2RlTGlzdC4KKyAgICByZXR1cm4gdG9KUyhleGVj
LCBjb2xsZWN0aW9uLT5nbG9iYWxPYmplY3QoKSwgU3RhdGljTm9kZUxpc3Q6OmFkb3B0KG5hbWVk
SXRlbXMpLmdldCgpKTsKK30KKworYm9vbCBKU0hUTUxPcHRpb25zQ29sbGVjdGlvbjo6Y2FuR2V0
SXRlbXNGb3JOYW1lKEV4ZWNTdGF0ZSosIEhUTUxPcHRpb25zQ29sbGVjdGlvbiogY29sbGVjdGlv
biwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKK3sKKyAgICByZXR1cm4gY29sbGVjdGlvbi0+
aGFzTmFtZWRJdGVtKHByb3BlcnR5TmFtZVRvQXRvbWljU3RyaW5nKHByb3BlcnR5TmFtZSkpOwor
fQorCitKU1ZhbHVlIEpTSFRNTE9wdGlvbnNDb2xsZWN0aW9uOjpuYW1lR2V0dGVyKEV4ZWNTdGF0
ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKK3sK
KyAgICBKU0hUTUxPcHRpb25zQ29sbGVjdGlvbiogdGhpc09iaiA9IGpzQ2FzdDxKU0hUTUxPcHRp
b25zQ29sbGVjdGlvbio+KGFzT2JqZWN0KHNsb3RCYXNlKSk7CisgICAgcmV0dXJuIGdldE5hbWVk
SXRlbXMoZXhlYywgdGhpc09iaiwgcHJvcGVydHlOYW1lKTsKK30KKworSlNWYWx1ZSBKU0hUTUxP
cHRpb25zQ29sbGVjdGlvbjo6bmFtZWRJdGVtKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICByZXR1
cm4gZ2V0TmFtZWRJdGVtcyhleGVjLCB0aGlzLCBJZGVudGlmaWVyKGV4ZWMsIGV4ZWMtPmFyZ3Vt
ZW50KDApLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSkpOworfQorCiBKU1ZhbHVlIEpTSFRN
TE9wdGlvbnNDb2xsZWN0aW9uOjpsZW5ndGgoRXhlY1N0YXRlKikgY29uc3QKIHsKICAgICBIVE1M
T3B0aW9uc0NvbGxlY3Rpb24qIGltcCA9IHN0YXRpY19jYXN0PEhUTUxPcHRpb25zQ29sbGVjdGlv
bio+KGltcGwoKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVH
ZW5lcmF0b3JKUy5wbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL0NvZGVHZW5lcmF0b3JKUy5wbQkocmV2aXNpb24gMTMzNTY4KQorKysgU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0JKHdvcmtpbmcgY29weSkKQEAg
LTQwOCw3ICs0MDgsNyBAQCBzdWIgR2VuZXJhdGVHZXRPd25Qcm9wZXJ0eVNsb3RCb2R5CiAKICAg
ICBteSBAZ2V0T3duUHJvcGVydHlTbG90SW1wbCA9ICgpOwogCi0gICAgaWYgKCRpbnRlcmZhY2VO
YW1lIGVxICJOYW1lZE5vZGVNYXAiIG9yICRpbnRlcmZhY2VOYW1lIGVxICJIVE1MQ29sbGVjdGlv
biIgb3IgJGludGVyZmFjZU5hbWUgZXEgIkhUTUxBbGxDb2xsZWN0aW9uIiBvciAkaW50ZXJmYWNl
TmFtZSBlcSAiSFRNTFByb3BlcnRpZXNDb2xsZWN0aW9uIikgeworICAgIGlmICgkaW50ZXJmYWNl
TmFtZSBlcSAiTmFtZWROb2RlTWFwIiBvciAkaW50ZXJmYWNlTmFtZSA9fiAvXkhUTUxcdypDb2xs
ZWN0aW9uJC8pIHsKICAgICAgICAgcHVzaChAZ2V0T3duUHJvcGVydHlTbG90SW1wbCwgIiAgICAk
e25hbWVzcGFjZU1heWJlfUpTVmFsdWUgcHJvdG8gPSB0aGlzT2JqZWN0LT5wcm90b3R5cGUoKTtc
biIpOwogICAgICAgICBwdXNoKEBnZXRPd25Qcm9wZXJ0eVNsb3RJbXBsLCAiICAgIGlmIChwcm90
by5pc09iamVjdCgpICYmIGpzQ2FzdDwke25hbWVzcGFjZU1heWJlfUpTT2JqZWN0Kj4oYXNPYmpl
Y3QocHJvdG8pKS0+aGFzUHJvcGVydHkoZXhlYywgcHJvcGVydHlOYW1lKSlcbiIpOwogICAgICAg
ICBwdXNoKEBnZXRPd25Qcm9wZXJ0eVNsb3RJbXBsLCAiICAgICAgICByZXR1cm4gZmFsc2U7XG5c
biIpOwpAQCAtNTAwLDcgKzUwMCw3IEBAIHN1YiBHZW5lcmF0ZUdldE93blByb3BlcnR5RGVzY3Jp
cHRvckJvZHkKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHJldHVybiBmYWxz
ZTtcbiIpOwogICAgIH0KICAgICAKLSAgICBpZiAoJGludGVyZmFjZU5hbWUgZXEgIk5hbWVkTm9k
ZU1hcCIgb3IgJGludGVyZmFjZU5hbWUgZXEgIkhUTUxDb2xsZWN0aW9uIiBvciAkaW50ZXJmYWNl
TmFtZSBlcSAiSFRNTEFsbENvbGxlY3Rpb24iIG9yICRpbnRlcmZhY2VOYW1lIGVxICJIVE1MUHJv
cGVydGllc0NvbGxlY3Rpb24iKSB7CisgICAgaWYgKCRpbnRlcmZhY2VOYW1lIGVxICJOYW1lZE5v
ZGVNYXAiIG9yICRpbnRlcmZhY2VOYW1lID1+IC9eSFRNTFx3KkNvbGxlY3Rpb24kLykgewogICAg
ICAgICBwdXNoKEBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JJbXBsLCAiICAgICR7bmFtZXNwYWNl
TWF5YmV9SlNWYWx1ZSBwcm90byA9IHRoaXNPYmplY3QtPnByb3RvdHlwZSgpO1xuIik7CiAgICAg
ICAgIHB1c2goQGdldE93blByb3BlcnR5RGVzY3JpcHRvckltcGwsICIgICAgaWYgKHByb3RvLmlz
T2JqZWN0KCkgJiYganNDYXN0PCR7bmFtZXNwYWNlTWF5YmV9SlNPYmplY3QqPihhc09iamVjdChw
cm90bykpLT5oYXNQcm9wZXJ0eShleGVjLCBwcm9wZXJ0eU5hbWUpKVxuIik7CiAgICAgICAgIHB1
c2goQGdldE93blByb3BlcnR5RGVzY3JpcHRvckltcGwsICIgICAgICAgIHJldHVybiBmYWxzZTtc
blxuIik7CkBAIC0yNDM0LDcgKzI0MzQsNyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgog
ICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJuIHRvSlMoZXhlYywgdGhp
c09iai0+Z2xvYmFsT2JqZWN0KCksIHN0YXRpY19jYXN0PCRpbXBsQ2xhc3NOYW1lKj4odGhpc09i
ai0+aW1wbCgpKS0+aXRlbShpbmRleCkpO1xuIik7CiAgICAgICAgIH0KICAgICAgICAgcHVzaChA
aW1wbENvbnRlbnQsICJ9XG5cbiIpOwotICAgICAgICBpZiAoJGludGVyZmFjZU5hbWUgZXEgIkhU
TUxDb2xsZWN0aW9uIiBvciAkaW50ZXJmYWNlTmFtZSBlcSAiSFRNTEFsbENvbGxlY3Rpb24iIG9y
ICRpbnRlcmZhY2VOYW1lIGVxICJSYWRpb05vZGVMaXN0IikgeworICAgICAgICBpZiAoJGludGVy
ZmFjZU5hbWUgPX4gL15IVE1MXHcqQ29sbGVjdGlvbiQvIG9yICRpbnRlcmZhY2VOYW1lIGVxICJS
YWRpb05vZGVMaXN0IikgewogICAgICAgICAgICAgJGltcGxJbmNsdWRlc3siSlNOb2RlLmgifSA9
IDE7CiAgICAgICAgICAgICAkaW1wbEluY2x1ZGVzeyJOb2RlLmgifSA9IDE7CiAgICAgICAgIH0K
QEAgLTI0NTAsNyArMjQ1MCw3IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICByZXR1cm4ganNOYU4oKTtcbiIpOwogICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1cm4gSlNWYWx1ZShyZXN1bHQpO1xuIik7CiAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAifVxuXG4iKTsKLSAgICAgICAgaWYgKCRpbnRlcmZh
Y2VOYW1lIGVxICJIVE1MQ29sbGVjdGlvbiIgb3IgJGludGVyZmFjZU5hbWUgZXEgIkhUTUxBbGxD
b2xsZWN0aW9uIikgeworICAgICAgICBpZiAoJGludGVyZmFjZU5hbWUgPX4gL15IVE1MXHcqQ29s
bGVjdGlvbiQvKSB7CiAgICAgICAgICAgICAkaW1wbEluY2x1ZGVzeyJKU05vZGUuaCJ9ID0gMTsK
ICAgICAgICAgICAgICRpbXBsSW5jbHVkZXN7Ik5vZGUuaCJ9ID0gMTsKICAgICAgICAgfQpJbmRl
eDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9y
VjgucG0JKHJldmlzaW9uIDEzMzU2OCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvQ29kZUdlbmVyYXRvclY4LnBtCSh3b3JraW5nIGNvcHkpCkBAIC0yNDkwLDEzICsyNDkwLDYg
QEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb25OYW1lZFByb3BlcnR5RwogICAgIG15ICRpbnRl
cmZhY2VOYW1lID0gJGRhdGFOb2RlLT5uYW1lOwogICAgIG15ICRoYXNDdXN0b21OYW1lZEdldHRl
ciA9ICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbU5hbWVkR2V0dGVyIn0g
fHwgJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tR2V0T3duUHJvcGVydHlT
bG90In07CiAKLSAgICAjIEZJWE1FOiBSZW1vdmUgaGFyZC1jb2RlZCBIVE1MT3B0aW9uc0NvbGxl
Y3Rpb24gcmVmZXJlbmNlIGJ5IGNoYW5naW5nIEhUTUxPcHRpb25zQ29sbGVjdGlvbiB0byBub3Qg
aW5oZXJpdAotICAgICMgZnJvbSBIVE1MQ29sbGVjdGlvbiBwZXIgVzNDIHNwZWMgKGh0dHA6Ly93
d3cudzMub3JnL1RSLzIwMDMvUkVDLURPTS1MZXZlbC0yLUhUTUwtMjAwMzAxMDkvaHRtbC5odG1s
I0hUTUxPcHRpb25zQ29sbGVjdGlvbikuCi0gICAgaWYgKCRpbnRlcmZhY2VOYW1lIGVxICJIVE1M
T3B0aW9uc0NvbGxlY3Rpb24iKSB7Ci0gICAgICAgICRpbnRlcmZhY2VOYW1lID0gIkhUTUxDb2xs
ZWN0aW9uIjsKLSAgICAgICAgJGhhc0N1c3RvbU5hbWVkR2V0dGVyID0gMTsKLSAgICB9Ci0KICAg
ICBpZiAoJGludGVyZmFjZU5hbWUgZXEgIkhUTUxBcHBsZXRFbGVtZW50IiB8fCAkaW50ZXJmYWNl
TmFtZSBlcSAiSFRNTEVtYmVkRWxlbWVudCIgfHwgJGludGVyZmFjZU5hbWUgZXEgIkhUTUxPYmpl
Y3RFbGVtZW50IikgewogICAgICAgICAkaGFzQ3VzdG9tTmFtZWRHZXR0ZXIgPSAxOwogICAgIH0K
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxBbGxDb2xsZWN0
aW9uQ3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9j
dXN0b20vVjhIVE1MQWxsQ29sbGVjdGlvbkN1c3RvbS5jcHAJKHJldmlzaW9uIDEzMzU2OCkKKysr
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxBbGxDb2xsZWN0aW9uQ3Vz
dG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDYsMTEgKzQ2LDEzIEBAIHN0YXRpYyB2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gZ2V0TmFtZWRJdGUKICAgICBjb2xsZWN0aW9uLT5uYW1lZEl0ZW1zKG5h
bWUsIG5hbWVkSXRlbXMpOwogCiAgICAgaWYgKCFuYW1lZEl0ZW1zLnNpemUoKSkKLSAgICAgICAg
cmV0dXJuIHY4VW5kZWZpbmVkKCk7CisgICAgICAgIHJldHVybiB2OFVuZGVmaW5lZChpc29sYXRl
KTsKIAogICAgIGlmIChuYW1lZEl0ZW1zLnNpemUoKSA9PSAxKQogICAgICAgICByZXR1cm4gdG9W
OChuYW1lZEl0ZW1zLmF0KDApLnJlbGVhc2UoKSwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsK
IAorICAgIC8vIEZJWE1FOiBIVE1MNSBzcGVjaWZpY2F0aW9uIHNheXMgdGhpcyBzaG91bGQgYmUg
YSBIVE1MQ29sbGVjdGlvbi4KKyAgICAvLyBodHRwOi8vd3d3LndoYXR3Zy5vcmcvc3BlY3Mvd2Vi
LWFwcHMvY3VycmVudC13b3JrL211bHRpcGFnZS9jb21tb24tZG9tLWludGVyZmFjZXMuaHRtbCNo
dG1sYWxsY29sbGVjdGlvbgogICAgIHJldHVybiB0b1Y4KFY4TmFtZWROb2Rlc0NvbGxlY3Rpb246
OmNyZWF0ZShuYW1lZEl0ZW1zKSwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsKIH0KIApAQCAt
NjEsNyArNjMsNyBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGdldEl0ZW0oSFRNCiAg
ICAgICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiByZXN1bHQgPSBnZXROYW1lZEl0ZW1zKGNvbGxl
Y3Rpb24sIHRvV2ViQ29yZVN0cmluZyhhcmd1bWVudC0+VG9TdHJpbmcoKSksIGNyZWF0aW9uQ29u
dGV4dCwgaXNvbGF0ZSk7CiAKICAgICAgICAgaWYgKHJlc3VsdC5Jc0VtcHR5KCkpCi0gICAgICAg
ICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOworICAgICAgICAgICAgcmV0dXJuIHY4OjpVbmRl
ZmluZWQoaXNvbGF0ZSk7CiAKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CkBAIC03NSw5
ICs3Nyw5IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEhUTUxBbGxDb2xsZWN0aW8KICAgICBJ
TkNfU1RBVFMoIkRPTS5IVE1MQWxsQ29sbGVjdGlvbi5OYW1lZFByb3BlcnR5R2V0dGVyIik7CiAK
ICAgICBpZiAoIWluZm8uSG9sZGVyKCktPkdldFJlYWxOYW1lZFByb3BlcnR5SW5Qcm90b3R5cGVD
aGFpbihuYW1lKS5Jc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiB2OFVuZGVmaW5lZCgpOworICAg
ICAgICByZXR1cm4gdjhVbmRlZmluZWQoaW5mby5HZXRJc29sYXRlKCkpOwogICAgIGlmIChpbmZv
LkhvbGRlcigpLT5IYXNSZWFsTmFtZWRDYWxsYmFja1Byb3BlcnR5KG5hbWUpKQotICAgICAgICBy
ZXR1cm4gdjhVbmRlZmluZWQoKTsKKyAgICAgICAgcmV0dXJuIHY4VW5kZWZpbmVkKGluZm8uR2V0
SXNvbGF0ZSgpKTsKIAogICAgIEhUTUxBbGxDb2xsZWN0aW9uKiBpbXAgPSBWOEhUTUxBbGxDb2xs
ZWN0aW9uOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKICAgICByZXR1cm4gZ2V0TmFtZWRJdGVt
cyhpbXAsIHRvV2ViQ29yZUF0b21pY1N0cmluZyhuYW1lKSwgaW5mby5Ib2xkZXIoKSwgaW5mby5H
ZXRJc29sYXRlKCkpOwpAQCAtOTcsNyArOTksNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhI
VE1MQWxsQ29sbGVjdGlvCiAgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHJlc3VsdCA9IGdldE5h
bWVkSXRlbXMoaW1wLCB0b1dlYkNvcmVTdHJpbmcoYXJnc1swXSksIGFyZ3MuSG9sZGVyKCksIGFy
Z3MuR2V0SXNvbGF0ZSgpKTsKIAogICAgIGlmIChyZXN1bHQuSXNFbXB0eSgpKQotICAgICAgICBy
ZXR1cm4gdjg6OlVuZGVmaW5lZCgpOworICAgICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZChhcmdz
LkdldElzb2xhdGUoKSk7CiAKICAgICByZXR1cm4gcmVzdWx0OwogfQpJbmRleDogU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTENvbGxlY3Rpb25DdXN0b20uY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxDb2xsZWN0
aW9uQ3VzdG9tLmNwcAkocmV2aXNpb24gMTMzNTY4KQorKysgU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4SFRNTENvbGxlY3Rpb25DdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zMiw1NiArMzIsMjYgQEAKICNpbmNsdWRlICJWOEhUTUxDb2xsZWN0aW9uLmgiCiAKICNpbmNs
dWRlICJIVE1MQ29sbGVjdGlvbi5oIgotI2luY2x1ZGUgIlJhZGlvTm9kZUxpc3QuaCIKICNpbmNs
dWRlICJWOEJpbmRpbmcuaCIKICNpbmNsdWRlICJWOEhUTUxBbGxDb2xsZWN0aW9uLmgiCisjaW5j
bHVkZSAiVjhIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5oIgorI2luY2x1ZGUgIlY4SFRNTE9w
dGlvbnNDb2xsZWN0aW9uLmgiCiAjaW5jbHVkZSAiVjhOYW1lZE5vZGVzQ29sbGVjdGlvbi5oIgog
I2luY2x1ZGUgIlY4Tm9kZS5oIgotI2luY2x1ZGUgIlY4Tm9kZUxpc3QuaCIKLSNpbmNsdWRlICJW
OFJhZGlvTm9kZUxpc3QuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMgdjg6Okhh
bmRsZTx2ODo6VmFsdWU+IGdldE5hbWVkSXRlbXMoSFRNTENvbGxlY3Rpb24qIGNvbGxlY3Rpb24s
IEF0b21pY1N0cmluZyBuYW1lLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4
dCwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCi17Ci0gICAgVmVjdG9yPFJlZlB0cjxOb2RlPiA+IG5h
bWVkSXRlbXM7Ci0gICAgY29sbGVjdGlvbi0+bmFtZWRJdGVtcyhuYW1lLCBuYW1lZEl0ZW1zKTsK
LQotICAgIGlmICghbmFtZWRJdGVtcy5zaXplKCkpCi0gICAgICAgIHJldHVybiB2OFVuZGVmaW5l
ZCgpOwotCi0gICAgaWYgKG5hbWVkSXRlbXMuc2l6ZSgpID09IDEpCi0gICAgICAgIHJldHVybiB0
b1Y4KG5hbWVkSXRlbXMuYXQoMCkucmVsZWFzZSgpLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUp
OwotCi0gICAgaWYgKGNvbGxlY3Rpb24tPnR5cGUoKSA9PSBGb3JtQ29udHJvbHMpCi0gICAgICAg
IHJldHVybiB0b1Y4KGNvbGxlY3Rpb24tPmJhc2UoKS0+cmFkaW9Ob2RlTGlzdChuYW1lKS5nZXQo
KSwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsKLQotICAgIHJldHVybiB0b1Y4KFY4TmFtZWRO
b2Rlc0NvbGxlY3Rpb246OmNyZWF0ZShuYW1lZEl0ZW1zKSwgY3JlYXRpb25Db250ZXh0LCBpc29s
YXRlKTsKLX0KLQogdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SFRNTENvbGxlY3Rpb246Om5hbWVk
UHJvcGVydHlHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nl
c3NvckluZm8mIGluZm8pCiB7CiAgICAgSU5DX1NUQVRTKCJET00uSFRNTENvbGxlY3Rpb24uTmFt
ZWRQcm9wZXJ0eUdldHRlciIpOwogCiAgICAgaWYgKCFpbmZvLkhvbGRlcigpLT5HZXRSZWFsTmFt
ZWRQcm9wZXJ0eUluUHJvdG90eXBlQ2hhaW4obmFtZSkuSXNFbXB0eSgpKQotICAgICAgICByZXR1
cm4gdjhVbmRlZmluZWQoKTsKKyAgICAgICAgcmV0dXJuIHY4VW5kZWZpbmVkKGluZm8uR2V0SXNv
bGF0ZSgpKTsKICAgICBpZiAoaW5mby5Ib2xkZXIoKS0+SGFzUmVhbE5hbWVkQ2FsbGJhY2tQcm9w
ZXJ0eShuYW1lKSkKLSAgICAgICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7CisgICAgICAgIHJldHVy
biB2OFVuZGVmaW5lZChpbmZvLkdldElzb2xhdGUoKSk7CiAKICAgICBIVE1MQ29sbGVjdGlvbiog
aW1wID0gVjhIVE1MQ29sbGVjdGlvbjo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7Ci0gICAgcmV0
dXJuIGdldE5hbWVkSXRlbXMoaW1wLCB0b1dlYkNvcmVBdG9taWNTdHJpbmcobmFtZSksIGluZm8u
SG9sZGVyKCksIGluZm8uR2V0SXNvbGF0ZSgpKTsKLX0KLQotdjg6OkhhbmRsZTx2ODo6VmFsdWU+
IFY4SFRNTENvbGxlY3Rpb246Om5hbWVkSXRlbUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMm
IGFyZ3MpCi17Ci0gICAgSU5DX1NUQVRTKCJET00uSFRNTENvbGxlY3Rpb24ubmFtZWRJdGVtKCki
KTsKLSAgICBIVE1MQ29sbGVjdGlvbiogaW1wID0gVjhIVE1MQ29sbGVjdGlvbjo6dG9OYXRpdmUo
YXJncy5Ib2xkZXIoKSk7Ci0gICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHJlc3VsdCA9IGdldE5h
bWVkSXRlbXMoaW1wLCB0b1dlYkNvcmVTdHJpbmcoYXJnc1swXSksIGFyZ3MuSG9sZGVyKCksIGFy
Z3MuR2V0SXNvbGF0ZSgpKTsKLQotICAgIGlmIChyZXN1bHQuSXNFbXB0eSgpKQotICAgICAgICBy
ZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwotCi0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICByZXR1cm4g
dG9WOChpbXAtPm5hbWVkSXRlbSh0b1dlYkNvcmVBdG9taWNTdHJpbmcobmFtZSkpLCBpbmZvLkhv
bGRlcigpLCBpbmZvLkdldElzb2xhdGUoKSk7CiB9CiAKIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0
b1Y4KEhUTUxDb2xsZWN0aW9uKiBpbXBsLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9u
Q29udGV4dCwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCkBAIC04OSw4ICs1OSwxNyBAQCB2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gdG9WOChIVE1MQ29sbGVjdGlvCiAgICAgaWYgKCFpbXBsKQogICAgICAg
ICByZXR1cm4gdjhOdWxsV2l0aENoZWNrKGlzb2xhdGUpOwogCi0gICAgaWYgKGltcGwtPnR5cGUo
KSA9PSBEb2NBbGwpCisgICAgc3dpdGNoIChpbXBsLT50eXBlKCkpIHsKKyAgICBjYXNlIEZvcm1D
b250cm9sczoKKyAgICAgICAgcmV0dXJuIHRvVjgoc3RhdGljX2Nhc3Q8SFRNTEZvcm1Db250cm9s
c0NvbGxlY3Rpb24qPihpbXBsKSwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsKKyAgICBjYXNl
IFNlbGVjdE9wdGlvbnM6CisgICAgICAgIHJldHVybiB0b1Y4KHN0YXRpY19jYXN0PEhUTUxPcHRp
b25zQ29sbGVjdGlvbio+KGltcGwpLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOworICAgIGNh
c2UgRG9jQWxsOgogICAgICAgICByZXR1cm4gdG9WOChzdGF0aWNfY2FzdDxIVE1MQWxsQ29sbGVj
dGlvbio+KGltcGwpLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOworICAgIGRlZmF1bHQ6Cisg
ICAgICAgIGJyZWFrOworICAgIH0KKwogICAgIHJldHVybiBWOEhUTUxDb2xsZWN0aW9uOjp3cmFw
KGltcGwsIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uQ3VzdG9t
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhI
VE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbkN1c3RvbS5jcHAJKHJldmlzaW9uIDApCisrKyBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlv
bkN1c3RvbS5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsODEgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIAorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKiAKKyAqICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRp
b24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFt
ZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9t
b3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNp
ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqIAorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFT
IElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAor
ICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiVjhIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5oIgorCisjaW5j
bHVkZSAiSFRNTENvbGxlY3Rpb24uaCIKKyNpbmNsdWRlICJSYWRpb05vZGVMaXN0LmgiCisjaW5j
bHVkZSAiVjhCaW5kaW5nLmgiCisjaW5jbHVkZSAiVjhOb2RlLmgiCisjaW5jbHVkZSAiVjhSYWRp
b05vZGVMaXN0LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RhdGljIHY4OjpIYW5kbGU8
djg6OlZhbHVlPiBnZXROYW1lZEl0ZW1zKEhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uKiBjb2xs
ZWN0aW9uLCBBdG9taWNTdHJpbmcgbmFtZSwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlv
bkNvbnRleHQsIHY4OjpJc29sYXRlKiBpc29sYXRlKQoreworICAgIFZlY3RvcjxSZWZQdHI8Tm9k
ZT4gPiBuYW1lZEl0ZW1zOworICAgIGNvbGxlY3Rpb24tPm5hbWVkSXRlbXMobmFtZSwgbmFtZWRJ
dGVtcyk7CisKKyAgICBpZiAoIW5hbWVkSXRlbXMuc2l6ZSgpKQorICAgICAgICByZXR1cm4gdjhV
bmRlZmluZWQoaXNvbGF0ZSk7CisKKyAgICBpZiAobmFtZWRJdGVtcy5zaXplKCkgPT0gMSkKKyAg
ICAgICAgcmV0dXJuIHRvVjgobmFtZWRJdGVtcy5hdCgwKS5yZWxlYXNlKCksIGNyZWF0aW9uQ29u
dGV4dCwgaXNvbGF0ZSk7CisKKyAgICByZXR1cm4gdG9WOChjb2xsZWN0aW9uLT5iYXNlKCktPnJh
ZGlvTm9kZUxpc3QobmFtZSkuZ2V0KCksIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7Cit9CisK
K3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uOjpuYW1l
ZFByb3BlcnR5R2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNj
ZXNzb3JJbmZvJiBpbmZvKQoreworICAgIElOQ19TVEFUUygiRE9NLkhUTUxDb2xsZWN0aW9uLk5h
bWVkUHJvcGVydHlHZXR0ZXIiKTsKKworICAgIGlmICghaW5mby5Ib2xkZXIoKS0+R2V0UmVhbE5h
bWVkUHJvcGVydHlJblByb3RvdHlwZUNoYWluKG5hbWUpLklzRW1wdHkoKSkKKyAgICAgICAgcmV0
dXJuIHY4VW5kZWZpbmVkKGluZm8uR2V0SXNvbGF0ZSgpKTsKKyAgICBpZiAoaW5mby5Ib2xkZXIo
KS0+SGFzUmVhbE5hbWVkQ2FsbGJhY2tQcm9wZXJ0eShuYW1lKSkKKyAgICAgICAgcmV0dXJuIHY4
VW5kZWZpbmVkKGluZm8uR2V0SXNvbGF0ZSgpKTsKKworICAgIEhUTUxGb3JtQ29udHJvbHNDb2xs
ZWN0aW9uKiBpbXAgPSBWOEhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uOjp0b05hdGl2ZShpbmZv
LkhvbGRlcigpKTsKKyAgICByZXR1cm4gZ2V0TmFtZWRJdGVtcyhpbXAsIHRvV2ViQ29yZUF0b21p
Y1N0cmluZyhuYW1lKSwgaW5mby5Ib2xkZXIoKSwgaW5mby5HZXRJc29sYXRlKCkpOworfQorCit2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbjo6bmFtZWRJ
dGVtQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3sKKyAgICBJTkNfU1RBVFMo
IkRPTS5IVE1MQ29sbGVjdGlvbi5uYW1lZEl0ZW0oKSIpOworICAgIEhUTUxGb3JtQ29udHJvbHND
b2xsZWN0aW9uKiBpbXAgPSBWOEhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uOjp0b05hdGl2ZShh
cmdzLkhvbGRlcigpKTsKKyAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gcmVzdWx0ID0gZ2V0TmFt
ZWRJdGVtcyhpbXAsIHRvV2ViQ29yZVN0cmluZyhhcmdzWzBdKSwgYXJncy5Ib2xkZXIoKSwgYXJn
cy5HZXRJc29sYXRlKCkpOworCisgICAgaWYgKHJlc3VsdC5Jc0VtcHR5KCkpCisgICAgICAgIHJl
dHVybiB2ODo6VW5kZWZpbmVkKGFyZ3MuR2V0SXNvbGF0ZSgpKTsKKworICAgIHJldHVybiByZXN1
bHQ7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxPcHRpb25zQ29sbGVjdGlvbkN1c3RvbS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTE9wdGlvbnND
b2xsZWN0aW9uQ3VzdG9tLmNwcAkocmV2aXNpb24gMTMzNTY4KQorKysgU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTE9wdGlvbnNDb2xsZWN0aW9uQ3VzdG9tLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzksMTAgKzM5LDUxIEBACiAjaW5jbHVkZSAiVjhDb2xsZWN0aW9uLmgi
CiAjaW5jbHVkZSAiVjhIVE1MT3B0aW9uRWxlbWVudC5oIgogI2luY2x1ZGUgIlY4SFRNTFNlbGVj
dEVsZW1lbnRDdXN0b20uaCIKKyNpbmNsdWRlICJWOE5hbWVkTm9kZXNDb2xsZWN0aW9uLmgiCiAj
aW5jbHVkZSAiVjhOb2RlLmgiCisjaW5jbHVkZSAiVjhOb2RlTGlzdC5oIgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gZ2V0TmFtZWRJdGVtcyhI
VE1MT3B0aW9uc0NvbGxlY3Rpb24qIGNvbGxlY3Rpb24sIEF0b21pY1N0cmluZyBuYW1lLCB2ODo6
SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCwgdjg6Oklzb2xhdGUqIGlzb2xhdGUp
Cit7CisgICAgVmVjdG9yPFJlZlB0cjxOb2RlPiA+IG5hbWVkSXRlbXM7CisgICAgY29sbGVjdGlv
bi0+bmFtZWRJdGVtcyhuYW1lLCBuYW1lZEl0ZW1zKTsKKworICAgIGlmICghbmFtZWRJdGVtcy5z
aXplKCkpCisgICAgICAgIHJldHVybiB2OFVuZGVmaW5lZChpc29sYXRlKTsKKworICAgIGlmIChu
YW1lZEl0ZW1zLnNpemUoKSA9PSAxKQorICAgICAgICByZXR1cm4gdG9WOChuYW1lZEl0ZW1zLmF0
KDApLnJlbGVhc2UoKSwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsKKworICAgIHJldHVybiB0
b1Y4KFY4TmFtZWROb2Rlc0NvbGxlY3Rpb246OmNyZWF0ZShuYW1lZEl0ZW1zKSwgY3JlYXRpb25D
b250ZXh0LCBpc29sYXRlKTsKK30KKwordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SFRNTE9wdGlv
bnNDb2xsZWN0aW9uOjpuYW1lZFByb3BlcnR5R2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBu
YW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIElOQ19TVEFUUygiRE9N
LkhUTUxDb2xsZWN0aW9uLk5hbWVkUHJvcGVydHlHZXR0ZXIiKTsKKworICAgIGlmICghaW5mby5I
b2xkZXIoKS0+R2V0UmVhbE5hbWVkUHJvcGVydHlJblByb3RvdHlwZUNoYWluKG5hbWUpLklzRW1w
dHkoKSkKKyAgICAgICAgcmV0dXJuIHY4VW5kZWZpbmVkKGluZm8uR2V0SXNvbGF0ZSgpKTsKKyAg
ICBpZiAoaW5mby5Ib2xkZXIoKS0+SGFzUmVhbE5hbWVkQ2FsbGJhY2tQcm9wZXJ0eShuYW1lKSkK
KyAgICAgICAgcmV0dXJuIHY4VW5kZWZpbmVkKGluZm8uR2V0SXNvbGF0ZSgpKTsKKworICAgIEhU
TUxPcHRpb25zQ29sbGVjdGlvbiogaW1wID0gVjhIVE1MT3B0aW9uc0NvbGxlY3Rpb246OnRvTmF0
aXZlKGluZm8uSG9sZGVyKCkpOworICAgIHJldHVybiBnZXROYW1lZEl0ZW1zKGltcCwgdG9XZWJD
b3JlQXRvbWljU3RyaW5nKG5hbWUpLCBpbmZvLkhvbGRlcigpLCBpbmZvLkdldElzb2xhdGUoKSk7
Cit9CisKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEhUTUxPcHRpb25zQ29sbGVjdGlvbjo6bmFt
ZWRJdGVtQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3sKKyAgICBJTkNfU1RB
VFMoIkRPTS5IVE1MQ29sbGVjdGlvbi5uYW1lZEl0ZW0oKSIpOworICAgIEhUTUxPcHRpb25zQ29s
bGVjdGlvbiogaW1wID0gVjhIVE1MT3B0aW9uc0NvbGxlY3Rpb246OnRvTmF0aXZlKGFyZ3MuSG9s
ZGVyKCkpOworICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiByZXN1bHQgPSBnZXROYW1lZEl0ZW1z
KGltcCwgdG9XZWJDb3JlU3RyaW5nKGFyZ3NbMF0pLCBhcmdzLkhvbGRlcigpLCBhcmdzLkdldElz
b2xhdGUoKSk7CisKKyAgICBpZiAocmVzdWx0LklzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIHY4
OjpVbmRlZmluZWQoYXJncy5HZXRJc29sYXRlKCkpOworCisgICAgcmV0dXJuIHJlc3VsdDsKK30K
Kwogdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SFRNTE9wdGlvbnNDb2xsZWN0aW9uOjpyZW1vdmVD
YWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAgIElOQ19TVEFUUygiRE9N
LkhUTUxPcHRpb25zQ29sbGVjdGlvbi5yZW1vdmUoKSIpOwpJbmRleDogU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnQuY3BwCShyZXZpc2lvbiAxMzM1NjgpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NDM5LDExICs0NDM5LDYgQEAgUGFzc1JlZlB0cjxIVE1M
Q29sbGVjdGlvbj4gRG9jdW1lbnQ6OnBsdQogICAgIHJldHVybiBjYWNoZWRDb2xsZWN0aW9uKERv
Y0VtYmVkcyk7CiB9CiAKLVBhc3NSZWZQdHI8SFRNTENvbGxlY3Rpb24+IERvY3VtZW50OjpvYmpl
Y3RzKCkKLXsKLSAgICByZXR1cm4gY2FjaGVkQ29sbGVjdGlvbihEb2NPYmplY3RzKTsKLX0KLQog
UGFzc1JlZlB0cjxIVE1MQ29sbGVjdGlvbj4gRG9jdW1lbnQ6OnNjcmlwdHMoKQogewogICAgIHJl
dHVybiBjYWNoZWRDb2xsZWN0aW9uKERvY1NjcmlwdHMpOwpJbmRleDogU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50
LmgJKHJldmlzaW9uIDEzMzU2OCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCSh3
b3JraW5nIGNvcHkpCkBAIC00MzgsNyArNDM4LDYgQEAgcHVibGljOgogICAgIFBhc3NSZWZQdHI8
SFRNTENvbGxlY3Rpb24+IGxpbmtzKCk7CiAgICAgUGFzc1JlZlB0cjxIVE1MQ29sbGVjdGlvbj4g
Zm9ybXMoKTsKICAgICBQYXNzUmVmUHRyPEhUTUxDb2xsZWN0aW9uPiBhbmNob3JzKCk7Ci0gICAg
UGFzc1JlZlB0cjxIVE1MQ29sbGVjdGlvbj4gb2JqZWN0cygpOwogICAgIFBhc3NSZWZQdHI8SFRN
TENvbGxlY3Rpb24+IHNjcmlwdHMoKTsKICAgICBQYXNzUmVmUHRyPEhUTUxDb2xsZWN0aW9uPiBh
bGwoKTsKICAgICB2b2lkIHJlbW92ZUNhY2hlZEhUTUxDb2xsZWN0aW9uKEhUTUxDb2xsZWN0aW9u
KiwgQ29sbGVjdGlvblR5cGUpOwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAkocmV2aXNpb24g
MTMzNTY4KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC00Niw3ICs0Niw3IEBACiAjaW5jbHVkZSAiSFRNTENvbGxlY3Rpb24uaCIKICNpbmNsdWRl
ICJIVE1MRG9jdW1lbnQuaCIKICNpbmNsdWRlICJIVE1MRWxlbWVudC5oIgotI2luY2x1ZGUgIkhU
TUxGb3JtQ29sbGVjdGlvbi5oIgorI2luY2x1ZGUgIkhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9u
LmgiCiAjaW5jbHVkZSAiSFRNTEZyYW1lT3duZXJFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTExh
YmVsRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgpAQCAtMjM0NSw3ICsyMzQ1LDcg
QEAgUGFzc1JlZlB0cjxIVE1MQ29sbGVjdGlvbj4gRWxlbWVudFJhcmVEYQogICAgICAgICBjb2xs
ZWN0aW9uID0gSFRNTE9wdGlvbnNDb2xsZWN0aW9uOjpjcmVhdGUoZWxlbWVudCk7CiAgICAgfSBl
bHNlIGlmICh0eXBlID09IEZvcm1Db250cm9scykgewogICAgICAgICBBU1NFUlQoZWxlbWVudC0+
aGFzVGFnTmFtZShmb3JtVGFnKSB8fCBlbGVtZW50LT5oYXNUYWdOYW1lKGZpZWxkc2V0VGFnKSk7
Ci0gICAgICAgIGNvbGxlY3Rpb24gPSBIVE1MRm9ybUNvbGxlY3Rpb246OmNyZWF0ZShlbGVtZW50
KTsKKyAgICAgICAgY29sbGVjdGlvbiA9IEhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uOjpjcmVh
dGUoZWxlbWVudCk7CiAjaWYgRU5BQkxFKE1JQ1JPREFUQSkKICAgICB9IGVsc2UgaWYgKHR5cGUg
PT0gSXRlbVByb3BlcnRpZXMpIHsKICAgICAgICAgY29sbGVjdGlvbiA9IEhUTUxQcm9wZXJ0aWVz
Q29sbGVjdGlvbjo6Y3JlYXRlKGVsZW1lbnQpOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9D
b2xsZWN0aW9uVHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvQ29sbGVj
dGlvblR5cGUuaAkocmV2aXNpb24gMTMzNTY4KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9Db2xs
ZWN0aW9uVHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw3ICszMSw2IEBAIGVudW0gQ29sbGVj
dGlvblR5cGUgewogICAgIERvY0ltYWdlcywgICAgLy8gYWxsIDxpbWc+IGVsZW1lbnRzIGluIHRo
ZSBkb2N1bWVudAogICAgIERvY0FwcGxldHMsICAgLy8gYWxsIDxvYmplY3Q+IGFuZCA8YXBwbGV0
PiBlbGVtZW50cwogICAgIERvY0VtYmVkcywgICAgLy8gYWxsIDxlbWJlZD4gZWxlbWVudHMKLSAg
ICBEb2NPYmplY3RzLCAgIC8vIGFsbCA8b2JqZWN0PiBlbGVtZW50cwogICAgIERvY0Zvcm1zLCAg
ICAgLy8gYWxsIDxmb3JtPiBlbGVtZW50cwogICAgIERvY0xpbmtzLCAgICAgLy8gYWxsIDxhPiBf
YW5kXyA8YXJlYT4gZWxlbWVudHMgd2l0aCBhIHZhbHVlIGZvciBocmVmCiAgICAgRG9jQW5jaG9y
cywgICAvLyBhbGwgPGE+IGVsZW1lbnRzIHdpdGggYSB2YWx1ZSBmb3IgbmFtZQpJbmRleDogU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ29sbGVjdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MQ29sbGVjdGlvbi5jcHAJKHJldmlzaW9uIDEzMzU2OCkKKysrIFNv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTENvbGxlY3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01
MSw3ICs1MSw2IEBAIHN0YXRpYyBib29sIHNob3VsZE9ubHlJbmNsdWRlRGlyZWN0Q2hpbGQKICAg
ICBjYXNlIERvY0Zvcm1zOgogICAgIGNhc2UgRG9jSW1hZ2VzOgogICAgIGNhc2UgRG9jTGlua3M6
Ci0gICAgY2FzZSBEb2NPYmplY3RzOgogICAgIGNhc2UgRG9jU2NyaXB0czoKICAgICBjYXNlIERv
Y3VtZW50TmFtZWRJdGVtczoKICAgICBjYXNlIE1hcEFyZWFzOgpAQCAtODMsNyArODIsNiBAQCBz
dGF0aWMgTm9kZUxpc3RSb290VHlwZSByb290VHlwZUZyb21Db2xsCiAgICAgY2FzZSBEb2NJbWFn
ZXM6CiAgICAgY2FzZSBEb2NBcHBsZXRzOgogICAgIGNhc2UgRG9jRW1iZWRzOgotICAgIGNhc2Ug
RG9jT2JqZWN0czoKICAgICBjYXNlIERvY0Zvcm1zOgogICAgIGNhc2UgRG9jTGlua3M6CiAgICAg
Y2FzZSBEb2NBbmNob3JzOgpAQCAtMTE3LDcgKzExNSw2IEBAIHN0YXRpYyBOb2RlTGlzdEludmFs
aWRhdGlvblR5cGUgaW52YWxpZGEKICAgICBzd2l0Y2ggKHR5cGUpIHsKICAgICBjYXNlIERvY0lt
YWdlczoKICAgICBjYXNlIERvY0VtYmVkczoKLSAgICBjYXNlIERvY09iamVjdHM6CiAgICAgY2Fz
ZSBEb2NGb3JtczoKICAgICBjYXNlIERvY0FuY2hvcnM6IC8vIERlcGVuZHMgb24gbmFtZSBhdHRy
aWJ1dGUuCiAgICAgY2FzZSBEb2NTY3JpcHRzOgpAQCAtMjE0LDggKzIxMSw2IEBAIHN0YXRpYyBp
bmxpbmUgYm9vbCBpc0FjY2VwdGFibGVFbGVtZW50KEMKICAgICAgICAgcmV0dXJuIGVsZW1lbnQt
Pmhhc0xvY2FsTmFtZShhcHBsZXRUYWcpIHx8IChlbGVtZW50LT5oYXNMb2NhbE5hbWUob2JqZWN0
VGFnKSAmJiBzdGF0aWNfY2FzdDxIVE1MT2JqZWN0RWxlbWVudCo+KGVsZW1lbnQpLT5jb250YWlu
c0phdmFBcHBsZXQoKSk7CiAgICAgY2FzZSBEb2NFbWJlZHM6CiAgICAgICAgIHJldHVybiBlbGVt
ZW50LT5oYXNMb2NhbE5hbWUoZW1iZWRUYWcpOwotICAgIGNhc2UgRG9jT2JqZWN0czoKLSAgICAg
ICAgcmV0dXJuIGVsZW1lbnQtPmhhc0xvY2FsTmFtZShvYmplY3RUYWcpOwogICAgIGNhc2UgRG9j
TGlua3M6CiAgICAgICAgIHJldHVybiAoZWxlbWVudC0+aGFzTG9jYWxOYW1lKGFUYWcpIHx8IGVs
ZW1lbnQtPmhhc0xvY2FsTmFtZShhcmVhVGFnKSkgJiYgZWxlbWVudC0+ZmFzdEhhc0F0dHJpYnV0
ZShocmVmQXR0cik7CiAgICAgY2FzZSBEb2NBbmNob3JzOgpJbmRleDogU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MQ29sbGVjdGlvbi5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MQ29sbGVjdGlvbi5pZGwJKHJldmlzaW9uIDEzMzU2OCkKKysrIFNvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTENvbGxlY3Rpb24uaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw3ICsyOCw3IEBA
CiBdIGludGVyZmFjZSBIVE1MQ29sbGVjdGlvbiB7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVu
c2lnbmVkIGxvbmcgbGVuZ3RoOwogICAgIE5vZGUgaXRlbShpbiBbT3B0aW9uYWw9RGVmYXVsdElz
VW5kZWZpbmVkXSB1bnNpZ25lZCBsb25nIGluZGV4KTsKLSAgICBbQ3VzdG9tXSBOb2RlIG5hbWVk
SXRlbShpbiBbT3B0aW9uYWw9RGVmYXVsdElzVW5kZWZpbmVkXSBET01TdHJpbmcgbmFtZSk7Cisg
ICAgTm9kZSBuYW1lZEl0ZW0oaW4gW09wdGlvbmFsPURlZmF1bHRJc1VuZGVmaW5lZF0gRE9NU3Ry
aW5nIG5hbWUpOwogCiAjaWYgZGVmaW5lZChMQU5HVUFHRV9PQkpFQ1RJVkVfQykgJiYgTEFOR1VB
R0VfT0JKRUNUSVZFX0MKICAgICBOb2RlTGlzdCB0YWdzKGluIFtPcHRpb25hbD1EZWZhdWx0SXNV
bmRlZmluZWRdIERPTVN0cmluZyBuYW1lKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEZpZWxkU2V0RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MRmllbGRTZXRFbGVtZW50LmNwcAkocmV2aXNpb24gMTMzNTY4KQorKysgU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MRmllbGRTZXRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjUsNyAr
MjUsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkhUTUxGaWVsZFNldEVsZW1l
bnQuaCIKIAotI2luY2x1ZGUgIkhUTUxGb3JtQ29sbGVjdGlvbi5oIgorI2luY2x1ZGUgIkhUTUxD
b2xsZWN0aW9uLmgiCiAjaW5jbHVkZSAiSFRNTExlZ2VuZEVsZW1lbnQuaCIKICNpbmNsdWRlICJI
VE1MTmFtZXMuaCIKICNpbmNsdWRlICJIVE1MT2JqZWN0RWxlbWVudC5oIgpJbmRleDogU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MRmllbGRTZXRFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MRmllbGRTZXRFbGVtZW50LmgJKHJldmlzaW9uIDEzMzU2OCkKKysr
IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZpZWxkU2V0RWxlbWVudC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zMSw3ICszMSw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRm9ybUFzc29j
aWF0ZWRFbGVtZW50OwogY2xhc3MgSFRNTENvbGxlY3Rpb247Ci1jbGFzcyBIVE1MRm9ybUNvbGxl
Y3Rpb247CiAKIGNsYXNzIEhUTUxGaWVsZFNldEVsZW1lbnQgOiBwdWJsaWMgSFRNTEZvcm1Db250
cm9sRWxlbWVudCB7CiBwdWJsaWM6CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3Jt
Q29sbGVjdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9y
bUNvbGxlY3Rpb24uY3BwCShyZXZpc2lvbiAxMzM1NjgpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxGb3JtQ29sbGVjdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsMTYzICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTkgTGFycyBLbm9sbCAoa25vbGxAa2RlLm9yZykKLSAq
ICAgICAgICAgICAoQykgMTk5OSBBbnR0aSBLb2l2aXN0byAoa29pdmlzdG9Aa2RlLm9yZykKLSAq
IENvcHlyaWdodCAoQykgMjAwMywgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAxMCwgMjAxMSwg
MjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogVGhpcyBsaWJyYXJ5
IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9k
aWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMK
LSAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247
IGVpdGhlcgotICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24p
IGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBp
biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdB
UlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5U
QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05V
Ci0gKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAq
Ci0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRo
ZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICogdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAq
IEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICoKLSAqLwotCi0jaW5jbHVkZSAiY29uZmln
LmgiCi0jaW5jbHVkZSAiSFRNTEZvcm1Db2xsZWN0aW9uLmgiCi0KLSNpbmNsdWRlICJIVE1MRmll
bGRTZXRFbGVtZW50LmgiCi0jaW5jbHVkZSAiSFRNTEZvcm1Db250cm9sRWxlbWVudC5oIgotI2lu
Y2x1ZGUgIkhUTUxGb3JtRWxlbWVudC5oIgotI2luY2x1ZGUgIkhUTUxJbWFnZUVsZW1lbnQuaCIK
LSNpbmNsdWRlICJIVE1MTmFtZXMuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi11c2luZyBu
YW1lc3BhY2UgSFRNTE5hbWVzOwotCi0vLyBTaW5jZSB0aGUgY29sbGVjdGlvbnMgYXJlIHRvIGJl
ICJsaXZlIiwgd2UgaGF2ZSB0byBkbyB0aGUKLS8vIGNhbGN1bGF0aW9uIGV2ZXJ5IHRpbWUgaWYg
YW55dGhpbmcgaGFzIGNoYW5nZWQuCi0KLUhUTUxGb3JtQ29sbGVjdGlvbjo6SFRNTEZvcm1Db2xs
ZWN0aW9uKEVsZW1lbnQqIGJhc2UpCi0gICAgOiBIVE1MQ29sbGVjdGlvbihiYXNlLCBGb3JtQ29u
dHJvbHMsIE92ZXJyaWRlc0l0ZW1BZnRlcikKLXsKLSAgICBBU1NFUlQoYmFzZS0+aGFzVGFnTmFt
ZShmb3JtVGFnKSB8fCBiYXNlLT5oYXNUYWdOYW1lKGZpZWxkc2V0VGFnKSk7Ci19Ci0KLVBhc3NS
ZWZQdHI8SFRNTEZvcm1Db2xsZWN0aW9uPiBIVE1MRm9ybUNvbGxlY3Rpb246OmNyZWF0ZShFbGVt
ZW50KiBiYXNlKQotewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgSFRNTEZvcm1Db2xsZWN0aW9u
KGJhc2UpKTsKLX0KLQotSFRNTEZvcm1Db2xsZWN0aW9uOjp+SFRNTEZvcm1Db2xsZWN0aW9uKCkK
LXsKLX0KLQotY29uc3QgVmVjdG9yPEZvcm1Bc3NvY2lhdGVkRWxlbWVudCo+JiBIVE1MRm9ybUNv
bGxlY3Rpb246OmZvcm1Db250cm9sRWxlbWVudHMoKSBjb25zdAotewotICAgIEFTU0VSVChiYXNl
KCkpOwotICAgIEFTU0VSVChiYXNlKCktPmhhc1RhZ05hbWUoZm9ybVRhZykgfHwgYmFzZSgpLT5o
YXNUYWdOYW1lKGZpZWxkc2V0VGFnKSk7Ci0gICAgaWYgKGJhc2UoKS0+aGFzVGFnTmFtZShmb3Jt
VGFnKSkKLSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEhUTUxGb3JtRWxlbWVudCo+KGJhc2Uo
KSktPmFzc29jaWF0ZWRFbGVtZW50cygpOwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxIVE1MRmll
bGRTZXRFbGVtZW50Kj4oYmFzZSgpKS0+YXNzb2NpYXRlZEVsZW1lbnRzKCk7Ci19Ci0KLWNvbnN0
IFZlY3RvcjxIVE1MSW1hZ2VFbGVtZW50Kj4mIEhUTUxGb3JtQ29sbGVjdGlvbjo6Zm9ybUltYWdl
RWxlbWVudHMoKSBjb25zdAotewotICAgIEFTU0VSVChiYXNlKCkpOwotICAgIEFTU0VSVChiYXNl
KCktPmhhc1RhZ05hbWUoZm9ybVRhZykpOwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxIVE1MRm9y
bUVsZW1lbnQqPihiYXNlKCkpLT5pbWFnZUVsZW1lbnRzKCk7Ci19Ci0KLUVsZW1lbnQqIEhUTUxG
b3JtQ29sbGVjdGlvbjo6dmlydHVhbEl0ZW1BZnRlcih1bnNpZ25lZCYgb2Zmc2V0LCBFbGVtZW50
KiBwcmV2aW91c0l0ZW0pIGNvbnN0Ci17Ci0gICAgY29uc3QgVmVjdG9yPEZvcm1Bc3NvY2lhdGVk
RWxlbWVudCo+JiBlbGVtZW50c0FycmF5ID0gZm9ybUNvbnRyb2xFbGVtZW50cygpOwotICAgIGlm
IChwcmV2aW91c0l0ZW0pCi0gICAgICAgIG9mZnNldCsrOwotICAgIHdoaWxlIChvZmZzZXQgPCBl
bGVtZW50c0FycmF5LnNpemUoKSkgewotICAgICAgICBGb3JtQXNzb2NpYXRlZEVsZW1lbnQqIGVs
ZW1lbnQgPSBlbGVtZW50c0FycmF5W29mZnNldF07Ci0gICAgICAgIGlmIChlbGVtZW50LT5pc0Vu
dW1lcmF0YWJsZSgpKQotICAgICAgICAgICAgcmV0dXJuIHRvSFRNTEVsZW1lbnQoZWxlbWVudCk7
Ci0gICAgICAgIG9mZnNldCsrOwotICAgIH0KLSAgICByZXR1cm4gMDsKLX0KLQotc3RhdGljIEhU
TUxFbGVtZW50KiBmaXJzdE5hbWVkSXRlbShjb25zdCBWZWN0b3I8Rm9ybUFzc29jaWF0ZWRFbGVt
ZW50Kj4mIGVsZW1lbnRzQXJyYXksCi0gICAgY29uc3QgVmVjdG9yPEhUTUxJbWFnZUVsZW1lbnQq
PiogaW1hZ2VFbGVtZW50c0FycmF5LCBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSwgY29u
c3QgU3RyaW5nJiBuYW1lKQotewotICAgIEFTU0VSVChhdHRyTmFtZSA9PSBpZEF0dHIgfHwgYXR0
ck5hbWUgPT0gbmFtZUF0dHIpOwotCi0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGVsZW1l
bnRzQXJyYXkuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgSFRNTEVsZW1lbnQqIGVsZW1lbnQgPSB0
b0hUTUxFbGVtZW50KGVsZW1lbnRzQXJyYXlbaV0pOwotICAgICAgICBpZiAoZWxlbWVudHNBcnJh
eVtpXS0+aXNFbnVtZXJhdGFibGUoKSAmJiBlbGVtZW50LT5mYXN0R2V0QXR0cmlidXRlKGF0dHJO
YW1lKSA9PSBuYW1lKQotICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnQ7Ci0gICAgfQotCi0gICAg
aWYgKCFpbWFnZUVsZW1lbnRzQXJyYXkpCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IGltYWdlRWxlbWVudHNBcnJheS0+c2l6ZSgpOyArK2kpIHsKLSAg
ICAgICAgSFRNTEltYWdlRWxlbWVudCogZWxlbWVudCA9ICgqaW1hZ2VFbGVtZW50c0FycmF5KVtp
XTsKLSAgICAgICAgaWYgKGVsZW1lbnQtPmZhc3RHZXRBdHRyaWJ1dGUoYXR0ck5hbWUpID09IG5h
bWUpCi0gICAgICAgICAgICByZXR1cm4gZWxlbWVudDsKLSAgICB9Ci0KLSAgICByZXR1cm4gMDsK
LX0KLQotTm9kZSogSFRNTEZvcm1Db2xsZWN0aW9uOjpuYW1lZEl0ZW0oY29uc3QgQXRvbWljU3Ry
aW5nJiBuYW1lKSBjb25zdAotewotICAgIC8vIGh0dHA6Ly9tc2RuLm1pY3Jvc29mdC5jb20vd29y
a3Nob3AvYXV0aG9yL2RodG1sL3JlZmVyZW5jZS9tZXRob2RzL25hbWVkaXRlbS5hc3AKLSAgICAv
LyBUaGlzIG1ldGhvZCBmaXJzdCBzZWFyY2hlcyBmb3IgYW4gb2JqZWN0IHdpdGggYSBtYXRjaGlu
ZyBpZAotICAgIC8vIGF0dHJpYnV0ZS4gSWYgYSBtYXRjaCBpcyBub3QgZm91bmQsIHRoZSBtZXRo
b2QgdGhlbiBzZWFyY2hlcyBmb3IgYW4KLSAgICAvLyBvYmplY3Qgd2l0aCBhIG1hdGNoaW5nIG5h
bWUgYXR0cmlidXRlLCBidXQgb25seSBvbiB0aG9zZSBlbGVtZW50cwotICAgIC8vIHRoYXQgYXJl
IGFsbG93ZWQgYSBuYW1lIGF0dHJpYnV0ZS4KLSAgICBjb25zdCBWZWN0b3I8SFRNTEltYWdlRWxl
bWVudCo+KiBpbWFnZXNFbGVtZW50cyA9IGJhc2UoKS0+aGFzVGFnTmFtZShmaWVsZHNldFRhZykg
PyAwIDogJmZvcm1JbWFnZUVsZW1lbnRzKCk7Ci0gICAgaWYgKEhUTUxFbGVtZW50KiBpdGVtID0g
Zmlyc3ROYW1lZEl0ZW0oZm9ybUNvbnRyb2xFbGVtZW50cygpLCBpbWFnZXNFbGVtZW50cywgaWRB
dHRyLCBuYW1lKSkKLSAgICAgICAgcmV0dXJuIGl0ZW07Ci0KLSAgICByZXR1cm4gZmlyc3ROYW1l
ZEl0ZW0oZm9ybUNvbnRyb2xFbGVtZW50cygpLCBpbWFnZXNFbGVtZW50cywgbmFtZUF0dHIsIG5h
bWUpOwotfQotCi12b2lkIEhUTUxGb3JtQ29sbGVjdGlvbjo6dXBkYXRlTmFtZUNhY2hlKCkgY29u
c3QKLXsKLSAgICBpZiAoaGFzTmFtZUNhY2hlKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIEhh
c2hTZXQ8QXRvbWljU3RyaW5nSW1wbCo+IGZvdW5kSW5wdXRFbGVtZW50czsKLQotICAgIGNvbnN0
IFZlY3RvcjxGb3JtQXNzb2NpYXRlZEVsZW1lbnQqPiYgZWxlbWVudHNBcnJheSA9IGZvcm1Db250
cm9sRWxlbWVudHMoKTsKLQotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBlbGVtZW50c0Fy
cmF5LnNpemUoKTsgKytpKSB7Ci0gICAgICAgIEZvcm1Bc3NvY2lhdGVkRWxlbWVudCogYXNzb2Np
YXRlZEVsZW1lbnQgPSBlbGVtZW50c0FycmF5W2ldOwotICAgICAgICBpZiAoYXNzb2NpYXRlZEVs
ZW1lbnQtPmlzRW51bWVyYXRhYmxlKCkpIHsKLSAgICAgICAgICAgIEhUTUxFbGVtZW50KiBlbGVt
ZW50ID0gdG9IVE1MRWxlbWVudChhc3NvY2lhdGVkRWxlbWVudCk7Ci0gICAgICAgICAgICBjb25z
dCBBdG9taWNTdHJpbmcmIGlkQXR0clZhbCA9IGVsZW1lbnQtPmdldElkQXR0cmlidXRlKCk7Ci0g
ICAgICAgICAgICBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWVBdHRyVmFsID0gZWxlbWVudC0+Z2V0
TmFtZUF0dHJpYnV0ZSgpOwotICAgICAgICAgICAgaWYgKCFpZEF0dHJWYWwuaXNFbXB0eSgpKSB7
Ci0gICAgICAgICAgICAgICAgYXBwZW5kSWRDYWNoZShpZEF0dHJWYWwsIGVsZW1lbnQpOwotICAg
ICAgICAgICAgICAgIGZvdW5kSW5wdXRFbGVtZW50cy5hZGQoaWRBdHRyVmFsLmltcGwoKSk7Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoIW5hbWVBdHRyVmFsLmlzRW1wdHkoKSAmJiBp
ZEF0dHJWYWwgIT0gbmFtZUF0dHJWYWwpIHsKLSAgICAgICAgICAgICAgICBhcHBlbmROYW1lQ2Fj
aGUobmFtZUF0dHJWYWwsIGVsZW1lbnQpOwotICAgICAgICAgICAgICAgIGZvdW5kSW5wdXRFbGVt
ZW50cy5hZGQobmFtZUF0dHJWYWwuaW1wbCgpKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQot
ICAgIH0KLQotICAgIGlmIChiYXNlKCktPmhhc1RhZ05hbWUoZm9ybVRhZykpIHsKLSAgICAgICAg
Y29uc3QgVmVjdG9yPEhUTUxJbWFnZUVsZW1lbnQqPiYgaW1hZ2VFbGVtZW50c0FycmF5ID0gZm9y
bUltYWdlRWxlbWVudHMoKTsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGltYWdl
RWxlbWVudHNBcnJheS5zaXplKCk7ICsraSkgewotICAgICAgICAgICAgSFRNTEltYWdlRWxlbWVu
dCogZWxlbWVudCA9IGltYWdlRWxlbWVudHNBcnJheVtpXTsKLSAgICAgICAgICAgIGNvbnN0IEF0
b21pY1N0cmluZyYgaWRBdHRyVmFsID0gZWxlbWVudC0+Z2V0SWRBdHRyaWJ1dGUoKTsKLSAgICAg
ICAgICAgIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZUF0dHJWYWwgPSBlbGVtZW50LT5nZXROYW1l
QXR0cmlidXRlKCk7Ci0gICAgICAgICAgICBpZiAoIWlkQXR0clZhbC5pc0VtcHR5KCkgJiYgIWZv
dW5kSW5wdXRFbGVtZW50cy5jb250YWlucyhpZEF0dHJWYWwuaW1wbCgpKSkKLSAgICAgICAgICAg
ICAgICBhcHBlbmRJZENhY2hlKGlkQXR0clZhbCwgZWxlbWVudCk7Ci0gICAgICAgICAgICBpZiAo
IW5hbWVBdHRyVmFsLmlzRW1wdHkoKSAmJiBpZEF0dHJWYWwgIT0gbmFtZUF0dHJWYWwgJiYgIWZv
dW5kSW5wdXRFbGVtZW50cy5jb250YWlucyhuYW1lQXR0clZhbC5pbXBsKCkpKQotICAgICAgICAg
ICAgICAgIGFwcGVuZE5hbWVDYWNoZShuYW1lQXR0clZhbCwgZWxlbWVudCk7Ci0gICAgICAgIH0K
LSAgICB9Ci0KLSAgICBzZXRIYXNOYW1lQ2FjaGUoKTsKLX0KLQotfQpJbmRleDogU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MRm9ybUNvbGxlY3Rpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxGb3JtQ29sbGVjdGlvbi5oCShyZXZpc2lvbiAxMzM1NjgpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29sbGVjdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDU3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTkgTGFycyBLbm9sbCAoa25vbGxA
a2RlLm9yZykKLSAqICAgICAgICAgICAoQykgMTk5OSBBbnR0aSBLb2l2aXN0byAoa29pdmlzdG9A
a2RlLm9yZykKLSAqIENvcHlyaWdodCAoQykgMjAwMywgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywg
MjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogVGhpcyBsaWJyYXJ5
IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9k
aWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMK
LSAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247
IGVpdGhlcgotICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24p
IGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBp
biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdB
UlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5U
QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05V
Ci0gKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAq
Ci0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRo
ZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICogdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAq
IEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICoKLSAqLwotCi0jaWZuZGVmIEhUTUxGb3Jt
Q29sbGVjdGlvbl9oCi0jZGVmaW5lIEhUTUxGb3JtQ29sbGVjdGlvbl9oCi0KLSNpbmNsdWRlICJI
VE1MQ29sbGVjdGlvbi5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIEZvcm1Bc3Nv
Y2lhdGVkRWxlbWVudDsKLWNsYXNzIEhUTUxFbGVtZW50OwotY2xhc3MgSFRNTEltYWdlRWxlbWVu
dDsKLWNsYXNzIFF1YWxpZmllZE5hbWU7Ci0vLyBUaGlzIGNsYXNzIGlzIGp1c3QgYSBiaWcgaGFj
ayB0byBmaW5kIGZvcm0gZWxlbWVudHMgZXZlbiBpbiBtYWxmb3JtZWQgSFRNTCBlbGVtZW50cy4K
LS8vIFRoZSBmYW1vdXMgPHRhYmxlPjx0cj48Zm9ybT48dGQ+IHByb2JsZW0uCi0KLWNsYXNzIEhU
TUxGb3JtQ29sbGVjdGlvbiA6IHB1YmxpYyBIVE1MQ29sbGVjdGlvbiB7Ci1wdWJsaWM6Ci0gICAg
c3RhdGljIFBhc3NSZWZQdHI8SFRNTEZvcm1Db2xsZWN0aW9uPiBjcmVhdGUoRWxlbWVudCopOwot
Ci0gICAgdmlydHVhbCB+SFRNTEZvcm1Db2xsZWN0aW9uKCk7Ci0KLSAgICB2aXJ0dWFsIE5vZGUq
IG5hbWVkSXRlbShjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpIGNvbnN0OwotCi1wcml2YXRlOgot
ICAgIEhUTUxGb3JtQ29sbGVjdGlvbihFbGVtZW50Kik7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgdXBk
YXRlTmFtZUNhY2hlKCkgY29uc3Q7Ci0KLSAgICBjb25zdCBWZWN0b3I8Rm9ybUFzc29jaWF0ZWRF
bGVtZW50Kj4mIGZvcm1Db250cm9sRWxlbWVudHMoKSBjb25zdDsKLSAgICBjb25zdCBWZWN0b3I8
SFRNTEltYWdlRWxlbWVudCo+JiBmb3JtSW1hZ2VFbGVtZW50cygpIGNvbnN0OwotICAgIHZpcnR1
YWwgRWxlbWVudCogdmlydHVhbEl0ZW1BZnRlcih1bnNpZ25lZCYgb2Zmc2V0SW5BcnJheSwgRWxl
bWVudCopIGNvbnN0IE9WRVJSSURFOwotfTsKLQotfSAvL25hbWVzcGFjZQotCi0jZW5kaWYKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rp
b24uY3BwCShyZXZpc2lvbiAxMzM1NTEpCShmcm9tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZv
cm1Db2xsZWN0aW9uLmNwcDoxMzM1NTEpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3Jt
Q29udHJvbHNDb2xsZWN0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE2MyBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMTk5OSBMYXJzIEtub2xsIChrbm9sbEBrZGUub3JnKQorICog
ICAgICAgICAgIChDKSAxOTk5IEFudHRpIEtvaXZpc3RvIChrb2l2aXN0b0BrZGUub3JnKQorICog
Q29weXJpZ2h0IChDKSAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDEwLCAyMDExLCAy
MDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIGxpYnJhcnkg
aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2Rp
ZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwor
ICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsg
ZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikg
YW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGlu
IHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FS
UkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRB
QklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUK
KyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoK
KyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhl
IGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICog
Qm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJIVE1MRm9ybUNvbGxlY3Rpb24uaCIKKworI2luY2x1ZGUgIkhUTUxGaWVs
ZFNldEVsZW1lbnQuaCIKKyNpbmNsdWRlICJIVE1MRm9ybUNvbnRyb2xFbGVtZW50LmgiCisjaW5j
bHVkZSAiSFRNTEZvcm1FbGVtZW50LmgiCisjaW5jbHVkZSAiSFRNTEltYWdlRWxlbWVudC5oIgor
I2luY2x1ZGUgIkhUTUxOYW1lcy5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3VzaW5nIG5h
bWVzcGFjZSBIVE1MTmFtZXM7CisKKy8vIFNpbmNlIHRoZSBjb2xsZWN0aW9ucyBhcmUgdG8gYmUg
ImxpdmUiLCB3ZSBoYXZlIHRvIGRvIHRoZQorLy8gY2FsY3VsYXRpb24gZXZlcnkgdGltZSBpZiBh
bnl0aGluZyBoYXMgY2hhbmdlZC4KKworSFRNTEZvcm1Db2xsZWN0aW9uOjpIVE1MRm9ybUNvbGxl
Y3Rpb24oRWxlbWVudCogYmFzZSkKKyAgICA6IEhUTUxDb2xsZWN0aW9uKGJhc2UsIEZvcm1Db250
cm9scywgT3ZlcnJpZGVzSXRlbUFmdGVyKQoreworICAgIEFTU0VSVChiYXNlLT5oYXNUYWdOYW1l
KGZvcm1UYWcpIHx8IGJhc2UtPmhhc1RhZ05hbWUoZmllbGRzZXRUYWcpKTsKK30KKworUGFzc1Jl
ZlB0cjxIVE1MRm9ybUNvbGxlY3Rpb24+IEhUTUxGb3JtQ29sbGVjdGlvbjo6Y3JlYXRlKEVsZW1l
bnQqIGJhc2UpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBIVE1MRm9ybUNvbGxlY3Rpb24o
YmFzZSkpOworfQorCitIVE1MRm9ybUNvbGxlY3Rpb246On5IVE1MRm9ybUNvbGxlY3Rpb24oKQor
eworfQorCitjb25zdCBWZWN0b3I8Rm9ybUFzc29jaWF0ZWRFbGVtZW50Kj4mIEhUTUxGb3JtQ29s
bGVjdGlvbjo6Zm9ybUNvbnRyb2xFbGVtZW50cygpIGNvbnN0Cit7CisgICAgQVNTRVJUKGJhc2Uo
KSk7CisgICAgQVNTRVJUKGJhc2UoKS0+aGFzVGFnTmFtZShmb3JtVGFnKSB8fCBiYXNlKCktPmhh
c1RhZ05hbWUoZmllbGRzZXRUYWcpKTsKKyAgICBpZiAoYmFzZSgpLT5oYXNUYWdOYW1lKGZvcm1U
YWcpKQorICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SFRNTEZvcm1FbGVtZW50Kj4oYmFzZSgp
KS0+YXNzb2NpYXRlZEVsZW1lbnRzKCk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEhUTUxGaWVs
ZFNldEVsZW1lbnQqPihiYXNlKCkpLT5hc3NvY2lhdGVkRWxlbWVudHMoKTsKK30KKworY29uc3Qg
VmVjdG9yPEhUTUxJbWFnZUVsZW1lbnQqPiYgSFRNTEZvcm1Db2xsZWN0aW9uOjpmb3JtSW1hZ2VF
bGVtZW50cygpIGNvbnN0Cit7CisgICAgQVNTRVJUKGJhc2UoKSk7CisgICAgQVNTRVJUKGJhc2Uo
KS0+aGFzVGFnTmFtZShmb3JtVGFnKSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEhUTUxGb3Jt
RWxlbWVudCo+KGJhc2UoKSktPmltYWdlRWxlbWVudHMoKTsKK30KKworRWxlbWVudCogSFRNTEZv
cm1Db2xsZWN0aW9uOjp2aXJ0dWFsSXRlbUFmdGVyKHVuc2lnbmVkJiBvZmZzZXQsIEVsZW1lbnQq
IHByZXZpb3VzSXRlbSkgY29uc3QKK3sKKyAgICBjb25zdCBWZWN0b3I8Rm9ybUFzc29jaWF0ZWRF
bGVtZW50Kj4mIGVsZW1lbnRzQXJyYXkgPSBmb3JtQ29udHJvbEVsZW1lbnRzKCk7CisgICAgaWYg
KHByZXZpb3VzSXRlbSkKKyAgICAgICAgb2Zmc2V0Kys7CisgICAgd2hpbGUgKG9mZnNldCA8IGVs
ZW1lbnRzQXJyYXkuc2l6ZSgpKSB7CisgICAgICAgIEZvcm1Bc3NvY2lhdGVkRWxlbWVudCogZWxl
bWVudCA9IGVsZW1lbnRzQXJyYXlbb2Zmc2V0XTsKKyAgICAgICAgaWYgKGVsZW1lbnQtPmlzRW51
bWVyYXRhYmxlKCkpCisgICAgICAgICAgICByZXR1cm4gdG9IVE1MRWxlbWVudChlbGVtZW50KTsK
KyAgICAgICAgb2Zmc2V0Kys7CisgICAgfQorICAgIHJldHVybiAwOworfQorCitzdGF0aWMgSFRN
TEVsZW1lbnQqIGZpcnN0TmFtZWRJdGVtKGNvbnN0IFZlY3RvcjxGb3JtQXNzb2NpYXRlZEVsZW1l
bnQqPiYgZWxlbWVudHNBcnJheSwKKyAgICBjb25zdCBWZWN0b3I8SFRNTEltYWdlRWxlbWVudCo+
KiBpbWFnZUVsZW1lbnRzQXJyYXksIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lLCBjb25z
dCBTdHJpbmcmIG5hbWUpCit7CisgICAgQVNTRVJUKGF0dHJOYW1lID09IGlkQXR0ciB8fCBhdHRy
TmFtZSA9PSBuYW1lQXR0cik7CisKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZWxlbWVu
dHNBcnJheS5zaXplKCk7ICsraSkgeworICAgICAgICBIVE1MRWxlbWVudCogZWxlbWVudCA9IHRv
SFRNTEVsZW1lbnQoZWxlbWVudHNBcnJheVtpXSk7CisgICAgICAgIGlmIChlbGVtZW50c0FycmF5
W2ldLT5pc0VudW1lcmF0YWJsZSgpICYmIGVsZW1lbnQtPmZhc3RHZXRBdHRyaWJ1dGUoYXR0ck5h
bWUpID09IG5hbWUpCisgICAgICAgICAgICByZXR1cm4gZWxlbWVudDsKKyAgICB9CisKKyAgICBp
ZiAoIWltYWdlRWxlbWVudHNBcnJheSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgaW1hZ2VFbGVtZW50c0FycmF5LT5zaXplKCk7ICsraSkgeworICAg
ICAgICBIVE1MSW1hZ2VFbGVtZW50KiBlbGVtZW50ID0gKCppbWFnZUVsZW1lbnRzQXJyYXkpW2ld
OworICAgICAgICBpZiAoZWxlbWVudC0+ZmFzdEdldEF0dHJpYnV0ZShhdHRyTmFtZSkgPT0gbmFt
ZSkKKyAgICAgICAgICAgIHJldHVybiBlbGVtZW50OworICAgIH0KKworICAgIHJldHVybiAwOwor
fQorCitOb2RlKiBIVE1MRm9ybUNvbGxlY3Rpb246Om5hbWVkSXRlbShjb25zdCBBdG9taWNTdHJp
bmcmIG5hbWUpIGNvbnN0Cit7CisgICAgLy8gaHR0cDovL21zZG4ubWljcm9zb2Z0LmNvbS93b3Jr
c2hvcC9hdXRob3IvZGh0bWwvcmVmZXJlbmNlL21ldGhvZHMvbmFtZWRpdGVtLmFzcAorICAgIC8v
IFRoaXMgbWV0aG9kIGZpcnN0IHNlYXJjaGVzIGZvciBhbiBvYmplY3Qgd2l0aCBhIG1hdGNoaW5n
IGlkCisgICAgLy8gYXR0cmlidXRlLiBJZiBhIG1hdGNoIGlzIG5vdCBmb3VuZCwgdGhlIG1ldGhv
ZCB0aGVuIHNlYXJjaGVzIGZvciBhbgorICAgIC8vIG9iamVjdCB3aXRoIGEgbWF0Y2hpbmcgbmFt
ZSBhdHRyaWJ1dGUsIGJ1dCBvbmx5IG9uIHRob3NlIGVsZW1lbnRzCisgICAgLy8gdGhhdCBhcmUg
YWxsb3dlZCBhIG5hbWUgYXR0cmlidXRlLgorICAgIGNvbnN0IFZlY3RvcjxIVE1MSW1hZ2VFbGVt
ZW50Kj4qIGltYWdlc0VsZW1lbnRzID0gYmFzZSgpLT5oYXNUYWdOYW1lKGZpZWxkc2V0VGFnKSA/
IDAgOiAmZm9ybUltYWdlRWxlbWVudHMoKTsKKyAgICBpZiAoSFRNTEVsZW1lbnQqIGl0ZW0gPSBm
aXJzdE5hbWVkSXRlbShmb3JtQ29udHJvbEVsZW1lbnRzKCksIGltYWdlc0VsZW1lbnRzLCBpZEF0
dHIsIG5hbWUpKQorICAgICAgICByZXR1cm4gaXRlbTsKKworICAgIHJldHVybiBmaXJzdE5hbWVk
SXRlbShmb3JtQ29udHJvbEVsZW1lbnRzKCksIGltYWdlc0VsZW1lbnRzLCBuYW1lQXR0ciwgbmFt
ZSk7Cit9CisKK3ZvaWQgSFRNTEZvcm1Db2xsZWN0aW9uOjp1cGRhdGVOYW1lQ2FjaGUoKSBjb25z
dAoreworICAgIGlmIChoYXNOYW1lQ2FjaGUoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgSGFz
aFNldDxBdG9taWNTdHJpbmdJbXBsKj4gZm91bmRJbnB1dEVsZW1lbnRzOworCisgICAgY29uc3Qg
VmVjdG9yPEZvcm1Bc3NvY2lhdGVkRWxlbWVudCo+JiBlbGVtZW50c0FycmF5ID0gZm9ybUNvbnRy
b2xFbGVtZW50cygpOworCisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGVsZW1lbnRzQXJy
YXkuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgRm9ybUFzc29jaWF0ZWRFbGVtZW50KiBhc3NvY2lh
dGVkRWxlbWVudCA9IGVsZW1lbnRzQXJyYXlbaV07CisgICAgICAgIGlmIChhc3NvY2lhdGVkRWxl
bWVudC0+aXNFbnVtZXJhdGFibGUoKSkgeworICAgICAgICAgICAgSFRNTEVsZW1lbnQqIGVsZW1l
bnQgPSB0b0hUTUxFbGVtZW50KGFzc29jaWF0ZWRFbGVtZW50KTsKKyAgICAgICAgICAgIGNvbnN0
IEF0b21pY1N0cmluZyYgaWRBdHRyVmFsID0gZWxlbWVudC0+Z2V0SWRBdHRyaWJ1dGUoKTsKKyAg
ICAgICAgICAgIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZUF0dHJWYWwgPSBlbGVtZW50LT5nZXRO
YW1lQXR0cmlidXRlKCk7CisgICAgICAgICAgICBpZiAoIWlkQXR0clZhbC5pc0VtcHR5KCkpIHsK
KyAgICAgICAgICAgICAgICBhcHBlbmRJZENhY2hlKGlkQXR0clZhbCwgZWxlbWVudCk7CisgICAg
ICAgICAgICAgICAgZm91bmRJbnB1dEVsZW1lbnRzLmFkZChpZEF0dHJWYWwuaW1wbCgpKTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICghbmFtZUF0dHJWYWwuaXNFbXB0eSgpICYmIGlk
QXR0clZhbCAhPSBuYW1lQXR0clZhbCkgeworICAgICAgICAgICAgICAgIGFwcGVuZE5hbWVDYWNo
ZShuYW1lQXR0clZhbCwgZWxlbWVudCk7CisgICAgICAgICAgICAgICAgZm91bmRJbnB1dEVsZW1l
bnRzLmFkZChuYW1lQXR0clZhbC5pbXBsKCkpOworICAgICAgICAgICAgfQorICAgICAgICB9Cisg
ICAgfQorCisgICAgaWYgKGJhc2UoKS0+aGFzVGFnTmFtZShmb3JtVGFnKSkgeworICAgICAgICBj
b25zdCBWZWN0b3I8SFRNTEltYWdlRWxlbWVudCo+JiBpbWFnZUVsZW1lbnRzQXJyYXkgPSBmb3Jt
SW1hZ2VFbGVtZW50cygpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgaW1hZ2VF
bGVtZW50c0FycmF5LnNpemUoKTsgKytpKSB7CisgICAgICAgICAgICBIVE1MSW1hZ2VFbGVtZW50
KiBlbGVtZW50ID0gaW1hZ2VFbGVtZW50c0FycmF5W2ldOworICAgICAgICAgICAgY29uc3QgQXRv
bWljU3RyaW5nJiBpZEF0dHJWYWwgPSBlbGVtZW50LT5nZXRJZEF0dHJpYnV0ZSgpOworICAgICAg
ICAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lQXR0clZhbCA9IGVsZW1lbnQtPmdldE5hbWVB
dHRyaWJ1dGUoKTsKKyAgICAgICAgICAgIGlmICghaWRBdHRyVmFsLmlzRW1wdHkoKSAmJiAhZm91
bmRJbnB1dEVsZW1lbnRzLmNvbnRhaW5zKGlkQXR0clZhbC5pbXBsKCkpKQorICAgICAgICAgICAg
ICAgIGFwcGVuZElkQ2FjaGUoaWRBdHRyVmFsLCBlbGVtZW50KTsKKyAgICAgICAgICAgIGlmICgh
bmFtZUF0dHJWYWwuaXNFbXB0eSgpICYmIGlkQXR0clZhbCAhPSBuYW1lQXR0clZhbCAmJiAhZm91
bmRJbnB1dEVsZW1lbnRzLmNvbnRhaW5zKG5hbWVBdHRyVmFsLmltcGwoKSkpCisgICAgICAgICAg
ICAgICAgYXBwZW5kTmFtZUNhY2hlKG5hbWVBdHRyVmFsLCBlbGVtZW50KTsKKyAgICAgICAgfQor
ICAgIH0KKworICAgIHNldEhhc05hbWVDYWNoZSgpOworfQorCit9CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmNwcAkocmV2aXNp
b24gMTMzNTUxKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xzQ29sbGVj
dGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxLDcgKzIxLDcgQEAKICAqLwogCiAjaW5jbHVk
ZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiSFRNTEZvcm1Db2xsZWN0aW9uLmgiCisjaW5jbHVkZSAi
SFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uaCIKIAogI2luY2x1ZGUgIkhUTUxGaWVsZFNldEVs
ZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MRm9ybUNvbnRyb2xFbGVtZW50LmgiCkBAIC0zNiwyMiAr
MzYsMjIgQEAgdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIC8vIFNpbmNlIHRoZSBjb2xsZWN0
aW9ucyBhcmUgdG8gYmUgImxpdmUiLCB3ZSBoYXZlIHRvIGRvIHRoZQogLy8gY2FsY3VsYXRpb24g
ZXZlcnkgdGltZSBpZiBhbnl0aGluZyBoYXMgY2hhbmdlZC4KIAotSFRNTEZvcm1Db2xsZWN0aW9u
OjpIVE1MRm9ybUNvbGxlY3Rpb24oRWxlbWVudCogYmFzZSkKK0hUTUxGb3JtQ29udHJvbHNDb2xs
ZWN0aW9uOjpIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbihFbGVtZW50KiBiYXNlKQogICAgIDog
SFRNTENvbGxlY3Rpb24oYmFzZSwgRm9ybUNvbnRyb2xzLCBPdmVycmlkZXNJdGVtQWZ0ZXIpCiB7
CiAgICAgQVNTRVJUKGJhc2UtPmhhc1RhZ05hbWUoZm9ybVRhZykgfHwgYmFzZS0+aGFzVGFnTmFt
ZShmaWVsZHNldFRhZykpOwogfQogCi1QYXNzUmVmUHRyPEhUTUxGb3JtQ29sbGVjdGlvbj4gSFRN
TEZvcm1Db2xsZWN0aW9uOjpjcmVhdGUoRWxlbWVudCogYmFzZSkKK1Bhc3NSZWZQdHI8SFRNTEZv
cm1Db250cm9sc0NvbGxlY3Rpb24+IEhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uOjpjcmVhdGUo
RWxlbWVudCogYmFzZSkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IEhUTUxGb3JtQ29sbGVj
dGlvbihiYXNlKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBIVE1MRm9ybUNvbnRyb2xzQ29s
bGVjdGlvbihiYXNlKSk7CiB9CiAKLUhUTUxGb3JtQ29sbGVjdGlvbjo6fkhUTUxGb3JtQ29sbGVj
dGlvbigpCitIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbjo6fkhUTUxGb3JtQ29udHJvbHNDb2xs
ZWN0aW9uKCkKIHsKIH0KIAotY29uc3QgVmVjdG9yPEZvcm1Bc3NvY2lhdGVkRWxlbWVudCo+JiBI
VE1MRm9ybUNvbGxlY3Rpb246OmZvcm1Db250cm9sRWxlbWVudHMoKSBjb25zdAorY29uc3QgVmVj
dG9yPEZvcm1Bc3NvY2lhdGVkRWxlbWVudCo+JiBIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbjo6
Zm9ybUNvbnRyb2xFbGVtZW50cygpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGJhc2UoKSk7CiAgICAg
QVNTRVJUKGJhc2UoKS0+aGFzVGFnTmFtZShmb3JtVGFnKSB8fCBiYXNlKCktPmhhc1RhZ05hbWUo
ZmllbGRzZXRUYWcpKTsKQEAgLTYwLDE0ICs2MCwxNCBAQCBjb25zdCBWZWN0b3I8Rm9ybUFzc29j
aWF0ZWRFbGVtZW50Kj4mIEhUCiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEhUTUxGaWVsZFNldEVs
ZW1lbnQqPihiYXNlKCkpLT5hc3NvY2lhdGVkRWxlbWVudHMoKTsKIH0KIAotY29uc3QgVmVjdG9y
PEhUTUxJbWFnZUVsZW1lbnQqPiYgSFRNTEZvcm1Db2xsZWN0aW9uOjpmb3JtSW1hZ2VFbGVtZW50
cygpIGNvbnN0Citjb25zdCBWZWN0b3I8SFRNTEltYWdlRWxlbWVudCo+JiBIVE1MRm9ybUNvbnRy
b2xzQ29sbGVjdGlvbjo6Zm9ybUltYWdlRWxlbWVudHMoKSBjb25zdAogewogICAgIEFTU0VSVChi
YXNlKCkpOwogICAgIEFTU0VSVChiYXNlKCktPmhhc1RhZ05hbWUoZm9ybVRhZykpOwogICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxIVE1MRm9ybUVsZW1lbnQqPihiYXNlKCkpLT5pbWFnZUVsZW1lbnRz
KCk7CiB9CiAKLUVsZW1lbnQqIEhUTUxGb3JtQ29sbGVjdGlvbjo6dmlydHVhbEl0ZW1BZnRlcih1
bnNpZ25lZCYgb2Zmc2V0LCBFbGVtZW50KiBwcmV2aW91c0l0ZW0pIGNvbnN0CitFbGVtZW50KiBI
VE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbjo6dmlydHVhbEl0ZW1BZnRlcih1bnNpZ25lZCYgb2Zm
c2V0LCBFbGVtZW50KiBwcmV2aW91c0l0ZW0pIGNvbnN0CiB7CiAgICAgY29uc3QgVmVjdG9yPEZv
cm1Bc3NvY2lhdGVkRWxlbWVudCo+JiBlbGVtZW50c0FycmF5ID0gZm9ybUNvbnRyb2xFbGVtZW50
cygpOwogICAgIGlmIChwcmV2aW91c0l0ZW0pCkBAIC0xMDQsNyArMTA0LDcgQEAgc3RhdGljIEhU
TUxFbGVtZW50KiBmaXJzdE5hbWVkSXRlbShjb25zdAogICAgIHJldHVybiAwOwogfQogCi1Ob2Rl
KiBIVE1MRm9ybUNvbGxlY3Rpb246Om5hbWVkSXRlbShjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUp
IGNvbnN0CitOb2RlKiBIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbjo6bmFtZWRJdGVtKGNvbnN0
IEF0b21pY1N0cmluZyYgbmFtZSkgY29uc3QKIHsKICAgICAvLyBodHRwOi8vbXNkbi5taWNyb3Nv
ZnQuY29tL3dvcmtzaG9wL2F1dGhvci9kaHRtbC9yZWZlcmVuY2UvbWV0aG9kcy9uYW1lZGl0ZW0u
YXNwCiAgICAgLy8gVGhpcyBtZXRob2QgZmlyc3Qgc2VhcmNoZXMgZm9yIGFuIG9iamVjdCB3aXRo
IGEgbWF0Y2hpbmcgaWQKQEAgLTExOCw3ICsxMTgsNyBAQCBOb2RlKiBIVE1MRm9ybUNvbGxlY3Rp
b246Om5hbWVkSXRlbShjb25zCiAgICAgcmV0dXJuIGZpcnN0TmFtZWRJdGVtKGZvcm1Db250cm9s
RWxlbWVudHMoKSwgaW1hZ2VzRWxlbWVudHMsIG5hbWVBdHRyLCBuYW1lKTsKIH0KIAotdm9pZCBI
VE1MRm9ybUNvbGxlY3Rpb246OnVwZGF0ZU5hbWVDYWNoZSgpIGNvbnN0Cit2b2lkIEhUTUxGb3Jt
Q29udHJvbHNDb2xsZWN0aW9uOjp1cGRhdGVOYW1lQ2FjaGUoKSBjb25zdAogewogICAgIGlmICho
YXNOYW1lQ2FjaGUoKSkKICAgICAgICAgcmV0dXJuOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uaAkocmV2aXNpb24gMTMzNTUxKQko
ZnJvbSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29sbGVjdGlvbi5oOjEzMzU1MSkKKysr
IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uaAkod29ya2lu
ZyBjb3B5KQpAQCAtMCwwICsxLDU3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAxOTk5IExhcnMg
S25vbGwgKGtub2xsQGtkZS5vcmcpCisgKiAgICAgICAgICAgKEMpIDE5OTkgQW50dGkgS29pdmlz
dG8gKGtvaXZpc3RvQGtkZS5vcmcpCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDQsIDIwMDUs
IDIwMDYsIDIwMDcsIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh
bmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0
IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMg
ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBX
SVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m
CisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu
ICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl
IGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxp
YnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlm
dGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqCisgKi8KKworI2lm
bmRlZiBIVE1MRm9ybUNvbGxlY3Rpb25faAorI2RlZmluZSBIVE1MRm9ybUNvbGxlY3Rpb25faAor
CisjaW5jbHVkZSAiSFRNTENvbGxlY3Rpb24uaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitj
bGFzcyBGb3JtQXNzb2NpYXRlZEVsZW1lbnQ7CitjbGFzcyBIVE1MRWxlbWVudDsKK2NsYXNzIEhU
TUxJbWFnZUVsZW1lbnQ7CitjbGFzcyBRdWFsaWZpZWROYW1lOworLy8gVGhpcyBjbGFzcyBpcyBq
dXN0IGEgYmlnIGhhY2sgdG8gZmluZCBmb3JtIGVsZW1lbnRzIGV2ZW4gaW4gbWFsZm9ybWVkIEhU
TUwgZWxlbWVudHMuCisvLyBUaGUgZmFtb3VzIDx0YWJsZT48dHI+PGZvcm0+PHRkPiBwcm9ibGVt
LgorCitjbGFzcyBIVE1MRm9ybUNvbGxlY3Rpb24gOiBwdWJsaWMgSFRNTENvbGxlY3Rpb24gewor
cHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPEhUTUxGb3JtQ29sbGVjdGlvbj4gY3JlYXRl
KEVsZW1lbnQqKTsKKworICAgIHZpcnR1YWwgfkhUTUxGb3JtQ29sbGVjdGlvbigpOworCisgICAg
dmlydHVhbCBOb2RlKiBuYW1lZEl0ZW0oY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKSBjb25zdDsK
KworcHJpdmF0ZToKKyAgICBIVE1MRm9ybUNvbGxlY3Rpb24oRWxlbWVudCopOworCisgICAgdmly
dHVhbCB2b2lkIHVwZGF0ZU5hbWVDYWNoZSgpIGNvbnN0OworCisgICAgY29uc3QgVmVjdG9yPEZv
cm1Bc3NvY2lhdGVkRWxlbWVudCo+JiBmb3JtQ29udHJvbEVsZW1lbnRzKCkgY29uc3Q7CisgICAg
Y29uc3QgVmVjdG9yPEhUTUxJbWFnZUVsZW1lbnQqPiYgZm9ybUltYWdlRWxlbWVudHMoKSBjb25z
dDsKKyAgICB2aXJ0dWFsIEVsZW1lbnQqIHZpcnR1YWxJdGVtQWZ0ZXIodW5zaWduZWQmIG9mZnNl
dEluQXJyYXksIEVsZW1lbnQqKSBjb25zdCBPVkVSUklERTsKK307CisKK30gLy9uYW1lc3BhY2UK
KworI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbHNDb2xs
ZWN0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRy
b2xzQ29sbGVjdGlvbi5oCShyZXZpc2lvbiAxMzM1NTEpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTIwLDggKzIw
LDggQEAKICAqCiAgKi8KIAotI2lmbmRlZiBIVE1MRm9ybUNvbGxlY3Rpb25faAotI2RlZmluZSBI
VE1MRm9ybUNvbGxlY3Rpb25faAorI2lmbmRlZiBIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbl9o
CisjZGVmaW5lIEhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uX2gKIAogI2luY2x1ZGUgIkhUTUxD
b2xsZWN0aW9uLmgiCiAKQEAgLTM0LDE2ICszNCwxNiBAQCBjbGFzcyBRdWFsaWZpZWROYW1lOwog
Ly8gVGhpcyBjbGFzcyBpcyBqdXN0IGEgYmlnIGhhY2sgdG8gZmluZCBmb3JtIGVsZW1lbnRzIGV2
ZW4gaW4gbWFsZm9ybWVkIEhUTUwgZWxlbWVudHMuCiAvLyBUaGUgZmFtb3VzIDx0YWJsZT48dHI+
PGZvcm0+PHRkPiBwcm9ibGVtLgogCi1jbGFzcyBIVE1MRm9ybUNvbGxlY3Rpb24gOiBwdWJsaWMg
SFRNTENvbGxlY3Rpb24geworY2xhc3MgSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24gOiBwdWJs
aWMgSFRNTENvbGxlY3Rpb24gewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEhUTUxG
b3JtQ29sbGVjdGlvbj4gY3JlYXRlKEVsZW1lbnQqKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxI
VE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbj4gY3JlYXRlKEVsZW1lbnQqKTsKIAotICAgIHZpcnR1
YWwgfkhUTUxGb3JtQ29sbGVjdGlvbigpOworICAgIHZpcnR1YWwgfkhUTUxGb3JtQ29udHJvbHND
b2xsZWN0aW9uKCk7CiAKICAgICB2aXJ0dWFsIE5vZGUqIG5hbWVkSXRlbShjb25zdCBBdG9taWNT
dHJpbmcmIG5hbWUpIGNvbnN0OwogCiBwcml2YXRlOgotICAgIEhUTUxGb3JtQ29sbGVjdGlvbihF
bGVtZW50Kik7CisgICAgSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24oRWxlbWVudCopOwogCiAg
ICAgdmlydHVhbCB2b2lkIHVwZGF0ZU5hbWVDYWNoZSgpIGNvbnN0OwogCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmlkbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmlkbAkocmV2
aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rp
b24uaWRsCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDI2IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDA2LCAyMDA3LCAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAwNiBTYW11ZWwgV2VpbmlnIDxzYW0ud2VpbmlnQGdtYWlsLmNvbT4KKyAq
CisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg
aXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29m
dHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9y
IChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5
IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBi
dXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50
eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3Ig
bW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2Yg
dGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhp
cyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisg
KiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQs
IEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworWwor
ICAgIEluZGV4ZWRHZXR0ZXIsCisgICAgTmFtZWRHZXR0ZXIKK10gaW50ZXJmYWNlIEhUTUxGb3Jt
Q29udHJvbHNDb2xsZWN0aW9uIDogSFRNTENvbGxlY3Rpb24geworICAgIFtDdXN0b21dIE5vZGUg
bmFtZWRJdGVtKGluIFtPcHRpb25hbD1EZWZhdWx0SXNVbmRlZmluZWRdIERPTVN0cmluZyBuYW1l
KTsKK307CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwCShyZXZp
c2lvbiAxMzM1NjgpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTQwLDggKzQwLDggQEAKICNpbmNsdWRlICJGcmFtZS5oIgogI2lu
Y2x1ZGUgIkZyYW1lTG9hZGVyLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXJDbGllbnQuaCIKKyNp
bmNsdWRlICJIVE1MQ29sbGVjdGlvbi5oIgogI2luY2x1ZGUgIkhUTUxEb2N1bWVudC5oIgotI2lu
Y2x1ZGUgIkhUTUxGb3JtQ29sbGVjdGlvbi5oIgogI2luY2x1ZGUgIkhUTUxJbWFnZUVsZW1lbnQu
aCIKICNpbmNsdWRlICJIVE1MSW5wdXRFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgi
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmgJKHJldmlzaW9uIDEzMzU2
OCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTM4LDcgKzM4LDYgQEAgY2xhc3MgRm9ybURhdGE7CiBjbGFzcyBIVE1MRm9ybUNvbnRy
b2xFbGVtZW50OwogY2xhc3MgSFRNTEltYWdlRWxlbWVudDsKIGNsYXNzIEhUTUxJbnB1dEVsZW1l
bnQ7Ci1jbGFzcyBIVE1MRm9ybUNvbGxlY3Rpb247CiBjbGFzcyBUZXh0RW5jb2Rpbmc7CiAKIGNs
YXNzIEhUTUxGb3JtRWxlbWVudCA6IHB1YmxpYyBIVE1MRWxlbWVudCB7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxPcHRpb25zQ29sbGVjdGlvbi5pZGwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0aW9uc0NvbGxlY3Rpb24uaWRsCShyZXZpc2lvbiAxMzM1
NjgpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRpb25zQ29sbGVjdGlvbi5pZGwJKHdv
cmtpbmcgY29weSkKQEAgLTIwLDExICsyMCwxNCBAQAogCiBbCiAgICAgSlNHZW5lcmF0ZVRvTmF0
aXZlT2JqZWN0LAotICAgIEN1c3RvbUluZGV4ZWRTZXR0ZXIKKyAgICBDdXN0b21JbmRleGVkU2V0
dGVyLAorICAgIE5hbWVkR2V0dGVyCiBdIGludGVyZmFjZSBIVE1MT3B0aW9uc0NvbGxlY3Rpb24g
OiBIVE1MQ29sbGVjdGlvbiB7Ci0gICAgICAgICAgICAgYXR0cmlidXRlIGxvbmcgc2VsZWN0ZWRJ
bmRleDsKLSAgICAgICAgICAgICBbQ3VzdG9tXSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBsZW5n
dGgKLSAgICAgICAgICAgICAgICAgICAgc2V0dGVyIHJhaXNlcyAoRE9NRXhjZXB0aW9uKTsKKyAg
ICBhdHRyaWJ1dGUgbG9uZyBzZWxlY3RlZEluZGV4OworICAgIFtDdXN0b21dIGF0dHJpYnV0ZSB1
bnNpZ25lZCBsb25nIGxlbmd0aAorICAgICAgICBzZXR0ZXIgcmFpc2VzIChET01FeGNlcHRpb24p
OworCisgICAgW0N1c3RvbV0gTm9kZSBuYW1lZEl0ZW0oaW4gW09wdGlvbmFsPURlZmF1bHRJc1Vu
ZGVmaW5lZF0gRE9NU3RyaW5nIG5hbWUpOwogCiAgICAgW0N1c3RvbV0gdm9pZCBhZGQoaW4gW09w
dGlvbmFsPURlZmF1bHRJc1VuZGVmaW5lZF0gSFRNTE9wdGlvbkVsZW1lbnQgb3B0aW9uLCAKICAg
ICAgICAgICAgICAgICAgICAgICBpbiBbT3B0aW9uYWxdIHVuc2lnbmVkIGxvbmcgaW5kZXgpCkBA
IC0zMiw4ICszNSw3IEBACiAgICAgW0N1c3RvbV0gdm9pZCByZW1vdmUoaW4gW09wdGlvbmFsPURl
ZmF1bHRJc1VuZGVmaW5lZF0gdW5zaWduZWQgbG9uZyBpbmRleCk7CiAKICNpZiBkZWZpbmVkKExB
TkdVQUdFX09CSkVDVElWRV9DKSAmJiBMQU5HVUFHRV9PQkpFQ1RJVkVfQwotICAgIE5vZGUgaXRl
bShpbiB1bnNpZ25lZCBsb25nIGluZGV4KTsgCi0gICAgTm9kZSBuYW1lZEl0ZW0oaW4gRE9NU3Ry
aW5nIG5hbWUpOyAKKyAgICBOb2RlIGl0ZW0oaW4gdW5zaWduZWQgbG9uZyBpbmRleCk7CiAjZW5k
aWYKIH07CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmlkbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5pZGwJKHJldmlzaW9uIDEzMzU2
OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmlkbAkod29ya2luZyBjb3B5KQpA
QCAtNDY5LDYgKzQ2OSw4IEBACiAKICAgICBhdHRyaWJ1dGUgSFRNTENvbGxlY3Rpb25Db25zdHJ1
Y3RvciBIVE1MQ29sbGVjdGlvbjsKICAgICBhdHRyaWJ1dGUgSFRNTEFsbENvbGxlY3Rpb25Db25z
dHJ1Y3RvciBIVE1MQWxsQ29sbGVjdGlvbjsKKyAgICBhdHRyaWJ1dGUgSFRNTEZvcm1Db250cm9s
c0NvbGxlY3Rpb25Db25zdHJ1Y3RvciBIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbjsKKyAgICBh
dHRyaWJ1dGUgSFRNTE9wdGlvbnNDb2xsZWN0aW9uQ29uc3RydWN0b3IgSFRNTE9wdGlvbnNDb2xs
ZWN0aW9uOwogICAgIFtDb25kaXRpb25hbD1NSUNST0RBVEFdIGF0dHJpYnV0ZSBIVE1MUHJvcGVy
dGllc0NvbGxlY3Rpb25Db25zdHJ1Y3RvciBIVE1MUHJvcGVydGllc0NvbGxlY3Rpb247CiAgICAg
YXR0cmlidXRlIEhUTUxVbmtub3duRWxlbWVudENvbnN0cnVjdG9yIEhUTUxVbmtub3duRWxlbWVu
dDsKIApJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMTMzNjY2KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTItMTEtMDYgIFJ5b3N1a2UgTml3
YSAgPHJuaXdhQHdlYmtpdC5vcmc+CisKKyAgICAgICAgTWFrZSBuYW1lZEl0ZW0gcmV0dXJuIGEg
bm9kZSBsaXN0IG9ubHkgaW4gSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24gYW5kIEhUTUxPcHRp
b25zQ29sbGVjdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTAxMzExCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgQWRkZWQgYSByZWdyZXNzaW9uIHRlc3QgdG8gZW5zdXJlIGZvcm0uZWxlbWVudHMgYW5k
IHNlbGVjdC5vcHRpb25zIHVzZSBjb3JyZWN0IGludGVyZmFjZXMsCisgICAgICAgIGFuZCBuYW1l
ZCBnZXR0ZXIgZm9yIHRob3NlIHR3byBwcm9wZXJ0aWVzIHJldHVybiBhIE5vZGVMaXN0IHdoZW4g
dGhlcmUgYXJlIG11bHRpcGxlIG1hdGNoZXMuCisKKyAgICAgICAgKiBmYXN0L2RvbS9jb2xsZWN0
aW9uLW5hbWVkaXRlbS1tb3ZlLWJldHdlZW4tZG9jdW1lbnRzLWV4cGVjdGVkLnR4dDogUmViYXNl
bGluZWQgc2luY2UgbmFtZWRJdGVtCisgICAgICAgIG5vdyBjb3JyZWN0bHkgcmV0dXJucyBudWxs
IHdoZW4gdGhlcmUgaXMgbm8gbWF0Y2guCisgICAgICAgICogZmFzdC9kb20vY29sbGVjdGlvbi1u
YW1lZGl0ZW0tbW92ZS1iZXR3ZWVuLWRvY3VtZW50cy5odG1sOiBEaXR0by4KKyAgICAgICAgKiBm
YXN0L2RvbS9odG1sLWNvbGxlY3Rpb25zLW5hbWVkLWdldHRlci1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIGZhc3QvZG9tL2h0bWwtY29sbGVjdGlvbnMtbmFtZWQtZ2V0dGVyLmh0bWw6
IEFkZGVkLgorCiAyMDEyLTExLTA2ICBEaXJrIFByYW5rZSAgPGRwcmFua2VAY2hyb21pdW0ub3Jn
PgogCiAgICAgICAgIFVucmV2aWV3ZWQgY2hyb21pdW0sIGNocm9taXVtLW1hYy1tb3VudGFpbmxp
b24gZ2FyZGVuaW5nCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9jb2xsZWN0aW9uLW5hbWVk
aXRlbS1tb3ZlLWJldHdlZW4tZG9jdW1lbnRzLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L2RvbS9jb2xsZWN0aW9uLW5hbWVkaXRlbS1tb3ZlLWJldHdlZW4tZG9j
dW1lbnRzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTMzNTY4KQorKysgTGF5b3V0VGVzdHMvZmFz
dC9kb20vY29sbGVjdGlvbi1uYW1lZGl0ZW0tbW92ZS1iZXR3ZWVuLWRvY3VtZW50cy1leHBlY3Rl
ZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsNCArMSw0IEBACi1QQVNTIHR5cGVvZiBjaGlsZHJl
bi5uYW1lZEl0ZW0oJ2NoaWxkJykgaXMgJ3VuZGVmaW5lZCcKK1BBU1MgY2hpbGRyZW4ubmFtZWRJ
dGVtKCdjaGlsZCcpIGlzIG51bGwKIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIAog
VEVTVCBDT01QTEVURQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vY29sbGVjdGlvbi1uYW1l
ZGl0ZW0tbW92ZS1iZXR3ZWVuLWRvY3VtZW50cy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2Zhc3QvZG9tL2NvbGxlY3Rpb24tbmFtZWRpdGVtLW1vdmUtYmV0d2Vlbi1kb2N1bWVudHMu
aHRtbAkocmV2aXNpb24gMTMzNTY4KQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vY29sbGVjdGlv
bi1uYW1lZGl0ZW0tbW92ZS1iZXR3ZWVuLWRvY3VtZW50cy5odG1sCSh3b3JraW5nIGNvcHkpCkBA
IC0zMyw3ICszMyw3IEBAIHdpbmRvdy5vbmxvYWQgPSBmdW5jdGlvbigpCiBmdW5jdGlvbiBzdGVw
MigpCiB7CiAgICAgZG9jdW1lbnQuYWRvcHROb2RlKGVsZW1lbnQpOwotICAgIHNob3VsZEJlKCJ0
eXBlb2YgY2hpbGRyZW4ubmFtZWRJdGVtKCdjaGlsZCcpIiwgIid1bmRlZmluZWQnIik7CisgICAg
c2hvdWxkQmVOdWxsKCJjaGlsZHJlbi5uYW1lZEl0ZW0oJ2NoaWxkJykiKTsKICAgICBmaW5pc2hK
U1Rlc3QoKTsKIH0KIDwvc2NyaXB0PgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vaHRtbC1j
b2xsZWN0aW9ucy1uYW1lZC1nZXR0ZXItZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2Zhc3QvZG9tL2h0bWwtY29sbGVjdGlvbnMtbmFtZWQtZ2V0dGVyLWV4cGVjdGVkLnR4
dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL2h0bWwtY29sbGVjdGlvbnMt
bmFtZWQtZ2V0dGVyLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMDEgQEAK
K1RoaXMgdGVzdHMgdmVyaWZpZXMgdGhhdCBuYW1lZEl0ZW0gYW5kIG5hbWVkIGdldHRlciByZXR1
cm5zIHRoZSBmaXJzdCBtYXRjaGVkIGl0ZW0gZm9yIGFsbCBidXQgYWxsLCBvcHRpb25zLCBhbmQg
Zm9ybSBjb250cm9scyBjb2xsZWN0aW9ucy4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEg
c2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgor
CisKK2RvY3VtZW50LmFsbAorUEFTUyBkb2N1bWVudC5hbGwudG9TdHJpbmcoKSBpcyAnW29iamVj
dCBIVE1MQWxsQ29sbGVjdGlvbl0nCitGQUlMIGRvY3VtZW50LmFsbC5fX3Byb3RvX18uX19wcm90
b19fLnRvU3RyaW5nKCkgc2hvdWxkIGJlIFtvYmplY3QgSFRNTENvbGxlY3Rpb25dLiBXYXMgW29i
amVjdCBPYmplY3RdLgorUEFTUyBpbml0aWFsTGVuZ3RoID0gZG9jdW1lbnQuYWxsLmxlbmd0aDsg
ZWxlbWVudHMgPSBbaW5zZXJ0RWxlbWVudFdpdGhJZCgnYicsICdmb28nKSwgaW5zZXJ0RWxlbWVu
dFdpdGhJZCgncScsICdmb28nKV07CisgICAgIGRvY3VtZW50LmFsbC5sZW5ndGggaXMgaW5pdGlh
bExlbmd0aCArIDI7CitQQVNTIGRvY3VtZW50LmFsbFsnZm9vJ10ubGVuZ3RoIGlzIDIKK1BBU1Mg
ZG9jdW1lbnQuYWxsWydmb28nXVswXSBpcyBlbGVtZW50c1swXQorUEFTUyBkb2N1bWVudC5hbGxb
J2ZvbyddWzFdIGlzIGVsZW1lbnRzWzFdCitQQVNTIGVsZW1lbnRzWzBdLnBhcmVudE5vZGUucmVt
b3ZlQ2hpbGQoZWxlbWVudHNbMF0pOyBkb2N1bWVudC5hbGxbJ2ZvbyddIGlzIGVsZW1lbnRzWzFd
CisKK2Zvcm0uZWxlbWVudHMKK1BBU1MgZm9ybS5lbGVtZW50cy50b1N0cmluZygpIGlzICdbb2Jq
ZWN0IEhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uXScKK1BBU1MgZm9ybS5lbGVtZW50cy5fX3By
b3RvX18uX19wcm90b19fLnRvU3RyaW5nKCkgaXMgJ1tvYmplY3QgSFRNTENvbGxlY3Rpb25Qcm90
b3R5cGVdJworUEFTUyBmb3JtLmVsZW1lbnRzLmxlbmd0aCBpcyAwCitQQVNTIGVsZW1lbnRzID0g
W2NyZWF0ZUVsZW1lbnRXaXRoSWQoJ2lucHV0JywgJ2ZvbycpLCBjcmVhdGVFbGVtZW50V2l0aElk
KCdpbnB1dCcsICdmb28nKV07CisgICAgIGZvcm0uYXBwZW5kQ2hpbGQoZWxlbWVudHNbMF0pOyBm
b3JtLmVsZW1lbnRzLmxlbmd0aCBpcyAxCitQQVNTIGZvcm0uZWxlbWVudHNbJ2ZvbyddIGlzIGVs
ZW1lbnRzWzBdCitQQVNTIGZvcm0uYXBwZW5kQ2hpbGQoZWxlbWVudHNbMV0pOyBmb3JtLmVsZW1l
bnRzLmxlbmd0aCBpcyAyCitQQVNTIGZvcm0uZWxlbWVudHNbJ2ZvbyddLnRvU3RyaW5nKCkgaXMg
J1tvYmplY3QgUmFkaW9Ob2RlTGlzdF0nCitQQVNTIGZvcm0uZWxlbWVudHNbJ2ZvbyddLmxlbmd0
aCBpcyAyCitQQVNTIGZvcm0uZWxlbWVudHNbJ2ZvbyddWzBdIGlzIGVsZW1lbnRzWzBdCitQQVNT
IGZvcm0uZWxlbWVudHNbJ2ZvbyddWzFdIGlzIGVsZW1lbnRzWzFdCitQQVNTIGZvcm0ucmVtb3Zl
Q2hpbGQoZWxlbWVudHNbMF0pOyBmb3JtLmVsZW1lbnRzWydmb28nXSBpcyBlbGVtZW50c1sxXQor
UEFTUyByZW1vdmVUZXN0RWxlbWVudHMoKTsgZm9ybS5lbGVtZW50cy5sZW5ndGggaXMgMAorCitz
ZWxlY3Qub3B0aW9ucworUEFTUyBmb3JtLmFwcGVuZENoaWxkKGNyZWF0ZUVsZW1lbnRXaXRoSWQo
J3NlbGVjdCcsICdiYXInKSk7IGZvcm0uZWxlbWVudHMubGVuZ3RoIGlzIDEKK1BBU1Mgc2VsZWN0
ID0gZm9ybS5lbGVtZW50c1swXTsgc2VsZWN0Lm9wdGlvbnMudG9TdHJpbmcoKSBpcyAnW29iamVj
dCBIVE1MT3B0aW9uc0NvbGxlY3Rpb25dJworUEFTUyBzZWxlY3Qub3B0aW9ucy5fX3Byb3RvX18u
X19wcm90b19fLnRvU3RyaW5nKCkgaXMgJ1tvYmplY3QgSFRNTENvbGxlY3Rpb25Qcm90b3R5cGVd
JworUEFTUyBzZWxlY3Qub3B0aW9ucy5sZW5ndGggaXMgMAorUEFTUyBlbGVtZW50cyA9IFtjcmVh
dGVFbGVtZW50V2l0aElkKCdvcHRpb24nLCAnZm9vJyksIGNyZWF0ZUVsZW1lbnRXaXRoSWQoJ29w
dGlvbicsICdmb28nKV07CisgICAgIHNlbGVjdC5hcHBlbmRDaGlsZChlbGVtZW50c1swXSk7IHNl
bGVjdC5vcHRpb25zLmxlbmd0aCBpcyAxCitQQVNTIHNlbGVjdC5vcHRpb25zWydmb28nXSBpcyBl
bGVtZW50c1swXQorUEFTUyBzZWxlY3QuYXBwZW5kQ2hpbGQoZWxlbWVudHNbMV0pOyBzZWxlY3Qu
b3B0aW9ucy5sZW5ndGggaXMgMgorUEFTUyBzZWxlY3Qub3B0aW9uc1snZm9vJ10udG9TdHJpbmco
KSBpcyAnW29iamVjdCBOb2RlTGlzdF0nCitQQVNTIHNlbGVjdC5vcHRpb25zWydmb28nXS5sZW5n
dGggaXMgMgorUEFTUyBzZWxlY3Qub3B0aW9uc1snZm9vJ11bMF0gaXMgZWxlbWVudHNbMF0KK1BB
U1Mgc2VsZWN0Lm9wdGlvbnNbJ2ZvbyddWzFdIGlzIGVsZW1lbnRzWzFdCitQQVNTIHNlbGVjdC5y
ZW1vdmVDaGlsZChlbGVtZW50c1swXSk7IHNlbGVjdC5vcHRpb25zWydmb28nXSBpcyBlbGVtZW50
c1sxXQorUEFTUyBzZWxlY3QuaW5uZXJIVE1MID0gJyc7IHNlbGVjdC5vcHRpb25zLmxlbmd0aCBp
cyAwCitQQVNTIHJlbW92ZVRlc3RFbGVtZW50cygpOyBmb3JtLmVsZW1lbnRzLmxlbmd0aCBpcyAw
CisKK2RvY3VtZW50LmltYWdlcworUEFTUyBkb2N1bWVudC5pbWFnZXMubGVuZ3RoIGlzIDAKK1BB
U1MgZWxlbWVudHNbMF0gPSBpbnNlcnRFbGVtZW50V2l0aElkKCdpbWcnLCAnZm9vJyk7IGRvY3Vt
ZW50LmltYWdlcy5sZW5ndGggaXMgMQorUEFTUyBlbGVtZW50c1sxXSA9IGluc2VydEVsZW1lbnRX
aXRoSWQoJ2ltZycsICdmb28nKTsgZG9jdW1lbnQuaW1hZ2VzLmxlbmd0aCBpcyAyCitQQVNTIGRv
Y3VtZW50LmltYWdlc1snZm9vJ10gaXMgZWxlbWVudHNbMF0KK1BBU1MgcmVtb3ZlVGVzdEVsZW1l
bnRzKCk7IGRvY3VtZW50LmltYWdlcy5sZW5ndGggaXMgMAorCitkb2N1bWVudC5hcHBsZXRzCitQ
QVNTIGRvY3VtZW50LmFwcGxldHMubGVuZ3RoIGlzIDAKK1BBU1MgZWxlbWVudHNbMF0gPSBpbnNl
cnRFbGVtZW50V2l0aElkKCdhcHBsZXQnLCAnZm9vJyk7IGRvY3VtZW50LmFwcGxldHMubGVuZ3Ro
IGlzIDEKK1BBU1MgZWxlbWVudHNbMV0gPSBpbnNlcnRFbGVtZW50V2l0aElkKCdhcHBsZXQnLCAn
Zm9vJyk7IGRvY3VtZW50LmFwcGxldHMubGVuZ3RoIGlzIDIKK1BBU1MgZG9jdW1lbnQuYXBwbGV0
c1snZm9vJ10gaXMgZWxlbWVudHNbMF0KK1BBU1MgcmVtb3ZlVGVzdEVsZW1lbnRzKCk7IGRvY3Vt
ZW50LmFwcGxldHMubGVuZ3RoIGlzIDAKKworZG9jdW1lbnQuZW1iZWRzCitQQVNTIGRvY3VtZW50
LmVtYmVkcy5sZW5ndGggaXMgMAorUEFTUyBlbGVtZW50c1swXSA9IGluc2VydEVsZW1lbnRXaXRo
SWQoJ2VtYmVkJywgJ2ZvbycpOyBkb2N1bWVudC5lbWJlZHMubGVuZ3RoIGlzIDEKK1BBU1MgZWxl
bWVudHNbMV0gPSBpbnNlcnRFbGVtZW50V2l0aElkKCdlbWJlZCcsICdmb28nKTsgZG9jdW1lbnQu
ZW1iZWRzLmxlbmd0aCBpcyAyCitQQVNTIGRvY3VtZW50LmVtYmVkc1snZm9vJ10gaXMgZWxlbWVu
dHNbMF0KK1BBU1MgcmVtb3ZlVGVzdEVsZW1lbnRzKCk7IGRvY3VtZW50LmVtYmVkcy5sZW5ndGgg
aXMgMAorCitkb2N1bWVudC5mb3JtcworUEFTUyBkb2N1bWVudC5mb3Jtcy5sZW5ndGggaXMgMQor
UEFTUyBlbGVtZW50c1swXSA9IGluc2VydEVsZW1lbnRXaXRoSWQoJ2Zvcm0nLCAnZm9vJyk7IGRv
Y3VtZW50LmZvcm1zLmxlbmd0aCBpcyAyCitQQVNTIGVsZW1lbnRzWzFdID0gaW5zZXJ0RWxlbWVu
dFdpdGhJZCgnZm9ybScsICdmb28nKTsgZG9jdW1lbnQuZm9ybXMubGVuZ3RoIGlzIDMKK1BBU1Mg
ZG9jdW1lbnQuZm9ybXNbJ2ZvbyddIGlzIGVsZW1lbnRzWzBdCitQQVNTIHJlbW92ZVRlc3RFbGVt
ZW50cygpOyBkb2N1bWVudC5mb3Jtcy5sZW5ndGggaXMgMQorCitkb2N1bWVudC5saW5rcworUEFT
UyBkb2N1bWVudC5saW5rcy5sZW5ndGggaXMgMAorUEFTUyBlbGVtZW50c1swXSA9IGluc2VydEVs
ZW1lbnRXaXRoSWQoJ2EnLCAnZm9vJywgeyJocmVmIjoic29tZSB1cmwifSk7IGRvY3VtZW50Lmxp
bmtzLmxlbmd0aCBpcyAxCitQQVNTIGVsZW1lbnRzWzFdID0gaW5zZXJ0RWxlbWVudFdpdGhJZCgn
YScsICdmb28nLCB7ImhyZWYiOiJzb21lIHVybCJ9KTsgZG9jdW1lbnQubGlua3MubGVuZ3RoIGlz
IDIKK1BBU1MgZWxlbWVudHNbMl0gPSBpbnNlcnRFbGVtZW50V2l0aElkKCdhcmVhJywgJ2Zvbycs
IHsiaHJlZiI6InNvbWUgdXJsIn0pOyBkb2N1bWVudC5saW5rcy5sZW5ndGggaXMgMworUEFTUyBk
b2N1bWVudC5saW5rc1snZm9vJ10gaXMgZWxlbWVudHNbMF0KK1BBU1MgcmVtb3ZlVGVzdEVsZW1l
bnRzKCk7IGRvY3VtZW50LmxpbmtzLmxlbmd0aCBpcyAwCisKK2RvY3VtZW50LmFuY2hvcnMKK1BB
U1MgZG9jdW1lbnQuYW5jaG9ycy5sZW5ndGggaXMgMAorUEFTUyBlbGVtZW50c1swXSA9IGluc2Vy
dEVsZW1lbnRXaXRoSWQoJ2EnLCAnZm9vJywgeyJuYW1lIjoic29tZSBuYW1lIn0pOyBkb2N1bWVu
dC5hbmNob3JzLmxlbmd0aCBpcyAxCitQQVNTIGVsZW1lbnRzWzFdID0gaW5zZXJ0RWxlbWVudFdp
dGhJZCgnYScsICdmb28nLCB7Im5hbWUiOiJzb21lIG5hbWUifSk7IGRvY3VtZW50LmFuY2hvcnMu
bGVuZ3RoIGlzIDIKK1BBU1MgZG9jdW1lbnQuYW5jaG9yc1snZm9vJ10gaXMgZWxlbWVudHNbMF0K
K1BBU1MgcmVtb3ZlVGVzdEVsZW1lbnRzKCk7IGRvY3VtZW50LmFuY2hvcnMubGVuZ3RoIGlzIDAK
KworZG9jdW1lbnQuc2NyaXB0cworUEFTUyBkb2N1bWVudC5zY3JpcHRzLmxlbmd0aCBpcyAyCitQ
QVNTIGVsZW1lbnRzWzBdID0gaW5zZXJ0RWxlbWVudFdpdGhJZCgnc2NyaXB0JywgJ2ZvbycpOyBk
b2N1bWVudC5zY3JpcHRzLmxlbmd0aCBpcyAzCitQQVNTIGVsZW1lbnRzWzFdID0gaW5zZXJ0RWxl
bWVudFdpdGhJZCgnc2NyaXB0JywgJ2ZvbycpOyBkb2N1bWVudC5zY3JpcHRzLmxlbmd0aCBpcyA0
CitQQVNTIGRvY3VtZW50LnNjcmlwdHNbJ2ZvbyddIGlzIGVsZW1lbnRzWzBdCitQQVNTIHJlbW92
ZVRlc3RFbGVtZW50cygpOyBkb2N1bWVudC5zY3JpcHRzLmxlbmd0aCBpcyAyCisKK1BBU1Mgc3Vj
Y2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRU
ZXN0cy9mYXN0L2RvbS9odG1sLWNvbGxlY3Rpb25zLW5hbWVkLWdldHRlci5odG1sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL2h0bWwtY29sbGVjdGlvbnMtbmFtZWQtZ2V0dGVy
Lmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9odG1sLWNvbGxlY3Rp
b25zLW5hbWVkLWdldHRlci5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEwNiBAQAorPCFE
T0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxib2R5PgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNl
cy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8ZGl2IGlkPSJjb250YWluZXIiPjwvZGl2Pgor
PGZvcm0+PC9mb3JtPgorPHNjcmlwdD4KKworZGVzY3JpcHRpb24oIlRoaXMgdGVzdHMgdmVyaWZp
ZXMgdGhhdCBuYW1lZEl0ZW0gYW5kIG5hbWVkIGdldHRlciByZXR1cm5zIHRoZSBmaXJzdCBtYXRj
aGVkIGl0ZW0gZm9yIGFsbCBidXQgYWxsLCBvcHRpb25zLCBhbmQgZm9ybSBjb250cm9scyBjb2xs
ZWN0aW9ucy4iKTsKKworZnVuY3Rpb24gY3JlYXRlRWxlbWVudFdpdGhJZChuYW1lLCBpZCwgYXR0
cmlidXRlcykgeworICAgIHZhciBlbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChuYW1l
KTsKKyAgICBlbGVtZW50LmlkID0gaWQ7CisgICAgZm9yICh2YXIgYXR0ciBpbiBhdHRyaWJ1dGVz
KQorICAgICAgICBlbGVtZW50LnNldEF0dHJpYnV0ZShhdHRyLCBhdHRyaWJ1dGVzW2F0dHJdKTsK
KyAgICByZXR1cm4gZWxlbWVudDsKK30KKworZnVuY3Rpb24gaW5zZXJ0RWxlbWVudFdpdGhJZChu
YW1lLCBpZCwgYXR0cmlidXRlcykgeworICAgIHZhciBlbGVtZW50ID0gY3JlYXRlRWxlbWVudFdp
dGhJZChuYW1lLCBpZCwgYXR0cmlidXRlcyk7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
J2NvbnRhaW5lcicpLmFwcGVuZENoaWxkKGVsZW1lbnQpOworICAgIHJldHVybiBlbGVtZW50Owor
fQorCitmdW5jdGlvbiByZW1vdmVUZXN0RWxlbWVudHMoKSB7CisgICAgZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoJ2NvbnRhaW5lcicpLmlubmVySFRNTCA9ICcnOworICAgIGRvY3VtZW50LnF1ZXJ5
U2VsZWN0b3IoJ2Zvcm0nKS5pbm5lckhUTUwgPSAnJzsKK30KKwordmFyIG5ld0RvYyA9IGRvY3Vt
ZW50LmltcGxlbWVudGF0aW9uLmNyZWF0ZURvY3VtZW50KG51bGwsICdodG1sJywgbnVsbCk7Cit2
YXIgZWxlbWVudHM7CisKK2RlYnVnKCdkb2N1bWVudC5hbGwnKTsKK3Nob3VsZEJlKCJkb2N1bWVu
dC5hbGwudG9TdHJpbmcoKSIsICInW29iamVjdCBIVE1MQWxsQ29sbGVjdGlvbl0nIik7CitzaG91
bGRCZSgiZG9jdW1lbnQuYWxsLl9fcHJvdG9fXy5fX3Byb3RvX18udG9TdHJpbmcoKSIsICInW29i
amVjdCBIVE1MQ29sbGVjdGlvbl0nIik7CitzaG91bGRCZSgiaW5pdGlhbExlbmd0aCA9IGRvY3Vt
ZW50LmFsbC5sZW5ndGg7IGVsZW1lbnRzID0gW2luc2VydEVsZW1lbnRXaXRoSWQoJ2InLCAnZm9v
JyksIGluc2VydEVsZW1lbnRXaXRoSWQoJ3EnLCAnZm9vJyldO1xuIgorICAgICsgIiAgICAgZG9j
dW1lbnQuYWxsLmxlbmd0aCIsICJpbml0aWFsTGVuZ3RoICsgMjsiKTsKK3Nob3VsZEJlKCJkb2N1
bWVudC5hbGxbJ2ZvbyddLmxlbmd0aCIsICIyIik7CitzaG91bGRCZSgiZG9jdW1lbnQuYWxsWydm
b28nXVswXSIsICJlbGVtZW50c1swXSIpOworc2hvdWxkQmUoImRvY3VtZW50LmFsbFsnZm9vJ11b
MV0iLCAiZWxlbWVudHNbMV0iKTsKK3Nob3VsZEJlKCJlbGVtZW50c1swXS5wYXJlbnROb2RlLnJl
bW92ZUNoaWxkKGVsZW1lbnRzWzBdKTsgZG9jdW1lbnQuYWxsWydmb28nXSIsICdlbGVtZW50c1sx
XScpOworZGVidWcoIiIpOworCit2YXIgZm9ybSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2Zv
cm0nKTsKK2RlYnVnKCJmb3JtLmVsZW1lbnRzIik7CitzaG91bGRCZSgiZm9ybS5lbGVtZW50cy50
b1N0cmluZygpIiwgIidbb2JqZWN0IEhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uXSciKTsKK3No
b3VsZEJlKCJmb3JtLmVsZW1lbnRzLl9fcHJvdG9fXy5fX3Byb3RvX18udG9TdHJpbmcoKSIsICIn
W29iamVjdCBIVE1MQ29sbGVjdGlvblByb3RvdHlwZV0nIik7CitzaG91bGRCZSgiZm9ybS5lbGVt
ZW50cy5sZW5ndGgiLCAiMCIpOworc2hvdWxkQmUoImVsZW1lbnRzID0gW2NyZWF0ZUVsZW1lbnRX
aXRoSWQoJ2lucHV0JywgJ2ZvbycpLCBjcmVhdGVFbGVtZW50V2l0aElkKCdpbnB1dCcsICdmb28n
KV07XG4iCisgICAgKyAiICAgICBmb3JtLmFwcGVuZENoaWxkKGVsZW1lbnRzWzBdKTsgZm9ybS5l
bGVtZW50cy5sZW5ndGgiLCAiMSIpOworc2hvdWxkQmUoImZvcm0uZWxlbWVudHNbJ2ZvbyddIiwg
ImVsZW1lbnRzWzBdIik7CitzaG91bGRCZSgiZm9ybS5hcHBlbmRDaGlsZChlbGVtZW50c1sxXSk7
IGZvcm0uZWxlbWVudHMubGVuZ3RoIiwgIjIiKTsKK3Nob3VsZEJlKCJmb3JtLmVsZW1lbnRzWydm
b28nXS50b1N0cmluZygpIiwgIidbb2JqZWN0IFJhZGlvTm9kZUxpc3RdJyIpOworc2hvdWxkQmUo
ImZvcm0uZWxlbWVudHNbJ2ZvbyddLmxlbmd0aCIsICIyIik7CitzaG91bGRCZSgiZm9ybS5lbGVt
ZW50c1snZm9vJ11bMF0iLCAiZWxlbWVudHNbMF0iKTsKK3Nob3VsZEJlKCJmb3JtLmVsZW1lbnRz
Wydmb28nXVsxXSIsICJlbGVtZW50c1sxXSIpOworc2hvdWxkQmUoImZvcm0ucmVtb3ZlQ2hpbGQo
ZWxlbWVudHNbMF0pOyBmb3JtLmVsZW1lbnRzWydmb28nXSIsICJlbGVtZW50c1sxXSIpOworc2hv
dWxkQmUoInJlbW92ZVRlc3RFbGVtZW50cygpOyBmb3JtLmVsZW1lbnRzLmxlbmd0aCIsICIwIik7
CitkZWJ1ZygiIik7CisKK2RlYnVnKCJzZWxlY3Qub3B0aW9ucyIpOworc2hvdWxkQmUoImZvcm0u
YXBwZW5kQ2hpbGQoY3JlYXRlRWxlbWVudFdpdGhJZCgnc2VsZWN0JywgJ2JhcicpKTsgZm9ybS5l
bGVtZW50cy5sZW5ndGgiLCAiMSIpOworc2hvdWxkQmUoInNlbGVjdCA9IGZvcm0uZWxlbWVudHNb
MF07IHNlbGVjdC5vcHRpb25zLnRvU3RyaW5nKCkiLCAiJ1tvYmplY3QgSFRNTE9wdGlvbnNDb2xs
ZWN0aW9uXSciKTsKK3Nob3VsZEJlKCJzZWxlY3Qub3B0aW9ucy5fX3Byb3RvX18uX19wcm90b19f
LnRvU3RyaW5nKCkiLCAiJ1tvYmplY3QgSFRNTENvbGxlY3Rpb25Qcm90b3R5cGVdJyIpOworc2hv
dWxkQmUoInNlbGVjdC5vcHRpb25zLmxlbmd0aCIsICIwIik7CitzaG91bGRCZSgiZWxlbWVudHMg
PSBbY3JlYXRlRWxlbWVudFdpdGhJZCgnb3B0aW9uJywgJ2ZvbycpLCBjcmVhdGVFbGVtZW50V2l0
aElkKCdvcHRpb24nLCAnZm9vJyldO1xuIgorICAgICsgIiAgICAgc2VsZWN0LmFwcGVuZENoaWxk
KGVsZW1lbnRzWzBdKTsgc2VsZWN0Lm9wdGlvbnMubGVuZ3RoIiwgIjEiKTsKK3Nob3VsZEJlKCJz
ZWxlY3Qub3B0aW9uc1snZm9vJ10iLCAiZWxlbWVudHNbMF0iKTsKK3Nob3VsZEJlKCJzZWxlY3Qu
YXBwZW5kQ2hpbGQoZWxlbWVudHNbMV0pOyBzZWxlY3Qub3B0aW9ucy5sZW5ndGgiLCAiMiIpOwor
c2hvdWxkQmUoInNlbGVjdC5vcHRpb25zWydmb28nXS50b1N0cmluZygpIiwgIidbb2JqZWN0IE5v
ZGVMaXN0XSciKTsKK3Nob3VsZEJlKCJzZWxlY3Qub3B0aW9uc1snZm9vJ10ubGVuZ3RoIiwgIjIi
KTsKK3Nob3VsZEJlKCJzZWxlY3Qub3B0aW9uc1snZm9vJ11bMF0iLCAiZWxlbWVudHNbMF0iKTsK
K3Nob3VsZEJlKCJzZWxlY3Qub3B0aW9uc1snZm9vJ11bMV0iLCAiZWxlbWVudHNbMV0iKTsKK3No
b3VsZEJlKCJzZWxlY3QucmVtb3ZlQ2hpbGQoZWxlbWVudHNbMF0pOyBzZWxlY3Qub3B0aW9uc1sn
Zm9vJ10iLCAiZWxlbWVudHNbMV0iKTsKK3Nob3VsZEJlKCJzZWxlY3QuaW5uZXJIVE1MID0gJyc7
IHNlbGVjdC5vcHRpb25zLmxlbmd0aCIsICIwIik7CitzaG91bGRCZSgicmVtb3ZlVGVzdEVsZW1l
bnRzKCk7IGZvcm0uZWxlbWVudHMubGVuZ3RoIiwgIjAiKTsKK2RlYnVnKCIiKTsKKworZnVuY3Rp
b24gdGVzdEZpcnN0SXRlbVJldHVybnNGaXJzdE1hdGNoKGNvbGxlY3Rpb24sIGluaXRpYWxMZW5n
dGgsIGVsZW1lbnROYW1lcywgYXR0cmlidXRlcykgeworICAgIGRlYnVnKGNvbGxlY3Rpb24pOwor
ICAgIHNob3VsZEJlKGNvbGxlY3Rpb24gKyAiLmxlbmd0aCIsIGluaXRpYWxMZW5ndGgudG9TdHJp
bmcoKSk7CisgICAgZWxlbWVudHMgPSBbXTsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IGVsZW1l
bnROYW1lcy5sZW5ndGg7IGkrKykgeworICAgICAgICB2YXIgYXR0cnMgPSBhdHRyaWJ1dGVzID8g
IiwgIiArIEpTT04uc3RyaW5naWZ5KGF0dHJpYnV0ZXMpIDogJyc7CisgICAgICAgIHNob3VsZEJl
KCJlbGVtZW50c1siICsgaSArICJdID0gaW5zZXJ0RWxlbWVudFdpdGhJZCgnIiArIGVsZW1lbnRO
YW1lc1tpXSArICInLCAnZm9vJyIgKyBhdHRycyArICIpOyAiCisgICAgICAgICAgICArIGNvbGxl
Y3Rpb24gKyAiLmxlbmd0aCIsIChpbml0aWFsTGVuZ3RoICsgaSArIDEpLnRvU3RyaW5nKCkpOwor
ICAgIH0KKyAgICBzaG91bGRCZShjb2xsZWN0aW9uICsgIlsnZm9vJ10iLCAiZWxlbWVudHNbMF0i
KTsKKyAgICBzaG91bGRCZSgicmVtb3ZlVGVzdEVsZW1lbnRzKCk7ICIgKyBjb2xsZWN0aW9uICsg
Ii5sZW5ndGgiLCBpbml0aWFsTGVuZ3RoLnRvU3RyaW5nKCkpOworICAgIGRlYnVnKCIiKTsKK30K
KwordGVzdEZpcnN0SXRlbVJldHVybnNGaXJzdE1hdGNoKCdkb2N1bWVudC5pbWFnZXMnLCAwLCBb
J2ltZycsICdpbWcnXSk7Cit0ZXN0Rmlyc3RJdGVtUmV0dXJuc0ZpcnN0TWF0Y2goJ2RvY3VtZW50
LmFwcGxldHMnLCAwLCBbJ2FwcGxldCcsICdhcHBsZXQnXSk7Cit0ZXN0Rmlyc3RJdGVtUmV0dXJu
c0ZpcnN0TWF0Y2goJ2RvY3VtZW50LmVtYmVkcycsIDAsIFsnZW1iZWQnLCAnZW1iZWQnXSk7Cit0
ZXN0Rmlyc3RJdGVtUmV0dXJuc0ZpcnN0TWF0Y2goJ2RvY3VtZW50LmZvcm1zJywgMSwgWydmb3Jt
JywgJ2Zvcm0nXSk7Cit0ZXN0Rmlyc3RJdGVtUmV0dXJuc0ZpcnN0TWF0Y2goJ2RvY3VtZW50Lmxp
bmtzJywgMCwgWydhJywgJ2EnLCAnYXJlYSddLCB7J2hyZWYnOiAnc29tZSB1cmwnfSk7Cit0ZXN0
Rmlyc3RJdGVtUmV0dXJuc0ZpcnN0TWF0Y2goJ2RvY3VtZW50LmFuY2hvcnMnLCAwLCBbJ2EnLCAn
YSddLCB7J25hbWUnOiAnc29tZSBuYW1lJ30pOwordGVzdEZpcnN0SXRlbVJldHVybnNGaXJzdE1h
dGNoKCdkb2N1bWVudC5zY3JpcHRzJywgMiwgWydzY3JpcHQnLCAnc2NyaXB0J10pOworCit2YXIg
c3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4v
anMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>172672</attachid>
            <date>2012-11-06 16:16:48 -0800</date>
            <delta_ts>2012-11-06 19:32:18 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-101311-20121106161500.patch</filename>
            <type>text/plain</type>
            <size>99188</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEzMzY4NykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEwNCBAQAorMjAxMi0xMS0wNiAgUnlvc3Vr
ZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KKworICAgICAgICBNYWtlIG5hbWVkSXRlbSByZXR1
cm4gYSBub2RlIGxpc3Qgb25seSBpbiBIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbiBhbmQgSFRN
TE9wdGlvbnNDb2xsZWN0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMDEzMTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBJbnRyb2R1Y2UgdHdvIG5ldyBpbnRlcmZhY2VzIEhUTUxGb3JtQ29udHJvbHND
b2xsZWN0aW9uIGFuZCBIVE1MT3B0aW9uc0NvbGxlY3Rpb24gdG8gYmUgdXNlZCBieSBmb3JtLmVs
ZW1lbnRzCisgICAgICAgIGFuZCBzZWxlY3Qub3B0aW9ucy4gVGhlc2UgdHdvIGludGVyZmFjZXMg
aGF2ZSB0aGUgbmFtZWQgZ2V0dGVyIGFuZCBuYW1lZEl0ZW0gdGhhdCByZXR1cm5zIGEgbGl2ZSBO
b2RlTGlzdCB3aGVuCisgICAgICAgIHRoZXJlIGFyZSBtdWx0aXBsZSBtYXRjaGVzLiBJbnRyb2R1
Y2luZyB0aGVzZSB0d28gaW50ZXJmYWNlcyBhbGxvdyB1cyB0byAicmVndWxhciIgSFRNTENvbGxl
Y3Rpb24ncyBuYW1lZCBnZXR0ZXIKKyAgICAgICAgYW5kIG5hbWVkSXRlbSB0byByZXR1cm4gZXhh
Y3RseSBvbmUgbm9kZSBvciBudWxsIGFzIHNwZWNpZmllZCBpbiBIVE1MNToKKyAgICAgICAgaHR0
cDovL3d3dy53aGF0d2cub3JnL3NwZWNzL3dlYi1hcHBzL2N1cnJlbnQtd29yay9tdWx0aXBhZ2Uv
Y29tbW9uLWRvbS1pbnRlcmZhY2VzLmh0bWwjY29sbGVjdGlvbnMtMAorCisgICAgICAgIFVuZm9y
dHVuYXRlbHksIEhUTUxPcHRpb25zQ29sbGVjdGlvbiBzdGlsbCBoYXMgYSBidWcgdGhhdCBpdHMg
bmFtZWQgZ2V0dGVyIGFuZCBuYW1lZEl0ZW0gcmV0dXJucworICAgICAgICBhIHN0YXRpYyBOb2Rl
TGlzdCBpbnN0ZWFkIG9mIGEgbGl2ZSBOb2RlTGlzdCAoRHluYW1pY05vZGVMaXN0KSBhdCB0aGUg
bW9tZW50LgorCisgICAgICAgIEFsc28gZ290IHJpZCBvZiBEb2N1bWVudDo6b2JqZWN0cyBzaW5j
ZSBpdCdzIG5vdCBleHBvc2VkIGluIElETCBvciBjYWxsZWQgYW55d2hlcmUuCisKKyAgICAgICAg
VGVzdDogZmFzdC9kb20vaHRtbC1jb2xsZWN0aW9ucy1uYW1lZEl0ZW0uaHRtbAorCisgICAgICAg
ICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMuY3BwOgorICAgICAg
ICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMucHJpOgor
ICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogVGFyZ2V0LnByaToKKyAg
ICAgICAgKiBVc2VKU0MuY21ha2U6CisgICAgICAgICogVXNlVjguY21ha2U6CisgICAgICAgICog
V2ViQ29yZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ajoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0JpbmRpbmdzQWxsSW5PbmUuY3BwOgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL0pTSFRNTEFsbENvbGxlY3Rpb25DdXN0b20uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Z2V0TmFtZWRJdGVtcyk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNIVE1MQ29s
bGVjdGlvbkN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0hUTUxDb2xsZWN0aW9uOjpu
YW1lR2V0dGVyKTogTm93IHJldHVybnMgZXhhY3RseSBvbmUgbm9kZSBvciBudWxsLgorICAgICAg
ICAoV2ViQ29yZTo6dG9KUyk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNIVE1MRm9ybUNvbnRy
b2xzQ29sbGVjdGlvbkN1c3RvbS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Z2V0TmFt
ZWRJdGVtcyk6IFJldHVybnMgUmFkaW9Ob2RlTGlzdCB3aGVuIHRoZXJlIGFyZSBtdWx0aXBsZSBt
YXRjaGVzLgorICAgICAgICAoV2ViQ29yZTo6SlNIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbjo6
Y2FuR2V0SXRlbXNGb3JOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkpTSFRNTEZvcm1Db250cm9s
c0NvbGxlY3Rpb246Om5hbWVHZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SlNIVE1MRm9ybUNv
bnRyb2xzQ29sbGVjdGlvbjo6bmFtZWRJdGVtKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0hU
TUxPcHRpb25zQ29sbGVjdGlvbkN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpnZXROYW1l
ZEl0ZW1zKTogUmV0dXJucyBhIHN0YXRpYyBOb2RlTGlzdCB3aGVuIHRoZXJlIGFyZSBtdWx0aXBs
ZSBtYXRjaGVzLgorICAgICAgICBUaGlzIGlzIGEgYnVnLiBJdCBzaG91bGQgYmUgYSBsaXZlIE5v
ZGVMaXN0IGluc3RlYWQuCisgICAgICAgIChXZWJDb3JlOjpKU0hUTUxPcHRpb25zQ29sbGVjdGlv
bjo6Y2FuR2V0SXRlbXNGb3JOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkpTSFRNTE9wdGlvbnND
b2xsZWN0aW9uOjpuYW1lR2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkpTSFRNTE9wdGlvbnND
b2xsZWN0aW9uOjpuYW1lZEl0ZW0pOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0NvZGVHZW5lcmF0
b3JKUy5wbTogSW5jbHVkZSBKU05vZGUuanMgZm9yIGFsbCBIVE1MKkNvbGxlY3Rpb24gaW50ZXJm
YWNlcyBmb3Igc2ltcGxpY2l0eS4KKyAgICAgICAgKiBiaW5kaW5ncy9qcy9Db2RlR2VuZXJhdG9y
VjgucG06IEhUTUxPcHRpb25zQ29sbGVjdGlvbiBub3cgaW5oZXJpdHMgZnJvbSBIVE1MQ29sbGVj
dGlvbi4gU2VlCisgICAgICAgIGh0dHA6Ly93d3cud2hhdHdnLm9yZy9zcGVjcy93ZWItYXBwcy9j
dXJyZW50LXdvcmsvbXVsdGlwYWdlL2NvbW1vbi1kb20taW50ZXJmYWNlcy5odG1sI2h0bWxvcHRp
b25zY29sbGVjdGlvbgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxBbGxDb2xs
ZWN0aW9uQ3VzdG9tLmNwcDogUGFzcyBpbiBpc29sYXRlIHdoZW4gd2UgY2FuLgorICAgICAgICAo
V2ViQ29yZTo6Z2V0TmFtZWRJdGVtcyk6IEFkZGVkIGEgY29tbWVudCBhYm91dCBob3cgd2Ugc2hv
dWxkIGJlIHJldHVybmluZworICAgICAgICBhIEhUTUxDb2xsZWN0aW9uIHdoZW4gdGhlcmUgYXJl
IG11bHRpcGxlIG1hdGNoZXMuCisgICAgICAgIChXZWJDb3JlOjpnZXRJdGVtKToKKyAgICAgICAg
KFdlYkNvcmU6OlY4SFRNTEFsbENvbGxlY3Rpb246Om5hbWVkUHJvcGVydHlHZXR0ZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6VjhIVE1MQWxsQ29sbGVjdGlvbjo6bmFtZWRJdGVtQ2FsbGJhY2spOgor
ICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxDb2xsZWN0aW9uQ3VzdG9tLmNwcDog
Tm93IHJldHVybnMgZXhhY3RseSBvbmUgbm9kZSBvciBudWxsLgorICAgICAgICAoV2ViQ29yZSk6
CisgICAgICAgIChXZWJDb3JlOjpWOEhUTUxDb2xsZWN0aW9uOjpuYW1lZFByb3BlcnR5R2V0dGVy
KToKKyAgICAgICAgKFdlYkNvcmU6OnRvVjgpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3Rv
bS9WOEhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uQ3VzdG9tLmNwcDogQWRkZWQuCisgICAgICAg
IChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OmdldE5hbWVkSXRlbXMpOiBSZXR1cm5zIFJh
ZGlvTm9kZUxpc3Qgd2hlbiB0aGVyZSBhcmUgbXVsdGlwbGUgbWF0Y2hlcy4KKyAgICAgICAgKFdl
YkNvcmU6OlY4SFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb246Om5hbWVkUHJvcGVydHlHZXR0ZXIp
OgorICAgICAgICAoV2ViQ29yZTo6VjhIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbjo6bmFtZWRJ
dGVtQ2FsbGJhY2spOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxPcHRpb25z
Q29sbGVjdGlvbkN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpnZXROYW1lZEl0ZW1zKTog
UmV0dXJucyBhIHN0YXRpYyBOb2RlTGlzdCB3aGVuIHRoZXJlIGFyZSBtdWx0aXBsZSBtYXRjaGVz
LgorICAgICAgICBUaGlzIGlzIGEgYnVnLiBJdCBzaG91bGQgYmUgYSBsaXZlIE5vZGVMaXN0IGlu
c3RlYWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlY4SFRNTE9wdGlv
bnNDb2xsZWN0aW9uOjpuYW1lZFByb3BlcnR5R2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlY4
SFRNTE9wdGlvbnNDb2xsZWN0aW9uOjpuYW1lZEl0ZW1DYWxsYmFjayk6CisgICAgICAgICogZG9t
L0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOiBSZW1vdmVkIERvY3VtZW50OjpvYmpl
Y3RzIHNpbmNlIGl0IHdhcyBub3QgdXNlZCBhbnl3aGVyZS4KKyAgICAgICAgKiBkb20vRG9jdW1l
bnQuaDoKKyAgICAgICAgKERvY3VtZW50KToKKyAgICAgICAgKiBkb20vRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpFbGVtZW50UmFyZURhdGE6OmVuc3VyZUNhY2hlZEhUTUxDb2xsZWN0
aW9uKTogZm9ybS5lbGVtZW50cyBzaG91bGQgaW5zdGFudGlhdGUKKyAgICAgICAgYSBIVE1MRm9y
bUNvbnRyb2xzQ29sbGVjdGlvbiBpbnN0ZWFkIG9mIGEgSFRNTENvbGxlY3Rpb24uCisgICAgICAg
ICogaHRtbC9Db2xsZWN0aW9uVHlwZS5oOgorICAgICAgICAqIGh0bWwvSFRNTENvbGxlY3Rpb24u
aWRsOiBSZW1vdmVkIFtDdXN0b21dIHNpbmNlIG5hbWVkSXRlbSBpcyBhIHJlZ3VsYXIgZnVuY3Rp
b24gY2FsbCBub3cuCisgICAgICAgICogaHRtbC9IVE1MRmllbGRTZXRFbGVtZW50LmNwcDoKKyAg
ICAgICAgKiBodG1sL0hUTUxGaWVsZFNldEVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxG
b3JtQ29sbGVjdGlvbi5jcHA6IFJlbW92ZWQuCisgICAgICAgICogaHRtbC9IVE1MRm9ybUNvbGxl
Y3Rpb24uaDogUmVtb3ZlZC4KKyAgICAgICAgKiBodG1sL0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0
aW9uLmNwcDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbGxlY3Rp
b24uY3BwLgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb246OkhU
TUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGb3JtQ29u
dHJvbHNDb2xsZWN0aW9uOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZvcm1Db250
cm9sc0NvbGxlY3Rpb246On5IVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbik6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbjo6Zm9ybUNvbnRyb2xFbGVtZW50cyk6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbjo6Zm9ybUltYWdl
RWxlbWVudHMpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb246
OnZpcnR1YWxJdGVtQWZ0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZvcm1Db250cm9sc0Nv
bGxlY3Rpb246Om5hbWVkSXRlbSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRm9ybUNvbnRyb2xz
Q29sbGVjdGlvbjo6dXBkYXRlTmFtZUNhY2hlKToKKyAgICAgICAgKiBodG1sL0hUTUxGb3JtQ29u
dHJvbHNDb2xsZWN0aW9uLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZv
cm1Db2xsZWN0aW9uLmguCisgICAgICAgIChIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbik6Cisg
ICAgICAgICogaHRtbC9IVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5pZGw6IEFkZGVkLgorICAg
ICAgICAqIGh0bWwvSFRNTEZvcm1FbGVtZW50LmNwcDoKKyAgICAgICAgKiBodG1sL0hUTUxGb3Jt
RWxlbWVudC5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogaHRtbC9IVE1MT3B0aW9u
c0NvbGxlY3Rpb24uaWRsOgorCiAyMDEyLTExLTA2ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFz
ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIC13ZWJraXQtYmFja2dyb3VuZC1jbGlwOnRleHQgcHJv
ZHVjZXMgYXJ0aWZhY3RzIHdoZW4gYXBwbGllZCB0byB0aGUgYm9keSBhbmQgdGhlIGJyb3dzZXIg
aXMgcmVzaXplZApJbmRleDogU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDEzMzY4NykKKysr
IFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC00NDEsNiAr
NDQxLDcgQEAgU0VUKFdlYkNvcmVfSURMX0ZJTEVTCiAgICAgaHRtbC9IVE1MRW1iZWRFbGVtZW50
LmlkbAogICAgIGh0bWwvSFRNTEZpZWxkU2V0RWxlbWVudC5pZGwKICAgICBodG1sL0hUTUxGb250
RWxlbWVudC5pZGwKKyAgICBodG1sL0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmlkbAogICAg
IGh0bWwvSFRNTEZvcm1FbGVtZW50LmlkbAogICAgIGh0bWwvSFRNTEZyYW1lRWxlbWVudC5pZGwK
ICAgICBodG1sL0hUTUxGcmFtZVNldEVsZW1lbnQuaWRsCkBAIC0xMzczLDcgKzEzNzQsNyBAQCBT
RVQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgaHRtbC9IVE1MRW1iZWRFbGVtZW50LmNwcAogICAgIGh0
bWwvSFRNTEZpZWxkU2V0RWxlbWVudC5jcHAKICAgICBodG1sL0hUTUxGb250RWxlbWVudC5jcHAK
LSAgICBodG1sL0hUTUxGb3JtQ29sbGVjdGlvbi5jcHAKKyAgICBodG1sL0hUTUxGb3JtQ29udHJv
bHNDb2xsZWN0aW9uLmNwcAogICAgIGh0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHAKICAg
ICBodG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnRXaXRoU3RhdGUuY3BwCiAgICAgaHRtbC9IVE1M
Rm9ybUVsZW1lbnQuY3BwCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMuY3BwCShyZXZpc2lv
biAxMzM2ODcpCisrKyBTb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTE2Myw2ICsxNjMsNyBAQAogI2luY2x1ZGUgIkpTSFRNTEVtYmVkRWxlbWVudC5j
cHAiCiAjaW5jbHVkZSAiSlNIVE1MRmllbGRTZXRFbGVtZW50LmNwcCIKICNpbmNsdWRlICJKU0hU
TUxGb250RWxlbWVudC5jcHAiCisjaW5jbHVkZSAiSlNIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlv
bi5jcHAiCiAjaW5jbHVkZSAiSlNIVE1MRm9ybUVsZW1lbnQuY3BwIgogI2luY2x1ZGUgIkpTSFRN
TEZyYW1lRWxlbWVudC5jcHAiCiAjaW5jbHVkZSAiSlNIVE1MRnJhbWVTZXRFbGVtZW50LmNwcCIK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQkocmV2aXNpb24gMTMzNjg3KQorKysg
U291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQkod29ya2luZyBjb3B5KQpAQCAtMzAw
LDYgKzMwMCw3IEBAIEJJTkRJTkdfSURMUyA9IFwKICAgICAkKFdlYkNvcmUpL2h0bWwvSFRNTEVt
YmVkRWxlbWVudC5pZGwgXAogICAgICQoV2ViQ29yZSkvaHRtbC9IVE1MRmllbGRTZXRFbGVtZW50
LmlkbCBcCiAgICAgJChXZWJDb3JlKS9odG1sL0hUTUxGb250RWxlbWVudC5pZGwgXAorICAgICQo
V2ViQ29yZSkvaHRtbC9IVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5pZGwgXAogICAgICQoV2Vi
Q29yZSkvaHRtbC9IVE1MRm9ybUVsZW1lbnQuaWRsIFwKICAgICAkKFdlYkNvcmUpL2h0bWwvSFRN
TEZyYW1lRWxlbWVudC5pZGwgXAogICAgICQoV2ViQ29yZSkvaHRtbC9IVE1MRnJhbWVTZXRFbGVt
ZW50LmlkbCBcCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5wcmkKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMucHJpCShyZXZpc2lvbiAxMzM2
ODcpCisrKyBTb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5wcmkJKHdvcmtpbmcgY29weSkK
QEAgLTM1MCw2ICszNTAsNyBAQCBJRExfQklORElOR1MgKz0gXAogICAgICQkUFdEL2h0bWwvSFRN
TEVtYmVkRWxlbWVudC5pZGwgXAogICAgICQkUFdEL2h0bWwvSFRNTEZpZWxkU2V0RWxlbWVudC5p
ZGwgXAogICAgICQkUFdEL2h0bWwvSFRNTEZvbnRFbGVtZW50LmlkbCBcCisgICAgJCRQV0QvaHRt
bC9IVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5pZGwgXAogICAgICQkUFdEL2h0bWwvSFRNTEZv
cm1FbGVtZW50LmlkbCBcCiAgICAgJCRQV0QvaHRtbC9IVE1MRnJhbWVFbGVtZW50LmlkbCBcCiAg
ICAgJCRQV0QvaHRtbC9IVE1MRnJhbWVTZXRFbGVtZW50LmlkbCBcCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0dO
VW1ha2VmaWxlLmxpc3QuYW0JKHJldmlzaW9uIDEzMzY4NykKKysrIFNvdXJjZS9XZWJDb3JlL0dO
VW1ha2VmaWxlLmxpc3QuYW0JKHdvcmtpbmcgY29weSkKQEAgLTMzNyw2ICszMzcsOCBAQCB3ZWJj
b3JlX2J1aWx0X3NvdXJjZXMgKz0gXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNIVE1MRmll
bGRTZXRFbGVtZW50LmggXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNIVE1MRm9udEVsZW1l
bnQuY3BwIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTSFRNTEZvbnRFbGVtZW50LmggXAor
CURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5jcHAg
XAorCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5o
IFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTSFRNTEZvcm1FbGVtZW50LmNwcCBcCiAJRGVy
aXZlZFNvdXJjZXMvV2ViQ29yZS9KU0hUTUxGb3JtRWxlbWVudC5oIFwKIAlEZXJpdmVkU291cmNl
cy9XZWJDb3JlL0pTSFRNTEZyYW1lRWxlbWVudC5jcHAgXApAQCAtMTQ0MCw2ICsxNDQyLDcgQEAg
ZG9tX2JpbmRpbmdfaWRscyArPSBcCiAJJChXZWJDb3JlKS9odG1sL0hUTUxFbWJlZEVsZW1lbnQu
aWRsIFwKIAkkKFdlYkNvcmUpL2h0bWwvSFRNTEZpZWxkU2V0RWxlbWVudC5pZGwgXAogCSQoV2Vi
Q29yZSkvaHRtbC9IVE1MRm9udEVsZW1lbnQuaWRsIFwKKwkkKFdlYkNvcmUpL2h0bWwvSFRNTEZv
cm1Db250cm9sc0NvbGxlY3Rpb24uaWRsIFwKIAkkKFdlYkNvcmUpL2h0bWwvSFRNTEZvcm1FbGVt
ZW50LmlkbCBcCiAJJChXZWJDb3JlKS9odG1sL0hUTUxGcmFtZUVsZW1lbnQuaWRsIFwKIAkkKFdl
YkNvcmUpL2h0bWwvSFRNTEZyYW1lU2V0RWxlbWVudC5pZGwgXApAQCAtMjMyNCw2ICsyMzI3LDcg
QEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hU
TUxFbGVtZW50Q3VzdG9tLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1M
RW1iZWRFbGVtZW50Q3VzdG9tLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNI
VE1MRW1iZWRFbGVtZW50Q3VzdG9tLmggXAorCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
SFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb25DdXN0b20uY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0hUTUxGb3JtRWxlbWVudEN1c3RvbS5jcHAgXAogCVNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTSFRNTEZyYW1lRWxlbWVudEN1c3RvbS5jcHAgXAogCVNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTSFRNTEZyYW1lU2V0RWxlbWVudEN1c3RvbS5jcHAgXApAQCAtMzMy
OSw4ICszMzMzLDggQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxGaWVsZFNldEVsZW1lbnQuaCBcCiAJU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9udEVs
ZW1lbnQuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb250RWxlbWVudC5oIFwKLQlT
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29sbGVjdGlvbi5jcHAgXAotCVNvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEZvcm1Db2xsZWN0aW9uLmggXAorCVNvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEZvcm1Db250cm9sc0NvbGxlY3Rpb24uY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxG
b3JtQ29udHJvbHNDb2xsZWN0aW9uLmggXAogCVNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1D
b250cm9sRWxlbWVudC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9s
RWxlbWVudC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnRX
aXRoU3RhdGUuY3BwIFwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQkocmV2aXNpb24gMTMzNjg3KQorKysgU291
cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQkod29ya2luZyBjb3B5KQpAQCAtMTMyLDYgKzEzMiw3IEBA
IFNPVVJDRVMgKz0gXAogICAgICBiaW5kaW5ncy9qcy9KU0hUTUxEb2N1bWVudEN1c3RvbS5jcHAg
XAogICAgICBiaW5kaW5ncy9qcy9KU0hUTUxFbGVtZW50Q3VzdG9tLmNwcCBcCiAgICAgIGJpbmRp
bmdzL2pzL0pTSFRNTEVtYmVkRWxlbWVudEN1c3RvbS5jcHAgXAorICAgICBiaW5kaW5ncy9qcy9K
U0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uQ3VzdG9tLmNwcCBcCiAgICAgIGJpbmRpbmdzL2pz
L0pTSFRNTEZvcm1FbGVtZW50Q3VzdG9tLmNwcCBcCiAgICAgIGJpbmRpbmdzL2pzL0pTSFRNTEZy
YW1lRWxlbWVudEN1c3RvbS5jcHAgXAogICAgICBiaW5kaW5ncy9qcy9KU0hUTUxGcmFtZVNldEVs
ZW1lbnRDdXN0b20uY3BwIFwKQEAgLTYwMiw3ICs2MDMsNyBAQCBTT1VSQ0VTICs9IFwKICAgICBo
dG1sL0hUTUxFbWJlZEVsZW1lbnQuY3BwIFwKICAgICBodG1sL0hUTUxGaWVsZFNldEVsZW1lbnQu
Y3BwIFwKICAgICBodG1sL0hUTUxGb250RWxlbWVudC5jcHAgXAotICAgIGh0bWwvSFRNTEZvcm1D
b2xsZWN0aW9uLmNwcCBcCisgICAgaHRtbC9IVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5jcHAg
XAogICAgIGh0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHAgXAogICAgIGh0bWwvSFRNTEZv
cm1Db250cm9sRWxlbWVudFdpdGhTdGF0ZS5jcHAgXAogICAgIGh0bWwvSFRNTEZvcm1FbGVtZW50
LmNwcCBcCkBAIC0xNzU4LDcgKzE3NTksNyBAQCBIRUFERVJTICs9IFwKICAgICBodG1sL0hUTUxF
bWJlZEVsZW1lbnQuaCBcCiAgICAgaHRtbC9IVE1MRmllbGRTZXRFbGVtZW50LmggXAogICAgIGh0
bWwvSFRNTEZvbnRFbGVtZW50LmggXAotICAgIGh0bWwvSFRNTEZvcm1Db2xsZWN0aW9uLmggXAor
ICAgIGh0bWwvSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uaCBcCiAgICAgaHRtbC9IVE1MRm9y
bUNvbnRyb2xFbGVtZW50LmggXAogICAgIGh0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudFdpdGhT
dGF0ZS5oIFwKICAgICBodG1sL0hUTUxGb3JtRWxlbWVudC5oIFwKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL1VzZUpTQy5jbWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Vc2VKU0MuY21h
a2UJKHJldmlzaW9uIDEzMzY4NykKKysrIFNvdXJjZS9XZWJDb3JlL1VzZUpTQy5jbWFrZQkod29y
a2luZyBjb3B5KQpAQCAtODQsNiArODQsNyBAQCBMSVNUKEFQUEVORCBXZWJDb3JlX1NPVVJDRVMK
ICAgICBiaW5kaW5ncy9qcy9KU0hUTUxEb2N1bWVudEN1c3RvbS5jcHAKICAgICBiaW5kaW5ncy9q
cy9KU0hUTUxFbGVtZW50Q3VzdG9tLmNwcAogICAgIGJpbmRpbmdzL2pzL0pTSFRNTEVtYmVkRWxl
bWVudEN1c3RvbS5jcHAKKyAgICBiaW5kaW5ncy9qcy9KU0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0
aW9uQ3VzdG9tLmNwcAogICAgIGJpbmRpbmdzL2pzL0pTSFRNTEZvcm1FbGVtZW50Q3VzdG9tLmNw
cAogICAgIGJpbmRpbmdzL2pzL0pTSFRNTEZyYW1lRWxlbWVudEN1c3RvbS5jcHAKICAgICBiaW5k
aW5ncy9qcy9KU0hUTUxGcmFtZVNldEVsZW1lbnRDdXN0b20uY3BwCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9Vc2VWOC5jbWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Vc2VWOC5jbWFr
ZQkocmV2aXNpb24gMTMzNjg3KQorKysgU291cmNlL1dlYkNvcmUvVXNlVjguY21ha2UJKHdvcmtp
bmcgY29weSkKQEAgLTEwNiw2ICsxMDYsNyBAQCBMSVNUKEFQUEVORCBXZWJDb3JlX1NPVVJDRVMK
ICAgICBiaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MQ29sbGVjdGlvbkN1c3RvbS5jcHAKICAgICBi
aW5kaW5ncy92OC9jdXN0b20vVjhIVE1MRG9jdW1lbnRDdXN0b20uY3BwCiAgICAgYmluZGluZ3Mv
djgvY3VzdG9tL1Y4SFRNTEVsZW1lbnRDdXN0b20uY3BwCisgICAgYmluZGluZ3MvdjgvY3VzdG9t
L1Y4SFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb25DdXN0b20uY3BwCiAgICAgYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4SFRNTEZvcm1FbGVtZW50Q3VzdG9tLmNwcAogICAgIGJpbmRpbmdzL3Y4L2N1c3Rv
bS9WOEhUTUxGcmFtZUVsZW1lbnRDdXN0b20uY3BwCiAgICAgYmluZGluZ3MvdjgvY3VzdG9tL1Y4
SFRNTEZyYW1lU2V0RWxlbWVudEN1c3RvbS5jcHAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNv
cmUuZ3lwaQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkJKHJldmlz
aW9uIDEzMzY4NykKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQkod29ya2luZyBjb3B5
KQpAQCAtMTA4NCw2ICsxMDg0LDcgQEAKICAgICAgICAgICAgICdodG1sL0hUTUxFbWJlZEVsZW1l
bnQuaWRsJywKICAgICAgICAgICAgICdodG1sL0hUTUxGaWVsZFNldEVsZW1lbnQuaWRsJywKICAg
ICAgICAgICAgICdodG1sL0hUTUxGb250RWxlbWVudC5pZGwnLAorICAgICAgICAgICAgJ2h0bWwv
SFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uaWRsJywKICAgICAgICAgICAgICdodG1sL0hUTUxG
b3JtRWxlbWVudC5pZGwnLAogICAgICAgICAgICAgJ2h0bWwvSFRNTEZyYW1lRWxlbWVudC5pZGwn
LAogICAgICAgICAgICAgJ2h0bWwvSFRNTEZyYW1lU2V0RWxlbWVudC5pZGwnLApAQCAtMjA3Nyw2
ICsyMDc4LDcgQEAKICAgICAgICAgICAgICdiaW5kaW5ncy9qcy9KU0hUTUxFbGVtZW50Q3VzdG9t
LmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvanMvSlNIVE1MRW1iZWRFbGVtZW50Q3VzdG9t
LmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvanMvSlNIVE1MRW1iZWRFbGVtZW50Q3VzdG9t
LmgnLAorICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rp
b25DdXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy9qcy9KU0hUTUxGb3JtRWxlbWVu
dEN1c3RvbS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTSFRNTEZyYW1lRWxlbWVu
dEN1c3RvbS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTSFRNTEZyYW1lU2V0RWxl
bWVudEN1c3RvbS5jcHAnLApAQCAtMjM5NCw2ICsyMzk2LDcgQEAKICAgICAgICAgICAgICdiaW5k
aW5ncy92OC9jdXN0b20vVjhIVE1MQ29sbGVjdGlvbkN1c3RvbS5jcHAnLAogICAgICAgICAgICAg
J2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxEb2N1bWVudEN1c3RvbS5jcHAnLAogICAgICAgICAg
ICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxFbGVtZW50Q3VzdG9tLmNwcCcsCisgICAgICAg
ICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb25DdXN0
b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MRm9ybUVsZW1l
bnRDdXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MRnJh
bWVFbGVtZW50Q3VzdG9tLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4
SFRNTEZyYW1lU2V0RWxlbWVudEN1c3RvbS5jcHAnLApAQCAtNDEwOCw4ICs0MTExLDggQEAKICAg
ICAgICAgICAgICdodG1sL0hUTUxGaWVsZFNldEVsZW1lbnQuaCcsCiAgICAgICAgICAgICAnaHRt
bC9IVE1MRm9udEVsZW1lbnQuY3BwJywKICAgICAgICAgICAgICdodG1sL0hUTUxGb250RWxlbWVu
dC5oJywKLSAgICAgICAgICAgICdodG1sL0hUTUxGb3JtQ29sbGVjdGlvbi5jcHAnLAotICAgICAg
ICAgICAgJ2h0bWwvSFRNTEZvcm1Db2xsZWN0aW9uLmgnLAorICAgICAgICAgICAgJ2h0bWwvSFRN
TEZvcm1Db250cm9sc0NvbGxlY3Rpb24uY3BwJywKKyAgICAgICAgICAgICdodG1sL0hUTUxGb3Jt
Q29udHJvbHNDb2xsZWN0aW9uLmgnLAogICAgICAgICAgICAgJ2h0bWwvSFRNTEZvcm1Db250cm9s
RWxlbWVudC5jcHAnLAogICAgICAgICAgICAgJ2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudFdp
dGhTdGF0ZS5jcHAnLAogICAgICAgICAgICAgJ2h0bWwvSFRNTEZvcm1FbGVtZW50LmNwcCcsCkBA
IC03NjE0LDYgKzc2MTcsOCBAQAogICAgICAgICAgICAgJzwoUFJPRFVDVF9ESVIpL0Rlcml2ZWRT
b3VyY2VzL1dlYkNvcmUvSlNIVE1MRmllbGRTZXRFbGVtZW50LmgnLAogICAgICAgICAgICAgJzwo
UFJPRFVDVF9ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNIVE1MRm9udEVsZW1lbnQuY3Bw
JywKICAgICAgICAgICAgICc8KFBST0RVQ1RfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pT
SFRNTEZvbnRFbGVtZW50LmgnLAorICAgICAgICAgICAgJzwoUFJPRFVDVF9ESVIpL0Rlcml2ZWRT
b3VyY2VzL1dlYkNvcmUvSlNIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5jcHAnLAorICAgICAg
ICAgICAgJzwoUFJPRFVDVF9ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNIVE1MRm9ybUNv
bnRyb2xzQ29sbGVjdGlvbi5oJywKICAgICAgICAgICAgICc8KFBST0RVQ1RfRElSKS9EZXJpdmVk
U291cmNlcy9XZWJDb3JlL0pTSFRNTEZvcm1FbGVtZW50LmNwcCcsCiAgICAgICAgICAgICAnPChQ
Uk9EVUNUX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0hUTUxGb3JtRWxlbWVudC5oJywK
ICAgICAgICAgICAgICc8KFBST0RVQ1RfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTSFRN
TEZyYW1lRWxlbWVudC5jcHAnLApJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTMzNjg3KQorKysgU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBA
IC0zNzQzLDYgKzM3NDMsNyBAQAogCQk5QTFCNkY5NzE1ODg2OUM4MDAxMUE4QzQgLyogSlNET01T
dHJpbmdMaXN0Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDlBMUI2Rjk2MTU4ODY5QzgwMDExQThDNCAvKiBKU0RPTVN0cmluZ0xpc3RDdXN0
b20uY3BwICovOyB9OwogCQk5QjBGQjE5MTE0MERCNTc5MDAyMjU4OEYgLyogSFRUUFZhbGlkYXRp
b24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUIw
RkIxOEYxNDBEQjU3OTAwMjI1ODhGIC8qIEhUVFBWYWxpZGF0aW9uLmNwcCAqLzsgfTsKIAkJOUIw
RkIxOTIxNDBEQjU3OTAwMjI1ODhGIC8qIEhUVFBWYWxpZGF0aW9uLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QjBGQjE5MDE0MERCNTc5MDAyMjU4OEYg
LyogSFRUUFZhbGlkYXRpb24uaCAqLzsgfTsKKwkJOUIxQUIwN0MxNjQ4QzdDNDAwNTFGM0YyIC8q
IEpTSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb25DdXN0b20uY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUIxQUIwN0IxNjQ4QzdDNDAwNTFGM0YyIC8q
IEpTSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb25DdXN0b20uY3BwICovOyB9OwogCQk5QjI0REU4
RTE1MTk0Qjk1MDBDNTlDMjcgLyogSFRNTEJESUVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlCMjRERThDMTUxOTRCOTUwMEM1OUMyNyAvKiBI
VE1MQkRJRWxlbWVudC5oICovOyB9OwogCQk5QjJCN0FDMTE1MDk4NTBBMDA4OTMyQ0MgLyogTWlj
cm9EYXRhSXRlbVZhbHVlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDlCMkY3Q0Y3MTQ1NjIxMjAwMDdGOEI1MCAvKiBNaWNyb0RhdGFJdGVtVmFsdWUu
Y3BwICovOyB9OwogCQk5QjJEOEE3OTE0OTk3Q0NGMDBFQ0VGM0UgLyogVW5kb1N0ZXAuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlCMkQ4QTc4MTQ5OTdD
Q0YwMEVDRUYzRSAvKiBVbmRvU3RlcC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CkBAIC0zNzYxLDYgKzM3NjIsOCBAQAogCQk5QkM2QzIxQzEzQ0NDOTdC
MDA4RTAzMzcgLyogSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUJDNkMyMUExM0NDQzk3QjAwOEUwMzM3
IC8qIEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmNwcCAqLzsgfTsKIAkJOUJEMEJGOTMxMkE0
MkJGNTAwNzJGRDQzIC8qIFNjb3BlZEV2ZW50UXVldWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlCRDBCRjkxMTJBNDJCRjUwMDcyRkQ0MyAvKiBTY29w
ZWRFdmVudFF1ZXVlLmggKi87IH07CiAJCTlCRDBCRjk0MTJBNDJCRjUwMDcyRkQ0MyAvKiBTY29w
ZWRFdmVudFF1ZXVlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDlCRDBCRjkyMTJBNDJCRjUwMDcyRkQ0MyAvKiBTY29wZWRFdmVudFF1ZXVlLmNwcCAq
LzsgfTsKKwkJOUJGOUE4ODAxNjQ4REQyRjAwMUM2QjIzIC8qIEpTSFRNTEZvcm1Db250cm9sc0Nv
bGxlY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gOUJGOUE4N0UxNjQ4REQyRjAwMUM2QjIzIC8qIEpTSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rp
b24uY3BwICovOyB9OworCQk5QkY5QTg4MTE2NDhERDJGMDAxQzZCMjMgLyogSlNIVE1MRm9ybUNv
bnRyb2xzQ29sbGVjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gOUJGOUE4N0YxNjQ4REQyRjAwMUM2QjIzIC8qIEpTSFRNTEZvcm1Db250cm9sc0Nv
bGxlY3Rpb24uaCAqLzsgfTsKIAkJOUYwRDZCMkUxMjFCRkVCQTAwNkMwMjg4IC8qIEluc3BlY3Rv
clByb2ZpbGVyQWdlbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gOUYwRDZCMkMxMjFCRkVCQTAwNkMwMjg4IC8qIEluc3BlY3RvclByb2ZpbGVyQWdl
bnQuY3BwICovOyB9OwogCQk5RjBENkIyRjEyMUJGRUJBMDA2QzAyODggLyogSW5zcGVjdG9yUHJv
ZmlsZXJBZ2VudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gOUYwRDZCMkQxMjFCRkVCQTAwNkMwMjg4IC8qIEluc3BlY3RvclByb2ZpbGVyQWdlbnQuaCAq
LzsgfTsKIAkJOUYzQjk0N0UxMjI0MTc1ODAwNTMwNEU3IC8qIFNjcmlwdEhlYXBTbmFwc2hvdC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUYzQjk0N0Qx
MjI0MTc1ODAwNTMwNEU3IC8qIFNjcmlwdEhlYXBTbmFwc2hvdC5oICovOyB9OwpAQCAtNDM0OCw4
ICs0MzUxLDggQEAKIAkJQThEMDY1QUUwQTI0NDZDRDAwNUU3MjAzIC8qIEpTSFRNTEZvcm1FbGVt
ZW50Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEE4RDA2NUFEMEEyNDQ2Q0QwMDVFNzIwMyAvKiBKU0hUTUxGb3JtRWxlbWVudEN1c3RvbS5j
cHAgKi87IH07CiAJCUE4RDA2QjM5MEEyNjVEQ0QwMDVFNzIwMyAvKiBIVE1MTmFtZXMuaCBpbiBD
b3B5IEdlbmVyYXRlZCBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEE4RDA2QjM3MEEyNjVEQ0QwMDVFNzIwMyAvKiBIVE1MTmFtZXMuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9ICgpOyB9OyB9OwogCQlBOEQwNkIzQTBBMjY1RENEMDA1RTcyMDMgLyogSFRN
TE5hbWVzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEE4RDA2QjM4MEEyNjVEQ0QwMDVFNzIwMyAvKiBIVE1MTmFtZXMuY3BwICovOyB9OwotCQlBOERG
M0ZDRTA5N0ZBMEZDMDA1Mjk4MUIgLyogSFRNTEZvcm1Db2xsZWN0aW9uLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBOERGM0ZDNjA5N0ZBMEZCMDA1Mjk4
MUIgLyogSFRNTEZvcm1Db2xsZWN0aW9uLmggKi87IH07Ci0JCUE4REYzRkNGMDk3RkEwRkMwMDUy
OTgxQiAvKiBIVE1MRm9ybUNvbGxlY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQThERjNGQzcwOTdGQTBGQjAwNTI5ODFCIC8qIEhUTUxGb3Jt
Q29sbGVjdGlvbi5jcHAgKi87IH07CisJCUE4REYzRkNFMDk3RkEwRkMwMDUyOTgxQiAvKiBIVE1M
Rm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQThERjNGQzYwOTdGQTBGQjAwNTI5ODFCIC8qIEhUTUxGb3JtQ29udHJv
bHNDb2xsZWN0aW9uLmggKi87IH07CisJCUE4REYzRkNGMDk3RkEwRkMwMDUyOTgxQiAvKiBIVE1M
Rm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBOERGM0ZDNzA5N0ZBMEZCMDA1Mjk4MUIgLyogSFRNTEZvcm1Db250
cm9sc0NvbGxlY3Rpb24uY3BwICovOyB9OwogCQlBOERGM0ZEMDA5N0ZBMEZDMDA1Mjk4MUIgLyog
SFRNTENvbGxlY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEE4REYzRkM4MDk3RkEwRkIwMDUyOTgxQiAvKiBIVE1MQ29sbGVjdGlvbi5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUE4REYzRkQxMDk3
RkEwRkMwMDUyOTgxQiAvKiBIVE1MQ29sbGVjdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBOERGM0ZDOTA5N0ZBMEZCMDA1Mjk4MUIgLyogSFRN
TENvbGxlY3Rpb24uY3BwICovOyB9OwogCQlBOERGM0ZEMjA5N0ZBMEZDMDA1Mjk4MUIgLyogSFRN
TEJhc2VGb250RWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQThERjNGQ0EwOTdGQTBGQjAwNTI5ODFCIC8qIEhUTUxCYXNlRm9udEVsZW1lbnQu
aCAqLzsgfTsKQEAgLTExMDExLDYgKzExMDE0LDggQEAKIAkJOUExQjZGOTYxNTg4NjlDODAwMTFB
OEM0IC8qIEpTRE9NU3RyaW5nTGlzdEN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBKU0RPTVN0cmluZ0xpc3RDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk5QjBGQjE4RjE0MERCNTc5MDAyMjU4OEYgLyogSFRUUFZhbGlkYXRpb24u
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSFRUUFZhbGlkYXRpb24u
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5QjBGQjE5MDE0MERCNTc5MDAyMjU4
OEYgLyogSFRUUFZhbGlkYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SFRUUFZhbGlkYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOUIxQUIwNzkx
NjQ4QzY5RDAwNTFGM0YyIC8qIEhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmlkbCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBI
VE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTlCMUFCMDdCMTY0OEM3QzQwMDUxRjNGMiAvKiBKU0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0
aW9uQ3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTSFRN
TEZvcm1Db250cm9sc0NvbGxlY3Rpb25DdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk5QjI0REU4QzE1MTk0Qjk1MDBDNTlDMjcgLyogSFRNTEJESUVsZW1lbnQuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSFRNTEJESUVsZW1lbnQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUIyRDhBNzgxNDk5N0NDRjAwRUNFRjNFIC8qIFVuZG9TdGVw
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVuZG9TdGVwLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlCMkY3Q0Y3MTQ1NjIxMjAwMDdGOEI1MCAvKiBNaWNyb0Rh
dGFJdGVtVmFsdWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWlj
cm9EYXRhSXRlbVZhbHVlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTExMDMw
LDYgKzExMDM1LDggQEAKIAkJOUJDNkMyMUExM0NDQzk3QjAwOEUwMzM3IC8qIEhUTUxUZXh0Rm9y
bUNvbnRyb2xFbGVtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJOUJEMEJGOTExMkE0MkJGNTAwNzJGRDQzIC8qIFNjb3BlZEV2ZW50UXVldWUuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2NvcGVkRXZlbnRRdWV1ZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk5QkQwQkY5MjEyQTQyQkY1MDA3MkZENDMgLyogU2NvcGVk
RXZlbnRRdWV1ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTY29w
ZWRFdmVudFF1ZXVlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOUJGOUE4N0Ux
NjQ4REQyRjAwMUM2QjIzIC8qIEpTSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNIVE1MRm9ybUNvbnRyb2xzQ29sbGVj
dGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTlCRjlBODdGMTY0OEREMkYw
MDFDNkIyMyAvKiBKU0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEpTSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUYwRDZCMkMxMjFCRkVCQTAwNkMwMjg4IC8qIEluc3Bl
Y3RvclByb2ZpbGVyQWdlbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gSW5zcGVjdG9yUHJvZmlsZXJBZ2VudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTlGMEQ2QjJEMTIxQkZFQkEwMDZDMDI4OCAvKiBJbnNwZWN0b3JQcm9maWxlckFnZW50Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluc3BlY3RvclByb2ZpbGVyQWdlbnQu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUYzQjk0N0QxMjI0MTc1ODAwNTMwNEU3
IC8qIFNjcmlwdEhlYXBTbmFwc2hvdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBTY3JpcHRIZWFwU25hcHNob3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEx
NTE1LDggKzExNTIyLDggQEAKIAkJQThEMDY1QUQwQTI0NDZDRDAwNUU3MjAzIC8qIEpTSFRNTEZv
cm1FbGVtZW50Q3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEpTSFRNTEZvcm1FbGVtZW50Q3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQThEMDZCMzcwQTI2NURDRDAwNUU3MjAzIC8qIEhUTUxOYW1lcy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gSFRNTE5hbWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUE4RDA2QjM4MEEyNjVEQ0QwMDVFNzIwMyAvKiBIVE1MTmFtZXMuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEhUTUxOYW1lcy5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCUE4REYzRkM2MDk3RkEwRkIwMDUyOTgxQiAvKiBIVE1MRm9ybUNv
bGxlY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAz
MDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhUTUxGb3JtQ29s
bGVjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlBOERGM0ZDNzA5N0ZBMEZC
MDA1Mjk4MUIgLyogSFRNTEZvcm1Db2xsZWN0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBIVE1MRm9ybUNvbGxlY3Rpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlBOERGM0ZDNjA5N0ZBMEZCMDA1Mjk4MUIgLyogSFRNTEZvcm1Db250cm9s
c0NvbGxlY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhUTUxGb3Jt
Q29udHJvbHNDb2xsZWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE4REYz
RkM3MDk3RkEwRkIwMDUyOTgxQiAvKiBIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSFRNTEZvcm1Db250cm9sc0NvbGxl
Y3Rpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBOERGM0ZDODA5N0ZBMEZC
MDA1Mjk4MUIgLyogSFRNTENvbGxlY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEhUTUxDb2xsZWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4
REYzRkM5MDk3RkEwRkIwMDUyOTgxQiAvKiBIVE1MQ29sbGVjdGlvbi5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSFRNTENvbGxlY3Rpb24uY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlBOERGM0ZDQTA5N0ZBMEZCMDA1Mjk4MUIgLyogSFRNTEJhc2VG
b250RWxlbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSFRNTEJhc2VG
b250RWxlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTc1MjgsOCArMTc1
MzUsOSBAQAogCQkJCUE4Q0ZGNzk4MEExNTY5NzgwMDBBNDIzNCAvKiBIVE1MRm9udEVsZW1lbnQu
Y3BwICovLAogCQkJCUE4Q0ZGNzlDMEExNTY5NzgwMDBBNDIzNCAvKiBIVE1MRm9udEVsZW1lbnQu
aCAqLywKIAkJCQkxQUUyQTlGNTBBMUNEQTU3MDBCNDJCMjUgLyogSFRNTEZvbnRFbGVtZW50Lmlk
bCAqLywKLQkJCQlBOERGM0ZDNzA5N0ZBMEZCMDA1Mjk4MUIgLyogSFRNTEZvcm1Db2xsZWN0aW9u
LmNwcCAqLywKLQkJCQlBOERGM0ZDNjA5N0ZBMEZCMDA1Mjk4MUIgLyogSFRNTEZvcm1Db2xsZWN0
aW9uLmggKi8sCisJCQkJQThERjNGQzcwOTdGQTBGQjAwNTI5ODFCIC8qIEhUTUxGb3JtQ29udHJv
bHNDb2xsZWN0aW9uLmNwcCAqLywKKwkJCQlBOERGM0ZDNjA5N0ZBMEZCMDA1Mjk4MUIgLyogSFRN
TEZvcm1Db250cm9sc0NvbGxlY3Rpb24uaCAqLywKKwkJCQk5QjFBQjA3OTE2NDhDNjlEMDA1MUYz
RjIgLyogSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uaWRsICovLAogCQkJCUE4MTM2OUIzMDk3
Mzc0RjUwMEQ3NDQ2MyAvKiBIVE1MRm9ybUNvbnRyb2xFbGVtZW50LmNwcCAqLywKIAkJCQlBODEz
NjlCMjA5NzM3NEY1MDBENzQ0NjMgLyogSFRNTEZvcm1Db250cm9sRWxlbWVudC5oICovLAogCQkJ
CUUxNEYxQzQyMTRCNURBQzYwMEVBOTAwOSAvKiBIVE1MRm9ybUNvbnRyb2xFbGVtZW50V2l0aFN0
YXRlLmNwcCAqLywKQEAgLTE4NDE3LDYgKzE4NDI1LDggQEAKIAkJCQkxQUUyQUExMzBBMUNEQUIz
MDBCNDJCMjUgLyogSlNIVE1MRmllbGRTZXRFbGVtZW50LmggKi8sCiAJCQkJMUFFMkFBMTQwQTFD
REFCMzAwQjQyQjI1IC8qIEpTSFRNTEZvbnRFbGVtZW50LmNwcCAqLywKIAkJCQkxQUUyQUExNTBB
MUNEQUIzMDBCNDJCMjUgLyogSlNIVE1MRm9udEVsZW1lbnQuaCAqLywKKwkJCQk5QkY5QTg3RTE2
NDhERDJGMDAxQzZCMjMgLyogSlNIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5jcHAgKi8sCisJ
CQkJOUJGOUE4N0YxNjQ4REQyRjAwMUM2QjIzIC8qIEpTSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rp
b24uaCAqLywKIAkJCQlBOEQwNjRGOTBBMjNDMENDMDA1RTcyMDMgLyogSlNIVE1MRm9ybUVsZW1l
bnQuY3BwICovLAogCQkJCUE4RDA2NEZBMEEyM0MwQ0MwMDVFNzIwMyAvKiBKU0hUTUxGb3JtRWxl
bWVudC5oICovLAogCQkJCUJDNDkxOEMwMEJGRUEwNTAwMDlENjMxNiAvKiBKU0hUTUxGcmFtZUVs
ZW1lbnQuY3BwICovLApAQCAtMjA0NjEsNiArMjA0NzEsNyBAQAogCQkJCUJDNTgyM0Y0MEMwQTk4
REYwMDUzRjFCNSAvKiBKU0hUTUxFbGVtZW50Q3VzdG9tLmNwcCAqLywKIAkJCQlCQzZENDRCRDBD
MDdFRkI2MDA3MkQyQzkgLyogSlNIVE1MRW1iZWRFbGVtZW50Q3VzdG9tLmNwcCAqLywKIAkJCQlF
MUFEMTQyMDEyOTVFQTZCMDBBQ0E5ODkgLyogSlNIVE1MRW1iZWRFbGVtZW50Q3VzdG9tLmggKi8s
CisJCQkJOUIxQUIwN0IxNjQ4QzdDNDAwNTFGM0YyIC8qIEpTSFRNTEZvcm1Db250cm9sc0NvbGxl
Y3Rpb25DdXN0b20uY3BwICovLAogCQkJCUE4RDA2NUFEMEEyNDQ2Q0QwMDVFNzIwMyAvKiBKU0hU
TUxGb3JtRWxlbWVudEN1c3RvbS5jcHAgKi8sCiAJCQkJQkMyRUQ3QTQwQzZDMEYzNjAwOTIwQkZG
IC8qIEpTSFRNTEZyYW1lRWxlbWVudEN1c3RvbS5jcHAgKi8sCiAJCQkJQkNENDFBQkEwQzA2MERF
ODAwQzBFNDQ2IC8qIEpTSFRNTEZyYW1lU2V0RWxlbWVudEN1c3RvbS5jcHAgKi8sCkBAIC0yMzcx
NCw3ICsyMzcyNSw3IEBACiAJCQkJQTgxMzY5RDQwOTczNzRGNjAwRDc0NDYzIC8qIEhUTUxGaWVs
ZFNldEVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4Q0ZGN0E2MEExNTY5NzgwMDBBNDIz
NCAvKiBIVE1MRm9udEVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTk3N0IzODZGMTIyODgz
RTkwMEI4MUZGOCAvKiBIVE1MRm9ybWF0dGluZ0VsZW1lbnRMaXN0LmggaW4gSGVhZGVycyAqLywK
LQkJCQlBOERGM0ZDRTA5N0ZBMEZDMDA1Mjk4MUIgLyogSFRNTEZvcm1Db2xsZWN0aW9uLmggaW4g
SGVhZGVycyAqLywKKwkJCQlBOERGM0ZDRTA5N0ZBMEZDMDA1Mjk4MUIgLyogSFRNTEZvcm1Db250
cm9sc0NvbGxlY3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUE4MTM2OUNFMDk3Mzc0RjYwMEQ3
NDQ2MyAvKiBIVE1MRm9ybUNvbnRyb2xFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlFMTRG
MUM0NTE0QjVEQUM2MDBFQTkwMDkgLyogSFRNTEZvcm1Db250cm9sRWxlbWVudFdpdGhTdGF0ZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQTgxMzY5RDAwOTczNzRGNjAwRDc0NDYzIC8qIEhUTUxGb3Jt
RWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNTY5Miw2ICsyNTcwMyw3IEBACiAJCQkJM0ZG
RkY5QTkxNTlEOUE1NTAwMjBCQkQ1IC8qIFdlYktpdENTU1ZpZXdwb3J0UnVsZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJOTNDMzhCRkYxNjQ0NzNDNzAwMDkxRUIyIC8qIFNjcm9sbGluZ1N0YXRlRml4
ZWROb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQk5M0MzOEMwMzE2NDQ3M0REMDAwOTFFQjIgLyog
U2Nyb2xsaW5nVHJlZUZpeGVkTm9kZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJOUJGOUE4ODExNjQ4
REQyRjAwMUM2QjIzIC8qIEpTSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uaCBpbiBIZWFkZXJz
ICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwog
CQl9OwpAQCAtMjY5MjEsNyArMjY5MzMsNyBAQAogCQkJCUE4MTM2OUQ1MDk3Mzc0RjYwMEQ3NDQ2
MyAvKiBIVE1MRmllbGRTZXRFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4Q0ZGN0Ey
MEExNTY5NzgwMDBBNDIzNCAvKiBIVE1MRm9udEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJOTc3QjM4NkUxMjI4ODNFOTAwQjgxRkY4IC8qIEhUTUxGb3JtYXR0aW5nRWxlbWVudExpc3Qu
Y3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJQThERjNGQ0YwOTdGQTBGQzAwNTI5ODFCIC8qIEhUTUxG
b3JtQ29sbGVjdGlvbi5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlBOERGM0ZDRjA5N0ZBMEZDMDA1
Mjk4MUIgLyogSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQTgxMzY5Q0YwOTczNzRGNjAwRDc0NDYzIC8qIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJRTE0RjFDNDQxNEI1REFDNjAwRUE5MDA5IC8qIEhUTUxGb3Jt
Q29udHJvbEVsZW1lbnRXaXRoU3RhdGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTgxMzY5RDEw
OTczNzRGNjAwRDc0NDYzIC8qIEhUTUxGb3JtRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKQEAg
LTI3MzM2LDYgKzI3MzQ4LDggQEAKIAkJCQlCQzZENDRCRTBDMDdFRkI2MDA3MkQyQzkgLyogSlNI
VE1MRW1iZWRFbGVtZW50Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBRTJBQTI2MEEx
Q0RBQjQwMEI0MkIyNSAvKiBKU0hUTUxGaWVsZFNldEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMUFFMkFBMjgwQTFDREFCNDAwQjQyQjI1IC8qIEpTSFRNTEZvbnRFbGVtZW50LmNwcCBp
biBTb3VyY2VzICovLAorCQkJCTlCRjlBODgwMTY0OEREMkYwMDFDNkIyMyAvKiBKU0hUTUxGb3Jt
Q29udHJvbHNDb2xsZWN0aW9uLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTlCMUFCMDdDMTY0OEM3
QzQwMDUxRjNGMiAvKiBKU0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uQ3VzdG9tLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUE4RDA2NEZCMEEyM0MwQ0MwMDVFNzIwMyAvKiBKU0hUTUxGb3JtRWxl
bWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBOEQwNjVBRTBBMjQ0NkNEMDA1RTcyMDMgLyog
SlNIVE1MRm9ybUVsZW1lbnRDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkM0OTE4QzYw
QkZFQTA1MDAwOUQ2MzE2IC8qIEpTSFRNTEZyYW1lRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQmluZGluZ3NBbGxJbk9uZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNCaW5kaW5nc0FsbElu
T25lLmNwcAkocmV2aXNpb24gMTMzNjg3KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNCaW5kaW5nc0FsbEluT25lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODksNiArODksNyBAQAog
I2luY2x1ZGUgIkpTSFRNTERvY3VtZW50Q3VzdG9tLmNwcCIKICNpbmNsdWRlICJKU0hUTUxFbGVt
ZW50Q3VzdG9tLmNwcCIKICNpbmNsdWRlICJKU0hUTUxFbWJlZEVsZW1lbnRDdXN0b20uY3BwIgor
I2luY2x1ZGUgIkpTSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb25DdXN0b20uY3BwIgogI2luY2x1
ZGUgIkpTSFRNTEZvcm1FbGVtZW50Q3VzdG9tLmNwcCIKICNpbmNsdWRlICJKU0hUTUxGcmFtZUVs
ZW1lbnRDdXN0b20uY3BwIgogI2luY2x1ZGUgIkpTSFRNTEZyYW1lU2V0RWxlbWVudEN1c3RvbS5j
cHAiCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxBbGxDb2xsZWN0aW9u
Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hU
TUxBbGxDb2xsZWN0aW9uQ3VzdG9tLmNwcAkocmV2aXNpb24gMTMzNjg3KQorKysgU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNIVE1MQWxsQ29sbGVjdGlvbkN1c3RvbS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTUwLDkgKzUwLDggQEAgc3RhdGljIEpTVmFsdWUgZ2V0TmFtZWRJdGVtcyhFeGVj
U3RhdGUqIAogICAgIGlmIChuYW1lZEl0ZW1zLnNpemUoKSA9PSAxKQogICAgICAgICByZXR1cm4g
dG9KUyhleGVjLCBjb2xsZWN0aW9uLT5nbG9iYWxPYmplY3QoKSwgbmFtZWRJdGVtc1swXS5nZXQo
KSk7CiAKLSAgICAvLyBGSVhNRTogSFRNTDUgc3BlY2lmaWVzIHRoYXQgdGhpcyBzaG91bGQgYmUg
YSBEeW5hbWljTm9kZUxpc3QuCi0gICAgLy8gRklYTUU6IEhUTUw1IHNwZWNpZmllcyB0aGF0IG5v
bi1IVE1MT3B0aW9uc0NvbGxlY3Rpb24gY29sbGVjdGlvbnMgc2hvdWxkIHJldHVybgotICAgIC8v
IHRoZSBmaXJzdCBtYXRjaGluZyBpdGVtIGluc3RlYWQgb2YgYSBOb2RlTGlzdC4KKyAgICAvLyBG
SVhNRTogSFRNTDUgc3BlY2lmaWNhdGlvbiBzYXlzIHRoaXMgc2hvdWxkIGJlIGEgSFRNTENvbGxl
Y3Rpb24uCisgICAgLy8gaHR0cDovL3d3dy53aGF0d2cub3JnL3NwZWNzL3dlYi1hcHBzL2N1cnJl
bnQtd29yay9tdWx0aXBhZ2UvY29tbW9uLWRvbS1pbnRlcmZhY2VzLmh0bWwjaHRtbGFsbGNvbGxl
Y3Rpb24KICAgICByZXR1cm4gdG9KUyhleGVjLCBjb2xsZWN0aW9uLT5nbG9iYWxPYmplY3QoKSwg
U3RhdGljTm9kZUxpc3Q6OmFkb3B0KG5hbWVkSXRlbXMpLmdldCgpKTsKIH0KIApJbmRleDogU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MQ29sbGVjdGlvbkN1c3RvbS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MQ29sbGVjdGlvbkN1c3Rv
bS5jcHAJKHJldmlzaW9uIDEzMzY4NykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
SFRNTENvbGxlY3Rpb25DdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMCwxMSArMjAsMTMg
QEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJKU0hUTUxDb2xsZWN0aW9uLmgiCiAK
KyNpbmNsdWRlICJIVE1MQWxsQ29sbGVjdGlvbi5oIgogI2luY2x1ZGUgIkhUTUxDb2xsZWN0aW9u
LmgiCisjaW5jbHVkZSAiSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uaCIKICNpbmNsdWRlICJI
VE1MT3B0aW9uc0NvbGxlY3Rpb24uaCIKLSNpbmNsdWRlICJIVE1MQWxsQ29sbGVjdGlvbi5oIgog
I2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgogI2luY2x1ZGUgIkpTSFRNTEFsbENvbGxlY3Rpb24u
aCIKKyNpbmNsdWRlICJKU0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmgiCiAjaW5jbHVkZSAi
SlNIVE1MT3B0aW9uc0NvbGxlY3Rpb24uaCIKICNpbmNsdWRlICJKU05vZGUuaCIKICNpbmNsdWRl
ICJKU05vZGVMaXN0LmgiCkBAIC0zOSwyNiArNDEsNiBAQCB1c2luZyBuYW1lc3BhY2UgSlNDOwog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBKU1ZhbHVlIGdldE5hbWVkSXRlbXMoRXhl
Y1N0YXRlKiBleGVjLCBKU0hUTUxDb2xsZWN0aW9uKiBjb2xsZWN0aW9uLCBQcm9wZXJ0eU5hbWUg
cHJvcGVydHlOYW1lKQotewotICAgIFZlY3RvcjxSZWZQdHI8Tm9kZT4gPiBuYW1lZEl0ZW1zOwot
ICAgIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSA9IHByb3BlcnR5TmFtZVRvQXRvbWljU3RyaW5n
KHByb3BlcnR5TmFtZSk7Ci0gICAgY29sbGVjdGlvbi0+aW1wbCgpLT5uYW1lZEl0ZW1zKG5hbWUs
IG5hbWVkSXRlbXMpOwotCi0gICAgaWYgKG5hbWVkSXRlbXMuaXNFbXB0eSgpKQotICAgICAgICBy
ZXR1cm4ganNVbmRlZmluZWQoKTsKLSAgICBpZiAobmFtZWRJdGVtcy5zaXplKCkgPT0gMSkKLSAg
ICAgICAgcmV0dXJuIHRvSlMoZXhlYywgY29sbGVjdGlvbi0+Z2xvYmFsT2JqZWN0KCksIG5hbWVk
SXRlbXNbMF0uZ2V0KCkpOwotCi0gICAgaWYgKGNvbGxlY3Rpb24tPmltcGwoKS0+dHlwZSgpID09
IEZvcm1Db250cm9scykKLSAgICAgICByZXR1cm4gdG9KUyhleGVjLCBjb2xsZWN0aW9uLT5nbG9i
YWxPYmplY3QoKSwgY29sbGVjdGlvbi0+aW1wbCgpLT5iYXNlKCktPnJhZGlvTm9kZUxpc3QobmFt
ZSkuZ2V0KCkpOwotCi0gICAgLy8gRklYTUU6IEhUTUw1IHNwZWNpZmllcyB0aGF0IHRoaXMgc2hv
dWxkIGJlIGEgRHluYW1pY05vZGVMaXN0LgotICAgIC8vIEZJWE1FOiBIVE1MNSBzcGVjaWZpZXMg
dGhhdCBub24tSFRNTE9wdGlvbnNDb2xsZWN0aW9uIGNvbGxlY3Rpb25zIHNob3VsZCByZXR1cm4K
LSAgICAvLyB0aGUgZmlyc3QgbWF0Y2hpbmcgaXRlbSBpbnN0ZWFkIG9mIGEgTm9kZUxpc3QuCi0g
ICAgcmV0dXJuIHRvSlMoZXhlYywgY29sbGVjdGlvbi0+Z2xvYmFsT2JqZWN0KCksIFN0YXRpY05v
ZGVMaXN0OjphZG9wdChuYW1lZEl0ZW1zKS5nZXQoKSk7Ci19Ci0KIGJvb2wgSlNIVE1MQ29sbGVj
dGlvbjo6Y2FuR2V0SXRlbXNGb3JOYW1lKEV4ZWNTdGF0ZSosIEhUTUxDb2xsZWN0aW9uKiBjb2xs
ZWN0aW9uLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogewogICAgIHJldHVybiBjb2xsZWN0
aW9uLT5oYXNOYW1lZEl0ZW0ocHJvcGVydHlOYW1lVG9BdG9taWNTdHJpbmcocHJvcGVydHlOYW1l
KSk7CkBAIC02NiwxMyArNDgsOSBAQCBib29sIEpTSFRNTENvbGxlY3Rpb246OmNhbkdldEl0ZW1z
Rm9yTmFtCiAKIEpTVmFsdWUgSlNIVE1MQ29sbGVjdGlvbjo6bmFtZUdldHRlcihFeGVjU3RhdGUq
IGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCiB7Ci0g
ICAgSlNIVE1MQ29sbGVjdGlvbiogdGhpc09iaiA9IGpzQ2FzdDxKU0hUTUxDb2xsZWN0aW9uKj4o
YXNPYmplY3Qoc2xvdEJhc2UpKTsKLSAgICByZXR1cm4gZ2V0TmFtZWRJdGVtcyhleGVjLCB0aGlz
T2JqLCBwcm9wZXJ0eU5hbWUpOwotfQotCi1KU1ZhbHVlIEpTSFRNTENvbGxlY3Rpb246Om5hbWVk
SXRlbShFeGVjU3RhdGUqIGV4ZWMpCi17Ci0gICAgcmV0dXJuIGdldE5hbWVkSXRlbXMoZXhlYywg
dGhpcywgSWRlbnRpZmllcihleGVjLCBleGVjLT5hcmd1bWVudCgwKS50b1N0cmluZyhleGVjKS0+
dmFsdWUoZXhlYykpKTsKKyAgICBKU0hUTUxDb2xsZWN0aW9uKiBjb2xsZWN0aW9uID0ganNDYXN0
PEpTSFRNTENvbGxlY3Rpb24qPihhc09iamVjdChzbG90QmFzZSkpOworICAgIGNvbnN0IEF0b21p
Y1N0cmluZyYgbmFtZSA9IHByb3BlcnR5TmFtZVRvQXRvbWljU3RyaW5nKHByb3BlcnR5TmFtZSk7
CisgICAgcmV0dXJuIHRvSlMoZXhlYywgY29sbGVjdGlvbi0+Z2xvYmFsT2JqZWN0KCksIGNvbGxl
Y3Rpb24tPmltcGwoKS0+bmFtZWRJdGVtKG5hbWUpKTsKIH0KIAogSlNWYWx1ZSB0b0pTKEV4ZWNT
dGF0ZSogZXhlYywgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSFRNTENvbGxlY3Rp
b24qIGNvbGxlY3Rpb24pCkBAIC04NiwxOCArNjQsMTcgQEAgSlNWYWx1ZSB0b0pTKEV4ZWNTdGF0
ZSogZXhlYywgSlNET01HbG9iYQogICAgICAgICByZXR1cm4gd3JhcHBlcjsKIAogICAgIHN3aXRj
aCAoY29sbGVjdGlvbi0+dHlwZSgpKSB7Ci0gICAgICAgIGNhc2UgU2VsZWN0T3B0aW9uczoKLSAg
ICAgICAgICAgIHdyYXBwZXIgPSBDUkVBVEVfRE9NX1dSQVBQRVIoZXhlYywgZ2xvYmFsT2JqZWN0
LCBIVE1MT3B0aW9uc0NvbGxlY3Rpb24sIGNvbGxlY3Rpb24pOwotICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgIGNhc2UgRG9jQWxsOgotICAgICAgICAgICAgd3JhcHBlciA9IENSRUFURV9ET01f
V1JBUFBFUihleGVjLCBnbG9iYWxPYmplY3QsIEhUTUxBbGxDb2xsZWN0aW9uLCBjb2xsZWN0aW9u
KTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgd3Jh
cHBlciA9IENSRUFURV9ET01fV1JBUFBFUihleGVjLCBnbG9iYWxPYmplY3QsIEhUTUxDb2xsZWN0
aW9uLCBjb2xsZWN0aW9uKTsKLSAgICAgICAgICAgIGJyZWFrOworICAgIGNhc2UgRm9ybUNvbnRy
b2xzOgorICAgICAgICByZXR1cm4gQ1JFQVRFX0RPTV9XUkFQUEVSKGV4ZWMsIGdsb2JhbE9iamVj
dCwgSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24sIGNvbGxlY3Rpb24pOworICAgIGNhc2UgU2Vs
ZWN0T3B0aW9uczoKKyAgICAgICAgcmV0dXJuIENSRUFURV9ET01fV1JBUFBFUihleGVjLCBnbG9i
YWxPYmplY3QsIEhUTUxPcHRpb25zQ29sbGVjdGlvbiwgY29sbGVjdGlvbik7CisgICAgY2FzZSBE
b2NBbGw6CisgICAgICAgIHJldHVybiBDUkVBVEVfRE9NX1dSQVBQRVIoZXhlYywgZ2xvYmFsT2Jq
ZWN0LCBIVE1MQWxsQ29sbGVjdGlvbiwgY29sbGVjdGlvbik7CisgICAgZGVmYXVsdDoKKyAgICAg
ICAgYnJlYWs7CiAgICAgfQogCi0gICAgcmV0dXJuIHdyYXBwZXI7CisgICAgcmV0dXJuIENSRUFU
RV9ET01fV1JBUFBFUihleGVjLCBnbG9iYWxPYmplY3QsIEhUTUxDb2xsZWN0aW9uLCBjb2xsZWN0
aW9uKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbkN1c3RvbS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MRm9ybUNvbnRyb2xzQ29s
bGVjdGlvbkN1c3RvbS5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uQ3VzdG9tLmNwcAkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSw3MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNywgMjAwOCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29m
dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVy
IHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2Ug
YXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICog
dmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2
ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0
aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRo
b3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hv
dWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJ
TkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
biwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEg
MDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJI
VE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5oIgorCisKKyNpbmNsdWRlICJIVE1MQWxsQ29sbGVj
dGlvbi5oIgorI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgorI2luY2x1ZGUgIkpTSFRNTENvbGxl
Y3Rpb24uaCIKKyNpbmNsdWRlICJKU0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmgiCisjaW5j
bHVkZSAiSlNOb2RlLmgiCisjaW5jbHVkZSAiSlNOb2RlTGlzdC5oIgorI2luY2x1ZGUgIkpTUmFk
aW9Ob2RlTGlzdC5oIgorI2luY2x1ZGUgIk5vZGUuaCIKKyNpbmNsdWRlICJSYWRpb05vZGVMaXN0
LmgiCisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0
cmluZy5oPgorCit1c2luZyBuYW1lc3BhY2UgSlNDOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K3N0YXRpYyBKU1ZhbHVlIGdldE5hbWVkSXRlbXMoRXhlY1N0YXRlKiBleGVjLCBKU0hUTUxDb2xs
ZWN0aW9uKiBjb2xsZWN0aW9uLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQoreworICAgIFZl
Y3RvcjxSZWZQdHI8Tm9kZT4gPiBuYW1lZEl0ZW1zOworICAgIGNvbnN0IEF0b21pY1N0cmluZyYg
bmFtZSA9IHByb3BlcnR5TmFtZVRvQXRvbWljU3RyaW5nKHByb3BlcnR5TmFtZSk7CisgICAgY29s
bGVjdGlvbi0+aW1wbCgpLT5uYW1lZEl0ZW1zKG5hbWUsIG5hbWVkSXRlbXMpOworCisgICAgaWYg
KG5hbWVkSXRlbXMuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKyAg
ICBpZiAobmFtZWRJdGVtcy5zaXplKCkgPT0gMSkKKyAgICAgICAgcmV0dXJuIHRvSlMoZXhlYywg
Y29sbGVjdGlvbi0+Z2xvYmFsT2JqZWN0KCksIG5hbWVkSXRlbXNbMF0uZ2V0KCkpOworCisgICAg
QVNTRVJUKGNvbGxlY3Rpb24tPmltcGwoKS0+dHlwZSgpID09IEZvcm1Db250cm9scyk7CisgICAg
cmV0dXJuIHRvSlMoZXhlYywgY29sbGVjdGlvbi0+Z2xvYmFsT2JqZWN0KCksIGNvbGxlY3Rpb24t
PmltcGwoKS0+YmFzZSgpLT5yYWRpb05vZGVMaXN0KG5hbWUpLmdldCgpKTsKK30KKworYm9vbCBK
U0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uOjpjYW5HZXRJdGVtc0Zvck5hbWUoRXhlY1N0YXRl
KiwgSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24qIGNvbGxlY3Rpb24sIFByb3BlcnR5TmFtZSBw
cm9wZXJ0eU5hbWUpCit7CisgICAgcmV0dXJuIGNvbGxlY3Rpb24tPmhhc05hbWVkSXRlbShwcm9w
ZXJ0eU5hbWVUb0F0b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUpKTsKK30KKworSlNWYWx1ZSBKU0hU
TUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uOjpuYW1lR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNW
YWx1ZSBzbG90QmFzZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKK3sKKyAgICBKU0hUTUxG
b3JtQ29udHJvbHNDb2xsZWN0aW9uKiB0aGlzT2JqID0ganNDYXN0PEpTSFRNTEZvcm1Db250cm9s
c0NvbGxlY3Rpb24qPihhc09iamVjdChzbG90QmFzZSkpOworICAgIHJldHVybiBnZXROYW1lZEl0
ZW1zKGV4ZWMsIHRoaXNPYmosIHByb3BlcnR5TmFtZSk7Cit9CisKK0pTVmFsdWUgSlNIVE1MRm9y
bUNvbnRyb2xzQ29sbGVjdGlvbjo6bmFtZWRJdGVtKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBy
ZXR1cm4gZ2V0TmFtZWRJdGVtcyhleGVjLCB0aGlzLCBJZGVudGlmaWVyKGV4ZWMsIGV4ZWMtPmFy
Z3VtZW50KDApLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSkpOworfQorCit9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxPcHRp
b25zQ29sbGVjdGlvbkN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNIVE1MT3B0aW9uc0NvbGxlY3Rpb25DdXN0b20uY3BwCShyZXZpc2lvbiAxMzM2
ODcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxPcHRpb25zQ29sbGVjdGlv
bkN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4LDYgKzI4LDggQEAKICNpbmNsdWRlICJK
U0hUTUxPcHRpb25FbGVtZW50LmgiCiAjaW5jbHVkZSAiSlNIVE1MU2VsZWN0RWxlbWVudC5oIgog
I2luY2x1ZGUgIkpTSFRNTFNlbGVjdEVsZW1lbnRDdXN0b20uaCIKKyNpbmNsdWRlICJKU05vZGVM
aXN0LmgiCisjaW5jbHVkZSAiU3RhdGljTm9kZUxpc3QuaCIKIAogI2luY2x1ZGUgPHd0Zi9NYXRo
RXh0cmFzLmg+CiAKQEAgLTM1LDYgKzM3LDM3IEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAorc3RhdGljIEpTVmFsdWUgZ2V0TmFtZWRJdGVtcyhFeGVjU3Rh
dGUqIGV4ZWMsIEpTSFRNTENvbGxlY3Rpb24qIGNvbGxlY3Rpb24sIFByb3BlcnR5TmFtZSBwcm9w
ZXJ0eU5hbWUpCit7CisgICAgVmVjdG9yPFJlZlB0cjxOb2RlPiA+IG5hbWVkSXRlbXM7CisgICAg
Y29uc3QgQXRvbWljU3RyaW5nJiBuYW1lID0gcHJvcGVydHlOYW1lVG9BdG9taWNTdHJpbmcocHJv
cGVydHlOYW1lKTsKKyAgICBjb2xsZWN0aW9uLT5pbXBsKCktPm5hbWVkSXRlbXMobmFtZSwgbmFt
ZWRJdGVtcyk7CisKKyAgICBpZiAobmFtZWRJdGVtcy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVy
biBqc1VuZGVmaW5lZCgpOworICAgIGlmIChuYW1lZEl0ZW1zLnNpemUoKSA9PSAxKQorICAgICAg
ICByZXR1cm4gdG9KUyhleGVjLCBjb2xsZWN0aW9uLT5nbG9iYWxPYmplY3QoKSwgbmFtZWRJdGVt
c1swXS5nZXQoKSk7CisKKyAgICAvLyBGSVhNRTogSFRNTDUgc3BlY2lmaWVzIHRoYXQgdGhpcyBz
aG91bGQgYmUgYSBEeW5hbWljTm9kZUxpc3QuCisgICAgcmV0dXJuIHRvSlMoZXhlYywgY29sbGVj
dGlvbi0+Z2xvYmFsT2JqZWN0KCksIFN0YXRpY05vZGVMaXN0OjphZG9wdChuYW1lZEl0ZW1zKS5n
ZXQoKSk7Cit9CisKK2Jvb2wgSlNIVE1MT3B0aW9uc0NvbGxlY3Rpb246OmNhbkdldEl0ZW1zRm9y
TmFtZShFeGVjU3RhdGUqLCBIVE1MT3B0aW9uc0NvbGxlY3Rpb24qIGNvbGxlY3Rpb24sIFByb3Bl
cnR5TmFtZSBwcm9wZXJ0eU5hbWUpCit7CisgICAgcmV0dXJuIGNvbGxlY3Rpb24tPmhhc05hbWVk
SXRlbShwcm9wZXJ0eU5hbWVUb0F0b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUpKTsKK30KKworSlNW
YWx1ZSBKU0hUTUxPcHRpb25zQ29sbGVjdGlvbjo6bmFtZUdldHRlcihFeGVjU3RhdGUqIGV4ZWMs
IEpTVmFsdWUgc2xvdEJhc2UsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCit7CisgICAgSlNI
VE1MT3B0aW9uc0NvbGxlY3Rpb24qIHRoaXNPYmogPSBqc0Nhc3Q8SlNIVE1MT3B0aW9uc0NvbGxl
Y3Rpb24qPihhc09iamVjdChzbG90QmFzZSkpOworICAgIHJldHVybiBnZXROYW1lZEl0ZW1zKGV4
ZWMsIHRoaXNPYmosIHByb3BlcnR5TmFtZSk7Cit9CisKK0pTVmFsdWUgSlNIVE1MT3B0aW9uc0Nv
bGxlY3Rpb246Om5hbWVkSXRlbShFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgcmV0dXJuIGdldE5h
bWVkSXRlbXMoZXhlYywgdGhpcywgSWRlbnRpZmllcihleGVjLCBleGVjLT5hcmd1bWVudCgwKS50
b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpKTsKK30KKwogSlNWYWx1ZSBKU0hUTUxPcHRpb25z
Q29sbGVjdGlvbjo6bGVuZ3RoKEV4ZWNTdGF0ZSopIGNvbnN0CiB7CiAgICAgSFRNTE9wdGlvbnND
b2xsZWN0aW9uKiBpbXAgPSBzdGF0aWNfY2FzdDxIVE1MT3B0aW9uc0NvbGxlY3Rpb24qPihpbXBs
KCkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9y
SlMucG0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2Rl
R2VuZXJhdG9ySlMucG0JKHJldmlzaW9uIDEzMzY4NykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCSh3b3JraW5nIGNvcHkpCkBAIC00MDgsNyAr
NDA4LDcgQEAgc3ViIEdlbmVyYXRlR2V0T3duUHJvcGVydHlTbG90Qm9keQogCiAgICAgbXkgQGdl
dE93blByb3BlcnR5U2xvdEltcGwgPSAoKTsKIAotICAgIGlmICgkaW50ZXJmYWNlTmFtZSBlcSAi
TmFtZWROb2RlTWFwIiBvciAkaW50ZXJmYWNlTmFtZSBlcSAiSFRNTENvbGxlY3Rpb24iIG9yICRp
bnRlcmZhY2VOYW1lIGVxICJIVE1MQWxsQ29sbGVjdGlvbiIgb3IgJGludGVyZmFjZU5hbWUgZXEg
IkhUTUxQcm9wZXJ0aWVzQ29sbGVjdGlvbiIpIHsKKyAgICBpZiAoJGludGVyZmFjZU5hbWUgZXEg
Ik5hbWVkTm9kZU1hcCIgb3IgJGludGVyZmFjZU5hbWUgPX4gL15IVE1MXHcqQ29sbGVjdGlvbiQv
KSB7CiAgICAgICAgIHB1c2goQGdldE93blByb3BlcnR5U2xvdEltcGwsICIgICAgJHtuYW1lc3Bh
Y2VNYXliZX1KU1ZhbHVlIHByb3RvID0gdGhpc09iamVjdC0+cHJvdG90eXBlKCk7XG4iKTsKICAg
ICAgICAgcHVzaChAZ2V0T3duUHJvcGVydHlTbG90SW1wbCwgIiAgICBpZiAocHJvdG8uaXNPYmpl
Y3QoKSAmJiBqc0Nhc3Q8JHtuYW1lc3BhY2VNYXliZX1KU09iamVjdCo+KGFzT2JqZWN0KHByb3Rv
KSktPmhhc1Byb3BlcnR5KGV4ZWMsIHByb3BlcnR5TmFtZSkpXG4iKTsKICAgICAgICAgcHVzaChA
Z2V0T3duUHJvcGVydHlTbG90SW1wbCwgIiAgICAgICAgcmV0dXJuIGZhbHNlO1xuXG4iKTsKQEAg
LTUwMCw3ICs1MDAsNyBAQCBzdWIgR2VuZXJhdGVHZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JCb2R5
CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICByZXR1cm4gZmFsc2U7XG4iKTsK
ICAgICB9CiAgICAgCi0gICAgaWYgKCRpbnRlcmZhY2VOYW1lIGVxICJOYW1lZE5vZGVNYXAiIG9y
ICRpbnRlcmZhY2VOYW1lIGVxICJIVE1MQ29sbGVjdGlvbiIgb3IgJGludGVyZmFjZU5hbWUgZXEg
IkhUTUxBbGxDb2xsZWN0aW9uIiBvciAkaW50ZXJmYWNlTmFtZSBlcSAiSFRNTFByb3BlcnRpZXND
b2xsZWN0aW9uIikgeworICAgIGlmICgkaW50ZXJmYWNlTmFtZSBlcSAiTmFtZWROb2RlTWFwIiBv
ciAkaW50ZXJmYWNlTmFtZSA9fiAvXkhUTUxcdypDb2xsZWN0aW9uJC8pIHsKICAgICAgICAgcHVz
aChAZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ySW1wbCwgIiAgICAke25hbWVzcGFjZU1heWJlfUpT
VmFsdWUgcHJvdG8gPSB0aGlzT2JqZWN0LT5wcm90b3R5cGUoKTtcbiIpOwogICAgICAgICBwdXNo
KEBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JJbXBsLCAiICAgIGlmIChwcm90by5pc09iamVjdCgp
ICYmIGpzQ2FzdDwke25hbWVzcGFjZU1heWJlfUpTT2JqZWN0Kj4oYXNPYmplY3QocHJvdG8pKS0+
aGFzUHJvcGVydHkoZXhlYywgcHJvcGVydHlOYW1lKSlcbiIpOwogICAgICAgICBwdXNoKEBnZXRP
d25Qcm9wZXJ0eURlc2NyaXB0b3JJbXBsLCAiICAgICAgICByZXR1cm4gZmFsc2U7XG5cbiIpOwpA
QCAtMjQzNCw3ICsyNDM0LDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJldHVybiB0b0pTKGV4ZWMsIHRoaXNPYmotPmds
b2JhbE9iamVjdCgpLCBzdGF0aWNfY2FzdDwkaW1wbENsYXNzTmFtZSo+KHRoaXNPYmotPmltcGwo
KSktPml0ZW0oaW5kZXgpKTtcbiIpOwogICAgICAgICB9CiAgICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAifVxuXG4iKTsKLSAgICAgICAgaWYgKCRpbnRlcmZhY2VOYW1lIGVxICJIVE1MQ29sbGVj
dGlvbiIgb3IgJGludGVyZmFjZU5hbWUgZXEgIkhUTUxBbGxDb2xsZWN0aW9uIiBvciAkaW50ZXJm
YWNlTmFtZSBlcSAiUmFkaW9Ob2RlTGlzdCIpIHsKKyAgICAgICAgaWYgKCRpbnRlcmZhY2VOYW1l
ID1+IC9eSFRNTFx3KkNvbGxlY3Rpb24kLyBvciAkaW50ZXJmYWNlTmFtZSBlcSAiUmFkaW9Ob2Rl
TGlzdCIpIHsKICAgICAgICAgICAgICRpbXBsSW5jbHVkZXN7IkpTTm9kZS5oIn0gPSAxOwogICAg
ICAgICAgICAgJGltcGxJbmNsdWRlc3siTm9kZS5oIn0gPSAxOwogICAgICAgICB9CkBAIC0yNDUw
LDcgKzI0NTAsNyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJuIGpzTmFOKCk7XG4iKTsKICAgICAgICAgcHVzaChA
aW1wbENvbnRlbnQsICIgICAgcmV0dXJuIEpTVmFsdWUocmVzdWx0KTtcbiIpOwogICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIn1cblxuIik7Ci0gICAgICAgIGlmICgkaW50ZXJmYWNlTmFtZSBl
cSAiSFRNTENvbGxlY3Rpb24iIG9yICRpbnRlcmZhY2VOYW1lIGVxICJIVE1MQWxsQ29sbGVjdGlv
biIpIHsKKyAgICAgICAgaWYgKCRpbnRlcmZhY2VOYW1lID1+IC9eSFRNTFx3KkNvbGxlY3Rpb24k
LykgewogICAgICAgICAgICAgJGltcGxJbmNsdWRlc3siSlNOb2RlLmgifSA9IDE7CiAgICAgICAg
ICAgICAkaW1wbEluY2x1ZGVzeyJOb2RlLmgifSA9IDE7CiAgICAgICAgIH0KSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCShy
ZXZpc2lvbiAxMzM2ODcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVH
ZW5lcmF0b3JWOC5wbQkod29ya2luZyBjb3B5KQpAQCAtMjQ5NCwxMyArMjQ5NCw2IEBAIHN1YiBH
ZW5lcmF0ZUltcGxlbWVudGF0aW9uTmFtZWRQcm9wZXJ0eUcKICAgICBteSAkaW50ZXJmYWNlTmFt
ZSA9ICRkYXRhTm9kZS0+bmFtZTsKICAgICBteSAkaGFzQ3VzdG9tTmFtZWRHZXR0ZXIgPSAkZGF0
YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b21OYW1lZEdldHRlciJ9IHx8ICRkYXRh
Tm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbUdldE93blByb3BlcnR5U2xvdCJ9Owog
Ci0gICAgIyBGSVhNRTogUmVtb3ZlIGhhcmQtY29kZWQgSFRNTE9wdGlvbnNDb2xsZWN0aW9uIHJl
ZmVyZW5jZSBieSBjaGFuZ2luZyBIVE1MT3B0aW9uc0NvbGxlY3Rpb24gdG8gbm90IGluaGVyaXQK
LSAgICAjIGZyb20gSFRNTENvbGxlY3Rpb24gcGVyIFczQyBzcGVjIChodHRwOi8vd3d3LnczLm9y
Zy9UUi8yMDAzL1JFQy1ET00tTGV2ZWwtMi1IVE1MLTIwMDMwMTA5L2h0bWwuaHRtbCNIVE1MT3B0
aW9uc0NvbGxlY3Rpb24pLgotICAgIGlmICgkaW50ZXJmYWNlTmFtZSBlcSAiSFRNTE9wdGlvbnND
b2xsZWN0aW9uIikgewotICAgICAgICAkaW50ZXJmYWNlTmFtZSA9ICJIVE1MQ29sbGVjdGlvbiI7
Ci0gICAgICAgICRoYXNDdXN0b21OYW1lZEdldHRlciA9IDE7Ci0gICAgfQotCiAgICAgaWYgKCRp
bnRlcmZhY2VOYW1lIGVxICJIVE1MQXBwbGV0RWxlbWVudCIgfHwgJGludGVyZmFjZU5hbWUgZXEg
IkhUTUxFbWJlZEVsZW1lbnQiIHx8ICRpbnRlcmZhY2VOYW1lIGVxICJIVE1MT2JqZWN0RWxlbWVu
dCIpIHsKICAgICAgICAgJGhhc0N1c3RvbU5hbWVkR2V0dGVyID0gMTsKICAgICB9CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MQWxsQ29sbGVjdGlvbkN1c3Rv
bS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4
SFRNTEFsbENvbGxlY3Rpb25DdXN0b20uY3BwCShyZXZpc2lvbiAxMzM2ODcpCisrKyBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MQWxsQ29sbGVjdGlvbkN1c3RvbS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTQ2LDExICs0NiwxMyBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6
VmFsdWU+IGdldE5hbWVkSXRlCiAgICAgY29sbGVjdGlvbi0+bmFtZWRJdGVtcyhuYW1lLCBuYW1l
ZEl0ZW1zKTsKIAogICAgIGlmICghbmFtZWRJdGVtcy5zaXplKCkpCi0gICAgICAgIHJldHVybiB2
OFVuZGVmaW5lZCgpOworICAgICAgICByZXR1cm4gdjhVbmRlZmluZWQoaXNvbGF0ZSk7CiAKICAg
ICBpZiAobmFtZWRJdGVtcy5zaXplKCkgPT0gMSkKICAgICAgICAgcmV0dXJuIHRvVjgobmFtZWRJ
dGVtcy5hdCgwKS5yZWxlYXNlKCksIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7CiAKKyAgICAv
LyBGSVhNRTogSFRNTDUgc3BlY2lmaWNhdGlvbiBzYXlzIHRoaXMgc2hvdWxkIGJlIGEgSFRNTENv
bGxlY3Rpb24uCisgICAgLy8gaHR0cDovL3d3dy53aGF0d2cub3JnL3NwZWNzL3dlYi1hcHBzL2N1
cnJlbnQtd29yay9tdWx0aXBhZ2UvY29tbW9uLWRvbS1pbnRlcmZhY2VzLmh0bWwjaHRtbGFsbGNv
bGxlY3Rpb24KICAgICByZXR1cm4gdG9WOChWOE5hbWVkTm9kZXNDb2xsZWN0aW9uOjpjcmVhdGUo
bmFtZWRJdGVtcyksIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7CiB9CiAKQEAgLTYxLDcgKzYz
LDcgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBnZXRJdGVtKEhUTQogICAgICAgICB2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gcmVzdWx0ID0gZ2V0TmFtZWRJdGVtcyhjb2xsZWN0aW9uLCB0
b1dlYkNvcmVTdHJpbmcoYXJndW1lbnQtPlRvU3RyaW5nKCkpLCBjcmVhdGlvbkNvbnRleHQsIGlz
b2xhdGUpOwogCiAgICAgICAgIGlmIChyZXN1bHQuSXNFbXB0eSgpKQotICAgICAgICAgICAgcmV0
dXJuIHY4OjpVbmRlZmluZWQoKTsKKyAgICAgICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKGlz
b2xhdGUpOwogCiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQpAQCAtNzUsOSArNzcsOSBA
QCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhIVE1MQWxsQ29sbGVjdGlvCiAgICAgSU5DX1NUQVRT
KCJET00uSFRNTEFsbENvbGxlY3Rpb24uTmFtZWRQcm9wZXJ0eUdldHRlciIpOwogCiAgICAgaWYg
KCFpbmZvLkhvbGRlcigpLT5HZXRSZWFsTmFtZWRQcm9wZXJ0eUluUHJvdG90eXBlQ2hhaW4obmFt
ZSkuSXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gdjhVbmRlZmluZWQoKTsKKyAgICAgICAgcmV0
dXJuIHY4VW5kZWZpbmVkKGluZm8uR2V0SXNvbGF0ZSgpKTsKICAgICBpZiAoaW5mby5Ib2xkZXIo
KS0+SGFzUmVhbE5hbWVkQ2FsbGJhY2tQcm9wZXJ0eShuYW1lKSkKLSAgICAgICAgcmV0dXJuIHY4
VW5kZWZpbmVkKCk7CisgICAgICAgIHJldHVybiB2OFVuZGVmaW5lZChpbmZvLkdldElzb2xhdGUo
KSk7CiAKICAgICBIVE1MQWxsQ29sbGVjdGlvbiogaW1wID0gVjhIVE1MQWxsQ29sbGVjdGlvbjo6
dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CiAgICAgcmV0dXJuIGdldE5hbWVkSXRlbXMoaW1wLCB0
b1dlYkNvcmVBdG9taWNTdHJpbmcobmFtZSksIGluZm8uSG9sZGVyKCksIGluZm8uR2V0SXNvbGF0
ZSgpKTsKQEAgLTk3LDcgKzk5LDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SFRNTEFsbENv
bGxlY3RpbwogICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiByZXN1bHQgPSBnZXROYW1lZEl0ZW1z
KGltcCwgdG9XZWJDb3JlU3RyaW5nKGFyZ3NbMF0pLCBhcmdzLkhvbGRlcigpLCBhcmdzLkdldElz
b2xhdGUoKSk7CiAKICAgICBpZiAocmVzdWx0LklzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIHY4
OjpVbmRlZmluZWQoKTsKKyAgICAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoYXJncy5HZXRJc29s
YXRlKCkpOwogCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxDb2xsZWN0aW9uQ3VzdG9tLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MQ29sbGVjdGlvbkN1c3Rv
bS5jcHAJKHJldmlzaW9uIDEzMzY4NykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1
c3RvbS9WOEhUTUxDb2xsZWN0aW9uQ3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIsNTYg
KzMyLDI2IEBACiAjaW5jbHVkZSAiVjhIVE1MQ29sbGVjdGlvbi5oIgogCiAjaW5jbHVkZSAiSFRN
TENvbGxlY3Rpb24uaCIKLSNpbmNsdWRlICJSYWRpb05vZGVMaXN0LmgiCiAjaW5jbHVkZSAiVjhC
aW5kaW5nLmgiCiAjaW5jbHVkZSAiVjhIVE1MQWxsQ29sbGVjdGlvbi5oIgorI2luY2x1ZGUgIlY4
SFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uaCIKKyNpbmNsdWRlICJWOEhUTUxPcHRpb25zQ29s
bGVjdGlvbi5oIgogI2luY2x1ZGUgIlY4TmFtZWROb2Rlc0NvbGxlY3Rpb24uaCIKICNpbmNsdWRl
ICJWOE5vZGUuaCIKLSNpbmNsdWRlICJWOE5vZGVMaXN0LmgiCi0jaW5jbHVkZSAiVjhSYWRpb05v
ZGVMaXN0LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIHY4OjpIYW5kbGU8djg6
OlZhbHVlPiBnZXROYW1lZEl0ZW1zKEhUTUxDb2xsZWN0aW9uKiBjb2xsZWN0aW9uLCBBdG9taWNT
dHJpbmcgbmFtZSwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJ
c29sYXRlKiBpc29sYXRlKQotewotICAgIFZlY3RvcjxSZWZQdHI8Tm9kZT4gPiBuYW1lZEl0ZW1z
OwotICAgIGNvbGxlY3Rpb24tPm5hbWVkSXRlbXMobmFtZSwgbmFtZWRJdGVtcyk7Ci0KLSAgICBp
ZiAoIW5hbWVkSXRlbXMuc2l6ZSgpKQotICAgICAgICByZXR1cm4gdjhVbmRlZmluZWQoKTsKLQot
ICAgIGlmIChuYW1lZEl0ZW1zLnNpemUoKSA9PSAxKQotICAgICAgICByZXR1cm4gdG9WOChuYW1l
ZEl0ZW1zLmF0KDApLnJlbGVhc2UoKSwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsKLQotICAg
IGlmIChjb2xsZWN0aW9uLT50eXBlKCkgPT0gRm9ybUNvbnRyb2xzKQotICAgICAgICByZXR1cm4g
dG9WOChjb2xsZWN0aW9uLT5iYXNlKCktPnJhZGlvTm9kZUxpc3QobmFtZSkuZ2V0KCksIGNyZWF0
aW9uQ29udGV4dCwgaXNvbGF0ZSk7Ci0KLSAgICByZXR1cm4gdG9WOChWOE5hbWVkTm9kZXNDb2xs
ZWN0aW9uOjpjcmVhdGUobmFtZWRJdGVtcyksIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7Ci19
Ci0KIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEhUTUxDb2xsZWN0aW9uOjpuYW1lZFByb3BlcnR5
R2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZv
JiBpbmZvKQogewogICAgIElOQ19TVEFUUygiRE9NLkhUTUxDb2xsZWN0aW9uLk5hbWVkUHJvcGVy
dHlHZXR0ZXIiKTsKIAogICAgIGlmICghaW5mby5Ib2xkZXIoKS0+R2V0UmVhbE5hbWVkUHJvcGVy
dHlJblByb3RvdHlwZUNoYWluKG5hbWUpLklzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIHY4VW5k
ZWZpbmVkKCk7CisgICAgICAgIHJldHVybiB2OFVuZGVmaW5lZChpbmZvLkdldElzb2xhdGUoKSk7
CiAgICAgaWYgKGluZm8uSG9sZGVyKCktPkhhc1JlYWxOYW1lZENhbGxiYWNrUHJvcGVydHkobmFt
ZSkpCi0gICAgICAgIHJldHVybiB2OFVuZGVmaW5lZCgpOworICAgICAgICByZXR1cm4gdjhVbmRl
ZmluZWQoaW5mby5HZXRJc29sYXRlKCkpOwogCiAgICAgSFRNTENvbGxlY3Rpb24qIGltcCA9IFY4
SFRNTENvbGxlY3Rpb246OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwotICAgIHJldHVybiBnZXRO
YW1lZEl0ZW1zKGltcCwgdG9XZWJDb3JlQXRvbWljU3RyaW5nKG5hbWUpLCBpbmZvLkhvbGRlcigp
LCBpbmZvLkdldElzb2xhdGUoKSk7Ci19Ci0KLXY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEhUTUxD
b2xsZWN0aW9uOjpuYW1lZEl0ZW1DYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQot
ewotICAgIElOQ19TVEFUUygiRE9NLkhUTUxDb2xsZWN0aW9uLm5hbWVkSXRlbSgpIik7Ci0gICAg
SFRNTENvbGxlY3Rpb24qIGltcCA9IFY4SFRNTENvbGxlY3Rpb246OnRvTmF0aXZlKGFyZ3MuSG9s
ZGVyKCkpOwotICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiByZXN1bHQgPSBnZXROYW1lZEl0ZW1z
KGltcCwgdG9XZWJDb3JlU3RyaW5nKGFyZ3NbMF0pLCBhcmdzLkhvbGRlcigpLCBhcmdzLkdldElz
b2xhdGUoKSk7Ci0KLSAgICBpZiAocmVzdWx0LklzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIHY4
OjpVbmRlZmluZWQoKTsKLQotICAgIHJldHVybiByZXN1bHQ7CisgICAgcmV0dXJuIHRvVjgoaW1w
LT5uYW1lZEl0ZW0odG9XZWJDb3JlQXRvbWljU3RyaW5nKG5hbWUpKSwgaW5mby5Ib2xkZXIoKSwg
aW5mby5HZXRJc29sYXRlKCkpOwogfQogCiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOChIVE1M
Q29sbGVjdGlvbiogaW1wbCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQs
IHY4OjpJc29sYXRlKiBpc29sYXRlKQpAQCAtODksOCArNTksMTcgQEAgdjg6OkhhbmRsZTx2ODo6
VmFsdWU+IHRvVjgoSFRNTENvbGxlY3RpbwogICAgIGlmICghaW1wbCkKICAgICAgICAgcmV0dXJu
IHY4TnVsbFdpdGhDaGVjayhpc29sYXRlKTsKIAotICAgIGlmIChpbXBsLT50eXBlKCkgPT0gRG9j
QWxsKQorICAgIHN3aXRjaCAoaW1wbC0+dHlwZSgpKSB7CisgICAgY2FzZSBGb3JtQ29udHJvbHM6
CisgICAgICAgIHJldHVybiB0b1Y4KHN0YXRpY19jYXN0PEhUTUxGb3JtQ29udHJvbHNDb2xsZWN0
aW9uKj4oaW1wbCksIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7CisgICAgY2FzZSBTZWxlY3RP
cHRpb25zOgorICAgICAgICByZXR1cm4gdG9WOChzdGF0aWNfY2FzdDxIVE1MT3B0aW9uc0NvbGxl
Y3Rpb24qPihpbXBsKSwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsKKyAgICBjYXNlIERvY0Fs
bDoKICAgICAgICAgcmV0dXJuIHRvVjgoc3RhdGljX2Nhc3Q8SFRNTEFsbENvbGxlY3Rpb24qPihp
bXBsKSwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsKKyAgICBkZWZhdWx0OgorICAgICAgICBi
cmVhazsKKyAgICB9CisKICAgICByZXR1cm4gVjhIVE1MQ29sbGVjdGlvbjo6d3JhcChpbXBsLCBj
cmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9jdXN0b20vVjhIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbkN1c3RvbS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTEZvcm1D
b250cm9sc0NvbGxlY3Rpb25DdXN0b20uY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb25DdXN0b20u
Y3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDgxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICogCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICog
ICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0
cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24uCisgKiAKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisg
KiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIlY4SFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uaCIKKworI2luY2x1ZGUgIkhU
TUxDb2xsZWN0aW9uLmgiCisjaW5jbHVkZSAiUmFkaW9Ob2RlTGlzdC5oIgorI2luY2x1ZGUgIlY4
QmluZGluZy5oIgorI2luY2x1ZGUgIlY4Tm9kZS5oIgorI2luY2x1ZGUgIlY4UmFkaW9Ob2RlTGlz
dC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gZ2V0TmFtZWRJdGVtcyhIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbiogY29sbGVjdGlvbiwg
QXRvbWljU3RyaW5nIG5hbWUsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0
LCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKK3sKKyAgICBWZWN0b3I8UmVmUHRyPE5vZGU+ID4gbmFt
ZWRJdGVtczsKKyAgICBjb2xsZWN0aW9uLT5uYW1lZEl0ZW1zKG5hbWUsIG5hbWVkSXRlbXMpOwor
CisgICAgaWYgKCFuYW1lZEl0ZW1zLnNpemUoKSkKKyAgICAgICAgcmV0dXJuIHY4VW5kZWZpbmVk
KGlzb2xhdGUpOworCisgICAgaWYgKG5hbWVkSXRlbXMuc2l6ZSgpID09IDEpCisgICAgICAgIHJl
dHVybiB0b1Y4KG5hbWVkSXRlbXMuYXQoMCkucmVsZWFzZSgpLCBjcmVhdGlvbkNvbnRleHQsIGlz
b2xhdGUpOworCisgICAgcmV0dXJuIHRvVjgoY29sbGVjdGlvbi0+YmFzZSgpLT5yYWRpb05vZGVM
aXN0KG5hbWUpLmdldCgpLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOworfQorCit2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gVjhIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbjo6bmFtZWRQcm9wZXJ0
eUdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5m
byYgaW5mbykKK3sKKyAgICBJTkNfU1RBVFMoIkRPTS5IVE1MQ29sbGVjdGlvbi5OYW1lZFByb3Bl
cnR5R2V0dGVyIik7CisKKyAgICBpZiAoIWluZm8uSG9sZGVyKCktPkdldFJlYWxOYW1lZFByb3Bl
cnR5SW5Qcm90b3R5cGVDaGFpbihuYW1lKS5Jc0VtcHR5KCkpCisgICAgICAgIHJldHVybiB2OFVu
ZGVmaW5lZChpbmZvLkdldElzb2xhdGUoKSk7CisgICAgaWYgKGluZm8uSG9sZGVyKCktPkhhc1Jl
YWxOYW1lZENhbGxiYWNrUHJvcGVydHkobmFtZSkpCisgICAgICAgIHJldHVybiB2OFVuZGVmaW5l
ZChpbmZvLkdldElzb2xhdGUoKSk7CisKKyAgICBIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbiog
aW1wID0gVjhIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbjo6dG9OYXRpdmUoaW5mby5Ib2xkZXIo
KSk7CisgICAgcmV0dXJuIGdldE5hbWVkSXRlbXMoaW1wLCB0b1dlYkNvcmVBdG9taWNTdHJpbmco
bmFtZSksIGluZm8uSG9sZGVyKCksIGluZm8uR2V0SXNvbGF0ZSgpKTsKK30KKwordjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IFY4SFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb246Om5hbWVkSXRlbUNhbGxi
YWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCit7CisgICAgSU5DX1NUQVRTKCJET00uSFRN
TENvbGxlY3Rpb24ubmFtZWRJdGVtKCkiKTsKKyAgICBIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlv
biogaW1wID0gVjhIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbjo6dG9OYXRpdmUoYXJncy5Ib2xk
ZXIoKSk7CisgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHJlc3VsdCA9IGdldE5hbWVkSXRlbXMo
aW1wLCB0b1dlYkNvcmVTdHJpbmcoYXJnc1swXSksIGFyZ3MuSG9sZGVyKCksIGFyZ3MuR2V0SXNv
bGF0ZSgpKTsKKworICAgIGlmIChyZXN1bHQuSXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gdjg6
OlVuZGVmaW5lZChhcmdzLkdldElzb2xhdGUoKSk7CisKKyAgICByZXR1cm4gcmVzdWx0OworfQor
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9jdXN0b20vVjhIVE1MT3B0aW9uc0NvbGxlY3Rpb25DdXN0b20uY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxPcHRpb25zQ29sbGVjdGlv
bkN1c3RvbS5jcHAJKHJldmlzaW9uIDEzMzY4NykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L2N1c3RvbS9WOEhUTUxPcHRpb25zQ29sbGVjdGlvbkN1c3RvbS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTM5LDEwICszOSw1MSBAQAogI2luY2x1ZGUgIlY4Q29sbGVjdGlvbi5oIgogI2luY2x1
ZGUgIlY4SFRNTE9wdGlvbkVsZW1lbnQuaCIKICNpbmNsdWRlICJWOEhUTUxTZWxlY3RFbGVtZW50
Q3VzdG9tLmgiCisjaW5jbHVkZSAiVjhOYW1lZE5vZGVzQ29sbGVjdGlvbi5oIgogI2luY2x1ZGUg
IlY4Tm9kZS5oIgorI2luY2x1ZGUgIlY4Tm9kZUxpc3QuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGdldE5hbWVkSXRlbXMoSFRNTE9wdGlv
bnNDb2xsZWN0aW9uKiBjb2xsZWN0aW9uLCBBdG9taWNTdHJpbmcgbmFtZSwgdjg6OkhhbmRsZTx2
ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJc29sYXRlKiBpc29sYXRlKQoreworICAg
IFZlY3RvcjxSZWZQdHI8Tm9kZT4gPiBuYW1lZEl0ZW1zOworICAgIGNvbGxlY3Rpb24tPm5hbWVk
SXRlbXMobmFtZSwgbmFtZWRJdGVtcyk7CisKKyAgICBpZiAoIW5hbWVkSXRlbXMuc2l6ZSgpKQor
ICAgICAgICByZXR1cm4gdjhVbmRlZmluZWQoaXNvbGF0ZSk7CisKKyAgICBpZiAobmFtZWRJdGVt
cy5zaXplKCkgPT0gMSkKKyAgICAgICAgcmV0dXJuIHRvVjgobmFtZWRJdGVtcy5hdCgwKS5yZWxl
YXNlKCksIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7CisKKyAgICByZXR1cm4gdG9WOChWOE5h
bWVkTm9kZXNDb2xsZWN0aW9uOjpjcmVhdGUobmFtZWRJdGVtcyksIGNyZWF0aW9uQ29udGV4dCwg
aXNvbGF0ZSk7Cit9CisKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEhUTUxPcHRpb25zQ29sbGVj
dGlvbjo6bmFtZWRQcm9wZXJ0eUdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29u
c3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICBJTkNfU1RBVFMoIkRPTS5IVE1MQ29s
bGVjdGlvbi5OYW1lZFByb3BlcnR5R2V0dGVyIik7CisKKyAgICBpZiAoIWluZm8uSG9sZGVyKCkt
PkdldFJlYWxOYW1lZFByb3BlcnR5SW5Qcm90b3R5cGVDaGFpbihuYW1lKS5Jc0VtcHR5KCkpCisg
ICAgICAgIHJldHVybiB2OFVuZGVmaW5lZChpbmZvLkdldElzb2xhdGUoKSk7CisgICAgaWYgKGlu
Zm8uSG9sZGVyKCktPkhhc1JlYWxOYW1lZENhbGxiYWNrUHJvcGVydHkobmFtZSkpCisgICAgICAg
IHJldHVybiB2OFVuZGVmaW5lZChpbmZvLkdldElzb2xhdGUoKSk7CisKKyAgICBIVE1MT3B0aW9u
c0NvbGxlY3Rpb24qIGltcCA9IFY4SFRNTE9wdGlvbnNDb2xsZWN0aW9uOjp0b05hdGl2ZShpbmZv
LkhvbGRlcigpKTsKKyAgICByZXR1cm4gZ2V0TmFtZWRJdGVtcyhpbXAsIHRvV2ViQ29yZUF0b21p
Y1N0cmluZyhuYW1lKSwgaW5mby5Ib2xkZXIoKSwgaW5mby5HZXRJc29sYXRlKCkpOworfQorCit2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhIVE1MT3B0aW9uc0NvbGxlY3Rpb246Om5hbWVkSXRlbUNh
bGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCit7CisgICAgSU5DX1NUQVRTKCJET00u
SFRNTENvbGxlY3Rpb24ubmFtZWRJdGVtKCkiKTsKKyAgICBIVE1MT3B0aW9uc0NvbGxlY3Rpb24q
IGltcCA9IFY4SFRNTE9wdGlvbnNDb2xsZWN0aW9uOjp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsK
KyAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gcmVzdWx0ID0gZ2V0TmFtZWRJdGVtcyhpbXAsIHRv
V2ViQ29yZVN0cmluZyhhcmdzWzBdKSwgYXJncy5Ib2xkZXIoKSwgYXJncy5HZXRJc29sYXRlKCkp
OworCisgICAgaWYgKHJlc3VsdC5Jc0VtcHR5KCkpCisgICAgICAgIHJldHVybiB2ODo6VW5kZWZp
bmVkKGFyZ3MuR2V0SXNvbGF0ZSgpKTsKKworICAgIHJldHVybiByZXN1bHQ7Cit9CisKIHY4OjpI
YW5kbGU8djg6OlZhbHVlPiBWOEhUTUxPcHRpb25zQ29sbGVjdGlvbjo6cmVtb3ZlQ2FsbGJhY2so
Y29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBJTkNfU1RBVFMoIkRPTS5IVE1MT3B0
aW9uc0NvbGxlY3Rpb24ucmVtb3ZlKCkiKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAko
cmV2aXNpb24gMTMzNjg3KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNDQ1MCwxMSArNDQ1MCw2IEBAIFBhc3NSZWZQdHI8SFRNTENvbGxlY3Rp
b24+IERvY3VtZW50OjpwbHUKICAgICByZXR1cm4gY2FjaGVkQ29sbGVjdGlvbihEb2NFbWJlZHMp
OwogfQogCi1QYXNzUmVmUHRyPEhUTUxDb2xsZWN0aW9uPiBEb2N1bWVudDo6b2JqZWN0cygpCi17
Ci0gICAgcmV0dXJuIGNhY2hlZENvbGxlY3Rpb24oRG9jT2JqZWN0cyk7Ci19Ci0KIFBhc3NSZWZQ
dHI8SFRNTENvbGxlY3Rpb24+IERvY3VtZW50OjpzY3JpcHRzKCkKIHsKICAgICByZXR1cm4gY2Fj
aGVkQ29sbGVjdGlvbihEb2NTY3JpcHRzKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCShyZXZp
c2lvbiAxMzM2ODcpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAkod29ya2luZyBj
b3B5KQpAQCAtNDM4LDcgKzQzOCw2IEBAIHB1YmxpYzoKICAgICBQYXNzUmVmUHRyPEhUTUxDb2xs
ZWN0aW9uPiBsaW5rcygpOwogICAgIFBhc3NSZWZQdHI8SFRNTENvbGxlY3Rpb24+IGZvcm1zKCk7
CiAgICAgUGFzc1JlZlB0cjxIVE1MQ29sbGVjdGlvbj4gYW5jaG9ycygpOwotICAgIFBhc3NSZWZQ
dHI8SFRNTENvbGxlY3Rpb24+IG9iamVjdHMoKTsKICAgICBQYXNzUmVmUHRyPEhUTUxDb2xsZWN0
aW9uPiBzY3JpcHRzKCk7CiAgICAgUGFzc1JlZlB0cjxIVE1MQ29sbGVjdGlvbj4gYWxsKCk7CiAg
ICAgdm9pZCByZW1vdmVDYWNoZWRIVE1MQ29sbGVjdGlvbihIVE1MQ29sbGVjdGlvbiosIENvbGxl
Y3Rpb25UeXBlKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAJKHJldmlzaW9uIDEzMzY4NykK
KysrIFNvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDYs
NyArNDYsNyBAQAogI2luY2x1ZGUgIkhUTUxDb2xsZWN0aW9uLmgiCiAjaW5jbHVkZSAiSFRNTERv
Y3VtZW50LmgiCiAjaW5jbHVkZSAiSFRNTEVsZW1lbnQuaCIKLSNpbmNsdWRlICJIVE1MRm9ybUNv
bGxlY3Rpb24uaCIKKyNpbmNsdWRlICJIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5oIgogI2lu
Y2x1ZGUgIkhUTUxGcmFtZU93bmVyRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxMYWJlbEVsZW1l
bnQuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKQEAgLTIzNDgsNyArMjM0OCw3IEBAIFBhc3NS
ZWZQdHI8SFRNTENvbGxlY3Rpb24+IEVsZW1lbnRSYXJlRGEKICAgICAgICAgY29sbGVjdGlvbiA9
IEhUTUxPcHRpb25zQ29sbGVjdGlvbjo6Y3JlYXRlKGVsZW1lbnQpOwogICAgIH0gZWxzZSBpZiAo
dHlwZSA9PSBGb3JtQ29udHJvbHMpIHsKICAgICAgICAgQVNTRVJUKGVsZW1lbnQtPmhhc1RhZ05h
bWUoZm9ybVRhZykgfHwgZWxlbWVudC0+aGFzVGFnTmFtZShmaWVsZHNldFRhZykpOwotICAgICAg
ICBjb2xsZWN0aW9uID0gSFRNTEZvcm1Db2xsZWN0aW9uOjpjcmVhdGUoZWxlbWVudCk7CisgICAg
ICAgIGNvbGxlY3Rpb24gPSBIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbjo6Y3JlYXRlKGVsZW1l
bnQpOwogI2lmIEVOQUJMRShNSUNST0RBVEEpCiAgICAgfSBlbHNlIGlmICh0eXBlID09IEl0ZW1Q
cm9wZXJ0aWVzKSB7CiAgICAgICAgIGNvbGxlY3Rpb24gPSBIVE1MUHJvcGVydGllc0NvbGxlY3Rp
b246OmNyZWF0ZShlbGVtZW50KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvQ29sbGVjdGlv
blR5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0NvbGxlY3Rpb25UeXBl
LmgJKHJldmlzaW9uIDEzMzY4NykKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvQ29sbGVjdGlvblR5
cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzEsNyArMzEsNiBAQCBlbnVtIENvbGxlY3Rpb25UeXBl
IHsKICAgICBEb2NJbWFnZXMsICAgIC8vIGFsbCA8aW1nPiBlbGVtZW50cyBpbiB0aGUgZG9jdW1l
bnQKICAgICBEb2NBcHBsZXRzLCAgIC8vIGFsbCA8b2JqZWN0PiBhbmQgPGFwcGxldD4gZWxlbWVu
dHMKICAgICBEb2NFbWJlZHMsICAgIC8vIGFsbCA8ZW1iZWQ+IGVsZW1lbnRzCi0gICAgRG9jT2Jq
ZWN0cywgICAvLyBhbGwgPG9iamVjdD4gZWxlbWVudHMKICAgICBEb2NGb3JtcywgICAgIC8vIGFs
bCA8Zm9ybT4gZWxlbWVudHMKICAgICBEb2NMaW5rcywgICAgIC8vIGFsbCA8YT4gX2FuZF8gPGFy
ZWE+IGVsZW1lbnRzIHdpdGggYSB2YWx1ZSBmb3IgaHJlZgogICAgIERvY0FuY2hvcnMsICAgLy8g
YWxsIDxhPiBlbGVtZW50cyB3aXRoIGEgdmFsdWUgZm9yIG5hbWUKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTENvbGxlY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTENvbGxlY3Rpb24uY3BwCShyZXZpc2lvbiAxMzM2ODcpCisrKyBTb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxDb2xsZWN0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTEsNyArNTEs
NiBAQCBzdGF0aWMgYm9vbCBzaG91bGRPbmx5SW5jbHVkZURpcmVjdENoaWxkCiAgICAgY2FzZSBE
b2NGb3JtczoKICAgICBjYXNlIERvY0ltYWdlczoKICAgICBjYXNlIERvY0xpbmtzOgotICAgIGNh
c2UgRG9jT2JqZWN0czoKICAgICBjYXNlIERvY1NjcmlwdHM6CiAgICAgY2FzZSBEb2N1bWVudE5h
bWVkSXRlbXM6CiAgICAgY2FzZSBNYXBBcmVhczoKQEAgLTgzLDcgKzgyLDYgQEAgc3RhdGljIE5v
ZGVMaXN0Um9vdFR5cGUgcm9vdFR5cGVGcm9tQ29sbAogICAgIGNhc2UgRG9jSW1hZ2VzOgogICAg
IGNhc2UgRG9jQXBwbGV0czoKICAgICBjYXNlIERvY0VtYmVkczoKLSAgICBjYXNlIERvY09iamVj
dHM6CiAgICAgY2FzZSBEb2NGb3JtczoKICAgICBjYXNlIERvY0xpbmtzOgogICAgIGNhc2UgRG9j
QW5jaG9yczoKQEAgLTExNyw3ICsxMTUsNiBAQCBzdGF0aWMgTm9kZUxpc3RJbnZhbGlkYXRpb25U
eXBlIGludmFsaWRhCiAgICAgc3dpdGNoICh0eXBlKSB7CiAgICAgY2FzZSBEb2NJbWFnZXM6CiAg
ICAgY2FzZSBEb2NFbWJlZHM6Ci0gICAgY2FzZSBEb2NPYmplY3RzOgogICAgIGNhc2UgRG9jRm9y
bXM6CiAgICAgY2FzZSBEb2NBbmNob3JzOiAvLyBEZXBlbmRzIG9uIG5hbWUgYXR0cmlidXRlLgog
ICAgIGNhc2UgRG9jU2NyaXB0czoKQEAgLTIxNCw4ICsyMTEsNiBAQCBzdGF0aWMgaW5saW5lIGJv
b2wgaXNBY2NlcHRhYmxlRWxlbWVudChDCiAgICAgICAgIHJldHVybiBlbGVtZW50LT5oYXNMb2Nh
bE5hbWUoYXBwbGV0VGFnKSB8fCAoZWxlbWVudC0+aGFzTG9jYWxOYW1lKG9iamVjdFRhZykgJiYg
c3RhdGljX2Nhc3Q8SFRNTE9iamVjdEVsZW1lbnQqPihlbGVtZW50KS0+Y29udGFpbnNKYXZhQXBw
bGV0KCkpOwogICAgIGNhc2UgRG9jRW1iZWRzOgogICAgICAgICByZXR1cm4gZWxlbWVudC0+aGFz
TG9jYWxOYW1lKGVtYmVkVGFnKTsKLSAgICBjYXNlIERvY09iamVjdHM6Ci0gICAgICAgIHJldHVy
biBlbGVtZW50LT5oYXNMb2NhbE5hbWUob2JqZWN0VGFnKTsKICAgICBjYXNlIERvY0xpbmtzOgog
ICAgICAgICByZXR1cm4gKGVsZW1lbnQtPmhhc0xvY2FsTmFtZShhVGFnKSB8fCBlbGVtZW50LT5o
YXNMb2NhbE5hbWUoYXJlYVRhZykpICYmIGVsZW1lbnQtPmZhc3RIYXNBdHRyaWJ1dGUoaHJlZkF0
dHIpOwogICAgIGNhc2UgRG9jQW5jaG9yczoKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TENvbGxlY3Rpb24uaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENv
bGxlY3Rpb24uaWRsCShyZXZpc2lvbiAxMzM2ODcpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxDb2xsZWN0aW9uLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjgsNyArMjgsNyBAQAogXSBpbnRl
cmZhY2UgSFRNTENvbGxlY3Rpb24gewogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBs
b25nIGxlbmd0aDsKICAgICBOb2RlIGl0ZW0oaW4gW09wdGlvbmFsPURlZmF1bHRJc1VuZGVmaW5l
ZF0gdW5zaWduZWQgbG9uZyBpbmRleCk7Ci0gICAgW0N1c3RvbV0gTm9kZSBuYW1lZEl0ZW0oaW4g
W09wdGlvbmFsPURlZmF1bHRJc1VuZGVmaW5lZF0gRE9NU3RyaW5nIG5hbWUpOworICAgIE5vZGUg
bmFtZWRJdGVtKGluIFtPcHRpb25hbD1EZWZhdWx0SXNVbmRlZmluZWRdIERPTVN0cmluZyBuYW1l
KTsKIAogI2lmIGRlZmluZWQoTEFOR1VBR0VfT0JKRUNUSVZFX0MpICYmIExBTkdVQUdFX09CSkVD
VElWRV9DCiAgICAgTm9kZUxpc3QgdGFncyhpbiBbT3B0aW9uYWw9RGVmYXVsdElzVW5kZWZpbmVk
XSBET01TdHJpbmcgbmFtZSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGaWVsZFNl
dEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZpZWxk
U2V0RWxlbWVudC5jcHAJKHJldmlzaW9uIDEzMzY4NykKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEZpZWxkU2V0RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1LDcgKzI1LDcgQEAK
ICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJIVE1MRmllbGRTZXRFbGVtZW50LmgiCiAK
LSNpbmNsdWRlICJIVE1MRm9ybUNvbGxlY3Rpb24uaCIKKyNpbmNsdWRlICJIVE1MQ29sbGVjdGlv
bi5oIgogI2luY2x1ZGUgIkhUTUxMZWdlbmRFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVz
LmgiCiAjaW5jbHVkZSAiSFRNTE9iamVjdEVsZW1lbnQuaCIKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEZpZWxkU2V0RWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEZpZWxkU2V0RWxlbWVudC5oCShyZXZpc2lvbiAxMzM2ODcpCisrKyBTb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxGaWVsZFNldEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzEs
NyArMzEsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEZvcm1Bc3NvY2lhdGVkRWxl
bWVudDsKIGNsYXNzIEhUTUxDb2xsZWN0aW9uOwotY2xhc3MgSFRNTEZvcm1Db2xsZWN0aW9uOwog
CiBjbGFzcyBIVE1MRmllbGRTZXRFbGVtZW50IDogcHVibGljIEhUTUxGb3JtQ29udHJvbEVsZW1l
bnQgewogcHVibGljOgpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbGxlY3Rp
b24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db2xsZWN0
aW9uLmNwcAkocmV2aXNpb24gMTMzNjg3KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9y
bUNvbGxlY3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDE2MyArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAxOTk5IExhcnMgS25vbGwgKGtub2xsQGtkZS5vcmcpCi0gKiAgICAgICAg
ICAgKEMpIDE5OTkgQW50dGkgS29pdmlzdG8gKGtvaXZpc3RvQGtkZS5vcmcpCi0gKiBDb3B5cmln
aHQgKEMpIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMTAsIDIwMTEsIDIwMTIgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBmcmVl
IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqIG1vZGlmeSBpdCB1
bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiBMaWNl
bnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIK
LSAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0
ZXIgdmVyc2lvbi4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv
cGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsg
d2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkg
b3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogTGli
cmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogWW91
IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZQotICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBD
T1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gKiBCb3N0b24s
IE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2lu
Y2x1ZGUgIkhUTUxGb3JtQ29sbGVjdGlvbi5oIgotCi0jaW5jbHVkZSAiSFRNTEZpZWxkU2V0RWxl
bWVudC5oIgotI2luY2x1ZGUgIkhUTUxGb3JtQ29udHJvbEVsZW1lbnQuaCIKLSNpbmNsdWRlICJI
VE1MRm9ybUVsZW1lbnQuaCIKLSNpbmNsdWRlICJIVE1MSW1hZ2VFbGVtZW50LmgiCi0jaW5jbHVk
ZSAiSFRNTE5hbWVzLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotdXNpbmcgbmFtZXNwYWNl
IEhUTUxOYW1lczsKLQotLy8gU2luY2UgdGhlIGNvbGxlY3Rpb25zIGFyZSB0byBiZSAibGl2ZSIs
IHdlIGhhdmUgdG8gZG8gdGhlCi0vLyBjYWxjdWxhdGlvbiBldmVyeSB0aW1lIGlmIGFueXRoaW5n
IGhhcyBjaGFuZ2VkLgotCi1IVE1MRm9ybUNvbGxlY3Rpb246OkhUTUxGb3JtQ29sbGVjdGlvbihF
bGVtZW50KiBiYXNlKQotICAgIDogSFRNTENvbGxlY3Rpb24oYmFzZSwgRm9ybUNvbnRyb2xzLCBP
dmVycmlkZXNJdGVtQWZ0ZXIpCi17Ci0gICAgQVNTRVJUKGJhc2UtPmhhc1RhZ05hbWUoZm9ybVRh
ZykgfHwgYmFzZS0+aGFzVGFnTmFtZShmaWVsZHNldFRhZykpOwotfQotCi1QYXNzUmVmUHRyPEhU
TUxGb3JtQ29sbGVjdGlvbj4gSFRNTEZvcm1Db2xsZWN0aW9uOjpjcmVhdGUoRWxlbWVudCogYmFz
ZSkKLXsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IEhUTUxGb3JtQ29sbGVjdGlvbihiYXNlKSk7
Ci19Ci0KLUhUTUxGb3JtQ29sbGVjdGlvbjo6fkhUTUxGb3JtQ29sbGVjdGlvbigpCi17Ci19Ci0K
LWNvbnN0IFZlY3RvcjxGb3JtQXNzb2NpYXRlZEVsZW1lbnQqPiYgSFRNTEZvcm1Db2xsZWN0aW9u
Ojpmb3JtQ29udHJvbEVsZW1lbnRzKCkgY29uc3QKLXsKLSAgICBBU1NFUlQoYmFzZSgpKTsKLSAg
ICBBU1NFUlQoYmFzZSgpLT5oYXNUYWdOYW1lKGZvcm1UYWcpIHx8IGJhc2UoKS0+aGFzVGFnTmFt
ZShmaWVsZHNldFRhZykpOwotICAgIGlmIChiYXNlKCktPmhhc1RhZ05hbWUoZm9ybVRhZykpCi0g
ICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxIVE1MRm9ybUVsZW1lbnQqPihiYXNlKCkpLT5hc3Nv
Y2lhdGVkRWxlbWVudHMoKTsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SFRNTEZpZWxkU2V0RWxl
bWVudCo+KGJhc2UoKSktPmFzc29jaWF0ZWRFbGVtZW50cygpOwotfQotCi1jb25zdCBWZWN0b3I8
SFRNTEltYWdlRWxlbWVudCo+JiBIVE1MRm9ybUNvbGxlY3Rpb246OmZvcm1JbWFnZUVsZW1lbnRz
KCkgY29uc3QKLXsKLSAgICBBU1NFUlQoYmFzZSgpKTsKLSAgICBBU1NFUlQoYmFzZSgpLT5oYXNU
YWdOYW1lKGZvcm1UYWcpKTsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SFRNTEZvcm1FbGVtZW50
Kj4oYmFzZSgpKS0+aW1hZ2VFbGVtZW50cygpOwotfQotCi1FbGVtZW50KiBIVE1MRm9ybUNvbGxl
Y3Rpb246OnZpcnR1YWxJdGVtQWZ0ZXIodW5zaWduZWQmIG9mZnNldCwgRWxlbWVudCogcHJldmlv
dXNJdGVtKSBjb25zdAotewotICAgIGNvbnN0IFZlY3RvcjxGb3JtQXNzb2NpYXRlZEVsZW1lbnQq
PiYgZWxlbWVudHNBcnJheSA9IGZvcm1Db250cm9sRWxlbWVudHMoKTsKLSAgICBpZiAocHJldmlv
dXNJdGVtKQotICAgICAgICBvZmZzZXQrKzsKLSAgICB3aGlsZSAob2Zmc2V0IDwgZWxlbWVudHNB
cnJheS5zaXplKCkpIHsKLSAgICAgICAgRm9ybUFzc29jaWF0ZWRFbGVtZW50KiBlbGVtZW50ID0g
ZWxlbWVudHNBcnJheVtvZmZzZXRdOwotICAgICAgICBpZiAoZWxlbWVudC0+aXNFbnVtZXJhdGFi
bGUoKSkKLSAgICAgICAgICAgIHJldHVybiB0b0hUTUxFbGVtZW50KGVsZW1lbnQpOwotICAgICAg
ICBvZmZzZXQrKzsKLSAgICB9Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLXN0YXRpYyBIVE1MRWxlbWVu
dCogZmlyc3ROYW1lZEl0ZW0oY29uc3QgVmVjdG9yPEZvcm1Bc3NvY2lhdGVkRWxlbWVudCo+JiBl
bGVtZW50c0FycmF5LAotICAgIGNvbnN0IFZlY3RvcjxIVE1MSW1hZ2VFbGVtZW50Kj4qIGltYWdl
RWxlbWVudHNBcnJheSwgY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUsIGNvbnN0IFN0cmlu
ZyYgbmFtZSkKLXsKLSAgICBBU1NFUlQoYXR0ck5hbWUgPT0gaWRBdHRyIHx8IGF0dHJOYW1lID09
IG5hbWVBdHRyKTsKLQotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBlbGVtZW50c0FycmF5
LnNpemUoKTsgKytpKSB7Ci0gICAgICAgIEhUTUxFbGVtZW50KiBlbGVtZW50ID0gdG9IVE1MRWxl
bWVudChlbGVtZW50c0FycmF5W2ldKTsKLSAgICAgICAgaWYgKGVsZW1lbnRzQXJyYXlbaV0tPmlz
RW51bWVyYXRhYmxlKCkgJiYgZWxlbWVudC0+ZmFzdEdldEF0dHJpYnV0ZShhdHRyTmFtZSkgPT0g
bmFtZSkKLSAgICAgICAgICAgIHJldHVybiBlbGVtZW50OwotICAgIH0KLQotICAgIGlmICghaW1h
Z2VFbGVtZW50c0FycmF5KQotICAgICAgICByZXR1cm4gMDsKLQotICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBpbWFnZUVsZW1lbnRzQXJyYXktPnNpemUoKTsgKytpKSB7Ci0gICAgICAgIEhU
TUxJbWFnZUVsZW1lbnQqIGVsZW1lbnQgPSAoKmltYWdlRWxlbWVudHNBcnJheSlbaV07Ci0gICAg
ICAgIGlmIChlbGVtZW50LT5mYXN0R2V0QXR0cmlidXRlKGF0dHJOYW1lKSA9PSBuYW1lKQotICAg
ICAgICAgICAgcmV0dXJuIGVsZW1lbnQ7Ci0gICAgfQotCi0gICAgcmV0dXJuIDA7Ci19Ci0KLU5v
ZGUqIEhUTUxGb3JtQ29sbGVjdGlvbjo6bmFtZWRJdGVtKGNvbnN0IEF0b21pY1N0cmluZyYgbmFt
ZSkgY29uc3QKLXsKLSAgICAvLyBodHRwOi8vbXNkbi5taWNyb3NvZnQuY29tL3dvcmtzaG9wL2F1
dGhvci9kaHRtbC9yZWZlcmVuY2UvbWV0aG9kcy9uYW1lZGl0ZW0uYXNwCi0gICAgLy8gVGhpcyBt
ZXRob2QgZmlyc3Qgc2VhcmNoZXMgZm9yIGFuIG9iamVjdCB3aXRoIGEgbWF0Y2hpbmcgaWQKLSAg
ICAvLyBhdHRyaWJ1dGUuIElmIGEgbWF0Y2ggaXMgbm90IGZvdW5kLCB0aGUgbWV0aG9kIHRoZW4g
c2VhcmNoZXMgZm9yIGFuCi0gICAgLy8gb2JqZWN0IHdpdGggYSBtYXRjaGluZyBuYW1lIGF0dHJp
YnV0ZSwgYnV0IG9ubHkgb24gdGhvc2UgZWxlbWVudHMKLSAgICAvLyB0aGF0IGFyZSBhbGxvd2Vk
IGEgbmFtZSBhdHRyaWJ1dGUuCi0gICAgY29uc3QgVmVjdG9yPEhUTUxJbWFnZUVsZW1lbnQqPiog
aW1hZ2VzRWxlbWVudHMgPSBiYXNlKCktPmhhc1RhZ05hbWUoZmllbGRzZXRUYWcpID8gMCA6ICZm
b3JtSW1hZ2VFbGVtZW50cygpOwotICAgIGlmIChIVE1MRWxlbWVudCogaXRlbSA9IGZpcnN0TmFt
ZWRJdGVtKGZvcm1Db250cm9sRWxlbWVudHMoKSwgaW1hZ2VzRWxlbWVudHMsIGlkQXR0ciwgbmFt
ZSkpCi0gICAgICAgIHJldHVybiBpdGVtOwotCi0gICAgcmV0dXJuIGZpcnN0TmFtZWRJdGVtKGZv
cm1Db250cm9sRWxlbWVudHMoKSwgaW1hZ2VzRWxlbWVudHMsIG5hbWVBdHRyLCBuYW1lKTsKLX0K
LQotdm9pZCBIVE1MRm9ybUNvbGxlY3Rpb246OnVwZGF0ZU5hbWVDYWNoZSgpIGNvbnN0Ci17Ci0g
ICAgaWYgKGhhc05hbWVDYWNoZSgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBIYXNoU2V0PEF0
b21pY1N0cmluZ0ltcGwqPiBmb3VuZElucHV0RWxlbWVudHM7Ci0KLSAgICBjb25zdCBWZWN0b3I8
Rm9ybUFzc29jaWF0ZWRFbGVtZW50Kj4mIGVsZW1lbnRzQXJyYXkgPSBmb3JtQ29udHJvbEVsZW1l
bnRzKCk7Ci0KLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZWxlbWVudHNBcnJheS5zaXpl
KCk7ICsraSkgewotICAgICAgICBGb3JtQXNzb2NpYXRlZEVsZW1lbnQqIGFzc29jaWF0ZWRFbGVt
ZW50ID0gZWxlbWVudHNBcnJheVtpXTsKLSAgICAgICAgaWYgKGFzc29jaWF0ZWRFbGVtZW50LT5p
c0VudW1lcmF0YWJsZSgpKSB7Ci0gICAgICAgICAgICBIVE1MRWxlbWVudCogZWxlbWVudCA9IHRv
SFRNTEVsZW1lbnQoYXNzb2NpYXRlZEVsZW1lbnQpOwotICAgICAgICAgICAgY29uc3QgQXRvbWlj
U3RyaW5nJiBpZEF0dHJWYWwgPSBlbGVtZW50LT5nZXRJZEF0dHJpYnV0ZSgpOwotICAgICAgICAg
ICAgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lQXR0clZhbCA9IGVsZW1lbnQtPmdldE5hbWVBdHRy
aWJ1dGUoKTsKLSAgICAgICAgICAgIGlmICghaWRBdHRyVmFsLmlzRW1wdHkoKSkgewotICAgICAg
ICAgICAgICAgIGFwcGVuZElkQ2FjaGUoaWRBdHRyVmFsLCBlbGVtZW50KTsKLSAgICAgICAgICAg
ICAgICBmb3VuZElucHV0RWxlbWVudHMuYWRkKGlkQXR0clZhbC5pbXBsKCkpOwotICAgICAgICAg
ICAgfQotICAgICAgICAgICAgaWYgKCFuYW1lQXR0clZhbC5pc0VtcHR5KCkgJiYgaWRBdHRyVmFs
ICE9IG5hbWVBdHRyVmFsKSB7Ci0gICAgICAgICAgICAgICAgYXBwZW5kTmFtZUNhY2hlKG5hbWVB
dHRyVmFsLCBlbGVtZW50KTsKLSAgICAgICAgICAgICAgICBmb3VuZElucHV0RWxlbWVudHMuYWRk
KG5hbWVBdHRyVmFsLmltcGwoKSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0K
LSAgICBpZiAoYmFzZSgpLT5oYXNUYWdOYW1lKGZvcm1UYWcpKSB7Ci0gICAgICAgIGNvbnN0IFZl
Y3RvcjxIVE1MSW1hZ2VFbGVtZW50Kj4mIGltYWdlRWxlbWVudHNBcnJheSA9IGZvcm1JbWFnZUVs
ZW1lbnRzKCk7Ci0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBpbWFnZUVsZW1lbnRz
QXJyYXkuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgICAgIEhUTUxJbWFnZUVsZW1lbnQqIGVsZW1l
bnQgPSBpbWFnZUVsZW1lbnRzQXJyYXlbaV07Ci0gICAgICAgICAgICBjb25zdCBBdG9taWNTdHJp
bmcmIGlkQXR0clZhbCA9IGVsZW1lbnQtPmdldElkQXR0cmlidXRlKCk7Ci0gICAgICAgICAgICBj
b25zdCBBdG9taWNTdHJpbmcmIG5hbWVBdHRyVmFsID0gZWxlbWVudC0+Z2V0TmFtZUF0dHJpYnV0
ZSgpOwotICAgICAgICAgICAgaWYgKCFpZEF0dHJWYWwuaXNFbXB0eSgpICYmICFmb3VuZElucHV0
RWxlbWVudHMuY29udGFpbnMoaWRBdHRyVmFsLmltcGwoKSkpCi0gICAgICAgICAgICAgICAgYXBw
ZW5kSWRDYWNoZShpZEF0dHJWYWwsIGVsZW1lbnQpOwotICAgICAgICAgICAgaWYgKCFuYW1lQXR0
clZhbC5pc0VtcHR5KCkgJiYgaWRBdHRyVmFsICE9IG5hbWVBdHRyVmFsICYmICFmb3VuZElucHV0
RWxlbWVudHMuY29udGFpbnMobmFtZUF0dHJWYWwuaW1wbCgpKSkKLSAgICAgICAgICAgICAgICBh
cHBlbmROYW1lQ2FjaGUobmFtZUF0dHJWYWwsIGVsZW1lbnQpOwotICAgICAgICB9Ci0gICAgfQot
Ci0gICAgc2V0SGFzTmFtZUNhY2hlKCk7Ci19Ci0KLX0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEZvcm1Db2xsZWN0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MRm9ybUNvbGxlY3Rpb24uaAkocmV2aXNpb24gMTMzNjg3KQorKysgU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MRm9ybUNvbGxlY3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMSw1NyArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAxOTk5IExhcnMgS25vbGwgKGtub2xsQGtkZS5vcmcp
Ci0gKiAgICAgICAgICAgKEMpIDE5OTkgQW50dGkgS29pdmlzdG8gKGtvaXZpc3RvQGtkZS5vcmcp
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDggQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBmcmVl
IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqIG1vZGlmeSBpdCB1
bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiBMaWNl
bnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIK
LSAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0
ZXIgdmVyc2lvbi4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv
cGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsg
d2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkg
b3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogTGli
cmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogWW91
IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZQotICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBD
T1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gKiBCb3N0b24s
IE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqCi0gKi8KLQotI2lmbmRlZiBIVE1MRm9ybUNvbGxlY3Rp
b25faAotI2RlZmluZSBIVE1MRm9ybUNvbGxlY3Rpb25faAotCi0jaW5jbHVkZSAiSFRNTENvbGxl
Y3Rpb24uaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBGb3JtQXNzb2NpYXRlZEVs
ZW1lbnQ7Ci1jbGFzcyBIVE1MRWxlbWVudDsKLWNsYXNzIEhUTUxJbWFnZUVsZW1lbnQ7Ci1jbGFz
cyBRdWFsaWZpZWROYW1lOwotLy8gVGhpcyBjbGFzcyBpcyBqdXN0IGEgYmlnIGhhY2sgdG8gZmlu
ZCBmb3JtIGVsZW1lbnRzIGV2ZW4gaW4gbWFsZm9ybWVkIEhUTUwgZWxlbWVudHMuCi0vLyBUaGUg
ZmFtb3VzIDx0YWJsZT48dHI+PGZvcm0+PHRkPiBwcm9ibGVtLgotCi1jbGFzcyBIVE1MRm9ybUNv
bGxlY3Rpb24gOiBwdWJsaWMgSFRNTENvbGxlY3Rpb24gewotcHVibGljOgotICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPEhUTUxGb3JtQ29sbGVjdGlvbj4gY3JlYXRlKEVsZW1lbnQqKTsKLQotICAgIHZp
cnR1YWwgfkhUTUxGb3JtQ29sbGVjdGlvbigpOwotCi0gICAgdmlydHVhbCBOb2RlKiBuYW1lZEl0
ZW0oY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKSBjb25zdDsKLQotcHJpdmF0ZToKLSAgICBIVE1M
Rm9ybUNvbGxlY3Rpb24oRWxlbWVudCopOwotCi0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZU5hbWVD
YWNoZSgpIGNvbnN0OwotCi0gICAgY29uc3QgVmVjdG9yPEZvcm1Bc3NvY2lhdGVkRWxlbWVudCo+
JiBmb3JtQ29udHJvbEVsZW1lbnRzKCkgY29uc3Q7Ci0gICAgY29uc3QgVmVjdG9yPEhUTUxJbWFn
ZUVsZW1lbnQqPiYgZm9ybUltYWdlRWxlbWVudHMoKSBjb25zdDsKLSAgICB2aXJ0dWFsIEVsZW1l
bnQqIHZpcnR1YWxJdGVtQWZ0ZXIodW5zaWduZWQmIG9mZnNldEluQXJyYXksIEVsZW1lbnQqKSBj
b25zdCBPVkVSUklERTsKLX07Ci0KLX0gLy9uYW1lc3BhY2UKLQotI2VuZGlmCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmNwcAko
cmV2aXNpb24gMTMzNTUxKQkoZnJvbSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29sbGVj
dGlvbi5jcHA6MTMzNTUxKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xz
Q29sbGVjdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxNjMgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDE5OTkgTGFycyBLbm9sbCAoa25vbGxAa2RlLm9yZykKKyAqICAgICAgICAg
ICAoQykgMTk5OSBBbnR0aSBLb2l2aXN0byAoa29pdmlzdG9Aa2RlLm9yZykKKyAqIENvcHlyaWdo
dCAoQykgMjAwMywgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAxMCwgMjAxMSwgMjAxMiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUg
c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVu
ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vu
c2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgor
ICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRl
ciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9w
ZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3
aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBv
ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ug
c2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENP
UFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3Rvbiwg
TUEgMDIxMTAtMTMwMSwgVVNBLgorICoKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiSFRNTEZvcm1Db2xsZWN0aW9uLmgiCisKKyNpbmNsdWRlICJIVE1MRmllbGRTZXRFbGVt
ZW50LmgiCisjaW5jbHVkZSAiSFRNTEZvcm1Db250cm9sRWxlbWVudC5oIgorI2luY2x1ZGUgIkhU
TUxGb3JtRWxlbWVudC5oIgorI2luY2x1ZGUgIkhUTUxJbWFnZUVsZW1lbnQuaCIKKyNpbmNsdWRl
ICJIVE1MTmFtZXMuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit1c2luZyBuYW1lc3BhY2Ug
SFRNTE5hbWVzOworCisvLyBTaW5jZSB0aGUgY29sbGVjdGlvbnMgYXJlIHRvIGJlICJsaXZlIiwg
d2UgaGF2ZSB0byBkbyB0aGUKKy8vIGNhbGN1bGF0aW9uIGV2ZXJ5IHRpbWUgaWYgYW55dGhpbmcg
aGFzIGNoYW5nZWQuCisKK0hUTUxGb3JtQ29sbGVjdGlvbjo6SFRNTEZvcm1Db2xsZWN0aW9uKEVs
ZW1lbnQqIGJhc2UpCisgICAgOiBIVE1MQ29sbGVjdGlvbihiYXNlLCBGb3JtQ29udHJvbHMsIE92
ZXJyaWRlc0l0ZW1BZnRlcikKK3sKKyAgICBBU1NFUlQoYmFzZS0+aGFzVGFnTmFtZShmb3JtVGFn
KSB8fCBiYXNlLT5oYXNUYWdOYW1lKGZpZWxkc2V0VGFnKSk7Cit9CisKK1Bhc3NSZWZQdHI8SFRN
TEZvcm1Db2xsZWN0aW9uPiBIVE1MRm9ybUNvbGxlY3Rpb246OmNyZWF0ZShFbGVtZW50KiBiYXNl
KQoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcgSFRNTEZvcm1Db2xsZWN0aW9uKGJhc2UpKTsK
K30KKworSFRNTEZvcm1Db2xsZWN0aW9uOjp+SFRNTEZvcm1Db2xsZWN0aW9uKCkKK3sKK30KKwor
Y29uc3QgVmVjdG9yPEZvcm1Bc3NvY2lhdGVkRWxlbWVudCo+JiBIVE1MRm9ybUNvbGxlY3Rpb246
OmZvcm1Db250cm9sRWxlbWVudHMoKSBjb25zdAoreworICAgIEFTU0VSVChiYXNlKCkpOworICAg
IEFTU0VSVChiYXNlKCktPmhhc1RhZ05hbWUoZm9ybVRhZykgfHwgYmFzZSgpLT5oYXNUYWdOYW1l
KGZpZWxkc2V0VGFnKSk7CisgICAgaWYgKGJhc2UoKS0+aGFzVGFnTmFtZShmb3JtVGFnKSkKKyAg
ICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEhUTUxGb3JtRWxlbWVudCo+KGJhc2UoKSktPmFzc29j
aWF0ZWRFbGVtZW50cygpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxIVE1MRmllbGRTZXRFbGVt
ZW50Kj4oYmFzZSgpKS0+YXNzb2NpYXRlZEVsZW1lbnRzKCk7Cit9CisKK2NvbnN0IFZlY3RvcjxI
VE1MSW1hZ2VFbGVtZW50Kj4mIEhUTUxGb3JtQ29sbGVjdGlvbjo6Zm9ybUltYWdlRWxlbWVudHMo
KSBjb25zdAoreworICAgIEFTU0VSVChiYXNlKCkpOworICAgIEFTU0VSVChiYXNlKCktPmhhc1Rh
Z05hbWUoZm9ybVRhZykpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxIVE1MRm9ybUVsZW1lbnQq
PihiYXNlKCkpLT5pbWFnZUVsZW1lbnRzKCk7Cit9CisKK0VsZW1lbnQqIEhUTUxGb3JtQ29sbGVj
dGlvbjo6dmlydHVhbEl0ZW1BZnRlcih1bnNpZ25lZCYgb2Zmc2V0LCBFbGVtZW50KiBwcmV2aW91
c0l0ZW0pIGNvbnN0Cit7CisgICAgY29uc3QgVmVjdG9yPEZvcm1Bc3NvY2lhdGVkRWxlbWVudCo+
JiBlbGVtZW50c0FycmF5ID0gZm9ybUNvbnRyb2xFbGVtZW50cygpOworICAgIGlmIChwcmV2aW91
c0l0ZW0pCisgICAgICAgIG9mZnNldCsrOworICAgIHdoaWxlIChvZmZzZXQgPCBlbGVtZW50c0Fy
cmF5LnNpemUoKSkgeworICAgICAgICBGb3JtQXNzb2NpYXRlZEVsZW1lbnQqIGVsZW1lbnQgPSBl
bGVtZW50c0FycmF5W29mZnNldF07CisgICAgICAgIGlmIChlbGVtZW50LT5pc0VudW1lcmF0YWJs
ZSgpKQorICAgICAgICAgICAgcmV0dXJuIHRvSFRNTEVsZW1lbnQoZWxlbWVudCk7CisgICAgICAg
IG9mZnNldCsrOworICAgIH0KKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIEhUTUxFbGVtZW50
KiBmaXJzdE5hbWVkSXRlbShjb25zdCBWZWN0b3I8Rm9ybUFzc29jaWF0ZWRFbGVtZW50Kj4mIGVs
ZW1lbnRzQXJyYXksCisgICAgY29uc3QgVmVjdG9yPEhUTUxJbWFnZUVsZW1lbnQqPiogaW1hZ2VF
bGVtZW50c0FycmF5LCBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSwgY29uc3QgU3RyaW5n
JiBuYW1lKQoreworICAgIEFTU0VSVChhdHRyTmFtZSA9PSBpZEF0dHIgfHwgYXR0ck5hbWUgPT0g
bmFtZUF0dHIpOworCisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGVsZW1lbnRzQXJyYXku
c2l6ZSgpOyArK2kpIHsKKyAgICAgICAgSFRNTEVsZW1lbnQqIGVsZW1lbnQgPSB0b0hUTUxFbGVt
ZW50KGVsZW1lbnRzQXJyYXlbaV0pOworICAgICAgICBpZiAoZWxlbWVudHNBcnJheVtpXS0+aXNF
bnVtZXJhdGFibGUoKSAmJiBlbGVtZW50LT5mYXN0R2V0QXR0cmlidXRlKGF0dHJOYW1lKSA9PSBu
YW1lKQorICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnQ7CisgICAgfQorCisgICAgaWYgKCFpbWFn
ZUVsZW1lbnRzQXJyYXkpCisgICAgICAgIHJldHVybiAwOworCisgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IGltYWdlRWxlbWVudHNBcnJheS0+c2l6ZSgpOyArK2kpIHsKKyAgICAgICAgSFRN
TEltYWdlRWxlbWVudCogZWxlbWVudCA9ICgqaW1hZ2VFbGVtZW50c0FycmF5KVtpXTsKKyAgICAg
ICAgaWYgKGVsZW1lbnQtPmZhc3RHZXRBdHRyaWJ1dGUoYXR0ck5hbWUpID09IG5hbWUpCisgICAg
ICAgICAgICByZXR1cm4gZWxlbWVudDsKKyAgICB9CisKKyAgICByZXR1cm4gMDsKK30KKworTm9k
ZSogSFRNTEZvcm1Db2xsZWN0aW9uOjpuYW1lZEl0ZW0oY29uc3QgQXRvbWljU3RyaW5nJiBuYW1l
KSBjb25zdAoreworICAgIC8vIGh0dHA6Ly9tc2RuLm1pY3Jvc29mdC5jb20vd29ya3Nob3AvYXV0
aG9yL2RodG1sL3JlZmVyZW5jZS9tZXRob2RzL25hbWVkaXRlbS5hc3AKKyAgICAvLyBUaGlzIG1l
dGhvZCBmaXJzdCBzZWFyY2hlcyBmb3IgYW4gb2JqZWN0IHdpdGggYSBtYXRjaGluZyBpZAorICAg
IC8vIGF0dHJpYnV0ZS4gSWYgYSBtYXRjaCBpcyBub3QgZm91bmQsIHRoZSBtZXRob2QgdGhlbiBz
ZWFyY2hlcyBmb3IgYW4KKyAgICAvLyBvYmplY3Qgd2l0aCBhIG1hdGNoaW5nIG5hbWUgYXR0cmli
dXRlLCBidXQgb25seSBvbiB0aG9zZSBlbGVtZW50cworICAgIC8vIHRoYXQgYXJlIGFsbG93ZWQg
YSBuYW1lIGF0dHJpYnV0ZS4KKyAgICBjb25zdCBWZWN0b3I8SFRNTEltYWdlRWxlbWVudCo+KiBp
bWFnZXNFbGVtZW50cyA9IGJhc2UoKS0+aGFzVGFnTmFtZShmaWVsZHNldFRhZykgPyAwIDogJmZv
cm1JbWFnZUVsZW1lbnRzKCk7CisgICAgaWYgKEhUTUxFbGVtZW50KiBpdGVtID0gZmlyc3ROYW1l
ZEl0ZW0oZm9ybUNvbnRyb2xFbGVtZW50cygpLCBpbWFnZXNFbGVtZW50cywgaWRBdHRyLCBuYW1l
KSkKKyAgICAgICAgcmV0dXJuIGl0ZW07CisKKyAgICByZXR1cm4gZmlyc3ROYW1lZEl0ZW0oZm9y
bUNvbnRyb2xFbGVtZW50cygpLCBpbWFnZXNFbGVtZW50cywgbmFtZUF0dHIsIG5hbWUpOworfQor
Cit2b2lkIEhUTUxGb3JtQ29sbGVjdGlvbjo6dXBkYXRlTmFtZUNhY2hlKCkgY29uc3QKK3sKKyAg
ICBpZiAoaGFzTmFtZUNhY2hlKCkpCisgICAgICAgIHJldHVybjsKKworICAgIEhhc2hTZXQ8QXRv
bWljU3RyaW5nSW1wbCo+IGZvdW5kSW5wdXRFbGVtZW50czsKKworICAgIGNvbnN0IFZlY3RvcjxG
b3JtQXNzb2NpYXRlZEVsZW1lbnQqPiYgZWxlbWVudHNBcnJheSA9IGZvcm1Db250cm9sRWxlbWVu
dHMoKTsKKworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBlbGVtZW50c0FycmF5LnNpemUo
KTsgKytpKSB7CisgICAgICAgIEZvcm1Bc3NvY2lhdGVkRWxlbWVudCogYXNzb2NpYXRlZEVsZW1l
bnQgPSBlbGVtZW50c0FycmF5W2ldOworICAgICAgICBpZiAoYXNzb2NpYXRlZEVsZW1lbnQtPmlz
RW51bWVyYXRhYmxlKCkpIHsKKyAgICAgICAgICAgIEhUTUxFbGVtZW50KiBlbGVtZW50ID0gdG9I
VE1MRWxlbWVudChhc3NvY2lhdGVkRWxlbWVudCk7CisgICAgICAgICAgICBjb25zdCBBdG9taWNT
dHJpbmcmIGlkQXR0clZhbCA9IGVsZW1lbnQtPmdldElkQXR0cmlidXRlKCk7CisgICAgICAgICAg
ICBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWVBdHRyVmFsID0gZWxlbWVudC0+Z2V0TmFtZUF0dHJp
YnV0ZSgpOworICAgICAgICAgICAgaWYgKCFpZEF0dHJWYWwuaXNFbXB0eSgpKSB7CisgICAgICAg
ICAgICAgICAgYXBwZW5kSWRDYWNoZShpZEF0dHJWYWwsIGVsZW1lbnQpOworICAgICAgICAgICAg
ICAgIGZvdW5kSW5wdXRFbGVtZW50cy5hZGQoaWRBdHRyVmFsLmltcGwoKSk7CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICBpZiAoIW5hbWVBdHRyVmFsLmlzRW1wdHkoKSAmJiBpZEF0dHJWYWwg
IT0gbmFtZUF0dHJWYWwpIHsKKyAgICAgICAgICAgICAgICBhcHBlbmROYW1lQ2FjaGUobmFtZUF0
dHJWYWwsIGVsZW1lbnQpOworICAgICAgICAgICAgICAgIGZvdW5kSW5wdXRFbGVtZW50cy5hZGQo
bmFtZUF0dHJWYWwuaW1wbCgpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKwor
ICAgIGlmIChiYXNlKCktPmhhc1RhZ05hbWUoZm9ybVRhZykpIHsKKyAgICAgICAgY29uc3QgVmVj
dG9yPEhUTUxJbWFnZUVsZW1lbnQqPiYgaW1hZ2VFbGVtZW50c0FycmF5ID0gZm9ybUltYWdlRWxl
bWVudHMoKTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGltYWdlRWxlbWVudHNB
cnJheS5zaXplKCk7ICsraSkgeworICAgICAgICAgICAgSFRNTEltYWdlRWxlbWVudCogZWxlbWVu
dCA9IGltYWdlRWxlbWVudHNBcnJheVtpXTsKKyAgICAgICAgICAgIGNvbnN0IEF0b21pY1N0cmlu
ZyYgaWRBdHRyVmFsID0gZWxlbWVudC0+Z2V0SWRBdHRyaWJ1dGUoKTsKKyAgICAgICAgICAgIGNv
bnN0IEF0b21pY1N0cmluZyYgbmFtZUF0dHJWYWwgPSBlbGVtZW50LT5nZXROYW1lQXR0cmlidXRl
KCk7CisgICAgICAgICAgICBpZiAoIWlkQXR0clZhbC5pc0VtcHR5KCkgJiYgIWZvdW5kSW5wdXRF
bGVtZW50cy5jb250YWlucyhpZEF0dHJWYWwuaW1wbCgpKSkKKyAgICAgICAgICAgICAgICBhcHBl
bmRJZENhY2hlKGlkQXR0clZhbCwgZWxlbWVudCk7CisgICAgICAgICAgICBpZiAoIW5hbWVBdHRy
VmFsLmlzRW1wdHkoKSAmJiBpZEF0dHJWYWwgIT0gbmFtZUF0dHJWYWwgJiYgIWZvdW5kSW5wdXRF
bGVtZW50cy5jb250YWlucyhuYW1lQXR0clZhbC5pbXBsKCkpKQorICAgICAgICAgICAgICAgIGFw
cGVuZE5hbWVDYWNoZShuYW1lQXR0clZhbCwgZWxlbWVudCk7CisgICAgICAgIH0KKyAgICB9CisK
KyAgICBzZXRIYXNOYW1lQ2FjaGUoKTsKK30KKworfQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5jcHAJKHJldmlzaW9uIDEzMzU1
MSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yMSw3ICsyMSw3IEBACiAgKi8KIAogI2luY2x1ZGUgImNvbmZp
Zy5oIgotI2luY2x1ZGUgIkhUTUxGb3JtQ29sbGVjdGlvbi5oIgorI2luY2x1ZGUgIkhUTUxGb3Jt
Q29udHJvbHNDb2xsZWN0aW9uLmgiCiAKICNpbmNsdWRlICJIVE1MRmllbGRTZXRFbGVtZW50Lmgi
CiAjaW5jbHVkZSAiSFRNTEZvcm1Db250cm9sRWxlbWVudC5oIgpAQCAtMzYsMjIgKzM2LDIyIEBA
IHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAvLyBTaW5jZSB0aGUgY29sbGVjdGlvbnMgYXJl
IHRvIGJlICJsaXZlIiwgd2UgaGF2ZSB0byBkbyB0aGUKIC8vIGNhbGN1bGF0aW9uIGV2ZXJ5IHRp
bWUgaWYgYW55dGhpbmcgaGFzIGNoYW5nZWQuCiAKLUhUTUxGb3JtQ29sbGVjdGlvbjo6SFRNTEZv
cm1Db2xsZWN0aW9uKEVsZW1lbnQqIGJhc2UpCitIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbjo6
SFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24oRWxlbWVudCogYmFzZSkKICAgICA6IEhUTUxDb2xs
ZWN0aW9uKGJhc2UsIEZvcm1Db250cm9scywgT3ZlcnJpZGVzSXRlbUFmdGVyKQogewogICAgIEFT
U0VSVChiYXNlLT5oYXNUYWdOYW1lKGZvcm1UYWcpIHx8IGJhc2UtPmhhc1RhZ05hbWUoZmllbGRz
ZXRUYWcpKTsKIH0KIAotUGFzc1JlZlB0cjxIVE1MRm9ybUNvbGxlY3Rpb24+IEhUTUxGb3JtQ29s
bGVjdGlvbjo6Y3JlYXRlKEVsZW1lbnQqIGJhc2UpCitQYXNzUmVmUHRyPEhUTUxGb3JtQ29udHJv
bHNDb2xsZWN0aW9uPiBIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbjo6Y3JlYXRlKEVsZW1lbnQq
IGJhc2UpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBIVE1MRm9ybUNvbGxlY3Rpb24oYmFz
ZSkpOworICAgIHJldHVybiBhZG9wdFJlZihuZXcgSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24o
YmFzZSkpOwogfQogCi1IVE1MRm9ybUNvbGxlY3Rpb246On5IVE1MRm9ybUNvbGxlY3Rpb24oKQor
SFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb246On5IVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbigp
CiB7CiB9CiAKLWNvbnN0IFZlY3RvcjxGb3JtQXNzb2NpYXRlZEVsZW1lbnQqPiYgSFRNTEZvcm1D
b2xsZWN0aW9uOjpmb3JtQ29udHJvbEVsZW1lbnRzKCkgY29uc3QKK2NvbnN0IFZlY3RvcjxGb3Jt
QXNzb2NpYXRlZEVsZW1lbnQqPiYgSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb246OmZvcm1Db250
cm9sRWxlbWVudHMoKSBjb25zdAogewogICAgIEFTU0VSVChiYXNlKCkpOwogICAgIEFTU0VSVChi
YXNlKCktPmhhc1RhZ05hbWUoZm9ybVRhZykgfHwgYmFzZSgpLT5oYXNUYWdOYW1lKGZpZWxkc2V0
VGFnKSk7CkBAIC02MCwxNCArNjAsMTQgQEAgY29uc3QgVmVjdG9yPEZvcm1Bc3NvY2lhdGVkRWxl
bWVudCo+JiBIVAogICAgIHJldHVybiBzdGF0aWNfY2FzdDxIVE1MRmllbGRTZXRFbGVtZW50Kj4o
YmFzZSgpKS0+YXNzb2NpYXRlZEVsZW1lbnRzKCk7CiB9CiAKLWNvbnN0IFZlY3RvcjxIVE1MSW1h
Z2VFbGVtZW50Kj4mIEhUTUxGb3JtQ29sbGVjdGlvbjo6Zm9ybUltYWdlRWxlbWVudHMoKSBjb25z
dAorY29uc3QgVmVjdG9yPEhUTUxJbWFnZUVsZW1lbnQqPiYgSFRNTEZvcm1Db250cm9sc0NvbGxl
Y3Rpb246OmZvcm1JbWFnZUVsZW1lbnRzKCkgY29uc3QKIHsKICAgICBBU1NFUlQoYmFzZSgpKTsK
ICAgICBBU1NFUlQoYmFzZSgpLT5oYXNUYWdOYW1lKGZvcm1UYWcpKTsKICAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8SFRNTEZvcm1FbGVtZW50Kj4oYmFzZSgpKS0+aW1hZ2VFbGVtZW50cygpOwogfQog
Ci1FbGVtZW50KiBIVE1MRm9ybUNvbGxlY3Rpb246OnZpcnR1YWxJdGVtQWZ0ZXIodW5zaWduZWQm
IG9mZnNldCwgRWxlbWVudCogcHJldmlvdXNJdGVtKSBjb25zdAorRWxlbWVudCogSFRNTEZvcm1D
b250cm9sc0NvbGxlY3Rpb246OnZpcnR1YWxJdGVtQWZ0ZXIodW5zaWduZWQmIG9mZnNldCwgRWxl
bWVudCogcHJldmlvdXNJdGVtKSBjb25zdAogewogICAgIGNvbnN0IFZlY3RvcjxGb3JtQXNzb2Np
YXRlZEVsZW1lbnQqPiYgZWxlbWVudHNBcnJheSA9IGZvcm1Db250cm9sRWxlbWVudHMoKTsKICAg
ICBpZiAocHJldmlvdXNJdGVtKQpAQCAtMTA0LDcgKzEwNCw3IEBAIHN0YXRpYyBIVE1MRWxlbWVu
dCogZmlyc3ROYW1lZEl0ZW0oY29uc3QKICAgICByZXR1cm4gMDsKIH0KIAotTm9kZSogSFRNTEZv
cm1Db2xsZWN0aW9uOjpuYW1lZEl0ZW0oY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKSBjb25zdAor
Tm9kZSogSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb246Om5hbWVkSXRlbShjb25zdCBBdG9taWNT
dHJpbmcmIG5hbWUpIGNvbnN0CiB7CiAgICAgLy8gaHR0cDovL21zZG4ubWljcm9zb2Z0LmNvbS93
b3Jrc2hvcC9hdXRob3IvZGh0bWwvcmVmZXJlbmNlL21ldGhvZHMvbmFtZWRpdGVtLmFzcAogICAg
IC8vIFRoaXMgbWV0aG9kIGZpcnN0IHNlYXJjaGVzIGZvciBhbiBvYmplY3Qgd2l0aCBhIG1hdGNo
aW5nIGlkCkBAIC0xMTgsNyArMTE4LDcgQEAgTm9kZSogSFRNTEZvcm1Db2xsZWN0aW9uOjpuYW1l
ZEl0ZW0oY29ucwogICAgIHJldHVybiBmaXJzdE5hbWVkSXRlbShmb3JtQ29udHJvbEVsZW1lbnRz
KCksIGltYWdlc0VsZW1lbnRzLCBuYW1lQXR0ciwgbmFtZSk7CiB9CiAKLXZvaWQgSFRNTEZvcm1D
b2xsZWN0aW9uOjp1cGRhdGVOYW1lQ2FjaGUoKSBjb25zdAordm9pZCBIVE1MRm9ybUNvbnRyb2xz
Q29sbGVjdGlvbjo6dXBkYXRlTmFtZUNhY2hlKCkgY29uc3QKIHsKICAgICBpZiAoaGFzTmFtZUNh
Y2hlKCkpCiAgICAgICAgIHJldHVybjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZv
cm1Db250cm9sc0NvbGxlY3Rpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmgJKHJldmlzaW9uIDEzMzU1MSkJKGZyb20gU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbGxlY3Rpb24uaDoxMzM1NTEpCisrKyBTb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmgJKHdvcmtpbmcgY29weSkK
QEAgLTAsMCArMSw1NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMTk5OSBMYXJzIEtub2xsIChr
bm9sbEBrZGUub3JnKQorICogICAgICAgICAgIChDKSAxOTk5IEFudHRpIEtvaXZpc3RvIChrb2l2
aXN0b0BrZGUub3JnKQorICogQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2LCAy
MDA3LCAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIGxp
YnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisg
KiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9w
dGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1
dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBB
TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVS
Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo
ZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxz
LgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBz
ZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29y
LAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKgorICovCisKKyNpZm5kZWYgSFRN
TEZvcm1Db2xsZWN0aW9uX2gKKyNkZWZpbmUgSFRNTEZvcm1Db2xsZWN0aW9uX2gKKworI2luY2x1
ZGUgIkhUTUxDb2xsZWN0aW9uLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgRm9y
bUFzc29jaWF0ZWRFbGVtZW50OworY2xhc3MgSFRNTEVsZW1lbnQ7CitjbGFzcyBIVE1MSW1hZ2VF
bGVtZW50OworY2xhc3MgUXVhbGlmaWVkTmFtZTsKKy8vIFRoaXMgY2xhc3MgaXMganVzdCBhIGJp
ZyBoYWNrIHRvIGZpbmQgZm9ybSBlbGVtZW50cyBldmVuIGluIG1hbGZvcm1lZCBIVE1MIGVsZW1l
bnRzLgorLy8gVGhlIGZhbW91cyA8dGFibGU+PHRyPjxmb3JtPjx0ZD4gcHJvYmxlbS4KKworY2xh
c3MgSFRNTEZvcm1Db2xsZWN0aW9uIDogcHVibGljIEhUTUxDb2xsZWN0aW9uIHsKK3B1YmxpYzoK
KyAgICBzdGF0aWMgUGFzc1JlZlB0cjxIVE1MRm9ybUNvbGxlY3Rpb24+IGNyZWF0ZShFbGVtZW50
Kik7CisKKyAgICB2aXJ0dWFsIH5IVE1MRm9ybUNvbGxlY3Rpb24oKTsKKworICAgIHZpcnR1YWwg
Tm9kZSogbmFtZWRJdGVtKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSkgY29uc3Q7CisKK3ByaXZh
dGU6CisgICAgSFRNTEZvcm1Db2xsZWN0aW9uKEVsZW1lbnQqKTsKKworICAgIHZpcnR1YWwgdm9p
ZCB1cGRhdGVOYW1lQ2FjaGUoKSBjb25zdDsKKworICAgIGNvbnN0IFZlY3RvcjxGb3JtQXNzb2Np
YXRlZEVsZW1lbnQqPiYgZm9ybUNvbnRyb2xFbGVtZW50cygpIGNvbnN0OworICAgIGNvbnN0IFZl
Y3RvcjxIVE1MSW1hZ2VFbGVtZW50Kj4mIGZvcm1JbWFnZUVsZW1lbnRzKCkgY29uc3Q7CisgICAg
dmlydHVhbCBFbGVtZW50KiB2aXJ0dWFsSXRlbUFmdGVyKHVuc2lnbmVkJiBvZmZzZXRJbkFycmF5
LCBFbGVtZW50KikgY29uc3QgT1ZFUlJJREU7Cit9OworCit9IC8vbmFtZXNwYWNlCisKKyNlbmRp
ZgpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sc0NvbGxl
Y3Rpb24uaAkocmV2aXNpb24gMTMzNTUxKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9y
bUNvbnRyb2xzQ29sbGVjdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMCw4ICsyMCw4IEBACiAg
KgogICovCiAKLSNpZm5kZWYgSFRNTEZvcm1Db2xsZWN0aW9uX2gKLSNkZWZpbmUgSFRNTEZvcm1D
b2xsZWN0aW9uX2gKKyNpZm5kZWYgSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb25faAorI2RlZmlu
ZSBIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbl9oCiAKICNpbmNsdWRlICJIVE1MQ29sbGVjdGlv
bi5oIgogCkBAIC0zNCwxNiArMzQsMTYgQEAgY2xhc3MgUXVhbGlmaWVkTmFtZTsKIC8vIFRoaXMg
Y2xhc3MgaXMganVzdCBhIGJpZyBoYWNrIHRvIGZpbmQgZm9ybSBlbGVtZW50cyBldmVuIGluIG1h
bGZvcm1lZCBIVE1MIGVsZW1lbnRzLgogLy8gVGhlIGZhbW91cyA8dGFibGU+PHRyPjxmb3JtPjx0
ZD4gcHJvYmxlbS4KIAotY2xhc3MgSFRNTEZvcm1Db2xsZWN0aW9uIDogcHVibGljIEhUTUxDb2xs
ZWN0aW9uIHsKK2NsYXNzIEhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uIDogcHVibGljIEhUTUxD
b2xsZWN0aW9uIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxIVE1MRm9ybUNvbGxl
Y3Rpb24+IGNyZWF0ZShFbGVtZW50Kik7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8SFRNTEZvcm1D
b250cm9sc0NvbGxlY3Rpb24+IGNyZWF0ZShFbGVtZW50Kik7CiAKLSAgICB2aXJ0dWFsIH5IVE1M
Rm9ybUNvbGxlY3Rpb24oKTsKKyAgICB2aXJ0dWFsIH5IVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlv
bigpOwogCiAgICAgdmlydHVhbCBOb2RlKiBuYW1lZEl0ZW0oY29uc3QgQXRvbWljU3RyaW5nJiBu
YW1lKSBjb25zdDsKIAogcHJpdmF0ZToKLSAgICBIVE1MRm9ybUNvbGxlY3Rpb24oRWxlbWVudCop
OworICAgIEhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uKEVsZW1lbnQqKTsKIAogICAgIHZpcnR1
YWwgdm9pZCB1cGRhdGVOYW1lQ2FjaGUoKSBjb25zdDsKIApJbmRleDogU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5pZGwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5pZGwJKHJldmlzaW9uIDAp
CisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmlkbAko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSwyNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNiwg
MjAwNywgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMDYgU2FtdWVsIFdlaW5pZyA8c2FtLndlaW5pZ0BnbWFpbC5jb20+CisgKgorICogVGhp
cyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v
cgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91
ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0
cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhP
VVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAq
IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNl
ZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0
YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFy
eTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBG
bG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKK1sKKyAgICBJbmRl
eGVkR2V0dGVyLAorICAgIE5hbWVkR2V0dGVyCitdIGludGVyZmFjZSBIVE1MRm9ybUNvbnRyb2xz
Q29sbGVjdGlvbiA6IEhUTUxDb2xsZWN0aW9uIHsKKyAgICBbQ3VzdG9tXSBOb2RlIG5hbWVkSXRl
bShpbiBbT3B0aW9uYWw9RGVmYXVsdElzVW5kZWZpbmVkXSBET01TdHJpbmcgbmFtZSk7Cit9OwpJ
bmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmNwcAkocmV2aXNpb24gMTMz
Njg3KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC00MCw4ICs0MCw4IEBACiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJG
cmFtZUxvYWRlci5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyQ2xpZW50LmgiCisjaW5jbHVkZSAi
SFRNTENvbGxlY3Rpb24uaCIKICNpbmNsdWRlICJIVE1MRG9jdW1lbnQuaCIKLSNpbmNsdWRlICJI
VE1MRm9ybUNvbGxlY3Rpb24uaCIKICNpbmNsdWRlICJIVE1MSW1hZ2VFbGVtZW50LmgiCiAjaW5j
bHVkZSAiSFRNTElucHV0RWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgpJbmRleDog
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5oCShyZXZpc2lvbiAxMzM2ODcpCisrKyBT
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
OCw3ICszOCw2IEBAIGNsYXNzIEZvcm1EYXRhOwogY2xhc3MgSFRNTEZvcm1Db250cm9sRWxlbWVu
dDsKIGNsYXNzIEhUTUxJbWFnZUVsZW1lbnQ7CiBjbGFzcyBIVE1MSW5wdXRFbGVtZW50OwotY2xh
c3MgSFRNTEZvcm1Db2xsZWN0aW9uOwogY2xhc3MgVGV4dEVuY29kaW5nOwogCiBjbGFzcyBIVE1M
Rm9ybUVsZW1lbnQgOiBwdWJsaWMgSFRNTEVsZW1lbnQgewpJbmRleDogU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MT3B0aW9uc0NvbGxlY3Rpb24uaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTE9wdGlvbnNDb2xsZWN0aW9uLmlkbAkocmV2aXNpb24gMTMzNjg3KQorKysg
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0aW9uc0NvbGxlY3Rpb24uaWRsCSh3b3JraW5nIGNv
cHkpCkBAIC0yMCwxMSArMjAsMTQgQEAKIAogWwogICAgIEpTR2VuZXJhdGVUb05hdGl2ZU9iamVj
dCwKLSAgICBDdXN0b21JbmRleGVkU2V0dGVyCisgICAgQ3VzdG9tSW5kZXhlZFNldHRlciwKKyAg
ICBOYW1lZEdldHRlcgogXSBpbnRlcmZhY2UgSFRNTE9wdGlvbnNDb2xsZWN0aW9uIDogSFRNTENv
bGxlY3Rpb24gewotICAgICAgICAgICAgIGF0dHJpYnV0ZSBsb25nIHNlbGVjdGVkSW5kZXg7Ci0g
ICAgICAgICAgICAgW0N1c3RvbV0gYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgbGVuZ3RoCi0gICAg
ICAgICAgICAgICAgICAgIHNldHRlciByYWlzZXMgKERPTUV4Y2VwdGlvbik7CisgICAgYXR0cmli
dXRlIGxvbmcgc2VsZWN0ZWRJbmRleDsKKyAgICBbQ3VzdG9tXSBhdHRyaWJ1dGUgdW5zaWduZWQg
bG9uZyBsZW5ndGgKKyAgICAgICAgc2V0dGVyIHJhaXNlcyAoRE9NRXhjZXB0aW9uKTsKKworICAg
IFtDdXN0b21dIE5vZGUgbmFtZWRJdGVtKGluIFtPcHRpb25hbD1EZWZhdWx0SXNVbmRlZmluZWRd
IERPTVN0cmluZyBuYW1lKTsKIAogICAgIFtDdXN0b21dIHZvaWQgYWRkKGluIFtPcHRpb25hbD1E
ZWZhdWx0SXNVbmRlZmluZWRdIEhUTUxPcHRpb25FbGVtZW50IG9wdGlvbiwgCiAgICAgICAgICAg
ICAgICAgICAgICAgaW4gW09wdGlvbmFsXSB1bnNpZ25lZCBsb25nIGluZGV4KQpAQCAtMzIsOCAr
MzUsNyBAQAogICAgIFtDdXN0b21dIHZvaWQgcmVtb3ZlKGluIFtPcHRpb25hbD1EZWZhdWx0SXNV
bmRlZmluZWRdIHVuc2lnbmVkIGxvbmcgaW5kZXgpOwogCiAjaWYgZGVmaW5lZChMQU5HVUFHRV9P
QkpFQ1RJVkVfQykgJiYgTEFOR1VBR0VfT0JKRUNUSVZFX0MKLSAgICBOb2RlIGl0ZW0oaW4gdW5z
aWduZWQgbG9uZyBpbmRleCk7IAotICAgIE5vZGUgbmFtZWRJdGVtKGluIERPTVN0cmluZyBuYW1l
KTsgCisgICAgTm9kZSBpdGVtKGluIHVuc2lnbmVkIGxvbmcgaW5kZXgpOwogI2VuZGlmCiB9Owog
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5pZGwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsCShyZXZpc2lvbiAxMzM2ODcpCisrKyBT
b3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTQ2OSw2
ICs0NjksOCBAQAogCiAgICAgYXR0cmlidXRlIEhUTUxDb2xsZWN0aW9uQ29uc3RydWN0b3IgSFRN
TENvbGxlY3Rpb247CiAgICAgYXR0cmlidXRlIEhUTUxBbGxDb2xsZWN0aW9uQ29uc3RydWN0b3Ig
SFRNTEFsbENvbGxlY3Rpb247CisgICAgYXR0cmlidXRlIEhUTUxGb3JtQ29udHJvbHNDb2xsZWN0
aW9uQ29uc3RydWN0b3IgSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb247CisgICAgYXR0cmlidXRl
IEhUTUxPcHRpb25zQ29sbGVjdGlvbkNvbnN0cnVjdG9yIEhUTUxPcHRpb25zQ29sbGVjdGlvbjsK
ICAgICBbQ29uZGl0aW9uYWw9TUlDUk9EQVRBXSBhdHRyaWJ1dGUgSFRNTFByb3BlcnRpZXNDb2xs
ZWN0aW9uQ29uc3RydWN0b3IgSFRNTFByb3BlcnRpZXNDb2xsZWN0aW9uOwogICAgIGF0dHJpYnV0
ZSBIVE1MVW5rbm93bkVsZW1lbnRDb25zdHJ1Y3RvciBIVE1MVW5rbm93bkVsZW1lbnQ7CiAKSW5k
ZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFu
Z2VMb2cJKHJldmlzaW9uIDEzMzY4NykKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE5IEBACisyMDEyLTExLTA2ICBSeW9zdWtlIE5pd2EgIDxybml3
YUB3ZWJraXQub3JnPgorCisgICAgICAgIE1ha2UgbmFtZWRJdGVtIHJldHVybiBhIG5vZGUgbGlz
dCBvbmx5IGluIEhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uIGFuZCBIVE1MT3B0aW9uc0NvbGxl
Y3Rpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEw
MTMxMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFk
ZGVkIGEgcmVncmVzc2lvbiB0ZXN0IHRvIGVuc3VyZSBmb3JtLmVsZW1lbnRzIGFuZCBzZWxlY3Qu
b3B0aW9ucyB1c2UgY29ycmVjdCBpbnRlcmZhY2VzLAorICAgICAgICBhbmQgbmFtZWQgZ2V0dGVy
IGZvciB0aG9zZSB0d28gcHJvcGVydGllcyByZXR1cm4gYSBOb2RlTGlzdCB3aGVuIHRoZXJlIGFy
ZSBtdWx0aXBsZSBtYXRjaGVzLgorCisgICAgICAgICogZmFzdC9kb20vY29sbGVjdGlvbi1uYW1l
ZGl0ZW0tbW92ZS1iZXR3ZWVuLWRvY3VtZW50cy1leHBlY3RlZC50eHQ6IFJlYmFzZWxpbmVkIHNp
bmNlIG5hbWVkSXRlbQorICAgICAgICBub3cgY29ycmVjdGx5IHJldHVybnMgbnVsbCB3aGVuIHRo
ZXJlIGlzIG5vIG1hdGNoLgorICAgICAgICAqIGZhc3QvZG9tL2NvbGxlY3Rpb24tbmFtZWRpdGVt
LW1vdmUtYmV0d2Vlbi1kb2N1bWVudHMuaHRtbDogRGl0dG8uCisgICAgICAgICogZmFzdC9kb20v
aHRtbC1jb2xsZWN0aW9ucy1uYW1lZC1nZXR0ZXItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAg
ICAgKiBmYXN0L2RvbS9odG1sLWNvbGxlY3Rpb25zLW5hbWVkLWdldHRlci5odG1sOiBBZGRlZC4K
KwogMjAxMi0xMS0wNiAgU3RlcGhlbiBXaGl0ZSAgPHNlbm9yYmxhbmNvQGNocm9taXVtLm9yZz4K
IAogICAgICAgICBbQ2hyb21pdW1dIE5ldyBiYXNlbGluZXMgZm9yIHNvbWUgQ1NTMyBmaWx0ZXIg
dGVzdHMuICBVbnJldmlld2VkLgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vY29sbGVjdGlv
bi1uYW1lZGl0ZW0tbW92ZS1iZXR3ZWVuLWRvY3VtZW50cy1leHBlY3RlZC50eHQKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vY29sbGVjdGlvbi1uYW1lZGl0ZW0tbW92ZS1iZXR3
ZWVuLWRvY3VtZW50cy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDEzMzY4NykKKysrIExheW91dFRl
c3RzL2Zhc3QvZG9tL2NvbGxlY3Rpb24tbmFtZWRpdGVtLW1vdmUtYmV0d2Vlbi1kb2N1bWVudHMt
ZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDQgKzEsNCBAQAotUEFTUyB0eXBlb2Yg
Y2hpbGRyZW4ubmFtZWRJdGVtKCdjaGlsZCcpIGlzICd1bmRlZmluZWQnCitQQVNTIGNoaWxkcmVu
Lm5hbWVkSXRlbSgnY2hpbGQnKSBpcyBudWxsCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0
cnVlCiAKIFRFU1QgQ09NUExFVEUKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL2NvbGxlY3Rp
b24tbmFtZWRpdGVtLW1vdmUtYmV0d2Vlbi1kb2N1bWVudHMuaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L2RvbS9jb2xsZWN0aW9uLW5hbWVkaXRlbS1tb3ZlLWJldHdlZW4tZG9j
dW1lbnRzLmh0bWwJKHJldmlzaW9uIDEzMzY4NykKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL2Nv
bGxlY3Rpb24tbmFtZWRpdGVtLW1vdmUtYmV0d2Vlbi1kb2N1bWVudHMuaHRtbAkod29ya2luZyBj
b3B5KQpAQCAtMzMsNyArMzMsNyBAQCB3aW5kb3cub25sb2FkID0gZnVuY3Rpb24oKQogZnVuY3Rp
b24gc3RlcDIoKQogewogICAgIGRvY3VtZW50LmFkb3B0Tm9kZShlbGVtZW50KTsKLSAgICBzaG91
bGRCZSgidHlwZW9mIGNoaWxkcmVuLm5hbWVkSXRlbSgnY2hpbGQnKSIsICIndW5kZWZpbmVkJyIp
OworICAgIHNob3VsZEJlTnVsbCgiY2hpbGRyZW4ubmFtZWRJdGVtKCdjaGlsZCcpIik7CiAgICAg
ZmluaXNoSlNUZXN0KCk7CiB9CiA8L3NjcmlwdD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9t
L2h0bWwtY29sbGVjdGlvbnMtbmFtZWQtZ2V0dGVyLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9odG1sLWNvbGxlY3Rpb25zLW5hbWVkLWdldHRlci1leHBl
Y3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9odG1sLWNvbGxl
Y3Rpb25zLW5hbWVkLWdldHRlci1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
MTAxIEBACitUaGlzIHRlc3RzIHZlcmlmaWVzIHRoYXQgbmFtZWRJdGVtIGFuZCBuYW1lZCBnZXR0
ZXIgcmV0dXJucyB0aGUgZmlyc3QgbWF0Y2hlZCBpdGVtIGZvciBhbGwgYnV0IGFsbCwgb3B0aW9u
cywgYW5kIGZvcm0gY29udHJvbHMgY29sbGVjdGlvbnMuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxs
IHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBM
RVRFIi4KKworCitkb2N1bWVudC5hbGwKK1BBU1MgZG9jdW1lbnQuYWxsLnRvU3RyaW5nKCkgaXMg
J1tvYmplY3QgSFRNTEFsbENvbGxlY3Rpb25dJworRkFJTCBkb2N1bWVudC5hbGwuX19wcm90b19f
Ll9fcHJvdG9fXy50b1N0cmluZygpIHNob3VsZCBiZSBbb2JqZWN0IEhUTUxDb2xsZWN0aW9uXS4g
V2FzIFtvYmplY3QgT2JqZWN0XS4KK1BBU1MgaW5pdGlhbExlbmd0aCA9IGRvY3VtZW50LmFsbC5s
ZW5ndGg7IGVsZW1lbnRzID0gW2luc2VydEVsZW1lbnRXaXRoSWQoJ2InLCAnZm9vJyksIGluc2Vy
dEVsZW1lbnRXaXRoSWQoJ3EnLCAnZm9vJyldOworICAgICBkb2N1bWVudC5hbGwubGVuZ3RoIGlz
IGluaXRpYWxMZW5ndGggKyAyOworUEFTUyBkb2N1bWVudC5hbGxbJ2ZvbyddLmxlbmd0aCBpcyAy
CitQQVNTIGRvY3VtZW50LmFsbFsnZm9vJ11bMF0gaXMgZWxlbWVudHNbMF0KK1BBU1MgZG9jdW1l
bnQuYWxsWydmb28nXVsxXSBpcyBlbGVtZW50c1sxXQorUEFTUyBlbGVtZW50c1swXS5wYXJlbnRO
b2RlLnJlbW92ZUNoaWxkKGVsZW1lbnRzWzBdKTsgZG9jdW1lbnQuYWxsWydmb28nXSBpcyBlbGVt
ZW50c1sxXQorCitmb3JtLmVsZW1lbnRzCitQQVNTIGZvcm0uZWxlbWVudHMudG9TdHJpbmcoKSBp
cyAnW29iamVjdCBIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbl0nCitQQVNTIGZvcm0uZWxlbWVu
dHMuX19wcm90b19fLl9fcHJvdG9fXy50b1N0cmluZygpIGlzICdbb2JqZWN0IEhUTUxDb2xsZWN0
aW9uUHJvdG90eXBlXScKK1BBU1MgZm9ybS5lbGVtZW50cy5sZW5ndGggaXMgMAorUEFTUyBlbGVt
ZW50cyA9IFtjcmVhdGVFbGVtZW50V2l0aElkKCdpbnB1dCcsICdmb28nKSwgY3JlYXRlRWxlbWVu
dFdpdGhJZCgnaW5wdXQnLCAnZm9vJyldOworICAgICBmb3JtLmFwcGVuZENoaWxkKGVsZW1lbnRz
WzBdKTsgZm9ybS5lbGVtZW50cy5sZW5ndGggaXMgMQorUEFTUyBmb3JtLmVsZW1lbnRzWydmb28n
XSBpcyBlbGVtZW50c1swXQorUEFTUyBmb3JtLmFwcGVuZENoaWxkKGVsZW1lbnRzWzFdKTsgZm9y
bS5lbGVtZW50cy5sZW5ndGggaXMgMgorUEFTUyBmb3JtLmVsZW1lbnRzWydmb28nXS50b1N0cmlu
ZygpIGlzICdbb2JqZWN0IFJhZGlvTm9kZUxpc3RdJworUEFTUyBmb3JtLmVsZW1lbnRzWydmb28n
XS5sZW5ndGggaXMgMgorUEFTUyBmb3JtLmVsZW1lbnRzWydmb28nXVswXSBpcyBlbGVtZW50c1sw
XQorUEFTUyBmb3JtLmVsZW1lbnRzWydmb28nXVsxXSBpcyBlbGVtZW50c1sxXQorUEFTUyBmb3Jt
LnJlbW92ZUNoaWxkKGVsZW1lbnRzWzBdKTsgZm9ybS5lbGVtZW50c1snZm9vJ10gaXMgZWxlbWVu
dHNbMV0KK1BBU1MgcmVtb3ZlVGVzdEVsZW1lbnRzKCk7IGZvcm0uZWxlbWVudHMubGVuZ3RoIGlz
IDAKKworc2VsZWN0Lm9wdGlvbnMKK1BBU1MgZm9ybS5hcHBlbmRDaGlsZChjcmVhdGVFbGVtZW50
V2l0aElkKCdzZWxlY3QnLCAnYmFyJykpOyBmb3JtLmVsZW1lbnRzLmxlbmd0aCBpcyAxCitQQVNT
IHNlbGVjdCA9IGZvcm0uZWxlbWVudHNbMF07IHNlbGVjdC5vcHRpb25zLnRvU3RyaW5nKCkgaXMg
J1tvYmplY3QgSFRNTE9wdGlvbnNDb2xsZWN0aW9uXScKK1BBU1Mgc2VsZWN0Lm9wdGlvbnMuX19w
cm90b19fLl9fcHJvdG9fXy50b1N0cmluZygpIGlzICdbb2JqZWN0IEhUTUxDb2xsZWN0aW9uUHJv
dG90eXBlXScKK1BBU1Mgc2VsZWN0Lm9wdGlvbnMubGVuZ3RoIGlzIDAKK1BBU1MgZWxlbWVudHMg
PSBbY3JlYXRlRWxlbWVudFdpdGhJZCgnb3B0aW9uJywgJ2ZvbycpLCBjcmVhdGVFbGVtZW50V2l0
aElkKCdvcHRpb24nLCAnZm9vJyldOworICAgICBzZWxlY3QuYXBwZW5kQ2hpbGQoZWxlbWVudHNb
MF0pOyBzZWxlY3Qub3B0aW9ucy5sZW5ndGggaXMgMQorUEFTUyBzZWxlY3Qub3B0aW9uc1snZm9v
J10gaXMgZWxlbWVudHNbMF0KK1BBU1Mgc2VsZWN0LmFwcGVuZENoaWxkKGVsZW1lbnRzWzFdKTsg
c2VsZWN0Lm9wdGlvbnMubGVuZ3RoIGlzIDIKK1BBU1Mgc2VsZWN0Lm9wdGlvbnNbJ2ZvbyddLnRv
U3RyaW5nKCkgaXMgJ1tvYmplY3QgTm9kZUxpc3RdJworUEFTUyBzZWxlY3Qub3B0aW9uc1snZm9v
J10ubGVuZ3RoIGlzIDIKK1BBU1Mgc2VsZWN0Lm9wdGlvbnNbJ2ZvbyddWzBdIGlzIGVsZW1lbnRz
WzBdCitQQVNTIHNlbGVjdC5vcHRpb25zWydmb28nXVsxXSBpcyBlbGVtZW50c1sxXQorUEFTUyBz
ZWxlY3QucmVtb3ZlQ2hpbGQoZWxlbWVudHNbMF0pOyBzZWxlY3Qub3B0aW9uc1snZm9vJ10gaXMg
ZWxlbWVudHNbMV0KK1BBU1Mgc2VsZWN0LmlubmVySFRNTCA9ICcnOyBzZWxlY3Qub3B0aW9ucy5s
ZW5ndGggaXMgMAorUEFTUyByZW1vdmVUZXN0RWxlbWVudHMoKTsgZm9ybS5lbGVtZW50cy5sZW5n
dGggaXMgMAorCitkb2N1bWVudC5pbWFnZXMKK1BBU1MgZG9jdW1lbnQuaW1hZ2VzLmxlbmd0aCBp
cyAwCitQQVNTIGVsZW1lbnRzWzBdID0gaW5zZXJ0RWxlbWVudFdpdGhJZCgnaW1nJywgJ2Zvbycp
OyBkb2N1bWVudC5pbWFnZXMubGVuZ3RoIGlzIDEKK1BBU1MgZWxlbWVudHNbMV0gPSBpbnNlcnRF
bGVtZW50V2l0aElkKCdpbWcnLCAnZm9vJyk7IGRvY3VtZW50LmltYWdlcy5sZW5ndGggaXMgMgor
UEFTUyBkb2N1bWVudC5pbWFnZXNbJ2ZvbyddIGlzIGVsZW1lbnRzWzBdCitQQVNTIHJlbW92ZVRl
c3RFbGVtZW50cygpOyBkb2N1bWVudC5pbWFnZXMubGVuZ3RoIGlzIDAKKworZG9jdW1lbnQuYXBw
bGV0cworUEFTUyBkb2N1bWVudC5hcHBsZXRzLmxlbmd0aCBpcyAwCitQQVNTIGVsZW1lbnRzWzBd
ID0gaW5zZXJ0RWxlbWVudFdpdGhJZCgnYXBwbGV0JywgJ2ZvbycpOyBkb2N1bWVudC5hcHBsZXRz
Lmxlbmd0aCBpcyAxCitQQVNTIGVsZW1lbnRzWzFdID0gaW5zZXJ0RWxlbWVudFdpdGhJZCgnYXBw
bGV0JywgJ2ZvbycpOyBkb2N1bWVudC5hcHBsZXRzLmxlbmd0aCBpcyAyCitQQVNTIGRvY3VtZW50
LmFwcGxldHNbJ2ZvbyddIGlzIGVsZW1lbnRzWzBdCitQQVNTIHJlbW92ZVRlc3RFbGVtZW50cygp
OyBkb2N1bWVudC5hcHBsZXRzLmxlbmd0aCBpcyAwCisKK2RvY3VtZW50LmVtYmVkcworUEFTUyBk
b2N1bWVudC5lbWJlZHMubGVuZ3RoIGlzIDAKK1BBU1MgZWxlbWVudHNbMF0gPSBpbnNlcnRFbGVt
ZW50V2l0aElkKCdlbWJlZCcsICdmb28nKTsgZG9jdW1lbnQuZW1iZWRzLmxlbmd0aCBpcyAxCitQ
QVNTIGVsZW1lbnRzWzFdID0gaW5zZXJ0RWxlbWVudFdpdGhJZCgnZW1iZWQnLCAnZm9vJyk7IGRv
Y3VtZW50LmVtYmVkcy5sZW5ndGggaXMgMgorUEFTUyBkb2N1bWVudC5lbWJlZHNbJ2ZvbyddIGlz
IGVsZW1lbnRzWzBdCitQQVNTIHJlbW92ZVRlc3RFbGVtZW50cygpOyBkb2N1bWVudC5lbWJlZHMu
bGVuZ3RoIGlzIDAKKworZG9jdW1lbnQuZm9ybXMKK1BBU1MgZG9jdW1lbnQuZm9ybXMubGVuZ3Ro
IGlzIDEKK1BBU1MgZWxlbWVudHNbMF0gPSBpbnNlcnRFbGVtZW50V2l0aElkKCdmb3JtJywgJ2Zv
bycpOyBkb2N1bWVudC5mb3Jtcy5sZW5ndGggaXMgMgorUEFTUyBlbGVtZW50c1sxXSA9IGluc2Vy
dEVsZW1lbnRXaXRoSWQoJ2Zvcm0nLCAnZm9vJyk7IGRvY3VtZW50LmZvcm1zLmxlbmd0aCBpcyAz
CitQQVNTIGRvY3VtZW50LmZvcm1zWydmb28nXSBpcyBlbGVtZW50c1swXQorUEFTUyByZW1vdmVU
ZXN0RWxlbWVudHMoKTsgZG9jdW1lbnQuZm9ybXMubGVuZ3RoIGlzIDEKKworZG9jdW1lbnQubGlu
a3MKK1BBU1MgZG9jdW1lbnQubGlua3MubGVuZ3RoIGlzIDAKK1BBU1MgZWxlbWVudHNbMF0gPSBp
bnNlcnRFbGVtZW50V2l0aElkKCdhJywgJ2ZvbycsIHsiaHJlZiI6InNvbWUgdXJsIn0pOyBkb2N1
bWVudC5saW5rcy5sZW5ndGggaXMgMQorUEFTUyBlbGVtZW50c1sxXSA9IGluc2VydEVsZW1lbnRX
aXRoSWQoJ2EnLCAnZm9vJywgeyJocmVmIjoic29tZSB1cmwifSk7IGRvY3VtZW50LmxpbmtzLmxl
bmd0aCBpcyAyCitQQVNTIGVsZW1lbnRzWzJdID0gaW5zZXJ0RWxlbWVudFdpdGhJZCgnYXJlYScs
ICdmb28nLCB7ImhyZWYiOiJzb21lIHVybCJ9KTsgZG9jdW1lbnQubGlua3MubGVuZ3RoIGlzIDMK
K1BBU1MgZG9jdW1lbnQubGlua3NbJ2ZvbyddIGlzIGVsZW1lbnRzWzBdCitQQVNTIHJlbW92ZVRl
c3RFbGVtZW50cygpOyBkb2N1bWVudC5saW5rcy5sZW5ndGggaXMgMAorCitkb2N1bWVudC5hbmNo
b3JzCitQQVNTIGRvY3VtZW50LmFuY2hvcnMubGVuZ3RoIGlzIDAKK1BBU1MgZWxlbWVudHNbMF0g
PSBpbnNlcnRFbGVtZW50V2l0aElkKCdhJywgJ2ZvbycsIHsibmFtZSI6InNvbWUgbmFtZSJ9KTsg
ZG9jdW1lbnQuYW5jaG9ycy5sZW5ndGggaXMgMQorUEFTUyBlbGVtZW50c1sxXSA9IGluc2VydEVs
ZW1lbnRXaXRoSWQoJ2EnLCAnZm9vJywgeyJuYW1lIjoic29tZSBuYW1lIn0pOyBkb2N1bWVudC5h
bmNob3JzLmxlbmd0aCBpcyAyCitQQVNTIGRvY3VtZW50LmFuY2hvcnNbJ2ZvbyddIGlzIGVsZW1l
bnRzWzBdCitQQVNTIHJlbW92ZVRlc3RFbGVtZW50cygpOyBkb2N1bWVudC5hbmNob3JzLmxlbmd0
aCBpcyAwCisKK2RvY3VtZW50LnNjcmlwdHMKK1BBU1MgZG9jdW1lbnQuc2NyaXB0cy5sZW5ndGgg
aXMgMgorUEFTUyBlbGVtZW50c1swXSA9IGluc2VydEVsZW1lbnRXaXRoSWQoJ3NjcmlwdCcsICdm
b28nKTsgZG9jdW1lbnQuc2NyaXB0cy5sZW5ndGggaXMgMworUEFTUyBlbGVtZW50c1sxXSA9IGlu
c2VydEVsZW1lbnRXaXRoSWQoJ3NjcmlwdCcsICdmb28nKTsgZG9jdW1lbnQuc2NyaXB0cy5sZW5n
dGggaXMgNAorUEFTUyBkb2N1bWVudC5zY3JpcHRzWydmb28nXSBpcyBlbGVtZW50c1swXQorUEFT
UyByZW1vdmVUZXN0RWxlbWVudHMoKTsgZG9jdW1lbnQuc2NyaXB0cy5sZW5ndGggaXMgMgorCitQ
QVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDog
TGF5b3V0VGVzdHMvZmFzdC9kb20vaHRtbC1jb2xsZWN0aW9ucy1uYW1lZC1nZXR0ZXIuaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9odG1sLWNvbGxlY3Rpb25zLW5hbWVk
LWdldHRlci5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vaHRtbC1j
b2xsZWN0aW9ucy1uYW1lZC1nZXR0ZXIuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMDYg
QEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSIuLi9qcy9y
ZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPGRpdiBpZD0iY29udGFpbmVyIj48
L2Rpdj4KKzxmb3JtPjwvZm9ybT4KKzxzY3JpcHQ+CisKK2Rlc2NyaXB0aW9uKCJUaGlzIHRlc3Rz
IHZlcmlmaWVzIHRoYXQgbmFtZWRJdGVtIGFuZCBuYW1lZCBnZXR0ZXIgcmV0dXJucyB0aGUgZmly
c3QgbWF0Y2hlZCBpdGVtIGZvciBhbGwgYnV0IGFsbCwgb3B0aW9ucywgYW5kIGZvcm0gY29udHJv
bHMgY29sbGVjdGlvbnMuIik7CisKK2Z1bmN0aW9uIGNyZWF0ZUVsZW1lbnRXaXRoSWQobmFtZSwg
aWQsIGF0dHJpYnV0ZXMpIHsKKyAgICB2YXIgZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQobmFtZSk7CisgICAgZWxlbWVudC5pZCA9IGlkOworICAgIGZvciAodmFyIGF0dHIgaW4gYXR0
cmlidXRlcykKKyAgICAgICAgZWxlbWVudC5zZXRBdHRyaWJ1dGUoYXR0ciwgYXR0cmlidXRlc1th
dHRyXSk7CisgICAgcmV0dXJuIGVsZW1lbnQ7Cit9CisKK2Z1bmN0aW9uIGluc2VydEVsZW1lbnRX
aXRoSWQobmFtZSwgaWQsIGF0dHJpYnV0ZXMpIHsKKyAgICB2YXIgZWxlbWVudCA9IGNyZWF0ZUVs
ZW1lbnRXaXRoSWQobmFtZSwgaWQsIGF0dHJpYnV0ZXMpOworICAgIGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCdjb250YWluZXInKS5hcHBlbmRDaGlsZChlbGVtZW50KTsKKyAgICByZXR1cm4gZWxl
bWVudDsKK30KKworZnVuY3Rpb24gcmVtb3ZlVGVzdEVsZW1lbnRzKCkgeworICAgIGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCdjb250YWluZXInKS5pbm5lckhUTUwgPSAnJzsKKyAgICBkb2N1bWVu
dC5xdWVyeVNlbGVjdG9yKCdmb3JtJykuaW5uZXJIVE1MID0gJyc7Cit9CisKK3ZhciBuZXdEb2Mg
PSBkb2N1bWVudC5pbXBsZW1lbnRhdGlvbi5jcmVhdGVEb2N1bWVudChudWxsLCAnaHRtbCcsIG51
bGwpOwordmFyIGVsZW1lbnRzOworCitkZWJ1ZygnZG9jdW1lbnQuYWxsJyk7CitzaG91bGRCZSgi
ZG9jdW1lbnQuYWxsLnRvU3RyaW5nKCkiLCAiJ1tvYmplY3QgSFRNTEFsbENvbGxlY3Rpb25dJyIp
Oworc2hvdWxkQmUoImRvY3VtZW50LmFsbC5fX3Byb3RvX18uX19wcm90b19fLnRvU3RyaW5nKCki
LCAiJ1tvYmplY3QgSFRNTENvbGxlY3Rpb25dJyIpOworc2hvdWxkQmUoImluaXRpYWxMZW5ndGgg
PSBkb2N1bWVudC5hbGwubGVuZ3RoOyBlbGVtZW50cyA9IFtpbnNlcnRFbGVtZW50V2l0aElkKCdi
JywgJ2ZvbycpLCBpbnNlcnRFbGVtZW50V2l0aElkKCdxJywgJ2ZvbycpXTtcbiIKKyAgICArICIg
ICAgIGRvY3VtZW50LmFsbC5sZW5ndGgiLCAiaW5pdGlhbExlbmd0aCArIDI7Iik7CitzaG91bGRC
ZSgiZG9jdW1lbnQuYWxsWydmb28nXS5sZW5ndGgiLCAiMiIpOworc2hvdWxkQmUoImRvY3VtZW50
LmFsbFsnZm9vJ11bMF0iLCAiZWxlbWVudHNbMF0iKTsKK3Nob3VsZEJlKCJkb2N1bWVudC5hbGxb
J2ZvbyddWzFdIiwgImVsZW1lbnRzWzFdIik7CitzaG91bGRCZSgiZWxlbWVudHNbMF0ucGFyZW50
Tm9kZS5yZW1vdmVDaGlsZChlbGVtZW50c1swXSk7IGRvY3VtZW50LmFsbFsnZm9vJ10iLCAnZWxl
bWVudHNbMV0nKTsKK2RlYnVnKCIiKTsKKwordmFyIGZvcm0gPSBkb2N1bWVudC5xdWVyeVNlbGVj
dG9yKCdmb3JtJyk7CitkZWJ1ZygiZm9ybS5lbGVtZW50cyIpOworc2hvdWxkQmUoImZvcm0uZWxl
bWVudHMudG9TdHJpbmcoKSIsICInW29iamVjdCBIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbl0n
Iik7CitzaG91bGRCZSgiZm9ybS5lbGVtZW50cy5fX3Byb3RvX18uX19wcm90b19fLnRvU3RyaW5n
KCkiLCAiJ1tvYmplY3QgSFRNTENvbGxlY3Rpb25Qcm90b3R5cGVdJyIpOworc2hvdWxkQmUoImZv
cm0uZWxlbWVudHMubGVuZ3RoIiwgIjAiKTsKK3Nob3VsZEJlKCJlbGVtZW50cyA9IFtjcmVhdGVF
bGVtZW50V2l0aElkKCdpbnB1dCcsICdmb28nKSwgY3JlYXRlRWxlbWVudFdpdGhJZCgnaW5wdXQn
LCAnZm9vJyldO1xuIgorICAgICsgIiAgICAgZm9ybS5hcHBlbmRDaGlsZChlbGVtZW50c1swXSk7
IGZvcm0uZWxlbWVudHMubGVuZ3RoIiwgIjEiKTsKK3Nob3VsZEJlKCJmb3JtLmVsZW1lbnRzWydm
b28nXSIsICJlbGVtZW50c1swXSIpOworc2hvdWxkQmUoImZvcm0uYXBwZW5kQ2hpbGQoZWxlbWVu
dHNbMV0pOyBmb3JtLmVsZW1lbnRzLmxlbmd0aCIsICIyIik7CitzaG91bGRCZSgiZm9ybS5lbGVt
ZW50c1snZm9vJ10udG9TdHJpbmcoKSIsICInW29iamVjdCBSYWRpb05vZGVMaXN0XSciKTsKK3No
b3VsZEJlKCJmb3JtLmVsZW1lbnRzWydmb28nXS5sZW5ndGgiLCAiMiIpOworc2hvdWxkQmUoImZv
cm0uZWxlbWVudHNbJ2ZvbyddWzBdIiwgImVsZW1lbnRzWzBdIik7CitzaG91bGRCZSgiZm9ybS5l
bGVtZW50c1snZm9vJ11bMV0iLCAiZWxlbWVudHNbMV0iKTsKK3Nob3VsZEJlKCJmb3JtLnJlbW92
ZUNoaWxkKGVsZW1lbnRzWzBdKTsgZm9ybS5lbGVtZW50c1snZm9vJ10iLCAiZWxlbWVudHNbMV0i
KTsKK3Nob3VsZEJlKCJyZW1vdmVUZXN0RWxlbWVudHMoKTsgZm9ybS5lbGVtZW50cy5sZW5ndGgi
LCAiMCIpOworZGVidWcoIiIpOworCitkZWJ1Zygic2VsZWN0Lm9wdGlvbnMiKTsKK3Nob3VsZEJl
KCJmb3JtLmFwcGVuZENoaWxkKGNyZWF0ZUVsZW1lbnRXaXRoSWQoJ3NlbGVjdCcsICdiYXInKSk7
IGZvcm0uZWxlbWVudHMubGVuZ3RoIiwgIjEiKTsKK3Nob3VsZEJlKCJzZWxlY3QgPSBmb3JtLmVs
ZW1lbnRzWzBdOyBzZWxlY3Qub3B0aW9ucy50b1N0cmluZygpIiwgIidbb2JqZWN0IEhUTUxPcHRp
b25zQ29sbGVjdGlvbl0nIik7CitzaG91bGRCZSgic2VsZWN0Lm9wdGlvbnMuX19wcm90b19fLl9f
cHJvdG9fXy50b1N0cmluZygpIiwgIidbb2JqZWN0IEhUTUxDb2xsZWN0aW9uUHJvdG90eXBlXSci
KTsKK3Nob3VsZEJlKCJzZWxlY3Qub3B0aW9ucy5sZW5ndGgiLCAiMCIpOworc2hvdWxkQmUoImVs
ZW1lbnRzID0gW2NyZWF0ZUVsZW1lbnRXaXRoSWQoJ29wdGlvbicsICdmb28nKSwgY3JlYXRlRWxl
bWVudFdpdGhJZCgnb3B0aW9uJywgJ2ZvbycpXTtcbiIKKyAgICArICIgICAgIHNlbGVjdC5hcHBl
bmRDaGlsZChlbGVtZW50c1swXSk7IHNlbGVjdC5vcHRpb25zLmxlbmd0aCIsICIxIik7CitzaG91
bGRCZSgic2VsZWN0Lm9wdGlvbnNbJ2ZvbyddIiwgImVsZW1lbnRzWzBdIik7CitzaG91bGRCZSgi
c2VsZWN0LmFwcGVuZENoaWxkKGVsZW1lbnRzWzFdKTsgc2VsZWN0Lm9wdGlvbnMubGVuZ3RoIiwg
IjIiKTsKK3Nob3VsZEJlKCJzZWxlY3Qub3B0aW9uc1snZm9vJ10udG9TdHJpbmcoKSIsICInW29i
amVjdCBOb2RlTGlzdF0nIik7CitzaG91bGRCZSgic2VsZWN0Lm9wdGlvbnNbJ2ZvbyddLmxlbmd0
aCIsICIyIik7CitzaG91bGRCZSgic2VsZWN0Lm9wdGlvbnNbJ2ZvbyddWzBdIiwgImVsZW1lbnRz
WzBdIik7CitzaG91bGRCZSgic2VsZWN0Lm9wdGlvbnNbJ2ZvbyddWzFdIiwgImVsZW1lbnRzWzFd
Iik7CitzaG91bGRCZSgic2VsZWN0LnJlbW92ZUNoaWxkKGVsZW1lbnRzWzBdKTsgc2VsZWN0Lm9w
dGlvbnNbJ2ZvbyddIiwgImVsZW1lbnRzWzFdIik7CitzaG91bGRCZSgic2VsZWN0LmlubmVySFRN
TCA9ICcnOyBzZWxlY3Qub3B0aW9ucy5sZW5ndGgiLCAiMCIpOworc2hvdWxkQmUoInJlbW92ZVRl
c3RFbGVtZW50cygpOyBmb3JtLmVsZW1lbnRzLmxlbmd0aCIsICIwIik7CitkZWJ1ZygiIik7CisK
K2Z1bmN0aW9uIHRlc3RGaXJzdEl0ZW1SZXR1cm5zRmlyc3RNYXRjaChjb2xsZWN0aW9uLCBpbml0
aWFsTGVuZ3RoLCBlbGVtZW50TmFtZXMsIGF0dHJpYnV0ZXMpIHsKKyAgICBkZWJ1Zyhjb2xsZWN0
aW9uKTsKKyAgICBzaG91bGRCZShjb2xsZWN0aW9uICsgIi5sZW5ndGgiLCBpbml0aWFsTGVuZ3Ro
LnRvU3RyaW5nKCkpOworICAgIGVsZW1lbnRzID0gW107CisgICAgZm9yICh2YXIgaSA9IDA7IGkg
PCBlbGVtZW50TmFtZXMubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgdmFyIGF0dHJzID0gYXR0cmli
dXRlcyA/ICIsICIgKyBKU09OLnN0cmluZ2lmeShhdHRyaWJ1dGVzKSA6ICcnOworICAgICAgICBz
aG91bGRCZSgiZWxlbWVudHNbIiArIGkgKyAiXSA9IGluc2VydEVsZW1lbnRXaXRoSWQoJyIgKyBl
bGVtZW50TmFtZXNbaV0gKyAiJywgJ2ZvbyciICsgYXR0cnMgKyAiKTsgIgorICAgICAgICAgICAg
KyBjb2xsZWN0aW9uICsgIi5sZW5ndGgiLCAoaW5pdGlhbExlbmd0aCArIGkgKyAxKS50b1N0cmlu
ZygpKTsKKyAgICB9CisgICAgc2hvdWxkQmUoY29sbGVjdGlvbiArICJbJ2ZvbyddIiwgImVsZW1l
bnRzWzBdIik7CisgICAgc2hvdWxkQmUoInJlbW92ZVRlc3RFbGVtZW50cygpOyAiICsgY29sbGVj
dGlvbiArICIubGVuZ3RoIiwgaW5pdGlhbExlbmd0aC50b1N0cmluZygpKTsKKyAgICBkZWJ1Zygi
Iik7Cit9CisKK3Rlc3RGaXJzdEl0ZW1SZXR1cm5zRmlyc3RNYXRjaCgnZG9jdW1lbnQuaW1hZ2Vz
JywgMCwgWydpbWcnLCAnaW1nJ10pOwordGVzdEZpcnN0SXRlbVJldHVybnNGaXJzdE1hdGNoKCdk
b2N1bWVudC5hcHBsZXRzJywgMCwgWydhcHBsZXQnLCAnYXBwbGV0J10pOwordGVzdEZpcnN0SXRl
bVJldHVybnNGaXJzdE1hdGNoKCdkb2N1bWVudC5lbWJlZHMnLCAwLCBbJ2VtYmVkJywgJ2VtYmVk
J10pOwordGVzdEZpcnN0SXRlbVJldHVybnNGaXJzdE1hdGNoKCdkb2N1bWVudC5mb3JtcycsIDEs
IFsnZm9ybScsICdmb3JtJ10pOwordGVzdEZpcnN0SXRlbVJldHVybnNGaXJzdE1hdGNoKCdkb2N1
bWVudC5saW5rcycsIDAsIFsnYScsICdhJywgJ2FyZWEnXSwgeydocmVmJzogJ3NvbWUgdXJsJ30p
OwordGVzdEZpcnN0SXRlbVJldHVybnNGaXJzdE1hdGNoKCdkb2N1bWVudC5hbmNob3JzJywgMCwg
WydhJywgJ2EnXSwgeyduYW1lJzogJ3NvbWUgbmFtZSd9KTsKK3Rlc3RGaXJzdEl0ZW1SZXR1cm5z
Rmlyc3RNYXRjaCgnZG9jdW1lbnQuc2NyaXB0cycsIDIsIFsnc2NyaXB0JywgJ3NjcmlwdCddKTsK
KwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CisKKzwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5Pgor
PC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>172703</attachid>
            <date>2012-11-06 19:32:22 -0800</date>
            <delta_ts>2012-11-07 13:20:53 -0800</delta_ts>
            <desc>Fixed builds</desc>
            <filename>bug-101311-20121106193034.patch</filename>
            <type>text/plain</type>
            <size>99359</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEzMzY5MykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEwNCBAQAorMjAxMi0xMS0wNiAgUnlvc3Vr
ZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KKworICAgICAgICBNYWtlIG5hbWVkSXRlbSByZXR1
cm4gYSBub2RlIGxpc3Qgb25seSBpbiBIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbiBhbmQgSFRN
TE9wdGlvbnNDb2xsZWN0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMDEzMTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBJbnRyb2R1Y2UgdHdvIG5ldyBpbnRlcmZhY2VzIEhUTUxGb3JtQ29udHJvbHND
b2xsZWN0aW9uIGFuZCBIVE1MT3B0aW9uc0NvbGxlY3Rpb24gdG8gYmUgdXNlZCBieSBmb3JtLmVs
ZW1lbnRzCisgICAgICAgIGFuZCBzZWxlY3Qub3B0aW9ucy4gVGhlc2UgdHdvIGludGVyZmFjZXMg
aGF2ZSB0aGUgbmFtZWQgZ2V0dGVyIGFuZCBuYW1lZEl0ZW0gdGhhdCByZXR1cm5zIGEgbGl2ZSBO
b2RlTGlzdCB3aGVuCisgICAgICAgIHRoZXJlIGFyZSBtdWx0aXBsZSBtYXRjaGVzLiBJbnRyb2R1
Y2luZyB0aGVzZSB0d28gaW50ZXJmYWNlcyBhbGxvdyB1cyB0byAicmVndWxhciIgSFRNTENvbGxl
Y3Rpb24ncyBuYW1lZCBnZXR0ZXIKKyAgICAgICAgYW5kIG5hbWVkSXRlbSB0byByZXR1cm4gZXhh
Y3RseSBvbmUgbm9kZSBvciBudWxsIGFzIHNwZWNpZmllZCBpbiBIVE1MNToKKyAgICAgICAgaHR0
cDovL3d3dy53aGF0d2cub3JnL3NwZWNzL3dlYi1hcHBzL2N1cnJlbnQtd29yay9tdWx0aXBhZ2Uv
Y29tbW9uLWRvbS1pbnRlcmZhY2VzLmh0bWwjY29sbGVjdGlvbnMtMAorCisgICAgICAgIFVuZm9y
dHVuYXRlbHksIEhUTUxPcHRpb25zQ29sbGVjdGlvbiBzdGlsbCBoYXMgYSBidWcgdGhhdCBpdHMg
bmFtZWQgZ2V0dGVyIGFuZCBuYW1lZEl0ZW0gcmV0dXJucworICAgICAgICBhIHN0YXRpYyBOb2Rl
TGlzdCBpbnN0ZWFkIG9mIGEgbGl2ZSBOb2RlTGlzdCAoRHluYW1pY05vZGVMaXN0KSBhdCB0aGUg
bW9tZW50LgorCisgICAgICAgIEFsc28gZ290IHJpZCBvZiBEb2N1bWVudDo6b2JqZWN0cyBzaW5j
ZSBpdCdzIG5vdCBleHBvc2VkIGluIElETCBvciBjYWxsZWQgYW55d2hlcmUuCisKKyAgICAgICAg
VGVzdDogZmFzdC9kb20vaHRtbC1jb2xsZWN0aW9ucy1uYW1lZEl0ZW0uaHRtbAorCisgICAgICAg
ICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMuY3BwOgorICAgICAg
ICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMucHJpOgor
ICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogVGFyZ2V0LnByaToKKyAg
ICAgICAgKiBVc2VKU0MuY21ha2U6CisgICAgICAgICogVXNlVjguY21ha2U6CisgICAgICAgICog
V2ViQ29yZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ajoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0JpbmRpbmdzQWxsSW5PbmUuY3BwOgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL0pTSFRNTEFsbENvbGxlY3Rpb25DdXN0b20uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Z2V0TmFtZWRJdGVtcyk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNIVE1MQ29s
bGVjdGlvbkN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0hUTUxDb2xsZWN0aW9uOjpu
YW1lR2V0dGVyKTogTm93IHJldHVybnMgZXhhY3RseSBvbmUgbm9kZSBvciBudWxsLgorICAgICAg
ICAoV2ViQ29yZTo6dG9KUyk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNIVE1MRm9ybUNvbnRy
b2xzQ29sbGVjdGlvbkN1c3RvbS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Z2V0TmFt
ZWRJdGVtcyk6IFJldHVybnMgUmFkaW9Ob2RlTGlzdCB3aGVuIHRoZXJlIGFyZSBtdWx0aXBsZSBt
YXRjaGVzLgorICAgICAgICAoV2ViQ29yZTo6SlNIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbjo6
Y2FuR2V0SXRlbXNGb3JOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkpTSFRNTEZvcm1Db250cm9s
c0NvbGxlY3Rpb246Om5hbWVHZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SlNIVE1MRm9ybUNv
bnRyb2xzQ29sbGVjdGlvbjo6bmFtZWRJdGVtKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0hU
TUxPcHRpb25zQ29sbGVjdGlvbkN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpnZXROYW1l
ZEl0ZW1zKTogUmV0dXJucyBhIHN0YXRpYyBOb2RlTGlzdCB3aGVuIHRoZXJlIGFyZSBtdWx0aXBs
ZSBtYXRjaGVzLgorICAgICAgICBUaGlzIGlzIGEgYnVnLiBJdCBzaG91bGQgYmUgYSBsaXZlIE5v
ZGVMaXN0IGluc3RlYWQuCisgICAgICAgIChXZWJDb3JlOjpKU0hUTUxPcHRpb25zQ29sbGVjdGlv
bjo6Y2FuR2V0SXRlbXNGb3JOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkpTSFRNTE9wdGlvbnND
b2xsZWN0aW9uOjpuYW1lR2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkpTSFRNTE9wdGlvbnND
b2xsZWN0aW9uOjpuYW1lZEl0ZW0pOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0NvZGVHZW5lcmF0
b3JKUy5wbTogSW5jbHVkZSBKU05vZGUuanMgZm9yIGFsbCBIVE1MKkNvbGxlY3Rpb24gaW50ZXJm
YWNlcyBmb3Igc2ltcGxpY2l0eS4KKyAgICAgICAgKiBiaW5kaW5ncy9qcy9Db2RlR2VuZXJhdG9y
VjgucG06IEhUTUxPcHRpb25zQ29sbGVjdGlvbiBub3cgaW5oZXJpdHMgZnJvbSBIVE1MQ29sbGVj
dGlvbi4gU2VlCisgICAgICAgIGh0dHA6Ly93d3cud2hhdHdnLm9yZy9zcGVjcy93ZWItYXBwcy9j
dXJyZW50LXdvcmsvbXVsdGlwYWdlL2NvbW1vbi1kb20taW50ZXJmYWNlcy5odG1sI2h0bWxvcHRp
b25zY29sbGVjdGlvbgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxBbGxDb2xs
ZWN0aW9uQ3VzdG9tLmNwcDogUGFzcyBpbiBpc29sYXRlIHdoZW4gd2UgY2FuLgorICAgICAgICAo
V2ViQ29yZTo6Z2V0TmFtZWRJdGVtcyk6IEFkZGVkIGEgY29tbWVudCBhYm91dCBob3cgd2Ugc2hv
dWxkIGJlIHJldHVybmluZworICAgICAgICBhIEhUTUxDb2xsZWN0aW9uIHdoZW4gdGhlcmUgYXJl
IG11bHRpcGxlIG1hdGNoZXMuCisgICAgICAgIChXZWJDb3JlOjpnZXRJdGVtKToKKyAgICAgICAg
KFdlYkNvcmU6OlY4SFRNTEFsbENvbGxlY3Rpb246Om5hbWVkUHJvcGVydHlHZXR0ZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6VjhIVE1MQWxsQ29sbGVjdGlvbjo6bmFtZWRJdGVtQ2FsbGJhY2spOgor
ICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxDb2xsZWN0aW9uQ3VzdG9tLmNwcDog
Tm93IHJldHVybnMgZXhhY3RseSBvbmUgbm9kZSBvciBudWxsLgorICAgICAgICAoV2ViQ29yZSk6
CisgICAgICAgIChXZWJDb3JlOjpWOEhUTUxDb2xsZWN0aW9uOjpuYW1lZFByb3BlcnR5R2V0dGVy
KToKKyAgICAgICAgKFdlYkNvcmU6OnRvVjgpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3Rv
bS9WOEhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uQ3VzdG9tLmNwcDogQWRkZWQuCisgICAgICAg
IChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OmdldE5hbWVkSXRlbXMpOiBSZXR1cm5zIFJh
ZGlvTm9kZUxpc3Qgd2hlbiB0aGVyZSBhcmUgbXVsdGlwbGUgbWF0Y2hlcy4KKyAgICAgICAgKFdl
YkNvcmU6OlY4SFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb246Om5hbWVkUHJvcGVydHlHZXR0ZXIp
OgorICAgICAgICAoV2ViQ29yZTo6VjhIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbjo6bmFtZWRJ
dGVtQ2FsbGJhY2spOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxPcHRpb25z
Q29sbGVjdGlvbkN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpnZXROYW1lZEl0ZW1zKTog
UmV0dXJucyBhIHN0YXRpYyBOb2RlTGlzdCB3aGVuIHRoZXJlIGFyZSBtdWx0aXBsZSBtYXRjaGVz
LgorICAgICAgICBUaGlzIGlzIGEgYnVnLiBJdCBzaG91bGQgYmUgYSBsaXZlIE5vZGVMaXN0IGlu
c3RlYWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlY4SFRNTE9wdGlv
bnNDb2xsZWN0aW9uOjpuYW1lZFByb3BlcnR5R2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlY4
SFRNTE9wdGlvbnNDb2xsZWN0aW9uOjpuYW1lZEl0ZW1DYWxsYmFjayk6CisgICAgICAgICogZG9t
L0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOiBSZW1vdmVkIERvY3VtZW50OjpvYmpl
Y3RzIHNpbmNlIGl0IHdhcyBub3QgdXNlZCBhbnl3aGVyZS4KKyAgICAgICAgKiBkb20vRG9jdW1l
bnQuaDoKKyAgICAgICAgKERvY3VtZW50KToKKyAgICAgICAgKiBkb20vRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpFbGVtZW50UmFyZURhdGE6OmVuc3VyZUNhY2hlZEhUTUxDb2xsZWN0
aW9uKTogZm9ybS5lbGVtZW50cyBzaG91bGQgaW5zdGFudGlhdGUKKyAgICAgICAgYSBIVE1MRm9y
bUNvbnRyb2xzQ29sbGVjdGlvbiBpbnN0ZWFkIG9mIGEgSFRNTENvbGxlY3Rpb24uCisgICAgICAg
ICogaHRtbC9Db2xsZWN0aW9uVHlwZS5oOgorICAgICAgICAqIGh0bWwvSFRNTENvbGxlY3Rpb24u
aWRsOiBSZW1vdmVkIFtDdXN0b21dIHNpbmNlIG5hbWVkSXRlbSBpcyBhIHJlZ3VsYXIgZnVuY3Rp
b24gY2FsbCBub3cuCisgICAgICAgICogaHRtbC9IVE1MRmllbGRTZXRFbGVtZW50LmNwcDoKKyAg
ICAgICAgKiBodG1sL0hUTUxGaWVsZFNldEVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxG
b3JtQ29sbGVjdGlvbi5jcHA6IFJlbW92ZWQuCisgICAgICAgICogaHRtbC9IVE1MRm9ybUNvbGxl
Y3Rpb24uaDogUmVtb3ZlZC4KKyAgICAgICAgKiBodG1sL0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0
aW9uLmNwcDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbGxlY3Rp
b24uY3BwLgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb246OkhU
TUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGb3JtQ29u
dHJvbHNDb2xsZWN0aW9uOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZvcm1Db250
cm9sc0NvbGxlY3Rpb246On5IVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbik6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbjo6Zm9ybUNvbnRyb2xFbGVtZW50cyk6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbjo6Zm9ybUltYWdl
RWxlbWVudHMpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb246
OnZpcnR1YWxJdGVtQWZ0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZvcm1Db250cm9sc0Nv
bGxlY3Rpb246Om5hbWVkSXRlbSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRm9ybUNvbnRyb2xz
Q29sbGVjdGlvbjo6dXBkYXRlTmFtZUNhY2hlKToKKyAgICAgICAgKiBodG1sL0hUTUxGb3JtQ29u
dHJvbHNDb2xsZWN0aW9uLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZv
cm1Db2xsZWN0aW9uLmguCisgICAgICAgIChIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbik6Cisg
ICAgICAgICogaHRtbC9IVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5pZGw6IEFkZGVkLgorICAg
ICAgICAqIGh0bWwvSFRNTEZvcm1FbGVtZW50LmNwcDoKKyAgICAgICAgKiBodG1sL0hUTUxGb3Jt
RWxlbWVudC5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogaHRtbC9IVE1MT3B0aW9u
c0NvbGxlY3Rpb24uaWRsOgorCiAyMDEyLTExLTA2ICBIdWFuZyBEb25nc3VuZyAgPGx1eHRlbGxh
QGNvbXBhbnkxMDAubmV0PgogCiAgICAgICAgIEJ1aWxkIGZpeC4gcjEzMzYwMSBicm9rZSB0aGUg
V2luZG93cyBidWlsZC4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAxMzM2OTMp
CisrKyBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNDQx
LDYgKzQ0MSw3IEBAIFNFVChXZWJDb3JlX0lETF9GSUxFUwogICAgIGh0bWwvSFRNTEVtYmVkRWxl
bWVudC5pZGwKICAgICBodG1sL0hUTUxGaWVsZFNldEVsZW1lbnQuaWRsCiAgICAgaHRtbC9IVE1M
Rm9udEVsZW1lbnQuaWRsCisgICAgaHRtbC9IVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5pZGwK
ICAgICBodG1sL0hUTUxGb3JtRWxlbWVudC5pZGwKICAgICBodG1sL0hUTUxGcmFtZUVsZW1lbnQu
aWRsCiAgICAgaHRtbC9IVE1MRnJhbWVTZXRFbGVtZW50LmlkbApAQCAtMTM3Myw3ICsxMzc0LDcg
QEAgU0VUKFdlYkNvcmVfU09VUkNFUwogICAgIGh0bWwvSFRNTEVtYmVkRWxlbWVudC5jcHAKICAg
ICBodG1sL0hUTUxGaWVsZFNldEVsZW1lbnQuY3BwCiAgICAgaHRtbC9IVE1MRm9udEVsZW1lbnQu
Y3BwCi0gICAgaHRtbC9IVE1MRm9ybUNvbGxlY3Rpb24uY3BwCisgICAgaHRtbC9IVE1MRm9ybUNv
bnRyb2xzQ29sbGVjdGlvbi5jcHAKICAgICBodG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3Bw
CiAgICAgaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50V2l0aFN0YXRlLmNwcAogICAgIGh0bWwv
SFRNTEZvcm1FbGVtZW50LmNwcApJbmRleDogU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLmNwcAkocmV2
aXNpb24gMTMzNjkzKQorKysgU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNjMsNiArMTYzLDcgQEAKICNpbmNsdWRlICJKU0hUTUxFbWJlZEVsZW1l
bnQuY3BwIgogI2luY2x1ZGUgIkpTSFRNTEZpZWxkU2V0RWxlbWVudC5jcHAiCiAjaW5jbHVkZSAi
SlNIVE1MRm9udEVsZW1lbnQuY3BwIgorI2luY2x1ZGUgIkpTSFRNTEZvcm1Db250cm9sc0NvbGxl
Y3Rpb24uY3BwIgogI2luY2x1ZGUgIkpTSFRNTEZvcm1FbGVtZW50LmNwcCIKICNpbmNsdWRlICJK
U0hUTUxGcmFtZUVsZW1lbnQuY3BwIgogI2luY2x1ZGUgIkpTSFRNTEZyYW1lU2V0RWxlbWVudC5j
cHAiCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UJKHJldmlzaW9uIDEzMzY5MykK
KysrIFNvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UJKHdvcmtpbmcgY29weSkKQEAg
LTMwMCw2ICszMDAsNyBAQCBCSU5ESU5HX0lETFMgPSBcCiAgICAgJChXZWJDb3JlKS9odG1sL0hU
TUxFbWJlZEVsZW1lbnQuaWRsIFwKICAgICAkKFdlYkNvcmUpL2h0bWwvSFRNTEZpZWxkU2V0RWxl
bWVudC5pZGwgXAogICAgICQoV2ViQ29yZSkvaHRtbC9IVE1MRm9udEVsZW1lbnQuaWRsIFwKKyAg
ICAkKFdlYkNvcmUpL2h0bWwvSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uaWRsIFwKICAgICAk
KFdlYkNvcmUpL2h0bWwvSFRNTEZvcm1FbGVtZW50LmlkbCBcCiAgICAgJChXZWJDb3JlKS9odG1s
L0hUTUxGcmFtZUVsZW1lbnQuaWRsIFwKICAgICAkKFdlYkNvcmUpL2h0bWwvSFRNTEZyYW1lU2V0
RWxlbWVudC5pZGwgXApJbmRleDogU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMucHJpCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLnByaQkocmV2aXNpb24g
MTMzNjkzKQorKysgU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMucHJpCSh3b3JraW5nIGNv
cHkpCkBAIC0zNTAsNiArMzUwLDcgQEAgSURMX0JJTkRJTkdTICs9IFwKICAgICAkJFBXRC9odG1s
L0hUTUxFbWJlZEVsZW1lbnQuaWRsIFwKICAgICAkJFBXRC9odG1sL0hUTUxGaWVsZFNldEVsZW1l
bnQuaWRsIFwKICAgICAkJFBXRC9odG1sL0hUTUxGb250RWxlbWVudC5pZGwgXAorICAgICQkUFdE
L2h0bWwvSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uaWRsIFwKICAgICAkJFBXRC9odG1sL0hU
TUxGb3JtRWxlbWVudC5pZGwgXAogICAgICQkUFdEL2h0bWwvSFRNTEZyYW1lRWxlbWVudC5pZGwg
XAogICAgICQkUFdEL2h0bWwvSFRNTEZyYW1lU2V0RWxlbWVudC5pZGwgXApJbmRleDogU291cmNl
L1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9HTlVtYWtlZmlsZS5saXN0LmFtCShyZXZpc2lvbiAxMzM2OTMpCisrKyBTb3VyY2UvV2ViQ29y
ZS9HTlVtYWtlZmlsZS5saXN0LmFtCSh3b3JraW5nIGNvcHkpCkBAIC0zMzcsNiArMzM3LDggQEAg
d2ViY29yZV9idWlsdF9zb3VyY2VzICs9IFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTSFRN
TEZpZWxkU2V0RWxlbWVudC5oIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTSFRNTEZvbnRF
bGVtZW50LmNwcCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0hUTUxGb250RWxlbWVudC5o
IFwKKwlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24u
Y3BwIFwKKwlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rp
b24uaCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0hUTUxGb3JtRWxlbWVudC5jcHAgXAog
CURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNIVE1MRm9ybUVsZW1lbnQuaCBcCiAJRGVyaXZlZFNv
dXJjZXMvV2ViQ29yZS9KU0hUTUxGcmFtZUVsZW1lbnQuY3BwIFwKQEAgLTE0NDAsNiArMTQ0Miw3
IEBAIGRvbV9iaW5kaW5nX2lkbHMgKz0gXAogCSQoV2ViQ29yZSkvaHRtbC9IVE1MRW1iZWRFbGVt
ZW50LmlkbCBcCiAJJChXZWJDb3JlKS9odG1sL0hUTUxGaWVsZFNldEVsZW1lbnQuaWRsIFwKIAkk
KFdlYkNvcmUpL2h0bWwvSFRNTEZvbnRFbGVtZW50LmlkbCBcCisJJChXZWJDb3JlKS9odG1sL0hU
TUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmlkbCBcCiAJJChXZWJDb3JlKS9odG1sL0hUTUxGb3Jt
RWxlbWVudC5pZGwgXAogCSQoV2ViQ29yZSkvaHRtbC9IVE1MRnJhbWVFbGVtZW50LmlkbCBcCiAJ
JChXZWJDb3JlKS9odG1sL0hUTUxGcmFtZVNldEVsZW1lbnQuaWRsIFwKQEAgLTIzMjQsNiArMjMy
Nyw3IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNIVE1MRWxlbWVudEN1c3RvbS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
SFRNTEVtYmVkRWxlbWVudEN1c3RvbS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTSFRNTEVtYmVkRWxlbWVudEN1c3RvbS5oIFwKKwlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uQ3VzdG9tLmNwcCBcCiAJU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNIVE1MRm9ybUVsZW1lbnRDdXN0b20uY3BwIFwKIAlTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0hUTUxGcmFtZUVsZW1lbnRDdXN0b20uY3BwIFwKIAlTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxGcmFtZVNldEVsZW1lbnRDdXN0b20uY3BwIFwKQEAg
LTMzMjksOCArMzMzMyw4IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MRmllbGRTZXRFbGVtZW50LmggXAogCVNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZv
bnRFbGVtZW50LmNwcCBcCiAJU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9udEVsZW1lbnQuaCBc
Ci0JU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbGxlY3Rpb24uY3BwIFwKLQlTb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxGb3JtQ29sbGVjdGlvbi5oIFwKKwlTb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmNwcCBcCisJU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5oIFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxG
b3JtQ29udHJvbEVsZW1lbnQuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29u
dHJvbEVsZW1lbnQuaCBcCiAJU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVt
ZW50V2l0aFN0YXRlLmNwcCBcCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkJKHJldmlzaW9uIDEzMzY5MykKKysr
IFNvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkJKHdvcmtpbmcgY29weSkKQEAgLTEzMiw2ICsxMzIs
NyBAQCBTT1VSQ0VTICs9IFwKICAgICAgYmluZGluZ3MvanMvSlNIVE1MRG9jdW1lbnRDdXN0b20u
Y3BwIFwKICAgICAgYmluZGluZ3MvanMvSlNIVE1MRWxlbWVudEN1c3RvbS5jcHAgXAogICAgICBi
aW5kaW5ncy9qcy9KU0hUTUxFbWJlZEVsZW1lbnRDdXN0b20uY3BwIFwKKyAgICAgYmluZGluZ3Mv
anMvSlNIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbkN1c3RvbS5jcHAgXAogICAgICBiaW5kaW5n
cy9qcy9KU0hUTUxGb3JtRWxlbWVudEN1c3RvbS5jcHAgXAogICAgICBiaW5kaW5ncy9qcy9KU0hU
TUxGcmFtZUVsZW1lbnRDdXN0b20uY3BwIFwKICAgICAgYmluZGluZ3MvanMvSlNIVE1MRnJhbWVT
ZXRFbGVtZW50Q3VzdG9tLmNwcCBcCkBAIC02MDIsNyArNjAzLDcgQEAgU09VUkNFUyArPSBcCiAg
ICAgaHRtbC9IVE1MRW1iZWRFbGVtZW50LmNwcCBcCiAgICAgaHRtbC9IVE1MRmllbGRTZXRFbGVt
ZW50LmNwcCBcCiAgICAgaHRtbC9IVE1MRm9udEVsZW1lbnQuY3BwIFwKLSAgICBodG1sL0hUTUxG
b3JtQ29sbGVjdGlvbi5jcHAgXAorICAgIGh0bWwvSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24u
Y3BwIFwKICAgICBodG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwIFwKICAgICBodG1sL0hU
TUxGb3JtQ29udHJvbEVsZW1lbnRXaXRoU3RhdGUuY3BwIFwKICAgICBodG1sL0hUTUxGb3JtRWxl
bWVudC5jcHAgXApAQCAtMTc1OCw3ICsxNzU5LDcgQEAgSEVBREVSUyArPSBcCiAgICAgaHRtbC9I
VE1MRW1iZWRFbGVtZW50LmggXAogICAgIGh0bWwvSFRNTEZpZWxkU2V0RWxlbWVudC5oIFwKICAg
ICBodG1sL0hUTUxGb250RWxlbWVudC5oIFwKLSAgICBodG1sL0hUTUxGb3JtQ29sbGVjdGlvbi5o
IFwKKyAgICBodG1sL0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmggXAogICAgIGh0bWwvSFRN
TEZvcm1Db250cm9sRWxlbWVudC5oIFwKICAgICBodG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnRX
aXRoU3RhdGUuaCBcCiAgICAgaHRtbC9IVE1MRm9ybUVsZW1lbnQuaCBcCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9Vc2VKU0MuY21ha2UKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvVXNlSlND
LmNtYWtlCShyZXZpc2lvbiAxMzM2OTMpCisrKyBTb3VyY2UvV2ViQ29yZS9Vc2VKU0MuY21ha2UJ
KHdvcmtpbmcgY29weSkKQEAgLTg0LDYgKzg0LDcgQEAgTElTVChBUFBFTkQgV2ViQ29yZV9TT1VS
Q0VTCiAgICAgYmluZGluZ3MvanMvSlNIVE1MRG9jdW1lbnRDdXN0b20uY3BwCiAgICAgYmluZGlu
Z3MvanMvSlNIVE1MRWxlbWVudEN1c3RvbS5jcHAKICAgICBiaW5kaW5ncy9qcy9KU0hUTUxFbWJl
ZEVsZW1lbnRDdXN0b20uY3BwCisgICAgYmluZGluZ3MvanMvSlNIVE1MRm9ybUNvbnRyb2xzQ29s
bGVjdGlvbkN1c3RvbS5jcHAKICAgICBiaW5kaW5ncy9qcy9KU0hUTUxGb3JtRWxlbWVudEN1c3Rv
bS5jcHAKICAgICBiaW5kaW5ncy9qcy9KU0hUTUxGcmFtZUVsZW1lbnRDdXN0b20uY3BwCiAgICAg
YmluZGluZ3MvanMvSlNIVE1MRnJhbWVTZXRFbGVtZW50Q3VzdG9tLmNwcApJbmRleDogU291cmNl
L1dlYkNvcmUvVXNlVjguY21ha2UKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvVXNlVjgu
Y21ha2UJKHJldmlzaW9uIDEzMzY5MykKKysrIFNvdXJjZS9XZWJDb3JlL1VzZVY4LmNtYWtlCSh3
b3JraW5nIGNvcHkpCkBAIC0xMDYsNiArMTA2LDcgQEAgTElTVChBUFBFTkQgV2ViQ29yZV9TT1VS
Q0VTCiAgICAgYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTENvbGxlY3Rpb25DdXN0b20uY3BwCiAg
ICAgYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTERvY3VtZW50Q3VzdG9tLmNwcAogICAgIGJpbmRp
bmdzL3Y4L2N1c3RvbS9WOEhUTUxFbGVtZW50Q3VzdG9tLmNwcAorICAgIGJpbmRpbmdzL3Y4L2N1
c3RvbS9WOEhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uQ3VzdG9tLmNwcAogICAgIGJpbmRpbmdz
L3Y4L2N1c3RvbS9WOEhUTUxGb3JtRWxlbWVudEN1c3RvbS5jcHAKICAgICBiaW5kaW5ncy92OC9j
dXN0b20vVjhIVE1MRnJhbWVFbGVtZW50Q3VzdG9tLmNwcAogICAgIGJpbmRpbmdzL3Y4L2N1c3Rv
bS9WOEhUTUxGcmFtZVNldEVsZW1lbnRDdXN0b20uY3BwCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLmd5cGkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCShy
ZXZpc2lvbiAxMzM2OTMpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkJKHdvcmtpbmcg
Y29weSkKQEAgLTEwODQsNiArMTA4NCw3IEBACiAgICAgICAgICAgICAnaHRtbC9IVE1MRW1iZWRF
bGVtZW50LmlkbCcsCiAgICAgICAgICAgICAnaHRtbC9IVE1MRmllbGRTZXRFbGVtZW50LmlkbCcs
CiAgICAgICAgICAgICAnaHRtbC9IVE1MRm9udEVsZW1lbnQuaWRsJywKKyAgICAgICAgICAgICdo
dG1sL0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmlkbCcsCiAgICAgICAgICAgICAnaHRtbC9I
VE1MRm9ybUVsZW1lbnQuaWRsJywKICAgICAgICAgICAgICdodG1sL0hUTUxGcmFtZUVsZW1lbnQu
aWRsJywKICAgICAgICAgICAgICdodG1sL0hUTUxGcmFtZVNldEVsZW1lbnQuaWRsJywKQEAgLTIw
NzcsNiArMjA3OCw3IEBACiAgICAgICAgICAgICAnYmluZGluZ3MvanMvSlNIVE1MRWxlbWVudEN1
c3RvbS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTSFRNTEVtYmVkRWxlbWVudEN1
c3RvbS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTSFRNTEVtYmVkRWxlbWVudEN1
c3RvbS5oJywKKyAgICAgICAgICAgICdiaW5kaW5ncy9qcy9KU0hUTUxGb3JtQ29udHJvbHNDb2xs
ZWN0aW9uQ3VzdG9tLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvanMvSlNIVE1MRm9ybUVs
ZW1lbnRDdXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy9qcy9KU0hUTUxGcmFtZUVs
ZW1lbnRDdXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy9qcy9KU0hUTUxGcmFtZVNl
dEVsZW1lbnRDdXN0b20uY3BwJywKQEAgLTIzOTQsNiArMjM5Niw3IEBACiAgICAgICAgICAgICAn
YmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTENvbGxlY3Rpb25DdXN0b20uY3BwJywKICAgICAgICAg
ICAgICdiaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MRG9jdW1lbnRDdXN0b20uY3BwJywKICAgICAg
ICAgICAgICdiaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MRWxlbWVudEN1c3RvbS5jcHAnLAorICAg
ICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9u
Q3VzdG9tLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTEZvcm1F
bGVtZW50Q3VzdG9tLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRN
TEZyYW1lRWxlbWVudEN1c3RvbS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOEhUTUxGcmFtZVNldEVsZW1lbnRDdXN0b20uY3BwJywKQEAgLTQxMDgsOCArNDExMSw4IEBA
CiAgICAgICAgICAgICAnaHRtbC9IVE1MRmllbGRTZXRFbGVtZW50LmgnLAogICAgICAgICAgICAg
J2h0bWwvSFRNTEZvbnRFbGVtZW50LmNwcCcsCiAgICAgICAgICAgICAnaHRtbC9IVE1MRm9udEVs
ZW1lbnQuaCcsCi0gICAgICAgICAgICAnaHRtbC9IVE1MRm9ybUNvbGxlY3Rpb24uY3BwJywKLSAg
ICAgICAgICAgICdodG1sL0hUTUxGb3JtQ29sbGVjdGlvbi5oJywKKyAgICAgICAgICAgICdodG1s
L0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmNwcCcsCisgICAgICAgICAgICAnaHRtbC9IVE1M
Rm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5oJywKICAgICAgICAgICAgICdodG1sL0hUTUxGb3JtQ29u
dHJvbEVsZW1lbnQuY3BwJywKICAgICAgICAgICAgICdodG1sL0hUTUxGb3JtQ29udHJvbEVsZW1l
bnRXaXRoU3RhdGUuY3BwJywKICAgICAgICAgICAgICdodG1sL0hUTUxGb3JtRWxlbWVudC5jcHAn
LApAQCAtNzYxNCw2ICs3NjE3LDggQEAKICAgICAgICAgICAgICc8KFBST0RVQ1RfRElSKS9EZXJp
dmVkU291cmNlcy9XZWJDb3JlL0pTSFRNTEZpZWxkU2V0RWxlbWVudC5oJywKICAgICAgICAgICAg
ICc8KFBST0RVQ1RfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTSFRNTEZvbnRFbGVtZW50
LmNwcCcsCiAgICAgICAgICAgICAnPChQUk9EVUNUX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29y
ZS9KU0hUTUxGb250RWxlbWVudC5oJywKKyAgICAgICAgICAgICc8KFBST0RVQ1RfRElSKS9EZXJp
dmVkU291cmNlcy9XZWJDb3JlL0pTSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uY3BwJywKKyAg
ICAgICAgICAgICc8KFBST0RVQ1RfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTSFRNTEZv
cm1Db250cm9sc0NvbGxlY3Rpb24uaCcsCiAgICAgICAgICAgICAnPChQUk9EVUNUX0RJUikvRGVy
aXZlZFNvdXJjZXMvV2ViQ29yZS9KU0hUTUxGb3JtRWxlbWVudC5jcHAnLAogICAgICAgICAgICAg
JzwoUFJPRFVDVF9ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNIVE1MRm9ybUVsZW1lbnQu
aCcsCiAgICAgICAgICAgICAnPChQUk9EVUNUX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9K
U0hUTUxGcmFtZUVsZW1lbnQuY3BwJywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDEzMzY5MykKKysrIFNvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5
KQpAQCAtMzc0Myw2ICszNzQzLDcgQEAKIAkJOUExQjZGOTcxNTg4NjlDODAwMTFBOEM0IC8qIEpT
RE9NU3RyaW5nTGlzdEN1c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA5QTFCNkY5NjE1ODg2OUM4MDAxMUE4QzQgLyogSlNET01TdHJpbmdMaXN0
Q3VzdG9tLmNwcCAqLzsgfTsKIAkJOUIwRkIxOTExNDBEQjU3OTAwMjI1ODhGIC8qIEhUVFBWYWxp
ZGF0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDlCMEZCMThGMTQwREI1NzkwMDIyNTg4RiAvKiBIVFRQVmFsaWRhdGlvbi5jcHAgKi87IH07CiAJ
CTlCMEZCMTkyMTQwREI1NzkwMDIyNTg4RiAvKiBIVFRQVmFsaWRhdGlvbi5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUIwRkIxOTAxNDBEQjU3OTAwMjI1
ODhGIC8qIEhUVFBWYWxpZGF0aW9uLmggKi87IH07CisJCTlCMUFCMDdDMTY0OEM3QzQwMDUxRjNG
MiAvKiBKU0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlCMUFCMDdCMTY0OEM3QzQwMDUxRjNG
MiAvKiBKU0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uQ3VzdG9tLmNwcCAqLzsgfTsKIAkJOUIy
NERFOEUxNTE5NEI5NTAwQzU5QzI3IC8qIEhUTUxCRElFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QjI0REU4QzE1MTk0Qjk1MDBDNTlDMjcg
LyogSFRNTEJESUVsZW1lbnQuaCAqLzsgfTsKIAkJOUIyQjdBQzExNTA5ODUwQTAwODkzMkNDIC8q
IE1pY3JvRGF0YUl0ZW1WYWx1ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA5QjJGN0NGNzE0NTYyMTIwMDA3RjhCNTAgLyogTWljcm9EYXRhSXRlbVZh
bHVlLmNwcCAqLzsgfTsKIAkJOUIyRDhBNzkxNDk5N0NDRjAwRUNFRjNFIC8qIFVuZG9TdGVwLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QjJEOEE3ODE0
OTk3Q0NGMDBFQ0VGM0UgLyogVW5kb1N0ZXAuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMzc2MSw2ICszNzYyLDggQEAKIAkJOUJDNkMyMUMxM0ND
Qzk3QjAwOEUwMzM3IC8qIEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlCQzZDMjFBMTNDQ0M5N0IwMDhF
MDMzNyAvKiBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5jcHAgKi87IH07CiAJCTlCRDBCRjkz
MTJBNDJCRjUwMDcyRkQ0MyAvKiBTY29wZWRFdmVudFF1ZXVlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QkQwQkY5MTEyQTQyQkY1MDA3MkZENDMgLyog
U2NvcGVkRXZlbnRRdWV1ZS5oICovOyB9OwogCQk5QkQwQkY5NDEyQTQyQkY1MDA3MkZENDMgLyog
U2NvcGVkRXZlbnRRdWV1ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA5QkQwQkY5MjEyQTQyQkY1MDA3MkZENDMgLyogU2NvcGVkRXZlbnRRdWV1ZS5j
cHAgKi87IH07CisJCTlCRjlBODgwMTY0OEREMkYwMDFDNkIyMyAvKiBKU0hUTUxGb3JtQ29udHJv
bHNDb2xsZWN0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDlCRjlBODdFMTY0OEREMkYwMDFDNkIyMyAvKiBKU0hUTUxGb3JtQ29udHJvbHNDb2xs
ZWN0aW9uLmNwcCAqLzsgfTsKKwkJOUJGOUE4ODExNjQ4REQyRjAwMUM2QjIzIC8qIEpTSFRNTEZv
cm1Db250cm9sc0NvbGxlY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDlCRjlBODdGMTY0OEREMkYwMDFDNkIyMyAvKiBKU0hUTUxGb3JtQ29udHJv
bHNDb2xsZWN0aW9uLmggKi87IH07CiAJCTlGMEQ2QjJFMTIxQkZFQkEwMDZDMDI4OCAvKiBJbnNw
ZWN0b3JQcm9maWxlckFnZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDlGMEQ2QjJDMTIxQkZFQkEwMDZDMDI4OCAvKiBJbnNwZWN0b3JQcm9maWxl
ckFnZW50LmNwcCAqLzsgfTsKIAkJOUYwRDZCMkYxMjFCRkVCQTAwNkMwMjg4IC8qIEluc3BlY3Rv
clByb2ZpbGVyQWdlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDlGMEQ2QjJEMTIxQkZFQkEwMDZDMDI4OCAvKiBJbnNwZWN0b3JQcm9maWxlckFnZW50
LmggKi87IH07CiAJCTlGM0I5NDdFMTIyNDE3NTgwMDUzMDRFNyAvKiBTY3JpcHRIZWFwU25hcHNo
b3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlGM0I5
NDdEMTIyNDE3NTgwMDUzMDRFNyAvKiBTY3JpcHRIZWFwU25hcHNob3QuaCAqLzsgfTsKQEAgLTQz
NDgsOCArNDM1MSw4IEBACiAJCUE4RDA2NUFFMEEyNDQ2Q0QwMDVFNzIwMyAvKiBKU0hUTUxGb3Jt
RWxlbWVudEN1c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBOEQwNjVBRDBBMjQ0NkNEMDA1RTcyMDMgLyogSlNIVE1MRm9ybUVsZW1lbnRDdXN0
b20uY3BwICovOyB9OwogCQlBOEQwNkIzOTBBMjY1RENEMDA1RTcyMDMgLyogSFRNTE5hbWVzLmgg
aW4gQ29weSBHZW5lcmF0ZWQgSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBBOEQwNkIzNzBBMjY1RENEMDA1RTcyMDMgLyogSFRNTE5hbWVzLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoKTsgfTsgfTsKIAkJQThEMDZCM0EwQTI2NURDRDAwNUU3MjAzIC8q
IEhUTUxOYW1lcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBBOEQwNkIzODBBMjY1RENEMDA1RTcyMDMgLyogSFRNTE5hbWVzLmNwcCAqLzsgfTsKLQkJ
QThERjNGQ0UwOTdGQTBGQzAwNTI5ODFCIC8qIEhUTUxGb3JtQ29sbGVjdGlvbi5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThERjNGQzYwOTdGQTBGQjAw
NTI5ODFCIC8qIEhUTUxGb3JtQ29sbGVjdGlvbi5oICovOyB9OwotCQlBOERGM0ZDRjA5N0ZBMEZD
MDA1Mjk4MUIgLyogSFRNTEZvcm1Db2xsZWN0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4REYzRkM3MDk3RkEwRkIwMDUyOTgxQiAvKiBIVE1M
Rm9ybUNvbGxlY3Rpb24uY3BwICovOyB9OworCQlBOERGM0ZDRTA5N0ZBMEZDMDA1Mjk4MUIgLyog
SFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEE4REYzRkM2MDk3RkEwRkIwMDUyOTgxQiAvKiBIVE1MRm9ybUNv
bnRyb2xzQ29sbGVjdGlvbi5oICovOyB9OworCQlBOERGM0ZDRjA5N0ZBMEZDMDA1Mjk4MUIgLyog
SFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQThERjNGQzcwOTdGQTBGQjAwNTI5ODFCIC8qIEhUTUxGb3Jt
Q29udHJvbHNDb2xsZWN0aW9uLmNwcCAqLzsgfTsKIAkJQThERjNGRDAwOTdGQTBGQzAwNTI5ODFC
IC8qIEhUTUxDb2xsZWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBOERGM0ZDODA5N0ZBMEZCMDA1Mjk4MUIgLyogSFRNTENvbGxlY3Rpb24uaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBOERGM0ZE
MTA5N0ZBMEZDMDA1Mjk4MUIgLyogSFRNTENvbGxlY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThERjNGQzkwOTdGQTBGQjAwNTI5ODFCIC8q
IEhUTUxDb2xsZWN0aW9uLmNwcCAqLzsgfTsKIAkJQThERjNGRDIwOTdGQTBGQzAwNTI5ODFCIC8q
IEhUTUxCYXNlRm9udEVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEE4REYzRkNBMDk3RkEwRkIwMDUyOTgxQiAvKiBIVE1MQmFzZUZvbnRFbGVt
ZW50LmggKi87IH07CkBAIC0xMTAxMSw2ICsxMTAxNCw4IEBACiAJCTlBMUI2Rjk2MTU4ODY5Qzgw
MDExQThDNCAvKiBKU0RPTVN0cmluZ0xpc3RDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gSlNET01TdHJpbmdMaXN0Q3VzdG9tLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJOUIwRkIxOEYxNDBEQjU3OTAwMjI1ODhGIC8qIEhUVFBWYWxpZGF0
aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEhUVFBWYWxpZGF0
aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUIwRkIxOTAxNDBEQjU3OTAw
MjI1ODhGIC8qIEhUVFBWYWxpZGF0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEhUVFBWYWxpZGF0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTlCMUFC
MDc5MTY0OEM2OUQwMDUxRjNGMiAvKiBIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5pZGwgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRo
ID0gSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk5QjFBQjA3QjE2NDhDN0M0MDA1MUYzRjIgLyogSlNIVE1MRm9ybUNvbnRyb2xzQ29s
bGVjdGlvbkN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBK
U0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uQ3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJOUIyNERFOEMxNTE5NEI5NTAwQzU5QzI3IC8qIEhUTUxCRElFbGVtZW50Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhUTUxCRElFbGVtZW50Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlCMkQ4QTc4MTQ5OTdDQ0YwMEVDRUYzRSAvKiBVbmRv
U3RlcC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBVbmRvU3RlcC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5QjJGN0NGNzE0NTYyMTIwMDA3RjhCNTAgLyogTWlj
cm9EYXRhSXRlbVZhbHVlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IE1pY3JvRGF0YUl0ZW1WYWx1ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0x
MTAzMCw2ICsxMTAzNSw4IEBACiAJCTlCQzZDMjFBMTNDQ0M5N0IwMDhFMDMzNyAvKiBIVE1MVGV4
dEZvcm1Db250cm9sRWxlbWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTlCRDBCRjkxMTJBNDJCRjUwMDcyRkQ0MyAvKiBTY29wZWRFdmVudFF1ZXVlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjb3BlZEV2ZW50UXVldWUuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUJEMEJGOTIxMkE0MkJGNTAwNzJGRDQzIC8qIFNj
b3BlZEV2ZW50UXVldWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
U2NvcGVkRXZlbnRRdWV1ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTlCRjlB
ODdFMTY0OEREMkYwMDFDNkIyMyAvKiBKU0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTSFRNTEZvcm1Db250cm9sc0Nv
bGxlY3Rpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5QkY5QTg3RjE2NDhE
RDJGMDAxQzZCMjMgLyogSlNIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBKU0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlGMEQ2QjJDMTIxQkZFQkEwMDZDMDI4OCAvKiBJ
bnNwZWN0b3JQcm9maWxlckFnZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEluc3BlY3RvclByb2ZpbGVyQWdlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk5RjBENkIyRDEyMUJGRUJBMDA2QzAyODggLyogSW5zcGVjdG9yUHJvZmlsZXJBZ2Vu
dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnNwZWN0b3JQcm9maWxlckFn
ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlGM0I5NDdEMTIyNDE3NTgwMDUz
MDRFNyAvKiBTY3JpcHRIZWFwU25hcHNob3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gU2NyaXB0SGVhcFNuYXBzaG90Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC0xMTUxNSw4ICsxMTUyMiw4IEBACiAJCUE4RDA2NUFEMEEyNDQ2Q0QwMDVFNzIwMyAvKiBKU0hU
TUxGb3JtRWxlbWVudEN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBKU0hUTUxGb3JtRWxlbWVudEN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUE4RDA2QjM3MEEyNjVEQ0QwMDVFNzIwMyAvKiBIVE1MTmFtZXMuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhUTUxOYW1lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlBOEQwNkIzODBBMjY1RENEMDA1RTcyMDMgLyogSFRNTE5hbWVzLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBIVE1MTmFtZXMuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQlBOERGM0ZDNjA5N0ZBMEZCMDA1Mjk4MUIgLyogSFRNTEZv
cm1Db2xsZWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBIVE1MRm9y
bUNvbGxlY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQThERjNGQzcwOTdG
QTBGQjAwNTI5ODFCIC8qIEhUTUxGb3JtQ29sbGVjdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gSFRNTEZvcm1Db2xsZWN0aW9uLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJQThERjNGQzYwOTdGQTBGQjAwNTI5ODFCIC8qIEhUTUxGb3JtQ29u
dHJvbHNDb2xsZWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBIVE1M
Rm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlB
OERGM0ZDNzA5N0ZBMEZCMDA1Mjk4MUIgLyogSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEhUTUxGb3JtQ29udHJvbHND
b2xsZWN0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQThERjNGQzgwOTdG
QTBGQjAwNTI5ODFCIC8qIEhUTUxDb2xsZWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBIVE1MQ29sbGVjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlBOERGM0ZDOTA5N0ZBMEZCMDA1Mjk4MUIgLyogSFRNTENvbGxlY3Rpb24uY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEhUTUxDb2xsZWN0aW9uLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQThERjNGQ0EwOTdGQTBGQjAwNTI5ODFCIC8qIEhUTUxC
YXNlRm9udEVsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhUTUxC
YXNlRm9udEVsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE3NTI4LDgg
KzE3NTM1LDkgQEAKIAkJCQlBOENGRjc5ODBBMTU2OTc4MDAwQTQyMzQgLyogSFRNTEZvbnRFbGVt
ZW50LmNwcCAqLywKIAkJCQlBOENGRjc5QzBBMTU2OTc4MDAwQTQyMzQgLyogSFRNTEZvbnRFbGVt
ZW50LmggKi8sCiAJCQkJMUFFMkE5RjUwQTFDREE1NzAwQjQyQjI1IC8qIEhUTUxGb250RWxlbWVu
dC5pZGwgKi8sCi0JCQkJQThERjNGQzcwOTdGQTBGQjAwNTI5ODFCIC8qIEhUTUxGb3JtQ29sbGVj
dGlvbi5jcHAgKi8sCi0JCQkJQThERjNGQzYwOTdGQTBGQjAwNTI5ODFCIC8qIEhUTUxGb3JtQ29s
bGVjdGlvbi5oICovLAorCQkJCUE4REYzRkM3MDk3RkEwRkIwMDUyOTgxQiAvKiBIVE1MRm9ybUNv
bnRyb2xzQ29sbGVjdGlvbi5jcHAgKi8sCisJCQkJQThERjNGQzYwOTdGQTBGQjAwNTI5ODFCIC8q
IEhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmggKi8sCisJCQkJOUIxQUIwNzkxNjQ4QzY5RDAw
NTFGM0YyIC8qIEhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmlkbCAqLywKIAkJCQlBODEzNjlC
MzA5NzM3NEY1MDBENzQ0NjMgLyogSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHAgKi8sCiAJCQkJ
QTgxMzY5QjIwOTczNzRGNTAwRDc0NDYzIC8qIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQuaCAqLywK
IAkJCQlFMTRGMUM0MjE0QjVEQUM2MDBFQTkwMDkgLyogSFRNTEZvcm1Db250cm9sRWxlbWVudFdp
dGhTdGF0ZS5jcHAgKi8sCkBAIC0xODQxNyw2ICsxODQyNSw4IEBACiAJCQkJMUFFMkFBMTMwQTFD
REFCMzAwQjQyQjI1IC8qIEpTSFRNTEZpZWxkU2V0RWxlbWVudC5oICovLAogCQkJCTFBRTJBQTE0
MEExQ0RBQjMwMEI0MkIyNSAvKiBKU0hUTUxGb250RWxlbWVudC5jcHAgKi8sCiAJCQkJMUFFMkFB
MTUwQTFDREFCMzAwQjQyQjI1IC8qIEpTSFRNTEZvbnRFbGVtZW50LmggKi8sCisJCQkJOUJGOUE4
N0UxNjQ4REQyRjAwMUM2QjIzIC8qIEpTSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uY3BwICov
LAorCQkJCTlCRjlBODdGMTY0OEREMkYwMDFDNkIyMyAvKiBKU0hUTUxGb3JtQ29udHJvbHNDb2xs
ZWN0aW9uLmggKi8sCiAJCQkJQThEMDY0RjkwQTIzQzBDQzAwNUU3MjAzIC8qIEpTSFRNTEZvcm1F
bGVtZW50LmNwcCAqLywKIAkJCQlBOEQwNjRGQTBBMjNDMENDMDA1RTcyMDMgLyogSlNIVE1MRm9y
bUVsZW1lbnQuaCAqLywKIAkJCQlCQzQ5MThDMDBCRkVBMDUwMDA5RDYzMTYgLyogSlNIVE1MRnJh
bWVFbGVtZW50LmNwcCAqLywKQEAgLTIwNDYxLDYgKzIwNDcxLDcgQEAKIAkJCQlCQzU4MjNGNDBD
MEE5OERGMDA1M0YxQjUgLyogSlNIVE1MRWxlbWVudEN1c3RvbS5jcHAgKi8sCiAJCQkJQkM2RDQ0
QkQwQzA3RUZCNjAwNzJEMkM5IC8qIEpTSFRNTEVtYmVkRWxlbWVudEN1c3RvbS5jcHAgKi8sCiAJ
CQkJRTFBRDE0MjAxMjk1RUE2QjAwQUNBOTg5IC8qIEpTSFRNTEVtYmVkRWxlbWVudEN1c3RvbS5o
ICovLAorCQkJCTlCMUFCMDdCMTY0OEM3QzQwMDUxRjNGMiAvKiBKU0hUTUxGb3JtQ29udHJvbHND
b2xsZWN0aW9uQ3VzdG9tLmNwcCAqLywKIAkJCQlBOEQwNjVBRDBBMjQ0NkNEMDA1RTcyMDMgLyog
SlNIVE1MRm9ybUVsZW1lbnRDdXN0b20uY3BwICovLAogCQkJCUJDMkVEN0E0MEM2QzBGMzYwMDky
MEJGRiAvKiBKU0hUTUxGcmFtZUVsZW1lbnRDdXN0b20uY3BwICovLAogCQkJCUJDRDQxQUJBMEMw
NjBERTgwMEMwRTQ0NiAvKiBKU0hUTUxGcmFtZVNldEVsZW1lbnRDdXN0b20uY3BwICovLApAQCAt
MjM3MTQsNyArMjM3MjUsNyBAQAogCQkJCUE4MTM2OUQ0MDk3Mzc0RjYwMEQ3NDQ2MyAvKiBIVE1M
RmllbGRTZXRFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlBOENGRjdBNjBBMTU2OTc4MDAw
QTQyMzQgLyogSFRNTEZvbnRFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk5NzdCMzg2RjEy
Mjg4M0U5MDBCODFGRjggLyogSFRNTEZvcm1hdHRpbmdFbGVtZW50TGlzdC5oIGluIEhlYWRlcnMg
Ki8sCi0JCQkJQThERjNGQ0UwOTdGQTBGQzAwNTI5ODFCIC8qIEhUTUxGb3JtQ29sbGVjdGlvbi5o
IGluIEhlYWRlcnMgKi8sCisJCQkJQThERjNGQ0UwOTdGQTBGQzAwNTI5ODFCIC8qIEhUTUxGb3Jt
Q29udHJvbHNDb2xsZWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlBODEzNjlDRTA5NzM3NEY2
MDBENzQ0NjMgLyogSFRNTEZvcm1Db250cm9sRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
RTE0RjFDNDUxNEI1REFDNjAwRUE5MDA5IC8qIEhUTUxGb3JtQ29udHJvbEVsZW1lbnRXaXRoU3Rh
dGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4MTM2OUQwMDk3Mzc0RjYwMEQ3NDQ2MyAvKiBIVE1M
Rm9ybUVsZW1lbnQuaCBpbiBIZWFkZXJzICovLApAQCAtMjU2OTIsNiArMjU3MDMsNyBAQAogCQkJ
CTNGRkZGOUE5MTU5RDlBNTUwMDIwQkJENSAvKiBXZWJLaXRDU1NWaWV3cG9ydFJ1bGUuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTkzQzM4QkZGMTY0NDczQzcwMDA5MUVCMiAvKiBTY3JvbGxpbmdTdGF0
ZUZpeGVkTm9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTNDMzhDMDMxNjQ0NzNERDAwMDkxRUIy
IC8qIFNjcm9sbGluZ1RyZWVGaXhlZE5vZGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTlCRjlBODgx
MTY0OEREMkYwMDFDNkIyMyAvKiBKU0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmggaW4gSGVh
ZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0g
MDsKIAkJfTsKQEAgLTI2OTIxLDcgKzI2OTMzLDcgQEAKIAkJCQlBODEzNjlENTA5NzM3NEY2MDBE
NzQ0NjMgLyogSFRNTEZpZWxkU2V0RWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBOENG
RjdBMjBBMTU2OTc4MDAwQTQyMzQgLyogSFRNTEZvbnRFbGVtZW50LmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTk3N0IzODZFMTIyODgzRTkwMEI4MUZGOCAvKiBIVE1MRm9ybWF0dGluZ0VsZW1lbnRM
aXN0LmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUE4REYzRkNGMDk3RkEwRkMwMDUyOTgxQiAvKiBI
VE1MRm9ybUNvbGxlY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQThERjNGQ0YwOTdGQTBG
QzAwNTI5ODFCIC8qIEhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUE4MTM2OUNGMDk3Mzc0RjYwMEQ3NDQ2MyAvKiBIVE1MRm9ybUNvbnRyb2xFbGVtZW50
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxNEYxQzQ0MTRCNURBQzYwMEVBOTAwOSAvKiBIVE1M
Rm9ybUNvbnRyb2xFbGVtZW50V2l0aFN0YXRlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4MTM2
OUQxMDk3Mzc0RjYwMEQ3NDQ2MyAvKiBIVE1MRm9ybUVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8s
CkBAIC0yNzMzNiw2ICsyNzM0OCw4IEBACiAJCQkJQkM2RDQ0QkUwQzA3RUZCNjAwNzJEMkM5IC8q
IEpTSFRNTEVtYmVkRWxlbWVudEN1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQUUyQUEy
NjBBMUNEQUI0MDBCNDJCMjUgLyogSlNIVE1MRmllbGRTZXRFbGVtZW50LmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTFBRTJBQTI4MEExQ0RBQjQwMEI0MkIyNSAvKiBKU0hUTUxGb250RWxlbWVudC5j
cHAgaW4gU291cmNlcyAqLywKKwkJCQk5QkY5QTg4MDE2NDhERDJGMDAxQzZCMjMgLyogSlNIVE1M
Rm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk5QjFBQjA3QzE2
NDhDN0M0MDA1MUYzRjIgLyogSlNIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbkN1c3RvbS5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlBOEQwNjRGQjBBMjNDMENDMDA1RTcyMDMgLyogSlNIVE1MRm9y
bUVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQThEMDY1QUUwQTI0NDZDRDAwNUU3MjAz
IC8qIEpTSFRNTEZvcm1FbGVtZW50Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDNDkx
OEM2MEJGRUEwNTAwMDlENjMxNiAvKiBKU0hUTUxGcmFtZUVsZW1lbnQuY3BwIGluIFNvdXJjZXMg
Ki8sCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0JpbmRpbmdzQWxsSW5PbmUu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQmluZGluZ3NB
bGxJbk9uZS5jcHAJKHJldmlzaW9uIDEzMzY5MykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTQmluZGluZ3NBbGxJbk9uZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg5LDYgKzg5LDcg
QEAKICNpbmNsdWRlICJKU0hUTUxEb2N1bWVudEN1c3RvbS5jcHAiCiAjaW5jbHVkZSAiSlNIVE1M
RWxlbWVudEN1c3RvbS5jcHAiCiAjaW5jbHVkZSAiSlNIVE1MRW1iZWRFbGVtZW50Q3VzdG9tLmNw
cCIKKyNpbmNsdWRlICJKU0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uQ3VzdG9tLmNwcCIKICNp
bmNsdWRlICJKU0hUTUxGb3JtRWxlbWVudEN1c3RvbS5jcHAiCiAjaW5jbHVkZSAiSlNIVE1MRnJh
bWVFbGVtZW50Q3VzdG9tLmNwcCIKICNpbmNsdWRlICJKU0hUTUxGcmFtZVNldEVsZW1lbnRDdXN0
b20uY3BwIgpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MQWxsQ29sbGVj
dGlvbkN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNIVE1MQWxsQ29sbGVjdGlvbkN1c3RvbS5jcHAJKHJldmlzaW9uIDEzMzY5MykKKysrIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEFsbENvbGxlY3Rpb25DdXN0b20uY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC01MCw5ICs1MCw4IEBAIHN0YXRpYyBKU1ZhbHVlIGdldE5hbWVkSXRlbXMo
RXhlY1N0YXRlKiAKICAgICBpZiAobmFtZWRJdGVtcy5zaXplKCkgPT0gMSkKICAgICAgICAgcmV0
dXJuIHRvSlMoZXhlYywgY29sbGVjdGlvbi0+Z2xvYmFsT2JqZWN0KCksIG5hbWVkSXRlbXNbMF0u
Z2V0KCkpOwogCi0gICAgLy8gRklYTUU6IEhUTUw1IHNwZWNpZmllcyB0aGF0IHRoaXMgc2hvdWxk
IGJlIGEgRHluYW1pY05vZGVMaXN0LgotICAgIC8vIEZJWE1FOiBIVE1MNSBzcGVjaWZpZXMgdGhh
dCBub24tSFRNTE9wdGlvbnNDb2xsZWN0aW9uIGNvbGxlY3Rpb25zIHNob3VsZCByZXR1cm4KLSAg
ICAvLyB0aGUgZmlyc3QgbWF0Y2hpbmcgaXRlbSBpbnN0ZWFkIG9mIGEgTm9kZUxpc3QuCisgICAg
Ly8gRklYTUU6IEhUTUw1IHNwZWNpZmljYXRpb24gc2F5cyB0aGlzIHNob3VsZCBiZSBhIEhUTUxD
b2xsZWN0aW9uLgorICAgIC8vIGh0dHA6Ly93d3cud2hhdHdnLm9yZy9zcGVjcy93ZWItYXBwcy9j
dXJyZW50LXdvcmsvbXVsdGlwYWdlL2NvbW1vbi1kb20taW50ZXJmYWNlcy5odG1sI2h0bWxhbGxj
b2xsZWN0aW9uCiAgICAgcmV0dXJuIHRvSlMoZXhlYywgY29sbGVjdGlvbi0+Z2xvYmFsT2JqZWN0
KCksIFN0YXRpY05vZGVMaXN0OjphZG9wdChuYW1lZEl0ZW1zKS5nZXQoKSk7CiB9CiAKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTENvbGxlY3Rpb25DdXN0b20uY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTENvbGxlY3Rpb25D
dXN0b20uY3BwCShyZXZpc2lvbiAxMzM2OTMpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0hUTUxDb2xsZWN0aW9uQ3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjAsMTEgKzIw
LDEzIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiSlNIVE1MQ29sbGVjdGlvbi5o
IgogCisjaW5jbHVkZSAiSFRNTEFsbENvbGxlY3Rpb24uaCIKICNpbmNsdWRlICJIVE1MQ29sbGVj
dGlvbi5oIgorI2luY2x1ZGUgIkhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmgiCiAjaW5jbHVk
ZSAiSFRNTE9wdGlvbnNDb2xsZWN0aW9uLmgiCi0jaW5jbHVkZSAiSFRNTEFsbENvbGxlY3Rpb24u
aCIKICNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKICNpbmNsdWRlICJKU0hUTUxBbGxDb2xsZWN0
aW9uLmgiCisjaW5jbHVkZSAiSlNIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5oIgogI2luY2x1
ZGUgIkpTSFRNTE9wdGlvbnNDb2xsZWN0aW9uLmgiCiAjaW5jbHVkZSAiSlNOb2RlLmgiCiAjaW5j
bHVkZSAiSlNOb2RlTGlzdC5oIgpAQCAtMzksMjYgKzQxLDYgQEAgdXNpbmcgbmFtZXNwYWNlIEpT
QzsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMgSlNWYWx1ZSBnZXROYW1lZEl0ZW1z
KEV4ZWNTdGF0ZSogZXhlYywgSlNIVE1MQ29sbGVjdGlvbiogY29sbGVjdGlvbiwgUHJvcGVydHlO
YW1lIHByb3BlcnR5TmFtZSkKLXsKLSAgICBWZWN0b3I8UmVmUHRyPE5vZGU+ID4gbmFtZWRJdGVt
czsKLSAgICBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUgPSBwcm9wZXJ0eU5hbWVUb0F0b21pY1N0
cmluZyhwcm9wZXJ0eU5hbWUpOwotICAgIGNvbGxlY3Rpb24tPmltcGwoKS0+bmFtZWRJdGVtcyhu
YW1lLCBuYW1lZEl0ZW1zKTsKLQotICAgIGlmIChuYW1lZEl0ZW1zLmlzRW1wdHkoKSkKLSAgICAg
ICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Ci0gICAgaWYgKG5hbWVkSXRlbXMuc2l6ZSgpID09IDEp
Ci0gICAgICAgIHJldHVybiB0b0pTKGV4ZWMsIGNvbGxlY3Rpb24tPmdsb2JhbE9iamVjdCgpLCBu
YW1lZEl0ZW1zWzBdLmdldCgpKTsKLQotICAgIGlmIChjb2xsZWN0aW9uLT5pbXBsKCktPnR5cGUo
KSA9PSBGb3JtQ29udHJvbHMpCi0gICAgICAgcmV0dXJuIHRvSlMoZXhlYywgY29sbGVjdGlvbi0+
Z2xvYmFsT2JqZWN0KCksIGNvbGxlY3Rpb24tPmltcGwoKS0+YmFzZSgpLT5yYWRpb05vZGVMaXN0
KG5hbWUpLmdldCgpKTsKLQotICAgIC8vIEZJWE1FOiBIVE1MNSBzcGVjaWZpZXMgdGhhdCB0aGlz
IHNob3VsZCBiZSBhIER5bmFtaWNOb2RlTGlzdC4KLSAgICAvLyBGSVhNRTogSFRNTDUgc3BlY2lm
aWVzIHRoYXQgbm9uLUhUTUxPcHRpb25zQ29sbGVjdGlvbiBjb2xsZWN0aW9ucyBzaG91bGQgcmV0
dXJuCi0gICAgLy8gdGhlIGZpcnN0IG1hdGNoaW5nIGl0ZW0gaW5zdGVhZCBvZiBhIE5vZGVMaXN0
LgotICAgIHJldHVybiB0b0pTKGV4ZWMsIGNvbGxlY3Rpb24tPmdsb2JhbE9iamVjdCgpLCBTdGF0
aWNOb2RlTGlzdDo6YWRvcHQobmFtZWRJdGVtcykuZ2V0KCkpOwotfQotCiBib29sIEpTSFRNTENv
bGxlY3Rpb246OmNhbkdldEl0ZW1zRm9yTmFtZShFeGVjU3RhdGUqLCBIVE1MQ29sbGVjdGlvbiog
Y29sbGVjdGlvbiwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsKICAgICByZXR1cm4gY29s
bGVjdGlvbi0+aGFzTmFtZWRJdGVtKHByb3BlcnR5TmFtZVRvQXRvbWljU3RyaW5nKHByb3BlcnR5
TmFtZSkpOwpAQCAtNjYsMTMgKzQ4LDkgQEAgYm9vbCBKU0hUTUxDb2xsZWN0aW9uOjpjYW5HZXRJ
dGVtc0Zvck5hbQogCiBKU1ZhbHVlIEpTSFRNTENvbGxlY3Rpb246Om5hbWVHZXR0ZXIoRXhlY1N0
YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQog
ewotICAgIEpTSFRNTENvbGxlY3Rpb24qIHRoaXNPYmogPSBqc0Nhc3Q8SlNIVE1MQ29sbGVjdGlv
bio+KGFzT2JqZWN0KHNsb3RCYXNlKSk7Ci0gICAgcmV0dXJuIGdldE5hbWVkSXRlbXMoZXhlYywg
dGhpc09iaiwgcHJvcGVydHlOYW1lKTsKLX0KLQotSlNWYWx1ZSBKU0hUTUxDb2xsZWN0aW9uOjpu
YW1lZEl0ZW0oRXhlY1N0YXRlKiBleGVjKQotewotICAgIHJldHVybiBnZXROYW1lZEl0ZW1zKGV4
ZWMsIHRoaXMsIElkZW50aWZpZXIoZXhlYywgZXhlYy0+YXJndW1lbnQoMCkudG9TdHJpbmcoZXhl
YyktPnZhbHVlKGV4ZWMpKSk7CisgICAgSlNIVE1MQ29sbGVjdGlvbiogY29sbGVjdGlvbiA9IGpz
Q2FzdDxKU0hUTUxDb2xsZWN0aW9uKj4oYXNPYmplY3Qoc2xvdEJhc2UpKTsKKyAgICBjb25zdCBB
dG9taWNTdHJpbmcmIG5hbWUgPSBwcm9wZXJ0eU5hbWVUb0F0b21pY1N0cmluZyhwcm9wZXJ0eU5h
bWUpOworICAgIHJldHVybiB0b0pTKGV4ZWMsIGNvbGxlY3Rpb24tPmdsb2JhbE9iamVjdCgpLCBj
b2xsZWN0aW9uLT5pbXBsKCktPm5hbWVkSXRlbShuYW1lKSk7CiB9CiAKIEpTVmFsdWUgdG9KUyhF
eGVjU3RhdGUqIGV4ZWMsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEhUTUxDb2xs
ZWN0aW9uKiBjb2xsZWN0aW9uKQpAQCAtODYsMTggKzY0LDE3IEBAIEpTVmFsdWUgdG9KUyhFeGVj
U3RhdGUqIGV4ZWMsIEpTRE9NR2xvYmEKICAgICAgICAgcmV0dXJuIHdyYXBwZXI7CiAKICAgICBz
d2l0Y2ggKGNvbGxlY3Rpb24tPnR5cGUoKSkgewotICAgICAgICBjYXNlIFNlbGVjdE9wdGlvbnM6
Ci0gICAgICAgICAgICB3cmFwcGVyID0gQ1JFQVRFX0RPTV9XUkFQUEVSKGV4ZWMsIGdsb2JhbE9i
amVjdCwgSFRNTE9wdGlvbnNDb2xsZWN0aW9uLCBjb2xsZWN0aW9uKTsKLSAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICBjYXNlIERvY0FsbDoKLSAgICAgICAgICAgIHdyYXBwZXIgPSBDUkVBVEVf
RE9NX1dSQVBQRVIoZXhlYywgZ2xvYmFsT2JqZWN0LCBIVE1MQWxsQ29sbGVjdGlvbiwgY29sbGVj
dGlvbik7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAg
IHdyYXBwZXIgPSBDUkVBVEVfRE9NX1dSQVBQRVIoZXhlYywgZ2xvYmFsT2JqZWN0LCBIVE1MQ29s
bGVjdGlvbiwgY29sbGVjdGlvbik7Ci0gICAgICAgICAgICBicmVhazsKKyAgICBjYXNlIEZvcm1D
b250cm9sczoKKyAgICAgICAgcmV0dXJuIENSRUFURV9ET01fV1JBUFBFUihleGVjLCBnbG9iYWxP
YmplY3QsIEhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLCBjb2xsZWN0aW9uKTsKKyAgICBjYXNl
IFNlbGVjdE9wdGlvbnM6CisgICAgICAgIHJldHVybiBDUkVBVEVfRE9NX1dSQVBQRVIoZXhlYywg
Z2xvYmFsT2JqZWN0LCBIVE1MT3B0aW9uc0NvbGxlY3Rpb24sIGNvbGxlY3Rpb24pOworICAgIGNh
c2UgRG9jQWxsOgorICAgICAgICByZXR1cm4gQ1JFQVRFX0RPTV9XUkFQUEVSKGV4ZWMsIGdsb2Jh
bE9iamVjdCwgSFRNTEFsbENvbGxlY3Rpb24sIGNvbGxlY3Rpb24pOworICAgIGRlZmF1bHQ6Cisg
ICAgICAgIGJyZWFrOwogICAgIH0KIAotICAgIHJldHVybiB3cmFwcGVyOworICAgIHJldHVybiBD
UkVBVEVfRE9NX1dSQVBQRVIoZXhlYywgZ2xvYmFsT2JqZWN0LCBIVE1MQ29sbGVjdGlvbiwgY29s
bGVjdGlvbik7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb25DdXN0b20uY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEZvcm1Db250cm9s
c0NvbGxlY3Rpb25DdXN0b20uY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbkN1c3RvbS5jcHAJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsNzEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMDggQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVl
IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1
bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNl
bnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIK
KyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0
ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv
cGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsg
d2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkg
b3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGli
cmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91
IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBD
T1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24s
IE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uaCIKKworCisjaW5jbHVkZSAiSFRNTEFsbENv
bGxlY3Rpb24uaCIKKyNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKKyNpbmNsdWRlICJKU0hUTUxD
b2xsZWN0aW9uLmgiCisjaW5jbHVkZSAiSlNIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5oIgor
I2luY2x1ZGUgIkpTTm9kZS5oIgorI2luY2x1ZGUgIkpTTm9kZUxpc3QuaCIKKyNpbmNsdWRlICJK
U1JhZGlvTm9kZUxpc3QuaCIKKyNpbmNsdWRlICJOb2RlLmgiCisjaW5jbHVkZSAiUmFkaW9Ob2Rl
TGlzdC5oIgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9BdG9t
aWNTdHJpbmcuaD4KKwordXNpbmcgbmFtZXNwYWNlIEpTQzsKKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitzdGF0aWMgSlNWYWx1ZSBnZXROYW1lZEl0ZW1zKEV4ZWNTdGF0ZSogZXhlYywgSlNIVE1M
Rm9ybUNvbnRyb2xzQ29sbGVjdGlvbiogY29sbGVjdGlvbiwgUHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZSkKK3sKKyAgICBWZWN0b3I8UmVmUHRyPE5vZGU+ID4gbmFtZWRJdGVtczsKKyAgICBjb25z
dCBBdG9taWNTdHJpbmcmIG5hbWUgPSBwcm9wZXJ0eU5hbWVUb0F0b21pY1N0cmluZyhwcm9wZXJ0
eU5hbWUpOworICAgIGNvbGxlY3Rpb24tPmltcGwoKS0+bmFtZWRJdGVtcyhuYW1lLCBuYW1lZEl0
ZW1zKTsKKworICAgIGlmIChuYW1lZEl0ZW1zLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIGpz
VW5kZWZpbmVkKCk7CisgICAgaWYgKG5hbWVkSXRlbXMuc2l6ZSgpID09IDEpCisgICAgICAgIHJl
dHVybiB0b0pTKGV4ZWMsIGNvbGxlY3Rpb24tPmdsb2JhbE9iamVjdCgpLCBuYW1lZEl0ZW1zWzBd
LmdldCgpKTsKKworICAgIEFTU0VSVChjb2xsZWN0aW9uLT5pbXBsKCktPnR5cGUoKSA9PSBGb3Jt
Q29udHJvbHMpOworICAgIHJldHVybiB0b0pTKGV4ZWMsIGNvbGxlY3Rpb24tPmdsb2JhbE9iamVj
dCgpLCBjb2xsZWN0aW9uLT5pbXBsKCktPmJhc2UoKS0+cmFkaW9Ob2RlTGlzdChuYW1lKS5nZXQo
KSk7Cit9CisKK2Jvb2wgSlNIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbjo6Y2FuR2V0SXRlbXNG
b3JOYW1lKEV4ZWNTdGF0ZSosIEhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uKiBjb2xsZWN0aW9u
LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQoreworICAgIHJldHVybiBjb2xsZWN0aW9uLT5o
YXNOYW1lZEl0ZW0ocHJvcGVydHlOYW1lVG9BdG9taWNTdHJpbmcocHJvcGVydHlOYW1lKSk7Cit9
CisKK0pTVmFsdWUgSlNIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbjo6bmFtZUdldHRlcihFeGVj
U3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUp
Cit7CisgICAgSlNIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbiogdGhpc09iaiA9IGpzQ2FzdDxK
U0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uKj4oYXNPYmplY3Qoc2xvdEJhc2UpKTsKKyAgICBy
ZXR1cm4gZ2V0TmFtZWRJdGVtcyhleGVjLCB0aGlzT2JqLCBwcm9wZXJ0eU5hbWUpOworfQorCitK
U1ZhbHVlIEpTSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb246Om5hbWVkSXRlbShFeGVjU3RhdGUq
IGV4ZWMpCit7CisgICAgcmV0dXJuIGdldE5hbWVkSXRlbXMoZXhlYywgdGhpcywgSWRlbnRpZmll
cihleGVjLCBleGVjLT5hcmd1bWVudCgwKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpKTsK
K30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNIVE1MT3B0aW9uc0NvbGxlY3Rpb25DdXN0b20uY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTE9wdGlvbnNDb2xsZWN0aW9uQ3VzdG9tLmNw
cAkocmV2aXNpb24gMTMzNjkzKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1M
T3B0aW9uc0NvbGxlY3Rpb25DdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw4
IEBACiAjaW5jbHVkZSAiSlNIVE1MT3B0aW9uRWxlbWVudC5oIgogI2luY2x1ZGUgIkpTSFRNTFNl
bGVjdEVsZW1lbnQuaCIKICNpbmNsdWRlICJKU0hUTUxTZWxlY3RFbGVtZW50Q3VzdG9tLmgiCisj
aW5jbHVkZSAiSlNOb2RlTGlzdC5oIgorI2luY2x1ZGUgIlN0YXRpY05vZGVMaXN0LmgiCiAKICNp
bmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgogCkBAIC0zNSw2ICszNywzNyBAQCB1c2luZyBuYW1l
c3BhY2UgSlNDOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK3N0YXRpYyBKU1ZhbHVlIGdldE5h
bWVkSXRlbXMoRXhlY1N0YXRlKiBleGVjLCBKU0hUTUxPcHRpb25zQ29sbGVjdGlvbiogY29sbGVj
dGlvbiwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKK3sKKyAgICBWZWN0b3I8UmVmUHRyPE5v
ZGU+ID4gbmFtZWRJdGVtczsKKyAgICBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUgPSBwcm9wZXJ0
eU5hbWVUb0F0b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUpOworICAgIGNvbGxlY3Rpb24tPmltcGwo
KS0+bmFtZWRJdGVtcyhuYW1lLCBuYW1lZEl0ZW1zKTsKKworICAgIGlmIChuYW1lZEl0ZW1zLmlz
RW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CisgICAgaWYgKG5hbWVkSXRl
bXMuc2l6ZSgpID09IDEpCisgICAgICAgIHJldHVybiB0b0pTKGV4ZWMsIGNvbGxlY3Rpb24tPmds
b2JhbE9iamVjdCgpLCBuYW1lZEl0ZW1zWzBdLmdldCgpKTsKKworICAgIC8vIEZJWE1FOiBIVE1M
NSBzcGVjaWZpZXMgdGhhdCB0aGlzIHNob3VsZCBiZSBhIER5bmFtaWNOb2RlTGlzdC4KKyAgICBy
ZXR1cm4gdG9KUyhleGVjLCBjb2xsZWN0aW9uLT5nbG9iYWxPYmplY3QoKSwgU3RhdGljTm9kZUxp
c3Q6OmFkb3B0KG5hbWVkSXRlbXMpLmdldCgpKTsKK30KKworYm9vbCBKU0hUTUxPcHRpb25zQ29s
bGVjdGlvbjo6Y2FuR2V0SXRlbXNGb3JOYW1lKEV4ZWNTdGF0ZSosIEhUTUxPcHRpb25zQ29sbGVj
dGlvbiogY29sbGVjdGlvbiwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKK3sKKyAgICByZXR1
cm4gY29sbGVjdGlvbi0+aGFzTmFtZWRJdGVtKHByb3BlcnR5TmFtZVRvQXRvbWljU3RyaW5nKHBy
b3BlcnR5TmFtZSkpOworfQorCitKU1ZhbHVlIEpTSFRNTE9wdGlvbnNDb2xsZWN0aW9uOjpuYW1l
R2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgUHJvcGVydHlOYW1lIHBy
b3BlcnR5TmFtZSkKK3sKKyAgICBKU0hUTUxPcHRpb25zQ29sbGVjdGlvbiogdGhpc09iaiA9IGpz
Q2FzdDxKU0hUTUxPcHRpb25zQ29sbGVjdGlvbio+KGFzT2JqZWN0KHNsb3RCYXNlKSk7CisgICAg
cmV0dXJuIGdldE5hbWVkSXRlbXMoZXhlYywgdGhpc09iaiwgcHJvcGVydHlOYW1lKTsKK30KKwor
SlNWYWx1ZSBKU0hUTUxPcHRpb25zQ29sbGVjdGlvbjo6bmFtZWRJdGVtKEV4ZWNTdGF0ZSogZXhl
YykKK3sKKyAgICByZXR1cm4gZ2V0TmFtZWRJdGVtcyhleGVjLCB0aGlzLCBJZGVudGlmaWVyKGV4
ZWMsIGV4ZWMtPmFyZ3VtZW50KDApLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSkpOworfQor
CiBKU1ZhbHVlIEpTSFRNTE9wdGlvbnNDb2xsZWN0aW9uOjpsZW5ndGgoRXhlY1N0YXRlKikgY29u
c3QKIHsKICAgICBIVE1MT3B0aW9uc0NvbGxlY3Rpb24qIGltcCA9IHN0YXRpY19jYXN0PEhUTUxP
cHRpb25zQ29sbGVjdGlvbio+KGltcGwoKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQkocmV2aXNpb24gMTMzNjkzKQor
KysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0JKHdv
cmtpbmcgY29weSkKQEAgLTQwOCw3ICs0MDgsNyBAQCBzdWIgR2VuZXJhdGVHZXRPd25Qcm9wZXJ0
eVNsb3RCb2R5CiAKICAgICBteSBAZ2V0T3duUHJvcGVydHlTbG90SW1wbCA9ICgpOwogCi0gICAg
aWYgKCRpbnRlcmZhY2VOYW1lIGVxICJOYW1lZE5vZGVNYXAiIG9yICRpbnRlcmZhY2VOYW1lIGVx
ICJIVE1MQ29sbGVjdGlvbiIgb3IgJGludGVyZmFjZU5hbWUgZXEgIkhUTUxBbGxDb2xsZWN0aW9u
IiBvciAkaW50ZXJmYWNlTmFtZSBlcSAiSFRNTFByb3BlcnRpZXNDb2xsZWN0aW9uIikgeworICAg
IGlmICgkaW50ZXJmYWNlTmFtZSBlcSAiTmFtZWROb2RlTWFwIiBvciAkaW50ZXJmYWNlTmFtZSA9
fiAvXkhUTUxcdypDb2xsZWN0aW9uJC8pIHsKICAgICAgICAgcHVzaChAZ2V0T3duUHJvcGVydHlT
bG90SW1wbCwgIiAgICAke25hbWVzcGFjZU1heWJlfUpTVmFsdWUgcHJvdG8gPSB0aGlzT2JqZWN0
LT5wcm90b3R5cGUoKTtcbiIpOwogICAgICAgICBwdXNoKEBnZXRPd25Qcm9wZXJ0eVNsb3RJbXBs
LCAiICAgIGlmIChwcm90by5pc09iamVjdCgpICYmIGpzQ2FzdDwke25hbWVzcGFjZU1heWJlfUpT
T2JqZWN0Kj4oYXNPYmplY3QocHJvdG8pKS0+aGFzUHJvcGVydHkoZXhlYywgcHJvcGVydHlOYW1l
KSlcbiIpOwogICAgICAgICBwdXNoKEBnZXRPd25Qcm9wZXJ0eVNsb3RJbXBsLCAiICAgICAgICBy
ZXR1cm4gZmFsc2U7XG5cbiIpOwpAQCAtNTAwLDcgKzUwMCw3IEBAIHN1YiBHZW5lcmF0ZUdldE93
blByb3BlcnR5RGVzY3JpcHRvckJvZHkKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
ICAgIHJldHVybiBmYWxzZTtcbiIpOwogICAgIH0KICAgICAKLSAgICBpZiAoJGludGVyZmFjZU5h
bWUgZXEgIk5hbWVkTm9kZU1hcCIgb3IgJGludGVyZmFjZU5hbWUgZXEgIkhUTUxDb2xsZWN0aW9u
IiBvciAkaW50ZXJmYWNlTmFtZSBlcSAiSFRNTEFsbENvbGxlY3Rpb24iIG9yICRpbnRlcmZhY2VO
YW1lIGVxICJIVE1MUHJvcGVydGllc0NvbGxlY3Rpb24iKSB7CisgICAgaWYgKCRpbnRlcmZhY2VO
YW1lIGVxICJOYW1lZE5vZGVNYXAiIG9yICRpbnRlcmZhY2VOYW1lID1+IC9eSFRNTFx3KkNvbGxl
Y3Rpb24kLykgewogICAgICAgICBwdXNoKEBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JJbXBsLCAi
ICAgICR7bmFtZXNwYWNlTWF5YmV9SlNWYWx1ZSBwcm90byA9IHRoaXNPYmplY3QtPnByb3RvdHlw
ZSgpO1xuIik7CiAgICAgICAgIHB1c2goQGdldE93blByb3BlcnR5RGVzY3JpcHRvckltcGwsICIg
ICAgaWYgKHByb3RvLmlzT2JqZWN0KCkgJiYganNDYXN0PCR7bmFtZXNwYWNlTWF5YmV9SlNPYmpl
Y3QqPihhc09iamVjdChwcm90bykpLT5oYXNQcm9wZXJ0eShleGVjLCBwcm9wZXJ0eU5hbWUpKVxu
Iik7CiAgICAgICAgIHB1c2goQGdldE93blByb3BlcnR5RGVzY3JpcHRvckltcGwsICIgICAgICAg
IHJldHVybiBmYWxzZTtcblxuIik7CkBAIC0yNDM0LDcgKzI0MzQsNyBAQCBzdWIgR2VuZXJhdGVJ
bXBsZW1lbnRhdGlvbgogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJu
IHRvSlMoZXhlYywgdGhpc09iai0+Z2xvYmFsT2JqZWN0KCksIHN0YXRpY19jYXN0PCRpbXBsQ2xh
c3NOYW1lKj4odGhpc09iai0+aW1wbCgpKS0+aXRlbShpbmRleCkpO1xuIik7CiAgICAgICAgIH0K
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ9XG5cbiIpOwotICAgICAgICBpZiAoJGludGVy
ZmFjZU5hbWUgZXEgIkhUTUxDb2xsZWN0aW9uIiBvciAkaW50ZXJmYWNlTmFtZSBlcSAiSFRNTEFs
bENvbGxlY3Rpb24iIG9yICRpbnRlcmZhY2VOYW1lIGVxICJSYWRpb05vZGVMaXN0IikgeworICAg
ICAgICBpZiAoJGludGVyZmFjZU5hbWUgPX4gL15IVE1MXHcqQ29sbGVjdGlvbiQvIG9yICRpbnRl
cmZhY2VOYW1lIGVxICJSYWRpb05vZGVMaXN0IikgewogICAgICAgICAgICAgJGltcGxJbmNsdWRl
c3siSlNOb2RlLmgifSA9IDE7CiAgICAgICAgICAgICAkaW1wbEluY2x1ZGVzeyJOb2RlLmgifSA9
IDE7CiAgICAgICAgIH0KQEAgLTI0NTAsNyArMjQ1MCw3IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVu
dGF0aW9uCiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICByZXR1cm4ganNOYU4o
KTtcbiIpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1cm4gSlNWYWx1ZShy
ZXN1bHQpO1xuIik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAifVxuXG4iKTsKLSAgICAg
ICAgaWYgKCRpbnRlcmZhY2VOYW1lIGVxICJIVE1MQ29sbGVjdGlvbiIgb3IgJGludGVyZmFjZU5h
bWUgZXEgIkhUTUxBbGxDb2xsZWN0aW9uIikgeworICAgICAgICBpZiAoJGludGVyZmFjZU5hbWUg
PX4gL15IVE1MXHcqQ29sbGVjdGlvbiQvKSB7CiAgICAgICAgICAgICAkaW1wbEluY2x1ZGVzeyJK
U05vZGUuaCJ9ID0gMTsKICAgICAgICAgICAgICRpbXBsSW5jbHVkZXN7Ik5vZGUuaCJ9ID0gMTsK
ICAgICAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2Vu
ZXJhdG9yVjgucG0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy9Db2RlR2VuZXJhdG9yVjgucG0JKHJldmlzaW9uIDEzMzY5MykKKysrIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCSh3b3JraW5nIGNvcHkpCkBAIC0y
NDk0LDEzICsyNDk0LDYgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb25OYW1lZFByb3BlcnR5
RwogICAgIG15ICRpbnRlcmZhY2VOYW1lID0gJGRhdGFOb2RlLT5uYW1lOwogICAgIG15ICRoYXND
dXN0b21OYW1lZEdldHRlciA9ICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3Rv
bU5hbWVkR2V0dGVyIn0gfHwgJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9t
R2V0T3duUHJvcGVydHlTbG90In07CiAKLSAgICAjIEZJWE1FOiBSZW1vdmUgaGFyZC1jb2RlZCBI
VE1MT3B0aW9uc0NvbGxlY3Rpb24gcmVmZXJlbmNlIGJ5IGNoYW5naW5nIEhUTUxPcHRpb25zQ29s
bGVjdGlvbiB0byBub3QgaW5oZXJpdAotICAgICMgZnJvbSBIVE1MQ29sbGVjdGlvbiBwZXIgVzND
IHNwZWMgKGh0dHA6Ly93d3cudzMub3JnL1RSLzIwMDMvUkVDLURPTS1MZXZlbC0yLUhUTUwtMjAw
MzAxMDkvaHRtbC5odG1sI0hUTUxPcHRpb25zQ29sbGVjdGlvbikuCi0gICAgaWYgKCRpbnRlcmZh
Y2VOYW1lIGVxICJIVE1MT3B0aW9uc0NvbGxlY3Rpb24iKSB7Ci0gICAgICAgICRpbnRlcmZhY2VO
YW1lID0gIkhUTUxDb2xsZWN0aW9uIjsKLSAgICAgICAgJGhhc0N1c3RvbU5hbWVkR2V0dGVyID0g
MTsKLSAgICB9Ci0KICAgICBpZiAoJGludGVyZmFjZU5hbWUgZXEgIkhUTUxBcHBsZXRFbGVtZW50
IiB8fCAkaW50ZXJmYWNlTmFtZSBlcSAiSFRNTEVtYmVkRWxlbWVudCIgfHwgJGludGVyZmFjZU5h
bWUgZXEgIkhUTUxPYmplY3RFbGVtZW50IikgewogICAgICAgICAkaGFzQ3VzdG9tTmFtZWRHZXR0
ZXIgPSAxOwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9W
OEhUTUxBbGxDb2xsZWN0aW9uQ3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MQWxsQ29sbGVjdGlvbkN1c3RvbS5jcHAJKHJldmlz
aW9uIDEzMzY5MykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxB
bGxDb2xsZWN0aW9uQ3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDYsMTEgKzQ2LDEzIEBA
IHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gZ2V0TmFtZWRJdGUKICAgICBjb2xsZWN0aW9u
LT5uYW1lZEl0ZW1zKG5hbWUsIG5hbWVkSXRlbXMpOwogCiAgICAgaWYgKCFuYW1lZEl0ZW1zLnNp
emUoKSkKLSAgICAgICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7CisgICAgICAgIHJldHVybiB2ODo6
VW5kZWZpbmVkKGlzb2xhdGUpOwogCiAgICAgaWYgKG5hbWVkSXRlbXMuc2l6ZSgpID09IDEpCiAg
ICAgICAgIHJldHVybiB0b1Y4KG5hbWVkSXRlbXMuYXQoMCkucmVsZWFzZSgpLCBjcmVhdGlvbkNv
bnRleHQsIGlzb2xhdGUpOwogCisgICAgLy8gRklYTUU6IEhUTUw1IHNwZWNpZmljYXRpb24gc2F5
cyB0aGlzIHNob3VsZCBiZSBhIEhUTUxDb2xsZWN0aW9uLgorICAgIC8vIGh0dHA6Ly93d3cud2hh
dHdnLm9yZy9zcGVjcy93ZWItYXBwcy9jdXJyZW50LXdvcmsvbXVsdGlwYWdlL2NvbW1vbi1kb20t
aW50ZXJmYWNlcy5odG1sI2h0bWxhbGxjb2xsZWN0aW9uCiAgICAgcmV0dXJuIHRvVjgoVjhOYW1l
ZE5vZGVzQ29sbGVjdGlvbjo6Y3JlYXRlKG5hbWVkSXRlbXMpLCBjcmVhdGlvbkNvbnRleHQsIGlz
b2xhdGUpOwogfQogCkBAIC02MSw3ICs2Myw3IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gZ2V0SXRlbShIVE0KICAgICAgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHJlc3VsdCA9IGdl
dE5hbWVkSXRlbXMoY29sbGVjdGlvbiwgdG9XZWJDb3JlU3RyaW5nKGFyZ3VtZW50LT5Ub1N0cmlu
ZygpKSwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsKIAogICAgICAgICBpZiAocmVzdWx0Lklz
RW1wdHkoKSkKLSAgICAgICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CisgICAgICAgICAg
ICByZXR1cm4gdjg6OlVuZGVmaW5lZChpc29sYXRlKTsKIAogICAgICAgICByZXR1cm4gcmVzdWx0
OwogICAgIH0KQEAgLTc1LDkgKzc3LDkgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SFRNTEFs
bENvbGxlY3RpbwogICAgIElOQ19TVEFUUygiRE9NLkhUTUxBbGxDb2xsZWN0aW9uLk5hbWVkUHJv
cGVydHlHZXR0ZXIiKTsKIAogICAgIGlmICghaW5mby5Ib2xkZXIoKS0+R2V0UmVhbE5hbWVkUHJv
cGVydHlJblByb3RvdHlwZUNoYWluKG5hbWUpLklzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIHY4
VW5kZWZpbmVkKCk7CisgICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKGluZm8uR2V0SXNvbGF0
ZSgpKTsKICAgICBpZiAoaW5mby5Ib2xkZXIoKS0+SGFzUmVhbE5hbWVkQ2FsbGJhY2tQcm9wZXJ0
eShuYW1lKSkKLSAgICAgICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7CisgICAgICAgIHJldHVybiB2
ODo6VW5kZWZpbmVkKGluZm8uR2V0SXNvbGF0ZSgpKTsKIAogICAgIEhUTUxBbGxDb2xsZWN0aW9u
KiBpbXAgPSBWOEhUTUxBbGxDb2xsZWN0aW9uOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKICAg
ICByZXR1cm4gZ2V0TmFtZWRJdGVtcyhpbXAsIHRvV2ViQ29yZUF0b21pY1N0cmluZyhuYW1lKSwg
aW5mby5Ib2xkZXIoKSwgaW5mby5HZXRJc29sYXRlKCkpOwpAQCAtOTcsNyArOTksNyBAQCB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gVjhIVE1MQWxsQ29sbGVjdGlvCiAgICAgdjg6OkhhbmRsZTx2ODo6
VmFsdWU+IHJlc3VsdCA9IGdldE5hbWVkSXRlbXMoaW1wLCB0b1dlYkNvcmVTdHJpbmcoYXJnc1sw
XSksIGFyZ3MuSG9sZGVyKCksIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKIAogICAgIGlmIChyZXN1bHQu
SXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOworICAgICAgICByZXR1
cm4gdjg6OlVuZGVmaW5lZChhcmdzLkdldElzb2xhdGUoKSk7CiAKICAgICByZXR1cm4gcmVzdWx0
OwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTENvbGxl
Y3Rpb25DdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L2N1c3RvbS9WOEhUTUxDb2xsZWN0aW9uQ3VzdG9tLmNwcAkocmV2aXNpb24gMTMzNjkzKQorKysg
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTENvbGxlY3Rpb25DdXN0b20u
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw1NiArMzIsMjYgQEAKICNpbmNsdWRlICJWOEhUTUxD
b2xsZWN0aW9uLmgiCiAKICNpbmNsdWRlICJIVE1MQ29sbGVjdGlvbi5oIgotI2luY2x1ZGUgIlJh
ZGlvTm9kZUxpc3QuaCIKICNpbmNsdWRlICJWOEJpbmRpbmcuaCIKICNpbmNsdWRlICJWOEhUTUxB
bGxDb2xsZWN0aW9uLmgiCisjaW5jbHVkZSAiVjhIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5o
IgorI2luY2x1ZGUgIlY4SFRNTE9wdGlvbnNDb2xsZWN0aW9uLmgiCiAjaW5jbHVkZSAiVjhOYW1l
ZE5vZGVzQ29sbGVjdGlvbi5oIgogI2luY2x1ZGUgIlY4Tm9kZS5oIgotI2luY2x1ZGUgIlY4Tm9k
ZUxpc3QuaCIKLSNpbmNsdWRlICJWOFJhZGlvTm9kZUxpc3QuaCIKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1zdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGdldE5hbWVkSXRlbXMoSFRNTENv
bGxlY3Rpb24qIGNvbGxlY3Rpb24sIEF0b21pY1N0cmluZyBuYW1lLCB2ODo6SGFuZGxlPHY4OjpP
YmplY3Q+IGNyZWF0aW9uQ29udGV4dCwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCi17Ci0gICAgVmVj
dG9yPFJlZlB0cjxOb2RlPiA+IG5hbWVkSXRlbXM7Ci0gICAgY29sbGVjdGlvbi0+bmFtZWRJdGVt
cyhuYW1lLCBuYW1lZEl0ZW1zKTsKLQotICAgIGlmICghbmFtZWRJdGVtcy5zaXplKCkpCi0gICAg
ICAgIHJldHVybiB2OFVuZGVmaW5lZCgpOwotCi0gICAgaWYgKG5hbWVkSXRlbXMuc2l6ZSgpID09
IDEpCi0gICAgICAgIHJldHVybiB0b1Y4KG5hbWVkSXRlbXMuYXQoMCkucmVsZWFzZSgpLCBjcmVh
dGlvbkNvbnRleHQsIGlzb2xhdGUpOwotCi0gICAgaWYgKGNvbGxlY3Rpb24tPnR5cGUoKSA9PSBG
b3JtQ29udHJvbHMpCi0gICAgICAgIHJldHVybiB0b1Y4KGNvbGxlY3Rpb24tPmJhc2UoKS0+cmFk
aW9Ob2RlTGlzdChuYW1lKS5nZXQoKSwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsKLQotICAg
IHJldHVybiB0b1Y4KFY4TmFtZWROb2Rlc0NvbGxlY3Rpb246OmNyZWF0ZShuYW1lZEl0ZW1zKSwg
Y3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsKLX0KLQogdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4
SFRNTENvbGxlY3Rpb246Om5hbWVkUHJvcGVydHlHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+
IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7CiAgICAgSU5DX1NUQVRTKCJE
T00uSFRNTENvbGxlY3Rpb24uTmFtZWRQcm9wZXJ0eUdldHRlciIpOwogCiAgICAgaWYgKCFpbmZv
LkhvbGRlcigpLT5HZXRSZWFsTmFtZWRQcm9wZXJ0eUluUHJvdG90eXBlQ2hhaW4obmFtZSkuSXNF
bXB0eSgpKQotICAgICAgICByZXR1cm4gdjhVbmRlZmluZWQoKTsKKyAgICAgICAgcmV0dXJuIHY4
OjpVbmRlZmluZWQoaW5mby5HZXRJc29sYXRlKCkpOwogICAgIGlmIChpbmZvLkhvbGRlcigpLT5I
YXNSZWFsTmFtZWRDYWxsYmFja1Byb3BlcnR5KG5hbWUpKQotICAgICAgICByZXR1cm4gdjhVbmRl
ZmluZWQoKTsKKyAgICAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoaW5mby5HZXRJc29sYXRlKCkp
OwogCiAgICAgSFRNTENvbGxlY3Rpb24qIGltcCA9IFY4SFRNTENvbGxlY3Rpb246OnRvTmF0aXZl
KGluZm8uSG9sZGVyKCkpOwotICAgIHJldHVybiBnZXROYW1lZEl0ZW1zKGltcCwgdG9XZWJDb3Jl
QXRvbWljU3RyaW5nKG5hbWUpLCBpbmZvLkhvbGRlcigpLCBpbmZvLkdldElzb2xhdGUoKSk7Ci19
Ci0KLXY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEhUTUxDb2xsZWN0aW9uOjpuYW1lZEl0ZW1DYWxs
YmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQotewotICAgIElOQ19TVEFUUygiRE9NLkhU
TUxDb2xsZWN0aW9uLm5hbWVkSXRlbSgpIik7Ci0gICAgSFRNTENvbGxlY3Rpb24qIGltcCA9IFY4
SFRNTENvbGxlY3Rpb246OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOwotICAgIHY4OjpIYW5kbGU8
djg6OlZhbHVlPiByZXN1bHQgPSBnZXROYW1lZEl0ZW1zKGltcCwgdG9XZWJDb3JlU3RyaW5nKGFy
Z3NbMF0pLCBhcmdzLkhvbGRlcigpLCBhcmdzLkdldElzb2xhdGUoKSk7Ci0KLSAgICBpZiAocmVz
dWx0LklzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKLQotICAgIHJl
dHVybiByZXN1bHQ7CisgICAgcmV0dXJuIHRvVjgoaW1wLT5uYW1lZEl0ZW0odG9XZWJDb3JlQXRv
bWljU3RyaW5nKG5hbWUpKSwgaW5mby5Ib2xkZXIoKSwgaW5mby5HZXRJc29sYXRlKCkpOwogfQog
CiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOChIVE1MQ29sbGVjdGlvbiogaW1wbCwgdjg6Okhh
bmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJc29sYXRlKiBpc29sYXRlKQpA
QCAtODksOCArNTksMTcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjgoSFRNTENvbGxlY3Rp
bwogICAgIGlmICghaW1wbCkKICAgICAgICAgcmV0dXJuIHY4TnVsbFdpdGhDaGVjayhpc29sYXRl
KTsKIAotICAgIGlmIChpbXBsLT50eXBlKCkgPT0gRG9jQWxsKQorICAgIHN3aXRjaCAoaW1wbC0+
dHlwZSgpKSB7CisgICAgY2FzZSBGb3JtQ29udHJvbHM6CisgICAgICAgIHJldHVybiB0b1Y4KHN0
YXRpY19jYXN0PEhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uKj4oaW1wbCksIGNyZWF0aW9uQ29u
dGV4dCwgaXNvbGF0ZSk7CisgICAgY2FzZSBTZWxlY3RPcHRpb25zOgorICAgICAgICByZXR1cm4g
dG9WOChzdGF0aWNfY2FzdDxIVE1MT3B0aW9uc0NvbGxlY3Rpb24qPihpbXBsKSwgY3JlYXRpb25D
b250ZXh0LCBpc29sYXRlKTsKKyAgICBjYXNlIERvY0FsbDoKICAgICAgICAgcmV0dXJuIHRvVjgo
c3RhdGljX2Nhc3Q8SFRNTEFsbENvbGxlY3Rpb24qPihpbXBsKSwgY3JlYXRpb25Db250ZXh0LCBp
c29sYXRlKTsKKyAgICBkZWZhdWx0OgorICAgICAgICBicmVhazsKKyAgICB9CisKICAgICByZXR1
cm4gVjhIVE1MQ29sbGVjdGlvbjo6d3JhcChpbXBsLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUp
OwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MRm9y
bUNvbnRyb2xzQ29sbGVjdGlvbkN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb25DdXN0b20u
Y3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4
SFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb25DdXN0b20uY3BwCShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDgxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiAKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0
OgorICogCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
cgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBv
ZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisg
KiAKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJT
IEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICog
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlY4SFRNTEZvcm1Db250
cm9sc0NvbGxlY3Rpb24uaCIKKworI2luY2x1ZGUgIkhUTUxDb2xsZWN0aW9uLmgiCisjaW5jbHVk
ZSAiUmFkaW9Ob2RlTGlzdC5oIgorI2luY2x1ZGUgIlY4QmluZGluZy5oIgorI2luY2x1ZGUgIlY4
Tm9kZS5oIgorI2luY2x1ZGUgIlY4UmFkaW9Ob2RlTGlzdC5oIgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gZ2V0TmFtZWRJdGVtcyhIVE1MRm9y
bUNvbnRyb2xzQ29sbGVjdGlvbiogY29sbGVjdGlvbiwgQXRvbWljU3RyaW5nIG5hbWUsIHY4OjpI
YW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0LCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkK
K3sKKyAgICBWZWN0b3I8UmVmUHRyPE5vZGU+ID4gbmFtZWRJdGVtczsKKyAgICBjb2xsZWN0aW9u
LT5uYW1lZEl0ZW1zKG5hbWUsIG5hbWVkSXRlbXMpOworCisgICAgaWYgKCFuYW1lZEl0ZW1zLnNp
emUoKSkKKyAgICAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoaXNvbGF0ZSk7CisKKyAgICBpZiAo
bmFtZWRJdGVtcy5zaXplKCkgPT0gMSkKKyAgICAgICAgcmV0dXJuIHRvVjgobmFtZWRJdGVtcy5h
dCgwKS5yZWxlYXNlKCksIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7CisKKyAgICByZXR1cm4g
dG9WOChjb2xsZWN0aW9uLT5iYXNlKCktPnJhZGlvTm9kZUxpc3QobmFtZSkuZ2V0KCksIGNyZWF0
aW9uQ29udGV4dCwgaXNvbGF0ZSk7Cit9CisKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEhUTUxG
b3JtQ29udHJvbHNDb2xsZWN0aW9uOjpuYW1lZFByb3BlcnR5R2V0dGVyKHY4OjpMb2NhbDx2ODo6
U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIElOQ19T
VEFUUygiRE9NLkhUTUxDb2xsZWN0aW9uLk5hbWVkUHJvcGVydHlHZXR0ZXIiKTsKKworICAgIGlm
ICghaW5mby5Ib2xkZXIoKS0+R2V0UmVhbE5hbWVkUHJvcGVydHlJblByb3RvdHlwZUNoYWluKG5h
bWUpLklzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoaW5mby5HZXRJc29s
YXRlKCkpOworICAgIGlmIChpbmZvLkhvbGRlcigpLT5IYXNSZWFsTmFtZWRDYWxsYmFja1Byb3Bl
cnR5KG5hbWUpKQorICAgICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZChpbmZvLkdldElzb2xhdGUo
KSk7CisKKyAgICBIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbiogaW1wID0gVjhIVE1MRm9ybUNv
bnRyb2xzQ29sbGVjdGlvbjo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CisgICAgcmV0dXJuIGdl
dE5hbWVkSXRlbXMoaW1wLCB0b1dlYkNvcmVBdG9taWNTdHJpbmcobmFtZSksIGluZm8uSG9sZGVy
KCksIGluZm8uR2V0SXNvbGF0ZSgpKTsKK30KKwordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SFRN
TEZvcm1Db250cm9sc0NvbGxlY3Rpb246Om5hbWVkSXRlbUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1
bWVudHMmIGFyZ3MpCit7CisgICAgSU5DX1NUQVRTKCJET00uSFRNTENvbGxlY3Rpb24ubmFtZWRJ
dGVtKCkiKTsKKyAgICBIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbiogaW1wID0gVjhIVE1MRm9y
bUNvbnRyb2xzQ29sbGVjdGlvbjo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7CisgICAgdjg6Okhh
bmRsZTx2ODo6VmFsdWU+IHJlc3VsdCA9IGdldE5hbWVkSXRlbXMoaW1wLCB0b1dlYkNvcmVTdHJp
bmcoYXJnc1swXSksIGFyZ3MuSG9sZGVyKCksIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKKworICAgIGlm
IChyZXN1bHQuSXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZChhcmdzLkdl
dElzb2xhdGUoKSk7CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MT3B0
aW9uc0NvbGxlY3Rpb25DdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxPcHRpb25zQ29sbGVjdGlvbkN1c3RvbS5jcHAJKHJldmlz
aW9uIDEzMzY5MykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxP
cHRpb25zQ29sbGVjdGlvbkN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5LDEwICszOSw1
MSBAQAogI2luY2x1ZGUgIlY4Q29sbGVjdGlvbi5oIgogI2luY2x1ZGUgIlY4SFRNTE9wdGlvbkVs
ZW1lbnQuaCIKICNpbmNsdWRlICJWOEhUTUxTZWxlY3RFbGVtZW50Q3VzdG9tLmgiCisjaW5jbHVk
ZSAiVjhOYW1lZE5vZGVzQ29sbGVjdGlvbi5oIgogI2luY2x1ZGUgIlY4Tm9kZS5oIgorI2luY2x1
ZGUgIlY4Tm9kZUxpc3QuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitzdGF0aWMgdjg6Okhh
bmRsZTx2ODo6VmFsdWU+IGdldE5hbWVkSXRlbXMoSFRNTE9wdGlvbnNDb2xsZWN0aW9uKiBjb2xs
ZWN0aW9uLCBBdG9taWNTdHJpbmcgbmFtZSwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlv
bkNvbnRleHQsIHY4OjpJc29sYXRlKiBpc29sYXRlKQoreworICAgIFZlY3RvcjxSZWZQdHI8Tm9k
ZT4gPiBuYW1lZEl0ZW1zOworICAgIGNvbGxlY3Rpb24tPm5hbWVkSXRlbXMobmFtZSwgbmFtZWRJ
dGVtcyk7CisKKyAgICBpZiAoIW5hbWVkSXRlbXMuc2l6ZSgpKQorICAgICAgICByZXR1cm4gdjg6
OlVuZGVmaW5lZChpc29sYXRlKTsKKworICAgIGlmIChuYW1lZEl0ZW1zLnNpemUoKSA9PSAxKQor
ICAgICAgICByZXR1cm4gdG9WOChuYW1lZEl0ZW1zLmF0KDApLnJlbGVhc2UoKSwgY3JlYXRpb25D
b250ZXh0LCBpc29sYXRlKTsKKworICAgIHJldHVybiB0b1Y4KFY4TmFtZWROb2Rlc0NvbGxlY3Rp
b246OmNyZWF0ZShuYW1lZEl0ZW1zKSwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsKK30KKwor
djg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SFRNTE9wdGlvbnNDb2xsZWN0aW9uOjpuYW1lZFByb3Bl
cnR5R2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJ
bmZvJiBpbmZvKQoreworICAgIElOQ19TVEFUUygiRE9NLkhUTUxDb2xsZWN0aW9uLk5hbWVkUHJv
cGVydHlHZXR0ZXIiKTsKKworICAgIGlmICghaW5mby5Ib2xkZXIoKS0+R2V0UmVhbE5hbWVkUHJv
cGVydHlJblByb3RvdHlwZUNoYWluKG5hbWUpLklzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIHY4
OjpVbmRlZmluZWQoaW5mby5HZXRJc29sYXRlKCkpOworICAgIGlmIChpbmZvLkhvbGRlcigpLT5I
YXNSZWFsTmFtZWRDYWxsYmFja1Byb3BlcnR5KG5hbWUpKQorICAgICAgICByZXR1cm4gdjg6OlVu
ZGVmaW5lZChpbmZvLkdldElzb2xhdGUoKSk7CisKKyAgICBIVE1MT3B0aW9uc0NvbGxlY3Rpb24q
IGltcCA9IFY4SFRNTE9wdGlvbnNDb2xsZWN0aW9uOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsK
KyAgICByZXR1cm4gZ2V0TmFtZWRJdGVtcyhpbXAsIHRvV2ViQ29yZUF0b21pY1N0cmluZyhuYW1l
KSwgaW5mby5Ib2xkZXIoKSwgaW5mby5HZXRJc29sYXRlKCkpOworfQorCit2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gVjhIVE1MT3B0aW9uc0NvbGxlY3Rpb246Om5hbWVkSXRlbUNhbGxiYWNrKGNvbnN0
IHY4OjpBcmd1bWVudHMmIGFyZ3MpCit7CisgICAgSU5DX1NUQVRTKCJET00uSFRNTENvbGxlY3Rp
b24ubmFtZWRJdGVtKCkiKTsKKyAgICBIVE1MT3B0aW9uc0NvbGxlY3Rpb24qIGltcCA9IFY4SFRN
TE9wdGlvbnNDb2xsZWN0aW9uOjp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKKyAgICB2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gcmVzdWx0ID0gZ2V0TmFtZWRJdGVtcyhpbXAsIHRvV2ViQ29yZVN0cmlu
ZyhhcmdzWzBdKSwgYXJncy5Ib2xkZXIoKSwgYXJncy5HZXRJc29sYXRlKCkpOworCisgICAgaWYg
KHJlc3VsdC5Jc0VtcHR5KCkpCisgICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKGFyZ3MuR2V0
SXNvbGF0ZSgpKTsKKworICAgIHJldHVybiByZXN1bHQ7Cit9CisKIHY4OjpIYW5kbGU8djg6OlZh
bHVlPiBWOEhUTUxPcHRpb25zQ29sbGVjdGlvbjo6cmVtb3ZlQ2FsbGJhY2soY29uc3Qgdjg6OkFy
Z3VtZW50cyYgYXJncykKIHsKICAgICBJTkNfU1RBVFMoIkRPTS5IVE1MT3B0aW9uc0NvbGxlY3Rp
b24ucmVtb3ZlKCkiKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkocmV2aXNpb24gMTMz
NjkzKQorKysgU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNDQ1MCwxMSArNDQ1MCw2IEBAIFBhc3NSZWZQdHI8SFRNTENvbGxlY3Rpb24+IERvY3VtZW50
OjpwbHUKICAgICByZXR1cm4gY2FjaGVkQ29sbGVjdGlvbihEb2NFbWJlZHMpOwogfQogCi1QYXNz
UmVmUHRyPEhUTUxDb2xsZWN0aW9uPiBEb2N1bWVudDo6b2JqZWN0cygpCi17Ci0gICAgcmV0dXJu
IGNhY2hlZENvbGxlY3Rpb24oRG9jT2JqZWN0cyk7Ci19Ci0KIFBhc3NSZWZQdHI8SFRNTENvbGxl
Y3Rpb24+IERvY3VtZW50OjpzY3JpcHRzKCkKIHsKICAgICByZXR1cm4gY2FjaGVkQ29sbGVjdGlv
bihEb2NTY3JpcHRzKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCShyZXZpc2lvbiAxMzM2OTMp
CisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDM4
LDcgKzQzOCw2IEBAIHB1YmxpYzoKICAgICBQYXNzUmVmUHRyPEhUTUxDb2xsZWN0aW9uPiBsaW5r
cygpOwogICAgIFBhc3NSZWZQdHI8SFRNTENvbGxlY3Rpb24+IGZvcm1zKCk7CiAgICAgUGFzc1Jl
ZlB0cjxIVE1MQ29sbGVjdGlvbj4gYW5jaG9ycygpOwotICAgIFBhc3NSZWZQdHI8SFRNTENvbGxl
Y3Rpb24+IG9iamVjdHMoKTsKICAgICBQYXNzUmVmUHRyPEhUTUxDb2xsZWN0aW9uPiBzY3JpcHRz
KCk7CiAgICAgUGFzc1JlZlB0cjxIVE1MQ29sbGVjdGlvbj4gYWxsKCk7CiAgICAgdm9pZCByZW1v
dmVDYWNoZWRIVE1MQ29sbGVjdGlvbihIVE1MQ29sbGVjdGlvbiosIENvbGxlY3Rpb25UeXBlKTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAJKHJldmlzaW9uIDEzMzY5MykKKysrIFNvdXJjZS9X
ZWJDb3JlL2RvbS9FbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDYsNyArNDYsNyBAQAog
I2luY2x1ZGUgIkhUTUxDb2xsZWN0aW9uLmgiCiAjaW5jbHVkZSAiSFRNTERvY3VtZW50LmgiCiAj
aW5jbHVkZSAiSFRNTEVsZW1lbnQuaCIKLSNpbmNsdWRlICJIVE1MRm9ybUNvbGxlY3Rpb24uaCIK
KyNpbmNsdWRlICJIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5oIgogI2luY2x1ZGUgIkhUTUxG
cmFtZU93bmVyRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxMYWJlbEVsZW1lbnQuaCIKICNpbmNs
dWRlICJIVE1MTmFtZXMuaCIKQEAgLTIzNDgsNyArMjM0OCw3IEBAIFBhc3NSZWZQdHI8SFRNTENv
bGxlY3Rpb24+IEVsZW1lbnRSYXJlRGEKICAgICAgICAgY29sbGVjdGlvbiA9IEhUTUxPcHRpb25z
Q29sbGVjdGlvbjo6Y3JlYXRlKGVsZW1lbnQpOwogICAgIH0gZWxzZSBpZiAodHlwZSA9PSBGb3Jt
Q29udHJvbHMpIHsKICAgICAgICAgQVNTRVJUKGVsZW1lbnQtPmhhc1RhZ05hbWUoZm9ybVRhZykg
fHwgZWxlbWVudC0+aGFzVGFnTmFtZShmaWVsZHNldFRhZykpOwotICAgICAgICBjb2xsZWN0aW9u
ID0gSFRNTEZvcm1Db2xsZWN0aW9uOjpjcmVhdGUoZWxlbWVudCk7CisgICAgICAgIGNvbGxlY3Rp
b24gPSBIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbjo6Y3JlYXRlKGVsZW1lbnQpOwogI2lmIEVO
QUJMRShNSUNST0RBVEEpCiAgICAgfSBlbHNlIGlmICh0eXBlID09IEl0ZW1Qcm9wZXJ0aWVzKSB7
CiAgICAgICAgIGNvbGxlY3Rpb24gPSBIVE1MUHJvcGVydGllc0NvbGxlY3Rpb246OmNyZWF0ZShl
bGVtZW50KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvQ29sbGVjdGlvblR5cGUuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0NvbGxlY3Rpb25UeXBlLmgJKHJldmlzaW9u
IDEzMzY5MykKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvQ29sbGVjdGlvblR5cGUuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzEsNyArMzEsNiBAQCBlbnVtIENvbGxlY3Rpb25UeXBlIHsKICAgICBEb2NJ
bWFnZXMsICAgIC8vIGFsbCA8aW1nPiBlbGVtZW50cyBpbiB0aGUgZG9jdW1lbnQKICAgICBEb2NB
cHBsZXRzLCAgIC8vIGFsbCA8b2JqZWN0PiBhbmQgPGFwcGxldD4gZWxlbWVudHMKICAgICBEb2NF
bWJlZHMsICAgIC8vIGFsbCA8ZW1iZWQ+IGVsZW1lbnRzCi0gICAgRG9jT2JqZWN0cywgICAvLyBh
bGwgPG9iamVjdD4gZWxlbWVudHMKICAgICBEb2NGb3JtcywgICAgIC8vIGFsbCA8Zm9ybT4gZWxl
bWVudHMKICAgICBEb2NMaW5rcywgICAgIC8vIGFsbCA8YT4gX2FuZF8gPGFyZWE+IGVsZW1lbnRz
IHdpdGggYSB2YWx1ZSBmb3IgaHJlZgogICAgIERvY0FuY2hvcnMsICAgLy8gYWxsIDxhPiBlbGVt
ZW50cyB3aXRoIGEgdmFsdWUgZm9yIG5hbWUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TENvbGxlY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENv
bGxlY3Rpb24uY3BwCShyZXZpc2lvbiAxMzM2OTMpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxDb2xsZWN0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTEsNyArNTEsNiBAQCBzdGF0aWMg
Ym9vbCBzaG91bGRPbmx5SW5jbHVkZURpcmVjdENoaWxkCiAgICAgY2FzZSBEb2NGb3JtczoKICAg
ICBjYXNlIERvY0ltYWdlczoKICAgICBjYXNlIERvY0xpbmtzOgotICAgIGNhc2UgRG9jT2JqZWN0
czoKICAgICBjYXNlIERvY1NjcmlwdHM6CiAgICAgY2FzZSBEb2N1bWVudE5hbWVkSXRlbXM6CiAg
ICAgY2FzZSBNYXBBcmVhczoKQEAgLTgzLDcgKzgyLDYgQEAgc3RhdGljIE5vZGVMaXN0Um9vdFR5
cGUgcm9vdFR5cGVGcm9tQ29sbAogICAgIGNhc2UgRG9jSW1hZ2VzOgogICAgIGNhc2UgRG9jQXBw
bGV0czoKICAgICBjYXNlIERvY0VtYmVkczoKLSAgICBjYXNlIERvY09iamVjdHM6CiAgICAgY2Fz
ZSBEb2NGb3JtczoKICAgICBjYXNlIERvY0xpbmtzOgogICAgIGNhc2UgRG9jQW5jaG9yczoKQEAg
LTExNyw3ICsxMTUsNiBAQCBzdGF0aWMgTm9kZUxpc3RJbnZhbGlkYXRpb25UeXBlIGludmFsaWRh
CiAgICAgc3dpdGNoICh0eXBlKSB7CiAgICAgY2FzZSBEb2NJbWFnZXM6CiAgICAgY2FzZSBEb2NF
bWJlZHM6Ci0gICAgY2FzZSBEb2NPYmplY3RzOgogICAgIGNhc2UgRG9jRm9ybXM6CiAgICAgY2Fz
ZSBEb2NBbmNob3JzOiAvLyBEZXBlbmRzIG9uIG5hbWUgYXR0cmlidXRlLgogICAgIGNhc2UgRG9j
U2NyaXB0czoKQEAgLTIxNCw4ICsyMTEsNiBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaXNBY2NlcHRh
YmxlRWxlbWVudChDCiAgICAgICAgIHJldHVybiBlbGVtZW50LT5oYXNMb2NhbE5hbWUoYXBwbGV0
VGFnKSB8fCAoZWxlbWVudC0+aGFzTG9jYWxOYW1lKG9iamVjdFRhZykgJiYgc3RhdGljX2Nhc3Q8
SFRNTE9iamVjdEVsZW1lbnQqPihlbGVtZW50KS0+Y29udGFpbnNKYXZhQXBwbGV0KCkpOwogICAg
IGNhc2UgRG9jRW1iZWRzOgogICAgICAgICByZXR1cm4gZWxlbWVudC0+aGFzTG9jYWxOYW1lKGVt
YmVkVGFnKTsKLSAgICBjYXNlIERvY09iamVjdHM6Ci0gICAgICAgIHJldHVybiBlbGVtZW50LT5o
YXNMb2NhbE5hbWUob2JqZWN0VGFnKTsKICAgICBjYXNlIERvY0xpbmtzOgogICAgICAgICByZXR1
cm4gKGVsZW1lbnQtPmhhc0xvY2FsTmFtZShhVGFnKSB8fCBlbGVtZW50LT5oYXNMb2NhbE5hbWUo
YXJlYVRhZykpICYmIGVsZW1lbnQtPmZhc3RIYXNBdHRyaWJ1dGUoaHJlZkF0dHIpOwogICAgIGNh
c2UgRG9jQW5jaG9yczoKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENvbGxlY3Rpb24u
aWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENvbGxlY3Rpb24uaWRs
CShyZXZpc2lvbiAxMzM2OTMpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDb2xsZWN0aW9u
LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjgsNyArMjgsNyBAQAogXSBpbnRlcmZhY2UgSFRNTENv
bGxlY3Rpb24gewogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIGxlbmd0aDsK
ICAgICBOb2RlIGl0ZW0oaW4gW09wdGlvbmFsPURlZmF1bHRJc1VuZGVmaW5lZF0gdW5zaWduZWQg
bG9uZyBpbmRleCk7Ci0gICAgW0N1c3RvbV0gTm9kZSBuYW1lZEl0ZW0oaW4gW09wdGlvbmFsPURl
ZmF1bHRJc1VuZGVmaW5lZF0gRE9NU3RyaW5nIG5hbWUpOworICAgIE5vZGUgbmFtZWRJdGVtKGlu
IFtPcHRpb25hbD1EZWZhdWx0SXNVbmRlZmluZWRdIERPTVN0cmluZyBuYW1lKTsKIAogI2lmIGRl
ZmluZWQoTEFOR1VBR0VfT0JKRUNUSVZFX0MpICYmIExBTkdVQUdFX09CSkVDVElWRV9DCiAgICAg
Tm9kZUxpc3QgdGFncyhpbiBbT3B0aW9uYWw9RGVmYXVsdElzVW5kZWZpbmVkXSBET01TdHJpbmcg
bmFtZSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGaWVsZFNldEVsZW1lbnQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZpZWxkU2V0RWxlbWVudC5j
cHAJKHJldmlzaW9uIDEzMzY5MykKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZpZWxkU2V0
RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1LDcgKzI1LDcgQEAKICNpbmNsdWRlICJj
b25maWcuaCIKICNpbmNsdWRlICJIVE1MRmllbGRTZXRFbGVtZW50LmgiCiAKLSNpbmNsdWRlICJI
VE1MRm9ybUNvbGxlY3Rpb24uaCIKKyNpbmNsdWRlICJIVE1MQ29sbGVjdGlvbi5oIgogI2luY2x1
ZGUgIkhUTUxMZWdlbmRFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVk
ZSAiSFRNTE9iamVjdEVsZW1lbnQuaCIKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZp
ZWxkU2V0RWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZp
ZWxkU2V0RWxlbWVudC5oCShyZXZpc2lvbiAxMzM2OTMpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxGaWVsZFNldEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzEsNyArMzEsNiBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEZvcm1Bc3NvY2lhdGVkRWxlbWVudDsKIGNsYXNz
IEhUTUxDb2xsZWN0aW9uOwotY2xhc3MgSFRNTEZvcm1Db2xsZWN0aW9uOwogCiBjbGFzcyBIVE1M
RmllbGRTZXRFbGVtZW50IDogcHVibGljIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQgewogcHVibGlj
OgpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbGxlY3Rpb24uY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db2xsZWN0aW9uLmNwcAkocmV2
aXNpb24gMTMzNjkzKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbGxlY3Rpb24u
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDE2MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAxOTk5IExhcnMgS25vbGwgKGtub2xsQGtkZS5vcmcpCi0gKiAgICAgICAgICAgKEMpIDE5OTkg
QW50dGkgS29pdmlzdG8gKGtvaXZpc3RvQGtkZS5vcmcpCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDMs
IDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMTAsIDIwMTEsIDIwMTIgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5
b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVy
bXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFzIHB1Ymxp
c2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqIHZlcnNpb24g
MiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4K
LSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3
aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVu
IHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogTGlicmFyeSBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogWW91IHNob3VsZCBoYXZl
IHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZQotICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4g
IElmIG5vdCwgd3JpdGUgdG8KLSAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4s
IDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gKiBCb3N0b24sIE1BIDAyMTEwLTEz
MDEsIFVTQS4KLSAqCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkhUTUxG
b3JtQ29sbGVjdGlvbi5oIgotCi0jaW5jbHVkZSAiSFRNTEZpZWxkU2V0RWxlbWVudC5oIgotI2lu
Y2x1ZGUgIkhUTUxGb3JtQ29udHJvbEVsZW1lbnQuaCIKLSNpbmNsdWRlICJIVE1MRm9ybUVsZW1l
bnQuaCIKLSNpbmNsdWRlICJIVE1MSW1hZ2VFbGVtZW50LmgiCi0jaW5jbHVkZSAiSFRNTE5hbWVz
LmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsK
LQotLy8gU2luY2UgdGhlIGNvbGxlY3Rpb25zIGFyZSB0byBiZSAibGl2ZSIsIHdlIGhhdmUgdG8g
ZG8gdGhlCi0vLyBjYWxjdWxhdGlvbiBldmVyeSB0aW1lIGlmIGFueXRoaW5nIGhhcyBjaGFuZ2Vk
LgotCi1IVE1MRm9ybUNvbGxlY3Rpb246OkhUTUxGb3JtQ29sbGVjdGlvbihFbGVtZW50KiBiYXNl
KQotICAgIDogSFRNTENvbGxlY3Rpb24oYmFzZSwgRm9ybUNvbnRyb2xzLCBPdmVycmlkZXNJdGVt
QWZ0ZXIpCi17Ci0gICAgQVNTRVJUKGJhc2UtPmhhc1RhZ05hbWUoZm9ybVRhZykgfHwgYmFzZS0+
aGFzVGFnTmFtZShmaWVsZHNldFRhZykpOwotfQotCi1QYXNzUmVmUHRyPEhUTUxGb3JtQ29sbGVj
dGlvbj4gSFRNTEZvcm1Db2xsZWN0aW9uOjpjcmVhdGUoRWxlbWVudCogYmFzZSkKLXsKLSAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IEhUTUxGb3JtQ29sbGVjdGlvbihiYXNlKSk7Ci19Ci0KLUhUTUxG
b3JtQ29sbGVjdGlvbjo6fkhUTUxGb3JtQ29sbGVjdGlvbigpCi17Ci19Ci0KLWNvbnN0IFZlY3Rv
cjxGb3JtQXNzb2NpYXRlZEVsZW1lbnQqPiYgSFRNTEZvcm1Db2xsZWN0aW9uOjpmb3JtQ29udHJv
bEVsZW1lbnRzKCkgY29uc3QKLXsKLSAgICBBU1NFUlQoYmFzZSgpKTsKLSAgICBBU1NFUlQoYmFz
ZSgpLT5oYXNUYWdOYW1lKGZvcm1UYWcpIHx8IGJhc2UoKS0+aGFzVGFnTmFtZShmaWVsZHNldFRh
ZykpOwotICAgIGlmIChiYXNlKCktPmhhc1RhZ05hbWUoZm9ybVRhZykpCi0gICAgICAgIHJldHVy
biBzdGF0aWNfY2FzdDxIVE1MRm9ybUVsZW1lbnQqPihiYXNlKCkpLT5hc3NvY2lhdGVkRWxlbWVu
dHMoKTsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SFRNTEZpZWxkU2V0RWxlbWVudCo+KGJhc2Uo
KSktPmFzc29jaWF0ZWRFbGVtZW50cygpOwotfQotCi1jb25zdCBWZWN0b3I8SFRNTEltYWdlRWxl
bWVudCo+JiBIVE1MRm9ybUNvbGxlY3Rpb246OmZvcm1JbWFnZUVsZW1lbnRzKCkgY29uc3QKLXsK
LSAgICBBU1NFUlQoYmFzZSgpKTsKLSAgICBBU1NFUlQoYmFzZSgpLT5oYXNUYWdOYW1lKGZvcm1U
YWcpKTsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SFRNTEZvcm1FbGVtZW50Kj4oYmFzZSgpKS0+
aW1hZ2VFbGVtZW50cygpOwotfQotCi1FbGVtZW50KiBIVE1MRm9ybUNvbGxlY3Rpb246OnZpcnR1
YWxJdGVtQWZ0ZXIodW5zaWduZWQmIG9mZnNldCwgRWxlbWVudCogcHJldmlvdXNJdGVtKSBjb25z
dAotewotICAgIGNvbnN0IFZlY3RvcjxGb3JtQXNzb2NpYXRlZEVsZW1lbnQqPiYgZWxlbWVudHNB
cnJheSA9IGZvcm1Db250cm9sRWxlbWVudHMoKTsKLSAgICBpZiAocHJldmlvdXNJdGVtKQotICAg
ICAgICBvZmZzZXQrKzsKLSAgICB3aGlsZSAob2Zmc2V0IDwgZWxlbWVudHNBcnJheS5zaXplKCkp
IHsKLSAgICAgICAgRm9ybUFzc29jaWF0ZWRFbGVtZW50KiBlbGVtZW50ID0gZWxlbWVudHNBcnJh
eVtvZmZzZXRdOwotICAgICAgICBpZiAoZWxlbWVudC0+aXNFbnVtZXJhdGFibGUoKSkKLSAgICAg
ICAgICAgIHJldHVybiB0b0hUTUxFbGVtZW50KGVsZW1lbnQpOwotICAgICAgICBvZmZzZXQrKzsK
LSAgICB9Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLXN0YXRpYyBIVE1MRWxlbWVudCogZmlyc3ROYW1l
ZEl0ZW0oY29uc3QgVmVjdG9yPEZvcm1Bc3NvY2lhdGVkRWxlbWVudCo+JiBlbGVtZW50c0FycmF5
LAotICAgIGNvbnN0IFZlY3RvcjxIVE1MSW1hZ2VFbGVtZW50Kj4qIGltYWdlRWxlbWVudHNBcnJh
eSwgY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUsIGNvbnN0IFN0cmluZyYgbmFtZSkKLXsK
LSAgICBBU1NFUlQoYXR0ck5hbWUgPT0gaWRBdHRyIHx8IGF0dHJOYW1lID09IG5hbWVBdHRyKTsK
LQotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBlbGVtZW50c0FycmF5LnNpemUoKTsgKytp
KSB7Ci0gICAgICAgIEhUTUxFbGVtZW50KiBlbGVtZW50ID0gdG9IVE1MRWxlbWVudChlbGVtZW50
c0FycmF5W2ldKTsKLSAgICAgICAgaWYgKGVsZW1lbnRzQXJyYXlbaV0tPmlzRW51bWVyYXRhYmxl
KCkgJiYgZWxlbWVudC0+ZmFzdEdldEF0dHJpYnV0ZShhdHRyTmFtZSkgPT0gbmFtZSkKLSAgICAg
ICAgICAgIHJldHVybiBlbGVtZW50OwotICAgIH0KLQotICAgIGlmICghaW1hZ2VFbGVtZW50c0Fy
cmF5KQotICAgICAgICByZXR1cm4gMDsKLQotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBp
bWFnZUVsZW1lbnRzQXJyYXktPnNpemUoKTsgKytpKSB7Ci0gICAgICAgIEhUTUxJbWFnZUVsZW1l
bnQqIGVsZW1lbnQgPSAoKmltYWdlRWxlbWVudHNBcnJheSlbaV07Ci0gICAgICAgIGlmIChlbGVt
ZW50LT5mYXN0R2V0QXR0cmlidXRlKGF0dHJOYW1lKSA9PSBuYW1lKQotICAgICAgICAgICAgcmV0
dXJuIGVsZW1lbnQ7Ci0gICAgfQotCi0gICAgcmV0dXJuIDA7Ci19Ci0KLU5vZGUqIEhUTUxGb3Jt
Q29sbGVjdGlvbjo6bmFtZWRJdGVtKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSkgY29uc3QKLXsK
LSAgICAvLyBodHRwOi8vbXNkbi5taWNyb3NvZnQuY29tL3dvcmtzaG9wL2F1dGhvci9kaHRtbC9y
ZWZlcmVuY2UvbWV0aG9kcy9uYW1lZGl0ZW0uYXNwCi0gICAgLy8gVGhpcyBtZXRob2QgZmlyc3Qg
c2VhcmNoZXMgZm9yIGFuIG9iamVjdCB3aXRoIGEgbWF0Y2hpbmcgaWQKLSAgICAvLyBhdHRyaWJ1
dGUuIElmIGEgbWF0Y2ggaXMgbm90IGZvdW5kLCB0aGUgbWV0aG9kIHRoZW4gc2VhcmNoZXMgZm9y
IGFuCi0gICAgLy8gb2JqZWN0IHdpdGggYSBtYXRjaGluZyBuYW1lIGF0dHJpYnV0ZSwgYnV0IG9u
bHkgb24gdGhvc2UgZWxlbWVudHMKLSAgICAvLyB0aGF0IGFyZSBhbGxvd2VkIGEgbmFtZSBhdHRy
aWJ1dGUuCi0gICAgY29uc3QgVmVjdG9yPEhUTUxJbWFnZUVsZW1lbnQqPiogaW1hZ2VzRWxlbWVu
dHMgPSBiYXNlKCktPmhhc1RhZ05hbWUoZmllbGRzZXRUYWcpID8gMCA6ICZmb3JtSW1hZ2VFbGVt
ZW50cygpOwotICAgIGlmIChIVE1MRWxlbWVudCogaXRlbSA9IGZpcnN0TmFtZWRJdGVtKGZvcm1D
b250cm9sRWxlbWVudHMoKSwgaW1hZ2VzRWxlbWVudHMsIGlkQXR0ciwgbmFtZSkpCi0gICAgICAg
IHJldHVybiBpdGVtOwotCi0gICAgcmV0dXJuIGZpcnN0TmFtZWRJdGVtKGZvcm1Db250cm9sRWxl
bWVudHMoKSwgaW1hZ2VzRWxlbWVudHMsIG5hbWVBdHRyLCBuYW1lKTsKLX0KLQotdm9pZCBIVE1M
Rm9ybUNvbGxlY3Rpb246OnVwZGF0ZU5hbWVDYWNoZSgpIGNvbnN0Ci17Ci0gICAgaWYgKGhhc05h
bWVDYWNoZSgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBIYXNoU2V0PEF0b21pY1N0cmluZ0lt
cGwqPiBmb3VuZElucHV0RWxlbWVudHM7Ci0KLSAgICBjb25zdCBWZWN0b3I8Rm9ybUFzc29jaWF0
ZWRFbGVtZW50Kj4mIGVsZW1lbnRzQXJyYXkgPSBmb3JtQ29udHJvbEVsZW1lbnRzKCk7Ci0KLSAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZWxlbWVudHNBcnJheS5zaXplKCk7ICsraSkgewot
ICAgICAgICBGb3JtQXNzb2NpYXRlZEVsZW1lbnQqIGFzc29jaWF0ZWRFbGVtZW50ID0gZWxlbWVu
dHNBcnJheVtpXTsKLSAgICAgICAgaWYgKGFzc29jaWF0ZWRFbGVtZW50LT5pc0VudW1lcmF0YWJs
ZSgpKSB7Ci0gICAgICAgICAgICBIVE1MRWxlbWVudCogZWxlbWVudCA9IHRvSFRNTEVsZW1lbnQo
YXNzb2NpYXRlZEVsZW1lbnQpOwotICAgICAgICAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBpZEF0
dHJWYWwgPSBlbGVtZW50LT5nZXRJZEF0dHJpYnV0ZSgpOwotICAgICAgICAgICAgY29uc3QgQXRv
bWljU3RyaW5nJiBuYW1lQXR0clZhbCA9IGVsZW1lbnQtPmdldE5hbWVBdHRyaWJ1dGUoKTsKLSAg
ICAgICAgICAgIGlmICghaWRBdHRyVmFsLmlzRW1wdHkoKSkgewotICAgICAgICAgICAgICAgIGFw
cGVuZElkQ2FjaGUoaWRBdHRyVmFsLCBlbGVtZW50KTsKLSAgICAgICAgICAgICAgICBmb3VuZElu
cHV0RWxlbWVudHMuYWRkKGlkQXR0clZhbC5pbXBsKCkpOwotICAgICAgICAgICAgfQotICAgICAg
ICAgICAgaWYgKCFuYW1lQXR0clZhbC5pc0VtcHR5KCkgJiYgaWRBdHRyVmFsICE9IG5hbWVBdHRy
VmFsKSB7Ci0gICAgICAgICAgICAgICAgYXBwZW5kTmFtZUNhY2hlKG5hbWVBdHRyVmFsLCBlbGVt
ZW50KTsKLSAgICAgICAgICAgICAgICBmb3VuZElucHV0RWxlbWVudHMuYWRkKG5hbWVBdHRyVmFs
LmltcGwoKSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBpZiAoYmFz
ZSgpLT5oYXNUYWdOYW1lKGZvcm1UYWcpKSB7Ci0gICAgICAgIGNvbnN0IFZlY3RvcjxIVE1MSW1h
Z2VFbGVtZW50Kj4mIGltYWdlRWxlbWVudHNBcnJheSA9IGZvcm1JbWFnZUVsZW1lbnRzKCk7Ci0g
ICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBpbWFnZUVsZW1lbnRzQXJyYXkuc2l6ZSgp
OyArK2kpIHsKLSAgICAgICAgICAgIEhUTUxJbWFnZUVsZW1lbnQqIGVsZW1lbnQgPSBpbWFnZUVs
ZW1lbnRzQXJyYXlbaV07Ci0gICAgICAgICAgICBjb25zdCBBdG9taWNTdHJpbmcmIGlkQXR0clZh
bCA9IGVsZW1lbnQtPmdldElkQXR0cmlidXRlKCk7Ci0gICAgICAgICAgICBjb25zdCBBdG9taWNT
dHJpbmcmIG5hbWVBdHRyVmFsID0gZWxlbWVudC0+Z2V0TmFtZUF0dHJpYnV0ZSgpOwotICAgICAg
ICAgICAgaWYgKCFpZEF0dHJWYWwuaXNFbXB0eSgpICYmICFmb3VuZElucHV0RWxlbWVudHMuY29u
dGFpbnMoaWRBdHRyVmFsLmltcGwoKSkpCi0gICAgICAgICAgICAgICAgYXBwZW5kSWRDYWNoZShp
ZEF0dHJWYWwsIGVsZW1lbnQpOwotICAgICAgICAgICAgaWYgKCFuYW1lQXR0clZhbC5pc0VtcHR5
KCkgJiYgaWRBdHRyVmFsICE9IG5hbWVBdHRyVmFsICYmICFmb3VuZElucHV0RWxlbWVudHMuY29u
dGFpbnMobmFtZUF0dHJWYWwuaW1wbCgpKSkKLSAgICAgICAgICAgICAgICBhcHBlbmROYW1lQ2Fj
aGUobmFtZUF0dHJWYWwsIGVsZW1lbnQpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgc2V0SGFz
TmFtZUNhY2hlKCk7Ci19Ci0KLX0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1D
b2xsZWN0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNv
bGxlY3Rpb24uaAkocmV2aXNpb24gMTMzNjkzKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
Rm9ybUNvbGxlY3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMSw1NyArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAxOTk5IExhcnMgS25vbGwgKGtub2xsQGtkZS5vcmcpCi0gKiAgICAgICAg
ICAgKEMpIDE5OTkgQW50dGkgS29pdmlzdG8gKGtvaXZpc3RvQGtkZS5vcmcpCi0gKiBDb3B5cmln
aHQgKEMpIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDggQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5
b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVy
bXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFzIHB1Ymxp
c2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqIHZlcnNpb24g
MiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4K
LSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3
aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVu
IHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogTGlicmFyeSBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogWW91IHNob3VsZCBoYXZl
IHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZQotICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4g
IElmIG5vdCwgd3JpdGUgdG8KLSAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4s
IDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gKiBCb3N0b24sIE1BIDAyMTEwLTEz
MDEsIFVTQS4KLSAqCi0gKi8KLQotI2lmbmRlZiBIVE1MRm9ybUNvbGxlY3Rpb25faAotI2RlZmlu
ZSBIVE1MRm9ybUNvbGxlY3Rpb25faAotCi0jaW5jbHVkZSAiSFRNTENvbGxlY3Rpb24uaCIKLQot
bmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBGb3JtQXNzb2NpYXRlZEVsZW1lbnQ7Ci1jbGFz
cyBIVE1MRWxlbWVudDsKLWNsYXNzIEhUTUxJbWFnZUVsZW1lbnQ7Ci1jbGFzcyBRdWFsaWZpZWRO
YW1lOwotLy8gVGhpcyBjbGFzcyBpcyBqdXN0IGEgYmlnIGhhY2sgdG8gZmluZCBmb3JtIGVsZW1l
bnRzIGV2ZW4gaW4gbWFsZm9ybWVkIEhUTUwgZWxlbWVudHMuCi0vLyBUaGUgZmFtb3VzIDx0YWJs
ZT48dHI+PGZvcm0+PHRkPiBwcm9ibGVtLgotCi1jbGFzcyBIVE1MRm9ybUNvbGxlY3Rpb24gOiBw
dWJsaWMgSFRNTENvbGxlY3Rpb24gewotcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEhU
TUxGb3JtQ29sbGVjdGlvbj4gY3JlYXRlKEVsZW1lbnQqKTsKLQotICAgIHZpcnR1YWwgfkhUTUxG
b3JtQ29sbGVjdGlvbigpOwotCi0gICAgdmlydHVhbCBOb2RlKiBuYW1lZEl0ZW0oY29uc3QgQXRv
bWljU3RyaW5nJiBuYW1lKSBjb25zdDsKLQotcHJpdmF0ZToKLSAgICBIVE1MRm9ybUNvbGxlY3Rp
b24oRWxlbWVudCopOwotCi0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZU5hbWVDYWNoZSgpIGNvbnN0
OwotCi0gICAgY29uc3QgVmVjdG9yPEZvcm1Bc3NvY2lhdGVkRWxlbWVudCo+JiBmb3JtQ29udHJv
bEVsZW1lbnRzKCkgY29uc3Q7Ci0gICAgY29uc3QgVmVjdG9yPEhUTUxJbWFnZUVsZW1lbnQqPiYg
Zm9ybUltYWdlRWxlbWVudHMoKSBjb25zdDsKLSAgICB2aXJ0dWFsIEVsZW1lbnQqIHZpcnR1YWxJ
dGVtQWZ0ZXIodW5zaWduZWQmIG9mZnNldEluQXJyYXksIEVsZW1lbnQqKSBjb25zdCBPVkVSUklE
RTsKLX07Ci0KLX0gLy9uYW1lc3BhY2UKLQotI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmNwcAkocmV2aXNpb24gMTMz
NTUxKQkoZnJvbSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29sbGVjdGlvbi5jcHA6MTMz
NTUxKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxNjMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDE5OTkgTGFycyBLbm9sbCAoa25vbGxAa2RlLm9yZykKKyAqICAgICAgICAgICAoQykgMTk5OSBB
bnR0aSBLb2l2aXN0byAoa29pdmlzdG9Aa2RlLm9yZykKKyAqIENvcHlyaWdodCAoQykgMjAwMywg
MjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAxMCwgMjAxMSwgMjAxMiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlv
dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJt
cyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlz
aGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAy
IG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgor
ICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdp
bGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4g
dGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUg
cmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
CisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAg
SWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwg
NTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMw
MSwgVVNBLgorICoKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSFRNTEZv
cm1Db2xsZWN0aW9uLmgiCisKKyNpbmNsdWRlICJIVE1MRmllbGRTZXRFbGVtZW50LmgiCisjaW5j
bHVkZSAiSFRNTEZvcm1Db250cm9sRWxlbWVudC5oIgorI2luY2x1ZGUgIkhUTUxGb3JtRWxlbWVu
dC5oIgorI2luY2x1ZGUgIkhUTUxJbWFnZUVsZW1lbnQuaCIKKyNpbmNsdWRlICJIVE1MTmFtZXMu
aCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwor
CisvLyBTaW5jZSB0aGUgY29sbGVjdGlvbnMgYXJlIHRvIGJlICJsaXZlIiwgd2UgaGF2ZSB0byBk
byB0aGUKKy8vIGNhbGN1bGF0aW9uIGV2ZXJ5IHRpbWUgaWYgYW55dGhpbmcgaGFzIGNoYW5nZWQu
CisKK0hUTUxGb3JtQ29sbGVjdGlvbjo6SFRNTEZvcm1Db2xsZWN0aW9uKEVsZW1lbnQqIGJhc2Up
CisgICAgOiBIVE1MQ29sbGVjdGlvbihiYXNlLCBGb3JtQ29udHJvbHMsIE92ZXJyaWRlc0l0ZW1B
ZnRlcikKK3sKKyAgICBBU1NFUlQoYmFzZS0+aGFzVGFnTmFtZShmb3JtVGFnKSB8fCBiYXNlLT5o
YXNUYWdOYW1lKGZpZWxkc2V0VGFnKSk7Cit9CisKK1Bhc3NSZWZQdHI8SFRNTEZvcm1Db2xsZWN0
aW9uPiBIVE1MRm9ybUNvbGxlY3Rpb246OmNyZWF0ZShFbGVtZW50KiBiYXNlKQoreworICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgSFRNTEZvcm1Db2xsZWN0aW9uKGJhc2UpKTsKK30KKworSFRNTEZv
cm1Db2xsZWN0aW9uOjp+SFRNTEZvcm1Db2xsZWN0aW9uKCkKK3sKK30KKworY29uc3QgVmVjdG9y
PEZvcm1Bc3NvY2lhdGVkRWxlbWVudCo+JiBIVE1MRm9ybUNvbGxlY3Rpb246OmZvcm1Db250cm9s
RWxlbWVudHMoKSBjb25zdAoreworICAgIEFTU0VSVChiYXNlKCkpOworICAgIEFTU0VSVChiYXNl
KCktPmhhc1RhZ05hbWUoZm9ybVRhZykgfHwgYmFzZSgpLT5oYXNUYWdOYW1lKGZpZWxkc2V0VGFn
KSk7CisgICAgaWYgKGJhc2UoKS0+aGFzVGFnTmFtZShmb3JtVGFnKSkKKyAgICAgICAgcmV0dXJu
IHN0YXRpY19jYXN0PEhUTUxGb3JtRWxlbWVudCo+KGJhc2UoKSktPmFzc29jaWF0ZWRFbGVtZW50
cygpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxIVE1MRmllbGRTZXRFbGVtZW50Kj4oYmFzZSgp
KS0+YXNzb2NpYXRlZEVsZW1lbnRzKCk7Cit9CisKK2NvbnN0IFZlY3RvcjxIVE1MSW1hZ2VFbGVt
ZW50Kj4mIEhUTUxGb3JtQ29sbGVjdGlvbjo6Zm9ybUltYWdlRWxlbWVudHMoKSBjb25zdAorewor
ICAgIEFTU0VSVChiYXNlKCkpOworICAgIEFTU0VSVChiYXNlKCktPmhhc1RhZ05hbWUoZm9ybVRh
ZykpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxIVE1MRm9ybUVsZW1lbnQqPihiYXNlKCkpLT5p
bWFnZUVsZW1lbnRzKCk7Cit9CisKK0VsZW1lbnQqIEhUTUxGb3JtQ29sbGVjdGlvbjo6dmlydHVh
bEl0ZW1BZnRlcih1bnNpZ25lZCYgb2Zmc2V0LCBFbGVtZW50KiBwcmV2aW91c0l0ZW0pIGNvbnN0
Cit7CisgICAgY29uc3QgVmVjdG9yPEZvcm1Bc3NvY2lhdGVkRWxlbWVudCo+JiBlbGVtZW50c0Fy
cmF5ID0gZm9ybUNvbnRyb2xFbGVtZW50cygpOworICAgIGlmIChwcmV2aW91c0l0ZW0pCisgICAg
ICAgIG9mZnNldCsrOworICAgIHdoaWxlIChvZmZzZXQgPCBlbGVtZW50c0FycmF5LnNpemUoKSkg
eworICAgICAgICBGb3JtQXNzb2NpYXRlZEVsZW1lbnQqIGVsZW1lbnQgPSBlbGVtZW50c0FycmF5
W29mZnNldF07CisgICAgICAgIGlmIChlbGVtZW50LT5pc0VudW1lcmF0YWJsZSgpKQorICAgICAg
ICAgICAgcmV0dXJuIHRvSFRNTEVsZW1lbnQoZWxlbWVudCk7CisgICAgICAgIG9mZnNldCsrOwor
ICAgIH0KKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIEhUTUxFbGVtZW50KiBmaXJzdE5hbWVk
SXRlbShjb25zdCBWZWN0b3I8Rm9ybUFzc29jaWF0ZWRFbGVtZW50Kj4mIGVsZW1lbnRzQXJyYXks
CisgICAgY29uc3QgVmVjdG9yPEhUTUxJbWFnZUVsZW1lbnQqPiogaW1hZ2VFbGVtZW50c0FycmF5
LCBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSwgY29uc3QgU3RyaW5nJiBuYW1lKQorewor
ICAgIEFTU0VSVChhdHRyTmFtZSA9PSBpZEF0dHIgfHwgYXR0ck5hbWUgPT0gbmFtZUF0dHIpOwor
CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGVsZW1lbnRzQXJyYXkuc2l6ZSgpOyArK2kp
IHsKKyAgICAgICAgSFRNTEVsZW1lbnQqIGVsZW1lbnQgPSB0b0hUTUxFbGVtZW50KGVsZW1lbnRz
QXJyYXlbaV0pOworICAgICAgICBpZiAoZWxlbWVudHNBcnJheVtpXS0+aXNFbnVtZXJhdGFibGUo
KSAmJiBlbGVtZW50LT5mYXN0R2V0QXR0cmlidXRlKGF0dHJOYW1lKSA9PSBuYW1lKQorICAgICAg
ICAgICAgcmV0dXJuIGVsZW1lbnQ7CisgICAgfQorCisgICAgaWYgKCFpbWFnZUVsZW1lbnRzQXJy
YXkpCisgICAgICAgIHJldHVybiAwOworCisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGlt
YWdlRWxlbWVudHNBcnJheS0+c2l6ZSgpOyArK2kpIHsKKyAgICAgICAgSFRNTEltYWdlRWxlbWVu
dCogZWxlbWVudCA9ICgqaW1hZ2VFbGVtZW50c0FycmF5KVtpXTsKKyAgICAgICAgaWYgKGVsZW1l
bnQtPmZhc3RHZXRBdHRyaWJ1dGUoYXR0ck5hbWUpID09IG5hbWUpCisgICAgICAgICAgICByZXR1
cm4gZWxlbWVudDsKKyAgICB9CisKKyAgICByZXR1cm4gMDsKK30KKworTm9kZSogSFRNTEZvcm1D
b2xsZWN0aW9uOjpuYW1lZEl0ZW0oY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKSBjb25zdAorewor
ICAgIC8vIGh0dHA6Ly9tc2RuLm1pY3Jvc29mdC5jb20vd29ya3Nob3AvYXV0aG9yL2RodG1sL3Jl
ZmVyZW5jZS9tZXRob2RzL25hbWVkaXRlbS5hc3AKKyAgICAvLyBUaGlzIG1ldGhvZCBmaXJzdCBz
ZWFyY2hlcyBmb3IgYW4gb2JqZWN0IHdpdGggYSBtYXRjaGluZyBpZAorICAgIC8vIGF0dHJpYnV0
ZS4gSWYgYSBtYXRjaCBpcyBub3QgZm91bmQsIHRoZSBtZXRob2QgdGhlbiBzZWFyY2hlcyBmb3Ig
YW4KKyAgICAvLyBvYmplY3Qgd2l0aCBhIG1hdGNoaW5nIG5hbWUgYXR0cmlidXRlLCBidXQgb25s
eSBvbiB0aG9zZSBlbGVtZW50cworICAgIC8vIHRoYXQgYXJlIGFsbG93ZWQgYSBuYW1lIGF0dHJp
YnV0ZS4KKyAgICBjb25zdCBWZWN0b3I8SFRNTEltYWdlRWxlbWVudCo+KiBpbWFnZXNFbGVtZW50
cyA9IGJhc2UoKS0+aGFzVGFnTmFtZShmaWVsZHNldFRhZykgPyAwIDogJmZvcm1JbWFnZUVsZW1l
bnRzKCk7CisgICAgaWYgKEhUTUxFbGVtZW50KiBpdGVtID0gZmlyc3ROYW1lZEl0ZW0oZm9ybUNv
bnRyb2xFbGVtZW50cygpLCBpbWFnZXNFbGVtZW50cywgaWRBdHRyLCBuYW1lKSkKKyAgICAgICAg
cmV0dXJuIGl0ZW07CisKKyAgICByZXR1cm4gZmlyc3ROYW1lZEl0ZW0oZm9ybUNvbnRyb2xFbGVt
ZW50cygpLCBpbWFnZXNFbGVtZW50cywgbmFtZUF0dHIsIG5hbWUpOworfQorCit2b2lkIEhUTUxG
b3JtQ29sbGVjdGlvbjo6dXBkYXRlTmFtZUNhY2hlKCkgY29uc3QKK3sKKyAgICBpZiAoaGFzTmFt
ZUNhY2hlKCkpCisgICAgICAgIHJldHVybjsKKworICAgIEhhc2hTZXQ8QXRvbWljU3RyaW5nSW1w
bCo+IGZvdW5kSW5wdXRFbGVtZW50czsKKworICAgIGNvbnN0IFZlY3RvcjxGb3JtQXNzb2NpYXRl
ZEVsZW1lbnQqPiYgZWxlbWVudHNBcnJheSA9IGZvcm1Db250cm9sRWxlbWVudHMoKTsKKworICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBlbGVtZW50c0FycmF5LnNpemUoKTsgKytpKSB7Cisg
ICAgICAgIEZvcm1Bc3NvY2lhdGVkRWxlbWVudCogYXNzb2NpYXRlZEVsZW1lbnQgPSBlbGVtZW50
c0FycmF5W2ldOworICAgICAgICBpZiAoYXNzb2NpYXRlZEVsZW1lbnQtPmlzRW51bWVyYXRhYmxl
KCkpIHsKKyAgICAgICAgICAgIEhUTUxFbGVtZW50KiBlbGVtZW50ID0gdG9IVE1MRWxlbWVudChh
c3NvY2lhdGVkRWxlbWVudCk7CisgICAgICAgICAgICBjb25zdCBBdG9taWNTdHJpbmcmIGlkQXR0
clZhbCA9IGVsZW1lbnQtPmdldElkQXR0cmlidXRlKCk7CisgICAgICAgICAgICBjb25zdCBBdG9t
aWNTdHJpbmcmIG5hbWVBdHRyVmFsID0gZWxlbWVudC0+Z2V0TmFtZUF0dHJpYnV0ZSgpOworICAg
ICAgICAgICAgaWYgKCFpZEF0dHJWYWwuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICAgICAgYXBw
ZW5kSWRDYWNoZShpZEF0dHJWYWwsIGVsZW1lbnQpOworICAgICAgICAgICAgICAgIGZvdW5kSW5w
dXRFbGVtZW50cy5hZGQoaWRBdHRyVmFsLmltcGwoKSk7CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICBpZiAoIW5hbWVBdHRyVmFsLmlzRW1wdHkoKSAmJiBpZEF0dHJWYWwgIT0gbmFtZUF0dHJW
YWwpIHsKKyAgICAgICAgICAgICAgICBhcHBlbmROYW1lQ2FjaGUobmFtZUF0dHJWYWwsIGVsZW1l
bnQpOworICAgICAgICAgICAgICAgIGZvdW5kSW5wdXRFbGVtZW50cy5hZGQobmFtZUF0dHJWYWwu
aW1wbCgpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIGlmIChiYXNl
KCktPmhhc1RhZ05hbWUoZm9ybVRhZykpIHsKKyAgICAgICAgY29uc3QgVmVjdG9yPEhUTUxJbWFn
ZUVsZW1lbnQqPiYgaW1hZ2VFbGVtZW50c0FycmF5ID0gZm9ybUltYWdlRWxlbWVudHMoKTsKKyAg
ICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGltYWdlRWxlbWVudHNBcnJheS5zaXplKCk7
ICsraSkgeworICAgICAgICAgICAgSFRNTEltYWdlRWxlbWVudCogZWxlbWVudCA9IGltYWdlRWxl
bWVudHNBcnJheVtpXTsKKyAgICAgICAgICAgIGNvbnN0IEF0b21pY1N0cmluZyYgaWRBdHRyVmFs
ID0gZWxlbWVudC0+Z2V0SWRBdHRyaWJ1dGUoKTsKKyAgICAgICAgICAgIGNvbnN0IEF0b21pY1N0
cmluZyYgbmFtZUF0dHJWYWwgPSBlbGVtZW50LT5nZXROYW1lQXR0cmlidXRlKCk7CisgICAgICAg
ICAgICBpZiAoIWlkQXR0clZhbC5pc0VtcHR5KCkgJiYgIWZvdW5kSW5wdXRFbGVtZW50cy5jb250
YWlucyhpZEF0dHJWYWwuaW1wbCgpKSkKKyAgICAgICAgICAgICAgICBhcHBlbmRJZENhY2hlKGlk
QXR0clZhbCwgZWxlbWVudCk7CisgICAgICAgICAgICBpZiAoIW5hbWVBdHRyVmFsLmlzRW1wdHko
KSAmJiBpZEF0dHJWYWwgIT0gbmFtZUF0dHJWYWwgJiYgIWZvdW5kSW5wdXRFbGVtZW50cy5jb250
YWlucyhuYW1lQXR0clZhbC5pbXBsKCkpKQorICAgICAgICAgICAgICAgIGFwcGVuZE5hbWVDYWNo
ZShuYW1lQXR0clZhbCwgZWxlbWVudCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBzZXRIYXNO
YW1lQ2FjaGUoKTsKK30KKworfQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNv
bnRyb2xzQ29sbGVjdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5jcHAJKHJldmlzaW9uIDEzMzU1MSkKKysrIFNvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yMSw3ICsyMSw3IEBACiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1
ZGUgIkhUTUxGb3JtQ29sbGVjdGlvbi5oIgorI2luY2x1ZGUgIkhUTUxGb3JtQ29udHJvbHNDb2xs
ZWN0aW9uLmgiCiAKICNpbmNsdWRlICJIVE1MRmllbGRTZXRFbGVtZW50LmgiCiAjaW5jbHVkZSAi
SFRNTEZvcm1Db250cm9sRWxlbWVudC5oIgpAQCAtMzYsMjIgKzM2LDIyIEBAIHVzaW5nIG5hbWVz
cGFjZSBIVE1MTmFtZXM7CiAvLyBTaW5jZSB0aGUgY29sbGVjdGlvbnMgYXJlIHRvIGJlICJsaXZl
Iiwgd2UgaGF2ZSB0byBkbyB0aGUKIC8vIGNhbGN1bGF0aW9uIGV2ZXJ5IHRpbWUgaWYgYW55dGhp
bmcgaGFzIGNoYW5nZWQuCiAKLUhUTUxGb3JtQ29sbGVjdGlvbjo6SFRNTEZvcm1Db2xsZWN0aW9u
KEVsZW1lbnQqIGJhc2UpCitIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbjo6SFRNTEZvcm1Db250
cm9sc0NvbGxlY3Rpb24oRWxlbWVudCogYmFzZSkKICAgICA6IEhUTUxDb2xsZWN0aW9uKGJhc2Us
IEZvcm1Db250cm9scywgT3ZlcnJpZGVzSXRlbUFmdGVyKQogewogICAgIEFTU0VSVChiYXNlLT5o
YXNUYWdOYW1lKGZvcm1UYWcpIHx8IGJhc2UtPmhhc1RhZ05hbWUoZmllbGRzZXRUYWcpKTsKIH0K
IAotUGFzc1JlZlB0cjxIVE1MRm9ybUNvbGxlY3Rpb24+IEhUTUxGb3JtQ29sbGVjdGlvbjo6Y3Jl
YXRlKEVsZW1lbnQqIGJhc2UpCitQYXNzUmVmUHRyPEhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9u
PiBIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbjo6Y3JlYXRlKEVsZW1lbnQqIGJhc2UpCiB7Ci0g
ICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBIVE1MRm9ybUNvbGxlY3Rpb24oYmFzZSkpOworICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24oYmFzZSkpOwogfQog
Ci1IVE1MRm9ybUNvbGxlY3Rpb246On5IVE1MRm9ybUNvbGxlY3Rpb24oKQorSFRNTEZvcm1Db250
cm9sc0NvbGxlY3Rpb246On5IVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbigpCiB7CiB9CiAKLWNv
bnN0IFZlY3RvcjxGb3JtQXNzb2NpYXRlZEVsZW1lbnQqPiYgSFRNTEZvcm1Db2xsZWN0aW9uOjpm
b3JtQ29udHJvbEVsZW1lbnRzKCkgY29uc3QKK2NvbnN0IFZlY3RvcjxGb3JtQXNzb2NpYXRlZEVs
ZW1lbnQqPiYgSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb246OmZvcm1Db250cm9sRWxlbWVudHMo
KSBjb25zdAogewogICAgIEFTU0VSVChiYXNlKCkpOwogICAgIEFTU0VSVChiYXNlKCktPmhhc1Rh
Z05hbWUoZm9ybVRhZykgfHwgYmFzZSgpLT5oYXNUYWdOYW1lKGZpZWxkc2V0VGFnKSk7CkBAIC02
MCwxNCArNjAsMTQgQEAgY29uc3QgVmVjdG9yPEZvcm1Bc3NvY2lhdGVkRWxlbWVudCo+JiBIVAog
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxIVE1MRmllbGRTZXRFbGVtZW50Kj4oYmFzZSgpKS0+YXNz
b2NpYXRlZEVsZW1lbnRzKCk7CiB9CiAKLWNvbnN0IFZlY3RvcjxIVE1MSW1hZ2VFbGVtZW50Kj4m
IEhUTUxGb3JtQ29sbGVjdGlvbjo6Zm9ybUltYWdlRWxlbWVudHMoKSBjb25zdAorY29uc3QgVmVj
dG9yPEhUTUxJbWFnZUVsZW1lbnQqPiYgSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb246OmZvcm1J
bWFnZUVsZW1lbnRzKCkgY29uc3QKIHsKICAgICBBU1NFUlQoYmFzZSgpKTsKICAgICBBU1NFUlQo
YmFzZSgpLT5oYXNUYWdOYW1lKGZvcm1UYWcpKTsKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SFRN
TEZvcm1FbGVtZW50Kj4oYmFzZSgpKS0+aW1hZ2VFbGVtZW50cygpOwogfQogCi1FbGVtZW50KiBI
VE1MRm9ybUNvbGxlY3Rpb246OnZpcnR1YWxJdGVtQWZ0ZXIodW5zaWduZWQmIG9mZnNldCwgRWxl
bWVudCogcHJldmlvdXNJdGVtKSBjb25zdAorRWxlbWVudCogSFRNTEZvcm1Db250cm9sc0NvbGxl
Y3Rpb246OnZpcnR1YWxJdGVtQWZ0ZXIodW5zaWduZWQmIG9mZnNldCwgRWxlbWVudCogcHJldmlv
dXNJdGVtKSBjb25zdAogewogICAgIGNvbnN0IFZlY3RvcjxGb3JtQXNzb2NpYXRlZEVsZW1lbnQq
PiYgZWxlbWVudHNBcnJheSA9IGZvcm1Db250cm9sRWxlbWVudHMoKTsKICAgICBpZiAocHJldmlv
dXNJdGVtKQpAQCAtMTA0LDcgKzEwNCw3IEBAIHN0YXRpYyBIVE1MRWxlbWVudCogZmlyc3ROYW1l
ZEl0ZW0oY29uc3QKICAgICByZXR1cm4gMDsKIH0KIAotTm9kZSogSFRNTEZvcm1Db2xsZWN0aW9u
OjpuYW1lZEl0ZW0oY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKSBjb25zdAorTm9kZSogSFRNTEZv
cm1Db250cm9sc0NvbGxlY3Rpb246Om5hbWVkSXRlbShjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUp
IGNvbnN0CiB7CiAgICAgLy8gaHR0cDovL21zZG4ubWljcm9zb2Z0LmNvbS93b3Jrc2hvcC9hdXRo
b3IvZGh0bWwvcmVmZXJlbmNlL21ldGhvZHMvbmFtZWRpdGVtLmFzcAogICAgIC8vIFRoaXMgbWV0
aG9kIGZpcnN0IHNlYXJjaGVzIGZvciBhbiBvYmplY3Qgd2l0aCBhIG1hdGNoaW5nIGlkCkBAIC0x
MTgsNyArMTE4LDcgQEAgTm9kZSogSFRNTEZvcm1Db2xsZWN0aW9uOjpuYW1lZEl0ZW0oY29ucwog
ICAgIHJldHVybiBmaXJzdE5hbWVkSXRlbShmb3JtQ29udHJvbEVsZW1lbnRzKCksIGltYWdlc0Vs
ZW1lbnRzLCBuYW1lQXR0ciwgbmFtZSk7CiB9CiAKLXZvaWQgSFRNTEZvcm1Db2xsZWN0aW9uOjp1
cGRhdGVOYW1lQ2FjaGUoKSBjb25zdAordm9pZCBIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbjo6
dXBkYXRlTmFtZUNhY2hlKCkgY29uc3QKIHsKICAgICBpZiAoaGFzTmFtZUNhY2hlKCkpCiAgICAg
ICAgIHJldHVybjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sc0Nv
bGxlY3Rpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29u
dHJvbHNDb2xsZWN0aW9uLmgJKHJldmlzaW9uIDEzMzU1MSkJKGZyb20gU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MRm9ybUNvbGxlY3Rpb24uaDoxMzM1NTEpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1
NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMTk5OSBMYXJzIEtub2xsIChrbm9sbEBrZGUub3Jn
KQorICogICAgICAgICAgIChDKSAxOTk5IEFudHRpIEtvaXZpc3RvIChrb2l2aXN0b0BrZGUub3Jn
KQorICogQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJl
ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQg
dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGlj
ZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVy
CisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxh
dGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo
b3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7
IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZ
IG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlv
dSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUg
Q09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9u
LCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKgorICovCisKKyNpZm5kZWYgSFRNTEZvcm1Db2xsZWN0
aW9uX2gKKyNkZWZpbmUgSFRNTEZvcm1Db2xsZWN0aW9uX2gKKworI2luY2x1ZGUgIkhUTUxDb2xs
ZWN0aW9uLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgRm9ybUFzc29jaWF0ZWRF
bGVtZW50OworY2xhc3MgSFRNTEVsZW1lbnQ7CitjbGFzcyBIVE1MSW1hZ2VFbGVtZW50OworY2xh
c3MgUXVhbGlmaWVkTmFtZTsKKy8vIFRoaXMgY2xhc3MgaXMganVzdCBhIGJpZyBoYWNrIHRvIGZp
bmQgZm9ybSBlbGVtZW50cyBldmVuIGluIG1hbGZvcm1lZCBIVE1MIGVsZW1lbnRzLgorLy8gVGhl
IGZhbW91cyA8dGFibGU+PHRyPjxmb3JtPjx0ZD4gcHJvYmxlbS4KKworY2xhc3MgSFRNTEZvcm1D
b2xsZWN0aW9uIDogcHVibGljIEhUTUxDb2xsZWN0aW9uIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMg
UGFzc1JlZlB0cjxIVE1MRm9ybUNvbGxlY3Rpb24+IGNyZWF0ZShFbGVtZW50Kik7CisKKyAgICB2
aXJ0dWFsIH5IVE1MRm9ybUNvbGxlY3Rpb24oKTsKKworICAgIHZpcnR1YWwgTm9kZSogbmFtZWRJ
dGVtKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSkgY29uc3Q7CisKK3ByaXZhdGU6CisgICAgSFRN
TEZvcm1Db2xsZWN0aW9uKEVsZW1lbnQqKTsKKworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVOYW1l
Q2FjaGUoKSBjb25zdDsKKworICAgIGNvbnN0IFZlY3RvcjxGb3JtQXNzb2NpYXRlZEVsZW1lbnQq
PiYgZm9ybUNvbnRyb2xFbGVtZW50cygpIGNvbnN0OworICAgIGNvbnN0IFZlY3RvcjxIVE1MSW1h
Z2VFbGVtZW50Kj4mIGZvcm1JbWFnZUVsZW1lbnRzKCkgY29uc3Q7CisgICAgdmlydHVhbCBFbGVt
ZW50KiB2aXJ0dWFsSXRlbUFmdGVyKHVuc2lnbmVkJiBvZmZzZXRJbkFycmF5LCBFbGVtZW50Kikg
Y29uc3QgT1ZFUlJJREU7Cit9OworCit9IC8vbmFtZXNwYWNlCisKKyNlbmRpZgpJbmRleDogU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uaAkocmV2
aXNpb24gMTMzNTUxKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xzQ29s
bGVjdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMCw4ICsyMCw4IEBACiAgKgogICovCiAKLSNp
Zm5kZWYgSFRNTEZvcm1Db2xsZWN0aW9uX2gKLSNkZWZpbmUgSFRNTEZvcm1Db2xsZWN0aW9uX2gK
KyNpZm5kZWYgSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb25faAorI2RlZmluZSBIVE1MRm9ybUNv
bnRyb2xzQ29sbGVjdGlvbl9oCiAKICNpbmNsdWRlICJIVE1MQ29sbGVjdGlvbi5oIgogCkBAIC0z
NCwxNiArMzQsMTYgQEAgY2xhc3MgUXVhbGlmaWVkTmFtZTsKIC8vIFRoaXMgY2xhc3MgaXMganVz
dCBhIGJpZyBoYWNrIHRvIGZpbmQgZm9ybSBlbGVtZW50cyBldmVuIGluIG1hbGZvcm1lZCBIVE1M
IGVsZW1lbnRzLgogLy8gVGhlIGZhbW91cyA8dGFibGU+PHRyPjxmb3JtPjx0ZD4gcHJvYmxlbS4K
IAotY2xhc3MgSFRNTEZvcm1Db2xsZWN0aW9uIDogcHVibGljIEhUTUxDb2xsZWN0aW9uIHsKK2Ns
YXNzIEhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uIDogcHVibGljIEhUTUxDb2xsZWN0aW9uIHsK
IHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxIVE1MRm9ybUNvbGxlY3Rpb24+IGNyZWF0
ZShFbGVtZW50Kik7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8SFRNTEZvcm1Db250cm9sc0NvbGxl
Y3Rpb24+IGNyZWF0ZShFbGVtZW50Kik7CiAKLSAgICB2aXJ0dWFsIH5IVE1MRm9ybUNvbGxlY3Rp
b24oKTsKKyAgICB2aXJ0dWFsIH5IVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbigpOwogCiAgICAg
dmlydHVhbCBOb2RlKiBuYW1lZEl0ZW0oY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKSBjb25zdDsK
IAogcHJpdmF0ZToKLSAgICBIVE1MRm9ybUNvbGxlY3Rpb24oRWxlbWVudCopOworICAgIEhUTUxG
b3JtQ29udHJvbHNDb2xsZWN0aW9uKEVsZW1lbnQqKTsKIAogICAgIHZpcnR1YWwgdm9pZCB1cGRh
dGVOYW1lQ2FjaGUoKSBjb25zdDsKIApAQCAtNTIsNiArNTIsNiBAQCBwcml2YXRlOgogICAgIHZp
cnR1YWwgRWxlbWVudCogdmlydHVhbEl0ZW1BZnRlcih1bnNpZ25lZCYgb2Zmc2V0SW5BcnJheSwg
RWxlbWVudCopIGNvbnN0IE9WRVJSSURFOwogfTsKIAotfSAvL25hbWVzcGFjZQorfSAvLyBuYW1l
c3BhY2UKIAogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJv
bHNDb2xsZWN0aW9uLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxG
b3JtQ29udHJvbHNDb2xsZWN0aW9uLmlkbAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uaWRsCShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDI2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3LCAyMDEyIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNiBTYW11ZWwgV2Vp
bmlnIDxzYW0ud2VpbmlnQGdtYWlsLmNvbT4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBz
b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5k
ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5z
ZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisg
KiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVy
IHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3Bl
IHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp
dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9y
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBz
aG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09Q
WUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBN
QSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworWworICAgIEluZGV4ZWRHZXR0ZXIsCisgICAgTmFt
ZWRHZXR0ZXIKK10gaW50ZXJmYWNlIEhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uIDogSFRNTENv
bGxlY3Rpb24geworICAgIFtDdXN0b21dIE5vZGUgbmFtZWRJdGVtKGluIFtPcHRpb25hbD1EZWZh
dWx0SXNVbmRlZmluZWRdIERPTVN0cmluZyBuYW1lKTsKK307CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxGb3JtRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwCShyZXZpc2lvbiAxMzM2OTMpCisrKyBTb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQwLDggKzQw
LDggQEAKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCiAjaW5j
bHVkZSAiRnJhbWVMb2FkZXJDbGllbnQuaCIKKyNpbmNsdWRlICJIVE1MQ29sbGVjdGlvbi5oIgog
I2luY2x1ZGUgIkhUTUxEb2N1bWVudC5oIgotI2luY2x1ZGUgIkhUTUxGb3JtQ29sbGVjdGlvbi5o
IgogI2luY2x1ZGUgIkhUTUxJbWFnZUVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MSW5wdXRFbGVt
ZW50LmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxGb3JtRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEZvcm1FbGVtZW50LmgJKHJldmlzaW9uIDEzMzY5MykKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEZvcm1FbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDcgKzM4LDYgQEAgY2xhc3Mg
Rm9ybURhdGE7CiBjbGFzcyBIVE1MRm9ybUNvbnRyb2xFbGVtZW50OwogY2xhc3MgSFRNTEltYWdl
RWxlbWVudDsKIGNsYXNzIEhUTUxJbnB1dEVsZW1lbnQ7Ci1jbGFzcyBIVE1MRm9ybUNvbGxlY3Rp
b247CiBjbGFzcyBUZXh0RW5jb2Rpbmc7CiAKIGNsYXNzIEhUTUxGb3JtRWxlbWVudCA6IHB1Ymxp
YyBIVE1MRWxlbWVudCB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRpb25zQ29s
bGVjdGlvbi5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0aW9u
c0NvbGxlY3Rpb24uaWRsCShyZXZpc2lvbiAxMzM2OTMpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxPcHRpb25zQ29sbGVjdGlvbi5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTIwLDExICsyMCwx
NCBAQAogCiBbCiAgICAgSlNHZW5lcmF0ZVRvTmF0aXZlT2JqZWN0LAotICAgIEN1c3RvbUluZGV4
ZWRTZXR0ZXIKKyAgICBDdXN0b21JbmRleGVkU2V0dGVyLAorICAgIE5hbWVkR2V0dGVyCiBdIGlu
dGVyZmFjZSBIVE1MT3B0aW9uc0NvbGxlY3Rpb24gOiBIVE1MQ29sbGVjdGlvbiB7Ci0gICAgICAg
ICAgICAgYXR0cmlidXRlIGxvbmcgc2VsZWN0ZWRJbmRleDsKLSAgICAgICAgICAgICBbQ3VzdG9t
XSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBsZW5ndGgKLSAgICAgICAgICAgICAgICAgICAgc2V0
dGVyIHJhaXNlcyAoRE9NRXhjZXB0aW9uKTsKKyAgICBhdHRyaWJ1dGUgbG9uZyBzZWxlY3RlZElu
ZGV4OworICAgIFtDdXN0b21dIGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIGxlbmd0aAorICAgICAg
ICBzZXR0ZXIgcmFpc2VzIChET01FeGNlcHRpb24pOworCisgICAgW0N1c3RvbV0gTm9kZSBuYW1l
ZEl0ZW0oaW4gW09wdGlvbmFsPURlZmF1bHRJc1VuZGVmaW5lZF0gRE9NU3RyaW5nIG5hbWUpOwog
CiAgICAgW0N1c3RvbV0gdm9pZCBhZGQoaW4gW09wdGlvbmFsPURlZmF1bHRJc1VuZGVmaW5lZF0g
SFRNTE9wdGlvbkVsZW1lbnQgb3B0aW9uLCAKICAgICAgICAgICAgICAgICAgICAgICBpbiBbT3B0
aW9uYWxdIHVuc2lnbmVkIGxvbmcgaW5kZXgpCkBAIC0zMiw4ICszNSw3IEBACiAgICAgW0N1c3Rv
bV0gdm9pZCByZW1vdmUoaW4gW09wdGlvbmFsPURlZmF1bHRJc1VuZGVmaW5lZF0gdW5zaWduZWQg
bG9uZyBpbmRleCk7CiAKICNpZiBkZWZpbmVkKExBTkdVQUdFX09CSkVDVElWRV9DKSAmJiBMQU5H
VUFHRV9PQkpFQ1RJVkVfQwotICAgIE5vZGUgaXRlbShpbiB1bnNpZ25lZCBsb25nIGluZGV4KTsg
Ci0gICAgTm9kZSBuYW1lZEl0ZW0oaW4gRE9NU3RyaW5nIG5hbWUpOyAKKyAgICBOb2RlIGl0ZW0o
aW4gdW5zaWduZWQgbG9uZyBpbmRleCk7CiAjZW5kaWYKIH07CiAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BhZ2UvRE9NV2luZG93LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdl
L0RPTVdpbmRvdy5pZGwJKHJldmlzaW9uIDEzMzY5MykKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
RE9NV2luZG93LmlkbAkod29ya2luZyBjb3B5KQpAQCAtNDY5LDYgKzQ2OSw4IEBACiAKICAgICBh
dHRyaWJ1dGUgSFRNTENvbGxlY3Rpb25Db25zdHJ1Y3RvciBIVE1MQ29sbGVjdGlvbjsKICAgICBh
dHRyaWJ1dGUgSFRNTEFsbENvbGxlY3Rpb25Db25zdHJ1Y3RvciBIVE1MQWxsQ29sbGVjdGlvbjsK
KyAgICBhdHRyaWJ1dGUgSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb25Db25zdHJ1Y3RvciBIVE1M
Rm9ybUNvbnRyb2xzQ29sbGVjdGlvbjsKKyAgICBhdHRyaWJ1dGUgSFRNTE9wdGlvbnNDb2xsZWN0
aW9uQ29uc3RydWN0b3IgSFRNTE9wdGlvbnNDb2xsZWN0aW9uOwogICAgIFtDb25kaXRpb25hbD1N
SUNST0RBVEFdIGF0dHJpYnV0ZSBIVE1MUHJvcGVydGllc0NvbGxlY3Rpb25Db25zdHJ1Y3RvciBI
VE1MUHJvcGVydGllc0NvbGxlY3Rpb247CiAgICAgYXR0cmlidXRlIEhUTUxVbmtub3duRWxlbWVu
dENvbnN0cnVjdG9yIEhUTUxVbmtub3duRWxlbWVudDsKIApJbmRleDogTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMTMz
NjkzKQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEs
MTkgQEAKKzIwMTItMTEtMDYgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CisKKyAg
ICAgICAgTWFrZSBuYW1lZEl0ZW0gcmV0dXJuIGEgbm9kZSBsaXN0IG9ubHkgaW4gSFRNTEZvcm1D
b250cm9sc0NvbGxlY3Rpb24gYW5kIEhUTUxPcHRpb25zQ29sbGVjdGlvbgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAxMzExCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkZWQgYSByZWdyZXNzaW9uIHRl
c3QgdG8gZW5zdXJlIGZvcm0uZWxlbWVudHMgYW5kIHNlbGVjdC5vcHRpb25zIHVzZSBjb3JyZWN0
IGludGVyZmFjZXMsCisgICAgICAgIGFuZCBuYW1lZCBnZXR0ZXIgZm9yIHRob3NlIHR3byBwcm9w
ZXJ0aWVzIHJldHVybiBhIE5vZGVMaXN0IHdoZW4gdGhlcmUgYXJlIG11bHRpcGxlIG1hdGNoZXMu
CisKKyAgICAgICAgKiBmYXN0L2RvbS9jb2xsZWN0aW9uLW5hbWVkaXRlbS1tb3ZlLWJldHdlZW4t
ZG9jdW1lbnRzLWV4cGVjdGVkLnR4dDogUmViYXNlbGluZWQgc2luY2UgbmFtZWRJdGVtCisgICAg
ICAgIG5vdyBjb3JyZWN0bHkgcmV0dXJucyBudWxsIHdoZW4gdGhlcmUgaXMgbm8gbWF0Y2guCisg
ICAgICAgICogZmFzdC9kb20vY29sbGVjdGlvbi1uYW1lZGl0ZW0tbW92ZS1iZXR3ZWVuLWRvY3Vt
ZW50cy5odG1sOiBEaXR0by4KKyAgICAgICAgKiBmYXN0L2RvbS9odG1sLWNvbGxlY3Rpb25zLW5h
bWVkLWdldHRlci1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL2h0bWwt
Y29sbGVjdGlvbnMtbmFtZWQtZ2V0dGVyLmh0bWw6IEFkZGVkLgorCiAyMDEyLTExLTA2ICBKb3No
dWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW0Nocm9taXVtXSBVbnJl
dmlld2VkIGdhcmRlbmluZy4gQSBjb3VwbGUgb2YgZXhwZWN0YXRpb24gdXBkYXRlcyBjL28gZGJh
cnRvbkBtYXRoc2NyaWJlLmNvbQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vY29sbGVjdGlv
bi1uYW1lZGl0ZW0tbW92ZS1iZXR3ZWVuLWRvY3VtZW50cy1leHBlY3RlZC50eHQKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vY29sbGVjdGlvbi1uYW1lZGl0ZW0tbW92ZS1iZXR3
ZWVuLWRvY3VtZW50cy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDEzMzY5MykKKysrIExheW91dFRl
c3RzL2Zhc3QvZG9tL2NvbGxlY3Rpb24tbmFtZWRpdGVtLW1vdmUtYmV0d2Vlbi1kb2N1bWVudHMt
ZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDQgKzEsNCBAQAotUEFTUyB0eXBlb2Yg
Y2hpbGRyZW4ubmFtZWRJdGVtKCdjaGlsZCcpIGlzICd1bmRlZmluZWQnCitQQVNTIGNoaWxkcmVu
Lm5hbWVkSXRlbSgnY2hpbGQnKSBpcyBudWxsCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0
cnVlCiAKIFRFU1QgQ09NUExFVEUKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL2NvbGxlY3Rp
b24tbmFtZWRpdGVtLW1vdmUtYmV0d2Vlbi1kb2N1bWVudHMuaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L2RvbS9jb2xsZWN0aW9uLW5hbWVkaXRlbS1tb3ZlLWJldHdlZW4tZG9j
dW1lbnRzLmh0bWwJKHJldmlzaW9uIDEzMzY5MykKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL2Nv
bGxlY3Rpb24tbmFtZWRpdGVtLW1vdmUtYmV0d2Vlbi1kb2N1bWVudHMuaHRtbAkod29ya2luZyBj
b3B5KQpAQCAtMzMsNyArMzMsNyBAQCB3aW5kb3cub25sb2FkID0gZnVuY3Rpb24oKQogZnVuY3Rp
b24gc3RlcDIoKQogewogICAgIGRvY3VtZW50LmFkb3B0Tm9kZShlbGVtZW50KTsKLSAgICBzaG91
bGRCZSgidHlwZW9mIGNoaWxkcmVuLm5hbWVkSXRlbSgnY2hpbGQnKSIsICIndW5kZWZpbmVkJyIp
OworICAgIHNob3VsZEJlTnVsbCgiY2hpbGRyZW4ubmFtZWRJdGVtKCdjaGlsZCcpIik7CiAgICAg
ZmluaXNoSlNUZXN0KCk7CiB9CiA8L3NjcmlwdD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9t
L2h0bWwtY29sbGVjdGlvbnMtbmFtZWQtZ2V0dGVyLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9odG1sLWNvbGxlY3Rpb25zLW5hbWVkLWdldHRlci1leHBl
Y3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9odG1sLWNvbGxl
Y3Rpb25zLW5hbWVkLWdldHRlci1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
MTAxIEBACitUaGlzIHRlc3RzIHZlcmlmaWVzIHRoYXQgbmFtZWRJdGVtIGFuZCBuYW1lZCBnZXR0
ZXIgcmV0dXJucyB0aGUgZmlyc3QgbWF0Y2hlZCBpdGVtIGZvciBhbGwgYnV0IGFsbCwgb3B0aW9u
cywgYW5kIGZvcm0gY29udHJvbHMgY29sbGVjdGlvbnMuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxs
IHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBM
RVRFIi4KKworCitkb2N1bWVudC5hbGwKK1BBU1MgZG9jdW1lbnQuYWxsLnRvU3RyaW5nKCkgaXMg
J1tvYmplY3QgSFRNTEFsbENvbGxlY3Rpb25dJworRkFJTCBkb2N1bWVudC5hbGwuX19wcm90b19f
Ll9fcHJvdG9fXy50b1N0cmluZygpIHNob3VsZCBiZSBbb2JqZWN0IEhUTUxDb2xsZWN0aW9uXS4g
V2FzIFtvYmplY3QgT2JqZWN0XS4KK1BBU1MgaW5pdGlhbExlbmd0aCA9IGRvY3VtZW50LmFsbC5s
ZW5ndGg7IGVsZW1lbnRzID0gW2luc2VydEVsZW1lbnRXaXRoSWQoJ2InLCAnZm9vJyksIGluc2Vy
dEVsZW1lbnRXaXRoSWQoJ3EnLCAnZm9vJyldOworICAgICBkb2N1bWVudC5hbGwubGVuZ3RoIGlz
IGluaXRpYWxMZW5ndGggKyAyOworUEFTUyBkb2N1bWVudC5hbGxbJ2ZvbyddLmxlbmd0aCBpcyAy
CitQQVNTIGRvY3VtZW50LmFsbFsnZm9vJ11bMF0gaXMgZWxlbWVudHNbMF0KK1BBU1MgZG9jdW1l
bnQuYWxsWydmb28nXVsxXSBpcyBlbGVtZW50c1sxXQorUEFTUyBlbGVtZW50c1swXS5wYXJlbnRO
b2RlLnJlbW92ZUNoaWxkKGVsZW1lbnRzWzBdKTsgZG9jdW1lbnQuYWxsWydmb28nXSBpcyBlbGVt
ZW50c1sxXQorCitmb3JtLmVsZW1lbnRzCitQQVNTIGZvcm0uZWxlbWVudHMudG9TdHJpbmcoKSBp
cyAnW29iamVjdCBIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbl0nCitQQVNTIGZvcm0uZWxlbWVu
dHMuX19wcm90b19fLl9fcHJvdG9fXy50b1N0cmluZygpIGlzICdbb2JqZWN0IEhUTUxDb2xsZWN0
aW9uUHJvdG90eXBlXScKK1BBU1MgZm9ybS5lbGVtZW50cy5sZW5ndGggaXMgMAorUEFTUyBlbGVt
ZW50cyA9IFtjcmVhdGVFbGVtZW50V2l0aElkKCdpbnB1dCcsICdmb28nKSwgY3JlYXRlRWxlbWVu
dFdpdGhJZCgnaW5wdXQnLCAnZm9vJyldOworICAgICBmb3JtLmFwcGVuZENoaWxkKGVsZW1lbnRz
WzBdKTsgZm9ybS5lbGVtZW50cy5sZW5ndGggaXMgMQorUEFTUyBmb3JtLmVsZW1lbnRzWydmb28n
XSBpcyBlbGVtZW50c1swXQorUEFTUyBmb3JtLmFwcGVuZENoaWxkKGVsZW1lbnRzWzFdKTsgZm9y
bS5lbGVtZW50cy5sZW5ndGggaXMgMgorUEFTUyBmb3JtLmVsZW1lbnRzWydmb28nXS50b1N0cmlu
ZygpIGlzICdbb2JqZWN0IFJhZGlvTm9kZUxpc3RdJworUEFTUyBmb3JtLmVsZW1lbnRzWydmb28n
XS5sZW5ndGggaXMgMgorUEFTUyBmb3JtLmVsZW1lbnRzWydmb28nXVswXSBpcyBlbGVtZW50c1sw
XQorUEFTUyBmb3JtLmVsZW1lbnRzWydmb28nXVsxXSBpcyBlbGVtZW50c1sxXQorUEFTUyBmb3Jt
LnJlbW92ZUNoaWxkKGVsZW1lbnRzWzBdKTsgZm9ybS5lbGVtZW50c1snZm9vJ10gaXMgZWxlbWVu
dHNbMV0KK1BBU1MgcmVtb3ZlVGVzdEVsZW1lbnRzKCk7IGZvcm0uZWxlbWVudHMubGVuZ3RoIGlz
IDAKKworc2VsZWN0Lm9wdGlvbnMKK1BBU1MgZm9ybS5hcHBlbmRDaGlsZChjcmVhdGVFbGVtZW50
V2l0aElkKCdzZWxlY3QnLCAnYmFyJykpOyBmb3JtLmVsZW1lbnRzLmxlbmd0aCBpcyAxCitQQVNT
IHNlbGVjdCA9IGZvcm0uZWxlbWVudHNbMF07IHNlbGVjdC5vcHRpb25zLnRvU3RyaW5nKCkgaXMg
J1tvYmplY3QgSFRNTE9wdGlvbnNDb2xsZWN0aW9uXScKK1BBU1Mgc2VsZWN0Lm9wdGlvbnMuX19w
cm90b19fLl9fcHJvdG9fXy50b1N0cmluZygpIGlzICdbb2JqZWN0IEhUTUxDb2xsZWN0aW9uUHJv
dG90eXBlXScKK1BBU1Mgc2VsZWN0Lm9wdGlvbnMubGVuZ3RoIGlzIDAKK1BBU1MgZWxlbWVudHMg
PSBbY3JlYXRlRWxlbWVudFdpdGhJZCgnb3B0aW9uJywgJ2ZvbycpLCBjcmVhdGVFbGVtZW50V2l0
aElkKCdvcHRpb24nLCAnZm9vJyldOworICAgICBzZWxlY3QuYXBwZW5kQ2hpbGQoZWxlbWVudHNb
MF0pOyBzZWxlY3Qub3B0aW9ucy5sZW5ndGggaXMgMQorUEFTUyBzZWxlY3Qub3B0aW9uc1snZm9v
J10gaXMgZWxlbWVudHNbMF0KK1BBU1Mgc2VsZWN0LmFwcGVuZENoaWxkKGVsZW1lbnRzWzFdKTsg
c2VsZWN0Lm9wdGlvbnMubGVuZ3RoIGlzIDIKK1BBU1Mgc2VsZWN0Lm9wdGlvbnNbJ2ZvbyddLnRv
U3RyaW5nKCkgaXMgJ1tvYmplY3QgTm9kZUxpc3RdJworUEFTUyBzZWxlY3Qub3B0aW9uc1snZm9v
J10ubGVuZ3RoIGlzIDIKK1BBU1Mgc2VsZWN0Lm9wdGlvbnNbJ2ZvbyddWzBdIGlzIGVsZW1lbnRz
WzBdCitQQVNTIHNlbGVjdC5vcHRpb25zWydmb28nXVsxXSBpcyBlbGVtZW50c1sxXQorUEFTUyBz
ZWxlY3QucmVtb3ZlQ2hpbGQoZWxlbWVudHNbMF0pOyBzZWxlY3Qub3B0aW9uc1snZm9vJ10gaXMg
ZWxlbWVudHNbMV0KK1BBU1Mgc2VsZWN0LmlubmVySFRNTCA9ICcnOyBzZWxlY3Qub3B0aW9ucy5s
ZW5ndGggaXMgMAorUEFTUyByZW1vdmVUZXN0RWxlbWVudHMoKTsgZm9ybS5lbGVtZW50cy5sZW5n
dGggaXMgMAorCitkb2N1bWVudC5pbWFnZXMKK1BBU1MgZG9jdW1lbnQuaW1hZ2VzLmxlbmd0aCBp
cyAwCitQQVNTIGVsZW1lbnRzWzBdID0gaW5zZXJ0RWxlbWVudFdpdGhJZCgnaW1nJywgJ2Zvbycp
OyBkb2N1bWVudC5pbWFnZXMubGVuZ3RoIGlzIDEKK1BBU1MgZWxlbWVudHNbMV0gPSBpbnNlcnRF
bGVtZW50V2l0aElkKCdpbWcnLCAnZm9vJyk7IGRvY3VtZW50LmltYWdlcy5sZW5ndGggaXMgMgor
UEFTUyBkb2N1bWVudC5pbWFnZXNbJ2ZvbyddIGlzIGVsZW1lbnRzWzBdCitQQVNTIHJlbW92ZVRl
c3RFbGVtZW50cygpOyBkb2N1bWVudC5pbWFnZXMubGVuZ3RoIGlzIDAKKworZG9jdW1lbnQuYXBw
bGV0cworUEFTUyBkb2N1bWVudC5hcHBsZXRzLmxlbmd0aCBpcyAwCitQQVNTIGVsZW1lbnRzWzBd
ID0gaW5zZXJ0RWxlbWVudFdpdGhJZCgnYXBwbGV0JywgJ2ZvbycpOyBkb2N1bWVudC5hcHBsZXRz
Lmxlbmd0aCBpcyAxCitQQVNTIGVsZW1lbnRzWzFdID0gaW5zZXJ0RWxlbWVudFdpdGhJZCgnYXBw
bGV0JywgJ2ZvbycpOyBkb2N1bWVudC5hcHBsZXRzLmxlbmd0aCBpcyAyCitQQVNTIGRvY3VtZW50
LmFwcGxldHNbJ2ZvbyddIGlzIGVsZW1lbnRzWzBdCitQQVNTIHJlbW92ZVRlc3RFbGVtZW50cygp
OyBkb2N1bWVudC5hcHBsZXRzLmxlbmd0aCBpcyAwCisKK2RvY3VtZW50LmVtYmVkcworUEFTUyBk
b2N1bWVudC5lbWJlZHMubGVuZ3RoIGlzIDAKK1BBU1MgZWxlbWVudHNbMF0gPSBpbnNlcnRFbGVt
ZW50V2l0aElkKCdlbWJlZCcsICdmb28nKTsgZG9jdW1lbnQuZW1iZWRzLmxlbmd0aCBpcyAxCitQ
QVNTIGVsZW1lbnRzWzFdID0gaW5zZXJ0RWxlbWVudFdpdGhJZCgnZW1iZWQnLCAnZm9vJyk7IGRv
Y3VtZW50LmVtYmVkcy5sZW5ndGggaXMgMgorUEFTUyBkb2N1bWVudC5lbWJlZHNbJ2ZvbyddIGlz
IGVsZW1lbnRzWzBdCitQQVNTIHJlbW92ZVRlc3RFbGVtZW50cygpOyBkb2N1bWVudC5lbWJlZHMu
bGVuZ3RoIGlzIDAKKworZG9jdW1lbnQuZm9ybXMKK1BBU1MgZG9jdW1lbnQuZm9ybXMubGVuZ3Ro
IGlzIDEKK1BBU1MgZWxlbWVudHNbMF0gPSBpbnNlcnRFbGVtZW50V2l0aElkKCdmb3JtJywgJ2Zv
bycpOyBkb2N1bWVudC5mb3Jtcy5sZW5ndGggaXMgMgorUEFTUyBlbGVtZW50c1sxXSA9IGluc2Vy
dEVsZW1lbnRXaXRoSWQoJ2Zvcm0nLCAnZm9vJyk7IGRvY3VtZW50LmZvcm1zLmxlbmd0aCBpcyAz
CitQQVNTIGRvY3VtZW50LmZvcm1zWydmb28nXSBpcyBlbGVtZW50c1swXQorUEFTUyByZW1vdmVU
ZXN0RWxlbWVudHMoKTsgZG9jdW1lbnQuZm9ybXMubGVuZ3RoIGlzIDEKKworZG9jdW1lbnQubGlu
a3MKK1BBU1MgZG9jdW1lbnQubGlua3MubGVuZ3RoIGlzIDAKK1BBU1MgZWxlbWVudHNbMF0gPSBp
bnNlcnRFbGVtZW50V2l0aElkKCdhJywgJ2ZvbycsIHsiaHJlZiI6InNvbWUgdXJsIn0pOyBkb2N1
bWVudC5saW5rcy5sZW5ndGggaXMgMQorUEFTUyBlbGVtZW50c1sxXSA9IGluc2VydEVsZW1lbnRX
aXRoSWQoJ2EnLCAnZm9vJywgeyJocmVmIjoic29tZSB1cmwifSk7IGRvY3VtZW50LmxpbmtzLmxl
bmd0aCBpcyAyCitQQVNTIGVsZW1lbnRzWzJdID0gaW5zZXJ0RWxlbWVudFdpdGhJZCgnYXJlYScs
ICdmb28nLCB7ImhyZWYiOiJzb21lIHVybCJ9KTsgZG9jdW1lbnQubGlua3MubGVuZ3RoIGlzIDMK
K1BBU1MgZG9jdW1lbnQubGlua3NbJ2ZvbyddIGlzIGVsZW1lbnRzWzBdCitQQVNTIHJlbW92ZVRl
c3RFbGVtZW50cygpOyBkb2N1bWVudC5saW5rcy5sZW5ndGggaXMgMAorCitkb2N1bWVudC5hbmNo
b3JzCitQQVNTIGRvY3VtZW50LmFuY2hvcnMubGVuZ3RoIGlzIDAKK1BBU1MgZWxlbWVudHNbMF0g
PSBpbnNlcnRFbGVtZW50V2l0aElkKCdhJywgJ2ZvbycsIHsibmFtZSI6InNvbWUgbmFtZSJ9KTsg
ZG9jdW1lbnQuYW5jaG9ycy5sZW5ndGggaXMgMQorUEFTUyBlbGVtZW50c1sxXSA9IGluc2VydEVs
ZW1lbnRXaXRoSWQoJ2EnLCAnZm9vJywgeyJuYW1lIjoic29tZSBuYW1lIn0pOyBkb2N1bWVudC5h
bmNob3JzLmxlbmd0aCBpcyAyCitQQVNTIGRvY3VtZW50LmFuY2hvcnNbJ2ZvbyddIGlzIGVsZW1l
bnRzWzBdCitQQVNTIHJlbW92ZVRlc3RFbGVtZW50cygpOyBkb2N1bWVudC5hbmNob3JzLmxlbmd0
aCBpcyAwCisKK2RvY3VtZW50LnNjcmlwdHMKK1BBU1MgZG9jdW1lbnQuc2NyaXB0cy5sZW5ndGgg
aXMgMgorUEFTUyBlbGVtZW50c1swXSA9IGluc2VydEVsZW1lbnRXaXRoSWQoJ3NjcmlwdCcsICdm
b28nKTsgZG9jdW1lbnQuc2NyaXB0cy5sZW5ndGggaXMgMworUEFTUyBlbGVtZW50c1sxXSA9IGlu
c2VydEVsZW1lbnRXaXRoSWQoJ3NjcmlwdCcsICdmb28nKTsgZG9jdW1lbnQuc2NyaXB0cy5sZW5n
dGggaXMgNAorUEFTUyBkb2N1bWVudC5zY3JpcHRzWydmb28nXSBpcyBlbGVtZW50c1swXQorUEFT
UyByZW1vdmVUZXN0RWxlbWVudHMoKTsgZG9jdW1lbnQuc2NyaXB0cy5sZW5ndGggaXMgMgorCitQ
QVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDog
TGF5b3V0VGVzdHMvZmFzdC9kb20vaHRtbC1jb2xsZWN0aW9ucy1uYW1lZC1nZXR0ZXIuaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9odG1sLWNvbGxlY3Rpb25zLW5hbWVk
LWdldHRlci5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vaHRtbC1j
b2xsZWN0aW9ucy1uYW1lZC1nZXR0ZXIuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMDYg
QEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSIuLi9qcy9y
ZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPGRpdiBpZD0iY29udGFpbmVyIj48
L2Rpdj4KKzxmb3JtPjwvZm9ybT4KKzxzY3JpcHQ+CisKK2Rlc2NyaXB0aW9uKCJUaGlzIHRlc3Rz
IHZlcmlmaWVzIHRoYXQgbmFtZWRJdGVtIGFuZCBuYW1lZCBnZXR0ZXIgcmV0dXJucyB0aGUgZmly
c3QgbWF0Y2hlZCBpdGVtIGZvciBhbGwgYnV0IGFsbCwgb3B0aW9ucywgYW5kIGZvcm0gY29udHJv
bHMgY29sbGVjdGlvbnMuIik7CisKK2Z1bmN0aW9uIGNyZWF0ZUVsZW1lbnRXaXRoSWQobmFtZSwg
aWQsIGF0dHJpYnV0ZXMpIHsKKyAgICB2YXIgZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQobmFtZSk7CisgICAgZWxlbWVudC5pZCA9IGlkOworICAgIGZvciAodmFyIGF0dHIgaW4gYXR0
cmlidXRlcykKKyAgICAgICAgZWxlbWVudC5zZXRBdHRyaWJ1dGUoYXR0ciwgYXR0cmlidXRlc1th
dHRyXSk7CisgICAgcmV0dXJuIGVsZW1lbnQ7Cit9CisKK2Z1bmN0aW9uIGluc2VydEVsZW1lbnRX
aXRoSWQobmFtZSwgaWQsIGF0dHJpYnV0ZXMpIHsKKyAgICB2YXIgZWxlbWVudCA9IGNyZWF0ZUVs
ZW1lbnRXaXRoSWQobmFtZSwgaWQsIGF0dHJpYnV0ZXMpOworICAgIGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCdjb250YWluZXInKS5hcHBlbmRDaGlsZChlbGVtZW50KTsKKyAgICByZXR1cm4gZWxl
bWVudDsKK30KKworZnVuY3Rpb24gcmVtb3ZlVGVzdEVsZW1lbnRzKCkgeworICAgIGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCdjb250YWluZXInKS5pbm5lckhUTUwgPSAnJzsKKyAgICBkb2N1bWVu
dC5xdWVyeVNlbGVjdG9yKCdmb3JtJykuaW5uZXJIVE1MID0gJyc7Cit9CisKK3ZhciBuZXdEb2Mg
PSBkb2N1bWVudC5pbXBsZW1lbnRhdGlvbi5jcmVhdGVEb2N1bWVudChudWxsLCAnaHRtbCcsIG51
bGwpOwordmFyIGVsZW1lbnRzOworCitkZWJ1ZygnZG9jdW1lbnQuYWxsJyk7CitzaG91bGRCZSgi
ZG9jdW1lbnQuYWxsLnRvU3RyaW5nKCkiLCAiJ1tvYmplY3QgSFRNTEFsbENvbGxlY3Rpb25dJyIp
Oworc2hvdWxkQmUoImRvY3VtZW50LmFsbC5fX3Byb3RvX18uX19wcm90b19fLnRvU3RyaW5nKCki
LCAiJ1tvYmplY3QgSFRNTENvbGxlY3Rpb25dJyIpOworc2hvdWxkQmUoImluaXRpYWxMZW5ndGgg
PSBkb2N1bWVudC5hbGwubGVuZ3RoOyBlbGVtZW50cyA9IFtpbnNlcnRFbGVtZW50V2l0aElkKCdi
JywgJ2ZvbycpLCBpbnNlcnRFbGVtZW50V2l0aElkKCdxJywgJ2ZvbycpXTtcbiIKKyAgICArICIg
ICAgIGRvY3VtZW50LmFsbC5sZW5ndGgiLCAiaW5pdGlhbExlbmd0aCArIDI7Iik7CitzaG91bGRC
ZSgiZG9jdW1lbnQuYWxsWydmb28nXS5sZW5ndGgiLCAiMiIpOworc2hvdWxkQmUoImRvY3VtZW50
LmFsbFsnZm9vJ11bMF0iLCAiZWxlbWVudHNbMF0iKTsKK3Nob3VsZEJlKCJkb2N1bWVudC5hbGxb
J2ZvbyddWzFdIiwgImVsZW1lbnRzWzFdIik7CitzaG91bGRCZSgiZWxlbWVudHNbMF0ucGFyZW50
Tm9kZS5yZW1vdmVDaGlsZChlbGVtZW50c1swXSk7IGRvY3VtZW50LmFsbFsnZm9vJ10iLCAnZWxl
bWVudHNbMV0nKTsKK2RlYnVnKCIiKTsKKwordmFyIGZvcm0gPSBkb2N1bWVudC5xdWVyeVNlbGVj
dG9yKCdmb3JtJyk7CitkZWJ1ZygiZm9ybS5lbGVtZW50cyIpOworc2hvdWxkQmUoImZvcm0uZWxl
bWVudHMudG9TdHJpbmcoKSIsICInW29iamVjdCBIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbl0n
Iik7CitzaG91bGRCZSgiZm9ybS5lbGVtZW50cy5fX3Byb3RvX18uX19wcm90b19fLnRvU3RyaW5n
KCkiLCAiJ1tvYmplY3QgSFRNTENvbGxlY3Rpb25Qcm90b3R5cGVdJyIpOworc2hvdWxkQmUoImZv
cm0uZWxlbWVudHMubGVuZ3RoIiwgIjAiKTsKK3Nob3VsZEJlKCJlbGVtZW50cyA9IFtjcmVhdGVF
bGVtZW50V2l0aElkKCdpbnB1dCcsICdmb28nKSwgY3JlYXRlRWxlbWVudFdpdGhJZCgnaW5wdXQn
LCAnZm9vJyldO1xuIgorICAgICsgIiAgICAgZm9ybS5hcHBlbmRDaGlsZChlbGVtZW50c1swXSk7
IGZvcm0uZWxlbWVudHMubGVuZ3RoIiwgIjEiKTsKK3Nob3VsZEJlKCJmb3JtLmVsZW1lbnRzWydm
b28nXSIsICJlbGVtZW50c1swXSIpOworc2hvdWxkQmUoImZvcm0uYXBwZW5kQ2hpbGQoZWxlbWVu
dHNbMV0pOyBmb3JtLmVsZW1lbnRzLmxlbmd0aCIsICIyIik7CitzaG91bGRCZSgiZm9ybS5lbGVt
ZW50c1snZm9vJ10udG9TdHJpbmcoKSIsICInW29iamVjdCBSYWRpb05vZGVMaXN0XSciKTsKK3No
b3VsZEJlKCJmb3JtLmVsZW1lbnRzWydmb28nXS5sZW5ndGgiLCAiMiIpOworc2hvdWxkQmUoImZv
cm0uZWxlbWVudHNbJ2ZvbyddWzBdIiwgImVsZW1lbnRzWzBdIik7CitzaG91bGRCZSgiZm9ybS5l
bGVtZW50c1snZm9vJ11bMV0iLCAiZWxlbWVudHNbMV0iKTsKK3Nob3VsZEJlKCJmb3JtLnJlbW92
ZUNoaWxkKGVsZW1lbnRzWzBdKTsgZm9ybS5lbGVtZW50c1snZm9vJ10iLCAiZWxlbWVudHNbMV0i
KTsKK3Nob3VsZEJlKCJyZW1vdmVUZXN0RWxlbWVudHMoKTsgZm9ybS5lbGVtZW50cy5sZW5ndGgi
LCAiMCIpOworZGVidWcoIiIpOworCitkZWJ1Zygic2VsZWN0Lm9wdGlvbnMiKTsKK3Nob3VsZEJl
KCJmb3JtLmFwcGVuZENoaWxkKGNyZWF0ZUVsZW1lbnRXaXRoSWQoJ3NlbGVjdCcsICdiYXInKSk7
IGZvcm0uZWxlbWVudHMubGVuZ3RoIiwgIjEiKTsKK3Nob3VsZEJlKCJzZWxlY3QgPSBmb3JtLmVs
ZW1lbnRzWzBdOyBzZWxlY3Qub3B0aW9ucy50b1N0cmluZygpIiwgIidbb2JqZWN0IEhUTUxPcHRp
b25zQ29sbGVjdGlvbl0nIik7CitzaG91bGRCZSgic2VsZWN0Lm9wdGlvbnMuX19wcm90b19fLl9f
cHJvdG9fXy50b1N0cmluZygpIiwgIidbb2JqZWN0IEhUTUxDb2xsZWN0aW9uUHJvdG90eXBlXSci
KTsKK3Nob3VsZEJlKCJzZWxlY3Qub3B0aW9ucy5sZW5ndGgiLCAiMCIpOworc2hvdWxkQmUoImVs
ZW1lbnRzID0gW2NyZWF0ZUVsZW1lbnRXaXRoSWQoJ29wdGlvbicsICdmb28nKSwgY3JlYXRlRWxl
bWVudFdpdGhJZCgnb3B0aW9uJywgJ2ZvbycpXTtcbiIKKyAgICArICIgICAgIHNlbGVjdC5hcHBl
bmRDaGlsZChlbGVtZW50c1swXSk7IHNlbGVjdC5vcHRpb25zLmxlbmd0aCIsICIxIik7CitzaG91
bGRCZSgic2VsZWN0Lm9wdGlvbnNbJ2ZvbyddIiwgImVsZW1lbnRzWzBdIik7CitzaG91bGRCZSgi
c2VsZWN0LmFwcGVuZENoaWxkKGVsZW1lbnRzWzFdKTsgc2VsZWN0Lm9wdGlvbnMubGVuZ3RoIiwg
IjIiKTsKK3Nob3VsZEJlKCJzZWxlY3Qub3B0aW9uc1snZm9vJ10udG9TdHJpbmcoKSIsICInW29i
amVjdCBOb2RlTGlzdF0nIik7CitzaG91bGRCZSgic2VsZWN0Lm9wdGlvbnNbJ2ZvbyddLmxlbmd0
aCIsICIyIik7CitzaG91bGRCZSgic2VsZWN0Lm9wdGlvbnNbJ2ZvbyddWzBdIiwgImVsZW1lbnRz
WzBdIik7CitzaG91bGRCZSgic2VsZWN0Lm9wdGlvbnNbJ2ZvbyddWzFdIiwgImVsZW1lbnRzWzFd
Iik7CitzaG91bGRCZSgic2VsZWN0LnJlbW92ZUNoaWxkKGVsZW1lbnRzWzBdKTsgc2VsZWN0Lm9w
dGlvbnNbJ2ZvbyddIiwgImVsZW1lbnRzWzFdIik7CitzaG91bGRCZSgic2VsZWN0LmlubmVySFRN
TCA9ICcnOyBzZWxlY3Qub3B0aW9ucy5sZW5ndGgiLCAiMCIpOworc2hvdWxkQmUoInJlbW92ZVRl
c3RFbGVtZW50cygpOyBmb3JtLmVsZW1lbnRzLmxlbmd0aCIsICIwIik7CitkZWJ1ZygiIik7CisK
K2Z1bmN0aW9uIHRlc3RGaXJzdEl0ZW1SZXR1cm5zRmlyc3RNYXRjaChjb2xsZWN0aW9uLCBpbml0
aWFsTGVuZ3RoLCBlbGVtZW50TmFtZXMsIGF0dHJpYnV0ZXMpIHsKKyAgICBkZWJ1Zyhjb2xsZWN0
aW9uKTsKKyAgICBzaG91bGRCZShjb2xsZWN0aW9uICsgIi5sZW5ndGgiLCBpbml0aWFsTGVuZ3Ro
LnRvU3RyaW5nKCkpOworICAgIGVsZW1lbnRzID0gW107CisgICAgZm9yICh2YXIgaSA9IDA7IGkg
PCBlbGVtZW50TmFtZXMubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgdmFyIGF0dHJzID0gYXR0cmli
dXRlcyA/ICIsICIgKyBKU09OLnN0cmluZ2lmeShhdHRyaWJ1dGVzKSA6ICcnOworICAgICAgICBz
aG91bGRCZSgiZWxlbWVudHNbIiArIGkgKyAiXSA9IGluc2VydEVsZW1lbnRXaXRoSWQoJyIgKyBl
bGVtZW50TmFtZXNbaV0gKyAiJywgJ2ZvbyciICsgYXR0cnMgKyAiKTsgIgorICAgICAgICAgICAg
KyBjb2xsZWN0aW9uICsgIi5sZW5ndGgiLCAoaW5pdGlhbExlbmd0aCArIGkgKyAxKS50b1N0cmlu
ZygpKTsKKyAgICB9CisgICAgc2hvdWxkQmUoY29sbGVjdGlvbiArICJbJ2ZvbyddIiwgImVsZW1l
bnRzWzBdIik7CisgICAgc2hvdWxkQmUoInJlbW92ZVRlc3RFbGVtZW50cygpOyAiICsgY29sbGVj
dGlvbiArICIubGVuZ3RoIiwgaW5pdGlhbExlbmd0aC50b1N0cmluZygpKTsKKyAgICBkZWJ1Zygi
Iik7Cit9CisKK3Rlc3RGaXJzdEl0ZW1SZXR1cm5zRmlyc3RNYXRjaCgnZG9jdW1lbnQuaW1hZ2Vz
JywgMCwgWydpbWcnLCAnaW1nJ10pOwordGVzdEZpcnN0SXRlbVJldHVybnNGaXJzdE1hdGNoKCdk
b2N1bWVudC5hcHBsZXRzJywgMCwgWydhcHBsZXQnLCAnYXBwbGV0J10pOwordGVzdEZpcnN0SXRl
bVJldHVybnNGaXJzdE1hdGNoKCdkb2N1bWVudC5lbWJlZHMnLCAwLCBbJ2VtYmVkJywgJ2VtYmVk
J10pOwordGVzdEZpcnN0SXRlbVJldHVybnNGaXJzdE1hdGNoKCdkb2N1bWVudC5mb3JtcycsIDEs
IFsnZm9ybScsICdmb3JtJ10pOwordGVzdEZpcnN0SXRlbVJldHVybnNGaXJzdE1hdGNoKCdkb2N1
bWVudC5saW5rcycsIDAsIFsnYScsICdhJywgJ2FyZWEnXSwgeydocmVmJzogJ3NvbWUgdXJsJ30p
OwordGVzdEZpcnN0SXRlbVJldHVybnNGaXJzdE1hdGNoKCdkb2N1bWVudC5hbmNob3JzJywgMCwg
WydhJywgJ2EnXSwgeyduYW1lJzogJ3NvbWUgbmFtZSd9KTsKK3Rlc3RGaXJzdEl0ZW1SZXR1cm5z
Rmlyc3RNYXRjaCgnZG9jdW1lbnQuc2NyaXB0cycsIDIsIFsnc2NyaXB0JywgJ3NjcmlwdCddKTsK
KwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CisKKzwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5Pgor
PC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>172864</attachid>
            <date>2012-11-07 13:20:57 -0800</date>
            <delta_ts>2012-11-08 20:08:26 -0800</delta_ts>
            <desc>Reverted v8::Undefined(isolate) change to fix tests</desc>
            <filename>bug-101311-20121107131908.patch</filename>
            <type>text/plain</type>
            <size>106188</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEzMzY5MykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEwNSBAQAorMjAxMi0xMS0wNiAgUnlvc3Vr
ZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KKworICAgICAgICBNYWtlIG5hbWVkSXRlbSByZXR1
cm4gYSBub2RlIGxpc3Qgb25seSBpbiBIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbiBhbmQgSFRN
TE9wdGlvbnNDb2xsZWN0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMDEzMTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBJbnRyb2R1Y2UgdHdvIG5ldyBpbnRlcmZhY2VzIEhUTUxGb3JtQ29udHJvbHND
b2xsZWN0aW9uIGFuZCBIVE1MT3B0aW9uc0NvbGxlY3Rpb24gdG8gYmUgdXNlZCBieSBmb3JtLmVs
ZW1lbnRzCisgICAgICAgIGFuZCBzZWxlY3Qub3B0aW9ucy4gVGhlc2UgdHdvIGludGVyZmFjZXMg
aGF2ZSB0aGUgbmFtZWQgZ2V0dGVyIGFuZCBuYW1lZEl0ZW0gdGhhdCByZXR1cm5zIGEgbGl2ZSBO
b2RlTGlzdCB3aGVuCisgICAgICAgIHRoZXJlIGFyZSBtdWx0aXBsZSBtYXRjaGVzLiBJbnRyb2R1
Y2luZyB0aGVzZSB0d28gaW50ZXJmYWNlcyBhbGxvdyB1cyB0byAicmVndWxhciIgSFRNTENvbGxl
Y3Rpb24ncyBuYW1lZCBnZXR0ZXIKKyAgICAgICAgYW5kIG5hbWVkSXRlbSB0byByZXR1cm4gZXhh
Y3RseSBvbmUgbm9kZSBvciBudWxsIGFzIHNwZWNpZmllZCBpbiBIVE1MNToKKyAgICAgICAgaHR0
cDovL3d3dy53aGF0d2cub3JnL3NwZWNzL3dlYi1hcHBzL2N1cnJlbnQtd29yay9tdWx0aXBhZ2Uv
Y29tbW9uLWRvbS1pbnRlcmZhY2VzLmh0bWwjY29sbGVjdGlvbnMtMAorCisgICAgICAgIFVuZm9y
dHVuYXRlbHksIEhUTUxPcHRpb25zQ29sbGVjdGlvbiBzdGlsbCBoYXMgYSBidWcgdGhhdCBpdHMg
bmFtZWQgZ2V0dGVyIGFuZCBuYW1lZEl0ZW0gcmV0dXJucworICAgICAgICBhIHN0YXRpYyBOb2Rl
TGlzdCBpbnN0ZWFkIG9mIGEgbGl2ZSBOb2RlTGlzdCAoRHluYW1pY05vZGVMaXN0KSBhdCB0aGUg
bW9tZW50LgorCisgICAgICAgIEFsc28gZ290IHJpZCBvZiBEb2N1bWVudDo6b2JqZWN0cyBzaW5j
ZSBpdCdzIG5vdCBleHBvc2VkIGluIElETCBvciBjYWxsZWQgYW55d2hlcmUuCisKKyAgICAgICAg
VGVzdDogZmFzdC9kb20vaHRtbC1jb2xsZWN0aW9ucy1uYW1lZEl0ZW0uaHRtbAorCisgICAgICAg
ICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMuY3BwOgorICAgICAg
ICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMucHJpOgor
ICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogVGFyZ2V0LnByaToKKyAg
ICAgICAgKiBVc2VKU0MuY21ha2U6CisgICAgICAgICogVXNlVjguY21ha2U6CisgICAgICAgICog
V2ViQ29yZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOgor
ICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9KU0JpbmRpbmdzQWxsSW5PbmUuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL2pz
L0pTSFRNTEFsbENvbGxlY3Rpb25DdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Z2V0TmFt
ZWRJdGVtcyk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNIVE1MQ29sbGVjdGlvbkN1c3RvbS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpKU0hUTUxDb2xsZWN0aW9uOjpuYW1lR2V0dGVyKTogTm93
IHJldHVybnMgZXhhY3RseSBvbmUgbm9kZSBvciBudWxsLgorICAgICAgICAoV2ViQ29yZTo6dG9K
Uyk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbkN1
c3RvbS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Z2V0TmFtZWRJdGVtcyk6IFJldHVy
bnMgUmFkaW9Ob2RlTGlzdCB3aGVuIHRoZXJlIGFyZSBtdWx0aXBsZSBtYXRjaGVzLgorICAgICAg
ICAoV2ViQ29yZTo6SlNIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbjo6Y2FuR2V0SXRlbXNGb3JO
YW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkpTSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb246Om5h
bWVHZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SlNIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlv
bjo6bmFtZWRJdGVtKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0hUTUxPcHRpb25zQ29sbGVj
dGlvbkN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpnZXROYW1lZEl0ZW1zKTogUmV0dXJu
cyBhIHN0YXRpYyBOb2RlTGlzdCB3aGVuIHRoZXJlIGFyZSBtdWx0aXBsZSBtYXRjaGVzLgorICAg
ICAgICBUaGlzIGlzIGEgYnVnLiBJdCBzaG91bGQgYmUgYSBsaXZlIE5vZGVMaXN0IGluc3RlYWQu
CisgICAgICAgIChXZWJDb3JlOjpKU0hUTUxPcHRpb25zQ29sbGVjdGlvbjo6Y2FuR2V0SXRlbXNG
b3JOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkpTSFRNTE9wdGlvbnNDb2xsZWN0aW9uOjpuYW1l
R2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkpTSFRNTE9wdGlvbnNDb2xsZWN0aW9uOjpuYW1l
ZEl0ZW0pOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0NvZGVHZW5lcmF0b3JKUy5wbTogSW5jbHVk
ZSBKU05vZGUuanMgZm9yIGFsbCBIVE1MKkNvbGxlY3Rpb24gaW50ZXJmYWNlcyBmb3Igc2ltcGxp
Y2l0eS4KKyAgICAgICAgKiBiaW5kaW5ncy9qcy9Db2RlR2VuZXJhdG9yVjgucG06IEhUTUxPcHRp
b25zQ29sbGVjdGlvbiBub3cgaW5oZXJpdHMgZnJvbSBIVE1MQ29sbGVjdGlvbi4gU2VlCisgICAg
ICAgIGh0dHA6Ly93d3cud2hhdHdnLm9yZy9zcGVjcy93ZWItYXBwcy9jdXJyZW50LXdvcmsvbXVs
dGlwYWdlL2NvbW1vbi1kb20taW50ZXJmYWNlcy5odG1sI2h0bWxvcHRpb25zY29sbGVjdGlvbgor
ICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxBbGxDb2xsZWN0aW9uQ3VzdG9tLmNw
cDogUGFzcyBpbiBpc29sYXRlIHdoZW4gd2UgY2FuLgorICAgICAgICAoV2ViQ29yZTo6Z2V0TmFt
ZWRJdGVtcyk6IEFkZGVkIGEgY29tbWVudCBhYm91dCBob3cgd2Ugc2hvdWxkIGJlIHJldHVybmlu
ZworICAgICAgICBhIEhUTUxDb2xsZWN0aW9uIHdoZW4gdGhlcmUgYXJlIG11bHRpcGxlIG1hdGNo
ZXMuCisgICAgICAgIChXZWJDb3JlOjpnZXRJdGVtKToKKyAgICAgICAgKFdlYkNvcmU6OlY4SFRN
TEFsbENvbGxlY3Rpb246Om5hbWVkUHJvcGVydHlHZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6
VjhIVE1MQWxsQ29sbGVjdGlvbjo6bmFtZWRJdGVtQ2FsbGJhY2spOgorICAgICAgICAqIGJpbmRp
bmdzL3Y4L2N1c3RvbS9WOEhUTUxDb2xsZWN0aW9uQ3VzdG9tLmNwcDogTm93IHJldHVybnMgZXhh
Y3RseSBvbmUgbm9kZSBvciBudWxsLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJD
b3JlOjpWOEhUTUxDb2xsZWN0aW9uOjpuYW1lZFByb3BlcnR5R2V0dGVyKToKKyAgICAgICAgKFdl
YkNvcmU6OnRvVjgpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxGb3JtQ29u
dHJvbHNDb2xsZWN0aW9uQ3VzdG9tLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAg
ICAgICAgKFdlYkNvcmU6OmdldE5hbWVkSXRlbXMpOiBSZXR1cm5zIFJhZGlvTm9kZUxpc3Qgd2hl
biB0aGVyZSBhcmUgbXVsdGlwbGUgbWF0Y2hlcy4KKyAgICAgICAgKFdlYkNvcmU6OlY4SFRNTEZv
cm1Db250cm9sc0NvbGxlY3Rpb246Om5hbWVkUHJvcGVydHlHZXR0ZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6VjhIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbjo6bmFtZWRJdGVtQ2FsbGJhY2spOgor
ICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxPcHRpb25zQ29sbGVjdGlvbkN1c3Rv
bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpnZXROYW1lZEl0ZW1zKTogUmV0dXJucyBhIHN0YXRp
YyBOb2RlTGlzdCB3aGVuIHRoZXJlIGFyZSBtdWx0aXBsZSBtYXRjaGVzLgorICAgICAgICBUaGlz
IGlzIGEgYnVnLiBJdCBzaG91bGQgYmUgYSBsaXZlIE5vZGVMaXN0IGluc3RlYWQuCisgICAgICAg
IChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlY4SFRNTE9wdGlvbnNDb2xsZWN0aW9uOjpu
YW1lZFByb3BlcnR5R2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlY4SFRNTE9wdGlvbnNDb2xs
ZWN0aW9uOjpuYW1lZEl0ZW1DYWxsYmFjayk6CisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmUpOiBSZW1vdmVkIERvY3VtZW50OjpvYmplY3RzIHNpbmNlIGl0IHdh
cyBub3QgdXNlZCBhbnl3aGVyZS4KKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaDoKKyAgICAgICAg
KERvY3VtZW50KToKKyAgICAgICAgKiBkb20vRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpFbGVtZW50UmFyZURhdGE6OmVuc3VyZUNhY2hlZEhUTUxDb2xsZWN0aW9uKTogZm9ybS5lbGVt
ZW50cyBzaG91bGQgaW5zdGFudGlhdGUKKyAgICAgICAgYSBIVE1MRm9ybUNvbnRyb2xzQ29sbGVj
dGlvbiBpbnN0ZWFkIG9mIGEgSFRNTENvbGxlY3Rpb24uCisgICAgICAgICogaHRtbC9Db2xsZWN0
aW9uVHlwZS5oOgorICAgICAgICAqIGh0bWwvSFRNTENvbGxlY3Rpb24uaWRsOiBSZW1vdmVkIFtD
dXN0b21dIHNpbmNlIG5hbWVkSXRlbSBpcyBhIHJlZ3VsYXIgZnVuY3Rpb24gY2FsbCBub3cuCisg
ICAgICAgICogaHRtbC9IVE1MRmllbGRTZXRFbGVtZW50LmNwcDoKKyAgICAgICAgKiBodG1sL0hU
TUxGaWVsZFNldEVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxGb3JtQ29sbGVjdGlvbi5j
cHA6IFJlbW92ZWQuCisgICAgICAgICogaHRtbC9IVE1MRm9ybUNvbGxlY3Rpb24uaDogUmVtb3Zl
ZC4KKyAgICAgICAgKiBodG1sL0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmNwcDogQ29waWVk
IGZyb20gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbGxlY3Rpb24uY3BwLgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb246OkhUTUxGb3JtQ29udHJvbHND
b2xsZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9u
OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb246
On5IVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRm9y
bUNvbnRyb2xzQ29sbGVjdGlvbjo6Zm9ybUNvbnRyb2xFbGVtZW50cyk6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbjo6Zm9ybUltYWdlRWxlbWVudHMpOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb246OnZpcnR1YWxJdGVtQWZ0
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb246Om5hbWVk
SXRlbSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbjo6dXBk
YXRlTmFtZUNhY2hlKToKKyAgICAgICAgKiBodG1sL0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9u
Lmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db2xsZWN0aW9uLmgu
CisgICAgICAgIChIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbik6CisgICAgICAgICogaHRtbC9I
VE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5pZGw6IEFkZGVkLgorICAgICAgICAqIGh0bWwvSFRN
TEZvcm1FbGVtZW50LmNwcDoKKyAgICAgICAgKiBodG1sL0hUTUxGb3JtRWxlbWVudC5oOgorICAg
ICAgICAoV2ViQ29yZSk6CisgICAgICAgICogaHRtbC9IVE1MT3B0aW9uc0NvbGxlY3Rpb24uaWRs
OgorCiAyMDEyLTExLTA2ICBIdWFuZyBEb25nc3VuZyAgPGx1eHRlbGxhQGNvbXBhbnkxMDAubmV0
PgogCiAgICAgICAgIEJ1aWxkIGZpeC4gcjEzMzYwMSBicm9rZSB0aGUgV2luZG93cyBidWlsZC4K
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAxMzM2OTMpCisrKyBTb3VyY2UvV2Vi
Q29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNDQxLDYgKzQ0MSw3IEBAIFNF
VChXZWJDb3JlX0lETF9GSUxFUwogICAgIGh0bWwvSFRNTEVtYmVkRWxlbWVudC5pZGwKICAgICBo
dG1sL0hUTUxGaWVsZFNldEVsZW1lbnQuaWRsCiAgICAgaHRtbC9IVE1MRm9udEVsZW1lbnQuaWRs
CisgICAgaHRtbC9IVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5pZGwKICAgICBodG1sL0hUTUxG
b3JtRWxlbWVudC5pZGwKICAgICBodG1sL0hUTUxGcmFtZUVsZW1lbnQuaWRsCiAgICAgaHRtbC9I
VE1MRnJhbWVTZXRFbGVtZW50LmlkbApAQCAtMTM3Myw3ICsxMzc0LDcgQEAgU0VUKFdlYkNvcmVf
U09VUkNFUwogICAgIGh0bWwvSFRNTEVtYmVkRWxlbWVudC5jcHAKICAgICBodG1sL0hUTUxGaWVs
ZFNldEVsZW1lbnQuY3BwCiAgICAgaHRtbC9IVE1MRm9udEVsZW1lbnQuY3BwCi0gICAgaHRtbC9I
VE1MRm9ybUNvbGxlY3Rpb24uY3BwCisgICAgaHRtbC9IVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlv
bi5jcHAKICAgICBodG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwCiAgICAgaHRtbC9IVE1M
Rm9ybUNvbnRyb2xFbGVtZW50V2l0aFN0YXRlLmNwcAogICAgIGh0bWwvSFRNTEZvcm1FbGVtZW50
LmNwcApJbmRleDogU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLmNwcAkocmV2aXNpb24gMTMzNjkzKQor
KysgU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
NjMsNiArMTYzLDcgQEAKICNpbmNsdWRlICJKU0hUTUxFbWJlZEVsZW1lbnQuY3BwIgogI2luY2x1
ZGUgIkpTSFRNTEZpZWxkU2V0RWxlbWVudC5jcHAiCiAjaW5jbHVkZSAiSlNIVE1MRm9udEVsZW1l
bnQuY3BwIgorI2luY2x1ZGUgIkpTSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uY3BwIgogI2lu
Y2x1ZGUgIkpTSFRNTEZvcm1FbGVtZW50LmNwcCIKICNpbmNsdWRlICJKU0hUTUxGcmFtZUVsZW1l
bnQuY3BwIgogI2luY2x1ZGUgIkpTSFRNTEZyYW1lU2V0RWxlbWVudC5jcHAiCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UJKHJldmlzaW9uIDEzMzY5MykKKysrIFNvdXJjZS9XZWJD
b3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UJKHdvcmtpbmcgY29weSkKQEAgLTMwMCw2ICszMDAsNyBA
QCBCSU5ESU5HX0lETFMgPSBcCiAgICAgJChXZWJDb3JlKS9odG1sL0hUTUxFbWJlZEVsZW1lbnQu
aWRsIFwKICAgICAkKFdlYkNvcmUpL2h0bWwvSFRNTEZpZWxkU2V0RWxlbWVudC5pZGwgXAogICAg
ICQoV2ViQ29yZSkvaHRtbC9IVE1MRm9udEVsZW1lbnQuaWRsIFwKKyAgICAkKFdlYkNvcmUpL2h0
bWwvSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uaWRsIFwKICAgICAkKFdlYkNvcmUpL2h0bWwv
SFRNTEZvcm1FbGVtZW50LmlkbCBcCiAgICAgJChXZWJDb3JlKS9odG1sL0hUTUxGcmFtZUVsZW1l
bnQuaWRsIFwKICAgICAkKFdlYkNvcmUpL2h0bWwvSFRNTEZyYW1lU2V0RWxlbWVudC5pZGwgXApJ
bmRleDogU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMucHJpCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLnByaQkocmV2aXNpb24gMTMzNjkzKQorKysgU291
cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMucHJpCSh3b3JraW5nIGNvcHkpCkBAIC0zNTAsNiAr
MzUwLDcgQEAgSURMX0JJTkRJTkdTICs9IFwKICAgICAkJFBXRC9odG1sL0hUTUxFbWJlZEVsZW1l
bnQuaWRsIFwKICAgICAkJFBXRC9odG1sL0hUTUxGaWVsZFNldEVsZW1lbnQuaWRsIFwKICAgICAk
JFBXRC9odG1sL0hUTUxGb250RWxlbWVudC5pZGwgXAorICAgICQkUFdEL2h0bWwvSFRNTEZvcm1D
b250cm9sc0NvbGxlY3Rpb24uaWRsIFwKICAgICAkJFBXRC9odG1sL0hUTUxGb3JtRWxlbWVudC5p
ZGwgXAogICAgICQkUFdEL2h0bWwvSFRNTEZyYW1lRWxlbWVudC5pZGwgXAogICAgICQkUFdEL2h0
bWwvSFRNTEZyYW1lU2V0RWxlbWVudC5pZGwgXApJbmRleDogU291cmNlL1dlYkNvcmUvR05VbWFr
ZWZpbGUubGlzdC5hbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5s
aXN0LmFtCShyZXZpc2lvbiAxMzM2OTMpCisrKyBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5s
aXN0LmFtCSh3b3JraW5nIGNvcHkpCkBAIC0zMzcsNiArMzM3LDggQEAgd2ViY29yZV9idWlsdF9z
b3VyY2VzICs9IFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTSFRNTEZpZWxkU2V0RWxlbWVu
dC5oIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTSFRNTEZvbnRFbGVtZW50LmNwcCBcCiAJ
RGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0hUTUxGb250RWxlbWVudC5oIFwKKwlEZXJpdmVkU291
cmNlcy9XZWJDb3JlL0pTSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uY3BwIFwKKwlEZXJpdmVk
U291cmNlcy9XZWJDb3JlL0pTSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uaCBcCiAJRGVyaXZl
ZFNvdXJjZXMvV2ViQ29yZS9KU0hUTUxGb3JtRWxlbWVudC5jcHAgXAogCURlcml2ZWRTb3VyY2Vz
L1dlYkNvcmUvSlNIVE1MRm9ybUVsZW1lbnQuaCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9K
U0hUTUxGcmFtZUVsZW1lbnQuY3BwIFwKQEAgLTE0NDAsNiArMTQ0Miw3IEBAIGRvbV9iaW5kaW5n
X2lkbHMgKz0gXAogCSQoV2ViQ29yZSkvaHRtbC9IVE1MRW1iZWRFbGVtZW50LmlkbCBcCiAJJChX
ZWJDb3JlKS9odG1sL0hUTUxGaWVsZFNldEVsZW1lbnQuaWRsIFwKIAkkKFdlYkNvcmUpL2h0bWwv
SFRNTEZvbnRFbGVtZW50LmlkbCBcCisJJChXZWJDb3JlKS9odG1sL0hUTUxGb3JtQ29udHJvbHND
b2xsZWN0aW9uLmlkbCBcCiAJJChXZWJDb3JlKS9odG1sL0hUTUxGb3JtRWxlbWVudC5pZGwgXAog
CSQoV2ViQ29yZSkvaHRtbC9IVE1MRnJhbWVFbGVtZW50LmlkbCBcCiAJJChXZWJDb3JlKS9odG1s
L0hUTUxGcmFtZVNldEVsZW1lbnQuaWRsIFwKQEAgLTIzMjQsNiArMjMyNyw3IEBAIHdlYmNvcmVf
c291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MRWxlbWVudEN1
c3RvbS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEVtYmVkRWxlbWVu
dEN1c3RvbS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEVtYmVkRWxl
bWVudEN1c3RvbS5oIFwKKwlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxGb3JtQ29u
dHJvbHNDb2xsZWN0aW9uQ3VzdG9tLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNIVE1MRm9ybUVsZW1lbnRDdXN0b20uY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0hUTUxGcmFtZUVsZW1lbnRDdXN0b20uY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0hUTUxGcmFtZVNldEVsZW1lbnRDdXN0b20uY3BwIFwKQEAgLTMzMjksOCArMzMzMyw4
IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRmllbGRT
ZXRFbGVtZW50LmggXAogCVNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvbnRFbGVtZW50LmNwcCBc
CiAJU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9udEVsZW1lbnQuaCBcCi0JU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MRm9ybUNvbGxlY3Rpb24uY3BwIFwKLQlTb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxGb3JtQ29sbGVjdGlvbi5oIFwKKwlTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJv
bHNDb2xsZWN0aW9uLmNwcCBcCisJU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xz
Q29sbGVjdGlvbi5oIFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1l
bnQuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuaCBc
CiAJU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50V2l0aFN0YXRlLmNw
cCBcCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL1RhcmdldC5wcmkJKHJldmlzaW9uIDEzMzY5MykKKysrIFNvdXJjZS9XZWJDb3Jl
L1RhcmdldC5wcmkJKHdvcmtpbmcgY29weSkKQEAgLTEzMiw2ICsxMzIsNyBAQCBTT1VSQ0VTICs9
IFwKICAgICAgYmluZGluZ3MvanMvSlNIVE1MRG9jdW1lbnRDdXN0b20uY3BwIFwKICAgICAgYmlu
ZGluZ3MvanMvSlNIVE1MRWxlbWVudEN1c3RvbS5jcHAgXAogICAgICBiaW5kaW5ncy9qcy9KU0hU
TUxFbWJlZEVsZW1lbnRDdXN0b20uY3BwIFwKKyAgICAgYmluZGluZ3MvanMvSlNIVE1MRm9ybUNv
bnRyb2xzQ29sbGVjdGlvbkN1c3RvbS5jcHAgXAogICAgICBiaW5kaW5ncy9qcy9KU0hUTUxGb3Jt
RWxlbWVudEN1c3RvbS5jcHAgXAogICAgICBiaW5kaW5ncy9qcy9KU0hUTUxGcmFtZUVsZW1lbnRD
dXN0b20uY3BwIFwKICAgICAgYmluZGluZ3MvanMvSlNIVE1MRnJhbWVTZXRFbGVtZW50Q3VzdG9t
LmNwcCBcCkBAIC02MDIsNyArNjAzLDcgQEAgU09VUkNFUyArPSBcCiAgICAgaHRtbC9IVE1MRW1i
ZWRFbGVtZW50LmNwcCBcCiAgICAgaHRtbC9IVE1MRmllbGRTZXRFbGVtZW50LmNwcCBcCiAgICAg
aHRtbC9IVE1MRm9udEVsZW1lbnQuY3BwIFwKLSAgICBodG1sL0hUTUxGb3JtQ29sbGVjdGlvbi5j
cHAgXAorICAgIGh0bWwvSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uY3BwIFwKICAgICBodG1s
L0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwIFwKICAgICBodG1sL0hUTUxGb3JtQ29udHJvbEVs
ZW1lbnRXaXRoU3RhdGUuY3BwIFwKICAgICBodG1sL0hUTUxGb3JtRWxlbWVudC5jcHAgXApAQCAt
MTc1OCw3ICsxNzU5LDcgQEAgSEVBREVSUyArPSBcCiAgICAgaHRtbC9IVE1MRW1iZWRFbGVtZW50
LmggXAogICAgIGh0bWwvSFRNTEZpZWxkU2V0RWxlbWVudC5oIFwKICAgICBodG1sL0hUTUxGb250
RWxlbWVudC5oIFwKLSAgICBodG1sL0hUTUxGb3JtQ29sbGVjdGlvbi5oIFwKKyAgICBodG1sL0hU
TUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmggXAogICAgIGh0bWwvSFRNTEZvcm1Db250cm9sRWxl
bWVudC5oIFwKICAgICBodG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnRXaXRoU3RhdGUuaCBcCiAg
ICAgaHRtbC9IVE1MRm9ybUVsZW1lbnQuaCBcCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Vc2VKU0Mu
Y21ha2UKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvVXNlSlNDLmNtYWtlCShyZXZpc2lv
biAxMzM2OTMpCisrKyBTb3VyY2UvV2ViQ29yZS9Vc2VKU0MuY21ha2UJKHdvcmtpbmcgY29weSkK
QEAgLTg0LDYgKzg0LDcgQEAgTElTVChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAgICAgYmluZGlu
Z3MvanMvSlNIVE1MRG9jdW1lbnRDdXN0b20uY3BwCiAgICAgYmluZGluZ3MvanMvSlNIVE1MRWxl
bWVudEN1c3RvbS5jcHAKICAgICBiaW5kaW5ncy9qcy9KU0hUTUxFbWJlZEVsZW1lbnRDdXN0b20u
Y3BwCisgICAgYmluZGluZ3MvanMvSlNIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbkN1c3RvbS5j
cHAKICAgICBiaW5kaW5ncy9qcy9KU0hUTUxGb3JtRWxlbWVudEN1c3RvbS5jcHAKICAgICBiaW5k
aW5ncy9qcy9KU0hUTUxGcmFtZUVsZW1lbnRDdXN0b20uY3BwCiAgICAgYmluZGluZ3MvanMvSlNI
VE1MRnJhbWVTZXRFbGVtZW50Q3VzdG9tLmNwcApJbmRleDogU291cmNlL1dlYkNvcmUvVXNlVjgu
Y21ha2UKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvVXNlVjguY21ha2UJKHJldmlzaW9u
IDEzMzY5MykKKysrIFNvdXJjZS9XZWJDb3JlL1VzZVY4LmNtYWtlCSh3b3JraW5nIGNvcHkpCkBA
IC0xMDYsNiArMTA2LDcgQEAgTElTVChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAgICAgYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4SFRNTENvbGxlY3Rpb25DdXN0b20uY3BwCiAgICAgYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4SFRNTERvY3VtZW50Q3VzdG9tLmNwcAogICAgIGJpbmRpbmdzL3Y4L2N1c3RvbS9W
OEhUTUxFbGVtZW50Q3VzdG9tLmNwcAorICAgIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxGb3Jt
Q29udHJvbHNDb2xsZWN0aW9uQ3VzdG9tLmNwcAogICAgIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEhU
TUxGb3JtRWxlbWVudEN1c3RvbS5jcHAKICAgICBiaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MRnJh
bWVFbGVtZW50Q3VzdG9tLmNwcAogICAgIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxGcmFtZVNl
dEVsZW1lbnRDdXN0b20uY3BwCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCShyZXZpc2lvbiAxMzM2OTMp
CisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkJKHdvcmtpbmcgY29weSkKQEAgLTEwODQs
NiArMTA4NCw3IEBACiAgICAgICAgICAgICAnaHRtbC9IVE1MRW1iZWRFbGVtZW50LmlkbCcsCiAg
ICAgICAgICAgICAnaHRtbC9IVE1MRmllbGRTZXRFbGVtZW50LmlkbCcsCiAgICAgICAgICAgICAn
aHRtbC9IVE1MRm9udEVsZW1lbnQuaWRsJywKKyAgICAgICAgICAgICdodG1sL0hUTUxGb3JtQ29u
dHJvbHNDb2xsZWN0aW9uLmlkbCcsCiAgICAgICAgICAgICAnaHRtbC9IVE1MRm9ybUVsZW1lbnQu
aWRsJywKICAgICAgICAgICAgICdodG1sL0hUTUxGcmFtZUVsZW1lbnQuaWRsJywKICAgICAgICAg
ICAgICdodG1sL0hUTUxGcmFtZVNldEVsZW1lbnQuaWRsJywKQEAgLTIwNzcsNiArMjA3OCw3IEBA
CiAgICAgICAgICAgICAnYmluZGluZ3MvanMvSlNIVE1MRWxlbWVudEN1c3RvbS5jcHAnLAogICAg
ICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTSFRNTEVtYmVkRWxlbWVudEN1c3RvbS5jcHAnLAogICAg
ICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTSFRNTEVtYmVkRWxlbWVudEN1c3RvbS5oJywKKyAgICAg
ICAgICAgICdiaW5kaW5ncy9qcy9KU0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uQ3VzdG9tLmNw
cCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvanMvSlNIVE1MRm9ybUVsZW1lbnRDdXN0b20uY3Bw
JywKICAgICAgICAgICAgICdiaW5kaW5ncy9qcy9KU0hUTUxGcmFtZUVsZW1lbnRDdXN0b20uY3Bw
JywKICAgICAgICAgICAgICdiaW5kaW5ncy9qcy9KU0hUTUxGcmFtZVNldEVsZW1lbnRDdXN0b20u
Y3BwJywKQEAgLTIzOTQsNiArMjM5Niw3IEBACiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4SFRNTENvbGxlY3Rpb25DdXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy92
OC9jdXN0b20vVjhIVE1MRG9jdW1lbnRDdXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5n
cy92OC9jdXN0b20vVjhIVE1MRWxlbWVudEN1c3RvbS5jcHAnLAorICAgICAgICAgICAgJ2JpbmRp
bmdzL3Y4L2N1c3RvbS9WOEhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uQ3VzdG9tLmNwcCcsCiAg
ICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTEZvcm1FbGVtZW50Q3VzdG9tLmNw
cCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTEZyYW1lRWxlbWVudEN1
c3RvbS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxGcmFtZVNl
dEVsZW1lbnRDdXN0b20uY3BwJywKQEAgLTQxMDgsOCArNDExMSw4IEBACiAgICAgICAgICAgICAn
aHRtbC9IVE1MRmllbGRTZXRFbGVtZW50LmgnLAogICAgICAgICAgICAgJ2h0bWwvSFRNTEZvbnRF
bGVtZW50LmNwcCcsCiAgICAgICAgICAgICAnaHRtbC9IVE1MRm9udEVsZW1lbnQuaCcsCi0gICAg
ICAgICAgICAnaHRtbC9IVE1MRm9ybUNvbGxlY3Rpb24uY3BwJywKLSAgICAgICAgICAgICdodG1s
L0hUTUxGb3JtQ29sbGVjdGlvbi5oJywKKyAgICAgICAgICAgICdodG1sL0hUTUxGb3JtQ29udHJv
bHNDb2xsZWN0aW9uLmNwcCcsCisgICAgICAgICAgICAnaHRtbC9IVE1MRm9ybUNvbnRyb2xzQ29s
bGVjdGlvbi5oJywKICAgICAgICAgICAgICdodG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3Bw
JywKICAgICAgICAgICAgICdodG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnRXaXRoU3RhdGUuY3Bw
JywKICAgICAgICAgICAgICdodG1sL0hUTUxGb3JtRWxlbWVudC5jcHAnLApAQCAtNzYxNCw2ICs3
NjE3LDggQEAKICAgICAgICAgICAgICc8KFBST0RVQ1RfRElSKS9EZXJpdmVkU291cmNlcy9XZWJD
b3JlL0pTSFRNTEZpZWxkU2V0RWxlbWVudC5oJywKICAgICAgICAgICAgICc8KFBST0RVQ1RfRElS
KS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTSFRNTEZvbnRFbGVtZW50LmNwcCcsCiAgICAgICAg
ICAgICAnPChQUk9EVUNUX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0hUTUxGb250RWxl
bWVudC5oJywKKyAgICAgICAgICAgICc8KFBST0RVQ1RfRElSKS9EZXJpdmVkU291cmNlcy9XZWJD
b3JlL0pTSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uY3BwJywKKyAgICAgICAgICAgICc8KFBS
T0RVQ1RfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTSFRNTEZvcm1Db250cm9sc0NvbGxl
Y3Rpb24uaCcsCiAgICAgICAgICAgICAnPChQUk9EVUNUX0RJUikvRGVyaXZlZFNvdXJjZXMvV2Vi
Q29yZS9KU0hUTUxGb3JtRWxlbWVudC5jcHAnLAogICAgICAgICAgICAgJzwoUFJPRFVDVF9ESVIp
L0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNIVE1MRm9ybUVsZW1lbnQuaCcsCiAgICAgICAgICAg
ICAnPChQUk9EVUNUX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0hUTUxGcmFtZUVsZW1l
bnQuY3BwJywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNw
cm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUu
dmNwcm9qCShyZXZpc2lvbiAxMzM2OTMpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJv
ai9XZWJDb3JlLnZjcHJvagkod29ya2luZyBjb3B5KQpAQCAtNjkzNCw2ICs2OTM0LDYyIEBACiAJ
CQkJPgogCQkJPC9GaWxlPgogCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9IiQoQ29uZmlndXJh
dGlvbkJ1aWxkRGlyKVxvYmpcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNIVE1MRm9y
bUNvbnRyb2xzQ29sbGVjdGlvbi5jcHAiCisJCQkJPgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgor
CQkJCQlOYW1lPSJEZWJ1Z3xXaW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJ
CQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCS8+
CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJ
TmFtZT0iUmVsZWFzZXxXaW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJ
CT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCS8+CisJ
CQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFt
ZT0iRGVidWdfQ2Fpcm9fQ0ZMaXRlfFdpbjMyIgorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1
ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJ
CQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgor
CQkJCQlOYW1lPSJSZWxlYXNlX0NhaXJvX0NGTGl0ZXxXaW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9t
QnVpbGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxl
clRvb2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8RmlsZUNvbmZp
Z3VyYXRpb24KKwkJCQkJTmFtZT0iRGVidWdfQWxsfFdpbjMyIgorCQkJCQlFeGNsdWRlZEZyb21C
dWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVy
VG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCTxGaWxlQ29uZmln
dXJhdGlvbgorCQkJCQlOYW1lPSJQcm9kdWN0aW9ufFdpbjMyIgorCQkJCQlFeGNsdWRlZEZyb21C
dWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVy
VG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJPC9GaWxlPgorCQkJ
PEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmpcJChQ
cm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5o
IgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCiAJCQkJUmVsYXRpdmVQYXRoPSIkKENvbmZp
Z3VyYXRpb25CdWlsZERpcilcb2JqXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTSFRN
TEZvcm1FbGVtZW50LmNwcCIKIAkJCQk+CiAJCQkJPEZpbGVDb25maWd1cmF0aW9uCkBAIC02MDQ3
NSwxMSArNjA1MzEsNTkgQEAKIAkJCQk+CiAJCQk8L0ZpbGU+CiAJCQk8RmlsZQotCQkJCVJlbGF0
aXZlUGF0aD0iLi5caHRtbFxIVE1MRm9ybUNvbGxlY3Rpb24uY3BwIgorCQkJCVJlbGF0aXZlUGF0
aD0iLi5caHRtbFxIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5jcHAiCiAJCQkJPgorCQkJCTxG
aWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJEZWJ1Z3xXaW4zMiIKKwkJCQkJRXhjbHVkZWRG
cm9tQnVpbGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21w
aWxlclRvb2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8RmlsZUNv
bmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9t
QnVpbGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxl
clRvb2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8RmlsZUNvbmZp
Z3VyYXRpb24KKwkJCQkJTmFtZT0iRGVidWdfQ2Fpcm9fQ0ZMaXRlfFdpbjMyIgorCQkJCQlFeGNs
dWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkND
TENvbXBpbGVyVG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCTxG
aWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJSZWxlYXNlX0NhaXJvX0NGTGl0ZXxXaW4zMiIK
KwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJ
CU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlv
bj4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iRGVidWdfQWxsfFdpbjMyIgor
CQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJ
TmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9u
PgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJQcm9kdWN0aW9ufFdpbjMyIgor
CQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJ
TmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9u
PgogCQkJPC9GaWxlPgogCQkJPEZpbGUKLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGh0bWxcSFRNTEZv
cm1Db2xsZWN0aW9uLmgiCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxodG1sXEhUTUxGb3JtQ29udHJv
bHNDb2xsZWN0aW9uLmgiCiAJCQkJPgogCQkJPC9GaWxlPgogCQkJPEZpbGUKQEAgLTY4MDE0LDYg
KzY4MTE4LDU4IEBACiAJCQkJCT4KIAkJCQk8L0ZpbGU+CiAJCQkJPEZpbGUKKwkJCQkJUmVsYXRp
dmVQYXRoPSIuLlxiaW5kaW5nc1xqc1xKU0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uQ3VzdG9t
LmNwcCIKKwkJCQkJPgorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJCU5hbWU9IkRlYnVn
fFdpbjMyIgorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCQk+CisJCQkJCQk8
VG9vbAorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCQkvPgorCQkJCQk8L0Zp
bGVDb25maWd1cmF0aW9uPgorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJCU5hbWU9IlJl
bGVhc2V8V2luMzIiCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJCT4KKwkJ
CQkJCTxUb29sCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJCS8+CisJCQkJ
CTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQkJTmFt
ZT0iRGVidWdfQ2Fpcm9fQ0ZMaXRlfFdpbjMyIgorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRy
dWUiCisJCQkJCQk+CisJCQkJCQk8VG9vbAorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wi
CisJCQkJCQkvPgorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCQk8RmlsZUNvbmZpZ3Vy
YXRpb24KKwkJCQkJCU5hbWU9IlJlbGVhc2VfQ2Fpcm9fQ0ZMaXRlfFdpbjMyIgorCQkJCQkJRXhj
bHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCQk+CisJCQkJCQk8VG9vbAorCQkJCQkJCU5hbWU9
IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCQkvPgorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgor
CQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJCU5hbWU9IkRlYnVnX0FsbHxXaW4zMiIKKwkJ
CQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQkJPgorCQkJCQkJPFRvb2wKKwkJCQkJ
CQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkJLz4KKwkJCQkJPC9GaWxlQ29uZmlndXJh
dGlvbj4KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCQlOYW1lPSJQcm9kdWN0aW9ufFdp
bjMyIgorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCQk+CisJCQkJCQk8VG9v
bAorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCQkvPgorCQkJCQk8L0ZpbGVD
b25maWd1cmF0aW9uPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQogCQkJCQlSZWxhdGl2ZVBhdGg9
Ii4uXGJpbmRpbmdzXGpzXEpTSFRNTEZvcm1FbGVtZW50Q3VzdG9tLmNwcCIKIAkJCQkJPgogCQkJ
CQk8RmlsZUNvbmZpZ3VyYXRpb24KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDEzMzY5MykKKysrIFNvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpA
QCAtMzc0Myw2ICszNzQzLDcgQEAKIAkJOUExQjZGOTcxNTg4NjlDODAwMTFBOEM0IC8qIEpTRE9N
U3RyaW5nTGlzdEN1c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA5QTFCNkY5NjE1ODg2OUM4MDAxMUE4QzQgLyogSlNET01TdHJpbmdMaXN0Q3Vz
dG9tLmNwcCAqLzsgfTsKIAkJOUIwRkIxOTExNDBEQjU3OTAwMjI1ODhGIC8qIEhUVFBWYWxpZGF0
aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlC
MEZCMThGMTQwREI1NzkwMDIyNTg4RiAvKiBIVFRQVmFsaWRhdGlvbi5jcHAgKi87IH07CiAJCTlC
MEZCMTkyMTQwREI1NzkwMDIyNTg4RiAvKiBIVFRQVmFsaWRhdGlvbi5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUIwRkIxOTAxNDBEQjU3OTAwMjI1ODhG
IC8qIEhUVFBWYWxpZGF0aW9uLmggKi87IH07CisJCTlCMUFCMDdDMTY0OEM3QzQwMDUxRjNGMiAv
KiBKU0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlCMUFCMDdCMTY0OEM3QzQwMDUxRjNGMiAv
KiBKU0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uQ3VzdG9tLmNwcCAqLzsgfTsKIAkJOUIyNERF
OEUxNTE5NEI5NTAwQzU5QzI3IC8qIEhUTUxCRElFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QjI0REU4QzE1MTk0Qjk1MDBDNTlDMjcgLyog
SFRNTEJESUVsZW1lbnQuaCAqLzsgfTsKIAkJOUIyQjdBQzExNTA5ODUwQTAwODkzMkNDIC8qIE1p
Y3JvRGF0YUl0ZW1WYWx1ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA5QjJGN0NGNzE0NTYyMTIwMDA3RjhCNTAgLyogTWljcm9EYXRhSXRlbVZhbHVl
LmNwcCAqLzsgfTsKIAkJOUIyRDhBNzkxNDk5N0NDRjAwRUNFRjNFIC8qIFVuZG9TdGVwLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QjJEOEE3ODE0OTk3
Q0NGMDBFQ0VGM0UgLyogVW5kb1N0ZXAuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwpAQCAtMzc2MSw2ICszNzYyLDggQEAKIAkJOUJDNkMyMUMxM0NDQzk3
QjAwOEUwMzM3IC8qIEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlCQzZDMjFBMTNDQ0M5N0IwMDhFMDMz
NyAvKiBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5jcHAgKi87IH07CiAJCTlCRDBCRjkzMTJB
NDJCRjUwMDcyRkQ0MyAvKiBTY29wZWRFdmVudFF1ZXVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QkQwQkY5MTEyQTQyQkY1MDA3MkZENDMgLyogU2Nv
cGVkRXZlbnRRdWV1ZS5oICovOyB9OwogCQk5QkQwQkY5NDEyQTQyQkY1MDA3MkZENDMgLyogU2Nv
cGVkRXZlbnRRdWV1ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA5QkQwQkY5MjEyQTQyQkY1MDA3MkZENDMgLyogU2NvcGVkRXZlbnRRdWV1ZS5jcHAg
Ki87IH07CisJCTlCRjlBODgwMTY0OEREMkYwMDFDNkIyMyAvKiBKU0hUTUxGb3JtQ29udHJvbHND
b2xsZWN0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDlCRjlBODdFMTY0OEREMkYwMDFDNkIyMyAvKiBKU0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0
aW9uLmNwcCAqLzsgfTsKKwkJOUJGOUE4ODExNjQ4REQyRjAwMUM2QjIzIC8qIEpTSFRNTEZvcm1D
b250cm9sc0NvbGxlY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDlCRjlBODdGMTY0OEREMkYwMDFDNkIyMyAvKiBKU0hUTUxGb3JtQ29udHJvbHND
b2xsZWN0aW9uLmggKi87IH07CiAJCTlGMEQ2QjJFMTIxQkZFQkEwMDZDMDI4OCAvKiBJbnNwZWN0
b3JQcm9maWxlckFnZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDlGMEQ2QjJDMTIxQkZFQkEwMDZDMDI4OCAvKiBJbnNwZWN0b3JQcm9maWxlckFn
ZW50LmNwcCAqLzsgfTsKIAkJOUYwRDZCMkYxMjFCRkVCQTAwNkMwMjg4IC8qIEluc3BlY3RvclBy
b2ZpbGVyQWdlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDlGMEQ2QjJEMTIxQkZFQkEwMDZDMDI4OCAvKiBJbnNwZWN0b3JQcm9maWxlckFnZW50Lmgg
Ki87IH07CiAJCTlGM0I5NDdFMTIyNDE3NTgwMDUzMDRFNyAvKiBTY3JpcHRIZWFwU25hcHNob3Qu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlGM0I5NDdE
MTIyNDE3NTgwMDUzMDRFNyAvKiBTY3JpcHRIZWFwU25hcHNob3QuaCAqLzsgfTsKQEAgLTQzNDgs
OCArNDM1MSw4IEBACiAJCUE4RDA2NUFFMEEyNDQ2Q0QwMDVFNzIwMyAvKiBKU0hUTUxGb3JtRWxl
bWVudEN1c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBBOEQwNjVBRDBBMjQ0NkNEMDA1RTcyMDMgLyogSlNIVE1MRm9ybUVsZW1lbnRDdXN0b20u
Y3BwICovOyB9OwogCQlBOEQwNkIzOTBBMjY1RENEMDA1RTcyMDMgLyogSFRNTE5hbWVzLmggaW4g
Q29weSBHZW5lcmF0ZWQgSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBBOEQwNkIzNzBBMjY1RENEMDA1RTcyMDMgLyogSFRNTE5hbWVzLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoKTsgfTsgfTsKIAkJQThEMDZCM0EwQTI2NURDRDAwNUU3MjAzIC8qIEhU
TUxOYW1lcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBBOEQwNkIzODBBMjY1RENEMDA1RTcyMDMgLyogSFRNTE5hbWVzLmNwcCAqLzsgfTsKLQkJQThE
RjNGQ0UwOTdGQTBGQzAwNTI5ODFCIC8qIEhUTUxGb3JtQ29sbGVjdGlvbi5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThERjNGQzYwOTdGQTBGQjAwNTI5
ODFCIC8qIEhUTUxGb3JtQ29sbGVjdGlvbi5oICovOyB9OwotCQlBOERGM0ZDRjA5N0ZBMEZDMDA1
Mjk4MUIgLyogSFRNTEZvcm1Db2xsZWN0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4REYzRkM3MDk3RkEwRkIwMDUyOTgxQiAvKiBIVE1MRm9y
bUNvbGxlY3Rpb24uY3BwICovOyB9OworCQlBOERGM0ZDRTA5N0ZBMEZDMDA1Mjk4MUIgLyogSFRN
TEZvcm1Db250cm9sc0NvbGxlY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEE4REYzRkM2MDk3RkEwRkIwMDUyOTgxQiAvKiBIVE1MRm9ybUNvbnRy
b2xzQ29sbGVjdGlvbi5oICovOyB9OworCQlBOERGM0ZDRjA5N0ZBMEZDMDA1Mjk4MUIgLyogSFRN
TEZvcm1Db250cm9sc0NvbGxlY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQThERjNGQzcwOTdGQTBGQjAwNTI5ODFCIC8qIEhUTUxGb3JtQ29u
dHJvbHNDb2xsZWN0aW9uLmNwcCAqLzsgfTsKIAkJQThERjNGRDAwOTdGQTBGQzAwNTI5ODFCIC8q
IEhUTUxDb2xsZWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBOERGM0ZDODA5N0ZBMEZCMDA1Mjk4MUIgLyogSFRNTENvbGxlY3Rpb24uaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBOERGM0ZEMTA5
N0ZBMEZDMDA1Mjk4MUIgLyogSFRNTENvbGxlY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThERjNGQzkwOTdGQTBGQjAwNTI5ODFCIC8qIEhU
TUxDb2xsZWN0aW9uLmNwcCAqLzsgfTsKIAkJQThERjNGRDIwOTdGQTBGQzAwNTI5ODFCIC8qIEhU
TUxCYXNlRm9udEVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEE4REYzRkNBMDk3RkEwRkIwMDUyOTgxQiAvKiBIVE1MQmFzZUZvbnRFbGVtZW50
LmggKi87IH07CkBAIC0xMTAxMSw2ICsxMTAxNCw4IEBACiAJCTlBMUI2Rjk2MTU4ODY5QzgwMDEx
QThDNCAvKiBKU0RPTVN0cmluZ0xpc3RDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gSlNET01TdHJpbmdMaXN0Q3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJOUIwRkIxOEYxNDBEQjU3OTAwMjI1ODhGIC8qIEhUVFBWYWxpZGF0aW9u
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEhUVFBWYWxpZGF0aW9u
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUIwRkIxOTAxNDBEQjU3OTAwMjI1
ODhGIC8qIEhUVFBWYWxpZGF0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEhUVFBWYWxpZGF0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTlCMUFCMDc5
MTY0OEM2OUQwMDUxRjNGMiAvKiBIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5pZGwgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0g
SFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk5QjFBQjA3QjE2NDhDN0M0MDA1MUYzRjIgLyogSlNIVE1MRm9ybUNvbnRyb2xzQ29sbGVj
dGlvbkN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0hU
TUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uQ3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJOUIyNERFOEMxNTE5NEI5NTAwQzU5QzI3IC8qIEhUTUxCRElFbGVtZW50LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhUTUxCRElFbGVtZW50Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlCMkQ4QTc4MTQ5OTdDQ0YwMEVDRUYzRSAvKiBVbmRvU3Rl
cC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBVbmRvU3RlcC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk5QjJGN0NGNzE0NTYyMTIwMDA3RjhCNTAgLyogTWljcm9E
YXRhSXRlbVZhbHVlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1p
Y3JvRGF0YUl0ZW1WYWx1ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMTAz
MCw2ICsxMTAzNSw4IEBACiAJCTlCQzZDMjFBMTNDQ0M5N0IwMDhFMDMzNyAvKiBIVE1MVGV4dEZv
cm1Db250cm9sRWxlbWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTlCRDBCRjkxMTJBNDJCRjUwMDcyRkQ0MyAvKiBTY29wZWRFdmVudFF1ZXVlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjb3BlZEV2ZW50UXVldWUuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUJEMEJGOTIxMkE0MkJGNTAwNzJGRDQzIC8qIFNjb3Bl
ZEV2ZW50UXVldWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2Nv
cGVkRXZlbnRRdWV1ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTlCRjlBODdF
MTY0OEREMkYwMDFDNkIyMyAvKiBKU0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTSFRNTEZvcm1Db250cm9sc0NvbGxl
Y3Rpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5QkY5QTg3RjE2NDhERDJG
MDAxQzZCMjMgLyogSlNIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBKU0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlGMEQ2QjJDMTIxQkZFQkEwMDZDMDI4OCAvKiBJbnNw
ZWN0b3JQcm9maWxlckFnZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEluc3BlY3RvclByb2ZpbGVyQWdlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk5RjBENkIyRDEyMUJGRUJBMDA2QzAyODggLyogSW5zcGVjdG9yUHJvZmlsZXJBZ2VudC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnNwZWN0b3JQcm9maWxlckFnZW50
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlGM0I5NDdEMTIyNDE3NTgwMDUzMDRF
NyAvKiBTY3JpcHRIZWFwU25hcHNob3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gU2NyaXB0SGVhcFNuYXBzaG90Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0x
MTUxNSw4ICsxMTUyMiw4IEBACiAJCUE4RDA2NUFEMEEyNDQ2Q0QwMDVFNzIwMyAvKiBKU0hUTUxG
b3JtRWxlbWVudEN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBKU0hUTUxGb3JtRWxlbWVudEN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUE4RDA2QjM3MEEyNjVEQ0QwMDVFNzIwMyAvKiBIVE1MTmFtZXMuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhUTUxOYW1lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlBOEQwNkIzODBBMjY1RENEMDA1RTcyMDMgLyogSFRNTE5hbWVzLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBIVE1MTmFtZXMuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQlBOERGM0ZDNjA5N0ZBMEZCMDA1Mjk4MUIgLyogSFRNTEZvcm1D
b2xsZWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
MzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBIVE1MRm9ybUNv
bGxlY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQThERjNGQzcwOTdGQTBG
QjAwNTI5ODFCIC8qIEhUTUxGb3JtQ29sbGVjdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gSFRNTEZvcm1Db2xsZWN0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJQThERjNGQzYwOTdGQTBGQjAwNTI5ODFCIC8qIEhUTUxGb3JtQ29udHJv
bHNDb2xsZWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBIVE1MRm9y
bUNvbnRyb2xzQ29sbGVjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBOERG
M0ZDNzA5N0ZBMEZCMDA1Mjk4MUIgLyogSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEhUTUxGb3JtQ29udHJvbHNDb2xs
ZWN0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQThERjNGQzgwOTdGQTBG
QjAwNTI5ODFCIC8qIEhUTUxDb2xsZWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBIVE1MQ29sbGVjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlB
OERGM0ZDOTA5N0ZBMEZCMDA1Mjk4MUIgLyogSFRNTENvbGxlY3Rpb24uY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEhUTUxDb2xsZWN0aW9uLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQThERjNGQ0EwOTdGQTBGQjAwNTI5ODFCIC8qIEhUTUxCYXNl
Rm9udEVsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhUTUxCYXNl
Rm9udEVsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE3NTI4LDggKzE3
NTM1LDkgQEAKIAkJCQlBOENGRjc5ODBBMTU2OTc4MDAwQTQyMzQgLyogSFRNTEZvbnRFbGVtZW50
LmNwcCAqLywKIAkJCQlBOENGRjc5QzBBMTU2OTc4MDAwQTQyMzQgLyogSFRNTEZvbnRFbGVtZW50
LmggKi8sCiAJCQkJMUFFMkE5RjUwQTFDREE1NzAwQjQyQjI1IC8qIEhUTUxGb250RWxlbWVudC5p
ZGwgKi8sCi0JCQkJQThERjNGQzcwOTdGQTBGQjAwNTI5ODFCIC8qIEhUTUxGb3JtQ29sbGVjdGlv
bi5jcHAgKi8sCi0JCQkJQThERjNGQzYwOTdGQTBGQjAwNTI5ODFCIC8qIEhUTUxGb3JtQ29sbGVj
dGlvbi5oICovLAorCQkJCUE4REYzRkM3MDk3RkEwRkIwMDUyOTgxQiAvKiBIVE1MRm9ybUNvbnRy
b2xzQ29sbGVjdGlvbi5jcHAgKi8sCisJCQkJQThERjNGQzYwOTdGQTBGQjAwNTI5ODFCIC8qIEhU
TUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmggKi8sCisJCQkJOUIxQUIwNzkxNjQ4QzY5RDAwNTFG
M0YyIC8qIEhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmlkbCAqLywKIAkJCQlBODEzNjlCMzA5
NzM3NEY1MDBENzQ0NjMgLyogSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHAgKi8sCiAJCQkJQTgx
MzY5QjIwOTczNzRGNTAwRDc0NDYzIC8qIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQuaCAqLywKIAkJ
CQlFMTRGMUM0MjE0QjVEQUM2MDBFQTkwMDkgLyogSFRNTEZvcm1Db250cm9sRWxlbWVudFdpdGhT
dGF0ZS5jcHAgKi8sCkBAIC0xODQxNyw2ICsxODQyNSw4IEBACiAJCQkJMUFFMkFBMTMwQTFDREFC
MzAwQjQyQjI1IC8qIEpTSFRNTEZpZWxkU2V0RWxlbWVudC5oICovLAogCQkJCTFBRTJBQTE0MEEx
Q0RBQjMwMEI0MkIyNSAvKiBKU0hUTUxGb250RWxlbWVudC5jcHAgKi8sCiAJCQkJMUFFMkFBMTUw
QTFDREFCMzAwQjQyQjI1IC8qIEpTSFRNTEZvbnRFbGVtZW50LmggKi8sCisJCQkJOUJGOUE4N0Ux
NjQ4REQyRjAwMUM2QjIzIC8qIEpTSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uY3BwICovLAor
CQkJCTlCRjlBODdGMTY0OEREMkYwMDFDNkIyMyAvKiBKU0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0
aW9uLmggKi8sCiAJCQkJQThEMDY0RjkwQTIzQzBDQzAwNUU3MjAzIC8qIEpTSFRNTEZvcm1FbGVt
ZW50LmNwcCAqLywKIAkJCQlBOEQwNjRGQTBBMjNDMENDMDA1RTcyMDMgLyogSlNIVE1MRm9ybUVs
ZW1lbnQuaCAqLywKIAkJCQlCQzQ5MThDMDBCRkVBMDUwMDA5RDYzMTYgLyogSlNIVE1MRnJhbWVF
bGVtZW50LmNwcCAqLywKQEAgLTIwNDYxLDYgKzIwNDcxLDcgQEAKIAkJCQlCQzU4MjNGNDBDMEE5
OERGMDA1M0YxQjUgLyogSlNIVE1MRWxlbWVudEN1c3RvbS5jcHAgKi8sCiAJCQkJQkM2RDQ0QkQw
QzA3RUZCNjAwNzJEMkM5IC8qIEpTSFRNTEVtYmVkRWxlbWVudEN1c3RvbS5jcHAgKi8sCiAJCQkJ
RTFBRDE0MjAxMjk1RUE2QjAwQUNBOTg5IC8qIEpTSFRNTEVtYmVkRWxlbWVudEN1c3RvbS5oICov
LAorCQkJCTlCMUFCMDdCMTY0OEM3QzQwMDUxRjNGMiAvKiBKU0hUTUxGb3JtQ29udHJvbHNDb2xs
ZWN0aW9uQ3VzdG9tLmNwcCAqLywKIAkJCQlBOEQwNjVBRDBBMjQ0NkNEMDA1RTcyMDMgLyogSlNI
VE1MRm9ybUVsZW1lbnRDdXN0b20uY3BwICovLAogCQkJCUJDMkVEN0E0MEM2QzBGMzYwMDkyMEJG
RiAvKiBKU0hUTUxGcmFtZUVsZW1lbnRDdXN0b20uY3BwICovLAogCQkJCUJDRDQxQUJBMEMwNjBE
RTgwMEMwRTQ0NiAvKiBKU0hUTUxGcmFtZVNldEVsZW1lbnRDdXN0b20uY3BwICovLApAQCAtMjM3
MTQsNyArMjM3MjUsNyBAQAogCQkJCUE4MTM2OUQ0MDk3Mzc0RjYwMEQ3NDQ2MyAvKiBIVE1MRmll
bGRTZXRFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlBOENGRjdBNjBBMTU2OTc4MDAwQTQy
MzQgLyogSFRNTEZvbnRFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk5NzdCMzg2RjEyMjg4
M0U5MDBCODFGRjggLyogSFRNTEZvcm1hdHRpbmdFbGVtZW50TGlzdC5oIGluIEhlYWRlcnMgKi8s
Ci0JCQkJQThERjNGQ0UwOTdGQTBGQzAwNTI5ODFCIC8qIEhUTUxGb3JtQ29sbGVjdGlvbi5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJQThERjNGQ0UwOTdGQTBGQzAwNTI5ODFCIC8qIEhUTUxGb3JtQ29u
dHJvbHNDb2xsZWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlBODEzNjlDRTA5NzM3NEY2MDBE
NzQ0NjMgLyogSFRNTEZvcm1Db250cm9sRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTE0
RjFDNDUxNEI1REFDNjAwRUE5MDA5IC8qIEhUTUxGb3JtQ29udHJvbEVsZW1lbnRXaXRoU3RhdGUu
aCBpbiBIZWFkZXJzICovLAogCQkJCUE4MTM2OUQwMDk3Mzc0RjYwMEQ3NDQ2MyAvKiBIVE1MRm9y
bUVsZW1lbnQuaCBpbiBIZWFkZXJzICovLApAQCAtMjU2OTIsNiArMjU3MDMsNyBAQAogCQkJCTNG
RkZGOUE5MTU5RDlBNTUwMDIwQkJENSAvKiBXZWJLaXRDU1NWaWV3cG9ydFJ1bGUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTkzQzM4QkZGMTY0NDczQzcwMDA5MUVCMiAvKiBTY3JvbGxpbmdTdGF0ZUZp
eGVkTm9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTNDMzhDMDMxNjQ0NzNERDAwMDkxRUIyIC8q
IFNjcm9sbGluZ1RyZWVGaXhlZE5vZGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTlCRjlBODgxMTY0
OEREMkYwMDFDNkIyMyAvKiBKU0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmggaW4gSGVhZGVy
cyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsK
IAkJfTsKQEAgLTI2OTIxLDcgKzI2OTMzLDcgQEAKIAkJCQlBODEzNjlENTA5NzM3NEY2MDBENzQ0
NjMgLyogSFRNTEZpZWxkU2V0RWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBOENGRjdB
MjBBMTU2OTc4MDAwQTQyMzQgLyogSFRNTEZvbnRFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTk3N0IzODZFMTIyODgzRTkwMEI4MUZGOCAvKiBIVE1MRm9ybWF0dGluZ0VsZW1lbnRMaXN0
LmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUE4REYzRkNGMDk3RkEwRkMwMDUyOTgxQiAvKiBIVE1M
Rm9ybUNvbGxlY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQThERjNGQ0YwOTdGQTBGQzAw
NTI5ODFCIC8qIEhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUE4MTM2OUNGMDk3Mzc0RjYwMEQ3NDQ2MyAvKiBIVE1MRm9ybUNvbnRyb2xFbGVtZW50LmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUUxNEYxQzQ0MTRCNURBQzYwMEVBOTAwOSAvKiBIVE1MRm9y
bUNvbnRyb2xFbGVtZW50V2l0aFN0YXRlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4MTM2OUQx
MDk3Mzc0RjYwMEQ3NDQ2MyAvKiBIVE1MRm9ybUVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCkBA
IC0yNzMzNiw2ICsyNzM0OCw4IEBACiAJCQkJQkM2RDQ0QkUwQzA3RUZCNjAwNzJEMkM5IC8qIEpT
SFRNTEVtYmVkRWxlbWVudEN1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQUUyQUEyNjBB
MUNEQUI0MDBCNDJCMjUgLyogSlNIVE1MRmllbGRTZXRFbGVtZW50LmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTFBRTJBQTI4MEExQ0RBQjQwMEI0MkIyNSAvKiBKU0hUTUxGb250RWxlbWVudC5jcHAg
aW4gU291cmNlcyAqLywKKwkJCQk5QkY5QTg4MDE2NDhERDJGMDAxQzZCMjMgLyogSlNIVE1MRm9y
bUNvbnRyb2xzQ29sbGVjdGlvbi5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk5QjFBQjA3QzE2NDhD
N0M0MDA1MUYzRjIgLyogSlNIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbkN1c3RvbS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlBOEQwNjRGQjBBMjNDMENDMDA1RTcyMDMgLyogSlNIVE1MRm9ybUVs
ZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQThEMDY1QUUwQTI0NDZDRDAwNUU3MjAzIC8q
IEpTSFRNTEZvcm1FbGVtZW50Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDNDkxOEM2
MEJGRUEwNTAwMDlENjMxNiAvKiBKU0hUTUxGcmFtZUVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8s
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0JpbmRpbmdzQWxsSW5PbmUuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQmluZGluZ3NBbGxJ
bk9uZS5jcHAJKHJldmlzaW9uIDEzMzY5MykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTQmluZGluZ3NBbGxJbk9uZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg5LDYgKzg5LDcgQEAK
ICNpbmNsdWRlICJKU0hUTUxEb2N1bWVudEN1c3RvbS5jcHAiCiAjaW5jbHVkZSAiSlNIVE1MRWxl
bWVudEN1c3RvbS5jcHAiCiAjaW5jbHVkZSAiSlNIVE1MRW1iZWRFbGVtZW50Q3VzdG9tLmNwcCIK
KyNpbmNsdWRlICJKU0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uQ3VzdG9tLmNwcCIKICNpbmNs
dWRlICJKU0hUTUxGb3JtRWxlbWVudEN1c3RvbS5jcHAiCiAjaW5jbHVkZSAiSlNIVE1MRnJhbWVF
bGVtZW50Q3VzdG9tLmNwcCIKICNpbmNsdWRlICJKU0hUTUxGcmFtZVNldEVsZW1lbnRDdXN0b20u
Y3BwIgpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MQWxsQ29sbGVjdGlv
bkN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNI
VE1MQWxsQ29sbGVjdGlvbkN1c3RvbS5jcHAJKHJldmlzaW9uIDEzMzY5MykKKysrIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEFsbENvbGxlY3Rpb25DdXN0b20uY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC01MCw5ICs1MCw4IEBAIHN0YXRpYyBKU1ZhbHVlIGdldE5hbWVkSXRlbXMoRXhl
Y1N0YXRlKiAKICAgICBpZiAobmFtZWRJdGVtcy5zaXplKCkgPT0gMSkKICAgICAgICAgcmV0dXJu
IHRvSlMoZXhlYywgY29sbGVjdGlvbi0+Z2xvYmFsT2JqZWN0KCksIG5hbWVkSXRlbXNbMF0uZ2V0
KCkpOwogCi0gICAgLy8gRklYTUU6IEhUTUw1IHNwZWNpZmllcyB0aGF0IHRoaXMgc2hvdWxkIGJl
IGEgRHluYW1pY05vZGVMaXN0LgotICAgIC8vIEZJWE1FOiBIVE1MNSBzcGVjaWZpZXMgdGhhdCBu
b24tSFRNTE9wdGlvbnNDb2xsZWN0aW9uIGNvbGxlY3Rpb25zIHNob3VsZCByZXR1cm4KLSAgICAv
LyB0aGUgZmlyc3QgbWF0Y2hpbmcgaXRlbSBpbnN0ZWFkIG9mIGEgTm9kZUxpc3QuCisgICAgLy8g
RklYTUU6IEhUTUw1IHNwZWNpZmljYXRpb24gc2F5cyB0aGlzIHNob3VsZCBiZSBhIEhUTUxDb2xs
ZWN0aW9uLgorICAgIC8vIGh0dHA6Ly93d3cud2hhdHdnLm9yZy9zcGVjcy93ZWItYXBwcy9jdXJy
ZW50LXdvcmsvbXVsdGlwYWdlL2NvbW1vbi1kb20taW50ZXJmYWNlcy5odG1sI2h0bWxhbGxjb2xs
ZWN0aW9uCiAgICAgcmV0dXJuIHRvSlMoZXhlYywgY29sbGVjdGlvbi0+Z2xvYmFsT2JqZWN0KCks
IFN0YXRpY05vZGVMaXN0OjphZG9wdChuYW1lZEl0ZW1zKS5nZXQoKSk7CiB9CiAKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTENvbGxlY3Rpb25DdXN0b20uY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTENvbGxlY3Rpb25DdXN0
b20uY3BwCShyZXZpc2lvbiAxMzM2OTMpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0hUTUxDb2xsZWN0aW9uQ3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjAsMTEgKzIwLDEz
IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiSlNIVE1MQ29sbGVjdGlvbi5oIgog
CisjaW5jbHVkZSAiSFRNTEFsbENvbGxlY3Rpb24uaCIKICNpbmNsdWRlICJIVE1MQ29sbGVjdGlv
bi5oIgorI2luY2x1ZGUgIkhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmgiCiAjaW5jbHVkZSAi
SFRNTE9wdGlvbnNDb2xsZWN0aW9uLmgiCi0jaW5jbHVkZSAiSFRNTEFsbENvbGxlY3Rpb24uaCIK
ICNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKICNpbmNsdWRlICJKU0hUTUxBbGxDb2xsZWN0aW9u
LmgiCisjaW5jbHVkZSAiSlNIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5oIgogI2luY2x1ZGUg
IkpTSFRNTE9wdGlvbnNDb2xsZWN0aW9uLmgiCiAjaW5jbHVkZSAiSlNOb2RlLmgiCiAjaW5jbHVk
ZSAiSlNOb2RlTGlzdC5oIgpAQCAtMzksMjYgKzQxLDYgQEAgdXNpbmcgbmFtZXNwYWNlIEpTQzsK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMgSlNWYWx1ZSBnZXROYW1lZEl0ZW1zKEV4
ZWNTdGF0ZSogZXhlYywgSlNIVE1MQ29sbGVjdGlvbiogY29sbGVjdGlvbiwgUHJvcGVydHlOYW1l
IHByb3BlcnR5TmFtZSkKLXsKLSAgICBWZWN0b3I8UmVmUHRyPE5vZGU+ID4gbmFtZWRJdGVtczsK
LSAgICBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUgPSBwcm9wZXJ0eU5hbWVUb0F0b21pY1N0cmlu
Zyhwcm9wZXJ0eU5hbWUpOwotICAgIGNvbGxlY3Rpb24tPmltcGwoKS0+bmFtZWRJdGVtcyhuYW1l
LCBuYW1lZEl0ZW1zKTsKLQotICAgIGlmIChuYW1lZEl0ZW1zLmlzRW1wdHkoKSkKLSAgICAgICAg
cmV0dXJuIGpzVW5kZWZpbmVkKCk7Ci0gICAgaWYgKG5hbWVkSXRlbXMuc2l6ZSgpID09IDEpCi0g
ICAgICAgIHJldHVybiB0b0pTKGV4ZWMsIGNvbGxlY3Rpb24tPmdsb2JhbE9iamVjdCgpLCBuYW1l
ZEl0ZW1zWzBdLmdldCgpKTsKLQotICAgIGlmIChjb2xsZWN0aW9uLT5pbXBsKCktPnR5cGUoKSA9
PSBGb3JtQ29udHJvbHMpCi0gICAgICAgcmV0dXJuIHRvSlMoZXhlYywgY29sbGVjdGlvbi0+Z2xv
YmFsT2JqZWN0KCksIGNvbGxlY3Rpb24tPmltcGwoKS0+YmFzZSgpLT5yYWRpb05vZGVMaXN0KG5h
bWUpLmdldCgpKTsKLQotICAgIC8vIEZJWE1FOiBIVE1MNSBzcGVjaWZpZXMgdGhhdCB0aGlzIHNo
b3VsZCBiZSBhIER5bmFtaWNOb2RlTGlzdC4KLSAgICAvLyBGSVhNRTogSFRNTDUgc3BlY2lmaWVz
IHRoYXQgbm9uLUhUTUxPcHRpb25zQ29sbGVjdGlvbiBjb2xsZWN0aW9ucyBzaG91bGQgcmV0dXJu
Ci0gICAgLy8gdGhlIGZpcnN0IG1hdGNoaW5nIGl0ZW0gaW5zdGVhZCBvZiBhIE5vZGVMaXN0Lgot
ICAgIHJldHVybiB0b0pTKGV4ZWMsIGNvbGxlY3Rpb24tPmdsb2JhbE9iamVjdCgpLCBTdGF0aWNO
b2RlTGlzdDo6YWRvcHQobmFtZWRJdGVtcykuZ2V0KCkpOwotfQotCiBib29sIEpTSFRNTENvbGxl
Y3Rpb246OmNhbkdldEl0ZW1zRm9yTmFtZShFeGVjU3RhdGUqLCBIVE1MQ29sbGVjdGlvbiogY29s
bGVjdGlvbiwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsKICAgICByZXR1cm4gY29sbGVj
dGlvbi0+aGFzTmFtZWRJdGVtKHByb3BlcnR5TmFtZVRvQXRvbWljU3RyaW5nKHByb3BlcnR5TmFt
ZSkpOwpAQCAtNjYsMTMgKzQ4LDkgQEAgYm9vbCBKU0hUTUxDb2xsZWN0aW9uOjpjYW5HZXRJdGVt
c0Zvck5hbQogCiBKU1ZhbHVlIEpTSFRNTENvbGxlY3Rpb246Om5hbWVHZXR0ZXIoRXhlY1N0YXRl
KiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogewot
ICAgIEpTSFRNTENvbGxlY3Rpb24qIHRoaXNPYmogPSBqc0Nhc3Q8SlNIVE1MQ29sbGVjdGlvbio+
KGFzT2JqZWN0KHNsb3RCYXNlKSk7Ci0gICAgcmV0dXJuIGdldE5hbWVkSXRlbXMoZXhlYywgdGhp
c09iaiwgcHJvcGVydHlOYW1lKTsKLX0KLQotSlNWYWx1ZSBKU0hUTUxDb2xsZWN0aW9uOjpuYW1l
ZEl0ZW0oRXhlY1N0YXRlKiBleGVjKQotewotICAgIHJldHVybiBnZXROYW1lZEl0ZW1zKGV4ZWMs
IHRoaXMsIElkZW50aWZpZXIoZXhlYywgZXhlYy0+YXJndW1lbnQoMCkudG9TdHJpbmcoZXhlYykt
PnZhbHVlKGV4ZWMpKSk7CisgICAgSlNIVE1MQ29sbGVjdGlvbiogY29sbGVjdGlvbiA9IGpzQ2Fz
dDxKU0hUTUxDb2xsZWN0aW9uKj4oYXNPYmplY3Qoc2xvdEJhc2UpKTsKKyAgICBjb25zdCBBdG9t
aWNTdHJpbmcmIG5hbWUgPSBwcm9wZXJ0eU5hbWVUb0F0b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUp
OworICAgIHJldHVybiB0b0pTKGV4ZWMsIGNvbGxlY3Rpb24tPmdsb2JhbE9iamVjdCgpLCBjb2xs
ZWN0aW9uLT5pbXBsKCktPm5hbWVkSXRlbShuYW1lKSk7CiB9CiAKIEpTVmFsdWUgdG9KUyhFeGVj
U3RhdGUqIGV4ZWMsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEhUTUxDb2xsZWN0
aW9uKiBjb2xsZWN0aW9uKQpAQCAtODYsMTggKzY0LDE3IEBAIEpTVmFsdWUgdG9KUyhFeGVjU3Rh
dGUqIGV4ZWMsIEpTRE9NR2xvYmEKICAgICAgICAgcmV0dXJuIHdyYXBwZXI7CiAKICAgICBzd2l0
Y2ggKGNvbGxlY3Rpb24tPnR5cGUoKSkgewotICAgICAgICBjYXNlIFNlbGVjdE9wdGlvbnM6Ci0g
ICAgICAgICAgICB3cmFwcGVyID0gQ1JFQVRFX0RPTV9XUkFQUEVSKGV4ZWMsIGdsb2JhbE9iamVj
dCwgSFRNTE9wdGlvbnNDb2xsZWN0aW9uLCBjb2xsZWN0aW9uKTsKLSAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICBjYXNlIERvY0FsbDoKLSAgICAgICAgICAgIHdyYXBwZXIgPSBDUkVBVEVfRE9N
X1dSQVBQRVIoZXhlYywgZ2xvYmFsT2JqZWN0LCBIVE1MQWxsQ29sbGVjdGlvbiwgY29sbGVjdGlv
bik7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIHdy
YXBwZXIgPSBDUkVBVEVfRE9NX1dSQVBQRVIoZXhlYywgZ2xvYmFsT2JqZWN0LCBIVE1MQ29sbGVj
dGlvbiwgY29sbGVjdGlvbik7Ci0gICAgICAgICAgICBicmVhazsKKyAgICBjYXNlIEZvcm1Db250
cm9sczoKKyAgICAgICAgcmV0dXJuIENSRUFURV9ET01fV1JBUFBFUihleGVjLCBnbG9iYWxPYmpl
Y3QsIEhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLCBjb2xsZWN0aW9uKTsKKyAgICBjYXNlIFNl
bGVjdE9wdGlvbnM6CisgICAgICAgIHJldHVybiBDUkVBVEVfRE9NX1dSQVBQRVIoZXhlYywgZ2xv
YmFsT2JqZWN0LCBIVE1MT3B0aW9uc0NvbGxlY3Rpb24sIGNvbGxlY3Rpb24pOworICAgIGNhc2Ug
RG9jQWxsOgorICAgICAgICByZXR1cm4gQ1JFQVRFX0RPTV9XUkFQUEVSKGV4ZWMsIGdsb2JhbE9i
amVjdCwgSFRNTEFsbENvbGxlY3Rpb24sIGNvbGxlY3Rpb24pOworICAgIGRlZmF1bHQ6CisgICAg
ICAgIGJyZWFrOwogICAgIH0KIAotICAgIHJldHVybiB3cmFwcGVyOworICAgIHJldHVybiBDUkVB
VEVfRE9NX1dSQVBQRVIoZXhlYywgZ2xvYmFsT2JqZWN0LCBIVE1MQ29sbGVjdGlvbiwgY29sbGVj
dGlvbik7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb25DdXN0b20uY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEZvcm1Db250cm9sc0Nv
bGxlY3Rpb25DdXN0b20uY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbkN1c3RvbS5jcHAJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsNzEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMDggQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNv
ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRl
ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNl
IGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAq
IHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIg
dmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg
dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0
aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3Ig
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFy
eSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNo
b3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZ
SU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1B
IDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
SFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uaCIKKworCisjaW5jbHVkZSAiSFRNTEFsbENvbGxl
Y3Rpb24uaCIKKyNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKKyNpbmNsdWRlICJKU0hUTUxDb2xs
ZWN0aW9uLmgiCisjaW5jbHVkZSAiSlNIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5oIgorI2lu
Y2x1ZGUgIkpTTm9kZS5oIgorI2luY2x1ZGUgIkpTTm9kZUxpc3QuaCIKKyNpbmNsdWRlICJKU1Jh
ZGlvTm9kZUxpc3QuaCIKKyNpbmNsdWRlICJOb2RlLmgiCisjaW5jbHVkZSAiUmFkaW9Ob2RlTGlz
dC5oIgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9BdG9taWNT
dHJpbmcuaD4KKwordXNpbmcgbmFtZXNwYWNlIEpTQzsKKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitzdGF0aWMgSlNWYWx1ZSBnZXROYW1lZEl0ZW1zKEV4ZWNTdGF0ZSogZXhlYywgSlNIVE1MRm9y
bUNvbnRyb2xzQ29sbGVjdGlvbiogY29sbGVjdGlvbiwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFt
ZSkKK3sKKyAgICBWZWN0b3I8UmVmUHRyPE5vZGU+ID4gbmFtZWRJdGVtczsKKyAgICBjb25zdCBB
dG9taWNTdHJpbmcmIG5hbWUgPSBwcm9wZXJ0eU5hbWVUb0F0b21pY1N0cmluZyhwcm9wZXJ0eU5h
bWUpOworICAgIGNvbGxlY3Rpb24tPmltcGwoKS0+bmFtZWRJdGVtcyhuYW1lLCBuYW1lZEl0ZW1z
KTsKKworICAgIGlmIChuYW1lZEl0ZW1zLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIGpzVW5k
ZWZpbmVkKCk7CisgICAgaWYgKG5hbWVkSXRlbXMuc2l6ZSgpID09IDEpCisgICAgICAgIHJldHVy
biB0b0pTKGV4ZWMsIGNvbGxlY3Rpb24tPmdsb2JhbE9iamVjdCgpLCBuYW1lZEl0ZW1zWzBdLmdl
dCgpKTsKKworICAgIEFTU0VSVChjb2xsZWN0aW9uLT5pbXBsKCktPnR5cGUoKSA9PSBGb3JtQ29u
dHJvbHMpOworICAgIHJldHVybiB0b0pTKGV4ZWMsIGNvbGxlY3Rpb24tPmdsb2JhbE9iamVjdCgp
LCBjb2xsZWN0aW9uLT5pbXBsKCktPmJhc2UoKS0+cmFkaW9Ob2RlTGlzdChuYW1lKS5nZXQoKSk7
Cit9CisKK2Jvb2wgSlNIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbjo6Y2FuR2V0SXRlbXNGb3JO
YW1lKEV4ZWNTdGF0ZSosIEhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uKiBjb2xsZWN0aW9uLCBQ
cm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQoreworICAgIHJldHVybiBjb2xsZWN0aW9uLT5oYXNO
YW1lZEl0ZW0ocHJvcGVydHlOYW1lVG9BdG9taWNTdHJpbmcocHJvcGVydHlOYW1lKSk7Cit9CisK
K0pTVmFsdWUgSlNIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbjo6bmFtZUdldHRlcihFeGVjU3Rh
dGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCit7
CisgICAgSlNIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbiogdGhpc09iaiA9IGpzQ2FzdDxKU0hU
TUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uKj4oYXNPYmplY3Qoc2xvdEJhc2UpKTsKKyAgICByZXR1
cm4gZ2V0TmFtZWRJdGVtcyhleGVjLCB0aGlzT2JqLCBwcm9wZXJ0eU5hbWUpOworfQorCitKU1Zh
bHVlIEpTSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb246Om5hbWVkSXRlbShFeGVjU3RhdGUqIGV4
ZWMpCit7CisgICAgcmV0dXJuIGdldE5hbWVkSXRlbXMoZXhlYywgdGhpcywgSWRlbnRpZmllcihl
eGVjLCBleGVjLT5hcmd1bWVudCgwKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpKTsKK30K
KworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNIVE1MT3B0aW9uc0NvbGxlY3Rpb25DdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTE9wdGlvbnNDb2xsZWN0aW9uQ3VzdG9tLmNwcAko
cmV2aXNpb24gMTMzNjkzKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MT3B0
aW9uc0NvbGxlY3Rpb25DdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw4IEBA
CiAjaW5jbHVkZSAiSlNIVE1MT3B0aW9uRWxlbWVudC5oIgogI2luY2x1ZGUgIkpTSFRNTFNlbGVj
dEVsZW1lbnQuaCIKICNpbmNsdWRlICJKU0hUTUxTZWxlY3RFbGVtZW50Q3VzdG9tLmgiCisjaW5j
bHVkZSAiSlNOb2RlTGlzdC5oIgorI2luY2x1ZGUgIlN0YXRpY05vZGVMaXN0LmgiCiAKICNpbmNs
dWRlIDx3dGYvTWF0aEV4dHJhcy5oPgogCkBAIC0zNSw2ICszNywzNyBAQCB1c2luZyBuYW1lc3Bh
Y2UgSlNDOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK3N0YXRpYyBKU1ZhbHVlIGdldE5hbWVk
SXRlbXMoRXhlY1N0YXRlKiBleGVjLCBKU0hUTUxPcHRpb25zQ29sbGVjdGlvbiogY29sbGVjdGlv
biwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKK3sKKyAgICBWZWN0b3I8UmVmUHRyPE5vZGU+
ID4gbmFtZWRJdGVtczsKKyAgICBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUgPSBwcm9wZXJ0eU5h
bWVUb0F0b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUpOworICAgIGNvbGxlY3Rpb24tPmltcGwoKS0+
bmFtZWRJdGVtcyhuYW1lLCBuYW1lZEl0ZW1zKTsKKworICAgIGlmIChuYW1lZEl0ZW1zLmlzRW1w
dHkoKSkKKyAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CisgICAgaWYgKG5hbWVkSXRlbXMu
c2l6ZSgpID09IDEpCisgICAgICAgIHJldHVybiB0b0pTKGV4ZWMsIGNvbGxlY3Rpb24tPmdsb2Jh
bE9iamVjdCgpLCBuYW1lZEl0ZW1zWzBdLmdldCgpKTsKKworICAgIC8vIEZJWE1FOiBIVE1MNSBz
cGVjaWZpZXMgdGhhdCB0aGlzIHNob3VsZCBiZSBhIER5bmFtaWNOb2RlTGlzdC4KKyAgICByZXR1
cm4gdG9KUyhleGVjLCBjb2xsZWN0aW9uLT5nbG9iYWxPYmplY3QoKSwgU3RhdGljTm9kZUxpc3Q6
OmFkb3B0KG5hbWVkSXRlbXMpLmdldCgpKTsKK30KKworYm9vbCBKU0hUTUxPcHRpb25zQ29sbGVj
dGlvbjo6Y2FuR2V0SXRlbXNGb3JOYW1lKEV4ZWNTdGF0ZSosIEhUTUxPcHRpb25zQ29sbGVjdGlv
biogY29sbGVjdGlvbiwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKK3sKKyAgICByZXR1cm4g
Y29sbGVjdGlvbi0+aGFzTmFtZWRJdGVtKHByb3BlcnR5TmFtZVRvQXRvbWljU3RyaW5nKHByb3Bl
cnR5TmFtZSkpOworfQorCitKU1ZhbHVlIEpTSFRNTE9wdGlvbnNDb2xsZWN0aW9uOjpuYW1lR2V0
dGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgUHJvcGVydHlOYW1lIHByb3Bl
cnR5TmFtZSkKK3sKKyAgICBKU0hUTUxPcHRpb25zQ29sbGVjdGlvbiogdGhpc09iaiA9IGpzQ2Fz
dDxKU0hUTUxPcHRpb25zQ29sbGVjdGlvbio+KGFzT2JqZWN0KHNsb3RCYXNlKSk7CisgICAgcmV0
dXJuIGdldE5hbWVkSXRlbXMoZXhlYywgdGhpc09iaiwgcHJvcGVydHlOYW1lKTsKK30KKworSlNW
YWx1ZSBKU0hUTUxPcHRpb25zQ29sbGVjdGlvbjo6bmFtZWRJdGVtKEV4ZWNTdGF0ZSogZXhlYykK
K3sKKyAgICByZXR1cm4gZ2V0TmFtZWRJdGVtcyhleGVjLCB0aGlzLCBJZGVudGlmaWVyKGV4ZWMs
IGV4ZWMtPmFyZ3VtZW50KDApLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSkpOworfQorCiBK
U1ZhbHVlIEpTSFRNTE9wdGlvbnNDb2xsZWN0aW9uOjpsZW5ndGgoRXhlY1N0YXRlKikgY29uc3QK
IHsKICAgICBIVE1MT3B0aW9uc0NvbGxlY3Rpb24qIGltcCA9IHN0YXRpY19jYXN0PEhUTUxPcHRp
b25zQ29sbGVjdGlvbio+KGltcGwoKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQkocmV2aXNpb24gMTMzNjkzKQorKysg
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0JKHdvcmtp
bmcgY29weSkKQEAgLTQwOCw3ICs0MDgsNyBAQCBzdWIgR2VuZXJhdGVHZXRPd25Qcm9wZXJ0eVNs
b3RCb2R5CiAKICAgICBteSBAZ2V0T3duUHJvcGVydHlTbG90SW1wbCA9ICgpOwogCi0gICAgaWYg
KCRpbnRlcmZhY2VOYW1lIGVxICJOYW1lZE5vZGVNYXAiIG9yICRpbnRlcmZhY2VOYW1lIGVxICJI
VE1MQ29sbGVjdGlvbiIgb3IgJGludGVyZmFjZU5hbWUgZXEgIkhUTUxBbGxDb2xsZWN0aW9uIiBv
ciAkaW50ZXJmYWNlTmFtZSBlcSAiSFRNTFByb3BlcnRpZXNDb2xsZWN0aW9uIikgeworICAgIGlm
ICgkaW50ZXJmYWNlTmFtZSBlcSAiTmFtZWROb2RlTWFwIiBvciAkaW50ZXJmYWNlTmFtZSA9fiAv
XkhUTUxcdypDb2xsZWN0aW9uJC8pIHsKICAgICAgICAgcHVzaChAZ2V0T3duUHJvcGVydHlTbG90
SW1wbCwgIiAgICAke25hbWVzcGFjZU1heWJlfUpTVmFsdWUgcHJvdG8gPSB0aGlzT2JqZWN0LT5w
cm90b3R5cGUoKTtcbiIpOwogICAgICAgICBwdXNoKEBnZXRPd25Qcm9wZXJ0eVNsb3RJbXBsLCAi
ICAgIGlmIChwcm90by5pc09iamVjdCgpICYmIGpzQ2FzdDwke25hbWVzcGFjZU1heWJlfUpTT2Jq
ZWN0Kj4oYXNPYmplY3QocHJvdG8pKS0+aGFzUHJvcGVydHkoZXhlYywgcHJvcGVydHlOYW1lKSlc
biIpOwogICAgICAgICBwdXNoKEBnZXRPd25Qcm9wZXJ0eVNsb3RJbXBsLCAiICAgICAgICByZXR1
cm4gZmFsc2U7XG5cbiIpOwpAQCAtNTAwLDcgKzUwMCw3IEBAIHN1YiBHZW5lcmF0ZUdldE93blBy
b3BlcnR5RGVzY3JpcHRvckJvZHkKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAg
IHJldHVybiBmYWxzZTtcbiIpOwogICAgIH0KICAgICAKLSAgICBpZiAoJGludGVyZmFjZU5hbWUg
ZXEgIk5hbWVkTm9kZU1hcCIgb3IgJGludGVyZmFjZU5hbWUgZXEgIkhUTUxDb2xsZWN0aW9uIiBv
ciAkaW50ZXJmYWNlTmFtZSBlcSAiSFRNTEFsbENvbGxlY3Rpb24iIG9yICRpbnRlcmZhY2VOYW1l
IGVxICJIVE1MUHJvcGVydGllc0NvbGxlY3Rpb24iKSB7CisgICAgaWYgKCRpbnRlcmZhY2VOYW1l
IGVxICJOYW1lZE5vZGVNYXAiIG9yICRpbnRlcmZhY2VOYW1lID1+IC9eSFRNTFx3KkNvbGxlY3Rp
b24kLykgewogICAgICAgICBwdXNoKEBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JJbXBsLCAiICAg
ICR7bmFtZXNwYWNlTWF5YmV9SlNWYWx1ZSBwcm90byA9IHRoaXNPYmplY3QtPnByb3RvdHlwZSgp
O1xuIik7CiAgICAgICAgIHB1c2goQGdldE93blByb3BlcnR5RGVzY3JpcHRvckltcGwsICIgICAg
aWYgKHByb3RvLmlzT2JqZWN0KCkgJiYganNDYXN0PCR7bmFtZXNwYWNlTWF5YmV9SlNPYmplY3Qq
Pihhc09iamVjdChwcm90bykpLT5oYXNQcm9wZXJ0eShleGVjLCBwcm9wZXJ0eU5hbWUpKVxuIik7
CiAgICAgICAgIHB1c2goQGdldE93blByb3BlcnR5RGVzY3JpcHRvckltcGwsICIgICAgICAgIHJl
dHVybiBmYWxzZTtcblxuIik7CkBAIC0yNDM0LDcgKzI0MzQsNyBAQCBzdWIgR2VuZXJhdGVJbXBs
ZW1lbnRhdGlvbgogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJuIHRv
SlMoZXhlYywgdGhpc09iai0+Z2xvYmFsT2JqZWN0KCksIHN0YXRpY19jYXN0PCRpbXBsQ2xhc3NO
YW1lKj4odGhpc09iai0+aW1wbCgpKS0+aXRlbShpbmRleCkpO1xuIik7CiAgICAgICAgIH0KICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ9XG5cbiIpOwotICAgICAgICBpZiAoJGludGVyZmFj
ZU5hbWUgZXEgIkhUTUxDb2xsZWN0aW9uIiBvciAkaW50ZXJmYWNlTmFtZSBlcSAiSFRNTEFsbENv
bGxlY3Rpb24iIG9yICRpbnRlcmZhY2VOYW1lIGVxICJSYWRpb05vZGVMaXN0IikgeworICAgICAg
ICBpZiAoJGludGVyZmFjZU5hbWUgPX4gL15IVE1MXHcqQ29sbGVjdGlvbiQvIG9yICRpbnRlcmZh
Y2VOYW1lIGVxICJSYWRpb05vZGVMaXN0IikgewogICAgICAgICAgICAgJGltcGxJbmNsdWRlc3si
SlNOb2RlLmgifSA9IDE7CiAgICAgICAgICAgICAkaW1wbEluY2x1ZGVzeyJOb2RlLmgifSA9IDE7
CiAgICAgICAgIH0KQEAgLTI0NTAsNyArMjQ1MCw3IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0
aW9uCiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICByZXR1cm4ganNOYU4oKTtc
biIpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1cm4gSlNWYWx1ZShyZXN1
bHQpO1xuIik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAifVxuXG4iKTsKLSAgICAgICAg
aWYgKCRpbnRlcmZhY2VOYW1lIGVxICJIVE1MQ29sbGVjdGlvbiIgb3IgJGludGVyZmFjZU5hbWUg
ZXEgIkhUTUxBbGxDb2xsZWN0aW9uIikgeworICAgICAgICBpZiAoJGludGVyZmFjZU5hbWUgPX4g
L15IVE1MXHcqQ29sbGVjdGlvbiQvKSB7CiAgICAgICAgICAgICAkaW1wbEluY2x1ZGVzeyJKU05v
ZGUuaCJ9ID0gMTsKICAgICAgICAgICAgICRpbXBsSW5jbHVkZXN7Ik5vZGUuaCJ9ID0gMTsKICAg
ICAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJh
dG9yVjgucG0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9D
b2RlR2VuZXJhdG9yVjgucG0JKHJldmlzaW9uIDEzMzY5MykKKysrIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCSh3b3JraW5nIGNvcHkpCkBAIC0yNDk0
LDEzICsyNDk0LDYgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb25OYW1lZFByb3BlcnR5Rwog
ICAgIG15ICRpbnRlcmZhY2VOYW1lID0gJGRhdGFOb2RlLT5uYW1lOwogICAgIG15ICRoYXNDdXN0
b21OYW1lZEdldHRlciA9ICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbU5h
bWVkR2V0dGVyIn0gfHwgJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tR2V0
T3duUHJvcGVydHlTbG90In07CiAKLSAgICAjIEZJWE1FOiBSZW1vdmUgaGFyZC1jb2RlZCBIVE1M
T3B0aW9uc0NvbGxlY3Rpb24gcmVmZXJlbmNlIGJ5IGNoYW5naW5nIEhUTUxPcHRpb25zQ29sbGVj
dGlvbiB0byBub3QgaW5oZXJpdAotICAgICMgZnJvbSBIVE1MQ29sbGVjdGlvbiBwZXIgVzNDIHNw
ZWMgKGh0dHA6Ly93d3cudzMub3JnL1RSLzIwMDMvUkVDLURPTS1MZXZlbC0yLUhUTUwtMjAwMzAx
MDkvaHRtbC5odG1sI0hUTUxPcHRpb25zQ29sbGVjdGlvbikuCi0gICAgaWYgKCRpbnRlcmZhY2VO
YW1lIGVxICJIVE1MT3B0aW9uc0NvbGxlY3Rpb24iKSB7Ci0gICAgICAgICRpbnRlcmZhY2VOYW1l
ID0gIkhUTUxDb2xsZWN0aW9uIjsKLSAgICAgICAgJGhhc0N1c3RvbU5hbWVkR2V0dGVyID0gMTsK
LSAgICB9Ci0KICAgICBpZiAoJGludGVyZmFjZU5hbWUgZXEgIkhUTUxBcHBsZXRFbGVtZW50IiB8
fCAkaW50ZXJmYWNlTmFtZSBlcSAiSFRNTEVtYmVkRWxlbWVudCIgfHwgJGludGVyZmFjZU5hbWUg
ZXEgIkhUTUxPYmplY3RFbGVtZW50IikgewogICAgICAgICAkaGFzQ3VzdG9tTmFtZWRHZXR0ZXIg
PSAxOwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhU
TUxBbGxDb2xsZWN0aW9uQ3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9jdXN0b20vVjhIVE1MQWxsQ29sbGVjdGlvbkN1c3RvbS5jcHAJKHJldmlzaW9u
IDEzMzY5MykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxBbGxD
b2xsZWN0aW9uQ3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTEsNiArNTEsOCBAQCBzdGF0
aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGdldE5hbWVkSXRlCiAgICAgaWYgKG5hbWVkSXRlbXMu
c2l6ZSgpID09IDEpCiAgICAgICAgIHJldHVybiB0b1Y4KG5hbWVkSXRlbXMuYXQoMCkucmVsZWFz
ZSgpLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOwogCisgICAgLy8gRklYTUU6IEhUTUw1IHNw
ZWNpZmljYXRpb24gc2F5cyB0aGlzIHNob3VsZCBiZSBhIEhUTUxDb2xsZWN0aW9uLgorICAgIC8v
IGh0dHA6Ly93d3cud2hhdHdnLm9yZy9zcGVjcy93ZWItYXBwcy9jdXJyZW50LXdvcmsvbXVsdGlw
YWdlL2NvbW1vbi1kb20taW50ZXJmYWNlcy5odG1sI2h0bWxhbGxjb2xsZWN0aW9uCiAgICAgcmV0
dXJuIHRvVjgoVjhOYW1lZE5vZGVzQ29sbGVjdGlvbjo6Y3JlYXRlKG5hbWVkSXRlbXMpLCBjcmVh
dGlvbkNvbnRleHQsIGlzb2xhdGUpOwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9jdXN0b20vVjhIVE1MQ29sbGVjdGlvbkN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTENvbGxlY3Rpb25DdXN0b20uY3Bw
CShyZXZpc2lvbiAxMzM2OTMpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20v
VjhIVE1MQ29sbGVjdGlvbkN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyLDMzICszMiwx
NSBAQAogI2luY2x1ZGUgIlY4SFRNTENvbGxlY3Rpb24uaCIKIAogI2luY2x1ZGUgIkhUTUxDb2xs
ZWN0aW9uLmgiCi0jaW5jbHVkZSAiUmFkaW9Ob2RlTGlzdC5oIgogI2luY2x1ZGUgIlY4QmluZGlu
Zy5oIgogI2luY2x1ZGUgIlY4SFRNTEFsbENvbGxlY3Rpb24uaCIKKyNpbmNsdWRlICJWOEhUTUxG
b3JtQ29udHJvbHNDb2xsZWN0aW9uLmgiCisjaW5jbHVkZSAiVjhIVE1MT3B0aW9uc0NvbGxlY3Rp
b24uaCIKICNpbmNsdWRlICJWOE5hbWVkTm9kZXNDb2xsZWN0aW9uLmgiCiAjaW5jbHVkZSAiVjhO
b2RlLmgiCi0jaW5jbHVkZSAiVjhOb2RlTGlzdC5oIgotI2luY2x1ZGUgIlY4UmFkaW9Ob2RlTGlz
dC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gZ2V0TmFtZWRJdGVtcyhIVE1MQ29sbGVjdGlvbiogY29sbGVjdGlvbiwgQXRvbWljU3RyaW5n
IG5hbWUsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0LCB2ODo6SXNvbGF0
ZSogaXNvbGF0ZSkKLXsKLSAgICBWZWN0b3I8UmVmUHRyPE5vZGU+ID4gbmFtZWRJdGVtczsKLSAg
ICBjb2xsZWN0aW9uLT5uYW1lZEl0ZW1zKG5hbWUsIG5hbWVkSXRlbXMpOwotCi0gICAgaWYgKCFu
YW1lZEl0ZW1zLnNpemUoKSkKLSAgICAgICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7Ci0KLSAgICBp
ZiAobmFtZWRJdGVtcy5zaXplKCkgPT0gMSkKLSAgICAgICAgcmV0dXJuIHRvVjgobmFtZWRJdGVt
cy5hdCgwKS5yZWxlYXNlKCksIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7Ci0KLSAgICBpZiAo
Y29sbGVjdGlvbi0+dHlwZSgpID09IEZvcm1Db250cm9scykKLSAgICAgICAgcmV0dXJuIHRvVjgo
Y29sbGVjdGlvbi0+YmFzZSgpLT5yYWRpb05vZGVMaXN0KG5hbWUpLmdldCgpLCBjcmVhdGlvbkNv
bnRleHQsIGlzb2xhdGUpOwotCi0gICAgcmV0dXJuIHRvVjgoVjhOYW1lZE5vZGVzQ29sbGVjdGlv
bjo6Y3JlYXRlKG5hbWVkSXRlbXMpLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOwotfQotCiB2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhIVE1MQ29sbGVjdGlvbjo6bmFtZWRQcm9wZXJ0eUdldHRl
cih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5m
bykKIHsKICAgICBJTkNfU1RBVFMoIkRPTS5IVE1MQ29sbGVjdGlvbi5OYW1lZFByb3BlcnR5R2V0
dGVyIik7CkBAIC02OSwxOSArNTEsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhIVE1MQ29s
bGVjdGlvbjo6CiAgICAgICAgIHJldHVybiB2OFVuZGVmaW5lZCgpOwogCiAgICAgSFRNTENvbGxl
Y3Rpb24qIGltcCA9IFY4SFRNTENvbGxlY3Rpb246OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwot
ICAgIHJldHVybiBnZXROYW1lZEl0ZW1zKGltcCwgdG9XZWJDb3JlQXRvbWljU3RyaW5nKG5hbWUp
LCBpbmZvLkhvbGRlcigpLCBpbmZvLkdldElzb2xhdGUoKSk7Ci19Ci0KLXY4OjpIYW5kbGU8djg6
OlZhbHVlPiBWOEhUTUxDb2xsZWN0aW9uOjpuYW1lZEl0ZW1DYWxsYmFjayhjb25zdCB2ODo6QXJn
dW1lbnRzJiBhcmdzKQotewotICAgIElOQ19TVEFUUygiRE9NLkhUTUxDb2xsZWN0aW9uLm5hbWVk
SXRlbSgpIik7Ci0gICAgSFRNTENvbGxlY3Rpb24qIGltcCA9IFY4SFRNTENvbGxlY3Rpb246OnRv
TmF0aXZlKGFyZ3MuSG9sZGVyKCkpOwotICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiByZXN1bHQg
PSBnZXROYW1lZEl0ZW1zKGltcCwgdG9XZWJDb3JlU3RyaW5nKGFyZ3NbMF0pLCBhcmdzLkhvbGRl
cigpLCBhcmdzLkdldElzb2xhdGUoKSk7Ci0KLSAgICBpZiAocmVzdWx0LklzRW1wdHkoKSkKLSAg
ICAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKLQotICAgIHJldHVybiByZXN1bHQ7CisgICAg
cmV0dXJuIHRvVjgoaW1wLT5uYW1lZEl0ZW0odG9XZWJDb3JlQXRvbWljU3RyaW5nKG5hbWUpKSwg
aW5mby5Ib2xkZXIoKSwgaW5mby5HZXRJc29sYXRlKCkpOwogfQogCiB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gdG9WOChIVE1MQ29sbGVjdGlvbiogaW1wbCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBj
cmVhdGlvbkNvbnRleHQsIHY4OjpJc29sYXRlKiBpc29sYXRlKQpAQCAtODksOCArNTksMTcgQEAg
djg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjgoSFRNTENvbGxlY3RpbwogICAgIGlmICghaW1wbCkK
ICAgICAgICAgcmV0dXJuIHY4TnVsbFdpdGhDaGVjayhpc29sYXRlKTsKIAotICAgIGlmIChpbXBs
LT50eXBlKCkgPT0gRG9jQWxsKQorICAgIHN3aXRjaCAoaW1wbC0+dHlwZSgpKSB7CisgICAgY2Fz
ZSBGb3JtQ29udHJvbHM6CisgICAgICAgIHJldHVybiB0b1Y4KHN0YXRpY19jYXN0PEhUTUxGb3Jt
Q29udHJvbHNDb2xsZWN0aW9uKj4oaW1wbCksIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7Cisg
ICAgY2FzZSBTZWxlY3RPcHRpb25zOgorICAgICAgICByZXR1cm4gdG9WOChzdGF0aWNfY2FzdDxI
VE1MT3B0aW9uc0NvbGxlY3Rpb24qPihpbXBsKSwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsK
KyAgICBjYXNlIERvY0FsbDoKICAgICAgICAgcmV0dXJuIHRvVjgoc3RhdGljX2Nhc3Q8SFRNTEFs
bENvbGxlY3Rpb24qPihpbXBsKSwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsKKyAgICBkZWZh
dWx0OgorICAgICAgICBicmVhazsKKyAgICB9CisKICAgICByZXR1cm4gVjhIVE1MQ29sbGVjdGlv
bjo6d3JhcChpbXBsLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOwogfQogCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlv
bkN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4SFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb25DdXN0b20uY3BwCShyZXZpc2lvbiAwKQor
KysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTEZvcm1Db250cm9sc0Nv
bGxlY3Rpb25DdXN0b20uY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDgxIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICogCisgKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlz
dHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3Ig
dGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKiAKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMK
KyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBP
UiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlY4SFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uaCIK
KworI2luY2x1ZGUgIkhUTUxDb2xsZWN0aW9uLmgiCisjaW5jbHVkZSAiUmFkaW9Ob2RlTGlzdC5o
IgorI2luY2x1ZGUgIlY4QmluZGluZy5oIgorI2luY2x1ZGUgIlY4Tm9kZS5oIgorI2luY2x1ZGUg
IlY4UmFkaW9Ob2RlTGlzdC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0YXRpYyB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gZ2V0TmFtZWRJdGVtcyhIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlv
biogY29sbGVjdGlvbiwgQXRvbWljU3RyaW5nIG5hbWUsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4g
Y3JlYXRpb25Db250ZXh0LCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKK3sKKyAgICBWZWN0b3I8UmVm
UHRyPE5vZGU+ID4gbmFtZWRJdGVtczsKKyAgICBjb2xsZWN0aW9uLT5uYW1lZEl0ZW1zKG5hbWUs
IG5hbWVkSXRlbXMpOworCisgICAgaWYgKCFuYW1lZEl0ZW1zLnNpemUoKSkKKyAgICAgICAgcmV0
dXJuIHY4VW5kZWZpbmVkKCk7CisKKyAgICBpZiAobmFtZWRJdGVtcy5zaXplKCkgPT0gMSkKKyAg
ICAgICAgcmV0dXJuIHRvVjgobmFtZWRJdGVtcy5hdCgwKS5yZWxlYXNlKCksIGNyZWF0aW9uQ29u
dGV4dCwgaXNvbGF0ZSk7CisKKyAgICByZXR1cm4gdG9WOChjb2xsZWN0aW9uLT5iYXNlKCktPnJh
ZGlvTm9kZUxpc3QobmFtZSkuZ2V0KCksIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7Cit9CisK
K3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uOjpuYW1l
ZFByb3BlcnR5R2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNj
ZXNzb3JJbmZvJiBpbmZvKQoreworICAgIElOQ19TVEFUUygiRE9NLkhUTUxDb2xsZWN0aW9uLk5h
bWVkUHJvcGVydHlHZXR0ZXIiKTsKKworICAgIGlmICghaW5mby5Ib2xkZXIoKS0+R2V0UmVhbE5h
bWVkUHJvcGVydHlJblByb3RvdHlwZUNoYWluKG5hbWUpLklzRW1wdHkoKSkKKyAgICAgICAgcmV0
dXJuIHY4VW5kZWZpbmVkKCk7CisgICAgaWYgKGluZm8uSG9sZGVyKCktPkhhc1JlYWxOYW1lZENh
bGxiYWNrUHJvcGVydHkobmFtZSkpCisgICAgICAgIHJldHVybiB2OFVuZGVmaW5lZCgpOworCisg
ICAgSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24qIGltcCA9IFY4SFRNTEZvcm1Db250cm9sc0Nv
bGxlY3Rpb246OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOworICAgIHJldHVybiBnZXROYW1lZEl0
ZW1zKGltcCwgdG9XZWJDb3JlQXRvbWljU3RyaW5nKG5hbWUpLCBpbmZvLkhvbGRlcigpLCBpbmZv
LkdldElzb2xhdGUoKSk7Cit9CisKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEhUTUxGb3JtQ29u
dHJvbHNDb2xsZWN0aW9uOjpuYW1lZEl0ZW1DYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBh
cmdzKQoreworICAgIElOQ19TVEFUUygiRE9NLkhUTUxDb2xsZWN0aW9uLm5hbWVkSXRlbSgpIik7
CisgICAgSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24qIGltcCA9IFY4SFRNTEZvcm1Db250cm9s
c0NvbGxlY3Rpb246OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOworICAgIHY4OjpIYW5kbGU8djg6
OlZhbHVlPiByZXN1bHQgPSBnZXROYW1lZEl0ZW1zKGltcCwgdG9XZWJDb3JlU3RyaW5nKGFyZ3Nb
MF0pLCBhcmdzLkhvbGRlcigpLCBhcmdzLkdldElzb2xhdGUoKSk7CisKKyAgICBpZiAocmVzdWx0
LklzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoYXJncy5HZXRJc29sYXRl
KCkpOworCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJ
bmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTE9wdGlvbnNDb2xs
ZWN0aW9uQ3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9jdXN0b20vVjhIVE1MT3B0aW9uc0NvbGxlY3Rpb25DdXN0b20uY3BwCShyZXZpc2lvbiAxMzM2
OTMpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MT3B0aW9uc0Nv
bGxlY3Rpb25DdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOSwxMCArMzksNTEgQEAKICNp
bmNsdWRlICJWOENvbGxlY3Rpb24uaCIKICNpbmNsdWRlICJWOEhUTUxPcHRpb25FbGVtZW50Lmgi
CiAjaW5jbHVkZSAiVjhIVE1MU2VsZWN0RWxlbWVudEN1c3RvbS5oIgorI2luY2x1ZGUgIlY4TmFt
ZWROb2Rlc0NvbGxlY3Rpb24uaCIKICNpbmNsdWRlICJWOE5vZGUuaCIKKyNpbmNsdWRlICJWOE5v
ZGVMaXN0LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorc3RhdGljIHY4OjpIYW5kbGU8djg6
OlZhbHVlPiBnZXROYW1lZEl0ZW1zKEhUTUxPcHRpb25zQ29sbGVjdGlvbiogY29sbGVjdGlvbiwg
QXRvbWljU3RyaW5nIG5hbWUsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0
LCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKK3sKKyAgICBWZWN0b3I8UmVmUHRyPE5vZGU+ID4gbmFt
ZWRJdGVtczsKKyAgICBjb2xsZWN0aW9uLT5uYW1lZEl0ZW1zKG5hbWUsIG5hbWVkSXRlbXMpOwor
CisgICAgaWYgKCFuYW1lZEl0ZW1zLnNpemUoKSkKKyAgICAgICAgcmV0dXJuIHY4VW5kZWZpbmVk
KCk7CisKKyAgICBpZiAobmFtZWRJdGVtcy5zaXplKCkgPT0gMSkKKyAgICAgICAgcmV0dXJuIHRv
VjgobmFtZWRJdGVtcy5hdCgwKS5yZWxlYXNlKCksIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7
CisKKyAgICByZXR1cm4gdG9WOChWOE5hbWVkTm9kZXNDb2xsZWN0aW9uOjpjcmVhdGUobmFtZWRJ
dGVtcyksIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7Cit9CisKK3Y4OjpIYW5kbGU8djg6OlZh
bHVlPiBWOEhUTUxPcHRpb25zQ29sbGVjdGlvbjo6bmFtZWRQcm9wZXJ0eUdldHRlcih2ODo6TG9j
YWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAg
ICBJTkNfU1RBVFMoIkRPTS5IVE1MQ29sbGVjdGlvbi5OYW1lZFByb3BlcnR5R2V0dGVyIik7CisK
KyAgICBpZiAoIWluZm8uSG9sZGVyKCktPkdldFJlYWxOYW1lZFByb3BlcnR5SW5Qcm90b3R5cGVD
aGFpbihuYW1lKS5Jc0VtcHR5KCkpCisgICAgICAgIHJldHVybiB2OFVuZGVmaW5lZCgpOworICAg
IGlmIChpbmZvLkhvbGRlcigpLT5IYXNSZWFsTmFtZWRDYWxsYmFja1Byb3BlcnR5KG5hbWUpKQor
ICAgICAgICByZXR1cm4gdjhVbmRlZmluZWQoKTsKKworICAgIEhUTUxPcHRpb25zQ29sbGVjdGlv
biogaW1wID0gVjhIVE1MT3B0aW9uc0NvbGxlY3Rpb246OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkp
OworICAgIHJldHVybiBnZXROYW1lZEl0ZW1zKGltcCwgdG9XZWJDb3JlQXRvbWljU3RyaW5nKG5h
bWUpLCBpbmZvLkhvbGRlcigpLCBpbmZvLkdldElzb2xhdGUoKSk7Cit9CisKK3Y4OjpIYW5kbGU8
djg6OlZhbHVlPiBWOEhUTUxPcHRpb25zQ29sbGVjdGlvbjo6bmFtZWRJdGVtQ2FsbGJhY2soY29u
c3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3sKKyAgICBJTkNfU1RBVFMoIkRPTS5IVE1MQ29sbGVj
dGlvbi5uYW1lZEl0ZW0oKSIpOworICAgIEhUTUxPcHRpb25zQ29sbGVjdGlvbiogaW1wID0gVjhI
VE1MT3B0aW9uc0NvbGxlY3Rpb246OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOworICAgIHY4OjpI
YW5kbGU8djg6OlZhbHVlPiByZXN1bHQgPSBnZXROYW1lZEl0ZW1zKGltcCwgdG9XZWJDb3JlU3Ry
aW5nKGFyZ3NbMF0pLCBhcmdzLkhvbGRlcigpLCBhcmdzLkdldElzb2xhdGUoKSk7CisKKyAgICBp
ZiAocmVzdWx0LklzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoYXJncy5H
ZXRJc29sYXRlKCkpOworCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwogdjg6OkhhbmRsZTx2ODo6
VmFsdWU+IFY4SFRNTE9wdGlvbnNDb2xsZWN0aW9uOjpyZW1vdmVDYWxsYmFjayhjb25zdCB2ODo6
QXJndW1lbnRzJiBhcmdzKQogewogICAgIElOQ19TVEFUUygiRE9NLkhUTUxPcHRpb25zQ29sbGVj
dGlvbi5yZW1vdmUoKSIpOwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCShyZXZpc2lvbiAx
MzM2OTMpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC00NDUwLDExICs0NDUwLDYgQEAgUGFzc1JlZlB0cjxIVE1MQ29sbGVjdGlvbj4gRG9jdW1l
bnQ6OnBsdQogICAgIHJldHVybiBjYWNoZWRDb2xsZWN0aW9uKERvY0VtYmVkcyk7CiB9CiAKLVBh
c3NSZWZQdHI8SFRNTENvbGxlY3Rpb24+IERvY3VtZW50OjpvYmplY3RzKCkKLXsKLSAgICByZXR1
cm4gY2FjaGVkQ29sbGVjdGlvbihEb2NPYmplY3RzKTsKLX0KLQogUGFzc1JlZlB0cjxIVE1MQ29s
bGVjdGlvbj4gRG9jdW1lbnQ6OnNjcmlwdHMoKQogewogICAgIHJldHVybiBjYWNoZWRDb2xsZWN0
aW9uKERvY1NjcmlwdHMpOwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgJKHJldmlzaW9uIDEzMzY5
MykKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00
MzgsNyArNDM4LDYgQEAgcHVibGljOgogICAgIFBhc3NSZWZQdHI8SFRNTENvbGxlY3Rpb24+IGxp
bmtzKCk7CiAgICAgUGFzc1JlZlB0cjxIVE1MQ29sbGVjdGlvbj4gZm9ybXMoKTsKICAgICBQYXNz
UmVmUHRyPEhUTUxDb2xsZWN0aW9uPiBhbmNob3JzKCk7Ci0gICAgUGFzc1JlZlB0cjxIVE1MQ29s
bGVjdGlvbj4gb2JqZWN0cygpOwogICAgIFBhc3NSZWZQdHI8SFRNTENvbGxlY3Rpb24+IHNjcmlw
dHMoKTsKICAgICBQYXNzUmVmUHRyPEhUTUxDb2xsZWN0aW9uPiBhbGwoKTsKICAgICB2b2lkIHJl
bW92ZUNhY2hlZEhUTUxDb2xsZWN0aW9uKEhUTUxDb2xsZWN0aW9uKiwgQ29sbGVjdGlvblR5cGUp
OwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAkocmV2aXNpb24gMTMzNjkzKQorKysgU291cmNl
L1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Niw3ICs0Niw3IEBA
CiAjaW5jbHVkZSAiSFRNTENvbGxlY3Rpb24uaCIKICNpbmNsdWRlICJIVE1MRG9jdW1lbnQuaCIK
ICNpbmNsdWRlICJIVE1MRWxlbWVudC5oIgotI2luY2x1ZGUgIkhUTUxGb3JtQ29sbGVjdGlvbi5o
IgorI2luY2x1ZGUgIkhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmgiCiAjaW5jbHVkZSAiSFRN
TEZyYW1lT3duZXJFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTExhYmVsRWxlbWVudC5oIgogI2lu
Y2x1ZGUgIkhUTUxOYW1lcy5oIgpAQCAtMjM0OCw3ICsyMzQ4LDcgQEAgUGFzc1JlZlB0cjxIVE1M
Q29sbGVjdGlvbj4gRWxlbWVudFJhcmVEYQogICAgICAgICBjb2xsZWN0aW9uID0gSFRNTE9wdGlv
bnNDb2xsZWN0aW9uOjpjcmVhdGUoZWxlbWVudCk7CiAgICAgfSBlbHNlIGlmICh0eXBlID09IEZv
cm1Db250cm9scykgewogICAgICAgICBBU1NFUlQoZWxlbWVudC0+aGFzVGFnTmFtZShmb3JtVGFn
KSB8fCBlbGVtZW50LT5oYXNUYWdOYW1lKGZpZWxkc2V0VGFnKSk7Ci0gICAgICAgIGNvbGxlY3Rp
b24gPSBIVE1MRm9ybUNvbGxlY3Rpb246OmNyZWF0ZShlbGVtZW50KTsKKyAgICAgICAgY29sbGVj
dGlvbiA9IEhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uOjpjcmVhdGUoZWxlbWVudCk7CiAjaWYg
RU5BQkxFKE1JQ1JPREFUQSkKICAgICB9IGVsc2UgaWYgKHR5cGUgPT0gSXRlbVByb3BlcnRpZXMp
IHsKICAgICAgICAgY29sbGVjdGlvbiA9IEhUTUxQcm9wZXJ0aWVzQ29sbGVjdGlvbjo6Y3JlYXRl
KGVsZW1lbnQpOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9Db2xsZWN0aW9uVHlwZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvQ29sbGVjdGlvblR5cGUuaAkocmV2aXNp
b24gMTMzNjkzKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9Db2xsZWN0aW9uVHlwZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMSw3ICszMSw2IEBAIGVudW0gQ29sbGVjdGlvblR5cGUgewogICAgIERv
Y0ltYWdlcywgICAgLy8gYWxsIDxpbWc+IGVsZW1lbnRzIGluIHRoZSBkb2N1bWVudAogICAgIERv
Y0FwcGxldHMsICAgLy8gYWxsIDxvYmplY3Q+IGFuZCA8YXBwbGV0PiBlbGVtZW50cwogICAgIERv
Y0VtYmVkcywgICAgLy8gYWxsIDxlbWJlZD4gZWxlbWVudHMKLSAgICBEb2NPYmplY3RzLCAgIC8v
IGFsbCA8b2JqZWN0PiBlbGVtZW50cwogICAgIERvY0Zvcm1zLCAgICAgLy8gYWxsIDxmb3JtPiBl
bGVtZW50cwogICAgIERvY0xpbmtzLCAgICAgLy8gYWxsIDxhPiBfYW5kXyA8YXJlYT4gZWxlbWVu
dHMgd2l0aCBhIHZhbHVlIGZvciBocmVmCiAgICAgRG9jQW5jaG9ycywgICAvLyBhbGwgPGE+IGVs
ZW1lbnRzIHdpdGggYSB2YWx1ZSBmb3IgbmFtZQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MQ29sbGVjdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
Q29sbGVjdGlvbi5jcHAJKHJldmlzaW9uIDEzMzY5MykKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTENvbGxlY3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MSw3ICs1MSw2IEBAIHN0YXRp
YyBib29sIHNob3VsZE9ubHlJbmNsdWRlRGlyZWN0Q2hpbGQKICAgICBjYXNlIERvY0Zvcm1zOgog
ICAgIGNhc2UgRG9jSW1hZ2VzOgogICAgIGNhc2UgRG9jTGlua3M6Ci0gICAgY2FzZSBEb2NPYmpl
Y3RzOgogICAgIGNhc2UgRG9jU2NyaXB0czoKICAgICBjYXNlIERvY3VtZW50TmFtZWRJdGVtczoK
ICAgICBjYXNlIE1hcEFyZWFzOgpAQCAtODMsNyArODIsNiBAQCBzdGF0aWMgTm9kZUxpc3RSb290
VHlwZSByb290VHlwZUZyb21Db2xsCiAgICAgY2FzZSBEb2NJbWFnZXM6CiAgICAgY2FzZSBEb2NB
cHBsZXRzOgogICAgIGNhc2UgRG9jRW1iZWRzOgotICAgIGNhc2UgRG9jT2JqZWN0czoKICAgICBj
YXNlIERvY0Zvcm1zOgogICAgIGNhc2UgRG9jTGlua3M6CiAgICAgY2FzZSBEb2NBbmNob3JzOgpA
QCAtMTE3LDcgKzExNSw2IEBAIHN0YXRpYyBOb2RlTGlzdEludmFsaWRhdGlvblR5cGUgaW52YWxp
ZGEKICAgICBzd2l0Y2ggKHR5cGUpIHsKICAgICBjYXNlIERvY0ltYWdlczoKICAgICBjYXNlIERv
Y0VtYmVkczoKLSAgICBjYXNlIERvY09iamVjdHM6CiAgICAgY2FzZSBEb2NGb3JtczoKICAgICBj
YXNlIERvY0FuY2hvcnM6IC8vIERlcGVuZHMgb24gbmFtZSBhdHRyaWJ1dGUuCiAgICAgY2FzZSBE
b2NTY3JpcHRzOgpAQCAtMjE0LDggKzIxMSw2IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBpc0FjY2Vw
dGFibGVFbGVtZW50KEMKICAgICAgICAgcmV0dXJuIGVsZW1lbnQtPmhhc0xvY2FsTmFtZShhcHBs
ZXRUYWcpIHx8IChlbGVtZW50LT5oYXNMb2NhbE5hbWUob2JqZWN0VGFnKSAmJiBzdGF0aWNfY2Fz
dDxIVE1MT2JqZWN0RWxlbWVudCo+KGVsZW1lbnQpLT5jb250YWluc0phdmFBcHBsZXQoKSk7CiAg
ICAgY2FzZSBEb2NFbWJlZHM6CiAgICAgICAgIHJldHVybiBlbGVtZW50LT5oYXNMb2NhbE5hbWUo
ZW1iZWRUYWcpOwotICAgIGNhc2UgRG9jT2JqZWN0czoKLSAgICAgICAgcmV0dXJuIGVsZW1lbnQt
Pmhhc0xvY2FsTmFtZShvYmplY3RUYWcpOwogICAgIGNhc2UgRG9jTGlua3M6CiAgICAgICAgIHJl
dHVybiAoZWxlbWVudC0+aGFzTG9jYWxOYW1lKGFUYWcpIHx8IGVsZW1lbnQtPmhhc0xvY2FsTmFt
ZShhcmVhVGFnKSkgJiYgZWxlbWVudC0+ZmFzdEhhc0F0dHJpYnV0ZShocmVmQXR0cik7CiAgICAg
Y2FzZSBEb2NBbmNob3JzOgpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ29sbGVjdGlv
bi5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ29sbGVjdGlvbi5p
ZGwJKHJldmlzaW9uIDEzMzY5MykKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENvbGxlY3Rp
b24uaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw3ICsyOCw3IEBACiBdIGludGVyZmFjZSBIVE1M
Q29sbGVjdGlvbiB7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgbGVuZ3Ro
OwogICAgIE5vZGUgaXRlbShpbiBbT3B0aW9uYWw9RGVmYXVsdElzVW5kZWZpbmVkXSB1bnNpZ25l
ZCBsb25nIGluZGV4KTsKLSAgICBbQ3VzdG9tXSBOb2RlIG5hbWVkSXRlbShpbiBbT3B0aW9uYWw9
RGVmYXVsdElzVW5kZWZpbmVkXSBET01TdHJpbmcgbmFtZSk7CisgICAgTm9kZSBuYW1lZEl0ZW0o
aW4gW09wdGlvbmFsPURlZmF1bHRJc1VuZGVmaW5lZF0gRE9NU3RyaW5nIG5hbWUpOwogCiAjaWYg
ZGVmaW5lZChMQU5HVUFHRV9PQkpFQ1RJVkVfQykgJiYgTEFOR1VBR0VfT0JKRUNUSVZFX0MKICAg
ICBOb2RlTGlzdCB0YWdzKGluIFtPcHRpb25hbD1EZWZhdWx0SXNVbmRlZmluZWRdIERPTVN0cmlu
ZyBuYW1lKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZpZWxkU2V0RWxlbWVudC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRmllbGRTZXRFbGVtZW50
LmNwcAkocmV2aXNpb24gMTMzNjkzKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRmllbGRT
ZXRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjUsNyArMjUsNyBAQAogI2luY2x1ZGUg
ImNvbmZpZy5oIgogI2luY2x1ZGUgIkhUTUxGaWVsZFNldEVsZW1lbnQuaCIKIAotI2luY2x1ZGUg
IkhUTUxGb3JtQ29sbGVjdGlvbi5oIgorI2luY2x1ZGUgIkhUTUxDb2xsZWN0aW9uLmgiCiAjaW5j
bHVkZSAiSFRNTExlZ2VuZEVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNs
dWRlICJIVE1MT2JqZWN0RWxlbWVudC5oIgpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
RmllbGRTZXRFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
RmllbGRTZXRFbGVtZW50LmgJKHJldmlzaW9uIDEzMzY5MykKKysrIFNvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEZpZWxkU2V0RWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw3ICszMSw2IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRm9ybUFzc29jaWF0ZWRFbGVtZW50OwogY2xh
c3MgSFRNTENvbGxlY3Rpb247Ci1jbGFzcyBIVE1MRm9ybUNvbGxlY3Rpb247CiAKIGNsYXNzIEhU
TUxGaWVsZFNldEVsZW1lbnQgOiBwdWJsaWMgSFRNTEZvcm1Db250cm9sRWxlbWVudCB7CiBwdWJs
aWM6CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29sbGVjdGlvbi5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbGxlY3Rpb24uY3BwCShy
ZXZpc2lvbiAxMzM2OTMpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29sbGVjdGlv
bi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsMTYzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDE5OTkgTGFycyBLbm9sbCAoa25vbGxAa2RlLm9yZykKLSAqICAgICAgICAgICAoQykgMTk5
OSBBbnR0aSBLb2l2aXN0byAoa29pdmlzdG9Aa2RlLm9yZykKLSAqIENvcHlyaWdodCAoQykgMjAw
MywgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAxMCwgMjAxMSwgMjAxMiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7
IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0
ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYXMgcHVi
bGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogdmVyc2lv
biAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9u
LgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0
IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2
ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhh
dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlCi0gKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElC
LiAgSWYgbm90LCB3cml0ZSB0bwotICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5j
LiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAqIEJvc3RvbiwgTUEgMDIxMTAt
MTMwMSwgVVNBLgotICoKLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiSFRN
TEZvcm1Db2xsZWN0aW9uLmgiCi0KLSNpbmNsdWRlICJIVE1MRmllbGRTZXRFbGVtZW50LmgiCi0j
aW5jbHVkZSAiSFRNTEZvcm1Db250cm9sRWxlbWVudC5oIgotI2luY2x1ZGUgIkhUTUxGb3JtRWxl
bWVudC5oIgotI2luY2x1ZGUgIkhUTUxJbWFnZUVsZW1lbnQuaCIKLSNpbmNsdWRlICJIVE1MTmFt
ZXMuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi11c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVz
OwotCi0vLyBTaW5jZSB0aGUgY29sbGVjdGlvbnMgYXJlIHRvIGJlICJsaXZlIiwgd2UgaGF2ZSB0
byBkbyB0aGUKLS8vIGNhbGN1bGF0aW9uIGV2ZXJ5IHRpbWUgaWYgYW55dGhpbmcgaGFzIGNoYW5n
ZWQuCi0KLUhUTUxGb3JtQ29sbGVjdGlvbjo6SFRNTEZvcm1Db2xsZWN0aW9uKEVsZW1lbnQqIGJh
c2UpCi0gICAgOiBIVE1MQ29sbGVjdGlvbihiYXNlLCBGb3JtQ29udHJvbHMsIE92ZXJyaWRlc0l0
ZW1BZnRlcikKLXsKLSAgICBBU1NFUlQoYmFzZS0+aGFzVGFnTmFtZShmb3JtVGFnKSB8fCBiYXNl
LT5oYXNUYWdOYW1lKGZpZWxkc2V0VGFnKSk7Ci19Ci0KLVBhc3NSZWZQdHI8SFRNTEZvcm1Db2xs
ZWN0aW9uPiBIVE1MRm9ybUNvbGxlY3Rpb246OmNyZWF0ZShFbGVtZW50KiBiYXNlKQotewotICAg
IHJldHVybiBhZG9wdFJlZihuZXcgSFRNTEZvcm1Db2xsZWN0aW9uKGJhc2UpKTsKLX0KLQotSFRN
TEZvcm1Db2xsZWN0aW9uOjp+SFRNTEZvcm1Db2xsZWN0aW9uKCkKLXsKLX0KLQotY29uc3QgVmVj
dG9yPEZvcm1Bc3NvY2lhdGVkRWxlbWVudCo+JiBIVE1MRm9ybUNvbGxlY3Rpb246OmZvcm1Db250
cm9sRWxlbWVudHMoKSBjb25zdAotewotICAgIEFTU0VSVChiYXNlKCkpOwotICAgIEFTU0VSVChi
YXNlKCktPmhhc1RhZ05hbWUoZm9ybVRhZykgfHwgYmFzZSgpLT5oYXNUYWdOYW1lKGZpZWxkc2V0
VGFnKSk7Ci0gICAgaWYgKGJhc2UoKS0+aGFzVGFnTmFtZShmb3JtVGFnKSkKLSAgICAgICAgcmV0
dXJuIHN0YXRpY19jYXN0PEhUTUxGb3JtRWxlbWVudCo+KGJhc2UoKSktPmFzc29jaWF0ZWRFbGVt
ZW50cygpOwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxIVE1MRmllbGRTZXRFbGVtZW50Kj4oYmFz
ZSgpKS0+YXNzb2NpYXRlZEVsZW1lbnRzKCk7Ci19Ci0KLWNvbnN0IFZlY3RvcjxIVE1MSW1hZ2VF
bGVtZW50Kj4mIEhUTUxGb3JtQ29sbGVjdGlvbjo6Zm9ybUltYWdlRWxlbWVudHMoKSBjb25zdAot
ewotICAgIEFTU0VSVChiYXNlKCkpOwotICAgIEFTU0VSVChiYXNlKCktPmhhc1RhZ05hbWUoZm9y
bVRhZykpOwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxIVE1MRm9ybUVsZW1lbnQqPihiYXNlKCkp
LT5pbWFnZUVsZW1lbnRzKCk7Ci19Ci0KLUVsZW1lbnQqIEhUTUxGb3JtQ29sbGVjdGlvbjo6dmly
dHVhbEl0ZW1BZnRlcih1bnNpZ25lZCYgb2Zmc2V0LCBFbGVtZW50KiBwcmV2aW91c0l0ZW0pIGNv
bnN0Ci17Ci0gICAgY29uc3QgVmVjdG9yPEZvcm1Bc3NvY2lhdGVkRWxlbWVudCo+JiBlbGVtZW50
c0FycmF5ID0gZm9ybUNvbnRyb2xFbGVtZW50cygpOwotICAgIGlmIChwcmV2aW91c0l0ZW0pCi0g
ICAgICAgIG9mZnNldCsrOwotICAgIHdoaWxlIChvZmZzZXQgPCBlbGVtZW50c0FycmF5LnNpemUo
KSkgewotICAgICAgICBGb3JtQXNzb2NpYXRlZEVsZW1lbnQqIGVsZW1lbnQgPSBlbGVtZW50c0Fy
cmF5W29mZnNldF07Ci0gICAgICAgIGlmIChlbGVtZW50LT5pc0VudW1lcmF0YWJsZSgpKQotICAg
ICAgICAgICAgcmV0dXJuIHRvSFRNTEVsZW1lbnQoZWxlbWVudCk7Ci0gICAgICAgIG9mZnNldCsr
OwotICAgIH0KLSAgICByZXR1cm4gMDsKLX0KLQotc3RhdGljIEhUTUxFbGVtZW50KiBmaXJzdE5h
bWVkSXRlbShjb25zdCBWZWN0b3I8Rm9ybUFzc29jaWF0ZWRFbGVtZW50Kj4mIGVsZW1lbnRzQXJy
YXksCi0gICAgY29uc3QgVmVjdG9yPEhUTUxJbWFnZUVsZW1lbnQqPiogaW1hZ2VFbGVtZW50c0Fy
cmF5LCBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSwgY29uc3QgU3RyaW5nJiBuYW1lKQot
ewotICAgIEFTU0VSVChhdHRyTmFtZSA9PSBpZEF0dHIgfHwgYXR0ck5hbWUgPT0gbmFtZUF0dHIp
OwotCi0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGVsZW1lbnRzQXJyYXkuc2l6ZSgpOyAr
K2kpIHsKLSAgICAgICAgSFRNTEVsZW1lbnQqIGVsZW1lbnQgPSB0b0hUTUxFbGVtZW50KGVsZW1l
bnRzQXJyYXlbaV0pOwotICAgICAgICBpZiAoZWxlbWVudHNBcnJheVtpXS0+aXNFbnVtZXJhdGFi
bGUoKSAmJiBlbGVtZW50LT5mYXN0R2V0QXR0cmlidXRlKGF0dHJOYW1lKSA9PSBuYW1lKQotICAg
ICAgICAgICAgcmV0dXJuIGVsZW1lbnQ7Ci0gICAgfQotCi0gICAgaWYgKCFpbWFnZUVsZW1lbnRz
QXJyYXkpCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IGltYWdlRWxlbWVudHNBcnJheS0+c2l6ZSgpOyArK2kpIHsKLSAgICAgICAgSFRNTEltYWdlRWxl
bWVudCogZWxlbWVudCA9ICgqaW1hZ2VFbGVtZW50c0FycmF5KVtpXTsKLSAgICAgICAgaWYgKGVs
ZW1lbnQtPmZhc3RHZXRBdHRyaWJ1dGUoYXR0ck5hbWUpID09IG5hbWUpCi0gICAgICAgICAgICBy
ZXR1cm4gZWxlbWVudDsKLSAgICB9Ci0KLSAgICByZXR1cm4gMDsKLX0KLQotTm9kZSogSFRNTEZv
cm1Db2xsZWN0aW9uOjpuYW1lZEl0ZW0oY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKSBjb25zdAot
ewotICAgIC8vIGh0dHA6Ly9tc2RuLm1pY3Jvc29mdC5jb20vd29ya3Nob3AvYXV0aG9yL2RodG1s
L3JlZmVyZW5jZS9tZXRob2RzL25hbWVkaXRlbS5hc3AKLSAgICAvLyBUaGlzIG1ldGhvZCBmaXJz
dCBzZWFyY2hlcyBmb3IgYW4gb2JqZWN0IHdpdGggYSBtYXRjaGluZyBpZAotICAgIC8vIGF0dHJp
YnV0ZS4gSWYgYSBtYXRjaCBpcyBub3QgZm91bmQsIHRoZSBtZXRob2QgdGhlbiBzZWFyY2hlcyBm
b3IgYW4KLSAgICAvLyBvYmplY3Qgd2l0aCBhIG1hdGNoaW5nIG5hbWUgYXR0cmlidXRlLCBidXQg
b25seSBvbiB0aG9zZSBlbGVtZW50cwotICAgIC8vIHRoYXQgYXJlIGFsbG93ZWQgYSBuYW1lIGF0
dHJpYnV0ZS4KLSAgICBjb25zdCBWZWN0b3I8SFRNTEltYWdlRWxlbWVudCo+KiBpbWFnZXNFbGVt
ZW50cyA9IGJhc2UoKS0+aGFzVGFnTmFtZShmaWVsZHNldFRhZykgPyAwIDogJmZvcm1JbWFnZUVs
ZW1lbnRzKCk7Ci0gICAgaWYgKEhUTUxFbGVtZW50KiBpdGVtID0gZmlyc3ROYW1lZEl0ZW0oZm9y
bUNvbnRyb2xFbGVtZW50cygpLCBpbWFnZXNFbGVtZW50cywgaWRBdHRyLCBuYW1lKSkKLSAgICAg
ICAgcmV0dXJuIGl0ZW07Ci0KLSAgICByZXR1cm4gZmlyc3ROYW1lZEl0ZW0oZm9ybUNvbnRyb2xF
bGVtZW50cygpLCBpbWFnZXNFbGVtZW50cywgbmFtZUF0dHIsIG5hbWUpOwotfQotCi12b2lkIEhU
TUxGb3JtQ29sbGVjdGlvbjo6dXBkYXRlTmFtZUNhY2hlKCkgY29uc3QKLXsKLSAgICBpZiAoaGFz
TmFtZUNhY2hlKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIEhhc2hTZXQ8QXRvbWljU3RyaW5n
SW1wbCo+IGZvdW5kSW5wdXRFbGVtZW50czsKLQotICAgIGNvbnN0IFZlY3RvcjxGb3JtQXNzb2Np
YXRlZEVsZW1lbnQqPiYgZWxlbWVudHNBcnJheSA9IGZvcm1Db250cm9sRWxlbWVudHMoKTsKLQot
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBlbGVtZW50c0FycmF5LnNpemUoKTsgKytpKSB7
Ci0gICAgICAgIEZvcm1Bc3NvY2lhdGVkRWxlbWVudCogYXNzb2NpYXRlZEVsZW1lbnQgPSBlbGVt
ZW50c0FycmF5W2ldOwotICAgICAgICBpZiAoYXNzb2NpYXRlZEVsZW1lbnQtPmlzRW51bWVyYXRh
YmxlKCkpIHsKLSAgICAgICAgICAgIEhUTUxFbGVtZW50KiBlbGVtZW50ID0gdG9IVE1MRWxlbWVu
dChhc3NvY2lhdGVkRWxlbWVudCk7Ci0gICAgICAgICAgICBjb25zdCBBdG9taWNTdHJpbmcmIGlk
QXR0clZhbCA9IGVsZW1lbnQtPmdldElkQXR0cmlidXRlKCk7Ci0gICAgICAgICAgICBjb25zdCBB
dG9taWNTdHJpbmcmIG5hbWVBdHRyVmFsID0gZWxlbWVudC0+Z2V0TmFtZUF0dHJpYnV0ZSgpOwot
ICAgICAgICAgICAgaWYgKCFpZEF0dHJWYWwuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICAgICAg
YXBwZW5kSWRDYWNoZShpZEF0dHJWYWwsIGVsZW1lbnQpOwotICAgICAgICAgICAgICAgIGZvdW5k
SW5wdXRFbGVtZW50cy5hZGQoaWRBdHRyVmFsLmltcGwoKSk7Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgICAgICBpZiAoIW5hbWVBdHRyVmFsLmlzRW1wdHkoKSAmJiBpZEF0dHJWYWwgIT0gbmFtZUF0
dHJWYWwpIHsKLSAgICAgICAgICAgICAgICBhcHBlbmROYW1lQ2FjaGUobmFtZUF0dHJWYWwsIGVs
ZW1lbnQpOwotICAgICAgICAgICAgICAgIGZvdW5kSW5wdXRFbGVtZW50cy5hZGQobmFtZUF0dHJW
YWwuaW1wbCgpKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLQotICAgIGlmIChi
YXNlKCktPmhhc1RhZ05hbWUoZm9ybVRhZykpIHsKLSAgICAgICAgY29uc3QgVmVjdG9yPEhUTUxJ
bWFnZUVsZW1lbnQqPiYgaW1hZ2VFbGVtZW50c0FycmF5ID0gZm9ybUltYWdlRWxlbWVudHMoKTsK
LSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGltYWdlRWxlbWVudHNBcnJheS5zaXpl
KCk7ICsraSkgewotICAgICAgICAgICAgSFRNTEltYWdlRWxlbWVudCogZWxlbWVudCA9IGltYWdl
RWxlbWVudHNBcnJheVtpXTsKLSAgICAgICAgICAgIGNvbnN0IEF0b21pY1N0cmluZyYgaWRBdHRy
VmFsID0gZWxlbWVudC0+Z2V0SWRBdHRyaWJ1dGUoKTsKLSAgICAgICAgICAgIGNvbnN0IEF0b21p
Y1N0cmluZyYgbmFtZUF0dHJWYWwgPSBlbGVtZW50LT5nZXROYW1lQXR0cmlidXRlKCk7Ci0gICAg
ICAgICAgICBpZiAoIWlkQXR0clZhbC5pc0VtcHR5KCkgJiYgIWZvdW5kSW5wdXRFbGVtZW50cy5j
b250YWlucyhpZEF0dHJWYWwuaW1wbCgpKSkKLSAgICAgICAgICAgICAgICBhcHBlbmRJZENhY2hl
KGlkQXR0clZhbCwgZWxlbWVudCk7Ci0gICAgICAgICAgICBpZiAoIW5hbWVBdHRyVmFsLmlzRW1w
dHkoKSAmJiBpZEF0dHJWYWwgIT0gbmFtZUF0dHJWYWwgJiYgIWZvdW5kSW5wdXRFbGVtZW50cy5j
b250YWlucyhuYW1lQXR0clZhbC5pbXBsKCkpKQotICAgICAgICAgICAgICAgIGFwcGVuZE5hbWVD
YWNoZShuYW1lQXR0clZhbCwgZWxlbWVudCk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBzZXRI
YXNOYW1lQ2FjaGUoKTsKLX0KLQotfQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9y
bUNvbGxlY3Rpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3Jt
Q29sbGVjdGlvbi5oCShyZXZpc2lvbiAxMzM2OTMpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxGb3JtQ29sbGVjdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDU3ICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDE5OTkgTGFycyBLbm9sbCAoa25vbGxAa2RlLm9yZykKLSAqICAgICAg
ICAgICAoQykgMTk5OSBBbnR0aSBLb2l2aXN0byAoa29pdmlzdG9Aa2RlLm9yZykKLSAqIENvcHly
aWdodCAoQykgMjAwMywgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7
IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0
ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYXMgcHVi
bGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogdmVyc2lv
biAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9u
LgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0
IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2
ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhh
dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlCi0gKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElC
LiAgSWYgbm90LCB3cml0ZSB0bwotICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5j
LiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAqIEJvc3RvbiwgTUEgMDIxMTAt
MTMwMSwgVVNBLgotICoKLSAqLwotCi0jaWZuZGVmIEhUTUxGb3JtQ29sbGVjdGlvbl9oCi0jZGVm
aW5lIEhUTUxGb3JtQ29sbGVjdGlvbl9oCi0KLSNpbmNsdWRlICJIVE1MQ29sbGVjdGlvbi5oIgot
Ci1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIEZvcm1Bc3NvY2lhdGVkRWxlbWVudDsKLWNs
YXNzIEhUTUxFbGVtZW50OwotY2xhc3MgSFRNTEltYWdlRWxlbWVudDsKLWNsYXNzIFF1YWxpZmll
ZE5hbWU7Ci0vLyBUaGlzIGNsYXNzIGlzIGp1c3QgYSBiaWcgaGFjayB0byBmaW5kIGZvcm0gZWxl
bWVudHMgZXZlbiBpbiBtYWxmb3JtZWQgSFRNTCBlbGVtZW50cy4KLS8vIFRoZSBmYW1vdXMgPHRh
YmxlPjx0cj48Zm9ybT48dGQ+IHByb2JsZW0uCi0KLWNsYXNzIEhUTUxGb3JtQ29sbGVjdGlvbiA6
IHB1YmxpYyBIVE1MQ29sbGVjdGlvbiB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8
SFRNTEZvcm1Db2xsZWN0aW9uPiBjcmVhdGUoRWxlbWVudCopOwotCi0gICAgdmlydHVhbCB+SFRN
TEZvcm1Db2xsZWN0aW9uKCk7Ci0KLSAgICB2aXJ0dWFsIE5vZGUqIG5hbWVkSXRlbShjb25zdCBB
dG9taWNTdHJpbmcmIG5hbWUpIGNvbnN0OwotCi1wcml2YXRlOgotICAgIEhUTUxGb3JtQ29sbGVj
dGlvbihFbGVtZW50Kik7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlTmFtZUNhY2hlKCkgY29u
c3Q7Ci0KLSAgICBjb25zdCBWZWN0b3I8Rm9ybUFzc29jaWF0ZWRFbGVtZW50Kj4mIGZvcm1Db250
cm9sRWxlbWVudHMoKSBjb25zdDsKLSAgICBjb25zdCBWZWN0b3I8SFRNTEltYWdlRWxlbWVudCo+
JiBmb3JtSW1hZ2VFbGVtZW50cygpIGNvbnN0OwotICAgIHZpcnR1YWwgRWxlbWVudCogdmlydHVh
bEl0ZW1BZnRlcih1bnNpZ25lZCYgb2Zmc2V0SW5BcnJheSwgRWxlbWVudCopIGNvbnN0IE9WRVJS
SURFOwotfTsKLQotfSAvL25hbWVzcGFjZQotCi0jZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uY3BwCShyZXZpc2lvbiAx
MzM1NTEpCShmcm9tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db2xsZWN0aW9uLmNwcDox
MzM1NTEpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9u
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE2MyBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMTk5OSBMYXJzIEtub2xsIChrbm9sbEBrZGUub3JnKQorICogICAgICAgICAgIChDKSAxOTk5
IEFudHRpIEtvaXZpc3RvIChrb2l2aXN0b0BrZGUub3JnKQorICogQ29weXJpZ2h0IChDKSAyMDAz
LCAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDEwLCAyMDExLCAyMDEyIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsg
eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRl
cm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJs
aXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9u
IDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24u
CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQg
d2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZl
biB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2
ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vu
c2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIu
ICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMu
LCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0x
MzAxLCBVU0EuCisgKgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJIVE1M
Rm9ybUNvbGxlY3Rpb24uaCIKKworI2luY2x1ZGUgIkhUTUxGaWVsZFNldEVsZW1lbnQuaCIKKyNp
bmNsdWRlICJIVE1MRm9ybUNvbnRyb2xFbGVtZW50LmgiCisjaW5jbHVkZSAiSFRNTEZvcm1FbGVt
ZW50LmgiCisjaW5jbHVkZSAiSFRNTEltYWdlRWxlbWVudC5oIgorI2luY2x1ZGUgIkhUTUxOYW1l
cy5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3VzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7
CisKKy8vIFNpbmNlIHRoZSBjb2xsZWN0aW9ucyBhcmUgdG8gYmUgImxpdmUiLCB3ZSBoYXZlIHRv
IGRvIHRoZQorLy8gY2FsY3VsYXRpb24gZXZlcnkgdGltZSBpZiBhbnl0aGluZyBoYXMgY2hhbmdl
ZC4KKworSFRNTEZvcm1Db2xsZWN0aW9uOjpIVE1MRm9ybUNvbGxlY3Rpb24oRWxlbWVudCogYmFz
ZSkKKyAgICA6IEhUTUxDb2xsZWN0aW9uKGJhc2UsIEZvcm1Db250cm9scywgT3ZlcnJpZGVzSXRl
bUFmdGVyKQoreworICAgIEFTU0VSVChiYXNlLT5oYXNUYWdOYW1lKGZvcm1UYWcpIHx8IGJhc2Ut
Pmhhc1RhZ05hbWUoZmllbGRzZXRUYWcpKTsKK30KKworUGFzc1JlZlB0cjxIVE1MRm9ybUNvbGxl
Y3Rpb24+IEhUTUxGb3JtQ29sbGVjdGlvbjo6Y3JlYXRlKEVsZW1lbnQqIGJhc2UpCit7CisgICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBIVE1MRm9ybUNvbGxlY3Rpb24oYmFzZSkpOworfQorCitIVE1M
Rm9ybUNvbGxlY3Rpb246On5IVE1MRm9ybUNvbGxlY3Rpb24oKQoreworfQorCitjb25zdCBWZWN0
b3I8Rm9ybUFzc29jaWF0ZWRFbGVtZW50Kj4mIEhUTUxGb3JtQ29sbGVjdGlvbjo6Zm9ybUNvbnRy
b2xFbGVtZW50cygpIGNvbnN0Cit7CisgICAgQVNTRVJUKGJhc2UoKSk7CisgICAgQVNTRVJUKGJh
c2UoKS0+aGFzVGFnTmFtZShmb3JtVGFnKSB8fCBiYXNlKCktPmhhc1RhZ05hbWUoZmllbGRzZXRU
YWcpKTsKKyAgICBpZiAoYmFzZSgpLT5oYXNUYWdOYW1lKGZvcm1UYWcpKQorICAgICAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8SFRNTEZvcm1FbGVtZW50Kj4oYmFzZSgpKS0+YXNzb2NpYXRlZEVsZW1l
bnRzKCk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEhUTUxGaWVsZFNldEVsZW1lbnQqPihiYXNl
KCkpLT5hc3NvY2lhdGVkRWxlbWVudHMoKTsKK30KKworY29uc3QgVmVjdG9yPEhUTUxJbWFnZUVs
ZW1lbnQqPiYgSFRNTEZvcm1Db2xsZWN0aW9uOjpmb3JtSW1hZ2VFbGVtZW50cygpIGNvbnN0Cit7
CisgICAgQVNTRVJUKGJhc2UoKSk7CisgICAgQVNTRVJUKGJhc2UoKS0+aGFzVGFnTmFtZShmb3Jt
VGFnKSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEhUTUxGb3JtRWxlbWVudCo+KGJhc2UoKSkt
PmltYWdlRWxlbWVudHMoKTsKK30KKworRWxlbWVudCogSFRNTEZvcm1Db2xsZWN0aW9uOjp2aXJ0
dWFsSXRlbUFmdGVyKHVuc2lnbmVkJiBvZmZzZXQsIEVsZW1lbnQqIHByZXZpb3VzSXRlbSkgY29u
c3QKK3sKKyAgICBjb25zdCBWZWN0b3I8Rm9ybUFzc29jaWF0ZWRFbGVtZW50Kj4mIGVsZW1lbnRz
QXJyYXkgPSBmb3JtQ29udHJvbEVsZW1lbnRzKCk7CisgICAgaWYgKHByZXZpb3VzSXRlbSkKKyAg
ICAgICAgb2Zmc2V0Kys7CisgICAgd2hpbGUgKG9mZnNldCA8IGVsZW1lbnRzQXJyYXkuc2l6ZSgp
KSB7CisgICAgICAgIEZvcm1Bc3NvY2lhdGVkRWxlbWVudCogZWxlbWVudCA9IGVsZW1lbnRzQXJy
YXlbb2Zmc2V0XTsKKyAgICAgICAgaWYgKGVsZW1lbnQtPmlzRW51bWVyYXRhYmxlKCkpCisgICAg
ICAgICAgICByZXR1cm4gdG9IVE1MRWxlbWVudChlbGVtZW50KTsKKyAgICAgICAgb2Zmc2V0Kys7
CisgICAgfQorICAgIHJldHVybiAwOworfQorCitzdGF0aWMgSFRNTEVsZW1lbnQqIGZpcnN0TmFt
ZWRJdGVtKGNvbnN0IFZlY3RvcjxGb3JtQXNzb2NpYXRlZEVsZW1lbnQqPiYgZWxlbWVudHNBcnJh
eSwKKyAgICBjb25zdCBWZWN0b3I8SFRNTEltYWdlRWxlbWVudCo+KiBpbWFnZUVsZW1lbnRzQXJy
YXksIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lLCBjb25zdCBTdHJpbmcmIG5hbWUpCit7
CisgICAgQVNTRVJUKGF0dHJOYW1lID09IGlkQXR0ciB8fCBhdHRyTmFtZSA9PSBuYW1lQXR0cik7
CisKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZWxlbWVudHNBcnJheS5zaXplKCk7ICsr
aSkgeworICAgICAgICBIVE1MRWxlbWVudCogZWxlbWVudCA9IHRvSFRNTEVsZW1lbnQoZWxlbWVu
dHNBcnJheVtpXSk7CisgICAgICAgIGlmIChlbGVtZW50c0FycmF5W2ldLT5pc0VudW1lcmF0YWJs
ZSgpICYmIGVsZW1lbnQtPmZhc3RHZXRBdHRyaWJ1dGUoYXR0ck5hbWUpID09IG5hbWUpCisgICAg
ICAgICAgICByZXR1cm4gZWxlbWVudDsKKyAgICB9CisKKyAgICBpZiAoIWltYWdlRWxlbWVudHNB
cnJheSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
aW1hZ2VFbGVtZW50c0FycmF5LT5zaXplKCk7ICsraSkgeworICAgICAgICBIVE1MSW1hZ2VFbGVt
ZW50KiBlbGVtZW50ID0gKCppbWFnZUVsZW1lbnRzQXJyYXkpW2ldOworICAgICAgICBpZiAoZWxl
bWVudC0+ZmFzdEdldEF0dHJpYnV0ZShhdHRyTmFtZSkgPT0gbmFtZSkKKyAgICAgICAgICAgIHJl
dHVybiBlbGVtZW50OworICAgIH0KKworICAgIHJldHVybiAwOworfQorCitOb2RlKiBIVE1MRm9y
bUNvbGxlY3Rpb246Om5hbWVkSXRlbShjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpIGNvbnN0Cit7
CisgICAgLy8gaHR0cDovL21zZG4ubWljcm9zb2Z0LmNvbS93b3Jrc2hvcC9hdXRob3IvZGh0bWwv
cmVmZXJlbmNlL21ldGhvZHMvbmFtZWRpdGVtLmFzcAorICAgIC8vIFRoaXMgbWV0aG9kIGZpcnN0
IHNlYXJjaGVzIGZvciBhbiBvYmplY3Qgd2l0aCBhIG1hdGNoaW5nIGlkCisgICAgLy8gYXR0cmli
dXRlLiBJZiBhIG1hdGNoIGlzIG5vdCBmb3VuZCwgdGhlIG1ldGhvZCB0aGVuIHNlYXJjaGVzIGZv
ciBhbgorICAgIC8vIG9iamVjdCB3aXRoIGEgbWF0Y2hpbmcgbmFtZSBhdHRyaWJ1dGUsIGJ1dCBv
bmx5IG9uIHRob3NlIGVsZW1lbnRzCisgICAgLy8gdGhhdCBhcmUgYWxsb3dlZCBhIG5hbWUgYXR0
cmlidXRlLgorICAgIGNvbnN0IFZlY3RvcjxIVE1MSW1hZ2VFbGVtZW50Kj4qIGltYWdlc0VsZW1l
bnRzID0gYmFzZSgpLT5oYXNUYWdOYW1lKGZpZWxkc2V0VGFnKSA/IDAgOiAmZm9ybUltYWdlRWxl
bWVudHMoKTsKKyAgICBpZiAoSFRNTEVsZW1lbnQqIGl0ZW0gPSBmaXJzdE5hbWVkSXRlbShmb3Jt
Q29udHJvbEVsZW1lbnRzKCksIGltYWdlc0VsZW1lbnRzLCBpZEF0dHIsIG5hbWUpKQorICAgICAg
ICByZXR1cm4gaXRlbTsKKworICAgIHJldHVybiBmaXJzdE5hbWVkSXRlbShmb3JtQ29udHJvbEVs
ZW1lbnRzKCksIGltYWdlc0VsZW1lbnRzLCBuYW1lQXR0ciwgbmFtZSk7Cit9CisKK3ZvaWQgSFRN
TEZvcm1Db2xsZWN0aW9uOjp1cGRhdGVOYW1lQ2FjaGUoKSBjb25zdAoreworICAgIGlmIChoYXNO
YW1lQ2FjaGUoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgSGFzaFNldDxBdG9taWNTdHJpbmdJ
bXBsKj4gZm91bmRJbnB1dEVsZW1lbnRzOworCisgICAgY29uc3QgVmVjdG9yPEZvcm1Bc3NvY2lh
dGVkRWxlbWVudCo+JiBlbGVtZW50c0FycmF5ID0gZm9ybUNvbnRyb2xFbGVtZW50cygpOworCisg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGVsZW1lbnRzQXJyYXkuc2l6ZSgpOyArK2kpIHsK
KyAgICAgICAgRm9ybUFzc29jaWF0ZWRFbGVtZW50KiBhc3NvY2lhdGVkRWxlbWVudCA9IGVsZW1l
bnRzQXJyYXlbaV07CisgICAgICAgIGlmIChhc3NvY2lhdGVkRWxlbWVudC0+aXNFbnVtZXJhdGFi
bGUoKSkgeworICAgICAgICAgICAgSFRNTEVsZW1lbnQqIGVsZW1lbnQgPSB0b0hUTUxFbGVtZW50
KGFzc29jaWF0ZWRFbGVtZW50KTsKKyAgICAgICAgICAgIGNvbnN0IEF0b21pY1N0cmluZyYgaWRB
dHRyVmFsID0gZWxlbWVudC0+Z2V0SWRBdHRyaWJ1dGUoKTsKKyAgICAgICAgICAgIGNvbnN0IEF0
b21pY1N0cmluZyYgbmFtZUF0dHJWYWwgPSBlbGVtZW50LT5nZXROYW1lQXR0cmlidXRlKCk7Cisg
ICAgICAgICAgICBpZiAoIWlkQXR0clZhbC5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgICAgICBh
cHBlbmRJZENhY2hlKGlkQXR0clZhbCwgZWxlbWVudCk7CisgICAgICAgICAgICAgICAgZm91bmRJ
bnB1dEVsZW1lbnRzLmFkZChpZEF0dHJWYWwuaW1wbCgpKTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIGlmICghbmFtZUF0dHJWYWwuaXNFbXB0eSgpICYmIGlkQXR0clZhbCAhPSBuYW1lQXR0
clZhbCkgeworICAgICAgICAgICAgICAgIGFwcGVuZE5hbWVDYWNoZShuYW1lQXR0clZhbCwgZWxl
bWVudCk7CisgICAgICAgICAgICAgICAgZm91bmRJbnB1dEVsZW1lbnRzLmFkZChuYW1lQXR0clZh
bC5pbXBsKCkpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgaWYgKGJh
c2UoKS0+aGFzVGFnTmFtZShmb3JtVGFnKSkgeworICAgICAgICBjb25zdCBWZWN0b3I8SFRNTElt
YWdlRWxlbWVudCo+JiBpbWFnZUVsZW1lbnRzQXJyYXkgPSBmb3JtSW1hZ2VFbGVtZW50cygpOwor
ICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgaW1hZ2VFbGVtZW50c0FycmF5LnNpemUo
KTsgKytpKSB7CisgICAgICAgICAgICBIVE1MSW1hZ2VFbGVtZW50KiBlbGVtZW50ID0gaW1hZ2VF
bGVtZW50c0FycmF5W2ldOworICAgICAgICAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBpZEF0dHJW
YWwgPSBlbGVtZW50LT5nZXRJZEF0dHJpYnV0ZSgpOworICAgICAgICAgICAgY29uc3QgQXRvbWlj
U3RyaW5nJiBuYW1lQXR0clZhbCA9IGVsZW1lbnQtPmdldE5hbWVBdHRyaWJ1dGUoKTsKKyAgICAg
ICAgICAgIGlmICghaWRBdHRyVmFsLmlzRW1wdHkoKSAmJiAhZm91bmRJbnB1dEVsZW1lbnRzLmNv
bnRhaW5zKGlkQXR0clZhbC5pbXBsKCkpKQorICAgICAgICAgICAgICAgIGFwcGVuZElkQ2FjaGUo
aWRBdHRyVmFsLCBlbGVtZW50KTsKKyAgICAgICAgICAgIGlmICghbmFtZUF0dHJWYWwuaXNFbXB0
eSgpICYmIGlkQXR0clZhbCAhPSBuYW1lQXR0clZhbCAmJiAhZm91bmRJbnB1dEVsZW1lbnRzLmNv
bnRhaW5zKG5hbWVBdHRyVmFsLmltcGwoKSkpCisgICAgICAgICAgICAgICAgYXBwZW5kTmFtZUNh
Y2hlKG5hbWVBdHRyVmFsLCBlbGVtZW50KTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHNldEhh
c05hbWVDYWNoZSgpOworfQorCit9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3Jt
Q29udHJvbHNDb2xsZWN0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmNwcAkocmV2aXNpb24gMTMzNTUxKQorKysgU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTIxLDcgKzIxLDcgQEAKICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5j
bHVkZSAiSFRNTEZvcm1Db2xsZWN0aW9uLmgiCisjaW5jbHVkZSAiSFRNTEZvcm1Db250cm9sc0Nv
bGxlY3Rpb24uaCIKIAogI2luY2x1ZGUgIkhUTUxGaWVsZFNldEVsZW1lbnQuaCIKICNpbmNsdWRl
ICJIVE1MRm9ybUNvbnRyb2xFbGVtZW50LmgiCkBAIC0zNiwyMiArMzYsMjIgQEAgdXNpbmcgbmFt
ZXNwYWNlIEhUTUxOYW1lczsKIC8vIFNpbmNlIHRoZSBjb2xsZWN0aW9ucyBhcmUgdG8gYmUgImxp
dmUiLCB3ZSBoYXZlIHRvIGRvIHRoZQogLy8gY2FsY3VsYXRpb24gZXZlcnkgdGltZSBpZiBhbnl0
aGluZyBoYXMgY2hhbmdlZC4KIAotSFRNTEZvcm1Db2xsZWN0aW9uOjpIVE1MRm9ybUNvbGxlY3Rp
b24oRWxlbWVudCogYmFzZSkKK0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uOjpIVE1MRm9ybUNv
bnRyb2xzQ29sbGVjdGlvbihFbGVtZW50KiBiYXNlKQogICAgIDogSFRNTENvbGxlY3Rpb24oYmFz
ZSwgRm9ybUNvbnRyb2xzLCBPdmVycmlkZXNJdGVtQWZ0ZXIpCiB7CiAgICAgQVNTRVJUKGJhc2Ut
Pmhhc1RhZ05hbWUoZm9ybVRhZykgfHwgYmFzZS0+aGFzVGFnTmFtZShmaWVsZHNldFRhZykpOwog
fQogCi1QYXNzUmVmUHRyPEhUTUxGb3JtQ29sbGVjdGlvbj4gSFRNTEZvcm1Db2xsZWN0aW9uOjpj
cmVhdGUoRWxlbWVudCogYmFzZSkKK1Bhc3NSZWZQdHI8SFRNTEZvcm1Db250cm9sc0NvbGxlY3Rp
b24+IEhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uOjpjcmVhdGUoRWxlbWVudCogYmFzZSkKIHsK
LSAgICByZXR1cm4gYWRvcHRSZWYobmV3IEhUTUxGb3JtQ29sbGVjdGlvbihiYXNlKSk7CisgICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbihiYXNlKSk7CiB9
CiAKLUhUTUxGb3JtQ29sbGVjdGlvbjo6fkhUTUxGb3JtQ29sbGVjdGlvbigpCitIVE1MRm9ybUNv
bnRyb2xzQ29sbGVjdGlvbjo6fkhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uKCkKIHsKIH0KIAot
Y29uc3QgVmVjdG9yPEZvcm1Bc3NvY2lhdGVkRWxlbWVudCo+JiBIVE1MRm9ybUNvbGxlY3Rpb246
OmZvcm1Db250cm9sRWxlbWVudHMoKSBjb25zdAorY29uc3QgVmVjdG9yPEZvcm1Bc3NvY2lhdGVk
RWxlbWVudCo+JiBIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbjo6Zm9ybUNvbnRyb2xFbGVtZW50
cygpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGJhc2UoKSk7CiAgICAgQVNTRVJUKGJhc2UoKS0+aGFz
VGFnTmFtZShmb3JtVGFnKSB8fCBiYXNlKCktPmhhc1RhZ05hbWUoZmllbGRzZXRUYWcpKTsKQEAg
LTYwLDE0ICs2MCwxNCBAQCBjb25zdCBWZWN0b3I8Rm9ybUFzc29jaWF0ZWRFbGVtZW50Kj4mIEhU
CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEhUTUxGaWVsZFNldEVsZW1lbnQqPihiYXNlKCkpLT5h
c3NvY2lhdGVkRWxlbWVudHMoKTsKIH0KIAotY29uc3QgVmVjdG9yPEhUTUxJbWFnZUVsZW1lbnQq
PiYgSFRNTEZvcm1Db2xsZWN0aW9uOjpmb3JtSW1hZ2VFbGVtZW50cygpIGNvbnN0Citjb25zdCBW
ZWN0b3I8SFRNTEltYWdlRWxlbWVudCo+JiBIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbjo6Zm9y
bUltYWdlRWxlbWVudHMoKSBjb25zdAogewogICAgIEFTU0VSVChiYXNlKCkpOwogICAgIEFTU0VS
VChiYXNlKCktPmhhc1RhZ05hbWUoZm9ybVRhZykpOwogICAgIHJldHVybiBzdGF0aWNfY2FzdDxI
VE1MRm9ybUVsZW1lbnQqPihiYXNlKCkpLT5pbWFnZUVsZW1lbnRzKCk7CiB9CiAKLUVsZW1lbnQq
IEhUTUxGb3JtQ29sbGVjdGlvbjo6dmlydHVhbEl0ZW1BZnRlcih1bnNpZ25lZCYgb2Zmc2V0LCBF
bGVtZW50KiBwcmV2aW91c0l0ZW0pIGNvbnN0CitFbGVtZW50KiBIVE1MRm9ybUNvbnRyb2xzQ29s
bGVjdGlvbjo6dmlydHVhbEl0ZW1BZnRlcih1bnNpZ25lZCYgb2Zmc2V0LCBFbGVtZW50KiBwcmV2
aW91c0l0ZW0pIGNvbnN0CiB7CiAgICAgY29uc3QgVmVjdG9yPEZvcm1Bc3NvY2lhdGVkRWxlbWVu
dCo+JiBlbGVtZW50c0FycmF5ID0gZm9ybUNvbnRyb2xFbGVtZW50cygpOwogICAgIGlmIChwcmV2
aW91c0l0ZW0pCkBAIC0xMDQsNyArMTA0LDcgQEAgc3RhdGljIEhUTUxFbGVtZW50KiBmaXJzdE5h
bWVkSXRlbShjb25zdAogICAgIHJldHVybiAwOwogfQogCi1Ob2RlKiBIVE1MRm9ybUNvbGxlY3Rp
b246Om5hbWVkSXRlbShjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpIGNvbnN0CitOb2RlKiBIVE1M
Rm9ybUNvbnRyb2xzQ29sbGVjdGlvbjo6bmFtZWRJdGVtKGNvbnN0IEF0b21pY1N0cmluZyYgbmFt
ZSkgY29uc3QKIHsKICAgICAvLyBodHRwOi8vbXNkbi5taWNyb3NvZnQuY29tL3dvcmtzaG9wL2F1
dGhvci9kaHRtbC9yZWZlcmVuY2UvbWV0aG9kcy9uYW1lZGl0ZW0uYXNwCiAgICAgLy8gVGhpcyBt
ZXRob2QgZmlyc3Qgc2VhcmNoZXMgZm9yIGFuIG9iamVjdCB3aXRoIGEgbWF0Y2hpbmcgaWQKQEAg
LTExOCw3ICsxMTgsNyBAQCBOb2RlKiBIVE1MRm9ybUNvbGxlY3Rpb246Om5hbWVkSXRlbShjb25z
CiAgICAgcmV0dXJuIGZpcnN0TmFtZWRJdGVtKGZvcm1Db250cm9sRWxlbWVudHMoKSwgaW1hZ2Vz
RWxlbWVudHMsIG5hbWVBdHRyLCBuYW1lKTsKIH0KIAotdm9pZCBIVE1MRm9ybUNvbGxlY3Rpb246
OnVwZGF0ZU5hbWVDYWNoZSgpIGNvbnN0Cit2b2lkIEhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9u
Ojp1cGRhdGVOYW1lQ2FjaGUoKSBjb25zdAogewogICAgIGlmIChoYXNOYW1lQ2FjaGUoKSkKICAg
ICAgICAgcmV0dXJuOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xz
Q29sbGVjdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1D
b250cm9sc0NvbGxlY3Rpb24uaAkocmV2aXNpb24gMTMzNTUxKQkoZnJvbSBTb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxGb3JtQ29sbGVjdGlvbi5oOjEzMzU1MSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDU3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAxOTk5IExhcnMgS25vbGwgKGtub2xsQGtkZS5v
cmcpCisgKiAgICAgICAgICAgKEMpIDE5OTkgQW50dGkgS29pdmlzdG8gKGtvaXZpc3RvQGtkZS5v
cmcpCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBm
cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBp
dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBM
aWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRo
ZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkg
bGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhl
IGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5U
WTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJ
VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICog
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICog
WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmls
ZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0
b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqCisgKi8KKworI2lmbmRlZiBIVE1MRm9ybUNvbGxl
Y3Rpb25faAorI2RlZmluZSBIVE1MRm9ybUNvbGxlY3Rpb25faAorCisjaW5jbHVkZSAiSFRNTENv
bGxlY3Rpb24uaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBGb3JtQXNzb2NpYXRl
ZEVsZW1lbnQ7CitjbGFzcyBIVE1MRWxlbWVudDsKK2NsYXNzIEhUTUxJbWFnZUVsZW1lbnQ7Citj
bGFzcyBRdWFsaWZpZWROYW1lOworLy8gVGhpcyBjbGFzcyBpcyBqdXN0IGEgYmlnIGhhY2sgdG8g
ZmluZCBmb3JtIGVsZW1lbnRzIGV2ZW4gaW4gbWFsZm9ybWVkIEhUTUwgZWxlbWVudHMuCisvLyBU
aGUgZmFtb3VzIDx0YWJsZT48dHI+PGZvcm0+PHRkPiBwcm9ibGVtLgorCitjbGFzcyBIVE1MRm9y
bUNvbGxlY3Rpb24gOiBwdWJsaWMgSFRNTENvbGxlY3Rpb24geworcHVibGljOgorICAgIHN0YXRp
YyBQYXNzUmVmUHRyPEhUTUxGb3JtQ29sbGVjdGlvbj4gY3JlYXRlKEVsZW1lbnQqKTsKKworICAg
IHZpcnR1YWwgfkhUTUxGb3JtQ29sbGVjdGlvbigpOworCisgICAgdmlydHVhbCBOb2RlKiBuYW1l
ZEl0ZW0oY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKSBjb25zdDsKKworcHJpdmF0ZToKKyAgICBI
VE1MRm9ybUNvbGxlY3Rpb24oRWxlbWVudCopOworCisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZU5h
bWVDYWNoZSgpIGNvbnN0OworCisgICAgY29uc3QgVmVjdG9yPEZvcm1Bc3NvY2lhdGVkRWxlbWVu
dCo+JiBmb3JtQ29udHJvbEVsZW1lbnRzKCkgY29uc3Q7CisgICAgY29uc3QgVmVjdG9yPEhUTUxJ
bWFnZUVsZW1lbnQqPiYgZm9ybUltYWdlRWxlbWVudHMoKSBjb25zdDsKKyAgICB2aXJ0dWFsIEVs
ZW1lbnQqIHZpcnR1YWxJdGVtQWZ0ZXIodW5zaWduZWQmIG9mZnNldEluQXJyYXksIEVsZW1lbnQq
KSBjb25zdCBPVkVSUklERTsKK307CisKK30gLy9uYW1lc3BhY2UKKworI2VuZGlmCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5oCShy
ZXZpc2lvbiAxMzM1NTEpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbHND
b2xsZWN0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTIwLDggKzIwLDggQEAKICAqCiAgKi8KIAot
I2lmbmRlZiBIVE1MRm9ybUNvbGxlY3Rpb25faAotI2RlZmluZSBIVE1MRm9ybUNvbGxlY3Rpb25f
aAorI2lmbmRlZiBIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbl9oCisjZGVmaW5lIEhUTUxGb3Jt
Q29udHJvbHNDb2xsZWN0aW9uX2gKIAogI2luY2x1ZGUgIkhUTUxDb2xsZWN0aW9uLmgiCiAKQEAg
LTM0LDE2ICszNCwxNiBAQCBjbGFzcyBRdWFsaWZpZWROYW1lOwogLy8gVGhpcyBjbGFzcyBpcyBq
dXN0IGEgYmlnIGhhY2sgdG8gZmluZCBmb3JtIGVsZW1lbnRzIGV2ZW4gaW4gbWFsZm9ybWVkIEhU
TUwgZWxlbWVudHMuCiAvLyBUaGUgZmFtb3VzIDx0YWJsZT48dHI+PGZvcm0+PHRkPiBwcm9ibGVt
LgogCi1jbGFzcyBIVE1MRm9ybUNvbGxlY3Rpb24gOiBwdWJsaWMgSFRNTENvbGxlY3Rpb24gewor
Y2xhc3MgSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24gOiBwdWJsaWMgSFRNTENvbGxlY3Rpb24g
ewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEhUTUxGb3JtQ29sbGVjdGlvbj4gY3Jl
YXRlKEVsZW1lbnQqKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxIVE1MRm9ybUNvbnRyb2xzQ29s
bGVjdGlvbj4gY3JlYXRlKEVsZW1lbnQqKTsKIAotICAgIHZpcnR1YWwgfkhUTUxGb3JtQ29sbGVj
dGlvbigpOworICAgIHZpcnR1YWwgfkhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uKCk7CiAKICAg
ICB2aXJ0dWFsIE5vZGUqIG5hbWVkSXRlbShjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpIGNvbnN0
OwogCiBwcml2YXRlOgotICAgIEhUTUxGb3JtQ29sbGVjdGlvbihFbGVtZW50Kik7CisgICAgSFRN
TEZvcm1Db250cm9sc0NvbGxlY3Rpb24oRWxlbWVudCopOwogCiAgICAgdmlydHVhbCB2b2lkIHVw
ZGF0ZU5hbWVDYWNoZSgpIGNvbnN0OwogCkBAIC01Miw2ICs1Miw2IEBAIHByaXZhdGU6CiAgICAg
dmlydHVhbCBFbGVtZW50KiB2aXJ0dWFsSXRlbUFmdGVyKHVuc2lnbmVkJiBvZmZzZXRJbkFycmF5
LCBFbGVtZW50KikgY29uc3QgT1ZFUlJJREU7CiB9OwogCi19IC8vbmFtZXNwYWNlCit9IC8vIG5h
bWVzcGFjZQogCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250
cm9sc0NvbGxlY3Rpb24uaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEZvcm1Db250cm9sc0NvbGxlY3Rpb24uaWRsCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5pZGwJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsMjYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcsIDIwMTIgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2IFNhbXVlbCBX
ZWluaWcgPHNhbS53ZWluaWdAZ21haWwuY29tPgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVl
IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1
bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNl
bnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIK
KyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0
ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv
cGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsg
d2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkg
b3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGli
cmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91
IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBD
T1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24s
IE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCitbCisgICAgSW5kZXhlZEdldHRlciwKKyAgICBO
YW1lZEdldHRlcgorXSBpbnRlcmZhY2UgSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24gOiBIVE1M
Q29sbGVjdGlvbiB7CisgICAgW0N1c3RvbV0gTm9kZSBuYW1lZEl0ZW0oaW4gW09wdGlvbmFsPURl
ZmF1bHRJc1VuZGVmaW5lZF0gRE9NU3RyaW5nIG5hbWUpOworfTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxGb3JtRWxlbWVudC5jcHAJKHJldmlzaW9uIDEzMzY5MykKKysrIFNvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDAsOCAr
NDAsOCBAQAogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXIuaCIKICNp
bmNsdWRlICJGcmFtZUxvYWRlckNsaWVudC5oIgorI2luY2x1ZGUgIkhUTUxDb2xsZWN0aW9uLmgi
CiAjaW5jbHVkZSAiSFRNTERvY3VtZW50LmgiCi0jaW5jbHVkZSAiSFRNTEZvcm1Db2xsZWN0aW9u
LmgiCiAjaW5jbHVkZSAiSFRNTEltYWdlRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxJbnB1dEVs
ZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEZvcm1FbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MRm9ybUVsZW1lbnQuaAkocmV2aXNpb24gMTMzNjkzKQorKysgU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MRm9ybUVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzgsNyArMzgsNiBAQCBjbGFz
cyBGb3JtRGF0YTsKIGNsYXNzIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ7CiBjbGFzcyBIVE1MSW1h
Z2VFbGVtZW50OwogY2xhc3MgSFRNTElucHV0RWxlbWVudDsKLWNsYXNzIEhUTUxGb3JtQ29sbGVj
dGlvbjsKIGNsYXNzIFRleHRFbmNvZGluZzsKIAogY2xhc3MgSFRNTEZvcm1FbGVtZW50IDogcHVi
bGljIEhUTUxFbGVtZW50IHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlvbnND
b2xsZWN0aW9uLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRp
b25zQ29sbGVjdGlvbi5pZGwJKHJldmlzaW9uIDEzMzY5MykKKysrIFNvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTE9wdGlvbnNDb2xsZWN0aW9uLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjAsMTEgKzIw
LDE0IEBACiAKIFsKICAgICBKU0dlbmVyYXRlVG9OYXRpdmVPYmplY3QsCi0gICAgQ3VzdG9tSW5k
ZXhlZFNldHRlcgorICAgIEN1c3RvbUluZGV4ZWRTZXR0ZXIsCisgICAgTmFtZWRHZXR0ZXIKIF0g
aW50ZXJmYWNlIEhUTUxPcHRpb25zQ29sbGVjdGlvbiA6IEhUTUxDb2xsZWN0aW9uIHsKLSAgICAg
ICAgICAgICBhdHRyaWJ1dGUgbG9uZyBzZWxlY3RlZEluZGV4OwotICAgICAgICAgICAgIFtDdXN0
b21dIGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIGxlbmd0aAotICAgICAgICAgICAgICAgICAgICBz
ZXR0ZXIgcmFpc2VzIChET01FeGNlcHRpb24pOworICAgIGF0dHJpYnV0ZSBsb25nIHNlbGVjdGVk
SW5kZXg7CisgICAgW0N1c3RvbV0gYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgbGVuZ3RoCisgICAg
ICAgIHNldHRlciByYWlzZXMgKERPTUV4Y2VwdGlvbik7CisKKyAgICBbQ3VzdG9tXSBOb2RlIG5h
bWVkSXRlbShpbiBbT3B0aW9uYWw9RGVmYXVsdElzVW5kZWZpbmVkXSBET01TdHJpbmcgbmFtZSk7
CiAKICAgICBbQ3VzdG9tXSB2b2lkIGFkZChpbiBbT3B0aW9uYWw9RGVmYXVsdElzVW5kZWZpbmVk
XSBIVE1MT3B0aW9uRWxlbWVudCBvcHRpb24sIAogICAgICAgICAgICAgICAgICAgICAgIGluIFtP
cHRpb25hbF0gdW5zaWduZWQgbG9uZyBpbmRleCkKQEAgLTMyLDggKzM1LDcgQEAKICAgICBbQ3Vz
dG9tXSB2b2lkIHJlbW92ZShpbiBbT3B0aW9uYWw9RGVmYXVsdElzVW5kZWZpbmVkXSB1bnNpZ25l
ZCBsb25nIGluZGV4KTsKIAogI2lmIGRlZmluZWQoTEFOR1VBR0VfT0JKRUNUSVZFX0MpICYmIExB
TkdVQUdFX09CSkVDVElWRV9DCi0gICAgTm9kZSBpdGVtKGluIHVuc2lnbmVkIGxvbmcgaW5kZXgp
OyAKLSAgICBOb2RlIG5hbWVkSXRlbShpbiBET01TdHJpbmcgbmFtZSk7IAorICAgIE5vZGUgaXRl
bShpbiB1bnNpZ25lZCBsb25nIGluZGV4KTsKICNlbmRpZgogfTsKIApJbmRleDogU291cmNlL1dl
YkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bh
Z2UvRE9NV2luZG93LmlkbAkocmV2aXNpb24gMTMzNjkzKQorKysgU291cmNlL1dlYkNvcmUvcGFn
ZS9ET01XaW5kb3cuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC00NjksNiArNDY5LDggQEAKIAogICAg
IGF0dHJpYnV0ZSBIVE1MQ29sbGVjdGlvbkNvbnN0cnVjdG9yIEhUTUxDb2xsZWN0aW9uOwogICAg
IGF0dHJpYnV0ZSBIVE1MQWxsQ29sbGVjdGlvbkNvbnN0cnVjdG9yIEhUTUxBbGxDb2xsZWN0aW9u
OworICAgIGF0dHJpYnV0ZSBIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbkNvbnN0cnVjdG9yIEhU
TUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uOworICAgIGF0dHJpYnV0ZSBIVE1MT3B0aW9uc0NvbGxl
Y3Rpb25Db25zdHJ1Y3RvciBIVE1MT3B0aW9uc0NvbGxlY3Rpb247CiAgICAgW0NvbmRpdGlvbmFs
PU1JQ1JPREFUQV0gYXR0cmlidXRlIEhUTUxQcm9wZXJ0aWVzQ29sbGVjdGlvbkNvbnN0cnVjdG9y
IEhUTUxQcm9wZXJ0aWVzQ29sbGVjdGlvbjsKICAgICBhdHRyaWJ1dGUgSFRNTFVua25vd25FbGVt
ZW50Q29uc3RydWN0b3IgSFRNTFVua25vd25FbGVtZW50OwogCkluZGV4OiBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAx
MzM2OTMpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyAr
MSwyMiBAQAorMjAxMi0xMS0wNiAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KKwor
ICAgICAgICBNYWtlIG5hbWVkSXRlbSByZXR1cm4gYSBub2RlIGxpc3Qgb25seSBpbiBIVE1MRm9y
bUNvbnRyb2xzQ29sbGVjdGlvbiBhbmQgSFRNTE9wdGlvbnNDb2xsZWN0aW9uCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDEzMTEKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZCBhIHJlZ3Jlc3Npb24g
dGVzdCB0byBlbnN1cmUgZm9ybS5lbGVtZW50cyBhbmQgc2VsZWN0Lm9wdGlvbnMgdXNlIGNvcnJl
Y3QgaW50ZXJmYWNlcywKKyAgICAgICAgYW5kIG5hbWVkIGdldHRlciBmb3IgdGhvc2UgdHdvIHBy
b3BlcnRpZXMgcmV0dXJuIGEgTm9kZUxpc3Qgd2hlbiB0aGVyZSBhcmUgbXVsdGlwbGUgbWF0Y2hl
cy4KKworICAgICAgICAqIGZhc3QvZG9tL2NvbGxlY3Rpb24tbmFtZWRpdGVtLW1vdmUtYmV0d2Vl
bi1kb2N1bWVudHMtZXhwZWN0ZWQudHh0OiBSZWJhc2VsaW5lZCBzaW5jZSBuYW1lZEl0ZW0KKyAg
ICAgICAgbm93IGNvcnJlY3RseSByZXR1cm5zIG51bGwgd2hlbiB0aGVyZSBpcyBubyBtYXRjaC4K
KyAgICAgICAgKiBmYXN0L2RvbS9jb2xsZWN0aW9uLW5hbWVkaXRlbS1tb3ZlLWJldHdlZW4tZG9j
dW1lbnRzLmh0bWw6IERpdHRvLgorICAgICAgICAqIGZhc3QvZG9tL2RvbS1jb25zdHJ1Y3RvcnMt
ZXhwZWN0ZWQudHh0OiBSZWJhc2VsaW5lZC4KKyAgICAgICAgKiBmYXN0L2RvbS9odG1sLWNvbGxl
Y3Rpb25zLW5hbWVkLWdldHRlci1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3Qv
ZG9tL2h0bWwtY29sbGVjdGlvbnMtbmFtZWQtZ2V0dGVyLmh0bWw6IEFkZGVkLgorICAgICAgICAq
IGZhc3QvZG9tL3dyYXBwZXItY2xhc3Nlcy1leHBlY3RlZC50eHQ6IFJlYmFzZWxpbmVkLgorICAg
ICAgICAqIGluc3BlY3Rvci9jb25zb2xlL2NvbnNvbGUtZm9ybWF0LWNvbGxlY3Rpb25zLWV4cGVj
dGVkLnR4dDogUmViYXNlbGluZWQuCisKIDIwMTItMTEtMDYgIEpvc2h1YSBCZWxsICA8anNiZWxs
QGNocm9taXVtLm9yZz4KIAogICAgICAgICBbQ2hyb21pdW1dIFVucmV2aWV3ZWQgZ2FyZGVuaW5n
LiBBIGNvdXBsZSBvZiBleHBlY3RhdGlvbiB1cGRhdGVzIGMvbyBkYmFydG9uQG1hdGhzY3JpYmUu
Y29tCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9jb2xsZWN0aW9uLW5hbWVkaXRlbS1tb3Zl
LWJldHdlZW4tZG9jdW1lbnRzLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9mYXN0L2RvbS9jb2xsZWN0aW9uLW5hbWVkaXRlbS1tb3ZlLWJldHdlZW4tZG9jdW1lbnRzLWV4
cGVjdGVkLnR4dAkocmV2aXNpb24gMTMzNjkzKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vY29s
bGVjdGlvbi1uYW1lZGl0ZW0tbW92ZS1iZXR3ZWVuLWRvY3VtZW50cy1leHBlY3RlZC50eHQJKHdv
cmtpbmcgY29weSkKQEAgLTEsNCArMSw0IEBACi1QQVNTIHR5cGVvZiBjaGlsZHJlbi5uYW1lZEl0
ZW0oJ2NoaWxkJykgaXMgJ3VuZGVmaW5lZCcKK1BBU1MgY2hpbGRyZW4ubmFtZWRJdGVtKCdjaGls
ZCcpIGlzIG51bGwKIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIAogVEVTVCBDT01Q
TEVURQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vY29sbGVjdGlvbi1uYW1lZGl0ZW0tbW92
ZS1iZXR3ZWVuLWRvY3VtZW50cy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qv
ZG9tL2NvbGxlY3Rpb24tbmFtZWRpdGVtLW1vdmUtYmV0d2Vlbi1kb2N1bWVudHMuaHRtbAkocmV2
aXNpb24gMTMzNjkzKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vY29sbGVjdGlvbi1uYW1lZGl0
ZW0tbW92ZS1iZXR3ZWVuLWRvY3VtZW50cy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw3ICsz
Myw3IEBAIHdpbmRvdy5vbmxvYWQgPSBmdW5jdGlvbigpCiBmdW5jdGlvbiBzdGVwMigpCiB7CiAg
ICAgZG9jdW1lbnQuYWRvcHROb2RlKGVsZW1lbnQpOwotICAgIHNob3VsZEJlKCJ0eXBlb2YgY2hp
bGRyZW4ubmFtZWRJdGVtKCdjaGlsZCcpIiwgIid1bmRlZmluZWQnIik7CisgICAgc2hvdWxkQmVO
dWxsKCJjaGlsZHJlbi5uYW1lZEl0ZW0oJ2NoaWxkJykiKTsKICAgICBmaW5pc2hKU1Rlc3QoKTsK
IH0KIDwvc2NyaXB0PgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vZG9tLWNvbnN0cnVjdG9y
cy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vZG9tLWNv
bnN0cnVjdG9ycy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDEzMzY5MykKKysrIExheW91dFRlc3Rz
L2Zhc3QvZG9tL2RvbS1jb25zdHJ1Y3RvcnMtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBA
IC0xMTgsNyArMTE4LDcgQEAgRkFJTCBUcnlBbGxvY2F0ZSgnQ29uc29sZScpIHNob3VsZCBiZSBl
eAogUEFTUyBUcnlBbGxvY2F0ZSgnU2VsZWN0aW9uJykgaXMgJ2V4Y2VwdGlvbicKIFBBU1MgVHJ5
QWxsb2NhdGUoJ1dpbmRvdycpIGlzICdleGNlcHRpb24nCiBGQUlMIFRyeUFsbG9jYXRlKCdIaXN0
b3J5Jykgc2hvdWxkIGJlIGV4Y2VwdGlvbi4gV2FzIG5vIGNvbnN0cnVjdG9yLgotRkFJTCBUcnlB
bGxvY2F0ZSgnSFRNTE9wdGlvbnNDb2xsZWN0aW9uJykgc2hvdWxkIGJlIGV4Y2VwdGlvbi4gV2Fz
IG5vIGNvbnN0cnVjdG9yLgorUEFTUyBUcnlBbGxvY2F0ZSgnSFRNTE9wdGlvbnNDb2xsZWN0aW9u
JykgaXMgJ2V4Y2VwdGlvbicKIEZBSUwgVHJ5QWxsb2NhdGUoJ0xvY2F0aW9uJykgc2hvdWxkIGJl
IGV4Y2VwdGlvbi4gV2FzIG5vIGNvbnN0cnVjdG9yLgogRkFJTCBUcnlBbGxvY2F0ZSgnTmF2aWdh
dG9yJykgc2hvdWxkIGJlIGV4Y2VwdGlvbi4gV2FzIG5vIGNvbnN0cnVjdG9yLgogRkFJTCBUcnlB
bGxvY2F0ZSgnTm9kZUl0ZXJhdG9yJykgc2hvdWxkIGJlIGV4Y2VwdGlvbi4gV2FzIG5vIGNvbnN0
cnVjdG9yLgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vaHRtbC1jb2xsZWN0aW9ucy1uYW1l
ZC1nZXR0ZXItZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9t
L2h0bWwtY29sbGVjdGlvbnMtbmFtZWQtZ2V0dGVyLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkK
KysrIExheW91dFRlc3RzL2Zhc3QvZG9tL2h0bWwtY29sbGVjdGlvbnMtbmFtZWQtZ2V0dGVyLWV4
cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMDEgQEAKK1RoaXMgdGVzdHMgdmVy
aWZpZXMgdGhhdCBuYW1lZEl0ZW0gYW5kIG5hbWVkIGdldHRlciByZXR1cm5zIHRoZSBmaXJzdCBt
YXRjaGVkIGl0ZW0gZm9yIGFsbCBidXQgYWxsLCBvcHRpb25zLCBhbmQgZm9ybSBjb250cm9scyBj
b2xsZWN0aW9ucy4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNT
IiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK2RvY3VtZW50LmFs
bAorUEFTUyBkb2N1bWVudC5hbGwudG9TdHJpbmcoKSBpcyAnW29iamVjdCBIVE1MQWxsQ29sbGVj
dGlvbl0nCitGQUlMIGRvY3VtZW50LmFsbC5fX3Byb3RvX18uX19wcm90b19fLnRvU3RyaW5nKCkg
c2hvdWxkIGJlIFtvYmplY3QgSFRNTENvbGxlY3Rpb25dLiBXYXMgW29iamVjdCBPYmplY3RdLgor
UEFTUyBpbml0aWFsTGVuZ3RoID0gZG9jdW1lbnQuYWxsLmxlbmd0aDsgZWxlbWVudHMgPSBbaW5z
ZXJ0RWxlbWVudFdpdGhJZCgnYicsICdmb28nKSwgaW5zZXJ0RWxlbWVudFdpdGhJZCgncScsICdm
b28nKV07CisgICAgIGRvY3VtZW50LmFsbC5sZW5ndGggaXMgaW5pdGlhbExlbmd0aCArIDI7CitQ
QVNTIGRvY3VtZW50LmFsbFsnZm9vJ10ubGVuZ3RoIGlzIDIKK1BBU1MgZG9jdW1lbnQuYWxsWydm
b28nXVswXSBpcyBlbGVtZW50c1swXQorUEFTUyBkb2N1bWVudC5hbGxbJ2ZvbyddWzFdIGlzIGVs
ZW1lbnRzWzFdCitQQVNTIGVsZW1lbnRzWzBdLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoZWxlbWVu
dHNbMF0pOyBkb2N1bWVudC5hbGxbJ2ZvbyddIGlzIGVsZW1lbnRzWzFdCisKK2Zvcm0uZWxlbWVu
dHMKK1BBU1MgZm9ybS5lbGVtZW50cy50b1N0cmluZygpIGlzICdbb2JqZWN0IEhUTUxGb3JtQ29u
dHJvbHNDb2xsZWN0aW9uXScKK1BBU1MgZm9ybS5lbGVtZW50cy5fX3Byb3RvX18uX19wcm90b19f
LnRvU3RyaW5nKCkgaXMgJ1tvYmplY3QgSFRNTENvbGxlY3Rpb25Qcm90b3R5cGVdJworUEFTUyBm
b3JtLmVsZW1lbnRzLmxlbmd0aCBpcyAwCitQQVNTIGVsZW1lbnRzID0gW2NyZWF0ZUVsZW1lbnRX
aXRoSWQoJ2lucHV0JywgJ2ZvbycpLCBjcmVhdGVFbGVtZW50V2l0aElkKCdpbnB1dCcsICdmb28n
KV07CisgICAgIGZvcm0uYXBwZW5kQ2hpbGQoZWxlbWVudHNbMF0pOyBmb3JtLmVsZW1lbnRzLmxl
bmd0aCBpcyAxCitQQVNTIGZvcm0uZWxlbWVudHNbJ2ZvbyddIGlzIGVsZW1lbnRzWzBdCitQQVNT
IGZvcm0uYXBwZW5kQ2hpbGQoZWxlbWVudHNbMV0pOyBmb3JtLmVsZW1lbnRzLmxlbmd0aCBpcyAy
CitQQVNTIGZvcm0uZWxlbWVudHNbJ2ZvbyddLnRvU3RyaW5nKCkgaXMgJ1tvYmplY3QgUmFkaW9O
b2RlTGlzdF0nCitQQVNTIGZvcm0uZWxlbWVudHNbJ2ZvbyddLmxlbmd0aCBpcyAyCitQQVNTIGZv
cm0uZWxlbWVudHNbJ2ZvbyddWzBdIGlzIGVsZW1lbnRzWzBdCitQQVNTIGZvcm0uZWxlbWVudHNb
J2ZvbyddWzFdIGlzIGVsZW1lbnRzWzFdCitQQVNTIGZvcm0ucmVtb3ZlQ2hpbGQoZWxlbWVudHNb
MF0pOyBmb3JtLmVsZW1lbnRzWydmb28nXSBpcyBlbGVtZW50c1sxXQorUEFTUyByZW1vdmVUZXN0
RWxlbWVudHMoKTsgZm9ybS5lbGVtZW50cy5sZW5ndGggaXMgMAorCitzZWxlY3Qub3B0aW9ucwor
UEFTUyBmb3JtLmFwcGVuZENoaWxkKGNyZWF0ZUVsZW1lbnRXaXRoSWQoJ3NlbGVjdCcsICdiYXIn
KSk7IGZvcm0uZWxlbWVudHMubGVuZ3RoIGlzIDEKK1BBU1Mgc2VsZWN0ID0gZm9ybS5lbGVtZW50
c1swXTsgc2VsZWN0Lm9wdGlvbnMudG9TdHJpbmcoKSBpcyAnW29iamVjdCBIVE1MT3B0aW9uc0Nv
bGxlY3Rpb25dJworUEFTUyBzZWxlY3Qub3B0aW9ucy5fX3Byb3RvX18uX19wcm90b19fLnRvU3Ry
aW5nKCkgaXMgJ1tvYmplY3QgSFRNTENvbGxlY3Rpb25Qcm90b3R5cGVdJworUEFTUyBzZWxlY3Qu
b3B0aW9ucy5sZW5ndGggaXMgMAorUEFTUyBlbGVtZW50cyA9IFtjcmVhdGVFbGVtZW50V2l0aElk
KCdvcHRpb24nLCAnZm9vJyksIGNyZWF0ZUVsZW1lbnRXaXRoSWQoJ29wdGlvbicsICdmb28nKV07
CisgICAgIHNlbGVjdC5hcHBlbmRDaGlsZChlbGVtZW50c1swXSk7IHNlbGVjdC5vcHRpb25zLmxl
bmd0aCBpcyAxCitQQVNTIHNlbGVjdC5vcHRpb25zWydmb28nXSBpcyBlbGVtZW50c1swXQorUEFT
UyBzZWxlY3QuYXBwZW5kQ2hpbGQoZWxlbWVudHNbMV0pOyBzZWxlY3Qub3B0aW9ucy5sZW5ndGgg
aXMgMgorUEFTUyBzZWxlY3Qub3B0aW9uc1snZm9vJ10udG9TdHJpbmcoKSBpcyAnW29iamVjdCBO
b2RlTGlzdF0nCitQQVNTIHNlbGVjdC5vcHRpb25zWydmb28nXS5sZW5ndGggaXMgMgorUEFTUyBz
ZWxlY3Qub3B0aW9uc1snZm9vJ11bMF0gaXMgZWxlbWVudHNbMF0KK1BBU1Mgc2VsZWN0Lm9wdGlv
bnNbJ2ZvbyddWzFdIGlzIGVsZW1lbnRzWzFdCitQQVNTIHNlbGVjdC5yZW1vdmVDaGlsZChlbGVt
ZW50c1swXSk7IHNlbGVjdC5vcHRpb25zWydmb28nXSBpcyBlbGVtZW50c1sxXQorUEFTUyBzZWxl
Y3QuaW5uZXJIVE1MID0gJyc7IHNlbGVjdC5vcHRpb25zLmxlbmd0aCBpcyAwCitQQVNTIHJlbW92
ZVRlc3RFbGVtZW50cygpOyBmb3JtLmVsZW1lbnRzLmxlbmd0aCBpcyAwCisKK2RvY3VtZW50Lmlt
YWdlcworUEFTUyBkb2N1bWVudC5pbWFnZXMubGVuZ3RoIGlzIDAKK1BBU1MgZWxlbWVudHNbMF0g
PSBpbnNlcnRFbGVtZW50V2l0aElkKCdpbWcnLCAnZm9vJyk7IGRvY3VtZW50LmltYWdlcy5sZW5n
dGggaXMgMQorUEFTUyBlbGVtZW50c1sxXSA9IGluc2VydEVsZW1lbnRXaXRoSWQoJ2ltZycsICdm
b28nKTsgZG9jdW1lbnQuaW1hZ2VzLmxlbmd0aCBpcyAyCitQQVNTIGRvY3VtZW50LmltYWdlc1sn
Zm9vJ10gaXMgZWxlbWVudHNbMF0KK1BBU1MgcmVtb3ZlVGVzdEVsZW1lbnRzKCk7IGRvY3VtZW50
LmltYWdlcy5sZW5ndGggaXMgMAorCitkb2N1bWVudC5hcHBsZXRzCitQQVNTIGRvY3VtZW50LmFw
cGxldHMubGVuZ3RoIGlzIDAKK1BBU1MgZWxlbWVudHNbMF0gPSBpbnNlcnRFbGVtZW50V2l0aElk
KCdhcHBsZXQnLCAnZm9vJyk7IGRvY3VtZW50LmFwcGxldHMubGVuZ3RoIGlzIDEKK1BBU1MgZWxl
bWVudHNbMV0gPSBpbnNlcnRFbGVtZW50V2l0aElkKCdhcHBsZXQnLCAnZm9vJyk7IGRvY3VtZW50
LmFwcGxldHMubGVuZ3RoIGlzIDIKK1BBU1MgZG9jdW1lbnQuYXBwbGV0c1snZm9vJ10gaXMgZWxl
bWVudHNbMF0KK1BBU1MgcmVtb3ZlVGVzdEVsZW1lbnRzKCk7IGRvY3VtZW50LmFwcGxldHMubGVu
Z3RoIGlzIDAKKworZG9jdW1lbnQuZW1iZWRzCitQQVNTIGRvY3VtZW50LmVtYmVkcy5sZW5ndGgg
aXMgMAorUEFTUyBlbGVtZW50c1swXSA9IGluc2VydEVsZW1lbnRXaXRoSWQoJ2VtYmVkJywgJ2Zv
bycpOyBkb2N1bWVudC5lbWJlZHMubGVuZ3RoIGlzIDEKK1BBU1MgZWxlbWVudHNbMV0gPSBpbnNl
cnRFbGVtZW50V2l0aElkKCdlbWJlZCcsICdmb28nKTsgZG9jdW1lbnQuZW1iZWRzLmxlbmd0aCBp
cyAyCitQQVNTIGRvY3VtZW50LmVtYmVkc1snZm9vJ10gaXMgZWxlbWVudHNbMF0KK1BBU1MgcmVt
b3ZlVGVzdEVsZW1lbnRzKCk7IGRvY3VtZW50LmVtYmVkcy5sZW5ndGggaXMgMAorCitkb2N1bWVu
dC5mb3JtcworUEFTUyBkb2N1bWVudC5mb3Jtcy5sZW5ndGggaXMgMQorUEFTUyBlbGVtZW50c1sw
XSA9IGluc2VydEVsZW1lbnRXaXRoSWQoJ2Zvcm0nLCAnZm9vJyk7IGRvY3VtZW50LmZvcm1zLmxl
bmd0aCBpcyAyCitQQVNTIGVsZW1lbnRzWzFdID0gaW5zZXJ0RWxlbWVudFdpdGhJZCgnZm9ybScs
ICdmb28nKTsgZG9jdW1lbnQuZm9ybXMubGVuZ3RoIGlzIDMKK1BBU1MgZG9jdW1lbnQuZm9ybXNb
J2ZvbyddIGlzIGVsZW1lbnRzWzBdCitQQVNTIHJlbW92ZVRlc3RFbGVtZW50cygpOyBkb2N1bWVu
dC5mb3Jtcy5sZW5ndGggaXMgMQorCitkb2N1bWVudC5saW5rcworUEFTUyBkb2N1bWVudC5saW5r
cy5sZW5ndGggaXMgMAorUEFTUyBlbGVtZW50c1swXSA9IGluc2VydEVsZW1lbnRXaXRoSWQoJ2En
LCAnZm9vJywgeyJocmVmIjoic29tZSB1cmwifSk7IGRvY3VtZW50LmxpbmtzLmxlbmd0aCBpcyAx
CitQQVNTIGVsZW1lbnRzWzFdID0gaW5zZXJ0RWxlbWVudFdpdGhJZCgnYScsICdmb28nLCB7Imhy
ZWYiOiJzb21lIHVybCJ9KTsgZG9jdW1lbnQubGlua3MubGVuZ3RoIGlzIDIKK1BBU1MgZWxlbWVu
dHNbMl0gPSBpbnNlcnRFbGVtZW50V2l0aElkKCdhcmVhJywgJ2ZvbycsIHsiaHJlZiI6InNvbWUg
dXJsIn0pOyBkb2N1bWVudC5saW5rcy5sZW5ndGggaXMgMworUEFTUyBkb2N1bWVudC5saW5rc1sn
Zm9vJ10gaXMgZWxlbWVudHNbMF0KK1BBU1MgcmVtb3ZlVGVzdEVsZW1lbnRzKCk7IGRvY3VtZW50
LmxpbmtzLmxlbmd0aCBpcyAwCisKK2RvY3VtZW50LmFuY2hvcnMKK1BBU1MgZG9jdW1lbnQuYW5j
aG9ycy5sZW5ndGggaXMgMAorUEFTUyBlbGVtZW50c1swXSA9IGluc2VydEVsZW1lbnRXaXRoSWQo
J2EnLCAnZm9vJywgeyJuYW1lIjoic29tZSBuYW1lIn0pOyBkb2N1bWVudC5hbmNob3JzLmxlbmd0
aCBpcyAxCitQQVNTIGVsZW1lbnRzWzFdID0gaW5zZXJ0RWxlbWVudFdpdGhJZCgnYScsICdmb28n
LCB7Im5hbWUiOiJzb21lIG5hbWUifSk7IGRvY3VtZW50LmFuY2hvcnMubGVuZ3RoIGlzIDIKK1BB
U1MgZG9jdW1lbnQuYW5jaG9yc1snZm9vJ10gaXMgZWxlbWVudHNbMF0KK1BBU1MgcmVtb3ZlVGVz
dEVsZW1lbnRzKCk7IGRvY3VtZW50LmFuY2hvcnMubGVuZ3RoIGlzIDAKKworZG9jdW1lbnQuc2Ny
aXB0cworUEFTUyBkb2N1bWVudC5zY3JpcHRzLmxlbmd0aCBpcyAyCitQQVNTIGVsZW1lbnRzWzBd
ID0gaW5zZXJ0RWxlbWVudFdpdGhJZCgnc2NyaXB0JywgJ2ZvbycpOyBkb2N1bWVudC5zY3JpcHRz
Lmxlbmd0aCBpcyAzCitQQVNTIGVsZW1lbnRzWzFdID0gaW5zZXJ0RWxlbWVudFdpdGhJZCgnc2Ny
aXB0JywgJ2ZvbycpOyBkb2N1bWVudC5zY3JpcHRzLmxlbmd0aCBpcyA0CitQQVNTIGRvY3VtZW50
LnNjcmlwdHNbJ2ZvbyddIGlzIGVsZW1lbnRzWzBdCitQQVNTIHJlbW92ZVRlc3RFbGVtZW50cygp
OyBkb2N1bWVudC5zY3JpcHRzLmxlbmd0aCBpcyAyCisKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2Vk
IGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9o
dG1sLWNvbGxlY3Rpb25zLW5hbWVkLWdldHRlci5odG1sCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2Zhc3QvZG9tL2h0bWwtY29sbGVjdGlvbnMtbmFtZWQtZ2V0dGVyLmh0bWwJKHJldmlzaW9u
IDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9odG1sLWNvbGxlY3Rpb25zLW5hbWVkLWdldHRl
ci5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEwNiBAQAorPCFET0NUWVBFIGh0bWw+Cis8
aHRtbD4KKzxib2R5PgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5q
cyI+PC9zY3JpcHQ+Cis8ZGl2IGlkPSJjb250YWluZXIiPjwvZGl2PgorPGZvcm0+PC9mb3JtPgor
PHNjcmlwdD4KKworZGVzY3JpcHRpb24oIlRoaXMgdGVzdHMgdmVyaWZpZXMgdGhhdCBuYW1lZEl0
ZW0gYW5kIG5hbWVkIGdldHRlciByZXR1cm5zIHRoZSBmaXJzdCBtYXRjaGVkIGl0ZW0gZm9yIGFs
bCBidXQgYWxsLCBvcHRpb25zLCBhbmQgZm9ybSBjb250cm9scyBjb2xsZWN0aW9ucy4iKTsKKwor
ZnVuY3Rpb24gY3JlYXRlRWxlbWVudFdpdGhJZChuYW1lLCBpZCwgYXR0cmlidXRlcykgeworICAg
IHZhciBlbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChuYW1lKTsKKyAgICBlbGVtZW50
LmlkID0gaWQ7CisgICAgZm9yICh2YXIgYXR0ciBpbiBhdHRyaWJ1dGVzKQorICAgICAgICBlbGVt
ZW50LnNldEF0dHJpYnV0ZShhdHRyLCBhdHRyaWJ1dGVzW2F0dHJdKTsKKyAgICByZXR1cm4gZWxl
bWVudDsKK30KKworZnVuY3Rpb24gaW5zZXJ0RWxlbWVudFdpdGhJZChuYW1lLCBpZCwgYXR0cmli
dXRlcykgeworICAgIHZhciBlbGVtZW50ID0gY3JlYXRlRWxlbWVudFdpdGhJZChuYW1lLCBpZCwg
YXR0cmlidXRlcyk7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnRhaW5lcicpLmFw
cGVuZENoaWxkKGVsZW1lbnQpOworICAgIHJldHVybiBlbGVtZW50OworfQorCitmdW5jdGlvbiBy
ZW1vdmVUZXN0RWxlbWVudHMoKSB7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnRh
aW5lcicpLmlubmVySFRNTCA9ICcnOworICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2Zvcm0n
KS5pbm5lckhUTUwgPSAnJzsKK30KKwordmFyIG5ld0RvYyA9IGRvY3VtZW50LmltcGxlbWVudGF0
aW9uLmNyZWF0ZURvY3VtZW50KG51bGwsICdodG1sJywgbnVsbCk7Cit2YXIgZWxlbWVudHM7CisK
K2RlYnVnKCdkb2N1bWVudC5hbGwnKTsKK3Nob3VsZEJlKCJkb2N1bWVudC5hbGwudG9TdHJpbmco
KSIsICInW29iamVjdCBIVE1MQWxsQ29sbGVjdGlvbl0nIik7CitzaG91bGRCZSgiZG9jdW1lbnQu
YWxsLl9fcHJvdG9fXy5fX3Byb3RvX18udG9TdHJpbmcoKSIsICInW29iamVjdCBIVE1MQ29sbGVj
dGlvbl0nIik7CitzaG91bGRCZSgiaW5pdGlhbExlbmd0aCA9IGRvY3VtZW50LmFsbC5sZW5ndGg7
IGVsZW1lbnRzID0gW2luc2VydEVsZW1lbnRXaXRoSWQoJ2InLCAnZm9vJyksIGluc2VydEVsZW1l
bnRXaXRoSWQoJ3EnLCAnZm9vJyldO1xuIgorICAgICsgIiAgICAgZG9jdW1lbnQuYWxsLmxlbmd0
aCIsICJpbml0aWFsTGVuZ3RoICsgMjsiKTsKK3Nob3VsZEJlKCJkb2N1bWVudC5hbGxbJ2Zvbydd
Lmxlbmd0aCIsICIyIik7CitzaG91bGRCZSgiZG9jdW1lbnQuYWxsWydmb28nXVswXSIsICJlbGVt
ZW50c1swXSIpOworc2hvdWxkQmUoImRvY3VtZW50LmFsbFsnZm9vJ11bMV0iLCAiZWxlbWVudHNb
MV0iKTsKK3Nob3VsZEJlKCJlbGVtZW50c1swXS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGVsZW1l
bnRzWzBdKTsgZG9jdW1lbnQuYWxsWydmb28nXSIsICdlbGVtZW50c1sxXScpOworZGVidWcoIiIp
OworCit2YXIgZm9ybSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2Zvcm0nKTsKK2RlYnVnKCJm
b3JtLmVsZW1lbnRzIik7CitzaG91bGRCZSgiZm9ybS5lbGVtZW50cy50b1N0cmluZygpIiwgIidb
b2JqZWN0IEhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uXSciKTsKK3Nob3VsZEJlKCJmb3JtLmVs
ZW1lbnRzLl9fcHJvdG9fXy5fX3Byb3RvX18udG9TdHJpbmcoKSIsICInW29iamVjdCBIVE1MQ29s
bGVjdGlvblByb3RvdHlwZV0nIik7CitzaG91bGRCZSgiZm9ybS5lbGVtZW50cy5sZW5ndGgiLCAi
MCIpOworc2hvdWxkQmUoImVsZW1lbnRzID0gW2NyZWF0ZUVsZW1lbnRXaXRoSWQoJ2lucHV0Jywg
J2ZvbycpLCBjcmVhdGVFbGVtZW50V2l0aElkKCdpbnB1dCcsICdmb28nKV07XG4iCisgICAgKyAi
ICAgICBmb3JtLmFwcGVuZENoaWxkKGVsZW1lbnRzWzBdKTsgZm9ybS5lbGVtZW50cy5sZW5ndGgi
LCAiMSIpOworc2hvdWxkQmUoImZvcm0uZWxlbWVudHNbJ2ZvbyddIiwgImVsZW1lbnRzWzBdIik7
CitzaG91bGRCZSgiZm9ybS5hcHBlbmRDaGlsZChlbGVtZW50c1sxXSk7IGZvcm0uZWxlbWVudHMu
bGVuZ3RoIiwgIjIiKTsKK3Nob3VsZEJlKCJmb3JtLmVsZW1lbnRzWydmb28nXS50b1N0cmluZygp
IiwgIidbb2JqZWN0IFJhZGlvTm9kZUxpc3RdJyIpOworc2hvdWxkQmUoImZvcm0uZWxlbWVudHNb
J2ZvbyddLmxlbmd0aCIsICIyIik7CitzaG91bGRCZSgiZm9ybS5lbGVtZW50c1snZm9vJ11bMF0i
LCAiZWxlbWVudHNbMF0iKTsKK3Nob3VsZEJlKCJmb3JtLmVsZW1lbnRzWydmb28nXVsxXSIsICJl
bGVtZW50c1sxXSIpOworc2hvdWxkQmUoImZvcm0ucmVtb3ZlQ2hpbGQoZWxlbWVudHNbMF0pOyBm
b3JtLmVsZW1lbnRzWydmb28nXSIsICJlbGVtZW50c1sxXSIpOworc2hvdWxkQmUoInJlbW92ZVRl
c3RFbGVtZW50cygpOyBmb3JtLmVsZW1lbnRzLmxlbmd0aCIsICIwIik7CitkZWJ1ZygiIik7CisK
K2RlYnVnKCJzZWxlY3Qub3B0aW9ucyIpOworc2hvdWxkQmUoImZvcm0uYXBwZW5kQ2hpbGQoY3Jl
YXRlRWxlbWVudFdpdGhJZCgnc2VsZWN0JywgJ2JhcicpKTsgZm9ybS5lbGVtZW50cy5sZW5ndGgi
LCAiMSIpOworc2hvdWxkQmUoInNlbGVjdCA9IGZvcm0uZWxlbWVudHNbMF07IHNlbGVjdC5vcHRp
b25zLnRvU3RyaW5nKCkiLCAiJ1tvYmplY3QgSFRNTE9wdGlvbnNDb2xsZWN0aW9uXSciKTsKK3No
b3VsZEJlKCJzZWxlY3Qub3B0aW9ucy5fX3Byb3RvX18uX19wcm90b19fLnRvU3RyaW5nKCkiLCAi
J1tvYmplY3QgSFRNTENvbGxlY3Rpb25Qcm90b3R5cGVdJyIpOworc2hvdWxkQmUoInNlbGVjdC5v
cHRpb25zLmxlbmd0aCIsICIwIik7CitzaG91bGRCZSgiZWxlbWVudHMgPSBbY3JlYXRlRWxlbWVu
dFdpdGhJZCgnb3B0aW9uJywgJ2ZvbycpLCBjcmVhdGVFbGVtZW50V2l0aElkKCdvcHRpb24nLCAn
Zm9vJyldO1xuIgorICAgICsgIiAgICAgc2VsZWN0LmFwcGVuZENoaWxkKGVsZW1lbnRzWzBdKTsg
c2VsZWN0Lm9wdGlvbnMubGVuZ3RoIiwgIjEiKTsKK3Nob3VsZEJlKCJzZWxlY3Qub3B0aW9uc1sn
Zm9vJ10iLCAiZWxlbWVudHNbMF0iKTsKK3Nob3VsZEJlKCJzZWxlY3QuYXBwZW5kQ2hpbGQoZWxl
bWVudHNbMV0pOyBzZWxlY3Qub3B0aW9ucy5sZW5ndGgiLCAiMiIpOworc2hvdWxkQmUoInNlbGVj
dC5vcHRpb25zWydmb28nXS50b1N0cmluZygpIiwgIidbb2JqZWN0IE5vZGVMaXN0XSciKTsKK3No
b3VsZEJlKCJzZWxlY3Qub3B0aW9uc1snZm9vJ10ubGVuZ3RoIiwgIjIiKTsKK3Nob3VsZEJlKCJz
ZWxlY3Qub3B0aW9uc1snZm9vJ11bMF0iLCAiZWxlbWVudHNbMF0iKTsKK3Nob3VsZEJlKCJzZWxl
Y3Qub3B0aW9uc1snZm9vJ11bMV0iLCAiZWxlbWVudHNbMV0iKTsKK3Nob3VsZEJlKCJzZWxlY3Qu
cmVtb3ZlQ2hpbGQoZWxlbWVudHNbMF0pOyBzZWxlY3Qub3B0aW9uc1snZm9vJ10iLCAiZWxlbWVu
dHNbMV0iKTsKK3Nob3VsZEJlKCJzZWxlY3QuaW5uZXJIVE1MID0gJyc7IHNlbGVjdC5vcHRpb25z
Lmxlbmd0aCIsICIwIik7CitzaG91bGRCZSgicmVtb3ZlVGVzdEVsZW1lbnRzKCk7IGZvcm0uZWxl
bWVudHMubGVuZ3RoIiwgIjAiKTsKK2RlYnVnKCIiKTsKKworZnVuY3Rpb24gdGVzdEZpcnN0SXRl
bVJldHVybnNGaXJzdE1hdGNoKGNvbGxlY3Rpb24sIGluaXRpYWxMZW5ndGgsIGVsZW1lbnROYW1l
cywgYXR0cmlidXRlcykgeworICAgIGRlYnVnKGNvbGxlY3Rpb24pOworICAgIHNob3VsZEJlKGNv
bGxlY3Rpb24gKyAiLmxlbmd0aCIsIGluaXRpYWxMZW5ndGgudG9TdHJpbmcoKSk7CisgICAgZWxl
bWVudHMgPSBbXTsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IGVsZW1lbnROYW1lcy5sZW5ndGg7
IGkrKykgeworICAgICAgICB2YXIgYXR0cnMgPSBhdHRyaWJ1dGVzID8gIiwgIiArIEpTT04uc3Ry
aW5naWZ5KGF0dHJpYnV0ZXMpIDogJyc7CisgICAgICAgIHNob3VsZEJlKCJlbGVtZW50c1siICsg
aSArICJdID0gaW5zZXJ0RWxlbWVudFdpdGhJZCgnIiArIGVsZW1lbnROYW1lc1tpXSArICInLCAn
Zm9vJyIgKyBhdHRycyArICIpOyAiCisgICAgICAgICAgICArIGNvbGxlY3Rpb24gKyAiLmxlbmd0
aCIsIChpbml0aWFsTGVuZ3RoICsgaSArIDEpLnRvU3RyaW5nKCkpOworICAgIH0KKyAgICBzaG91
bGRCZShjb2xsZWN0aW9uICsgIlsnZm9vJ10iLCAiZWxlbWVudHNbMF0iKTsKKyAgICBzaG91bGRC
ZSgicmVtb3ZlVGVzdEVsZW1lbnRzKCk7ICIgKyBjb2xsZWN0aW9uICsgIi5sZW5ndGgiLCBpbml0
aWFsTGVuZ3RoLnRvU3RyaW5nKCkpOworICAgIGRlYnVnKCIiKTsKK30KKwordGVzdEZpcnN0SXRl
bVJldHVybnNGaXJzdE1hdGNoKCdkb2N1bWVudC5pbWFnZXMnLCAwLCBbJ2ltZycsICdpbWcnXSk7
Cit0ZXN0Rmlyc3RJdGVtUmV0dXJuc0ZpcnN0TWF0Y2goJ2RvY3VtZW50LmFwcGxldHMnLCAwLCBb
J2FwcGxldCcsICdhcHBsZXQnXSk7Cit0ZXN0Rmlyc3RJdGVtUmV0dXJuc0ZpcnN0TWF0Y2goJ2Rv
Y3VtZW50LmVtYmVkcycsIDAsIFsnZW1iZWQnLCAnZW1iZWQnXSk7Cit0ZXN0Rmlyc3RJdGVtUmV0
dXJuc0ZpcnN0TWF0Y2goJ2RvY3VtZW50LmZvcm1zJywgMSwgWydmb3JtJywgJ2Zvcm0nXSk7Cit0
ZXN0Rmlyc3RJdGVtUmV0dXJuc0ZpcnN0TWF0Y2goJ2RvY3VtZW50LmxpbmtzJywgMCwgWydhJywg
J2EnLCAnYXJlYSddLCB7J2hyZWYnOiAnc29tZSB1cmwnfSk7Cit0ZXN0Rmlyc3RJdGVtUmV0dXJu
c0ZpcnN0TWF0Y2goJ2RvY3VtZW50LmFuY2hvcnMnLCAwLCBbJ2EnLCAnYSddLCB7J25hbWUnOiAn
c29tZSBuYW1lJ30pOwordGVzdEZpcnN0SXRlbVJldHVybnNGaXJzdE1hdGNoKCdkb2N1bWVudC5z
Y3JpcHRzJywgMiwgWydzY3JpcHQnLCAnc2NyaXB0J10pOworCit2YXIgc3VjY2Vzc2Z1bGx5UGFy
c2VkID0gdHJ1ZTsKKworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pz
LXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRU
ZXN0cy9mYXN0L2RvbS93cmFwcGVyLWNsYXNzZXMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2Zhc3QvZG9tL3dyYXBwZXItY2xhc3Nlcy1leHBlY3RlZC50eHQJKHJldmlz
aW9uIDEzMzY5MykKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL3dyYXBwZXItY2xhc3Nlcy1leHBl
Y3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTE0Miw3ICsxNDIsNyBAQCBQQVNTIGpzV3JhcHBl
ckNsYXNzKGRvY3VtZW50Ll9fcHJvdG9fXykgCiBQQVNTIGpzV3JhcHBlckNsYXNzKGRvY3VtZW50
LmNvbnN0cnVjdG9yKSBpcyAnSFRNTERvY3VtZW50Q29uc3RydWN0b3InCiBQQVNTIGpzV3JhcHBl
ckNsYXNzKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NlbGVjdCcpLm9wdGlvbnMpIGlzICdIVE1M
T3B0aW9uc0NvbGxlY3Rpb24nCiBQQVNTIGpzV3JhcHBlckNsYXNzKGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoJ3NlbGVjdCcpLm9wdGlvbnMuX19wcm90b19fKSBpcyAnSFRNTE9wdGlvbnNDb2xsZWN0
aW9uUHJvdG90eXBlJwotUEFTUyBqc1dyYXBwZXJDbGFzcyhkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCdzZWxlY3QnKS5vcHRpb25zLmNvbnN0cnVjdG9yKSBpcyAnSFRNTE9wdGlvbnNDb2xsZWN0aW9u
Q29uc3RydWN0b3InCitGQUlMIGpzV3JhcHBlckNsYXNzKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
J3NlbGVjdCcpLm9wdGlvbnMuY29uc3RydWN0b3IpIHNob3VsZCBiZSBIVE1MT3B0aW9uc0NvbGxl
Y3Rpb25Db25zdHJ1Y3Rvci4gV2FzIEZ1bmN0aW9uLgogCiBIVE1MIEVsZW1lbnRzCiAKSW5kZXg6
IExheW91dFRlc3RzL2luc3BlY3Rvci9jb25zb2xlL2NvbnNvbGUtZm9ybWF0LWNvbGxlY3Rpb25z
LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9pbnNwZWN0b3IvY29uc29s
ZS9jb25zb2xlLWZvcm1hdC1jb2xsZWN0aW9ucy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDEzMzY5
MykKKysrIExheW91dFRlc3RzL2luc3BlY3Rvci9jb25zb2xlL2NvbnNvbGUtZm9ybWF0LWNvbGxl
Y3Rpb25zLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMiw3ICsyLDcgQEAgQ09OU09M
RSBNRVNTQUdFOiBsaW5lIDE1OiBbb2JqZWN0IE5vZGVMaQogQ09OU09MRSBNRVNTQUdFOiBsaW5l
IDE5OiBbb2JqZWN0IEhUTUxDb2xsZWN0aW9uXQogQ09OU09MRSBNRVNTQUdFOiBsaW5lIDIzOiBb
b2JqZWN0IEhUTUxPcHRpb25zQ29sbGVjdGlvbl0KIENPTlNPTEUgTUVTU0FHRTogbGluZSAyNzog
W29iamVjdCBIVE1MQWxsQ29sbGVjdGlvbl0KLUNPTlNPTEUgTUVTU0FHRTogbGluZSAzMTogW29i
amVjdCBIVE1MQ29sbGVjdGlvbl0KK0NPTlNPTEUgTUVTU0FHRTogbGluZSAzMTogW29iamVjdCBI
VE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbl0KIENPTlNPTEUgTUVTU0FHRTogbGluZSAzNTogW29i
amVjdCBOb2RlTGlzdF0KIENPTlNPTEUgTUVTU0FHRTogbGluZSA0MTogMSwyLAogQ09OU09MRSBN
RVNTQUdFOiBsaW5lIDQ0OiBbb2JqZWN0IE9iamVjdF0KQEAgLTExLDcgKzExLDcgQEAgQ09OU09M
RSBNRVNTQUdFOiBsaW5lIDE1OiBbb2JqZWN0IE5vZGVMaQogQ09OU09MRSBNRVNTQUdFOiBsaW5l
IDE5OiBbb2JqZWN0IEhUTUxDb2xsZWN0aW9uXQogQ09OU09MRSBNRVNTQUdFOiBsaW5lIDIzOiBb
b2JqZWN0IEhUTUxPcHRpb25zQ29sbGVjdGlvbl0KIENPTlNPTEUgTUVTU0FHRTogbGluZSAyNzog
W29iamVjdCBIVE1MQWxsQ29sbGVjdGlvbl0KLUNPTlNPTEUgTUVTU0FHRTogbGluZSAzMTogW29i
amVjdCBIVE1MQ29sbGVjdGlvbl0KK0NPTlNPTEUgTUVTU0FHRTogbGluZSAzMTogW29iamVjdCBI
VE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbl0KIENPTlNPTEUgTUVTU0FHRTogbGluZSAzNTogW29i
amVjdCBOb2RlTGlzdF0KIENPTlNPTEUgTUVTU0FHRTogbGluZSA0MTogMSwyLAogQ09OU09MRSBN
RVNTQUdFOiBsaW5lIDQ0OiBbb2JqZWN0IE9iamVjdF0KQEAgLTIyLDE0ICsyMiwxNCBAQCBOb2Rl
TGlzdFsxXSBjb25zb2xlLWZvcm1hdC1jb2xsZWN0aW9ucy5oCiBIVE1MQ29sbGVjdGlvblszXSBj
b25zb2xlLWZvcm1hdC1jb2xsZWN0aW9ucy5odG1sOjE5CiBIVE1MT3B0aW9uc0NvbGxlY3Rpb25b
Ml0gY29uc29sZS1mb3JtYXQtY29sbGVjdGlvbnMuaHRtbDoyMwogSFRNTEFsbENvbGxlY3Rpb25b
MTRdIGNvbnNvbGUtZm9ybWF0LWNvbGxlY3Rpb25zLmh0bWw6MjcKLUhUTUxDb2xsZWN0aW9uWzNd
IGNvbnNvbGUtZm9ybWF0LWNvbGxlY3Rpb25zLmh0bWw6MzEKK0hUTUxGb3JtQ29udHJvbHNDb2xs
ZWN0aW9uWzNdIGNvbnNvbGUtZm9ybWF0LWNvbGxlY3Rpb25zLmh0bWw6MzEKIE5vZGVMaXN0WzJd
IGNvbnNvbGUtZm9ybWF0LWNvbGxlY3Rpb25zLmh0bWw6MzUKIEFycmF5WzJdIGNvbnNvbGUtZm9y
bWF0LWNvbGxlY3Rpb25zLmh0bWw6NDEKIE5vbkFycmF5V2l0aExlbmd0aCBjb25zb2xlLWZvcm1h
dC1jb2xsZWN0aW9ucy5odG1sOjQ0CiBBcmd1bWVudHNbMl0gY29uc29sZS1mb3JtYXQtY29sbGVj
dGlvbnMuaHRtbDo1MQogWzxzZWxlY3Q+XSBjb25zb2xlLWZvcm1hdC1jb2xsZWN0aW9ucy5odG1s
OjE1CiAgY29uc29sZS1mb3JtYXQtY29sbGVjdGlvbnMuaHRtbDoxOQotWzxvcHRpb24+LCA8b3B0
aW9uPiwgc2VsZWN0ZWRJbmRleDogMF0gY29uc29sZS1mb3JtYXQtY29sbGVjdGlvbnMuaHRtbDoy
MworIGNvbnNvbGUtZm9ybWF0LWNvbGxlY3Rpb25zLmh0bWw6MjMKICBjb25zb2xlLWZvcm1hdC1j
b2xsZWN0aW9ucy5odG1sOjI3CiAgY29uc29sZS1mb3JtYXQtY29sbGVjdGlvbnMuaHRtbDozMQog
WzxpbnB1dD4sIDxpbnB1dD5dIGNvbnNvbGUtZm9ybWF0LWNvbGxlY3Rpb25zLmh0bWw6MzUK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>173182</attachid>
            <date>2012-11-08 20:08:31 -0800</date>
            <delta_ts>2012-11-09 12:27:23 -0800</delta_ts>
            <desc>Fixed more tests</desc>
            <filename>bug-101311-20121108200640.patch</filename>
            <type>text/plain</type>
            <size>106585</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEzMzY5MykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEwNSBAQAorMjAxMi0xMS0wNiAgUnlvc3Vr
ZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KKworICAgICAgICBNYWtlIG5hbWVkSXRlbSByZXR1
cm4gYSBub2RlIGxpc3Qgb25seSBpbiBIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbiBhbmQgSFRN
TE9wdGlvbnNDb2xsZWN0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMDEzMTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBJbnRyb2R1Y2UgdHdvIG5ldyBpbnRlcmZhY2VzIEhUTUxGb3JtQ29udHJvbHND
b2xsZWN0aW9uIGFuZCBIVE1MT3B0aW9uc0NvbGxlY3Rpb24gdG8gYmUgdXNlZCBieSBmb3JtLmVs
ZW1lbnRzCisgICAgICAgIGFuZCBzZWxlY3Qub3B0aW9ucy4gVGhlc2UgdHdvIGludGVyZmFjZXMg
aGF2ZSB0aGUgbmFtZWQgZ2V0dGVyIGFuZCBuYW1lZEl0ZW0gdGhhdCByZXR1cm5zIGEgbGl2ZSBO
b2RlTGlzdCB3aGVuCisgICAgICAgIHRoZXJlIGFyZSBtdWx0aXBsZSBtYXRjaGVzLiBJbnRyb2R1
Y2luZyB0aGVzZSB0d28gaW50ZXJmYWNlcyBhbGxvdyB1cyB0byAicmVndWxhciIgSFRNTENvbGxl
Y3Rpb24ncyBuYW1lZCBnZXR0ZXIKKyAgICAgICAgYW5kIG5hbWVkSXRlbSB0byByZXR1cm4gZXhh
Y3RseSBvbmUgbm9kZSBvciBudWxsIGFzIHNwZWNpZmllZCBpbiBIVE1MNToKKyAgICAgICAgaHR0
cDovL3d3dy53aGF0d2cub3JnL3NwZWNzL3dlYi1hcHBzL2N1cnJlbnQtd29yay9tdWx0aXBhZ2Uv
Y29tbW9uLWRvbS1pbnRlcmZhY2VzLmh0bWwjY29sbGVjdGlvbnMtMAorCisgICAgICAgIFVuZm9y
dHVuYXRlbHksIEhUTUxPcHRpb25zQ29sbGVjdGlvbiBzdGlsbCBoYXMgYSBidWcgdGhhdCBpdHMg
bmFtZWQgZ2V0dGVyIGFuZCBuYW1lZEl0ZW0gcmV0dXJucworICAgICAgICBhIHN0YXRpYyBOb2Rl
TGlzdCBpbnN0ZWFkIG9mIGEgbGl2ZSBOb2RlTGlzdCAoRHluYW1pY05vZGVMaXN0KSBhdCB0aGUg
bW9tZW50LgorCisgICAgICAgIEFsc28gZ290IHJpZCBvZiBEb2N1bWVudDo6b2JqZWN0cyBzaW5j
ZSBpdCdzIG5vdCBleHBvc2VkIGluIElETCBvciBjYWxsZWQgYW55d2hlcmUuCisKKyAgICAgICAg
VGVzdDogZmFzdC9kb20vaHRtbC1jb2xsZWN0aW9ucy1uYW1lZEl0ZW0uaHRtbAorCisgICAgICAg
ICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMuY3BwOgorICAgICAg
ICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMucHJpOgor
ICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogVGFyZ2V0LnByaToKKyAg
ICAgICAgKiBVc2VKU0MuY21ha2U6CisgICAgICAgICogVXNlVjguY21ha2U6CisgICAgICAgICog
V2ViQ29yZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOgor
ICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9KU0JpbmRpbmdzQWxsSW5PbmUuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL2pz
L0pTSFRNTEFsbENvbGxlY3Rpb25DdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Z2V0TmFt
ZWRJdGVtcyk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNIVE1MQ29sbGVjdGlvbkN1c3RvbS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpKU0hUTUxDb2xsZWN0aW9uOjpuYW1lR2V0dGVyKTogTm93
IHJldHVybnMgZXhhY3RseSBvbmUgbm9kZSBvciBudWxsLgorICAgICAgICAoV2ViQ29yZTo6dG9K
Uyk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbkN1
c3RvbS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Z2V0TmFtZWRJdGVtcyk6IFJldHVy
bnMgUmFkaW9Ob2RlTGlzdCB3aGVuIHRoZXJlIGFyZSBtdWx0aXBsZSBtYXRjaGVzLgorICAgICAg
ICAoV2ViQ29yZTo6SlNIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbjo6Y2FuR2V0SXRlbXNGb3JO
YW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkpTSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb246Om5h
bWVHZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SlNIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlv
bjo6bmFtZWRJdGVtKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0hUTUxPcHRpb25zQ29sbGVj
dGlvbkN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpnZXROYW1lZEl0ZW1zKTogUmV0dXJu
cyBhIHN0YXRpYyBOb2RlTGlzdCB3aGVuIHRoZXJlIGFyZSBtdWx0aXBsZSBtYXRjaGVzLgorICAg
ICAgICBUaGlzIGlzIGEgYnVnLiBJdCBzaG91bGQgYmUgYSBsaXZlIE5vZGVMaXN0IGluc3RlYWQu
CisgICAgICAgIChXZWJDb3JlOjpKU0hUTUxPcHRpb25zQ29sbGVjdGlvbjo6Y2FuR2V0SXRlbXNG
b3JOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkpTSFRNTE9wdGlvbnNDb2xsZWN0aW9uOjpuYW1l
R2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkpTSFRNTE9wdGlvbnNDb2xsZWN0aW9uOjpuYW1l
ZEl0ZW0pOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0NvZGVHZW5lcmF0b3JKUy5wbTogSW5jbHVk
ZSBKU05vZGUuanMgZm9yIGFsbCBIVE1MKkNvbGxlY3Rpb24gaW50ZXJmYWNlcyBmb3Igc2ltcGxp
Y2l0eS4KKyAgICAgICAgKiBiaW5kaW5ncy9qcy9Db2RlR2VuZXJhdG9yVjgucG06IEhUTUxPcHRp
b25zQ29sbGVjdGlvbiBub3cgaW5oZXJpdHMgZnJvbSBIVE1MQ29sbGVjdGlvbi4gU2VlCisgICAg
ICAgIGh0dHA6Ly93d3cud2hhdHdnLm9yZy9zcGVjcy93ZWItYXBwcy9jdXJyZW50LXdvcmsvbXVs
dGlwYWdlL2NvbW1vbi1kb20taW50ZXJmYWNlcy5odG1sI2h0bWxvcHRpb25zY29sbGVjdGlvbgor
ICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxBbGxDb2xsZWN0aW9uQ3VzdG9tLmNw
cDogUGFzcyBpbiBpc29sYXRlIHdoZW4gd2UgY2FuLgorICAgICAgICAoV2ViQ29yZTo6Z2V0TmFt
ZWRJdGVtcyk6IEFkZGVkIGEgY29tbWVudCBhYm91dCBob3cgd2Ugc2hvdWxkIGJlIHJldHVybmlu
ZworICAgICAgICBhIEhUTUxDb2xsZWN0aW9uIHdoZW4gdGhlcmUgYXJlIG11bHRpcGxlIG1hdGNo
ZXMuCisgICAgICAgIChXZWJDb3JlOjpnZXRJdGVtKToKKyAgICAgICAgKFdlYkNvcmU6OlY4SFRN
TEFsbENvbGxlY3Rpb246Om5hbWVkUHJvcGVydHlHZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6
VjhIVE1MQWxsQ29sbGVjdGlvbjo6bmFtZWRJdGVtQ2FsbGJhY2spOgorICAgICAgICAqIGJpbmRp
bmdzL3Y4L2N1c3RvbS9WOEhUTUxDb2xsZWN0aW9uQ3VzdG9tLmNwcDogTm93IHJldHVybnMgZXhh
Y3RseSBvbmUgbm9kZSBvciBudWxsLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJD
b3JlOjpWOEhUTUxDb2xsZWN0aW9uOjpuYW1lZFByb3BlcnR5R2V0dGVyKToKKyAgICAgICAgKFdl
YkNvcmU6OnRvVjgpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxGb3JtQ29u
dHJvbHNDb2xsZWN0aW9uQ3VzdG9tLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAg
ICAgICAgKFdlYkNvcmU6OmdldE5hbWVkSXRlbXMpOiBSZXR1cm5zIFJhZGlvTm9kZUxpc3Qgd2hl
biB0aGVyZSBhcmUgbXVsdGlwbGUgbWF0Y2hlcy4KKyAgICAgICAgKFdlYkNvcmU6OlY4SFRNTEZv
cm1Db250cm9sc0NvbGxlY3Rpb246Om5hbWVkUHJvcGVydHlHZXR0ZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6VjhIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbjo6bmFtZWRJdGVtQ2FsbGJhY2spOgor
ICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxPcHRpb25zQ29sbGVjdGlvbkN1c3Rv
bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpnZXROYW1lZEl0ZW1zKTogUmV0dXJucyBhIHN0YXRp
YyBOb2RlTGlzdCB3aGVuIHRoZXJlIGFyZSBtdWx0aXBsZSBtYXRjaGVzLgorICAgICAgICBUaGlz
IGlzIGEgYnVnLiBJdCBzaG91bGQgYmUgYSBsaXZlIE5vZGVMaXN0IGluc3RlYWQuCisgICAgICAg
IChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlY4SFRNTE9wdGlvbnNDb2xsZWN0aW9uOjpu
YW1lZFByb3BlcnR5R2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlY4SFRNTE9wdGlvbnNDb2xs
ZWN0aW9uOjpuYW1lZEl0ZW1DYWxsYmFjayk6CisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmUpOiBSZW1vdmVkIERvY3VtZW50OjpvYmplY3RzIHNpbmNlIGl0IHdh
cyBub3QgdXNlZCBhbnl3aGVyZS4KKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaDoKKyAgICAgICAg
KERvY3VtZW50KToKKyAgICAgICAgKiBkb20vRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpFbGVtZW50UmFyZURhdGE6OmVuc3VyZUNhY2hlZEhUTUxDb2xsZWN0aW9uKTogZm9ybS5lbGVt
ZW50cyBzaG91bGQgaW5zdGFudGlhdGUKKyAgICAgICAgYSBIVE1MRm9ybUNvbnRyb2xzQ29sbGVj
dGlvbiBpbnN0ZWFkIG9mIGEgSFRNTENvbGxlY3Rpb24uCisgICAgICAgICogaHRtbC9Db2xsZWN0
aW9uVHlwZS5oOgorICAgICAgICAqIGh0bWwvSFRNTENvbGxlY3Rpb24uaWRsOiBSZW1vdmVkIFtD
dXN0b21dIHNpbmNlIG5hbWVkSXRlbSBpcyBhIHJlZ3VsYXIgZnVuY3Rpb24gY2FsbCBub3cuCisg
ICAgICAgICogaHRtbC9IVE1MRmllbGRTZXRFbGVtZW50LmNwcDoKKyAgICAgICAgKiBodG1sL0hU
TUxGaWVsZFNldEVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxGb3JtQ29sbGVjdGlvbi5j
cHA6IFJlbW92ZWQuCisgICAgICAgICogaHRtbC9IVE1MRm9ybUNvbGxlY3Rpb24uaDogUmVtb3Zl
ZC4KKyAgICAgICAgKiBodG1sL0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmNwcDogQ29waWVk
IGZyb20gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbGxlY3Rpb24uY3BwLgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb246OkhUTUxGb3JtQ29udHJvbHND
b2xsZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9u
OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb246
On5IVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRm9y
bUNvbnRyb2xzQ29sbGVjdGlvbjo6Zm9ybUNvbnRyb2xFbGVtZW50cyk6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbjo6Zm9ybUltYWdlRWxlbWVudHMpOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb246OnZpcnR1YWxJdGVtQWZ0
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb246Om5hbWVk
SXRlbSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbjo6dXBk
YXRlTmFtZUNhY2hlKToKKyAgICAgICAgKiBodG1sL0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9u
Lmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db2xsZWN0aW9uLmgu
CisgICAgICAgIChIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbik6CisgICAgICAgICogaHRtbC9I
VE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5pZGw6IEFkZGVkLgorICAgICAgICAqIGh0bWwvSFRN
TEZvcm1FbGVtZW50LmNwcDoKKyAgICAgICAgKiBodG1sL0hUTUxGb3JtRWxlbWVudC5oOgorICAg
ICAgICAoV2ViQ29yZSk6CisgICAgICAgICogaHRtbC9IVE1MT3B0aW9uc0NvbGxlY3Rpb24uaWRs
OgorCiAyMDEyLTExLTA2ICBIdWFuZyBEb25nc3VuZyAgPGx1eHRlbGxhQGNvbXBhbnkxMDAubmV0
PgogCiAgICAgICAgIEJ1aWxkIGZpeC4gcjEzMzYwMSBicm9rZSB0aGUgV2luZG93cyBidWlsZC4K
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAxMzM2OTMpCisrKyBTb3VyY2UvV2Vi
Q29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNDQxLDYgKzQ0MSw3IEBAIFNF
VChXZWJDb3JlX0lETF9GSUxFUwogICAgIGh0bWwvSFRNTEVtYmVkRWxlbWVudC5pZGwKICAgICBo
dG1sL0hUTUxGaWVsZFNldEVsZW1lbnQuaWRsCiAgICAgaHRtbC9IVE1MRm9udEVsZW1lbnQuaWRs
CisgICAgaHRtbC9IVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5pZGwKICAgICBodG1sL0hUTUxG
b3JtRWxlbWVudC5pZGwKICAgICBodG1sL0hUTUxGcmFtZUVsZW1lbnQuaWRsCiAgICAgaHRtbC9I
VE1MRnJhbWVTZXRFbGVtZW50LmlkbApAQCAtMTM3Myw3ICsxMzc0LDcgQEAgU0VUKFdlYkNvcmVf
U09VUkNFUwogICAgIGh0bWwvSFRNTEVtYmVkRWxlbWVudC5jcHAKICAgICBodG1sL0hUTUxGaWVs
ZFNldEVsZW1lbnQuY3BwCiAgICAgaHRtbC9IVE1MRm9udEVsZW1lbnQuY3BwCi0gICAgaHRtbC9I
VE1MRm9ybUNvbGxlY3Rpb24uY3BwCisgICAgaHRtbC9IVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlv
bi5jcHAKICAgICBodG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwCiAgICAgaHRtbC9IVE1M
Rm9ybUNvbnRyb2xFbGVtZW50V2l0aFN0YXRlLmNwcAogICAgIGh0bWwvSFRNTEZvcm1FbGVtZW50
LmNwcApJbmRleDogU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLmNwcAkocmV2aXNpb24gMTMzNjkzKQor
KysgU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
NjMsNiArMTYzLDcgQEAKICNpbmNsdWRlICJKU0hUTUxFbWJlZEVsZW1lbnQuY3BwIgogI2luY2x1
ZGUgIkpTSFRNTEZpZWxkU2V0RWxlbWVudC5jcHAiCiAjaW5jbHVkZSAiSlNIVE1MRm9udEVsZW1l
bnQuY3BwIgorI2luY2x1ZGUgIkpTSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uY3BwIgogI2lu
Y2x1ZGUgIkpTSFRNTEZvcm1FbGVtZW50LmNwcCIKICNpbmNsdWRlICJKU0hUTUxGcmFtZUVsZW1l
bnQuY3BwIgogI2luY2x1ZGUgIkpTSFRNTEZyYW1lU2V0RWxlbWVudC5jcHAiCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UJKHJldmlzaW9uIDEzMzY5MykKKysrIFNvdXJjZS9XZWJD
b3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UJKHdvcmtpbmcgY29weSkKQEAgLTMwMCw2ICszMDAsNyBA
QCBCSU5ESU5HX0lETFMgPSBcCiAgICAgJChXZWJDb3JlKS9odG1sL0hUTUxFbWJlZEVsZW1lbnQu
aWRsIFwKICAgICAkKFdlYkNvcmUpL2h0bWwvSFRNTEZpZWxkU2V0RWxlbWVudC5pZGwgXAogICAg
ICQoV2ViQ29yZSkvaHRtbC9IVE1MRm9udEVsZW1lbnQuaWRsIFwKKyAgICAkKFdlYkNvcmUpL2h0
bWwvSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uaWRsIFwKICAgICAkKFdlYkNvcmUpL2h0bWwv
SFRNTEZvcm1FbGVtZW50LmlkbCBcCiAgICAgJChXZWJDb3JlKS9odG1sL0hUTUxGcmFtZUVsZW1l
bnQuaWRsIFwKICAgICAkKFdlYkNvcmUpL2h0bWwvSFRNTEZyYW1lU2V0RWxlbWVudC5pZGwgXApJ
bmRleDogU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMucHJpCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLnByaQkocmV2aXNpb24gMTMzNjkzKQorKysgU291
cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMucHJpCSh3b3JraW5nIGNvcHkpCkBAIC0zNTAsNiAr
MzUwLDcgQEAgSURMX0JJTkRJTkdTICs9IFwKICAgICAkJFBXRC9odG1sL0hUTUxFbWJlZEVsZW1l
bnQuaWRsIFwKICAgICAkJFBXRC9odG1sL0hUTUxGaWVsZFNldEVsZW1lbnQuaWRsIFwKICAgICAk
JFBXRC9odG1sL0hUTUxGb250RWxlbWVudC5pZGwgXAorICAgICQkUFdEL2h0bWwvSFRNTEZvcm1D
b250cm9sc0NvbGxlY3Rpb24uaWRsIFwKICAgICAkJFBXRC9odG1sL0hUTUxGb3JtRWxlbWVudC5p
ZGwgXAogICAgICQkUFdEL2h0bWwvSFRNTEZyYW1lRWxlbWVudC5pZGwgXAogICAgICQkUFdEL2h0
bWwvSFRNTEZyYW1lU2V0RWxlbWVudC5pZGwgXApJbmRleDogU291cmNlL1dlYkNvcmUvR05VbWFr
ZWZpbGUubGlzdC5hbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5s
aXN0LmFtCShyZXZpc2lvbiAxMzM2OTMpCisrKyBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5s
aXN0LmFtCSh3b3JraW5nIGNvcHkpCkBAIC0zMzcsNiArMzM3LDggQEAgd2ViY29yZV9idWlsdF9z
b3VyY2VzICs9IFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTSFRNTEZpZWxkU2V0RWxlbWVu
dC5oIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTSFRNTEZvbnRFbGVtZW50LmNwcCBcCiAJ
RGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0hUTUxGb250RWxlbWVudC5oIFwKKwlEZXJpdmVkU291
cmNlcy9XZWJDb3JlL0pTSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uY3BwIFwKKwlEZXJpdmVk
U291cmNlcy9XZWJDb3JlL0pTSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uaCBcCiAJRGVyaXZl
ZFNvdXJjZXMvV2ViQ29yZS9KU0hUTUxGb3JtRWxlbWVudC5jcHAgXAogCURlcml2ZWRTb3VyY2Vz
L1dlYkNvcmUvSlNIVE1MRm9ybUVsZW1lbnQuaCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9K
U0hUTUxGcmFtZUVsZW1lbnQuY3BwIFwKQEAgLTE0NDAsNiArMTQ0Miw3IEBAIGRvbV9iaW5kaW5n
X2lkbHMgKz0gXAogCSQoV2ViQ29yZSkvaHRtbC9IVE1MRW1iZWRFbGVtZW50LmlkbCBcCiAJJChX
ZWJDb3JlKS9odG1sL0hUTUxGaWVsZFNldEVsZW1lbnQuaWRsIFwKIAkkKFdlYkNvcmUpL2h0bWwv
SFRNTEZvbnRFbGVtZW50LmlkbCBcCisJJChXZWJDb3JlKS9odG1sL0hUTUxGb3JtQ29udHJvbHND
b2xsZWN0aW9uLmlkbCBcCiAJJChXZWJDb3JlKS9odG1sL0hUTUxGb3JtRWxlbWVudC5pZGwgXAog
CSQoV2ViQ29yZSkvaHRtbC9IVE1MRnJhbWVFbGVtZW50LmlkbCBcCiAJJChXZWJDb3JlKS9odG1s
L0hUTUxGcmFtZVNldEVsZW1lbnQuaWRsIFwKQEAgLTIzMjQsNiArMjMyNyw3IEBAIHdlYmNvcmVf
c291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MRWxlbWVudEN1
c3RvbS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEVtYmVkRWxlbWVu
dEN1c3RvbS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEVtYmVkRWxl
bWVudEN1c3RvbS5oIFwKKwlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxGb3JtQ29u
dHJvbHNDb2xsZWN0aW9uQ3VzdG9tLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNIVE1MRm9ybUVsZW1lbnRDdXN0b20uY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0hUTUxGcmFtZUVsZW1lbnRDdXN0b20uY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0hUTUxGcmFtZVNldEVsZW1lbnRDdXN0b20uY3BwIFwKQEAgLTMzMjksOCArMzMzMyw4
IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRmllbGRT
ZXRFbGVtZW50LmggXAogCVNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvbnRFbGVtZW50LmNwcCBc
CiAJU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9udEVsZW1lbnQuaCBcCi0JU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MRm9ybUNvbGxlY3Rpb24uY3BwIFwKLQlTb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxGb3JtQ29sbGVjdGlvbi5oIFwKKwlTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJv
bHNDb2xsZWN0aW9uLmNwcCBcCisJU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xz
Q29sbGVjdGlvbi5oIFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1l
bnQuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuaCBc
CiAJU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50V2l0aFN0YXRlLmNw
cCBcCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL1RhcmdldC5wcmkJKHJldmlzaW9uIDEzMzY5MykKKysrIFNvdXJjZS9XZWJDb3Jl
L1RhcmdldC5wcmkJKHdvcmtpbmcgY29weSkKQEAgLTEzMiw2ICsxMzIsNyBAQCBTT1VSQ0VTICs9
IFwKICAgICAgYmluZGluZ3MvanMvSlNIVE1MRG9jdW1lbnRDdXN0b20uY3BwIFwKICAgICAgYmlu
ZGluZ3MvanMvSlNIVE1MRWxlbWVudEN1c3RvbS5jcHAgXAogICAgICBiaW5kaW5ncy9qcy9KU0hU
TUxFbWJlZEVsZW1lbnRDdXN0b20uY3BwIFwKKyAgICAgYmluZGluZ3MvanMvSlNIVE1MRm9ybUNv
bnRyb2xzQ29sbGVjdGlvbkN1c3RvbS5jcHAgXAogICAgICBiaW5kaW5ncy9qcy9KU0hUTUxGb3Jt
RWxlbWVudEN1c3RvbS5jcHAgXAogICAgICBiaW5kaW5ncy9qcy9KU0hUTUxGcmFtZUVsZW1lbnRD
dXN0b20uY3BwIFwKICAgICAgYmluZGluZ3MvanMvSlNIVE1MRnJhbWVTZXRFbGVtZW50Q3VzdG9t
LmNwcCBcCkBAIC02MDIsNyArNjAzLDcgQEAgU09VUkNFUyArPSBcCiAgICAgaHRtbC9IVE1MRW1i
ZWRFbGVtZW50LmNwcCBcCiAgICAgaHRtbC9IVE1MRmllbGRTZXRFbGVtZW50LmNwcCBcCiAgICAg
aHRtbC9IVE1MRm9udEVsZW1lbnQuY3BwIFwKLSAgICBodG1sL0hUTUxGb3JtQ29sbGVjdGlvbi5j
cHAgXAorICAgIGh0bWwvSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uY3BwIFwKICAgICBodG1s
L0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwIFwKICAgICBodG1sL0hUTUxGb3JtQ29udHJvbEVs
ZW1lbnRXaXRoU3RhdGUuY3BwIFwKICAgICBodG1sL0hUTUxGb3JtRWxlbWVudC5jcHAgXApAQCAt
MTc1OCw3ICsxNzU5LDcgQEAgSEVBREVSUyArPSBcCiAgICAgaHRtbC9IVE1MRW1iZWRFbGVtZW50
LmggXAogICAgIGh0bWwvSFRNTEZpZWxkU2V0RWxlbWVudC5oIFwKICAgICBodG1sL0hUTUxGb250
RWxlbWVudC5oIFwKLSAgICBodG1sL0hUTUxGb3JtQ29sbGVjdGlvbi5oIFwKKyAgICBodG1sL0hU
TUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmggXAogICAgIGh0bWwvSFRNTEZvcm1Db250cm9sRWxl
bWVudC5oIFwKICAgICBodG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnRXaXRoU3RhdGUuaCBcCiAg
ICAgaHRtbC9IVE1MRm9ybUVsZW1lbnQuaCBcCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Vc2VKU0Mu
Y21ha2UKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvVXNlSlNDLmNtYWtlCShyZXZpc2lv
biAxMzM2OTMpCisrKyBTb3VyY2UvV2ViQ29yZS9Vc2VKU0MuY21ha2UJKHdvcmtpbmcgY29weSkK
QEAgLTg0LDYgKzg0LDcgQEAgTElTVChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAgICAgYmluZGlu
Z3MvanMvSlNIVE1MRG9jdW1lbnRDdXN0b20uY3BwCiAgICAgYmluZGluZ3MvanMvSlNIVE1MRWxl
bWVudEN1c3RvbS5jcHAKICAgICBiaW5kaW5ncy9qcy9KU0hUTUxFbWJlZEVsZW1lbnRDdXN0b20u
Y3BwCisgICAgYmluZGluZ3MvanMvSlNIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbkN1c3RvbS5j
cHAKICAgICBiaW5kaW5ncy9qcy9KU0hUTUxGb3JtRWxlbWVudEN1c3RvbS5jcHAKICAgICBiaW5k
aW5ncy9qcy9KU0hUTUxGcmFtZUVsZW1lbnRDdXN0b20uY3BwCiAgICAgYmluZGluZ3MvanMvSlNI
VE1MRnJhbWVTZXRFbGVtZW50Q3VzdG9tLmNwcApJbmRleDogU291cmNlL1dlYkNvcmUvVXNlVjgu
Y21ha2UKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvVXNlVjguY21ha2UJKHJldmlzaW9u
IDEzMzY5MykKKysrIFNvdXJjZS9XZWJDb3JlL1VzZVY4LmNtYWtlCSh3b3JraW5nIGNvcHkpCkBA
IC0xMDYsNiArMTA2LDcgQEAgTElTVChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAgICAgYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4SFRNTENvbGxlY3Rpb25DdXN0b20uY3BwCiAgICAgYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4SFRNTERvY3VtZW50Q3VzdG9tLmNwcAogICAgIGJpbmRpbmdzL3Y4L2N1c3RvbS9W
OEhUTUxFbGVtZW50Q3VzdG9tLmNwcAorICAgIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxGb3Jt
Q29udHJvbHNDb2xsZWN0aW9uQ3VzdG9tLmNwcAogICAgIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEhU
TUxGb3JtRWxlbWVudEN1c3RvbS5jcHAKICAgICBiaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MRnJh
bWVFbGVtZW50Q3VzdG9tLmNwcAogICAgIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxGcmFtZVNl
dEVsZW1lbnRDdXN0b20uY3BwCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCShyZXZpc2lvbiAxMzM2OTMp
CisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkJKHdvcmtpbmcgY29weSkKQEAgLTEwODQs
NiArMTA4NCw3IEBACiAgICAgICAgICAgICAnaHRtbC9IVE1MRW1iZWRFbGVtZW50LmlkbCcsCiAg
ICAgICAgICAgICAnaHRtbC9IVE1MRmllbGRTZXRFbGVtZW50LmlkbCcsCiAgICAgICAgICAgICAn
aHRtbC9IVE1MRm9udEVsZW1lbnQuaWRsJywKKyAgICAgICAgICAgICdodG1sL0hUTUxGb3JtQ29u
dHJvbHNDb2xsZWN0aW9uLmlkbCcsCiAgICAgICAgICAgICAnaHRtbC9IVE1MRm9ybUVsZW1lbnQu
aWRsJywKICAgICAgICAgICAgICdodG1sL0hUTUxGcmFtZUVsZW1lbnQuaWRsJywKICAgICAgICAg
ICAgICdodG1sL0hUTUxGcmFtZVNldEVsZW1lbnQuaWRsJywKQEAgLTIwNzcsNiArMjA3OCw3IEBA
CiAgICAgICAgICAgICAnYmluZGluZ3MvanMvSlNIVE1MRWxlbWVudEN1c3RvbS5jcHAnLAogICAg
ICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTSFRNTEVtYmVkRWxlbWVudEN1c3RvbS5jcHAnLAogICAg
ICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTSFRNTEVtYmVkRWxlbWVudEN1c3RvbS5oJywKKyAgICAg
ICAgICAgICdiaW5kaW5ncy9qcy9KU0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uQ3VzdG9tLmNw
cCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvanMvSlNIVE1MRm9ybUVsZW1lbnRDdXN0b20uY3Bw
JywKICAgICAgICAgICAgICdiaW5kaW5ncy9qcy9KU0hUTUxGcmFtZUVsZW1lbnRDdXN0b20uY3Bw
JywKICAgICAgICAgICAgICdiaW5kaW5ncy9qcy9KU0hUTUxGcmFtZVNldEVsZW1lbnRDdXN0b20u
Y3BwJywKQEAgLTIzOTQsNiArMjM5Niw3IEBACiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4SFRNTENvbGxlY3Rpb25DdXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy92
OC9jdXN0b20vVjhIVE1MRG9jdW1lbnRDdXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5n
cy92OC9jdXN0b20vVjhIVE1MRWxlbWVudEN1c3RvbS5jcHAnLAorICAgICAgICAgICAgJ2JpbmRp
bmdzL3Y4L2N1c3RvbS9WOEhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uQ3VzdG9tLmNwcCcsCiAg
ICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTEZvcm1FbGVtZW50Q3VzdG9tLmNw
cCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTEZyYW1lRWxlbWVudEN1
c3RvbS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxGcmFtZVNl
dEVsZW1lbnRDdXN0b20uY3BwJywKQEAgLTQxMDgsOCArNDExMSw4IEBACiAgICAgICAgICAgICAn
aHRtbC9IVE1MRmllbGRTZXRFbGVtZW50LmgnLAogICAgICAgICAgICAgJ2h0bWwvSFRNTEZvbnRF
bGVtZW50LmNwcCcsCiAgICAgICAgICAgICAnaHRtbC9IVE1MRm9udEVsZW1lbnQuaCcsCi0gICAg
ICAgICAgICAnaHRtbC9IVE1MRm9ybUNvbGxlY3Rpb24uY3BwJywKLSAgICAgICAgICAgICdodG1s
L0hUTUxGb3JtQ29sbGVjdGlvbi5oJywKKyAgICAgICAgICAgICdodG1sL0hUTUxGb3JtQ29udHJv
bHNDb2xsZWN0aW9uLmNwcCcsCisgICAgICAgICAgICAnaHRtbC9IVE1MRm9ybUNvbnRyb2xzQ29s
bGVjdGlvbi5oJywKICAgICAgICAgICAgICdodG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3Bw
JywKICAgICAgICAgICAgICdodG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnRXaXRoU3RhdGUuY3Bw
JywKICAgICAgICAgICAgICdodG1sL0hUTUxGb3JtRWxlbWVudC5jcHAnLApAQCAtNzYxNCw2ICs3
NjE3LDggQEAKICAgICAgICAgICAgICc8KFBST0RVQ1RfRElSKS9EZXJpdmVkU291cmNlcy9XZWJD
b3JlL0pTSFRNTEZpZWxkU2V0RWxlbWVudC5oJywKICAgICAgICAgICAgICc8KFBST0RVQ1RfRElS
KS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTSFRNTEZvbnRFbGVtZW50LmNwcCcsCiAgICAgICAg
ICAgICAnPChQUk9EVUNUX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0hUTUxGb250RWxl
bWVudC5oJywKKyAgICAgICAgICAgICc8KFBST0RVQ1RfRElSKS9EZXJpdmVkU291cmNlcy9XZWJD
b3JlL0pTSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uY3BwJywKKyAgICAgICAgICAgICc8KFBS
T0RVQ1RfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTSFRNTEZvcm1Db250cm9sc0NvbGxl
Y3Rpb24uaCcsCiAgICAgICAgICAgICAnPChQUk9EVUNUX0RJUikvRGVyaXZlZFNvdXJjZXMvV2Vi
Q29yZS9KU0hUTUxGb3JtRWxlbWVudC5jcHAnLAogICAgICAgICAgICAgJzwoUFJPRFVDVF9ESVIp
L0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNIVE1MRm9ybUVsZW1lbnQuaCcsCiAgICAgICAgICAg
ICAnPChQUk9EVUNUX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0hUTUxGcmFtZUVsZW1l
bnQuY3BwJywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNw
cm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUu
dmNwcm9qCShyZXZpc2lvbiAxMzM2OTMpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJv
ai9XZWJDb3JlLnZjcHJvagkod29ya2luZyBjb3B5KQpAQCAtNjkzNCw2ICs2OTM0LDYyIEBACiAJ
CQkJPgogCQkJPC9GaWxlPgogCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9IiQoQ29uZmlndXJh
dGlvbkJ1aWxkRGlyKVxvYmpcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNIVE1MRm9y
bUNvbnRyb2xzQ29sbGVjdGlvbi5jcHAiCisJCQkJPgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgor
CQkJCQlOYW1lPSJEZWJ1Z3xXaW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJ
CQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCS8+
CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJ
TmFtZT0iUmVsZWFzZXxXaW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJ
CT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCS8+CisJ
CQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFt
ZT0iRGVidWdfQ2Fpcm9fQ0ZMaXRlfFdpbjMyIgorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1
ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJ
CQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgor
CQkJCQlOYW1lPSJSZWxlYXNlX0NhaXJvX0NGTGl0ZXxXaW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9t
QnVpbGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxl
clRvb2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8RmlsZUNvbmZp
Z3VyYXRpb24KKwkJCQkJTmFtZT0iRGVidWdfQWxsfFdpbjMyIgorCQkJCQlFeGNsdWRlZEZyb21C
dWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVy
VG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCTxGaWxlQ29uZmln
dXJhdGlvbgorCQkJCQlOYW1lPSJQcm9kdWN0aW9ufFdpbjMyIgorCQkJCQlFeGNsdWRlZEZyb21C
dWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVy
VG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJPC9GaWxlPgorCQkJ
PEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmpcJChQ
cm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5o
IgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCiAJCQkJUmVsYXRpdmVQYXRoPSIkKENvbmZp
Z3VyYXRpb25CdWlsZERpcilcb2JqXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTSFRN
TEZvcm1FbGVtZW50LmNwcCIKIAkJCQk+CiAJCQkJPEZpbGVDb25maWd1cmF0aW9uCkBAIC02MDQ3
NSwxMSArNjA1MzEsMTEgQEAKIAkJCQk+CiAJCQk8L0ZpbGU+CiAJCQk8RmlsZQotCQkJCVJlbGF0
aXZlUGF0aD0iLi5caHRtbFxIVE1MRm9ybUNvbGxlY3Rpb24uY3BwIgorCQkJCVJlbGF0aXZlUGF0
aD0iLi5caHRtbFxIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5jcHAiCiAJCQkJPgogCQkJPC9G
aWxlPgogCQkJPEZpbGUKLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGh0bWxcSFRNTEZvcm1Db2xsZWN0
aW9uLmgiCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxodG1sXEhUTUxGb3JtQ29udHJvbHNDb2xsZWN0
aW9uLmgiCiAJCQkJPgogCQkJPC9GaWxlPgogCQkJPEZpbGUKQEAgLTY4MDE0LDYgKzY4MDcwLDU4
IEBACiAJCQkJCT4KIAkJCQk8L0ZpbGU+CiAJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIu
LlxiaW5kaW5nc1xqc1xKU0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uQ3VzdG9tLmNwcCIKKwkJ
CQkJPgorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJCU5hbWU9IkRlYnVnfFdpbjMyIgor
CQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCQk+CisJCQkJCQk8VG9vbAorCQkJ
CQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCQkvPgorCQkJCQk8L0ZpbGVDb25maWd1
cmF0aW9uPgorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJCU5hbWU9IlJlbGVhc2V8V2lu
MzIiCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJCT4KKwkJCQkJCTxUb29s
CisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJCS8+CisJCQkJCTwvRmlsZUNv
bmZpZ3VyYXRpb24+CisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQkJTmFtZT0iRGVidWdf
Q2Fpcm9fQ0ZMaXRlfFdpbjMyIgorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJ
CQk+CisJCQkJCQk8VG9vbAorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCQkv
PgorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJ
CQkJCU5hbWU9IlJlbGVhc2VfQ2Fpcm9fQ0ZMaXRlfFdpbjMyIgorCQkJCQkJRXhjbHVkZWRGcm9t
QnVpbGQ9InRydWUiCisJCQkJCQk+CisJCQkJCQk8VG9vbAorCQkJCQkJCU5hbWU9IlZDQ0xDb21w
aWxlclRvb2wiCisJCQkJCQkvPgorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCQk8Rmls
ZUNvbmZpZ3VyYXRpb24KKwkJCQkJCU5hbWU9IkRlYnVnX0FsbHxXaW4zMiIKKwkJCQkJCUV4Y2x1
ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQkJPgorCQkJCQkJPFRvb2wKKwkJCQkJCQlOYW1lPSJW
Q0NMQ29tcGlsZXJUb29sIgorCQkJCQkJLz4KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJ
CQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCQlOYW1lPSJQcm9kdWN0aW9ufFdpbjMyIgorCQkJ
CQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCQk+CisJCQkJCQk8VG9vbAorCQkJCQkJ
CU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCQkvPgorCQkJCQk8L0ZpbGVDb25maWd1cmF0
aW9uPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQogCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGJpbmRp
bmdzXGpzXEpTSFRNTEZvcm1FbGVtZW50Q3VzdG9tLmNwcCIKIAkJCQkJPgogCQkJCQk8RmlsZUNv
bmZpZ3VyYXRpb24KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDEzMzY5MykKKysrIFNvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMzc0Myw2
ICszNzQzLDcgQEAKIAkJOUExQjZGOTcxNTg4NjlDODAwMTFBOEM0IC8qIEpTRE9NU3RyaW5nTGlz
dEN1c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA5QTFCNkY5NjE1ODg2OUM4MDAxMUE4QzQgLyogSlNET01TdHJpbmdMaXN0Q3VzdG9tLmNwcCAq
LzsgfTsKIAkJOUIwRkIxOTExNDBEQjU3OTAwMjI1ODhGIC8qIEhUVFBWYWxpZGF0aW9uLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlCMEZCMThGMTQw
REI1NzkwMDIyNTg4RiAvKiBIVFRQVmFsaWRhdGlvbi5jcHAgKi87IH07CiAJCTlCMEZCMTkyMTQw
REI1NzkwMDIyNTg4RiAvKiBIVFRQVmFsaWRhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUIwRkIxOTAxNDBEQjU3OTAwMjI1ODhGIC8qIEhUVFBW
YWxpZGF0aW9uLmggKi87IH07CisJCTlCMUFCMDdDMTY0OEM3QzQwMDUxRjNGMiAvKiBKU0hUTUxG
b3JtQ29udHJvbHNDb2xsZWN0aW9uQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlCMUFCMDdCMTY0OEM3QzQwMDUxRjNGMiAvKiBKU0hUTUxG
b3JtQ29udHJvbHNDb2xsZWN0aW9uQ3VzdG9tLmNwcCAqLzsgfTsKIAkJOUIyNERFOEUxNTE5NEI5
NTAwQzU5QzI3IC8qIEhUTUxCRElFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA5QjI0REU4QzE1MTk0Qjk1MDBDNTlDMjcgLyogSFRNTEJESUVs
ZW1lbnQuaCAqLzsgfTsKIAkJOUIyQjdBQzExNTA5ODUwQTAwODkzMkNDIC8qIE1pY3JvRGF0YUl0
ZW1WYWx1ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA5QjJGN0NGNzE0NTYyMTIwMDA3RjhCNTAgLyogTWljcm9EYXRhSXRlbVZhbHVlLmNwcCAqLzsg
fTsKIAkJOUIyRDhBNzkxNDk5N0NDRjAwRUNFRjNFIC8qIFVuZG9TdGVwLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QjJEOEE3ODE0OTk3Q0NGMDBFQ0VG
M0UgLyogVW5kb1N0ZXAuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwpAQCAtMzc2MSw2ICszNzYyLDggQEAKIAkJOUJDNkMyMUMxM0NDQzk3QjAwOEUwMzM3
IC8qIEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlCQzZDMjFBMTNDQ0M5N0IwMDhFMDMzNyAvKiBIVE1M
VGV4dEZvcm1Db250cm9sRWxlbWVudC5jcHAgKi87IH07CiAJCTlCRDBCRjkzMTJBNDJCRjUwMDcy
RkQ0MyAvKiBTY29wZWRFdmVudFF1ZXVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA5QkQwQkY5MTEyQTQyQkY1MDA3MkZENDMgLyogU2NvcGVkRXZlbnRR
dWV1ZS5oICovOyB9OwogCQk5QkQwQkY5NDEyQTQyQkY1MDA3MkZENDMgLyogU2NvcGVkRXZlbnRR
dWV1ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5
QkQwQkY5MjEyQTQyQkY1MDA3MkZENDMgLyogU2NvcGVkRXZlbnRRdWV1ZS5jcHAgKi87IH07CisJ
CTlCRjlBODgwMTY0OEREMkYwMDFDNkIyMyAvKiBKU0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9u
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlCRjlB
ODdFMTY0OEREMkYwMDFDNkIyMyAvKiBKU0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmNwcCAq
LzsgfTsKKwkJOUJGOUE4ODExNjQ4REQyRjAwMUM2QjIzIC8qIEpTSFRNTEZvcm1Db250cm9sc0Nv
bGxlY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDlCRjlBODdGMTY0OEREMkYwMDFDNkIyMyAvKiBKU0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9u
LmggKi87IH07CiAJCTlGMEQ2QjJFMTIxQkZFQkEwMDZDMDI4OCAvKiBJbnNwZWN0b3JQcm9maWxl
ckFnZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDlGMEQ2QjJDMTIxQkZFQkEwMDZDMDI4OCAvKiBJbnNwZWN0b3JQcm9maWxlckFnZW50LmNwcCAq
LzsgfTsKIAkJOUYwRDZCMkYxMjFCRkVCQTAwNkMwMjg4IC8qIEluc3BlY3RvclByb2ZpbGVyQWdl
bnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlGMEQ2
QjJEMTIxQkZFQkEwMDZDMDI4OCAvKiBJbnNwZWN0b3JQcm9maWxlckFnZW50LmggKi87IH07CiAJ
CTlGM0I5NDdFMTIyNDE3NTgwMDUzMDRFNyAvKiBTY3JpcHRIZWFwU25hcHNob3QuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlGM0I5NDdEMTIyNDE3NTgw
MDUzMDRFNyAvKiBTY3JpcHRIZWFwU25hcHNob3QuaCAqLzsgfTsKQEAgLTQzNDgsOCArNDM1MSw4
IEBACiAJCUE4RDA2NUFFMEEyNDQ2Q0QwMDVFNzIwMyAvKiBKU0hUTUxGb3JtRWxlbWVudEN1c3Rv
bS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBOEQw
NjVBRDBBMjQ0NkNEMDA1RTcyMDMgLyogSlNIVE1MRm9ybUVsZW1lbnRDdXN0b20uY3BwICovOyB9
OwogCQlBOEQwNkIzOTBBMjY1RENEMDA1RTcyMDMgLyogSFRNTE5hbWVzLmggaW4gQ29weSBHZW5l
cmF0ZWQgSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBOEQwNkIz
NzBBMjY1RENEMDA1RTcyMDMgLyogSFRNTE5hbWVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoKTsgfTsgfTsKIAkJQThEMDZCM0EwQTI2NURDRDAwNUU3MjAzIC8qIEhUTUxOYW1lcy5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBOEQwNkIz
ODBBMjY1RENEMDA1RTcyMDMgLyogSFRNTE5hbWVzLmNwcCAqLzsgfTsKLQkJQThERjNGQ0UwOTdG
QTBGQzAwNTI5ODFCIC8qIEhUTUxGb3JtQ29sbGVjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThERjNGQzYwOTdGQTBGQjAwNTI5ODFCIC8qIEhU
TUxGb3JtQ29sbGVjdGlvbi5oICovOyB9OwotCQlBOERGM0ZDRjA5N0ZBMEZDMDA1Mjk4MUIgLyog
SFRNTEZvcm1Db2xsZWN0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEE4REYzRkM3MDk3RkEwRkIwMDUyOTgxQiAvKiBIVE1MRm9ybUNvbGxlY3Rp
b24uY3BwICovOyB9OworCQlBOERGM0ZDRTA5N0ZBMEZDMDA1Mjk4MUIgLyogSFRNTEZvcm1Db250
cm9sc0NvbGxlY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEE4REYzRkM2MDk3RkEwRkIwMDUyOTgxQiAvKiBIVE1MRm9ybUNvbnRyb2xzQ29sbGVj
dGlvbi5oICovOyB9OworCQlBOERGM0ZDRjA5N0ZBMEZDMDA1Mjk4MUIgLyogSFRNTEZvcm1Db250
cm9sc0NvbGxlY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQThERjNGQzcwOTdGQTBGQjAwNTI5ODFCIC8qIEhUTUxGb3JtQ29udHJvbHNDb2xs
ZWN0aW9uLmNwcCAqLzsgfTsKIAkJQThERjNGRDAwOTdGQTBGQzAwNTI5ODFCIC8qIEhUTUxDb2xs
ZWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBB
OERGM0ZDODA5N0ZBMEZCMDA1Mjk4MUIgLyogSFRNTENvbGxlY3Rpb24uaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBOERGM0ZEMTA5N0ZBMEZDMDA1
Mjk4MUIgLyogSFRNTENvbGxlY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQThERjNGQzkwOTdGQTBGQjAwNTI5ODFCIC8qIEhUTUxDb2xsZWN0
aW9uLmNwcCAqLzsgfTsKIAkJQThERjNGRDIwOTdGQTBGQzAwNTI5ODFCIC8qIEhUTUxCYXNlRm9u
dEVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEE4REYzRkNBMDk3RkEwRkIwMDUyOTgxQiAvKiBIVE1MQmFzZUZvbnRFbGVtZW50LmggKi87IH07
CkBAIC0xMTAxMSw2ICsxMTAxNCw4IEBACiAJCTlBMUI2Rjk2MTU4ODY5QzgwMDExQThDNCAvKiBK
U0RPTVN0cmluZ0xpc3RDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gSlNET01TdHJpbmdMaXN0Q3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJOUIwRkIxOEYxNDBEQjU3OTAwMjI1ODhGIC8qIEhUVFBWYWxpZGF0aW9uLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEhUVFBWYWxpZGF0aW9uLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUIwRkIxOTAxNDBEQjU3OTAwMjI1ODhGIC8qIEhU
VFBWYWxpZGF0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhUVFBWYWxp
ZGF0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTlCMUFCMDc5MTY0OEM2OUQw
MDUxRjNGMiAvKiBIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5pZGwgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gSFRNTEZvcm1D
b250cm9sc0NvbGxlY3Rpb24uaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5QjFB
QjA3QjE2NDhDN0M0MDA1MUYzRjIgLyogSlNIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbkN1c3Rv
bS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0hUTUxGb3JtQ29u
dHJvbHNDb2xsZWN0aW9uQ3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
OUIyNERFOEMxNTE5NEI5NTAwQzU5QzI3IC8qIEhUTUxCRElFbGVtZW50LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhUTUxCRElFbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTlCMkQ4QTc4MTQ5OTdDQ0YwMEVDRUYzRSAvKiBVbmRvU3RlcC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBVbmRvU3RlcC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk5QjJGN0NGNzE0NTYyMTIwMDA3RjhCNTAgLyogTWljcm9EYXRhSXRlbVZh
bHVlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1pY3JvRGF0YUl0
ZW1WYWx1ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMTAzMCw2ICsxMTAz
NSw4IEBACiAJCTlCQzZDMjFBMTNDQ0M5N0IwMDhFMDMzNyAvKiBIVE1MVGV4dEZvcm1Db250cm9s
RWxlbWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBIVE1MVGV4
dEZvcm1Db250cm9sRWxlbWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlC
RDBCRjkxMTJBNDJCRjUwMDcyRkQ0MyAvKiBTY29wZWRFdmVudFF1ZXVlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjb3BlZEV2ZW50UXVldWUuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJOUJEMEJGOTIxMkE0MkJGNTAwNzJGRDQzIC8qIFNjb3BlZEV2ZW50UXVl
dWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2NvcGVkRXZlbnRR
dWV1ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTlCRjlBODdFMTY0OEREMkYw
MDFDNkIyMyAvKiBKU0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5QkY5QTg3RjE2NDhERDJGMDAxQzZCMjMg
LyogSlNIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBKU0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTlGMEQ2QjJDMTIxQkZFQkEwMDZDMDI4OCAvKiBJbnNwZWN0b3JQcm9m
aWxlckFnZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEluc3Bl
Y3RvclByb2ZpbGVyQWdlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5RjBE
NkIyRDEyMUJGRUJBMDA2QzAyODggLyogSW5zcGVjdG9yUHJvZmlsZXJBZ2VudC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnNwZWN0b3JQcm9maWxlckFnZW50Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlGM0I5NDdEMTIyNDE3NTgwMDUzMDRFNyAvKiBTY3Jp
cHRIZWFwU25hcHNob3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2NyaXB0
SGVhcFNuYXBzaG90Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMTUxNSw4ICsx
MTUyMiw4IEBACiAJCUE4RDA2NUFEMEEyNDQ2Q0QwMDVFNzIwMyAvKiBKU0hUTUxGb3JtRWxlbWVu
dEN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0hUTUxG
b3JtRWxlbWVudEN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4RDA2
QjM3MEEyNjVEQ0QwMDVFNzIwMyAvKiBIVE1MTmFtZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEhUTUxOYW1lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlB
OEQwNkIzODBBMjY1RENEMDA1RTcyMDMgLyogSFRNTE5hbWVzLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBIVE1MTmFtZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQlBOERGM0ZDNjA5N0ZBMEZCMDA1Mjk4MUIgLyogSFRNTEZvcm1Db2xsZWN0aW9u
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBIVE1MRm9ybUNvbGxlY3Rpb24u
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQThERjNGQzcwOTdGQTBGQjAwNTI5ODFC
IC8qIEhUTUxGb3JtQ29sbGVjdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gSFRNTEZvcm1Db2xsZWN0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJQThERjNGQzYwOTdGQTBGQjAwNTI5ODFCIC8qIEhUTUxGb3JtQ29udHJvbHNDb2xsZWN0
aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBIVE1MRm9ybUNvbnRyb2xz
Q29sbGVjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBOERGM0ZDNzA5N0ZB
MEZCMDA1Mjk4MUIgLyogSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQThERjNGQzgwOTdGQTBGQjAwNTI5ODFC
IC8qIEhUTUxDb2xsZWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBI
VE1MQ29sbGVjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBOERGM0ZDOTA5
N0ZBMEZCMDA1Mjk4MUIgLyogSFRNTENvbGxlY3Rpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEhUTUxDb2xsZWN0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQThERjNGQ0EwOTdGQTBGQjAwNTI5ODFCIC8qIEhUTUxCYXNlRm9udEVsZW1l
bnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhUTUxCYXNlRm9udEVsZW1l
bnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE3NTI4LDggKzE3NTM1LDkgQEAK
IAkJCQlBOENGRjc5ODBBMTU2OTc4MDAwQTQyMzQgLyogSFRNTEZvbnRFbGVtZW50LmNwcCAqLywK
IAkJCQlBOENGRjc5QzBBMTU2OTc4MDAwQTQyMzQgLyogSFRNTEZvbnRFbGVtZW50LmggKi8sCiAJ
CQkJMUFFMkE5RjUwQTFDREE1NzAwQjQyQjI1IC8qIEhUTUxGb250RWxlbWVudC5pZGwgKi8sCi0J
CQkJQThERjNGQzcwOTdGQTBGQjAwNTI5ODFCIC8qIEhUTUxGb3JtQ29sbGVjdGlvbi5jcHAgKi8s
Ci0JCQkJQThERjNGQzYwOTdGQTBGQjAwNTI5ODFCIC8qIEhUTUxGb3JtQ29sbGVjdGlvbi5oICov
LAorCQkJCUE4REYzRkM3MDk3RkEwRkIwMDUyOTgxQiAvKiBIVE1MRm9ybUNvbnRyb2xzQ29sbGVj
dGlvbi5jcHAgKi8sCisJCQkJQThERjNGQzYwOTdGQTBGQjAwNTI5ODFCIC8qIEhUTUxGb3JtQ29u
dHJvbHNDb2xsZWN0aW9uLmggKi8sCisJCQkJOUIxQUIwNzkxNjQ4QzY5RDAwNTFGM0YyIC8qIEhU
TUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmlkbCAqLywKIAkJCQlBODEzNjlCMzA5NzM3NEY1MDBE
NzQ0NjMgLyogSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHAgKi8sCiAJCQkJQTgxMzY5QjIwOTcz
NzRGNTAwRDc0NDYzIC8qIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQuaCAqLywKIAkJCQlFMTRGMUM0
MjE0QjVEQUM2MDBFQTkwMDkgLyogSFRNTEZvcm1Db250cm9sRWxlbWVudFdpdGhTdGF0ZS5jcHAg
Ki8sCkBAIC0xODQxNyw2ICsxODQyNSw4IEBACiAJCQkJMUFFMkFBMTMwQTFDREFCMzAwQjQyQjI1
IC8qIEpTSFRNTEZpZWxkU2V0RWxlbWVudC5oICovLAogCQkJCTFBRTJBQTE0MEExQ0RBQjMwMEI0
MkIyNSAvKiBKU0hUTUxGb250RWxlbWVudC5jcHAgKi8sCiAJCQkJMUFFMkFBMTUwQTFDREFCMzAw
QjQyQjI1IC8qIEpTSFRNTEZvbnRFbGVtZW50LmggKi8sCisJCQkJOUJGOUE4N0UxNjQ4REQyRjAw
MUM2QjIzIC8qIEpTSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uY3BwICovLAorCQkJCTlCRjlB
ODdGMTY0OEREMkYwMDFDNkIyMyAvKiBKU0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmggKi8s
CiAJCQkJQThEMDY0RjkwQTIzQzBDQzAwNUU3MjAzIC8qIEpTSFRNTEZvcm1FbGVtZW50LmNwcCAq
LywKIAkJCQlBOEQwNjRGQTBBMjNDMENDMDA1RTcyMDMgLyogSlNIVE1MRm9ybUVsZW1lbnQuaCAq
LywKIAkJCQlCQzQ5MThDMDBCRkVBMDUwMDA5RDYzMTYgLyogSlNIVE1MRnJhbWVFbGVtZW50LmNw
cCAqLywKQEAgLTIwNDYxLDYgKzIwNDcxLDcgQEAKIAkJCQlCQzU4MjNGNDBDMEE5OERGMDA1M0Yx
QjUgLyogSlNIVE1MRWxlbWVudEN1c3RvbS5jcHAgKi8sCiAJCQkJQkM2RDQ0QkQwQzA3RUZCNjAw
NzJEMkM5IC8qIEpTSFRNTEVtYmVkRWxlbWVudEN1c3RvbS5jcHAgKi8sCiAJCQkJRTFBRDE0MjAx
Mjk1RUE2QjAwQUNBOTg5IC8qIEpTSFRNTEVtYmVkRWxlbWVudEN1c3RvbS5oICovLAorCQkJCTlC
MUFCMDdCMTY0OEM3QzQwMDUxRjNGMiAvKiBKU0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uQ3Vz
dG9tLmNwcCAqLywKIAkJCQlBOEQwNjVBRDBBMjQ0NkNEMDA1RTcyMDMgLyogSlNIVE1MRm9ybUVs
ZW1lbnRDdXN0b20uY3BwICovLAogCQkJCUJDMkVEN0E0MEM2QzBGMzYwMDkyMEJGRiAvKiBKU0hU
TUxGcmFtZUVsZW1lbnRDdXN0b20uY3BwICovLAogCQkJCUJDRDQxQUJBMEMwNjBERTgwMEMwRTQ0
NiAvKiBKU0hUTUxGcmFtZVNldEVsZW1lbnRDdXN0b20uY3BwICovLApAQCAtMjM3MTQsNyArMjM3
MjUsNyBAQAogCQkJCUE4MTM2OUQ0MDk3Mzc0RjYwMEQ3NDQ2MyAvKiBIVE1MRmllbGRTZXRFbGVt
ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlBOENGRjdBNjBBMTU2OTc4MDAwQTQyMzQgLyogSFRN
TEZvbnRFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk5NzdCMzg2RjEyMjg4M0U5MDBCODFG
RjggLyogSFRNTEZvcm1hdHRpbmdFbGVtZW50TGlzdC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJQThE
RjNGQ0UwOTdGQTBGQzAwNTI5ODFCIC8qIEhUTUxGb3JtQ29sbGVjdGlvbi5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJQThERjNGQ0UwOTdGQTBGQzAwNTI5ODFCIC8qIEhUTUxGb3JtQ29udHJvbHNDb2xs
ZWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlBODEzNjlDRTA5NzM3NEY2MDBENzQ0NjMgLyog
SFRNTEZvcm1Db250cm9sRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTE0RjFDNDUxNEI1
REFDNjAwRUE5MDA5IC8qIEhUTUxGb3JtQ29udHJvbEVsZW1lbnRXaXRoU3RhdGUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUE4MTM2OUQwMDk3Mzc0RjYwMEQ3NDQ2MyAvKiBIVE1MRm9ybUVsZW1lbnQu
aCBpbiBIZWFkZXJzICovLApAQCAtMjU2OTIsNiArMjU3MDMsNyBAQAogCQkJCTNGRkZGOUE5MTU5
RDlBNTUwMDIwQkJENSAvKiBXZWJLaXRDU1NWaWV3cG9ydFJ1bGUuaCBpbiBIZWFkZXJzICovLAog
CQkJCTkzQzM4QkZGMTY0NDczQzcwMDA5MUVCMiAvKiBTY3JvbGxpbmdTdGF0ZUZpeGVkTm9kZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJOTNDMzhDMDMxNjQ0NzNERDAwMDkxRUIyIC8qIFNjcm9sbGlu
Z1RyZWVGaXhlZE5vZGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTlCRjlBODgxMTY0OEREMkYwMDFD
NkIyMyAvKiBKU0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJ
CSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAg
LTI2OTIxLDcgKzI2OTMzLDcgQEAKIAkJCQlBODEzNjlENTA5NzM3NEY2MDBENzQ0NjMgLyogSFRN
TEZpZWxkU2V0RWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBOENGRjdBMjBBMTU2OTc4
MDAwQTQyMzQgLyogSFRNTEZvbnRFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTk3N0Iz
ODZFMTIyODgzRTkwMEI4MUZGOCAvKiBIVE1MRm9ybWF0dGluZ0VsZW1lbnRMaXN0LmNwcCBpbiBT
b3VyY2VzICovLAotCQkJCUE4REYzRkNGMDk3RkEwRkMwMDUyOTgxQiAvKiBIVE1MRm9ybUNvbGxl
Y3Rpb24uY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQThERjNGQ0YwOTdGQTBGQzAwNTI5ODFCIC8q
IEhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4MTM2
OUNGMDk3Mzc0RjYwMEQ3NDQ2MyAvKiBIVE1MRm9ybUNvbnRyb2xFbGVtZW50LmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUUxNEYxQzQ0MTRCNURBQzYwMEVBOTAwOSAvKiBIVE1MRm9ybUNvbnRyb2xF
bGVtZW50V2l0aFN0YXRlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4MTM2OUQxMDk3Mzc0RjYw
MEQ3NDQ2MyAvKiBIVE1MRm9ybUVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0yNzMzNiw2
ICsyNzM0OCw4IEBACiAJCQkJQkM2RDQ0QkUwQzA3RUZCNjAwNzJEMkM5IC8qIEpTSFRNTEVtYmVk
RWxlbWVudEN1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQUUyQUEyNjBBMUNEQUI0MDBC
NDJCMjUgLyogSlNIVE1MRmllbGRTZXRFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFB
RTJBQTI4MEExQ0RBQjQwMEI0MkIyNSAvKiBKU0hUTUxGb250RWxlbWVudC5jcHAgaW4gU291cmNl
cyAqLywKKwkJCQk5QkY5QTg4MDE2NDhERDJGMDAxQzZCMjMgLyogSlNIVE1MRm9ybUNvbnRyb2xz
Q29sbGVjdGlvbi5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk5QjFBQjA3QzE2NDhDN0M0MDA1MUYz
RjIgLyogSlNIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbkN1c3RvbS5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlBOEQwNjRGQjBBMjNDMENDMDA1RTcyMDMgLyogSlNIVE1MRm9ybUVsZW1lbnQuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJQThEMDY1QUUwQTI0NDZDRDAwNUU3MjAzIC8qIEpTSFRNTEZv
cm1FbGVtZW50Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDNDkxOEM2MEJGRUEwNTAw
MDlENjMxNiAvKiBKU0hUTUxGcmFtZUVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0JpbmRpbmdzQWxsSW5PbmUuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQmluZGluZ3NBbGxJbk9uZS5jcHAJ
KHJldmlzaW9uIDEzMzY5MykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQmluZGlu
Z3NBbGxJbk9uZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg5LDYgKzg5LDcgQEAKICNpbmNsdWRl
ICJKU0hUTUxEb2N1bWVudEN1c3RvbS5jcHAiCiAjaW5jbHVkZSAiSlNIVE1MRWxlbWVudEN1c3Rv
bS5jcHAiCiAjaW5jbHVkZSAiSlNIVE1MRW1iZWRFbGVtZW50Q3VzdG9tLmNwcCIKKyNpbmNsdWRl
ICJKU0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uQ3VzdG9tLmNwcCIKICNpbmNsdWRlICJKU0hU
TUxGb3JtRWxlbWVudEN1c3RvbS5jcHAiCiAjaW5jbHVkZSAiSlNIVE1MRnJhbWVFbGVtZW50Q3Vz
dG9tLmNwcCIKICNpbmNsdWRlICJKU0hUTUxGcmFtZVNldEVsZW1lbnRDdXN0b20uY3BwIgpJbmRl
eDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MQWxsQ29sbGVjdGlvbkN1c3RvbS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MQWxsQ29s
bGVjdGlvbkN1c3RvbS5jcHAJKHJldmlzaW9uIDEzMzY5MykKKysrIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTSFRNTEFsbENvbGxlY3Rpb25DdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC01MCw5ICs1MCw4IEBAIHN0YXRpYyBKU1ZhbHVlIGdldE5hbWVkSXRlbXMoRXhlY1N0YXRlKiAK
ICAgICBpZiAobmFtZWRJdGVtcy5zaXplKCkgPT0gMSkKICAgICAgICAgcmV0dXJuIHRvSlMoZXhl
YywgY29sbGVjdGlvbi0+Z2xvYmFsT2JqZWN0KCksIG5hbWVkSXRlbXNbMF0uZ2V0KCkpOwogCi0g
ICAgLy8gRklYTUU6IEhUTUw1IHNwZWNpZmllcyB0aGF0IHRoaXMgc2hvdWxkIGJlIGEgRHluYW1p
Y05vZGVMaXN0LgotICAgIC8vIEZJWE1FOiBIVE1MNSBzcGVjaWZpZXMgdGhhdCBub24tSFRNTE9w
dGlvbnNDb2xsZWN0aW9uIGNvbGxlY3Rpb25zIHNob3VsZCByZXR1cm4KLSAgICAvLyB0aGUgZmly
c3QgbWF0Y2hpbmcgaXRlbSBpbnN0ZWFkIG9mIGEgTm9kZUxpc3QuCisgICAgLy8gRklYTUU6IEhU
TUw1IHNwZWNpZmljYXRpb24gc2F5cyB0aGlzIHNob3VsZCBiZSBhIEhUTUxDb2xsZWN0aW9uLgor
ICAgIC8vIGh0dHA6Ly93d3cud2hhdHdnLm9yZy9zcGVjcy93ZWItYXBwcy9jdXJyZW50LXdvcmsv
bXVsdGlwYWdlL2NvbW1vbi1kb20taW50ZXJmYWNlcy5odG1sI2h0bWxhbGxjb2xsZWN0aW9uCiAg
ICAgcmV0dXJuIHRvSlMoZXhlYywgY29sbGVjdGlvbi0+Z2xvYmFsT2JqZWN0KCksIFN0YXRpY05v
ZGVMaXN0OjphZG9wdChuYW1lZEl0ZW1zKS5nZXQoKSk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTSFRNTENvbGxlY3Rpb25DdXN0b20uY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTENvbGxlY3Rpb25DdXN0b20uY3BwCShy
ZXZpc2lvbiAxMzM2OTMpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxDb2xs
ZWN0aW9uQ3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjAsMTEgKzIwLDEzIEBACiAjaW5j
bHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiSlNIVE1MQ29sbGVjdGlvbi5oIgogCisjaW5jbHVk
ZSAiSFRNTEFsbENvbGxlY3Rpb24uaCIKICNpbmNsdWRlICJIVE1MQ29sbGVjdGlvbi5oIgorI2lu
Y2x1ZGUgIkhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmgiCiAjaW5jbHVkZSAiSFRNTE9wdGlv
bnNDb2xsZWN0aW9uLmgiCi0jaW5jbHVkZSAiSFRNTEFsbENvbGxlY3Rpb24uaCIKICNpbmNsdWRl
ICJKU0RPTUJpbmRpbmcuaCIKICNpbmNsdWRlICJKU0hUTUxBbGxDb2xsZWN0aW9uLmgiCisjaW5j
bHVkZSAiSlNIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5oIgogI2luY2x1ZGUgIkpTSFRNTE9w
dGlvbnNDb2xsZWN0aW9uLmgiCiAjaW5jbHVkZSAiSlNOb2RlLmgiCiAjaW5jbHVkZSAiSlNOb2Rl
TGlzdC5oIgpAQCAtMzksMjYgKzQxLDYgQEAgdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi1zdGF0aWMgSlNWYWx1ZSBnZXROYW1lZEl0ZW1zKEV4ZWNTdGF0ZSog
ZXhlYywgSlNIVE1MQ29sbGVjdGlvbiogY29sbGVjdGlvbiwgUHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZSkKLXsKLSAgICBWZWN0b3I8UmVmUHRyPE5vZGU+ID4gbmFtZWRJdGVtczsKLSAgICBjb25z
dCBBdG9taWNTdHJpbmcmIG5hbWUgPSBwcm9wZXJ0eU5hbWVUb0F0b21pY1N0cmluZyhwcm9wZXJ0
eU5hbWUpOwotICAgIGNvbGxlY3Rpb24tPmltcGwoKS0+bmFtZWRJdGVtcyhuYW1lLCBuYW1lZEl0
ZW1zKTsKLQotICAgIGlmIChuYW1lZEl0ZW1zLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIGpz
VW5kZWZpbmVkKCk7Ci0gICAgaWYgKG5hbWVkSXRlbXMuc2l6ZSgpID09IDEpCi0gICAgICAgIHJl
dHVybiB0b0pTKGV4ZWMsIGNvbGxlY3Rpb24tPmdsb2JhbE9iamVjdCgpLCBuYW1lZEl0ZW1zWzBd
LmdldCgpKTsKLQotICAgIGlmIChjb2xsZWN0aW9uLT5pbXBsKCktPnR5cGUoKSA9PSBGb3JtQ29u
dHJvbHMpCi0gICAgICAgcmV0dXJuIHRvSlMoZXhlYywgY29sbGVjdGlvbi0+Z2xvYmFsT2JqZWN0
KCksIGNvbGxlY3Rpb24tPmltcGwoKS0+YmFzZSgpLT5yYWRpb05vZGVMaXN0KG5hbWUpLmdldCgp
KTsKLQotICAgIC8vIEZJWE1FOiBIVE1MNSBzcGVjaWZpZXMgdGhhdCB0aGlzIHNob3VsZCBiZSBh
IER5bmFtaWNOb2RlTGlzdC4KLSAgICAvLyBGSVhNRTogSFRNTDUgc3BlY2lmaWVzIHRoYXQgbm9u
LUhUTUxPcHRpb25zQ29sbGVjdGlvbiBjb2xsZWN0aW9ucyBzaG91bGQgcmV0dXJuCi0gICAgLy8g
dGhlIGZpcnN0IG1hdGNoaW5nIGl0ZW0gaW5zdGVhZCBvZiBhIE5vZGVMaXN0LgotICAgIHJldHVy
biB0b0pTKGV4ZWMsIGNvbGxlY3Rpb24tPmdsb2JhbE9iamVjdCgpLCBTdGF0aWNOb2RlTGlzdDo6
YWRvcHQobmFtZWRJdGVtcykuZ2V0KCkpOwotfQotCiBib29sIEpTSFRNTENvbGxlY3Rpb246OmNh
bkdldEl0ZW1zRm9yTmFtZShFeGVjU3RhdGUqLCBIVE1MQ29sbGVjdGlvbiogY29sbGVjdGlvbiwg
UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsKICAgICByZXR1cm4gY29sbGVjdGlvbi0+aGFz
TmFtZWRJdGVtKHByb3BlcnR5TmFtZVRvQXRvbWljU3RyaW5nKHByb3BlcnR5TmFtZSkpOwpAQCAt
NjYsMTMgKzQ4LDkgQEAgYm9vbCBKU0hUTUxDb2xsZWN0aW9uOjpjYW5HZXRJdGVtc0Zvck5hbQog
CiBKU1ZhbHVlIEpTSFRNTENvbGxlY3Rpb246Om5hbWVHZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBK
U1ZhbHVlIHNsb3RCYXNlLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogewotICAgIEpTSFRN
TENvbGxlY3Rpb24qIHRoaXNPYmogPSBqc0Nhc3Q8SlNIVE1MQ29sbGVjdGlvbio+KGFzT2JqZWN0
KHNsb3RCYXNlKSk7Ci0gICAgcmV0dXJuIGdldE5hbWVkSXRlbXMoZXhlYywgdGhpc09iaiwgcHJv
cGVydHlOYW1lKTsKLX0KLQotSlNWYWx1ZSBKU0hUTUxDb2xsZWN0aW9uOjpuYW1lZEl0ZW0oRXhl
Y1N0YXRlKiBleGVjKQotewotICAgIHJldHVybiBnZXROYW1lZEl0ZW1zKGV4ZWMsIHRoaXMsIElk
ZW50aWZpZXIoZXhlYywgZXhlYy0+YXJndW1lbnQoMCkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4
ZWMpKSk7CisgICAgSlNIVE1MQ29sbGVjdGlvbiogY29sbGVjdGlvbiA9IGpzQ2FzdDxKU0hUTUxD
b2xsZWN0aW9uKj4oYXNPYmplY3Qoc2xvdEJhc2UpKTsKKyAgICBjb25zdCBBdG9taWNTdHJpbmcm
IG5hbWUgPSBwcm9wZXJ0eU5hbWVUb0F0b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUpOworICAgIHJl
dHVybiB0b0pTKGV4ZWMsIGNvbGxlY3Rpb24tPmdsb2JhbE9iamVjdCgpLCBjb2xsZWN0aW9uLT5p
bXBsKCktPm5hbWVkSXRlbShuYW1lKSk7CiB9CiAKIEpTVmFsdWUgdG9KUyhFeGVjU3RhdGUqIGV4
ZWMsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEhUTUxDb2xsZWN0aW9uKiBjb2xs
ZWN0aW9uKQpAQCAtODYsMTggKzY0LDE3IEBAIEpTVmFsdWUgdG9KUyhFeGVjU3RhdGUqIGV4ZWMs
IEpTRE9NR2xvYmEKICAgICAgICAgcmV0dXJuIHdyYXBwZXI7CiAKICAgICBzd2l0Y2ggKGNvbGxl
Y3Rpb24tPnR5cGUoKSkgewotICAgICAgICBjYXNlIFNlbGVjdE9wdGlvbnM6Ci0gICAgICAgICAg
ICB3cmFwcGVyID0gQ1JFQVRFX0RPTV9XUkFQUEVSKGV4ZWMsIGdsb2JhbE9iamVjdCwgSFRNTE9w
dGlvbnNDb2xsZWN0aW9uLCBjb2xsZWN0aW9uKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICBjYXNlIERvY0FsbDoKLSAgICAgICAgICAgIHdyYXBwZXIgPSBDUkVBVEVfRE9NX1dSQVBQRVIo
ZXhlYywgZ2xvYmFsT2JqZWN0LCBIVE1MQWxsQ29sbGVjdGlvbiwgY29sbGVjdGlvbik7Ci0gICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIHdyYXBwZXIgPSBD
UkVBVEVfRE9NX1dSQVBQRVIoZXhlYywgZ2xvYmFsT2JqZWN0LCBIVE1MQ29sbGVjdGlvbiwgY29s
bGVjdGlvbik7Ci0gICAgICAgICAgICBicmVhazsKKyAgICBjYXNlIEZvcm1Db250cm9sczoKKyAg
ICAgICAgcmV0dXJuIENSRUFURV9ET01fV1JBUFBFUihleGVjLCBnbG9iYWxPYmplY3QsIEhUTUxG
b3JtQ29udHJvbHNDb2xsZWN0aW9uLCBjb2xsZWN0aW9uKTsKKyAgICBjYXNlIFNlbGVjdE9wdGlv
bnM6CisgICAgICAgIHJldHVybiBDUkVBVEVfRE9NX1dSQVBQRVIoZXhlYywgZ2xvYmFsT2JqZWN0
LCBIVE1MT3B0aW9uc0NvbGxlY3Rpb24sIGNvbGxlY3Rpb24pOworICAgIGNhc2UgRG9jQWxsOgor
ICAgICAgICByZXR1cm4gQ1JFQVRFX0RPTV9XUkFQUEVSKGV4ZWMsIGdsb2JhbE9iamVjdCwgSFRN
TEFsbENvbGxlY3Rpb24sIGNvbGxlY3Rpb24pOworICAgIGRlZmF1bHQ6CisgICAgICAgIGJyZWFr
OwogICAgIH0KIAotICAgIHJldHVybiB3cmFwcGVyOworICAgIHJldHVybiBDUkVBVEVfRE9NX1dS
QVBQRVIoZXhlYywgZ2xvYmFsT2JqZWN0LCBIVE1MQ29sbGVjdGlvbiwgY29sbGVjdGlvbik7CiB9
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb25DdXN0b20uY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb25D
dXN0b20uY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNI
VE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbkN1c3RvbS5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsNzEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMDggQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5
b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVy
bXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxp
c2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24g
MiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4K
KyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3
aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVu
IHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZl
IHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4g
IElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4s
IDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEz
MDEsIFVTQS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSFRNTEZvcm1D
b250cm9sc0NvbGxlY3Rpb24uaCIKKworCisjaW5jbHVkZSAiSFRNTEFsbENvbGxlY3Rpb24uaCIK
KyNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKKyNpbmNsdWRlICJKU0hUTUxDb2xsZWN0aW9uLmgi
CisjaW5jbHVkZSAiSlNIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5oIgorI2luY2x1ZGUgIkpT
Tm9kZS5oIgorI2luY2x1ZGUgIkpTTm9kZUxpc3QuaCIKKyNpbmNsdWRlICJKU1JhZGlvTm9kZUxp
c3QuaCIKKyNpbmNsdWRlICJOb2RlLmgiCisjaW5jbHVkZSAiUmFkaW9Ob2RlTGlzdC5oIgorI2lu
Y2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmcuaD4K
KwordXNpbmcgbmFtZXNwYWNlIEpTQzsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdGF0aWMg
SlNWYWx1ZSBnZXROYW1lZEl0ZW1zKEV4ZWNTdGF0ZSogZXhlYywgSlNIVE1MRm9ybUNvbnRyb2xz
Q29sbGVjdGlvbiogY29sbGVjdGlvbiwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKK3sKKyAg
ICBWZWN0b3I8UmVmUHRyPE5vZGU+ID4gbmFtZWRJdGVtczsKKyAgICBjb25zdCBBdG9taWNTdHJp
bmcmIG5hbWUgPSBwcm9wZXJ0eU5hbWVUb0F0b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUpOworICAg
IGNvbGxlY3Rpb24tPmltcGwoKS0+bmFtZWRJdGVtcyhuYW1lLCBuYW1lZEl0ZW1zKTsKKworICAg
IGlmIChuYW1lZEl0ZW1zLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7
CisgICAgaWYgKG5hbWVkSXRlbXMuc2l6ZSgpID09IDEpCisgICAgICAgIHJldHVybiB0b0pTKGV4
ZWMsIGNvbGxlY3Rpb24tPmdsb2JhbE9iamVjdCgpLCBuYW1lZEl0ZW1zWzBdLmdldCgpKTsKKwor
ICAgIEFTU0VSVChjb2xsZWN0aW9uLT5pbXBsKCktPnR5cGUoKSA9PSBGb3JtQ29udHJvbHMpOwor
ICAgIHJldHVybiB0b0pTKGV4ZWMsIGNvbGxlY3Rpb24tPmdsb2JhbE9iamVjdCgpLCBjb2xsZWN0
aW9uLT5pbXBsKCktPmJhc2UoKS0+cmFkaW9Ob2RlTGlzdChuYW1lKS5nZXQoKSk7Cit9CisKK2Jv
b2wgSlNIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbjo6Y2FuR2V0SXRlbXNGb3JOYW1lKEV4ZWNT
dGF0ZSosIEhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uKiBjb2xsZWN0aW9uLCBQcm9wZXJ0eU5h
bWUgcHJvcGVydHlOYW1lKQoreworICAgIHJldHVybiBjb2xsZWN0aW9uLT5oYXNOYW1lZEl0ZW0o
cHJvcGVydHlOYW1lVG9BdG9taWNTdHJpbmcocHJvcGVydHlOYW1lKSk7Cit9CisKK0pTVmFsdWUg
SlNIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbjo6bmFtZUdldHRlcihFeGVjU3RhdGUqIGV4ZWMs
IEpTVmFsdWUgc2xvdEJhc2UsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCit7CisgICAgSlNI
VE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbiogdGhpc09iaiA9IGpzQ2FzdDxKU0hUTUxGb3JtQ29u
dHJvbHNDb2xsZWN0aW9uKj4oYXNPYmplY3Qoc2xvdEJhc2UpKTsKKyAgICByZXR1cm4gZ2V0TmFt
ZWRJdGVtcyhleGVjLCB0aGlzT2JqLCBwcm9wZXJ0eU5hbWUpOworfQorCitKU1ZhbHVlIEpTSFRN
TEZvcm1Db250cm9sc0NvbGxlY3Rpb246Om5hbWVkSXRlbShFeGVjU3RhdGUqIGV4ZWMpCit7Cisg
ICAgcmV0dXJuIGdldE5hbWVkSXRlbXMoZXhlYywgdGhpcywgSWRlbnRpZmllcihleGVjLCBleGVj
LT5hcmd1bWVudCgwKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpKTsKK30KKworfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1M
T3B0aW9uc0NvbGxlY3Rpb25DdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTSFRNTE9wdGlvbnNDb2xsZWN0aW9uQ3VzdG9tLmNwcAkocmV2aXNpb24g
MTMzNjkzKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MT3B0aW9uc0NvbGxl
Y3Rpb25DdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw4IEBACiAjaW5jbHVk
ZSAiSlNIVE1MT3B0aW9uRWxlbWVudC5oIgogI2luY2x1ZGUgIkpTSFRNTFNlbGVjdEVsZW1lbnQu
aCIKICNpbmNsdWRlICJKU0hUTUxTZWxlY3RFbGVtZW50Q3VzdG9tLmgiCisjaW5jbHVkZSAiSlNO
b2RlTGlzdC5oIgorI2luY2x1ZGUgIlN0YXRpY05vZGVMaXN0LmgiCiAKICNpbmNsdWRlIDx3dGYv
TWF0aEV4dHJhcy5oPgogCkBAIC0zNSw2ICszNywzNyBAQCB1c2luZyBuYW1lc3BhY2UgSlNDOwog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK3N0YXRpYyBKU1ZhbHVlIGdldE5hbWVkSXRlbXMoRXhl
Y1N0YXRlKiBleGVjLCBKU0hUTUxPcHRpb25zQ29sbGVjdGlvbiogY29sbGVjdGlvbiwgUHJvcGVy
dHlOYW1lIHByb3BlcnR5TmFtZSkKK3sKKyAgICBWZWN0b3I8UmVmUHRyPE5vZGU+ID4gbmFtZWRJ
dGVtczsKKyAgICBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUgPSBwcm9wZXJ0eU5hbWVUb0F0b21p
Y1N0cmluZyhwcm9wZXJ0eU5hbWUpOworICAgIGNvbGxlY3Rpb24tPmltcGwoKS0+bmFtZWRJdGVt
cyhuYW1lLCBuYW1lZEl0ZW1zKTsKKworICAgIGlmIChuYW1lZEl0ZW1zLmlzRW1wdHkoKSkKKyAg
ICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CisgICAgaWYgKG5hbWVkSXRlbXMuc2l6ZSgpID09
IDEpCisgICAgICAgIHJldHVybiB0b0pTKGV4ZWMsIGNvbGxlY3Rpb24tPmdsb2JhbE9iamVjdCgp
LCBuYW1lZEl0ZW1zWzBdLmdldCgpKTsKKworICAgIC8vIEZJWE1FOiBIVE1MNSBzcGVjaWZpZXMg
dGhhdCB0aGlzIHNob3VsZCBiZSBhIER5bmFtaWNOb2RlTGlzdC4KKyAgICByZXR1cm4gdG9KUyhl
eGVjLCBjb2xsZWN0aW9uLT5nbG9iYWxPYmplY3QoKSwgU3RhdGljTm9kZUxpc3Q6OmFkb3B0KG5h
bWVkSXRlbXMpLmdldCgpKTsKK30KKworYm9vbCBKU0hUTUxPcHRpb25zQ29sbGVjdGlvbjo6Y2Fu
R2V0SXRlbXNGb3JOYW1lKEV4ZWNTdGF0ZSosIEhUTUxPcHRpb25zQ29sbGVjdGlvbiogY29sbGVj
dGlvbiwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKK3sKKyAgICByZXR1cm4gY29sbGVjdGlv
bi0+aGFzTmFtZWRJdGVtKHByb3BlcnR5TmFtZVRvQXRvbWljU3RyaW5nKHByb3BlcnR5TmFtZSkp
OworfQorCitKU1ZhbHVlIEpTSFRNTE9wdGlvbnNDb2xsZWN0aW9uOjpuYW1lR2V0dGVyKEV4ZWNT
dGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkK
K3sKKyAgICBKU0hUTUxPcHRpb25zQ29sbGVjdGlvbiogdGhpc09iaiA9IGpzQ2FzdDxKU0hUTUxP
cHRpb25zQ29sbGVjdGlvbio+KGFzT2JqZWN0KHNsb3RCYXNlKSk7CisgICAgcmV0dXJuIGdldE5h
bWVkSXRlbXMoZXhlYywgdGhpc09iaiwgcHJvcGVydHlOYW1lKTsKK30KKworSlNWYWx1ZSBKU0hU
TUxPcHRpb25zQ29sbGVjdGlvbjo6bmFtZWRJdGVtKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBy
ZXR1cm4gZ2V0TmFtZWRJdGVtcyhleGVjLCB0aGlzLCBJZGVudGlmaWVyKGV4ZWMsIGV4ZWMtPmFy
Z3VtZW50KDApLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSkpOworfQorCiBKU1ZhbHVlIEpT
SFRNTE9wdGlvbnNDb2xsZWN0aW9uOjpsZW5ndGgoRXhlY1N0YXRlKikgY29uc3QKIHsKICAgICBI
VE1MT3B0aW9uc0NvbGxlY3Rpb24qIGltcCA9IHN0YXRpY19jYXN0PEhUTUxPcHRpb25zQ29sbGVj
dGlvbio+KGltcGwoKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0Nv
ZGVHZW5lcmF0b3JKUy5wbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQkocmV2aXNpb24gMTMzNjkzKQorKysgU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0JKHdvcmtpbmcgY29weSkK
QEAgLTQwOCw3ICs0MDgsNyBAQCBzdWIgR2VuZXJhdGVHZXRPd25Qcm9wZXJ0eVNsb3RCb2R5CiAK
ICAgICBteSBAZ2V0T3duUHJvcGVydHlTbG90SW1wbCA9ICgpOwogCi0gICAgaWYgKCRpbnRlcmZh
Y2VOYW1lIGVxICJOYW1lZE5vZGVNYXAiIG9yICRpbnRlcmZhY2VOYW1lIGVxICJIVE1MQ29sbGVj
dGlvbiIgb3IgJGludGVyZmFjZU5hbWUgZXEgIkhUTUxBbGxDb2xsZWN0aW9uIiBvciAkaW50ZXJm
YWNlTmFtZSBlcSAiSFRNTFByb3BlcnRpZXNDb2xsZWN0aW9uIikgeworICAgIGlmICgkaW50ZXJm
YWNlTmFtZSBlcSAiTmFtZWROb2RlTWFwIiBvciAkaW50ZXJmYWNlTmFtZSA9fiAvXkhUTUxcdypD
b2xsZWN0aW9uJC8pIHsKICAgICAgICAgcHVzaChAZ2V0T3duUHJvcGVydHlTbG90SW1wbCwgIiAg
ICAke25hbWVzcGFjZU1heWJlfUpTVmFsdWUgcHJvdG8gPSB0aGlzT2JqZWN0LT5wcm90b3R5cGUo
KTtcbiIpOwogICAgICAgICBwdXNoKEBnZXRPd25Qcm9wZXJ0eVNsb3RJbXBsLCAiICAgIGlmIChw
cm90by5pc09iamVjdCgpICYmIGpzQ2FzdDwke25hbWVzcGFjZU1heWJlfUpTT2JqZWN0Kj4oYXNP
YmplY3QocHJvdG8pKS0+aGFzUHJvcGVydHkoZXhlYywgcHJvcGVydHlOYW1lKSlcbiIpOwogICAg
ICAgICBwdXNoKEBnZXRPd25Qcm9wZXJ0eVNsb3RJbXBsLCAiICAgICAgICByZXR1cm4gZmFsc2U7
XG5cbiIpOwpAQCAtNTAwLDcgKzUwMCw3IEBAIHN1YiBHZW5lcmF0ZUdldE93blByb3BlcnR5RGVz
Y3JpcHRvckJvZHkKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHJldHVybiBm
YWxzZTtcbiIpOwogICAgIH0KICAgICAKLSAgICBpZiAoJGludGVyZmFjZU5hbWUgZXEgIk5hbWVk
Tm9kZU1hcCIgb3IgJGludGVyZmFjZU5hbWUgZXEgIkhUTUxDb2xsZWN0aW9uIiBvciAkaW50ZXJm
YWNlTmFtZSBlcSAiSFRNTEFsbENvbGxlY3Rpb24iIG9yICRpbnRlcmZhY2VOYW1lIGVxICJIVE1M
UHJvcGVydGllc0NvbGxlY3Rpb24iKSB7CisgICAgaWYgKCRpbnRlcmZhY2VOYW1lIGVxICJOYW1l
ZE5vZGVNYXAiIG9yICRpbnRlcmZhY2VOYW1lID1+IC9eSFRNTFx3KkNvbGxlY3Rpb24kLykgewog
ICAgICAgICBwdXNoKEBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JJbXBsLCAiICAgICR7bmFtZXNw
YWNlTWF5YmV9SlNWYWx1ZSBwcm90byA9IHRoaXNPYmplY3QtPnByb3RvdHlwZSgpO1xuIik7CiAg
ICAgICAgIHB1c2goQGdldE93blByb3BlcnR5RGVzY3JpcHRvckltcGwsICIgICAgaWYgKHByb3Rv
LmlzT2JqZWN0KCkgJiYganNDYXN0PCR7bmFtZXNwYWNlTWF5YmV9SlNPYmplY3QqPihhc09iamVj
dChwcm90bykpLT5oYXNQcm9wZXJ0eShleGVjLCBwcm9wZXJ0eU5hbWUpKVxuIik7CiAgICAgICAg
IHB1c2goQGdldE93blByb3BlcnR5RGVzY3JpcHRvckltcGwsICIgICAgICAgIHJldHVybiBmYWxz
ZTtcblxuIik7CkBAIC0yNDM0LDcgKzI0MzQsNyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlv
bgogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJuIHRvSlMoZXhlYywg
dGhpc09iai0+Z2xvYmFsT2JqZWN0KCksIHN0YXRpY19jYXN0PCRpbXBsQ2xhc3NOYW1lKj4odGhp
c09iai0+aW1wbCgpKS0+aXRlbShpbmRleCkpO1xuIik7CiAgICAgICAgIH0KICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICJ9XG5cbiIpOwotICAgICAgICBpZiAoJGludGVyZmFjZU5hbWUgZXEg
IkhUTUxDb2xsZWN0aW9uIiBvciAkaW50ZXJmYWNlTmFtZSBlcSAiSFRNTEFsbENvbGxlY3Rpb24i
IG9yICRpbnRlcmZhY2VOYW1lIGVxICJSYWRpb05vZGVMaXN0IikgeworICAgICAgICBpZiAoJGlu
dGVyZmFjZU5hbWUgPX4gL15IVE1MXHcqQ29sbGVjdGlvbiQvIG9yICRpbnRlcmZhY2VOYW1lIGVx
ICJSYWRpb05vZGVMaXN0IikgewogICAgICAgICAgICAgJGltcGxJbmNsdWRlc3siSlNOb2RlLmgi
fSA9IDE7CiAgICAgICAgICAgICAkaW1wbEluY2x1ZGVzeyJOb2RlLmgifSA9IDE7CiAgICAgICAg
IH0KQEAgLTI0NTAsNyArMjQ1MCw3IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICByZXR1cm4ganNOYU4oKTtcbiIpOwogICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1cm4gSlNWYWx1ZShyZXN1bHQpO1xuIik7
CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAifVxuXG4iKTsKLSAgICAgICAgaWYgKCRpbnRl
cmZhY2VOYW1lIGVxICJIVE1MQ29sbGVjdGlvbiIgb3IgJGludGVyZmFjZU5hbWUgZXEgIkhUTUxB
bGxDb2xsZWN0aW9uIikgeworICAgICAgICBpZiAoJGludGVyZmFjZU5hbWUgPX4gL15IVE1MXHcq
Q29sbGVjdGlvbiQvKSB7CiAgICAgICAgICAgICAkaW1wbEluY2x1ZGVzeyJKU05vZGUuaCJ9ID0g
MTsKICAgICAgICAgICAgICRpbXBsSW5jbHVkZXN7Ik5vZGUuaCJ9ID0gMTsKICAgICAgICAgfQpJ
bmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJh
dG9yVjgucG0JKHJldmlzaW9uIDEzMzY5MykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCSh3b3JraW5nIGNvcHkpCkBAIC0yNDk0LDEzICsyNDk0
LDYgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb25OYW1lZFByb3BlcnR5RwogICAgIG15ICRp
bnRlcmZhY2VOYW1lID0gJGRhdGFOb2RlLT5uYW1lOwogICAgIG15ICRoYXNDdXN0b21OYW1lZEdl
dHRlciA9ICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbU5hbWVkR2V0dGVy
In0gfHwgJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tR2V0T3duUHJvcGVy
dHlTbG90In07CiAKLSAgICAjIEZJWE1FOiBSZW1vdmUgaGFyZC1jb2RlZCBIVE1MT3B0aW9uc0Nv
bGxlY3Rpb24gcmVmZXJlbmNlIGJ5IGNoYW5naW5nIEhUTUxPcHRpb25zQ29sbGVjdGlvbiB0byBu
b3QgaW5oZXJpdAotICAgICMgZnJvbSBIVE1MQ29sbGVjdGlvbiBwZXIgVzNDIHNwZWMgKGh0dHA6
Ly93d3cudzMub3JnL1RSLzIwMDMvUkVDLURPTS1MZXZlbC0yLUhUTUwtMjAwMzAxMDkvaHRtbC5o
dG1sI0hUTUxPcHRpb25zQ29sbGVjdGlvbikuCi0gICAgaWYgKCRpbnRlcmZhY2VOYW1lIGVxICJI
VE1MT3B0aW9uc0NvbGxlY3Rpb24iKSB7Ci0gICAgICAgICRpbnRlcmZhY2VOYW1lID0gIkhUTUxD
b2xsZWN0aW9uIjsKLSAgICAgICAgJGhhc0N1c3RvbU5hbWVkR2V0dGVyID0gMTsKLSAgICB9Ci0K
ICAgICBpZiAoJGludGVyZmFjZU5hbWUgZXEgIkhUTUxBcHBsZXRFbGVtZW50IiB8fCAkaW50ZXJm
YWNlTmFtZSBlcSAiSFRNTEVtYmVkRWxlbWVudCIgfHwgJGludGVyZmFjZU5hbWUgZXEgIkhUTUxP
YmplY3RFbGVtZW50IikgewogICAgICAgICAkaGFzQ3VzdG9tTmFtZWRHZXR0ZXIgPSAxOwogICAg
IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxBbGxDb2xs
ZWN0aW9uQ3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9jdXN0b20vVjhIVE1MQWxsQ29sbGVjdGlvbkN1c3RvbS5jcHAJKHJldmlzaW9uIDEzMzY5MykK
KysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxBbGxDb2xsZWN0aW9u
Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTEsNiArNTEsOCBAQCBzdGF0aWMgdjg6Okhh
bmRsZTx2ODo6VmFsdWU+IGdldE5hbWVkSXRlCiAgICAgaWYgKG5hbWVkSXRlbXMuc2l6ZSgpID09
IDEpCiAgICAgICAgIHJldHVybiB0b1Y4KG5hbWVkSXRlbXMuYXQoMCkucmVsZWFzZSgpLCBjcmVh
dGlvbkNvbnRleHQsIGlzb2xhdGUpOwogCisgICAgLy8gRklYTUU6IEhUTUw1IHNwZWNpZmljYXRp
b24gc2F5cyB0aGlzIHNob3VsZCBiZSBhIEhUTUxDb2xsZWN0aW9uLgorICAgIC8vIGh0dHA6Ly93
d3cud2hhdHdnLm9yZy9zcGVjcy93ZWItYXBwcy9jdXJyZW50LXdvcmsvbXVsdGlwYWdlL2NvbW1v
bi1kb20taW50ZXJmYWNlcy5odG1sI2h0bWxhbGxjb2xsZWN0aW9uCiAgICAgcmV0dXJuIHRvVjgo
VjhOYW1lZE5vZGVzQ29sbGVjdGlvbjo6Y3JlYXRlKG5hbWVkSXRlbXMpLCBjcmVhdGlvbkNvbnRl
eHQsIGlzb2xhdGUpOwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0
b20vVjhIVE1MQ29sbGVjdGlvbkN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTENvbGxlY3Rpb25DdXN0b20uY3BwCShyZXZpc2lv
biAxMzM2OTMpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MQ29s
bGVjdGlvbkN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyLDMzICszMiwxNSBAQAogI2lu
Y2x1ZGUgIlY4SFRNTENvbGxlY3Rpb24uaCIKIAogI2luY2x1ZGUgIkhUTUxDb2xsZWN0aW9uLmgi
Ci0jaW5jbHVkZSAiUmFkaW9Ob2RlTGlzdC5oIgogI2luY2x1ZGUgIlY4QmluZGluZy5oIgogI2lu
Y2x1ZGUgIlY4SFRNTEFsbENvbGxlY3Rpb24uaCIKKyNpbmNsdWRlICJWOEhUTUxGb3JtQ29udHJv
bHNDb2xsZWN0aW9uLmgiCisjaW5jbHVkZSAiVjhIVE1MT3B0aW9uc0NvbGxlY3Rpb24uaCIKICNp
bmNsdWRlICJWOE5hbWVkTm9kZXNDb2xsZWN0aW9uLmgiCiAjaW5jbHVkZSAiVjhOb2RlLmgiCi0j
aW5jbHVkZSAiVjhOb2RlTGlzdC5oIgotI2luY2x1ZGUgIlY4UmFkaW9Ob2RlTGlzdC5oIgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gZ2V0TmFt
ZWRJdGVtcyhIVE1MQ29sbGVjdGlvbiogY29sbGVjdGlvbiwgQXRvbWljU3RyaW5nIG5hbWUsIHY4
OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0LCB2ODo6SXNvbGF0ZSogaXNvbGF0
ZSkKLXsKLSAgICBWZWN0b3I8UmVmUHRyPE5vZGU+ID4gbmFtZWRJdGVtczsKLSAgICBjb2xsZWN0
aW9uLT5uYW1lZEl0ZW1zKG5hbWUsIG5hbWVkSXRlbXMpOwotCi0gICAgaWYgKCFuYW1lZEl0ZW1z
LnNpemUoKSkKLSAgICAgICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7Ci0KLSAgICBpZiAobmFtZWRJ
dGVtcy5zaXplKCkgPT0gMSkKLSAgICAgICAgcmV0dXJuIHRvVjgobmFtZWRJdGVtcy5hdCgwKS5y
ZWxlYXNlKCksIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7Ci0KLSAgICBpZiAoY29sbGVjdGlv
bi0+dHlwZSgpID09IEZvcm1Db250cm9scykKLSAgICAgICAgcmV0dXJuIHRvVjgoY29sbGVjdGlv
bi0+YmFzZSgpLT5yYWRpb05vZGVMaXN0KG5hbWUpLmdldCgpLCBjcmVhdGlvbkNvbnRleHQsIGlz
b2xhdGUpOwotCi0gICAgcmV0dXJuIHRvVjgoVjhOYW1lZE5vZGVzQ29sbGVjdGlvbjo6Y3JlYXRl
KG5hbWVkSXRlbXMpLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOwotfQotCiB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gVjhIVE1MQ29sbGVjdGlvbjo6bmFtZWRQcm9wZXJ0eUdldHRlcih2ODo6TG9j
YWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKICAg
ICBJTkNfU1RBVFMoIkRPTS5IVE1MQ29sbGVjdGlvbi5OYW1lZFByb3BlcnR5R2V0dGVyIik7CkBA
IC02OSwxOSArNTEsMTAgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SFRNTENvbGxlY3Rpb246
OgogICAgICAgICByZXR1cm4gdjhVbmRlZmluZWQoKTsKIAogICAgIEhUTUxDb2xsZWN0aW9uKiBp
bXAgPSBWOEhUTUxDb2xsZWN0aW9uOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKLSAgICByZXR1
cm4gZ2V0TmFtZWRJdGVtcyhpbXAsIHRvV2ViQ29yZUF0b21pY1N0cmluZyhuYW1lKSwgaW5mby5I
b2xkZXIoKSwgaW5mby5HZXRJc29sYXRlKCkpOwotfQotCi12ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
VjhIVE1MQ29sbGVjdGlvbjo6bmFtZWRJdGVtQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYg
YXJncykKLXsKLSAgICBJTkNfU1RBVFMoIkRPTS5IVE1MQ29sbGVjdGlvbi5uYW1lZEl0ZW0oKSIp
OwotICAgIEhUTUxDb2xsZWN0aW9uKiBpbXAgPSBWOEhUTUxDb2xsZWN0aW9uOjp0b05hdGl2ZShh
cmdzLkhvbGRlcigpKTsKLSAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gcmVzdWx0ID0gZ2V0TmFt
ZWRJdGVtcyhpbXAsIHRvV2ViQ29yZVN0cmluZyhhcmdzWzBdKSwgYXJncy5Ib2xkZXIoKSwgYXJn
cy5HZXRJc29sYXRlKCkpOwotCi0gICAgaWYgKHJlc3VsdC5Jc0VtcHR5KCkpCi0gICAgICAgIHJl
dHVybiB2ODo6VW5kZWZpbmVkKCk7Ci0KLSAgICByZXR1cm4gcmVzdWx0OworICAgIE5vZGUqIGl0
ZW0gPSBpbXAtPm5hbWVkSXRlbSh0b1dlYkNvcmVBdG9taWNTdHJpbmcobmFtZSkpOworICAgIGlm
ICghaXRlbSkKKyAgICAgICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7CisgICAgcmV0dXJuIHRvVjgo
aXRlbSwgaW5mby5Ib2xkZXIoKSwgaW5mby5HZXRJc29sYXRlKCkpOwogfQogCiB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gdG9WOChIVE1MQ29sbGVjdGlvbiogaW1wbCwgdjg6OkhhbmRsZTx2ODo6T2Jq
ZWN0PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJc29sYXRlKiBpc29sYXRlKQpAQCAtODksOCArNjIs
MTcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjgoSFRNTENvbGxlY3RpbwogICAgIGlmICgh
aW1wbCkKICAgICAgICAgcmV0dXJuIHY4TnVsbFdpdGhDaGVjayhpc29sYXRlKTsKIAotICAgIGlm
IChpbXBsLT50eXBlKCkgPT0gRG9jQWxsKQorICAgIHN3aXRjaCAoaW1wbC0+dHlwZSgpKSB7Cisg
ICAgY2FzZSBGb3JtQ29udHJvbHM6CisgICAgICAgIHJldHVybiB0b1Y4KHN0YXRpY19jYXN0PEhU
TUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uKj4oaW1wbCksIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0
ZSk7CisgICAgY2FzZSBTZWxlY3RPcHRpb25zOgorICAgICAgICByZXR1cm4gdG9WOChzdGF0aWNf
Y2FzdDxIVE1MT3B0aW9uc0NvbGxlY3Rpb24qPihpbXBsKSwgY3JlYXRpb25Db250ZXh0LCBpc29s
YXRlKTsKKyAgICBjYXNlIERvY0FsbDoKICAgICAgICAgcmV0dXJuIHRvVjgoc3RhdGljX2Nhc3Q8
SFRNTEFsbENvbGxlY3Rpb24qPihpbXBsKSwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsKKyAg
ICBkZWZhdWx0OgorICAgICAgICBicmVhazsKKyAgICB9CisKICAgICByZXR1cm4gVjhIVE1MQ29s
bGVjdGlvbjo6d3JhcChpbXBsLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOwogfQogCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MRm9ybUNvbnRyb2xzQ29s
bGVjdGlvbkN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvY3VzdG9tL1Y4SFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb25DdXN0b20uY3BwCShyZXZpc2lv
biAwKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTEZvcm1Db250
cm9sc0NvbGxlY3Rpb25DdXN0b20uY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDgxIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiAKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICogCisgKiAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhl
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQor
ICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5j
LiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUg
d2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKiAKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklC
VVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBP
V05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
CisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlY4SFRNTEZvcm1Db250cm9sc0NvbGxlY3Rp
b24uaCIKKworI2luY2x1ZGUgIkhUTUxDb2xsZWN0aW9uLmgiCisjaW5jbHVkZSAiUmFkaW9Ob2Rl
TGlzdC5oIgorI2luY2x1ZGUgIlY4QmluZGluZy5oIgorI2luY2x1ZGUgIlY4Tm9kZS5oIgorI2lu
Y2x1ZGUgIlY4UmFkaW9Ob2RlTGlzdC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0YXRp
YyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gZ2V0TmFtZWRJdGVtcyhIVE1MRm9ybUNvbnRyb2xzQ29s
bGVjdGlvbiogY29sbGVjdGlvbiwgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCB2ODo6SGFuZGxl
PHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCit7Cisg
ICAgVmVjdG9yPFJlZlB0cjxOb2RlPiA+IG5hbWVkSXRlbXM7CisgICAgY29sbGVjdGlvbi0+bmFt
ZWRJdGVtcyhuYW1lLCBuYW1lZEl0ZW1zKTsKKworICAgIGlmICghbmFtZWRJdGVtcy5zaXplKCkp
CisgICAgICAgIHJldHVybiB2OFVuZGVmaW5lZCgpOworCisgICAgaWYgKG5hbWVkSXRlbXMuc2l6
ZSgpID09IDEpCisgICAgICAgIHJldHVybiB0b1Y4KG5hbWVkSXRlbXMuYXQoMCkucmVsZWFzZSgp
LCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOworCisgICAgcmV0dXJuIHRvVjgoY29sbGVjdGlv
bi0+YmFzZSgpLT5yYWRpb05vZGVMaXN0KG5hbWUpLmdldCgpLCBjcmVhdGlvbkNvbnRleHQsIGlz
b2xhdGUpOworfQorCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhIVE1MRm9ybUNvbnRyb2xzQ29s
bGVjdGlvbjo6bmFtZWRQcm9wZXJ0eUdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwg
Y29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICBJTkNfU1RBVFMoIkRPTS5IVE1M
Q29sbGVjdGlvbi5OYW1lZFByb3BlcnR5R2V0dGVyIik7CisKKyAgICBpZiAoIWluZm8uSG9sZGVy
KCktPkdldFJlYWxOYW1lZFByb3BlcnR5SW5Qcm90b3R5cGVDaGFpbihuYW1lKS5Jc0VtcHR5KCkp
CisgICAgICAgIHJldHVybiB2OFVuZGVmaW5lZCgpOworICAgIGlmIChpbmZvLkhvbGRlcigpLT5I
YXNSZWFsTmFtZWRDYWxsYmFja1Byb3BlcnR5KG5hbWUpKQorICAgICAgICByZXR1cm4gdjhVbmRl
ZmluZWQoKTsKKworICAgIEhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uKiBpbXAgPSBWOEhUTUxG
b3JtQ29udHJvbHNDb2xsZWN0aW9uOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKKyAgICByZXR1
cm4gZ2V0TmFtZWRJdGVtcyhpbXAsIHRvV2ViQ29yZUF0b21pY1N0cmluZyhuYW1lKSwgaW5mby5I
b2xkZXIoKSwgaW5mby5HZXRJc29sYXRlKCkpOworfQorCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
VjhIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbjo6bmFtZWRJdGVtQ2FsbGJhY2soY29uc3Qgdjg6
OkFyZ3VtZW50cyYgYXJncykKK3sKKyAgICBJTkNfU1RBVFMoIkRPTS5IVE1MQ29sbGVjdGlvbi5u
YW1lZEl0ZW0oKSIpOworICAgIEhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uKiBpbXAgPSBWOEhU
TUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uOjp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKKyAgICB2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gcmVzdWx0ID0gZ2V0TmFtZWRJdGVtcyhpbXAsIHRvV2ViQ29y
ZVN0cmluZyhhcmdzWzBdKSwgYXJncy5Ib2xkZXIoKSwgYXJncy5HZXRJc29sYXRlKCkpOworCisg
ICAgaWYgKHJlc3VsdC5Jc0VtcHR5KCkpCisgICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKGFy
Z3MuR2V0SXNvbGF0ZSgpKTsKKworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhU
TUxPcHRpb25zQ29sbGVjdGlvbkN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTE9wdGlvbnNDb2xsZWN0aW9uQ3VzdG9tLmNwcAko
cmV2aXNpb24gMTMzNjkzKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4
SFRNTE9wdGlvbnNDb2xsZWN0aW9uQ3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzksMTAg
KzM5LDUxIEBACiAjaW5jbHVkZSAiVjhDb2xsZWN0aW9uLmgiCiAjaW5jbHVkZSAiVjhIVE1MT3B0
aW9uRWxlbWVudC5oIgogI2luY2x1ZGUgIlY4SFRNTFNlbGVjdEVsZW1lbnRDdXN0b20uaCIKKyNp
bmNsdWRlICJWOE5hbWVkTm9kZXNDb2xsZWN0aW9uLmgiCiAjaW5jbHVkZSAiVjhOb2RlLmgiCisj
aW5jbHVkZSAiVjhOb2RlTGlzdC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK3N0YXRpYyB2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gZ2V0TmFtZWRJdGVtcyhIVE1MT3B0aW9uc0NvbGxlY3Rpb24q
IGNvbGxlY3Rpb24sIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgdjg6OkhhbmRsZTx2ODo6T2Jq
ZWN0PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJc29sYXRlKiBpc29sYXRlKQoreworICAgIFZlY3Rv
cjxSZWZQdHI8Tm9kZT4gPiBuYW1lZEl0ZW1zOworICAgIGNvbGxlY3Rpb24tPm5hbWVkSXRlbXMo
bmFtZSwgbmFtZWRJdGVtcyk7CisKKyAgICBpZiAoIW5hbWVkSXRlbXMuc2l6ZSgpKQorICAgICAg
ICByZXR1cm4gdjhVbmRlZmluZWQoKTsKKworICAgIGlmIChuYW1lZEl0ZW1zLnNpemUoKSA9PSAx
KQorICAgICAgICByZXR1cm4gdG9WOChuYW1lZEl0ZW1zLmF0KDApLnJlbGVhc2UoKSwgY3JlYXRp
b25Db250ZXh0LCBpc29sYXRlKTsKKworICAgIHJldHVybiB0b1Y4KFY4TmFtZWROb2Rlc0NvbGxl
Y3Rpb246OmNyZWF0ZShuYW1lZEl0ZW1zKSwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsKK30K
Kwordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SFRNTE9wdGlvbnNDb2xsZWN0aW9uOjpuYW1lZFBy
b3BlcnR5R2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNz
b3JJbmZvJiBpbmZvKQoreworICAgIElOQ19TVEFUUygiRE9NLkhUTUxDb2xsZWN0aW9uLk5hbWVk
UHJvcGVydHlHZXR0ZXIiKTsKKworICAgIGlmICghaW5mby5Ib2xkZXIoKS0+R2V0UmVhbE5hbWVk
UHJvcGVydHlJblByb3RvdHlwZUNoYWluKG5hbWUpLklzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJu
IHY4VW5kZWZpbmVkKCk7CisgICAgaWYgKGluZm8uSG9sZGVyKCktPkhhc1JlYWxOYW1lZENhbGxi
YWNrUHJvcGVydHkobmFtZSkpCisgICAgICAgIHJldHVybiB2OFVuZGVmaW5lZCgpOworCisgICAg
SFRNTE9wdGlvbnNDb2xsZWN0aW9uKiBpbXAgPSBWOEhUTUxPcHRpb25zQ29sbGVjdGlvbjo6dG9O
YXRpdmUoaW5mby5Ib2xkZXIoKSk7CisgICAgcmV0dXJuIGdldE5hbWVkSXRlbXMoaW1wLCB0b1dl
YkNvcmVBdG9taWNTdHJpbmcobmFtZSksIGluZm8uSG9sZGVyKCksIGluZm8uR2V0SXNvbGF0ZSgp
KTsKK30KKwordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SFRNTE9wdGlvbnNDb2xsZWN0aW9uOjpu
YW1lZEl0ZW1DYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQoreworICAgIElOQ19T
VEFUUygiRE9NLkhUTUxDb2xsZWN0aW9uLm5hbWVkSXRlbSgpIik7CisgICAgSFRNTE9wdGlvbnND
b2xsZWN0aW9uKiBpbXAgPSBWOEhUTUxPcHRpb25zQ29sbGVjdGlvbjo6dG9OYXRpdmUoYXJncy5I
b2xkZXIoKSk7CisgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHJlc3VsdCA9IGdldE5hbWVkSXRl
bXMoaW1wLCB0b1dlYkNvcmVTdHJpbmcoYXJnc1swXSksIGFyZ3MuSG9sZGVyKCksIGFyZ3MuR2V0
SXNvbGF0ZSgpKTsKKworICAgIGlmIChyZXN1bHQuSXNFbXB0eSgpKQorICAgICAgICByZXR1cm4g
djg6OlVuZGVmaW5lZChhcmdzLkdldElzb2xhdGUoKSk7CisKKyAgICByZXR1cm4gcmVzdWx0Owor
fQorCiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhIVE1MT3B0aW9uc0NvbGxlY3Rpb246OnJlbW92
ZUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgSU5DX1NUQVRTKCJE
T00uSFRNTE9wdGlvbnNDb2xsZWN0aW9uLnJlbW92ZSgpIik7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5jcHAJKHJldmlzaW9uIDEzMzY5MykKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ0NTAsMTEgKzQ0NTAsNiBAQCBQYXNzUmVmUHRyPEhU
TUxDb2xsZWN0aW9uPiBEb2N1bWVudDo6cGx1CiAgICAgcmV0dXJuIGNhY2hlZENvbGxlY3Rpb24o
RG9jRW1iZWRzKTsKIH0KIAotUGFzc1JlZlB0cjxIVE1MQ29sbGVjdGlvbj4gRG9jdW1lbnQ6Om9i
amVjdHMoKQotewotICAgIHJldHVybiBjYWNoZWRDb2xsZWN0aW9uKERvY09iamVjdHMpOwotfQot
CiBQYXNzUmVmUHRyPEhUTUxDb2xsZWN0aW9uPiBEb2N1bWVudDo6c2NyaXB0cygpCiB7CiAgICAg
cmV0dXJuIGNhY2hlZENvbGxlY3Rpb24oRG9jU2NyaXB0cyk7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnQuaAkocmV2aXNpb24gMTMzNjkzKQorKysgU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTQzOCw3ICs0MzgsNiBAQCBwdWJsaWM6CiAgICAgUGFzc1JlZlB0
cjxIVE1MQ29sbGVjdGlvbj4gbGlua3MoKTsKICAgICBQYXNzUmVmUHRyPEhUTUxDb2xsZWN0aW9u
PiBmb3JtcygpOwogICAgIFBhc3NSZWZQdHI8SFRNTENvbGxlY3Rpb24+IGFuY2hvcnMoKTsKLSAg
ICBQYXNzUmVmUHRyPEhUTUxDb2xsZWN0aW9uPiBvYmplY3RzKCk7CiAgICAgUGFzc1JlZlB0cjxI
VE1MQ29sbGVjdGlvbj4gc2NyaXB0cygpOwogICAgIFBhc3NSZWZQdHI8SFRNTENvbGxlY3Rpb24+
IGFsbCgpOwogICAgIHZvaWQgcmVtb3ZlQ2FjaGVkSFRNTENvbGxlY3Rpb24oSFRNTENvbGxlY3Rp
b24qLCBDb2xsZWN0aW9uVHlwZSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCShyZXZpc2lv
biAxMzM2OTMpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTQ2LDcgKzQ2LDcgQEAKICNpbmNsdWRlICJIVE1MQ29sbGVjdGlvbi5oIgogI2luY2x1
ZGUgIkhUTUxEb2N1bWVudC5oIgogI2luY2x1ZGUgIkhUTUxFbGVtZW50LmgiCi0jaW5jbHVkZSAi
SFRNTEZvcm1Db2xsZWN0aW9uLmgiCisjaW5jbHVkZSAiSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rp
b24uaCIKICNpbmNsdWRlICJIVE1MRnJhbWVPd25lckVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1M
TGFiZWxFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCkBAIC0yMzQ4LDcgKzIzNDgs
NyBAQCBQYXNzUmVmUHRyPEhUTUxDb2xsZWN0aW9uPiBFbGVtZW50UmFyZURhCiAgICAgICAgIGNv
bGxlY3Rpb24gPSBIVE1MT3B0aW9uc0NvbGxlY3Rpb246OmNyZWF0ZShlbGVtZW50KTsKICAgICB9
IGVsc2UgaWYgKHR5cGUgPT0gRm9ybUNvbnRyb2xzKSB7CiAgICAgICAgIEFTU0VSVChlbGVtZW50
LT5oYXNUYWdOYW1lKGZvcm1UYWcpIHx8IGVsZW1lbnQtPmhhc1RhZ05hbWUoZmllbGRzZXRUYWcp
KTsKLSAgICAgICAgY29sbGVjdGlvbiA9IEhUTUxGb3JtQ29sbGVjdGlvbjo6Y3JlYXRlKGVsZW1l
bnQpOworICAgICAgICBjb2xsZWN0aW9uID0gSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb246OmNy
ZWF0ZShlbGVtZW50KTsKICNpZiBFTkFCTEUoTUlDUk9EQVRBKQogICAgIH0gZWxzZSBpZiAodHlw
ZSA9PSBJdGVtUHJvcGVydGllcykgewogICAgICAgICBjb2xsZWN0aW9uID0gSFRNTFByb3BlcnRp
ZXNDb2xsZWN0aW9uOjpjcmVhdGUoZWxlbWVudCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1s
L0NvbGxlY3Rpb25UeXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9Db2xs
ZWN0aW9uVHlwZS5oCShyZXZpc2lvbiAxMzM2OTMpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0Nv
bGxlY3Rpb25UeXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDcgKzMxLDYgQEAgZW51bSBDb2xs
ZWN0aW9uVHlwZSB7CiAgICAgRG9jSW1hZ2VzLCAgICAvLyBhbGwgPGltZz4gZWxlbWVudHMgaW4g
dGhlIGRvY3VtZW50CiAgICAgRG9jQXBwbGV0cywgICAvLyBhbGwgPG9iamVjdD4gYW5kIDxhcHBs
ZXQ+IGVsZW1lbnRzCiAgICAgRG9jRW1iZWRzLCAgICAvLyBhbGwgPGVtYmVkPiBlbGVtZW50cwot
ICAgIERvY09iamVjdHMsICAgLy8gYWxsIDxvYmplY3Q+IGVsZW1lbnRzCiAgICAgRG9jRm9ybXMs
ICAgICAvLyBhbGwgPGZvcm0+IGVsZW1lbnRzCiAgICAgRG9jTGlua3MsICAgICAvLyBhbGwgPGE+
IF9hbmRfIDxhcmVhPiBlbGVtZW50cyB3aXRoIGEgdmFsdWUgZm9yIGhyZWYKICAgICBEb2NBbmNo
b3JzLCAgIC8vIGFsbCA8YT4gZWxlbWVudHMgd2l0aCBhIHZhbHVlIGZvciBuYW1lCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDb2xsZWN0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxDb2xsZWN0aW9uLmNwcAkocmV2aXNpb24gMTMzNjkzKQorKysg
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ29sbGVjdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTUxLDcgKzUxLDYgQEAgc3RhdGljIGJvb2wgc2hvdWxkT25seUluY2x1ZGVEaXJlY3RDaGlsZAog
ICAgIGNhc2UgRG9jRm9ybXM6CiAgICAgY2FzZSBEb2NJbWFnZXM6CiAgICAgY2FzZSBEb2NMaW5r
czoKLSAgICBjYXNlIERvY09iamVjdHM6CiAgICAgY2FzZSBEb2NTY3JpcHRzOgogICAgIGNhc2Ug
RG9jdW1lbnROYW1lZEl0ZW1zOgogICAgIGNhc2UgTWFwQXJlYXM6CkBAIC04Myw3ICs4Miw2IEBA
IHN0YXRpYyBOb2RlTGlzdFJvb3RUeXBlIHJvb3RUeXBlRnJvbUNvbGwKICAgICBjYXNlIERvY0lt
YWdlczoKICAgICBjYXNlIERvY0FwcGxldHM6CiAgICAgY2FzZSBEb2NFbWJlZHM6Ci0gICAgY2Fz
ZSBEb2NPYmplY3RzOgogICAgIGNhc2UgRG9jRm9ybXM6CiAgICAgY2FzZSBEb2NMaW5rczoKICAg
ICBjYXNlIERvY0FuY2hvcnM6CkBAIC0xMTcsNyArMTE1LDYgQEAgc3RhdGljIE5vZGVMaXN0SW52
YWxpZGF0aW9uVHlwZSBpbnZhbGlkYQogICAgIHN3aXRjaCAodHlwZSkgewogICAgIGNhc2UgRG9j
SW1hZ2VzOgogICAgIGNhc2UgRG9jRW1iZWRzOgotICAgIGNhc2UgRG9jT2JqZWN0czoKICAgICBj
YXNlIERvY0Zvcm1zOgogICAgIGNhc2UgRG9jQW5jaG9yczogLy8gRGVwZW5kcyBvbiBuYW1lIGF0
dHJpYnV0ZS4KICAgICBjYXNlIERvY1NjcmlwdHM6CkBAIC0yMTQsOCArMjExLDYgQEAgc3RhdGlj
IGlubGluZSBib29sIGlzQWNjZXB0YWJsZUVsZW1lbnQoQwogICAgICAgICByZXR1cm4gZWxlbWVu
dC0+aGFzTG9jYWxOYW1lKGFwcGxldFRhZykgfHwgKGVsZW1lbnQtPmhhc0xvY2FsTmFtZShvYmpl
Y3RUYWcpICYmIHN0YXRpY19jYXN0PEhUTUxPYmplY3RFbGVtZW50Kj4oZWxlbWVudCktPmNvbnRh
aW5zSmF2YUFwcGxldCgpKTsKICAgICBjYXNlIERvY0VtYmVkczoKICAgICAgICAgcmV0dXJuIGVs
ZW1lbnQtPmhhc0xvY2FsTmFtZShlbWJlZFRhZyk7Ci0gICAgY2FzZSBEb2NPYmplY3RzOgotICAg
ICAgICByZXR1cm4gZWxlbWVudC0+aGFzTG9jYWxOYW1lKG9iamVjdFRhZyk7CiAgICAgY2FzZSBE
b2NMaW5rczoKICAgICAgICAgcmV0dXJuIChlbGVtZW50LT5oYXNMb2NhbE5hbWUoYVRhZykgfHwg
ZWxlbWVudC0+aGFzTG9jYWxOYW1lKGFyZWFUYWcpKSAmJiBlbGVtZW50LT5mYXN0SGFzQXR0cmli
dXRlKGhyZWZBdHRyKTsKICAgICBjYXNlIERvY0FuY2hvcnM6CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxDb2xsZWN0aW9uLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxDb2xsZWN0aW9uLmlkbAkocmV2aXNpb24gMTMzNjkzKQorKysgU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MQ29sbGVjdGlvbi5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI4LDcgKzI4LDcg
QEAKIF0gaW50ZXJmYWNlIEhUTUxDb2xsZWN0aW9uIHsKICAgICByZWFkb25seSBhdHRyaWJ1dGUg
dW5zaWduZWQgbG9uZyBsZW5ndGg7CiAgICAgTm9kZSBpdGVtKGluIFtPcHRpb25hbD1EZWZhdWx0
SXNVbmRlZmluZWRdIHVuc2lnbmVkIGxvbmcgaW5kZXgpOwotICAgIFtDdXN0b21dIE5vZGUgbmFt
ZWRJdGVtKGluIFtPcHRpb25hbD1EZWZhdWx0SXNVbmRlZmluZWRdIERPTVN0cmluZyBuYW1lKTsK
KyAgICBOb2RlIG5hbWVkSXRlbShpbiBbT3B0aW9uYWw9RGVmYXVsdElzVW5kZWZpbmVkXSBET01T
dHJpbmcgbmFtZSk7CiAKICNpZiBkZWZpbmVkKExBTkdVQUdFX09CSkVDVElWRV9DKSAmJiBMQU5H
VUFHRV9PQkpFQ1RJVkVfQwogICAgIE5vZGVMaXN0IHRhZ3MoaW4gW09wdGlvbmFsPURlZmF1bHRJ
c1VuZGVmaW5lZF0gRE9NU3RyaW5nIG5hbWUpOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MRmllbGRTZXRFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxGaWVsZFNldEVsZW1lbnQuY3BwCShyZXZpc2lvbiAxMzM2OTMpCisrKyBTb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxGaWVsZFNldEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw3
ICsyNSw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiSFRNTEZpZWxkU2V0RWxl
bWVudC5oIgogCi0jaW5jbHVkZSAiSFRNTEZvcm1Db2xsZWN0aW9uLmgiCisjaW5jbHVkZSAiSFRN
TENvbGxlY3Rpb24uaCIKICNpbmNsdWRlICJIVE1MTGVnZW5kRWxlbWVudC5oIgogI2luY2x1ZGUg
IkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIkhUTUxPYmplY3RFbGVtZW50LmgiCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxGaWVsZFNldEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxGaWVsZFNldEVsZW1lbnQuaAkocmV2aXNpb24gMTMzNjkzKQor
KysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRmllbGRTZXRFbGVtZW50LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTMxLDcgKzMxLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBGb3JtQXNz
b2NpYXRlZEVsZW1lbnQ7CiBjbGFzcyBIVE1MQ29sbGVjdGlvbjsKLWNsYXNzIEhUTUxGb3JtQ29s
bGVjdGlvbjsKIAogY2xhc3MgSFRNTEZpZWxkU2V0RWxlbWVudCA6IHB1YmxpYyBIVE1MRm9ybUNv
bnRyb2xFbGVtZW50IHsKIHB1YmxpYzoKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZv
cm1Db2xsZWN0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxG
b3JtQ29sbGVjdGlvbi5jcHAJKHJldmlzaW9uIDEzMzY5MykKKysrIFNvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEZvcm1Db2xsZWN0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSwxNjMgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMTk5OSBMYXJzIEtub2xsIChrbm9sbEBrZGUub3JnKQot
ICogICAgICAgICAgIChDKSAxOTk5IEFudHRpIEtvaXZpc3RvIChrb2l2aXN0b0BrZGUub3JnKQot
ICogQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDEwLCAyMDEx
LCAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBUaGlzIGxpYnJh
cnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiBt
b2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YwotICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
bjsgZWl0aGVyCi0gKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlv
bikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVk
IGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkg
V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hB
TlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBH
TlUKLSAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgot
ICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUg
dGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gKiB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAot
ICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKgotICovCi0KLSNpbmNsdWRlICJjb25m
aWcuaCIKLSNpbmNsdWRlICJIVE1MRm9ybUNvbGxlY3Rpb24uaCIKLQotI2luY2x1ZGUgIkhUTUxG
aWVsZFNldEVsZW1lbnQuaCIKLSNpbmNsdWRlICJIVE1MRm9ybUNvbnRyb2xFbGVtZW50LmgiCi0j
aW5jbHVkZSAiSFRNTEZvcm1FbGVtZW50LmgiCi0jaW5jbHVkZSAiSFRNTEltYWdlRWxlbWVudC5o
IgotI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXVzaW5n
IG5hbWVzcGFjZSBIVE1MTmFtZXM7Ci0KLS8vIFNpbmNlIHRoZSBjb2xsZWN0aW9ucyBhcmUgdG8g
YmUgImxpdmUiLCB3ZSBoYXZlIHRvIGRvIHRoZQotLy8gY2FsY3VsYXRpb24gZXZlcnkgdGltZSBp
ZiBhbnl0aGluZyBoYXMgY2hhbmdlZC4KLQotSFRNTEZvcm1Db2xsZWN0aW9uOjpIVE1MRm9ybUNv
bGxlY3Rpb24oRWxlbWVudCogYmFzZSkKLSAgICA6IEhUTUxDb2xsZWN0aW9uKGJhc2UsIEZvcm1D
b250cm9scywgT3ZlcnJpZGVzSXRlbUFmdGVyKQotewotICAgIEFTU0VSVChiYXNlLT5oYXNUYWdO
YW1lKGZvcm1UYWcpIHx8IGJhc2UtPmhhc1RhZ05hbWUoZmllbGRzZXRUYWcpKTsKLX0KLQotUGFz
c1JlZlB0cjxIVE1MRm9ybUNvbGxlY3Rpb24+IEhUTUxGb3JtQ29sbGVjdGlvbjo6Y3JlYXRlKEVs
ZW1lbnQqIGJhc2UpCi17Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBIVE1MRm9ybUNvbGxlY3Rp
b24oYmFzZSkpOwotfQotCi1IVE1MRm9ybUNvbGxlY3Rpb246On5IVE1MRm9ybUNvbGxlY3Rpb24o
KQotewotfQotCi1jb25zdCBWZWN0b3I8Rm9ybUFzc29jaWF0ZWRFbGVtZW50Kj4mIEhUTUxGb3Jt
Q29sbGVjdGlvbjo6Zm9ybUNvbnRyb2xFbGVtZW50cygpIGNvbnN0Ci17Ci0gICAgQVNTRVJUKGJh
c2UoKSk7Ci0gICAgQVNTRVJUKGJhc2UoKS0+aGFzVGFnTmFtZShmb3JtVGFnKSB8fCBiYXNlKCkt
Pmhhc1RhZ05hbWUoZmllbGRzZXRUYWcpKTsKLSAgICBpZiAoYmFzZSgpLT5oYXNUYWdOYW1lKGZv
cm1UYWcpKQotICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SFRNTEZvcm1FbGVtZW50Kj4oYmFz
ZSgpKS0+YXNzb2NpYXRlZEVsZW1lbnRzKCk7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PEhUTUxG
aWVsZFNldEVsZW1lbnQqPihiYXNlKCkpLT5hc3NvY2lhdGVkRWxlbWVudHMoKTsKLX0KLQotY29u
c3QgVmVjdG9yPEhUTUxJbWFnZUVsZW1lbnQqPiYgSFRNTEZvcm1Db2xsZWN0aW9uOjpmb3JtSW1h
Z2VFbGVtZW50cygpIGNvbnN0Ci17Ci0gICAgQVNTRVJUKGJhc2UoKSk7Ci0gICAgQVNTRVJUKGJh
c2UoKS0+aGFzVGFnTmFtZShmb3JtVGFnKSk7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PEhUTUxG
b3JtRWxlbWVudCo+KGJhc2UoKSktPmltYWdlRWxlbWVudHMoKTsKLX0KLQotRWxlbWVudCogSFRN
TEZvcm1Db2xsZWN0aW9uOjp2aXJ0dWFsSXRlbUFmdGVyKHVuc2lnbmVkJiBvZmZzZXQsIEVsZW1l
bnQqIHByZXZpb3VzSXRlbSkgY29uc3QKLXsKLSAgICBjb25zdCBWZWN0b3I8Rm9ybUFzc29jaWF0
ZWRFbGVtZW50Kj4mIGVsZW1lbnRzQXJyYXkgPSBmb3JtQ29udHJvbEVsZW1lbnRzKCk7Ci0gICAg
aWYgKHByZXZpb3VzSXRlbSkKLSAgICAgICAgb2Zmc2V0Kys7Ci0gICAgd2hpbGUgKG9mZnNldCA8
IGVsZW1lbnRzQXJyYXkuc2l6ZSgpKSB7Ci0gICAgICAgIEZvcm1Bc3NvY2lhdGVkRWxlbWVudCog
ZWxlbWVudCA9IGVsZW1lbnRzQXJyYXlbb2Zmc2V0XTsKLSAgICAgICAgaWYgKGVsZW1lbnQtPmlz
RW51bWVyYXRhYmxlKCkpCi0gICAgICAgICAgICByZXR1cm4gdG9IVE1MRWxlbWVudChlbGVtZW50
KTsKLSAgICAgICAgb2Zmc2V0Kys7Ci0gICAgfQotICAgIHJldHVybiAwOwotfQotCi1zdGF0aWMg
SFRNTEVsZW1lbnQqIGZpcnN0TmFtZWRJdGVtKGNvbnN0IFZlY3RvcjxGb3JtQXNzb2NpYXRlZEVs
ZW1lbnQqPiYgZWxlbWVudHNBcnJheSwKLSAgICBjb25zdCBWZWN0b3I8SFRNTEltYWdlRWxlbWVu
dCo+KiBpbWFnZUVsZW1lbnRzQXJyYXksIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lLCBj
b25zdCBTdHJpbmcmIG5hbWUpCi17Ci0gICAgQVNTRVJUKGF0dHJOYW1lID09IGlkQXR0ciB8fCBh
dHRyTmFtZSA9PSBuYW1lQXR0cik7Ci0KLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZWxl
bWVudHNBcnJheS5zaXplKCk7ICsraSkgewotICAgICAgICBIVE1MRWxlbWVudCogZWxlbWVudCA9
IHRvSFRNTEVsZW1lbnQoZWxlbWVudHNBcnJheVtpXSk7Ci0gICAgICAgIGlmIChlbGVtZW50c0Fy
cmF5W2ldLT5pc0VudW1lcmF0YWJsZSgpICYmIGVsZW1lbnQtPmZhc3RHZXRBdHRyaWJ1dGUoYXR0
ck5hbWUpID09IG5hbWUpCi0gICAgICAgICAgICByZXR1cm4gZWxlbWVudDsKLSAgICB9Ci0KLSAg
ICBpZiAoIWltYWdlRWxlbWVudHNBcnJheSkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgaW1hZ2VFbGVtZW50c0FycmF5LT5zaXplKCk7ICsraSkgewot
ICAgICAgICBIVE1MSW1hZ2VFbGVtZW50KiBlbGVtZW50ID0gKCppbWFnZUVsZW1lbnRzQXJyYXkp
W2ldOwotICAgICAgICBpZiAoZWxlbWVudC0+ZmFzdEdldEF0dHJpYnV0ZShhdHRyTmFtZSkgPT0g
bmFtZSkKLSAgICAgICAgICAgIHJldHVybiBlbGVtZW50OwotICAgIH0KLQotICAgIHJldHVybiAw
OwotfQotCi1Ob2RlKiBIVE1MRm9ybUNvbGxlY3Rpb246Om5hbWVkSXRlbShjb25zdCBBdG9taWNT
dHJpbmcmIG5hbWUpIGNvbnN0Ci17Ci0gICAgLy8gaHR0cDovL21zZG4ubWljcm9zb2Z0LmNvbS93
b3Jrc2hvcC9hdXRob3IvZGh0bWwvcmVmZXJlbmNlL21ldGhvZHMvbmFtZWRpdGVtLmFzcAotICAg
IC8vIFRoaXMgbWV0aG9kIGZpcnN0IHNlYXJjaGVzIGZvciBhbiBvYmplY3Qgd2l0aCBhIG1hdGNo
aW5nIGlkCi0gICAgLy8gYXR0cmlidXRlLiBJZiBhIG1hdGNoIGlzIG5vdCBmb3VuZCwgdGhlIG1l
dGhvZCB0aGVuIHNlYXJjaGVzIGZvciBhbgotICAgIC8vIG9iamVjdCB3aXRoIGEgbWF0Y2hpbmcg
bmFtZSBhdHRyaWJ1dGUsIGJ1dCBvbmx5IG9uIHRob3NlIGVsZW1lbnRzCi0gICAgLy8gdGhhdCBh
cmUgYWxsb3dlZCBhIG5hbWUgYXR0cmlidXRlLgotICAgIGNvbnN0IFZlY3RvcjxIVE1MSW1hZ2VF
bGVtZW50Kj4qIGltYWdlc0VsZW1lbnRzID0gYmFzZSgpLT5oYXNUYWdOYW1lKGZpZWxkc2V0VGFn
KSA/IDAgOiAmZm9ybUltYWdlRWxlbWVudHMoKTsKLSAgICBpZiAoSFRNTEVsZW1lbnQqIGl0ZW0g
PSBmaXJzdE5hbWVkSXRlbShmb3JtQ29udHJvbEVsZW1lbnRzKCksIGltYWdlc0VsZW1lbnRzLCBp
ZEF0dHIsIG5hbWUpKQotICAgICAgICByZXR1cm4gaXRlbTsKLQotICAgIHJldHVybiBmaXJzdE5h
bWVkSXRlbShmb3JtQ29udHJvbEVsZW1lbnRzKCksIGltYWdlc0VsZW1lbnRzLCBuYW1lQXR0ciwg
bmFtZSk7Ci19Ci0KLXZvaWQgSFRNTEZvcm1Db2xsZWN0aW9uOjp1cGRhdGVOYW1lQ2FjaGUoKSBj
b25zdAotewotICAgIGlmIChoYXNOYW1lQ2FjaGUoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAg
SGFzaFNldDxBdG9taWNTdHJpbmdJbXBsKj4gZm91bmRJbnB1dEVsZW1lbnRzOwotCi0gICAgY29u
c3QgVmVjdG9yPEZvcm1Bc3NvY2lhdGVkRWxlbWVudCo+JiBlbGVtZW50c0FycmF5ID0gZm9ybUNv
bnRyb2xFbGVtZW50cygpOwotCi0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGVsZW1lbnRz
QXJyYXkuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgRm9ybUFzc29jaWF0ZWRFbGVtZW50KiBhc3Nv
Y2lhdGVkRWxlbWVudCA9IGVsZW1lbnRzQXJyYXlbaV07Ci0gICAgICAgIGlmIChhc3NvY2lhdGVk
RWxlbWVudC0+aXNFbnVtZXJhdGFibGUoKSkgewotICAgICAgICAgICAgSFRNTEVsZW1lbnQqIGVs
ZW1lbnQgPSB0b0hUTUxFbGVtZW50KGFzc29jaWF0ZWRFbGVtZW50KTsKLSAgICAgICAgICAgIGNv
bnN0IEF0b21pY1N0cmluZyYgaWRBdHRyVmFsID0gZWxlbWVudC0+Z2V0SWRBdHRyaWJ1dGUoKTsK
LSAgICAgICAgICAgIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZUF0dHJWYWwgPSBlbGVtZW50LT5n
ZXROYW1lQXR0cmlidXRlKCk7Ci0gICAgICAgICAgICBpZiAoIWlkQXR0clZhbC5pc0VtcHR5KCkp
IHsKLSAgICAgICAgICAgICAgICBhcHBlbmRJZENhY2hlKGlkQXR0clZhbCwgZWxlbWVudCk7Ci0g
ICAgICAgICAgICAgICAgZm91bmRJbnB1dEVsZW1lbnRzLmFkZChpZEF0dHJWYWwuaW1wbCgpKTsK
LSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmICghbmFtZUF0dHJWYWwuaXNFbXB0eSgpICYm
IGlkQXR0clZhbCAhPSBuYW1lQXR0clZhbCkgewotICAgICAgICAgICAgICAgIGFwcGVuZE5hbWVD
YWNoZShuYW1lQXR0clZhbCwgZWxlbWVudCk7Ci0gICAgICAgICAgICAgICAgZm91bmRJbnB1dEVs
ZW1lbnRzLmFkZChuYW1lQXR0clZhbC5pbXBsKCkpOwotICAgICAgICAgICAgfQotICAgICAgICB9
Ci0gICAgfQotCi0gICAgaWYgKGJhc2UoKS0+aGFzVGFnTmFtZShmb3JtVGFnKSkgewotICAgICAg
ICBjb25zdCBWZWN0b3I8SFRNTEltYWdlRWxlbWVudCo+JiBpbWFnZUVsZW1lbnRzQXJyYXkgPSBm
b3JtSW1hZ2VFbGVtZW50cygpOwotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgaW1h
Z2VFbGVtZW50c0FycmF5LnNpemUoKTsgKytpKSB7Ci0gICAgICAgICAgICBIVE1MSW1hZ2VFbGVt
ZW50KiBlbGVtZW50ID0gaW1hZ2VFbGVtZW50c0FycmF5W2ldOwotICAgICAgICAgICAgY29uc3Qg
QXRvbWljU3RyaW5nJiBpZEF0dHJWYWwgPSBlbGVtZW50LT5nZXRJZEF0dHJpYnV0ZSgpOwotICAg
ICAgICAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lQXR0clZhbCA9IGVsZW1lbnQtPmdldE5h
bWVBdHRyaWJ1dGUoKTsKLSAgICAgICAgICAgIGlmICghaWRBdHRyVmFsLmlzRW1wdHkoKSAmJiAh
Zm91bmRJbnB1dEVsZW1lbnRzLmNvbnRhaW5zKGlkQXR0clZhbC5pbXBsKCkpKQotICAgICAgICAg
ICAgICAgIGFwcGVuZElkQ2FjaGUoaWRBdHRyVmFsLCBlbGVtZW50KTsKLSAgICAgICAgICAgIGlm
ICghbmFtZUF0dHJWYWwuaXNFbXB0eSgpICYmIGlkQXR0clZhbCAhPSBuYW1lQXR0clZhbCAmJiAh
Zm91bmRJbnB1dEVsZW1lbnRzLmNvbnRhaW5zKG5hbWVBdHRyVmFsLmltcGwoKSkpCi0gICAgICAg
ICAgICAgICAgYXBwZW5kTmFtZUNhY2hlKG5hbWVBdHRyVmFsLCBlbGVtZW50KTsKLSAgICAgICAg
fQotICAgIH0KLQotICAgIHNldEhhc05hbWVDYWNoZSgpOwotfQotCi19CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxGb3JtQ29sbGVjdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEZvcm1Db2xsZWN0aW9uLmgJKHJldmlzaW9uIDEzMzY5MykKKysrIFNv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db2xsZWN0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAg
LTEsNTcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMTk5OSBMYXJzIEtub2xsIChrbm9s
bEBrZGUub3JnKQotICogICAgICAgICAgIChDKSAxOTk5IEFudHRpIEtvaXZpc3RvIChrb2l2aXN0
b0BrZGUub3JnKQotICogQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3
LCAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBUaGlzIGxpYnJh
cnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiBt
b2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YwotICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
bjsgZWl0aGVyCi0gKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlv
bikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVk
IGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkg
V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hB
TlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBH
TlUKLSAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgot
ICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUg
dGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gKiB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAot
ICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKgotICovCi0KLSNpZm5kZWYgSFRNTEZv
cm1Db2xsZWN0aW9uX2gKLSNkZWZpbmUgSFRNTEZvcm1Db2xsZWN0aW9uX2gKLQotI2luY2x1ZGUg
IkhUTUxDb2xsZWN0aW9uLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgRm9ybUFz
c29jaWF0ZWRFbGVtZW50OwotY2xhc3MgSFRNTEVsZW1lbnQ7Ci1jbGFzcyBIVE1MSW1hZ2VFbGVt
ZW50OwotY2xhc3MgUXVhbGlmaWVkTmFtZTsKLS8vIFRoaXMgY2xhc3MgaXMganVzdCBhIGJpZyBo
YWNrIHRvIGZpbmQgZm9ybSBlbGVtZW50cyBldmVuIGluIG1hbGZvcm1lZCBIVE1MIGVsZW1lbnRz
LgotLy8gVGhlIGZhbW91cyA8dGFibGU+PHRyPjxmb3JtPjx0ZD4gcHJvYmxlbS4KLQotY2xhc3Mg
SFRNTEZvcm1Db2xsZWN0aW9uIDogcHVibGljIEhUTUxDb2xsZWN0aW9uIHsKLXB1YmxpYzoKLSAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxIVE1MRm9ybUNvbGxlY3Rpb24+IGNyZWF0ZShFbGVtZW50Kik7
Ci0KLSAgICB2aXJ0dWFsIH5IVE1MRm9ybUNvbGxlY3Rpb24oKTsKLQotICAgIHZpcnR1YWwgTm9k
ZSogbmFtZWRJdGVtKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSkgY29uc3Q7Ci0KLXByaXZhdGU6
Ci0gICAgSFRNTEZvcm1Db2xsZWN0aW9uKEVsZW1lbnQqKTsKLQotICAgIHZpcnR1YWwgdm9pZCB1
cGRhdGVOYW1lQ2FjaGUoKSBjb25zdDsKLQotICAgIGNvbnN0IFZlY3RvcjxGb3JtQXNzb2NpYXRl
ZEVsZW1lbnQqPiYgZm9ybUNvbnRyb2xFbGVtZW50cygpIGNvbnN0OwotICAgIGNvbnN0IFZlY3Rv
cjxIVE1MSW1hZ2VFbGVtZW50Kj4mIGZvcm1JbWFnZUVsZW1lbnRzKCkgY29uc3Q7Ci0gICAgdmly
dHVhbCBFbGVtZW50KiB2aXJ0dWFsSXRlbUFmdGVyKHVuc2lnbmVkJiBvZmZzZXRJbkFycmF5LCBF
bGVtZW50KikgY29uc3QgT1ZFUlJJREU7Ci19OwotCi19IC8vbmFtZXNwYWNlCi0KLSNlbmRpZgpJ
bmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xzQ29sbGVj
dGlvbi5jcHAJKHJldmlzaW9uIDEzMzU1MSkJKGZyb20gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
Rm9ybUNvbGxlY3Rpb24uY3BwOjEzMzU1MSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZv
cm1Db250cm9sc0NvbGxlY3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTYzIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAxOTk5IExhcnMgS25vbGwgKGtub2xsQGtkZS5vcmcpCisg
KiAgICAgICAgICAgKEMpIDE5OTkgQW50dGkgS29pdmlzdG8gKGtvaXZpc3RvQGtkZS5vcmcpCisg
KiBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMTAsIDIwMTEs
IDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgbGlicmFy
eSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1v
ZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
CisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
OyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9u
KSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQg
aW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBX
QVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFO
VEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdO
VQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisg
KgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0
aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisg
KiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIkhUTUxGb3JtQ29sbGVjdGlvbi5oIgorCisjaW5jbHVkZSAiSFRNTEZp
ZWxkU2V0RWxlbWVudC5oIgorI2luY2x1ZGUgIkhUTUxGb3JtQ29udHJvbEVsZW1lbnQuaCIKKyNp
bmNsdWRlICJIVE1MRm9ybUVsZW1lbnQuaCIKKyNpbmNsdWRlICJIVE1MSW1hZ2VFbGVtZW50Lmgi
CisjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordXNpbmcg
bmFtZXNwYWNlIEhUTUxOYW1lczsKKworLy8gU2luY2UgdGhlIGNvbGxlY3Rpb25zIGFyZSB0byBi
ZSAibGl2ZSIsIHdlIGhhdmUgdG8gZG8gdGhlCisvLyBjYWxjdWxhdGlvbiBldmVyeSB0aW1lIGlm
IGFueXRoaW5nIGhhcyBjaGFuZ2VkLgorCitIVE1MRm9ybUNvbGxlY3Rpb246OkhUTUxGb3JtQ29s
bGVjdGlvbihFbGVtZW50KiBiYXNlKQorICAgIDogSFRNTENvbGxlY3Rpb24oYmFzZSwgRm9ybUNv
bnRyb2xzLCBPdmVycmlkZXNJdGVtQWZ0ZXIpCit7CisgICAgQVNTRVJUKGJhc2UtPmhhc1RhZ05h
bWUoZm9ybVRhZykgfHwgYmFzZS0+aGFzVGFnTmFtZShmaWVsZHNldFRhZykpOworfQorCitQYXNz
UmVmUHRyPEhUTUxGb3JtQ29sbGVjdGlvbj4gSFRNTEZvcm1Db2xsZWN0aW9uOjpjcmVhdGUoRWxl
bWVudCogYmFzZSkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IEhUTUxGb3JtQ29sbGVjdGlv
bihiYXNlKSk7Cit9CisKK0hUTUxGb3JtQ29sbGVjdGlvbjo6fkhUTUxGb3JtQ29sbGVjdGlvbigp
Cit7Cit9CisKK2NvbnN0IFZlY3RvcjxGb3JtQXNzb2NpYXRlZEVsZW1lbnQqPiYgSFRNTEZvcm1D
b2xsZWN0aW9uOjpmb3JtQ29udHJvbEVsZW1lbnRzKCkgY29uc3QKK3sKKyAgICBBU1NFUlQoYmFz
ZSgpKTsKKyAgICBBU1NFUlQoYmFzZSgpLT5oYXNUYWdOYW1lKGZvcm1UYWcpIHx8IGJhc2UoKS0+
aGFzVGFnTmFtZShmaWVsZHNldFRhZykpOworICAgIGlmIChiYXNlKCktPmhhc1RhZ05hbWUoZm9y
bVRhZykpCisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxIVE1MRm9ybUVsZW1lbnQqPihiYXNl
KCkpLT5hc3NvY2lhdGVkRWxlbWVudHMoKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SFRNTEZp
ZWxkU2V0RWxlbWVudCo+KGJhc2UoKSktPmFzc29jaWF0ZWRFbGVtZW50cygpOworfQorCitjb25z
dCBWZWN0b3I8SFRNTEltYWdlRWxlbWVudCo+JiBIVE1MRm9ybUNvbGxlY3Rpb246OmZvcm1JbWFn
ZUVsZW1lbnRzKCkgY29uc3QKK3sKKyAgICBBU1NFUlQoYmFzZSgpKTsKKyAgICBBU1NFUlQoYmFz
ZSgpLT5oYXNUYWdOYW1lKGZvcm1UYWcpKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SFRNTEZv
cm1FbGVtZW50Kj4oYmFzZSgpKS0+aW1hZ2VFbGVtZW50cygpOworfQorCitFbGVtZW50KiBIVE1M
Rm9ybUNvbGxlY3Rpb246OnZpcnR1YWxJdGVtQWZ0ZXIodW5zaWduZWQmIG9mZnNldCwgRWxlbWVu
dCogcHJldmlvdXNJdGVtKSBjb25zdAoreworICAgIGNvbnN0IFZlY3RvcjxGb3JtQXNzb2NpYXRl
ZEVsZW1lbnQqPiYgZWxlbWVudHNBcnJheSA9IGZvcm1Db250cm9sRWxlbWVudHMoKTsKKyAgICBp
ZiAocHJldmlvdXNJdGVtKQorICAgICAgICBvZmZzZXQrKzsKKyAgICB3aGlsZSAob2Zmc2V0IDwg
ZWxlbWVudHNBcnJheS5zaXplKCkpIHsKKyAgICAgICAgRm9ybUFzc29jaWF0ZWRFbGVtZW50KiBl
bGVtZW50ID0gZWxlbWVudHNBcnJheVtvZmZzZXRdOworICAgICAgICBpZiAoZWxlbWVudC0+aXNF
bnVtZXJhdGFibGUoKSkKKyAgICAgICAgICAgIHJldHVybiB0b0hUTUxFbGVtZW50KGVsZW1lbnQp
OworICAgICAgICBvZmZzZXQrKzsKKyAgICB9CisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBI
VE1MRWxlbWVudCogZmlyc3ROYW1lZEl0ZW0oY29uc3QgVmVjdG9yPEZvcm1Bc3NvY2lhdGVkRWxl
bWVudCo+JiBlbGVtZW50c0FycmF5LAorICAgIGNvbnN0IFZlY3RvcjxIVE1MSW1hZ2VFbGVtZW50
Kj4qIGltYWdlRWxlbWVudHNBcnJheSwgY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUsIGNv
bnN0IFN0cmluZyYgbmFtZSkKK3sKKyAgICBBU1NFUlQoYXR0ck5hbWUgPT0gaWRBdHRyIHx8IGF0
dHJOYW1lID09IG5hbWVBdHRyKTsKKworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBlbGVt
ZW50c0FycmF5LnNpemUoKTsgKytpKSB7CisgICAgICAgIEhUTUxFbGVtZW50KiBlbGVtZW50ID0g
dG9IVE1MRWxlbWVudChlbGVtZW50c0FycmF5W2ldKTsKKyAgICAgICAgaWYgKGVsZW1lbnRzQXJy
YXlbaV0tPmlzRW51bWVyYXRhYmxlKCkgJiYgZWxlbWVudC0+ZmFzdEdldEF0dHJpYnV0ZShhdHRy
TmFtZSkgPT0gbmFtZSkKKyAgICAgICAgICAgIHJldHVybiBlbGVtZW50OworICAgIH0KKworICAg
IGlmICghaW1hZ2VFbGVtZW50c0FycmF5KQorICAgICAgICByZXR1cm4gMDsKKworICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBpbWFnZUVsZW1lbnRzQXJyYXktPnNpemUoKTsgKytpKSB7Cisg
ICAgICAgIEhUTUxJbWFnZUVsZW1lbnQqIGVsZW1lbnQgPSAoKmltYWdlRWxlbWVudHNBcnJheSlb
aV07CisgICAgICAgIGlmIChlbGVtZW50LT5mYXN0R2V0QXR0cmlidXRlKGF0dHJOYW1lKSA9PSBu
YW1lKQorICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnQ7CisgICAgfQorCisgICAgcmV0dXJuIDA7
Cit9CisKK05vZGUqIEhUTUxGb3JtQ29sbGVjdGlvbjo6bmFtZWRJdGVtKGNvbnN0IEF0b21pY1N0
cmluZyYgbmFtZSkgY29uc3QKK3sKKyAgICAvLyBodHRwOi8vbXNkbi5taWNyb3NvZnQuY29tL3dv
cmtzaG9wL2F1dGhvci9kaHRtbC9yZWZlcmVuY2UvbWV0aG9kcy9uYW1lZGl0ZW0uYXNwCisgICAg
Ly8gVGhpcyBtZXRob2QgZmlyc3Qgc2VhcmNoZXMgZm9yIGFuIG9iamVjdCB3aXRoIGEgbWF0Y2hp
bmcgaWQKKyAgICAvLyBhdHRyaWJ1dGUuIElmIGEgbWF0Y2ggaXMgbm90IGZvdW5kLCB0aGUgbWV0
aG9kIHRoZW4gc2VhcmNoZXMgZm9yIGFuCisgICAgLy8gb2JqZWN0IHdpdGggYSBtYXRjaGluZyBu
YW1lIGF0dHJpYnV0ZSwgYnV0IG9ubHkgb24gdGhvc2UgZWxlbWVudHMKKyAgICAvLyB0aGF0IGFy
ZSBhbGxvd2VkIGEgbmFtZSBhdHRyaWJ1dGUuCisgICAgY29uc3QgVmVjdG9yPEhUTUxJbWFnZUVs
ZW1lbnQqPiogaW1hZ2VzRWxlbWVudHMgPSBiYXNlKCktPmhhc1RhZ05hbWUoZmllbGRzZXRUYWcp
ID8gMCA6ICZmb3JtSW1hZ2VFbGVtZW50cygpOworICAgIGlmIChIVE1MRWxlbWVudCogaXRlbSA9
IGZpcnN0TmFtZWRJdGVtKGZvcm1Db250cm9sRWxlbWVudHMoKSwgaW1hZ2VzRWxlbWVudHMsIGlk
QXR0ciwgbmFtZSkpCisgICAgICAgIHJldHVybiBpdGVtOworCisgICAgcmV0dXJuIGZpcnN0TmFt
ZWRJdGVtKGZvcm1Db250cm9sRWxlbWVudHMoKSwgaW1hZ2VzRWxlbWVudHMsIG5hbWVBdHRyLCBu
YW1lKTsKK30KKwordm9pZCBIVE1MRm9ybUNvbGxlY3Rpb246OnVwZGF0ZU5hbWVDYWNoZSgpIGNv
bnN0Cit7CisgICAgaWYgKGhhc05hbWVDYWNoZSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBI
YXNoU2V0PEF0b21pY1N0cmluZ0ltcGwqPiBmb3VuZElucHV0RWxlbWVudHM7CisKKyAgICBjb25z
dCBWZWN0b3I8Rm9ybUFzc29jaWF0ZWRFbGVtZW50Kj4mIGVsZW1lbnRzQXJyYXkgPSBmb3JtQ29u
dHJvbEVsZW1lbnRzKCk7CisKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZWxlbWVudHNB
cnJheS5zaXplKCk7ICsraSkgeworICAgICAgICBGb3JtQXNzb2NpYXRlZEVsZW1lbnQqIGFzc29j
aWF0ZWRFbGVtZW50ID0gZWxlbWVudHNBcnJheVtpXTsKKyAgICAgICAgaWYgKGFzc29jaWF0ZWRF
bGVtZW50LT5pc0VudW1lcmF0YWJsZSgpKSB7CisgICAgICAgICAgICBIVE1MRWxlbWVudCogZWxl
bWVudCA9IHRvSFRNTEVsZW1lbnQoYXNzb2NpYXRlZEVsZW1lbnQpOworICAgICAgICAgICAgY29u
c3QgQXRvbWljU3RyaW5nJiBpZEF0dHJWYWwgPSBlbGVtZW50LT5nZXRJZEF0dHJpYnV0ZSgpOwor
ICAgICAgICAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lQXR0clZhbCA9IGVsZW1lbnQtPmdl
dE5hbWVBdHRyaWJ1dGUoKTsKKyAgICAgICAgICAgIGlmICghaWRBdHRyVmFsLmlzRW1wdHkoKSkg
eworICAgICAgICAgICAgICAgIGFwcGVuZElkQ2FjaGUoaWRBdHRyVmFsLCBlbGVtZW50KTsKKyAg
ICAgICAgICAgICAgICBmb3VuZElucHV0RWxlbWVudHMuYWRkKGlkQXR0clZhbC5pbXBsKCkpOwor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKCFuYW1lQXR0clZhbC5pc0VtcHR5KCkgJiYg
aWRBdHRyVmFsICE9IG5hbWVBdHRyVmFsKSB7CisgICAgICAgICAgICAgICAgYXBwZW5kTmFtZUNh
Y2hlKG5hbWVBdHRyVmFsLCBlbGVtZW50KTsKKyAgICAgICAgICAgICAgICBmb3VuZElucHV0RWxl
bWVudHMuYWRkKG5hbWVBdHRyVmFsLmltcGwoKSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0K
KyAgICB9CisKKyAgICBpZiAoYmFzZSgpLT5oYXNUYWdOYW1lKGZvcm1UYWcpKSB7CisgICAgICAg
IGNvbnN0IFZlY3RvcjxIVE1MSW1hZ2VFbGVtZW50Kj4mIGltYWdlRWxlbWVudHNBcnJheSA9IGZv
cm1JbWFnZUVsZW1lbnRzKCk7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBpbWFn
ZUVsZW1lbnRzQXJyYXkuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgICAgIEhUTUxJbWFnZUVsZW1l
bnQqIGVsZW1lbnQgPSBpbWFnZUVsZW1lbnRzQXJyYXlbaV07CisgICAgICAgICAgICBjb25zdCBB
dG9taWNTdHJpbmcmIGlkQXR0clZhbCA9IGVsZW1lbnQtPmdldElkQXR0cmlidXRlKCk7CisgICAg
ICAgICAgICBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWVBdHRyVmFsID0gZWxlbWVudC0+Z2V0TmFt
ZUF0dHJpYnV0ZSgpOworICAgICAgICAgICAgaWYgKCFpZEF0dHJWYWwuaXNFbXB0eSgpICYmICFm
b3VuZElucHV0RWxlbWVudHMuY29udGFpbnMoaWRBdHRyVmFsLmltcGwoKSkpCisgICAgICAgICAg
ICAgICAgYXBwZW5kSWRDYWNoZShpZEF0dHJWYWwsIGVsZW1lbnQpOworICAgICAgICAgICAgaWYg
KCFuYW1lQXR0clZhbC5pc0VtcHR5KCkgJiYgaWRBdHRyVmFsICE9IG5hbWVBdHRyVmFsICYmICFm
b3VuZElucHV0RWxlbWVudHMuY29udGFpbnMobmFtZUF0dHJWYWwuaW1wbCgpKSkKKyAgICAgICAg
ICAgICAgICBhcHBlbmROYW1lQ2FjaGUobmFtZUF0dHJWYWwsIGVsZW1lbnQpOworICAgICAgICB9
CisgICAgfQorCisgICAgc2V0SGFzTmFtZUNhY2hlKCk7Cit9CisKK30KSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uY3BwCShyZXZp
c2lvbiAxMzM1NTEpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbHNDb2xs
ZWN0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjEsNyArMjEsNyBAQAogICovCiAKICNpbmNs
dWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJIVE1MRm9ybUNvbGxlY3Rpb24uaCIKKyNpbmNsdWRl
ICJIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5oIgogCiAjaW5jbHVkZSAiSFRNTEZpZWxkU2V0
RWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxGb3JtQ29udHJvbEVsZW1lbnQuaCIKQEAgLTM2LDIy
ICszNiwyMiBAQCB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogLy8gU2luY2UgdGhlIGNvbGxl
Y3Rpb25zIGFyZSB0byBiZSAibGl2ZSIsIHdlIGhhdmUgdG8gZG8gdGhlCiAvLyBjYWxjdWxhdGlv
biBldmVyeSB0aW1lIGlmIGFueXRoaW5nIGhhcyBjaGFuZ2VkLgogCi1IVE1MRm9ybUNvbGxlY3Rp
b246OkhUTUxGb3JtQ29sbGVjdGlvbihFbGVtZW50KiBiYXNlKQorSFRNTEZvcm1Db250cm9sc0Nv
bGxlY3Rpb246OkhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uKEVsZW1lbnQqIGJhc2UpCiAgICAg
OiBIVE1MQ29sbGVjdGlvbihiYXNlLCBGb3JtQ29udHJvbHMsIE92ZXJyaWRlc0l0ZW1BZnRlcikK
IHsKICAgICBBU1NFUlQoYmFzZS0+aGFzVGFnTmFtZShmb3JtVGFnKSB8fCBiYXNlLT5oYXNUYWdO
YW1lKGZpZWxkc2V0VGFnKSk7CiB9CiAKLVBhc3NSZWZQdHI8SFRNTEZvcm1Db2xsZWN0aW9uPiBI
VE1MRm9ybUNvbGxlY3Rpb246OmNyZWF0ZShFbGVtZW50KiBiYXNlKQorUGFzc1JlZlB0cjxIVE1M
Rm9ybUNvbnRyb2xzQ29sbGVjdGlvbj4gSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb246OmNyZWF0
ZShFbGVtZW50KiBiYXNlKQogewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgSFRNTEZvcm1Db2xs
ZWN0aW9uKGJhc2UpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IEhUTUxGb3JtQ29udHJvbHND
b2xsZWN0aW9uKGJhc2UpKTsKIH0KIAotSFRNTEZvcm1Db2xsZWN0aW9uOjp+SFRNTEZvcm1Db2xs
ZWN0aW9uKCkKK0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uOjp+SFRNTEZvcm1Db250cm9sc0Nv
bGxlY3Rpb24oKQogewogfQogCi1jb25zdCBWZWN0b3I8Rm9ybUFzc29jaWF0ZWRFbGVtZW50Kj4m
IEhUTUxGb3JtQ29sbGVjdGlvbjo6Zm9ybUNvbnRyb2xFbGVtZW50cygpIGNvbnN0Citjb25zdCBW
ZWN0b3I8Rm9ybUFzc29jaWF0ZWRFbGVtZW50Kj4mIEhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9u
Ojpmb3JtQ29udHJvbEVsZW1lbnRzKCkgY29uc3QKIHsKICAgICBBU1NFUlQoYmFzZSgpKTsKICAg
ICBBU1NFUlQoYmFzZSgpLT5oYXNUYWdOYW1lKGZvcm1UYWcpIHx8IGJhc2UoKS0+aGFzVGFnTmFt
ZShmaWVsZHNldFRhZykpOwpAQCAtNjAsMTQgKzYwLDE0IEBAIGNvbnN0IFZlY3RvcjxGb3JtQXNz
b2NpYXRlZEVsZW1lbnQqPiYgSFQKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SFRNTEZpZWxkU2V0
RWxlbWVudCo+KGJhc2UoKSktPmFzc29jaWF0ZWRFbGVtZW50cygpOwogfQogCi1jb25zdCBWZWN0
b3I8SFRNTEltYWdlRWxlbWVudCo+JiBIVE1MRm9ybUNvbGxlY3Rpb246OmZvcm1JbWFnZUVsZW1l
bnRzKCkgY29uc3QKK2NvbnN0IFZlY3RvcjxIVE1MSW1hZ2VFbGVtZW50Kj4mIEhUTUxGb3JtQ29u
dHJvbHNDb2xsZWN0aW9uOjpmb3JtSW1hZ2VFbGVtZW50cygpIGNvbnN0CiB7CiAgICAgQVNTRVJU
KGJhc2UoKSk7CiAgICAgQVNTRVJUKGJhc2UoKS0+aGFzVGFnTmFtZShmb3JtVGFnKSk7CiAgICAg
cmV0dXJuIHN0YXRpY19jYXN0PEhUTUxGb3JtRWxlbWVudCo+KGJhc2UoKSktPmltYWdlRWxlbWVu
dHMoKTsKIH0KIAotRWxlbWVudCogSFRNTEZvcm1Db2xsZWN0aW9uOjp2aXJ0dWFsSXRlbUFmdGVy
KHVuc2lnbmVkJiBvZmZzZXQsIEVsZW1lbnQqIHByZXZpb3VzSXRlbSkgY29uc3QKK0VsZW1lbnQq
IEhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uOjp2aXJ0dWFsSXRlbUFmdGVyKHVuc2lnbmVkJiBv
ZmZzZXQsIEVsZW1lbnQqIHByZXZpb3VzSXRlbSkgY29uc3QKIHsKICAgICBjb25zdCBWZWN0b3I8
Rm9ybUFzc29jaWF0ZWRFbGVtZW50Kj4mIGVsZW1lbnRzQXJyYXkgPSBmb3JtQ29udHJvbEVsZW1l
bnRzKCk7CiAgICAgaWYgKHByZXZpb3VzSXRlbSkKQEAgLTEwNCw3ICsxMDQsNyBAQCBzdGF0aWMg
SFRNTEVsZW1lbnQqIGZpcnN0TmFtZWRJdGVtKGNvbnN0CiAgICAgcmV0dXJuIDA7CiB9CiAKLU5v
ZGUqIEhUTUxGb3JtQ29sbGVjdGlvbjo6bmFtZWRJdGVtKGNvbnN0IEF0b21pY1N0cmluZyYgbmFt
ZSkgY29uc3QKK05vZGUqIEhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uOjpuYW1lZEl0ZW0oY29u
c3QgQXRvbWljU3RyaW5nJiBuYW1lKSBjb25zdAogewogICAgIC8vIGh0dHA6Ly9tc2RuLm1pY3Jv
c29mdC5jb20vd29ya3Nob3AvYXV0aG9yL2RodG1sL3JlZmVyZW5jZS9tZXRob2RzL25hbWVkaXRl
bS5hc3AKICAgICAvLyBUaGlzIG1ldGhvZCBmaXJzdCBzZWFyY2hlcyBmb3IgYW4gb2JqZWN0IHdp
dGggYSBtYXRjaGluZyBpZApAQCAtMTE4LDcgKzExOCw3IEBAIE5vZGUqIEhUTUxGb3JtQ29sbGVj
dGlvbjo6bmFtZWRJdGVtKGNvbnMKICAgICByZXR1cm4gZmlyc3ROYW1lZEl0ZW0oZm9ybUNvbnRy
b2xFbGVtZW50cygpLCBpbWFnZXNFbGVtZW50cywgbmFtZUF0dHIsIG5hbWUpOwogfQogCi12b2lk
IEhUTUxGb3JtQ29sbGVjdGlvbjo6dXBkYXRlTmFtZUNhY2hlKCkgY29uc3QKK3ZvaWQgSFRNTEZv
cm1Db250cm9sc0NvbGxlY3Rpb246OnVwZGF0ZU5hbWVDYWNoZSgpIGNvbnN0CiB7CiAgICAgaWYg
KGhhc05hbWVDYWNoZSgpKQogICAgICAgICByZXR1cm47CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5oCShyZXZpc2lvbiAxMzM1NTEp
CShmcm9tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db2xsZWN0aW9uLmg6MTMzNTUxKQor
KysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsNTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDE5OTkgTGFy
cyBLbm9sbCAoa25vbGxAa2RlLm9yZykKKyAqICAgICAgICAgICAoQykgMTk5OSBBbnR0aSBLb2l2
aXN0byAoa29pdmlzdG9Aa2RlLm9yZykKKyAqIENvcHlyaWdodCAoQykgMjAwMywgMjAwNCwgMjAw
NSwgMjAwNiwgMjAwNywgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0
IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAo
YXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBp
cyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0
IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkg
b2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1v
cmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMg
bGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICog
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBG
aWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICoKKyAqLworCisj
aWZuZGVmIEhUTUxGb3JtQ29sbGVjdGlvbl9oCisjZGVmaW5lIEhUTUxGb3JtQ29sbGVjdGlvbl9o
CisKKyNpbmNsdWRlICJIVE1MQ29sbGVjdGlvbi5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K2NsYXNzIEZvcm1Bc3NvY2lhdGVkRWxlbWVudDsKK2NsYXNzIEhUTUxFbGVtZW50OworY2xhc3Mg
SFRNTEltYWdlRWxlbWVudDsKK2NsYXNzIFF1YWxpZmllZE5hbWU7CisvLyBUaGlzIGNsYXNzIGlz
IGp1c3QgYSBiaWcgaGFjayB0byBmaW5kIGZvcm0gZWxlbWVudHMgZXZlbiBpbiBtYWxmb3JtZWQg
SFRNTCBlbGVtZW50cy4KKy8vIFRoZSBmYW1vdXMgPHRhYmxlPjx0cj48Zm9ybT48dGQ+IHByb2Js
ZW0uCisKK2NsYXNzIEhUTUxGb3JtQ29sbGVjdGlvbiA6IHB1YmxpYyBIVE1MQ29sbGVjdGlvbiB7
CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8SFRNTEZvcm1Db2xsZWN0aW9uPiBjcmVh
dGUoRWxlbWVudCopOworCisgICAgdmlydHVhbCB+SFRNTEZvcm1Db2xsZWN0aW9uKCk7CisKKyAg
ICB2aXJ0dWFsIE5vZGUqIG5hbWVkSXRlbShjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpIGNvbnN0
OworCitwcml2YXRlOgorICAgIEhUTUxGb3JtQ29sbGVjdGlvbihFbGVtZW50Kik7CisKKyAgICB2
aXJ0dWFsIHZvaWQgdXBkYXRlTmFtZUNhY2hlKCkgY29uc3Q7CisKKyAgICBjb25zdCBWZWN0b3I8
Rm9ybUFzc29jaWF0ZWRFbGVtZW50Kj4mIGZvcm1Db250cm9sRWxlbWVudHMoKSBjb25zdDsKKyAg
ICBjb25zdCBWZWN0b3I8SFRNTEltYWdlRWxlbWVudCo+JiBmb3JtSW1hZ2VFbGVtZW50cygpIGNv
bnN0OworICAgIHZpcnR1YWwgRWxlbWVudCogdmlydHVhbEl0ZW1BZnRlcih1bnNpZ25lZCYgb2Zm
c2V0SW5BcnJheSwgRWxlbWVudCopIGNvbnN0IE9WRVJSSURFOworfTsKKworfSAvL25hbWVzcGFj
ZQorCisjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sc0Nv
bGxlY3Rpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29u
dHJvbHNDb2xsZWN0aW9uLmgJKHJldmlzaW9uIDEzMzU1MSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMjAsOCAr
MjAsOCBAQAogICoKICAqLwogCi0jaWZuZGVmIEhUTUxGb3JtQ29sbGVjdGlvbl9oCi0jZGVmaW5l
IEhUTUxGb3JtQ29sbGVjdGlvbl9oCisjaWZuZGVmIEhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9u
X2gKKyNkZWZpbmUgSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb25faAogCiAjaW5jbHVkZSAiSFRN
TENvbGxlY3Rpb24uaCIKIApAQCAtMzQsMTYgKzM0LDE2IEBAIGNsYXNzIFF1YWxpZmllZE5hbWU7
CiAvLyBUaGlzIGNsYXNzIGlzIGp1c3QgYSBiaWcgaGFjayB0byBmaW5kIGZvcm0gZWxlbWVudHMg
ZXZlbiBpbiBtYWxmb3JtZWQgSFRNTCBlbGVtZW50cy4KIC8vIFRoZSBmYW1vdXMgPHRhYmxlPjx0
cj48Zm9ybT48dGQ+IHByb2JsZW0uCiAKLWNsYXNzIEhUTUxGb3JtQ29sbGVjdGlvbiA6IHB1Ymxp
YyBIVE1MQ29sbGVjdGlvbiB7CitjbGFzcyBIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbiA6IHB1
YmxpYyBIVE1MQ29sbGVjdGlvbiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SFRN
TEZvcm1Db2xsZWN0aW9uPiBjcmVhdGUoRWxlbWVudCopOworICAgIHN0YXRpYyBQYXNzUmVmUHRy
PEhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uPiBjcmVhdGUoRWxlbWVudCopOwogCi0gICAgdmly
dHVhbCB+SFRNTEZvcm1Db2xsZWN0aW9uKCk7CisgICAgdmlydHVhbCB+SFRNTEZvcm1Db250cm9s
c0NvbGxlY3Rpb24oKTsKIAogICAgIHZpcnR1YWwgTm9kZSogbmFtZWRJdGVtKGNvbnN0IEF0b21p
Y1N0cmluZyYgbmFtZSkgY29uc3Q7CiAKIHByaXZhdGU6Ci0gICAgSFRNTEZvcm1Db2xsZWN0aW9u
KEVsZW1lbnQqKTsKKyAgICBIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbihFbGVtZW50Kik7CiAK
ICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlTmFtZUNhY2hlKCkgY29uc3Q7CiAKQEAgLTUyLDYgKzUy
LDYgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIEVsZW1lbnQqIHZpcnR1YWxJdGVtQWZ0ZXIodW5z
aWduZWQmIG9mZnNldEluQXJyYXksIEVsZW1lbnQqKSBjb25zdCBPVkVSUklERTsKIH07CiAKLX0g
Ly9uYW1lc3BhY2UKK30gLy8gbmFtZXNwYWNlCiAKICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5pZGwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5pZGwJKHJldmlzaW9u
IDApCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmlk
bAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyOCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAw
NiwgMjAwNywgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMDYgU2FtdWVsIFdlaW5pZyA8c2FtLndlaW5pZ0BnbWFpbC5jb20+CisgKgorICog
VGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu
ZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQg
eW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBk
aXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJ
VEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YK
KyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4g
IFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUg
ZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBH
TlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGli
cmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhl
IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0
aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKK1sKKyAgICBJ
bmRleGVkR2V0dGVyLAorICAgIE5hbWVkR2V0dGVyLAorICAgIEdlbmVyYXRlSXNSZWFjaGFibGU9
SW1wbEJhc2VSb290LAorICAgIFY4RGVwZW5kZW50TGlmZXRpbWUsCitdIGludGVyZmFjZSBIVE1M
Rm9ybUNvbnRyb2xzQ29sbGVjdGlvbiA6IEhUTUxDb2xsZWN0aW9uIHsKKyAgICBbQ3VzdG9tXSBO
b2RlIG5hbWVkSXRlbShpbiBbT3B0aW9uYWw9RGVmYXVsdElzVW5kZWZpbmVkXSBET01TdHJpbmcg
bmFtZSk7Cit9OwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmNwcAko
cmV2aXNpb24gMTMzNjkzKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MCw4ICs0MCw4IEBACiAjaW5jbHVkZSAiRnJhbWUuaCIK
ICNpbmNsdWRlICJGcmFtZUxvYWRlci5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyQ2xpZW50Lmgi
CisjaW5jbHVkZSAiSFRNTENvbGxlY3Rpb24uaCIKICNpbmNsdWRlICJIVE1MRG9jdW1lbnQuaCIK
LSNpbmNsdWRlICJIVE1MRm9ybUNvbGxlY3Rpb24uaCIKICNpbmNsdWRlICJIVE1MSW1hZ2VFbGVt
ZW50LmgiCiAjaW5jbHVkZSAiSFRNTElucHV0RWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxOYW1l
cy5oIgpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5oCShyZXZpc2lvbiAx
MzM2OTMpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zOCw3ICszOCw2IEBAIGNsYXNzIEZvcm1EYXRhOwogY2xhc3MgSFRNTEZvcm1D
b250cm9sRWxlbWVudDsKIGNsYXNzIEhUTUxJbWFnZUVsZW1lbnQ7CiBjbGFzcyBIVE1MSW5wdXRF
bGVtZW50OwotY2xhc3MgSFRNTEZvcm1Db2xsZWN0aW9uOwogY2xhc3MgVGV4dEVuY29kaW5nOwog
CiBjbGFzcyBIVE1MRm9ybUVsZW1lbnQgOiBwdWJsaWMgSFRNTEVsZW1lbnQgewpJbmRleDogU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0aW9uc0NvbGxlY3Rpb24uaWRsCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlvbnNDb2xsZWN0aW9uLmlkbAkocmV2aXNpb24g
MTMzNjkzKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0aW9uc0NvbGxlY3Rpb24uaWRs
CSh3b3JraW5nIGNvcHkpCkBAIC0yMCwxMSArMjAsMTYgQEAKIAogWwogICAgIEpTR2VuZXJhdGVU
b05hdGl2ZU9iamVjdCwKLSAgICBDdXN0b21JbmRleGVkU2V0dGVyCisgICAgQ3VzdG9tSW5kZXhl
ZFNldHRlciwKKyAgICBOYW1lZEdldHRlciwKKyAgICBHZW5lcmF0ZUlzUmVhY2hhYmxlPUltcGxC
YXNlUm9vdCwKKyAgICBWOERlcGVuZGVudExpZmV0aW1lLAogXSBpbnRlcmZhY2UgSFRNTE9wdGlv
bnNDb2xsZWN0aW9uIDogSFRNTENvbGxlY3Rpb24gewotICAgICAgICAgICAgIGF0dHJpYnV0ZSBs
b25nIHNlbGVjdGVkSW5kZXg7Ci0gICAgICAgICAgICAgW0N1c3RvbV0gYXR0cmlidXRlIHVuc2ln
bmVkIGxvbmcgbGVuZ3RoCi0gICAgICAgICAgICAgICAgICAgIHNldHRlciByYWlzZXMgKERPTUV4
Y2VwdGlvbik7CisgICAgYXR0cmlidXRlIGxvbmcgc2VsZWN0ZWRJbmRleDsKKyAgICBbQ3VzdG9t
XSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBsZW5ndGgKKyAgICAgICAgc2V0dGVyIHJhaXNlcyAo
RE9NRXhjZXB0aW9uKTsKKworICAgIFtDdXN0b21dIE5vZGUgbmFtZWRJdGVtKGluIFtPcHRpb25h
bD1EZWZhdWx0SXNVbmRlZmluZWRdIERPTVN0cmluZyBuYW1lKTsKIAogICAgIFtDdXN0b21dIHZv
aWQgYWRkKGluIFtPcHRpb25hbD1EZWZhdWx0SXNVbmRlZmluZWRdIEhUTUxPcHRpb25FbGVtZW50
IG9wdGlvbiwgCiAgICAgICAgICAgICAgICAgICAgICAgaW4gW09wdGlvbmFsXSB1bnNpZ25lZCBs
b25nIGluZGV4KQpAQCAtMzIsOCArMzcsNyBAQAogICAgIFtDdXN0b21dIHZvaWQgcmVtb3ZlKGlu
IFtPcHRpb25hbD1EZWZhdWx0SXNVbmRlZmluZWRdIHVuc2lnbmVkIGxvbmcgaW5kZXgpOwogCiAj
aWYgZGVmaW5lZChMQU5HVUFHRV9PQkpFQ1RJVkVfQykgJiYgTEFOR1VBR0VfT0JKRUNUSVZFX0MK
LSAgICBOb2RlIGl0ZW0oaW4gdW5zaWduZWQgbG9uZyBpbmRleCk7IAotICAgIE5vZGUgbmFtZWRJ
dGVtKGluIERPTVN0cmluZyBuYW1lKTsgCisgICAgTm9kZSBpdGVtKGluIHVuc2lnbmVkIGxvbmcg
aW5kZXgpOwogI2VuZGlmCiB9OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRv
dy5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsCShy
ZXZpc2lvbiAxMzM2OTMpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5pZGwJKHdv
cmtpbmcgY29weSkKQEAgLTQ2OSw2ICs0NjksOCBAQAogCiAgICAgYXR0cmlidXRlIEhUTUxDb2xs
ZWN0aW9uQ29uc3RydWN0b3IgSFRNTENvbGxlY3Rpb247CiAgICAgYXR0cmlidXRlIEhUTUxBbGxD
b2xsZWN0aW9uQ29uc3RydWN0b3IgSFRNTEFsbENvbGxlY3Rpb247CisgICAgYXR0cmlidXRlIEhU
TUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uQ29uc3RydWN0b3IgSFRNTEZvcm1Db250cm9sc0NvbGxl
Y3Rpb247CisgICAgYXR0cmlidXRlIEhUTUxPcHRpb25zQ29sbGVjdGlvbkNvbnN0cnVjdG9yIEhU
TUxPcHRpb25zQ29sbGVjdGlvbjsKICAgICBbQ29uZGl0aW9uYWw9TUlDUk9EQVRBXSBhdHRyaWJ1
dGUgSFRNTFByb3BlcnRpZXNDb2xsZWN0aW9uQ29uc3RydWN0b3IgSFRNTFByb3BlcnRpZXNDb2xs
ZWN0aW9uOwogICAgIGF0dHJpYnV0ZSBIVE1MVW5rbm93bkVsZW1lbnRDb25zdHJ1Y3RvciBIVE1M
VW5rbm93bkVsZW1lbnQ7CiAKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDEzMzY5MykKKysrIExheW91dFRl
c3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI3IEBACisyMDEyLTExLTA2
ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIE1ha2UgbmFtZWRJ
dGVtIHJldHVybiBhIG5vZGUgbGlzdCBvbmx5IGluIEhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9u
IGFuZCBIVE1MT3B0aW9uc0NvbGxlY3Rpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEwMTMxMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEFkZGVkIGEgcmVncmVzc2lvbiB0ZXN0IHRvIGVuc3VyZSBmb3Jt
LmVsZW1lbnRzIGFuZCBzZWxlY3Qub3B0aW9ucyB1c2UgY29ycmVjdCBpbnRlcmZhY2VzLAorICAg
ICAgICBhbmQgbmFtZWQgZ2V0dGVyIGZvciB0aG9zZSB0d28gcHJvcGVydGllcyByZXR1cm4gYSBO
b2RlTGlzdCB3aGVuIHRoZXJlIGFyZSBtdWx0aXBsZSBtYXRjaGVzLgorCisgICAgICAgIEFsc28g
YWRkZWQgYXBwcm9wcmlhdGUgSURMIG9wdGlvbnMgdG8gSFRNTE9wdGlvbnNDb2xsZWN0aW9uLmlk
bC4KKworICAgICAgICAqIGZhc3QvZG9tL2NvbGxlY3Rpb24tbmFtZWRpdGVtLW1vdmUtYmV0d2Vl
bi1kb2N1bWVudHMtZXhwZWN0ZWQudHh0OiBSZWJhc2VsaW5lZCBzaW5jZSBuYW1lZEl0ZW0KKyAg
ICAgICAgbm93IGNvcnJlY3RseSByZXR1cm5zIG51bGwgd2hlbiB0aGVyZSBpcyBubyBtYXRjaC4g
VGhpcyB0ZXN0IHJlc3VsdCBkZW1vbnN0cmF0ZXMgYSBidWcgdGhhdAorICAgICAgICBIVE1MQWxs
Q29sbGVjdGlvbiBkb2Vzbid0IGluaGVyaXQgZnJvbSBIVE1MQ29sbGVjdGlvbi4KKyAgICAgICAg
KiBmYXN0L2RvbS9jb2xsZWN0aW9uLW5hbWVkaXRlbS1tb3ZlLWJldHdlZW4tZG9jdW1lbnRzLmh0
bWw6IERpdHRvLgorICAgICAgICAqIGZhc3QvZG9tL2RvbS1jb25zdHJ1Y3RvcnMtZXhwZWN0ZWQu
dHh0OiBSZWJhc2VsaW5lZC4KKyAgICAgICAgKiBmYXN0L2RvbS9odG1sLWNvbGxlY3Rpb25zLW5h
bWVkLWdldHRlci1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL2h0bWwt
Y29sbGVjdGlvbnMtbmFtZWQtZ2V0dGVyLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9t
L3dyYXBwZXItY2xhc3Nlcy1leHBlY3RlZC50eHQ6IFJlYmFzZWxpbmVkLgorICAgICAgICAqIGlu
c3BlY3Rvci9jb25zb2xlL2NvbnNvbGUtZm9ybWF0LWNvbGxlY3Rpb25zLWV4cGVjdGVkLnR4dDog
UmViYXNlbGluZWQuCisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vZmFzdC9kb20vZ2MtOS1l
eHBlY3RlZC50eHQ6IFJlYmFzZWxpbmVkIHNpbmNlIGEgdGVzdCBjYXNlIGZvcgorICAgICAgICBI
VE1MT3B0aW9uc0NvbGxlY3Rpb24gbm93IHBhc3Nlcy4KKwogMjAxMi0xMS0wNiAgSm9zaHVhIEJl
bGwgIDxqc2JlbGxAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtDaHJvbWl1bV0gVW5yZXZpZXdl
ZCBnYXJkZW5pbmcuIEEgY291cGxlIG9mIGV4cGVjdGF0aW9uIHVwZGF0ZXMgYy9vIGRiYXJ0b25A
bWF0aHNjcmliZS5jb20KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL2NvbGxlY3Rpb24tbmFt
ZWRpdGVtLW1vdmUtYmV0d2Vlbi1kb2N1bWVudHMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2Zhc3QvZG9tL2NvbGxlY3Rpb24tbmFtZWRpdGVtLW1vdmUtYmV0d2Vlbi1k
b2N1bWVudHMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAxMzM2OTMpCisrKyBMYXlvdXRUZXN0cy9m
YXN0L2RvbS9jb2xsZWN0aW9uLW5hbWVkaXRlbS1tb3ZlLWJldHdlZW4tZG9jdW1lbnRzLWV4cGVj
dGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSw0ICsxLDQgQEAKLVBBU1MgdHlwZW9mIGNoaWxk
cmVuLm5hbWVkSXRlbSgnY2hpbGQnKSBpcyAndW5kZWZpbmVkJworUEFTUyBjaGlsZHJlbi5uYW1l
ZEl0ZW0oJ2NoaWxkJykgaXMgbnVsbAogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQog
CiBURVNUIENPTVBMRVRFCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9jb2xsZWN0aW9uLW5h
bWVkaXRlbS1tb3ZlLWJldHdlZW4tZG9jdW1lbnRzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZmFzdC9kb20vY29sbGVjdGlvbi1uYW1lZGl0ZW0tbW92ZS1iZXR3ZWVuLWRvY3VtZW50
cy5odG1sCShyZXZpc2lvbiAxMzM2OTMpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9jb2xsZWN0
aW9uLW5hbWVkaXRlbS1tb3ZlLWJldHdlZW4tZG9jdW1lbnRzLmh0bWwJKHdvcmtpbmcgY29weSkK
QEAgLTMzLDcgKzMzLDcgQEAgd2luZG93Lm9ubG9hZCA9IGZ1bmN0aW9uKCkKIGZ1bmN0aW9uIHN0
ZXAyKCkKIHsKICAgICBkb2N1bWVudC5hZG9wdE5vZGUoZWxlbWVudCk7Ci0gICAgc2hvdWxkQmUo
InR5cGVvZiBjaGlsZHJlbi5uYW1lZEl0ZW0oJ2NoaWxkJykiLCAiJ3VuZGVmaW5lZCciKTsKKyAg
ICBzaG91bGRCZU51bGwoImNoaWxkcmVuLm5hbWVkSXRlbSgnY2hpbGQnKSIpOwogICAgIGZpbmlz
aEpTVGVzdCgpOwogfQogPC9zY3JpcHQ+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9kb20t
Y29uc3RydWN0b3JzLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0
L2RvbS9kb20tY29uc3RydWN0b3JzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTMzNjkzKQorKysg
TGF5b3V0VGVzdHMvZmFzdC9kb20vZG9tLWNvbnN0cnVjdG9ycy1leHBlY3RlZC50eHQJKHdvcmtp
bmcgY29weSkKQEAgLTExOCw3ICsxMTgsNyBAQCBGQUlMIFRyeUFsbG9jYXRlKCdDb25zb2xlJykg
c2hvdWxkIGJlIGV4CiBQQVNTIFRyeUFsbG9jYXRlKCdTZWxlY3Rpb24nKSBpcyAnZXhjZXB0aW9u
JwogUEFTUyBUcnlBbGxvY2F0ZSgnV2luZG93JykgaXMgJ2V4Y2VwdGlvbicKIEZBSUwgVHJ5QWxs
b2NhdGUoJ0hpc3RvcnknKSBzaG91bGQgYmUgZXhjZXB0aW9uLiBXYXMgbm8gY29uc3RydWN0b3Iu
Ci1GQUlMIFRyeUFsbG9jYXRlKCdIVE1MT3B0aW9uc0NvbGxlY3Rpb24nKSBzaG91bGQgYmUgZXhj
ZXB0aW9uLiBXYXMgbm8gY29uc3RydWN0b3IuCitQQVNTIFRyeUFsbG9jYXRlKCdIVE1MT3B0aW9u
c0NvbGxlY3Rpb24nKSBpcyAnZXhjZXB0aW9uJwogRkFJTCBUcnlBbGxvY2F0ZSgnTG9jYXRpb24n
KSBzaG91bGQgYmUgZXhjZXB0aW9uLiBXYXMgbm8gY29uc3RydWN0b3IuCiBGQUlMIFRyeUFsbG9j
YXRlKCdOYXZpZ2F0b3InKSBzaG91bGQgYmUgZXhjZXB0aW9uLiBXYXMgbm8gY29uc3RydWN0b3Iu
CiBGQUlMIFRyeUFsbG9jYXRlKCdOb2RlSXRlcmF0b3InKSBzaG91bGQgYmUgZXhjZXB0aW9uLiBX
YXMgbm8gY29uc3RydWN0b3IuCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9odG1sLWNvbGxl
Y3Rpb25zLW5hbWVkLWdldHRlci1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZmFzdC9kb20vaHRtbC1jb2xsZWN0aW9ucy1uYW1lZC1nZXR0ZXItZXhwZWN0ZWQudHh0CShy
ZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vaHRtbC1jb2xsZWN0aW9ucy1uYW1l
ZC1nZXR0ZXItZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEwMSBAQAorVGhp
cyB0ZXN0cyB2ZXJpZmllcyB0aGF0IG5hbWVkSXRlbSBhbmQgbmFtZWQgZ2V0dGVyIHJldHVybnMg
dGhlIGZpcnN0IG1hdGNoZWQgaXRlbSBmb3IgYWxsIGJ1dCBhbGwsIG9wdGlvbnMsIGFuZCBmb3Jt
IGNvbnRyb2xzIGNvbGxlY3Rpb25zLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJp
ZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKwor
ZG9jdW1lbnQuYWxsCitQQVNTIGRvY3VtZW50LmFsbCBpbnN0YW5jZW9mIEhUTUxBbGxDb2xsZWN0
aW9uIGlzIHRydWUKK0ZBSUwgZG9jdW1lbnQuYWxsIGluc3RhbmNlb2YgSFRNTENvbGxlY3Rpb24g
c2hvdWxkIGJlIHRydWUuIFdhcyBmYWxzZS4KK1BBU1MgaW5pdGlhbExlbmd0aCA9IGRvY3VtZW50
LmFsbC5sZW5ndGg7IGVsZW1lbnRzID0gW2luc2VydEVsZW1lbnRXaXRoSWQoJ2InLCAnZm9vJyks
IGluc2VydEVsZW1lbnRXaXRoSWQoJ3EnLCAnZm9vJyldOworICAgICBkb2N1bWVudC5hbGwubGVu
Z3RoIGlzIGluaXRpYWxMZW5ndGggKyAyOworUEFTUyBkb2N1bWVudC5hbGxbJ2ZvbyddLmxlbmd0
aCBpcyAyCitQQVNTIGRvY3VtZW50LmFsbFsnZm9vJ11bMF0gaXMgZWxlbWVudHNbMF0KK1BBU1Mg
ZG9jdW1lbnQuYWxsWydmb28nXVsxXSBpcyBlbGVtZW50c1sxXQorUEFTUyBlbGVtZW50c1swXS5w
YXJlbnROb2RlLnJlbW92ZUNoaWxkKGVsZW1lbnRzWzBdKTsgZG9jdW1lbnQuYWxsWydmb28nXSBp
cyBlbGVtZW50c1sxXQorCitmb3JtLmVsZW1lbnRzCitQQVNTIGZvcm0uZWxlbWVudHMgaW5zdGFu
Y2VvZiBIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbiBpcyB0cnVlCitQQVNTIGZvcm0uZWxlbWVu
dHMgaW5zdGFuY2VvZiBIVE1MQ29sbGVjdGlvbiBpcyB0cnVlCitQQVNTIGZvcm0uZWxlbWVudHMu
bGVuZ3RoIGlzIDAKK1BBU1MgZWxlbWVudHMgPSBbY3JlYXRlRWxlbWVudFdpdGhJZCgnaW5wdXQn
LCAnZm9vJyksIGNyZWF0ZUVsZW1lbnRXaXRoSWQoJ2lucHV0JywgJ2ZvbycpXTsKKyAgICAgZm9y
bS5hcHBlbmRDaGlsZChlbGVtZW50c1swXSk7IGZvcm0uZWxlbWVudHMubGVuZ3RoIGlzIDEKK1BB
U1MgZm9ybS5lbGVtZW50c1snZm9vJ10gaXMgZWxlbWVudHNbMF0KK1BBU1MgZm9ybS5hcHBlbmRD
aGlsZChlbGVtZW50c1sxXSk7IGZvcm0uZWxlbWVudHMubGVuZ3RoIGlzIDIKK1BBU1MgZm9ybS5l
bGVtZW50c1snZm9vJ10udG9TdHJpbmcoKSBpcyAnW29iamVjdCBSYWRpb05vZGVMaXN0XScKK1BB
U1MgZm9ybS5lbGVtZW50c1snZm9vJ10ubGVuZ3RoIGlzIDIKK1BBU1MgZm9ybS5lbGVtZW50c1sn
Zm9vJ11bMF0gaXMgZWxlbWVudHNbMF0KK1BBU1MgZm9ybS5lbGVtZW50c1snZm9vJ11bMV0gaXMg
ZWxlbWVudHNbMV0KK1BBU1MgZm9ybS5yZW1vdmVDaGlsZChlbGVtZW50c1swXSk7IGZvcm0uZWxl
bWVudHNbJ2ZvbyddIGlzIGVsZW1lbnRzWzFdCitQQVNTIHJlbW92ZVRlc3RFbGVtZW50cygpOyBm
b3JtLmVsZW1lbnRzLmxlbmd0aCBpcyAwCisKK3NlbGVjdC5vcHRpb25zCitQQVNTIGZvcm0uYXBw
ZW5kQ2hpbGQoY3JlYXRlRWxlbWVudFdpdGhJZCgnc2VsZWN0JywgJ2JhcicpKTsgZm9ybS5lbGVt
ZW50cy5sZW5ndGggaXMgMQorUEFTUyBzZWxlY3QgPSBmb3JtLmVsZW1lbnRzWzBdOyBzZWxlY3Qu
b3B0aW9ucyBpbnN0YW5jZW9mIEhUTUxPcHRpb25zQ29sbGVjdGlvbiBpcyB0cnVlCitQQVNTIHNl
bGVjdC5vcHRpb25zIGluc3RhbmNlb2YgSFRNTENvbGxlY3Rpb24gaXMgdHJ1ZQorUEFTUyBzZWxl
Y3Qub3B0aW9ucy5sZW5ndGggaXMgMAorUEFTUyBlbGVtZW50cyA9IFtjcmVhdGVFbGVtZW50V2l0
aElkKCdvcHRpb24nLCAnZm9vJyksIGNyZWF0ZUVsZW1lbnRXaXRoSWQoJ29wdGlvbicsICdmb28n
KV07CisgICAgIHNlbGVjdC5hcHBlbmRDaGlsZChlbGVtZW50c1swXSk7IHNlbGVjdC5vcHRpb25z
Lmxlbmd0aCBpcyAxCitQQVNTIHNlbGVjdC5vcHRpb25zWydmb28nXSBpcyBlbGVtZW50c1swXQor
UEFTUyBzZWxlY3QuYXBwZW5kQ2hpbGQoZWxlbWVudHNbMV0pOyBzZWxlY3Qub3B0aW9ucy5sZW5n
dGggaXMgMgorUEFTUyBzZWxlY3Qub3B0aW9uc1snZm9vJ10udG9TdHJpbmcoKSBpcyAnW29iamVj
dCBOb2RlTGlzdF0nCitQQVNTIHNlbGVjdC5vcHRpb25zWydmb28nXS5sZW5ndGggaXMgMgorUEFT
UyBzZWxlY3Qub3B0aW9uc1snZm9vJ11bMF0gaXMgZWxlbWVudHNbMF0KK1BBU1Mgc2VsZWN0Lm9w
dGlvbnNbJ2ZvbyddWzFdIGlzIGVsZW1lbnRzWzFdCitQQVNTIHNlbGVjdC5yZW1vdmVDaGlsZChl
bGVtZW50c1swXSk7IHNlbGVjdC5vcHRpb25zWydmb28nXSBpcyBlbGVtZW50c1sxXQorUEFTUyBz
ZWxlY3QuaW5uZXJIVE1MID0gJyc7IHNlbGVjdC5vcHRpb25zLmxlbmd0aCBpcyAwCitQQVNTIHJl
bW92ZVRlc3RFbGVtZW50cygpOyBmb3JtLmVsZW1lbnRzLmxlbmd0aCBpcyAwCisKK2RvY3VtZW50
LmltYWdlcworUEFTUyBkb2N1bWVudC5pbWFnZXMubGVuZ3RoIGlzIDAKK1BBU1MgZWxlbWVudHNb
MF0gPSBpbnNlcnRFbGVtZW50V2l0aElkKCdpbWcnLCAnZm9vJyk7IGRvY3VtZW50LmltYWdlcy5s
ZW5ndGggaXMgMQorUEFTUyBlbGVtZW50c1sxXSA9IGluc2VydEVsZW1lbnRXaXRoSWQoJ2ltZycs
ICdmb28nKTsgZG9jdW1lbnQuaW1hZ2VzLmxlbmd0aCBpcyAyCitQQVNTIGRvY3VtZW50LmltYWdl
c1snZm9vJ10gaXMgZWxlbWVudHNbMF0KK1BBU1MgcmVtb3ZlVGVzdEVsZW1lbnRzKCk7IGRvY3Vt
ZW50LmltYWdlcy5sZW5ndGggaXMgMAorCitkb2N1bWVudC5hcHBsZXRzCitQQVNTIGRvY3VtZW50
LmFwcGxldHMubGVuZ3RoIGlzIDAKK1BBU1MgZWxlbWVudHNbMF0gPSBpbnNlcnRFbGVtZW50V2l0
aElkKCdhcHBsZXQnLCAnZm9vJyk7IGRvY3VtZW50LmFwcGxldHMubGVuZ3RoIGlzIDEKK1BBU1Mg
ZWxlbWVudHNbMV0gPSBpbnNlcnRFbGVtZW50V2l0aElkKCdhcHBsZXQnLCAnZm9vJyk7IGRvY3Vt
ZW50LmFwcGxldHMubGVuZ3RoIGlzIDIKK1BBU1MgZG9jdW1lbnQuYXBwbGV0c1snZm9vJ10gaXMg
ZWxlbWVudHNbMF0KK1BBU1MgcmVtb3ZlVGVzdEVsZW1lbnRzKCk7IGRvY3VtZW50LmFwcGxldHMu
bGVuZ3RoIGlzIDAKKworZG9jdW1lbnQuZW1iZWRzCitQQVNTIGRvY3VtZW50LmVtYmVkcy5sZW5n
dGggaXMgMAorUEFTUyBlbGVtZW50c1swXSA9IGluc2VydEVsZW1lbnRXaXRoSWQoJ2VtYmVkJywg
J2ZvbycpOyBkb2N1bWVudC5lbWJlZHMubGVuZ3RoIGlzIDEKK1BBU1MgZWxlbWVudHNbMV0gPSBp
bnNlcnRFbGVtZW50V2l0aElkKCdlbWJlZCcsICdmb28nKTsgZG9jdW1lbnQuZW1iZWRzLmxlbmd0
aCBpcyAyCitQQVNTIGRvY3VtZW50LmVtYmVkc1snZm9vJ10gaXMgZWxlbWVudHNbMF0KK1BBU1Mg
cmVtb3ZlVGVzdEVsZW1lbnRzKCk7IGRvY3VtZW50LmVtYmVkcy5sZW5ndGggaXMgMAorCitkb2N1
bWVudC5mb3JtcworUEFTUyBkb2N1bWVudC5mb3Jtcy5sZW5ndGggaXMgMQorUEFTUyBlbGVtZW50
c1swXSA9IGluc2VydEVsZW1lbnRXaXRoSWQoJ2Zvcm0nLCAnZm9vJyk7IGRvY3VtZW50LmZvcm1z
Lmxlbmd0aCBpcyAyCitQQVNTIGVsZW1lbnRzWzFdID0gaW5zZXJ0RWxlbWVudFdpdGhJZCgnZm9y
bScsICdmb28nKTsgZG9jdW1lbnQuZm9ybXMubGVuZ3RoIGlzIDMKK1BBU1MgZG9jdW1lbnQuZm9y
bXNbJ2ZvbyddIGlzIGVsZW1lbnRzWzBdCitQQVNTIHJlbW92ZVRlc3RFbGVtZW50cygpOyBkb2N1
bWVudC5mb3Jtcy5sZW5ndGggaXMgMQorCitkb2N1bWVudC5saW5rcworUEFTUyBkb2N1bWVudC5s
aW5rcy5sZW5ndGggaXMgMAorUEFTUyBlbGVtZW50c1swXSA9IGluc2VydEVsZW1lbnRXaXRoSWQo
J2EnLCAnZm9vJywgeyJocmVmIjoic29tZSB1cmwifSk7IGRvY3VtZW50LmxpbmtzLmxlbmd0aCBp
cyAxCitQQVNTIGVsZW1lbnRzWzFdID0gaW5zZXJ0RWxlbWVudFdpdGhJZCgnYScsICdmb28nLCB7
ImhyZWYiOiJzb21lIHVybCJ9KTsgZG9jdW1lbnQubGlua3MubGVuZ3RoIGlzIDIKK1BBU1MgZWxl
bWVudHNbMl0gPSBpbnNlcnRFbGVtZW50V2l0aElkKCdhcmVhJywgJ2ZvbycsIHsiaHJlZiI6InNv
bWUgdXJsIn0pOyBkb2N1bWVudC5saW5rcy5sZW5ndGggaXMgMworUEFTUyBkb2N1bWVudC5saW5r
c1snZm9vJ10gaXMgZWxlbWVudHNbMF0KK1BBU1MgcmVtb3ZlVGVzdEVsZW1lbnRzKCk7IGRvY3Vt
ZW50LmxpbmtzLmxlbmd0aCBpcyAwCisKK2RvY3VtZW50LmFuY2hvcnMKK1BBU1MgZG9jdW1lbnQu
YW5jaG9ycy5sZW5ndGggaXMgMAorUEFTUyBlbGVtZW50c1swXSA9IGluc2VydEVsZW1lbnRXaXRo
SWQoJ2EnLCAnZm9vJywgeyJuYW1lIjoic29tZSBuYW1lIn0pOyBkb2N1bWVudC5hbmNob3JzLmxl
bmd0aCBpcyAxCitQQVNTIGVsZW1lbnRzWzFdID0gaW5zZXJ0RWxlbWVudFdpdGhJZCgnYScsICdm
b28nLCB7Im5hbWUiOiJzb21lIG5hbWUifSk7IGRvY3VtZW50LmFuY2hvcnMubGVuZ3RoIGlzIDIK
K1BBU1MgZG9jdW1lbnQuYW5jaG9yc1snZm9vJ10gaXMgZWxlbWVudHNbMF0KK1BBU1MgcmVtb3Zl
VGVzdEVsZW1lbnRzKCk7IGRvY3VtZW50LmFuY2hvcnMubGVuZ3RoIGlzIDAKKworZG9jdW1lbnQu
c2NyaXB0cworUEFTUyBkb2N1bWVudC5zY3JpcHRzLmxlbmd0aCBpcyAyCitQQVNTIGVsZW1lbnRz
WzBdID0gaW5zZXJ0RWxlbWVudFdpdGhJZCgnc2NyaXB0JywgJ2ZvbycpOyBkb2N1bWVudC5zY3Jp
cHRzLmxlbmd0aCBpcyAzCitQQVNTIGVsZW1lbnRzWzFdID0gaW5zZXJ0RWxlbWVudFdpdGhJZCgn
c2NyaXB0JywgJ2ZvbycpOyBkb2N1bWVudC5zY3JpcHRzLmxlbmd0aCBpcyA0CitQQVNTIGRvY3Vt
ZW50LnNjcmlwdHNbJ2ZvbyddIGlzIGVsZW1lbnRzWzBdCitQQVNTIHJlbW92ZVRlc3RFbGVtZW50
cygpOyBkb2N1bWVudC5zY3JpcHRzLmxlbmd0aCBpcyAyCisKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFy
c2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Rv
bS9odG1sLWNvbGxlY3Rpb25zLW5hbWVkLWdldHRlci5odG1sCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2Zhc3QvZG9tL2h0bWwtY29sbGVjdGlvbnMtbmFtZWQtZ2V0dGVyLmh0bWwJKHJldmlz
aW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9odG1sLWNvbGxlY3Rpb25zLW5hbWVkLWdl
dHRlci5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEwNiBAQAorPCFET0NUWVBFIGh0bWw+
Cis8aHRtbD4KKzxib2R5PgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBy
ZS5qcyI+PC9zY3JpcHQ+Cis8ZGl2IGlkPSJjb250YWluZXIiPjwvZGl2PgorPGZvcm0+PC9mb3Jt
PgorPHNjcmlwdD4KKworZGVzY3JpcHRpb24oIlRoaXMgdGVzdHMgdmVyaWZpZXMgdGhhdCBuYW1l
ZEl0ZW0gYW5kIG5hbWVkIGdldHRlciByZXR1cm5zIHRoZSBmaXJzdCBtYXRjaGVkIGl0ZW0gZm9y
IGFsbCBidXQgYWxsLCBvcHRpb25zLCBhbmQgZm9ybSBjb250cm9scyBjb2xsZWN0aW9ucy4iKTsK
KworZnVuY3Rpb24gY3JlYXRlRWxlbWVudFdpdGhJZChuYW1lLCBpZCwgYXR0cmlidXRlcykgewor
ICAgIHZhciBlbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChuYW1lKTsKKyAgICBlbGVt
ZW50LmlkID0gaWQ7CisgICAgZm9yICh2YXIgYXR0ciBpbiBhdHRyaWJ1dGVzKQorICAgICAgICBl
bGVtZW50LnNldEF0dHJpYnV0ZShhdHRyLCBhdHRyaWJ1dGVzW2F0dHJdKTsKKyAgICByZXR1cm4g
ZWxlbWVudDsKK30KKworZnVuY3Rpb24gaW5zZXJ0RWxlbWVudFdpdGhJZChuYW1lLCBpZCwgYXR0
cmlidXRlcykgeworICAgIHZhciBlbGVtZW50ID0gY3JlYXRlRWxlbWVudFdpdGhJZChuYW1lLCBp
ZCwgYXR0cmlidXRlcyk7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnRhaW5lcicp
LmFwcGVuZENoaWxkKGVsZW1lbnQpOworICAgIHJldHVybiBlbGVtZW50OworfQorCitmdW5jdGlv
biByZW1vdmVUZXN0RWxlbWVudHMoKSB7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Nv
bnRhaW5lcicpLmlubmVySFRNTCA9ICcnOworICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2Zv
cm0nKS5pbm5lckhUTUwgPSAnJzsKK30KKwordmFyIG5ld0RvYyA9IGRvY3VtZW50LmltcGxlbWVu
dGF0aW9uLmNyZWF0ZURvY3VtZW50KG51bGwsICdodG1sJywgbnVsbCk7Cit2YXIgZWxlbWVudHM7
CisKK2RlYnVnKCdkb2N1bWVudC5hbGwnKTsKK3Nob3VsZEJlVHJ1ZSgiZG9jdW1lbnQuYWxsIGlu
c3RhbmNlb2YgSFRNTEFsbENvbGxlY3Rpb24iKTsKK3Nob3VsZEJlVHJ1ZSgiZG9jdW1lbnQuYWxs
IGluc3RhbmNlb2YgSFRNTENvbGxlY3Rpb24iKTsKK3Nob3VsZEJlKCJpbml0aWFsTGVuZ3RoID0g
ZG9jdW1lbnQuYWxsLmxlbmd0aDsgZWxlbWVudHMgPSBbaW5zZXJ0RWxlbWVudFdpdGhJZCgnYics
ICdmb28nKSwgaW5zZXJ0RWxlbWVudFdpdGhJZCgncScsICdmb28nKV07XG4iCisgICAgKyAiICAg
ICBkb2N1bWVudC5hbGwubGVuZ3RoIiwgImluaXRpYWxMZW5ndGggKyAyOyIpOworc2hvdWxkQmUo
ImRvY3VtZW50LmFsbFsnZm9vJ10ubGVuZ3RoIiwgIjIiKTsKK3Nob3VsZEJlKCJkb2N1bWVudC5h
bGxbJ2ZvbyddWzBdIiwgImVsZW1lbnRzWzBdIik7CitzaG91bGRCZSgiZG9jdW1lbnQuYWxsWydm
b28nXVsxXSIsICJlbGVtZW50c1sxXSIpOworc2hvdWxkQmUoImVsZW1lbnRzWzBdLnBhcmVudE5v
ZGUucmVtb3ZlQ2hpbGQoZWxlbWVudHNbMF0pOyBkb2N1bWVudC5hbGxbJ2ZvbyddIiwgJ2VsZW1l
bnRzWzFdJyk7CitkZWJ1ZygiIik7CisKK3ZhciBmb3JtID0gZG9jdW1lbnQucXVlcnlTZWxlY3Rv
cignZm9ybScpOworZGVidWcoImZvcm0uZWxlbWVudHMiKTsKK3Nob3VsZEJlVHJ1ZSgiZm9ybS5l
bGVtZW50cyBpbnN0YW5jZW9mIEhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uIik7CitzaG91bGRC
ZVRydWUoImZvcm0uZWxlbWVudHMgaW5zdGFuY2VvZiBIVE1MQ29sbGVjdGlvbiIpOworc2hvdWxk
QmUoImZvcm0uZWxlbWVudHMubGVuZ3RoIiwgIjAiKTsKK3Nob3VsZEJlKCJlbGVtZW50cyA9IFtj
cmVhdGVFbGVtZW50V2l0aElkKCdpbnB1dCcsICdmb28nKSwgY3JlYXRlRWxlbWVudFdpdGhJZCgn
aW5wdXQnLCAnZm9vJyldO1xuIgorICAgICsgIiAgICAgZm9ybS5hcHBlbmRDaGlsZChlbGVtZW50
c1swXSk7IGZvcm0uZWxlbWVudHMubGVuZ3RoIiwgIjEiKTsKK3Nob3VsZEJlKCJmb3JtLmVsZW1l
bnRzWydmb28nXSIsICJlbGVtZW50c1swXSIpOworc2hvdWxkQmUoImZvcm0uYXBwZW5kQ2hpbGQo
ZWxlbWVudHNbMV0pOyBmb3JtLmVsZW1lbnRzLmxlbmd0aCIsICIyIik7CitzaG91bGRCZSgiZm9y
bS5lbGVtZW50c1snZm9vJ10udG9TdHJpbmcoKSIsICInW29iamVjdCBSYWRpb05vZGVMaXN0XSci
KTsKK3Nob3VsZEJlKCJmb3JtLmVsZW1lbnRzWydmb28nXS5sZW5ndGgiLCAiMiIpOworc2hvdWxk
QmUoImZvcm0uZWxlbWVudHNbJ2ZvbyddWzBdIiwgImVsZW1lbnRzWzBdIik7CitzaG91bGRCZSgi
Zm9ybS5lbGVtZW50c1snZm9vJ11bMV0iLCAiZWxlbWVudHNbMV0iKTsKK3Nob3VsZEJlKCJmb3Jt
LnJlbW92ZUNoaWxkKGVsZW1lbnRzWzBdKTsgZm9ybS5lbGVtZW50c1snZm9vJ10iLCAiZWxlbWVu
dHNbMV0iKTsKK3Nob3VsZEJlKCJyZW1vdmVUZXN0RWxlbWVudHMoKTsgZm9ybS5lbGVtZW50cy5s
ZW5ndGgiLCAiMCIpOworZGVidWcoIiIpOworCitkZWJ1Zygic2VsZWN0Lm9wdGlvbnMiKTsKK3No
b3VsZEJlKCJmb3JtLmFwcGVuZENoaWxkKGNyZWF0ZUVsZW1lbnRXaXRoSWQoJ3NlbGVjdCcsICdi
YXInKSk7IGZvcm0uZWxlbWVudHMubGVuZ3RoIiwgIjEiKTsKK3Nob3VsZEJlVHJ1ZSgic2VsZWN0
ID0gZm9ybS5lbGVtZW50c1swXTsgc2VsZWN0Lm9wdGlvbnMgaW5zdGFuY2VvZiBIVE1MT3B0aW9u
c0NvbGxlY3Rpb24iKTsKK3Nob3VsZEJlVHJ1ZSgic2VsZWN0Lm9wdGlvbnMgaW5zdGFuY2VvZiBI
VE1MQ29sbGVjdGlvbiIpOworc2hvdWxkQmUoInNlbGVjdC5vcHRpb25zLmxlbmd0aCIsICIwIik7
CitzaG91bGRCZSgiZWxlbWVudHMgPSBbY3JlYXRlRWxlbWVudFdpdGhJZCgnb3B0aW9uJywgJ2Zv
bycpLCBjcmVhdGVFbGVtZW50V2l0aElkKCdvcHRpb24nLCAnZm9vJyldO1xuIgorICAgICsgIiAg
ICAgc2VsZWN0LmFwcGVuZENoaWxkKGVsZW1lbnRzWzBdKTsgc2VsZWN0Lm9wdGlvbnMubGVuZ3Ro
IiwgIjEiKTsKK3Nob3VsZEJlKCJzZWxlY3Qub3B0aW9uc1snZm9vJ10iLCAiZWxlbWVudHNbMF0i
KTsKK3Nob3VsZEJlKCJzZWxlY3QuYXBwZW5kQ2hpbGQoZWxlbWVudHNbMV0pOyBzZWxlY3Qub3B0
aW9ucy5sZW5ndGgiLCAiMiIpOworc2hvdWxkQmUoInNlbGVjdC5vcHRpb25zWydmb28nXS50b1N0
cmluZygpIiwgIidbb2JqZWN0IE5vZGVMaXN0XSciKTsKK3Nob3VsZEJlKCJzZWxlY3Qub3B0aW9u
c1snZm9vJ10ubGVuZ3RoIiwgIjIiKTsKK3Nob3VsZEJlKCJzZWxlY3Qub3B0aW9uc1snZm9vJ11b
MF0iLCAiZWxlbWVudHNbMF0iKTsKK3Nob3VsZEJlKCJzZWxlY3Qub3B0aW9uc1snZm9vJ11bMV0i
LCAiZWxlbWVudHNbMV0iKTsKK3Nob3VsZEJlKCJzZWxlY3QucmVtb3ZlQ2hpbGQoZWxlbWVudHNb
MF0pOyBzZWxlY3Qub3B0aW9uc1snZm9vJ10iLCAiZWxlbWVudHNbMV0iKTsKK3Nob3VsZEJlKCJz
ZWxlY3QuaW5uZXJIVE1MID0gJyc7IHNlbGVjdC5vcHRpb25zLmxlbmd0aCIsICIwIik7CitzaG91
bGRCZSgicmVtb3ZlVGVzdEVsZW1lbnRzKCk7IGZvcm0uZWxlbWVudHMubGVuZ3RoIiwgIjAiKTsK
K2RlYnVnKCIiKTsKKworZnVuY3Rpb24gdGVzdEZpcnN0SXRlbVJldHVybnNGaXJzdE1hdGNoKGNv
bGxlY3Rpb24sIGluaXRpYWxMZW5ndGgsIGVsZW1lbnROYW1lcywgYXR0cmlidXRlcykgeworICAg
IGRlYnVnKGNvbGxlY3Rpb24pOworICAgIHNob3VsZEJlKGNvbGxlY3Rpb24gKyAiLmxlbmd0aCIs
IGluaXRpYWxMZW5ndGgudG9TdHJpbmcoKSk7CisgICAgZWxlbWVudHMgPSBbXTsKKyAgICBmb3Ig
KHZhciBpID0gMDsgaSA8IGVsZW1lbnROYW1lcy5sZW5ndGg7IGkrKykgeworICAgICAgICB2YXIg
YXR0cnMgPSBhdHRyaWJ1dGVzID8gIiwgIiArIEpTT04uc3RyaW5naWZ5KGF0dHJpYnV0ZXMpIDog
Jyc7CisgICAgICAgIHNob3VsZEJlKCJlbGVtZW50c1siICsgaSArICJdID0gaW5zZXJ0RWxlbWVu
dFdpdGhJZCgnIiArIGVsZW1lbnROYW1lc1tpXSArICInLCAnZm9vJyIgKyBhdHRycyArICIpOyAi
CisgICAgICAgICAgICArIGNvbGxlY3Rpb24gKyAiLmxlbmd0aCIsIChpbml0aWFsTGVuZ3RoICsg
aSArIDEpLnRvU3RyaW5nKCkpOworICAgIH0KKyAgICBzaG91bGRCZShjb2xsZWN0aW9uICsgIlsn
Zm9vJ10iLCAiZWxlbWVudHNbMF0iKTsKKyAgICBzaG91bGRCZSgicmVtb3ZlVGVzdEVsZW1lbnRz
KCk7ICIgKyBjb2xsZWN0aW9uICsgIi5sZW5ndGgiLCBpbml0aWFsTGVuZ3RoLnRvU3RyaW5nKCkp
OworICAgIGRlYnVnKCIiKTsKK30KKwordGVzdEZpcnN0SXRlbVJldHVybnNGaXJzdE1hdGNoKCdk
b2N1bWVudC5pbWFnZXMnLCAwLCBbJ2ltZycsICdpbWcnXSk7Cit0ZXN0Rmlyc3RJdGVtUmV0dXJu
c0ZpcnN0TWF0Y2goJ2RvY3VtZW50LmFwcGxldHMnLCAwLCBbJ2FwcGxldCcsICdhcHBsZXQnXSk7
Cit0ZXN0Rmlyc3RJdGVtUmV0dXJuc0ZpcnN0TWF0Y2goJ2RvY3VtZW50LmVtYmVkcycsIDAsIFsn
ZW1iZWQnLCAnZW1iZWQnXSk7Cit0ZXN0Rmlyc3RJdGVtUmV0dXJuc0ZpcnN0TWF0Y2goJ2RvY3Vt
ZW50LmZvcm1zJywgMSwgWydmb3JtJywgJ2Zvcm0nXSk7Cit0ZXN0Rmlyc3RJdGVtUmV0dXJuc0Zp
cnN0TWF0Y2goJ2RvY3VtZW50LmxpbmtzJywgMCwgWydhJywgJ2EnLCAnYXJlYSddLCB7J2hyZWYn
OiAnc29tZSB1cmwnfSk7Cit0ZXN0Rmlyc3RJdGVtUmV0dXJuc0ZpcnN0TWF0Y2goJ2RvY3VtZW50
LmFuY2hvcnMnLCAwLCBbJ2EnLCAnYSddLCB7J25hbWUnOiAnc29tZSBuYW1lJ30pOwordGVzdEZp
cnN0SXRlbVJldHVybnNGaXJzdE1hdGNoKCdkb2N1bWVudC5zY3JpcHRzJywgMiwgWydzY3JpcHQn
LCAnc2NyaXB0J10pOworCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKworPC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3Jp
cHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS93cmFwcGVy
LWNsYXNzZXMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9t
L3dyYXBwZXItY2xhc3Nlcy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDEzMzY5MykKKysrIExheW91
dFRlc3RzL2Zhc3QvZG9tL3dyYXBwZXItY2xhc3Nlcy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29w
eSkKQEAgLTE0Miw3ICsxNDIsNyBAQCBQQVNTIGpzV3JhcHBlckNsYXNzKGRvY3VtZW50Ll9fcHJv
dG9fXykgCiBQQVNTIGpzV3JhcHBlckNsYXNzKGRvY3VtZW50LmNvbnN0cnVjdG9yKSBpcyAnSFRN
TERvY3VtZW50Q29uc3RydWN0b3InCiBQQVNTIGpzV3JhcHBlckNsYXNzKGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoJ3NlbGVjdCcpLm9wdGlvbnMpIGlzICdIVE1MT3B0aW9uc0NvbGxlY3Rpb24nCiBQ
QVNTIGpzV3JhcHBlckNsYXNzKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NlbGVjdCcpLm9wdGlv
bnMuX19wcm90b19fKSBpcyAnSFRNTE9wdGlvbnNDb2xsZWN0aW9uUHJvdG90eXBlJwotUEFTUyBq
c1dyYXBwZXJDbGFzcyhkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzZWxlY3QnKS5vcHRpb25zLmNv
bnN0cnVjdG9yKSBpcyAnSFRNTE9wdGlvbnNDb2xsZWN0aW9uQ29uc3RydWN0b3InCitGQUlMIGpz
V3JhcHBlckNsYXNzKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NlbGVjdCcpLm9wdGlvbnMuY29u
c3RydWN0b3IpIHNob3VsZCBiZSBIVE1MT3B0aW9uc0NvbGxlY3Rpb25Db25zdHJ1Y3Rvci4gV2Fz
IEZ1bmN0aW9uLgogCiBIVE1MIEVsZW1lbnRzCiAKSW5kZXg6IExheW91dFRlc3RzL2luc3BlY3Rv
ci9jb25zb2xlL2NvbnNvbGUtZm9ybWF0LWNvbGxlY3Rpb25zLWV4cGVjdGVkLnR4dAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9pbnNwZWN0b3IvY29uc29sZS9jb25zb2xlLWZvcm1hdC1jb2xs
ZWN0aW9ucy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDEzMzY5MykKKysrIExheW91dFRlc3RzL2lu
c3BlY3Rvci9jb25zb2xlL2NvbnNvbGUtZm9ybWF0LWNvbGxlY3Rpb25zLWV4cGVjdGVkLnR4dAko
d29ya2luZyBjb3B5KQpAQCAtMiw3ICsyLDcgQEAgQ09OU09MRSBNRVNTQUdFOiBsaW5lIDE1OiBb
b2JqZWN0IE5vZGVMaQogQ09OU09MRSBNRVNTQUdFOiBsaW5lIDE5OiBbb2JqZWN0IEhUTUxDb2xs
ZWN0aW9uXQogQ09OU09MRSBNRVNTQUdFOiBsaW5lIDIzOiBbb2JqZWN0IEhUTUxPcHRpb25zQ29s
bGVjdGlvbl0KIENPTlNPTEUgTUVTU0FHRTogbGluZSAyNzogW29iamVjdCBIVE1MQWxsQ29sbGVj
dGlvbl0KLUNPTlNPTEUgTUVTU0FHRTogbGluZSAzMTogW29iamVjdCBIVE1MQ29sbGVjdGlvbl0K
K0NPTlNPTEUgTUVTU0FHRTogbGluZSAzMTogW29iamVjdCBIVE1MRm9ybUNvbnRyb2xzQ29sbGVj
dGlvbl0KIENPTlNPTEUgTUVTU0FHRTogbGluZSAzNTogW29iamVjdCBOb2RlTGlzdF0KIENPTlNP
TEUgTUVTU0FHRTogbGluZSA0MTogMSwyLAogQ09OU09MRSBNRVNTQUdFOiBsaW5lIDQ0OiBbb2Jq
ZWN0IE9iamVjdF0KQEAgLTExLDcgKzExLDcgQEAgQ09OU09MRSBNRVNTQUdFOiBsaW5lIDE1OiBb
b2JqZWN0IE5vZGVMaQogQ09OU09MRSBNRVNTQUdFOiBsaW5lIDE5OiBbb2JqZWN0IEhUTUxDb2xs
ZWN0aW9uXQogQ09OU09MRSBNRVNTQUdFOiBsaW5lIDIzOiBbb2JqZWN0IEhUTUxPcHRpb25zQ29s
bGVjdGlvbl0KIENPTlNPTEUgTUVTU0FHRTogbGluZSAyNzogW29iamVjdCBIVE1MQWxsQ29sbGVj
dGlvbl0KLUNPTlNPTEUgTUVTU0FHRTogbGluZSAzMTogW29iamVjdCBIVE1MQ29sbGVjdGlvbl0K
K0NPTlNPTEUgTUVTU0FHRTogbGluZSAzMTogW29iamVjdCBIVE1MRm9ybUNvbnRyb2xzQ29sbGVj
dGlvbl0KIENPTlNPTEUgTUVTU0FHRTogbGluZSAzNTogW29iamVjdCBOb2RlTGlzdF0KIENPTlNP
TEUgTUVTU0FHRTogbGluZSA0MTogMSwyLAogQ09OU09MRSBNRVNTQUdFOiBsaW5lIDQ0OiBbb2Jq
ZWN0IE9iamVjdF0KQEAgLTIyLDE0ICsyMiwxNCBAQCBOb2RlTGlzdFsxXSBjb25zb2xlLWZvcm1h
dC1jb2xsZWN0aW9ucy5oCiBIVE1MQ29sbGVjdGlvblszXSBjb25zb2xlLWZvcm1hdC1jb2xsZWN0
aW9ucy5odG1sOjE5CiBIVE1MT3B0aW9uc0NvbGxlY3Rpb25bMl0gY29uc29sZS1mb3JtYXQtY29s
bGVjdGlvbnMuaHRtbDoyMwogSFRNTEFsbENvbGxlY3Rpb25bMTRdIGNvbnNvbGUtZm9ybWF0LWNv
bGxlY3Rpb25zLmh0bWw6MjcKLUhUTUxDb2xsZWN0aW9uWzNdIGNvbnNvbGUtZm9ybWF0LWNvbGxl
Y3Rpb25zLmh0bWw6MzEKK0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uWzNdIGNvbnNvbGUtZm9y
bWF0LWNvbGxlY3Rpb25zLmh0bWw6MzEKIE5vZGVMaXN0WzJdIGNvbnNvbGUtZm9ybWF0LWNvbGxl
Y3Rpb25zLmh0bWw6MzUKIEFycmF5WzJdIGNvbnNvbGUtZm9ybWF0LWNvbGxlY3Rpb25zLmh0bWw6
NDEKIE5vbkFycmF5V2l0aExlbmd0aCBjb25zb2xlLWZvcm1hdC1jb2xsZWN0aW9ucy5odG1sOjQ0
CiBBcmd1bWVudHNbMl0gY29uc29sZS1mb3JtYXQtY29sbGVjdGlvbnMuaHRtbDo1MQogWzxzZWxl
Y3Q+XSBjb25zb2xlLWZvcm1hdC1jb2xsZWN0aW9ucy5odG1sOjE1CiAgY29uc29sZS1mb3JtYXQt
Y29sbGVjdGlvbnMuaHRtbDoxOQotWzxvcHRpb24+LCA8b3B0aW9uPiwgc2VsZWN0ZWRJbmRleDog
MF0gY29uc29sZS1mb3JtYXQtY29sbGVjdGlvbnMuaHRtbDoyMworIGNvbnNvbGUtZm9ybWF0LWNv
bGxlY3Rpb25zLmh0bWw6MjMKICBjb25zb2xlLWZvcm1hdC1jb2xsZWN0aW9ucy5odG1sOjI3CiAg
Y29uc29sZS1mb3JtYXQtY29sbGVjdGlvbnMuaHRtbDozMQogWzxpbnB1dD4sIDxpbnB1dD5dIGNv
bnNvbGUtZm9ybWF0LWNvbGxlY3Rpb25zLmh0bWw6MzUKSW5kZXg6IExheW91dFRlc3RzL3BsYXRm
b3JtL2Nocm9taXVtL2Zhc3QvZG9tL2djLTktZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZG9tL2djLTktZXhwZWN0ZWQudHh0CShy
ZXZpc2lvbiAxMzM2OTMpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2Rv
bS9nYy05LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNDksNyArNDksNyBAQCBQQVNT
OiBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnYm9kCiBGQUlMOiBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgnY2FudmFzJylbMF0uZ2V0Q29udGV4dCgnMmQnKS5teUN1c3RvbVBy
b3BlcnR5IHNob3VsZCBiZSAxIGJ1dCBpbnN0ZWFkIGlzIHVuZGVmaW5lZC4KIFBBU1M6IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdjYW52YXMnKVswXS5nZXRDb250ZXh0KCcyZCcpLmNy
ZWF0ZUxpbmVhckdyYWRpZW50KDAsIDAsIDAsIDApLm15Q3VzdG9tUHJvcGVydHkgc2hvdWxkIGJl
IHVuZGVmaW5lZCBhbmQgaXMuCiBQQVNTOiBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgn
Y2FudmFzJylbMF0uZ2V0Q29udGV4dCgnMmQnKS5jcmVhdGVQYXR0ZXJuKG5ldyBJbWFnZSgpLCAn
bm8tcmVwZWF0JykubXlDdXN0b21Qcm9wZXJ0eSBzaG91bGQgYmUgdW5kZWZpbmVkIGFuZCBpcy4K
LUZBSUw6IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdzZWxlY3QnKVswXS5vcHRpb25z
Lm15Q3VzdG9tUHJvcGVydHkgc2hvdWxkIGJlIDEgYnV0IGluc3RlYWQgaXMgdW5kZWZpbmVkLgor
UEFTUzogZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ3NlbGVjdCcpWzBdLm9wdGlvbnMu
bXlDdXN0b21Qcm9wZXJ0eSBzaG91bGQgYmUgMSBhbmQgaXMuCiBQQVNTOiBkb2N1bWVudC5ib2R5
LmNoaWxkTm9kZXMubXlDdXN0b21Qcm9wZXJ0eSBzaG91bGQgYmUgMSBhbmQgaXMuCiBQQVNTOiBk
b2N1bWVudC5hbGwubXlDdXN0b21Qcm9wZXJ0eSBzaG91bGQgYmUgMSBhbmQgaXMuCiBQQVNTOiBk
b2N1bWVudC5pbWFnZXMubXlDdXN0b21Qcm9wZXJ0eSBzaG91bGQgYmUgMSBhbmQgaXMuCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>173345</attachid>
            <date>2012-11-09 12:13:31 -0800</date>
            <delta_ts>2012-11-17 00:18:47 -0800</delta_ts>
            <desc>Synced to ToT</desc>
            <filename>bug-101311-20121109121139.patch</filename>
            <type>text/plain</type>
            <size>107401</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEzNDA5MikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEwNSBAQAorMjAxMi0xMS0wNiAgUnlvc3Vr
ZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KKworICAgICAgICBNYWtlIG5hbWVkSXRlbSByZXR1
cm4gYSBub2RlIGxpc3Qgb25seSBpbiBIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbiBhbmQgSFRN
TE9wdGlvbnNDb2xsZWN0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMDEzMTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBJbnRyb2R1Y2UgdHdvIG5ldyBpbnRlcmZhY2VzIEhUTUxGb3JtQ29udHJvbHND
b2xsZWN0aW9uIGFuZCBIVE1MT3B0aW9uc0NvbGxlY3Rpb24gdG8gYmUgdXNlZCBieSBmb3JtLmVs
ZW1lbnRzCisgICAgICAgIGFuZCBzZWxlY3Qub3B0aW9ucy4gVGhlc2UgdHdvIGludGVyZmFjZXMg
aGF2ZSB0aGUgbmFtZWQgZ2V0dGVyIGFuZCBuYW1lZEl0ZW0gdGhhdCByZXR1cm5zIGEgbGl2ZSBO
b2RlTGlzdCB3aGVuCisgICAgICAgIHRoZXJlIGFyZSBtdWx0aXBsZSBtYXRjaGVzLiBJbnRyb2R1
Y2luZyB0aGVzZSB0d28gaW50ZXJmYWNlcyBhbGxvdyB1cyB0byAicmVndWxhciIgSFRNTENvbGxl
Y3Rpb24ncyBuYW1lZCBnZXR0ZXIKKyAgICAgICAgYW5kIG5hbWVkSXRlbSB0byByZXR1cm4gZXhh
Y3RseSBvbmUgbm9kZSBvciBudWxsIGFzIHNwZWNpZmllZCBpbiBIVE1MNToKKyAgICAgICAgaHR0
cDovL3d3dy53aGF0d2cub3JnL3NwZWNzL3dlYi1hcHBzL2N1cnJlbnQtd29yay9tdWx0aXBhZ2Uv
Y29tbW9uLWRvbS1pbnRlcmZhY2VzLmh0bWwjY29sbGVjdGlvbnMtMAorCisgICAgICAgIFVuZm9y
dHVuYXRlbHksIEhUTUxPcHRpb25zQ29sbGVjdGlvbiBzdGlsbCBoYXMgYSBidWcgdGhhdCBpdHMg
bmFtZWQgZ2V0dGVyIGFuZCBuYW1lZEl0ZW0gcmV0dXJucworICAgICAgICBhIHN0YXRpYyBOb2Rl
TGlzdCBpbnN0ZWFkIG9mIGEgbGl2ZSBOb2RlTGlzdCAoRHluYW1pY05vZGVMaXN0KSBhdCB0aGUg
bW9tZW50LgorCisgICAgICAgIEFsc28gZ290IHJpZCBvZiBEb2N1bWVudDo6b2JqZWN0cyBzaW5j
ZSBpdCdzIG5vdCBleHBvc2VkIGluIElETCBvciBjYWxsZWQgYW55d2hlcmUuCisKKyAgICAgICAg
VGVzdDogZmFzdC9kb20vaHRtbC1jb2xsZWN0aW9ucy1uYW1lZEl0ZW0uaHRtbAorCisgICAgICAg
ICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMuY3BwOgorICAgICAg
ICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMucHJpOgor
ICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogVGFyZ2V0LnByaToKKyAg
ICAgICAgKiBVc2VKU0MuY21ha2U6CisgICAgICAgICogVXNlVjguY21ha2U6CisgICAgICAgICog
V2ViQ29yZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOgor
ICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9KU0JpbmRpbmdzQWxsSW5PbmUuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL2pz
L0pTSFRNTEFsbENvbGxlY3Rpb25DdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Z2V0TmFt
ZWRJdGVtcyk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNIVE1MQ29sbGVjdGlvbkN1c3RvbS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpKU0hUTUxDb2xsZWN0aW9uOjpuYW1lR2V0dGVyKTogTm93
IHJldHVybnMgZXhhY3RseSBvbmUgbm9kZSBvciBudWxsLgorICAgICAgICAoV2ViQ29yZTo6dG9K
Uyk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbkN1
c3RvbS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Z2V0TmFtZWRJdGVtcyk6IFJldHVy
bnMgUmFkaW9Ob2RlTGlzdCB3aGVuIHRoZXJlIGFyZSBtdWx0aXBsZSBtYXRjaGVzLgorICAgICAg
ICAoV2ViQ29yZTo6SlNIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbjo6Y2FuR2V0SXRlbXNGb3JO
YW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkpTSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb246Om5h
bWVHZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SlNIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlv
bjo6bmFtZWRJdGVtKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0hUTUxPcHRpb25zQ29sbGVj
dGlvbkN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpnZXROYW1lZEl0ZW1zKTogUmV0dXJu
cyBhIHN0YXRpYyBOb2RlTGlzdCB3aGVuIHRoZXJlIGFyZSBtdWx0aXBsZSBtYXRjaGVzLgorICAg
ICAgICBUaGlzIGlzIGEgYnVnLiBJdCBzaG91bGQgYmUgYSBsaXZlIE5vZGVMaXN0IGluc3RlYWQu
CisgICAgICAgIChXZWJDb3JlOjpKU0hUTUxPcHRpb25zQ29sbGVjdGlvbjo6Y2FuR2V0SXRlbXNG
b3JOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkpTSFRNTE9wdGlvbnNDb2xsZWN0aW9uOjpuYW1l
R2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkpTSFRNTE9wdGlvbnNDb2xsZWN0aW9uOjpuYW1l
ZEl0ZW0pOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0NvZGVHZW5lcmF0b3JKUy5wbTogSW5jbHVk
ZSBKU05vZGUuanMgZm9yIGFsbCBIVE1MKkNvbGxlY3Rpb24gaW50ZXJmYWNlcyBmb3Igc2ltcGxp
Y2l0eS4KKyAgICAgICAgKiBiaW5kaW5ncy9qcy9Db2RlR2VuZXJhdG9yVjgucG06IEhUTUxPcHRp
b25zQ29sbGVjdGlvbiBub3cgaW5oZXJpdHMgZnJvbSBIVE1MQ29sbGVjdGlvbi4gU2VlCisgICAg
ICAgIGh0dHA6Ly93d3cud2hhdHdnLm9yZy9zcGVjcy93ZWItYXBwcy9jdXJyZW50LXdvcmsvbXVs
dGlwYWdlL2NvbW1vbi1kb20taW50ZXJmYWNlcy5odG1sI2h0bWxvcHRpb25zY29sbGVjdGlvbgor
ICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxBbGxDb2xsZWN0aW9uQ3VzdG9tLmNw
cDogUGFzcyBpbiBpc29sYXRlIHdoZW4gd2UgY2FuLgorICAgICAgICAoV2ViQ29yZTo6Z2V0TmFt
ZWRJdGVtcyk6IEFkZGVkIGEgY29tbWVudCBhYm91dCBob3cgd2Ugc2hvdWxkIGJlIHJldHVybmlu
ZworICAgICAgICBhIEhUTUxDb2xsZWN0aW9uIHdoZW4gdGhlcmUgYXJlIG11bHRpcGxlIG1hdGNo
ZXMuCisgICAgICAgIChXZWJDb3JlOjpnZXRJdGVtKToKKyAgICAgICAgKFdlYkNvcmU6OlY4SFRN
TEFsbENvbGxlY3Rpb246Om5hbWVkUHJvcGVydHlHZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6
VjhIVE1MQWxsQ29sbGVjdGlvbjo6bmFtZWRJdGVtQ2FsbGJhY2spOgorICAgICAgICAqIGJpbmRp
bmdzL3Y4L2N1c3RvbS9WOEhUTUxDb2xsZWN0aW9uQ3VzdG9tLmNwcDogTm93IHJldHVybnMgZXhh
Y3RseSBvbmUgbm9kZSBvciBudWxsLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJD
b3JlOjpWOEhUTUxDb2xsZWN0aW9uOjpuYW1lZFByb3BlcnR5R2V0dGVyKToKKyAgICAgICAgKFdl
YkNvcmU6OnRvVjgpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxGb3JtQ29u
dHJvbHNDb2xsZWN0aW9uQ3VzdG9tLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAg
ICAgICAgKFdlYkNvcmU6OmdldE5hbWVkSXRlbXMpOiBSZXR1cm5zIFJhZGlvTm9kZUxpc3Qgd2hl
biB0aGVyZSBhcmUgbXVsdGlwbGUgbWF0Y2hlcy4KKyAgICAgICAgKFdlYkNvcmU6OlY4SFRNTEZv
cm1Db250cm9sc0NvbGxlY3Rpb246Om5hbWVkUHJvcGVydHlHZXR0ZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6VjhIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbjo6bmFtZWRJdGVtQ2FsbGJhY2spOgor
ICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxPcHRpb25zQ29sbGVjdGlvbkN1c3Rv
bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpnZXROYW1lZEl0ZW1zKTogUmV0dXJucyBhIHN0YXRp
YyBOb2RlTGlzdCB3aGVuIHRoZXJlIGFyZSBtdWx0aXBsZSBtYXRjaGVzLgorICAgICAgICBUaGlz
IGlzIGEgYnVnLiBJdCBzaG91bGQgYmUgYSBsaXZlIE5vZGVMaXN0IGluc3RlYWQuCisgICAgICAg
IChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlY4SFRNTE9wdGlvbnNDb2xsZWN0aW9uOjpu
YW1lZFByb3BlcnR5R2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlY4SFRNTE9wdGlvbnNDb2xs
ZWN0aW9uOjpuYW1lZEl0ZW1DYWxsYmFjayk6CisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmUpOiBSZW1vdmVkIERvY3VtZW50OjpvYmplY3RzIHNpbmNlIGl0IHdh
cyBub3QgdXNlZCBhbnl3aGVyZS4KKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaDoKKyAgICAgICAg
KERvY3VtZW50KToKKyAgICAgICAgKiBkb20vRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpFbGVtZW50UmFyZURhdGE6OmVuc3VyZUNhY2hlZEhUTUxDb2xsZWN0aW9uKTogZm9ybS5lbGVt
ZW50cyBzaG91bGQgaW5zdGFudGlhdGUKKyAgICAgICAgYSBIVE1MRm9ybUNvbnRyb2xzQ29sbGVj
dGlvbiBpbnN0ZWFkIG9mIGEgSFRNTENvbGxlY3Rpb24uCisgICAgICAgICogaHRtbC9Db2xsZWN0
aW9uVHlwZS5oOgorICAgICAgICAqIGh0bWwvSFRNTENvbGxlY3Rpb24uaWRsOiBSZW1vdmVkIFtD
dXN0b21dIHNpbmNlIG5hbWVkSXRlbSBpcyBhIHJlZ3VsYXIgZnVuY3Rpb24gY2FsbCBub3cuCisg
ICAgICAgICogaHRtbC9IVE1MRmllbGRTZXRFbGVtZW50LmNwcDoKKyAgICAgICAgKiBodG1sL0hU
TUxGaWVsZFNldEVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxGb3JtQ29sbGVjdGlvbi5j
cHA6IFJlbW92ZWQuCisgICAgICAgICogaHRtbC9IVE1MRm9ybUNvbGxlY3Rpb24uaDogUmVtb3Zl
ZC4KKyAgICAgICAgKiBodG1sL0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmNwcDogQ29waWVk
IGZyb20gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbGxlY3Rpb24uY3BwLgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb246OkhUTUxGb3JtQ29udHJvbHND
b2xsZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9u
OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb246
On5IVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRm9y
bUNvbnRyb2xzQ29sbGVjdGlvbjo6Zm9ybUNvbnRyb2xFbGVtZW50cyk6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbjo6Zm9ybUltYWdlRWxlbWVudHMpOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb246OnZpcnR1YWxJdGVtQWZ0
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb246Om5hbWVk
SXRlbSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbjo6dXBk
YXRlTmFtZUNhY2hlKToKKyAgICAgICAgKiBodG1sL0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9u
Lmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db2xsZWN0aW9uLmgu
CisgICAgICAgIChIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbik6CisgICAgICAgICogaHRtbC9I
VE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5pZGw6IEFkZGVkLgorICAgICAgICAqIGh0bWwvSFRN
TEZvcm1FbGVtZW50LmNwcDoKKyAgICAgICAgKiBodG1sL0hUTUxGb3JtRWxlbWVudC5oOgorICAg
ICAgICAoV2ViQ29yZSk6CisgICAgICAgICogaHRtbC9IVE1MT3B0aW9uc0NvbGxlY3Rpb24uaWRs
OgorCiAyMDEyLTExLTA5ICBKb3NodWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CiAKICAg
ICAgICAgW0Nocm9taXVtXSBVbnJldmlld2VkIGdhcmRlbmluZy4gRml4IGNocm9taXVtLXdpbiBi
dWlsZHMgZm9sbG93aW5nIHIxMzQwODIKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMu
dHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lv
biAxMzQwOTIpCisrKyBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5
KQpAQCAtNDM3LDYgKzQzNyw3IEBAIFNFVChXZWJDb3JlX0lETF9GSUxFUwogICAgIGh0bWwvSFRN
TEVtYmVkRWxlbWVudC5pZGwKICAgICBodG1sL0hUTUxGaWVsZFNldEVsZW1lbnQuaWRsCiAgICAg
aHRtbC9IVE1MRm9udEVsZW1lbnQuaWRsCisgICAgaHRtbC9IVE1MRm9ybUNvbnRyb2xzQ29sbGVj
dGlvbi5pZGwKICAgICBodG1sL0hUTUxGb3JtRWxlbWVudC5pZGwKICAgICBodG1sL0hUTUxGcmFt
ZUVsZW1lbnQuaWRsCiAgICAgaHRtbC9IVE1MRnJhbWVTZXRFbGVtZW50LmlkbApAQCAtMTM2Niw3
ICsxMzY3LDcgQEAgU0VUKFdlYkNvcmVfU09VUkNFUwogICAgIGh0bWwvSFRNTEVtYmVkRWxlbWVu
dC5jcHAKICAgICBodG1sL0hUTUxGaWVsZFNldEVsZW1lbnQuY3BwCiAgICAgaHRtbC9IVE1MRm9u
dEVsZW1lbnQuY3BwCi0gICAgaHRtbC9IVE1MRm9ybUNvbGxlY3Rpb24uY3BwCisgICAgaHRtbC9I
VE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5jcHAKICAgICBodG1sL0hUTUxGb3JtQ29udHJvbEVs
ZW1lbnQuY3BwCiAgICAgaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50V2l0aFN0YXRlLmNwcAog
ICAgIGh0bWwvSFRNTEZvcm1FbGVtZW50LmNwcApJbmRleDogU291cmNlL1dlYkNvcmUvRGVyaXZl
ZFNvdXJjZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2Vz
LmNwcAkocmV2aXNpb24gMTM0MDkyKQorKysgU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjMsNiArMTYzLDcgQEAKICNpbmNsdWRlICJKU0hUTUxF
bWJlZEVsZW1lbnQuY3BwIgogI2luY2x1ZGUgIkpTSFRNTEZpZWxkU2V0RWxlbWVudC5jcHAiCiAj
aW5jbHVkZSAiSlNIVE1MRm9udEVsZW1lbnQuY3BwIgorI2luY2x1ZGUgIkpTSFRNTEZvcm1Db250
cm9sc0NvbGxlY3Rpb24uY3BwIgogI2luY2x1ZGUgIkpTSFRNTEZvcm1FbGVtZW50LmNwcCIKICNp
bmNsdWRlICJKU0hUTUxGcmFtZUVsZW1lbnQuY3BwIgogI2luY2x1ZGUgIkpTSFRNTEZyYW1lU2V0
RWxlbWVudC5jcHAiCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UJKHJldmlzaW9u
IDEzNDA5MikKKysrIFNvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UJKHdvcmtpbmcg
Y29weSkKQEAgLTMwMCw2ICszMDAsNyBAQCBCSU5ESU5HX0lETFMgPSBcCiAgICAgJChXZWJDb3Jl
KS9odG1sL0hUTUxFbWJlZEVsZW1lbnQuaWRsIFwKICAgICAkKFdlYkNvcmUpL2h0bWwvSFRNTEZp
ZWxkU2V0RWxlbWVudC5pZGwgXAogICAgICQoV2ViQ29yZSkvaHRtbC9IVE1MRm9udEVsZW1lbnQu
aWRsIFwKKyAgICAkKFdlYkNvcmUpL2h0bWwvSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uaWRs
IFwKICAgICAkKFdlYkNvcmUpL2h0bWwvSFRNTEZvcm1FbGVtZW50LmlkbCBcCiAgICAgJChXZWJD
b3JlKS9odG1sL0hUTUxGcmFtZUVsZW1lbnQuaWRsIFwKICAgICAkKFdlYkNvcmUpL2h0bWwvSFRN
TEZyYW1lU2V0RWxlbWVudC5pZGwgXApJbmRleDogU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJj
ZXMucHJpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLnByaQko
cmV2aXNpb24gMTM0MDkyKQorKysgU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMucHJpCSh3
b3JraW5nIGNvcHkpCkBAIC0zNTAsNiArMzUwLDcgQEAgSURMX0JJTkRJTkdTICs9IFwKICAgICAk
JFBXRC9odG1sL0hUTUxFbWJlZEVsZW1lbnQuaWRsIFwKICAgICAkJFBXRC9odG1sL0hUTUxGaWVs
ZFNldEVsZW1lbnQuaWRsIFwKICAgICAkJFBXRC9odG1sL0hUTUxGb250RWxlbWVudC5pZGwgXAor
ICAgICQkUFdEL2h0bWwvSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uaWRsIFwKICAgICAkJFBX
RC9odG1sL0hUTUxGb3JtRWxlbWVudC5pZGwgXAogICAgICQkUFdEL2h0bWwvSFRNTEZyYW1lRWxl
bWVudC5pZGwgXAogICAgICQkUFdEL2h0bWwvSFRNTEZyYW1lU2V0RWxlbWVudC5pZGwgXApJbmRl
eDogU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCShyZXZpc2lvbiAxMzQwOTIpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCSh3b3JraW5nIGNvcHkpCkBAIC0zMzcsNiAr
MzM3LDggQEAgd2ViY29yZV9idWlsdF9zb3VyY2VzICs9IFwKIAlEZXJpdmVkU291cmNlcy9XZWJD
b3JlL0pTSFRNTEZpZWxkU2V0RWxlbWVudC5oIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pT
SFRNTEZvbnRFbGVtZW50LmNwcCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0hUTUxGb250
RWxlbWVudC5oIFwKKwlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTSFRNTEZvcm1Db250cm9sc0Nv
bGxlY3Rpb24uY3BwIFwKKwlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTSFRNTEZvcm1Db250cm9s
c0NvbGxlY3Rpb24uaCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0hUTUxGb3JtRWxlbWVu
dC5jcHAgXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNIVE1MRm9ybUVsZW1lbnQuaCBcCiAJ
RGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0hUTUxGcmFtZUVsZW1lbnQuY3BwIFwKQEAgLTE0Mjgs
NiArMTQzMCw3IEBAIGRvbV9iaW5kaW5nX2lkbHMgKz0gXAogCSQoV2ViQ29yZSkvaHRtbC9IVE1M
RW1iZWRFbGVtZW50LmlkbCBcCiAJJChXZWJDb3JlKS9odG1sL0hUTUxGaWVsZFNldEVsZW1lbnQu
aWRsIFwKIAkkKFdlYkNvcmUpL2h0bWwvSFRNTEZvbnRFbGVtZW50LmlkbCBcCisJJChXZWJDb3Jl
KS9odG1sL0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmlkbCBcCiAJJChXZWJDb3JlKS9odG1s
L0hUTUxGb3JtRWxlbWVudC5pZGwgXAogCSQoV2ViQ29yZSkvaHRtbC9IVE1MRnJhbWVFbGVtZW50
LmlkbCBcCiAJJChXZWJDb3JlKS9odG1sL0hUTUxGcmFtZVNldEVsZW1lbnQuaWRsIFwKQEAgLTIz
MDUsNiArMjMwOCw3IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNIVE1MRWxlbWVudEN1c3RvbS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTSFRNTEVtYmVkRWxlbWVudEN1c3RvbS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTSFRNTEVtYmVkRWxlbWVudEN1c3RvbS5oIFwKKwlTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uQ3VzdG9tLmNwcCBcCiAJU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MRm9ybUVsZW1lbnRDdXN0b20uY3BwIFwKIAlT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxGcmFtZUVsZW1lbnRDdXN0b20uY3BwIFwK
IAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxGcmFtZVNldEVsZW1lbnRDdXN0b20u
Y3BwIFwKQEAgLTMzMTAsOCArMzMxNCw4IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MRmllbGRTZXRFbGVtZW50LmggXAogCVNvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEZvbnRFbGVtZW50LmNwcCBcCiAJU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9udEVs
ZW1lbnQuaCBcCi0JU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbGxlY3Rpb24uY3BwIFwK
LQlTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29sbGVjdGlvbi5oIFwKKwlTb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmNwcCBcCisJU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5oIFwKIAlTb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxGb3JtQ29udHJvbEVsZW1lbnQuaCBcCiAJU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNv
bnRyb2xFbGVtZW50V2l0aFN0YXRlLmNwcCBcCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9UYXJnZXQu
cHJpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkJKHJldmlzaW9uIDEz
NDA5MikKKysrIFNvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkJKHdvcmtpbmcgY29weSkKQEAgLTEz
Miw2ICsxMzIsNyBAQCBTT1VSQ0VTICs9IFwKICAgICAgYmluZGluZ3MvanMvSlNIVE1MRG9jdW1l
bnRDdXN0b20uY3BwIFwKICAgICAgYmluZGluZ3MvanMvSlNIVE1MRWxlbWVudEN1c3RvbS5jcHAg
XAogICAgICBiaW5kaW5ncy9qcy9KU0hUTUxFbWJlZEVsZW1lbnRDdXN0b20uY3BwIFwKKyAgICAg
YmluZGluZ3MvanMvSlNIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbkN1c3RvbS5jcHAgXAogICAg
ICBiaW5kaW5ncy9qcy9KU0hUTUxGb3JtRWxlbWVudEN1c3RvbS5jcHAgXAogICAgICBiaW5kaW5n
cy9qcy9KU0hUTUxGcmFtZUVsZW1lbnRDdXN0b20uY3BwIFwKICAgICAgYmluZGluZ3MvanMvSlNI
VE1MRnJhbWVTZXRFbGVtZW50Q3VzdG9tLmNwcCBcCkBAIC02MDIsNyArNjAzLDcgQEAgU09VUkNF
UyArPSBcCiAgICAgaHRtbC9IVE1MRW1iZWRFbGVtZW50LmNwcCBcCiAgICAgaHRtbC9IVE1MRmll
bGRTZXRFbGVtZW50LmNwcCBcCiAgICAgaHRtbC9IVE1MRm9udEVsZW1lbnQuY3BwIFwKLSAgICBo
dG1sL0hUTUxGb3JtQ29sbGVjdGlvbi5jcHAgXAorICAgIGh0bWwvSFRNTEZvcm1Db250cm9sc0Nv
bGxlY3Rpb24uY3BwIFwKICAgICBodG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwIFwKICAg
ICBodG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnRXaXRoU3RhdGUuY3BwIFwKICAgICBodG1sL0hU
TUxGb3JtRWxlbWVudC5jcHAgXApAQCAtMTc1OSw3ICsxNzYwLDcgQEAgSEVBREVSUyArPSBcCiAg
ICAgaHRtbC9IVE1MRW1iZWRFbGVtZW50LmggXAogICAgIGh0bWwvSFRNTEZpZWxkU2V0RWxlbWVu
dC5oIFwKICAgICBodG1sL0hUTUxGb250RWxlbWVudC5oIFwKLSAgICBodG1sL0hUTUxGb3JtQ29s
bGVjdGlvbi5oIFwKKyAgICBodG1sL0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmggXAogICAg
IGh0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5oIFwKICAgICBodG1sL0hUTUxGb3JtQ29udHJv
bEVsZW1lbnRXaXRoU3RhdGUuaCBcCiAgICAgaHRtbC9IVE1MRm9ybUVsZW1lbnQuaCBcCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9Vc2VKU0MuY21ha2UKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvVXNlSlNDLmNtYWtlCShyZXZpc2lvbiAxMzQwOTIpCisrKyBTb3VyY2UvV2ViQ29yZS9Vc2VK
U0MuY21ha2UJKHdvcmtpbmcgY29weSkKQEAgLTg0LDYgKzg0LDcgQEAgTElTVChBUFBFTkQgV2Vi
Q29yZV9TT1VSQ0VTCiAgICAgYmluZGluZ3MvanMvSlNIVE1MRG9jdW1lbnRDdXN0b20uY3BwCiAg
ICAgYmluZGluZ3MvanMvSlNIVE1MRWxlbWVudEN1c3RvbS5jcHAKICAgICBiaW5kaW5ncy9qcy9K
U0hUTUxFbWJlZEVsZW1lbnRDdXN0b20uY3BwCisgICAgYmluZGluZ3MvanMvSlNIVE1MRm9ybUNv
bnRyb2xzQ29sbGVjdGlvbkN1c3RvbS5jcHAKICAgICBiaW5kaW5ncy9qcy9KU0hUTUxGb3JtRWxl
bWVudEN1c3RvbS5jcHAKICAgICBiaW5kaW5ncy9qcy9KU0hUTUxGcmFtZUVsZW1lbnRDdXN0b20u
Y3BwCiAgICAgYmluZGluZ3MvanMvSlNIVE1MRnJhbWVTZXRFbGVtZW50Q3VzdG9tLmNwcApJbmRl
eDogU291cmNlL1dlYkNvcmUvVXNlVjguY21ha2UKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvVXNlVjguY21ha2UJKHJldmlzaW9uIDEzNDA5MikKKysrIFNvdXJjZS9XZWJDb3JlL1VzZVY4
LmNtYWtlCSh3b3JraW5nIGNvcHkpCkBAIC0xMDUsNiArMTA1LDcgQEAgTElTVChBUFBFTkQgV2Vi
Q29yZV9TT1VSQ0VTCiAgICAgYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTENvbGxlY3Rpb25DdXN0
b20uY3BwCiAgICAgYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTERvY3VtZW50Q3VzdG9tLmNwcAog
ICAgIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxFbGVtZW50Q3VzdG9tLmNwcAorICAgIGJpbmRp
bmdzL3Y4L2N1c3RvbS9WOEhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uQ3VzdG9tLmNwcAogICAg
IGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxGb3JtRWxlbWVudEN1c3RvbS5jcHAKICAgICBiaW5k
aW5ncy92OC9jdXN0b20vVjhIVE1MRnJhbWVFbGVtZW50Q3VzdG9tLmNwcAogICAgIGJpbmRpbmdz
L3Y4L2N1c3RvbS9WOEhUTUxGcmFtZVNldEVsZW1lbnRDdXN0b20uY3BwCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLmd5cGkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5neXBpCShyZXZpc2lvbiAxMzQwOTIpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkJ
KHdvcmtpbmcgY29weSkKQEAgLTEwNjYsNiArMTA2Niw3IEBACiAgICAgICAgICAgICAnaHRtbC9I
VE1MRW1iZWRFbGVtZW50LmlkbCcsCiAgICAgICAgICAgICAnaHRtbC9IVE1MRmllbGRTZXRFbGVt
ZW50LmlkbCcsCiAgICAgICAgICAgICAnaHRtbC9IVE1MRm9udEVsZW1lbnQuaWRsJywKKyAgICAg
ICAgICAgICdodG1sL0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmlkbCcsCiAgICAgICAgICAg
ICAnaHRtbC9IVE1MRm9ybUVsZW1lbnQuaWRsJywKICAgICAgICAgICAgICdodG1sL0hUTUxGcmFt
ZUVsZW1lbnQuaWRsJywKICAgICAgICAgICAgICdodG1sL0hUTUxGcmFtZVNldEVsZW1lbnQuaWRs
JywKQEAgLTIwNTEsNiArMjA1Miw3IEBACiAgICAgICAgICAgICAnYmluZGluZ3MvanMvSlNIVE1M
RWxlbWVudEN1c3RvbS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTSFRNTEVtYmVk
RWxlbWVudEN1c3RvbS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTSFRNTEVtYmVk
RWxlbWVudEN1c3RvbS5oJywKKyAgICAgICAgICAgICdiaW5kaW5ncy9qcy9KU0hUTUxGb3JtQ29u
dHJvbHNDb2xsZWN0aW9uQ3VzdG9tLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvanMvSlNI
VE1MRm9ybUVsZW1lbnRDdXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy9qcy9KU0hU
TUxGcmFtZUVsZW1lbnRDdXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy9qcy9KU0hU
TUxGcmFtZVNldEVsZW1lbnRDdXN0b20uY3BwJywKQEAgLTIzNjUsNiArMjM2Nyw3IEBACiAgICAg
ICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTENvbGxlY3Rpb25DdXN0b20uY3BwJywK
ICAgICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MRG9jdW1lbnRDdXN0b20uY3Bw
JywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MRWxlbWVudEN1c3RvbS5j
cHAnLAorICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxGb3JtQ29udHJvbHND
b2xsZWN0aW9uQ3VzdG9tLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4
SFRNTEZvcm1FbGVtZW50Q3VzdG9tLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4SFRNTEZyYW1lRWxlbWVudEN1c3RvbS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdz
L3Y4L2N1c3RvbS9WOEhUTUxGcmFtZVNldEVsZW1lbnRDdXN0b20uY3BwJywKQEAgLTQwODEsOCAr
NDA4NCw4IEBACiAgICAgICAgICAgICAnaHRtbC9IVE1MRmllbGRTZXRFbGVtZW50LmgnLAogICAg
ICAgICAgICAgJ2h0bWwvSFRNTEZvbnRFbGVtZW50LmNwcCcsCiAgICAgICAgICAgICAnaHRtbC9I
VE1MRm9udEVsZW1lbnQuaCcsCi0gICAgICAgICAgICAnaHRtbC9IVE1MRm9ybUNvbGxlY3Rpb24u
Y3BwJywKLSAgICAgICAgICAgICdodG1sL0hUTUxGb3JtQ29sbGVjdGlvbi5oJywKKyAgICAgICAg
ICAgICdodG1sL0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmNwcCcsCisgICAgICAgICAgICAn
aHRtbC9IVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5oJywKICAgICAgICAgICAgICdodG1sL0hU
TUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwJywKICAgICAgICAgICAgICdodG1sL0hUTUxGb3JtQ29u
dHJvbEVsZW1lbnRXaXRoU3RhdGUuY3BwJywKICAgICAgICAgICAgICdodG1sL0hUTUxGb3JtRWxl
bWVudC5jcHAnLApAQCAtNzU4Nyw2ICs3NTkwLDggQEAKICAgICAgICAgICAgICc8KFBST0RVQ1Rf
RElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTSFRNTEZpZWxkU2V0RWxlbWVudC5oJywKICAg
ICAgICAgICAgICc8KFBST0RVQ1RfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTSFRNTEZv
bnRFbGVtZW50LmNwcCcsCiAgICAgICAgICAgICAnPChQUk9EVUNUX0RJUikvRGVyaXZlZFNvdXJj
ZXMvV2ViQ29yZS9KU0hUTUxGb250RWxlbWVudC5oJywKKyAgICAgICAgICAgICc8KFBST0RVQ1Rf
RElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24u
Y3BwJywKKyAgICAgICAgICAgICc8KFBST0RVQ1RfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3Jl
L0pTSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uaCcsCiAgICAgICAgICAgICAnPChQUk9EVUNU
X0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0hUTUxGb3JtRWxlbWVudC5jcHAnLAogICAg
ICAgICAgICAgJzwoUFJPRFVDVF9ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNIVE1MRm9y
bUVsZW1lbnQuaCcsCiAgICAgICAgICAgICAnPChQUk9EVUNUX0RJUikvRGVyaXZlZFNvdXJjZXMv
V2ViQ29yZS9KU0hUTUxGcmFtZUVsZW1lbnQuY3BwJywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dl
YkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCShyZXZpc2lvbiAxMzQwOTIpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagkod29ya2luZyBjb3B5KQpA
QCAtNjkzNCw2ICs2OTM0LDYyIEBACiAJCQkJPgogCQkJPC9GaWxlPgogCQkJPEZpbGUKKwkJCQlS
ZWxhdGl2ZVBhdGg9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmpcJChQcm9qZWN0TmFtZSlc
RGVyaXZlZFNvdXJjZXNcSlNIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5jcHAiCisJCQkJPgor
CQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJEZWJ1Z3xXaW4zMiIKKwkJCQkJRXhj
bHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZD
Q0xDb21waWxlclRvb2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8
RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiIKKwkJCQkJRXhjbHVk
ZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xD
b21waWxlclRvb2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8Rmls
ZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iRGVidWdfQ2Fpcm9fQ0ZMaXRlfFdpbjMyIgorCQkJ
CQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFt
ZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgor
CQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJSZWxlYXNlX0NhaXJvX0NGTGl0ZXxX
aW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wK
KwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmln
dXJhdGlvbj4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iRGVidWdfQWxsfFdp
bjMyIgorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAor
CQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1
cmF0aW9uPgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJQcm9kdWN0aW9ufFdp
bjMyIgorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAor
CQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1
cmF0aW9uPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9IiQoQ29uZmln
dXJhdGlvbkJ1aWxkRGlyKVxvYmpcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNIVE1M
Rm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCiAJ
CQkJUmVsYXRpdmVQYXRoPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqXCQoUHJvamVjdE5h
bWUpXERlcml2ZWRTb3VyY2VzXEpTSFRNTEZvcm1FbGVtZW50LmNwcCIKIAkJCQk+CiAJCQkJPEZp
bGVDb25maWd1cmF0aW9uCkBAIC02MDQ4MywxMSArNjA1MzksMTEgQEAKIAkJCQk+CiAJCQk8L0Zp
bGU+CiAJCQk8RmlsZQotCQkJCVJlbGF0aXZlUGF0aD0iLi5caHRtbFxIVE1MRm9ybUNvbGxlY3Rp
b24uY3BwIgorCQkJCVJlbGF0aXZlUGF0aD0iLi5caHRtbFxIVE1MRm9ybUNvbnRyb2xzQ29sbGVj
dGlvbi5jcHAiCiAJCQkJPgogCQkJPC9GaWxlPgogCQkJPEZpbGUKLQkJCQlSZWxhdGl2ZVBhdGg9
Ii4uXGh0bWxcSFRNTEZvcm1Db2xsZWN0aW9uLmgiCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxodG1s
XEhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmgiCiAJCQkJPgogCQkJPC9GaWxlPgogCQkJPEZp
bGUKQEAgLTY4MDIyLDYgKzY4MDc4LDU4IEBACiAJCQkJCT4KIAkJCQk8L0ZpbGU+CiAJCQkJPEZp
bGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxiaW5kaW5nc1xqc1xKU0hUTUxGb3JtQ29udHJvbHND
b2xsZWN0aW9uQ3VzdG9tLmNwcCIKKwkJCQkJPgorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJ
CQkJCU5hbWU9IkRlYnVnfFdpbjMyIgorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJ
CQkJCQk+CisJCQkJCQk8VG9vbAorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJ
CQkvPgorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24K
KwkJCQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1
ZSIKKwkJCQkJCT4KKwkJCQkJCTxUb29sCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIK
KwkJCQkJCS8+CisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJCTxGaWxlQ29uZmlndXJh
dGlvbgorCQkJCQkJTmFtZT0iRGVidWdfQ2Fpcm9fQ0ZMaXRlfFdpbjMyIgorCQkJCQkJRXhjbHVk
ZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCQk+CisJCQkJCQk8VG9vbAorCQkJCQkJCU5hbWU9IlZD
Q0xDb21waWxlclRvb2wiCisJCQkJCQkvPgorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJ
CQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJCU5hbWU9IlJlbGVhc2VfQ2Fpcm9fQ0ZMaXRlfFdp
bjMyIgorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCQk+CisJCQkJCQk8VG9v
bAorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCQkvPgorCQkJCQk8L0ZpbGVD
b25maWd1cmF0aW9uPgorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJCU5hbWU9IkRlYnVn
X0FsbHxXaW4zMiIKKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQkJPgorCQkJ
CQkJPFRvb2wKKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkJLz4KKwkJCQkJ
PC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCQlOYW1l
PSJQcm9kdWN0aW9ufFdpbjMyIgorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJ
CQk+CisJCQkJCQk8VG9vbAorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCQkv
PgorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQogCQkJ
CQlSZWxhdGl2ZVBhdGg9Ii4uXGJpbmRpbmdzXGpzXEpTSFRNTEZvcm1FbGVtZW50Q3VzdG9tLmNw
cCIKIAkJCQkJPgogCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDEzNDA5
MikKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagko
d29ya2luZyBjb3B5KQpAQCAtMzc0Miw2ICszNzQyLDcgQEAKIAkJOUExQjZGOTcxNTg4NjlDODAw
MTFBOEM0IC8qIEpTRE9NU3RyaW5nTGlzdEN1c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QTFCNkY5NjE1ODg2OUM4MDAxMUE4QzQgLyogSlNE
T01TdHJpbmdMaXN0Q3VzdG9tLmNwcCAqLzsgfTsKIAkJOUIwRkIxOTExNDBEQjU3OTAwMjI1ODhG
IC8qIEhUVFBWYWxpZGF0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDlCMEZCMThGMTQwREI1NzkwMDIyNTg4RiAvKiBIVFRQVmFsaWRhdGlvbi5j
cHAgKi87IH07CiAJCTlCMEZCMTkyMTQwREI1NzkwMDIyNTg4RiAvKiBIVFRQVmFsaWRhdGlvbi5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUIwRkIxOTAx
NDBEQjU3OTAwMjI1ODhGIC8qIEhUVFBWYWxpZGF0aW9uLmggKi87IH07CisJCTlCMUFCMDdDMTY0
OEM3QzQwMDUxRjNGMiAvKiBKU0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uQ3VzdG9tLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlCMUFCMDdCMTY0
OEM3QzQwMDUxRjNGMiAvKiBKU0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uQ3VzdG9tLmNwcCAq
LzsgfTsKIAkJOUIyNERFOEUxNTE5NEI5NTAwQzU5QzI3IC8qIEhUTUxCRElFbGVtZW50LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QjI0REU4QzE1MTk0
Qjk1MDBDNTlDMjcgLyogSFRNTEJESUVsZW1lbnQuaCAqLzsgfTsKIAkJOUIyQjdBQzExNTA5ODUw
QTAwODkzMkNDIC8qIE1pY3JvRGF0YUl0ZW1WYWx1ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QjJGN0NGNzE0NTYyMTIwMDA3RjhCNTAgLyogTWlj
cm9EYXRhSXRlbVZhbHVlLmNwcCAqLzsgfTsKIAkJOUIyRDhBNzkxNDk5N0NDRjAwRUNFRjNFIC8q
IFVuZG9TdGVwLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA5QjJEOEE3ODE0OTk3Q0NGMDBFQ0VGM0UgLyogVW5kb1N0ZXAuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMzc2MCw2ICszNzYxLDggQEAKIAkJ
OUJDNkMyMUMxM0NDQzk3QjAwOEUwMzM3IC8qIEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlCQzZDMjFB
MTNDQ0M5N0IwMDhFMDMzNyAvKiBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5jcHAgKi87IH07
CiAJCTlCRDBCRjkzMTJBNDJCRjUwMDcyRkQ0MyAvKiBTY29wZWRFdmVudFF1ZXVlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QkQwQkY5MTEyQTQyQkY1
MDA3MkZENDMgLyogU2NvcGVkRXZlbnRRdWV1ZS5oICovOyB9OwogCQk5QkQwQkY5NDEyQTQyQkY1
MDA3MkZENDMgLyogU2NvcGVkRXZlbnRRdWV1ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QkQwQkY5MjEyQTQyQkY1MDA3MkZENDMgLyogU2NvcGVk
RXZlbnRRdWV1ZS5jcHAgKi87IH07CisJCTlCRjlBODgwMTY0OEREMkYwMDFDNkIyMyAvKiBKU0hU
TUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDlCRjlBODdFMTY0OEREMkYwMDFDNkIyMyAvKiBKU0hUTUxGb3Jt
Q29udHJvbHNDb2xsZWN0aW9uLmNwcCAqLzsgfTsKKwkJOUJGOUE4ODExNjQ4REQyRjAwMUM2QjIz
IC8qIEpTSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlCRjlBODdGMTY0OEREMkYwMDFDNkIyMyAvKiBKU0hU
TUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmggKi87IH07CiAJCTlGMEQ2QjJFMTIxQkZFQkEwMDZD
MDI4OCAvKiBJbnNwZWN0b3JQcm9maWxlckFnZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlGMEQ2QjJDMTIxQkZFQkEwMDZDMDI4OCAvKiBJbnNw
ZWN0b3JQcm9maWxlckFnZW50LmNwcCAqLzsgfTsKIAkJOUYwRDZCMkYxMjFCRkVCQTAwNkMwMjg4
IC8qIEluc3BlY3RvclByb2ZpbGVyQWdlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDlGMEQ2QjJEMTIxQkZFQkEwMDZDMDI4OCAvKiBJbnNwZWN0b3JQ
cm9maWxlckFnZW50LmggKi87IH07CiAJCTlGM0I5NDdFMTIyNDE3NTgwMDUzMDRFNyAvKiBTY3Jp
cHRIZWFwU25hcHNob3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDlGM0I5NDdEMTIyNDE3NTgwMDUzMDRFNyAvKiBTY3JpcHRIZWFwU25hcHNob3QuaCAq
LzsgfTsKQEAgLTQzNDcsOCArNDM1MCw4IEBACiAJCUE4RDA2NUFFMEEyNDQ2Q0QwMDVFNzIwMyAv
KiBKU0hUTUxGb3JtRWxlbWVudEN1c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBBOEQwNjVBRDBBMjQ0NkNEMDA1RTcyMDMgLyogSlNIVE1MRm9y
bUVsZW1lbnRDdXN0b20uY3BwICovOyB9OwogCQlBOEQwNkIzOTBBMjY1RENEMDA1RTcyMDMgLyog
SFRNTE5hbWVzLmggaW4gQ29weSBHZW5lcmF0ZWQgSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBOEQwNkIzNzBBMjY1RENEMDA1RTcyMDMgLyogSFRNTE5hbWVzLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoKTsgfTsgfTsKIAkJQThEMDZCM0EwQTI2NURD
RDAwNUU3MjAzIC8qIEhUTUxOYW1lcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBOEQwNkIzODBBMjY1RENEMDA1RTcyMDMgLyogSFRNTE5hbWVzLmNw
cCAqLzsgfTsKLQkJQThERjNGQ0UwOTdGQTBGQzAwNTI5ODFCIC8qIEhUTUxGb3JtQ29sbGVjdGlv
bi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThERjNG
QzYwOTdGQTBGQjAwNTI5ODFCIC8qIEhUTUxGb3JtQ29sbGVjdGlvbi5oICovOyB9OwotCQlBOERG
M0ZDRjA5N0ZBMEZDMDA1Mjk4MUIgLyogSFRNTEZvcm1Db2xsZWN0aW9uLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4REYzRkM3MDk3RkEwRkIwMDUy
OTgxQiAvKiBIVE1MRm9ybUNvbGxlY3Rpb24uY3BwICovOyB9OworCQlBOERGM0ZDRTA5N0ZBMEZD
MDA1Mjk4MUIgLyogSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4REYzRkM2MDk3RkEwRkIwMDUyOTgxQiAv
KiBIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5oICovOyB9OworCQlBOERGM0ZDRjA5N0ZBMEZD
MDA1Mjk4MUIgLyogSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThERjNGQzcwOTdGQTBGQjAwNTI5ODFC
IC8qIEhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmNwcCAqLzsgfTsKIAkJQThERjNGRDAwOTdG
QTBGQzAwNTI5ODFCIC8qIEhUTUxDb2xsZWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBOERGM0ZDODA5N0ZBMEZCMDA1Mjk4MUIgLyogSFRNTENv
bGxlY3Rpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQlBOERGM0ZEMTA5N0ZBMEZDMDA1Mjk4MUIgLyogSFRNTENvbGxlY3Rpb24uY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThERjNGQzkwOTdGQTBG
QjAwNTI5ODFCIC8qIEhUTUxDb2xsZWN0aW9uLmNwcCAqLzsgfTsKIAkJQThERjNGRDIwOTdGQTBG
QzAwNTI5ODFCIC8qIEhUTUxCYXNlRm9udEVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4REYzRkNBMDk3RkEwRkIwMDUyOTgxQiAvKiBIVE1M
QmFzZUZvbnRFbGVtZW50LmggKi87IH07CkBAIC0xMTAxMCw2ICsxMTAxMyw4IEBACiAJCTlBMUI2
Rjk2MTU4ODY5QzgwMDExQThDNCAvKiBKU0RPTVN0cmluZ0xpc3RDdXN0b20uY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNET01TdHJpbmdMaXN0Q3VzdG9tLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUIwRkIxOEYxNDBEQjU3OTAwMjI1ODhGIC8q
IEhUVFBWYWxpZGF0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEhUVFBWYWxpZGF0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUIwRkIx
OTAxNDBEQjU3OTAwMjI1ODhGIC8qIEhUVFBWYWxpZGF0aW9uLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEhUVFBWYWxpZGF0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTlCMUFCMDc5MTY0OEM2OUQwMDUxRjNGMiAvKiBIVE1MRm9ybUNvbnRyb2xzQ29sbGVj
dGlvbi5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSB0ZXh0OyBwYXRoID0gSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uaWRsOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk5QjFBQjA3QjE2NDhDN0M0MDA1MUYzRjIgLyogSlNIVE1MRm9y
bUNvbnRyb2xzQ29sbGVjdGlvbkN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBKU0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uQ3VzdG9tLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUIyNERFOEMxNTE5NEI5NTAwQzU5QzI3IC8qIEhUTUxC
RElFbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhUTUxCRElFbGVt
ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlCMkQ4QTc4MTQ5OTdDQ0YwMEVD
RUYzRSAvKiBVbmRvU3RlcC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBVbmRv
U3RlcC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5QjJGN0NGNzE0NTYyMTIwMDA3
RjhCNTAgLyogTWljcm9EYXRhSXRlbVZhbHVlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IE1pY3JvRGF0YUl0ZW1WYWx1ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC0xMTAyOSw2ICsxMTAzNCw4IEBACiAJCTlCQzZDMjFBMTNDQ0M5N0IwMDhFMDMz
NyAvKiBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlCRDBCRjkxMTJBNDJCRjUwMDcyRkQ0MyAvKiBTY29wZWRF
dmVudFF1ZXVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjb3BlZEV2ZW50
UXVldWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUJEMEJGOTIxMkE0MkJGNTAw
NzJGRDQzIC8qIFNjb3BlZEV2ZW50UXVldWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gU2NvcGVkRXZlbnRRdWV1ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTlCRjlBODdFMTY0OEREMkYwMDFDNkIyMyAvKiBKU0hUTUxGb3JtQ29udHJvbHNDb2xs
ZWN0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTSFRNTEZv
cm1Db250cm9sc0NvbGxlY3Rpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5
QkY5QTg3RjE2NDhERDJGMDAxQzZCMjMgLyogSlNIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0hUTUxGb3JtQ29udHJvbHNDb2xs
ZWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlGMEQ2QjJDMTIxQkZFQkEw
MDZDMDI4OCAvKiBJbnNwZWN0b3JQcm9maWxlckFnZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEluc3BlY3RvclByb2ZpbGVyQWdlbnQuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk5RjBENkIyRDEyMUJGRUJBMDA2QzAyODggLyogSW5zcGVjdG9y
UHJvZmlsZXJBZ2VudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnNwZWN0
b3JQcm9maWxlckFnZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlGM0I5NDdE
MTIyNDE3NTgwMDUzMDRFNyAvKiBTY3JpcHRIZWFwU25hcHNob3QuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gU2NyaXB0SGVhcFNuYXBzaG90Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC0xMTUxNCw4ICsxMTUyMSw4IEBACiAJCUE4RDA2NUFEMEEyNDQ2Q0QwMDVF
NzIwMyAvKiBKU0hUTUxGb3JtRWxlbWVudEN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBKU0hUTUxGb3JtRWxlbWVudEN1c3RvbS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUE4RDA2QjM3MEEyNjVEQ0QwMDVFNzIwMyAvKiBIVE1MTmFtZXMu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhUTUxOYW1lcy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlBOEQwNkIzODBBMjY1RENEMDA1RTcyMDMgLyogSFRNTE5h
bWVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBIVE1MTmFtZXMu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlBOERGM0ZDNjA5N0ZBMEZCMDA1Mjk4
MUIgLyogSFRNTEZvcm1Db2xsZWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBIVE1MRm9ybUNvbGxlY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
QThERjNGQzcwOTdGQTBGQjAwNTI5ODFCIC8qIEhUTUxGb3JtQ29sbGVjdGlvbi5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSFRNTEZvcm1Db2xsZWN0aW9uLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQThERjNGQzYwOTdGQTBGQjAwNTI5ODFCIC8q
IEhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlBOERGM0ZDNzA5N0ZBMEZCMDA1Mjk4MUIgLyogSFRNTEZvcm1Db250cm9sc0Nv
bGxlY3Rpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEhUTUxG
b3JtQ29udHJvbHNDb2xsZWN0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
QThERjNGQzgwOTdGQTBGQjAwNTI5ODFCIC8qIEhUTUxDb2xsZWN0aW9uLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBIVE1MQ29sbGVjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlBOERGM0ZDOTA5N0ZBMEZCMDA1Mjk4MUIgLyogSFRNTENvbGxlY3Rpb24u
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEhUTUxDb2xsZWN0aW9u
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQThERjNGQ0EwOTdGQTBGQjAwNTI5
ODFCIC8qIEhUTUxCYXNlRm9udEVsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEhUTUxCYXNlRm9udEVsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTE3NTMwLDggKzE3NTM3LDkgQEAKIAkJCQlBOENGRjc5ODBBMTU2OTc4MDAwQTQyMzQgLyog
SFRNTEZvbnRFbGVtZW50LmNwcCAqLywKIAkJCQlBOENGRjc5QzBBMTU2OTc4MDAwQTQyMzQgLyog
SFRNTEZvbnRFbGVtZW50LmggKi8sCiAJCQkJMUFFMkE5RjUwQTFDREE1NzAwQjQyQjI1IC8qIEhU
TUxGb250RWxlbWVudC5pZGwgKi8sCi0JCQkJQThERjNGQzcwOTdGQTBGQjAwNTI5ODFCIC8qIEhU
TUxGb3JtQ29sbGVjdGlvbi5jcHAgKi8sCi0JCQkJQThERjNGQzYwOTdGQTBGQjAwNTI5ODFCIC8q
IEhUTUxGb3JtQ29sbGVjdGlvbi5oICovLAorCQkJCUE4REYzRkM3MDk3RkEwRkIwMDUyOTgxQiAv
KiBIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5jcHAgKi8sCisJCQkJQThERjNGQzYwOTdGQTBG
QjAwNTI5ODFCIC8qIEhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmggKi8sCisJCQkJOUIxQUIw
NzkxNjQ4QzY5RDAwNTFGM0YyIC8qIEhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmlkbCAqLywK
IAkJCQlBODEzNjlCMzA5NzM3NEY1MDBENzQ0NjMgLyogSFRNTEZvcm1Db250cm9sRWxlbWVudC5j
cHAgKi8sCiAJCQkJQTgxMzY5QjIwOTczNzRGNTAwRDc0NDYzIC8qIEhUTUxGb3JtQ29udHJvbEVs
ZW1lbnQuaCAqLywKIAkJCQlFMTRGMUM0MjE0QjVEQUM2MDBFQTkwMDkgLyogSFRNTEZvcm1Db250
cm9sRWxlbWVudFdpdGhTdGF0ZS5jcHAgKi8sCkBAIC0xODQxOSw2ICsxODQyNyw4IEBACiAJCQkJ
MUFFMkFBMTMwQTFDREFCMzAwQjQyQjI1IC8qIEpTSFRNTEZpZWxkU2V0RWxlbWVudC5oICovLAog
CQkJCTFBRTJBQTE0MEExQ0RBQjMwMEI0MkIyNSAvKiBKU0hUTUxGb250RWxlbWVudC5jcHAgKi8s
CiAJCQkJMUFFMkFBMTUwQTFDREFCMzAwQjQyQjI1IC8qIEpTSFRNTEZvbnRFbGVtZW50LmggKi8s
CisJCQkJOUJGOUE4N0UxNjQ4REQyRjAwMUM2QjIzIC8qIEpTSFRNTEZvcm1Db250cm9sc0NvbGxl
Y3Rpb24uY3BwICovLAorCQkJCTlCRjlBODdGMTY0OEREMkYwMDFDNkIyMyAvKiBKU0hUTUxGb3Jt
Q29udHJvbHNDb2xsZWN0aW9uLmggKi8sCiAJCQkJQThEMDY0RjkwQTIzQzBDQzAwNUU3MjAzIC8q
IEpTSFRNTEZvcm1FbGVtZW50LmNwcCAqLywKIAkJCQlBOEQwNjRGQTBBMjNDMENDMDA1RTcyMDMg
LyogSlNIVE1MRm9ybUVsZW1lbnQuaCAqLywKIAkJCQlCQzQ5MThDMDBCRkVBMDUwMDA5RDYzMTYg
LyogSlNIVE1MRnJhbWVFbGVtZW50LmNwcCAqLywKQEAgLTIwNDY0LDYgKzIwNDc0LDcgQEAKIAkJ
CQlCQzU4MjNGNDBDMEE5OERGMDA1M0YxQjUgLyogSlNIVE1MRWxlbWVudEN1c3RvbS5jcHAgKi8s
CiAJCQkJQkM2RDQ0QkQwQzA3RUZCNjAwNzJEMkM5IC8qIEpTSFRNTEVtYmVkRWxlbWVudEN1c3Rv
bS5jcHAgKi8sCiAJCQkJRTFBRDE0MjAxMjk1RUE2QjAwQUNBOTg5IC8qIEpTSFRNTEVtYmVkRWxl
bWVudEN1c3RvbS5oICovLAorCQkJCTlCMUFCMDdCMTY0OEM3QzQwMDUxRjNGMiAvKiBKU0hUTUxG
b3JtQ29udHJvbHNDb2xsZWN0aW9uQ3VzdG9tLmNwcCAqLywKIAkJCQlBOEQwNjVBRDBBMjQ0NkNE
MDA1RTcyMDMgLyogSlNIVE1MRm9ybUVsZW1lbnRDdXN0b20uY3BwICovLAogCQkJCUJDMkVEN0E0
MEM2QzBGMzYwMDkyMEJGRiAvKiBKU0hUTUxGcmFtZUVsZW1lbnRDdXN0b20uY3BwICovLAogCQkJ
CUJDRDQxQUJBMEMwNjBERTgwMEMwRTQ0NiAvKiBKU0hUTUxGcmFtZVNldEVsZW1lbnRDdXN0b20u
Y3BwICovLApAQCAtMjM3MTEsNyArMjM3MjIsNyBAQAogCQkJCUE4MTM2OUQ0MDk3Mzc0RjYwMEQ3
NDQ2MyAvKiBIVE1MRmllbGRTZXRFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlBOENGRjdB
NjBBMTU2OTc4MDAwQTQyMzQgLyogSFRNTEZvbnRFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJ
CQk5NzdCMzg2RjEyMjg4M0U5MDBCODFGRjggLyogSFRNTEZvcm1hdHRpbmdFbGVtZW50TGlzdC5o
IGluIEhlYWRlcnMgKi8sCi0JCQkJQThERjNGQ0UwOTdGQTBGQzAwNTI5ODFCIC8qIEhUTUxGb3Jt
Q29sbGVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJQThERjNGQ0UwOTdGQTBGQzAwNTI5ODFC
IC8qIEhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlBODEz
NjlDRTA5NzM3NEY2MDBENzQ0NjMgLyogSFRNTEZvcm1Db250cm9sRWxlbWVudC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJRTE0RjFDNDUxNEI1REFDNjAwRUE5MDA5IC8qIEhUTUxGb3JtQ29udHJvbEVs
ZW1lbnRXaXRoU3RhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4MTM2OUQwMDk3Mzc0RjYwMEQ3
NDQ2MyAvKiBIVE1MRm9ybUVsZW1lbnQuaCBpbiBIZWFkZXJzICovLApAQCAtMjQwOTgsNiArMjQx
MDksNyBAQAogCQkJCUUxQUQxNDIxMTI5NUVBNkIwMEFDQTk4OSAvKiBKU0hUTUxFbWJlZEVsZW1l
bnRDdXN0b20uaCBpbiBIZWFkZXJzICovLAogCQkJCTFBRTJBQTI3MEExQ0RBQjQwMEI0MkIyNSAv
KiBKU0hUTUxGaWVsZFNldEVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBRTJBQTI5MEEx
Q0RBQjQwMEI0MkIyNSAvKiBKU0hUTUxGb250RWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
OUJGOUE4ODExNjQ4REQyRjAwMUM2QjIzIC8qIEpTSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24u
aCBpbiBIZWFkZXJzICovLAogCQkJCUE4RDA2NEZDMEEyM0MwQ0MwMDVFNzIwMyAvKiBKU0hUTUxG
b3JtRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM0OTE4QzcwQkZFQTA1MDAwOUQ2MzE2
IC8qIEpTSFRNTEZyYW1lRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM5MjZGODEwQzA1
NTI0NzAwODI3NzZCIC8qIEpTSFRNTEZyYW1lU2V0RWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCkBA
IC0yNjkyMSw3ICsyNjkzMyw3IEBACiAJCQkJQTgxMzY5RDUwOTczNzRGNjAwRDc0NDYzIC8qIEhU
TUxGaWVsZFNldEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQThDRkY3QTIwQTE1Njk3
ODAwMEE0MjM0IC8qIEhUTUxGb250RWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5NzdC
Mzg2RTEyMjg4M0U5MDBCODFGRjggLyogSFRNTEZvcm1hdHRpbmdFbGVtZW50TGlzdC5jcHAgaW4g
U291cmNlcyAqLywKLQkJCQlBOERGM0ZDRjA5N0ZBMEZDMDA1Mjk4MUIgLyogSFRNTEZvcm1Db2xs
ZWN0aW9uLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUE4REYzRkNGMDk3RkEwRkMwMDUyOTgxQiAv
KiBIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBODEz
NjlDRjA5NzM3NEY2MDBENzQ0NjMgLyogSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlFMTRGMUM0NDE0QjVEQUM2MDBFQTkwMDkgLyogSFRNTEZvcm1Db250cm9s
RWxlbWVudFdpdGhTdGF0ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBODEzNjlEMTA5NzM3NEY2
MDBENzQ0NjMgLyogSFRNTEZvcm1FbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLApAQCAtMjczMzYs
NiArMjczNDgsOCBAQAogCQkJCUJDNkQ0NEJFMEMwN0VGQjYwMDcyRDJDOSAvKiBKU0hUTUxFbWJl
ZEVsZW1lbnRDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUFFMkFBMjYwQTFDREFCNDAw
QjQyQjI1IC8qIEpTSFRNTEZpZWxkU2V0RWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkx
QUUyQUEyODBBMUNEQUI0MDBCNDJCMjUgLyogSlNIVE1MRm9udEVsZW1lbnQuY3BwIGluIFNvdXJj
ZXMgKi8sCisJCQkJOUJGOUE4ODAxNjQ4REQyRjAwMUM2QjIzIC8qIEpTSFRNTEZvcm1Db250cm9s
c0NvbGxlY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJOUIxQUIwN0MxNjQ4QzdDNDAwNTFG
M0YyIC8qIEpTSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb25DdXN0b20uY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQThEMDY0RkIwQTIzQzBDQzAwNUU3MjAzIC8qIEpTSFRNTEZvcm1FbGVtZW50LmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUE4RDA2NUFFMEEyNDQ2Q0QwMDVFNzIwMyAvKiBKU0hUTUxG
b3JtRWxlbWVudEN1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzQ5MThDNjBCRkVBMDUw
MDA5RDYzMTYgLyogSlNIVE1MRnJhbWVFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLApJbmRleDog
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNCaW5kaW5nc0FsbEluT25lLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0JpbmRpbmdzQWxsSW5PbmUuY3Bw
CShyZXZpc2lvbiAxMzQwOTIpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0JpbmRp
bmdzQWxsSW5PbmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04OSw2ICs4OSw3IEBACiAjaW5jbHVk
ZSAiSlNIVE1MRG9jdW1lbnRDdXN0b20uY3BwIgogI2luY2x1ZGUgIkpTSFRNTEVsZW1lbnRDdXN0
b20uY3BwIgogI2luY2x1ZGUgIkpTSFRNTEVtYmVkRWxlbWVudEN1c3RvbS5jcHAiCisjaW5jbHVk
ZSAiSlNIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbkN1c3RvbS5jcHAiCiAjaW5jbHVkZSAiSlNI
VE1MRm9ybUVsZW1lbnRDdXN0b20uY3BwIgogI2luY2x1ZGUgIkpTSFRNTEZyYW1lRWxlbWVudEN1
c3RvbS5jcHAiCiAjaW5jbHVkZSAiSlNIVE1MRnJhbWVTZXRFbGVtZW50Q3VzdG9tLmNwcCIKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEFsbENvbGxlY3Rpb25DdXN0b20u
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEFsbENv
bGxlY3Rpb25DdXN0b20uY3BwCShyZXZpc2lvbiAxMzQwOTIpCisrKyBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0hUTUxBbGxDb2xsZWN0aW9uQ3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNTAsOSArNTAsOCBAQCBzdGF0aWMgSlNWYWx1ZSBnZXROYW1lZEl0ZW1zKEV4ZWNTdGF0ZSog
CiAgICAgaWYgKG5hbWVkSXRlbXMuc2l6ZSgpID09IDEpCiAgICAgICAgIHJldHVybiB0b0pTKGV4
ZWMsIGNvbGxlY3Rpb24tPmdsb2JhbE9iamVjdCgpLCBuYW1lZEl0ZW1zWzBdLmdldCgpKTsKIAot
ICAgIC8vIEZJWE1FOiBIVE1MNSBzcGVjaWZpZXMgdGhhdCB0aGlzIHNob3VsZCBiZSBhIER5bmFt
aWNOb2RlTGlzdC4KLSAgICAvLyBGSVhNRTogSFRNTDUgc3BlY2lmaWVzIHRoYXQgbm9uLUhUTUxP
cHRpb25zQ29sbGVjdGlvbiBjb2xsZWN0aW9ucyBzaG91bGQgcmV0dXJuCi0gICAgLy8gdGhlIGZp
cnN0IG1hdGNoaW5nIGl0ZW0gaW5zdGVhZCBvZiBhIE5vZGVMaXN0LgorICAgIC8vIEZJWE1FOiBI
VE1MNSBzcGVjaWZpY2F0aW9uIHNheXMgdGhpcyBzaG91bGQgYmUgYSBIVE1MQ29sbGVjdGlvbi4K
KyAgICAvLyBodHRwOi8vd3d3LndoYXR3Zy5vcmcvc3BlY3Mvd2ViLWFwcHMvY3VycmVudC13b3Jr
L211bHRpcGFnZS9jb21tb24tZG9tLWludGVyZmFjZXMuaHRtbCNodG1sYWxsY29sbGVjdGlvbgog
ICAgIHJldHVybiB0b0pTKGV4ZWMsIGNvbGxlY3Rpb24tPmdsb2JhbE9iamVjdCgpLCBTdGF0aWNO
b2RlTGlzdDo6YWRvcHQobmFtZWRJdGVtcykuZ2V0KCkpOwogfQogCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0hUTUxDb2xsZWN0aW9uQ3VzdG9tLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxDb2xsZWN0aW9uQ3VzdG9tLmNwcAko
cmV2aXNpb24gMTM0MDkyKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MQ29s
bGVjdGlvbkN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIwLDExICsyMCwxMyBAQAogI2lu
Y2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkpTSFRNTENvbGxlY3Rpb24uaCIKIAorI2luY2x1
ZGUgIkhUTUxBbGxDb2xsZWN0aW9uLmgiCiAjaW5jbHVkZSAiSFRNTENvbGxlY3Rpb24uaCIKKyNp
bmNsdWRlICJIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5oIgogI2luY2x1ZGUgIkhUTUxPcHRp
b25zQ29sbGVjdGlvbi5oIgotI2luY2x1ZGUgIkhUTUxBbGxDb2xsZWN0aW9uLmgiCiAjaW5jbHVk
ZSAiSlNET01CaW5kaW5nLmgiCiAjaW5jbHVkZSAiSlNIVE1MQWxsQ29sbGVjdGlvbi5oIgorI2lu
Y2x1ZGUgIkpTSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uaCIKICNpbmNsdWRlICJKU0hUTUxP
cHRpb25zQ29sbGVjdGlvbi5oIgogI2luY2x1ZGUgIkpTTm9kZS5oIgogI2luY2x1ZGUgIkpTTm9k
ZUxpc3QuaCIKQEAgLTM5LDI2ICs0MSw2IEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIEpTVmFsdWUgZ2V0TmFtZWRJdGVtcyhFeGVjU3RhdGUq
IGV4ZWMsIEpTSFRNTENvbGxlY3Rpb24qIGNvbGxlY3Rpb24sIFByb3BlcnR5TmFtZSBwcm9wZXJ0
eU5hbWUpCi17Ci0gICAgVmVjdG9yPFJlZlB0cjxOb2RlPiA+IG5hbWVkSXRlbXM7Ci0gICAgY29u
c3QgQXRvbWljU3RyaW5nJiBuYW1lID0gcHJvcGVydHlOYW1lVG9BdG9taWNTdHJpbmcocHJvcGVy
dHlOYW1lKTsKLSAgICBjb2xsZWN0aW9uLT5pbXBsKCktPm5hbWVkSXRlbXMobmFtZSwgbmFtZWRJ
dGVtcyk7Ci0KLSAgICBpZiAobmFtZWRJdGVtcy5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBq
c1VuZGVmaW5lZCgpOwotICAgIGlmIChuYW1lZEl0ZW1zLnNpemUoKSA9PSAxKQotICAgICAgICBy
ZXR1cm4gdG9KUyhleGVjLCBjb2xsZWN0aW9uLT5nbG9iYWxPYmplY3QoKSwgbmFtZWRJdGVtc1sw
XS5nZXQoKSk7Ci0KLSAgICBpZiAoY29sbGVjdGlvbi0+aW1wbCgpLT50eXBlKCkgPT0gRm9ybUNv
bnRyb2xzKQotICAgICAgIHJldHVybiB0b0pTKGV4ZWMsIGNvbGxlY3Rpb24tPmdsb2JhbE9iamVj
dCgpLCBjb2xsZWN0aW9uLT5pbXBsKCktPmJhc2UoKS0+cmFkaW9Ob2RlTGlzdChuYW1lKS5nZXQo
KSk7Ci0KLSAgICAvLyBGSVhNRTogSFRNTDUgc3BlY2lmaWVzIHRoYXQgdGhpcyBzaG91bGQgYmUg
YSBEeW5hbWljTm9kZUxpc3QuCi0gICAgLy8gRklYTUU6IEhUTUw1IHNwZWNpZmllcyB0aGF0IG5v
bi1IVE1MT3B0aW9uc0NvbGxlY3Rpb24gY29sbGVjdGlvbnMgc2hvdWxkIHJldHVybgotICAgIC8v
IHRoZSBmaXJzdCBtYXRjaGluZyBpdGVtIGluc3RlYWQgb2YgYSBOb2RlTGlzdC4KLSAgICByZXR1
cm4gdG9KUyhleGVjLCBjb2xsZWN0aW9uLT5nbG9iYWxPYmplY3QoKSwgU3RhdGljTm9kZUxpc3Q6
OmFkb3B0KG5hbWVkSXRlbXMpLmdldCgpKTsKLX0KLQogYm9vbCBKU0hUTUxDb2xsZWN0aW9uOjpj
YW5HZXRJdGVtc0Zvck5hbWUoRXhlY1N0YXRlKiwgSFRNTENvbGxlY3Rpb24qIGNvbGxlY3Rpb24s
IFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCiB7CiAgICAgcmV0dXJuIGNvbGxlY3Rpb24tPmhh
c05hbWVkSXRlbShwcm9wZXJ0eU5hbWVUb0F0b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUpKTsKQEAg
LTY2LDEzICs0OCw5IEBAIGJvb2wgSlNIVE1MQ29sbGVjdGlvbjo6Y2FuR2V0SXRlbXNGb3JOYW0K
IAogSlNWYWx1ZSBKU0hUTUxDb2xsZWN0aW9uOjpuYW1lR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywg
SlNWYWx1ZSBzbG90QmFzZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsKLSAgICBKU0hU
TUxDb2xsZWN0aW9uKiB0aGlzT2JqID0ganNDYXN0PEpTSFRNTENvbGxlY3Rpb24qPihhc09iamVj
dChzbG90QmFzZSkpOwotICAgIHJldHVybiBnZXROYW1lZEl0ZW1zKGV4ZWMsIHRoaXNPYmosIHBy
b3BlcnR5TmFtZSk7Ci19Ci0KLUpTVmFsdWUgSlNIVE1MQ29sbGVjdGlvbjo6bmFtZWRJdGVtKEV4
ZWNTdGF0ZSogZXhlYykKLXsKLSAgICByZXR1cm4gZ2V0TmFtZWRJdGVtcyhleGVjLCB0aGlzLCBJ
ZGVudGlmaWVyKGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KDApLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShl
eGVjKSkpOworICAgIEpTSFRNTENvbGxlY3Rpb24qIGNvbGxlY3Rpb24gPSBqc0Nhc3Q8SlNIVE1M
Q29sbGVjdGlvbio+KGFzT2JqZWN0KHNsb3RCYXNlKSk7CisgICAgY29uc3QgQXRvbWljU3RyaW5n
JiBuYW1lID0gcHJvcGVydHlOYW1lVG9BdG9taWNTdHJpbmcocHJvcGVydHlOYW1lKTsKKyAgICBy
ZXR1cm4gdG9KUyhleGVjLCBjb2xsZWN0aW9uLT5nbG9iYWxPYmplY3QoKSwgY29sbGVjdGlvbi0+
aW1wbCgpLT5uYW1lZEl0ZW0obmFtZSkpOwogfQogCiBKU1ZhbHVlIHRvSlMoRXhlY1N0YXRlKiBl
eGVjLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBIVE1MQ29sbGVjdGlvbiogY29s
bGVjdGlvbikKQEAgLTg2LDE4ICs2NCwxNyBAQCBKU1ZhbHVlIHRvSlMoRXhlY1N0YXRlKiBleGVj
LCBKU0RPTUdsb2JhCiAgICAgICAgIHJldHVybiB3cmFwcGVyOwogCiAgICAgc3dpdGNoIChjb2xs
ZWN0aW9uLT50eXBlKCkpIHsKLSAgICAgICAgY2FzZSBTZWxlY3RPcHRpb25zOgotICAgICAgICAg
ICAgd3JhcHBlciA9IENSRUFURV9ET01fV1JBUFBFUihleGVjLCBnbG9iYWxPYmplY3QsIEhUTUxP
cHRpb25zQ29sbGVjdGlvbiwgY29sbGVjdGlvbik7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgY2FzZSBEb2NBbGw6Ci0gICAgICAgICAgICB3cmFwcGVyID0gQ1JFQVRFX0RPTV9XUkFQUEVS
KGV4ZWMsIGdsb2JhbE9iamVjdCwgSFRNTEFsbENvbGxlY3Rpb24sIGNvbGxlY3Rpb24pOwotICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICB3cmFwcGVyID0g
Q1JFQVRFX0RPTV9XUkFQUEVSKGV4ZWMsIGdsb2JhbE9iamVjdCwgSFRNTENvbGxlY3Rpb24sIGNv
bGxlY3Rpb24pOwotICAgICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBGb3JtQ29udHJvbHM6Cisg
ICAgICAgIHJldHVybiBDUkVBVEVfRE9NX1dSQVBQRVIoZXhlYywgZ2xvYmFsT2JqZWN0LCBIVE1M
Rm9ybUNvbnRyb2xzQ29sbGVjdGlvbiwgY29sbGVjdGlvbik7CisgICAgY2FzZSBTZWxlY3RPcHRp
b25zOgorICAgICAgICByZXR1cm4gQ1JFQVRFX0RPTV9XUkFQUEVSKGV4ZWMsIGdsb2JhbE9iamVj
dCwgSFRNTE9wdGlvbnNDb2xsZWN0aW9uLCBjb2xsZWN0aW9uKTsKKyAgICBjYXNlIERvY0FsbDoK
KyAgICAgICAgcmV0dXJuIENSRUFURV9ET01fV1JBUFBFUihleGVjLCBnbG9iYWxPYmplY3QsIEhU
TUxBbGxDb2xsZWN0aW9uLCBjb2xsZWN0aW9uKTsKKyAgICBkZWZhdWx0OgorICAgICAgICBicmVh
azsKICAgICB9CiAKLSAgICByZXR1cm4gd3JhcHBlcjsKKyAgICByZXR1cm4gQ1JFQVRFX0RPTV9X
UkFQUEVSKGV4ZWMsIGdsb2JhbE9iamVjdCwgSFRNTENvbGxlY3Rpb24sIGNvbGxlY3Rpb24pOwog
fQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uQ3VzdG9tLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9u
Q3VzdG9tLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
SFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb25DdXN0b20uY3BwCShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDcxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA3LCAyMDA4IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsg
eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRl
cm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJs
aXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9u
IDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24u
CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQg
d2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZl
biB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2
ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vu
c2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIu
ICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMu
LCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0x
MzAxLCBVU0EuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkhUTUxGb3Jt
Q29udHJvbHNDb2xsZWN0aW9uLmgiCisKKworI2luY2x1ZGUgIkhUTUxBbGxDb2xsZWN0aW9uLmgi
CisjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCisjaW5jbHVkZSAiSlNIVE1MQ29sbGVjdGlvbi5o
IgorI2luY2x1ZGUgIkpTSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uaCIKKyNpbmNsdWRlICJK
U05vZGUuaCIKKyNpbmNsdWRlICJKU05vZGVMaXN0LmgiCisjaW5jbHVkZSAiSlNSYWRpb05vZGVM
aXN0LmgiCisjaW5jbHVkZSAiTm9kZS5oIgorI2luY2x1ZGUgIlJhZGlvTm9kZUxpc3QuaCIKKyNp
bmNsdWRlIDx3dGYvVmVjdG9yLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nLmg+
CisKK3VzaW5nIG5hbWVzcGFjZSBKU0M7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RhdGlj
IEpTVmFsdWUgZ2V0TmFtZWRJdGVtcyhFeGVjU3RhdGUqIGV4ZWMsIEpTSFRNTEZvcm1Db250cm9s
c0NvbGxlY3Rpb24qIGNvbGxlY3Rpb24sIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCit7Cisg
ICAgVmVjdG9yPFJlZlB0cjxOb2RlPiA+IG5hbWVkSXRlbXM7CisgICAgY29uc3QgQXRvbWljU3Ry
aW5nJiBuYW1lID0gcHJvcGVydHlOYW1lVG9BdG9taWNTdHJpbmcocHJvcGVydHlOYW1lKTsKKyAg
ICBjb2xsZWN0aW9uLT5pbXBsKCktPm5hbWVkSXRlbXMobmFtZSwgbmFtZWRJdGVtcyk7CisKKyAg
ICBpZiAobmFtZWRJdGVtcy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgp
OworICAgIGlmIChuYW1lZEl0ZW1zLnNpemUoKSA9PSAxKQorICAgICAgICByZXR1cm4gdG9KUyhl
eGVjLCBjb2xsZWN0aW9uLT5nbG9iYWxPYmplY3QoKSwgbmFtZWRJdGVtc1swXS5nZXQoKSk7CisK
KyAgICBBU1NFUlQoY29sbGVjdGlvbi0+aW1wbCgpLT50eXBlKCkgPT0gRm9ybUNvbnRyb2xzKTsK
KyAgICByZXR1cm4gdG9KUyhleGVjLCBjb2xsZWN0aW9uLT5nbG9iYWxPYmplY3QoKSwgY29sbGVj
dGlvbi0+aW1wbCgpLT5iYXNlKCktPnJhZGlvTm9kZUxpc3QobmFtZSkuZ2V0KCkpOworfQorCiti
b29sIEpTSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb246OmNhbkdldEl0ZW1zRm9yTmFtZShFeGVj
U3RhdGUqLCBIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbiogY29sbGVjdGlvbiwgUHJvcGVydHlO
YW1lIHByb3BlcnR5TmFtZSkKK3sKKyAgICByZXR1cm4gY29sbGVjdGlvbi0+aGFzTmFtZWRJdGVt
KHByb3BlcnR5TmFtZVRvQXRvbWljU3RyaW5nKHByb3BlcnR5TmFtZSkpOworfQorCitKU1ZhbHVl
IEpTSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb246Om5hbWVHZXR0ZXIoRXhlY1N0YXRlKiBleGVj
LCBKU1ZhbHVlIHNsb3RCYXNlLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQoreworICAgIEpT
SFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24qIHRoaXNPYmogPSBqc0Nhc3Q8SlNIVE1MRm9ybUNv
bnRyb2xzQ29sbGVjdGlvbio+KGFzT2JqZWN0KHNsb3RCYXNlKSk7CisgICAgcmV0dXJuIGdldE5h
bWVkSXRlbXMoZXhlYywgdGhpc09iaiwgcHJvcGVydHlOYW1lKTsKK30KKworSlNWYWx1ZSBKU0hU
TUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uOjpuYW1lZEl0ZW0oRXhlY1N0YXRlKiBleGVjKQorewor
ICAgIHJldHVybiBnZXROYW1lZEl0ZW1zKGV4ZWMsIHRoaXMsIElkZW50aWZpZXIoZXhlYywgZXhl
Yy0+YXJndW1lbnQoMCkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKSk7Cit9CisKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRN
TE9wdGlvbnNDb2xsZWN0aW9uQ3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0hUTUxPcHRpb25zQ29sbGVjdGlvbkN1c3RvbS5jcHAJKHJldmlzaW9u
IDEzNDA5MikKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTE9wdGlvbnNDb2xs
ZWN0aW9uQ3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgsNiArMjgsOCBAQAogI2luY2x1
ZGUgIkpTSFRNTE9wdGlvbkVsZW1lbnQuaCIKICNpbmNsdWRlICJKU0hUTUxTZWxlY3RFbGVtZW50
LmgiCiAjaW5jbHVkZSAiSlNIVE1MU2VsZWN0RWxlbWVudEN1c3RvbS5oIgorI2luY2x1ZGUgIkpT
Tm9kZUxpc3QuaCIKKyNpbmNsdWRlICJTdGF0aWNOb2RlTGlzdC5oIgogCiAjaW5jbHVkZSA8d3Rm
L01hdGhFeHRyYXMuaD4KIApAQCAtMzUsNiArMzcsMzcgQEAgdXNpbmcgbmFtZXNwYWNlIEpTQzsK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitzdGF0aWMgSlNWYWx1ZSBnZXROYW1lZEl0ZW1zKEV4
ZWNTdGF0ZSogZXhlYywgSlNIVE1MT3B0aW9uc0NvbGxlY3Rpb24qIGNvbGxlY3Rpb24sIFByb3Bl
cnR5TmFtZSBwcm9wZXJ0eU5hbWUpCit7CisgICAgVmVjdG9yPFJlZlB0cjxOb2RlPiA+IG5hbWVk
SXRlbXM7CisgICAgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lID0gcHJvcGVydHlOYW1lVG9BdG9t
aWNTdHJpbmcocHJvcGVydHlOYW1lKTsKKyAgICBjb2xsZWN0aW9uLT5pbXBsKCktPm5hbWVkSXRl
bXMobmFtZSwgbmFtZWRJdGVtcyk7CisKKyAgICBpZiAobmFtZWRJdGVtcy5pc0VtcHR5KCkpCisg
ICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworICAgIGlmIChuYW1lZEl0ZW1zLnNpemUoKSA9
PSAxKQorICAgICAgICByZXR1cm4gdG9KUyhleGVjLCBjb2xsZWN0aW9uLT5nbG9iYWxPYmplY3Qo
KSwgbmFtZWRJdGVtc1swXS5nZXQoKSk7CisKKyAgICAvLyBGSVhNRTogSFRNTDUgc3BlY2lmaWVz
IHRoYXQgdGhpcyBzaG91bGQgYmUgYSBEeW5hbWljTm9kZUxpc3QuCisgICAgcmV0dXJuIHRvSlMo
ZXhlYywgY29sbGVjdGlvbi0+Z2xvYmFsT2JqZWN0KCksIFN0YXRpY05vZGVMaXN0OjphZG9wdChu
YW1lZEl0ZW1zKS5nZXQoKSk7Cit9CisKK2Jvb2wgSlNIVE1MT3B0aW9uc0NvbGxlY3Rpb246OmNh
bkdldEl0ZW1zRm9yTmFtZShFeGVjU3RhdGUqLCBIVE1MT3B0aW9uc0NvbGxlY3Rpb24qIGNvbGxl
Y3Rpb24sIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCit7CisgICAgcmV0dXJuIGNvbGxlY3Rp
b24tPmhhc05hbWVkSXRlbShwcm9wZXJ0eU5hbWVUb0F0b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUp
KTsKK30KKworSlNWYWx1ZSBKU0hUTUxPcHRpb25zQ29sbGVjdGlvbjo6bmFtZUdldHRlcihFeGVj
U3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUp
Cit7CisgICAgSlNIVE1MT3B0aW9uc0NvbGxlY3Rpb24qIHRoaXNPYmogPSBqc0Nhc3Q8SlNIVE1M
T3B0aW9uc0NvbGxlY3Rpb24qPihhc09iamVjdChzbG90QmFzZSkpOworICAgIHJldHVybiBnZXRO
YW1lZEl0ZW1zKGV4ZWMsIHRoaXNPYmosIHByb3BlcnR5TmFtZSk7Cit9CisKK0pTVmFsdWUgSlNI
VE1MT3B0aW9uc0NvbGxlY3Rpb246Om5hbWVkSXRlbShFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAg
cmV0dXJuIGdldE5hbWVkSXRlbXMoZXhlYywgdGhpcywgSWRlbnRpZmllcihleGVjLCBleGVjLT5h
cmd1bWVudCgwKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpKTsKK30KKwogSlNWYWx1ZSBK
U0hUTUxPcHRpb25zQ29sbGVjdGlvbjo6bGVuZ3RoKEV4ZWNTdGF0ZSopIGNvbnN0CiB7CiAgICAg
SFRNTE9wdGlvbnNDb2xsZWN0aW9uKiBpbXAgPSBzdGF0aWNfY2FzdDxIVE1MT3B0aW9uc0NvbGxl
Y3Rpb24qPihpbXBsKCkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9D
b2RlR2VuZXJhdG9ySlMucG0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0JKHJldmlzaW9uIDEzNDA5MikKKysrIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCSh3b3JraW5nIGNvcHkp
CkBAIC00MDgsNyArNDA4LDcgQEAgc3ViIEdlbmVyYXRlR2V0T3duUHJvcGVydHlTbG90Qm9keQog
CiAgICAgbXkgQGdldE93blByb3BlcnR5U2xvdEltcGwgPSAoKTsKIAotICAgIGlmICgkaW50ZXJm
YWNlTmFtZSBlcSAiTmFtZWROb2RlTWFwIiBvciAkaW50ZXJmYWNlTmFtZSBlcSAiSFRNTENvbGxl
Y3Rpb24iIG9yICRpbnRlcmZhY2VOYW1lIGVxICJIVE1MQWxsQ29sbGVjdGlvbiIgb3IgJGludGVy
ZmFjZU5hbWUgZXEgIkhUTUxQcm9wZXJ0aWVzQ29sbGVjdGlvbiIpIHsKKyAgICBpZiAoJGludGVy
ZmFjZU5hbWUgZXEgIk5hbWVkTm9kZU1hcCIgb3IgJGludGVyZmFjZU5hbWUgPX4gL15IVE1MXHcq
Q29sbGVjdGlvbiQvKSB7CiAgICAgICAgIHB1c2goQGdldE93blByb3BlcnR5U2xvdEltcGwsICIg
ICAgJHtuYW1lc3BhY2VNYXliZX1KU1ZhbHVlIHByb3RvID0gdGhpc09iamVjdC0+cHJvdG90eXBl
KCk7XG4iKTsKICAgICAgICAgcHVzaChAZ2V0T3duUHJvcGVydHlTbG90SW1wbCwgIiAgICBpZiAo
cHJvdG8uaXNPYmplY3QoKSAmJiBqc0Nhc3Q8JHtuYW1lc3BhY2VNYXliZX1KU09iamVjdCo+KGFz
T2JqZWN0KHByb3RvKSktPmhhc1Byb3BlcnR5KGV4ZWMsIHByb3BlcnR5TmFtZSkpXG4iKTsKICAg
ICAgICAgcHVzaChAZ2V0T3duUHJvcGVydHlTbG90SW1wbCwgIiAgICAgICAgcmV0dXJuIGZhbHNl
O1xuXG4iKTsKQEAgLTUwMCw3ICs1MDAsNyBAQCBzdWIgR2VuZXJhdGVHZXRPd25Qcm9wZXJ0eURl
c2NyaXB0b3JCb2R5CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICByZXR1cm4g
ZmFsc2U7XG4iKTsKICAgICB9CiAgICAgCi0gICAgaWYgKCRpbnRlcmZhY2VOYW1lIGVxICJOYW1l
ZE5vZGVNYXAiIG9yICRpbnRlcmZhY2VOYW1lIGVxICJIVE1MQ29sbGVjdGlvbiIgb3IgJGludGVy
ZmFjZU5hbWUgZXEgIkhUTUxBbGxDb2xsZWN0aW9uIiBvciAkaW50ZXJmYWNlTmFtZSBlcSAiSFRN
TFByb3BlcnRpZXNDb2xsZWN0aW9uIikgeworICAgIGlmICgkaW50ZXJmYWNlTmFtZSBlcSAiTmFt
ZWROb2RlTWFwIiBvciAkaW50ZXJmYWNlTmFtZSA9fiAvXkhUTUxcdypDb2xsZWN0aW9uJC8pIHsK
ICAgICAgICAgcHVzaChAZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ySW1wbCwgIiAgICAke25hbWVz
cGFjZU1heWJlfUpTVmFsdWUgcHJvdG8gPSB0aGlzT2JqZWN0LT5wcm90b3R5cGUoKTtcbiIpOwog
ICAgICAgICBwdXNoKEBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JJbXBsLCAiICAgIGlmIChwcm90
by5pc09iamVjdCgpICYmIGpzQ2FzdDwke25hbWVzcGFjZU1heWJlfUpTT2JqZWN0Kj4oYXNPYmpl
Y3QocHJvdG8pKS0+aGFzUHJvcGVydHkoZXhlYywgcHJvcGVydHlOYW1lKSlcbiIpOwogICAgICAg
ICBwdXNoKEBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JJbXBsLCAiICAgICAgICByZXR1cm4gZmFs
c2U7XG5cbiIpOwpAQCAtMjQzNCw3ICsyNDM0LDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRp
b24KICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJldHVybiB0b0pTKGV4ZWMs
IHRoaXNPYmotPmdsb2JhbE9iamVjdCgpLCBzdGF0aWNfY2FzdDwkaW1wbENsYXNzTmFtZSo+KHRo
aXNPYmotPmltcGwoKSktPml0ZW0oaW5kZXgpKTtcbiIpOwogICAgICAgICB9CiAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAifVxuXG4iKTsKLSAgICAgICAgaWYgKCRpbnRlcmZhY2VOYW1lIGVx
ICJIVE1MQ29sbGVjdGlvbiIgb3IgJGludGVyZmFjZU5hbWUgZXEgIkhUTUxBbGxDb2xsZWN0aW9u
IiBvciAkaW50ZXJmYWNlTmFtZSBlcSAiUmFkaW9Ob2RlTGlzdCIpIHsKKyAgICAgICAgaWYgKCRp
bnRlcmZhY2VOYW1lID1+IC9eSFRNTFx3KkNvbGxlY3Rpb24kLyBvciAkaW50ZXJmYWNlTmFtZSBl
cSAiUmFkaW9Ob2RlTGlzdCIpIHsKICAgICAgICAgICAgICRpbXBsSW5jbHVkZXN7IkpTTm9kZS5o
In0gPSAxOwogICAgICAgICAgICAgJGltcGxJbmNsdWRlc3siTm9kZS5oIn0gPSAxOwogICAgICAg
ICB9CkBAIC0yNDUwLDcgKzI0NTAsNyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJuIGpzTmFOKCk7XG4iKTsKICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJuIEpTVmFsdWUocmVzdWx0KTtcbiIp
OwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIn1cblxuIik7Ci0gICAgICAgIGlmICgkaW50
ZXJmYWNlTmFtZSBlcSAiSFRNTENvbGxlY3Rpb24iIG9yICRpbnRlcmZhY2VOYW1lIGVxICJIVE1M
QWxsQ29sbGVjdGlvbiIpIHsKKyAgICAgICAgaWYgKCRpbnRlcmZhY2VOYW1lID1+IC9eSFRNTFx3
KkNvbGxlY3Rpb24kLykgewogICAgICAgICAgICAgJGltcGxJbmNsdWRlc3siSlNOb2RlLmgifSA9
IDE7CiAgICAgICAgICAgICAkaW1wbEluY2x1ZGVzeyJOb2RlLmgifSA9IDE7CiAgICAgICAgIH0K
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBt
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVy
YXRvclY4LnBtCShyZXZpc2lvbiAxMzQwOTIpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQkod29ya2luZyBjb3B5KQpAQCAtMjQ3OCwxMyArMjQ3
OCw2IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uTmFtZWRQcm9wZXJ0eUcKICAgICBteSAk
aW50ZXJmYWNlTmFtZSA9ICRkYXRhTm9kZS0+bmFtZTsKICAgICBteSAkaGFzQ3VzdG9tTmFtZWRH
ZXR0ZXIgPSAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b21OYW1lZEdldHRl
ciJ9IHx8ICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbUdldE93blByb3Bl
cnR5U2xvdCJ9OwogCi0gICAgIyBGSVhNRTogUmVtb3ZlIGhhcmQtY29kZWQgSFRNTE9wdGlvbnND
b2xsZWN0aW9uIHJlZmVyZW5jZSBieSBjaGFuZ2luZyBIVE1MT3B0aW9uc0NvbGxlY3Rpb24gdG8g
bm90IGluaGVyaXQKLSAgICAjIGZyb20gSFRNTENvbGxlY3Rpb24gcGVyIFczQyBzcGVjIChodHRw
Oi8vd3d3LnczLm9yZy9UUi8yMDAzL1JFQy1ET00tTGV2ZWwtMi1IVE1MLTIwMDMwMTA5L2h0bWwu
aHRtbCNIVE1MT3B0aW9uc0NvbGxlY3Rpb24pLgotICAgIGlmICgkaW50ZXJmYWNlTmFtZSBlcSAi
SFRNTE9wdGlvbnNDb2xsZWN0aW9uIikgewotICAgICAgICAkaW50ZXJmYWNlTmFtZSA9ICJIVE1M
Q29sbGVjdGlvbiI7Ci0gICAgICAgICRoYXNDdXN0b21OYW1lZEdldHRlciA9IDE7Ci0gICAgfQot
CiAgICAgaWYgKCRpbnRlcmZhY2VOYW1lIGVxICJIVE1MQXBwbGV0RWxlbWVudCIgfHwgJGludGVy
ZmFjZU5hbWUgZXEgIkhUTUxFbWJlZEVsZW1lbnQiIHx8ICRpbnRlcmZhY2VOYW1lIGVxICJIVE1M
T2JqZWN0RWxlbWVudCIpIHsKICAgICAgICAgJGhhc0N1c3RvbU5hbWVkR2V0dGVyID0gMTsKICAg
ICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MQWxsQ29s
bGVjdGlvbkN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvY3VzdG9tL1Y4SFRNTEFsbENvbGxlY3Rpb25DdXN0b20uY3BwCShyZXZpc2lvbiAxMzQwOTIp
CisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MQWxsQ29sbGVjdGlv
bkN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUxLDYgKzUxLDggQEAgc3RhdGljIHY4OjpI
YW5kbGU8djg6OlZhbHVlPiBnZXROYW1lZEl0ZQogICAgIGlmIChuYW1lZEl0ZW1zLnNpemUoKSA9
PSAxKQogICAgICAgICByZXR1cm4gdG9WOChuYW1lZEl0ZW1zLmF0KDApLnJlbGVhc2UoKSwgY3Jl
YXRpb25Db250ZXh0LCBpc29sYXRlKTsKIAorICAgIC8vIEZJWE1FOiBIVE1MNSBzcGVjaWZpY2F0
aW9uIHNheXMgdGhpcyBzaG91bGQgYmUgYSBIVE1MQ29sbGVjdGlvbi4KKyAgICAvLyBodHRwOi8v
d3d3LndoYXR3Zy5vcmcvc3BlY3Mvd2ViLWFwcHMvY3VycmVudC13b3JrL211bHRpcGFnZS9jb21t
b24tZG9tLWludGVyZmFjZXMuaHRtbCNodG1sYWxsY29sbGVjdGlvbgogICAgIHJldHVybiB0b1Y4
KFY4TmFtZWROb2Rlc0NvbGxlY3Rpb246OmNyZWF0ZShuYW1lZEl0ZW1zKSwgY3JlYXRpb25Db250
ZXh0LCBpc29sYXRlKTsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4SFRNTENvbGxlY3Rpb25DdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxDb2xsZWN0aW9uQ3VzdG9tLmNwcAkocmV2aXNp
b24gMTM0MDkyKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTENv
bGxlY3Rpb25DdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiwzMyArMzIsMTUgQEAKICNp
bmNsdWRlICJWOEhUTUxDb2xsZWN0aW9uLmgiCiAKICNpbmNsdWRlICJIVE1MQ29sbGVjdGlvbi5o
IgotI2luY2x1ZGUgIlJhZGlvTm9kZUxpc3QuaCIKICNpbmNsdWRlICJWOEJpbmRpbmcuaCIKICNp
bmNsdWRlICJWOEhUTUxBbGxDb2xsZWN0aW9uLmgiCisjaW5jbHVkZSAiVjhIVE1MRm9ybUNvbnRy
b2xzQ29sbGVjdGlvbi5oIgorI2luY2x1ZGUgIlY4SFRNTE9wdGlvbnNDb2xsZWN0aW9uLmgiCiAj
aW5jbHVkZSAiVjhOYW1lZE5vZGVzQ29sbGVjdGlvbi5oIgogI2luY2x1ZGUgIlY4Tm9kZS5oIgot
I2luY2x1ZGUgIlY4Tm9kZUxpc3QuaCIKLSNpbmNsdWRlICJWOFJhZGlvTm9kZUxpc3QuaCIKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGdldE5h
bWVkSXRlbXMoSFRNTENvbGxlY3Rpb24qIGNvbGxlY3Rpb24sIEF0b21pY1N0cmluZyBuYW1lLCB2
ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCwgdjg6Oklzb2xhdGUqIGlzb2xh
dGUpCi17Ci0gICAgVmVjdG9yPFJlZlB0cjxOb2RlPiA+IG5hbWVkSXRlbXM7Ci0gICAgY29sbGVj
dGlvbi0+bmFtZWRJdGVtcyhuYW1lLCBuYW1lZEl0ZW1zKTsKLQotICAgIGlmICghbmFtZWRJdGVt
cy5zaXplKCkpCi0gICAgICAgIHJldHVybiB2OFVuZGVmaW5lZCgpOwotCi0gICAgaWYgKG5hbWVk
SXRlbXMuc2l6ZSgpID09IDEpCi0gICAgICAgIHJldHVybiB0b1Y4KG5hbWVkSXRlbXMuYXQoMCku
cmVsZWFzZSgpLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOwotCi0gICAgaWYgKGNvbGxlY3Rp
b24tPnR5cGUoKSA9PSBGb3JtQ29udHJvbHMpCi0gICAgICAgIHJldHVybiB0b1Y4KGNvbGxlY3Rp
b24tPmJhc2UoKS0+cmFkaW9Ob2RlTGlzdChuYW1lKS5nZXQoKSwgY3JlYXRpb25Db250ZXh0LCBp
c29sYXRlKTsKLQotICAgIHJldHVybiB0b1Y4KFY4TmFtZWROb2Rlc0NvbGxlY3Rpb246OmNyZWF0
ZShuYW1lZEl0ZW1zKSwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsKLX0KLQogdjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IFY4SFRNTENvbGxlY3Rpb246Om5hbWVkUHJvcGVydHlHZXR0ZXIodjg6Okxv
Y2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7CiAg
ICAgSU5DX1NUQVRTKCJET00uSFRNTENvbGxlY3Rpb24uTmFtZWRQcm9wZXJ0eUdldHRlciIpOwpA
QCAtNjksMTkgKzUxLDEwIEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEhUTUxDb2xsZWN0aW9u
OjoKICAgICAgICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7CiAKICAgICBIVE1MQ29sbGVjdGlvbiog
aW1wID0gVjhIVE1MQ29sbGVjdGlvbjo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7Ci0gICAgcmV0
dXJuIGdldE5hbWVkSXRlbXMoaW1wLCB0b1dlYkNvcmVBdG9taWNTdHJpbmcobmFtZSksIGluZm8u
SG9sZGVyKCksIGluZm8uR2V0SXNvbGF0ZSgpKTsKLX0KLQotdjg6OkhhbmRsZTx2ODo6VmFsdWU+
IFY4SFRNTENvbGxlY3Rpb246Om5hbWVkSXRlbUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMm
IGFyZ3MpCi17Ci0gICAgSU5DX1NUQVRTKCJET00uSFRNTENvbGxlY3Rpb24ubmFtZWRJdGVtKCki
KTsKLSAgICBIVE1MQ29sbGVjdGlvbiogaW1wID0gVjhIVE1MQ29sbGVjdGlvbjo6dG9OYXRpdmUo
YXJncy5Ib2xkZXIoKSk7Ci0gICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHJlc3VsdCA9IGdldE5h
bWVkSXRlbXMoaW1wLCB0b1dlYkNvcmVTdHJpbmcoYXJnc1swXSksIGFyZ3MuSG9sZGVyKCksIGFy
Z3MuR2V0SXNvbGF0ZSgpKTsKLQotICAgIGlmIChyZXN1bHQuSXNFbXB0eSgpKQotICAgICAgICBy
ZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwotCi0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICBOb2RlKiBp
dGVtID0gaW1wLT5uYW1lZEl0ZW0odG9XZWJDb3JlQXRvbWljU3RyaW5nKG5hbWUpKTsKKyAgICBp
ZiAoIWl0ZW0pCisgICAgICAgIHJldHVybiB2OFVuZGVmaW5lZCgpOworICAgIHJldHVybiB0b1Y4
KGl0ZW0sIGluZm8uSG9sZGVyKCksIGluZm8uR2V0SXNvbGF0ZSgpKTsKIH0KIAogdjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IHRvVjgoSFRNTENvbGxlY3Rpb24qIGltcGwsIHY4OjpIYW5kbGU8djg6Ok9i
amVjdD4gY3JlYXRpb25Db250ZXh0LCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKQEAgLTg5LDggKzYy
LDE3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4KEhUTUxDb2xsZWN0aW8KICAgICBpZiAo
IWltcGwpCiAgICAgICAgIHJldHVybiB2OE51bGxXaXRoQ2hlY2soaXNvbGF0ZSk7CiAKLSAgICBp
ZiAoaW1wbC0+dHlwZSgpID09IERvY0FsbCkKKyAgICBzd2l0Y2ggKGltcGwtPnR5cGUoKSkgewor
ICAgIGNhc2UgRm9ybUNvbnRyb2xzOgorICAgICAgICByZXR1cm4gdG9WOChzdGF0aWNfY2FzdDxI
VE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbio+KGltcGwpLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xh
dGUpOworICAgIGNhc2UgU2VsZWN0T3B0aW9uczoKKyAgICAgICAgcmV0dXJuIHRvVjgoc3RhdGlj
X2Nhc3Q8SFRNTE9wdGlvbnNDb2xsZWN0aW9uKj4oaW1wbCksIGNyZWF0aW9uQ29udGV4dCwgaXNv
bGF0ZSk7CisgICAgY2FzZSBEb2NBbGw6CiAgICAgICAgIHJldHVybiB0b1Y4KHN0YXRpY19jYXN0
PEhUTUxBbGxDb2xsZWN0aW9uKj4oaW1wbCksIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7Cisg
ICAgZGVmYXVsdDoKKyAgICAgICAgYnJlYWs7CisgICAgfQorCiAgICAgcmV0dXJuIFY4SFRNTENv
bGxlY3Rpb246OndyYXAoaW1wbCwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsKIH0KIApJbmRl
eDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTEZvcm1Db250cm9sc0Nv
bGxlY3Rpb25DdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L2N1c3RvbS9WOEhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uQ3VzdG9tLmNwcAkocmV2aXNp
b24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxGb3JtQ29u
dHJvbHNDb2xsZWN0aW9uQ3VzdG9tLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw4MSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqIAorICog
ICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRo
ZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUK
KyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIElu
Yy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICogCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJ
QlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICog
T1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJWOEhUTUxGb3JtQ29udHJvbHNDb2xsZWN0
aW9uLmgiCisKKyNpbmNsdWRlICJIVE1MQ29sbGVjdGlvbi5oIgorI2luY2x1ZGUgIlJhZGlvTm9k
ZUxpc3QuaCIKKyNpbmNsdWRlICJWOEJpbmRpbmcuaCIKKyNpbmNsdWRlICJWOE5vZGUuaCIKKyNp
bmNsdWRlICJWOFJhZGlvTm9kZUxpc3QuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdGF0
aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGdldE5hbWVkSXRlbXMoSFRNTEZvcm1Db250cm9sc0Nv
bGxlY3Rpb24qIGNvbGxlY3Rpb24sIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgdjg6OkhhbmRs
ZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJc29sYXRlKiBpc29sYXRlKQorewor
ICAgIFZlY3RvcjxSZWZQdHI8Tm9kZT4gPiBuYW1lZEl0ZW1zOworICAgIGNvbGxlY3Rpb24tPm5h
bWVkSXRlbXMobmFtZSwgbmFtZWRJdGVtcyk7CisKKyAgICBpZiAoIW5hbWVkSXRlbXMuc2l6ZSgp
KQorICAgICAgICByZXR1cm4gdjhVbmRlZmluZWQoKTsKKworICAgIGlmIChuYW1lZEl0ZW1zLnNp
emUoKSA9PSAxKQorICAgICAgICByZXR1cm4gdG9WOChuYW1lZEl0ZW1zLmF0KDApLnJlbGVhc2Uo
KSwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsKKworICAgIHJldHVybiB0b1Y4KGNvbGxlY3Rp
b24tPmJhc2UoKS0+cmFkaW9Ob2RlTGlzdChuYW1lKS5nZXQoKSwgY3JlYXRpb25Db250ZXh0LCBp
c29sYXRlKTsKK30KKwordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SFRNTEZvcm1Db250cm9sc0Nv
bGxlY3Rpb246Om5hbWVkUHJvcGVydHlHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUs
IGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgSU5DX1NUQVRTKCJET00uSFRN
TENvbGxlY3Rpb24uTmFtZWRQcm9wZXJ0eUdldHRlciIpOworCisgICAgaWYgKCFpbmZvLkhvbGRl
cigpLT5HZXRSZWFsTmFtZWRQcm9wZXJ0eUluUHJvdG90eXBlQ2hhaW4obmFtZSkuSXNFbXB0eSgp
KQorICAgICAgICByZXR1cm4gdjhVbmRlZmluZWQoKTsKKyAgICBpZiAoaW5mby5Ib2xkZXIoKS0+
SGFzUmVhbE5hbWVkQ2FsbGJhY2tQcm9wZXJ0eShuYW1lKSkKKyAgICAgICAgcmV0dXJuIHY4VW5k
ZWZpbmVkKCk7CisKKyAgICBIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbiogaW1wID0gVjhIVE1M
Rm9ybUNvbnRyb2xzQ29sbGVjdGlvbjo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CisgICAgcmV0
dXJuIGdldE5hbWVkSXRlbXMoaW1wLCB0b1dlYkNvcmVBdG9taWNTdHJpbmcobmFtZSksIGluZm8u
SG9sZGVyKCksIGluZm8uR2V0SXNvbGF0ZSgpKTsKK30KKwordjg6OkhhbmRsZTx2ODo6VmFsdWU+
IFY4SFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb246Om5hbWVkSXRlbUNhbGxiYWNrKGNvbnN0IHY4
OjpBcmd1bWVudHMmIGFyZ3MpCit7CisgICAgSU5DX1NUQVRTKCJET00uSFRNTENvbGxlY3Rpb24u
bmFtZWRJdGVtKCkiKTsKKyAgICBIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbiogaW1wID0gVjhI
VE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbjo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7CisgICAg
djg6OkhhbmRsZTx2ODo6VmFsdWU+IHJlc3VsdCA9IGdldE5hbWVkSXRlbXMoaW1wLCB0b1dlYkNv
cmVTdHJpbmcoYXJnc1swXSksIGFyZ3MuSG9sZGVyKCksIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKKwor
ICAgIGlmIChyZXN1bHQuSXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZChh
cmdzLkdldElzb2xhdGUoKSk7CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCit9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhI
VE1MT3B0aW9uc0NvbGxlY3Rpb25DdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxPcHRpb25zQ29sbGVjdGlvbkN1c3RvbS5jcHAJ
KHJldmlzaW9uIDEzNDA5MikKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9W
OEhUTUxPcHRpb25zQ29sbGVjdGlvbkN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5LDEw
ICszOSw1MSBAQAogI2luY2x1ZGUgIlY4Q29sbGVjdGlvbi5oIgogI2luY2x1ZGUgIlY4SFRNTE9w
dGlvbkVsZW1lbnQuaCIKICNpbmNsdWRlICJWOEhUTUxTZWxlY3RFbGVtZW50Q3VzdG9tLmgiCisj
aW5jbHVkZSAiVjhOYW1lZE5vZGVzQ29sbGVjdGlvbi5oIgogI2luY2x1ZGUgIlY4Tm9kZS5oIgor
I2luY2x1ZGUgIlY4Tm9kZUxpc3QuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitzdGF0aWMg
djg6OkhhbmRsZTx2ODo6VmFsdWU+IGdldE5hbWVkSXRlbXMoSFRNTE9wdGlvbnNDb2xsZWN0aW9u
KiBjb2xsZWN0aW9uLCBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIHY4OjpIYW5kbGU8djg6Ok9i
amVjdD4gY3JlYXRpb25Db250ZXh0LCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKK3sKKyAgICBWZWN0
b3I8UmVmUHRyPE5vZGU+ID4gbmFtZWRJdGVtczsKKyAgICBjb2xsZWN0aW9uLT5uYW1lZEl0ZW1z
KG5hbWUsIG5hbWVkSXRlbXMpOworCisgICAgaWYgKCFuYW1lZEl0ZW1zLnNpemUoKSkKKyAgICAg
ICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7CisKKyAgICBpZiAobmFtZWRJdGVtcy5zaXplKCkgPT0g
MSkKKyAgICAgICAgcmV0dXJuIHRvVjgobmFtZWRJdGVtcy5hdCgwKS5yZWxlYXNlKCksIGNyZWF0
aW9uQ29udGV4dCwgaXNvbGF0ZSk7CisKKyAgICByZXR1cm4gdG9WOChWOE5hbWVkTm9kZXNDb2xs
ZWN0aW9uOjpjcmVhdGUobmFtZWRJdGVtcyksIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7Cit9
CisKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEhUTUxPcHRpb25zQ29sbGVjdGlvbjo6bmFtZWRQ
cm9wZXJ0eUdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vz
c29ySW5mbyYgaW5mbykKK3sKKyAgICBJTkNfU1RBVFMoIkRPTS5IVE1MQ29sbGVjdGlvbi5OYW1l
ZFByb3BlcnR5R2V0dGVyIik7CisKKyAgICBpZiAoIWluZm8uSG9sZGVyKCktPkdldFJlYWxOYW1l
ZFByb3BlcnR5SW5Qcm90b3R5cGVDaGFpbihuYW1lKS5Jc0VtcHR5KCkpCisgICAgICAgIHJldHVy
biB2OFVuZGVmaW5lZCgpOworICAgIGlmIChpbmZvLkhvbGRlcigpLT5IYXNSZWFsTmFtZWRDYWxs
YmFja1Byb3BlcnR5KG5hbWUpKQorICAgICAgICByZXR1cm4gdjhVbmRlZmluZWQoKTsKKworICAg
IEhUTUxPcHRpb25zQ29sbGVjdGlvbiogaW1wID0gVjhIVE1MT3B0aW9uc0NvbGxlY3Rpb246OnRv
TmF0aXZlKGluZm8uSG9sZGVyKCkpOworICAgIHJldHVybiBnZXROYW1lZEl0ZW1zKGltcCwgdG9X
ZWJDb3JlQXRvbWljU3RyaW5nKG5hbWUpLCBpbmZvLkhvbGRlcigpLCBpbmZvLkdldElzb2xhdGUo
KSk7Cit9CisKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEhUTUxPcHRpb25zQ29sbGVjdGlvbjo6
bmFtZWRJdGVtQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3sKKyAgICBJTkNf
U1RBVFMoIkRPTS5IVE1MQ29sbGVjdGlvbi5uYW1lZEl0ZW0oKSIpOworICAgIEhUTUxPcHRpb25z
Q29sbGVjdGlvbiogaW1wID0gVjhIVE1MT3B0aW9uc0NvbGxlY3Rpb246OnRvTmF0aXZlKGFyZ3Mu
SG9sZGVyKCkpOworICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiByZXN1bHQgPSBnZXROYW1lZEl0
ZW1zKGltcCwgdG9XZWJDb3JlU3RyaW5nKGFyZ3NbMF0pLCBhcmdzLkhvbGRlcigpLCBhcmdzLkdl
dElzb2xhdGUoKSk7CisKKyAgICBpZiAocmVzdWx0LklzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJu
IHY4OjpVbmRlZmluZWQoYXJncy5HZXRJc29sYXRlKCkpOworCisgICAgcmV0dXJuIHJlc3VsdDsK
K30KKwogdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SFRNTE9wdGlvbnNDb2xsZWN0aW9uOjpyZW1v
dmVDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAgIElOQ19TVEFUUygi
RE9NLkhUTUxPcHRpb25zQ29sbGVjdGlvbi5yZW1vdmUoKSIpOwpJbmRleDogU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnQuY3BwCShyZXZpc2lvbiAxMzQwOTIpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NDQzLDExICs0NDQzLDYgQEAgUGFzc1JlZlB0cjxI
VE1MQ29sbGVjdGlvbj4gRG9jdW1lbnQ6OnBsdQogICAgIHJldHVybiBjYWNoZWRDb2xsZWN0aW9u
KERvY0VtYmVkcyk7CiB9CiAKLVBhc3NSZWZQdHI8SFRNTENvbGxlY3Rpb24+IERvY3VtZW50Ojpv
YmplY3RzKCkKLXsKLSAgICByZXR1cm4gY2FjaGVkQ29sbGVjdGlvbihEb2NPYmplY3RzKTsKLX0K
LQogUGFzc1JlZlB0cjxIVE1MQ29sbGVjdGlvbj4gRG9jdW1lbnQ6OnNjcmlwdHMoKQogewogICAg
IHJldHVybiBjYWNoZWRDb2xsZWN0aW9uKERvY1NjcmlwdHMpOwpJbmRleDogU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50LmgJKHJldmlzaW9uIDEzNDA5MikKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5o
CSh3b3JraW5nIGNvcHkpCkBAIC00MzksNyArNDM5LDYgQEAgcHVibGljOgogICAgIFBhc3NSZWZQ
dHI8SFRNTENvbGxlY3Rpb24+IGxpbmtzKCk7CiAgICAgUGFzc1JlZlB0cjxIVE1MQ29sbGVjdGlv
bj4gZm9ybXMoKTsKICAgICBQYXNzUmVmUHRyPEhUTUxDb2xsZWN0aW9uPiBhbmNob3JzKCk7Ci0g
ICAgUGFzc1JlZlB0cjxIVE1MQ29sbGVjdGlvbj4gb2JqZWN0cygpOwogICAgIFBhc3NSZWZQdHI8
SFRNTENvbGxlY3Rpb24+IHNjcmlwdHMoKTsKICAgICBQYXNzUmVmUHRyPEhUTUxDb2xsZWN0aW9u
PiBhbGwoKTsKICAgICB2b2lkIHJlbW92ZUNhY2hlZEhUTUxDb2xsZWN0aW9uKEhUTUxDb2xsZWN0
aW9uKiwgQ29sbGVjdGlvblR5cGUpOwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAkocmV2aXNp
b24gMTM0MDkyKQorKysgU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC00Niw3ICs0Niw3IEBACiAjaW5jbHVkZSAiSFRNTENvbGxlY3Rpb24uaCIKICNpbmNs
dWRlICJIVE1MRG9jdW1lbnQuaCIKICNpbmNsdWRlICJIVE1MRWxlbWVudC5oIgotI2luY2x1ZGUg
IkhUTUxGb3JtQ29sbGVjdGlvbi5oIgorI2luY2x1ZGUgIkhUTUxGb3JtQ29udHJvbHNDb2xsZWN0
aW9uLmgiCiAjaW5jbHVkZSAiSFRNTEZyYW1lT3duZXJFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRN
TExhYmVsRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgpAQCAtMjMzOCw3ICsyMzM4
LDcgQEAgUGFzc1JlZlB0cjxIVE1MQ29sbGVjdGlvbj4gRWxlbWVudFJhcmVEYQogICAgICAgICBj
b2xsZWN0aW9uID0gSFRNTE9wdGlvbnNDb2xsZWN0aW9uOjpjcmVhdGUoZWxlbWVudCk7CiAgICAg
fSBlbHNlIGlmICh0eXBlID09IEZvcm1Db250cm9scykgewogICAgICAgICBBU1NFUlQoZWxlbWVu
dC0+aGFzVGFnTmFtZShmb3JtVGFnKSB8fCBlbGVtZW50LT5oYXNUYWdOYW1lKGZpZWxkc2V0VGFn
KSk7Ci0gICAgICAgIGNvbGxlY3Rpb24gPSBIVE1MRm9ybUNvbGxlY3Rpb246OmNyZWF0ZShlbGVt
ZW50KTsKKyAgICAgICAgY29sbGVjdGlvbiA9IEhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uOjpj
cmVhdGUoZWxlbWVudCk7CiAjaWYgRU5BQkxFKE1JQ1JPREFUQSkKICAgICB9IGVsc2UgaWYgKHR5
cGUgPT0gSXRlbVByb3BlcnRpZXMpIHsKICAgICAgICAgY29sbGVjdGlvbiA9IEhUTUxQcm9wZXJ0
aWVzQ29sbGVjdGlvbjo6Y3JlYXRlKGVsZW1lbnQpOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRt
bC9Db2xsZWN0aW9uVHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvQ29s
bGVjdGlvblR5cGUuaAkocmV2aXNpb24gMTM0MDkyKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9D
b2xsZWN0aW9uVHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw3ICszMSw2IEBAIGVudW0gQ29s
bGVjdGlvblR5cGUgewogICAgIERvY0ltYWdlcywgICAgLy8gYWxsIDxpbWc+IGVsZW1lbnRzIGlu
IHRoZSBkb2N1bWVudAogICAgIERvY0FwcGxldHMsICAgLy8gYWxsIDxvYmplY3Q+IGFuZCA8YXBw
bGV0PiBlbGVtZW50cwogICAgIERvY0VtYmVkcywgICAgLy8gYWxsIDxlbWJlZD4gZWxlbWVudHMK
LSAgICBEb2NPYmplY3RzLCAgIC8vIGFsbCA8b2JqZWN0PiBlbGVtZW50cwogICAgIERvY0Zvcm1z
LCAgICAgLy8gYWxsIDxmb3JtPiBlbGVtZW50cwogICAgIERvY0xpbmtzLCAgICAgLy8gYWxsIDxh
PiBfYW5kXyA8YXJlYT4gZWxlbWVudHMgd2l0aCBhIHZhbHVlIGZvciBocmVmCiAgICAgRG9jQW5j
aG9ycywgICAvLyBhbGwgPGE+IGVsZW1lbnRzIHdpdGggYSB2YWx1ZSBmb3IgbmFtZQpJbmRleDog
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ29sbGVjdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ29sbGVjdGlvbi5jcHAJKHJldmlzaW9uIDEzNDA5MikKKysr
IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENvbGxlY3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC01MSw3ICs1MSw2IEBAIHN0YXRpYyBib29sIHNob3VsZE9ubHlJbmNsdWRlRGlyZWN0Q2hpbGQK
ICAgICBjYXNlIERvY0Zvcm1zOgogICAgIGNhc2UgRG9jSW1hZ2VzOgogICAgIGNhc2UgRG9jTGlu
a3M6Ci0gICAgY2FzZSBEb2NPYmplY3RzOgogICAgIGNhc2UgRG9jU2NyaXB0czoKICAgICBjYXNl
IERvY3VtZW50TmFtZWRJdGVtczoKICAgICBjYXNlIE1hcEFyZWFzOgpAQCAtODMsNyArODIsNiBA
QCBzdGF0aWMgTm9kZUxpc3RSb290VHlwZSByb290VHlwZUZyb21Db2xsCiAgICAgY2FzZSBEb2NJ
bWFnZXM6CiAgICAgY2FzZSBEb2NBcHBsZXRzOgogICAgIGNhc2UgRG9jRW1iZWRzOgotICAgIGNh
c2UgRG9jT2JqZWN0czoKICAgICBjYXNlIERvY0Zvcm1zOgogICAgIGNhc2UgRG9jTGlua3M6CiAg
ICAgY2FzZSBEb2NBbmNob3JzOgpAQCAtMTE3LDcgKzExNSw2IEBAIHN0YXRpYyBOb2RlTGlzdElu
dmFsaWRhdGlvblR5cGUgaW52YWxpZGEKICAgICBzd2l0Y2ggKHR5cGUpIHsKICAgICBjYXNlIERv
Y0ltYWdlczoKICAgICBjYXNlIERvY0VtYmVkczoKLSAgICBjYXNlIERvY09iamVjdHM6CiAgICAg
Y2FzZSBEb2NGb3JtczoKICAgICBjYXNlIERvY0FuY2hvcnM6IC8vIERlcGVuZHMgb24gbmFtZSBh
dHRyaWJ1dGUuCiAgICAgY2FzZSBEb2NTY3JpcHRzOgpAQCAtMjE0LDggKzIxMSw2IEBAIHN0YXRp
YyBpbmxpbmUgYm9vbCBpc0FjY2VwdGFibGVFbGVtZW50KEMKICAgICAgICAgcmV0dXJuIGVsZW1l
bnQtPmhhc0xvY2FsTmFtZShhcHBsZXRUYWcpIHx8IChlbGVtZW50LT5oYXNMb2NhbE5hbWUob2Jq
ZWN0VGFnKSAmJiBzdGF0aWNfY2FzdDxIVE1MT2JqZWN0RWxlbWVudCo+KGVsZW1lbnQpLT5jb250
YWluc0phdmFBcHBsZXQoKSk7CiAgICAgY2FzZSBEb2NFbWJlZHM6CiAgICAgICAgIHJldHVybiBl
bGVtZW50LT5oYXNMb2NhbE5hbWUoZW1iZWRUYWcpOwotICAgIGNhc2UgRG9jT2JqZWN0czoKLSAg
ICAgICAgcmV0dXJuIGVsZW1lbnQtPmhhc0xvY2FsTmFtZShvYmplY3RUYWcpOwogICAgIGNhc2Ug
RG9jTGlua3M6CiAgICAgICAgIHJldHVybiAoZWxlbWVudC0+aGFzTG9jYWxOYW1lKGFUYWcpIHx8
IGVsZW1lbnQtPmhhc0xvY2FsTmFtZShhcmVhVGFnKSkgJiYgZWxlbWVudC0+ZmFzdEhhc0F0dHJp
YnV0ZShocmVmQXR0cik7CiAgICAgY2FzZSBEb2NBbmNob3JzOgpJbmRleDogU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MQ29sbGVjdGlvbi5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MQ29sbGVjdGlvbi5pZGwJKHJldmlzaW9uIDEzNDA5MikKKysrIFNvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTENvbGxlY3Rpb24uaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw3ICsyOCw3
IEBACiBdIGludGVyZmFjZSBIVE1MQ29sbGVjdGlvbiB7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRl
IHVuc2lnbmVkIGxvbmcgbGVuZ3RoOwogICAgIE5vZGUgaXRlbShpbiBbT3B0aW9uYWw9RGVmYXVs
dElzVW5kZWZpbmVkXSB1bnNpZ25lZCBsb25nIGluZGV4KTsKLSAgICBbQ3VzdG9tXSBOb2RlIG5h
bWVkSXRlbShpbiBbT3B0aW9uYWw9RGVmYXVsdElzVW5kZWZpbmVkXSBET01TdHJpbmcgbmFtZSk7
CisgICAgTm9kZSBuYW1lZEl0ZW0oaW4gW09wdGlvbmFsPURlZmF1bHRJc1VuZGVmaW5lZF0gRE9N
U3RyaW5nIG5hbWUpOwogCiAjaWYgZGVmaW5lZChMQU5HVUFHRV9PQkpFQ1RJVkVfQykgJiYgTEFO
R1VBR0VfT0JKRUNUSVZFX0MKICAgICBOb2RlTGlzdCB0YWdzKGluIFtPcHRpb25hbD1EZWZhdWx0
SXNVbmRlZmluZWRdIERPTVN0cmluZyBuYW1lKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEZpZWxkU2V0RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MRmllbGRTZXRFbGVtZW50LmNwcAkocmV2aXNpb24gMTM0MDkyKQorKysgU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MRmllbGRTZXRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjUs
NyArMjUsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkhUTUxGaWVsZFNldEVs
ZW1lbnQuaCIKIAotI2luY2x1ZGUgIkhUTUxGb3JtQ29sbGVjdGlvbi5oIgorI2luY2x1ZGUgIkhU
TUxDb2xsZWN0aW9uLmgiCiAjaW5jbHVkZSAiSFRNTExlZ2VuZEVsZW1lbnQuaCIKICNpbmNsdWRl
ICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJIVE1MT2JqZWN0RWxlbWVudC5oIgpJbmRleDogU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MRmllbGRTZXRFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MRmllbGRTZXRFbGVtZW50LmgJKHJldmlzaW9uIDEzNDA5MikK
KysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZpZWxkU2V0RWxlbWVudC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zMSw3ICszMSw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRm9ybUFz
c29jaWF0ZWRFbGVtZW50OwogY2xhc3MgSFRNTENvbGxlY3Rpb247Ci1jbGFzcyBIVE1MRm9ybUNv
bGxlY3Rpb247CiAKIGNsYXNzIEhUTUxGaWVsZFNldEVsZW1lbnQgOiBwdWJsaWMgSFRNTEZvcm1D
b250cm9sRWxlbWVudCB7CiBwdWJsaWM6CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxG
b3JtQ29sbGVjdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
Rm9ybUNvbGxlY3Rpb24uY3BwCShyZXZpc2lvbiAxMzQwOTIpCisrKyBTb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxGb3JtQ29sbGVjdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsMTYzICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTkgTGFycyBLbm9sbCAoa25vbGxAa2RlLm9yZykK
LSAqICAgICAgICAgICAoQykgMTk5OSBBbnR0aSBLb2l2aXN0byAoa29pdmlzdG9Aa2RlLm9yZykK
LSAqIENvcHlyaWdodCAoQykgMjAwMywgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAxMCwgMjAx
MSwgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogVGhpcyBsaWJy
YXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICog
bW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMKLSAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b247IGVpdGhlcgotICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRp
b24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRl
ZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5Z
IFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNI
QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUg
R05VCi0gKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4K
LSAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2Vl
IHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICogdGhlIEZyZWUgU29m
dHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwK
LSAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICoKLSAqLwotCi0jaW5jbHVkZSAiY29u
ZmlnLmgiCi0jaW5jbHVkZSAiSFRNTEZvcm1Db2xsZWN0aW9uLmgiCi0KLSNpbmNsdWRlICJIVE1M
RmllbGRTZXRFbGVtZW50LmgiCi0jaW5jbHVkZSAiSFRNTEZvcm1Db250cm9sRWxlbWVudC5oIgot
I2luY2x1ZGUgIkhUTUxGb3JtRWxlbWVudC5oIgotI2luY2x1ZGUgIkhUTUxJbWFnZUVsZW1lbnQu
aCIKLSNpbmNsdWRlICJIVE1MTmFtZXMuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi11c2lu
ZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwotCi0vLyBTaW5jZSB0aGUgY29sbGVjdGlvbnMgYXJlIHRv
IGJlICJsaXZlIiwgd2UgaGF2ZSB0byBkbyB0aGUKLS8vIGNhbGN1bGF0aW9uIGV2ZXJ5IHRpbWUg
aWYgYW55dGhpbmcgaGFzIGNoYW5nZWQuCi0KLUhUTUxGb3JtQ29sbGVjdGlvbjo6SFRNTEZvcm1D
b2xsZWN0aW9uKEVsZW1lbnQqIGJhc2UpCi0gICAgOiBIVE1MQ29sbGVjdGlvbihiYXNlLCBGb3Jt
Q29udHJvbHMsIE92ZXJyaWRlc0l0ZW1BZnRlcikKLXsKLSAgICBBU1NFUlQoYmFzZS0+aGFzVGFn
TmFtZShmb3JtVGFnKSB8fCBiYXNlLT5oYXNUYWdOYW1lKGZpZWxkc2V0VGFnKSk7Ci19Ci0KLVBh
c3NSZWZQdHI8SFRNTEZvcm1Db2xsZWN0aW9uPiBIVE1MRm9ybUNvbGxlY3Rpb246OmNyZWF0ZShF
bGVtZW50KiBiYXNlKQotewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgSFRNTEZvcm1Db2xsZWN0
aW9uKGJhc2UpKTsKLX0KLQotSFRNTEZvcm1Db2xsZWN0aW9uOjp+SFRNTEZvcm1Db2xsZWN0aW9u
KCkKLXsKLX0KLQotY29uc3QgVmVjdG9yPEZvcm1Bc3NvY2lhdGVkRWxlbWVudCo+JiBIVE1MRm9y
bUNvbGxlY3Rpb246OmZvcm1Db250cm9sRWxlbWVudHMoKSBjb25zdAotewotICAgIEFTU0VSVChi
YXNlKCkpOwotICAgIEFTU0VSVChiYXNlKCktPmhhc1RhZ05hbWUoZm9ybVRhZykgfHwgYmFzZSgp
LT5oYXNUYWdOYW1lKGZpZWxkc2V0VGFnKSk7Ci0gICAgaWYgKGJhc2UoKS0+aGFzVGFnTmFtZShm
b3JtVGFnKSkKLSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEhUTUxGb3JtRWxlbWVudCo+KGJh
c2UoKSktPmFzc29jaWF0ZWRFbGVtZW50cygpOwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxIVE1M
RmllbGRTZXRFbGVtZW50Kj4oYmFzZSgpKS0+YXNzb2NpYXRlZEVsZW1lbnRzKCk7Ci19Ci0KLWNv
bnN0IFZlY3RvcjxIVE1MSW1hZ2VFbGVtZW50Kj4mIEhUTUxGb3JtQ29sbGVjdGlvbjo6Zm9ybUlt
YWdlRWxlbWVudHMoKSBjb25zdAotewotICAgIEFTU0VSVChiYXNlKCkpOwotICAgIEFTU0VSVChi
YXNlKCktPmhhc1RhZ05hbWUoZm9ybVRhZykpOwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxIVE1M
Rm9ybUVsZW1lbnQqPihiYXNlKCkpLT5pbWFnZUVsZW1lbnRzKCk7Ci19Ci0KLUVsZW1lbnQqIEhU
TUxGb3JtQ29sbGVjdGlvbjo6dmlydHVhbEl0ZW1BZnRlcih1bnNpZ25lZCYgb2Zmc2V0LCBFbGVt
ZW50KiBwcmV2aW91c0l0ZW0pIGNvbnN0Ci17Ci0gICAgY29uc3QgVmVjdG9yPEZvcm1Bc3NvY2lh
dGVkRWxlbWVudCo+JiBlbGVtZW50c0FycmF5ID0gZm9ybUNvbnRyb2xFbGVtZW50cygpOwotICAg
IGlmIChwcmV2aW91c0l0ZW0pCi0gICAgICAgIG9mZnNldCsrOwotICAgIHdoaWxlIChvZmZzZXQg
PCBlbGVtZW50c0FycmF5LnNpemUoKSkgewotICAgICAgICBGb3JtQXNzb2NpYXRlZEVsZW1lbnQq
IGVsZW1lbnQgPSBlbGVtZW50c0FycmF5W29mZnNldF07Ci0gICAgICAgIGlmIChlbGVtZW50LT5p
c0VudW1lcmF0YWJsZSgpKQotICAgICAgICAgICAgcmV0dXJuIHRvSFRNTEVsZW1lbnQoZWxlbWVu
dCk7Ci0gICAgICAgIG9mZnNldCsrOwotICAgIH0KLSAgICByZXR1cm4gMDsKLX0KLQotc3RhdGlj
IEhUTUxFbGVtZW50KiBmaXJzdE5hbWVkSXRlbShjb25zdCBWZWN0b3I8Rm9ybUFzc29jaWF0ZWRF
bGVtZW50Kj4mIGVsZW1lbnRzQXJyYXksCi0gICAgY29uc3QgVmVjdG9yPEhUTUxJbWFnZUVsZW1l
bnQqPiogaW1hZ2VFbGVtZW50c0FycmF5LCBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSwg
Y29uc3QgU3RyaW5nJiBuYW1lKQotewotICAgIEFTU0VSVChhdHRyTmFtZSA9PSBpZEF0dHIgfHwg
YXR0ck5hbWUgPT0gbmFtZUF0dHIpOwotCi0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGVs
ZW1lbnRzQXJyYXkuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgSFRNTEVsZW1lbnQqIGVsZW1lbnQg
PSB0b0hUTUxFbGVtZW50KGVsZW1lbnRzQXJyYXlbaV0pOwotICAgICAgICBpZiAoZWxlbWVudHNB
cnJheVtpXS0+aXNFbnVtZXJhdGFibGUoKSAmJiBlbGVtZW50LT5mYXN0R2V0QXR0cmlidXRlKGF0
dHJOYW1lKSA9PSBuYW1lKQotICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnQ7Ci0gICAgfQotCi0g
ICAgaWYgKCFpbWFnZUVsZW1lbnRzQXJyYXkpCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IGltYWdlRWxlbWVudHNBcnJheS0+c2l6ZSgpOyArK2kpIHsK
LSAgICAgICAgSFRNTEltYWdlRWxlbWVudCogZWxlbWVudCA9ICgqaW1hZ2VFbGVtZW50c0FycmF5
KVtpXTsKLSAgICAgICAgaWYgKGVsZW1lbnQtPmZhc3RHZXRBdHRyaWJ1dGUoYXR0ck5hbWUpID09
IG5hbWUpCi0gICAgICAgICAgICByZXR1cm4gZWxlbWVudDsKLSAgICB9Ci0KLSAgICByZXR1cm4g
MDsKLX0KLQotTm9kZSogSFRNTEZvcm1Db2xsZWN0aW9uOjpuYW1lZEl0ZW0oY29uc3QgQXRvbWlj
U3RyaW5nJiBuYW1lKSBjb25zdAotewotICAgIC8vIGh0dHA6Ly9tc2RuLm1pY3Jvc29mdC5jb20v
d29ya3Nob3AvYXV0aG9yL2RodG1sL3JlZmVyZW5jZS9tZXRob2RzL25hbWVkaXRlbS5hc3AKLSAg
ICAvLyBUaGlzIG1ldGhvZCBmaXJzdCBzZWFyY2hlcyBmb3IgYW4gb2JqZWN0IHdpdGggYSBtYXRj
aGluZyBpZAotICAgIC8vIGF0dHJpYnV0ZS4gSWYgYSBtYXRjaCBpcyBub3QgZm91bmQsIHRoZSBt
ZXRob2QgdGhlbiBzZWFyY2hlcyBmb3IgYW4KLSAgICAvLyBvYmplY3Qgd2l0aCBhIG1hdGNoaW5n
IG5hbWUgYXR0cmlidXRlLCBidXQgb25seSBvbiB0aG9zZSBlbGVtZW50cwotICAgIC8vIHRoYXQg
YXJlIGFsbG93ZWQgYSBuYW1lIGF0dHJpYnV0ZS4KLSAgICBjb25zdCBWZWN0b3I8SFRNTEltYWdl
RWxlbWVudCo+KiBpbWFnZXNFbGVtZW50cyA9IGJhc2UoKS0+aGFzVGFnTmFtZShmaWVsZHNldFRh
ZykgPyAwIDogJmZvcm1JbWFnZUVsZW1lbnRzKCk7Ci0gICAgaWYgKEhUTUxFbGVtZW50KiBpdGVt
ID0gZmlyc3ROYW1lZEl0ZW0oZm9ybUNvbnRyb2xFbGVtZW50cygpLCBpbWFnZXNFbGVtZW50cywg
aWRBdHRyLCBuYW1lKSkKLSAgICAgICAgcmV0dXJuIGl0ZW07Ci0KLSAgICByZXR1cm4gZmlyc3RO
YW1lZEl0ZW0oZm9ybUNvbnRyb2xFbGVtZW50cygpLCBpbWFnZXNFbGVtZW50cywgbmFtZUF0dHIs
IG5hbWUpOwotfQotCi12b2lkIEhUTUxGb3JtQ29sbGVjdGlvbjo6dXBkYXRlTmFtZUNhY2hlKCkg
Y29uc3QKLXsKLSAgICBpZiAoaGFzTmFtZUNhY2hlKCkpCi0gICAgICAgIHJldHVybjsKLQotICAg
IEhhc2hTZXQ8QXRvbWljU3RyaW5nSW1wbCo+IGZvdW5kSW5wdXRFbGVtZW50czsKLQotICAgIGNv
bnN0IFZlY3RvcjxGb3JtQXNzb2NpYXRlZEVsZW1lbnQqPiYgZWxlbWVudHNBcnJheSA9IGZvcm1D
b250cm9sRWxlbWVudHMoKTsKLQotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBlbGVtZW50
c0FycmF5LnNpemUoKTsgKytpKSB7Ci0gICAgICAgIEZvcm1Bc3NvY2lhdGVkRWxlbWVudCogYXNz
b2NpYXRlZEVsZW1lbnQgPSBlbGVtZW50c0FycmF5W2ldOwotICAgICAgICBpZiAoYXNzb2NpYXRl
ZEVsZW1lbnQtPmlzRW51bWVyYXRhYmxlKCkpIHsKLSAgICAgICAgICAgIEhUTUxFbGVtZW50KiBl
bGVtZW50ID0gdG9IVE1MRWxlbWVudChhc3NvY2lhdGVkRWxlbWVudCk7Ci0gICAgICAgICAgICBj
b25zdCBBdG9taWNTdHJpbmcmIGlkQXR0clZhbCA9IGVsZW1lbnQtPmdldElkQXR0cmlidXRlKCk7
Ci0gICAgICAgICAgICBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWVBdHRyVmFsID0gZWxlbWVudC0+
Z2V0TmFtZUF0dHJpYnV0ZSgpOwotICAgICAgICAgICAgaWYgKCFpZEF0dHJWYWwuaXNFbXB0eSgp
KSB7Ci0gICAgICAgICAgICAgICAgYXBwZW5kSWRDYWNoZShpZEF0dHJWYWwsIGVsZW1lbnQpOwot
ICAgICAgICAgICAgICAgIGZvdW5kSW5wdXRFbGVtZW50cy5hZGQoaWRBdHRyVmFsLmltcGwoKSk7
Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoIW5hbWVBdHRyVmFsLmlzRW1wdHkoKSAm
JiBpZEF0dHJWYWwgIT0gbmFtZUF0dHJWYWwpIHsKLSAgICAgICAgICAgICAgICBhcHBlbmROYW1l
Q2FjaGUobmFtZUF0dHJWYWwsIGVsZW1lbnQpOwotICAgICAgICAgICAgICAgIGZvdW5kSW5wdXRF
bGVtZW50cy5hZGQobmFtZUF0dHJWYWwuaW1wbCgpKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAg
fQotICAgIH0KLQotICAgIGlmIChiYXNlKCktPmhhc1RhZ05hbWUoZm9ybVRhZykpIHsKLSAgICAg
ICAgY29uc3QgVmVjdG9yPEhUTUxJbWFnZUVsZW1lbnQqPiYgaW1hZ2VFbGVtZW50c0FycmF5ID0g
Zm9ybUltYWdlRWxlbWVudHMoKTsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGlt
YWdlRWxlbWVudHNBcnJheS5zaXplKCk7ICsraSkgewotICAgICAgICAgICAgSFRNTEltYWdlRWxl
bWVudCogZWxlbWVudCA9IGltYWdlRWxlbWVudHNBcnJheVtpXTsKLSAgICAgICAgICAgIGNvbnN0
IEF0b21pY1N0cmluZyYgaWRBdHRyVmFsID0gZWxlbWVudC0+Z2V0SWRBdHRyaWJ1dGUoKTsKLSAg
ICAgICAgICAgIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZUF0dHJWYWwgPSBlbGVtZW50LT5nZXRO
YW1lQXR0cmlidXRlKCk7Ci0gICAgICAgICAgICBpZiAoIWlkQXR0clZhbC5pc0VtcHR5KCkgJiYg
IWZvdW5kSW5wdXRFbGVtZW50cy5jb250YWlucyhpZEF0dHJWYWwuaW1wbCgpKSkKLSAgICAgICAg
ICAgICAgICBhcHBlbmRJZENhY2hlKGlkQXR0clZhbCwgZWxlbWVudCk7Ci0gICAgICAgICAgICBp
ZiAoIW5hbWVBdHRyVmFsLmlzRW1wdHkoKSAmJiBpZEF0dHJWYWwgIT0gbmFtZUF0dHJWYWwgJiYg
IWZvdW5kSW5wdXRFbGVtZW50cy5jb250YWlucyhuYW1lQXR0clZhbC5pbXBsKCkpKQotICAgICAg
ICAgICAgICAgIGFwcGVuZE5hbWVDYWNoZShuYW1lQXR0clZhbCwgZWxlbWVudCk7Ci0gICAgICAg
IH0KLSAgICB9Ci0KLSAgICBzZXRIYXNOYW1lQ2FjaGUoKTsKLX0KLQotfQpJbmRleDogU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbGxlY3Rpb24uaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxGb3JtQ29sbGVjdGlvbi5oCShyZXZpc2lvbiAxMzQwOTIpCisrKyBT
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29sbGVjdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDU3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTkgTGFycyBLbm9sbCAoa25v
bGxAa2RlLm9yZykKLSAqICAgICAgICAgICAoQykgMTk5OSBBbnR0aSBLb2l2aXN0byAoa29pdmlz
dG9Aa2RlLm9yZykKLSAqIENvcHlyaWdodCAoQykgMjAwMywgMjAwNCwgMjAwNSwgMjAwNiwgMjAw
NywgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogVGhpcyBsaWJy
YXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICog
bW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMKLSAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b247IGVpdGhlcgotICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRp
b24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRl
ZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5Z
IFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNI
QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUg
R05VCi0gKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4K
LSAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2Vl
IHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICogdGhlIEZyZWUgU29m
dHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwK
LSAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICoKLSAqLwotCi0jaWZuZGVmIEhUTUxG
b3JtQ29sbGVjdGlvbl9oCi0jZGVmaW5lIEhUTUxGb3JtQ29sbGVjdGlvbl9oCi0KLSNpbmNsdWRl
ICJIVE1MQ29sbGVjdGlvbi5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIEZvcm1B
c3NvY2lhdGVkRWxlbWVudDsKLWNsYXNzIEhUTUxFbGVtZW50OwotY2xhc3MgSFRNTEltYWdlRWxl
bWVudDsKLWNsYXNzIFF1YWxpZmllZE5hbWU7Ci0vLyBUaGlzIGNsYXNzIGlzIGp1c3QgYSBiaWcg
aGFjayB0byBmaW5kIGZvcm0gZWxlbWVudHMgZXZlbiBpbiBtYWxmb3JtZWQgSFRNTCBlbGVtZW50
cy4KLS8vIFRoZSBmYW1vdXMgPHRhYmxlPjx0cj48Zm9ybT48dGQ+IHByb2JsZW0uCi0KLWNsYXNz
IEhUTUxGb3JtQ29sbGVjdGlvbiA6IHB1YmxpYyBIVE1MQ29sbGVjdGlvbiB7Ci1wdWJsaWM6Ci0g
ICAgc3RhdGljIFBhc3NSZWZQdHI8SFRNTEZvcm1Db2xsZWN0aW9uPiBjcmVhdGUoRWxlbWVudCop
OwotCi0gICAgdmlydHVhbCB+SFRNTEZvcm1Db2xsZWN0aW9uKCk7Ci0KLSAgICB2aXJ0dWFsIE5v
ZGUqIG5hbWVkSXRlbShjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpIGNvbnN0OwotCi1wcml2YXRl
OgotICAgIEhUTUxGb3JtQ29sbGVjdGlvbihFbGVtZW50Kik7Ci0KLSAgICB2aXJ0dWFsIHZvaWQg
dXBkYXRlTmFtZUNhY2hlKCkgY29uc3Q7Ci0KLSAgICBjb25zdCBWZWN0b3I8Rm9ybUFzc29jaWF0
ZWRFbGVtZW50Kj4mIGZvcm1Db250cm9sRWxlbWVudHMoKSBjb25zdDsKLSAgICBjb25zdCBWZWN0
b3I8SFRNTEltYWdlRWxlbWVudCo+JiBmb3JtSW1hZ2VFbGVtZW50cygpIGNvbnN0OwotICAgIHZp
cnR1YWwgRWxlbWVudCogdmlydHVhbEl0ZW1BZnRlcih1bnNpZ25lZCYgb2Zmc2V0SW5BcnJheSwg
RWxlbWVudCopIGNvbnN0IE9WRVJSSURFOwotfTsKLQotfSAvL25hbWVzcGFjZQotCi0jZW5kaWYK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sc0NvbGxl
Y3Rpb24uY3BwCShyZXZpc2lvbiAxMzM1NTEpCShmcm9tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEZvcm1Db2xsZWN0aW9uLmNwcDoxMzM1NTEpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxG
b3JtQ29udHJvbHNDb2xsZWN0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE2MyBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMTk5OSBMYXJzIEtub2xsIChrbm9sbEBrZGUub3JnKQor
ICogICAgICAgICAgIChDKSAxOTk5IEFudHRpIEtvaXZpc3RvIChrb2l2aXN0b0BrZGUub3JnKQor
ICogQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDEwLCAyMDEx
LCAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIGxpYnJh
cnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBt
b2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
bjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlv
bikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVk
IGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkg
V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hB
TlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBH
TlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgor
ICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUg
dGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAor
ICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJIVE1MRm9ybUNvbGxlY3Rpb24uaCIKKworI2luY2x1ZGUgIkhUTUxG
aWVsZFNldEVsZW1lbnQuaCIKKyNpbmNsdWRlICJIVE1MRm9ybUNvbnRyb2xFbGVtZW50LmgiCisj
aW5jbHVkZSAiSFRNTEZvcm1FbGVtZW50LmgiCisjaW5jbHVkZSAiSFRNTEltYWdlRWxlbWVudC5o
IgorI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3VzaW5n
IG5hbWVzcGFjZSBIVE1MTmFtZXM7CisKKy8vIFNpbmNlIHRoZSBjb2xsZWN0aW9ucyBhcmUgdG8g
YmUgImxpdmUiLCB3ZSBoYXZlIHRvIGRvIHRoZQorLy8gY2FsY3VsYXRpb24gZXZlcnkgdGltZSBp
ZiBhbnl0aGluZyBoYXMgY2hhbmdlZC4KKworSFRNTEZvcm1Db2xsZWN0aW9uOjpIVE1MRm9ybUNv
bGxlY3Rpb24oRWxlbWVudCogYmFzZSkKKyAgICA6IEhUTUxDb2xsZWN0aW9uKGJhc2UsIEZvcm1D
b250cm9scywgT3ZlcnJpZGVzSXRlbUFmdGVyKQoreworICAgIEFTU0VSVChiYXNlLT5oYXNUYWdO
YW1lKGZvcm1UYWcpIHx8IGJhc2UtPmhhc1RhZ05hbWUoZmllbGRzZXRUYWcpKTsKK30KKworUGFz
c1JlZlB0cjxIVE1MRm9ybUNvbGxlY3Rpb24+IEhUTUxGb3JtQ29sbGVjdGlvbjo6Y3JlYXRlKEVs
ZW1lbnQqIGJhc2UpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBIVE1MRm9ybUNvbGxlY3Rp
b24oYmFzZSkpOworfQorCitIVE1MRm9ybUNvbGxlY3Rpb246On5IVE1MRm9ybUNvbGxlY3Rpb24o
KQoreworfQorCitjb25zdCBWZWN0b3I8Rm9ybUFzc29jaWF0ZWRFbGVtZW50Kj4mIEhUTUxGb3Jt
Q29sbGVjdGlvbjo6Zm9ybUNvbnRyb2xFbGVtZW50cygpIGNvbnN0Cit7CisgICAgQVNTRVJUKGJh
c2UoKSk7CisgICAgQVNTRVJUKGJhc2UoKS0+aGFzVGFnTmFtZShmb3JtVGFnKSB8fCBiYXNlKCkt
Pmhhc1RhZ05hbWUoZmllbGRzZXRUYWcpKTsKKyAgICBpZiAoYmFzZSgpLT5oYXNUYWdOYW1lKGZv
cm1UYWcpKQorICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SFRNTEZvcm1FbGVtZW50Kj4oYmFz
ZSgpKS0+YXNzb2NpYXRlZEVsZW1lbnRzKCk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEhUTUxG
aWVsZFNldEVsZW1lbnQqPihiYXNlKCkpLT5hc3NvY2lhdGVkRWxlbWVudHMoKTsKK30KKworY29u
c3QgVmVjdG9yPEhUTUxJbWFnZUVsZW1lbnQqPiYgSFRNTEZvcm1Db2xsZWN0aW9uOjpmb3JtSW1h
Z2VFbGVtZW50cygpIGNvbnN0Cit7CisgICAgQVNTRVJUKGJhc2UoKSk7CisgICAgQVNTRVJUKGJh
c2UoKS0+aGFzVGFnTmFtZShmb3JtVGFnKSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEhUTUxG
b3JtRWxlbWVudCo+KGJhc2UoKSktPmltYWdlRWxlbWVudHMoKTsKK30KKworRWxlbWVudCogSFRN
TEZvcm1Db2xsZWN0aW9uOjp2aXJ0dWFsSXRlbUFmdGVyKHVuc2lnbmVkJiBvZmZzZXQsIEVsZW1l
bnQqIHByZXZpb3VzSXRlbSkgY29uc3QKK3sKKyAgICBjb25zdCBWZWN0b3I8Rm9ybUFzc29jaWF0
ZWRFbGVtZW50Kj4mIGVsZW1lbnRzQXJyYXkgPSBmb3JtQ29udHJvbEVsZW1lbnRzKCk7CisgICAg
aWYgKHByZXZpb3VzSXRlbSkKKyAgICAgICAgb2Zmc2V0Kys7CisgICAgd2hpbGUgKG9mZnNldCA8
IGVsZW1lbnRzQXJyYXkuc2l6ZSgpKSB7CisgICAgICAgIEZvcm1Bc3NvY2lhdGVkRWxlbWVudCog
ZWxlbWVudCA9IGVsZW1lbnRzQXJyYXlbb2Zmc2V0XTsKKyAgICAgICAgaWYgKGVsZW1lbnQtPmlz
RW51bWVyYXRhYmxlKCkpCisgICAgICAgICAgICByZXR1cm4gdG9IVE1MRWxlbWVudChlbGVtZW50
KTsKKyAgICAgICAgb2Zmc2V0Kys7CisgICAgfQorICAgIHJldHVybiAwOworfQorCitzdGF0aWMg
SFRNTEVsZW1lbnQqIGZpcnN0TmFtZWRJdGVtKGNvbnN0IFZlY3RvcjxGb3JtQXNzb2NpYXRlZEVs
ZW1lbnQqPiYgZWxlbWVudHNBcnJheSwKKyAgICBjb25zdCBWZWN0b3I8SFRNTEltYWdlRWxlbWVu
dCo+KiBpbWFnZUVsZW1lbnRzQXJyYXksIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lLCBj
b25zdCBTdHJpbmcmIG5hbWUpCit7CisgICAgQVNTRVJUKGF0dHJOYW1lID09IGlkQXR0ciB8fCBh
dHRyTmFtZSA9PSBuYW1lQXR0cik7CisKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZWxl
bWVudHNBcnJheS5zaXplKCk7ICsraSkgeworICAgICAgICBIVE1MRWxlbWVudCogZWxlbWVudCA9
IHRvSFRNTEVsZW1lbnQoZWxlbWVudHNBcnJheVtpXSk7CisgICAgICAgIGlmIChlbGVtZW50c0Fy
cmF5W2ldLT5pc0VudW1lcmF0YWJsZSgpICYmIGVsZW1lbnQtPmZhc3RHZXRBdHRyaWJ1dGUoYXR0
ck5hbWUpID09IG5hbWUpCisgICAgICAgICAgICByZXR1cm4gZWxlbWVudDsKKyAgICB9CisKKyAg
ICBpZiAoIWltYWdlRWxlbWVudHNBcnJheSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgaW1hZ2VFbGVtZW50c0FycmF5LT5zaXplKCk7ICsraSkgewor
ICAgICAgICBIVE1MSW1hZ2VFbGVtZW50KiBlbGVtZW50ID0gKCppbWFnZUVsZW1lbnRzQXJyYXkp
W2ldOworICAgICAgICBpZiAoZWxlbWVudC0+ZmFzdEdldEF0dHJpYnV0ZShhdHRyTmFtZSkgPT0g
bmFtZSkKKyAgICAgICAgICAgIHJldHVybiBlbGVtZW50OworICAgIH0KKworICAgIHJldHVybiAw
OworfQorCitOb2RlKiBIVE1MRm9ybUNvbGxlY3Rpb246Om5hbWVkSXRlbShjb25zdCBBdG9taWNT
dHJpbmcmIG5hbWUpIGNvbnN0Cit7CisgICAgLy8gaHR0cDovL21zZG4ubWljcm9zb2Z0LmNvbS93
b3Jrc2hvcC9hdXRob3IvZGh0bWwvcmVmZXJlbmNlL21ldGhvZHMvbmFtZWRpdGVtLmFzcAorICAg
IC8vIFRoaXMgbWV0aG9kIGZpcnN0IHNlYXJjaGVzIGZvciBhbiBvYmplY3Qgd2l0aCBhIG1hdGNo
aW5nIGlkCisgICAgLy8gYXR0cmlidXRlLiBJZiBhIG1hdGNoIGlzIG5vdCBmb3VuZCwgdGhlIG1l
dGhvZCB0aGVuIHNlYXJjaGVzIGZvciBhbgorICAgIC8vIG9iamVjdCB3aXRoIGEgbWF0Y2hpbmcg
bmFtZSBhdHRyaWJ1dGUsIGJ1dCBvbmx5IG9uIHRob3NlIGVsZW1lbnRzCisgICAgLy8gdGhhdCBh
cmUgYWxsb3dlZCBhIG5hbWUgYXR0cmlidXRlLgorICAgIGNvbnN0IFZlY3RvcjxIVE1MSW1hZ2VF
bGVtZW50Kj4qIGltYWdlc0VsZW1lbnRzID0gYmFzZSgpLT5oYXNUYWdOYW1lKGZpZWxkc2V0VGFn
KSA/IDAgOiAmZm9ybUltYWdlRWxlbWVudHMoKTsKKyAgICBpZiAoSFRNTEVsZW1lbnQqIGl0ZW0g
PSBmaXJzdE5hbWVkSXRlbShmb3JtQ29udHJvbEVsZW1lbnRzKCksIGltYWdlc0VsZW1lbnRzLCBp
ZEF0dHIsIG5hbWUpKQorICAgICAgICByZXR1cm4gaXRlbTsKKworICAgIHJldHVybiBmaXJzdE5h
bWVkSXRlbShmb3JtQ29udHJvbEVsZW1lbnRzKCksIGltYWdlc0VsZW1lbnRzLCBuYW1lQXR0ciwg
bmFtZSk7Cit9CisKK3ZvaWQgSFRNTEZvcm1Db2xsZWN0aW9uOjp1cGRhdGVOYW1lQ2FjaGUoKSBj
b25zdAoreworICAgIGlmIChoYXNOYW1lQ2FjaGUoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAg
SGFzaFNldDxBdG9taWNTdHJpbmdJbXBsKj4gZm91bmRJbnB1dEVsZW1lbnRzOworCisgICAgY29u
c3QgVmVjdG9yPEZvcm1Bc3NvY2lhdGVkRWxlbWVudCo+JiBlbGVtZW50c0FycmF5ID0gZm9ybUNv
bnRyb2xFbGVtZW50cygpOworCisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGVsZW1lbnRz
QXJyYXkuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgRm9ybUFzc29jaWF0ZWRFbGVtZW50KiBhc3Nv
Y2lhdGVkRWxlbWVudCA9IGVsZW1lbnRzQXJyYXlbaV07CisgICAgICAgIGlmIChhc3NvY2lhdGVk
RWxlbWVudC0+aXNFbnVtZXJhdGFibGUoKSkgeworICAgICAgICAgICAgSFRNTEVsZW1lbnQqIGVs
ZW1lbnQgPSB0b0hUTUxFbGVtZW50KGFzc29jaWF0ZWRFbGVtZW50KTsKKyAgICAgICAgICAgIGNv
bnN0IEF0b21pY1N0cmluZyYgaWRBdHRyVmFsID0gZWxlbWVudC0+Z2V0SWRBdHRyaWJ1dGUoKTsK
KyAgICAgICAgICAgIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZUF0dHJWYWwgPSBlbGVtZW50LT5n
ZXROYW1lQXR0cmlidXRlKCk7CisgICAgICAgICAgICBpZiAoIWlkQXR0clZhbC5pc0VtcHR5KCkp
IHsKKyAgICAgICAgICAgICAgICBhcHBlbmRJZENhY2hlKGlkQXR0clZhbCwgZWxlbWVudCk7Cisg
ICAgICAgICAgICAgICAgZm91bmRJbnB1dEVsZW1lbnRzLmFkZChpZEF0dHJWYWwuaW1wbCgpKTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICghbmFtZUF0dHJWYWwuaXNFbXB0eSgpICYm
IGlkQXR0clZhbCAhPSBuYW1lQXR0clZhbCkgeworICAgICAgICAgICAgICAgIGFwcGVuZE5hbWVD
YWNoZShuYW1lQXR0clZhbCwgZWxlbWVudCk7CisgICAgICAgICAgICAgICAgZm91bmRJbnB1dEVs
ZW1lbnRzLmFkZChuYW1lQXR0clZhbC5pbXBsKCkpOworICAgICAgICAgICAgfQorICAgICAgICB9
CisgICAgfQorCisgICAgaWYgKGJhc2UoKS0+aGFzVGFnTmFtZShmb3JtVGFnKSkgeworICAgICAg
ICBjb25zdCBWZWN0b3I8SFRNTEltYWdlRWxlbWVudCo+JiBpbWFnZUVsZW1lbnRzQXJyYXkgPSBm
b3JtSW1hZ2VFbGVtZW50cygpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgaW1h
Z2VFbGVtZW50c0FycmF5LnNpemUoKTsgKytpKSB7CisgICAgICAgICAgICBIVE1MSW1hZ2VFbGVt
ZW50KiBlbGVtZW50ID0gaW1hZ2VFbGVtZW50c0FycmF5W2ldOworICAgICAgICAgICAgY29uc3Qg
QXRvbWljU3RyaW5nJiBpZEF0dHJWYWwgPSBlbGVtZW50LT5nZXRJZEF0dHJpYnV0ZSgpOworICAg
ICAgICAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lQXR0clZhbCA9IGVsZW1lbnQtPmdldE5h
bWVBdHRyaWJ1dGUoKTsKKyAgICAgICAgICAgIGlmICghaWRBdHRyVmFsLmlzRW1wdHkoKSAmJiAh
Zm91bmRJbnB1dEVsZW1lbnRzLmNvbnRhaW5zKGlkQXR0clZhbC5pbXBsKCkpKQorICAgICAgICAg
ICAgICAgIGFwcGVuZElkQ2FjaGUoaWRBdHRyVmFsLCBlbGVtZW50KTsKKyAgICAgICAgICAgIGlm
ICghbmFtZUF0dHJWYWwuaXNFbXB0eSgpICYmIGlkQXR0clZhbCAhPSBuYW1lQXR0clZhbCAmJiAh
Zm91bmRJbnB1dEVsZW1lbnRzLmNvbnRhaW5zKG5hbWVBdHRyVmFsLmltcGwoKSkpCisgICAgICAg
ICAgICAgICAgYXBwZW5kTmFtZUNhY2hlKG5hbWVBdHRyVmFsLCBlbGVtZW50KTsKKyAgICAgICAg
fQorICAgIH0KKworICAgIHNldEhhc05hbWVDYWNoZSgpOworfQorCit9CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmNwcAkocmV2
aXNpb24gMTMzNTUxKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xzQ29s
bGVjdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxLDcgKzIxLDcgQEAKICAqLwogCiAjaW5j
bHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiSFRNTEZvcm1Db2xsZWN0aW9uLmgiCisjaW5jbHVk
ZSAiSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uaCIKIAogI2luY2x1ZGUgIkhUTUxGaWVsZFNl
dEVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MRm9ybUNvbnRyb2xFbGVtZW50LmgiCkBAIC0zNiwy
MiArMzYsMjIgQEAgdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIC8vIFNpbmNlIHRoZSBjb2xs
ZWN0aW9ucyBhcmUgdG8gYmUgImxpdmUiLCB3ZSBoYXZlIHRvIGRvIHRoZQogLy8gY2FsY3VsYXRp
b24gZXZlcnkgdGltZSBpZiBhbnl0aGluZyBoYXMgY2hhbmdlZC4KIAotSFRNTEZvcm1Db2xsZWN0
aW9uOjpIVE1MRm9ybUNvbGxlY3Rpb24oRWxlbWVudCogYmFzZSkKK0hUTUxGb3JtQ29udHJvbHND
b2xsZWN0aW9uOjpIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbihFbGVtZW50KiBiYXNlKQogICAg
IDogSFRNTENvbGxlY3Rpb24oYmFzZSwgRm9ybUNvbnRyb2xzLCBPdmVycmlkZXNJdGVtQWZ0ZXIp
CiB7CiAgICAgQVNTRVJUKGJhc2UtPmhhc1RhZ05hbWUoZm9ybVRhZykgfHwgYmFzZS0+aGFzVGFn
TmFtZShmaWVsZHNldFRhZykpOwogfQogCi1QYXNzUmVmUHRyPEhUTUxGb3JtQ29sbGVjdGlvbj4g
SFRNTEZvcm1Db2xsZWN0aW9uOjpjcmVhdGUoRWxlbWVudCogYmFzZSkKK1Bhc3NSZWZQdHI8SFRN
TEZvcm1Db250cm9sc0NvbGxlY3Rpb24+IEhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uOjpjcmVh
dGUoRWxlbWVudCogYmFzZSkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IEhUTUxGb3JtQ29s
bGVjdGlvbihiYXNlKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBIVE1MRm9ybUNvbnRyb2xz
Q29sbGVjdGlvbihiYXNlKSk7CiB9CiAKLUhUTUxGb3JtQ29sbGVjdGlvbjo6fkhUTUxGb3JtQ29s
bGVjdGlvbigpCitIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbjo6fkhUTUxGb3JtQ29udHJvbHND
b2xsZWN0aW9uKCkKIHsKIH0KIAotY29uc3QgVmVjdG9yPEZvcm1Bc3NvY2lhdGVkRWxlbWVudCo+
JiBIVE1MRm9ybUNvbGxlY3Rpb246OmZvcm1Db250cm9sRWxlbWVudHMoKSBjb25zdAorY29uc3Qg
VmVjdG9yPEZvcm1Bc3NvY2lhdGVkRWxlbWVudCo+JiBIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlv
bjo6Zm9ybUNvbnRyb2xFbGVtZW50cygpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGJhc2UoKSk7CiAg
ICAgQVNTRVJUKGJhc2UoKS0+aGFzVGFnTmFtZShmb3JtVGFnKSB8fCBiYXNlKCktPmhhc1RhZ05h
bWUoZmllbGRzZXRUYWcpKTsKQEAgLTYwLDE0ICs2MCwxNCBAQCBjb25zdCBWZWN0b3I8Rm9ybUFz
c29jaWF0ZWRFbGVtZW50Kj4mIEhUCiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEhUTUxGaWVsZFNl
dEVsZW1lbnQqPihiYXNlKCkpLT5hc3NvY2lhdGVkRWxlbWVudHMoKTsKIH0KIAotY29uc3QgVmVj
dG9yPEhUTUxJbWFnZUVsZW1lbnQqPiYgSFRNTEZvcm1Db2xsZWN0aW9uOjpmb3JtSW1hZ2VFbGVt
ZW50cygpIGNvbnN0Citjb25zdCBWZWN0b3I8SFRNTEltYWdlRWxlbWVudCo+JiBIVE1MRm9ybUNv
bnRyb2xzQ29sbGVjdGlvbjo6Zm9ybUltYWdlRWxlbWVudHMoKSBjb25zdAogewogICAgIEFTU0VS
VChiYXNlKCkpOwogICAgIEFTU0VSVChiYXNlKCktPmhhc1RhZ05hbWUoZm9ybVRhZykpOwogICAg
IHJldHVybiBzdGF0aWNfY2FzdDxIVE1MRm9ybUVsZW1lbnQqPihiYXNlKCkpLT5pbWFnZUVsZW1l
bnRzKCk7CiB9CiAKLUVsZW1lbnQqIEhUTUxGb3JtQ29sbGVjdGlvbjo6dmlydHVhbEl0ZW1BZnRl
cih1bnNpZ25lZCYgb2Zmc2V0LCBFbGVtZW50KiBwcmV2aW91c0l0ZW0pIGNvbnN0CitFbGVtZW50
KiBIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbjo6dmlydHVhbEl0ZW1BZnRlcih1bnNpZ25lZCYg
b2Zmc2V0LCBFbGVtZW50KiBwcmV2aW91c0l0ZW0pIGNvbnN0CiB7CiAgICAgY29uc3QgVmVjdG9y
PEZvcm1Bc3NvY2lhdGVkRWxlbWVudCo+JiBlbGVtZW50c0FycmF5ID0gZm9ybUNvbnRyb2xFbGVt
ZW50cygpOwogICAgIGlmIChwcmV2aW91c0l0ZW0pCkBAIC0xMDQsNyArMTA0LDcgQEAgc3RhdGlj
IEhUTUxFbGVtZW50KiBmaXJzdE5hbWVkSXRlbShjb25zdAogICAgIHJldHVybiAwOwogfQogCi1O
b2RlKiBIVE1MRm9ybUNvbGxlY3Rpb246Om5hbWVkSXRlbShjb25zdCBBdG9taWNTdHJpbmcmIG5h
bWUpIGNvbnN0CitOb2RlKiBIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbjo6bmFtZWRJdGVtKGNv
bnN0IEF0b21pY1N0cmluZyYgbmFtZSkgY29uc3QKIHsKICAgICAvLyBodHRwOi8vbXNkbi5taWNy
b3NvZnQuY29tL3dvcmtzaG9wL2F1dGhvci9kaHRtbC9yZWZlcmVuY2UvbWV0aG9kcy9uYW1lZGl0
ZW0uYXNwCiAgICAgLy8gVGhpcyBtZXRob2QgZmlyc3Qgc2VhcmNoZXMgZm9yIGFuIG9iamVjdCB3
aXRoIGEgbWF0Y2hpbmcgaWQKQEAgLTExOCw3ICsxMTgsNyBAQCBOb2RlKiBIVE1MRm9ybUNvbGxl
Y3Rpb246Om5hbWVkSXRlbShjb25zCiAgICAgcmV0dXJuIGZpcnN0TmFtZWRJdGVtKGZvcm1Db250
cm9sRWxlbWVudHMoKSwgaW1hZ2VzRWxlbWVudHMsIG5hbWVBdHRyLCBuYW1lKTsKIH0KIAotdm9p
ZCBIVE1MRm9ybUNvbGxlY3Rpb246OnVwZGF0ZU5hbWVDYWNoZSgpIGNvbnN0Cit2b2lkIEhUTUxG
b3JtQ29udHJvbHNDb2xsZWN0aW9uOjp1cGRhdGVOYW1lQ2FjaGUoKSBjb25zdAogewogICAgIGlm
IChoYXNOYW1lQ2FjaGUoKSkKICAgICAgICAgcmV0dXJuOwpJbmRleDogU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uaAkocmV2aXNpb24gMTMzNTUx
KQkoZnJvbSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29sbGVjdGlvbi5oOjEzMzU1MSkK
KysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uaAkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDU3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAxOTk5IExh
cnMgS25vbGwgKGtub2xsQGtkZS5vcmcpCisgKiAgICAgICAgICAgKEMpIDE5OTkgQW50dGkgS29p
dmlzdG8gKGtvaXZpc3RvQGtkZS5vcmcpCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDQsIDIw
MDUsIDIwMDYsIDIwMDcsIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp
dCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3Ig
KGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkg
aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1
dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5
IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt
b3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlz
IGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAq
IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwg
RmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqCisgKi8KKwor
I2lmbmRlZiBIVE1MRm9ybUNvbGxlY3Rpb25faAorI2RlZmluZSBIVE1MRm9ybUNvbGxlY3Rpb25f
aAorCisjaW5jbHVkZSAiSFRNTENvbGxlY3Rpb24uaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitjbGFzcyBGb3JtQXNzb2NpYXRlZEVsZW1lbnQ7CitjbGFzcyBIVE1MRWxlbWVudDsKK2NsYXNz
IEhUTUxJbWFnZUVsZW1lbnQ7CitjbGFzcyBRdWFsaWZpZWROYW1lOworLy8gVGhpcyBjbGFzcyBp
cyBqdXN0IGEgYmlnIGhhY2sgdG8gZmluZCBmb3JtIGVsZW1lbnRzIGV2ZW4gaW4gbWFsZm9ybWVk
IEhUTUwgZWxlbWVudHMuCisvLyBUaGUgZmFtb3VzIDx0YWJsZT48dHI+PGZvcm0+PHRkPiBwcm9i
bGVtLgorCitjbGFzcyBIVE1MRm9ybUNvbGxlY3Rpb24gOiBwdWJsaWMgSFRNTENvbGxlY3Rpb24g
eworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPEhUTUxGb3JtQ29sbGVjdGlvbj4gY3Jl
YXRlKEVsZW1lbnQqKTsKKworICAgIHZpcnR1YWwgfkhUTUxGb3JtQ29sbGVjdGlvbigpOworCisg
ICAgdmlydHVhbCBOb2RlKiBuYW1lZEl0ZW0oY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKSBjb25z
dDsKKworcHJpdmF0ZToKKyAgICBIVE1MRm9ybUNvbGxlY3Rpb24oRWxlbWVudCopOworCisgICAg
dmlydHVhbCB2b2lkIHVwZGF0ZU5hbWVDYWNoZSgpIGNvbnN0OworCisgICAgY29uc3QgVmVjdG9y
PEZvcm1Bc3NvY2lhdGVkRWxlbWVudCo+JiBmb3JtQ29udHJvbEVsZW1lbnRzKCkgY29uc3Q7Cisg
ICAgY29uc3QgVmVjdG9yPEhUTUxJbWFnZUVsZW1lbnQqPiYgZm9ybUltYWdlRWxlbWVudHMoKSBj
b25zdDsKKyAgICB2aXJ0dWFsIEVsZW1lbnQqIHZpcnR1YWxJdGVtQWZ0ZXIodW5zaWduZWQmIG9m
ZnNldEluQXJyYXksIEVsZW1lbnQqKSBjb25zdCBPVkVSUklERTsKK307CisKK30gLy9uYW1lc3Bh
Y2UKKworI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbHND
b2xsZWN0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNv
bnRyb2xzQ29sbGVjdGlvbi5oCShyZXZpc2lvbiAxMzM1NTEpCisrKyBTb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTIwLDgg
KzIwLDggQEAKICAqCiAgKi8KIAotI2lmbmRlZiBIVE1MRm9ybUNvbGxlY3Rpb25faAotI2RlZmlu
ZSBIVE1MRm9ybUNvbGxlY3Rpb25faAorI2lmbmRlZiBIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlv
bl9oCisjZGVmaW5lIEhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uX2gKIAogI2luY2x1ZGUgIkhU
TUxDb2xsZWN0aW9uLmgiCiAKQEAgLTM0LDE2ICszNCwxNiBAQCBjbGFzcyBRdWFsaWZpZWROYW1l
OwogLy8gVGhpcyBjbGFzcyBpcyBqdXN0IGEgYmlnIGhhY2sgdG8gZmluZCBmb3JtIGVsZW1lbnRz
IGV2ZW4gaW4gbWFsZm9ybWVkIEhUTUwgZWxlbWVudHMuCiAvLyBUaGUgZmFtb3VzIDx0YWJsZT48
dHI+PGZvcm0+PHRkPiBwcm9ibGVtLgogCi1jbGFzcyBIVE1MRm9ybUNvbGxlY3Rpb24gOiBwdWJs
aWMgSFRNTENvbGxlY3Rpb24geworY2xhc3MgSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24gOiBw
dWJsaWMgSFRNTENvbGxlY3Rpb24gewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEhU
TUxGb3JtQ29sbGVjdGlvbj4gY3JlYXRlKEVsZW1lbnQqKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0
cjxIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbj4gY3JlYXRlKEVsZW1lbnQqKTsKIAotICAgIHZp
cnR1YWwgfkhUTUxGb3JtQ29sbGVjdGlvbigpOworICAgIHZpcnR1YWwgfkhUTUxGb3JtQ29udHJv
bHNDb2xsZWN0aW9uKCk7CiAKICAgICB2aXJ0dWFsIE5vZGUqIG5hbWVkSXRlbShjb25zdCBBdG9t
aWNTdHJpbmcmIG5hbWUpIGNvbnN0OwogCiBwcml2YXRlOgotICAgIEhUTUxGb3JtQ29sbGVjdGlv
bihFbGVtZW50Kik7CisgICAgSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24oRWxlbWVudCopOwog
CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZU5hbWVDYWNoZSgpIGNvbnN0OwogCkBAIC01Miw2ICs1
Miw2IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBFbGVtZW50KiB2aXJ0dWFsSXRlbUFmdGVyKHVu
c2lnbmVkJiBvZmZzZXRJbkFycmF5LCBFbGVtZW50KikgY29uc3QgT1ZFUlJJREU7CiB9OwogCi19
IC8vbmFtZXNwYWNlCit9IC8vIG5hbWVzcGFjZQogCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uaWRsCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uaWRsCShyZXZpc2lv
biAwKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5p
ZGwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MDYsIDIwMDcsIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDA2IFNhbXVlbCBXZWluaWcgPHNhbS53ZWluaWdAZ21haWwuY29tPgorICoKKyAq
IFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh
bmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0
IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMg
ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBX
SVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m
CisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu
ICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl
IGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxp
YnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlm
dGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCitbCisgICAg
SW5kZXhlZEdldHRlciwKKyAgICBOYW1lZEdldHRlciwKKyAgICBHZW5lcmF0ZUlzUmVhY2hhYmxl
PUltcGxCYXNlUm9vdCwKKyAgICBWOERlcGVuZGVudExpZmV0aW1lLAorXSBpbnRlcmZhY2UgSFRN
TEZvcm1Db250cm9sc0NvbGxlY3Rpb24gOiBIVE1MQ29sbGVjdGlvbiB7CisgICAgW0N1c3RvbV0g
Tm9kZSBuYW1lZEl0ZW0oaW4gW09wdGlvbmFsPURlZmF1bHRJc1VuZGVmaW5lZF0gRE9NU3RyaW5n
IG5hbWUpOworfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5jcHAJ
KHJldmlzaW9uIDEzNDA5MikKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDAsOCArNDAsOCBAQAogI2luY2x1ZGUgIkZyYW1lLmgi
CiAjaW5jbHVkZSAiRnJhbWVMb2FkZXIuaCIKICNpbmNsdWRlICJGcmFtZUxvYWRlckNsaWVudC5o
IgorI2luY2x1ZGUgIkhUTUxDb2xsZWN0aW9uLmgiCiAjaW5jbHVkZSAiSFRNTERvY3VtZW50Lmgi
Ci0jaW5jbHVkZSAiSFRNTEZvcm1Db2xsZWN0aW9uLmgiCiAjaW5jbHVkZSAiSFRNTEltYWdlRWxl
bWVudC5oIgogI2luY2x1ZGUgIkhUTUxJbnB1dEVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTmFt
ZXMuaCIKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuaAkocmV2aXNpb24g
MTM0MDkyKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzgsNyArMzgsNiBAQCBjbGFzcyBGb3JtRGF0YTsKIGNsYXNzIEhUTUxGb3Jt
Q29udHJvbEVsZW1lbnQ7CiBjbGFzcyBIVE1MSW1hZ2VFbGVtZW50OwogY2xhc3MgSFRNTElucHV0
RWxlbWVudDsKLWNsYXNzIEhUTUxGb3JtQ29sbGVjdGlvbjsKIGNsYXNzIFRleHRFbmNvZGluZzsK
IAogY2xhc3MgSFRNTEZvcm1FbGVtZW50IDogcHVibGljIEhUTUxFbGVtZW50IHsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlvbnNDb2xsZWN0aW9uLmlkbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRpb25zQ29sbGVjdGlvbi5pZGwJKHJldmlzaW9u
IDEzNDA5MikKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlvbnNDb2xsZWN0aW9uLmlk
bAkod29ya2luZyBjb3B5KQpAQCAtMjAsMTEgKzIwLDE2IEBACiAKIFsKICAgICBKU0dlbmVyYXRl
VG9OYXRpdmVPYmplY3QsCi0gICAgQ3VzdG9tSW5kZXhlZFNldHRlcgorICAgIEN1c3RvbUluZGV4
ZWRTZXR0ZXIsCisgICAgTmFtZWRHZXR0ZXIsCisgICAgR2VuZXJhdGVJc1JlYWNoYWJsZT1JbXBs
QmFzZVJvb3QsCisgICAgVjhEZXBlbmRlbnRMaWZldGltZSwKIF0gaW50ZXJmYWNlIEhUTUxPcHRp
b25zQ29sbGVjdGlvbiA6IEhUTUxDb2xsZWN0aW9uIHsKLSAgICAgICAgICAgICBhdHRyaWJ1dGUg
bG9uZyBzZWxlY3RlZEluZGV4OwotICAgICAgICAgICAgIFtDdXN0b21dIGF0dHJpYnV0ZSB1bnNp
Z25lZCBsb25nIGxlbmd0aAotICAgICAgICAgICAgICAgICAgICBzZXR0ZXIgcmFpc2VzIChET01F
eGNlcHRpb24pOworICAgIGF0dHJpYnV0ZSBsb25nIHNlbGVjdGVkSW5kZXg7CisgICAgW0N1c3Rv
bV0gYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgbGVuZ3RoCisgICAgICAgIHNldHRlciByYWlzZXMg
KERPTUV4Y2VwdGlvbik7CisKKyAgICBbQ3VzdG9tXSBOb2RlIG5hbWVkSXRlbShpbiBbT3B0aW9u
YWw9RGVmYXVsdElzVW5kZWZpbmVkXSBET01TdHJpbmcgbmFtZSk7CiAKICAgICBbQ3VzdG9tXSB2
b2lkIGFkZChpbiBbT3B0aW9uYWw9RGVmYXVsdElzVW5kZWZpbmVkXSBIVE1MT3B0aW9uRWxlbWVu
dCBvcHRpb24sIAogICAgICAgICAgICAgICAgICAgICAgIGluIFtPcHRpb25hbF0gdW5zaWduZWQg
bG9uZyBpbmRleCkKQEAgLTMyLDggKzM3LDcgQEAKICAgICBbQ3VzdG9tXSB2b2lkIHJlbW92ZShp
biBbT3B0aW9uYWw9RGVmYXVsdElzVW5kZWZpbmVkXSB1bnNpZ25lZCBsb25nIGluZGV4KTsKIAog
I2lmIGRlZmluZWQoTEFOR1VBR0VfT0JKRUNUSVZFX0MpICYmIExBTkdVQUdFX09CSkVDVElWRV9D
Ci0gICAgTm9kZSBpdGVtKGluIHVuc2lnbmVkIGxvbmcgaW5kZXgpOyAKLSAgICBOb2RlIG5hbWVk
SXRlbShpbiBET01TdHJpbmcgbmFtZSk7IAorICAgIE5vZGUgaXRlbShpbiB1bnNpZ25lZCBsb25n
IGluZGV4KTsKICNlbmRpZgogfTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5k
b3cuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmlkbAko
cmV2aXNpb24gMTM0MDkyKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsCSh3
b3JraW5nIGNvcHkpCkBAIC00NjksNiArNDY5LDggQEAKIAogICAgIGF0dHJpYnV0ZSBIVE1MQ29s
bGVjdGlvbkNvbnN0cnVjdG9yIEhUTUxDb2xsZWN0aW9uOwogICAgIGF0dHJpYnV0ZSBIVE1MQWxs
Q29sbGVjdGlvbkNvbnN0cnVjdG9yIEhUTUxBbGxDb2xsZWN0aW9uOworICAgIGF0dHJpYnV0ZSBI
VE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbkNvbnN0cnVjdG9yIEhUTUxGb3JtQ29udHJvbHNDb2xs
ZWN0aW9uOworICAgIGF0dHJpYnV0ZSBIVE1MT3B0aW9uc0NvbGxlY3Rpb25Db25zdHJ1Y3RvciBI
VE1MT3B0aW9uc0NvbGxlY3Rpb247CiAgICAgW0NvbmRpdGlvbmFsPU1JQ1JPREFUQV0gYXR0cmli
dXRlIEhUTUxQcm9wZXJ0aWVzQ29sbGVjdGlvbkNvbnN0cnVjdG9yIEhUTUxQcm9wZXJ0aWVzQ29s
bGVjdGlvbjsKICAgICBhdHRyaWJ1dGUgSFRNTFVua25vd25FbGVtZW50Q29uc3RydWN0b3IgSFRN
TFVua25vd25FbGVtZW50OwogCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMzQwOTIpCisrKyBMYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyNyBAQAorMjAxMi0xMS0w
NiAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KKworICAgICAgICBNYWtlIG5hbWVk
SXRlbSByZXR1cm4gYSBub2RlIGxpc3Qgb25seSBpbiBIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlv
biBhbmQgSFRNTE9wdGlvbnNDb2xsZWN0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMDEzMTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBBZGRlZCBhIHJlZ3Jlc3Npb24gdGVzdCB0byBlbnN1cmUgZm9y
bS5lbGVtZW50cyBhbmQgc2VsZWN0Lm9wdGlvbnMgdXNlIGNvcnJlY3QgaW50ZXJmYWNlcywKKyAg
ICAgICAgYW5kIG5hbWVkIGdldHRlciBmb3IgdGhvc2UgdHdvIHByb3BlcnRpZXMgcmV0dXJuIGEg
Tm9kZUxpc3Qgd2hlbiB0aGVyZSBhcmUgbXVsdGlwbGUgbWF0Y2hlcy4KKworICAgICAgICBBbHNv
IGFkZGVkIGFwcHJvcHJpYXRlIElETCBvcHRpb25zIHRvIEhUTUxPcHRpb25zQ29sbGVjdGlvbi5p
ZGwuCisKKyAgICAgICAgKiBmYXN0L2RvbS9jb2xsZWN0aW9uLW5hbWVkaXRlbS1tb3ZlLWJldHdl
ZW4tZG9jdW1lbnRzLWV4cGVjdGVkLnR4dDogUmViYXNlbGluZWQgc2luY2UgbmFtZWRJdGVtCisg
ICAgICAgIG5vdyBjb3JyZWN0bHkgcmV0dXJucyBudWxsIHdoZW4gdGhlcmUgaXMgbm8gbWF0Y2gu
IFRoaXMgdGVzdCByZXN1bHQgZGVtb25zdHJhdGVzIGEgYnVnIHRoYXQKKyAgICAgICAgSFRNTEFs
bENvbGxlY3Rpb24gZG9lc24ndCBpbmhlcml0IGZyb20gSFRNTENvbGxlY3Rpb24uCisgICAgICAg
ICogZmFzdC9kb20vY29sbGVjdGlvbi1uYW1lZGl0ZW0tbW92ZS1iZXR3ZWVuLWRvY3VtZW50cy5o
dG1sOiBEaXR0by4KKyAgICAgICAgKiBmYXN0L2RvbS9kb20tY29uc3RydWN0b3JzLWV4cGVjdGVk
LnR4dDogUmViYXNlbGluZWQuCisgICAgICAgICogZmFzdC9kb20vaHRtbC1jb2xsZWN0aW9ucy1u
YW1lZC1nZXR0ZXItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9odG1s
LWNvbGxlY3Rpb25zLW5hbWVkLWdldHRlci5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Rv
bS93cmFwcGVyLWNsYXNzZXMtZXhwZWN0ZWQudHh0OiBSZWJhc2VsaW5lZC4KKyAgICAgICAgKiBp
bnNwZWN0b3IvY29uc29sZS9jb25zb2xlLWZvcm1hdC1jb2xsZWN0aW9ucy1leHBlY3RlZC50eHQ6
IFJlYmFzZWxpbmVkLgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZG9tL2djLTkt
ZXhwZWN0ZWQudHh0OiBSZWJhc2VsaW5lZCBzaW5jZSBhIHRlc3QgY2FzZSBmb3IKKyAgICAgICAg
SFRNTE9wdGlvbnNDb2xsZWN0aW9uIG5vdyBwYXNzZXMuCisKIDIwMTItMTEtMDkgIFphbiBEb2Jl
cnNlayAgPHphbmRvYmVyc2VrQGdtYWlsLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkIEdUSyBn
YXJkZW5pbmcuCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9jb2xsZWN0aW9uLW5hbWVkaXRl
bS1tb3ZlLWJldHdlZW4tZG9jdW1lbnRzLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9mYXN0L2RvbS9jb2xsZWN0aW9uLW5hbWVkaXRlbS1tb3ZlLWJldHdlZW4tZG9jdW1l
bnRzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTM0MDkyKQorKysgTGF5b3V0VGVzdHMvZmFzdC9k
b20vY29sbGVjdGlvbi1uYW1lZGl0ZW0tbW92ZS1iZXR3ZWVuLWRvY3VtZW50cy1leHBlY3RlZC50
eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsNCArMSw0IEBACi1QQVNTIHR5cGVvZiBjaGlsZHJlbi5u
YW1lZEl0ZW0oJ2NoaWxkJykgaXMgJ3VuZGVmaW5lZCcKK1BBU1MgY2hpbGRyZW4ubmFtZWRJdGVt
KCdjaGlsZCcpIGlzIG51bGwKIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIAogVEVT
VCBDT01QTEVURQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vY29sbGVjdGlvbi1uYW1lZGl0
ZW0tbW92ZS1iZXR3ZWVuLWRvY3VtZW50cy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2Zhc3QvZG9tL2NvbGxlY3Rpb24tbmFtZWRpdGVtLW1vdmUtYmV0d2Vlbi1kb2N1bWVudHMuaHRt
bAkocmV2aXNpb24gMTM0MDkyKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vY29sbGVjdGlvbi1u
YW1lZGl0ZW0tbW92ZS1iZXR3ZWVuLWRvY3VtZW50cy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0z
Myw3ICszMyw3IEBAIHdpbmRvdy5vbmxvYWQgPSBmdW5jdGlvbigpCiBmdW5jdGlvbiBzdGVwMigp
CiB7CiAgICAgZG9jdW1lbnQuYWRvcHROb2RlKGVsZW1lbnQpOwotICAgIHNob3VsZEJlKCJ0eXBl
b2YgY2hpbGRyZW4ubmFtZWRJdGVtKCdjaGlsZCcpIiwgIid1bmRlZmluZWQnIik7CisgICAgc2hv
dWxkQmVOdWxsKCJjaGlsZHJlbi5uYW1lZEl0ZW0oJ2NoaWxkJykiKTsKICAgICBmaW5pc2hKU1Rl
c3QoKTsKIH0KIDwvc2NyaXB0PgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vZG9tLWNvbnN0
cnVjdG9ycy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20v
ZG9tLWNvbnN0cnVjdG9ycy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDEzNDA5MikKKysrIExheW91
dFRlc3RzL2Zhc3QvZG9tL2RvbS1jb25zdHJ1Y3RvcnMtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNv
cHkpCkBAIC0xMTgsNyArMTE4LDcgQEAgRkFJTCBUcnlBbGxvY2F0ZSgnQ29uc29sZScpIHNob3Vs
ZCBiZSBleAogUEFTUyBUcnlBbGxvY2F0ZSgnU2VsZWN0aW9uJykgaXMgJ2V4Y2VwdGlvbicKIFBB
U1MgVHJ5QWxsb2NhdGUoJ1dpbmRvdycpIGlzICdleGNlcHRpb24nCiBGQUlMIFRyeUFsbG9jYXRl
KCdIaXN0b3J5Jykgc2hvdWxkIGJlIGV4Y2VwdGlvbi4gV2FzIG5vIGNvbnN0cnVjdG9yLgotRkFJ
TCBUcnlBbGxvY2F0ZSgnSFRNTE9wdGlvbnNDb2xsZWN0aW9uJykgc2hvdWxkIGJlIGV4Y2VwdGlv
bi4gV2FzIG5vIGNvbnN0cnVjdG9yLgorUEFTUyBUcnlBbGxvY2F0ZSgnSFRNTE9wdGlvbnNDb2xs
ZWN0aW9uJykgaXMgJ2V4Y2VwdGlvbicKIEZBSUwgVHJ5QWxsb2NhdGUoJ0xvY2F0aW9uJykgc2hv
dWxkIGJlIGV4Y2VwdGlvbi4gV2FzIG5vIGNvbnN0cnVjdG9yLgogRkFJTCBUcnlBbGxvY2F0ZSgn
TmF2aWdhdG9yJykgc2hvdWxkIGJlIGV4Y2VwdGlvbi4gV2FzIG5vIGNvbnN0cnVjdG9yLgogRkFJ
TCBUcnlBbGxvY2F0ZSgnTm9kZUl0ZXJhdG9yJykgc2hvdWxkIGJlIGV4Y2VwdGlvbi4gV2FzIG5v
IGNvbnN0cnVjdG9yLgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vaHRtbC1jb2xsZWN0aW9u
cy1uYW1lZC1nZXR0ZXItZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zh
c3QvZG9tL2h0bWwtY29sbGVjdGlvbnMtbmFtZWQtZ2V0dGVyLWV4cGVjdGVkLnR4dAkocmV2aXNp
b24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL2h0bWwtY29sbGVjdGlvbnMtbmFtZWQtZ2V0
dGVyLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMDEgQEAKK1RoaXMgdGVz
dHMgdmVyaWZpZXMgdGhhdCBuYW1lZEl0ZW0gYW5kIG5hbWVkIGdldHRlciByZXR1cm5zIHRoZSBm
aXJzdCBtYXRjaGVkIGl0ZW0gZm9yIGFsbCBidXQgYWxsLCBvcHRpb25zLCBhbmQgZm9ybSBjb250
cm9scyBjb2xsZWN0aW9ucy4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9m
ICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK2RvY3Vt
ZW50LmFsbAorUEFTUyBkb2N1bWVudC5hbGwgaW5zdGFuY2VvZiBIVE1MQWxsQ29sbGVjdGlvbiBp
cyB0cnVlCitGQUlMIGRvY3VtZW50LmFsbCBpbnN0YW5jZW9mIEhUTUxDb2xsZWN0aW9uIHNob3Vs
ZCBiZSB0cnVlLiBXYXMgZmFsc2UuCitQQVNTIGluaXRpYWxMZW5ndGggPSBkb2N1bWVudC5hbGwu
bGVuZ3RoOyBlbGVtZW50cyA9IFtpbnNlcnRFbGVtZW50V2l0aElkKCdiJywgJ2ZvbycpLCBpbnNl
cnRFbGVtZW50V2l0aElkKCdxJywgJ2ZvbycpXTsKKyAgICAgZG9jdW1lbnQuYWxsLmxlbmd0aCBp
cyBpbml0aWFsTGVuZ3RoICsgMjsKK1BBU1MgZG9jdW1lbnQuYWxsWydmb28nXS5sZW5ndGggaXMg
MgorUEFTUyBkb2N1bWVudC5hbGxbJ2ZvbyddWzBdIGlzIGVsZW1lbnRzWzBdCitQQVNTIGRvY3Vt
ZW50LmFsbFsnZm9vJ11bMV0gaXMgZWxlbWVudHNbMV0KK1BBU1MgZWxlbWVudHNbMF0ucGFyZW50
Tm9kZS5yZW1vdmVDaGlsZChlbGVtZW50c1swXSk7IGRvY3VtZW50LmFsbFsnZm9vJ10gaXMgZWxl
bWVudHNbMV0KKworZm9ybS5lbGVtZW50cworUEFTUyBmb3JtLmVsZW1lbnRzIGluc3RhbmNlb2Yg
SFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24gaXMgdHJ1ZQorUEFTUyBmb3JtLmVsZW1lbnRzIGlu
c3RhbmNlb2YgSFRNTENvbGxlY3Rpb24gaXMgdHJ1ZQorUEFTUyBmb3JtLmVsZW1lbnRzLmxlbmd0
aCBpcyAwCitQQVNTIGVsZW1lbnRzID0gW2NyZWF0ZUVsZW1lbnRXaXRoSWQoJ2lucHV0JywgJ2Zv
bycpLCBjcmVhdGVFbGVtZW50V2l0aElkKCdpbnB1dCcsICdmb28nKV07CisgICAgIGZvcm0uYXBw
ZW5kQ2hpbGQoZWxlbWVudHNbMF0pOyBmb3JtLmVsZW1lbnRzLmxlbmd0aCBpcyAxCitQQVNTIGZv
cm0uZWxlbWVudHNbJ2ZvbyddIGlzIGVsZW1lbnRzWzBdCitQQVNTIGZvcm0uYXBwZW5kQ2hpbGQo
ZWxlbWVudHNbMV0pOyBmb3JtLmVsZW1lbnRzLmxlbmd0aCBpcyAyCitQQVNTIGZvcm0uZWxlbWVu
dHNbJ2ZvbyddLnRvU3RyaW5nKCkgaXMgJ1tvYmplY3QgUmFkaW9Ob2RlTGlzdF0nCitQQVNTIGZv
cm0uZWxlbWVudHNbJ2ZvbyddLmxlbmd0aCBpcyAyCitQQVNTIGZvcm0uZWxlbWVudHNbJ2Zvbydd
WzBdIGlzIGVsZW1lbnRzWzBdCitQQVNTIGZvcm0uZWxlbWVudHNbJ2ZvbyddWzFdIGlzIGVsZW1l
bnRzWzFdCitQQVNTIGZvcm0ucmVtb3ZlQ2hpbGQoZWxlbWVudHNbMF0pOyBmb3JtLmVsZW1lbnRz
Wydmb28nXSBpcyBlbGVtZW50c1sxXQorUEFTUyByZW1vdmVUZXN0RWxlbWVudHMoKTsgZm9ybS5l
bGVtZW50cy5sZW5ndGggaXMgMAorCitzZWxlY3Qub3B0aW9ucworUEFTUyBmb3JtLmFwcGVuZENo
aWxkKGNyZWF0ZUVsZW1lbnRXaXRoSWQoJ3NlbGVjdCcsICdiYXInKSk7IGZvcm0uZWxlbWVudHMu
bGVuZ3RoIGlzIDEKK1BBU1Mgc2VsZWN0ID0gZm9ybS5lbGVtZW50c1swXTsgc2VsZWN0Lm9wdGlv
bnMgaW5zdGFuY2VvZiBIVE1MT3B0aW9uc0NvbGxlY3Rpb24gaXMgdHJ1ZQorUEFTUyBzZWxlY3Qu
b3B0aW9ucyBpbnN0YW5jZW9mIEhUTUxDb2xsZWN0aW9uIGlzIHRydWUKK1BBU1Mgc2VsZWN0Lm9w
dGlvbnMubGVuZ3RoIGlzIDAKK1BBU1MgZWxlbWVudHMgPSBbY3JlYXRlRWxlbWVudFdpdGhJZCgn
b3B0aW9uJywgJ2ZvbycpLCBjcmVhdGVFbGVtZW50V2l0aElkKCdvcHRpb24nLCAnZm9vJyldOwor
ICAgICBzZWxlY3QuYXBwZW5kQ2hpbGQoZWxlbWVudHNbMF0pOyBzZWxlY3Qub3B0aW9ucy5sZW5n
dGggaXMgMQorUEFTUyBzZWxlY3Qub3B0aW9uc1snZm9vJ10gaXMgZWxlbWVudHNbMF0KK1BBU1Mg
c2VsZWN0LmFwcGVuZENoaWxkKGVsZW1lbnRzWzFdKTsgc2VsZWN0Lm9wdGlvbnMubGVuZ3RoIGlz
IDIKK1BBU1Mgc2VsZWN0Lm9wdGlvbnNbJ2ZvbyddLnRvU3RyaW5nKCkgaXMgJ1tvYmplY3QgTm9k
ZUxpc3RdJworUEFTUyBzZWxlY3Qub3B0aW9uc1snZm9vJ10ubGVuZ3RoIGlzIDIKK1BBU1Mgc2Vs
ZWN0Lm9wdGlvbnNbJ2ZvbyddWzBdIGlzIGVsZW1lbnRzWzBdCitQQVNTIHNlbGVjdC5vcHRpb25z
Wydmb28nXVsxXSBpcyBlbGVtZW50c1sxXQorUEFTUyBzZWxlY3QucmVtb3ZlQ2hpbGQoZWxlbWVu
dHNbMF0pOyBzZWxlY3Qub3B0aW9uc1snZm9vJ10gaXMgZWxlbWVudHNbMV0KK1BBU1Mgc2VsZWN0
LmlubmVySFRNTCA9ICcnOyBzZWxlY3Qub3B0aW9ucy5sZW5ndGggaXMgMAorUEFTUyByZW1vdmVU
ZXN0RWxlbWVudHMoKTsgZm9ybS5lbGVtZW50cy5sZW5ndGggaXMgMAorCitkb2N1bWVudC5pbWFn
ZXMKK1BBU1MgZG9jdW1lbnQuaW1hZ2VzLmxlbmd0aCBpcyAwCitQQVNTIGVsZW1lbnRzWzBdID0g
aW5zZXJ0RWxlbWVudFdpdGhJZCgnaW1nJywgJ2ZvbycpOyBkb2N1bWVudC5pbWFnZXMubGVuZ3Ro
IGlzIDEKK1BBU1MgZWxlbWVudHNbMV0gPSBpbnNlcnRFbGVtZW50V2l0aElkKCdpbWcnLCAnZm9v
Jyk7IGRvY3VtZW50LmltYWdlcy5sZW5ndGggaXMgMgorUEFTUyBkb2N1bWVudC5pbWFnZXNbJ2Zv
byddIGlzIGVsZW1lbnRzWzBdCitQQVNTIHJlbW92ZVRlc3RFbGVtZW50cygpOyBkb2N1bWVudC5p
bWFnZXMubGVuZ3RoIGlzIDAKKworZG9jdW1lbnQuYXBwbGV0cworUEFTUyBkb2N1bWVudC5hcHBs
ZXRzLmxlbmd0aCBpcyAwCitQQVNTIGVsZW1lbnRzWzBdID0gaW5zZXJ0RWxlbWVudFdpdGhJZCgn
YXBwbGV0JywgJ2ZvbycpOyBkb2N1bWVudC5hcHBsZXRzLmxlbmd0aCBpcyAxCitQQVNTIGVsZW1l
bnRzWzFdID0gaW5zZXJ0RWxlbWVudFdpdGhJZCgnYXBwbGV0JywgJ2ZvbycpOyBkb2N1bWVudC5h
cHBsZXRzLmxlbmd0aCBpcyAyCitQQVNTIGRvY3VtZW50LmFwcGxldHNbJ2ZvbyddIGlzIGVsZW1l
bnRzWzBdCitQQVNTIHJlbW92ZVRlc3RFbGVtZW50cygpOyBkb2N1bWVudC5hcHBsZXRzLmxlbmd0
aCBpcyAwCisKK2RvY3VtZW50LmVtYmVkcworUEFTUyBkb2N1bWVudC5lbWJlZHMubGVuZ3RoIGlz
IDAKK1BBU1MgZWxlbWVudHNbMF0gPSBpbnNlcnRFbGVtZW50V2l0aElkKCdlbWJlZCcsICdmb28n
KTsgZG9jdW1lbnQuZW1iZWRzLmxlbmd0aCBpcyAxCitQQVNTIGVsZW1lbnRzWzFdID0gaW5zZXJ0
RWxlbWVudFdpdGhJZCgnZW1iZWQnLCAnZm9vJyk7IGRvY3VtZW50LmVtYmVkcy5sZW5ndGggaXMg
MgorUEFTUyBkb2N1bWVudC5lbWJlZHNbJ2ZvbyddIGlzIGVsZW1lbnRzWzBdCitQQVNTIHJlbW92
ZVRlc3RFbGVtZW50cygpOyBkb2N1bWVudC5lbWJlZHMubGVuZ3RoIGlzIDAKKworZG9jdW1lbnQu
Zm9ybXMKK1BBU1MgZG9jdW1lbnQuZm9ybXMubGVuZ3RoIGlzIDEKK1BBU1MgZWxlbWVudHNbMF0g
PSBpbnNlcnRFbGVtZW50V2l0aElkKCdmb3JtJywgJ2ZvbycpOyBkb2N1bWVudC5mb3Jtcy5sZW5n
dGggaXMgMgorUEFTUyBlbGVtZW50c1sxXSA9IGluc2VydEVsZW1lbnRXaXRoSWQoJ2Zvcm0nLCAn
Zm9vJyk7IGRvY3VtZW50LmZvcm1zLmxlbmd0aCBpcyAzCitQQVNTIGRvY3VtZW50LmZvcm1zWydm
b28nXSBpcyBlbGVtZW50c1swXQorUEFTUyByZW1vdmVUZXN0RWxlbWVudHMoKTsgZG9jdW1lbnQu
Zm9ybXMubGVuZ3RoIGlzIDEKKworZG9jdW1lbnQubGlua3MKK1BBU1MgZG9jdW1lbnQubGlua3Mu
bGVuZ3RoIGlzIDAKK1BBU1MgZWxlbWVudHNbMF0gPSBpbnNlcnRFbGVtZW50V2l0aElkKCdhJywg
J2ZvbycsIHsiaHJlZiI6InNvbWUgdXJsIn0pOyBkb2N1bWVudC5saW5rcy5sZW5ndGggaXMgMQor
UEFTUyBlbGVtZW50c1sxXSA9IGluc2VydEVsZW1lbnRXaXRoSWQoJ2EnLCAnZm9vJywgeyJocmVm
Ijoic29tZSB1cmwifSk7IGRvY3VtZW50LmxpbmtzLmxlbmd0aCBpcyAyCitQQVNTIGVsZW1lbnRz
WzJdID0gaW5zZXJ0RWxlbWVudFdpdGhJZCgnYXJlYScsICdmb28nLCB7ImhyZWYiOiJzb21lIHVy
bCJ9KTsgZG9jdW1lbnQubGlua3MubGVuZ3RoIGlzIDMKK1BBU1MgZG9jdW1lbnQubGlua3NbJ2Zv
byddIGlzIGVsZW1lbnRzWzBdCitQQVNTIHJlbW92ZVRlc3RFbGVtZW50cygpOyBkb2N1bWVudC5s
aW5rcy5sZW5ndGggaXMgMAorCitkb2N1bWVudC5hbmNob3JzCitQQVNTIGRvY3VtZW50LmFuY2hv
cnMubGVuZ3RoIGlzIDAKK1BBU1MgZWxlbWVudHNbMF0gPSBpbnNlcnRFbGVtZW50V2l0aElkKCdh
JywgJ2ZvbycsIHsibmFtZSI6InNvbWUgbmFtZSJ9KTsgZG9jdW1lbnQuYW5jaG9ycy5sZW5ndGgg
aXMgMQorUEFTUyBlbGVtZW50c1sxXSA9IGluc2VydEVsZW1lbnRXaXRoSWQoJ2EnLCAnZm9vJywg
eyJuYW1lIjoic29tZSBuYW1lIn0pOyBkb2N1bWVudC5hbmNob3JzLmxlbmd0aCBpcyAyCitQQVNT
IGRvY3VtZW50LmFuY2hvcnNbJ2ZvbyddIGlzIGVsZW1lbnRzWzBdCitQQVNTIHJlbW92ZVRlc3RF
bGVtZW50cygpOyBkb2N1bWVudC5hbmNob3JzLmxlbmd0aCBpcyAwCisKK2RvY3VtZW50LnNjcmlw
dHMKK1BBU1MgZG9jdW1lbnQuc2NyaXB0cy5sZW5ndGggaXMgMgorUEFTUyBlbGVtZW50c1swXSA9
IGluc2VydEVsZW1lbnRXaXRoSWQoJ3NjcmlwdCcsICdmb28nKTsgZG9jdW1lbnQuc2NyaXB0cy5s
ZW5ndGggaXMgMworUEFTUyBlbGVtZW50c1sxXSA9IGluc2VydEVsZW1lbnRXaXRoSWQoJ3Njcmlw
dCcsICdmb28nKTsgZG9jdW1lbnQuc2NyaXB0cy5sZW5ndGggaXMgNAorUEFTUyBkb2N1bWVudC5z
Y3JpcHRzWydmb28nXSBpcyBlbGVtZW50c1swXQorUEFTUyByZW1vdmVUZXN0RWxlbWVudHMoKTsg
ZG9jdW1lbnQuc2NyaXB0cy5sZW5ndGggaXMgMgorCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBp
cyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vaHRt
bC1jb2xsZWN0aW9ucy1uYW1lZC1nZXR0ZXIuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9mYXN0L2RvbS9odG1sLWNvbGxlY3Rpb25zLW5hbWVkLWdldHRlci5odG1sCShyZXZpc2lvbiAw
KQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vaHRtbC1jb2xsZWN0aW9ucy1uYW1lZC1nZXR0ZXIu
aHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMDQgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0
bWw+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMi
Pjwvc2NyaXB0PgorPGRpdiBpZD0iY29udGFpbmVyIj48L2Rpdj4KKzxmb3JtPjwvZm9ybT4KKzxz
Y3JpcHQ+CisKK2Rlc2NyaXB0aW9uKCJUaGlzIHRlc3RzIHZlcmlmaWVzIHRoYXQgbmFtZWRJdGVt
IGFuZCBuYW1lZCBnZXR0ZXIgcmV0dXJucyB0aGUgZmlyc3QgbWF0Y2hlZCBpdGVtIGZvciBhbGwg
YnV0IGFsbCwgb3B0aW9ucywgYW5kIGZvcm0gY29udHJvbHMgY29sbGVjdGlvbnMuIik7CisKK2Z1
bmN0aW9uIGNyZWF0ZUVsZW1lbnRXaXRoSWQobmFtZSwgaWQsIGF0dHJpYnV0ZXMpIHsKKyAgICB2
YXIgZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQobmFtZSk7CisgICAgZWxlbWVudC5p
ZCA9IGlkOworICAgIGZvciAodmFyIGF0dHIgaW4gYXR0cmlidXRlcykKKyAgICAgICAgZWxlbWVu
dC5zZXRBdHRyaWJ1dGUoYXR0ciwgYXR0cmlidXRlc1thdHRyXSk7CisgICAgcmV0dXJuIGVsZW1l
bnQ7Cit9CisKK2Z1bmN0aW9uIGluc2VydEVsZW1lbnRXaXRoSWQobmFtZSwgaWQsIGF0dHJpYnV0
ZXMpIHsKKyAgICB2YXIgZWxlbWVudCA9IGNyZWF0ZUVsZW1lbnRXaXRoSWQobmFtZSwgaWQsIGF0
dHJpYnV0ZXMpOworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb250YWluZXInKS5hcHBl
bmRDaGlsZChlbGVtZW50KTsKKyAgICByZXR1cm4gZWxlbWVudDsKK30KKworZnVuY3Rpb24gcmVt
b3ZlVGVzdEVsZW1lbnRzKCkgeworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb250YWlu
ZXInKS5pbm5lckhUTUwgPSAnJzsKKyAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdmb3JtJyku
aW5uZXJIVE1MID0gJyc7Cit9CisKK3ZhciBlbGVtZW50czsKK2RlYnVnKCdkb2N1bWVudC5hbGwn
KTsKK3Nob3VsZEJlVHJ1ZSgiZG9jdW1lbnQuYWxsIGluc3RhbmNlb2YgSFRNTEFsbENvbGxlY3Rp
b24iKTsKK3Nob3VsZEJlVHJ1ZSgiZG9jdW1lbnQuYWxsIGluc3RhbmNlb2YgSFRNTENvbGxlY3Rp
b24iKTsKK3Nob3VsZEJlKCJpbml0aWFsTGVuZ3RoID0gZG9jdW1lbnQuYWxsLmxlbmd0aDsgZWxl
bWVudHMgPSBbaW5zZXJ0RWxlbWVudFdpdGhJZCgnYicsICdmb28nKSwgaW5zZXJ0RWxlbWVudFdp
dGhJZCgncScsICdmb28nKV07XG4iCisgICAgKyAiICAgICBkb2N1bWVudC5hbGwubGVuZ3RoIiwg
ImluaXRpYWxMZW5ndGggKyAyOyIpOworc2hvdWxkQmUoImRvY3VtZW50LmFsbFsnZm9vJ10ubGVu
Z3RoIiwgIjIiKTsKK3Nob3VsZEJlKCJkb2N1bWVudC5hbGxbJ2ZvbyddWzBdIiwgImVsZW1lbnRz
WzBdIik7CitzaG91bGRCZSgiZG9jdW1lbnQuYWxsWydmb28nXVsxXSIsICJlbGVtZW50c1sxXSIp
Oworc2hvdWxkQmUoImVsZW1lbnRzWzBdLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoZWxlbWVudHNb
MF0pOyBkb2N1bWVudC5hbGxbJ2ZvbyddIiwgJ2VsZW1lbnRzWzFdJyk7CitkZWJ1ZygiIik7CisK
K3ZhciBmb3JtID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignZm9ybScpOworZGVidWcoImZvcm0u
ZWxlbWVudHMiKTsKK3Nob3VsZEJlVHJ1ZSgiZm9ybS5lbGVtZW50cyBpbnN0YW5jZW9mIEhUTUxG
b3JtQ29udHJvbHNDb2xsZWN0aW9uIik7CitzaG91bGRCZVRydWUoImZvcm0uZWxlbWVudHMgaW5z
dGFuY2VvZiBIVE1MQ29sbGVjdGlvbiIpOworc2hvdWxkQmUoImZvcm0uZWxlbWVudHMubGVuZ3Ro
IiwgIjAiKTsKK3Nob3VsZEJlKCJlbGVtZW50cyA9IFtjcmVhdGVFbGVtZW50V2l0aElkKCdpbnB1
dCcsICdmb28nKSwgY3JlYXRlRWxlbWVudFdpdGhJZCgnaW5wdXQnLCAnZm9vJyldO1xuIgorICAg
ICsgIiAgICAgZm9ybS5hcHBlbmRDaGlsZChlbGVtZW50c1swXSk7IGZvcm0uZWxlbWVudHMubGVu
Z3RoIiwgIjEiKTsKK3Nob3VsZEJlKCJmb3JtLmVsZW1lbnRzWydmb28nXSIsICJlbGVtZW50c1sw
XSIpOworc2hvdWxkQmUoImZvcm0uYXBwZW5kQ2hpbGQoZWxlbWVudHNbMV0pOyBmb3JtLmVsZW1l
bnRzLmxlbmd0aCIsICIyIik7CitzaG91bGRCZSgiZm9ybS5lbGVtZW50c1snZm9vJ10udG9TdHJp
bmcoKSIsICInW29iamVjdCBSYWRpb05vZGVMaXN0XSciKTsKK3Nob3VsZEJlKCJmb3JtLmVsZW1l
bnRzWydmb28nXS5sZW5ndGgiLCAiMiIpOworc2hvdWxkQmUoImZvcm0uZWxlbWVudHNbJ2Zvbydd
WzBdIiwgImVsZW1lbnRzWzBdIik7CitzaG91bGRCZSgiZm9ybS5lbGVtZW50c1snZm9vJ11bMV0i
LCAiZWxlbWVudHNbMV0iKTsKK3Nob3VsZEJlKCJmb3JtLnJlbW92ZUNoaWxkKGVsZW1lbnRzWzBd
KTsgZm9ybS5lbGVtZW50c1snZm9vJ10iLCAiZWxlbWVudHNbMV0iKTsKK3Nob3VsZEJlKCJyZW1v
dmVUZXN0RWxlbWVudHMoKTsgZm9ybS5lbGVtZW50cy5sZW5ndGgiLCAiMCIpOworZGVidWcoIiIp
OworCitkZWJ1Zygic2VsZWN0Lm9wdGlvbnMiKTsKK3Nob3VsZEJlKCJmb3JtLmFwcGVuZENoaWxk
KGNyZWF0ZUVsZW1lbnRXaXRoSWQoJ3NlbGVjdCcsICdiYXInKSk7IGZvcm0uZWxlbWVudHMubGVu
Z3RoIiwgIjEiKTsKK3Nob3VsZEJlVHJ1ZSgic2VsZWN0ID0gZm9ybS5lbGVtZW50c1swXTsgc2Vs
ZWN0Lm9wdGlvbnMgaW5zdGFuY2VvZiBIVE1MT3B0aW9uc0NvbGxlY3Rpb24iKTsKK3Nob3VsZEJl
VHJ1ZSgic2VsZWN0Lm9wdGlvbnMgaW5zdGFuY2VvZiBIVE1MQ29sbGVjdGlvbiIpOworc2hvdWxk
QmUoInNlbGVjdC5vcHRpb25zLmxlbmd0aCIsICIwIik7CitzaG91bGRCZSgiZWxlbWVudHMgPSBb
Y3JlYXRlRWxlbWVudFdpdGhJZCgnb3B0aW9uJywgJ2ZvbycpLCBjcmVhdGVFbGVtZW50V2l0aElk
KCdvcHRpb24nLCAnZm9vJyldO1xuIgorICAgICsgIiAgICAgc2VsZWN0LmFwcGVuZENoaWxkKGVs
ZW1lbnRzWzBdKTsgc2VsZWN0Lm9wdGlvbnMubGVuZ3RoIiwgIjEiKTsKK3Nob3VsZEJlKCJzZWxl
Y3Qub3B0aW9uc1snZm9vJ10iLCAiZWxlbWVudHNbMF0iKTsKK3Nob3VsZEJlKCJzZWxlY3QuYXBw
ZW5kQ2hpbGQoZWxlbWVudHNbMV0pOyBzZWxlY3Qub3B0aW9ucy5sZW5ndGgiLCAiMiIpOworc2hv
dWxkQmUoInNlbGVjdC5vcHRpb25zWydmb28nXS50b1N0cmluZygpIiwgIidbb2JqZWN0IE5vZGVM
aXN0XSciKTsKK3Nob3VsZEJlKCJzZWxlY3Qub3B0aW9uc1snZm9vJ10ubGVuZ3RoIiwgIjIiKTsK
K3Nob3VsZEJlKCJzZWxlY3Qub3B0aW9uc1snZm9vJ11bMF0iLCAiZWxlbWVudHNbMF0iKTsKK3No
b3VsZEJlKCJzZWxlY3Qub3B0aW9uc1snZm9vJ11bMV0iLCAiZWxlbWVudHNbMV0iKTsKK3Nob3Vs
ZEJlKCJzZWxlY3QucmVtb3ZlQ2hpbGQoZWxlbWVudHNbMF0pOyBzZWxlY3Qub3B0aW9uc1snZm9v
J10iLCAiZWxlbWVudHNbMV0iKTsKK3Nob3VsZEJlKCJzZWxlY3QuaW5uZXJIVE1MID0gJyc7IHNl
bGVjdC5vcHRpb25zLmxlbmd0aCIsICIwIik7CitzaG91bGRCZSgicmVtb3ZlVGVzdEVsZW1lbnRz
KCk7IGZvcm0uZWxlbWVudHMubGVuZ3RoIiwgIjAiKTsKK2RlYnVnKCIiKTsKKworZnVuY3Rpb24g
dGVzdEZpcnN0SXRlbVJldHVybnNGaXJzdE1hdGNoKGNvbGxlY3Rpb24sIGluaXRpYWxMZW5ndGgs
IGVsZW1lbnROYW1lcywgYXR0cmlidXRlcykgeworICAgIGRlYnVnKGNvbGxlY3Rpb24pOworICAg
IHNob3VsZEJlKGNvbGxlY3Rpb24gKyAiLmxlbmd0aCIsIGluaXRpYWxMZW5ndGgudG9TdHJpbmco
KSk7CisgICAgZWxlbWVudHMgPSBbXTsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IGVsZW1lbnRO
YW1lcy5sZW5ndGg7IGkrKykgeworICAgICAgICB2YXIgYXR0cnMgPSBhdHRyaWJ1dGVzID8gIiwg
IiArIEpTT04uc3RyaW5naWZ5KGF0dHJpYnV0ZXMpIDogJyc7CisgICAgICAgIHNob3VsZEJlKCJl
bGVtZW50c1siICsgaSArICJdID0gaW5zZXJ0RWxlbWVudFdpdGhJZCgnIiArIGVsZW1lbnROYW1l
c1tpXSArICInLCAnZm9vJyIgKyBhdHRycyArICIpOyAiCisgICAgICAgICAgICArIGNvbGxlY3Rp
b24gKyAiLmxlbmd0aCIsIChpbml0aWFsTGVuZ3RoICsgaSArIDEpLnRvU3RyaW5nKCkpOworICAg
IH0KKyAgICBzaG91bGRCZShjb2xsZWN0aW9uICsgIlsnZm9vJ10iLCAiZWxlbWVudHNbMF0iKTsK
KyAgICBzaG91bGRCZSgicmVtb3ZlVGVzdEVsZW1lbnRzKCk7ICIgKyBjb2xsZWN0aW9uICsgIi5s
ZW5ndGgiLCBpbml0aWFsTGVuZ3RoLnRvU3RyaW5nKCkpOworICAgIGRlYnVnKCIiKTsKK30KKwor
dGVzdEZpcnN0SXRlbVJldHVybnNGaXJzdE1hdGNoKCdkb2N1bWVudC5pbWFnZXMnLCAwLCBbJ2lt
ZycsICdpbWcnXSk7Cit0ZXN0Rmlyc3RJdGVtUmV0dXJuc0ZpcnN0TWF0Y2goJ2RvY3VtZW50LmFw
cGxldHMnLCAwLCBbJ2FwcGxldCcsICdhcHBsZXQnXSk7Cit0ZXN0Rmlyc3RJdGVtUmV0dXJuc0Zp
cnN0TWF0Y2goJ2RvY3VtZW50LmVtYmVkcycsIDAsIFsnZW1iZWQnLCAnZW1iZWQnXSk7Cit0ZXN0
Rmlyc3RJdGVtUmV0dXJuc0ZpcnN0TWF0Y2goJ2RvY3VtZW50LmZvcm1zJywgMSwgWydmb3JtJywg
J2Zvcm0nXSk7Cit0ZXN0Rmlyc3RJdGVtUmV0dXJuc0ZpcnN0TWF0Y2goJ2RvY3VtZW50Lmxpbmtz
JywgMCwgWydhJywgJ2EnLCAnYXJlYSddLCB7J2hyZWYnOiAnc29tZSB1cmwnfSk7Cit0ZXN0Rmly
c3RJdGVtUmV0dXJuc0ZpcnN0TWF0Y2goJ2RvY3VtZW50LmFuY2hvcnMnLCAwLCBbJ2EnLCAnYSdd
LCB7J25hbWUnOiAnc29tZSBuYW1lJ30pOwordGVzdEZpcnN0SXRlbVJldHVybnNGaXJzdE1hdGNo
KCdkb2N1bWVudC5zY3JpcHRzJywgMiwgWydzY3JpcHQnLCAnc2NyaXB0J10pOworCit2YXIgc3Vj
Y2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vanMv
cmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cklu
ZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS93cmFwcGVyLWNsYXNzZXMtZXhwZWN0ZWQudHh0Cj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL3dyYXBwZXItY2xhc3Nlcy1leHBlY3Rl
ZC50eHQJKHJldmlzaW9uIDEzNDA5MikKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL3dyYXBwZXIt
Y2xhc3Nlcy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTE0Miw3ICsxNDIsNyBAQCBQ
QVNTIGpzV3JhcHBlckNsYXNzKGRvY3VtZW50Ll9fcHJvdG9fXykgCiBQQVNTIGpzV3JhcHBlckNs
YXNzKGRvY3VtZW50LmNvbnN0cnVjdG9yKSBpcyAnSFRNTERvY3VtZW50Q29uc3RydWN0b3InCiBQ
QVNTIGpzV3JhcHBlckNsYXNzKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NlbGVjdCcpLm9wdGlv
bnMpIGlzICdIVE1MT3B0aW9uc0NvbGxlY3Rpb24nCiBQQVNTIGpzV3JhcHBlckNsYXNzKGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoJ3NlbGVjdCcpLm9wdGlvbnMuX19wcm90b19fKSBpcyAnSFRNTE9w
dGlvbnNDb2xsZWN0aW9uUHJvdG90eXBlJwotUEFTUyBqc1dyYXBwZXJDbGFzcyhkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCdzZWxlY3QnKS5vcHRpb25zLmNvbnN0cnVjdG9yKSBpcyAnSFRNTE9wdGlv
bnNDb2xsZWN0aW9uQ29uc3RydWN0b3InCitGQUlMIGpzV3JhcHBlckNsYXNzKGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoJ3NlbGVjdCcpLm9wdGlvbnMuY29uc3RydWN0b3IpIHNob3VsZCBiZSBIVE1M
T3B0aW9uc0NvbGxlY3Rpb25Db25zdHJ1Y3Rvci4gV2FzIEZ1bmN0aW9uLgogCiBIVE1MIEVsZW1l
bnRzCiAKSW5kZXg6IExheW91dFRlc3RzL2luc3BlY3Rvci9jb25zb2xlL2NvbnNvbGUtZm9ybWF0
LWNvbGxlY3Rpb25zLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9pbnNw
ZWN0b3IvY29uc29sZS9jb25zb2xlLWZvcm1hdC1jb2xsZWN0aW9ucy1leHBlY3RlZC50eHQJKHJl
dmlzaW9uIDEzNDA5MikKKysrIExheW91dFRlc3RzL2luc3BlY3Rvci9jb25zb2xlL2NvbnNvbGUt
Zm9ybWF0LWNvbGxlY3Rpb25zLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMiw3ICsy
LDcgQEAgQ09OU09MRSBNRVNTQUdFOiBsaW5lIDE1OiBbb2JqZWN0IE5vZGVMaQogQ09OU09MRSBN
RVNTQUdFOiBsaW5lIDE5OiBbb2JqZWN0IEhUTUxDb2xsZWN0aW9uXQogQ09OU09MRSBNRVNTQUdF
OiBsaW5lIDIzOiBbb2JqZWN0IEhUTUxPcHRpb25zQ29sbGVjdGlvbl0KIENPTlNPTEUgTUVTU0FH
RTogbGluZSAyNzogW29iamVjdCBIVE1MQWxsQ29sbGVjdGlvbl0KLUNPTlNPTEUgTUVTU0FHRTog
bGluZSAzMTogW29iamVjdCBIVE1MQ29sbGVjdGlvbl0KK0NPTlNPTEUgTUVTU0FHRTogbGluZSAz
MTogW29iamVjdCBIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbl0KIENPTlNPTEUgTUVTU0FHRTog
bGluZSAzNTogW29iamVjdCBOb2RlTGlzdF0KIENPTlNPTEUgTUVTU0FHRTogbGluZSA0MTogMSwy
LAogQ09OU09MRSBNRVNTQUdFOiBsaW5lIDQ0OiBbb2JqZWN0IE9iamVjdF0KQEAgLTExLDcgKzEx
LDcgQEAgQ09OU09MRSBNRVNTQUdFOiBsaW5lIDE1OiBbb2JqZWN0IE5vZGVMaQogQ09OU09MRSBN
RVNTQUdFOiBsaW5lIDE5OiBbb2JqZWN0IEhUTUxDb2xsZWN0aW9uXQogQ09OU09MRSBNRVNTQUdF
OiBsaW5lIDIzOiBbb2JqZWN0IEhUTUxPcHRpb25zQ29sbGVjdGlvbl0KIENPTlNPTEUgTUVTU0FH
RTogbGluZSAyNzogW29iamVjdCBIVE1MQWxsQ29sbGVjdGlvbl0KLUNPTlNPTEUgTUVTU0FHRTog
bGluZSAzMTogW29iamVjdCBIVE1MQ29sbGVjdGlvbl0KK0NPTlNPTEUgTUVTU0FHRTogbGluZSAz
MTogW29iamVjdCBIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbl0KIENPTlNPTEUgTUVTU0FHRTog
bGluZSAzNTogW29iamVjdCBOb2RlTGlzdF0KIENPTlNPTEUgTUVTU0FHRTogbGluZSA0MTogMSwy
LAogQ09OU09MRSBNRVNTQUdFOiBsaW5lIDQ0OiBbb2JqZWN0IE9iamVjdF0KQEAgLTIyLDE2ICsy
MiwxNiBAQCBOb2RlTGlzdFsxXSBjb25zb2xlLWZvcm1hdC1jb2xsZWN0aW9ucy5oCiBIVE1MQ29s
bGVjdGlvblszXSBjb25zb2xlLWZvcm1hdC1jb2xsZWN0aW9ucy5odG1sOjE5CiBIVE1MT3B0aW9u
c0NvbGxlY3Rpb25bMl0gY29uc29sZS1mb3JtYXQtY29sbGVjdGlvbnMuaHRtbDoyMwogSFRNTEFs
bENvbGxlY3Rpb25bMTRdIGNvbnNvbGUtZm9ybWF0LWNvbGxlY3Rpb25zLmh0bWw6MjcKLUhUTUxD
b2xsZWN0aW9uWzNdIGNvbnNvbGUtZm9ybWF0LWNvbGxlY3Rpb25zLmh0bWw6MzEKK0hUTUxGb3Jt
Q29udHJvbHNDb2xsZWN0aW9uWzNdIGNvbnNvbGUtZm9ybWF0LWNvbGxlY3Rpb25zLmh0bWw6MzEK
IE5vZGVMaXN0WzJdIGNvbnNvbGUtZm9ybWF0LWNvbGxlY3Rpb25zLmh0bWw6MzUKIEFycmF5WzJd
IGNvbnNvbGUtZm9ybWF0LWNvbGxlY3Rpb25zLmh0bWw6NDEKIE5vbkFycmF5V2l0aExlbmd0aCBj
b25zb2xlLWZvcm1hdC1jb2xsZWN0aW9ucy5odG1sOjQ0CiBBcmd1bWVudHNbMl0gY29uc29sZS1m
b3JtYXQtY29sbGVjdGlvbnMuaHRtbDo1MQogWzxzZWxlY3Q+LCBpdGVtOiBmdW5jdGlvbl0gY29u
c29sZS1mb3JtYXQtY29sbGVjdGlvbnMuaHRtbDoxNQogWzxzY3JpcHQ+LCA8c2NyaXB0PiwgPHNj
cmlwdD4sIGl0ZW06IGZ1bmN0aW9uLCBuYW1lZEl0ZW06IGZ1bmN0aW9uXSBjb25zb2xlLWZvcm1h
dC1jb2xsZWN0aW9ucy5odG1sOjE5Ci1bPG9wdGlvbj4sIDxvcHRpb24+LCBzZWxlY3RlZEluZGV4
OiAwLCByZW1vdmU6IGZ1bmN0aW9uLCBhZGQ6IGZ1bmN0aW9uLCBpdGVtOiBmdW5jdGlvbiwgbmFt
ZWRJdGVtOiBmdW5jdGlvbl0gY29uc29sZS1mb3JtYXQtY29sbGVjdGlvbnMuaHRtbDoyMworWzxv
cHRpb24+LCA8b3B0aW9uPiwgc2VsZWN0ZWRJbmRleDogMCwgcmVtb3ZlOiBmdW5jdGlvbiwgbmFt
ZWRJdGVtOiBmdW5jdGlvbiwgYWRkOiBmdW5jdGlvbiwgaXRlbTogZnVuY3Rpb24sIG5hbWVkSXRl
bTogZnVuY3Rpb25dIGNvbnNvbGUtZm9ybWF0LWNvbGxlY3Rpb25zLmh0bWw6MjMKIFs8aHRtbD4s
IDxoZWFkPiwgPHNjcmlwdD4sIDxzY3JpcHQ+LCA8c2NyaXB0PiwgPGJvZHk+LCA8cD4sIDxkaXY+
LCA8Zm9ybT4sIDxzZWxlY3Q+LCA8b3B0aW9uPiwgPG9wdGlvbj4sIDxpbnB1dD4sIDxpbnB1dD4s
IG5hbWVkSXRlbTogZnVuY3Rpb24sIHRhZ3M6IGZ1bmN0aW9uLCBpdGVtOiBmdW5jdGlvbl0gY29u
c29sZS1mb3JtYXQtY29sbGVjdGlvbnMuaHRtbDoyNwotWzxzZWxlY3Q+LCA8aW5wdXQ+LCA8aW5w
dXQ+LCBpdGVtOiBmdW5jdGlvbiwgbmFtZWRJdGVtOiBmdW5jdGlvbl0gY29uc29sZS1mb3JtYXQt
Y29sbGVjdGlvbnMuaHRtbDozMQorWzxzZWxlY3Q+LCA8aW5wdXQ+LCA8aW5wdXQ+LCBuYW1lZEl0
ZW06IGZ1bmN0aW9uLCBpdGVtOiBmdW5jdGlvbiwgbmFtZWRJdGVtOiBmdW5jdGlvbl0gY29uc29s
ZS1mb3JtYXQtY29sbGVjdGlvbnMuaHRtbDozMQogWzxpbnB1dD4sIDxpbnB1dD4sIGl0ZW06IGZ1
bmN0aW9uXSBjb25zb2xlLWZvcm1hdC1jb2xsZWN0aW9ucy5odG1sOjM1CiBbMSwgQXJyYXlbMl1d
IGNvbnNvbGUtZm9ybWF0LWNvbGxlY3Rpb25zLmh0bWw6NDEKIE5vbkFycmF5V2l0aExlbmd0aCB7
a2V5czogQXJyYXlbMF19IGNvbnNvbGUtZm9ybWF0LWNvbGxlY3Rpb25zLmh0bWw6NDQKSW5kZXg6
IExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZG9tL2djLTktZXhwZWN0ZWQudHh0
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZG9tL2dj
LTktZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAxMzQwOTIpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9y
bS9jaHJvbWl1bS9mYXN0L2RvbS9nYy05LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAt
NDksNyArNDksNyBAQCBQQVNTOiBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnYm9kCiBG
QUlMOiBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnY2FudmFzJylbMF0uZ2V0Q29udGV4
dCgnMmQnKS5teUN1c3RvbVByb3BlcnR5IHNob3VsZCBiZSAxIGJ1dCBpbnN0ZWFkIGlzIHVuZGVm
aW5lZC4KIFBBU1M6IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdjYW52YXMnKVswXS5n
ZXRDb250ZXh0KCcyZCcpLmNyZWF0ZUxpbmVhckdyYWRpZW50KDAsIDAsIDAsIDApLm15Q3VzdG9t
UHJvcGVydHkgc2hvdWxkIGJlIHVuZGVmaW5lZCBhbmQgaXMuCiBQQVNTOiBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgnY2FudmFzJylbMF0uZ2V0Q29udGV4dCgnMmQnKS5jcmVhdGVQYXR0
ZXJuKG5ldyBJbWFnZSgpLCAnbm8tcmVwZWF0JykubXlDdXN0b21Qcm9wZXJ0eSBzaG91bGQgYmUg
dW5kZWZpbmVkIGFuZCBpcy4KLUZBSUw6IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdz
ZWxlY3QnKVswXS5vcHRpb25zLm15Q3VzdG9tUHJvcGVydHkgc2hvdWxkIGJlIDEgYnV0IGluc3Rl
YWQgaXMgdW5kZWZpbmVkLgorUEFTUzogZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ3Nl
bGVjdCcpWzBdLm9wdGlvbnMubXlDdXN0b21Qcm9wZXJ0eSBzaG91bGQgYmUgMSBhbmQgaXMuCiBQ
QVNTOiBkb2N1bWVudC5ib2R5LmNoaWxkTm9kZXMubXlDdXN0b21Qcm9wZXJ0eSBzaG91bGQgYmUg
MSBhbmQgaXMuCiBQQVNTOiBkb2N1bWVudC5hbGwubXlDdXN0b21Qcm9wZXJ0eSBzaG91bGQgYmUg
MSBhbmQgaXMuCiBQQVNTOiBkb2N1bWVudC5pbWFnZXMubXlDdXN0b21Qcm9wZXJ0eSBzaG91bGQg
YmUgMSBhbmQgaXMuCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>174813</attachid>
            <date>2012-11-17 00:18:51 -0800</date>
            <delta_ts>2012-11-17 13:05:14 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-101311-20121117001646.patch</filename>
            <type>text/plain</type>
            <size>107299</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEzNTAzOCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEwNSBAQAorMjAxMi0xMS0wNiAgUnlvc3Vr
ZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KKworICAgICAgICBNYWtlIG5hbWVkSXRlbSByZXR1
cm4gYSBub2RlIGxpc3Qgb25seSBpbiBIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbiBhbmQgSFRN
TE9wdGlvbnNDb2xsZWN0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMDEzMTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBJbnRyb2R1Y2UgdHdvIG5ldyBpbnRlcmZhY2VzIEhUTUxGb3JtQ29udHJvbHND
b2xsZWN0aW9uIGFuZCBIVE1MT3B0aW9uc0NvbGxlY3Rpb24gdG8gYmUgdXNlZCBieSBmb3JtLmVs
ZW1lbnRzCisgICAgICAgIGFuZCBzZWxlY3Qub3B0aW9ucy4gVGhlc2UgdHdvIGludGVyZmFjZXMg
aGF2ZSB0aGUgbmFtZWQgZ2V0dGVyIGFuZCBuYW1lZEl0ZW0gdGhhdCByZXR1cm5zIGEgbGl2ZSBO
b2RlTGlzdCB3aGVuCisgICAgICAgIHRoZXJlIGFyZSBtdWx0aXBsZSBtYXRjaGVzLiBJbnRyb2R1
Y2luZyB0aGVzZSB0d28gaW50ZXJmYWNlcyBhbGxvdyB1cyB0byBtYWtlICJyZWd1bGFyIiBIVE1M
Q29sbGVjdGlvbidzIG5hbWVkCisgICAgICAgIGdldHRlciBhbmQgbmFtZWRJdGVtIHJldHVybiBl
eGFjdGx5IG9uZSBub2RlIG9yIG51bGwgYXMgc3BlY2lmaWVkIGluIEhUTUw1OgorICAgICAgICBo
dHRwOi8vd3d3LndoYXR3Zy5vcmcvc3BlY3Mvd2ViLWFwcHMvY3VycmVudC13b3JrL211bHRpcGFn
ZS9jb21tb24tZG9tLWludGVyZmFjZXMuaHRtbCNjb2xsZWN0aW9ucy0wCisKKyAgICAgICAgVW5m
b3J0dW5hdGVseSwgSFRNTE9wdGlvbnNDb2xsZWN0aW9uIHN0aWxsIGhhcyBhIGJ1ZyB0aGF0IGl0
cyBuYW1lZCBnZXR0ZXIgYW5kIG5hbWVkSXRlbSByZXR1cm5zCisgICAgICAgIGEgc3RhdGljIE5v
ZGVMaXN0IGluc3RlYWQgb2YgYSBsaXZlIE5vZGVMaXN0IChEeW5hbWljTm9kZUxpc3QpIGF0IHRo
ZSBtb21lbnQuCisKKyAgICAgICAgQWxzbyBnb3QgcmlkIG9mIERvY3VtZW50OjpvYmplY3RzIHNp
bmNlIGl0J3Mgbm90IGV4cG9zZWQgaW4gSURMIG9yIGNhbGxlZCBhbnl3aGVyZS4KKworICAgICAg
ICBUZXN0OiBmYXN0L2RvbS9odG1sLWNvbGxlY3Rpb25zLW5hbWVkSXRlbS5odG1sCisKKyAgICAg
ICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5jcHA6CisgICAg
ICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5wcmk6
CisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBUYXJnZXQucHJpOgor
ICAgICAgICAqIFVzZUpTQy5jbWFrZToKKyAgICAgICAgKiBVc2VWOC5jbWFrZToKKyAgICAgICAg
KiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6
CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAq
IGJpbmRpbmdzL2pzL0pTQmluZGluZ3NBbGxJbk9uZS5jcHA6CisgICAgICAgICogYmluZGluZ3Mv
anMvSlNIVE1MQWxsQ29sbGVjdGlvbkN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpnZXRO
YW1lZEl0ZW1zKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0hUTUxDb2xsZWN0aW9uQ3VzdG9t
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTSFRNTENvbGxlY3Rpb246Om5hbWVHZXR0ZXIpOiBO
b3cgcmV0dXJucyBleGFjdGx5IG9uZSBub2RlIG9yIG51bGwuCisgICAgICAgIChXZWJDb3JlOjp0
b0pTKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9u
Q3VzdG9tLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpnZXROYW1lZEl0ZW1zKTogUmV0
dXJucyBSYWRpb05vZGVMaXN0IHdoZW4gdGhlcmUgYXJlIG11bHRpcGxlIG1hdGNoZXMuCisgICAg
ICAgIChXZWJDb3JlOjpKU0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uOjpjYW5HZXRJdGVtc0Zv
ck5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6SlNIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbjo6
bmFtZUdldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpKU0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0
aW9uOjpuYW1lZEl0ZW0pOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTSFRNTE9wdGlvbnNDb2xs
ZWN0aW9uQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmdldE5hbWVkSXRlbXMpOiBSZXR1
cm5zIGEgc3RhdGljIE5vZGVMaXN0IHdoZW4gdGhlcmUgYXJlIG11bHRpcGxlIG1hdGNoZXMuCisg
ICAgICAgIFRoaXMgaXMgYSBidWcuIEl0IHNob3VsZCBiZSBhIGxpdmUgTm9kZUxpc3QgaW5zdGVh
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkpTSFRNTE9wdGlvbnNDb2xsZWN0aW9uOjpjYW5HZXRJdGVt
c0Zvck5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6SlNIVE1MT3B0aW9uc0NvbGxlY3Rpb246Om5h
bWVHZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SlNIVE1MT3B0aW9uc0NvbGxlY3Rpb246Om5h
bWVkSXRlbSk6CisgICAgICAgICogYmluZGluZ3MvanMvQ29kZUdlbmVyYXRvckpTLnBtOiBJbmNs
dWRlIEpTTm9kZS5qcyBmb3IgYWxsIEhUTUwqQ29sbGVjdGlvbiBpbnRlcmZhY2VzIGZvciBzaW1w
bGljaXR5LgorICAgICAgICAqIGJpbmRpbmdzL2pzL0NvZGVHZW5lcmF0b3JWOC5wbTogSFRNTE9w
dGlvbnNDb2xsZWN0aW9uIG5vdyBpbmhlcml0cyBmcm9tIEhUTUxDb2xsZWN0aW9uLiBTZWUKKyAg
ICAgICAgaHR0cDovL3d3dy53aGF0d2cub3JnL3NwZWNzL3dlYi1hcHBzL2N1cnJlbnQtd29yay9t
dWx0aXBhZ2UvY29tbW9uLWRvbS1pbnRlcmZhY2VzLmh0bWwjaHRtbG9wdGlvbnNjb2xsZWN0aW9u
CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTEFsbENvbGxlY3Rpb25DdXN0b20u
Y3BwOiBQYXNzIGluIGlzb2xhdGUgd2hlbiB3ZSBjYW4uCisgICAgICAgIChXZWJDb3JlOjpnZXRO
YW1lZEl0ZW1zKTogQWRkZWQgYSBjb21tZW50IGFib3V0IGhvdyB3ZSBzaG91bGQgYmUgcmV0dXJu
aW5nCisgICAgICAgIGEgSFRNTENvbGxlY3Rpb24gd2hlbiB0aGVyZSBhcmUgbXVsdGlwbGUgbWF0
Y2hlcy4KKyAgICAgICAgKFdlYkNvcmU6OmdldEl0ZW0pOgorICAgICAgICAoV2ViQ29yZTo6VjhI
VE1MQWxsQ29sbGVjdGlvbjo6bmFtZWRQcm9wZXJ0eUdldHRlcik6CisgICAgICAgIChXZWJDb3Jl
OjpWOEhUTUxBbGxDb2xsZWN0aW9uOjpuYW1lZEl0ZW1DYWxsYmFjayk6CisgICAgICAgICogYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTENvbGxlY3Rpb25DdXN0b20uY3BwOiBOb3cgcmV0dXJucyBl
eGFjdGx5IG9uZSBub2RlIG9yIG51bGwuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdl
YkNvcmU6OlY4SFRNTENvbGxlY3Rpb246Om5hbWVkUHJvcGVydHlHZXR0ZXIpOgorICAgICAgICAo
V2ViQ29yZTo6dG9WOCk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTEZvcm1D
b250cm9sc0NvbGxlY3Rpb25DdXN0b20uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgor
ICAgICAgICAoV2ViQ29yZTo6Z2V0TmFtZWRJdGVtcyk6IFJldHVybnMgUmFkaW9Ob2RlTGlzdCB3
aGVuIHRoZXJlIGFyZSBtdWx0aXBsZSBtYXRjaGVzLgorICAgICAgICAoV2ViQ29yZTo6VjhIVE1M
Rm9ybUNvbnRyb2xzQ29sbGVjdGlvbjo6bmFtZWRQcm9wZXJ0eUdldHRlcik6CisgICAgICAgIChX
ZWJDb3JlOjpWOEhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uOjpuYW1lZEl0ZW1DYWxsYmFjayk6
CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTE9wdGlvbnNDb2xsZWN0aW9uQ3Vz
dG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmdldE5hbWVkSXRlbXMpOiBSZXR1cm5zIGEgc3Rh
dGljIE5vZGVMaXN0IHdoZW4gdGhlcmUgYXJlIG11bHRpcGxlIG1hdGNoZXMuCisgICAgICAgIFRo
aXMgaXMgYSBidWcuIEl0IHNob3VsZCBiZSBhIGxpdmUgTm9kZUxpc3QgaW5zdGVhZC4KKyAgICAg
ICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6VjhIVE1MT3B0aW9uc0NvbGxlY3Rpb246
Om5hbWVkUHJvcGVydHlHZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6VjhIVE1MT3B0aW9uc0Nv
bGxlY3Rpb246Om5hbWVkSXRlbUNhbGxiYWNrKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZSk6IFJlbW92ZWQgRG9jdW1lbnQ6Om9iamVjdHMgc2luY2UgaXQg
d2FzIG5vdCB1c2VkIGFueXdoZXJlLgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5oOgorICAgICAg
ICAoRG9jdW1lbnQpOgorICAgICAgICAqIGRvbS9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkVsZW1lbnRSYXJlRGF0YTo6ZW5zdXJlQ2FjaGVkSFRNTENvbGxlY3Rpb24pOiBmb3JtLmVs
ZW1lbnRzIHNob3VsZCBpbnN0YW50aWF0ZQorICAgICAgICBhIEhUTUxGb3JtQ29udHJvbHNDb2xs
ZWN0aW9uIGluc3RlYWQgb2YgYSBIVE1MQ29sbGVjdGlvbi4KKyAgICAgICAgKiBodG1sL0NvbGxl
Y3Rpb25UeXBlLmg6CisgICAgICAgICogaHRtbC9IVE1MQ29sbGVjdGlvbi5pZGw6IFJlbW92ZWQg
W0N1c3RvbV0gc2luY2UgbmFtZWRJdGVtIGlzIGEgcmVndWxhciBmdW5jdGlvbiBjYWxsIG5vdy4K
KyAgICAgICAgKiBodG1sL0hUTUxGaWVsZFNldEVsZW1lbnQuY3BwOgorICAgICAgICAqIGh0bWwv
SFRNTEZpZWxkU2V0RWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTEZvcm1Db2xsZWN0aW9u
LmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBodG1sL0hUTUxGb3JtQ29sbGVjdGlvbi5oOiBSZW1v
dmVkLgorICAgICAgICAqIGh0bWwvSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uY3BwOiBDb3Bp
ZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29sbGVjdGlvbi5jcHAuCisgICAg
ICAgIChXZWJDb3JlOjpIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbjo6SFRNTEZvcm1Db250cm9s
c0NvbGxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZvcm1Db250cm9sc0NvbGxlY3Rp
b246OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlv
bjo6fkhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxG
b3JtQ29udHJvbHNDb2xsZWN0aW9uOjpmb3JtQ29udHJvbEVsZW1lbnRzKToKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uOjpmb3JtSW1hZ2VFbGVtZW50cyk6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbjo6dmlydHVhbEl0ZW1B
ZnRlcik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbjo6bmFt
ZWRJdGVtKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uOjp1
cGRhdGVOYW1lQ2FjaGUpOgorICAgICAgICAqIGh0bWwvSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rp
b24uaDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbGxlY3Rpb24u
aC4KKyAgICAgICAgKEhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uKToKKyAgICAgICAgKiBodG1s
L0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmlkbDogQWRkZWQuCisgICAgICAgICogaHRtbC9I
VE1MRm9ybUVsZW1lbnQuY3BwOgorICAgICAgICAqIGh0bWwvSFRNTEZvcm1FbGVtZW50Lmg6Cisg
ICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBodG1sL0hUTUxPcHRpb25zQ29sbGVjdGlvbi5p
ZGw6CisKIDIwMTItMTEtMTYgIEJlbmphbWluIFBvdWxhaW4gIDxicG91bGFpbkBhcHBsZS5jb20+
CiAKICAgICAgICAgSW1wcm92ZSB0aGUgcGVyZm9ybWFuY2Ugb2YgcmVjdCB0cmFuc2Zvcm0KSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAxMzUwMzgpCisrKyBTb3VyY2UvV2ViQ29y
ZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNDM5LDYgKzQzOSw3IEBAIFNFVChX
ZWJDb3JlX0lETF9GSUxFUwogICAgIGh0bWwvSFRNTEVtYmVkRWxlbWVudC5pZGwKICAgICBodG1s
L0hUTUxGaWVsZFNldEVsZW1lbnQuaWRsCiAgICAgaHRtbC9IVE1MRm9udEVsZW1lbnQuaWRsCisg
ICAgaHRtbC9IVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5pZGwKICAgICBodG1sL0hUTUxGb3Jt
RWxlbWVudC5pZGwKICAgICBodG1sL0hUTUxGcmFtZUVsZW1lbnQuaWRsCiAgICAgaHRtbC9IVE1M
RnJhbWVTZXRFbGVtZW50LmlkbApAQCAtMTM2OCw3ICsxMzY5LDcgQEAgU0VUKFdlYkNvcmVfU09V
UkNFUwogICAgIGh0bWwvSFRNTEVtYmVkRWxlbWVudC5jcHAKICAgICBodG1sL0hUTUxGaWVsZFNl
dEVsZW1lbnQuY3BwCiAgICAgaHRtbC9IVE1MRm9udEVsZW1lbnQuY3BwCi0gICAgaHRtbC9IVE1M
Rm9ybUNvbGxlY3Rpb24uY3BwCisgICAgaHRtbC9IVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5j
cHAKICAgICBodG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwCiAgICAgaHRtbC9IVE1MRm9y
bUNvbnRyb2xFbGVtZW50V2l0aFN0YXRlLmNwcAogICAgIGh0bWwvSFRNTEZvcm1FbGVtZW50LmNw
cApJbmRleDogU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLmNwcAkocmV2aXNpb24gMTM1MDM4KQorKysg
U291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjMs
NiArMTYzLDcgQEAKICNpbmNsdWRlICJKU0hUTUxFbWJlZEVsZW1lbnQuY3BwIgogI2luY2x1ZGUg
IkpTSFRNTEZpZWxkU2V0RWxlbWVudC5jcHAiCiAjaW5jbHVkZSAiSlNIVE1MRm9udEVsZW1lbnQu
Y3BwIgorI2luY2x1ZGUgIkpTSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uY3BwIgogI2luY2x1
ZGUgIkpTSFRNTEZvcm1FbGVtZW50LmNwcCIKICNpbmNsdWRlICJKU0hUTUxGcmFtZUVsZW1lbnQu
Y3BwIgogI2luY2x1ZGUgIkpTSFRNTEZyYW1lU2V0RWxlbWVudC5jcHAiCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L0Rlcml2ZWRTb3VyY2VzLm1ha2UJKHJldmlzaW9uIDEzNTAzOCkKKysrIFNvdXJjZS9XZWJDb3Jl
L0Rlcml2ZWRTb3VyY2VzLm1ha2UJKHdvcmtpbmcgY29weSkKQEAgLTMwMCw2ICszMDAsNyBAQCBC
SU5ESU5HX0lETFMgPSBcCiAgICAgJChXZWJDb3JlKS9odG1sL0hUTUxFbWJlZEVsZW1lbnQuaWRs
IFwKICAgICAkKFdlYkNvcmUpL2h0bWwvSFRNTEZpZWxkU2V0RWxlbWVudC5pZGwgXAogICAgICQo
V2ViQ29yZSkvaHRtbC9IVE1MRm9udEVsZW1lbnQuaWRsIFwKKyAgICAkKFdlYkNvcmUpL2h0bWwv
SFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uaWRsIFwKICAgICAkKFdlYkNvcmUpL2h0bWwvSFRN
TEZvcm1FbGVtZW50LmlkbCBcCiAgICAgJChXZWJDb3JlKS9odG1sL0hUTUxGcmFtZUVsZW1lbnQu
aWRsIFwKICAgICAkKFdlYkNvcmUpL2h0bWwvSFRNTEZyYW1lU2V0RWxlbWVudC5pZGwgXApJbmRl
eDogU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMucHJpCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLnByaQkocmV2aXNpb24gMTM1MDM4KQorKysgU291cmNl
L1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMucHJpCSh3b3JraW5nIGNvcHkpCkBAIC0zNTUsNiArMzU1
LDcgQEAgSURMX0JJTkRJTkdTICs9IFwKICAgICAkJFBXRC9odG1sL0hUTUxFbWJlZEVsZW1lbnQu
aWRsIFwKICAgICAkJFBXRC9odG1sL0hUTUxGaWVsZFNldEVsZW1lbnQuaWRsIFwKICAgICAkJFBX
RC9odG1sL0hUTUxGb250RWxlbWVudC5pZGwgXAorICAgICQkUFdEL2h0bWwvSFRNTEZvcm1Db250
cm9sc0NvbGxlY3Rpb24uaWRsIFwKICAgICAkJFBXRC9odG1sL0hUTUxGb3JtRWxlbWVudC5pZGwg
XAogICAgICQkUFdEL2h0bWwvSFRNTEZyYW1lRWxlbWVudC5pZGwgXAogICAgICQkUFdEL2h0bWwv
SFRNTEZyYW1lU2V0RWxlbWVudC5pZGwgXApJbmRleDogU291cmNlL1dlYkNvcmUvR05VbWFrZWZp
bGUubGlzdC5hbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0
LmFtCShyZXZpc2lvbiAxMzUwMzgpCisrKyBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0
LmFtCSh3b3JraW5nIGNvcHkpCkBAIC0zMzcsNiArMzM3LDggQEAgd2ViY29yZV9idWlsdF9zb3Vy
Y2VzICs9IFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTSFRNTEZpZWxkU2V0RWxlbWVudC5o
IFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTSFRNTEZvbnRFbGVtZW50LmNwcCBcCiAJRGVy
aXZlZFNvdXJjZXMvV2ViQ29yZS9KU0hUTUxGb250RWxlbWVudC5oIFwKKwlEZXJpdmVkU291cmNl
cy9XZWJDb3JlL0pTSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uY3BwIFwKKwlEZXJpdmVkU291
cmNlcy9XZWJDb3JlL0pTSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uaCBcCiAJRGVyaXZlZFNv
dXJjZXMvV2ViQ29yZS9KU0hUTUxGb3JtRWxlbWVudC5jcHAgXAogCURlcml2ZWRTb3VyY2VzL1dl
YkNvcmUvSlNIVE1MRm9ybUVsZW1lbnQuaCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0hU
TUxGcmFtZUVsZW1lbnQuY3BwIFwKQEAgLTE0MjksNiArMTQzMSw3IEBAIGRvbV9iaW5kaW5nX2lk
bHMgKz0gXAogCSQoV2ViQ29yZSkvaHRtbC9IVE1MRW1iZWRFbGVtZW50LmlkbCBcCiAJJChXZWJD
b3JlKS9odG1sL0hUTUxGaWVsZFNldEVsZW1lbnQuaWRsIFwKIAkkKFdlYkNvcmUpL2h0bWwvSFRN
TEZvbnRFbGVtZW50LmlkbCBcCisJJChXZWJDb3JlKS9odG1sL0hUTUxGb3JtQ29udHJvbHNDb2xs
ZWN0aW9uLmlkbCBcCiAJJChXZWJDb3JlKS9odG1sL0hUTUxGb3JtRWxlbWVudC5pZGwgXAogCSQo
V2ViQ29yZSkvaHRtbC9IVE1MRnJhbWVFbGVtZW50LmlkbCBcCiAJJChXZWJDb3JlKS9odG1sL0hU
TUxGcmFtZVNldEVsZW1lbnQuaWRsIFwKQEAgLTIzMDUsNiArMjMwOCw3IEBAIHdlYmNvcmVfc291
cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MRWxlbWVudEN1c3Rv
bS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEVtYmVkRWxlbWVudEN1
c3RvbS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEVtYmVkRWxlbWVu
dEN1c3RvbS5oIFwKKwlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxGb3JtQ29udHJv
bHNDb2xsZWN0aW9uQ3VzdG9tLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNI
VE1MRm9ybUVsZW1lbnRDdXN0b20uY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0hUTUxGcmFtZUVsZW1lbnRDdXN0b20uY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0hUTUxGcmFtZVNldEVsZW1lbnRDdXN0b20uY3BwIFwKQEAgLTMzMTAsOCArMzMxNCw4IEBA
IHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRmllbGRTZXRF
bGVtZW50LmggXAogCVNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvbnRFbGVtZW50LmNwcCBcCiAJ
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9udEVsZW1lbnQuaCBcCi0JU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MRm9ybUNvbGxlY3Rpb24uY3BwIFwKLQlTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxG
b3JtQ29sbGVjdGlvbi5oIFwKKwlTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbHND
b2xsZWN0aW9uLmNwcCBcCisJU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xzQ29s
bGVjdGlvbi5oIFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQu
Y3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuaCBcCiAJ
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50V2l0aFN0YXRlLmNwcCBc
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL1RhcmdldC5wcmkJKHJldmlzaW9uIDEzNTAzOCkKKysrIFNvdXJjZS9XZWJDb3JlL1Rh
cmdldC5wcmkJKHdvcmtpbmcgY29weSkKQEAgLTEzMiw2ICsxMzIsNyBAQCBTT1VSQ0VTICs9IFwK
ICAgICAgYmluZGluZ3MvanMvSlNIVE1MRG9jdW1lbnRDdXN0b20uY3BwIFwKICAgICAgYmluZGlu
Z3MvanMvSlNIVE1MRWxlbWVudEN1c3RvbS5jcHAgXAogICAgICBiaW5kaW5ncy9qcy9KU0hUTUxF
bWJlZEVsZW1lbnRDdXN0b20uY3BwIFwKKyAgICAgYmluZGluZ3MvanMvSlNIVE1MRm9ybUNvbnRy
b2xzQ29sbGVjdGlvbkN1c3RvbS5jcHAgXAogICAgICBiaW5kaW5ncy9qcy9KU0hUTUxGb3JtRWxl
bWVudEN1c3RvbS5jcHAgXAogICAgICBiaW5kaW5ncy9qcy9KU0hUTUxGcmFtZUVsZW1lbnRDdXN0
b20uY3BwIFwKICAgICAgYmluZGluZ3MvanMvSlNIVE1MRnJhbWVTZXRFbGVtZW50Q3VzdG9tLmNw
cCBcCkBAIC02MDEsNyArNjAyLDcgQEAgU09VUkNFUyArPSBcCiAgICAgaHRtbC9IVE1MRW1iZWRF
bGVtZW50LmNwcCBcCiAgICAgaHRtbC9IVE1MRmllbGRTZXRFbGVtZW50LmNwcCBcCiAgICAgaHRt
bC9IVE1MRm9udEVsZW1lbnQuY3BwIFwKLSAgICBodG1sL0hUTUxGb3JtQ29sbGVjdGlvbi5jcHAg
XAorICAgIGh0bWwvSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uY3BwIFwKICAgICBodG1sL0hU
TUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwIFwKICAgICBodG1sL0hUTUxGb3JtQ29udHJvbEVsZW1l
bnRXaXRoU3RhdGUuY3BwIFwKICAgICBodG1sL0hUTUxGb3JtRWxlbWVudC5jcHAgXApAQCAtMTc2
MSw3ICsxNzYyLDcgQEAgSEVBREVSUyArPSBcCiAgICAgaHRtbC9IVE1MRW1iZWRFbGVtZW50Lmgg
XAogICAgIGh0bWwvSFRNTEZpZWxkU2V0RWxlbWVudC5oIFwKICAgICBodG1sL0hUTUxGb250RWxl
bWVudC5oIFwKLSAgICBodG1sL0hUTUxGb3JtQ29sbGVjdGlvbi5oIFwKKyAgICBodG1sL0hUTUxG
b3JtQ29udHJvbHNDb2xsZWN0aW9uLmggXAogICAgIGh0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVu
dC5oIFwKICAgICBodG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnRXaXRoU3RhdGUuaCBcCiAgICAg
aHRtbC9IVE1MRm9ybUVsZW1lbnQuaCBcCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Vc2VKU0MuY21h
a2UKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvVXNlSlNDLmNtYWtlCShyZXZpc2lvbiAx
MzUwMzgpCisrKyBTb3VyY2UvV2ViQ29yZS9Vc2VKU0MuY21ha2UJKHdvcmtpbmcgY29weSkKQEAg
LTg0LDYgKzg0LDcgQEAgTElTVChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAgICAgYmluZGluZ3Mv
anMvSlNIVE1MRG9jdW1lbnRDdXN0b20uY3BwCiAgICAgYmluZGluZ3MvanMvSlNIVE1MRWxlbWVu
dEN1c3RvbS5jcHAKICAgICBiaW5kaW5ncy9qcy9KU0hUTUxFbWJlZEVsZW1lbnRDdXN0b20uY3Bw
CisgICAgYmluZGluZ3MvanMvSlNIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbkN1c3RvbS5jcHAK
ICAgICBiaW5kaW5ncy9qcy9KU0hUTUxGb3JtRWxlbWVudEN1c3RvbS5jcHAKICAgICBiaW5kaW5n
cy9qcy9KU0hUTUxGcmFtZUVsZW1lbnRDdXN0b20uY3BwCiAgICAgYmluZGluZ3MvanMvSlNIVE1M
RnJhbWVTZXRFbGVtZW50Q3VzdG9tLmNwcApJbmRleDogU291cmNlL1dlYkNvcmUvVXNlVjguY21h
a2UKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvVXNlVjguY21ha2UJKHJldmlzaW9uIDEz
NTAzOCkKKysrIFNvdXJjZS9XZWJDb3JlL1VzZVY4LmNtYWtlCSh3b3JraW5nIGNvcHkpCkBAIC0x
MDYsNiArMTA2LDcgQEAgTElTVChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAgICAgYmluZGluZ3Mv
djgvY3VzdG9tL1Y4SFRNTENvbGxlY3Rpb25DdXN0b20uY3BwCiAgICAgYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4SFRNTERvY3VtZW50Q3VzdG9tLmNwcAogICAgIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEhU
TUxFbGVtZW50Q3VzdG9tLmNwcAorICAgIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxGb3JtQ29u
dHJvbHNDb2xsZWN0aW9uQ3VzdG9tLmNwcAogICAgIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxG
b3JtRWxlbWVudEN1c3RvbS5jcHAKICAgICBiaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MRnJhbWVF
bGVtZW50Q3VzdG9tLmNwcAogICAgIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxGcmFtZVNldEVs
ZW1lbnRDdXN0b20uY3BwCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCShyZXZpc2lvbiAxMzUwMzgpCisr
KyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkJKHdvcmtpbmcgY29weSkKQEAgLTEwNzQsNiAr
MTA3NCw3IEBACiAgICAgICAgICAgICAnaHRtbC9IVE1MRW1iZWRFbGVtZW50LmlkbCcsCiAgICAg
ICAgICAgICAnaHRtbC9IVE1MRmllbGRTZXRFbGVtZW50LmlkbCcsCiAgICAgICAgICAgICAnaHRt
bC9IVE1MRm9udEVsZW1lbnQuaWRsJywKKyAgICAgICAgICAgICdodG1sL0hUTUxGb3JtQ29udHJv
bHNDb2xsZWN0aW9uLmlkbCcsCiAgICAgICAgICAgICAnaHRtbC9IVE1MRm9ybUVsZW1lbnQuaWRs
JywKICAgICAgICAgICAgICdodG1sL0hUTUxGcmFtZUVsZW1lbnQuaWRsJywKICAgICAgICAgICAg
ICdodG1sL0hUTUxGcmFtZVNldEVsZW1lbnQuaWRsJywKQEAgLTIwNTksNiArMjA2MCw3IEBACiAg
ICAgICAgICAgICAnYmluZGluZ3MvanMvSlNIVE1MRWxlbWVudEN1c3RvbS5jcHAnLAogICAgICAg
ICAgICAgJ2JpbmRpbmdzL2pzL0pTSFRNTEVtYmVkRWxlbWVudEN1c3RvbS5jcHAnLAogICAgICAg
ICAgICAgJ2JpbmRpbmdzL2pzL0pTSFRNTEVtYmVkRWxlbWVudEN1c3RvbS5oJywKKyAgICAgICAg
ICAgICdiaW5kaW5ncy9qcy9KU0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uQ3VzdG9tLmNwcCcs
CiAgICAgICAgICAgICAnYmluZGluZ3MvanMvSlNIVE1MRm9ybUVsZW1lbnRDdXN0b20uY3BwJywK
ICAgICAgICAgICAgICdiaW5kaW5ncy9qcy9KU0hUTUxGcmFtZUVsZW1lbnRDdXN0b20uY3BwJywK
ICAgICAgICAgICAgICdiaW5kaW5ncy9qcy9KU0hUTUxGcmFtZVNldEVsZW1lbnRDdXN0b20uY3Bw
JywKQEAgLTIzNzUsNiArMjM3Nyw3IEBACiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9t
L1Y4SFRNTENvbGxlY3Rpb25DdXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9j
dXN0b20vVjhIVE1MRG9jdW1lbnRDdXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy92
OC9jdXN0b20vVjhIVE1MRWxlbWVudEN1c3RvbS5jcHAnLAorICAgICAgICAgICAgJ2JpbmRpbmdz
L3Y4L2N1c3RvbS9WOEhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uQ3VzdG9tLmNwcCcsCiAgICAg
ICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTEZvcm1FbGVtZW50Q3VzdG9tLmNwcCcs
CiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTEZyYW1lRWxlbWVudEN1c3Rv
bS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxGcmFtZVNldEVs
ZW1lbnRDdXN0b20uY3BwJywKQEAgLTQxMDEsOCArNDEwNCw4IEBACiAgICAgICAgICAgICAnaHRt
bC9IVE1MRmllbGRTZXRFbGVtZW50LmgnLAogICAgICAgICAgICAgJ2h0bWwvSFRNTEZvbnRFbGVt
ZW50LmNwcCcsCiAgICAgICAgICAgICAnaHRtbC9IVE1MRm9udEVsZW1lbnQuaCcsCi0gICAgICAg
ICAgICAnaHRtbC9IVE1MRm9ybUNvbGxlY3Rpb24uY3BwJywKLSAgICAgICAgICAgICdodG1sL0hU
TUxGb3JtQ29sbGVjdGlvbi5oJywKKyAgICAgICAgICAgICdodG1sL0hUTUxGb3JtQ29udHJvbHND
b2xsZWN0aW9uLmNwcCcsCisgICAgICAgICAgICAnaHRtbC9IVE1MRm9ybUNvbnRyb2xzQ29sbGVj
dGlvbi5oJywKICAgICAgICAgICAgICdodG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwJywK
ICAgICAgICAgICAgICdodG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnRXaXRoU3RhdGUuY3BwJywK
ICAgICAgICAgICAgICdodG1sL0hUTUxGb3JtRWxlbWVudC5jcHAnLApAQCAtNzYxMCw2ICs3NjEz
LDggQEAKICAgICAgICAgICAgICc8KFBST0RVQ1RfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3Jl
L0pTSFRNTEZpZWxkU2V0RWxlbWVudC5oJywKICAgICAgICAgICAgICc8KFBST0RVQ1RfRElSKS9E
ZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTSFRNTEZvbnRFbGVtZW50LmNwcCcsCiAgICAgICAgICAg
ICAnPChQUk9EVUNUX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0hUTUxGb250RWxlbWVu
dC5oJywKKyAgICAgICAgICAgICc8KFBST0RVQ1RfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3Jl
L0pTSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uY3BwJywKKyAgICAgICAgICAgICc8KFBST0RV
Q1RfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rp
b24uaCcsCiAgICAgICAgICAgICAnPChQUk9EVUNUX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29y
ZS9KU0hUTUxGb3JtRWxlbWVudC5jcHAnLAogICAgICAgICAgICAgJzwoUFJPRFVDVF9ESVIpL0Rl
cml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNIVE1MRm9ybUVsZW1lbnQuaCcsCiAgICAgICAgICAgICAn
PChQUk9EVUNUX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0hUTUxGcmFtZUVsZW1lbnQu
Y3BwJywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9q
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNw
cm9qCShyZXZpc2lvbiAxMzUwMzgpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9X
ZWJDb3JlLnZjcHJvagkod29ya2luZyBjb3B5KQpAQCAtNjk5MCw2ICs2OTkwLDYyIEBACiAJCQkJ
PgogCQkJPC9GaWxlPgogCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9IiQoQ29uZmlndXJhdGlv
bkJ1aWxkRGlyKVxvYmpcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNIVE1MRm9ybUNv
bnRyb2xzQ29sbGVjdGlvbi5jcHAiCisJCQkJPgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJ
CQlOYW1lPSJEZWJ1Z3xXaW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJ
CT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCS8+CisJ
CQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFt
ZT0iUmVsZWFzZXxXaW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCT4K
KwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCS8+CisJCQkJ
PC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0i
RGVidWdfQ2Fpcm9fQ0ZMaXRlfFdpbjMyIgorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIK
KwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJ
Lz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJ
CQlOYW1lPSJSZWxlYXNlX0NhaXJvX0NGTGl0ZXxXaW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVp
bGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRv
b2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8RmlsZUNvbmZpZ3Vy
YXRpb24KKwkJCQkJTmFtZT0iRGVidWdfQWxsfFdpbjMyIgorCQkJCQlFeGNsdWRlZEZyb21CdWls
ZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9v
bCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCTxGaWxlQ29uZmlndXJh
dGlvbgorCQkJCQlOYW1lPSJQcm9kdWN0aW9ufFdpbjMyIgorCQkJCQlFeGNsdWRlZEZyb21CdWls
ZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9v
bCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJPC9GaWxlPgorCQkJPEZp
bGUKKwkJCQlSZWxhdGl2ZVBhdGg9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmpcJChQcm9q
ZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5oIgor
CQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCiAJCQkJUmVsYXRpdmVQYXRoPSIkKENvbmZpZ3Vy
YXRpb25CdWlsZERpcilcb2JqXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTSFRNTEZv
cm1FbGVtZW50LmNwcCIKIAkJCQk+CiAJCQkJPEZpbGVDb25maWd1cmF0aW9uCkBAIC02MDUwNiwx
MSArNjA1NjIsMTEgQEAKIAkJCQk+CiAJCQk8L0ZpbGU+CiAJCQk8RmlsZQotCQkJCVJlbGF0aXZl
UGF0aD0iLi5caHRtbFxIVE1MRm9ybUNvbGxlY3Rpb24uY3BwIgorCQkJCVJlbGF0aXZlUGF0aD0i
Li5caHRtbFxIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5jcHAiCiAJCQkJPgogCQkJPC9GaWxl
PgogCQkJPEZpbGUKLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGh0bWxcSFRNTEZvcm1Db2xsZWN0aW9u
LmgiCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxodG1sXEhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9u
LmgiCiAJCQkJPgogCQkJPC9GaWxlPgogCQkJPEZpbGUKQEAgLTY4MDUzLDYgKzY4MTA5LDU4IEBA
CiAJCQkJCT4KIAkJCQk8L0ZpbGU+CiAJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxi
aW5kaW5nc1xqc1xKU0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uQ3VzdG9tLmNwcCIKKwkJCQkJ
PgorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJCU5hbWU9IkRlYnVnfFdpbjMyIgorCQkJ
CQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCQk+CisJCQkJCQk8VG9vbAorCQkJCQkJ
CU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCQkvPgorCQkJCQk8L0ZpbGVDb25maWd1cmF0
aW9uPgorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJCU5hbWU9IlJlbGVhc2V8V2luMzIi
CisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJCT4KKwkJCQkJCTxUb29sCisJ
CQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJCS8+CisJCQkJCTwvRmlsZUNvbmZp
Z3VyYXRpb24+CisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQkJTmFtZT0iRGVidWdfQ2Fp
cm9fQ0ZMaXRlfFdpbjMyIgorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCQk+
CisJCQkJCQk8VG9vbAorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCQkvPgor
CQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJ
CU5hbWU9IlJlbGVhc2VfQ2Fpcm9fQ0ZMaXRlfFdpbjMyIgorCQkJCQkJRXhjbHVkZWRGcm9tQnVp
bGQ9InRydWUiCisJCQkJCQk+CisJCQkJCQk8VG9vbAorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxl
clRvb2wiCisJCQkJCQkvPgorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCQk8RmlsZUNv
bmZpZ3VyYXRpb24KKwkJCQkJCU5hbWU9IkRlYnVnX0FsbHxXaW4zMiIKKwkJCQkJCUV4Y2x1ZGVk
RnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQkJPgorCQkJCQkJPFRvb2wKKwkJCQkJCQlOYW1lPSJWQ0NM
Q29tcGlsZXJUb29sIgorCQkJCQkJLz4KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQkJ
PEZpbGVDb25maWd1cmF0aW9uCisJCQkJCQlOYW1lPSJQcm9kdWN0aW9ufFdpbjMyIgorCQkJCQkJ
RXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCQk+CisJCQkJCQk8VG9vbAorCQkJCQkJCU5h
bWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCQkvPgorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9u
PgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQogCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGJpbmRpbmdz
XGpzXEpTSFRNTEZvcm1FbGVtZW50Q3VzdG9tLmNwcCIKIAkJCQkJPgogCQkJCQk8RmlsZUNvbmZp
Z3VyYXRpb24KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDEzNTAzOCkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMzc1MCw2ICsz
NzUwLDcgQEAKIAkJOUExQjZGOTcxNTg4NjlDODAwMTFBOEM0IC8qIEpTRE9NU3RyaW5nTGlzdEN1
c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5
QTFCNkY5NjE1ODg2OUM4MDAxMUE4QzQgLyogSlNET01TdHJpbmdMaXN0Q3VzdG9tLmNwcCAqLzsg
fTsKIAkJOUIwRkIxOTExNDBEQjU3OTAwMjI1ODhGIC8qIEhUVFBWYWxpZGF0aW9uLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlCMEZCMThGMTQwREI1
NzkwMDIyNTg4RiAvKiBIVFRQVmFsaWRhdGlvbi5jcHAgKi87IH07CiAJCTlCMEZCMTkyMTQwREI1
NzkwMDIyNTg4RiAvKiBIVFRQVmFsaWRhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gOUIwRkIxOTAxNDBEQjU3OTAwMjI1ODhGIC8qIEhUVFBWYWxp
ZGF0aW9uLmggKi87IH07CisJCTlCMUFCMDdDMTY0OEM3QzQwMDUxRjNGMiAvKiBKU0hUTUxGb3Jt
Q29udHJvbHNDb2xsZWN0aW9uQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDlCMUFCMDdCMTY0OEM3QzQwMDUxRjNGMiAvKiBKU0hUTUxGb3Jt
Q29udHJvbHNDb2xsZWN0aW9uQ3VzdG9tLmNwcCAqLzsgfTsKIAkJOUIyNERFOEUxNTE5NEI5NTAw
QzU5QzI3IC8qIEhUTUxCRElFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA5QjI0REU4QzE1MTk0Qjk1MDBDNTlDMjcgLyogSFRNTEJESUVsZW1l
bnQuaCAqLzsgfTsKIAkJOUIyQjdBQzExNTA5ODUwQTAwODkzMkNDIC8qIE1pY3JvRGF0YUl0ZW1W
YWx1ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5
QjJGN0NGNzE0NTYyMTIwMDA3RjhCNTAgLyogTWljcm9EYXRhSXRlbVZhbHVlLmNwcCAqLzsgfTsK
IAkJOUIyRDhBNzkxNDk5N0NDRjAwRUNFRjNFIC8qIFVuZG9TdGVwLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QjJEOEE3ODE0OTk3Q0NGMDBFQ0VGM0Ug
LyogVW5kb1N0ZXAuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwpAQCAtMzc2OCw2ICszNzY5LDggQEAKIAkJOUJDNkMyMUMxM0NDQzk3QjAwOEUwMzM3IC8q
IEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlCQzZDMjFBMTNDQ0M5N0IwMDhFMDMzNyAvKiBIVE1MVGV4
dEZvcm1Db250cm9sRWxlbWVudC5jcHAgKi87IH07CiAJCTlCRDBCRjkzMTJBNDJCRjUwMDcyRkQ0
MyAvKiBTY29wZWRFdmVudFF1ZXVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA5QkQwQkY5MTEyQTQyQkY1MDA3MkZENDMgLyogU2NvcGVkRXZlbnRRdWV1
ZS5oICovOyB9OwogCQk5QkQwQkY5NDEyQTQyQkY1MDA3MkZENDMgLyogU2NvcGVkRXZlbnRRdWV1
ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QkQw
QkY5MjEyQTQyQkY1MDA3MkZENDMgLyogU2NvcGVkRXZlbnRRdWV1ZS5jcHAgKi87IH07CisJCTlC
RjlBODgwMTY0OEREMkYwMDFDNkIyMyAvKiBKU0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlCRjlBODdF
MTY0OEREMkYwMDFDNkIyMyAvKiBKU0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmNwcCAqLzsg
fTsKKwkJOUJGOUE4ODExNjQ4REQyRjAwMUM2QjIzIC8qIEpTSFRNTEZvcm1Db250cm9sc0NvbGxl
Y3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlC
RjlBODdGMTY0OEREMkYwMDFDNkIyMyAvKiBKU0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmgg
Ki87IH07CiAJCTlGMEQ2QjJFMTIxQkZFQkEwMDZDMDI4OCAvKiBJbnNwZWN0b3JQcm9maWxlckFn
ZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlG
MEQ2QjJDMTIxQkZFQkEwMDZDMDI4OCAvKiBJbnNwZWN0b3JQcm9maWxlckFnZW50LmNwcCAqLzsg
fTsKIAkJOUYwRDZCMkYxMjFCRkVCQTAwNkMwMjg4IC8qIEluc3BlY3RvclByb2ZpbGVyQWdlbnQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlGMEQ2QjJE
MTIxQkZFQkEwMDZDMDI4OCAvKiBJbnNwZWN0b3JQcm9maWxlckFnZW50LmggKi87IH07CiAJCTlG
M0I5NDdFMTIyNDE3NTgwMDUzMDRFNyAvKiBTY3JpcHRIZWFwU25hcHNob3QuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlGM0I5NDdEMTIyNDE3NTgwMDUz
MDRFNyAvKiBTY3JpcHRIZWFwU25hcHNob3QuaCAqLzsgfTsKQEAgLTQzNTQsOCArNDM1Nyw4IEBA
CiAJCUE4RDA2NUFFMEEyNDQ2Q0QwMDVFNzIwMyAvKiBKU0hUTUxGb3JtRWxlbWVudEN1c3RvbS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBOEQwNjVB
RDBBMjQ0NkNEMDA1RTcyMDMgLyogSlNIVE1MRm9ybUVsZW1lbnRDdXN0b20uY3BwICovOyB9Owog
CQlBOEQwNkIzOTBBMjY1RENEMDA1RTcyMDMgLyogSFRNTE5hbWVzLmggaW4gQ29weSBHZW5lcmF0
ZWQgSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBOEQwNkIzNzBB
MjY1RENEMDA1RTcyMDMgLyogSFRNTE5hbWVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoKTsgfTsgfTsKIAkJQThEMDZCM0EwQTI2NURDRDAwNUU3MjAzIC8qIEhUTUxOYW1lcy5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBOEQwNkIzODBB
MjY1RENEMDA1RTcyMDMgLyogSFRNTE5hbWVzLmNwcCAqLzsgfTsKLQkJQThERjNGQ0UwOTdGQTBG
QzAwNTI5ODFCIC8qIEhUTUxGb3JtQ29sbGVjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThERjNGQzYwOTdGQTBGQjAwNTI5ODFCIC8qIEhUTUxG
b3JtQ29sbGVjdGlvbi5oICovOyB9OwotCQlBOERGM0ZDRjA5N0ZBMEZDMDA1Mjk4MUIgLyogSFRN
TEZvcm1Db2xsZWN0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEE4REYzRkM3MDk3RkEwRkIwMDUyOTgxQiAvKiBIVE1MRm9ybUNvbGxlY3Rpb24u
Y3BwICovOyB9OworCQlBOERGM0ZDRTA5N0ZBMEZDMDA1Mjk4MUIgLyogSFRNTEZvcm1Db250cm9s
c0NvbGxlY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEE4REYzRkM2MDk3RkEwRkIwMDUyOTgxQiAvKiBIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlv
bi5oICovOyB9OworCQlBOERGM0ZDRjA5N0ZBMEZDMDA1Mjk4MUIgLyogSFRNTEZvcm1Db250cm9s
c0NvbGxlY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQThERjNGQzcwOTdGQTBGQjAwNTI5ODFCIC8qIEhUTUxGb3JtQ29udHJvbHNDb2xsZWN0
aW9uLmNwcCAqLzsgfTsKIAkJQThERjNGRDAwOTdGQTBGQzAwNTI5ODFCIC8qIEhUTUxDb2xsZWN0
aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBOERG
M0ZDODA5N0ZBMEZCMDA1Mjk4MUIgLyogSFRNTENvbGxlY3Rpb24uaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBOERGM0ZEMTA5N0ZBMEZDMDA1Mjk4
MUIgLyogSFRNTENvbGxlY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQThERjNGQzkwOTdGQTBGQjAwNTI5ODFCIC8qIEhUTUxDb2xsZWN0aW9u
LmNwcCAqLzsgfTsKIAkJQThERjNGRDIwOTdGQTBGQzAwNTI5ODFCIC8qIEhUTUxCYXNlRm9udEVs
ZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4
REYzRkNBMDk3RkEwRkIwMDUyOTgxQiAvKiBIVE1MQmFzZUZvbnRFbGVtZW50LmggKi87IH07CkBA
IC0xMTAzNSw2ICsxMTAzOCw4IEBACiAJCTlBMUI2Rjk2MTU4ODY5QzgwMDExQThDNCAvKiBKU0RP
TVN0cmluZ0xpc3RDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gSlNET01TdHJpbmdMaXN0Q3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJOUIwRkIxOEYxNDBEQjU3OTAwMjI1ODhGIC8qIEhUVFBWYWxpZGF0aW9uLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEhUVFBWYWxpZGF0aW9uLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUIwRkIxOTAxNDBEQjU3OTAwMjI1ODhGIC8qIEhUVFBW
YWxpZGF0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhUVFBWYWxpZGF0
aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTlCMUFCMDc5MTY0OEM2OUQwMDUx
RjNGMiAvKiBIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5pZGwgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gSFRNTEZvcm1Db250
cm9sc0NvbGxlY3Rpb24uaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5QjFBQjA3
QjE2NDhDN0M0MDA1MUYzRjIgLyogSlNIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbkN1c3RvbS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0hUTUxGb3JtQ29udHJv
bHNDb2xsZWN0aW9uQ3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUIy
NERFOEMxNTE5NEI5NTAwQzU5QzI3IC8qIEhUTUxCRElFbGVtZW50LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEhUTUxCRElFbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTlCMkQ4QTc4MTQ5OTdDQ0YwMEVDRUYzRSAvKiBVbmRvU3RlcC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBVbmRvU3RlcC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk5QjJGN0NGNzE0NTYyMTIwMDA3RjhCNTAgLyogTWljcm9EYXRhSXRlbVZhbHVl
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1pY3JvRGF0YUl0ZW1W
YWx1ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMTA1NCw2ICsxMTA1OSw4
IEBACiAJCTlCQzZDMjFBMTNDQ0M5N0IwMDhFMDMzNyAvKiBIVE1MVGV4dEZvcm1Db250cm9sRWxl
bWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBIVE1MVGV4dEZv
cm1Db250cm9sRWxlbWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlCRDBC
RjkxMTJBNDJCRjUwMDcyRkQ0MyAvKiBTY29wZWRFdmVudFF1ZXVlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFNjb3BlZEV2ZW50UXVldWUuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJOUJEMEJGOTIxMkE0MkJGNTAwNzJGRDQzIC8qIFNjb3BlZEV2ZW50UXVldWUu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2NvcGVkRXZlbnRRdWV1
ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTlCRjlBODdFMTY0OEREMkYwMDFD
NkIyMyAvKiBKU0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5QkY5QTg3RjE2NDhERDJGMDAxQzZCMjMgLyog
SlNIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBKU0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTlGMEQ2QjJDMTIxQkZFQkEwMDZDMDI4OCAvKiBJbnNwZWN0b3JQcm9maWxl
ckFnZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEluc3BlY3Rv
clByb2ZpbGVyQWdlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5RjBENkIy
RDEyMUJGRUJBMDA2QzAyODggLyogSW5zcGVjdG9yUHJvZmlsZXJBZ2VudC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBJbnNwZWN0b3JQcm9maWxlckFnZW50Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlGM0I5NDdEMTIyNDE3NTgwMDUzMDRFNyAvKiBTY3JpcHRI
ZWFwU25hcHNob3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2NyaXB0SGVh
cFNuYXBzaG90Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMTUzOCw4ICsxMTU0
NSw4IEBACiAJCUE4RDA2NUFEMEEyNDQ2Q0QwMDVFNzIwMyAvKiBKU0hUTUxGb3JtRWxlbWVudEN1
c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0hUTUxGb3Jt
RWxlbWVudEN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4RDA2QjM3
MEEyNjVEQ0QwMDVFNzIwMyAvKiBIVE1MTmFtZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEhUTUxOYW1lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBOEQw
NkIzODBBMjY1RENEMDA1RTcyMDMgLyogSFRNTE5hbWVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBIVE1MTmFtZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQlBOERGM0ZDNjA5N0ZBMEZCMDA1Mjk4MUIgLyogSFRNTEZvcm1Db2xsZWN0aW9uLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBIVE1MRm9ybUNvbGxlY3Rpb24uaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQThERjNGQzcwOTdGQTBGQjAwNTI5ODFCIC8q
IEhUTUxGb3JtQ29sbGVjdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gSFRNTEZvcm1Db2xsZWN0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJQThERjNGQzYwOTdGQTBGQjAwNTI5ODFCIC8qIEhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9u
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBIVE1MRm9ybUNvbnRyb2xzQ29s
bGVjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBOERGM0ZDNzA5N0ZBMEZC
MDA1Mjk4MUIgLyogSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQThERjNGQzgwOTdGQTBGQjAwNTI5ODFCIC8q
IEhUTUxDb2xsZWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBIVE1M
Q29sbGVjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBOERGM0ZDOTA5N0ZB
MEZCMDA1Mjk4MUIgLyogSFRNTENvbGxlY3Rpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEhUTUxDb2xsZWN0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQThERjNGQ0EwOTdGQTBGQjAwNTI5ODFCIC8qIEhUTUxCYXNlRm9udEVsZW1lbnQu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhUTUxCYXNlRm9udEVsZW1lbnQu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE3NTg2LDggKzE3NTkzLDkgQEAKIAkJ
CQlBOENGRjc5ODBBMTU2OTc4MDAwQTQyMzQgLyogSFRNTEZvbnRFbGVtZW50LmNwcCAqLywKIAkJ
CQlBOENGRjc5QzBBMTU2OTc4MDAwQTQyMzQgLyogSFRNTEZvbnRFbGVtZW50LmggKi8sCiAJCQkJ
MUFFMkE5RjUwQTFDREE1NzAwQjQyQjI1IC8qIEhUTUxGb250RWxlbWVudC5pZGwgKi8sCi0JCQkJ
QThERjNGQzcwOTdGQTBGQjAwNTI5ODFCIC8qIEhUTUxGb3JtQ29sbGVjdGlvbi5jcHAgKi8sCi0J
CQkJQThERjNGQzYwOTdGQTBGQjAwNTI5ODFCIC8qIEhUTUxGb3JtQ29sbGVjdGlvbi5oICovLAor
CQkJCUE4REYzRkM3MDk3RkEwRkIwMDUyOTgxQiAvKiBIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlv
bi5jcHAgKi8sCisJCQkJQThERjNGQzYwOTdGQTBGQjAwNTI5ODFCIC8qIEhUTUxGb3JtQ29udHJv
bHNDb2xsZWN0aW9uLmggKi8sCisJCQkJOUIxQUIwNzkxNjQ4QzY5RDAwNTFGM0YyIC8qIEhUTUxG
b3JtQ29udHJvbHNDb2xsZWN0aW9uLmlkbCAqLywKIAkJCQlBODEzNjlCMzA5NzM3NEY1MDBENzQ0
NjMgLyogSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHAgKi8sCiAJCQkJQTgxMzY5QjIwOTczNzRG
NTAwRDc0NDYzIC8qIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQuaCAqLywKIAkJCQlFMTRGMUM0MjE0
QjVEQUM2MDBFQTkwMDkgLyogSFRNTEZvcm1Db250cm9sRWxlbWVudFdpdGhTdGF0ZS5jcHAgKi8s
CkBAIC0xODQ3Myw2ICsxODQ4MSw4IEBACiAJCQkJMUFFMkFBMTMwQTFDREFCMzAwQjQyQjI1IC8q
IEpTSFRNTEZpZWxkU2V0RWxlbWVudC5oICovLAogCQkJCTFBRTJBQTE0MEExQ0RBQjMwMEI0MkIy
NSAvKiBKU0hUTUxGb250RWxlbWVudC5jcHAgKi8sCiAJCQkJMUFFMkFBMTUwQTFDREFCMzAwQjQy
QjI1IC8qIEpTSFRNTEZvbnRFbGVtZW50LmggKi8sCisJCQkJOUJGOUE4N0UxNjQ4REQyRjAwMUM2
QjIzIC8qIEpTSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uY3BwICovLAorCQkJCTlCRjlBODdG
MTY0OEREMkYwMDFDNkIyMyAvKiBKU0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmggKi8sCiAJ
CQkJQThEMDY0RjkwQTIzQzBDQzAwNUU3MjAzIC8qIEpTSFRNTEZvcm1FbGVtZW50LmNwcCAqLywK
IAkJCQlBOEQwNjRGQTBBMjNDMENDMDA1RTcyMDMgLyogSlNIVE1MRm9ybUVsZW1lbnQuaCAqLywK
IAkJCQlCQzQ5MThDMDBCRkVBMDUwMDA5RDYzMTYgLyogSlNIVE1MRnJhbWVFbGVtZW50LmNwcCAq
LywKQEAgLTIwNTIxLDYgKzIwNTMxLDcgQEAKIAkJCQlCQzU4MjNGNDBDMEE5OERGMDA1M0YxQjUg
LyogSlNIVE1MRWxlbWVudEN1c3RvbS5jcHAgKi8sCiAJCQkJQkM2RDQ0QkQwQzA3RUZCNjAwNzJE
MkM5IC8qIEpTSFRNTEVtYmVkRWxlbWVudEN1c3RvbS5jcHAgKi8sCiAJCQkJRTFBRDE0MjAxMjk1
RUE2QjAwQUNBOTg5IC8qIEpTSFRNTEVtYmVkRWxlbWVudEN1c3RvbS5oICovLAorCQkJCTlCMUFC
MDdCMTY0OEM3QzQwMDUxRjNGMiAvKiBKU0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uQ3VzdG9t
LmNwcCAqLywKIAkJCQlBOEQwNjVBRDBBMjQ0NkNEMDA1RTcyMDMgLyogSlNIVE1MRm9ybUVsZW1l
bnRDdXN0b20uY3BwICovLAogCQkJCUJDMkVEN0E0MEM2QzBGMzYwMDkyMEJGRiAvKiBKU0hUTUxG
cmFtZUVsZW1lbnRDdXN0b20uY3BwICovLAogCQkJCUJDRDQxQUJBMEMwNjBERTgwMEMwRTQ0NiAv
KiBKU0hUTUxGcmFtZVNldEVsZW1lbnRDdXN0b20uY3BwICovLApAQCAtMjM3NzEsNyArMjM3ODIs
NyBAQAogCQkJCUE4MTM2OUQ0MDk3Mzc0RjYwMEQ3NDQ2MyAvKiBIVE1MRmllbGRTZXRFbGVtZW50
LmggaW4gSGVhZGVycyAqLywKIAkJCQlBOENGRjdBNjBBMTU2OTc4MDAwQTQyMzQgLyogSFRNTEZv
bnRFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk5NzdCMzg2RjEyMjg4M0U5MDBCODFGRjgg
LyogSFRNTEZvcm1hdHRpbmdFbGVtZW50TGlzdC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJQThERjNG
Q0UwOTdGQTBGQzAwNTI5ODFCIC8qIEhUTUxGb3JtQ29sbGVjdGlvbi5oIGluIEhlYWRlcnMgKi8s
CisJCQkJQThERjNGQ0UwOTdGQTBGQzAwNTI5ODFCIC8qIEhUTUxGb3JtQ29udHJvbHNDb2xsZWN0
aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlBODEzNjlDRTA5NzM3NEY2MDBENzQ0NjMgLyogSFRN
TEZvcm1Db250cm9sRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTE0RjFDNDUxNEI1REFD
NjAwRUE5MDA5IC8qIEhUTUxGb3JtQ29udHJvbEVsZW1lbnRXaXRoU3RhdGUuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUE4MTM2OUQwMDk3Mzc0RjYwMEQ3NDQ2MyAvKiBIVE1MRm9ybUVsZW1lbnQuaCBp
biBIZWFkZXJzICovLApAQCAtMjQxNTcsNiArMjQxNjgsNyBAQAogCQkJCUUxQUQxNDIxMTI5NUVB
NkIwMEFDQTk4OSAvKiBKU0hUTUxFbWJlZEVsZW1lbnRDdXN0b20uaCBpbiBIZWFkZXJzICovLAog
CQkJCTFBRTJBQTI3MEExQ0RBQjQwMEI0MkIyNSAvKiBKU0hUTUxGaWVsZFNldEVsZW1lbnQuaCBp
biBIZWFkZXJzICovLAogCQkJCTFBRTJBQTI5MEExQ0RBQjQwMEI0MkIyNSAvKiBKU0hUTUxGb250
RWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJOUJGOUE4ODExNjQ4REQyRjAwMUM2QjIzIC8q
IEpTSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUE4RDA2
NEZDMEEyM0MwQ0MwMDVFNzIwMyAvKiBKU0hUTUxGb3JtRWxlbWVudC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQkM0OTE4QzcwQkZFQTA1MDAwOUQ2MzE2IC8qIEpTSFRNTEZyYW1lRWxlbWVudC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQkM5MjZGODEwQzA1NTI0NzAwODI3NzZCIC8qIEpTSFRNTEZyYW1l
U2V0RWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNjk4OSw3ICsyNzAwMSw3IEBACiAJCQkJ
QTgxMzY5RDUwOTczNzRGNjAwRDc0NDYzIC8qIEhUTUxGaWVsZFNldEVsZW1lbnQuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJQThDRkY3QTIwQTE1Njk3ODAwMEE0MjM0IC8qIEhUTUxGb250RWxlbWVu
dC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5NzdCMzg2RTEyMjg4M0U5MDBCODFGRjggLyogSFRN
TEZvcm1hdHRpbmdFbGVtZW50TGlzdC5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlBOERGM0ZDRjA5
N0ZBMEZDMDA1Mjk4MUIgLyogSFRNTEZvcm1Db2xsZWN0aW9uLmNwcCBpbiBTb3VyY2VzICovLAor
CQkJCUE4REYzRkNGMDk3RkEwRkMwMDUyOTgxQiAvKiBIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlv
bi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBODEzNjlDRjA5NzM3NEY2MDBENzQ0NjMgLyogSFRN
TEZvcm1Db250cm9sRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFMTRGMUM0NDE0QjVE
QUM2MDBFQTkwMDkgLyogSFRNTEZvcm1Db250cm9sRWxlbWVudFdpdGhTdGF0ZS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlBODEzNjlEMTA5NzM3NEY2MDBENzQ0NjMgLyogSFRNTEZvcm1FbGVtZW50
LmNwcCBpbiBTb3VyY2VzICovLApAQCAtMjc0MDQsNiArMjc0MTYsOCBAQAogCQkJCUJDNkQ0NEJF
MEMwN0VGQjYwMDcyRDJDOSAvKiBKU0hUTUxFbWJlZEVsZW1lbnRDdXN0b20uY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMUFFMkFBMjYwQTFDREFCNDAwQjQyQjI1IC8qIEpTSFRNTEZpZWxkU2V0RWxl
bWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQUUyQUEyODBBMUNEQUI0MDBCNDJCMjUgLyog
SlNIVE1MRm9udEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJOUJGOUE4ODAxNjQ4REQy
RjAwMUM2QjIzIC8qIEpTSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uY3BwIGluIFNvdXJjZXMg
Ki8sCisJCQkJOUIxQUIwN0MxNjQ4QzdDNDAwNTFGM0YyIC8qIEpTSFRNTEZvcm1Db250cm9sc0Nv
bGxlY3Rpb25DdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQThEMDY0RkIwQTIzQzBDQzAw
NUU3MjAzIC8qIEpTSFRNTEZvcm1FbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4RDA2
NUFFMEEyNDQ2Q0QwMDVFNzIwMyAvKiBKU0hUTUxGb3JtRWxlbWVudEN1c3RvbS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlCQzQ5MThDNjBCRkVBMDUwMDA5RDYzMTYgLyogSlNIVE1MRnJhbWVFbGVt
ZW50LmNwcCBpbiBTb3VyY2VzICovLApJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNCaW5kaW5nc0FsbEluT25lLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0JpbmRpbmdzQWxsSW5PbmUuY3BwCShyZXZpc2lvbiAxMzUwMzgpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0JpbmRpbmdzQWxsSW5PbmUuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC04OSw2ICs4OSw3IEBACiAjaW5jbHVkZSAiSlNIVE1MRG9jdW1lbnRDdXN0b20uY3Bw
IgogI2luY2x1ZGUgIkpTSFRNTEVsZW1lbnRDdXN0b20uY3BwIgogI2luY2x1ZGUgIkpTSFRNTEVt
YmVkRWxlbWVudEN1c3RvbS5jcHAiCisjaW5jbHVkZSAiSlNIVE1MRm9ybUNvbnRyb2xzQ29sbGVj
dGlvbkN1c3RvbS5jcHAiCiAjaW5jbHVkZSAiSlNIVE1MRm9ybUVsZW1lbnRDdXN0b20uY3BwIgog
I2luY2x1ZGUgIkpTSFRNTEZyYW1lRWxlbWVudEN1c3RvbS5jcHAiCiAjaW5jbHVkZSAiSlNIVE1M
RnJhbWVTZXRFbGVtZW50Q3VzdG9tLmNwcCIKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTSFRNTEFsbENvbGxlY3Rpb25DdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEFsbENvbGxlY3Rpb25DdXN0b20uY3BwCShyZXZpc2lv
biAxMzUwMzgpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxBbGxDb2xsZWN0
aW9uQ3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTAsOSArNTAsOCBAQCBzdGF0aWMgSlNW
YWx1ZSBnZXROYW1lZEl0ZW1zKEV4ZWNTdGF0ZSogCiAgICAgaWYgKG5hbWVkSXRlbXMuc2l6ZSgp
ID09IDEpCiAgICAgICAgIHJldHVybiB0b0pTKGV4ZWMsIGNvbGxlY3Rpb24tPmdsb2JhbE9iamVj
dCgpLCBuYW1lZEl0ZW1zWzBdLmdldCgpKTsKIAotICAgIC8vIEZJWE1FOiBIVE1MNSBzcGVjaWZp
ZXMgdGhhdCB0aGlzIHNob3VsZCBiZSBhIER5bmFtaWNOb2RlTGlzdC4KLSAgICAvLyBGSVhNRTog
SFRNTDUgc3BlY2lmaWVzIHRoYXQgbm9uLUhUTUxPcHRpb25zQ29sbGVjdGlvbiBjb2xsZWN0aW9u
cyBzaG91bGQgcmV0dXJuCi0gICAgLy8gdGhlIGZpcnN0IG1hdGNoaW5nIGl0ZW0gaW5zdGVhZCBv
ZiBhIE5vZGVMaXN0LgorICAgIC8vIEZJWE1FOiBIVE1MNSBzcGVjaWZpY2F0aW9uIHNheXMgdGhp
cyBzaG91bGQgYmUgYSBIVE1MQ29sbGVjdGlvbi4KKyAgICAvLyBodHRwOi8vd3d3LndoYXR3Zy5v
cmcvc3BlY3Mvd2ViLWFwcHMvY3VycmVudC13b3JrL211bHRpcGFnZS9jb21tb24tZG9tLWludGVy
ZmFjZXMuaHRtbCNodG1sYWxsY29sbGVjdGlvbgogICAgIHJldHVybiB0b0pTKGV4ZWMsIGNvbGxl
Y3Rpb24tPmdsb2JhbE9iamVjdCgpLCBTdGF0aWNOb2RlTGlzdDo6YWRvcHQobmFtZWRJdGVtcyku
Z2V0KCkpOwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxDb2xs
ZWN0aW9uQ3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0hUTUxDb2xsZWN0aW9uQ3VzdG9tLmNwcAkocmV2aXNpb24gMTM1MDM4KQorKysgU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MQ29sbGVjdGlvbkN1c3RvbS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTIwLDExICsyMCwxMyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUg
IkpTSFRNTENvbGxlY3Rpb24uaCIKIAorI2luY2x1ZGUgIkhUTUxBbGxDb2xsZWN0aW9uLmgiCiAj
aW5jbHVkZSAiSFRNTENvbGxlY3Rpb24uaCIKKyNpbmNsdWRlICJIVE1MRm9ybUNvbnRyb2xzQ29s
bGVjdGlvbi5oIgogI2luY2x1ZGUgIkhUTUxPcHRpb25zQ29sbGVjdGlvbi5oIgotI2luY2x1ZGUg
IkhUTUxBbGxDb2xsZWN0aW9uLmgiCiAjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCiAjaW5jbHVk
ZSAiSlNIVE1MQWxsQ29sbGVjdGlvbi5oIgorI2luY2x1ZGUgIkpTSFRNTEZvcm1Db250cm9sc0Nv
bGxlY3Rpb24uaCIKICNpbmNsdWRlICJKU0hUTUxPcHRpb25zQ29sbGVjdGlvbi5oIgogI2luY2x1
ZGUgIkpTTm9kZS5oIgogI2luY2x1ZGUgIkpTTm9kZUxpc3QuaCIKQEAgLTM5LDI2ICs0MSw2IEBA
IHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIEpT
VmFsdWUgZ2V0TmFtZWRJdGVtcyhFeGVjU3RhdGUqIGV4ZWMsIEpTSFRNTENvbGxlY3Rpb24qIGNv
bGxlY3Rpb24sIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCi17Ci0gICAgVmVjdG9yPFJlZlB0
cjxOb2RlPiA+IG5hbWVkSXRlbXM7Ci0gICAgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lID0gcHJv
cGVydHlOYW1lVG9BdG9taWNTdHJpbmcocHJvcGVydHlOYW1lKTsKLSAgICBjb2xsZWN0aW9uLT5p
bXBsKCktPm5hbWVkSXRlbXMobmFtZSwgbmFtZWRJdGVtcyk7Ci0KLSAgICBpZiAobmFtZWRJdGVt
cy5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwotICAgIGlmIChuYW1l
ZEl0ZW1zLnNpemUoKSA9PSAxKQotICAgICAgICByZXR1cm4gdG9KUyhleGVjLCBjb2xsZWN0aW9u
LT5nbG9iYWxPYmplY3QoKSwgbmFtZWRJdGVtc1swXS5nZXQoKSk7Ci0KLSAgICBpZiAoY29sbGVj
dGlvbi0+aW1wbCgpLT50eXBlKCkgPT0gRm9ybUNvbnRyb2xzKQotICAgICAgIHJldHVybiB0b0pT
KGV4ZWMsIGNvbGxlY3Rpb24tPmdsb2JhbE9iamVjdCgpLCBjb2xsZWN0aW9uLT5pbXBsKCktPmJh
c2UoKS0+cmFkaW9Ob2RlTGlzdChuYW1lKS5nZXQoKSk7Ci0KLSAgICAvLyBGSVhNRTogSFRNTDUg
c3BlY2lmaWVzIHRoYXQgdGhpcyBzaG91bGQgYmUgYSBEeW5hbWljTm9kZUxpc3QuCi0gICAgLy8g
RklYTUU6IEhUTUw1IHNwZWNpZmllcyB0aGF0IG5vbi1IVE1MT3B0aW9uc0NvbGxlY3Rpb24gY29s
bGVjdGlvbnMgc2hvdWxkIHJldHVybgotICAgIC8vIHRoZSBmaXJzdCBtYXRjaGluZyBpdGVtIGlu
c3RlYWQgb2YgYSBOb2RlTGlzdC4KLSAgICByZXR1cm4gdG9KUyhleGVjLCBjb2xsZWN0aW9uLT5n
bG9iYWxPYmplY3QoKSwgU3RhdGljTm9kZUxpc3Q6OmFkb3B0KG5hbWVkSXRlbXMpLmdldCgpKTsK
LX0KLQogYm9vbCBKU0hUTUxDb2xsZWN0aW9uOjpjYW5HZXRJdGVtc0Zvck5hbWUoRXhlY1N0YXRl
KiwgSFRNTENvbGxlY3Rpb24qIGNvbGxlY3Rpb24sIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUp
CiB7CiAgICAgcmV0dXJuIGNvbGxlY3Rpb24tPmhhc05hbWVkSXRlbShwcm9wZXJ0eU5hbWVUb0F0
b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUpKTsKQEAgLTY2LDEzICs0OCw5IEBAIGJvb2wgSlNIVE1M
Q29sbGVjdGlvbjo6Y2FuR2V0SXRlbXNGb3JOYW0KIAogSlNWYWx1ZSBKU0hUTUxDb2xsZWN0aW9u
OjpuYW1lR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgUHJvcGVydHlO
YW1lIHByb3BlcnR5TmFtZSkKIHsKLSAgICBKU0hUTUxDb2xsZWN0aW9uKiB0aGlzT2JqID0ganND
YXN0PEpTSFRNTENvbGxlY3Rpb24qPihhc09iamVjdChzbG90QmFzZSkpOwotICAgIHJldHVybiBn
ZXROYW1lZEl0ZW1zKGV4ZWMsIHRoaXNPYmosIHByb3BlcnR5TmFtZSk7Ci19Ci0KLUpTVmFsdWUg
SlNIVE1MQ29sbGVjdGlvbjo6bmFtZWRJdGVtKEV4ZWNTdGF0ZSogZXhlYykKLXsKLSAgICByZXR1
cm4gZ2V0TmFtZWRJdGVtcyhleGVjLCB0aGlzLCBJZGVudGlmaWVyKGV4ZWMsIGV4ZWMtPmFyZ3Vt
ZW50KDApLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSkpOworICAgIEpTSFRNTENvbGxlY3Rp
b24qIGNvbGxlY3Rpb24gPSBqc0Nhc3Q8SlNIVE1MQ29sbGVjdGlvbio+KGFzT2JqZWN0KHNsb3RC
YXNlKSk7CisgICAgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lID0gcHJvcGVydHlOYW1lVG9BdG9t
aWNTdHJpbmcocHJvcGVydHlOYW1lKTsKKyAgICByZXR1cm4gdG9KUyhleGVjLCBjb2xsZWN0aW9u
LT5nbG9iYWxPYmplY3QoKSwgY29sbGVjdGlvbi0+aW1wbCgpLT5uYW1lZEl0ZW0obmFtZSkpOwog
fQogCiBKU1ZhbHVlIHRvSlMoRXhlY1N0YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBIVE1MQ29sbGVjdGlvbiogY29sbGVjdGlvbikKQEAgLTg2LDE4ICs2NCwxNyBA
QCBKU1ZhbHVlIHRvSlMoRXhlY1N0YXRlKiBleGVjLCBKU0RPTUdsb2JhCiAgICAgICAgIHJldHVy
biB3cmFwcGVyOwogCiAgICAgc3dpdGNoIChjb2xsZWN0aW9uLT50eXBlKCkpIHsKLSAgICAgICAg
Y2FzZSBTZWxlY3RPcHRpb25zOgotICAgICAgICAgICAgd3JhcHBlciA9IENSRUFURV9ET01fV1JB
UFBFUihleGVjLCBnbG9iYWxPYmplY3QsIEhUTUxPcHRpb25zQ29sbGVjdGlvbiwgY29sbGVjdGlv
bik7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBEb2NBbGw6Ci0gICAgICAgICAg
ICB3cmFwcGVyID0gQ1JFQVRFX0RPTV9XUkFQUEVSKGV4ZWMsIGdsb2JhbE9iamVjdCwgSFRNTEFs
bENvbGxlY3Rpb24sIGNvbGxlY3Rpb24pOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGRl
ZmF1bHQ6Ci0gICAgICAgICAgICB3cmFwcGVyID0gQ1JFQVRFX0RPTV9XUkFQUEVSKGV4ZWMsIGds
b2JhbE9iamVjdCwgSFRNTENvbGxlY3Rpb24sIGNvbGxlY3Rpb24pOwotICAgICAgICAgICAgYnJl
YWs7CisgICAgY2FzZSBGb3JtQ29udHJvbHM6CisgICAgICAgIHJldHVybiBDUkVBVEVfRE9NX1dS
QVBQRVIoZXhlYywgZ2xvYmFsT2JqZWN0LCBIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbiwgY29s
bGVjdGlvbik7CisgICAgY2FzZSBTZWxlY3RPcHRpb25zOgorICAgICAgICByZXR1cm4gQ1JFQVRF
X0RPTV9XUkFQUEVSKGV4ZWMsIGdsb2JhbE9iamVjdCwgSFRNTE9wdGlvbnNDb2xsZWN0aW9uLCBj
b2xsZWN0aW9uKTsKKyAgICBjYXNlIERvY0FsbDoKKyAgICAgICAgcmV0dXJuIENSRUFURV9ET01f
V1JBUFBFUihleGVjLCBnbG9iYWxPYmplY3QsIEhUTUxBbGxDb2xsZWN0aW9uLCBjb2xsZWN0aW9u
KTsKKyAgICBkZWZhdWx0OgorICAgICAgICBicmVhazsKICAgICB9CiAKLSAgICByZXR1cm4gd3Jh
cHBlcjsKKyAgICByZXR1cm4gQ1JFQVRFX0RPTV9XUkFQUEVSKGV4ZWMsIGdsb2JhbE9iamVjdCwg
SFRNTENvbGxlY3Rpb24sIGNvbGxlY3Rpb24pOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxGb3JtQ29udHJvbHNDb2xs
ZWN0aW9uQ3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uQ3VzdG9tLmNwcAkocmV2aXNpb24gMCkKKysr
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb25D
dXN0b20uY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDcxIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDA3LCAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBU
aGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k
L29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5
b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRp
c3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lU
SE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgor
ICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAg
U2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBk
ZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJy
YXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRo
IEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIkhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmgiCisKKwor
I2luY2x1ZGUgIkhUTUxBbGxDb2xsZWN0aW9uLmgiCisjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgi
CisjaW5jbHVkZSAiSlNIVE1MQ29sbGVjdGlvbi5oIgorI2luY2x1ZGUgIkpTSFRNTEZvcm1Db250
cm9sc0NvbGxlY3Rpb24uaCIKKyNpbmNsdWRlICJKU05vZGUuaCIKKyNpbmNsdWRlICJKU05vZGVM
aXN0LmgiCisjaW5jbHVkZSAiSlNSYWRpb05vZGVMaXN0LmgiCisjaW5jbHVkZSAiTm9kZS5oIgor
I2luY2x1ZGUgIlJhZGlvTm9kZUxpc3QuaCIKKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisjaW5j
bHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBKU0M7CisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RhdGljIEpTVmFsdWUgZ2V0TmFtZWRJdGVtcyhFeGVj
U3RhdGUqIGV4ZWMsIEpTSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24qIGNvbGxlY3Rpb24sIFBy
b3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCit7CisgICAgVmVjdG9yPFJlZlB0cjxOb2RlPiA+IG5h
bWVkSXRlbXM7CisgICAgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lID0gcHJvcGVydHlOYW1lVG9B
dG9taWNTdHJpbmcocHJvcGVydHlOYW1lKTsKKyAgICBjb2xsZWN0aW9uLT5pbXBsKCktPm5hbWVk
SXRlbXMobmFtZSwgbmFtZWRJdGVtcyk7CisKKyAgICBpZiAobmFtZWRJdGVtcy5pc0VtcHR5KCkp
CisgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworICAgIGlmIChuYW1lZEl0ZW1zLnNpemUo
KSA9PSAxKQorICAgICAgICByZXR1cm4gdG9KUyhleGVjLCBjb2xsZWN0aW9uLT5nbG9iYWxPYmpl
Y3QoKSwgbmFtZWRJdGVtc1swXS5nZXQoKSk7CisKKyAgICBBU1NFUlQoY29sbGVjdGlvbi0+aW1w
bCgpLT50eXBlKCkgPT0gRm9ybUNvbnRyb2xzKTsKKyAgICByZXR1cm4gdG9KUyhleGVjLCBjb2xs
ZWN0aW9uLT5nbG9iYWxPYmplY3QoKSwgY29sbGVjdGlvbi0+aW1wbCgpLT5iYXNlKCktPnJhZGlv
Tm9kZUxpc3QobmFtZSkuZ2V0KCkpOworfQorCitib29sIEpTSFRNTEZvcm1Db250cm9sc0NvbGxl
Y3Rpb246OmNhbkdldEl0ZW1zRm9yTmFtZShFeGVjU3RhdGUqLCBIVE1MRm9ybUNvbnRyb2xzQ29s
bGVjdGlvbiogY29sbGVjdGlvbiwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKK3sKKyAgICBy
ZXR1cm4gY29sbGVjdGlvbi0+aGFzTmFtZWRJdGVtKHByb3BlcnR5TmFtZVRvQXRvbWljU3RyaW5n
KHByb3BlcnR5TmFtZSkpOworfQorCitKU1ZhbHVlIEpTSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rp
b246Om5hbWVHZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBQcm9wZXJ0
eU5hbWUgcHJvcGVydHlOYW1lKQoreworICAgIEpTSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24q
IHRoaXNPYmogPSBqc0Nhc3Q8SlNIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbio+KGFzT2JqZWN0
KHNsb3RCYXNlKSk7CisgICAgcmV0dXJuIGdldE5hbWVkSXRlbXMoZXhlYywgdGhpc09iaiwgcHJv
cGVydHlOYW1lKTsKK30KKworSlNWYWx1ZSBKU0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uOjpu
YW1lZEl0ZW0oRXhlY1N0YXRlKiBleGVjKQoreworICAgIHJldHVybiBnZXROYW1lZEl0ZW1zKGV4
ZWMsIHRoaXMsIElkZW50aWZpZXIoZXhlYywgZXhlYy0+YXJndW1lbnQoMCkudG9TdHJpbmcoZXhl
YyktPnZhbHVlKGV4ZWMpKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTE9wdGlvbnNDb2xsZWN0aW9uQ3VzdG9tLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxPcHRpb25z
Q29sbGVjdGlvbkN1c3RvbS5jcHAJKHJldmlzaW9uIDEzNTAzOCkKKysrIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTSFRNTE9wdGlvbnNDb2xsZWN0aW9uQ3VzdG9tLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjgsNiArMjgsOCBAQAogI2luY2x1ZGUgIkpTSFRNTE9wdGlvbkVsZW1lbnQuaCIK
ICNpbmNsdWRlICJKU0hUTUxTZWxlY3RFbGVtZW50LmgiCiAjaW5jbHVkZSAiSlNIVE1MU2VsZWN0
RWxlbWVudEN1c3RvbS5oIgorI2luY2x1ZGUgIkpTTm9kZUxpc3QuaCIKKyNpbmNsdWRlICJTdGF0
aWNOb2RlTGlzdC5oIgogCiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KIApAQCAtMzUsNiAr
MzcsMzcgQEAgdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitz
dGF0aWMgSlNWYWx1ZSBnZXROYW1lZEl0ZW1zKEV4ZWNTdGF0ZSogZXhlYywgSlNIVE1MT3B0aW9u
c0NvbGxlY3Rpb24qIGNvbGxlY3Rpb24sIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCit7Cisg
ICAgVmVjdG9yPFJlZlB0cjxOb2RlPiA+IG5hbWVkSXRlbXM7CisgICAgY29uc3QgQXRvbWljU3Ry
aW5nJiBuYW1lID0gcHJvcGVydHlOYW1lVG9BdG9taWNTdHJpbmcocHJvcGVydHlOYW1lKTsKKyAg
ICBjb2xsZWN0aW9uLT5pbXBsKCktPm5hbWVkSXRlbXMobmFtZSwgbmFtZWRJdGVtcyk7CisKKyAg
ICBpZiAobmFtZWRJdGVtcy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgp
OworICAgIGlmIChuYW1lZEl0ZW1zLnNpemUoKSA9PSAxKQorICAgICAgICByZXR1cm4gdG9KUyhl
eGVjLCBjb2xsZWN0aW9uLT5nbG9iYWxPYmplY3QoKSwgbmFtZWRJdGVtc1swXS5nZXQoKSk7CisK
KyAgICAvLyBGSVhNRTogSFRNTDUgc3BlY2lmaWVzIHRoYXQgdGhpcyBzaG91bGQgYmUgYSBEeW5h
bWljTm9kZUxpc3QuCisgICAgcmV0dXJuIHRvSlMoZXhlYywgY29sbGVjdGlvbi0+Z2xvYmFsT2Jq
ZWN0KCksIFN0YXRpY05vZGVMaXN0OjphZG9wdChuYW1lZEl0ZW1zKS5nZXQoKSk7Cit9CisKK2Jv
b2wgSlNIVE1MT3B0aW9uc0NvbGxlY3Rpb246OmNhbkdldEl0ZW1zRm9yTmFtZShFeGVjU3RhdGUq
LCBIVE1MT3B0aW9uc0NvbGxlY3Rpb24qIGNvbGxlY3Rpb24sIFByb3BlcnR5TmFtZSBwcm9wZXJ0
eU5hbWUpCit7CisgICAgcmV0dXJuIGNvbGxlY3Rpb24tPmhhc05hbWVkSXRlbShwcm9wZXJ0eU5h
bWVUb0F0b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUpKTsKK30KKworSlNWYWx1ZSBKU0hUTUxPcHRp
b25zQ29sbGVjdGlvbjo6bmFtZUdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJh
c2UsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCit7CisgICAgSlNIVE1MT3B0aW9uc0NvbGxl
Y3Rpb24qIHRoaXNPYmogPSBqc0Nhc3Q8SlNIVE1MT3B0aW9uc0NvbGxlY3Rpb24qPihhc09iamVj
dChzbG90QmFzZSkpOworICAgIHJldHVybiBnZXROYW1lZEl0ZW1zKGV4ZWMsIHRoaXNPYmosIHBy
b3BlcnR5TmFtZSk7Cit9CisKK0pTVmFsdWUgSlNIVE1MT3B0aW9uc0NvbGxlY3Rpb246Om5hbWVk
SXRlbShFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgcmV0dXJuIGdldE5hbWVkSXRlbXMoZXhlYywg
dGhpcywgSWRlbnRpZmllcihleGVjLCBleGVjLT5hcmd1bWVudCgwKS50b1N0cmluZyhleGVjKS0+
dmFsdWUoZXhlYykpKTsKK30KKwogdm9pZCBKU0hUTUxPcHRpb25zQ29sbGVjdGlvbjo6c2V0TGVu
Z3RoKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSkKIHsKICAgICBIVE1MT3B0aW9uc0Nv
bGxlY3Rpb24qIGltcCA9IHN0YXRpY19jYXN0PEhUTUxPcHRpb25zQ29sbGVjdGlvbio+KGltcGwo
KSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JK
Uy5wbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVH
ZW5lcmF0b3JKUy5wbQkocmV2aXNpb24gMTM1MDM4KQorKysgU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0JKHdvcmtpbmcgY29weSkKQEAgLTQwOCw3ICs0
MDgsNyBAQCBzdWIgR2VuZXJhdGVHZXRPd25Qcm9wZXJ0eVNsb3RCb2R5CiAKICAgICBteSBAZ2V0
T3duUHJvcGVydHlTbG90SW1wbCA9ICgpOwogCi0gICAgaWYgKCRpbnRlcmZhY2VOYW1lIGVxICJO
YW1lZE5vZGVNYXAiIG9yICRpbnRlcmZhY2VOYW1lIGVxICJIVE1MQ29sbGVjdGlvbiIgb3IgJGlu
dGVyZmFjZU5hbWUgZXEgIkhUTUxBbGxDb2xsZWN0aW9uIiBvciAkaW50ZXJmYWNlTmFtZSBlcSAi
SFRNTFByb3BlcnRpZXNDb2xsZWN0aW9uIikgeworICAgIGlmICgkaW50ZXJmYWNlTmFtZSBlcSAi
TmFtZWROb2RlTWFwIiBvciAkaW50ZXJmYWNlTmFtZSA9fiAvXkhUTUxcdypDb2xsZWN0aW9uJC8p
IHsKICAgICAgICAgcHVzaChAZ2V0T3duUHJvcGVydHlTbG90SW1wbCwgIiAgICAke25hbWVzcGFj
ZU1heWJlfUpTVmFsdWUgcHJvdG8gPSB0aGlzT2JqZWN0LT5wcm90b3R5cGUoKTtcbiIpOwogICAg
ICAgICBwdXNoKEBnZXRPd25Qcm9wZXJ0eVNsb3RJbXBsLCAiICAgIGlmIChwcm90by5pc09iamVj
dCgpICYmIGpzQ2FzdDwke25hbWVzcGFjZU1heWJlfUpTT2JqZWN0Kj4oYXNPYmplY3QocHJvdG8p
KS0+aGFzUHJvcGVydHkoZXhlYywgcHJvcGVydHlOYW1lKSlcbiIpOwogICAgICAgICBwdXNoKEBn
ZXRPd25Qcm9wZXJ0eVNsb3RJbXBsLCAiICAgICAgICByZXR1cm4gZmFsc2U7XG5cbiIpOwpAQCAt
NTAwLDcgKzUwMCw3IEBAIHN1YiBHZW5lcmF0ZUdldE93blByb3BlcnR5RGVzY3JpcHRvckJvZHkK
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHJldHVybiBmYWxzZTtcbiIpOwog
ICAgIH0KICAgICAKLSAgICBpZiAoJGludGVyZmFjZU5hbWUgZXEgIk5hbWVkTm9kZU1hcCIgb3Ig
JGludGVyZmFjZU5hbWUgZXEgIkhUTUxDb2xsZWN0aW9uIiBvciAkaW50ZXJmYWNlTmFtZSBlcSAi
SFRNTEFsbENvbGxlY3Rpb24iIG9yICRpbnRlcmZhY2VOYW1lIGVxICJIVE1MUHJvcGVydGllc0Nv
bGxlY3Rpb24iKSB7CisgICAgaWYgKCRpbnRlcmZhY2VOYW1lIGVxICJOYW1lZE5vZGVNYXAiIG9y
ICRpbnRlcmZhY2VOYW1lID1+IC9eSFRNTFx3KkNvbGxlY3Rpb24kLykgewogICAgICAgICBwdXNo
KEBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JJbXBsLCAiICAgICR7bmFtZXNwYWNlTWF5YmV9SlNW
YWx1ZSBwcm90byA9IHRoaXNPYmplY3QtPnByb3RvdHlwZSgpO1xuIik7CiAgICAgICAgIHB1c2go
QGdldE93blByb3BlcnR5RGVzY3JpcHRvckltcGwsICIgICAgaWYgKHByb3RvLmlzT2JqZWN0KCkg
JiYganNDYXN0PCR7bmFtZXNwYWNlTWF5YmV9SlNPYmplY3QqPihhc09iamVjdChwcm90bykpLT5o
YXNQcm9wZXJ0eShleGVjLCBwcm9wZXJ0eU5hbWUpKVxuIik7CiAgICAgICAgIHB1c2goQGdldE93
blByb3BlcnR5RGVzY3JpcHRvckltcGwsICIgICAgICAgIHJldHVybiBmYWxzZTtcblxuIik7CkBA
IC0yNDM0LDcgKzI0MzQsNyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJuIHRvSlMoZXhlYywgdGhpc09iai0+Z2xv
YmFsT2JqZWN0KCksIHN0YXRpY19jYXN0PCRpbXBsQ2xhc3NOYW1lKj4odGhpc09iai0+aW1wbCgp
KS0+aXRlbShpbmRleCkpO1xuIik7CiAgICAgICAgIH0KICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICJ9XG5cbiIpOwotICAgICAgICBpZiAoJGludGVyZmFjZU5hbWUgZXEgIkhUTUxDb2xsZWN0
aW9uIiBvciAkaW50ZXJmYWNlTmFtZSBlcSAiSFRNTEFsbENvbGxlY3Rpb24iIG9yICRpbnRlcmZh
Y2VOYW1lIGVxICJSYWRpb05vZGVMaXN0IikgeworICAgICAgICBpZiAoJGludGVyZmFjZU5hbWUg
PX4gL15IVE1MXHcqQ29sbGVjdGlvbiQvIG9yICRpbnRlcmZhY2VOYW1lIGVxICJSYWRpb05vZGVM
aXN0IikgewogICAgICAgICAgICAgJGltcGxJbmNsdWRlc3siSlNOb2RlLmgifSA9IDE7CiAgICAg
ICAgICAgICAkaW1wbEluY2x1ZGVzeyJOb2RlLmgifSA9IDE7CiAgICAgICAgIH0KQEAgLTI0NTAs
NyArMjQ1MCw3IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAiICAgICAgICByZXR1cm4ganNOYU4oKTtcbiIpOwogICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgIiAgICByZXR1cm4gSlNWYWx1ZShyZXN1bHQpO1xuIik7CiAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAifVxuXG4iKTsKLSAgICAgICAgaWYgKCRpbnRlcmZhY2VOYW1lIGVx
ICJIVE1MQ29sbGVjdGlvbiIgb3IgJGludGVyZmFjZU5hbWUgZXEgIkhUTUxBbGxDb2xsZWN0aW9u
IikgeworICAgICAgICBpZiAoJGludGVyZmFjZU5hbWUgPX4gL15IVE1MXHcqQ29sbGVjdGlvbiQv
KSB7CiAgICAgICAgICAgICAkaW1wbEluY2x1ZGVzeyJKU05vZGUuaCJ9ID0gMTsKICAgICAgICAg
ICAgICRpbXBsSW5jbHVkZXN7Ik5vZGUuaCJ9ID0gMTsKICAgICAgICAgfQpJbmRleDogU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0JKHJl
dmlzaW9uIDEzNTAzOCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdl
bmVyYXRvclY4LnBtCSh3b3JraW5nIGNvcHkpCkBAIC0yNTU5LDEzICsyNTU5LDYgQEAgc3ViIEdl
bmVyYXRlSW1wbGVtZW50YXRpb25OYW1lZFByb3BlcnR5RwogICAgIG15ICRpbnRlcmZhY2VOYW1l
ID0gJGRhdGFOb2RlLT5uYW1lOwogICAgIG15ICRoYXNDdXN0b21OYW1lZEdldHRlciA9ICRkYXRh
Tm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbU5hbWVkR2V0dGVyIn0gfHwgJGRhdGFO
b2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tR2V0T3duUHJvcGVydHlTbG90In07CiAK
LSAgICAjIEZJWE1FOiBSZW1vdmUgaGFyZC1jb2RlZCBIVE1MT3B0aW9uc0NvbGxlY3Rpb24gcmVm
ZXJlbmNlIGJ5IGNoYW5naW5nIEhUTUxPcHRpb25zQ29sbGVjdGlvbiB0byBub3QgaW5oZXJpdAot
ICAgICMgZnJvbSBIVE1MQ29sbGVjdGlvbiBwZXIgVzNDIHNwZWMgKGh0dHA6Ly93d3cudzMub3Jn
L1RSLzIwMDMvUkVDLURPTS1MZXZlbC0yLUhUTUwtMjAwMzAxMDkvaHRtbC5odG1sI0hUTUxPcHRp
b25zQ29sbGVjdGlvbikuCi0gICAgaWYgKCRpbnRlcmZhY2VOYW1lIGVxICJIVE1MT3B0aW9uc0Nv
bGxlY3Rpb24iKSB7Ci0gICAgICAgICRpbnRlcmZhY2VOYW1lID0gIkhUTUxDb2xsZWN0aW9uIjsK
LSAgICAgICAgJGhhc0N1c3RvbU5hbWVkR2V0dGVyID0gMTsKLSAgICB9Ci0KICAgICBpZiAoJGlu
dGVyZmFjZU5hbWUgZXEgIkhUTUxBcHBsZXRFbGVtZW50IiB8fCAkaW50ZXJmYWNlTmFtZSBlcSAi
SFRNTEVtYmVkRWxlbWVudCIgfHwgJGludGVyZmFjZU5hbWUgZXEgIkhUTUxPYmplY3RFbGVtZW50
IikgewogICAgICAgICAkaGFzQ3VzdG9tTmFtZWRHZXR0ZXIgPSAxOwogICAgIH0KSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxBbGxDb2xsZWN0aW9uQ3VzdG9t
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhI
VE1MQWxsQ29sbGVjdGlvbkN1c3RvbS5jcHAJKHJldmlzaW9uIDEzNTAzOCkKKysrIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxBbGxDb2xsZWN0aW9uQ3VzdG9tLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNTEsNiArNTEsOCBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFs
dWU+IGdldE5hbWVkSXRlCiAgICAgaWYgKG5hbWVkSXRlbXMuc2l6ZSgpID09IDEpCiAgICAgICAg
IHJldHVybiB0b1Y4KG5hbWVkSXRlbXMuYXQoMCkucmVsZWFzZSgpLCBjcmVhdGlvbkNvbnRleHQs
IGlzb2xhdGUpOwogCisgICAgLy8gRklYTUU6IEhUTUw1IHNwZWNpZmljYXRpb24gc2F5cyB0aGlz
IHNob3VsZCBiZSBhIEhUTUxDb2xsZWN0aW9uLgorICAgIC8vIGh0dHA6Ly93d3cud2hhdHdnLm9y
Zy9zcGVjcy93ZWItYXBwcy9jdXJyZW50LXdvcmsvbXVsdGlwYWdlL2NvbW1vbi1kb20taW50ZXJm
YWNlcy5odG1sI2h0bWxhbGxjb2xsZWN0aW9uCiAgICAgcmV0dXJuIHRvVjgoVjhOYW1lZE5vZGVz
Q29sbGVjdGlvbjo6Y3JlYXRlKG5hbWVkSXRlbXMpLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUp
OwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MQ29s
bGVjdGlvbkN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvY3VzdG9tL1Y4SFRNTENvbGxlY3Rpb25DdXN0b20uY3BwCShyZXZpc2lvbiAxMzUwMzgpCisr
KyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MQ29sbGVjdGlvbkN1c3Rv
bS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyLDMzICszMiwxNSBAQAogI2luY2x1ZGUgIlY4SFRN
TENvbGxlY3Rpb24uaCIKIAogI2luY2x1ZGUgIkhUTUxDb2xsZWN0aW9uLmgiCi0jaW5jbHVkZSAi
UmFkaW9Ob2RlTGlzdC5oIgogI2luY2x1ZGUgIlY4QmluZGluZy5oIgogI2luY2x1ZGUgIlY4SFRN
TEFsbENvbGxlY3Rpb24uaCIKKyNpbmNsdWRlICJWOEhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9u
LmgiCisjaW5jbHVkZSAiVjhIVE1MT3B0aW9uc0NvbGxlY3Rpb24uaCIKICNpbmNsdWRlICJWOE5h
bWVkTm9kZXNDb2xsZWN0aW9uLmgiCiAjaW5jbHVkZSAiVjhOb2RlLmgiCi0jaW5jbHVkZSAiVjhO
b2RlTGlzdC5oIgotI2luY2x1ZGUgIlY4UmFkaW9Ob2RlTGlzdC5oIgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLXN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gZ2V0TmFtZWRJdGVtcyhIVE1M
Q29sbGVjdGlvbiogY29sbGVjdGlvbiwgQXRvbWljU3RyaW5nIG5hbWUsIHY4OjpIYW5kbGU8djg6
Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0LCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKLXsKLSAgICBW
ZWN0b3I8UmVmUHRyPE5vZGU+ID4gbmFtZWRJdGVtczsKLSAgICBjb2xsZWN0aW9uLT5uYW1lZEl0
ZW1zKG5hbWUsIG5hbWVkSXRlbXMpOwotCi0gICAgaWYgKCFuYW1lZEl0ZW1zLnNpemUoKSkKLSAg
ICAgICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7Ci0KLSAgICBpZiAobmFtZWRJdGVtcy5zaXplKCkg
PT0gMSkKLSAgICAgICAgcmV0dXJuIHRvVjgobmFtZWRJdGVtcy5hdCgwKS5yZWxlYXNlKCksIGNy
ZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7Ci0KLSAgICBpZiAoY29sbGVjdGlvbi0+dHlwZSgpID09
IEZvcm1Db250cm9scykKLSAgICAgICAgcmV0dXJuIHRvVjgoY29sbGVjdGlvbi0+YmFzZSgpLT5y
YWRpb05vZGVMaXN0KG5hbWUpLmdldCgpLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOwotCi0g
ICAgcmV0dXJuIHRvVjgoVjhOYW1lZE5vZGVzQ29sbGVjdGlvbjo6Y3JlYXRlKG5hbWVkSXRlbXMp
LCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOwotfQotCiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
VjhIVE1MQ29sbGVjdGlvbjo6bmFtZWRQcm9wZXJ0eUdldHRlcih2ODo6TG9jYWw8djg6OlN0cmlu
Zz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKICAgICBJTkNfU1RBVFMo
IkRPTS5IVE1MQ29sbGVjdGlvbi5OYW1lZFByb3BlcnR5R2V0dGVyIik7CkBAIC02OSwyNiArNTEs
MjYgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SFRNTENvbGxlY3Rpb246OgogICAgICAgICBy
ZXR1cm4gdjhVbmRlZmluZWQoKTsKIAogICAgIEhUTUxDb2xsZWN0aW9uKiBpbXAgPSBWOEhUTUxD
b2xsZWN0aW9uOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKLSAgICByZXR1cm4gZ2V0TmFtZWRJ
dGVtcyhpbXAsIHRvV2ViQ29yZUF0b21pY1N0cmluZyhuYW1lKSwgaW5mby5Ib2xkZXIoKSwgaW5m
by5HZXRJc29sYXRlKCkpOwotfQotCi12ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhIVE1MQ29sbGVj
dGlvbjo6bmFtZWRJdGVtQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKLXsKLSAg
ICBJTkNfU1RBVFMoIkRPTS5IVE1MQ29sbGVjdGlvbi5uYW1lZEl0ZW0oKSIpOwotICAgIEhUTUxD
b2xsZWN0aW9uKiBpbXAgPSBWOEhUTUxDb2xsZWN0aW9uOjp0b05hdGl2ZShhcmdzLkhvbGRlcigp
KTsKLSAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gcmVzdWx0ID0gZ2V0TmFtZWRJdGVtcyhpbXAs
IHRvV2ViQ29yZVN0cmluZyhhcmdzWzBdKSwgYXJncy5Ib2xkZXIoKSwgYXJncy5HZXRJc29sYXRl
KCkpOwotCi0gICAgaWYgKHJlc3VsdC5Jc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiB2ODo6VW5k
ZWZpbmVkKCk7Ci0KLSAgICByZXR1cm4gcmVzdWx0OworICAgIE5vZGUqIGl0ZW0gPSBpbXAtPm5h
bWVkSXRlbSh0b1dlYkNvcmVBdG9taWNTdHJpbmcobmFtZSkpOworICAgIGlmICghaXRlbSkKKyAg
ICAgICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7CisgICAgcmV0dXJuIHRvVjgoaXRlbSwgaW5mby5I
b2xkZXIoKSwgaW5mby5HZXRJc29sYXRlKCkpOwogfQogCiB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+
IHdyYXAoSFRNTENvbGxlY3Rpb24qIGltcGwsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRp
b25Db250ZXh0LCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKIHsKICAgICBBU1NFUlQoaW1wbCk7Ci0g
ICAgaWYgKGltcGwtPnR5cGUoKSA9PSBEb2NBbGwpCisgICAgc3dpdGNoIChpbXBsLT50eXBlKCkp
IHsKKyAgICBjYXNlIEZvcm1Db250cm9sczoKKyAgICAgICAgcmV0dXJuIHdyYXAoc3RhdGljX2Nh
c3Q8SFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24qPihpbXBsKSwgY3JlYXRpb25Db250ZXh0LCBp
c29sYXRlKTsKKyAgICBjYXNlIFNlbGVjdE9wdGlvbnM6CisgICAgICAgIHJldHVybiB3cmFwKHN0
YXRpY19jYXN0PEhUTUxPcHRpb25zQ29sbGVjdGlvbio+KGltcGwpLCBjcmVhdGlvbkNvbnRleHQs
IGlzb2xhdGUpOworICAgIGNhc2UgRG9jQWxsOgogICAgICAgICByZXR1cm4gd3JhcChzdGF0aWNf
Y2FzdDxIVE1MQWxsQ29sbGVjdGlvbio+KGltcGwpLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUp
OworICAgIGRlZmF1bHQ6CisgICAgICAgIGJyZWFrOworICAgIH0KKwogICAgIHJldHVybiBWOEhU
TUxDb2xsZWN0aW9uOjpjcmVhdGVXcmFwcGVyKGltcGwsIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0
ZSk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxG
b3JtQ29udHJvbHNDb2xsZWN0aW9uQ3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbkN1c3Rv
bS5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20v
VjhIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbkN1c3RvbS5jcHAJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsODEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIAorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBt
ZXQ6CisgKiAKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1l
IG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICog
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
KyAqIAorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisg
KiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiVjhIVE1MRm9ybUNv
bnRyb2xzQ29sbGVjdGlvbi5oIgorCisjaW5jbHVkZSAiSFRNTENvbGxlY3Rpb24uaCIKKyNpbmNs
dWRlICJSYWRpb05vZGVMaXN0LmgiCisjaW5jbHVkZSAiVjhCaW5kaW5nLmgiCisjaW5jbHVkZSAi
VjhOb2RlLmgiCisjaW5jbHVkZSAiVjhSYWRpb05vZGVMaXN0LmgiCisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBnZXROYW1lZEl0ZW1zKEhUTUxG
b3JtQ29udHJvbHNDb2xsZWN0aW9uKiBjb2xsZWN0aW9uLCBjb25zdCBBdG9taWNTdHJpbmcmIG5h
bWUsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0LCB2ODo6SXNvbGF0ZSog
aXNvbGF0ZSkKK3sKKyAgICBWZWN0b3I8UmVmUHRyPE5vZGU+ID4gbmFtZWRJdGVtczsKKyAgICBj
b2xsZWN0aW9uLT5uYW1lZEl0ZW1zKG5hbWUsIG5hbWVkSXRlbXMpOworCisgICAgaWYgKCFuYW1l
ZEl0ZW1zLnNpemUoKSkKKyAgICAgICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7CisKKyAgICBpZiAo
bmFtZWRJdGVtcy5zaXplKCkgPT0gMSkKKyAgICAgICAgcmV0dXJuIHRvVjgobmFtZWRJdGVtcy5h
dCgwKS5yZWxlYXNlKCksIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7CisKKyAgICByZXR1cm4g
dG9WOChjb2xsZWN0aW9uLT5iYXNlKCktPnJhZGlvTm9kZUxpc3QobmFtZSkuZ2V0KCksIGNyZWF0
aW9uQ29udGV4dCwgaXNvbGF0ZSk7Cit9CisKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEhUTUxG
b3JtQ29udHJvbHNDb2xsZWN0aW9uOjpuYW1lZFByb3BlcnR5R2V0dGVyKHY4OjpMb2NhbDx2ODo6
U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIElOQ19T
VEFUUygiRE9NLkhUTUxDb2xsZWN0aW9uLk5hbWVkUHJvcGVydHlHZXR0ZXIiKTsKKworICAgIGlm
ICghaW5mby5Ib2xkZXIoKS0+R2V0UmVhbE5hbWVkUHJvcGVydHlJblByb3RvdHlwZUNoYWluKG5h
bWUpLklzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7CisgICAgaWYgKGlu
Zm8uSG9sZGVyKCktPkhhc1JlYWxOYW1lZENhbGxiYWNrUHJvcGVydHkobmFtZSkpCisgICAgICAg
IHJldHVybiB2OFVuZGVmaW5lZCgpOworCisgICAgSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24q
IGltcCA9IFY4SFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb246OnRvTmF0aXZlKGluZm8uSG9sZGVy
KCkpOworICAgIHJldHVybiBnZXROYW1lZEl0ZW1zKGltcCwgdG9XZWJDb3JlQXRvbWljU3RyaW5n
KG5hbWUpLCBpbmZvLkhvbGRlcigpLCBpbmZvLkdldElzb2xhdGUoKSk7Cit9CisKK3Y4OjpIYW5k
bGU8djg6OlZhbHVlPiBWOEhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uOjpuYW1lZEl0ZW1DYWxs
YmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQoreworICAgIElOQ19TVEFUUygiRE9NLkhU
TUxDb2xsZWN0aW9uLm5hbWVkSXRlbSgpIik7CisgICAgSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rp
b24qIGltcCA9IFY4SFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb246OnRvTmF0aXZlKGFyZ3MuSG9s
ZGVyKCkpOworICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiByZXN1bHQgPSBnZXROYW1lZEl0ZW1z
KGltcCwgdG9XZWJDb3JlU3RyaW5nKGFyZ3NbMF0pLCBhcmdzLkhvbGRlcigpLCBhcmdzLkdldElz
b2xhdGUoKSk7CisKKyAgICBpZiAocmVzdWx0LklzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIHY4
OjpVbmRlZmluZWQoYXJncy5HZXRJc29sYXRlKCkpOworCisgICAgcmV0dXJuIHJlc3VsdDsKK30K
KworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvY3VzdG9tL1Y4SFRNTE9wdGlvbnNDb2xsZWN0aW9uQ3VzdG9tLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MT3B0aW9uc0NvbGxlY3Rp
b25DdXN0b20uY3BwCShyZXZpc2lvbiAxMzUwMzgpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9jdXN0b20vVjhIVE1MT3B0aW9uc0NvbGxlY3Rpb25DdXN0b20uY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zOSwxMCArMzksNTEgQEAKICNpbmNsdWRlICJWOENvbGxlY3Rpb24uaCIKICNpbmNs
dWRlICJWOEhUTUxPcHRpb25FbGVtZW50LmgiCiAjaW5jbHVkZSAiVjhIVE1MU2VsZWN0RWxlbWVu
dEN1c3RvbS5oIgorI2luY2x1ZGUgIlY4TmFtZWROb2Rlc0NvbGxlY3Rpb24uaCIKICNpbmNsdWRl
ICJWOE5vZGUuaCIKKyNpbmNsdWRlICJWOE5vZGVMaXN0LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAorc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBnZXROYW1lZEl0ZW1zKEhUTUxPcHRp
b25zQ29sbGVjdGlvbiogY29sbGVjdGlvbiwgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCB2ODo6
SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCwgdjg6Oklzb2xhdGUqIGlzb2xhdGUp
Cit7CisgICAgVmVjdG9yPFJlZlB0cjxOb2RlPiA+IG5hbWVkSXRlbXM7CisgICAgY29sbGVjdGlv
bi0+bmFtZWRJdGVtcyhuYW1lLCBuYW1lZEl0ZW1zKTsKKworICAgIGlmICghbmFtZWRJdGVtcy5z
aXplKCkpCisgICAgICAgIHJldHVybiB2OFVuZGVmaW5lZCgpOworCisgICAgaWYgKG5hbWVkSXRl
bXMuc2l6ZSgpID09IDEpCisgICAgICAgIHJldHVybiB0b1Y4KG5hbWVkSXRlbXMuYXQoMCkucmVs
ZWFzZSgpLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOworCisgICAgcmV0dXJuIHRvVjgoVjhO
YW1lZE5vZGVzQ29sbGVjdGlvbjo6Y3JlYXRlKG5hbWVkSXRlbXMpLCBjcmVhdGlvbkNvbnRleHQs
IGlzb2xhdGUpOworfQorCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhIVE1MT3B0aW9uc0NvbGxl
Y3Rpb246Om5hbWVkUHJvcGVydHlHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNv
bnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgSU5DX1NUQVRTKCJET00uSFRNTENv
bGxlY3Rpb24uTmFtZWRQcm9wZXJ0eUdldHRlciIpOworCisgICAgaWYgKCFpbmZvLkhvbGRlcigp
LT5HZXRSZWFsTmFtZWRQcm9wZXJ0eUluUHJvdG90eXBlQ2hhaW4obmFtZSkuSXNFbXB0eSgpKQor
ICAgICAgICByZXR1cm4gdjhVbmRlZmluZWQoKTsKKyAgICBpZiAoaW5mby5Ib2xkZXIoKS0+SGFz
UmVhbE5hbWVkQ2FsbGJhY2tQcm9wZXJ0eShuYW1lKSkKKyAgICAgICAgcmV0dXJuIHY4VW5kZWZp
bmVkKCk7CisKKyAgICBIVE1MT3B0aW9uc0NvbGxlY3Rpb24qIGltcCA9IFY4SFRNTE9wdGlvbnND
b2xsZWN0aW9uOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKKyAgICByZXR1cm4gZ2V0TmFtZWRJ
dGVtcyhpbXAsIHRvV2ViQ29yZUF0b21pY1N0cmluZyhuYW1lKSwgaW5mby5Ib2xkZXIoKSwgaW5m
by5HZXRJc29sYXRlKCkpOworfQorCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhIVE1MT3B0aW9u
c0NvbGxlY3Rpb246Om5hbWVkSXRlbUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3Mp
Cit7CisgICAgSU5DX1NUQVRTKCJET00uSFRNTENvbGxlY3Rpb24ubmFtZWRJdGVtKCkiKTsKKyAg
ICBIVE1MT3B0aW9uc0NvbGxlY3Rpb24qIGltcCA9IFY4SFRNTE9wdGlvbnNDb2xsZWN0aW9uOjp0
b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKKyAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gcmVzdWx0
ID0gZ2V0TmFtZWRJdGVtcyhpbXAsIHRvV2ViQ29yZVN0cmluZyhhcmdzWzBdKSwgYXJncy5Ib2xk
ZXIoKSwgYXJncy5HZXRJc29sYXRlKCkpOworCisgICAgaWYgKHJlc3VsdC5Jc0VtcHR5KCkpCisg
ICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKGFyZ3MuR2V0SXNvbGF0ZSgpKTsKKworICAgIHJl
dHVybiByZXN1bHQ7Cit9CisKIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEhUTUxPcHRpb25zQ29s
bGVjdGlvbjo6cmVtb3ZlQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAg
ICBJTkNfU1RBVFMoIkRPTS5IVE1MT3B0aW9uc0NvbGxlY3Rpb24ucmVtb3ZlKCkiKTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvZG9tL0RvY3VtZW50LmNwcAkocmV2aXNpb24gMTM1MDM4KQorKysgU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDM5OCwxMSArNDM5OCw2IEBA
IFBhc3NSZWZQdHI8SFRNTENvbGxlY3Rpb24+IERvY3VtZW50OjpwbHUKICAgICByZXR1cm4gY2Fj
aGVkQ29sbGVjdGlvbihEb2NFbWJlZHMpOwogfQogCi1QYXNzUmVmUHRyPEhUTUxDb2xsZWN0aW9u
PiBEb2N1bWVudDo6b2JqZWN0cygpCi17Ci0gICAgcmV0dXJuIGNhY2hlZENvbGxlY3Rpb24oRG9j
T2JqZWN0cyk7Ci19Ci0KIFBhc3NSZWZQdHI8SFRNTENvbGxlY3Rpb24+IERvY3VtZW50OjpzY3Jp
cHRzKCkKIHsKICAgICByZXR1cm4gY2FjaGVkQ29sbGVjdGlvbihEb2NTY3JpcHRzKTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudC5oCShyZXZpc2lvbiAxMzUwMzgpCisrKyBTb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDM5LDcgKzQzOSw2IEBAIHB1YmxpYzoK
ICAgICBQYXNzUmVmUHRyPEhUTUxDb2xsZWN0aW9uPiBsaW5rcygpOwogICAgIFBhc3NSZWZQdHI8
SFRNTENvbGxlY3Rpb24+IGZvcm1zKCk7CiAgICAgUGFzc1JlZlB0cjxIVE1MQ29sbGVjdGlvbj4g
YW5jaG9ycygpOwotICAgIFBhc3NSZWZQdHI8SFRNTENvbGxlY3Rpb24+IG9iamVjdHMoKTsKICAg
ICBQYXNzUmVmUHRyPEhUTUxDb2xsZWN0aW9uPiBzY3JpcHRzKCk7CiAgICAgUGFzc1JlZlB0cjxI
VE1MQ29sbGVjdGlvbj4gYWxsKCk7CiAgICAgdm9pZCByZW1vdmVDYWNoZWRIVE1MQ29sbGVjdGlv
bihIVE1MQ29sbGVjdGlvbiosIENvbGxlY3Rpb25UeXBlKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2RvbS9FbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVu
dC5jcHAJKHJldmlzaW9uIDEzNTAzOCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNDYsNyArNDYsNyBAQAogI2luY2x1ZGUgIkhUTUxDb2xsZWN0
aW9uLmgiCiAjaW5jbHVkZSAiSFRNTERvY3VtZW50LmgiCiAjaW5jbHVkZSAiSFRNTEVsZW1lbnQu
aCIKLSNpbmNsdWRlICJIVE1MRm9ybUNvbGxlY3Rpb24uaCIKKyNpbmNsdWRlICJIVE1MRm9ybUNv
bnRyb2xzQ29sbGVjdGlvbi5oIgogI2luY2x1ZGUgIkhUTUxGcmFtZU93bmVyRWxlbWVudC5oIgog
I2luY2x1ZGUgIkhUTUxMYWJlbEVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKQEAg
LTIzMzcsNyArMjMzNyw3IEBAIFBhc3NSZWZQdHI8SFRNTENvbGxlY3Rpb24+IEVsZW1lbnRSYXJl
RGEKICAgICAgICAgY29sbGVjdGlvbiA9IEhUTUxPcHRpb25zQ29sbGVjdGlvbjo6Y3JlYXRlKGVs
ZW1lbnQpOwogICAgIH0gZWxzZSBpZiAodHlwZSA9PSBGb3JtQ29udHJvbHMpIHsKICAgICAgICAg
QVNTRVJUKGVsZW1lbnQtPmhhc1RhZ05hbWUoZm9ybVRhZykgfHwgZWxlbWVudC0+aGFzVGFnTmFt
ZShmaWVsZHNldFRhZykpOwotICAgICAgICBjb2xsZWN0aW9uID0gSFRNTEZvcm1Db2xsZWN0aW9u
OjpjcmVhdGUoZWxlbWVudCk7CisgICAgICAgIGNvbGxlY3Rpb24gPSBIVE1MRm9ybUNvbnRyb2xz
Q29sbGVjdGlvbjo6Y3JlYXRlKGVsZW1lbnQpOwogI2lmIEVOQUJMRShNSUNST0RBVEEpCiAgICAg
fSBlbHNlIGlmICh0eXBlID09IEl0ZW1Qcm9wZXJ0aWVzKSB7CiAgICAgICAgIGNvbGxlY3Rpb24g
PSBIVE1MUHJvcGVydGllc0NvbGxlY3Rpb246OmNyZWF0ZShlbGVtZW50KTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2h0bWwvQ29sbGVjdGlvblR5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9odG1sL0NvbGxlY3Rpb25UeXBlLmgJKHJldmlzaW9uIDEzNTAzOCkKKysrIFNvdXJjZS9X
ZWJDb3JlL2h0bWwvQ29sbGVjdGlvblR5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzEsNyArMzEs
NiBAQCBlbnVtIENvbGxlY3Rpb25UeXBlIHsKICAgICBEb2NJbWFnZXMsICAgIC8vIGFsbCA8aW1n
PiBlbGVtZW50cyBpbiB0aGUgZG9jdW1lbnQKICAgICBEb2NBcHBsZXRzLCAgIC8vIGFsbCA8b2Jq
ZWN0PiBhbmQgPGFwcGxldD4gZWxlbWVudHMKICAgICBEb2NFbWJlZHMsICAgIC8vIGFsbCA8ZW1i
ZWQ+IGVsZW1lbnRzCi0gICAgRG9jT2JqZWN0cywgICAvLyBhbGwgPG9iamVjdD4gZWxlbWVudHMK
ICAgICBEb2NGb3JtcywgICAgIC8vIGFsbCA8Zm9ybT4gZWxlbWVudHMKICAgICBEb2NMaW5rcywg
ICAgIC8vIGFsbCA8YT4gX2FuZF8gPGFyZWE+IGVsZW1lbnRzIHdpdGggYSB2YWx1ZSBmb3IgaHJl
ZgogICAgIERvY0FuY2hvcnMsICAgLy8gYWxsIDxhPiBlbGVtZW50cyB3aXRoIGEgdmFsdWUgZm9y
IG5hbWUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENvbGxlY3Rpb24uY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENvbGxlY3Rpb24uY3BwCShyZXZpc2lv
biAxMzUwMzgpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDb2xsZWN0aW9uLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNTEsNyArNTEsNiBAQCBzdGF0aWMgYm9vbCBzaG91bGRPbmx5SW5jbHVk
ZURpcmVjdENoaWxkCiAgICAgY2FzZSBEb2NGb3JtczoKICAgICBjYXNlIERvY0ltYWdlczoKICAg
ICBjYXNlIERvY0xpbmtzOgotICAgIGNhc2UgRG9jT2JqZWN0czoKICAgICBjYXNlIERvY1Njcmlw
dHM6CiAgICAgY2FzZSBEb2N1bWVudE5hbWVkSXRlbXM6CiAgICAgY2FzZSBNYXBBcmVhczoKQEAg
LTgzLDcgKzgyLDYgQEAgc3RhdGljIE5vZGVMaXN0Um9vdFR5cGUgcm9vdFR5cGVGcm9tQ29sbAog
ICAgIGNhc2UgRG9jSW1hZ2VzOgogICAgIGNhc2UgRG9jQXBwbGV0czoKICAgICBjYXNlIERvY0Vt
YmVkczoKLSAgICBjYXNlIERvY09iamVjdHM6CiAgICAgY2FzZSBEb2NGb3JtczoKICAgICBjYXNl
IERvY0xpbmtzOgogICAgIGNhc2UgRG9jQW5jaG9yczoKQEAgLTExNyw3ICsxMTUsNiBAQCBzdGF0
aWMgTm9kZUxpc3RJbnZhbGlkYXRpb25UeXBlIGludmFsaWRhCiAgICAgc3dpdGNoICh0eXBlKSB7
CiAgICAgY2FzZSBEb2NJbWFnZXM6CiAgICAgY2FzZSBEb2NFbWJlZHM6Ci0gICAgY2FzZSBEb2NP
YmplY3RzOgogICAgIGNhc2UgRG9jRm9ybXM6CiAgICAgY2FzZSBEb2NBbmNob3JzOiAvLyBEZXBl
bmRzIG9uIG5hbWUgYXR0cmlidXRlLgogICAgIGNhc2UgRG9jU2NyaXB0czoKQEAgLTIxNCw4ICsy
MTEsNiBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaXNBY2NlcHRhYmxlRWxlbWVudChDCiAgICAgICAg
IHJldHVybiBlbGVtZW50LT5oYXNMb2NhbE5hbWUoYXBwbGV0VGFnKSB8fCAoZWxlbWVudC0+aGFz
TG9jYWxOYW1lKG9iamVjdFRhZykgJiYgc3RhdGljX2Nhc3Q8SFRNTE9iamVjdEVsZW1lbnQqPihl
bGVtZW50KS0+Y29udGFpbnNKYXZhQXBwbGV0KCkpOwogICAgIGNhc2UgRG9jRW1iZWRzOgogICAg
ICAgICByZXR1cm4gZWxlbWVudC0+aGFzTG9jYWxOYW1lKGVtYmVkVGFnKTsKLSAgICBjYXNlIERv
Y09iamVjdHM6Ci0gICAgICAgIHJldHVybiBlbGVtZW50LT5oYXNMb2NhbE5hbWUob2JqZWN0VGFn
KTsKICAgICBjYXNlIERvY0xpbmtzOgogICAgICAgICByZXR1cm4gKGVsZW1lbnQtPmhhc0xvY2Fs
TmFtZShhVGFnKSB8fCBlbGVtZW50LT5oYXNMb2NhbE5hbWUoYXJlYVRhZykpICYmIGVsZW1lbnQt
PmZhc3RIYXNBdHRyaWJ1dGUoaHJlZkF0dHIpOwogICAgIGNhc2UgRG9jQW5jaG9yczoKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENvbGxlY3Rpb24uaWRsCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTENvbGxlY3Rpb24uaWRsCShyZXZpc2lvbiAxMzUwMzgpCisr
KyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDb2xsZWN0aW9uLmlkbAkod29ya2luZyBjb3B5KQpA
QCAtMjgsNyArMjgsNyBAQAogXSBpbnRlcmZhY2UgSFRNTENvbGxlY3Rpb24gewogICAgIHJlYWRv
bmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIGxlbmd0aDsKICAgICBOb2RlIGl0ZW0oaW4gW09w
dGlvbmFsPURlZmF1bHRJc1VuZGVmaW5lZF0gdW5zaWduZWQgbG9uZyBpbmRleCk7Ci0gICAgW0N1
c3RvbV0gTm9kZSBuYW1lZEl0ZW0oaW4gW09wdGlvbmFsPURlZmF1bHRJc1VuZGVmaW5lZF0gRE9N
U3RyaW5nIG5hbWUpOworICAgIE5vZGUgbmFtZWRJdGVtKGluIFtPcHRpb25hbD1EZWZhdWx0SXNV
bmRlZmluZWRdIERPTVN0cmluZyBuYW1lKTsKIAogI2lmIGRlZmluZWQoTEFOR1VBR0VfT0JKRUNU
SVZFX0MpICYmIExBTkdVQUdFX09CSkVDVElWRV9DCiAgICAgTm9kZUxpc3QgdGFncyhpbiBbT3B0
aW9uYWw9RGVmYXVsdElzVW5kZWZpbmVkXSBET01TdHJpbmcgbmFtZSk7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxGaWVsZFNldEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEZpZWxkU2V0RWxlbWVudC5jcHAJKHJldmlzaW9uIDEzNTAzOCkK
KysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZpZWxkU2V0RWxlbWVudC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTI1LDcgKzI1LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJI
VE1MRmllbGRTZXRFbGVtZW50LmgiCiAKLSNpbmNsdWRlICJIVE1MRm9ybUNvbGxlY3Rpb24uaCIK
KyNpbmNsdWRlICJIVE1MQ29sbGVjdGlvbi5oIgogI2luY2x1ZGUgIkhUTUxMZWdlbmRFbGVtZW50
LmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiSFRNTE9iamVjdEVsZW1lbnQu
aCIKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZpZWxkU2V0RWxlbWVudC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZpZWxkU2V0RWxlbWVudC5oCShyZXZp
c2lvbiAxMzUwMzgpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGaWVsZFNldEVsZW1lbnQu
aAkod29ya2luZyBjb3B5KQpAQCAtMzEsNyArMzEsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IGNsYXNzIEZvcm1Bc3NvY2lhdGVkRWxlbWVudDsKIGNsYXNzIEhUTUxDb2xsZWN0aW9uOwotY2xh
c3MgSFRNTEZvcm1Db2xsZWN0aW9uOwogCiBjbGFzcyBIVE1MRmllbGRTZXRFbGVtZW50IDogcHVi
bGljIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQgewogcHVibGljOgpJbmRleDogU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MRm9ybUNvbGxlY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEZvcm1Db2xsZWN0aW9uLmNwcAkocmV2aXNpb24gMTM1MDM4KQorKysgU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbGxlY3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDE2MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAxOTk5IExhcnMgS25vbGwgKGtu
b2xsQGtkZS5vcmcpCi0gKiAgICAgICAgICAgKEMpIDE5OTkgQW50dGkgS29pdmlzdG8gKGtvaXZp
c3RvQGtkZS5vcmcpCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYsIDIw
MDcsIDIwMTAsIDIwMTEsIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp
dCBhbmQvb3IKLSAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3Ig
KGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiBUaGlzIGxpYnJhcnkg
aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1
dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5
IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UuICBTZWUgdGhlIEdOVQotICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt
b3JlIGRldGFpbHMuCi0gKgotICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICogYWxvbmcgd2l0aCB0aGlz
IGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAq
IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwg
RmlmdGggRmxvb3IsCi0gKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqCi0gKi8KLQot
I2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkhUTUxGb3JtQ29sbGVjdGlvbi5oIgotCi0j
aW5jbHVkZSAiSFRNTEZpZWxkU2V0RWxlbWVudC5oIgotI2luY2x1ZGUgIkhUTUxGb3JtQ29udHJv
bEVsZW1lbnQuaCIKLSNpbmNsdWRlICJIVE1MRm9ybUVsZW1lbnQuaCIKLSNpbmNsdWRlICJIVE1M
SW1hZ2VFbGVtZW50LmgiCi0jaW5jbHVkZSAiSFRNTE5hbWVzLmgiCi0KLW5hbWVzcGFjZSBXZWJD
b3JlIHsKLQotdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKLQotLy8gU2luY2UgdGhlIGNvbGxl
Y3Rpb25zIGFyZSB0byBiZSAibGl2ZSIsIHdlIGhhdmUgdG8gZG8gdGhlCi0vLyBjYWxjdWxhdGlv
biBldmVyeSB0aW1lIGlmIGFueXRoaW5nIGhhcyBjaGFuZ2VkLgotCi1IVE1MRm9ybUNvbGxlY3Rp
b246OkhUTUxGb3JtQ29sbGVjdGlvbihFbGVtZW50KiBiYXNlKQotICAgIDogSFRNTENvbGxlY3Rp
b24oYmFzZSwgRm9ybUNvbnRyb2xzLCBPdmVycmlkZXNJdGVtQWZ0ZXIpCi17Ci0gICAgQVNTRVJU
KGJhc2UtPmhhc1RhZ05hbWUoZm9ybVRhZykgfHwgYmFzZS0+aGFzVGFnTmFtZShmaWVsZHNldFRh
ZykpOwotfQotCi1QYXNzUmVmUHRyPEhUTUxGb3JtQ29sbGVjdGlvbj4gSFRNTEZvcm1Db2xsZWN0
aW9uOjpjcmVhdGUoRWxlbWVudCogYmFzZSkKLXsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IEhU
TUxGb3JtQ29sbGVjdGlvbihiYXNlKSk7Ci19Ci0KLUhUTUxGb3JtQ29sbGVjdGlvbjo6fkhUTUxG
b3JtQ29sbGVjdGlvbigpCi17Ci19Ci0KLWNvbnN0IFZlY3RvcjxGb3JtQXNzb2NpYXRlZEVsZW1l
bnQqPiYgSFRNTEZvcm1Db2xsZWN0aW9uOjpmb3JtQ29udHJvbEVsZW1lbnRzKCkgY29uc3QKLXsK
LSAgICBBU1NFUlQoYmFzZSgpKTsKLSAgICBBU1NFUlQoYmFzZSgpLT5oYXNUYWdOYW1lKGZvcm1U
YWcpIHx8IGJhc2UoKS0+aGFzVGFnTmFtZShmaWVsZHNldFRhZykpOwotICAgIGlmIChiYXNlKCkt
Pmhhc1RhZ05hbWUoZm9ybVRhZykpCi0gICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxIVE1MRm9y
bUVsZW1lbnQqPihiYXNlKCkpLT5hc3NvY2lhdGVkRWxlbWVudHMoKTsKLSAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8SFRNTEZpZWxkU2V0RWxlbWVudCo+KGJhc2UoKSktPmFzc29jaWF0ZWRFbGVtZW50
cygpOwotfQotCi1jb25zdCBWZWN0b3I8SFRNTEltYWdlRWxlbWVudCo+JiBIVE1MRm9ybUNvbGxl
Y3Rpb246OmZvcm1JbWFnZUVsZW1lbnRzKCkgY29uc3QKLXsKLSAgICBBU1NFUlQoYmFzZSgpKTsK
LSAgICBBU1NFUlQoYmFzZSgpLT5oYXNUYWdOYW1lKGZvcm1UYWcpKTsKLSAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8SFRNTEZvcm1FbGVtZW50Kj4oYmFzZSgpKS0+aW1hZ2VFbGVtZW50cygpOwotfQot
Ci1FbGVtZW50KiBIVE1MRm9ybUNvbGxlY3Rpb246OnZpcnR1YWxJdGVtQWZ0ZXIodW5zaWduZWQm
IG9mZnNldCwgRWxlbWVudCogcHJldmlvdXNJdGVtKSBjb25zdAotewotICAgIGNvbnN0IFZlY3Rv
cjxGb3JtQXNzb2NpYXRlZEVsZW1lbnQqPiYgZWxlbWVudHNBcnJheSA9IGZvcm1Db250cm9sRWxl
bWVudHMoKTsKLSAgICBpZiAocHJldmlvdXNJdGVtKQotICAgICAgICBvZmZzZXQrKzsKLSAgICB3
aGlsZSAob2Zmc2V0IDwgZWxlbWVudHNBcnJheS5zaXplKCkpIHsKLSAgICAgICAgRm9ybUFzc29j
aWF0ZWRFbGVtZW50KiBlbGVtZW50ID0gZWxlbWVudHNBcnJheVtvZmZzZXRdOwotICAgICAgICBp
ZiAoZWxlbWVudC0+aXNFbnVtZXJhdGFibGUoKSkKLSAgICAgICAgICAgIHJldHVybiB0b0hUTUxF
bGVtZW50KGVsZW1lbnQpOwotICAgICAgICBvZmZzZXQrKzsKLSAgICB9Ci0gICAgcmV0dXJuIDA7
Ci19Ci0KLXN0YXRpYyBIVE1MRWxlbWVudCogZmlyc3ROYW1lZEl0ZW0oY29uc3QgVmVjdG9yPEZv
cm1Bc3NvY2lhdGVkRWxlbWVudCo+JiBlbGVtZW50c0FycmF5LAotICAgIGNvbnN0IFZlY3RvcjxI
VE1MSW1hZ2VFbGVtZW50Kj4qIGltYWdlRWxlbWVudHNBcnJheSwgY29uc3QgUXVhbGlmaWVkTmFt
ZSYgYXR0ck5hbWUsIGNvbnN0IFN0cmluZyYgbmFtZSkKLXsKLSAgICBBU1NFUlQoYXR0ck5hbWUg
PT0gaWRBdHRyIHx8IGF0dHJOYW1lID09IG5hbWVBdHRyKTsKLQotICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBlbGVtZW50c0FycmF5LnNpemUoKTsgKytpKSB7Ci0gICAgICAgIEhUTUxFbGVt
ZW50KiBlbGVtZW50ID0gdG9IVE1MRWxlbWVudChlbGVtZW50c0FycmF5W2ldKTsKLSAgICAgICAg
aWYgKGVsZW1lbnRzQXJyYXlbaV0tPmlzRW51bWVyYXRhYmxlKCkgJiYgZWxlbWVudC0+ZmFzdEdl
dEF0dHJpYnV0ZShhdHRyTmFtZSkgPT0gbmFtZSkKLSAgICAgICAgICAgIHJldHVybiBlbGVtZW50
OwotICAgIH0KLQotICAgIGlmICghaW1hZ2VFbGVtZW50c0FycmF5KQotICAgICAgICByZXR1cm4g
MDsKLQotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBpbWFnZUVsZW1lbnRzQXJyYXktPnNp
emUoKTsgKytpKSB7Ci0gICAgICAgIEhUTUxJbWFnZUVsZW1lbnQqIGVsZW1lbnQgPSAoKmltYWdl
RWxlbWVudHNBcnJheSlbaV07Ci0gICAgICAgIGlmIChlbGVtZW50LT5mYXN0R2V0QXR0cmlidXRl
KGF0dHJOYW1lKSA9PSBuYW1lKQotICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnQ7Ci0gICAgfQot
Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLU5vZGUqIEhUTUxGb3JtQ29sbGVjdGlvbjo6bmFtZWRJdGVt
KGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSkgY29uc3QKLXsKLSAgICAvLyBodHRwOi8vbXNkbi5t
aWNyb3NvZnQuY29tL3dvcmtzaG9wL2F1dGhvci9kaHRtbC9yZWZlcmVuY2UvbWV0aG9kcy9uYW1l
ZGl0ZW0uYXNwCi0gICAgLy8gVGhpcyBtZXRob2QgZmlyc3Qgc2VhcmNoZXMgZm9yIGFuIG9iamVj
dCB3aXRoIGEgbWF0Y2hpbmcgaWQKLSAgICAvLyBhdHRyaWJ1dGUuIElmIGEgbWF0Y2ggaXMgbm90
IGZvdW5kLCB0aGUgbWV0aG9kIHRoZW4gc2VhcmNoZXMgZm9yIGFuCi0gICAgLy8gb2JqZWN0IHdp
dGggYSBtYXRjaGluZyBuYW1lIGF0dHJpYnV0ZSwgYnV0IG9ubHkgb24gdGhvc2UgZWxlbWVudHMK
LSAgICAvLyB0aGF0IGFyZSBhbGxvd2VkIGEgbmFtZSBhdHRyaWJ1dGUuCi0gICAgY29uc3QgVmVj
dG9yPEhUTUxJbWFnZUVsZW1lbnQqPiogaW1hZ2VzRWxlbWVudHMgPSBiYXNlKCktPmhhc1RhZ05h
bWUoZmllbGRzZXRUYWcpID8gMCA6ICZmb3JtSW1hZ2VFbGVtZW50cygpOwotICAgIGlmIChIVE1M
RWxlbWVudCogaXRlbSA9IGZpcnN0TmFtZWRJdGVtKGZvcm1Db250cm9sRWxlbWVudHMoKSwgaW1h
Z2VzRWxlbWVudHMsIGlkQXR0ciwgbmFtZSkpCi0gICAgICAgIHJldHVybiBpdGVtOwotCi0gICAg
cmV0dXJuIGZpcnN0TmFtZWRJdGVtKGZvcm1Db250cm9sRWxlbWVudHMoKSwgaW1hZ2VzRWxlbWVu
dHMsIG5hbWVBdHRyLCBuYW1lKTsKLX0KLQotdm9pZCBIVE1MRm9ybUNvbGxlY3Rpb246OnVwZGF0
ZU5hbWVDYWNoZSgpIGNvbnN0Ci17Ci0gICAgaWYgKGhhc05hbWVDYWNoZSgpKQotICAgICAgICBy
ZXR1cm47Ci0KLSAgICBIYXNoU2V0PEF0b21pY1N0cmluZ0ltcGwqPiBmb3VuZElucHV0RWxlbWVu
dHM7Ci0KLSAgICBjb25zdCBWZWN0b3I8Rm9ybUFzc29jaWF0ZWRFbGVtZW50Kj4mIGVsZW1lbnRz
QXJyYXkgPSBmb3JtQ29udHJvbEVsZW1lbnRzKCk7Ci0KLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgZWxlbWVudHNBcnJheS5zaXplKCk7ICsraSkgewotICAgICAgICBGb3JtQXNzb2NpYXRl
ZEVsZW1lbnQqIGFzc29jaWF0ZWRFbGVtZW50ID0gZWxlbWVudHNBcnJheVtpXTsKLSAgICAgICAg
aWYgKGFzc29jaWF0ZWRFbGVtZW50LT5pc0VudW1lcmF0YWJsZSgpKSB7Ci0gICAgICAgICAgICBI
VE1MRWxlbWVudCogZWxlbWVudCA9IHRvSFRNTEVsZW1lbnQoYXNzb2NpYXRlZEVsZW1lbnQpOwot
ICAgICAgICAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBpZEF0dHJWYWwgPSBlbGVtZW50LT5nZXRJ
ZEF0dHJpYnV0ZSgpOwotICAgICAgICAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lQXR0clZh
bCA9IGVsZW1lbnQtPmdldE5hbWVBdHRyaWJ1dGUoKTsKLSAgICAgICAgICAgIGlmICghaWRBdHRy
VmFsLmlzRW1wdHkoKSkgewotICAgICAgICAgICAgICAgIGFwcGVuZElkQ2FjaGUoaWRBdHRyVmFs
LCBlbGVtZW50KTsKLSAgICAgICAgICAgICAgICBmb3VuZElucHV0RWxlbWVudHMuYWRkKGlkQXR0
clZhbC5pbXBsKCkpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKCFuYW1lQXR0clZh
bC5pc0VtcHR5KCkgJiYgaWRBdHRyVmFsICE9IG5hbWVBdHRyVmFsKSB7Ci0gICAgICAgICAgICAg
ICAgYXBwZW5kTmFtZUNhY2hlKG5hbWVBdHRyVmFsLCBlbGVtZW50KTsKLSAgICAgICAgICAgICAg
ICBmb3VuZElucHV0RWxlbWVudHMuYWRkKG5hbWVBdHRyVmFsLmltcGwoKSk7Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBpZiAoYmFzZSgpLT5oYXNUYWdOYW1lKGZvcm1U
YWcpKSB7Ci0gICAgICAgIGNvbnN0IFZlY3RvcjxIVE1MSW1hZ2VFbGVtZW50Kj4mIGltYWdlRWxl
bWVudHNBcnJheSA9IGZvcm1JbWFnZUVsZW1lbnRzKCk7Ci0gICAgICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBpbWFnZUVsZW1lbnRzQXJyYXkuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgICAg
IEhUTUxJbWFnZUVsZW1lbnQqIGVsZW1lbnQgPSBpbWFnZUVsZW1lbnRzQXJyYXlbaV07Ci0gICAg
ICAgICAgICBjb25zdCBBdG9taWNTdHJpbmcmIGlkQXR0clZhbCA9IGVsZW1lbnQtPmdldElkQXR0
cmlidXRlKCk7Ci0gICAgICAgICAgICBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWVBdHRyVmFsID0g
ZWxlbWVudC0+Z2V0TmFtZUF0dHJpYnV0ZSgpOwotICAgICAgICAgICAgaWYgKCFpZEF0dHJWYWwu
aXNFbXB0eSgpICYmICFmb3VuZElucHV0RWxlbWVudHMuY29udGFpbnMoaWRBdHRyVmFsLmltcGwo
KSkpCi0gICAgICAgICAgICAgICAgYXBwZW5kSWRDYWNoZShpZEF0dHJWYWwsIGVsZW1lbnQpOwot
ICAgICAgICAgICAgaWYgKCFuYW1lQXR0clZhbC5pc0VtcHR5KCkgJiYgaWRBdHRyVmFsICE9IG5h
bWVBdHRyVmFsICYmICFmb3VuZElucHV0RWxlbWVudHMuY29udGFpbnMobmFtZUF0dHJWYWwuaW1w
bCgpKSkKLSAgICAgICAgICAgICAgICBhcHBlbmROYW1lQ2FjaGUobmFtZUF0dHJWYWwsIGVsZW1l
bnQpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgc2V0SGFzTmFtZUNhY2hlKCk7Ci19Ci0KLX0K
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db2xsZWN0aW9uLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbGxlY3Rpb24uaAkocmV2aXNpb24g
MTM1MDM4KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbGxlY3Rpb24uaAkod29y
a2luZyBjb3B5KQpAQCAtMSw1NyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAxOTk5IExh
cnMgS25vbGwgKGtub2xsQGtkZS5vcmcpCi0gKiAgICAgICAgICAgKEMpIDE5OTkgQW50dGkgS29p
dmlzdG8gKGtvaXZpc3RvQGtkZS5vcmcpCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDQsIDIw
MDUsIDIwMDYsIDIwMDcsIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp
dCBhbmQvb3IKLSAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3Ig
KGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiBUaGlzIGxpYnJhcnkg
aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1
dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5
IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UuICBTZWUgdGhlIEdOVQotICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt
b3JlIGRldGFpbHMuCi0gKgotICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICogYWxvbmcgd2l0aCB0aGlz
IGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAq
IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwg
RmlmdGggRmxvb3IsCi0gKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqCi0gKi8KLQot
I2lmbmRlZiBIVE1MRm9ybUNvbGxlY3Rpb25faAotI2RlZmluZSBIVE1MRm9ybUNvbGxlY3Rpb25f
aAotCi0jaW5jbHVkZSAiSFRNTENvbGxlY3Rpb24uaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewot
Ci1jbGFzcyBGb3JtQXNzb2NpYXRlZEVsZW1lbnQ7Ci1jbGFzcyBIVE1MRWxlbWVudDsKLWNsYXNz
IEhUTUxJbWFnZUVsZW1lbnQ7Ci1jbGFzcyBRdWFsaWZpZWROYW1lOwotLy8gVGhpcyBjbGFzcyBp
cyBqdXN0IGEgYmlnIGhhY2sgdG8gZmluZCBmb3JtIGVsZW1lbnRzIGV2ZW4gaW4gbWFsZm9ybWVk
IEhUTUwgZWxlbWVudHMuCi0vLyBUaGUgZmFtb3VzIDx0YWJsZT48dHI+PGZvcm0+PHRkPiBwcm9i
bGVtLgotCi1jbGFzcyBIVE1MRm9ybUNvbGxlY3Rpb24gOiBwdWJsaWMgSFRNTENvbGxlY3Rpb24g
ewotcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEhUTUxGb3JtQ29sbGVjdGlvbj4gY3Jl
YXRlKEVsZW1lbnQqKTsKLQotICAgIHZpcnR1YWwgfkhUTUxGb3JtQ29sbGVjdGlvbigpOwotCi0g
ICAgdmlydHVhbCBOb2RlKiBuYW1lZEl0ZW0oY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKSBjb25z
dDsKLQotcHJpdmF0ZToKLSAgICBIVE1MRm9ybUNvbGxlY3Rpb24oRWxlbWVudCopOwotCi0gICAg
dmlydHVhbCB2b2lkIHVwZGF0ZU5hbWVDYWNoZSgpIGNvbnN0OwotCi0gICAgY29uc3QgVmVjdG9y
PEZvcm1Bc3NvY2lhdGVkRWxlbWVudCo+JiBmb3JtQ29udHJvbEVsZW1lbnRzKCkgY29uc3Q7Ci0g
ICAgY29uc3QgVmVjdG9yPEhUTUxJbWFnZUVsZW1lbnQqPiYgZm9ybUltYWdlRWxlbWVudHMoKSBj
b25zdDsKLSAgICB2aXJ0dWFsIEVsZW1lbnQqIHZpcnR1YWxJdGVtQWZ0ZXIodW5zaWduZWQmIG9m
ZnNldEluQXJyYXksIEVsZW1lbnQqKSBjb25zdCBPVkVSUklERTsKLX07Ci0KLX0gLy9uYW1lc3Bh
Y2UKLQotI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbHND
b2xsZWN0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3Jt
Q29udHJvbHNDb2xsZWN0aW9uLmNwcAkocmV2aXNpb24gMTMzNTUxKQkoZnJvbSBTb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxGb3JtQ29sbGVjdGlvbi5jcHA6MTMzNTUxKQorKysgU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTAsMCArMSwxNjMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDE5OTkgTGFycyBLbm9sbCAoa25v
bGxAa2RlLm9yZykKKyAqICAgICAgICAgICAoQykgMTk5OSBBbnR0aSBLb2l2aXN0byAoa29pdmlz
dG9Aa2RlLm9yZykKKyAqIENvcHlyaWdodCAoQykgMjAwMywgMjAwNCwgMjAwNSwgMjAwNiwgMjAw
NywgMjAxMCwgMjAxMSwgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0
IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAo
YXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBp
cyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0
IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkg
b2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1v
cmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMg
bGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICog
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBG
aWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICoKKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSFRNTEZvcm1Db2xsZWN0aW9uLmgiCisKKyNp
bmNsdWRlICJIVE1MRmllbGRTZXRFbGVtZW50LmgiCisjaW5jbHVkZSAiSFRNTEZvcm1Db250cm9s
RWxlbWVudC5oIgorI2luY2x1ZGUgIkhUTUxGb3JtRWxlbWVudC5oIgorI2luY2x1ZGUgIkhUTUxJ
bWFnZUVsZW1lbnQuaCIKKyNpbmNsdWRlICJIVE1MTmFtZXMuaCIKKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCit1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOworCisvLyBTaW5jZSB0aGUgY29sbGVj
dGlvbnMgYXJlIHRvIGJlICJsaXZlIiwgd2UgaGF2ZSB0byBkbyB0aGUKKy8vIGNhbGN1bGF0aW9u
IGV2ZXJ5IHRpbWUgaWYgYW55dGhpbmcgaGFzIGNoYW5nZWQuCisKK0hUTUxGb3JtQ29sbGVjdGlv
bjo6SFRNTEZvcm1Db2xsZWN0aW9uKEVsZW1lbnQqIGJhc2UpCisgICAgOiBIVE1MQ29sbGVjdGlv
bihiYXNlLCBGb3JtQ29udHJvbHMsIE92ZXJyaWRlc0l0ZW1BZnRlcikKK3sKKyAgICBBU1NFUlQo
YmFzZS0+aGFzVGFnTmFtZShmb3JtVGFnKSB8fCBiYXNlLT5oYXNUYWdOYW1lKGZpZWxkc2V0VGFn
KSk7Cit9CisKK1Bhc3NSZWZQdHI8SFRNTEZvcm1Db2xsZWN0aW9uPiBIVE1MRm9ybUNvbGxlY3Rp
b246OmNyZWF0ZShFbGVtZW50KiBiYXNlKQoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcgSFRN
TEZvcm1Db2xsZWN0aW9uKGJhc2UpKTsKK30KKworSFRNTEZvcm1Db2xsZWN0aW9uOjp+SFRNTEZv
cm1Db2xsZWN0aW9uKCkKK3sKK30KKworY29uc3QgVmVjdG9yPEZvcm1Bc3NvY2lhdGVkRWxlbWVu
dCo+JiBIVE1MRm9ybUNvbGxlY3Rpb246OmZvcm1Db250cm9sRWxlbWVudHMoKSBjb25zdAorewor
ICAgIEFTU0VSVChiYXNlKCkpOworICAgIEFTU0VSVChiYXNlKCktPmhhc1RhZ05hbWUoZm9ybVRh
ZykgfHwgYmFzZSgpLT5oYXNUYWdOYW1lKGZpZWxkc2V0VGFnKSk7CisgICAgaWYgKGJhc2UoKS0+
aGFzVGFnTmFtZShmb3JtVGFnKSkKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEhUTUxGb3Jt
RWxlbWVudCo+KGJhc2UoKSktPmFzc29jaWF0ZWRFbGVtZW50cygpOworICAgIHJldHVybiBzdGF0
aWNfY2FzdDxIVE1MRmllbGRTZXRFbGVtZW50Kj4oYmFzZSgpKS0+YXNzb2NpYXRlZEVsZW1lbnRz
KCk7Cit9CisKK2NvbnN0IFZlY3RvcjxIVE1MSW1hZ2VFbGVtZW50Kj4mIEhUTUxGb3JtQ29sbGVj
dGlvbjo6Zm9ybUltYWdlRWxlbWVudHMoKSBjb25zdAoreworICAgIEFTU0VSVChiYXNlKCkpOwor
ICAgIEFTU0VSVChiYXNlKCktPmhhc1RhZ05hbWUoZm9ybVRhZykpOworICAgIHJldHVybiBzdGF0
aWNfY2FzdDxIVE1MRm9ybUVsZW1lbnQqPihiYXNlKCkpLT5pbWFnZUVsZW1lbnRzKCk7Cit9CisK
K0VsZW1lbnQqIEhUTUxGb3JtQ29sbGVjdGlvbjo6dmlydHVhbEl0ZW1BZnRlcih1bnNpZ25lZCYg
b2Zmc2V0LCBFbGVtZW50KiBwcmV2aW91c0l0ZW0pIGNvbnN0Cit7CisgICAgY29uc3QgVmVjdG9y
PEZvcm1Bc3NvY2lhdGVkRWxlbWVudCo+JiBlbGVtZW50c0FycmF5ID0gZm9ybUNvbnRyb2xFbGVt
ZW50cygpOworICAgIGlmIChwcmV2aW91c0l0ZW0pCisgICAgICAgIG9mZnNldCsrOworICAgIHdo
aWxlIChvZmZzZXQgPCBlbGVtZW50c0FycmF5LnNpemUoKSkgeworICAgICAgICBGb3JtQXNzb2Np
YXRlZEVsZW1lbnQqIGVsZW1lbnQgPSBlbGVtZW50c0FycmF5W29mZnNldF07CisgICAgICAgIGlm
IChlbGVtZW50LT5pc0VudW1lcmF0YWJsZSgpKQorICAgICAgICAgICAgcmV0dXJuIHRvSFRNTEVs
ZW1lbnQoZWxlbWVudCk7CisgICAgICAgIG9mZnNldCsrOworICAgIH0KKyAgICByZXR1cm4gMDsK
K30KKworc3RhdGljIEhUTUxFbGVtZW50KiBmaXJzdE5hbWVkSXRlbShjb25zdCBWZWN0b3I8Rm9y
bUFzc29jaWF0ZWRFbGVtZW50Kj4mIGVsZW1lbnRzQXJyYXksCisgICAgY29uc3QgVmVjdG9yPEhU
TUxJbWFnZUVsZW1lbnQqPiogaW1hZ2VFbGVtZW50c0FycmF5LCBjb25zdCBRdWFsaWZpZWROYW1l
JiBhdHRyTmFtZSwgY29uc3QgU3RyaW5nJiBuYW1lKQoreworICAgIEFTU0VSVChhdHRyTmFtZSA9
PSBpZEF0dHIgfHwgYXR0ck5hbWUgPT0gbmFtZUF0dHIpOworCisgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IGVsZW1lbnRzQXJyYXkuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgSFRNTEVsZW1l
bnQqIGVsZW1lbnQgPSB0b0hUTUxFbGVtZW50KGVsZW1lbnRzQXJyYXlbaV0pOworICAgICAgICBp
ZiAoZWxlbWVudHNBcnJheVtpXS0+aXNFbnVtZXJhdGFibGUoKSAmJiBlbGVtZW50LT5mYXN0R2V0
QXR0cmlidXRlKGF0dHJOYW1lKSA9PSBuYW1lKQorICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnQ7
CisgICAgfQorCisgICAgaWYgKCFpbWFnZUVsZW1lbnRzQXJyYXkpCisgICAgICAgIHJldHVybiAw
OworCisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGltYWdlRWxlbWVudHNBcnJheS0+c2l6
ZSgpOyArK2kpIHsKKyAgICAgICAgSFRNTEltYWdlRWxlbWVudCogZWxlbWVudCA9ICgqaW1hZ2VF
bGVtZW50c0FycmF5KVtpXTsKKyAgICAgICAgaWYgKGVsZW1lbnQtPmZhc3RHZXRBdHRyaWJ1dGUo
YXR0ck5hbWUpID09IG5hbWUpCisgICAgICAgICAgICByZXR1cm4gZWxlbWVudDsKKyAgICB9CisK
KyAgICByZXR1cm4gMDsKK30KKworTm9kZSogSFRNTEZvcm1Db2xsZWN0aW9uOjpuYW1lZEl0ZW0o
Y29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKSBjb25zdAoreworICAgIC8vIGh0dHA6Ly9tc2RuLm1p
Y3Jvc29mdC5jb20vd29ya3Nob3AvYXV0aG9yL2RodG1sL3JlZmVyZW5jZS9tZXRob2RzL25hbWVk
aXRlbS5hc3AKKyAgICAvLyBUaGlzIG1ldGhvZCBmaXJzdCBzZWFyY2hlcyBmb3IgYW4gb2JqZWN0
IHdpdGggYSBtYXRjaGluZyBpZAorICAgIC8vIGF0dHJpYnV0ZS4gSWYgYSBtYXRjaCBpcyBub3Qg
Zm91bmQsIHRoZSBtZXRob2QgdGhlbiBzZWFyY2hlcyBmb3IgYW4KKyAgICAvLyBvYmplY3Qgd2l0
aCBhIG1hdGNoaW5nIG5hbWUgYXR0cmlidXRlLCBidXQgb25seSBvbiB0aG9zZSBlbGVtZW50cwor
ICAgIC8vIHRoYXQgYXJlIGFsbG93ZWQgYSBuYW1lIGF0dHJpYnV0ZS4KKyAgICBjb25zdCBWZWN0
b3I8SFRNTEltYWdlRWxlbWVudCo+KiBpbWFnZXNFbGVtZW50cyA9IGJhc2UoKS0+aGFzVGFnTmFt
ZShmaWVsZHNldFRhZykgPyAwIDogJmZvcm1JbWFnZUVsZW1lbnRzKCk7CisgICAgaWYgKEhUTUxF
bGVtZW50KiBpdGVtID0gZmlyc3ROYW1lZEl0ZW0oZm9ybUNvbnRyb2xFbGVtZW50cygpLCBpbWFn
ZXNFbGVtZW50cywgaWRBdHRyLCBuYW1lKSkKKyAgICAgICAgcmV0dXJuIGl0ZW07CisKKyAgICBy
ZXR1cm4gZmlyc3ROYW1lZEl0ZW0oZm9ybUNvbnRyb2xFbGVtZW50cygpLCBpbWFnZXNFbGVtZW50
cywgbmFtZUF0dHIsIG5hbWUpOworfQorCit2b2lkIEhUTUxGb3JtQ29sbGVjdGlvbjo6dXBkYXRl
TmFtZUNhY2hlKCkgY29uc3QKK3sKKyAgICBpZiAoaGFzTmFtZUNhY2hlKCkpCisgICAgICAgIHJl
dHVybjsKKworICAgIEhhc2hTZXQ8QXRvbWljU3RyaW5nSW1wbCo+IGZvdW5kSW5wdXRFbGVtZW50
czsKKworICAgIGNvbnN0IFZlY3RvcjxGb3JtQXNzb2NpYXRlZEVsZW1lbnQqPiYgZWxlbWVudHNB
cnJheSA9IGZvcm1Db250cm9sRWxlbWVudHMoKTsKKworICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBlbGVtZW50c0FycmF5LnNpemUoKTsgKytpKSB7CisgICAgICAgIEZvcm1Bc3NvY2lhdGVk
RWxlbWVudCogYXNzb2NpYXRlZEVsZW1lbnQgPSBlbGVtZW50c0FycmF5W2ldOworICAgICAgICBp
ZiAoYXNzb2NpYXRlZEVsZW1lbnQtPmlzRW51bWVyYXRhYmxlKCkpIHsKKyAgICAgICAgICAgIEhU
TUxFbGVtZW50KiBlbGVtZW50ID0gdG9IVE1MRWxlbWVudChhc3NvY2lhdGVkRWxlbWVudCk7Cisg
ICAgICAgICAgICBjb25zdCBBdG9taWNTdHJpbmcmIGlkQXR0clZhbCA9IGVsZW1lbnQtPmdldElk
QXR0cmlidXRlKCk7CisgICAgICAgICAgICBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWVBdHRyVmFs
ID0gZWxlbWVudC0+Z2V0TmFtZUF0dHJpYnV0ZSgpOworICAgICAgICAgICAgaWYgKCFpZEF0dHJW
YWwuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICAgICAgYXBwZW5kSWRDYWNoZShpZEF0dHJWYWws
IGVsZW1lbnQpOworICAgICAgICAgICAgICAgIGZvdW5kSW5wdXRFbGVtZW50cy5hZGQoaWRBdHRy
VmFsLmltcGwoKSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoIW5hbWVBdHRyVmFs
LmlzRW1wdHkoKSAmJiBpZEF0dHJWYWwgIT0gbmFtZUF0dHJWYWwpIHsKKyAgICAgICAgICAgICAg
ICBhcHBlbmROYW1lQ2FjaGUobmFtZUF0dHJWYWwsIGVsZW1lbnQpOworICAgICAgICAgICAgICAg
IGZvdW5kSW5wdXRFbGVtZW50cy5hZGQobmFtZUF0dHJWYWwuaW1wbCgpKTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfQorICAgIH0KKworICAgIGlmIChiYXNlKCktPmhhc1RhZ05hbWUoZm9ybVRh
ZykpIHsKKyAgICAgICAgY29uc3QgVmVjdG9yPEhUTUxJbWFnZUVsZW1lbnQqPiYgaW1hZ2VFbGVt
ZW50c0FycmF5ID0gZm9ybUltYWdlRWxlbWVudHMoKTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IGltYWdlRWxlbWVudHNBcnJheS5zaXplKCk7ICsraSkgeworICAgICAgICAgICAg
SFRNTEltYWdlRWxlbWVudCogZWxlbWVudCA9IGltYWdlRWxlbWVudHNBcnJheVtpXTsKKyAgICAg
ICAgICAgIGNvbnN0IEF0b21pY1N0cmluZyYgaWRBdHRyVmFsID0gZWxlbWVudC0+Z2V0SWRBdHRy
aWJ1dGUoKTsKKyAgICAgICAgICAgIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZUF0dHJWYWwgPSBl
bGVtZW50LT5nZXROYW1lQXR0cmlidXRlKCk7CisgICAgICAgICAgICBpZiAoIWlkQXR0clZhbC5p
c0VtcHR5KCkgJiYgIWZvdW5kSW5wdXRFbGVtZW50cy5jb250YWlucyhpZEF0dHJWYWwuaW1wbCgp
KSkKKyAgICAgICAgICAgICAgICBhcHBlbmRJZENhY2hlKGlkQXR0clZhbCwgZWxlbWVudCk7Cisg
ICAgICAgICAgICBpZiAoIW5hbWVBdHRyVmFsLmlzRW1wdHkoKSAmJiBpZEF0dHJWYWwgIT0gbmFt
ZUF0dHJWYWwgJiYgIWZvdW5kSW5wdXRFbGVtZW50cy5jb250YWlucyhuYW1lQXR0clZhbC5pbXBs
KCkpKQorICAgICAgICAgICAgICAgIGFwcGVuZE5hbWVDYWNoZShuYW1lQXR0clZhbCwgZWxlbWVu
dCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBzZXRIYXNOYW1lQ2FjaGUoKTsKK30KKworfQpJ
bmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xzQ29sbGVj
dGlvbi5jcHAJKHJldmlzaW9uIDEzMzU1MSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZv
cm1Db250cm9sc0NvbGxlY3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMSw3ICsyMSw3IEBA
CiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkhUTUxGb3JtQ29sbGVjdGlv
bi5oIgorI2luY2x1ZGUgIkhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmgiCiAKICNpbmNsdWRl
ICJIVE1MRmllbGRTZXRFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTEZvcm1Db250cm9sRWxlbWVu
dC5oIgpAQCAtMzYsMjIgKzM2LDIyIEBAIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAvLyBT
aW5jZSB0aGUgY29sbGVjdGlvbnMgYXJlIHRvIGJlICJsaXZlIiwgd2UgaGF2ZSB0byBkbyB0aGUK
IC8vIGNhbGN1bGF0aW9uIGV2ZXJ5IHRpbWUgaWYgYW55dGhpbmcgaGFzIGNoYW5nZWQuCiAKLUhU
TUxGb3JtQ29sbGVjdGlvbjo6SFRNTEZvcm1Db2xsZWN0aW9uKEVsZW1lbnQqIGJhc2UpCitIVE1M
Rm9ybUNvbnRyb2xzQ29sbGVjdGlvbjo6SFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24oRWxlbWVu
dCogYmFzZSkKICAgICA6IEhUTUxDb2xsZWN0aW9uKGJhc2UsIEZvcm1Db250cm9scywgT3ZlcnJp
ZGVzSXRlbUFmdGVyKQogewogICAgIEFTU0VSVChiYXNlLT5oYXNUYWdOYW1lKGZvcm1UYWcpIHx8
IGJhc2UtPmhhc1RhZ05hbWUoZmllbGRzZXRUYWcpKTsKIH0KIAotUGFzc1JlZlB0cjxIVE1MRm9y
bUNvbGxlY3Rpb24+IEhUTUxGb3JtQ29sbGVjdGlvbjo6Y3JlYXRlKEVsZW1lbnQqIGJhc2UpCitQ
YXNzUmVmUHRyPEhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uPiBIVE1MRm9ybUNvbnRyb2xzQ29s
bGVjdGlvbjo6Y3JlYXRlKEVsZW1lbnQqIGJhc2UpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBIVE1MRm9ybUNvbGxlY3Rpb24oYmFzZSkpOworICAgIHJldHVybiBhZG9wdFJlZihuZXcgSFRN
TEZvcm1Db250cm9sc0NvbGxlY3Rpb24oYmFzZSkpOwogfQogCi1IVE1MRm9ybUNvbGxlY3Rpb246
On5IVE1MRm9ybUNvbGxlY3Rpb24oKQorSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb246On5IVE1M
Rm9ybUNvbnRyb2xzQ29sbGVjdGlvbigpCiB7CiB9CiAKLWNvbnN0IFZlY3RvcjxGb3JtQXNzb2Np
YXRlZEVsZW1lbnQqPiYgSFRNTEZvcm1Db2xsZWN0aW9uOjpmb3JtQ29udHJvbEVsZW1lbnRzKCkg
Y29uc3QKK2NvbnN0IFZlY3RvcjxGb3JtQXNzb2NpYXRlZEVsZW1lbnQqPiYgSFRNTEZvcm1Db250
cm9sc0NvbGxlY3Rpb246OmZvcm1Db250cm9sRWxlbWVudHMoKSBjb25zdAogewogICAgIEFTU0VS
VChiYXNlKCkpOwogICAgIEFTU0VSVChiYXNlKCktPmhhc1RhZ05hbWUoZm9ybVRhZykgfHwgYmFz
ZSgpLT5oYXNUYWdOYW1lKGZpZWxkc2V0VGFnKSk7CkBAIC02MCwxNCArNjAsMTQgQEAgY29uc3Qg
VmVjdG9yPEZvcm1Bc3NvY2lhdGVkRWxlbWVudCo+JiBIVAogICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxIVE1MRmllbGRTZXRFbGVtZW50Kj4oYmFzZSgpKS0+YXNzb2NpYXRlZEVsZW1lbnRzKCk7CiB9
CiAKLWNvbnN0IFZlY3RvcjxIVE1MSW1hZ2VFbGVtZW50Kj4mIEhUTUxGb3JtQ29sbGVjdGlvbjo6
Zm9ybUltYWdlRWxlbWVudHMoKSBjb25zdAorY29uc3QgVmVjdG9yPEhUTUxJbWFnZUVsZW1lbnQq
PiYgSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb246OmZvcm1JbWFnZUVsZW1lbnRzKCkgY29uc3QK
IHsKICAgICBBU1NFUlQoYmFzZSgpKTsKICAgICBBU1NFUlQoYmFzZSgpLT5oYXNUYWdOYW1lKGZv
cm1UYWcpKTsKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SFRNTEZvcm1FbGVtZW50Kj4oYmFzZSgp
KS0+aW1hZ2VFbGVtZW50cygpOwogfQogCi1FbGVtZW50KiBIVE1MRm9ybUNvbGxlY3Rpb246OnZp
cnR1YWxJdGVtQWZ0ZXIodW5zaWduZWQmIG9mZnNldCwgRWxlbWVudCogcHJldmlvdXNJdGVtKSBj
b25zdAorRWxlbWVudCogSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb246OnZpcnR1YWxJdGVtQWZ0
ZXIodW5zaWduZWQmIG9mZnNldCwgRWxlbWVudCogcHJldmlvdXNJdGVtKSBjb25zdAogewogICAg
IGNvbnN0IFZlY3RvcjxGb3JtQXNzb2NpYXRlZEVsZW1lbnQqPiYgZWxlbWVudHNBcnJheSA9IGZv
cm1Db250cm9sRWxlbWVudHMoKTsKICAgICBpZiAocHJldmlvdXNJdGVtKQpAQCAtMTA0LDcgKzEw
NCw3IEBAIHN0YXRpYyBIVE1MRWxlbWVudCogZmlyc3ROYW1lZEl0ZW0oY29uc3QKICAgICByZXR1
cm4gMDsKIH0KIAotTm9kZSogSFRNTEZvcm1Db2xsZWN0aW9uOjpuYW1lZEl0ZW0oY29uc3QgQXRv
bWljU3RyaW5nJiBuYW1lKSBjb25zdAorTm9kZSogSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb246
Om5hbWVkSXRlbShjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpIGNvbnN0CiB7CiAgICAgLy8gaHR0
cDovL21zZG4ubWljcm9zb2Z0LmNvbS93b3Jrc2hvcC9hdXRob3IvZGh0bWwvcmVmZXJlbmNlL21l
dGhvZHMvbmFtZWRpdGVtLmFzcAogICAgIC8vIFRoaXMgbWV0aG9kIGZpcnN0IHNlYXJjaGVzIGZv
ciBhbiBvYmplY3Qgd2l0aCBhIG1hdGNoaW5nIGlkCkBAIC0xMTgsNyArMTE4LDcgQEAgTm9kZSog
SFRNTEZvcm1Db2xsZWN0aW9uOjpuYW1lZEl0ZW0oY29ucwogICAgIHJldHVybiBmaXJzdE5hbWVk
SXRlbShmb3JtQ29udHJvbEVsZW1lbnRzKCksIGltYWdlc0VsZW1lbnRzLCBuYW1lQXR0ciwgbmFt
ZSk7CiB9CiAKLXZvaWQgSFRNTEZvcm1Db2xsZWN0aW9uOjp1cGRhdGVOYW1lQ2FjaGUoKSBjb25z
dAordm9pZCBIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbjo6dXBkYXRlTmFtZUNhY2hlKCkgY29u
c3QKIHsKICAgICBpZiAoaGFzTmFtZUNhY2hlKCkpCiAgICAgICAgIHJldHVybjsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmgJKHJl
dmlzaW9uIDEzMzU1MSkJKGZyb20gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbGxlY3Rp
b24uaDoxMzM1NTEpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbHNDb2xs
ZWN0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1NyBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMTk5OSBMYXJzIEtub2xsIChrbm9sbEBrZGUub3JnKQorICogICAgICAgICAgIChDKSAx
OTk5IEFudHRpIEtvaXZpc3RvIChrb2l2aXN0b0BrZGUub3JnKQorICogQ29weXJpZ2h0IChDKSAy
MDAzLCAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy
ZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkg
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhl
IExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICog
VGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1
c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1w
bGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZl
ZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFs
b25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3Qs
IHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFu
a2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0Eu
CisgKgorICovCisKKyNpZm5kZWYgSFRNTEZvcm1Db2xsZWN0aW9uX2gKKyNkZWZpbmUgSFRNTEZv
cm1Db2xsZWN0aW9uX2gKKworI2luY2x1ZGUgIkhUTUxDb2xsZWN0aW9uLmgiCisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworY2xhc3MgRm9ybUFzc29jaWF0ZWRFbGVtZW50OworY2xhc3MgSFRNTEVs
ZW1lbnQ7CitjbGFzcyBIVE1MSW1hZ2VFbGVtZW50OworY2xhc3MgUXVhbGlmaWVkTmFtZTsKKy8v
IFRoaXMgY2xhc3MgaXMganVzdCBhIGJpZyBoYWNrIHRvIGZpbmQgZm9ybSBlbGVtZW50cyBldmVu
IGluIG1hbGZvcm1lZCBIVE1MIGVsZW1lbnRzLgorLy8gVGhlIGZhbW91cyA8dGFibGU+PHRyPjxm
b3JtPjx0ZD4gcHJvYmxlbS4KKworY2xhc3MgSFRNTEZvcm1Db2xsZWN0aW9uIDogcHVibGljIEhU
TUxDb2xsZWN0aW9uIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxIVE1MRm9ybUNv
bGxlY3Rpb24+IGNyZWF0ZShFbGVtZW50Kik7CisKKyAgICB2aXJ0dWFsIH5IVE1MRm9ybUNvbGxl
Y3Rpb24oKTsKKworICAgIHZpcnR1YWwgTm9kZSogbmFtZWRJdGVtKGNvbnN0IEF0b21pY1N0cmlu
ZyYgbmFtZSkgY29uc3Q7CisKK3ByaXZhdGU6CisgICAgSFRNTEZvcm1Db2xsZWN0aW9uKEVsZW1l
bnQqKTsKKworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVOYW1lQ2FjaGUoKSBjb25zdDsKKworICAg
IGNvbnN0IFZlY3RvcjxGb3JtQXNzb2NpYXRlZEVsZW1lbnQqPiYgZm9ybUNvbnRyb2xFbGVtZW50
cygpIGNvbnN0OworICAgIGNvbnN0IFZlY3RvcjxIVE1MSW1hZ2VFbGVtZW50Kj4mIGZvcm1JbWFn
ZUVsZW1lbnRzKCkgY29uc3Q7CisgICAgdmlydHVhbCBFbGVtZW50KiB2aXJ0dWFsSXRlbUFmdGVy
KHVuc2lnbmVkJiBvZmZzZXRJbkFycmF5LCBFbGVtZW50KikgY29uc3QgT1ZFUlJJREU7Cit9Owor
Cit9IC8vbmFtZXNwYWNlCisKKyNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
Rm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uaAkocmV2aXNpb24gMTMzNTUxKQorKysgU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5oCSh3b3JraW5nIGNv
cHkpCkBAIC0yMCw4ICsyMCw4IEBACiAgKgogICovCiAKLSNpZm5kZWYgSFRNTEZvcm1Db2xsZWN0
aW9uX2gKLSNkZWZpbmUgSFRNTEZvcm1Db2xsZWN0aW9uX2gKKyNpZm5kZWYgSFRNTEZvcm1Db250
cm9sc0NvbGxlY3Rpb25faAorI2RlZmluZSBIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbl9oCiAK
ICNpbmNsdWRlICJIVE1MQ29sbGVjdGlvbi5oIgogCkBAIC0zNCwxNiArMzQsMTYgQEAgY2xhc3Mg
UXVhbGlmaWVkTmFtZTsKIC8vIFRoaXMgY2xhc3MgaXMganVzdCBhIGJpZyBoYWNrIHRvIGZpbmQg
Zm9ybSBlbGVtZW50cyBldmVuIGluIG1hbGZvcm1lZCBIVE1MIGVsZW1lbnRzLgogLy8gVGhlIGZh
bW91cyA8dGFibGU+PHRyPjxmb3JtPjx0ZD4gcHJvYmxlbS4KIAotY2xhc3MgSFRNTEZvcm1Db2xs
ZWN0aW9uIDogcHVibGljIEhUTUxDb2xsZWN0aW9uIHsKK2NsYXNzIEhUTUxGb3JtQ29udHJvbHND
b2xsZWN0aW9uIDogcHVibGljIEhUTUxDb2xsZWN0aW9uIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMg
UGFzc1JlZlB0cjxIVE1MRm9ybUNvbGxlY3Rpb24+IGNyZWF0ZShFbGVtZW50Kik7CisgICAgc3Rh
dGljIFBhc3NSZWZQdHI8SFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24+IGNyZWF0ZShFbGVtZW50
Kik7CiAKLSAgICB2aXJ0dWFsIH5IVE1MRm9ybUNvbGxlY3Rpb24oKTsKKyAgICB2aXJ0dWFsIH5I
VE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbigpOwogCiAgICAgdmlydHVhbCBOb2RlKiBuYW1lZEl0
ZW0oY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKSBjb25zdDsKIAogcHJpdmF0ZToKLSAgICBIVE1M
Rm9ybUNvbGxlY3Rpb24oRWxlbWVudCopOworICAgIEhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9u
KEVsZW1lbnQqKTsKIAogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVOYW1lQ2FjaGUoKSBjb25zdDsK
IApAQCAtNTIsNiArNTIsNiBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgRWxlbWVudCogdmlydHVh
bEl0ZW1BZnRlcih1bnNpZ25lZCYgb2Zmc2V0SW5BcnJheSwgRWxlbWVudCopIGNvbnN0IE9WRVJS
SURFOwogfTsKIAotfSAvL25hbWVzcGFjZQorfSAvLyBuYW1lc3BhY2UKIAogI2VuZGlmCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmlkbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9u
LmlkbAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9s
c0NvbGxlY3Rpb24uaWRsCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDI4IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDA2LCAyMDA3LCAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNiBTYW11ZWwgV2VpbmlnIDxzYW0ud2VpbmlnQGdtYWls
LmNvbT4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp
c3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH
TlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhl
IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExp
Y2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhp
cyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2Vm
dWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGll
ZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGlj
ZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBh
IGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25n
IHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdy
aXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xp
biBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisg
Ki8KKworWworICAgIEluZGV4ZWRHZXR0ZXIsCisgICAgTmFtZWRHZXR0ZXIsCisgICAgR2VuZXJh
dGVJc1JlYWNoYWJsZT1JbXBsQmFzZVJvb3QsCisgICAgVjhEZXBlbmRlbnRMaWZldGltZSwKK10g
aW50ZXJmYWNlIEhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uIDogSFRNTENvbGxlY3Rpb24gewor
ICAgIFtDdXN0b21dIE5vZGUgbmFtZWRJdGVtKGluIFtPcHRpb25hbD1EZWZhdWx0SXNVbmRlZmlu
ZWRdIERPTVN0cmluZyBuYW1lKTsKK307CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxG
b3JtRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9y
bUVsZW1lbnQuY3BwCShyZXZpc2lvbiAxMzUwMzgpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxGb3JtRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQwLDggKzQwLDggQEAKICNpbmNs
dWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCiAjaW5jbHVkZSAiRnJhbWVM
b2FkZXJDbGllbnQuaCIKKyNpbmNsdWRlICJIVE1MQ29sbGVjdGlvbi5oIgogI2luY2x1ZGUgIkhU
TUxEb2N1bWVudC5oIgotI2luY2x1ZGUgIkhUTUxGb3JtQ29sbGVjdGlvbi5oIgogI2luY2x1ZGUg
IkhUTUxJbWFnZUVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MSW5wdXRFbGVtZW50LmgiCiAjaW5j
bHVkZSAiSFRNTE5hbWVzLmgiCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxl
bWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50
LmgJKHJldmlzaW9uIDEzNTAzOCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVt
ZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDcgKzM4LDYgQEAgY2xhc3MgRm9ybURhdGE7CiBj
bGFzcyBIVE1MRm9ybUNvbnRyb2xFbGVtZW50OwogY2xhc3MgSFRNTEltYWdlRWxlbWVudDsKIGNs
YXNzIEhUTUxJbnB1dEVsZW1lbnQ7Ci1jbGFzcyBIVE1MRm9ybUNvbGxlY3Rpb247CiBjbGFzcyBU
ZXh0RW5jb2Rpbmc7CiAKIGNsYXNzIEhUTUxGb3JtRWxlbWVudCA6IHB1YmxpYyBIVE1MRWxlbWVu
dCB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRpb25zQ29sbGVjdGlvbi5pZGwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0aW9uc0NvbGxlY3Rpb24u
aWRsCShyZXZpc2lvbiAxMzUwMzgpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRpb25z
Q29sbGVjdGlvbi5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTIwLDExICsyMCwxNiBAQAogCiBbCiAg
ICAgSlNHZW5lcmF0ZVRvTmF0aXZlT2JqZWN0LAotICAgIEN1c3RvbUluZGV4ZWRTZXR0ZXIKKyAg
ICBDdXN0b21JbmRleGVkU2V0dGVyLAorICAgIE5hbWVkR2V0dGVyLAorICAgIEdlbmVyYXRlSXNS
ZWFjaGFibGU9SW1wbEJhc2VSb290LAorICAgIFY4RGVwZW5kZW50TGlmZXRpbWUsCiBdIGludGVy
ZmFjZSBIVE1MT3B0aW9uc0NvbGxlY3Rpb24gOiBIVE1MQ29sbGVjdGlvbiB7Ci0gICAgICAgICAg
ICAgYXR0cmlidXRlIGxvbmcgc2VsZWN0ZWRJbmRleDsKLSAgICAgICAgICAgICBbQ3VzdG9tU2V0
dGVyXSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBsZW5ndGgKLSAgICAgICAgICAgICAgICAgICAg
c2V0dGVyIHJhaXNlcyAoRE9NRXhjZXB0aW9uKTsKKyAgICBhdHRyaWJ1dGUgbG9uZyBzZWxlY3Rl
ZEluZGV4OworICAgIFtDdXN0b21TZXR0ZXJdIGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIGxlbmd0
aAorICAgICAgICBzZXR0ZXIgcmFpc2VzIChET01FeGNlcHRpb24pOworCisgICAgW0N1c3RvbV0g
Tm9kZSBuYW1lZEl0ZW0oaW4gW09wdGlvbmFsPURlZmF1bHRJc1VuZGVmaW5lZF0gRE9NU3RyaW5n
IG5hbWUpOwogCiAgICAgW0N1c3RvbV0gdm9pZCBhZGQoaW4gW09wdGlvbmFsPURlZmF1bHRJc1Vu
ZGVmaW5lZF0gSFRNTE9wdGlvbkVsZW1lbnQgb3B0aW9uLCAKICAgICAgICAgICAgICAgICAgICAg
ICBpbiBbT3B0aW9uYWxdIHVuc2lnbmVkIGxvbmcgaW5kZXgpCkBAIC0zMiw4ICszNyw3IEBACiAg
ICAgW0N1c3RvbV0gdm9pZCByZW1vdmUoaW4gW09wdGlvbmFsPURlZmF1bHRJc1VuZGVmaW5lZF0g
dW5zaWduZWQgbG9uZyBpbmRleCk7CiAKICNpZiBkZWZpbmVkKExBTkdVQUdFX09CSkVDVElWRV9D
KSAmJiBMQU5HVUFHRV9PQkpFQ1RJVkVfQwotICAgIE5vZGUgaXRlbShpbiB1bnNpZ25lZCBsb25n
IGluZGV4KTsgCi0gICAgTm9kZSBuYW1lZEl0ZW0oaW4gRE9NU3RyaW5nIG5hbWUpOyAKKyAgICBO
b2RlIGl0ZW0oaW4gdW5zaWduZWQgbG9uZyBpbmRleCk7CiAjZW5kaWYKIH07CiAKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wYWdlL0RPTVdpbmRvdy5pZGwJKHJldmlzaW9uIDEzNTAzOCkKKysrIFNvdXJjZS9XZWJD
b3JlL3BhZ2UvRE9NV2luZG93LmlkbAkod29ya2luZyBjb3B5KQpAQCAtNDcwLDYgKzQ3MCw4IEBA
CiAKICAgICBhdHRyaWJ1dGUgSFRNTENvbGxlY3Rpb25Db25zdHJ1Y3RvciBIVE1MQ29sbGVjdGlv
bjsKICAgICBhdHRyaWJ1dGUgSFRNTEFsbENvbGxlY3Rpb25Db25zdHJ1Y3RvciBIVE1MQWxsQ29s
bGVjdGlvbjsKKyAgICBhdHRyaWJ1dGUgSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb25Db25zdHJ1
Y3RvciBIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbjsKKyAgICBhdHRyaWJ1dGUgSFRNTE9wdGlv
bnNDb2xsZWN0aW9uQ29uc3RydWN0b3IgSFRNTE9wdGlvbnNDb2xsZWN0aW9uOwogICAgIFtDb25k
aXRpb25hbD1NSUNST0RBVEFdIGF0dHJpYnV0ZSBIVE1MUHJvcGVydGllc0NvbGxlY3Rpb25Db25z
dHJ1Y3RvciBIVE1MUHJvcGVydGllc0NvbGxlY3Rpb247CiAgICAgYXR0cmlidXRlIEhUTUxVbmtu
b3duRWxlbWVudENvbnN0cnVjdG9yIEhUTUxVbmtub3duRWxlbWVudDsKIApJbmRleDogTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2
aXNpb24gMTM1MDM4KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjcgQEAKKzIwMTItMTEtMDYgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5v
cmc+CisKKyAgICAgICAgTWFrZSBuYW1lZEl0ZW0gcmV0dXJuIGEgbm9kZSBsaXN0IG9ubHkgaW4g
SFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24gYW5kIEhUTUxPcHRpb25zQ29sbGVjdGlvbgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAxMzExCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkZWQgYSByZWdy
ZXNzaW9uIHRlc3QgdG8gZW5zdXJlIGZvcm0uZWxlbWVudHMgYW5kIHNlbGVjdC5vcHRpb25zIHVz
ZSBjb3JyZWN0IGludGVyZmFjZXMsCisgICAgICAgIGFuZCBuYW1lZCBnZXR0ZXIgZm9yIHRob3Nl
IHR3byBwcm9wZXJ0aWVzIHJldHVybiBhIE5vZGVMaXN0IHdoZW4gdGhlcmUgYXJlIG11bHRpcGxl
IG1hdGNoZXMuCisKKyAgICAgICAgQWxzbyBhZGRlZCBhcHByb3ByaWF0ZSBJREwgb3B0aW9ucyB0
byBIVE1MT3B0aW9uc0NvbGxlY3Rpb24uaWRsLgorCisgICAgICAgICogZmFzdC9kb20vY29sbGVj
dGlvbi1uYW1lZGl0ZW0tbW92ZS1iZXR3ZWVuLWRvY3VtZW50cy1leHBlY3RlZC50eHQ6IFJlYmFz
ZWxpbmVkIHNpbmNlIG5hbWVkSXRlbQorICAgICAgICBub3cgY29ycmVjdGx5IHJldHVybnMgbnVs
bCB3aGVuIHRoZXJlIGlzIG5vIG1hdGNoLiBUaGlzIHRlc3QgcmVzdWx0IGRlbW9uc3RyYXRlcyBh
IGJ1ZyB0aGF0CisgICAgICAgIEhUTUxBbGxDb2xsZWN0aW9uIGRvZXNuJ3QgaW5oZXJpdCBmcm9t
IEhUTUxDb2xsZWN0aW9uLgorICAgICAgICAqIGZhc3QvZG9tL2NvbGxlY3Rpb24tbmFtZWRpdGVt
LW1vdmUtYmV0d2Vlbi1kb2N1bWVudHMuaHRtbDogRGl0dG8uCisgICAgICAgICogZmFzdC9kb20v
ZG9tLWNvbnN0cnVjdG9ycy1leHBlY3RlZC50eHQ6IFJlYmFzZWxpbmVkLgorICAgICAgICAqIGZh
c3QvZG9tL2h0bWwtY29sbGVjdGlvbnMtbmFtZWQtZ2V0dGVyLWV4cGVjdGVkLnR4dDogQWRkZWQu
CisgICAgICAgICogZmFzdC9kb20vaHRtbC1jb2xsZWN0aW9ucy1uYW1lZC1nZXR0ZXIuaHRtbDog
QWRkZWQuCisgICAgICAgICogZmFzdC9kb20vd3JhcHBlci1jbGFzc2VzLWV4cGVjdGVkLnR4dDog
UmViYXNlbGluZWQuCisgICAgICAgICogaW5zcGVjdG9yL2NvbnNvbGUvY29uc29sZS1mb3JtYXQt
Y29sbGVjdGlvbnMtZXhwZWN0ZWQudHh0OiBSZWJhc2VsaW5lZC4KKyAgICAgICAgKiBwbGF0Zm9y
bS9jaHJvbWl1bS9mYXN0L2RvbS9nYy05LWV4cGVjdGVkLnR4dDogUmViYXNlbGluZWQgc2luY2Ug
YSB0ZXN0IGNhc2UgZm9yCisgICAgICAgIEhUTUxPcHRpb25zQ29sbGVjdGlvbiBub3cgcGFzc2Vz
LgorCiAyMDEyLTExLTE2ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgog
CiAgICAgICAgIFJlYmFzZWxpbmUuCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9jb2xsZWN0
aW9uLW5hbWVkaXRlbS1tb3ZlLWJldHdlZW4tZG9jdW1lbnRzLWV4cGVjdGVkLnR4dAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9jb2xsZWN0aW9uLW5hbWVkaXRlbS1tb3ZlLWJl
dHdlZW4tZG9jdW1lbnRzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTM1MDM4KQorKysgTGF5b3V0
VGVzdHMvZmFzdC9kb20vY29sbGVjdGlvbi1uYW1lZGl0ZW0tbW92ZS1iZXR3ZWVuLWRvY3VtZW50
cy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsNCArMSw0IEBACi1QQVNTIHR5cGVv
ZiBjaGlsZHJlbi5uYW1lZEl0ZW0oJ2NoaWxkJykgaXMgJ3VuZGVmaW5lZCcKK1BBU1MgY2hpbGRy
ZW4ubmFtZWRJdGVtKCdjaGlsZCcpIGlzIG51bGwKIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlz
IHRydWUKIAogVEVTVCBDT01QTEVURQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vY29sbGVj
dGlvbi1uYW1lZGl0ZW0tbW92ZS1iZXR3ZWVuLWRvY3VtZW50cy5odG1sCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2Zhc3QvZG9tL2NvbGxlY3Rpb24tbmFtZWRpdGVtLW1vdmUtYmV0d2Vlbi1k
b2N1bWVudHMuaHRtbAkocmV2aXNpb24gMTM1MDM4KQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20v
Y29sbGVjdGlvbi1uYW1lZGl0ZW0tbW92ZS1iZXR3ZWVuLWRvY3VtZW50cy5odG1sCSh3b3JraW5n
IGNvcHkpCkBAIC0zMyw3ICszMyw3IEBAIHdpbmRvdy5vbmxvYWQgPSBmdW5jdGlvbigpCiBmdW5j
dGlvbiBzdGVwMigpCiB7CiAgICAgZG9jdW1lbnQuYWRvcHROb2RlKGVsZW1lbnQpOwotICAgIHNo
b3VsZEJlKCJ0eXBlb2YgY2hpbGRyZW4ubmFtZWRJdGVtKCdjaGlsZCcpIiwgIid1bmRlZmluZWQn
Iik7CisgICAgc2hvdWxkQmVOdWxsKCJjaGlsZHJlbi5uYW1lZEl0ZW0oJ2NoaWxkJykiKTsKICAg
ICBmaW5pc2hKU1Rlc3QoKTsKIH0KIDwvc2NyaXB0PgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9k
b20vZG9tLWNvbnN0cnVjdG9ycy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZmFzdC9kb20vZG9tLWNvbnN0cnVjdG9ycy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDEzNTAz
OCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL2RvbS1jb25zdHJ1Y3RvcnMtZXhwZWN0ZWQudHh0
CSh3b3JraW5nIGNvcHkpCkBAIC0xMTgsNyArMTE4LDcgQEAgRkFJTCBUcnlBbGxvY2F0ZSgnQ29u
c29sZScpIHNob3VsZCBiZSBleAogUEFTUyBUcnlBbGxvY2F0ZSgnU2VsZWN0aW9uJykgaXMgJ2V4
Y2VwdGlvbicKIFBBU1MgVHJ5QWxsb2NhdGUoJ1dpbmRvdycpIGlzICdleGNlcHRpb24nCiBGQUlM
IFRyeUFsbG9jYXRlKCdIaXN0b3J5Jykgc2hvdWxkIGJlIGV4Y2VwdGlvbi4gV2FzIG5vIGNvbnN0
cnVjdG9yLgotRkFJTCBUcnlBbGxvY2F0ZSgnSFRNTE9wdGlvbnNDb2xsZWN0aW9uJykgc2hvdWxk
IGJlIGV4Y2VwdGlvbi4gV2FzIG5vIGNvbnN0cnVjdG9yLgorUEFTUyBUcnlBbGxvY2F0ZSgnSFRN
TE9wdGlvbnNDb2xsZWN0aW9uJykgaXMgJ2V4Y2VwdGlvbicKIEZBSUwgVHJ5QWxsb2NhdGUoJ0xv
Y2F0aW9uJykgc2hvdWxkIGJlIGV4Y2VwdGlvbi4gV2FzIG5vIGNvbnN0cnVjdG9yLgogRkFJTCBU
cnlBbGxvY2F0ZSgnTmF2aWdhdG9yJykgc2hvdWxkIGJlIGV4Y2VwdGlvbi4gV2FzIG5vIGNvbnN0
cnVjdG9yLgogRkFJTCBUcnlBbGxvY2F0ZSgnTm9kZUl0ZXJhdG9yJykgc2hvdWxkIGJlIGV4Y2Vw
dGlvbi4gV2FzIG5vIGNvbnN0cnVjdG9yLgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vaHRt
bC1jb2xsZWN0aW9ucy1uYW1lZC1nZXR0ZXItZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2Zhc3QvZG9tL2h0bWwtY29sbGVjdGlvbnMtbmFtZWQtZ2V0dGVyLWV4cGVjdGVk
LnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL2h0bWwtY29sbGVjdGlv
bnMtbmFtZWQtZ2V0dGVyLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMDEg
QEAKK1RoaXMgdGVzdHMgdmVyaWZpZXMgdGhhdCBuYW1lZEl0ZW0gYW5kIG5hbWVkIGdldHRlciBy
ZXR1cm5zIHRoZSBmaXJzdCBtYXRjaGVkIGl0ZW0gZm9yIGFsbCBidXQgYWxsLCBvcHRpb25zLCBh
bmQgZm9ybSBjb250cm9scyBjb2xsZWN0aW9ucy4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2Vl
IGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUi
LgorCisKK2RvY3VtZW50LmFsbAorUEFTUyBkb2N1bWVudC5hbGwgaW5zdGFuY2VvZiBIVE1MQWxs
Q29sbGVjdGlvbiBpcyB0cnVlCitGQUlMIGRvY3VtZW50LmFsbCBpbnN0YW5jZW9mIEhUTUxDb2xs
ZWN0aW9uIHNob3VsZCBiZSB0cnVlLiBXYXMgZmFsc2UuCitQQVNTIGluaXRpYWxMZW5ndGggPSBk
b2N1bWVudC5hbGwubGVuZ3RoOyBlbGVtZW50cyA9IFtpbnNlcnRFbGVtZW50V2l0aElkKCdiJywg
J2ZvbycpLCBpbnNlcnRFbGVtZW50V2l0aElkKCdxJywgJ2ZvbycpXTsKKyAgICAgZG9jdW1lbnQu
YWxsLmxlbmd0aCBpcyBpbml0aWFsTGVuZ3RoICsgMjsKK1BBU1MgZG9jdW1lbnQuYWxsWydmb28n
XS5sZW5ndGggaXMgMgorUEFTUyBkb2N1bWVudC5hbGxbJ2ZvbyddWzBdIGlzIGVsZW1lbnRzWzBd
CitQQVNTIGRvY3VtZW50LmFsbFsnZm9vJ11bMV0gaXMgZWxlbWVudHNbMV0KK1BBU1MgZWxlbWVu
dHNbMF0ucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChlbGVtZW50c1swXSk7IGRvY3VtZW50LmFsbFsn
Zm9vJ10gaXMgZWxlbWVudHNbMV0KKworZm9ybS5lbGVtZW50cworUEFTUyBmb3JtLmVsZW1lbnRz
IGluc3RhbmNlb2YgSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24gaXMgdHJ1ZQorUEFTUyBmb3Jt
LmVsZW1lbnRzIGluc3RhbmNlb2YgSFRNTENvbGxlY3Rpb24gaXMgdHJ1ZQorUEFTUyBmb3JtLmVs
ZW1lbnRzLmxlbmd0aCBpcyAwCitQQVNTIGVsZW1lbnRzID0gW2NyZWF0ZUVsZW1lbnRXaXRoSWQo
J2lucHV0JywgJ2ZvbycpLCBjcmVhdGVFbGVtZW50V2l0aElkKCdpbnB1dCcsICdmb28nKV07Cisg
ICAgIGZvcm0uYXBwZW5kQ2hpbGQoZWxlbWVudHNbMF0pOyBmb3JtLmVsZW1lbnRzLmxlbmd0aCBp
cyAxCitQQVNTIGZvcm0uZWxlbWVudHNbJ2ZvbyddIGlzIGVsZW1lbnRzWzBdCitQQVNTIGZvcm0u
YXBwZW5kQ2hpbGQoZWxlbWVudHNbMV0pOyBmb3JtLmVsZW1lbnRzLmxlbmd0aCBpcyAyCitQQVNT
IGZvcm0uZWxlbWVudHNbJ2ZvbyddLnRvU3RyaW5nKCkgaXMgJ1tvYmplY3QgUmFkaW9Ob2RlTGlz
dF0nCitQQVNTIGZvcm0uZWxlbWVudHNbJ2ZvbyddLmxlbmd0aCBpcyAyCitQQVNTIGZvcm0uZWxl
bWVudHNbJ2ZvbyddWzBdIGlzIGVsZW1lbnRzWzBdCitQQVNTIGZvcm0uZWxlbWVudHNbJ2Zvbydd
WzFdIGlzIGVsZW1lbnRzWzFdCitQQVNTIGZvcm0ucmVtb3ZlQ2hpbGQoZWxlbWVudHNbMF0pOyBm
b3JtLmVsZW1lbnRzWydmb28nXSBpcyBlbGVtZW50c1sxXQorUEFTUyByZW1vdmVUZXN0RWxlbWVu
dHMoKTsgZm9ybS5lbGVtZW50cy5sZW5ndGggaXMgMAorCitzZWxlY3Qub3B0aW9ucworUEFTUyBm
b3JtLmFwcGVuZENoaWxkKGNyZWF0ZUVsZW1lbnRXaXRoSWQoJ3NlbGVjdCcsICdiYXInKSk7IGZv
cm0uZWxlbWVudHMubGVuZ3RoIGlzIDEKK1BBU1Mgc2VsZWN0ID0gZm9ybS5lbGVtZW50c1swXTsg
c2VsZWN0Lm9wdGlvbnMgaW5zdGFuY2VvZiBIVE1MT3B0aW9uc0NvbGxlY3Rpb24gaXMgdHJ1ZQor
UEFTUyBzZWxlY3Qub3B0aW9ucyBpbnN0YW5jZW9mIEhUTUxDb2xsZWN0aW9uIGlzIHRydWUKK1BB
U1Mgc2VsZWN0Lm9wdGlvbnMubGVuZ3RoIGlzIDAKK1BBU1MgZWxlbWVudHMgPSBbY3JlYXRlRWxl
bWVudFdpdGhJZCgnb3B0aW9uJywgJ2ZvbycpLCBjcmVhdGVFbGVtZW50V2l0aElkKCdvcHRpb24n
LCAnZm9vJyldOworICAgICBzZWxlY3QuYXBwZW5kQ2hpbGQoZWxlbWVudHNbMF0pOyBzZWxlY3Qu
b3B0aW9ucy5sZW5ndGggaXMgMQorUEFTUyBzZWxlY3Qub3B0aW9uc1snZm9vJ10gaXMgZWxlbWVu
dHNbMF0KK1BBU1Mgc2VsZWN0LmFwcGVuZENoaWxkKGVsZW1lbnRzWzFdKTsgc2VsZWN0Lm9wdGlv
bnMubGVuZ3RoIGlzIDIKK1BBU1Mgc2VsZWN0Lm9wdGlvbnNbJ2ZvbyddLnRvU3RyaW5nKCkgaXMg
J1tvYmplY3QgTm9kZUxpc3RdJworUEFTUyBzZWxlY3Qub3B0aW9uc1snZm9vJ10ubGVuZ3RoIGlz
IDIKK1BBU1Mgc2VsZWN0Lm9wdGlvbnNbJ2ZvbyddWzBdIGlzIGVsZW1lbnRzWzBdCitQQVNTIHNl
bGVjdC5vcHRpb25zWydmb28nXVsxXSBpcyBlbGVtZW50c1sxXQorUEFTUyBzZWxlY3QucmVtb3Zl
Q2hpbGQoZWxlbWVudHNbMF0pOyBzZWxlY3Qub3B0aW9uc1snZm9vJ10gaXMgZWxlbWVudHNbMV0K
K1BBU1Mgc2VsZWN0LmlubmVySFRNTCA9ICcnOyBzZWxlY3Qub3B0aW9ucy5sZW5ndGggaXMgMAor
UEFTUyByZW1vdmVUZXN0RWxlbWVudHMoKTsgZm9ybS5lbGVtZW50cy5sZW5ndGggaXMgMAorCitk
b2N1bWVudC5pbWFnZXMKK1BBU1MgZG9jdW1lbnQuaW1hZ2VzLmxlbmd0aCBpcyAwCitQQVNTIGVs
ZW1lbnRzWzBdID0gaW5zZXJ0RWxlbWVudFdpdGhJZCgnaW1nJywgJ2ZvbycpOyBkb2N1bWVudC5p
bWFnZXMubGVuZ3RoIGlzIDEKK1BBU1MgZWxlbWVudHNbMV0gPSBpbnNlcnRFbGVtZW50V2l0aElk
KCdpbWcnLCAnZm9vJyk7IGRvY3VtZW50LmltYWdlcy5sZW5ndGggaXMgMgorUEFTUyBkb2N1bWVu
dC5pbWFnZXNbJ2ZvbyddIGlzIGVsZW1lbnRzWzBdCitQQVNTIHJlbW92ZVRlc3RFbGVtZW50cygp
OyBkb2N1bWVudC5pbWFnZXMubGVuZ3RoIGlzIDAKKworZG9jdW1lbnQuYXBwbGV0cworUEFTUyBk
b2N1bWVudC5hcHBsZXRzLmxlbmd0aCBpcyAwCitQQVNTIGVsZW1lbnRzWzBdID0gaW5zZXJ0RWxl
bWVudFdpdGhJZCgnYXBwbGV0JywgJ2ZvbycpOyBkb2N1bWVudC5hcHBsZXRzLmxlbmd0aCBpcyAx
CitQQVNTIGVsZW1lbnRzWzFdID0gaW5zZXJ0RWxlbWVudFdpdGhJZCgnYXBwbGV0JywgJ2Zvbycp
OyBkb2N1bWVudC5hcHBsZXRzLmxlbmd0aCBpcyAyCitQQVNTIGRvY3VtZW50LmFwcGxldHNbJ2Zv
byddIGlzIGVsZW1lbnRzWzBdCitQQVNTIHJlbW92ZVRlc3RFbGVtZW50cygpOyBkb2N1bWVudC5h
cHBsZXRzLmxlbmd0aCBpcyAwCisKK2RvY3VtZW50LmVtYmVkcworUEFTUyBkb2N1bWVudC5lbWJl
ZHMubGVuZ3RoIGlzIDAKK1BBU1MgZWxlbWVudHNbMF0gPSBpbnNlcnRFbGVtZW50V2l0aElkKCdl
bWJlZCcsICdmb28nKTsgZG9jdW1lbnQuZW1iZWRzLmxlbmd0aCBpcyAxCitQQVNTIGVsZW1lbnRz
WzFdID0gaW5zZXJ0RWxlbWVudFdpdGhJZCgnZW1iZWQnLCAnZm9vJyk7IGRvY3VtZW50LmVtYmVk
cy5sZW5ndGggaXMgMgorUEFTUyBkb2N1bWVudC5lbWJlZHNbJ2ZvbyddIGlzIGVsZW1lbnRzWzBd
CitQQVNTIHJlbW92ZVRlc3RFbGVtZW50cygpOyBkb2N1bWVudC5lbWJlZHMubGVuZ3RoIGlzIDAK
KworZG9jdW1lbnQuZm9ybXMKK1BBU1MgZG9jdW1lbnQuZm9ybXMubGVuZ3RoIGlzIDEKK1BBU1Mg
ZWxlbWVudHNbMF0gPSBpbnNlcnRFbGVtZW50V2l0aElkKCdmb3JtJywgJ2ZvbycpOyBkb2N1bWVu
dC5mb3Jtcy5sZW5ndGggaXMgMgorUEFTUyBlbGVtZW50c1sxXSA9IGluc2VydEVsZW1lbnRXaXRo
SWQoJ2Zvcm0nLCAnZm9vJyk7IGRvY3VtZW50LmZvcm1zLmxlbmd0aCBpcyAzCitQQVNTIGRvY3Vt
ZW50LmZvcm1zWydmb28nXSBpcyBlbGVtZW50c1swXQorUEFTUyByZW1vdmVUZXN0RWxlbWVudHMo
KTsgZG9jdW1lbnQuZm9ybXMubGVuZ3RoIGlzIDEKKworZG9jdW1lbnQubGlua3MKK1BBU1MgZG9j
dW1lbnQubGlua3MubGVuZ3RoIGlzIDAKK1BBU1MgZWxlbWVudHNbMF0gPSBpbnNlcnRFbGVtZW50
V2l0aElkKCdhJywgJ2ZvbycsIHsiaHJlZiI6InNvbWUgdXJsIn0pOyBkb2N1bWVudC5saW5rcy5s
ZW5ndGggaXMgMQorUEFTUyBlbGVtZW50c1sxXSA9IGluc2VydEVsZW1lbnRXaXRoSWQoJ2EnLCAn
Zm9vJywgeyJocmVmIjoic29tZSB1cmwifSk7IGRvY3VtZW50LmxpbmtzLmxlbmd0aCBpcyAyCitQ
QVNTIGVsZW1lbnRzWzJdID0gaW5zZXJ0RWxlbWVudFdpdGhJZCgnYXJlYScsICdmb28nLCB7Imhy
ZWYiOiJzb21lIHVybCJ9KTsgZG9jdW1lbnQubGlua3MubGVuZ3RoIGlzIDMKK1BBU1MgZG9jdW1l
bnQubGlua3NbJ2ZvbyddIGlzIGVsZW1lbnRzWzBdCitQQVNTIHJlbW92ZVRlc3RFbGVtZW50cygp
OyBkb2N1bWVudC5saW5rcy5sZW5ndGggaXMgMAorCitkb2N1bWVudC5hbmNob3JzCitQQVNTIGRv
Y3VtZW50LmFuY2hvcnMubGVuZ3RoIGlzIDAKK1BBU1MgZWxlbWVudHNbMF0gPSBpbnNlcnRFbGVt
ZW50V2l0aElkKCdhJywgJ2ZvbycsIHsibmFtZSI6InNvbWUgbmFtZSJ9KTsgZG9jdW1lbnQuYW5j
aG9ycy5sZW5ndGggaXMgMQorUEFTUyBlbGVtZW50c1sxXSA9IGluc2VydEVsZW1lbnRXaXRoSWQo
J2EnLCAnZm9vJywgeyJuYW1lIjoic29tZSBuYW1lIn0pOyBkb2N1bWVudC5hbmNob3JzLmxlbmd0
aCBpcyAyCitQQVNTIGRvY3VtZW50LmFuY2hvcnNbJ2ZvbyddIGlzIGVsZW1lbnRzWzBdCitQQVNT
IHJlbW92ZVRlc3RFbGVtZW50cygpOyBkb2N1bWVudC5hbmNob3JzLmxlbmd0aCBpcyAwCisKK2Rv
Y3VtZW50LnNjcmlwdHMKK1BBU1MgZG9jdW1lbnQuc2NyaXB0cy5sZW5ndGggaXMgMgorUEFTUyBl
bGVtZW50c1swXSA9IGluc2VydEVsZW1lbnRXaXRoSWQoJ3NjcmlwdCcsICdmb28nKTsgZG9jdW1l
bnQuc2NyaXB0cy5sZW5ndGggaXMgMworUEFTUyBlbGVtZW50c1sxXSA9IGluc2VydEVsZW1lbnRX
aXRoSWQoJ3NjcmlwdCcsICdmb28nKTsgZG9jdW1lbnQuc2NyaXB0cy5sZW5ndGggaXMgNAorUEFT
UyBkb2N1bWVudC5zY3JpcHRzWydmb28nXSBpcyBlbGVtZW50c1swXQorUEFTUyByZW1vdmVUZXN0
RWxlbWVudHMoKTsgZG9jdW1lbnQuc2NyaXB0cy5sZW5ndGggaXMgMgorCitQQVNTIHN1Y2Nlc3Nm
dWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMv
ZmFzdC9kb20vaHRtbC1jb2xsZWN0aW9ucy1uYW1lZC1nZXR0ZXIuaHRtbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9odG1sLWNvbGxlY3Rpb25zLW5hbWVkLWdldHRlci5odG1s
CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vaHRtbC1jb2xsZWN0aW9ucy1u
YW1lZC1nZXR0ZXIuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMDQgQEAKKzwhRE9DVFlQ
RSBodG1sPgorPGh0bWw+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMt
dGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPGRpdiBpZD0iY29udGFpbmVyIj48L2Rpdj4KKzxmb3Jt
PjwvZm9ybT4KKzxzY3JpcHQ+CisKK2Rlc2NyaXB0aW9uKCJUaGlzIHRlc3RzIHZlcmlmaWVzIHRo
YXQgbmFtZWRJdGVtIGFuZCBuYW1lZCBnZXR0ZXIgcmV0dXJucyB0aGUgZmlyc3QgbWF0Y2hlZCBp
dGVtIGZvciBhbGwgYnV0IGFsbCwgb3B0aW9ucywgYW5kIGZvcm0gY29udHJvbHMgY29sbGVjdGlv
bnMuIik7CisKK2Z1bmN0aW9uIGNyZWF0ZUVsZW1lbnRXaXRoSWQobmFtZSwgaWQsIGF0dHJpYnV0
ZXMpIHsKKyAgICB2YXIgZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQobmFtZSk7Cisg
ICAgZWxlbWVudC5pZCA9IGlkOworICAgIGZvciAodmFyIGF0dHIgaW4gYXR0cmlidXRlcykKKyAg
ICAgICAgZWxlbWVudC5zZXRBdHRyaWJ1dGUoYXR0ciwgYXR0cmlidXRlc1thdHRyXSk7CisgICAg
cmV0dXJuIGVsZW1lbnQ7Cit9CisKK2Z1bmN0aW9uIGluc2VydEVsZW1lbnRXaXRoSWQobmFtZSwg
aWQsIGF0dHJpYnV0ZXMpIHsKKyAgICB2YXIgZWxlbWVudCA9IGNyZWF0ZUVsZW1lbnRXaXRoSWQo
bmFtZSwgaWQsIGF0dHJpYnV0ZXMpOworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb250
YWluZXInKS5hcHBlbmRDaGlsZChlbGVtZW50KTsKKyAgICByZXR1cm4gZWxlbWVudDsKK30KKwor
ZnVuY3Rpb24gcmVtb3ZlVGVzdEVsZW1lbnRzKCkgeworICAgIGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCdjb250YWluZXInKS5pbm5lckhUTUwgPSAnJzsKKyAgICBkb2N1bWVudC5xdWVyeVNlbGVj
dG9yKCdmb3JtJykuaW5uZXJIVE1MID0gJyc7Cit9CisKK3ZhciBlbGVtZW50czsKK2RlYnVnKCdk
b2N1bWVudC5hbGwnKTsKK3Nob3VsZEJlVHJ1ZSgiZG9jdW1lbnQuYWxsIGluc3RhbmNlb2YgSFRN
TEFsbENvbGxlY3Rpb24iKTsKK3Nob3VsZEJlVHJ1ZSgiZG9jdW1lbnQuYWxsIGluc3RhbmNlb2Yg
SFRNTENvbGxlY3Rpb24iKTsKK3Nob3VsZEJlKCJpbml0aWFsTGVuZ3RoID0gZG9jdW1lbnQuYWxs
Lmxlbmd0aDsgZWxlbWVudHMgPSBbaW5zZXJ0RWxlbWVudFdpdGhJZCgnYicsICdmb28nKSwgaW5z
ZXJ0RWxlbWVudFdpdGhJZCgncScsICdmb28nKV07XG4iCisgICAgKyAiICAgICBkb2N1bWVudC5h
bGwubGVuZ3RoIiwgImluaXRpYWxMZW5ndGggKyAyOyIpOworc2hvdWxkQmUoImRvY3VtZW50LmFs
bFsnZm9vJ10ubGVuZ3RoIiwgIjIiKTsKK3Nob3VsZEJlKCJkb2N1bWVudC5hbGxbJ2ZvbyddWzBd
IiwgImVsZW1lbnRzWzBdIik7CitzaG91bGRCZSgiZG9jdW1lbnQuYWxsWydmb28nXVsxXSIsICJl
bGVtZW50c1sxXSIpOworc2hvdWxkQmUoImVsZW1lbnRzWzBdLnBhcmVudE5vZGUucmVtb3ZlQ2hp
bGQoZWxlbWVudHNbMF0pOyBkb2N1bWVudC5hbGxbJ2ZvbyddIiwgJ2VsZW1lbnRzWzFdJyk7Citk
ZWJ1ZygiIik7CisKK3ZhciBmb3JtID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignZm9ybScpOwor
ZGVidWcoImZvcm0uZWxlbWVudHMiKTsKK3Nob3VsZEJlVHJ1ZSgiZm9ybS5lbGVtZW50cyBpbnN0
YW5jZW9mIEhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uIik7CitzaG91bGRCZVRydWUoImZvcm0u
ZWxlbWVudHMgaW5zdGFuY2VvZiBIVE1MQ29sbGVjdGlvbiIpOworc2hvdWxkQmUoImZvcm0uZWxl
bWVudHMubGVuZ3RoIiwgIjAiKTsKK3Nob3VsZEJlKCJlbGVtZW50cyA9IFtjcmVhdGVFbGVtZW50
V2l0aElkKCdpbnB1dCcsICdmb28nKSwgY3JlYXRlRWxlbWVudFdpdGhJZCgnaW5wdXQnLCAnZm9v
JyldO1xuIgorICAgICsgIiAgICAgZm9ybS5hcHBlbmRDaGlsZChlbGVtZW50c1swXSk7IGZvcm0u
ZWxlbWVudHMubGVuZ3RoIiwgIjEiKTsKK3Nob3VsZEJlKCJmb3JtLmVsZW1lbnRzWydmb28nXSIs
ICJlbGVtZW50c1swXSIpOworc2hvdWxkQmUoImZvcm0uYXBwZW5kQ2hpbGQoZWxlbWVudHNbMV0p
OyBmb3JtLmVsZW1lbnRzLmxlbmd0aCIsICIyIik7CitzaG91bGRCZSgiZm9ybS5lbGVtZW50c1sn
Zm9vJ10udG9TdHJpbmcoKSIsICInW29iamVjdCBSYWRpb05vZGVMaXN0XSciKTsKK3Nob3VsZEJl
KCJmb3JtLmVsZW1lbnRzWydmb28nXS5sZW5ndGgiLCAiMiIpOworc2hvdWxkQmUoImZvcm0uZWxl
bWVudHNbJ2ZvbyddWzBdIiwgImVsZW1lbnRzWzBdIik7CitzaG91bGRCZSgiZm9ybS5lbGVtZW50
c1snZm9vJ11bMV0iLCAiZWxlbWVudHNbMV0iKTsKK3Nob3VsZEJlKCJmb3JtLnJlbW92ZUNoaWxk
KGVsZW1lbnRzWzBdKTsgZm9ybS5lbGVtZW50c1snZm9vJ10iLCAiZWxlbWVudHNbMV0iKTsKK3No
b3VsZEJlKCJyZW1vdmVUZXN0RWxlbWVudHMoKTsgZm9ybS5lbGVtZW50cy5sZW5ndGgiLCAiMCIp
OworZGVidWcoIiIpOworCitkZWJ1Zygic2VsZWN0Lm9wdGlvbnMiKTsKK3Nob3VsZEJlKCJmb3Jt
LmFwcGVuZENoaWxkKGNyZWF0ZUVsZW1lbnRXaXRoSWQoJ3NlbGVjdCcsICdiYXInKSk7IGZvcm0u
ZWxlbWVudHMubGVuZ3RoIiwgIjEiKTsKK3Nob3VsZEJlVHJ1ZSgic2VsZWN0ID0gZm9ybS5lbGVt
ZW50c1swXTsgc2VsZWN0Lm9wdGlvbnMgaW5zdGFuY2VvZiBIVE1MT3B0aW9uc0NvbGxlY3Rpb24i
KTsKK3Nob3VsZEJlVHJ1ZSgic2VsZWN0Lm9wdGlvbnMgaW5zdGFuY2VvZiBIVE1MQ29sbGVjdGlv
biIpOworc2hvdWxkQmUoInNlbGVjdC5vcHRpb25zLmxlbmd0aCIsICIwIik7CitzaG91bGRCZSgi
ZWxlbWVudHMgPSBbY3JlYXRlRWxlbWVudFdpdGhJZCgnb3B0aW9uJywgJ2ZvbycpLCBjcmVhdGVF
bGVtZW50V2l0aElkKCdvcHRpb24nLCAnZm9vJyldO1xuIgorICAgICsgIiAgICAgc2VsZWN0LmFw
cGVuZENoaWxkKGVsZW1lbnRzWzBdKTsgc2VsZWN0Lm9wdGlvbnMubGVuZ3RoIiwgIjEiKTsKK3No
b3VsZEJlKCJzZWxlY3Qub3B0aW9uc1snZm9vJ10iLCAiZWxlbWVudHNbMF0iKTsKK3Nob3VsZEJl
KCJzZWxlY3QuYXBwZW5kQ2hpbGQoZWxlbWVudHNbMV0pOyBzZWxlY3Qub3B0aW9ucy5sZW5ndGgi
LCAiMiIpOworc2hvdWxkQmUoInNlbGVjdC5vcHRpb25zWydmb28nXS50b1N0cmluZygpIiwgIidb
b2JqZWN0IE5vZGVMaXN0XSciKTsKK3Nob3VsZEJlKCJzZWxlY3Qub3B0aW9uc1snZm9vJ10ubGVu
Z3RoIiwgIjIiKTsKK3Nob3VsZEJlKCJzZWxlY3Qub3B0aW9uc1snZm9vJ11bMF0iLCAiZWxlbWVu
dHNbMF0iKTsKK3Nob3VsZEJlKCJzZWxlY3Qub3B0aW9uc1snZm9vJ11bMV0iLCAiZWxlbWVudHNb
MV0iKTsKK3Nob3VsZEJlKCJzZWxlY3QucmVtb3ZlQ2hpbGQoZWxlbWVudHNbMF0pOyBzZWxlY3Qu
b3B0aW9uc1snZm9vJ10iLCAiZWxlbWVudHNbMV0iKTsKK3Nob3VsZEJlKCJzZWxlY3QuaW5uZXJI
VE1MID0gJyc7IHNlbGVjdC5vcHRpb25zLmxlbmd0aCIsICIwIik7CitzaG91bGRCZSgicmVtb3Zl
VGVzdEVsZW1lbnRzKCk7IGZvcm0uZWxlbWVudHMubGVuZ3RoIiwgIjAiKTsKK2RlYnVnKCIiKTsK
KworZnVuY3Rpb24gdGVzdEZpcnN0SXRlbVJldHVybnNGaXJzdE1hdGNoKGNvbGxlY3Rpb24sIGlu
aXRpYWxMZW5ndGgsIGVsZW1lbnROYW1lcywgYXR0cmlidXRlcykgeworICAgIGRlYnVnKGNvbGxl
Y3Rpb24pOworICAgIHNob3VsZEJlKGNvbGxlY3Rpb24gKyAiLmxlbmd0aCIsIGluaXRpYWxMZW5n
dGgudG9TdHJpbmcoKSk7CisgICAgZWxlbWVudHMgPSBbXTsKKyAgICBmb3IgKHZhciBpID0gMDsg
aSA8IGVsZW1lbnROYW1lcy5sZW5ndGg7IGkrKykgeworICAgICAgICB2YXIgYXR0cnMgPSBhdHRy
aWJ1dGVzID8gIiwgIiArIEpTT04uc3RyaW5naWZ5KGF0dHJpYnV0ZXMpIDogJyc7CisgICAgICAg
IHNob3VsZEJlKCJlbGVtZW50c1siICsgaSArICJdID0gaW5zZXJ0RWxlbWVudFdpdGhJZCgnIiAr
IGVsZW1lbnROYW1lc1tpXSArICInLCAnZm9vJyIgKyBhdHRycyArICIpOyAiCisgICAgICAgICAg
ICArIGNvbGxlY3Rpb24gKyAiLmxlbmd0aCIsIChpbml0aWFsTGVuZ3RoICsgaSArIDEpLnRvU3Ry
aW5nKCkpOworICAgIH0KKyAgICBzaG91bGRCZShjb2xsZWN0aW9uICsgIlsnZm9vJ10iLCAiZWxl
bWVudHNbMF0iKTsKKyAgICBzaG91bGRCZSgicmVtb3ZlVGVzdEVsZW1lbnRzKCk7ICIgKyBjb2xs
ZWN0aW9uICsgIi5sZW5ndGgiLCBpbml0aWFsTGVuZ3RoLnRvU3RyaW5nKCkpOworICAgIGRlYnVn
KCIiKTsKK30KKwordGVzdEZpcnN0SXRlbVJldHVybnNGaXJzdE1hdGNoKCdkb2N1bWVudC5pbWFn
ZXMnLCAwLCBbJ2ltZycsICdpbWcnXSk7Cit0ZXN0Rmlyc3RJdGVtUmV0dXJuc0ZpcnN0TWF0Y2go
J2RvY3VtZW50LmFwcGxldHMnLCAwLCBbJ2FwcGxldCcsICdhcHBsZXQnXSk7Cit0ZXN0Rmlyc3RJ
dGVtUmV0dXJuc0ZpcnN0TWF0Y2goJ2RvY3VtZW50LmVtYmVkcycsIDAsIFsnZW1iZWQnLCAnZW1i
ZWQnXSk7Cit0ZXN0Rmlyc3RJdGVtUmV0dXJuc0ZpcnN0TWF0Y2goJ2RvY3VtZW50LmZvcm1zJywg
MSwgWydmb3JtJywgJ2Zvcm0nXSk7Cit0ZXN0Rmlyc3RJdGVtUmV0dXJuc0ZpcnN0TWF0Y2goJ2Rv
Y3VtZW50LmxpbmtzJywgMCwgWydhJywgJ2EnLCAnYXJlYSddLCB7J2hyZWYnOiAnc29tZSB1cmwn
fSk7Cit0ZXN0Rmlyc3RJdGVtUmV0dXJuc0ZpcnN0TWF0Y2goJ2RvY3VtZW50LmFuY2hvcnMnLCAw
LCBbJ2EnLCAnYSddLCB7J25hbWUnOiAnc29tZSBuYW1lJ30pOwordGVzdEZpcnN0SXRlbVJldHVy
bnNGaXJzdE1hdGNoKCdkb2N1bWVudC5zY3JpcHRzJywgMiwgWydzY3JpcHQnLCAnc2NyaXB0J10p
OworCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKworPC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+
Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS93cmFwcGVyLWNsYXNzZXMtZXhw
ZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL3dyYXBwZXItY2xh
c3Nlcy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDEzNTAzOCkKKysrIExheW91dFRlc3RzL2Zhc3Qv
ZG9tL3dyYXBwZXItY2xhc3Nlcy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTE0Miw3
ICsxNDIsNyBAQCBQQVNTIGpzV3JhcHBlckNsYXNzKGRvY3VtZW50Ll9fcHJvdG9fXykgCiBQQVNT
IGpzV3JhcHBlckNsYXNzKGRvY3VtZW50LmNvbnN0cnVjdG9yKSBpcyAnSFRNTERvY3VtZW50Q29u
c3RydWN0b3InCiBQQVNTIGpzV3JhcHBlckNsYXNzKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3Nl
bGVjdCcpLm9wdGlvbnMpIGlzICdIVE1MT3B0aW9uc0NvbGxlY3Rpb24nCiBQQVNTIGpzV3JhcHBl
ckNsYXNzKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NlbGVjdCcpLm9wdGlvbnMuX19wcm90b19f
KSBpcyAnSFRNTE9wdGlvbnNDb2xsZWN0aW9uUHJvdG90eXBlJwotUEFTUyBqc1dyYXBwZXJDbGFz
cyhkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzZWxlY3QnKS5vcHRpb25zLmNvbnN0cnVjdG9yKSBp
cyAnSFRNTE9wdGlvbnNDb2xsZWN0aW9uQ29uc3RydWN0b3InCitGQUlMIGpzV3JhcHBlckNsYXNz
KGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NlbGVjdCcpLm9wdGlvbnMuY29uc3RydWN0b3IpIHNo
b3VsZCBiZSBIVE1MT3B0aW9uc0NvbGxlY3Rpb25Db25zdHJ1Y3Rvci4gV2FzIEZ1bmN0aW9uLgog
CiBIVE1MIEVsZW1lbnRzCiAKSW5kZXg6IExheW91dFRlc3RzL2luc3BlY3Rvci9jb25zb2xlL2Nv
bnNvbGUtZm9ybWF0LWNvbGxlY3Rpb25zLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9pbnNwZWN0b3IvY29uc29sZS9jb25zb2xlLWZvcm1hdC1jb2xsZWN0aW9ucy1leHBl
Y3RlZC50eHQJKHJldmlzaW9uIDEzNTAzOCkKKysrIExheW91dFRlc3RzL2luc3BlY3Rvci9jb25z
b2xlL2NvbnNvbGUtZm9ybWF0LWNvbGxlY3Rpb25zLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5
KQpAQCAtMiw3ICsyLDcgQEAgQ09OU09MRSBNRVNTQUdFOiBsaW5lIDE1OiBbb2JqZWN0IE5vZGVM
aQogQ09OU09MRSBNRVNTQUdFOiBsaW5lIDE5OiBbb2JqZWN0IEhUTUxDb2xsZWN0aW9uXQogQ09O
U09MRSBNRVNTQUdFOiBsaW5lIDIzOiBbb2JqZWN0IEhUTUxPcHRpb25zQ29sbGVjdGlvbl0KIENP
TlNPTEUgTUVTU0FHRTogbGluZSAyNzogW29iamVjdCBIVE1MQWxsQ29sbGVjdGlvbl0KLUNPTlNP
TEUgTUVTU0FHRTogbGluZSAzMTogW29iamVjdCBIVE1MQ29sbGVjdGlvbl0KK0NPTlNPTEUgTUVT
U0FHRTogbGluZSAzMTogW29iamVjdCBIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbl0KIENPTlNP
TEUgTUVTU0FHRTogbGluZSAzNTogW29iamVjdCBOb2RlTGlzdF0KIENPTlNPTEUgTUVTU0FHRTog
bGluZSA0MTogMSwyLAogQ09OU09MRSBNRVNTQUdFOiBsaW5lIDQ0OiBbb2JqZWN0IE9iamVjdF0K
QEAgLTExLDcgKzExLDcgQEAgQ09OU09MRSBNRVNTQUdFOiBsaW5lIDE1OiBbb2JqZWN0IE5vZGVM
aQogQ09OU09MRSBNRVNTQUdFOiBsaW5lIDE5OiBbb2JqZWN0IEhUTUxDb2xsZWN0aW9uXQogQ09O
U09MRSBNRVNTQUdFOiBsaW5lIDIzOiBbb2JqZWN0IEhUTUxPcHRpb25zQ29sbGVjdGlvbl0KIENP
TlNPTEUgTUVTU0FHRTogbGluZSAyNzogW29iamVjdCBIVE1MQWxsQ29sbGVjdGlvbl0KLUNPTlNP
TEUgTUVTU0FHRTogbGluZSAzMTogW29iamVjdCBIVE1MQ29sbGVjdGlvbl0KK0NPTlNPTEUgTUVT
U0FHRTogbGluZSAzMTogW29iamVjdCBIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbl0KIENPTlNP
TEUgTUVTU0FHRTogbGluZSAzNTogW29iamVjdCBOb2RlTGlzdF0KIENPTlNPTEUgTUVTU0FHRTog
bGluZSA0MTogMSwyLAogQ09OU09MRSBNRVNTQUdFOiBsaW5lIDQ0OiBbb2JqZWN0IE9iamVjdF0K
QEAgLTIyLDE2ICsyMiwxNiBAQCBOb2RlTGlzdFsxXSBjb25zb2xlLWZvcm1hdC1jb2xsZWN0aW9u
cy5oCiBIVE1MQ29sbGVjdGlvblszXSBjb25zb2xlLWZvcm1hdC1jb2xsZWN0aW9ucy5odG1sOjE5
CiBIVE1MT3B0aW9uc0NvbGxlY3Rpb25bMl0gY29uc29sZS1mb3JtYXQtY29sbGVjdGlvbnMuaHRt
bDoyMwogSFRNTEFsbENvbGxlY3Rpb25bMTRdIGNvbnNvbGUtZm9ybWF0LWNvbGxlY3Rpb25zLmh0
bWw6MjcKLUhUTUxDb2xsZWN0aW9uWzNdIGNvbnNvbGUtZm9ybWF0LWNvbGxlY3Rpb25zLmh0bWw6
MzEKK0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uWzNdIGNvbnNvbGUtZm9ybWF0LWNvbGxlY3Rp
b25zLmh0bWw6MzEKIE5vZGVMaXN0WzJdIGNvbnNvbGUtZm9ybWF0LWNvbGxlY3Rpb25zLmh0bWw6
MzUKIEFycmF5WzJdIGNvbnNvbGUtZm9ybWF0LWNvbGxlY3Rpb25zLmh0bWw6NDEKIE5vbkFycmF5
V2l0aExlbmd0aCBjb25zb2xlLWZvcm1hdC1jb2xsZWN0aW9ucy5odG1sOjQ0CiBBcmd1bWVudHNb
Ml0gY29uc29sZS1mb3JtYXQtY29sbGVjdGlvbnMuaHRtbDo1MQogWzxzZWxlY3Q+LCBpdGVtOiBm
dW5jdGlvbl0gY29uc29sZS1mb3JtYXQtY29sbGVjdGlvbnMuaHRtbDoxNQogWzxzY3JpcHQ+LCA8
c2NyaXB0PiwgPHNjcmlwdD4sIGl0ZW06IGZ1bmN0aW9uLCBuYW1lZEl0ZW06IGZ1bmN0aW9uXSBj
b25zb2xlLWZvcm1hdC1jb2xsZWN0aW9ucy5odG1sOjE5Ci1bPG9wdGlvbj4sIDxvcHRpb24+LCBz
ZWxlY3RlZEluZGV4OiAwLCByZW1vdmU6IGZ1bmN0aW9uLCBhZGQ6IGZ1bmN0aW9uLCBpdGVtOiBm
dW5jdGlvbiwgbmFtZWRJdGVtOiBmdW5jdGlvbl0gY29uc29sZS1mb3JtYXQtY29sbGVjdGlvbnMu
aHRtbDoyMworWzxvcHRpb24+LCA8b3B0aW9uPiwgc2VsZWN0ZWRJbmRleDogMCwgcmVtb3ZlOiBm
dW5jdGlvbiwgbmFtZWRJdGVtOiBmdW5jdGlvbiwgYWRkOiBmdW5jdGlvbiwgaXRlbTogZnVuY3Rp
b24sIG5hbWVkSXRlbTogZnVuY3Rpb25dIGNvbnNvbGUtZm9ybWF0LWNvbGxlY3Rpb25zLmh0bWw6
MjMKIFs8aHRtbD4sIDxoZWFkPiwgPHNjcmlwdD4sIDxzY3JpcHQ+LCA8c2NyaXB0PiwgPGJvZHk+
LCA8cD4sIDxkaXY+LCA8Zm9ybT4sIDxzZWxlY3Q+LCA8b3B0aW9uPiwgPG9wdGlvbj4sIDxpbnB1
dD4sIDxpbnB1dD4sIG5hbWVkSXRlbTogZnVuY3Rpb24sIHRhZ3M6IGZ1bmN0aW9uLCBpdGVtOiBm
dW5jdGlvbl0gY29uc29sZS1mb3JtYXQtY29sbGVjdGlvbnMuaHRtbDoyNwotWzxzZWxlY3Q+LCA8
aW5wdXQ+LCA8aW5wdXQ+LCBpdGVtOiBmdW5jdGlvbiwgbmFtZWRJdGVtOiBmdW5jdGlvbl0gY29u
c29sZS1mb3JtYXQtY29sbGVjdGlvbnMuaHRtbDozMQorWzxzZWxlY3Q+LCA8aW5wdXQ+LCA8aW5w
dXQ+LCBuYW1lZEl0ZW06IGZ1bmN0aW9uLCBpdGVtOiBmdW5jdGlvbiwgbmFtZWRJdGVtOiBmdW5j
dGlvbl0gY29uc29sZS1mb3JtYXQtY29sbGVjdGlvbnMuaHRtbDozMQogWzxpbnB1dD4sIDxpbnB1
dD4sIGl0ZW06IGZ1bmN0aW9uXSBjb25zb2xlLWZvcm1hdC1jb2xsZWN0aW9ucy5odG1sOjM1CiBb
MSwgQXJyYXlbMl1dIGNvbnNvbGUtZm9ybWF0LWNvbGxlY3Rpb25zLmh0bWw6NDEKIE5vbkFycmF5
V2l0aExlbmd0aCB7a2V5czogQXJyYXlbMF19IGNvbnNvbGUtZm9ybWF0LWNvbGxlY3Rpb25zLmh0
bWw6NDQKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZG9tL2djLTkt
ZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVt
L2Zhc3QvZG9tL2djLTktZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAxMzUwMzgpCisrKyBMYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2RvbS9nYy05LWV4cGVjdGVkLnR4dAkod29ya2lu
ZyBjb3B5KQpAQCAtNDksNyArNDksNyBAQCBQQVNTOiBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgnYm9kCiBGQUlMOiBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnY2FudmFzJylb
MF0uZ2V0Q29udGV4dCgnMmQnKS5teUN1c3RvbVByb3BlcnR5IHNob3VsZCBiZSAxIGJ1dCBpbnN0
ZWFkIGlzIHVuZGVmaW5lZC4KIFBBU1M6IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdj
YW52YXMnKVswXS5nZXRDb250ZXh0KCcyZCcpLmNyZWF0ZUxpbmVhckdyYWRpZW50KDAsIDAsIDAs
IDApLm15Q3VzdG9tUHJvcGVydHkgc2hvdWxkIGJlIHVuZGVmaW5lZCBhbmQgaXMuCiBQQVNTOiBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnY2FudmFzJylbMF0uZ2V0Q29udGV4dCgnMmQn
KS5jcmVhdGVQYXR0ZXJuKG5ldyBJbWFnZSgpLCAnbm8tcmVwZWF0JykubXlDdXN0b21Qcm9wZXJ0
eSBzaG91bGQgYmUgdW5kZWZpbmVkIGFuZCBpcy4KLUZBSUw6IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCdzZWxlY3QnKVswXS5vcHRpb25zLm15Q3VzdG9tUHJvcGVydHkgc2hvdWxkIGJl
IDEgYnV0IGluc3RlYWQgaXMgdW5kZWZpbmVkLgorUEFTUzogZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoJ3NlbGVjdCcpWzBdLm9wdGlvbnMubXlDdXN0b21Qcm9wZXJ0eSBzaG91bGQgYmUg
MSBhbmQgaXMuCiBQQVNTOiBkb2N1bWVudC5ib2R5LmNoaWxkTm9kZXMubXlDdXN0b21Qcm9wZXJ0
eSBzaG91bGQgYmUgMSBhbmQgaXMuCiBQQVNTOiBkb2N1bWVudC5hbGwubXlDdXN0b21Qcm9wZXJ0
eSBzaG91bGQgYmUgMSBhbmQgaXMuCiBQQVNTOiBkb2N1bWVudC5pbWFnZXMubXlDdXN0b21Qcm9w
ZXJ0eSBzaG91bGQgYmUgMSBhbmQgaXMuCg==
</data>
<flag name="review"
          id="190025"
          type_id="1"
          status="+"
          setter="darin"
    />
    <flag name="commit-queue"
          id="190029"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
      

    </bug>

</bugzilla>