<?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>80897</bug_id>
          
          <creation_ts>2012-03-12 15:12:58 -0700</creation_ts>
          <short_desc>move calc*Value functions out from Length (and platform)</short_desc>
          <delta_ts>2012-03-20 22:42:50 -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>CSS</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>27160</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Joe Thomas">joethomas</reporter>
          <assigned_to name="Joe Thomas">joethomas</assigned_to>
          <cc>cc-bugs</cc>
    
    <cc>jamesr</cc>
    
    <cc>joethomas</cc>
    
    <cc>kling</cc>
    
    <cc>koivisto</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>mikelawther</cc>
    
    <cc>rakuco</cc>
    
    <cc>shanestephens</cc>
    
    <cc>tkent</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>576594</commentid>
    <comment_count>0</comment_count>
    <who name="Joe Thomas">joethomas</who>
    <bug_when>2012-03-12 15:12:58 -0700</bug_when>
    <thetext>This refactoring is basically to avoid the use of virtual interface. Otherwise virtual interface has to be added for avoiding the layering violation.

Relevant Discussion: https://bugs.webkit.org/show_bug.cgi?id=27160#c68</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>576595</commentid>
    <comment_count>1</comment_count>
    <who name="Joe Thomas">joethomas</who>
    <bug_when>2012-03-12 15:14:04 -0700</bug_when>
    <thetext>Patch forthcoming</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>578227</commentid>
    <comment_count>2</comment_count>
      <attachid>131803</attachid>
    <who name="Joe Thomas">joethomas</who>
    <bug_when>2012-03-14 01:06:25 -0700</bug_when>
    <thetext>Created attachment 131803
ProposedPatch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>578506</commentid>
    <comment_count>3</comment_count>
      <attachid>131803</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2012-03-14 09:54:09 -0700</bug_when>
    <thetext>Comment on attachment 131803
ProposedPatch

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

Looks generally good, a few comments.

&gt; Source/WebCore/css/LengthFunctions.h:3
&gt; +/*
&gt; + * Copyright (c) 2012 Motorola Mobility, Inc. All rights reserved.
&gt; + *

Since this is copy code you should maintain the original license and copyrights from Length.h and just add a new (c) line.

&gt; Source/WebCore/css/LengthFunctions.h:36
&gt; +int calculateValue(Length, int maxValue, bool roundPercentages = false);
&gt; +int calculateMinValue(Length, int maxValue, bool roundPercentages = false);
&gt; +float calculateFloatValue(Length, float maxValue);
&gt; +float calculateFloatValue(Length, int maxValue);

It would be better to put everything to header as the current implementations are inlined in Length.h. Making them regular functions might not affect performance but it would be safer to do that change separately.

Less generic names would be nice though I don&apos;t have good suggestions.

calculateMinValue, minValue, maxValue should be renamed with &quot;minimum&quot; and &quot;maximum&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>579130</commentid>
    <comment_count>4</comment_count>
      <attachid>131986</attachid>
    <who name="Joe Thomas">joethomas</who>
    <bug_when>2012-03-14 22:16:16 -0700</bug_when>
    <thetext>Created attachment 131986
Patch-updated

While sorting Xcode Project file after adding LengthFunctions.h using sort-Xcode-project-file script, it also sorted some of the previously misplaced entries and they are included in this patch. Should I create a separate patch for that?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>579132</commentid>
    <comment_count>5</comment_count>
    <who name="Joe Thomas">joethomas</who>
    <bug_when>2012-03-14 22:17:49 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 131803 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=131803&amp;action=review
&gt; 
&gt; Looks generally good, a few comments.
&gt; 
&gt; &gt; Source/WebCore/css/LengthFunctions.h:3
&gt; &gt; +/*
&gt; &gt; + * Copyright (c) 2012 Motorola Mobility, Inc. All rights reserved.
&gt; &gt; + *
&gt; 
&gt; Since this is copy code you should maintain the original license and copyrights from Length.h and just add a new (c) line.

Done.

&gt; 
&gt; &gt; Source/WebCore/css/LengthFunctions.h:36
&gt; &gt; +int calculateValue(Length, int maxValue, bool roundPercentages = false);
&gt; &gt; +int calculateMinValue(Length, int maxValue, bool roundPercentages = false);
&gt; &gt; +float calculateFloatValue(Length, float maxValue);
&gt; &gt; +float calculateFloatValue(Length, int maxValue);
&gt; 
&gt; It would be better to put everything to header as the current implementations are inlined in Length.h. Making them regular functions might not affect performance but it would be safer to do that change separately.
&gt;

Done.
 
&gt; Less generic names would be nice though I don&apos;t have good suggestions.
&gt; 
&gt; calculateMinValue, minValue, maxValue should be renamed with &quot;minimum&quot; and &quot;maximum&quot;

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>579252</commentid>
    <comment_count>6</comment_count>
      <attachid>131986</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2012-03-15 03:39:16 -0700</bug_when>
    <thetext>Comment on attachment 131986
Patch-updated

Looks good, r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>579332</commentid>
    <comment_count>7</comment_count>
    <who name="Joe Thomas">joethomas</who>
    <bug_when>2012-03-15 06:44:30 -0700</bug_when>
    <thetext>Can someone please help me to land the patch? Thanks</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>579760</commentid>
    <comment_count>8</comment_count>
    <who name="Joe Thomas">joethomas</who>
    <bug_when>2012-03-15 14:44:33 -0700</bug_when>
    <thetext>looks like commit-queue has stopped running. It is at commit #15 for last 6 hrs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>579841</commentid>
    <comment_count>9</comment_count>
    <who name="Luke Macpherson">macpherson</who>
    <bug_when>2012-03-15 16:01:26 -0700</bug_when>
    <thetext>Could you please address Antti&apos;s comment:
&quot;Less generic names would be nice though I don&apos;t have good suggestions.&quot; before committing this code?
These names are too generic to sit in the WebCore namespace in my opinion.

Ultimately I think that these functions belong in a new class eg. CSSLength, that has an instance of platform/Length used for storage.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>579855</commentid>
    <comment_count>10</comment_count>
      <attachid>131986</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2012-03-15 16:12:46 -0700</bug_when>
    <thetext>Comment on attachment 131986
Patch-updated

cq- per Luke&apos;s comment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>579867</commentid>
    <comment_count>11</comment_count>
    <who name="Joe Thomas">joethomas</who>
    <bug_when>2012-03-15 16:23:26 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; Could you please address Antti&apos;s comment:
&gt; &quot;Less generic names would be nice though I don&apos;t have good suggestions.&quot; before committing this code?
&gt; These names are too generic to sit in the WebCore namespace in my opinion.
&gt; 
&gt; Ultimately I think that these functions belong in a new class eg. CSSLength, that has an instance of platform/Length used for storage.

I could not think of any better names, so I just renamed &apos;min&apos; and &apos;max&apos; to &apos;minimum&apos; and &apos;maximum&apos; as per Antti&apos;s suggestion.

How about &apos;calculateLengthValue&apos; &amp; &apos;calculateLengthMinimumValue&apos; OR &apos;calculateCSSLengthValue&apos; &amp; &apos;calculateCSSLengthMinimumValue&apos;? I think it is getting too lengthy. 

Do you have any other better names?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>579886</commentid>
    <comment_count>12</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2012-03-15 16:40:28 -0700</bug_when>
    <thetext>It you look at the full function signature it is not a very generic at all (compare to operator== in global namespace). If you have suggestions please present them. 

Adding a pointless class is as suggested by Luke is clearly not a good option.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>579892</commentid>
    <comment_count>13</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2012-03-15 16:47:17 -0700</bug_when>
    <thetext>My &quot;generic name&quot; comment was about the fact that there is no indication what sort of value is being calculated. The current code has the same problem.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>579894</commentid>
    <comment_count>14</comment_count>
    <who name="Luke Macpherson">macpherson</who>
    <bug_when>2012-03-15 16:48:56 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; My &quot;generic name&quot; comment was about the fact that there is no indication what sort of value is being calculated. The current code has the same problem.

I&apos;m ok with calculateMinimumLength / calculateLength etc (the word &quot;value&quot; is almost meaningless here), but a better alternative might be to introduce a C++ namespace around these static functions, and then make the names even more generic.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>579899</commentid>
    <comment_count>15</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2012-03-15 16:53:40 -0700</bug_when>
    <thetext>I would suggest we land this as-is and bikeshed later. Hyatt ok&apos;d this already as well. Kling?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>579904</commentid>
    <comment_count>16</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2012-03-15 16:55:26 -0700</bug_when>
    <thetext>...unless someone actually has good name suggestions right now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>579934</commentid>
    <comment_count>17</comment_count>
    <who name="Luke Macpherson">macpherson</who>
    <bug_when>2012-03-15 17:17:32 -0700</bug_when>
    <thetext>(In reply to comment #16)
&gt; ...unless someone actually has good name suggestions right now.

Suggestions already provided. See comment #14.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>580884</commentid>
    <comment_count>18</comment_count>
      <attachid>131986</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2012-03-16 13:31:24 -0700</bug_when>
    <thetext>Comment on attachment 131986
Patch-updated

Sure, let&apos;s bikeshed another day.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>580924</commentid>
    <comment_count>19</comment_count>
      <attachid>131986</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-16 13:55:54 -0700</bug_when>
    <thetext>Comment on attachment 131986
Patch-updated

Rejecting attachment 131986 from commit-queue.

Failed to run &quot;[&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;-...&quot; exit_code: 2

Last 500 characters of output:
enderStyle.h
patching file Source/WebCore/rendering/svg/RenderSVGRoot.cpp
patching file Source/WebCore/svg/SVGSVGElement.cpp
patching file Source/WebCore/svg/graphics/SVGImage.cpp
patching file Source/WebKit2/ChangeLog
Hunk #1 succeeded at 1 with fuzz 3.
patching file Source/WebKit2/WebProcess/WebCoreSupport/win/WebPopupMenuWin.cpp

Failed to run &quot;[u&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/svn-apply&apos;, u&apos;--force&apos;, u&apos;--reviewer&apos;, u&apos;Antti Koiv...&quot; exit_code: 1 cwd: /mnt/git/webkit-commit-queue/

Full output: http://queues.webkit.org/results/11966373</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>580937</commentid>
    <comment_count>20</comment_count>
    <who name="Joe Thomas">joethomas</who>
    <bug_when>2012-03-16 14:14:07 -0700</bug_when>
    <thetext>I think it is failed due to merge-conflict. I will do a rebase and submit the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>581243</commentid>
    <comment_count>21</comment_count>
      <attachid>132441</attachid>
    <who name="Joe Thomas">joethomas</who>
    <bug_when>2012-03-16 20:56:00 -0700</bug_when>
    <thetext>Created attachment 132441
Patch-Rebaselined

Patch updated to trunk.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>581259</commentid>
    <comment_count>22</comment_count>
    <who name="Joe Thomas">joethomas</who>
    <bug_when>2012-03-16 22:26:11 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; Created an attachment (id=131986) [details]
&gt; Patch-updated
&gt; 
&gt; While sorting Xcode Project file after adding LengthFunctions.h using sort-Xcode-project-file script, it also sorted some of the previously misplaced entries and they are included in this patch. Should I create a separate patch for that?

Bug 81439 is created to sort the previously misplaced entries in Xcode project</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>581311</commentid>
    <comment_count>23</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2012-03-17 05:08:47 -0700</bug_when>
    <thetext>Hmm, valueForLength(), miminumValueForLength(), floatValueForLength() might be better names. They drop the superfluous &quot;calculate&quot; in favor of mentioning the type operated on. What do you think?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>581322</commentid>
    <comment_count>24</comment_count>
    <who name="Joe Thomas">joethomas</who>
    <bug_when>2012-03-17 08:23:11 -0700</bug_when>
    <thetext>(In reply to comment #23)
&gt; Hmm, valueForLength(), miminumValueForLength(), floatValueForLength() might be better names. They drop the superfluous &quot;calculate&quot; in favor of mentioning the type operated on. What do you think?

Thanks for the suggestion. These names are definitely better. I will create another patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>581328</commentid>
    <comment_count>25</comment_count>
      <attachid>132462</attachid>
    <who name="Joe Thomas">joethomas</who>
    <bug_when>2012-03-17 08:44:15 -0700</bug_when>
    <thetext>Created attachment 132462
Patch

Functions renamed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>581352</commentid>
    <comment_count>26</comment_count>
      <attachid>132462</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2012-03-17 12:18:01 -0700</bug_when>
    <thetext>Comment on attachment 132462
Patch

r=me, thanks</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>581359</commentid>
    <comment_count>27</comment_count>
      <attachid>132462</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-17 12:54:25 -0700</bug_when>
    <thetext>Comment on attachment 132462
Patch

Clearing flags on attachment: 132462

Committed r111126: &lt;http://trac.webkit.org/changeset/111126&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>581360</commentid>
    <comment_count>28</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-17 12:54:32 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>583826</commentid>
    <comment_count>29</comment_count>
    <who name="Joe Thomas">joethomas</who>
    <bug_when>2012-03-20 22:42:50 -0700</bug_when>
    <thetext>(In reply to comment #3)

&gt; 
&gt; &gt; Source/WebCore/css/LengthFunctions.h:36
&gt; &gt; +int calculateValue(Length, int maxValue, bool roundPercentages = false);
&gt; &gt; +int calculateMinValue(Length, int maxValue, bool roundPercentages = false);
&gt; &gt; +float calculateFloatValue(Length, float maxValue);
&gt; &gt; +float calculateFloatValue(Length, int maxValue);
&gt; 
&gt; It would be better to put everything to header as the current implementations are inlined in Length.h. Making them regular functions might not affect performance but it would be safer to do that change separately.
&gt; 

Bug 81733 is created to make these functions regular.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>131803</attachid>
            <date>2012-03-14 01:06:25 -0700</date>
            <delta_ts>2012-03-14 22:16:16 -0700</delta_ts>
            <desc>ProposedPatch</desc>
            <filename>patch1</filename>
            <type>text/plain</type>
            <size>129912</size>
            <attacher name="Joe Thomas">joethomas</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDExMDY2MikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0OSBAQAorMjAxMi0wMy0xMyAgSm9lIFRo
b21hcyAgPGpvZXRob21hc0Btb3Rvcm9sYS5jb20+CisKKyAgICAgICAgbW92ZSBjYWxjKlZhbHVl
IGZ1bmN0aW9ucyBvdXQgZnJvbSBMZW5ndGggKGFuZCBwbGF0Zm9ybSkKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgwODk3CisKKyAgICAgICAgTW92aW5n
IHRoZSBMZW5ndGggY2FsYypWYWx1ZSBmdW5jdGlvbnMgb3V0IGZyb20gTGVuZ3RoIHN0cnVjdHVy
ZSBhbmQgYWxzbyBmcm9tIC9XZWJDb3JlL3BsYXRmb3JtLyBmb2xkZXIuCisgICAgICAgIFRoaXMg
aGVscHMgdG8gYXZvaWQgdGhlIGxheWVyaW5nIHZpb2xhdGlvbiB3aGlsZSBsZW5ndGggY2FsY3Vs
YXRpb24uIE90aGVyd2lzZSBsYXllciB2aW9sYXRpb24gY2FuIGJlIGF2b2lkZWQgb25seSBieSBh
ZGRpbmcgYSB2aXJ0dWFsIGludGVyZmFjZShidWcgMjcxNjApLgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6IEJ1aWxkIHN5
c3RlbSBjaGFuZ2VzIGZvciBhZGRpbmcgbmV3IGZpbGVzLgorICAgICAgICAqIEdOVW1ha2VmaWxl
Lmxpc3QuYW06IERpdHRvLgorICAgICAgICAqIFRhcmdldC5wcmk6IERpdHRvLgorICAgICAgICAq
IFdlYkNvcmUuZ3lwaTogRGl0dG8uCisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52
Y3Byb2o6IERpdHRvLgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ajogRGl0dG8uCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9ndGsvV2ViS2l0QWNjZXNzaWJsZUlu
dGVyZmFjZVRleHQuY3BwOgorICAgICAgICAoZ2V0QXR0cmlidXRlU2V0Rm9yQWNjZXNzaWJpbGl0
eU9iamVjdCk6CisgICAgICAgICogY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246OmdldFByb3Bl
cnR5Q1NTVmFsdWUpOgorICAgICAgICAqIGNzcy9MZW5ndGhGdW5jdGlvbnMuY3BwOiBBZGRlZC4g
QWRkZWQgY2FsYypWYWx1ZSBmdW5jdGlvbnMgb2YgTGVuZ3RoLiAKKyAgICAgICAgKFdlYkNvcmUp
OgorICAgICAgICAoV2ViQ29yZTo6Y2FsY3VsYXRlVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6
Y2FsY3VsYXRlTWluVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6Y2FsY3VsYXRlRmxvYXRWYWx1
ZSk6CisgICAgICAgICogY3NzL0xlbmd0aEZ1bmN0aW9ucy5oOiBBZGRlZC4KKyAgICAgICAgKFdl
YkNvcmUpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpE
b2N1bWVudDo6cGFnZVNpemVBbmRNYXJnaW5zSW5QaXhlbHMpOgorICAgICAgICAqIGh0bWwvSFRN
TEFyZWFFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxBcmVhRWxlbWVudDo6Z2V0
UmVnaW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9DYWxjdWxhdGlvblZhbHVlLmg6CisgICAgICAg
IChXZWJDb3JlOjpDYWxjRXhwcmVzc2lvbkxlbmd0aDo6ZXZhbHVhdGUpOgorICAgICAgICAqIHBs
YXRmb3JtL0xlbmd0aC5oOiBSZW1vdmVkIHRoZSBjYWxjKlZhbHVlIGZ1bmN0aW9ucyBmcm9tIExl
bmd0aCBzdHJ1Y3R1cmUuCisgICAgICAgIChMZW5ndGgpOgorICAgICAgICAoV2ViQ29yZTo6TGVu
Z3RoOjpnZXRGbG9hdFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6Okxlbmd0aDo6Z2V0SW50VmFs
dWUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL21hYy9QbGF0Zm9ybUNBQW5pbWF0
aW9uTWFjLm1tOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL21hYy9QbGF0Zm9ybUNB
TGF5ZXJNYWMubW06CisgICAgICAgIChQbGF0Zm9ybUNBTGF5ZXI6OnNldEZpbHRlcnMpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyU3VyZmFjZUZpbHRl
cnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NSZW5kZXJTdXJmYWNlRmlsdGVyczo6YXBwbHkp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9ucy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJPcGVyYXRpb25zOjpnZXRPdXRzZXRzKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1BlcnNwZWN0aXZlVHJhbnNmb3Jt
T3BlcmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBlcnNwZWN0aXZlVHJhbnNmb3JtT3Bl
cmF0aW9uOjpibGVuZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9Q
ZXJzcGVjdGl2ZVRyYW5zZm9ybU9wZXJhdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6UGVyc3Bl
Y3RpdmVUcmFuc2Zvcm1PcGVyYXRpb246OmlzSWRlbnRpdHkpOgorICAgICAgICAoV2ViQ29yZTo6
UGVyc3BlY3RpdmVUcmFuc2Zvcm1PcGVyYXRpb246OmFwcGx5KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zbGF0ZVRyYW5zZm9ybU9wZXJhdGlvbi5oOgorICAg
ICAgICAoV2ViQ29yZTo6VHJhbnNsYXRlVHJhbnNmb3JtT3BlcmF0aW9uOjp4KToKKyAgICAgICAg
KFdlYkNvcmU6OlRyYW5zbGF0ZVRyYW5zZm9ybU9wZXJhdGlvbjo6eSk6CisgICAgICAgIChXZWJD
b3JlOjpUcmFuc2xhdGVUcmFuc2Zvcm1PcGVyYXRpb246OnopOgorICAgICAgICAoV2ViQ29yZTo6
VHJhbnNsYXRlVHJhbnNmb3JtT3BlcmF0aW9uOjppc0lkZW50aXR5KToKKyAgICAgICAgKiBwbGF0
Zm9ybS93aW4vUG9wdXBNZW51V2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBvcHVwTWVudVdp
bjo6cGFpbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9BdXRvVGFibGVMYXlvdXQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6QXV0b1RhYmxlTGF5b3V0OjpsYXlvdXQpOgorICAgICAgICAqIHJlbmRl
cmluZy9GaWx0ZXJFZmZlY3RSZW5kZXJlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJF
ZmZlY3RSZW5kZXJlcjo6YnVpbGQpOgorICAgICAgICAqIHJlbmRlcmluZy9GaXhlZFRhYmxlTGF5
b3V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZpeGVkVGFibGVMYXlvdXQ6OmxheW91dCk6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckJsb2NrOjp0ZXh0SW5kZW50T2Zmc2V0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJs
b2NrOjpjb21wdXRlSW5saW5lUHJlZmVycmVkTG9naWNhbFdpZHRocyk6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlckJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OnJlZmxl
Y3Rpb25PZmZzZXQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94OjpjbGlwUmVjdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OmNvbXB1dGVMb2dpY2FsV2lkdGhJblJlZ2lvbik6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OmNvbXB1dGVMb2dpY2FsV2lkdGhJblJlZ2lv
blVzaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6Y29tcHV0ZUlubGluZURpcmVj
dGlvbk1hcmdpbnMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94Ojpjb21wdXRlUGVyY2Vu
dGFnZUxvZ2ljYWxIZWlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94Ojpjb21wdXRl
UmVwbGFjZWRMb2dpY2FsV2lkdGhVc2luZyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6
OmNvbXB1dGVSZXBsYWNlZExvZ2ljYWxIZWlnaHRVc2luZyk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJCb3g6OmF2YWlsYWJsZUxvZ2ljYWxIZWlnaHRVc2luZyk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJCb3g6OmNvbXB1dGVCbG9ja0RpcmVjdGlvbk1hcmdpbnMpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyQm94Ojpjb21wdXRlUG9zaXRpb25lZExvZ2ljYWxXaWR0aFVzaW5nKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6Y29tcHV0ZVBvc2l0aW9uZWRMb2dpY2FsSGVpZ2h0
VXNpbmcpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94Ojpjb21wdXRlUG9zaXRpb25lZExv
Z2ljYWxXaWR0aFJlcGxhY2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6Y29tcHV0
ZVBvc2l0aW9uZWRMb2dpY2FsSGVpZ2h0UmVwbGFjZWQpOgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJCb3hNb2RlbE9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hNb2Rl
bE9iamVjdDo6cmVsYXRpdmVQb3NpdGlvbk9mZnNldFgpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyQm94TW9kZWxPYmplY3Q6OnJlbGF0aXZlUG9zaXRpb25PZmZzZXRZKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWRkaW5nVG9wKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWRkaW5nQm90dG9tKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWRkaW5nTGVmdCk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFkZGluZ1JpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWRkaW5nQmVmb3JlKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWRkaW5nQWZ0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhZGRpbmdTdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFkZGluZ0VuZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJCb3hNb2RlbE9iamVjdDo6Y2FsY3VsYXRlRmlsbFRpbGVTaXplKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckJveE1vZGVsT2JqZWN0OjpjYWxjdWxhdGVCYWNrZ3JvdW5kSW1hZ2VHZW9tZXRy
eSk6CisgICAgICAgIChXZWJDb3JlOjpjb21wdXRlQm9yZGVySW1hZ2VTaWRlKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludE5pbmVQaWVjZUltYWdlKToKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3guY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyRmxleGlibGVCb3g6OnByZWZlcnJlZE1haW5BeGlzQ29udGVudEV4dGVudEZvckNo
aWxkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZsZXhpYmxlQm94Ojpjb21wdXRlTWFpbkF4
aXNQcmVmZXJyZWRTaXplcyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGbGV4aWJsZUJveDo6
cnVuRnJlZVNwYWNlQWxsb2NhdGlvbkFsZ29yaXRobSk6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlckZyYW1lU2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZyYW1lU2V0OjpsYXlP
dXRBeGlzKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmNvbXB1dGVNYXJnaW4pOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXll
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6cGVyc3BlY3RpdmVUcmFuc2Zv
cm0pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnBlcnNwZWN0aXZlT3JpZ2luKToK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckxheWVyQmFja2luZzo6Y29tcHV0ZVRyYW5zZm9ybU9yaWdpbik6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckJhY2tpbmc6OmNvbXB1dGVQZXJzcGVjdGl2ZU9yaWdp
bik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck1hcnF1ZWUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyTWFycXVlZTo6dGltZXJGaXJlZCk6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlck1lbnVMaXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1lbnVMaXN0Ojp1cGRh
dGVPcHRpb25zV2lkdGgpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0OjpyZXBhaW50QWZ0ZXJMYXlvdXRJZk5lZWRl
ZCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclJlcGxhY2VkOjpjb21wdXRlUmVwbGFjZWRMb2dpY2FsV2lkdGgpOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXJQYXJ0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmNhbGNTY3JvbGxiYXJUaGlja25lc3NVc2luZyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJTY3JvbGxiYXJQYXJ0Ojpjb21wdXRlU2Nyb2xsYmFyV2lkdGgpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyU2Nyb2xsYmFyUGFydDo6Y29tcHV0ZVNjcm9sbGJhckhlaWdodCk6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlclRhYmxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRh
YmxlOjpjb21wdXRlTG9naWNhbFdpZHRoKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRhYmxl
Ojpjb252ZXJ0U3R5bGVMb2dpY2FsV2lkdGhUb0NvbXB1dGVkV2lkdGgpOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGFi
bGVDZWxsOjpsb2dpY2FsSGVpZ2h0Rm9yUm93U2l6aW5nKToKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyVGFibGVTZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRhYmxlU2Vj
dGlvbjo6Y2FsY1Jvd0xvZ2ljYWxIZWlnaHQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJU
ZXh0Lmg6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0OjptYXJnaW5MZWZ0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclRleHQ6Om1hcmdpblJpZ2h0KToKKyAgICAgICAgKiByZW5kZXJp
bmcvUm9vdElubGluZUJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSb290SW5saW5lQm94Ojp2
ZXJ0aWNhbFBvc2l0aW9uRm9yQm94KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvUmVuZGVy
U3R5bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmFwcGx5VHJhbnNmb3Jt
KToKKyAgICAgICAgKFdlYkNvcmU6OmNhbGNSYWRpaUZvcik6CisgICAgICAgICogcmVuZGVyaW5n
L3N0eWxlL1JlbmRlclN0eWxlLmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdS
b290LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jvb3Q6OmNvbXB1dGVJbnRyaW5z
aWNSYXRpb0luZm9ybWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OnJlc29sdmVMZW5ndGhBdHRy
aWJ1dGVGb3JTVkcpOgorICAgICAgICAqIHN2Zy9TVkdTVkdFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNWR1NWR0VsZW1lbnQ6OmN1cnJlbnRWaWV3Qm94UmVjdCk6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdTVkdFbGVtZW50OjpjdXJyZW50Vmlld3BvcnRTaXplKToKKyAgICAgICAgKiBz
dmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW1hZ2U6OmNv
bXB1dGVJbnRyaW5zaWNEaW1lbnNpb25zKToKKwogMjAxMi0wMy0xMyAgTHVrZSBNYWNwaGVyc29u
ICAgPG1hY3BoZXJzb25AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIE1vdmUgb3BhY2l0eSBjbGFt
cGluZyBpbnRvIFJlbmRlclN0eWxlIHNldHRlci4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NNYWtl
TGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CShy
ZXZpc2lvbiAxMTA2NjIpCisrKyBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2lu
ZyBjb3B5KQpAQCAtNDk4LDYgKzQ5OCw3IEBAIFNFVChXZWJDb3JlX1NPVVJDRVMKICAgICBjc3Mv
Q1NTV3JhcFNoYXBlcy5jcHAKICAgICBjc3MvRm9udEZlYXR1cmVWYWx1ZS5jcHAKICAgICBjc3Mv
Rm9udFZhbHVlLmNwcAorICAgIGNzcy9MZW5ndGhGdW5jdGlvbnMuY3BwCiAgICAgY3NzL01lZGlh
RmVhdHVyZU5hbWVzLmNwcAogICAgIGNzcy9NZWRpYUxpc3QuY3BwCiAgICAgY3NzL01lZGlhUXVl
cnkuY3BwCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHJldmlzaW9uIDExMDY2
MikKKysrIFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHdvcmtpbmcgY29weSkK
QEAgLTE1NzksNiArMTU3OSw4IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNv
cmUvY3NzL0ZvbnRGZWF0dXJlVmFsdWUuaCBcCiAJU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRWYWx1
ZS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2Nzcy9Gb250VmFsdWUuaCBcCisJU291cmNlL1dlYkNv
cmUvY3NzL0xlbmd0aEZ1bmN0aW9ucy5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL2Nzcy9MZW5ndGhG
dW5jdGlvbnMuaCBcCiAJU291cmNlL1dlYkNvcmUvY3NzL01lZGlhRmVhdHVyZU5hbWVzLmNwcCBc
CiAJU291cmNlL1dlYkNvcmUvY3NzL01lZGlhRmVhdHVyZU5hbWVzLmggXAogCVNvdXJjZS9XZWJD
b3JlL2Nzcy9NZWRpYUxpc3QuY3BwIFwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQkocmV2aXNpb24gMTEwNjYy
KQorKysgU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQkod29ya2luZyBjb3B5KQpAQCAtNDUyLDYg
KzQ1Miw3IEBAIFNPVVJDRVMgKz0gXAogICAgIGNzcy9DU1NXcmFwU2hhcGVzLmNwcCBcCiAgICAg
Y3NzL0ZvbnRGZWF0dXJlVmFsdWUuY3BwIFwKICAgICBjc3MvRm9udFZhbHVlLmNwcCBcCisgICAg
Y3NzL0xlbmd0aEZ1bmN0aW9ucy5jcHAgXAogICAgIGNzcy9NZWRpYUZlYXR1cmVOYW1lcy5jcHAg
XAogICAgIGNzcy9NZWRpYUxpc3QuY3BwIFwKICAgICBjc3MvTWVkaWFRdWVyeS5jcHAgXApAQCAt
MTYwNSw2ICsxNjA2LDcgQEAgSEVBREVSUyArPSBcCiAgICAgY3NzL0NTU1dyYXBTaGFwZXMuaCBc
CiAgICAgY3NzL0ZvbnRGZWF0dXJlVmFsdWUuaCBcCiAgICAgY3NzL0ZvbnRWYWx1ZS5oIFwKKyAg
ICBjc3MvTGVuZ3RoRnVuY3Rpb25zLmggXAogICAgIGNzcy9NZWRpYUZlYXR1cmVOYW1lcy5oIFwK
ICAgICBjc3MvTWVkaWFMaXN0LmggXAogICAgIGNzcy9NZWRpYVF1ZXJ5LmggXApJbmRleDogU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dl
YkNvcmUuZ3lwaQkocmV2aXNpb24gMTEwNjYyKQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS5n
eXBpCSh3b3JraW5nIGNvcHkpCkBAIC04OSw2ICs4OSw3IEBACiAgICAgICAgICAgICAnY3NzL0NT
U1ZhbHVlLmgnLAogICAgICAgICAgICAgJ2Nzcy9DU1NWYWx1ZUxpc3QuaCcsCiAgICAgICAgICAg
ICAnY3NzL0NTU1dyYXBTaGFwZXMuaCcsCisgICAgICAgICAgICAnY3NzL0xlbmd0aEZ1bmN0aW9u
cy5oJywKICAgICAgICAgICAgICdjc3MvUGFpci5oJywKICAgICAgICAgICAgICdjc3MvV2ViS2l0
Q1NTRmlsdGVyVmFsdWUuaCcsCiAgICAgICAgICAgICAnY3NzL1dlYktpdENTU1NoYWRlclZhbHVl
LmgnLApAQCAtMjI3MCw2ICsyMjcxLDcgQEAKICAgICAgICAgICAgICdjc3MvRm9udEZlYXR1cmVW
YWx1ZS5oJywKICAgICAgICAgICAgICdjc3MvRm9udFZhbHVlLmNwcCcsCiAgICAgICAgICAgICAn
Y3NzL0ZvbnRWYWx1ZS5oJywKKyAgICAgICAgICAgICdjc3MvTGVuZ3RoRnVuY3Rpb25zLmNwcCcs
CiAgICAgICAgICAgICAnY3NzL01lZGlhRmVhdHVyZU5hbWVzLmNwcCcsCiAgICAgICAgICAgICAn
Y3NzL01lZGlhRmVhdHVyZU5hbWVzLmgnLAogICAgICAgICAgICAgJ2Nzcy9NZWRpYUxpc3QuY3Bw
JywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9q
CShyZXZpc2lvbiAxMTA2NjIpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJD
b3JlLnZjcHJvagkod29ya2luZyBjb3B5KQpAQCAtMzYyNzAsNiArMzYyNzAsMTQgQEAKIAkJCQk+
CiAJCQk8L0ZpbGU+CiAJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cY3NzXExlbmd0aEZ1
bmN0aW9ucy5jcHAiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBh
dGg9Ii4uXGNzc1xMZW5ndGhGdW5jdGlvbnMuaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8Rmls
ZQogCQkJCVJlbGF0aXZlUGF0aD0iLi5cY3NzXGh0bWwuY3NzIgogCQkJCT4KIAkJCTwvRmlsZT4K
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oJKHJldmlzaW9uIDExMDY2MikKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNTk1NCw2ICs1OTU0LDggQEAK
IAkJRTRDMjc5NTkwQ0Y5NzQxOTAwRTk3Qjk4IC8qIFJlbmRlck1lZGlhLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNEMyNzk1NzBDRjk3NDE5MDBFOTdC
OTggLyogUmVuZGVyTWVkaWEuaCAqLzsgfTsKIAkJRTRENjg3NzcwRUQ3QUUzRDAwNkVBOTc4IC8q
IFB1cmdlYWJsZUJ1ZmZlck1hYy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBFNEQ2ODc3NjBFRDdBRTNEMDA2RUE5NzggLyogUHVyZ2VhYmxlQnVmZmVy
TWFjLmNwcCAqLzsgfTsKIAkJRTRENjg3NzkwRUQ3QUU0RjAwNkVBOTc4IC8qIFB1cmdlYWJsZUJ1
ZmZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTRE
Njg3NzgwRUQ3QUU0RjAwNkVBOTc4IC8qIFB1cmdlYWJsZUJ1ZmZlci5oICovOyB9OworCQlFNTE0
Q0UxRTE1MTAwQjA5MDA2MDhEOEEgLyogTGVuZ3RoRnVuY3Rpb25zLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU1MTRDRTFEMTUxMDBCMDkwMDYwOEQ4
QSAvKiBMZW5ndGhGdW5jdGlvbnMuY3BwICovOyB9OworCQlFNTU5QkIxRTE1MEZFOTUyMDAyMEZG
OEUgLyogTGVuZ3RoRnVuY3Rpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBFNTU5QkIxRDE1MEZFOTUyMDAyMEZGOEUgLyogTGVuZ3RoRnVuY3Rpb25z
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRUQy
QkE4M0MwOUEyNEI5MTAwNkMwQUM0IC8qIERvY3VtZW50TWFya2VyLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFRDJCQTgzQjA5QTI0QjkxMDA2QzBBQzQg
LyogRG9jdW1lbnRNYXJrZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQlFRDUwMURDNjBCMjQ5RjI5MDBBRTE4RDkgLyogRWRpdG9yTWFjLm1tIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRUQ1MDFEQzUwQjI0
OUYyOTAwQUUxOEQ5IC8qIEVkaXRvck1hYy5tbSAqLzsgfTsKIAkJRURFM0E1MDAwQzdBNDMwNjAw
OTU2QTM3IC8qIENvbG9yTWFjLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBFREUzQTRGRjBDN0E0MzA2MDA5NTZBMzcgLyogQ29sb3JNYWMuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTMwNjIsNiArMTMw
NjQsOCBAQAogCQlFNEMyNzk1NzBDRjk3NDE5MDBFOTdCOTggLyogUmVuZGVyTWVkaWEuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVuZGVyTWVkaWEuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJRTRENjg3NzYwRUQ3QUUzRDAwNkVBOTc4IC8qIFB1cmdlYWJsZUJ1
ZmZlck1hYy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQdXJnZWFi
bGVCdWZmZXJNYWMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFNEQ2ODc3ODBF
RDdBRTRGMDA2RUE5NzggLyogUHVyZ2VhYmxlQnVmZmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFB1cmdlYWJsZUJ1ZmZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlFNTE0Q0UxRDE1MTAwQjA5MDA2MDhEOEEgLyogTGVuZ3RoRnVuY3Rpb25zLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IExlbmd0aEZ1bmN0aW9ucy5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUU1NTlCQjFEMTUwRkU5NTIwMDIwRkY4RSAvKiBM
ZW5ndGhGdW5jdGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTGVuZ3Ro
RnVuY3Rpb25zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUVEMkJBODNCMDlBMjRC
OTEwMDZDMEFDNCAvKiBEb2N1bWVudE1hcmtlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBEb2N1bWVudE1hcmtlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlF
RDUwMURDNTBCMjQ5RjI5MDBBRTE4RDkgLyogRWRpdG9yTWFjLm1tICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IEVkaXRvck1hYy5tbTsgcGF0aCA9IG1hYy9FZGl0b3JN
YWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUVERTNBNEZGMEM3QTQzMDYwMDk1
NkEzNyAvKiBDb2xvck1hYy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb2xv
ck1hYy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTM3MzUsMTIgKzEzNzM5LDEy
IEBACiAJCQkJNDM2NzA4QjExMkQ5Q0E0QjAwMDQ0MjM0IC8qIFNWR01hcmtlckxheW91dEluZm8u
aCAqLywKIAkJCQk3MTUzNzlGRTE0NkJEOUQ2MDA4QkQ2MTUgLyogU1ZHUGF0aERhdGEuY3BwICov
LAogCQkJCTcxNTM3OUZGMTQ2QkQ5RDYwMDhCRDYxNSAvKiBTVkdQYXRoRGF0YS5oICovLAorCQkJ
CTE5N0IxODBBMTUwNjM0QzAwMEU0QURBOCAvKiBTVkdSZW5kZXJpbmdDb250ZXh0LmNwcCAqLywK
KwkJCQkxOTdCMTgwQjE1MDYzNEMwMDBFNEFEQTggLyogU1ZHUmVuZGVyaW5nQ29udGV4dC5oICov
LAogCQkJCTQzNjcwOEIyMTJEOUNBNEIwMDA0NDIzNCAvKiBTVkdSZW5kZXJTdXBwb3J0LmNwcCAq
LywKIAkJCQk0MzY3MDhCMzEyRDlDQTRCMDAwNDQyMzQgLyogU1ZHUmVuZGVyU3VwcG9ydC5oICov
LAogCQkJCTQzNjcwOEI0MTJEOUNBNEIwMDA0NDIzNCAvKiBTVkdSZW5kZXJUcmVlQXNUZXh0LmNw
cCAqLywKIAkJCQk0MzY3MDhCNTEyRDlDQTRCMDAwNDQyMzQgLyogU1ZHUmVuZGVyVHJlZUFzVGV4
dC5oICovLAotCQkJCTE5N0IxODBBMTUwNjM0QzAwMEU0QURBOCAvKiBTVkdSZW5kZXJpbmdDb250
ZXh0LmNwcCAqLywKLQkJCQkxOTdCMTgwQjE1MDYzNEMwMDBFNEFEQTggLyogU1ZHUmVuZGVyaW5n
Q29udGV4dC5oICovLAogCQkJCTQzNjcwOEI2MTJEOUNBNEIwMDA0NDIzNCAvKiBTVkdSZXNvdXJj
ZXMuY3BwICovLAogCQkJCTQzNjcwOEI3MTJEOUNBNEIwMDA0NDIzNCAvKiBTVkdSZXNvdXJjZXMu
aCAqLywKIAkJCQk0MzY3MDhCODEyRDlDQTRCMDAwNDQyMzQgLyogU1ZHUmVzb3VyY2VzQ2FjaGUu
Y3BwICovLApAQCAtMTUwODQsOCArMTUwODgsNiBAQAogCQk2NTgyQTE0ODA5OTk5RDZDMDBCRUVC
NkQgLyogbWFjICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKLQkJ
CQlDRDEyN0RFQTE0RjMwOTc5MDBFODQ3NzkgLyogV2ViQ29yZUZ1bGxTY3JlZW5XaW5kb3cuaCAq
LywKLQkJCQlDRDEyN0RFQjE0RjMwOTc5MDBFODQ3NzkgLyogV2ViQ29yZUZ1bGxTY3JlZW5XaW5k
b3cubW0gKi8sCiAJCQkJNTFFMUVDQUQwQzkxQzU0NjAwREMyNTVCIC8qIEF1dG9kcmFpbmVkUG9v
bC5tbSAqLywKIAkJCQk2NUE2NDBGMDA1MzNCQjFGMDA4NUU3NzcgLyogQmxvY2tFeGNlcHRpb25z
LmggKi8sCiAJCQkJNjVGODA2OTcwNTREOUY4NjAwOEJGNzc2IC8qIEJsb2NrRXhjZXB0aW9ucy5t
bSAqLywKQEAgLTE1MTUwLDYgKzE1MTUyLDggQEAKIAkJCQlCQ0U2NTlFNTBFQTkyRkIyMDA3RTQ1
MzMgLyogVGhlbWVNYWMuaCAqLywKIAkJCQlCQ0U2NTlFODBFQTkyRkZBMDA3RTQ1MzMgLyogVGhl
bWVNYWMubW0gKi8sCiAJCQkJNTFERjZEN0YwQjkyQTE4RTAwQzJEQzg1IC8qIFRocmVhZENoZWNr
Lm1tICovLAorCQkJCUNEMTI3REVBMTRGMzA5NzkwMEU4NDc3OSAvKiBXZWJDb3JlRnVsbFNjcmVl
bldpbmRvdy5oICovLAorCQkJCUNEMTI3REVCMTRGMzA5NzkwMEU4NDc3OSAvKiBXZWJDb3JlRnVs
bFNjcmVlbldpbmRvdy5tbSAqLywKIAkJCQk5MzREOUJBNjBCOEMxMTc1MDA3QjQyQTkgLyogV2Vi
Q29yZU5TU3RyaW5nRXh0cmFzLmggKi8sCiAJCQkJOTM0RDlCQTQwQjhDMTE2QjAwN0I0MkE5IC8q
IFdlYkNvcmVOU1N0cmluZ0V4dHJhcy5tbSAqLywKIAkJCQlDNUI0QzI0QjE1MDkyMzZDMDBBNkVG
MzcgLyogV2ViQ29yZU5TVVJMRXh0cmFzLmggKi8sCkBAIC0yMDQ1OSw2ICsyMDQ2Myw4IEBACiAJ
CQkJQ0Q0RTBBRkExMUY3QkMyNzAwOUQzODExIC8qIGZ1bGxzY3JlZW4uY3NzICovLAogCQkJCUNE
QkQ5M0JBMTMzM0JENEIwMDI1NzBFMyAvKiBmdWxsc2NyZWVuUXVpY2tUaW1lLmNzcyAqLywKIAkJ
CQk5M0NBNEM5OTA5REY5M0ZBMDBERjg2NzcgLyogaHRtbC5jc3MgKi8sCisJCQkJRTUxNENFMUQx
NTEwMEIwOTAwNjA4RDhBIC8qIExlbmd0aEZ1bmN0aW9ucy5jcHAgKi8sCisJCQkJRTU1OUJCMUQx
NTBGRTk1MjAwMjBGRjhFIC8qIExlbmd0aEZ1bmN0aW9ucy5oICovLAogCQkJCTkzQ0E0QzlBMDlE
RjkzRkEwMERGODY3NyAvKiBtYWtlLWNzcy1maWxlLWFycmF5cy5wbCAqLywKIAkJCQk5M0NBNEM5
QjA5REY5M0ZBMDBERjg2NzcgLyogbWFrZXByb3AucGwgKi8sCiAJCQkJOTNDQTRDOUQwOURGOTNG
QTAwREY4Njc3IC8qIG1ha2V2YWx1ZXMucGwgKi8sCkBAIC0yMTQ2Niw2ICsyMTQ3Miw3IEBACiAJ
CQkJNTEyREQ4RjgwRDkxRTZBRjAwMEY4OUVFIC8qIEFyY2hpdmVSZXNvdXJjZUNvbGxlY3Rpb24u
aCBpbiBIZWFkZXJzICovLAogCQkJCUJDRkIyRjc3MDk3QTJFMUEwMEJBNzAzRCAvKiBBcmVuYS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJRkQ1Njg2Q0ExM0FDMTgwMjAwQjY5QzY4IC8qIEFzeW5jQXVk
aW9EZWNvZGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQlFMUNERTkyMjE1MDE5MTY5MDA4NjJDQzUg
LyogQXN5bmNGaWxlU3RyZWFtLmggaW4gSGVhZGVycyAqLywKIAkJCQk4OUQwOERBMDEyMjI4NDUx
MDAxMjQxREYgLyogQXN5bmNGaWxlU3lzdGVtLmggaW4gSGVhZGVycyAqLywKIAkJCQk4OUQwOERB
MTEyMjI4NDUxMDAxMjQxREYgLyogQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk5NzZENkM3NzEyMkI4QTNEMDAxRkQxRjcgLyogQXN5bmNGaWxlV3JpdGVyLmgg
aW4gSGVhZGVycyAqLywKQEAgLTIzNDQ2LDYgKzIzNDUzLDcgQEAKIAkJCQk2NTkzOTIzODA5QUU0
MzQ2MDAyQzUzMUYgLyogS1VSTC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNCRDIxQUIwRTQxN0FE
NDAwQTA3MEYyIC8qIEtVUkxIYXNoLmggaW4gSGVhZGVycyAqLywKIAkJCQkyNkE1MDM0RTE0RjA5
ODM2MDBBQTczMEQgLyogS1VSTFdURlVSTEltcGwuaCBpbiBIZWFkZXJzICovLAorCQkJCTQ1MENF
QkYxMTUwNzNCQkUwMDJCQjE0OSAvKiBMYWJlbGFibGVFbGVtZW50LmggaW4gSGVhZGVycyAqLywK
IAkJCQlBNDU2RkEyNzExQUQ0QTgzMDAyMEI0MjAgLyogTGFiZWxzTm9kZUxpc3QuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTg1RUM5QUZCMEE3MUEyQzYwMEVFRUFFRCAvKiBMYW5ndWFnZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMjkxN0I1NjIxNDczNDk2QzAwNTJDOUQwIC8qIExheWVyRmx1c2hTY2hl
ZHVsZXIuaCBpbiBIZWFkZXJzICovLApAQCAtMjM0NTYsNiArMjM0NjQsNyBAQAogCQkJCTUxMkRE
OEY1MEQ5MUU2QUYwMDBGODlFRSAvKiBMZWdhY3lXZWJBcmNoaXZlLmggaW4gSGVhZGVycyAqLywK
IAkJCQlCQ0U2NUJFQjBFQUNERjE2MDA3RTQ1MzMgLyogTGVuZ3RoLmggaW4gSGVhZGVycyAqLywK
IAkJCQlCQ0ZGNjQ5MTBFQUQxNUMyMDBDMUQ2RjcgLyogTGVuZ3RoQm94LmggaW4gSGVhZGVycyAq
LywKKwkJCQlFNTU5QkIxRTE1MEZFOTUyMDAyMEZGOEUgLyogTGVuZ3RoRnVuY3Rpb25zLmggaW4g
SGVhZGVycyAqLywKIAkJCQlCQ0ZGNjQ5MjBFQUQxNUMyMDBDMUQ2RjcgLyogTGVuZ3RoU2l6ZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJOENBREYyQTkxMzVDN0IzNjAwOUVGNDNGIC8qIExldmVsREJD
b21wYXJhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQk4Q0FERjJBQjEzNUM3QjM2MDA5RUY0M0Yg
LyogTGV2ZWxEQkRhdGFiYXNlLmggaW4gSGVhZGVycyAqLywKQEAgLTIzNTc4LDkgKzIzNTg3LDkg
QEAKIAkJCQlBOEVBN0VCRTBBMTk0NUQwMDBBOEVGNUYgLyogTm90YXRpb24uaCBpbiBIZWFkZXJz
ICovLAogCQkJCTMxMkMwQzQxMTQ2REM2Q0MwMDE2QzkxMSAvKiBOb3RpZmljYXRpb24uaCBpbiBI
ZWFkZXJzICovLAogCQkJCTMzOTBDQTU2MEZGQzE1N0IwMDkyMTk2MiAvKiBOb3RpZmljYXRpb25D
ZW50ZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTMzNTAzQzlBMTAxNzlBNzQwMDNCNDdFMSAvKiBO
b3RpZmljYXRpb25DbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTMzOTBDQTU4MEZGQzE1N0Iw
MDkyMTk2MiAvKiBOb3RpZmljYXRpb25Db250ZW50cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzEy
OENBNkIxNDczMzE2MzAwNzRDNzJBIC8qIE5vdGlmaWNhdGlvbkNvbnRyb2xsZXIuaCBpbiBIZWFk
ZXJzICovLAotCQkJCTMzNTAzQzlBMTAxNzlBNzQwMDNCNDdFMSAvKiBOb3RpZmljYXRpb25DbGll
bnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTk4RUIxRjk1MTMxM0ZFMDUwMEQwRTFFQSAvKiBOb3RJ
bXBsZW1lbnRlZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE1NjlEMEIwRDdFMkI4MjAwN0MzOTgz
IC8qIE5QX2pzb2JqZWN0LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTkyN0ZEMjE0MTZBMTVCMDAz
QTgzQzggLyogbnBhcGkuaCBpbiBIZWFkZXJzICovLApAQCAtMjQyNTUsMTIgKzI0MjY0LDEyIEBA
CiAJCQkJQjIyMjdBOUEwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR1JhZGlhbEdyYWRpZW50RWxlbWVu
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDhFREUxOUYxMkE1MEI4RTAwQjk1Nzk3IC8qIFNWR1Jl
Y3QuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3QTlFMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdS
ZWN0RWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMTk3QjE4MEMxNTA2MzUzMjAwRTRBREE4
IC8qIFNWR1JlbmRlcmluZ0NvbnRleHQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3QUEwMEQw
MEJGMjIwMDcxQjc4MiAvKiBTVkdSZW5kZXJpbmdJbnRlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUJDMjI3NDc5MEU4MzY2RTIwMEU3Rjk3NSAvKiBTVkdSZW5kZXJTdHlsZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQkMyMjc0N0IwRTgzNjZFMjAwRTdGOTc1IC8qIFNWR1JlbmRlclN0eWxlRGVmcy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNDM2NzA4RjIxMkQ5Q0E0QjAwMDQ0MjM0IC8qIFNWR1JlbmRl
clN1cHBvcnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTQzNjcwOEY0MTJEOUNBNEIwMDA0NDIzNCAv
KiBTVkdSZW5kZXJUcmVlQXNUZXh0LmggaW4gSGVhZGVycyAqLywKLQkJCQkxOTdCMTgwQzE1MDYz
NTMyMDBFNEFEQTggLyogU1ZHUmVuZGVyaW5nQ29udGV4dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NDM2NzA4RjYxMkQ5Q0E0QjAwMDQ0MjM0IC8qIFNWR1Jlc291cmNlcy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNDM2NzA4RjgxMkQ5Q0E0QjAwMDQ0MjM0IC8qIFNWR1Jlc291cmNlc0NhY2hlLmggaW4g
SGVhZGVycyAqLywKIAkJCQk0MzY3MDhGQTEyRDlDQTRCMDAwNDQyMzQgLyogU1ZHUmVzb3VyY2Vz
Q3ljbGVTb2x2ZXIuaCBpbiBIZWFkZXJzICovLApAQCAtMjQ0MjYsMTYgKzI0NDM1LDE3IEBACiAJ
CQkJRkQ3RjI5OTcxM0Q0QzBDQjAwQUQ5NTM1IC8qIFdhdmVTaGFwZXJQcm9jZXNzb3IuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTI5QTgxMjQ5MEZCQjlDQTkwMDUxMDI5MyAvKiBXZWJBY2Nlc3NpYmls
aXR5T2JqZWN0V3JhcHBlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTNGMTk5QTgwODI0NUU1OTAw
MUU5QUJDIC8qIFdlYkNvcmVGcmFtZVZpZXcuaCBpbiBIZWFkZXJzICovLAorCQkJCUNEMTI3REVF
MTRGMzA5ODQwMEU4NDc3OSAvKiBXZWJDb3JlRnVsbFNjcmVlbldpbmRvdy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQkM1M0Q5MTExMTQzMTBDQzAwMEQ4MTdFIC8qIFdlYkNvcmVKU0NsaWVudERhdGEu
aCBpbiBIZWFkZXJzICovLAogCQkJCTkzRjE5OUJCMDgyNDVFNTkwMDFFOUFCQyAvKiBXZWJDb3Jl
S2V5Ym9hcmRVSU1vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzNEQ5QkE3MEI4QzExNzUwMDdC
NDJBOSAvKiBXZWJDb3JlTlNTdHJpbmdFeHRyYXMuaCBpbiBIZWFkZXJzICovLAorCQkJCUM1QjRD
MjREMTUwOTIzNkMwMEE2RUYzNyAvKiBXZWJDb3JlTlNVUkxFeHRyYXMuaCBpbiBIZWFkZXJzICov
LAogCQkJCUREMDVGRTBEMEI4QkEzQzYwMDlBQ0RGRSAvKiBXZWJDb3JlT2JqQ0V4dHJhcy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJRURFQzk4MDMwQUVEN0UxNzAwNTkxMzdGIC8qIFdlYkNvcmVQcmVm
aXguaCBpbiBIZWFkZXJzICovLAogCQkJCTkzRUIxNjk3MDlGODgwQzAwMDkxRjhGRiAvKiBXZWJD
b3JlU3lzdGVtSW50ZXJmYWNlLmggaW4gSGVhZGVycyAqLywKIAkJCQkzN0Y4MThGRDBENjU3NjA2
MDA1RTFGMDUgLyogV2ViQ29yZVVSTFJlc3BvbnNlLmggaW4gSGVhZGVycyAqLywKIAkJCQk5M0Yx
OTlGMDA4MjQ1RTU5MDAxRTlBQkMgLyogV2ViQ29yZVZpZXcuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUJDNkRBREVGMEExOTVGREYwMEU1Q0QxNCAvKiBXZWJGb250Q2FjaGUuaCBpbiBIZWFkZXJzICov
LAotCQkJCUNEMTI3REVFMTRGMzA5ODQwMEU4NDc3OSAvKiBXZWJDb3JlRnVsbFNjcmVlbldpbmRv
dy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTdEMjBGNkQxMDdGNDM4QjAwQTgwMzkyIC8qIFdlYkdM
QWN0aXZlSW5mby5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDlDN0I5QzkxMDQyRDMyRjAwMDlENDQ3
IC8qIFdlYkdMQnVmZmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk2RTNGQUU4RjE0NzMzRkRCMDBF
NDIzMDYgLyogV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEMuaCBpbiBIZWFkZXJzICovLApAQCAt
MjQ1NzMsOSArMjQ1ODMsNiBAQAogCQkJCUUxQkU1MTJFMENGNkM1MTIwMDJFQTk1OSAvKiBYU0xU
VW5pY29kZVNvcnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTk3N0UyRTBGMTJGMEZDOUMwMEMxMzM3
OSAvKiBYU1NBdWRpdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRDUzNzM1MzEzN0I2NTE4MDAw
MDhEQ0UgLyogWmVyb1BvbGUuaCBpbiBIZWFkZXJzICovLAotCQkJCUUxQ0RFOTIyMTUwMTkxNjkw
MDg2MkNDNSAvKiBBc3luY0ZpbGVTdHJlYW0uaCBpbiBIZWFkZXJzICovLAotCQkJCTQ1MENFQkYx
MTUwNzNCQkUwMDJCQjE0OSAvKiBMYWJlbGFibGVFbGVtZW50LmggaW4gSGVhZGVycyAqLywKLQkJ
CQlDNUI0QzI0RDE1MDkyMzZDMDBBNkVGMzcgLyogV2ViQ29yZU5TVVJMRXh0cmFzLmggaW4gSGVh
ZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0g
MDsKIAkJfTsKQEAgLTI0NzAyLDYgKzI0NzA5LDcgQEAKIAkJCQk4NTEzNkM5QTBBRUQ2NjU5MDBG
OTBBM0QgLyogZWFzdFdlc3RSZXNpemVDdXJzb3IucG5nIGluIFJlc291cmNlcyAqLywKIAkJCQk4
NTEzNkM5QjBBRUQ2NjU5MDBGOTBBM0QgLyogaGVscEN1cnNvci5wbmcgaW4gUmVzb3VyY2VzICov
LAogCQkJCTkzMTUzQkU0MTQxOTVCMkEwMEZDRjVCRSAvKiBpbnB1dFNwZWVjaC5wbmcgaW4gUmVz
b3VyY2VzICovLAorCQkJCTJEOUYwRTEzMTRGRjFDQkYwMEJBMEZGNyAvKiBsaW5lYXJTUkdCLmlj
YyBpbiBSZXNvdXJjZXMgKi8sCiAJCQkJODUxMzZDOUMwQUVENjY1OTAwRjkwQTNEIC8qIGxpbmtD
dXJzb3IucG5nIGluIFJlc291cmNlcyAqLywKIAkJCQlCQ0FEMTgwQTEzMUM3QTBEMDA5OTA0MDYg
LyogTG9jYWxpemFibGUuc3RyaW5ncyBpbiBSZXNvdXJjZXMgKi8sCiAJCQkJMUNEQzE0MDUwREQz
OTM0QzAwNkVBQ0QzIC8qIGxvY2FsaXplZFN0cmluZ3MuanMgaW4gUmVzb3VyY2VzICovLApAQCAt
MjQ3MjcsNyArMjQ3MzUsNiBAQAogCQkJCTg1MTM2Q0E4MEFFRDY2NTkwMEY5MEEzRCAvKiB3ZXN0
UmVzaXplQ3Vyc29yLnBuZyBpbiBSZXNvdXJjZXMgKi8sCiAJCQkJMUFCMUFFN0EwQzA1MUZERTAw
MTM5RjRGIC8qIHpvb21JbkN1cnNvci5wbmcgaW4gUmVzb3VyY2VzICovLAogCQkJCTFBQjFBRTdC
MEMwNTFGREUwMDEzOUY0RiAvKiB6b29tT3V0Q3Vyc29yLnBuZyBpbiBSZXNvdXJjZXMgKi8sCi0J
CQkJMkQ5RjBFMTMxNEZGMUNCRjAwQkEwRkY3IC8qIGxpbmVhclNSR0IuaWNjIGluIFJlc291cmNl
cyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsK
IAkJfTsKQEAgLTI0OTY2LDYgKzI0OTczLDcgQEAKIAkJCQk1MTJERDhGNzBEOTFFNkFGMDAwRjg5
RUUgLyogQXJjaGl2ZVJlc291cmNlQ29sbGVjdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlC
Q0ZCMkY3NjA5N0EyRTFBMDBCQTcwM0QgLyogQXJlbmEuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
RkQ1Njg2QzkxM0FDMTgwMjAwQjY5QzY4IC8qIEFzeW5jQXVkaW9EZWNvZGVyLmNwcCBpbiBTb3Vy
Y2VzICovLAorCQkJCUUxQ0RFOTIwMTUwMThFRDAwMDg2MkNDNSAvKiBBc3luY0ZpbGVTdHJlYW0u
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODlEMDhEOUYxMjIyODQ1MTAwMTI0MURGIC8qIEFzeW5j
RmlsZVN5c3RlbS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBOEM0QTgwRTA5RDU2MzI3MDAwM0FD
OEQgLyogQXR0ci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBOEM0QTgwQzA5RDU2MzI3MDAwM0FD
OEQgLyogQXR0cmlidXRlLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMjY2NDYsNiArMjY2NTQsNyBA
QAogCQkJCTFBOTg5NTZCMEFBNzhGODAwMDVFRjVFRiAvKiBLVVJMQ0ZOZXQuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJNjU5MzkyM0EwOUFFNDM1QzAwMkM1MzFGIC8qIEtVUkxNYWMubW0gaW4gU291
cmNlcyAqLywKIAkJCQkyNkE1MDM1QTE0RjBBMkJDMDBBQTczMEQgLyogS1VSTFdURlVSTC5jcHAg
aW4gU291cmNlcyAqLywKKwkJCQk0NTBDRUJGMDE1MDczQkJFMDAyQkIxNDkgLyogTGFiZWxhYmxl
RWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNDU2RkEyNjExQUQ0QTgzMDAyMEI0MjAg
LyogTGFiZWxzTm9kZUxpc3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTE4NzcyRjExMjZFMjYy
OTAwM0RENTg2IC8qIExhbmd1YWdlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTkzNTIwODQ1MDlC
RDQzQjkwMEYyMDM4RCAvKiBMYW5ndWFnZS5tbSBpbiBTb3VyY2VzICovLApAQCAtMjY2NTYsNiAr
MjY2NjUsNyBAQAogCQkJCTUxMkREOEY0MEQ5MUU2QUYwMDBGODlFRSAvKiBMZWdhY3lXZWJBcmNo
aXZlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxQjI0MTdCMEQ5MzFGM0YwMEU4M0Y1QyAvKiBM
ZWdhY3lXZWJBcmNoaXZlTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNFNjVCRUEwRUFDREYx
NjAwN0U0NTMzIC8qIExlbmd0aC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlFNTE0Q0UxRTE1MTAw
QjA5MDA2MDhEOEEgLyogTGVuZ3RoRnVuY3Rpb25zLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCThD
QURGMkFBMTM1QzdCMzYwMDlFRjQzRiAvKiBMZXZlbERCRGF0YWJhc2UuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJOEMwRTMzNEMxMzhBOTJDNzAwOERBOTRGIC8qIExldmVsREJUcmFuc2FjdGlvbi5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk4QzBFMzM0RTEzOEE5MkM3MDA4REE5NEYgLyogTGV2ZWxE
QldyaXRlQmF0Y2guY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0yNjcyMiw2ICsyNjczMiw3IEBACiAJ
CQkJMzdERENEQTQxMzg0NTAxQzAwMDhCNzkzIC8qIE1IVE1MQXJjaGl2ZS5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkzN0REQ0RBNjEzODQ1MDFDMDAwOEI3OTMgLyogTUhUTUxQYXJzZXIuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJOUIzNzVFREExNDQ3OEEwMTAwRjNDQUU1IC8qIE1pY3JvRGF0YUl0
ZW1MaXN0LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTlCMkI3QUMxMTUwOTg1MEEwMDg5MzJDQyAv
KiBNaWNyb0RhdGFJdGVtVmFsdWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMzdERENEOTQxMzg0
NEZENTAwMDhCNzkzIC8qIE1JTUVIZWFkZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkM3NzJD
NEUwQzRFQjMwNDAwODMyODVGIC8qIE1JTUVUeXBlUmVnaXN0cnkuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJQkM3NzJDNUUwQzRFQjM0NDAwODMyODVGIC8qIE1JTUVUeXBlUmVnaXN0cnlNYWMubW0g
aW4gU291cmNlcyAqLywKQEAgLTI3NDIxLDEzICsyNzQzMiwxNCBAQAogCQkJCUZEN0YyOTkzMTNE
NEMwQ0IwMEFEOTUzNSAvKiBXYXZlU2hhcGVyTm9kZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlG
RDdGMjk5NjEzRDRDMENCMDBBRDk1MzUgLyogV2F2ZVNoYXBlclByb2Nlc3Nvci5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkyOUE4MTI0QTBGQkI5Q0E5MDA1MTAyOTMgLyogV2ViQWNjZXNzaWJpbGl0
eU9iamVjdFdyYXBwZXIubW0gaW4gU291cmNlcyAqLywKKwkJCQlDRDEyN0RFRDE0RjMwOTdEMDBF
ODQ3NzkgLyogV2ViQ29yZUZ1bGxTY3JlZW5XaW5kb3cubW0gaW4gU291cmNlcyAqLywKIAkJCQk5
MzREOUJBNTBCOEMxMTZCMDA3QjQyQTkgLyogV2ViQ29yZU5TU3RyaW5nRXh0cmFzLm1tIGluIFNv
dXJjZXMgKi8sCisJCQkJQzVCNEMyNEUxNTA5MjM2QzAwQTZFRjM3IC8qIFdlYkNvcmVOU1VSTEV4
dHJhcy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUI1MEY1QjgxMEU5NkNEOTkwMEFENzFBNiAvKiBX
ZWJDb3JlT2JqQ0V4dHJhcy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTkzRUIxNjk1MDlGODgwQjAw
MDkxRjhGRiAvKiBXZWJDb3JlU3lzdGVtSW50ZXJmYWNlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MzdGODE4RkUwRDY1NzYwNjAwNUUxRjA1IC8qIFdlYkNvcmVVUkxSZXNwb25zZS5tbSBpbiBTb3Vy
Y2VzICovLAogCQkJCTkzRjE5QjA3MDgyNDVFNTkwMDFFOUFCQyAvKiBXZWJDb3JlVmlldy5tIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQkM2REFERkEwQTE5NjAyQjAwRTVDRDE0IC8qIFdlYkZvbnRDYWNo
ZS5tbSBpbiBTb3VyY2VzICovLAotCQkJCUNEMTI3REVEMTRGMzA5N0QwMEU4NDc3OSAvKiBXZWJD
b3JlRnVsbFNjcmVlbldpbmRvdy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTQ5QzdCOUM4MTA0MkQz
MkYwMDA5RDQ0NyAvKiBXZWJHTEJ1ZmZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk2RTNGQUU4
RTE0NzMzRkRCMDBFNDIzMDYgLyogV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEMuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJNkU0RTkxQUUxMEY3RkIzMTAwQTI3NzlDIC8qIFdlYkdMQ29udGV4dEF0
dHJpYnV0ZXMuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0yNzU1MiwxMCArMjc1NjQsNiBAQAogCQkJ
CUUxQkU1MTJEMENGNkM1MTIwMDJFQTk1OSAvKiBYU0xUVW5pY29kZVNvcnQuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJOTc3RTJFMEUxMkYwRkM5QzAwQzEzMzc5IC8qIFhTU0F1ZGl0b3IuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJRkQ1MzczNTIxMzdCNjUxODAwMDA4RENFIC8qIFplcm9Qb2xlLmNw
cCBpbiBTb3VyY2VzICovLAotCQkJCUUxQ0RFOTIwMTUwMThFRDAwMDg2MkNDNSAvKiBBc3luY0Zp
bGVTdHJlYW0uY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJNDUwQ0VCRjAxNTA3M0JCRTAwMkJCMTQ5
IC8qIExhYmVsYWJsZUVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJQzVCNEMyNEUxNTA5
MjM2QzAwQTZFRjM3IC8qIFdlYkNvcmVOU1VSTEV4dHJhcy5tbSBpbiBTb3VyY2VzICovLAotCQkJ
CTlCMkI3QUMxMTUwOTg1MEEwMDg5MzJDQyAvKiBNaWNyb0RhdGFJdGVtVmFsdWUuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9
IDA7CiAJCX07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2d0ay9XZWJLaXRB
Y2Nlc3NpYmxlSW50ZXJmYWNlVGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9ndGsvV2ViS2l0QWNjZXNzaWJsZUludGVyZmFjZVRleHQuY3BwCShyZXZp
c2lvbiAxMTA2NjIpCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2d0ay9XZWJLaXRB
Y2Nlc3NpYmxlSW50ZXJmYWNlVGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0MCw3ICsyNDAs
NyBAQCBzdGF0aWMgQXRrQXR0cmlidXRlU2V0KiBnZXRBdHRyaWJ1dGVTZXRGCiAgICAgfQogCiAg
ICAgaWYgKCFzdHlsZS0+dGV4dEluZGVudCgpLmlzVW5kZWZpbmVkKCkpIHsKLSAgICAgICAgaW50
IGluZGVudGF0aW9uID0gc3R5bGUtPnRleHRJbmRlbnQoKS5jYWxjVmFsdWUob2JqZWN0LT5zaXpl
KCkud2lkdGgoKSk7CisgICAgICAgIGludCBpbmRlbnRhdGlvbiA9IGNhbGN1bGF0ZVZhbHVlKHN0
eWxlLT50ZXh0SW5kZW50KCksIG9iamVjdC0+c2l6ZSgpLndpZHRoKCkpOwogICAgICAgICBidWZm
ZXIuc2V0KGdfc3RyZHVwX3ByaW50ZigiJWkiLCBpbmRlbnRhdGlvbikpOwogICAgICAgICByZXN1
bHQgPSBhZGRUb0F0a0F0dHJpYnV0ZVNldChyZXN1bHQsIGF0a190ZXh0X2F0dHJpYnV0ZV9nZXRf
bmFtZShBVEtfVEVYVF9BVFRSX0lOREVOVCksIGJ1ZmZlci5nZXQoKSk7CiAgICAgfQpJbmRleDog
U291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5j
cHAJKHJldmlzaW9uIDExMDY2MikKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0
eWxlRGVjbGFyYXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzc0LDcgKzE3NzQsNyBAQCBQ
YXNzUmVmUHRyPENTU1ZhbHVlPiBDU1NDb21wdXRlZFN0eWxlRGVjCiAgICAgICAgICAgICAgICAg
Ly8gUmVuZGVyQm94IGdpdmVzIGEgbWFyZ2luUmlnaHQoKSB0aGF0IGlzIHRoZSBkaXN0YW5jZSBi
ZXR3ZWVuIHRoZSByaWdodC1lZGdlIG9mIHRoZSBjaGlsZCBib3gKICAgICAgICAgICAgICAgICAv
LyBhbmQgdGhlIHJpZ2h0LWVkZ2Ugb2YgdGhlIGNvbnRhaW5pbmcgYm94LCB3aGVuIGRpc3BsYXkg
PT0gQkxPQ0suIExldCdzIGNhbGN1bGF0ZSB0aGUgYWJzb2x1dGUKICAgICAgICAgICAgICAgICAv
LyB2YWx1ZSBvZiB0aGUgc3BlY2lmaWVkIG1hcmdpbi1yaWdodCAlIGluc3RlYWQgb2YgcmVseWlu
ZyBvbiBSZW5kZXJCb3gncyBtYXJnaW5SaWdodCgpIHZhbHVlLgotICAgICAgICAgICAgICAgIHZh
bHVlID0gbWFyZ2luUmlnaHQuY2FsY01pblZhbHVlKHRvUmVuZGVyQm94KHJlbmRlcmVyKS0+Y29u
dGFpbmluZ0Jsb2NrTG9naWNhbFdpZHRoRm9yQ29udGVudCgpKTsKKyAgICAgICAgICAgICAgICB2
YWx1ZSA9IGNhbGN1bGF0ZU1pblZhbHVlKG1hcmdpblJpZ2h0LCB0b1JlbmRlckJveChyZW5kZXJl
ciktPmNvbnRhaW5pbmdCbG9ja0xvZ2ljYWxXaWR0aEZvckNvbnRlbnQoKSk7CiAgICAgICAgICAg
ICBlbHNlCiAgICAgICAgICAgICAgICAgdmFsdWUgPSB0b1JlbmRlckJveChyZW5kZXJlciktPm1h
cmdpblJpZ2h0KCk7CiAgICAgICAgICAgICByZXR1cm4gem9vbUFkanVzdGVkUGl4ZWxWYWx1ZSh2
YWx1ZSwgc3R5bGUuZ2V0KCksIGNzc1ZhbHVlUG9vbCk7CkBAIC0yMTg2LDggKzIxODYsOCBAQCBQ
YXNzUmVmUHRyPENTU1ZhbHVlPiBDU1NDb21wdXRlZFN0eWxlRGVjCiAgICAgICAgICAgICBSZWZQ
dHI8Q1NTVmFsdWVMaXN0PiBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRl
ZCgpOwogICAgICAgICAgICAgaWYgKHJlbmRlcmVyKSB7CiAgICAgICAgICAgICAgICAgTGF5b3V0
UmVjdCBib3ggPSBzaXppbmdCb3gocmVuZGVyZXIpOwotICAgICAgICAgICAgICAgIGxpc3QtPmFw
cGVuZCh6b29tQWRqdXN0ZWRQaXhlbFZhbHVlKHN0eWxlLT5wZXJzcGVjdGl2ZU9yaWdpblgoKS5j
YWxjTWluVmFsdWUoYm94LndpZHRoKCkpLCBzdHlsZS5nZXQoKSwgY3NzVmFsdWVQb29sKSk7Ci0g
ICAgICAgICAgICAgICAgbGlzdC0+YXBwZW5kKHpvb21BZGp1c3RlZFBpeGVsVmFsdWUoc3R5bGUt
PnBlcnNwZWN0aXZlT3JpZ2luWSgpLmNhbGNNaW5WYWx1ZShib3guaGVpZ2h0KCkpLCBzdHlsZS5n
ZXQoKSwgY3NzVmFsdWVQb29sKSk7CisgICAgICAgICAgICAgICAgbGlzdC0+YXBwZW5kKHpvb21B
ZGp1c3RlZFBpeGVsVmFsdWUoY2FsY3VsYXRlTWluVmFsdWUoc3R5bGUtPnBlcnNwZWN0aXZlT3Jp
Z2luWCgpLCBib3gud2lkdGgoKSksIHN0eWxlLmdldCgpLCBjc3NWYWx1ZVBvb2wpKTsKKyAgICAg
ICAgICAgICAgICBsaXN0LT5hcHBlbmQoem9vbUFkanVzdGVkUGl4ZWxWYWx1ZShjYWxjdWxhdGVN
aW5WYWx1ZShzdHlsZS0+cGVyc3BlY3RpdmVPcmlnaW5ZKCksIGJveC5oZWlnaHQoKSksIHN0eWxl
LmdldCgpLCBjc3NWYWx1ZVBvb2wpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2Ug
ewogICAgICAgICAgICAgICAgIGxpc3QtPmFwcGVuZCh6b29tQWRqdXN0ZWRQaXhlbFZhbHVlRm9y
TGVuZ3RoKHN0eWxlLT5wZXJzcGVjdGl2ZU9yaWdpblgoKSwgc3R5bGUuZ2V0KCksIGNzc1ZhbHVl
UG9vbCkpOwpAQCAtMjIzMiw4ICsyMjMyLDggQEAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gQ1NTQ29t
cHV0ZWRTdHlsZURlYwogICAgICAgICAgICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4gbGlzdCA9IENT
U1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsKICAgICAgICAgICAgIGlmIChyZW5k
ZXJlcikgewogICAgICAgICAgICAgICAgIEludFJlY3QgYm94ID0gc2l6aW5nQm94KHJlbmRlcmVy
KTsKLSAgICAgICAgICAgICAgICBsaXN0LT5hcHBlbmQoem9vbUFkanVzdGVkUGl4ZWxWYWx1ZShz
dHlsZS0+dHJhbnNmb3JtT3JpZ2luWCgpLmNhbGNNaW5WYWx1ZShib3gud2lkdGgoKSksIHN0eWxl
LmdldCgpLCBjc3NWYWx1ZVBvb2wpKTsKLSAgICAgICAgICAgICAgICBsaXN0LT5hcHBlbmQoem9v
bUFkanVzdGVkUGl4ZWxWYWx1ZShzdHlsZS0+dHJhbnNmb3JtT3JpZ2luWSgpLmNhbGNNaW5WYWx1
ZShib3guaGVpZ2h0KCkpLCBzdHlsZS5nZXQoKSwgY3NzVmFsdWVQb29sKSk7CisgICAgICAgICAg
ICAgICAgbGlzdC0+YXBwZW5kKHpvb21BZGp1c3RlZFBpeGVsVmFsdWUoY2FsY3VsYXRlTWluVmFs
dWUoc3R5bGUtPnRyYW5zZm9ybU9yaWdpblgoKSwgYm94LndpZHRoKCkpLCBzdHlsZS5nZXQoKSwg
Y3NzVmFsdWVQb29sKSk7CisgICAgICAgICAgICAgICAgbGlzdC0+YXBwZW5kKHpvb21BZGp1c3Rl
ZFBpeGVsVmFsdWUoY2FsY3VsYXRlTWluVmFsdWUoc3R5bGUtPnRyYW5zZm9ybU9yaWdpblkoKSwg
Ym94LmhlaWdodCgpKSwgc3R5bGUuZ2V0KCksIGNzc1ZhbHVlUG9vbCkpOwogICAgICAgICAgICAg
ICAgIGlmIChzdHlsZS0+dHJhbnNmb3JtT3JpZ2luWigpICE9IDApCiAgICAgICAgICAgICAgICAg
ICAgIGxpc3QtPmFwcGVuZCh6b29tQWRqdXN0ZWRQaXhlbFZhbHVlKHN0eWxlLT50cmFuc2Zvcm1P
cmlnaW5aKCksIHN0eWxlLmdldCgpLCBjc3NWYWx1ZVBvb2wpKTsKICAgICAgICAgICAgIH0gZWxz
ZSB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvTGVuZ3RoRnVuY3Rpb25zLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvTGVuZ3RoRnVuY3Rpb25zLmNwcAkocmV2aXNpb24g
MCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9MZW5ndGhGdW5jdGlvbnMuY3BwCShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDEyNCBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAxMiBNb3Rvcm9sYSBN
b2JpbGl0eSwgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgTU9UT1JPTEEgTU9CSUxJVFksIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMKKyAqIGBgQVMgSVMnJyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIE1PVE9ST0xBIE1P
QklMSVRZLCBJTkMuIE9SIElUUworICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsKKyAqIE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLAorICogV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJMZW5ndGhGdW5j
dGlvbnMuaCIKKworI2luY2x1ZGUgIkxlbmd0aC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K2ludCBjYWxjdWxhdGVWYWx1ZShMZW5ndGggbGVuZ3RoLCBpbnQgbWF4VmFsdWUsIGJvb2wgcm91
bmRQZXJjZW50YWdlcykKK3sKKyAgICBzd2l0Y2ggKGxlbmd0aC50eXBlKCkpIHsKKyAgICBjYXNl
IEZpeGVkOgorICAgIGNhc2UgUGVyY2VudDoKKyAgICBjYXNlIENhbGN1bGF0ZWQ6CisgICAgICAg
IHJldHVybiBjYWxjdWxhdGVNaW5WYWx1ZShsZW5ndGgsIG1heFZhbHVlLCByb3VuZFBlcmNlbnRh
Z2VzKTsKKyAgICBjYXNlIEF1dG86CisgICAgICAgIHJldHVybiBtYXhWYWx1ZTsKKyAgICBjYXNl
IFJlbGF0aXZlOgorICAgIGNhc2UgSW50cmluc2ljOgorICAgIGNhc2UgTWluSW50cmluc2ljOgor
ICAgIGNhc2UgVW5kZWZpbmVkOgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAg
ICAgcmV0dXJuIDA7CisgICAgfQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVy
biAwOworfQorCitpbnQgY2FsY3VsYXRlTWluVmFsdWUoTGVuZ3RoIGxlbmd0aCwgaW50IG1heFZh
bHVlLCBib29sIHJvdW5kUGVyY2VudGFnZXMpCit7CisgICAgc3dpdGNoIChsZW5ndGgudHlwZSgp
KSB7CisgICAgY2FzZSBGaXhlZDoKKyAgICAgICAgcmV0dXJuIGxlbmd0aC52YWx1ZSgpOworICAg
IGNhc2UgUGVyY2VudDoKKyAgICAgICAgaWYgKHJvdW5kUGVyY2VudGFnZXMpCisgICAgICAgICAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50Pihyb3VuZChtYXhWYWx1ZSAqIGxlbmd0aC5wZXJjZW50
KCkgLyAxMDAuMGYpKTsKKyAgICAgICAgLy8gRG9uJ3QgcmVtb3ZlIHRoZSBleHRyYSBjYXN0IHRv
IGZsb2F0LiBJdCBpcyBuZWVkZWQgZm9yIHJvdW5kaW5nIG9uIDMyLWJpdCBJbnRlbCBtYWNoaW5l
cyB0aGF0IHVzZSB0aGUgRlBVIHN0YWNrLgorICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50
PihzdGF0aWNfY2FzdDxmbG9hdD4obWF4VmFsdWUgKiBsZW5ndGgucGVyY2VudCgpIC8gMTAwLjBm
KSk7CisgICAgY2FzZSBDYWxjdWxhdGVkOgorICAgICAgICByZXR1cm4gbGVuZ3RoLm5vbk5hbkNh
bGN1bGF0ZWRWYWx1ZShtYXhWYWx1ZSk7CisgICAgY2FzZSBBdXRvOgorICAgICAgICByZXR1cm4g
MDsKKyAgICBjYXNlIFJlbGF0aXZlOgorICAgIGNhc2UgSW50cmluc2ljOgorICAgIGNhc2UgTWlu
SW50cmluc2ljOgorICAgIGNhc2UgVW5kZWZpbmVkOgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OworICAgIHJldHVybiAwOworfQorCisvLyBGSVhNRTogd2hlbiBzdWJwaXhlbCBsYXlvdXQgaXMg
c3VwcG9ydGVkIHRoaXMgY29weSBvZiBjYWxjRmxvYXRWYWx1ZSgpIGNhbiBiZSByZW1vdmVkLiBT
ZWUgYnVnIDcxMTQzLgorZmxvYXQgY2FsY3VsYXRlRmxvYXRWYWx1ZShMZW5ndGggbGVuZ3RoLCBp
bnQgbWF4VmFsdWUpCit7CisgICAgc3dpdGNoIChsZW5ndGgudHlwZSgpKSB7CisgICAgY2FzZSBG
aXhlZDoKKyAgICAgICAgcmV0dXJuIGxlbmd0aC5nZXRGbG9hdFZhbHVlKCk7CisgICAgY2FzZSBQ
ZXJjZW50OgorICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8ZmxvYXQ+KG1heFZhbHVlICogbGVu
Z3RoLnBlcmNlbnQoKSAvIDEwMC4wZik7CisgICAgY2FzZSBBdXRvOgorICAgICAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8ZmxvYXQ+KG1heFZhbHVlKTsKKyAgICBjYXNlIENhbGN1bGF0ZWQ6CisgICAg
ICAgIHJldHVybiBsZW5ndGgubm9uTmFuQ2FsY3VsYXRlZFZhbHVlKG1heFZhbHVlKTsgICAgICAg
ICAgICAgICAgCisgICAgY2FzZSBSZWxhdGl2ZToKKyAgICBjYXNlIEludHJpbnNpYzoKKyAgICBj
YXNlIE1pbkludHJpbnNpYzoKKyAgICBjYXNlIFVuZGVmaW5lZDoKKyAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKKyAgICByZXR1cm4gMDsKK30KKworZmxvYXQgY2FsY3VsYXRlRmxvYXRWYWx1ZShM
ZW5ndGggbGVuZ3RoLCBmbG9hdCBtYXhWYWx1ZSkKK3sKKyAgICBzd2l0Y2ggKGxlbmd0aC50eXBl
KCkpIHsKKyAgICBjYXNlIEZpeGVkOgorICAgICAgICByZXR1cm4gbGVuZ3RoLmdldEZsb2F0VmFs
dWUoKTsKKyAgICBjYXNlIFBlcmNlbnQ6CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxmbG9h
dD4obWF4VmFsdWUgKiBsZW5ndGgucGVyY2VudCgpIC8gMTAwLjBmKTsKKyAgICBjYXNlIEF1dG86
CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxmbG9hdD4obWF4VmFsdWUpOworICAgIGNhc2Ug
Q2FsY3VsYXRlZDoKKyAgICAgICAgcmV0dXJuIGxlbmd0aC5ub25OYW5DYWxjdWxhdGVkVmFsdWUo
bWF4VmFsdWUpOworICAgIGNhc2UgUmVsYXRpdmU6CisgICAgY2FzZSBJbnRyaW5zaWM6CisgICAg
Y2FzZSBNaW5JbnRyaW5zaWM6CisgICAgY2FzZSBVbmRlZmluZWQ6CisgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisgICAgcmV0dXJuIDA7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwpJ
bmRleDogU291cmNlL1dlYkNvcmUvY3NzL0xlbmd0aEZ1bmN0aW9ucy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2Nzcy9MZW5ndGhGdW5jdGlvbnMuaAkocmV2aXNpb24gMCkKKysrIFNv
dXJjZS9XZWJDb3JlL2Nzcy9MZW5ndGhGdW5jdGlvbnMuaAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSw0MCBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAxMiBNb3Rvcm9sYSBNb2JpbGl0eSwgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgTU9UT1JPTEEgTU9CSUxJVFksIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMK
KyAqIGBgQVMgSVMnJyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIE1PVE9ST0xBIE1PQklMSVRZLCBJTkMu
IE9SIElUUworICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsKKyAqIE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLAorICogV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpZm5kZWYgTGVuZ3RoRnVuY3Rpb25zX2gKKyNkZWZpbmUgTGVuZ3RoRnVuY3Rpb25zX2gK
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdHJ1Y3QgTGVuZ3RoOworCitpbnQgY2FsY3VsYXRl
VmFsdWUoTGVuZ3RoLCBpbnQgbWF4VmFsdWUsIGJvb2wgcm91bmRQZXJjZW50YWdlcyA9IGZhbHNl
KTsKK2ludCBjYWxjdWxhdGVNaW5WYWx1ZShMZW5ndGgsIGludCBtYXhWYWx1ZSwgYm9vbCByb3Vu
ZFBlcmNlbnRhZ2VzID0gZmFsc2UpOworZmxvYXQgY2FsY3VsYXRlRmxvYXRWYWx1ZShMZW5ndGgs
IGZsb2F0IG1heFZhbHVlKTsKK2Zsb2F0IGNhbGN1bGF0ZUZsb2F0VmFsdWUoTGVuZ3RoLCBpbnQg
bWF4VmFsdWUpOworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBMZW5ndGhG
dW5jdGlvbnNfaApJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCShyZXZpc2lvbiAxMTA2NjIp
CisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
Nzk2LDggKzE3OTYsOCBAQCB2b2lkIERvY3VtZW50OjpwYWdlU2l6ZUFuZE1hcmdpbnNJblBpeGVs
CiAgICAgICAgIExlbmd0aFNpemUgc2l6ZSA9IHN0eWxlLT5wYWdlU2l6ZSgpOwogICAgICAgICBB
U1NFUlQoc2l6ZS53aWR0aCgpLmlzRml4ZWQoKSk7CiAgICAgICAgIEFTU0VSVChzaXplLmhlaWdo
dCgpLmlzRml4ZWQoKSk7Ci0gICAgICAgIHdpZHRoID0gc2l6ZS53aWR0aCgpLmNhbGNWYWx1ZSgw
KTsKLSAgICAgICAgaGVpZ2h0ID0gc2l6ZS5oZWlnaHQoKS5jYWxjVmFsdWUoMCk7CisgICAgICAg
IHdpZHRoID0gY2FsY3VsYXRlVmFsdWUoc2l6ZS53aWR0aCgpLCAwKTsKKyAgICAgICAgaGVpZ2h0
ID0gY2FsY3VsYXRlVmFsdWUoc2l6ZS5oZWlnaHQoKSwgMCk7CiAgICAgICAgIGJyZWFrOwogICAg
IH0KICAgICBkZWZhdWx0OgpAQCAtMTgwNywxMCArMTgwNywxMCBAQCB2b2lkIERvY3VtZW50Ojpw
YWdlU2l6ZUFuZE1hcmdpbnNJblBpeGVsCiAKICAgICAvLyBUaGUgcGVyY2VudGFnZSBpcyBjYWxj
dWxhdGVkIHdpdGggcmVzcGVjdCB0byB0aGUgd2lkdGggZXZlbiBmb3IgbWFyZ2luIHRvcCBhbmQg
Ym90dG9tLgogICAgIC8vIGh0dHA6Ly93d3cudzMub3JnL1RSL0NTUzIvYm94Lmh0bWwjbWFyZ2lu
LXByb3BlcnRpZXMKLSAgICBtYXJnaW5Ub3AgPSBzdHlsZS0+bWFyZ2luVG9wKCkuaXNBdXRvKCkg
PyBtYXJnaW5Ub3AgOiBzdHlsZS0+bWFyZ2luVG9wKCkuY2FsY1ZhbHVlKHdpZHRoKTsKLSAgICBt
YXJnaW5SaWdodCA9IHN0eWxlLT5tYXJnaW5SaWdodCgpLmlzQXV0bygpID8gbWFyZ2luUmlnaHQg
OiBzdHlsZS0+bWFyZ2luUmlnaHQoKS5jYWxjVmFsdWUod2lkdGgpOwotICAgIG1hcmdpbkJvdHRv
bSA9IHN0eWxlLT5tYXJnaW5Cb3R0b20oKS5pc0F1dG8oKSA/IG1hcmdpbkJvdHRvbSA6IHN0eWxl
LT5tYXJnaW5Cb3R0b20oKS5jYWxjVmFsdWUod2lkdGgpOwotICAgIG1hcmdpbkxlZnQgPSBzdHls
ZS0+bWFyZ2luTGVmdCgpLmlzQXV0bygpID8gbWFyZ2luTGVmdCA6IHN0eWxlLT5tYXJnaW5MZWZ0
KCkuY2FsY1ZhbHVlKHdpZHRoKTsKKyAgICBtYXJnaW5Ub3AgPSBzdHlsZS0+bWFyZ2luVG9wKCku
aXNBdXRvKCkgPyBtYXJnaW5Ub3AgOiBjYWxjdWxhdGVWYWx1ZShzdHlsZS0+bWFyZ2luVG9wKCks
IHdpZHRoKTsKKyAgICBtYXJnaW5SaWdodCA9IHN0eWxlLT5tYXJnaW5SaWdodCgpLmlzQXV0bygp
ID8gbWFyZ2luUmlnaHQgOiBjYWxjdWxhdGVWYWx1ZShzdHlsZS0+bWFyZ2luUmlnaHQoKSwgd2lk
dGgpOworICAgIG1hcmdpbkJvdHRvbSA9IHN0eWxlLT5tYXJnaW5Cb3R0b20oKS5pc0F1dG8oKSA/
IG1hcmdpbkJvdHRvbSA6IGNhbGN1bGF0ZVZhbHVlKHN0eWxlLT5tYXJnaW5Cb3R0b20oKSwgd2lk
dGgpOworICAgIG1hcmdpbkxlZnQgPSBzdHlsZS0+bWFyZ2luTGVmdCgpLmlzQXV0bygpID8gbWFy
Z2luTGVmdCA6IGNhbGN1bGF0ZVZhbHVlKHN0eWxlLT5tYXJnaW5MZWZ0KCksIHdpZHRoKTsKIH0K
IAogUGFzc1JlZlB0cjxDU1NWYWx1ZVBvb2w+IERvY3VtZW50Ojpjc3NWYWx1ZVBvb2woKSBjb25z
dApJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXJlYUVsZW1lbnQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFyZWFFbGVtZW50LmNwcAkocmV2aXNpb24g
MTEwNjYyKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXJlYUVsZW1lbnQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNDcsMjUgKzE0NywyNSBAQCBQYXRoIEhUTUxBcmVhRWxlbWVudDo6Z2V0
UmVnaW9uKGNvbnN0IExhCiAgICAgICAgIGNhc2UgUG9seToKICAgICAgICAgICAgIGlmIChtX2Nv
b3Jkc0xlbiA+PSA2KSB7CiAgICAgICAgICAgICAgICAgaW50IG51bVBvaW50cyA9IG1fY29vcmRz
TGVuIC8gMjsKLSAgICAgICAgICAgICAgICBwYXRoLm1vdmVUbyhGbG9hdFBvaW50KG1fY29vcmRz
WzBdLmNhbGNNaW5WYWx1ZSh3aWR0aCksIG1fY29vcmRzWzFdLmNhbGNNaW5WYWx1ZShoZWlnaHQp
KSk7CisgICAgICAgICAgICAgICAgcGF0aC5tb3ZlVG8oRmxvYXRQb2ludChjYWxjdWxhdGVNaW5W
YWx1ZShtX2Nvb3Jkc1swXSwgd2lkdGgpLCBjYWxjdWxhdGVNaW5WYWx1ZShtX2Nvb3Jkc1sxXSwg
aGVpZ2h0KSkpOwogICAgICAgICAgICAgICAgIGZvciAoaW50IGkgPSAxOyBpIDwgbnVtUG9pbnRz
OyArK2kpCi0gICAgICAgICAgICAgICAgICAgIHBhdGguYWRkTGluZVRvKEZsb2F0UG9pbnQobV9j
b29yZHNbaSAqIDJdLmNhbGNNaW5WYWx1ZSh3aWR0aCksIG1fY29vcmRzW2kgKiAyICsgMV0uY2Fs
Y01pblZhbHVlKGhlaWdodCkpKTsKKyAgICAgICAgICAgICAgICAgICAgcGF0aC5hZGRMaW5lVG8o
RmxvYXRQb2ludChjYWxjdWxhdGVNaW5WYWx1ZShtX2Nvb3Jkc1tpICogMl0sIHdpZHRoKSwgY2Fs
Y3VsYXRlTWluVmFsdWUobV9jb29yZHNbaSAqIDIgKyAxXSwgaGVpZ2h0KSkpOwogICAgICAgICAg
ICAgICAgIHBhdGguY2xvc2VTdWJwYXRoKCk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgY2FzZSBDaXJjbGU6CiAgICAgICAgICAgICBpZiAobV9jb29yZHNMZW4g
Pj0gMykgewogICAgICAgICAgICAgICAgIExlbmd0aCByYWRpdXMgPSBtX2Nvb3Jkc1syXTsKLSAg
ICAgICAgICAgICAgICBpbnQgciA9IG1pbihyYWRpdXMuY2FsY01pblZhbHVlKHdpZHRoKSwgcmFk
aXVzLmNhbGNNaW5WYWx1ZShoZWlnaHQpKTsKLSAgICAgICAgICAgICAgICBwYXRoLmFkZEVsbGlw
c2UoRmxvYXRSZWN0KG1fY29vcmRzWzBdLmNhbGNNaW5WYWx1ZSh3aWR0aCkgLSByLCBtX2Nvb3Jk
c1sxXS5jYWxjTWluVmFsdWUoaGVpZ2h0KSAtIHIsIDIgKiByLCAyICogcikpOworICAgICAgICAg
ICAgICAgIGludCByID0gbWluKGNhbGN1bGF0ZU1pblZhbHVlKHJhZGl1cywgd2lkdGgpLCBjYWxj
dWxhdGVNaW5WYWx1ZShyYWRpdXMsIGhlaWdodCkpOworICAgICAgICAgICAgICAgIHBhdGguYWRk
RWxsaXBzZShGbG9hdFJlY3QoY2FsY3VsYXRlTWluVmFsdWUobV9jb29yZHNbMF0sIHdpZHRoKSAt
IHIsIGNhbGN1bGF0ZU1pblZhbHVlKG1fY29vcmRzWzFdLCBoZWlnaHQpIC0gciwgMiAqIHIsIDIg
KiByKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBS
ZWN0OgogICAgICAgICAgICAgaWYgKG1fY29vcmRzTGVuID49IDQpIHsKLSAgICAgICAgICAgICAg
ICBpbnQgeDAgPSBtX2Nvb3Jkc1swXS5jYWxjTWluVmFsdWUod2lkdGgpOwotICAgICAgICAgICAg
ICAgIGludCB5MCA9IG1fY29vcmRzWzFdLmNhbGNNaW5WYWx1ZShoZWlnaHQpOwotICAgICAgICAg
ICAgICAgIGludCB4MSA9IG1fY29vcmRzWzJdLmNhbGNNaW5WYWx1ZSh3aWR0aCk7Ci0gICAgICAg
ICAgICAgICAgaW50IHkxID0gbV9jb29yZHNbM10uY2FsY01pblZhbHVlKGhlaWdodCk7CisgICAg
ICAgICAgICAgICAgaW50IHgwID0gY2FsY3VsYXRlTWluVmFsdWUobV9jb29yZHNbMF0sIHdpZHRo
KTsKKyAgICAgICAgICAgICAgICBpbnQgeTAgPSBjYWxjdWxhdGVNaW5WYWx1ZShtX2Nvb3Jkc1sx
XSwgaGVpZ2h0KTsKKyAgICAgICAgICAgICAgICBpbnQgeDEgPSBjYWxjdWxhdGVNaW5WYWx1ZSht
X2Nvb3Jkc1syXSwgd2lkdGgpOworICAgICAgICAgICAgICAgIGludCB5MSA9IGNhbGN1bGF0ZU1p
blZhbHVlKG1fY29vcmRzWzNdLCBoZWlnaHQpOwogICAgICAgICAgICAgICAgIHBhdGguYWRkUmVj
dChGbG9hdFJlY3QoeDAsIHkwLCB4MSAtIHgwLCB5MSAtIHkwKSk7CiAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICBicmVhazsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NhbGN1bGF0
aW9uVmFsdWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9DYWxjdWxh
dGlvblZhbHVlLmgJKHJldmlzaW9uIDExMDY2MikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L0NhbGN1bGF0aW9uVmFsdWUuaAkod29ya2luZyBjb3B5KQpAQCAtMzIsNiArMzIsNyBAQAogI2Rl
ZmluZSBDYWxjdWxhdGlvblZhbHVlX2gKIAogI2luY2x1ZGUgIkxlbmd0aC5oIgorI2luY2x1ZGUg
Ikxlbmd0aEZ1bmN0aW9ucy5oIgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KICNpbmNsdWRlIDx3
dGYvUGFzc093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CkBAIC0xMDEsNyAr
MTAyLDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBmbG9hdCBldmFsdWF0ZShmbG9hdCBtYXhW
YWx1ZSkgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiBtX2xlbmd0aC5jYWxjRmxvYXRWYWx1
ZShtYXhWYWx1ZSk7CisgICAgICAgIHJldHVybiBjYWxjdWxhdGVGbG9hdFZhbHVlKG1fbGVuZ3Ro
LCBtYXhWYWx1ZSk7CiAgICAgfQogICAgIAogcHJpdmF0ZToKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL0xlbmd0aC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L0xlbmd0aC5oCShyZXZpc2lvbiAxMTA2NjIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9M
ZW5ndGguaAkod29ya2luZyBjb3B5KQpAQCAtMTU5LDk2ICsxNTksNiBAQCBwdWJsaWM6CiAgICAg
ICAgICp0aGlzID0gTGVuZ3RoKHZhbHVlLCBGaXhlZCk7CiAgICAgfQogCi0gICAgaW50IGNhbGNW
YWx1ZShpbnQgbWF4VmFsdWUsIGJvb2wgcm91bmRQZXJjZW50YWdlcyA9IGZhbHNlKSBjb25zdAot
ICAgIHsKLSAgICAgICAgc3dpdGNoICh0eXBlKCkpIHsKLSAgICAgICAgICAgIGNhc2UgRml4ZWQ6
Ci0gICAgICAgICAgICBjYXNlIFBlcmNlbnQ6Ci0gICAgICAgICAgICBjYXNlIENhbGN1bGF0ZWQ6
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGNhbGNNaW5WYWx1ZShtYXhWYWx1ZSwgcm91bmRQZXJj
ZW50YWdlcyk7Ci0gICAgICAgICAgICBjYXNlIEF1dG86Ci0gICAgICAgICAgICAgICAgcmV0dXJu
IG1heFZhbHVlOwotICAgICAgICAgICAgY2FzZSBSZWxhdGl2ZToKLSAgICAgICAgICAgIGNhc2Ug
SW50cmluc2ljOgotICAgICAgICAgICAgY2FzZSBNaW5JbnRyaW5zaWM6Ci0gICAgICAgICAgICBj
YXNlIFVuZGVmaW5lZDoKLSAgICAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAg
ICAgICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgfQotICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotCi0gICAgaW50IGNhbGNNaW5WYWx1
ZShpbnQgbWF4VmFsdWUsIGJvb2wgcm91bmRQZXJjZW50YWdlcyA9IGZhbHNlKSBjb25zdAotICAg
IHsKLSAgICAgICAgc3dpdGNoICh0eXBlKCkpIHsKLSAgICAgICAgICAgIGNhc2UgRml4ZWQ6Ci0g
ICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlKCk7Ci0gICAgICAgICAgICBjYXNlIFBlcmNlbnQ6
Ci0gICAgICAgICAgICAgICAgaWYgKHJvdW5kUGVyY2VudGFnZXMpCi0gICAgICAgICAgICAgICAg
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KHJvdW5kKG1heFZhbHVlICogcGVyY2VudCgpIC8g
MTAwLjBmKSk7Ci0gICAgICAgICAgICAgICAgLy8gRG9uJ3QgcmVtb3ZlIHRoZSBleHRyYSBjYXN0
IHRvIGZsb2F0LiBJdCBpcyBuZWVkZWQgZm9yIHJvdW5kaW5nIG9uIDMyLWJpdCBJbnRlbCBtYWNo
aW5lcyB0aGF0IHVzZSB0aGUgRlBVIHN0YWNrLgotICAgICAgICAgICAgICAgIHJldHVybiBzdGF0
aWNfY2FzdDxpbnQ+KHN0YXRpY19jYXN0PGZsb2F0PihtYXhWYWx1ZSAqIHBlcmNlbnQoKSAvIDEw
MC4wZikpOwotICAgICAgICAgICAgY2FzZSBDYWxjdWxhdGVkOgotICAgICAgICAgICAgICAgIHJl
dHVybiBub25OYW5DYWxjdWxhdGVkVmFsdWUobWF4VmFsdWUpOwotICAgICAgICAgICAgY2FzZSBB
dXRvOgotICAgICAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICAgICAgY2FzZSBSZWxhdGl2
ZToKLSAgICAgICAgICAgIGNhc2UgSW50cmluc2ljOgotICAgICAgICAgICAgY2FzZSBNaW5JbnRy
aW5zaWM6Ci0gICAgICAgICAgICBjYXNlIFVuZGVmaW5lZDoKLSAgICAgICAgICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgfQot
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQot
Ci0gICAgLy8gRklYTUU6IHdoZW4gc3VicGl4ZWwgbGF5b3V0IGlzIHN1cHBvcnRlZCB0aGlzIGNv
cHkgb2YgY2FsY0Zsb2F0VmFsdWUoKSBjYW4gYmUgcmVtb3ZlZC4gU2VlIGJ1ZyA3MTE0My4KLSAg
ICBmbG9hdCBjYWxjRmxvYXRWYWx1ZShpbnQgbWF4VmFsdWUpIGNvbnN0Ci0gICAgewotICAgICAg
ICBzd2l0Y2ggKHR5cGUoKSkgewotICAgICAgICAgICAgY2FzZSBGaXhlZDoKLSAgICAgICAgICAg
ICAgICByZXR1cm4gZ2V0RmxvYXRWYWx1ZSgpOwotICAgICAgICAgICAgY2FzZSBQZXJjZW50Ogot
ICAgICAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxmbG9hdD4obWF4VmFsdWUgKiBwZXJj
ZW50KCkgLyAxMDAuMGYpOwotICAgICAgICAgICAgY2FzZSBBdXRvOgotICAgICAgICAgICAgICAg
IHJldHVybiBzdGF0aWNfY2FzdDxmbG9hdD4obWF4VmFsdWUpOwotICAgICAgICAgICAgY2FzZSBD
YWxjdWxhdGVkOgotICAgICAgICAgICAgICAgIHJldHVybiBub25OYW5DYWxjdWxhdGVkVmFsdWUo
bWF4VmFsdWUpOyAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgIGNhc2UgUmVsYXRpdmU6Ci0g
ICAgICAgICAgICBjYXNlIEludHJpbnNpYzoKLSAgICAgICAgICAgIGNhc2UgTWluSW50cmluc2lj
OgotICAgICAgICAgICAgY2FzZSBVbmRlZmluZWQ6Ci0gICAgICAgICAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIH0KLSAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLQotICAg
IGZsb2F0IGNhbGNGbG9hdFZhbHVlKGZsb2F0IG1heFZhbHVlKSBjb25zdAotICAgIHsKLSAgICAg
ICAgc3dpdGNoICh0eXBlKCkpIHsKLSAgICAgICAgY2FzZSBGaXhlZDoKLSAgICAgICAgICAgIHJl
dHVybiBnZXRGbG9hdFZhbHVlKCk7Ci0gICAgICAgIGNhc2UgUGVyY2VudDoKLSAgICAgICAgICAg
IHJldHVybiBzdGF0aWNfY2FzdDxmbG9hdD4obWF4VmFsdWUgKiBwZXJjZW50KCkgLyAxMDAuMGYp
OwotICAgICAgICBjYXNlIEF1dG86Ci0gICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Zmxv
YXQ+KG1heFZhbHVlKTsKLSAgICAgICAgY2FzZSBDYWxjdWxhdGVkOgotICAgICAgICAgICAgcmV0
dXJuIG5vbk5hbkNhbGN1bGF0ZWRWYWx1ZShtYXhWYWx1ZSk7Ci0gICAgICAgIGNhc2UgUmVsYXRp
dmU6Ci0gICAgICAgIGNhc2UgSW50cmluc2ljOgotICAgICAgICBjYXNlIE1pbkludHJpbnNpYzoK
LSAgICAgICAgY2FzZSBVbmRlZmluZWQ6Ci0gICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKLSAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICB9Ci0gICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0KICAgICBib29sIGlzVW5kZWZp
bmVkKCkgY29uc3QgeyByZXR1cm4gdHlwZSgpID09IFVuZGVmaW5lZDsgfQogCiAgICAgLy8gRklY
TUUgY2FsYzogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgwMzU3LiBB
IGNhbGN1bGF0ZWQgTGVuZ3RoIApAQCAtMzEyLDE5ICsyMjIsMTkgQEAgcHVibGljOgogICAgICAg
ICByZXR1cm4gTGVuZ3RoKFdlYkNvcmU6OmJsZW5kKGZyb21WYWx1ZSwgdG9WYWx1ZSwgcHJvZ3Jl
c3MpLCByZXN1bHRUeXBlKTsKICAgICB9CiAKLXByaXZhdGU6Ci0gICAgaW50IGdldEludFZhbHVl
KCkgY29uc3QKKyAgICBmbG9hdCBnZXRGbG9hdFZhbHVlKCkgY29uc3QKICAgICB7CiAgICAgICAg
IEFTU0VSVCghaXNVbmRlZmluZWQoKSk7Ci0gICAgICAgIHJldHVybiBtX2lzRmxvYXQgPyBzdGF0
aWNfY2FzdDxpbnQ+KG1fZmxvYXRWYWx1ZSkgOiBtX2ludFZhbHVlOworICAgICAgICByZXR1cm4g
bV9pc0Zsb2F0ID8gbV9mbG9hdFZhbHVlIDogbV9pbnRWYWx1ZTsKICAgICB9CisgICAgZmxvYXQg
bm9uTmFuQ2FsY3VsYXRlZFZhbHVlKGludCBtYXhWYWx1ZSkgY29uc3Q7CiAKLSAgICBmbG9hdCBn
ZXRGbG9hdFZhbHVlKCkgY29uc3QKK3ByaXZhdGU6CisgICAgaW50IGdldEludFZhbHVlKCkgY29u
c3QKICAgICB7CiAgICAgICAgIEFTU0VSVCghaXNVbmRlZmluZWQoKSk7Ci0gICAgICAgIHJldHVy
biBtX2lzRmxvYXQgPyBtX2Zsb2F0VmFsdWUgOiBtX2ludFZhbHVlOworICAgICAgICByZXR1cm4g
bV9pc0Zsb2F0ID8gc3RhdGljX2Nhc3Q8aW50PihtX2Zsb2F0VmFsdWUpIDogbV9pbnRWYWx1ZTsK
ICAgICB9Ci0KICAgICB2b2lkIGluaXRGcm9tTGVuZ3RoKGNvbnN0IExlbmd0aCAmbGVuZ3RoKSAK
ICAgICB7CiAgICAgICAgIG1fcXVpcmsgPSBsZW5ndGgubV9xdWlyazsKQEAgLTMzOSw4ICsyNDks
NyBAQCBwcml2YXRlOgogICAgICAgICBpZiAoaXNDYWxjdWxhdGVkKCkpCiAgICAgICAgICAgICBp
bmNyZW1lbnRDYWxjdWxhdGVkUmVmKCk7CiAgICAgfQotICAgIAotICAgIGZsb2F0IG5vbk5hbkNh
bGN1bGF0ZWRWYWx1ZShpbnQgbWF4VmFsdWUpIGNvbnN0OworCiAgICAgaW50IGNhbGN1bGF0aW9u
SGFuZGxlKCkgY29uc3QKICAgICB7CiAgICAgICAgIEFTU0VSVChpc0NhbGN1bGF0ZWQoKSk7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9tYWMvUGxhdGZvcm1DQUFu
aW1hdGlvbk1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYS9tYWMvUGxhdGZvcm1DQUFuaW1hdGlvbk1hYy5tbQkocmV2aXNpb24gMTEwNjYyKQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvbWFjL1BsYXRmb3JtQ0FBbmlt
YXRpb25NYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTMwLDYgKzMwLDcgQEAKICNpbXBvcnQgIlBs
YXRmb3JtQ0FBbmltYXRpb24uaCIKIAogI2ltcG9ydCAiRmxvYXRDb252ZXJzaW9uLmgiCisjaW1w
b3J0ICJMZW5ndGhGdW5jdGlvbnMuaCIKICNpbXBvcnQgIlBsYXRmb3JtU3RyaW5nLmgiCiAjaW1w
b3J0ICJUaW1pbmdGdW5jdGlvbi5oIgogI2ltcG9ydCA8UXVhcnR6Q29yZS9RdWFydHpDb3JlLmg+
CkBAIC01MDIsNyArNTAzLDcgQEAgc3RhdGljIFJldGFpblB0cjxpZD4gZmlsdGVyVmFsdWVGb3JP
cGVyYQogCiAgICAgICAgIGlmICghb3BlcmF0aW9uLT5pc0RlZmF1bHQoKSkgewogICAgICAgICAg
ICAgY29uc3QgQmx1ckZpbHRlck9wZXJhdGlvbiogb3AgPSBzdGF0aWNfY2FzdDxjb25zdCBCbHVy
RmlsdGVyT3BlcmF0aW9uKj4ob3BlcmF0aW9uKTsKLSAgICAgICAgICAgIGFtb3VudCA9IG9wLT5z
dGREZXZpYXRpb24oKS5jYWxjRmxvYXRWYWx1ZSgwKTsKKyAgICAgICAgICAgIGFtb3VudCA9IGNh
bGN1bGF0ZUZsb2F0VmFsdWUob3AtPnN0ZERldmlhdGlvbigpLCAwKTsKICAgICAgICAgfQogICAg
ICAgICAKICAgICAgICAgdmFsdWUuYWRvcHROUyhbW05TTnVtYmVyIG51bWJlcldpdGhEb3VibGU6
YW1vdW50XSByZXRhaW5dKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhL21hYy9QbGF0Zm9ybUNBTGF5ZXJNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvbWFjL1BsYXRmb3JtQ0FMYXllck1hYy5tbQkocmV2aXNp
b24gMTEwNjYyKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvbWFjL1Bs
YXRmb3JtQ0FMYXllck1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMzQsNiArMzQsNyBAQAogI2lt
cG9ydCAiRmxvYXRDb252ZXJzaW9uLmgiCiAjaW1wb3J0ICJHcmFwaGljc0NvbnRleHQuaCIKICNp
bXBvcnQgIkdyYXBoaWNzTGF5ZXJDQS5oIgorI2ltcG9ydCAiTGVuZ3RoRnVuY3Rpb25zLmgiCiAj
aW1wb3J0ICJXZWJMYXllci5oIgogI2ltcG9ydCAiV2ViVGlsZWRMYXllci5oIgogI2ltcG9ydCAi
V2ViVGlsZUNhY2hlTGF5ZXIuaCIKQEAgLTgyMyw3ICs4MjQsNyBAQCB2b2lkIFBsYXRmb3JtQ0FM
YXllcjo6c2V0RmlsdGVycyhjb25zdCBGCiAgICAgICAgICAgICBjb25zdCBCbHVyRmlsdGVyT3Bl
cmF0aW9uKiBvcCA9IHN0YXRpY19jYXN0PGNvbnN0IEJsdXJGaWx0ZXJPcGVyYXRpb24qPihmaWx0
ZXJPcGVyYXRpb24pOwogICAgICAgICAgICAgQ0lGaWx0ZXIqIGNhRmlsdGVyID0gW0NJRmlsdGVy
IGZpbHRlcldpdGhOYW1lOkAiQ0lHYXVzc2lhbkJsdXIiXTsKICAgICAgICAgICAgIFtjYUZpbHRl
ciBzZXREZWZhdWx0c107Ci0gICAgICAgICAgICBbY2FGaWx0ZXIgc2V0VmFsdWU6W05TTnVtYmVy
IG51bWJlcldpdGhGbG9hdDpvcC0+c3RkRGV2aWF0aW9uKCkuY2FsY0Zsb2F0VmFsdWUoMCldIGZv
cktleTpAImlucHV0UmFkaXVzIl07CisgICAgICAgICAgICBbY2FGaWx0ZXIgc2V0VmFsdWU6W05T
TnVtYmVyIG51bWJlcldpdGhGbG9hdDpjYWxjdWxhdGVGbG9hdFZhbHVlKG9wLT5zdGREZXZpYXRp
b24oKSwgMCldIGZvcktleTpAImlucHV0UmFkaXVzIl07CiAgICAgICAgICAgICBbY2FGaWx0ZXIg
c2V0TmFtZTpmaWx0ZXJOYW1lXTsKICAgICAgICAgICAgIFthcnJheS5nZXQoKSBhZGRPYmplY3Q6
Y2FGaWx0ZXJdOwogICAgICAgICAgICAgYnJlYWs7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclN1cmZhY2VGaWx0ZXJzLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1JlbmRlclN1cmZhY2VGaWx0ZXJzLmNwcAkocmV2aXNpb24gMTEwNjYyKQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJTdXJmYWNlRmlsdGVy
cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJjYy9DQ1Jl
bmRlclN1cmZhY2VGaWx0ZXJzLmgiCiAKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQzRC5oIgor
I2luY2x1ZGUgIkxlbmd0aEZ1bmN0aW9ucy5oIgogI2luY2x1ZGUgIlNrQmx1ckltYWdlRmlsdGVy
LmgiCiAjaW5jbHVkZSAiU2tDYW52YXMuaCIKICNpbmNsdWRlICJTa0NvbG9yTWF0cml4RmlsdGVy
LmgiCkBAIC0yNjksOCArMjcwLDggQEAgU2tCaXRtYXAgQ0NSZW5kZXJTdXJmYWNlRmlsdGVyczo6
YXBwbHkoYwogICAgICAgICB9CiAgICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpCTFVSOiB7
CiAgICAgICAgICAgICBjb25zdCBCbHVyRmlsdGVyT3BlcmF0aW9uKiBvcCA9IHN0YXRpY19jYXN0
PGNvbnN0IEJsdXJGaWx0ZXJPcGVyYXRpb24qPihmaWx0ZXJPcGVyYXRpb24pOwotICAgICAgICAg
ICAgZmxvYXQgc3RkWCA9IG9wLT5zdGREZXZpYXRpb24oKS5jYWxjRmxvYXRWYWx1ZSgwKTsKLSAg
ICAgICAgICAgIGZsb2F0IHN0ZFkgPSBvcC0+c3RkRGV2aWF0aW9uKCkuY2FsY0Zsb2F0VmFsdWUo
MSk7CisgICAgICAgICAgICBmbG9hdCBzdGRYID0gY2FsY3VsYXRlRmxvYXRWYWx1ZShvcC0+c3Rk
RGV2aWF0aW9uKCksIDApOworICAgICAgICAgICAgZmxvYXQgc3RkWSA9IGNhbGN1bGF0ZUZsb2F0
VmFsdWUob3AtPnN0ZERldmlhdGlvbigpLCAxKTsKICAgICAgICAgICAgIFNrQXV0b1RVbnJlZjxT
a0ltYWdlRmlsdGVyPiBmaWx0ZXIobmV3IFNrQmx1ckltYWdlRmlsdGVyKHN0ZFgsIHN0ZFkpKTsK
ICAgICAgICAgICAgIFNrUGFpbnQgcGFpbnQ7CiAgICAgICAgICAgICBwYWludC5zZXRJbWFnZUZp
bHRlcihmaWx0ZXIuZ2V0KCkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9GaWx0ZXJPcGVyYXRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbnMuY3BwCShyZXZp
c2lvbiAxMTA2NjIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0ZpbHRlck9wZXJhdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBACiAK
ICNpbmNsdWRlICJGRUdhdXNzaWFuQmx1ci5oIgogI2luY2x1ZGUgIkludFNpemUuaCIKKyNpbmNs
dWRlICJMZW5ndGhGdW5jdGlvbnMuaCIKIAogI2lmIEVOQUJMRShDU1NfRklMVEVSUykKIApAQCAt
MTA3LDcgKzEwOCw3IEBAIHZvaWQgRmlsdGVyT3BlcmF0aW9uczo6Z2V0T3V0c2V0cyhMYXlvdXQK
ICAgICAgICAgc3dpdGNoIChmaWx0ZXJPcGVyYXRpb24tPmdldE9wZXJhdGlvblR5cGUoKSkgewog
ICAgICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6QkxVUjogewogICAgICAgICAgICAgQmx1ckZp
bHRlck9wZXJhdGlvbiogYmx1ck9wZXJhdGlvbiA9IHN0YXRpY19jYXN0PEJsdXJGaWx0ZXJPcGVy
YXRpb24qPihmaWx0ZXJPcGVyYXRpb24pOwotICAgICAgICAgICAgZmxvYXQgc3RkRGV2aWF0aW9u
ID0gYmx1ck9wZXJhdGlvbi0+c3RkRGV2aWF0aW9uKCkuY2FsY0Zsb2F0VmFsdWUoMCk7CisgICAg
ICAgICAgICBmbG9hdCBzdGREZXZpYXRpb24gPSBjYWxjdWxhdGVGbG9hdFZhbHVlKGJsdXJPcGVy
YXRpb24tPnN0ZERldmlhdGlvbigpLCAwKTsKICAgICAgICAgICAgIEludFNpemUgb3V0c2V0ID0g
b3V0c2V0U2l6ZUZvckJsdXIoc3RkRGV2aWF0aW9uKTsKICAgICAgICAgICAgIHRvcCArPSBvdXRz
ZXQuaGVpZ2h0KCk7CiAgICAgICAgICAgICByaWdodCArPSBvdXRzZXQud2lkdGgoKTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvUGVyc3BlY3RpdmVU
cmFuc2Zvcm1PcGVyYXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvUGVyc3BlY3RpdmVUcmFuc2Zvcm1PcGVyYXRpb24uY3Bw
CShyZXZpc2lvbiAxMTA2NjIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
cmFuc2Zvcm1zL1BlcnNwZWN0aXZlVHJhbnNmb3JtT3BlcmF0aW9uLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzksNyArMzksNyBAQCBQYXNzUmVmUHRyPFRyYW5zZm9ybU9wZXJhdGlvbj4gUGVyc3Bl
Y3RpCiAgICAgICAgIHJldHVybiB0aGlzOwogICAgIAogICAgIGlmIChibGVuZFRvSWRlbnRpdHkp
IHsKLSAgICAgICAgZG91YmxlIHAgPSBtX3AuY2FsY0Zsb2F0VmFsdWUoMSk7CisgICAgICAgIGRv
dWJsZSBwID0gY2FsY3VsYXRlRmxvYXRWYWx1ZShtX3AsIDEpOwogICAgICAgICBwID0gV2ViQ29y
ZTo6YmxlbmQocCwgMS4wLCBwcm9ncmVzcyk7IC8vIEZJWE1FOiB0aGlzIHNlZW1zIHdyb25nLiBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTI3MDAKICAgICAgICAgcmV0
dXJuIFBlcnNwZWN0aXZlVHJhbnNmb3JtT3BlcmF0aW9uOjpjcmVhdGUoTGVuZ3RoKGNsYW1wVG9Q
b3NpdGl2ZUludGVnZXIocCksIEZpeGVkKSk7CiAgICAgfQpAQCAtNTAsOCArNTAsOCBAQCBQYXNz
UmVmUHRyPFRyYW5zZm9ybU9wZXJhdGlvbj4gUGVyc3BlY3RpCiAKICAgICBUcmFuc2Zvcm1hdGlv
bk1hdHJpeCBmcm9tVDsKICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCB0b1Q7Ci0gICAgZnJvbVQu
YXBwbHlQZXJzcGVjdGl2ZShmcm9tUC5jYWxjRmxvYXRWYWx1ZSgxKSk7Ci0gICAgdG9ULmFwcGx5
UGVyc3BlY3RpdmUodG9QLmNhbGNGbG9hdFZhbHVlKDEpKTsKKyAgICBmcm9tVC5hcHBseVBlcnNw
ZWN0aXZlKGNhbGN1bGF0ZUZsb2F0VmFsdWUoZnJvbVAsIDEpKTsKKyAgICB0b1QuYXBwbHlQZXJz
cGVjdGl2ZShjYWxjdWxhdGVGbG9hdFZhbHVlKHRvUCwgMSkpOwogICAgIHRvVC5ibGVuZChmcm9t
VCwgcHJvZ3Jlc3MpOwogICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4OjpEZWNvbXBvc2VkVHlwZSBk
ZWNvbXA7CiAgICAgdG9ULmRlY29tcG9zZShkZWNvbXApOwpJbmRleDogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9QZXJzcGVjdGl2ZVRyYW5zZm9ybU9wZXJhdGlv
bi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5z
Zm9ybXMvUGVyc3BlY3RpdmVUcmFuc2Zvcm1PcGVyYXRpb24uaAkocmV2aXNpb24gMTEwNjYyKQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9QZXJzcGVjdGl2
ZVRyYW5zZm9ybU9wZXJhdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBACiAj
ZGVmaW5lIFBlcnNwZWN0aXZlVHJhbnNmb3JtT3BlcmF0aW9uX2gKIAogI2luY2x1ZGUgIkxlbmd0
aC5oIgorI2luY2x1ZGUgIkxlbmd0aEZ1bmN0aW9ucy5oIgogI2luY2x1ZGUgIlRyYW5zZm9ybU9w
ZXJhdGlvbi5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00MSw3ICs0Miw3IEBAIHB1Ymxp
YzoKICAgICBMZW5ndGggcGVyc3BlY3RpdmUoKSBjb25zdCB7IHJldHVybiBtX3A7IH0KICAgICAK
IHByaXZhdGU6Ci0gICAgdmlydHVhbCBib29sIGlzSWRlbnRpdHkoKSBjb25zdCB7IHJldHVybiBt
X3AuY2FsY0Zsb2F0VmFsdWUoMSkgPT0gMDsgfQorICAgIHZpcnR1YWwgYm9vbCBpc0lkZW50aXR5
KCkgY29uc3QgeyByZXR1cm4gIWNhbGN1bGF0ZUZsb2F0VmFsdWUobV9wLCAxKTsgfQogICAgIHZp
cnR1YWwgT3BlcmF0aW9uVHlwZSBnZXRPcGVyYXRpb25UeXBlKCkgY29uc3QgeyByZXR1cm4gUEVS
U1BFQ1RJVkU7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNTYW1lVHlwZShjb25zdCBUcmFuc2Zvcm1P
cGVyYXRpb24mIG8pIGNvbnN0IHsgcmV0dXJuIG8uZ2V0T3BlcmF0aW9uVHlwZSgpID09IFBFUlNQ
RUNUSVZFOyB9CiAKQEAgLTU1LDcgKzU2LDcgQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwgYm9v
bCBhcHBseShUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtLCBjb25zdCBGbG9hdFNpemUm
KSBjb25zdAogICAgIHsKLSAgICAgICAgdHJhbnNmb3JtLmFwcGx5UGVyc3BlY3RpdmUobV9wLmNh
bGNGbG9hdFZhbHVlKDEpKTsKKyAgICAgICAgdHJhbnNmb3JtLmFwcGx5UGVyc3BlY3RpdmUoY2Fs
Y3VsYXRlRmxvYXRWYWx1ZShtX3AsIDEpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0K
IApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFu
c2xhdGVUcmFuc2Zvcm1PcGVyYXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zbGF0ZVRyYW5zZm9ybU9wZXJhdGlvbi5o
CShyZXZpc2lvbiAxMTA2NjIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
cmFuc2Zvcm1zL1RyYW5zbGF0ZVRyYW5zZm9ybU9wZXJhdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBA
IC0yNiw2ICsyNiw3IEBACiAjZGVmaW5lIFRyYW5zbGF0ZVRyYW5zZm9ybU9wZXJhdGlvbl9oCiAK
ICNpbmNsdWRlICJMZW5ndGguaCIKKyNpbmNsdWRlICJMZW5ndGhGdW5jdGlvbnMuaCIKICNpbmNs
dWRlICJUcmFuc2Zvcm1PcGVyYXRpb24uaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDIs
MTYgKzQzLDE2IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBUcmFuc2xh
dGVUcmFuc2Zvcm1PcGVyYXRpb24odHgsIHR5LCB0eiwgdHlwZSkpOwogICAgIH0KIAotICAgIGRv
dWJsZSB4KGNvbnN0IEZsb2F0U2l6ZSYgYm9yZGVyQm94U2l6ZSkgY29uc3QgeyByZXR1cm4gbV94
LmNhbGNGbG9hdFZhbHVlKGJvcmRlckJveFNpemUud2lkdGgoKSk7IH0KLSAgICBkb3VibGUgeShj
b25zdCBGbG9hdFNpemUmIGJvcmRlckJveFNpemUpIGNvbnN0IHsgcmV0dXJuIG1feS5jYWxjRmxv
YXRWYWx1ZShib3JkZXJCb3hTaXplLmhlaWdodCgpKTsgfQotICAgIGRvdWJsZSB6KGNvbnN0IEZs
b2F0U2l6ZSYpIGNvbnN0IHsgcmV0dXJuIG1fei5jYWxjRmxvYXRWYWx1ZSgxKTsgfQorICAgIGRv
dWJsZSB4KGNvbnN0IEZsb2F0U2l6ZSYgYm9yZGVyQm94U2l6ZSkgY29uc3QgeyByZXR1cm4gY2Fs
Y3VsYXRlRmxvYXRWYWx1ZShtX3gsIGJvcmRlckJveFNpemUud2lkdGgoKSk7IH0KKyAgICBkb3Vi
bGUgeShjb25zdCBGbG9hdFNpemUmIGJvcmRlckJveFNpemUpIGNvbnN0IHsgcmV0dXJuIGNhbGN1
bGF0ZUZsb2F0VmFsdWUobV95LCBib3JkZXJCb3hTaXplLmhlaWdodCgpKTsgfQorICAgIGRvdWJs
ZSB6KGNvbnN0IEZsb2F0U2l6ZSYpIGNvbnN0IHsgcmV0dXJuIGNhbGN1bGF0ZUZsb2F0VmFsdWUo
bV96LCAxKTsgfQogCiAgICAgTGVuZ3RoIHgoKSBjb25zdCB7IHJldHVybiBtX3g7IH0KICAgICBM
ZW5ndGggeSgpIGNvbnN0IHsgcmV0dXJuIG1feTsgfQogICAgIExlbmd0aCB6KCkgY29uc3QgeyBy
ZXR1cm4gbV96OyB9CiAKIHByaXZhdGU6Ci0gICAgdmlydHVhbCBib29sIGlzSWRlbnRpdHkoKSBj
b25zdCB7IHJldHVybiBtX3guY2FsY0Zsb2F0VmFsdWUoMSkgPT0gMCAmJiBtX3kuY2FsY0Zsb2F0
VmFsdWUoMSkgPT0gMCAmJiBtX3ouY2FsY0Zsb2F0VmFsdWUoMSkgPT0gMDsgfQorICAgIHZpcnR1
YWwgYm9vbCBpc0lkZW50aXR5KCkgY29uc3QgeyByZXR1cm4gIWNhbGN1bGF0ZUZsb2F0VmFsdWUo
bV94LCAxKSAmJiAhY2FsY3VsYXRlRmxvYXRWYWx1ZShtX3ksIDEpICYmICFjYWxjdWxhdGVGbG9h
dFZhbHVlKG1feiwgMSk7IH0KIAogICAgIHZpcnR1YWwgT3BlcmF0aW9uVHlwZSBnZXRPcGVyYXRp
b25UeXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9CiAgICAgdmlydHVhbCBib29sIGlzU2Ft
ZVR5cGUoY29uc3QgVHJhbnNmb3JtT3BlcmF0aW9uJiBvKSBjb25zdCB7IHJldHVybiBvLmdldE9w
ZXJhdGlvblR5cGUoKSA9PSBtX3R5cGU7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3dpbi9Qb3B1cE1lbnVXaW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3dpbi9Qb3B1cE1lbnVXaW4uY3BwCShyZXZpc2lvbiAxMTA2NjIpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS93aW4vUG9wdXBNZW51V2luLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMs
NiArMzMsNyBAQAogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIkhXbmREQy5oIgog
I2luY2x1ZGUgIkhvc3RXaW5kb3cuaCIKKyNpbmNsdWRlICJMZW5ndGhGdW5jdGlvbnMuaCIKICNp
bmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1Nb3VzZUV2ZW50LmgiCiAjaW5jbHVk
ZSAiUGxhdGZvcm1TY3JlZW4uaCIKQEAgLTY1NCw3ICs2NTUsNyBAQCB2b2lkIFBvcHVwTWVudVdp
bjo6cGFpbnQoY29uc3QgSW50UmVjdCYgCiAgICAgICAgIGlmIChpdGVtU3R5bGUuaXNWaXNpYmxl
KCkpIHsKICAgICAgICAgICAgIGludCB0ZXh0WCA9IG1heCgwLCBjbGllbnQoKS0+Y2xpZW50UGFk
ZGluZ0xlZnQoKSAtIGNsaWVudCgpLT5jbGllbnRJbnNldExlZnQoKSk7CiAgICAgICAgICAgICBp
ZiAoUmVuZGVyVGhlbWU6OmRlZmF1bHRUaGVtZSgpLT5wb3B1cE9wdGlvblN1cHBvcnRzVGV4dElu
ZGVudCgpICYmIGl0ZW1TdHlsZS50ZXh0RGlyZWN0aW9uKCkgPT0gTFRSKQotICAgICAgICAgICAg
ICAgIHRleHRYICs9IGl0ZW1TdHlsZS50ZXh0SW5kZW50KCkuY2FsY01pblZhbHVlKGl0ZW1SZWN0
LndpZHRoKCkpOworICAgICAgICAgICAgICAgIHRleHRYICs9IGNhbGN1bGF0ZU1pblZhbHVlKGl0
ZW1TdHlsZS50ZXh0SW5kZW50KCksIGl0ZW1SZWN0LndpZHRoKCkpOwogICAgICAgICAgICAgaW50
IHRleHRZID0gaXRlbVJlY3QueSgpICsgaXRlbUZvbnQuZm9udE1ldHJpY3MoKS5hc2NlbnQoKSAr
IChpdGVtUmVjdC5oZWlnaHQoKSAtIGl0ZW1Gb250LmZvbnRNZXRyaWNzKCkuaGVpZ2h0KCkpIC8g
MjsKICAgICAgICAgICAgIGNvbnRleHQuZHJhd0JpZGlUZXh0KGl0ZW1Gb250LCB0ZXh0UnVuLCBJ
bnRQb2ludCh0ZXh0WCwgdGV4dFkpKTsKICAgICAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL0F1dG9UYWJsZUxheW91dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL0F1dG9UYWJsZUxheW91dC5jcHAJKHJldmlzaW9uIDExMDY2MikKKysrIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9BdXRvVGFibGVMYXlvdXQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC01NTEsNyArNTUxLDcgQEAgdm9pZCBBdXRvVGFibGVMYXlvdXQ6OmxheW91dCgpCiAgICAg
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbkVmZkNvbHM7ICsraSkgewogICAgICAgICAgICAg
TGVuZ3RoJiBsb2dpY2FsV2lkdGggPSBtX2xheW91dFN0cnVjdFtpXS5lZmZlY3RpdmVMb2dpY2Fs
V2lkdGg7CiAgICAgICAgICAgICBpZiAobG9naWNhbFdpZHRoLmlzUGVyY2VudCgpKSB7Ci0gICAg
ICAgICAgICAgICAgaW50IGNlbGxMb2dpY2FsV2lkdGggPSBtYXg8aW50PihtX2xheW91dFN0cnVj
dFtpXS5lZmZlY3RpdmVNaW5Mb2dpY2FsV2lkdGgsIGxvZ2ljYWxXaWR0aC5jYWxjTWluVmFsdWUo
dGFibGVMb2dpY2FsV2lkdGgpKTsKKyAgICAgICAgICAgICAgICBpbnQgY2VsbExvZ2ljYWxXaWR0
aCA9IG1heDxpbnQ+KG1fbGF5b3V0U3RydWN0W2ldLmVmZmVjdGl2ZU1pbkxvZ2ljYWxXaWR0aCwg
Y2FsY3VsYXRlTWluVmFsdWUobG9naWNhbFdpZHRoLCB0YWJsZUxvZ2ljYWxXaWR0aCkpOwogICAg
ICAgICAgICAgICAgIGF2YWlsYWJsZSArPSBtX2xheW91dFN0cnVjdFtpXS5jb21wdXRlZExvZ2lj
YWxXaWR0aCAtIGNlbGxMb2dpY2FsV2lkdGg7CiAgICAgICAgICAgICAgICAgbV9sYXlvdXRTdHJ1
Y3RbaV0uY29tcHV0ZWRMb2dpY2FsV2lkdGggPSBjZWxsTG9naWNhbFdpZHRoOwogICAgICAgICAg
ICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ZpbHRlckVmZmVjdFJlbmRlcmVy
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmlsdGVyRWZmZWN0
UmVuZGVyZXIuY3BwCShyZXZpc2lvbiAxMTA2NjIpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvRmlsdGVyRWZmZWN0UmVuZGVyZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMzcsNyArMjM3
LDcgQEAgdm9pZCBGaWx0ZXJFZmZlY3RSZW5kZXJlcjo6YnVpbGQoRG9jdW1lbgogICAgICAgICB9
CiAgICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpCTFVSOiB7CiAgICAgICAgICAgICBCbHVy
RmlsdGVyT3BlcmF0aW9uKiBibHVyT3BlcmF0aW9uID0gc3RhdGljX2Nhc3Q8Qmx1ckZpbHRlck9w
ZXJhdGlvbio+KGZpbHRlck9wZXJhdGlvbik7Ci0gICAgICAgICAgICBmbG9hdCBzdGREZXZpYXRp
b24gPSBibHVyT3BlcmF0aW9uLT5zdGREZXZpYXRpb24oKS5jYWxjRmxvYXRWYWx1ZSgwKTsKKyAg
ICAgICAgICAgIGZsb2F0IHN0ZERldmlhdGlvbiA9IGNhbGN1bGF0ZUZsb2F0VmFsdWUoYmx1ck9w
ZXJhdGlvbi0+c3RkRGV2aWF0aW9uKCksIDApOwogICAgICAgICAgICAgZWZmZWN0ID0gRkVHYXVz
c2lhbkJsdXI6OmNyZWF0ZSh0aGlzLCBzdGREZXZpYXRpb24sIHN0ZERldmlhdGlvbik7CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L0ZpeGVkVGFibGVMYXlvdXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9GaXhlZFRhYmxlTGF5b3V0LmNwcAkocmV2aXNpb24gMTEwNjYyKQorKysgU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL0ZpeGVkVGFibGVMYXlvdXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
NDEsNyArMjQxLDcgQEAgdm9pZCBGaXhlZFRhYmxlTGF5b3V0OjpsYXlvdXQoKQogICAgICAgICAg
ICAgY2FsY1dpZHRoW2ldID0gbV93aWR0aFtpXS52YWx1ZSgpOwogICAgICAgICAgICAgdG90YWxG
aXhlZFdpZHRoICs9IGNhbGNXaWR0aFtpXTsKICAgICAgICAgfSBlbHNlIGlmIChtX3dpZHRoW2ld
LmlzUGVyY2VudCgpKSB7Ci0gICAgICAgICAgICBjYWxjV2lkdGhbaV0gPSBtX3dpZHRoW2ldLmNh
bGNWYWx1ZSh0YWJsZUxvZ2ljYWxXaWR0aCk7CisgICAgICAgICAgICBjYWxjV2lkdGhbaV0gPSBj
YWxjdWxhdGVWYWx1ZShtX3dpZHRoW2ldLCB0YWJsZUxvZ2ljYWxXaWR0aCk7CiAgICAgICAgICAg
ICB0b3RhbFBlcmNlbnRXaWR0aCArPSBjYWxjV2lkdGhbaV07CiAgICAgICAgICAgICB0b3RhbFBl
cmNlbnQgKz0gbV93aWR0aFtpXS5wZXJjZW50KCk7CiAgICAgICAgIH0gZWxzZSBpZiAobV93aWR0
aFtpXS5pc0F1dG8oKSkgewpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJs
b2NrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxv
Y2suY3BwCShyZXZpc2lvbiAxMTA2NjIpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQmxvY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOTA0LDcgKzM5MDQsNyBAQCBMYXlvdXRV
bml0IFJlbmRlckJsb2NrOjp0ZXh0SW5kZW50T2Zmc2V0CiAgICAgTGF5b3V0VW5pdCBjdyA9IDA7
CiAgICAgaWYgKHN0eWxlKCktPnRleHRJbmRlbnQoKS5pc1BlcmNlbnQoKSkKICAgICAgICAgY3cg
PSBjb250YWluaW5nQmxvY2soKS0+YXZhaWxhYmxlTG9naWNhbFdpZHRoKCk7Ci0gICAgcmV0dXJu
IHN0eWxlKCktPnRleHRJbmRlbnQoKS5jYWxjTWluVmFsdWUoY3cpOworICAgIHJldHVybiBjYWxj
dWxhdGVNaW5WYWx1ZShzdHlsZSgpLT50ZXh0SW5kZW50KCksIGN3KTsKIH0KIAogTGF5b3V0VW5p
dCBSZW5kZXJCbG9jazo6bG9naWNhbExlZnRPZmZzZXRGb3JDb250ZW50KFJlbmRlclJlZ2lvbiog
cmVnaW9uLCBMYXlvdXRVbml0IG9mZnNldEZyb21Mb2dpY2FsVG9wT2ZGaXJzdFBhZ2UpIGNvbnN0
CkBAIC01NTQxLDcgKzU1NDEsNyBAQCB2b2lkIFJlbmRlckJsb2NrOjpjb21wdXRlSW5saW5lUHJl
ZmVycmVkCiAgICAgICAgICAgICAgICAgTGF5b3V0VW5pdCB0aSA9IDA7CiAgICAgICAgICAgICAg
ICAgaWYgKCFhZGRlZFRleHRJbmRlbnQpIHsKICAgICAgICAgICAgICAgICAgICAgYWRkZWRUZXh0
SW5kZW50ID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAgdGkgPSBzdHlsZVRvVXNlLT50ZXh0
SW5kZW50KCkuY2FsY01pblZhbHVlKGN3KTsKKyAgICAgICAgICAgICAgICAgICAgdGkgPSBjYWxj
dWxhdGVNaW5WYWx1ZShzdHlsZVRvVXNlLT50ZXh0SW5kZW50KCksIGN3KTsKICAgICAgICAgICAg
ICAgICAgICAgY2hpbGRNaW4gKz0gdGk7CiAgICAgICAgICAgICAgICAgICAgIGNoaWxkTWF4ICs9
IHRpOwogICAgICAgICAgICAgICAgIH0KQEAgLTU2MTIsNyArNTYxMiw3IEBAIHZvaWQgUmVuZGVy
QmxvY2s6OmNvbXB1dGVJbmxpbmVQcmVmZXJyZWQKICAgICAgICAgICAgICAgICBMYXlvdXRVbml0
IHRpID0gMDsKICAgICAgICAgICAgICAgICBpZiAoIWFkZGVkVGV4dEluZGVudCkgewogICAgICAg
ICAgICAgICAgICAgICBhZGRlZFRleHRJbmRlbnQgPSB0cnVlOwotICAgICAgICAgICAgICAgICAg
ICB0aSA9IHN0eWxlVG9Vc2UtPnRleHRJbmRlbnQoKS5jYWxjTWluVmFsdWUoY3cpOworICAgICAg
ICAgICAgICAgICAgICB0aSA9IGNhbGN1bGF0ZU1pblZhbHVlKHN0eWxlVG9Vc2UtPnRleHRJbmRl
bnQoKSwgY3cpOwogICAgICAgICAgICAgICAgICAgICBjaGlsZE1pbis9dGk7IGJlZ2luTWluICs9
IHRpOwogICAgICAgICAgICAgICAgICAgICBjaGlsZE1heCs9dGk7IGJlZ2luTWF4ICs9IHRpOwog
ICAgICAgICAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJC
b3guY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3gu
Y3BwCShyZXZpc2lvbiAxMTA2NjIpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
Qm94LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjIzLDggKzYyMyw4IEBAIGludCBSZW5kZXJCb3g6
OnJlZmxlY3Rpb25PZmZzZXQoKSBjb25zdAogICAgIGlmICghc3R5bGUoKS0+Ym94UmVmbGVjdCgp
KQogICAgICAgICByZXR1cm4gMDsKICAgICBpZiAoc3R5bGUoKS0+Ym94UmVmbGVjdCgpLT5kaXJl
Y3Rpb24oKSA9PSBSZWZsZWN0aW9uTGVmdCB8fCBzdHlsZSgpLT5ib3hSZWZsZWN0KCktPmRpcmVj
dGlvbigpID09IFJlZmxlY3Rpb25SaWdodCkKLSAgICAgICAgcmV0dXJuIHN0eWxlKCktPmJveFJl
ZmxlY3QoKS0+b2Zmc2V0KCkuY2FsY1ZhbHVlKGJvcmRlckJveFJlY3QoKS53aWR0aCgpKTsKLSAg
ICByZXR1cm4gc3R5bGUoKS0+Ym94UmVmbGVjdCgpLT5vZmZzZXQoKS5jYWxjVmFsdWUoYm9yZGVy
Qm94UmVjdCgpLmhlaWdodCgpKTsKKyAgICAgICAgcmV0dXJuIGNhbGN1bGF0ZVZhbHVlKHN0eWxl
KCktPmJveFJlZmxlY3QoKS0+b2Zmc2V0KCksIGJvcmRlckJveFJlY3QoKS53aWR0aCgpKTsKKyAg
ICByZXR1cm4gY2FsY3VsYXRlVmFsdWUoc3R5bGUoKS0+Ym94UmVmbGVjdCgpLT5vZmZzZXQoKSwg
Ym9yZGVyQm94UmVjdCgpLmhlaWdodCgpKTsKIH0KIAogTGF5b3V0UmVjdCBSZW5kZXJCb3g6OnJl
ZmxlY3RlZFJlY3QoY29uc3QgTGF5b3V0UmVjdCYgcikgY29uc3QKQEAgLTEyOTQsNyArMTI5NCw3
IEBAIExheW91dFJlY3QgUmVuZGVyQm94OjpjbGlwUmVjdChjb25zdCBMYXkKICAgICBMYXlvdXRS
ZWN0IGNsaXBSZWN0ID0gTGF5b3V0UmVjdChib3JkZXJCb3hSZWN0LmxvY2F0aW9uKCkgKyBsb2Nh
dGlvbiwgYm9yZGVyQm94UmVjdC5zaXplKCkpOwogCiAgICAgaWYgKCFzdHlsZSgpLT5jbGlwTGVm
dCgpLmlzQXV0bygpKSB7Ci0gICAgICAgIExheW91dFVuaXQgYyA9IHN0eWxlKCktPmNsaXBMZWZ0
KCkuY2FsY1ZhbHVlKGJvcmRlckJveFJlY3Qud2lkdGgoKSk7CisgICAgICAgIExheW91dFVuaXQg
YyA9IGNhbGN1bGF0ZVZhbHVlKHN0eWxlKCktPmNsaXBMZWZ0KCksIGJvcmRlckJveFJlY3Qud2lk
dGgoKSk7CiAgICAgICAgIGNsaXBSZWN0Lm1vdmUoYywgMCk7CiAgICAgICAgIGNsaXBSZWN0LmNv
bnRyYWN0KGMsIDApOwogICAgIH0KQEAgLTEzMDMsMTYgKzEzMDMsMTYgQEAgTGF5b3V0UmVjdCBS
ZW5kZXJCb3g6OmNsaXBSZWN0KGNvbnN0IExheQogICAgIC8vIGZyb20gdGhlIGxlZnQgYW5kIHRv
cCBlZGdlcy4gVGhlcmVmb3JlIGl0J3MgYmV0dGVyIHRvIGF2b2lkIGNvbnN0cmFpbmluZyB0byBz
bWFsbGVyIHdpZHRocyBhbmQgaGVpZ2h0cy4KIAogICAgIGlmICghc3R5bGUoKS0+Y2xpcFJpZ2h0
KCkuaXNBdXRvKCkpCi0gICAgICAgIGNsaXBSZWN0LmNvbnRyYWN0KHdpZHRoKCkgLSBzdHlsZSgp
LT5jbGlwUmlnaHQoKS5jYWxjVmFsdWUod2lkdGgoKSksIDApOworICAgICAgICBjbGlwUmVjdC5j
b250cmFjdCh3aWR0aCgpIC0gY2FsY3VsYXRlVmFsdWUoc3R5bGUoKS0+Y2xpcFJpZ2h0KCksIHdp
ZHRoKCkpLCAwKTsKIAogICAgIGlmICghc3R5bGUoKS0+Y2xpcFRvcCgpLmlzQXV0bygpKSB7Ci0g
ICAgICAgIExheW91dFVuaXQgYyA9IHN0eWxlKCktPmNsaXBUb3AoKS5jYWxjVmFsdWUoYm9yZGVy
Qm94UmVjdC5oZWlnaHQoKSk7CisgICAgICAgIExheW91dFVuaXQgYyA9IGNhbGN1bGF0ZVZhbHVl
KHN0eWxlKCktPmNsaXBUb3AoKSwgYm9yZGVyQm94UmVjdC5oZWlnaHQoKSk7CiAgICAgICAgIGNs
aXBSZWN0Lm1vdmUoMCwgYyk7CiAgICAgICAgIGNsaXBSZWN0LmNvbnRyYWN0KDAsIGMpOwogICAg
IH0KIAogICAgIGlmICghc3R5bGUoKS0+Y2xpcEJvdHRvbSgpLmlzQXV0bygpKQotICAgICAgICBj
bGlwUmVjdC5jb250cmFjdCgwLCBoZWlnaHQoKSAtIHN0eWxlKCktPmNsaXBCb3R0b20oKS5jYWxj
VmFsdWUoaGVpZ2h0KCkpKTsKKyAgICAgICAgY2xpcFJlY3QuY29udHJhY3QoMCwgaGVpZ2h0KCkg
LSBjYWxjdWxhdGVWYWx1ZShzdHlsZSgpLT5jbGlwQm90dG9tKCksIGhlaWdodCgpKSk7CiAKICAg
ICByZXR1cm4gY2xpcFJlY3Q7CiB9CkBAIC0xNzc5LDEwICsxNzc5LDEwIEBAIHZvaWQgUmVuZGVy
Qm94Ojpjb21wdXRlTG9naWNhbFdpZHRoSW5SZWcKICAgICAKICAgICBpZiAoaXNJbmxpbmUoKSAm
JiAhaXNJbmxpbmVCbG9ja09ySW5saW5lVGFibGUoKSkgewogICAgICAgICAvLyBqdXN0IGNhbGN1
bGF0ZSBtYXJnaW5zCi0gICAgICAgIHNldE1hcmdpblN0YXJ0KHN0eWxlVG9Vc2UtPm1hcmdpblN0
YXJ0KCkuY2FsY01pblZhbHVlKGNvbnRhaW5lckxvZ2ljYWxXaWR0aCkpOwotICAgICAgICBzZXRN
YXJnaW5FbmQoc3R5bGVUb1VzZS0+bWFyZ2luRW5kKCkuY2FsY01pblZhbHVlKGNvbnRhaW5lckxv
Z2ljYWxXaWR0aCkpOworICAgICAgICBzZXRNYXJnaW5TdGFydChjYWxjdWxhdGVNaW5WYWx1ZShz
dHlsZVRvVXNlLT5tYXJnaW5TdGFydCgpLCBjb250YWluZXJMb2dpY2FsV2lkdGgpKTsKKyAgICAg
ICAgc2V0TWFyZ2luRW5kKGNhbGN1bGF0ZU1pblZhbHVlKHN0eWxlVG9Vc2UtPm1hcmdpbkVuZCgp
LCBjb250YWluZXJMb2dpY2FsV2lkdGgpKTsKICAgICAgICAgaWYgKHRyZWF0QXNSZXBsYWNlZCkK
LSAgICAgICAgICAgIHNldExvZ2ljYWxXaWR0aChtYXg8TGF5b3V0VW5pdD4obG9naWNhbFdpZHRo
TGVuZ3RoLmNhbGNGbG9hdFZhbHVlKDApICsgYm9yZGVyQW5kUGFkZGluZ0xvZ2ljYWxXaWR0aCgp
LCBtaW5QcmVmZXJyZWRMb2dpY2FsV2lkdGgoKSkpOworICAgICAgICAgICAgc2V0TG9naWNhbFdp
ZHRoKG1heDxMYXlvdXRVbml0PihjYWxjdWxhdGVGbG9hdFZhbHVlKGxvZ2ljYWxXaWR0aExlbmd0
aCwgMCkgKyBib3JkZXJBbmRQYWRkaW5nTG9naWNhbFdpZHRoKCksIG1pblByZWZlcnJlZExvZ2lj
YWxXaWR0aCgpKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTE4MTgsOCArMTgxOCw4
IEBAIHZvaWQgUmVuZGVyQm94Ojpjb21wdXRlTG9naWNhbFdpZHRoSW5SZWcKIAogICAgIC8vIE1h
cmdpbiBjYWxjdWxhdGlvbnMuCiAgICAgaWYgKGxvZ2ljYWxXaWR0aExlbmd0aC5pc0F1dG8oKSB8
fCBoYXNQZXJwZW5kaWN1bGFyQ29udGFpbmluZ0Jsb2NrKSB7Ci0gICAgICAgIHNldE1hcmdpblN0
YXJ0KHN0eWxlVG9Vc2UtPm1hcmdpblN0YXJ0KCkuY2FsY01pblZhbHVlKGNvbnRhaW5lckxvZ2lj
YWxXaWR0aCkpOwotICAgICAgICBzZXRNYXJnaW5FbmQoc3R5bGVUb1VzZS0+bWFyZ2luRW5kKCku
Y2FsY01pblZhbHVlKGNvbnRhaW5lckxvZ2ljYWxXaWR0aCkpOworICAgICAgICBzZXRNYXJnaW5T
dGFydChjYWxjdWxhdGVNaW5WYWx1ZShzdHlsZVRvVXNlLT5tYXJnaW5TdGFydCgpLCBjb250YWlu
ZXJMb2dpY2FsV2lkdGgpKTsKKyAgICAgICAgc2V0TWFyZ2luRW5kKGNhbGN1bGF0ZU1pblZhbHVl
KHN0eWxlVG9Vc2UtPm1hcmdpbkVuZCgpLCBjb250YWluZXJMb2dpY2FsV2lkdGgpKTsKICAgICB9
IGVsc2UKICAgICAgICAgY29tcHV0ZUlubGluZURpcmVjdGlvbk1hcmdpbnMoY2IsIGNvbnRhaW5l
ckxvZ2ljYWxXaWR0aCwgbG9naWNhbFdpZHRoKCkpOwogCkBAIC0xODQyLDggKzE4NDIsOCBAQCBM
YXlvdXRVbml0IFJlbmRlckJveDo6Y29tcHV0ZUxvZ2ljYWxXaWR0CiAgICAgICAgIGxvZ2ljYWxX
aWR0aCA9IHN0eWxlVG9Vc2UtPmxvZ2ljYWxNYXhXaWR0aCgpOwogCiAgICAgaWYgKGxvZ2ljYWxX
aWR0aC5pc0ludHJpbnNpY09yQXV0bygpKSB7Ci0gICAgICAgIExheW91dFVuaXQgbWFyZ2luU3Rh
cnQgPSBzdHlsZVRvVXNlLT5tYXJnaW5TdGFydCgpLmNhbGNNaW5WYWx1ZShhdmFpbGFibGVMb2dp
Y2FsV2lkdGgpOwotICAgICAgICBMYXlvdXRVbml0IG1hcmdpbkVuZCA9IHN0eWxlVG9Vc2UtPm1h
cmdpbkVuZCgpLmNhbGNNaW5WYWx1ZShhdmFpbGFibGVMb2dpY2FsV2lkdGgpOworICAgICAgICBM
YXlvdXRVbml0IG1hcmdpblN0YXJ0ID0gY2FsY3VsYXRlTWluVmFsdWUoc3R5bGVUb1VzZS0+bWFy
Z2luU3RhcnQoKSwgYXZhaWxhYmxlTG9naWNhbFdpZHRoKTsKKyAgICAgICAgTGF5b3V0VW5pdCBt
YXJnaW5FbmQgPSBjYWxjdWxhdGVNaW5WYWx1ZShzdHlsZVRvVXNlLT5tYXJnaW5FbmQoKSwgYXZh
aWxhYmxlTG9naWNhbFdpZHRoKTsKICAgICAgICAgbG9naWNhbFdpZHRoUmVzdWx0ID0gYXZhaWxh
YmxlTG9naWNhbFdpZHRoIC0gbWFyZ2luU3RhcnQgLSBtYXJnaW5FbmQ7CiAKICAgICAgICAgaWYg
KHNocmlua1RvQXZvaWRGbG9hdHMoKSAmJiBjYi0+Y29udGFpbnNGbG9hdHMoKSkKQEAgLTE4NTQs
NyArMTg1NCw3IEBAIExheW91dFVuaXQgUmVuZGVyQm94Ojpjb21wdXRlTG9naWNhbFdpZHQKICAg
ICAgICAgICAgIGxvZ2ljYWxXaWR0aFJlc3VsdCA9IG1pbihsb2dpY2FsV2lkdGhSZXN1bHQsIG1h
eFByZWZlcnJlZExvZ2ljYWxXaWR0aCgpKTsKICAgICAgICAgfQogICAgIH0gZWxzZSAvLyBGSVhN
RTogSWYgdGhlIGNvbnRhaW5pbmcgYmxvY2sgZmxvdyBpcyBwZXJwZW5kaWN1bGFyIHRvIG91ciBk
aXJlY3Rpb24gd2UgbmVlZCB0byB1c2UgdGhlIGF2YWlsYWJsZSBsb2dpY2FsIGhlaWdodCBpbnN0
ZWFkLgotICAgICAgICBsb2dpY2FsV2lkdGhSZXN1bHQgPSBjb21wdXRlQm9yZGVyQm94TG9naWNh
bFdpZHRoKGxvZ2ljYWxXaWR0aC5jYWxjVmFsdWUoYXZhaWxhYmxlTG9naWNhbFdpZHRoKSk7IAor
ICAgICAgICBsb2dpY2FsV2lkdGhSZXN1bHQgPSBjb21wdXRlQm9yZGVyQm94TG9naWNhbFdpZHRo
KGNhbGN1bGF0ZVZhbHVlKGxvZ2ljYWxXaWR0aCwgYXZhaWxhYmxlTG9naWNhbFdpZHRoKSk7IAog
CiAgICAgcmV0dXJuIGxvZ2ljYWxXaWR0aFJlc3VsdDsKIH0KQEAgLTE5MjUsOCArMTkyNSw4IEBA
IHZvaWQgUmVuZGVyQm94Ojpjb21wdXRlSW5saW5lRGlyZWN0aW9uTWEKIAogICAgIGlmIChpc0Zs
b2F0aW5nKCkgfHwgaXNJbmxpbmUoKSkgewogICAgICAgICAvLyBJbmxpbmUgYmxvY2tzL3RhYmxl
cyBhbmQgZmxvYXRzIGRvbid0IGhhdmUgdGhlaXIgbWFyZ2lucyBpbmNyZWFzZWQuCi0gICAgICAg
IGNvbnRhaW5pbmdCbG9jay0+c2V0TWFyZ2luU3RhcnRGb3JDaGlsZCh0aGlzLCBtYXJnaW5TdGFy
dExlbmd0aC5jYWxjTWluVmFsdWUoY29udGFpbmVyV2lkdGgpKTsKLSAgICAgICAgY29udGFpbmlu
Z0Jsb2NrLT5zZXRNYXJnaW5FbmRGb3JDaGlsZCh0aGlzLCBtYXJnaW5FbmRMZW5ndGguY2FsY01p
blZhbHVlKGNvbnRhaW5lcldpZHRoKSk7CisgICAgICAgIGNvbnRhaW5pbmdCbG9jay0+c2V0TWFy
Z2luU3RhcnRGb3JDaGlsZCh0aGlzLCBjYWxjdWxhdGVNaW5WYWx1ZShtYXJnaW5TdGFydExlbmd0
aCwgY29udGFpbmVyV2lkdGgpKTsKKyAgICAgICAgY29udGFpbmluZ0Jsb2NrLT5zZXRNYXJnaW5F
bmRGb3JDaGlsZCh0aGlzLCBjYWxjdWxhdGVNaW5WYWx1ZShtYXJnaW5FbmRMZW5ndGgsIGNvbnRh
aW5lcldpZHRoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTE5NDAsNyArMTk0MCw3
IEBAIHZvaWQgUmVuZGVyQm94Ojpjb21wdXRlSW5saW5lRGlyZWN0aW9uTWEKICAgICAKICAgICAv
LyBDYXNlIFR3bzogVGhlIG9iamVjdCBpcyBiZWluZyBwdXNoZWQgdG8gdGhlIHN0YXJ0IG9mIHRo
ZSBjb250YWluaW5nIGJsb2NrJ3MgYXZhaWxhYmxlIGxvZ2ljYWwgd2lkdGguCiAgICAgaWYgKG1h
cmdpbkVuZExlbmd0aC5pc0F1dG8oKSAmJiBjaGlsZFdpZHRoIDwgY29udGFpbmVyV2lkdGgpIHsK
LSAgICAgICAgY29udGFpbmluZ0Jsb2NrLT5zZXRNYXJnaW5TdGFydEZvckNoaWxkKHRoaXMsIG1h
cmdpblN0YXJ0TGVuZ3RoLmNhbGNWYWx1ZShjb250YWluZXJXaWR0aCkpOworICAgICAgICBjb250
YWluaW5nQmxvY2stPnNldE1hcmdpblN0YXJ0Rm9yQ2hpbGQodGhpcywgY2FsY3VsYXRlVmFsdWUo
bWFyZ2luU3RhcnRMZW5ndGgsIGNvbnRhaW5lcldpZHRoKSk7CiAgICAgICAgIGNvbnRhaW5pbmdC
bG9jay0+c2V0TWFyZ2luRW5kRm9yQ2hpbGQodGhpcywgY29udGFpbmVyV2lkdGggLSBjaGlsZFdp
ZHRoIC0gY29udGFpbmluZ0Jsb2NrLT5tYXJnaW5TdGFydEZvckNoaWxkKHRoaXMpKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0gCkBAIC0xOTQ5LDE1ICsxOTQ5LDE1IEBAIHZvaWQgUmVuZGVyQm94
Ojpjb21wdXRlSW5saW5lRGlyZWN0aW9uTWEKICAgICBib29sIHB1c2hUb0VuZEZyb21UZXh0QWxp
Z24gPSAhbWFyZ2luRW5kTGVuZ3RoLmlzQXV0bygpICYmICgoIWNvbnRhaW5pbmdCbG9ja1N0eWxl
LT5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkgJiYgY29udGFpbmluZ0Jsb2NrU3R5bGUtPnRleHRB
bGlnbigpID09IFdFQktJVF9MRUZUKQogICAgICAgICB8fCAoY29udGFpbmluZ0Jsb2NrU3R5bGUt
PmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSAmJiBjb250YWluaW5nQmxvY2tTdHlsZS0+dGV4dEFs
aWduKCkgPT0gV0VCS0lUX1JJR0hUKSk7CiAgICAgaWYgKChtYXJnaW5TdGFydExlbmd0aC5pc0F1
dG8oKSAmJiBjaGlsZFdpZHRoIDwgY29udGFpbmVyV2lkdGgpIHx8IHB1c2hUb0VuZEZyb21UZXh0
QWxpZ24pIHsKLSAgICAgICAgY29udGFpbmluZ0Jsb2NrLT5zZXRNYXJnaW5FbmRGb3JDaGlsZCh0
aGlzLCBtYXJnaW5FbmRMZW5ndGguY2FsY1ZhbHVlKGNvbnRhaW5lcldpZHRoKSk7CisgICAgICAg
IGNvbnRhaW5pbmdCbG9jay0+c2V0TWFyZ2luRW5kRm9yQ2hpbGQodGhpcywgY2FsY3VsYXRlVmFs
dWUobWFyZ2luRW5kTGVuZ3RoLCBjb250YWluZXJXaWR0aCkpOwogICAgICAgICBjb250YWluaW5n
QmxvY2stPnNldE1hcmdpblN0YXJ0Rm9yQ2hpbGQodGhpcywgY29udGFpbmVyV2lkdGggLSBjaGls
ZFdpZHRoIC0gY29udGFpbmluZ0Jsb2NrLT5tYXJnaW5FbmRGb3JDaGlsZCh0aGlzKSk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9IAogICAgIAogICAgIC8vIENhc2UgRm91cjogRWl0aGVyIG5vIGF1
dG8gbWFyZ2lucywgb3Igb3VyIHdpZHRoIGlzID49IHRoZSBjb250YWluZXIgd2lkdGggKGNzczIu
MSwgMTAuMy4zKS4gIEluIHRoYXQgY2FzZQogICAgIC8vIGF1dG8gbWFyZ2lucyB3aWxsIGp1c3Qg
dHVybiBpbnRvIDAuCi0gICAgY29udGFpbmluZ0Jsb2NrLT5zZXRNYXJnaW5TdGFydEZvckNoaWxk
KHRoaXMsIG1hcmdpblN0YXJ0TGVuZ3RoLmNhbGNNaW5WYWx1ZShjb250YWluZXJXaWR0aCkpOwot
ICAgIGNvbnRhaW5pbmdCbG9jay0+c2V0TWFyZ2luRW5kRm9yQ2hpbGQodGhpcywgbWFyZ2luRW5k
TGVuZ3RoLmNhbGNNaW5WYWx1ZShjb250YWluZXJXaWR0aCkpOworICAgIGNvbnRhaW5pbmdCbG9j
ay0+c2V0TWFyZ2luU3RhcnRGb3JDaGlsZCh0aGlzLCBjYWxjdWxhdGVNaW5WYWx1ZShtYXJnaW5T
dGFydExlbmd0aCwgY29udGFpbmVyV2lkdGgpKTsKKyAgICBjb250YWluaW5nQmxvY2stPnNldE1h
cmdpbkVuZEZvckNoaWxkKHRoaXMsIGNhbGN1bGF0ZU1pblZhbHVlKG1hcmdpbkVuZExlbmd0aCwg
Y29udGFpbmVyV2lkdGgpKTsKIH0KIAogUmVuZGVyQm94UmVnaW9uSW5mbyogUmVuZGVyQm94Ojpy
ZW5kZXJCb3hSZWdpb25JbmZvKFJlbmRlclJlZ2lvbiogcmVnaW9uLCBMYXlvdXRVbml0IG9mZnNl
dEZyb21Mb2dpY2FsVG9wT2ZGaXJzdFBhZ2UsIFJlbmRlckJveFJlZ2lvbkluZm9GbGFncyBjYWNo
ZUZsYWcpIGNvbnN0CkBAIC0yMjQxLDcgKzIyNDEsNyBAQCBMYXlvdXRVbml0IFJlbmRlckJveDo6
Y29tcHV0ZVBlcmNlbnRhZ2VMCiAgICAgICAgIHJlc3VsdCA9IGNiLT5jb21wdXRlQ29udGVudEJv
eExvZ2ljYWxIZWlnaHQoY2ItPmF2YWlsYWJsZUxvZ2ljYWxIZWlnaHQoKSk7CiAKICAgICBpZiAo
cmVzdWx0ICE9IC0xKSB7Ci0gICAgICAgIHJlc3VsdCA9IGhlaWdodC5jYWxjVmFsdWUocmVzdWx0
KTsKKyAgICAgICAgcmVzdWx0ID0gY2FsY3VsYXRlVmFsdWUoaGVpZ2h0LCByZXN1bHQpOwogICAg
ICAgICBpZiAoaW5jbHVkZUJvcmRlclBhZGRpbmcpIHsKICAgICAgICAgICAgIC8vIEl0IGlzIG5l
Y2Vzc2FyeSB0byB1c2UgdGhlIGJvcmRlci1ib3ggdG8gbWF0Y2ggV2luSUUncyBicm9rZW4KICAg
ICAgICAgICAgIC8vIGJveCBtb2RlbC4gIFRoaXMgaXMgZXNzZW50aWFsIGZvciBzaXppbmcgaW5z
aWRlCkBAIC0yMjc2LDcgKzIyNzYsNyBAQCBMYXlvdXRVbml0IFJlbmRlckJveDo6Y29tcHV0ZVJl
cGxhY2VkTG9nCiAgICAgICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NDY0OTYKICAgICAgICAgICAgIGNvbnN0IExheW91dFVuaXQgY3cgPSBpc1Bvc2l0
aW9uZWQoKSA/IGNvbnRhaW5pbmdCbG9ja0xvZ2ljYWxXaWR0aEZvclBvc2l0aW9uZWQodG9SZW5k
ZXJCb3hNb2RlbE9iamVjdChjb250YWluZXIoKSkpIDogY29udGFpbmluZ0Jsb2NrTG9naWNhbFdp
ZHRoRm9yQ29udGVudCgpOwogICAgICAgICAgICAgaWYgKGN3ID4gMCkKLSAgICAgICAgICAgICAg
ICByZXR1cm4gY29tcHV0ZUNvbnRlbnRCb3hMb2dpY2FsV2lkdGgobG9naWNhbFdpZHRoLmNhbGNN
aW5WYWx1ZShjdykpOworICAgICAgICAgICAgICAgIHJldHVybiBjb21wdXRlQ29udGVudEJveExv
Z2ljYWxXaWR0aChjYWxjdWxhdGVNaW5WYWx1ZShsb2dpY2FsV2lkdGgsIGN3KSk7CiAgICAgICAg
IH0KICAgICAgICAgLy8gZmFsbCB0aHJvdWdoCiAgICAgICAgIGRlZmF1bHQ6CkBAIC0yMzE4LDcg
KzIzMTgsNyBAQCBMYXlvdXRVbml0IFJlbmRlckJveDo6Y29tcHV0ZVJlcGxhY2VkTG9nCiAgICAg
ICAgICAgICAgICAgYmxvY2stPmNvbXB1dGVMb2dpY2FsSGVpZ2h0KCk7CiAgICAgICAgICAgICAg
ICAgTGF5b3V0VW5pdCBuZXdIZWlnaHQgPSBibG9jay0+Y29tcHV0ZUNvbnRlbnRCb3hMb2dpY2Fs
SGVpZ2h0KGJsb2NrLT5jb250ZW50SGVpZ2h0KCkpOwogICAgICAgICAgICAgICAgIGJsb2NrLT5z
ZXRIZWlnaHQob2xkSGVpZ2h0KTsKLSAgICAgICAgICAgICAgICByZXR1cm4gY29tcHV0ZUNvbnRl
bnRCb3hMb2dpY2FsSGVpZ2h0KGxvZ2ljYWxIZWlnaHQuY2FsY1ZhbHVlKG5ld0hlaWdodCkpOwor
ICAgICAgICAgICAgICAgIHJldHVybiBjb21wdXRlQ29udGVudEJveExvZ2ljYWxIZWlnaHQoY2Fs
Y3VsYXRlVmFsdWUobG9naWNhbEhlaWdodCwgbmV3SGVpZ2h0KSk7CiAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICAKICAgICAgICAgICAgIC8vIEZJWE1FOiBhdmFpbGFibGVMb2dpY2FsSGVpZ2h0
KCkgaXMgd3JvbmcgaWYgdGhlIHJlcGxhY2VkIGVsZW1lbnQncyBibG9jay1mbG93IGlzIHBlcnBl
bmRpY3VsYXIgdG8gdGhlCkBAIC0yMzM5LDEyICsyMzM5LDEyIEBAIExheW91dFVuaXQgUmVuZGVy
Qm94Ojpjb21wdXRlUmVwbGFjZWRMb2cKICAgICAgICAgICAgICAgICAgICAgICAgIC8vIERvbid0
IGxldCB0YWJsZSBjZWxscyBzcXVlZXplIHBlcmNlbnQtaGVpZ2h0IHJlcGxhY2VkIGVsZW1lbnRz
CiAgICAgICAgICAgICAgICAgICAgICAgICAvLyA8aHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTUzNTk+CiAgICAgICAgICAgICAgICAgICAgICAgICBhdmFpbGFibGVIZWln
aHQgPSBtYXgoYXZhaWxhYmxlSGVpZ2h0LCBpbnRyaW5zaWNMb2dpY2FsSGVpZ2h0KCkpOwotICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxvZ2ljYWxIZWlnaHQuY2FsY1ZhbHVlKGF2YWls
YWJsZUhlaWdodCAtIGJvcmRlckFuZFBhZGRpbmdMb2dpY2FsSGVpZ2h0KCkpOworICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIGNhbGN1bGF0ZVZhbHVlKGxvZ2ljYWxIZWlnaHQsIGF2YWls
YWJsZUhlaWdodCAtIGJvcmRlckFuZFBhZGRpbmdMb2dpY2FsSGVpZ2h0KCkpOwogICAgICAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIGNiID0gY2ItPmNvbnRhaW5pbmdCbG9j
aygpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVy
biBjb21wdXRlQ29udGVudEJveExvZ2ljYWxIZWlnaHQobG9naWNhbEhlaWdodC5jYWxjVmFsdWUo
YXZhaWxhYmxlSGVpZ2h0KSk7CisgICAgICAgICAgICByZXR1cm4gY29tcHV0ZUNvbnRlbnRCb3hM
b2dpY2FsSGVpZ2h0KGNhbGN1bGF0ZVZhbHVlKGxvZ2ljYWxIZWlnaHQsIGF2YWlsYWJsZUhlaWdo
dCkpOwogICAgICAgICB9CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICByZXR1cm4gaW50
cmluc2ljTG9naWNhbEhlaWdodCgpOwpAQCAtMjM3OSw3ICsyMzc5LDcgQEAgTGF5b3V0VW5pdCBS
ZW5kZXJCb3g6OmF2YWlsYWJsZUxvZ2ljYWxIZQogICAgICAgICAgICAgYXZhaWxhYmxlSGVpZ2h0
ID0gY29udGFpbmluZ0Jsb2NrTG9naWNhbEhlaWdodEZvclBvc2l0aW9uZWQoY29udGFpbmluZ0Js
b2NrKCkpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBhdmFpbGFibGVIZWlnaHQgPSBjb250
YWluaW5nQmxvY2soKS0+YXZhaWxhYmxlTG9naWNhbEhlaWdodCgpOwotICAgICAgICByZXR1cm4g
Y29tcHV0ZUNvbnRlbnRCb3hMb2dpY2FsSGVpZ2h0KGguY2FsY1ZhbHVlKGF2YWlsYWJsZUhlaWdo
dCkpOworICAgICAgICByZXR1cm4gY29tcHV0ZUNvbnRlbnRCb3hMb2dpY2FsSGVpZ2h0KGNhbGN1
bGF0ZVZhbHVlKGgsIGF2YWlsYWJsZUhlaWdodCkpOwogICAgIH0KIAogICAgIC8vIEZJWE1FOiBX
ZSBjYW4ndCBqdXN0IGNoZWNrIHRvcC9ib3R0b20gaGVyZS4KQEAgLTI0MTEsOCArMjQxMSw4IEBA
IHZvaWQgUmVuZGVyQm94Ojpjb21wdXRlQmxvY2tEaXJlY3Rpb25NYXIKICAgICBMYXlvdXRVbml0
IGN3ID0gY29udGFpbmluZ0Jsb2NrTG9naWNhbFdpZHRoRm9yQ29udGVudCgpOwogCiAgICAgUmVu
ZGVyU3R5bGUqIGNvbnRhaW5pbmdCbG9ja1N0eWxlID0gY29udGFpbmluZ0Jsb2NrLT5zdHlsZSgp
OwotICAgIGNvbnRhaW5pbmdCbG9jay0+c2V0TWFyZ2luQmVmb3JlRm9yQ2hpbGQodGhpcywgc3R5
bGUoKS0+bWFyZ2luQmVmb3JlVXNpbmcoY29udGFpbmluZ0Jsb2NrU3R5bGUpLmNhbGNNaW5WYWx1
ZShjdykpOwotICAgIGNvbnRhaW5pbmdCbG9jay0+c2V0TWFyZ2luQWZ0ZXJGb3JDaGlsZCh0aGlz
LCBzdHlsZSgpLT5tYXJnaW5BZnRlclVzaW5nKGNvbnRhaW5pbmdCbG9ja1N0eWxlKS5jYWxjTWlu
VmFsdWUoY3cpKTsKKyAgICBjb250YWluaW5nQmxvY2stPnNldE1hcmdpbkJlZm9yZUZvckNoaWxk
KHRoaXMsIGNhbGN1bGF0ZU1pblZhbHVlKHN0eWxlKCktPm1hcmdpbkJlZm9yZVVzaW5nKGNvbnRh
aW5pbmdCbG9ja1N0eWxlKSwgY3cpKTsKKyAgICBjb250YWluaW5nQmxvY2stPnNldE1hcmdpbkFm
dGVyRm9yQ2hpbGQodGhpcywgY2FsY3VsYXRlTWluVmFsdWUoc3R5bGUoKS0+bWFyZ2luQWZ0ZXJV
c2luZyhjb250YWluaW5nQmxvY2tTdHlsZSksIGN3KSk7CiB9CiAKIExheW91dFVuaXQgUmVuZGVy
Qm94Ojpjb250YWluaW5nQmxvY2tMb2dpY2FsV2lkdGhGb3JQb3NpdGlvbmVkKGNvbnN0IFJlbmRl
ckJveE1vZGVsT2JqZWN0KiBjb250YWluaW5nQmxvY2ssIFJlbmRlclJlZ2lvbiogcmVnaW9uLApA
QCAtMjc1MiwxMCArMjc1MiwxMCBAQCB2b2lkIFJlbmRlckJveDo6Y29tcHV0ZVBvc2l0aW9uZWRM
b2dpY2FsCiAgICAgICAgIC8vIE5PVEU6ICBJdCBpcyBub3QgbmVjZXNzYXJ5IHRvIHNvbHZlIGZv
ciAncmlnaHQnIGluIHRoZSBvdmVyIGNvbnN0cmFpbmVkCiAgICAgICAgIC8vIGNhc2UgYmVjYXVz
ZSB0aGUgdmFsdWUgaXMgbm90IHVzZWQgZm9yIGFueSBmdXJ0aGVyIGNhbGN1bGF0aW9ucy4KIAot
ICAgICAgICBsb2dpY2FsTGVmdFZhbHVlID0gbG9naWNhbExlZnQuY2FsY1ZhbHVlKGNvbnRhaW5l
ckxvZ2ljYWxXaWR0aCk7Ci0gICAgICAgIGxvZ2ljYWxXaWR0aFZhbHVlID0gY29tcHV0ZUNvbnRl
bnRCb3hMb2dpY2FsV2lkdGgobG9naWNhbFdpZHRoLmNhbGNWYWx1ZShjb250YWluZXJMb2dpY2Fs
V2lkdGgpKTsKKyAgICAgICAgbG9naWNhbExlZnRWYWx1ZSA9IGNhbGN1bGF0ZVZhbHVlKGxvZ2lj
YWxMZWZ0LCBjb250YWluZXJMb2dpY2FsV2lkdGgpOworICAgICAgICBsb2dpY2FsV2lkdGhWYWx1
ZSA9IGNvbXB1dGVDb250ZW50Qm94TG9naWNhbFdpZHRoKGNhbGN1bGF0ZVZhbHVlKGxvZ2ljYWxX
aWR0aCwgY29udGFpbmVyTG9naWNhbFdpZHRoKSk7CiAKLSAgICAgICAgY29uc3QgTGF5b3V0VW5p
dCBhdmFpbGFibGVTcGFjZSA9IGNvbnRhaW5lckxvZ2ljYWxXaWR0aCAtIChsb2dpY2FsTGVmdFZh
bHVlICsgbG9naWNhbFdpZHRoVmFsdWUgKyBsb2dpY2FsUmlnaHQuY2FsY1ZhbHVlKGNvbnRhaW5l
ckxvZ2ljYWxXaWR0aCkgKyBib3JkZXJzUGx1c1BhZGRpbmcpOworICAgICAgICBjb25zdCBMYXlv
dXRVbml0IGF2YWlsYWJsZVNwYWNlID0gY29udGFpbmVyTG9naWNhbFdpZHRoIC0gKGxvZ2ljYWxM
ZWZ0VmFsdWUgKyBsb2dpY2FsV2lkdGhWYWx1ZSArIGNhbGN1bGF0ZVZhbHVlKGxvZ2ljYWxSaWdo
dCwgY29udGFpbmVyTG9naWNhbFdpZHRoKSArIGJvcmRlcnNQbHVzUGFkZGluZyk7CiAKICAgICAg
ICAgLy8gTWFyZ2lucyBhcmUgbm93IHRoZSBvbmx5IHVua25vd24KICAgICAgICAgaWYgKG1hcmdp
bkxvZ2ljYWxMZWZ0LmlzQXV0bygpICYmIG1hcmdpbkxvZ2ljYWxSaWdodC5pc0F1dG8oKSkgewpA
QCAtMjc3NiwxNiArMjc3NiwxNiBAQCB2b2lkIFJlbmRlckJveDo6Y29tcHV0ZVBvc2l0aW9uZWRM
b2dpY2FsCiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZSBpZiAobWFyZ2luTG9naWNhbExl
ZnQuaXNBdXRvKCkpIHsKICAgICAgICAgICAgIC8vIFNvbHZlIGZvciBsZWZ0IG1hcmdpbgotICAg
ICAgICAgICAgbWFyZ2luTG9naWNhbFJpZ2h0VmFsdWUgPSBtYXJnaW5Mb2dpY2FsUmlnaHQuY2Fs
Y1ZhbHVlKGNvbnRhaW5lckxvZ2ljYWxXaWR0aCk7CisgICAgICAgICAgICBtYXJnaW5Mb2dpY2Fs
UmlnaHRWYWx1ZSA9IGNhbGN1bGF0ZVZhbHVlKG1hcmdpbkxvZ2ljYWxSaWdodCwgY29udGFpbmVy
TG9naWNhbFdpZHRoKTsKICAgICAgICAgICAgIG1hcmdpbkxvZ2ljYWxMZWZ0VmFsdWUgPSBhdmFp
bGFibGVTcGFjZSAtIG1hcmdpbkxvZ2ljYWxSaWdodFZhbHVlOwogICAgICAgICB9IGVsc2UgaWYg
KG1hcmdpbkxvZ2ljYWxSaWdodC5pc0F1dG8oKSkgewogICAgICAgICAgICAgLy8gU29sdmUgZm9y
IHJpZ2h0IG1hcmdpbgotICAgICAgICAgICAgbWFyZ2luTG9naWNhbExlZnRWYWx1ZSA9IG1hcmdp
bkxvZ2ljYWxMZWZ0LmNhbGNWYWx1ZShjb250YWluZXJMb2dpY2FsV2lkdGgpOworICAgICAgICAg
ICAgbWFyZ2luTG9naWNhbExlZnRWYWx1ZSA9IGNhbGN1bGF0ZVZhbHVlKG1hcmdpbkxvZ2ljYWxM
ZWZ0LCBjb250YWluZXJMb2dpY2FsV2lkdGgpOwogICAgICAgICAgICAgbWFyZ2luTG9naWNhbFJp
Z2h0VmFsdWUgPSBhdmFpbGFibGVTcGFjZSAtIG1hcmdpbkxvZ2ljYWxMZWZ0VmFsdWU7CiAgICAg
ICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAvLyBPdmVyLWNvbnN0cmFpbmVkLCBzb2x2ZSBmb3Ig
bGVmdCBpZiBkaXJlY3Rpb24gaXMgUlRMCi0gICAgICAgICAgICBtYXJnaW5Mb2dpY2FsTGVmdFZh
bHVlID0gbWFyZ2luTG9naWNhbExlZnQuY2FsY1ZhbHVlKGNvbnRhaW5lckxvZ2ljYWxXaWR0aCk7
Ci0gICAgICAgICAgICBtYXJnaW5Mb2dpY2FsUmlnaHRWYWx1ZSA9IG1hcmdpbkxvZ2ljYWxSaWdo
dC5jYWxjVmFsdWUoY29udGFpbmVyTG9naWNhbFdpZHRoKTsKKyAgICAgICAgICAgIG1hcmdpbkxv
Z2ljYWxMZWZ0VmFsdWUgPSBjYWxjdWxhdGVWYWx1ZShtYXJnaW5Mb2dpY2FsTGVmdCwgY29udGFp
bmVyTG9naWNhbFdpZHRoKTsKKyAgICAgICAgICAgIG1hcmdpbkxvZ2ljYWxSaWdodFZhbHVlID0g
Y2FsY3VsYXRlVmFsdWUobWFyZ2luTG9naWNhbFJpZ2h0LCBjb250YWluZXJMb2dpY2FsV2lkdGgp
OwogCiAgICAgICAgICAgICAvLyBVc2UgdGhlIGNvbnRhaW5pbmcgYmxvY2sncyBkaXJlY3Rpb24g
cmF0aGVyIHRoYW4gdGhlIHBhcmVudCBibG9jaydzCiAgICAgICAgICAgICAvLyBwZXIgQ1NTIDIu
MSByZWZlcmVuY2UgdGVzdCBhYnNwb3Mtbm9uLXJlcGxhY2VkLXdpZHRoLW1hcmdpbi0wMDAuCkBA
IC0yODM1LDggKzI4MzUsOCBAQCB2b2lkIFJlbmRlckJveDo6Y29tcHV0ZVBvc2l0aW9uZWRMb2dp
Y2FsCiAgICAgICAgIC8vIGJlY2F1c2UgdGhlIHZhbHVlIGlzIG5vdCB1c2VkIGZvciBhbnkgZnVy
dGhlciBjYWxjdWxhdGlvbnMuCiAKICAgICAgICAgLy8gQ2FsY3VsYXRlIG1hcmdpbnMsICdhdXRv
JyBtYXJnaW5zIGFyZSBpZ25vcmVkLgotICAgICAgICBtYXJnaW5Mb2dpY2FsTGVmdFZhbHVlID0g
bWFyZ2luTG9naWNhbExlZnQuY2FsY01pblZhbHVlKGNvbnRhaW5lckxvZ2ljYWxXaWR0aCk7Ci0g
ICAgICAgIG1hcmdpbkxvZ2ljYWxSaWdodFZhbHVlID0gbWFyZ2luTG9naWNhbFJpZ2h0LmNhbGNN
aW5WYWx1ZShjb250YWluZXJMb2dpY2FsV2lkdGgpOworICAgICAgICBtYXJnaW5Mb2dpY2FsTGVm
dFZhbHVlID0gY2FsY3VsYXRlTWluVmFsdWUobWFyZ2luTG9naWNhbExlZnQsIGNvbnRhaW5lckxv
Z2ljYWxXaWR0aCk7CisgICAgICAgIG1hcmdpbkxvZ2ljYWxSaWdodFZhbHVlID0gY2FsY3VsYXRl
TWluVmFsdWUobWFyZ2luTG9naWNhbFJpZ2h0LCBjb250YWluZXJMb2dpY2FsV2lkdGgpOwogCiAg
ICAgICAgIGNvbnN0IExheW91dFVuaXQgYXZhaWxhYmxlU3BhY2UgPSBjb250YWluZXJMb2dpY2Fs
V2lkdGggLSAobWFyZ2luTG9naWNhbExlZnRWYWx1ZSArIG1hcmdpbkxvZ2ljYWxSaWdodFZhbHVl
ICsgYm9yZGVyc1BsdXNQYWRkaW5nKTsKIApAQCAtMjg0NCw3ICsyODQ0LDcgQEAgdm9pZCBSZW5k
ZXJCb3g6OmNvbXB1dGVQb3NpdGlvbmVkTG9naWNhbAogICAgICAgICAvLyBVc2UgcnVsZS9jYXNl
IHRoYXQgYXBwbGllcy4KICAgICAgICAgaWYgKGxvZ2ljYWxMZWZ0SXNBdXRvICYmIGxvZ2ljYWxX
aWR0aElzQXV0byAmJiAhbG9naWNhbFJpZ2h0SXNBdXRvKSB7CiAgICAgICAgICAgICAvLyBSVUxF
IDE6ICh1c2Ugc2hyaW5rLXRvLWZpdCBmb3Igd2lkdGgsIGFuZCBzb2x2ZSBvZiBsZWZ0KQotICAg
ICAgICAgICAgTGF5b3V0VW5pdCBsb2dpY2FsUmlnaHRWYWx1ZSA9IGxvZ2ljYWxSaWdodC5jYWxj
VmFsdWUoY29udGFpbmVyTG9naWNhbFdpZHRoKTsKKyAgICAgICAgICAgIExheW91dFVuaXQgbG9n
aWNhbFJpZ2h0VmFsdWUgPSBjYWxjdWxhdGVWYWx1ZShsb2dpY2FsUmlnaHQsIGNvbnRhaW5lckxv
Z2ljYWxXaWR0aCk7CiAKICAgICAgICAgICAgIC8vIEZJWE1FOiB3b3VsZCBpdCBiZSBiZXR0ZXIg
dG8gaGF2ZSBzaHJpbmstdG8tZml0IGluIG9uZSBzdGVwPwogICAgICAgICAgICAgTGF5b3V0VW5p
dCBwcmVmZXJyZWRXaWR0aCA9IG1heFByZWZlcnJlZExvZ2ljYWxXaWR0aCgpIC0gYm9yZGVyc1Bs
dXNQYWRkaW5nOwpAQCAtMjg1NCw3ICsyODU0LDcgQEAgdm9pZCBSZW5kZXJCb3g6OmNvbXB1dGVQ
b3NpdGlvbmVkTG9naWNhbAogICAgICAgICAgICAgbG9naWNhbExlZnRWYWx1ZSA9IGF2YWlsYWJs
ZVNwYWNlIC0gKGxvZ2ljYWxXaWR0aFZhbHVlICsgbG9naWNhbFJpZ2h0VmFsdWUpOwogICAgICAg
ICB9IGVsc2UgaWYgKCFsb2dpY2FsTGVmdElzQXV0byAmJiBsb2dpY2FsV2lkdGhJc0F1dG8gJiYg
bG9naWNhbFJpZ2h0SXNBdXRvKSB7CiAgICAgICAgICAgICAvLyBSVUxFIDM6ICh1c2Ugc2hyaW5r
LXRvLWZpdCBmb3Igd2lkdGgsIGFuZCBubyBuZWVkIHNvbHZlIG9mIHJpZ2h0KQotICAgICAgICAg
ICAgbG9naWNhbExlZnRWYWx1ZSA9IGxvZ2ljYWxMZWZ0LmNhbGNWYWx1ZShjb250YWluZXJMb2dp
Y2FsV2lkdGgpOworICAgICAgICAgICAgbG9naWNhbExlZnRWYWx1ZSA9IGNhbGN1bGF0ZVZhbHVl
KGxvZ2ljYWxMZWZ0LCBjb250YWluZXJMb2dpY2FsV2lkdGgpOwogCiAgICAgICAgICAgICAvLyBG
SVhNRTogd291bGQgaXQgYmUgYmV0dGVyIHRvIGhhdmUgc2hyaW5rLXRvLWZpdCBpbiBvbmUgc3Rl
cD8KICAgICAgICAgICAgIExheW91dFVuaXQgcHJlZmVycmVkV2lkdGggPSBtYXhQcmVmZXJyZWRM
b2dpY2FsV2lkdGgoKSAtIGJvcmRlcnNQbHVzUGFkZGluZzsKQEAgLTI4NjMsMTYgKzI4NjMsMTYg
QEAgdm9pZCBSZW5kZXJCb3g6OmNvbXB1dGVQb3NpdGlvbmVkTG9naWNhbAogICAgICAgICAgICAg
bG9naWNhbFdpZHRoVmFsdWUgPSBtaW4obWF4KHByZWZlcnJlZE1pbldpZHRoLCBhdmFpbGFibGVX
aWR0aCksIHByZWZlcnJlZFdpZHRoKTsKICAgICAgICAgfSBlbHNlIGlmIChsb2dpY2FsTGVmdElz
QXV0byAmJiAhbG9naWNhbFdpZHRoSXNBdXRvICYmICFsb2dpY2FsUmlnaHRJc0F1dG8pIHsKICAg
ICAgICAgICAgIC8vIFJVTEUgNDogKHNvbHZlIGZvciBsZWZ0KQotICAgICAgICAgICAgbG9naWNh
bFdpZHRoVmFsdWUgPSBjb21wdXRlQ29udGVudEJveExvZ2ljYWxXaWR0aChsb2dpY2FsV2lkdGgu
Y2FsY1ZhbHVlKGNvbnRhaW5lckxvZ2ljYWxXaWR0aCkpOwotICAgICAgICAgICAgbG9naWNhbExl
ZnRWYWx1ZSA9IGF2YWlsYWJsZVNwYWNlIC0gKGxvZ2ljYWxXaWR0aFZhbHVlICsgbG9naWNhbFJp
Z2h0LmNhbGNWYWx1ZShjb250YWluZXJMb2dpY2FsV2lkdGgpKTsKKyAgICAgICAgICAgIGxvZ2lj
YWxXaWR0aFZhbHVlID0gY29tcHV0ZUNvbnRlbnRCb3hMb2dpY2FsV2lkdGgoY2FsY3VsYXRlVmFs
dWUobG9naWNhbFdpZHRoLCBjb250YWluZXJMb2dpY2FsV2lkdGgpKTsKKyAgICAgICAgICAgIGxv
Z2ljYWxMZWZ0VmFsdWUgPSBhdmFpbGFibGVTcGFjZSAtIChsb2dpY2FsV2lkdGhWYWx1ZSArIGNh
bGN1bGF0ZVZhbHVlKGxvZ2ljYWxSaWdodCwgY29udGFpbmVyTG9naWNhbFdpZHRoKSk7CiAgICAg
ICAgIH0gZWxzZSBpZiAoIWxvZ2ljYWxMZWZ0SXNBdXRvICYmIGxvZ2ljYWxXaWR0aElzQXV0byAm
JiAhbG9naWNhbFJpZ2h0SXNBdXRvKSB7CiAgICAgICAgICAgICAvLyBSVUxFIDU6IChzb2x2ZSBm
b3Igd2lkdGgpCi0gICAgICAgICAgICBsb2dpY2FsTGVmdFZhbHVlID0gbG9naWNhbExlZnQuY2Fs
Y1ZhbHVlKGNvbnRhaW5lckxvZ2ljYWxXaWR0aCk7Ci0gICAgICAgICAgICBsb2dpY2FsV2lkdGhW
YWx1ZSA9IGF2YWlsYWJsZVNwYWNlIC0gKGxvZ2ljYWxMZWZ0VmFsdWUgKyBsb2dpY2FsUmlnaHQu
Y2FsY1ZhbHVlKGNvbnRhaW5lckxvZ2ljYWxXaWR0aCkpOworICAgICAgICAgICAgbG9naWNhbExl
ZnRWYWx1ZSA9IGNhbGN1bGF0ZVZhbHVlKGxvZ2ljYWxMZWZ0LCBjb250YWluZXJMb2dpY2FsV2lk
dGgpOworICAgICAgICAgICAgbG9naWNhbFdpZHRoVmFsdWUgPSBhdmFpbGFibGVTcGFjZSAtIChs
b2dpY2FsTGVmdFZhbHVlICsgY2FsY3VsYXRlVmFsdWUobG9naWNhbFJpZ2h0LCBjb250YWluZXJM
b2dpY2FsV2lkdGgpKTsKICAgICAgICAgfSBlbHNlIGlmICghbG9naWNhbExlZnRJc0F1dG8gJiYg
IWxvZ2ljYWxXaWR0aElzQXV0byAmJiBsb2dpY2FsUmlnaHRJc0F1dG8pIHsKICAgICAgICAgICAg
IC8vIFJVTEUgNjogKG5vIG5lZWQgc29sdmUgZm9yIHJpZ2h0KQotICAgICAgICAgICAgbG9naWNh
bExlZnRWYWx1ZSA9IGxvZ2ljYWxMZWZ0LmNhbGNWYWx1ZShjb250YWluZXJMb2dpY2FsV2lkdGgp
OwotICAgICAgICAgICAgbG9naWNhbFdpZHRoVmFsdWUgPSBjb21wdXRlQ29udGVudEJveExvZ2lj
YWxXaWR0aChsb2dpY2FsV2lkdGguY2FsY1ZhbHVlKGNvbnRhaW5lckxvZ2ljYWxXaWR0aCkpOwor
ICAgICAgICAgICAgbG9naWNhbExlZnRWYWx1ZSA9IGNhbGN1bGF0ZVZhbHVlKGxvZ2ljYWxMZWZ0
LCBjb250YWluZXJMb2dpY2FsV2lkdGgpOworICAgICAgICAgICAgbG9naWNhbFdpZHRoVmFsdWUg
PSBjb21wdXRlQ29udGVudEJveExvZ2ljYWxXaWR0aChjYWxjdWxhdGVWYWx1ZShsb2dpY2FsV2lk
dGgsIGNvbnRhaW5lckxvZ2ljYWxXaWR0aCkpOwogICAgICAgICB9CiAgICAgfQogCkBAIC0zMDg3
LDEwICszMDg3LDEwIEBAIHZvaWQgUmVuZGVyQm94Ojpjb21wdXRlUG9zaXRpb25lZExvZ2ljYWwK
ICAgICAgICAgLy8gTk9URTogIEl0IGlzIG5vdCBuZWNlc3NhcnkgdG8gc29sdmUgZm9yICdib3R0
b20nIGluIHRoZSBvdmVyIGNvbnN0cmFpbmVkCiAgICAgICAgIC8vIGNhc2UgYmVjYXVzZSB0aGUg
dmFsdWUgaXMgbm90IHVzZWQgZm9yIGFueSBmdXJ0aGVyIGNhbGN1bGF0aW9ucy4KIAotICAgICAg
ICBsb2dpY2FsSGVpZ2h0VmFsdWUgPSBjb21wdXRlQ29udGVudEJveExvZ2ljYWxIZWlnaHQobG9n
aWNhbEhlaWdodExlbmd0aC5jYWxjVmFsdWUoY29udGFpbmVyTG9naWNhbEhlaWdodCkpOwotICAg
ICAgICBsb2dpY2FsVG9wVmFsdWUgPSBsb2dpY2FsVG9wLmNhbGNWYWx1ZShjb250YWluZXJMb2dp
Y2FsSGVpZ2h0KTsKKyAgICAgICAgbG9naWNhbEhlaWdodFZhbHVlID0gY29tcHV0ZUNvbnRlbnRC
b3hMb2dpY2FsSGVpZ2h0KGNhbGN1bGF0ZVZhbHVlKGxvZ2ljYWxIZWlnaHRMZW5ndGgsIGNvbnRh
aW5lckxvZ2ljYWxIZWlnaHQpKTsKKyAgICAgICAgbG9naWNhbFRvcFZhbHVlID0gY2FsY3VsYXRl
VmFsdWUobG9naWNhbFRvcCwgY29udGFpbmVyTG9naWNhbEhlaWdodCk7CiAKLSAgICAgICAgY29u
c3QgTGF5b3V0VW5pdCBhdmFpbGFibGVTcGFjZSA9IGNvbnRhaW5lckxvZ2ljYWxIZWlnaHQgLSAo
bG9naWNhbFRvcFZhbHVlICsgbG9naWNhbEhlaWdodFZhbHVlICsgbG9naWNhbEJvdHRvbS5jYWxj
VmFsdWUoY29udGFpbmVyTG9naWNhbEhlaWdodCkgKyBib3JkZXJzUGx1c1BhZGRpbmcpOworICAg
ICAgICBjb25zdCBMYXlvdXRVbml0IGF2YWlsYWJsZVNwYWNlID0gY29udGFpbmVyTG9naWNhbEhl
aWdodCAtIChsb2dpY2FsVG9wVmFsdWUgKyBsb2dpY2FsSGVpZ2h0VmFsdWUgKyBjYWxjdWxhdGVW
YWx1ZShsb2dpY2FsQm90dG9tLCBjb250YWluZXJMb2dpY2FsSGVpZ2h0KSArIGJvcmRlcnNQbHVz
UGFkZGluZyk7CiAKICAgICAgICAgLy8gTWFyZ2lucyBhcmUgbm93IHRoZSBvbmx5IHVua25vd24K
ICAgICAgICAgaWYgKG1hcmdpbkJlZm9yZS5pc0F1dG8oKSAmJiBtYXJnaW5BZnRlci5pc0F1dG8o
KSkgewpAQCAtMzEwMCwxNiArMzEwMCwxNiBAQCB2b2lkIFJlbmRlckJveDo6Y29tcHV0ZVBvc2l0
aW9uZWRMb2dpY2FsCiAgICAgICAgICAgICBtYXJnaW5BZnRlclZhbHVlID0gYXZhaWxhYmxlU3Bh
Y2UgLSBtYXJnaW5CZWZvcmVWYWx1ZTsgLy8gYWNjb3VudCBmb3Igb2RkIHZhbHVlZCBkaWZmZXJl
bmNlcwogICAgICAgICB9IGVsc2UgaWYgKG1hcmdpbkJlZm9yZS5pc0F1dG8oKSkgewogICAgICAg
ICAgICAgLy8gU29sdmUgZm9yIHRvcCBtYXJnaW4KLSAgICAgICAgICAgIG1hcmdpbkFmdGVyVmFs
dWUgPSBtYXJnaW5BZnRlci5jYWxjVmFsdWUoY29udGFpbmVyTG9naWNhbEhlaWdodCk7CisgICAg
ICAgICAgICBtYXJnaW5BZnRlclZhbHVlID0gY2FsY3VsYXRlVmFsdWUobWFyZ2luQWZ0ZXIsIGNv
bnRhaW5lckxvZ2ljYWxIZWlnaHQpOwogICAgICAgICAgICAgbWFyZ2luQmVmb3JlVmFsdWUgPSBh
dmFpbGFibGVTcGFjZSAtIG1hcmdpbkFmdGVyVmFsdWU7CiAgICAgICAgIH0gZWxzZSBpZiAobWFy
Z2luQWZ0ZXIuaXNBdXRvKCkpIHsKICAgICAgICAgICAgIC8vIFNvbHZlIGZvciBib3R0b20gbWFy
Z2luCi0gICAgICAgICAgICBtYXJnaW5CZWZvcmVWYWx1ZSA9IG1hcmdpbkJlZm9yZS5jYWxjVmFs
dWUoY29udGFpbmVyTG9naWNhbEhlaWdodCk7CisgICAgICAgICAgICBtYXJnaW5CZWZvcmVWYWx1
ZSA9IGNhbGN1bGF0ZVZhbHVlKG1hcmdpbkJlZm9yZSwgY29udGFpbmVyTG9naWNhbEhlaWdodCk7
CiAgICAgICAgICAgICBtYXJnaW5BZnRlclZhbHVlID0gYXZhaWxhYmxlU3BhY2UgLSBtYXJnaW5C
ZWZvcmVWYWx1ZTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIC8vIE92ZXItY29uc3Ry
YWluZWQsIChubyBuZWVkIHNvbHZlIGZvciBib3R0b20pCi0gICAgICAgICAgICBtYXJnaW5CZWZv
cmVWYWx1ZSA9IG1hcmdpbkJlZm9yZS5jYWxjVmFsdWUoY29udGFpbmVyTG9naWNhbEhlaWdodCk7
Ci0gICAgICAgICAgICBtYXJnaW5BZnRlclZhbHVlID0gbWFyZ2luQWZ0ZXIuY2FsY1ZhbHVlKGNv
bnRhaW5lckxvZ2ljYWxIZWlnaHQpOworICAgICAgICAgICAgbWFyZ2luQmVmb3JlVmFsdWUgPSBj
YWxjdWxhdGVWYWx1ZShtYXJnaW5CZWZvcmUsIGNvbnRhaW5lckxvZ2ljYWxIZWlnaHQpOworICAg
ICAgICAgICAgbWFyZ2luQWZ0ZXJWYWx1ZSA9IGNhbGN1bGF0ZVZhbHVlKG1hcmdpbkFmdGVyLCBj
b250YWluZXJMb2dpY2FsSGVpZ2h0KTsKICAgICAgICAgfQogICAgIH0gZWxzZSB7CiAgICAgICAg
IC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0qXApAQCAtMzEzOCw4ICszMTM4LDggQEAgdm9pZCBSZW5kZXJCb3g6OmNv
bXB1dGVQb3NpdGlvbmVkTG9naWNhbAogICAgICAgICAvLyBiZWNhdXNlIHRoZSB2YWx1ZSBpcyBu
b3QgdXNlZCBmb3IgYW55IGZ1cnRoZXIgY2FsY3VsYXRpb25zLgogCiAgICAgICAgIC8vIENhbGN1
bGF0ZSBtYXJnaW5zLCAnYXV0bycgbWFyZ2lucyBhcmUgaWdub3JlZC4KLSAgICAgICAgbWFyZ2lu
QmVmb3JlVmFsdWUgPSBtYXJnaW5CZWZvcmUuY2FsY01pblZhbHVlKGNvbnRhaW5lckxvZ2ljYWxI
ZWlnaHQpOwotICAgICAgICBtYXJnaW5BZnRlclZhbHVlID0gbWFyZ2luQWZ0ZXIuY2FsY01pblZh
bHVlKGNvbnRhaW5lckxvZ2ljYWxIZWlnaHQpOworICAgICAgICBtYXJnaW5CZWZvcmVWYWx1ZSA9
IGNhbGN1bGF0ZU1pblZhbHVlKG1hcmdpbkJlZm9yZSwgY29udGFpbmVyTG9naWNhbEhlaWdodCk7
CisgICAgICAgIG1hcmdpbkFmdGVyVmFsdWUgPSBjYWxjdWxhdGVNaW5WYWx1ZShtYXJnaW5BZnRl
ciwgY29udGFpbmVyTG9naWNhbEhlaWdodCk7CiAKICAgICAgICAgY29uc3QgTGF5b3V0VW5pdCBh
dmFpbGFibGVTcGFjZSA9IGNvbnRhaW5lckxvZ2ljYWxIZWlnaHQgLSAobWFyZ2luQmVmb3JlVmFs
dWUgKyBtYXJnaW5BZnRlclZhbHVlICsgYm9yZGVyc1BsdXNQYWRkaW5nKTsKIApAQCAtMzE0Nywy
MyArMzE0NywyMyBAQCB2b2lkIFJlbmRlckJveDo6Y29tcHV0ZVBvc2l0aW9uZWRMb2dpY2FsCiAg
ICAgICAgIGlmIChsb2dpY2FsVG9wSXNBdXRvICYmIGxvZ2ljYWxIZWlnaHRJc0F1dG8gJiYgIWxv
Z2ljYWxCb3R0b21Jc0F1dG8pIHsKICAgICAgICAgICAgIC8vIFJVTEUgMTogKGhlaWdodCBpcyBj
b250ZW50IGJhc2VkLCBzb2x2ZSBvZiB0b3ApCiAgICAgICAgICAgICBsb2dpY2FsSGVpZ2h0VmFs
dWUgPSBjb250ZW50TG9naWNhbEhlaWdodDsKLSAgICAgICAgICAgIGxvZ2ljYWxUb3BWYWx1ZSA9
IGF2YWlsYWJsZVNwYWNlIC0gKGxvZ2ljYWxIZWlnaHRWYWx1ZSArIGxvZ2ljYWxCb3R0b20uY2Fs
Y1ZhbHVlKGNvbnRhaW5lckxvZ2ljYWxIZWlnaHQpKTsKKyAgICAgICAgICAgIGxvZ2ljYWxUb3BW
YWx1ZSA9IGF2YWlsYWJsZVNwYWNlIC0gKGxvZ2ljYWxIZWlnaHRWYWx1ZSArIGNhbGN1bGF0ZVZh
bHVlKGxvZ2ljYWxCb3R0b20sIGNvbnRhaW5lckxvZ2ljYWxIZWlnaHQpKTsKICAgICAgICAgfSBl
bHNlIGlmICghbG9naWNhbFRvcElzQXV0byAmJiBsb2dpY2FsSGVpZ2h0SXNBdXRvICYmIGxvZ2lj
YWxCb3R0b21Jc0F1dG8pIHsKICAgICAgICAgICAgIC8vIFJVTEUgMzogKGhlaWdodCBpcyBjb250
ZW50IGJhc2VkLCBubyBuZWVkIHNvbHZlIG9mIGJvdHRvbSkKLSAgICAgICAgICAgIGxvZ2ljYWxU
b3BWYWx1ZSA9IGxvZ2ljYWxUb3AuY2FsY1ZhbHVlKGNvbnRhaW5lckxvZ2ljYWxIZWlnaHQpOwor
ICAgICAgICAgICAgbG9naWNhbFRvcFZhbHVlID0gY2FsY3VsYXRlVmFsdWUobG9naWNhbFRvcCwg
Y29udGFpbmVyTG9naWNhbEhlaWdodCk7CiAgICAgICAgICAgICBsb2dpY2FsSGVpZ2h0VmFsdWUg
PSBjb250ZW50TG9naWNhbEhlaWdodDsKICAgICAgICAgfSBlbHNlIGlmIChsb2dpY2FsVG9wSXNB
dXRvICYmICFsb2dpY2FsSGVpZ2h0SXNBdXRvICYmICFsb2dpY2FsQm90dG9tSXNBdXRvKSB7CiAg
ICAgICAgICAgICAvLyBSVUxFIDQ6IChzb2x2ZSBvZiB0b3ApCi0gICAgICAgICAgICBsb2dpY2Fs
SGVpZ2h0VmFsdWUgPSBjb21wdXRlQ29udGVudEJveExvZ2ljYWxIZWlnaHQobG9naWNhbEhlaWdo
dExlbmd0aC5jYWxjVmFsdWUoY29udGFpbmVyTG9naWNhbEhlaWdodCkpOwotICAgICAgICAgICAg
bG9naWNhbFRvcFZhbHVlID0gYXZhaWxhYmxlU3BhY2UgLSAobG9naWNhbEhlaWdodFZhbHVlICsg
bG9naWNhbEJvdHRvbS5jYWxjVmFsdWUoY29udGFpbmVyTG9naWNhbEhlaWdodCkpOworICAgICAg
ICAgICAgbG9naWNhbEhlaWdodFZhbHVlID0gY29tcHV0ZUNvbnRlbnRCb3hMb2dpY2FsSGVpZ2h0
KGNhbGN1bGF0ZVZhbHVlKGxvZ2ljYWxIZWlnaHRMZW5ndGgsIGNvbnRhaW5lckxvZ2ljYWxIZWln
aHQpKTsKKyAgICAgICAgICAgIGxvZ2ljYWxUb3BWYWx1ZSA9IGF2YWlsYWJsZVNwYWNlIC0gKGxv
Z2ljYWxIZWlnaHRWYWx1ZSArIGNhbGN1bGF0ZVZhbHVlKGxvZ2ljYWxCb3R0b20sIGNvbnRhaW5l
ckxvZ2ljYWxIZWlnaHQpKTsKICAgICAgICAgfSBlbHNlIGlmICghbG9naWNhbFRvcElzQXV0byAm
JiBsb2dpY2FsSGVpZ2h0SXNBdXRvICYmICFsb2dpY2FsQm90dG9tSXNBdXRvKSB7CiAgICAgICAg
ICAgICAvLyBSVUxFIDU6IChzb2x2ZSBvZiBoZWlnaHQpCi0gICAgICAgICAgICBsb2dpY2FsVG9w
VmFsdWUgPSBsb2dpY2FsVG9wLmNhbGNWYWx1ZShjb250YWluZXJMb2dpY2FsSGVpZ2h0KTsKLSAg
ICAgICAgICAgIGxvZ2ljYWxIZWlnaHRWYWx1ZSA9IG1heDxMYXlvdXRVbml0PigwLCBhdmFpbGFi
bGVTcGFjZSAtIChsb2dpY2FsVG9wVmFsdWUgKyBsb2dpY2FsQm90dG9tLmNhbGNWYWx1ZShjb250
YWluZXJMb2dpY2FsSGVpZ2h0KSkpOworICAgICAgICAgICAgbG9naWNhbFRvcFZhbHVlID0gY2Fs
Y3VsYXRlVmFsdWUobG9naWNhbFRvcCwgY29udGFpbmVyTG9naWNhbEhlaWdodCk7CisgICAgICAg
ICAgICBsb2dpY2FsSGVpZ2h0VmFsdWUgPSBtYXg8TGF5b3V0VW5pdD4oMCwgYXZhaWxhYmxlU3Bh
Y2UgLSAobG9naWNhbFRvcFZhbHVlICsgY2FsY3VsYXRlVmFsdWUobG9naWNhbEJvdHRvbSwgY29u
dGFpbmVyTG9naWNhbEhlaWdodCkpKTsKICAgICAgICAgfSBlbHNlIGlmICghbG9naWNhbFRvcElz
QXV0byAmJiAhbG9naWNhbEhlaWdodElzQXV0byAmJiBsb2dpY2FsQm90dG9tSXNBdXRvKSB7CiAg
ICAgICAgICAgICAvLyBSVUxFIDY6IChubyBuZWVkIHNvbHZlIG9mIGJvdHRvbSkKLSAgICAgICAg
ICAgIGxvZ2ljYWxIZWlnaHRWYWx1ZSA9IGNvbXB1dGVDb250ZW50Qm94TG9naWNhbEhlaWdodChs
b2dpY2FsSGVpZ2h0TGVuZ3RoLmNhbGNWYWx1ZShjb250YWluZXJMb2dpY2FsSGVpZ2h0KSk7Ci0g
ICAgICAgICAgICBsb2dpY2FsVG9wVmFsdWUgPSBsb2dpY2FsVG9wLmNhbGNWYWx1ZShjb250YWlu
ZXJMb2dpY2FsSGVpZ2h0KTsKKyAgICAgICAgICAgIGxvZ2ljYWxIZWlnaHRWYWx1ZSA9IGNvbXB1
dGVDb250ZW50Qm94TG9naWNhbEhlaWdodChjYWxjdWxhdGVWYWx1ZShsb2dpY2FsSGVpZ2h0TGVu
Z3RoLCBjb250YWluZXJMb2dpY2FsSGVpZ2h0KSk7CisgICAgICAgICAgICBsb2dpY2FsVG9wVmFs
dWUgPSBjYWxjdWxhdGVWYWx1ZShsb2dpY2FsVG9wLCBjb250YWluZXJMb2dpY2FsSGVpZ2h0KTsK
ICAgICAgICAgfQogICAgIH0KIApAQCAtMzI0NCw4ICszMjQ0LDggQEAgdm9pZCBSZW5kZXJCb3g6
OmNvbXB1dGVQb3NpdGlvbmVkTG9naWNhbAogICAgICAgICAvLyAnbGVmdCcgYW5kICdyaWdodCcg
Y2Fubm90IGJlICdhdXRvJyBkdWUgdG8gc3RlcCAzCiAgICAgICAgIEFTU0VSVCghKGxvZ2ljYWxM
ZWZ0LmlzQXV0bygpICYmIGxvZ2ljYWxSaWdodC5pc0F1dG8oKSkpOwogCi0gICAgICAgIGxvZ2lj
YWxMZWZ0VmFsdWUgPSBsb2dpY2FsTGVmdC5jYWxjVmFsdWUoY29udGFpbmVyTG9naWNhbFdpZHRo
KTsKLSAgICAgICAgbG9naWNhbFJpZ2h0VmFsdWUgPSBsb2dpY2FsUmlnaHQuY2FsY1ZhbHVlKGNv
bnRhaW5lckxvZ2ljYWxXaWR0aCk7CisgICAgICAgIGxvZ2ljYWxMZWZ0VmFsdWUgPSBjYWxjdWxh
dGVWYWx1ZShsb2dpY2FsTGVmdCwgY29udGFpbmVyTG9naWNhbFdpZHRoKTsKKyAgICAgICAgbG9n
aWNhbFJpZ2h0VmFsdWUgPSBjYWxjdWxhdGVWYWx1ZShsb2dpY2FsUmlnaHQsIGNvbnRhaW5lckxv
Z2ljYWxXaWR0aCk7CiAKICAgICAgICAgTGF5b3V0VW5pdCBkaWZmZXJlbmNlID0gYXZhaWxhYmxl
U3BhY2UgLSAobG9naWNhbExlZnRWYWx1ZSArIGxvZ2ljYWxSaWdodFZhbHVlKTsKICAgICAgICAg
aWYgKGRpZmZlcmVuY2UgPiAwKSB7CkBAIC0zMjY4LDM5ICszMjY4LDM5IEBAIHZvaWQgUmVuZGVy
Qm94Ojpjb21wdXRlUG9zaXRpb25lZExvZ2ljYWwKICAgICAgKiAgICB0aGF0IHZhbHVlLgogICAg
IFwqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0qLwogICAgIH0gZWxzZSBpZiAobG9naWNhbExlZnQuaXNBdXRvKCkp
IHsKLSAgICAgICAgbWFyZ2luTG9naWNhbExlZnRBbGlhcyA9IG1hcmdpbkxvZ2ljYWxMZWZ0LmNh
bGNWYWx1ZShjb250YWluZXJMb2dpY2FsV2lkdGgpOwotICAgICAgICBtYXJnaW5Mb2dpY2FsUmln
aHRBbGlhcyA9IG1hcmdpbkxvZ2ljYWxSaWdodC5jYWxjVmFsdWUoY29udGFpbmVyTG9naWNhbFdp
ZHRoKTsKLSAgICAgICAgbG9naWNhbFJpZ2h0VmFsdWUgPSBsb2dpY2FsUmlnaHQuY2FsY1ZhbHVl
KGNvbnRhaW5lckxvZ2ljYWxXaWR0aCk7CisgICAgICAgIG1hcmdpbkxvZ2ljYWxMZWZ0QWxpYXMg
PSBjYWxjdWxhdGVWYWx1ZShtYXJnaW5Mb2dpY2FsTGVmdCwgY29udGFpbmVyTG9naWNhbFdpZHRo
KTsKKyAgICAgICAgbWFyZ2luTG9naWNhbFJpZ2h0QWxpYXMgPSBjYWxjdWxhdGVWYWx1ZShtYXJn
aW5Mb2dpY2FsUmlnaHQsIGNvbnRhaW5lckxvZ2ljYWxXaWR0aCk7CisgICAgICAgIGxvZ2ljYWxS
aWdodFZhbHVlID0gY2FsY3VsYXRlVmFsdWUobG9naWNhbFJpZ2h0LCBjb250YWluZXJMb2dpY2Fs
V2lkdGgpOwogCiAgICAgICAgIC8vIFNvbHZlIGZvciAnbGVmdCcKICAgICAgICAgbG9naWNhbExl
ZnRWYWx1ZSA9IGF2YWlsYWJsZVNwYWNlIC0gKGxvZ2ljYWxSaWdodFZhbHVlICsgbWFyZ2luTG9n
aWNhbExlZnRBbGlhcyArIG1hcmdpbkxvZ2ljYWxSaWdodEFsaWFzKTsKICAgICB9IGVsc2UgaWYg
KGxvZ2ljYWxSaWdodC5pc0F1dG8oKSkgewotICAgICAgICBtYXJnaW5Mb2dpY2FsTGVmdEFsaWFz
ID0gbWFyZ2luTG9naWNhbExlZnQuY2FsY1ZhbHVlKGNvbnRhaW5lckxvZ2ljYWxXaWR0aCk7Ci0g
ICAgICAgIG1hcmdpbkxvZ2ljYWxSaWdodEFsaWFzID0gbWFyZ2luTG9naWNhbFJpZ2h0LmNhbGNW
YWx1ZShjb250YWluZXJMb2dpY2FsV2lkdGgpOwotICAgICAgICBsb2dpY2FsTGVmdFZhbHVlID0g
bG9naWNhbExlZnQuY2FsY1ZhbHVlKGNvbnRhaW5lckxvZ2ljYWxXaWR0aCk7CisgICAgICAgIG1h
cmdpbkxvZ2ljYWxMZWZ0QWxpYXMgPSBjYWxjdWxhdGVWYWx1ZShtYXJnaW5Mb2dpY2FsTGVmdCwg
Y29udGFpbmVyTG9naWNhbFdpZHRoKTsKKyAgICAgICAgbWFyZ2luTG9naWNhbFJpZ2h0QWxpYXMg
PSBjYWxjdWxhdGVWYWx1ZShtYXJnaW5Mb2dpY2FsUmlnaHQsIGNvbnRhaW5lckxvZ2ljYWxXaWR0
aCk7CisgICAgICAgIGxvZ2ljYWxMZWZ0VmFsdWUgPSBjYWxjdWxhdGVWYWx1ZShsb2dpY2FsTGVm
dCwgY29udGFpbmVyTG9naWNhbFdpZHRoKTsKIAogICAgICAgICAvLyBTb2x2ZSBmb3IgJ3JpZ2h0
JwogICAgICAgICBsb2dpY2FsUmlnaHRWYWx1ZSA9IGF2YWlsYWJsZVNwYWNlIC0gKGxvZ2ljYWxM
ZWZ0VmFsdWUgKyBtYXJnaW5Mb2dpY2FsTGVmdEFsaWFzICsgbWFyZ2luTG9naWNhbFJpZ2h0QWxp
YXMpOwogICAgIH0gZWxzZSBpZiAobWFyZ2luTG9naWNhbExlZnQuaXNBdXRvKCkpIHsKLSAgICAg
ICAgbWFyZ2luTG9naWNhbFJpZ2h0QWxpYXMgPSBtYXJnaW5Mb2dpY2FsUmlnaHQuY2FsY1ZhbHVl
KGNvbnRhaW5lckxvZ2ljYWxXaWR0aCk7Ci0gICAgICAgIGxvZ2ljYWxMZWZ0VmFsdWUgPSBsb2dp
Y2FsTGVmdC5jYWxjVmFsdWUoY29udGFpbmVyTG9naWNhbFdpZHRoKTsKLSAgICAgICAgbG9naWNh
bFJpZ2h0VmFsdWUgPSBsb2dpY2FsUmlnaHQuY2FsY1ZhbHVlKGNvbnRhaW5lckxvZ2ljYWxXaWR0
aCk7CisgICAgICAgIG1hcmdpbkxvZ2ljYWxSaWdodEFsaWFzID0gY2FsY3VsYXRlVmFsdWUobWFy
Z2luTG9naWNhbFJpZ2h0LCBjb250YWluZXJMb2dpY2FsV2lkdGgpOworICAgICAgICBsb2dpY2Fs
TGVmdFZhbHVlID0gY2FsY3VsYXRlVmFsdWUobG9naWNhbExlZnQsIGNvbnRhaW5lckxvZ2ljYWxX
aWR0aCk7CisgICAgICAgIGxvZ2ljYWxSaWdodFZhbHVlID0gY2FsY3VsYXRlVmFsdWUobG9naWNh
bFJpZ2h0LCBjb250YWluZXJMb2dpY2FsV2lkdGgpOwogCiAgICAgICAgIC8vIFNvbHZlIGZvciAn
bWFyZ2luLWxlZnQnCiAgICAgICAgIG1hcmdpbkxvZ2ljYWxMZWZ0QWxpYXMgPSBhdmFpbGFibGVT
cGFjZSAtIChsb2dpY2FsTGVmdFZhbHVlICsgbG9naWNhbFJpZ2h0VmFsdWUgKyBtYXJnaW5Mb2dp
Y2FsUmlnaHRBbGlhcyk7CiAgICAgfSBlbHNlIGlmIChtYXJnaW5Mb2dpY2FsUmlnaHQuaXNBdXRv
KCkpIHsKLSAgICAgICAgbWFyZ2luTG9naWNhbExlZnRBbGlhcyA9IG1hcmdpbkxvZ2ljYWxMZWZ0
LmNhbGNWYWx1ZShjb250YWluZXJMb2dpY2FsV2lkdGgpOwotICAgICAgICBsb2dpY2FsTGVmdFZh
bHVlID0gbG9naWNhbExlZnQuY2FsY1ZhbHVlKGNvbnRhaW5lckxvZ2ljYWxXaWR0aCk7Ci0gICAg
ICAgIGxvZ2ljYWxSaWdodFZhbHVlID0gbG9naWNhbFJpZ2h0LmNhbGNWYWx1ZShjb250YWluZXJM
b2dpY2FsV2lkdGgpOworICAgICAgICBtYXJnaW5Mb2dpY2FsTGVmdEFsaWFzID0gY2FsY3VsYXRl
VmFsdWUobWFyZ2luTG9naWNhbExlZnQsIGNvbnRhaW5lckxvZ2ljYWxXaWR0aCk7CisgICAgICAg
IGxvZ2ljYWxMZWZ0VmFsdWUgPSBjYWxjdWxhdGVWYWx1ZShsb2dpY2FsTGVmdCwgY29udGFpbmVy
TG9naWNhbFdpZHRoKTsKKyAgICAgICAgbG9naWNhbFJpZ2h0VmFsdWUgPSBjYWxjdWxhdGVWYWx1
ZShsb2dpY2FsUmlnaHQsIGNvbnRhaW5lckxvZ2ljYWxXaWR0aCk7CiAKICAgICAgICAgLy8gU29s
dmUgZm9yICdtYXJnaW4tcmlnaHQnCiAgICAgICAgIG1hcmdpbkxvZ2ljYWxSaWdodEFsaWFzID0g
YXZhaWxhYmxlU3BhY2UgLSAobG9naWNhbExlZnRWYWx1ZSArIGxvZ2ljYWxSaWdodFZhbHVlICsg
bWFyZ2luTG9naWNhbExlZnRBbGlhcyk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgLy8gTm90aGlu
ZyBpcyAnYXV0bycsIGp1c3QgY2FsY3VsYXRlIHRoZSB2YWx1ZXMuCi0gICAgICAgIG1hcmdpbkxv
Z2ljYWxMZWZ0QWxpYXMgPSBtYXJnaW5Mb2dpY2FsTGVmdC5jYWxjVmFsdWUoY29udGFpbmVyTG9n
aWNhbFdpZHRoKTsKLSAgICAgICAgbWFyZ2luTG9naWNhbFJpZ2h0QWxpYXMgPSBtYXJnaW5Mb2dp
Y2FsUmlnaHQuY2FsY1ZhbHVlKGNvbnRhaW5lckxvZ2ljYWxXaWR0aCk7Ci0gICAgICAgIGxvZ2lj
YWxSaWdodFZhbHVlID0gbG9naWNhbFJpZ2h0LmNhbGNWYWx1ZShjb250YWluZXJMb2dpY2FsV2lk
dGgpOwotICAgICAgICBsb2dpY2FsTGVmdFZhbHVlID0gbG9naWNhbExlZnQuY2FsY1ZhbHVlKGNv
bnRhaW5lckxvZ2ljYWxXaWR0aCk7CisgICAgICAgIG1hcmdpbkxvZ2ljYWxMZWZ0QWxpYXMgPSBj
YWxjdWxhdGVWYWx1ZShtYXJnaW5Mb2dpY2FsTGVmdCwgY29udGFpbmVyTG9naWNhbFdpZHRoKTsK
KyAgICAgICAgbWFyZ2luTG9naWNhbFJpZ2h0QWxpYXMgPSBjYWxjdWxhdGVWYWx1ZShtYXJnaW5M
b2dpY2FsUmlnaHQsIGNvbnRhaW5lckxvZ2ljYWxXaWR0aCk7CisgICAgICAgIGxvZ2ljYWxSaWdo
dFZhbHVlID0gY2FsY3VsYXRlVmFsdWUobG9naWNhbFJpZ2h0LCBjb250YWluZXJMb2dpY2FsV2lk
dGgpOworICAgICAgICBsb2dpY2FsTGVmdFZhbHVlID0gY2FsY3VsYXRlVmFsdWUobG9naWNhbExl
ZnQsIGNvbnRhaW5lckxvZ2ljYWxXaWR0aCk7CiAgICAgICAgIC8vIElmIHRoZSBjb250YWluaW5n
IGJsb2NrIGlzIHJpZ2h0LXRvLWxlZnQsIHRoZW4gcHVzaCB0aGUgbGVmdCBwb3NpdGlvbiBhcyBm
YXIgdG8gdGhlIHJpZ2h0IGFzIHBvc3NpYmxlCiAgICAgICAgIGlmIChjb250YWluZXJEaXJlY3Rp
b24gPT0gUlRMKSB7CiAgICAgICAgICAgICBpbnQgdG90YWxMb2dpY2FsV2lkdGggPSBsb2dpY2Fs
V2lkdGgoKSArIGxvZ2ljYWxMZWZ0VmFsdWUgKyBsb2dpY2FsUmlnaHRWYWx1ZSArICBtYXJnaW5M
b2dpY2FsTGVmdEFsaWFzICsgbWFyZ2luTG9naWNhbFJpZ2h0QWxpYXM7CkBAIC0zNDA2LDggKzM0
MDYsOCBAQCB2b2lkIFJlbmRlckJveDo6Y29tcHV0ZVBvc2l0aW9uZWRMb2dpY2FsCiAgICAgICAg
IC8vICd0b3AnIGFuZCAnYm90dG9tJyBjYW5ub3QgYmUgJ2F1dG8nIGR1ZSB0byBzdGVwIDIgYW5k
IDMgY29tYmluZWQuCiAgICAgICAgIEFTU0VSVCghKGxvZ2ljYWxUb3AuaXNBdXRvKCkgfHwgbG9n
aWNhbEJvdHRvbS5pc0F1dG8oKSkpOwogCi0gICAgICAgIGxvZ2ljYWxUb3BWYWx1ZSA9IGxvZ2lj
YWxUb3AuY2FsY1ZhbHVlKGNvbnRhaW5lckxvZ2ljYWxIZWlnaHQpOwotICAgICAgICBsb2dpY2Fs
Qm90dG9tVmFsdWUgPSBsb2dpY2FsQm90dG9tLmNhbGNWYWx1ZShjb250YWluZXJMb2dpY2FsSGVp
Z2h0KTsKKyAgICAgICAgbG9naWNhbFRvcFZhbHVlID0gY2FsY3VsYXRlVmFsdWUobG9naWNhbFRv
cCwgY29udGFpbmVyTG9naWNhbEhlaWdodCk7CisgICAgICAgIGxvZ2ljYWxCb3R0b21WYWx1ZSA9
IGNhbGN1bGF0ZVZhbHVlKGxvZ2ljYWxCb3R0b20sIGNvbnRhaW5lckxvZ2ljYWxIZWlnaHQpOwog
CiAgICAgICAgIExheW91dFVuaXQgZGlmZmVyZW5jZSA9IGF2YWlsYWJsZVNwYWNlIC0gKGxvZ2lj
YWxUb3BWYWx1ZSArIGxvZ2ljYWxCb3R0b21WYWx1ZSk7CiAgICAgICAgIC8vIE5PVEU6IFRoaXMg
bWF5IHJlc3VsdCBpbiBuZWdhdGl2ZSB2YWx1ZXMuCkBAIC0zNDE5LDM5ICszNDE5LDM5IEBAIHZv
aWQgUmVuZGVyQm94Ojpjb21wdXRlUG9zaXRpb25lZExvZ2ljYWwKICAgICAgKiAgICBmb3IgdGhh
dCB2YWx1ZS4KICAgICBcKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KICAgICB9IGVsc2UgaWYgKGxvZ2ljYWxU
b3AuaXNBdXRvKCkpIHsKLSAgICAgICAgbWFyZ2luQmVmb3JlQWxpYXMgPSBtYXJnaW5CZWZvcmUu
Y2FsY1ZhbHVlKGNvbnRhaW5lckxvZ2ljYWxIZWlnaHQpOwotICAgICAgICBtYXJnaW5BZnRlckFs
aWFzID0gbWFyZ2luQWZ0ZXIuY2FsY1ZhbHVlKGNvbnRhaW5lckxvZ2ljYWxIZWlnaHQpOwotICAg
ICAgICBsb2dpY2FsQm90dG9tVmFsdWUgPSBsb2dpY2FsQm90dG9tLmNhbGNWYWx1ZShjb250YWlu
ZXJMb2dpY2FsSGVpZ2h0KTsKKyAgICAgICAgbWFyZ2luQmVmb3JlQWxpYXMgPSBjYWxjdWxhdGVW
YWx1ZShtYXJnaW5CZWZvcmUsIGNvbnRhaW5lckxvZ2ljYWxIZWlnaHQpOworICAgICAgICBtYXJn
aW5BZnRlckFsaWFzID0gY2FsY3VsYXRlVmFsdWUobWFyZ2luQWZ0ZXIsIGNvbnRhaW5lckxvZ2lj
YWxIZWlnaHQpOworICAgICAgICBsb2dpY2FsQm90dG9tVmFsdWUgPSBjYWxjdWxhdGVWYWx1ZShs
b2dpY2FsQm90dG9tLCBjb250YWluZXJMb2dpY2FsSGVpZ2h0KTsKIAogICAgICAgICAvLyBTb2x2
ZSBmb3IgJ3RvcCcKICAgICAgICAgbG9naWNhbFRvcFZhbHVlID0gYXZhaWxhYmxlU3BhY2UgLSAo
bG9naWNhbEJvdHRvbVZhbHVlICsgbWFyZ2luQmVmb3JlQWxpYXMgKyBtYXJnaW5BZnRlckFsaWFz
KTsKICAgICB9IGVsc2UgaWYgKGxvZ2ljYWxCb3R0b20uaXNBdXRvKCkpIHsKLSAgICAgICAgbWFy
Z2luQmVmb3JlQWxpYXMgPSBtYXJnaW5CZWZvcmUuY2FsY1ZhbHVlKGNvbnRhaW5lckxvZ2ljYWxI
ZWlnaHQpOwotICAgICAgICBtYXJnaW5BZnRlckFsaWFzID0gbWFyZ2luQWZ0ZXIuY2FsY1ZhbHVl
KGNvbnRhaW5lckxvZ2ljYWxIZWlnaHQpOwotICAgICAgICBsb2dpY2FsVG9wVmFsdWUgPSBsb2dp
Y2FsVG9wLmNhbGNWYWx1ZShjb250YWluZXJMb2dpY2FsSGVpZ2h0KTsKKyAgICAgICAgbWFyZ2lu
QmVmb3JlQWxpYXMgPSBjYWxjdWxhdGVWYWx1ZShtYXJnaW5CZWZvcmUsIGNvbnRhaW5lckxvZ2lj
YWxIZWlnaHQpOworICAgICAgICBtYXJnaW5BZnRlckFsaWFzID0gY2FsY3VsYXRlVmFsdWUobWFy
Z2luQWZ0ZXIsIGNvbnRhaW5lckxvZ2ljYWxIZWlnaHQpOworICAgICAgICBsb2dpY2FsVG9wVmFs
dWUgPSBjYWxjdWxhdGVWYWx1ZShsb2dpY2FsVG9wLCBjb250YWluZXJMb2dpY2FsSGVpZ2h0KTsK
IAogICAgICAgICAvLyBTb2x2ZSBmb3IgJ2JvdHRvbScKICAgICAgICAgLy8gTk9URTogSXQgaXMg
bm90IG5lY2Vzc2FyeSB0byBzb2x2ZSBmb3IgJ2JvdHRvbScgYmVjYXVzZSB3ZSBkb24ndCBldmVy
CiAgICAgICAgIC8vIHVzZSB0aGUgdmFsdWUuCiAgICAgfSBlbHNlIGlmIChtYXJnaW5CZWZvcmUu
aXNBdXRvKCkpIHsKLSAgICAgICAgbWFyZ2luQWZ0ZXJBbGlhcyA9IG1hcmdpbkFmdGVyLmNhbGNW
YWx1ZShjb250YWluZXJMb2dpY2FsSGVpZ2h0KTsKLSAgICAgICAgbG9naWNhbFRvcFZhbHVlID0g
bG9naWNhbFRvcC5jYWxjVmFsdWUoY29udGFpbmVyTG9naWNhbEhlaWdodCk7Ci0gICAgICAgIGxv
Z2ljYWxCb3R0b21WYWx1ZSA9IGxvZ2ljYWxCb3R0b20uY2FsY1ZhbHVlKGNvbnRhaW5lckxvZ2lj
YWxIZWlnaHQpOworICAgICAgICBtYXJnaW5BZnRlckFsaWFzID0gY2FsY3VsYXRlVmFsdWUobWFy
Z2luQWZ0ZXIsIGNvbnRhaW5lckxvZ2ljYWxIZWlnaHQpOworICAgICAgICBsb2dpY2FsVG9wVmFs
dWUgPSBjYWxjdWxhdGVWYWx1ZShsb2dpY2FsVG9wLCBjb250YWluZXJMb2dpY2FsSGVpZ2h0KTsK
KyAgICAgICAgbG9naWNhbEJvdHRvbVZhbHVlID0gY2FsY3VsYXRlVmFsdWUobG9naWNhbEJvdHRv
bSwgY29udGFpbmVyTG9naWNhbEhlaWdodCk7CiAKICAgICAgICAgLy8gU29sdmUgZm9yICdtYXJn
aW4tdG9wJwogICAgICAgICBtYXJnaW5CZWZvcmVBbGlhcyA9IGF2YWlsYWJsZVNwYWNlIC0gKGxv
Z2ljYWxUb3BWYWx1ZSArIGxvZ2ljYWxCb3R0b21WYWx1ZSArIG1hcmdpbkFmdGVyQWxpYXMpOwog
ICAgIH0gZWxzZSBpZiAobWFyZ2luQWZ0ZXIuaXNBdXRvKCkpIHsKLSAgICAgICAgbWFyZ2luQmVm
b3JlQWxpYXMgPSBtYXJnaW5CZWZvcmUuY2FsY1ZhbHVlKGNvbnRhaW5lckxvZ2ljYWxIZWlnaHQp
OwotICAgICAgICBsb2dpY2FsVG9wVmFsdWUgPSBsb2dpY2FsVG9wLmNhbGNWYWx1ZShjb250YWlu
ZXJMb2dpY2FsSGVpZ2h0KTsKLSAgICAgICAgbG9naWNhbEJvdHRvbVZhbHVlID0gbG9naWNhbEJv
dHRvbS5jYWxjVmFsdWUoY29udGFpbmVyTG9naWNhbEhlaWdodCk7CisgICAgICAgIG1hcmdpbkJl
Zm9yZUFsaWFzID0gY2FsY3VsYXRlVmFsdWUobWFyZ2luQmVmb3JlLCBjb250YWluZXJMb2dpY2Fs
SGVpZ2h0KTsKKyAgICAgICAgbG9naWNhbFRvcFZhbHVlID0gY2FsY3VsYXRlVmFsdWUobG9naWNh
bFRvcCwgY29udGFpbmVyTG9naWNhbEhlaWdodCk7CisgICAgICAgIGxvZ2ljYWxCb3R0b21WYWx1
ZSA9IGNhbGN1bGF0ZVZhbHVlKGxvZ2ljYWxCb3R0b20sIGNvbnRhaW5lckxvZ2ljYWxIZWlnaHQp
OwogCiAgICAgICAgIC8vIFNvbHZlIGZvciAnbWFyZ2luLWJvdHRvbScKICAgICAgICAgbWFyZ2lu
QWZ0ZXJBbGlhcyA9IGF2YWlsYWJsZVNwYWNlIC0gKGxvZ2ljYWxUb3BWYWx1ZSArIGxvZ2ljYWxC
b3R0b21WYWx1ZSArIG1hcmdpbkJlZm9yZUFsaWFzKTsKICAgICB9IGVsc2UgewogICAgICAgICAv
LyBOb3RoaW5nIGlzICdhdXRvJywganVzdCBjYWxjdWxhdGUgdGhlIHZhbHVlcy4KLSAgICAgICAg
bWFyZ2luQmVmb3JlQWxpYXMgPSBtYXJnaW5CZWZvcmUuY2FsY1ZhbHVlKGNvbnRhaW5lckxvZ2lj
YWxIZWlnaHQpOwotICAgICAgICBtYXJnaW5BZnRlckFsaWFzID0gbWFyZ2luQWZ0ZXIuY2FsY1Zh
bHVlKGNvbnRhaW5lckxvZ2ljYWxIZWlnaHQpOwotICAgICAgICBsb2dpY2FsVG9wVmFsdWUgPSBs
b2dpY2FsVG9wLmNhbGNWYWx1ZShjb250YWluZXJMb2dpY2FsSGVpZ2h0KTsKKyAgICAgICAgbWFy
Z2luQmVmb3JlQWxpYXMgPSBjYWxjdWxhdGVWYWx1ZShtYXJnaW5CZWZvcmUsIGNvbnRhaW5lckxv
Z2ljYWxIZWlnaHQpOworICAgICAgICBtYXJnaW5BZnRlckFsaWFzID0gY2FsY3VsYXRlVmFsdWUo
bWFyZ2luQWZ0ZXIsIGNvbnRhaW5lckxvZ2ljYWxIZWlnaHQpOworICAgICAgICBsb2dpY2FsVG9w
VmFsdWUgPSBjYWxjdWxhdGVWYWx1ZShsb2dpY2FsVG9wLCBjb250YWluZXJMb2dpY2FsSGVpZ2h0
KTsKICAgICAgICAgLy8gTk9URTogSXQgaXMgbm90IG5lY2Vzc2FyeSB0byBzb2x2ZSBmb3IgJ2Jv
dHRvbScgYmVjYXVzZSB3ZSBkb24ndCBldmVyCiAgICAgICAgIC8vIHVzZSB0aGUgdmFsdWUuCiAg
ICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVj
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1v
ZGVsT2JqZWN0LmNwcAkocmV2aXNpb24gMTEwNjYyKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDM3LDEyICs0
MzcsMTIgQEAgTGF5b3V0VW5pdCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cmVsYXRpdgogICAgIGlm
ICghc3R5bGUoKS0+bGVmdCgpLmlzQXV0bygpKSB7CiAgICAgICAgIFJlbmRlckJsb2NrKiBjYiA9
IGNvbnRhaW5pbmdCbG9jaygpOwogICAgICAgICBpZiAoIXN0eWxlKCktPnJpZ2h0KCkuaXNBdXRv
KCkgJiYgIWNiLT5zdHlsZSgpLT5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkpCi0gICAgICAgICAg
ICByZXR1cm4gLXN0eWxlKCktPnJpZ2h0KCkuY2FsY1ZhbHVlKGNiLT5hdmFpbGFibGVXaWR0aCgp
KTsKLSAgICAgICAgcmV0dXJuIG9mZnNldCArIHN0eWxlKCktPmxlZnQoKS5jYWxjVmFsdWUoY2It
PmF2YWlsYWJsZVdpZHRoKCkpOworICAgICAgICAgICAgcmV0dXJuIC1jYWxjdWxhdGVWYWx1ZShz
dHlsZSgpLT5yaWdodCgpLCBjYi0+YXZhaWxhYmxlV2lkdGgoKSk7CisgICAgICAgIHJldHVybiBv
ZmZzZXQgKyBjYWxjdWxhdGVWYWx1ZShzdHlsZSgpLT5sZWZ0KCksIGNiLT5hdmFpbGFibGVXaWR0
aCgpKTsKICAgICB9CiAgICAgaWYgKCFzdHlsZSgpLT5yaWdodCgpLmlzQXV0bygpKSB7CiAgICAg
ICAgIFJlbmRlckJsb2NrKiBjYiA9IGNvbnRhaW5pbmdCbG9jaygpOwotICAgICAgICByZXR1cm4g
b2Zmc2V0ICsgLXN0eWxlKCktPnJpZ2h0KCkuY2FsY1ZhbHVlKGNiLT5hdmFpbGFibGVXaWR0aCgp
KTsKKyAgICAgICAgcmV0dXJuIG9mZnNldCArIC1jYWxjdWxhdGVWYWx1ZShzdHlsZSgpLT5yaWdo
dCgpLCBjYi0+YXZhaWxhYmxlV2lkdGgoKSk7CiAgICAgfQogICAgIHJldHVybiBvZmZzZXQ7CiB9
CkBAIC00NjIsMTMgKzQ2MiwxMyBAQCBMYXlvdXRVbml0IFJlbmRlckJveE1vZGVsT2JqZWN0Ojpy
ZWxhdGl2CiAgICAgICAgICYmICghY29udGFpbmluZ0Jsb2NrLT5zdHlsZSgpLT5oZWlnaHQoKS5p
c0F1dG8oKQogICAgICAgICAgICAgfHwgIXN0eWxlKCktPnRvcCgpLmlzUGVyY2VudCgpCiAgICAg
ICAgICAgICB8fCBjb250YWluaW5nQmxvY2stPnN0cmV0Y2hlc1RvVmlld3BvcnQoKSkpCi0gICAg
ICAgIHJldHVybiBvZmZzZXQgKyBzdHlsZSgpLT50b3AoKS5jYWxjVmFsdWUoY29udGFpbmluZ0Js
b2NrLT5hdmFpbGFibGVIZWlnaHQoKSk7CisgICAgICAgIHJldHVybiBvZmZzZXQgKyBjYWxjdWxh
dGVWYWx1ZShzdHlsZSgpLT50b3AoKSwgY29udGFpbmluZ0Jsb2NrLT5hdmFpbGFibGVIZWlnaHQo
KSk7CiAKICAgICBpZiAoIXN0eWxlKCktPmJvdHRvbSgpLmlzQXV0bygpCiAgICAgICAgICYmICgh
Y29udGFpbmluZ0Jsb2NrLT5zdHlsZSgpLT5oZWlnaHQoKS5pc0F1dG8oKQogICAgICAgICAgICAg
fHwgIXN0eWxlKCktPmJvdHRvbSgpLmlzUGVyY2VudCgpCiAgICAgICAgICAgICB8fCBjb250YWlu
aW5nQmxvY2stPnN0cmV0Y2hlc1RvVmlld3BvcnQoKSkpCi0gICAgICAgIHJldHVybiBvZmZzZXQg
KyAtc3R5bGUoKS0+Ym90dG9tKCkuY2FsY1ZhbHVlKGNvbnRhaW5pbmdCbG9jay0+YXZhaWxhYmxl
SGVpZ2h0KCkpOworICAgICAgICByZXR1cm4gb2Zmc2V0ICsgLWNhbGN1bGF0ZVZhbHVlKHN0eWxl
KCktPmJvdHRvbSgpLCBjb250YWluaW5nQmxvY2stPmF2YWlsYWJsZUhlaWdodCgpKTsKIAogICAg
IHJldHVybiBvZmZzZXQ7CiB9CkBAIC01NTYsNyArNTU2LDcgQEAgTGF5b3V0VW5pdCBSZW5kZXJC
b3hNb2RlbE9iamVjdDo6cGFkZGluZwogICAgIExlbmd0aCBwYWRkaW5nID0gc3R5bGUoKS0+cGFk
ZGluZ1RvcCgpOwogICAgIGlmIChwYWRkaW5nLmlzUGVyY2VudCgpKQogICAgICAgICB3ID0gY29u
dGFpbmluZ0Jsb2NrKCktPmF2YWlsYWJsZUxvZ2ljYWxXaWR0aCgpOwotICAgIHJldHVybiBwYWRk
aW5nLmNhbGNNaW5WYWx1ZSh3KTsKKyAgICByZXR1cm4gY2FsY3VsYXRlTWluVmFsdWUocGFkZGlu
Zywgdyk7CiB9CiAKIExheW91dFVuaXQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhZGRpbmdCb3R0
b20oUGFkZGluZ09wdGlvbnMpIGNvbnN0CkBAIC01NjUsNyArNTY1LDcgQEAgTGF5b3V0VW5pdCBS
ZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFkZGluZwogICAgIExlbmd0aCBwYWRkaW5nID0gc3R5bGUo
KS0+cGFkZGluZ0JvdHRvbSgpOwogICAgIGlmIChwYWRkaW5nLmlzUGVyY2VudCgpKQogICAgICAg
ICB3ID0gY29udGFpbmluZ0Jsb2NrKCktPmF2YWlsYWJsZUxvZ2ljYWxXaWR0aCgpOwotICAgIHJl
dHVybiBwYWRkaW5nLmNhbGNNaW5WYWx1ZSh3KTsKKyAgICByZXR1cm4gY2FsY3VsYXRlTWluVmFs
dWUocGFkZGluZywgdyk7CiB9CiAKIExheW91dFVuaXQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBh
ZGRpbmdMZWZ0KFBhZGRpbmdPcHRpb25zKSBjb25zdApAQCAtNTc0LDcgKzU3NCw3IEBAIExheW91
dFVuaXQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhZGRpbmcKICAgICBMZW5ndGggcGFkZGluZyA9
IHN0eWxlKCktPnBhZGRpbmdMZWZ0KCk7CiAgICAgaWYgKHBhZGRpbmcuaXNQZXJjZW50KCkpCiAg
ICAgICAgIHcgPSBjb250YWluaW5nQmxvY2soKS0+YXZhaWxhYmxlTG9naWNhbFdpZHRoKCk7Ci0g
ICAgcmV0dXJuIHBhZGRpbmcuY2FsY01pblZhbHVlKHcpOworICAgIHJldHVybiBjYWxjdWxhdGVN
aW5WYWx1ZShwYWRkaW5nLCB3KTsKIH0KIAogTGF5b3V0VW5pdCBSZW5kZXJCb3hNb2RlbE9iamVj
dDo6cGFkZGluZ1JpZ2h0KFBhZGRpbmdPcHRpb25zKSBjb25zdApAQCAtNTgzLDcgKzU4Myw3IEBA
IExheW91dFVuaXQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhZGRpbmcKICAgICBMZW5ndGggcGFk
ZGluZyA9IHN0eWxlKCktPnBhZGRpbmdSaWdodCgpOwogICAgIGlmIChwYWRkaW5nLmlzUGVyY2Vu
dCgpKQogICAgICAgICB3ID0gY29udGFpbmluZ0Jsb2NrKCktPmF2YWlsYWJsZUxvZ2ljYWxXaWR0
aCgpOwotICAgIHJldHVybiBwYWRkaW5nLmNhbGNNaW5WYWx1ZSh3KTsKKyAgICByZXR1cm4gY2Fs
Y3VsYXRlTWluVmFsdWUocGFkZGluZywgdyk7CiB9CiAKIExheW91dFVuaXQgUmVuZGVyQm94TW9k
ZWxPYmplY3Q6OnBhZGRpbmdCZWZvcmUoUGFkZGluZ09wdGlvbnMpIGNvbnN0CkBAIC01OTIsNyAr
NTkyLDcgQEAgTGF5b3V0VW5pdCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFkZGluZwogICAgIExl
bmd0aCBwYWRkaW5nID0gc3R5bGUoKS0+cGFkZGluZ0JlZm9yZSgpOwogICAgIGlmIChwYWRkaW5n
LmlzUGVyY2VudCgpKQogICAgICAgICB3ID0gY29udGFpbmluZ0Jsb2NrKCktPmF2YWlsYWJsZUxv
Z2ljYWxXaWR0aCgpOwotICAgIHJldHVybiBwYWRkaW5nLmNhbGNNaW5WYWx1ZSh3KTsKKyAgICBy
ZXR1cm4gY2FsY3VsYXRlTWluVmFsdWUocGFkZGluZywgdyk7CiB9CiAKIExheW91dFVuaXQgUmVu
ZGVyQm94TW9kZWxPYmplY3Q6OnBhZGRpbmdBZnRlcihQYWRkaW5nT3B0aW9ucykgY29uc3QKQEAg
LTYwMSw3ICs2MDEsNyBAQCBMYXlvdXRVbml0IFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWRkaW5n
CiAgICAgTGVuZ3RoIHBhZGRpbmcgPSBzdHlsZSgpLT5wYWRkaW5nQWZ0ZXIoKTsKICAgICBpZiAo
cGFkZGluZy5pc1BlcmNlbnQoKSkKICAgICAgICAgdyA9IGNvbnRhaW5pbmdCbG9jaygpLT5hdmFp
bGFibGVMb2dpY2FsV2lkdGgoKTsKLSAgICByZXR1cm4gcGFkZGluZy5jYWxjTWluVmFsdWUodyk7
CisgICAgcmV0dXJuIGNhbGN1bGF0ZU1pblZhbHVlKHBhZGRpbmcsIHcpOwogfQogCiBMYXlvdXRV
bml0IFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWRkaW5nU3RhcnQoUGFkZGluZ09wdGlvbnMpIGNv
bnN0CkBAIC02MTAsNyArNjEwLDcgQEAgTGF5b3V0VW5pdCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6
cGFkZGluZwogICAgIExlbmd0aCBwYWRkaW5nID0gc3R5bGUoKS0+cGFkZGluZ1N0YXJ0KCk7CiAg
ICAgaWYgKHBhZGRpbmcuaXNQZXJjZW50KCkpCiAgICAgICAgIHcgPSBjb250YWluaW5nQmxvY2so
KS0+YXZhaWxhYmxlTG9naWNhbFdpZHRoKCk7Ci0gICAgcmV0dXJuIHBhZGRpbmcuY2FsY01pblZh
bHVlKHcpOworICAgIHJldHVybiBjYWxjdWxhdGVNaW5WYWx1ZShwYWRkaW5nLCB3KTsKIH0KIAog
TGF5b3V0VW5pdCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFkZGluZ0VuZChQYWRkaW5nT3B0aW9u
cykgY29uc3QKQEAgLTYxOSw3ICs2MTksNyBAQCBMYXlvdXRVbml0IFJlbmRlckJveE1vZGVsT2Jq
ZWN0OjpwYWRkaW5nCiAgICAgTGVuZ3RoIHBhZGRpbmcgPSBzdHlsZSgpLT5wYWRkaW5nRW5kKCk7
CiAgICAgaWYgKHBhZGRpbmcuaXNQZXJjZW50KCkpCiAgICAgICAgIHcgPSBjb250YWluaW5nQmxv
Y2soKS0+YXZhaWxhYmxlTG9naWNhbFdpZHRoKCk7Ci0gICAgcmV0dXJuIHBhZGRpbmcuY2FsY01p
blZhbHVlKHcpOworICAgIHJldHVybiBjYWxjdWxhdGVNaW5WYWx1ZShwYWRkaW5nLCB3KTsKIH0K
IAogUm91bmRlZFJlY3QgUmVuZGVyQm94TW9kZWxPYmplY3Q6OmdldEJhY2tncm91bmRSb3VuZGVk
UmVjdChjb25zdCBMYXlvdXRSZWN0JiBib3JkZXJSZWN0LCBJbmxpbmVGbG93Qm94KiBib3gsIExh
eW91dFVuaXQgaW5saW5lQm94V2lkdGgsIExheW91dFVuaXQgaW5saW5lQm94SGVpZ2h0LApAQCAt
MTAwMCwxMiArMTAwMCwxMiBAQCBJbnRTaXplIFJlbmRlckJveE1vZGVsT2JqZWN0OjpjYWxjdWxh
dGVGCiAgICAgICAgICAgICBpZiAobGF5ZXJXaWR0aC5pc0ZpeGVkKCkpCiAgICAgICAgICAgICAg
ICAgdyA9IGxheWVyV2lkdGgudmFsdWUoKTsKICAgICAgICAgICAgIGVsc2UgaWYgKGxheWVyV2lk
dGguaXNQZXJjZW50KCkpCi0gICAgICAgICAgICAgICAgdyA9IGxheWVyV2lkdGguY2FsY1ZhbHVl
KHBvc2l0aW9uaW5nQXJlYVNpemUud2lkdGgoKSk7CisgICAgICAgICAgICAgICAgdyA9IGNhbGN1
bGF0ZVZhbHVlKGxheWVyV2lkdGgsIHBvc2l0aW9uaW5nQXJlYVNpemUud2lkdGgoKSk7CiAgICAg
ICAgICAgICAKICAgICAgICAgICAgIGlmIChsYXllckhlaWdodC5pc0ZpeGVkKCkpCiAgICAgICAg
ICAgICAgICAgaCA9IGxheWVySGVpZ2h0LnZhbHVlKCk7CiAgICAgICAgICAgICBlbHNlIGlmIChs
YXllckhlaWdodC5pc1BlcmNlbnQoKSkKLSAgICAgICAgICAgICAgICBoID0gbGF5ZXJIZWlnaHQu
Y2FsY1ZhbHVlKHBvc2l0aW9uaW5nQXJlYVNpemUuaGVpZ2h0KCkpOworICAgICAgICAgICAgICAg
IGggPSBjYWxjdWxhdGVWYWx1ZShsYXllckhlaWdodCwgcG9zaXRpb25pbmdBcmVhU2l6ZS5oZWln
aHQoKSk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIC8vIElmIG9uZSBvZiB0aGUgdmFsdWVz
IGlzIGF1dG8gd2UgaGF2ZSB0byB1c2UgdGhlIGFwcHJvcHJpYXRlCiAgICAgICAgICAgICAvLyBz
Y2FsZSB0byBtYWludGFpbiBvdXIgYXNwZWN0IHJhdGlvLgpAQCAtMTEzOCwxMyArMTEzOCwxMyBA
QCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpjYWxjdWxhdGVCYWNrCiAgICAgRUZpbGxSZXBl
YXQgYmFja2dyb3VuZFJlcGVhdFggPSBmaWxsTGF5ZXItPnJlcGVhdFgoKTsKICAgICBFRmlsbFJl
cGVhdCBiYWNrZ3JvdW5kUmVwZWF0WSA9IGZpbGxMYXllci0+cmVwZWF0WSgpOwogCi0gICAgTGF5
b3V0VW5pdCB4UG9zaXRpb24gPSBmaWxsTGF5ZXItPnhQb3NpdGlvbigpLmNhbGNNaW5WYWx1ZShw
b3NpdGlvbmluZ0FyZWFTaXplLndpZHRoKCkgLSBnZW9tZXRyeS50aWxlU2l6ZSgpLndpZHRoKCks
IHRydWUpOworICAgIExheW91dFVuaXQgeFBvc2l0aW9uID0gY2FsY3VsYXRlTWluVmFsdWUoZmls
bExheWVyLT54UG9zaXRpb24oKSwgcG9zaXRpb25pbmdBcmVhU2l6ZS53aWR0aCgpIC0gZ2VvbWV0
cnkudGlsZVNpemUoKS53aWR0aCgpLCB0cnVlKTsKICAgICBpZiAoYmFja2dyb3VuZFJlcGVhdFgg
PT0gUmVwZWF0RmlsbCkKICAgICAgICAgZ2VvbWV0cnkuc2V0UGhhc2VYKGdlb21ldHJ5LnRpbGVT
aXplKCkud2lkdGgoKSA/IGxheW91dE1vZChnZW9tZXRyeS50aWxlU2l6ZSgpLndpZHRoKCkgLSAo
eFBvc2l0aW9uICsgbGVmdCksIGdlb21ldHJ5LnRpbGVTaXplKCkud2lkdGgoKSkgOiBMYXlvdXRV
bml0KDApKTsKICAgICBlbHNlCiAgICAgICAgIGdlb21ldHJ5LnNldE5vUmVwZWF0WCh4UG9zaXRp
b24gKyBsZWZ0KTsKIAotICAgIExheW91dFVuaXQgeVBvc2l0aW9uID0gZmlsbExheWVyLT55UG9z
aXRpb24oKS5jYWxjTWluVmFsdWUocG9zaXRpb25pbmdBcmVhU2l6ZS5oZWlnaHQoKSAtIGdlb21l
dHJ5LnRpbGVTaXplKCkuaGVpZ2h0KCksIHRydWUpOworICAgIExheW91dFVuaXQgeVBvc2l0aW9u
ID0gY2FsY3VsYXRlTWluVmFsdWUoZmlsbExheWVyLT55UG9zaXRpb24oKSwgcG9zaXRpb25pbmdB
cmVhU2l6ZS5oZWlnaHQoKSAtIGdlb21ldHJ5LnRpbGVTaXplKCkuaGVpZ2h0KCksIHRydWUpOwog
ICAgIGlmIChiYWNrZ3JvdW5kUmVwZWF0WSA9PSBSZXBlYXRGaWxsKQogICAgICAgICBnZW9tZXRy
eS5zZXRQaGFzZVkoZ2VvbWV0cnkudGlsZVNpemUoKS5oZWlnaHQoKSA/IGxheW91dE1vZChnZW9t
ZXRyeS50aWxlU2l6ZSgpLmhlaWdodCgpIC0gKHlQb3NpdGlvbiArIHRvcCksIGdlb21ldHJ5LnRp
bGVTaXplKCkuaGVpZ2h0KCkpIDogTGF5b3V0VW5pdCgwKSk7CiAgICAgZWxzZSAKQEAgLTExNjMs
NyArMTE2Myw3IEBAIHN0YXRpYyBMYXlvdXRVbml0IGNvbXB1dGVCb3JkZXJJbWFnZVNpZGUKICAg
ICAgICAgcmV0dXJuIGJvcmRlclNsaWNlLnZhbHVlKCkgKiBib3JkZXJTaWRlOwogICAgIGlmIChi
b3JkZXJTbGljZS5pc0F1dG8oKSkKICAgICAgICAgcmV0dXJuIGltYWdlU2lkZTsKLSAgICByZXR1
cm4gYm9yZGVyU2xpY2UuY2FsY1ZhbHVlKGJveEV4dGVudCk7CisgICAgcmV0dXJuIGNhbGN1bGF0
ZVZhbHVlKGJvcmRlclNsaWNlLCBib3hFeHRlbnQpOwogfQogCiBib29sIFJlbmRlckJveE1vZGVs
T2JqZWN0OjpwYWludE5pbmVQaWVjZUltYWdlKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250
ZXh0LCBjb25zdCBMYXlvdXRSZWN0JiByZWN0LCBjb25zdCBSZW5kZXJTdHlsZSogc3R5bGUsCkBA
IC0xMjAxLDEwICsxMjAxLDEwIEBAIGJvb2wgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50Tmlu
ZVBpZWMKICAgICBpbnQgaW1hZ2VXaWR0aCA9IGltYWdlU2l6ZS53aWR0aCgpIC8gc3R5bGUtPmVm
ZmVjdGl2ZVpvb20oKTsKICAgICBpbnQgaW1hZ2VIZWlnaHQgPSBpbWFnZVNpemUuaGVpZ2h0KCkg
LyBzdHlsZS0+ZWZmZWN0aXZlWm9vbSgpOwogCi0gICAgaW50IHRvcFNsaWNlID0gbWluPGludD4o
aW1hZ2VIZWlnaHQsIG5pbmVQaWVjZUltYWdlLmltYWdlU2xpY2VzKCkudG9wKCkuY2FsY1ZhbHVl
KGltYWdlSGVpZ2h0KSk7Ci0gICAgaW50IHJpZ2h0U2xpY2UgPSBtaW48aW50PihpbWFnZVdpZHRo
LCBuaW5lUGllY2VJbWFnZS5pbWFnZVNsaWNlcygpLnJpZ2h0KCkuY2FsY1ZhbHVlKGltYWdlV2lk
dGgpKTsKLSAgICBpbnQgYm90dG9tU2xpY2UgPSBtaW48aW50PihpbWFnZUhlaWdodCwgbmluZVBp
ZWNlSW1hZ2UuaW1hZ2VTbGljZXMoKS5ib3R0b20oKS5jYWxjVmFsdWUoaW1hZ2VIZWlnaHQpKTsK
LSAgICBpbnQgbGVmdFNsaWNlID0gbWluPGludD4oaW1hZ2VXaWR0aCwgbmluZVBpZWNlSW1hZ2Uu
aW1hZ2VTbGljZXMoKS5sZWZ0KCkuY2FsY1ZhbHVlKGltYWdlV2lkdGgpKTsKKyAgICBpbnQgdG9w
U2xpY2UgPSBtaW48aW50PihpbWFnZUhlaWdodCwgY2FsY3VsYXRlVmFsdWUobmluZVBpZWNlSW1h
Z2UuaW1hZ2VTbGljZXMoKS50b3AoKSwgaW1hZ2VIZWlnaHQpKTsKKyAgICBpbnQgcmlnaHRTbGlj
ZSA9IG1pbjxpbnQ+KGltYWdlV2lkdGgsIGNhbGN1bGF0ZVZhbHVlKG5pbmVQaWVjZUltYWdlLmlt
YWdlU2xpY2VzKCkucmlnaHQoKSwgaW1hZ2VXaWR0aCkpOworICAgIGludCBib3R0b21TbGljZSA9
IG1pbjxpbnQ+KGltYWdlSGVpZ2h0LCBjYWxjdWxhdGVWYWx1ZShuaW5lUGllY2VJbWFnZS5pbWFn
ZVNsaWNlcygpLmJvdHRvbSgpLCBpbWFnZUhlaWdodCkpOworICAgIGludCBsZWZ0U2xpY2UgPSBt
aW48aW50PihpbWFnZVdpZHRoLCBjYWxjdWxhdGVWYWx1ZShuaW5lUGllY2VJbWFnZS5pbWFnZVNs
aWNlcygpLmxlZnQoKSwgaW1hZ2VXaWR0aCkpOwogCiAgICAgRU5pbmVQaWVjZUltYWdlUnVsZSBo
UnVsZSA9IG5pbmVQaWVjZUltYWdlLmhvcml6b250YWxSdWxlKCk7CiAgICAgRU5pbmVQaWVjZUlt
YWdlUnVsZSB2UnVsZSA9IG5pbmVQaWVjZUltYWdlLnZlcnRpY2FsUnVsZSgpOwpJbmRleDogU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3guY3BwCShyZXZpc2lv
biAxMTA2NjIpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3gu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NzMsNyArNTczLDcgQEAgTGF5b3V0VW5pdCBSZW5kZXJG
bGV4aWJsZUJveDo6cHJlZmVycmVkTQogICAgICAgICBMYXlvdXRVbml0IG1haW5BeGlzRXh0ZW50
ID0gaGFzT3J0aG9nb25hbEZsb3coY2hpbGQpID8gY2hpbGQtPmxvZ2ljYWxIZWlnaHQoKSA6IGNo
aWxkLT5tYXhQcmVmZXJyZWRMb2dpY2FsV2lkdGgoKTsKICAgICAgICAgcmV0dXJuIG1haW5BeGlz
RXh0ZW50IC0gbWFpbkF4aXNCb3JkZXJBbmRQYWRkaW5nRXh0ZW50Rm9yQ2hpbGQoY2hpbGQpIC0g
bWFpbkF4aXNTY3JvbGxiYXJFeHRlbnRGb3JDaGlsZChjaGlsZCk7CiAgICAgfQotICAgIHJldHVy
biBtYWluQXhpc0xlbmd0aC5jYWxjTWluVmFsdWUobWFpbkF4aXNDb250ZW50RXh0ZW50KCkpOwor
ICAgIHJldHVybiBjYWxjdWxhdGVNaW5WYWx1ZShtYWluQXhpc0xlbmd0aCwgbWFpbkF4aXNDb250
ZW50RXh0ZW50KCkpOwogfQogCiB2b2lkIFJlbmRlckZsZXhpYmxlQm94OjpsYXlvdXRGbGV4SXRl
bXMoYm9vbCByZWxheW91dENoaWxkcmVuKQpAQCAtNjYwLDExICs2NjAsMTEgQEAgdm9pZCBSZW5k
ZXJGbGV4aWJsZUJveDo6Y29tcHV0ZU1haW5BeGlzUAogICAgICAgICAvLyBvZiAwIGFuZCBiZWNh
dXNlIGlmIHdlJ3JlIG5vdCBhdXRvIHNpemluZywgd2UgZG9uJ3QgZG8gYSBsYXlvdXQgdGhhdAog
ICAgICAgICAvLyBjb21wdXRlcyB0aGUgc3RhcnQvZW5kIG1hcmdpbnMuCiAgICAgICAgIGlmIChp
c0hvcml6b250YWxGbG93KCkpIHsKLSAgICAgICAgICAgIGNoaWxkLT5zZXRNYXJnaW5MZWZ0KGNo
aWxkLT5zdHlsZSgpLT5tYXJnaW5MZWZ0KCkuY2FsY01pblZhbHVlKGZsZXhib3hBdmFpbGFibGVD
b250ZW50RXh0ZW50KSk7Ci0gICAgICAgICAgICBjaGlsZC0+c2V0TWFyZ2luUmlnaHQoY2hpbGQt
PnN0eWxlKCktPm1hcmdpblJpZ2h0KCkuY2FsY01pblZhbHVlKGZsZXhib3hBdmFpbGFibGVDb250
ZW50RXh0ZW50KSk7CisgICAgICAgICAgICBjaGlsZC0+c2V0TWFyZ2luTGVmdChjYWxjdWxhdGVN
aW5WYWx1ZShjaGlsZC0+c3R5bGUoKS0+bWFyZ2luTGVmdCgpLCBmbGV4Ym94QXZhaWxhYmxlQ29u
dGVudEV4dGVudCkpOworICAgICAgICAgICAgY2hpbGQtPnNldE1hcmdpblJpZ2h0KGNhbGN1bGF0
ZU1pblZhbHVlKGNoaWxkLT5zdHlsZSgpLT5tYXJnaW5SaWdodCgpLCBmbGV4Ym94QXZhaWxhYmxl
Q29udGVudEV4dGVudCkpOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgY2hpbGQtPnNl
dE1hcmdpblRvcChjaGlsZC0+c3R5bGUoKS0+bWFyZ2luVG9wKCkuY2FsY01pblZhbHVlKGZsZXhi
b3hBdmFpbGFibGVDb250ZW50RXh0ZW50KSk7Ci0gICAgICAgICAgICBjaGlsZC0+c2V0TWFyZ2lu
Qm90dG9tKGNoaWxkLT5zdHlsZSgpLT5tYXJnaW5Cb3R0b20oKS5jYWxjTWluVmFsdWUoZmxleGJv
eEF2YWlsYWJsZUNvbnRlbnRFeHRlbnQpKTsKKyAgICAgICAgICAgIGNoaWxkLT5zZXRNYXJnaW5U
b3AoY2FsY3VsYXRlTWluVmFsdWUoY2hpbGQtPnN0eWxlKCktPm1hcmdpblRvcCgpLCBmbGV4Ym94
QXZhaWxhYmxlQ29udGVudEV4dGVudCkpOworICAgICAgICAgICAgY2hpbGQtPnNldE1hcmdpbkJv
dHRvbShjYWxjdWxhdGVNaW5WYWx1ZShjaGlsZC0+c3R5bGUoKS0+bWFyZ2luQm90dG9tKCksIGZs
ZXhib3hBdmFpbGFibGVDb250ZW50RXh0ZW50KSk7CiAgICAgICAgIH0KICAgICB9CiB9CkBAIC03
MjUsOCArNzI1LDggQEAgYm9vbCBSZW5kZXJGbGV4aWJsZUJveDo6cnVuRnJlZVNwYWNlQWxsbwog
ICAgICAgICAgICAgICAgIGNoaWxkUHJlZmVycmVkU2l6ZSArPSBscm91bmRmKGF2YWlsYWJsZUZy
ZWVTcGFjZSAqIHBvc2l0aXZlRmxleEZvckNoaWxkKGNoaWxkKSAvIHRvdGFsUG9zaXRpdmVGbGV4
aWJpbGl0eSk7CiAKICAgICAgICAgICAgICAgICBMZW5ndGggY2hpbGRMb2dpY2FsTWF4V2lkdGgg
PSBpc0hvcml6b250YWxGbG93KCkgPyBjaGlsZC0+c3R5bGUoKS0+bWF4V2lkdGgoKSA6IGNoaWxk
LT5zdHlsZSgpLT5tYXhIZWlnaHQoKTsKLSAgICAgICAgICAgICAgICBpZiAoIWNoaWxkTG9naWNh
bE1heFdpZHRoLmlzVW5kZWZpbmVkKCkgJiYgY2hpbGRMb2dpY2FsTWF4V2lkdGguaXNTcGVjaWZp
ZWQoKSAmJiBjaGlsZFByZWZlcnJlZFNpemUgPiBjaGlsZExvZ2ljYWxNYXhXaWR0aC5jYWxjVmFs
dWUoZmxleGJveEF2YWlsYWJsZUNvbnRlbnRFeHRlbnQpKSB7Ci0gICAgICAgICAgICAgICAgICAg
IGNoaWxkUHJlZmVycmVkU2l6ZSA9IGNoaWxkTG9naWNhbE1heFdpZHRoLmNhbGNWYWx1ZShmbGV4
Ym94QXZhaWxhYmxlQ29udGVudEV4dGVudCk7CisgICAgICAgICAgICAgICAgaWYgKCFjaGlsZExv
Z2ljYWxNYXhXaWR0aC5pc1VuZGVmaW5lZCgpICYmIGNoaWxkTG9naWNhbE1heFdpZHRoLmlzU3Bl
Y2lmaWVkKCkgJiYgY2hpbGRQcmVmZXJyZWRTaXplID4gY2FsY3VsYXRlVmFsdWUoY2hpbGRMb2dp
Y2FsTWF4V2lkdGgsIGZsZXhib3hBdmFpbGFibGVDb250ZW50RXh0ZW50KSkgeworICAgICAgICAg
ICAgICAgICAgICBjaGlsZFByZWZlcnJlZFNpemUgPSBjYWxjdWxhdGVWYWx1ZShjaGlsZExvZ2lj
YWxNYXhXaWR0aCwgZmxleGJveEF2YWlsYWJsZUNvbnRlbnRFeHRlbnQpOwogICAgICAgICAgICAg
ICAgICAgICBhdmFpbGFibGVGcmVlU3BhY2UgLT0gY2hpbGRQcmVmZXJyZWRTaXplIC0gcHJlZmVy
cmVkTWFpbkF4aXNDb250ZW50RXh0ZW50Rm9yQ2hpbGQoY2hpbGQpOwogICAgICAgICAgICAgICAg
ICAgICB0b3RhbFBvc2l0aXZlRmxleGliaWxpdHkgLT0gcG9zaXRpdmVGbGV4Rm9yQ2hpbGQoY2hp
bGQpOwogCkBAIC03MzcsOCArNzM3LDggQEAgYm9vbCBSZW5kZXJGbGV4aWJsZUJveDo6cnVuRnJl
ZVNwYWNlQWxsbwogICAgICAgICAgICAgICAgIGNoaWxkUHJlZmVycmVkU2l6ZSArPSBscm91bmRm
KGF2YWlsYWJsZUZyZWVTcGFjZSAqIG5lZ2F0aXZlRmxleEZvckNoaWxkKGNoaWxkKSAvIHRvdGFs
TmVnYXRpdmVGbGV4aWJpbGl0eSk7CiAKICAgICAgICAgICAgICAgICBMZW5ndGggY2hpbGRMb2dp
Y2FsTWluV2lkdGggPSBpc0hvcml6b250YWxGbG93KCkgPyBjaGlsZC0+c3R5bGUoKS0+bWluV2lk
dGgoKSA6IGNoaWxkLT5zdHlsZSgpLT5taW5IZWlnaHQoKTsKLSAgICAgICAgICAgICAgICBpZiAo
IWNoaWxkTG9naWNhbE1pbldpZHRoLmlzVW5kZWZpbmVkKCkgJiYgY2hpbGRMb2dpY2FsTWluV2lk
dGguaXNTcGVjaWZpZWQoKSAmJiBjaGlsZFByZWZlcnJlZFNpemUgPCBjaGlsZExvZ2ljYWxNaW5X
aWR0aC5jYWxjVmFsdWUoZmxleGJveEF2YWlsYWJsZUNvbnRlbnRFeHRlbnQpKSB7Ci0gICAgICAg
ICAgICAgICAgICAgIGNoaWxkUHJlZmVycmVkU2l6ZSA9IGNoaWxkTG9naWNhbE1pbldpZHRoLmNh
bGNWYWx1ZShmbGV4Ym94QXZhaWxhYmxlQ29udGVudEV4dGVudCk7CisgICAgICAgICAgICAgICAg
aWYgKCFjaGlsZExvZ2ljYWxNaW5XaWR0aC5pc1VuZGVmaW5lZCgpICYmIGNoaWxkTG9naWNhbE1p
bldpZHRoLmlzU3BlY2lmaWVkKCkgJiYgY2hpbGRQcmVmZXJyZWRTaXplIDwgY2FsY3VsYXRlVmFs
dWUoY2hpbGRMb2dpY2FsTWluV2lkdGgsIGZsZXhib3hBdmFpbGFibGVDb250ZW50RXh0ZW50KSkg
eworICAgICAgICAgICAgICAgICAgICBjaGlsZFByZWZlcnJlZFNpemUgPSBjYWxjdWxhdGVWYWx1
ZShjaGlsZExvZ2ljYWxNaW5XaWR0aCwgZmxleGJveEF2YWlsYWJsZUNvbnRlbnRFeHRlbnQpOwog
ICAgICAgICAgICAgICAgICAgICBhdmFpbGFibGVGcmVlU3BhY2UgKz0gcHJlZmVycmVkTWFpbkF4
aXNDb250ZW50RXh0ZW50Rm9yQ2hpbGQoY2hpbGQpIC0gY2hpbGRQcmVmZXJyZWRTaXplOwogICAg
ICAgICAgICAgICAgICAgICB0b3RhbE5lZ2F0aXZlRmxleGliaWxpdHkgLT0gbmVnYXRpdmVGbGV4
Rm9yQ2hpbGQoY2hpbGQpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
RnJhbWVTZXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJGcmFtZVNldC5jcHAJKHJldmlzaW9uIDExMDY2MikKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJGcmFtZVNldC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIyMyw3ICsyMjMsNyBA
QCB2b2lkIFJlbmRlckZyYW1lU2V0OjpsYXlPdXRBeGlzKEdyaWRBeGlzCiAgICAgICAgIC8vIENv
dW50IHRoZSB0b3RhbCBwZXJjZW50YWdlIG9mIGFsbCBvZiB0aGUgcGVyY2VudGFnZSBjb2x1bW5z
L3Jvd3MgLT4gdG90YWxQZXJjZW50CiAgICAgICAgIC8vIENvdW50IHRoZSBudW1iZXIgb2YgY29s
dW1ucy9yb3dzIHdoaWNoIGFyZSBwZXJjZW50YWdlcyAtPiBjb3VudFBlcmNlbnQKICAgICAgICAg
aWYgKGdyaWRbaV0uaXNQZXJjZW50KCkpIHsKLSAgICAgICAgICAgIGdyaWRMYXlvdXRbaV0gPSBt
YXgoZ3JpZFtpXS5jYWxjVmFsdWUoYXZhaWxhYmxlTGVuKSwgMCk7CisgICAgICAgICAgICBncmlk
TGF5b3V0W2ldID0gbWF4KGNhbGN1bGF0ZVZhbHVlKGdyaWRbaV0sIGF2YWlsYWJsZUxlbiksIDAp
OwogICAgICAgICAgICAgdG90YWxQZXJjZW50ICs9IGdyaWRMYXlvdXRbaV07CiAgICAgICAgICAg
ICBjb3VudFBlcmNlbnQrKzsKICAgICAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlcklubGluZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlcklubGluZS5jcHAJKHJldmlzaW9uIDExMDY2MikKKysrIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MDEsNyArNzAx
LDcgQEAgc3RhdGljIExheW91dFVuaXQgY29tcHV0ZU1hcmdpbihjb25zdCBSZQogICAgIGlmICht
YXJnaW4uaXNGaXhlZCgpKQogICAgICAgICByZXR1cm4gbWFyZ2luLnZhbHVlKCk7CiAgICAgaWYg
KG1hcmdpbi5pc1BlcmNlbnQoKSkKLSAgICAgICAgcmV0dXJuIG1hcmdpbi5jYWxjTWluVmFsdWUo
bWF4PExheW91dFVuaXQ+KDAsIHJlbmRlcmVyLT5jb250YWluaW5nQmxvY2soKS0+YXZhaWxhYmxl
TG9naWNhbFdpZHRoKCkpKTsKKyAgICAgICAgcmV0dXJuIGNhbGN1bGF0ZU1pblZhbHVlKG1hcmdp
biwgbWF4PExheW91dFVuaXQ+KDAsIHJlbmRlcmVyLT5jb250YWluaW5nQmxvY2soKS0+YXZhaWxh
YmxlTG9naWNhbFdpZHRoKCkpKTsKICAgICByZXR1cm4gMDsKIH0KIApJbmRleDogU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCShyZXZpc2lvbiAxMTA2NjIpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04
MjAsOCArODIwLDggQEAgVHJhbnNmb3JtYXRpb25NYXRyaXggUmVuZGVyTGF5ZXI6OnBlcnNwZQog
ICAgIGNvbnN0IGZsb2F0IGJveFdpZHRoID0gYm9yZGVyQm94LndpZHRoKCk7CiAgICAgY29uc3Qg
ZmxvYXQgYm94SGVpZ2h0ID0gYm9yZGVyQm94LmhlaWdodCgpOwogCi0gICAgZmxvYXQgcGVyc3Bl
Y3RpdmVPcmlnaW5YID0gc3R5bGUtPnBlcnNwZWN0aXZlT3JpZ2luWCgpLmNhbGNGbG9hdFZhbHVl
KGJveFdpZHRoKTsKLSAgICBmbG9hdCBwZXJzcGVjdGl2ZU9yaWdpblkgPSBzdHlsZS0+cGVyc3Bl
Y3RpdmVPcmlnaW5ZKCkuY2FsY0Zsb2F0VmFsdWUoYm94SGVpZ2h0KTsKKyAgICBmbG9hdCBwZXJz
cGVjdGl2ZU9yaWdpblggPSBjYWxjdWxhdGVGbG9hdFZhbHVlKHN0eWxlLT5wZXJzcGVjdGl2ZU9y
aWdpblgoKSwgYm94V2lkdGgpOworICAgIGZsb2F0IHBlcnNwZWN0aXZlT3JpZ2luWSA9IGNhbGN1
bGF0ZUZsb2F0VmFsdWUoc3R5bGUtPnBlcnNwZWN0aXZlT3JpZ2luWSgpLCBib3hIZWlnaHQpOwog
CiAgICAgLy8gQSBwZXJzcGVjdGl2ZSBvcmlnaW4gb2YgMCwwIG1ha2VzIHRoZSB2YW5pc2hpbmcg
cG9pbnQgaW4gdGhlIGNlbnRlciBvZiB0aGUgZWxlbWVudC4KICAgICAvLyBXZSB3YW50IGl0IHRv
IGJlIGluIHRoZSB0b3AtbGVmdCwgc28gc3VidHJhY3QgaGFsZiB0aGUgaGVpZ2h0IGFuZCB3aWR0
aC4KQEAgLTg0NCw4ICs4NDQsOCBAQCBGbG9hdFBvaW50IFJlbmRlckxheWVyOjpwZXJzcGVjdGl2
ZU9yaWdpCiAgICAgY29uc3QgTGF5b3V0UmVjdCBib3JkZXJCb3ggPSB0b1JlbmRlckJveChyZW5k
ZXJlcigpKS0+Ym9yZGVyQm94UmVjdCgpOwogICAgIFJlbmRlclN0eWxlKiBzdHlsZSA9IHJlbmRl
cmVyKCktPnN0eWxlKCk7CiAKLSAgICByZXR1cm4gRmxvYXRQb2ludChzdHlsZS0+cGVyc3BlY3Rp
dmVPcmlnaW5YKCkuY2FsY0Zsb2F0VmFsdWUoYm9yZGVyQm94LndpZHRoKCkpLAotICAgICAgICAg
ICAgICAgICAgICAgIHN0eWxlLT5wZXJzcGVjdGl2ZU9yaWdpblkoKS5jYWxjRmxvYXRWYWx1ZShi
b3JkZXJCb3guaGVpZ2h0KCkpKTsKKyAgICByZXR1cm4gRmxvYXRQb2ludChjYWxjdWxhdGVGbG9h
dFZhbHVlKHN0eWxlLT5wZXJzcGVjdGl2ZU9yaWdpblgoKSwgYm9yZGVyQm94LndpZHRoKCkpLAor
ICAgICAgICAgICAgICAgICAgICAgIGNhbGN1bGF0ZUZsb2F0VmFsdWUoc3R5bGUtPnBlcnNwZWN0
aXZlT3JpZ2luWSgpLCBib3JkZXJCb3guaGVpZ2h0KCkpKTsKIH0KIAogUmVuZGVyTGF5ZXIqIFJl
bmRlckxheWVyOjpzdGFja2luZ0NvbnRleHQoKSBjb25zdApJbmRleDogU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAJKHJldmlzaW9uIDExMDY2MikK
KysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMDA1LDggKzEwMDUsOCBAQCBGbG9hdFBvaW50M0QgUmVuZGVyTGF5ZXJC
YWNraW5nOjpjb21wdXRlCiAgICAgUmVuZGVyU3R5bGUqIHN0eWxlID0gcmVuZGVyZXIoKS0+c3R5
bGUoKTsKIAogICAgIEZsb2F0UG9pbnQzRCBvcmlnaW47Ci0gICAgb3JpZ2luLnNldFgoc3R5bGUt
PnRyYW5zZm9ybU9yaWdpblgoKS5jYWxjRmxvYXRWYWx1ZShib3JkZXJCb3gud2lkdGgoKSkpOwot
ICAgIG9yaWdpbi5zZXRZKHN0eWxlLT50cmFuc2Zvcm1PcmlnaW5ZKCkuY2FsY0Zsb2F0VmFsdWUo
Ym9yZGVyQm94LmhlaWdodCgpKSk7CisgICAgb3JpZ2luLnNldFgoY2FsY3VsYXRlRmxvYXRWYWx1
ZShzdHlsZS0+dHJhbnNmb3JtT3JpZ2luWCgpLCBib3JkZXJCb3gud2lkdGgoKSkpOworICAgIG9y
aWdpbi5zZXRZKGNhbGN1bGF0ZUZsb2F0VmFsdWUoc3R5bGUtPnRyYW5zZm9ybU9yaWdpblkoKSwg
Ym9yZGVyQm94LmhlaWdodCgpKSk7CiAgICAgb3JpZ2luLnNldFooc3R5bGUtPnRyYW5zZm9ybU9y
aWdpblooKSk7CiAKICAgICByZXR1cm4gb3JpZ2luOwpAQCAtMTAyMCw4ICsxMDIwLDggQEAgRmxv
YXRQb2ludCBSZW5kZXJMYXllckJhY2tpbmc6OmNvbXB1dGVQZQogICAgIGZsb2F0IGJveEhlaWdo
dCA9IGJvcmRlckJveC5oZWlnaHQoKTsKIAogICAgIEZsb2F0UG9pbnQgb3JpZ2luOwotICAgIG9y
aWdpbi5zZXRYKHN0eWxlLT5wZXJzcGVjdGl2ZU9yaWdpblgoKS5jYWxjRmxvYXRWYWx1ZShib3hX
aWR0aCkpOwotICAgIG9yaWdpbi5zZXRZKHN0eWxlLT5wZXJzcGVjdGl2ZU9yaWdpblkoKS5jYWxj
RmxvYXRWYWx1ZShib3hIZWlnaHQpKTsKKyAgICBvcmlnaW4uc2V0WChjYWxjdWxhdGVGbG9hdFZh
bHVlKHN0eWxlLT5wZXJzcGVjdGl2ZU9yaWdpblgoKSwgYm94V2lkdGgpKTsKKyAgICBvcmlnaW4u
c2V0WShjYWxjdWxhdGVGbG9hdFZhbHVlKHN0eWxlLT5wZXJzcGVjdGl2ZU9yaWdpblkoKSwgYm94
SGVpZ2h0KSk7CiAKICAgICByZXR1cm4gb3JpZ2luOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlck1hcnF1ZWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJNYXJxdWVlLmNwcAkocmV2aXNpb24gMTEwNjYyKQorKysgU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1hcnF1ZWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
ODksNyArMjg5LDcgQEAgdm9pZCBSZW5kZXJNYXJxdWVlOjp0aW1lckZpcmVkKFRpbWVyPFJlbgog
ICAgICAgICB9CiAgICAgICAgIGJvb2wgcG9zaXRpdmUgPSByYW5nZSA+IDA7CiAgICAgICAgIGlu
dCBjbGllbnRTaXplID0gKGlzSG9yaXpvbnRhbCgpID8gbV9sYXllci0+cmVuZGVyQm94KCktPmNs
aWVudFdpZHRoKCkgOiBtX2xheWVyLT5yZW5kZXJCb3goKS0+Y2xpZW50SGVpZ2h0KCkpOwotICAg
ICAgICBpbnQgaW5jcmVtZW50ID0gYWJzKG1fbGF5ZXItPnJlbmRlcmVyKCktPnN0eWxlKCktPm1h
cnF1ZWVJbmNyZW1lbnQoKS5jYWxjVmFsdWUoY2xpZW50U2l6ZSkpOworICAgICAgICBpbnQgaW5j
cmVtZW50ID0gYWJzKGNhbGN1bGF0ZVZhbHVlKG1fbGF5ZXItPnJlbmRlcmVyKCktPnN0eWxlKCkt
Pm1hcnF1ZWVJbmNyZW1lbnQoKSwgY2xpZW50U2l6ZSkpOwogICAgICAgICBpbnQgY3VycmVudFBv
cyA9IChpc0hvcml6b250YWwoKSA/IG1fbGF5ZXItPnNjcm9sbFhPZmZzZXQoKSA6IG1fbGF5ZXIt
PnNjcm9sbFlPZmZzZXQoKSk7CiAgICAgICAgIG5ld1BvcyA9ICBjdXJyZW50UG9zICsgKGFkZElu
Y3JlbWVudCA/IGluY3JlbWVudCA6IC1pbmNyZW1lbnQpOwogICAgICAgICBpZiAocG9zaXRpdmUp
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVudUxpc3QuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZW51TGlzdC5jcHAJKHJl
dmlzaW9uIDExMDY2MikKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZW51TGlz
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2MSw3ICsxNjEsNyBAQCB2b2lkIFJlbmRlck1lbnVM
aXN0Ojp1cGRhdGVPcHRpb25zV2lkdGgoCiAgICAgICAgICAgICAvLyBBZGQgaW4gdGhlIG9wdGlv
bidzIHRleHQgaW5kZW50LiAgV2UgY2FuJ3QgY2FsY3VsYXRlIHBlcmNlbnRhZ2UgdmFsdWVzIGZv
ciBub3cuCiAgICAgICAgICAgICBmbG9hdCBvcHRpb25XaWR0aCA9IDA7CiAgICAgICAgICAgICBp
ZiAoUmVuZGVyU3R5bGUqIG9wdGlvblN0eWxlID0gZWxlbWVudC0+cmVuZGVyU3R5bGUoKSkKLSAg
ICAgICAgICAgICAgICBvcHRpb25XaWR0aCArPSBvcHRpb25TdHlsZS0+dGV4dEluZGVudCgpLmNh
bGNNaW5WYWx1ZSgwKTsKKyAgICAgICAgICAgICAgICBvcHRpb25XaWR0aCArPSBjYWxjdWxhdGVN
aW5WYWx1ZShvcHRpb25TdHlsZS0+dGV4dEluZGVudCgpLCAwKTsKICAgICAgICAgICAgIGlmICgh
dGV4dC5pc0VtcHR5KCkpCiAgICAgICAgICAgICAgICAgb3B0aW9uV2lkdGggKz0gc3R5bGUoKS0+
Zm9udCgpLndpZHRoKHRleHQpOwogICAgICAgICAgICAgbWF4T3B0aW9uV2lkdGggPSBtYXgobWF4
T3B0aW9uV2lkdGgsIG9wdGlvbldpZHRoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJPYmplY3QuY3BwCShyZXZpc2lvbiAxMTA2NjIpCisrKyBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQzNyw3ICsxNDM3
LDcgQEAgYm9vbCBSZW5kZXJPYmplY3Q6OnJlcGFpbnRBZnRlckxheW91dElmTgogCiAgICAgICAg
IExheW91dFVuaXQgYm9yZGVyUmlnaHQgPSBpc0JveCgpID8gdG9SZW5kZXJCb3godGhpcyktPmJv
cmRlclJpZ2h0KCkgOiB6ZXJvTGF5b3V0VW5pdDsKICAgICAgICAgTGF5b3V0VW5pdCBib3hXaWR0
aCA9IGlzQm94KCkgPyB0b1JlbmRlckJveCh0aGlzKS0+d2lkdGgoKSA6IHplcm9MYXlvdXRVbml0
OwotICAgICAgICBMYXlvdXRVbml0IGJvcmRlcldpZHRoID0gbWF4PExheW91dFVuaXQ+KC1vdXRs
aW5lU3R5bGUtPm91dGxpbmVPZmZzZXQoKSwgbWF4KGJvcmRlclJpZ2h0LCBtYXg8TGF5b3V0VW5p
dD4oc3R5bGUoKS0+Ym9yZGVyVG9wUmlnaHRSYWRpdXMoKS53aWR0aCgpLmNhbGNWYWx1ZShib3hX
aWR0aCksIHN0eWxlKCktPmJvcmRlckJvdHRvbVJpZ2h0UmFkaXVzKCkud2lkdGgoKS5jYWxjVmFs
dWUoYm94V2lkdGgpKSkpICsgbWF4KG93LCBzaGFkb3dSaWdodCk7CisgICAgICAgIExheW91dFVu
aXQgYm9yZGVyV2lkdGggPSBtYXg8TGF5b3V0VW5pdD4oLW91dGxpbmVTdHlsZS0+b3V0bGluZU9m
ZnNldCgpLCBtYXgoYm9yZGVyUmlnaHQsIG1heDxMYXlvdXRVbml0PihjYWxjdWxhdGVWYWx1ZShz
dHlsZSgpLT5ib3JkZXJUb3BSaWdodFJhZGl1cygpLndpZHRoKCksIGJveFdpZHRoKSwgY2FsY3Vs
YXRlVmFsdWUoc3R5bGUoKS0+Ym9yZGVyQm90dG9tUmlnaHRSYWRpdXMoKS53aWR0aCgpLCBib3hX
aWR0aCkpKSkgKyBtYXgob3csIHNoYWRvd1JpZ2h0KTsKICAgICAgICAgTGF5b3V0UmVjdCByaWdo
dFJlY3QobmV3T3V0bGluZUJveC54KCkgKyBtaW4obmV3T3V0bGluZUJveC53aWR0aCgpLCBvbGRP
dXRsaW5lQm94LndpZHRoKCkpIC0gYm9yZGVyV2lkdGgsCiAgICAgICAgICAgICBuZXdPdXRsaW5l
Qm94LnkoKSwKICAgICAgICAgICAgIHdpZHRoICsgYm9yZGVyV2lkdGgsCkBAIC0xNDU2LDcgKzE0
NTYsNyBAQCBib29sIFJlbmRlck9iamVjdDo6cmVwYWludEFmdGVyTGF5b3V0SWZOCiAKICAgICAg
ICAgTGF5b3V0VW5pdCBib3JkZXJCb3R0b20gPSBpc0JveCgpID8gdG9SZW5kZXJCb3godGhpcykt
PmJvcmRlckJvdHRvbSgpIDogemVyb0xheW91dFVuaXQ7CiAgICAgICAgIExheW91dFVuaXQgYm94
SGVpZ2h0ID0gaXNCb3goKSA/IHRvUmVuZGVyQm94KHRoaXMpLT5oZWlnaHQoKSA6IHplcm9MYXlv
dXRVbml0OwotICAgICAgICBMYXlvdXRVbml0IGJvcmRlckhlaWdodCA9IG1heDxMYXlvdXRVbml0
Pigtb3V0bGluZVN0eWxlLT5vdXRsaW5lT2Zmc2V0KCksIG1heChib3JkZXJCb3R0b20sIG1heDxM
YXlvdXRVbml0PihzdHlsZSgpLT5ib3JkZXJCb3R0b21MZWZ0UmFkaXVzKCkuaGVpZ2h0KCkuY2Fs
Y1ZhbHVlKGJveEhlaWdodCksIHN0eWxlKCktPmJvcmRlckJvdHRvbVJpZ2h0UmFkaXVzKCkuaGVp
Z2h0KCkuY2FsY1ZhbHVlKGJveEhlaWdodCkpKSkgKyBtYXgob3csIHNoYWRvd0JvdHRvbSk7Cisg
ICAgICAgIExheW91dFVuaXQgYm9yZGVySGVpZ2h0ID0gbWF4PExheW91dFVuaXQ+KC1vdXRsaW5l
U3R5bGUtPm91dGxpbmVPZmZzZXQoKSwgbWF4KGJvcmRlckJvdHRvbSwgbWF4PExheW91dFVuaXQ+
KGNhbGN1bGF0ZVZhbHVlKHN0eWxlKCktPmJvcmRlckJvdHRvbUxlZnRSYWRpdXMoKS5oZWlnaHQo
KSwgYm94SGVpZ2h0KSwgY2FsY3VsYXRlVmFsdWUoc3R5bGUoKS0+Ym9yZGVyQm90dG9tUmlnaHRS
YWRpdXMoKS5oZWlnaHQoKSwgYm94SGVpZ2h0KSkpKSArIG1heChvdywgc2hhZG93Qm90dG9tKTsK
ICAgICAgICAgTGF5b3V0UmVjdCBib3R0b21SZWN0KG5ld091dGxpbmVCb3gueCgpLAogICAgICAg
ICAgICAgbWluKG5ld091dGxpbmVCb3gubWF4WSgpLCBvbGRPdXRsaW5lQm94Lm1heFkoKSkgLSBi
b3JkZXJIZWlnaHQsCiAgICAgICAgICAgICBtYXgobmV3T3V0bGluZUJveC53aWR0aCgpLCBvbGRP
dXRsaW5lQm94LndpZHRoKCkpLApJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clJlcGxhY2VkLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyUmVwbGFjZWQuY3BwCShyZXZpc2lvbiAxMTA2NjIpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyUmVwbGFjZWQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMzUsOCArMzM1LDgg
QEAgTGF5b3V0VW5pdCBSZW5kZXJSZXBsYWNlZDo6Y29tcHV0ZVJlcGxhYwogICAgICAgICAgICAg
ICAgICAgICBsb2dpY2FsV2lkdGggPSBjb250YWluaW5nQmxvY2soKS0+YXZhaWxhYmxlTG9naWNh
bFdpZHRoKCk7CiAKICAgICAgICAgICAgICAgICAvLyBUaGlzIHNvbHZlcyBhYm92ZSBlcXVhdGlv
biBmb3IgJ3dpZHRoJyAoPT0gbG9naWNhbFdpZHRoKS4KLSAgICAgICAgICAgICAgICBMYXlvdXRV
bml0IG1hcmdpblN0YXJ0ID0gc3R5bGUoKS0+bWFyZ2luU3RhcnQoKS5jYWxjTWluVmFsdWUobG9n
aWNhbFdpZHRoKTsKLSAgICAgICAgICAgICAgICBMYXlvdXRVbml0IG1hcmdpbkVuZCA9IHN0eWxl
KCktPm1hcmdpbkVuZCgpLmNhbGNNaW5WYWx1ZShsb2dpY2FsV2lkdGgpOworICAgICAgICAgICAg
ICAgIExheW91dFVuaXQgbWFyZ2luU3RhcnQgPSBjYWxjdWxhdGVNaW5WYWx1ZShzdHlsZSgpLT5t
YXJnaW5TdGFydCgpLCBsb2dpY2FsV2lkdGgpOworICAgICAgICAgICAgICAgIExheW91dFVuaXQg
bWFyZ2luRW5kID0gY2FsY3VsYXRlTWluVmFsdWUoc3R5bGUoKS0+bWFyZ2luRW5kKCksIGxvZ2lj
YWxXaWR0aCk7CiAgICAgICAgICAgICAgICAgbG9naWNhbFdpZHRoID0gbWF4KDAsIGxvZ2ljYWxX
aWR0aCAtIChtYXJnaW5TdGFydCArIG1hcmdpbkVuZCArICh3aWR0aCgpIC0gY2xpZW50V2lkdGgo
KSkpKTsKICAgICAgICAgICAgICAgICBpZiAoaXNQZXJjZW50YWdlSW50cmluc2ljU2l6ZSkKICAg
ICAgICAgICAgICAgICAgICAgLy8gRklYTUU6IFJlbW92ZSB1bm5lY2Vzc2FyeSByb3VuZGluZyB3
aGVuIGxheW91dCBpcyBvZmYgaW50czogd2Via2l0Lm9yZy9iLzYzNjU2CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyUGFydC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhclBhcnQuY3BwCShyZXZpc2lv
biAxMTA2NjIpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyUGFy
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgzLDcgKzgzLDcgQEAgc3RhdGljIGludCBjYWxjU2Ny
b2xsYmFyVGhpY2tuZXNzVXNpbmcoYwogewogICAgIGlmIChsLmlzSW50cmluc2ljT3JBdXRvKCkp
CiAgICAgICAgIHJldHVybiBTY3JvbGxiYXJUaGVtZTo6dGhlbWUoKS0+c2Nyb2xsYmFyVGhpY2tu
ZXNzKCk7Ci0gICAgcmV0dXJuIGwuY2FsY01pblZhbHVlKGNvbnRhaW5pbmdMZW5ndGgpOworICAg
IHJldHVybiBjYWxjdWxhdGVNaW5WYWx1ZShsLCBjb250YWluaW5nTGVuZ3RoKTsKIH0KIAogdm9p
ZCBSZW5kZXJTY3JvbGxiYXJQYXJ0Ojpjb21wdXRlU2Nyb2xsYmFyV2lkdGgoKQpAQCAtOTcsOCAr
OTcsOCBAQCB2b2lkIFJlbmRlclNjcm9sbGJhclBhcnQ6OmNvbXB1dGVTY3JvbGxiCiAgICAgc2V0
V2lkdGgobWF4KG1pbldpZHRoLCBtaW4obWF4V2lkdGgsIHcpKSk7CiAgICAgCiAgICAgLy8gQnV0
dG9ucyBhbmQgdHJhY2sgcGllY2VzIGNhbiBhbGwgaGF2ZSBtYXJnaW5zIGFsb25nIHRoZSBheGlz
IG9mIHRoZSBzY3JvbGxiYXIuIAotICAgIG1fbWFyZ2luTGVmdCA9IHN0eWxlKCktPm1hcmdpbkxl
ZnQoKS5jYWxjTWluVmFsdWUodmlzaWJsZVNpemUpOwotICAgIG1fbWFyZ2luUmlnaHQgPSBzdHls
ZSgpLT5tYXJnaW5SaWdodCgpLmNhbGNNaW5WYWx1ZSh2aXNpYmxlU2l6ZSk7CisgICAgbV9tYXJn
aW5MZWZ0ID0gY2FsY3VsYXRlTWluVmFsdWUoc3R5bGUoKS0+bWFyZ2luTGVmdCgpLCB2aXNpYmxl
U2l6ZSk7CisgICAgbV9tYXJnaW5SaWdodCA9IGNhbGN1bGF0ZU1pblZhbHVlKHN0eWxlKCktPm1h
cmdpblJpZ2h0KCksIHZpc2libGVTaXplKTsKIH0KIAogdm9pZCBSZW5kZXJTY3JvbGxiYXJQYXJ0
Ojpjb21wdXRlU2Nyb2xsYmFySGVpZ2h0KCkKQEAgLTExMiw4ICsxMTIsOCBAQCB2b2lkIFJlbmRl
clNjcm9sbGJhclBhcnQ6OmNvbXB1dGVTY3JvbGxiCiAgICAgc2V0SGVpZ2h0KG1heChtaW5IZWln
aHQsIG1pbihtYXhIZWlnaHQsIGgpKSk7CiAKICAgICAvLyBCdXR0b25zIGFuZCB0cmFjayBwaWVj
ZXMgY2FuIGFsbCBoYXZlIG1hcmdpbnMgYWxvbmcgdGhlIGF4aXMgb2YgdGhlIHNjcm9sbGJhci4g
Ci0gICAgbV9tYXJnaW5Ub3AgPSBzdHlsZSgpLT5tYXJnaW5Ub3AoKS5jYWxjTWluVmFsdWUodmlz
aWJsZVNpemUpOwotICAgIG1fbWFyZ2luQm90dG9tID0gc3R5bGUoKS0+bWFyZ2luQm90dG9tKCku
Y2FsY01pblZhbHVlKHZpc2libGVTaXplKTsKKyAgICBtX21hcmdpblRvcCA9IGNhbGN1bGF0ZU1p
blZhbHVlKHN0eWxlKCktPm1hcmdpblRvcCgpLCB2aXNpYmxlU2l6ZSk7CisgICAgbV9tYXJnaW5C
b3R0b20gPSBjYWxjdWxhdGVNaW5WYWx1ZShzdHlsZSgpLT5tYXJnaW5Cb3R0b20oKSwgdmlzaWJs
ZVNpemUpOwogfQogCiB2b2lkIFJlbmRlclNjcm9sbGJhclBhcnQ6OmNvbXB1dGVQcmVmZXJyZWRM
b2dpY2FsV2lkdGhzKCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJs
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxl
LmNwcAkocmV2aXNpb24gMTEwNjYyKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRhYmxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjMyLDggKzIzMiw4IEBAIHZvaWQgUmVuZGVy
VGFibGU6OmNvbXB1dGVMb2dpY2FsV2lkdGgoKQogICAgICAgICBzZXRMb2dpY2FsV2lkdGgoY29u
dmVydFN0eWxlTG9naWNhbFdpZHRoVG9Db21wdXRlZFdpZHRoKHN0eWxlTG9naWNhbFdpZHRoLCBj
b250YWluZXJXaWR0aEluSW5saW5lRGlyZWN0aW9uKSk7CiAgICAgZWxzZSB7CiAgICAgICAgIC8v
IFN1YnRyYWN0IG91dCBhbnkgZml4ZWQgbWFyZ2lucyBmcm9tIG91ciBhdmFpbGFibGUgd2lkdGgg
Zm9yIGF1dG8gd2lkdGggdGFibGVzLgotICAgICAgICBMYXlvdXRVbml0IG1hcmdpblN0YXJ0ID0g
c3R5bGUoKS0+bWFyZ2luU3RhcnQoKS5jYWxjTWluVmFsdWUoYXZhaWxhYmxlTG9naWNhbFdpZHRo
KTsKLSAgICAgICAgTGF5b3V0VW5pdCBtYXJnaW5FbmQgPSBzdHlsZSgpLT5tYXJnaW5FbmQoKS5j
YWxjTWluVmFsdWUoYXZhaWxhYmxlTG9naWNhbFdpZHRoKTsKKyAgICAgICAgTGF5b3V0VW5pdCBt
YXJnaW5TdGFydCA9IGNhbGN1bGF0ZU1pblZhbHVlKHN0eWxlKCktPm1hcmdpblN0YXJ0KCksIGF2
YWlsYWJsZUxvZ2ljYWxXaWR0aCk7CisgICAgICAgIExheW91dFVuaXQgbWFyZ2luRW5kID0gY2Fs
Y3VsYXRlTWluVmFsdWUoc3R5bGUoKS0+bWFyZ2luRW5kKCksIGF2YWlsYWJsZUxvZ2ljYWxXaWR0
aCk7CiAgICAgICAgIExheW91dFVuaXQgbWFyZ2luVG90YWwgPSBtYXJnaW5TdGFydCArIG1hcmdp
bkVuZDsKICAgICAgICAgCiAgICAgICAgIC8vIFN1YnRyYWN0IG91dCBvdXIgbWFyZ2lucyB0byBn
ZXQgdGhlIGF2YWlsYWJsZSBjb250ZW50IHdpZHRoLgpAQCAtMjYxLDggKzI2MSw4IEBAIHZvaWQg
UmVuZGVyVGFibGU6OmNvbXB1dGVMb2dpY2FsV2lkdGgoKQogICAgIGlmICghaGFzUGVycGVuZGlj
dWxhckNvbnRhaW5pbmdCbG9jaykKICAgICAgICAgY29tcHV0ZUlubGluZURpcmVjdGlvbk1hcmdp
bnMoY2IsIGF2YWlsYWJsZUxvZ2ljYWxXaWR0aCwgbG9naWNhbFdpZHRoKCkpOwogICAgIGVsc2Ug
ewotICAgICAgICBzZXRNYXJnaW5TdGFydChzdHlsZSgpLT5tYXJnaW5TdGFydCgpLmNhbGNNaW5W
YWx1ZShhdmFpbGFibGVMb2dpY2FsV2lkdGgpKTsKLSAgICAgICAgc2V0TWFyZ2luRW5kKHN0eWxl
KCktPm1hcmdpbkVuZCgpLmNhbGNNaW5WYWx1ZShhdmFpbGFibGVMb2dpY2FsV2lkdGgpKTsKKyAg
ICAgICAgc2V0TWFyZ2luU3RhcnQoY2FsY3VsYXRlTWluVmFsdWUoc3R5bGUoKS0+bWFyZ2luU3Rh
cnQoKSwgYXZhaWxhYmxlTG9naWNhbFdpZHRoKSk7CisgICAgICAgIHNldE1hcmdpbkVuZChjYWxj
dWxhdGVNaW5WYWx1ZShzdHlsZSgpLT5tYXJnaW5FbmQoKSwgYXZhaWxhYmxlTG9naWNhbFdpZHRo
KSk7CiAgICAgfQogfQogCkBAIC0yNzYsNyArMjc2LDcgQEAgTGF5b3V0VW5pdCBSZW5kZXJUYWJs
ZTo6Y29udmVydFN0eWxlTG9naQogICAgICAgICByZWNhbGNCb3JkZXJzSW5Sb3dEaXJlY3Rpb24o
KTsKICAgICAgICAgYm9yZGVycyA9IGJvcmRlclN0YXJ0KCkgKyBib3JkZXJFbmQoKSArIChjb2xs
YXBzZUJvcmRlcnMoKSA/IDAgOiBwYWRkaW5nU3RhcnQoKSArIHBhZGRpbmdFbmQoKSk7CiAgICAg
fQotICAgIHJldHVybiBzdHlsZUxvZ2ljYWxXaWR0aC5jYWxjTWluVmFsdWUoYXZhaWxhYmxlV2lk
dGgpICsgYm9yZGVyczsKKyAgICByZXR1cm4gY2FsY3VsYXRlTWluVmFsdWUoc3R5bGVMb2dpY2Fs
V2lkdGgsIGF2YWlsYWJsZVdpZHRoKSArIGJvcmRlcnM7CiB9CiAKIHZvaWQgUmVuZGVyVGFibGU6
OmxheW91dENhcHRpb24oUmVuZGVyVGFibGVDYXB0aW9uKiBjYXB0aW9uKQpJbmRleDogU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5jcHAJKHJldmlzaW9uIDExMDY2
MikKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC05NSw3ICs5NSw3IEBAIExheW91dFVuaXQgUmVuZGVyVGFibGVDZWxsOjps
b2dpY2FsSGVpZ2gKIHsKICAgICBMYXlvdXRVbml0IGFkanVzdGVkTG9naWNhbEhlaWdodCA9IGxv
Z2ljYWxIZWlnaHQoKSAtIChpbnRyaW5zaWNQYWRkaW5nQmVmb3JlKCkgKyBpbnRyaW5zaWNQYWRk
aW5nQWZ0ZXIoKSk7CiAKLSAgICBMYXlvdXRVbml0IHN0eWxlTG9naWNhbEhlaWdodCA9IHN0eWxl
KCktPmxvZ2ljYWxIZWlnaHQoKS5jYWxjVmFsdWUoMCk7CisgICAgTGF5b3V0VW5pdCBzdHlsZUxv
Z2ljYWxIZWlnaHQgPSBjYWxjdWxhdGVWYWx1ZShzdHlsZSgpLT5sb2dpY2FsSGVpZ2h0KCksIDAp
OwogICAgIGlmIChkb2N1bWVudCgpLT5pblF1aXJrc01vZGUoKSB8fCBzdHlsZSgpLT5ib3hTaXpp
bmcoKSA9PSBCT1JERVJfQk9YKSB7CiAgICAgICAgIC8vIEV4cGxpY2l0IGhlaWdodHMgdXNlIHRo
ZSBib3JkZXIgYm94IGluIHF1aXJrcyBtb2RlLgogICAgICAgICAvLyBEb24ndCBhZGp1c3QgaGVp
Z2h0LgpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlU2VjdGlvbi5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlU2Vj
dGlvbi5jcHAJKHJldmlzaW9uIDExMDY2MikKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUYWJsZVNlY3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMzgsNyArMzM4LDcgQEAg
aW50IFJlbmRlclRhYmxlU2VjdGlvbjo6Y2FsY1Jvd0xvZ2ljYWxIZQogICAgICAgICBMYXlvdXRV
bml0IGJhc2VsaW5lRGVzY2VudCA9IDA7CiAKICAgICAgICAgLy8gT3VyIGJhc2Ugc2l6ZSBpcyB0
aGUgYmlnZ2VzdCBsb2dpY2FsIGhlaWdodCBmcm9tIG91ciBjZWxscycgc3R5bGVzIChleGNsdWRp
bmcgcm93IHNwYW5uaW5nIGNlbGxzKS4KLSAgICAgICAgbV9yb3dQb3NbciArIDFdID0gbWF4KG1f
cm93UG9zW3JdICsgbV9ncmlkW3JdLmxvZ2ljYWxIZWlnaHQuY2FsY01pblZhbHVlKDApLCAwKTsK
KyAgICAgICAgbV9yb3dQb3NbciArIDFdID0gbWF4KG1fcm93UG9zW3JdICsgY2FsY3VsYXRlTWlu
VmFsdWUobV9ncmlkW3JdLmxvZ2ljYWxIZWlnaHQsIDApLCAwKTsKIAogICAgICAgICBSb3cmIHJv
dyA9IG1fZ3JpZFtyXS5yb3c7CiAgICAgICAgIHVuc2lnbmVkIHRvdGFsQ29scyA9IHJvdy5zaXpl
KCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmgJKHJldmlzaW9uIDEx
MDY2MikKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTk3LDggKzk3LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBz
ZWxlY3Rpb25SZWN0Rm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRh
aW5lciwgYm9vbCBjbGlwVG9WaXNpYmxlQ29udGVudCA9IHRydWUpOwogICAgIHZpcnR1YWwgTGF5
b3V0UmVjdCBsb2NhbENhcmV0UmVjdChJbmxpbmVCb3gqLCBpbnQgY2FyZXRPZmZzZXQsIExheW91
dFVuaXQqIGV4dHJhV2lkdGhUb0VuZE9mTGluZSA9IDApOwogCi0gICAgdmlydHVhbCBMYXlvdXRV
bml0IG1hcmdpbkxlZnQoKSBjb25zdCB7IHJldHVybiBzdHlsZSgpLT5tYXJnaW5MZWZ0KCkuY2Fs
Y01pblZhbHVlKDApOyB9Ci0gICAgdmlydHVhbCBMYXlvdXRVbml0IG1hcmdpblJpZ2h0KCkgY29u
c3QgeyByZXR1cm4gc3R5bGUoKS0+bWFyZ2luUmlnaHQoKS5jYWxjTWluVmFsdWUoMCk7IH0KKyAg
ICB2aXJ0dWFsIExheW91dFVuaXQgbWFyZ2luTGVmdCgpIGNvbnN0IHsgcmV0dXJuIGNhbGN1bGF0
ZU1pblZhbHVlKHN0eWxlKCktPm1hcmdpbkxlZnQoKSwgMCk7IH0KKyAgICB2aXJ0dWFsIExheW91
dFVuaXQgbWFyZ2luUmlnaHQoKSBjb25zdCB7IHJldHVybiBjYWxjdWxhdGVNaW5WYWx1ZShzdHls
ZSgpLT5tYXJnaW5SaWdodCgpLCAwKTsgfQogCiAgICAgdmlydHVhbCBMYXlvdXRSZWN0IGNsaXBw
ZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29u
dGFpbmVyKSBjb25zdDsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jvb3RJbmxp
bmVCb3guY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Sb290SW5s
aW5lQm94LmNwcAkocmV2aXNpb24gMTEwNjYyKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1Jvb3RJbmxpbmVCb3guY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NDQsNyArODQ0LDcgQEAgTGF5
b3V0VW5pdCBSb290SW5saW5lQm94Ojp2ZXJ0aWNhbFBvc2l0aQogICAgICAgICB9IGVsc2UgaWYg
KHZlcnRpY2FsQWxpZ24gPT0gQkFTRUxJTkVfTUlERExFKQogICAgICAgICAgICAgdmVydGljYWxQ
b3NpdGlvbiArPSAtcmVuZGVyZXItPmxpbmVIZWlnaHQoZmlyc3RMaW5lLCBsaW5lRGlyZWN0aW9u
KSAvIDIgKyByZW5kZXJlci0+YmFzZWxpbmVQb3NpdGlvbihiYXNlbGluZVR5cGUoKSwgZmlyc3RM
aW5lLCBsaW5lRGlyZWN0aW9uKTsKICAgICAgICAgZWxzZSBpZiAodmVydGljYWxBbGlnbiA9PSBM
RU5HVEgpCi0gICAgICAgICAgICB2ZXJ0aWNhbFBvc2l0aW9uIC09IHJlbmRlcmVyLT5zdHlsZSgp
LT52ZXJ0aWNhbEFsaWduTGVuZ3RoKCkuY2FsY1ZhbHVlKHJlbmRlcmVyLT5saW5lSGVpZ2h0KGZp
cnN0TGluZSwgbGluZURpcmVjdGlvbikpOworICAgICAgICAgICAgdmVydGljYWxQb3NpdGlvbiAt
PSBjYWxjdWxhdGVWYWx1ZShyZW5kZXJlci0+c3R5bGUoKS0+dmVydGljYWxBbGlnbkxlbmd0aCgp
LCByZW5kZXJlci0+bGluZUhlaWdodChmaXJzdExpbmUsIGxpbmVEaXJlY3Rpb24pKTsKICAgICB9
CiAKICAgICAvLyBTdG9yZSB0aGUgY2FjaGVkIHZhbHVlLgpJbmRleDogU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwCShyZXZpc2lvbiAxMTA2NjIpCisr
KyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC04MDIsMTQgKzgwMiwxNCBAQCB2b2lkIFJlbmRlclN0eWxlOjphcHBseVRyYW5z
Zm9ybShUcmFuc2ZvCiAgICAgYm9vbCBhcHBseVRyYW5zZm9ybU9yaWdpbiA9IHJlcXVpcmVUcmFu
c2Zvcm1PcmlnaW4odHJhbnNmb3JtT3BlcmF0aW9ucywgYXBwbHlPcmlnaW4pOwogCiAgICAgaWYg
KGFwcGx5VHJhbnNmb3JtT3JpZ2luKQotICAgICAgICB0cmFuc2Zvcm0udHJhbnNsYXRlM2QodHJh
bnNmb3JtT3JpZ2luWCgpLmNhbGNGbG9hdFZhbHVlKGJvcmRlckJveFNpemUud2lkdGgoKSksIHRy
YW5zZm9ybU9yaWdpblkoKS5jYWxjRmxvYXRWYWx1ZShib3JkZXJCb3hTaXplLmhlaWdodCgpKSwg
dHJhbnNmb3JtT3JpZ2luWigpKTsKKyAgICAgICAgdHJhbnNmb3JtLnRyYW5zbGF0ZTNkKGNhbGN1
bGF0ZUZsb2F0VmFsdWUodHJhbnNmb3JtT3JpZ2luWCgpLCBib3JkZXJCb3hTaXplLndpZHRoKCkp
LCBjYWxjdWxhdGVGbG9hdFZhbHVlKHRyYW5zZm9ybU9yaWdpblkoKSwgYm9yZGVyQm94U2l6ZS5o
ZWlnaHQoKSksIHRyYW5zZm9ybU9yaWdpblooKSk7CiAKICAgICB1bnNpZ25lZCBzaXplID0gdHJh
bnNmb3JtT3BlcmF0aW9ucy5zaXplKCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNp
emU7ICsraSkKICAgICAgICAgdHJhbnNmb3JtT3BlcmF0aW9uc1tpXS0+YXBwbHkodHJhbnNmb3Jt
LCBib3JkZXJCb3hTaXplKTsKIAogICAgIGlmIChhcHBseVRyYW5zZm9ybU9yaWdpbikKLSAgICAg
ICAgdHJhbnNmb3JtLnRyYW5zbGF0ZTNkKC10cmFuc2Zvcm1PcmlnaW5YKCkuY2FsY0Zsb2F0VmFs
dWUoYm9yZGVyQm94U2l6ZS53aWR0aCgpKSwgLXRyYW5zZm9ybU9yaWdpblkoKS5jYWxjRmxvYXRW
YWx1ZShib3JkZXJCb3hTaXplLmhlaWdodCgpKSwgLXRyYW5zZm9ybU9yaWdpblooKSk7IAorICAg
ICAgICB0cmFuc2Zvcm0udHJhbnNsYXRlM2QoLWNhbGN1bGF0ZUZsb2F0VmFsdWUodHJhbnNmb3Jt
T3JpZ2luWCgpLCBib3JkZXJCb3hTaXplLndpZHRoKCkpLCAtY2FsY3VsYXRlRmxvYXRWYWx1ZSh0
cmFuc2Zvcm1PcmlnaW5ZKCksIGJvcmRlckJveFNpemUuaGVpZ2h0KCkpLCAtdHJhbnNmb3JtT3Jp
Z2luWigpKTsgCiB9CiAKIHZvaWQgUmVuZGVyU3R5bGU6OmFwcGx5VHJhbnNmb3JtKFRyYW5zZm9y
bWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0sIGNvbnN0IEZsb2F0UmVjdCYgYm91bmRpbmdCb3gsIEFw
cGx5VHJhbnNmb3JtT3JpZ2luIGFwcGx5T3JpZ2luKSBjb25zdApAQCAtODIxLDggKzgyMSw4IEBA
IHZvaWQgUmVuZGVyU3R5bGU6OmFwcGx5VHJhbnNmb3JtKFRyYW5zZm8KICAgICBmbG9hdCBvZmZz
ZXRZID0gdHJhbnNmb3JtT3JpZ2luWSgpLnR5cGUoKSA9PSBQZXJjZW50ID8gYm91bmRpbmdCb3gu
eSgpIDogMDsKICAgICAKICAgICBpZiAoYXBwbHlUcmFuc2Zvcm1PcmlnaW4pIHsKLSAgICAgICAg
dHJhbnNmb3JtLnRyYW5zbGF0ZTNkKHRyYW5zZm9ybU9yaWdpblgoKS5jYWxjRmxvYXRWYWx1ZShi
b3VuZGluZ0JveC53aWR0aCgpKSArIG9mZnNldFgsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB0cmFuc2Zvcm1PcmlnaW5ZKCkuY2FsY0Zsb2F0VmFsdWUoYm91bmRpbmdCb3guaGVpZ2h0
KCkpICsgb2Zmc2V0WSwKKyAgICAgICAgdHJhbnNmb3JtLnRyYW5zbGF0ZTNkKGNhbGN1bGF0ZUZs
b2F0VmFsdWUodHJhbnNmb3JtT3JpZ2luWCgpLCBib3VuZGluZ0JveC53aWR0aCgpKSArIG9mZnNl
dFgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxjdWxhdGVGbG9hdFZhbHVlKHRy
YW5zZm9ybU9yaWdpblkoKSwgYm91bmRpbmdCb3guaGVpZ2h0KCkpICsgb2Zmc2V0WSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybU9yaWdpblooKSk7CiAgICAgfQogICAg
IApAQCAtODMxLDggKzgzMSw4IEBAIHZvaWQgUmVuZGVyU3R5bGU6OmFwcGx5VHJhbnNmb3JtKFRy
YW5zZm8KICAgICAgICAgdHJhbnNmb3JtT3BlcmF0aW9uc1tpXS0+YXBwbHkodHJhbnNmb3JtLCBi
b3VuZGluZ0JveC5zaXplKCkpOwogICAgIAogICAgIGlmIChhcHBseVRyYW5zZm9ybU9yaWdpbikg
ewotICAgICAgICB0cmFuc2Zvcm0udHJhbnNsYXRlM2QoLXRyYW5zZm9ybU9yaWdpblgoKS5jYWxj
RmxvYXRWYWx1ZShib3VuZGluZ0JveC53aWR0aCgpKSAtIG9mZnNldFgsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAtdHJhbnNmb3JtT3JpZ2luWSgpLmNhbGNGbG9hdFZhbHVlKGJvdW5k
aW5nQm94LmhlaWdodCgpKSAtIG9mZnNldFksCisgICAgICAgIHRyYW5zZm9ybS50cmFuc2xhdGUz
ZCgtY2FsY3VsYXRlRmxvYXRWYWx1ZSh0cmFuc2Zvcm1PcmlnaW5YKCksIGJvdW5kaW5nQm94Lndp
ZHRoKCkpIC0gb2Zmc2V0WCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC1jYWxjdWxh
dGVGbG9hdFZhbHVlKHRyYW5zZm9ybU9yaWdpblkoKSwgYm91bmRpbmdCb3guaGVpZ2h0KCkpIC0g
b2Zmc2V0WSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC10cmFuc2Zvcm1PcmlnaW5a
KCkpOwogICAgIH0KIH0KQEAgLTg3NywxNCArODc3LDE0IEBAIHZvaWQgUmVuZGVyU3R5bGU6OnNl
dEJveFNoYWRvdyhQYXNzT3duUHQKIHN0YXRpYyBSb3VuZGVkUmVjdDo6UmFkaWkgY2FsY1JhZGlp
Rm9yKGNvbnN0IEJvcmRlckRhdGEmIGJvcmRlciwgTGF5b3V0U2l6ZSBzaXplKQogewogICAgIHJl
dHVybiBSb3VuZGVkUmVjdDo6UmFkaWkoCi0gICAgICAgIEludFNpemUoYm9yZGVyLnRvcExlZnQo
KS53aWR0aCgpLmNhbGNWYWx1ZShzaXplLndpZHRoKCkpLCAKLSAgICAgICAgICAgICAgICBib3Jk
ZXIudG9wTGVmdCgpLmhlaWdodCgpLmNhbGNWYWx1ZShzaXplLmhlaWdodCgpKSksCi0gICAgICAg
IEludFNpemUoYm9yZGVyLnRvcFJpZ2h0KCkud2lkdGgoKS5jYWxjVmFsdWUoc2l6ZS53aWR0aCgp
KSwKLSAgICAgICAgICAgICAgICBib3JkZXIudG9wUmlnaHQoKS5oZWlnaHQoKS5jYWxjVmFsdWUo
c2l6ZS5oZWlnaHQoKSkpLAotICAgICAgICBJbnRTaXplKGJvcmRlci5ib3R0b21MZWZ0KCkud2lk
dGgoKS5jYWxjVmFsdWUoc2l6ZS53aWR0aCgpKSwgCi0gICAgICAgICAgICAgICAgYm9yZGVyLmJv
dHRvbUxlZnQoKS5oZWlnaHQoKS5jYWxjVmFsdWUoc2l6ZS5oZWlnaHQoKSkpLAotICAgICAgICBJ
bnRTaXplKGJvcmRlci5ib3R0b21SaWdodCgpLndpZHRoKCkuY2FsY1ZhbHVlKHNpemUud2lkdGgo
KSksIAotICAgICAgICAgICAgICAgIGJvcmRlci5ib3R0b21SaWdodCgpLmhlaWdodCgpLmNhbGNW
YWx1ZShzaXplLmhlaWdodCgpKSkpOworICAgICAgICBJbnRTaXplKGNhbGN1bGF0ZVZhbHVlKGJv
cmRlci50b3BMZWZ0KCkud2lkdGgoKSwgc2l6ZS53aWR0aCgpKSwgCisgICAgICAgICAgICAgICAg
Y2FsY3VsYXRlVmFsdWUoYm9yZGVyLnRvcExlZnQoKS5oZWlnaHQoKSwgc2l6ZS5oZWlnaHQoKSkp
LAorICAgICAgICBJbnRTaXplKGNhbGN1bGF0ZVZhbHVlKGJvcmRlci50b3BSaWdodCgpLndpZHRo
KCksIHNpemUud2lkdGgoKSksCisgICAgICAgICAgICAgICAgY2FsY3VsYXRlVmFsdWUoYm9yZGVy
LnRvcFJpZ2h0KCkuaGVpZ2h0KCksIHNpemUuaGVpZ2h0KCkpKSwKKyAgICAgICAgSW50U2l6ZShj
YWxjdWxhdGVWYWx1ZShib3JkZXIuYm90dG9tTGVmdCgpLndpZHRoKCksIHNpemUud2lkdGgoKSks
IAorICAgICAgICAgICAgICAgIGNhbGN1bGF0ZVZhbHVlKGJvcmRlci5ib3R0b21MZWZ0KCkuaGVp
Z2h0KCksIHNpemUuaGVpZ2h0KCkpKSwKKyAgICAgICAgSW50U2l6ZShjYWxjdWxhdGVWYWx1ZShi
b3JkZXIuYm90dG9tUmlnaHQoKS53aWR0aCgpLCBzaXplLndpZHRoKCkpLCAKKyAgICAgICAgICAg
ICAgICBjYWxjdWxhdGVWYWx1ZShib3JkZXIuYm90dG9tUmlnaHQoKS5oZWlnaHQoKSwgc2l6ZS5o
ZWlnaHQoKSkpKTsKIH0KIAogc3RhdGljIGZsb2F0IGNhbGNDb25zdHJhaW50U2NhbGVGb3IoY29u
c3QgSW50UmVjdCYgcmVjdCwgY29uc3QgUm91bmRlZFJlY3Q6OlJhZGlpJiByYWRpaSkKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCShyZXZpc2lv
biAxMTA2NjIpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUu
aAkod29ya2luZyBjb3B5KQpAQCAtMzksNiArMzksNyBAQAogI2luY2x1ZGUgIkdyYXBoaWNzVHlw
ZXMuaCIKICNpbmNsdWRlICJMZW5ndGguaCIKICNpbmNsdWRlICJMZW5ndGhCb3guaCIKKyNpbmNs
dWRlICJMZW5ndGhGdW5jdGlvbnMuaCIKICNpbmNsdWRlICJMZW5ndGhTaXplLmgiCiAjaW5jbHVk
ZSAiTGluZUNsYW1wVmFsdWUuaCIKICNpbmNsdWRlICJOaW5lUGllY2VJbWFnZS5oIgpAQCAtNjI2
LDcgKzYyNyw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJldHVybiBmb250TWV0cmljcygpLmxp
bmVTcGFjaW5nKCk7CiAKICAgICAgICAgaWYgKGxoLmlzUGVyY2VudCgpKQotICAgICAgICAgICAg
cmV0dXJuIGxoLmNhbGNNaW5WYWx1ZShmb250U2l6ZSgpKTsKKyAgICAgICAgICAgIHJldHVybiBj
YWxjdWxhdGVNaW5WYWx1ZShsaCwgZm9udFNpemUoKSk7CiAKICAgICAgICAgcmV0dXJuIGxoLnZh
bHVlKCk7CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdSb290LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR1Jvb3QuY3BwCShyZXZpc2lvbiAxMTA2NjIpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04Nyw5ICs4Nyw5
IEBAIHZvaWQgUmVuZGVyU1ZHUm9vdDo6Y29tcHV0ZUludHJpbnNpY1JhdGkKICAgICAvLyAgIHJl
c29sdmluZyBib3RoIHZhbHVlcyB0byB1c2VyIHVuaXRzLgogICAgIGlmIChpbnRyaW5zaWNXaWR0
aEF0dHJpYnV0ZS5pc0ZpeGVkKCkgfHwgaW50cmluc2ljSGVpZ2h0QXR0cmlidXRlLmlzRml4ZWQo
KSkgewogICAgICAgICBpZiAoaW50cmluc2ljV2lkdGhBdHRyaWJ1dGUuaXNGaXhlZCgpKQotICAg
ICAgICAgICAgaW50cmluc2ljU2l6ZS5zZXRXaWR0aChpbnRyaW5zaWNXaWR0aEF0dHJpYnV0ZS5j
YWxjRmxvYXRWYWx1ZSgwKSk7CisgICAgICAgICAgICBpbnRyaW5zaWNTaXplLnNldFdpZHRoKGNh
bGN1bGF0ZUZsb2F0VmFsdWUoaW50cmluc2ljV2lkdGhBdHRyaWJ1dGUsIDApKTsKICAgICAgICAg
aWYgKGludHJpbnNpY0hlaWdodEF0dHJpYnV0ZS5pc0ZpeGVkKCkpCi0gICAgICAgICAgICBpbnRy
aW5zaWNTaXplLnNldEhlaWdodChpbnRyaW5zaWNIZWlnaHRBdHRyaWJ1dGUuY2FsY0Zsb2F0VmFs
dWUoMCkpOworICAgICAgICAgICAgaW50cmluc2ljU2l6ZS5zZXRIZWlnaHQoY2FsY3VsYXRlRmxv
YXRWYWx1ZShpbnRyaW5zaWNIZWlnaHRBdHRyaWJ1dGUsIDApKTsKICAgICAgICAgaWYgKCFpbnRy
aW5zaWNTaXplLmlzRW1wdHkoKSkKICAgICAgICAgICAgIGludHJpbnNpY1JhdGlvID0gaW50cmlu
c2ljU2l6ZS53aWR0aCgpIC8gc3RhdGljX2Nhc3Q8ZG91YmxlPihpbnRyaW5zaWNTaXplLmhlaWdo
dCgpKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMTUzLDcgKzE1Myw3IEBAIGJvb2wgUmVuZGVyU1ZH
Um9vdDo6aXNFbWJlZGRlZFRocm91Z2hGcmEKIAogc3RhdGljIGlubGluZSBMYXlvdXRVbml0IHJl
c29sdmVMZW5ndGhBdHRyaWJ1dGVGb3JTVkcoY29uc3QgTGVuZ3RoJiBsZW5ndGgsIGZsb2F0IHNj
YWxlLCBmbG9hdCBtYXhTaXplKQogewotICAgIHJldHVybiBzdGF0aWNfY2FzdDxMYXlvdXRVbml0
PihsZW5ndGguY2FsY1ZhbHVlKG1heFNpemUpICogKGxlbmd0aC5pc0ZpeGVkKCkgPyBzY2FsZSA6
IDEpKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8TGF5b3V0VW5pdD4oY2FsY3VsYXRlVmFsdWUo
bGVuZ3RoLCBtYXhTaXplKSAqIChsZW5ndGguaXNGaXhlZCgpID8gc2NhbGUgOiAxKSk7CiB9CiAK
IExheW91dFVuaXQgUmVuZGVyU1ZHUm9vdDo6Y29tcHV0ZVJlcGxhY2VkTG9naWNhbFdpZHRoKGJv
b2wgaW5jbHVkZU1heFdpZHRoKSBjb25zdApJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1NW
R0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTVkdFbGVt
ZW50LmNwcAkocmV2aXNpb24gMTEwNjYyKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1NWR0Vs
ZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NDEsNyArNTQxLDcgQEAgRmxvYXRSZWN0IFNW
R1NWR0VsZW1lbnQ6OmN1cnJlbnRWaWV3Qm94UgogCiAgICAgLy8gSWYgbm8gdmlld0JveCBpcyBz
cGVjaWZpZWQgYnV0IG5vbi1yZWxhdGl2ZSB3aWR0aC9oZWlnaHQgdmFsdWVzLCB0aGVuIHdlCiAg
ICAgLy8gc2hvdWxkIGFsd2F5cyBzeW50aGVzaXplIGEgdmlld0JveCBpZiB3ZSdyZSBlbWJlZGRl
ZCB0aHJvdWdoIGEgU1ZHSW1hZ2UuICAgIAotICAgIHJldHVybiBGbG9hdFJlY3QoRmxvYXRQb2lu
dCgpLCBGbG9hdFNpemUoaW50cmluc2ljV2lkdGguY2FsY0Zsb2F0VmFsdWUoMCksIGludHJpbnNp
Y0hlaWdodC5jYWxjRmxvYXRWYWx1ZSgwKSkpOworICAgIHJldHVybiBGbG9hdFJlY3QoRmxvYXRQ
b2ludCgpLCBGbG9hdFNpemUoY2FsY3VsYXRlRmxvYXRWYWx1ZShpbnRyaW5zaWNXaWR0aCwgMCks
IGNhbGN1bGF0ZUZsb2F0VmFsdWUoaW50cmluc2ljSGVpZ2h0LCAwKSkpOwogfQogCiBGbG9hdFNp
emUgU1ZHU1ZHRWxlbWVudDo6Y3VycmVudFZpZXdwb3J0U2l6ZSgpIGNvbnN0CkBAIC01NDksNyAr
NTQ5LDcgQEAgRmxvYXRTaXplIFNWR1NWR0VsZW1lbnQ6OmN1cnJlbnRWaWV3cG9ydAogICAgIExl
bmd0aCBpbnRyaW5zaWNXaWR0aCA9IHRoaXMtPmludHJpbnNpY1dpZHRoKCk7CiAgICAgTGVuZ3Ro
IGludHJpbnNpY0hlaWdodCA9IHRoaXMtPmludHJpbnNpY0hlaWdodCgpOwogICAgIGlmIChpbnRy
aW5zaWNXaWR0aC5pc0ZpeGVkKCkgJiYgaW50cmluc2ljSGVpZ2h0LmlzRml4ZWQoKSkKLSAgICAg
ICAgcmV0dXJuIEZsb2F0U2l6ZShpbnRyaW5zaWNXaWR0aC5jYWxjRmxvYXRWYWx1ZSgwKSwgaW50
cmluc2ljSGVpZ2h0LmNhbGNGbG9hdFZhbHVlKDApKTsKKyAgICAgICAgcmV0dXJuIEZsb2F0U2l6
ZShjYWxjdWxhdGVGbG9hdFZhbHVlKGludHJpbnNpY1dpZHRoLCAwKSwgY2FsY3VsYXRlRmxvYXRW
YWx1ZShpbnRyaW5zaWNIZWlnaHQsIDApKTsKIAogICAgIGlmICghcmVuZGVyZXIoKSkKICAgICAg
ICAgcmV0dXJuIEZsb2F0U2l6ZSgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNz
L1NWR0ltYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3Mv
U1ZHSW1hZ2UuY3BwCShyZXZpc2lvbiAxMTA2NjIpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvZ3Jh
cGhpY3MvU1ZHSW1hZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOTMsNyArMjkzLDcgQEAgdm9p
ZCBTVkdJbWFnZTo6Y29tcHV0ZUludHJpbnNpY0RpbWVuc2lvbgogCiAgICAgaW50cmluc2ljUmF0
aW8gPSByb290RWxlbWVudC0+dmlld0JveCgpLnNpemUoKTsKICAgICBpZiAoaW50cmluc2ljUmF0
aW8uaXNFbXB0eSgpICYmIGludHJpbnNpY1dpZHRoLmlzRml4ZWQoKSAmJiBpbnRyaW5zaWNIZWln
aHQuaXNGaXhlZCgpKQotICAgICAgICBpbnRyaW5zaWNSYXRpbyA9IEZsb2F0U2l6ZShpbnRyaW5z
aWNXaWR0aC5jYWxjRmxvYXRWYWx1ZSgwKSwgaW50cmluc2ljSGVpZ2h0LmNhbGNGbG9hdFZhbHVl
KDApKTsKKyAgICAgICAgaW50cmluc2ljUmF0aW8gPSBGbG9hdFNpemUoY2FsY3VsYXRlRmxvYXRW
YWx1ZShpbnRyaW5zaWNXaWR0aCwgMCksIGNhbGN1bGF0ZUZsb2F0VmFsdWUoaW50cmluc2ljSGVp
Z2h0LCAwKSk7CiB9CiAKIE5hdGl2ZUltYWdlUHRyIFNWR0ltYWdlOjpuYXRpdmVJbWFnZUZvckN1
cnJlbnRGcmFtZSgpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMTA2NjIpCisrKyBTb3VyY2Uv
V2ViS2l0Mi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNiBAQAorMjAxMi0w
My0xMyAgSm9lIFRob21hcyAgPGpvZXRob21hc0Btb3Rvcm9sYS5jb20+CisKKyAgICAgICAgbW92
ZSBjYWxjKlZhbHVlIGZ1bmN0aW9ucyBvdXQgZnJvbSBMZW5ndGggKGFuZCBwbGF0Zm9ybSkKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgwODk3CisKKyAg
ICAgICAgTW92aW5nIHRoZSBMZW5ndGggY2FsYypWYWx1ZSBmdW5jdGlvbnMgb3V0IGZyb20gTGVu
Z3RoIHN0cnVjdHVyZSBhbmQgYWxzbyBmcm9tIC9XZWJDb3JlL3BsYXRmb3JtLyBmb2xkZXIuCisg
ICAgICAgIFRoaXMgaGVscHMgdG8gYXZvaWQgdGhlIGxheWVyaW5nIHZpb2xhdGlvbiB3aGlsZSBs
ZW5ndGggY2FsY3VsYXRpb24uIE90aGVyd2lzZSBsYXllciB2aW9sYXRpb24gY2FuIGJlIGF2b2lk
ZWQgb25seSBieSBhZGRpbmcgYSB2aXJ0dWFsIGludGVyZmFjZShidWcgMjcxNjApLgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC93aW4vV2ViUG9wdXBNZW51V2luLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViUG9wdXBNZW51OjpzZXRVcFBsYXRmb3JtRGF0YSk6CisKIDIwMTItMDMtMTMgIEFuZGVycyBD
YXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KIAogICAgICAgICBGaW5kIGJvdW5jeSBkb2Vz
buKAmXQgaGlkZSB3aGVuIGEgc3ViZnJhbWUgaXMgc2Nyb2xsZWQKSW5kZXg6IFNvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvd2luL1dlYlBvcHVwTWVudVdpbi5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC93aW4v
V2ViUG9wdXBNZW51V2luLmNwcAkocmV2aXNpb24gMTEwNjYyKQorKysgU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC93aW4vV2ViUG9wdXBNZW51V2luLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIlBsYXRmb3JtUG9wdXBNZW51RGF0
YS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvRm9udC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhp
Y3NDb250ZXh0Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9MZW5ndGhGdW5jdGlvbnMuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL1RleHRSdW4uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BvcHVwTWVudUNsaWVu
dC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUG9wdXBNZW51U3R5bGUuaD4KQEAgLTEzNSw3ICsxMzYs
NyBAQCB2b2lkIFdlYlBvcHVwTWVudTo6c2V0VXBQbGF0Zm9ybURhdGEoY29uCiAgICAgICAgIGlm
IChpdGVtU3R5bGUuaXNWaXNpYmxlKCkpIHsKICAgICAgICAgICAgIGludCB0ZXh0WCA9IHN0ZDo6
bWF4KDAsIGRhdGEubV9jbGllbnRQYWRkaW5nTGVmdCAtIGRhdGEubV9jbGllbnRJbnNldExlZnQp
OwogICAgICAgICAgICAgaWYgKFJlbmRlclRoZW1lOjpkZWZhdWx0VGhlbWUoKS0+cG9wdXBPcHRp
b25TdXBwb3J0c1RleHRJbmRlbnQoKSAmJiBpdGVtU3R5bGUudGV4dERpcmVjdGlvbigpID09IExU
UikKLSAgICAgICAgICAgICAgICB0ZXh0WCArPSBpdGVtU3R5bGUudGV4dEluZGVudCgpLmNhbGNN
aW5WYWx1ZShpdGVtUmVjdC53aWR0aCgpKTsKKyAgICAgICAgICAgICAgICB0ZXh0WCArPSBjYWxj
dWxhdGVNaW5WYWx1ZShpdGVtU3R5bGUudGV4dEluZGVudCgpLCBpdGVtUmVjdC53aWR0aCgpKTsK
ICAgICAgICAgICAgIGludCB0ZXh0WSA9IGl0ZW1SZWN0LnkoKSArIGl0ZW1Gb250LmZvbnRNZXRy
aWNzKCkuYXNjZW50KCkgKyAoaXRlbVJlY3QuaGVpZ2h0KCkgLSBpdGVtRm9udC5mb250TWV0cmlj
cygpLmhlaWdodCgpKSAvIDI7CiAKICAgICAgICAgICAgIG5vdFNlbGVjdGVkQmFja2luZ1N0b3Jl
Q29udGV4dC0+ZHJhd0JpZGlUZXh0KGl0ZW1Gb250LCB0ZXh0UnVuLCBJbnRQb2ludCh0ZXh0WCwg
dGV4dFkpKTsK
</data>
<flag name="review"
          id="135234"
          type_id="1"
          status="-"
          setter="koivisto"
    />
    <flag name="commit-queue"
          id="135235"
          type_id="3"
          status="-"
          setter="koivisto"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>131986</attachid>
            <date>2012-03-14 22:16:16 -0700</date>
            <delta_ts>2012-03-16 20:56:00 -0700</delta_ts>
            <desc>Patch-updated</desc>
            <filename>patch2</filename>
            <type>text/plain</type>
            <size>125799</size>
            <attacher name="Joe Thomas">joethomas</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDExMDgyMCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0NiBAQAorMjAxMi0wMy0xNCAgSm9lIFRo
b21hcyAgPGpvZXRob21hc0Btb3Rvcm9sYS5jb20+CisKKyAgICAgICAgbW92ZSBjYWxjKlZhbHVl
IGZ1bmN0aW9ucyBvdXQgZnJvbSBMZW5ndGggKGFuZCBwbGF0Zm9ybSkKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgwODk3CisKKyAgICAgICAgTW92aW5n
IHRoZSBMZW5ndGggY2FsYypWYWx1ZSBmdW5jdGlvbnMgb3V0IGZyb20gTGVuZ3RoIHN0cnVjdHVy
ZSBhbmQgYWxzbyBmcm9tIC9XZWJDb3JlL3BsYXRmb3JtLyBmb2xkZXIuCisgICAgICAgIFRoaXMg
aGVscHMgdG8gYXZvaWQgdGhlIGxheWVyaW5nIHZpb2xhdGlvbiB3aGlsZSBsZW5ndGggY2FsY3Vs
YXRpb24uIE90aGVyd2lzZSBsYXllciB2aW9sYXRpb24gY2FuIGJlIGF2b2lkZWQgb25seSBieSBh
ZGRpbmcgYSB2aXJ0dWFsIGludGVyZmFjZShidWcgMjcxNjApLgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbTogQnVp
bGQgc3lzdGVtIGNoYW5nZXMgZm9yIGFkZGluZyBuZXcgZmlsZXMuCisgICAgICAgICogVGFyZ2V0
LnByaTogRGl0dG8uCisgICAgICAgICogV2ViQ29yZS5neXBpOiBEaXR0by4KKyAgICAgICAgKiBX
ZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajogRGl0dG8uCisgICAgICAgICogV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBEaXR0by4KKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5
L2d0ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNlVGV4dC5jcHA6CisgICAgICAgIChnZXRBdHRy
aWJ1dGVTZXRGb3JBY2Nlc3NpYmlsaXR5T2JqZWN0KToKKyAgICAgICAgKiBjc3MvQ1NTQ29tcHV0
ZWRTdHlsZURlY2xhcmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0NvbXB1dGVkU3R5
bGVEZWNsYXJhdGlvbjo6Z2V0UHJvcGVydHlDU1NWYWx1ZSk6CisgICAgICAgICogY3NzL0xlbmd0
aEZ1bmN0aW9ucy5oOiBBZGRlZC4gTW92ZWQgY2FsYypWYWx1ZSBmdW5jdGlvbnMgb2YgTGVuZ3Ro
LgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpjYWxjdWxhdGVNaW5pbXVt
VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6Y2FsY3VsYXRlVmFsdWUpOgorICAgICAgICAoV2Vi
Q29yZTo6Y2FsY3VsYXRlRmxvYXRWYWx1ZSk6CisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpwYWdlU2l6ZUFuZE1hcmdpbnNJblBpeGVscyk6
CisgICAgICAgICogaHRtbC9IVE1MQXJlYUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTEFyZWFFbGVtZW50OjpnZXRSZWdpb24pOgorICAgICAgICAqIHBsYXRmb3JtL0NhbGN1bGF0
aW9uVmFsdWUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNhbGNFeHByZXNzaW9uTGVuZ3RoOjpldmFs
dWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vTGVuZ3RoLmg6IFJlbW92ZWQgdGhlIGNhbGMqVmFs
dWUgZnVuY3Rpb25zIGZyb20gTGVuZ3RoIHN0cnVjdHVyZS4KKyAgICAgICAgKExlbmd0aCk6Cisg
ICAgICAgIChXZWJDb3JlOjpMZW5ndGg6OmdldEZsb2F0VmFsdWUpOgorICAgICAgICAoV2ViQ29y
ZTo6TGVuZ3RoOjpnZXRJbnRWYWx1ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Ev
bWFjL1BsYXRmb3JtQ0FBbmltYXRpb25NYWMubW06CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2EvbWFjL1BsYXRmb3JtQ0FMYXllck1hYy5tbToKKyAgICAgICAgKFBsYXRmb3JtQ0FMYXll
cjo6c2V0RmlsdGVycyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NSZW5kZXJTdXJmYWNlRmlsdGVycy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1JlbmRlclN1
cmZhY2VGaWx0ZXJzOjphcHBseSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9GaWx0ZXJPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlck9wZXJhdGlv
bnM6OmdldE91dHNldHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMv
UGVyc3BlY3RpdmVUcmFuc2Zvcm1PcGVyYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGVy
c3BlY3RpdmVUcmFuc2Zvcm1PcGVyYXRpb246OmJsZW5kKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy90cmFuc2Zvcm1zL1BlcnNwZWN0aXZlVHJhbnNmb3JtT3BlcmF0aW9uLmg6CisgICAg
ICAgIChXZWJDb3JlOjpQZXJzcGVjdGl2ZVRyYW5zZm9ybU9wZXJhdGlvbjo6aXNJZGVudGl0eSk6
CisgICAgICAgIChXZWJDb3JlOjpQZXJzcGVjdGl2ZVRyYW5zZm9ybU9wZXJhdGlvbjo6YXBwbHkp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNsYXRlVHJhbnNm
b3JtT3BlcmF0aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpUcmFuc2xhdGVUcmFuc2Zvcm1PcGVy
YXRpb246OngpOgorICAgICAgICAoV2ViQ29yZTo6VHJhbnNsYXRlVHJhbnNmb3JtT3BlcmF0aW9u
Ojp5KToKKyAgICAgICAgKFdlYkNvcmU6OlRyYW5zbGF0ZVRyYW5zZm9ybU9wZXJhdGlvbjo6eik6
CisgICAgICAgIChXZWJDb3JlOjpUcmFuc2xhdGVUcmFuc2Zvcm1PcGVyYXRpb246OmlzSWRlbnRp
dHkpOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9Qb3B1cE1lbnVXaW4uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UG9wdXBNZW51V2luOjpwYWludCk6CisgICAgICAgICogcmVuZGVyaW5nL0F1dG9U
YWJsZUxheW91dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdXRvVGFibGVMYXlvdXQ6OmxheW91
dCk6CisgICAgICAgICogcmVuZGVyaW5nL0ZpbHRlckVmZmVjdFJlbmRlcmVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdFJlbmRlcmVyOjpidWlsZCk6CisgICAgICAgICogcmVu
ZGVyaW5nL0ZpeGVkVGFibGVMYXlvdXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rml4ZWRUYWJs
ZUxheW91dDo6bGF5b3V0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OnRleHRJbmRlbnRPZmZzZXQpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OmNvbXB1dGVJbmxpbmVQcmVmZXJyZWRMb2dpY2FsV2lk
dGhzKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckJveDo6cmVmbGVjdGlvbk9mZnNldCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJCb3g6OmNsaXBSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6Y29tcHV0ZUxv
Z2ljYWxXaWR0aEluUmVnaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6Y29tcHV0
ZUxvZ2ljYWxXaWR0aEluUmVnaW9uVXNpbmcpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94
Ojpjb21wdXRlSW5saW5lRGlyZWN0aW9uTWFyZ2lucyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJCb3g6OmNvbXB1dGVQZXJjZW50YWdlTG9naWNhbEhlaWdodCk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJCb3g6OmNvbXB1dGVSZXBsYWNlZExvZ2ljYWxXaWR0aFVzaW5nKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckJveDo6Y29tcHV0ZVJlcGxhY2VkTG9naWNhbEhlaWdodFVzaW5nKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6YXZhaWxhYmxlTG9naWNhbEhlaWdodFVzaW5n
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6Y29tcHV0ZUJsb2NrRGlyZWN0aW9uTWFy
Z2lucyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OmNvbXB1dGVQb3NpdGlvbmVkTG9n
aWNhbFdpZHRoVXNpbmcpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94Ojpjb21wdXRlUG9z
aXRpb25lZExvZ2ljYWxIZWlnaHRVc2luZyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6
OmNvbXB1dGVQb3NpdGlvbmVkTG9naWNhbFdpZHRoUmVwbGFjZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyQm94Ojpjb21wdXRlUG9zaXRpb25lZExvZ2ljYWxIZWlnaHRSZXBsYWNlZCk6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckJveE1vZGVsT2JqZWN0OjpyZWxhdGl2ZVBvc2l0aW9uT2Zmc2V0WCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9iamVjdDo6cmVsYXRpdmVQb3NpdGlvbk9m
ZnNldFkpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhZGRpbmdU
b3ApOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhZGRpbmdCb3R0
b20pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhZGRpbmdMZWZ0
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWRkaW5nUmlnaHQp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhZGRpbmdCZWZvcmUp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhZGRpbmdBZnRlcik6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFkZGluZ1N0YXJ0KToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWRkaW5nRW5kKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckJveE1vZGVsT2JqZWN0OjpjYWxjdWxhdGVGaWxsVGlsZVNp
emUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6OmNhbGN1bGF0ZUJh
Y2tncm91bmRJbWFnZUdlb21ldHJ5KToKKyAgICAgICAgKFdlYkNvcmU6OmNvbXB1dGVCb3JkZXJJ
bWFnZVNpZGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50
TmluZVBpZWNlSW1hZ2UpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGbGV4aWJsZUJveDo6cHJlZmVycmVkTWFpbkF4
aXNDb250ZW50RXh0ZW50Rm9yQ2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmxleGli
bGVCb3g6OmNvbXB1dGVNYWluQXhpc1ByZWZlcnJlZFNpemVzKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckZsZXhpYmxlQm94OjpydW5GcmVlU3BhY2VBbGxvY2F0aW9uQWxnb3JpdGhtKToKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRnJhbWVTZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyRnJhbWVTZXQ6OmxheU91dEF4aXMpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJJ
bmxpbmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29tcHV0ZU1hcmdpbik6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVy
OjpwZXJzcGVjdGl2ZVRyYW5zZm9ybSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6
cGVyc3BlY3RpdmVPcmlnaW4pOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckJhY2tp
bmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJCYWNraW5nOjpjb21wdXRlVHJh
bnNmb3JtT3JpZ2luKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQmFja2luZzo6Y29t
cHV0ZVBlcnNwZWN0aXZlT3JpZ2luKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTWFycXVl
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXJxdWVlOjp0aW1lckZpcmVkKToKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTWVudUxpc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyTWVudUxpc3Q6OnVwZGF0ZU9wdGlvbnNXaWR0aCk6CisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlck9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OnJlcGFp
bnRBZnRlckxheW91dElmTmVlZGVkKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyUmVwbGFj
ZWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyUmVwbGFjZWQ6OmNvbXB1dGVSZXBsYWNl
ZExvZ2ljYWxXaWR0aCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhclBhcnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Y2FsY1Njcm9sbGJhclRoaWNrbmVzc1VzaW5nKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclNjcm9sbGJhclBhcnQ6OmNvbXB1dGVTY3JvbGxiYXJXaWR0
aCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTY3JvbGxiYXJQYXJ0Ojpjb21wdXRlU2Nyb2xs
YmFySGVpZ2h0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGFibGUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyVGFibGU6OmNvbXB1dGVMb2dpY2FsV2lkdGgpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyVGFibGU6OmNvbnZlcnRTdHlsZUxvZ2ljYWxXaWR0aFRvQ29tcHV0ZWRX
aWR0aCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJUYWJsZUNlbGw6OmxvZ2ljYWxIZWlnaHRGb3JSb3dTaXppbmcpOgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rpb24uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyVGFibGVTZWN0aW9uOjpjYWxjUm93TG9naWNhbEhlaWdodCk6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlclRleHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHQ6
Om1hcmdpbkxlZnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dDo6bWFyZ2luUmlnaHQp
OgorICAgICAgICAqIHJlbmRlcmluZy9Sb290SW5saW5lQm94LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJvb3RJbmxpbmVCb3g6OnZlcnRpY2FsUG9zaXRpb25Gb3JCb3gpOgorICAgICAgICAqIHJl
bmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJT
dHlsZTo6YXBwbHlUcmFuc2Zvcm0pOgorICAgICAgICAoV2ViQ29yZTo6Y2FsY1JhZGlpRm9yKToK
KyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaDoKKyAgICAgICAgKiByZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZH
Um9vdDo6Y29tcHV0ZUludHJpbnNpY1JhdGlvSW5mb3JtYXRpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6cmVzb2x2ZUxlbmd0aEF0dHJpYnV0ZUZvclNWRyk6CisgICAgICAgICogc3ZnL1NWR1NWR0Vs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHU1ZHRWxlbWVudDo6Y3VycmVudFZpZXdC
b3hSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1NWR0VsZW1lbnQ6OmN1cnJlbnRWaWV3cG9y
dFNpemUpOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdJbWFnZTo6Y29tcHV0ZUludHJpbnNpY0RpbWVuc2lvbnMpOgorCiAyMDEyLTAz
LTE0ICBDaHJpcyBGbGVpemFjaCAgPGNmbGVpemFjaEBhcHBsZS5jb20+CiAKICAgICAgICAgQVg6
IGVtYmVkZGVkIGF0dGFjaG1lbnRzIGRvIG5vdCByZXBvcnQgdGhlaXIgcGFyZW50cyBjb3JyZWN0
bHkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQkocmV2aXNpb24gMTEwODE0KQor
KysgU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQkod29ya2luZyBjb3B5KQpAQCAt
MTU4NCw2ICsxNTg0LDcgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9j
c3MvRm9udEZlYXR1cmVWYWx1ZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9jc3MvRm9udFZhbHVlLmNw
cCBcCiAJU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRWYWx1ZS5oIFwKKwlTb3VyY2UvV2ViQ29yZS9j
c3MvTGVuZ3RoRnVuY3Rpb25zLmggXAogCVNvdXJjZS9XZWJDb3JlL2Nzcy9NZWRpYUZlYXR1cmVO
YW1lcy5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2Nzcy9NZWRpYUZlYXR1cmVOYW1lcy5oIFwKIAlT
b3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFMaXN0LmNwcCBcCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9U
YXJnZXQucHJpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkJKHJldmlz
aW9uIDExMDgxNCkKKysrIFNvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkJKHdvcmtpbmcgY29weSkK
QEAgLTE2MDcsNiArMTYwNyw3IEBAIEhFQURFUlMgKz0gXAogICAgIGNzcy9DU1NXcmFwU2hhcGVz
LmggXAogICAgIGNzcy9Gb250RmVhdHVyZVZhbHVlLmggXAogICAgIGNzcy9Gb250VmFsdWUuaCBc
CisgICAgY3NzL0xlbmd0aEZ1bmN0aW9ucy5oIFwKICAgICBjc3MvTWVkaWFGZWF0dXJlTmFtZXMu
aCBcCiAgICAgY3NzL01lZGlhTGlzdC5oIFwKICAgICBjc3MvTWVkaWFRdWVyeS5oIFwKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLmd5cGkJKHJldmlzaW9uIDExMDgxNCkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNv
cmUuZ3lwaQkod29ya2luZyBjb3B5KQpAQCAtODksNiArODksNyBAQAogICAgICAgICAgICAgJ2Nz
cy9DU1NWYWx1ZS5oJywKICAgICAgICAgICAgICdjc3MvQ1NTVmFsdWVMaXN0LmgnLAogICAgICAg
ICAgICAgJ2Nzcy9DU1NXcmFwU2hhcGVzLmgnLAorICAgICAgICAgICAgJ2Nzcy9MZW5ndGhGdW5j
dGlvbnMuaCcsCiAgICAgICAgICAgICAnY3NzL1BhaXIuaCcsCiAgICAgICAgICAgICAnY3NzL1dl
YktpdENTU0ZpbHRlclZhbHVlLmgnLAogICAgICAgICAgICAgJ2Nzcy9XZWJLaXRDU1NTaGFkZXJW
YWx1ZS5oJywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNw
cm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUu
dmNwcm9qCShyZXZpc2lvbiAxMTA4MTQpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJv
ai9XZWJDb3JlLnZjcHJvagkod29ya2luZyBjb3B5KQpAQCAtMzYyNzgsNiArMzYyNzgsMTAgQEAK
IAkJCQk+CiAJCQk8L0ZpbGU+CiAJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cY3NzXExl
bmd0aEZ1bmN0aW9ucy5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCiAJCQkJUmVsYXRp
dmVQYXRoPSIuLlxjc3NcTWVkaWFBbGxJbk9uZS5jcHAiCiAJCQkJPgogCQkJCTxGaWxlQ29uZmln
dXJhdGlvbgpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagkocmV2aXNpb24gMTEwODE0KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC01OTU0LDYgKzU5
NTQsNyBAQAogCQlFNEMyNzk1OTBDRjk3NDE5MDBFOTdCOTggLyogUmVuZGVyTWVkaWEuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0QzI3OTU3MENGOTc0
MTkwMEU5N0I5OCAvKiBSZW5kZXJNZWRpYS5oICovOyB9OwogCQlFNEQ2ODc3NzBFRDdBRTNEMDA2
RUE5NzggLyogUHVyZ2VhYmxlQnVmZmVyTWFjLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0RDY4Nzc2MEVEN0FFM0QwMDZFQTk3OCAvKiBQdXJnZWFi
bGVCdWZmZXJNYWMuY3BwICovOyB9OwogCQlFNEQ2ODc3OTBFRDdBRTRGMDA2RUE5NzggLyogUHVy
Z2VhYmxlQnVmZmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBFNEQ2ODc3ODBFRDdBRTRGMDA2RUE5NzggLyogUHVyZ2VhYmxlQnVmZmVyLmggKi87IH07
CisJCUU1NTU1QTA2MTUxMTE4NUEwMEI2NjMyNSAvKiBMZW5ndGhGdW5jdGlvbnMuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU1NTU1QTA1MTUxMTE4NUEw
MEI2NjMyNSAvKiBMZW5ndGhGdW5jdGlvbnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQlFRDJCQTgzQzA5QTI0QjkxMDA2QzBBQzQgLyogRG9jdW1l
bnRNYXJrZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEVEMkJBODNCMDlBMjRCOTEwMDZDMEFDNCAvKiBEb2N1bWVudE1hcmtlci5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUVENTAxREM2MEIyNDlGMjkw
MEFFMThEOSAvKiBFZGl0b3JNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBFRDUwMURDNTBCMjQ5RjI5MDBBRTE4RDkgLyogRWRpdG9yTWFjLm1tICov
OyB9OwogCQlFREUzQTUwMDBDN0E0MzA2MDA5NTZBMzcgLyogQ29sb3JNYWMuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEVERTNBNEZGMEM3QTQzMDYwMDk1
NkEzNyAvKiBDb2xvck1hYy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CkBAIC0xMzA2Miw2ICsxMzA2Myw3IEBACiAJCUU0QzI3OTU3MENGOTc0MTkwMEU5
N0I5OCAvKiBSZW5kZXJNZWRpYS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBS
ZW5kZXJNZWRpYS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFNEQ2ODc3NjBFRDdB
RTNEMDA2RUE5NzggLyogUHVyZ2VhYmxlQnVmZmVyTWFjLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFB1cmdlYWJsZUJ1ZmZlck1hYy5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUU0RDY4Nzc4MEVEN0FFNEYwMDZFQTk3OCAvKiBQdXJnZWFibGVCdWZm
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHVyZ2VhYmxlQnVmZmVyLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUU1NTU1QTA1MTUxMTE4NUEwMEI2NjMyNSAv
KiBMZW5ndGhGdW5jdGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTGVu
Z3RoRnVuY3Rpb25zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUVEMkJBODNCMDlB
MjRCOTEwMDZDMEFDNCAvKiBEb2N1bWVudE1hcmtlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBEb2N1bWVudE1hcmtlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlFRDUwMURDNTBCMjQ5RjI5MDBBRTE4RDkgLyogRWRpdG9yTWFjLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IEVkaXRvck1hYy5tbTsgcGF0aCA9IG1hYy9FZGl0
b3JNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUVERTNBNEZGMEM3QTQzMDYw
MDk1NkEzNyAvKiBDb2xvck1hYy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBD
b2xvck1hYy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTM3MzUsMTIgKzEzNzM3
LDEyIEBACiAJCQkJNDM2NzA4QjExMkQ5Q0E0QjAwMDQ0MjM0IC8qIFNWR01hcmtlckxheW91dElu
Zm8uaCAqLywKIAkJCQk3MTUzNzlGRTE0NkJEOUQ2MDA4QkQ2MTUgLyogU1ZHUGF0aERhdGEuY3Bw
ICovLAogCQkJCTcxNTM3OUZGMTQ2QkQ5RDYwMDhCRDYxNSAvKiBTVkdQYXRoRGF0YS5oICovLAor
CQkJCTE5N0IxODBBMTUwNjM0QzAwMEU0QURBOCAvKiBTVkdSZW5kZXJpbmdDb250ZXh0LmNwcCAq
LywKKwkJCQkxOTdCMTgwQjE1MDYzNEMwMDBFNEFEQTggLyogU1ZHUmVuZGVyaW5nQ29udGV4dC5o
ICovLAogCQkJCTQzNjcwOEIyMTJEOUNBNEIwMDA0NDIzNCAvKiBTVkdSZW5kZXJTdXBwb3J0LmNw
cCAqLywKIAkJCQk0MzY3MDhCMzEyRDlDQTRCMDAwNDQyMzQgLyogU1ZHUmVuZGVyU3VwcG9ydC5o
ICovLAogCQkJCTQzNjcwOEI0MTJEOUNBNEIwMDA0NDIzNCAvKiBTVkdSZW5kZXJUcmVlQXNUZXh0
LmNwcCAqLywKIAkJCQk0MzY3MDhCNTEyRDlDQTRCMDAwNDQyMzQgLyogU1ZHUmVuZGVyVHJlZUFz
VGV4dC5oICovLAotCQkJCTE5N0IxODBBMTUwNjM0QzAwMEU0QURBOCAvKiBTVkdSZW5kZXJpbmdD
b250ZXh0LmNwcCAqLywKLQkJCQkxOTdCMTgwQjE1MDYzNEMwMDBFNEFEQTggLyogU1ZHUmVuZGVy
aW5nQ29udGV4dC5oICovLAogCQkJCTQzNjcwOEI2MTJEOUNBNEIwMDA0NDIzNCAvKiBTVkdSZXNv
dXJjZXMuY3BwICovLAogCQkJCTQzNjcwOEI3MTJEOUNBNEIwMDA0NDIzNCAvKiBTVkdSZXNvdXJj
ZXMuaCAqLywKIAkJCQk0MzY3MDhCODEyRDlDQTRCMDAwNDQyMzQgLyogU1ZHUmVzb3VyY2VzQ2Fj
aGUuY3BwICovLApAQCAtMTUwODQsOCArMTUwODYsNiBAQAogCQk2NTgyQTE0ODA5OTk5RDZDMDBC
RUVCNkQgLyogbWFjICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgK
LQkJCQlDRDEyN0RFQTE0RjMwOTc5MDBFODQ3NzkgLyogV2ViQ29yZUZ1bGxTY3JlZW5XaW5kb3cu
aCAqLywKLQkJCQlDRDEyN0RFQjE0RjMwOTc5MDBFODQ3NzkgLyogV2ViQ29yZUZ1bGxTY3JlZW5X
aW5kb3cubW0gKi8sCiAJCQkJNTFFMUVDQUQwQzkxQzU0NjAwREMyNTVCIC8qIEF1dG9kcmFpbmVk
UG9vbC5tbSAqLywKIAkJCQk2NUE2NDBGMDA1MzNCQjFGMDA4NUU3NzcgLyogQmxvY2tFeGNlcHRp
b25zLmggKi8sCiAJCQkJNjVGODA2OTcwNTREOUY4NjAwOEJGNzc2IC8qIEJsb2NrRXhjZXB0aW9u
cy5tbSAqLywKQEAgLTE1MTUwLDYgKzE1MTUwLDggQEAKIAkJCQlCQ0U2NTlFNTBFQTkyRkIyMDA3
RTQ1MzMgLyogVGhlbWVNYWMuaCAqLywKIAkJCQlCQ0U2NTlFODBFQTkyRkZBMDA3RTQ1MzMgLyog
VGhlbWVNYWMubW0gKi8sCiAJCQkJNTFERjZEN0YwQjkyQTE4RTAwQzJEQzg1IC8qIFRocmVhZENo
ZWNrLm1tICovLAorCQkJCUNEMTI3REVBMTRGMzA5NzkwMEU4NDc3OSAvKiBXZWJDb3JlRnVsbFNj
cmVlbldpbmRvdy5oICovLAorCQkJCUNEMTI3REVCMTRGMzA5NzkwMEU4NDc3OSAvKiBXZWJDb3Jl
RnVsbFNjcmVlbldpbmRvdy5tbSAqLywKIAkJCQk5MzREOUJBNjBCOEMxMTc1MDA3QjQyQTkgLyog
V2ViQ29yZU5TU3RyaW5nRXh0cmFzLmggKi8sCiAJCQkJOTM0RDlCQTQwQjhDMTE2QjAwN0I0MkE5
IC8qIFdlYkNvcmVOU1N0cmluZ0V4dHJhcy5tbSAqLywKIAkJCQlDNUI0QzI0QjE1MDkyMzZDMDBB
NkVGMzcgLyogV2ViQ29yZU5TVVJMRXh0cmFzLmggKi8sCkBAIC0yMDQ1OSw2ICsyMDQ2MSw3IEBA
CiAJCQkJQ0Q0RTBBRkExMUY3QkMyNzAwOUQzODExIC8qIGZ1bGxzY3JlZW4uY3NzICovLAogCQkJ
CUNEQkQ5M0JBMTMzM0JENEIwMDI1NzBFMyAvKiBmdWxsc2NyZWVuUXVpY2tUaW1lLmNzcyAqLywK
IAkJCQk5M0NBNEM5OTA5REY5M0ZBMDBERjg2NzcgLyogaHRtbC5jc3MgKi8sCisJCQkJRTU1NTVB
MDUxNTExMTg1QTAwQjY2MzI1IC8qIExlbmd0aEZ1bmN0aW9ucy5oICovLAogCQkJCTkzQ0E0QzlB
MDlERjkzRkEwMERGODY3NyAvKiBtYWtlLWNzcy1maWxlLWFycmF5cy5wbCAqLywKIAkJCQk5M0NB
NEM5QjA5REY5M0ZBMDBERjg2NzcgLyogbWFrZXByb3AucGwgKi8sCiAJCQkJOTNDQTRDOUQwOURG
OTNGQTAwREY4Njc3IC8qIG1ha2V2YWx1ZXMucGwgKi8sCkBAIC0yMTQ2Niw2ICsyMTQ2OSw3IEBA
CiAJCQkJNTEyREQ4RjgwRDkxRTZBRjAwMEY4OUVFIC8qIEFyY2hpdmVSZXNvdXJjZUNvbGxlY3Rp
b24uaCBpbiBIZWFkZXJzICovLAogCQkJCUJDRkIyRjc3MDk3QTJFMUEwMEJBNzAzRCAvKiBBcmVu
YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkQ1Njg2Q0ExM0FDMTgwMjAwQjY5QzY4IC8qIEFzeW5j
QXVkaW9EZWNvZGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQlFMUNERTkyMjE1MDE5MTY5MDA4NjJD
QzUgLyogQXN5bmNGaWxlU3RyZWFtLmggaW4gSGVhZGVycyAqLywKIAkJCQk4OUQwOERBMDEyMjI4
NDUxMDAxMjQxREYgLyogQXN5bmNGaWxlU3lzdGVtLmggaW4gSGVhZGVycyAqLywKIAkJCQk4OUQw
OERBMTEyMjI4NDUxMDAxMjQxREYgLyogQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk5NzZENkM3NzEyMkI4QTNEMDAxRkQxRjcgLyogQXN5bmNGaWxlV3JpdGVy
LmggaW4gSGVhZGVycyAqLywKQEAgLTIzNDQ2LDYgKzIzNDUwLDcgQEAKIAkJCQk2NTkzOTIzODA5
QUU0MzQ2MDAyQzUzMUYgLyogS1VSTC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNCRDIxQUIwRTQx
N0FENDAwQTA3MEYyIC8qIEtVUkxIYXNoLmggaW4gSGVhZGVycyAqLywKIAkJCQkyNkE1MDM0RTE0
RjA5ODM2MDBBQTczMEQgLyogS1VSTFdURlVSTEltcGwuaCBpbiBIZWFkZXJzICovLAorCQkJCTQ1
MENFQkYxMTUwNzNCQkUwMDJCQjE0OSAvKiBMYWJlbGFibGVFbGVtZW50LmggaW4gSGVhZGVycyAq
LywKIAkJCQlBNDU2RkEyNzExQUQ0QTgzMDAyMEI0MjAgLyogTGFiZWxzTm9kZUxpc3QuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTg1RUM5QUZCMEE3MUEyQzYwMEVFRUFFRCAvKiBMYW5ndWFnZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMjkxN0I1NjIxNDczNDk2QzAwNTJDOUQwIC8qIExheWVyRmx1c2hT
Y2hlZHVsZXIuaCBpbiBIZWFkZXJzICovLApAQCAtMjM0NTYsNiArMjM0NjEsNyBAQAogCQkJCTUx
MkREOEY1MEQ5MUU2QUYwMDBGODlFRSAvKiBMZWdhY3lXZWJBcmNoaXZlLmggaW4gSGVhZGVycyAq
LywKIAkJCQlCQ0U2NUJFQjBFQUNERjE2MDA3RTQ1MzMgLyogTGVuZ3RoLmggaW4gSGVhZGVycyAq
LywKIAkJCQlCQ0ZGNjQ5MTBFQUQxNUMyMDBDMUQ2RjcgLyogTGVuZ3RoQm94LmggaW4gSGVhZGVy
cyAqLywKKwkJCQlFNTU1NUEwNjE1MTExODVBMDBCNjYzMjUgLyogTGVuZ3RoRnVuY3Rpb25zLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlCQ0ZGNjQ5MjBFQUQxNUMyMDBDMUQ2RjcgLyogTGVuZ3RoU2l6
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOENBREYyQTkxMzVDN0IzNjAwOUVGNDNGIC8qIExldmVs
REJDb21wYXJhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQk4Q0FERjJBQjEzNUM3QjM2MDA5RUY0
M0YgLyogTGV2ZWxEQkRhdGFiYXNlLmggaW4gSGVhZGVycyAqLywKQEAgLTIzNTc4LDkgKzIzNTg0
LDkgQEAKIAkJCQlBOEVBN0VCRTBBMTk0NUQwMDBBOEVGNUYgLyogTm90YXRpb24uaCBpbiBIZWFk
ZXJzICovLAogCQkJCTMxMkMwQzQxMTQ2REM2Q0MwMDE2QzkxMSAvKiBOb3RpZmljYXRpb24uaCBp
biBIZWFkZXJzICovLAogCQkJCTMzOTBDQTU2MEZGQzE1N0IwMDkyMTk2MiAvKiBOb3RpZmljYXRp
b25DZW50ZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTMzNTAzQzlBMTAxNzlBNzQwMDNCNDdFMSAv
KiBOb3RpZmljYXRpb25DbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTMzOTBDQTU4MEZGQzE1
N0IwMDkyMTk2MiAvKiBOb3RpZmljYXRpb25Db250ZW50cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MzEyOENBNkIxNDczMzE2MzAwNzRDNzJBIC8qIE5vdGlmaWNhdGlvbkNvbnRyb2xsZXIuaCBpbiBI
ZWFkZXJzICovLAotCQkJCTMzNTAzQzlBMTAxNzlBNzQwMDNCNDdFMSAvKiBOb3RpZmljYXRpb25D
bGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTk4RUIxRjk1MTMxM0ZFMDUwMEQwRTFFQSAvKiBO
b3RJbXBsZW1lbnRlZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE1NjlEMEIwRDdFMkI4MjAwN0Mz
OTgzIC8qIE5QX2pzb2JqZWN0LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTkyN0ZEMjE0MTZBMTVC
MDAzQTgzQzggLyogbnBhcGkuaCBpbiBIZWFkZXJzICovLApAQCAtMjQyNTUsMTIgKzI0MjYxLDEy
IEBACiAJCQkJQjIyMjdBOUEwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR1JhZGlhbEdyYWRpZW50RWxl
bWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDhFREUxOUYxMkE1MEI4RTAwQjk1Nzk3IC8qIFNW
R1JlY3QuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3QTlFMEQwMEJGMjIwMDcxQjc4MiAvKiBT
VkdSZWN0RWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMTk3QjE4MEMxNTA2MzUzMjAwRTRB
REE4IC8qIFNWR1JlbmRlcmluZ0NvbnRleHQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3QUEw
MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdSZW5kZXJpbmdJbnRlbnQuaCBpbiBIZWFkZXJzICovLAog
CQkJCUJDMjI3NDc5MEU4MzY2RTIwMEU3Rjk3NSAvKiBTVkdSZW5kZXJTdHlsZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQkMyMjc0N0IwRTgzNjZFMjAwRTdGOTc1IC8qIFNWR1JlbmRlclN0eWxlRGVm
cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDM2NzA4RjIxMkQ5Q0E0QjAwMDQ0MjM0IC8qIFNWR1Jl
bmRlclN1cHBvcnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTQzNjcwOEY0MTJEOUNBNEIwMDA0NDIz
NCAvKiBTVkdSZW5kZXJUcmVlQXNUZXh0LmggaW4gSGVhZGVycyAqLywKLQkJCQkxOTdCMTgwQzE1
MDYzNTMyMDBFNEFEQTggLyogU1ZHUmVuZGVyaW5nQ29udGV4dC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNDM2NzA4RjYxMkQ5Q0E0QjAwMDQ0MjM0IC8qIFNWR1Jlc291cmNlcy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNDM2NzA4RjgxMkQ5Q0E0QjAwMDQ0MjM0IC8qIFNWR1Jlc291cmNlc0NhY2hlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk0MzY3MDhGQTEyRDlDQTRCMDAwNDQyMzQgLyogU1ZHUmVzb3Vy
Y2VzQ3ljbGVTb2x2ZXIuaCBpbiBIZWFkZXJzICovLApAQCAtMjQ0MjYsMTYgKzI0NDMyLDE3IEBA
CiAJCQkJRkQ3RjI5OTcxM0Q0QzBDQjAwQUQ5NTM1IC8qIFdhdmVTaGFwZXJQcm9jZXNzb3IuaCBp
biBIZWFkZXJzICovLAogCQkJCTI5QTgxMjQ5MEZCQjlDQTkwMDUxMDI5MyAvKiBXZWJBY2Nlc3Np
YmlsaXR5T2JqZWN0V3JhcHBlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTNGMTk5QTgwODI0NUU1
OTAwMUU5QUJDIC8qIFdlYkNvcmVGcmFtZVZpZXcuaCBpbiBIZWFkZXJzICovLAorCQkJCUNEMTI3
REVFMTRGMzA5ODQwMEU4NDc3OSAvKiBXZWJDb3JlRnVsbFNjcmVlbldpbmRvdy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQkM1M0Q5MTExMTQzMTBDQzAwMEQ4MTdFIC8qIFdlYkNvcmVKU0NsaWVudERh
dGEuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzRjE5OUJCMDgyNDVFNTkwMDFFOUFCQyAvKiBXZWJD
b3JlS2V5Ym9hcmRVSU1vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzNEQ5QkE3MEI4QzExNzUw
MDdCNDJBOSAvKiBXZWJDb3JlTlNTdHJpbmdFeHRyYXMuaCBpbiBIZWFkZXJzICovLAorCQkJCUM1
QjRDMjREMTUwOTIzNkMwMEE2RUYzNyAvKiBXZWJDb3JlTlNVUkxFeHRyYXMuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUREMDVGRTBEMEI4QkEzQzYwMDlBQ0RGRSAvKiBXZWJDb3JlT2JqQ0V4dHJhcy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJRURFQzk4MDMwQUVEN0UxNzAwNTkxMzdGIC8qIFdlYkNvcmVQ
cmVmaXguaCBpbiBIZWFkZXJzICovLAogCQkJCTkzRUIxNjk3MDlGODgwQzAwMDkxRjhGRiAvKiBX
ZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmggaW4gSGVhZGVycyAqLywKIAkJCQkzN0Y4MThGRDBENjU3
NjA2MDA1RTFGMDUgLyogV2ViQ29yZVVSTFJlc3BvbnNlLmggaW4gSGVhZGVycyAqLywKIAkJCQk5
M0YxOTlGMDA4MjQ1RTU5MDAxRTlBQkMgLyogV2ViQ29yZVZpZXcuaCBpbiBIZWFkZXJzICovLAog
CQkJCUJDNkRBREVGMEExOTVGREYwMEU1Q0QxNCAvKiBXZWJGb250Q2FjaGUuaCBpbiBIZWFkZXJz
ICovLAotCQkJCUNEMTI3REVFMTRGMzA5ODQwMEU4NDc3OSAvKiBXZWJDb3JlRnVsbFNjcmVlbldp
bmRvdy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTdEMjBGNkQxMDdGNDM4QjAwQTgwMzkyIC8qIFdl
YkdMQWN0aXZlSW5mby5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDlDN0I5QzkxMDQyRDMyRjAwMDlE
NDQ3IC8qIFdlYkdMQnVmZmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk2RTNGQUU4RjE0NzMzRkRC
MDBFNDIzMDYgLyogV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEMuaCBpbiBIZWFkZXJzICovLApA
QCAtMjQ1NzMsOSArMjQ1ODAsNiBAQAogCQkJCUUxQkU1MTJFMENGNkM1MTIwMDJFQTk1OSAvKiBY
U0xUVW5pY29kZVNvcnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTk3N0UyRTBGMTJGMEZDOUMwMEMx
MzM3OSAvKiBYU1NBdWRpdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRDUzNzM1MzEzN0I2NTE4
MDAwMDhEQ0UgLyogWmVyb1BvbGUuaCBpbiBIZWFkZXJzICovLAotCQkJCUUxQ0RFOTIyMTUwMTkx
NjkwMDg2MkNDNSAvKiBBc3luY0ZpbGVTdHJlYW0uaCBpbiBIZWFkZXJzICovLAotCQkJCTQ1MENF
QkYxMTUwNzNCQkUwMDJCQjE0OSAvKiBMYWJlbGFibGVFbGVtZW50LmggaW4gSGVhZGVycyAqLywK
LQkJCQlDNUI0QzI0RDE1MDkyMzZDMDBBNkVGMzcgLyogV2ViQ29yZU5TVVJMRXh0cmFzLmggaW4g
SGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5n
ID0gMDsKIAkJfTsKQEAgLTI0NzAyLDYgKzI0NzA2LDcgQEAKIAkJCQk4NTEzNkM5QTBBRUQ2NjU5
MDBGOTBBM0QgLyogZWFzdFdlc3RSZXNpemVDdXJzb3IucG5nIGluIFJlc291cmNlcyAqLywKIAkJ
CQk4NTEzNkM5QjBBRUQ2NjU5MDBGOTBBM0QgLyogaGVscEN1cnNvci5wbmcgaW4gUmVzb3VyY2Vz
ICovLAogCQkJCTkzMTUzQkU0MTQxOTVCMkEwMEZDRjVCRSAvKiBpbnB1dFNwZWVjaC5wbmcgaW4g
UmVzb3VyY2VzICovLAorCQkJCTJEOUYwRTEzMTRGRjFDQkYwMEJBMEZGNyAvKiBsaW5lYXJTUkdC
LmljYyBpbiBSZXNvdXJjZXMgKi8sCiAJCQkJODUxMzZDOUMwQUVENjY1OTAwRjkwQTNEIC8qIGxp
bmtDdXJzb3IucG5nIGluIFJlc291cmNlcyAqLywKIAkJCQlCQ0FEMTgwQTEzMUM3QTBEMDA5OTA0
MDYgLyogTG9jYWxpemFibGUuc3RyaW5ncyBpbiBSZXNvdXJjZXMgKi8sCiAJCQkJMUNEQzE0MDUw
REQzOTM0QzAwNkVBQ0QzIC8qIGxvY2FsaXplZFN0cmluZ3MuanMgaW4gUmVzb3VyY2VzICovLApA
QCAtMjQ3MjcsNyArMjQ3MzIsNiBAQAogCQkJCTg1MTM2Q0E4MEFFRDY2NTkwMEY5MEEzRCAvKiB3
ZXN0UmVzaXplQ3Vyc29yLnBuZyBpbiBSZXNvdXJjZXMgKi8sCiAJCQkJMUFCMUFFN0EwQzA1MUZE
RTAwMTM5RjRGIC8qIHpvb21JbkN1cnNvci5wbmcgaW4gUmVzb3VyY2VzICovLAogCQkJCTFBQjFB
RTdCMEMwNTFGREUwMDEzOUY0RiAvKiB6b29tT3V0Q3Vyc29yLnBuZyBpbiBSZXNvdXJjZXMgKi8s
Ci0JCQkJMkQ5RjBFMTMxNEZGMUNCRjAwQkEwRkY3IC8qIGxpbmVhclNSR0IuaWNjIGluIFJlc291
cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0g
MDsKIAkJfTsKQEAgLTI0OTY2LDYgKzI0OTcwLDcgQEAKIAkJCQk1MTJERDhGNzBEOTFFNkFGMDAw
Rjg5RUUgLyogQXJjaGl2ZVJlc291cmNlQ29sbGVjdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlCQ0ZCMkY3NjA5N0EyRTFBMDBCQTcwM0QgLyogQXJlbmEuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJRkQ1Njg2QzkxM0FDMTgwMjAwQjY5QzY4IC8qIEFzeW5jQXVkaW9EZWNvZGVyLmNwcCBpbiBT
b3VyY2VzICovLAorCQkJCUUxQ0RFOTIwMTUwMThFRDAwMDg2MkNDNSAvKiBBc3luY0ZpbGVTdHJl
YW0uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODlEMDhEOUYxMjIyODQ1MTAwMTI0MURGIC8qIEFz
eW5jRmlsZVN5c3RlbS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBOEM0QTgwRTA5RDU2MzI3MDAw
M0FDOEQgLyogQXR0ci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBOEM0QTgwQzA5RDU2MzI3MDAw
M0FDOEQgLyogQXR0cmlidXRlLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMjY2NDYsNiArMjY2NTEs
NyBAQAogCQkJCTFBOTg5NTZCMEFBNzhGODAwMDVFRjVFRiAvKiBLVVJMQ0ZOZXQuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJNjU5MzkyM0EwOUFFNDM1QzAwMkM1MzFGIC8qIEtVUkxNYWMubW0gaW4g
U291cmNlcyAqLywKIAkJCQkyNkE1MDM1QTE0RjBBMkJDMDBBQTczMEQgLyogS1VSTFdURlVSTC5j
cHAgaW4gU291cmNlcyAqLywKKwkJCQk0NTBDRUJGMDE1MDczQkJFMDAyQkIxNDkgLyogTGFiZWxh
YmxlRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNDU2RkEyNjExQUQ0QTgzMDAyMEI0
MjAgLyogTGFiZWxzTm9kZUxpc3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTE4NzcyRjExMjZF
MjYyOTAwM0RENTg2IC8qIExhbmd1YWdlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTkzNTIwODQ1
MDlCRDQzQjkwMEYyMDM4RCAvKiBMYW5ndWFnZS5tbSBpbiBTb3VyY2VzICovLApAQCAtMjY3MjIs
NiArMjY3MjgsNyBAQAogCQkJCTM3RERDREE0MTM4NDUwMUMwMDA4Qjc5MyAvKiBNSFRNTEFyY2hp
dmUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMzdERENEQTYxMzg0NTAxQzAwMDhCNzkzIC8qIE1I
VE1MUGFyc2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTlCMzc1RURBMTQ0NzhBMDEwMEYzQ0FF
NSAvKiBNaWNyb0RhdGFJdGVtTGlzdC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk5QjJCN0FDMTE1
MDk4NTBBMDA4OTMyQ0MgLyogTWljcm9EYXRhSXRlbVZhbHVlLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTM3RERDRDk0MTM4NDRGRDUwMDA4Qjc5MyAvKiBNSU1FSGVhZGVyLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUJDNzcyQzRFMEM0RUIzMDQwMDgzMjg1RiAvKiBNSU1FVHlwZVJlZ2lzdHJ5LmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUJDNzcyQzVFMEM0RUIzNDQwMDgzMjg1RiAvKiBNSU1FVHlw
ZVJlZ2lzdHJ5TWFjLm1tIGluIFNvdXJjZXMgKi8sCkBAIC0yNzQyMSwxMyArMjc0MjgsMTQgQEAK
IAkJCQlGRDdGMjk5MzEzRDRDMENCMDBBRDk1MzUgLyogV2F2ZVNoYXBlck5vZGUuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJRkQ3RjI5OTYxM0Q0QzBDQjAwQUQ5NTM1IC8qIFdhdmVTaGFwZXJQcm9j
ZXNzb3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMjlBODEyNEEwRkJCOUNBOTAwNTEwMjkzIC8q
IFdlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJQ0Qx
MjdERUQxNEYzMDk3RDAwRTg0Nzc5IC8qIFdlYkNvcmVGdWxsU2NyZWVuV2luZG93Lm1tIGluIFNv
dXJjZXMgKi8sCiAJCQkJOTM0RDlCQTUwQjhDMTE2QjAwN0I0MkE5IC8qIFdlYkNvcmVOU1N0cmlu
Z0V4dHJhcy5tbSBpbiBTb3VyY2VzICovLAorCQkJCUM1QjRDMjRFMTUwOTIzNkMwMEE2RUYzNyAv
KiBXZWJDb3JlTlNVUkxFeHRyYXMubW0gaW4gU291cmNlcyAqLywKIAkJCQlCNTBGNUI4MTBFOTZD
RDk5MDBBRDcxQTYgLyogV2ViQ29yZU9iakNFeHRyYXMubW0gaW4gU291cmNlcyAqLywKIAkJCQk5
M0VCMTY5NTA5Rjg4MEIwMDA5MUY4RkYgLyogV2ViQ29yZVN5c3RlbUludGVyZmFjZS5tbSBpbiBT
b3VyY2VzICovLAogCQkJCTM3RjgxOEZFMEQ2NTc2MDYwMDVFMUYwNSAvKiBXZWJDb3JlVVJMUmVz
cG9uc2UubW0gaW4gU291cmNlcyAqLywKIAkJCQk5M0YxOUIwNzA4MjQ1RTU5MDAxRTlBQkMgLyog
V2ViQ29yZVZpZXcubSBpbiBTb3VyY2VzICovLAogCQkJCUJDNkRBREZBMEExOTYwMkIwMEU1Q0Qx
NCAvKiBXZWJGb250Q2FjaGUubW0gaW4gU291cmNlcyAqLywKLQkJCQlDRDEyN0RFRDE0RjMwOTdE
MDBFODQ3NzkgLyogV2ViQ29yZUZ1bGxTY3JlZW5XaW5kb3cubW0gaW4gU291cmNlcyAqLywKIAkJ
CQk0OUM3QjlDODEwNDJEMzJGMDAwOUQ0NDcgLyogV2ViR0xCdWZmZXIuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJNkUzRkFFOEUxNDczM0ZEQjAwRTQyMzA2IC8qIFdlYkdMQ29tcHJlc3NlZFRleHR1
cmVTM1RDLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTZFNEU5MUFFMTBGN0ZCMzEwMEEyNzc5QyAv
KiBXZWJHTENvbnRleHRBdHRyaWJ1dGVzLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMjc1NTIsMTAg
KzI3NTYwLDYgQEAKIAkJCQlFMUJFNTEyRDBDRjZDNTEyMDAyRUE5NTkgLyogWFNMVFVuaWNvZGVT
b3J0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTk3N0UyRTBFMTJGMEZDOUMwMEMxMzM3OSAvKiBY
U1NBdWRpdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUZENTM3MzUyMTM3QjY1MTgwMDAwOERD
RSAvKiBaZXJvUG9sZS5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlFMUNERTkyMDE1MDE4RUQwMDA4
NjJDQzUgLyogQXN5bmNGaWxlU3RyZWFtLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTQ1MENFQkYw
MTUwNzNCQkUwMDJCQjE0OSAvKiBMYWJlbGFibGVFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAot
CQkJCUM1QjRDMjRFMTUwOTIzNkMwMEE2RUYzNyAvKiBXZWJDb3JlTlNVUkxFeHRyYXMubW0gaW4g
U291cmNlcyAqLywKLQkJCQk5QjJCN0FDMTE1MDk4NTBBMDA4OTMyQ0MgLyogTWljcm9EYXRhSXRl
bVZhbHVlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50
UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9ndGsvV2ViS2l0QWNjZXNzaWJsZUludGVyZmFjZVRleHQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvZ3RrL1dlYktpdEFjY2Vzc2libGVJbnRlcmZh
Y2VUZXh0LmNwcAkocmV2aXNpb24gMTEwODE0KQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9ndGsvV2ViS2l0QWNjZXNzaWJsZUludGVyZmFjZVRleHQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yNDAsNyArMjQwLDcgQEAgc3RhdGljIEF0a0F0dHJpYnV0ZVNldCogZ2V0QXR0cmlidXRl
U2V0RgogICAgIH0KIAogICAgIGlmICghc3R5bGUtPnRleHRJbmRlbnQoKS5pc1VuZGVmaW5lZCgp
KSB7Ci0gICAgICAgIGludCBpbmRlbnRhdGlvbiA9IHN0eWxlLT50ZXh0SW5kZW50KCkuY2FsY1Zh
bHVlKG9iamVjdC0+c2l6ZSgpLndpZHRoKCkpOworICAgICAgICBpbnQgaW5kZW50YXRpb24gPSBj
YWxjdWxhdGVWYWx1ZShzdHlsZS0+dGV4dEluZGVudCgpLCBvYmplY3QtPnNpemUoKS53aWR0aCgp
KTsKICAgICAgICAgYnVmZmVyLnNldChnX3N0cmR1cF9wcmludGYoIiVpIiwgaW5kZW50YXRpb24p
KTsKICAgICAgICAgcmVzdWx0ID0gYWRkVG9BdGtBdHRyaWJ1dGVTZXQocmVzdWx0LCBhdGtfdGV4
dF9hdHRyaWJ1dGVfZ2V0X25hbWUoQVRLX1RFWFRfQVRUUl9JTkRFTlQpLCBidWZmZXIuZ2V0KCkp
OwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFy
YXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0
eWxlRGVjbGFyYXRpb24uY3BwCShyZXZpc2lvbiAxMTA4MTQpCisrKyBTb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTc3
NCw3ICsxNzc0LDcgQEAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gQ1NTQ29tcHV0ZWRTdHlsZURlYwog
ICAgICAgICAgICAgICAgIC8vIFJlbmRlckJveCBnaXZlcyBhIG1hcmdpblJpZ2h0KCkgdGhhdCBp
cyB0aGUgZGlzdGFuY2UgYmV0d2VlbiB0aGUgcmlnaHQtZWRnZSBvZiB0aGUgY2hpbGQgYm94CiAg
ICAgICAgICAgICAgICAgLy8gYW5kIHRoZSByaWdodC1lZGdlIG9mIHRoZSBjb250YWluaW5nIGJv
eCwgd2hlbiBkaXNwbGF5ID09IEJMT0NLLiBMZXQncyBjYWxjdWxhdGUgdGhlIGFic29sdXRlCiAg
ICAgICAgICAgICAgICAgLy8gdmFsdWUgb2YgdGhlIHNwZWNpZmllZCBtYXJnaW4tcmlnaHQgJSBp
bnN0ZWFkIG9mIHJlbHlpbmcgb24gUmVuZGVyQm94J3MgbWFyZ2luUmlnaHQoKSB2YWx1ZS4KLSAg
ICAgICAgICAgICAgICB2YWx1ZSA9IG1hcmdpblJpZ2h0LmNhbGNNaW5WYWx1ZSh0b1JlbmRlckJv
eChyZW5kZXJlciktPmNvbnRhaW5pbmdCbG9ja0xvZ2ljYWxXaWR0aEZvckNvbnRlbnQoKSk7Cisg
ICAgICAgICAgICAgICAgdmFsdWUgPSBjYWxjdWxhdGVNaW5pbXVtVmFsdWUobWFyZ2luUmlnaHQs
IHRvUmVuZGVyQm94KHJlbmRlcmVyKS0+Y29udGFpbmluZ0Jsb2NrTG9naWNhbFdpZHRoRm9yQ29u
dGVudCgpKTsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICB2YWx1ZSA9IHRvUmVu
ZGVyQm94KHJlbmRlcmVyKS0+bWFyZ2luUmlnaHQoKTsKICAgICAgICAgICAgIHJldHVybiB6b29t
QWRqdXN0ZWRQaXhlbFZhbHVlKHZhbHVlLCBzdHlsZS5nZXQoKSwgY3NzVmFsdWVQb29sKTsKQEAg
LTIxODYsOCArMjE4Niw4IEBAIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IENTU0NvbXB1dGVkU3R5bGVE
ZWMKICAgICAgICAgICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IGxpc3QgPSBDU1NWYWx1ZUxpc3Q6
OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7CiAgICAgICAgICAgICBpZiAocmVuZGVyZXIpIHsKICAg
ICAgICAgICAgICAgICBMYXlvdXRSZWN0IGJveCA9IHNpemluZ0JveChyZW5kZXJlcik7Ci0gICAg
ICAgICAgICAgICAgbGlzdC0+YXBwZW5kKHpvb21BZGp1c3RlZFBpeGVsVmFsdWUoc3R5bGUtPnBl
cnNwZWN0aXZlT3JpZ2luWCgpLmNhbGNNaW5WYWx1ZShib3gud2lkdGgoKSksIHN0eWxlLmdldCgp
LCBjc3NWYWx1ZVBvb2wpKTsKLSAgICAgICAgICAgICAgICBsaXN0LT5hcHBlbmQoem9vbUFkanVz
dGVkUGl4ZWxWYWx1ZShzdHlsZS0+cGVyc3BlY3RpdmVPcmlnaW5ZKCkuY2FsY01pblZhbHVlKGJv
eC5oZWlnaHQoKSksIHN0eWxlLmdldCgpLCBjc3NWYWx1ZVBvb2wpKTsKKyAgICAgICAgICAgICAg
ICBsaXN0LT5hcHBlbmQoem9vbUFkanVzdGVkUGl4ZWxWYWx1ZShjYWxjdWxhdGVNaW5pbXVtVmFs
dWUoc3R5bGUtPnBlcnNwZWN0aXZlT3JpZ2luWCgpLCBib3gud2lkdGgoKSksIHN0eWxlLmdldCgp
LCBjc3NWYWx1ZVBvb2wpKTsKKyAgICAgICAgICAgICAgICBsaXN0LT5hcHBlbmQoem9vbUFkanVz
dGVkUGl4ZWxWYWx1ZShjYWxjdWxhdGVNaW5pbXVtVmFsdWUoc3R5bGUtPnBlcnNwZWN0aXZlT3Jp
Z2luWSgpLCBib3guaGVpZ2h0KCkpLCBzdHlsZS5nZXQoKSwgY3NzVmFsdWVQb29sKSk7CiAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICBsaXN0LT5hcHBl
bmQoem9vbUFkanVzdGVkUGl4ZWxWYWx1ZUZvckxlbmd0aChzdHlsZS0+cGVyc3BlY3RpdmVPcmln
aW5YKCksIHN0eWxlLmdldCgpLCBjc3NWYWx1ZVBvb2wpKTsKQEAgLTIyMzIsOCArMjIzMiw4IEBA
IFBhc3NSZWZQdHI8Q1NTVmFsdWU+IENTU0NvbXB1dGVkU3R5bGVEZWMKICAgICAgICAgICAgIFJl
ZlB0cjxDU1NWYWx1ZUxpc3Q+IGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJh
dGVkKCk7CiAgICAgICAgICAgICBpZiAocmVuZGVyZXIpIHsKICAgICAgICAgICAgICAgICBJbnRS
ZWN0IGJveCA9IHNpemluZ0JveChyZW5kZXJlcik7Ci0gICAgICAgICAgICAgICAgbGlzdC0+YXBw
ZW5kKHpvb21BZGp1c3RlZFBpeGVsVmFsdWUoc3R5bGUtPnRyYW5zZm9ybU9yaWdpblgoKS5jYWxj
TWluVmFsdWUoYm94LndpZHRoKCkpLCBzdHlsZS5nZXQoKSwgY3NzVmFsdWVQb29sKSk7Ci0gICAg
ICAgICAgICAgICAgbGlzdC0+YXBwZW5kKHpvb21BZGp1c3RlZFBpeGVsVmFsdWUoc3R5bGUtPnRy
YW5zZm9ybU9yaWdpblkoKS5jYWxjTWluVmFsdWUoYm94LmhlaWdodCgpKSwgc3R5bGUuZ2V0KCks
IGNzc1ZhbHVlUG9vbCkpOworICAgICAgICAgICAgICAgIGxpc3QtPmFwcGVuZCh6b29tQWRqdXN0
ZWRQaXhlbFZhbHVlKGNhbGN1bGF0ZU1pbmltdW1WYWx1ZShzdHlsZS0+dHJhbnNmb3JtT3JpZ2lu
WCgpLCBib3gud2lkdGgoKSksIHN0eWxlLmdldCgpLCBjc3NWYWx1ZVBvb2wpKTsKKyAgICAgICAg
ICAgICAgICBsaXN0LT5hcHBlbmQoem9vbUFkanVzdGVkUGl4ZWxWYWx1ZShjYWxjdWxhdGVNaW5p
bXVtVmFsdWUoc3R5bGUtPnRyYW5zZm9ybU9yaWdpblkoKSwgYm94LmhlaWdodCgpKSwgc3R5bGUu
Z2V0KCksIGNzc1ZhbHVlUG9vbCkpOwogICAgICAgICAgICAgICAgIGlmIChzdHlsZS0+dHJhbnNm
b3JtT3JpZ2luWigpICE9IDApCiAgICAgICAgICAgICAgICAgICAgIGxpc3QtPmFwcGVuZCh6b29t
QWRqdXN0ZWRQaXhlbFZhbHVlKHN0eWxlLT50cmFuc2Zvcm1PcmlnaW5aKCksIHN0eWxlLmdldCgp
LCBjc3NWYWx1ZVBvb2wpKTsKICAgICAgICAgICAgIH0gZWxzZSB7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9jc3MvTGVuZ3RoRnVuY3Rpb25zLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
Y3NzL0xlbmd0aEZ1bmN0aW9ucy5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvY3Nz
L0xlbmd0aEZ1bmN0aW9ucy5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEyMyBAQAorLyoKKyAg
ICBDb3B5cmlnaHQgKEMpIDE5OTkgTGFycyBLbm9sbCAoa25vbGxAa2RlLm9yZykKKyAgICBDb3B5
cmlnaHQgKEMpIDIwMDYsIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICAg
IENvcHlyaWdodCAoQykgMjAxMSBSaWsgQ2FiYW5pZXIgKGNhYmFuaWVyQGFkb2JlLmNvbSkKKyAg
ICBDb3B5cmlnaHQgKEMpIDIwMTEgQWRvYmUgU3lzdGVtcyBJbmNvcnBvcmF0ZWQuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgICAgQ29weXJpZ2h0IChDKSAyMDEyIE1vdG9yb2xhIE1vYmlsaXR5LCBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0
d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVy
IHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNl
IGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAg
ICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVy
IHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg
dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp
dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBv
ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICAgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ug
c2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBD
T1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICAgIEJvc3Rv
biwgTUEgMDIxMTAtMTMwMSwgVVNBLgorKi8KKworI2lmbmRlZiBMZW5ndGhGdW5jdGlvbnNfaAor
I2RlZmluZSBMZW5ndGhGdW5jdGlvbnNfaAorCisjaW5jbHVkZSAiTGVuZ3RoLmgiCisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworaW5saW5lIGludCBjYWxjdWxhdGVNaW5pbXVtVmFsdWUoTGVuZ3Ro
IGxlbmd0aCwgaW50IG1heGltdW1WYWx1ZSwgYm9vbCByb3VuZFBlcmNlbnRhZ2VzID0gZmFsc2Up
Cit7CisgICAgc3dpdGNoIChsZW5ndGgudHlwZSgpKSB7CisgICAgY2FzZSBGaXhlZDoKKyAgICAg
ICAgcmV0dXJuIGxlbmd0aC52YWx1ZSgpOworICAgIGNhc2UgUGVyY2VudDoKKyAgICAgICAgaWYg
KHJvdW5kUGVyY2VudGFnZXMpCisgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50Pihy
b3VuZChtYXhpbXVtVmFsdWUgKiBsZW5ndGgucGVyY2VudCgpIC8gMTAwLjBmKSk7CisgICAgICAg
IC8vIERvbid0IHJlbW92ZSB0aGUgZXh0cmEgY2FzdCB0byBmbG9hdC4gSXQgaXMgbmVlZGVkIGZv
ciByb3VuZGluZyBvbiAzMi1iaXQgSW50ZWwgbWFjaGluZXMgdGhhdCB1c2UgdGhlIEZQVSBzdGFj
ay4KKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4oc3RhdGljX2Nhc3Q8ZmxvYXQ+KG1h
eGltdW1WYWx1ZSAqIGxlbmd0aC5wZXJjZW50KCkgLyAxMDAuMGYpKTsKKyAgICBjYXNlIENhbGN1
bGF0ZWQ6CisgICAgICAgIHJldHVybiBsZW5ndGgubm9uTmFuQ2FsY3VsYXRlZFZhbHVlKG1heGlt
dW1WYWx1ZSk7CisgICAgY2FzZSBBdXRvOgorICAgICAgICByZXR1cm4gMDsKKyAgICBjYXNlIFJl
bGF0aXZlOgorICAgIGNhc2UgSW50cmluc2ljOgorICAgIGNhc2UgTWluSW50cmluc2ljOgorICAg
IGNhc2UgVW5kZWZpbmVkOgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAg
cmV0dXJuIDA7CisgICAgfQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiAw
OworfQorCitpbmxpbmUgaW50IGNhbGN1bGF0ZVZhbHVlKExlbmd0aCBsZW5ndGgsIGludCBtYXhp
bXVtVmFsdWUsIGJvb2wgcm91bmRQZXJjZW50YWdlcyA9IGZhbHNlKQoreworICAgIHN3aXRjaCAo
bGVuZ3RoLnR5cGUoKSkgeworICAgIGNhc2UgRml4ZWQ6CisgICAgY2FzZSBQZXJjZW50OgorICAg
IGNhc2UgQ2FsY3VsYXRlZDoKKyAgICAgICAgcmV0dXJuIGNhbGN1bGF0ZU1pbmltdW1WYWx1ZShs
ZW5ndGgsIG1heGltdW1WYWx1ZSwgcm91bmRQZXJjZW50YWdlcyk7CisgICAgY2FzZSBBdXRvOgor
ICAgICAgICByZXR1cm4gbWF4aW11bVZhbHVlOworICAgIGNhc2UgUmVsYXRpdmU6CisgICAgY2Fz
ZSBJbnRyaW5zaWM6CisgICAgY2FzZSBNaW5JbnRyaW5zaWM6CisgICAgY2FzZSBVbmRlZmluZWQ6
CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9
CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIDA7Cit9CisKKy8vIEZJWE1F
OiB3aGVuIHN1YnBpeGVsIGxheW91dCBpcyBzdXBwb3J0ZWQgdGhpcyBjb3B5IG9mIGNhbGNGbG9h
dFZhbHVlKCkgY2FuIGJlIHJlbW92ZWQuIFNlZSBidWcgNzExNDMuCitpbmxpbmUgZmxvYXQgY2Fs
Y3VsYXRlRmxvYXRWYWx1ZShMZW5ndGggbGVuZ3RoLCBpbnQgbWF4aW11bVZhbHVlKQoreworICAg
IHN3aXRjaCAobGVuZ3RoLnR5cGUoKSkgeworICAgIGNhc2UgRml4ZWQ6CisgICAgICAgIHJldHVy
biBsZW5ndGguZ2V0RmxvYXRWYWx1ZSgpOworICAgIGNhc2UgUGVyY2VudDoKKyAgICAgICAgcmV0
dXJuIHN0YXRpY19jYXN0PGZsb2F0PihtYXhpbXVtVmFsdWUgKiBsZW5ndGgucGVyY2VudCgpIC8g
MTAwLjBmKTsKKyAgICBjYXNlIEF1dG86CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxmbG9h
dD4obWF4aW11bVZhbHVlKTsKKyAgICBjYXNlIENhbGN1bGF0ZWQ6CisgICAgICAgIHJldHVybiBs
ZW5ndGgubm9uTmFuQ2FsY3VsYXRlZFZhbHVlKG1heGltdW1WYWx1ZSk7ICAgICAgICAgICAgICAg
IAorICAgIGNhc2UgUmVsYXRpdmU6CisgICAgY2FzZSBJbnRyaW5zaWM6CisgICAgY2FzZSBNaW5J
bnRyaW5zaWM6CisgICAgY2FzZSBVbmRlZmluZWQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CisgICAgcmV0dXJuIDA7Cit9CisKK2lubGluZSBmbG9hdCBjYWxjdWxhdGVGbG9hdFZhbHVlKExl
bmd0aCBsZW5ndGgsIGZsb2F0IG1heGltdW1WYWx1ZSkKK3sKKyAgICBzd2l0Y2ggKGxlbmd0aC50
eXBlKCkpIHsKKyAgICBjYXNlIEZpeGVkOgorICAgICAgICByZXR1cm4gbGVuZ3RoLmdldEZsb2F0
VmFsdWUoKTsKKyAgICBjYXNlIFBlcmNlbnQ6CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxm
bG9hdD4obWF4aW11bVZhbHVlICogbGVuZ3RoLnBlcmNlbnQoKSAvIDEwMC4wZik7CisgICAgY2Fz
ZSBBdXRvOgorICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8ZmxvYXQ+KG1heGltdW1WYWx1ZSk7
CisgICAgY2FzZSBDYWxjdWxhdGVkOgorICAgICAgICByZXR1cm4gbGVuZ3RoLm5vbk5hbkNhbGN1
bGF0ZWRWYWx1ZShtYXhpbXVtVmFsdWUpOworICAgIGNhc2UgUmVsYXRpdmU6CisgICAgY2FzZSBJ
bnRyaW5zaWM6CisgICAgY2FzZSBNaW5JbnRyaW5zaWM6CisgICAgY2FzZSBVbmRlZmluZWQ6Cisg
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9Cisg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIDA7Cit9CisKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIExlbmd0aEZ1bmN0aW9uc19oCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudC5jcHAJKHJldmlzaW9uIDExMDgxNCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3OTYsOCArMTc5Niw4IEBAIHZvaWQgRG9j
dW1lbnQ6OnBhZ2VTaXplQW5kTWFyZ2luc0luUGl4ZWwKICAgICAgICAgTGVuZ3RoU2l6ZSBzaXpl
ID0gc3R5bGUtPnBhZ2VTaXplKCk7CiAgICAgICAgIEFTU0VSVChzaXplLndpZHRoKCkuaXNGaXhl
ZCgpKTsKICAgICAgICAgQVNTRVJUKHNpemUuaGVpZ2h0KCkuaXNGaXhlZCgpKTsKLSAgICAgICAg
d2lkdGggPSBzaXplLndpZHRoKCkuY2FsY1ZhbHVlKDApOwotICAgICAgICBoZWlnaHQgPSBzaXpl
LmhlaWdodCgpLmNhbGNWYWx1ZSgwKTsKKyAgICAgICAgd2lkdGggPSBjYWxjdWxhdGVWYWx1ZShz
aXplLndpZHRoKCksIDApOworICAgICAgICBoZWlnaHQgPSBjYWxjdWxhdGVWYWx1ZShzaXplLmhl
aWdodCgpLCAwKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGRlZmF1bHQ6CkBAIC0xODA3
LDEwICsxODA3LDEwIEBAIHZvaWQgRG9jdW1lbnQ6OnBhZ2VTaXplQW5kTWFyZ2luc0luUGl4ZWwK
IAogICAgIC8vIFRoZSBwZXJjZW50YWdlIGlzIGNhbGN1bGF0ZWQgd2l0aCByZXNwZWN0IHRvIHRo
ZSB3aWR0aCBldmVuIGZvciBtYXJnaW4gdG9wIGFuZCBib3R0b20uCiAgICAgLy8gaHR0cDovL3d3
dy53My5vcmcvVFIvQ1NTMi9ib3guaHRtbCNtYXJnaW4tcHJvcGVydGllcwotICAgIG1hcmdpblRv
cCA9IHN0eWxlLT5tYXJnaW5Ub3AoKS5pc0F1dG8oKSA/IG1hcmdpblRvcCA6IHN0eWxlLT5tYXJn
aW5Ub3AoKS5jYWxjVmFsdWUod2lkdGgpOwotICAgIG1hcmdpblJpZ2h0ID0gc3R5bGUtPm1hcmdp
blJpZ2h0KCkuaXNBdXRvKCkgPyBtYXJnaW5SaWdodCA6IHN0eWxlLT5tYXJnaW5SaWdodCgpLmNh
bGNWYWx1ZSh3aWR0aCk7Ci0gICAgbWFyZ2luQm90dG9tID0gc3R5bGUtPm1hcmdpbkJvdHRvbSgp
LmlzQXV0bygpID8gbWFyZ2luQm90dG9tIDogc3R5bGUtPm1hcmdpbkJvdHRvbSgpLmNhbGNWYWx1
ZSh3aWR0aCk7Ci0gICAgbWFyZ2luTGVmdCA9IHN0eWxlLT5tYXJnaW5MZWZ0KCkuaXNBdXRvKCkg
PyBtYXJnaW5MZWZ0IDogc3R5bGUtPm1hcmdpbkxlZnQoKS5jYWxjVmFsdWUod2lkdGgpOworICAg
IG1hcmdpblRvcCA9IHN0eWxlLT5tYXJnaW5Ub3AoKS5pc0F1dG8oKSA/IG1hcmdpblRvcCA6IGNh
bGN1bGF0ZVZhbHVlKHN0eWxlLT5tYXJnaW5Ub3AoKSwgd2lkdGgpOworICAgIG1hcmdpblJpZ2h0
ID0gc3R5bGUtPm1hcmdpblJpZ2h0KCkuaXNBdXRvKCkgPyBtYXJnaW5SaWdodCA6IGNhbGN1bGF0
ZVZhbHVlKHN0eWxlLT5tYXJnaW5SaWdodCgpLCB3aWR0aCk7CisgICAgbWFyZ2luQm90dG9tID0g
c3R5bGUtPm1hcmdpbkJvdHRvbSgpLmlzQXV0bygpID8gbWFyZ2luQm90dG9tIDogY2FsY3VsYXRl
VmFsdWUoc3R5bGUtPm1hcmdpbkJvdHRvbSgpLCB3aWR0aCk7CisgICAgbWFyZ2luTGVmdCA9IHN0
eWxlLT5tYXJnaW5MZWZ0KCkuaXNBdXRvKCkgPyBtYXJnaW5MZWZ0IDogY2FsY3VsYXRlVmFsdWUo
c3R5bGUtPm1hcmdpbkxlZnQoKSwgd2lkdGgpOwogfQogCiBQYXNzUmVmUHRyPENTU1ZhbHVlUG9v
bD4gRG9jdW1lbnQ6OmNzc1ZhbHVlUG9vbCgpIGNvbnN0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxBcmVhRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MQXJlYUVsZW1lbnQuY3BwCShyZXZpc2lvbiAxMTA4MTQpCisrKyBTb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxBcmVhRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0NywyNSArMTQ3
LDI1IEBAIFBhdGggSFRNTEFyZWFFbGVtZW50OjpnZXRSZWdpb24oY29uc3QgTGEKICAgICAgICAg
Y2FzZSBQb2x5OgogICAgICAgICAgICAgaWYgKG1fY29vcmRzTGVuID49IDYpIHsKICAgICAgICAg
ICAgICAgICBpbnQgbnVtUG9pbnRzID0gbV9jb29yZHNMZW4gLyAyOwotICAgICAgICAgICAgICAg
IHBhdGgubW92ZVRvKEZsb2F0UG9pbnQobV9jb29yZHNbMF0uY2FsY01pblZhbHVlKHdpZHRoKSwg
bV9jb29yZHNbMV0uY2FsY01pblZhbHVlKGhlaWdodCkpKTsKKyAgICAgICAgICAgICAgICBwYXRo
Lm1vdmVUbyhGbG9hdFBvaW50KGNhbGN1bGF0ZU1pbmltdW1WYWx1ZShtX2Nvb3Jkc1swXSwgd2lk
dGgpLCBjYWxjdWxhdGVNaW5pbXVtVmFsdWUobV9jb29yZHNbMV0sIGhlaWdodCkpKTsKICAgICAg
ICAgICAgICAgICBmb3IgKGludCBpID0gMTsgaSA8IG51bVBvaW50czsgKytpKQotICAgICAgICAg
ICAgICAgICAgICBwYXRoLmFkZExpbmVUbyhGbG9hdFBvaW50KG1fY29vcmRzW2kgKiAyXS5jYWxj
TWluVmFsdWUod2lkdGgpLCBtX2Nvb3Jkc1tpICogMiArIDFdLmNhbGNNaW5WYWx1ZShoZWlnaHQp
KSk7CisgICAgICAgICAgICAgICAgICAgIHBhdGguYWRkTGluZVRvKEZsb2F0UG9pbnQoY2FsY3Vs
YXRlTWluaW11bVZhbHVlKG1fY29vcmRzW2kgKiAyXSwgd2lkdGgpLCBjYWxjdWxhdGVNaW5pbXVt
VmFsdWUobV9jb29yZHNbaSAqIDIgKyAxXSwgaGVpZ2h0KSkpOwogICAgICAgICAgICAgICAgIHBh
dGguY2xvc2VTdWJwYXRoKCk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgY2FzZSBDaXJjbGU6CiAgICAgICAgICAgICBpZiAobV9jb29yZHNMZW4gPj0gMykgewog
ICAgICAgICAgICAgICAgIExlbmd0aCByYWRpdXMgPSBtX2Nvb3Jkc1syXTsKLSAgICAgICAgICAg
ICAgICBpbnQgciA9IG1pbihyYWRpdXMuY2FsY01pblZhbHVlKHdpZHRoKSwgcmFkaXVzLmNhbGNN
aW5WYWx1ZShoZWlnaHQpKTsKLSAgICAgICAgICAgICAgICBwYXRoLmFkZEVsbGlwc2UoRmxvYXRS
ZWN0KG1fY29vcmRzWzBdLmNhbGNNaW5WYWx1ZSh3aWR0aCkgLSByLCBtX2Nvb3Jkc1sxXS5jYWxj
TWluVmFsdWUoaGVpZ2h0KSAtIHIsIDIgKiByLCAyICogcikpOworICAgICAgICAgICAgICAgIGlu
dCByID0gbWluKGNhbGN1bGF0ZU1pbmltdW1WYWx1ZShyYWRpdXMsIHdpZHRoKSwgY2FsY3VsYXRl
TWluaW11bVZhbHVlKHJhZGl1cywgaGVpZ2h0KSk7CisgICAgICAgICAgICAgICAgcGF0aC5hZGRF
bGxpcHNlKEZsb2F0UmVjdChjYWxjdWxhdGVNaW5pbXVtVmFsdWUobV9jb29yZHNbMF0sIHdpZHRo
KSAtIHIsIGNhbGN1bGF0ZU1pbmltdW1WYWx1ZShtX2Nvb3Jkc1sxXSwgaGVpZ2h0KSAtIHIsIDIg
KiByLCAyICogcikpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IGNhc2UgUmVjdDoKICAgICAgICAgICAgIGlmIChtX2Nvb3Jkc0xlbiA+PSA0KSB7Ci0gICAgICAg
ICAgICAgICAgaW50IHgwID0gbV9jb29yZHNbMF0uY2FsY01pblZhbHVlKHdpZHRoKTsKLSAgICAg
ICAgICAgICAgICBpbnQgeTAgPSBtX2Nvb3Jkc1sxXS5jYWxjTWluVmFsdWUoaGVpZ2h0KTsKLSAg
ICAgICAgICAgICAgICBpbnQgeDEgPSBtX2Nvb3Jkc1syXS5jYWxjTWluVmFsdWUod2lkdGgpOwot
ICAgICAgICAgICAgICAgIGludCB5MSA9IG1fY29vcmRzWzNdLmNhbGNNaW5WYWx1ZShoZWlnaHQp
OworICAgICAgICAgICAgICAgIGludCB4MCA9IGNhbGN1bGF0ZU1pbmltdW1WYWx1ZShtX2Nvb3Jk
c1swXSwgd2lkdGgpOworICAgICAgICAgICAgICAgIGludCB5MCA9IGNhbGN1bGF0ZU1pbmltdW1W
YWx1ZShtX2Nvb3Jkc1sxXSwgaGVpZ2h0KTsKKyAgICAgICAgICAgICAgICBpbnQgeDEgPSBjYWxj
dWxhdGVNaW5pbXVtVmFsdWUobV9jb29yZHNbMl0sIHdpZHRoKTsKKyAgICAgICAgICAgICAgICBp
bnQgeTEgPSBjYWxjdWxhdGVNaW5pbXVtVmFsdWUobV9jb29yZHNbM10sIGhlaWdodCk7CiAgICAg
ICAgICAgICAgICAgcGF0aC5hZGRSZWN0KEZsb2F0UmVjdCh4MCwgeTAsIHgxIC0geDAsIHkxIC0g
eTApKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwpJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vQ2FsY3VsYXRpb25WYWx1ZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL0NhbGN1bGF0aW9uVmFsdWUuaAkocmV2aXNpb24gMTEwODE0KQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ2FsY3VsYXRpb25WYWx1ZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zMiw2ICszMiw3IEBACiAjZGVmaW5lIENhbGN1bGF0aW9uVmFsdWVfaAogCiAjaW5jbHVk
ZSAiTGVuZ3RoLmgiCisjaW5jbHVkZSAiTGVuZ3RoRnVuY3Rpb25zLmgiCiAjaW5jbHVkZSA8d3Rm
L093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Jl
ZkNvdW50ZWQuaD4KQEAgLTEwMSw3ICsxMDIsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIGZs
b2F0IGV2YWx1YXRlKGZsb2F0IG1heFZhbHVlKSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0dXJu
IG1fbGVuZ3RoLmNhbGNGbG9hdFZhbHVlKG1heFZhbHVlKTsKKyAgICAgICAgcmV0dXJuIGNhbGN1
bGF0ZUZsb2F0VmFsdWUobV9sZW5ndGgsIG1heFZhbHVlKTsKICAgICB9CiAgICAgCiBwcml2YXRl
OgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGVuZ3RoLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGVuZ3RoLmgJKHJldmlzaW9uIDExMDgxNCkKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xlbmd0aC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNTksOTYg
KzE1OSw2IEBAIHB1YmxpYzoKICAgICAgICAgKnRoaXMgPSBMZW5ndGgodmFsdWUsIEZpeGVkKTsK
ICAgICB9CiAKLSAgICBpbnQgY2FsY1ZhbHVlKGludCBtYXhWYWx1ZSwgYm9vbCByb3VuZFBlcmNl
bnRhZ2VzID0gZmFsc2UpIGNvbnN0Ci0gICAgewotICAgICAgICBzd2l0Y2ggKHR5cGUoKSkgewot
ICAgICAgICAgICAgY2FzZSBGaXhlZDoKLSAgICAgICAgICAgIGNhc2UgUGVyY2VudDoKLSAgICAg
ICAgICAgIGNhc2UgQ2FsY3VsYXRlZDoKLSAgICAgICAgICAgICAgICByZXR1cm4gY2FsY01pblZh
bHVlKG1heFZhbHVlLCByb3VuZFBlcmNlbnRhZ2VzKTsKLSAgICAgICAgICAgIGNhc2UgQXV0bzoK
LSAgICAgICAgICAgICAgICByZXR1cm4gbWF4VmFsdWU7Ci0gICAgICAgICAgICBjYXNlIFJlbGF0
aXZlOgotICAgICAgICAgICAgY2FzZSBJbnRyaW5zaWM6Ci0gICAgICAgICAgICBjYXNlIE1pbklu
dHJpbnNpYzoKLSAgICAgICAgICAgIGNhc2UgVW5kZWZpbmVkOgotICAgICAgICAgICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICB9
Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4gMDsKLSAgICB9
Ci0KLSAgICBpbnQgY2FsY01pblZhbHVlKGludCBtYXhWYWx1ZSwgYm9vbCByb3VuZFBlcmNlbnRh
Z2VzID0gZmFsc2UpIGNvbnN0Ci0gICAgewotICAgICAgICBzd2l0Y2ggKHR5cGUoKSkgewotICAg
ICAgICAgICAgY2FzZSBGaXhlZDoKLSAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWUoKTsKLSAg
ICAgICAgICAgIGNhc2UgUGVyY2VudDoKLSAgICAgICAgICAgICAgICBpZiAocm91bmRQZXJjZW50
YWdlcykKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4ocm91bmQo
bWF4VmFsdWUgKiBwZXJjZW50KCkgLyAxMDAuMGYpKTsKLSAgICAgICAgICAgICAgICAvLyBEb24n
dCByZW1vdmUgdGhlIGV4dHJhIGNhc3QgdG8gZmxvYXQuIEl0IGlzIG5lZWRlZCBmb3Igcm91bmRp
bmcgb24gMzItYml0IEludGVsIG1hY2hpbmVzIHRoYXQgdXNlIHRoZSBGUFUgc3RhY2suCi0gICAg
ICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4oc3RhdGljX2Nhc3Q8ZmxvYXQ+KG1h
eFZhbHVlICogcGVyY2VudCgpIC8gMTAwLjBmKSk7Ci0gICAgICAgICAgICBjYXNlIENhbGN1bGF0
ZWQ6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG5vbk5hbkNhbGN1bGF0ZWRWYWx1ZShtYXhWYWx1
ZSk7Ci0gICAgICAgICAgICBjYXNlIEF1dG86Ci0gICAgICAgICAgICAgICAgcmV0dXJuIDA7Ci0g
ICAgICAgICAgICBjYXNlIFJlbGF0aXZlOgotICAgICAgICAgICAgY2FzZSBJbnRyaW5zaWM6Ci0g
ICAgICAgICAgICBjYXNlIE1pbkludHJpbnNpYzoKLSAgICAgICAgICAgIGNhc2UgVW5kZWZpbmVk
OgotICAgICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAgICAg
IHJldHVybiAwOwotICAgICAgICB9Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAg
ICAgICByZXR1cm4gMDsKLSAgICB9Ci0KLSAgICAvLyBGSVhNRTogd2hlbiBzdWJwaXhlbCBsYXlv
dXQgaXMgc3VwcG9ydGVkIHRoaXMgY29weSBvZiBjYWxjRmxvYXRWYWx1ZSgpIGNhbiBiZSByZW1v
dmVkLiBTZWUgYnVnIDcxMTQzLgotICAgIGZsb2F0IGNhbGNGbG9hdFZhbHVlKGludCBtYXhWYWx1
ZSkgY29uc3QKLSAgICB7Ci0gICAgICAgIHN3aXRjaCAodHlwZSgpKSB7Ci0gICAgICAgICAgICBj
YXNlIEZpeGVkOgotICAgICAgICAgICAgICAgIHJldHVybiBnZXRGbG9hdFZhbHVlKCk7Ci0gICAg
ICAgICAgICBjYXNlIFBlcmNlbnQ6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0
PGZsb2F0PihtYXhWYWx1ZSAqIHBlcmNlbnQoKSAvIDEwMC4wZik7Ci0gICAgICAgICAgICBjYXNl
IEF1dG86Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGZsb2F0PihtYXhWYWx1
ZSk7Ci0gICAgICAgICAgICBjYXNlIENhbGN1bGF0ZWQ6Ci0gICAgICAgICAgICAgICAgcmV0dXJu
IG5vbk5hbkNhbGN1bGF0ZWRWYWx1ZShtYXhWYWx1ZSk7ICAgICAgICAgICAgICAgIAotICAgICAg
ICAgICAgY2FzZSBSZWxhdGl2ZToKLSAgICAgICAgICAgIGNhc2UgSW50cmluc2ljOgotICAgICAg
ICAgICAgY2FzZSBNaW5JbnRyaW5zaWM6Ci0gICAgICAgICAgICBjYXNlIFVuZGVmaW5lZDoKLSAg
ICAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgICAgICByZXR1
cm4gMDsKLSAgICAgICAgfQotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAg
cmV0dXJuIDA7Ci0gICAgfQotCi0gICAgZmxvYXQgY2FsY0Zsb2F0VmFsdWUoZmxvYXQgbWF4VmFs
dWUpIGNvbnN0Ci0gICAgewotICAgICAgICBzd2l0Y2ggKHR5cGUoKSkgewotICAgICAgICBjYXNl
IEZpeGVkOgotICAgICAgICAgICAgcmV0dXJuIGdldEZsb2F0VmFsdWUoKTsKLSAgICAgICAgY2Fz
ZSBQZXJjZW50OgotICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGZsb2F0PihtYXhWYWx1
ZSAqIHBlcmNlbnQoKSAvIDEwMC4wZik7Ci0gICAgICAgIGNhc2UgQXV0bzoKLSAgICAgICAgICAg
IHJldHVybiBzdGF0aWNfY2FzdDxmbG9hdD4obWF4VmFsdWUpOwotICAgICAgICBjYXNlIENhbGN1
bGF0ZWQ6Ci0gICAgICAgICAgICByZXR1cm4gbm9uTmFuQ2FsY3VsYXRlZFZhbHVlKG1heFZhbHVl
KTsKLSAgICAgICAgY2FzZSBSZWxhdGl2ZToKLSAgICAgICAgY2FzZSBJbnRyaW5zaWM6Ci0gICAg
ICAgIGNhc2UgTWluSW50cmluc2ljOgotICAgICAgICBjYXNlIFVuZGVmaW5lZDoKLSAgICAgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAg
IH0KLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybiAwOwotICAg
IH0KLQogICAgIGJvb2wgaXNVbmRlZmluZWQoKSBjb25zdCB7IHJldHVybiB0eXBlKCkgPT0gVW5k
ZWZpbmVkOyB9CiAKICAgICAvLyBGSVhNRSBjYWxjOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9ODAzNTcuIEEgY2FsY3VsYXRlZCBMZW5ndGggCkBAIC0zMTIsMTkgKzIy
MiwxOSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBMZW5ndGgoV2ViQ29yZTo6YmxlbmQoZnJv
bVZhbHVlLCB0b1ZhbHVlLCBwcm9ncmVzcyksIHJlc3VsdFR5cGUpOwogICAgIH0KIAotcHJpdmF0
ZToKLSAgICBpbnQgZ2V0SW50VmFsdWUoKSBjb25zdAorICAgIGZsb2F0IGdldEZsb2F0VmFsdWUo
KSBjb25zdAogICAgIHsKICAgICAgICAgQVNTRVJUKCFpc1VuZGVmaW5lZCgpKTsKLSAgICAgICAg
cmV0dXJuIG1faXNGbG9hdCA/IHN0YXRpY19jYXN0PGludD4obV9mbG9hdFZhbHVlKSA6IG1faW50
VmFsdWU7CisgICAgICAgIHJldHVybiBtX2lzRmxvYXQgPyBtX2Zsb2F0VmFsdWUgOiBtX2ludFZh
bHVlOwogICAgIH0KKyAgICBmbG9hdCBub25OYW5DYWxjdWxhdGVkVmFsdWUoaW50IG1heFZhbHVl
KSBjb25zdDsKIAotICAgIGZsb2F0IGdldEZsb2F0VmFsdWUoKSBjb25zdAorcHJpdmF0ZToKKyAg
ICBpbnQgZ2V0SW50VmFsdWUoKSBjb25zdAogICAgIHsKICAgICAgICAgQVNTRVJUKCFpc1VuZGVm
aW5lZCgpKTsKLSAgICAgICAgcmV0dXJuIG1faXNGbG9hdCA/IG1fZmxvYXRWYWx1ZSA6IG1faW50
VmFsdWU7CisgICAgICAgIHJldHVybiBtX2lzRmxvYXQgPyBzdGF0aWNfY2FzdDxpbnQ+KG1fZmxv
YXRWYWx1ZSkgOiBtX2ludFZhbHVlOwogICAgIH0KLQogICAgIHZvaWQgaW5pdEZyb21MZW5ndGgo
Y29uc3QgTGVuZ3RoICZsZW5ndGgpIAogICAgIHsKICAgICAgICAgbV9xdWlyayA9IGxlbmd0aC5t
X3F1aXJrOwpAQCAtMzM5LDggKzI0OSw3IEBAIHByaXZhdGU6CiAgICAgICAgIGlmIChpc0NhbGN1
bGF0ZWQoKSkKICAgICAgICAgICAgIGluY3JlbWVudENhbGN1bGF0ZWRSZWYoKTsKICAgICB9Ci0g
ICAgCi0gICAgZmxvYXQgbm9uTmFuQ2FsY3VsYXRlZFZhbHVlKGludCBtYXhWYWx1ZSkgY29uc3Q7
CisKICAgICBpbnQgY2FsY3VsYXRpb25IYW5kbGUoKSBjb25zdAogICAgIHsKICAgICAgICAgQVNT
RVJUKGlzQ2FsY3VsYXRlZCgpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhL21hYy9QbGF0Zm9ybUNBQW5pbWF0aW9uTWFjLm1tCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL21hYy9QbGF0Zm9ybUNBQW5pbWF0aW9uTWFj
Lm1tCShyZXZpc2lvbiAxMTA4MTQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYS9tYWMvUGxhdGZvcm1DQUFuaW1hdGlvbk1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMzAs
NiArMzAsNyBAQAogI2ltcG9ydCAiUGxhdGZvcm1DQUFuaW1hdGlvbi5oIgogCiAjaW1wb3J0ICJG
bG9hdENvbnZlcnNpb24uaCIKKyNpbXBvcnQgIkxlbmd0aEZ1bmN0aW9ucy5oIgogI2ltcG9ydCAi
UGxhdGZvcm1TdHJpbmcuaCIKICNpbXBvcnQgIlRpbWluZ0Z1bmN0aW9uLmgiCiAjaW1wb3J0IDxR
dWFydHpDb3JlL1F1YXJ0ekNvcmUuaD4KQEAgLTUwMiw3ICs1MDMsNyBAQCBzdGF0aWMgUmV0YWlu
UHRyPGlkPiBmaWx0ZXJWYWx1ZUZvck9wZXJhCiAKICAgICAgICAgaWYgKCFvcGVyYXRpb24tPmlz
RGVmYXVsdCgpKSB7CiAgICAgICAgICAgICBjb25zdCBCbHVyRmlsdGVyT3BlcmF0aW9uKiBvcCA9
IHN0YXRpY19jYXN0PGNvbnN0IEJsdXJGaWx0ZXJPcGVyYXRpb24qPihvcGVyYXRpb24pOwotICAg
ICAgICAgICAgYW1vdW50ID0gb3AtPnN0ZERldmlhdGlvbigpLmNhbGNGbG9hdFZhbHVlKDApOwor
ICAgICAgICAgICAgYW1vdW50ID0gY2FsY3VsYXRlRmxvYXRWYWx1ZShvcC0+c3RkRGV2aWF0aW9u
KCksIDApOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICB2YWx1ZS5hZG9wdE5TKFtbTlNO
dW1iZXIgbnVtYmVyV2l0aERvdWJsZTphbW91bnRdIHJldGFpbl0pOwpJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvbWFjL1BsYXRmb3JtQ0FMYXllck1hYy5tbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9tYWMvUGxhdGZv
cm1DQUxheWVyTWFjLm1tCShyZXZpc2lvbiAxMTA4MTQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYS9tYWMvUGxhdGZvcm1DQUxheWVyTWFjLm1tCSh3b3JraW5nIGNvcHkp
CkBAIC0zNCw2ICszNCw3IEBACiAjaW1wb3J0ICJGbG9hdENvbnZlcnNpb24uaCIKICNpbXBvcnQg
IkdyYXBoaWNzQ29udGV4dC5oIgogI2ltcG9ydCAiR3JhcGhpY3NMYXllckNBLmgiCisjaW1wb3J0
ICJMZW5ndGhGdW5jdGlvbnMuaCIKICNpbXBvcnQgIldlYkxheWVyLmgiCiAjaW1wb3J0ICJXZWJU
aWxlZExheWVyLmgiCiAjaW1wb3J0ICJXZWJUaWxlQ2FjaGVMYXllci5oIgpAQCAtODIzLDcgKzgy
NCw3IEBAIHZvaWQgUGxhdGZvcm1DQUxheWVyOjpzZXRGaWx0ZXJzKGNvbnN0IEYKICAgICAgICAg
ICAgIGNvbnN0IEJsdXJGaWx0ZXJPcGVyYXRpb24qIG9wID0gc3RhdGljX2Nhc3Q8Y29uc3QgQmx1
ckZpbHRlck9wZXJhdGlvbio+KGZpbHRlck9wZXJhdGlvbik7CiAgICAgICAgICAgICBDSUZpbHRl
ciogY2FGaWx0ZXIgPSBbQ0lGaWx0ZXIgZmlsdGVyV2l0aE5hbWU6QCJDSUdhdXNzaWFuQmx1ciJd
OwogICAgICAgICAgICAgW2NhRmlsdGVyIHNldERlZmF1bHRzXTsKLSAgICAgICAgICAgIFtjYUZp
bHRlciBzZXRWYWx1ZTpbTlNOdW1iZXIgbnVtYmVyV2l0aEZsb2F0Om9wLT5zdGREZXZpYXRpb24o
KS5jYWxjRmxvYXRWYWx1ZSgwKV0gZm9yS2V5OkAiaW5wdXRSYWRpdXMiXTsKKyAgICAgICAgICAg
IFtjYUZpbHRlciBzZXRWYWx1ZTpbTlNOdW1iZXIgbnVtYmVyV2l0aEZsb2F0OmNhbGN1bGF0ZUZs
b2F0VmFsdWUob3AtPnN0ZERldmlhdGlvbigpLCAwKV0gZm9yS2V5OkAiaW5wdXRSYWRpdXMiXTsK
ICAgICAgICAgICAgIFtjYUZpbHRlciBzZXROYW1lOmZpbHRlck5hbWVdOwogICAgICAgICAgICAg
W2FycmF5LmdldCgpIGFkZE9iamVjdDpjYUZpbHRlcl07CiAgICAgICAgICAgICBicmVhazsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVy
U3VyZmFjZUZpbHRlcnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyU3VyZmFjZUZpbHRlcnMuY3BwCShyZXZpc2lv
biAxMTA4MTQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1JlbmRlclN1cmZhY2VGaWx0ZXJzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAs
NyBAQAogI2luY2x1ZGUgImNjL0NDUmVuZGVyU3VyZmFjZUZpbHRlcnMuaCIKIAogI2luY2x1ZGUg
IkdyYXBoaWNzQ29udGV4dDNELmgiCisjaW5jbHVkZSAiTGVuZ3RoRnVuY3Rpb25zLmgiCiAjaW5j
bHVkZSAiU2tCbHVySW1hZ2VGaWx0ZXIuaCIKICNpbmNsdWRlICJTa0NhbnZhcy5oIgogI2luY2x1
ZGUgIlNrQ29sb3JNYXRyaXhGaWx0ZXIuaCIKQEAgLTI2OSw4ICsyNzAsOCBAQCBTa0JpdG1hcCBD
Q1JlbmRlclN1cmZhY2VGaWx0ZXJzOjphcHBseShjCiAgICAgICAgIH0KICAgICAgICAgY2FzZSBG
aWx0ZXJPcGVyYXRpb246OkJMVVI6IHsKICAgICAgICAgICAgIGNvbnN0IEJsdXJGaWx0ZXJPcGVy
YXRpb24qIG9wID0gc3RhdGljX2Nhc3Q8Y29uc3QgQmx1ckZpbHRlck9wZXJhdGlvbio+KGZpbHRl
ck9wZXJhdGlvbik7Ci0gICAgICAgICAgICBmbG9hdCBzdGRYID0gb3AtPnN0ZERldmlhdGlvbigp
LmNhbGNGbG9hdFZhbHVlKDApOwotICAgICAgICAgICAgZmxvYXQgc3RkWSA9IG9wLT5zdGREZXZp
YXRpb24oKS5jYWxjRmxvYXRWYWx1ZSgxKTsKKyAgICAgICAgICAgIGZsb2F0IHN0ZFggPSBjYWxj
dWxhdGVGbG9hdFZhbHVlKG9wLT5zdGREZXZpYXRpb24oKSwgMCk7CisgICAgICAgICAgICBmbG9h
dCBzdGRZID0gY2FsY3VsYXRlRmxvYXRWYWx1ZShvcC0+c3RkRGV2aWF0aW9uKCksIDEpOwogICAg
ICAgICAgICAgU2tBdXRvVFVucmVmPFNrSW1hZ2VGaWx0ZXI+IGZpbHRlcihuZXcgU2tCbHVySW1h
Z2VGaWx0ZXIoc3RkWCwgc3RkWSkpOwogICAgICAgICAgICAgU2tQYWludCBwYWludDsKICAgICAg
ICAgICAgIHBhaW50LnNldEltYWdlRmlsdGVyKGZpbHRlci5nZXQoKSk7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbnMuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmls
dGVyT3BlcmF0aW9ucy5jcHAJKHJldmlzaW9uIDExMDgxNCkKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9ucy5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkZFR2F1c3NpYW5CbHVyLmgiCiAjaW5j
bHVkZSAiSW50U2l6ZS5oIgorI2luY2x1ZGUgIkxlbmd0aEZ1bmN0aW9ucy5oIgogCiAjaWYgRU5B
QkxFKENTU19GSUxURVJTKQogCkBAIC0xMDcsNyArMTA4LDcgQEAgdm9pZCBGaWx0ZXJPcGVyYXRp
b25zOjpnZXRPdXRzZXRzKExheW91dAogICAgICAgICBzd2l0Y2ggKGZpbHRlck9wZXJhdGlvbi0+
Z2V0T3BlcmF0aW9uVHlwZSgpKSB7CiAgICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpCTFVS
OiB7CiAgICAgICAgICAgICBCbHVyRmlsdGVyT3BlcmF0aW9uKiBibHVyT3BlcmF0aW9uID0gc3Rh
dGljX2Nhc3Q8Qmx1ckZpbHRlck9wZXJhdGlvbio+KGZpbHRlck9wZXJhdGlvbik7Ci0gICAgICAg
ICAgICBmbG9hdCBzdGREZXZpYXRpb24gPSBibHVyT3BlcmF0aW9uLT5zdGREZXZpYXRpb24oKS5j
YWxjRmxvYXRWYWx1ZSgwKTsKKyAgICAgICAgICAgIGZsb2F0IHN0ZERldmlhdGlvbiA9IGNhbGN1
bGF0ZUZsb2F0VmFsdWUoYmx1ck9wZXJhdGlvbi0+c3RkRGV2aWF0aW9uKCksIDApOwogICAgICAg
ICAgICAgSW50U2l6ZSBvdXRzZXQgPSBvdXRzZXRTaXplRm9yQmx1cihzdGREZXZpYXRpb24pOwog
ICAgICAgICAgICAgdG9wICs9IG91dHNldC5oZWlnaHQoKTsKICAgICAgICAgICAgIHJpZ2h0ICs9
IG91dHNldC53aWR0aCgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dHJhbnNmb3Jtcy9QZXJzcGVjdGl2ZVRyYW5zZm9ybU9wZXJhdGlvbi5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9QZXJzcGVjdGl2
ZVRyYW5zZm9ybU9wZXJhdGlvbi5jcHAJKHJldmlzaW9uIDExMDgxNCkKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvUGVyc3BlY3RpdmVUcmFuc2Zvcm1PcGVy
YXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw3ICszOSw3IEBAIFBhc3NSZWZQdHI8VHJh
bnNmb3JtT3BlcmF0aW9uPiBQZXJzcGVjdGkKICAgICAgICAgcmV0dXJuIHRoaXM7CiAgICAgCiAg
ICAgaWYgKGJsZW5kVG9JZGVudGl0eSkgewotICAgICAgICBkb3VibGUgcCA9IG1fcC5jYWxjRmxv
YXRWYWx1ZSgxKTsKKyAgICAgICAgZG91YmxlIHAgPSBjYWxjdWxhdGVGbG9hdFZhbHVlKG1fcCwg
MSk7CiAgICAgICAgIHAgPSBXZWJDb3JlOjpibGVuZChwLCAxLjAsIHByb2dyZXNzKTsgLy8gRklY
TUU6IHRoaXMgc2VlbXMgd3JvbmcuIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD01MjcwMAogICAgICAgICByZXR1cm4gUGVyc3BlY3RpdmVUcmFuc2Zvcm1PcGVyYXRpb246
OmNyZWF0ZShMZW5ndGgoY2xhbXBUb1Bvc2l0aXZlSW50ZWdlcihwKSwgRml4ZWQpKTsKICAgICB9
CkBAIC01MCw4ICs1MCw4IEBAIFBhc3NSZWZQdHI8VHJhbnNmb3JtT3BlcmF0aW9uPiBQZXJzcGVj
dGkKIAogICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGZyb21UOwogICAgIFRyYW5zZm9ybWF0aW9u
TWF0cml4IHRvVDsKLSAgICBmcm9tVC5hcHBseVBlcnNwZWN0aXZlKGZyb21QLmNhbGNGbG9hdFZh
bHVlKDEpKTsKLSAgICB0b1QuYXBwbHlQZXJzcGVjdGl2ZSh0b1AuY2FsY0Zsb2F0VmFsdWUoMSkp
OworICAgIGZyb21ULmFwcGx5UGVyc3BlY3RpdmUoY2FsY3VsYXRlRmxvYXRWYWx1ZShmcm9tUCwg
MSkpOworICAgIHRvVC5hcHBseVBlcnNwZWN0aXZlKGNhbGN1bGF0ZUZsb2F0VmFsdWUodG9QLCAx
KSk7CiAgICAgdG9ULmJsZW5kKGZyb21ULCBwcm9ncmVzcyk7CiAgICAgVHJhbnNmb3JtYXRpb25N
YXRyaXg6OkRlY29tcG9zZWRUeXBlIGRlY29tcDsKICAgICB0b1QuZGVjb21wb3NlKGRlY29tcCk7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1BlcnNw
ZWN0aXZlVHJhbnNmb3JtT3BlcmF0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9QZXJzcGVjdGl2ZVRyYW5zZm9ybU9wZXJhdGlv
bi5oCShyZXZpc2lvbiAxMTA4MTQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90cmFuc2Zvcm1zL1BlcnNwZWN0aXZlVHJhbnNmb3JtT3BlcmF0aW9uLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTI3LDYgKzI3LDcgQEAKICNkZWZpbmUgUGVyc3BlY3RpdmVUcmFuc2Zvcm1PcGVyYXRp
b25faAogCiAjaW5jbHVkZSAiTGVuZ3RoLmgiCisjaW5jbHVkZSAiTGVuZ3RoRnVuY3Rpb25zLmgi
CiAjaW5jbHVkZSAiVHJhbnNmb3JtT3BlcmF0aW9uLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
QEAgLTQxLDcgKzQyLDcgQEAgcHVibGljOgogICAgIExlbmd0aCBwZXJzcGVjdGl2ZSgpIGNvbnN0
IHsgcmV0dXJuIG1fcDsgfQogICAgIAogcHJpdmF0ZToKLSAgICB2aXJ0dWFsIGJvb2wgaXNJZGVu
dGl0eSgpIGNvbnN0IHsgcmV0dXJuIG1fcC5jYWxjRmxvYXRWYWx1ZSgxKSA9PSAwOyB9CisgICAg
dmlydHVhbCBib29sIGlzSWRlbnRpdHkoKSBjb25zdCB7IHJldHVybiAhY2FsY3VsYXRlRmxvYXRW
YWx1ZShtX3AsIDEpOyB9CiAgICAgdmlydHVhbCBPcGVyYXRpb25UeXBlIGdldE9wZXJhdGlvblR5
cGUoKSBjb25zdCB7IHJldHVybiBQRVJTUEVDVElWRTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc1Nh
bWVUeXBlKGNvbnN0IFRyYW5zZm9ybU9wZXJhdGlvbiYgbykgY29uc3QgeyByZXR1cm4gby5nZXRP
cGVyYXRpb25UeXBlKCkgPT0gUEVSU1BFQ1RJVkU7IH0KIApAQCAtNTUsNyArNTYsNyBAQCBwcml2
YXRlOgogCiAgICAgdmlydHVhbCBib29sIGFwcGx5KFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFu
c2Zvcm0sIGNvbnN0IEZsb2F0U2l6ZSYpIGNvbnN0CiAgICAgewotICAgICAgICB0cmFuc2Zvcm0u
YXBwbHlQZXJzcGVjdGl2ZShtX3AuY2FsY0Zsb2F0VmFsdWUoMSkpOworICAgICAgICB0cmFuc2Zv
cm0uYXBwbHlQZXJzcGVjdGl2ZShjYWxjdWxhdGVGbG9hdFZhbHVlKG1fcCwgMSkpOwogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zbGF0ZVRyYW5zZm9ybU9wZXJhdGlvbi5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNs
YXRlVHJhbnNmb3JtT3BlcmF0aW9uLmgJKHJldmlzaW9uIDExMDgxNCkKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNsYXRlVHJhbnNmb3JtT3BlcmF0
aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDcgQEAKICNkZWZpbmUgVHJhbnNsYXRl
VHJhbnNmb3JtT3BlcmF0aW9uX2gKIAogI2luY2x1ZGUgIkxlbmd0aC5oIgorI2luY2x1ZGUgIkxl
bmd0aEZ1bmN0aW9ucy5oIgogI2luY2x1ZGUgIlRyYW5zZm9ybU9wZXJhdGlvbi5oIgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CkBAIC00MiwxNiArNDMsMTYgQEAgcHVibGljOgogICAgICAgICByZXR1
cm4gYWRvcHRSZWYobmV3IFRyYW5zbGF0ZVRyYW5zZm9ybU9wZXJhdGlvbih0eCwgdHksIHR6LCB0
eXBlKSk7CiAgICAgfQogCi0gICAgZG91YmxlIHgoY29uc3QgRmxvYXRTaXplJiBib3JkZXJCb3hT
aXplKSBjb25zdCB7IHJldHVybiBtX3guY2FsY0Zsb2F0VmFsdWUoYm9yZGVyQm94U2l6ZS53aWR0
aCgpKTsgfQotICAgIGRvdWJsZSB5KGNvbnN0IEZsb2F0U2l6ZSYgYm9yZGVyQm94U2l6ZSkgY29u
c3QgeyByZXR1cm4gbV95LmNhbGNGbG9hdFZhbHVlKGJvcmRlckJveFNpemUuaGVpZ2h0KCkpOyB9
Ci0gICAgZG91YmxlIHooY29uc3QgRmxvYXRTaXplJikgY29uc3QgeyByZXR1cm4gbV96LmNhbGNG
bG9hdFZhbHVlKDEpOyB9CisgICAgZG91YmxlIHgoY29uc3QgRmxvYXRTaXplJiBib3JkZXJCb3hT
aXplKSBjb25zdCB7IHJldHVybiBjYWxjdWxhdGVGbG9hdFZhbHVlKG1feCwgYm9yZGVyQm94U2l6
ZS53aWR0aCgpKTsgfQorICAgIGRvdWJsZSB5KGNvbnN0IEZsb2F0U2l6ZSYgYm9yZGVyQm94U2l6
ZSkgY29uc3QgeyByZXR1cm4gY2FsY3VsYXRlRmxvYXRWYWx1ZShtX3ksIGJvcmRlckJveFNpemUu
aGVpZ2h0KCkpOyB9CisgICAgZG91YmxlIHooY29uc3QgRmxvYXRTaXplJikgY29uc3QgeyByZXR1
cm4gY2FsY3VsYXRlRmxvYXRWYWx1ZShtX3osIDEpOyB9CiAKICAgICBMZW5ndGggeCgpIGNvbnN0
IHsgcmV0dXJuIG1feDsgfQogICAgIExlbmd0aCB5KCkgY29uc3QgeyByZXR1cm4gbV95OyB9CiAg
ICAgTGVuZ3RoIHooKSBjb25zdCB7IHJldHVybiBtX3o7IH0KIAogcHJpdmF0ZToKLSAgICB2aXJ0
dWFsIGJvb2wgaXNJZGVudGl0eSgpIGNvbnN0IHsgcmV0dXJuIG1feC5jYWxjRmxvYXRWYWx1ZSgx
KSA9PSAwICYmIG1feS5jYWxjRmxvYXRWYWx1ZSgxKSA9PSAwICYmIG1fei5jYWxjRmxvYXRWYWx1
ZSgxKSA9PSAwOyB9CisgICAgdmlydHVhbCBib29sIGlzSWRlbnRpdHkoKSBjb25zdCB7IHJldHVy
biAhY2FsY3VsYXRlRmxvYXRWYWx1ZShtX3gsIDEpICYmICFjYWxjdWxhdGVGbG9hdFZhbHVlKG1f
eSwgMSkgJiYgIWNhbGN1bGF0ZUZsb2F0VmFsdWUobV96LCAxKTsgfQogCiAgICAgdmlydHVhbCBP
cGVyYXRpb25UeXBlIGdldE9wZXJhdGlvblR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0K
ICAgICB2aXJ0dWFsIGJvb2wgaXNTYW1lVHlwZShjb25zdCBUcmFuc2Zvcm1PcGVyYXRpb24mIG8p
IGNvbnN0IHsgcmV0dXJuIG8uZ2V0T3BlcmF0aW9uVHlwZSgpID09IG1fdHlwZTsgfQpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1BvcHVwTWVudVdpbi5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1BvcHVwTWVudVdpbi5jcHAJKHJldmlzaW9u
IDExMDgxNCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9Qb3B1cE1lbnVXaW4uY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgi
CiAjaW5jbHVkZSAiSFduZERDLmgiCiAjaW5jbHVkZSAiSG9zdFdpbmRvdy5oIgorI2luY2x1ZGUg
Ikxlbmd0aEZ1bmN0aW9ucy5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJQbGF0Zm9y
bU1vdXNlRXZlbnQuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVNjcmVlbi5oIgpAQCAtNjU0LDcgKzY1
NSw3IEBAIHZvaWQgUG9wdXBNZW51V2luOjpwYWludChjb25zdCBJbnRSZWN0JiAKICAgICAgICAg
aWYgKGl0ZW1TdHlsZS5pc1Zpc2libGUoKSkgewogICAgICAgICAgICAgaW50IHRleHRYID0gbWF4
KDAsIGNsaWVudCgpLT5jbGllbnRQYWRkaW5nTGVmdCgpIC0gY2xpZW50KCktPmNsaWVudEluc2V0
TGVmdCgpKTsKICAgICAgICAgICAgIGlmIChSZW5kZXJUaGVtZTo6ZGVmYXVsdFRoZW1lKCktPnBv
cHVwT3B0aW9uU3VwcG9ydHNUZXh0SW5kZW50KCkgJiYgaXRlbVN0eWxlLnRleHREaXJlY3Rpb24o
KSA9PSBMVFIpCi0gICAgICAgICAgICAgICAgdGV4dFggKz0gaXRlbVN0eWxlLnRleHRJbmRlbnQo
KS5jYWxjTWluVmFsdWUoaXRlbVJlY3Qud2lkdGgoKSk7CisgICAgICAgICAgICAgICAgdGV4dFgg
Kz0gY2FsY3VsYXRlTWluaW11bVZhbHVlKGl0ZW1TdHlsZS50ZXh0SW5kZW50KCksIGl0ZW1SZWN0
LndpZHRoKCkpOwogICAgICAgICAgICAgaW50IHRleHRZID0gaXRlbVJlY3QueSgpICsgaXRlbUZv
bnQuZm9udE1ldHJpY3MoKS5hc2NlbnQoKSArIChpdGVtUmVjdC5oZWlnaHQoKSAtIGl0ZW1Gb250
LmZvbnRNZXRyaWNzKCkuaGVpZ2h0KCkpIC8gMjsKICAgICAgICAgICAgIGNvbnRleHQuZHJhd0Jp
ZGlUZXh0KGl0ZW1Gb250LCB0ZXh0UnVuLCBJbnRQb2ludCh0ZXh0WCwgdGV4dFkpKTsKICAgICAg
ICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0F1dG9UYWJsZUxheW91dC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0F1dG9UYWJsZUxheW91dC5j
cHAJKHJldmlzaW9uIDExMDgxNCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9BdXRvVGFi
bGVMYXlvdXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NTEsNyArNTUxLDcgQEAgdm9pZCBBdXRv
VGFibGVMYXlvdXQ6OmxheW91dCgpCiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbkVm
ZkNvbHM7ICsraSkgewogICAgICAgICAgICAgTGVuZ3RoJiBsb2dpY2FsV2lkdGggPSBtX2xheW91
dFN0cnVjdFtpXS5lZmZlY3RpdmVMb2dpY2FsV2lkdGg7CiAgICAgICAgICAgICBpZiAobG9naWNh
bFdpZHRoLmlzUGVyY2VudCgpKSB7Ci0gICAgICAgICAgICAgICAgaW50IGNlbGxMb2dpY2FsV2lk
dGggPSBtYXg8aW50PihtX2xheW91dFN0cnVjdFtpXS5lZmZlY3RpdmVNaW5Mb2dpY2FsV2lkdGgs
IGxvZ2ljYWxXaWR0aC5jYWxjTWluVmFsdWUodGFibGVMb2dpY2FsV2lkdGgpKTsKKyAgICAgICAg
ICAgICAgICBpbnQgY2VsbExvZ2ljYWxXaWR0aCA9IG1heDxpbnQ+KG1fbGF5b3V0U3RydWN0W2ld
LmVmZmVjdGl2ZU1pbkxvZ2ljYWxXaWR0aCwgY2FsY3VsYXRlTWluaW11bVZhbHVlKGxvZ2ljYWxX
aWR0aCwgdGFibGVMb2dpY2FsV2lkdGgpKTsKICAgICAgICAgICAgICAgICBhdmFpbGFibGUgKz0g
bV9sYXlvdXRTdHJ1Y3RbaV0uY29tcHV0ZWRMb2dpY2FsV2lkdGggLSBjZWxsTG9naWNhbFdpZHRo
OwogICAgICAgICAgICAgICAgIG1fbGF5b3V0U3RydWN0W2ldLmNvbXB1dGVkTG9naWNhbFdpZHRo
ID0gY2VsbExvZ2ljYWxXaWR0aDsKICAgICAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9GaWx0ZXJFZmZlY3RSZW5kZXJlci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL0ZpbHRlckVmZmVjdFJlbmRlcmVyLmNwcAkocmV2aXNpb24gMTEw
ODE0KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ZpbHRlckVmZmVjdFJlbmRlcmVyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjM3LDcgKzIzNyw3IEBAIHZvaWQgRmlsdGVyRWZmZWN0UmVu
ZGVyZXI6OmJ1aWxkKERvY3VtZW4KICAgICAgICAgfQogICAgICAgICBjYXNlIEZpbHRlck9wZXJh
dGlvbjo6QkxVUjogewogICAgICAgICAgICAgQmx1ckZpbHRlck9wZXJhdGlvbiogYmx1ck9wZXJh
dGlvbiA9IHN0YXRpY19jYXN0PEJsdXJGaWx0ZXJPcGVyYXRpb24qPihmaWx0ZXJPcGVyYXRpb24p
OwotICAgICAgICAgICAgZmxvYXQgc3RkRGV2aWF0aW9uID0gYmx1ck9wZXJhdGlvbi0+c3RkRGV2
aWF0aW9uKCkuY2FsY0Zsb2F0VmFsdWUoMCk7CisgICAgICAgICAgICBmbG9hdCBzdGREZXZpYXRp
b24gPSBjYWxjdWxhdGVGbG9hdFZhbHVlKGJsdXJPcGVyYXRpb24tPnN0ZERldmlhdGlvbigpLCAw
KTsKICAgICAgICAgICAgIGVmZmVjdCA9IEZFR2F1c3NpYW5CbHVyOjpjcmVhdGUodGhpcywgc3Rk
RGV2aWF0aW9uLCBzdGREZXZpYXRpb24pOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0K
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9GaXhlZFRhYmxlTGF5b3V0LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRml4ZWRUYWJsZUxheW91dC5jcHAJ
KHJldmlzaW9uIDExMDgxNCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9GaXhlZFRhYmxl
TGF5b3V0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQxLDcgKzI0MSw3IEBAIHZvaWQgRml4ZWRU
YWJsZUxheW91dDo6bGF5b3V0KCkKICAgICAgICAgICAgIGNhbGNXaWR0aFtpXSA9IG1fd2lkdGhb
aV0udmFsdWUoKTsKICAgICAgICAgICAgIHRvdGFsRml4ZWRXaWR0aCArPSBjYWxjV2lkdGhbaV07
CiAgICAgICAgIH0gZWxzZSBpZiAobV93aWR0aFtpXS5pc1BlcmNlbnQoKSkgewotICAgICAgICAg
ICAgY2FsY1dpZHRoW2ldID0gbV93aWR0aFtpXS5jYWxjVmFsdWUodGFibGVMb2dpY2FsV2lkdGgp
OworICAgICAgICAgICAgY2FsY1dpZHRoW2ldID0gY2FsY3VsYXRlVmFsdWUobV93aWR0aFtpXSwg
dGFibGVMb2dpY2FsV2lkdGgpOwogICAgICAgICAgICAgdG90YWxQZXJjZW50V2lkdGggKz0gY2Fs
Y1dpZHRoW2ldOwogICAgICAgICAgICAgdG90YWxQZXJjZW50ICs9IG1fd2lkdGhbaV0ucGVyY2Vu
dCgpOwogICAgICAgICB9IGVsc2UgaWYgKG1fd2lkdGhbaV0uaXNBdXRvKCkpIHsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAkocmV2aXNpb24gMTEwODE0KQor
KysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzkwNCw3ICszOTA0LDcgQEAgTGF5b3V0VW5pdCBSZW5kZXJCbG9jazo6dGV4dEluZGVu
dE9mZnNldAogICAgIExheW91dFVuaXQgY3cgPSAwOwogICAgIGlmIChzdHlsZSgpLT50ZXh0SW5k
ZW50KCkuaXNQZXJjZW50KCkpCiAgICAgICAgIGN3ID0gY29udGFpbmluZ0Jsb2NrKCktPmF2YWls
YWJsZUxvZ2ljYWxXaWR0aCgpOwotICAgIHJldHVybiBzdHlsZSgpLT50ZXh0SW5kZW50KCkuY2Fs
Y01pblZhbHVlKGN3KTsKKyAgICByZXR1cm4gY2FsY3VsYXRlTWluaW11bVZhbHVlKHN0eWxlKCkt
PnRleHRJbmRlbnQoKSwgY3cpOwogfQogCiBMYXlvdXRVbml0IFJlbmRlckJsb2NrOjpsb2dpY2Fs
TGVmdE9mZnNldEZvckNvbnRlbnQoUmVuZGVyUmVnaW9uKiByZWdpb24sIExheW91dFVuaXQgb2Zm
c2V0RnJvbUxvZ2ljYWxUb3BPZkZpcnN0UGFnZSkgY29uc3QKQEAgLTU1NDEsNyArNTU0MSw3IEBA
IHZvaWQgUmVuZGVyQmxvY2s6OmNvbXB1dGVJbmxpbmVQcmVmZXJyZWQKICAgICAgICAgICAgICAg
ICBMYXlvdXRVbml0IHRpID0gMDsKICAgICAgICAgICAgICAgICBpZiAoIWFkZGVkVGV4dEluZGVu
dCkgewogICAgICAgICAgICAgICAgICAgICBhZGRlZFRleHRJbmRlbnQgPSB0cnVlOwotICAgICAg
ICAgICAgICAgICAgICB0aSA9IHN0eWxlVG9Vc2UtPnRleHRJbmRlbnQoKS5jYWxjTWluVmFsdWUo
Y3cpOworICAgICAgICAgICAgICAgICAgICB0aSA9IGNhbGN1bGF0ZU1pbmltdW1WYWx1ZShzdHls
ZVRvVXNlLT50ZXh0SW5kZW50KCksIGN3KTsKICAgICAgICAgICAgICAgICAgICAgY2hpbGRNaW4g
Kz0gdGk7CiAgICAgICAgICAgICAgICAgICAgIGNoaWxkTWF4ICs9IHRpOwogICAgICAgICAgICAg
ICAgIH0KQEAgLTU2MTIsNyArNTYxMiw3IEBAIHZvaWQgUmVuZGVyQmxvY2s6OmNvbXB1dGVJbmxp
bmVQcmVmZXJyZWQKICAgICAgICAgICAgICAgICBMYXlvdXRVbml0IHRpID0gMDsKICAgICAgICAg
ICAgICAgICBpZiAoIWFkZGVkVGV4dEluZGVudCkgewogICAgICAgICAgICAgICAgICAgICBhZGRl
ZFRleHRJbmRlbnQgPSB0cnVlOwotICAgICAgICAgICAgICAgICAgICB0aSA9IHN0eWxlVG9Vc2Ut
PnRleHRJbmRlbnQoKS5jYWxjTWluVmFsdWUoY3cpOworICAgICAgICAgICAgICAgICAgICB0aSA9
IGNhbGN1bGF0ZU1pbmltdW1WYWx1ZShzdHlsZVRvVXNlLT50ZXh0SW5kZW50KCksIGN3KTsKICAg
ICAgICAgICAgICAgICAgICAgY2hpbGRNaW4rPXRpOyBiZWdpbk1pbiArPSB0aTsKICAgICAgICAg
ICAgICAgICAgICAgY2hpbGRNYXgrPXRpOyBiZWdpbk1heCArPSB0aTsKICAgICAgICAgICAgICAg
ICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAkocmV2aXNpb24g
MTEwODE0KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTYyMyw4ICs2MjMsOCBAQCBpbnQgUmVuZGVyQm94OjpyZWZsZWN0aW9uT2Zm
c2V0KCkgY29uc3QKICAgICBpZiAoIXN0eWxlKCktPmJveFJlZmxlY3QoKSkKICAgICAgICAgcmV0
dXJuIDA7CiAgICAgaWYgKHN0eWxlKCktPmJveFJlZmxlY3QoKS0+ZGlyZWN0aW9uKCkgPT0gUmVm
bGVjdGlvbkxlZnQgfHwgc3R5bGUoKS0+Ym94UmVmbGVjdCgpLT5kaXJlY3Rpb24oKSA9PSBSZWZs
ZWN0aW9uUmlnaHQpCi0gICAgICAgIHJldHVybiBzdHlsZSgpLT5ib3hSZWZsZWN0KCktPm9mZnNl
dCgpLmNhbGNWYWx1ZShib3JkZXJCb3hSZWN0KCkud2lkdGgoKSk7Ci0gICAgcmV0dXJuIHN0eWxl
KCktPmJveFJlZmxlY3QoKS0+b2Zmc2V0KCkuY2FsY1ZhbHVlKGJvcmRlckJveFJlY3QoKS5oZWln
aHQoKSk7CisgICAgICAgIHJldHVybiBjYWxjdWxhdGVWYWx1ZShzdHlsZSgpLT5ib3hSZWZsZWN0
KCktPm9mZnNldCgpLCBib3JkZXJCb3hSZWN0KCkud2lkdGgoKSk7CisgICAgcmV0dXJuIGNhbGN1
bGF0ZVZhbHVlKHN0eWxlKCktPmJveFJlZmxlY3QoKS0+b2Zmc2V0KCksIGJvcmRlckJveFJlY3Qo
KS5oZWlnaHQoKSk7CiB9CiAKIExheW91dFJlY3QgUmVuZGVyQm94OjpyZWZsZWN0ZWRSZWN0KGNv
bnN0IExheW91dFJlY3QmIHIpIGNvbnN0CkBAIC0xMjk0LDcgKzEyOTQsNyBAQCBMYXlvdXRSZWN0
IFJlbmRlckJveDo6Y2xpcFJlY3QoY29uc3QgTGF5CiAgICAgTGF5b3V0UmVjdCBjbGlwUmVjdCA9
IExheW91dFJlY3QoYm9yZGVyQm94UmVjdC5sb2NhdGlvbigpICsgbG9jYXRpb24sIGJvcmRlckJv
eFJlY3Quc2l6ZSgpKTsKIAogICAgIGlmICghc3R5bGUoKS0+Y2xpcExlZnQoKS5pc0F1dG8oKSkg
ewotICAgICAgICBMYXlvdXRVbml0IGMgPSBzdHlsZSgpLT5jbGlwTGVmdCgpLmNhbGNWYWx1ZShi
b3JkZXJCb3hSZWN0LndpZHRoKCkpOworICAgICAgICBMYXlvdXRVbml0IGMgPSBjYWxjdWxhdGVW
YWx1ZShzdHlsZSgpLT5jbGlwTGVmdCgpLCBib3JkZXJCb3hSZWN0LndpZHRoKCkpOwogICAgICAg
ICBjbGlwUmVjdC5tb3ZlKGMsIDApOwogICAgICAgICBjbGlwUmVjdC5jb250cmFjdChjLCAwKTsK
ICAgICB9CkBAIC0xMzAzLDE2ICsxMzAzLDE2IEBAIExheW91dFJlY3QgUmVuZGVyQm94OjpjbGlw
UmVjdChjb25zdCBMYXkKICAgICAvLyBmcm9tIHRoZSBsZWZ0IGFuZCB0b3AgZWRnZXMuIFRoZXJl
Zm9yZSBpdCdzIGJldHRlciB0byBhdm9pZCBjb25zdHJhaW5pbmcgdG8gc21hbGxlciB3aWR0aHMg
YW5kIGhlaWdodHMuCiAKICAgICBpZiAoIXN0eWxlKCktPmNsaXBSaWdodCgpLmlzQXV0bygpKQot
ICAgICAgICBjbGlwUmVjdC5jb250cmFjdCh3aWR0aCgpIC0gc3R5bGUoKS0+Y2xpcFJpZ2h0KCku
Y2FsY1ZhbHVlKHdpZHRoKCkpLCAwKTsKKyAgICAgICAgY2xpcFJlY3QuY29udHJhY3Qod2lkdGgo
KSAtIGNhbGN1bGF0ZVZhbHVlKHN0eWxlKCktPmNsaXBSaWdodCgpLCB3aWR0aCgpKSwgMCk7CiAK
ICAgICBpZiAoIXN0eWxlKCktPmNsaXBUb3AoKS5pc0F1dG8oKSkgewotICAgICAgICBMYXlvdXRV
bml0IGMgPSBzdHlsZSgpLT5jbGlwVG9wKCkuY2FsY1ZhbHVlKGJvcmRlckJveFJlY3QuaGVpZ2h0
KCkpOworICAgICAgICBMYXlvdXRVbml0IGMgPSBjYWxjdWxhdGVWYWx1ZShzdHlsZSgpLT5jbGlw
VG9wKCksIGJvcmRlckJveFJlY3QuaGVpZ2h0KCkpOwogICAgICAgICBjbGlwUmVjdC5tb3ZlKDAs
IGMpOwogICAgICAgICBjbGlwUmVjdC5jb250cmFjdCgwLCBjKTsKICAgICB9CiAKICAgICBpZiAo
IXN0eWxlKCktPmNsaXBCb3R0b20oKS5pc0F1dG8oKSkKLSAgICAgICAgY2xpcFJlY3QuY29udHJh
Y3QoMCwgaGVpZ2h0KCkgLSBzdHlsZSgpLT5jbGlwQm90dG9tKCkuY2FsY1ZhbHVlKGhlaWdodCgp
KSk7CisgICAgICAgIGNsaXBSZWN0LmNvbnRyYWN0KDAsIGhlaWdodCgpIC0gY2FsY3VsYXRlVmFs
dWUoc3R5bGUoKS0+Y2xpcEJvdHRvbSgpLCBoZWlnaHQoKSkpOwogCiAgICAgcmV0dXJuIGNsaXBS
ZWN0OwogfQpAQCAtMTc3OSwxMCArMTc3OSwxMCBAQCB2b2lkIFJlbmRlckJveDo6Y29tcHV0ZUxv
Z2ljYWxXaWR0aEluUmVnCiAgICAgCiAgICAgaWYgKGlzSW5saW5lKCkgJiYgIWlzSW5saW5lQmxv
Y2tPcklubGluZVRhYmxlKCkpIHsKICAgICAgICAgLy8ganVzdCBjYWxjdWxhdGUgbWFyZ2lucwot
ICAgICAgICBzZXRNYXJnaW5TdGFydChzdHlsZVRvVXNlLT5tYXJnaW5TdGFydCgpLmNhbGNNaW5W
YWx1ZShjb250YWluZXJMb2dpY2FsV2lkdGgpKTsKLSAgICAgICAgc2V0TWFyZ2luRW5kKHN0eWxl
VG9Vc2UtPm1hcmdpbkVuZCgpLmNhbGNNaW5WYWx1ZShjb250YWluZXJMb2dpY2FsV2lkdGgpKTsK
KyAgICAgICAgc2V0TWFyZ2luU3RhcnQoY2FsY3VsYXRlTWluaW11bVZhbHVlKHN0eWxlVG9Vc2Ut
Pm1hcmdpblN0YXJ0KCksIGNvbnRhaW5lckxvZ2ljYWxXaWR0aCkpOworICAgICAgICBzZXRNYXJn
aW5FbmQoY2FsY3VsYXRlTWluaW11bVZhbHVlKHN0eWxlVG9Vc2UtPm1hcmdpbkVuZCgpLCBjb250
YWluZXJMb2dpY2FsV2lkdGgpKTsKICAgICAgICAgaWYgKHRyZWF0QXNSZXBsYWNlZCkKLSAgICAg
ICAgICAgIHNldExvZ2ljYWxXaWR0aChtYXg8TGF5b3V0VW5pdD4obG9naWNhbFdpZHRoTGVuZ3Ro
LmNhbGNGbG9hdFZhbHVlKDApICsgYm9yZGVyQW5kUGFkZGluZ0xvZ2ljYWxXaWR0aCgpLCBtaW5Q
cmVmZXJyZWRMb2dpY2FsV2lkdGgoKSkpOworICAgICAgICAgICAgc2V0TG9naWNhbFdpZHRoKG1h
eDxMYXlvdXRVbml0PihjYWxjdWxhdGVGbG9hdFZhbHVlKGxvZ2ljYWxXaWR0aExlbmd0aCwgMCkg
KyBib3JkZXJBbmRQYWRkaW5nTG9naWNhbFdpZHRoKCksIG1pblByZWZlcnJlZExvZ2ljYWxXaWR0
aCgpKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTE4MTgsOCArMTgxOCw4IEBAIHZv
aWQgUmVuZGVyQm94Ojpjb21wdXRlTG9naWNhbFdpZHRoSW5SZWcKIAogICAgIC8vIE1hcmdpbiBj
YWxjdWxhdGlvbnMuCiAgICAgaWYgKGxvZ2ljYWxXaWR0aExlbmd0aC5pc0F1dG8oKSB8fCBoYXNQ
ZXJwZW5kaWN1bGFyQ29udGFpbmluZ0Jsb2NrKSB7Ci0gICAgICAgIHNldE1hcmdpblN0YXJ0KHN0
eWxlVG9Vc2UtPm1hcmdpblN0YXJ0KCkuY2FsY01pblZhbHVlKGNvbnRhaW5lckxvZ2ljYWxXaWR0
aCkpOwotICAgICAgICBzZXRNYXJnaW5FbmQoc3R5bGVUb1VzZS0+bWFyZ2luRW5kKCkuY2FsY01p
blZhbHVlKGNvbnRhaW5lckxvZ2ljYWxXaWR0aCkpOworICAgICAgICBzZXRNYXJnaW5TdGFydChj
YWxjdWxhdGVNaW5pbXVtVmFsdWUoc3R5bGVUb1VzZS0+bWFyZ2luU3RhcnQoKSwgY29udGFpbmVy
TG9naWNhbFdpZHRoKSk7CisgICAgICAgIHNldE1hcmdpbkVuZChjYWxjdWxhdGVNaW5pbXVtVmFs
dWUoc3R5bGVUb1VzZS0+bWFyZ2luRW5kKCksIGNvbnRhaW5lckxvZ2ljYWxXaWR0aCkpOwogICAg
IH0gZWxzZQogICAgICAgICBjb21wdXRlSW5saW5lRGlyZWN0aW9uTWFyZ2lucyhjYiwgY29udGFp
bmVyTG9naWNhbFdpZHRoLCBsb2dpY2FsV2lkdGgoKSk7CiAKQEAgLTE4NDIsOCArMTg0Miw4IEBA
IExheW91dFVuaXQgUmVuZGVyQm94Ojpjb21wdXRlTG9naWNhbFdpZHQKICAgICAgICAgbG9naWNh
bFdpZHRoID0gc3R5bGVUb1VzZS0+bG9naWNhbE1heFdpZHRoKCk7CiAKICAgICBpZiAobG9naWNh
bFdpZHRoLmlzSW50cmluc2ljT3JBdXRvKCkpIHsKLSAgICAgICAgTGF5b3V0VW5pdCBtYXJnaW5T
dGFydCA9IHN0eWxlVG9Vc2UtPm1hcmdpblN0YXJ0KCkuY2FsY01pblZhbHVlKGF2YWlsYWJsZUxv
Z2ljYWxXaWR0aCk7Ci0gICAgICAgIExheW91dFVuaXQgbWFyZ2luRW5kID0gc3R5bGVUb1VzZS0+
bWFyZ2luRW5kKCkuY2FsY01pblZhbHVlKGF2YWlsYWJsZUxvZ2ljYWxXaWR0aCk7CisgICAgICAg
IExheW91dFVuaXQgbWFyZ2luU3RhcnQgPSBjYWxjdWxhdGVNaW5pbXVtVmFsdWUoc3R5bGVUb1Vz
ZS0+bWFyZ2luU3RhcnQoKSwgYXZhaWxhYmxlTG9naWNhbFdpZHRoKTsKKyAgICAgICAgTGF5b3V0
VW5pdCBtYXJnaW5FbmQgPSBjYWxjdWxhdGVNaW5pbXVtVmFsdWUoc3R5bGVUb1VzZS0+bWFyZ2lu
RW5kKCksIGF2YWlsYWJsZUxvZ2ljYWxXaWR0aCk7CiAgICAgICAgIGxvZ2ljYWxXaWR0aFJlc3Vs
dCA9IGF2YWlsYWJsZUxvZ2ljYWxXaWR0aCAtIG1hcmdpblN0YXJ0IC0gbWFyZ2luRW5kOwogCiAg
ICAgICAgIGlmIChzaHJpbmtUb0F2b2lkRmxvYXRzKCkgJiYgY2ItPmNvbnRhaW5zRmxvYXRzKCkp
CkBAIC0xODU0LDcgKzE4NTQsNyBAQCBMYXlvdXRVbml0IFJlbmRlckJveDo6Y29tcHV0ZUxvZ2lj
YWxXaWR0CiAgICAgICAgICAgICBsb2dpY2FsV2lkdGhSZXN1bHQgPSBtaW4obG9naWNhbFdpZHRo
UmVzdWx0LCBtYXhQcmVmZXJyZWRMb2dpY2FsV2lkdGgoKSk7CiAgICAgICAgIH0KICAgICB9IGVs
c2UgLy8gRklYTUU6IElmIHRoZSBjb250YWluaW5nIGJsb2NrIGZsb3cgaXMgcGVycGVuZGljdWxh
ciB0byBvdXIgZGlyZWN0aW9uIHdlIG5lZWQgdG8gdXNlIHRoZSBhdmFpbGFibGUgbG9naWNhbCBo
ZWlnaHQgaW5zdGVhZC4KLSAgICAgICAgbG9naWNhbFdpZHRoUmVzdWx0ID0gY29tcHV0ZUJvcmRl
ckJveExvZ2ljYWxXaWR0aChsb2dpY2FsV2lkdGguY2FsY1ZhbHVlKGF2YWlsYWJsZUxvZ2ljYWxX
aWR0aCkpOyAKKyAgICAgICAgbG9naWNhbFdpZHRoUmVzdWx0ID0gY29tcHV0ZUJvcmRlckJveExv
Z2ljYWxXaWR0aChjYWxjdWxhdGVWYWx1ZShsb2dpY2FsV2lkdGgsIGF2YWlsYWJsZUxvZ2ljYWxX
aWR0aCkpOyAKIAogICAgIHJldHVybiBsb2dpY2FsV2lkdGhSZXN1bHQ7CiB9CkBAIC0xOTI1LDgg
KzE5MjUsOCBAQCB2b2lkIFJlbmRlckJveDo6Y29tcHV0ZUlubGluZURpcmVjdGlvbk1hCiAKICAg
ICBpZiAoaXNGbG9hdGluZygpIHx8IGlzSW5saW5lKCkpIHsKICAgICAgICAgLy8gSW5saW5lIGJs
b2Nrcy90YWJsZXMgYW5kIGZsb2F0cyBkb24ndCBoYXZlIHRoZWlyIG1hcmdpbnMgaW5jcmVhc2Vk
LgotICAgICAgICBjb250YWluaW5nQmxvY2stPnNldE1hcmdpblN0YXJ0Rm9yQ2hpbGQodGhpcywg
bWFyZ2luU3RhcnRMZW5ndGguY2FsY01pblZhbHVlKGNvbnRhaW5lcldpZHRoKSk7Ci0gICAgICAg
IGNvbnRhaW5pbmdCbG9jay0+c2V0TWFyZ2luRW5kRm9yQ2hpbGQodGhpcywgbWFyZ2luRW5kTGVu
Z3RoLmNhbGNNaW5WYWx1ZShjb250YWluZXJXaWR0aCkpOworICAgICAgICBjb250YWluaW5nQmxv
Y2stPnNldE1hcmdpblN0YXJ0Rm9yQ2hpbGQodGhpcywgY2FsY3VsYXRlTWluaW11bVZhbHVlKG1h
cmdpblN0YXJ0TGVuZ3RoLCBjb250YWluZXJXaWR0aCkpOworICAgICAgICBjb250YWluaW5nQmxv
Y2stPnNldE1hcmdpbkVuZEZvckNoaWxkKHRoaXMsIGNhbGN1bGF0ZU1pbmltdW1WYWx1ZShtYXJn
aW5FbmRMZW5ndGgsIGNvbnRhaW5lcldpZHRoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
QEAgLTE5NDAsNyArMTk0MCw3IEBAIHZvaWQgUmVuZGVyQm94Ojpjb21wdXRlSW5saW5lRGlyZWN0
aW9uTWEKICAgICAKICAgICAvLyBDYXNlIFR3bzogVGhlIG9iamVjdCBpcyBiZWluZyBwdXNoZWQg
dG8gdGhlIHN0YXJ0IG9mIHRoZSBjb250YWluaW5nIGJsb2NrJ3MgYXZhaWxhYmxlIGxvZ2ljYWwg
d2lkdGguCiAgICAgaWYgKG1hcmdpbkVuZExlbmd0aC5pc0F1dG8oKSAmJiBjaGlsZFdpZHRoIDwg
Y29udGFpbmVyV2lkdGgpIHsKLSAgICAgICAgY29udGFpbmluZ0Jsb2NrLT5zZXRNYXJnaW5TdGFy
dEZvckNoaWxkKHRoaXMsIG1hcmdpblN0YXJ0TGVuZ3RoLmNhbGNWYWx1ZShjb250YWluZXJXaWR0
aCkpOworICAgICAgICBjb250YWluaW5nQmxvY2stPnNldE1hcmdpblN0YXJ0Rm9yQ2hpbGQodGhp
cywgY2FsY3VsYXRlVmFsdWUobWFyZ2luU3RhcnRMZW5ndGgsIGNvbnRhaW5lcldpZHRoKSk7CiAg
ICAgICAgIGNvbnRhaW5pbmdCbG9jay0+c2V0TWFyZ2luRW5kRm9yQ2hpbGQodGhpcywgY29udGFp
bmVyV2lkdGggLSBjaGlsZFdpZHRoIC0gY29udGFpbmluZ0Jsb2NrLT5tYXJnaW5TdGFydEZvckNo
aWxkKHRoaXMpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0gCkBAIC0xOTQ5LDE1ICsxOTQ5LDE1
IEBAIHZvaWQgUmVuZGVyQm94Ojpjb21wdXRlSW5saW5lRGlyZWN0aW9uTWEKICAgICBib29sIHB1
c2hUb0VuZEZyb21UZXh0QWxpZ24gPSAhbWFyZ2luRW5kTGVuZ3RoLmlzQXV0bygpICYmICgoIWNv
bnRhaW5pbmdCbG9ja1N0eWxlLT5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkgJiYgY29udGFpbmlu
Z0Jsb2NrU3R5bGUtPnRleHRBbGlnbigpID09IFdFQktJVF9MRUZUKQogICAgICAgICB8fCAoY29u
dGFpbmluZ0Jsb2NrU3R5bGUtPmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSAmJiBjb250YWluaW5n
QmxvY2tTdHlsZS0+dGV4dEFsaWduKCkgPT0gV0VCS0lUX1JJR0hUKSk7CiAgICAgaWYgKChtYXJn
aW5TdGFydExlbmd0aC5pc0F1dG8oKSAmJiBjaGlsZFdpZHRoIDwgY29udGFpbmVyV2lkdGgpIHx8
IHB1c2hUb0VuZEZyb21UZXh0QWxpZ24pIHsKLSAgICAgICAgY29udGFpbmluZ0Jsb2NrLT5zZXRN
YXJnaW5FbmRGb3JDaGlsZCh0aGlzLCBtYXJnaW5FbmRMZW5ndGguY2FsY1ZhbHVlKGNvbnRhaW5l
cldpZHRoKSk7CisgICAgICAgIGNvbnRhaW5pbmdCbG9jay0+c2V0TWFyZ2luRW5kRm9yQ2hpbGQo
dGhpcywgY2FsY3VsYXRlVmFsdWUobWFyZ2luRW5kTGVuZ3RoLCBjb250YWluZXJXaWR0aCkpOwog
ICAgICAgICBjb250YWluaW5nQmxvY2stPnNldE1hcmdpblN0YXJ0Rm9yQ2hpbGQodGhpcywgY29u
dGFpbmVyV2lkdGggLSBjaGlsZFdpZHRoIC0gY29udGFpbmluZ0Jsb2NrLT5tYXJnaW5FbmRGb3JD
aGlsZCh0aGlzKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9IAogICAgIAogICAgIC8vIENhc2Ug
Rm91cjogRWl0aGVyIG5vIGF1dG8gbWFyZ2lucywgb3Igb3VyIHdpZHRoIGlzID49IHRoZSBjb250
YWluZXIgd2lkdGggKGNzczIuMSwgMTAuMy4zKS4gIEluIHRoYXQgY2FzZQogICAgIC8vIGF1dG8g
bWFyZ2lucyB3aWxsIGp1c3QgdHVybiBpbnRvIDAuCi0gICAgY29udGFpbmluZ0Jsb2NrLT5zZXRN
YXJnaW5TdGFydEZvckNoaWxkKHRoaXMsIG1hcmdpblN0YXJ0TGVuZ3RoLmNhbGNNaW5WYWx1ZShj
b250YWluZXJXaWR0aCkpOwotICAgIGNvbnRhaW5pbmdCbG9jay0+c2V0TWFyZ2luRW5kRm9yQ2hp
bGQodGhpcywgbWFyZ2luRW5kTGVuZ3RoLmNhbGNNaW5WYWx1ZShjb250YWluZXJXaWR0aCkpOwor
ICAgIGNvbnRhaW5pbmdCbG9jay0+c2V0TWFyZ2luU3RhcnRGb3JDaGlsZCh0aGlzLCBjYWxjdWxh
dGVNaW5pbXVtVmFsdWUobWFyZ2luU3RhcnRMZW5ndGgsIGNvbnRhaW5lcldpZHRoKSk7CisgICAg
Y29udGFpbmluZ0Jsb2NrLT5zZXRNYXJnaW5FbmRGb3JDaGlsZCh0aGlzLCBjYWxjdWxhdGVNaW5p
bXVtVmFsdWUobWFyZ2luRW5kTGVuZ3RoLCBjb250YWluZXJXaWR0aCkpOwogfQogCiBSZW5kZXJC
b3hSZWdpb25JbmZvKiBSZW5kZXJCb3g6OnJlbmRlckJveFJlZ2lvbkluZm8oUmVuZGVyUmVnaW9u
KiByZWdpb24sIExheW91dFVuaXQgb2Zmc2V0RnJvbUxvZ2ljYWxUb3BPZkZpcnN0UGFnZSwgUmVu
ZGVyQm94UmVnaW9uSW5mb0ZsYWdzIGNhY2hlRmxhZykgY29uc3QKQEAgLTIyNDUsNyArMjI0NSw3
IEBAIExheW91dFVuaXQgUmVuZGVyQm94Ojpjb21wdXRlUGVyY2VudGFnZUwKICAgICAgICAgcmVz
dWx0ID0gY2ItPmNvbXB1dGVDb250ZW50Qm94TG9naWNhbEhlaWdodChjYi0+YXZhaWxhYmxlTG9n
aWNhbEhlaWdodCgpKTsKIAogICAgIGlmIChyZXN1bHQgIT0gLTEpIHsKLSAgICAgICAgcmVzdWx0
ID0gaGVpZ2h0LmNhbGNWYWx1ZShyZXN1bHQpOworICAgICAgICByZXN1bHQgPSBjYWxjdWxhdGVW
YWx1ZShoZWlnaHQsIHJlc3VsdCk7CiAgICAgICAgIGlmIChpbmNsdWRlQm9yZGVyUGFkZGluZykg
ewogICAgICAgICAgICAgLy8gSXQgaXMgbmVjZXNzYXJ5IHRvIHVzZSB0aGUgYm9yZGVyLWJveCB0
byBtYXRjaCBXaW5JRSdzIGJyb2tlbgogICAgICAgICAgICAgLy8gYm94IG1vZGVsLiAgVGhpcyBp
cyBlc3NlbnRpYWwgZm9yIHNpemluZyBpbnNpZGUKQEAgLTIyODAsNyArMjI4MCw3IEBAIExheW91
dFVuaXQgUmVuZGVyQm94Ojpjb21wdXRlUmVwbGFjZWRMb2cKICAgICAgICAgICAgIC8vIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NjQ5NgogICAgICAgICAgICAgY29u
c3QgTGF5b3V0VW5pdCBjdyA9IGlzUG9zaXRpb25lZCgpID8gY29udGFpbmluZ0Jsb2NrTG9naWNh
bFdpZHRoRm9yUG9zaXRpb25lZCh0b1JlbmRlckJveE1vZGVsT2JqZWN0KGNvbnRhaW5lcigpKSkg
OiBjb250YWluaW5nQmxvY2tMb2dpY2FsV2lkdGhGb3JDb250ZW50KCk7CiAgICAgICAgICAgICBp
ZiAoY3cgPiAwKQotICAgICAgICAgICAgICAgIHJldHVybiBjb21wdXRlQ29udGVudEJveExvZ2lj
YWxXaWR0aChsb2dpY2FsV2lkdGguY2FsY01pblZhbHVlKGN3KSk7CisgICAgICAgICAgICAgICAg
cmV0dXJuIGNvbXB1dGVDb250ZW50Qm94TG9naWNhbFdpZHRoKGNhbGN1bGF0ZU1pbmltdW1WYWx1
ZShsb2dpY2FsV2lkdGgsIGN3KSk7CiAgICAgICAgIH0KICAgICAgICAgLy8gZmFsbCB0aHJvdWdo
CiAgICAgICAgIGRlZmF1bHQ6CkBAIC0yMzIyLDcgKzIzMjIsNyBAQCBMYXlvdXRVbml0IFJlbmRl
ckJveDo6Y29tcHV0ZVJlcGxhY2VkTG9nCiAgICAgICAgICAgICAgICAgYmxvY2stPmNvbXB1dGVM
b2dpY2FsSGVpZ2h0KCk7CiAgICAgICAgICAgICAgICAgTGF5b3V0VW5pdCBuZXdIZWlnaHQgPSBi
bG9jay0+Y29tcHV0ZUNvbnRlbnRCb3hMb2dpY2FsSGVpZ2h0KGJsb2NrLT5jb250ZW50SGVpZ2h0
KCkpOwogICAgICAgICAgICAgICAgIGJsb2NrLT5zZXRIZWlnaHQob2xkSGVpZ2h0KTsKLSAgICAg
ICAgICAgICAgICByZXR1cm4gY29tcHV0ZUNvbnRlbnRCb3hMb2dpY2FsSGVpZ2h0KGxvZ2ljYWxI
ZWlnaHQuY2FsY1ZhbHVlKG5ld0hlaWdodCkpOworICAgICAgICAgICAgICAgIHJldHVybiBjb21w
dXRlQ29udGVudEJveExvZ2ljYWxIZWlnaHQoY2FsY3VsYXRlVmFsdWUobG9naWNhbEhlaWdodCwg
bmV3SGVpZ2h0KSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAKICAgICAgICAgICAgIC8v
IEZJWE1FOiBhdmFpbGFibGVMb2dpY2FsSGVpZ2h0KCkgaXMgd3JvbmcgaWYgdGhlIHJlcGxhY2Vk
IGVsZW1lbnQncyBibG9jay1mbG93IGlzIHBlcnBlbmRpY3VsYXIgdG8gdGhlCkBAIC0yMzQzLDEy
ICsyMzQzLDEyIEBAIExheW91dFVuaXQgUmVuZGVyQm94Ojpjb21wdXRlUmVwbGFjZWRMb2cKICAg
ICAgICAgICAgICAgICAgICAgICAgIC8vIERvbid0IGxldCB0YWJsZSBjZWxscyBzcXVlZXplIHBl
cmNlbnQtaGVpZ2h0IHJlcGxhY2VkIGVsZW1lbnRzCiAgICAgICAgICAgICAgICAgICAgICAgICAv
LyA8aHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUzNTk+CiAgICAgICAg
ICAgICAgICAgICAgICAgICBhdmFpbGFibGVIZWlnaHQgPSBtYXgoYXZhaWxhYmxlSGVpZ2h0LCBp
bnRyaW5zaWNMb2dpY2FsSGVpZ2h0KCkpOwotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IGxvZ2ljYWxIZWlnaHQuY2FsY1ZhbHVlKGF2YWlsYWJsZUhlaWdodCAtIGJvcmRlckFuZFBhZGRp
bmdMb2dpY2FsSGVpZ2h0KCkpOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNhbGN1
bGF0ZVZhbHVlKGxvZ2ljYWxIZWlnaHQsIGF2YWlsYWJsZUhlaWdodCAtIGJvcmRlckFuZFBhZGRp
bmdMb2dpY2FsSGVpZ2h0KCkpOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAg
ICAgICAgIGNiID0gY2ItPmNvbnRhaW5pbmdCbG9jaygpOwogICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybiBjb21wdXRlQ29udGVudEJveExvZ2ljYWxI
ZWlnaHQobG9naWNhbEhlaWdodC5jYWxjVmFsdWUoYXZhaWxhYmxlSGVpZ2h0KSk7CisgICAgICAg
ICAgICByZXR1cm4gY29tcHV0ZUNvbnRlbnRCb3hMb2dpY2FsSGVpZ2h0KGNhbGN1bGF0ZVZhbHVl
KGxvZ2ljYWxIZWlnaHQsIGF2YWlsYWJsZUhlaWdodCkpOwogICAgICAgICB9CiAgICAgICAgIGRl
ZmF1bHQ6CiAgICAgICAgICAgICByZXR1cm4gaW50cmluc2ljTG9naWNhbEhlaWdodCgpOwpAQCAt
MjM4Myw3ICsyMzgzLDcgQEAgTGF5b3V0VW5pdCBSZW5kZXJCb3g6OmF2YWlsYWJsZUxvZ2ljYWxI
ZQogICAgICAgICAgICAgYXZhaWxhYmxlSGVpZ2h0ID0gY29udGFpbmluZ0Jsb2NrTG9naWNhbEhl
aWdodEZvclBvc2l0aW9uZWQoY29udGFpbmluZ0Jsb2NrKCkpOwogICAgICAgICBlbHNlCiAgICAg
ICAgICAgICBhdmFpbGFibGVIZWlnaHQgPSBjb250YWluaW5nQmxvY2soKS0+YXZhaWxhYmxlTG9n
aWNhbEhlaWdodCgpOwotICAgICAgICByZXR1cm4gY29tcHV0ZUNvbnRlbnRCb3hMb2dpY2FsSGVp
Z2h0KGguY2FsY1ZhbHVlKGF2YWlsYWJsZUhlaWdodCkpOworICAgICAgICByZXR1cm4gY29tcHV0
ZUNvbnRlbnRCb3hMb2dpY2FsSGVpZ2h0KGNhbGN1bGF0ZVZhbHVlKGgsIGF2YWlsYWJsZUhlaWdo
dCkpOwogICAgIH0KIAogICAgIC8vIEZJWE1FOiBXZSBjYW4ndCBqdXN0IGNoZWNrIHRvcC9ib3R0
b20gaGVyZS4KQEAgLTI0MTUsOCArMjQxNSw4IEBAIHZvaWQgUmVuZGVyQm94Ojpjb21wdXRlQmxv
Y2tEaXJlY3Rpb25NYXIKICAgICBMYXlvdXRVbml0IGN3ID0gY29udGFpbmluZ0Jsb2NrTG9naWNh
bFdpZHRoRm9yQ29udGVudCgpOwogCiAgICAgUmVuZGVyU3R5bGUqIGNvbnRhaW5pbmdCbG9ja1N0
eWxlID0gY29udGFpbmluZ0Jsb2NrLT5zdHlsZSgpOwotICAgIGNvbnRhaW5pbmdCbG9jay0+c2V0
TWFyZ2luQmVmb3JlRm9yQ2hpbGQodGhpcywgc3R5bGUoKS0+bWFyZ2luQmVmb3JlVXNpbmcoY29u
dGFpbmluZ0Jsb2NrU3R5bGUpLmNhbGNNaW5WYWx1ZShjdykpOwotICAgIGNvbnRhaW5pbmdCbG9j
ay0+c2V0TWFyZ2luQWZ0ZXJGb3JDaGlsZCh0aGlzLCBzdHlsZSgpLT5tYXJnaW5BZnRlclVzaW5n
KGNvbnRhaW5pbmdCbG9ja1N0eWxlKS5jYWxjTWluVmFsdWUoY3cpKTsKKyAgICBjb250YWluaW5n
QmxvY2stPnNldE1hcmdpbkJlZm9yZUZvckNoaWxkKHRoaXMsIGNhbGN1bGF0ZU1pbmltdW1WYWx1
ZShzdHlsZSgpLT5tYXJnaW5CZWZvcmVVc2luZyhjb250YWluaW5nQmxvY2tTdHlsZSksIGN3KSk7
CisgICAgY29udGFpbmluZ0Jsb2NrLT5zZXRNYXJnaW5BZnRlckZvckNoaWxkKHRoaXMsIGNhbGN1
bGF0ZU1pbmltdW1WYWx1ZShzdHlsZSgpLT5tYXJnaW5BZnRlclVzaW5nKGNvbnRhaW5pbmdCbG9j
a1N0eWxlKSwgY3cpKTsKIH0KIAogTGF5b3V0VW5pdCBSZW5kZXJCb3g6OmNvbnRhaW5pbmdCbG9j
a0xvZ2ljYWxXaWR0aEZvclBvc2l0aW9uZWQoY29uc3QgUmVuZGVyQm94TW9kZWxPYmplY3QqIGNv
bnRhaW5pbmdCbG9jaywgUmVuZGVyUmVnaW9uKiByZWdpb24sCkBAIC0yNzU2LDEwICsyNzU2LDEw
IEBAIHZvaWQgUmVuZGVyQm94Ojpjb21wdXRlUG9zaXRpb25lZExvZ2ljYWwKICAgICAgICAgLy8g
Tk9URTogIEl0IGlzIG5vdCBuZWNlc3NhcnkgdG8gc29sdmUgZm9yICdyaWdodCcgaW4gdGhlIG92
ZXIgY29uc3RyYWluZWQKICAgICAgICAgLy8gY2FzZSBiZWNhdXNlIHRoZSB2YWx1ZSBpcyBub3Qg
dXNlZCBmb3IgYW55IGZ1cnRoZXIgY2FsY3VsYXRpb25zLgogCi0gICAgICAgIGxvZ2ljYWxMZWZ0
VmFsdWUgPSBsb2dpY2FsTGVmdC5jYWxjVmFsdWUoY29udGFpbmVyTG9naWNhbFdpZHRoKTsKLSAg
ICAgICAgbG9naWNhbFdpZHRoVmFsdWUgPSBjb21wdXRlQ29udGVudEJveExvZ2ljYWxXaWR0aChs
b2dpY2FsV2lkdGguY2FsY1ZhbHVlKGNvbnRhaW5lckxvZ2ljYWxXaWR0aCkpOworICAgICAgICBs
b2dpY2FsTGVmdFZhbHVlID0gY2FsY3VsYXRlVmFsdWUobG9naWNhbExlZnQsIGNvbnRhaW5lckxv
Z2ljYWxXaWR0aCk7CisgICAgICAgIGxvZ2ljYWxXaWR0aFZhbHVlID0gY29tcHV0ZUNvbnRlbnRC
b3hMb2dpY2FsV2lkdGgoY2FsY3VsYXRlVmFsdWUobG9naWNhbFdpZHRoLCBjb250YWluZXJMb2dp
Y2FsV2lkdGgpKTsKIAotICAgICAgICBjb25zdCBMYXlvdXRVbml0IGF2YWlsYWJsZVNwYWNlID0g
Y29udGFpbmVyTG9naWNhbFdpZHRoIC0gKGxvZ2ljYWxMZWZ0VmFsdWUgKyBsb2dpY2FsV2lkdGhW
YWx1ZSArIGxvZ2ljYWxSaWdodC5jYWxjVmFsdWUoY29udGFpbmVyTG9naWNhbFdpZHRoKSArIGJv
cmRlcnNQbHVzUGFkZGluZyk7CisgICAgICAgIGNvbnN0IExheW91dFVuaXQgYXZhaWxhYmxlU3Bh
Y2UgPSBjb250YWluZXJMb2dpY2FsV2lkdGggLSAobG9naWNhbExlZnRWYWx1ZSArIGxvZ2ljYWxX
aWR0aFZhbHVlICsgY2FsY3VsYXRlVmFsdWUobG9naWNhbFJpZ2h0LCBjb250YWluZXJMb2dpY2Fs
V2lkdGgpICsgYm9yZGVyc1BsdXNQYWRkaW5nKTsKIAogICAgICAgICAvLyBNYXJnaW5zIGFyZSBu
b3cgdGhlIG9ubHkgdW5rbm93bgogICAgICAgICBpZiAobWFyZ2luTG9naWNhbExlZnQuaXNBdXRv
KCkgJiYgbWFyZ2luTG9naWNhbFJpZ2h0LmlzQXV0bygpKSB7CkBAIC0yNzgwLDE2ICsyNzgwLDE2
IEBAIHZvaWQgUmVuZGVyQm94Ojpjb21wdXRlUG9zaXRpb25lZExvZ2ljYWwKICAgICAgICAgICAg
IH0KICAgICAgICAgfSBlbHNlIGlmIChtYXJnaW5Mb2dpY2FsTGVmdC5pc0F1dG8oKSkgewogICAg
ICAgICAgICAgLy8gU29sdmUgZm9yIGxlZnQgbWFyZ2luCi0gICAgICAgICAgICBtYXJnaW5Mb2dp
Y2FsUmlnaHRWYWx1ZSA9IG1hcmdpbkxvZ2ljYWxSaWdodC5jYWxjVmFsdWUoY29udGFpbmVyTG9n
aWNhbFdpZHRoKTsKKyAgICAgICAgICAgIG1hcmdpbkxvZ2ljYWxSaWdodFZhbHVlID0gY2FsY3Vs
YXRlVmFsdWUobWFyZ2luTG9naWNhbFJpZ2h0LCBjb250YWluZXJMb2dpY2FsV2lkdGgpOwogICAg
ICAgICAgICAgbWFyZ2luTG9naWNhbExlZnRWYWx1ZSA9IGF2YWlsYWJsZVNwYWNlIC0gbWFyZ2lu
TG9naWNhbFJpZ2h0VmFsdWU7CiAgICAgICAgIH0gZWxzZSBpZiAobWFyZ2luTG9naWNhbFJpZ2h0
LmlzQXV0bygpKSB7CiAgICAgICAgICAgICAvLyBTb2x2ZSBmb3IgcmlnaHQgbWFyZ2luCi0gICAg
ICAgICAgICBtYXJnaW5Mb2dpY2FsTGVmdFZhbHVlID0gbWFyZ2luTG9naWNhbExlZnQuY2FsY1Zh
bHVlKGNvbnRhaW5lckxvZ2ljYWxXaWR0aCk7CisgICAgICAgICAgICBtYXJnaW5Mb2dpY2FsTGVm
dFZhbHVlID0gY2FsY3VsYXRlVmFsdWUobWFyZ2luTG9naWNhbExlZnQsIGNvbnRhaW5lckxvZ2lj
YWxXaWR0aCk7CiAgICAgICAgICAgICBtYXJnaW5Mb2dpY2FsUmlnaHRWYWx1ZSA9IGF2YWlsYWJs
ZVNwYWNlIC0gbWFyZ2luTG9naWNhbExlZnRWYWx1ZTsKICAgICAgICAgfSBlbHNlIHsKICAgICAg
ICAgICAgIC8vIE92ZXItY29uc3RyYWluZWQsIHNvbHZlIGZvciBsZWZ0IGlmIGRpcmVjdGlvbiBp
cyBSVEwKLSAgICAgICAgICAgIG1hcmdpbkxvZ2ljYWxMZWZ0VmFsdWUgPSBtYXJnaW5Mb2dpY2Fs
TGVmdC5jYWxjVmFsdWUoY29udGFpbmVyTG9naWNhbFdpZHRoKTsKLSAgICAgICAgICAgIG1hcmdp
bkxvZ2ljYWxSaWdodFZhbHVlID0gbWFyZ2luTG9naWNhbFJpZ2h0LmNhbGNWYWx1ZShjb250YWlu
ZXJMb2dpY2FsV2lkdGgpOworICAgICAgICAgICAgbWFyZ2luTG9naWNhbExlZnRWYWx1ZSA9IGNh
bGN1bGF0ZVZhbHVlKG1hcmdpbkxvZ2ljYWxMZWZ0LCBjb250YWluZXJMb2dpY2FsV2lkdGgpOwor
ICAgICAgICAgICAgbWFyZ2luTG9naWNhbFJpZ2h0VmFsdWUgPSBjYWxjdWxhdGVWYWx1ZShtYXJn
aW5Mb2dpY2FsUmlnaHQsIGNvbnRhaW5lckxvZ2ljYWxXaWR0aCk7CiAKICAgICAgICAgICAgIC8v
IFVzZSB0aGUgY29udGFpbmluZyBibG9jaydzIGRpcmVjdGlvbiByYXRoZXIgdGhhbiB0aGUgcGFy
ZW50IGJsb2NrJ3MKICAgICAgICAgICAgIC8vIHBlciBDU1MgMi4xIHJlZmVyZW5jZSB0ZXN0IGFi
c3Bvcy1ub24tcmVwbGFjZWQtd2lkdGgtbWFyZ2luLTAwMC4KQEAgLTI4MzksOCArMjgzOSw4IEBA
IHZvaWQgUmVuZGVyQm94Ojpjb21wdXRlUG9zaXRpb25lZExvZ2ljYWwKICAgICAgICAgLy8gYmVj
YXVzZSB0aGUgdmFsdWUgaXMgbm90IHVzZWQgZm9yIGFueSBmdXJ0aGVyIGNhbGN1bGF0aW9ucy4K
IAogICAgICAgICAvLyBDYWxjdWxhdGUgbWFyZ2lucywgJ2F1dG8nIG1hcmdpbnMgYXJlIGlnbm9y
ZWQuCi0gICAgICAgIG1hcmdpbkxvZ2ljYWxMZWZ0VmFsdWUgPSBtYXJnaW5Mb2dpY2FsTGVmdC5j
YWxjTWluVmFsdWUoY29udGFpbmVyTG9naWNhbFdpZHRoKTsKLSAgICAgICAgbWFyZ2luTG9naWNh
bFJpZ2h0VmFsdWUgPSBtYXJnaW5Mb2dpY2FsUmlnaHQuY2FsY01pblZhbHVlKGNvbnRhaW5lckxv
Z2ljYWxXaWR0aCk7CisgICAgICAgIG1hcmdpbkxvZ2ljYWxMZWZ0VmFsdWUgPSBjYWxjdWxhdGVN
aW5pbXVtVmFsdWUobWFyZ2luTG9naWNhbExlZnQsIGNvbnRhaW5lckxvZ2ljYWxXaWR0aCk7Cisg
ICAgICAgIG1hcmdpbkxvZ2ljYWxSaWdodFZhbHVlID0gY2FsY3VsYXRlTWluaW11bVZhbHVlKG1h
cmdpbkxvZ2ljYWxSaWdodCwgY29udGFpbmVyTG9naWNhbFdpZHRoKTsKIAogICAgICAgICBjb25z
dCBMYXlvdXRVbml0IGF2YWlsYWJsZVNwYWNlID0gY29udGFpbmVyTG9naWNhbFdpZHRoIC0gKG1h
cmdpbkxvZ2ljYWxMZWZ0VmFsdWUgKyBtYXJnaW5Mb2dpY2FsUmlnaHRWYWx1ZSArIGJvcmRlcnNQ
bHVzUGFkZGluZyk7CiAKQEAgLTI4NDgsNyArMjg0OCw3IEBAIHZvaWQgUmVuZGVyQm94Ojpjb21w
dXRlUG9zaXRpb25lZExvZ2ljYWwKICAgICAgICAgLy8gVXNlIHJ1bGUvY2FzZSB0aGF0IGFwcGxp
ZXMuCiAgICAgICAgIGlmIChsb2dpY2FsTGVmdElzQXV0byAmJiBsb2dpY2FsV2lkdGhJc0F1dG8g
JiYgIWxvZ2ljYWxSaWdodElzQXV0bykgewogICAgICAgICAgICAgLy8gUlVMRSAxOiAodXNlIHNo
cmluay10by1maXQgZm9yIHdpZHRoLCBhbmQgc29sdmUgb2YgbGVmdCkKLSAgICAgICAgICAgIExh
eW91dFVuaXQgbG9naWNhbFJpZ2h0VmFsdWUgPSBsb2dpY2FsUmlnaHQuY2FsY1ZhbHVlKGNvbnRh
aW5lckxvZ2ljYWxXaWR0aCk7CisgICAgICAgICAgICBMYXlvdXRVbml0IGxvZ2ljYWxSaWdodFZh
bHVlID0gY2FsY3VsYXRlVmFsdWUobG9naWNhbFJpZ2h0LCBjb250YWluZXJMb2dpY2FsV2lkdGgp
OwogCiAgICAgICAgICAgICAvLyBGSVhNRTogd291bGQgaXQgYmUgYmV0dGVyIHRvIGhhdmUgc2hy
aW5rLXRvLWZpdCBpbiBvbmUgc3RlcD8KICAgICAgICAgICAgIExheW91dFVuaXQgcHJlZmVycmVk
V2lkdGggPSBtYXhQcmVmZXJyZWRMb2dpY2FsV2lkdGgoKSAtIGJvcmRlcnNQbHVzUGFkZGluZzsK
QEAgLTI4NTgsNyArMjg1OCw3IEBAIHZvaWQgUmVuZGVyQm94Ojpjb21wdXRlUG9zaXRpb25lZExv
Z2ljYWwKICAgICAgICAgICAgIGxvZ2ljYWxMZWZ0VmFsdWUgPSBhdmFpbGFibGVTcGFjZSAtIChs
b2dpY2FsV2lkdGhWYWx1ZSArIGxvZ2ljYWxSaWdodFZhbHVlKTsKICAgICAgICAgfSBlbHNlIGlm
ICghbG9naWNhbExlZnRJc0F1dG8gJiYgbG9naWNhbFdpZHRoSXNBdXRvICYmIGxvZ2ljYWxSaWdo
dElzQXV0bykgewogICAgICAgICAgICAgLy8gUlVMRSAzOiAodXNlIHNocmluay10by1maXQgZm9y
IHdpZHRoLCBhbmQgbm8gbmVlZCBzb2x2ZSBvZiByaWdodCkKLSAgICAgICAgICAgIGxvZ2ljYWxM
ZWZ0VmFsdWUgPSBsb2dpY2FsTGVmdC5jYWxjVmFsdWUoY29udGFpbmVyTG9naWNhbFdpZHRoKTsK
KyAgICAgICAgICAgIGxvZ2ljYWxMZWZ0VmFsdWUgPSBjYWxjdWxhdGVWYWx1ZShsb2dpY2FsTGVm
dCwgY29udGFpbmVyTG9naWNhbFdpZHRoKTsKIAogICAgICAgICAgICAgLy8gRklYTUU6IHdvdWxk
IGl0IGJlIGJldHRlciB0byBoYXZlIHNocmluay10by1maXQgaW4gb25lIHN0ZXA/CiAgICAgICAg
ICAgICBMYXlvdXRVbml0IHByZWZlcnJlZFdpZHRoID0gbWF4UHJlZmVycmVkTG9naWNhbFdpZHRo
KCkgLSBib3JkZXJzUGx1c1BhZGRpbmc7CkBAIC0yODY3LDE2ICsyODY3LDE2IEBAIHZvaWQgUmVu
ZGVyQm94Ojpjb21wdXRlUG9zaXRpb25lZExvZ2ljYWwKICAgICAgICAgICAgIGxvZ2ljYWxXaWR0
aFZhbHVlID0gbWluKG1heChwcmVmZXJyZWRNaW5XaWR0aCwgYXZhaWxhYmxlV2lkdGgpLCBwcmVm
ZXJyZWRXaWR0aCk7CiAgICAgICAgIH0gZWxzZSBpZiAobG9naWNhbExlZnRJc0F1dG8gJiYgIWxv
Z2ljYWxXaWR0aElzQXV0byAmJiAhbG9naWNhbFJpZ2h0SXNBdXRvKSB7CiAgICAgICAgICAgICAv
LyBSVUxFIDQ6IChzb2x2ZSBmb3IgbGVmdCkKLSAgICAgICAgICAgIGxvZ2ljYWxXaWR0aFZhbHVl
ID0gY29tcHV0ZUNvbnRlbnRCb3hMb2dpY2FsV2lkdGgobG9naWNhbFdpZHRoLmNhbGNWYWx1ZShj
b250YWluZXJMb2dpY2FsV2lkdGgpKTsKLSAgICAgICAgICAgIGxvZ2ljYWxMZWZ0VmFsdWUgPSBh
dmFpbGFibGVTcGFjZSAtIChsb2dpY2FsV2lkdGhWYWx1ZSArIGxvZ2ljYWxSaWdodC5jYWxjVmFs
dWUoY29udGFpbmVyTG9naWNhbFdpZHRoKSk7CisgICAgICAgICAgICBsb2dpY2FsV2lkdGhWYWx1
ZSA9IGNvbXB1dGVDb250ZW50Qm94TG9naWNhbFdpZHRoKGNhbGN1bGF0ZVZhbHVlKGxvZ2ljYWxX
aWR0aCwgY29udGFpbmVyTG9naWNhbFdpZHRoKSk7CisgICAgICAgICAgICBsb2dpY2FsTGVmdFZh
bHVlID0gYXZhaWxhYmxlU3BhY2UgLSAobG9naWNhbFdpZHRoVmFsdWUgKyBjYWxjdWxhdGVWYWx1
ZShsb2dpY2FsUmlnaHQsIGNvbnRhaW5lckxvZ2ljYWxXaWR0aCkpOwogICAgICAgICB9IGVsc2Ug
aWYgKCFsb2dpY2FsTGVmdElzQXV0byAmJiBsb2dpY2FsV2lkdGhJc0F1dG8gJiYgIWxvZ2ljYWxS
aWdodElzQXV0bykgewogICAgICAgICAgICAgLy8gUlVMRSA1OiAoc29sdmUgZm9yIHdpZHRoKQot
ICAgICAgICAgICAgbG9naWNhbExlZnRWYWx1ZSA9IGxvZ2ljYWxMZWZ0LmNhbGNWYWx1ZShjb250
YWluZXJMb2dpY2FsV2lkdGgpOwotICAgICAgICAgICAgbG9naWNhbFdpZHRoVmFsdWUgPSBhdmFp
bGFibGVTcGFjZSAtIChsb2dpY2FsTGVmdFZhbHVlICsgbG9naWNhbFJpZ2h0LmNhbGNWYWx1ZShj
b250YWluZXJMb2dpY2FsV2lkdGgpKTsKKyAgICAgICAgICAgIGxvZ2ljYWxMZWZ0VmFsdWUgPSBj
YWxjdWxhdGVWYWx1ZShsb2dpY2FsTGVmdCwgY29udGFpbmVyTG9naWNhbFdpZHRoKTsKKyAgICAg
ICAgICAgIGxvZ2ljYWxXaWR0aFZhbHVlID0gYXZhaWxhYmxlU3BhY2UgLSAobG9naWNhbExlZnRW
YWx1ZSArIGNhbGN1bGF0ZVZhbHVlKGxvZ2ljYWxSaWdodCwgY29udGFpbmVyTG9naWNhbFdpZHRo
KSk7CiAgICAgICAgIH0gZWxzZSBpZiAoIWxvZ2ljYWxMZWZ0SXNBdXRvICYmICFsb2dpY2FsV2lk
dGhJc0F1dG8gJiYgbG9naWNhbFJpZ2h0SXNBdXRvKSB7CiAgICAgICAgICAgICAvLyBSVUxFIDY6
IChubyBuZWVkIHNvbHZlIGZvciByaWdodCkKLSAgICAgICAgICAgIGxvZ2ljYWxMZWZ0VmFsdWUg
PSBsb2dpY2FsTGVmdC5jYWxjVmFsdWUoY29udGFpbmVyTG9naWNhbFdpZHRoKTsKLSAgICAgICAg
ICAgIGxvZ2ljYWxXaWR0aFZhbHVlID0gY29tcHV0ZUNvbnRlbnRCb3hMb2dpY2FsV2lkdGgobG9n
aWNhbFdpZHRoLmNhbGNWYWx1ZShjb250YWluZXJMb2dpY2FsV2lkdGgpKTsKKyAgICAgICAgICAg
IGxvZ2ljYWxMZWZ0VmFsdWUgPSBjYWxjdWxhdGVWYWx1ZShsb2dpY2FsTGVmdCwgY29udGFpbmVy
TG9naWNhbFdpZHRoKTsKKyAgICAgICAgICAgIGxvZ2ljYWxXaWR0aFZhbHVlID0gY29tcHV0ZUNv
bnRlbnRCb3hMb2dpY2FsV2lkdGgoY2FsY3VsYXRlVmFsdWUobG9naWNhbFdpZHRoLCBjb250YWlu
ZXJMb2dpY2FsV2lkdGgpKTsKICAgICAgICAgfQogICAgIH0KIApAQCAtMzA5MSwxMCArMzA5MSwx
MCBAQCB2b2lkIFJlbmRlckJveDo6Y29tcHV0ZVBvc2l0aW9uZWRMb2dpY2FsCiAgICAgICAgIC8v
IE5PVEU6ICBJdCBpcyBub3QgbmVjZXNzYXJ5IHRvIHNvbHZlIGZvciAnYm90dG9tJyBpbiB0aGUg
b3ZlciBjb25zdHJhaW5lZAogICAgICAgICAvLyBjYXNlIGJlY2F1c2UgdGhlIHZhbHVlIGlzIG5v
dCB1c2VkIGZvciBhbnkgZnVydGhlciBjYWxjdWxhdGlvbnMuCiAKLSAgICAgICAgbG9naWNhbEhl
aWdodFZhbHVlID0gY29tcHV0ZUNvbnRlbnRCb3hMb2dpY2FsSGVpZ2h0KGxvZ2ljYWxIZWlnaHRM
ZW5ndGguY2FsY1ZhbHVlKGNvbnRhaW5lckxvZ2ljYWxIZWlnaHQpKTsKLSAgICAgICAgbG9naWNh
bFRvcFZhbHVlID0gbG9naWNhbFRvcC5jYWxjVmFsdWUoY29udGFpbmVyTG9naWNhbEhlaWdodCk7
CisgICAgICAgIGxvZ2ljYWxIZWlnaHRWYWx1ZSA9IGNvbXB1dGVDb250ZW50Qm94TG9naWNhbEhl
aWdodChjYWxjdWxhdGVWYWx1ZShsb2dpY2FsSGVpZ2h0TGVuZ3RoLCBjb250YWluZXJMb2dpY2Fs
SGVpZ2h0KSk7CisgICAgICAgIGxvZ2ljYWxUb3BWYWx1ZSA9IGNhbGN1bGF0ZVZhbHVlKGxvZ2lj
YWxUb3AsIGNvbnRhaW5lckxvZ2ljYWxIZWlnaHQpOwogCi0gICAgICAgIGNvbnN0IExheW91dFVu
aXQgYXZhaWxhYmxlU3BhY2UgPSBjb250YWluZXJMb2dpY2FsSGVpZ2h0IC0gKGxvZ2ljYWxUb3BW
YWx1ZSArIGxvZ2ljYWxIZWlnaHRWYWx1ZSArIGxvZ2ljYWxCb3R0b20uY2FsY1ZhbHVlKGNvbnRh
aW5lckxvZ2ljYWxIZWlnaHQpICsgYm9yZGVyc1BsdXNQYWRkaW5nKTsKKyAgICAgICAgY29uc3Qg
TGF5b3V0VW5pdCBhdmFpbGFibGVTcGFjZSA9IGNvbnRhaW5lckxvZ2ljYWxIZWlnaHQgLSAobG9n
aWNhbFRvcFZhbHVlICsgbG9naWNhbEhlaWdodFZhbHVlICsgY2FsY3VsYXRlVmFsdWUobG9naWNh
bEJvdHRvbSwgY29udGFpbmVyTG9naWNhbEhlaWdodCkgKyBib3JkZXJzUGx1c1BhZGRpbmcpOwog
CiAgICAgICAgIC8vIE1hcmdpbnMgYXJlIG5vdyB0aGUgb25seSB1bmtub3duCiAgICAgICAgIGlm
IChtYXJnaW5CZWZvcmUuaXNBdXRvKCkgJiYgbWFyZ2luQWZ0ZXIuaXNBdXRvKCkpIHsKQEAgLTMx
MDQsMTYgKzMxMDQsMTYgQEAgdm9pZCBSZW5kZXJCb3g6OmNvbXB1dGVQb3NpdGlvbmVkTG9naWNh
bAogICAgICAgICAgICAgbWFyZ2luQWZ0ZXJWYWx1ZSA9IGF2YWlsYWJsZVNwYWNlIC0gbWFyZ2lu
QmVmb3JlVmFsdWU7IC8vIGFjY291bnQgZm9yIG9kZCB2YWx1ZWQgZGlmZmVyZW5jZXMKICAgICAg
ICAgfSBlbHNlIGlmIChtYXJnaW5CZWZvcmUuaXNBdXRvKCkpIHsKICAgICAgICAgICAgIC8vIFNv
bHZlIGZvciB0b3AgbWFyZ2luCi0gICAgICAgICAgICBtYXJnaW5BZnRlclZhbHVlID0gbWFyZ2lu
QWZ0ZXIuY2FsY1ZhbHVlKGNvbnRhaW5lckxvZ2ljYWxIZWlnaHQpOworICAgICAgICAgICAgbWFy
Z2luQWZ0ZXJWYWx1ZSA9IGNhbGN1bGF0ZVZhbHVlKG1hcmdpbkFmdGVyLCBjb250YWluZXJMb2dp
Y2FsSGVpZ2h0KTsKICAgICAgICAgICAgIG1hcmdpbkJlZm9yZVZhbHVlID0gYXZhaWxhYmxlU3Bh
Y2UgLSBtYXJnaW5BZnRlclZhbHVlOwogICAgICAgICB9IGVsc2UgaWYgKG1hcmdpbkFmdGVyLmlz
QXV0bygpKSB7CiAgICAgICAgICAgICAvLyBTb2x2ZSBmb3IgYm90dG9tIG1hcmdpbgotICAgICAg
ICAgICAgbWFyZ2luQmVmb3JlVmFsdWUgPSBtYXJnaW5CZWZvcmUuY2FsY1ZhbHVlKGNvbnRhaW5l
ckxvZ2ljYWxIZWlnaHQpOworICAgICAgICAgICAgbWFyZ2luQmVmb3JlVmFsdWUgPSBjYWxjdWxh
dGVWYWx1ZShtYXJnaW5CZWZvcmUsIGNvbnRhaW5lckxvZ2ljYWxIZWlnaHQpOwogICAgICAgICAg
ICAgbWFyZ2luQWZ0ZXJWYWx1ZSA9IGF2YWlsYWJsZVNwYWNlIC0gbWFyZ2luQmVmb3JlVmFsdWU7
CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAvLyBPdmVyLWNvbnN0cmFpbmVkLCAobm8g
bmVlZCBzb2x2ZSBmb3IgYm90dG9tKQotICAgICAgICAgICAgbWFyZ2luQmVmb3JlVmFsdWUgPSBt
YXJnaW5CZWZvcmUuY2FsY1ZhbHVlKGNvbnRhaW5lckxvZ2ljYWxIZWlnaHQpOwotICAgICAgICAg
ICAgbWFyZ2luQWZ0ZXJWYWx1ZSA9IG1hcmdpbkFmdGVyLmNhbGNWYWx1ZShjb250YWluZXJMb2dp
Y2FsSGVpZ2h0KTsKKyAgICAgICAgICAgIG1hcmdpbkJlZm9yZVZhbHVlID0gY2FsY3VsYXRlVmFs
dWUobWFyZ2luQmVmb3JlLCBjb250YWluZXJMb2dpY2FsSGVpZ2h0KTsKKyAgICAgICAgICAgIG1h
cmdpbkFmdGVyVmFsdWUgPSBjYWxjdWxhdGVWYWx1ZShtYXJnaW5BZnRlciwgY29udGFpbmVyTG9n
aWNhbEhlaWdodCk7CiAgICAgICAgIH0KICAgICB9IGVsc2UgewogICAgICAgICAvKi0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tKlwKQEAgLTMxNDIsOCArMzE0Miw4IEBAIHZvaWQgUmVuZGVyQm94Ojpjb21wdXRlUG9zaXRp
b25lZExvZ2ljYWwKICAgICAgICAgLy8gYmVjYXVzZSB0aGUgdmFsdWUgaXMgbm90IHVzZWQgZm9y
IGFueSBmdXJ0aGVyIGNhbGN1bGF0aW9ucy4KIAogICAgICAgICAvLyBDYWxjdWxhdGUgbWFyZ2lu
cywgJ2F1dG8nIG1hcmdpbnMgYXJlIGlnbm9yZWQuCi0gICAgICAgIG1hcmdpbkJlZm9yZVZhbHVl
ID0gbWFyZ2luQmVmb3JlLmNhbGNNaW5WYWx1ZShjb250YWluZXJMb2dpY2FsSGVpZ2h0KTsKLSAg
ICAgICAgbWFyZ2luQWZ0ZXJWYWx1ZSA9IG1hcmdpbkFmdGVyLmNhbGNNaW5WYWx1ZShjb250YWlu
ZXJMb2dpY2FsSGVpZ2h0KTsKKyAgICAgICAgbWFyZ2luQmVmb3JlVmFsdWUgPSBjYWxjdWxhdGVN
aW5pbXVtVmFsdWUobWFyZ2luQmVmb3JlLCBjb250YWluZXJMb2dpY2FsSGVpZ2h0KTsKKyAgICAg
ICAgbWFyZ2luQWZ0ZXJWYWx1ZSA9IGNhbGN1bGF0ZU1pbmltdW1WYWx1ZShtYXJnaW5BZnRlciwg
Y29udGFpbmVyTG9naWNhbEhlaWdodCk7CiAKICAgICAgICAgY29uc3QgTGF5b3V0VW5pdCBhdmFp
bGFibGVTcGFjZSA9IGNvbnRhaW5lckxvZ2ljYWxIZWlnaHQgLSAobWFyZ2luQmVmb3JlVmFsdWUg
KyBtYXJnaW5BZnRlclZhbHVlICsgYm9yZGVyc1BsdXNQYWRkaW5nKTsKIApAQCAtMzE1MSwyMyAr
MzE1MSwyMyBAQCB2b2lkIFJlbmRlckJveDo6Y29tcHV0ZVBvc2l0aW9uZWRMb2dpY2FsCiAgICAg
ICAgIGlmIChsb2dpY2FsVG9wSXNBdXRvICYmIGxvZ2ljYWxIZWlnaHRJc0F1dG8gJiYgIWxvZ2lj
YWxCb3R0b21Jc0F1dG8pIHsKICAgICAgICAgICAgIC8vIFJVTEUgMTogKGhlaWdodCBpcyBjb250
ZW50IGJhc2VkLCBzb2x2ZSBvZiB0b3ApCiAgICAgICAgICAgICBsb2dpY2FsSGVpZ2h0VmFsdWUg
PSBjb250ZW50TG9naWNhbEhlaWdodDsKLSAgICAgICAgICAgIGxvZ2ljYWxUb3BWYWx1ZSA9IGF2
YWlsYWJsZVNwYWNlIC0gKGxvZ2ljYWxIZWlnaHRWYWx1ZSArIGxvZ2ljYWxCb3R0b20uY2FsY1Zh
bHVlKGNvbnRhaW5lckxvZ2ljYWxIZWlnaHQpKTsKKyAgICAgICAgICAgIGxvZ2ljYWxUb3BWYWx1
ZSA9IGF2YWlsYWJsZVNwYWNlIC0gKGxvZ2ljYWxIZWlnaHRWYWx1ZSArIGNhbGN1bGF0ZVZhbHVl
KGxvZ2ljYWxCb3R0b20sIGNvbnRhaW5lckxvZ2ljYWxIZWlnaHQpKTsKICAgICAgICAgfSBlbHNl
IGlmICghbG9naWNhbFRvcElzQXV0byAmJiBsb2dpY2FsSGVpZ2h0SXNBdXRvICYmIGxvZ2ljYWxC
b3R0b21Jc0F1dG8pIHsKICAgICAgICAgICAgIC8vIFJVTEUgMzogKGhlaWdodCBpcyBjb250ZW50
IGJhc2VkLCBubyBuZWVkIHNvbHZlIG9mIGJvdHRvbSkKLSAgICAgICAgICAgIGxvZ2ljYWxUb3BW
YWx1ZSA9IGxvZ2ljYWxUb3AuY2FsY1ZhbHVlKGNvbnRhaW5lckxvZ2ljYWxIZWlnaHQpOworICAg
ICAgICAgICAgbG9naWNhbFRvcFZhbHVlID0gY2FsY3VsYXRlVmFsdWUobG9naWNhbFRvcCwgY29u
dGFpbmVyTG9naWNhbEhlaWdodCk7CiAgICAgICAgICAgICBsb2dpY2FsSGVpZ2h0VmFsdWUgPSBj
b250ZW50TG9naWNhbEhlaWdodDsKICAgICAgICAgfSBlbHNlIGlmIChsb2dpY2FsVG9wSXNBdXRv
ICYmICFsb2dpY2FsSGVpZ2h0SXNBdXRvICYmICFsb2dpY2FsQm90dG9tSXNBdXRvKSB7CiAgICAg
ICAgICAgICAvLyBSVUxFIDQ6IChzb2x2ZSBvZiB0b3ApCi0gICAgICAgICAgICBsb2dpY2FsSGVp
Z2h0VmFsdWUgPSBjb21wdXRlQ29udGVudEJveExvZ2ljYWxIZWlnaHQobG9naWNhbEhlaWdodExl
bmd0aC5jYWxjVmFsdWUoY29udGFpbmVyTG9naWNhbEhlaWdodCkpOwotICAgICAgICAgICAgbG9n
aWNhbFRvcFZhbHVlID0gYXZhaWxhYmxlU3BhY2UgLSAobG9naWNhbEhlaWdodFZhbHVlICsgbG9n
aWNhbEJvdHRvbS5jYWxjVmFsdWUoY29udGFpbmVyTG9naWNhbEhlaWdodCkpOworICAgICAgICAg
ICAgbG9naWNhbEhlaWdodFZhbHVlID0gY29tcHV0ZUNvbnRlbnRCb3hMb2dpY2FsSGVpZ2h0KGNh
bGN1bGF0ZVZhbHVlKGxvZ2ljYWxIZWlnaHRMZW5ndGgsIGNvbnRhaW5lckxvZ2ljYWxIZWlnaHQp
KTsKKyAgICAgICAgICAgIGxvZ2ljYWxUb3BWYWx1ZSA9IGF2YWlsYWJsZVNwYWNlIC0gKGxvZ2lj
YWxIZWlnaHRWYWx1ZSArIGNhbGN1bGF0ZVZhbHVlKGxvZ2ljYWxCb3R0b20sIGNvbnRhaW5lckxv
Z2ljYWxIZWlnaHQpKTsKICAgICAgICAgfSBlbHNlIGlmICghbG9naWNhbFRvcElzQXV0byAmJiBs
b2dpY2FsSGVpZ2h0SXNBdXRvICYmICFsb2dpY2FsQm90dG9tSXNBdXRvKSB7CiAgICAgICAgICAg
ICAvLyBSVUxFIDU6IChzb2x2ZSBvZiBoZWlnaHQpCi0gICAgICAgICAgICBsb2dpY2FsVG9wVmFs
dWUgPSBsb2dpY2FsVG9wLmNhbGNWYWx1ZShjb250YWluZXJMb2dpY2FsSGVpZ2h0KTsKLSAgICAg
ICAgICAgIGxvZ2ljYWxIZWlnaHRWYWx1ZSA9IG1heDxMYXlvdXRVbml0PigwLCBhdmFpbGFibGVT
cGFjZSAtIChsb2dpY2FsVG9wVmFsdWUgKyBsb2dpY2FsQm90dG9tLmNhbGNWYWx1ZShjb250YWlu
ZXJMb2dpY2FsSGVpZ2h0KSkpOworICAgICAgICAgICAgbG9naWNhbFRvcFZhbHVlID0gY2FsY3Vs
YXRlVmFsdWUobG9naWNhbFRvcCwgY29udGFpbmVyTG9naWNhbEhlaWdodCk7CisgICAgICAgICAg
ICBsb2dpY2FsSGVpZ2h0VmFsdWUgPSBtYXg8TGF5b3V0VW5pdD4oMCwgYXZhaWxhYmxlU3BhY2Ug
LSAobG9naWNhbFRvcFZhbHVlICsgY2FsY3VsYXRlVmFsdWUobG9naWNhbEJvdHRvbSwgY29udGFp
bmVyTG9naWNhbEhlaWdodCkpKTsKICAgICAgICAgfSBlbHNlIGlmICghbG9naWNhbFRvcElzQXV0
byAmJiAhbG9naWNhbEhlaWdodElzQXV0byAmJiBsb2dpY2FsQm90dG9tSXNBdXRvKSB7CiAgICAg
ICAgICAgICAvLyBSVUxFIDY6IChubyBuZWVkIHNvbHZlIG9mIGJvdHRvbSkKLSAgICAgICAgICAg
IGxvZ2ljYWxIZWlnaHRWYWx1ZSA9IGNvbXB1dGVDb250ZW50Qm94TG9naWNhbEhlaWdodChsb2dp
Y2FsSGVpZ2h0TGVuZ3RoLmNhbGNWYWx1ZShjb250YWluZXJMb2dpY2FsSGVpZ2h0KSk7Ci0gICAg
ICAgICAgICBsb2dpY2FsVG9wVmFsdWUgPSBsb2dpY2FsVG9wLmNhbGNWYWx1ZShjb250YWluZXJM
b2dpY2FsSGVpZ2h0KTsKKyAgICAgICAgICAgIGxvZ2ljYWxIZWlnaHRWYWx1ZSA9IGNvbXB1dGVD
b250ZW50Qm94TG9naWNhbEhlaWdodChjYWxjdWxhdGVWYWx1ZShsb2dpY2FsSGVpZ2h0TGVuZ3Ro
LCBjb250YWluZXJMb2dpY2FsSGVpZ2h0KSk7CisgICAgICAgICAgICBsb2dpY2FsVG9wVmFsdWUg
PSBjYWxjdWxhdGVWYWx1ZShsb2dpY2FsVG9wLCBjb250YWluZXJMb2dpY2FsSGVpZ2h0KTsKICAg
ICAgICAgfQogICAgIH0KIApAQCAtMzI0OCw4ICszMjQ4LDggQEAgdm9pZCBSZW5kZXJCb3g6OmNv
bXB1dGVQb3NpdGlvbmVkTG9naWNhbAogICAgICAgICAvLyAnbGVmdCcgYW5kICdyaWdodCcgY2Fu
bm90IGJlICdhdXRvJyBkdWUgdG8gc3RlcCAzCiAgICAgICAgIEFTU0VSVCghKGxvZ2ljYWxMZWZ0
LmlzQXV0bygpICYmIGxvZ2ljYWxSaWdodC5pc0F1dG8oKSkpOwogCi0gICAgICAgIGxvZ2ljYWxM
ZWZ0VmFsdWUgPSBsb2dpY2FsTGVmdC5jYWxjVmFsdWUoY29udGFpbmVyTG9naWNhbFdpZHRoKTsK
LSAgICAgICAgbG9naWNhbFJpZ2h0VmFsdWUgPSBsb2dpY2FsUmlnaHQuY2FsY1ZhbHVlKGNvbnRh
aW5lckxvZ2ljYWxXaWR0aCk7CisgICAgICAgIGxvZ2ljYWxMZWZ0VmFsdWUgPSBjYWxjdWxhdGVW
YWx1ZShsb2dpY2FsTGVmdCwgY29udGFpbmVyTG9naWNhbFdpZHRoKTsKKyAgICAgICAgbG9naWNh
bFJpZ2h0VmFsdWUgPSBjYWxjdWxhdGVWYWx1ZShsb2dpY2FsUmlnaHQsIGNvbnRhaW5lckxvZ2lj
YWxXaWR0aCk7CiAKICAgICAgICAgTGF5b3V0VW5pdCBkaWZmZXJlbmNlID0gYXZhaWxhYmxlU3Bh
Y2UgLSAobG9naWNhbExlZnRWYWx1ZSArIGxvZ2ljYWxSaWdodFZhbHVlKTsKICAgICAgICAgaWYg
KGRpZmZlcmVuY2UgPiAwKSB7CkBAIC0zMjcyLDM5ICszMjcyLDM5IEBAIHZvaWQgUmVuZGVyQm94
Ojpjb21wdXRlUG9zaXRpb25lZExvZ2ljYWwKICAgICAgKiAgICB0aGF0IHZhbHVlLgogICAgIFwq
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0qLwogICAgIH0gZWxzZSBpZiAobG9naWNhbExlZnQuaXNBdXRvKCkpIHsK
LSAgICAgICAgbWFyZ2luTG9naWNhbExlZnRBbGlhcyA9IG1hcmdpbkxvZ2ljYWxMZWZ0LmNhbGNW
YWx1ZShjb250YWluZXJMb2dpY2FsV2lkdGgpOwotICAgICAgICBtYXJnaW5Mb2dpY2FsUmlnaHRB
bGlhcyA9IG1hcmdpbkxvZ2ljYWxSaWdodC5jYWxjVmFsdWUoY29udGFpbmVyTG9naWNhbFdpZHRo
KTsKLSAgICAgICAgbG9naWNhbFJpZ2h0VmFsdWUgPSBsb2dpY2FsUmlnaHQuY2FsY1ZhbHVlKGNv
bnRhaW5lckxvZ2ljYWxXaWR0aCk7CisgICAgICAgIG1hcmdpbkxvZ2ljYWxMZWZ0QWxpYXMgPSBj
YWxjdWxhdGVWYWx1ZShtYXJnaW5Mb2dpY2FsTGVmdCwgY29udGFpbmVyTG9naWNhbFdpZHRoKTsK
KyAgICAgICAgbWFyZ2luTG9naWNhbFJpZ2h0QWxpYXMgPSBjYWxjdWxhdGVWYWx1ZShtYXJnaW5M
b2dpY2FsUmlnaHQsIGNvbnRhaW5lckxvZ2ljYWxXaWR0aCk7CisgICAgICAgIGxvZ2ljYWxSaWdo
dFZhbHVlID0gY2FsY3VsYXRlVmFsdWUobG9naWNhbFJpZ2h0LCBjb250YWluZXJMb2dpY2FsV2lk
dGgpOwogCiAgICAgICAgIC8vIFNvbHZlIGZvciAnbGVmdCcKICAgICAgICAgbG9naWNhbExlZnRW
YWx1ZSA9IGF2YWlsYWJsZVNwYWNlIC0gKGxvZ2ljYWxSaWdodFZhbHVlICsgbWFyZ2luTG9naWNh
bExlZnRBbGlhcyArIG1hcmdpbkxvZ2ljYWxSaWdodEFsaWFzKTsKICAgICB9IGVsc2UgaWYgKGxv
Z2ljYWxSaWdodC5pc0F1dG8oKSkgewotICAgICAgICBtYXJnaW5Mb2dpY2FsTGVmdEFsaWFzID0g
bWFyZ2luTG9naWNhbExlZnQuY2FsY1ZhbHVlKGNvbnRhaW5lckxvZ2ljYWxXaWR0aCk7Ci0gICAg
ICAgIG1hcmdpbkxvZ2ljYWxSaWdodEFsaWFzID0gbWFyZ2luTG9naWNhbFJpZ2h0LmNhbGNWYWx1
ZShjb250YWluZXJMb2dpY2FsV2lkdGgpOwotICAgICAgICBsb2dpY2FsTGVmdFZhbHVlID0gbG9n
aWNhbExlZnQuY2FsY1ZhbHVlKGNvbnRhaW5lckxvZ2ljYWxXaWR0aCk7CisgICAgICAgIG1hcmdp
bkxvZ2ljYWxMZWZ0QWxpYXMgPSBjYWxjdWxhdGVWYWx1ZShtYXJnaW5Mb2dpY2FsTGVmdCwgY29u
dGFpbmVyTG9naWNhbFdpZHRoKTsKKyAgICAgICAgbWFyZ2luTG9naWNhbFJpZ2h0QWxpYXMgPSBj
YWxjdWxhdGVWYWx1ZShtYXJnaW5Mb2dpY2FsUmlnaHQsIGNvbnRhaW5lckxvZ2ljYWxXaWR0aCk7
CisgICAgICAgIGxvZ2ljYWxMZWZ0VmFsdWUgPSBjYWxjdWxhdGVWYWx1ZShsb2dpY2FsTGVmdCwg
Y29udGFpbmVyTG9naWNhbFdpZHRoKTsKIAogICAgICAgICAvLyBTb2x2ZSBmb3IgJ3JpZ2h0Jwog
ICAgICAgICBsb2dpY2FsUmlnaHRWYWx1ZSA9IGF2YWlsYWJsZVNwYWNlIC0gKGxvZ2ljYWxMZWZ0
VmFsdWUgKyBtYXJnaW5Mb2dpY2FsTGVmdEFsaWFzICsgbWFyZ2luTG9naWNhbFJpZ2h0QWxpYXMp
OwogICAgIH0gZWxzZSBpZiAobWFyZ2luTG9naWNhbExlZnQuaXNBdXRvKCkpIHsKLSAgICAgICAg
bWFyZ2luTG9naWNhbFJpZ2h0QWxpYXMgPSBtYXJnaW5Mb2dpY2FsUmlnaHQuY2FsY1ZhbHVlKGNv
bnRhaW5lckxvZ2ljYWxXaWR0aCk7Ci0gICAgICAgIGxvZ2ljYWxMZWZ0VmFsdWUgPSBsb2dpY2Fs
TGVmdC5jYWxjVmFsdWUoY29udGFpbmVyTG9naWNhbFdpZHRoKTsKLSAgICAgICAgbG9naWNhbFJp
Z2h0VmFsdWUgPSBsb2dpY2FsUmlnaHQuY2FsY1ZhbHVlKGNvbnRhaW5lckxvZ2ljYWxXaWR0aCk7
CisgICAgICAgIG1hcmdpbkxvZ2ljYWxSaWdodEFsaWFzID0gY2FsY3VsYXRlVmFsdWUobWFyZ2lu
TG9naWNhbFJpZ2h0LCBjb250YWluZXJMb2dpY2FsV2lkdGgpOworICAgICAgICBsb2dpY2FsTGVm
dFZhbHVlID0gY2FsY3VsYXRlVmFsdWUobG9naWNhbExlZnQsIGNvbnRhaW5lckxvZ2ljYWxXaWR0
aCk7CisgICAgICAgIGxvZ2ljYWxSaWdodFZhbHVlID0gY2FsY3VsYXRlVmFsdWUobG9naWNhbFJp
Z2h0LCBjb250YWluZXJMb2dpY2FsV2lkdGgpOwogCiAgICAgICAgIC8vIFNvbHZlIGZvciAnbWFy
Z2luLWxlZnQnCiAgICAgICAgIG1hcmdpbkxvZ2ljYWxMZWZ0QWxpYXMgPSBhdmFpbGFibGVTcGFj
ZSAtIChsb2dpY2FsTGVmdFZhbHVlICsgbG9naWNhbFJpZ2h0VmFsdWUgKyBtYXJnaW5Mb2dpY2Fs
UmlnaHRBbGlhcyk7CiAgICAgfSBlbHNlIGlmIChtYXJnaW5Mb2dpY2FsUmlnaHQuaXNBdXRvKCkp
IHsKLSAgICAgICAgbWFyZ2luTG9naWNhbExlZnRBbGlhcyA9IG1hcmdpbkxvZ2ljYWxMZWZ0LmNh
bGNWYWx1ZShjb250YWluZXJMb2dpY2FsV2lkdGgpOwotICAgICAgICBsb2dpY2FsTGVmdFZhbHVl
ID0gbG9naWNhbExlZnQuY2FsY1ZhbHVlKGNvbnRhaW5lckxvZ2ljYWxXaWR0aCk7Ci0gICAgICAg
IGxvZ2ljYWxSaWdodFZhbHVlID0gbG9naWNhbFJpZ2h0LmNhbGNWYWx1ZShjb250YWluZXJMb2dp
Y2FsV2lkdGgpOworICAgICAgICBtYXJnaW5Mb2dpY2FsTGVmdEFsaWFzID0gY2FsY3VsYXRlVmFs
dWUobWFyZ2luTG9naWNhbExlZnQsIGNvbnRhaW5lckxvZ2ljYWxXaWR0aCk7CisgICAgICAgIGxv
Z2ljYWxMZWZ0VmFsdWUgPSBjYWxjdWxhdGVWYWx1ZShsb2dpY2FsTGVmdCwgY29udGFpbmVyTG9n
aWNhbFdpZHRoKTsKKyAgICAgICAgbG9naWNhbFJpZ2h0VmFsdWUgPSBjYWxjdWxhdGVWYWx1ZShs
b2dpY2FsUmlnaHQsIGNvbnRhaW5lckxvZ2ljYWxXaWR0aCk7CiAKICAgICAgICAgLy8gU29sdmUg
Zm9yICdtYXJnaW4tcmlnaHQnCiAgICAgICAgIG1hcmdpbkxvZ2ljYWxSaWdodEFsaWFzID0gYXZh
aWxhYmxlU3BhY2UgLSAobG9naWNhbExlZnRWYWx1ZSArIGxvZ2ljYWxSaWdodFZhbHVlICsgbWFy
Z2luTG9naWNhbExlZnRBbGlhcyk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgLy8gTm90aGluZyBp
cyAnYXV0bycsIGp1c3QgY2FsY3VsYXRlIHRoZSB2YWx1ZXMuCi0gICAgICAgIG1hcmdpbkxvZ2lj
YWxMZWZ0QWxpYXMgPSBtYXJnaW5Mb2dpY2FsTGVmdC5jYWxjVmFsdWUoY29udGFpbmVyTG9naWNh
bFdpZHRoKTsKLSAgICAgICAgbWFyZ2luTG9naWNhbFJpZ2h0QWxpYXMgPSBtYXJnaW5Mb2dpY2Fs
UmlnaHQuY2FsY1ZhbHVlKGNvbnRhaW5lckxvZ2ljYWxXaWR0aCk7Ci0gICAgICAgIGxvZ2ljYWxS
aWdodFZhbHVlID0gbG9naWNhbFJpZ2h0LmNhbGNWYWx1ZShjb250YWluZXJMb2dpY2FsV2lkdGgp
OwotICAgICAgICBsb2dpY2FsTGVmdFZhbHVlID0gbG9naWNhbExlZnQuY2FsY1ZhbHVlKGNvbnRh
aW5lckxvZ2ljYWxXaWR0aCk7CisgICAgICAgIG1hcmdpbkxvZ2ljYWxMZWZ0QWxpYXMgPSBjYWxj
dWxhdGVWYWx1ZShtYXJnaW5Mb2dpY2FsTGVmdCwgY29udGFpbmVyTG9naWNhbFdpZHRoKTsKKyAg
ICAgICAgbWFyZ2luTG9naWNhbFJpZ2h0QWxpYXMgPSBjYWxjdWxhdGVWYWx1ZShtYXJnaW5Mb2dp
Y2FsUmlnaHQsIGNvbnRhaW5lckxvZ2ljYWxXaWR0aCk7CisgICAgICAgIGxvZ2ljYWxSaWdodFZh
bHVlID0gY2FsY3VsYXRlVmFsdWUobG9naWNhbFJpZ2h0LCBjb250YWluZXJMb2dpY2FsV2lkdGgp
OworICAgICAgICBsb2dpY2FsTGVmdFZhbHVlID0gY2FsY3VsYXRlVmFsdWUobG9naWNhbExlZnQs
IGNvbnRhaW5lckxvZ2ljYWxXaWR0aCk7CiAgICAgICAgIC8vIElmIHRoZSBjb250YWluaW5nIGJs
b2NrIGlzIHJpZ2h0LXRvLWxlZnQsIHRoZW4gcHVzaCB0aGUgbGVmdCBwb3NpdGlvbiBhcyBmYXIg
dG8gdGhlIHJpZ2h0IGFzIHBvc3NpYmxlCiAgICAgICAgIGlmIChjb250YWluZXJEaXJlY3Rpb24g
PT0gUlRMKSB7CiAgICAgICAgICAgICBpbnQgdG90YWxMb2dpY2FsV2lkdGggPSBsb2dpY2FsV2lk
dGgoKSArIGxvZ2ljYWxMZWZ0VmFsdWUgKyBsb2dpY2FsUmlnaHRWYWx1ZSArICBtYXJnaW5Mb2dp
Y2FsTGVmdEFsaWFzICsgbWFyZ2luTG9naWNhbFJpZ2h0QWxpYXM7CkBAIC0zNDEwLDggKzM0MTAs
OCBAQCB2b2lkIFJlbmRlckJveDo6Y29tcHV0ZVBvc2l0aW9uZWRMb2dpY2FsCiAgICAgICAgIC8v
ICd0b3AnIGFuZCAnYm90dG9tJyBjYW5ub3QgYmUgJ2F1dG8nIGR1ZSB0byBzdGVwIDIgYW5kIDMg
Y29tYmluZWQuCiAgICAgICAgIEFTU0VSVCghKGxvZ2ljYWxUb3AuaXNBdXRvKCkgfHwgbG9naWNh
bEJvdHRvbS5pc0F1dG8oKSkpOwogCi0gICAgICAgIGxvZ2ljYWxUb3BWYWx1ZSA9IGxvZ2ljYWxU
b3AuY2FsY1ZhbHVlKGNvbnRhaW5lckxvZ2ljYWxIZWlnaHQpOwotICAgICAgICBsb2dpY2FsQm90
dG9tVmFsdWUgPSBsb2dpY2FsQm90dG9tLmNhbGNWYWx1ZShjb250YWluZXJMb2dpY2FsSGVpZ2h0
KTsKKyAgICAgICAgbG9naWNhbFRvcFZhbHVlID0gY2FsY3VsYXRlVmFsdWUobG9naWNhbFRvcCwg
Y29udGFpbmVyTG9naWNhbEhlaWdodCk7CisgICAgICAgIGxvZ2ljYWxCb3R0b21WYWx1ZSA9IGNh
bGN1bGF0ZVZhbHVlKGxvZ2ljYWxCb3R0b20sIGNvbnRhaW5lckxvZ2ljYWxIZWlnaHQpOwogCiAg
ICAgICAgIExheW91dFVuaXQgZGlmZmVyZW5jZSA9IGF2YWlsYWJsZVNwYWNlIC0gKGxvZ2ljYWxU
b3BWYWx1ZSArIGxvZ2ljYWxCb3R0b21WYWx1ZSk7CiAgICAgICAgIC8vIE5PVEU6IFRoaXMgbWF5
IHJlc3VsdCBpbiBuZWdhdGl2ZSB2YWx1ZXMuCkBAIC0zNDIzLDM5ICszNDIzLDM5IEBAIHZvaWQg
UmVuZGVyQm94Ojpjb21wdXRlUG9zaXRpb25lZExvZ2ljYWwKICAgICAgKiAgICBmb3IgdGhhdCB2
YWx1ZS4KICAgICBcKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KICAgICB9IGVsc2UgaWYgKGxvZ2ljYWxUb3Au
aXNBdXRvKCkpIHsKLSAgICAgICAgbWFyZ2luQmVmb3JlQWxpYXMgPSBtYXJnaW5CZWZvcmUuY2Fs
Y1ZhbHVlKGNvbnRhaW5lckxvZ2ljYWxIZWlnaHQpOwotICAgICAgICBtYXJnaW5BZnRlckFsaWFz
ID0gbWFyZ2luQWZ0ZXIuY2FsY1ZhbHVlKGNvbnRhaW5lckxvZ2ljYWxIZWlnaHQpOwotICAgICAg
ICBsb2dpY2FsQm90dG9tVmFsdWUgPSBsb2dpY2FsQm90dG9tLmNhbGNWYWx1ZShjb250YWluZXJM
b2dpY2FsSGVpZ2h0KTsKKyAgICAgICAgbWFyZ2luQmVmb3JlQWxpYXMgPSBjYWxjdWxhdGVWYWx1
ZShtYXJnaW5CZWZvcmUsIGNvbnRhaW5lckxvZ2ljYWxIZWlnaHQpOworICAgICAgICBtYXJnaW5B
ZnRlckFsaWFzID0gY2FsY3VsYXRlVmFsdWUobWFyZ2luQWZ0ZXIsIGNvbnRhaW5lckxvZ2ljYWxI
ZWlnaHQpOworICAgICAgICBsb2dpY2FsQm90dG9tVmFsdWUgPSBjYWxjdWxhdGVWYWx1ZShsb2dp
Y2FsQm90dG9tLCBjb250YWluZXJMb2dpY2FsSGVpZ2h0KTsKIAogICAgICAgICAvLyBTb2x2ZSBm
b3IgJ3RvcCcKICAgICAgICAgbG9naWNhbFRvcFZhbHVlID0gYXZhaWxhYmxlU3BhY2UgLSAobG9n
aWNhbEJvdHRvbVZhbHVlICsgbWFyZ2luQmVmb3JlQWxpYXMgKyBtYXJnaW5BZnRlckFsaWFzKTsK
ICAgICB9IGVsc2UgaWYgKGxvZ2ljYWxCb3R0b20uaXNBdXRvKCkpIHsKLSAgICAgICAgbWFyZ2lu
QmVmb3JlQWxpYXMgPSBtYXJnaW5CZWZvcmUuY2FsY1ZhbHVlKGNvbnRhaW5lckxvZ2ljYWxIZWln
aHQpOwotICAgICAgICBtYXJnaW5BZnRlckFsaWFzID0gbWFyZ2luQWZ0ZXIuY2FsY1ZhbHVlKGNv
bnRhaW5lckxvZ2ljYWxIZWlnaHQpOwotICAgICAgICBsb2dpY2FsVG9wVmFsdWUgPSBsb2dpY2Fs
VG9wLmNhbGNWYWx1ZShjb250YWluZXJMb2dpY2FsSGVpZ2h0KTsKKyAgICAgICAgbWFyZ2luQmVm
b3JlQWxpYXMgPSBjYWxjdWxhdGVWYWx1ZShtYXJnaW5CZWZvcmUsIGNvbnRhaW5lckxvZ2ljYWxI
ZWlnaHQpOworICAgICAgICBtYXJnaW5BZnRlckFsaWFzID0gY2FsY3VsYXRlVmFsdWUobWFyZ2lu
QWZ0ZXIsIGNvbnRhaW5lckxvZ2ljYWxIZWlnaHQpOworICAgICAgICBsb2dpY2FsVG9wVmFsdWUg
PSBjYWxjdWxhdGVWYWx1ZShsb2dpY2FsVG9wLCBjb250YWluZXJMb2dpY2FsSGVpZ2h0KTsKIAog
ICAgICAgICAvLyBTb2x2ZSBmb3IgJ2JvdHRvbScKICAgICAgICAgLy8gTk9URTogSXQgaXMgbm90
IG5lY2Vzc2FyeSB0byBzb2x2ZSBmb3IgJ2JvdHRvbScgYmVjYXVzZSB3ZSBkb24ndCBldmVyCiAg
ICAgICAgIC8vIHVzZSB0aGUgdmFsdWUuCiAgICAgfSBlbHNlIGlmIChtYXJnaW5CZWZvcmUuaXNB
dXRvKCkpIHsKLSAgICAgICAgbWFyZ2luQWZ0ZXJBbGlhcyA9IG1hcmdpbkFmdGVyLmNhbGNWYWx1
ZShjb250YWluZXJMb2dpY2FsSGVpZ2h0KTsKLSAgICAgICAgbG9naWNhbFRvcFZhbHVlID0gbG9n
aWNhbFRvcC5jYWxjVmFsdWUoY29udGFpbmVyTG9naWNhbEhlaWdodCk7Ci0gICAgICAgIGxvZ2lj
YWxCb3R0b21WYWx1ZSA9IGxvZ2ljYWxCb3R0b20uY2FsY1ZhbHVlKGNvbnRhaW5lckxvZ2ljYWxI
ZWlnaHQpOworICAgICAgICBtYXJnaW5BZnRlckFsaWFzID0gY2FsY3VsYXRlVmFsdWUobWFyZ2lu
QWZ0ZXIsIGNvbnRhaW5lckxvZ2ljYWxIZWlnaHQpOworICAgICAgICBsb2dpY2FsVG9wVmFsdWUg
PSBjYWxjdWxhdGVWYWx1ZShsb2dpY2FsVG9wLCBjb250YWluZXJMb2dpY2FsSGVpZ2h0KTsKKyAg
ICAgICAgbG9naWNhbEJvdHRvbVZhbHVlID0gY2FsY3VsYXRlVmFsdWUobG9naWNhbEJvdHRvbSwg
Y29udGFpbmVyTG9naWNhbEhlaWdodCk7CiAKICAgICAgICAgLy8gU29sdmUgZm9yICdtYXJnaW4t
dG9wJwogICAgICAgICBtYXJnaW5CZWZvcmVBbGlhcyA9IGF2YWlsYWJsZVNwYWNlIC0gKGxvZ2lj
YWxUb3BWYWx1ZSArIGxvZ2ljYWxCb3R0b21WYWx1ZSArIG1hcmdpbkFmdGVyQWxpYXMpOwogICAg
IH0gZWxzZSBpZiAobWFyZ2luQWZ0ZXIuaXNBdXRvKCkpIHsKLSAgICAgICAgbWFyZ2luQmVmb3Jl
QWxpYXMgPSBtYXJnaW5CZWZvcmUuY2FsY1ZhbHVlKGNvbnRhaW5lckxvZ2ljYWxIZWlnaHQpOwot
ICAgICAgICBsb2dpY2FsVG9wVmFsdWUgPSBsb2dpY2FsVG9wLmNhbGNWYWx1ZShjb250YWluZXJM
b2dpY2FsSGVpZ2h0KTsKLSAgICAgICAgbG9naWNhbEJvdHRvbVZhbHVlID0gbG9naWNhbEJvdHRv
bS5jYWxjVmFsdWUoY29udGFpbmVyTG9naWNhbEhlaWdodCk7CisgICAgICAgIG1hcmdpbkJlZm9y
ZUFsaWFzID0gY2FsY3VsYXRlVmFsdWUobWFyZ2luQmVmb3JlLCBjb250YWluZXJMb2dpY2FsSGVp
Z2h0KTsKKyAgICAgICAgbG9naWNhbFRvcFZhbHVlID0gY2FsY3VsYXRlVmFsdWUobG9naWNhbFRv
cCwgY29udGFpbmVyTG9naWNhbEhlaWdodCk7CisgICAgICAgIGxvZ2ljYWxCb3R0b21WYWx1ZSA9
IGNhbGN1bGF0ZVZhbHVlKGxvZ2ljYWxCb3R0b20sIGNvbnRhaW5lckxvZ2ljYWxIZWlnaHQpOwog
CiAgICAgICAgIC8vIFNvbHZlIGZvciAnbWFyZ2luLWJvdHRvbScKICAgICAgICAgbWFyZ2luQWZ0
ZXJBbGlhcyA9IGF2YWlsYWJsZVNwYWNlIC0gKGxvZ2ljYWxUb3BWYWx1ZSArIGxvZ2ljYWxCb3R0
b21WYWx1ZSArIG1hcmdpbkJlZm9yZUFsaWFzKTsKICAgICB9IGVsc2UgewogICAgICAgICAvLyBO
b3RoaW5nIGlzICdhdXRvJywganVzdCBjYWxjdWxhdGUgdGhlIHZhbHVlcy4KLSAgICAgICAgbWFy
Z2luQmVmb3JlQWxpYXMgPSBtYXJnaW5CZWZvcmUuY2FsY1ZhbHVlKGNvbnRhaW5lckxvZ2ljYWxI
ZWlnaHQpOwotICAgICAgICBtYXJnaW5BZnRlckFsaWFzID0gbWFyZ2luQWZ0ZXIuY2FsY1ZhbHVl
KGNvbnRhaW5lckxvZ2ljYWxIZWlnaHQpOwotICAgICAgICBsb2dpY2FsVG9wVmFsdWUgPSBsb2dp
Y2FsVG9wLmNhbGNWYWx1ZShjb250YWluZXJMb2dpY2FsSGVpZ2h0KTsKKyAgICAgICAgbWFyZ2lu
QmVmb3JlQWxpYXMgPSBjYWxjdWxhdGVWYWx1ZShtYXJnaW5CZWZvcmUsIGNvbnRhaW5lckxvZ2lj
YWxIZWlnaHQpOworICAgICAgICBtYXJnaW5BZnRlckFsaWFzID0gY2FsY3VsYXRlVmFsdWUobWFy
Z2luQWZ0ZXIsIGNvbnRhaW5lckxvZ2ljYWxIZWlnaHQpOworICAgICAgICBsb2dpY2FsVG9wVmFs
dWUgPSBjYWxjdWxhdGVWYWx1ZShsb2dpY2FsVG9wLCBjb250YWluZXJMb2dpY2FsSGVpZ2h0KTsK
ICAgICAgICAgLy8gTk9URTogSXQgaXMgbm90IG5lY2Vzc2FyeSB0byBzb2x2ZSBmb3IgJ2JvdHRv
bScgYmVjYXVzZSB3ZSBkb24ndCBldmVyCiAgICAgICAgIC8vIHVzZSB0aGUgdmFsdWUuCiAgICAg
IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVs
T2JqZWN0LmNwcAkocmV2aXNpb24gMTEwODE0KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDM3LDEyICs0Mzcs
MTIgQEAgTGF5b3V0VW5pdCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cmVsYXRpdgogICAgIGlmICgh
c3R5bGUoKS0+bGVmdCgpLmlzQXV0bygpKSB7CiAgICAgICAgIFJlbmRlckJsb2NrKiBjYiA9IGNv
bnRhaW5pbmdCbG9jaygpOwogICAgICAgICBpZiAoIXN0eWxlKCktPnJpZ2h0KCkuaXNBdXRvKCkg
JiYgIWNiLT5zdHlsZSgpLT5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkpCi0gICAgICAgICAgICBy
ZXR1cm4gLXN0eWxlKCktPnJpZ2h0KCkuY2FsY1ZhbHVlKGNiLT5hdmFpbGFibGVXaWR0aCgpKTsK
LSAgICAgICAgcmV0dXJuIG9mZnNldCArIHN0eWxlKCktPmxlZnQoKS5jYWxjVmFsdWUoY2ItPmF2
YWlsYWJsZVdpZHRoKCkpOworICAgICAgICAgICAgcmV0dXJuIC1jYWxjdWxhdGVWYWx1ZShzdHls
ZSgpLT5yaWdodCgpLCBjYi0+YXZhaWxhYmxlV2lkdGgoKSk7CisgICAgICAgIHJldHVybiBvZmZz
ZXQgKyBjYWxjdWxhdGVWYWx1ZShzdHlsZSgpLT5sZWZ0KCksIGNiLT5hdmFpbGFibGVXaWR0aCgp
KTsKICAgICB9CiAgICAgaWYgKCFzdHlsZSgpLT5yaWdodCgpLmlzQXV0bygpKSB7CiAgICAgICAg
IFJlbmRlckJsb2NrKiBjYiA9IGNvbnRhaW5pbmdCbG9jaygpOwotICAgICAgICByZXR1cm4gb2Zm
c2V0ICsgLXN0eWxlKCktPnJpZ2h0KCkuY2FsY1ZhbHVlKGNiLT5hdmFpbGFibGVXaWR0aCgpKTsK
KyAgICAgICAgcmV0dXJuIG9mZnNldCArIC1jYWxjdWxhdGVWYWx1ZShzdHlsZSgpLT5yaWdodCgp
LCBjYi0+YXZhaWxhYmxlV2lkdGgoKSk7CiAgICAgfQogICAgIHJldHVybiBvZmZzZXQ7CiB9CkBA
IC00NjIsMTMgKzQ2MiwxMyBAQCBMYXlvdXRVbml0IFJlbmRlckJveE1vZGVsT2JqZWN0OjpyZWxh
dGl2CiAgICAgICAgICYmICghY29udGFpbmluZ0Jsb2NrLT5zdHlsZSgpLT5oZWlnaHQoKS5pc0F1
dG8oKQogICAgICAgICAgICAgfHwgIXN0eWxlKCktPnRvcCgpLmlzUGVyY2VudCgpCiAgICAgICAg
ICAgICB8fCBjb250YWluaW5nQmxvY2stPnN0cmV0Y2hlc1RvVmlld3BvcnQoKSkpCi0gICAgICAg
IHJldHVybiBvZmZzZXQgKyBzdHlsZSgpLT50b3AoKS5jYWxjVmFsdWUoY29udGFpbmluZ0Jsb2Nr
LT5hdmFpbGFibGVIZWlnaHQoKSk7CisgICAgICAgIHJldHVybiBvZmZzZXQgKyBjYWxjdWxhdGVW
YWx1ZShzdHlsZSgpLT50b3AoKSwgY29udGFpbmluZ0Jsb2NrLT5hdmFpbGFibGVIZWlnaHQoKSk7
CiAKICAgICBpZiAoIXN0eWxlKCktPmJvdHRvbSgpLmlzQXV0bygpCiAgICAgICAgICYmICghY29u
dGFpbmluZ0Jsb2NrLT5zdHlsZSgpLT5oZWlnaHQoKS5pc0F1dG8oKQogICAgICAgICAgICAgfHwg
IXN0eWxlKCktPmJvdHRvbSgpLmlzUGVyY2VudCgpCiAgICAgICAgICAgICB8fCBjb250YWluaW5n
QmxvY2stPnN0cmV0Y2hlc1RvVmlld3BvcnQoKSkpCi0gICAgICAgIHJldHVybiBvZmZzZXQgKyAt
c3R5bGUoKS0+Ym90dG9tKCkuY2FsY1ZhbHVlKGNvbnRhaW5pbmdCbG9jay0+YXZhaWxhYmxlSGVp
Z2h0KCkpOworICAgICAgICByZXR1cm4gb2Zmc2V0ICsgLWNhbGN1bGF0ZVZhbHVlKHN0eWxlKCkt
PmJvdHRvbSgpLCBjb250YWluaW5nQmxvY2stPmF2YWlsYWJsZUhlaWdodCgpKTsKIAogICAgIHJl
dHVybiBvZmZzZXQ7CiB9CkBAIC01NTYsNyArNTU2LDcgQEAgTGF5b3V0VW5pdCBSZW5kZXJCb3hN
b2RlbE9iamVjdDo6cGFkZGluZwogICAgIExlbmd0aCBwYWRkaW5nID0gc3R5bGUoKS0+cGFkZGlu
Z1RvcCgpOwogICAgIGlmIChwYWRkaW5nLmlzUGVyY2VudCgpKQogICAgICAgICB3ID0gY29udGFp
bmluZ0Jsb2NrKCktPmF2YWlsYWJsZUxvZ2ljYWxXaWR0aCgpOwotICAgIHJldHVybiBwYWRkaW5n
LmNhbGNNaW5WYWx1ZSh3KTsKKyAgICByZXR1cm4gY2FsY3VsYXRlTWluaW11bVZhbHVlKHBhZGRp
bmcsIHcpOwogfQogCiBMYXlvdXRVbml0IFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWRkaW5nQm90
dG9tKFBhZGRpbmdPcHRpb25zKSBjb25zdApAQCAtNTY1LDcgKzU2NSw3IEBAIExheW91dFVuaXQg
UmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhZGRpbmcKICAgICBMZW5ndGggcGFkZGluZyA9IHN0eWxl
KCktPnBhZGRpbmdCb3R0b20oKTsKICAgICBpZiAocGFkZGluZy5pc1BlcmNlbnQoKSkKICAgICAg
ICAgdyA9IGNvbnRhaW5pbmdCbG9jaygpLT5hdmFpbGFibGVMb2dpY2FsV2lkdGgoKTsKLSAgICBy
ZXR1cm4gcGFkZGluZy5jYWxjTWluVmFsdWUodyk7CisgICAgcmV0dXJuIGNhbGN1bGF0ZU1pbmlt
dW1WYWx1ZShwYWRkaW5nLCB3KTsKIH0KIAogTGF5b3V0VW5pdCBSZW5kZXJCb3hNb2RlbE9iamVj
dDo6cGFkZGluZ0xlZnQoUGFkZGluZ09wdGlvbnMpIGNvbnN0CkBAIC01NzQsNyArNTc0LDcgQEAg
TGF5b3V0VW5pdCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFkZGluZwogICAgIExlbmd0aCBwYWRk
aW5nID0gc3R5bGUoKS0+cGFkZGluZ0xlZnQoKTsKICAgICBpZiAocGFkZGluZy5pc1BlcmNlbnQo
KSkKICAgICAgICAgdyA9IGNvbnRhaW5pbmdCbG9jaygpLT5hdmFpbGFibGVMb2dpY2FsV2lkdGgo
KTsKLSAgICByZXR1cm4gcGFkZGluZy5jYWxjTWluVmFsdWUodyk7CisgICAgcmV0dXJuIGNhbGN1
bGF0ZU1pbmltdW1WYWx1ZShwYWRkaW5nLCB3KTsKIH0KIAogTGF5b3V0VW5pdCBSZW5kZXJCb3hN
b2RlbE9iamVjdDo6cGFkZGluZ1JpZ2h0KFBhZGRpbmdPcHRpb25zKSBjb25zdApAQCAtNTgzLDcg
KzU4Myw3IEBAIExheW91dFVuaXQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhZGRpbmcKICAgICBM
ZW5ndGggcGFkZGluZyA9IHN0eWxlKCktPnBhZGRpbmdSaWdodCgpOwogICAgIGlmIChwYWRkaW5n
LmlzUGVyY2VudCgpKQogICAgICAgICB3ID0gY29udGFpbmluZ0Jsb2NrKCktPmF2YWlsYWJsZUxv
Z2ljYWxXaWR0aCgpOwotICAgIHJldHVybiBwYWRkaW5nLmNhbGNNaW5WYWx1ZSh3KTsKKyAgICBy
ZXR1cm4gY2FsY3VsYXRlTWluaW11bVZhbHVlKHBhZGRpbmcsIHcpOwogfQogCiBMYXlvdXRVbml0
IFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWRkaW5nQmVmb3JlKFBhZGRpbmdPcHRpb25zKSBjb25z
dApAQCAtNTkyLDcgKzU5Miw3IEBAIExheW91dFVuaXQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBh
ZGRpbmcKICAgICBMZW5ndGggcGFkZGluZyA9IHN0eWxlKCktPnBhZGRpbmdCZWZvcmUoKTsKICAg
ICBpZiAocGFkZGluZy5pc1BlcmNlbnQoKSkKICAgICAgICAgdyA9IGNvbnRhaW5pbmdCbG9jaygp
LT5hdmFpbGFibGVMb2dpY2FsV2lkdGgoKTsKLSAgICByZXR1cm4gcGFkZGluZy5jYWxjTWluVmFs
dWUodyk7CisgICAgcmV0dXJuIGNhbGN1bGF0ZU1pbmltdW1WYWx1ZShwYWRkaW5nLCB3KTsKIH0K
IAogTGF5b3V0VW5pdCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFkZGluZ0FmdGVyKFBhZGRpbmdP
cHRpb25zKSBjb25zdApAQCAtNjAxLDcgKzYwMSw3IEBAIExheW91dFVuaXQgUmVuZGVyQm94TW9k
ZWxPYmplY3Q6OnBhZGRpbmcKICAgICBMZW5ndGggcGFkZGluZyA9IHN0eWxlKCktPnBhZGRpbmdB
ZnRlcigpOwogICAgIGlmIChwYWRkaW5nLmlzUGVyY2VudCgpKQogICAgICAgICB3ID0gY29udGFp
bmluZ0Jsb2NrKCktPmF2YWlsYWJsZUxvZ2ljYWxXaWR0aCgpOwotICAgIHJldHVybiBwYWRkaW5n
LmNhbGNNaW5WYWx1ZSh3KTsKKyAgICByZXR1cm4gY2FsY3VsYXRlTWluaW11bVZhbHVlKHBhZGRp
bmcsIHcpOwogfQogCiBMYXlvdXRVbml0IFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWRkaW5nU3Rh
cnQoUGFkZGluZ09wdGlvbnMpIGNvbnN0CkBAIC02MTAsNyArNjEwLDcgQEAgTGF5b3V0VW5pdCBS
ZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFkZGluZwogICAgIExlbmd0aCBwYWRkaW5nID0gc3R5bGUo
KS0+cGFkZGluZ1N0YXJ0KCk7CiAgICAgaWYgKHBhZGRpbmcuaXNQZXJjZW50KCkpCiAgICAgICAg
IHcgPSBjb250YWluaW5nQmxvY2soKS0+YXZhaWxhYmxlTG9naWNhbFdpZHRoKCk7Ci0gICAgcmV0
dXJuIHBhZGRpbmcuY2FsY01pblZhbHVlKHcpOworICAgIHJldHVybiBjYWxjdWxhdGVNaW5pbXVt
VmFsdWUocGFkZGluZywgdyk7CiB9CiAKIExheW91dFVuaXQgUmVuZGVyQm94TW9kZWxPYmplY3Q6
OnBhZGRpbmdFbmQoUGFkZGluZ09wdGlvbnMpIGNvbnN0CkBAIC02MTksNyArNjE5LDcgQEAgTGF5
b3V0VW5pdCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFkZGluZwogICAgIExlbmd0aCBwYWRkaW5n
ID0gc3R5bGUoKS0+cGFkZGluZ0VuZCgpOwogICAgIGlmIChwYWRkaW5nLmlzUGVyY2VudCgpKQog
ICAgICAgICB3ID0gY29udGFpbmluZ0Jsb2NrKCktPmF2YWlsYWJsZUxvZ2ljYWxXaWR0aCgpOwot
ICAgIHJldHVybiBwYWRkaW5nLmNhbGNNaW5WYWx1ZSh3KTsKKyAgICByZXR1cm4gY2FsY3VsYXRl
TWluaW11bVZhbHVlKHBhZGRpbmcsIHcpOwogfQogCiBSb3VuZGVkUmVjdCBSZW5kZXJCb3hNb2Rl
bE9iamVjdDo6Z2V0QmFja2dyb3VuZFJvdW5kZWRSZWN0KGNvbnN0IExheW91dFJlY3QmIGJvcmRl
clJlY3QsIElubGluZUZsb3dCb3gqIGJveCwgTGF5b3V0VW5pdCBpbmxpbmVCb3hXaWR0aCwgTGF5
b3V0VW5pdCBpbmxpbmVCb3hIZWlnaHQsCkBAIC0xMDAwLDEyICsxMDAwLDEyIEBAIEludFNpemUg
UmVuZGVyQm94TW9kZWxPYmplY3Q6OmNhbGN1bGF0ZUYKICAgICAgICAgICAgIGlmIChsYXllcldp
ZHRoLmlzRml4ZWQoKSkKICAgICAgICAgICAgICAgICB3ID0gbGF5ZXJXaWR0aC52YWx1ZSgpOwog
ICAgICAgICAgICAgZWxzZSBpZiAobGF5ZXJXaWR0aC5pc1BlcmNlbnQoKSkKLSAgICAgICAgICAg
ICAgICB3ID0gbGF5ZXJXaWR0aC5jYWxjVmFsdWUocG9zaXRpb25pbmdBcmVhU2l6ZS53aWR0aCgp
KTsKKyAgICAgICAgICAgICAgICB3ID0gY2FsY3VsYXRlVmFsdWUobGF5ZXJXaWR0aCwgcG9zaXRp
b25pbmdBcmVhU2l6ZS53aWR0aCgpKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgaWYgKGxh
eWVySGVpZ2h0LmlzRml4ZWQoKSkKICAgICAgICAgICAgICAgICBoID0gbGF5ZXJIZWlnaHQudmFs
dWUoKTsKICAgICAgICAgICAgIGVsc2UgaWYgKGxheWVySGVpZ2h0LmlzUGVyY2VudCgpKQotICAg
ICAgICAgICAgICAgIGggPSBsYXllckhlaWdodC5jYWxjVmFsdWUocG9zaXRpb25pbmdBcmVhU2l6
ZS5oZWlnaHQoKSk7CisgICAgICAgICAgICAgICAgaCA9IGNhbGN1bGF0ZVZhbHVlKGxheWVySGVp
Z2h0LCBwb3NpdGlvbmluZ0FyZWFTaXplLmhlaWdodCgpKTsKICAgICAgICAgICAgIAogICAgICAg
ICAgICAgLy8gSWYgb25lIG9mIHRoZSB2YWx1ZXMgaXMgYXV0byB3ZSBoYXZlIHRvIHVzZSB0aGUg
YXBwcm9wcmlhdGUKICAgICAgICAgICAgIC8vIHNjYWxlIHRvIG1haW50YWluIG91ciBhc3BlY3Qg
cmF0aW8uCkBAIC0xMTM4LDEzICsxMTM4LDEzIEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6
OmNhbGN1bGF0ZUJhY2sKICAgICBFRmlsbFJlcGVhdCBiYWNrZ3JvdW5kUmVwZWF0WCA9IGZpbGxM
YXllci0+cmVwZWF0WCgpOwogICAgIEVGaWxsUmVwZWF0IGJhY2tncm91bmRSZXBlYXRZID0gZmls
bExheWVyLT5yZXBlYXRZKCk7CiAKLSAgICBMYXlvdXRVbml0IHhQb3NpdGlvbiA9IGZpbGxMYXll
ci0+eFBvc2l0aW9uKCkuY2FsY01pblZhbHVlKHBvc2l0aW9uaW5nQXJlYVNpemUud2lkdGgoKSAt
IGdlb21ldHJ5LnRpbGVTaXplKCkud2lkdGgoKSwgdHJ1ZSk7CisgICAgTGF5b3V0VW5pdCB4UG9z
aXRpb24gPSBjYWxjdWxhdGVNaW5pbXVtVmFsdWUoZmlsbExheWVyLT54UG9zaXRpb24oKSwgcG9z
aXRpb25pbmdBcmVhU2l6ZS53aWR0aCgpIC0gZ2VvbWV0cnkudGlsZVNpemUoKS53aWR0aCgpLCB0
cnVlKTsKICAgICBpZiAoYmFja2dyb3VuZFJlcGVhdFggPT0gUmVwZWF0RmlsbCkKICAgICAgICAg
Z2VvbWV0cnkuc2V0UGhhc2VYKGdlb21ldHJ5LnRpbGVTaXplKCkud2lkdGgoKSA/IGxheW91dE1v
ZChnZW9tZXRyeS50aWxlU2l6ZSgpLndpZHRoKCkgLSAoeFBvc2l0aW9uICsgbGVmdCksIGdlb21l
dHJ5LnRpbGVTaXplKCkud2lkdGgoKSkgOiBMYXlvdXRVbml0KDApKTsKICAgICBlbHNlCiAgICAg
ICAgIGdlb21ldHJ5LnNldE5vUmVwZWF0WCh4UG9zaXRpb24gKyBsZWZ0KTsKIAotICAgIExheW91
dFVuaXQgeVBvc2l0aW9uID0gZmlsbExheWVyLT55UG9zaXRpb24oKS5jYWxjTWluVmFsdWUocG9z
aXRpb25pbmdBcmVhU2l6ZS5oZWlnaHQoKSAtIGdlb21ldHJ5LnRpbGVTaXplKCkuaGVpZ2h0KCks
IHRydWUpOworICAgIExheW91dFVuaXQgeVBvc2l0aW9uID0gY2FsY3VsYXRlTWluaW11bVZhbHVl
KGZpbGxMYXllci0+eVBvc2l0aW9uKCksIHBvc2l0aW9uaW5nQXJlYVNpemUuaGVpZ2h0KCkgLSBn
ZW9tZXRyeS50aWxlU2l6ZSgpLmhlaWdodCgpLCB0cnVlKTsKICAgICBpZiAoYmFja2dyb3VuZFJl
cGVhdFkgPT0gUmVwZWF0RmlsbCkKICAgICAgICAgZ2VvbWV0cnkuc2V0UGhhc2VZKGdlb21ldHJ5
LnRpbGVTaXplKCkuaGVpZ2h0KCkgPyBsYXlvdXRNb2QoZ2VvbWV0cnkudGlsZVNpemUoKS5oZWln
aHQoKSAtICh5UG9zaXRpb24gKyB0b3ApLCBnZW9tZXRyeS50aWxlU2l6ZSgpLmhlaWdodCgpKSA6
IExheW91dFVuaXQoMCkpOwogICAgIGVsc2UgCkBAIC0xMTYzLDcgKzExNjMsNyBAQCBzdGF0aWMg
TGF5b3V0VW5pdCBjb21wdXRlQm9yZGVySW1hZ2VTaWRlCiAgICAgICAgIHJldHVybiBib3JkZXJT
bGljZS52YWx1ZSgpICogYm9yZGVyU2lkZTsKICAgICBpZiAoYm9yZGVyU2xpY2UuaXNBdXRvKCkp
CiAgICAgICAgIHJldHVybiBpbWFnZVNpZGU7Ci0gICAgcmV0dXJuIGJvcmRlclNsaWNlLmNhbGNW
YWx1ZShib3hFeHRlbnQpOworICAgIHJldHVybiBjYWxjdWxhdGVWYWx1ZShib3JkZXJTbGljZSwg
Ym94RXh0ZW50KTsKIH0KIAogYm9vbCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnROaW5lUGll
Y2VJbWFnZShHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY29uc3QgTGF5b3V0UmVj
dCYgcmVjdCwgY29uc3QgUmVuZGVyU3R5bGUqIHN0eWxlLApAQCAtMTIwMSwxMCArMTIwMSwxMCBA
QCBib29sIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludE5pbmVQaWVjCiAgICAgaW50IGltYWdl
V2lkdGggPSBpbWFnZVNpemUud2lkdGgoKSAvIHN0eWxlLT5lZmZlY3RpdmVab29tKCk7CiAgICAg
aW50IGltYWdlSGVpZ2h0ID0gaW1hZ2VTaXplLmhlaWdodCgpIC8gc3R5bGUtPmVmZmVjdGl2ZVpv
b20oKTsKIAotICAgIGludCB0b3BTbGljZSA9IG1pbjxpbnQ+KGltYWdlSGVpZ2h0LCBuaW5lUGll
Y2VJbWFnZS5pbWFnZVNsaWNlcygpLnRvcCgpLmNhbGNWYWx1ZShpbWFnZUhlaWdodCkpOwotICAg
IGludCByaWdodFNsaWNlID0gbWluPGludD4oaW1hZ2VXaWR0aCwgbmluZVBpZWNlSW1hZ2UuaW1h
Z2VTbGljZXMoKS5yaWdodCgpLmNhbGNWYWx1ZShpbWFnZVdpZHRoKSk7Ci0gICAgaW50IGJvdHRv
bVNsaWNlID0gbWluPGludD4oaW1hZ2VIZWlnaHQsIG5pbmVQaWVjZUltYWdlLmltYWdlU2xpY2Vz
KCkuYm90dG9tKCkuY2FsY1ZhbHVlKGltYWdlSGVpZ2h0KSk7Ci0gICAgaW50IGxlZnRTbGljZSA9
IG1pbjxpbnQ+KGltYWdlV2lkdGgsIG5pbmVQaWVjZUltYWdlLmltYWdlU2xpY2VzKCkubGVmdCgp
LmNhbGNWYWx1ZShpbWFnZVdpZHRoKSk7CisgICAgaW50IHRvcFNsaWNlID0gbWluPGludD4oaW1h
Z2VIZWlnaHQsIGNhbGN1bGF0ZVZhbHVlKG5pbmVQaWVjZUltYWdlLmltYWdlU2xpY2VzKCkudG9w
KCksIGltYWdlSGVpZ2h0KSk7CisgICAgaW50IHJpZ2h0U2xpY2UgPSBtaW48aW50PihpbWFnZVdp
ZHRoLCBjYWxjdWxhdGVWYWx1ZShuaW5lUGllY2VJbWFnZS5pbWFnZVNsaWNlcygpLnJpZ2h0KCks
IGltYWdlV2lkdGgpKTsKKyAgICBpbnQgYm90dG9tU2xpY2UgPSBtaW48aW50PihpbWFnZUhlaWdo
dCwgY2FsY3VsYXRlVmFsdWUobmluZVBpZWNlSW1hZ2UuaW1hZ2VTbGljZXMoKS5ib3R0b20oKSwg
aW1hZ2VIZWlnaHQpKTsKKyAgICBpbnQgbGVmdFNsaWNlID0gbWluPGludD4oaW1hZ2VXaWR0aCwg
Y2FsY3VsYXRlVmFsdWUobmluZVBpZWNlSW1hZ2UuaW1hZ2VTbGljZXMoKS5sZWZ0KCksIGltYWdl
V2lkdGgpKTsKIAogICAgIEVOaW5lUGllY2VJbWFnZVJ1bGUgaFJ1bGUgPSBuaW5lUGllY2VJbWFn
ZS5ob3Jpem9udGFsUnVsZSgpOwogICAgIEVOaW5lUGllY2VJbWFnZVJ1bGUgdlJ1bGUgPSBuaW5l
UGllY2VJbWFnZS52ZXJ0aWNhbFJ1bGUoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJGbGV4aWJsZUJveC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94LmNwcAkocmV2aXNpb24gMTEwODE0KQorKysgU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNTczLDcgKzU3Myw3IEBAIExheW91dFVuaXQgUmVuZGVyRmxleGlibGVCb3g6OnByZWZlcnJl
ZE0KICAgICAgICAgTGF5b3V0VW5pdCBtYWluQXhpc0V4dGVudCA9IGhhc09ydGhvZ29uYWxGbG93
KGNoaWxkKSA/IGNoaWxkLT5sb2dpY2FsSGVpZ2h0KCkgOiBjaGlsZC0+bWF4UHJlZmVycmVkTG9n
aWNhbFdpZHRoKCk7CiAgICAgICAgIHJldHVybiBtYWluQXhpc0V4dGVudCAtIG1haW5BeGlzQm9y
ZGVyQW5kUGFkZGluZ0V4dGVudEZvckNoaWxkKGNoaWxkKSAtIG1haW5BeGlzU2Nyb2xsYmFyRXh0
ZW50Rm9yQ2hpbGQoY2hpbGQpOwogICAgIH0KLSAgICByZXR1cm4gbWFpbkF4aXNMZW5ndGguY2Fs
Y01pblZhbHVlKG1haW5BeGlzQ29udGVudEV4dGVudCgpKTsKKyAgICByZXR1cm4gY2FsY3VsYXRl
TWluaW11bVZhbHVlKG1haW5BeGlzTGVuZ3RoLCBtYWluQXhpc0NvbnRlbnRFeHRlbnQoKSk7CiB9
CiAKIExheW91dFVuaXQgUmVuZGVyRmxleGlibGVCb3g6OmNvbXB1dGVBdmFpbGFibGVGcmVlU3Bh
Y2UoTGF5b3V0VW5pdCBwcmVmZXJyZWRNYWluQXhpc0V4dGVudCkKQEAgLTY4MCwxMSArNjgwLDEx
IEBAIHZvaWQgUmVuZGVyRmxleGlibGVCb3g6OmNvbXB1dGVNYWluQXhpc1AKICAgICAgICAgLy8g
b2YgMCBhbmQgYmVjYXVzZSBpZiB3ZSdyZSBub3QgYXV0byBzaXppbmcsIHdlIGRvbid0IGRvIGEg
bGF5b3V0IHRoYXQKICAgICAgICAgLy8gY29tcHV0ZXMgdGhlIHN0YXJ0L2VuZCBtYXJnaW5zLgog
ICAgICAgICBpZiAoaXNIb3Jpem9udGFsRmxvdygpKSB7Ci0gICAgICAgICAgICBjaGlsZC0+c2V0
TWFyZ2luTGVmdChjaGlsZC0+c3R5bGUoKS0+bWFyZ2luTGVmdCgpLmNhbGNNaW5WYWx1ZShmbGV4
Ym94QXZhaWxhYmxlQ29udGVudEV4dGVudCkpOwotICAgICAgICAgICAgY2hpbGQtPnNldE1hcmdp
blJpZ2h0KGNoaWxkLT5zdHlsZSgpLT5tYXJnaW5SaWdodCgpLmNhbGNNaW5WYWx1ZShmbGV4Ym94
QXZhaWxhYmxlQ29udGVudEV4dGVudCkpOworICAgICAgICAgICAgY2hpbGQtPnNldE1hcmdpbkxl
ZnQoY2FsY3VsYXRlTWluaW11bVZhbHVlKGNoaWxkLT5zdHlsZSgpLT5tYXJnaW5MZWZ0KCksIGZs
ZXhib3hBdmFpbGFibGVDb250ZW50RXh0ZW50KSk7CisgICAgICAgICAgICBjaGlsZC0+c2V0TWFy
Z2luUmlnaHQoY2FsY3VsYXRlTWluaW11bVZhbHVlKGNoaWxkLT5zdHlsZSgpLT5tYXJnaW5SaWdo
dCgpLCBmbGV4Ym94QXZhaWxhYmxlQ29udGVudEV4dGVudCkpOwogICAgICAgICB9IGVsc2Ugewot
ICAgICAgICAgICAgY2hpbGQtPnNldE1hcmdpblRvcChjaGlsZC0+c3R5bGUoKS0+bWFyZ2luVG9w
KCkuY2FsY01pblZhbHVlKGZsZXhib3hBdmFpbGFibGVDb250ZW50RXh0ZW50KSk7Ci0gICAgICAg
ICAgICBjaGlsZC0+c2V0TWFyZ2luQm90dG9tKGNoaWxkLT5zdHlsZSgpLT5tYXJnaW5Cb3R0b20o
KS5jYWxjTWluVmFsdWUoZmxleGJveEF2YWlsYWJsZUNvbnRlbnRFeHRlbnQpKTsKKyAgICAgICAg
ICAgIGNoaWxkLT5zZXRNYXJnaW5Ub3AoY2FsY3VsYXRlTWluaW11bVZhbHVlKGNoaWxkLT5zdHls
ZSgpLT5tYXJnaW5Ub3AoKSwgZmxleGJveEF2YWlsYWJsZUNvbnRlbnRFeHRlbnQpKTsKKyAgICAg
ICAgICAgIGNoaWxkLT5zZXRNYXJnaW5Cb3R0b20oY2FsY3VsYXRlTWluaW11bVZhbHVlKGNoaWxk
LT5zdHlsZSgpLT5tYXJnaW5Cb3R0b20oKSwgZmxleGJveEF2YWlsYWJsZUNvbnRlbnRFeHRlbnQp
KTsKICAgICAgICAgfQogICAgIH0KIH0KQEAgLTc1OCw4ICs3NTgsOCBAQCBib29sIFJlbmRlckZs
ZXhpYmxlQm94OjpydW5GcmVlU3BhY2VBbGxvCiAgICAgICAgICAgICAgICAgY2hpbGRQcmVmZXJy
ZWRTaXplICs9IGxyb3VuZGYoYXZhaWxhYmxlRnJlZVNwYWNlICogcG9zaXRpdmVGbGV4Rm9yQ2hp
bGQoY2hpbGQpIC8gdG90YWxQb3NpdGl2ZUZsZXhpYmlsaXR5KTsKIAogICAgICAgICAgICAgICAg
IExlbmd0aCBjaGlsZExvZ2ljYWxNYXhXaWR0aCA9IGlzSG9yaXpvbnRhbEZsb3coKSA/IGNoaWxk
LT5zdHlsZSgpLT5tYXhXaWR0aCgpIDogY2hpbGQtPnN0eWxlKCktPm1heEhlaWdodCgpOwotICAg
ICAgICAgICAgICAgIGlmIChjaGlsZExvZ2ljYWxNYXhXaWR0aC5pc1NwZWNpZmllZCgpICYmIGNo
aWxkUHJlZmVycmVkU2l6ZSA+IGNoaWxkTG9naWNhbE1heFdpZHRoLmNhbGNWYWx1ZShmbGV4Ym94
QXZhaWxhYmxlQ29udGVudEV4dGVudCkpIHsKLSAgICAgICAgICAgICAgICAgICAgY2hpbGRQcmVm
ZXJyZWRTaXplID0gY2hpbGRMb2dpY2FsTWF4V2lkdGguY2FsY1ZhbHVlKGZsZXhib3hBdmFpbGFi
bGVDb250ZW50RXh0ZW50KTsKKyAgICAgICAgICAgICAgICBpZiAoY2hpbGRMb2dpY2FsTWF4V2lk
dGguaXNTcGVjaWZpZWQoKSAmJiBjaGlsZFByZWZlcnJlZFNpemUgPiBjYWxjdWxhdGVWYWx1ZShj
aGlsZExvZ2ljYWxNYXhXaWR0aCwgZmxleGJveEF2YWlsYWJsZUNvbnRlbnRFeHRlbnQpKSB7Cisg
ICAgICAgICAgICAgICAgICAgIGNoaWxkUHJlZmVycmVkU2l6ZSA9IGNhbGN1bGF0ZVZhbHVlKGNo
aWxkTG9naWNhbE1heFdpZHRoLCBmbGV4Ym94QXZhaWxhYmxlQ29udGVudEV4dGVudCk7CiAgICAg
ICAgICAgICAgICAgICAgIGF2YWlsYWJsZUZyZWVTcGFjZSAtPSBjaGlsZFByZWZlcnJlZFNpemUg
LSBwcmVmZXJyZWRNYWluQXhpc0NvbnRlbnRFeHRlbnRGb3JDaGlsZChjaGlsZCk7CiAgICAgICAg
ICAgICAgICAgICAgIHRvdGFsUG9zaXRpdmVGbGV4aWJpbGl0eSAtPSBwb3NpdGl2ZUZsZXhGb3JD
aGlsZChjaGlsZCk7CiAKQEAgLTc3MCw4ICs3NzAsOCBAQCBib29sIFJlbmRlckZsZXhpYmxlQm94
OjpydW5GcmVlU3BhY2VBbGxvCiAgICAgICAgICAgICAgICAgY2hpbGRQcmVmZXJyZWRTaXplICs9
IGxyb3VuZGYoYXZhaWxhYmxlRnJlZVNwYWNlICogbmVnYXRpdmVGbGV4Rm9yQ2hpbGQoY2hpbGQp
IC8gdG90YWxOZWdhdGl2ZUZsZXhpYmlsaXR5KTsKIAogICAgICAgICAgICAgICAgIExlbmd0aCBj
aGlsZExvZ2ljYWxNaW5XaWR0aCA9IGlzSG9yaXpvbnRhbEZsb3coKSA/IGNoaWxkLT5zdHlsZSgp
LT5taW5XaWR0aCgpIDogY2hpbGQtPnN0eWxlKCktPm1pbkhlaWdodCgpOwotICAgICAgICAgICAg
ICAgIGlmIChjaGlsZExvZ2ljYWxNaW5XaWR0aC5pc1NwZWNpZmllZCgpICYmIGNoaWxkUHJlZmVy
cmVkU2l6ZSA8IGNoaWxkTG9naWNhbE1pbldpZHRoLmNhbGNWYWx1ZShmbGV4Ym94QXZhaWxhYmxl
Q29udGVudEV4dGVudCkpIHsKLSAgICAgICAgICAgICAgICAgICAgY2hpbGRQcmVmZXJyZWRTaXpl
ID0gY2hpbGRMb2dpY2FsTWluV2lkdGguY2FsY1ZhbHVlKGZsZXhib3hBdmFpbGFibGVDb250ZW50
RXh0ZW50KTsKKyAgICAgICAgICAgICAgICBpZiAoY2hpbGRMb2dpY2FsTWluV2lkdGguaXNTcGVj
aWZpZWQoKSAmJiBjaGlsZFByZWZlcnJlZFNpemUgPCBjYWxjdWxhdGVWYWx1ZShjaGlsZExvZ2lj
YWxNaW5XaWR0aCwgZmxleGJveEF2YWlsYWJsZUNvbnRlbnRFeHRlbnQpKSB7CisgICAgICAgICAg
ICAgICAgICAgIGNoaWxkUHJlZmVycmVkU2l6ZSA9IGNhbGN1bGF0ZVZhbHVlKGNoaWxkTG9naWNh
bE1pbldpZHRoLCBmbGV4Ym94QXZhaWxhYmxlQ29udGVudEV4dGVudCk7CiAgICAgICAgICAgICAg
ICAgICAgIGF2YWlsYWJsZUZyZWVTcGFjZSArPSBwcmVmZXJyZWRNYWluQXhpc0NvbnRlbnRFeHRl
bnRGb3JDaGlsZChjaGlsZCkgLSBjaGlsZFByZWZlcnJlZFNpemU7CiAgICAgICAgICAgICAgICAg
ICAgIHRvdGFsTmVnYXRpdmVGbGV4aWJpbGl0eSAtPSBuZWdhdGl2ZUZsZXhGb3JDaGlsZChjaGls
ZCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGcmFtZVNldC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZyYW1lU2V0LmNw
cAkocmV2aXNpb24gMTEwODE0KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZy
YW1lU2V0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjIzLDcgKzIyMyw3IEBAIHZvaWQgUmVuZGVy
RnJhbWVTZXQ6OmxheU91dEF4aXMoR3JpZEF4aXMKICAgICAgICAgLy8gQ291bnQgdGhlIHRvdGFs
IHBlcmNlbnRhZ2Ugb2YgYWxsIG9mIHRoZSBwZXJjZW50YWdlIGNvbHVtbnMvcm93cyAtPiB0b3Rh
bFBlcmNlbnQKICAgICAgICAgLy8gQ291bnQgdGhlIG51bWJlciBvZiBjb2x1bW5zL3Jvd3Mgd2hp
Y2ggYXJlIHBlcmNlbnRhZ2VzIC0+IGNvdW50UGVyY2VudAogICAgICAgICBpZiAoZ3JpZFtpXS5p
c1BlcmNlbnQoKSkgewotICAgICAgICAgICAgZ3JpZExheW91dFtpXSA9IG1heChncmlkW2ldLmNh
bGNWYWx1ZShhdmFpbGFibGVMZW4pLCAwKTsKKyAgICAgICAgICAgIGdyaWRMYXlvdXRbaV0gPSBt
YXgoY2FsY3VsYXRlVmFsdWUoZ3JpZFtpXSwgYXZhaWxhYmxlTGVuKSwgMCk7CiAgICAgICAgICAg
ICB0b3RhbFBlcmNlbnQgKz0gZ3JpZExheW91dFtpXTsKICAgICAgICAgICAgIGNvdW50UGVyY2Vu
dCsrOwogICAgICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5s
aW5lLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5s
aW5lLmNwcAkocmV2aXNpb24gMTEwODE0KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlcklubGluZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcwMSw3ICs3MDEsNyBAQCBzdGF0aWMg
TGF5b3V0VW5pdCBjb21wdXRlTWFyZ2luKGNvbnN0IFJlCiAgICAgaWYgKG1hcmdpbi5pc0ZpeGVk
KCkpCiAgICAgICAgIHJldHVybiBtYXJnaW4udmFsdWUoKTsKICAgICBpZiAobWFyZ2luLmlzUGVy
Y2VudCgpKQotICAgICAgICByZXR1cm4gbWFyZ2luLmNhbGNNaW5WYWx1ZShtYXg8TGF5b3V0VW5p
dD4oMCwgcmVuZGVyZXItPmNvbnRhaW5pbmdCbG9jaygpLT5hdmFpbGFibGVMb2dpY2FsV2lkdGgo
KSkpOworICAgICAgICByZXR1cm4gY2FsY3VsYXRlTWluaW11bVZhbHVlKG1hcmdpbiwgbWF4PExh
eW91dFVuaXQ+KDAsIHJlbmRlcmVyLT5jb250YWluaW5nQmxvY2soKS0+YXZhaWxhYmxlTG9naWNh
bFdpZHRoKCkpKTsKICAgICByZXR1cm4gMDsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxheWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCShyZXZpc2lvbiAxMTA4MTQpCisrKyBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MjAsOCArODIw
LDggQEAgVHJhbnNmb3JtYXRpb25NYXRyaXggUmVuZGVyTGF5ZXI6OnBlcnNwZQogICAgIGNvbnN0
IGZsb2F0IGJveFdpZHRoID0gYm9yZGVyQm94LndpZHRoKCk7CiAgICAgY29uc3QgZmxvYXQgYm94
SGVpZ2h0ID0gYm9yZGVyQm94LmhlaWdodCgpOwogCi0gICAgZmxvYXQgcGVyc3BlY3RpdmVPcmln
aW5YID0gc3R5bGUtPnBlcnNwZWN0aXZlT3JpZ2luWCgpLmNhbGNGbG9hdFZhbHVlKGJveFdpZHRo
KTsKLSAgICBmbG9hdCBwZXJzcGVjdGl2ZU9yaWdpblkgPSBzdHlsZS0+cGVyc3BlY3RpdmVPcmln
aW5ZKCkuY2FsY0Zsb2F0VmFsdWUoYm94SGVpZ2h0KTsKKyAgICBmbG9hdCBwZXJzcGVjdGl2ZU9y
aWdpblggPSBjYWxjdWxhdGVGbG9hdFZhbHVlKHN0eWxlLT5wZXJzcGVjdGl2ZU9yaWdpblgoKSwg
Ym94V2lkdGgpOworICAgIGZsb2F0IHBlcnNwZWN0aXZlT3JpZ2luWSA9IGNhbGN1bGF0ZUZsb2F0
VmFsdWUoc3R5bGUtPnBlcnNwZWN0aXZlT3JpZ2luWSgpLCBib3hIZWlnaHQpOwogCiAgICAgLy8g
QSBwZXJzcGVjdGl2ZSBvcmlnaW4gb2YgMCwwIG1ha2VzIHRoZSB2YW5pc2hpbmcgcG9pbnQgaW4g
dGhlIGNlbnRlciBvZiB0aGUgZWxlbWVudC4KICAgICAvLyBXZSB3YW50IGl0IHRvIGJlIGluIHRo
ZSB0b3AtbGVmdCwgc28gc3VidHJhY3QgaGFsZiB0aGUgaGVpZ2h0IGFuZCB3aWR0aC4KQEAgLTg0
NCw4ICs4NDQsOCBAQCBGbG9hdFBvaW50IFJlbmRlckxheWVyOjpwZXJzcGVjdGl2ZU9yaWdpCiAg
ICAgY29uc3QgTGF5b3V0UmVjdCBib3JkZXJCb3ggPSB0b1JlbmRlckJveChyZW5kZXJlcigpKS0+
Ym9yZGVyQm94UmVjdCgpOwogICAgIFJlbmRlclN0eWxlKiBzdHlsZSA9IHJlbmRlcmVyKCktPnN0
eWxlKCk7CiAKLSAgICByZXR1cm4gRmxvYXRQb2ludChzdHlsZS0+cGVyc3BlY3RpdmVPcmlnaW5Y
KCkuY2FsY0Zsb2F0VmFsdWUoYm9yZGVyQm94LndpZHRoKCkpLAotICAgICAgICAgICAgICAgICAg
ICAgIHN0eWxlLT5wZXJzcGVjdGl2ZU9yaWdpblkoKS5jYWxjRmxvYXRWYWx1ZShib3JkZXJCb3gu
aGVpZ2h0KCkpKTsKKyAgICByZXR1cm4gRmxvYXRQb2ludChjYWxjdWxhdGVGbG9hdFZhbHVlKHN0
eWxlLT5wZXJzcGVjdGl2ZU9yaWdpblgoKSwgYm9yZGVyQm94LndpZHRoKCkpLAorICAgICAgICAg
ICAgICAgICAgICAgIGNhbGN1bGF0ZUZsb2F0VmFsdWUoc3R5bGUtPnBlcnNwZWN0aXZlT3JpZ2lu
WSgpLCBib3JkZXJCb3guaGVpZ2h0KCkpKTsKIH0KIAogUmVuZGVyTGF5ZXIqIFJlbmRlckxheWVy
OjpzdGFja2luZ0NvbnRleHQoKSBjb25zdApJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxheWVyQmFja2luZy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAJKHJldmlzaW9uIDExMDgxNCkKKysrIFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xMDA1LDggKzEwMDUsOCBAQCBGbG9hdFBvaW50M0QgUmVuZGVyTGF5ZXJCYWNraW5nOjpj
b21wdXRlCiAgICAgUmVuZGVyU3R5bGUqIHN0eWxlID0gcmVuZGVyZXIoKS0+c3R5bGUoKTsKIAog
ICAgIEZsb2F0UG9pbnQzRCBvcmlnaW47Ci0gICAgb3JpZ2luLnNldFgoc3R5bGUtPnRyYW5zZm9y
bU9yaWdpblgoKS5jYWxjRmxvYXRWYWx1ZShib3JkZXJCb3gud2lkdGgoKSkpOwotICAgIG9yaWdp
bi5zZXRZKHN0eWxlLT50cmFuc2Zvcm1PcmlnaW5ZKCkuY2FsY0Zsb2F0VmFsdWUoYm9yZGVyQm94
LmhlaWdodCgpKSk7CisgICAgb3JpZ2luLnNldFgoY2FsY3VsYXRlRmxvYXRWYWx1ZShzdHlsZS0+
dHJhbnNmb3JtT3JpZ2luWCgpLCBib3JkZXJCb3gud2lkdGgoKSkpOworICAgIG9yaWdpbi5zZXRZ
KGNhbGN1bGF0ZUZsb2F0VmFsdWUoc3R5bGUtPnRyYW5zZm9ybU9yaWdpblkoKSwgYm9yZGVyQm94
LmhlaWdodCgpKSk7CiAgICAgb3JpZ2luLnNldFooc3R5bGUtPnRyYW5zZm9ybU9yaWdpblooKSk7
CiAKICAgICByZXR1cm4gb3JpZ2luOwpAQCAtMTAyMCw4ICsxMDIwLDggQEAgRmxvYXRQb2ludCBS
ZW5kZXJMYXllckJhY2tpbmc6OmNvbXB1dGVQZQogICAgIGZsb2F0IGJveEhlaWdodCA9IGJvcmRl
ckJveC5oZWlnaHQoKTsKIAogICAgIEZsb2F0UG9pbnQgb3JpZ2luOwotICAgIG9yaWdpbi5zZXRY
KHN0eWxlLT5wZXJzcGVjdGl2ZU9yaWdpblgoKS5jYWxjRmxvYXRWYWx1ZShib3hXaWR0aCkpOwot
ICAgIG9yaWdpbi5zZXRZKHN0eWxlLT5wZXJzcGVjdGl2ZU9yaWdpblkoKS5jYWxjRmxvYXRWYWx1
ZShib3hIZWlnaHQpKTsKKyAgICBvcmlnaW4uc2V0WChjYWxjdWxhdGVGbG9hdFZhbHVlKHN0eWxl
LT5wZXJzcGVjdGl2ZU9yaWdpblgoKSwgYm94V2lkdGgpKTsKKyAgICBvcmlnaW4uc2V0WShjYWxj
dWxhdGVGbG9hdFZhbHVlKHN0eWxlLT5wZXJzcGVjdGl2ZU9yaWdpblkoKSwgYm94SGVpZ2h0KSk7
CiAKICAgICByZXR1cm4gb3JpZ2luOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlck1hcnF1ZWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJNYXJxdWVlLmNwcAkocmV2aXNpb24gMTEwODE0KQorKysgU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlck1hcnF1ZWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yODksNyArMjg5
LDcgQEAgdm9pZCBSZW5kZXJNYXJxdWVlOjp0aW1lckZpcmVkKFRpbWVyPFJlbgogICAgICAgICB9
CiAgICAgICAgIGJvb2wgcG9zaXRpdmUgPSByYW5nZSA+IDA7CiAgICAgICAgIGludCBjbGllbnRT
aXplID0gKGlzSG9yaXpvbnRhbCgpID8gbV9sYXllci0+cmVuZGVyQm94KCktPmNsaWVudFdpZHRo
KCkgOiBtX2xheWVyLT5yZW5kZXJCb3goKS0+Y2xpZW50SGVpZ2h0KCkpOwotICAgICAgICBpbnQg
aW5jcmVtZW50ID0gYWJzKG1fbGF5ZXItPnJlbmRlcmVyKCktPnN0eWxlKCktPm1hcnF1ZWVJbmNy
ZW1lbnQoKS5jYWxjVmFsdWUoY2xpZW50U2l6ZSkpOworICAgICAgICBpbnQgaW5jcmVtZW50ID0g
YWJzKGNhbGN1bGF0ZVZhbHVlKG1fbGF5ZXItPnJlbmRlcmVyKCktPnN0eWxlKCktPm1hcnF1ZWVJ
bmNyZW1lbnQoKSwgY2xpZW50U2l6ZSkpOwogICAgICAgICBpbnQgY3VycmVudFBvcyA9IChpc0hv
cml6b250YWwoKSA/IG1fbGF5ZXItPnNjcm9sbFhPZmZzZXQoKSA6IG1fbGF5ZXItPnNjcm9sbFlP
ZmZzZXQoKSk7CiAgICAgICAgIG5ld1BvcyA9ICBjdXJyZW50UG9zICsgKGFkZEluY3JlbWVudCA/
IGluY3JlbWVudCA6IC1pbmNyZW1lbnQpOwogICAgICAgICBpZiAocG9zaXRpdmUpCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVudUxpc3QuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZW51TGlzdC5jcHAJKHJldmlzaW9uIDEx
MDgxNCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZW51TGlzdC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTE2MSw3ICsxNjEsNyBAQCB2b2lkIFJlbmRlck1lbnVMaXN0Ojp1cGRh
dGVPcHRpb25zV2lkdGgoCiAgICAgICAgICAgICAvLyBBZGQgaW4gdGhlIG9wdGlvbidzIHRleHQg
aW5kZW50LiAgV2UgY2FuJ3QgY2FsY3VsYXRlIHBlcmNlbnRhZ2UgdmFsdWVzIGZvciBub3cuCiAg
ICAgICAgICAgICBmbG9hdCBvcHRpb25XaWR0aCA9IDA7CiAgICAgICAgICAgICBpZiAoUmVuZGVy
U3R5bGUqIG9wdGlvblN0eWxlID0gZWxlbWVudC0+cmVuZGVyU3R5bGUoKSkKLSAgICAgICAgICAg
ICAgICBvcHRpb25XaWR0aCArPSBvcHRpb25TdHlsZS0+dGV4dEluZGVudCgpLmNhbGNNaW5WYWx1
ZSgwKTsKKyAgICAgICAgICAgICAgICBvcHRpb25XaWR0aCArPSBjYWxjdWxhdGVNaW5pbXVtVmFs
dWUob3B0aW9uU3R5bGUtPnRleHRJbmRlbnQoKSwgMCk7CiAgICAgICAgICAgICBpZiAoIXRleHQu
aXNFbXB0eSgpKQogICAgICAgICAgICAgICAgIG9wdGlvbldpZHRoICs9IHN0eWxlKCktPmZvbnQo
KS53aWR0aCh0ZXh0KTsKICAgICAgICAgICAgIG1heE9wdGlvbldpZHRoID0gbWF4KG1heE9wdGlv
bldpZHRoLCBvcHRpb25XaWR0aCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyT2JqZWN0LmNwcAkocmV2aXNpb24gMTEwODE0KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlck9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0MzcsNyArMTQzNyw3IEBA
IGJvb2wgUmVuZGVyT2JqZWN0OjpyZXBhaW50QWZ0ZXJMYXlvdXRJZk4KIAogICAgICAgICBMYXlv
dXRVbml0IGJvcmRlclJpZ2h0ID0gaXNCb3goKSA/IHRvUmVuZGVyQm94KHRoaXMpLT5ib3JkZXJS
aWdodCgpIDogemVyb0xheW91dFVuaXQ7CiAgICAgICAgIExheW91dFVuaXQgYm94V2lkdGggPSBp
c0JveCgpID8gdG9SZW5kZXJCb3godGhpcyktPndpZHRoKCkgOiB6ZXJvTGF5b3V0VW5pdDsKLSAg
ICAgICAgTGF5b3V0VW5pdCBib3JkZXJXaWR0aCA9IG1heDxMYXlvdXRVbml0Pigtb3V0bGluZVN0
eWxlLT5vdXRsaW5lT2Zmc2V0KCksIG1heChib3JkZXJSaWdodCwgbWF4PExheW91dFVuaXQ+KHN0
eWxlKCktPmJvcmRlclRvcFJpZ2h0UmFkaXVzKCkud2lkdGgoKS5jYWxjVmFsdWUoYm94V2lkdGgp
LCBzdHlsZSgpLT5ib3JkZXJCb3R0b21SaWdodFJhZGl1cygpLndpZHRoKCkuY2FsY1ZhbHVlKGJv
eFdpZHRoKSkpKSArIG1heChvdywgc2hhZG93UmlnaHQpOworICAgICAgICBMYXlvdXRVbml0IGJv
cmRlcldpZHRoID0gbWF4PExheW91dFVuaXQ+KC1vdXRsaW5lU3R5bGUtPm91dGxpbmVPZmZzZXQo
KSwgbWF4KGJvcmRlclJpZ2h0LCBtYXg8TGF5b3V0VW5pdD4oY2FsY3VsYXRlVmFsdWUoc3R5bGUo
KS0+Ym9yZGVyVG9wUmlnaHRSYWRpdXMoKS53aWR0aCgpLCBib3hXaWR0aCksIGNhbGN1bGF0ZVZh
bHVlKHN0eWxlKCktPmJvcmRlckJvdHRvbVJpZ2h0UmFkaXVzKCkud2lkdGgoKSwgYm94V2lkdGgp
KSkpICsgbWF4KG93LCBzaGFkb3dSaWdodCk7CiAgICAgICAgIExheW91dFJlY3QgcmlnaHRSZWN0
KG5ld091dGxpbmVCb3gueCgpICsgbWluKG5ld091dGxpbmVCb3gud2lkdGgoKSwgb2xkT3V0bGlu
ZUJveC53aWR0aCgpKSAtIGJvcmRlcldpZHRoLAogICAgICAgICAgICAgbmV3T3V0bGluZUJveC55
KCksCiAgICAgICAgICAgICB3aWR0aCArIGJvcmRlcldpZHRoLApAQCAtMTQ1Niw3ICsxNDU2LDcg
QEAgYm9vbCBSZW5kZXJPYmplY3Q6OnJlcGFpbnRBZnRlckxheW91dElmTgogCiAgICAgICAgIExh
eW91dFVuaXQgYm9yZGVyQm90dG9tID0gaXNCb3goKSA/IHRvUmVuZGVyQm94KHRoaXMpLT5ib3Jk
ZXJCb3R0b20oKSA6IHplcm9MYXlvdXRVbml0OwogICAgICAgICBMYXlvdXRVbml0IGJveEhlaWdo
dCA9IGlzQm94KCkgPyB0b1JlbmRlckJveCh0aGlzKS0+aGVpZ2h0KCkgOiB6ZXJvTGF5b3V0VW5p
dDsKLSAgICAgICAgTGF5b3V0VW5pdCBib3JkZXJIZWlnaHQgPSBtYXg8TGF5b3V0VW5pdD4oLW91
dGxpbmVTdHlsZS0+b3V0bGluZU9mZnNldCgpLCBtYXgoYm9yZGVyQm90dG9tLCBtYXg8TGF5b3V0
VW5pdD4oc3R5bGUoKS0+Ym9yZGVyQm90dG9tTGVmdFJhZGl1cygpLmhlaWdodCgpLmNhbGNWYWx1
ZShib3hIZWlnaHQpLCBzdHlsZSgpLT5ib3JkZXJCb3R0b21SaWdodFJhZGl1cygpLmhlaWdodCgp
LmNhbGNWYWx1ZShib3hIZWlnaHQpKSkpICsgbWF4KG93LCBzaGFkb3dCb3R0b20pOworICAgICAg
ICBMYXlvdXRVbml0IGJvcmRlckhlaWdodCA9IG1heDxMYXlvdXRVbml0Pigtb3V0bGluZVN0eWxl
LT5vdXRsaW5lT2Zmc2V0KCksIG1heChib3JkZXJCb3R0b20sIG1heDxMYXlvdXRVbml0PihjYWxj
dWxhdGVWYWx1ZShzdHlsZSgpLT5ib3JkZXJCb3R0b21MZWZ0UmFkaXVzKCkuaGVpZ2h0KCksIGJv
eEhlaWdodCksIGNhbGN1bGF0ZVZhbHVlKHN0eWxlKCktPmJvcmRlckJvdHRvbVJpZ2h0UmFkaXVz
KCkuaGVpZ2h0KCksIGJveEhlaWdodCkpKSkgKyBtYXgob3csIHNoYWRvd0JvdHRvbSk7CiAgICAg
ICAgIExheW91dFJlY3QgYm90dG9tUmVjdChuZXdPdXRsaW5lQm94LngoKSwKICAgICAgICAgICAg
IG1pbihuZXdPdXRsaW5lQm94Lm1heFkoKSwgb2xkT3V0bGluZUJveC5tYXhZKCkpIC0gYm9yZGVy
SGVpZ2h0LAogICAgICAgICAgICAgbWF4KG5ld091dGxpbmVCb3gud2lkdGgoKSwgb2xkT3V0bGlu
ZUJveC53aWR0aCgpKSwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBs
YWNlZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJl
cGxhY2VkLmNwcAkocmV2aXNpb24gMTEwODE0KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclJlcGxhY2VkLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzM1LDggKzMzNSw4IEBAIExh
eW91dFVuaXQgUmVuZGVyUmVwbGFjZWQ6OmNvbXB1dGVSZXBsYWMKICAgICAgICAgICAgICAgICAg
ICAgbG9naWNhbFdpZHRoID0gY29udGFpbmluZ0Jsb2NrKCktPmF2YWlsYWJsZUxvZ2ljYWxXaWR0
aCgpOwogCiAgICAgICAgICAgICAgICAgLy8gVGhpcyBzb2x2ZXMgYWJvdmUgZXF1YXRpb24gZm9y
ICd3aWR0aCcgKD09IGxvZ2ljYWxXaWR0aCkuCi0gICAgICAgICAgICAgICAgTGF5b3V0VW5pdCBt
YXJnaW5TdGFydCA9IHN0eWxlKCktPm1hcmdpblN0YXJ0KCkuY2FsY01pblZhbHVlKGxvZ2ljYWxX
aWR0aCk7Ci0gICAgICAgICAgICAgICAgTGF5b3V0VW5pdCBtYXJnaW5FbmQgPSBzdHlsZSgpLT5t
YXJnaW5FbmQoKS5jYWxjTWluVmFsdWUobG9naWNhbFdpZHRoKTsKKyAgICAgICAgICAgICAgICBM
YXlvdXRVbml0IG1hcmdpblN0YXJ0ID0gY2FsY3VsYXRlTWluaW11bVZhbHVlKHN0eWxlKCktPm1h
cmdpblN0YXJ0KCksIGxvZ2ljYWxXaWR0aCk7CisgICAgICAgICAgICAgICAgTGF5b3V0VW5pdCBt
YXJnaW5FbmQgPSBjYWxjdWxhdGVNaW5pbXVtVmFsdWUoc3R5bGUoKS0+bWFyZ2luRW5kKCksIGxv
Z2ljYWxXaWR0aCk7CiAgICAgICAgICAgICAgICAgbG9naWNhbFdpZHRoID0gbWF4KDAsIGxvZ2lj
YWxXaWR0aCAtIChtYXJnaW5TdGFydCArIG1hcmdpbkVuZCArICh3aWR0aCgpIC0gY2xpZW50V2lk
dGgoKSkpKTsKICAgICAgICAgICAgICAgICBpZiAoaXNQZXJjZW50YWdlSW50cmluc2ljU2l6ZSkK
ICAgICAgICAgICAgICAgICAgICAgLy8gRklYTUU6IFJlbW92ZSB1bm5lY2Vzc2FyeSByb3VuZGlu
ZyB3aGVuIGxheW91dCBpcyBvZmYgaW50czogd2Via2l0Lm9yZy9iLzYzNjU2CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyUGFydC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhclBhcnQuY3BwCShyZXZp
c2lvbiAxMTA4MTQpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFy
UGFydC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgzLDcgKzgzLDcgQEAgc3RhdGljIGludCBjYWxj
U2Nyb2xsYmFyVGhpY2tuZXNzVXNpbmcoYwogewogICAgIGlmIChsLmlzSW50cmluc2ljT3JBdXRv
KCkpCiAgICAgICAgIHJldHVybiBTY3JvbGxiYXJUaGVtZTo6dGhlbWUoKS0+c2Nyb2xsYmFyVGhp
Y2tuZXNzKCk7Ci0gICAgcmV0dXJuIGwuY2FsY01pblZhbHVlKGNvbnRhaW5pbmdMZW5ndGgpOwor
ICAgIHJldHVybiBjYWxjdWxhdGVNaW5pbXVtVmFsdWUobCwgY29udGFpbmluZ0xlbmd0aCk7CiB9
CiAKIHZvaWQgUmVuZGVyU2Nyb2xsYmFyUGFydDo6Y29tcHV0ZVNjcm9sbGJhcldpZHRoKCkKQEAg
LTk3LDggKzk3LDggQEAgdm9pZCBSZW5kZXJTY3JvbGxiYXJQYXJ0Ojpjb21wdXRlU2Nyb2xsYgog
ICAgIHNldFdpZHRoKG1heChtaW5XaWR0aCwgbWluKG1heFdpZHRoLCB3KSkpOwogICAgIAogICAg
IC8vIEJ1dHRvbnMgYW5kIHRyYWNrIHBpZWNlcyBjYW4gYWxsIGhhdmUgbWFyZ2lucyBhbG9uZyB0
aGUgYXhpcyBvZiB0aGUgc2Nyb2xsYmFyLiAKLSAgICBtX21hcmdpbkxlZnQgPSBzdHlsZSgpLT5t
YXJnaW5MZWZ0KCkuY2FsY01pblZhbHVlKHZpc2libGVTaXplKTsKLSAgICBtX21hcmdpblJpZ2h0
ID0gc3R5bGUoKS0+bWFyZ2luUmlnaHQoKS5jYWxjTWluVmFsdWUodmlzaWJsZVNpemUpOworICAg
IG1fbWFyZ2luTGVmdCA9IGNhbGN1bGF0ZU1pbmltdW1WYWx1ZShzdHlsZSgpLT5tYXJnaW5MZWZ0
KCksIHZpc2libGVTaXplKTsKKyAgICBtX21hcmdpblJpZ2h0ID0gY2FsY3VsYXRlTWluaW11bVZh
bHVlKHN0eWxlKCktPm1hcmdpblJpZ2h0KCksIHZpc2libGVTaXplKTsKIH0KIAogdm9pZCBSZW5k
ZXJTY3JvbGxiYXJQYXJ0Ojpjb21wdXRlU2Nyb2xsYmFySGVpZ2h0KCkKQEAgLTExMiw4ICsxMTIs
OCBAQCB2b2lkIFJlbmRlclNjcm9sbGJhclBhcnQ6OmNvbXB1dGVTY3JvbGxiCiAgICAgc2V0SGVp
Z2h0KG1heChtaW5IZWlnaHQsIG1pbihtYXhIZWlnaHQsIGgpKSk7CiAKICAgICAvLyBCdXR0b25z
IGFuZCB0cmFjayBwaWVjZXMgY2FuIGFsbCBoYXZlIG1hcmdpbnMgYWxvbmcgdGhlIGF4aXMgb2Yg
dGhlIHNjcm9sbGJhci4gCi0gICAgbV9tYXJnaW5Ub3AgPSBzdHlsZSgpLT5tYXJnaW5Ub3AoKS5j
YWxjTWluVmFsdWUodmlzaWJsZVNpemUpOwotICAgIG1fbWFyZ2luQm90dG9tID0gc3R5bGUoKS0+
bWFyZ2luQm90dG9tKCkuY2FsY01pblZhbHVlKHZpc2libGVTaXplKTsKKyAgICBtX21hcmdpblRv
cCA9IGNhbGN1bGF0ZU1pbmltdW1WYWx1ZShzdHlsZSgpLT5tYXJnaW5Ub3AoKSwgdmlzaWJsZVNp
emUpOworICAgIG1fbWFyZ2luQm90dG9tID0gY2FsY3VsYXRlTWluaW11bVZhbHVlKHN0eWxlKCkt
Pm1hcmdpbkJvdHRvbSgpLCB2aXNpYmxlU2l6ZSk7CiB9CiAKIHZvaWQgUmVuZGVyU2Nyb2xsYmFy
UGFydDo6Y29tcHV0ZVByZWZlcnJlZExvZ2ljYWxXaWR0aHMoKQpJbmRleDogU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGFibGUuY3BwCShyZXZpc2lvbiAxMTA4MTQpCisrKyBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMzIs
OCArMjMyLDggQEAgdm9pZCBSZW5kZXJUYWJsZTo6Y29tcHV0ZUxvZ2ljYWxXaWR0aCgpCiAgICAg
ICAgIHNldExvZ2ljYWxXaWR0aChjb252ZXJ0U3R5bGVMb2dpY2FsV2lkdGhUb0NvbXB1dGVkV2lk
dGgoc3R5bGVMb2dpY2FsV2lkdGgsIGNvbnRhaW5lcldpZHRoSW5JbmxpbmVEaXJlY3Rpb24pKTsK
ICAgICBlbHNlIHsKICAgICAgICAgLy8gU3VidHJhY3Qgb3V0IGFueSBmaXhlZCBtYXJnaW5zIGZy
b20gb3VyIGF2YWlsYWJsZSB3aWR0aCBmb3IgYXV0byB3aWR0aCB0YWJsZXMuCi0gICAgICAgIExh
eW91dFVuaXQgbWFyZ2luU3RhcnQgPSBzdHlsZSgpLT5tYXJnaW5TdGFydCgpLmNhbGNNaW5WYWx1
ZShhdmFpbGFibGVMb2dpY2FsV2lkdGgpOwotICAgICAgICBMYXlvdXRVbml0IG1hcmdpbkVuZCA9
IHN0eWxlKCktPm1hcmdpbkVuZCgpLmNhbGNNaW5WYWx1ZShhdmFpbGFibGVMb2dpY2FsV2lkdGgp
OworICAgICAgICBMYXlvdXRVbml0IG1hcmdpblN0YXJ0ID0gY2FsY3VsYXRlTWluaW11bVZhbHVl
KHN0eWxlKCktPm1hcmdpblN0YXJ0KCksIGF2YWlsYWJsZUxvZ2ljYWxXaWR0aCk7CisgICAgICAg
IExheW91dFVuaXQgbWFyZ2luRW5kID0gY2FsY3VsYXRlTWluaW11bVZhbHVlKHN0eWxlKCktPm1h
cmdpbkVuZCgpLCBhdmFpbGFibGVMb2dpY2FsV2lkdGgpOwogICAgICAgICBMYXlvdXRVbml0IG1h
cmdpblRvdGFsID0gbWFyZ2luU3RhcnQgKyBtYXJnaW5FbmQ7CiAgICAgICAgIAogICAgICAgICAv
LyBTdWJ0cmFjdCBvdXQgb3VyIG1hcmdpbnMgdG8gZ2V0IHRoZSBhdmFpbGFibGUgY29udGVudCB3
aWR0aC4KQEAgLTI2MSw4ICsyNjEsOCBAQCB2b2lkIFJlbmRlclRhYmxlOjpjb21wdXRlTG9naWNh
bFdpZHRoKCkKICAgICBpZiAoIWhhc1BlcnBlbmRpY3VsYXJDb250YWluaW5nQmxvY2spCiAgICAg
ICAgIGNvbXB1dGVJbmxpbmVEaXJlY3Rpb25NYXJnaW5zKGNiLCBhdmFpbGFibGVMb2dpY2FsV2lk
dGgsIGxvZ2ljYWxXaWR0aCgpKTsKICAgICBlbHNlIHsKLSAgICAgICAgc2V0TWFyZ2luU3RhcnQo
c3R5bGUoKS0+bWFyZ2luU3RhcnQoKS5jYWxjTWluVmFsdWUoYXZhaWxhYmxlTG9naWNhbFdpZHRo
KSk7Ci0gICAgICAgIHNldE1hcmdpbkVuZChzdHlsZSgpLT5tYXJnaW5FbmQoKS5jYWxjTWluVmFs
dWUoYXZhaWxhYmxlTG9naWNhbFdpZHRoKSk7CisgICAgICAgIHNldE1hcmdpblN0YXJ0KGNhbGN1
bGF0ZU1pbmltdW1WYWx1ZShzdHlsZSgpLT5tYXJnaW5TdGFydCgpLCBhdmFpbGFibGVMb2dpY2Fs
V2lkdGgpKTsKKyAgICAgICAgc2V0TWFyZ2luRW5kKGNhbGN1bGF0ZU1pbmltdW1WYWx1ZShzdHls
ZSgpLT5tYXJnaW5FbmQoKSwgYXZhaWxhYmxlTG9naWNhbFdpZHRoKSk7CiAgICAgfQogfQogCkBA
IC0yNzYsNyArMjc2LDcgQEAgTGF5b3V0VW5pdCBSZW5kZXJUYWJsZTo6Y29udmVydFN0eWxlTG9n
aQogICAgICAgICByZWNhbGNCb3JkZXJzSW5Sb3dEaXJlY3Rpb24oKTsKICAgICAgICAgYm9yZGVy
cyA9IGJvcmRlclN0YXJ0KCkgKyBib3JkZXJFbmQoKSArIChjb2xsYXBzZUJvcmRlcnMoKSA/IDAg
OiBwYWRkaW5nU3RhcnQoKSArIHBhZGRpbmdFbmQoKSk7CiAgICAgfQotICAgIHJldHVybiBzdHls
ZUxvZ2ljYWxXaWR0aC5jYWxjTWluVmFsdWUoYXZhaWxhYmxlV2lkdGgpICsgYm9yZGVyczsKKyAg
ICByZXR1cm4gY2FsY3VsYXRlTWluaW11bVZhbHVlKHN0eWxlTG9naWNhbFdpZHRoLCBhdmFpbGFi
bGVXaWR0aCkgKyBib3JkZXJzOwogfQogCiB2b2lkIFJlbmRlclRhYmxlOjpsYXlvdXRDYXB0aW9u
KFJlbmRlclRhYmxlQ2FwdGlvbiogY2FwdGlvbikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUYWJsZUNlbGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuY3BwCShyZXZpc2lvbiAxMTA4MTQpCisrKyBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
OTUsNyArOTUsNyBAQCBMYXlvdXRVbml0IFJlbmRlclRhYmxlQ2VsbDo6bG9naWNhbEhlaWdoCiB7
CiAgICAgTGF5b3V0VW5pdCBhZGp1c3RlZExvZ2ljYWxIZWlnaHQgPSBsb2dpY2FsSGVpZ2h0KCkg
LSAoaW50cmluc2ljUGFkZGluZ0JlZm9yZSgpICsgaW50cmluc2ljUGFkZGluZ0FmdGVyKCkpOwog
Ci0gICAgTGF5b3V0VW5pdCBzdHlsZUxvZ2ljYWxIZWlnaHQgPSBzdHlsZSgpLT5sb2dpY2FsSGVp
Z2h0KCkuY2FsY1ZhbHVlKDApOworICAgIExheW91dFVuaXQgc3R5bGVMb2dpY2FsSGVpZ2h0ID0g
Y2FsY3VsYXRlVmFsdWUoc3R5bGUoKS0+bG9naWNhbEhlaWdodCgpLCAwKTsKICAgICBpZiAoZG9j
dW1lbnQoKS0+aW5RdWlya3NNb2RlKCkgfHwgc3R5bGUoKS0+Ym94U2l6aW5nKCkgPT0gQk9SREVS
X0JPWCkgewogICAgICAgICAvLyBFeHBsaWNpdCBoZWlnaHRzIHVzZSB0aGUgYm9yZGVyIGJveCBp
biBxdWlya3MgbW9kZS4KICAgICAgICAgLy8gRG9uJ3QgYWRqdXN0IGhlaWdodC4KSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rpb24uY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rpb24uY3BwCShyZXZp
c2lvbiAxMTA4MTQpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVTZWN0
aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzM4LDcgKzMzOCw3IEBAIGludCBSZW5kZXJUYWJs
ZVNlY3Rpb246OmNhbGNSb3dMb2dpY2FsSGUKICAgICAgICAgTGF5b3V0VW5pdCBiYXNlbGluZURl
c2NlbnQgPSAwOwogCiAgICAgICAgIC8vIE91ciBiYXNlIHNpemUgaXMgdGhlIGJpZ2dlc3QgbG9n
aWNhbCBoZWlnaHQgZnJvbSBvdXIgY2VsbHMnIHN0eWxlcyAoZXhjbHVkaW5nIHJvdyBzcGFubmlu
ZyBjZWxscykuCi0gICAgICAgIG1fcm93UG9zW3IgKyAxXSA9IG1heChtX3Jvd1Bvc1tyXSArIG1f
Z3JpZFtyXS5sb2dpY2FsSGVpZ2h0LmNhbGNNaW5WYWx1ZSgwKSwgMCk7CisgICAgICAgIG1fcm93
UG9zW3IgKyAxXSA9IG1heChtX3Jvd1Bvc1tyXSArIGNhbGN1bGF0ZU1pbmltdW1WYWx1ZShtX2dy
aWRbcl0ubG9naWNhbEhlaWdodCwgMCksIDApOwogCiAgICAgICAgIFJvdyYgcm93ID0gbV9ncmlk
W3JdLnJvdzsKICAgICAgICAgdW5zaWduZWQgdG90YWxDb2xzID0gcm93LnNpemUoKTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuaAkocmV2aXNpb24gMTEwODE0KQorKysg
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuaAkod29ya2luZyBjb3B5KQpAQCAt
OTcsOCArOTcsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBMYXlvdXRSZWN0IHNlbGVjdGlvblJl
Y3RGb3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBib29s
IGNsaXBUb1Zpc2libGVDb250ZW50ID0gdHJ1ZSk7CiAgICAgdmlydHVhbCBMYXlvdXRSZWN0IGxv
Y2FsQ2FyZXRSZWN0KElubGluZUJveCosIGludCBjYXJldE9mZnNldCwgTGF5b3V0VW5pdCogZXh0
cmFXaWR0aFRvRW5kT2ZMaW5lID0gMCk7CiAKLSAgICB2aXJ0dWFsIExheW91dFVuaXQgbWFyZ2lu
TGVmdCgpIGNvbnN0IHsgcmV0dXJuIHN0eWxlKCktPm1hcmdpbkxlZnQoKS5jYWxjTWluVmFsdWUo
MCk7IH0KLSAgICB2aXJ0dWFsIExheW91dFVuaXQgbWFyZ2luUmlnaHQoKSBjb25zdCB7IHJldHVy
biBzdHlsZSgpLT5tYXJnaW5SaWdodCgpLmNhbGNNaW5WYWx1ZSgwKTsgfQorICAgIHZpcnR1YWwg
TGF5b3V0VW5pdCBtYXJnaW5MZWZ0KCkgY29uc3QgeyByZXR1cm4gY2FsY3VsYXRlTWluaW11bVZh
bHVlKHN0eWxlKCktPm1hcmdpbkxlZnQoKSwgMCk7IH0KKyAgICB2aXJ0dWFsIExheW91dFVuaXQg
bWFyZ2luUmlnaHQoKSBjb25zdCB7IHJldHVybiBjYWxjdWxhdGVNaW5pbXVtVmFsdWUoc3R5bGUo
KS0+bWFyZ2luUmlnaHQoKSwgMCk7IH0KIAogICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBjbGlwcGVk
T3ZlcmZsb3dSZWN0Rm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRh
aW5lcikgY29uc3Q7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Sb290SW5saW5l
Qm94LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUm9vdElubGlu
ZUJveC5jcHAJKHJldmlzaW9uIDExMDgxNCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
b290SW5saW5lQm94LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODQ0LDcgKzg0NCw3IEBAIExheW91
dFVuaXQgUm9vdElubGluZUJveDo6dmVydGljYWxQb3NpdGkKICAgICAgICAgfSBlbHNlIGlmICh2
ZXJ0aWNhbEFsaWduID09IEJBU0VMSU5FX01JRERMRSkKICAgICAgICAgICAgIHZlcnRpY2FsUG9z
aXRpb24gKz0gLXJlbmRlcmVyLT5saW5lSGVpZ2h0KGZpcnN0TGluZSwgbGluZURpcmVjdGlvbikg
LyAyICsgcmVuZGVyZXItPmJhc2VsaW5lUG9zaXRpb24oYmFzZWxpbmVUeXBlKCksIGZpcnN0TGlu
ZSwgbGluZURpcmVjdGlvbik7CiAgICAgICAgIGVsc2UgaWYgKHZlcnRpY2FsQWxpZ24gPT0gTEVO
R1RIKQotICAgICAgICAgICAgdmVydGljYWxQb3NpdGlvbiAtPSByZW5kZXJlci0+c3R5bGUoKS0+
dmVydGljYWxBbGlnbkxlbmd0aCgpLmNhbGNWYWx1ZShyZW5kZXJlci0+bGluZUhlaWdodChmaXJz
dExpbmUsIGxpbmVEaXJlY3Rpb24pKTsKKyAgICAgICAgICAgIHZlcnRpY2FsUG9zaXRpb24gLT0g
Y2FsY3VsYXRlVmFsdWUocmVuZGVyZXItPnN0eWxlKCktPnZlcnRpY2FsQWxpZ25MZW5ndGgoKSwg
cmVuZGVyZXItPmxpbmVIZWlnaHQoZmlyc3RMaW5lLCBsaW5lRGlyZWN0aW9uKSk7CiAgICAgfQog
CiAgICAgLy8gU3RvcmUgdGhlIGNhY2hlZCB2YWx1ZS4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcAkocmV2aXNpb24gMTEwODE0KQorKysg
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtODAyLDE0ICs4MDIsMTQgQEAgdm9pZCBSZW5kZXJTdHlsZTo6YXBwbHlUcmFuc2Zv
cm0oVHJhbnNmbwogICAgIGJvb2wgYXBwbHlUcmFuc2Zvcm1PcmlnaW4gPSByZXF1aXJlVHJhbnNm
b3JtT3JpZ2luKHRyYW5zZm9ybU9wZXJhdGlvbnMsIGFwcGx5T3JpZ2luKTsKIAogICAgIGlmIChh
cHBseVRyYW5zZm9ybU9yaWdpbikKLSAgICAgICAgdHJhbnNmb3JtLnRyYW5zbGF0ZTNkKHRyYW5z
Zm9ybU9yaWdpblgoKS5jYWxjRmxvYXRWYWx1ZShib3JkZXJCb3hTaXplLndpZHRoKCkpLCB0cmFu
c2Zvcm1PcmlnaW5ZKCkuY2FsY0Zsb2F0VmFsdWUoYm9yZGVyQm94U2l6ZS5oZWlnaHQoKSksIHRy
YW5zZm9ybU9yaWdpblooKSk7CisgICAgICAgIHRyYW5zZm9ybS50cmFuc2xhdGUzZChjYWxjdWxh
dGVGbG9hdFZhbHVlKHRyYW5zZm9ybU9yaWdpblgoKSwgYm9yZGVyQm94U2l6ZS53aWR0aCgpKSwg
Y2FsY3VsYXRlRmxvYXRWYWx1ZSh0cmFuc2Zvcm1PcmlnaW5ZKCksIGJvcmRlckJveFNpemUuaGVp
Z2h0KCkpLCB0cmFuc2Zvcm1PcmlnaW5aKCkpOwogCiAgICAgdW5zaWduZWQgc2l6ZSA9IHRyYW5z
Zm9ybU9wZXJhdGlvbnMuc2l6ZSgpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzaXpl
OyArK2kpCiAgICAgICAgIHRyYW5zZm9ybU9wZXJhdGlvbnNbaV0tPmFwcGx5KHRyYW5zZm9ybSwg
Ym9yZGVyQm94U2l6ZSk7CiAKICAgICBpZiAoYXBwbHlUcmFuc2Zvcm1PcmlnaW4pCi0gICAgICAg
IHRyYW5zZm9ybS50cmFuc2xhdGUzZCgtdHJhbnNmb3JtT3JpZ2luWCgpLmNhbGNGbG9hdFZhbHVl
KGJvcmRlckJveFNpemUud2lkdGgoKSksIC10cmFuc2Zvcm1PcmlnaW5ZKCkuY2FsY0Zsb2F0VmFs
dWUoYm9yZGVyQm94U2l6ZS5oZWlnaHQoKSksIC10cmFuc2Zvcm1PcmlnaW5aKCkpOyAKKyAgICAg
ICAgdHJhbnNmb3JtLnRyYW5zbGF0ZTNkKC1jYWxjdWxhdGVGbG9hdFZhbHVlKHRyYW5zZm9ybU9y
aWdpblgoKSwgYm9yZGVyQm94U2l6ZS53aWR0aCgpKSwgLWNhbGN1bGF0ZUZsb2F0VmFsdWUodHJh
bnNmb3JtT3JpZ2luWSgpLCBib3JkZXJCb3hTaXplLmhlaWdodCgpKSwgLXRyYW5zZm9ybU9yaWdp
blooKSk7IAogfQogCiB2b2lkIFJlbmRlclN0eWxlOjphcHBseVRyYW5zZm9ybShUcmFuc2Zvcm1h
dGlvbk1hdHJpeCYgdHJhbnNmb3JtLCBjb25zdCBGbG9hdFJlY3QmIGJvdW5kaW5nQm94LCBBcHBs
eVRyYW5zZm9ybU9yaWdpbiBhcHBseU9yaWdpbikgY29uc3QKQEAgLTgyMSw4ICs4MjEsOCBAQCB2
b2lkIFJlbmRlclN0eWxlOjphcHBseVRyYW5zZm9ybShUcmFuc2ZvCiAgICAgZmxvYXQgb2Zmc2V0
WSA9IHRyYW5zZm9ybU9yaWdpblkoKS50eXBlKCkgPT0gUGVyY2VudCA/IGJvdW5kaW5nQm94Lnko
KSA6IDA7CiAgICAgCiAgICAgaWYgKGFwcGx5VHJhbnNmb3JtT3JpZ2luKSB7Ci0gICAgICAgIHRy
YW5zZm9ybS50cmFuc2xhdGUzZCh0cmFuc2Zvcm1PcmlnaW5YKCkuY2FsY0Zsb2F0VmFsdWUoYm91
bmRpbmdCb3gud2lkdGgoKSkgKyBvZmZzZXRYLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdHJhbnNmb3JtT3JpZ2luWSgpLmNhbGNGbG9hdFZhbHVlKGJvdW5kaW5nQm94LmhlaWdodCgp
KSArIG9mZnNldFksCisgICAgICAgIHRyYW5zZm9ybS50cmFuc2xhdGUzZChjYWxjdWxhdGVGbG9h
dFZhbHVlKHRyYW5zZm9ybU9yaWdpblgoKSwgYm91bmRpbmdCb3gud2lkdGgoKSkgKyBvZmZzZXRY
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsY3VsYXRlRmxvYXRWYWx1ZSh0cmFu
c2Zvcm1PcmlnaW5ZKCksIGJvdW5kaW5nQm94LmhlaWdodCgpKSArIG9mZnNldFksCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm1PcmlnaW5aKCkpOwogICAgIH0KICAgICAK
QEAgLTgzMSw4ICs4MzEsOCBAQCB2b2lkIFJlbmRlclN0eWxlOjphcHBseVRyYW5zZm9ybShUcmFu
c2ZvCiAgICAgICAgIHRyYW5zZm9ybU9wZXJhdGlvbnNbaV0tPmFwcGx5KHRyYW5zZm9ybSwgYm91
bmRpbmdCb3guc2l6ZSgpKTsKICAgICAKICAgICBpZiAoYXBwbHlUcmFuc2Zvcm1PcmlnaW4pIHsK
LSAgICAgICAgdHJhbnNmb3JtLnRyYW5zbGF0ZTNkKC10cmFuc2Zvcm1PcmlnaW5YKCkuY2FsY0Zs
b2F0VmFsdWUoYm91bmRpbmdCb3gud2lkdGgoKSkgLSBvZmZzZXRYLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgLXRyYW5zZm9ybU9yaWdpblkoKS5jYWxjRmxvYXRWYWx1ZShib3VuZGlu
Z0JveC5oZWlnaHQoKSkgLSBvZmZzZXRZLAorICAgICAgICB0cmFuc2Zvcm0udHJhbnNsYXRlM2Qo
LWNhbGN1bGF0ZUZsb2F0VmFsdWUodHJhbnNmb3JtT3JpZ2luWCgpLCBib3VuZGluZ0JveC53aWR0
aCgpKSAtIG9mZnNldFgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtY2FsY3VsYXRl
RmxvYXRWYWx1ZSh0cmFuc2Zvcm1PcmlnaW5ZKCksIGJvdW5kaW5nQm94LmhlaWdodCgpKSAtIG9m
ZnNldFksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtdHJhbnNmb3JtT3JpZ2luWigp
KTsKICAgICB9CiB9CkBAIC04NzcsMTQgKzg3NywxNCBAQCB2b2lkIFJlbmRlclN0eWxlOjpzZXRC
b3hTaGFkb3coUGFzc093blB0CiBzdGF0aWMgUm91bmRlZFJlY3Q6OlJhZGlpIGNhbGNSYWRpaUZv
cihjb25zdCBCb3JkZXJEYXRhJiBib3JkZXIsIExheW91dFNpemUgc2l6ZSkKIHsKICAgICByZXR1
cm4gUm91bmRlZFJlY3Q6OlJhZGlpKAotICAgICAgICBJbnRTaXplKGJvcmRlci50b3BMZWZ0KCku
d2lkdGgoKS5jYWxjVmFsdWUoc2l6ZS53aWR0aCgpKSwgCi0gICAgICAgICAgICAgICAgYm9yZGVy
LnRvcExlZnQoKS5oZWlnaHQoKS5jYWxjVmFsdWUoc2l6ZS5oZWlnaHQoKSkpLAotICAgICAgICBJ
bnRTaXplKGJvcmRlci50b3BSaWdodCgpLndpZHRoKCkuY2FsY1ZhbHVlKHNpemUud2lkdGgoKSks
Ci0gICAgICAgICAgICAgICAgYm9yZGVyLnRvcFJpZ2h0KCkuaGVpZ2h0KCkuY2FsY1ZhbHVlKHNp
emUuaGVpZ2h0KCkpKSwKLSAgICAgICAgSW50U2l6ZShib3JkZXIuYm90dG9tTGVmdCgpLndpZHRo
KCkuY2FsY1ZhbHVlKHNpemUud2lkdGgoKSksIAotICAgICAgICAgICAgICAgIGJvcmRlci5ib3R0
b21MZWZ0KCkuaGVpZ2h0KCkuY2FsY1ZhbHVlKHNpemUuaGVpZ2h0KCkpKSwKLSAgICAgICAgSW50
U2l6ZShib3JkZXIuYm90dG9tUmlnaHQoKS53aWR0aCgpLmNhbGNWYWx1ZShzaXplLndpZHRoKCkp
LCAKLSAgICAgICAgICAgICAgICBib3JkZXIuYm90dG9tUmlnaHQoKS5oZWlnaHQoKS5jYWxjVmFs
dWUoc2l6ZS5oZWlnaHQoKSkpKTsKKyAgICAgICAgSW50U2l6ZShjYWxjdWxhdGVWYWx1ZShib3Jk
ZXIudG9wTGVmdCgpLndpZHRoKCksIHNpemUud2lkdGgoKSksIAorICAgICAgICAgICAgICAgIGNh
bGN1bGF0ZVZhbHVlKGJvcmRlci50b3BMZWZ0KCkuaGVpZ2h0KCksIHNpemUuaGVpZ2h0KCkpKSwK
KyAgICAgICAgSW50U2l6ZShjYWxjdWxhdGVWYWx1ZShib3JkZXIudG9wUmlnaHQoKS53aWR0aCgp
LCBzaXplLndpZHRoKCkpLAorICAgICAgICAgICAgICAgIGNhbGN1bGF0ZVZhbHVlKGJvcmRlci50
b3BSaWdodCgpLmhlaWdodCgpLCBzaXplLmhlaWdodCgpKSksCisgICAgICAgIEludFNpemUoY2Fs
Y3VsYXRlVmFsdWUoYm9yZGVyLmJvdHRvbUxlZnQoKS53aWR0aCgpLCBzaXplLndpZHRoKCkpLCAK
KyAgICAgICAgICAgICAgICBjYWxjdWxhdGVWYWx1ZShib3JkZXIuYm90dG9tTGVmdCgpLmhlaWdo
dCgpLCBzaXplLmhlaWdodCgpKSksCisgICAgICAgIEludFNpemUoY2FsY3VsYXRlVmFsdWUoYm9y
ZGVyLmJvdHRvbVJpZ2h0KCkud2lkdGgoKSwgc2l6ZS53aWR0aCgpKSwgCisgICAgICAgICAgICAg
ICAgY2FsY3VsYXRlVmFsdWUoYm9yZGVyLmJvdHRvbVJpZ2h0KCkuaGVpZ2h0KCksIHNpemUuaGVp
Z2h0KCkpKSk7CiB9CiAKIHN0YXRpYyBmbG9hdCBjYWxjQ29uc3RyYWludFNjYWxlRm9yKGNvbnN0
IEludFJlY3QmIHJlY3QsIGNvbnN0IFJvdW5kZWRSZWN0OjpSYWRpaSYgcmFkaWkpCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaAkocmV2aXNpb24g
MTEwODE0KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTM5LDYgKzM5LDcgQEAKICNpbmNsdWRlICJHcmFwaGljc1R5cGVz
LmgiCiAjaW5jbHVkZSAiTGVuZ3RoLmgiCiAjaW5jbHVkZSAiTGVuZ3RoQm94LmgiCisjaW5jbHVk
ZSAiTGVuZ3RoRnVuY3Rpb25zLmgiCiAjaW5jbHVkZSAiTGVuZ3RoU2l6ZS5oIgogI2luY2x1ZGUg
IkxpbmVDbGFtcFZhbHVlLmgiCiAjaW5jbHVkZSAiTmluZVBpZWNlSW1hZ2UuaCIKQEAgLTYyNiw3
ICs2MjcsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm4gZm9udE1ldHJpY3MoKS5saW5l
U3BhY2luZygpOwogCiAgICAgICAgIGlmIChsaC5pc1BlcmNlbnQoKSkKLSAgICAgICAgICAgIHJl
dHVybiBsaC5jYWxjTWluVmFsdWUoZm9udFNpemUoKSk7CisgICAgICAgICAgICByZXR1cm4gY2Fs
Y3VsYXRlTWluaW11bVZhbHVlKGxoLCBmb250U2l6ZSgpKTsKIAogICAgICAgICByZXR1cm4gbGgu
dmFsdWUoKTsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR1Jvb3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHUm9vdC5jcHAJKHJldmlzaW9uIDExMDgxNCkKKysrIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg3LDkgKzg3
LDkgQEAgdm9pZCBSZW5kZXJTVkdSb290Ojpjb21wdXRlSW50cmluc2ljUmF0aQogICAgIC8vICAg
cmVzb2x2aW5nIGJvdGggdmFsdWVzIHRvIHVzZXIgdW5pdHMuCiAgICAgaWYgKGludHJpbnNpY1dp
ZHRoQXR0cmlidXRlLmlzRml4ZWQoKSB8fCBpbnRyaW5zaWNIZWlnaHRBdHRyaWJ1dGUuaXNGaXhl
ZCgpKSB7CiAgICAgICAgIGlmIChpbnRyaW5zaWNXaWR0aEF0dHJpYnV0ZS5pc0ZpeGVkKCkpCi0g
ICAgICAgICAgICBpbnRyaW5zaWNTaXplLnNldFdpZHRoKGludHJpbnNpY1dpZHRoQXR0cmlidXRl
LmNhbGNGbG9hdFZhbHVlKDApKTsKKyAgICAgICAgICAgIGludHJpbnNpY1NpemUuc2V0V2lkdGgo
Y2FsY3VsYXRlRmxvYXRWYWx1ZShpbnRyaW5zaWNXaWR0aEF0dHJpYnV0ZSwgMCkpOwogICAgICAg
ICBpZiAoaW50cmluc2ljSGVpZ2h0QXR0cmlidXRlLmlzRml4ZWQoKSkKLSAgICAgICAgICAgIGlu
dHJpbnNpY1NpemUuc2V0SGVpZ2h0KGludHJpbnNpY0hlaWdodEF0dHJpYnV0ZS5jYWxjRmxvYXRW
YWx1ZSgwKSk7CisgICAgICAgICAgICBpbnRyaW5zaWNTaXplLnNldEhlaWdodChjYWxjdWxhdGVG
bG9hdFZhbHVlKGludHJpbnNpY0hlaWdodEF0dHJpYnV0ZSwgMCkpOwogICAgICAgICBpZiAoIWlu
dHJpbnNpY1NpemUuaXNFbXB0eSgpKQogICAgICAgICAgICAgaW50cmluc2ljUmF0aW8gPSBpbnRy
aW5zaWNTaXplLndpZHRoKCkgLyBzdGF0aWNfY2FzdDxkb3VibGU+KGludHJpbnNpY1NpemUuaGVp
Z2h0KCkpOwogICAgICAgICByZXR1cm47CkBAIC0xNTMsNyArMTUzLDcgQEAgYm9vbCBSZW5kZXJT
VkdSb290Ojppc0VtYmVkZGVkVGhyb3VnaEZyYQogCiBzdGF0aWMgaW5saW5lIExheW91dFVuaXQg
cmVzb2x2ZUxlbmd0aEF0dHJpYnV0ZUZvclNWRyhjb25zdCBMZW5ndGgmIGxlbmd0aCwgZmxvYXQg
c2NhbGUsIGZsb2F0IG1heFNpemUpCiB7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PExheW91dFVu
aXQ+KGxlbmd0aC5jYWxjVmFsdWUobWF4U2l6ZSkgKiAobGVuZ3RoLmlzRml4ZWQoKSA/IHNjYWxl
IDogMSkpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxMYXlvdXRVbml0PihjYWxjdWxhdGVWYWx1
ZShsZW5ndGgsIG1heFNpemUpICogKGxlbmd0aC5pc0ZpeGVkKCkgPyBzY2FsZSA6IDEpKTsKIH0K
IAogTGF5b3V0VW5pdCBSZW5kZXJTVkdSb290Ojpjb21wdXRlUmVwbGFjZWRMb2dpY2FsV2lkdGgo
Ym9vbCBpbmNsdWRlTWF4V2lkdGgpIGNvbnN0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
U1ZHRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1NWR0Vs
ZW1lbnQuY3BwCShyZXZpc2lvbiAxMTA4MTQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU1ZH
RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU0MSw3ICs1NDEsNyBAQCBGbG9hdFJlY3Qg
U1ZHU1ZHRWxlbWVudDo6Y3VycmVudFZpZXdCb3hSCiAKICAgICAvLyBJZiBubyB2aWV3Qm94IGlz
IHNwZWNpZmllZCBidXQgbm9uLXJlbGF0aXZlIHdpZHRoL2hlaWdodCB2YWx1ZXMsIHRoZW4gd2UK
ICAgICAvLyBzaG91bGQgYWx3YXlzIHN5bnRoZXNpemUgYSB2aWV3Qm94IGlmIHdlJ3JlIGVtYmVk
ZGVkIHRocm91Z2ggYSBTVkdJbWFnZS4gICAgCi0gICAgcmV0dXJuIEZsb2F0UmVjdChGbG9hdFBv
aW50KCksIEZsb2F0U2l6ZShpbnRyaW5zaWNXaWR0aC5jYWxjRmxvYXRWYWx1ZSgwKSwgaW50cmlu
c2ljSGVpZ2h0LmNhbGNGbG9hdFZhbHVlKDApKSk7CisgICAgcmV0dXJuIEZsb2F0UmVjdChGbG9h
dFBvaW50KCksIEZsb2F0U2l6ZShjYWxjdWxhdGVGbG9hdFZhbHVlKGludHJpbnNpY1dpZHRoLCAw
KSwgY2FsY3VsYXRlRmxvYXRWYWx1ZShpbnRyaW5zaWNIZWlnaHQsIDApKSk7CiB9CiAKIEZsb2F0
U2l6ZSBTVkdTVkdFbGVtZW50OjpjdXJyZW50Vmlld3BvcnRTaXplKCkgY29uc3QKQEAgLTU0OSw3
ICs1NDksNyBAQCBGbG9hdFNpemUgU1ZHU1ZHRWxlbWVudDo6Y3VycmVudFZpZXdwb3J0CiAgICAg
TGVuZ3RoIGludHJpbnNpY1dpZHRoID0gdGhpcy0+aW50cmluc2ljV2lkdGgoKTsKICAgICBMZW5n
dGggaW50cmluc2ljSGVpZ2h0ID0gdGhpcy0+aW50cmluc2ljSGVpZ2h0KCk7CiAgICAgaWYgKGlu
dHJpbnNpY1dpZHRoLmlzRml4ZWQoKSAmJiBpbnRyaW5zaWNIZWlnaHQuaXNGaXhlZCgpKQotICAg
ICAgICByZXR1cm4gRmxvYXRTaXplKGludHJpbnNpY1dpZHRoLmNhbGNGbG9hdFZhbHVlKDApLCBp
bnRyaW5zaWNIZWlnaHQuY2FsY0Zsb2F0VmFsdWUoMCkpOworICAgICAgICByZXR1cm4gRmxvYXRT
aXplKGNhbGN1bGF0ZUZsb2F0VmFsdWUoaW50cmluc2ljV2lkdGgsIDApLCBjYWxjdWxhdGVGbG9h
dFZhbHVlKGludHJpbnNpY0hlaWdodCwgMCkpOwogCiAgICAgaWYgKCFyZW5kZXJlcigpKQogICAg
ICAgICByZXR1cm4gRmxvYXRTaXplKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhp
Y3MvU1ZHSW1hZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGlj
cy9TVkdJbWFnZS5jcHAJKHJldmlzaW9uIDExMDgxNCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9n
cmFwaGljcy9TVkdJbWFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5Myw3ICsyOTMsNyBAQCB2
b2lkIFNWR0ltYWdlOjpjb21wdXRlSW50cmluc2ljRGltZW5zaW9uCiAKICAgICBpbnRyaW5zaWNS
YXRpbyA9IHJvb3RFbGVtZW50LT52aWV3Qm94KCkuc2l6ZSgpOwogICAgIGlmIChpbnRyaW5zaWNS
YXRpby5pc0VtcHR5KCkgJiYgaW50cmluc2ljV2lkdGguaXNGaXhlZCgpICYmIGludHJpbnNpY0hl
aWdodC5pc0ZpeGVkKCkpCi0gICAgICAgIGludHJpbnNpY1JhdGlvID0gRmxvYXRTaXplKGludHJp
bnNpY1dpZHRoLmNhbGNGbG9hdFZhbHVlKDApLCBpbnRyaW5zaWNIZWlnaHQuY2FsY0Zsb2F0VmFs
dWUoMCkpOworICAgICAgICBpbnRyaW5zaWNSYXRpbyA9IEZsb2F0U2l6ZShjYWxjdWxhdGVGbG9h
dFZhbHVlKGludHJpbnNpY1dpZHRoLCAwKSwgY2FsY3VsYXRlRmxvYXRWYWx1ZShpbnRyaW5zaWNI
ZWlnaHQsIDApKTsKIH0KIAogTmF0aXZlSW1hZ2VQdHIgU1ZHSW1hZ2U6Om5hdGl2ZUltYWdlRm9y
Q3VycmVudEZyYW1lKCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDExMDgyMCkKKysrIFNvdXJj
ZS9XZWJLaXQyL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDEy
LTAzLTE0ICBKb2UgVGhvbWFzICA8am9ldGhvbWFzQG1vdG9yb2xhLmNvbT4KKworICAgICAgICBt
b3ZlIGNhbGMqVmFsdWUgZnVuY3Rpb25zIG91dCBmcm9tIExlbmd0aCAoYW5kIHBsYXRmb3JtKQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODA4OTcKKwor
ICAgICAgICBNb3ZpbmcgdGhlIExlbmd0aCBjYWxjKlZhbHVlIGZ1bmN0aW9ucyBvdXQgZnJvbSBM
ZW5ndGggc3RydWN0dXJlIGFuZCBhbHNvIGZyb20gL1dlYkNvcmUvcGxhdGZvcm0vIGZvbGRlci4K
KyAgICAgICAgVGhpcyBoZWxwcyB0byBhdm9pZCB0aGUgbGF5ZXJpbmcgdmlvbGF0aW9uIHdoaWxl
IGxlbmd0aCBjYWxjdWxhdGlvbi4gT3RoZXJ3aXNlIGxheWVyIHZpb2xhdGlvbiBjYW4gYmUgYXZv
aWRlZCBvbmx5IGJ5IGFkZGluZyBhIHZpcnR1YWwgaW50ZXJmYWNlKGJ1ZyAyNzE2MCkuCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L3dpbi9XZWJQb3B1cE1lbnVXaW4uY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJQb3B1cE1lbnU6OnNldFVwUGxhdGZvcm1EYXRhKToKKwogMjAxMi0wMy0xNCAgQW5kZXJz
IENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgogCiAgICAgICAgIGphdmEvamF2YS1hbmQt
cGx1Z2lucy5odG1sIHRlc3QgZmFpbGluZwpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC93aW4vV2ViUG9wdXBNZW51V2luLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L3dpbi9XZWJQb3B1cE1lbnVX
aW4uY3BwCShyZXZpc2lvbiAxMTA4MTQpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L3dpbi9XZWJQb3B1cE1lbnVXaW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
OSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiUGxhdGZvcm1Qb3B1cE1lbnVEYXRhLmgiCiAjaW5jbHVk
ZSA8V2ViQ29yZS9Gb250Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0NvbnRleHQuaD4K
KyNpbmNsdWRlIDxXZWJDb3JlL0xlbmd0aEZ1bmN0aW9ucy5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
VGV4dFJ1bi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUG9wdXBNZW51Q2xpZW50Lmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9Qb3B1cE1lbnVTdHlsZS5oPgpAQCAtMTM1LDcgKzEzNiw3IEBAIHZvaWQgV2Vi
UG9wdXBNZW51OjpzZXRVcFBsYXRmb3JtRGF0YShjb24KICAgICAgICAgaWYgKGl0ZW1TdHlsZS5p
c1Zpc2libGUoKSkgewogICAgICAgICAgICAgaW50IHRleHRYID0gc3RkOjptYXgoMCwgZGF0YS5t
X2NsaWVudFBhZGRpbmdMZWZ0IC0gZGF0YS5tX2NsaWVudEluc2V0TGVmdCk7CiAgICAgICAgICAg
ICBpZiAoUmVuZGVyVGhlbWU6OmRlZmF1bHRUaGVtZSgpLT5wb3B1cE9wdGlvblN1cHBvcnRzVGV4
dEluZGVudCgpICYmIGl0ZW1TdHlsZS50ZXh0RGlyZWN0aW9uKCkgPT0gTFRSKQotICAgICAgICAg
ICAgICAgIHRleHRYICs9IGl0ZW1TdHlsZS50ZXh0SW5kZW50KCkuY2FsY01pblZhbHVlKGl0ZW1S
ZWN0LndpZHRoKCkpOworICAgICAgICAgICAgICAgIHRleHRYICs9IGNhbGN1bGF0ZU1pbmltdW1W
YWx1ZShpdGVtU3R5bGUudGV4dEluZGVudCgpLCBpdGVtUmVjdC53aWR0aCgpKTsKICAgICAgICAg
ICAgIGludCB0ZXh0WSA9IGl0ZW1SZWN0LnkoKSArIGl0ZW1Gb250LmZvbnRNZXRyaWNzKCkuYXNj
ZW50KCkgKyAoaXRlbVJlY3QuaGVpZ2h0KCkgLSBpdGVtRm9udC5mb250TWV0cmljcygpLmhlaWdo
dCgpKSAvIDI7CiAKICAgICAgICAgICAgIG5vdFNlbGVjdGVkQmFja2luZ1N0b3JlQ29udGV4dC0+
ZHJhd0JpZGlUZXh0KGl0ZW1Gb250LCB0ZXh0UnVuLCBJbnRQb2ludCh0ZXh0WCwgdGV4dFkpKTsK
</data>
<flag name="review"
          id="135489"
          type_id="1"
          status="+"
          setter="koivisto"
    />
    <flag name="commit-queue"
          id="135549"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>132441</attachid>
            <date>2012-03-16 20:56:00 -0700</date>
            <delta_ts>2012-03-17 08:44:15 -0700</delta_ts>
            <desc>Patch-Rebaselined</desc>
            <filename>patch3</filename>
            <type>text/plain</type>
            <size>115922</size>
            <attacher name="Joe Thomas">joethomas</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDExMTExMSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0NiBAQAorMjAxMi0wMy0xNiAgSm9lIFRo
b21hcyAgPGpvZXRob21hc0Btb3Rvcm9sYS5jb20+CisKKyAgICAgICAgbW92ZSBjYWxjKlZhbHVl
IGZ1bmN0aW9ucyBvdXQgZnJvbSBMZW5ndGggKGFuZCBwbGF0Zm9ybSkKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgwODk3CisKKyAgICAgICAgTW92aW5n
IHRoZSBMZW5ndGggY2FsYypWYWx1ZSBmdW5jdGlvbnMgb3V0IGZyb20gTGVuZ3RoIHN0cnVjdHVy
ZSBhbmQgYWxzbyBmcm9tIC9XZWJDb3JlL3BsYXRmb3JtLyBmb2xkZXIuCisgICAgICAgIFRoaXMg
aGVscHMgdG8gYXZvaWQgdGhlIGxheWVyaW5nIHZpb2xhdGlvbiB3aGlsZSBsZW5ndGggY2FsY3Vs
YXRpb24uIE90aGVyd2lzZSBsYXllciB2aW9sYXRpb24gY2FuIGJlIGF2b2lkZWQgb25seSBieSBh
ZGRpbmcgYSB2aXJ0dWFsIGludGVyZmFjZShidWcgMjcxNjApLgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbTogQnVp
bGQgc3lzdGVtIGNoYW5nZXMgZm9yIGFkZGluZyBuZXcgZmlsZXMuCisgICAgICAgICogVGFyZ2V0
LnByaTogRGl0dG8uCisgICAgICAgICogV2ViQ29yZS5neXBpOiBEaXR0by4KKyAgICAgICAgKiBX
ZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajogRGl0dG8uCisgICAgICAgICogV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBEaXR0by4KKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5
L2d0ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNlVGV4dC5jcHA6CisgICAgICAgIChnZXRBdHRy
aWJ1dGVTZXRGb3JBY2Nlc3NpYmlsaXR5T2JqZWN0KToKKyAgICAgICAgKiBjc3MvQ1NTQ29tcHV0
ZWRTdHlsZURlY2xhcmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0NvbXB1dGVkU3R5
bGVEZWNsYXJhdGlvbjo6Z2V0UHJvcGVydHlDU1NWYWx1ZSk6CisgICAgICAgICogY3NzL0xlbmd0
aEZ1bmN0aW9ucy5oOiBBZGRlZC4gTW92ZWQgY2FsYypWYWx1ZSBmdW5jdGlvbnMgb2YgTGVuZ3Ro
LgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpjYWxjdWxhdGVNaW5pbXVt
VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6Y2FsY3VsYXRlVmFsdWUpOgorICAgICAgICAoV2Vi
Q29yZTo6Y2FsY3VsYXRlRmxvYXRWYWx1ZSk6CisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpwYWdlU2l6ZUFuZE1hcmdpbnNJblBpeGVscyk6
CisgICAgICAgICogaHRtbC9IVE1MQXJlYUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTEFyZWFFbGVtZW50OjpnZXRSZWdpb24pOgorICAgICAgICAqIHBsYXRmb3JtL0NhbGN1bGF0
aW9uVmFsdWUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNhbGNFeHByZXNzaW9uTGVuZ3RoOjpldmFs
dWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vTGVuZ3RoLmg6IFJlbW92ZWQgdGhlIGNhbGMqVmFs
dWUgZnVuY3Rpb25zIGZyb20gTGVuZ3RoIHN0cnVjdHVyZS4KKyAgICAgICAgKExlbmd0aCk6Cisg
ICAgICAgIChXZWJDb3JlOjpMZW5ndGg6OmdldEZsb2F0VmFsdWUpOgorICAgICAgICAoV2ViQ29y
ZTo6TGVuZ3RoOjpnZXRJbnRWYWx1ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Ev
bWFjL1BsYXRmb3JtQ0FBbmltYXRpb25NYWMubW06CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2EvbWFjL1BsYXRmb3JtQ0FMYXllck1hYy5tbToKKyAgICAgICAgKFBsYXRmb3JtQ0FMYXll
cjo6c2V0RmlsdGVycyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NSZW5kZXJTdXJmYWNlRmlsdGVycy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1JlbmRlclN1
cmZhY2VGaWx0ZXJzOjphcHBseSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9GaWx0ZXJPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlck9wZXJhdGlv
bnM6OmdldE91dHNldHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMv
UGVyc3BlY3RpdmVUcmFuc2Zvcm1PcGVyYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGVy
c3BlY3RpdmVUcmFuc2Zvcm1PcGVyYXRpb246OmJsZW5kKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy90cmFuc2Zvcm1zL1BlcnNwZWN0aXZlVHJhbnNmb3JtT3BlcmF0aW9uLmg6CisgICAg
ICAgIChXZWJDb3JlOjpQZXJzcGVjdGl2ZVRyYW5zZm9ybU9wZXJhdGlvbjo6aXNJZGVudGl0eSk6
CisgICAgICAgIChXZWJDb3JlOjpQZXJzcGVjdGl2ZVRyYW5zZm9ybU9wZXJhdGlvbjo6YXBwbHkp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNsYXRlVHJhbnNm
b3JtT3BlcmF0aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpUcmFuc2xhdGVUcmFuc2Zvcm1PcGVy
YXRpb246OngpOgorICAgICAgICAoV2ViQ29yZTo6VHJhbnNsYXRlVHJhbnNmb3JtT3BlcmF0aW9u
Ojp5KToKKyAgICAgICAgKFdlYkNvcmU6OlRyYW5zbGF0ZVRyYW5zZm9ybU9wZXJhdGlvbjo6eik6
CisgICAgICAgIChXZWJDb3JlOjpUcmFuc2xhdGVUcmFuc2Zvcm1PcGVyYXRpb246OmlzSWRlbnRp
dHkpOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9Qb3B1cE1lbnVXaW4uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UG9wdXBNZW51V2luOjpwYWludCk6CisgICAgICAgICogcmVuZGVyaW5nL0F1dG9U
YWJsZUxheW91dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdXRvVGFibGVMYXlvdXQ6OmxheW91
dCk6CisgICAgICAgICogcmVuZGVyaW5nL0ZpbHRlckVmZmVjdFJlbmRlcmVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdFJlbmRlcmVyOjpidWlsZCk6CisgICAgICAgICogcmVu
ZGVyaW5nL0ZpeGVkVGFibGVMYXlvdXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rml4ZWRUYWJs
ZUxheW91dDo6bGF5b3V0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OnRleHRJbmRlbnRPZmZzZXQpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OmNvbXB1dGVJbmxpbmVQcmVmZXJyZWRMb2dpY2FsV2lk
dGhzKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckJveDo6cmVmbGVjdGlvbk9mZnNldCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJCb3g6OmNsaXBSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6Y29tcHV0ZUxv
Z2ljYWxXaWR0aEluUmVnaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6Y29tcHV0
ZUxvZ2ljYWxXaWR0aEluUmVnaW9uVXNpbmcpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94
Ojpjb21wdXRlSW5saW5lRGlyZWN0aW9uTWFyZ2lucyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJCb3g6OmNvbXB1dGVQZXJjZW50YWdlTG9naWNhbEhlaWdodCk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJCb3g6OmNvbXB1dGVSZXBsYWNlZExvZ2ljYWxXaWR0aFVzaW5nKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckJveDo6Y29tcHV0ZVJlcGxhY2VkTG9naWNhbEhlaWdodFVzaW5nKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6YXZhaWxhYmxlTG9naWNhbEhlaWdodFVzaW5n
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6Y29tcHV0ZUJsb2NrRGlyZWN0aW9uTWFy
Z2lucyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OmNvbXB1dGVQb3NpdGlvbmVkTG9n
aWNhbFdpZHRoVXNpbmcpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94Ojpjb21wdXRlUG9z
aXRpb25lZExvZ2ljYWxIZWlnaHRVc2luZyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6
OmNvbXB1dGVQb3NpdGlvbmVkTG9naWNhbFdpZHRoUmVwbGFjZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyQm94Ojpjb21wdXRlUG9zaXRpb25lZExvZ2ljYWxIZWlnaHRSZXBsYWNlZCk6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckJveE1vZGVsT2JqZWN0OjpyZWxhdGl2ZVBvc2l0aW9uT2Zmc2V0WCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9iamVjdDo6cmVsYXRpdmVQb3NpdGlvbk9m
ZnNldFkpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhZGRpbmdU
b3ApOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhZGRpbmdCb3R0
b20pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhZGRpbmdMZWZ0
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWRkaW5nUmlnaHQp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhZGRpbmdCZWZvcmUp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhZGRpbmdBZnRlcik6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFkZGluZ1N0YXJ0KToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWRkaW5nRW5kKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckJveE1vZGVsT2JqZWN0OjpjYWxjdWxhdGVGaWxsVGlsZVNp
emUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6OmNhbGN1bGF0ZUJh
Y2tncm91bmRJbWFnZUdlb21ldHJ5KToKKyAgICAgICAgKFdlYkNvcmU6OmNvbXB1dGVCb3JkZXJJ
bWFnZVNpZGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50
TmluZVBpZWNlSW1hZ2UpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGbGV4aWJsZUJveDo6cHJlZmVycmVkTWFpbkF4
aXNDb250ZW50RXh0ZW50Rm9yQ2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmxleGli
bGVCb3g6OmNvbXB1dGVNYWluQXhpc1ByZWZlcnJlZFNpemVzKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckZsZXhpYmxlQm94OjpydW5GcmVlU3BhY2VBbGxvY2F0aW9uQWxnb3JpdGhtKToKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRnJhbWVTZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyRnJhbWVTZXQ6OmxheU91dEF4aXMpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJJ
bmxpbmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29tcHV0ZU1hcmdpbik6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVy
OjpwZXJzcGVjdGl2ZVRyYW5zZm9ybSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6
cGVyc3BlY3RpdmVPcmlnaW4pOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckJhY2tp
bmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJCYWNraW5nOjpjb21wdXRlVHJh
bnNmb3JtT3JpZ2luKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQmFja2luZzo6Y29t
cHV0ZVBlcnNwZWN0aXZlT3JpZ2luKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTWFycXVl
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXJxdWVlOjp0aW1lckZpcmVkKToKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTWVudUxpc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyTWVudUxpc3Q6OnVwZGF0ZU9wdGlvbnNXaWR0aCk6CisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlck9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OnJlcGFp
bnRBZnRlckxheW91dElmTmVlZGVkKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyUmVwbGFj
ZWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyUmVwbGFjZWQ6OmNvbXB1dGVSZXBsYWNl
ZExvZ2ljYWxXaWR0aCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhclBhcnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Y2FsY1Njcm9sbGJhclRoaWNrbmVzc1VzaW5nKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclNjcm9sbGJhclBhcnQ6OmNvbXB1dGVTY3JvbGxiYXJXaWR0
aCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTY3JvbGxiYXJQYXJ0Ojpjb21wdXRlU2Nyb2xs
YmFySGVpZ2h0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGFibGUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyVGFibGU6OmNvbXB1dGVMb2dpY2FsV2lkdGgpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyVGFibGU6OmNvbnZlcnRTdHlsZUxvZ2ljYWxXaWR0aFRvQ29tcHV0ZWRX
aWR0aCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJUYWJsZUNlbGw6OmxvZ2ljYWxIZWlnaHRGb3JSb3dTaXppbmcpOgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rpb24uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyVGFibGVTZWN0aW9uOjpjYWxjUm93TG9naWNhbEhlaWdodCk6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlclRleHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHQ6
Om1hcmdpbkxlZnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dDo6bWFyZ2luUmlnaHQp
OgorICAgICAgICAqIHJlbmRlcmluZy9Sb290SW5saW5lQm94LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJvb3RJbmxpbmVCb3g6OnZlcnRpY2FsUG9zaXRpb25Gb3JCb3gpOgorICAgICAgICAqIHJl
bmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJT
dHlsZTo6YXBwbHlUcmFuc2Zvcm0pOgorICAgICAgICAoV2ViQ29yZTo6Y2FsY1JhZGlpRm9yKToK
KyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaDoKKyAgICAgICAgKiByZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZH
Um9vdDo6Y29tcHV0ZUludHJpbnNpY1JhdGlvSW5mb3JtYXRpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6cmVzb2x2ZUxlbmd0aEF0dHJpYnV0ZUZvclNWRyk6CisgICAgICAgICogc3ZnL1NWR1NWR0Vs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHU1ZHRWxlbWVudDo6Y3VycmVudFZpZXdC
b3hSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1NWR0VsZW1lbnQ6OmN1cnJlbnRWaWV3cG9y
dFNpemUpOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdJbWFnZTo6Y29tcHV0ZUludHJpbnNpY0RpbWVuc2lvbnMpOgorCiAyMDEyLTAz
LTE2ICBNYXJ0aW4gUm9iaW5zb24gIDxtcm9iaW5zb25AaWdhbGlhLmNvbT4KIAogICAgICAgICBb
Q2Fpcm9dIFRleHQgZXh0ZW50IG9mIHNoYWRvd2VkIHRleHQgaXMgY2FsY3VsYXRlZCBpbmNvcnJl
Y3RseQpJbmRleDogU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCShyZXZpc2lvbiAxMTExMTEp
CisrKyBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCSh3b3JraW5nIGNvcHkpCkBA
IC0xNjQ1LDYgKzE2NDUsNyBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3Jl
L2Nzcy9Gb250RmVhdHVyZVZhbHVlLmggXAogCVNvdXJjZS9XZWJDb3JlL2Nzcy9Gb250VmFsdWUu
Y3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9jc3MvRm9udFZhbHVlLmggXAorCVNvdXJjZS9XZWJDb3Jl
L2Nzcy9MZW5ndGhGdW5jdGlvbnMuaCBcCiAJU291cmNlL1dlYkNvcmUvY3NzL01lZGlhRmVhdHVy
ZU5hbWVzLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvY3NzL01lZGlhRmVhdHVyZU5hbWVzLmggXAog
CVNvdXJjZS9XZWJDb3JlL2Nzcy9NZWRpYUxpc3QuY3BwIFwKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L1RhcmdldC5wcmkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQkocmV2
aXNpb24gMTExMTExKQorKysgU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQkod29ya2luZyBjb3B5
KQpAQCAtMTYwOSw2ICsxNjA5LDcgQEAgSEVBREVSUyArPSBcCiAgICAgY3NzL0NTU1dyYXBTaGFw
ZXMuaCBcCiAgICAgY3NzL0ZvbnRGZWF0dXJlVmFsdWUuaCBcCiAgICAgY3NzL0ZvbnRWYWx1ZS5o
IFwKKyAgICBjc3MvTGVuZ3RoRnVuY3Rpb25zLmggXAogICAgIGNzcy9NZWRpYUZlYXR1cmVOYW1l
cy5oIFwKICAgICBjc3MvTWVkaWFMaXN0LmggXAogICAgIGNzcy9NZWRpYVF1ZXJ5LmggXApJbmRl
eDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL1dlYkNvcmUuZ3lwaQkocmV2aXNpb24gMTExMTExKQorKysgU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5neXBpCSh3b3JraW5nIGNvcHkpCkBAIC04OSw2ICs4OSw3IEBACiAgICAgICAgICAgICAn
Y3NzL0NTU1ZhbHVlLmgnLAogICAgICAgICAgICAgJ2Nzcy9DU1NWYWx1ZUxpc3QuaCcsCiAgICAg
ICAgICAgICAnY3NzL0NTU1dyYXBTaGFwZXMuaCcsCisgICAgICAgICAgICAnY3NzL0xlbmd0aEZ1
bmN0aW9ucy5oJywKICAgICAgICAgICAgICdjc3MvUGFpci5oJywKICAgICAgICAgICAgICdjc3Mv
V2ViS2l0Q1NTRmlsdGVyVmFsdWUuaCcsCiAgICAgICAgICAgICAnY3NzL1dlYktpdENTU1NoYWRl
clZhbHVlLmgnLApJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52
Y3Byb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29y
ZS52Y3Byb2oJKHJldmlzaW9uIDExMTExMSkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNw
cm9qL1dlYkNvcmUudmNwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0zNjQ3NCw2ICszNjQ3NCwxMCBA
QAogCQkJCT4KIAkJCTwvRmlsZT4KIAkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxjc3Nc
TGVuZ3RoRnVuY3Rpb25zLmgiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKIAkJCQlSZWxh
dGl2ZVBhdGg9Ii4uXGNzc1xNZWRpYUFsbEluT25lLmNwcCIKIAkJCQk+CiAJCQkJPEZpbGVDb25m
aWd1cmF0aW9uCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxMTExMTEpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTU5NTgsNiAr
NTk1OCw3IEBACiAJCUU0QzI3OTU5MENGOTc0MTkwMEU5N0I5OCAvKiBSZW5kZXJNZWRpYS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTRDMjc5NTcwQ0Y5
NzQxOTAwRTk3Qjk4IC8qIFJlbmRlck1lZGlhLmggKi87IH07CiAJCUU0RDY4Nzc3MEVEN0FFM0Qw
MDZFQTk3OCAvKiBQdXJnZWFibGVCdWZmZXJNYWMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTRENjg3NzYwRUQ3QUUzRDAwNkVBOTc4IC8qIFB1cmdl
YWJsZUJ1ZmZlck1hYy5jcHAgKi87IH07CiAJCUU0RDY4Nzc5MEVEN0FFNEYwMDZFQTk3OCAvKiBQ
dXJnZWFibGVCdWZmZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEU0RDY4Nzc4MEVEN0FFNEYwMDZFQTk3OCAvKiBQdXJnZWFibGVCdWZmZXIuaCAqLzsg
fTsKKwkJRTVCQTdENjMxNTE0MzdDQTAwRkUxRTNGIC8qIExlbmd0aEZ1bmN0aW9ucy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTVCQTdENjIxNTE0MzdD
QTAwRkUxRTNGIC8qIExlbmd0aEZ1bmN0aW9ucy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCUVEMkJBODNDMDlBMjRCOTEwMDZDMEFDNCAvKiBEb2N1
bWVudE1hcmtlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRUQyQkE4M0IwOUEyNEI5MTAwNkMwQUM0IC8qIERvY3VtZW50TWFya2VyLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRUQ1MDFEQzYwQjI0OUYy
OTAwQUUxOEQ5IC8qIEVkaXRvck1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEVENTAxREM1MEIyNDlGMjkwMEFFMThEOSAvKiBFZGl0b3JNYWMubW0g
Ki87IH07CiAJCUVERTNBNTAwMEM3QTQzMDYwMDk1NkEzNyAvKiBDb2xvck1hYy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRURFM0E0RkYwQzdBNDMwNjAw
OTU2QTM3IC8qIENvbG9yTWFjLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKQEAgLTEzMDcxLDYgKzEzMDcyLDcgQEAKIAkJRTRDMjc5NTcwQ0Y5NzQxOTAw
RTk3Qjk4IC8qIFJlbmRlck1lZGlhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFJlbmRlck1lZGlhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUU0RDY4Nzc2MEVE
N0FFM0QwMDZFQTk3OCAvKiBQdXJnZWFibGVCdWZmZXJNYWMuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gUHVyZ2VhYmxlQnVmZmVyTWFjLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJRTRENjg3NzgwRUQ3QUU0RjAwNkVBOTc4IC8qIFB1cmdlYWJsZUJ1
ZmZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQdXJnZWFibGVCdWZmZXIu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTVCQTdENjIxNTE0MzdDQTAwRkUxRTNG
IC8qIExlbmd0aEZ1bmN0aW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBM
ZW5ndGhGdW5jdGlvbnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRUQyQkE4M0Iw
OUEyNEI5MTAwNkMwQUM0IC8qIERvY3VtZW50TWFya2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IERvY3VtZW50TWFya2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUVENTAxREM1MEIyNDlGMjkwMEFFMThEOSAvKiBFZGl0b3JNYWMubW0gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gRWRpdG9yTWFjLm1tOyBwYXRoID0gbWFjL0Vk
aXRvck1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRURFM0E0RkYwQzdBNDMw
NjAwOTU2QTM3IC8qIENvbG9yTWFjLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IENvbG9yTWFjLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMDQ3MSw2ICsyMDQ3
Myw3IEBACiAJCQkJQ0Q0RTBBRkExMUY3QkMyNzAwOUQzODExIC8qIGZ1bGxzY3JlZW4uY3NzICov
LAogCQkJCUNEQkQ5M0JBMTMzM0JENEIwMDI1NzBFMyAvKiBmdWxsc2NyZWVuUXVpY2tUaW1lLmNz
cyAqLywKIAkJCQk5M0NBNEM5OTA5REY5M0ZBMDBERjg2NzcgLyogaHRtbC5jc3MgKi8sCisJCQkJ
RTVCQTdENjIxNTE0MzdDQTAwRkUxRTNGIC8qIExlbmd0aEZ1bmN0aW9ucy5oICovLAogCQkJCTkz
Q0E0QzlBMDlERjkzRkEwMERGODY3NyAvKiBtYWtlLWNzcy1maWxlLWFycmF5cy5wbCAqLywKIAkJ
CQk5M0NBNEM5QjA5REY5M0ZBMDBERjg2NzcgLyogbWFrZXByb3AucGwgKi8sCiAJCQkJOTNDQTRD
OUQwOURGOTNGQTAwREY4Njc3IC8qIG1ha2V2YWx1ZXMucGwgKi8sCkBAIC0yMzQ3Myw2ICsyMzQ3
Niw3IEBACiAJCQkJNTEyREQ4RjUwRDkxRTZBRjAwMEY4OUVFIC8qIExlZ2FjeVdlYkFyY2hpdmUu
aCBpbiBIZWFkZXJzICovLAogCQkJCUJDRTY1QkVCMEVBQ0RGMTYwMDdFNDUzMyAvKiBMZW5ndGgu
aCBpbiBIZWFkZXJzICovLAogCQkJCUJDRkY2NDkxMEVBRDE1QzIwMEMxRDZGNyAvKiBMZW5ndGhC
b3guaCBpbiBIZWFkZXJzICovLAorCQkJCUU1QkE3RDYzMTUxNDM3Q0EwMEZFMUUzRiAvKiBMZW5n
dGhGdW5jdGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDRkY2NDkyMEVBRDE1QzIwMEMxRDZG
NyAvKiBMZW5ndGhTaXplLmggaW4gSGVhZGVycyAqLywKIAkJCQk4Q0FERjJBOTEzNUM3QjM2MDA5
RUY0M0YgLyogTGV2ZWxEQkNvbXBhcmF0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCThDQURGMkFC
MTM1QzdCMzYwMDlFRjQzRiAvKiBMZXZlbERCRGF0YWJhc2UuaCBpbiBIZWFkZXJzICovLApJbmRl
eDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9ndGsvV2ViS2l0QWNjZXNzaWJsZUludGVy
ZmFjZVRleHQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
Z3RrL1dlYktpdEFjY2Vzc2libGVJbnRlcmZhY2VUZXh0LmNwcAkocmV2aXNpb24gMTExMTExKQor
KysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9ndGsvV2ViS2l0QWNjZXNzaWJsZUludGVy
ZmFjZVRleHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNDAsNyArMjQwLDcgQEAgc3RhdGljIEF0
a0F0dHJpYnV0ZVNldCogZ2V0QXR0cmlidXRlU2V0RgogICAgIH0KIAogICAgIGlmICghc3R5bGUt
PnRleHRJbmRlbnQoKS5pc1VuZGVmaW5lZCgpKSB7Ci0gICAgICAgIGludCBpbmRlbnRhdGlvbiA9
IHN0eWxlLT50ZXh0SW5kZW50KCkuY2FsY1ZhbHVlKG9iamVjdC0+c2l6ZSgpLndpZHRoKCkpOwor
ICAgICAgICBpbnQgaW5kZW50YXRpb24gPSBjYWxjdWxhdGVWYWx1ZShzdHlsZS0+dGV4dEluZGVu
dCgpLCBvYmplY3QtPnNpemUoKS53aWR0aCgpKTsKICAgICAgICAgYnVmZmVyLnNldChnX3N0cmR1
cF9wcmludGYoIiVpIiwgaW5kZW50YXRpb24pKTsKICAgICAgICAgcmVzdWx0ID0gYWRkVG9BdGtB
dHRyaWJ1dGVTZXQocmVzdWx0LCBhdGtfdGV4dF9hdHRyaWJ1dGVfZ2V0X25hbWUoQVRLX1RFWFRf
QVRUUl9JTkRFTlQpLCBidWZmZXIuZ2V0KCkpOwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCShyZXZpc2lvbiAx
MTExMTEpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9u
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTc3NCw3ICsxNzc0LDcgQEAgUGFzc1JlZlB0cjxDU1NW
YWx1ZT4gQ1NTQ29tcHV0ZWRTdHlsZURlYwogICAgICAgICAgICAgICAgIC8vIFJlbmRlckJveCBn
aXZlcyBhIG1hcmdpblJpZ2h0KCkgdGhhdCBpcyB0aGUgZGlzdGFuY2UgYmV0d2VlbiB0aGUgcmln
aHQtZWRnZSBvZiB0aGUgY2hpbGQgYm94CiAgICAgICAgICAgICAgICAgLy8gYW5kIHRoZSByaWdo
dC1lZGdlIG9mIHRoZSBjb250YWluaW5nIGJveCwgd2hlbiBkaXNwbGF5ID09IEJMT0NLLiBMZXQn
cyBjYWxjdWxhdGUgdGhlIGFic29sdXRlCiAgICAgICAgICAgICAgICAgLy8gdmFsdWUgb2YgdGhl
IHNwZWNpZmllZCBtYXJnaW4tcmlnaHQgJSBpbnN0ZWFkIG9mIHJlbHlpbmcgb24gUmVuZGVyQm94
J3MgbWFyZ2luUmlnaHQoKSB2YWx1ZS4KLSAgICAgICAgICAgICAgICB2YWx1ZSA9IG1hcmdpblJp
Z2h0LmNhbGNNaW5WYWx1ZSh0b1JlbmRlckJveChyZW5kZXJlciktPmNvbnRhaW5pbmdCbG9ja0xv
Z2ljYWxXaWR0aEZvckNvbnRlbnQoKSk7CisgICAgICAgICAgICAgICAgdmFsdWUgPSBjYWxjdWxh
dGVNaW5pbXVtVmFsdWUobWFyZ2luUmlnaHQsIHRvUmVuZGVyQm94KHJlbmRlcmVyKS0+Y29udGFp
bmluZ0Jsb2NrTG9naWNhbFdpZHRoRm9yQ29udGVudCgpKTsKICAgICAgICAgICAgIGVsc2UKICAg
ICAgICAgICAgICAgICB2YWx1ZSA9IHRvUmVuZGVyQm94KHJlbmRlcmVyKS0+bWFyZ2luUmlnaHQo
KTsKICAgICAgICAgICAgIHJldHVybiB6b29tQWRqdXN0ZWRQaXhlbFZhbHVlKHZhbHVlLCBzdHls
ZS5nZXQoKSwgY3NzVmFsdWVQb29sKTsKQEAgLTIxODYsOCArMjE4Niw4IEBAIFBhc3NSZWZQdHI8
Q1NTVmFsdWU+IENTU0NvbXB1dGVkU3R5bGVEZWMKICAgICAgICAgICAgIFJlZlB0cjxDU1NWYWx1
ZUxpc3Q+IGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7CiAgICAg
ICAgICAgICBpZiAocmVuZGVyZXIpIHsKICAgICAgICAgICAgICAgICBMYXlvdXRSZWN0IGJveCA9
IHNpemluZ0JveChyZW5kZXJlcik7Ci0gICAgICAgICAgICAgICAgbGlzdC0+YXBwZW5kKHpvb21B
ZGp1c3RlZFBpeGVsVmFsdWUoc3R5bGUtPnBlcnNwZWN0aXZlT3JpZ2luWCgpLmNhbGNNaW5WYWx1
ZShib3gud2lkdGgoKSksIHN0eWxlLmdldCgpLCBjc3NWYWx1ZVBvb2wpKTsKLSAgICAgICAgICAg
ICAgICBsaXN0LT5hcHBlbmQoem9vbUFkanVzdGVkUGl4ZWxWYWx1ZShzdHlsZS0+cGVyc3BlY3Rp
dmVPcmlnaW5ZKCkuY2FsY01pblZhbHVlKGJveC5oZWlnaHQoKSksIHN0eWxlLmdldCgpLCBjc3NW
YWx1ZVBvb2wpKTsKKyAgICAgICAgICAgICAgICBsaXN0LT5hcHBlbmQoem9vbUFkanVzdGVkUGl4
ZWxWYWx1ZShjYWxjdWxhdGVNaW5pbXVtVmFsdWUoc3R5bGUtPnBlcnNwZWN0aXZlT3JpZ2luWCgp
LCBib3gud2lkdGgoKSksIHN0eWxlLmdldCgpLCBjc3NWYWx1ZVBvb2wpKTsKKyAgICAgICAgICAg
ICAgICBsaXN0LT5hcHBlbmQoem9vbUFkanVzdGVkUGl4ZWxWYWx1ZShjYWxjdWxhdGVNaW5pbXVt
VmFsdWUoc3R5bGUtPnBlcnNwZWN0aXZlT3JpZ2luWSgpLCBib3guaGVpZ2h0KCkpLCBzdHlsZS5n
ZXQoKSwgY3NzVmFsdWVQb29sKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlIHsK
ICAgICAgICAgICAgICAgICBsaXN0LT5hcHBlbmQoem9vbUFkanVzdGVkUGl4ZWxWYWx1ZUZvckxl
bmd0aChzdHlsZS0+cGVyc3BlY3RpdmVPcmlnaW5YKCksIHN0eWxlLmdldCgpLCBjc3NWYWx1ZVBv
b2wpKTsKQEAgLTIyMzIsOCArMjIzMiw4IEBAIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IENTU0NvbXB1
dGVkU3R5bGVEZWMKICAgICAgICAgICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IGxpc3QgPSBDU1NW
YWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7CiAgICAgICAgICAgICBpZiAocmVuZGVy
ZXIpIHsKICAgICAgICAgICAgICAgICBJbnRSZWN0IGJveCA9IHNpemluZ0JveChyZW5kZXJlcik7
Ci0gICAgICAgICAgICAgICAgbGlzdC0+YXBwZW5kKHpvb21BZGp1c3RlZFBpeGVsVmFsdWUoc3R5
bGUtPnRyYW5zZm9ybU9yaWdpblgoKS5jYWxjTWluVmFsdWUoYm94LndpZHRoKCkpLCBzdHlsZS5n
ZXQoKSwgY3NzVmFsdWVQb29sKSk7Ci0gICAgICAgICAgICAgICAgbGlzdC0+YXBwZW5kKHpvb21B
ZGp1c3RlZFBpeGVsVmFsdWUoc3R5bGUtPnRyYW5zZm9ybU9yaWdpblkoKS5jYWxjTWluVmFsdWUo
Ym94LmhlaWdodCgpKSwgc3R5bGUuZ2V0KCksIGNzc1ZhbHVlUG9vbCkpOworICAgICAgICAgICAg
ICAgIGxpc3QtPmFwcGVuZCh6b29tQWRqdXN0ZWRQaXhlbFZhbHVlKGNhbGN1bGF0ZU1pbmltdW1W
YWx1ZShzdHlsZS0+dHJhbnNmb3JtT3JpZ2luWCgpLCBib3gud2lkdGgoKSksIHN0eWxlLmdldCgp
LCBjc3NWYWx1ZVBvb2wpKTsKKyAgICAgICAgICAgICAgICBsaXN0LT5hcHBlbmQoem9vbUFkanVz
dGVkUGl4ZWxWYWx1ZShjYWxjdWxhdGVNaW5pbXVtVmFsdWUoc3R5bGUtPnRyYW5zZm9ybU9yaWdp
blkoKSwgYm94LmhlaWdodCgpKSwgc3R5bGUuZ2V0KCksIGNzc1ZhbHVlUG9vbCkpOwogICAgICAg
ICAgICAgICAgIGlmIChzdHlsZS0+dHJhbnNmb3JtT3JpZ2luWigpICE9IDApCiAgICAgICAgICAg
ICAgICAgICAgIGxpc3QtPmFwcGVuZCh6b29tQWRqdXN0ZWRQaXhlbFZhbHVlKHN0eWxlLT50cmFu
c2Zvcm1PcmlnaW5aKCksIHN0eWxlLmdldCgpLCBjc3NWYWx1ZVBvb2wpKTsKICAgICAgICAgICAg
IH0gZWxzZSB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvTGVuZ3RoRnVuY3Rpb25zLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0xlbmd0aEZ1bmN0aW9ucy5oCShyZXZpc2lv
biAwKQorKysgU291cmNlL1dlYkNvcmUvY3NzL0xlbmd0aEZ1bmN0aW9ucy5oCShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDEyMyBAQAorLyoKKyAgICBDb3B5cmlnaHQgKEMpIDE5OTkgTGFycyBLbm9s
bCAoa25vbGxAa2RlLm9yZykKKyAgICBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDggQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICAgIENvcHlyaWdodCAoQykgMjAxMSBSaWsgQ2FiYW5p
ZXIgKGNhYmFuaWVyQGFkb2JlLmNvbSkKKyAgICBDb3B5cmlnaHQgKEMpIDIwMTEgQWRvYmUgU3lz
dGVtcyBJbmNvcnBvcmF0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgICAgQ29weXJpZ2h0IChD
KSAyMDEyIE1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisKKyAg
ICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9y
IChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkg
aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBi
dXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50
eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZv
ciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0
aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8K
KyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJl
ZXQsIEZpZnRoIEZsb29yLAorICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorKi8KKwor
I2lmbmRlZiBMZW5ndGhGdW5jdGlvbnNfaAorI2RlZmluZSBMZW5ndGhGdW5jdGlvbnNfaAorCisj
aW5jbHVkZSAiTGVuZ3RoLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworaW5saW5lIGludCBj
YWxjdWxhdGVNaW5pbXVtVmFsdWUoTGVuZ3RoIGxlbmd0aCwgaW50IG1heGltdW1WYWx1ZSwgYm9v
bCByb3VuZFBlcmNlbnRhZ2VzID0gZmFsc2UpCit7CisgICAgc3dpdGNoIChsZW5ndGgudHlwZSgp
KSB7CisgICAgY2FzZSBGaXhlZDoKKyAgICAgICAgcmV0dXJuIGxlbmd0aC52YWx1ZSgpOworICAg
IGNhc2UgUGVyY2VudDoKKyAgICAgICAgaWYgKHJvdW5kUGVyY2VudGFnZXMpCisgICAgICAgICAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50Pihyb3VuZChtYXhpbXVtVmFsdWUgKiBsZW5ndGgucGVy
Y2VudCgpIC8gMTAwLjBmKSk7CisgICAgICAgIC8vIERvbid0IHJlbW92ZSB0aGUgZXh0cmEgY2Fz
dCB0byBmbG9hdC4gSXQgaXMgbmVlZGVkIGZvciByb3VuZGluZyBvbiAzMi1iaXQgSW50ZWwgbWFj
aGluZXMgdGhhdCB1c2UgdGhlIEZQVSBzdGFjay4KKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0
PGludD4oc3RhdGljX2Nhc3Q8ZmxvYXQ+KG1heGltdW1WYWx1ZSAqIGxlbmd0aC5wZXJjZW50KCkg
LyAxMDAuMGYpKTsKKyAgICBjYXNlIENhbGN1bGF0ZWQ6CisgICAgICAgIHJldHVybiBsZW5ndGgu
bm9uTmFuQ2FsY3VsYXRlZFZhbHVlKG1heGltdW1WYWx1ZSk7CisgICAgY2FzZSBBdXRvOgorICAg
ICAgICByZXR1cm4gMDsKKyAgICBjYXNlIFJlbGF0aXZlOgorICAgIGNhc2UgSW50cmluc2ljOgor
ICAgIGNhc2UgTWluSW50cmluc2ljOgorICAgIGNhc2UgVW5kZWZpbmVkOgorICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOworICAgIHJldHVybiAwOworfQorCitpbmxpbmUgaW50IGNhbGN1bGF0ZVZh
bHVlKExlbmd0aCBsZW5ndGgsIGludCBtYXhpbXVtVmFsdWUsIGJvb2wgcm91bmRQZXJjZW50YWdl
cyA9IGZhbHNlKQoreworICAgIHN3aXRjaCAobGVuZ3RoLnR5cGUoKSkgeworICAgIGNhc2UgRml4
ZWQ6CisgICAgY2FzZSBQZXJjZW50OgorICAgIGNhc2UgQ2FsY3VsYXRlZDoKKyAgICAgICAgcmV0
dXJuIGNhbGN1bGF0ZU1pbmltdW1WYWx1ZShsZW5ndGgsIG1heGltdW1WYWx1ZSwgcm91bmRQZXJj
ZW50YWdlcyk7CisgICAgY2FzZSBBdXRvOgorICAgICAgICByZXR1cm4gbWF4aW11bVZhbHVlOwor
ICAgIGNhc2UgUmVsYXRpdmU6CisgICAgY2FzZSBJbnRyaW5zaWM6CisgICAgY2FzZSBNaW5JbnRy
aW5zaWM6CisgICAgY2FzZSBVbmRlZmluZWQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgcmV0dXJuIDA7Cit9CisKKy8vIEZJWE1FOiB3aGVuIHN1YnBpeGVsIGxheW91dCBpcyBzdXBw
b3J0ZWQgdGhpcyBjb3B5IG9mIGNhbGNGbG9hdFZhbHVlKCkgY2FuIGJlIHJlbW92ZWQuIFNlZSBi
dWcgNzExNDMuCitpbmxpbmUgZmxvYXQgY2FsY3VsYXRlRmxvYXRWYWx1ZShMZW5ndGggbGVuZ3Ro
LCBpbnQgbWF4aW11bVZhbHVlKQoreworICAgIHN3aXRjaCAobGVuZ3RoLnR5cGUoKSkgeworICAg
IGNhc2UgRml4ZWQ6CisgICAgICAgIHJldHVybiBsZW5ndGguZ2V0RmxvYXRWYWx1ZSgpOworICAg
IGNhc2UgUGVyY2VudDoKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGZsb2F0PihtYXhpbXVt
VmFsdWUgKiBsZW5ndGgucGVyY2VudCgpIC8gMTAwLjBmKTsKKyAgICBjYXNlIEF1dG86CisgICAg
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxmbG9hdD4obWF4aW11bVZhbHVlKTsKKyAgICBjYXNlIENh
bGN1bGF0ZWQ6CisgICAgICAgIHJldHVybiBsZW5ndGgubm9uTmFuQ2FsY3VsYXRlZFZhbHVlKG1h
eGltdW1WYWx1ZSk7ICAgICAgICAgICAgICAgIAorICAgIGNhc2UgUmVsYXRpdmU6CisgICAgY2Fz
ZSBJbnRyaW5zaWM6CisgICAgY2FzZSBNaW5JbnRyaW5zaWM6CisgICAgY2FzZSBVbmRlZmluZWQ6
CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9
CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIDA7Cit9CisKK2lubGluZSBm
bG9hdCBjYWxjdWxhdGVGbG9hdFZhbHVlKExlbmd0aCBsZW5ndGgsIGZsb2F0IG1heGltdW1WYWx1
ZSkKK3sKKyAgICBzd2l0Y2ggKGxlbmd0aC50eXBlKCkpIHsKKyAgICBjYXNlIEZpeGVkOgorICAg
ICAgICByZXR1cm4gbGVuZ3RoLmdldEZsb2F0VmFsdWUoKTsKKyAgICBjYXNlIFBlcmNlbnQ6Cisg
ICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxmbG9hdD4obWF4aW11bVZhbHVlICogbGVuZ3RoLnBl
cmNlbnQoKSAvIDEwMC4wZik7CisgICAgY2FzZSBBdXRvOgorICAgICAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8ZmxvYXQ+KG1heGltdW1WYWx1ZSk7CisgICAgY2FzZSBDYWxjdWxhdGVkOgorICAgICAg
ICByZXR1cm4gbGVuZ3RoLm5vbk5hbkNhbGN1bGF0ZWRWYWx1ZShtYXhpbXVtVmFsdWUpOworICAg
IGNhc2UgUmVsYXRpdmU6CisgICAgY2FzZSBJbnRyaW5zaWM6CisgICAgY2FzZSBNaW5JbnRyaW5z
aWM6CisgICAgY2FzZSBVbmRlZmluZWQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
ICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAg
cmV0dXJuIDA7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIExlbmd0
aEZ1bmN0aW9uc19oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJKHJldmlzaW9uIDExMTEx
MSkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTE4MDIsOCArMTgwMiw4IEBAIHZvaWQgRG9jdW1lbnQ6OnBhZ2VTaXplQW5kTWFyZ2luc0luUGl4
ZWwKICAgICAgICAgTGVuZ3RoU2l6ZSBzaXplID0gc3R5bGUtPnBhZ2VTaXplKCk7CiAgICAgICAg
IEFTU0VSVChzaXplLndpZHRoKCkuaXNGaXhlZCgpKTsKICAgICAgICAgQVNTRVJUKHNpemUuaGVp
Z2h0KCkuaXNGaXhlZCgpKTsKLSAgICAgICAgd2lkdGggPSBzaXplLndpZHRoKCkuY2FsY1ZhbHVl
KDApOwotICAgICAgICBoZWlnaHQgPSBzaXplLmhlaWdodCgpLmNhbGNWYWx1ZSgwKTsKKyAgICAg
ICAgd2lkdGggPSBjYWxjdWxhdGVWYWx1ZShzaXplLndpZHRoKCksIDApOworICAgICAgICBoZWln
aHQgPSBjYWxjdWxhdGVWYWx1ZShzaXplLmhlaWdodCgpLCAwKTsKICAgICAgICAgYnJlYWs7CiAg
ICAgfQogICAgIGRlZmF1bHQ6CkBAIC0xODEzLDEwICsxODEzLDEwIEBAIHZvaWQgRG9jdW1lbnQ6
OnBhZ2VTaXplQW5kTWFyZ2luc0luUGl4ZWwKIAogICAgIC8vIFRoZSBwZXJjZW50YWdlIGlzIGNh
bGN1bGF0ZWQgd2l0aCByZXNwZWN0IHRvIHRoZSB3aWR0aCBldmVuIGZvciBtYXJnaW4gdG9wIGFu
ZCBib3R0b20uCiAgICAgLy8gaHR0cDovL3d3dy53My5vcmcvVFIvQ1NTMi9ib3guaHRtbCNtYXJn
aW4tcHJvcGVydGllcwotICAgIG1hcmdpblRvcCA9IHN0eWxlLT5tYXJnaW5Ub3AoKS5pc0F1dG8o
KSA/IG1hcmdpblRvcCA6IHN0eWxlLT5tYXJnaW5Ub3AoKS5jYWxjVmFsdWUod2lkdGgpOwotICAg
IG1hcmdpblJpZ2h0ID0gc3R5bGUtPm1hcmdpblJpZ2h0KCkuaXNBdXRvKCkgPyBtYXJnaW5SaWdo
dCA6IHN0eWxlLT5tYXJnaW5SaWdodCgpLmNhbGNWYWx1ZSh3aWR0aCk7Ci0gICAgbWFyZ2luQm90
dG9tID0gc3R5bGUtPm1hcmdpbkJvdHRvbSgpLmlzQXV0bygpID8gbWFyZ2luQm90dG9tIDogc3R5
bGUtPm1hcmdpbkJvdHRvbSgpLmNhbGNWYWx1ZSh3aWR0aCk7Ci0gICAgbWFyZ2luTGVmdCA9IHN0
eWxlLT5tYXJnaW5MZWZ0KCkuaXNBdXRvKCkgPyBtYXJnaW5MZWZ0IDogc3R5bGUtPm1hcmdpbkxl
ZnQoKS5jYWxjVmFsdWUod2lkdGgpOworICAgIG1hcmdpblRvcCA9IHN0eWxlLT5tYXJnaW5Ub3Ao
KS5pc0F1dG8oKSA/IG1hcmdpblRvcCA6IGNhbGN1bGF0ZVZhbHVlKHN0eWxlLT5tYXJnaW5Ub3Ao
KSwgd2lkdGgpOworICAgIG1hcmdpblJpZ2h0ID0gc3R5bGUtPm1hcmdpblJpZ2h0KCkuaXNBdXRv
KCkgPyBtYXJnaW5SaWdodCA6IGNhbGN1bGF0ZVZhbHVlKHN0eWxlLT5tYXJnaW5SaWdodCgpLCB3
aWR0aCk7CisgICAgbWFyZ2luQm90dG9tID0gc3R5bGUtPm1hcmdpbkJvdHRvbSgpLmlzQXV0bygp
ID8gbWFyZ2luQm90dG9tIDogY2FsY3VsYXRlVmFsdWUoc3R5bGUtPm1hcmdpbkJvdHRvbSgpLCB3
aWR0aCk7CisgICAgbWFyZ2luTGVmdCA9IHN0eWxlLT5tYXJnaW5MZWZ0KCkuaXNBdXRvKCkgPyBt
YXJnaW5MZWZ0IDogY2FsY3VsYXRlVmFsdWUoc3R5bGUtPm1hcmdpbkxlZnQoKSwgd2lkdGgpOwog
fQogCiBQYXNzUmVmUHRyPENTU1ZhbHVlUG9vbD4gRG9jdW1lbnQ6OmNzc1ZhbHVlUG9vbCgpIGNv
bnN0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBcmVhRWxlbWVudC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXJlYUVsZW1lbnQuY3BwCShyZXZpc2lv
biAxMTExMTEpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBcmVhRWxlbWVudC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTE0NywyNSArMTQ3LDI1IEBAIFBhdGggSFRNTEFyZWFFbGVtZW50Ojpn
ZXRSZWdpb24oY29uc3QgTGEKICAgICAgICAgY2FzZSBQb2x5OgogICAgICAgICAgICAgaWYgKG1f
Y29vcmRzTGVuID49IDYpIHsKICAgICAgICAgICAgICAgICBpbnQgbnVtUG9pbnRzID0gbV9jb29y
ZHNMZW4gLyAyOwotICAgICAgICAgICAgICAgIHBhdGgubW92ZVRvKEZsb2F0UG9pbnQobV9jb29y
ZHNbMF0uY2FsY01pblZhbHVlKHdpZHRoKSwgbV9jb29yZHNbMV0uY2FsY01pblZhbHVlKGhlaWdo
dCkpKTsKKyAgICAgICAgICAgICAgICBwYXRoLm1vdmVUbyhGbG9hdFBvaW50KGNhbGN1bGF0ZU1p
bmltdW1WYWx1ZShtX2Nvb3Jkc1swXSwgd2lkdGgpLCBjYWxjdWxhdGVNaW5pbXVtVmFsdWUobV9j
b29yZHNbMV0sIGhlaWdodCkpKTsKICAgICAgICAgICAgICAgICBmb3IgKGludCBpID0gMTsgaSA8
IG51bVBvaW50czsgKytpKQotICAgICAgICAgICAgICAgICAgICBwYXRoLmFkZExpbmVUbyhGbG9h
dFBvaW50KG1fY29vcmRzW2kgKiAyXS5jYWxjTWluVmFsdWUod2lkdGgpLCBtX2Nvb3Jkc1tpICog
MiArIDFdLmNhbGNNaW5WYWx1ZShoZWlnaHQpKSk7CisgICAgICAgICAgICAgICAgICAgIHBhdGgu
YWRkTGluZVRvKEZsb2F0UG9pbnQoY2FsY3VsYXRlTWluaW11bVZhbHVlKG1fY29vcmRzW2kgKiAy
XSwgd2lkdGgpLCBjYWxjdWxhdGVNaW5pbXVtVmFsdWUobV9jb29yZHNbaSAqIDIgKyAxXSwgaGVp
Z2h0KSkpOwogICAgICAgICAgICAgICAgIHBhdGguY2xvc2VTdWJwYXRoKCk7CiAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDaXJjbGU6CiAgICAgICAgICAg
ICBpZiAobV9jb29yZHNMZW4gPj0gMykgewogICAgICAgICAgICAgICAgIExlbmd0aCByYWRpdXMg
PSBtX2Nvb3Jkc1syXTsKLSAgICAgICAgICAgICAgICBpbnQgciA9IG1pbihyYWRpdXMuY2FsY01p
blZhbHVlKHdpZHRoKSwgcmFkaXVzLmNhbGNNaW5WYWx1ZShoZWlnaHQpKTsKLSAgICAgICAgICAg
ICAgICBwYXRoLmFkZEVsbGlwc2UoRmxvYXRSZWN0KG1fY29vcmRzWzBdLmNhbGNNaW5WYWx1ZSh3
aWR0aCkgLSByLCBtX2Nvb3Jkc1sxXS5jYWxjTWluVmFsdWUoaGVpZ2h0KSAtIHIsIDIgKiByLCAy
ICogcikpOworICAgICAgICAgICAgICAgIGludCByID0gbWluKGNhbGN1bGF0ZU1pbmltdW1WYWx1
ZShyYWRpdXMsIHdpZHRoKSwgY2FsY3VsYXRlTWluaW11bVZhbHVlKHJhZGl1cywgaGVpZ2h0KSk7
CisgICAgICAgICAgICAgICAgcGF0aC5hZGRFbGxpcHNlKEZsb2F0UmVjdChjYWxjdWxhdGVNaW5p
bXVtVmFsdWUobV9jb29yZHNbMF0sIHdpZHRoKSAtIHIsIGNhbGN1bGF0ZU1pbmltdW1WYWx1ZSht
X2Nvb3Jkc1sxXSwgaGVpZ2h0KSAtIHIsIDIgKiByLCAyICogcikpOwogICAgICAgICAgICAgfQog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgUmVjdDoKICAgICAgICAgICAgIGlmICht
X2Nvb3Jkc0xlbiA+PSA0KSB7Ci0gICAgICAgICAgICAgICAgaW50IHgwID0gbV9jb29yZHNbMF0u
Y2FsY01pblZhbHVlKHdpZHRoKTsKLSAgICAgICAgICAgICAgICBpbnQgeTAgPSBtX2Nvb3Jkc1sx
XS5jYWxjTWluVmFsdWUoaGVpZ2h0KTsKLSAgICAgICAgICAgICAgICBpbnQgeDEgPSBtX2Nvb3Jk
c1syXS5jYWxjTWluVmFsdWUod2lkdGgpOwotICAgICAgICAgICAgICAgIGludCB5MSA9IG1fY29v
cmRzWzNdLmNhbGNNaW5WYWx1ZShoZWlnaHQpOworICAgICAgICAgICAgICAgIGludCB4MCA9IGNh
bGN1bGF0ZU1pbmltdW1WYWx1ZShtX2Nvb3Jkc1swXSwgd2lkdGgpOworICAgICAgICAgICAgICAg
IGludCB5MCA9IGNhbGN1bGF0ZU1pbmltdW1WYWx1ZShtX2Nvb3Jkc1sxXSwgaGVpZ2h0KTsKKyAg
ICAgICAgICAgICAgICBpbnQgeDEgPSBjYWxjdWxhdGVNaW5pbXVtVmFsdWUobV9jb29yZHNbMl0s
IHdpZHRoKTsKKyAgICAgICAgICAgICAgICBpbnQgeTEgPSBjYWxjdWxhdGVNaW5pbXVtVmFsdWUo
bV9jb29yZHNbM10sIGhlaWdodCk7CiAgICAgICAgICAgICAgICAgcGF0aC5hZGRSZWN0KEZsb2F0
UmVjdCh4MCwgeTAsIHgxIC0geDAsIHkxIC0geTApKTsKICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgIGJyZWFrOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ2FsY3VsYXRpb25WYWx1
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NhbGN1bGF0aW9uVmFs
dWUuaAkocmV2aXNpb24gMTExMTExKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ2FsY3Vs
YXRpb25WYWx1ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw2ICszMiw3IEBACiAjZGVmaW5lIENh
bGN1bGF0aW9uVmFsdWVfaAogCiAjaW5jbHVkZSAiTGVuZ3RoLmgiCisjaW5jbHVkZSAiTGVuZ3Ro
RnVuY3Rpb25zLmgiCiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9QYXNz
T3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KQEAgLTEwMSw3ICsxMDIsNyBA
QCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIGZsb2F0IGV2YWx1YXRlKGZsb2F0IG1heFZhbHVlKSBj
b25zdAogICAgIHsKLSAgICAgICAgcmV0dXJuIG1fbGVuZ3RoLmNhbGNGbG9hdFZhbHVlKG1heFZh
bHVlKTsKKyAgICAgICAgcmV0dXJuIGNhbGN1bGF0ZUZsb2F0VmFsdWUobV9sZW5ndGgsIG1heFZh
bHVlKTsKICAgICB9CiAgICAgCiBwcml2YXRlOgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vTGVuZ3RoLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGVuZ3Ro
LmgJKHJldmlzaW9uIDExMTExMSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xlbmd0aC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xNTksOTYgKzE1OSw2IEBAIHB1YmxpYzoKICAgICAgICAgKnRo
aXMgPSBMZW5ndGgodmFsdWUsIEZpeGVkKTsKICAgICB9CiAKLSAgICBpbnQgY2FsY1ZhbHVlKGlu
dCBtYXhWYWx1ZSwgYm9vbCByb3VuZFBlcmNlbnRhZ2VzID0gZmFsc2UpIGNvbnN0Ci0gICAgewot
ICAgICAgICBzd2l0Y2ggKHR5cGUoKSkgewotICAgICAgICAgICAgY2FzZSBGaXhlZDoKLSAgICAg
ICAgICAgIGNhc2UgUGVyY2VudDoKLSAgICAgICAgICAgIGNhc2UgQ2FsY3VsYXRlZDoKLSAgICAg
ICAgICAgICAgICByZXR1cm4gY2FsY01pblZhbHVlKG1heFZhbHVlLCByb3VuZFBlcmNlbnRhZ2Vz
KTsKLSAgICAgICAgICAgIGNhc2UgQXV0bzoKLSAgICAgICAgICAgICAgICByZXR1cm4gbWF4VmFs
dWU7Ci0gICAgICAgICAgICBjYXNlIFJlbGF0aXZlOgotICAgICAgICAgICAgY2FzZSBJbnRyaW5z
aWM6Ci0gICAgICAgICAgICBjYXNlIE1pbkludHJpbnNpYzoKLSAgICAgICAgICAgIGNhc2UgVW5k
ZWZpbmVkOgotICAgICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAg
ICAgICAgIHJldHVybiAwOwotICAgICAgICB9Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0KLSAgICBpbnQgY2FsY01pblZhbHVlKGludCBt
YXhWYWx1ZSwgYm9vbCByb3VuZFBlcmNlbnRhZ2VzID0gZmFsc2UpIGNvbnN0Ci0gICAgewotICAg
ICAgICBzd2l0Y2ggKHR5cGUoKSkgewotICAgICAgICAgICAgY2FzZSBGaXhlZDoKLSAgICAgICAg
ICAgICAgICByZXR1cm4gdmFsdWUoKTsKLSAgICAgICAgICAgIGNhc2UgUGVyY2VudDoKLSAgICAg
ICAgICAgICAgICBpZiAocm91bmRQZXJjZW50YWdlcykKLSAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIHN0YXRpY19jYXN0PGludD4ocm91bmQobWF4VmFsdWUgKiBwZXJjZW50KCkgLyAxMDAuMGYp
KTsKLSAgICAgICAgICAgICAgICAvLyBEb24ndCByZW1vdmUgdGhlIGV4dHJhIGNhc3QgdG8gZmxv
YXQuIEl0IGlzIG5lZWRlZCBmb3Igcm91bmRpbmcgb24gMzItYml0IEludGVsIG1hY2hpbmVzIHRo
YXQgdXNlIHRoZSBGUFUgc3RhY2suCi0gICAgICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0
PGludD4oc3RhdGljX2Nhc3Q8ZmxvYXQ+KG1heFZhbHVlICogcGVyY2VudCgpIC8gMTAwLjBmKSk7
Ci0gICAgICAgICAgICBjYXNlIENhbGN1bGF0ZWQ6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG5v
bk5hbkNhbGN1bGF0ZWRWYWx1ZShtYXhWYWx1ZSk7Ci0gICAgICAgICAgICBjYXNlIEF1dG86Ci0g
ICAgICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgICAgICBjYXNlIFJlbGF0aXZlOgotICAg
ICAgICAgICAgY2FzZSBJbnRyaW5zaWM6Ci0gICAgICAgICAgICBjYXNlIE1pbkludHJpbnNpYzoK
LSAgICAgICAgICAgIGNhc2UgVW5kZWZpbmVkOgotICAgICAgICAgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwotICAgICAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICB9Ci0gICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0KLSAgICAv
LyBGSVhNRTogd2hlbiBzdWJwaXhlbCBsYXlvdXQgaXMgc3VwcG9ydGVkIHRoaXMgY29weSBvZiBj
YWxjRmxvYXRWYWx1ZSgpIGNhbiBiZSByZW1vdmVkLiBTZWUgYnVnIDcxMTQzLgotICAgIGZsb2F0
IGNhbGNGbG9hdFZhbHVlKGludCBtYXhWYWx1ZSkgY29uc3QKLSAgICB7Ci0gICAgICAgIHN3aXRj
aCAodHlwZSgpKSB7Ci0gICAgICAgICAgICBjYXNlIEZpeGVkOgotICAgICAgICAgICAgICAgIHJl
dHVybiBnZXRGbG9hdFZhbHVlKCk7Ci0gICAgICAgICAgICBjYXNlIFBlcmNlbnQ6Ci0gICAgICAg
ICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGZsb2F0PihtYXhWYWx1ZSAqIHBlcmNlbnQoKSAv
IDEwMC4wZik7Ci0gICAgICAgICAgICBjYXNlIEF1dG86Ci0gICAgICAgICAgICAgICAgcmV0dXJu
IHN0YXRpY19jYXN0PGZsb2F0PihtYXhWYWx1ZSk7Ci0gICAgICAgICAgICBjYXNlIENhbGN1bGF0
ZWQ6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG5vbk5hbkNhbGN1bGF0ZWRWYWx1ZShtYXhWYWx1
ZSk7ICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgY2FzZSBSZWxhdGl2ZToKLSAgICAgICAg
ICAgIGNhc2UgSW50cmluc2ljOgotICAgICAgICAgICAgY2FzZSBNaW5JbnRyaW5zaWM6Ci0gICAg
ICAgICAgICBjYXNlIFVuZGVmaW5lZDoKLSAgICAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgfQotICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotCi0gICAgZmxvYXQg
Y2FsY0Zsb2F0VmFsdWUoZmxvYXQgbWF4VmFsdWUpIGNvbnN0Ci0gICAgewotICAgICAgICBzd2l0
Y2ggKHR5cGUoKSkgewotICAgICAgICBjYXNlIEZpeGVkOgotICAgICAgICAgICAgcmV0dXJuIGdl
dEZsb2F0VmFsdWUoKTsKLSAgICAgICAgY2FzZSBQZXJjZW50OgotICAgICAgICAgICAgcmV0dXJu
IHN0YXRpY19jYXN0PGZsb2F0PihtYXhWYWx1ZSAqIHBlcmNlbnQoKSAvIDEwMC4wZik7Ci0gICAg
ICAgIGNhc2UgQXV0bzoKLSAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxmbG9hdD4obWF4
VmFsdWUpOwotICAgICAgICBjYXNlIENhbGN1bGF0ZWQ6Ci0gICAgICAgICAgICByZXR1cm4gbm9u
TmFuQ2FsY3VsYXRlZFZhbHVlKG1heFZhbHVlKTsKLSAgICAgICAgY2FzZSBSZWxhdGl2ZToKLSAg
ICAgICAgY2FzZSBJbnRyaW5zaWM6Ci0gICAgICAgIGNhc2UgTWluSW50cmluc2ljOgotICAgICAg
ICBjYXNlIFVuZGVmaW5lZDoKLSAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAg
ICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIH0KLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLQogICAgIGJvb2wgaXNVbmRlZmluZWQoKSBj
b25zdCB7IHJldHVybiB0eXBlKCkgPT0gVW5kZWZpbmVkOyB9CiAKICAgICAvLyBGSVhNRSBjYWxj
OiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODAzNTcuIEEgY2FsY3Vs
YXRlZCBMZW5ndGggCkBAIC0zMTIsMTkgKzIyMiwxOSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVy
biBMZW5ndGgoV2ViQ29yZTo6YmxlbmQoZnJvbVZhbHVlLCB0b1ZhbHVlLCBwcm9ncmVzcyksIHJl
c3VsdFR5cGUpOwogICAgIH0KIAotcHJpdmF0ZToKLSAgICBpbnQgZ2V0SW50VmFsdWUoKSBjb25z
dAorICAgIGZsb2F0IGdldEZsb2F0VmFsdWUoKSBjb25zdAogICAgIHsKICAgICAgICAgQVNTRVJU
KCFpc1VuZGVmaW5lZCgpKTsKLSAgICAgICAgcmV0dXJuIG1faXNGbG9hdCA/IHN0YXRpY19jYXN0
PGludD4obV9mbG9hdFZhbHVlKSA6IG1faW50VmFsdWU7CisgICAgICAgIHJldHVybiBtX2lzRmxv
YXQgPyBtX2Zsb2F0VmFsdWUgOiBtX2ludFZhbHVlOwogICAgIH0KKyAgICBmbG9hdCBub25OYW5D
YWxjdWxhdGVkVmFsdWUoaW50IG1heFZhbHVlKSBjb25zdDsKIAotICAgIGZsb2F0IGdldEZsb2F0
VmFsdWUoKSBjb25zdAorcHJpdmF0ZToKKyAgICBpbnQgZ2V0SW50VmFsdWUoKSBjb25zdAogICAg
IHsKICAgICAgICAgQVNTRVJUKCFpc1VuZGVmaW5lZCgpKTsKLSAgICAgICAgcmV0dXJuIG1faXNG
bG9hdCA/IG1fZmxvYXRWYWx1ZSA6IG1faW50VmFsdWU7CisgICAgICAgIHJldHVybiBtX2lzRmxv
YXQgPyBzdGF0aWNfY2FzdDxpbnQ+KG1fZmxvYXRWYWx1ZSkgOiBtX2ludFZhbHVlOwogICAgIH0K
LQogICAgIHZvaWQgaW5pdEZyb21MZW5ndGgoY29uc3QgTGVuZ3RoICZsZW5ndGgpIAogICAgIHsK
ICAgICAgICAgbV9xdWlyayA9IGxlbmd0aC5tX3F1aXJrOwpAQCAtMzM5LDggKzI0OSw3IEBAIHBy
aXZhdGU6CiAgICAgICAgIGlmIChpc0NhbGN1bGF0ZWQoKSkKICAgICAgICAgICAgIGluY3JlbWVu
dENhbGN1bGF0ZWRSZWYoKTsKICAgICB9Ci0gICAgCi0gICAgZmxvYXQgbm9uTmFuQ2FsY3VsYXRl
ZFZhbHVlKGludCBtYXhWYWx1ZSkgY29uc3Q7CisKICAgICBpbnQgY2FsY3VsYXRpb25IYW5kbGUo
KSBjb25zdAogICAgIHsKICAgICAgICAgQVNTRVJUKGlzQ2FsY3VsYXRlZCgpKTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL21hYy9QbGF0Zm9ybUNBQW5pbWF0aW9u
TWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
L21hYy9QbGF0Zm9ybUNBQW5pbWF0aW9uTWFjLm1tCShyZXZpc2lvbiAxMTExMTEpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9tYWMvUGxhdGZvcm1DQUFuaW1hdGlvbk1h
Yy5tbQkod29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAsNyBAQAogI2ltcG9ydCAiUGxhdGZvcm1D
QUFuaW1hdGlvbi5oIgogCiAjaW1wb3J0ICJGbG9hdENvbnZlcnNpb24uaCIKKyNpbXBvcnQgIkxl
bmd0aEZ1bmN0aW9ucy5oIgogI2ltcG9ydCAiUGxhdGZvcm1TdHJpbmcuaCIKICNpbXBvcnQgIlRp
bWluZ0Z1bmN0aW9uLmgiCiAjaW1wb3J0IDxRdWFydHpDb3JlL1F1YXJ0ekNvcmUuaD4KQEAgLTUw
Miw3ICs1MDMsNyBAQCBzdGF0aWMgUmV0YWluUHRyPGlkPiBmaWx0ZXJWYWx1ZUZvck9wZXJhCiAK
ICAgICAgICAgaWYgKCFvcGVyYXRpb24tPmlzRGVmYXVsdCgpKSB7CiAgICAgICAgICAgICBjb25z
dCBCbHVyRmlsdGVyT3BlcmF0aW9uKiBvcCA9IHN0YXRpY19jYXN0PGNvbnN0IEJsdXJGaWx0ZXJP
cGVyYXRpb24qPihvcGVyYXRpb24pOwotICAgICAgICAgICAgYW1vdW50ID0gb3AtPnN0ZERldmlh
dGlvbigpLmNhbGNGbG9hdFZhbHVlKDApOworICAgICAgICAgICAgYW1vdW50ID0gY2FsY3VsYXRl
RmxvYXRWYWx1ZShvcC0+c3RkRGV2aWF0aW9uKCksIDApOwogICAgICAgICB9CiAgICAgICAgIAog
ICAgICAgICB2YWx1ZS5hZG9wdE5TKFtbTlNOdW1iZXIgbnVtYmVyV2l0aERvdWJsZTphbW91bnRd
IHJldGFpbl0pOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvbWFj
L1BsYXRmb3JtQ0FMYXllck1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYS9tYWMvUGxhdGZvcm1DQUxheWVyTWFjLm1tCShyZXZpc2lvbiAxMTEx
MTEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9tYWMvUGxhdGZvcm1D
QUxheWVyTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw2ICszNCw3IEBACiAjaW1wb3J0ICJG
bG9hdENvbnZlcnNpb24uaCIKICNpbXBvcnQgIkdyYXBoaWNzQ29udGV4dC5oIgogI2ltcG9ydCAi
R3JhcGhpY3NMYXllckNBLmgiCisjaW1wb3J0ICJMZW5ndGhGdW5jdGlvbnMuaCIKICNpbXBvcnQg
IldlYkxheWVyLmgiCiAjaW1wb3J0ICJXZWJUaWxlZExheWVyLmgiCiAjaW1wb3J0ICJXZWJUaWxl
Q2FjaGVMYXllci5oIgpAQCAtODIzLDcgKzgyNCw3IEBAIHZvaWQgUGxhdGZvcm1DQUxheWVyOjpz
ZXRGaWx0ZXJzKGNvbnN0IEYKICAgICAgICAgICAgIGNvbnN0IEJsdXJGaWx0ZXJPcGVyYXRpb24q
IG9wID0gc3RhdGljX2Nhc3Q8Y29uc3QgQmx1ckZpbHRlck9wZXJhdGlvbio+KGZpbHRlck9wZXJh
dGlvbik7CiAgICAgICAgICAgICBDSUZpbHRlciogY2FGaWx0ZXIgPSBbQ0lGaWx0ZXIgZmlsdGVy
V2l0aE5hbWU6QCJDSUdhdXNzaWFuQmx1ciJdOwogICAgICAgICAgICAgW2NhRmlsdGVyIHNldERl
ZmF1bHRzXTsKLSAgICAgICAgICAgIFtjYUZpbHRlciBzZXRWYWx1ZTpbTlNOdW1iZXIgbnVtYmVy
V2l0aEZsb2F0Om9wLT5zdGREZXZpYXRpb24oKS5jYWxjRmxvYXRWYWx1ZSgwKV0gZm9yS2V5OkAi
aW5wdXRSYWRpdXMiXTsKKyAgICAgICAgICAgIFtjYUZpbHRlciBzZXRWYWx1ZTpbTlNOdW1iZXIg
bnVtYmVyV2l0aEZsb2F0OmNhbGN1bGF0ZUZsb2F0VmFsdWUob3AtPnN0ZERldmlhdGlvbigpLCAw
KV0gZm9yS2V5OkAiaW5wdXRSYWRpdXMiXTsKICAgICAgICAgICAgIFtjYUZpbHRlciBzZXROYW1l
OmZpbHRlck5hbWVdOwogICAgICAgICAgICAgW2FycmF5LmdldCgpIGFkZE9iamVjdDpjYUZpbHRl
cl07CiAgICAgICAgICAgICBicmVhazsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyU3VyZmFjZUZpbHRlcnMuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVy
U3VyZmFjZUZpbHRlcnMuY3BwCShyZXZpc2lvbiAxMTExMTEpCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclN1cmZhY2VGaWx0ZXJzLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgImNjL0NDUmVuZGVyU3Vy
ZmFjZUZpbHRlcnMuaCIKIAogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNELmgiCisjaW5jbHVk
ZSAiTGVuZ3RoRnVuY3Rpb25zLmgiCiAjaW5jbHVkZSAiU2tCbHVySW1hZ2VGaWx0ZXIuaCIKICNp
bmNsdWRlICJTa0NhbnZhcy5oIgogI2luY2x1ZGUgIlNrQ29sb3JNYXRyaXhGaWx0ZXIuaCIKQEAg
LTI2OSw4ICsyNzAsOCBAQCBTa0JpdG1hcCBDQ1JlbmRlclN1cmZhY2VGaWx0ZXJzOjphcHBseShj
CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OkJMVVI6IHsKICAgICAg
ICAgICAgIGNvbnN0IEJsdXJGaWx0ZXJPcGVyYXRpb24qIG9wID0gc3RhdGljX2Nhc3Q8Y29uc3Qg
Qmx1ckZpbHRlck9wZXJhdGlvbio+KGZpbHRlck9wZXJhdGlvbik7Ci0gICAgICAgICAgICBmbG9h
dCBzdGRYID0gb3AtPnN0ZERldmlhdGlvbigpLmNhbGNGbG9hdFZhbHVlKDApOwotICAgICAgICAg
ICAgZmxvYXQgc3RkWSA9IG9wLT5zdGREZXZpYXRpb24oKS5jYWxjRmxvYXRWYWx1ZSgxKTsKKyAg
ICAgICAgICAgIGZsb2F0IHN0ZFggPSBjYWxjdWxhdGVGbG9hdFZhbHVlKG9wLT5zdGREZXZpYXRp
b24oKSwgMCk7CisgICAgICAgICAgICBmbG9hdCBzdGRZID0gY2FsY3VsYXRlRmxvYXRWYWx1ZShv
cC0+c3RkRGV2aWF0aW9uKCksIDEpOwogICAgICAgICAgICAgU2tBdXRvVFVucmVmPFNrSW1hZ2VG
aWx0ZXI+IGZpbHRlcihuZXcgU2tCbHVySW1hZ2VGaWx0ZXIoc3RkWCwgc3RkWSkpOwogICAgICAg
ICAgICAgU2tQYWludCBwYWludDsKICAgICAgICAgICAgIHBhaW50LnNldEltYWdlRmlsdGVyKGZp
bHRlci5nZXQoKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0ZpbHRlck9wZXJhdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9ucy5jcHAJKHJldmlzaW9uIDEx
MTExMSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVy
T3BlcmF0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2luY2x1
ZGUgIkZFR2F1c3NpYW5CbHVyLmgiCiAjaW5jbHVkZSAiSW50U2l6ZS5oIgorI2luY2x1ZGUgIkxl
bmd0aEZ1bmN0aW9ucy5oIgogCiAjaWYgRU5BQkxFKENTU19GSUxURVJTKQogCkBAIC0xMDcsNyAr
MTA4LDcgQEAgdm9pZCBGaWx0ZXJPcGVyYXRpb25zOjpnZXRPdXRzZXRzKExheW91dAogICAgICAg
ICBzd2l0Y2ggKGZpbHRlck9wZXJhdGlvbi0+Z2V0T3BlcmF0aW9uVHlwZSgpKSB7CiAgICAgICAg
IGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpCTFVSOiB7CiAgICAgICAgICAgICBCbHVyRmlsdGVyT3Bl
cmF0aW9uKiBibHVyT3BlcmF0aW9uID0gc3RhdGljX2Nhc3Q8Qmx1ckZpbHRlck9wZXJhdGlvbio+
KGZpbHRlck9wZXJhdGlvbik7Ci0gICAgICAgICAgICBmbG9hdCBzdGREZXZpYXRpb24gPSBibHVy
T3BlcmF0aW9uLT5zdGREZXZpYXRpb24oKS5jYWxjRmxvYXRWYWx1ZSgwKTsKKyAgICAgICAgICAg
IGZsb2F0IHN0ZERldmlhdGlvbiA9IGNhbGN1bGF0ZUZsb2F0VmFsdWUoYmx1ck9wZXJhdGlvbi0+
c3RkRGV2aWF0aW9uKCksIDApOwogICAgICAgICAgICAgSW50U2l6ZSBvdXRzZXQgPSBvdXRzZXRT
aXplRm9yQmx1cihzdGREZXZpYXRpb24pOwogICAgICAgICAgICAgdG9wICs9IG91dHNldC5oZWln
aHQoKTsKICAgICAgICAgICAgIHJpZ2h0ICs9IG91dHNldC53aWR0aCgpOwpJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9QZXJzcGVjdGl2ZVRyYW5zZm9y
bU9wZXJhdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvdHJhbnNmb3Jtcy9QZXJzcGVjdGl2ZVRyYW5zZm9ybU9wZXJhdGlvbi5jcHAJKHJldmlz
aW9uIDExMTExMSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9y
bXMvUGVyc3BlY3RpdmVUcmFuc2Zvcm1PcGVyYXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
OSw3ICszOSw3IEBAIFBhc3NSZWZQdHI8VHJhbnNmb3JtT3BlcmF0aW9uPiBQZXJzcGVjdGkKICAg
ICAgICAgcmV0dXJuIHRoaXM7CiAgICAgCiAgICAgaWYgKGJsZW5kVG9JZGVudGl0eSkgewotICAg
ICAgICBkb3VibGUgcCA9IG1fcC5jYWxjRmxvYXRWYWx1ZSgxKTsKKyAgICAgICAgZG91YmxlIHAg
PSBjYWxjdWxhdGVGbG9hdFZhbHVlKG1fcCwgMSk7CiAgICAgICAgIHAgPSBXZWJDb3JlOjpibGVu
ZChwLCAxLjAsIHByb2dyZXNzKTsgLy8gRklYTUU6IHRoaXMgc2VlbXMgd3JvbmcuIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MjcwMAogICAgICAgICByZXR1cm4gUGVy
c3BlY3RpdmVUcmFuc2Zvcm1PcGVyYXRpb246OmNyZWF0ZShMZW5ndGgoY2xhbXBUb1Bvc2l0aXZl
SW50ZWdlcihwKSwgRml4ZWQpKTsKICAgICB9CkBAIC01MCw4ICs1MCw4IEBAIFBhc3NSZWZQdHI8
VHJhbnNmb3JtT3BlcmF0aW9uPiBQZXJzcGVjdGkKIAogICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4
IGZyb21UOwogICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IHRvVDsKLSAgICBmcm9tVC5hcHBseVBl
cnNwZWN0aXZlKGZyb21QLmNhbGNGbG9hdFZhbHVlKDEpKTsKLSAgICB0b1QuYXBwbHlQZXJzcGVj
dGl2ZSh0b1AuY2FsY0Zsb2F0VmFsdWUoMSkpOworICAgIGZyb21ULmFwcGx5UGVyc3BlY3RpdmUo
Y2FsY3VsYXRlRmxvYXRWYWx1ZShmcm9tUCwgMSkpOworICAgIHRvVC5hcHBseVBlcnNwZWN0aXZl
KGNhbGN1bGF0ZUZsb2F0VmFsdWUodG9QLCAxKSk7CiAgICAgdG9ULmJsZW5kKGZyb21ULCBwcm9n
cmVzcyk7CiAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXg6OkRlY29tcG9zZWRUeXBlIGRlY29tcDsK
ICAgICB0b1QuZGVjb21wb3NlKGRlY29tcCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90cmFuc2Zvcm1zL1BlcnNwZWN0aXZlVHJhbnNmb3JtT3BlcmF0aW9uLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9Q
ZXJzcGVjdGl2ZVRyYW5zZm9ybU9wZXJhdGlvbi5oCShyZXZpc2lvbiAxMTExMTEpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1BlcnNwZWN0aXZlVHJhbnNm
b3JtT3BlcmF0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDcgQEAKICNkZWZpbmUg
UGVyc3BlY3RpdmVUcmFuc2Zvcm1PcGVyYXRpb25faAogCiAjaW5jbHVkZSAiTGVuZ3RoLmgiCisj
aW5jbHVkZSAiTGVuZ3RoRnVuY3Rpb25zLmgiCiAjaW5jbHVkZSAiVHJhbnNmb3JtT3BlcmF0aW9u
LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTQxLDcgKzQyLDcgQEAgcHVibGljOgogICAg
IExlbmd0aCBwZXJzcGVjdGl2ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcDsgfQogICAgIAogcHJpdmF0
ZToKLSAgICB2aXJ0dWFsIGJvb2wgaXNJZGVudGl0eSgpIGNvbnN0IHsgcmV0dXJuIG1fcC5jYWxj
RmxvYXRWYWx1ZSgxKSA9PSAwOyB9CisgICAgdmlydHVhbCBib29sIGlzSWRlbnRpdHkoKSBjb25z
dCB7IHJldHVybiAhY2FsY3VsYXRlRmxvYXRWYWx1ZShtX3AsIDEpOyB9CiAgICAgdmlydHVhbCBP
cGVyYXRpb25UeXBlIGdldE9wZXJhdGlvblR5cGUoKSBjb25zdCB7IHJldHVybiBQRVJTUEVDVElW
RTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc1NhbWVUeXBlKGNvbnN0IFRyYW5zZm9ybU9wZXJhdGlv
biYgbykgY29uc3QgeyByZXR1cm4gby5nZXRPcGVyYXRpb25UeXBlKCkgPT0gUEVSU1BFQ1RJVkU7
IH0KIApAQCAtNTUsNyArNTYsNyBAQCBwcml2YXRlOgogCiAgICAgdmlydHVhbCBib29sIGFwcGx5
KFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0sIGNvbnN0IEZsb2F0U2l6ZSYpIGNvbnN0
CiAgICAgewotICAgICAgICB0cmFuc2Zvcm0uYXBwbHlQZXJzcGVjdGl2ZShtX3AuY2FsY0Zsb2F0
VmFsdWUoMSkpOworICAgICAgICB0cmFuc2Zvcm0uYXBwbHlQZXJzcGVjdGl2ZShjYWxjdWxhdGVG
bG9hdFZhbHVlKG1fcCwgMSkpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zbGF0ZVRy
YW5zZm9ybU9wZXJhdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNsYXRlVHJhbnNmb3JtT3BlcmF0aW9uLmgJKHJldmlz
aW9uIDExMTExMSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9y
bXMvVHJhbnNsYXRlVHJhbnNmb3JtT3BlcmF0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDYg
KzI2LDcgQEAKICNkZWZpbmUgVHJhbnNsYXRlVHJhbnNmb3JtT3BlcmF0aW9uX2gKIAogI2luY2x1
ZGUgIkxlbmd0aC5oIgorI2luY2x1ZGUgIkxlbmd0aEZ1bmN0aW9ucy5oIgogI2luY2x1ZGUgIlRy
YW5zZm9ybU9wZXJhdGlvbi5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00MiwxNiArNDMs
MTYgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFRyYW5zbGF0ZVRyYW5z
Zm9ybU9wZXJhdGlvbih0eCwgdHksIHR6LCB0eXBlKSk7CiAgICAgfQogCi0gICAgZG91YmxlIHgo
Y29uc3QgRmxvYXRTaXplJiBib3JkZXJCb3hTaXplKSBjb25zdCB7IHJldHVybiBtX3guY2FsY0Zs
b2F0VmFsdWUoYm9yZGVyQm94U2l6ZS53aWR0aCgpKTsgfQotICAgIGRvdWJsZSB5KGNvbnN0IEZs
b2F0U2l6ZSYgYm9yZGVyQm94U2l6ZSkgY29uc3QgeyByZXR1cm4gbV95LmNhbGNGbG9hdFZhbHVl
KGJvcmRlckJveFNpemUuaGVpZ2h0KCkpOyB9Ci0gICAgZG91YmxlIHooY29uc3QgRmxvYXRTaXpl
JikgY29uc3QgeyByZXR1cm4gbV96LmNhbGNGbG9hdFZhbHVlKDEpOyB9CisgICAgZG91YmxlIHgo
Y29uc3QgRmxvYXRTaXplJiBib3JkZXJCb3hTaXplKSBjb25zdCB7IHJldHVybiBjYWxjdWxhdGVG
bG9hdFZhbHVlKG1feCwgYm9yZGVyQm94U2l6ZS53aWR0aCgpKTsgfQorICAgIGRvdWJsZSB5KGNv
bnN0IEZsb2F0U2l6ZSYgYm9yZGVyQm94U2l6ZSkgY29uc3QgeyByZXR1cm4gY2FsY3VsYXRlRmxv
YXRWYWx1ZShtX3ksIGJvcmRlckJveFNpemUuaGVpZ2h0KCkpOyB9CisgICAgZG91YmxlIHooY29u
c3QgRmxvYXRTaXplJikgY29uc3QgeyByZXR1cm4gY2FsY3VsYXRlRmxvYXRWYWx1ZShtX3osIDEp
OyB9CiAKICAgICBMZW5ndGggeCgpIGNvbnN0IHsgcmV0dXJuIG1feDsgfQogICAgIExlbmd0aCB5
KCkgY29uc3QgeyByZXR1cm4gbV95OyB9CiAgICAgTGVuZ3RoIHooKSBjb25zdCB7IHJldHVybiBt
X3o7IH0KIAogcHJpdmF0ZToKLSAgICB2aXJ0dWFsIGJvb2wgaXNJZGVudGl0eSgpIGNvbnN0IHsg
cmV0dXJuIG1feC5jYWxjRmxvYXRWYWx1ZSgxKSA9PSAwICYmIG1feS5jYWxjRmxvYXRWYWx1ZSgx
KSA9PSAwICYmIG1fei5jYWxjRmxvYXRWYWx1ZSgxKSA9PSAwOyB9CisgICAgdmlydHVhbCBib29s
IGlzSWRlbnRpdHkoKSBjb25zdCB7IHJldHVybiAhY2FsY3VsYXRlRmxvYXRWYWx1ZShtX3gsIDEp
ICYmICFjYWxjdWxhdGVGbG9hdFZhbHVlKG1feSwgMSkgJiYgIWNhbGN1bGF0ZUZsb2F0VmFsdWUo
bV96LCAxKTsgfQogCiAgICAgdmlydHVhbCBPcGVyYXRpb25UeXBlIGdldE9wZXJhdGlvblR5cGUo
KSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNTYW1lVHlwZShj
b25zdCBUcmFuc2Zvcm1PcGVyYXRpb24mIG8pIGNvbnN0IHsgcmV0dXJuIG8uZ2V0T3BlcmF0aW9u
VHlwZSgpID09IG1fdHlwZTsgfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bv
cHVwTWVudVdpbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2lu
L1BvcHVwTWVudVdpbi5jcHAJKHJldmlzaW9uIDExMTExMSkKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3dpbi9Qb3B1cE1lbnVXaW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw2ICszMyw3
IEBACiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiSFduZERDLmgiCiAjaW5jbHVk
ZSAiSG9zdFdpbmRvdy5oIgorI2luY2x1ZGUgIkxlbmd0aEZ1bmN0aW9ucy5oIgogI2luY2x1ZGUg
IlBhZ2UuaCIKICNpbmNsdWRlICJQbGF0Zm9ybU1vdXNlRXZlbnQuaCIKICNpbmNsdWRlICJQbGF0
Zm9ybVNjcmVlbi5oIgpAQCAtNjU0LDcgKzY1NSw3IEBAIHZvaWQgUG9wdXBNZW51V2luOjpwYWlu
dChjb25zdCBJbnRSZWN0JiAKICAgICAgICAgaWYgKGl0ZW1TdHlsZS5pc1Zpc2libGUoKSkgewog
ICAgICAgICAgICAgaW50IHRleHRYID0gbWF4KDAsIGNsaWVudCgpLT5jbGllbnRQYWRkaW5nTGVm
dCgpIC0gY2xpZW50KCktPmNsaWVudEluc2V0TGVmdCgpKTsKICAgICAgICAgICAgIGlmIChSZW5k
ZXJUaGVtZTo6ZGVmYXVsdFRoZW1lKCktPnBvcHVwT3B0aW9uU3VwcG9ydHNUZXh0SW5kZW50KCkg
JiYgaXRlbVN0eWxlLnRleHREaXJlY3Rpb24oKSA9PSBMVFIpCi0gICAgICAgICAgICAgICAgdGV4
dFggKz0gaXRlbVN0eWxlLnRleHRJbmRlbnQoKS5jYWxjTWluVmFsdWUoaXRlbVJlY3Qud2lkdGgo
KSk7CisgICAgICAgICAgICAgICAgdGV4dFggKz0gY2FsY3VsYXRlTWluaW11bVZhbHVlKGl0ZW1T
dHlsZS50ZXh0SW5kZW50KCksIGl0ZW1SZWN0LndpZHRoKCkpOwogICAgICAgICAgICAgaW50IHRl
eHRZID0gaXRlbVJlY3QueSgpICsgaXRlbUZvbnQuZm9udE1ldHJpY3MoKS5hc2NlbnQoKSArIChp
dGVtUmVjdC5oZWlnaHQoKSAtIGl0ZW1Gb250LmZvbnRNZXRyaWNzKCkuaGVpZ2h0KCkpIC8gMjsK
ICAgICAgICAgICAgIGNvbnRleHQuZHJhd0JpZGlUZXh0KGl0ZW1Gb250LCB0ZXh0UnVuLCBJbnRQ
b2ludCh0ZXh0WCwgdGV4dFkpKTsKICAgICAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL0F1dG9UYWJsZUxheW91dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL0F1dG9UYWJsZUxheW91dC5jcHAJKHJldmlzaW9uIDExMTExMSkKKysrIFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9BdXRvVGFibGVMYXlvdXQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC01NTEsNyArNTUxLDcgQEAgdm9pZCBBdXRvVGFibGVMYXlvdXQ6OmxheW91dCgpCiAgICAgICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbkVmZkNvbHM7ICsraSkgewogICAgICAgICAgICAgTGVu
Z3RoJiBsb2dpY2FsV2lkdGggPSBtX2xheW91dFN0cnVjdFtpXS5lZmZlY3RpdmVMb2dpY2FsV2lk
dGg7CiAgICAgICAgICAgICBpZiAobG9naWNhbFdpZHRoLmlzUGVyY2VudCgpKSB7Ci0gICAgICAg
ICAgICAgICAgaW50IGNlbGxMb2dpY2FsV2lkdGggPSBtYXg8aW50PihtX2xheW91dFN0cnVjdFtp
XS5lZmZlY3RpdmVNaW5Mb2dpY2FsV2lkdGgsIGxvZ2ljYWxXaWR0aC5jYWxjTWluVmFsdWUodGFi
bGVMb2dpY2FsV2lkdGgpKTsKKyAgICAgICAgICAgICAgICBpbnQgY2VsbExvZ2ljYWxXaWR0aCA9
IG1heDxpbnQ+KG1fbGF5b3V0U3RydWN0W2ldLmVmZmVjdGl2ZU1pbkxvZ2ljYWxXaWR0aCwgY2Fs
Y3VsYXRlTWluaW11bVZhbHVlKGxvZ2ljYWxXaWR0aCwgdGFibGVMb2dpY2FsV2lkdGgpKTsKICAg
ICAgICAgICAgICAgICBhdmFpbGFibGUgKz0gbV9sYXlvdXRTdHJ1Y3RbaV0uY29tcHV0ZWRMb2dp
Y2FsV2lkdGggLSBjZWxsTG9naWNhbFdpZHRoOwogICAgICAgICAgICAgICAgIG1fbGF5b3V0U3Ry
dWN0W2ldLmNvbXB1dGVkTG9naWNhbFdpZHRoID0gY2VsbExvZ2ljYWxXaWR0aDsKICAgICAgICAg
ICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9GaWx0ZXJFZmZlY3RSZW5kZXJl
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ZpbHRlckVmZmVj
dFJlbmRlcmVyLmNwcAkocmV2aXNpb24gMTExMTExKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL0ZpbHRlckVmZmVjdFJlbmRlcmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjM3LDcgKzIz
Nyw3IEBAIHZvaWQgRmlsdGVyRWZmZWN0UmVuZGVyZXI6OmJ1aWxkKERvY3VtZW4KICAgICAgICAg
fQogICAgICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6QkxVUjogewogICAgICAgICAgICAgQmx1
ckZpbHRlck9wZXJhdGlvbiogYmx1ck9wZXJhdGlvbiA9IHN0YXRpY19jYXN0PEJsdXJGaWx0ZXJP
cGVyYXRpb24qPihmaWx0ZXJPcGVyYXRpb24pOwotICAgICAgICAgICAgZmxvYXQgc3RkRGV2aWF0
aW9uID0gYmx1ck9wZXJhdGlvbi0+c3RkRGV2aWF0aW9uKCkuY2FsY0Zsb2F0VmFsdWUoMCk7Cisg
ICAgICAgICAgICBmbG9hdCBzdGREZXZpYXRpb24gPSBjYWxjdWxhdGVGbG9hdFZhbHVlKGJsdXJP
cGVyYXRpb24tPnN0ZERldmlhdGlvbigpLCAwKTsKICAgICAgICAgICAgIGVmZmVjdCA9IEZFR2F1
c3NpYW5CbHVyOjpjcmVhdGUodGhpcywgc3RkRGV2aWF0aW9uLCBzdGREZXZpYXRpb24pOwogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9GaXhlZFRhYmxlTGF5b3V0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvRml4ZWRUYWJsZUxheW91dC5jcHAJKHJldmlzaW9uIDExMTExMSkKKysrIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9GaXhlZFRhYmxlTGF5b3V0LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MjQxLDcgKzI0MSw3IEBAIHZvaWQgRml4ZWRUYWJsZUxheW91dDo6bGF5b3V0KCkKICAgICAgICAg
ICAgIGNhbGNXaWR0aFtpXSA9IG1fd2lkdGhbaV0udmFsdWUoKTsKICAgICAgICAgICAgIHRvdGFs
Rml4ZWRXaWR0aCArPSBjYWxjV2lkdGhbaV07CiAgICAgICAgIH0gZWxzZSBpZiAobV93aWR0aFtp
XS5pc1BlcmNlbnQoKSkgewotICAgICAgICAgICAgY2FsY1dpZHRoW2ldID0gbV93aWR0aFtpXS5j
YWxjVmFsdWUodGFibGVMb2dpY2FsV2lkdGgpOworICAgICAgICAgICAgY2FsY1dpZHRoW2ldID0g
Y2FsY3VsYXRlVmFsdWUobV93aWR0aFtpXSwgdGFibGVMb2dpY2FsV2lkdGgpOwogICAgICAgICAg
ICAgdG90YWxQZXJjZW50V2lkdGggKz0gY2FsY1dpZHRoW2ldOwogICAgICAgICAgICAgdG90YWxQ
ZXJjZW50ICs9IG1fd2lkdGhbaV0ucGVyY2VudCgpOwogICAgICAgICB9IGVsc2UgaWYgKG1fd2lk
dGhbaV0uaXNBdXRvKCkpIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJC
bG9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJs
b2NrLmNwcAkocmV2aXNpb24gMTExMTExKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckJsb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzkwMSw3ICszOTAxLDcgQEAgTGF5b3V0
VW5pdCBSZW5kZXJCbG9jazo6dGV4dEluZGVudE9mZnNldAogICAgIExheW91dFVuaXQgY3cgPSAw
OwogICAgIGlmIChzdHlsZSgpLT50ZXh0SW5kZW50KCkuaXNQZXJjZW50KCkpCiAgICAgICAgIGN3
ID0gY29udGFpbmluZ0Jsb2NrKCktPmF2YWlsYWJsZUxvZ2ljYWxXaWR0aCgpOwotICAgIHJldHVy
biBzdHlsZSgpLT50ZXh0SW5kZW50KCkuY2FsY01pblZhbHVlKGN3KTsKKyAgICByZXR1cm4gY2Fs
Y3VsYXRlTWluaW11bVZhbHVlKHN0eWxlKCktPnRleHRJbmRlbnQoKSwgY3cpOwogfQogCiBMYXlv
dXRVbml0IFJlbmRlckJsb2NrOjpsb2dpY2FsTGVmdE9mZnNldEZvckNvbnRlbnQoUmVuZGVyUmVn
aW9uKiByZWdpb24sIExheW91dFVuaXQgb2Zmc2V0RnJvbUxvZ2ljYWxUb3BPZkZpcnN0UGFnZSkg
Y29uc3QKQEAgLTU1NDEsNyArNTU0MSw3IEBAIHZvaWQgUmVuZGVyQmxvY2s6OmNvbXB1dGVJbmxp
bmVQcmVmZXJyZWQKICAgICAgICAgICAgICAgICBMYXlvdXRVbml0IHRpID0gMDsKICAgICAgICAg
ICAgICAgICBpZiAoIWFkZGVkVGV4dEluZGVudCkgewogICAgICAgICAgICAgICAgICAgICBhZGRl
ZFRleHRJbmRlbnQgPSB0cnVlOwotICAgICAgICAgICAgICAgICAgICB0aSA9IHN0eWxlVG9Vc2Ut
PnRleHRJbmRlbnQoKS5jYWxjTWluVmFsdWUoY3cpOworICAgICAgICAgICAgICAgICAgICB0aSA9
IGNhbGN1bGF0ZU1pbmltdW1WYWx1ZShzdHlsZVRvVXNlLT50ZXh0SW5kZW50KCksIGN3KTsKICAg
ICAgICAgICAgICAgICAgICAgY2hpbGRNaW4gKz0gdGk7CiAgICAgICAgICAgICAgICAgICAgIGNo
aWxkTWF4ICs9IHRpOwogICAgICAgICAgICAgICAgIH0KQEAgLTU2MTIsNyArNTYxMiw3IEBAIHZv
aWQgUmVuZGVyQmxvY2s6OmNvbXB1dGVJbmxpbmVQcmVmZXJyZWQKICAgICAgICAgICAgICAgICBM
YXlvdXRVbml0IHRpID0gMDsKICAgICAgICAgICAgICAgICBpZiAoIWFkZGVkVGV4dEluZGVudCkg
ewogICAgICAgICAgICAgICAgICAgICBhZGRlZFRleHRJbmRlbnQgPSB0cnVlOwotICAgICAgICAg
ICAgICAgICAgICB0aSA9IHN0eWxlVG9Vc2UtPnRleHRJbmRlbnQoKS5jYWxjTWluVmFsdWUoY3cp
OworICAgICAgICAgICAgICAgICAgICB0aSA9IGNhbGN1bGF0ZU1pbmltdW1WYWx1ZShzdHlsZVRv
VXNlLT50ZXh0SW5kZW50KCksIGN3KTsKICAgICAgICAgICAgICAgICAgICAgY2hpbGRNaW4rPXRp
OyBiZWdpbk1pbiArPSB0aTsKICAgICAgICAgICAgICAgICAgICAgY2hpbGRNYXgrPXRpOyBiZWdp
bk1heCArPSB0aTsKICAgICAgICAgICAgICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQm94LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyQm94LmNwcAkocmV2aXNpb24gMTExMTExKQorKysgU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckJveC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYyMyw4ICs2MjMsOCBAQCBp
bnQgUmVuZGVyQm94OjpyZWZsZWN0aW9uT2Zmc2V0KCkgY29uc3QKICAgICBpZiAoIXN0eWxlKCkt
PmJveFJlZmxlY3QoKSkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgaWYgKHN0eWxlKCktPmJveFJl
ZmxlY3QoKS0+ZGlyZWN0aW9uKCkgPT0gUmVmbGVjdGlvbkxlZnQgfHwgc3R5bGUoKS0+Ym94UmVm
bGVjdCgpLT5kaXJlY3Rpb24oKSA9PSBSZWZsZWN0aW9uUmlnaHQpCi0gICAgICAgIHJldHVybiBz
dHlsZSgpLT5ib3hSZWZsZWN0KCktPm9mZnNldCgpLmNhbGNWYWx1ZShib3JkZXJCb3hSZWN0KCku
d2lkdGgoKSk7Ci0gICAgcmV0dXJuIHN0eWxlKCktPmJveFJlZmxlY3QoKS0+b2Zmc2V0KCkuY2Fs
Y1ZhbHVlKGJvcmRlckJveFJlY3QoKS5oZWlnaHQoKSk7CisgICAgICAgIHJldHVybiBjYWxjdWxh
dGVWYWx1ZShzdHlsZSgpLT5ib3hSZWZsZWN0KCktPm9mZnNldCgpLCBib3JkZXJCb3hSZWN0KCku
d2lkdGgoKSk7CisgICAgcmV0dXJuIGNhbGN1bGF0ZVZhbHVlKHN0eWxlKCktPmJveFJlZmxlY3Qo
KS0+b2Zmc2V0KCksIGJvcmRlckJveFJlY3QoKS5oZWlnaHQoKSk7CiB9CiAKIExheW91dFJlY3Qg
UmVuZGVyQm94OjpyZWZsZWN0ZWRSZWN0KGNvbnN0IExheW91dFJlY3QmIHIpIGNvbnN0CkBAIC0x
Mjk0LDcgKzEyOTQsNyBAQCBMYXlvdXRSZWN0IFJlbmRlckJveDo6Y2xpcFJlY3QoY29uc3QgTGF5
CiAgICAgTGF5b3V0UmVjdCBjbGlwUmVjdCA9IExheW91dFJlY3QoYm9yZGVyQm94UmVjdC5sb2Nh
dGlvbigpICsgbG9jYXRpb24sIGJvcmRlckJveFJlY3Quc2l6ZSgpKTsKIAogICAgIGlmICghc3R5
bGUoKS0+Y2xpcExlZnQoKS5pc0F1dG8oKSkgewotICAgICAgICBMYXlvdXRVbml0IGMgPSBzdHls
ZSgpLT5jbGlwTGVmdCgpLmNhbGNWYWx1ZShib3JkZXJCb3hSZWN0LndpZHRoKCkpOworICAgICAg
ICBMYXlvdXRVbml0IGMgPSBjYWxjdWxhdGVWYWx1ZShzdHlsZSgpLT5jbGlwTGVmdCgpLCBib3Jk
ZXJCb3hSZWN0LndpZHRoKCkpOwogICAgICAgICBjbGlwUmVjdC5tb3ZlKGMsIDApOwogICAgICAg
ICBjbGlwUmVjdC5jb250cmFjdChjLCAwKTsKICAgICB9CkBAIC0xMzAzLDE2ICsxMzAzLDE2IEBA
IExheW91dFJlY3QgUmVuZGVyQm94OjpjbGlwUmVjdChjb25zdCBMYXkKICAgICAvLyBmcm9tIHRo
ZSBsZWZ0IGFuZCB0b3AgZWRnZXMuIFRoZXJlZm9yZSBpdCdzIGJldHRlciB0byBhdm9pZCBjb25z
dHJhaW5pbmcgdG8gc21hbGxlciB3aWR0aHMgYW5kIGhlaWdodHMuCiAKICAgICBpZiAoIXN0eWxl
KCktPmNsaXBSaWdodCgpLmlzQXV0bygpKQotICAgICAgICBjbGlwUmVjdC5jb250cmFjdCh3aWR0
aCgpIC0gc3R5bGUoKS0+Y2xpcFJpZ2h0KCkuY2FsY1ZhbHVlKHdpZHRoKCkpLCAwKTsKKyAgICAg
ICAgY2xpcFJlY3QuY29udHJhY3Qod2lkdGgoKSAtIGNhbGN1bGF0ZVZhbHVlKHN0eWxlKCktPmNs
aXBSaWdodCgpLCB3aWR0aCgpKSwgMCk7CiAKICAgICBpZiAoIXN0eWxlKCktPmNsaXBUb3AoKS5p
c0F1dG8oKSkgewotICAgICAgICBMYXlvdXRVbml0IGMgPSBzdHlsZSgpLT5jbGlwVG9wKCkuY2Fs
Y1ZhbHVlKGJvcmRlckJveFJlY3QuaGVpZ2h0KCkpOworICAgICAgICBMYXlvdXRVbml0IGMgPSBj
YWxjdWxhdGVWYWx1ZShzdHlsZSgpLT5jbGlwVG9wKCksIGJvcmRlckJveFJlY3QuaGVpZ2h0KCkp
OwogICAgICAgICBjbGlwUmVjdC5tb3ZlKDAsIGMpOwogICAgICAgICBjbGlwUmVjdC5jb250cmFj
dCgwLCBjKTsKICAgICB9CiAKICAgICBpZiAoIXN0eWxlKCktPmNsaXBCb3R0b20oKS5pc0F1dG8o
KSkKLSAgICAgICAgY2xpcFJlY3QuY29udHJhY3QoMCwgaGVpZ2h0KCkgLSBzdHlsZSgpLT5jbGlw
Qm90dG9tKCkuY2FsY1ZhbHVlKGhlaWdodCgpKSk7CisgICAgICAgIGNsaXBSZWN0LmNvbnRyYWN0
KDAsIGhlaWdodCgpIC0gY2FsY3VsYXRlVmFsdWUoc3R5bGUoKS0+Y2xpcEJvdHRvbSgpLCBoZWln
aHQoKSkpOwogCiAgICAgcmV0dXJuIGNsaXBSZWN0OwogfQpAQCAtMTc3OSwxMCArMTc3OSwxMCBA
QCB2b2lkIFJlbmRlckJveDo6Y29tcHV0ZUxvZ2ljYWxXaWR0aEluUmVnCiAgICAgCiAgICAgaWYg
KGlzSW5saW5lKCkgJiYgIWlzSW5saW5lQmxvY2tPcklubGluZVRhYmxlKCkpIHsKICAgICAgICAg
Ly8ganVzdCBjYWxjdWxhdGUgbWFyZ2lucwotICAgICAgICBzZXRNYXJnaW5TdGFydChzdHlsZVRv
VXNlLT5tYXJnaW5TdGFydCgpLmNhbGNNaW5WYWx1ZShjb250YWluZXJMb2dpY2FsV2lkdGgpKTsK
LSAgICAgICAgc2V0TWFyZ2luRW5kKHN0eWxlVG9Vc2UtPm1hcmdpbkVuZCgpLmNhbGNNaW5WYWx1
ZShjb250YWluZXJMb2dpY2FsV2lkdGgpKTsKKyAgICAgICAgc2V0TWFyZ2luU3RhcnQoY2FsY3Vs
YXRlTWluaW11bVZhbHVlKHN0eWxlVG9Vc2UtPm1hcmdpblN0YXJ0KCksIGNvbnRhaW5lckxvZ2lj
YWxXaWR0aCkpOworICAgICAgICBzZXRNYXJnaW5FbmQoY2FsY3VsYXRlTWluaW11bVZhbHVlKHN0
eWxlVG9Vc2UtPm1hcmdpbkVuZCgpLCBjb250YWluZXJMb2dpY2FsV2lkdGgpKTsKICAgICAgICAg
aWYgKHRyZWF0QXNSZXBsYWNlZCkKLSAgICAgICAgICAgIHNldExvZ2ljYWxXaWR0aChtYXg8TGF5
b3V0VW5pdD4obG9naWNhbFdpZHRoTGVuZ3RoLmNhbGNGbG9hdFZhbHVlKDApICsgYm9yZGVyQW5k
UGFkZGluZ0xvZ2ljYWxXaWR0aCgpLCBtaW5QcmVmZXJyZWRMb2dpY2FsV2lkdGgoKSkpOworICAg
ICAgICAgICAgc2V0TG9naWNhbFdpZHRoKG1heDxMYXlvdXRVbml0PihjYWxjdWxhdGVGbG9hdFZh
bHVlKGxvZ2ljYWxXaWR0aExlbmd0aCwgMCkgKyBib3JkZXJBbmRQYWRkaW5nTG9naWNhbFdpZHRo
KCksIG1pblByZWZlcnJlZExvZ2ljYWxXaWR0aCgpKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKQEAgLTE4MTgsOCArMTgxOCw4IEBAIHZvaWQgUmVuZGVyQm94Ojpjb21wdXRlTG9naWNhbFdp
ZHRoSW5SZWcKIAogICAgIC8vIE1hcmdpbiBjYWxjdWxhdGlvbnMuCiAgICAgaWYgKGxvZ2ljYWxX
aWR0aExlbmd0aC5pc0F1dG8oKSB8fCBoYXNQZXJwZW5kaWN1bGFyQ29udGFpbmluZ0Jsb2NrKSB7
Ci0gICAgICAgIHNldE1hcmdpblN0YXJ0KHN0eWxlVG9Vc2UtPm1hcmdpblN0YXJ0KCkuY2FsY01p
blZhbHVlKGNvbnRhaW5lckxvZ2ljYWxXaWR0aCkpOwotICAgICAgICBzZXRNYXJnaW5FbmQoc3R5
bGVUb1VzZS0+bWFyZ2luRW5kKCkuY2FsY01pblZhbHVlKGNvbnRhaW5lckxvZ2ljYWxXaWR0aCkp
OworICAgICAgICBzZXRNYXJnaW5TdGFydChjYWxjdWxhdGVNaW5pbXVtVmFsdWUoc3R5bGVUb1Vz
ZS0+bWFyZ2luU3RhcnQoKSwgY29udGFpbmVyTG9naWNhbFdpZHRoKSk7CisgICAgICAgIHNldE1h
cmdpbkVuZChjYWxjdWxhdGVNaW5pbXVtVmFsdWUoc3R5bGVUb1VzZS0+bWFyZ2luRW5kKCksIGNv
bnRhaW5lckxvZ2ljYWxXaWR0aCkpOwogICAgIH0gZWxzZQogICAgICAgICBjb21wdXRlSW5saW5l
RGlyZWN0aW9uTWFyZ2lucyhjYiwgY29udGFpbmVyTG9naWNhbFdpZHRoLCBsb2dpY2FsV2lkdGgo
KSk7CiAKQEAgLTE4NDIsOCArMTg0Miw4IEBAIExheW91dFVuaXQgUmVuZGVyQm94Ojpjb21wdXRl
TG9naWNhbFdpZHQKICAgICAgICAgbG9naWNhbFdpZHRoID0gc3R5bGVUb1VzZS0+bG9naWNhbE1h
eFdpZHRoKCk7CiAKICAgICBpZiAobG9naWNhbFdpZHRoLmlzSW50cmluc2ljT3JBdXRvKCkpIHsK
LSAgICAgICAgTGF5b3V0VW5pdCBtYXJnaW5TdGFydCA9IHN0eWxlVG9Vc2UtPm1hcmdpblN0YXJ0
KCkuY2FsY01pblZhbHVlKGF2YWlsYWJsZUxvZ2ljYWxXaWR0aCk7Ci0gICAgICAgIExheW91dFVu
aXQgbWFyZ2luRW5kID0gc3R5bGVUb1VzZS0+bWFyZ2luRW5kKCkuY2FsY01pblZhbHVlKGF2YWls
YWJsZUxvZ2ljYWxXaWR0aCk7CisgICAgICAgIExheW91dFVuaXQgbWFyZ2luU3RhcnQgPSBjYWxj
dWxhdGVNaW5pbXVtVmFsdWUoc3R5bGVUb1VzZS0+bWFyZ2luU3RhcnQoKSwgYXZhaWxhYmxlTG9n
aWNhbFdpZHRoKTsKKyAgICAgICAgTGF5b3V0VW5pdCBtYXJnaW5FbmQgPSBjYWxjdWxhdGVNaW5p
bXVtVmFsdWUoc3R5bGVUb1VzZS0+bWFyZ2luRW5kKCksIGF2YWlsYWJsZUxvZ2ljYWxXaWR0aCk7
CiAgICAgICAgIGxvZ2ljYWxXaWR0aFJlc3VsdCA9IGF2YWlsYWJsZUxvZ2ljYWxXaWR0aCAtIG1h
cmdpblN0YXJ0IC0gbWFyZ2luRW5kOwogCiAgICAgICAgIGlmIChzaHJpbmtUb0F2b2lkRmxvYXRz
KCkgJiYgY2ItPmNvbnRhaW5zRmxvYXRzKCkpCkBAIC0xODU0LDcgKzE4NTQsNyBAQCBMYXlvdXRV
bml0IFJlbmRlckJveDo6Y29tcHV0ZUxvZ2ljYWxXaWR0CiAgICAgICAgICAgICBsb2dpY2FsV2lk
dGhSZXN1bHQgPSBtaW4obG9naWNhbFdpZHRoUmVzdWx0LCBtYXhQcmVmZXJyZWRMb2dpY2FsV2lk
dGgoKSk7CiAgICAgICAgIH0KICAgICB9IGVsc2UgLy8gRklYTUU6IElmIHRoZSBjb250YWluaW5n
IGJsb2NrIGZsb3cgaXMgcGVycGVuZGljdWxhciB0byBvdXIgZGlyZWN0aW9uIHdlIG5lZWQgdG8g
dXNlIHRoZSBhdmFpbGFibGUgbG9naWNhbCBoZWlnaHQgaW5zdGVhZC4KLSAgICAgICAgbG9naWNh
bFdpZHRoUmVzdWx0ID0gY29tcHV0ZUJvcmRlckJveExvZ2ljYWxXaWR0aChsb2dpY2FsV2lkdGgu
Y2FsY1ZhbHVlKGF2YWlsYWJsZUxvZ2ljYWxXaWR0aCkpOyAKKyAgICAgICAgbG9naWNhbFdpZHRo
UmVzdWx0ID0gY29tcHV0ZUJvcmRlckJveExvZ2ljYWxXaWR0aChjYWxjdWxhdGVWYWx1ZShsb2dp
Y2FsV2lkdGgsIGF2YWlsYWJsZUxvZ2ljYWxXaWR0aCkpOyAKIAogICAgIHJldHVybiBsb2dpY2Fs
V2lkdGhSZXN1bHQ7CiB9CkBAIC0xOTI1LDggKzE5MjUsOCBAQCB2b2lkIFJlbmRlckJveDo6Y29t
cHV0ZUlubGluZURpcmVjdGlvbk1hCiAKICAgICBpZiAoaXNGbG9hdGluZygpIHx8IGlzSW5saW5l
KCkpIHsKICAgICAgICAgLy8gSW5saW5lIGJsb2Nrcy90YWJsZXMgYW5kIGZsb2F0cyBkb24ndCBo
YXZlIHRoZWlyIG1hcmdpbnMgaW5jcmVhc2VkLgotICAgICAgICBjb250YWluaW5nQmxvY2stPnNl
dE1hcmdpblN0YXJ0Rm9yQ2hpbGQodGhpcywgbWFyZ2luU3RhcnRMZW5ndGguY2FsY01pblZhbHVl
KGNvbnRhaW5lcldpZHRoKSk7Ci0gICAgICAgIGNvbnRhaW5pbmdCbG9jay0+c2V0TWFyZ2luRW5k
Rm9yQ2hpbGQodGhpcywgbWFyZ2luRW5kTGVuZ3RoLmNhbGNNaW5WYWx1ZShjb250YWluZXJXaWR0
aCkpOworICAgICAgICBjb250YWluaW5nQmxvY2stPnNldE1hcmdpblN0YXJ0Rm9yQ2hpbGQodGhp
cywgY2FsY3VsYXRlTWluaW11bVZhbHVlKG1hcmdpblN0YXJ0TGVuZ3RoLCBjb250YWluZXJXaWR0
aCkpOworICAgICAgICBjb250YWluaW5nQmxvY2stPnNldE1hcmdpbkVuZEZvckNoaWxkKHRoaXMs
IGNhbGN1bGF0ZU1pbmltdW1WYWx1ZShtYXJnaW5FbmRMZW5ndGgsIGNvbnRhaW5lcldpZHRoKSk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTE5NDAsNyArMTk0MCw3IEBAIHZvaWQgUmVu
ZGVyQm94Ojpjb21wdXRlSW5saW5lRGlyZWN0aW9uTWEKICAgICAKICAgICAvLyBDYXNlIFR3bzog
VGhlIG9iamVjdCBpcyBiZWluZyBwdXNoZWQgdG8gdGhlIHN0YXJ0IG9mIHRoZSBjb250YWluaW5n
IGJsb2NrJ3MgYXZhaWxhYmxlIGxvZ2ljYWwgd2lkdGguCiAgICAgaWYgKG1hcmdpbkVuZExlbmd0
aC5pc0F1dG8oKSAmJiBjaGlsZFdpZHRoIDwgY29udGFpbmVyV2lkdGgpIHsKLSAgICAgICAgY29u
dGFpbmluZ0Jsb2NrLT5zZXRNYXJnaW5TdGFydEZvckNoaWxkKHRoaXMsIG1hcmdpblN0YXJ0TGVu
Z3RoLmNhbGNWYWx1ZShjb250YWluZXJXaWR0aCkpOworICAgICAgICBjb250YWluaW5nQmxvY2st
PnNldE1hcmdpblN0YXJ0Rm9yQ2hpbGQodGhpcywgY2FsY3VsYXRlVmFsdWUobWFyZ2luU3RhcnRM
ZW5ndGgsIGNvbnRhaW5lcldpZHRoKSk7CiAgICAgICAgIGNvbnRhaW5pbmdCbG9jay0+c2V0TWFy
Z2luRW5kRm9yQ2hpbGQodGhpcywgY29udGFpbmVyV2lkdGggLSBjaGlsZFdpZHRoIC0gY29udGFp
bmluZ0Jsb2NrLT5tYXJnaW5TdGFydEZvckNoaWxkKHRoaXMpKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0gCkBAIC0xOTQ5LDE1ICsxOTQ5LDE1IEBAIHZvaWQgUmVuZGVyQm94Ojpjb21wdXRlSW5s
aW5lRGlyZWN0aW9uTWEKICAgICBib29sIHB1c2hUb0VuZEZyb21UZXh0QWxpZ24gPSAhbWFyZ2lu
RW5kTGVuZ3RoLmlzQXV0bygpICYmICgoIWNvbnRhaW5pbmdCbG9ja1N0eWxlLT5pc0xlZnRUb1Jp
Z2h0RGlyZWN0aW9uKCkgJiYgY29udGFpbmluZ0Jsb2NrU3R5bGUtPnRleHRBbGlnbigpID09IFdF
QktJVF9MRUZUKQogICAgICAgICB8fCAoY29udGFpbmluZ0Jsb2NrU3R5bGUtPmlzTGVmdFRvUmln
aHREaXJlY3Rpb24oKSAmJiBjb250YWluaW5nQmxvY2tTdHlsZS0+dGV4dEFsaWduKCkgPT0gV0VC
S0lUX1JJR0hUKSk7CiAgICAgaWYgKChtYXJnaW5TdGFydExlbmd0aC5pc0F1dG8oKSAmJiBjaGls
ZFdpZHRoIDwgY29udGFpbmVyV2lkdGgpIHx8IHB1c2hUb0VuZEZyb21UZXh0QWxpZ24pIHsKLSAg
ICAgICAgY29udGFpbmluZ0Jsb2NrLT5zZXRNYXJnaW5FbmRGb3JDaGlsZCh0aGlzLCBtYXJnaW5F
bmRMZW5ndGguY2FsY1ZhbHVlKGNvbnRhaW5lcldpZHRoKSk7CisgICAgICAgIGNvbnRhaW5pbmdC
bG9jay0+c2V0TWFyZ2luRW5kRm9yQ2hpbGQodGhpcywgY2FsY3VsYXRlVmFsdWUobWFyZ2luRW5k
TGVuZ3RoLCBjb250YWluZXJXaWR0aCkpOwogICAgICAgICBjb250YWluaW5nQmxvY2stPnNldE1h
cmdpblN0YXJ0Rm9yQ2hpbGQodGhpcywgY29udGFpbmVyV2lkdGggLSBjaGlsZFdpZHRoIC0gY29u
dGFpbmluZ0Jsb2NrLT5tYXJnaW5FbmRGb3JDaGlsZCh0aGlzKSk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9IAogICAgIAogICAgIC8vIENhc2UgRm91cjogRWl0aGVyIG5vIGF1dG8gbWFyZ2lucywg
b3Igb3VyIHdpZHRoIGlzID49IHRoZSBjb250YWluZXIgd2lkdGggKGNzczIuMSwgMTAuMy4zKS4g
IEluIHRoYXQgY2FzZQogICAgIC8vIGF1dG8gbWFyZ2lucyB3aWxsIGp1c3QgdHVybiBpbnRvIDAu
Ci0gICAgY29udGFpbmluZ0Jsb2NrLT5zZXRNYXJnaW5TdGFydEZvckNoaWxkKHRoaXMsIG1hcmdp
blN0YXJ0TGVuZ3RoLmNhbGNNaW5WYWx1ZShjb250YWluZXJXaWR0aCkpOwotICAgIGNvbnRhaW5p
bmdCbG9jay0+c2V0TWFyZ2luRW5kRm9yQ2hpbGQodGhpcywgbWFyZ2luRW5kTGVuZ3RoLmNhbGNN
aW5WYWx1ZShjb250YWluZXJXaWR0aCkpOworICAgIGNvbnRhaW5pbmdCbG9jay0+c2V0TWFyZ2lu
U3RhcnRGb3JDaGlsZCh0aGlzLCBjYWxjdWxhdGVNaW5pbXVtVmFsdWUobWFyZ2luU3RhcnRMZW5n
dGgsIGNvbnRhaW5lcldpZHRoKSk7CisgICAgY29udGFpbmluZ0Jsb2NrLT5zZXRNYXJnaW5FbmRG
b3JDaGlsZCh0aGlzLCBjYWxjdWxhdGVNaW5pbXVtVmFsdWUobWFyZ2luRW5kTGVuZ3RoLCBjb250
YWluZXJXaWR0aCkpOwogfQogCiBSZW5kZXJCb3hSZWdpb25JbmZvKiBSZW5kZXJCb3g6OnJlbmRl
ckJveFJlZ2lvbkluZm8oUmVuZGVyUmVnaW9uKiByZWdpb24sIExheW91dFVuaXQgb2Zmc2V0RnJv
bUxvZ2ljYWxUb3BPZkZpcnN0UGFnZSwgUmVuZGVyQm94UmVnaW9uSW5mb0ZsYWdzIGNhY2hlRmxh
ZykgY29uc3QKQEAgLTIyNDUsNyArMjI0NSw3IEBAIExheW91dFVuaXQgUmVuZGVyQm94Ojpjb21w
dXRlUGVyY2VudGFnZUwKICAgICAgICAgcmVzdWx0ID0gY2ItPmNvbXB1dGVDb250ZW50Qm94TG9n
aWNhbEhlaWdodChjYi0+YXZhaWxhYmxlTG9naWNhbEhlaWdodCgpKTsKIAogICAgIGlmIChyZXN1
bHQgIT0gLTEpIHsKLSAgICAgICAgcmVzdWx0ID0gaGVpZ2h0LmNhbGNWYWx1ZShyZXN1bHQpOwor
ICAgICAgICByZXN1bHQgPSBjYWxjdWxhdGVWYWx1ZShoZWlnaHQsIHJlc3VsdCk7CiAgICAgICAg
IGlmIChpbmNsdWRlQm9yZGVyUGFkZGluZykgewogICAgICAgICAgICAgLy8gSXQgaXMgbmVjZXNz
YXJ5IHRvIHVzZSB0aGUgYm9yZGVyLWJveCB0byBtYXRjaCBXaW5JRSdzIGJyb2tlbgogICAgICAg
ICAgICAgLy8gYm94IG1vZGVsLiAgVGhpcyBpcyBlc3NlbnRpYWwgZm9yIHNpemluZyBpbnNpZGUK
QEAgLTIyODAsNyArMjI4MCw3IEBAIExheW91dFVuaXQgUmVuZGVyQm94Ojpjb21wdXRlUmVwbGFj
ZWRMb2cKICAgICAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD00NjQ5NgogICAgICAgICAgICAgY29uc3QgTGF5b3V0VW5pdCBjdyA9IGlzUG9zaXRpb25l
ZCgpID8gY29udGFpbmluZ0Jsb2NrTG9naWNhbFdpZHRoRm9yUG9zaXRpb25lZCh0b1JlbmRlckJv
eE1vZGVsT2JqZWN0KGNvbnRhaW5lcigpKSkgOiBjb250YWluaW5nQmxvY2tMb2dpY2FsV2lkdGhG
b3JDb250ZW50KCk7CiAgICAgICAgICAgICBpZiAoY3cgPiAwKQotICAgICAgICAgICAgICAgIHJl
dHVybiBjb21wdXRlQ29udGVudEJveExvZ2ljYWxXaWR0aChsb2dpY2FsV2lkdGguY2FsY01pblZh
bHVlKGN3KSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGNvbXB1dGVDb250ZW50Qm94TG9naWNh
bFdpZHRoKGNhbGN1bGF0ZU1pbmltdW1WYWx1ZShsb2dpY2FsV2lkdGgsIGN3KSk7CiAgICAgICAg
IH0KICAgICAgICAgLy8gZmFsbCB0aHJvdWdoCiAgICAgICAgIGRlZmF1bHQ6CkBAIC0yMzIyLDcg
KzIzMjIsNyBAQCBMYXlvdXRVbml0IFJlbmRlckJveDo6Y29tcHV0ZVJlcGxhY2VkTG9nCiAgICAg
ICAgICAgICAgICAgYmxvY2stPmNvbXB1dGVMb2dpY2FsSGVpZ2h0KCk7CiAgICAgICAgICAgICAg
ICAgTGF5b3V0VW5pdCBuZXdIZWlnaHQgPSBibG9jay0+Y29tcHV0ZUNvbnRlbnRCb3hMb2dpY2Fs
SGVpZ2h0KGJsb2NrLT5jb250ZW50SGVpZ2h0KCkpOwogICAgICAgICAgICAgICAgIGJsb2NrLT5z
ZXRIZWlnaHQob2xkSGVpZ2h0KTsKLSAgICAgICAgICAgICAgICByZXR1cm4gY29tcHV0ZUNvbnRl
bnRCb3hMb2dpY2FsSGVpZ2h0KGxvZ2ljYWxIZWlnaHQuY2FsY1ZhbHVlKG5ld0hlaWdodCkpOwor
ICAgICAgICAgICAgICAgIHJldHVybiBjb21wdXRlQ29udGVudEJveExvZ2ljYWxIZWlnaHQoY2Fs
Y3VsYXRlVmFsdWUobG9naWNhbEhlaWdodCwgbmV3SGVpZ2h0KSk7CiAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICAKICAgICAgICAgICAgIC8vIEZJWE1FOiBhdmFpbGFibGVMb2dpY2FsSGVpZ2h0
KCkgaXMgd3JvbmcgaWYgdGhlIHJlcGxhY2VkIGVsZW1lbnQncyBibG9jay1mbG93IGlzIHBlcnBl
bmRpY3VsYXIgdG8gdGhlCkBAIC0yMzQzLDEzICsyMzQzLDEzIEBAIExheW91dFVuaXQgUmVuZGVy
Qm94Ojpjb21wdXRlUmVwbGFjZWRMb2cKICAgICAgICAgICAgICAgICAgICAgICAgIC8vIERvbid0
IGxldCB0YWJsZSBjZWxscyBzcXVlZXplIHBlcmNlbnQtaGVpZ2h0IHJlcGxhY2VkIGVsZW1lbnRz
CiAgICAgICAgICAgICAgICAgICAgICAgICAvLyA8aHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTUzNTk+CiAgICAgICAgICAgICAgICAgICAgICAgICBhdmFpbGFibGVIZWln
aHQgPSBtYXgoYXZhaWxhYmxlSGVpZ2h0LCBpbnRyaW5zaWNMb2dpY2FsSGVpZ2h0KCkpOwotICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxvZ2ljYWxIZWlnaHQuY2FsY1ZhbHVlKGF2YWls
YWJsZUhlaWdodCAtIGJvcmRlckFuZFBhZGRpbmdMb2dpY2FsSGVpZ2h0KCkpOworICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIGNhbGN1bGF0ZVZhbHVlKGxvZ2ljYWxIZWlnaHQsIGF2YWls
YWJsZUhlaWdodCAtIGJvcmRlckFuZFBhZGRpbmdMb2dpY2FsSGVpZ2h0KCkpOwogICAgICAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIGNiID0gY2ItPmNvbnRhaW5pbmdCbG9j
aygpOwogICAgICAgICAgICAgICAgICAgICB0b1JlbmRlckJsb2NrKGNiKS0+YWRkUGVyY2VudEhl
aWdodERlc2NlbmRhbnQoY29uc3RfY2FzdDxSZW5kZXJCb3gqPih0aGlzKSk7CiAgICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0dXJuIGNvbXB1dGVDb250ZW50
Qm94TG9naWNhbEhlaWdodChsb2dpY2FsSGVpZ2h0LmNhbGNWYWx1ZShhdmFpbGFibGVIZWlnaHQp
KTsKKyAgICAgICAgICAgIHJldHVybiBjb21wdXRlQ29udGVudEJveExvZ2ljYWxIZWlnaHQoY2Fs
Y3VsYXRlVmFsdWUobG9naWNhbEhlaWdodCwgYXZhaWxhYmxlSGVpZ2h0KSk7CiAgICAgICAgIH0K
ICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIHJldHVybiBpbnRyaW5zaWNMb2dpY2FsSGVp
Z2h0KCk7CkBAIC0yMzg0LDcgKzIzODQsNyBAQCBMYXlvdXRVbml0IFJlbmRlckJveDo6YXZhaWxh
YmxlTG9naWNhbEhlCiAgICAgICAgICAgICBhdmFpbGFibGVIZWlnaHQgPSBjb250YWluaW5nQmxv
Y2tMb2dpY2FsSGVpZ2h0Rm9yUG9zaXRpb25lZChjb250YWluaW5nQmxvY2soKSk7CiAgICAgICAg
IGVsc2UKICAgICAgICAgICAgIGF2YWlsYWJsZUhlaWdodCA9IGNvbnRhaW5pbmdCbG9jaygpLT5h
dmFpbGFibGVMb2dpY2FsSGVpZ2h0KCk7Ci0gICAgICAgIHJldHVybiBjb21wdXRlQ29udGVudEJv
eExvZ2ljYWxIZWlnaHQoaC5jYWxjVmFsdWUoYXZhaWxhYmxlSGVpZ2h0KSk7CisgICAgICAgIHJl
dHVybiBjb21wdXRlQ29udGVudEJveExvZ2ljYWxIZWlnaHQoY2FsY3VsYXRlVmFsdWUoaCwgYXZh
aWxhYmxlSGVpZ2h0KSk7CiAgICAgfQogCiAgICAgLy8gRklYTUU6IFdlIGNhbid0IGp1c3QgY2hl
Y2sgdG9wL2JvdHRvbSBoZXJlLgpAQCAtMjQxNiw4ICsyNDE2LDggQEAgdm9pZCBSZW5kZXJCb3g6
OmNvbXB1dGVCbG9ja0RpcmVjdGlvbk1hcgogICAgIExheW91dFVuaXQgY3cgPSBjb250YWluaW5n
QmxvY2tMb2dpY2FsV2lkdGhGb3JDb250ZW50KCk7CiAKICAgICBSZW5kZXJTdHlsZSogY29udGFp
bmluZ0Jsb2NrU3R5bGUgPSBjb250YWluaW5nQmxvY2stPnN0eWxlKCk7Ci0gICAgY29udGFpbmlu
Z0Jsb2NrLT5zZXRNYXJnaW5CZWZvcmVGb3JDaGlsZCh0aGlzLCBzdHlsZSgpLT5tYXJnaW5CZWZv
cmVVc2luZyhjb250YWluaW5nQmxvY2tTdHlsZSkuY2FsY01pblZhbHVlKGN3KSk7Ci0gICAgY29u
dGFpbmluZ0Jsb2NrLT5zZXRNYXJnaW5BZnRlckZvckNoaWxkKHRoaXMsIHN0eWxlKCktPm1hcmdp
bkFmdGVyVXNpbmcoY29udGFpbmluZ0Jsb2NrU3R5bGUpLmNhbGNNaW5WYWx1ZShjdykpOworICAg
IGNvbnRhaW5pbmdCbG9jay0+c2V0TWFyZ2luQmVmb3JlRm9yQ2hpbGQodGhpcywgY2FsY3VsYXRl
TWluaW11bVZhbHVlKHN0eWxlKCktPm1hcmdpbkJlZm9yZVVzaW5nKGNvbnRhaW5pbmdCbG9ja1N0
eWxlKSwgY3cpKTsKKyAgICBjb250YWluaW5nQmxvY2stPnNldE1hcmdpbkFmdGVyRm9yQ2hpbGQo
dGhpcywgY2FsY3VsYXRlTWluaW11bVZhbHVlKHN0eWxlKCktPm1hcmdpbkFmdGVyVXNpbmcoY29u
dGFpbmluZ0Jsb2NrU3R5bGUpLCBjdykpOwogfQogCiBMYXlvdXRVbml0IFJlbmRlckJveDo6Y29u
dGFpbmluZ0Jsb2NrTG9naWNhbFdpZHRoRm9yUG9zaXRpb25lZChjb25zdCBSZW5kZXJCb3hNb2Rl
bE9iamVjdCogY29udGFpbmluZ0Jsb2NrLCBSZW5kZXJSZWdpb24qIHJlZ2lvbiwKQEAgLTI3NTcs
MTAgKzI3NTcsMTAgQEAgdm9pZCBSZW5kZXJCb3g6OmNvbXB1dGVQb3NpdGlvbmVkTG9naWNhbAog
ICAgICAgICAvLyBOT1RFOiAgSXQgaXMgbm90IG5lY2Vzc2FyeSB0byBzb2x2ZSBmb3IgJ3JpZ2h0
JyBpbiB0aGUgb3ZlciBjb25zdHJhaW5lZAogICAgICAgICAvLyBjYXNlIGJlY2F1c2UgdGhlIHZh
bHVlIGlzIG5vdCB1c2VkIGZvciBhbnkgZnVydGhlciBjYWxjdWxhdGlvbnMuCiAKLSAgICAgICAg
bG9naWNhbExlZnRWYWx1ZSA9IGxvZ2ljYWxMZWZ0LmNhbGNWYWx1ZShjb250YWluZXJMb2dpY2Fs
V2lkdGgpOwotICAgICAgICBsb2dpY2FsV2lkdGhWYWx1ZSA9IGNvbXB1dGVDb250ZW50Qm94TG9n
aWNhbFdpZHRoKGxvZ2ljYWxXaWR0aC5jYWxjVmFsdWUoY29udGFpbmVyTG9naWNhbFdpZHRoKSk7
CisgICAgICAgIGxvZ2ljYWxMZWZ0VmFsdWUgPSBjYWxjdWxhdGVWYWx1ZShsb2dpY2FsTGVmdCwg
Y29udGFpbmVyTG9naWNhbFdpZHRoKTsKKyAgICAgICAgbG9naWNhbFdpZHRoVmFsdWUgPSBjb21w
dXRlQ29udGVudEJveExvZ2ljYWxXaWR0aChjYWxjdWxhdGVWYWx1ZShsb2dpY2FsV2lkdGgsIGNv
bnRhaW5lckxvZ2ljYWxXaWR0aCkpOwogCi0gICAgICAgIGNvbnN0IExheW91dFVuaXQgYXZhaWxh
YmxlU3BhY2UgPSBjb250YWluZXJMb2dpY2FsV2lkdGggLSAobG9naWNhbExlZnRWYWx1ZSArIGxv
Z2ljYWxXaWR0aFZhbHVlICsgbG9naWNhbFJpZ2h0LmNhbGNWYWx1ZShjb250YWluZXJMb2dpY2Fs
V2lkdGgpICsgYm9yZGVyc1BsdXNQYWRkaW5nKTsKKyAgICAgICAgY29uc3QgTGF5b3V0VW5pdCBh
dmFpbGFibGVTcGFjZSA9IGNvbnRhaW5lckxvZ2ljYWxXaWR0aCAtIChsb2dpY2FsTGVmdFZhbHVl
ICsgbG9naWNhbFdpZHRoVmFsdWUgKyBjYWxjdWxhdGVWYWx1ZShsb2dpY2FsUmlnaHQsIGNvbnRh
aW5lckxvZ2ljYWxXaWR0aCkgKyBib3JkZXJzUGx1c1BhZGRpbmcpOwogCiAgICAgICAgIC8vIE1h
cmdpbnMgYXJlIG5vdyB0aGUgb25seSB1bmtub3duCiAgICAgICAgIGlmIChtYXJnaW5Mb2dpY2Fs
TGVmdC5pc0F1dG8oKSAmJiBtYXJnaW5Mb2dpY2FsUmlnaHQuaXNBdXRvKCkpIHsKQEAgLTI3ODEs
MTYgKzI3ODEsMTYgQEAgdm9pZCBSZW5kZXJCb3g6OmNvbXB1dGVQb3NpdGlvbmVkTG9naWNhbAog
ICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UgaWYgKG1hcmdpbkxvZ2ljYWxMZWZ0LmlzQXV0
bygpKSB7CiAgICAgICAgICAgICAvLyBTb2x2ZSBmb3IgbGVmdCBtYXJnaW4KLSAgICAgICAgICAg
IG1hcmdpbkxvZ2ljYWxSaWdodFZhbHVlID0gbWFyZ2luTG9naWNhbFJpZ2h0LmNhbGNWYWx1ZShj
b250YWluZXJMb2dpY2FsV2lkdGgpOworICAgICAgICAgICAgbWFyZ2luTG9naWNhbFJpZ2h0VmFs
dWUgPSBjYWxjdWxhdGVWYWx1ZShtYXJnaW5Mb2dpY2FsUmlnaHQsIGNvbnRhaW5lckxvZ2ljYWxX
aWR0aCk7CiAgICAgICAgICAgICBtYXJnaW5Mb2dpY2FsTGVmdFZhbHVlID0gYXZhaWxhYmxlU3Bh
Y2UgLSBtYXJnaW5Mb2dpY2FsUmlnaHRWYWx1ZTsKICAgICAgICAgfSBlbHNlIGlmIChtYXJnaW5M
b2dpY2FsUmlnaHQuaXNBdXRvKCkpIHsKICAgICAgICAgICAgIC8vIFNvbHZlIGZvciByaWdodCBt
YXJnaW4KLSAgICAgICAgICAgIG1hcmdpbkxvZ2ljYWxMZWZ0VmFsdWUgPSBtYXJnaW5Mb2dpY2Fs
TGVmdC5jYWxjVmFsdWUoY29udGFpbmVyTG9naWNhbFdpZHRoKTsKKyAgICAgICAgICAgIG1hcmdp
bkxvZ2ljYWxMZWZ0VmFsdWUgPSBjYWxjdWxhdGVWYWx1ZShtYXJnaW5Mb2dpY2FsTGVmdCwgY29u
dGFpbmVyTG9naWNhbFdpZHRoKTsKICAgICAgICAgICAgIG1hcmdpbkxvZ2ljYWxSaWdodFZhbHVl
ID0gYXZhaWxhYmxlU3BhY2UgLSBtYXJnaW5Mb2dpY2FsTGVmdFZhbHVlOwogICAgICAgICB9IGVs
c2UgewogICAgICAgICAgICAgLy8gT3Zlci1jb25zdHJhaW5lZCwgc29sdmUgZm9yIGxlZnQgaWYg
ZGlyZWN0aW9uIGlzIFJUTAotICAgICAgICAgICAgbWFyZ2luTG9naWNhbExlZnRWYWx1ZSA9IG1h
cmdpbkxvZ2ljYWxMZWZ0LmNhbGNWYWx1ZShjb250YWluZXJMb2dpY2FsV2lkdGgpOwotICAgICAg
ICAgICAgbWFyZ2luTG9naWNhbFJpZ2h0VmFsdWUgPSBtYXJnaW5Mb2dpY2FsUmlnaHQuY2FsY1Zh
bHVlKGNvbnRhaW5lckxvZ2ljYWxXaWR0aCk7CisgICAgICAgICAgICBtYXJnaW5Mb2dpY2FsTGVm
dFZhbHVlID0gY2FsY3VsYXRlVmFsdWUobWFyZ2luTG9naWNhbExlZnQsIGNvbnRhaW5lckxvZ2lj
YWxXaWR0aCk7CisgICAgICAgICAgICBtYXJnaW5Mb2dpY2FsUmlnaHRWYWx1ZSA9IGNhbGN1bGF0
ZVZhbHVlKG1hcmdpbkxvZ2ljYWxSaWdodCwgY29udGFpbmVyTG9naWNhbFdpZHRoKTsKIAogICAg
ICAgICAgICAgLy8gVXNlIHRoZSBjb250YWluaW5nIGJsb2NrJ3MgZGlyZWN0aW9uIHJhdGhlciB0
aGFuIHRoZSBwYXJlbnQgYmxvY2sncwogICAgICAgICAgICAgLy8gcGVyIENTUyAyLjEgcmVmZXJl
bmNlIHRlc3QgYWJzcG9zLW5vbi1yZXBsYWNlZC13aWR0aC1tYXJnaW4tMDAwLgpAQCAtMjg0MCw4
ICsyODQwLDggQEAgdm9pZCBSZW5kZXJCb3g6OmNvbXB1dGVQb3NpdGlvbmVkTG9naWNhbAogICAg
ICAgICAvLyBiZWNhdXNlIHRoZSB2YWx1ZSBpcyBub3QgdXNlZCBmb3IgYW55IGZ1cnRoZXIgY2Fs
Y3VsYXRpb25zLgogCiAgICAgICAgIC8vIENhbGN1bGF0ZSBtYXJnaW5zLCAnYXV0bycgbWFyZ2lu
cyBhcmUgaWdub3JlZC4KLSAgICAgICAgbWFyZ2luTG9naWNhbExlZnRWYWx1ZSA9IG1hcmdpbkxv
Z2ljYWxMZWZ0LmNhbGNNaW5WYWx1ZShjb250YWluZXJMb2dpY2FsV2lkdGgpOwotICAgICAgICBt
YXJnaW5Mb2dpY2FsUmlnaHRWYWx1ZSA9IG1hcmdpbkxvZ2ljYWxSaWdodC5jYWxjTWluVmFsdWUo
Y29udGFpbmVyTG9naWNhbFdpZHRoKTsKKyAgICAgICAgbWFyZ2luTG9naWNhbExlZnRWYWx1ZSA9
IGNhbGN1bGF0ZU1pbmltdW1WYWx1ZShtYXJnaW5Mb2dpY2FsTGVmdCwgY29udGFpbmVyTG9naWNh
bFdpZHRoKTsKKyAgICAgICAgbWFyZ2luTG9naWNhbFJpZ2h0VmFsdWUgPSBjYWxjdWxhdGVNaW5p
bXVtVmFsdWUobWFyZ2luTG9naWNhbFJpZ2h0LCBjb250YWluZXJMb2dpY2FsV2lkdGgpOwogCiAg
ICAgICAgIGNvbnN0IExheW91dFVuaXQgYXZhaWxhYmxlU3BhY2UgPSBjb250YWluZXJMb2dpY2Fs
V2lkdGggLSAobWFyZ2luTG9naWNhbExlZnRWYWx1ZSArIG1hcmdpbkxvZ2ljYWxSaWdodFZhbHVl
ICsgYm9yZGVyc1BsdXNQYWRkaW5nKTsKIApAQCAtMjg0OSw3ICsyODQ5LDcgQEAgdm9pZCBSZW5k
ZXJCb3g6OmNvbXB1dGVQb3NpdGlvbmVkTG9naWNhbAogICAgICAgICAvLyBVc2UgcnVsZS9jYXNl
IHRoYXQgYXBwbGllcy4KICAgICAgICAgaWYgKGxvZ2ljYWxMZWZ0SXNBdXRvICYmIGxvZ2ljYWxX
aWR0aElzQXV0byAmJiAhbG9naWNhbFJpZ2h0SXNBdXRvKSB7CiAgICAgICAgICAgICAvLyBSVUxF
IDE6ICh1c2Ugc2hyaW5rLXRvLWZpdCBmb3Igd2lkdGgsIGFuZCBzb2x2ZSBvZiBsZWZ0KQotICAg
ICAgICAgICAgTGF5b3V0VW5pdCBsb2dpY2FsUmlnaHRWYWx1ZSA9IGxvZ2ljYWxSaWdodC5jYWxj
VmFsdWUoY29udGFpbmVyTG9naWNhbFdpZHRoKTsKKyAgICAgICAgICAgIExheW91dFVuaXQgbG9n
aWNhbFJpZ2h0VmFsdWUgPSBjYWxjdWxhdGVWYWx1ZShsb2dpY2FsUmlnaHQsIGNvbnRhaW5lckxv
Z2ljYWxXaWR0aCk7CiAKICAgICAgICAgICAgIC8vIEZJWE1FOiB3b3VsZCBpdCBiZSBiZXR0ZXIg
dG8gaGF2ZSBzaHJpbmstdG8tZml0IGluIG9uZSBzdGVwPwogICAgICAgICAgICAgTGF5b3V0VW5p
dCBwcmVmZXJyZWRXaWR0aCA9IG1heFByZWZlcnJlZExvZ2ljYWxXaWR0aCgpIC0gYm9yZGVyc1Bs
dXNQYWRkaW5nOwpAQCAtMjg1OSw3ICsyODU5LDcgQEAgdm9pZCBSZW5kZXJCb3g6OmNvbXB1dGVQ
b3NpdGlvbmVkTG9naWNhbAogICAgICAgICAgICAgbG9naWNhbExlZnRWYWx1ZSA9IGF2YWlsYWJs
ZVNwYWNlIC0gKGxvZ2ljYWxXaWR0aFZhbHVlICsgbG9naWNhbFJpZ2h0VmFsdWUpOwogICAgICAg
ICB9IGVsc2UgaWYgKCFsb2dpY2FsTGVmdElzQXV0byAmJiBsb2dpY2FsV2lkdGhJc0F1dG8gJiYg
bG9naWNhbFJpZ2h0SXNBdXRvKSB7CiAgICAgICAgICAgICAvLyBSVUxFIDM6ICh1c2Ugc2hyaW5r
LXRvLWZpdCBmb3Igd2lkdGgsIGFuZCBubyBuZWVkIHNvbHZlIG9mIHJpZ2h0KQotICAgICAgICAg
ICAgbG9naWNhbExlZnRWYWx1ZSA9IGxvZ2ljYWxMZWZ0LmNhbGNWYWx1ZShjb250YWluZXJMb2dp
Y2FsV2lkdGgpOworICAgICAgICAgICAgbG9naWNhbExlZnRWYWx1ZSA9IGNhbGN1bGF0ZVZhbHVl
KGxvZ2ljYWxMZWZ0LCBjb250YWluZXJMb2dpY2FsV2lkdGgpOwogCiAgICAgICAgICAgICAvLyBG
SVhNRTogd291bGQgaXQgYmUgYmV0dGVyIHRvIGhhdmUgc2hyaW5rLXRvLWZpdCBpbiBvbmUgc3Rl
cD8KICAgICAgICAgICAgIExheW91dFVuaXQgcHJlZmVycmVkV2lkdGggPSBtYXhQcmVmZXJyZWRM
b2dpY2FsV2lkdGgoKSAtIGJvcmRlcnNQbHVzUGFkZGluZzsKQEAgLTI4NjgsMTYgKzI4NjgsMTYg
QEAgdm9pZCBSZW5kZXJCb3g6OmNvbXB1dGVQb3NpdGlvbmVkTG9naWNhbAogICAgICAgICAgICAg
bG9naWNhbFdpZHRoVmFsdWUgPSBtaW4obWF4KHByZWZlcnJlZE1pbldpZHRoLCBhdmFpbGFibGVX
aWR0aCksIHByZWZlcnJlZFdpZHRoKTsKICAgICAgICAgfSBlbHNlIGlmIChsb2dpY2FsTGVmdElz
QXV0byAmJiAhbG9naWNhbFdpZHRoSXNBdXRvICYmICFsb2dpY2FsUmlnaHRJc0F1dG8pIHsKICAg
ICAgICAgICAgIC8vIFJVTEUgNDogKHNvbHZlIGZvciBsZWZ0KQotICAgICAgICAgICAgbG9naWNh
bFdpZHRoVmFsdWUgPSBjb21wdXRlQ29udGVudEJveExvZ2ljYWxXaWR0aChsb2dpY2FsV2lkdGgu
Y2FsY1ZhbHVlKGNvbnRhaW5lckxvZ2ljYWxXaWR0aCkpOwotICAgICAgICAgICAgbG9naWNhbExl
ZnRWYWx1ZSA9IGF2YWlsYWJsZVNwYWNlIC0gKGxvZ2ljYWxXaWR0aFZhbHVlICsgbG9naWNhbFJp
Z2h0LmNhbGNWYWx1ZShjb250YWluZXJMb2dpY2FsV2lkdGgpKTsKKyAgICAgICAgICAgIGxvZ2lj
YWxXaWR0aFZhbHVlID0gY29tcHV0ZUNvbnRlbnRCb3hMb2dpY2FsV2lkdGgoY2FsY3VsYXRlVmFs
dWUobG9naWNhbFdpZHRoLCBjb250YWluZXJMb2dpY2FsV2lkdGgpKTsKKyAgICAgICAgICAgIGxv
Z2ljYWxMZWZ0VmFsdWUgPSBhdmFpbGFibGVTcGFjZSAtIChsb2dpY2FsV2lkdGhWYWx1ZSArIGNh
bGN1bGF0ZVZhbHVlKGxvZ2ljYWxSaWdodCwgY29udGFpbmVyTG9naWNhbFdpZHRoKSk7CiAgICAg
ICAgIH0gZWxzZSBpZiAoIWxvZ2ljYWxMZWZ0SXNBdXRvICYmIGxvZ2ljYWxXaWR0aElzQXV0byAm
JiAhbG9naWNhbFJpZ2h0SXNBdXRvKSB7CiAgICAgICAgICAgICAvLyBSVUxFIDU6IChzb2x2ZSBm
b3Igd2lkdGgpCi0gICAgICAgICAgICBsb2dpY2FsTGVmdFZhbHVlID0gbG9naWNhbExlZnQuY2Fs
Y1ZhbHVlKGNvbnRhaW5lckxvZ2ljYWxXaWR0aCk7Ci0gICAgICAgICAgICBsb2dpY2FsV2lkdGhW
YWx1ZSA9IGF2YWlsYWJsZVNwYWNlIC0gKGxvZ2ljYWxMZWZ0VmFsdWUgKyBsb2dpY2FsUmlnaHQu
Y2FsY1ZhbHVlKGNvbnRhaW5lckxvZ2ljYWxXaWR0aCkpOworICAgICAgICAgICAgbG9naWNhbExl
ZnRWYWx1ZSA9IGNhbGN1bGF0ZVZhbHVlKGxvZ2ljYWxMZWZ0LCBjb250YWluZXJMb2dpY2FsV2lk
dGgpOworICAgICAgICAgICAgbG9naWNhbFdpZHRoVmFsdWUgPSBhdmFpbGFibGVTcGFjZSAtIChs
b2dpY2FsTGVmdFZhbHVlICsgY2FsY3VsYXRlVmFsdWUobG9naWNhbFJpZ2h0LCBjb250YWluZXJM
b2dpY2FsV2lkdGgpKTsKICAgICAgICAgfSBlbHNlIGlmICghbG9naWNhbExlZnRJc0F1dG8gJiYg
IWxvZ2ljYWxXaWR0aElzQXV0byAmJiBsb2dpY2FsUmlnaHRJc0F1dG8pIHsKICAgICAgICAgICAg
IC8vIFJVTEUgNjogKG5vIG5lZWQgc29sdmUgZm9yIHJpZ2h0KQotICAgICAgICAgICAgbG9naWNh
bExlZnRWYWx1ZSA9IGxvZ2ljYWxMZWZ0LmNhbGNWYWx1ZShjb250YWluZXJMb2dpY2FsV2lkdGgp
OwotICAgICAgICAgICAgbG9naWNhbFdpZHRoVmFsdWUgPSBjb21wdXRlQ29udGVudEJveExvZ2lj
YWxXaWR0aChsb2dpY2FsV2lkdGguY2FsY1ZhbHVlKGNvbnRhaW5lckxvZ2ljYWxXaWR0aCkpOwor
ICAgICAgICAgICAgbG9naWNhbExlZnRWYWx1ZSA9IGNhbGN1bGF0ZVZhbHVlKGxvZ2ljYWxMZWZ0
LCBjb250YWluZXJMb2dpY2FsV2lkdGgpOworICAgICAgICAgICAgbG9naWNhbFdpZHRoVmFsdWUg
PSBjb21wdXRlQ29udGVudEJveExvZ2ljYWxXaWR0aChjYWxjdWxhdGVWYWx1ZShsb2dpY2FsV2lk
dGgsIGNvbnRhaW5lckxvZ2ljYWxXaWR0aCkpOwogICAgICAgICB9CiAgICAgfQogCkBAIC0zMDky
LDEwICszMDkyLDEwIEBAIHZvaWQgUmVuZGVyQm94Ojpjb21wdXRlUG9zaXRpb25lZExvZ2ljYWwK
ICAgICAgICAgLy8gTk9URTogIEl0IGlzIG5vdCBuZWNlc3NhcnkgdG8gc29sdmUgZm9yICdib3R0
b20nIGluIHRoZSBvdmVyIGNvbnN0cmFpbmVkCiAgICAgICAgIC8vIGNhc2UgYmVjYXVzZSB0aGUg
dmFsdWUgaXMgbm90IHVzZWQgZm9yIGFueSBmdXJ0aGVyIGNhbGN1bGF0aW9ucy4KIAotICAgICAg
ICBsb2dpY2FsSGVpZ2h0VmFsdWUgPSBjb21wdXRlQ29udGVudEJveExvZ2ljYWxIZWlnaHQobG9n
aWNhbEhlaWdodExlbmd0aC5jYWxjVmFsdWUoY29udGFpbmVyTG9naWNhbEhlaWdodCkpOwotICAg
ICAgICBsb2dpY2FsVG9wVmFsdWUgPSBsb2dpY2FsVG9wLmNhbGNWYWx1ZShjb250YWluZXJMb2dp
Y2FsSGVpZ2h0KTsKKyAgICAgICAgbG9naWNhbEhlaWdodFZhbHVlID0gY29tcHV0ZUNvbnRlbnRC
b3hMb2dpY2FsSGVpZ2h0KGNhbGN1bGF0ZVZhbHVlKGxvZ2ljYWxIZWlnaHRMZW5ndGgsIGNvbnRh
aW5lckxvZ2ljYWxIZWlnaHQpKTsKKyAgICAgICAgbG9naWNhbFRvcFZhbHVlID0gY2FsY3VsYXRl
VmFsdWUobG9naWNhbFRvcCwgY29udGFpbmVyTG9naWNhbEhlaWdodCk7CiAKLSAgICAgICAgY29u
c3QgTGF5b3V0VW5pdCBhdmFpbGFibGVTcGFjZSA9IGNvbnRhaW5lckxvZ2ljYWxIZWlnaHQgLSAo
bG9naWNhbFRvcFZhbHVlICsgbG9naWNhbEhlaWdodFZhbHVlICsgbG9naWNhbEJvdHRvbS5jYWxj
VmFsdWUoY29udGFpbmVyTG9naWNhbEhlaWdodCkgKyBib3JkZXJzUGx1c1BhZGRpbmcpOworICAg
ICAgICBjb25zdCBMYXlvdXRVbml0IGF2YWlsYWJsZVNwYWNlID0gY29udGFpbmVyTG9naWNhbEhl
aWdodCAtIChsb2dpY2FsVG9wVmFsdWUgKyBsb2dpY2FsSGVpZ2h0VmFsdWUgKyBjYWxjdWxhdGVW
YWx1ZShsb2dpY2FsQm90dG9tLCBjb250YWluZXJMb2dpY2FsSGVpZ2h0KSArIGJvcmRlcnNQbHVz
UGFkZGluZyk7CiAKICAgICAgICAgLy8gTWFyZ2lucyBhcmUgbm93IHRoZSBvbmx5IHVua25vd24K
ICAgICAgICAgaWYgKG1hcmdpbkJlZm9yZS5pc0F1dG8oKSAmJiBtYXJnaW5BZnRlci5pc0F1dG8o
KSkgewpAQCAtMzEwNSwxNiArMzEwNSwxNiBAQCB2b2lkIFJlbmRlckJveDo6Y29tcHV0ZVBvc2l0
aW9uZWRMb2dpY2FsCiAgICAgICAgICAgICBtYXJnaW5BZnRlclZhbHVlID0gYXZhaWxhYmxlU3Bh
Y2UgLSBtYXJnaW5CZWZvcmVWYWx1ZTsgLy8gYWNjb3VudCBmb3Igb2RkIHZhbHVlZCBkaWZmZXJl
bmNlcwogICAgICAgICB9IGVsc2UgaWYgKG1hcmdpbkJlZm9yZS5pc0F1dG8oKSkgewogICAgICAg
ICAgICAgLy8gU29sdmUgZm9yIHRvcCBtYXJnaW4KLSAgICAgICAgICAgIG1hcmdpbkFmdGVyVmFs
dWUgPSBtYXJnaW5BZnRlci5jYWxjVmFsdWUoY29udGFpbmVyTG9naWNhbEhlaWdodCk7CisgICAg
ICAgICAgICBtYXJnaW5BZnRlclZhbHVlID0gY2FsY3VsYXRlVmFsdWUobWFyZ2luQWZ0ZXIsIGNv
bnRhaW5lckxvZ2ljYWxIZWlnaHQpOwogICAgICAgICAgICAgbWFyZ2luQmVmb3JlVmFsdWUgPSBh
dmFpbGFibGVTcGFjZSAtIG1hcmdpbkFmdGVyVmFsdWU7CiAgICAgICAgIH0gZWxzZSBpZiAobWFy
Z2luQWZ0ZXIuaXNBdXRvKCkpIHsKICAgICAgICAgICAgIC8vIFNvbHZlIGZvciBib3R0b20gbWFy
Z2luCi0gICAgICAgICAgICBtYXJnaW5CZWZvcmVWYWx1ZSA9IG1hcmdpbkJlZm9yZS5jYWxjVmFs
dWUoY29udGFpbmVyTG9naWNhbEhlaWdodCk7CisgICAgICAgICAgICBtYXJnaW5CZWZvcmVWYWx1
ZSA9IGNhbGN1bGF0ZVZhbHVlKG1hcmdpbkJlZm9yZSwgY29udGFpbmVyTG9naWNhbEhlaWdodCk7
CiAgICAgICAgICAgICBtYXJnaW5BZnRlclZhbHVlID0gYXZhaWxhYmxlU3BhY2UgLSBtYXJnaW5C
ZWZvcmVWYWx1ZTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIC8vIE92ZXItY29uc3Ry
YWluZWQsIChubyBuZWVkIHNvbHZlIGZvciBib3R0b20pCi0gICAgICAgICAgICBtYXJnaW5CZWZv
cmVWYWx1ZSA9IG1hcmdpbkJlZm9yZS5jYWxjVmFsdWUoY29udGFpbmVyTG9naWNhbEhlaWdodCk7
Ci0gICAgICAgICAgICBtYXJnaW5BZnRlclZhbHVlID0gbWFyZ2luQWZ0ZXIuY2FsY1ZhbHVlKGNv
bnRhaW5lckxvZ2ljYWxIZWlnaHQpOworICAgICAgICAgICAgbWFyZ2luQmVmb3JlVmFsdWUgPSBj
YWxjdWxhdGVWYWx1ZShtYXJnaW5CZWZvcmUsIGNvbnRhaW5lckxvZ2ljYWxIZWlnaHQpOworICAg
ICAgICAgICAgbWFyZ2luQWZ0ZXJWYWx1ZSA9IGNhbGN1bGF0ZVZhbHVlKG1hcmdpbkFmdGVyLCBj
b250YWluZXJMb2dpY2FsSGVpZ2h0KTsKICAgICAgICAgfQogICAgIH0gZWxzZSB7CiAgICAgICAg
IC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0qXApAQCAtMzE0Myw4ICszMTQzLDggQEAgdm9pZCBSZW5kZXJCb3g6OmNv
bXB1dGVQb3NpdGlvbmVkTG9naWNhbAogICAgICAgICAvLyBiZWNhdXNlIHRoZSB2YWx1ZSBpcyBu
b3QgdXNlZCBmb3IgYW55IGZ1cnRoZXIgY2FsY3VsYXRpb25zLgogCiAgICAgICAgIC8vIENhbGN1
bGF0ZSBtYXJnaW5zLCAnYXV0bycgbWFyZ2lucyBhcmUgaWdub3JlZC4KLSAgICAgICAgbWFyZ2lu
QmVmb3JlVmFsdWUgPSBtYXJnaW5CZWZvcmUuY2FsY01pblZhbHVlKGNvbnRhaW5lckxvZ2ljYWxI
ZWlnaHQpOwotICAgICAgICBtYXJnaW5BZnRlclZhbHVlID0gbWFyZ2luQWZ0ZXIuY2FsY01pblZh
bHVlKGNvbnRhaW5lckxvZ2ljYWxIZWlnaHQpOworICAgICAgICBtYXJnaW5CZWZvcmVWYWx1ZSA9
IGNhbGN1bGF0ZU1pbmltdW1WYWx1ZShtYXJnaW5CZWZvcmUsIGNvbnRhaW5lckxvZ2ljYWxIZWln
aHQpOworICAgICAgICBtYXJnaW5BZnRlclZhbHVlID0gY2FsY3VsYXRlTWluaW11bVZhbHVlKG1h
cmdpbkFmdGVyLCBjb250YWluZXJMb2dpY2FsSGVpZ2h0KTsKIAogICAgICAgICBjb25zdCBMYXlv
dXRVbml0IGF2YWlsYWJsZVNwYWNlID0gY29udGFpbmVyTG9naWNhbEhlaWdodCAtIChtYXJnaW5C
ZWZvcmVWYWx1ZSArIG1hcmdpbkFmdGVyVmFsdWUgKyBib3JkZXJzUGx1c1BhZGRpbmcpOwogCkBA
IC0zMTUyLDIzICszMTUyLDIzIEBAIHZvaWQgUmVuZGVyQm94Ojpjb21wdXRlUG9zaXRpb25lZExv
Z2ljYWwKICAgICAgICAgaWYgKGxvZ2ljYWxUb3BJc0F1dG8gJiYgbG9naWNhbEhlaWdodElzQXV0
byAmJiAhbG9naWNhbEJvdHRvbUlzQXV0bykgewogICAgICAgICAgICAgLy8gUlVMRSAxOiAoaGVp
Z2h0IGlzIGNvbnRlbnQgYmFzZWQsIHNvbHZlIG9mIHRvcCkKICAgICAgICAgICAgIGxvZ2ljYWxI
ZWlnaHRWYWx1ZSA9IGNvbnRlbnRMb2dpY2FsSGVpZ2h0OwotICAgICAgICAgICAgbG9naWNhbFRv
cFZhbHVlID0gYXZhaWxhYmxlU3BhY2UgLSAobG9naWNhbEhlaWdodFZhbHVlICsgbG9naWNhbEJv
dHRvbS5jYWxjVmFsdWUoY29udGFpbmVyTG9naWNhbEhlaWdodCkpOworICAgICAgICAgICAgbG9n
aWNhbFRvcFZhbHVlID0gYXZhaWxhYmxlU3BhY2UgLSAobG9naWNhbEhlaWdodFZhbHVlICsgY2Fs
Y3VsYXRlVmFsdWUobG9naWNhbEJvdHRvbSwgY29udGFpbmVyTG9naWNhbEhlaWdodCkpOwogICAg
ICAgICB9IGVsc2UgaWYgKCFsb2dpY2FsVG9wSXNBdXRvICYmIGxvZ2ljYWxIZWlnaHRJc0F1dG8g
JiYgbG9naWNhbEJvdHRvbUlzQXV0bykgewogICAgICAgICAgICAgLy8gUlVMRSAzOiAoaGVpZ2h0
IGlzIGNvbnRlbnQgYmFzZWQsIG5vIG5lZWQgc29sdmUgb2YgYm90dG9tKQotICAgICAgICAgICAg
bG9naWNhbFRvcFZhbHVlID0gbG9naWNhbFRvcC5jYWxjVmFsdWUoY29udGFpbmVyTG9naWNhbEhl
aWdodCk7CisgICAgICAgICAgICBsb2dpY2FsVG9wVmFsdWUgPSBjYWxjdWxhdGVWYWx1ZShsb2dp
Y2FsVG9wLCBjb250YWluZXJMb2dpY2FsSGVpZ2h0KTsKICAgICAgICAgICAgIGxvZ2ljYWxIZWln
aHRWYWx1ZSA9IGNvbnRlbnRMb2dpY2FsSGVpZ2h0OwogICAgICAgICB9IGVsc2UgaWYgKGxvZ2lj
YWxUb3BJc0F1dG8gJiYgIWxvZ2ljYWxIZWlnaHRJc0F1dG8gJiYgIWxvZ2ljYWxCb3R0b21Jc0F1
dG8pIHsKICAgICAgICAgICAgIC8vIFJVTEUgNDogKHNvbHZlIG9mIHRvcCkKLSAgICAgICAgICAg
IGxvZ2ljYWxIZWlnaHRWYWx1ZSA9IGNvbXB1dGVDb250ZW50Qm94TG9naWNhbEhlaWdodChsb2dp
Y2FsSGVpZ2h0TGVuZ3RoLmNhbGNWYWx1ZShjb250YWluZXJMb2dpY2FsSGVpZ2h0KSk7Ci0gICAg
ICAgICAgICBsb2dpY2FsVG9wVmFsdWUgPSBhdmFpbGFibGVTcGFjZSAtIChsb2dpY2FsSGVpZ2h0
VmFsdWUgKyBsb2dpY2FsQm90dG9tLmNhbGNWYWx1ZShjb250YWluZXJMb2dpY2FsSGVpZ2h0KSk7
CisgICAgICAgICAgICBsb2dpY2FsSGVpZ2h0VmFsdWUgPSBjb21wdXRlQ29udGVudEJveExvZ2lj
YWxIZWlnaHQoY2FsY3VsYXRlVmFsdWUobG9naWNhbEhlaWdodExlbmd0aCwgY29udGFpbmVyTG9n
aWNhbEhlaWdodCkpOworICAgICAgICAgICAgbG9naWNhbFRvcFZhbHVlID0gYXZhaWxhYmxlU3Bh
Y2UgLSAobG9naWNhbEhlaWdodFZhbHVlICsgY2FsY3VsYXRlVmFsdWUobG9naWNhbEJvdHRvbSwg
Y29udGFpbmVyTG9naWNhbEhlaWdodCkpOwogICAgICAgICB9IGVsc2UgaWYgKCFsb2dpY2FsVG9w
SXNBdXRvICYmIGxvZ2ljYWxIZWlnaHRJc0F1dG8gJiYgIWxvZ2ljYWxCb3R0b21Jc0F1dG8pIHsK
ICAgICAgICAgICAgIC8vIFJVTEUgNTogKHNvbHZlIG9mIGhlaWdodCkKLSAgICAgICAgICAgIGxv
Z2ljYWxUb3BWYWx1ZSA9IGxvZ2ljYWxUb3AuY2FsY1ZhbHVlKGNvbnRhaW5lckxvZ2ljYWxIZWln
aHQpOwotICAgICAgICAgICAgbG9naWNhbEhlaWdodFZhbHVlID0gbWF4PExheW91dFVuaXQ+KDAs
IGF2YWlsYWJsZVNwYWNlIC0gKGxvZ2ljYWxUb3BWYWx1ZSArIGxvZ2ljYWxCb3R0b20uY2FsY1Zh
bHVlKGNvbnRhaW5lckxvZ2ljYWxIZWlnaHQpKSk7CisgICAgICAgICAgICBsb2dpY2FsVG9wVmFs
dWUgPSBjYWxjdWxhdGVWYWx1ZShsb2dpY2FsVG9wLCBjb250YWluZXJMb2dpY2FsSGVpZ2h0KTsK
KyAgICAgICAgICAgIGxvZ2ljYWxIZWlnaHRWYWx1ZSA9IG1heDxMYXlvdXRVbml0PigwLCBhdmFp
bGFibGVTcGFjZSAtIChsb2dpY2FsVG9wVmFsdWUgKyBjYWxjdWxhdGVWYWx1ZShsb2dpY2FsQm90
dG9tLCBjb250YWluZXJMb2dpY2FsSGVpZ2h0KSkpOwogICAgICAgICB9IGVsc2UgaWYgKCFsb2dp
Y2FsVG9wSXNBdXRvICYmICFsb2dpY2FsSGVpZ2h0SXNBdXRvICYmIGxvZ2ljYWxCb3R0b21Jc0F1
dG8pIHsKICAgICAgICAgICAgIC8vIFJVTEUgNjogKG5vIG5lZWQgc29sdmUgb2YgYm90dG9tKQot
ICAgICAgICAgICAgbG9naWNhbEhlaWdodFZhbHVlID0gY29tcHV0ZUNvbnRlbnRCb3hMb2dpY2Fs
SGVpZ2h0KGxvZ2ljYWxIZWlnaHRMZW5ndGguY2FsY1ZhbHVlKGNvbnRhaW5lckxvZ2ljYWxIZWln
aHQpKTsKLSAgICAgICAgICAgIGxvZ2ljYWxUb3BWYWx1ZSA9IGxvZ2ljYWxUb3AuY2FsY1ZhbHVl
KGNvbnRhaW5lckxvZ2ljYWxIZWlnaHQpOworICAgICAgICAgICAgbG9naWNhbEhlaWdodFZhbHVl
ID0gY29tcHV0ZUNvbnRlbnRCb3hMb2dpY2FsSGVpZ2h0KGNhbGN1bGF0ZVZhbHVlKGxvZ2ljYWxI
ZWlnaHRMZW5ndGgsIGNvbnRhaW5lckxvZ2ljYWxIZWlnaHQpKTsKKyAgICAgICAgICAgIGxvZ2lj
YWxUb3BWYWx1ZSA9IGNhbGN1bGF0ZVZhbHVlKGxvZ2ljYWxUb3AsIGNvbnRhaW5lckxvZ2ljYWxI
ZWlnaHQpOwogICAgICAgICB9CiAgICAgfQogCkBAIC0zMjQ5LDggKzMyNDksOCBAQCB2b2lkIFJl
bmRlckJveDo6Y29tcHV0ZVBvc2l0aW9uZWRMb2dpY2FsCiAgICAgICAgIC8vICdsZWZ0JyBhbmQg
J3JpZ2h0JyBjYW5ub3QgYmUgJ2F1dG8nIGR1ZSB0byBzdGVwIDMKICAgICAgICAgQVNTRVJUKCEo
bG9naWNhbExlZnQuaXNBdXRvKCkgJiYgbG9naWNhbFJpZ2h0LmlzQXV0bygpKSk7CiAKLSAgICAg
ICAgbG9naWNhbExlZnRWYWx1ZSA9IGxvZ2ljYWxMZWZ0LmNhbGNWYWx1ZShjb250YWluZXJMb2dp
Y2FsV2lkdGgpOwotICAgICAgICBsb2dpY2FsUmlnaHRWYWx1ZSA9IGxvZ2ljYWxSaWdodC5jYWxj
VmFsdWUoY29udGFpbmVyTG9naWNhbFdpZHRoKTsKKyAgICAgICAgbG9naWNhbExlZnRWYWx1ZSA9
IGNhbGN1bGF0ZVZhbHVlKGxvZ2ljYWxMZWZ0LCBjb250YWluZXJMb2dpY2FsV2lkdGgpOworICAg
ICAgICBsb2dpY2FsUmlnaHRWYWx1ZSA9IGNhbGN1bGF0ZVZhbHVlKGxvZ2ljYWxSaWdodCwgY29u
dGFpbmVyTG9naWNhbFdpZHRoKTsKIAogICAgICAgICBMYXlvdXRVbml0IGRpZmZlcmVuY2UgPSBh
dmFpbGFibGVTcGFjZSAtIChsb2dpY2FsTGVmdFZhbHVlICsgbG9naWNhbFJpZ2h0VmFsdWUpOwog
ICAgICAgICBpZiAoZGlmZmVyZW5jZSA+IDApIHsKQEAgLTMyNzMsMzkgKzMyNzMsMzkgQEAgdm9p
ZCBSZW5kZXJCb3g6OmNvbXB1dGVQb3NpdGlvbmVkTG9naWNhbAogICAgICAqICAgIHRoYXQgdmFs
dWUuCiAgICAgXCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAgICAgfSBlbHNlIGlmIChsb2dpY2FsTGVmdC5p
c0F1dG8oKSkgewotICAgICAgICBtYXJnaW5Mb2dpY2FsTGVmdEFsaWFzID0gbWFyZ2luTG9naWNh
bExlZnQuY2FsY1ZhbHVlKGNvbnRhaW5lckxvZ2ljYWxXaWR0aCk7Ci0gICAgICAgIG1hcmdpbkxv
Z2ljYWxSaWdodEFsaWFzID0gbWFyZ2luTG9naWNhbFJpZ2h0LmNhbGNWYWx1ZShjb250YWluZXJM
b2dpY2FsV2lkdGgpOwotICAgICAgICBsb2dpY2FsUmlnaHRWYWx1ZSA9IGxvZ2ljYWxSaWdodC5j
YWxjVmFsdWUoY29udGFpbmVyTG9naWNhbFdpZHRoKTsKKyAgICAgICAgbWFyZ2luTG9naWNhbExl
ZnRBbGlhcyA9IGNhbGN1bGF0ZVZhbHVlKG1hcmdpbkxvZ2ljYWxMZWZ0LCBjb250YWluZXJMb2dp
Y2FsV2lkdGgpOworICAgICAgICBtYXJnaW5Mb2dpY2FsUmlnaHRBbGlhcyA9IGNhbGN1bGF0ZVZh
bHVlKG1hcmdpbkxvZ2ljYWxSaWdodCwgY29udGFpbmVyTG9naWNhbFdpZHRoKTsKKyAgICAgICAg
bG9naWNhbFJpZ2h0VmFsdWUgPSBjYWxjdWxhdGVWYWx1ZShsb2dpY2FsUmlnaHQsIGNvbnRhaW5l
ckxvZ2ljYWxXaWR0aCk7CiAKICAgICAgICAgLy8gU29sdmUgZm9yICdsZWZ0JwogICAgICAgICBs
b2dpY2FsTGVmdFZhbHVlID0gYXZhaWxhYmxlU3BhY2UgLSAobG9naWNhbFJpZ2h0VmFsdWUgKyBt
YXJnaW5Mb2dpY2FsTGVmdEFsaWFzICsgbWFyZ2luTG9naWNhbFJpZ2h0QWxpYXMpOwogICAgIH0g
ZWxzZSBpZiAobG9naWNhbFJpZ2h0LmlzQXV0bygpKSB7Ci0gICAgICAgIG1hcmdpbkxvZ2ljYWxM
ZWZ0QWxpYXMgPSBtYXJnaW5Mb2dpY2FsTGVmdC5jYWxjVmFsdWUoY29udGFpbmVyTG9naWNhbFdp
ZHRoKTsKLSAgICAgICAgbWFyZ2luTG9naWNhbFJpZ2h0QWxpYXMgPSBtYXJnaW5Mb2dpY2FsUmln
aHQuY2FsY1ZhbHVlKGNvbnRhaW5lckxvZ2ljYWxXaWR0aCk7Ci0gICAgICAgIGxvZ2ljYWxMZWZ0
VmFsdWUgPSBsb2dpY2FsTGVmdC5jYWxjVmFsdWUoY29udGFpbmVyTG9naWNhbFdpZHRoKTsKKyAg
ICAgICAgbWFyZ2luTG9naWNhbExlZnRBbGlhcyA9IGNhbGN1bGF0ZVZhbHVlKG1hcmdpbkxvZ2lj
YWxMZWZ0LCBjb250YWluZXJMb2dpY2FsV2lkdGgpOworICAgICAgICBtYXJnaW5Mb2dpY2FsUmln
aHRBbGlhcyA9IGNhbGN1bGF0ZVZhbHVlKG1hcmdpbkxvZ2ljYWxSaWdodCwgY29udGFpbmVyTG9n
aWNhbFdpZHRoKTsKKyAgICAgICAgbG9naWNhbExlZnRWYWx1ZSA9IGNhbGN1bGF0ZVZhbHVlKGxv
Z2ljYWxMZWZ0LCBjb250YWluZXJMb2dpY2FsV2lkdGgpOwogCiAgICAgICAgIC8vIFNvbHZlIGZv
ciAncmlnaHQnCiAgICAgICAgIGxvZ2ljYWxSaWdodFZhbHVlID0gYXZhaWxhYmxlU3BhY2UgLSAo
bG9naWNhbExlZnRWYWx1ZSArIG1hcmdpbkxvZ2ljYWxMZWZ0QWxpYXMgKyBtYXJnaW5Mb2dpY2Fs
UmlnaHRBbGlhcyk7CiAgICAgfSBlbHNlIGlmIChtYXJnaW5Mb2dpY2FsTGVmdC5pc0F1dG8oKSkg
ewotICAgICAgICBtYXJnaW5Mb2dpY2FsUmlnaHRBbGlhcyA9IG1hcmdpbkxvZ2ljYWxSaWdodC5j
YWxjVmFsdWUoY29udGFpbmVyTG9naWNhbFdpZHRoKTsKLSAgICAgICAgbG9naWNhbExlZnRWYWx1
ZSA9IGxvZ2ljYWxMZWZ0LmNhbGNWYWx1ZShjb250YWluZXJMb2dpY2FsV2lkdGgpOwotICAgICAg
ICBsb2dpY2FsUmlnaHRWYWx1ZSA9IGxvZ2ljYWxSaWdodC5jYWxjVmFsdWUoY29udGFpbmVyTG9n
aWNhbFdpZHRoKTsKKyAgICAgICAgbWFyZ2luTG9naWNhbFJpZ2h0QWxpYXMgPSBjYWxjdWxhdGVW
YWx1ZShtYXJnaW5Mb2dpY2FsUmlnaHQsIGNvbnRhaW5lckxvZ2ljYWxXaWR0aCk7CisgICAgICAg
IGxvZ2ljYWxMZWZ0VmFsdWUgPSBjYWxjdWxhdGVWYWx1ZShsb2dpY2FsTGVmdCwgY29udGFpbmVy
TG9naWNhbFdpZHRoKTsKKyAgICAgICAgbG9naWNhbFJpZ2h0VmFsdWUgPSBjYWxjdWxhdGVWYWx1
ZShsb2dpY2FsUmlnaHQsIGNvbnRhaW5lckxvZ2ljYWxXaWR0aCk7CiAKICAgICAgICAgLy8gU29s
dmUgZm9yICdtYXJnaW4tbGVmdCcKICAgICAgICAgbWFyZ2luTG9naWNhbExlZnRBbGlhcyA9IGF2
YWlsYWJsZVNwYWNlIC0gKGxvZ2ljYWxMZWZ0VmFsdWUgKyBsb2dpY2FsUmlnaHRWYWx1ZSArIG1h
cmdpbkxvZ2ljYWxSaWdodEFsaWFzKTsKICAgICB9IGVsc2UgaWYgKG1hcmdpbkxvZ2ljYWxSaWdo
dC5pc0F1dG8oKSkgewotICAgICAgICBtYXJnaW5Mb2dpY2FsTGVmdEFsaWFzID0gbWFyZ2luTG9n
aWNhbExlZnQuY2FsY1ZhbHVlKGNvbnRhaW5lckxvZ2ljYWxXaWR0aCk7Ci0gICAgICAgIGxvZ2lj
YWxMZWZ0VmFsdWUgPSBsb2dpY2FsTGVmdC5jYWxjVmFsdWUoY29udGFpbmVyTG9naWNhbFdpZHRo
KTsKLSAgICAgICAgbG9naWNhbFJpZ2h0VmFsdWUgPSBsb2dpY2FsUmlnaHQuY2FsY1ZhbHVlKGNv
bnRhaW5lckxvZ2ljYWxXaWR0aCk7CisgICAgICAgIG1hcmdpbkxvZ2ljYWxMZWZ0QWxpYXMgPSBj
YWxjdWxhdGVWYWx1ZShtYXJnaW5Mb2dpY2FsTGVmdCwgY29udGFpbmVyTG9naWNhbFdpZHRoKTsK
KyAgICAgICAgbG9naWNhbExlZnRWYWx1ZSA9IGNhbGN1bGF0ZVZhbHVlKGxvZ2ljYWxMZWZ0LCBj
b250YWluZXJMb2dpY2FsV2lkdGgpOworICAgICAgICBsb2dpY2FsUmlnaHRWYWx1ZSA9IGNhbGN1
bGF0ZVZhbHVlKGxvZ2ljYWxSaWdodCwgY29udGFpbmVyTG9naWNhbFdpZHRoKTsKIAogICAgICAg
ICAvLyBTb2x2ZSBmb3IgJ21hcmdpbi1yaWdodCcKICAgICAgICAgbWFyZ2luTG9naWNhbFJpZ2h0
QWxpYXMgPSBhdmFpbGFibGVTcGFjZSAtIChsb2dpY2FsTGVmdFZhbHVlICsgbG9naWNhbFJpZ2h0
VmFsdWUgKyBtYXJnaW5Mb2dpY2FsTGVmdEFsaWFzKTsKICAgICB9IGVsc2UgewogICAgICAgICAv
LyBOb3RoaW5nIGlzICdhdXRvJywganVzdCBjYWxjdWxhdGUgdGhlIHZhbHVlcy4KLSAgICAgICAg
bWFyZ2luTG9naWNhbExlZnRBbGlhcyA9IG1hcmdpbkxvZ2ljYWxMZWZ0LmNhbGNWYWx1ZShjb250
YWluZXJMb2dpY2FsV2lkdGgpOwotICAgICAgICBtYXJnaW5Mb2dpY2FsUmlnaHRBbGlhcyA9IG1h
cmdpbkxvZ2ljYWxSaWdodC5jYWxjVmFsdWUoY29udGFpbmVyTG9naWNhbFdpZHRoKTsKLSAgICAg
ICAgbG9naWNhbFJpZ2h0VmFsdWUgPSBsb2dpY2FsUmlnaHQuY2FsY1ZhbHVlKGNvbnRhaW5lckxv
Z2ljYWxXaWR0aCk7Ci0gICAgICAgIGxvZ2ljYWxMZWZ0VmFsdWUgPSBsb2dpY2FsTGVmdC5jYWxj
VmFsdWUoY29udGFpbmVyTG9naWNhbFdpZHRoKTsKKyAgICAgICAgbWFyZ2luTG9naWNhbExlZnRB
bGlhcyA9IGNhbGN1bGF0ZVZhbHVlKG1hcmdpbkxvZ2ljYWxMZWZ0LCBjb250YWluZXJMb2dpY2Fs
V2lkdGgpOworICAgICAgICBtYXJnaW5Mb2dpY2FsUmlnaHRBbGlhcyA9IGNhbGN1bGF0ZVZhbHVl
KG1hcmdpbkxvZ2ljYWxSaWdodCwgY29udGFpbmVyTG9naWNhbFdpZHRoKTsKKyAgICAgICAgbG9n
aWNhbFJpZ2h0VmFsdWUgPSBjYWxjdWxhdGVWYWx1ZShsb2dpY2FsUmlnaHQsIGNvbnRhaW5lckxv
Z2ljYWxXaWR0aCk7CisgICAgICAgIGxvZ2ljYWxMZWZ0VmFsdWUgPSBjYWxjdWxhdGVWYWx1ZShs
b2dpY2FsTGVmdCwgY29udGFpbmVyTG9naWNhbFdpZHRoKTsKICAgICAgICAgLy8gSWYgdGhlIGNv
bnRhaW5pbmcgYmxvY2sgaXMgcmlnaHQtdG8tbGVmdCwgdGhlbiBwdXNoIHRoZSBsZWZ0IHBvc2l0
aW9uIGFzIGZhciB0byB0aGUgcmlnaHQgYXMgcG9zc2libGUKICAgICAgICAgaWYgKGNvbnRhaW5l
ckRpcmVjdGlvbiA9PSBSVEwpIHsKICAgICAgICAgICAgIGludCB0b3RhbExvZ2ljYWxXaWR0aCA9
IGxvZ2ljYWxXaWR0aCgpICsgbG9naWNhbExlZnRWYWx1ZSArIGxvZ2ljYWxSaWdodFZhbHVlICsg
IG1hcmdpbkxvZ2ljYWxMZWZ0QWxpYXMgKyBtYXJnaW5Mb2dpY2FsUmlnaHRBbGlhczsKQEAgLTM0
MTEsOCArMzQxMSw4IEBAIHZvaWQgUmVuZGVyQm94Ojpjb21wdXRlUG9zaXRpb25lZExvZ2ljYWwK
ICAgICAgICAgLy8gJ3RvcCcgYW5kICdib3R0b20nIGNhbm5vdCBiZSAnYXV0bycgZHVlIHRvIHN0
ZXAgMiBhbmQgMyBjb21iaW5lZC4KICAgICAgICAgQVNTRVJUKCEobG9naWNhbFRvcC5pc0F1dG8o
KSB8fCBsb2dpY2FsQm90dG9tLmlzQXV0bygpKSk7CiAKLSAgICAgICAgbG9naWNhbFRvcFZhbHVl
ID0gbG9naWNhbFRvcC5jYWxjVmFsdWUoY29udGFpbmVyTG9naWNhbEhlaWdodCk7Ci0gICAgICAg
IGxvZ2ljYWxCb3R0b21WYWx1ZSA9IGxvZ2ljYWxCb3R0b20uY2FsY1ZhbHVlKGNvbnRhaW5lckxv
Z2ljYWxIZWlnaHQpOworICAgICAgICBsb2dpY2FsVG9wVmFsdWUgPSBjYWxjdWxhdGVWYWx1ZShs
b2dpY2FsVG9wLCBjb250YWluZXJMb2dpY2FsSGVpZ2h0KTsKKyAgICAgICAgbG9naWNhbEJvdHRv
bVZhbHVlID0gY2FsY3VsYXRlVmFsdWUobG9naWNhbEJvdHRvbSwgY29udGFpbmVyTG9naWNhbEhl
aWdodCk7CiAKICAgICAgICAgTGF5b3V0VW5pdCBkaWZmZXJlbmNlID0gYXZhaWxhYmxlU3BhY2Ug
LSAobG9naWNhbFRvcFZhbHVlICsgbG9naWNhbEJvdHRvbVZhbHVlKTsKICAgICAgICAgLy8gTk9U
RTogVGhpcyBtYXkgcmVzdWx0IGluIG5lZ2F0aXZlIHZhbHVlcy4KQEAgLTM0MjQsMzkgKzM0MjQs
MzkgQEAgdm9pZCBSZW5kZXJCb3g6OmNvbXB1dGVQb3NpdGlvbmVkTG9naWNhbAogICAgICAqICAg
IGZvciB0aGF0IHZhbHVlLgogICAgIFwqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogICAgIH0gZWxzZSBpZiAo
bG9naWNhbFRvcC5pc0F1dG8oKSkgewotICAgICAgICBtYXJnaW5CZWZvcmVBbGlhcyA9IG1hcmdp
bkJlZm9yZS5jYWxjVmFsdWUoY29udGFpbmVyTG9naWNhbEhlaWdodCk7Ci0gICAgICAgIG1hcmdp
bkFmdGVyQWxpYXMgPSBtYXJnaW5BZnRlci5jYWxjVmFsdWUoY29udGFpbmVyTG9naWNhbEhlaWdo
dCk7Ci0gICAgICAgIGxvZ2ljYWxCb3R0b21WYWx1ZSA9IGxvZ2ljYWxCb3R0b20uY2FsY1ZhbHVl
KGNvbnRhaW5lckxvZ2ljYWxIZWlnaHQpOworICAgICAgICBtYXJnaW5CZWZvcmVBbGlhcyA9IGNh
bGN1bGF0ZVZhbHVlKG1hcmdpbkJlZm9yZSwgY29udGFpbmVyTG9naWNhbEhlaWdodCk7CisgICAg
ICAgIG1hcmdpbkFmdGVyQWxpYXMgPSBjYWxjdWxhdGVWYWx1ZShtYXJnaW5BZnRlciwgY29udGFp
bmVyTG9naWNhbEhlaWdodCk7CisgICAgICAgIGxvZ2ljYWxCb3R0b21WYWx1ZSA9IGNhbGN1bGF0
ZVZhbHVlKGxvZ2ljYWxCb3R0b20sIGNvbnRhaW5lckxvZ2ljYWxIZWlnaHQpOwogCiAgICAgICAg
IC8vIFNvbHZlIGZvciAndG9wJwogICAgICAgICBsb2dpY2FsVG9wVmFsdWUgPSBhdmFpbGFibGVT
cGFjZSAtIChsb2dpY2FsQm90dG9tVmFsdWUgKyBtYXJnaW5CZWZvcmVBbGlhcyArIG1hcmdpbkFm
dGVyQWxpYXMpOwogICAgIH0gZWxzZSBpZiAobG9naWNhbEJvdHRvbS5pc0F1dG8oKSkgewotICAg
ICAgICBtYXJnaW5CZWZvcmVBbGlhcyA9IG1hcmdpbkJlZm9yZS5jYWxjVmFsdWUoY29udGFpbmVy
TG9naWNhbEhlaWdodCk7Ci0gICAgICAgIG1hcmdpbkFmdGVyQWxpYXMgPSBtYXJnaW5BZnRlci5j
YWxjVmFsdWUoY29udGFpbmVyTG9naWNhbEhlaWdodCk7Ci0gICAgICAgIGxvZ2ljYWxUb3BWYWx1
ZSA9IGxvZ2ljYWxUb3AuY2FsY1ZhbHVlKGNvbnRhaW5lckxvZ2ljYWxIZWlnaHQpOworICAgICAg
ICBtYXJnaW5CZWZvcmVBbGlhcyA9IGNhbGN1bGF0ZVZhbHVlKG1hcmdpbkJlZm9yZSwgY29udGFp
bmVyTG9naWNhbEhlaWdodCk7CisgICAgICAgIG1hcmdpbkFmdGVyQWxpYXMgPSBjYWxjdWxhdGVW
YWx1ZShtYXJnaW5BZnRlciwgY29udGFpbmVyTG9naWNhbEhlaWdodCk7CisgICAgICAgIGxvZ2lj
YWxUb3BWYWx1ZSA9IGNhbGN1bGF0ZVZhbHVlKGxvZ2ljYWxUb3AsIGNvbnRhaW5lckxvZ2ljYWxI
ZWlnaHQpOwogCiAgICAgICAgIC8vIFNvbHZlIGZvciAnYm90dG9tJwogICAgICAgICAvLyBOT1RF
OiBJdCBpcyBub3QgbmVjZXNzYXJ5IHRvIHNvbHZlIGZvciAnYm90dG9tJyBiZWNhdXNlIHdlIGRv
bid0IGV2ZXIKICAgICAgICAgLy8gdXNlIHRoZSB2YWx1ZS4KICAgICB9IGVsc2UgaWYgKG1hcmdp
bkJlZm9yZS5pc0F1dG8oKSkgewotICAgICAgICBtYXJnaW5BZnRlckFsaWFzID0gbWFyZ2luQWZ0
ZXIuY2FsY1ZhbHVlKGNvbnRhaW5lckxvZ2ljYWxIZWlnaHQpOwotICAgICAgICBsb2dpY2FsVG9w
VmFsdWUgPSBsb2dpY2FsVG9wLmNhbGNWYWx1ZShjb250YWluZXJMb2dpY2FsSGVpZ2h0KTsKLSAg
ICAgICAgbG9naWNhbEJvdHRvbVZhbHVlID0gbG9naWNhbEJvdHRvbS5jYWxjVmFsdWUoY29udGFp
bmVyTG9naWNhbEhlaWdodCk7CisgICAgICAgIG1hcmdpbkFmdGVyQWxpYXMgPSBjYWxjdWxhdGVW
YWx1ZShtYXJnaW5BZnRlciwgY29udGFpbmVyTG9naWNhbEhlaWdodCk7CisgICAgICAgIGxvZ2lj
YWxUb3BWYWx1ZSA9IGNhbGN1bGF0ZVZhbHVlKGxvZ2ljYWxUb3AsIGNvbnRhaW5lckxvZ2ljYWxI
ZWlnaHQpOworICAgICAgICBsb2dpY2FsQm90dG9tVmFsdWUgPSBjYWxjdWxhdGVWYWx1ZShsb2dp
Y2FsQm90dG9tLCBjb250YWluZXJMb2dpY2FsSGVpZ2h0KTsKIAogICAgICAgICAvLyBTb2x2ZSBm
b3IgJ21hcmdpbi10b3AnCiAgICAgICAgIG1hcmdpbkJlZm9yZUFsaWFzID0gYXZhaWxhYmxlU3Bh
Y2UgLSAobG9naWNhbFRvcFZhbHVlICsgbG9naWNhbEJvdHRvbVZhbHVlICsgbWFyZ2luQWZ0ZXJB
bGlhcyk7CiAgICAgfSBlbHNlIGlmIChtYXJnaW5BZnRlci5pc0F1dG8oKSkgewotICAgICAgICBt
YXJnaW5CZWZvcmVBbGlhcyA9IG1hcmdpbkJlZm9yZS5jYWxjVmFsdWUoY29udGFpbmVyTG9naWNh
bEhlaWdodCk7Ci0gICAgICAgIGxvZ2ljYWxUb3BWYWx1ZSA9IGxvZ2ljYWxUb3AuY2FsY1ZhbHVl
KGNvbnRhaW5lckxvZ2ljYWxIZWlnaHQpOwotICAgICAgICBsb2dpY2FsQm90dG9tVmFsdWUgPSBs
b2dpY2FsQm90dG9tLmNhbGNWYWx1ZShjb250YWluZXJMb2dpY2FsSGVpZ2h0KTsKKyAgICAgICAg
bWFyZ2luQmVmb3JlQWxpYXMgPSBjYWxjdWxhdGVWYWx1ZShtYXJnaW5CZWZvcmUsIGNvbnRhaW5l
ckxvZ2ljYWxIZWlnaHQpOworICAgICAgICBsb2dpY2FsVG9wVmFsdWUgPSBjYWxjdWxhdGVWYWx1
ZShsb2dpY2FsVG9wLCBjb250YWluZXJMb2dpY2FsSGVpZ2h0KTsKKyAgICAgICAgbG9naWNhbEJv
dHRvbVZhbHVlID0gY2FsY3VsYXRlVmFsdWUobG9naWNhbEJvdHRvbSwgY29udGFpbmVyTG9naWNh
bEhlaWdodCk7CiAKICAgICAgICAgLy8gU29sdmUgZm9yICdtYXJnaW4tYm90dG9tJwogICAgICAg
ICBtYXJnaW5BZnRlckFsaWFzID0gYXZhaWxhYmxlU3BhY2UgLSAobG9naWNhbFRvcFZhbHVlICsg
bG9naWNhbEJvdHRvbVZhbHVlICsgbWFyZ2luQmVmb3JlQWxpYXMpOwogICAgIH0gZWxzZSB7CiAg
ICAgICAgIC8vIE5vdGhpbmcgaXMgJ2F1dG8nLCBqdXN0IGNhbGN1bGF0ZSB0aGUgdmFsdWVzLgot
ICAgICAgICBtYXJnaW5CZWZvcmVBbGlhcyA9IG1hcmdpbkJlZm9yZS5jYWxjVmFsdWUoY29udGFp
bmVyTG9naWNhbEhlaWdodCk7Ci0gICAgICAgIG1hcmdpbkFmdGVyQWxpYXMgPSBtYXJnaW5BZnRl
ci5jYWxjVmFsdWUoY29udGFpbmVyTG9naWNhbEhlaWdodCk7Ci0gICAgICAgIGxvZ2ljYWxUb3BW
YWx1ZSA9IGxvZ2ljYWxUb3AuY2FsY1ZhbHVlKGNvbnRhaW5lckxvZ2ljYWxIZWlnaHQpOworICAg
ICAgICBtYXJnaW5CZWZvcmVBbGlhcyA9IGNhbGN1bGF0ZVZhbHVlKG1hcmdpbkJlZm9yZSwgY29u
dGFpbmVyTG9naWNhbEhlaWdodCk7CisgICAgICAgIG1hcmdpbkFmdGVyQWxpYXMgPSBjYWxjdWxh
dGVWYWx1ZShtYXJnaW5BZnRlciwgY29udGFpbmVyTG9naWNhbEhlaWdodCk7CisgICAgICAgIGxv
Z2ljYWxUb3BWYWx1ZSA9IGNhbGN1bGF0ZVZhbHVlKGxvZ2ljYWxUb3AsIGNvbnRhaW5lckxvZ2lj
YWxIZWlnaHQpOwogICAgICAgICAvLyBOT1RFOiBJdCBpcyBub3QgbmVjZXNzYXJ5IHRvIHNvbHZl
IGZvciAnYm90dG9tJyBiZWNhdXNlIHdlIGRvbid0IGV2ZXIKICAgICAgICAgLy8gdXNlIHRoZSB2
YWx1ZS4KICAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1v
ZGVsT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQm94TW9kZWxPYmplY3QuY3BwCShyZXZpc2lvbiAxMTExMTEpCisrKyBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00
MzcsMTIgKzQzNywxMiBAQCBMYXlvdXRVbml0IFJlbmRlckJveE1vZGVsT2JqZWN0OjpyZWxhdGl2
CiAgICAgaWYgKCFzdHlsZSgpLT5sZWZ0KCkuaXNBdXRvKCkpIHsKICAgICAgICAgUmVuZGVyQmxv
Y2sqIGNiID0gY29udGFpbmluZ0Jsb2NrKCk7CiAgICAgICAgIGlmICghc3R5bGUoKS0+cmlnaHQo
KS5pc0F1dG8oKSAmJiAhY2ItPnN0eWxlKCktPmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSkKLSAg
ICAgICAgICAgIHJldHVybiAtc3R5bGUoKS0+cmlnaHQoKS5jYWxjVmFsdWUoY2ItPmF2YWlsYWJs
ZVdpZHRoKCkpOwotICAgICAgICByZXR1cm4gb2Zmc2V0ICsgc3R5bGUoKS0+bGVmdCgpLmNhbGNW
YWx1ZShjYi0+YXZhaWxhYmxlV2lkdGgoKSk7CisgICAgICAgICAgICByZXR1cm4gLWNhbGN1bGF0
ZVZhbHVlKHN0eWxlKCktPnJpZ2h0KCksIGNiLT5hdmFpbGFibGVXaWR0aCgpKTsKKyAgICAgICAg
cmV0dXJuIG9mZnNldCArIGNhbGN1bGF0ZVZhbHVlKHN0eWxlKCktPmxlZnQoKSwgY2ItPmF2YWls
YWJsZVdpZHRoKCkpOwogICAgIH0KICAgICBpZiAoIXN0eWxlKCktPnJpZ2h0KCkuaXNBdXRvKCkp
IHsKICAgICAgICAgUmVuZGVyQmxvY2sqIGNiID0gY29udGFpbmluZ0Jsb2NrKCk7Ci0gICAgICAg
IHJldHVybiBvZmZzZXQgKyAtc3R5bGUoKS0+cmlnaHQoKS5jYWxjVmFsdWUoY2ItPmF2YWlsYWJs
ZVdpZHRoKCkpOworICAgICAgICByZXR1cm4gb2Zmc2V0ICsgLWNhbGN1bGF0ZVZhbHVlKHN0eWxl
KCktPnJpZ2h0KCksIGNiLT5hdmFpbGFibGVXaWR0aCgpKTsKICAgICB9CiAgICAgcmV0dXJuIG9m
ZnNldDsKIH0KQEAgLTQ2MiwxMyArNDYyLDEzIEBAIExheW91dFVuaXQgUmVuZGVyQm94TW9kZWxP
YmplY3Q6OnJlbGF0aXYKICAgICAgICAgJiYgKCFjb250YWluaW5nQmxvY2stPnN0eWxlKCktPmhl
aWdodCgpLmlzQXV0bygpCiAgICAgICAgICAgICB8fCAhc3R5bGUoKS0+dG9wKCkuaXNQZXJjZW50
KCkKICAgICAgICAgICAgIHx8IGNvbnRhaW5pbmdCbG9jay0+c3RyZXRjaGVzVG9WaWV3cG9ydCgp
KSkKLSAgICAgICAgcmV0dXJuIG9mZnNldCArIHN0eWxlKCktPnRvcCgpLmNhbGNWYWx1ZShjb250
YWluaW5nQmxvY2stPmF2YWlsYWJsZUhlaWdodCgpKTsKKyAgICAgICAgcmV0dXJuIG9mZnNldCAr
IGNhbGN1bGF0ZVZhbHVlKHN0eWxlKCktPnRvcCgpLCBjb250YWluaW5nQmxvY2stPmF2YWlsYWJs
ZUhlaWdodCgpKTsKIAogICAgIGlmICghc3R5bGUoKS0+Ym90dG9tKCkuaXNBdXRvKCkKICAgICAg
ICAgJiYgKCFjb250YWluaW5nQmxvY2stPnN0eWxlKCktPmhlaWdodCgpLmlzQXV0bygpCiAgICAg
ICAgICAgICB8fCAhc3R5bGUoKS0+Ym90dG9tKCkuaXNQZXJjZW50KCkKICAgICAgICAgICAgIHx8
IGNvbnRhaW5pbmdCbG9jay0+c3RyZXRjaGVzVG9WaWV3cG9ydCgpKSkKLSAgICAgICAgcmV0dXJu
IG9mZnNldCArIC1zdHlsZSgpLT5ib3R0b20oKS5jYWxjVmFsdWUoY29udGFpbmluZ0Jsb2NrLT5h
dmFpbGFibGVIZWlnaHQoKSk7CisgICAgICAgIHJldHVybiBvZmZzZXQgKyAtY2FsY3VsYXRlVmFs
dWUoc3R5bGUoKS0+Ym90dG9tKCksIGNvbnRhaW5pbmdCbG9jay0+YXZhaWxhYmxlSGVpZ2h0KCkp
OwogCiAgICAgcmV0dXJuIG9mZnNldDsKIH0KQEAgLTU1Niw3ICs1NTYsNyBAQCBMYXlvdXRVbml0
IFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWRkaW5nCiAgICAgTGVuZ3RoIHBhZGRpbmcgPSBzdHls
ZSgpLT5wYWRkaW5nVG9wKCk7CiAgICAgaWYgKHBhZGRpbmcuaXNQZXJjZW50KCkpCiAgICAgICAg
IHcgPSBjb250YWluaW5nQmxvY2soKS0+YXZhaWxhYmxlTG9naWNhbFdpZHRoKCk7Ci0gICAgcmV0
dXJuIHBhZGRpbmcuY2FsY01pblZhbHVlKHcpOworICAgIHJldHVybiBjYWxjdWxhdGVNaW5pbXVt
VmFsdWUocGFkZGluZywgdyk7CiB9CiAKIExheW91dFVuaXQgUmVuZGVyQm94TW9kZWxPYmplY3Q6
OnBhZGRpbmdCb3R0b20oUGFkZGluZ09wdGlvbnMpIGNvbnN0CkBAIC01NjUsNyArNTY1LDcgQEAg
TGF5b3V0VW5pdCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFkZGluZwogICAgIExlbmd0aCBwYWRk
aW5nID0gc3R5bGUoKS0+cGFkZGluZ0JvdHRvbSgpOwogICAgIGlmIChwYWRkaW5nLmlzUGVyY2Vu
dCgpKQogICAgICAgICB3ID0gY29udGFpbmluZ0Jsb2NrKCktPmF2YWlsYWJsZUxvZ2ljYWxXaWR0
aCgpOwotICAgIHJldHVybiBwYWRkaW5nLmNhbGNNaW5WYWx1ZSh3KTsKKyAgICByZXR1cm4gY2Fs
Y3VsYXRlTWluaW11bVZhbHVlKHBhZGRpbmcsIHcpOwogfQogCiBMYXlvdXRVbml0IFJlbmRlckJv
eE1vZGVsT2JqZWN0OjpwYWRkaW5nTGVmdChQYWRkaW5nT3B0aW9ucykgY29uc3QKQEAgLTU3NCw3
ICs1NzQsNyBAQCBMYXlvdXRVbml0IFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWRkaW5nCiAgICAg
TGVuZ3RoIHBhZGRpbmcgPSBzdHlsZSgpLT5wYWRkaW5nTGVmdCgpOwogICAgIGlmIChwYWRkaW5n
LmlzUGVyY2VudCgpKQogICAgICAgICB3ID0gY29udGFpbmluZ0Jsb2NrKCktPmF2YWlsYWJsZUxv
Z2ljYWxXaWR0aCgpOwotICAgIHJldHVybiBwYWRkaW5nLmNhbGNNaW5WYWx1ZSh3KTsKKyAgICBy
ZXR1cm4gY2FsY3VsYXRlTWluaW11bVZhbHVlKHBhZGRpbmcsIHcpOwogfQogCiBMYXlvdXRVbml0
IFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWRkaW5nUmlnaHQoUGFkZGluZ09wdGlvbnMpIGNvbnN0
CkBAIC01ODMsNyArNTgzLDcgQEAgTGF5b3V0VW5pdCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFk
ZGluZwogICAgIExlbmd0aCBwYWRkaW5nID0gc3R5bGUoKS0+cGFkZGluZ1JpZ2h0KCk7CiAgICAg
aWYgKHBhZGRpbmcuaXNQZXJjZW50KCkpCiAgICAgICAgIHcgPSBjb250YWluaW5nQmxvY2soKS0+
YXZhaWxhYmxlTG9naWNhbFdpZHRoKCk7Ci0gICAgcmV0dXJuIHBhZGRpbmcuY2FsY01pblZhbHVl
KHcpOworICAgIHJldHVybiBjYWxjdWxhdGVNaW5pbXVtVmFsdWUocGFkZGluZywgdyk7CiB9CiAK
IExheW91dFVuaXQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhZGRpbmdCZWZvcmUoUGFkZGluZ09w
dGlvbnMpIGNvbnN0CkBAIC01OTIsNyArNTkyLDcgQEAgTGF5b3V0VW5pdCBSZW5kZXJCb3hNb2Rl
bE9iamVjdDo6cGFkZGluZwogICAgIExlbmd0aCBwYWRkaW5nID0gc3R5bGUoKS0+cGFkZGluZ0Jl
Zm9yZSgpOwogICAgIGlmIChwYWRkaW5nLmlzUGVyY2VudCgpKQogICAgICAgICB3ID0gY29udGFp
bmluZ0Jsb2NrKCktPmF2YWlsYWJsZUxvZ2ljYWxXaWR0aCgpOwotICAgIHJldHVybiBwYWRkaW5n
LmNhbGNNaW5WYWx1ZSh3KTsKKyAgICByZXR1cm4gY2FsY3VsYXRlTWluaW11bVZhbHVlKHBhZGRp
bmcsIHcpOwogfQogCiBMYXlvdXRVbml0IFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWRkaW5nQWZ0
ZXIoUGFkZGluZ09wdGlvbnMpIGNvbnN0CkBAIC02MDEsNyArNjAxLDcgQEAgTGF5b3V0VW5pdCBS
ZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFkZGluZwogICAgIExlbmd0aCBwYWRkaW5nID0gc3R5bGUo
KS0+cGFkZGluZ0FmdGVyKCk7CiAgICAgaWYgKHBhZGRpbmcuaXNQZXJjZW50KCkpCiAgICAgICAg
IHcgPSBjb250YWluaW5nQmxvY2soKS0+YXZhaWxhYmxlTG9naWNhbFdpZHRoKCk7Ci0gICAgcmV0
dXJuIHBhZGRpbmcuY2FsY01pblZhbHVlKHcpOworICAgIHJldHVybiBjYWxjdWxhdGVNaW5pbXVt
VmFsdWUocGFkZGluZywgdyk7CiB9CiAKIExheW91dFVuaXQgUmVuZGVyQm94TW9kZWxPYmplY3Q6
OnBhZGRpbmdTdGFydChQYWRkaW5nT3B0aW9ucykgY29uc3QKQEAgLTYxMCw3ICs2MTAsNyBAQCBM
YXlvdXRVbml0IFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWRkaW5nCiAgICAgTGVuZ3RoIHBhZGRp
bmcgPSBzdHlsZSgpLT5wYWRkaW5nU3RhcnQoKTsKICAgICBpZiAocGFkZGluZy5pc1BlcmNlbnQo
KSkKICAgICAgICAgdyA9IGNvbnRhaW5pbmdCbG9jaygpLT5hdmFpbGFibGVMb2dpY2FsV2lkdGgo
KTsKLSAgICByZXR1cm4gcGFkZGluZy5jYWxjTWluVmFsdWUodyk7CisgICAgcmV0dXJuIGNhbGN1
bGF0ZU1pbmltdW1WYWx1ZShwYWRkaW5nLCB3KTsKIH0KIAogTGF5b3V0VW5pdCBSZW5kZXJCb3hN
b2RlbE9iamVjdDo6cGFkZGluZ0VuZChQYWRkaW5nT3B0aW9ucykgY29uc3QKQEAgLTYxOSw3ICs2
MTksNyBAQCBMYXlvdXRVbml0IFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWRkaW5nCiAgICAgTGVu
Z3RoIHBhZGRpbmcgPSBzdHlsZSgpLT5wYWRkaW5nRW5kKCk7CiAgICAgaWYgKHBhZGRpbmcuaXNQ
ZXJjZW50KCkpCiAgICAgICAgIHcgPSBjb250YWluaW5nQmxvY2soKS0+YXZhaWxhYmxlTG9naWNh
bFdpZHRoKCk7Ci0gICAgcmV0dXJuIHBhZGRpbmcuY2FsY01pblZhbHVlKHcpOworICAgIHJldHVy
biBjYWxjdWxhdGVNaW5pbXVtVmFsdWUocGFkZGluZywgdyk7CiB9CiAKIFJvdW5kZWRSZWN0IFJl
bmRlckJveE1vZGVsT2JqZWN0OjpnZXRCYWNrZ3JvdW5kUm91bmRlZFJlY3QoY29uc3QgTGF5b3V0
UmVjdCYgYm9yZGVyUmVjdCwgSW5saW5lRmxvd0JveCogYm94LCBMYXlvdXRVbml0IGlubGluZUJv
eFdpZHRoLCBMYXlvdXRVbml0IGlubGluZUJveEhlaWdodCwKQEAgLTk5OCwxMiArOTk4LDEyIEBA
IEludFNpemUgUmVuZGVyQm94TW9kZWxPYmplY3Q6OmNhbGN1bGF0ZUYKICAgICAgICAgICAgIGlm
IChsYXllcldpZHRoLmlzRml4ZWQoKSkKICAgICAgICAgICAgICAgICB3ID0gbGF5ZXJXaWR0aC52
YWx1ZSgpOwogICAgICAgICAgICAgZWxzZSBpZiAobGF5ZXJXaWR0aC5pc1BlcmNlbnQoKSkKLSAg
ICAgICAgICAgICAgICB3ID0gbGF5ZXJXaWR0aC5jYWxjVmFsdWUocG9zaXRpb25pbmdBcmVhU2l6
ZS53aWR0aCgpKTsKKyAgICAgICAgICAgICAgICB3ID0gY2FsY3VsYXRlVmFsdWUobGF5ZXJXaWR0
aCwgcG9zaXRpb25pbmdBcmVhU2l6ZS53aWR0aCgpKTsKICAgICAgICAgICAgIAogICAgICAgICAg
ICAgaWYgKGxheWVySGVpZ2h0LmlzRml4ZWQoKSkKICAgICAgICAgICAgICAgICBoID0gbGF5ZXJI
ZWlnaHQudmFsdWUoKTsKICAgICAgICAgICAgIGVsc2UgaWYgKGxheWVySGVpZ2h0LmlzUGVyY2Vu
dCgpKQotICAgICAgICAgICAgICAgIGggPSBsYXllckhlaWdodC5jYWxjVmFsdWUocG9zaXRpb25p
bmdBcmVhU2l6ZS5oZWlnaHQoKSk7CisgICAgICAgICAgICAgICAgaCA9IGNhbGN1bGF0ZVZhbHVl
KGxheWVySGVpZ2h0LCBwb3NpdGlvbmluZ0FyZWFTaXplLmhlaWdodCgpKTsKICAgICAgICAgICAg
IAogICAgICAgICAgICAgLy8gSWYgb25lIG9mIHRoZSB2YWx1ZXMgaXMgYXV0byB3ZSBoYXZlIHRv
IHVzZSB0aGUgYXBwcm9wcmlhdGUKICAgICAgICAgICAgIC8vIHNjYWxlIHRvIG1haW50YWluIG91
ciBhc3BlY3QgcmF0aW8uCkBAIC0xMTM5LDEzICsxMTM5LDEzIEBAIHZvaWQgUmVuZGVyQm94TW9k
ZWxPYmplY3Q6OmNhbGN1bGF0ZUJhY2sKICAgICBFRmlsbFJlcGVhdCBiYWNrZ3JvdW5kUmVwZWF0
WCA9IGZpbGxMYXllci0+cmVwZWF0WCgpOwogICAgIEVGaWxsUmVwZWF0IGJhY2tncm91bmRSZXBl
YXRZID0gZmlsbExheWVyLT5yZXBlYXRZKCk7CiAKLSAgICBMYXlvdXRVbml0IHhQb3NpdGlvbiA9
IGZpbGxMYXllci0+eFBvc2l0aW9uKCkuY2FsY01pblZhbHVlKHBvc2l0aW9uaW5nQXJlYVNpemUu
d2lkdGgoKSAtIGdlb21ldHJ5LnRpbGVTaXplKCkud2lkdGgoKSwgdHJ1ZSk7CisgICAgTGF5b3V0
VW5pdCB4UG9zaXRpb24gPSBjYWxjdWxhdGVNaW5pbXVtVmFsdWUoZmlsbExheWVyLT54UG9zaXRp
b24oKSwgcG9zaXRpb25pbmdBcmVhU2l6ZS53aWR0aCgpIC0gZ2VvbWV0cnkudGlsZVNpemUoKS53
aWR0aCgpLCB0cnVlKTsKICAgICBpZiAoYmFja2dyb3VuZFJlcGVhdFggPT0gUmVwZWF0RmlsbCkK
ICAgICAgICAgZ2VvbWV0cnkuc2V0UGhhc2VYKGdlb21ldHJ5LnRpbGVTaXplKCkud2lkdGgoKSA/
IGdlb21ldHJ5LnRpbGVTaXplKCkud2lkdGgoKSAtICh4UG9zaXRpb24gKyBsZWZ0KSAlIGdlb21l
dHJ5LnRpbGVTaXplKCkud2lkdGgoKSA6IDApOwogICAgIGVsc2UKICAgICAgICAgZ2VvbWV0cnku
c2V0Tm9SZXBlYXRYKHhQb3NpdGlvbiArIGxlZnQpOwogCi0gICAgTGF5b3V0VW5pdCB5UG9zaXRp
b24gPSBmaWxsTGF5ZXItPnlQb3NpdGlvbigpLmNhbGNNaW5WYWx1ZShwb3NpdGlvbmluZ0FyZWFT
aXplLmhlaWdodCgpIC0gZ2VvbWV0cnkudGlsZVNpemUoKS5oZWlnaHQoKSwgdHJ1ZSk7CisgICAg
TGF5b3V0VW5pdCB5UG9zaXRpb24gPSBjYWxjdWxhdGVNaW5pbXVtVmFsdWUoZmlsbExheWVyLT55
UG9zaXRpb24oKSwgcG9zaXRpb25pbmdBcmVhU2l6ZS5oZWlnaHQoKSAtIGdlb21ldHJ5LnRpbGVT
aXplKCkuaGVpZ2h0KCksIHRydWUpOwogICAgIGlmIChiYWNrZ3JvdW5kUmVwZWF0WSA9PSBSZXBl
YXRGaWxsKQogICAgICAgICBnZW9tZXRyeS5zZXRQaGFzZVkoZ2VvbWV0cnkudGlsZVNpemUoKS5o
ZWlnaHQoKSA/IGdlb21ldHJ5LnRpbGVTaXplKCkuaGVpZ2h0KCkgLSAoeVBvc2l0aW9uICsgdG9w
KSAlIGdlb21ldHJ5LnRpbGVTaXplKCkuaGVpZ2h0KCkgOiAwKTsKICAgICBlbHNlIApAQCAtMTE2
NCw3ICsxMTY0LDcgQEAgc3RhdGljIExheW91dFVuaXQgY29tcHV0ZUJvcmRlckltYWdlU2lkZQog
ICAgICAgICByZXR1cm4gYm9yZGVyU2xpY2UudmFsdWUoKSAqIGJvcmRlclNpZGU7CiAgICAgaWYg
KGJvcmRlclNsaWNlLmlzQXV0bygpKQogICAgICAgICByZXR1cm4gaW1hZ2VTaWRlOwotICAgIHJl
dHVybiBib3JkZXJTbGljZS5jYWxjVmFsdWUoYm94RXh0ZW50KTsKKyAgICByZXR1cm4gY2FsY3Vs
YXRlVmFsdWUoYm9yZGVyU2xpY2UsIGJveEV4dGVudCk7CiB9CiAKIGJvb2wgUmVuZGVyQm94TW9k
ZWxPYmplY3Q6OnBhaW50TmluZVBpZWNlSW1hZ2UoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0Nv
bnRleHQsIGNvbnN0IExheW91dFJlY3QmIHJlY3QsIGNvbnN0IFJlbmRlclN0eWxlKiBzdHlsZSwK
QEAgLTEyMDIsMTAgKzEyMDIsMTAgQEAgYm9vbCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRO
aW5lUGllYwogICAgIGludCBpbWFnZVdpZHRoID0gaW1hZ2VTaXplLndpZHRoKCkgLyBzdHlsZS0+
ZWZmZWN0aXZlWm9vbSgpOwogICAgIGludCBpbWFnZUhlaWdodCA9IGltYWdlU2l6ZS5oZWlnaHQo
KSAvIHN0eWxlLT5lZmZlY3RpdmVab29tKCk7CiAKLSAgICBpbnQgdG9wU2xpY2UgPSBtaW48aW50
PihpbWFnZUhlaWdodCwgbmluZVBpZWNlSW1hZ2UuaW1hZ2VTbGljZXMoKS50b3AoKS5jYWxjVmFs
dWUoaW1hZ2VIZWlnaHQpKTsKLSAgICBpbnQgcmlnaHRTbGljZSA9IG1pbjxpbnQ+KGltYWdlV2lk
dGgsIG5pbmVQaWVjZUltYWdlLmltYWdlU2xpY2VzKCkucmlnaHQoKS5jYWxjVmFsdWUoaW1hZ2VX
aWR0aCkpOwotICAgIGludCBib3R0b21TbGljZSA9IG1pbjxpbnQ+KGltYWdlSGVpZ2h0LCBuaW5l
UGllY2VJbWFnZS5pbWFnZVNsaWNlcygpLmJvdHRvbSgpLmNhbGNWYWx1ZShpbWFnZUhlaWdodCkp
OwotICAgIGludCBsZWZ0U2xpY2UgPSBtaW48aW50PihpbWFnZVdpZHRoLCBuaW5lUGllY2VJbWFn
ZS5pbWFnZVNsaWNlcygpLmxlZnQoKS5jYWxjVmFsdWUoaW1hZ2VXaWR0aCkpOworICAgIGludCB0
b3BTbGljZSA9IG1pbjxpbnQ+KGltYWdlSGVpZ2h0LCBjYWxjdWxhdGVWYWx1ZShuaW5lUGllY2VJ
bWFnZS5pbWFnZVNsaWNlcygpLnRvcCgpLCBpbWFnZUhlaWdodCkpOworICAgIGludCByaWdodFNs
aWNlID0gbWluPGludD4oaW1hZ2VXaWR0aCwgY2FsY3VsYXRlVmFsdWUobmluZVBpZWNlSW1hZ2Uu
aW1hZ2VTbGljZXMoKS5yaWdodCgpLCBpbWFnZVdpZHRoKSk7CisgICAgaW50IGJvdHRvbVNsaWNl
ID0gbWluPGludD4oaW1hZ2VIZWlnaHQsIGNhbGN1bGF0ZVZhbHVlKG5pbmVQaWVjZUltYWdlLmlt
YWdlU2xpY2VzKCkuYm90dG9tKCksIGltYWdlSGVpZ2h0KSk7CisgICAgaW50IGxlZnRTbGljZSA9
IG1pbjxpbnQ+KGltYWdlV2lkdGgsIGNhbGN1bGF0ZVZhbHVlKG5pbmVQaWVjZUltYWdlLmltYWdl
U2xpY2VzKCkubGVmdCgpLCBpbWFnZVdpZHRoKSk7CiAKICAgICBFTmluZVBpZWNlSW1hZ2VSdWxl
IGhSdWxlID0gbmluZVBpZWNlSW1hZ2UuaG9yaXpvbnRhbFJ1bGUoKTsKICAgICBFTmluZVBpZWNl
SW1hZ2VSdWxlIHZSdWxlID0gbmluZVBpZWNlSW1hZ2UudmVydGljYWxSdWxlKCk7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3guY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5jcHAJKHJldmlz
aW9uIDExMTExMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJv
eC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU3Myw3ICs1NzMsNyBAQCBMYXlvdXRVbml0IFJlbmRl
ckZsZXhpYmxlQm94OjpwcmVmZXJyZWRNCiAgICAgICAgIExheW91dFVuaXQgbWFpbkF4aXNFeHRl
bnQgPSBoYXNPcnRob2dvbmFsRmxvdyhjaGlsZCkgPyBjaGlsZC0+bG9naWNhbEhlaWdodCgpIDog
Y2hpbGQtPm1heFByZWZlcnJlZExvZ2ljYWxXaWR0aCgpOwogICAgICAgICByZXR1cm4gbWFpbkF4
aXNFeHRlbnQgLSBtYWluQXhpc0JvcmRlckFuZFBhZGRpbmdFeHRlbnRGb3JDaGlsZChjaGlsZCk7
CiAgICAgfQotICAgIHJldHVybiBtYWluQXhpc0xlbmd0aC5jYWxjTWluVmFsdWUobWFpbkF4aXND
b250ZW50RXh0ZW50KCkpOworICAgIHJldHVybiBjYWxjdWxhdGVNaW5pbXVtVmFsdWUobWFpbkF4
aXNMZW5ndGgsIG1haW5BeGlzQ29udGVudEV4dGVudCgpKTsKIH0KIAogTGF5b3V0VW5pdCBSZW5k
ZXJGbGV4aWJsZUJveDo6Y29tcHV0ZUF2YWlsYWJsZUZyZWVTcGFjZShMYXlvdXRVbml0IHByZWZl
cnJlZE1haW5BeGlzRXh0ZW50KQpAQCAtNjgwLDExICs2ODAsMTEgQEAgdm9pZCBSZW5kZXJGbGV4
aWJsZUJveDo6Y29tcHV0ZU1haW5BeGlzUAogICAgICAgICAvLyBvZiAwIGFuZCBiZWNhdXNlIGlm
IHdlJ3JlIG5vdCBhdXRvIHNpemluZywgd2UgZG9uJ3QgZG8gYSBsYXlvdXQgdGhhdAogICAgICAg
ICAvLyBjb21wdXRlcyB0aGUgc3RhcnQvZW5kIG1hcmdpbnMuCiAgICAgICAgIGlmIChpc0hvcml6
b250YWxGbG93KCkpIHsKLSAgICAgICAgICAgIGNoaWxkLT5zZXRNYXJnaW5MZWZ0KGNoaWxkLT5z
dHlsZSgpLT5tYXJnaW5MZWZ0KCkuY2FsY01pblZhbHVlKGZsZXhib3hBdmFpbGFibGVDb250ZW50
RXh0ZW50KSk7Ci0gICAgICAgICAgICBjaGlsZC0+c2V0TWFyZ2luUmlnaHQoY2hpbGQtPnN0eWxl
KCktPm1hcmdpblJpZ2h0KCkuY2FsY01pblZhbHVlKGZsZXhib3hBdmFpbGFibGVDb250ZW50RXh0
ZW50KSk7CisgICAgICAgICAgICBjaGlsZC0+c2V0TWFyZ2luTGVmdChjYWxjdWxhdGVNaW5pbXVt
VmFsdWUoY2hpbGQtPnN0eWxlKCktPm1hcmdpbkxlZnQoKSwgZmxleGJveEF2YWlsYWJsZUNvbnRl
bnRFeHRlbnQpKTsKKyAgICAgICAgICAgIGNoaWxkLT5zZXRNYXJnaW5SaWdodChjYWxjdWxhdGVN
aW5pbXVtVmFsdWUoY2hpbGQtPnN0eWxlKCktPm1hcmdpblJpZ2h0KCksIGZsZXhib3hBdmFpbGFi
bGVDb250ZW50RXh0ZW50KSk7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBjaGlsZC0+
c2V0TWFyZ2luVG9wKGNoaWxkLT5zdHlsZSgpLT5tYXJnaW5Ub3AoKS5jYWxjTWluVmFsdWUoZmxl
eGJveEF2YWlsYWJsZUNvbnRlbnRFeHRlbnQpKTsKLSAgICAgICAgICAgIGNoaWxkLT5zZXRNYXJn
aW5Cb3R0b20oY2hpbGQtPnN0eWxlKCktPm1hcmdpbkJvdHRvbSgpLmNhbGNNaW5WYWx1ZShmbGV4
Ym94QXZhaWxhYmxlQ29udGVudEV4dGVudCkpOworICAgICAgICAgICAgY2hpbGQtPnNldE1hcmdp
blRvcChjYWxjdWxhdGVNaW5pbXVtVmFsdWUoY2hpbGQtPnN0eWxlKCktPm1hcmdpblRvcCgpLCBm
bGV4Ym94QXZhaWxhYmxlQ29udGVudEV4dGVudCkpOworICAgICAgICAgICAgY2hpbGQtPnNldE1h
cmdpbkJvdHRvbShjYWxjdWxhdGVNaW5pbXVtVmFsdWUoY2hpbGQtPnN0eWxlKCktPm1hcmdpbkJv
dHRvbSgpLCBmbGV4Ym94QXZhaWxhYmxlQ29udGVudEV4dGVudCkpOwogICAgICAgICB9CiAgICAg
fQogfQpAQCAtNzU4LDggKzc1OCw4IEBAIGJvb2wgUmVuZGVyRmxleGlibGVCb3g6OnJ1bkZyZWVT
cGFjZUFsbG8KICAgICAgICAgICAgICAgICBjaGlsZFByZWZlcnJlZFNpemUgKz0gbHJvdW5kZihh
dmFpbGFibGVGcmVlU3BhY2UgKiBwb3NpdGl2ZUZsZXhGb3JDaGlsZChjaGlsZCkgLyB0b3RhbFBv
c2l0aXZlRmxleGliaWxpdHkpOwogCiAgICAgICAgICAgICAgICAgTGVuZ3RoIGNoaWxkTG9naWNh
bE1heFdpZHRoID0gaXNIb3Jpem9udGFsRmxvdygpID8gY2hpbGQtPnN0eWxlKCktPm1heFdpZHRo
KCkgOiBjaGlsZC0+c3R5bGUoKS0+bWF4SGVpZ2h0KCk7Ci0gICAgICAgICAgICAgICAgaWYgKGNo
aWxkTG9naWNhbE1heFdpZHRoLmlzU3BlY2lmaWVkKCkgJiYgY2hpbGRQcmVmZXJyZWRTaXplID4g
Y2hpbGRMb2dpY2FsTWF4V2lkdGguY2FsY1ZhbHVlKGZsZXhib3hBdmFpbGFibGVDb250ZW50RXh0
ZW50KSkgewotICAgICAgICAgICAgICAgICAgICBjaGlsZFByZWZlcnJlZFNpemUgPSBjaGlsZExv
Z2ljYWxNYXhXaWR0aC5jYWxjVmFsdWUoZmxleGJveEF2YWlsYWJsZUNvbnRlbnRFeHRlbnQpOwor
ICAgICAgICAgICAgICAgIGlmIChjaGlsZExvZ2ljYWxNYXhXaWR0aC5pc1NwZWNpZmllZCgpICYm
IGNoaWxkUHJlZmVycmVkU2l6ZSA+IGNhbGN1bGF0ZVZhbHVlKGNoaWxkTG9naWNhbE1heFdpZHRo
LCBmbGV4Ym94QXZhaWxhYmxlQ29udGVudEV4dGVudCkpIHsKKyAgICAgICAgICAgICAgICAgICAg
Y2hpbGRQcmVmZXJyZWRTaXplID0gY2FsY3VsYXRlVmFsdWUoY2hpbGRMb2dpY2FsTWF4V2lkdGgs
IGZsZXhib3hBdmFpbGFibGVDb250ZW50RXh0ZW50KTsKICAgICAgICAgICAgICAgICAgICAgYXZh
aWxhYmxlRnJlZVNwYWNlIC09IGNoaWxkUHJlZmVycmVkU2l6ZSAtIHByZWZlcnJlZE1haW5BeGlz
Q29udGVudEV4dGVudEZvckNoaWxkKGNoaWxkKTsKICAgICAgICAgICAgICAgICAgICAgdG90YWxQ
b3NpdGl2ZUZsZXhpYmlsaXR5IC09IHBvc2l0aXZlRmxleEZvckNoaWxkKGNoaWxkKTsKIApAQCAt
NzcwLDggKzc3MCw4IEBAIGJvb2wgUmVuZGVyRmxleGlibGVCb3g6OnJ1bkZyZWVTcGFjZUFsbG8K
ICAgICAgICAgICAgICAgICBjaGlsZFByZWZlcnJlZFNpemUgKz0gbHJvdW5kZihhdmFpbGFibGVG
cmVlU3BhY2UgKiBuZWdhdGl2ZUZsZXhGb3JDaGlsZChjaGlsZCkgLyB0b3RhbE5lZ2F0aXZlRmxl
eGliaWxpdHkpOwogCiAgICAgICAgICAgICAgICAgTGVuZ3RoIGNoaWxkTG9naWNhbE1pbldpZHRo
ID0gaXNIb3Jpem9udGFsRmxvdygpID8gY2hpbGQtPnN0eWxlKCktPm1pbldpZHRoKCkgOiBjaGls
ZC0+c3R5bGUoKS0+bWluSGVpZ2h0KCk7Ci0gICAgICAgICAgICAgICAgaWYgKGNoaWxkTG9naWNh
bE1pbldpZHRoLmlzU3BlY2lmaWVkKCkgJiYgY2hpbGRQcmVmZXJyZWRTaXplIDwgY2hpbGRMb2dp
Y2FsTWluV2lkdGguY2FsY1ZhbHVlKGZsZXhib3hBdmFpbGFibGVDb250ZW50RXh0ZW50KSkgewot
ICAgICAgICAgICAgICAgICAgICBjaGlsZFByZWZlcnJlZFNpemUgPSBjaGlsZExvZ2ljYWxNaW5X
aWR0aC5jYWxjVmFsdWUoZmxleGJveEF2YWlsYWJsZUNvbnRlbnRFeHRlbnQpOworICAgICAgICAg
ICAgICAgIGlmIChjaGlsZExvZ2ljYWxNaW5XaWR0aC5pc1NwZWNpZmllZCgpICYmIGNoaWxkUHJl
ZmVycmVkU2l6ZSA8IGNhbGN1bGF0ZVZhbHVlKGNoaWxkTG9naWNhbE1pbldpZHRoLCBmbGV4Ym94
QXZhaWxhYmxlQ29udGVudEV4dGVudCkpIHsKKyAgICAgICAgICAgICAgICAgICAgY2hpbGRQcmVm
ZXJyZWRTaXplID0gY2FsY3VsYXRlVmFsdWUoY2hpbGRMb2dpY2FsTWluV2lkdGgsIGZsZXhib3hB
dmFpbGFibGVDb250ZW50RXh0ZW50KTsKICAgICAgICAgICAgICAgICAgICAgYXZhaWxhYmxlRnJl
ZVNwYWNlICs9IHByZWZlcnJlZE1haW5BeGlzQ29udGVudEV4dGVudEZvckNoaWxkKGNoaWxkKSAt
IGNoaWxkUHJlZmVycmVkU2l6ZTsKICAgICAgICAgICAgICAgICAgICAgdG90YWxOZWdhdGl2ZUZs
ZXhpYmlsaXR5IC09IG5lZ2F0aXZlRmxleEZvckNoaWxkKGNoaWxkKTsKIApJbmRleDogU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZyYW1lU2V0LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnJhbWVTZXQuY3BwCShyZXZpc2lvbiAxMTExMTEp
CisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnJhbWVTZXQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yMjMsNyArMjIzLDcgQEAgdm9pZCBSZW5kZXJGcmFtZVNldDo6bGF5T3V0QXhp
cyhHcmlkQXhpcwogICAgICAgICAvLyBDb3VudCB0aGUgdG90YWwgcGVyY2VudGFnZSBvZiBhbGwg
b2YgdGhlIHBlcmNlbnRhZ2UgY29sdW1ucy9yb3dzIC0+IHRvdGFsUGVyY2VudAogICAgICAgICAv
LyBDb3VudCB0aGUgbnVtYmVyIG9mIGNvbHVtbnMvcm93cyB3aGljaCBhcmUgcGVyY2VudGFnZXMg
LT4gY291bnRQZXJjZW50CiAgICAgICAgIGlmIChncmlkW2ldLmlzUGVyY2VudCgpKSB7Ci0gICAg
ICAgICAgICBncmlkTGF5b3V0W2ldID0gbWF4KGdyaWRbaV0uY2FsY1ZhbHVlKGF2YWlsYWJsZUxl
biksIDApOworICAgICAgICAgICAgZ3JpZExheW91dFtpXSA9IG1heChjYWxjdWxhdGVWYWx1ZShn
cmlkW2ldLCBhdmFpbGFibGVMZW4pLCAwKTsKICAgICAgICAgICAgIHRvdGFsUGVyY2VudCArPSBn
cmlkTGF5b3V0W2ldOwogICAgICAgICAgICAgY291bnRQZXJjZW50Kys7CiAgICAgICAgIH0KSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwCShyZXZpc2lvbiAx
MTExMTEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNzAxLDcgKzcwMSw3IEBAIHN0YXRpYyBMYXlvdXRVbml0IGNvbXB1dGVN
YXJnaW4oY29uc3QgUmUKICAgICBpZiAobWFyZ2luLmlzRml4ZWQoKSkKICAgICAgICAgcmV0dXJu
IG1hcmdpbi52YWx1ZSgpOwogICAgIGlmIChtYXJnaW4uaXNQZXJjZW50KCkpCi0gICAgICAgIHJl
dHVybiBtYXJnaW4uY2FsY01pblZhbHVlKG1heDxMYXlvdXRVbml0PigwLCByZW5kZXJlci0+Y29u
dGFpbmluZ0Jsb2NrKCktPmF2YWlsYWJsZUxvZ2ljYWxXaWR0aCgpKSk7CisgICAgICAgIHJldHVy
biBjYWxjdWxhdGVNaW5pbXVtVmFsdWUobWFyZ2luLCBtYXg8TGF5b3V0VW5pdD4oMCwgcmVuZGVy
ZXItPmNvbnRhaW5pbmdCbG9jaygpLT5hdmFpbGFibGVMb2dpY2FsV2lkdGgoKSkpOwogICAgIHJl
dHVybiAwOwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5j
cHAJKHJldmlzaW9uIDExMTExMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
YXllci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgyMCw4ICs4MjAsOCBAQCBUcmFuc2Zvcm1hdGlv
bk1hdHJpeCBSZW5kZXJMYXllcjo6cGVyc3BlCiAgICAgY29uc3QgZmxvYXQgYm94V2lkdGggPSBi
b3JkZXJCb3gud2lkdGgoKTsKICAgICBjb25zdCBmbG9hdCBib3hIZWlnaHQgPSBib3JkZXJCb3gu
aGVpZ2h0KCk7CiAKLSAgICBmbG9hdCBwZXJzcGVjdGl2ZU9yaWdpblggPSBzdHlsZS0+cGVyc3Bl
Y3RpdmVPcmlnaW5YKCkuY2FsY0Zsb2F0VmFsdWUoYm94V2lkdGgpOwotICAgIGZsb2F0IHBlcnNw
ZWN0aXZlT3JpZ2luWSA9IHN0eWxlLT5wZXJzcGVjdGl2ZU9yaWdpblkoKS5jYWxjRmxvYXRWYWx1
ZShib3hIZWlnaHQpOworICAgIGZsb2F0IHBlcnNwZWN0aXZlT3JpZ2luWCA9IGNhbGN1bGF0ZUZs
b2F0VmFsdWUoc3R5bGUtPnBlcnNwZWN0aXZlT3JpZ2luWCgpLCBib3hXaWR0aCk7CisgICAgZmxv
YXQgcGVyc3BlY3RpdmVPcmlnaW5ZID0gY2FsY3VsYXRlRmxvYXRWYWx1ZShzdHlsZS0+cGVyc3Bl
Y3RpdmVPcmlnaW5ZKCksIGJveEhlaWdodCk7CiAKICAgICAvLyBBIHBlcnNwZWN0aXZlIG9yaWdp
biBvZiAwLDAgbWFrZXMgdGhlIHZhbmlzaGluZyBwb2ludCBpbiB0aGUgY2VudGVyIG9mIHRoZSBl
bGVtZW50LgogICAgIC8vIFdlIHdhbnQgaXQgdG8gYmUgaW4gdGhlIHRvcC1sZWZ0LCBzbyBzdWJ0
cmFjdCBoYWxmIHRoZSBoZWlnaHQgYW5kIHdpZHRoLgpAQCAtODQ0LDggKzg0NCw4IEBAIEZsb2F0
UG9pbnQgUmVuZGVyTGF5ZXI6OnBlcnNwZWN0aXZlT3JpZ2kKICAgICBjb25zdCBMYXlvdXRSZWN0
IGJvcmRlckJveCA9IHRvUmVuZGVyQm94KHJlbmRlcmVyKCkpLT5ib3JkZXJCb3hSZWN0KCk7CiAg
ICAgUmVuZGVyU3R5bGUqIHN0eWxlID0gcmVuZGVyZXIoKS0+c3R5bGUoKTsKIAotICAgIHJldHVy
biBGbG9hdFBvaW50KHN0eWxlLT5wZXJzcGVjdGl2ZU9yaWdpblgoKS5jYWxjRmxvYXRWYWx1ZShi
b3JkZXJCb3gud2lkdGgoKSksCi0gICAgICAgICAgICAgICAgICAgICAgc3R5bGUtPnBlcnNwZWN0
aXZlT3JpZ2luWSgpLmNhbGNGbG9hdFZhbHVlKGJvcmRlckJveC5oZWlnaHQoKSkpOworICAgIHJl
dHVybiBGbG9hdFBvaW50KGNhbGN1bGF0ZUZsb2F0VmFsdWUoc3R5bGUtPnBlcnNwZWN0aXZlT3Jp
Z2luWCgpLCBib3JkZXJCb3gud2lkdGgoKSksCisgICAgICAgICAgICAgICAgICAgICAgY2FsY3Vs
YXRlRmxvYXRWYWx1ZShzdHlsZS0+cGVyc3BlY3RpdmVPcmlnaW5ZKCksIGJvcmRlckJveC5oZWln
aHQoKSkpOwogfQogCiBSZW5kZXJMYXllciogUmVuZGVyTGF5ZXI6OnN0YWNraW5nQ29udGV4dCgp
IGNvbnN0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5n
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJC
YWNraW5nLmNwcAkocmV2aXNpb24gMTExMTExKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxheWVyQmFja2luZy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMDUsOCArMTAwNSw4
IEBAIEZsb2F0UG9pbnQzRCBSZW5kZXJMYXllckJhY2tpbmc6OmNvbXB1dGUKICAgICBSZW5kZXJT
dHlsZSogc3R5bGUgPSByZW5kZXJlcigpLT5zdHlsZSgpOwogCiAgICAgRmxvYXRQb2ludDNEIG9y
aWdpbjsKLSAgICBvcmlnaW4uc2V0WChzdHlsZS0+dHJhbnNmb3JtT3JpZ2luWCgpLmNhbGNGbG9h
dFZhbHVlKGJvcmRlckJveC53aWR0aCgpKSk7Ci0gICAgb3JpZ2luLnNldFkoc3R5bGUtPnRyYW5z
Zm9ybU9yaWdpblkoKS5jYWxjRmxvYXRWYWx1ZShib3JkZXJCb3guaGVpZ2h0KCkpKTsKKyAgICBv
cmlnaW4uc2V0WChjYWxjdWxhdGVGbG9hdFZhbHVlKHN0eWxlLT50cmFuc2Zvcm1PcmlnaW5YKCks
IGJvcmRlckJveC53aWR0aCgpKSk7CisgICAgb3JpZ2luLnNldFkoY2FsY3VsYXRlRmxvYXRWYWx1
ZShzdHlsZS0+dHJhbnNmb3JtT3JpZ2luWSgpLCBib3JkZXJCb3guaGVpZ2h0KCkpKTsKICAgICBv
cmlnaW4uc2V0WihzdHlsZS0+dHJhbnNmb3JtT3JpZ2luWigpKTsKIAogICAgIHJldHVybiBvcmln
aW47CkBAIC0xMDIwLDggKzEwMjAsOCBAQCBGbG9hdFBvaW50IFJlbmRlckxheWVyQmFja2luZzo6
Y29tcHV0ZVBlCiAgICAgZmxvYXQgYm94SGVpZ2h0ID0gYm9yZGVyQm94LmhlaWdodCgpOwogCiAg
ICAgRmxvYXRQb2ludCBvcmlnaW47Ci0gICAgb3JpZ2luLnNldFgoc3R5bGUtPnBlcnNwZWN0aXZl
T3JpZ2luWCgpLmNhbGNGbG9hdFZhbHVlKGJveFdpZHRoKSk7Ci0gICAgb3JpZ2luLnNldFkoc3R5
bGUtPnBlcnNwZWN0aXZlT3JpZ2luWSgpLmNhbGNGbG9hdFZhbHVlKGJveEhlaWdodCkpOworICAg
IG9yaWdpbi5zZXRYKGNhbGN1bGF0ZUZsb2F0VmFsdWUoc3R5bGUtPnBlcnNwZWN0aXZlT3JpZ2lu
WCgpLCBib3hXaWR0aCkpOworICAgIG9yaWdpbi5zZXRZKGNhbGN1bGF0ZUZsb2F0VmFsdWUoc3R5
bGUtPnBlcnNwZWN0aXZlT3JpZ2luWSgpLCBib3hIZWlnaHQpKTsKIAogICAgIHJldHVybiBvcmln
aW47CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWFycXVlZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1hcnF1ZWUuY3Bw
CShyZXZpc2lvbiAxMTExMTEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWFy
cXVlZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4OSw3ICsyODksNyBAQCB2b2lkIFJlbmRlck1h
cnF1ZWU6OnRpbWVyRmlyZWQoVGltZXI8UmVuCiAgICAgICAgIH0KICAgICAgICAgYm9vbCBwb3Np
dGl2ZSA9IHJhbmdlID4gMDsKICAgICAgICAgaW50IGNsaWVudFNpemUgPSAoaXNIb3Jpem9udGFs
KCkgPyBtX2xheWVyLT5yZW5kZXJCb3goKS0+Y2xpZW50V2lkdGgoKSA6IG1fbGF5ZXItPnJlbmRl
ckJveCgpLT5jbGllbnRIZWlnaHQoKSk7Ci0gICAgICAgIGludCBpbmNyZW1lbnQgPSBhYnMobV9s
YXllci0+cmVuZGVyZXIoKS0+c3R5bGUoKS0+bWFycXVlZUluY3JlbWVudCgpLmNhbGNWYWx1ZShj
bGllbnRTaXplKSk7CisgICAgICAgIGludCBpbmNyZW1lbnQgPSBhYnMoY2FsY3VsYXRlVmFsdWUo
bV9sYXllci0+cmVuZGVyZXIoKS0+c3R5bGUoKS0+bWFycXVlZUluY3JlbWVudCgpLCBjbGllbnRT
aXplKSk7CiAgICAgICAgIGludCBjdXJyZW50UG9zID0gKGlzSG9yaXpvbnRhbCgpID8gbV9sYXll
ci0+c2Nyb2xsWE9mZnNldCgpIDogbV9sYXllci0+c2Nyb2xsWU9mZnNldCgpKTsKICAgICAgICAg
bmV3UG9zID0gIGN1cnJlbnRQb3MgKyAoYWRkSW5jcmVtZW50ID8gaW5jcmVtZW50IDogLWluY3Jl
bWVudCk7CiAgICAgICAgIGlmIChwb3NpdGl2ZSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJNZW51TGlzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlck1lbnVMaXN0LmNwcAkocmV2aXNpb24gMTExMTExKQorKysgU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lbnVMaXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTYx
LDcgKzE2MSw3IEBAIHZvaWQgUmVuZGVyTWVudUxpc3Q6OnVwZGF0ZU9wdGlvbnNXaWR0aCgKICAg
ICAgICAgICAgIC8vIEFkZCBpbiB0aGUgb3B0aW9uJ3MgdGV4dCBpbmRlbnQuICBXZSBjYW4ndCBj
YWxjdWxhdGUgcGVyY2VudGFnZSB2YWx1ZXMgZm9yIG5vdy4KICAgICAgICAgICAgIGZsb2F0IG9w
dGlvbldpZHRoID0gMDsKICAgICAgICAgICAgIGlmIChSZW5kZXJTdHlsZSogb3B0aW9uU3R5bGUg
PSBlbGVtZW50LT5yZW5kZXJTdHlsZSgpKQotICAgICAgICAgICAgICAgIG9wdGlvbldpZHRoICs9
IG9wdGlvblN0eWxlLT50ZXh0SW5kZW50KCkuY2FsY01pblZhbHVlKDApOworICAgICAgICAgICAg
ICAgIG9wdGlvbldpZHRoICs9IGNhbGN1bGF0ZU1pbmltdW1WYWx1ZShvcHRpb25TdHlsZS0+dGV4
dEluZGVudCgpLCAwKTsKICAgICAgICAgICAgIGlmICghdGV4dC5pc0VtcHR5KCkpCiAgICAgICAg
ICAgICAgICAgb3B0aW9uV2lkdGggKz0gc3R5bGUoKS0+Zm9udCgpLndpZHRoKHRleHQpOwogICAg
ICAgICAgICAgbWF4T3B0aW9uV2lkdGggPSBtYXgobWF4T3B0aW9uV2lkdGgsIG9wdGlvbldpZHRo
KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCShyZXZp
c2lvbiAxMTExMTEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTQ0NSw3ICsxNDQ1LDcgQEAgYm9vbCBSZW5kZXJPYmplY3Q6
OnJlcGFpbnRBZnRlckxheW91dElmTgogCiAgICAgICAgIGludCBib3JkZXJSaWdodCA9IGlzQm94
KCkgPyB0b1JlbmRlckJveCh0aGlzKS0+Ym9yZGVyUmlnaHQoKSA6IDA7CiAgICAgICAgIExheW91
dFVuaXQgYm94V2lkdGggPSBpc0JveCgpID8gdG9SZW5kZXJCb3godGhpcyktPndpZHRoKCkgOiB6
ZXJvTGF5b3V0VW5pdDsKLSAgICAgICAgTGF5b3V0VW5pdCBib3JkZXJXaWR0aCA9IG1heDxMYXlv
dXRVbml0Pigtb3V0bGluZVN0eWxlLT5vdXRsaW5lT2Zmc2V0KCksIG1heDxMYXlvdXRVbml0Pihi
b3JkZXJSaWdodCwgbWF4PExheW91dFVuaXQ+KHN0eWxlKCktPmJvcmRlclRvcFJpZ2h0UmFkaXVz
KCkud2lkdGgoKS5jYWxjVmFsdWUoYm94V2lkdGgpLCBzdHlsZSgpLT5ib3JkZXJCb3R0b21SaWdo
dFJhZGl1cygpLndpZHRoKCkuY2FsY1ZhbHVlKGJveFdpZHRoKSkpKSArIG1heDxMYXlvdXRVbml0
Pihvdywgc2hhZG93UmlnaHQpOworICAgICAgICBMYXlvdXRVbml0IGJvcmRlcldpZHRoID0gbWF4
PExheW91dFVuaXQ+KC1vdXRsaW5lU3R5bGUtPm91dGxpbmVPZmZzZXQoKSwgbWF4PExheW91dFVu
aXQ+KGJvcmRlclJpZ2h0LCBtYXg8TGF5b3V0VW5pdD4oY2FsY3VsYXRlVmFsdWUoc3R5bGUoKS0+
Ym9yZGVyVG9wUmlnaHRSYWRpdXMoKS53aWR0aCgpLCBib3hXaWR0aCksIGNhbGN1bGF0ZVZhbHVl
KHN0eWxlKCktPmJvcmRlckJvdHRvbVJpZ2h0UmFkaXVzKCkud2lkdGgoKSwgYm94V2lkdGgpKSkp
ICsgbWF4PExheW91dFVuaXQ+KG93LCBzaGFkb3dSaWdodCk7CiAgICAgICAgIExheW91dFJlY3Qg
cmlnaHRSZWN0KG5ld091dGxpbmVCb3gueCgpICsgbWluKG5ld091dGxpbmVCb3gud2lkdGgoKSwg
b2xkT3V0bGluZUJveC53aWR0aCgpKSAtIGJvcmRlcldpZHRoLAogICAgICAgICAgICAgbmV3T3V0
bGluZUJveC55KCksCiAgICAgICAgICAgICB3aWR0aCArIGJvcmRlcldpZHRoLApAQCAtMTQ2NCw3
ICsxNDY0LDcgQEAgYm9vbCBSZW5kZXJPYmplY3Q6OnJlcGFpbnRBZnRlckxheW91dElmTgogCiAg
ICAgICAgIGludCBib3JkZXJCb3R0b20gPSBpc0JveCgpID8gdG9SZW5kZXJCb3godGhpcyktPmJv
cmRlckJvdHRvbSgpIDogMDsKICAgICAgICAgTGF5b3V0VW5pdCBib3hIZWlnaHQgPSBpc0JveCgp
ID8gdG9SZW5kZXJCb3godGhpcyktPmhlaWdodCgpIDogemVyb0xheW91dFVuaXQ7Ci0gICAgICAg
IExheW91dFVuaXQgYm9yZGVySGVpZ2h0ID0gbWF4PExheW91dFVuaXQ+KC1vdXRsaW5lU3R5bGUt
Pm91dGxpbmVPZmZzZXQoKSwgbWF4PExheW91dFVuaXQ+KGJvcmRlckJvdHRvbSwgbWF4PExheW91
dFVuaXQ+KHN0eWxlKCktPmJvcmRlckJvdHRvbUxlZnRSYWRpdXMoKS5oZWlnaHQoKS5jYWxjVmFs
dWUoYm94SGVpZ2h0KSwgc3R5bGUoKS0+Ym9yZGVyQm90dG9tUmlnaHRSYWRpdXMoKS5oZWlnaHQo
KS5jYWxjVmFsdWUoYm94SGVpZ2h0KSkpKSArIG1heDxMYXlvdXRVbml0Pihvdywgc2hhZG93Qm90
dG9tKTsKKyAgICAgICAgTGF5b3V0VW5pdCBib3JkZXJIZWlnaHQgPSBtYXg8TGF5b3V0VW5pdD4o
LW91dGxpbmVTdHlsZS0+b3V0bGluZU9mZnNldCgpLCBtYXg8TGF5b3V0VW5pdD4oYm9yZGVyQm90
dG9tLCBtYXg8TGF5b3V0VW5pdD4oY2FsY3VsYXRlVmFsdWUoc3R5bGUoKS0+Ym9yZGVyQm90dG9t
TGVmdFJhZGl1cygpLmhlaWdodCgpLCBib3hIZWlnaHQpLCBjYWxjdWxhdGVWYWx1ZShzdHlsZSgp
LT5ib3JkZXJCb3R0b21SaWdodFJhZGl1cygpLmhlaWdodCgpLCBib3hIZWlnaHQpKSkpICsgbWF4
PExheW91dFVuaXQ+KG93LCBzaGFkb3dCb3R0b20pOwogICAgICAgICBMYXlvdXRSZWN0IGJvdHRv
bVJlY3QobmV3T3V0bGluZUJveC54KCksCiAgICAgICAgICAgICBtaW4obmV3T3V0bGluZUJveC5t
YXhZKCksIG9sZE91dGxpbmVCb3gubWF4WSgpKSAtIGJvcmRlckhlaWdodCwKICAgICAgICAgICAg
IG1heChuZXdPdXRsaW5lQm94LndpZHRoKCksIG9sZE91dGxpbmVCb3gud2lkdGgoKSksCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5jcHAJKHJldmlzaW9u
IDExMTExMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTMzNSw4ICszMzUsOCBAQCBMYXlvdXRVbml0IFJlbmRlclJlcGxh
Y2VkOjpjb21wdXRlUmVwbGFjCiAgICAgICAgICAgICAgICAgICAgIGxvZ2ljYWxXaWR0aCA9IGNv
bnRhaW5pbmdCbG9jaygpLT5hdmFpbGFibGVMb2dpY2FsV2lkdGgoKTsKIAogICAgICAgICAgICAg
ICAgIC8vIFRoaXMgc29sdmVzIGFib3ZlIGVxdWF0aW9uIGZvciAnd2lkdGgnICg9PSBsb2dpY2Fs
V2lkdGgpLgotICAgICAgICAgICAgICAgIExheW91dFVuaXQgbWFyZ2luU3RhcnQgPSBzdHlsZSgp
LT5tYXJnaW5TdGFydCgpLmNhbGNNaW5WYWx1ZShsb2dpY2FsV2lkdGgpOwotICAgICAgICAgICAg
ICAgIExheW91dFVuaXQgbWFyZ2luRW5kID0gc3R5bGUoKS0+bWFyZ2luRW5kKCkuY2FsY01pblZh
bHVlKGxvZ2ljYWxXaWR0aCk7CisgICAgICAgICAgICAgICAgTGF5b3V0VW5pdCBtYXJnaW5TdGFy
dCA9IGNhbGN1bGF0ZU1pbmltdW1WYWx1ZShzdHlsZSgpLT5tYXJnaW5TdGFydCgpLCBsb2dpY2Fs
V2lkdGgpOworICAgICAgICAgICAgICAgIExheW91dFVuaXQgbWFyZ2luRW5kID0gY2FsY3VsYXRl
TWluaW11bVZhbHVlKHN0eWxlKCktPm1hcmdpbkVuZCgpLCBsb2dpY2FsV2lkdGgpOwogICAgICAg
ICAgICAgICAgIGxvZ2ljYWxXaWR0aCA9IG1heCgwLCBsb2dpY2FsV2lkdGggLSAobWFyZ2luU3Rh
cnQgKyBtYXJnaW5FbmQgKyAod2lkdGgoKSAtIGNsaWVudFdpZHRoKCkpKSk7CiAgICAgICAgICAg
ICAgICAgaWYgKGlzUGVyY2VudGFnZUludHJpbnNpY1NpemUpCiAgICAgICAgICAgICAgICAgICAg
IC8vIEZJWE1FOiBSZW1vdmUgdW5uZWNlc3Nhcnkgcm91bmRpbmcgd2hlbiBsYXlvdXQgaXMgb2Zm
IGludHM6IHdlYmtpdC5vcmcvYi82MzY1NgpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclNjcm9sbGJhclBhcnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJTY3JvbGxiYXJQYXJ0LmNwcAkocmV2aXNpb24gMTExMTExKQorKysgU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhclBhcnQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC04Myw3ICs4Myw3IEBAIHN0YXRpYyBpbnQgY2FsY1Njcm9sbGJhclRoaWNrbmVzc1Vz
aW5nKGMKIHsKICAgICBpZiAobC5pc0ludHJpbnNpY09yQXV0bygpKQogICAgICAgICByZXR1cm4g
U2Nyb2xsYmFyVGhlbWU6OnRoZW1lKCktPnNjcm9sbGJhclRoaWNrbmVzcygpOwotICAgIHJldHVy
biBsLmNhbGNNaW5WYWx1ZShjb250YWluaW5nTGVuZ3RoKTsKKyAgICByZXR1cm4gY2FsY3VsYXRl
TWluaW11bVZhbHVlKGwsIGNvbnRhaW5pbmdMZW5ndGgpOwogfQogCiB2b2lkIFJlbmRlclNjcm9s
bGJhclBhcnQ6OmNvbXB1dGVTY3JvbGxiYXJXaWR0aCgpCkBAIC05Nyw4ICs5Nyw4IEBAIHZvaWQg
UmVuZGVyU2Nyb2xsYmFyUGFydDo6Y29tcHV0ZVNjcm9sbGIKICAgICBzZXRXaWR0aChtYXgobWlu
V2lkdGgsIG1pbihtYXhXaWR0aCwgdykpKTsKICAgICAKICAgICAvLyBCdXR0b25zIGFuZCB0cmFj
ayBwaWVjZXMgY2FuIGFsbCBoYXZlIG1hcmdpbnMgYWxvbmcgdGhlIGF4aXMgb2YgdGhlIHNjcm9s
bGJhci4gCi0gICAgbV9tYXJnaW5MZWZ0ID0gc3R5bGUoKS0+bWFyZ2luTGVmdCgpLmNhbGNNaW5W
YWx1ZSh2aXNpYmxlU2l6ZSk7Ci0gICAgbV9tYXJnaW5SaWdodCA9IHN0eWxlKCktPm1hcmdpblJp
Z2h0KCkuY2FsY01pblZhbHVlKHZpc2libGVTaXplKTsKKyAgICBtX21hcmdpbkxlZnQgPSBjYWxj
dWxhdGVNaW5pbXVtVmFsdWUoc3R5bGUoKS0+bWFyZ2luTGVmdCgpLCB2aXNpYmxlU2l6ZSk7Cisg
ICAgbV9tYXJnaW5SaWdodCA9IGNhbGN1bGF0ZU1pbmltdW1WYWx1ZShzdHlsZSgpLT5tYXJnaW5S
aWdodCgpLCB2aXNpYmxlU2l6ZSk7CiB9CiAKIHZvaWQgUmVuZGVyU2Nyb2xsYmFyUGFydDo6Y29t
cHV0ZVNjcm9sbGJhckhlaWdodCgpCkBAIC0xMTIsOCArMTEyLDggQEAgdm9pZCBSZW5kZXJTY3Jv
bGxiYXJQYXJ0Ojpjb21wdXRlU2Nyb2xsYgogICAgIHNldEhlaWdodChtYXgobWluSGVpZ2h0LCBt
aW4obWF4SGVpZ2h0LCBoKSkpOwogCiAgICAgLy8gQnV0dG9ucyBhbmQgdHJhY2sgcGllY2VzIGNh
biBhbGwgaGF2ZSBtYXJnaW5zIGFsb25nIHRoZSBheGlzIG9mIHRoZSBzY3JvbGxiYXIuIAotICAg
IG1fbWFyZ2luVG9wID0gc3R5bGUoKS0+bWFyZ2luVG9wKCkuY2FsY01pblZhbHVlKHZpc2libGVT
aXplKTsKLSAgICBtX21hcmdpbkJvdHRvbSA9IHN0eWxlKCktPm1hcmdpbkJvdHRvbSgpLmNhbGNN
aW5WYWx1ZSh2aXNpYmxlU2l6ZSk7CisgICAgbV9tYXJnaW5Ub3AgPSBjYWxjdWxhdGVNaW5pbXVt
VmFsdWUoc3R5bGUoKS0+bWFyZ2luVG9wKCksIHZpc2libGVTaXplKTsKKyAgICBtX21hcmdpbkJv
dHRvbSA9IGNhbGN1bGF0ZU1pbmltdW1WYWx1ZShzdHlsZSgpLT5tYXJnaW5Cb3R0b20oKSwgdmlz
aWJsZVNpemUpOwogfQogCiB2b2lkIFJlbmRlclNjcm9sbGJhclBhcnQ6OmNvbXB1dGVQcmVmZXJy
ZWRMb2dpY2FsV2lkdGhzKCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
YWJsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRh
YmxlLmNwcAkocmV2aXNpb24gMTExMTExKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRhYmxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjMyLDggKzIzMiw4IEBAIHZvaWQgUmVu
ZGVyVGFibGU6OmNvbXB1dGVMb2dpY2FsV2lkdGgoKQogICAgICAgICBzZXRMb2dpY2FsV2lkdGgo
Y29udmVydFN0eWxlTG9naWNhbFdpZHRoVG9Db21wdXRlZFdpZHRoKHN0eWxlTG9naWNhbFdpZHRo
LCBjb250YWluZXJXaWR0aEluSW5saW5lRGlyZWN0aW9uKSk7CiAgICAgZWxzZSB7CiAgICAgICAg
IC8vIFN1YnRyYWN0IG91dCBhbnkgZml4ZWQgbWFyZ2lucyBmcm9tIG91ciBhdmFpbGFibGUgd2lk
dGggZm9yIGF1dG8gd2lkdGggdGFibGVzLgotICAgICAgICBMYXlvdXRVbml0IG1hcmdpblN0YXJ0
ID0gc3R5bGUoKS0+bWFyZ2luU3RhcnQoKS5jYWxjTWluVmFsdWUoYXZhaWxhYmxlTG9naWNhbFdp
ZHRoKTsKLSAgICAgICAgTGF5b3V0VW5pdCBtYXJnaW5FbmQgPSBzdHlsZSgpLT5tYXJnaW5FbmQo
KS5jYWxjTWluVmFsdWUoYXZhaWxhYmxlTG9naWNhbFdpZHRoKTsKKyAgICAgICAgTGF5b3V0VW5p
dCBtYXJnaW5TdGFydCA9IGNhbGN1bGF0ZU1pbmltdW1WYWx1ZShzdHlsZSgpLT5tYXJnaW5TdGFy
dCgpLCBhdmFpbGFibGVMb2dpY2FsV2lkdGgpOworICAgICAgICBMYXlvdXRVbml0IG1hcmdpbkVu
ZCA9IGNhbGN1bGF0ZU1pbmltdW1WYWx1ZShzdHlsZSgpLT5tYXJnaW5FbmQoKSwgYXZhaWxhYmxl
TG9naWNhbFdpZHRoKTsKICAgICAgICAgTGF5b3V0VW5pdCBtYXJnaW5Ub3RhbCA9IG1hcmdpblN0
YXJ0ICsgbWFyZ2luRW5kOwogICAgICAgICAKICAgICAgICAgLy8gU3VidHJhY3Qgb3V0IG91ciBt
YXJnaW5zIHRvIGdldCB0aGUgYXZhaWxhYmxlIGNvbnRlbnQgd2lkdGguCkBAIC0yNjEsOCArMjYx
LDggQEAgdm9pZCBSZW5kZXJUYWJsZTo6Y29tcHV0ZUxvZ2ljYWxXaWR0aCgpCiAgICAgaWYgKCFo
YXNQZXJwZW5kaWN1bGFyQ29udGFpbmluZ0Jsb2NrKQogICAgICAgICBjb21wdXRlSW5saW5lRGly
ZWN0aW9uTWFyZ2lucyhjYiwgYXZhaWxhYmxlTG9naWNhbFdpZHRoLCBsb2dpY2FsV2lkdGgoKSk7
CiAgICAgZWxzZSB7Ci0gICAgICAgIHNldE1hcmdpblN0YXJ0KHN0eWxlKCktPm1hcmdpblN0YXJ0
KCkuY2FsY01pblZhbHVlKGF2YWlsYWJsZUxvZ2ljYWxXaWR0aCkpOwotICAgICAgICBzZXRNYXJn
aW5FbmQoc3R5bGUoKS0+bWFyZ2luRW5kKCkuY2FsY01pblZhbHVlKGF2YWlsYWJsZUxvZ2ljYWxX
aWR0aCkpOworICAgICAgICBzZXRNYXJnaW5TdGFydChjYWxjdWxhdGVNaW5pbXVtVmFsdWUoc3R5
bGUoKS0+bWFyZ2luU3RhcnQoKSwgYXZhaWxhYmxlTG9naWNhbFdpZHRoKSk7CisgICAgICAgIHNl
dE1hcmdpbkVuZChjYWxjdWxhdGVNaW5pbXVtVmFsdWUoc3R5bGUoKS0+bWFyZ2luRW5kKCksIGF2
YWlsYWJsZUxvZ2ljYWxXaWR0aCkpOwogICAgIH0KIH0KIApAQCAtMjc2LDcgKzI3Niw3IEBAIExh
eW91dFVuaXQgUmVuZGVyVGFibGU6OmNvbnZlcnRTdHlsZUxvZ2kKICAgICAgICAgcmVjYWxjQm9y
ZGVyc0luUm93RGlyZWN0aW9uKCk7CiAgICAgICAgIGJvcmRlcnMgPSBib3JkZXJTdGFydCgpICsg
Ym9yZGVyRW5kKCkgKyAoY29sbGFwc2VCb3JkZXJzKCkgPyAwIDogcGFkZGluZ1N0YXJ0KCkgKyBw
YWRkaW5nRW5kKCkpOwogICAgIH0KLSAgICByZXR1cm4gc3R5bGVMb2dpY2FsV2lkdGguY2FsY01p
blZhbHVlKGF2YWlsYWJsZVdpZHRoKSArIGJvcmRlcnM7CisgICAgcmV0dXJuIGNhbGN1bGF0ZU1p
bmltdW1WYWx1ZShzdHlsZUxvZ2ljYWxXaWR0aCwgYXZhaWxhYmxlV2lkdGgpICsgYm9yZGVyczsK
IH0KIAogdm9pZCBSZW5kZXJUYWJsZTo6bGF5b3V0Q2FwdGlvbihSZW5kZXJUYWJsZUNhcHRpb24q
IGNhcHRpb24pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxs
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVD
ZWxsLmNwcAkocmV2aXNpb24gMTExMTExKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRhYmxlQ2VsbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk1LDcgKzk1LDcgQEAgTGF5b3V0
VW5pdCBSZW5kZXJUYWJsZUNlbGw6OmxvZ2ljYWxIZWlnaAogewogICAgIExheW91dFVuaXQgYWRq
dXN0ZWRMb2dpY2FsSGVpZ2h0ID0gbG9naWNhbEhlaWdodCgpIC0gKGludHJpbnNpY1BhZGRpbmdC
ZWZvcmUoKSArIGludHJpbnNpY1BhZGRpbmdBZnRlcigpKTsKIAotICAgIExheW91dFVuaXQgc3R5
bGVMb2dpY2FsSGVpZ2h0ID0gc3R5bGUoKS0+bG9naWNhbEhlaWdodCgpLmNhbGNWYWx1ZSgwKTsK
KyAgICBMYXlvdXRVbml0IHN0eWxlTG9naWNhbEhlaWdodCA9IGNhbGN1bGF0ZVZhbHVlKHN0eWxl
KCktPmxvZ2ljYWxIZWlnaHQoKSwgMCk7CiAgICAgaWYgKGRvY3VtZW50KCktPmluUXVpcmtzTW9k
ZSgpIHx8IHN0eWxlKCktPmJveFNpemluZygpID09IEJPUkRFUl9CT1gpIHsKICAgICAgICAgLy8g
RXhwbGljaXQgaGVpZ2h0cyB1c2UgdGhlIGJvcmRlciBib3ggaW4gcXVpcmtzIG1vZGUuCiAgICAg
ICAgIC8vIERvbid0IGFkanVzdCBoZWlnaHQuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVGFibGVTZWN0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGFibGVTZWN0aW9uLmNwcAkocmV2aXNpb24gMTExMTExKQorKysgU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlU2VjdGlvbi5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTMzOCw3ICszMzgsNyBAQCBpbnQgUmVuZGVyVGFibGVTZWN0aW9uOjpjYWxjUm93TG9n
aWNhbEhlCiAgICAgICAgIExheW91dFVuaXQgYmFzZWxpbmVEZXNjZW50ID0gMDsKIAogICAgICAg
ICAvLyBPdXIgYmFzZSBzaXplIGlzIHRoZSBiaWdnZXN0IGxvZ2ljYWwgaGVpZ2h0IGZyb20gb3Vy
IGNlbGxzJyBzdHlsZXMgKGV4Y2x1ZGluZyByb3cgc3Bhbm5pbmcgY2VsbHMpLgotICAgICAgICBt
X3Jvd1Bvc1tyICsgMV0gPSBtYXgobV9yb3dQb3Nbcl0gKyBtX2dyaWRbcl0ubG9naWNhbEhlaWdo
dC5jYWxjTWluVmFsdWUoMCksIDApOworICAgICAgICBtX3Jvd1Bvc1tyICsgMV0gPSBtYXgobV9y
b3dQb3Nbcl0gKyBjYWxjdWxhdGVNaW5pbXVtVmFsdWUobV9ncmlkW3JdLmxvZ2ljYWxIZWlnaHQs
IDApLCAwKTsKIAogICAgICAgICBSb3cmIHJvdyA9IG1fZ3JpZFtyXS5yb3c7CiAgICAgICAgIHVu
c2lnbmVkIHRvdGFsQ29scyA9IHJvdy5zaXplKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGV4dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUZXh0LmgJKHJldmlzaW9uIDExMTExMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUZXh0LmgJKHdvcmtpbmcgY29weSkKQEAgLTk3LDggKzk3LDggQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBzZWxlY3Rpb25SZWN0Rm9yUmVwYWludChSZW5kZXJC
b3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgYm9vbCBjbGlwVG9WaXNpYmxlQ29udGVu
dCA9IHRydWUpOwogICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBsb2NhbENhcmV0UmVjdChJbmxpbmVC
b3gqLCBpbnQgY2FyZXRPZmZzZXQsIExheW91dFVuaXQqIGV4dHJhV2lkdGhUb0VuZE9mTGluZSA9
IDApOwogCi0gICAgdmlydHVhbCBMYXlvdXRVbml0IG1hcmdpbkxlZnQoKSBjb25zdCB7IHJldHVy
biBzdHlsZSgpLT5tYXJnaW5MZWZ0KCkuY2FsY01pblZhbHVlKDApOyB9Ci0gICAgdmlydHVhbCBM
YXlvdXRVbml0IG1hcmdpblJpZ2h0KCkgY29uc3QgeyByZXR1cm4gc3R5bGUoKS0+bWFyZ2luUmln
aHQoKS5jYWxjTWluVmFsdWUoMCk7IH0KKyAgICB2aXJ0dWFsIExheW91dFVuaXQgbWFyZ2luTGVm
dCgpIGNvbnN0IHsgcmV0dXJuIGNhbGN1bGF0ZU1pbmltdW1WYWx1ZShzdHlsZSgpLT5tYXJnaW5M
ZWZ0KCksIDApOyB9CisgICAgdmlydHVhbCBMYXlvdXRVbml0IG1hcmdpblJpZ2h0KCkgY29uc3Qg
eyByZXR1cm4gY2FsY3VsYXRlTWluaW11bVZhbHVlKHN0eWxlKCktPm1hcmdpblJpZ2h0KCksIDAp
OyB9CiAKICAgICB2aXJ0dWFsIExheW91dFJlY3QgY2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFp
bnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIpIGNvbnN0OwogCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUm9vdElubGluZUJveC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jvb3RJbmxpbmVCb3guY3BwCShyZXZpc2lvbiAx
MTExMTEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUm9vdElubGluZUJveC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTg0NCw3ICs4NDQsNyBAQCBMYXlvdXRVbml0IFJvb3RJbmxpbmVCb3g6
OnZlcnRpY2FsUG9zaXRpCiAgICAgICAgIH0gZWxzZSBpZiAodmVydGljYWxBbGlnbiA9PSBCQVNF
TElORV9NSURETEUpCiAgICAgICAgICAgICB2ZXJ0aWNhbFBvc2l0aW9uICs9IC1yZW5kZXJlci0+
bGluZUhlaWdodChmaXJzdExpbmUsIGxpbmVEaXJlY3Rpb24pIC8gMiArIHJlbmRlcmVyLT5iYXNl
bGluZVBvc2l0aW9uKGJhc2VsaW5lVHlwZSgpLCBmaXJzdExpbmUsIGxpbmVEaXJlY3Rpb24pOwog
ICAgICAgICBlbHNlIGlmICh2ZXJ0aWNhbEFsaWduID09IExFTkdUSCkKLSAgICAgICAgICAgIHZl
cnRpY2FsUG9zaXRpb24gLT0gcmVuZGVyZXItPnN0eWxlKCktPnZlcnRpY2FsQWxpZ25MZW5ndGgo
KS5jYWxjVmFsdWUocmVuZGVyZXItPmxpbmVIZWlnaHQoZmlyc3RMaW5lLCBsaW5lRGlyZWN0aW9u
KSk7CisgICAgICAgICAgICB2ZXJ0aWNhbFBvc2l0aW9uIC09IGNhbGN1bGF0ZVZhbHVlKHJlbmRl
cmVyLT5zdHlsZSgpLT52ZXJ0aWNhbEFsaWduTGVuZ3RoKCksIHJlbmRlcmVyLT5saW5lSGVpZ2h0
KGZpcnN0TGluZSwgbGluZURpcmVjdGlvbikpOwogICAgIH0KIAogICAgIC8vIFN0b3JlIHRoZSBj
YWNoZWQgdmFsdWUuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVy
U3R5bGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9S
ZW5kZXJTdHlsZS5jcHAJKHJldmlzaW9uIDExMTExMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgwMiwxNCArODAy
LDE0IEBAIHZvaWQgUmVuZGVyU3R5bGU6OmFwcGx5VHJhbnNmb3JtKFRyYW5zZm8KICAgICBib29s
IGFwcGx5VHJhbnNmb3JtT3JpZ2luID0gcmVxdWlyZVRyYW5zZm9ybU9yaWdpbih0cmFuc2Zvcm1P
cGVyYXRpb25zLCBhcHBseU9yaWdpbik7CiAKICAgICBpZiAoYXBwbHlUcmFuc2Zvcm1PcmlnaW4p
Ci0gICAgICAgIHRyYW5zZm9ybS50cmFuc2xhdGUzZCh0cmFuc2Zvcm1PcmlnaW5YKCkuY2FsY0Zs
b2F0VmFsdWUoYm9yZGVyQm94U2l6ZS53aWR0aCgpKSwgdHJhbnNmb3JtT3JpZ2luWSgpLmNhbGNG
bG9hdFZhbHVlKGJvcmRlckJveFNpemUuaGVpZ2h0KCkpLCB0cmFuc2Zvcm1PcmlnaW5aKCkpOwor
ICAgICAgICB0cmFuc2Zvcm0udHJhbnNsYXRlM2QoY2FsY3VsYXRlRmxvYXRWYWx1ZSh0cmFuc2Zv
cm1PcmlnaW5YKCksIGJvcmRlckJveFNpemUud2lkdGgoKSksIGNhbGN1bGF0ZUZsb2F0VmFsdWUo
dHJhbnNmb3JtT3JpZ2luWSgpLCBib3JkZXJCb3hTaXplLmhlaWdodCgpKSwgdHJhbnNmb3JtT3Jp
Z2luWigpKTsKIAogICAgIHVuc2lnbmVkIHNpemUgPSB0cmFuc2Zvcm1PcGVyYXRpb25zLnNpemUo
KTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc2l6ZTsgKytpKQogICAgICAgICB0cmFu
c2Zvcm1PcGVyYXRpb25zW2ldLT5hcHBseSh0cmFuc2Zvcm0sIGJvcmRlckJveFNpemUpOwogCiAg
ICAgaWYgKGFwcGx5VHJhbnNmb3JtT3JpZ2luKQotICAgICAgICB0cmFuc2Zvcm0udHJhbnNsYXRl
M2QoLXRyYW5zZm9ybU9yaWdpblgoKS5jYWxjRmxvYXRWYWx1ZShib3JkZXJCb3hTaXplLndpZHRo
KCkpLCAtdHJhbnNmb3JtT3JpZ2luWSgpLmNhbGNGbG9hdFZhbHVlKGJvcmRlckJveFNpemUuaGVp
Z2h0KCkpLCAtdHJhbnNmb3JtT3JpZ2luWigpKTsgCisgICAgICAgIHRyYW5zZm9ybS50cmFuc2xh
dGUzZCgtY2FsY3VsYXRlRmxvYXRWYWx1ZSh0cmFuc2Zvcm1PcmlnaW5YKCksIGJvcmRlckJveFNp
emUud2lkdGgoKSksIC1jYWxjdWxhdGVGbG9hdFZhbHVlKHRyYW5zZm9ybU9yaWdpblkoKSwgYm9y
ZGVyQm94U2l6ZS5oZWlnaHQoKSksIC10cmFuc2Zvcm1PcmlnaW5aKCkpOyAKIH0KIAogdm9pZCBS
ZW5kZXJTdHlsZTo6YXBwbHlUcmFuc2Zvcm0oVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9y
bSwgY29uc3QgRmxvYXRSZWN0JiBib3VuZGluZ0JveCwgQXBwbHlUcmFuc2Zvcm1PcmlnaW4gYXBw
bHlPcmlnaW4pIGNvbnN0CkBAIC04MjEsOCArODIxLDggQEAgdm9pZCBSZW5kZXJTdHlsZTo6YXBw
bHlUcmFuc2Zvcm0oVHJhbnNmbwogICAgIGZsb2F0IG9mZnNldFkgPSB0cmFuc2Zvcm1PcmlnaW5Z
KCkudHlwZSgpID09IFBlcmNlbnQgPyBib3VuZGluZ0JveC55KCkgOiAwOwogICAgIAogICAgIGlm
IChhcHBseVRyYW5zZm9ybU9yaWdpbikgewotICAgICAgICB0cmFuc2Zvcm0udHJhbnNsYXRlM2Qo
dHJhbnNmb3JtT3JpZ2luWCgpLmNhbGNGbG9hdFZhbHVlKGJvdW5kaW5nQm94LndpZHRoKCkpICsg
b2Zmc2V0WCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybU9yaWdpblko
KS5jYWxjRmxvYXRWYWx1ZShib3VuZGluZ0JveC5oZWlnaHQoKSkgKyBvZmZzZXRZLAorICAgICAg
ICB0cmFuc2Zvcm0udHJhbnNsYXRlM2QoY2FsY3VsYXRlRmxvYXRWYWx1ZSh0cmFuc2Zvcm1Pcmln
aW5YKCksIGJvdW5kaW5nQm94LndpZHRoKCkpICsgb2Zmc2V0WCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNhbGN1bGF0ZUZsb2F0VmFsdWUodHJhbnNmb3JtT3JpZ2luWSgpLCBib3Vu
ZGluZ0JveC5oZWlnaHQoKSkgKyBvZmZzZXRZLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdHJhbnNmb3JtT3JpZ2luWigpKTsKICAgICB9CiAgICAgCkBAIC04MzEsOCArODMxLDggQEAg
dm9pZCBSZW5kZXJTdHlsZTo6YXBwbHlUcmFuc2Zvcm0oVHJhbnNmbwogICAgICAgICB0cmFuc2Zv
cm1PcGVyYXRpb25zW2ldLT5hcHBseSh0cmFuc2Zvcm0sIGJvdW5kaW5nQm94LnNpemUoKSk7CiAg
ICAgCiAgICAgaWYgKGFwcGx5VHJhbnNmb3JtT3JpZ2luKSB7Ci0gICAgICAgIHRyYW5zZm9ybS50
cmFuc2xhdGUzZCgtdHJhbnNmb3JtT3JpZ2luWCgpLmNhbGNGbG9hdFZhbHVlKGJvdW5kaW5nQm94
LndpZHRoKCkpIC0gb2Zmc2V0WCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC10cmFu
c2Zvcm1PcmlnaW5ZKCkuY2FsY0Zsb2F0VmFsdWUoYm91bmRpbmdCb3guaGVpZ2h0KCkpIC0gb2Zm
c2V0WSwKKyAgICAgICAgdHJhbnNmb3JtLnRyYW5zbGF0ZTNkKC1jYWxjdWxhdGVGbG9hdFZhbHVl
KHRyYW5zZm9ybU9yaWdpblgoKSwgYm91bmRpbmdCb3gud2lkdGgoKSkgLSBvZmZzZXRYLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgLWNhbGN1bGF0ZUZsb2F0VmFsdWUodHJhbnNmb3Jt
T3JpZ2luWSgpLCBib3VuZGluZ0JveC5oZWlnaHQoKSkgLSBvZmZzZXRZLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLXRyYW5zZm9ybU9yaWdpblooKSk7CiAgICAgfQogfQpAQCAtODc3
LDE0ICs4NzcsMTQgQEAgdm9pZCBSZW5kZXJTdHlsZTo6c2V0Qm94U2hhZG93KFBhc3NPd25QdAog
c3RhdGljIFJvdW5kZWRSZWN0OjpSYWRpaSBjYWxjUmFkaWlGb3IoY29uc3QgQm9yZGVyRGF0YSYg
Ym9yZGVyLCBMYXlvdXRTaXplIHNpemUpCiB7CiAgICAgcmV0dXJuIFJvdW5kZWRSZWN0OjpSYWRp
aSgKLSAgICAgICAgSW50U2l6ZShib3JkZXIudG9wTGVmdCgpLndpZHRoKCkuY2FsY1ZhbHVlKHNp
emUud2lkdGgoKSksIAotICAgICAgICAgICAgICAgIGJvcmRlci50b3BMZWZ0KCkuaGVpZ2h0KCku
Y2FsY1ZhbHVlKHNpemUuaGVpZ2h0KCkpKSwKLSAgICAgICAgSW50U2l6ZShib3JkZXIudG9wUmln
aHQoKS53aWR0aCgpLmNhbGNWYWx1ZShzaXplLndpZHRoKCkpLAotICAgICAgICAgICAgICAgIGJv
cmRlci50b3BSaWdodCgpLmhlaWdodCgpLmNhbGNWYWx1ZShzaXplLmhlaWdodCgpKSksCi0gICAg
ICAgIEludFNpemUoYm9yZGVyLmJvdHRvbUxlZnQoKS53aWR0aCgpLmNhbGNWYWx1ZShzaXplLndp
ZHRoKCkpLCAKLSAgICAgICAgICAgICAgICBib3JkZXIuYm90dG9tTGVmdCgpLmhlaWdodCgpLmNh
bGNWYWx1ZShzaXplLmhlaWdodCgpKSksCi0gICAgICAgIEludFNpemUoYm9yZGVyLmJvdHRvbVJp
Z2h0KCkud2lkdGgoKS5jYWxjVmFsdWUoc2l6ZS53aWR0aCgpKSwgCi0gICAgICAgICAgICAgICAg
Ym9yZGVyLmJvdHRvbVJpZ2h0KCkuaGVpZ2h0KCkuY2FsY1ZhbHVlKHNpemUuaGVpZ2h0KCkpKSk7
CisgICAgICAgIEludFNpemUoY2FsY3VsYXRlVmFsdWUoYm9yZGVyLnRvcExlZnQoKS53aWR0aCgp
LCBzaXplLndpZHRoKCkpLCAKKyAgICAgICAgICAgICAgICBjYWxjdWxhdGVWYWx1ZShib3JkZXIu
dG9wTGVmdCgpLmhlaWdodCgpLCBzaXplLmhlaWdodCgpKSksCisgICAgICAgIEludFNpemUoY2Fs
Y3VsYXRlVmFsdWUoYm9yZGVyLnRvcFJpZ2h0KCkud2lkdGgoKSwgc2l6ZS53aWR0aCgpKSwKKyAg
ICAgICAgICAgICAgICBjYWxjdWxhdGVWYWx1ZShib3JkZXIudG9wUmlnaHQoKS5oZWlnaHQoKSwg
c2l6ZS5oZWlnaHQoKSkpLAorICAgICAgICBJbnRTaXplKGNhbGN1bGF0ZVZhbHVlKGJvcmRlci5i
b3R0b21MZWZ0KCkud2lkdGgoKSwgc2l6ZS53aWR0aCgpKSwgCisgICAgICAgICAgICAgICAgY2Fs
Y3VsYXRlVmFsdWUoYm9yZGVyLmJvdHRvbUxlZnQoKS5oZWlnaHQoKSwgc2l6ZS5oZWlnaHQoKSkp
LAorICAgICAgICBJbnRTaXplKGNhbGN1bGF0ZVZhbHVlKGJvcmRlci5ib3R0b21SaWdodCgpLndp
ZHRoKCksIHNpemUud2lkdGgoKSksIAorICAgICAgICAgICAgICAgIGNhbGN1bGF0ZVZhbHVlKGJv
cmRlci5ib3R0b21SaWdodCgpLmhlaWdodCgpLCBzaXplLmhlaWdodCgpKSkpOwogfQogCiBzdGF0
aWMgZmxvYXQgY2FsY0NvbnN0cmFpbnRTY2FsZUZvcihjb25zdCBJbnRSZWN0JiByZWN0LCBjb25z
dCBSb3VuZGVkUmVjdDo6UmFkaWkmIHJhZGlpKQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgJKHJldmlzaW9uIDExMTExMSkKKysrIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
OSw2ICszOSw3IEBACiAjaW5jbHVkZSAiR3JhcGhpY3NUeXBlcy5oIgogI2luY2x1ZGUgIkxlbmd0
aC5oIgogI2luY2x1ZGUgIkxlbmd0aEJveC5oIgorI2luY2x1ZGUgIkxlbmd0aEZ1bmN0aW9ucy5o
IgogI2luY2x1ZGUgIkxlbmd0aFNpemUuaCIKICNpbmNsdWRlICJMaW5lQ2xhbXBWYWx1ZS5oIgog
I2luY2x1ZGUgIk5pbmVQaWVjZUltYWdlLmgiCkBAIC02MzAsNyArNjMxLDcgQEAgcHVibGljOgog
ICAgICAgICAgICAgcmV0dXJuIGZvbnRNZXRyaWNzKCkubGluZVNwYWNpbmcoKTsKIAogICAgICAg
ICBpZiAobGguaXNQZXJjZW50KCkpCi0gICAgICAgICAgICByZXR1cm4gbGguY2FsY01pblZhbHVl
KGZvbnRTaXplKCkpOworICAgICAgICAgICAgcmV0dXJuIGNhbGN1bGF0ZU1pbmltdW1WYWx1ZShs
aCwgZm9udFNpemUoKSk7CiAKICAgICAgICAgcmV0dXJuIGxoLnZhbHVlKCk7CiAgICAgfQpJbmRl
eDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuY3BwCShy
ZXZpc2lvbiAxMTExMTEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R1Jvb3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04Nyw5ICs4Nyw5IEBAIHZvaWQgUmVuZGVyU1ZH
Um9vdDo6Y29tcHV0ZUludHJpbnNpY1JhdGkKICAgICAvLyAgIHJlc29sdmluZyBib3RoIHZhbHVl
cyB0byB1c2VyIHVuaXRzLgogICAgIGlmIChpbnRyaW5zaWNXaWR0aEF0dHJpYnV0ZS5pc0ZpeGVk
KCkgfHwgaW50cmluc2ljSGVpZ2h0QXR0cmlidXRlLmlzRml4ZWQoKSkgewogICAgICAgICBpZiAo
aW50cmluc2ljV2lkdGhBdHRyaWJ1dGUuaXNGaXhlZCgpKQotICAgICAgICAgICAgaW50cmluc2lj
U2l6ZS5zZXRXaWR0aChpbnRyaW5zaWNXaWR0aEF0dHJpYnV0ZS5jYWxjRmxvYXRWYWx1ZSgwKSk7
CisgICAgICAgICAgICBpbnRyaW5zaWNTaXplLnNldFdpZHRoKGNhbGN1bGF0ZUZsb2F0VmFsdWUo
aW50cmluc2ljV2lkdGhBdHRyaWJ1dGUsIDApKTsKICAgICAgICAgaWYgKGludHJpbnNpY0hlaWdo
dEF0dHJpYnV0ZS5pc0ZpeGVkKCkpCi0gICAgICAgICAgICBpbnRyaW5zaWNTaXplLnNldEhlaWdo
dChpbnRyaW5zaWNIZWlnaHRBdHRyaWJ1dGUuY2FsY0Zsb2F0VmFsdWUoMCkpOworICAgICAgICAg
ICAgaW50cmluc2ljU2l6ZS5zZXRIZWlnaHQoY2FsY3VsYXRlRmxvYXRWYWx1ZShpbnRyaW5zaWNI
ZWlnaHRBdHRyaWJ1dGUsIDApKTsKICAgICAgICAgaWYgKCFpbnRyaW5zaWNTaXplLmlzRW1wdHko
KSkKICAgICAgICAgICAgIGludHJpbnNpY1JhdGlvID0gaW50cmluc2ljU2l6ZS53aWR0aCgpIC8g
c3RhdGljX2Nhc3Q8ZG91YmxlPihpbnRyaW5zaWNTaXplLmhlaWdodCgpKTsKICAgICAgICAgcmV0
dXJuOwpAQCAtMTUzLDcgKzE1Myw3IEBAIGJvb2wgUmVuZGVyU1ZHUm9vdDo6aXNFbWJlZGRlZFRo
cm91Z2hGcmEKIAogc3RhdGljIGlubGluZSBMYXlvdXRVbml0IHJlc29sdmVMZW5ndGhBdHRyaWJ1
dGVGb3JTVkcoY29uc3QgTGVuZ3RoJiBsZW5ndGgsIGZsb2F0IHNjYWxlLCBmbG9hdCBtYXhTaXpl
KQogewotICAgIHJldHVybiBzdGF0aWNfY2FzdDxMYXlvdXRVbml0PihsZW5ndGguY2FsY1ZhbHVl
KG1heFNpemUpICogKGxlbmd0aC5pc0ZpeGVkKCkgPyBzY2FsZSA6IDEpKTsKKyAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8TGF5b3V0VW5pdD4oY2FsY3VsYXRlVmFsdWUobGVuZ3RoLCBtYXhTaXplKSAq
IChsZW5ndGguaXNGaXhlZCgpID8gc2NhbGUgOiAxKSk7CiB9CiAKIExheW91dFVuaXQgUmVuZGVy
U1ZHUm9vdDo6Y29tcHV0ZVJlcGxhY2VkTG9naWNhbFdpZHRoKGJvb2wgaW5jbHVkZU1heFdpZHRo
KSBjb25zdApJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1NWR0VsZW1lbnQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTVkdFbGVtZW50LmNwcAkocmV2aXNpb24g
MTExMTExKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1NWR0VsZW1lbnQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC01NDEsNyArNTQxLDcgQEAgRmxvYXRSZWN0IFNWR1NWR0VsZW1lbnQ6OmN1cnJl
bnRWaWV3Qm94UgogCiAgICAgLy8gSWYgbm8gdmlld0JveCBpcyBzcGVjaWZpZWQgYnV0IG5vbi1y
ZWxhdGl2ZSB3aWR0aC9oZWlnaHQgdmFsdWVzLCB0aGVuIHdlCiAgICAgLy8gc2hvdWxkIGFsd2F5
cyBzeW50aGVzaXplIGEgdmlld0JveCBpZiB3ZSdyZSBlbWJlZGRlZCB0aHJvdWdoIGEgU1ZHSW1h
Z2UuICAgIAotICAgIHJldHVybiBGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBGbG9hdFNpemUoaW50
cmluc2ljV2lkdGguY2FsY0Zsb2F0VmFsdWUoMCksIGludHJpbnNpY0hlaWdodC5jYWxjRmxvYXRW
YWx1ZSgwKSkpOworICAgIHJldHVybiBGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBGbG9hdFNpemUo
Y2FsY3VsYXRlRmxvYXRWYWx1ZShpbnRyaW5zaWNXaWR0aCwgMCksIGNhbGN1bGF0ZUZsb2F0VmFs
dWUoaW50cmluc2ljSGVpZ2h0LCAwKSkpOwogfQogCiBGbG9hdFNpemUgU1ZHU1ZHRWxlbWVudDo6
Y3VycmVudFZpZXdwb3J0U2l6ZSgpIGNvbnN0CkBAIC01NDksNyArNTQ5LDcgQEAgRmxvYXRTaXpl
IFNWR1NWR0VsZW1lbnQ6OmN1cnJlbnRWaWV3cG9ydAogICAgIExlbmd0aCBpbnRyaW5zaWNXaWR0
aCA9IHRoaXMtPmludHJpbnNpY1dpZHRoKCk7CiAgICAgTGVuZ3RoIGludHJpbnNpY0hlaWdodCA9
IHRoaXMtPmludHJpbnNpY0hlaWdodCgpOwogICAgIGlmIChpbnRyaW5zaWNXaWR0aC5pc0ZpeGVk
KCkgJiYgaW50cmluc2ljSGVpZ2h0LmlzRml4ZWQoKSkKLSAgICAgICAgcmV0dXJuIEZsb2F0U2l6
ZShpbnRyaW5zaWNXaWR0aC5jYWxjRmxvYXRWYWx1ZSgwKSwgaW50cmluc2ljSGVpZ2h0LmNhbGNG
bG9hdFZhbHVlKDApKTsKKyAgICAgICAgcmV0dXJuIEZsb2F0U2l6ZShjYWxjdWxhdGVGbG9hdFZh
bHVlKGludHJpbnNpY1dpZHRoLCAwKSwgY2FsY3VsYXRlRmxvYXRWYWx1ZShpbnRyaW5zaWNIZWln
aHQsIDApKTsKIAogICAgIGlmICghcmVuZGVyZXIoKSkKICAgICAgICAgcmV0dXJuIEZsb2F0U2l6
ZSgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCShyZXZp
c2lvbiAxMTExMTEpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yOTMsNyArMjkzLDcgQEAgdm9pZCBTVkdJbWFnZTo6Y29tcHV0
ZUludHJpbnNpY0RpbWVuc2lvbgogCiAgICAgaW50cmluc2ljUmF0aW8gPSByb290RWxlbWVudC0+
dmlld0JveCgpLnNpemUoKTsKICAgICBpZiAoaW50cmluc2ljUmF0aW8uaXNFbXB0eSgpICYmIGlu
dHJpbnNpY1dpZHRoLmlzRml4ZWQoKSAmJiBpbnRyaW5zaWNIZWlnaHQuaXNGaXhlZCgpKQotICAg
ICAgICBpbnRyaW5zaWNSYXRpbyA9IEZsb2F0U2l6ZShpbnRyaW5zaWNXaWR0aC5jYWxjRmxvYXRW
YWx1ZSgwKSwgaW50cmluc2ljSGVpZ2h0LmNhbGNGbG9hdFZhbHVlKDApKTsKKyAgICAgICAgaW50
cmluc2ljUmF0aW8gPSBGbG9hdFNpemUoY2FsY3VsYXRlRmxvYXRWYWx1ZShpbnRyaW5zaWNXaWR0
aCwgMCksIGNhbGN1bGF0ZUZsb2F0VmFsdWUoaW50cmluc2ljSGVpZ2h0LCAwKSk7CiB9CiAKIE5h
dGl2ZUltYWdlUHRyIFNWR0ltYWdlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpCkluZGV4
OiBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nCShyZXZpc2lvbiAxMTExMTEpCisrKyBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNiBAQAorMjAxMi0wMy0xNiAgSm9lIFRob21hcyAg
PGpvZXRob21hc0Btb3Rvcm9sYS5jb20+CisKKyAgICAgICAgbW92ZSBjYWxjKlZhbHVlIGZ1bmN0
aW9ucyBvdXQgZnJvbSBMZW5ndGggKGFuZCBwbGF0Zm9ybSkKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgwODk3CisKKyAgICAgICAgTW92aW5nIHRoZSBM
ZW5ndGggY2FsYypWYWx1ZSBmdW5jdGlvbnMgb3V0IGZyb20gTGVuZ3RoIHN0cnVjdHVyZSBhbmQg
YWxzbyBmcm9tIC9XZWJDb3JlL3BsYXRmb3JtLyBmb2xkZXIuCisgICAgICAgIFRoaXMgaGVscHMg
dG8gYXZvaWQgdGhlIGxheWVyaW5nIHZpb2xhdGlvbiB3aGlsZSBsZW5ndGggY2FsY3VsYXRpb24u
IE90aGVyd2lzZSBsYXllciB2aW9sYXRpb24gY2FuIGJlIGF2b2lkZWQgb25seSBieSBhZGRpbmcg
YSB2aXJ0dWFsIGludGVyZmFjZShidWcgMjcxNjApLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC93aW4v
V2ViUG9wdXBNZW51V2luLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUG9wdXBNZW51OjpzZXRV
cFBsYXRmb3JtRGF0YSk6CisKIDIwMTItMDMtMTYgIFN0ZXBoYW5pZSBMZXdpcyAgPHNsZXdpc0Bh
cHBsZS5jb20+CiAKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTgxMDY1CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L3dpbi9XZWJQb3B1cE1lbnVXaW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvd2luL1dlYlBvcHVwTWVudVdpbi5jcHAJKHJldmlzaW9u
IDExMTExMSkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvd2lu
L1dlYlBvcHVwTWVudVdpbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDcgQEAKICNp
bmNsdWRlICJQbGF0Zm9ybVBvcHVwTWVudURhdGEuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0ZvbnQu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzQ29udGV4dC5oPgorI2luY2x1ZGUgPFdlYkNv
cmUvTGVuZ3RoRnVuY3Rpb25zLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9UZXh0UnVuLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9Qb3B1cE1lbnVDbGllbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BvcHVw
TWVudVN0eWxlLmg+CkBAIC0xMzUsNyArMTM2LDcgQEAgdm9pZCBXZWJQb3B1cE1lbnU6OnNldFVw
UGxhdGZvcm1EYXRhKGNvbgogICAgICAgICBpZiAoaXRlbVN0eWxlLmlzVmlzaWJsZSgpKSB7CiAg
ICAgICAgICAgICBpbnQgdGV4dFggPSBzdGQ6Om1heCgwLCBkYXRhLm1fY2xpZW50UGFkZGluZ0xl
ZnQgLSBkYXRhLm1fY2xpZW50SW5zZXRMZWZ0KTsKICAgICAgICAgICAgIGlmIChSZW5kZXJUaGVt
ZTo6ZGVmYXVsdFRoZW1lKCktPnBvcHVwT3B0aW9uU3VwcG9ydHNUZXh0SW5kZW50KCkgJiYgaXRl
bVN0eWxlLnRleHREaXJlY3Rpb24oKSA9PSBMVFIpCi0gICAgICAgICAgICAgICAgdGV4dFggKz0g
aXRlbVN0eWxlLnRleHRJbmRlbnQoKS5jYWxjTWluVmFsdWUoaXRlbVJlY3Qud2lkdGgoKSk7Cisg
ICAgICAgICAgICAgICAgdGV4dFggKz0gY2FsY3VsYXRlTWluaW11bVZhbHVlKGl0ZW1TdHlsZS50
ZXh0SW5kZW50KCksIGl0ZW1SZWN0LndpZHRoKCkpOwogICAgICAgICAgICAgaW50IHRleHRZID0g
aXRlbVJlY3QueSgpICsgaXRlbUZvbnQuZm9udE1ldHJpY3MoKS5hc2NlbnQoKSArIChpdGVtUmVj
dC5oZWlnaHQoKSAtIGl0ZW1Gb250LmZvbnRNZXRyaWNzKCkuaGVpZ2h0KCkpIC8gMjsKIAogICAg
ICAgICAgICAgbm90U2VsZWN0ZWRCYWNraW5nU3RvcmVDb250ZXh0LT5kcmF3QmlkaVRleHQoaXRl
bUZvbnQsIHRleHRSdW4sIEludFBvaW50KHRleHRYLCB0ZXh0WSkpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>132462</attachid>
            <date>2012-03-17 08:44:15 -0700</date>
            <delta_ts>2012-03-17 12:54:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch4</filename>
            <type>text/plain</type>
            <size>115917</size>
            <attacher name="Joe Thomas">joethomas</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDExMTEyMCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0NiBAQAorMjAxMi0wMy0xNyAgSm9lIFRo
b21hcyAgPGpvZXRob21hc0Btb3Rvcm9sYS5jb20+CisKKyAgICAgICAgbW92ZSBjYWxjKlZhbHVl
IGZ1bmN0aW9ucyBvdXQgZnJvbSBMZW5ndGggKGFuZCBwbGF0Zm9ybSkKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgwODk3CisKKyAgICAgICAgTW92aW5n
IHRoZSBMZW5ndGggY2FsYypWYWx1ZSBmdW5jdGlvbnMgb3V0IGZyb20gTGVuZ3RoIHN0cnVjdHVy
ZSBhbmQgYWxzbyBmcm9tIC9XZWJDb3JlL3BsYXRmb3JtLyBmb2xkZXIuCisgICAgICAgIFRoaXMg
aGVscHMgdG8gYXZvaWQgdGhlIGxheWVyaW5nIHZpb2xhdGlvbiB3aGlsZSBsZW5ndGggY2FsY3Vs
YXRpb24uIE90aGVyd2lzZSBsYXllciB2aW9sYXRpb24gY2FuIGJlIGF2b2lkZWQgb25seSBieSBh
ZGRpbmcgYSB2aXJ0dWFsIGludGVyZmFjZShidWcgMjcxNjApLgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbTogQnVp
bGQgc3lzdGVtIGNoYW5nZXMgZm9yIGFkZGluZyBuZXcgZmlsZXMuCisgICAgICAgICogVGFyZ2V0
LnByaTogRGl0dG8uCisgICAgICAgICogV2ViQ29yZS5neXBpOiBEaXR0by4KKyAgICAgICAgKiBX
ZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajogRGl0dG8uCisgICAgICAgICogV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBEaXR0by4KKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5
L2d0ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNlVGV4dC5jcHA6CisgICAgICAgIChnZXRBdHRy
aWJ1dGVTZXRGb3JBY2Nlc3NpYmlsaXR5T2JqZWN0KToKKyAgICAgICAgKiBjc3MvQ1NTQ29tcHV0
ZWRTdHlsZURlY2xhcmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0NvbXB1dGVkU3R5
bGVEZWNsYXJhdGlvbjo6Z2V0UHJvcGVydHlDU1NWYWx1ZSk6CisgICAgICAgICogY3NzL0xlbmd0
aEZ1bmN0aW9ucy5oOiBBZGRlZC4gTW92ZWQgY2FsYypWYWx1ZSBmdW5jdGlvbnMgb2YgTGVuZ3Ro
LgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpjYWxjdWxhdGVNaW5pbXVt
VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6Y2FsY3VsYXRlVmFsdWUpOgorICAgICAgICAoV2Vi
Q29yZTo6Y2FsY3VsYXRlRmxvYXRWYWx1ZSk6CisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpwYWdlU2l6ZUFuZE1hcmdpbnNJblBpeGVscyk6
CisgICAgICAgICogaHRtbC9IVE1MQXJlYUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTEFyZWFFbGVtZW50OjpnZXRSZWdpb24pOgorICAgICAgICAqIHBsYXRmb3JtL0NhbGN1bGF0
aW9uVmFsdWUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNhbGNFeHByZXNzaW9uTGVuZ3RoOjpldmFs
dWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vTGVuZ3RoLmg6IFJlbW92ZWQgdGhlIGNhbGMqVmFs
dWUgZnVuY3Rpb25zIGZyb20gTGVuZ3RoIHN0cnVjdHVyZS4KKyAgICAgICAgKExlbmd0aCk6Cisg
ICAgICAgIChXZWJDb3JlOjpMZW5ndGg6OmdldEZsb2F0VmFsdWUpOgorICAgICAgICAoV2ViQ29y
ZTo6TGVuZ3RoOjpnZXRJbnRWYWx1ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Ev
bWFjL1BsYXRmb3JtQ0FBbmltYXRpb25NYWMubW06CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2EvbWFjL1BsYXRmb3JtQ0FMYXllck1hYy5tbToKKyAgICAgICAgKFBsYXRmb3JtQ0FMYXll
cjo6c2V0RmlsdGVycyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NSZW5kZXJTdXJmYWNlRmlsdGVycy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1JlbmRlclN1
cmZhY2VGaWx0ZXJzOjphcHBseSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9GaWx0ZXJPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlck9wZXJhdGlv
bnM6OmdldE91dHNldHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMv
UGVyc3BlY3RpdmVUcmFuc2Zvcm1PcGVyYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGVy
c3BlY3RpdmVUcmFuc2Zvcm1PcGVyYXRpb246OmJsZW5kKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy90cmFuc2Zvcm1zL1BlcnNwZWN0aXZlVHJhbnNmb3JtT3BlcmF0aW9uLmg6CisgICAg
ICAgIChXZWJDb3JlOjpQZXJzcGVjdGl2ZVRyYW5zZm9ybU9wZXJhdGlvbjo6aXNJZGVudGl0eSk6
CisgICAgICAgIChXZWJDb3JlOjpQZXJzcGVjdGl2ZVRyYW5zZm9ybU9wZXJhdGlvbjo6YXBwbHkp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNsYXRlVHJhbnNm
b3JtT3BlcmF0aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpUcmFuc2xhdGVUcmFuc2Zvcm1PcGVy
YXRpb246OngpOgorICAgICAgICAoV2ViQ29yZTo6VHJhbnNsYXRlVHJhbnNmb3JtT3BlcmF0aW9u
Ojp5KToKKyAgICAgICAgKFdlYkNvcmU6OlRyYW5zbGF0ZVRyYW5zZm9ybU9wZXJhdGlvbjo6eik6
CisgICAgICAgIChXZWJDb3JlOjpUcmFuc2xhdGVUcmFuc2Zvcm1PcGVyYXRpb246OmlzSWRlbnRp
dHkpOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9Qb3B1cE1lbnVXaW4uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UG9wdXBNZW51V2luOjpwYWludCk6CisgICAgICAgICogcmVuZGVyaW5nL0F1dG9U
YWJsZUxheW91dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdXRvVGFibGVMYXlvdXQ6OmxheW91
dCk6CisgICAgICAgICogcmVuZGVyaW5nL0ZpbHRlckVmZmVjdFJlbmRlcmVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdFJlbmRlcmVyOjpidWlsZCk6CisgICAgICAgICogcmVu
ZGVyaW5nL0ZpeGVkVGFibGVMYXlvdXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rml4ZWRUYWJs
ZUxheW91dDo6bGF5b3V0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OnRleHRJbmRlbnRPZmZzZXQpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OmNvbXB1dGVJbmxpbmVQcmVmZXJyZWRMb2dpY2FsV2lk
dGhzKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckJveDo6cmVmbGVjdGlvbk9mZnNldCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJCb3g6OmNsaXBSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6Y29tcHV0ZUxv
Z2ljYWxXaWR0aEluUmVnaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6Y29tcHV0
ZUxvZ2ljYWxXaWR0aEluUmVnaW9uVXNpbmcpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94
Ojpjb21wdXRlSW5saW5lRGlyZWN0aW9uTWFyZ2lucyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJCb3g6OmNvbXB1dGVQZXJjZW50YWdlTG9naWNhbEhlaWdodCk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJCb3g6OmNvbXB1dGVSZXBsYWNlZExvZ2ljYWxXaWR0aFVzaW5nKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckJveDo6Y29tcHV0ZVJlcGxhY2VkTG9naWNhbEhlaWdodFVzaW5nKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6YXZhaWxhYmxlTG9naWNhbEhlaWdodFVzaW5n
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6Y29tcHV0ZUJsb2NrRGlyZWN0aW9uTWFy
Z2lucyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OmNvbXB1dGVQb3NpdGlvbmVkTG9n
aWNhbFdpZHRoVXNpbmcpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94Ojpjb21wdXRlUG9z
aXRpb25lZExvZ2ljYWxIZWlnaHRVc2luZyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6
OmNvbXB1dGVQb3NpdGlvbmVkTG9naWNhbFdpZHRoUmVwbGFjZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyQm94Ojpjb21wdXRlUG9zaXRpb25lZExvZ2ljYWxIZWlnaHRSZXBsYWNlZCk6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckJveE1vZGVsT2JqZWN0OjpyZWxhdGl2ZVBvc2l0aW9uT2Zmc2V0WCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9iamVjdDo6cmVsYXRpdmVQb3NpdGlvbk9m
ZnNldFkpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhZGRpbmdU
b3ApOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhZGRpbmdCb3R0
b20pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhZGRpbmdMZWZ0
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWRkaW5nUmlnaHQp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhZGRpbmdCZWZvcmUp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhZGRpbmdBZnRlcik6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFkZGluZ1N0YXJ0KToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWRkaW5nRW5kKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckJveE1vZGVsT2JqZWN0OjpjYWxjdWxhdGVGaWxsVGlsZVNp
emUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6OmNhbGN1bGF0ZUJh
Y2tncm91bmRJbWFnZUdlb21ldHJ5KToKKyAgICAgICAgKFdlYkNvcmU6OmNvbXB1dGVCb3JkZXJJ
bWFnZVNpZGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50
TmluZVBpZWNlSW1hZ2UpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGbGV4aWJsZUJveDo6cHJlZmVycmVkTWFpbkF4
aXNDb250ZW50RXh0ZW50Rm9yQ2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmxleGli
bGVCb3g6OmNvbXB1dGVNYWluQXhpc1ByZWZlcnJlZFNpemVzKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckZsZXhpYmxlQm94OjpydW5GcmVlU3BhY2VBbGxvY2F0aW9uQWxnb3JpdGhtKToKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRnJhbWVTZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyRnJhbWVTZXQ6OmxheU91dEF4aXMpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJJ
bmxpbmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29tcHV0ZU1hcmdpbik6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVy
OjpwZXJzcGVjdGl2ZVRyYW5zZm9ybSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6
cGVyc3BlY3RpdmVPcmlnaW4pOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckJhY2tp
bmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJCYWNraW5nOjpjb21wdXRlVHJh
bnNmb3JtT3JpZ2luKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQmFja2luZzo6Y29t
cHV0ZVBlcnNwZWN0aXZlT3JpZ2luKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTWFycXVl
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXJxdWVlOjp0aW1lckZpcmVkKToKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTWVudUxpc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyTWVudUxpc3Q6OnVwZGF0ZU9wdGlvbnNXaWR0aCk6CisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlck9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OnJlcGFp
bnRBZnRlckxheW91dElmTmVlZGVkKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyUmVwbGFj
ZWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyUmVwbGFjZWQ6OmNvbXB1dGVSZXBsYWNl
ZExvZ2ljYWxXaWR0aCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhclBhcnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Y2FsY1Njcm9sbGJhclRoaWNrbmVzc1VzaW5nKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclNjcm9sbGJhclBhcnQ6OmNvbXB1dGVTY3JvbGxiYXJXaWR0
aCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTY3JvbGxiYXJQYXJ0Ojpjb21wdXRlU2Nyb2xs
YmFySGVpZ2h0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGFibGUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyVGFibGU6OmNvbXB1dGVMb2dpY2FsV2lkdGgpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyVGFibGU6OmNvbnZlcnRTdHlsZUxvZ2ljYWxXaWR0aFRvQ29tcHV0ZWRX
aWR0aCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJUYWJsZUNlbGw6OmxvZ2ljYWxIZWlnaHRGb3JSb3dTaXppbmcpOgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rpb24uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyVGFibGVTZWN0aW9uOjpjYWxjUm93TG9naWNhbEhlaWdodCk6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlclRleHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHQ6
Om1hcmdpbkxlZnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dDo6bWFyZ2luUmlnaHQp
OgorICAgICAgICAqIHJlbmRlcmluZy9Sb290SW5saW5lQm94LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJvb3RJbmxpbmVCb3g6OnZlcnRpY2FsUG9zaXRpb25Gb3JCb3gpOgorICAgICAgICAqIHJl
bmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJT
dHlsZTo6YXBwbHlUcmFuc2Zvcm0pOgorICAgICAgICAoV2ViQ29yZTo6Y2FsY1JhZGlpRm9yKToK
KyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaDoKKyAgICAgICAgKiByZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZH
Um9vdDo6Y29tcHV0ZUludHJpbnNpY1JhdGlvSW5mb3JtYXRpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6cmVzb2x2ZUxlbmd0aEF0dHJpYnV0ZUZvclNWRyk6CisgICAgICAgICogc3ZnL1NWR1NWR0Vs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHU1ZHRWxlbWVudDo6Y3VycmVudFZpZXdC
b3hSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1NWR0VsZW1lbnQ6OmN1cnJlbnRWaWV3cG9y
dFNpemUpOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdJbWFnZTo6Y29tcHV0ZUludHJpbnNpY0RpbWVuc2lvbnMpOgorCiAyMDEyLTAz
LTE3ICBOaWtvbGFzIFppbW1lcm1hbm4gIDxuemltbWVybWFubkByaW0uY29tPgogCiAgICAgICAg
IEVuYWJsZSBhbmltVmFsIHN1cHBvcnQgZm9yIFNWR051bWJlck9wdGlvbmFsTnVtYmVyCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHJldmlzaW9uIDExMTEyMCkKKysrIFNvdXJj
ZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHdvcmtpbmcgY29weSkKQEAgLTE2NDUsNiAr
MTY0NSw3IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRG
ZWF0dXJlVmFsdWUuaCBcCiAJU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRWYWx1ZS5jcHAgXAogCVNv
dXJjZS9XZWJDb3JlL2Nzcy9Gb250VmFsdWUuaCBcCisJU291cmNlL1dlYkNvcmUvY3NzL0xlbmd0
aEZ1bmN0aW9ucy5oIFwKIAlTb3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFGZWF0dXJlTmFtZXMuY3Bw
IFwKIAlTb3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFGZWF0dXJlTmFtZXMuaCBcCiAJU291cmNlL1dl
YkNvcmUvY3NzL01lZGlhTGlzdC5jcHAgXApJbmRleDogU291cmNlL1dlYkNvcmUvVGFyZ2V0LnBy
aQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCShyZXZpc2lvbiAxMTEx
MjApCisrKyBTb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCSh3b3JraW5nIGNvcHkpCkBAIC0xNjA5
LDYgKzE2MDksNyBAQCBIRUFERVJTICs9IFwKICAgICBjc3MvQ1NTV3JhcFNoYXBlcy5oIFwKICAg
ICBjc3MvRm9udEZlYXR1cmVWYWx1ZS5oIFwKICAgICBjc3MvRm9udFZhbHVlLmggXAorICAgIGNz
cy9MZW5ndGhGdW5jdGlvbnMuaCBcCiAgICAgY3NzL01lZGlhRmVhdHVyZU5hbWVzLmggXAogICAg
IGNzcy9NZWRpYUxpc3QuaCBcCiAgICAgY3NzL01lZGlhUXVlcnkuaCBcCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLmd5cGkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5neXBpCShyZXZpc2lvbiAxMTExMjApCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkJ
KHdvcmtpbmcgY29weSkKQEAgLTg5LDYgKzg5LDcgQEAKICAgICAgICAgICAgICdjc3MvQ1NTVmFs
dWUuaCcsCiAgICAgICAgICAgICAnY3NzL0NTU1ZhbHVlTGlzdC5oJywKICAgICAgICAgICAgICdj
c3MvQ1NTV3JhcFNoYXBlcy5oJywKKyAgICAgICAgICAgICdjc3MvTGVuZ3RoRnVuY3Rpb25zLmgn
LAogICAgICAgICAgICAgJ2Nzcy9QYWlyLmgnLAogICAgICAgICAgICAgJ2Nzcy9XZWJLaXRDU1NG
aWx0ZXJWYWx1ZS5oJywKICAgICAgICAgICAgICdjc3MvV2ViS2l0Q1NTU2hhZGVyVmFsdWUuaCcs
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvago9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagko
cmV2aXNpb24gMTExMTIwKQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29y
ZS52Y3Byb2oJKHdvcmtpbmcgY29weSkKQEAgLTM2NDc0LDYgKzM2NDc0LDEwIEBACiAJCQkJPgog
CQkJPC9GaWxlPgogCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGNzc1xMZW5ndGhGdW5j
dGlvbnMuaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQogCQkJCVJlbGF0aXZlUGF0aD0i
Li5cY3NzXE1lZGlhQWxsSW5PbmUuY3BwIgogCQkJCT4KIAkJCQk8RmlsZUNvbmZpZ3VyYXRpb24K
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oJKHJldmlzaW9uIDExMTEyMCkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNTk1OCw2ICs1OTU4LDcgQEAK
IAkJRTRDMjc5NTkwQ0Y5NzQxOTAwRTk3Qjk4IC8qIFJlbmRlck1lZGlhLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNEMyNzk1NzBDRjk3NDE5MDBFOTdC
OTggLyogUmVuZGVyTWVkaWEuaCAqLzsgfTsKIAkJRTRENjg3NzcwRUQ3QUUzRDAwNkVBOTc4IC8q
IFB1cmdlYWJsZUJ1ZmZlck1hYy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBFNEQ2ODc3NjBFRDdBRTNEMDA2RUE5NzggLyogUHVyZ2VhYmxlQnVmZmVy
TWFjLmNwcCAqLzsgfTsKIAkJRTRENjg3NzkwRUQ3QUU0RjAwNkVBOTc4IC8qIFB1cmdlYWJsZUJ1
ZmZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTRE
Njg3NzgwRUQ3QUU0RjAwNkVBOTc4IC8qIFB1cmdlYWJsZUJ1ZmZlci5oICovOyB9OworCQlFNUJB
N0Q2MzE1MTQzN0NBMDBGRTFFM0YgLyogTGVuZ3RoRnVuY3Rpb25zLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNUJBN0Q2MjE1MTQzN0NBMDBGRTFFM0Yg
LyogTGVuZ3RoRnVuY3Rpb25zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJRUQyQkE4M0MwOUEyNEI5MTAwNkMwQUM0IC8qIERvY3VtZW50TWFya2Vy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFRDJCQTgz
QjA5QTI0QjkxMDA2QzBBQzQgLyogRG9jdW1lbnRNYXJrZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFRDUwMURDNjBCMjQ5RjI5MDBBRTE4RDkg
LyogRWRpdG9yTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRUQ1MDFEQzUwQjI0OUYyOTAwQUUxOEQ5IC8qIEVkaXRvck1hYy5tbSAqLzsgfTsKIAkJ
RURFM0E1MDAwQzdBNDMwNjAwOTU2QTM3IC8qIENvbG9yTWFjLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFREUzQTRGRjBDN0E0MzA2MDA5NTZBMzcgLyog
Q29sb3JNYWMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwpAQCAtMTMwNzEsNiArMTMwNzIsNyBAQAogCQlFNEMyNzk1NzBDRjk3NDE5MDBFOTdCOTggLyog
UmVuZGVyTWVkaWEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVuZGVyTWVk
aWEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTRENjg3NzYwRUQ3QUUzRDAwNkVB
OTc4IC8qIFB1cmdlYWJsZUJ1ZmZlck1hYy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBQdXJnZWFibGVCdWZmZXJNYWMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlFNEQ2ODc3ODBFRDdBRTRGMDA2RUE5NzggLyogUHVyZ2VhYmxlQnVmZmVyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFB1cmdlYWJsZUJ1ZmZlci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlFNUJBN0Q2MjE1MTQzN0NBMDBGRTFFM0YgLyogTGVuZ3Ro
RnVuY3Rpb25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExlbmd0aEZ1bmN0
aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFRDJCQTgzQjA5QTI0QjkxMDA2
QzBBQzQgLyogRG9jdW1lbnRNYXJrZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gRG9jdW1lbnRNYXJrZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRUQ1MDFE
QzUwQjI0OUYyOTAwQUUxOEQ5IC8qIEVkaXRvck1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IG5hbWUgPSBFZGl0b3JNYWMubW07IHBhdGggPSBtYWMvRWRpdG9yTWFjLm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFREUzQTRGRjBDN0E0MzA2MDA5NTZBMzcg
LyogQ29sb3JNYWMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29sb3JNYWMu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIwNDcxLDYgKzIwNDczLDcgQEAKIAkJ
CQlDRDRFMEFGQTExRjdCQzI3MDA5RDM4MTEgLyogZnVsbHNjcmVlbi5jc3MgKi8sCiAJCQkJQ0RC
RDkzQkExMzMzQkQ0QjAwMjU3MEUzIC8qIGZ1bGxzY3JlZW5RdWlja1RpbWUuY3NzICovLAogCQkJ
CTkzQ0E0Qzk5MDlERjkzRkEwMERGODY3NyAvKiBodG1sLmNzcyAqLywKKwkJCQlFNUJBN0Q2MjE1
MTQzN0NBMDBGRTFFM0YgLyogTGVuZ3RoRnVuY3Rpb25zLmggKi8sCiAJCQkJOTNDQTRDOUEwOURG
OTNGQTAwREY4Njc3IC8qIG1ha2UtY3NzLWZpbGUtYXJyYXlzLnBsICovLAogCQkJCTkzQ0E0QzlC
MDlERjkzRkEwMERGODY3NyAvKiBtYWtlcHJvcC5wbCAqLywKIAkJCQk5M0NBNEM5RDA5REY5M0ZB
MDBERjg2NzcgLyogbWFrZXZhbHVlcy5wbCAqLywKQEAgLTIzNDczLDYgKzIzNDc2LDcgQEAKIAkJ
CQk1MTJERDhGNTBEOTFFNkFGMDAwRjg5RUUgLyogTGVnYWN5V2ViQXJjaGl2ZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQkNFNjVCRUIwRUFDREYxNjAwN0U0NTMzIC8qIExlbmd0aC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQkNGRjY0OTEwRUFEMTVDMjAwQzFENkY3IC8qIExlbmd0aEJveC5oIGluIEhl
YWRlcnMgKi8sCisJCQkJRTVCQTdENjMxNTE0MzdDQTAwRkUxRTNGIC8qIExlbmd0aEZ1bmN0aW9u
cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNGRjY0OTIwRUFEMTVDMjAwQzFENkY3IC8qIExlbmd0
aFNpemUuaCBpbiBIZWFkZXJzICovLAogCQkJCThDQURGMkE5MTM1QzdCMzYwMDlFRjQzRiAvKiBM
ZXZlbERCQ29tcGFyYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOENBREYyQUIxMzVDN0IzNjAw
OUVGNDNGIC8qIExldmVsREJEYXRhYmFzZS5oIGluIEhlYWRlcnMgKi8sCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2d0ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNlVGV4dC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9ndGsvV2ViS2l0
QWNjZXNzaWJsZUludGVyZmFjZVRleHQuY3BwCShyZXZpc2lvbiAxMTExMjApCisrKyBTb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2d0ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNlVGV4dC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTI0MCw3ICsyNDAsNyBAQCBzdGF0aWMgQXRrQXR0cmlidXRl
U2V0KiBnZXRBdHRyaWJ1dGVTZXRGCiAgICAgfQogCiAgICAgaWYgKCFzdHlsZS0+dGV4dEluZGVu
dCgpLmlzVW5kZWZpbmVkKCkpIHsKLSAgICAgICAgaW50IGluZGVudGF0aW9uID0gc3R5bGUtPnRl
eHRJbmRlbnQoKS5jYWxjVmFsdWUob2JqZWN0LT5zaXplKCkud2lkdGgoKSk7CisgICAgICAgIGlu
dCBpbmRlbnRhdGlvbiA9IHZhbHVlRm9yTGVuZ3RoKHN0eWxlLT50ZXh0SW5kZW50KCksIG9iamVj
dC0+c2l6ZSgpLndpZHRoKCkpOwogICAgICAgICBidWZmZXIuc2V0KGdfc3RyZHVwX3ByaW50Zigi
JWkiLCBpbmRlbnRhdGlvbikpOwogICAgICAgICByZXN1bHQgPSBhZGRUb0F0a0F0dHJpYnV0ZVNl
dChyZXN1bHQsIGF0a190ZXh0X2F0dHJpYnV0ZV9nZXRfbmFtZShBVEtfVEVYVF9BVFRSX0lOREVO
VCksIGJ1ZmZlci5nZXQoKSk7CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NTU0Nv
bXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAJKHJldmlzaW9uIDExMTEyMCkKKysr
IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNzc0LDcgKzE3NzQsNyBAQCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBDU1ND
b21wdXRlZFN0eWxlRGVjCiAgICAgICAgICAgICAgICAgLy8gUmVuZGVyQm94IGdpdmVzIGEgbWFy
Z2luUmlnaHQoKSB0aGF0IGlzIHRoZSBkaXN0YW5jZSBiZXR3ZWVuIHRoZSByaWdodC1lZGdlIG9m
IHRoZSBjaGlsZCBib3gKICAgICAgICAgICAgICAgICAvLyBhbmQgdGhlIHJpZ2h0LWVkZ2Ugb2Yg
dGhlIGNvbnRhaW5pbmcgYm94LCB3aGVuIGRpc3BsYXkgPT0gQkxPQ0suIExldCdzIGNhbGN1bGF0
ZSB0aGUgYWJzb2x1dGUKICAgICAgICAgICAgICAgICAvLyB2YWx1ZSBvZiB0aGUgc3BlY2lmaWVk
IG1hcmdpbi1yaWdodCAlIGluc3RlYWQgb2YgcmVseWluZyBvbiBSZW5kZXJCb3gncyBtYXJnaW5S
aWdodCgpIHZhbHVlLgotICAgICAgICAgICAgICAgIHZhbHVlID0gbWFyZ2luUmlnaHQuY2FsY01p
blZhbHVlKHRvUmVuZGVyQm94KHJlbmRlcmVyKS0+Y29udGFpbmluZ0Jsb2NrTG9naWNhbFdpZHRo
Rm9yQ29udGVudCgpKTsKKyAgICAgICAgICAgICAgICB2YWx1ZSA9IG1pbWludW1WYWx1ZUZvckxl
bmd0aChtYXJnaW5SaWdodCwgdG9SZW5kZXJCb3gocmVuZGVyZXIpLT5jb250YWluaW5nQmxvY2tM
b2dpY2FsV2lkdGhGb3JDb250ZW50KCkpOwogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAg
ICAgIHZhbHVlID0gdG9SZW5kZXJCb3gocmVuZGVyZXIpLT5tYXJnaW5SaWdodCgpOwogICAgICAg
ICAgICAgcmV0dXJuIHpvb21BZGp1c3RlZFBpeGVsVmFsdWUodmFsdWUsIHN0eWxlLmdldCgpLCBj
c3NWYWx1ZVBvb2wpOwpAQCAtMjE4Niw4ICsyMTg2LDggQEAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4g
Q1NTQ29tcHV0ZWRTdHlsZURlYwogICAgICAgICAgICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4gbGlz
dCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsKICAgICAgICAgICAgIGlm
IChyZW5kZXJlcikgewogICAgICAgICAgICAgICAgIExheW91dFJlY3QgYm94ID0gc2l6aW5nQm94
KHJlbmRlcmVyKTsKLSAgICAgICAgICAgICAgICBsaXN0LT5hcHBlbmQoem9vbUFkanVzdGVkUGl4
ZWxWYWx1ZShzdHlsZS0+cGVyc3BlY3RpdmVPcmlnaW5YKCkuY2FsY01pblZhbHVlKGJveC53aWR0
aCgpKSwgc3R5bGUuZ2V0KCksIGNzc1ZhbHVlUG9vbCkpOwotICAgICAgICAgICAgICAgIGxpc3Qt
PmFwcGVuZCh6b29tQWRqdXN0ZWRQaXhlbFZhbHVlKHN0eWxlLT5wZXJzcGVjdGl2ZU9yaWdpblko
KS5jYWxjTWluVmFsdWUoYm94LmhlaWdodCgpKSwgc3R5bGUuZ2V0KCksIGNzc1ZhbHVlUG9vbCkp
OworICAgICAgICAgICAgICAgIGxpc3QtPmFwcGVuZCh6b29tQWRqdXN0ZWRQaXhlbFZhbHVlKG1p
bWludW1WYWx1ZUZvckxlbmd0aChzdHlsZS0+cGVyc3BlY3RpdmVPcmlnaW5YKCksIGJveC53aWR0
aCgpKSwgc3R5bGUuZ2V0KCksIGNzc1ZhbHVlUG9vbCkpOworICAgICAgICAgICAgICAgIGxpc3Qt
PmFwcGVuZCh6b29tQWRqdXN0ZWRQaXhlbFZhbHVlKG1pbWludW1WYWx1ZUZvckxlbmd0aChzdHls
ZS0+cGVyc3BlY3RpdmVPcmlnaW5ZKCksIGJveC5oZWlnaHQoKSksIHN0eWxlLmdldCgpLCBjc3NW
YWx1ZVBvb2wpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAg
ICAgICAgIGxpc3QtPmFwcGVuZCh6b29tQWRqdXN0ZWRQaXhlbFZhbHVlRm9yTGVuZ3RoKHN0eWxl
LT5wZXJzcGVjdGl2ZU9yaWdpblgoKSwgc3R5bGUuZ2V0KCksIGNzc1ZhbHVlUG9vbCkpOwpAQCAt
MjIzMiw4ICsyMjMyLDggQEAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gQ1NTQ29tcHV0ZWRTdHlsZURl
YwogICAgICAgICAgICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4gbGlzdCA9IENTU1ZhbHVlTGlzdDo6
Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsKICAgICAgICAgICAgIGlmIChyZW5kZXJlcikgewogICAg
ICAgICAgICAgICAgIEludFJlY3QgYm94ID0gc2l6aW5nQm94KHJlbmRlcmVyKTsKLSAgICAgICAg
ICAgICAgICBsaXN0LT5hcHBlbmQoem9vbUFkanVzdGVkUGl4ZWxWYWx1ZShzdHlsZS0+dHJhbnNm
b3JtT3JpZ2luWCgpLmNhbGNNaW5WYWx1ZShib3gud2lkdGgoKSksIHN0eWxlLmdldCgpLCBjc3NW
YWx1ZVBvb2wpKTsKLSAgICAgICAgICAgICAgICBsaXN0LT5hcHBlbmQoem9vbUFkanVzdGVkUGl4
ZWxWYWx1ZShzdHlsZS0+dHJhbnNmb3JtT3JpZ2luWSgpLmNhbGNNaW5WYWx1ZShib3guaGVpZ2h0
KCkpLCBzdHlsZS5nZXQoKSwgY3NzVmFsdWVQb29sKSk7CisgICAgICAgICAgICAgICAgbGlzdC0+
YXBwZW5kKHpvb21BZGp1c3RlZFBpeGVsVmFsdWUobWltaW51bVZhbHVlRm9yTGVuZ3RoKHN0eWxl
LT50cmFuc2Zvcm1PcmlnaW5YKCksIGJveC53aWR0aCgpKSwgc3R5bGUuZ2V0KCksIGNzc1ZhbHVl
UG9vbCkpOworICAgICAgICAgICAgICAgIGxpc3QtPmFwcGVuZCh6b29tQWRqdXN0ZWRQaXhlbFZh
bHVlKG1pbWludW1WYWx1ZUZvckxlbmd0aChzdHlsZS0+dHJhbnNmb3JtT3JpZ2luWSgpLCBib3gu
aGVpZ2h0KCkpLCBzdHlsZS5nZXQoKSwgY3NzVmFsdWVQb29sKSk7CiAgICAgICAgICAgICAgICAg
aWYgKHN0eWxlLT50cmFuc2Zvcm1PcmlnaW5aKCkgIT0gMCkKICAgICAgICAgICAgICAgICAgICAg
bGlzdC0+YXBwZW5kKHpvb21BZGp1c3RlZFBpeGVsVmFsdWUoc3R5bGUtPnRyYW5zZm9ybU9yaWdp
blooKSwgc3R5bGUuZ2V0KCksIGNzc1ZhbHVlUG9vbCkpOwogICAgICAgICAgICAgfSBlbHNlIHsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9MZW5ndGhGdW5jdGlvbnMuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9jc3MvTGVuZ3RoRnVuY3Rpb25zLmgJKHJldmlzaW9uIDApCisrKyBT
b3VyY2UvV2ViQ29yZS9jc3MvTGVuZ3RoRnVuY3Rpb25zLmgJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsMTIzIEBACisvKgorICAgIENvcHlyaWdodCAoQykgMTk5OSBMYXJzIEtub2xsIChrbm9sbEBr
ZGUub3JnKQorICAgIENvcHlyaWdodCAoQykgMjAwNiwgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgICAgQ29weXJpZ2h0IChDKSAyMDExIFJpayBDYWJhbmllciAoY2FiYW5p
ZXJAYWRvYmUuY29tKQorICAgIENvcHlyaWdodCAoQykgMjAxMSBBZG9iZSBTeXN0ZW1zIEluY29y
cG9yYXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAgICBDb3B5cmlnaHQgKEMpIDIwMTIgTW90
b3JvbGEgTW9iaWxpdHksIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKworICAgIFRoaXMgbGli
cmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAg
ICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIg
b3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmli
dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VU
IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAg
TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl
IHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0
YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFy
eTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGgg
Rmxvb3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisqLworCisjaWZuZGVmIExl
bmd0aEZ1bmN0aW9uc19oCisjZGVmaW5lIExlbmd0aEZ1bmN0aW9uc19oCisKKyNpbmNsdWRlICJM
ZW5ndGguaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitpbmxpbmUgaW50IG1pbWludW1WYWx1
ZUZvckxlbmd0aChMZW5ndGggbGVuZ3RoLCBpbnQgbWF4aW11bVZhbHVlLCBib29sIHJvdW5kUGVy
Y2VudGFnZXMgPSBmYWxzZSkKK3sKKyAgICBzd2l0Y2ggKGxlbmd0aC50eXBlKCkpIHsKKyAgICBj
YXNlIEZpeGVkOgorICAgICAgICByZXR1cm4gbGVuZ3RoLnZhbHVlKCk7CisgICAgY2FzZSBQZXJj
ZW50OgorICAgICAgICBpZiAocm91bmRQZXJjZW50YWdlcykKKyAgICAgICAgICAgIHJldHVybiBz
dGF0aWNfY2FzdDxpbnQ+KHJvdW5kKG1heGltdW1WYWx1ZSAqIGxlbmd0aC5wZXJjZW50KCkgLyAx
MDAuMGYpKTsKKyAgICAgICAgLy8gRG9uJ3QgcmVtb3ZlIHRoZSBleHRyYSBjYXN0IHRvIGZsb2F0
LiBJdCBpcyBuZWVkZWQgZm9yIHJvdW5kaW5nIG9uIDMyLWJpdCBJbnRlbCBtYWNoaW5lcyB0aGF0
IHVzZSB0aGUgRlBVIHN0YWNrLgorICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihzdGF0
aWNfY2FzdDxmbG9hdD4obWF4aW11bVZhbHVlICogbGVuZ3RoLnBlcmNlbnQoKSAvIDEwMC4wZikp
OworICAgIGNhc2UgQ2FsY3VsYXRlZDoKKyAgICAgICAgcmV0dXJuIGxlbmd0aC5ub25OYW5DYWxj
dWxhdGVkVmFsdWUobWF4aW11bVZhbHVlKTsKKyAgICBjYXNlIEF1dG86CisgICAgICAgIHJldHVy
biAwOworICAgIGNhc2UgUmVsYXRpdmU6CisgICAgY2FzZSBJbnRyaW5zaWM6CisgICAgY2FzZSBN
aW5JbnRyaW5zaWM6CisgICAgY2FzZSBVbmRlZmluZWQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CisgICAgcmV0dXJuIDA7Cit9CisKK2lubGluZSBpbnQgdmFsdWVGb3JMZW5ndGgoTGVuZ3Ro
IGxlbmd0aCwgaW50IG1heGltdW1WYWx1ZSwgYm9vbCByb3VuZFBlcmNlbnRhZ2VzID0gZmFsc2Up
Cit7CisgICAgc3dpdGNoIChsZW5ndGgudHlwZSgpKSB7CisgICAgY2FzZSBGaXhlZDoKKyAgICBj
YXNlIFBlcmNlbnQ6CisgICAgY2FzZSBDYWxjdWxhdGVkOgorICAgICAgICByZXR1cm4gbWltaW51
bVZhbHVlRm9yTGVuZ3RoKGxlbmd0aCwgbWF4aW11bVZhbHVlLCByb3VuZFBlcmNlbnRhZ2VzKTsK
KyAgICBjYXNlIEF1dG86CisgICAgICAgIHJldHVybiBtYXhpbXVtVmFsdWU7CisgICAgY2FzZSBS
ZWxhdGl2ZToKKyAgICBjYXNlIEludHJpbnNpYzoKKyAgICBjYXNlIE1pbkludHJpbnNpYzoKKyAg
ICBjYXNlIFVuZGVmaW5lZDoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAg
IHJldHVybiAwOworICAgIH0KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4g
MDsKK30KKworLy8gRklYTUU6IHdoZW4gc3VicGl4ZWwgbGF5b3V0IGlzIHN1cHBvcnRlZCB0aGlz
IGNvcHkgb2YgZmxvYXRWYWx1ZUZvckxlbmd0aCgpIGNhbiBiZSByZW1vdmVkLiBTZWUgYnVnIDcx
MTQzLgoraW5saW5lIGZsb2F0IGZsb2F0VmFsdWVGb3JMZW5ndGgoTGVuZ3RoIGxlbmd0aCwgaW50
IG1heGltdW1WYWx1ZSkKK3sKKyAgICBzd2l0Y2ggKGxlbmd0aC50eXBlKCkpIHsKKyAgICBjYXNl
IEZpeGVkOgorICAgICAgICByZXR1cm4gbGVuZ3RoLmdldEZsb2F0VmFsdWUoKTsKKyAgICBjYXNl
IFBlcmNlbnQ6CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxmbG9hdD4obWF4aW11bVZhbHVl
ICogbGVuZ3RoLnBlcmNlbnQoKSAvIDEwMC4wZik7CisgICAgY2FzZSBBdXRvOgorICAgICAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8ZmxvYXQ+KG1heGltdW1WYWx1ZSk7CisgICAgY2FzZSBDYWxjdWxh
dGVkOgorICAgICAgICByZXR1cm4gbGVuZ3RoLm5vbk5hbkNhbGN1bGF0ZWRWYWx1ZShtYXhpbXVt
VmFsdWUpOyAgICAgICAgICAgICAgICAKKyAgICBjYXNlIFJlbGF0aXZlOgorICAgIGNhc2UgSW50
cmluc2ljOgorICAgIGNhc2UgTWluSW50cmluc2ljOgorICAgIGNhc2UgVW5kZWZpbmVkOgorICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiAwOworfQorCitpbmxpbmUgZmxvYXQg
ZmxvYXRWYWx1ZUZvckxlbmd0aChMZW5ndGggbGVuZ3RoLCBmbG9hdCBtYXhpbXVtVmFsdWUpCit7
CisgICAgc3dpdGNoIChsZW5ndGgudHlwZSgpKSB7CisgICAgY2FzZSBGaXhlZDoKKyAgICAgICAg
cmV0dXJuIGxlbmd0aC5nZXRGbG9hdFZhbHVlKCk7CisgICAgY2FzZSBQZXJjZW50OgorICAgICAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8ZmxvYXQ+KG1heGltdW1WYWx1ZSAqIGxlbmd0aC5wZXJjZW50
KCkgLyAxMDAuMGYpOworICAgIGNhc2UgQXV0bzoKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0
PGZsb2F0PihtYXhpbXVtVmFsdWUpOworICAgIGNhc2UgQ2FsY3VsYXRlZDoKKyAgICAgICAgcmV0
dXJuIGxlbmd0aC5ub25OYW5DYWxjdWxhdGVkVmFsdWUobWF4aW11bVZhbHVlKTsKKyAgICBjYXNl
IFJlbGF0aXZlOgorICAgIGNhc2UgSW50cmluc2ljOgorICAgIGNhc2UgTWluSW50cmluc2ljOgor
ICAgIGNhc2UgVW5kZWZpbmVkOgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAg
ICAgcmV0dXJuIDA7CisgICAgfQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVy
biAwOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBMZW5ndGhGdW5j
dGlvbnNfaApJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCShyZXZpc2lvbiAxMTExMjApCisr
KyBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODAy
LDggKzE4MDIsOCBAQCB2b2lkIERvY3VtZW50OjpwYWdlU2l6ZUFuZE1hcmdpbnNJblBpeGVsCiAg
ICAgICAgIExlbmd0aFNpemUgc2l6ZSA9IHN0eWxlLT5wYWdlU2l6ZSgpOwogICAgICAgICBBU1NF
UlQoc2l6ZS53aWR0aCgpLmlzRml4ZWQoKSk7CiAgICAgICAgIEFTU0VSVChzaXplLmhlaWdodCgp
LmlzRml4ZWQoKSk7Ci0gICAgICAgIHdpZHRoID0gc2l6ZS53aWR0aCgpLmNhbGNWYWx1ZSgwKTsK
LSAgICAgICAgaGVpZ2h0ID0gc2l6ZS5oZWlnaHQoKS5jYWxjVmFsdWUoMCk7CisgICAgICAgIHdp
ZHRoID0gdmFsdWVGb3JMZW5ndGgoc2l6ZS53aWR0aCgpLCAwKTsKKyAgICAgICAgaGVpZ2h0ID0g
dmFsdWVGb3JMZW5ndGgoc2l6ZS5oZWlnaHQoKSwgMCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0K
ICAgICBkZWZhdWx0OgpAQCAtMTgxMywxMCArMTgxMywxMCBAQCB2b2lkIERvY3VtZW50OjpwYWdl
U2l6ZUFuZE1hcmdpbnNJblBpeGVsCiAKICAgICAvLyBUaGUgcGVyY2VudGFnZSBpcyBjYWxjdWxh
dGVkIHdpdGggcmVzcGVjdCB0byB0aGUgd2lkdGggZXZlbiBmb3IgbWFyZ2luIHRvcCBhbmQgYm90
dG9tLgogICAgIC8vIGh0dHA6Ly93d3cudzMub3JnL1RSL0NTUzIvYm94Lmh0bWwjbWFyZ2luLXBy
b3BlcnRpZXMKLSAgICBtYXJnaW5Ub3AgPSBzdHlsZS0+bWFyZ2luVG9wKCkuaXNBdXRvKCkgPyBt
YXJnaW5Ub3AgOiBzdHlsZS0+bWFyZ2luVG9wKCkuY2FsY1ZhbHVlKHdpZHRoKTsKLSAgICBtYXJn
aW5SaWdodCA9IHN0eWxlLT5tYXJnaW5SaWdodCgpLmlzQXV0bygpID8gbWFyZ2luUmlnaHQgOiBz
dHlsZS0+bWFyZ2luUmlnaHQoKS5jYWxjVmFsdWUod2lkdGgpOwotICAgIG1hcmdpbkJvdHRvbSA9
IHN0eWxlLT5tYXJnaW5Cb3R0b20oKS5pc0F1dG8oKSA/IG1hcmdpbkJvdHRvbSA6IHN0eWxlLT5t
YXJnaW5Cb3R0b20oKS5jYWxjVmFsdWUod2lkdGgpOwotICAgIG1hcmdpbkxlZnQgPSBzdHlsZS0+
bWFyZ2luTGVmdCgpLmlzQXV0bygpID8gbWFyZ2luTGVmdCA6IHN0eWxlLT5tYXJnaW5MZWZ0KCku
Y2FsY1ZhbHVlKHdpZHRoKTsKKyAgICBtYXJnaW5Ub3AgPSBzdHlsZS0+bWFyZ2luVG9wKCkuaXNB
dXRvKCkgPyBtYXJnaW5Ub3AgOiB2YWx1ZUZvckxlbmd0aChzdHlsZS0+bWFyZ2luVG9wKCksIHdp
ZHRoKTsKKyAgICBtYXJnaW5SaWdodCA9IHN0eWxlLT5tYXJnaW5SaWdodCgpLmlzQXV0bygpID8g
bWFyZ2luUmlnaHQgOiB2YWx1ZUZvckxlbmd0aChzdHlsZS0+bWFyZ2luUmlnaHQoKSwgd2lkdGgp
OworICAgIG1hcmdpbkJvdHRvbSA9IHN0eWxlLT5tYXJnaW5Cb3R0b20oKS5pc0F1dG8oKSA/IG1h
cmdpbkJvdHRvbSA6IHZhbHVlRm9yTGVuZ3RoKHN0eWxlLT5tYXJnaW5Cb3R0b20oKSwgd2lkdGgp
OworICAgIG1hcmdpbkxlZnQgPSBzdHlsZS0+bWFyZ2luTGVmdCgpLmlzQXV0bygpID8gbWFyZ2lu
TGVmdCA6IHZhbHVlRm9yTGVuZ3RoKHN0eWxlLT5tYXJnaW5MZWZ0KCksIHdpZHRoKTsKIH0KIAog
UGFzc1JlZlB0cjxDU1NWYWx1ZVBvb2w+IERvY3VtZW50Ojpjc3NWYWx1ZVBvb2woKSBjb25zdApJ
bmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXJlYUVsZW1lbnQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFyZWFFbGVtZW50LmNwcAkocmV2aXNpb24gMTEx
MTIwKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXJlYUVsZW1lbnQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xNDcsMjUgKzE0NywyNSBAQCBQYXRoIEhUTUxBcmVhRWxlbWVudDo6Z2V0UmVn
aW9uKGNvbnN0IExhCiAgICAgICAgIGNhc2UgUG9seToKICAgICAgICAgICAgIGlmIChtX2Nvb3Jk
c0xlbiA+PSA2KSB7CiAgICAgICAgICAgICAgICAgaW50IG51bVBvaW50cyA9IG1fY29vcmRzTGVu
IC8gMjsKLSAgICAgICAgICAgICAgICBwYXRoLm1vdmVUbyhGbG9hdFBvaW50KG1fY29vcmRzWzBd
LmNhbGNNaW5WYWx1ZSh3aWR0aCksIG1fY29vcmRzWzFdLmNhbGNNaW5WYWx1ZShoZWlnaHQpKSk7
CisgICAgICAgICAgICAgICAgcGF0aC5tb3ZlVG8oRmxvYXRQb2ludChtaW1pbnVtVmFsdWVGb3JM
ZW5ndGgobV9jb29yZHNbMF0sIHdpZHRoKSwgbWltaW51bVZhbHVlRm9yTGVuZ3RoKG1fY29vcmRz
WzFdLCBoZWlnaHQpKSk7CiAgICAgICAgICAgICAgICAgZm9yIChpbnQgaSA9IDE7IGkgPCBudW1Q
b2ludHM7ICsraSkKLSAgICAgICAgICAgICAgICAgICAgcGF0aC5hZGRMaW5lVG8oRmxvYXRQb2lu
dChtX2Nvb3Jkc1tpICogMl0uY2FsY01pblZhbHVlKHdpZHRoKSwgbV9jb29yZHNbaSAqIDIgKyAx
XS5jYWxjTWluVmFsdWUoaGVpZ2h0KSkpOworICAgICAgICAgICAgICAgICAgICBwYXRoLmFkZExp
bmVUbyhGbG9hdFBvaW50KG1pbWludW1WYWx1ZUZvckxlbmd0aChtX2Nvb3Jkc1tpICogMl0sIHdp
ZHRoKSwgbWltaW51bVZhbHVlRm9yTGVuZ3RoKG1fY29vcmRzW2kgKiAyICsgMV0sIGhlaWdodCkp
KTsKICAgICAgICAgICAgICAgICBwYXRoLmNsb3NlU3VicGF0aCgpOwogICAgICAgICAgICAgfQog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ2lyY2xlOgogICAgICAgICAgICAgaWYg
KG1fY29vcmRzTGVuID49IDMpIHsKICAgICAgICAgICAgICAgICBMZW5ndGggcmFkaXVzID0gbV9j
b29yZHNbMl07Ci0gICAgICAgICAgICAgICAgaW50IHIgPSBtaW4ocmFkaXVzLmNhbGNNaW5WYWx1
ZSh3aWR0aCksIHJhZGl1cy5jYWxjTWluVmFsdWUoaGVpZ2h0KSk7Ci0gICAgICAgICAgICAgICAg
cGF0aC5hZGRFbGxpcHNlKEZsb2F0UmVjdChtX2Nvb3Jkc1swXS5jYWxjTWluVmFsdWUod2lkdGgp
IC0gciwgbV9jb29yZHNbMV0uY2FsY01pblZhbHVlKGhlaWdodCkgLSByLCAyICogciwgMiAqIHIp
KTsKKyAgICAgICAgICAgICAgICBpbnQgciA9IG1pbihtaW1pbnVtVmFsdWVGb3JMZW5ndGgocmFk
aXVzLCB3aWR0aCksIG1pbWludW1WYWx1ZUZvckxlbmd0aChyYWRpdXMsIGhlaWdodCkpOworICAg
ICAgICAgICAgICAgIHBhdGguYWRkRWxsaXBzZShGbG9hdFJlY3QobWltaW51bVZhbHVlRm9yTGVu
Z3RoKG1fY29vcmRzWzBdLCB3aWR0aCkgLSByLCBtaW1pbnVtVmFsdWVGb3JMZW5ndGgobV9jb29y
ZHNbMV0sIGhlaWdodCkgLSByLCAyICogciwgMiAqIHIpKTsKICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFJlY3Q6CiAgICAgICAgICAgICBpZiAobV9jb29y
ZHNMZW4gPj0gNCkgewotICAgICAgICAgICAgICAgIGludCB4MCA9IG1fY29vcmRzWzBdLmNhbGNN
aW5WYWx1ZSh3aWR0aCk7Ci0gICAgICAgICAgICAgICAgaW50IHkwID0gbV9jb29yZHNbMV0uY2Fs
Y01pblZhbHVlKGhlaWdodCk7Ci0gICAgICAgICAgICAgICAgaW50IHgxID0gbV9jb29yZHNbMl0u
Y2FsY01pblZhbHVlKHdpZHRoKTsKLSAgICAgICAgICAgICAgICBpbnQgeTEgPSBtX2Nvb3Jkc1sz
XS5jYWxjTWluVmFsdWUoaGVpZ2h0KTsKKyAgICAgICAgICAgICAgICBpbnQgeDAgPSBtaW1pbnVt
VmFsdWVGb3JMZW5ndGgobV9jb29yZHNbMF0sIHdpZHRoKTsKKyAgICAgICAgICAgICAgICBpbnQg
eTAgPSBtaW1pbnVtVmFsdWVGb3JMZW5ndGgobV9jb29yZHNbMV0sIGhlaWdodCk7CisgICAgICAg
ICAgICAgICAgaW50IHgxID0gbWltaW51bVZhbHVlRm9yTGVuZ3RoKG1fY29vcmRzWzJdLCB3aWR0
aCk7CisgICAgICAgICAgICAgICAgaW50IHkxID0gbWltaW51bVZhbHVlRm9yTGVuZ3RoKG1fY29v
cmRzWzNdLCBoZWlnaHQpOwogICAgICAgICAgICAgICAgIHBhdGguYWRkUmVjdChGbG9hdFJlY3Qo
eDAsIHkwLCB4MSAtIHgwLCB5MSAtIHkwKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBi
cmVhazsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NhbGN1bGF0aW9uVmFsdWUuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9DYWxjdWxhdGlvblZhbHVlLmgJ
KHJldmlzaW9uIDExMTEyMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NhbGN1bGF0aW9u
VmFsdWUuaAkod29ya2luZyBjb3B5KQpAQCAtMzIsNiArMzIsNyBAQAogI2RlZmluZSBDYWxjdWxh
dGlvblZhbHVlX2gKIAogI2luY2x1ZGUgIkxlbmd0aC5oIgorI2luY2x1ZGUgIkxlbmd0aEZ1bmN0
aW9ucy5oIgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUGFzc093blB0
ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CkBAIC0xMDEsNyArMTAyLDcgQEAgcHVi
bGljOgogCiAgICAgdmlydHVhbCBmbG9hdCBldmFsdWF0ZShmbG9hdCBtYXhWYWx1ZSkgY29uc3QK
ICAgICB7Ci0gICAgICAgIHJldHVybiBtX2xlbmd0aC5jYWxjRmxvYXRWYWx1ZShtYXhWYWx1ZSk7
CisgICAgICAgIHJldHVybiBmbG9hdFZhbHVlRm9yTGVuZ3RoKG1fbGVuZ3RoLCBtYXhWYWx1ZSk7
CiAgICAgfQogICAgIAogcHJpdmF0ZToKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xl
bmd0aC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xlbmd0aC5oCShy
ZXZpc2lvbiAxMTExMjApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MZW5ndGguaAkod29y
a2luZyBjb3B5KQpAQCAtMTU5LDk2ICsxNTksNiBAQCBwdWJsaWM6CiAgICAgICAgICp0aGlzID0g
TGVuZ3RoKHZhbHVlLCBGaXhlZCk7CiAgICAgfQogCi0gICAgaW50IGNhbGNWYWx1ZShpbnQgbWF4
VmFsdWUsIGJvb2wgcm91bmRQZXJjZW50YWdlcyA9IGZhbHNlKSBjb25zdAotICAgIHsKLSAgICAg
ICAgc3dpdGNoICh0eXBlKCkpIHsKLSAgICAgICAgICAgIGNhc2UgRml4ZWQ6Ci0gICAgICAgICAg
ICBjYXNlIFBlcmNlbnQ6Ci0gICAgICAgICAgICBjYXNlIENhbGN1bGF0ZWQ6Ci0gICAgICAgICAg
ICAgICAgcmV0dXJuIGNhbGNNaW5WYWx1ZShtYXhWYWx1ZSwgcm91bmRQZXJjZW50YWdlcyk7Ci0g
ICAgICAgICAgICBjYXNlIEF1dG86Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG1heFZhbHVlOwot
ICAgICAgICAgICAgY2FzZSBSZWxhdGl2ZToKLSAgICAgICAgICAgIGNhc2UgSW50cmluc2ljOgot
ICAgICAgICAgICAgY2FzZSBNaW5JbnRyaW5zaWM6Ci0gICAgICAgICAgICBjYXNlIFVuZGVmaW5l
ZDoKLSAgICAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgICAg
ICByZXR1cm4gMDsKLSAgICAgICAgfQotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAg
ICAgICAgcmV0dXJuIDA7Ci0gICAgfQotCi0gICAgaW50IGNhbGNNaW5WYWx1ZShpbnQgbWF4VmFs
dWUsIGJvb2wgcm91bmRQZXJjZW50YWdlcyA9IGZhbHNlKSBjb25zdAotICAgIHsKLSAgICAgICAg
c3dpdGNoICh0eXBlKCkpIHsKLSAgICAgICAgICAgIGNhc2UgRml4ZWQ6Ci0gICAgICAgICAgICAg
ICAgcmV0dXJuIHZhbHVlKCk7Ci0gICAgICAgICAgICBjYXNlIFBlcmNlbnQ6Ci0gICAgICAgICAg
ICAgICAgaWYgKHJvdW5kUGVyY2VudGFnZXMpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBz
dGF0aWNfY2FzdDxpbnQ+KHJvdW5kKG1heFZhbHVlICogcGVyY2VudCgpIC8gMTAwLjBmKSk7Ci0g
ICAgICAgICAgICAgICAgLy8gRG9uJ3QgcmVtb3ZlIHRoZSBleHRyYSBjYXN0IHRvIGZsb2F0LiBJ
dCBpcyBuZWVkZWQgZm9yIHJvdW5kaW5nIG9uIDMyLWJpdCBJbnRlbCBtYWNoaW5lcyB0aGF0IHVz
ZSB0aGUgRlBVIHN0YWNrLgotICAgICAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+
KHN0YXRpY19jYXN0PGZsb2F0PihtYXhWYWx1ZSAqIHBlcmNlbnQoKSAvIDEwMC4wZikpOwotICAg
ICAgICAgICAgY2FzZSBDYWxjdWxhdGVkOgotICAgICAgICAgICAgICAgIHJldHVybiBub25OYW5D
YWxjdWxhdGVkVmFsdWUobWF4VmFsdWUpOwotICAgICAgICAgICAgY2FzZSBBdXRvOgotICAgICAg
ICAgICAgICAgIHJldHVybiAwOwotICAgICAgICAgICAgY2FzZSBSZWxhdGl2ZToKLSAgICAgICAg
ICAgIGNhc2UgSW50cmluc2ljOgotICAgICAgICAgICAgY2FzZSBNaW5JbnRyaW5zaWM6Ci0gICAg
ICAgICAgICBjYXNlIFVuZGVmaW5lZDoKLSAgICAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgfQotICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotCi0gICAgLy8gRklY
TUU6IHdoZW4gc3VicGl4ZWwgbGF5b3V0IGlzIHN1cHBvcnRlZCB0aGlzIGNvcHkgb2YgY2FsY0Zs
b2F0VmFsdWUoKSBjYW4gYmUgcmVtb3ZlZC4gU2VlIGJ1ZyA3MTE0My4KLSAgICBmbG9hdCBjYWxj
RmxvYXRWYWx1ZShpbnQgbWF4VmFsdWUpIGNvbnN0Ci0gICAgewotICAgICAgICBzd2l0Y2ggKHR5
cGUoKSkgewotICAgICAgICAgICAgY2FzZSBGaXhlZDoKLSAgICAgICAgICAgICAgICByZXR1cm4g
Z2V0RmxvYXRWYWx1ZSgpOwotICAgICAgICAgICAgY2FzZSBQZXJjZW50OgotICAgICAgICAgICAg
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxmbG9hdD4obWF4VmFsdWUgKiBwZXJjZW50KCkgLyAxMDAu
MGYpOwotICAgICAgICAgICAgY2FzZSBBdXRvOgotICAgICAgICAgICAgICAgIHJldHVybiBzdGF0
aWNfY2FzdDxmbG9hdD4obWF4VmFsdWUpOwotICAgICAgICAgICAgY2FzZSBDYWxjdWxhdGVkOgot
ICAgICAgICAgICAgICAgIHJldHVybiBub25OYW5DYWxjdWxhdGVkVmFsdWUobWF4VmFsdWUpOyAg
ICAgICAgICAgICAgICAKLSAgICAgICAgICAgIGNhc2UgUmVsYXRpdmU6Ci0gICAgICAgICAgICBj
YXNlIEludHJpbnNpYzoKLSAgICAgICAgICAgIGNhc2UgTWluSW50cmluc2ljOgotICAgICAgICAg
ICAgY2FzZSBVbmRlZmluZWQ6Ci0gICAgICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIH0KLSAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLQotICAgIGZsb2F0IGNhbGNG
bG9hdFZhbHVlKGZsb2F0IG1heFZhbHVlKSBjb25zdAotICAgIHsKLSAgICAgICAgc3dpdGNoICh0
eXBlKCkpIHsKLSAgICAgICAgY2FzZSBGaXhlZDoKLSAgICAgICAgICAgIHJldHVybiBnZXRGbG9h
dFZhbHVlKCk7Ci0gICAgICAgIGNhc2UgUGVyY2VudDoKLSAgICAgICAgICAgIHJldHVybiBzdGF0
aWNfY2FzdDxmbG9hdD4obWF4VmFsdWUgKiBwZXJjZW50KCkgLyAxMDAuMGYpOwotICAgICAgICBj
YXNlIEF1dG86Ci0gICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8ZmxvYXQ+KG1heFZhbHVl
KTsKLSAgICAgICAgY2FzZSBDYWxjdWxhdGVkOgotICAgICAgICAgICAgcmV0dXJuIG5vbk5hbkNh
bGN1bGF0ZWRWYWx1ZShtYXhWYWx1ZSk7Ci0gICAgICAgIGNhc2UgUmVsYXRpdmU6Ci0gICAgICAg
IGNhc2UgSW50cmluc2ljOgotICAgICAgICBjYXNlIE1pbkludHJpbnNpYzoKLSAgICAgICAgY2Fz
ZSBVbmRlZmluZWQ6Ci0gICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAg
ICAgIHJldHVybiAwOwotICAgICAgICB9Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwot
ICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0KICAgICBib29sIGlzVW5kZWZpbmVkKCkgY29uc3Qg
eyByZXR1cm4gdHlwZSgpID09IFVuZGVmaW5lZDsgfQogCiAgICAgLy8gRklYTUUgY2FsYzogaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgwMzU3LiBBIGNhbGN1bGF0ZWQg
TGVuZ3RoIApAQCAtMzEyLDE5ICsyMjIsMTkgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gTGVu
Z3RoKFdlYkNvcmU6OmJsZW5kKGZyb21WYWx1ZSwgdG9WYWx1ZSwgcHJvZ3Jlc3MpLCByZXN1bHRU
eXBlKTsKICAgICB9CiAKLXByaXZhdGU6Ci0gICAgaW50IGdldEludFZhbHVlKCkgY29uc3QKKyAg
ICBmbG9hdCBnZXRGbG9hdFZhbHVlKCkgY29uc3QKICAgICB7CiAgICAgICAgIEFTU0VSVCghaXNV
bmRlZmluZWQoKSk7Ci0gICAgICAgIHJldHVybiBtX2lzRmxvYXQgPyBzdGF0aWNfY2FzdDxpbnQ+
KG1fZmxvYXRWYWx1ZSkgOiBtX2ludFZhbHVlOworICAgICAgICByZXR1cm4gbV9pc0Zsb2F0ID8g
bV9mbG9hdFZhbHVlIDogbV9pbnRWYWx1ZTsKICAgICB9CisgICAgZmxvYXQgbm9uTmFuQ2FsY3Vs
YXRlZFZhbHVlKGludCBtYXhWYWx1ZSkgY29uc3Q7CiAKLSAgICBmbG9hdCBnZXRGbG9hdFZhbHVl
KCkgY29uc3QKK3ByaXZhdGU6CisgICAgaW50IGdldEludFZhbHVlKCkgY29uc3QKICAgICB7CiAg
ICAgICAgIEFTU0VSVCghaXNVbmRlZmluZWQoKSk7Ci0gICAgICAgIHJldHVybiBtX2lzRmxvYXQg
PyBtX2Zsb2F0VmFsdWUgOiBtX2ludFZhbHVlOworICAgICAgICByZXR1cm4gbV9pc0Zsb2F0ID8g
c3RhdGljX2Nhc3Q8aW50PihtX2Zsb2F0VmFsdWUpIDogbV9pbnRWYWx1ZTsKICAgICB9Ci0KICAg
ICB2b2lkIGluaXRGcm9tTGVuZ3RoKGNvbnN0IExlbmd0aCAmbGVuZ3RoKSAKICAgICB7CiAgICAg
ICAgIG1fcXVpcmsgPSBsZW5ndGgubV9xdWlyazsKQEAgLTMzOSw4ICsyNDksNyBAQCBwcml2YXRl
OgogICAgICAgICBpZiAoaXNDYWxjdWxhdGVkKCkpCiAgICAgICAgICAgICBpbmNyZW1lbnRDYWxj
dWxhdGVkUmVmKCk7CiAgICAgfQotICAgIAotICAgIGZsb2F0IG5vbk5hbkNhbGN1bGF0ZWRWYWx1
ZShpbnQgbWF4VmFsdWUpIGNvbnN0OworCiAgICAgaW50IGNhbGN1bGF0aW9uSGFuZGxlKCkgY29u
c3QKICAgICB7CiAgICAgICAgIEFTU0VSVChpc0NhbGN1bGF0ZWQoKSk7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9tYWMvUGxhdGZvcm1DQUFuaW1hdGlvbk1hYy5t
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9tYWMv
UGxhdGZvcm1DQUFuaW1hdGlvbk1hYy5tbQkocmV2aXNpb24gMTExMTIwKQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvbWFjL1BsYXRmb3JtQ0FBbmltYXRpb25NYWMubW0J
KHdvcmtpbmcgY29weSkKQEAgLTMwLDYgKzMwLDcgQEAKICNpbXBvcnQgIlBsYXRmb3JtQ0FBbmlt
YXRpb24uaCIKIAogI2ltcG9ydCAiRmxvYXRDb252ZXJzaW9uLmgiCisjaW1wb3J0ICJMZW5ndGhG
dW5jdGlvbnMuaCIKICNpbXBvcnQgIlBsYXRmb3JtU3RyaW5nLmgiCiAjaW1wb3J0ICJUaW1pbmdG
dW5jdGlvbi5oIgogI2ltcG9ydCA8UXVhcnR6Q29yZS9RdWFydHpDb3JlLmg+CkBAIC01MDIsNyAr
NTAzLDcgQEAgc3RhdGljIFJldGFpblB0cjxpZD4gZmlsdGVyVmFsdWVGb3JPcGVyYQogCiAgICAg
ICAgIGlmICghb3BlcmF0aW9uLT5pc0RlZmF1bHQoKSkgewogICAgICAgICAgICAgY29uc3QgQmx1
ckZpbHRlck9wZXJhdGlvbiogb3AgPSBzdGF0aWNfY2FzdDxjb25zdCBCbHVyRmlsdGVyT3BlcmF0
aW9uKj4ob3BlcmF0aW9uKTsKLSAgICAgICAgICAgIGFtb3VudCA9IG9wLT5zdGREZXZpYXRpb24o
KS5jYWxjRmxvYXRWYWx1ZSgwKTsKKyAgICAgICAgICAgIGFtb3VudCA9IGZsb2F0VmFsdWVGb3JM
ZW5ndGgob3AtPnN0ZERldmlhdGlvbigpLCAwKTsKICAgICAgICAgfQogICAgICAgICAKICAgICAg
ICAgdmFsdWUuYWRvcHROUyhbW05TTnVtYmVyIG51bWJlcldpdGhEb3VibGU6YW1vdW50XSByZXRh
aW5dKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL21hYy9QbGF0
Zm9ybUNBTGF5ZXJNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2EvbWFjL1BsYXRmb3JtQ0FMYXllck1hYy5tbQkocmV2aXNpb24gMTExMTIwKQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvbWFjL1BsYXRmb3JtQ0FMYXll
ck1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMzQsNiArMzQsNyBAQAogI2ltcG9ydCAiRmxvYXRD
b252ZXJzaW9uLmgiCiAjaW1wb3J0ICJHcmFwaGljc0NvbnRleHQuaCIKICNpbXBvcnQgIkdyYXBo
aWNzTGF5ZXJDQS5oIgorI2ltcG9ydCAiTGVuZ3RoRnVuY3Rpb25zLmgiCiAjaW1wb3J0ICJXZWJM
YXllci5oIgogI2ltcG9ydCAiV2ViVGlsZWRMYXllci5oIgogI2ltcG9ydCAiV2ViVGlsZUNhY2hl
TGF5ZXIuaCIKQEAgLTgyMyw3ICs4MjQsNyBAQCB2b2lkIFBsYXRmb3JtQ0FMYXllcjo6c2V0Rmls
dGVycyhjb25zdCBGCiAgICAgICAgICAgICBjb25zdCBCbHVyRmlsdGVyT3BlcmF0aW9uKiBvcCA9
IHN0YXRpY19jYXN0PGNvbnN0IEJsdXJGaWx0ZXJPcGVyYXRpb24qPihmaWx0ZXJPcGVyYXRpb24p
OwogICAgICAgICAgICAgQ0lGaWx0ZXIqIGNhRmlsdGVyID0gW0NJRmlsdGVyIGZpbHRlcldpdGhO
YW1lOkAiQ0lHYXVzc2lhbkJsdXIiXTsKICAgICAgICAgICAgIFtjYUZpbHRlciBzZXREZWZhdWx0
c107Ci0gICAgICAgICAgICBbY2FGaWx0ZXIgc2V0VmFsdWU6W05TTnVtYmVyIG51bWJlcldpdGhG
bG9hdDpvcC0+c3RkRGV2aWF0aW9uKCkuY2FsY0Zsb2F0VmFsdWUoMCldIGZvcktleTpAImlucHV0
UmFkaXVzIl07CisgICAgICAgICAgICBbY2FGaWx0ZXIgc2V0VmFsdWU6W05TTnVtYmVyIG51bWJl
cldpdGhGbG9hdDpmbG9hdFZhbHVlRm9yTGVuZ3RoKG9wLT5zdGREZXZpYXRpb24oKSwgMCldIGZv
cktleTpAImlucHV0UmFkaXVzIl07CiAgICAgICAgICAgICBbY2FGaWx0ZXIgc2V0TmFtZTpmaWx0
ZXJOYW1lXTsKICAgICAgICAgICAgIFthcnJheS5nZXQoKSBhZGRPYmplY3Q6Y2FGaWx0ZXJdOwog
ICAgICAgICAgICAgYnJlYWs7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1JlbmRlclN1cmZhY2VGaWx0ZXJzLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclN1cmZh
Y2VGaWx0ZXJzLmNwcAkocmV2aXNpb24gMTExMTIwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJTdXJmYWNlRmlsdGVycy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJjYy9DQ1JlbmRlclN1cmZhY2VG
aWx0ZXJzLmgiCiAKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQzRC5oIgorI2luY2x1ZGUgIkxl
bmd0aEZ1bmN0aW9ucy5oIgogI2luY2x1ZGUgIlNrQmx1ckltYWdlRmlsdGVyLmgiCiAjaW5jbHVk
ZSAiU2tDYW52YXMuaCIKICNpbmNsdWRlICJTa0NvbG9yTWF0cml4RmlsdGVyLmgiCkBAIC0yNjks
OCArMjcwLDggQEAgU2tCaXRtYXAgQ0NSZW5kZXJTdXJmYWNlRmlsdGVyczo6YXBwbHkoYwogICAg
ICAgICB9CiAgICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpCTFVSOiB7CiAgICAgICAgICAg
ICBjb25zdCBCbHVyRmlsdGVyT3BlcmF0aW9uKiBvcCA9IHN0YXRpY19jYXN0PGNvbnN0IEJsdXJG
aWx0ZXJPcGVyYXRpb24qPihmaWx0ZXJPcGVyYXRpb24pOwotICAgICAgICAgICAgZmxvYXQgc3Rk
WCA9IG9wLT5zdGREZXZpYXRpb24oKS5jYWxjRmxvYXRWYWx1ZSgwKTsKLSAgICAgICAgICAgIGZs
b2F0IHN0ZFkgPSBvcC0+c3RkRGV2aWF0aW9uKCkuY2FsY0Zsb2F0VmFsdWUoMSk7CisgICAgICAg
ICAgICBmbG9hdCBzdGRYID0gZmxvYXRWYWx1ZUZvckxlbmd0aChvcC0+c3RkRGV2aWF0aW9uKCks
IDApOworICAgICAgICAgICAgZmxvYXQgc3RkWSA9IGZsb2F0VmFsdWVGb3JMZW5ndGgob3AtPnN0
ZERldmlhdGlvbigpLCAxKTsKICAgICAgICAgICAgIFNrQXV0b1RVbnJlZjxTa0ltYWdlRmlsdGVy
PiBmaWx0ZXIobmV3IFNrQmx1ckltYWdlRmlsdGVyKHN0ZFgsIHN0ZFkpKTsKICAgICAgICAgICAg
IFNrUGFpbnQgcGFpbnQ7CiAgICAgICAgICAgICBwYWludC5zZXRJbWFnZUZpbHRlcihmaWx0ZXIu
Z2V0KCkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
aWx0ZXJPcGVyYXRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbnMuY3BwCShyZXZpc2lvbiAxMTExMjAp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlck9wZXJh
dGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbmNsdWRlICJG
RUdhdXNzaWFuQmx1ci5oIgogI2luY2x1ZGUgIkludFNpemUuaCIKKyNpbmNsdWRlICJMZW5ndGhG
dW5jdGlvbnMuaCIKIAogI2lmIEVOQUJMRShDU1NfRklMVEVSUykKIApAQCAtMTA3LDcgKzEwOCw3
IEBAIHZvaWQgRmlsdGVyT3BlcmF0aW9uczo6Z2V0T3V0c2V0cyhMYXlvdXQKICAgICAgICAgc3dp
dGNoIChmaWx0ZXJPcGVyYXRpb24tPmdldE9wZXJhdGlvblR5cGUoKSkgewogICAgICAgICBjYXNl
IEZpbHRlck9wZXJhdGlvbjo6QkxVUjogewogICAgICAgICAgICAgQmx1ckZpbHRlck9wZXJhdGlv
biogYmx1ck9wZXJhdGlvbiA9IHN0YXRpY19jYXN0PEJsdXJGaWx0ZXJPcGVyYXRpb24qPihmaWx0
ZXJPcGVyYXRpb24pOwotICAgICAgICAgICAgZmxvYXQgc3RkRGV2aWF0aW9uID0gYmx1ck9wZXJh
dGlvbi0+c3RkRGV2aWF0aW9uKCkuY2FsY0Zsb2F0VmFsdWUoMCk7CisgICAgICAgICAgICBmbG9h
dCBzdGREZXZpYXRpb24gPSBmbG9hdFZhbHVlRm9yTGVuZ3RoKGJsdXJPcGVyYXRpb24tPnN0ZERl
dmlhdGlvbigpLCAwKTsKICAgICAgICAgICAgIEludFNpemUgb3V0c2V0ID0gb3V0c2V0U2l6ZUZv
ckJsdXIoc3RkRGV2aWF0aW9uKTsKICAgICAgICAgICAgIHRvcCArPSBvdXRzZXQuaGVpZ2h0KCk7
CiAgICAgICAgICAgICByaWdodCArPSBvdXRzZXQud2lkdGgoKTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvUGVyc3BlY3RpdmVUcmFuc2Zvcm1PcGVy
YXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RyYW5zZm9ybXMvUGVyc3BlY3RpdmVUcmFuc2Zvcm1PcGVyYXRpb24uY3BwCShyZXZpc2lvbiAx
MTExMjApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1Bl
cnNwZWN0aXZlVHJhbnNmb3JtT3BlcmF0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzksNyAr
MzksNyBAQCBQYXNzUmVmUHRyPFRyYW5zZm9ybU9wZXJhdGlvbj4gUGVyc3BlY3RpCiAgICAgICAg
IHJldHVybiB0aGlzOwogICAgIAogICAgIGlmIChibGVuZFRvSWRlbnRpdHkpIHsKLSAgICAgICAg
ZG91YmxlIHAgPSBtX3AuY2FsY0Zsb2F0VmFsdWUoMSk7CisgICAgICAgIGRvdWJsZSBwID0gZmxv
YXRWYWx1ZUZvckxlbmd0aChtX3AsIDEpOwogICAgICAgICBwID0gV2ViQ29yZTo6YmxlbmQocCwg
MS4wLCBwcm9ncmVzcyk7IC8vIEZJWE1FOiB0aGlzIHNlZW1zIHdyb25nLiBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTI3MDAKICAgICAgICAgcmV0dXJuIFBlcnNwZWN0
aXZlVHJhbnNmb3JtT3BlcmF0aW9uOjpjcmVhdGUoTGVuZ3RoKGNsYW1wVG9Qb3NpdGl2ZUludGVn
ZXIocCksIEZpeGVkKSk7CiAgICAgfQpAQCAtNTAsOCArNTAsOCBAQCBQYXNzUmVmUHRyPFRyYW5z
Zm9ybU9wZXJhdGlvbj4gUGVyc3BlY3RpCiAKICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBmcm9t
VDsKICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCB0b1Q7Ci0gICAgZnJvbVQuYXBwbHlQZXJzcGVj
dGl2ZShmcm9tUC5jYWxjRmxvYXRWYWx1ZSgxKSk7Ci0gICAgdG9ULmFwcGx5UGVyc3BlY3RpdmUo
dG9QLmNhbGNGbG9hdFZhbHVlKDEpKTsKKyAgICBmcm9tVC5hcHBseVBlcnNwZWN0aXZlKGZsb2F0
VmFsdWVGb3JMZW5ndGgoZnJvbVAsIDEpKTsKKyAgICB0b1QuYXBwbHlQZXJzcGVjdGl2ZShmbG9h
dFZhbHVlRm9yTGVuZ3RoKHRvUCwgMSkpOwogICAgIHRvVC5ibGVuZChmcm9tVCwgcHJvZ3Jlc3Mp
OwogICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4OjpEZWNvbXBvc2VkVHlwZSBkZWNvbXA7CiAgICAg
dG9ULmRlY29tcG9zZShkZWNvbXApOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvdHJhbnNmb3Jtcy9QZXJzcGVjdGl2ZVRyYW5zZm9ybU9wZXJhdGlvbi5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvUGVyc3Bl
Y3RpdmVUcmFuc2Zvcm1PcGVyYXRpb24uaAkocmV2aXNpb24gMTExMTIwKQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9QZXJzcGVjdGl2ZVRyYW5zZm9ybU9w
ZXJhdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBACiAjZGVmaW5lIFBlcnNw
ZWN0aXZlVHJhbnNmb3JtT3BlcmF0aW9uX2gKIAogI2luY2x1ZGUgIkxlbmd0aC5oIgorI2luY2x1
ZGUgIkxlbmd0aEZ1bmN0aW9ucy5oIgogI2luY2x1ZGUgIlRyYW5zZm9ybU9wZXJhdGlvbi5oIgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00MSw3ICs0Miw3IEBAIHB1YmxpYzoKICAgICBMZW5n
dGggcGVyc3BlY3RpdmUoKSBjb25zdCB7IHJldHVybiBtX3A7IH0KICAgICAKIHByaXZhdGU6Ci0g
ICAgdmlydHVhbCBib29sIGlzSWRlbnRpdHkoKSBjb25zdCB7IHJldHVybiBtX3AuY2FsY0Zsb2F0
VmFsdWUoMSkgPT0gMDsgfQorICAgIHZpcnR1YWwgYm9vbCBpc0lkZW50aXR5KCkgY29uc3QgeyBy
ZXR1cm4gIWZsb2F0VmFsdWVGb3JMZW5ndGgobV9wLCAxKTsgfQogICAgIHZpcnR1YWwgT3BlcmF0
aW9uVHlwZSBnZXRPcGVyYXRpb25UeXBlKCkgY29uc3QgeyByZXR1cm4gUEVSU1BFQ1RJVkU7IH0K
ICAgICB2aXJ0dWFsIGJvb2wgaXNTYW1lVHlwZShjb25zdCBUcmFuc2Zvcm1PcGVyYXRpb24mIG8p
IGNvbnN0IHsgcmV0dXJuIG8uZ2V0T3BlcmF0aW9uVHlwZSgpID09IFBFUlNQRUNUSVZFOyB9CiAK
QEAgLTU1LDcgKzU2LDcgQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwgYm9vbCBhcHBseShUcmFu
c2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtLCBjb25zdCBGbG9hdFNpemUmKSBjb25zdAogICAg
IHsKLSAgICAgICAgdHJhbnNmb3JtLmFwcGx5UGVyc3BlY3RpdmUobV9wLmNhbGNGbG9hdFZhbHVl
KDEpKTsKKyAgICAgICAgdHJhbnNmb3JtLmFwcGx5UGVyc3BlY3RpdmUoZmxvYXRWYWx1ZUZvckxl
bmd0aChtX3AsIDEpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2xhdGVUcmFuc2Zv
cm1PcGVyYXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90cmFuc2Zvcm1zL1RyYW5zbGF0ZVRyYW5zZm9ybU9wZXJhdGlvbi5oCShyZXZpc2lvbiAx
MTExMjApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1Ry
YW5zbGF0ZVRyYW5zZm9ybU9wZXJhdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw3
IEBACiAjZGVmaW5lIFRyYW5zbGF0ZVRyYW5zZm9ybU9wZXJhdGlvbl9oCiAKICNpbmNsdWRlICJM
ZW5ndGguaCIKKyNpbmNsdWRlICJMZW5ndGhGdW5jdGlvbnMuaCIKICNpbmNsdWRlICJUcmFuc2Zv
cm1PcGVyYXRpb24uaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDIsMTYgKzQzLDE2IEBA
IHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBUcmFuc2xhdGVUcmFuc2Zvcm1P
cGVyYXRpb24odHgsIHR5LCB0eiwgdHlwZSkpOwogICAgIH0KIAotICAgIGRvdWJsZSB4KGNvbnN0
IEZsb2F0U2l6ZSYgYm9yZGVyQm94U2l6ZSkgY29uc3QgeyByZXR1cm4gbV94LmNhbGNGbG9hdFZh
bHVlKGJvcmRlckJveFNpemUud2lkdGgoKSk7IH0KLSAgICBkb3VibGUgeShjb25zdCBGbG9hdFNp
emUmIGJvcmRlckJveFNpemUpIGNvbnN0IHsgcmV0dXJuIG1feS5jYWxjRmxvYXRWYWx1ZShib3Jk
ZXJCb3hTaXplLmhlaWdodCgpKTsgfQotICAgIGRvdWJsZSB6KGNvbnN0IEZsb2F0U2l6ZSYpIGNv
bnN0IHsgcmV0dXJuIG1fei5jYWxjRmxvYXRWYWx1ZSgxKTsgfQorICAgIGRvdWJsZSB4KGNvbnN0
IEZsb2F0U2l6ZSYgYm9yZGVyQm94U2l6ZSkgY29uc3QgeyByZXR1cm4gZmxvYXRWYWx1ZUZvckxl
bmd0aChtX3gsIGJvcmRlckJveFNpemUud2lkdGgoKSk7IH0KKyAgICBkb3VibGUgeShjb25zdCBG
bG9hdFNpemUmIGJvcmRlckJveFNpemUpIGNvbnN0IHsgcmV0dXJuIGZsb2F0VmFsdWVGb3JMZW5n
dGgobV95LCBib3JkZXJCb3hTaXplLmhlaWdodCgpKTsgfQorICAgIGRvdWJsZSB6KGNvbnN0IEZs
b2F0U2l6ZSYpIGNvbnN0IHsgcmV0dXJuIGZsb2F0VmFsdWVGb3JMZW5ndGgobV96LCAxKTsgfQog
CiAgICAgTGVuZ3RoIHgoKSBjb25zdCB7IHJldHVybiBtX3g7IH0KICAgICBMZW5ndGggeSgpIGNv
bnN0IHsgcmV0dXJuIG1feTsgfQogICAgIExlbmd0aCB6KCkgY29uc3QgeyByZXR1cm4gbV96OyB9
CiAKIHByaXZhdGU6Ci0gICAgdmlydHVhbCBib29sIGlzSWRlbnRpdHkoKSBjb25zdCB7IHJldHVy
biBtX3guY2FsY0Zsb2F0VmFsdWUoMSkgPT0gMCAmJiBtX3kuY2FsY0Zsb2F0VmFsdWUoMSkgPT0g
MCAmJiBtX3ouY2FsY0Zsb2F0VmFsdWUoMSkgPT0gMDsgfQorICAgIHZpcnR1YWwgYm9vbCBpc0lk
ZW50aXR5KCkgY29uc3QgeyByZXR1cm4gIWZsb2F0VmFsdWVGb3JMZW5ndGgobV94LCAxKSAmJiAh
ZmxvYXRWYWx1ZUZvckxlbmd0aChtX3ksIDEpICYmICFmbG9hdFZhbHVlRm9yTGVuZ3RoKG1feiwg
MSk7IH0KIAogICAgIHZpcnR1YWwgT3BlcmF0aW9uVHlwZSBnZXRPcGVyYXRpb25UeXBlKCkgY29u
c3QgeyByZXR1cm4gbV90eXBlOyB9CiAgICAgdmlydHVhbCBib29sIGlzU2FtZVR5cGUoY29uc3Qg
VHJhbnNmb3JtT3BlcmF0aW9uJiBvKSBjb25zdCB7IHJldHVybiBvLmdldE9wZXJhdGlvblR5cGUo
KSA9PSBtX3R5cGU7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9Qb3B1cE1l
bnVXaW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9Qb3B1
cE1lbnVXaW4uY3BwCShyZXZpc2lvbiAxMTExMjApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS93aW4vUG9wdXBNZW51V2luLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMsNyBAQAog
I2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIkhXbmREQy5oIgogI2luY2x1ZGUgIkhv
c3RXaW5kb3cuaCIKKyNpbmNsdWRlICJMZW5ndGhGdW5jdGlvbnMuaCIKICNpbmNsdWRlICJQYWdl
LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1Nb3VzZUV2ZW50LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1T
Y3JlZW4uaCIKQEAgLTY1NCw3ICs2NTUsNyBAQCB2b2lkIFBvcHVwTWVudVdpbjo6cGFpbnQoY29u
c3QgSW50UmVjdCYgCiAgICAgICAgIGlmIChpdGVtU3R5bGUuaXNWaXNpYmxlKCkpIHsKICAgICAg
ICAgICAgIGludCB0ZXh0WCA9IG1heCgwLCBjbGllbnQoKS0+Y2xpZW50UGFkZGluZ0xlZnQoKSAt
IGNsaWVudCgpLT5jbGllbnRJbnNldExlZnQoKSk7CiAgICAgICAgICAgICBpZiAoUmVuZGVyVGhl
bWU6OmRlZmF1bHRUaGVtZSgpLT5wb3B1cE9wdGlvblN1cHBvcnRzVGV4dEluZGVudCgpICYmIGl0
ZW1TdHlsZS50ZXh0RGlyZWN0aW9uKCkgPT0gTFRSKQotICAgICAgICAgICAgICAgIHRleHRYICs9
IGl0ZW1TdHlsZS50ZXh0SW5kZW50KCkuY2FsY01pblZhbHVlKGl0ZW1SZWN0LndpZHRoKCkpOwor
ICAgICAgICAgICAgICAgIHRleHRYICs9IG1pbWludW1WYWx1ZUZvckxlbmd0aChpdGVtU3R5bGUu
dGV4dEluZGVudCgpLCBpdGVtUmVjdC53aWR0aCgpKTsKICAgICAgICAgICAgIGludCB0ZXh0WSA9
IGl0ZW1SZWN0LnkoKSArIGl0ZW1Gb250LmZvbnRNZXRyaWNzKCkuYXNjZW50KCkgKyAoaXRlbVJl
Y3QuaGVpZ2h0KCkgLSBpdGVtRm9udC5mb250TWV0cmljcygpLmhlaWdodCgpKSAvIDI7CiAgICAg
ICAgICAgICBjb250ZXh0LmRyYXdCaWRpVGV4dChpdGVtRm9udCwgdGV4dFJ1biwgSW50UG9pbnQo
dGV4dFgsIHRleHRZKSk7CiAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9BdXRvVGFibGVMYXlvdXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9BdXRvVGFibGVMYXlvdXQuY3BwCShyZXZpc2lvbiAxMTExMjApCisrKyBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvQXV0b1RhYmxlTGF5b3V0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTUx
LDcgKzU1MSw3IEBAIHZvaWQgQXV0b1RhYmxlTGF5b3V0OjpsYXlvdXQoKQogICAgICAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IG5FZmZDb2xzOyArK2kpIHsKICAgICAgICAgICAgIExlbmd0aCYg
bG9naWNhbFdpZHRoID0gbV9sYXlvdXRTdHJ1Y3RbaV0uZWZmZWN0aXZlTG9naWNhbFdpZHRoOwog
ICAgICAgICAgICAgaWYgKGxvZ2ljYWxXaWR0aC5pc1BlcmNlbnQoKSkgewotICAgICAgICAgICAg
ICAgIGludCBjZWxsTG9naWNhbFdpZHRoID0gbWF4PGludD4obV9sYXlvdXRTdHJ1Y3RbaV0uZWZm
ZWN0aXZlTWluTG9naWNhbFdpZHRoLCBsb2dpY2FsV2lkdGguY2FsY01pblZhbHVlKHRhYmxlTG9n
aWNhbFdpZHRoKSk7CisgICAgICAgICAgICAgICAgaW50IGNlbGxMb2dpY2FsV2lkdGggPSBtYXg8
aW50PihtX2xheW91dFN0cnVjdFtpXS5lZmZlY3RpdmVNaW5Mb2dpY2FsV2lkdGgsIG1pbWludW1W
YWx1ZUZvckxlbmd0aChsb2dpY2FsV2lkdGgsIHRhYmxlTG9naWNhbFdpZHRoKSk7CiAgICAgICAg
ICAgICAgICAgYXZhaWxhYmxlICs9IG1fbGF5b3V0U3RydWN0W2ldLmNvbXB1dGVkTG9naWNhbFdp
ZHRoIC0gY2VsbExvZ2ljYWxXaWR0aDsKICAgICAgICAgICAgICAgICBtX2xheW91dFN0cnVjdFtp
XS5jb21wdXRlZExvZ2ljYWxXaWR0aCA9IGNlbGxMb2dpY2FsV2lkdGg7CiAgICAgICAgICAgICB9
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmlsdGVyRWZmZWN0UmVuZGVyZXIuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9GaWx0ZXJFZmZlY3RSZW5k
ZXJlci5jcHAJKHJldmlzaW9uIDExMTEyMCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9G
aWx0ZXJFZmZlY3RSZW5kZXJlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIzNyw3ICsyMzcsNyBA
QCB2b2lkIEZpbHRlckVmZmVjdFJlbmRlcmVyOjpidWlsZChEb2N1bWVuCiAgICAgICAgIH0KICAg
ICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OkJMVVI6IHsKICAgICAgICAgICAgIEJsdXJGaWx0
ZXJPcGVyYXRpb24qIGJsdXJPcGVyYXRpb24gPSBzdGF0aWNfY2FzdDxCbHVyRmlsdGVyT3BlcmF0
aW9uKj4oZmlsdGVyT3BlcmF0aW9uKTsKLSAgICAgICAgICAgIGZsb2F0IHN0ZERldmlhdGlvbiA9
IGJsdXJPcGVyYXRpb24tPnN0ZERldmlhdGlvbigpLmNhbGNGbG9hdFZhbHVlKDApOworICAgICAg
ICAgICAgZmxvYXQgc3RkRGV2aWF0aW9uID0gZmxvYXRWYWx1ZUZvckxlbmd0aChibHVyT3BlcmF0
aW9uLT5zdGREZXZpYXRpb24oKSwgMCk7CiAgICAgICAgICAgICBlZmZlY3QgPSBGRUdhdXNzaWFu
Qmx1cjo6Y3JlYXRlKHRoaXMsIHN0ZERldmlhdGlvbiwgc3RkRGV2aWF0aW9uKTsKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRml4
ZWRUYWJsZUxheW91dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L0ZpeGVkVGFibGVMYXlvdXQuY3BwCShyZXZpc2lvbiAxMTExMjApCisrKyBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvRml4ZWRUYWJsZUxheW91dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0NCw3
ICsyNDQsNyBAQCB2b2lkIEZpeGVkVGFibGVMYXlvdXQ6OmxheW91dCgpCiAgICAgICAgICAgICBj
YWxjV2lkdGhbaV0gPSBtX3dpZHRoW2ldLnZhbHVlKCk7CiAgICAgICAgICAgICB0b3RhbEZpeGVk
V2lkdGggKz0gY2FsY1dpZHRoW2ldOwogICAgICAgICB9IGVsc2UgaWYgKG1fd2lkdGhbaV0uaXNQ
ZXJjZW50KCkpIHsKLSAgICAgICAgICAgIGNhbGNXaWR0aFtpXSA9IG1fd2lkdGhbaV0uY2FsY1Zh
bHVlKHRhYmxlTG9naWNhbFdpZHRoKTsKKyAgICAgICAgICAgIGNhbGNXaWR0aFtpXSA9IHZhbHVl
Rm9yTGVuZ3RoKG1fd2lkdGhbaV0sIHRhYmxlTG9naWNhbFdpZHRoKTsKICAgICAgICAgICAgIHRv
dGFsUGVyY2VudFdpZHRoICs9IGNhbGNXaWR0aFtpXTsKICAgICAgICAgICAgIHRvdGFsUGVyY2Vu
dCArPSBtX3dpZHRoW2ldLnBlcmNlbnQoKTsKICAgICAgICAgfSBlbHNlIGlmIChtX3dpZHRoW2ld
LmlzQXV0bygpKSB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2su
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5j
cHAJKHJldmlzaW9uIDExMTEyMCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJC
bG9jay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5MDEsNyArMzkwMSw3IEBAIExheW91dFVuaXQg
UmVuZGVyQmxvY2s6OnRleHRJbmRlbnRPZmZzZXQKICAgICBMYXlvdXRVbml0IGN3ID0gMDsKICAg
ICBpZiAoc3R5bGUoKS0+dGV4dEluZGVudCgpLmlzUGVyY2VudCgpKQogICAgICAgICBjdyA9IGNv
bnRhaW5pbmdCbG9jaygpLT5hdmFpbGFibGVMb2dpY2FsV2lkdGgoKTsKLSAgICByZXR1cm4gc3R5
bGUoKS0+dGV4dEluZGVudCgpLmNhbGNNaW5WYWx1ZShjdyk7CisgICAgcmV0dXJuIG1pbWludW1W
YWx1ZUZvckxlbmd0aChzdHlsZSgpLT50ZXh0SW5kZW50KCksIGN3KTsKIH0KIAogTGF5b3V0VW5p
dCBSZW5kZXJCbG9jazo6bG9naWNhbExlZnRPZmZzZXRGb3JDb250ZW50KFJlbmRlclJlZ2lvbiog
cmVnaW9uLCBMYXlvdXRVbml0IG9mZnNldEZyb21Mb2dpY2FsVG9wT2ZGaXJzdFBhZ2UpIGNvbnN0
CkBAIC01NTQxLDcgKzU1NDEsNyBAQCB2b2lkIFJlbmRlckJsb2NrOjpjb21wdXRlSW5saW5lUHJl
ZmVycmVkCiAgICAgICAgICAgICAgICAgTGF5b3V0VW5pdCB0aSA9IDA7CiAgICAgICAgICAgICAg
ICAgaWYgKCFhZGRlZFRleHRJbmRlbnQpIHsKICAgICAgICAgICAgICAgICAgICAgYWRkZWRUZXh0
SW5kZW50ID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAgdGkgPSBzdHlsZVRvVXNlLT50ZXh0
SW5kZW50KCkuY2FsY01pblZhbHVlKGN3KTsKKyAgICAgICAgICAgICAgICAgICAgdGkgPSBtaW1p
bnVtVmFsdWVGb3JMZW5ndGgoc3R5bGVUb1VzZS0+dGV4dEluZGVudCgpLCBjdyk7CiAgICAgICAg
ICAgICAgICAgICAgIGNoaWxkTWluICs9IHRpOwogICAgICAgICAgICAgICAgICAgICBjaGlsZE1h
eCArPSB0aTsKICAgICAgICAgICAgICAgICB9CkBAIC01NjEyLDcgKzU2MTIsNyBAQCB2b2lkIFJl
bmRlckJsb2NrOjpjb21wdXRlSW5saW5lUHJlZmVycmVkCiAgICAgICAgICAgICAgICAgTGF5b3V0
VW5pdCB0aSA9IDA7CiAgICAgICAgICAgICAgICAgaWYgKCFhZGRlZFRleHRJbmRlbnQpIHsKICAg
ICAgICAgICAgICAgICAgICAgYWRkZWRUZXh0SW5kZW50ID0gdHJ1ZTsKLSAgICAgICAgICAgICAg
ICAgICAgdGkgPSBzdHlsZVRvVXNlLT50ZXh0SW5kZW50KCkuY2FsY01pblZhbHVlKGN3KTsKKyAg
ICAgICAgICAgICAgICAgICAgdGkgPSBtaW1pbnVtVmFsdWVGb3JMZW5ndGgoc3R5bGVUb1VzZS0+
dGV4dEluZGVudCgpLCBjdyk7CiAgICAgICAgICAgICAgICAgICAgIGNoaWxkTWluKz10aTsgYmVn
aW5NaW4gKz0gdGk7CiAgICAgICAgICAgICAgICAgICAgIGNoaWxkTWF4Kz10aTsgYmVnaW5NYXgg
Kz0gdGk7CiAgICAgICAgICAgICAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckJveC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckJveC5jcHAJKHJldmlzaW9uIDExMTEyMCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCb3guY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MjMsOCArNjIzLDggQEAgaW50IFJl
bmRlckJveDo6cmVmbGVjdGlvbk9mZnNldCgpIGNvbnN0CiAgICAgaWYgKCFzdHlsZSgpLT5ib3hS
ZWZsZWN0KCkpCiAgICAgICAgIHJldHVybiAwOwogICAgIGlmIChzdHlsZSgpLT5ib3hSZWZsZWN0
KCktPmRpcmVjdGlvbigpID09IFJlZmxlY3Rpb25MZWZ0IHx8IHN0eWxlKCktPmJveFJlZmxlY3Qo
KS0+ZGlyZWN0aW9uKCkgPT0gUmVmbGVjdGlvblJpZ2h0KQotICAgICAgICByZXR1cm4gc3R5bGUo
KS0+Ym94UmVmbGVjdCgpLT5vZmZzZXQoKS5jYWxjVmFsdWUoYm9yZGVyQm94UmVjdCgpLndpZHRo
KCkpOwotICAgIHJldHVybiBzdHlsZSgpLT5ib3hSZWZsZWN0KCktPm9mZnNldCgpLmNhbGNWYWx1
ZShib3JkZXJCb3hSZWN0KCkuaGVpZ2h0KCkpOworICAgICAgICByZXR1cm4gdmFsdWVGb3JMZW5n
dGgoc3R5bGUoKS0+Ym94UmVmbGVjdCgpLT5vZmZzZXQoKSwgYm9yZGVyQm94UmVjdCgpLndpZHRo
KCkpOworICAgIHJldHVybiB2YWx1ZUZvckxlbmd0aChzdHlsZSgpLT5ib3hSZWZsZWN0KCktPm9m
ZnNldCgpLCBib3JkZXJCb3hSZWN0KCkuaGVpZ2h0KCkpOwogfQogCiBMYXlvdXRSZWN0IFJlbmRl
ckJveDo6cmVmbGVjdGVkUmVjdChjb25zdCBMYXlvdXRSZWN0JiByKSBjb25zdApAQCAtMTI5NCw3
ICsxMjk0LDcgQEAgTGF5b3V0UmVjdCBSZW5kZXJCb3g6OmNsaXBSZWN0KGNvbnN0IExheQogICAg
IExheW91dFJlY3QgY2xpcFJlY3QgPSBMYXlvdXRSZWN0KGJvcmRlckJveFJlY3QubG9jYXRpb24o
KSArIGxvY2F0aW9uLCBib3JkZXJCb3hSZWN0LnNpemUoKSk7CiAKICAgICBpZiAoIXN0eWxlKCkt
PmNsaXBMZWZ0KCkuaXNBdXRvKCkpIHsKLSAgICAgICAgTGF5b3V0VW5pdCBjID0gc3R5bGUoKS0+
Y2xpcExlZnQoKS5jYWxjVmFsdWUoYm9yZGVyQm94UmVjdC53aWR0aCgpKTsKKyAgICAgICAgTGF5
b3V0VW5pdCBjID0gdmFsdWVGb3JMZW5ndGgoc3R5bGUoKS0+Y2xpcExlZnQoKSwgYm9yZGVyQm94
UmVjdC53aWR0aCgpKTsKICAgICAgICAgY2xpcFJlY3QubW92ZShjLCAwKTsKICAgICAgICAgY2xp
cFJlY3QuY29udHJhY3QoYywgMCk7CiAgICAgfQpAQCAtMTMwMywxNiArMTMwMywxNiBAQCBMYXlv
dXRSZWN0IFJlbmRlckJveDo6Y2xpcFJlY3QoY29uc3QgTGF5CiAgICAgLy8gZnJvbSB0aGUgbGVm
dCBhbmQgdG9wIGVkZ2VzLiBUaGVyZWZvcmUgaXQncyBiZXR0ZXIgdG8gYXZvaWQgY29uc3RyYWlu
aW5nIHRvIHNtYWxsZXIgd2lkdGhzIGFuZCBoZWlnaHRzLgogCiAgICAgaWYgKCFzdHlsZSgpLT5j
bGlwUmlnaHQoKS5pc0F1dG8oKSkKLSAgICAgICAgY2xpcFJlY3QuY29udHJhY3Qod2lkdGgoKSAt
IHN0eWxlKCktPmNsaXBSaWdodCgpLmNhbGNWYWx1ZSh3aWR0aCgpKSwgMCk7CisgICAgICAgIGNs
aXBSZWN0LmNvbnRyYWN0KHdpZHRoKCkgLSB2YWx1ZUZvckxlbmd0aChzdHlsZSgpLT5jbGlwUmln
aHQoKSwgd2lkdGgoKSksIDApOwogCiAgICAgaWYgKCFzdHlsZSgpLT5jbGlwVG9wKCkuaXNBdXRv
KCkpIHsKLSAgICAgICAgTGF5b3V0VW5pdCBjID0gc3R5bGUoKS0+Y2xpcFRvcCgpLmNhbGNWYWx1
ZShib3JkZXJCb3hSZWN0LmhlaWdodCgpKTsKKyAgICAgICAgTGF5b3V0VW5pdCBjID0gdmFsdWVG
b3JMZW5ndGgoc3R5bGUoKS0+Y2xpcFRvcCgpLCBib3JkZXJCb3hSZWN0LmhlaWdodCgpKTsKICAg
ICAgICAgY2xpcFJlY3QubW92ZSgwLCBjKTsKICAgICAgICAgY2xpcFJlY3QuY29udHJhY3QoMCwg
Yyk7CiAgICAgfQogCiAgICAgaWYgKCFzdHlsZSgpLT5jbGlwQm90dG9tKCkuaXNBdXRvKCkpCi0g
ICAgICAgIGNsaXBSZWN0LmNvbnRyYWN0KDAsIGhlaWdodCgpIC0gc3R5bGUoKS0+Y2xpcEJvdHRv
bSgpLmNhbGNWYWx1ZShoZWlnaHQoKSkpOworICAgICAgICBjbGlwUmVjdC5jb250cmFjdCgwLCBo
ZWlnaHQoKSAtIHZhbHVlRm9yTGVuZ3RoKHN0eWxlKCktPmNsaXBCb3R0b20oKSwgaGVpZ2h0KCkp
KTsKIAogICAgIHJldHVybiBjbGlwUmVjdDsKIH0KQEAgLTE3NzksMTAgKzE3NzksMTAgQEAgdm9p
ZCBSZW5kZXJCb3g6OmNvbXB1dGVMb2dpY2FsV2lkdGhJblJlZwogICAgIAogICAgIGlmIChpc0lu
bGluZSgpICYmICFpc0lubGluZUJsb2NrT3JJbmxpbmVUYWJsZSgpKSB7CiAgICAgICAgIC8vIGp1
c3QgY2FsY3VsYXRlIG1hcmdpbnMKLSAgICAgICAgc2V0TWFyZ2luU3RhcnQoc3R5bGVUb1VzZS0+
bWFyZ2luU3RhcnQoKS5jYWxjTWluVmFsdWUoY29udGFpbmVyTG9naWNhbFdpZHRoKSk7Ci0gICAg
ICAgIHNldE1hcmdpbkVuZChzdHlsZVRvVXNlLT5tYXJnaW5FbmQoKS5jYWxjTWluVmFsdWUoY29u
dGFpbmVyTG9naWNhbFdpZHRoKSk7CisgICAgICAgIHNldE1hcmdpblN0YXJ0KG1pbWludW1WYWx1
ZUZvckxlbmd0aChzdHlsZVRvVXNlLT5tYXJnaW5TdGFydCgpLCBjb250YWluZXJMb2dpY2FsV2lk
dGgpKTsKKyAgICAgICAgc2V0TWFyZ2luRW5kKG1pbWludW1WYWx1ZUZvckxlbmd0aChzdHlsZVRv
VXNlLT5tYXJnaW5FbmQoKSwgY29udGFpbmVyTG9naWNhbFdpZHRoKSk7CiAgICAgICAgIGlmICh0
cmVhdEFzUmVwbGFjZWQpCi0gICAgICAgICAgICBzZXRMb2dpY2FsV2lkdGgobWF4PExheW91dFVu
aXQ+KGxvZ2ljYWxXaWR0aExlbmd0aC5jYWxjRmxvYXRWYWx1ZSgwKSArIGJvcmRlckFuZFBhZGRp
bmdMb2dpY2FsV2lkdGgoKSwgbWluUHJlZmVycmVkTG9naWNhbFdpZHRoKCkpKTsKKyAgICAgICAg
ICAgIHNldExvZ2ljYWxXaWR0aChtYXg8TGF5b3V0VW5pdD4oZmxvYXRWYWx1ZUZvckxlbmd0aChs
b2dpY2FsV2lkdGhMZW5ndGgsIDApICsgYm9yZGVyQW5kUGFkZGluZ0xvZ2ljYWxXaWR0aCgpLCBt
aW5QcmVmZXJyZWRMb2dpY2FsV2lkdGgoKSkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBA
IC0xODE4LDggKzE4MTgsOCBAQCB2b2lkIFJlbmRlckJveDo6Y29tcHV0ZUxvZ2ljYWxXaWR0aElu
UmVnCiAKICAgICAvLyBNYXJnaW4gY2FsY3VsYXRpb25zLgogICAgIGlmIChsb2dpY2FsV2lkdGhM
ZW5ndGguaXNBdXRvKCkgfHwgaGFzUGVycGVuZGljdWxhckNvbnRhaW5pbmdCbG9jaykgewotICAg
ICAgICBzZXRNYXJnaW5TdGFydChzdHlsZVRvVXNlLT5tYXJnaW5TdGFydCgpLmNhbGNNaW5WYWx1
ZShjb250YWluZXJMb2dpY2FsV2lkdGgpKTsKLSAgICAgICAgc2V0TWFyZ2luRW5kKHN0eWxlVG9V
c2UtPm1hcmdpbkVuZCgpLmNhbGNNaW5WYWx1ZShjb250YWluZXJMb2dpY2FsV2lkdGgpKTsKKyAg
ICAgICAgc2V0TWFyZ2luU3RhcnQobWltaW51bVZhbHVlRm9yTGVuZ3RoKHN0eWxlVG9Vc2UtPm1h
cmdpblN0YXJ0KCksIGNvbnRhaW5lckxvZ2ljYWxXaWR0aCkpOworICAgICAgICBzZXRNYXJnaW5F
bmQobWltaW51bVZhbHVlRm9yTGVuZ3RoKHN0eWxlVG9Vc2UtPm1hcmdpbkVuZCgpLCBjb250YWlu
ZXJMb2dpY2FsV2lkdGgpKTsKICAgICB9IGVsc2UKICAgICAgICAgY29tcHV0ZUlubGluZURpcmVj
dGlvbk1hcmdpbnMoY2IsIGNvbnRhaW5lckxvZ2ljYWxXaWR0aCwgbG9naWNhbFdpZHRoKCkpOwog
CkBAIC0xODQyLDggKzE4NDIsOCBAQCBMYXlvdXRVbml0IFJlbmRlckJveDo6Y29tcHV0ZUxvZ2lj
YWxXaWR0CiAgICAgICAgIGxvZ2ljYWxXaWR0aCA9IHN0eWxlVG9Vc2UtPmxvZ2ljYWxNYXhXaWR0
aCgpOwogCiAgICAgaWYgKGxvZ2ljYWxXaWR0aC5pc0ludHJpbnNpY09yQXV0bygpKSB7Ci0gICAg
ICAgIExheW91dFVuaXQgbWFyZ2luU3RhcnQgPSBzdHlsZVRvVXNlLT5tYXJnaW5TdGFydCgpLmNh
bGNNaW5WYWx1ZShhdmFpbGFibGVMb2dpY2FsV2lkdGgpOwotICAgICAgICBMYXlvdXRVbml0IG1h
cmdpbkVuZCA9IHN0eWxlVG9Vc2UtPm1hcmdpbkVuZCgpLmNhbGNNaW5WYWx1ZShhdmFpbGFibGVM
b2dpY2FsV2lkdGgpOworICAgICAgICBMYXlvdXRVbml0IG1hcmdpblN0YXJ0ID0gbWltaW51bVZh
bHVlRm9yTGVuZ3RoKHN0eWxlVG9Vc2UtPm1hcmdpblN0YXJ0KCksIGF2YWlsYWJsZUxvZ2ljYWxX
aWR0aCk7CisgICAgICAgIExheW91dFVuaXQgbWFyZ2luRW5kID0gbWltaW51bVZhbHVlRm9yTGVu
Z3RoKHN0eWxlVG9Vc2UtPm1hcmdpbkVuZCgpLCBhdmFpbGFibGVMb2dpY2FsV2lkdGgpOwogICAg
ICAgICBsb2dpY2FsV2lkdGhSZXN1bHQgPSBhdmFpbGFibGVMb2dpY2FsV2lkdGggLSBtYXJnaW5T
dGFydCAtIG1hcmdpbkVuZDsKIAogICAgICAgICBpZiAoc2hyaW5rVG9Bdm9pZEZsb2F0cygpICYm
IGNiLT5jb250YWluc0Zsb2F0cygpKQpAQCAtMTg1NCw3ICsxODU0LDcgQEAgTGF5b3V0VW5pdCBS
ZW5kZXJCb3g6OmNvbXB1dGVMb2dpY2FsV2lkdAogICAgICAgICAgICAgbG9naWNhbFdpZHRoUmVz
dWx0ID0gbWluKGxvZ2ljYWxXaWR0aFJlc3VsdCwgbWF4UHJlZmVycmVkTG9naWNhbFdpZHRoKCkp
OwogICAgICAgICB9CiAgICAgfSBlbHNlIC8vIEZJWE1FOiBJZiB0aGUgY29udGFpbmluZyBibG9j
ayBmbG93IGlzIHBlcnBlbmRpY3VsYXIgdG8gb3VyIGRpcmVjdGlvbiB3ZSBuZWVkIHRvIHVzZSB0
aGUgYXZhaWxhYmxlIGxvZ2ljYWwgaGVpZ2h0IGluc3RlYWQuCi0gICAgICAgIGxvZ2ljYWxXaWR0
aFJlc3VsdCA9IGNvbXB1dGVCb3JkZXJCb3hMb2dpY2FsV2lkdGgobG9naWNhbFdpZHRoLmNhbGNW
YWx1ZShhdmFpbGFibGVMb2dpY2FsV2lkdGgpKTsgCisgICAgICAgIGxvZ2ljYWxXaWR0aFJlc3Vs
dCA9IGNvbXB1dGVCb3JkZXJCb3hMb2dpY2FsV2lkdGgodmFsdWVGb3JMZW5ndGgobG9naWNhbFdp
ZHRoLCBhdmFpbGFibGVMb2dpY2FsV2lkdGgpKTsgCiAKICAgICByZXR1cm4gbG9naWNhbFdpZHRo
UmVzdWx0OwogfQpAQCAtMTkyNSw4ICsxOTI1LDggQEAgdm9pZCBSZW5kZXJCb3g6OmNvbXB1dGVJ
bmxpbmVEaXJlY3Rpb25NYQogCiAgICAgaWYgKGlzRmxvYXRpbmcoKSB8fCBpc0lubGluZSgpKSB7
CiAgICAgICAgIC8vIElubGluZSBibG9ja3MvdGFibGVzIGFuZCBmbG9hdHMgZG9uJ3QgaGF2ZSB0
aGVpciBtYXJnaW5zIGluY3JlYXNlZC4KLSAgICAgICAgY29udGFpbmluZ0Jsb2NrLT5zZXRNYXJn
aW5TdGFydEZvckNoaWxkKHRoaXMsIG1hcmdpblN0YXJ0TGVuZ3RoLmNhbGNNaW5WYWx1ZShjb250
YWluZXJXaWR0aCkpOwotICAgICAgICBjb250YWluaW5nQmxvY2stPnNldE1hcmdpbkVuZEZvckNo
aWxkKHRoaXMsIG1hcmdpbkVuZExlbmd0aC5jYWxjTWluVmFsdWUoY29udGFpbmVyV2lkdGgpKTsK
KyAgICAgICAgY29udGFpbmluZ0Jsb2NrLT5zZXRNYXJnaW5TdGFydEZvckNoaWxkKHRoaXMsIG1p
bWludW1WYWx1ZUZvckxlbmd0aChtYXJnaW5TdGFydExlbmd0aCwgY29udGFpbmVyV2lkdGgpKTsK
KyAgICAgICAgY29udGFpbmluZ0Jsb2NrLT5zZXRNYXJnaW5FbmRGb3JDaGlsZCh0aGlzLCBtaW1p
bnVtVmFsdWVGb3JMZW5ndGgobWFyZ2luRW5kTGVuZ3RoLCBjb250YWluZXJXaWR0aCkpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogCkBAIC0xOTQwLDcgKzE5NDAsNyBAQCB2b2lkIFJlbmRlckJv
eDo6Y29tcHV0ZUlubGluZURpcmVjdGlvbk1hCiAgICAgCiAgICAgLy8gQ2FzZSBUd286IFRoZSBv
YmplY3QgaXMgYmVpbmcgcHVzaGVkIHRvIHRoZSBzdGFydCBvZiB0aGUgY29udGFpbmluZyBibG9j
aydzIGF2YWlsYWJsZSBsb2dpY2FsIHdpZHRoLgogICAgIGlmIChtYXJnaW5FbmRMZW5ndGguaXNB
dXRvKCkgJiYgY2hpbGRXaWR0aCA8IGNvbnRhaW5lcldpZHRoKSB7Ci0gICAgICAgIGNvbnRhaW5p
bmdCbG9jay0+c2V0TWFyZ2luU3RhcnRGb3JDaGlsZCh0aGlzLCBtYXJnaW5TdGFydExlbmd0aC5j
YWxjVmFsdWUoY29udGFpbmVyV2lkdGgpKTsKKyAgICAgICAgY29udGFpbmluZ0Jsb2NrLT5zZXRN
YXJnaW5TdGFydEZvckNoaWxkKHRoaXMsIHZhbHVlRm9yTGVuZ3RoKG1hcmdpblN0YXJ0TGVuZ3Ro
LCBjb250YWluZXJXaWR0aCkpOwogICAgICAgICBjb250YWluaW5nQmxvY2stPnNldE1hcmdpbkVu
ZEZvckNoaWxkKHRoaXMsIGNvbnRhaW5lcldpZHRoIC0gY2hpbGRXaWR0aCAtIGNvbnRhaW5pbmdC
bG9jay0+bWFyZ2luU3RhcnRGb3JDaGlsZCh0aGlzKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9
IApAQCAtMTk0OSwxNSArMTk0OSwxNSBAQCB2b2lkIFJlbmRlckJveDo6Y29tcHV0ZUlubGluZURp
cmVjdGlvbk1hCiAgICAgYm9vbCBwdXNoVG9FbmRGcm9tVGV4dEFsaWduID0gIW1hcmdpbkVuZExl
bmd0aC5pc0F1dG8oKSAmJiAoKCFjb250YWluaW5nQmxvY2tTdHlsZS0+aXNMZWZ0VG9SaWdodERp
cmVjdGlvbigpICYmIGNvbnRhaW5pbmdCbG9ja1N0eWxlLT50ZXh0QWxpZ24oKSA9PSBXRUJLSVRf
TEVGVCkKICAgICAgICAgfHwgKGNvbnRhaW5pbmdCbG9ja1N0eWxlLT5pc0xlZnRUb1JpZ2h0RGly
ZWN0aW9uKCkgJiYgY29udGFpbmluZ0Jsb2NrU3R5bGUtPnRleHRBbGlnbigpID09IFdFQktJVF9S
SUdIVCkpOwogICAgIGlmICgobWFyZ2luU3RhcnRMZW5ndGguaXNBdXRvKCkgJiYgY2hpbGRXaWR0
aCA8IGNvbnRhaW5lcldpZHRoKSB8fCBwdXNoVG9FbmRGcm9tVGV4dEFsaWduKSB7Ci0gICAgICAg
IGNvbnRhaW5pbmdCbG9jay0+c2V0TWFyZ2luRW5kRm9yQ2hpbGQodGhpcywgbWFyZ2luRW5kTGVu
Z3RoLmNhbGNWYWx1ZShjb250YWluZXJXaWR0aCkpOworICAgICAgICBjb250YWluaW5nQmxvY2st
PnNldE1hcmdpbkVuZEZvckNoaWxkKHRoaXMsIHZhbHVlRm9yTGVuZ3RoKG1hcmdpbkVuZExlbmd0
aCwgY29udGFpbmVyV2lkdGgpKTsKICAgICAgICAgY29udGFpbmluZ0Jsb2NrLT5zZXRNYXJnaW5T
dGFydEZvckNoaWxkKHRoaXMsIGNvbnRhaW5lcldpZHRoIC0gY2hpbGRXaWR0aCAtIGNvbnRhaW5p
bmdCbG9jay0+bWFyZ2luRW5kRm9yQ2hpbGQodGhpcykpOwogICAgICAgICByZXR1cm47CiAgICAg
fSAKICAgICAKICAgICAvLyBDYXNlIEZvdXI6IEVpdGhlciBubyBhdXRvIG1hcmdpbnMsIG9yIG91
ciB3aWR0aCBpcyA+PSB0aGUgY29udGFpbmVyIHdpZHRoIChjc3MyLjEsIDEwLjMuMykuICBJbiB0
aGF0IGNhc2UKICAgICAvLyBhdXRvIG1hcmdpbnMgd2lsbCBqdXN0IHR1cm4gaW50byAwLgotICAg
IGNvbnRhaW5pbmdCbG9jay0+c2V0TWFyZ2luU3RhcnRGb3JDaGlsZCh0aGlzLCBtYXJnaW5TdGFy
dExlbmd0aC5jYWxjTWluVmFsdWUoY29udGFpbmVyV2lkdGgpKTsKLSAgICBjb250YWluaW5nQmxv
Y2stPnNldE1hcmdpbkVuZEZvckNoaWxkKHRoaXMsIG1hcmdpbkVuZExlbmd0aC5jYWxjTWluVmFs
dWUoY29udGFpbmVyV2lkdGgpKTsKKyAgICBjb250YWluaW5nQmxvY2stPnNldE1hcmdpblN0YXJ0
Rm9yQ2hpbGQodGhpcywgbWltaW51bVZhbHVlRm9yTGVuZ3RoKG1hcmdpblN0YXJ0TGVuZ3RoLCBj
b250YWluZXJXaWR0aCkpOworICAgIGNvbnRhaW5pbmdCbG9jay0+c2V0TWFyZ2luRW5kRm9yQ2hp
bGQodGhpcywgbWltaW51bVZhbHVlRm9yTGVuZ3RoKG1hcmdpbkVuZExlbmd0aCwgY29udGFpbmVy
V2lkdGgpKTsKIH0KIAogUmVuZGVyQm94UmVnaW9uSW5mbyogUmVuZGVyQm94OjpyZW5kZXJCb3hS
ZWdpb25JbmZvKFJlbmRlclJlZ2lvbiogcmVnaW9uLCBMYXlvdXRVbml0IG9mZnNldEZyb21Mb2dp
Y2FsVG9wT2ZGaXJzdFBhZ2UsIFJlbmRlckJveFJlZ2lvbkluZm9GbGFncyBjYWNoZUZsYWcpIGNv
bnN0CkBAIC0yMjQ1LDcgKzIyNDUsNyBAQCBMYXlvdXRVbml0IFJlbmRlckJveDo6Y29tcHV0ZVBl
cmNlbnRhZ2VMCiAgICAgICAgIHJlc3VsdCA9IGNiLT5jb21wdXRlQ29udGVudEJveExvZ2ljYWxI
ZWlnaHQoY2ItPmF2YWlsYWJsZUxvZ2ljYWxIZWlnaHQoKSk7CiAKICAgICBpZiAocmVzdWx0ICE9
IC0xKSB7Ci0gICAgICAgIHJlc3VsdCA9IGhlaWdodC5jYWxjVmFsdWUocmVzdWx0KTsKKyAgICAg
ICAgcmVzdWx0ID0gdmFsdWVGb3JMZW5ndGgoaGVpZ2h0LCByZXN1bHQpOwogICAgICAgICBpZiAo
aW5jbHVkZUJvcmRlclBhZGRpbmcpIHsKICAgICAgICAgICAgIC8vIEl0IGlzIG5lY2Vzc2FyeSB0
byB1c2UgdGhlIGJvcmRlci1ib3ggdG8gbWF0Y2ggV2luSUUncyBicm9rZW4KICAgICAgICAgICAg
IC8vIGJveCBtb2RlbC4gIFRoaXMgaXMgZXNzZW50aWFsIGZvciBzaXppbmcgaW5zaWRlCkBAIC0y
MjgwLDcgKzIyODAsNyBAQCBMYXlvdXRVbml0IFJlbmRlckJveDo6Y29tcHV0ZVJlcGxhY2VkTG9n
CiAgICAgICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NDY0OTYKICAgICAgICAgICAgIGNvbnN0IExheW91dFVuaXQgY3cgPSBpc1Bvc2l0aW9uZWQoKSA/
IGNvbnRhaW5pbmdCbG9ja0xvZ2ljYWxXaWR0aEZvclBvc2l0aW9uZWQodG9SZW5kZXJCb3hNb2Rl
bE9iamVjdChjb250YWluZXIoKSkpIDogY29udGFpbmluZ0Jsb2NrTG9naWNhbFdpZHRoRm9yQ29u
dGVudCgpOwogICAgICAgICAgICAgaWYgKGN3ID4gMCkKLSAgICAgICAgICAgICAgICByZXR1cm4g
Y29tcHV0ZUNvbnRlbnRCb3hMb2dpY2FsV2lkdGgobG9naWNhbFdpZHRoLmNhbGNNaW5WYWx1ZShj
dykpOworICAgICAgICAgICAgICAgIHJldHVybiBjb21wdXRlQ29udGVudEJveExvZ2ljYWxXaWR0
aChtaW1pbnVtVmFsdWVGb3JMZW5ndGgobG9naWNhbFdpZHRoLCBjdykpOwogICAgICAgICB9CiAg
ICAgICAgIC8vIGZhbGwgdGhyb3VnaAogICAgICAgICBkZWZhdWx0OgpAQCAtMjMyMiw3ICsyMzIy
LDcgQEAgTGF5b3V0VW5pdCBSZW5kZXJCb3g6OmNvbXB1dGVSZXBsYWNlZExvZwogICAgICAgICAg
ICAgICAgIGJsb2NrLT5jb21wdXRlTG9naWNhbEhlaWdodCgpOwogICAgICAgICAgICAgICAgIExh
eW91dFVuaXQgbmV3SGVpZ2h0ID0gYmxvY2stPmNvbXB1dGVDb250ZW50Qm94TG9naWNhbEhlaWdo
dChibG9jay0+Y29udGVudEhlaWdodCgpKTsKICAgICAgICAgICAgICAgICBibG9jay0+c2V0SGVp
Z2h0KG9sZEhlaWdodCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGNvbXB1dGVDb250ZW50Qm94
TG9naWNhbEhlaWdodChsb2dpY2FsSGVpZ2h0LmNhbGNWYWx1ZShuZXdIZWlnaHQpKTsKKyAgICAg
ICAgICAgICAgICByZXR1cm4gY29tcHV0ZUNvbnRlbnRCb3hMb2dpY2FsSGVpZ2h0KHZhbHVlRm9y
TGVuZ3RoKGxvZ2ljYWxIZWlnaHQsIG5ld0hlaWdodCkpOwogICAgICAgICAgICAgfQogICAgICAg
ICAgICAgCiAgICAgICAgICAgICAvLyBGSVhNRTogYXZhaWxhYmxlTG9naWNhbEhlaWdodCgpIGlz
IHdyb25nIGlmIHRoZSByZXBsYWNlZCBlbGVtZW50J3MgYmxvY2stZmxvdyBpcyBwZXJwZW5kaWN1
bGFyIHRvIHRoZQpAQCAtMjM0MywxMyArMjM0MywxMyBAQCBMYXlvdXRVbml0IFJlbmRlckJveDo6
Y29tcHV0ZVJlcGxhY2VkTG9nCiAgICAgICAgICAgICAgICAgICAgICAgICAvLyBEb24ndCBsZXQg
dGFibGUgY2VsbHMgc3F1ZWV6ZSBwZXJjZW50LWhlaWdodCByZXBsYWNlZCBlbGVtZW50cwogICAg
ICAgICAgICAgICAgICAgICAgICAgLy8gPGh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE1MzU5PgogICAgICAgICAgICAgICAgICAgICAgICAgYXZhaWxhYmxlSGVpZ2h0ID0g
bWF4KGF2YWlsYWJsZUhlaWdodCwgaW50cmluc2ljTG9naWNhbEhlaWdodCgpKTsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBsb2dpY2FsSGVpZ2h0LmNhbGNWYWx1ZShhdmFpbGFibGVI
ZWlnaHQgLSBib3JkZXJBbmRQYWRkaW5nTG9naWNhbEhlaWdodCgpKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiB2YWx1ZUZvckxlbmd0aChsb2dpY2FsSGVpZ2h0LCBhdmFpbGFibGVI
ZWlnaHQgLSBib3JkZXJBbmRQYWRkaW5nTG9naWNhbEhlaWdodCgpKTsKICAgICAgICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICAgICAgICAgICBjYiA9IGNiLT5jb250YWluaW5nQmxvY2soKTsK
ICAgICAgICAgICAgICAgICAgICAgdG9SZW5kZXJCbG9jayhjYiktPmFkZFBlcmNlbnRIZWlnaHRE
ZXNjZW5kYW50KGNvbnN0X2Nhc3Q8UmVuZGVyQm94Kj4odGhpcykpOwogICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybiBjb21wdXRlQ29udGVudEJveExv
Z2ljYWxIZWlnaHQobG9naWNhbEhlaWdodC5jYWxjVmFsdWUoYXZhaWxhYmxlSGVpZ2h0KSk7Cisg
ICAgICAgICAgICByZXR1cm4gY29tcHV0ZUNvbnRlbnRCb3hMb2dpY2FsSGVpZ2h0KHZhbHVlRm9y
TGVuZ3RoKGxvZ2ljYWxIZWlnaHQsIGF2YWlsYWJsZUhlaWdodCkpOwogICAgICAgICB9CiAgICAg
ICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICByZXR1cm4gaW50cmluc2ljTG9naWNhbEhlaWdodCgp
OwpAQCAtMjM4NCw3ICsyMzg0LDcgQEAgTGF5b3V0VW5pdCBSZW5kZXJCb3g6OmF2YWlsYWJsZUxv
Z2ljYWxIZQogICAgICAgICAgICAgYXZhaWxhYmxlSGVpZ2h0ID0gY29udGFpbmluZ0Jsb2NrTG9n
aWNhbEhlaWdodEZvclBvc2l0aW9uZWQoY29udGFpbmluZ0Jsb2NrKCkpOwogICAgICAgICBlbHNl
CiAgICAgICAgICAgICBhdmFpbGFibGVIZWlnaHQgPSBjb250YWluaW5nQmxvY2soKS0+YXZhaWxh
YmxlTG9naWNhbEhlaWdodCgpOwotICAgICAgICByZXR1cm4gY29tcHV0ZUNvbnRlbnRCb3hMb2dp
Y2FsSGVpZ2h0KGguY2FsY1ZhbHVlKGF2YWlsYWJsZUhlaWdodCkpOworICAgICAgICByZXR1cm4g
Y29tcHV0ZUNvbnRlbnRCb3hMb2dpY2FsSGVpZ2h0KHZhbHVlRm9yTGVuZ3RoKGgsIGF2YWlsYWJs
ZUhlaWdodCkpOwogICAgIH0KIAogICAgIC8vIEZJWE1FOiBXZSBjYW4ndCBqdXN0IGNoZWNrIHRv
cC9ib3R0b20gaGVyZS4KQEAgLTI0MTYsOCArMjQxNiw4IEBAIHZvaWQgUmVuZGVyQm94Ojpjb21w
dXRlQmxvY2tEaXJlY3Rpb25NYXIKICAgICBMYXlvdXRVbml0IGN3ID0gY29udGFpbmluZ0Jsb2Nr
TG9naWNhbFdpZHRoRm9yQ29udGVudCgpOwogCiAgICAgUmVuZGVyU3R5bGUqIGNvbnRhaW5pbmdC
bG9ja1N0eWxlID0gY29udGFpbmluZ0Jsb2NrLT5zdHlsZSgpOwotICAgIGNvbnRhaW5pbmdCbG9j
ay0+c2V0TWFyZ2luQmVmb3JlRm9yQ2hpbGQodGhpcywgc3R5bGUoKS0+bWFyZ2luQmVmb3JlVXNp
bmcoY29udGFpbmluZ0Jsb2NrU3R5bGUpLmNhbGNNaW5WYWx1ZShjdykpOwotICAgIGNvbnRhaW5p
bmdCbG9jay0+c2V0TWFyZ2luQWZ0ZXJGb3JDaGlsZCh0aGlzLCBzdHlsZSgpLT5tYXJnaW5BZnRl
clVzaW5nKGNvbnRhaW5pbmdCbG9ja1N0eWxlKS5jYWxjTWluVmFsdWUoY3cpKTsKKyAgICBjb250
YWluaW5nQmxvY2stPnNldE1hcmdpbkJlZm9yZUZvckNoaWxkKHRoaXMsIG1pbWludW1WYWx1ZUZv
ckxlbmd0aChzdHlsZSgpLT5tYXJnaW5CZWZvcmVVc2luZyhjb250YWluaW5nQmxvY2tTdHlsZSks
IGN3KSk7CisgICAgY29udGFpbmluZ0Jsb2NrLT5zZXRNYXJnaW5BZnRlckZvckNoaWxkKHRoaXMs
IG1pbWludW1WYWx1ZUZvckxlbmd0aChzdHlsZSgpLT5tYXJnaW5BZnRlclVzaW5nKGNvbnRhaW5p
bmdCbG9ja1N0eWxlKSwgY3cpKTsKIH0KIAogTGF5b3V0VW5pdCBSZW5kZXJCb3g6OmNvbnRhaW5p
bmdCbG9ja0xvZ2ljYWxXaWR0aEZvclBvc2l0aW9uZWQoY29uc3QgUmVuZGVyQm94TW9kZWxPYmpl
Y3QqIGNvbnRhaW5pbmdCbG9jaywgUmVuZGVyUmVnaW9uKiByZWdpb24sCkBAIC0yNzU3LDEwICsy
NzU3LDEwIEBAIHZvaWQgUmVuZGVyQm94Ojpjb21wdXRlUG9zaXRpb25lZExvZ2ljYWwKICAgICAg
ICAgLy8gTk9URTogIEl0IGlzIG5vdCBuZWNlc3NhcnkgdG8gc29sdmUgZm9yICdyaWdodCcgaW4g
dGhlIG92ZXIgY29uc3RyYWluZWQKICAgICAgICAgLy8gY2FzZSBiZWNhdXNlIHRoZSB2YWx1ZSBp
cyBub3QgdXNlZCBmb3IgYW55IGZ1cnRoZXIgY2FsY3VsYXRpb25zLgogCi0gICAgICAgIGxvZ2lj
YWxMZWZ0VmFsdWUgPSBsb2dpY2FsTGVmdC5jYWxjVmFsdWUoY29udGFpbmVyTG9naWNhbFdpZHRo
KTsKLSAgICAgICAgbG9naWNhbFdpZHRoVmFsdWUgPSBjb21wdXRlQ29udGVudEJveExvZ2ljYWxX
aWR0aChsb2dpY2FsV2lkdGguY2FsY1ZhbHVlKGNvbnRhaW5lckxvZ2ljYWxXaWR0aCkpOworICAg
ICAgICBsb2dpY2FsTGVmdFZhbHVlID0gdmFsdWVGb3JMZW5ndGgobG9naWNhbExlZnQsIGNvbnRh
aW5lckxvZ2ljYWxXaWR0aCk7CisgICAgICAgIGxvZ2ljYWxXaWR0aFZhbHVlID0gY29tcHV0ZUNv
bnRlbnRCb3hMb2dpY2FsV2lkdGgodmFsdWVGb3JMZW5ndGgobG9naWNhbFdpZHRoLCBjb250YWlu
ZXJMb2dpY2FsV2lkdGgpKTsKIAotICAgICAgICBjb25zdCBMYXlvdXRVbml0IGF2YWlsYWJsZVNw
YWNlID0gY29udGFpbmVyTG9naWNhbFdpZHRoIC0gKGxvZ2ljYWxMZWZ0VmFsdWUgKyBsb2dpY2Fs
V2lkdGhWYWx1ZSArIGxvZ2ljYWxSaWdodC5jYWxjVmFsdWUoY29udGFpbmVyTG9naWNhbFdpZHRo
KSArIGJvcmRlcnNQbHVzUGFkZGluZyk7CisgICAgICAgIGNvbnN0IExheW91dFVuaXQgYXZhaWxh
YmxlU3BhY2UgPSBjb250YWluZXJMb2dpY2FsV2lkdGggLSAobG9naWNhbExlZnRWYWx1ZSArIGxv
Z2ljYWxXaWR0aFZhbHVlICsgdmFsdWVGb3JMZW5ndGgobG9naWNhbFJpZ2h0LCBjb250YWluZXJM
b2dpY2FsV2lkdGgpICsgYm9yZGVyc1BsdXNQYWRkaW5nKTsKIAogICAgICAgICAvLyBNYXJnaW5z
IGFyZSBub3cgdGhlIG9ubHkgdW5rbm93bgogICAgICAgICBpZiAobWFyZ2luTG9naWNhbExlZnQu
aXNBdXRvKCkgJiYgbWFyZ2luTG9naWNhbFJpZ2h0LmlzQXV0bygpKSB7CkBAIC0yNzgxLDE2ICsy
NzgxLDE2IEBAIHZvaWQgUmVuZGVyQm94Ojpjb21wdXRlUG9zaXRpb25lZExvZ2ljYWwKICAgICAg
ICAgICAgIH0KICAgICAgICAgfSBlbHNlIGlmIChtYXJnaW5Mb2dpY2FsTGVmdC5pc0F1dG8oKSkg
ewogICAgICAgICAgICAgLy8gU29sdmUgZm9yIGxlZnQgbWFyZ2luCi0gICAgICAgICAgICBtYXJn
aW5Mb2dpY2FsUmlnaHRWYWx1ZSA9IG1hcmdpbkxvZ2ljYWxSaWdodC5jYWxjVmFsdWUoY29udGFp
bmVyTG9naWNhbFdpZHRoKTsKKyAgICAgICAgICAgIG1hcmdpbkxvZ2ljYWxSaWdodFZhbHVlID0g
dmFsdWVGb3JMZW5ndGgobWFyZ2luTG9naWNhbFJpZ2h0LCBjb250YWluZXJMb2dpY2FsV2lkdGgp
OwogICAgICAgICAgICAgbWFyZ2luTG9naWNhbExlZnRWYWx1ZSA9IGF2YWlsYWJsZVNwYWNlIC0g
bWFyZ2luTG9naWNhbFJpZ2h0VmFsdWU7CiAgICAgICAgIH0gZWxzZSBpZiAobWFyZ2luTG9naWNh
bFJpZ2h0LmlzQXV0bygpKSB7CiAgICAgICAgICAgICAvLyBTb2x2ZSBmb3IgcmlnaHQgbWFyZ2lu
Ci0gICAgICAgICAgICBtYXJnaW5Mb2dpY2FsTGVmdFZhbHVlID0gbWFyZ2luTG9naWNhbExlZnQu
Y2FsY1ZhbHVlKGNvbnRhaW5lckxvZ2ljYWxXaWR0aCk7CisgICAgICAgICAgICBtYXJnaW5Mb2dp
Y2FsTGVmdFZhbHVlID0gdmFsdWVGb3JMZW5ndGgobWFyZ2luTG9naWNhbExlZnQsIGNvbnRhaW5l
ckxvZ2ljYWxXaWR0aCk7CiAgICAgICAgICAgICBtYXJnaW5Mb2dpY2FsUmlnaHRWYWx1ZSA9IGF2
YWlsYWJsZVNwYWNlIC0gbWFyZ2luTG9naWNhbExlZnRWYWx1ZTsKICAgICAgICAgfSBlbHNlIHsK
ICAgICAgICAgICAgIC8vIE92ZXItY29uc3RyYWluZWQsIHNvbHZlIGZvciBsZWZ0IGlmIGRpcmVj
dGlvbiBpcyBSVEwKLSAgICAgICAgICAgIG1hcmdpbkxvZ2ljYWxMZWZ0VmFsdWUgPSBtYXJnaW5M
b2dpY2FsTGVmdC5jYWxjVmFsdWUoY29udGFpbmVyTG9naWNhbFdpZHRoKTsKLSAgICAgICAgICAg
IG1hcmdpbkxvZ2ljYWxSaWdodFZhbHVlID0gbWFyZ2luTG9naWNhbFJpZ2h0LmNhbGNWYWx1ZShj
b250YWluZXJMb2dpY2FsV2lkdGgpOworICAgICAgICAgICAgbWFyZ2luTG9naWNhbExlZnRWYWx1
ZSA9IHZhbHVlRm9yTGVuZ3RoKG1hcmdpbkxvZ2ljYWxMZWZ0LCBjb250YWluZXJMb2dpY2FsV2lk
dGgpOworICAgICAgICAgICAgbWFyZ2luTG9naWNhbFJpZ2h0VmFsdWUgPSB2YWx1ZUZvckxlbmd0
aChtYXJnaW5Mb2dpY2FsUmlnaHQsIGNvbnRhaW5lckxvZ2ljYWxXaWR0aCk7CiAKICAgICAgICAg
ICAgIC8vIFVzZSB0aGUgY29udGFpbmluZyBibG9jaydzIGRpcmVjdGlvbiByYXRoZXIgdGhhbiB0
aGUgcGFyZW50IGJsb2NrJ3MKICAgICAgICAgICAgIC8vIHBlciBDU1MgMi4xIHJlZmVyZW5jZSB0
ZXN0IGFic3Bvcy1ub24tcmVwbGFjZWQtd2lkdGgtbWFyZ2luLTAwMC4KQEAgLTI4NDAsOCArMjg0
MCw4IEBAIHZvaWQgUmVuZGVyQm94Ojpjb21wdXRlUG9zaXRpb25lZExvZ2ljYWwKICAgICAgICAg
Ly8gYmVjYXVzZSB0aGUgdmFsdWUgaXMgbm90IHVzZWQgZm9yIGFueSBmdXJ0aGVyIGNhbGN1bGF0
aW9ucy4KIAogICAgICAgICAvLyBDYWxjdWxhdGUgbWFyZ2lucywgJ2F1dG8nIG1hcmdpbnMgYXJl
IGlnbm9yZWQuCi0gICAgICAgIG1hcmdpbkxvZ2ljYWxMZWZ0VmFsdWUgPSBtYXJnaW5Mb2dpY2Fs
TGVmdC5jYWxjTWluVmFsdWUoY29udGFpbmVyTG9naWNhbFdpZHRoKTsKLSAgICAgICAgbWFyZ2lu
TG9naWNhbFJpZ2h0VmFsdWUgPSBtYXJnaW5Mb2dpY2FsUmlnaHQuY2FsY01pblZhbHVlKGNvbnRh
aW5lckxvZ2ljYWxXaWR0aCk7CisgICAgICAgIG1hcmdpbkxvZ2ljYWxMZWZ0VmFsdWUgPSBtaW1p
bnVtVmFsdWVGb3JMZW5ndGgobWFyZ2luTG9naWNhbExlZnQsIGNvbnRhaW5lckxvZ2ljYWxXaWR0
aCk7CisgICAgICAgIG1hcmdpbkxvZ2ljYWxSaWdodFZhbHVlID0gbWltaW51bVZhbHVlRm9yTGVu
Z3RoKG1hcmdpbkxvZ2ljYWxSaWdodCwgY29udGFpbmVyTG9naWNhbFdpZHRoKTsKIAogICAgICAg
ICBjb25zdCBMYXlvdXRVbml0IGF2YWlsYWJsZVNwYWNlID0gY29udGFpbmVyTG9naWNhbFdpZHRo
IC0gKG1hcmdpbkxvZ2ljYWxMZWZ0VmFsdWUgKyBtYXJnaW5Mb2dpY2FsUmlnaHRWYWx1ZSArIGJv
cmRlcnNQbHVzUGFkZGluZyk7CiAKQEAgLTI4NDksNyArMjg0OSw3IEBAIHZvaWQgUmVuZGVyQm94
Ojpjb21wdXRlUG9zaXRpb25lZExvZ2ljYWwKICAgICAgICAgLy8gVXNlIHJ1bGUvY2FzZSB0aGF0
IGFwcGxpZXMuCiAgICAgICAgIGlmIChsb2dpY2FsTGVmdElzQXV0byAmJiBsb2dpY2FsV2lkdGhJ
c0F1dG8gJiYgIWxvZ2ljYWxSaWdodElzQXV0bykgewogICAgICAgICAgICAgLy8gUlVMRSAxOiAo
dXNlIHNocmluay10by1maXQgZm9yIHdpZHRoLCBhbmQgc29sdmUgb2YgbGVmdCkKLSAgICAgICAg
ICAgIExheW91dFVuaXQgbG9naWNhbFJpZ2h0VmFsdWUgPSBsb2dpY2FsUmlnaHQuY2FsY1ZhbHVl
KGNvbnRhaW5lckxvZ2ljYWxXaWR0aCk7CisgICAgICAgICAgICBMYXlvdXRVbml0IGxvZ2ljYWxS
aWdodFZhbHVlID0gdmFsdWVGb3JMZW5ndGgobG9naWNhbFJpZ2h0LCBjb250YWluZXJMb2dpY2Fs
V2lkdGgpOwogCiAgICAgICAgICAgICAvLyBGSVhNRTogd291bGQgaXQgYmUgYmV0dGVyIHRvIGhh
dmUgc2hyaW5rLXRvLWZpdCBpbiBvbmUgc3RlcD8KICAgICAgICAgICAgIExheW91dFVuaXQgcHJl
ZmVycmVkV2lkdGggPSBtYXhQcmVmZXJyZWRMb2dpY2FsV2lkdGgoKSAtIGJvcmRlcnNQbHVzUGFk
ZGluZzsKQEAgLTI4NTksNyArMjg1OSw3IEBAIHZvaWQgUmVuZGVyQm94Ojpjb21wdXRlUG9zaXRp
b25lZExvZ2ljYWwKICAgICAgICAgICAgIGxvZ2ljYWxMZWZ0VmFsdWUgPSBhdmFpbGFibGVTcGFj
ZSAtIChsb2dpY2FsV2lkdGhWYWx1ZSArIGxvZ2ljYWxSaWdodFZhbHVlKTsKICAgICAgICAgfSBl
bHNlIGlmICghbG9naWNhbExlZnRJc0F1dG8gJiYgbG9naWNhbFdpZHRoSXNBdXRvICYmIGxvZ2lj
YWxSaWdodElzQXV0bykgewogICAgICAgICAgICAgLy8gUlVMRSAzOiAodXNlIHNocmluay10by1m
aXQgZm9yIHdpZHRoLCBhbmQgbm8gbmVlZCBzb2x2ZSBvZiByaWdodCkKLSAgICAgICAgICAgIGxv
Z2ljYWxMZWZ0VmFsdWUgPSBsb2dpY2FsTGVmdC5jYWxjVmFsdWUoY29udGFpbmVyTG9naWNhbFdp
ZHRoKTsKKyAgICAgICAgICAgIGxvZ2ljYWxMZWZ0VmFsdWUgPSB2YWx1ZUZvckxlbmd0aChsb2dp
Y2FsTGVmdCwgY29udGFpbmVyTG9naWNhbFdpZHRoKTsKIAogICAgICAgICAgICAgLy8gRklYTUU6
IHdvdWxkIGl0IGJlIGJldHRlciB0byBoYXZlIHNocmluay10by1maXQgaW4gb25lIHN0ZXA/CiAg
ICAgICAgICAgICBMYXlvdXRVbml0IHByZWZlcnJlZFdpZHRoID0gbWF4UHJlZmVycmVkTG9naWNh
bFdpZHRoKCkgLSBib3JkZXJzUGx1c1BhZGRpbmc7CkBAIC0yODY4LDE2ICsyODY4LDE2IEBAIHZv
aWQgUmVuZGVyQm94Ojpjb21wdXRlUG9zaXRpb25lZExvZ2ljYWwKICAgICAgICAgICAgIGxvZ2lj
YWxXaWR0aFZhbHVlID0gbWluKG1heChwcmVmZXJyZWRNaW5XaWR0aCwgYXZhaWxhYmxlV2lkdGgp
LCBwcmVmZXJyZWRXaWR0aCk7CiAgICAgICAgIH0gZWxzZSBpZiAobG9naWNhbExlZnRJc0F1dG8g
JiYgIWxvZ2ljYWxXaWR0aElzQXV0byAmJiAhbG9naWNhbFJpZ2h0SXNBdXRvKSB7CiAgICAgICAg
ICAgICAvLyBSVUxFIDQ6IChzb2x2ZSBmb3IgbGVmdCkKLSAgICAgICAgICAgIGxvZ2ljYWxXaWR0
aFZhbHVlID0gY29tcHV0ZUNvbnRlbnRCb3hMb2dpY2FsV2lkdGgobG9naWNhbFdpZHRoLmNhbGNW
YWx1ZShjb250YWluZXJMb2dpY2FsV2lkdGgpKTsKLSAgICAgICAgICAgIGxvZ2ljYWxMZWZ0VmFs
dWUgPSBhdmFpbGFibGVTcGFjZSAtIChsb2dpY2FsV2lkdGhWYWx1ZSArIGxvZ2ljYWxSaWdodC5j
YWxjVmFsdWUoY29udGFpbmVyTG9naWNhbFdpZHRoKSk7CisgICAgICAgICAgICBsb2dpY2FsV2lk
dGhWYWx1ZSA9IGNvbXB1dGVDb250ZW50Qm94TG9naWNhbFdpZHRoKHZhbHVlRm9yTGVuZ3RoKGxv
Z2ljYWxXaWR0aCwgY29udGFpbmVyTG9naWNhbFdpZHRoKSk7CisgICAgICAgICAgICBsb2dpY2Fs
TGVmdFZhbHVlID0gYXZhaWxhYmxlU3BhY2UgLSAobG9naWNhbFdpZHRoVmFsdWUgKyB2YWx1ZUZv
ckxlbmd0aChsb2dpY2FsUmlnaHQsIGNvbnRhaW5lckxvZ2ljYWxXaWR0aCkpOwogICAgICAgICB9
IGVsc2UgaWYgKCFsb2dpY2FsTGVmdElzQXV0byAmJiBsb2dpY2FsV2lkdGhJc0F1dG8gJiYgIWxv
Z2ljYWxSaWdodElzQXV0bykgewogICAgICAgICAgICAgLy8gUlVMRSA1OiAoc29sdmUgZm9yIHdp
ZHRoKQotICAgICAgICAgICAgbG9naWNhbExlZnRWYWx1ZSA9IGxvZ2ljYWxMZWZ0LmNhbGNWYWx1
ZShjb250YWluZXJMb2dpY2FsV2lkdGgpOwotICAgICAgICAgICAgbG9naWNhbFdpZHRoVmFsdWUg
PSBhdmFpbGFibGVTcGFjZSAtIChsb2dpY2FsTGVmdFZhbHVlICsgbG9naWNhbFJpZ2h0LmNhbGNW
YWx1ZShjb250YWluZXJMb2dpY2FsV2lkdGgpKTsKKyAgICAgICAgICAgIGxvZ2ljYWxMZWZ0VmFs
dWUgPSB2YWx1ZUZvckxlbmd0aChsb2dpY2FsTGVmdCwgY29udGFpbmVyTG9naWNhbFdpZHRoKTsK
KyAgICAgICAgICAgIGxvZ2ljYWxXaWR0aFZhbHVlID0gYXZhaWxhYmxlU3BhY2UgLSAobG9naWNh
bExlZnRWYWx1ZSArIHZhbHVlRm9yTGVuZ3RoKGxvZ2ljYWxSaWdodCwgY29udGFpbmVyTG9naWNh
bFdpZHRoKSk7CiAgICAgICAgIH0gZWxzZSBpZiAoIWxvZ2ljYWxMZWZ0SXNBdXRvICYmICFsb2dp
Y2FsV2lkdGhJc0F1dG8gJiYgbG9naWNhbFJpZ2h0SXNBdXRvKSB7CiAgICAgICAgICAgICAvLyBS
VUxFIDY6IChubyBuZWVkIHNvbHZlIGZvciByaWdodCkKLSAgICAgICAgICAgIGxvZ2ljYWxMZWZ0
VmFsdWUgPSBsb2dpY2FsTGVmdC5jYWxjVmFsdWUoY29udGFpbmVyTG9naWNhbFdpZHRoKTsKLSAg
ICAgICAgICAgIGxvZ2ljYWxXaWR0aFZhbHVlID0gY29tcHV0ZUNvbnRlbnRCb3hMb2dpY2FsV2lk
dGgobG9naWNhbFdpZHRoLmNhbGNWYWx1ZShjb250YWluZXJMb2dpY2FsV2lkdGgpKTsKKyAgICAg
ICAgICAgIGxvZ2ljYWxMZWZ0VmFsdWUgPSB2YWx1ZUZvckxlbmd0aChsb2dpY2FsTGVmdCwgY29u
dGFpbmVyTG9naWNhbFdpZHRoKTsKKyAgICAgICAgICAgIGxvZ2ljYWxXaWR0aFZhbHVlID0gY29t
cHV0ZUNvbnRlbnRCb3hMb2dpY2FsV2lkdGgodmFsdWVGb3JMZW5ndGgobG9naWNhbFdpZHRoLCBj
b250YWluZXJMb2dpY2FsV2lkdGgpKTsKICAgICAgICAgfQogICAgIH0KIApAQCAtMzA5MiwxMCAr
MzA5MiwxMCBAQCB2b2lkIFJlbmRlckJveDo6Y29tcHV0ZVBvc2l0aW9uZWRMb2dpY2FsCiAgICAg
ICAgIC8vIE5PVEU6ICBJdCBpcyBub3QgbmVjZXNzYXJ5IHRvIHNvbHZlIGZvciAnYm90dG9tJyBp
biB0aGUgb3ZlciBjb25zdHJhaW5lZAogICAgICAgICAvLyBjYXNlIGJlY2F1c2UgdGhlIHZhbHVl
IGlzIG5vdCB1c2VkIGZvciBhbnkgZnVydGhlciBjYWxjdWxhdGlvbnMuCiAKLSAgICAgICAgbG9n
aWNhbEhlaWdodFZhbHVlID0gY29tcHV0ZUNvbnRlbnRCb3hMb2dpY2FsSGVpZ2h0KGxvZ2ljYWxI
ZWlnaHRMZW5ndGguY2FsY1ZhbHVlKGNvbnRhaW5lckxvZ2ljYWxIZWlnaHQpKTsKLSAgICAgICAg
bG9naWNhbFRvcFZhbHVlID0gbG9naWNhbFRvcC5jYWxjVmFsdWUoY29udGFpbmVyTG9naWNhbEhl
aWdodCk7CisgICAgICAgIGxvZ2ljYWxIZWlnaHRWYWx1ZSA9IGNvbXB1dGVDb250ZW50Qm94TG9n
aWNhbEhlaWdodCh2YWx1ZUZvckxlbmd0aChsb2dpY2FsSGVpZ2h0TGVuZ3RoLCBjb250YWluZXJM
b2dpY2FsSGVpZ2h0KSk7CisgICAgICAgIGxvZ2ljYWxUb3BWYWx1ZSA9IHZhbHVlRm9yTGVuZ3Ro
KGxvZ2ljYWxUb3AsIGNvbnRhaW5lckxvZ2ljYWxIZWlnaHQpOwogCi0gICAgICAgIGNvbnN0IExh
eW91dFVuaXQgYXZhaWxhYmxlU3BhY2UgPSBjb250YWluZXJMb2dpY2FsSGVpZ2h0IC0gKGxvZ2lj
YWxUb3BWYWx1ZSArIGxvZ2ljYWxIZWlnaHRWYWx1ZSArIGxvZ2ljYWxCb3R0b20uY2FsY1ZhbHVl
KGNvbnRhaW5lckxvZ2ljYWxIZWlnaHQpICsgYm9yZGVyc1BsdXNQYWRkaW5nKTsKKyAgICAgICAg
Y29uc3QgTGF5b3V0VW5pdCBhdmFpbGFibGVTcGFjZSA9IGNvbnRhaW5lckxvZ2ljYWxIZWlnaHQg
LSAobG9naWNhbFRvcFZhbHVlICsgbG9naWNhbEhlaWdodFZhbHVlICsgdmFsdWVGb3JMZW5ndGgo
bG9naWNhbEJvdHRvbSwgY29udGFpbmVyTG9naWNhbEhlaWdodCkgKyBib3JkZXJzUGx1c1BhZGRp
bmcpOwogCiAgICAgICAgIC8vIE1hcmdpbnMgYXJlIG5vdyB0aGUgb25seSB1bmtub3duCiAgICAg
ICAgIGlmIChtYXJnaW5CZWZvcmUuaXNBdXRvKCkgJiYgbWFyZ2luQWZ0ZXIuaXNBdXRvKCkpIHsK
QEAgLTMxMDUsMTYgKzMxMDUsMTYgQEAgdm9pZCBSZW5kZXJCb3g6OmNvbXB1dGVQb3NpdGlvbmVk
TG9naWNhbAogICAgICAgICAgICAgbWFyZ2luQWZ0ZXJWYWx1ZSA9IGF2YWlsYWJsZVNwYWNlIC0g
bWFyZ2luQmVmb3JlVmFsdWU7IC8vIGFjY291bnQgZm9yIG9kZCB2YWx1ZWQgZGlmZmVyZW5jZXMK
ICAgICAgICAgfSBlbHNlIGlmIChtYXJnaW5CZWZvcmUuaXNBdXRvKCkpIHsKICAgICAgICAgICAg
IC8vIFNvbHZlIGZvciB0b3AgbWFyZ2luCi0gICAgICAgICAgICBtYXJnaW5BZnRlclZhbHVlID0g
bWFyZ2luQWZ0ZXIuY2FsY1ZhbHVlKGNvbnRhaW5lckxvZ2ljYWxIZWlnaHQpOworICAgICAgICAg
ICAgbWFyZ2luQWZ0ZXJWYWx1ZSA9IHZhbHVlRm9yTGVuZ3RoKG1hcmdpbkFmdGVyLCBjb250YWlu
ZXJMb2dpY2FsSGVpZ2h0KTsKICAgICAgICAgICAgIG1hcmdpbkJlZm9yZVZhbHVlID0gYXZhaWxh
YmxlU3BhY2UgLSBtYXJnaW5BZnRlclZhbHVlOwogICAgICAgICB9IGVsc2UgaWYgKG1hcmdpbkFm
dGVyLmlzQXV0bygpKSB7CiAgICAgICAgICAgICAvLyBTb2x2ZSBmb3IgYm90dG9tIG1hcmdpbgot
ICAgICAgICAgICAgbWFyZ2luQmVmb3JlVmFsdWUgPSBtYXJnaW5CZWZvcmUuY2FsY1ZhbHVlKGNv
bnRhaW5lckxvZ2ljYWxIZWlnaHQpOworICAgICAgICAgICAgbWFyZ2luQmVmb3JlVmFsdWUgPSB2
YWx1ZUZvckxlbmd0aChtYXJnaW5CZWZvcmUsIGNvbnRhaW5lckxvZ2ljYWxIZWlnaHQpOwogICAg
ICAgICAgICAgbWFyZ2luQWZ0ZXJWYWx1ZSA9IGF2YWlsYWJsZVNwYWNlIC0gbWFyZ2luQmVmb3Jl
VmFsdWU7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAvLyBPdmVyLWNvbnN0cmFpbmVk
LCAobm8gbmVlZCBzb2x2ZSBmb3IgYm90dG9tKQotICAgICAgICAgICAgbWFyZ2luQmVmb3JlVmFs
dWUgPSBtYXJnaW5CZWZvcmUuY2FsY1ZhbHVlKGNvbnRhaW5lckxvZ2ljYWxIZWlnaHQpOwotICAg
ICAgICAgICAgbWFyZ2luQWZ0ZXJWYWx1ZSA9IG1hcmdpbkFmdGVyLmNhbGNWYWx1ZShjb250YWlu
ZXJMb2dpY2FsSGVpZ2h0KTsKKyAgICAgICAgICAgIG1hcmdpbkJlZm9yZVZhbHVlID0gdmFsdWVG
b3JMZW5ndGgobWFyZ2luQmVmb3JlLCBjb250YWluZXJMb2dpY2FsSGVpZ2h0KTsKKyAgICAgICAg
ICAgIG1hcmdpbkFmdGVyVmFsdWUgPSB2YWx1ZUZvckxlbmd0aChtYXJnaW5BZnRlciwgY29udGFp
bmVyTG9naWNhbEhlaWdodCk7CiAgICAgICAgIH0KICAgICB9IGVsc2UgewogICAgICAgICAvKi0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tKlwKQEAgLTMxNDMsOCArMzE0Myw4IEBAIHZvaWQgUmVuZGVyQm94Ojpjb21wdXRl
UG9zaXRpb25lZExvZ2ljYWwKICAgICAgICAgLy8gYmVjYXVzZSB0aGUgdmFsdWUgaXMgbm90IHVz
ZWQgZm9yIGFueSBmdXJ0aGVyIGNhbGN1bGF0aW9ucy4KIAogICAgICAgICAvLyBDYWxjdWxhdGUg
bWFyZ2lucywgJ2F1dG8nIG1hcmdpbnMgYXJlIGlnbm9yZWQuCi0gICAgICAgIG1hcmdpbkJlZm9y
ZVZhbHVlID0gbWFyZ2luQmVmb3JlLmNhbGNNaW5WYWx1ZShjb250YWluZXJMb2dpY2FsSGVpZ2h0
KTsKLSAgICAgICAgbWFyZ2luQWZ0ZXJWYWx1ZSA9IG1hcmdpbkFmdGVyLmNhbGNNaW5WYWx1ZShj
b250YWluZXJMb2dpY2FsSGVpZ2h0KTsKKyAgICAgICAgbWFyZ2luQmVmb3JlVmFsdWUgPSBtaW1p
bnVtVmFsdWVGb3JMZW5ndGgobWFyZ2luQmVmb3JlLCBjb250YWluZXJMb2dpY2FsSGVpZ2h0KTsK
KyAgICAgICAgbWFyZ2luQWZ0ZXJWYWx1ZSA9IG1pbWludW1WYWx1ZUZvckxlbmd0aChtYXJnaW5B
ZnRlciwgY29udGFpbmVyTG9naWNhbEhlaWdodCk7CiAKICAgICAgICAgY29uc3QgTGF5b3V0VW5p
dCBhdmFpbGFibGVTcGFjZSA9IGNvbnRhaW5lckxvZ2ljYWxIZWlnaHQgLSAobWFyZ2luQmVmb3Jl
VmFsdWUgKyBtYXJnaW5BZnRlclZhbHVlICsgYm9yZGVyc1BsdXNQYWRkaW5nKTsKIApAQCAtMzE1
MiwyMyArMzE1MiwyMyBAQCB2b2lkIFJlbmRlckJveDo6Y29tcHV0ZVBvc2l0aW9uZWRMb2dpY2Fs
CiAgICAgICAgIGlmIChsb2dpY2FsVG9wSXNBdXRvICYmIGxvZ2ljYWxIZWlnaHRJc0F1dG8gJiYg
IWxvZ2ljYWxCb3R0b21Jc0F1dG8pIHsKICAgICAgICAgICAgIC8vIFJVTEUgMTogKGhlaWdodCBp
cyBjb250ZW50IGJhc2VkLCBzb2x2ZSBvZiB0b3ApCiAgICAgICAgICAgICBsb2dpY2FsSGVpZ2h0
VmFsdWUgPSBjb250ZW50TG9naWNhbEhlaWdodDsKLSAgICAgICAgICAgIGxvZ2ljYWxUb3BWYWx1
ZSA9IGF2YWlsYWJsZVNwYWNlIC0gKGxvZ2ljYWxIZWlnaHRWYWx1ZSArIGxvZ2ljYWxCb3R0b20u
Y2FsY1ZhbHVlKGNvbnRhaW5lckxvZ2ljYWxIZWlnaHQpKTsKKyAgICAgICAgICAgIGxvZ2ljYWxU
b3BWYWx1ZSA9IGF2YWlsYWJsZVNwYWNlIC0gKGxvZ2ljYWxIZWlnaHRWYWx1ZSArIHZhbHVlRm9y
TGVuZ3RoKGxvZ2ljYWxCb3R0b20sIGNvbnRhaW5lckxvZ2ljYWxIZWlnaHQpKTsKICAgICAgICAg
fSBlbHNlIGlmICghbG9naWNhbFRvcElzQXV0byAmJiBsb2dpY2FsSGVpZ2h0SXNBdXRvICYmIGxv
Z2ljYWxCb3R0b21Jc0F1dG8pIHsKICAgICAgICAgICAgIC8vIFJVTEUgMzogKGhlaWdodCBpcyBj
b250ZW50IGJhc2VkLCBubyBuZWVkIHNvbHZlIG9mIGJvdHRvbSkKLSAgICAgICAgICAgIGxvZ2lj
YWxUb3BWYWx1ZSA9IGxvZ2ljYWxUb3AuY2FsY1ZhbHVlKGNvbnRhaW5lckxvZ2ljYWxIZWlnaHQp
OworICAgICAgICAgICAgbG9naWNhbFRvcFZhbHVlID0gdmFsdWVGb3JMZW5ndGgobG9naWNhbFRv
cCwgY29udGFpbmVyTG9naWNhbEhlaWdodCk7CiAgICAgICAgICAgICBsb2dpY2FsSGVpZ2h0VmFs
dWUgPSBjb250ZW50TG9naWNhbEhlaWdodDsKICAgICAgICAgfSBlbHNlIGlmIChsb2dpY2FsVG9w
SXNBdXRvICYmICFsb2dpY2FsSGVpZ2h0SXNBdXRvICYmICFsb2dpY2FsQm90dG9tSXNBdXRvKSB7
CiAgICAgICAgICAgICAvLyBSVUxFIDQ6IChzb2x2ZSBvZiB0b3ApCi0gICAgICAgICAgICBsb2dp
Y2FsSGVpZ2h0VmFsdWUgPSBjb21wdXRlQ29udGVudEJveExvZ2ljYWxIZWlnaHQobG9naWNhbEhl
aWdodExlbmd0aC5jYWxjVmFsdWUoY29udGFpbmVyTG9naWNhbEhlaWdodCkpOwotICAgICAgICAg
ICAgbG9naWNhbFRvcFZhbHVlID0gYXZhaWxhYmxlU3BhY2UgLSAobG9naWNhbEhlaWdodFZhbHVl
ICsgbG9naWNhbEJvdHRvbS5jYWxjVmFsdWUoY29udGFpbmVyTG9naWNhbEhlaWdodCkpOworICAg
ICAgICAgICAgbG9naWNhbEhlaWdodFZhbHVlID0gY29tcHV0ZUNvbnRlbnRCb3hMb2dpY2FsSGVp
Z2h0KHZhbHVlRm9yTGVuZ3RoKGxvZ2ljYWxIZWlnaHRMZW5ndGgsIGNvbnRhaW5lckxvZ2ljYWxI
ZWlnaHQpKTsKKyAgICAgICAgICAgIGxvZ2ljYWxUb3BWYWx1ZSA9IGF2YWlsYWJsZVNwYWNlIC0g
KGxvZ2ljYWxIZWlnaHRWYWx1ZSArIHZhbHVlRm9yTGVuZ3RoKGxvZ2ljYWxCb3R0b20sIGNvbnRh
aW5lckxvZ2ljYWxIZWlnaHQpKTsKICAgICAgICAgfSBlbHNlIGlmICghbG9naWNhbFRvcElzQXV0
byAmJiBsb2dpY2FsSGVpZ2h0SXNBdXRvICYmICFsb2dpY2FsQm90dG9tSXNBdXRvKSB7CiAgICAg
ICAgICAgICAvLyBSVUxFIDU6IChzb2x2ZSBvZiBoZWlnaHQpCi0gICAgICAgICAgICBsb2dpY2Fs
VG9wVmFsdWUgPSBsb2dpY2FsVG9wLmNhbGNWYWx1ZShjb250YWluZXJMb2dpY2FsSGVpZ2h0KTsK
LSAgICAgICAgICAgIGxvZ2ljYWxIZWlnaHRWYWx1ZSA9IG1heDxMYXlvdXRVbml0PigwLCBhdmFp
bGFibGVTcGFjZSAtIChsb2dpY2FsVG9wVmFsdWUgKyBsb2dpY2FsQm90dG9tLmNhbGNWYWx1ZShj
b250YWluZXJMb2dpY2FsSGVpZ2h0KSkpOworICAgICAgICAgICAgbG9naWNhbFRvcFZhbHVlID0g
dmFsdWVGb3JMZW5ndGgobG9naWNhbFRvcCwgY29udGFpbmVyTG9naWNhbEhlaWdodCk7CisgICAg
ICAgICAgICBsb2dpY2FsSGVpZ2h0VmFsdWUgPSBtYXg8TGF5b3V0VW5pdD4oMCwgYXZhaWxhYmxl
U3BhY2UgLSAobG9naWNhbFRvcFZhbHVlICsgdmFsdWVGb3JMZW5ndGgobG9naWNhbEJvdHRvbSwg
Y29udGFpbmVyTG9naWNhbEhlaWdodCkpKTsKICAgICAgICAgfSBlbHNlIGlmICghbG9naWNhbFRv
cElzQXV0byAmJiAhbG9naWNhbEhlaWdodElzQXV0byAmJiBsb2dpY2FsQm90dG9tSXNBdXRvKSB7
CiAgICAgICAgICAgICAvLyBSVUxFIDY6IChubyBuZWVkIHNvbHZlIG9mIGJvdHRvbSkKLSAgICAg
ICAgICAgIGxvZ2ljYWxIZWlnaHRWYWx1ZSA9IGNvbXB1dGVDb250ZW50Qm94TG9naWNhbEhlaWdo
dChsb2dpY2FsSGVpZ2h0TGVuZ3RoLmNhbGNWYWx1ZShjb250YWluZXJMb2dpY2FsSGVpZ2h0KSk7
Ci0gICAgICAgICAgICBsb2dpY2FsVG9wVmFsdWUgPSBsb2dpY2FsVG9wLmNhbGNWYWx1ZShjb250
YWluZXJMb2dpY2FsSGVpZ2h0KTsKKyAgICAgICAgICAgIGxvZ2ljYWxIZWlnaHRWYWx1ZSA9IGNv
bXB1dGVDb250ZW50Qm94TG9naWNhbEhlaWdodCh2YWx1ZUZvckxlbmd0aChsb2dpY2FsSGVpZ2h0
TGVuZ3RoLCBjb250YWluZXJMb2dpY2FsSGVpZ2h0KSk7CisgICAgICAgICAgICBsb2dpY2FsVG9w
VmFsdWUgPSB2YWx1ZUZvckxlbmd0aChsb2dpY2FsVG9wLCBjb250YWluZXJMb2dpY2FsSGVpZ2h0
KTsKICAgICAgICAgfQogICAgIH0KIApAQCAtMzI0OSw4ICszMjQ5LDggQEAgdm9pZCBSZW5kZXJC
b3g6OmNvbXB1dGVQb3NpdGlvbmVkTG9naWNhbAogICAgICAgICAvLyAnbGVmdCcgYW5kICdyaWdo
dCcgY2Fubm90IGJlICdhdXRvJyBkdWUgdG8gc3RlcCAzCiAgICAgICAgIEFTU0VSVCghKGxvZ2lj
YWxMZWZ0LmlzQXV0bygpICYmIGxvZ2ljYWxSaWdodC5pc0F1dG8oKSkpOwogCi0gICAgICAgIGxv
Z2ljYWxMZWZ0VmFsdWUgPSBsb2dpY2FsTGVmdC5jYWxjVmFsdWUoY29udGFpbmVyTG9naWNhbFdp
ZHRoKTsKLSAgICAgICAgbG9naWNhbFJpZ2h0VmFsdWUgPSBsb2dpY2FsUmlnaHQuY2FsY1ZhbHVl
KGNvbnRhaW5lckxvZ2ljYWxXaWR0aCk7CisgICAgICAgIGxvZ2ljYWxMZWZ0VmFsdWUgPSB2YWx1
ZUZvckxlbmd0aChsb2dpY2FsTGVmdCwgY29udGFpbmVyTG9naWNhbFdpZHRoKTsKKyAgICAgICAg
bG9naWNhbFJpZ2h0VmFsdWUgPSB2YWx1ZUZvckxlbmd0aChsb2dpY2FsUmlnaHQsIGNvbnRhaW5l
ckxvZ2ljYWxXaWR0aCk7CiAKICAgICAgICAgTGF5b3V0VW5pdCBkaWZmZXJlbmNlID0gYXZhaWxh
YmxlU3BhY2UgLSAobG9naWNhbExlZnRWYWx1ZSArIGxvZ2ljYWxSaWdodFZhbHVlKTsKICAgICAg
ICAgaWYgKGRpZmZlcmVuY2UgPiAwKSB7CkBAIC0zMjczLDM5ICszMjczLDM5IEBAIHZvaWQgUmVu
ZGVyQm94Ojpjb21wdXRlUG9zaXRpb25lZExvZ2ljYWwKICAgICAgKiAgICB0aGF0IHZhbHVlLgog
ICAgIFwqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogICAgIH0gZWxzZSBpZiAobG9naWNhbExlZnQuaXNBdXRv
KCkpIHsKLSAgICAgICAgbWFyZ2luTG9naWNhbExlZnRBbGlhcyA9IG1hcmdpbkxvZ2ljYWxMZWZ0
LmNhbGNWYWx1ZShjb250YWluZXJMb2dpY2FsV2lkdGgpOwotICAgICAgICBtYXJnaW5Mb2dpY2Fs
UmlnaHRBbGlhcyA9IG1hcmdpbkxvZ2ljYWxSaWdodC5jYWxjVmFsdWUoY29udGFpbmVyTG9naWNh
bFdpZHRoKTsKLSAgICAgICAgbG9naWNhbFJpZ2h0VmFsdWUgPSBsb2dpY2FsUmlnaHQuY2FsY1Zh
bHVlKGNvbnRhaW5lckxvZ2ljYWxXaWR0aCk7CisgICAgICAgIG1hcmdpbkxvZ2ljYWxMZWZ0QWxp
YXMgPSB2YWx1ZUZvckxlbmd0aChtYXJnaW5Mb2dpY2FsTGVmdCwgY29udGFpbmVyTG9naWNhbFdp
ZHRoKTsKKyAgICAgICAgbWFyZ2luTG9naWNhbFJpZ2h0QWxpYXMgPSB2YWx1ZUZvckxlbmd0aCht
YXJnaW5Mb2dpY2FsUmlnaHQsIGNvbnRhaW5lckxvZ2ljYWxXaWR0aCk7CisgICAgICAgIGxvZ2lj
YWxSaWdodFZhbHVlID0gdmFsdWVGb3JMZW5ndGgobG9naWNhbFJpZ2h0LCBjb250YWluZXJMb2dp
Y2FsV2lkdGgpOwogCiAgICAgICAgIC8vIFNvbHZlIGZvciAnbGVmdCcKICAgICAgICAgbG9naWNh
bExlZnRWYWx1ZSA9IGF2YWlsYWJsZVNwYWNlIC0gKGxvZ2ljYWxSaWdodFZhbHVlICsgbWFyZ2lu
TG9naWNhbExlZnRBbGlhcyArIG1hcmdpbkxvZ2ljYWxSaWdodEFsaWFzKTsKICAgICB9IGVsc2Ug
aWYgKGxvZ2ljYWxSaWdodC5pc0F1dG8oKSkgewotICAgICAgICBtYXJnaW5Mb2dpY2FsTGVmdEFs
aWFzID0gbWFyZ2luTG9naWNhbExlZnQuY2FsY1ZhbHVlKGNvbnRhaW5lckxvZ2ljYWxXaWR0aCk7
Ci0gICAgICAgIG1hcmdpbkxvZ2ljYWxSaWdodEFsaWFzID0gbWFyZ2luTG9naWNhbFJpZ2h0LmNh
bGNWYWx1ZShjb250YWluZXJMb2dpY2FsV2lkdGgpOwotICAgICAgICBsb2dpY2FsTGVmdFZhbHVl
ID0gbG9naWNhbExlZnQuY2FsY1ZhbHVlKGNvbnRhaW5lckxvZ2ljYWxXaWR0aCk7CisgICAgICAg
IG1hcmdpbkxvZ2ljYWxMZWZ0QWxpYXMgPSB2YWx1ZUZvckxlbmd0aChtYXJnaW5Mb2dpY2FsTGVm
dCwgY29udGFpbmVyTG9naWNhbFdpZHRoKTsKKyAgICAgICAgbWFyZ2luTG9naWNhbFJpZ2h0QWxp
YXMgPSB2YWx1ZUZvckxlbmd0aChtYXJnaW5Mb2dpY2FsUmlnaHQsIGNvbnRhaW5lckxvZ2ljYWxX
aWR0aCk7CisgICAgICAgIGxvZ2ljYWxMZWZ0VmFsdWUgPSB2YWx1ZUZvckxlbmd0aChsb2dpY2Fs
TGVmdCwgY29udGFpbmVyTG9naWNhbFdpZHRoKTsKIAogICAgICAgICAvLyBTb2x2ZSBmb3IgJ3Jp
Z2h0JwogICAgICAgICBsb2dpY2FsUmlnaHRWYWx1ZSA9IGF2YWlsYWJsZVNwYWNlIC0gKGxvZ2lj
YWxMZWZ0VmFsdWUgKyBtYXJnaW5Mb2dpY2FsTGVmdEFsaWFzICsgbWFyZ2luTG9naWNhbFJpZ2h0
QWxpYXMpOwogICAgIH0gZWxzZSBpZiAobWFyZ2luTG9naWNhbExlZnQuaXNBdXRvKCkpIHsKLSAg
ICAgICAgbWFyZ2luTG9naWNhbFJpZ2h0QWxpYXMgPSBtYXJnaW5Mb2dpY2FsUmlnaHQuY2FsY1Zh
bHVlKGNvbnRhaW5lckxvZ2ljYWxXaWR0aCk7Ci0gICAgICAgIGxvZ2ljYWxMZWZ0VmFsdWUgPSBs
b2dpY2FsTGVmdC5jYWxjVmFsdWUoY29udGFpbmVyTG9naWNhbFdpZHRoKTsKLSAgICAgICAgbG9n
aWNhbFJpZ2h0VmFsdWUgPSBsb2dpY2FsUmlnaHQuY2FsY1ZhbHVlKGNvbnRhaW5lckxvZ2ljYWxX
aWR0aCk7CisgICAgICAgIG1hcmdpbkxvZ2ljYWxSaWdodEFsaWFzID0gdmFsdWVGb3JMZW5ndGgo
bWFyZ2luTG9naWNhbFJpZ2h0LCBjb250YWluZXJMb2dpY2FsV2lkdGgpOworICAgICAgICBsb2dp
Y2FsTGVmdFZhbHVlID0gdmFsdWVGb3JMZW5ndGgobG9naWNhbExlZnQsIGNvbnRhaW5lckxvZ2lj
YWxXaWR0aCk7CisgICAgICAgIGxvZ2ljYWxSaWdodFZhbHVlID0gdmFsdWVGb3JMZW5ndGgobG9n
aWNhbFJpZ2h0LCBjb250YWluZXJMb2dpY2FsV2lkdGgpOwogCiAgICAgICAgIC8vIFNvbHZlIGZv
ciAnbWFyZ2luLWxlZnQnCiAgICAgICAgIG1hcmdpbkxvZ2ljYWxMZWZ0QWxpYXMgPSBhdmFpbGFi
bGVTcGFjZSAtIChsb2dpY2FsTGVmdFZhbHVlICsgbG9naWNhbFJpZ2h0VmFsdWUgKyBtYXJnaW5M
b2dpY2FsUmlnaHRBbGlhcyk7CiAgICAgfSBlbHNlIGlmIChtYXJnaW5Mb2dpY2FsUmlnaHQuaXNB
dXRvKCkpIHsKLSAgICAgICAgbWFyZ2luTG9naWNhbExlZnRBbGlhcyA9IG1hcmdpbkxvZ2ljYWxM
ZWZ0LmNhbGNWYWx1ZShjb250YWluZXJMb2dpY2FsV2lkdGgpOwotICAgICAgICBsb2dpY2FsTGVm
dFZhbHVlID0gbG9naWNhbExlZnQuY2FsY1ZhbHVlKGNvbnRhaW5lckxvZ2ljYWxXaWR0aCk7Ci0g
ICAgICAgIGxvZ2ljYWxSaWdodFZhbHVlID0gbG9naWNhbFJpZ2h0LmNhbGNWYWx1ZShjb250YWlu
ZXJMb2dpY2FsV2lkdGgpOworICAgICAgICBtYXJnaW5Mb2dpY2FsTGVmdEFsaWFzID0gdmFsdWVG
b3JMZW5ndGgobWFyZ2luTG9naWNhbExlZnQsIGNvbnRhaW5lckxvZ2ljYWxXaWR0aCk7CisgICAg
ICAgIGxvZ2ljYWxMZWZ0VmFsdWUgPSB2YWx1ZUZvckxlbmd0aChsb2dpY2FsTGVmdCwgY29udGFp
bmVyTG9naWNhbFdpZHRoKTsKKyAgICAgICAgbG9naWNhbFJpZ2h0VmFsdWUgPSB2YWx1ZUZvckxl
bmd0aChsb2dpY2FsUmlnaHQsIGNvbnRhaW5lckxvZ2ljYWxXaWR0aCk7CiAKICAgICAgICAgLy8g
U29sdmUgZm9yICdtYXJnaW4tcmlnaHQnCiAgICAgICAgIG1hcmdpbkxvZ2ljYWxSaWdodEFsaWFz
ID0gYXZhaWxhYmxlU3BhY2UgLSAobG9naWNhbExlZnRWYWx1ZSArIGxvZ2ljYWxSaWdodFZhbHVl
ICsgbWFyZ2luTG9naWNhbExlZnRBbGlhcyk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgLy8gTm90
aGluZyBpcyAnYXV0bycsIGp1c3QgY2FsY3VsYXRlIHRoZSB2YWx1ZXMuCi0gICAgICAgIG1hcmdp
bkxvZ2ljYWxMZWZ0QWxpYXMgPSBtYXJnaW5Mb2dpY2FsTGVmdC5jYWxjVmFsdWUoY29udGFpbmVy
TG9naWNhbFdpZHRoKTsKLSAgICAgICAgbWFyZ2luTG9naWNhbFJpZ2h0QWxpYXMgPSBtYXJnaW5M
b2dpY2FsUmlnaHQuY2FsY1ZhbHVlKGNvbnRhaW5lckxvZ2ljYWxXaWR0aCk7Ci0gICAgICAgIGxv
Z2ljYWxSaWdodFZhbHVlID0gbG9naWNhbFJpZ2h0LmNhbGNWYWx1ZShjb250YWluZXJMb2dpY2Fs
V2lkdGgpOwotICAgICAgICBsb2dpY2FsTGVmdFZhbHVlID0gbG9naWNhbExlZnQuY2FsY1ZhbHVl
KGNvbnRhaW5lckxvZ2ljYWxXaWR0aCk7CisgICAgICAgIG1hcmdpbkxvZ2ljYWxMZWZ0QWxpYXMg
PSB2YWx1ZUZvckxlbmd0aChtYXJnaW5Mb2dpY2FsTGVmdCwgY29udGFpbmVyTG9naWNhbFdpZHRo
KTsKKyAgICAgICAgbWFyZ2luTG9naWNhbFJpZ2h0QWxpYXMgPSB2YWx1ZUZvckxlbmd0aChtYXJn
aW5Mb2dpY2FsUmlnaHQsIGNvbnRhaW5lckxvZ2ljYWxXaWR0aCk7CisgICAgICAgIGxvZ2ljYWxS
aWdodFZhbHVlID0gdmFsdWVGb3JMZW5ndGgobG9naWNhbFJpZ2h0LCBjb250YWluZXJMb2dpY2Fs
V2lkdGgpOworICAgICAgICBsb2dpY2FsTGVmdFZhbHVlID0gdmFsdWVGb3JMZW5ndGgobG9naWNh
bExlZnQsIGNvbnRhaW5lckxvZ2ljYWxXaWR0aCk7CiAgICAgICAgIC8vIElmIHRoZSBjb250YWlu
aW5nIGJsb2NrIGlzIHJpZ2h0LXRvLWxlZnQsIHRoZW4gcHVzaCB0aGUgbGVmdCBwb3NpdGlvbiBh
cyBmYXIgdG8gdGhlIHJpZ2h0IGFzIHBvc3NpYmxlCiAgICAgICAgIGlmIChjb250YWluZXJEaXJl
Y3Rpb24gPT0gUlRMKSB7CiAgICAgICAgICAgICBpbnQgdG90YWxMb2dpY2FsV2lkdGggPSBsb2dp
Y2FsV2lkdGgoKSArIGxvZ2ljYWxMZWZ0VmFsdWUgKyBsb2dpY2FsUmlnaHRWYWx1ZSArICBtYXJn
aW5Mb2dpY2FsTGVmdEFsaWFzICsgbWFyZ2luTG9naWNhbFJpZ2h0QWxpYXM7CkBAIC0zNDExLDgg
KzM0MTEsOCBAQCB2b2lkIFJlbmRlckJveDo6Y29tcHV0ZVBvc2l0aW9uZWRMb2dpY2FsCiAgICAg
ICAgIC8vICd0b3AnIGFuZCAnYm90dG9tJyBjYW5ub3QgYmUgJ2F1dG8nIGR1ZSB0byBzdGVwIDIg
YW5kIDMgY29tYmluZWQuCiAgICAgICAgIEFTU0VSVCghKGxvZ2ljYWxUb3AuaXNBdXRvKCkgfHwg
bG9naWNhbEJvdHRvbS5pc0F1dG8oKSkpOwogCi0gICAgICAgIGxvZ2ljYWxUb3BWYWx1ZSA9IGxv
Z2ljYWxUb3AuY2FsY1ZhbHVlKGNvbnRhaW5lckxvZ2ljYWxIZWlnaHQpOwotICAgICAgICBsb2dp
Y2FsQm90dG9tVmFsdWUgPSBsb2dpY2FsQm90dG9tLmNhbGNWYWx1ZShjb250YWluZXJMb2dpY2Fs
SGVpZ2h0KTsKKyAgICAgICAgbG9naWNhbFRvcFZhbHVlID0gdmFsdWVGb3JMZW5ndGgobG9naWNh
bFRvcCwgY29udGFpbmVyTG9naWNhbEhlaWdodCk7CisgICAgICAgIGxvZ2ljYWxCb3R0b21WYWx1
ZSA9IHZhbHVlRm9yTGVuZ3RoKGxvZ2ljYWxCb3R0b20sIGNvbnRhaW5lckxvZ2ljYWxIZWlnaHQp
OwogCiAgICAgICAgIExheW91dFVuaXQgZGlmZmVyZW5jZSA9IGF2YWlsYWJsZVNwYWNlIC0gKGxv
Z2ljYWxUb3BWYWx1ZSArIGxvZ2ljYWxCb3R0b21WYWx1ZSk7CiAgICAgICAgIC8vIE5PVEU6IFRo
aXMgbWF5IHJlc3VsdCBpbiBuZWdhdGl2ZSB2YWx1ZXMuCkBAIC0zNDI0LDM5ICszNDI0LDM5IEBA
IHZvaWQgUmVuZGVyQm94Ojpjb21wdXRlUG9zaXRpb25lZExvZ2ljYWwKICAgICAgKiAgICBmb3Ig
dGhhdCB2YWx1ZS4KICAgICBcKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KICAgICB9IGVsc2UgaWYgKGxvZ2lj
YWxUb3AuaXNBdXRvKCkpIHsKLSAgICAgICAgbWFyZ2luQmVmb3JlQWxpYXMgPSBtYXJnaW5CZWZv
cmUuY2FsY1ZhbHVlKGNvbnRhaW5lckxvZ2ljYWxIZWlnaHQpOwotICAgICAgICBtYXJnaW5BZnRl
ckFsaWFzID0gbWFyZ2luQWZ0ZXIuY2FsY1ZhbHVlKGNvbnRhaW5lckxvZ2ljYWxIZWlnaHQpOwot
ICAgICAgICBsb2dpY2FsQm90dG9tVmFsdWUgPSBsb2dpY2FsQm90dG9tLmNhbGNWYWx1ZShjb250
YWluZXJMb2dpY2FsSGVpZ2h0KTsKKyAgICAgICAgbWFyZ2luQmVmb3JlQWxpYXMgPSB2YWx1ZUZv
ckxlbmd0aChtYXJnaW5CZWZvcmUsIGNvbnRhaW5lckxvZ2ljYWxIZWlnaHQpOworICAgICAgICBt
YXJnaW5BZnRlckFsaWFzID0gdmFsdWVGb3JMZW5ndGgobWFyZ2luQWZ0ZXIsIGNvbnRhaW5lckxv
Z2ljYWxIZWlnaHQpOworICAgICAgICBsb2dpY2FsQm90dG9tVmFsdWUgPSB2YWx1ZUZvckxlbmd0
aChsb2dpY2FsQm90dG9tLCBjb250YWluZXJMb2dpY2FsSGVpZ2h0KTsKIAogICAgICAgICAvLyBT
b2x2ZSBmb3IgJ3RvcCcKICAgICAgICAgbG9naWNhbFRvcFZhbHVlID0gYXZhaWxhYmxlU3BhY2Ug
LSAobG9naWNhbEJvdHRvbVZhbHVlICsgbWFyZ2luQmVmb3JlQWxpYXMgKyBtYXJnaW5BZnRlckFs
aWFzKTsKICAgICB9IGVsc2UgaWYgKGxvZ2ljYWxCb3R0b20uaXNBdXRvKCkpIHsKLSAgICAgICAg
bWFyZ2luQmVmb3JlQWxpYXMgPSBtYXJnaW5CZWZvcmUuY2FsY1ZhbHVlKGNvbnRhaW5lckxvZ2lj
YWxIZWlnaHQpOwotICAgICAgICBtYXJnaW5BZnRlckFsaWFzID0gbWFyZ2luQWZ0ZXIuY2FsY1Zh
bHVlKGNvbnRhaW5lckxvZ2ljYWxIZWlnaHQpOwotICAgICAgICBsb2dpY2FsVG9wVmFsdWUgPSBs
b2dpY2FsVG9wLmNhbGNWYWx1ZShjb250YWluZXJMb2dpY2FsSGVpZ2h0KTsKKyAgICAgICAgbWFy
Z2luQmVmb3JlQWxpYXMgPSB2YWx1ZUZvckxlbmd0aChtYXJnaW5CZWZvcmUsIGNvbnRhaW5lckxv
Z2ljYWxIZWlnaHQpOworICAgICAgICBtYXJnaW5BZnRlckFsaWFzID0gdmFsdWVGb3JMZW5ndGgo
bWFyZ2luQWZ0ZXIsIGNvbnRhaW5lckxvZ2ljYWxIZWlnaHQpOworICAgICAgICBsb2dpY2FsVG9w
VmFsdWUgPSB2YWx1ZUZvckxlbmd0aChsb2dpY2FsVG9wLCBjb250YWluZXJMb2dpY2FsSGVpZ2h0
KTsKIAogICAgICAgICAvLyBTb2x2ZSBmb3IgJ2JvdHRvbScKICAgICAgICAgLy8gTk9URTogSXQg
aXMgbm90IG5lY2Vzc2FyeSB0byBzb2x2ZSBmb3IgJ2JvdHRvbScgYmVjYXVzZSB3ZSBkb24ndCBl
dmVyCiAgICAgICAgIC8vIHVzZSB0aGUgdmFsdWUuCiAgICAgfSBlbHNlIGlmIChtYXJnaW5CZWZv
cmUuaXNBdXRvKCkpIHsKLSAgICAgICAgbWFyZ2luQWZ0ZXJBbGlhcyA9IG1hcmdpbkFmdGVyLmNh
bGNWYWx1ZShjb250YWluZXJMb2dpY2FsSGVpZ2h0KTsKLSAgICAgICAgbG9naWNhbFRvcFZhbHVl
ID0gbG9naWNhbFRvcC5jYWxjVmFsdWUoY29udGFpbmVyTG9naWNhbEhlaWdodCk7Ci0gICAgICAg
IGxvZ2ljYWxCb3R0b21WYWx1ZSA9IGxvZ2ljYWxCb3R0b20uY2FsY1ZhbHVlKGNvbnRhaW5lckxv
Z2ljYWxIZWlnaHQpOworICAgICAgICBtYXJnaW5BZnRlckFsaWFzID0gdmFsdWVGb3JMZW5ndGgo
bWFyZ2luQWZ0ZXIsIGNvbnRhaW5lckxvZ2ljYWxIZWlnaHQpOworICAgICAgICBsb2dpY2FsVG9w
VmFsdWUgPSB2YWx1ZUZvckxlbmd0aChsb2dpY2FsVG9wLCBjb250YWluZXJMb2dpY2FsSGVpZ2h0
KTsKKyAgICAgICAgbG9naWNhbEJvdHRvbVZhbHVlID0gdmFsdWVGb3JMZW5ndGgobG9naWNhbEJv
dHRvbSwgY29udGFpbmVyTG9naWNhbEhlaWdodCk7CiAKICAgICAgICAgLy8gU29sdmUgZm9yICdt
YXJnaW4tdG9wJwogICAgICAgICBtYXJnaW5CZWZvcmVBbGlhcyA9IGF2YWlsYWJsZVNwYWNlIC0g
KGxvZ2ljYWxUb3BWYWx1ZSArIGxvZ2ljYWxCb3R0b21WYWx1ZSArIG1hcmdpbkFmdGVyQWxpYXMp
OwogICAgIH0gZWxzZSBpZiAobWFyZ2luQWZ0ZXIuaXNBdXRvKCkpIHsKLSAgICAgICAgbWFyZ2lu
QmVmb3JlQWxpYXMgPSBtYXJnaW5CZWZvcmUuY2FsY1ZhbHVlKGNvbnRhaW5lckxvZ2ljYWxIZWln
aHQpOwotICAgICAgICBsb2dpY2FsVG9wVmFsdWUgPSBsb2dpY2FsVG9wLmNhbGNWYWx1ZShjb250
YWluZXJMb2dpY2FsSGVpZ2h0KTsKLSAgICAgICAgbG9naWNhbEJvdHRvbVZhbHVlID0gbG9naWNh
bEJvdHRvbS5jYWxjVmFsdWUoY29udGFpbmVyTG9naWNhbEhlaWdodCk7CisgICAgICAgIG1hcmdp
bkJlZm9yZUFsaWFzID0gdmFsdWVGb3JMZW5ndGgobWFyZ2luQmVmb3JlLCBjb250YWluZXJMb2dp
Y2FsSGVpZ2h0KTsKKyAgICAgICAgbG9naWNhbFRvcFZhbHVlID0gdmFsdWVGb3JMZW5ndGgobG9n
aWNhbFRvcCwgY29udGFpbmVyTG9naWNhbEhlaWdodCk7CisgICAgICAgIGxvZ2ljYWxCb3R0b21W
YWx1ZSA9IHZhbHVlRm9yTGVuZ3RoKGxvZ2ljYWxCb3R0b20sIGNvbnRhaW5lckxvZ2ljYWxIZWln
aHQpOwogCiAgICAgICAgIC8vIFNvbHZlIGZvciAnbWFyZ2luLWJvdHRvbScKICAgICAgICAgbWFy
Z2luQWZ0ZXJBbGlhcyA9IGF2YWlsYWJsZVNwYWNlIC0gKGxvZ2ljYWxUb3BWYWx1ZSArIGxvZ2lj
YWxCb3R0b21WYWx1ZSArIG1hcmdpbkJlZm9yZUFsaWFzKTsKICAgICB9IGVsc2UgewogICAgICAg
ICAvLyBOb3RoaW5nIGlzICdhdXRvJywganVzdCBjYWxjdWxhdGUgdGhlIHZhbHVlcy4KLSAgICAg
ICAgbWFyZ2luQmVmb3JlQWxpYXMgPSBtYXJnaW5CZWZvcmUuY2FsY1ZhbHVlKGNvbnRhaW5lckxv
Z2ljYWxIZWlnaHQpOwotICAgICAgICBtYXJnaW5BZnRlckFsaWFzID0gbWFyZ2luQWZ0ZXIuY2Fs
Y1ZhbHVlKGNvbnRhaW5lckxvZ2ljYWxIZWlnaHQpOwotICAgICAgICBsb2dpY2FsVG9wVmFsdWUg
PSBsb2dpY2FsVG9wLmNhbGNWYWx1ZShjb250YWluZXJMb2dpY2FsSGVpZ2h0KTsKKyAgICAgICAg
bWFyZ2luQmVmb3JlQWxpYXMgPSB2YWx1ZUZvckxlbmd0aChtYXJnaW5CZWZvcmUsIGNvbnRhaW5l
ckxvZ2ljYWxIZWlnaHQpOworICAgICAgICBtYXJnaW5BZnRlckFsaWFzID0gdmFsdWVGb3JMZW5n
dGgobWFyZ2luQWZ0ZXIsIGNvbnRhaW5lckxvZ2ljYWxIZWlnaHQpOworICAgICAgICBsb2dpY2Fs
VG9wVmFsdWUgPSB2YWx1ZUZvckxlbmd0aChsb2dpY2FsVG9wLCBjb250YWluZXJMb2dpY2FsSGVp
Z2h0KTsKICAgICAgICAgLy8gTk9URTogSXQgaXMgbm90IG5lY2Vzc2FyeSB0byBzb2x2ZSBmb3Ig
J2JvdHRvbScgYmVjYXVzZSB3ZSBkb24ndCBldmVyCiAgICAgICAgIC8vIHVzZSB0aGUgdmFsdWUu
CiAgICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9i
amVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJv
eE1vZGVsT2JqZWN0LmNwcAkocmV2aXNpb24gMTExMTIwKQorKysgU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDM3LDEy
ICs0MzcsMTIgQEAgTGF5b3V0VW5pdCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cmVsYXRpdgogICAg
IGlmICghc3R5bGUoKS0+bGVmdCgpLmlzQXV0bygpKSB7CiAgICAgICAgIFJlbmRlckJsb2NrKiBj
YiA9IGNvbnRhaW5pbmdCbG9jaygpOwogICAgICAgICBpZiAoIXN0eWxlKCktPnJpZ2h0KCkuaXNB
dXRvKCkgJiYgIWNiLT5zdHlsZSgpLT5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkpCi0gICAgICAg
ICAgICByZXR1cm4gLXN0eWxlKCktPnJpZ2h0KCkuY2FsY1ZhbHVlKGNiLT5hdmFpbGFibGVXaWR0
aCgpKTsKLSAgICAgICAgcmV0dXJuIG9mZnNldCArIHN0eWxlKCktPmxlZnQoKS5jYWxjVmFsdWUo
Y2ItPmF2YWlsYWJsZVdpZHRoKCkpOworICAgICAgICAgICAgcmV0dXJuIC12YWx1ZUZvckxlbmd0
aChzdHlsZSgpLT5yaWdodCgpLCBjYi0+YXZhaWxhYmxlV2lkdGgoKSk7CisgICAgICAgIHJldHVy
biBvZmZzZXQgKyB2YWx1ZUZvckxlbmd0aChzdHlsZSgpLT5sZWZ0KCksIGNiLT5hdmFpbGFibGVX
aWR0aCgpKTsKICAgICB9CiAgICAgaWYgKCFzdHlsZSgpLT5yaWdodCgpLmlzQXV0bygpKSB7CiAg
ICAgICAgIFJlbmRlckJsb2NrKiBjYiA9IGNvbnRhaW5pbmdCbG9jaygpOwotICAgICAgICByZXR1
cm4gb2Zmc2V0ICsgLXN0eWxlKCktPnJpZ2h0KCkuY2FsY1ZhbHVlKGNiLT5hdmFpbGFibGVXaWR0
aCgpKTsKKyAgICAgICAgcmV0dXJuIG9mZnNldCArIC12YWx1ZUZvckxlbmd0aChzdHlsZSgpLT5y
aWdodCgpLCBjYi0+YXZhaWxhYmxlV2lkdGgoKSk7CiAgICAgfQogICAgIHJldHVybiBvZmZzZXQ7
CiB9CkBAIC00NjIsMTMgKzQ2MiwxMyBAQCBMYXlvdXRVbml0IFJlbmRlckJveE1vZGVsT2JqZWN0
OjpyZWxhdGl2CiAgICAgICAgICYmICghY29udGFpbmluZ0Jsb2NrLT5zdHlsZSgpLT5oZWlnaHQo
KS5pc0F1dG8oKQogICAgICAgICAgICAgfHwgIXN0eWxlKCktPnRvcCgpLmlzUGVyY2VudCgpCiAg
ICAgICAgICAgICB8fCBjb250YWluaW5nQmxvY2stPnN0cmV0Y2hlc1RvVmlld3BvcnQoKSkpCi0g
ICAgICAgIHJldHVybiBvZmZzZXQgKyBzdHlsZSgpLT50b3AoKS5jYWxjVmFsdWUoY29udGFpbmlu
Z0Jsb2NrLT5hdmFpbGFibGVIZWlnaHQoKSk7CisgICAgICAgIHJldHVybiBvZmZzZXQgKyB2YWx1
ZUZvckxlbmd0aChzdHlsZSgpLT50b3AoKSwgY29udGFpbmluZ0Jsb2NrLT5hdmFpbGFibGVIZWln
aHQoKSk7CiAKICAgICBpZiAoIXN0eWxlKCktPmJvdHRvbSgpLmlzQXV0bygpCiAgICAgICAgICYm
ICghY29udGFpbmluZ0Jsb2NrLT5zdHlsZSgpLT5oZWlnaHQoKS5pc0F1dG8oKQogICAgICAgICAg
ICAgfHwgIXN0eWxlKCktPmJvdHRvbSgpLmlzUGVyY2VudCgpCiAgICAgICAgICAgICB8fCBjb250
YWluaW5nQmxvY2stPnN0cmV0Y2hlc1RvVmlld3BvcnQoKSkpCi0gICAgICAgIHJldHVybiBvZmZz
ZXQgKyAtc3R5bGUoKS0+Ym90dG9tKCkuY2FsY1ZhbHVlKGNvbnRhaW5pbmdCbG9jay0+YXZhaWxh
YmxlSGVpZ2h0KCkpOworICAgICAgICByZXR1cm4gb2Zmc2V0ICsgLXZhbHVlRm9yTGVuZ3RoKHN0
eWxlKCktPmJvdHRvbSgpLCBjb250YWluaW5nQmxvY2stPmF2YWlsYWJsZUhlaWdodCgpKTsKIAog
ICAgIHJldHVybiBvZmZzZXQ7CiB9CkBAIC01NTYsNyArNTU2LDcgQEAgTGF5b3V0VW5pdCBSZW5k
ZXJCb3hNb2RlbE9iamVjdDo6cGFkZGluZwogICAgIExlbmd0aCBwYWRkaW5nID0gc3R5bGUoKS0+
cGFkZGluZ1RvcCgpOwogICAgIGlmIChwYWRkaW5nLmlzUGVyY2VudCgpKQogICAgICAgICB3ID0g
Y29udGFpbmluZ0Jsb2NrKCktPmF2YWlsYWJsZUxvZ2ljYWxXaWR0aCgpOwotICAgIHJldHVybiBw
YWRkaW5nLmNhbGNNaW5WYWx1ZSh3KTsKKyAgICByZXR1cm4gbWltaW51bVZhbHVlRm9yTGVuZ3Ro
KHBhZGRpbmcsIHcpOwogfQogCiBMYXlvdXRVbml0IFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWRk
aW5nQm90dG9tKFBhZGRpbmdPcHRpb25zKSBjb25zdApAQCAtNTY1LDcgKzU2NSw3IEBAIExheW91
dFVuaXQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhZGRpbmcKICAgICBMZW5ndGggcGFkZGluZyA9
IHN0eWxlKCktPnBhZGRpbmdCb3R0b20oKTsKICAgICBpZiAocGFkZGluZy5pc1BlcmNlbnQoKSkK
ICAgICAgICAgdyA9IGNvbnRhaW5pbmdCbG9jaygpLT5hdmFpbGFibGVMb2dpY2FsV2lkdGgoKTsK
LSAgICByZXR1cm4gcGFkZGluZy5jYWxjTWluVmFsdWUodyk7CisgICAgcmV0dXJuIG1pbWludW1W
YWx1ZUZvckxlbmd0aChwYWRkaW5nLCB3KTsKIH0KIAogTGF5b3V0VW5pdCBSZW5kZXJCb3hNb2Rl
bE9iamVjdDo6cGFkZGluZ0xlZnQoUGFkZGluZ09wdGlvbnMpIGNvbnN0CkBAIC01NzQsNyArNTc0
LDcgQEAgTGF5b3V0VW5pdCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFkZGluZwogICAgIExlbmd0
aCBwYWRkaW5nID0gc3R5bGUoKS0+cGFkZGluZ0xlZnQoKTsKICAgICBpZiAocGFkZGluZy5pc1Bl
cmNlbnQoKSkKICAgICAgICAgdyA9IGNvbnRhaW5pbmdCbG9jaygpLT5hdmFpbGFibGVMb2dpY2Fs
V2lkdGgoKTsKLSAgICByZXR1cm4gcGFkZGluZy5jYWxjTWluVmFsdWUodyk7CisgICAgcmV0dXJu
IG1pbWludW1WYWx1ZUZvckxlbmd0aChwYWRkaW5nLCB3KTsKIH0KIAogTGF5b3V0VW5pdCBSZW5k
ZXJCb3hNb2RlbE9iamVjdDo6cGFkZGluZ1JpZ2h0KFBhZGRpbmdPcHRpb25zKSBjb25zdApAQCAt
NTgzLDcgKzU4Myw3IEBAIExheW91dFVuaXQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhZGRpbmcK
ICAgICBMZW5ndGggcGFkZGluZyA9IHN0eWxlKCktPnBhZGRpbmdSaWdodCgpOwogICAgIGlmIChw
YWRkaW5nLmlzUGVyY2VudCgpKQogICAgICAgICB3ID0gY29udGFpbmluZ0Jsb2NrKCktPmF2YWls
YWJsZUxvZ2ljYWxXaWR0aCgpOwotICAgIHJldHVybiBwYWRkaW5nLmNhbGNNaW5WYWx1ZSh3KTsK
KyAgICByZXR1cm4gbWltaW51bVZhbHVlRm9yTGVuZ3RoKHBhZGRpbmcsIHcpOwogfQogCiBMYXlv
dXRVbml0IFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWRkaW5nQmVmb3JlKFBhZGRpbmdPcHRpb25z
KSBjb25zdApAQCAtNTkyLDcgKzU5Miw3IEBAIExheW91dFVuaXQgUmVuZGVyQm94TW9kZWxPYmpl
Y3Q6OnBhZGRpbmcKICAgICBMZW5ndGggcGFkZGluZyA9IHN0eWxlKCktPnBhZGRpbmdCZWZvcmUo
KTsKICAgICBpZiAocGFkZGluZy5pc1BlcmNlbnQoKSkKICAgICAgICAgdyA9IGNvbnRhaW5pbmdC
bG9jaygpLT5hdmFpbGFibGVMb2dpY2FsV2lkdGgoKTsKLSAgICByZXR1cm4gcGFkZGluZy5jYWxj
TWluVmFsdWUodyk7CisgICAgcmV0dXJuIG1pbWludW1WYWx1ZUZvckxlbmd0aChwYWRkaW5nLCB3
KTsKIH0KIAogTGF5b3V0VW5pdCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFkZGluZ0FmdGVyKFBh
ZGRpbmdPcHRpb25zKSBjb25zdApAQCAtNjAxLDcgKzYwMSw3IEBAIExheW91dFVuaXQgUmVuZGVy
Qm94TW9kZWxPYmplY3Q6OnBhZGRpbmcKICAgICBMZW5ndGggcGFkZGluZyA9IHN0eWxlKCktPnBh
ZGRpbmdBZnRlcigpOwogICAgIGlmIChwYWRkaW5nLmlzUGVyY2VudCgpKQogICAgICAgICB3ID0g
Y29udGFpbmluZ0Jsb2NrKCktPmF2YWlsYWJsZUxvZ2ljYWxXaWR0aCgpOwotICAgIHJldHVybiBw
YWRkaW5nLmNhbGNNaW5WYWx1ZSh3KTsKKyAgICByZXR1cm4gbWltaW51bVZhbHVlRm9yTGVuZ3Ro
KHBhZGRpbmcsIHcpOwogfQogCiBMYXlvdXRVbml0IFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWRk
aW5nU3RhcnQoUGFkZGluZ09wdGlvbnMpIGNvbnN0CkBAIC02MTAsNyArNjEwLDcgQEAgTGF5b3V0
VW5pdCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFkZGluZwogICAgIExlbmd0aCBwYWRkaW5nID0g
c3R5bGUoKS0+cGFkZGluZ1N0YXJ0KCk7CiAgICAgaWYgKHBhZGRpbmcuaXNQZXJjZW50KCkpCiAg
ICAgICAgIHcgPSBjb250YWluaW5nQmxvY2soKS0+YXZhaWxhYmxlTG9naWNhbFdpZHRoKCk7Ci0g
ICAgcmV0dXJuIHBhZGRpbmcuY2FsY01pblZhbHVlKHcpOworICAgIHJldHVybiBtaW1pbnVtVmFs
dWVGb3JMZW5ndGgocGFkZGluZywgdyk7CiB9CiAKIExheW91dFVuaXQgUmVuZGVyQm94TW9kZWxP
YmplY3Q6OnBhZGRpbmdFbmQoUGFkZGluZ09wdGlvbnMpIGNvbnN0CkBAIC02MTksNyArNjE5LDcg
QEAgTGF5b3V0VW5pdCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFkZGluZwogICAgIExlbmd0aCBw
YWRkaW5nID0gc3R5bGUoKS0+cGFkZGluZ0VuZCgpOwogICAgIGlmIChwYWRkaW5nLmlzUGVyY2Vu
dCgpKQogICAgICAgICB3ID0gY29udGFpbmluZ0Jsb2NrKCktPmF2YWlsYWJsZUxvZ2ljYWxXaWR0
aCgpOwotICAgIHJldHVybiBwYWRkaW5nLmNhbGNNaW5WYWx1ZSh3KTsKKyAgICByZXR1cm4gbWlt
aW51bVZhbHVlRm9yTGVuZ3RoKHBhZGRpbmcsIHcpOwogfQogCiBSb3VuZGVkUmVjdCBSZW5kZXJC
b3hNb2RlbE9iamVjdDo6Z2V0QmFja2dyb3VuZFJvdW5kZWRSZWN0KGNvbnN0IExheW91dFJlY3Qm
IGJvcmRlclJlY3QsIElubGluZUZsb3dCb3gqIGJveCwgTGF5b3V0VW5pdCBpbmxpbmVCb3hXaWR0
aCwgTGF5b3V0VW5pdCBpbmxpbmVCb3hIZWlnaHQsCkBAIC05OTgsMTIgKzk5OCwxMiBAQCBJbnRT
aXplIFJlbmRlckJveE1vZGVsT2JqZWN0OjpjYWxjdWxhdGVGCiAgICAgICAgICAgICBpZiAobGF5
ZXJXaWR0aC5pc0ZpeGVkKCkpCiAgICAgICAgICAgICAgICAgdyA9IGxheWVyV2lkdGgudmFsdWUo
KTsKICAgICAgICAgICAgIGVsc2UgaWYgKGxheWVyV2lkdGguaXNQZXJjZW50KCkpCi0gICAgICAg
ICAgICAgICAgdyA9IGxheWVyV2lkdGguY2FsY1ZhbHVlKHBvc2l0aW9uaW5nQXJlYVNpemUud2lk
dGgoKSk7CisgICAgICAgICAgICAgICAgdyA9IHZhbHVlRm9yTGVuZ3RoKGxheWVyV2lkdGgsIHBv
c2l0aW9uaW5nQXJlYVNpemUud2lkdGgoKSk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGlm
IChsYXllckhlaWdodC5pc0ZpeGVkKCkpCiAgICAgICAgICAgICAgICAgaCA9IGxheWVySGVpZ2h0
LnZhbHVlKCk7CiAgICAgICAgICAgICBlbHNlIGlmIChsYXllckhlaWdodC5pc1BlcmNlbnQoKSkK
LSAgICAgICAgICAgICAgICBoID0gbGF5ZXJIZWlnaHQuY2FsY1ZhbHVlKHBvc2l0aW9uaW5nQXJl
YVNpemUuaGVpZ2h0KCkpOworICAgICAgICAgICAgICAgIGggPSB2YWx1ZUZvckxlbmd0aChsYXll
ckhlaWdodCwgcG9zaXRpb25pbmdBcmVhU2l6ZS5oZWlnaHQoKSk7CiAgICAgICAgICAgICAKICAg
ICAgICAgICAgIC8vIElmIG9uZSBvZiB0aGUgdmFsdWVzIGlzIGF1dG8gd2UgaGF2ZSB0byB1c2Ug
dGhlIGFwcHJvcHJpYXRlCiAgICAgICAgICAgICAvLyBzY2FsZSB0byBtYWludGFpbiBvdXIgYXNw
ZWN0IHJhdGlvLgpAQCAtMTEzOSwxMyArMTEzOSwxMyBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2Jq
ZWN0OjpjYWxjdWxhdGVCYWNrCiAgICAgRUZpbGxSZXBlYXQgYmFja2dyb3VuZFJlcGVhdFggPSBm
aWxsTGF5ZXItPnJlcGVhdFgoKTsKICAgICBFRmlsbFJlcGVhdCBiYWNrZ3JvdW5kUmVwZWF0WSA9
IGZpbGxMYXllci0+cmVwZWF0WSgpOwogCi0gICAgTGF5b3V0VW5pdCB4UG9zaXRpb24gPSBmaWxs
TGF5ZXItPnhQb3NpdGlvbigpLmNhbGNNaW5WYWx1ZShwb3NpdGlvbmluZ0FyZWFTaXplLndpZHRo
KCkgLSBnZW9tZXRyeS50aWxlU2l6ZSgpLndpZHRoKCksIHRydWUpOworICAgIExheW91dFVuaXQg
eFBvc2l0aW9uID0gbWltaW51bVZhbHVlRm9yTGVuZ3RoKGZpbGxMYXllci0+eFBvc2l0aW9uKCks
IHBvc2l0aW9uaW5nQXJlYVNpemUud2lkdGgoKSAtIGdlb21ldHJ5LnRpbGVTaXplKCkud2lkdGgo
KSwgdHJ1ZSk7CiAgICAgaWYgKGJhY2tncm91bmRSZXBlYXRYID09IFJlcGVhdEZpbGwpCiAgICAg
ICAgIGdlb21ldHJ5LnNldFBoYXNlWChnZW9tZXRyeS50aWxlU2l6ZSgpLndpZHRoKCkgPyBnZW9t
ZXRyeS50aWxlU2l6ZSgpLndpZHRoKCkgLSAoeFBvc2l0aW9uICsgbGVmdCkgJSBnZW9tZXRyeS50
aWxlU2l6ZSgpLndpZHRoKCkgOiAwKTsKICAgICBlbHNlCiAgICAgICAgIGdlb21ldHJ5LnNldE5v
UmVwZWF0WCh4UG9zaXRpb24gKyBsZWZ0KTsKIAotICAgIExheW91dFVuaXQgeVBvc2l0aW9uID0g
ZmlsbExheWVyLT55UG9zaXRpb24oKS5jYWxjTWluVmFsdWUocG9zaXRpb25pbmdBcmVhU2l6ZS5o
ZWlnaHQoKSAtIGdlb21ldHJ5LnRpbGVTaXplKCkuaGVpZ2h0KCksIHRydWUpOworICAgIExheW91
dFVuaXQgeVBvc2l0aW9uID0gbWltaW51bVZhbHVlRm9yTGVuZ3RoKGZpbGxMYXllci0+eVBvc2l0
aW9uKCksIHBvc2l0aW9uaW5nQXJlYVNpemUuaGVpZ2h0KCkgLSBnZW9tZXRyeS50aWxlU2l6ZSgp
LmhlaWdodCgpLCB0cnVlKTsKICAgICBpZiAoYmFja2dyb3VuZFJlcGVhdFkgPT0gUmVwZWF0Rmls
bCkKICAgICAgICAgZ2VvbWV0cnkuc2V0UGhhc2VZKGdlb21ldHJ5LnRpbGVTaXplKCkuaGVpZ2h0
KCkgPyBnZW9tZXRyeS50aWxlU2l6ZSgpLmhlaWdodCgpIC0gKHlQb3NpdGlvbiArIHRvcCkgJSBn
ZW9tZXRyeS50aWxlU2l6ZSgpLmhlaWdodCgpIDogMCk7CiAgICAgZWxzZSAKQEAgLTExNjQsNyAr
MTE2NCw3IEBAIHN0YXRpYyBMYXlvdXRVbml0IGNvbXB1dGVCb3JkZXJJbWFnZVNpZGUKICAgICAg
ICAgcmV0dXJuIGJvcmRlclNsaWNlLnZhbHVlKCkgKiBib3JkZXJTaWRlOwogICAgIGlmIChib3Jk
ZXJTbGljZS5pc0F1dG8oKSkKICAgICAgICAgcmV0dXJuIGltYWdlU2lkZTsKLSAgICByZXR1cm4g
Ym9yZGVyU2xpY2UuY2FsY1ZhbHVlKGJveEV4dGVudCk7CisgICAgcmV0dXJuIHZhbHVlRm9yTGVu
Z3RoKGJvcmRlclNsaWNlLCBib3hFeHRlbnQpOwogfQogCiBib29sIFJlbmRlckJveE1vZGVsT2Jq
ZWN0OjpwYWludE5pbmVQaWVjZUltYWdlKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0
LCBjb25zdCBMYXlvdXRSZWN0JiByZWN0LCBjb25zdCBSZW5kZXJTdHlsZSogc3R5bGUsCkBAIC0x
MjAyLDEwICsxMjAyLDEwIEBAIGJvb2wgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50TmluZVBp
ZWMKICAgICBpbnQgaW1hZ2VXaWR0aCA9IGltYWdlU2l6ZS53aWR0aCgpIC8gc3R5bGUtPmVmZmVj
dGl2ZVpvb20oKTsKICAgICBpbnQgaW1hZ2VIZWlnaHQgPSBpbWFnZVNpemUuaGVpZ2h0KCkgLyBz
dHlsZS0+ZWZmZWN0aXZlWm9vbSgpOwogCi0gICAgaW50IHRvcFNsaWNlID0gbWluPGludD4oaW1h
Z2VIZWlnaHQsIG5pbmVQaWVjZUltYWdlLmltYWdlU2xpY2VzKCkudG9wKCkuY2FsY1ZhbHVlKGlt
YWdlSGVpZ2h0KSk7Ci0gICAgaW50IHJpZ2h0U2xpY2UgPSBtaW48aW50PihpbWFnZVdpZHRoLCBu
aW5lUGllY2VJbWFnZS5pbWFnZVNsaWNlcygpLnJpZ2h0KCkuY2FsY1ZhbHVlKGltYWdlV2lkdGgp
KTsKLSAgICBpbnQgYm90dG9tU2xpY2UgPSBtaW48aW50PihpbWFnZUhlaWdodCwgbmluZVBpZWNl
SW1hZ2UuaW1hZ2VTbGljZXMoKS5ib3R0b20oKS5jYWxjVmFsdWUoaW1hZ2VIZWlnaHQpKTsKLSAg
ICBpbnQgbGVmdFNsaWNlID0gbWluPGludD4oaW1hZ2VXaWR0aCwgbmluZVBpZWNlSW1hZ2UuaW1h
Z2VTbGljZXMoKS5sZWZ0KCkuY2FsY1ZhbHVlKGltYWdlV2lkdGgpKTsKKyAgICBpbnQgdG9wU2xp
Y2UgPSBtaW48aW50PihpbWFnZUhlaWdodCwgdmFsdWVGb3JMZW5ndGgobmluZVBpZWNlSW1hZ2Uu
aW1hZ2VTbGljZXMoKS50b3AoKSwgaW1hZ2VIZWlnaHQpKTsKKyAgICBpbnQgcmlnaHRTbGljZSA9
IG1pbjxpbnQ+KGltYWdlV2lkdGgsIHZhbHVlRm9yTGVuZ3RoKG5pbmVQaWVjZUltYWdlLmltYWdl
U2xpY2VzKCkucmlnaHQoKSwgaW1hZ2VXaWR0aCkpOworICAgIGludCBib3R0b21TbGljZSA9IG1p
bjxpbnQ+KGltYWdlSGVpZ2h0LCB2YWx1ZUZvckxlbmd0aChuaW5lUGllY2VJbWFnZS5pbWFnZVNs
aWNlcygpLmJvdHRvbSgpLCBpbWFnZUhlaWdodCkpOworICAgIGludCBsZWZ0U2xpY2UgPSBtaW48
aW50PihpbWFnZVdpZHRoLCB2YWx1ZUZvckxlbmd0aChuaW5lUGllY2VJbWFnZS5pbWFnZVNsaWNl
cygpLmxlZnQoKSwgaW1hZ2VXaWR0aCkpOwogCiAgICAgRU5pbmVQaWVjZUltYWdlUnVsZSBoUnVs
ZSA9IG5pbmVQaWVjZUltYWdlLmhvcml6b250YWxSdWxlKCk7CiAgICAgRU5pbmVQaWVjZUltYWdl
UnVsZSB2UnVsZSA9IG5pbmVQaWVjZUltYWdlLnZlcnRpY2FsUnVsZSgpOwpJbmRleDogU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3guY3BwCShyZXZpc2lvbiAx
MTExMjApCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3guY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC01NzMsNyArNTczLDcgQEAgTGF5b3V0VW5pdCBSZW5kZXJGbGV4
aWJsZUJveDo6cHJlZmVycmVkTQogICAgICAgICBMYXlvdXRVbml0IG1haW5BeGlzRXh0ZW50ID0g
aGFzT3J0aG9nb25hbEZsb3coY2hpbGQpID8gY2hpbGQtPmxvZ2ljYWxIZWlnaHQoKSA6IGNoaWxk
LT5tYXhQcmVmZXJyZWRMb2dpY2FsV2lkdGgoKTsKICAgICAgICAgcmV0dXJuIG1haW5BeGlzRXh0
ZW50IC0gbWFpbkF4aXNCb3JkZXJBbmRQYWRkaW5nRXh0ZW50Rm9yQ2hpbGQoY2hpbGQpOwogICAg
IH0KLSAgICByZXR1cm4gbWFpbkF4aXNMZW5ndGguY2FsY01pblZhbHVlKG1haW5BeGlzQ29udGVu
dEV4dGVudCgpKTsKKyAgICByZXR1cm4gbWltaW51bVZhbHVlRm9yTGVuZ3RoKG1haW5BeGlzTGVu
Z3RoLCBtYWluQXhpc0NvbnRlbnRFeHRlbnQoKSk7CiB9CiAKIExheW91dFVuaXQgUmVuZGVyRmxl
eGlibGVCb3g6OmNvbXB1dGVBdmFpbGFibGVGcmVlU3BhY2UoTGF5b3V0VW5pdCBwcmVmZXJyZWRN
YWluQXhpc0V4dGVudCkKQEAgLTY4MCwxMSArNjgwLDExIEBAIHZvaWQgUmVuZGVyRmxleGlibGVC
b3g6OmNvbXB1dGVNYWluQXhpc1AKICAgICAgICAgLy8gb2YgMCBhbmQgYmVjYXVzZSBpZiB3ZSdy
ZSBub3QgYXV0byBzaXppbmcsIHdlIGRvbid0IGRvIGEgbGF5b3V0IHRoYXQKICAgICAgICAgLy8g
Y29tcHV0ZXMgdGhlIHN0YXJ0L2VuZCBtYXJnaW5zLgogICAgICAgICBpZiAoaXNIb3Jpem9udGFs
RmxvdygpKSB7Ci0gICAgICAgICAgICBjaGlsZC0+c2V0TWFyZ2luTGVmdChjaGlsZC0+c3R5bGUo
KS0+bWFyZ2luTGVmdCgpLmNhbGNNaW5WYWx1ZShmbGV4Ym94QXZhaWxhYmxlQ29udGVudEV4dGVu
dCkpOwotICAgICAgICAgICAgY2hpbGQtPnNldE1hcmdpblJpZ2h0KGNoaWxkLT5zdHlsZSgpLT5t
YXJnaW5SaWdodCgpLmNhbGNNaW5WYWx1ZShmbGV4Ym94QXZhaWxhYmxlQ29udGVudEV4dGVudCkp
OworICAgICAgICAgICAgY2hpbGQtPnNldE1hcmdpbkxlZnQobWltaW51bVZhbHVlRm9yTGVuZ3Ro
KGNoaWxkLT5zdHlsZSgpLT5tYXJnaW5MZWZ0KCksIGZsZXhib3hBdmFpbGFibGVDb250ZW50RXh0
ZW50KSk7CisgICAgICAgICAgICBjaGlsZC0+c2V0TWFyZ2luUmlnaHQobWltaW51bVZhbHVlRm9y
TGVuZ3RoKGNoaWxkLT5zdHlsZSgpLT5tYXJnaW5SaWdodCgpLCBmbGV4Ym94QXZhaWxhYmxlQ29u
dGVudEV4dGVudCkpOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgY2hpbGQtPnNldE1h
cmdpblRvcChjaGlsZC0+c3R5bGUoKS0+bWFyZ2luVG9wKCkuY2FsY01pblZhbHVlKGZsZXhib3hB
dmFpbGFibGVDb250ZW50RXh0ZW50KSk7Ci0gICAgICAgICAgICBjaGlsZC0+c2V0TWFyZ2luQm90
dG9tKGNoaWxkLT5zdHlsZSgpLT5tYXJnaW5Cb3R0b20oKS5jYWxjTWluVmFsdWUoZmxleGJveEF2
YWlsYWJsZUNvbnRlbnRFeHRlbnQpKTsKKyAgICAgICAgICAgIGNoaWxkLT5zZXRNYXJnaW5Ub3Ao
bWltaW51bVZhbHVlRm9yTGVuZ3RoKGNoaWxkLT5zdHlsZSgpLT5tYXJnaW5Ub3AoKSwgZmxleGJv
eEF2YWlsYWJsZUNvbnRlbnRFeHRlbnQpKTsKKyAgICAgICAgICAgIGNoaWxkLT5zZXRNYXJnaW5C
b3R0b20obWltaW51bVZhbHVlRm9yTGVuZ3RoKGNoaWxkLT5zdHlsZSgpLT5tYXJnaW5Cb3R0b20o
KSwgZmxleGJveEF2YWlsYWJsZUNvbnRlbnRFeHRlbnQpKTsKICAgICAgICAgfQogICAgIH0KIH0K
QEAgLTc1OCw4ICs3NTgsOCBAQCBib29sIFJlbmRlckZsZXhpYmxlQm94OjpydW5GcmVlU3BhY2VB
bGxvCiAgICAgICAgICAgICAgICAgY2hpbGRQcmVmZXJyZWRTaXplICs9IGxyb3VuZGYoYXZhaWxh
YmxlRnJlZVNwYWNlICogcG9zaXRpdmVGbGV4Rm9yQ2hpbGQoY2hpbGQpIC8gdG90YWxQb3NpdGl2
ZUZsZXhpYmlsaXR5KTsKIAogICAgICAgICAgICAgICAgIExlbmd0aCBjaGlsZExvZ2ljYWxNYXhX
aWR0aCA9IGlzSG9yaXpvbnRhbEZsb3coKSA/IGNoaWxkLT5zdHlsZSgpLT5tYXhXaWR0aCgpIDog
Y2hpbGQtPnN0eWxlKCktPm1heEhlaWdodCgpOwotICAgICAgICAgICAgICAgIGlmIChjaGlsZExv
Z2ljYWxNYXhXaWR0aC5pc1NwZWNpZmllZCgpICYmIGNoaWxkUHJlZmVycmVkU2l6ZSA+IGNoaWxk
TG9naWNhbE1heFdpZHRoLmNhbGNWYWx1ZShmbGV4Ym94QXZhaWxhYmxlQ29udGVudEV4dGVudCkp
IHsKLSAgICAgICAgICAgICAgICAgICAgY2hpbGRQcmVmZXJyZWRTaXplID0gY2hpbGRMb2dpY2Fs
TWF4V2lkdGguY2FsY1ZhbHVlKGZsZXhib3hBdmFpbGFibGVDb250ZW50RXh0ZW50KTsKKyAgICAg
ICAgICAgICAgICBpZiAoY2hpbGRMb2dpY2FsTWF4V2lkdGguaXNTcGVjaWZpZWQoKSAmJiBjaGls
ZFByZWZlcnJlZFNpemUgPiB2YWx1ZUZvckxlbmd0aChjaGlsZExvZ2ljYWxNYXhXaWR0aCwgZmxl
eGJveEF2YWlsYWJsZUNvbnRlbnRFeHRlbnQpKSB7CisgICAgICAgICAgICAgICAgICAgIGNoaWxk
UHJlZmVycmVkU2l6ZSA9IHZhbHVlRm9yTGVuZ3RoKGNoaWxkTG9naWNhbE1heFdpZHRoLCBmbGV4
Ym94QXZhaWxhYmxlQ29udGVudEV4dGVudCk7CiAgICAgICAgICAgICAgICAgICAgIGF2YWlsYWJs
ZUZyZWVTcGFjZSAtPSBjaGlsZFByZWZlcnJlZFNpemUgLSBwcmVmZXJyZWRNYWluQXhpc0NvbnRl
bnRFeHRlbnRGb3JDaGlsZChjaGlsZCk7CiAgICAgICAgICAgICAgICAgICAgIHRvdGFsUG9zaXRp
dmVGbGV4aWJpbGl0eSAtPSBwb3NpdGl2ZUZsZXhGb3JDaGlsZChjaGlsZCk7CiAKQEAgLTc3MCw4
ICs3NzAsOCBAQCBib29sIFJlbmRlckZsZXhpYmxlQm94OjpydW5GcmVlU3BhY2VBbGxvCiAgICAg
ICAgICAgICAgICAgY2hpbGRQcmVmZXJyZWRTaXplICs9IGxyb3VuZGYoYXZhaWxhYmxlRnJlZVNw
YWNlICogbmVnYXRpdmVGbGV4Rm9yQ2hpbGQoY2hpbGQpIC8gdG90YWxOZWdhdGl2ZUZsZXhpYmls
aXR5KTsKIAogICAgICAgICAgICAgICAgIExlbmd0aCBjaGlsZExvZ2ljYWxNaW5XaWR0aCA9IGlz
SG9yaXpvbnRhbEZsb3coKSA/IGNoaWxkLT5zdHlsZSgpLT5taW5XaWR0aCgpIDogY2hpbGQtPnN0
eWxlKCktPm1pbkhlaWdodCgpOwotICAgICAgICAgICAgICAgIGlmIChjaGlsZExvZ2ljYWxNaW5X
aWR0aC5pc1NwZWNpZmllZCgpICYmIGNoaWxkUHJlZmVycmVkU2l6ZSA8IGNoaWxkTG9naWNhbE1p
bldpZHRoLmNhbGNWYWx1ZShmbGV4Ym94QXZhaWxhYmxlQ29udGVudEV4dGVudCkpIHsKLSAgICAg
ICAgICAgICAgICAgICAgY2hpbGRQcmVmZXJyZWRTaXplID0gY2hpbGRMb2dpY2FsTWluV2lkdGgu
Y2FsY1ZhbHVlKGZsZXhib3hBdmFpbGFibGVDb250ZW50RXh0ZW50KTsKKyAgICAgICAgICAgICAg
ICBpZiAoY2hpbGRMb2dpY2FsTWluV2lkdGguaXNTcGVjaWZpZWQoKSAmJiBjaGlsZFByZWZlcnJl
ZFNpemUgPCB2YWx1ZUZvckxlbmd0aChjaGlsZExvZ2ljYWxNaW5XaWR0aCwgZmxleGJveEF2YWls
YWJsZUNvbnRlbnRFeHRlbnQpKSB7CisgICAgICAgICAgICAgICAgICAgIGNoaWxkUHJlZmVycmVk
U2l6ZSA9IHZhbHVlRm9yTGVuZ3RoKGNoaWxkTG9naWNhbE1pbldpZHRoLCBmbGV4Ym94QXZhaWxh
YmxlQ29udGVudEV4dGVudCk7CiAgICAgICAgICAgICAgICAgICAgIGF2YWlsYWJsZUZyZWVTcGFj
ZSArPSBwcmVmZXJyZWRNYWluQXhpc0NvbnRlbnRFeHRlbnRGb3JDaGlsZChjaGlsZCkgLSBjaGls
ZFByZWZlcnJlZFNpemU7CiAgICAgICAgICAgICAgICAgICAgIHRvdGFsTmVnYXRpdmVGbGV4aWJp
bGl0eSAtPSBuZWdhdGl2ZUZsZXhGb3JDaGlsZChjaGlsZCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJGcmFtZVNldC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckZyYW1lU2V0LmNwcAkocmV2aXNpb24gMTExMTIwKQorKysg
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZyYW1lU2V0LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjIzLDcgKzIyMyw3IEBAIHZvaWQgUmVuZGVyRnJhbWVTZXQ6OmxheU91dEF4aXMoR3Jp
ZEF4aXMKICAgICAgICAgLy8gQ291bnQgdGhlIHRvdGFsIHBlcmNlbnRhZ2Ugb2YgYWxsIG9mIHRo
ZSBwZXJjZW50YWdlIGNvbHVtbnMvcm93cyAtPiB0b3RhbFBlcmNlbnQKICAgICAgICAgLy8gQ291
bnQgdGhlIG51bWJlciBvZiBjb2x1bW5zL3Jvd3Mgd2hpY2ggYXJlIHBlcmNlbnRhZ2VzIC0+IGNv
dW50UGVyY2VudAogICAgICAgICBpZiAoZ3JpZFtpXS5pc1BlcmNlbnQoKSkgewotICAgICAgICAg
ICAgZ3JpZExheW91dFtpXSA9IG1heChncmlkW2ldLmNhbGNWYWx1ZShhdmFpbGFibGVMZW4pLCAw
KTsKKyAgICAgICAgICAgIGdyaWRMYXlvdXRbaV0gPSBtYXgodmFsdWVGb3JMZW5ndGgoZ3JpZFtp
XSwgYXZhaWxhYmxlTGVuKSwgMCk7CiAgICAgICAgICAgICB0b3RhbFBlcmNlbnQgKz0gZ3JpZExh
eW91dFtpXTsKICAgICAgICAgICAgIGNvdW50UGVyY2VudCsrOwogICAgICAgICB9CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcAkocmV2aXNpb24gMTExMTIw
KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTcwMSw3ICs3MDEsNyBAQCBzdGF0aWMgTGF5b3V0VW5pdCBjb21wdXRlTWFyZ2lu
KGNvbnN0IFJlCiAgICAgaWYgKG1hcmdpbi5pc0ZpeGVkKCkpCiAgICAgICAgIHJldHVybiBtYXJn
aW4udmFsdWUoKTsKICAgICBpZiAobWFyZ2luLmlzUGVyY2VudCgpKQotICAgICAgICByZXR1cm4g
bWFyZ2luLmNhbGNNaW5WYWx1ZShtYXg8TGF5b3V0VW5pdD4oMCwgcmVuZGVyZXItPmNvbnRhaW5p
bmdCbG9jaygpLT5hdmFpbGFibGVMb2dpY2FsV2lkdGgoKSkpOworICAgICAgICByZXR1cm4gbWlt
aW51bVZhbHVlRm9yTGVuZ3RoKG1hcmdpbiwgbWF4PExheW91dFVuaXQ+KDAsIHJlbmRlcmVyLT5j
b250YWluaW5nQmxvY2soKS0+YXZhaWxhYmxlTG9naWNhbFdpZHRoKCkpKTsKICAgICByZXR1cm4g
MDsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCShy
ZXZpc2lvbiAxMTExMjApCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MjAsOCArODIwLDggQEAgVHJhbnNmb3JtYXRpb25NYXRy
aXggUmVuZGVyTGF5ZXI6OnBlcnNwZQogICAgIGNvbnN0IGZsb2F0IGJveFdpZHRoID0gYm9yZGVy
Qm94LndpZHRoKCk7CiAgICAgY29uc3QgZmxvYXQgYm94SGVpZ2h0ID0gYm9yZGVyQm94LmhlaWdo
dCgpOwogCi0gICAgZmxvYXQgcGVyc3BlY3RpdmVPcmlnaW5YID0gc3R5bGUtPnBlcnNwZWN0aXZl
T3JpZ2luWCgpLmNhbGNGbG9hdFZhbHVlKGJveFdpZHRoKTsKLSAgICBmbG9hdCBwZXJzcGVjdGl2
ZU9yaWdpblkgPSBzdHlsZS0+cGVyc3BlY3RpdmVPcmlnaW5ZKCkuY2FsY0Zsb2F0VmFsdWUoYm94
SGVpZ2h0KTsKKyAgICBmbG9hdCBwZXJzcGVjdGl2ZU9yaWdpblggPSBmbG9hdFZhbHVlRm9yTGVu
Z3RoKHN0eWxlLT5wZXJzcGVjdGl2ZU9yaWdpblgoKSwgYm94V2lkdGgpOworICAgIGZsb2F0IHBl
cnNwZWN0aXZlT3JpZ2luWSA9IGZsb2F0VmFsdWVGb3JMZW5ndGgoc3R5bGUtPnBlcnNwZWN0aXZl
T3JpZ2luWSgpLCBib3hIZWlnaHQpOwogCiAgICAgLy8gQSBwZXJzcGVjdGl2ZSBvcmlnaW4gb2Yg
MCwwIG1ha2VzIHRoZSB2YW5pc2hpbmcgcG9pbnQgaW4gdGhlIGNlbnRlciBvZiB0aGUgZWxlbWVu
dC4KICAgICAvLyBXZSB3YW50IGl0IHRvIGJlIGluIHRoZSB0b3AtbGVmdCwgc28gc3VidHJhY3Qg
aGFsZiB0aGUgaGVpZ2h0IGFuZCB3aWR0aC4KQEAgLTg0NCw4ICs4NDQsOCBAQCBGbG9hdFBvaW50
IFJlbmRlckxheWVyOjpwZXJzcGVjdGl2ZU9yaWdpCiAgICAgY29uc3QgTGF5b3V0UmVjdCBib3Jk
ZXJCb3ggPSB0b1JlbmRlckJveChyZW5kZXJlcigpKS0+Ym9yZGVyQm94UmVjdCgpOwogICAgIFJl
bmRlclN0eWxlKiBzdHlsZSA9IHJlbmRlcmVyKCktPnN0eWxlKCk7CiAKLSAgICByZXR1cm4gRmxv
YXRQb2ludChzdHlsZS0+cGVyc3BlY3RpdmVPcmlnaW5YKCkuY2FsY0Zsb2F0VmFsdWUoYm9yZGVy
Qm94LndpZHRoKCkpLAotICAgICAgICAgICAgICAgICAgICAgIHN0eWxlLT5wZXJzcGVjdGl2ZU9y
aWdpblkoKS5jYWxjRmxvYXRWYWx1ZShib3JkZXJCb3guaGVpZ2h0KCkpKTsKKyAgICByZXR1cm4g
RmxvYXRQb2ludChmbG9hdFZhbHVlRm9yTGVuZ3RoKHN0eWxlLT5wZXJzcGVjdGl2ZU9yaWdpblgo
KSwgYm9yZGVyQm94LndpZHRoKCkpLAorICAgICAgICAgICAgICAgICAgICAgIGZsb2F0VmFsdWVG
b3JMZW5ndGgoc3R5bGUtPnBlcnNwZWN0aXZlT3JpZ2luWSgpLCBib3JkZXJCb3guaGVpZ2h0KCkp
KTsKIH0KIAogUmVuZGVyTGF5ZXIqIFJlbmRlckxheWVyOjpzdGFja2luZ0NvbnRleHQoKSBjb25z
dApJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2lu
Zy5jcHAJKHJldmlzaW9uIDExMTEyMCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMYXllckJhY2tpbmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDA1LDggKzEwMDUsOCBAQCBG
bG9hdFBvaW50M0QgUmVuZGVyTGF5ZXJCYWNraW5nOjpjb21wdXRlCiAgICAgUmVuZGVyU3R5bGUq
IHN0eWxlID0gcmVuZGVyZXIoKS0+c3R5bGUoKTsKIAogICAgIEZsb2F0UG9pbnQzRCBvcmlnaW47
Ci0gICAgb3JpZ2luLnNldFgoc3R5bGUtPnRyYW5zZm9ybU9yaWdpblgoKS5jYWxjRmxvYXRWYWx1
ZShib3JkZXJCb3gud2lkdGgoKSkpOwotICAgIG9yaWdpbi5zZXRZKHN0eWxlLT50cmFuc2Zvcm1P
cmlnaW5ZKCkuY2FsY0Zsb2F0VmFsdWUoYm9yZGVyQm94LmhlaWdodCgpKSk7CisgICAgb3JpZ2lu
LnNldFgoZmxvYXRWYWx1ZUZvckxlbmd0aChzdHlsZS0+dHJhbnNmb3JtT3JpZ2luWCgpLCBib3Jk
ZXJCb3gud2lkdGgoKSkpOworICAgIG9yaWdpbi5zZXRZKGZsb2F0VmFsdWVGb3JMZW5ndGgoc3R5
bGUtPnRyYW5zZm9ybU9yaWdpblkoKSwgYm9yZGVyQm94LmhlaWdodCgpKSk7CiAgICAgb3JpZ2lu
LnNldFooc3R5bGUtPnRyYW5zZm9ybU9yaWdpblooKSk7CiAKICAgICByZXR1cm4gb3JpZ2luOwpA
QCAtMTAyMCw4ICsxMDIwLDggQEAgRmxvYXRQb2ludCBSZW5kZXJMYXllckJhY2tpbmc6OmNvbXB1
dGVQZQogICAgIGZsb2F0IGJveEhlaWdodCA9IGJvcmRlckJveC5oZWlnaHQoKTsKIAogICAgIEZs
b2F0UG9pbnQgb3JpZ2luOwotICAgIG9yaWdpbi5zZXRYKHN0eWxlLT5wZXJzcGVjdGl2ZU9yaWdp
blgoKS5jYWxjRmxvYXRWYWx1ZShib3hXaWR0aCkpOwotICAgIG9yaWdpbi5zZXRZKHN0eWxlLT5w
ZXJzcGVjdGl2ZU9yaWdpblkoKS5jYWxjRmxvYXRWYWx1ZShib3hIZWlnaHQpKTsKKyAgICBvcmln
aW4uc2V0WChmbG9hdFZhbHVlRm9yTGVuZ3RoKHN0eWxlLT5wZXJzcGVjdGl2ZU9yaWdpblgoKSwg
Ym94V2lkdGgpKTsKKyAgICBvcmlnaW4uc2V0WShmbG9hdFZhbHVlRm9yTGVuZ3RoKHN0eWxlLT5w
ZXJzcGVjdGl2ZU9yaWdpblkoKSwgYm94SGVpZ2h0KSk7CiAKICAgICByZXR1cm4gb3JpZ2luOwog
fQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1hcnF1ZWUuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNYXJxdWVlLmNwcAkocmV2
aXNpb24gMTExMTIwKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1hcnF1ZWUu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yODksNyArMjg5LDcgQEAgdm9pZCBSZW5kZXJNYXJxdWVl
Ojp0aW1lckZpcmVkKFRpbWVyPFJlbgogICAgICAgICB9CiAgICAgICAgIGJvb2wgcG9zaXRpdmUg
PSByYW5nZSA+IDA7CiAgICAgICAgIGludCBjbGllbnRTaXplID0gKGlzSG9yaXpvbnRhbCgpID8g
bV9sYXllci0+cmVuZGVyQm94KCktPmNsaWVudFdpZHRoKCkgOiBtX2xheWVyLT5yZW5kZXJCb3go
KS0+Y2xpZW50SGVpZ2h0KCkpOwotICAgICAgICBpbnQgaW5jcmVtZW50ID0gYWJzKG1fbGF5ZXIt
PnJlbmRlcmVyKCktPnN0eWxlKCktPm1hcnF1ZWVJbmNyZW1lbnQoKS5jYWxjVmFsdWUoY2xpZW50
U2l6ZSkpOworICAgICAgICBpbnQgaW5jcmVtZW50ID0gYWJzKHZhbHVlRm9yTGVuZ3RoKG1fbGF5
ZXItPnJlbmRlcmVyKCktPnN0eWxlKCktPm1hcnF1ZWVJbmNyZW1lbnQoKSwgY2xpZW50U2l6ZSkp
OwogICAgICAgICBpbnQgY3VycmVudFBvcyA9IChpc0hvcml6b250YWwoKSA/IG1fbGF5ZXItPnNj
cm9sbFhPZmZzZXQoKSA6IG1fbGF5ZXItPnNjcm9sbFlPZmZzZXQoKSk7CiAgICAgICAgIG5ld1Bv
cyA9ICBjdXJyZW50UG9zICsgKGFkZEluY3JlbWVudCA/IGluY3JlbWVudCA6IC1pbmNyZW1lbnQp
OwogICAgICAgICBpZiAocG9zaXRpdmUpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTWVudUxpc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJNZW51TGlzdC5jcHAJKHJldmlzaW9uIDExMTEyMCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJNZW51TGlzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2MSw3ICsx
NjEsNyBAQCB2b2lkIFJlbmRlck1lbnVMaXN0Ojp1cGRhdGVPcHRpb25zV2lkdGgoCiAgICAgICAg
ICAgICAvLyBBZGQgaW4gdGhlIG9wdGlvbidzIHRleHQgaW5kZW50LiAgV2UgY2FuJ3QgY2FsY3Vs
YXRlIHBlcmNlbnRhZ2UgdmFsdWVzIGZvciBub3cuCiAgICAgICAgICAgICBmbG9hdCBvcHRpb25X
aWR0aCA9IDA7CiAgICAgICAgICAgICBpZiAoUmVuZGVyU3R5bGUqIG9wdGlvblN0eWxlID0gZWxl
bWVudC0+cmVuZGVyU3R5bGUoKSkKLSAgICAgICAgICAgICAgICBvcHRpb25XaWR0aCArPSBvcHRp
b25TdHlsZS0+dGV4dEluZGVudCgpLmNhbGNNaW5WYWx1ZSgwKTsKKyAgICAgICAgICAgICAgICBv
cHRpb25XaWR0aCArPSBtaW1pbnVtVmFsdWVGb3JMZW5ndGgob3B0aW9uU3R5bGUtPnRleHRJbmRl
bnQoKSwgMCk7CiAgICAgICAgICAgICBpZiAoIXRleHQuaXNFbXB0eSgpKQogICAgICAgICAgICAg
ICAgIG9wdGlvbldpZHRoICs9IHN0eWxlKCktPmZvbnQoKS53aWR0aCh0ZXh0KTsKICAgICAgICAg
ICAgIG1heE9wdGlvbldpZHRoID0gbWF4KG1heE9wdGlvbldpZHRoLCBvcHRpb25XaWR0aCk7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAkocmV2aXNpb24g
MTExMTIwKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTE0NDUsNyArMTQ0NSw3IEBAIGJvb2wgUmVuZGVyT2JqZWN0OjpyZXBh
aW50QWZ0ZXJMYXlvdXRJZk4KIAogICAgICAgICBpbnQgYm9yZGVyUmlnaHQgPSBpc0JveCgpID8g
dG9SZW5kZXJCb3godGhpcyktPmJvcmRlclJpZ2h0KCkgOiAwOwogICAgICAgICBMYXlvdXRVbml0
IGJveFdpZHRoID0gaXNCb3goKSA/IHRvUmVuZGVyQm94KHRoaXMpLT53aWR0aCgpIDogemVyb0xh
eW91dFVuaXQ7Ci0gICAgICAgIExheW91dFVuaXQgYm9yZGVyV2lkdGggPSBtYXg8TGF5b3V0VW5p
dD4oLW91dGxpbmVTdHlsZS0+b3V0bGluZU9mZnNldCgpLCBtYXg8TGF5b3V0VW5pdD4oYm9yZGVy
UmlnaHQsIG1heDxMYXlvdXRVbml0PihzdHlsZSgpLT5ib3JkZXJUb3BSaWdodFJhZGl1cygpLndp
ZHRoKCkuY2FsY1ZhbHVlKGJveFdpZHRoKSwgc3R5bGUoKS0+Ym9yZGVyQm90dG9tUmlnaHRSYWRp
dXMoKS53aWR0aCgpLmNhbGNWYWx1ZShib3hXaWR0aCkpKSkgKyBtYXg8TGF5b3V0VW5pdD4ob3cs
IHNoYWRvd1JpZ2h0KTsKKyAgICAgICAgTGF5b3V0VW5pdCBib3JkZXJXaWR0aCA9IG1heDxMYXlv
dXRVbml0Pigtb3V0bGluZVN0eWxlLT5vdXRsaW5lT2Zmc2V0KCksIG1heDxMYXlvdXRVbml0Pihi
b3JkZXJSaWdodCwgbWF4PExheW91dFVuaXQ+KHZhbHVlRm9yTGVuZ3RoKHN0eWxlKCktPmJvcmRl
clRvcFJpZ2h0UmFkaXVzKCkud2lkdGgoKSwgYm94V2lkdGgpLCB2YWx1ZUZvckxlbmd0aChzdHls
ZSgpLT5ib3JkZXJCb3R0b21SaWdodFJhZGl1cygpLndpZHRoKCksIGJveFdpZHRoKSkpKSArIG1h
eDxMYXlvdXRVbml0Pihvdywgc2hhZG93UmlnaHQpOwogICAgICAgICBMYXlvdXRSZWN0IHJpZ2h0
UmVjdChuZXdPdXRsaW5lQm94LngoKSArIG1pbihuZXdPdXRsaW5lQm94LndpZHRoKCksIG9sZE91
dGxpbmVCb3gud2lkdGgoKSkgLSBib3JkZXJXaWR0aCwKICAgICAgICAgICAgIG5ld091dGxpbmVC
b3gueSgpLAogICAgICAgICAgICAgd2lkdGggKyBib3JkZXJXaWR0aCwKQEAgLTE0NjQsNyArMTQ2
NCw3IEBAIGJvb2wgUmVuZGVyT2JqZWN0OjpyZXBhaW50QWZ0ZXJMYXlvdXRJZk4KIAogICAgICAg
ICBpbnQgYm9yZGVyQm90dG9tID0gaXNCb3goKSA/IHRvUmVuZGVyQm94KHRoaXMpLT5ib3JkZXJC
b3R0b20oKSA6IDA7CiAgICAgICAgIExheW91dFVuaXQgYm94SGVpZ2h0ID0gaXNCb3goKSA/IHRv
UmVuZGVyQm94KHRoaXMpLT5oZWlnaHQoKSA6IHplcm9MYXlvdXRVbml0OwotICAgICAgICBMYXlv
dXRVbml0IGJvcmRlckhlaWdodCA9IG1heDxMYXlvdXRVbml0Pigtb3V0bGluZVN0eWxlLT5vdXRs
aW5lT2Zmc2V0KCksIG1heDxMYXlvdXRVbml0Pihib3JkZXJCb3R0b20sIG1heDxMYXlvdXRVbml0
PihzdHlsZSgpLT5ib3JkZXJCb3R0b21MZWZ0UmFkaXVzKCkuaGVpZ2h0KCkuY2FsY1ZhbHVlKGJv
eEhlaWdodCksIHN0eWxlKCktPmJvcmRlckJvdHRvbVJpZ2h0UmFkaXVzKCkuaGVpZ2h0KCkuY2Fs
Y1ZhbHVlKGJveEhlaWdodCkpKSkgKyBtYXg8TGF5b3V0VW5pdD4ob3csIHNoYWRvd0JvdHRvbSk7
CisgICAgICAgIExheW91dFVuaXQgYm9yZGVySGVpZ2h0ID0gbWF4PExheW91dFVuaXQ+KC1vdXRs
aW5lU3R5bGUtPm91dGxpbmVPZmZzZXQoKSwgbWF4PExheW91dFVuaXQ+KGJvcmRlckJvdHRvbSwg
bWF4PExheW91dFVuaXQ+KHZhbHVlRm9yTGVuZ3RoKHN0eWxlKCktPmJvcmRlckJvdHRvbUxlZnRS
YWRpdXMoKS5oZWlnaHQoKSwgYm94SGVpZ2h0KSwgdmFsdWVGb3JMZW5ndGgoc3R5bGUoKS0+Ym9y
ZGVyQm90dG9tUmlnaHRSYWRpdXMoKS5oZWlnaHQoKSwgYm94SGVpZ2h0KSkpKSArIG1heDxMYXlv
dXRVbml0Pihvdywgc2hhZG93Qm90dG9tKTsKICAgICAgICAgTGF5b3V0UmVjdCBib3R0b21SZWN0
KG5ld091dGxpbmVCb3gueCgpLAogICAgICAgICAgICAgbWluKG5ld091dGxpbmVCb3gubWF4WSgp
LCBvbGRPdXRsaW5lQm94Lm1heFkoKSkgLSBib3JkZXJIZWlnaHQsCiAgICAgICAgICAgICBtYXgo
bmV3T3V0bGluZUJveC53aWR0aCgpLCBvbGRPdXRsaW5lQm94LndpZHRoKCkpLApJbmRleDogU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuY3BwCShyZXZpc2lvbiAxMTEx
MjApCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMzUsOCArMzM1LDggQEAgTGF5b3V0VW5pdCBSZW5kZXJSZXBsYWNlZDo6
Y29tcHV0ZVJlcGxhYwogICAgICAgICAgICAgICAgICAgICBsb2dpY2FsV2lkdGggPSBjb250YWlu
aW5nQmxvY2soKS0+YXZhaWxhYmxlTG9naWNhbFdpZHRoKCk7CiAKICAgICAgICAgICAgICAgICAv
LyBUaGlzIHNvbHZlcyBhYm92ZSBlcXVhdGlvbiBmb3IgJ3dpZHRoJyAoPT0gbG9naWNhbFdpZHRo
KS4KLSAgICAgICAgICAgICAgICBMYXlvdXRVbml0IG1hcmdpblN0YXJ0ID0gc3R5bGUoKS0+bWFy
Z2luU3RhcnQoKS5jYWxjTWluVmFsdWUobG9naWNhbFdpZHRoKTsKLSAgICAgICAgICAgICAgICBM
YXlvdXRVbml0IG1hcmdpbkVuZCA9IHN0eWxlKCktPm1hcmdpbkVuZCgpLmNhbGNNaW5WYWx1ZShs
b2dpY2FsV2lkdGgpOworICAgICAgICAgICAgICAgIExheW91dFVuaXQgbWFyZ2luU3RhcnQgPSBt
aW1pbnVtVmFsdWVGb3JMZW5ndGgoc3R5bGUoKS0+bWFyZ2luU3RhcnQoKSwgbG9naWNhbFdpZHRo
KTsKKyAgICAgICAgICAgICAgICBMYXlvdXRVbml0IG1hcmdpbkVuZCA9IG1pbWludW1WYWx1ZUZv
ckxlbmd0aChzdHlsZSgpLT5tYXJnaW5FbmQoKSwgbG9naWNhbFdpZHRoKTsKICAgICAgICAgICAg
ICAgICBsb2dpY2FsV2lkdGggPSBtYXgoMCwgbG9naWNhbFdpZHRoIC0gKG1hcmdpblN0YXJ0ICsg
bWFyZ2luRW5kICsgKHdpZHRoKCkgLSBjbGllbnRXaWR0aCgpKSkpOwogICAgICAgICAgICAgICAg
IGlmIChpc1BlcmNlbnRhZ2VJbnRyaW5zaWNTaXplKQogICAgICAgICAgICAgICAgICAgICAvLyBG
SVhNRTogUmVtb3ZlIHVubmVjZXNzYXJ5IHJvdW5kaW5nIHdoZW4gbGF5b3V0IGlzIG9mZiBpbnRz
OiB3ZWJraXQub3JnL2IvNjM2NTYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJTY3JvbGxiYXJQYXJ0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyU2Nyb2xsYmFyUGFydC5jcHAJKHJldmlzaW9uIDExMTEyMCkKKysrIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXJQYXJ0LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtODMsNyArODMsNyBAQCBzdGF0aWMgaW50IGNhbGNTY3JvbGxiYXJUaGlja25lc3NVc2luZyhj
CiB7CiAgICAgaWYgKGwuaXNJbnRyaW5zaWNPckF1dG8oKSkKICAgICAgICAgcmV0dXJuIFNjcm9s
bGJhclRoZW1lOjp0aGVtZSgpLT5zY3JvbGxiYXJUaGlja25lc3MoKTsKLSAgICByZXR1cm4gbC5j
YWxjTWluVmFsdWUoY29udGFpbmluZ0xlbmd0aCk7CisgICAgcmV0dXJuIG1pbWludW1WYWx1ZUZv
ckxlbmd0aChsLCBjb250YWluaW5nTGVuZ3RoKTsKIH0KIAogdm9pZCBSZW5kZXJTY3JvbGxiYXJQ
YXJ0Ojpjb21wdXRlU2Nyb2xsYmFyV2lkdGgoKQpAQCAtOTcsOCArOTcsOCBAQCB2b2lkIFJlbmRl
clNjcm9sbGJhclBhcnQ6OmNvbXB1dGVTY3JvbGxiCiAgICAgc2V0V2lkdGgobWF4KG1pbldpZHRo
LCBtaW4obWF4V2lkdGgsIHcpKSk7CiAgICAgCiAgICAgLy8gQnV0dG9ucyBhbmQgdHJhY2sgcGll
Y2VzIGNhbiBhbGwgaGF2ZSBtYXJnaW5zIGFsb25nIHRoZSBheGlzIG9mIHRoZSBzY3JvbGxiYXIu
IAotICAgIG1fbWFyZ2luTGVmdCA9IHN0eWxlKCktPm1hcmdpbkxlZnQoKS5jYWxjTWluVmFsdWUo
dmlzaWJsZVNpemUpOwotICAgIG1fbWFyZ2luUmlnaHQgPSBzdHlsZSgpLT5tYXJnaW5SaWdodCgp
LmNhbGNNaW5WYWx1ZSh2aXNpYmxlU2l6ZSk7CisgICAgbV9tYXJnaW5MZWZ0ID0gbWltaW51bVZh
bHVlRm9yTGVuZ3RoKHN0eWxlKCktPm1hcmdpbkxlZnQoKSwgdmlzaWJsZVNpemUpOworICAgIG1f
bWFyZ2luUmlnaHQgPSBtaW1pbnVtVmFsdWVGb3JMZW5ndGgoc3R5bGUoKS0+bWFyZ2luUmlnaHQo
KSwgdmlzaWJsZVNpemUpOwogfQogCiB2b2lkIFJlbmRlclNjcm9sbGJhclBhcnQ6OmNvbXB1dGVT
Y3JvbGxiYXJIZWlnaHQoKQpAQCAtMTEyLDggKzExMiw4IEBAIHZvaWQgUmVuZGVyU2Nyb2xsYmFy
UGFydDo6Y29tcHV0ZVNjcm9sbGIKICAgICBzZXRIZWlnaHQobWF4KG1pbkhlaWdodCwgbWluKG1h
eEhlaWdodCwgaCkpKTsKIAogICAgIC8vIEJ1dHRvbnMgYW5kIHRyYWNrIHBpZWNlcyBjYW4gYWxs
IGhhdmUgbWFyZ2lucyBhbG9uZyB0aGUgYXhpcyBvZiB0aGUgc2Nyb2xsYmFyLiAKLSAgICBtX21h
cmdpblRvcCA9IHN0eWxlKCktPm1hcmdpblRvcCgpLmNhbGNNaW5WYWx1ZSh2aXNpYmxlU2l6ZSk7
Ci0gICAgbV9tYXJnaW5Cb3R0b20gPSBzdHlsZSgpLT5tYXJnaW5Cb3R0b20oKS5jYWxjTWluVmFs
dWUodmlzaWJsZVNpemUpOworICAgIG1fbWFyZ2luVG9wID0gbWltaW51bVZhbHVlRm9yTGVuZ3Ro
KHN0eWxlKCktPm1hcmdpblRvcCgpLCB2aXNpYmxlU2l6ZSk7CisgICAgbV9tYXJnaW5Cb3R0b20g
PSBtaW1pbnVtVmFsdWVGb3JMZW5ndGgoc3R5bGUoKS0+bWFyZ2luQm90dG9tKCksIHZpc2libGVT
aXplKTsKIH0KIAogdm9pZCBSZW5kZXJTY3JvbGxiYXJQYXJ0Ojpjb21wdXRlUHJlZmVycmVkTG9n
aWNhbFdpZHRocygpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGUu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZS5j
cHAJKHJldmlzaW9uIDExMTEyMCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
YWJsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIzMiw4ICsyMzIsOCBAQCB2b2lkIFJlbmRlclRh
YmxlOjpjb21wdXRlTG9naWNhbFdpZHRoKCkKICAgICAgICAgc2V0TG9naWNhbFdpZHRoKGNvbnZl
cnRTdHlsZUxvZ2ljYWxXaWR0aFRvQ29tcHV0ZWRXaWR0aChzdHlsZUxvZ2ljYWxXaWR0aCwgY29u
dGFpbmVyV2lkdGhJbklubGluZURpcmVjdGlvbikpOwogICAgIGVsc2UgewogICAgICAgICAvLyBT
dWJ0cmFjdCBvdXQgYW55IGZpeGVkIG1hcmdpbnMgZnJvbSBvdXIgYXZhaWxhYmxlIHdpZHRoIGZv
ciBhdXRvIHdpZHRoIHRhYmxlcy4KLSAgICAgICAgTGF5b3V0VW5pdCBtYXJnaW5TdGFydCA9IHN0
eWxlKCktPm1hcmdpblN0YXJ0KCkuY2FsY01pblZhbHVlKGF2YWlsYWJsZUxvZ2ljYWxXaWR0aCk7
Ci0gICAgICAgIExheW91dFVuaXQgbWFyZ2luRW5kID0gc3R5bGUoKS0+bWFyZ2luRW5kKCkuY2Fs
Y01pblZhbHVlKGF2YWlsYWJsZUxvZ2ljYWxXaWR0aCk7CisgICAgICAgIExheW91dFVuaXQgbWFy
Z2luU3RhcnQgPSBtaW1pbnVtVmFsdWVGb3JMZW5ndGgoc3R5bGUoKS0+bWFyZ2luU3RhcnQoKSwg
YXZhaWxhYmxlTG9naWNhbFdpZHRoKTsKKyAgICAgICAgTGF5b3V0VW5pdCBtYXJnaW5FbmQgPSBt
aW1pbnVtVmFsdWVGb3JMZW5ndGgoc3R5bGUoKS0+bWFyZ2luRW5kKCksIGF2YWlsYWJsZUxvZ2lj
YWxXaWR0aCk7CiAgICAgICAgIExheW91dFVuaXQgbWFyZ2luVG90YWwgPSBtYXJnaW5TdGFydCAr
IG1hcmdpbkVuZDsKICAgICAgICAgCiAgICAgICAgIC8vIFN1YnRyYWN0IG91dCBvdXIgbWFyZ2lu
cyB0byBnZXQgdGhlIGF2YWlsYWJsZSBjb250ZW50IHdpZHRoLgpAQCAtMjYxLDggKzI2MSw4IEBA
IHZvaWQgUmVuZGVyVGFibGU6OmNvbXB1dGVMb2dpY2FsV2lkdGgoKQogICAgIGlmICghaGFzUGVy
cGVuZGljdWxhckNvbnRhaW5pbmdCbG9jaykKICAgICAgICAgY29tcHV0ZUlubGluZURpcmVjdGlv
bk1hcmdpbnMoY2IsIGF2YWlsYWJsZUxvZ2ljYWxXaWR0aCwgbG9naWNhbFdpZHRoKCkpOwogICAg
IGVsc2UgewotICAgICAgICBzZXRNYXJnaW5TdGFydChzdHlsZSgpLT5tYXJnaW5TdGFydCgpLmNh
bGNNaW5WYWx1ZShhdmFpbGFibGVMb2dpY2FsV2lkdGgpKTsKLSAgICAgICAgc2V0TWFyZ2luRW5k
KHN0eWxlKCktPm1hcmdpbkVuZCgpLmNhbGNNaW5WYWx1ZShhdmFpbGFibGVMb2dpY2FsV2lkdGgp
KTsKKyAgICAgICAgc2V0TWFyZ2luU3RhcnQobWltaW51bVZhbHVlRm9yTGVuZ3RoKHN0eWxlKCkt
Pm1hcmdpblN0YXJ0KCksIGF2YWlsYWJsZUxvZ2ljYWxXaWR0aCkpOworICAgICAgICBzZXRNYXJn
aW5FbmQobWltaW51bVZhbHVlRm9yTGVuZ3RoKHN0eWxlKCktPm1hcmdpbkVuZCgpLCBhdmFpbGFi
bGVMb2dpY2FsV2lkdGgpKTsKICAgICB9CiB9CiAKQEAgLTI3Niw3ICsyNzYsNyBAQCBMYXlvdXRV
bml0IFJlbmRlclRhYmxlOjpjb252ZXJ0U3R5bGVMb2dpCiAgICAgICAgIHJlY2FsY0JvcmRlcnNJ
blJvd0RpcmVjdGlvbigpOwogICAgICAgICBib3JkZXJzID0gYm9yZGVyU3RhcnQoKSArIGJvcmRl
ckVuZCgpICsgKGNvbGxhcHNlQm9yZGVycygpID8gMCA6IHBhZGRpbmdTdGFydCgpICsgcGFkZGlu
Z0VuZCgpKTsKICAgICB9Ci0gICAgcmV0dXJuIHN0eWxlTG9naWNhbFdpZHRoLmNhbGNNaW5WYWx1
ZShhdmFpbGFibGVXaWR0aCkgKyBib3JkZXJzOworICAgIHJldHVybiBtaW1pbnVtVmFsdWVGb3JM
ZW5ndGgoc3R5bGVMb2dpY2FsV2lkdGgsIGF2YWlsYWJsZVdpZHRoKSArIGJvcmRlcnM7CiB9CiAK
IHZvaWQgUmVuZGVyVGFibGU6OmxheW91dENhcHRpb24oUmVuZGVyVGFibGVDYXB0aW9uKiBjYXB0
aW9uKQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5j
cHAJKHJldmlzaW9uIDExMTEyMCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
YWJsZUNlbGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05NSw3ICs5NSw3IEBAIExheW91dFVuaXQg
UmVuZGVyVGFibGVDZWxsOjpsb2dpY2FsSGVpZ2gKIHsKICAgICBMYXlvdXRVbml0IGFkanVzdGVk
TG9naWNhbEhlaWdodCA9IGxvZ2ljYWxIZWlnaHQoKSAtIChpbnRyaW5zaWNQYWRkaW5nQmVmb3Jl
KCkgKyBpbnRyaW5zaWNQYWRkaW5nQWZ0ZXIoKSk7CiAKLSAgICBMYXlvdXRVbml0IHN0eWxlTG9n
aWNhbEhlaWdodCA9IHN0eWxlKCktPmxvZ2ljYWxIZWlnaHQoKS5jYWxjVmFsdWUoMCk7CisgICAg
TGF5b3V0VW5pdCBzdHlsZUxvZ2ljYWxIZWlnaHQgPSB2YWx1ZUZvckxlbmd0aChzdHlsZSgpLT5s
b2dpY2FsSGVpZ2h0KCksIDApOwogICAgIGlmIChkb2N1bWVudCgpLT5pblF1aXJrc01vZGUoKSB8
fCBzdHlsZSgpLT5ib3hTaXppbmcoKSA9PSBCT1JERVJfQk9YKSB7CiAgICAgICAgIC8vIEV4cGxp
Y2l0IGhlaWdodHMgdXNlIHRoZSBib3JkZXIgYm94IGluIHF1aXJrcyBtb2RlLgogICAgICAgICAv
LyBEb24ndCBhZGp1c3QgaGVpZ2h0LgpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRhYmxlU2VjdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRhYmxlU2VjdGlvbi5jcHAJKHJldmlzaW9uIDExMTEyMCkKKysrIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zMzgsNyArMzM4LDcgQEAgaW50IFJlbmRlclRhYmxlU2VjdGlvbjo6Y2FsY1Jvd0xvZ2ljYWxI
ZQogICAgICAgICBMYXlvdXRVbml0IGJhc2VsaW5lRGVzY2VudCA9IDA7CiAKICAgICAgICAgLy8g
T3VyIGJhc2Ugc2l6ZSBpcyB0aGUgYmlnZ2VzdCBsb2dpY2FsIGhlaWdodCBmcm9tIG91ciBjZWxs
cycgc3R5bGVzIChleGNsdWRpbmcgcm93IHNwYW5uaW5nIGNlbGxzKS4KLSAgICAgICAgbV9yb3dQ
b3NbciArIDFdID0gbWF4KG1fcm93UG9zW3JdICsgbV9ncmlkW3JdLmxvZ2ljYWxIZWlnaHQuY2Fs
Y01pblZhbHVlKDApLCAwKTsKKyAgICAgICAgbV9yb3dQb3NbciArIDFdID0gbWF4KG1fcm93UG9z
W3JdICsgbWltaW51bVZhbHVlRm9yTGVuZ3RoKG1fZ3JpZFtyXS5sb2dpY2FsSGVpZ2h0LCAwKSwg
MCk7CiAKICAgICAgICAgUm93JiByb3cgPSBtX2dyaWRbcl0ucm93OwogICAgICAgICB1bnNpZ25l
ZCB0b3RhbENvbHMgPSByb3cuc2l6ZSgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRleHQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGV4dC5oCShyZXZpc2lvbiAxMTExMjApCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGV4dC5oCSh3b3JraW5nIGNvcHkpCkBAIC05Nyw4ICs5Nyw4IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIExheW91dFJlY3Qgc2VsZWN0aW9uUmVjdEZvclJlcGFpbnQoUmVuZGVyQm94TW9k
ZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIGJvb2wgY2xpcFRvVmlzaWJsZUNvbnRlbnQgPSB0
cnVlKTsKICAgICB2aXJ0dWFsIExheW91dFJlY3QgbG9jYWxDYXJldFJlY3QoSW5saW5lQm94Kiwg
aW50IGNhcmV0T2Zmc2V0LCBMYXlvdXRVbml0KiBleHRyYVdpZHRoVG9FbmRPZkxpbmUgPSAwKTsK
IAotICAgIHZpcnR1YWwgTGF5b3V0VW5pdCBtYXJnaW5MZWZ0KCkgY29uc3QgeyByZXR1cm4gc3R5
bGUoKS0+bWFyZ2luTGVmdCgpLmNhbGNNaW5WYWx1ZSgwKTsgfQotICAgIHZpcnR1YWwgTGF5b3V0
VW5pdCBtYXJnaW5SaWdodCgpIGNvbnN0IHsgcmV0dXJuIHN0eWxlKCktPm1hcmdpblJpZ2h0KCku
Y2FsY01pblZhbHVlKDApOyB9CisgICAgdmlydHVhbCBMYXlvdXRVbml0IG1hcmdpbkxlZnQoKSBj
b25zdCB7IHJldHVybiBtaW1pbnVtVmFsdWVGb3JMZW5ndGgoc3R5bGUoKS0+bWFyZ2luTGVmdCgp
LCAwKTsgfQorICAgIHZpcnR1YWwgTGF5b3V0VW5pdCBtYXJnaW5SaWdodCgpIGNvbnN0IHsgcmV0
dXJuIG1pbWludW1WYWx1ZUZvckxlbmd0aChzdHlsZSgpLT5tYXJnaW5SaWdodCgpLCAwKTsgfQog
CiAgICAgdmlydHVhbCBMYXlvdXRSZWN0IGNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KFJl
bmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyKSBjb25zdDsKIApJbmRleDogU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jvb3RJbmxpbmVCb3guY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Sb290SW5saW5lQm94LmNwcAkocmV2aXNpb24gMTExMTIw
KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jvb3RJbmxpbmVCb3guY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC04NDQsNyArODQ0LDcgQEAgTGF5b3V0VW5pdCBSb290SW5saW5lQm94Ojp2ZXJ0
aWNhbFBvc2l0aQogICAgICAgICB9IGVsc2UgaWYgKHZlcnRpY2FsQWxpZ24gPT0gQkFTRUxJTkVf
TUlERExFKQogICAgICAgICAgICAgdmVydGljYWxQb3NpdGlvbiArPSAtcmVuZGVyZXItPmxpbmVI
ZWlnaHQoZmlyc3RMaW5lLCBsaW5lRGlyZWN0aW9uKSAvIDIgKyByZW5kZXJlci0+YmFzZWxpbmVQ
b3NpdGlvbihiYXNlbGluZVR5cGUoKSwgZmlyc3RMaW5lLCBsaW5lRGlyZWN0aW9uKTsKICAgICAg
ICAgZWxzZSBpZiAodmVydGljYWxBbGlnbiA9PSBMRU5HVEgpCi0gICAgICAgICAgICB2ZXJ0aWNh
bFBvc2l0aW9uIC09IHJlbmRlcmVyLT5zdHlsZSgpLT52ZXJ0aWNhbEFsaWduTGVuZ3RoKCkuY2Fs
Y1ZhbHVlKHJlbmRlcmVyLT5saW5lSGVpZ2h0KGZpcnN0TGluZSwgbGluZURpcmVjdGlvbikpOwor
ICAgICAgICAgICAgdmVydGljYWxQb3NpdGlvbiAtPSB2YWx1ZUZvckxlbmd0aChyZW5kZXJlci0+
c3R5bGUoKS0+dmVydGljYWxBbGlnbkxlbmd0aCgpLCByZW5kZXJlci0+bGluZUhlaWdodChmaXJz
dExpbmUsIGxpbmVEaXJlY3Rpb24pKTsKICAgICB9CiAKICAgICAvLyBTdG9yZSB0aGUgY2FjaGVk
IHZhbHVlLgpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVy
U3R5bGUuY3BwCShyZXZpc2lvbiAxMTExMjApCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3R5bGUvUmVuZGVyU3R5bGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MDIsMTQgKzgwMiwxNCBA
QCB2b2lkIFJlbmRlclN0eWxlOjphcHBseVRyYW5zZm9ybShUcmFuc2ZvCiAgICAgYm9vbCBhcHBs
eVRyYW5zZm9ybU9yaWdpbiA9IHJlcXVpcmVUcmFuc2Zvcm1PcmlnaW4odHJhbnNmb3JtT3BlcmF0
aW9ucywgYXBwbHlPcmlnaW4pOwogCiAgICAgaWYgKGFwcGx5VHJhbnNmb3JtT3JpZ2luKQotICAg
ICAgICB0cmFuc2Zvcm0udHJhbnNsYXRlM2QodHJhbnNmb3JtT3JpZ2luWCgpLmNhbGNGbG9hdFZh
bHVlKGJvcmRlckJveFNpemUud2lkdGgoKSksIHRyYW5zZm9ybU9yaWdpblkoKS5jYWxjRmxvYXRW
YWx1ZShib3JkZXJCb3hTaXplLmhlaWdodCgpKSwgdHJhbnNmb3JtT3JpZ2luWigpKTsKKyAgICAg
ICAgdHJhbnNmb3JtLnRyYW5zbGF0ZTNkKGZsb2F0VmFsdWVGb3JMZW5ndGgodHJhbnNmb3JtT3Jp
Z2luWCgpLCBib3JkZXJCb3hTaXplLndpZHRoKCkpLCBmbG9hdFZhbHVlRm9yTGVuZ3RoKHRyYW5z
Zm9ybU9yaWdpblkoKSwgYm9yZGVyQm94U2l6ZS5oZWlnaHQoKSksIHRyYW5zZm9ybU9yaWdpbloo
KSk7CiAKICAgICB1bnNpZ25lZCBzaXplID0gdHJhbnNmb3JtT3BlcmF0aW9ucy5zaXplKCk7CiAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNpemU7ICsraSkKICAgICAgICAgdHJhbnNmb3Jt
T3BlcmF0aW9uc1tpXS0+YXBwbHkodHJhbnNmb3JtLCBib3JkZXJCb3hTaXplKTsKIAogICAgIGlm
IChhcHBseVRyYW5zZm9ybU9yaWdpbikKLSAgICAgICAgdHJhbnNmb3JtLnRyYW5zbGF0ZTNkKC10
cmFuc2Zvcm1PcmlnaW5YKCkuY2FsY0Zsb2F0VmFsdWUoYm9yZGVyQm94U2l6ZS53aWR0aCgpKSwg
LXRyYW5zZm9ybU9yaWdpblkoKS5jYWxjRmxvYXRWYWx1ZShib3JkZXJCb3hTaXplLmhlaWdodCgp
KSwgLXRyYW5zZm9ybU9yaWdpblooKSk7IAorICAgICAgICB0cmFuc2Zvcm0udHJhbnNsYXRlM2Qo
LWZsb2F0VmFsdWVGb3JMZW5ndGgodHJhbnNmb3JtT3JpZ2luWCgpLCBib3JkZXJCb3hTaXplLndp
ZHRoKCkpLCAtZmxvYXRWYWx1ZUZvckxlbmd0aCh0cmFuc2Zvcm1PcmlnaW5ZKCksIGJvcmRlckJv
eFNpemUuaGVpZ2h0KCkpLCAtdHJhbnNmb3JtT3JpZ2luWigpKTsgCiB9CiAKIHZvaWQgUmVuZGVy
U3R5bGU6OmFwcGx5VHJhbnNmb3JtKFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0sIGNv
bnN0IEZsb2F0UmVjdCYgYm91bmRpbmdCb3gsIEFwcGx5VHJhbnNmb3JtT3JpZ2luIGFwcGx5T3Jp
Z2luKSBjb25zdApAQCAtODIxLDggKzgyMSw4IEBAIHZvaWQgUmVuZGVyU3R5bGU6OmFwcGx5VHJh
bnNmb3JtKFRyYW5zZm8KICAgICBmbG9hdCBvZmZzZXRZID0gdHJhbnNmb3JtT3JpZ2luWSgpLnR5
cGUoKSA9PSBQZXJjZW50ID8gYm91bmRpbmdCb3gueSgpIDogMDsKICAgICAKICAgICBpZiAoYXBw
bHlUcmFuc2Zvcm1PcmlnaW4pIHsKLSAgICAgICAgdHJhbnNmb3JtLnRyYW5zbGF0ZTNkKHRyYW5z
Zm9ybU9yaWdpblgoKS5jYWxjRmxvYXRWYWx1ZShib3VuZGluZ0JveC53aWR0aCgpKSArIG9mZnNl
dFgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm1PcmlnaW5ZKCkuY2Fs
Y0Zsb2F0VmFsdWUoYm91bmRpbmdCb3guaGVpZ2h0KCkpICsgb2Zmc2V0WSwKKyAgICAgICAgdHJh
bnNmb3JtLnRyYW5zbGF0ZTNkKGZsb2F0VmFsdWVGb3JMZW5ndGgodHJhbnNmb3JtT3JpZ2luWCgp
LCBib3VuZGluZ0JveC53aWR0aCgpKSArIG9mZnNldFgsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBmbG9hdFZhbHVlRm9yTGVuZ3RoKHRyYW5zZm9ybU9yaWdpblkoKSwgYm91bmRpbmdC
b3guaGVpZ2h0KCkpICsgb2Zmc2V0WSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRy
YW5zZm9ybU9yaWdpblooKSk7CiAgICAgfQogICAgIApAQCAtODMxLDggKzgzMSw4IEBAIHZvaWQg
UmVuZGVyU3R5bGU6OmFwcGx5VHJhbnNmb3JtKFRyYW5zZm8KICAgICAgICAgdHJhbnNmb3JtT3Bl
cmF0aW9uc1tpXS0+YXBwbHkodHJhbnNmb3JtLCBib3VuZGluZ0JveC5zaXplKCkpOwogICAgIAog
ICAgIGlmIChhcHBseVRyYW5zZm9ybU9yaWdpbikgewotICAgICAgICB0cmFuc2Zvcm0udHJhbnNs
YXRlM2QoLXRyYW5zZm9ybU9yaWdpblgoKS5jYWxjRmxvYXRWYWx1ZShib3VuZGluZ0JveC53aWR0
aCgpKSAtIG9mZnNldFgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtdHJhbnNmb3Jt
T3JpZ2luWSgpLmNhbGNGbG9hdFZhbHVlKGJvdW5kaW5nQm94LmhlaWdodCgpKSAtIG9mZnNldFks
CisgICAgICAgIHRyYW5zZm9ybS50cmFuc2xhdGUzZCgtZmxvYXRWYWx1ZUZvckxlbmd0aCh0cmFu
c2Zvcm1PcmlnaW5YKCksIGJvdW5kaW5nQm94LndpZHRoKCkpIC0gb2Zmc2V0WCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC1mbG9hdFZhbHVlRm9yTGVuZ3RoKHRyYW5zZm9ybU9yaWdp
blkoKSwgYm91bmRpbmdCb3guaGVpZ2h0KCkpIC0gb2Zmc2V0WSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIC10cmFuc2Zvcm1PcmlnaW5aKCkpOwogICAgIH0KIH0KQEAgLTg3NywxNCAr
ODc3LDE0IEBAIHZvaWQgUmVuZGVyU3R5bGU6OnNldEJveFNoYWRvdyhQYXNzT3duUHQKIHN0YXRp
YyBSb3VuZGVkUmVjdDo6UmFkaWkgY2FsY1JhZGlpRm9yKGNvbnN0IEJvcmRlckRhdGEmIGJvcmRl
ciwgTGF5b3V0U2l6ZSBzaXplKQogewogICAgIHJldHVybiBSb3VuZGVkUmVjdDo6UmFkaWkoCi0g
ICAgICAgIEludFNpemUoYm9yZGVyLnRvcExlZnQoKS53aWR0aCgpLmNhbGNWYWx1ZShzaXplLndp
ZHRoKCkpLCAKLSAgICAgICAgICAgICAgICBib3JkZXIudG9wTGVmdCgpLmhlaWdodCgpLmNhbGNW
YWx1ZShzaXplLmhlaWdodCgpKSksCi0gICAgICAgIEludFNpemUoYm9yZGVyLnRvcFJpZ2h0KCku
d2lkdGgoKS5jYWxjVmFsdWUoc2l6ZS53aWR0aCgpKSwKLSAgICAgICAgICAgICAgICBib3JkZXIu
dG9wUmlnaHQoKS5oZWlnaHQoKS5jYWxjVmFsdWUoc2l6ZS5oZWlnaHQoKSkpLAotICAgICAgICBJ
bnRTaXplKGJvcmRlci5ib3R0b21MZWZ0KCkud2lkdGgoKS5jYWxjVmFsdWUoc2l6ZS53aWR0aCgp
KSwgCi0gICAgICAgICAgICAgICAgYm9yZGVyLmJvdHRvbUxlZnQoKS5oZWlnaHQoKS5jYWxjVmFs
dWUoc2l6ZS5oZWlnaHQoKSkpLAotICAgICAgICBJbnRTaXplKGJvcmRlci5ib3R0b21SaWdodCgp
LndpZHRoKCkuY2FsY1ZhbHVlKHNpemUud2lkdGgoKSksIAotICAgICAgICAgICAgICAgIGJvcmRl
ci5ib3R0b21SaWdodCgpLmhlaWdodCgpLmNhbGNWYWx1ZShzaXplLmhlaWdodCgpKSkpOworICAg
ICAgICBJbnRTaXplKHZhbHVlRm9yTGVuZ3RoKGJvcmRlci50b3BMZWZ0KCkud2lkdGgoKSwgc2l6
ZS53aWR0aCgpKSwgCisgICAgICAgICAgICAgICAgdmFsdWVGb3JMZW5ndGgoYm9yZGVyLnRvcExl
ZnQoKS5oZWlnaHQoKSwgc2l6ZS5oZWlnaHQoKSkpLAorICAgICAgICBJbnRTaXplKHZhbHVlRm9y
TGVuZ3RoKGJvcmRlci50b3BSaWdodCgpLndpZHRoKCksIHNpemUud2lkdGgoKSksCisgICAgICAg
ICAgICAgICAgdmFsdWVGb3JMZW5ndGgoYm9yZGVyLnRvcFJpZ2h0KCkuaGVpZ2h0KCksIHNpemUu
aGVpZ2h0KCkpKSwKKyAgICAgICAgSW50U2l6ZSh2YWx1ZUZvckxlbmd0aChib3JkZXIuYm90dG9t
TGVmdCgpLndpZHRoKCksIHNpemUud2lkdGgoKSksIAorICAgICAgICAgICAgICAgIHZhbHVlRm9y
TGVuZ3RoKGJvcmRlci5ib3R0b21MZWZ0KCkuaGVpZ2h0KCksIHNpemUuaGVpZ2h0KCkpKSwKKyAg
ICAgICAgSW50U2l6ZSh2YWx1ZUZvckxlbmd0aChib3JkZXIuYm90dG9tUmlnaHQoKS53aWR0aCgp
LCBzaXplLndpZHRoKCkpLCAKKyAgICAgICAgICAgICAgICB2YWx1ZUZvckxlbmd0aChib3JkZXIu
Ym90dG9tUmlnaHQoKS5oZWlnaHQoKSwgc2l6ZS5oZWlnaHQoKSkpKTsKIH0KIAogc3RhdGljIGZs
b2F0IGNhbGNDb25zdHJhaW50U2NhbGVGb3IoY29uc3QgSW50UmVjdCYgcmVjdCwgY29uc3QgUm91
bmRlZFJlY3Q6OlJhZGlpJiByYWRpaSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dHlsZS9SZW5kZXJTdHlsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdHlsZS9SZW5kZXJTdHlsZS5oCShyZXZpc2lvbiAxMTExMjApCisrKyBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzksNiAr
MzksNyBAQAogI2luY2x1ZGUgIkdyYXBoaWNzVHlwZXMuaCIKICNpbmNsdWRlICJMZW5ndGguaCIK
ICNpbmNsdWRlICJMZW5ndGhCb3guaCIKKyNpbmNsdWRlICJMZW5ndGhGdW5jdGlvbnMuaCIKICNp
bmNsdWRlICJMZW5ndGhTaXplLmgiCiAjaW5jbHVkZSAiTGluZUNsYW1wVmFsdWUuaCIKICNpbmNs
dWRlICJOaW5lUGllY2VJbWFnZS5oIgpAQCAtNjMwLDcgKzYzMSw3IEBAIHB1YmxpYzoKICAgICAg
ICAgICAgIHJldHVybiBmb250TWV0cmljcygpLmxpbmVTcGFjaW5nKCk7CiAKICAgICAgICAgaWYg
KGxoLmlzUGVyY2VudCgpKQotICAgICAgICAgICAgcmV0dXJuIGxoLmNhbGNNaW5WYWx1ZShmb250
U2l6ZSgpKTsKKyAgICAgICAgICAgIHJldHVybiBtaW1pbnVtVmFsdWVGb3JMZW5ndGgobGgsIGZv
bnRTaXplKCkpOwogCiAgICAgICAgIHJldHVybiBsaC52YWx1ZSgpOwogICAgIH0KSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290LmNwcAkocmV2aXNp
b24gMTExMTIwKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODcsOSArODcsOSBAQCB2b2lkIFJlbmRlclNWR1Jvb3Q6
OmNvbXB1dGVJbnRyaW5zaWNSYXRpCiAgICAgLy8gICByZXNvbHZpbmcgYm90aCB2YWx1ZXMgdG8g
dXNlciB1bml0cy4KICAgICBpZiAoaW50cmluc2ljV2lkdGhBdHRyaWJ1dGUuaXNGaXhlZCgpIHx8
IGludHJpbnNpY0hlaWdodEF0dHJpYnV0ZS5pc0ZpeGVkKCkpIHsKICAgICAgICAgaWYgKGludHJp
bnNpY1dpZHRoQXR0cmlidXRlLmlzRml4ZWQoKSkKLSAgICAgICAgICAgIGludHJpbnNpY1NpemUu
c2V0V2lkdGgoaW50cmluc2ljV2lkdGhBdHRyaWJ1dGUuY2FsY0Zsb2F0VmFsdWUoMCkpOworICAg
ICAgICAgICAgaW50cmluc2ljU2l6ZS5zZXRXaWR0aChmbG9hdFZhbHVlRm9yTGVuZ3RoKGludHJp
bnNpY1dpZHRoQXR0cmlidXRlLCAwKSk7CiAgICAgICAgIGlmIChpbnRyaW5zaWNIZWlnaHRBdHRy
aWJ1dGUuaXNGaXhlZCgpKQotICAgICAgICAgICAgaW50cmluc2ljU2l6ZS5zZXRIZWlnaHQoaW50
cmluc2ljSGVpZ2h0QXR0cmlidXRlLmNhbGNGbG9hdFZhbHVlKDApKTsKKyAgICAgICAgICAgIGlu
dHJpbnNpY1NpemUuc2V0SGVpZ2h0KGZsb2F0VmFsdWVGb3JMZW5ndGgoaW50cmluc2ljSGVpZ2h0
QXR0cmlidXRlLCAwKSk7CiAgICAgICAgIGlmICghaW50cmluc2ljU2l6ZS5pc0VtcHR5KCkpCiAg
ICAgICAgICAgICBpbnRyaW5zaWNSYXRpbyA9IGludHJpbnNpY1NpemUud2lkdGgoKSAvIHN0YXRp
Y19jYXN0PGRvdWJsZT4oaW50cmluc2ljU2l6ZS5oZWlnaHQoKSk7CiAgICAgICAgIHJldHVybjsK
QEAgLTE1Myw3ICsxNTMsNyBAQCBib29sIFJlbmRlclNWR1Jvb3Q6OmlzRW1iZWRkZWRUaHJvdWdo
RnJhCiAKIHN0YXRpYyBpbmxpbmUgTGF5b3V0VW5pdCByZXNvbHZlTGVuZ3RoQXR0cmlidXRlRm9y
U1ZHKGNvbnN0IExlbmd0aCYgbGVuZ3RoLCBmbG9hdCBzY2FsZSwgZmxvYXQgbWF4U2l6ZSkKIHsK
LSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8TGF5b3V0VW5pdD4obGVuZ3RoLmNhbGNWYWx1ZShtYXhT
aXplKSAqIChsZW5ndGguaXNGaXhlZCgpID8gc2NhbGUgOiAxKSk7CisgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PExheW91dFVuaXQ+KHZhbHVlRm9yTGVuZ3RoKGxlbmd0aCwgbWF4U2l6ZSkgKiAobGVu
Z3RoLmlzRml4ZWQoKSA/IHNjYWxlIDogMSkpOwogfQogCiBMYXlvdXRVbml0IFJlbmRlclNWR1Jv
b3Q6OmNvbXB1dGVSZXBsYWNlZExvZ2ljYWxXaWR0aChib29sIGluY2x1ZGVNYXhXaWR0aCkgY29u
c3QKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTVkdFbGVtZW50LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU1ZHRWxlbWVudC5jcHAJKHJldmlzaW9uIDExMTEy
MCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTVkdFbGVtZW50LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNTQxLDcgKzU0MSw3IEBAIEZsb2F0UmVjdCBTVkdTVkdFbGVtZW50OjpjdXJyZW50Vmll
d0JveFIKIAogICAgIC8vIElmIG5vIHZpZXdCb3ggaXMgc3BlY2lmaWVkIGJ1dCBub24tcmVsYXRp
dmUgd2lkdGgvaGVpZ2h0IHZhbHVlcywgdGhlbiB3ZQogICAgIC8vIHNob3VsZCBhbHdheXMgc3lu
dGhlc2l6ZSBhIHZpZXdCb3ggaWYgd2UncmUgZW1iZWRkZWQgdGhyb3VnaCBhIFNWR0ltYWdlLiAg
ICAKLSAgICByZXR1cm4gRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgRmxvYXRTaXplKGludHJpbnNp
Y1dpZHRoLmNhbGNGbG9hdFZhbHVlKDApLCBpbnRyaW5zaWNIZWlnaHQuY2FsY0Zsb2F0VmFsdWUo
MCkpKTsKKyAgICByZXR1cm4gRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgRmxvYXRTaXplKGZsb2F0
VmFsdWVGb3JMZW5ndGgoaW50cmluc2ljV2lkdGgsIDApLCBmbG9hdFZhbHVlRm9yTGVuZ3RoKGlu
dHJpbnNpY0hlaWdodCwgMCkpKTsKIH0KIAogRmxvYXRTaXplIFNWR1NWR0VsZW1lbnQ6OmN1cnJl
bnRWaWV3cG9ydFNpemUoKSBjb25zdApAQCAtNTQ5LDcgKzU0OSw3IEBAIEZsb2F0U2l6ZSBTVkdT
VkdFbGVtZW50OjpjdXJyZW50Vmlld3BvcnQKICAgICBMZW5ndGggaW50cmluc2ljV2lkdGggPSB0
aGlzLT5pbnRyaW5zaWNXaWR0aCgpOwogICAgIExlbmd0aCBpbnRyaW5zaWNIZWlnaHQgPSB0aGlz
LT5pbnRyaW5zaWNIZWlnaHQoKTsKICAgICBpZiAoaW50cmluc2ljV2lkdGguaXNGaXhlZCgpICYm
IGludHJpbnNpY0hlaWdodC5pc0ZpeGVkKCkpCi0gICAgICAgIHJldHVybiBGbG9hdFNpemUoaW50
cmluc2ljV2lkdGguY2FsY0Zsb2F0VmFsdWUoMCksIGludHJpbnNpY0hlaWdodC5jYWxjRmxvYXRW
YWx1ZSgwKSk7CisgICAgICAgIHJldHVybiBGbG9hdFNpemUoZmxvYXRWYWx1ZUZvckxlbmd0aChp
bnRyaW5zaWNXaWR0aCwgMCksIGZsb2F0VmFsdWVGb3JMZW5ndGgoaW50cmluc2ljSGVpZ2h0LCAw
KSk7CiAKICAgICBpZiAoIXJlbmRlcmVyKCkpCiAgICAgICAgIHJldHVybiBGbG9hdFNpemUoKTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcAkocmV2aXNpb24g
MTExMTIwKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjkzLDcgKzI5Myw3IEBAIHZvaWQgU1ZHSW1hZ2U6OmNvbXB1dGVJbnRy
aW5zaWNEaW1lbnNpb24KIAogICAgIGludHJpbnNpY1JhdGlvID0gcm9vdEVsZW1lbnQtPnZpZXdC
b3goKS5zaXplKCk7CiAgICAgaWYgKGludHJpbnNpY1JhdGlvLmlzRW1wdHkoKSAmJiBpbnRyaW5z
aWNXaWR0aC5pc0ZpeGVkKCkgJiYgaW50cmluc2ljSGVpZ2h0LmlzRml4ZWQoKSkKLSAgICAgICAg
aW50cmluc2ljUmF0aW8gPSBGbG9hdFNpemUoaW50cmluc2ljV2lkdGguY2FsY0Zsb2F0VmFsdWUo
MCksIGludHJpbnNpY0hlaWdodC5jYWxjRmxvYXRWYWx1ZSgwKSk7CisgICAgICAgIGludHJpbnNp
Y1JhdGlvID0gRmxvYXRTaXplKGZsb2F0VmFsdWVGb3JMZW5ndGgoaW50cmluc2ljV2lkdGgsIDAp
LCBmbG9hdFZhbHVlRm9yTGVuZ3RoKGludHJpbnNpY0hlaWdodCwgMCkpOwogfQogCiBOYXRpdmVJ
bWFnZVB0ciBTVkdJbWFnZTo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKQpJbmRleDogU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkocmV2aXNpb24gMTExMTIwKQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTItMDMtMTcgIEpvZSBUaG9tYXMgIDxqb2V0
aG9tYXNAbW90b3JvbGEuY29tPgorCisgICAgICAgIG1vdmUgY2FsYypWYWx1ZSBmdW5jdGlvbnMg
b3V0IGZyb20gTGVuZ3RoIChhbmQgcGxhdGZvcm0pCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MDg5NworCisgICAgICAgIE1vdmluZyB0aGUgTGVuZ3Ro
IGNhbGMqVmFsdWUgZnVuY3Rpb25zIG91dCBmcm9tIExlbmd0aCBzdHJ1Y3R1cmUgYW5kIGFsc28g
ZnJvbSAvV2ViQ29yZS9wbGF0Zm9ybS8gZm9sZGVyLgorICAgICAgICBUaGlzIGhlbHBzIHRvIGF2
b2lkIHRoZSBsYXllcmluZyB2aW9sYXRpb24gd2hpbGUgbGVuZ3RoIGNhbGN1bGF0aW9uLiBPdGhl
cndpc2UgbGF5ZXIgdmlvbGF0aW9uIGNhbiBiZSBhdm9pZGVkIG9ubHkgYnkgYWRkaW5nIGEgdmly
dHVhbCBpbnRlcmZhY2UoYnVnIDI3MTYwKS4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvd2luL1dlYlBv
cHVwTWVudVdpbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBvcHVwTWVudTo6c2V0VXBQbGF0
Zm9ybURhdGEpOgorCiAyMDEyLTAzLTE2ICBTdGVwaGFuaWUgTGV3aXMgIDxzbGV3aXNAYXBwbGUu
Y29tPgogCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04
MTA2NQpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC93aW4v
V2ViUG9wdXBNZW51V2luLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L3dpbi9XZWJQb3B1cE1lbnVXaW4uY3BwCShyZXZpc2lvbiAxMTEx
MjApCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L3dpbi9XZWJQ
b3B1cE1lbnVXaW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVk
ZSAiUGxhdGZvcm1Qb3B1cE1lbnVEYXRhLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9Gb250Lmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0NvbnRleHQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0xl
bmd0aEZ1bmN0aW9ucy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVGV4dFJ1bi5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvUG9wdXBNZW51Q2xpZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Qb3B1cE1lbnVT
dHlsZS5oPgpAQCAtMTM1LDcgKzEzNiw3IEBAIHZvaWQgV2ViUG9wdXBNZW51OjpzZXRVcFBsYXRm
b3JtRGF0YShjb24KICAgICAgICAgaWYgKGl0ZW1TdHlsZS5pc1Zpc2libGUoKSkgewogICAgICAg
ICAgICAgaW50IHRleHRYID0gc3RkOjptYXgoMCwgZGF0YS5tX2NsaWVudFBhZGRpbmdMZWZ0IC0g
ZGF0YS5tX2NsaWVudEluc2V0TGVmdCk7CiAgICAgICAgICAgICBpZiAoUmVuZGVyVGhlbWU6OmRl
ZmF1bHRUaGVtZSgpLT5wb3B1cE9wdGlvblN1cHBvcnRzVGV4dEluZGVudCgpICYmIGl0ZW1TdHls
ZS50ZXh0RGlyZWN0aW9uKCkgPT0gTFRSKQotICAgICAgICAgICAgICAgIHRleHRYICs9IGl0ZW1T
dHlsZS50ZXh0SW5kZW50KCkuY2FsY01pblZhbHVlKGl0ZW1SZWN0LndpZHRoKCkpOworICAgICAg
ICAgICAgICAgIHRleHRYICs9IG1pbWludW1WYWx1ZUZvckxlbmd0aChpdGVtU3R5bGUudGV4dElu
ZGVudCgpLCBpdGVtUmVjdC53aWR0aCgpKTsKICAgICAgICAgICAgIGludCB0ZXh0WSA9IGl0ZW1S
ZWN0LnkoKSArIGl0ZW1Gb250LmZvbnRNZXRyaWNzKCkuYXNjZW50KCkgKyAoaXRlbVJlY3QuaGVp
Z2h0KCkgLSBpdGVtRm9udC5mb250TWV0cmljcygpLmhlaWdodCgpKSAvIDI7CiAKICAgICAgICAg
ICAgIG5vdFNlbGVjdGVkQmFja2luZ1N0b3JlQ29udGV4dC0+ZHJhd0JpZGlUZXh0KGl0ZW1Gb250
LCB0ZXh0UnVuLCBJbnRQb2ludCh0ZXh0WCwgdGV4dFkpKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>