<?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>109525</bug_id>
          
          <creation_ts>2013-02-11 17:14:34 -0800</creation_ts>
          <short_desc>Remove HTMLTokenTypes header (and split out AtomicHTMLToken.h from HTMLToken.h)</short_desc>
          <delta_ts>2013-02-12 15:15:44 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>107522</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Eric Seidel (no email)">eric</reporter>
          <assigned_to name="Eric Seidel (no email)">eric</assigned_to>
          <cc>abarth</cc>
    
    <cc>alancutter</cc>
    
    <cc>benjamin</cc>
    
    <cc>dbates</cc>
    
    <cc>dglazkov</cc>
    
    <cc>mithro</cc>
    
    <cc>ojan.autocc</cc>
    
    <cc>rego+ews</cc>
    
    <cc>tonyg</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>830360</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2013-02-11 17:14:34 -0800</bug_when>
    <thetext>Remove HTMLTokenTypes header (and split out AtomicHTMLToken.h from HTMLToken.h)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>830362</commentid>
    <comment_count>1</comment_count>
      <attachid>187733</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2013-02-11 17:15:52 -0800</bug_when>
    <thetext>Created attachment 187733
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>830370</commentid>
    <comment_count>2</comment_count>
      <attachid>187733</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-02-11 17:20:31 -0800</bug_when>
    <thetext>Comment on attachment 187733
Patch

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

&gt; Source/WebCore/html/parser/AtomicHTMLToken.h:179
&gt; +        default:
&gt; +            break;

We shouldn&apos;t need these default statements now that we&apos;ve unwound the templates.

&gt; Source/WebCore/html/parser/AtomicHTMLToken.h:221
&gt; +        default:
&gt; +            break;

ditto

&gt; Source/WebCore/html/parser/HTMLDocumentParser.cpp:171
&gt; +#if ENABLE(THREADED_HTML_PARSER)
&gt;      // NOTE: This pump should only ever emit buffered character tokens,
&gt;      // so ForceSynchronous vs. AllowYield should be meaningless.
&gt; -#if ENABLE(THREADED_HTML_PARSER)
&gt; -    if (m_tokenizer) {
&gt; -        ASSERT(!m_haveBackgroundParser);
&gt; -        pumpTokenizerIfPossible(ForceSynchronous);
&gt; -    }
&gt; -#else
&gt; -    pumpTokenizerIfPossible(ForceSynchronous);
&gt; +    if (!m_haveBackgroundParser)
&gt;  #endif
&gt; +        pumpTokenizerIfPossible(ForceSynchronous);

This diff is spurious.

&gt; Source/WebCore/html/parser/HTMLDocumentParser.cpp:392
&gt; -    ASSERT(m_tokenizer);
&gt; -    ASSERT(m_token);
&gt; +

As is this

&gt; Source/WebCore/html/parser/HTMLToken.h:111
&gt; +        ASSERT(m_type == HTMLToken::Uninitialized);

We shouldn&apos;t need the &quot;HTMLToken::&quot; prefix since we&apos;re inside this class.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>830681</commentid>
    <comment_count>3</comment_count>
      <attachid>187805</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2013-02-12 01:15:28 -0800</bug_when>
    <thetext>Created attachment 187805
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>830682</commentid>
    <comment_count>4</comment_count>
      <attachid>187806</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2013-02-12 01:20:57 -0800</bug_when>
    <thetext>Created attachment 187806
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>830684</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-12 01:28:02 -0800</bug_when>
    <thetext>Attachment 187806 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/GNUmakefile.list.am&apos;, u&apos;Source/WebCore/Target.pri&apos;, u&apos;Source/WebCore/WebCore.gypi&apos;, u&apos;Source/WebCore/WebCore.vcproj/WebCore.vcproj&apos;, u&apos;Source/WebCore/WebCore.vcxproj/WebCore.vcxproj&apos;, u&apos;Source/WebCore/WebCore.vcxproj/WebCore.vcxproj.filters&apos;, u&apos;Source/WebCore/WebCore.xcodeproj/project.pbxproj&apos;, u&apos;Source/WebCore/html/HTMLViewSourceDocument.cpp&apos;, u&apos;Source/WebCore/html/parser/AtomicHTMLToken.h&apos;, u&apos;Source/WebCore/html/parser/BackgroundHTMLParser.cpp&apos;, u&apos;Source/WebCore/html/parser/CompactHTMLToken.cpp&apos;, u&apos;Source/WebCore/html/parser/CompactHTMLToken.h&apos;, u&apos;Source/WebCore/html/parser/HTMLConstructionSite.cpp&apos;, u&apos;Source/WebCore/html/parser/HTMLDocumentParser.cpp&apos;, u&apos;Source/WebCore/html/parser/HTMLDocumentParser.h&apos;, u&apos;Source/WebCore/html/parser/HTMLMetaCharsetParser.cpp&apos;, u&apos;Source/WebCore/html/parser/HTMLPreloadScanner.cpp&apos;, u&apos;Source/WebCore/html/parser/HTMLSourceTracker.cpp&apos;, u&apos;Source/WebCore/html/parser/HTMLStackItem.h&apos;, u&apos;Source/WebCore/html/parser/HTMLToken.h&apos;, u&apos;Source/WebCore/html/parser/HTMLTokenTypes.h&apos;, u&apos;Source/WebCore/html/parser/HTMLTokenizer.cpp&apos;, u&apos;Source/WebCore/html/parser/HTMLTokenizer.h&apos;, u&apos;Source/WebCore/html/parser/HTMLTreeBuilder.cpp&apos;, u&apos;Source/WebCore/html/parser/HTMLViewSourceParser.cpp&apos;, u&apos;Source/WebCore/html/parser/TextDocumentParser.cpp&apos;, u&apos;Source/WebCore/html/parser/XSSAuditor.cpp&apos;]&quot; exit_code: 1
Source/WebCore/html/parser/HTMLConstructionSite.cpp:30:  Alphabetical sorting problem.  [build/include_order] [4]
Source/WebCore/html/parser/HTMLToken.h:69:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Total errors found: 2 in 27 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>830686</commentid>
    <comment_count>6</comment_count>
      <attachid>187806</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-02-12 01:29:35 -0800</bug_when>
    <thetext>Comment on attachment 187806
Patch

Attachment 187806 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/16513059</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>830688</commentid>
    <comment_count>7</comment_count>
      <attachid>187806</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-02-12 01:31:24 -0800</bug_when>
    <thetext>Comment on attachment 187806
Patch

Attachment 187806 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/16521056</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>830690</commentid>
    <comment_count>8</comment_count>
      <attachid>187806</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-02-12 01:32:47 -0800</bug_when>
    <thetext>Comment on attachment 187806
Patch

Attachment 187806 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/16520049</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>830695</commentid>
    <comment_count>9</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2013-02-12 01:38:48 -0800</bug_when>
    <thetext>I&apos;ll fix the build with THREADED_HTML_PARSER disabled tomorrow. :(  Sleep now.

Also, the style errors seem to be bogus, and that message seems to be ridiculously long.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>830707</commentid>
    <comment_count>10</comment_count>
      <attachid>187806</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-12 01:48:18 -0800</bug_when>
    <thetext>Comment on attachment 187806
Patch

Attachment 187806 did not pass cr-linux-debug-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/16513066</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>831042</commentid>
    <comment_count>11</comment_count>
      <attachid>187889</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2013-02-12 10:09:18 -0800</bug_when>
    <thetext>Created attachment 187889
Should compile now</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>831043</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-12 10:11:25 -0800</bug_when>
    <thetext>Attachment 187889 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/GNUmakefile.list.am&apos;, u&apos;Source/WebCore/Target.pri&apos;, u&apos;Source/WebCore/WebCore.gypi&apos;, u&apos;Source/WebCore/WebCore.vcproj/WebCore.vcproj&apos;, u&apos;Source/WebCore/WebCore.vcxproj/WebCore.vcxproj&apos;, u&apos;Source/WebCore/WebCore.vcxproj/WebCore.vcxproj.filters&apos;, u&apos;Source/WebCore/WebCore.xcodeproj/project.pbxproj&apos;, u&apos;Source/WebCore/html/HTMLViewSourceDocument.cpp&apos;, u&apos;Source/WebCore/html/parser/AtomicHTMLToken.h&apos;, u&apos;Source/WebCore/html/parser/BackgroundHTMLParser.cpp&apos;, u&apos;Source/WebCore/html/parser/CompactHTMLToken.cpp&apos;, u&apos;Source/WebCore/html/parser/CompactHTMLToken.h&apos;, u&apos;Source/WebCore/html/parser/HTMLConstructionSite.cpp&apos;, u&apos;Source/WebCore/html/parser/HTMLDocumentParser.cpp&apos;, u&apos;Source/WebCore/html/parser/HTMLDocumentParser.h&apos;, u&apos;Source/WebCore/html/parser/HTMLMetaCharsetParser.cpp&apos;, u&apos;Source/WebCore/html/parser/HTMLPreloadScanner.cpp&apos;, u&apos;Source/WebCore/html/parser/HTMLSourceTracker.cpp&apos;, u&apos;Source/WebCore/html/parser/HTMLStackItem.h&apos;, u&apos;Source/WebCore/html/parser/HTMLToken.h&apos;, u&apos;Source/WebCore/html/parser/HTMLTokenTypes.h&apos;, u&apos;Source/WebCore/html/parser/HTMLTokenizer.cpp&apos;, u&apos;Source/WebCore/html/parser/HTMLTokenizer.h&apos;, u&apos;Source/WebCore/html/parser/HTMLTreeBuilder.cpp&apos;, u&apos;Source/WebCore/html/parser/HTMLViewSourceParser.cpp&apos;, u&apos;Source/WebCore/html/parser/TextDocumentParser.cpp&apos;, u&apos;Source/WebCore/html/parser/XSSAuditor.cpp&apos;]&quot; exit_code: 1
Source/WebCore/html/parser/HTMLConstructionSite.cpp:30:  Alphabetical sorting problem.  [build/include_order] [4]
Source/WebCore/html/parser/HTMLToken.h:69:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Total errors found: 2 in 27 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>831045</commentid>
    <comment_count>13</comment_count>
      <attachid>187889</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-12 10:14:25 -0800</bug_when>
    <thetext>Comment on attachment 187889
Should compile now

Attachment 187889 did not pass cr-linux-debug-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/16517292</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>831048</commentid>
    <comment_count>14</comment_count>
      <attachid>187890</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2013-02-12 10:16:56 -0800</bug_when>
    <thetext>Created attachment 187890
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>831050</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-12 10:18:53 -0800</bug_when>
    <thetext>Attachment 187890 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/GNUmakefile.list.am&apos;, u&apos;Source/WebCore/Target.pri&apos;, u&apos;Source/WebCore/WebCore.gypi&apos;, u&apos;Source/WebCore/WebCore.vcproj/WebCore.vcproj&apos;, u&apos;Source/WebCore/WebCore.vcxproj/WebCore.vcxproj&apos;, u&apos;Source/WebCore/WebCore.vcxproj/WebCore.vcxproj.filters&apos;, u&apos;Source/WebCore/WebCore.xcodeproj/project.pbxproj&apos;, u&apos;Source/WebCore/html/HTMLViewSourceDocument.cpp&apos;, u&apos;Source/WebCore/html/parser/AtomicHTMLToken.h&apos;, u&apos;Source/WebCore/html/parser/BackgroundHTMLParser.cpp&apos;, u&apos;Source/WebCore/html/parser/CompactHTMLToken.cpp&apos;, u&apos;Source/WebCore/html/parser/CompactHTMLToken.h&apos;, u&apos;Source/WebCore/html/parser/HTMLConstructionSite.cpp&apos;, u&apos;Source/WebCore/html/parser/HTMLDocumentParser.cpp&apos;, u&apos;Source/WebCore/html/parser/HTMLDocumentParser.h&apos;, u&apos;Source/WebCore/html/parser/HTMLMetaCharsetParser.cpp&apos;, u&apos;Source/WebCore/html/parser/HTMLPreloadScanner.cpp&apos;, u&apos;Source/WebCore/html/parser/HTMLSourceTracker.cpp&apos;, u&apos;Source/WebCore/html/parser/HTMLStackItem.h&apos;, u&apos;Source/WebCore/html/parser/HTMLToken.h&apos;, u&apos;Source/WebCore/html/parser/HTMLTokenTypes.h&apos;, u&apos;Source/WebCore/html/parser/HTMLTokenizer.cpp&apos;, u&apos;Source/WebCore/html/parser/HTMLTokenizer.h&apos;, u&apos;Source/WebCore/html/parser/HTMLTreeBuilder.cpp&apos;, u&apos;Source/WebCore/html/parser/HTMLViewSourceParser.cpp&apos;, u&apos;Source/WebCore/html/parser/TextDocumentParser.cpp&apos;, u&apos;Source/WebCore/html/parser/XSSAuditor.cpp&apos;]&quot; exit_code: 1
Source/WebCore/html/parser/HTMLConstructionSite.cpp:30:  Alphabetical sorting problem.  [build/include_order] [4]
Source/WebCore/html/parser/HTMLToken.h:69:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Total errors found: 2 in 27 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>831074</commentid>
    <comment_count>16</comment_count>
      <attachid>187890</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-12 10:44:55 -0800</bug_when>
    <thetext>Comment on attachment 187890
Patch for landing

Clearing flags on attachment: 187890

Committed r142641: &lt;http://trac.webkit.org/changeset/142641&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>831075</commentid>
    <comment_count>17</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-12 10:45:00 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>831302</commentid>
    <comment_count>18</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2013-02-12 15:04:33 -0800</bug_when>
    <thetext>At lot of timeout right now on the bots. This patch could be the cause. Any idea?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>831326</commentid>
    <comment_count>19</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2013-02-12 15:15:44 -0800</bug_when>
    <thetext>(In reply to comment #18)
&gt; At lot of timeout right now on the bots. This patch could be the cause. Any idea?

Ignore me, wrong link.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>187733</attachid>
            <date>2013-02-11 17:15:52 -0800</date>
            <delta_ts>2013-02-12 01:15:25 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-109525-20130211171223.patch</filename>
            <type>text/plain</type>
            <size>101159</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQyNTUzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzM3Mjg5NWEyMjNkYzFl
YjIzY2ZlYWNlMzdiYTYxODNlNjFiZmFiZC4uMzRhNzBhZDBmZWM1YjQ5OWM0M2U2MzAyZDY2MmQ0
MmY3NWQwNWMyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDE3MiBAQAogMjAxMy0wMi0xMSAgRXJp
YyBTZWlkZWwgIDxlcmljQHdlYmtpdC5vcmc+CiAKKyAgICAgICAgUmVtb3ZlIEhUTUxUb2tlblR5
cGVzIGhlYWRlciAoYW5kIHNwbGl0IG91dCBBdG9taWNIVE1MVG9rZW4uaCBmcm9tIEhUTUxUb2tl
bi5oKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA5
NTI1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2Ug
bm8gbG9uZ2VyIG5lZWQgYSBzZXBhcmF0ZSBIVE1MVG9rZW5UeXBlcyBjbGFzcyBub3cgdGhhdCBO
RVdfWE1MIGlzIGdvbmUuCisgICAgICAgIEhvd2V2ZXIsIHRvIHJlbW92ZSBIVE1MVG9rZW5UeXBl
cywgSSBoYWQgdG8gc3BsaXQgQXRvbWljSFRNTFRva2VuLmggZnJvbQorICAgICAgICBIVE1MVG9r
ZW4uaCAodG8gZml4IGEgY2lyY3VsYXIgZGVwZW5kYW5jeSkuCisKKyAgICAgICAgVGhpcyBwYXRj
aCBoYXMgc29tZSB1bmludGVudGlvbmFsICh1bnJlbGF0ZWQpIGNoYW5nZXMgaW4gaXQgd2hpY2gg
SSBuZWVkIHRvCisgICAgICAgIHJlbW92ZSBiZWZvcmUgbGFuZGluZy4KKworICAgICAgICAqIEdO
VW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogVGFyZ2V0LnByaToKKyAgICAgICAgKiBXZWJD
b3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6CisgICAg
ICAgICogV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvajoKKyAgICAgICAgKiBXZWJDb3Jl
LnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnM6CisgICAgICAgICogV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGh0bWwvSFRNTFZpZXdTb3VyY2VEb2N1
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVmlld1NvdXJjZURvY3VtZW50OjphZGRT
b3VyY2UpOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0F0b21pY0hUTUxUb2tlbi5oOiBBZGRlZC4K
KyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoQXRvbWljSFRNTFRva2VuKToKKyAgICAgICAg
KFdlYkNvcmU6OkF0b21pY0hUTUxUb2tlbjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkF0
b21pY0hUTUxUb2tlbjo6Zm9yY2VRdWlya3MpOgorICAgICAgICAoV2ViQ29yZTo6QXRvbWljSFRN
TFRva2VuOjp0eXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkF0b21pY0hUTUxUb2tlbjo6bmFtZSk6
CisgICAgICAgIChXZWJDb3JlOjpBdG9taWNIVE1MVG9rZW46OnNldE5hbWUpOgorICAgICAgICAo
V2ViQ29yZTo6QXRvbWljSFRNTFRva2VuOjpzZWxmQ2xvc2luZyk6CisgICAgICAgIChXZWJDb3Jl
OjpBdG9taWNIVE1MVG9rZW46OmdldEF0dHJpYnV0ZUl0ZW0pOgorICAgICAgICAoV2ViQ29yZTo6
QXRvbWljSFRNTFRva2VuOjphdHRyaWJ1dGVzKToKKyAgICAgICAgKFdlYkNvcmU6OkF0b21pY0hU
TUxUb2tlbjo6Y2hhcmFjdGVycyk6CisgICAgICAgIChXZWJDb3JlOjpBdG9taWNIVE1MVG9rZW46
OmNoYXJhY3RlcnNMZW5ndGgpOgorICAgICAgICAoV2ViQ29yZTo6QXRvbWljSFRNTFRva2VuOjpp
c0FsbDhCaXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkF0b21pY0hUTUxUb2tlbjo6Y29tbWVu
dCk6CisgICAgICAgIChXZWJDb3JlOjpBdG9taWNIVE1MVG9rZW46OnB1YmxpY0lkZW50aWZpZXIp
OgorICAgICAgICAoV2ViQ29yZTo6QXRvbWljSFRNTFRva2VuOjpzeXN0ZW1JZGVudGlmaWVyKToK
KyAgICAgICAgKFdlYkNvcmU6OkF0b21pY0hUTUxUb2tlbjo6Y2xlYXJFeHRlcm5hbENoYXJhY3Rl
cnMpOgorICAgICAgICAoV2ViQ29yZTo6QXRvbWljSFRNTFRva2VuOjpBdG9taWNIVE1MVG9rZW4p
OgorICAgICAgICAoV2ViQ29yZTo6QXRvbWljSFRNTFRva2VuOjppbml0aWFsaXplQXR0cmlidXRl
cyk6CisgICAgICAgICogaHRtbC9wYXJzZXIvQmFja2dyb3VuZEhUTUxQYXJzZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6QmFja2dyb3VuZEhUTUxQYXJzZXI6OnNpbXVsYXRlVHJlZUJ1aWxkZXIp
OgorICAgICAgICAqIGh0bWwvcGFyc2VyL0NvbXBhY3RIVE1MVG9rZW4uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q29tcGFjdEhUTUxUb2tlbjo6Q29tcGFjdEhUTUxUb2tlbik6CisgICAgICAgICog
aHRtbC9wYXJzZXIvQ29tcGFjdEhUTUxUb2tlbi5oOgorICAgICAgICAoV2ViQ29yZTo6Q29tcGFj
dEhUTUxUb2tlbjo6dHlwZSk6CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTENvbnN0cnVjdGlv
blNpdGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTENvbnN0cnVjdGlvblNpdGU6Omluc2Vy
dERvY3R5cGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTENvbnN0cnVjdGlvblNpdGU6Omluc2Vy
dENvbW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTENvbnN0cnVjdGlvblNpdGU6Omluc2Vy
dENvbW1lbnRPbkRvY3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxDb25zdHJ1Y3Rpb25T
aXRlOjppbnNlcnRDb21tZW50T25IVE1MSHRtbEVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTENvbnN0cnVjdGlvblNpdGU6Omluc2VydFNlbGZDbG9zaW5nSFRNTEVsZW1lbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTENvbnN0cnVjdGlvblNpdGU6Omluc2VydEZvcmVpZ25FbGVtZW50
KToKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MRG9jdW1lbnRQYXJzZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTERvY3VtZW50UGFyc2VyOjpwcmVwYXJlVG9TdG9wUGFyc2luZyk6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MRG9jdW1lbnRQYXJzZXI6OnByb2Nlc3NQYXJzZWRDaHVua0Zy
b21CYWNrZ3JvdW5kUGFyc2VyKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxEb2N1bWVudFBhcnNl
cjo6cHVtcFRva2VuaXplcik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRG9jdW1lbnRQYXJzZXI6
OmNvbnN0cnVjdFRyZWVGcm9tSFRNTFRva2VuKToKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1M
RG9jdW1lbnRQYXJzZXIuaDoKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MTWV0YUNoYXJzZXRQ
YXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1ldGFDaGFyc2V0UGFyc2VyOjpjaGVj
a0Zvck1ldGFDaGFyc2V0KToKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MUHJlbG9hZFNjYW5u
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aXNTdGFydFRhZyk6CisgICAgICAgIChXZWJDb3Jl
Ojppc1N0YXJ0T3JFbmRUYWcpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFByZWxvYWRTY2FubmVy
Ojpwcm9jZXNzVG9rZW4pOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxTb3VyY2VUcmFja2Vy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTb3VyY2VUcmFja2VyOjpzdGFydCk6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MU291cmNlVHJhY2tlcjo6c291cmNlRm9yVG9rZW4pOgorICAgICAg
ICAqIGh0bWwvcGFyc2VyL0hUTUxTdGFja0l0ZW0uaDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxT
dGFja0l0ZW06OkhUTUxTdGFja0l0ZW0pOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxUb2tl
bi5oOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRva2VuOjpjbGVhcik6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MVG9rZW46OmlzVW5pbml0aWFsaXplZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
VG9rZW46OnR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRva2VuOjptYWtlRW5kT2ZGaWxl
KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUb2tlbjo6ZGF0YSk6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MVG9rZW46Om5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRva2VuOjphcHBlbmRU
b05hbWUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRva2VuOjpmb3JjZVF1aXJrcyk6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MVG9rZW46OnNldEZvcmNlUXVpcmtzKToKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxUb2tlbjo6YmVnaW5ET0NUWVBFKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUb2tl
bjo6cHVibGljSWRlbnRpZmllcik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVG9rZW46OnN5c3Rl
bUlkZW50aWZpZXIpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRva2VuOjpzZXRQdWJsaWNJZGVu
dGlmaWVyVG9FbXB0eVN0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVG9rZW46OnNldFN5
c3RlbUlkZW50aWZpZXJUb0VtcHR5U3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUb2tl
bjo6YXBwZW5kVG9QdWJsaWNJZGVudGlmaWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUb2tl
bjo6YXBwZW5kVG9TeXN0ZW1JZGVudGlmaWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUb2tl
bjo6c2VsZkNsb3NpbmcpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRva2VuOjpzZXRTZWxmQ2xv
c2luZyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVG9rZW46OmJlZ2luU3RhcnRUYWcpOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTFRva2VuOjpiZWdpbkVuZFRhZyk6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MVG9rZW46OmFkZE5ld0F0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVG9r
ZW46OmFwcGVuZFRvQXR0cmlidXRlTmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVG9rZW46
OmFwcGVuZFRvQXR0cmlidXRlVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRva2VuOjph
dHRyaWJ1dGVzKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUb2tlbjo6ZXJhc2VWYWx1ZU9mQXR0
cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUb2tlbjo6ZW5zdXJlSXNDaGFyYWN0ZXJU
b2tlbik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVG9rZW46OmNoYXJhY3RlcnMpOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTFRva2VuOjphcHBlbmRUb0NoYXJhY3Rlcik6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MVG9rZW46OmNvbW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRva2VuOjpi
ZWdpbkNvbW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRva2VuOjphcHBlbmRUb0NvbW1l
bnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRva2VuOjplcmFzZUNoYXJhY3RlcnMpOgorICAg
ICAgICAoSFRNTFRva2VuKToKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MVG9rZW5UeXBlcy5o
OiBSZW1vdmVkLgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxUb2tlbml6ZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6QXRvbWljSFRNTFRva2VuOjp1c2VzTmFtZSk6CisgICAgICAgIChXZWJD
b3JlOjpBdG9taWNIVE1MVG9rZW46OnVzZXNBdHRyaWJ1dGVzKToKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxUb2tlbml6ZXI6OmZsdXNoQnVmZmVyZWRFbmRUYWcpOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTFRva2VuaXplcjo6bmV4dFRva2VuKToKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MVG9r
ZW5pemVyLmg6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVG9rZW5pemVyOjpzYXZlRW5kVGFnTmFt
ZUlmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUb2tlbml6ZXI6OmhhdmVCdWZmZXJl
ZENoYXJhY3RlclRva2VuKToKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MVHJlZUJ1aWxkZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzVG9rZW4pOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzRG9jdHlwZVRva2VuKToK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0Zha2VTdGFydFRhZyk6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NGYWtlRW5kVGFnKToK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0Zha2VQRW5kVGFnSWZQ
SW5CdXR0b25TY29wZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6OnByb2Nl
c3NJc2luZGV4U3RhcnRUYWdGb3JJbkJvZHkpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NTdGFydFRhZ0ZvckluQm9keSk6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NUZW1wbGF0ZUVuZFRhZyk6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NDb2xncm91cEVuZFRh
Z0ZvckluQ29sdW1uR3JvdXApOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVyOjpw
cm9jZXNzU3RhcnRUYWdGb3JJblRhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVp
bGRlcjo6cHJvY2Vzc1N0YXJ0VGFnKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRl
cjo6cHJvY2Vzc0JvZHlFbmRUYWdGb3JJbkJvZHkpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRy
ZWVCdWlsZGVyOjpwcm9jZXNzQW55T3RoZXJFbmRUYWdGb3JJbkJvZHkpOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzRW5kVGFnRm9ySW5UYWJsZUJvZHkpOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzRW5kVGFnRm9ySW5Sb3cpOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzRW5kVGFnRm9ySW5DZWxs
KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0VuZFRhZ0Zvcklu
Qm9keSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NFbmRUYWdG
b3JJblRhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0Vu
ZFRhZyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NDb21tZW50
KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0NoYXJhY3Rlcik6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NFbmRPZkZpbGUpOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVyOjpkZWZhdWx0Rm9yQmVmb3JlSFRNTCk6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6OmRlZmF1bHRGb3JCZWZvcmVIZWFk
KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRlcjo6ZGVmYXVsdEZvckluSGVhZCk6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6OmRlZmF1bHRGb3JJbkhlYWROb3Nj
cmlwdCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6OmRlZmF1bHRGb3JBZnRl
ckhlYWQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzU3RhcnRU
YWdGb3JJbkhlYWQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNz
R2VuZXJpY1JDREFUQVN0YXJ0VGFnKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRl
cjo6cHJvY2Vzc0dlbmVyaWNSYXdUZXh0U3RhcnRUYWcpOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TFRyZWVCdWlsZGVyOjpwcm9jZXNzU2NyaXB0U3RhcnRUYWcpOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTFRyZWVCdWlsZGVyOjpzaG91bGRQcm9jZXNzVG9rZW5JbkZvcmVpZ25Db250ZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc1Rva2VuSW5Gb3JlaWduQ29u
dGVudCk6CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTFZpZXdTb3VyY2VQYXJzZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTFZpZXdTb3VyY2VQYXJzZXI6OnVwZGF0ZVRva2VuaXplclN0
YXRlKToKKyAgICAgICAgKiBodG1sL3BhcnNlci9UZXh0RG9jdW1lbnRQYXJzZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6VGV4dERvY3VtZW50UGFyc2VyOjppbnNlcnRGYWtlUHJlRWxlbWVudCk6
CisgICAgICAgICogaHRtbC9wYXJzZXIvWFNTQXVkaXRvci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpYU1NBdWRpdG9yOjpmaWx0ZXJUb2tlbik6CisgICAgICAgIChXZWJDb3JlOjpYU1NBdWRpdG9y
OjpmaWx0ZXJTY3JpcHRUb2tlbik6CisgICAgICAgIChXZWJDb3JlOjpYU1NBdWRpdG9yOjpmaWx0
ZXJPYmplY3RUb2tlbik6CisgICAgICAgIChXZWJDb3JlOjpYU1NBdWRpdG9yOjpmaWx0ZXJQYXJh
bVRva2VuKToKKyAgICAgICAgKFdlYkNvcmU6OlhTU0F1ZGl0b3I6OmZpbHRlckVtYmVkVG9rZW4p
OgorICAgICAgICAoV2ViQ29yZTo6WFNTQXVkaXRvcjo6ZmlsdGVyQXBwbGV0VG9rZW4pOgorICAg
ICAgICAoV2ViQ29yZTo6WFNTQXVkaXRvcjo6ZmlsdGVySWZyYW1lVG9rZW4pOgorICAgICAgICAo
V2ViQ29yZTo6WFNTQXVkaXRvcjo6ZmlsdGVyTWV0YVRva2VuKToKKyAgICAgICAgKFdlYkNvcmU6
OlhTU0F1ZGl0b3I6OmZpbHRlckJhc2VUb2tlbik6CisgICAgICAgIChXZWJDb3JlOjpYU1NBdWRp
dG9yOjpmaWx0ZXJGb3JtVG9rZW4pOgorCisyMDEzLTAyLTExICBFcmljIFNlaWRlbCAgPGVyaWNA
d2Via2l0Lm9yZz4KKwogICAgICAgICBGb2xkIEhUTUxUb2tlbml6ZXJTdGF0ZSBiYWNrIGludG8g
SFRNTFRva2VuaXplciBub3cgdGhhdCBNYXJrdXBUb2tlbml6ZXJCYXNlIGlzIFJGRwogICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA5NTAyCiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2ViQ29y
ZS9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IDJiOWIxYmUzZDRiNzQ3YTU4ZjZjYjAzMjMyZGFh
YjVjNDhhNzZlMGUuLjQ3ODdiYjNmMTg2NjJmNmYwZTZhZDBjMjI0ODNhMWVmNDBhN2JmZWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNl
L1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAtMzU2OCw2ICszNTY4LDcgQEAgd2ViY29y
ZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL01vbnRoSW5wdXRUeXBlLmggXAog
CVNvdXJjZS9XZWJDb3JlL2h0bWwvTnVtYmVySW5wdXRUeXBlLmNwcCBcCiAJU291cmNlL1dlYkNv
cmUvaHRtbC9OdW1iZXJJbnB1dFR5cGUuaCBcCisJU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIv
QXRvbWljSFRNTFRva2VuLmggXAogCVNvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0JhY2tncm91
bmRIVE1MSW5wdXRTdHJlYW0uY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9CYWNr
Z3JvdW5kSFRNTElucHV0U3RyZWFtLmggXAogCVNvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0Jh
Y2tncm91bmRIVE1MUGFyc2VyLmNwcCBcCkBAIC0zNjExLDcgKzM2MTIsNiBAQCB3ZWJjb3JlX3Nv
dXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxTb3VyY2VUcmFja2Vy
LmggXAogCVNvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxTdGFja0l0ZW0uaCBcCiAJU291
cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRva2VuLmggXAotCVNvdXJjZS9XZWJDb3JlL2h0
bWwvcGFyc2VyL0hUTUxUb2tlblR5cGVzLmggXAogCVNvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2Vy
L0hUTUxUb2tlbml6ZXIuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVG9r
ZW5pemVyLmggXAogCVNvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUcmVlQnVpbGRlci5j
cHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaSBiL1NvdXJjZS9XZWJD
b3JlL1RhcmdldC5wcmkKaW5kZXggOWFhZTE2YzcwN2UyZTFiYjFlMmMwMWRiN2ZmMDQ5MmMxZWE2
OTBiYS4uNzI5NWVhMzgxYzQyYjNhYTEzYTJiNTE3M2MyOWJkNzgxMzdkYmU0NyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQu
cHJpCkBAIC0xOTE2LDYgKzE5MTYsNyBAQCBIRUFERVJTICs9IFwKICAgICBodG1sL1RpbWVSYW5n
ZXMuaCBcCiAgICAgaHRtbC9UeXBlQWhlYWQuaCBcCiAgICAgaHRtbC9WYWxpZGl0eVN0YXRlLmgg
XAorICAgIGh0bWwvcGFyc2VyL0F0b21pY0hUTUxUb2tlbi5oIFwKICAgICBodG1sL3BhcnNlci9D
U1NQcmVsb2FkU2Nhbm5lci5oIFwKICAgICBodG1sL3BhcnNlci9Db21wYWN0SFRNTFRva2VuLmgg
XAogICAgIGh0bWwvcGFyc2VyL0hUTUxDb25zdHJ1Y3Rpb25TaXRlLmggXApAQCAtMTkzMSw3ICsx
OTMyLDYgQEAgSEVBREVSUyArPSBcCiAgICAgaHRtbC9wYXJzZXIvSFRNTFNjcmlwdFJ1bm5lci5o
IFwKICAgICBodG1sL3BhcnNlci9IVE1MU2NyaXB0UnVubmVySG9zdC5oIFwKICAgICBodG1sL3Bh
cnNlci9IVE1MVG9rZW4uaCBcCi0gICAgaHRtbC9wYXJzZXIvSFRNTFRva2VuVHlwZXMuaCBcCiAg
ICAgaHRtbC9wYXJzZXIvSFRNTFRva2VuaXplci5oIFwKICAgICBodG1sL3BhcnNlci9IVE1MVHJl
ZUJ1aWxkZXIuaCBcCiAgICAgaHRtbC9wYXJzZXIvSFRNTFZpZXdTb3VyY2VQYXJzZXIuaCBcCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLmd5cGkKaW5kZXggN2FhM2MwZTRhNGY3ODNhNDk1ZWU1MDZhODE0NDhhZWI5NmI1YmI0
NC4uYWY5NDY4ZjY0NzAyZWZlNDY1MjlhNTNjYzlkNGRkZWZkYzgzOTdmMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
Z3lwaQpAQCAtMzM1Niw2ICszMzU2LDcgQEAKICAgICAgICAgICAgICdodG1sL2NhbnZhcy9XZWJH
TFVuaWZvcm1Mb2NhdGlvbi5oJywKICAgICAgICAgICAgICdodG1sL2NhbnZhcy9XZWJHTFZlcnRl
eEFycmF5T2JqZWN0T0VTLmNwcCcsCiAgICAgICAgICAgICAnaHRtbC9jYW52YXMvV2ViR0xWZXJ0
ZXhBcnJheU9iamVjdE9FUy5oJywKKyAgICAgICAgICAgICdodG1sL3BhcnNlci9BdG9taWNIVE1M
VG9rZW4uaCcsCiAgICAgICAgICAgICAnaHRtbC9wYXJzZXIvQmFja2dyb3VuZEhUTUxQYXJzZXIu
Y3BwJywKICAgICAgICAgICAgICdodG1sL3BhcnNlci9CYWNrZ3JvdW5kSFRNTFBhcnNlci5oJywK
ICAgICAgICAgICAgICdodG1sL3BhcnNlci9CYWNrZ3JvdW5kSFRNTElucHV0U3RyZWFtLmNwcCcs
CkBAIC0zMzk4LDcgKzMzOTksNiBAQAogICAgICAgICAgICAgJ2h0bWwvcGFyc2VyL0hUTUxTb3Vy
Y2VUcmFja2VyLmgnLAogICAgICAgICAgICAgJ2h0bWwvcGFyc2VyL0hUTUxTdGFja0l0ZW0uaCcs
CiAgICAgICAgICAgICAnaHRtbC9wYXJzZXIvSFRNTFRva2VuLmgnLAotICAgICAgICAgICAgJ2h0
bWwvcGFyc2VyL0hUTUxUb2tlblR5cGVzLmgnLAogICAgICAgICAgICAgJ2h0bWwvcGFyc2VyL0hU
TUxUb2tlbml6ZXIuY3BwJywKICAgICAgICAgICAgICdodG1sL3BhcnNlci9IVE1MVG9rZW5pemVy
LmgnLAogICAgICAgICAgICAgJ2h0bWwvcGFyc2VyL0hUTUxUcmVlQnVpbGRlci5jcHAnLApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2ogYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagppbmRleCA5NmNlZDdk
YzllMmQ5ZTZmYzMwNjE4ZmViNzMyZTg1OTZiNGQ2NTc2Li40OTE1NDQwMzhhMGMyM2YxNjA4MmY0
MzY4OGM2YTY3NzMxM2NhYjAxIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZj
cHJvai9XZWJDb3JlLnZjcHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9X
ZWJDb3JlLnZjcHJvagpAQCAtNjQ4MDYsNiArNjQ4MDYsMTAgQEAKIAkJCQlOYW1lPSJwYXJzZXIi
CiAJCQkJPgogCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5caHRtbFxwYXJzZXJcQXRv
bWljSFRNTFRva2VuLmgiCisJCQkJCT4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKIAkJCQkJUmVs
YXRpdmVQYXRoPSIuLlxodG1sXHBhcnNlclxCYWNrZ3JvdW5kSFRNTElucHV0U3RyZWFtLmNwcCIK
IAkJCQkJPgogCQkJCTwvRmlsZT4KQEAgLTY0OTgyLDEwICs2NDk4Niw2IEBACiAJCQkJCT4KIAkJ
CQk8L0ZpbGU+CiAJCQkJPEZpbGUKLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxodG1sXHBhcnNlclxI
VE1MVG9rZW5UeXBlcy5oIgotCQkJCQk+Ci0JCQkJPC9GaWxlPgotCQkJCTxGaWxlCiAJCQkJCVJl
bGF0aXZlUGF0aD0iLi5caHRtbFxwYXJzZXJcSFRNTFRyZWVCdWlsZGVyLmNwcCIKIAkJCQkJPgog
CQkJCTwvRmlsZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9X
ZWJDb3JlLnZjeHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52
Y3hwcm9qCmluZGV4IDIxNDEyMzIxZmU1NTkwNWUwZWJkNTI0YmNmYmRlMGU2MjJiMTQ3ZDMuLjVk
MDM3ODg0OGEwZjM3M2NmNGMwZjEyM2IxM2JmZDc3MzQ4M2JlMzAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2oKKysrIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvagpAQCAtNzkyNSw2ICs3OTI1LDcg
QEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGh0bWxcVmFsaWRpdHlTdGF0ZS5oIiAvPgog
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caHRtbFxWb2lkQ2FsbGJhY2suaCIgLz4KICAgICA8
Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGh0bWxcV2Vla0lucHV0VHlwZS5oIiAvPgorICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iLi5caHRtbFxwYXJzZXJcQXRvbWljSFRNTFRva2VuLmgiIC8+CiAgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlxodG1sXHBhcnNlclxCYWNrZ3JvdW5kSFRNTFBhcnNlci5o
IiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caHRtbFxwYXJzZXJcQ29tcGFjdEhUTUxU
b2tlbi5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caHRtbFxwYXJzZXJcQ1NTUHJl
bG9hZFNjYW5uZXIuaCIgLz4KQEAgLTc5NDgsNyArNzk0OSw2IEBACiAgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSIuLlxodG1sXHBhcnNlclxIVE1MU3RhY2tJdGVtLmgiIC8+CiAgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIuLlxodG1sXHBhcnNlclxIVE1MVG9rZW4uaCIgLz4KICAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9Ii4uXGh0bWxccGFyc2VyXEhUTUxUb2tlbml6ZXIuaCIgLz4KLSAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9Ii4uXGh0bWxccGFyc2VyXEhUTUxUb2tlblR5cGVzLmgiIC8+CiAgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIuLlxodG1sXHBhcnNlclxIVE1MVHJlZUJ1aWxkZXIuaCIgLz4KICAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGh0bWxccGFyc2VyXEhUTUxWaWV3U291cmNlUGFyc2Vy
LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxodG1sXHBhcnNlclxJbnB1dFN0cmVh
bVByZXByb2Nlc3Nvci5oIiAvPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52
Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52
Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzCmluZGV4IGI2NzJjN2M4ZmM0Y2M1ZmZjN2Vm
ZjE4OTA2Y2ZiNzg1ZDI3NzM3NzguLjk2Nzk2NTg4NTRlOTNiZmE2ZDAxNjYyMjMyYjEwNTQxMmFm
ODJiN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3Jl
LnZjeHByb2ouZmlsdGVycworKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2Vi
Q29yZS52Y3hwcm9qLmZpbHRlcnMKQEAgLTEyNTMxLDYgKzEyNTMxLDkgQEAKICAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9Ii4uXGh0bWxcV2Vla0lucHV0VHlwZS5oIj4KICAgICAgIDxGaWx0ZXI+aHRt
bDwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
aHRtbFxwYXJzZXJcQXRvbWljSFRNTFRva2VuLmgiPgorICAgICAgPEZpbHRlcj5odG1sXHBhcnNl
cjwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
aHRtbFxwYXJzZXJcQmFja2dyb3VuZEhUTUxQYXJzZXIuaCI+CiAgICAgICA8RmlsdGVyPmh0bWxc
cGFyc2VyPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CkBAIC0xMjU5Nyw5ICsxMjYwMCw2IEBA
CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxodG1sXHBhcnNlclxIVE1MVG9rZW5pemVyLmgi
PgogICAgICAgPEZpbHRlcj5odG1sXHBhcnNlcjwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgot
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caHRtbFxwYXJzZXJcSFRNTFRva2VuVHlwZXMuaCI+
Ci0gICAgICA8RmlsdGVyPmh0bWxccGFyc2VyPC9GaWx0ZXI+Ci0gICAgPC9DbEluY2x1ZGU+CiAg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxodG1sXHBhcnNlclxIVE1MVHJlZUJ1aWxkZXIuaCI+
CiAgICAgICA8RmlsdGVyPmh0bWxccGFyc2VyPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5k
ZXggNWFjNTdiYmY1MWEwZmQyNzNmMjY1ZDEwOTcxZTI1NDIzOTM2MTUwOS4uZTRkYjA1MWJlMDM2
YTZiZjVmNzZiYjMyOWM5YTg5NWFjMzRkYjM1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTEyMTgsNyArMTEyMTgsNyBAQAog
CQk5N0MwNzg0RjExNjVENUJFMDAzQTMyRUYgLyogU3VmZml4VHJlZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBTdWZmaXhUcmVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTk3QzFGNTUyMTIyODU1Q0IwMEVERTYxNSAvKiBIVE1MU3RhY2tJdGVtLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEhUTUxTdGFja0l0ZW0uaDsgcGF0aCA9IHBhcnNl
ci9IVE1MU3RhY2tJdGVtLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk3QzFGNTUy
MTIyODU1Q0IwMEVERTYxNiAvKiBIVE1MVG9rZW4uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBuYW1lID0gSFRNTFRva2VuLmg7IHBhdGggPSBwYXJzZXIvSFRNTFRva2VuLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTk3QzFGNTUyMTIyODU1Q0IwMEVERTYxNyAvKiBIVE1MVG9r
ZW5UeXBlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBIVE1MVG9rZW5UeXBl
cy5oOyBwYXRoID0gcGFyc2VyL0hUTUxUb2tlblR5cGVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTk3QzFGNTUyMTIyODU1Q0IwMEVERTYxNyAvKiBBdG9taWNIVE1MVG9rZW4uaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQXRvbWljSFRNTFRva2VuLmg7IHBhdGgg
PSBwYXJzZXIvQXRvbWljSFRNTFRva2VuLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTk3QzQ3MUQ5MTJGOTI1QkMwMDg2MzU0QiAvKiBDb250ZW50U2VjdXJpdHlQb2xpY3kuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ29udGVudFNlY3VyaXR5UG9saWN5
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTdDNDcxREExMkY5MjVCRDAwODYz
NTRCIC8qIENvbnRlbnRTZWN1cml0eVBvbGljeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBDb250ZW50U2VjdXJpdHlQb2xpY3kuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJOTdDNzQwMTIxNjAzRjdBMTAwMTFGRjJEIC8qIEZlYXR1cmVPYnNlcnZlci5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGZWF0dXJlT2JzZXJ2ZXIuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTg3MzgsNyArMTg3MzgsNyBAQAogCQkJCTk3
QzFGNTUyMTIyODU1Q0IwMEVERTYxNiAvKiBIVE1MVG9rZW4uaCAqLywKIAkJCQk5NzdCMzg1RTEy
Mjg4M0U5MDBCODFGRjggLyogSFRNTFRva2VuaXplci5jcHAgKi8sCiAJCQkJOTc3QjM4NUYxMjI4
ODNFOTAwQjgxRkY4IC8qIEhUTUxUb2tlbml6ZXIuaCAqLywKLQkJCQk5N0MxRjU1MjEyMjg1NUNC
MDBFREU2MTcgLyogSFRNTFRva2VuVHlwZXMuaCAqLywKKwkJCQk5N0MxRjU1MjEyMjg1NUNCMDBF
REU2MTcgLyogQXRvbWljSFRNTFRva2VuLmggKi8sCiAJCQkJOTc3QjM3MjExMjI4NzIxNzAwQjgx
RkY4IC8qIEhUTUxUcmVlQnVpbGRlci5jcHAgKi8sCiAJCQkJOTc3QjM3MjIxMjI4NzIxNzAwQjgx
RkY4IC8qIEhUTUxUcmVlQnVpbGRlci5oICovLAogCQkJCTk3N0IzODYwMTIyODgzRTkwMEI4MUZG
OCAvKiBIVE1MVmlld1NvdXJjZVBhcnNlci5jcHAgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxWaWV3U291cmNlRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MVmlld1NvdXJjZURvY3VtZW50LmNwcAppbmRleCBhYmYyNDM4MzZkM2I3MzQwZWJkMTM4
ZDA2MzNiYjUwMmFiYTg5OTQyLi5iN2ZkYjM2Y2JjOTUzNzRhYWE4MGI1MzAwZDliZTNkYWIwNDk2
MzI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWV3U291cmNlRG9jdW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZXdTb3VyY2VEb2N1bWVudC5j
cHAKQEAgLTk5LDI0ICs5OSwyNCBAQCB2b2lkIEhUTUxWaWV3U291cmNlRG9jdW1lbnQ6OmFkZFNv
dXJjZShjb25zdCBTdHJpbmcmIHNvdXJjZSwgSFRNTFRva2VuJiB0b2tlbikKICAgICAgICAgY3Jl
YXRlQ29udGFpbmluZ1RhYmxlKCk7CiAKICAgICBzd2l0Y2ggKHRva2VuLnR5cGUoKSkgewotICAg
IGNhc2UgSFRNTFRva2VuVHlwZXM6OlVuaW5pdGlhbGl6ZWQ6CisgICAgY2FzZSBIVE1MVG9rZW46
OlVuaW5pdGlhbGl6ZWQ6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICBi
cmVhazsKLSAgICBjYXNlIEhUTUxUb2tlblR5cGVzOjpET0NUWVBFOgorICAgIGNhc2UgSFRNTFRv
a2VuOjpET0NUWVBFOgogICAgICAgICBwcm9jZXNzRG9jdHlwZVRva2VuKHNvdXJjZSwgdG9rZW4p
OwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEhUTUxUb2tlblR5cGVzOjpFbmRPZkZpbGU6Cisg
ICAgY2FzZSBIVE1MVG9rZW46OkVuZE9mRmlsZToKICAgICAgICAgaWYgKCFtX3Rib2R5LT5oYXND
aGlsZE5vZGVzKCkpCiAgICAgICAgICAgICBhZGRMaW5lKFN0cmluZygpKTsKICAgICAgICAgYnJl
YWs7Ci0gICAgY2FzZSBIVE1MVG9rZW5UeXBlczo6U3RhcnRUYWc6Ci0gICAgY2FzZSBIVE1MVG9r
ZW5UeXBlczo6RW5kVGFnOgorICAgIGNhc2UgSFRNTFRva2VuOjpTdGFydFRhZzoKKyAgICBjYXNl
IEhUTUxUb2tlbjo6RW5kVGFnOgogICAgICAgICBwcm9jZXNzVGFnVG9rZW4oc291cmNlLCB0b2tl
bik7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgSFRNTFRva2VuVHlwZXM6OkNvbW1lbnQ6Cisg
ICAgY2FzZSBIVE1MVG9rZW46OkNvbW1lbnQ6CiAgICAgICAgIHByb2Nlc3NDb21tZW50VG9rZW4o
c291cmNlLCB0b2tlbik7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgSFRNTFRva2VuVHlwZXM6
OkNoYXJhY3RlcjoKKyAgICBjYXNlIEhUTUxUb2tlbjo6Q2hhcmFjdGVyOgogICAgICAgICBwcm9j
ZXNzQ2hhcmFjdGVyVG9rZW4oc291cmNlLCB0b2tlbik7CiAgICAgICAgIGJyZWFrOwogICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0F0b21pY0hUTUxUb2tlbi5o
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQXRvbWljSFRNTFRva2VuLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uODhhNTA1NTVjODY5NmVkZDE2ODE2NDRjMGJlMTc0YzhiODRlNzJhOQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0F0b21pY0hUTUxUb2tlbi5oCkBAIC0w
LDAgKzEsMzEzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSwgSW5jLiBBbGwg
UmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisg
Ki8KKworI2lmbmRlZiBBdG9taWNIVE1MVG9rZW5faAorI2RlZmluZSBBdG9taWNIVE1MVG9rZW5f
aAorCisjaW5jbHVkZSAiQXR0cmlidXRlLmgiCisjaW5jbHVkZSAiQ29tcGFjdEhUTUxUb2tlbi5o
IgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEF0b21pY0hUTUxUb2tlbiA6IHB1YmxpYyBS
ZWZDb3VudGVkPEF0b21pY0hUTUxUb2tlbj4geworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEF0
b21pY0hUTUxUb2tlbik7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8QXRvbWljSFRN
TFRva2VuPiBjcmVhdGUoSFRNTFRva2VuJiB0b2tlbikKKyAgICB7CisgICAgICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgQXRvbWljSFRNTFRva2VuKHRva2VuKSk7CisgICAgfQorCisjaWYgRU5BQkxF
KFRIUkVBREVEX0hUTUxfUEFSU0VSKQorCisgICAgc3RhdGljIFBhc3NSZWZQdHI8QXRvbWljSFRN
TFRva2VuPiBjcmVhdGUoY29uc3QgQ29tcGFjdEhUTUxUb2tlbiYgdG9rZW4pCisgICAgeworICAg
ICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEF0b21pY0hUTUxUb2tlbih0b2tlbikpOworICAgIH0K
KworI2VuZGlmCisKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxBdG9taWNIVE1MVG9rZW4+IGNyZWF0
ZShIVE1MVG9rZW46OlR5cGUgdHlwZSwgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBjb25zdCBW
ZWN0b3I8QXR0cmlidXRlPiYgYXR0cmlidXRlcyA9IFZlY3RvcjxBdHRyaWJ1dGU+KCkpCisgICAg
eworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEF0b21pY0hUTUxUb2tlbih0eXBlLCBuYW1l
LCBhdHRyaWJ1dGVzKSk7CisgICAgfQorCisgICAgYm9vbCBmb3JjZVF1aXJrcygpIGNvbnN0Cisg
ICAgeworICAgICAgICBBU1NFUlQobV90eXBlID09IEhUTUxUb2tlbjo6RE9DVFlQRSk7CisgICAg
ICAgIHJldHVybiBtX2RvY3R5cGVEYXRhLT5tX2ZvcmNlUXVpcmtzOworICAgIH0KKworICAgIEhU
TUxUb2tlbjo6VHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9CisKKyAgICBjb25z
dCBBdG9taWNTdHJpbmcmIG5hbWUoKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKHVzZXNO
YW1lKCkpOworICAgICAgICByZXR1cm4gbV9uYW1lOworICAgIH0KKworICAgIHZvaWQgc2V0TmFt
ZShjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpCisgICAgeworICAgICAgICBBU1NFUlQodXNlc05h
bWUoKSk7CisgICAgICAgIG1fbmFtZSA9IG5hbWU7CisgICAgfQorCisgICAgYm9vbCBzZWxmQ2xv
c2luZygpIGNvbnN0CisgICAgeworICAgICAgICBBU1NFUlQobV90eXBlID09IEhUTUxUb2tlbjo6
U3RhcnRUYWcgfHwgbV90eXBlID09IEhUTUxUb2tlbjo6RW5kVGFnKTsKKyAgICAgICAgcmV0dXJu
IG1fc2VsZkNsb3Npbmc7CisgICAgfQorCisgICAgQXR0cmlidXRlKiBnZXRBdHRyaWJ1dGVJdGVt
KGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUpCisgICAgeworICAgICAgICBBU1NF
UlQodXNlc0F0dHJpYnV0ZXMoKSk7CisgICAgICAgIHJldHVybiBmaW5kQXR0cmlidXRlSW5WZWN0
b3IobV9hdHRyaWJ1dGVzLCBhdHRyaWJ1dGVOYW1lKTsKKyAgICB9CisKKyAgICBWZWN0b3I8QXR0
cmlidXRlPiYgYXR0cmlidXRlcygpCisgICAgeworICAgICAgICBBU1NFUlQodXNlc0F0dHJpYnV0
ZXMoKSk7CisgICAgICAgIHJldHVybiBtX2F0dHJpYnV0ZXM7CisgICAgfQorCisgICAgY29uc3Qg
VmVjdG9yPEF0dHJpYnV0ZT4mIGF0dHJpYnV0ZXMoKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNT
RVJUKHVzZXNBdHRyaWJ1dGVzKCkpOworICAgICAgICByZXR1cm4gbV9hdHRyaWJ1dGVzOworICAg
IH0KKworICAgIGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzKCkgY29uc3QKKyAgICB7CisgICAgICAg
IEFTU0VSVChtX3R5cGUgPT0gSFRNTFRva2VuOjpDaGFyYWN0ZXIpOworICAgICAgICByZXR1cm4g
bV9leHRlcm5hbENoYXJhY3RlcnM7CisgICAgfQorCisgICAgc2l6ZV90IGNoYXJhY3RlcnNMZW5n
dGgoKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBIVE1MVG9rZW46OkNo
YXJhY3Rlcik7CisgICAgICAgIHJldHVybiBtX2V4dGVybmFsQ2hhcmFjdGVyc0xlbmd0aDsKKyAg
ICB9CisKKyAgICBib29sIGlzQWxsOEJpdERhdGEoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0
dXJuIG1faXNBbGw4Qml0RGF0YTsKKyAgICB9CisKKyAgICBjb25zdCBTdHJpbmcmIGNvbW1lbnQo
KSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBIVE1MVG9rZW46OkNvbW1l
bnQpOworICAgICAgICByZXR1cm4gbV9kYXRhOworICAgIH0KKworICAgIC8vIEZJWE1FOiBEaXN0
aW5ndWlzaCBiZXR3ZWVuIGEgbWlzc2luZyBwdWJsaWMgaWRlbnRpZmVyIGFuZCBhbiBlbXB0eSBv
bmUuCisgICAgV1RGOjpWZWN0b3I8VUNoYXI+JiBwdWJsaWNJZGVudGlmaWVyKCkgY29uc3QKKyAg
ICB7CisgICAgICAgIEFTU0VSVChtX3R5cGUgPT0gSFRNTFRva2VuOjpET0NUWVBFKTsKKyAgICAg
ICAgcmV0dXJuIG1fZG9jdHlwZURhdGEtPm1fcHVibGljSWRlbnRpZmllcjsKKyAgICB9CisKKyAg
ICAvLyBGSVhNRTogRGlzdGluZ3Vpc2ggYmV0d2VlbiBhIG1pc3Npbmcgc3lzdGVtIGlkZW50aWZl
ciBhbmQgYW4gZW1wdHkgb25lLgorICAgIFdURjo6VmVjdG9yPFVDaGFyPiYgc3lzdGVtSWRlbnRp
ZmllcigpIGNvbnN0CisgICAgeworICAgICAgICBBU1NFUlQobV90eXBlID09IEhUTUxUb2tlbjo6
RE9DVFlQRSk7CisgICAgICAgIHJldHVybiBtX2RvY3R5cGVEYXRhLT5tX3N5c3RlbUlkZW50aWZp
ZXI7CisgICAgfQorCisgICAgdm9pZCBjbGVhckV4dGVybmFsQ2hhcmFjdGVycygpCisgICAgewor
ICAgICAgICBtX2V4dGVybmFsQ2hhcmFjdGVycyA9IDA7CisgICAgICAgIG1fZXh0ZXJuYWxDaGFy
YWN0ZXJzTGVuZ3RoID0gMDsKKyAgICAgICAgbV9pc0FsbDhCaXREYXRhID0gZmFsc2U7CisgICAg
fQorCitwcml2YXRlOgorICAgIGV4cGxpY2l0IEF0b21pY0hUTUxUb2tlbihIVE1MVG9rZW4mIHRv
a2VuKQorICAgICAgICA6IG1fdHlwZSh0b2tlbi50eXBlKCkpCisgICAgeworICAgICAgICBzd2l0
Y2ggKG1fdHlwZSkgeworICAgICAgICBjYXNlIEhUTUxUb2tlbjo6VW5pbml0aWFsaXplZDoKKyAg
ICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIGNhc2UgSFRNTFRva2VuOjpET0NUWVBFOgorICAgICAgICAgICAgbV9uYW1lID0gQXRvbWlj
U3RyaW5nKHRva2VuLm5hbWVTdHJpbmcoKSk7CisgICAgICAgICAgICBtX2RvY3R5cGVEYXRhID0g
dG9rZW4ucmVsZWFzZURvY3R5cGVEYXRhKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
Y2FzZSBIVE1MVG9rZW46OkVuZE9mRmlsZToKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBj
YXNlIEhUTUxUb2tlbjo6U3RhcnRUYWc6CisgICAgICAgIGNhc2UgSFRNTFRva2VuOjpFbmRUYWc6
IHsKKyAgICAgICAgICAgIG1fc2VsZkNsb3NpbmcgPSB0b2tlbi5zZWxmQ2xvc2luZygpOworICAg
ICAgICAgICAgbV9uYW1lID0gQXRvbWljU3RyaW5nKHRva2VuLm5hbWVTdHJpbmcoKSk7CisgICAg
ICAgICAgICBpbml0aWFsaXplQXR0cmlidXRlcyh0b2tlbi5hdHRyaWJ1dGVzKCkpOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBIVE1MVG9rZW46OkNvbW1lbnQ6
CisgICAgICAgICAgICBpZiAodG9rZW4uaXNBbGw4Qml0RGF0YSgpKQorICAgICAgICAgICAgICAg
IG1fZGF0YSA9IFN0cmluZzo6bWFrZThCaXRGcm9tMTZCaXRTb3VyY2UodG9rZW4uY29tbWVudCgp
LmRhdGEoKSwgdG9rZW4uY29tbWVudCgpLnNpemUoKSk7CisgICAgICAgICAgICBlbHNlCisgICAg
ICAgICAgICAgICAgbV9kYXRhID0gU3RyaW5nKHRva2VuLmNvbW1lbnQoKS5kYXRhKCksIHRva2Vu
LmNvbW1lbnQoKS5zaXplKCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgSFRN
TFRva2VuOjpDaGFyYWN0ZXI6CisgICAgICAgICAgICBtX2V4dGVybmFsQ2hhcmFjdGVycyA9IHRv
a2VuLmNoYXJhY3RlcnMoKS5kYXRhKCk7CisgICAgICAgICAgICBtX2V4dGVybmFsQ2hhcmFjdGVy
c0xlbmd0aCA9IHRva2VuLmNoYXJhY3RlcnMoKS5zaXplKCk7CisgICAgICAgICAgICBtX2lzQWxs
OEJpdERhdGEgPSB0b2tlbi5pc0FsbDhCaXREYXRhKCk7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorCisj
aWYgRU5BQkxFKFRIUkVBREVEX0hUTUxfUEFSU0VSKQorCisgICAgZXhwbGljaXQgQXRvbWljSFRN
TFRva2VuKGNvbnN0IENvbXBhY3RIVE1MVG9rZW4mIHRva2VuKQorICAgICAgICA6IG1fdHlwZSh0
b2tlbi50eXBlKCkpCisgICAgeworICAgICAgICBzd2l0Y2ggKG1fdHlwZSkgeworICAgICAgICBj
YXNlIEhUTUxUb2tlbjo6VW5pbml0aWFsaXplZDoKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgSFRNTFRva2VuOjpET0NU
WVBFOgorICAgICAgICAgICAgbV9uYW1lID0gdG9rZW4uZGF0YSgpOworICAgICAgICAgICAgbV9k
b2N0eXBlRGF0YSA9IGFkb3B0UHRyKG5ldyBEb2N0eXBlRGF0YSgpKTsKKyAgICAgICAgICAgIG1f
ZG9jdHlwZURhdGEtPm1faGFzUHVibGljSWRlbnRpZmllciA9IHRydWU7CisgICAgICAgICAgICBt
X2RvY3R5cGVEYXRhLT5tX3B1YmxpY0lkZW50aWZpZXIuYXBwZW5kKHRva2VuLnB1YmxpY0lkZW50
aWZpZXIoKS5jaGFyYWN0ZXJzKCksIHRva2VuLnB1YmxpY0lkZW50aWZpZXIoKS5sZW5ndGgoKSk7
CisgICAgICAgICAgICBtX2RvY3R5cGVEYXRhLT5tX2hhc1N5c3RlbUlkZW50aWZpZXIgPSB0cnVl
OworICAgICAgICAgICAgbV9kb2N0eXBlRGF0YS0+bV9zeXN0ZW1JZGVudGlmaWVyLmFwcGVuZCh0
b2tlbi5zeXN0ZW1JZGVudGlmaWVyKCkuY2hhcmFjdGVycygpLCB0b2tlbi5zeXN0ZW1JZGVudGlm
aWVyKCkubGVuZ3RoKCkpOworICAgICAgICAgICAgbV9kb2N0eXBlRGF0YS0+bV9mb3JjZVF1aXJr
cyA9IHRva2VuLmRvY3R5cGVGb3JjZXNRdWlya3MoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICBjYXNlIEhUTUxUb2tlbjo6RW5kT2ZGaWxlOgorICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIGNhc2UgSFRNTFRva2VuOjpTdGFydFRhZzoKKyAgICAgICAgICAgIG1fYXR0cmlidXRlcy5y
ZXNlcnZlSW5pdGlhbENhcGFjaXR5KHRva2VuLmF0dHJpYnV0ZXMoKS5zaXplKCkpOworICAgICAg
ICAgICAgZm9yIChWZWN0b3I8Q29tcGFjdEF0dHJpYnV0ZT46OmNvbnN0X2l0ZXJhdG9yIGl0ID0g
dG9rZW4uYXR0cmlidXRlcygpLmJlZ2luKCk7IGl0ICE9IHRva2VuLmF0dHJpYnV0ZXMoKS5lbmQo
KTsgKytpdCkKKyAgICAgICAgICAgICAgICBtX2F0dHJpYnV0ZXMuYXBwZW5kKEF0dHJpYnV0ZShR
dWFsaWZpZWROYW1lKG51bGxBdG9tLCBpdC0+bmFtZSgpLCBudWxsQXRvbSksIGl0LT52YWx1ZSgp
KSk7CisgICAgICAgICAgICAvLyBGYWxsIHRocm91Z2ghCisgICAgICAgIGNhc2UgSFRNTFRva2Vu
OjpFbmRUYWc6CisgICAgICAgICAgICBtX3NlbGZDbG9zaW5nID0gdG9rZW4uc2VsZkNsb3Npbmco
KTsKKyAgICAgICAgICAgIG1fbmFtZSA9IEF0b21pY1N0cmluZyh0b2tlbi5kYXRhKCkpOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgSFRNTFRva2VuOjpDb21tZW50OgorICAgICAg
ICAgICAgbV9kYXRhID0gdG9rZW4uZGF0YSgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IGNhc2UgSFRNTFRva2VuOjpDaGFyYWN0ZXI6CisgICAgICAgICAgICBtX2V4dGVybmFsQ2hhcmFj
dGVycyA9IHRva2VuLmRhdGEoKS5jaGFyYWN0ZXJzKCk7CisgICAgICAgICAgICBtX2V4dGVybmFs
Q2hhcmFjdGVyc0xlbmd0aCA9IHRva2VuLmRhdGEoKS5sZW5ndGgoKTsKKyAgICAgICAgICAgIG1f
aXNBbGw4Qml0RGF0YSA9IHRva2VuLmlzQWxsOEJpdERhdGEoKTsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9
CisKKyNlbmRpZgorCisgICAgZXhwbGljaXQgQXRvbWljSFRNTFRva2VuKEhUTUxUb2tlbjo6VHlw
ZSB0eXBlKQorICAgICAgICA6IG1fdHlwZSh0eXBlKQorICAgICAgICAsIG1fZXh0ZXJuYWxDaGFy
YWN0ZXJzKDApCisgICAgICAgICwgbV9leHRlcm5hbENoYXJhY3RlcnNMZW5ndGgoMCkKKyAgICAg
ICAgLCBtX2lzQWxsOEJpdERhdGEoZmFsc2UpCisgICAgICAgICwgbV9zZWxmQ2xvc2luZyhmYWxz
ZSkKKyAgICB7CisgICAgfQorCisgICAgQXRvbWljSFRNTFRva2VuKEhUTUxUb2tlbjo6VHlwZSB0
eXBlLCBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIGNvbnN0IFZlY3RvcjxBdHRyaWJ1dGU+JiBh
dHRyaWJ1dGVzID0gVmVjdG9yPEF0dHJpYnV0ZT4oKSkKKyAgICAgICAgOiBtX3R5cGUodHlwZSkK
KyAgICAgICAgLCBtX25hbWUobmFtZSkKKyAgICAgICAgLCBtX2V4dGVybmFsQ2hhcmFjdGVycygw
KQorICAgICAgICAsIG1fZXh0ZXJuYWxDaGFyYWN0ZXJzTGVuZ3RoKDApCisgICAgICAgICwgbV9p
c0FsbDhCaXREYXRhKGZhbHNlKQorICAgICAgICAsIG1fc2VsZkNsb3NpbmcoZmFsc2UpCisgICAg
ICAgICwgbV9hdHRyaWJ1dGVzKGF0dHJpYnV0ZXMpCisgICAgeworICAgICAgICBBU1NFUlQodXNl
c05hbWUoKSk7CisgICAgfQorCisgICAgSFRNTFRva2VuOjpUeXBlIG1fdHlwZTsKKworICAgIHZv
aWQgaW5pdGlhbGl6ZUF0dHJpYnV0ZXMoY29uc3QgSFRNTFRva2VuOjpBdHRyaWJ1dGVMaXN0JiBh
dHRyaWJ1dGVzKTsKKyAgICBRdWFsaWZpZWROYW1lIG5hbWVGb3JBdHRyaWJ1dGUoY29uc3QgSFRN
TFRva2VuOjpBdHRyaWJ1dGUmKSBjb25zdDsKKworICAgIGJvb2wgdXNlc05hbWUoKSBjb25zdDsK
KworICAgIGJvb2wgdXNlc0F0dHJpYnV0ZXMoKSBjb25zdDsKKworICAgIC8vICJuYW1lIiBmb3Ig
RE9DVFlQRSwgU3RhcnRUYWcsIGFuZCBFbmRUYWcKKyAgICBBdG9taWNTdHJpbmcgbV9uYW1lOwor
CisgICAgLy8gImRhdGEiIGZvciBDb21tZW50CisgICAgU3RyaW5nIG1fZGF0YTsKKworICAgIC8v
ICJjaGFyYWN0ZXJzIiBmb3IgQ2hhcmFjdGVyCisgICAgLy8KKyAgICAvLyBXZSBkb24ndCB3YW50
IHRvIGNvcHkgdGhlIHRoZSBjaGFyYWN0ZXJzIG91dCBvZiB0aGUgVG9rZW4sIHNvIHdlCisgICAg
Ly8ga2VlcCBhIHBvaW50ZXIgdG8gaXRzIGJ1ZmZlciBpbnN0ZWFkLiBUaGlzIGJ1ZmZlciBpcyBv
d25lZCBieSB0aGUKKyAgICAvLyBUb2tlbiBhbmQgY2F1c2VzIGEgbGlmZXRpbWUgZGVwZW5kZW5j
ZSBiZXR3ZWVuIHRoZXNlIG9iamVjdHMuCisgICAgLy8KKyAgICAvLyBGSVhNRTogQWRkIGEgbWVj
aGFuaXNtIGZvciAiaW50ZXJuYWxpemluZyIgdGhlIGNoYXJhY3RlcnMgd2hlbiB0aGUKKyAgICAv
LyAgICAgICAgSFRNTFRva2VuIGlzIGRlc3RydWN0ZWQuCisgICAgY29uc3QgVUNoYXIqIG1fZXh0
ZXJuYWxDaGFyYWN0ZXJzOworICAgIHNpemVfdCBtX2V4dGVybmFsQ2hhcmFjdGVyc0xlbmd0aDsK
KyAgICBib29sIG1faXNBbGw4Qml0RGF0YTsKKworICAgIC8vIEZvciBET0NUWVBFCisgICAgT3du
UHRyPERvY3R5cGVEYXRhPiBtX2RvY3R5cGVEYXRhOworCisgICAgLy8gRm9yIFN0YXJ0VGFnIGFu
ZCBFbmRUYWcKKyAgICBib29sIG1fc2VsZkNsb3Npbmc7CisKKyAgICBWZWN0b3I8QXR0cmlidXRl
PiBtX2F0dHJpYnV0ZXM7Cit9OworCitpbmxpbmUgdm9pZCBBdG9taWNIVE1MVG9rZW46OmluaXRp
YWxpemVBdHRyaWJ1dGVzKGNvbnN0IEhUTUxUb2tlbjo6QXR0cmlidXRlTGlzdCYgYXR0cmlidXRl
cykKK3sKKyAgICBzaXplX3Qgc2l6ZSA9IGF0dHJpYnV0ZXMuc2l6ZSgpOworICAgIGlmICghc2l6
ZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9hdHRyaWJ1dGVzLmNsZWFyKCk7CisgICAgbV9h
dHRyaWJ1dGVzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoc2l6ZSk7CisgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBzaXplOyArK2kpIHsKKyAgICAgICAgY29uc3QgSFRNTFRva2VuOjpBdHRyaWJ1
dGUmIGF0dHJpYnV0ZSA9IGF0dHJpYnV0ZXNbaV07CisgICAgICAgIGlmIChhdHRyaWJ1dGUubV9u
YW1lLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIC8vIEZJWE1F
OiBXZSBzaG91bGQgYmUgYWJsZSB0byBhZGQgdGhlIGZvbGxvd2luZyBBU1NFUlQgb25jZSB3ZSBm
aXgKKyAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYy
OTcxCisgICAgICAgIC8vICAgQVNTRVJUKGF0dHJpYnV0ZS5tX25hbWVSYW5nZS5tX3N0YXJ0KTsK
KyAgICAgICAgQVNTRVJUKGF0dHJpYnV0ZS5tX25hbWVSYW5nZS5tX2VuZCk7CisgICAgICAgIEFT
U0VSVChhdHRyaWJ1dGUubV92YWx1ZVJhbmdlLm1fc3RhcnQpOworICAgICAgICBBU1NFUlQoYXR0
cmlidXRlLm1fdmFsdWVSYW5nZS5tX2VuZCk7CisKKyAgICAgICAgQXRvbWljU3RyaW5nIHZhbHVl
KGF0dHJpYnV0ZS5tX3ZhbHVlLmRhdGEoKSwgYXR0cmlidXRlLm1fdmFsdWUuc2l6ZSgpKTsKKyAg
ICAgICAgY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSA9IG5hbWVGb3JBdHRyaWJ1dGUoYXR0cmli
dXRlKTsKKyAgICAgICAgaWYgKCFmaW5kQXR0cmlidXRlSW5WZWN0b3IobV9hdHRyaWJ1dGVzLCBu
YW1lKSkKKyAgICAgICAgICAgIG1fYXR0cmlidXRlcy5hcHBlbmQoQXR0cmlidXRlKG5hbWUsIHZh
bHVlKSk7CisgICAgfQorfQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9wYXJzZXIvQmFja2dyb3VuZEhUTUxQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9wYXJzZXIvQmFja2dyb3VuZEhUTUxQYXJzZXIuY3BwCmluZGV4IDg2NzVkYjAwYTEzMzNi
ZDczNTgwNWI4ZTAzNzcyZWZlMTY5MDRmNWIuLjU3ODFhMzg3OGE0NjdkMWQwYzg4YjhlNjZhNGQ3
NzNlMzA4ZTQ5ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0JhY2tn
cm91bmRIVE1MUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9CYWNr
Z3JvdW5kSFRNTFBhcnNlci5jcHAKQEAgLTExMyw3ICsxMTMsNyBAQCB2b2lkIEJhY2tncm91bmRI
VE1MUGFyc2VyOjptYXJrRW5kT2ZGaWxlKCkKIAogYm9vbCBCYWNrZ3JvdW5kSFRNTFBhcnNlcjo6
c2ltdWxhdGVUcmVlQnVpbGRlcihjb25zdCBDb21wYWN0SFRNTFRva2VuJiB0b2tlbikKIHsKLSAg
ICBpZiAodG9rZW4udHlwZSgpID09IEhUTUxUb2tlblR5cGVzOjpTdGFydFRhZykgeworICAgIGlm
ICh0b2tlbi50eXBlKCkgPT0gSFRNTFRva2VuOjpTdGFydFRhZykgewogICAgICAgICBjb25zdCBT
dHJpbmcmIHRhZ05hbWUgPSB0b2tlbi5kYXRhKCk7CiAgICAgICAgIGlmICh0aHJlYWRTYWZlTWF0
Y2godGFnTmFtZSwgU1ZHTmFtZXM6OnN2Z1RhZykKICAgICAgICAgICAgIHx8IHRocmVhZFNhZmVN
YXRjaCh0YWdOYW1lLCBNYXRoTUxOYW1lczo6bWF0aFRhZykpCkBAIC0xMzUsNyArMTM1LDcgQEAg
Ym9vbCBCYWNrZ3JvdW5kSFRNTFBhcnNlcjo6c2ltdWxhdGVUcmVlQnVpbGRlcihjb25zdCBDb21w
YWN0SFRNTFRva2VuJiB0b2tlbikKICAgICAgICAgICAgIG1fdG9rZW5pemVyLT5zZXRTdGF0ZShI
VE1MVG9rZW5pemVyOjpSQVdURVhUU3RhdGUpOwogICAgIH0KIAotICAgIGlmICh0b2tlbi50eXBl
KCkgPT0gSFRNTFRva2VuVHlwZXM6OkVuZFRhZykgeworICAgIGlmICh0b2tlbi50eXBlKCkgPT0g
SFRNTFRva2VuOjpFbmRUYWcpIHsKICAgICAgICAgY29uc3QgU3RyaW5nJiB0YWdOYW1lID0gdG9r
ZW4uZGF0YSgpOwogICAgICAgICBpZiAodGhyZWFkU2FmZU1hdGNoKHRhZ05hbWUsIFNWR05hbWVz
OjpzdmdUYWcpIHx8IHRocmVhZFNhZmVNYXRjaCh0YWdOYW1lLCBNYXRoTUxOYW1lczo6bWF0aFRh
ZykpCiAgICAgICAgICAgICBtX2luRm9yZWlnbkNvbnRlbnQgPSBmYWxzZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0NvbXBhY3RIVE1MVG9rZW4uY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9wYXJzZXIvQ29tcGFjdEhUTUxUb2tlbi5jcHAKaW5kZXggOTJlNjEzNDkz
ODUyYmE2OWU5YTJhM2MxY2NkZmIyNDliYmIxZmFlNi4uMTY4OTEzMjEzYjRiNDYyOWQxNGRkNDU0
NjQ1ZTllYTI3NDc0YjU0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIv
Q29tcGFjdEhUTUxUb2tlbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQ29t
cGFjdEhUTUxUb2tlbi5jcHAKQEAgLTUxLDEwICs1MSwxMCBAQCBDb21wYWN0SFRNTFRva2VuOjpD
b21wYWN0SFRNTFRva2VuKGNvbnN0IEhUTUxUb2tlbiogdG9rZW4sIGNvbnN0IFRleHRQb3NpdGlv
biYgdAogICAgICwgbV90ZXh0UG9zaXRpb24odGV4dFBvc2l0aW9uKQogewogICAgIHN3aXRjaCAo
bV90eXBlKSB7Ci0gICAgY2FzZSBIVE1MVG9rZW5UeXBlczo6VW5pbml0aWFsaXplZDoKKyAgICBj
YXNlIEhUTUxUb2tlbjo6VW5pbml0aWFsaXplZDoKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgSFRNTFRva2VuVHlwZXM6OkRPQ1RZUEU6IHsK
KyAgICBjYXNlIEhUTUxUb2tlbjo6RE9DVFlQRTogewogICAgICAgICBtX2RhdGEgPSBTdHJpbmco
dG9rZW4tPm5hbWUoKS5kYXRhKCksIHRva2VuLT5uYW1lKCkuc2l6ZSgpKTsKICAgICAgICAgLy8g
VGhlcmUgaXMgb25seSAxIERPQ1RZUEUgdG9rZW4gcGVyIGRvY3VtZW50LCBzbyB0byBhdm9pZCBp
bmNyZWFzaW5nIHRoZQogICAgICAgICAvLyBzaXplIG9mIENvbXBhY3RIVE1MVG9rZW4sIHdlIGp1
c3QgdXNlIHRoZSBtX2F0dHJpYnV0ZXMgdmVjdG9yLgpAQCAtNjQsMTggKzY0LDE4IEBAIENvbXBh
Y3RIVE1MVG9rZW46OkNvbXBhY3RIVE1MVG9rZW4oY29uc3QgSFRNTFRva2VuKiB0b2tlbiwgY29u
c3QgVGV4dFBvc2l0aW9uJiB0CiAgICAgICAgIG1fZG9jdHlwZUZvcmNlc1F1aXJrcyA9IHRva2Vu
LT5mb3JjZVF1aXJrcygpOwogICAgICAgICBicmVhazsKICAgICB9Ci0gICAgY2FzZSBIVE1MVG9r
ZW5UeXBlczo6RW5kT2ZGaWxlOgorICAgIGNhc2UgSFRNTFRva2VuOjpFbmRPZkZpbGU6CiAgICAg
ICAgIGJyZWFrOwotICAgIGNhc2UgSFRNTFRva2VuVHlwZXM6OlN0YXJ0VGFnOgorICAgIGNhc2Ug
SFRNTFRva2VuOjpTdGFydFRhZzoKICAgICAgICAgbV9hdHRyaWJ1dGVzLnJlc2VydmVJbml0aWFs
Q2FwYWNpdHkodG9rZW4tPmF0dHJpYnV0ZXMoKS5zaXplKCkpOwogICAgICAgICBmb3IgKFZlY3Rv
cjxIVE1MVG9rZW46OkF0dHJpYnV0ZT46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gdG9rZW4tPmF0dHJp
YnV0ZXMoKS5iZWdpbigpOyBpdCAhPSB0b2tlbi0+YXR0cmlidXRlcygpLmVuZCgpOyArK2l0KQog
ICAgICAgICAgICAgbV9hdHRyaWJ1dGVzLmFwcGVuZChDb21wYWN0QXR0cmlidXRlKFN0cmluZyhp
dC0+bV9uYW1lLmRhdGEoKSwgaXQtPm1fbmFtZS5zaXplKCkpLCBTdHJpbmcoaXQtPm1fdmFsdWUu
ZGF0YSgpLCBpdC0+bV92YWx1ZS5zaXplKCkpKSk7CiAgICAgICAgIC8vIEZhbGwgdGhyb3VnaCEK
LSAgICBjYXNlIEhUTUxUb2tlblR5cGVzOjpFbmRUYWc6CisgICAgY2FzZSBIVE1MVG9rZW46OkVu
ZFRhZzoKICAgICAgICAgbV9zZWxmQ2xvc2luZyA9IHRva2VuLT5zZWxmQ2xvc2luZygpOwogICAg
ICAgICAvLyBGYWxsIHRocm91Z2ghCi0gICAgY2FzZSBIVE1MVG9rZW5UeXBlczo6Q29tbWVudDoK
LSAgICBjYXNlIEhUTUxUb2tlblR5cGVzOjpDaGFyYWN0ZXI6CisgICAgY2FzZSBIVE1MVG9rZW46
OkNvbW1lbnQ6CisgICAgY2FzZSBIVE1MVG9rZW46OkNoYXJhY3RlcjoKICAgICAgICAgaWYgKHRv
a2VuLT5pc0FsbDhCaXREYXRhKCkpIHsKICAgICAgICAgICAgIG1fZGF0YSA9IFN0cmluZzo6bWFr
ZThCaXRGcm9tMTZCaXRTb3VyY2UodG9rZW4tPmRhdGEoKS5kYXRhKCksIHRva2VuLT5kYXRhKCku
c2l6ZSgpKTsKICAgICAgICAgICAgIG1faXNBbGw4Qml0RGF0YSA9IHRydWU7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9Db21wYWN0SFRNTFRva2VuLmggYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3BhcnNlci9Db21wYWN0SFRNTFRva2VuLmgKaW5kZXggNmM5NWY2YTFjZWVh
YjY3OTQxOGU3MTMwNTk4M2M4ZmI5OTQzNzlmZS4uYjdjODU2OTA0NmI0ZDIxN2JiMGUzOWMyZWU5
MDZmMzA1MjYzZWI4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQ29t
cGFjdEhUTUxUb2tlbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0NvbXBhY3RI
VE1MVG9rZW4uaApAQCAtMjgsNyArMjgsNyBAQAogCiAjaWYgRU5BQkxFKFRIUkVBREVEX0hUTUxf
UEFSU0VSKQogCi0jaW5jbHVkZSAiSFRNTFRva2VuVHlwZXMuaCIKKyNpbmNsdWRlICJIVE1MVG9r
ZW4uaCIKICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIu
aD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgpAQCAtMzksNyArMzksNiBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIEhUTUxUb2tlbjsKIGNsYXNzIFhTU0luZm87CiAKIGNs
YXNzIENvbXBhY3RBdHRyaWJ1dGUgewpAQCAtNjUsNyArNjQsNyBAQCBwdWJsaWM6CiAKICAgICBi
b29sIGlzU2FmZVRvU2VuZFRvQW5vdGhlclRocmVhZCgpIGNvbnN0OwogCi0gICAgSFRNTFRva2Vu
VHlwZXM6OlR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEhUTUxUb2tlblR5
cGVzOjpUeXBlPihtX3R5cGUpOyB9CisgICAgSFRNTFRva2VuOjpUeXBlIHR5cGUoKSBjb25zdCB7
IHJldHVybiBzdGF0aWNfY2FzdDxIVE1MVG9rZW46OlR5cGU+KG1fdHlwZSk7IH0KICAgICBjb25z
dCBTdHJpbmcmIGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2RhdGE7IH0KICAgICBib29sIHNlbGZD
bG9zaW5nKCkgY29uc3QgeyByZXR1cm4gbV9zZWxmQ2xvc2luZzsgfQogICAgIGJvb2wgaXNBbGw4
Qml0RGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1faXNBbGw4Qml0RGF0YTsgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTENvbnN0cnVjdGlvblNpdGUuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTENvbnN0cnVjdGlvblNpdGUuY3BwCmluZGV4IDUx
ZWQzMmVkMjEzMThhZGRiNmEzY2FjYTI0Mzk2ZmNiOTVjNjk2NjguLmJlMWM1MzU0MzI5NTkwZjg5
YmMwODc4MWQ2ZDUwYmUzZmE1ZTBmZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
cGFyc2VyL0hUTUxDb25zdHJ1Y3Rpb25TaXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L3BhcnNlci9IVE1MQ29uc3RydWN0aW9uU2l0ZS5jcHAKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNs
dWRlICJjb25maWcuaCIKICNpbmNsdWRlICJIVE1MVHJlZUJ1aWxkZXIuaCIKIAorI2luY2x1ZGUg
IkF0b21pY0hUTUxUb2tlbi5oIgogI2luY2x1ZGUgIkNvbW1lbnQuaCIKICNpbmNsdWRlICJEb2N1
bWVudEZyYWdtZW50LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRUeXBlLmgiCkBAIC0zNDAsNyArMzQx
LDcgQEAgdm9pZCBIVE1MQ29uc3RydWN0aW9uU2l0ZTo6ZmluaXNoZWRQYXJzaW5nKCkKIAogdm9p
ZCBIVE1MQ29uc3RydWN0aW9uU2l0ZTo6aW5zZXJ0RG9jdHlwZShBdG9taWNIVE1MVG9rZW4qIHRv
a2VuKQogewotICAgIEFTU0VSVCh0b2tlbi0+dHlwZSgpID09IEhUTUxUb2tlblR5cGVzOjpET0NU
WVBFKTsKKyAgICBBU1NFUlQodG9rZW4tPnR5cGUoKSA9PSBIVE1MVG9rZW46OkRPQ1RZUEUpOwog
CiAgICAgY29uc3QgU3RyaW5nJiBwdWJsaWNJZCA9IFN0cmluZzo6YWRvcHQodG9rZW4tPnB1Ymxp
Y0lkZW50aWZpZXIoKSk7CiAgICAgY29uc3QgU3RyaW5nJiBzeXN0ZW1JZCA9IFN0cmluZzo6YWRv
cHQodG9rZW4tPnN5c3RlbUlkZW50aWZpZXIoKSk7CkBAIC0zNjUsMTkgKzM2NiwxOSBAQCB2b2lk
IEhUTUxDb25zdHJ1Y3Rpb25TaXRlOjppbnNlcnREb2N0eXBlKEF0b21pY0hUTUxUb2tlbiogdG9r
ZW4pCiAKIHZvaWQgSFRNTENvbnN0cnVjdGlvblNpdGU6Omluc2VydENvbW1lbnQoQXRvbWljSFRN
TFRva2VuKiB0b2tlbikKIHsKLSAgICBBU1NFUlQodG9rZW4tPnR5cGUoKSA9PSBIVE1MVG9rZW5U
eXBlczo6Q29tbWVudCk7CisgICAgQVNTRVJUKHRva2VuLT50eXBlKCkgPT0gSFRNTFRva2VuOjpD
b21tZW50KTsKICAgICBhdHRhY2hMYXRlcihjdXJyZW50Tm9kZSgpLCBDb21tZW50OjpjcmVhdGUo
b3duZXJEb2N1bWVudEZvckN1cnJlbnROb2RlKCksIHRva2VuLT5jb21tZW50KCkpKTsKIH0KIAog
dm9pZCBIVE1MQ29uc3RydWN0aW9uU2l0ZTo6aW5zZXJ0Q29tbWVudE9uRG9jdW1lbnQoQXRvbWlj
SFRNTFRva2VuKiB0b2tlbikKIHsKLSAgICBBU1NFUlQodG9rZW4tPnR5cGUoKSA9PSBIVE1MVG9r
ZW5UeXBlczo6Q29tbWVudCk7CisgICAgQVNTRVJUKHRva2VuLT50eXBlKCkgPT0gSFRNTFRva2Vu
OjpDb21tZW50KTsKICAgICBhdHRhY2hMYXRlcihtX2F0dGFjaG1lbnRSb290LCBDb21tZW50Ojpj
cmVhdGUobV9kb2N1bWVudCwgdG9rZW4tPmNvbW1lbnQoKSkpOwogfQogCiB2b2lkIEhUTUxDb25z
dHJ1Y3Rpb25TaXRlOjppbnNlcnRDb21tZW50T25IVE1MSHRtbEVsZW1lbnQoQXRvbWljSFRNTFRv
a2VuKiB0b2tlbikKIHsKLSAgICBBU1NFUlQodG9rZW4tPnR5cGUoKSA9PSBIVE1MVG9rZW5UeXBl
czo6Q29tbWVudCk7CisgICAgQVNTRVJUKHRva2VuLT50eXBlKCkgPT0gSFRNTFRva2VuOjpDb21t
ZW50KTsKICAgICBDb250YWluZXJOb2RlKiBwYXJlbnQgPSBtX29wZW5FbGVtZW50cy5yb290Tm9k
ZSgpOwogICAgIGF0dGFjaExhdGVyKHBhcmVudCwgQ29tbWVudDo6Y3JlYXRlKHBhcmVudC0+ZG9j
dW1lbnQoKSwgdG9rZW4tPmNvbW1lbnQoKSkpOwogfQpAQCAtNDE5LDcgKzQyMCw3IEBAIHZvaWQg
SFRNTENvbnN0cnVjdGlvblNpdGU6Omluc2VydEhUTUxFbGVtZW50KEF0b21pY0hUTUxUb2tlbiog
dG9rZW4pCiAKIHZvaWQgSFRNTENvbnN0cnVjdGlvblNpdGU6Omluc2VydFNlbGZDbG9zaW5nSFRN
TEVsZW1lbnQoQXRvbWljSFRNTFRva2VuKiB0b2tlbikKIHsKLSAgICBBU1NFUlQodG9rZW4tPnR5
cGUoKSA9PSBIVE1MVG9rZW5UeXBlczo6U3RhcnRUYWcpOworICAgIEFTU0VSVCh0b2tlbi0+dHlw
ZSgpID09IEhUTUxUb2tlbjo6U3RhcnRUYWcpOwogICAgIC8vIE5vcm1hbGx5IEhUTUxFbGVtZW50
U3RhY2sgaXMgcmVzcG9uc2libGUgZm9yIGNhbGxpbmcgZmluaXNoUGFyc2luZ0NoaWxkcmVuLAog
ICAgIC8vIGJ1dCBzZWxmLWNsb3NpbmcgZWxlbWVudHMgYXJlIG5ldmVyIGluIHRoZSBlbGVtZW50
IHN0YWNrIHNvIHRoZSBzdGFjawogICAgIC8vIGRvZXNuJ3QgZ2V0IGEgY2hhbmNlIHRvIHRlbGwg
dGhlbSB0aGF0IHdlJ3JlIGRvbmUgcGFyc2luZyB0aGVpciBjaGlsZHJlbi4KQEAgLTQ1NSw3ICs0
NTYsNyBAQCB2b2lkIEhUTUxDb25zdHJ1Y3Rpb25TaXRlOjppbnNlcnRTY3JpcHRFbGVtZW50KEF0
b21pY0hUTUxUb2tlbiogdG9rZW4pCiAKIHZvaWQgSFRNTENvbnN0cnVjdGlvblNpdGU6Omluc2Vy
dEZvcmVpZ25FbGVtZW50KEF0b21pY0hUTUxUb2tlbiogdG9rZW4sIGNvbnN0IEF0b21pY1N0cmlu
ZyYgbmFtZXNwYWNlVVJJKQogewotICAgIEFTU0VSVCh0b2tlbi0+dHlwZSgpID09IEhUTUxUb2tl
blR5cGVzOjpTdGFydFRhZyk7CisgICAgQVNTRVJUKHRva2VuLT50eXBlKCkgPT0gSFRNTFRva2Vu
OjpTdGFydFRhZyk7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsgLy8gcGFyc2VFcnJvciB3aGVuIHht
bG5zIG9yIHhtbG5zOnhsaW5rIGFyZSB3cm9uZy4KIAogICAgIFJlZlB0cjxFbGVtZW50PiBlbGVt
ZW50ID0gY3JlYXRlRWxlbWVudCh0b2tlbiwgbmFtZXNwYWNlVVJJKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRG9jdW1lbnRQYXJzZXIuY3BwCmluZGV4IDA5ODU0OGU2
MTJjZmJhNGNmNzZhMTZjMDM3Zjk2ZjExMzNiOGQ2NWMuLjUxZDgwYmU3MWM0MGM1MGNmZmIxYjJk
OWE4MzFiNDQyYmY1OWFhZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2Vy
L0hUTUxEb2N1bWVudFBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIv
SFRNTERvY3VtZW50UGFyc2VyLmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZp
Zy5oIgogI2luY2x1ZGUgIkhUTUxEb2N1bWVudFBhcnNlci5oIgogCisjaW5jbHVkZSAiQXRvbWlj
SFRNTFRva2VuLmgiCiAjaW5jbHVkZSAiQmFja2dyb3VuZEhUTUxQYXJzZXIuaCIKICNpbmNsdWRl
ICJDb21wYWN0SFRNTFRva2VuLmgiCiAjaW5jbHVkZSAiQ29udGVudFNlY3VyaXR5UG9saWN5Lmgi
CkBAIC0xNjIsMTYgKzE2MywxMiBAQCB2b2lkIEhUTUxEb2N1bWVudFBhcnNlcjo6cHJlcGFyZVRv
U3RvcFBhcnNpbmcoKQogICAgIC8vIGJ1dCB3ZSBuZWVkIHRvIGVuc3VyZSBpdCBpc24ndCBkZWxl
dGVkIHlldC4KICAgICBSZWZQdHI8SFRNTERvY3VtZW50UGFyc2VyPiBwcm90ZWN0KHRoaXMpOwog
CisjaWYgRU5BQkxFKFRIUkVBREVEX0hUTUxfUEFSU0VSKQogICAgIC8vIE5PVEU6IFRoaXMgcHVt
cCBzaG91bGQgb25seSBldmVyIGVtaXQgYnVmZmVyZWQgY2hhcmFjdGVyIHRva2VucywKICAgICAv
LyBzbyBGb3JjZVN5bmNocm9ub3VzIHZzLiBBbGxvd1lpZWxkIHNob3VsZCBiZSBtZWFuaW5nbGVz
cy4KLSNpZiBFTkFCTEUoVEhSRUFERURfSFRNTF9QQVJTRVIpCi0gICAgaWYgKG1fdG9rZW5pemVy
KSB7Ci0gICAgICAgIEFTU0VSVCghbV9oYXZlQmFja2dyb3VuZFBhcnNlcik7Ci0gICAgICAgIHB1
bXBUb2tlbml6ZXJJZlBvc3NpYmxlKEZvcmNlU3luY2hyb25vdXMpOwotICAgIH0KLSNlbHNlCi0g
ICAgcHVtcFRva2VuaXplcklmUG9zc2libGUoRm9yY2VTeW5jaHJvbm91cyk7CisgICAgaWYgKCFt
X2hhdmVCYWNrZ3JvdW5kUGFyc2VyKQogI2VuZGlmCisgICAgICAgIHB1bXBUb2tlbml6ZXJJZlBv
c3NpYmxlKEZvcmNlU3luY2hyb25vdXMpOwogCiAgICAgaWYgKGlzU3RvcHBlZCgpKQogICAgICAg
ICByZXR1cm47CkBAIC0zNDgsNyArMzQ1LDcgQEAgdm9pZCBIVE1MRG9jdW1lbnRQYXJzZXI6OnBy
b2Nlc3NQYXJzZWRDaHVua0Zyb21CYWNrZ3JvdW5kUGFyc2VyKFBhc3NPd25QdHI8UGFyc2UKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKGl0LT50eXBlKCkgPT0g
SFRNTFRva2VuVHlwZXM6OkVuZE9mRmlsZSkgeworICAgICAgICBpZiAoaXQtPnR5cGUoKSA9PSBI
VE1MVG9rZW46OkVuZE9mRmlsZSkgewogICAgICAgICAgICAgQVNTRVJUKGl0ICsgMSA9PSB0b2tl
bnMtPmVuZCgpKTsgLy8gVGhlIEVPRiBpcyBhc3N1bWVkIHRvIGJlIHRoZSBsYXN0IHRva2VuIG9m
IHRoaXMgYnVuY2guCiAgICAgICAgICAgICBwcmVwYXJlVG9TdG9wUGFyc2luZygpOwogICAgICAg
ICAgICAgYnJlYWs7CkBAIC0zOTIsOCArMzg5LDcgQEAgdm9pZCBIVE1MRG9jdW1lbnRQYXJzZXI6
OnB1bXBUb2tlbml6ZXIoU3luY2hyb25vdXNNb2RlIG1vZGUpCiAgICAgQVNTRVJUKCFpc1NjaGVk
dWxlZEZvclJlc3VtZSgpKTsKICAgICAvLyBBU1NFUlQgdGhhdCB0aGlzIG9iamVjdCBpcyBib3Ro
IGF0dGFjaGVkIHRvIHRoZSBEb2N1bWVudCBhbmQgcHJvdGVjdGVkLgogICAgIEFTU0VSVChyZWZD
b3VudCgpID49IDIpOwotICAgIEFTU0VSVChtX3Rva2VuaXplcik7Ci0gICAgQVNTRVJUKG1fdG9r
ZW4pOworCiAgICAgQVNTRVJUKCFzaG91bGRVc2VUaHJlYWRpbmcoKSB8fCBtb2RlID09IEZvcmNl
U3luY2hyb25vdXMpOwogCiAgICAgUHVtcFNlc3Npb24gc2Vzc2lvbihtX3B1bXBTZXNzaW9uTmVz
dGluZ0xldmVsLCBjb250ZXh0Rm9yUGFyc2luZ1Nlc3Npb24oKSk7CkBAIC00NjMsNyArNDU5LDcg
QEAgdm9pZCBIVE1MRG9jdW1lbnRQYXJzZXI6OmNvbnN0cnVjdFRyZWVGcm9tSFRNTFRva2VuKEhU
TUxUb2tlbiYgcmF3VG9rZW4pCiAgICAgLy8gRklYTUU6IFN0b3AgY2xlYXJpbmcgdGhlIHJhd1Rv
a2VuIG9uY2Ugd2Ugc3RhcnQgcnVubmluZyB0aGUgcGFyc2VyIG9mZgogICAgIC8vIHRoZSBtYWlu
IHRocmVhZCBvciBvbmNlIHdlIHN0b3AgYWxsb3dpbmcgc3luY2hyb25vdXMgSmF2YVNjcmlwdAog
ICAgIC8vIGV4ZWN1dGlvbiBmcm9tIHBhcnNlQXR0cmlidXRlLgotICAgIGlmIChyYXdUb2tlbi50
eXBlKCkgIT0gSFRNTFRva2VuVHlwZXM6OkNoYXJhY3RlcikKKyAgICBpZiAocmF3VG9rZW4udHlw
ZSgpICE9IEhUTUxUb2tlbjo6Q2hhcmFjdGVyKQogICAgICAgICByYXdUb2tlbi5jbGVhcigpOwog
CiAgICAgbV90cmVlQnVpbGRlci0+Y29uc3RydWN0VHJlZSh0b2tlbi5nZXQoKSk7CkBAIC00NzUs
NyArNDcxLDcgQEAgdm9pZCBIVE1MRG9jdW1lbnRQYXJzZXI6OmNvbnN0cnVjdFRyZWVGcm9tSFRN
TFRva2VuKEhUTUxUb2tlbiYgcmF3VG9rZW4pCiAgICAgdG9rZW4tPmNsZWFyRXh0ZXJuYWxDaGFy
YWN0ZXJzKCk7CiAKICAgICBpZiAoIXJhd1Rva2VuLmlzVW5pbml0aWFsaXplZCgpKSB7Ci0gICAg
ICAgIEFTU0VSVChyYXdUb2tlbi50eXBlKCkgPT0gSFRNTFRva2VuVHlwZXM6OkNoYXJhY3Rlcik7
CisgICAgICAgIEFTU0VSVChyYXdUb2tlbi50eXBlKCkgPT0gSFRNTFRva2VuOjpDaGFyYWN0ZXIp
OwogICAgICAgICByYXdUb2tlbi5jbGVhcigpOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5oIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFyc2VyLmgKaW5kZXggMDIwN2NjOTA3NGJhNzY5
MWQzNWU5MGFhMTlhZTJkMGJiMGUyMTkzYi4uNzQyODliYjZiNzUwMWM1YTkyNmYyNTkyMjIyNGVh
MjI0ZWVjMjUyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTERv
Y3VtZW50UGFyc2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTERvY3Vt
ZW50UGFyc2VyLmgKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkJhY2tncm91bmRIVE1M
SW5wdXRTdHJlYW0uaCIKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUNsaWVudC5oIgorI2luY2x1
ZGUgIkNvbXBhY3RIVE1MVG9rZW4uaCIKICNpbmNsdWRlICJGcmFnbWVudFNjcmlwdGluZ1Blcm1p
c3Npb24uaCIKICNpbmNsdWRlICJIVE1MSW5wdXRTdHJlYW0uaCIKICNpbmNsdWRlICJIVE1MUGFy
c2VyT3B0aW9ucy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRN
TE1ldGFDaGFyc2V0UGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxN
ZXRhQ2hhcnNldFBhcnNlci5jcHAKaW5kZXggNTg2ZmZhOTUyNmQ0YzMzZTk1ZTNhNmY2M2Y3Y2Nk
NTIyNzZlY2JkNS4uNzBjY2Q1ODBjMjQwOWU5NzY3M2I0NDllNzE2MzUyNWUzYmI4MTJmZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTE1ldGFDaGFyc2V0UGFyc2Vy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MTWV0YUNoYXJzZXRQYXJz
ZXIuY3BwCkBAIC0xNzYsOCArMTc2LDggQEAgYm9vbCBIVE1MTWV0YUNoYXJzZXRQYXJzZXI6OmNo
ZWNrRm9yTWV0YUNoYXJzZXQoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCkKICAgICBt
X2lucHV0LmFwcGVuZChTZWdtZW50ZWRTdHJpbmcobV9hc3N1bWVkQ29kZWMtPmRlY29kZShkYXRh
LCBsZW5ndGgpKSk7CiAKICAgICB3aGlsZSAobV90b2tlbml6ZXItPm5leHRUb2tlbihtX2lucHV0
LCBtX3Rva2VuKSkgewotICAgICAgICBib29sIGVuZCA9IG1fdG9rZW4udHlwZSgpID09IEhUTUxU
b2tlblR5cGVzOjpFbmRUYWc7Ci0gICAgICAgIGlmIChlbmQgfHwgbV90b2tlbi50eXBlKCkgPT0g
SFRNTFRva2VuVHlwZXM6OlN0YXJ0VGFnKSB7CisgICAgICAgIGJvb2wgZW5kID0gbV90b2tlbi50
eXBlKCkgPT0gSFRNTFRva2VuOjpFbmRUYWc7CisgICAgICAgIGlmIChlbmQgfHwgbV90b2tlbi50
eXBlKCkgPT0gSFRNTFRva2VuOjpTdGFydFRhZykgewogICAgICAgICAgICAgQXRvbWljU3RyaW5n
IHRhZ05hbWUobV90b2tlbi5uYW1lKCkuZGF0YSgpLCBtX3Rva2VuLm5hbWUoKS5zaXplKCkpOwog
ICAgICAgICAgICAgaWYgKCFlbmQpIHsKICAgICAgICAgICAgICAgICBtX3Rva2VuaXplci0+dXBk
YXRlU3RhdGVGb3IodGFnTmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3Bh
cnNlci9IVE1MUHJlbG9hZFNjYW5uZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIv
SFRNTFByZWxvYWRTY2FubmVyLmNwcAppbmRleCAzZDc4ODg5YmYxZjc5Nzg2NjUyNDgxNzI1OTA5
NThhYmYwZmY5ZmM1Li4wYzdjYTMzZWZjOTExOTBlOWU4NzgyYmY1MWMyNzIxMTIyYjdjZjI0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUHJlbG9hZFNjYW5uZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQcmVsb2FkU2Nhbm5lci5j
cHAKQEAgLTQ1LDEyICs0NSwxMiBAQCB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCiBzdGF0
aWMgYm9vbCBpc1N0YXJ0VGFnKGNvbnN0IEhUTUxUb2tlbiYgdG9rZW4pCiB7Ci0gICAgcmV0dXJu
IHRva2VuLnR5cGUoKSA9PSBIVE1MVG9rZW5UeXBlczo6U3RhcnRUYWc7CisgICAgcmV0dXJuIHRv
a2VuLnR5cGUoKSA9PSBIVE1MVG9rZW46OlN0YXJ0VGFnOwogfQogCiBzdGF0aWMgYm9vbCBpc1N0
YXJ0T3JFbmRUYWcoY29uc3QgSFRNTFRva2VuJiB0b2tlbikKIHsKLSAgICByZXR1cm4gdG9rZW4u
dHlwZSgpID09IEhUTUxUb2tlblR5cGVzOjpFbmRUYWcgfHwgaXNTdGFydFRhZyh0b2tlbik7Cisg
ICAgcmV0dXJuIHRva2VuLnR5cGUoKSA9PSBIVE1MVG9rZW46OkVuZFRhZyB8fCBpc1N0YXJ0VGFn
KHRva2VuKTsKIH0KIAogY2xhc3MgU3RhcnRUYWdTY2FubmVyIHsKQEAgLTI3OSw3ICsyNzksNyBA
QCB2b2lkIEhUTUxQcmVsb2FkU2Nhbm5lcjo6cHJvY2Vzc1Rva2VuKGNvbnN0IEhUTUxUb2tlbiYg
dG9rZW4sIFZlY3RvcjxPd25QdHI8UHJlbAogewogICAgIC8vIDxzdHlsZT4gaXMgdGhlIG9ubHkg
cGxhY2Ugd2Ugc2VhcmNoIGZvciB1cmxzIGluIG5vbi1zdGFydC9lbmQtdGFnIHRva2Vucy4KICAg
ICBpZiAobV9pblN0eWxlKSB7Ci0gICAgICAgIGlmICh0b2tlbi50eXBlKCkgIT0gSFRNTFRva2Vu
VHlwZXM6OkNoYXJhY3RlcikKKyAgICAgICAgaWYgKHRva2VuLnR5cGUoKSAhPSBIVE1MVG9rZW46
OkNoYXJhY3RlcikKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgcmV0dXJuIG1fY3NzU2Nh
bm5lci5zY2FuKHRva2VuLCByZXF1ZXN0cyk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9wYXJzZXIvSFRNTFNvdXJjZVRyYWNrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9wYXJzZXIvSFRNTFNvdXJjZVRyYWNrZXIuY3BwCmluZGV4IDg5ODg1YzNlMWNlMmYxNWUz
Yjg0ZGRjZDRhOWYxMTFlMzhjMzI0ZGYuLmJmMWE4YzQ2NjA5YmM0MmYxNjAzNmY4YTk0ODNjYTQw
YjM1ZmM1MTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxTb3Vy
Y2VUcmFja2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MU291cmNl
VHJhY2tlci5jcHAKQEAgLTM2LDcgKzM2LDcgQEAgSFRNTFNvdXJjZVRyYWNrZXI6OkhUTUxTb3Vy
Y2VUcmFja2VyKCkKIAogdm9pZCBIVE1MU291cmNlVHJhY2tlcjo6c3RhcnQoU2VnbWVudGVkU3Ry
aW5nJiBjdXJyZW50SW5wdXQsIEhUTUxUb2tlbml6ZXIqIHRva2VuaXplciwgSFRNTFRva2VuJiB0
b2tlbikKIHsKLSAgICBpZiAodG9rZW4udHlwZSgpID09IEhUTUxUb2tlblR5cGVzOjpVbmluaXRp
YWxpemVkKSB7CisgICAgaWYgKHRva2VuLnR5cGUoKSA9PSBIVE1MVG9rZW46OlVuaW5pdGlhbGl6
ZWQpIHsKICAgICAgICAgbV9wcmV2aW91c1NvdXJjZS5jbGVhcigpOwogICAgICAgICBpZiAodG9r
ZW5pemVyLT5udW1iZXJPZkJ1ZmZlcmVkQ2hhcmFjdGVycygpKQogICAgICAgICAgICAgbV9wcmV2
aW91c1NvdXJjZSA9IHRva2VuaXplci0+YnVmZmVyZWRDaGFyYWN0ZXJzKCk7CkBAIC01Nyw3ICs1
Nyw3IEBAIHZvaWQgSFRNTFNvdXJjZVRyYWNrZXI6OmVuZChTZWdtZW50ZWRTdHJpbmcmIGN1cnJl
bnRJbnB1dCwgSFRNTFRva2VuaXplciogdG9rZW5pCiAKIFN0cmluZyBIVE1MU291cmNlVHJhY2tl
cjo6c291cmNlRm9yVG9rZW4oY29uc3QgSFRNTFRva2VuJiB0b2tlbikKIHsKLSAgICBpZiAodG9r
ZW4udHlwZSgpID09IEhUTUxUb2tlblR5cGVzOjpFbmRPZkZpbGUpCisgICAgaWYgKHRva2VuLnR5
cGUoKSA9PSBIVE1MVG9rZW46OkVuZE9mRmlsZSkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOyAv
LyBIaWRlcyB0aGUgbnVsbCBjaGFyYWN0ZXIgd2UgdXNlIHRvIG1hcmsgdGhlIGVuZCBvZiBmaWxl
LgogCiAgICAgaWYgKCFtX2NhY2hlZFNvdXJjZUZvclRva2VuLmlzRW1wdHkoKSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxTdGFja0l0ZW0uaCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxTdGFja0l0ZW0uaAppbmRleCA4YTE5Y2QzNDBiNDhkMGU3
ODFmOWY2ODMzN2ZlZmE1ZDlkMDgxY2YwLi4xYzJlYjQ5M2Y0MDI0M2IyYjFhNWMzNTYyZTNkMDgw
NDIxNDI4YjMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MU3Rh
Y2tJdGVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFN0YWNrSXRlbS5o
CkBAIC0yNiw5ICsyNiw5IEBACiAjaWZuZGVmIEhUTUxTdGFja0l0ZW1faAogI2RlZmluZSBIVE1M
U3RhY2tJdGVtX2gKIAorI2luY2x1ZGUgIkF0b21pY0hUTUxUb2tlbi5oIgogI2luY2x1ZGUgIkVs
ZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKLSNpbmNsdWRlICJIVE1MVG9rZW4uaCIK
ICNpbmNsdWRlICJNYXRoTUxOYW1lcy5oIgogI2luY2x1ZGUgIlNWR05hbWVzLmgiCiAKQEAgLTIw
OCwxMiArMjA4LDEyIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAvLyBDcmVhdGUgYSBmYWtlIHRv
a2VuIGZvciBhIGRvY3VtZW50IGZyYWdtZW50IG5vZGUuIFRoaXMgbG9va3MgdWdseSBidXQgcmVx
dWlyZWQgZm9yIHBlcmZvcm1hbmNlCiAgICAgICAgICAgICAvLyBiZWNhdXNlIHdlIHdhbnQgdG8g
dXNlIG1fdG9rZW4tPm5hbWUoKSBpbiBsb2NhbE5hbWUoKSwgaGFzTG9jYWxOYW1lKCkgYW5kIGhh
c1RhZ05hbWUoKSB3aXRob3V0CiAgICAgICAgICAgICAvLyBjaGVja2luZyBtX2lzRG9jdW1lbnRG
cmFnbWVudE5vZGUgZmxhZy4KLSAgICAgICAgICAgIG1fdG9rZW4gPSBBdG9taWNIVE1MVG9rZW46
OmNyZWF0ZShIVE1MVG9rZW5UeXBlczo6U3RhcnRUYWcsIG51bGxBdG9tKTsKKyAgICAgICAgICAg
IG1fdG9rZW4gPSBBdG9taWNIVE1MVG9rZW46OmNyZWF0ZShIVE1MVG9rZW46OlN0YXJ0VGFnLCBu
dWxsQXRvbSk7CiAgICAgICAgICAgICBtX2lzRG9jdW1lbnRGcmFnbWVudE5vZGUgPSB0cnVlOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgSXRlbUZvckNvbnRleHRFbGVtZW50Ogog
ICAgICAgICAgICAgLy8gQ3JlYXRlIGEgZmFrZSB0b2tlbiBmb3IgYSBjb250ZXh0IGVsZW1lbnQg
Zm9yIHRoZSBzYW1lIHJlYXNvbiBhcyBhYm92ZS4KLSAgICAgICAgICAgIG1fdG9rZW4gPSBBdG9t
aWNIVE1MVG9rZW46OmNyZWF0ZShIVE1MVG9rZW5UeXBlczo6U3RhcnRUYWcsIG1fbm9kZS0+bG9j
YWxOYW1lKCkpOworICAgICAgICAgICAgbV90b2tlbiA9IEF0b21pY0hUTUxUb2tlbjo6Y3JlYXRl
KEhUTUxUb2tlbjo6U3RhcnRUYWcsIG1fbm9kZS0+bG9jYWxOYW1lKCkpOwogICAgICAgICAgICAg
bV9uYW1lc3BhY2VVUkkgPSBtX25vZGUtPm5hbWVzcGFjZVVSSSgpOwogICAgICAgICAgICAgbV9p
c0RvY3VtZW50RnJhZ21lbnROb2RlID0gZmFsc2U7CiAgICAgICAgICAgICBicmVhazsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUb2tlbi5oIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRva2VuLmgKaW5kZXggYmZiZGUyMDQ4MzQyNjE1NzdmZTdk
Y2RlYjNjMDAwMDVkMDc2NjRlNy4uZDdlN2VhNmI3ZThlZTkyYjNjNTQ5MTQ5NGJkNTU3ZjJhMDBk
ODRkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRva2VuLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRva2VuLmgKQEAgLTI3LDggKzI3
LDcgQEAKICNkZWZpbmUgSFRNTFRva2VuX2gKIAogI2luY2x1ZGUgIkF0dHJpYnV0ZS5oIgotI2lu
Y2x1ZGUgIkNvbXBhY3RIVE1MVG9rZW4uaCIKLSNpbmNsdWRlICJIVE1MVG9rZW5UeXBlcy5oIgor
I2luY2x1ZGUgIkhUTUxUb2tlbi5oIgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5j
bHVkZSA8d3RmL1JlZlB0ci5oPgogCkBAIC02NSw3ICs2NCwxNSBAQCBjbGFzcyBIVE1MVG9rZW4g
ewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEhUTUxUb2tlbik7CiAgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgdHlwZWRlZiBIVE1MVG9rZW5UeXBlcyBUeXBlOwor
ICAgIGVudW0gVHlwZSB7CisgICAgICAgIFVuaW5pdGlhbGl6ZWQsCisgICAgICAgIERPQ1RZUEUs
CisgICAgICAgIFN0YXJ0VGFnLAorICAgICAgICBFbmRUYWcsCisgICAgICAgIENvbW1lbnQsCisg
ICAgICAgIENoYXJhY3RlciwKKyAgICAgICAgRW5kT2ZGaWxlLAorICAgIH07CiAKICAgICBjbGFz
cyBBdHRyaWJ1dGUgewogICAgIHB1YmxpYzoKQEAgLTg4LDcgKzk1LDcgQEAgcHVibGljOgogCiAg
ICAgdm9pZCBjbGVhcigpCiAgICAgewotICAgICAgICBtX3R5cGUgPSBUeXBlOjpVbmluaXRpYWxp
emVkOworICAgICAgICBtX3R5cGUgPSBVbmluaXRpYWxpemVkOwogICAgICAgICBtX3JhbmdlLm1f
c3RhcnQgPSAwOwogICAgICAgICBtX3JhbmdlLm1fZW5kID0gMDsKICAgICAgICAgbV9iYXNlT2Zm
c2V0ID0gMDsKQEAgLTk2LDEzICsxMDMsMTMgQEAgcHVibGljOgogICAgICAgICBtX29yQWxsRGF0
YSA9IDA7CiAgICAgfQogCi0gICAgYm9vbCBpc1VuaW5pdGlhbGl6ZWQoKSB7IHJldHVybiBtX3R5
cGUgPT0gSFRNTFRva2VuVHlwZXM6OlVuaW5pdGlhbGl6ZWQ7IH0KLSAgICBIVE1MVG9rZW5UeXBl
czo6VHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9CisgICAgYm9vbCBpc1VuaW5p
dGlhbGl6ZWQoKSB7IHJldHVybiBtX3R5cGUgPT0gSFRNTFRva2VuOjpVbmluaXRpYWxpemVkOyB9
CisgICAgSFRNTFRva2VuOjpUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KIAog
ICAgIHZvaWQgbWFrZUVuZE9mRmlsZSgpCiAgICAgewotICAgICAgICBBU1NFUlQobV90eXBlID09
IEhUTUxUb2tlblR5cGVzOjpVbmluaXRpYWxpemVkKTsKLSAgICAgICAgbV90eXBlID0gSFRNTFRv
a2VuVHlwZXM6OkVuZE9mRmlsZTsKKyAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBIVE1MVG9rZW46
OlVuaW5pdGlhbGl6ZWQpOworICAgICAgICBtX3R5cGUgPSBIVE1MVG9rZW46OkVuZE9mRmlsZTsK
ICAgICB9CiAKICAgICAvKiBSYW5nZSBhbmQgb2Zmc2V0IG1ldGhvZHMgZXhwb3NlZCBmb3IgSFRN
TFNvdXJjZVRyYWNrZXIgYW5kIEhUTUxWaWV3U291cmNlUGFyc2VyICovCkBAIC0xMjEsNyArMTI4
LDcgQEAgcHVibGljOgogCiAgICAgY29uc3QgRGF0YVZlY3RvciYgZGF0YSgpIGNvbnN0CiAgICAg
ewotICAgICAgICBBU1NFUlQobV90eXBlID09IEhUTUxUb2tlblR5cGVzOjpDaGFyYWN0ZXIgfHwg
bV90eXBlID09IEhUTUxUb2tlblR5cGVzOjpDb21tZW50IHx8IG1fdHlwZSA9PSBIVE1MVG9rZW5U
eXBlczo6U3RhcnRUYWcgfHwgbV90eXBlID09IEhUTUxUb2tlblR5cGVzOjpFbmRUYWcpOworICAg
ICAgICBBU1NFUlQobV90eXBlID09IEhUTUxUb2tlbjo6Q2hhcmFjdGVyIHx8IG1fdHlwZSA9PSBI
VE1MVG9rZW46OkNvbW1lbnQgfHwgbV90eXBlID09IEhUTUxUb2tlbjo6U3RhcnRUYWcgfHwgbV90
eXBlID09IEhUTUxUb2tlbjo6RW5kVGFnKTsKICAgICAgICAgcmV0dXJuIG1fZGF0YTsKICAgICB9
CiAKQEAgLTEzMiwxMyArMTM5LDEzIEBAIHB1YmxpYzoKIAogICAgIGNvbnN0IERhdGFWZWN0b3Im
IG5hbWUoKSBjb25zdAogICAgIHsKLSAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBIVE1MVG9rZW5U
eXBlczo6U3RhcnRUYWcgfHwgbV90eXBlID09IEhUTUxUb2tlblR5cGVzOjpFbmRUYWcgfHwgbV90
eXBlID09IEhUTUxUb2tlblR5cGVzOjpET0NUWVBFKTsKKyAgICAgICAgQVNTRVJUKG1fdHlwZSA9
PSBIVE1MVG9rZW46OlN0YXJ0VGFnIHx8IG1fdHlwZSA9PSBIVE1MVG9rZW46OkVuZFRhZyB8fCBt
X3R5cGUgPT0gSFRNTFRva2VuOjpET0NUWVBFKTsKICAgICAgICAgcmV0dXJuIG1fZGF0YTsKICAg
ICB9CiAKICAgICB2b2lkIGFwcGVuZFRvTmFtZShVQ2hhciBjaGFyYWN0ZXIpCiAgICAgewotICAg
ICAgICBBU1NFUlQobV90eXBlID09IEhUTUxUb2tlblR5cGVzOjpTdGFydFRhZyB8fCBtX3R5cGUg
PT0gSFRNTFRva2VuVHlwZXM6OkVuZFRhZyB8fCBtX3R5cGUgPT0gSFRNTFRva2VuVHlwZXM6OkRP
Q1RZUEUpOworICAgICAgICBBU1NFUlQobV90eXBlID09IEhUTUxUb2tlbjo6U3RhcnRUYWcgfHwg
bV90eXBlID09IEhUTUxUb2tlbjo6RW5kVGFnIHx8IG1fdHlwZSA9PSBIVE1MVG9rZW46OkRPQ1RZ
UEUpOwogICAgICAgICBBU1NFUlQoY2hhcmFjdGVyKTsKICAgICAgICAgbV9kYXRhLmFwcGVuZChj
aGFyYWN0ZXIpOwogICAgICAgICBtX29yQWxsRGF0YSB8PSBjaGFyYWN0ZXI7CkBAIC0xNTgsMjAg
KzE2NSwyMCBAQCBwdWJsaWM6CiAKICAgICBib29sIGZvcmNlUXVpcmtzKCkgY29uc3QKICAgICB7
Ci0gICAgICAgIEFTU0VSVChtX3R5cGUgPT0gSFRNTFRva2VuVHlwZXM6OkRPQ1RZUEUpOworICAg
ICAgICBBU1NFUlQobV90eXBlID09IEhUTUxUb2tlbjo6RE9DVFlQRSk7CiAgICAgICAgIHJldHVy
biBtX2RvY3R5cGVEYXRhLT5tX2ZvcmNlUXVpcmtzOwogICAgIH0KIAogICAgIHZvaWQgc2V0Rm9y
Y2VRdWlya3MoKQogICAgIHsKLSAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBIVE1MVG9rZW5UeXBl
czo6RE9DVFlQRSk7CisgICAgICAgIEFTU0VSVChtX3R5cGUgPT0gSFRNTFRva2VuOjpET0NUWVBF
KTsKICAgICAgICAgbV9kb2N0eXBlRGF0YS0+bV9mb3JjZVF1aXJrcyA9IHRydWU7CiAgICAgfQog
CiAgICAgdm9pZCBiZWdpbkRPQ1RZUEUoKQogICAgIHsKLSAgICAgICAgQVNTRVJUKG1fdHlwZSA9
PSBIVE1MVG9rZW5UeXBlczo6VW5pbml0aWFsaXplZCk7Ci0gICAgICAgIG1fdHlwZSA9IEhUTUxU
b2tlblR5cGVzOjpET0NUWVBFOworICAgICAgICBBU1NFUlQobV90eXBlID09IEhUTUxUb2tlbjo6
VW5pbml0aWFsaXplZCk7CisgICAgICAgIG1fdHlwZSA9IEhUTUxUb2tlbjo6RE9DVFlQRTsKICAg
ICAgICAgbV9kb2N0eXBlRGF0YSA9IGFkb3B0UHRyKG5ldyBEb2N0eXBlRGF0YSk7CiAgICAgfQog
CkBAIC0xODYsMjcgKzE5MywyNyBAQCBwdWJsaWM6CiAgICAgLy8gRklYTUU6IERpc3Rpbmd1aXNo
IGJldHdlZW4gYSBtaXNzaW5nIHB1YmxpYyBpZGVudGlmZXIgYW5kIGFuIGVtcHR5IG9uZS4KICAg
ICBjb25zdCBXVEY6OlZlY3RvcjxVQ2hhcj4mIHB1YmxpY0lkZW50aWZpZXIoKSBjb25zdAogICAg
IHsKLSAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBIVE1MVG9rZW5UeXBlczo6RE9DVFlQRSk7Cisg
ICAgICAgIEFTU0VSVChtX3R5cGUgPT0gSFRNTFRva2VuOjpET0NUWVBFKTsKICAgICAgICAgcmV0
dXJuIG1fZG9jdHlwZURhdGEtPm1fcHVibGljSWRlbnRpZmllcjsKICAgICB9CiAKICAgICAvLyBG
SVhNRTogRGlzdGluZ3Vpc2ggYmV0d2VlbiBhIG1pc3Npbmcgc3lzdGVtIGlkZW50aWZlciBhbmQg
YW4gZW1wdHkgb25lLgogICAgIGNvbnN0IFdURjo6VmVjdG9yPFVDaGFyPiYgc3lzdGVtSWRlbnRp
ZmllcigpIGNvbnN0CiAgICAgewotICAgICAgICBBU1NFUlQobV90eXBlID09IEhUTUxUb2tlblR5
cGVzOjpET0NUWVBFKTsKKyAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBIVE1MVG9rZW46OkRPQ1RZ
UEUpOwogICAgICAgICByZXR1cm4gbV9kb2N0eXBlRGF0YS0+bV9zeXN0ZW1JZGVudGlmaWVyOwog
ICAgIH0KIAogICAgIHZvaWQgc2V0UHVibGljSWRlbnRpZmllclRvRW1wdHlTdHJpbmcoKQogICAg
IHsKLSAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBIVE1MVG9rZW5UeXBlczo6RE9DVFlQRSk7Cisg
ICAgICAgIEFTU0VSVChtX3R5cGUgPT0gSFRNTFRva2VuOjpET0NUWVBFKTsKICAgICAgICAgbV9k
b2N0eXBlRGF0YS0+bV9oYXNQdWJsaWNJZGVudGlmaWVyID0gdHJ1ZTsKICAgICAgICAgbV9kb2N0
eXBlRGF0YS0+bV9wdWJsaWNJZGVudGlmaWVyLmNsZWFyKCk7CiAgICAgfQogCiAgICAgdm9pZCBz
ZXRTeXN0ZW1JZGVudGlmaWVyVG9FbXB0eVN0cmluZygpCiAgICAgewotICAgICAgICBBU1NFUlQo
bV90eXBlID09IEhUTUxUb2tlblR5cGVzOjpET0NUWVBFKTsKKyAgICAgICAgQVNTRVJUKG1fdHlw
ZSA9PSBIVE1MVG9rZW46OkRPQ1RZUEUpOwogICAgICAgICBtX2RvY3R5cGVEYXRhLT5tX2hhc1N5
c3RlbUlkZW50aWZpZXIgPSB0cnVlOwogICAgICAgICBtX2RvY3R5cGVEYXRhLT5tX3N5c3RlbUlk
ZW50aWZpZXIuY2xlYXIoKTsKICAgICB9CkBAIC0yMTQsNyArMjIxLDcgQEAgcHVibGljOgogICAg
IHZvaWQgYXBwZW5kVG9QdWJsaWNJZGVudGlmaWVyKFVDaGFyIGNoYXJhY3RlcikKICAgICB7CiAg
ICAgICAgIEFTU0VSVChjaGFyYWN0ZXIpOwotICAgICAgICBBU1NFUlQobV90eXBlID09IEhUTUxU
b2tlblR5cGVzOjpET0NUWVBFKTsKKyAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBIVE1MVG9rZW46
OkRPQ1RZUEUpOwogICAgICAgICBBU1NFUlQobV9kb2N0eXBlRGF0YS0+bV9oYXNQdWJsaWNJZGVu
dGlmaWVyKTsKICAgICAgICAgbV9kb2N0eXBlRGF0YS0+bV9wdWJsaWNJZGVudGlmaWVyLmFwcGVu
ZChjaGFyYWN0ZXIpOwogICAgIH0KQEAgLTIyMiw3ICsyMjksNyBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBhcHBlbmRUb1N5c3RlbUlkZW50aWZpZXIoVUNoYXIgY2hhcmFjdGVyKQogICAgIHsKICAgICAg
ICAgQVNTRVJUKGNoYXJhY3Rlcik7Ci0gICAgICAgIEFTU0VSVChtX3R5cGUgPT0gSFRNTFRva2Vu
VHlwZXM6OkRPQ1RZUEUpOworICAgICAgICBBU1NFUlQobV90eXBlID09IEhUTUxUb2tlbjo6RE9D
VFlQRSk7CiAgICAgICAgIEFTU0VSVChtX2RvY3R5cGVEYXRhLT5tX2hhc1N5c3RlbUlkZW50aWZp
ZXIpOwogICAgICAgICBtX2RvY3R5cGVEYXRhLT5tX3N5c3RlbUlkZW50aWZpZXIuYXBwZW5kKGNo
YXJhY3Rlcik7CiAgICAgfQpAQCAtMjM2LDIxICsyNDMsMjEgQEAgcHVibGljOgogCiAgICAgYm9v
bCBzZWxmQ2xvc2luZygpIGNvbnN0CiAgICAgewotICAgICAgICBBU1NFUlQobV90eXBlID09IEhU
TUxUb2tlblR5cGVzOjpTdGFydFRhZyB8fCBtX3R5cGUgPT0gSFRNTFRva2VuVHlwZXM6OkVuZFRh
Zyk7CisgICAgICAgIEFTU0VSVChtX3R5cGUgPT0gSFRNTFRva2VuOjpTdGFydFRhZyB8fCBtX3R5
cGUgPT0gSFRNTFRva2VuOjpFbmRUYWcpOwogICAgICAgICByZXR1cm4gbV9zZWxmQ2xvc2luZzsK
ICAgICB9CiAKICAgICB2b2lkIHNldFNlbGZDbG9zaW5nKCkKICAgICB7Ci0gICAgICAgIEFTU0VS
VChtX3R5cGUgPT0gSFRNTFRva2VuVHlwZXM6OlN0YXJ0VGFnIHx8IG1fdHlwZSA9PSBIVE1MVG9r
ZW5UeXBlczo6RW5kVGFnKTsKKyAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBIVE1MVG9rZW46OlN0
YXJ0VGFnIHx8IG1fdHlwZSA9PSBIVE1MVG9rZW46OkVuZFRhZyk7CiAgICAgICAgIG1fc2VsZkNs
b3NpbmcgPSB0cnVlOwogICAgIH0KIAogICAgIHZvaWQgYmVnaW5TdGFydFRhZyhVQ2hhciBjaGFy
YWN0ZXIpCiAgICAgewogICAgICAgICBBU1NFUlQoY2hhcmFjdGVyKTsKLSAgICAgICAgQVNTRVJU
KG1fdHlwZSA9PSBIVE1MVG9rZW5UeXBlczo6VW5pbml0aWFsaXplZCk7Ci0gICAgICAgIG1fdHlw
ZSA9IEhUTUxUb2tlblR5cGVzOjpTdGFydFRhZzsKKyAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBI
VE1MVG9rZW46OlVuaW5pdGlhbGl6ZWQpOworICAgICAgICBtX3R5cGUgPSBIVE1MVG9rZW46OlN0
YXJ0VGFnOwogICAgICAgICBtX3NlbGZDbG9zaW5nID0gZmFsc2U7CiAgICAgICAgIG1fY3VycmVu
dEF0dHJpYnV0ZSA9IDA7CiAgICAgICAgIG1fYXR0cmlidXRlcy5jbGVhcigpOwpAQCAtMjYxLDgg
KzI2OCw4IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgYmVnaW5FbmRUYWcoTENoYXIgY2hhcmFjdGVy
KQogICAgIHsKLSAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBIVE1MVG9rZW5UeXBlczo6VW5pbml0
aWFsaXplZCk7Ci0gICAgICAgIG1fdHlwZSA9IEhUTUxUb2tlblR5cGVzOjpFbmRUYWc7CisgICAg
ICAgIEFTU0VSVChtX3R5cGUgPT0gSFRNTFRva2VuOjpVbmluaXRpYWxpemVkKTsKKyAgICAgICAg
bV90eXBlID0gSFRNTFRva2VuOjpFbmRUYWc7CiAgICAgICAgIG1fc2VsZkNsb3NpbmcgPSBmYWxz
ZTsKICAgICAgICAgbV9jdXJyZW50QXR0cmlidXRlID0gMDsKICAgICAgICAgbV9hdHRyaWJ1dGVz
LmNsZWFyKCk7CkBAIC0yNzIsOCArMjc5LDggQEAgcHVibGljOgogCiAgICAgdm9pZCBiZWdpbkVu
ZFRhZyhjb25zdCBWZWN0b3I8TENoYXIsIDMyPiYgY2hhcmFjdGVycykKICAgICB7Ci0gICAgICAg
IEFTU0VSVChtX3R5cGUgPT0gSFRNTFRva2VuVHlwZXM6OlVuaW5pdGlhbGl6ZWQpOwotICAgICAg
ICBtX3R5cGUgPSBIVE1MVG9rZW5UeXBlczo6RW5kVGFnOworICAgICAgICBBU1NFUlQobV90eXBl
ID09IEhUTUxUb2tlbjo6VW5pbml0aWFsaXplZCk7CisgICAgICAgIG1fdHlwZSA9IEhUTUxUb2tl
bjo6RW5kVGFnOwogICAgICAgICBtX3NlbGZDbG9zaW5nID0gZmFsc2U7CiAgICAgICAgIG1fY3Vy
cmVudEF0dHJpYnV0ZSA9IDA7CiAgICAgICAgIG1fYXR0cmlidXRlcy5jbGVhcigpOwpAQCAtMjgz
LDcgKzI5MCw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgYWRkTmV3QXR0cmlidXRlKCkKICAgICB7
Ci0gICAgICAgIEFTU0VSVChtX3R5cGUgPT0gSFRNTFRva2VuVHlwZXM6OlN0YXJ0VGFnIHx8IG1f
dHlwZSA9PSBIVE1MVG9rZW5UeXBlczo6RW5kVGFnKTsKKyAgICAgICAgQVNTRVJUKG1fdHlwZSA9
PSBIVE1MVG9rZW46OlN0YXJ0VGFnIHx8IG1fdHlwZSA9PSBIVE1MVG9rZW46OkVuZFRhZyk7CiAg
ICAgICAgIG1fYXR0cmlidXRlcy5ncm93KG1fYXR0cmlidXRlcy5zaXplKCkgKyAxKTsKICAgICAg
ICAgbV9jdXJyZW50QXR0cmlidXRlID0gJm1fYXR0cmlidXRlcy5sYXN0KCk7CiAjaWZuZGVmIE5E
RUJVRwpAQCAtMzIzLDcgKzMzMCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGFwcGVuZFRvQXR0cmli
dXRlTmFtZShVQ2hhciBjaGFyYWN0ZXIpCiAgICAgewogICAgICAgICBBU1NFUlQoY2hhcmFjdGVy
KTsKLSAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBIVE1MVG9rZW5UeXBlczo6U3RhcnRUYWcgfHwg
bV90eXBlID09IEhUTUxUb2tlblR5cGVzOjpFbmRUYWcpOworICAgICAgICBBU1NFUlQobV90eXBl
ID09IEhUTUxUb2tlbjo6U3RhcnRUYWcgfHwgbV90eXBlID09IEhUTUxUb2tlbjo6RW5kVGFnKTsK
ICAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBiZSBhYmxlIHRvIGFkZCB0aGUgZm9sbG93aW5n
IEFTU0VSVCBvbmNlIHdlIGZpeAogICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NjI5NzEKICAgICAgICAgLy8gICBBU1NFUlQobV9jdXJyZW50QXR0cmli
dXRlLT5tX25hbWVSYW5nZS5tX3N0YXJ0KTsKQEAgLTMzMyw3ICszNDAsNyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBhcHBlbmRUb0F0dHJpYnV0ZVZhbHVlKFVDaGFyIGNoYXJhY3RlcikKICAgICB7CiAg
ICAgICAgIEFTU0VSVChjaGFyYWN0ZXIpOwotICAgICAgICBBU1NFUlQobV90eXBlID09IEhUTUxU
b2tlblR5cGVzOjpTdGFydFRhZyB8fCBtX3R5cGUgPT0gSFRNTFRva2VuVHlwZXM6OkVuZFRhZyk7
CisgICAgICAgIEFTU0VSVChtX3R5cGUgPT0gSFRNTFRva2VuOjpTdGFydFRhZyB8fCBtX3R5cGUg
PT0gSFRNTFRva2VuOjpFbmRUYWcpOwogICAgICAgICBBU1NFUlQobV9jdXJyZW50QXR0cmlidXRl
LT5tX3ZhbHVlUmFuZ2UubV9zdGFydCk7CiAgICAgICAgIG1fY3VycmVudEF0dHJpYnV0ZS0+bV92
YWx1ZS5hcHBlbmQoY2hhcmFjdGVyKTsKICAgICB9CkBAIC0zNDEsMjAgKzM0OCwyMCBAQCBwdWJs
aWM6CiAgICAgdm9pZCBhcHBlbmRUb0F0dHJpYnV0ZVZhbHVlKHNpemVfdCBpLCBjb25zdCBTdHJp
bmcmIHZhbHVlKQogICAgIHsKICAgICAgICAgQVNTRVJUKCF2YWx1ZS5pc0VtcHR5KCkpOwotICAg
ICAgICBBU1NFUlQobV90eXBlID09IEhUTUxUb2tlblR5cGVzOjpTdGFydFRhZyB8fCBtX3R5cGUg
PT0gSFRNTFRva2VuVHlwZXM6OkVuZFRhZyk7CisgICAgICAgIEFTU0VSVChtX3R5cGUgPT0gSFRN
TFRva2VuOjpTdGFydFRhZyB8fCBtX3R5cGUgPT0gSFRNTFRva2VuOjpFbmRUYWcpOwogICAgICAg
ICBtX2F0dHJpYnV0ZXNbaV0ubV92YWx1ZS5hcHBlbmQodmFsdWUuY2hhcmFjdGVycygpLCB2YWx1
ZS5sZW5ndGgoKSk7CiAgICAgfQogCiAgICAgY29uc3QgQXR0cmlidXRlTGlzdCYgYXR0cmlidXRl
cygpIGNvbnN0CiAgICAgewotICAgICAgICBBU1NFUlQobV90eXBlID09IEhUTUxUb2tlblR5cGVz
OjpTdGFydFRhZyB8fCBtX3R5cGUgPT0gSFRNTFRva2VuVHlwZXM6OkVuZFRhZyk7CisgICAgICAg
IEFTU0VSVChtX3R5cGUgPT0gSFRNTFRva2VuOjpTdGFydFRhZyB8fCBtX3R5cGUgPT0gSFRNTFRv
a2VuOjpFbmRUYWcpOwogICAgICAgICByZXR1cm4gbV9hdHRyaWJ1dGVzOwogICAgIH0KIAogICAg
IC8vIFVzZWQgYnkgdGhlIFhTU0F1ZGl0b3IgdG8gbnVrZSBYU1MtbGFkZW4gYXR0cmlidXRlcy4K
ICAgICB2b2lkIGVyYXNlVmFsdWVPZkF0dHJpYnV0ZShzaXplX3QgaSkKICAgICB7Ci0gICAgICAg
IEFTU0VSVChtX3R5cGUgPT0gSFRNTFRva2VuVHlwZXM6OlN0YXJ0VGFnIHx8IG1fdHlwZSA9PSBI
VE1MVG9rZW5UeXBlczo6RW5kVGFnKTsKKyAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBIVE1MVG9r
ZW46OlN0YXJ0VGFnIHx8IG1fdHlwZSA9PSBIVE1MVG9rZW46OkVuZFRhZyk7CiAgICAgICAgIG1f
YXR0cmlidXRlc1tpXS5tX3ZhbHVlLmNsZWFyKCk7CiAgICAgfQogCkBAIC0zNjQsMzIgKzM3MSwz
MiBAQCBwdWJsaWM6CiAgICAgLy8gb3RoZXIgdHlwZXMgb2YgdG9rZW5zIGJlY2F1c2Ugd2Ugd2Fu
dCB0byBzYXZlIGEgcGVyLWNoYXJhY3RlciBicmFuY2guCiAgICAgdm9pZCBlbnN1cmVJc0NoYXJh
Y3RlclRva2VuKCkKICAgICB7Ci0gICAgICAgIEFTU0VSVChtX3R5cGUgPT0gSFRNTFRva2VuVHlw
ZXM6OlVuaW5pdGlhbGl6ZWQgfHwgbV90eXBlID09IEhUTUxUb2tlblR5cGVzOjpDaGFyYWN0ZXIp
OwotICAgICAgICBtX3R5cGUgPSBIVE1MVG9rZW5UeXBlczo6Q2hhcmFjdGVyOworICAgICAgICBB
U1NFUlQobV90eXBlID09IEhUTUxUb2tlbjo6VW5pbml0aWFsaXplZCB8fCBtX3R5cGUgPT0gSFRN
TFRva2VuOjpDaGFyYWN0ZXIpOworICAgICAgICBtX3R5cGUgPSBIVE1MVG9rZW46OkNoYXJhY3Rl
cjsKICAgICB9CiAKICAgICBjb25zdCBEYXRhVmVjdG9yJiBjaGFyYWN0ZXJzKCkgY29uc3QKICAg
ICB7Ci0gICAgICAgIEFTU0VSVChtX3R5cGUgPT0gSFRNTFRva2VuVHlwZXM6OkNoYXJhY3Rlcik7
CisgICAgICAgIEFTU0VSVChtX3R5cGUgPT0gSFRNTFRva2VuOjpDaGFyYWN0ZXIpOwogICAgICAg
ICByZXR1cm4gbV9kYXRhOwogICAgIH0KIAogICAgIHZvaWQgYXBwZW5kVG9DaGFyYWN0ZXIoY2hh
ciBjaGFyYWN0ZXIpCiAgICAgewotICAgICAgICBBU1NFUlQobV90eXBlID09IEhUTUxUb2tlblR5
cGVzOjpDaGFyYWN0ZXIpOworICAgICAgICBBU1NFUlQobV90eXBlID09IEhUTUxUb2tlbjo6Q2hh
cmFjdGVyKTsKICAgICAgICAgbV9kYXRhLmFwcGVuZChjaGFyYWN0ZXIpOwogICAgIH0KIAogICAg
IHZvaWQgYXBwZW5kVG9DaGFyYWN0ZXIoVUNoYXIgY2hhcmFjdGVyKQogICAgIHsKLSAgICAgICAg
QVNTRVJUKG1fdHlwZSA9PSBIVE1MVG9rZW5UeXBlczo6Q2hhcmFjdGVyKTsKKyAgICAgICAgQVNT
RVJUKG1fdHlwZSA9PSBIVE1MVG9rZW46OkNoYXJhY3Rlcik7CiAgICAgICAgIG1fZGF0YS5hcHBl
bmQoY2hhcmFjdGVyKTsKICAgICAgICAgbV9vckFsbERhdGEgfD0gY2hhcmFjdGVyOwogICAgIH0K
IAogICAgIHZvaWQgYXBwZW5kVG9DaGFyYWN0ZXIoY29uc3QgVmVjdG9yPExDaGFyLCAzMj4mIGNo
YXJhY3RlcnMpCiAgICAgewotICAgICAgICBBU1NFUlQobV90eXBlID09IEhUTUxUb2tlblR5cGVz
OjpDaGFyYWN0ZXIpOworICAgICAgICBBU1NFUlQobV90eXBlID09IEhUTUxUb2tlbjo6Q2hhcmFj
dGVyKTsKICAgICAgICAgbV9kYXRhLmFwcGVuZFZlY3RvcihjaGFyYWN0ZXJzKTsKICAgICB9CiAK
QEAgLTM5NywzMyArNDA0LDMzIEBAIHB1YmxpYzoKIAogICAgIGNvbnN0IERhdGFWZWN0b3ImIGNv
bW1lbnQoKSBjb25zdAogICAgIHsKLSAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBIVE1MVG9rZW5U
eXBlczo6Q29tbWVudCk7CisgICAgICAgIEFTU0VSVChtX3R5cGUgPT0gSFRNTFRva2VuOjpDb21t
ZW50KTsKICAgICAgICAgcmV0dXJuIG1fZGF0YTsKICAgICB9CiAKICAgICB2b2lkIGJlZ2luQ29t
bWVudCgpCiAgICAgewotICAgICAgICBBU1NFUlQobV90eXBlID09IEhUTUxUb2tlblR5cGVzOjpV
bmluaXRpYWxpemVkKTsKLSAgICAgICAgbV90eXBlID0gSFRNTFRva2VuVHlwZXM6OkNvbW1lbnQ7
CisgICAgICAgIEFTU0VSVChtX3R5cGUgPT0gSFRNTFRva2VuOjpVbmluaXRpYWxpemVkKTsKKyAg
ICAgICAgbV90eXBlID0gSFRNTFRva2VuOjpDb21tZW50OwogICAgIH0KIAogICAgIHZvaWQgYXBw
ZW5kVG9Db21tZW50KFVDaGFyIGNoYXJhY3RlcikKICAgICB7CiAgICAgICAgIEFTU0VSVChjaGFy
YWN0ZXIpOwotICAgICAgICBBU1NFUlQobV90eXBlID09IEhUTUxUb2tlblR5cGVzOjpDb21tZW50
KTsKKyAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBIVE1MVG9rZW46OkNvbW1lbnQpOwogICAgICAg
ICBtX2RhdGEuYXBwZW5kKGNoYXJhY3Rlcik7CiAgICAgICAgIG1fb3JBbGxEYXRhIHw9IGNoYXJh
Y3RlcjsKICAgICB9CiAKICAgICB2b2lkIGVyYXNlQ2hhcmFjdGVycygpCiAgICAgewotICAgICAg
ICBBU1NFUlQobV90eXBlID09IEhUTUxUb2tlblR5cGVzOjpDaGFyYWN0ZXIpOworICAgICAgICBB
U1NFUlQobV90eXBlID09IEhUTUxUb2tlbjo6Q2hhcmFjdGVyKTsKICAgICAgICAgbV9kYXRhLmNs
ZWFyKCk7CiAgICAgICAgIG1fb3JBbGxEYXRhID0gMDsKICAgICB9CiAKIHByaXZhdGU6Ci0gICAg
SFRNTFRva2VuVHlwZXM6OlR5cGUgbV90eXBlOworICAgIEhUTUxUb2tlbjo6VHlwZSBtX3R5cGU7
CiAgICAgQXR0cmlidXRlOjpSYW5nZSBtX3JhbmdlOyAvLyBBbHdheXMgc3RhcnRzIGF0IHplcm8u
CiAgICAgaW50IG1fYmFzZU9mZnNldDsKICAgICBEYXRhVmVjdG9yIG1fZGF0YTsKQEAgLTQ0MCwy
ODEgKzQ0Nyw2IEBAIHByaXZhdGU6CiAgICAgT3duUHRyPERvY3R5cGVEYXRhPiBtX2RvY3R5cGVE
YXRhOwogfTsKIAotY2xhc3MgQXRvbWljSFRNTFRva2VuIDogcHVibGljIFJlZkNvdW50ZWQ8QXRv
bWljSFRNTFRva2VuPiB7Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQXRvbWljSFRNTFRva2Vu
KTsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxBdG9taWNIVE1MVG9rZW4+IGNyZWF0
ZShIVE1MVG9rZW4mIHRva2VuKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBB
dG9taWNIVE1MVG9rZW4odG9rZW4pKTsKLSAgICB9Ci0KLSNpZiBFTkFCTEUoVEhSRUFERURfSFRN
TF9QQVJTRVIpCi0KLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxBdG9taWNIVE1MVG9rZW4+IGNyZWF0
ZShjb25zdCBDb21wYWN0SFRNTFRva2VuJiB0b2tlbikKLSAgICB7Ci0gICAgICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgQXRvbWljSFRNTFRva2VuKHRva2VuKSk7Ci0gICAgfQotCi0jZW5kaWYKLQot
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPEF0b21pY0hUTUxUb2tlbj4gY3JlYXRlKEhUTUxUb2tlblR5
cGVzOjpUeXBlIHR5cGUsIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgY29uc3QgVmVjdG9yPEF0
dHJpYnV0ZT4mIGF0dHJpYnV0ZXMgPSBWZWN0b3I8QXR0cmlidXRlPigpKQotICAgIHsKLSAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBBdG9taWNIVE1MVG9rZW4odHlwZSwgbmFtZSwgYXR0cmli
dXRlcykpOwotICAgIH0KLQotICAgIGJvb2wgZm9yY2VRdWlya3MoKSBjb25zdAotICAgIHsKLSAg
ICAgICAgQVNTRVJUKG1fdHlwZSA9PSBIVE1MVG9rZW5UeXBlczo6RE9DVFlQRSk7Ci0gICAgICAg
IHJldHVybiBtX2RvY3R5cGVEYXRhLT5tX2ZvcmNlUXVpcmtzOwotICAgIH0KLQotICAgIEhUTUxU
b2tlblR5cGVzOjpUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KLQotICAgIGNv
bnN0IEF0b21pY1N0cmluZyYgbmFtZSgpIGNvbnN0Ci0gICAgewotICAgICAgICBBU1NFUlQodXNl
c05hbWUoKSk7Ci0gICAgICAgIHJldHVybiBtX25hbWU7Ci0gICAgfQotCi0gICAgdm9pZCBzZXRO
YW1lKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSkKLSAgICB7Ci0gICAgICAgIEFTU0VSVCh1c2Vz
TmFtZSgpKTsKLSAgICAgICAgbV9uYW1lID0gbmFtZTsKLSAgICB9Ci0KLSAgICBib29sIHNlbGZD
bG9zaW5nKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIEFTU0VSVChtX3R5cGUgPT0gSFRNTFRva2Vu
VHlwZXM6OlN0YXJ0VGFnIHx8IG1fdHlwZSA9PSBIVE1MVG9rZW5UeXBlczo6RW5kVGFnKTsKLSAg
ICAgICAgcmV0dXJuIG1fc2VsZkNsb3Npbmc7Ci0gICAgfQotCi0gICAgQXR0cmlidXRlKiBnZXRB
dHRyaWJ1dGVJdGVtKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUpCi0gICAgewot
ICAgICAgICBBU1NFUlQodXNlc0F0dHJpYnV0ZXMoKSk7Ci0gICAgICAgIHJldHVybiBmaW5kQXR0
cmlidXRlSW5WZWN0b3IobV9hdHRyaWJ1dGVzLCBhdHRyaWJ1dGVOYW1lKTsKLSAgICB9Ci0KLSAg
ICBWZWN0b3I8QXR0cmlidXRlPiYgYXR0cmlidXRlcygpCi0gICAgewotICAgICAgICBBU1NFUlQo
dXNlc0F0dHJpYnV0ZXMoKSk7Ci0gICAgICAgIHJldHVybiBtX2F0dHJpYnV0ZXM7Ci0gICAgfQot
Ci0gICAgY29uc3QgVmVjdG9yPEF0dHJpYnV0ZT4mIGF0dHJpYnV0ZXMoKSBjb25zdAotICAgIHsK
LSAgICAgICAgQVNTRVJUKHVzZXNBdHRyaWJ1dGVzKCkpOwotICAgICAgICByZXR1cm4gbV9hdHRy
aWJ1dGVzOwotICAgIH0KLQotICAgIGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzKCkgY29uc3QKLSAg
ICB7Ci0gICAgICAgIEFTU0VSVChtX3R5cGUgPT0gSFRNTFRva2VuVHlwZXM6OkNoYXJhY3Rlcik7
Ci0gICAgICAgIHJldHVybiBtX2V4dGVybmFsQ2hhcmFjdGVyczsKLSAgICB9Ci0KLSAgICBzaXpl
X3QgY2hhcmFjdGVyc0xlbmd0aCgpIGNvbnN0Ci0gICAgewotICAgICAgICBBU1NFUlQobV90eXBl
ID09IEhUTUxUb2tlblR5cGVzOjpDaGFyYWN0ZXIpOwotICAgICAgICByZXR1cm4gbV9leHRlcm5h
bENoYXJhY3RlcnNMZW5ndGg7Ci0gICAgfQotCi0gICAgYm9vbCBpc0FsbDhCaXREYXRhKCkgY29u
c3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2lzQWxsOEJpdERhdGE7Ci0gICAgfQotCi0gICAg
Y29uc3QgU3RyaW5nJiBjb21tZW50KCkgY29uc3QKLSAgICB7Ci0gICAgICAgIEFTU0VSVChtX3R5
cGUgPT0gSFRNTFRva2VuVHlwZXM6OkNvbW1lbnQpOwotICAgICAgICByZXR1cm4gbV9kYXRhOwot
ICAgIH0KLQotICAgIC8vIEZJWE1FOiBEaXN0aW5ndWlzaCBiZXR3ZWVuIGEgbWlzc2luZyBwdWJs
aWMgaWRlbnRpZmVyIGFuZCBhbiBlbXB0eSBvbmUuCi0gICAgV1RGOjpWZWN0b3I8VUNoYXI+JiBw
dWJsaWNJZGVudGlmaWVyKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIEFTU0VSVChtX3R5cGUgPT0g
SFRNTFRva2VuVHlwZXM6OkRPQ1RZUEUpOwotICAgICAgICByZXR1cm4gbV9kb2N0eXBlRGF0YS0+
bV9wdWJsaWNJZGVudGlmaWVyOwotICAgIH0KLQotICAgIC8vIEZJWE1FOiBEaXN0aW5ndWlzaCBi
ZXR3ZWVuIGEgbWlzc2luZyBzeXN0ZW0gaWRlbnRpZmVyIGFuZCBhbiBlbXB0eSBvbmUuCi0gICAg
V1RGOjpWZWN0b3I8VUNoYXI+JiBzeXN0ZW1JZGVudGlmaWVyKCkgY29uc3QKLSAgICB7Ci0gICAg
ICAgIEFTU0VSVChtX3R5cGUgPT0gSFRNTFRva2VuVHlwZXM6OkRPQ1RZUEUpOwotICAgICAgICBy
ZXR1cm4gbV9kb2N0eXBlRGF0YS0+bV9zeXN0ZW1JZGVudGlmaWVyOwotICAgIH0KLQotICAgIHZv
aWQgY2xlYXJFeHRlcm5hbENoYXJhY3RlcnMoKQotICAgIHsKLSAgICAgICAgbV9leHRlcm5hbENo
YXJhY3RlcnMgPSAwOwotICAgICAgICBtX2V4dGVybmFsQ2hhcmFjdGVyc0xlbmd0aCA9IDA7Ci0g
ICAgICAgIG1faXNBbGw4Qml0RGF0YSA9IGZhbHNlOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBl
eHBsaWNpdCBBdG9taWNIVE1MVG9rZW4oSFRNTFRva2VuJiB0b2tlbikKLSAgICAgICAgOiBtX3R5
cGUodG9rZW4udHlwZSgpKQotICAgIHsKLSAgICAgICAgc3dpdGNoIChtX3R5cGUpIHsKLSAgICAg
ICAgY2FzZSBIVE1MVG9rZW5UeXBlczo6VW5pbml0aWFsaXplZDoKLSAgICAgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgSFRNTFRv
a2VuVHlwZXM6OkRPQ1RZUEU6Ci0gICAgICAgICAgICBtX25hbWUgPSBBdG9taWNTdHJpbmcodG9r
ZW4ubmFtZVN0cmluZygpKTsKLSAgICAgICAgICAgIG1fZG9jdHlwZURhdGEgPSB0b2tlbi5yZWxl
YXNlRG9jdHlwZURhdGEoKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEhUTUxU
b2tlblR5cGVzOjpFbmRPZkZpbGU6Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBI
VE1MVG9rZW5UeXBlczo6U3RhcnRUYWc6Ci0gICAgICAgIGNhc2UgSFRNTFRva2VuVHlwZXM6OkVu
ZFRhZzogewotICAgICAgICAgICAgbV9zZWxmQ2xvc2luZyA9IHRva2VuLnNlbGZDbG9zaW5nKCk7
Ci0gICAgICAgICAgICBtX25hbWUgPSBBdG9taWNTdHJpbmcodG9rZW4ubmFtZVN0cmluZygpKTsK
LSAgICAgICAgICAgIGluaXRpYWxpemVBdHRyaWJ1dGVzKHRva2VuLmF0dHJpYnV0ZXMoKSk7Ci0g
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBjYXNlIEhUTUxUb2tlblR5cGVz
OjpDb21tZW50OgotICAgICAgICAgICAgaWYgKHRva2VuLmlzQWxsOEJpdERhdGEoKSkKLSAgICAg
ICAgICAgICAgICBtX2RhdGEgPSBTdHJpbmc6Om1ha2U4Qml0RnJvbTE2Qml0U291cmNlKHRva2Vu
LmNvbW1lbnQoKS5kYXRhKCksIHRva2VuLmNvbW1lbnQoKS5zaXplKCkpOwotICAgICAgICAgICAg
ZWxzZQotICAgICAgICAgICAgICAgIG1fZGF0YSA9IFN0cmluZyh0b2tlbi5jb21tZW50KCkuZGF0
YSgpLCB0b2tlbi5jb21tZW50KCkuc2l6ZSgpKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICBjYXNlIEhUTUxUb2tlblR5cGVzOjpDaGFyYWN0ZXI6Ci0gICAgICAgICAgICBtX2V4dGVybmFs
Q2hhcmFjdGVycyA9IHRva2VuLmNoYXJhY3RlcnMoKS5kYXRhKCk7Ci0gICAgICAgICAgICBtX2V4
dGVybmFsQ2hhcmFjdGVyc0xlbmd0aCA9IHRva2VuLmNoYXJhY3RlcnMoKS5zaXplKCk7Ci0gICAg
ICAgICAgICBtX2lzQWxsOEJpdERhdGEgPSB0b2tlbi5pc0FsbDhCaXREYXRhKCk7Ci0gICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICB9Ci0gICAgfQotCi0jaWYgRU5BQkxFKFRIUkVBREVEX0hUTUxfUEFSU0VSKQotCi0gICAgZXhw
bGljaXQgQXRvbWljSFRNTFRva2VuKGNvbnN0IENvbXBhY3RIVE1MVG9rZW4mIHRva2VuKQotICAg
ICAgICA6IG1fdHlwZSh0b2tlbi50eXBlKCkpCi0gICAgewotICAgICAgICBzd2l0Y2ggKG1fdHlw
ZSkgewotICAgICAgICBjYXNlIEhUTUxUb2tlblR5cGVzOjpVbmluaXRpYWxpemVkOgotICAgICAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAg
Y2FzZSBIVE1MVG9rZW5UeXBlczo6RE9DVFlQRToKLSAgICAgICAgICAgIG1fbmFtZSA9IHRva2Vu
LmRhdGEoKTsKLSAgICAgICAgICAgIG1fZG9jdHlwZURhdGEgPSBhZG9wdFB0cihuZXcgRG9jdHlw
ZURhdGEoKSk7Ci0gICAgICAgICAgICBtX2RvY3R5cGVEYXRhLT5tX2hhc1B1YmxpY0lkZW50aWZp
ZXIgPSB0cnVlOwotICAgICAgICAgICAgbV9kb2N0eXBlRGF0YS0+bV9wdWJsaWNJZGVudGlmaWVy
LmFwcGVuZCh0b2tlbi5wdWJsaWNJZGVudGlmaWVyKCkuY2hhcmFjdGVycygpLCB0b2tlbi5wdWJs
aWNJZGVudGlmaWVyKCkubGVuZ3RoKCkpOwotICAgICAgICAgICAgbV9kb2N0eXBlRGF0YS0+bV9o
YXNTeXN0ZW1JZGVudGlmaWVyID0gdHJ1ZTsKLSAgICAgICAgICAgIG1fZG9jdHlwZURhdGEtPm1f
c3lzdGVtSWRlbnRpZmllci5hcHBlbmQodG9rZW4uc3lzdGVtSWRlbnRpZmllcigpLmNoYXJhY3Rl
cnMoKSwgdG9rZW4uc3lzdGVtSWRlbnRpZmllcigpLmxlbmd0aCgpKTsKLSAgICAgICAgICAgIG1f
ZG9jdHlwZURhdGEtPm1fZm9yY2VRdWlya3MgPSB0b2tlbi5kb2N0eXBlRm9yY2VzUXVpcmtzKCk7
Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBIVE1MVG9rZW5UeXBlczo6RW5kT2ZG
aWxlOgotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgSFRNTFRva2VuVHlwZXM6OlN0
YXJ0VGFnOgotICAgICAgICAgICAgbV9hdHRyaWJ1dGVzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHko
dG9rZW4uYXR0cmlidXRlcygpLnNpemUoKSk7Ci0gICAgICAgICAgICBmb3IgKFZlY3RvcjxDb21w
YWN0QXR0cmlidXRlPjo6Y29uc3RfaXRlcmF0b3IgaXQgPSB0b2tlbi5hdHRyaWJ1dGVzKCkuYmVn
aW4oKTsgaXQgIT0gdG9rZW4uYXR0cmlidXRlcygpLmVuZCgpOyArK2l0KQotICAgICAgICAgICAg
ICAgIG1fYXR0cmlidXRlcy5hcHBlbmQoQXR0cmlidXRlKFF1YWxpZmllZE5hbWUobnVsbEF0b20s
IGl0LT5uYW1lKCksIG51bGxBdG9tKSwgaXQtPnZhbHVlKCkpKTsKLSAgICAgICAgICAgIC8vIEZh
bGwgdGhyb3VnaCEKLSAgICAgICAgY2FzZSBIVE1MVG9rZW5UeXBlczo6RW5kVGFnOgotICAgICAg
ICAgICAgbV9zZWxmQ2xvc2luZyA9IHRva2VuLnNlbGZDbG9zaW5nKCk7Ci0gICAgICAgICAgICBt
X25hbWUgPSBBdG9taWNTdHJpbmcodG9rZW4uZGF0YSgpKTsKLSAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICBjYXNlIEhUTUxUb2tlblR5cGVzOjpDb21tZW50OgotICAgICAgICAgICAgbV9kYXRh
ID0gdG9rZW4uZGF0YSgpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgSFRNTFRv
a2VuVHlwZXM6OkNoYXJhY3RlcjoKLSAgICAgICAgICAgIG1fZXh0ZXJuYWxDaGFyYWN0ZXJzID0g
dG9rZW4uZGF0YSgpLmNoYXJhY3RlcnMoKTsKLSAgICAgICAgICAgIG1fZXh0ZXJuYWxDaGFyYWN0
ZXJzTGVuZ3RoID0gdG9rZW4uZGF0YSgpLmxlbmd0aCgpOwotICAgICAgICAgICAgbV9pc0FsbDhC
aXREYXRhID0gdG9rZW4uaXNBbGw4Qml0RGF0YSgpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgIH0KLQotI2Vu
ZGlmCi0KLSAgICBleHBsaWNpdCBBdG9taWNIVE1MVG9rZW4oSFRNTFRva2VuVHlwZXM6OlR5cGUg
dHlwZSkKLSAgICAgICAgOiBtX3R5cGUodHlwZSkKLSAgICAgICAgLCBtX2V4dGVybmFsQ2hhcmFj
dGVycygwKQotICAgICAgICAsIG1fZXh0ZXJuYWxDaGFyYWN0ZXJzTGVuZ3RoKDApCi0gICAgICAg
ICwgbV9pc0FsbDhCaXREYXRhKGZhbHNlKQotICAgICAgICAsIG1fc2VsZkNsb3NpbmcoZmFsc2Up
Ci0gICAgewotICAgIH0KLQotICAgIEF0b21pY0hUTUxUb2tlbihIVE1MVG9rZW5UeXBlczo6VHlw
ZSB0eXBlLCBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIGNvbnN0IFZlY3RvcjxBdHRyaWJ1dGU+
JiBhdHRyaWJ1dGVzID0gVmVjdG9yPEF0dHJpYnV0ZT4oKSkKLSAgICAgICAgOiBtX3R5cGUodHlw
ZSkKLSAgICAgICAgLCBtX25hbWUobmFtZSkKLSAgICAgICAgLCBtX2V4dGVybmFsQ2hhcmFjdGVy
cygwKQotICAgICAgICAsIG1fZXh0ZXJuYWxDaGFyYWN0ZXJzTGVuZ3RoKDApCi0gICAgICAgICwg
bV9pc0FsbDhCaXREYXRhKGZhbHNlKQotICAgICAgICAsIG1fc2VsZkNsb3NpbmcoZmFsc2UpCi0g
ICAgICAgICwgbV9hdHRyaWJ1dGVzKGF0dHJpYnV0ZXMpCi0gICAgewotICAgICAgICBBU1NFUlQo
dXNlc05hbWUoKSk7Ci0gICAgfQotCi0gICAgSFRNTFRva2VuVHlwZXM6OlR5cGUgbV90eXBlOwot
Ci0gICAgdm9pZCBpbml0aWFsaXplQXR0cmlidXRlcyhjb25zdCBIVE1MVG9rZW46OkF0dHJpYnV0
ZUxpc3QmIGF0dHJpYnV0ZXMpOwotICAgIFF1YWxpZmllZE5hbWUgbmFtZUZvckF0dHJpYnV0ZShj
b25zdCBIVE1MVG9rZW46OkF0dHJpYnV0ZSYpIGNvbnN0OwotCi0gICAgYm9vbCB1c2VzTmFtZSgp
IGNvbnN0OwotCi0gICAgYm9vbCB1c2VzQXR0cmlidXRlcygpIGNvbnN0OwotCi0gICAgLy8gIm5h
bWUiIGZvciBET0NUWVBFLCBTdGFydFRhZywgYW5kIEVuZFRhZwotICAgIEF0b21pY1N0cmluZyBt
X25hbWU7Ci0KLSAgICAvLyAiZGF0YSIgZm9yIENvbW1lbnQKLSAgICBTdHJpbmcgbV9kYXRhOwot
Ci0gICAgLy8gImNoYXJhY3RlcnMiIGZvciBDaGFyYWN0ZXIKLSAgICAvLwotICAgIC8vIFdlIGRv
bid0IHdhbnQgdG8gY29weSB0aGUgdGhlIGNoYXJhY3RlcnMgb3V0IG9mIHRoZSBUb2tlbiwgc28g
d2UKLSAgICAvLyBrZWVwIGEgcG9pbnRlciB0byBpdHMgYnVmZmVyIGluc3RlYWQuIFRoaXMgYnVm
ZmVyIGlzIG93bmVkIGJ5IHRoZQotICAgIC8vIFRva2VuIGFuZCBjYXVzZXMgYSBsaWZldGltZSBk
ZXBlbmRlbmNlIGJldHdlZW4gdGhlc2Ugb2JqZWN0cy4KLSAgICAvLwotICAgIC8vIEZJWE1FOiBB
ZGQgYSBtZWNoYW5pc20gZm9yICJpbnRlcm5hbGl6aW5nIiB0aGUgY2hhcmFjdGVycyB3aGVuIHRo
ZQotICAgIC8vICAgICAgICBIVE1MVG9rZW4gaXMgZGVzdHJ1Y3RlZC4KLSAgICBjb25zdCBVQ2hh
ciogbV9leHRlcm5hbENoYXJhY3RlcnM7Ci0gICAgc2l6ZV90IG1fZXh0ZXJuYWxDaGFyYWN0ZXJz
TGVuZ3RoOwotICAgIGJvb2wgbV9pc0FsbDhCaXREYXRhOwotCi0gICAgLy8gRm9yIERPQ1RZUEUK
LSAgICBPd25QdHI8RG9jdHlwZURhdGE+IG1fZG9jdHlwZURhdGE7Ci0KLSAgICAvLyBGb3IgU3Rh
cnRUYWcgYW5kIEVuZFRhZwotICAgIGJvb2wgbV9zZWxmQ2xvc2luZzsKLQotICAgIFZlY3RvcjxB
dHRyaWJ1dGU+IG1fYXR0cmlidXRlczsKLX07Ci0KLWlubGluZSB2b2lkIEF0b21pY0hUTUxUb2tl
bjo6aW5pdGlhbGl6ZUF0dHJpYnV0ZXMoY29uc3QgSFRNTFRva2VuOjpBdHRyaWJ1dGVMaXN0JiBh
dHRyaWJ1dGVzKQotewotICAgIHNpemVfdCBzaXplID0gYXR0cmlidXRlcy5zaXplKCk7Ci0gICAg
aWYgKCFzaXplKQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX2F0dHJpYnV0ZXMuY2xlYXIoKTsK
LSAgICBtX2F0dHJpYnV0ZXMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShzaXplKTsKLSAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IHNpemU7ICsraSkgewotICAgICAgICBjb25zdCBIVE1MVG9rZW46
OkF0dHJpYnV0ZSYgYXR0cmlidXRlID0gYXR0cmlidXRlc1tpXTsKLSAgICAgICAgaWYgKGF0dHJp
YnV0ZS5tX25hbWUuaXNFbXB0eSgpKQotICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAg
Ly8gRklYTUU6IFdlIHNob3VsZCBiZSBhYmxlIHRvIGFkZCB0aGUgZm9sbG93aW5nIEFTU0VSVCBv
bmNlIHdlIGZpeAotICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NjI5NzEKLSAgICAgICAgLy8gICBBU1NFUlQoYXR0cmlidXRlLm1fbmFtZVJhbmdlLm1f
c3RhcnQpOwotICAgICAgICBBU1NFUlQoYXR0cmlidXRlLm1fbmFtZVJhbmdlLm1fZW5kKTsKLSAg
ICAgICAgQVNTRVJUKGF0dHJpYnV0ZS5tX3ZhbHVlUmFuZ2UubV9zdGFydCk7Ci0gICAgICAgIEFT
U0VSVChhdHRyaWJ1dGUubV92YWx1ZVJhbmdlLm1fZW5kKTsKLQotICAgICAgICBBdG9taWNTdHJp
bmcgdmFsdWUoYXR0cmlidXRlLm1fdmFsdWUuZGF0YSgpLCBhdHRyaWJ1dGUubV92YWx1ZS5zaXpl
KCkpOwotICAgICAgICBjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lID0gbmFtZUZvckF0dHJpYnV0
ZShhdHRyaWJ1dGUpOwotICAgICAgICBpZiAoIWZpbmRBdHRyaWJ1dGVJblZlY3RvcihtX2F0dHJp
YnV0ZXMsIG5hbWUpKQotICAgICAgICAgICAgbV9hdHRyaWJ1dGVzLmFwcGVuZChBdHRyaWJ1dGUo
bmFtZSwgdmFsdWUpKTsKLSAgICB9Ci19Ci0KIH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVG9rZW5UeXBlcy5oIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9wYXJzZXIvSFRNTFRva2VuVHlwZXMuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggNDBiMjQzNWM2MWViNmFlYzJjOGM0MDA5MjA1MGZjZmMxYzlmNGQwZi4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3Bh
cnNlci9IVE1MVG9rZW5UeXBlcy5oCisrKyAvZGV2L251bGwKQEAgLTEsNDYgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUsIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpZm5kZWYgSFRN
TFRva2VuVHlwZXNfaAotI2RlZmluZSBIVE1MVG9rZW5UeXBlc19oCi0KLW5hbWVzcGFjZSBXZWJD
b3JlIHsKLQotY2xhc3MgSFRNTFRva2VuVHlwZXMgewotcHVibGljOgotICAgIGVudW0gVHlwZSB7
Ci0gICAgICAgIFVuaW5pdGlhbGl6ZWQsCi0gICAgICAgIERPQ1RZUEUsCi0gICAgICAgIFN0YXJ0
VGFnLAotICAgICAgICBFbmRUYWcsCi0gICAgICAgIENvbW1lbnQsCi0gICAgICAgIENoYXJhY3Rl
ciwKLSAgICAgICAgRW5kT2ZGaWxlLAotICAgIH07Ci19OwotCi19Ci0KLSNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRva2VuaXplci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVG9rZW5pemVyLmNwcAppbmRleCAxMDkzODlkZmNh
ZmM2OThiODBmNGM3YzcyYmMyZmFjNGJlNTM0NGEzLi5mMGFkZmUzZmY4YTc1MmE4MmY0YWM2MmVk
MDAyYWY4YmZiZmI3MGZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9I
VE1MVG9rZW5pemVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVG9r
ZW5pemVyLmNwcApAQCAtNTYsMTIgKzU2LDEyIEBAIFF1YWxpZmllZE5hbWUgQXRvbWljSFRNTFRv
a2VuOjpuYW1lRm9yQXR0cmlidXRlKGNvbnN0IEhUTUxUb2tlbjo6QXR0cmlidXRlJiBhdHRyCiAK
IGJvb2wgQXRvbWljSFRNTFRva2VuOjp1c2VzTmFtZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1f
dHlwZSA9PSBIVE1MVG9rZW5UeXBlczo6U3RhcnRUYWcgfHwgbV90eXBlID09IEhUTUxUb2tlblR5
cGVzOjpFbmRUYWcgfHwgbV90eXBlID09IEhUTUxUb2tlblR5cGVzOjpET0NUWVBFOworICAgIHJl
dHVybiBtX3R5cGUgPT0gSFRNTFRva2VuOjpTdGFydFRhZyB8fCBtX3R5cGUgPT0gSFRNTFRva2Vu
OjpFbmRUYWcgfHwgbV90eXBlID09IEhUTUxUb2tlbjo6RE9DVFlQRTsKIH0KIAogYm9vbCBBdG9t
aWNIVE1MVG9rZW46OnVzZXNBdHRyaWJ1dGVzKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV90eXBl
ID09IEhUTUxUb2tlblR5cGVzOjpTdGFydFRhZyB8fCBtX3R5cGUgPT0gSFRNTFRva2VuVHlwZXM6
OkVuZFRhZzsKKyAgICByZXR1cm4gbV90eXBlID09IEhUTUxUb2tlbjo6U3RhcnRUYWcgfHwgbV90
eXBlID09IEhUTUxUb2tlbjo6RW5kVGFnOwogfQogCiBzdGF0aWMgaW5saW5lIFVDaGFyIHRvTG93
ZXJDYXNlKFVDaGFyIGNjKQpAQCAtMTc4LDkgKzE3OCw5IEBAIGlubGluZSBib29sIEhUTUxUb2tl
bml6ZXI6OnByb2Nlc3NFbnRpdHkoU2VnbWVudGVkU3RyaW5nJiBzb3VyY2UpCiAKIGJvb2wgSFRN
TFRva2VuaXplcjo6Zmx1c2hCdWZmZXJlZEVuZFRhZyhTZWdtZW50ZWRTdHJpbmcmIHNvdXJjZSkK
IHsKLSAgICBBU1NFUlQobV90b2tlbi0+dHlwZSgpID09IEhUTUxUb2tlblR5cGVzOjpDaGFyYWN0
ZXIgfHwgbV90b2tlbi0+dHlwZSgpID09IEhUTUxUb2tlblR5cGVzOjpVbmluaXRpYWxpemVkKTsK
KyAgICBBU1NFUlQobV90b2tlbi0+dHlwZSgpID09IEhUTUxUb2tlbjo6Q2hhcmFjdGVyIHx8IG1f
dG9rZW4tPnR5cGUoKSA9PSBIVE1MVG9rZW46OlVuaW5pdGlhbGl6ZWQpOwogICAgIHNvdXJjZS5h
ZHZhbmNlQW5kVXBkYXRlTGluZU51bWJlcigpOwotICAgIGlmIChtX3Rva2VuLT50eXBlKCkgPT0g
SFRNTFRva2VuVHlwZXM6OkNoYXJhY3RlcikKKyAgICBpZiAobV90b2tlbi0+dHlwZSgpID09IEhU
TUxUb2tlbjo6Q2hhcmFjdGVyKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBtX3Rva2VuLT5i
ZWdpbkVuZFRhZyhtX2J1ZmZlcmVkRW5kVGFnTmFtZSk7CiAgICAgbV9idWZmZXJlZEVuZFRhZ05h
bWUuY2xlYXIoKTsKQEAgLTIxMiw3ICsyMTIsNyBAQCBib29sIEhUTUxUb2tlbml6ZXI6Om5leHRU
b2tlbihTZWdtZW50ZWRTdHJpbmcmIHNvdXJjZSwgSFRNTFRva2VuJiB0b2tlbikKIHsKICAgICAv
LyBJZiB3ZSBoYXZlIGEgdG9rZW4gaW4gcHJvZ3Jlc3MsIHRoZW4gd2UncmUgc3VwcG9zZWQgdG8g
YmUgY2FsbGVkIGJhY2sKICAgICAvLyB3aXRoIHRoZSBzYW1lIHRva2VuIHNvIHdlIGNhbiBmaW5p
c2ggaXQuCi0gICAgQVNTRVJUKCFtX3Rva2VuIHx8IG1fdG9rZW4gPT0gJnRva2VuIHx8IHRva2Vu
LnR5cGUoKSA9PSBIVE1MVG9rZW5UeXBlczo6VW5pbml0aWFsaXplZCk7CisgICAgQVNTRVJUKCFt
X3Rva2VuIHx8IG1fdG9rZW4gPT0gJnRva2VuIHx8IHRva2VuLnR5cGUoKSA9PSBIVE1MVG9rZW46
OlVuaW5pdGlhbGl6ZWQpOwogICAgIG1fdG9rZW4gPSAmdG9rZW47CiAKICAgICBpZiAoIW1fYnVm
ZmVyZWRFbmRUYWdOYW1lLmlzRW1wdHkoKSAmJiAhaXNFbmRUYWdCdWZmZXJpbmdTdGF0ZShtX3N0
YXRlKSkgewpAQCAtMjM4LDcgKzIzOCw3IEBAIGJvb2wgSFRNTFRva2VuaXplcjo6bmV4dFRva2Vu
KFNlZ21lbnRlZFN0cmluZyYgc291cmNlLCBIVE1MVG9rZW4mIHRva2VuKQogICAgICAgICBpZiAo
Y2MgPT0gJyYnKQogICAgICAgICAgICAgSFRNTF9BRFZBTkNFX1RPKENoYXJhY3RlclJlZmVyZW5j
ZUluRGF0YVN0YXRlKTsKICAgICAgICAgZWxzZSBpZiAoY2MgPT0gJzwnKSB7Ci0gICAgICAgICAg
ICBpZiAobV90b2tlbi0+dHlwZSgpID09IEhUTUxUb2tlblR5cGVzOjpDaGFyYWN0ZXIpIHsKKyAg
ICAgICAgICAgIGlmIChtX3Rva2VuLT50eXBlKCkgPT0gSFRNTFRva2VuOjpDaGFyYWN0ZXIpIHsK
ICAgICAgICAgICAgICAgICAvLyBXZSBoYXZlIGEgYnVuY2ggb2YgY2hhcmFjdGVyIHRva2VucyBx
dWV1ZWQgdXAgdGhhdCB3ZQogICAgICAgICAgICAgICAgIC8vIGFyZSBlbWl0dGluZyBsYXppbHkg
aGVyZS4KICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUb2tlbml6ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
cGFyc2VyL0hUTUxUb2tlbml6ZXIuaAppbmRleCAzM2YzODU5OWI5OTBlYjMxOTcyZGIzZGE4YjMx
ZjUyNjBhYWM5NjBlLi44YTQzZDYwNjgwODk0YTUxN2FiOTk0NTQ4OWQwOGIyN2VkODg0MjAyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVG9rZW5pemVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRva2VuaXplci5oCkBAIC0yNTMsOCAr
MjUzLDggQEAgcHJpdmF0ZToKIAogICAgIGlubGluZSB2b2lkIHNhdmVFbmRUYWdOYW1lSWZOZWVk
ZWQoKQogICAgIHsKLSAgICAgICAgQVNTRVJUKG1fdG9rZW4tPnR5cGUoKSAhPSBIVE1MVG9rZW5U
eXBlczo6VW5pbml0aWFsaXplZCk7Ci0gICAgICAgIGlmIChtX3Rva2VuLT50eXBlKCkgPT0gSFRN
TFRva2VuVHlwZXM6OlN0YXJ0VGFnKQorICAgICAgICBBU1NFUlQobV90b2tlbi0+dHlwZSgpICE9
IEhUTUxUb2tlbjo6VW5pbml0aWFsaXplZCk7CisgICAgICAgIGlmIChtX3Rva2VuLT50eXBlKCkg
PT0gSFRNTFRva2VuOjpTdGFydFRhZykKICAgICAgICAgICAgIG1fYXBwcm9wcmlhdGVFbmRUYWdO
YW1lID0gbV90b2tlbi0+bmFtZSgpOwogICAgIH0KICAgICBpbmxpbmUgYm9vbCBpc0FwcHJvcHJp
YXRlRW5kVGFnKCk7CkBAIC0yNjIsNyArMjYyLDcgQEAgcHJpdmF0ZToKIAogICAgIGlubGluZSBi
b29sIGhhdmVCdWZmZXJlZENoYXJhY3RlclRva2VuKCkKICAgICB7Ci0gICAgICAgIHJldHVybiBt
X3Rva2VuLT50eXBlKCkgPT0gSFRNTFRva2VuOjpUeXBlOjpDaGFyYWN0ZXI7CisgICAgICAgIHJl
dHVybiBtX3Rva2VuLT50eXBlKCkgPT0gSFRNTFRva2VuOjpDaGFyYWN0ZXI7CiAgICAgfQogCiAg
ICAgU3RhdGUgbV9zdGF0ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2Vy
L0hUTUxUcmVlQnVpbGRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVHJl
ZUJ1aWxkZXIuY3BwCmluZGV4IDg5MTZjYmU5N2NiNjViOTE5NzQ1MDA4NDYxMWNmMzNiMTc3N2Q0
ZGQuLjMzMjg0MDIzNzI2NmIxMzBkZGIwODM5ZjMyODJmNjIyYmE0YTFjYmYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUcmVlQnVpbGRlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRyZWVCdWlsZGVyLmNwcApAQCAtMjcsNiArMjcs
NyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkhUTUxUcmVlQnVpbGRlci5oIgog
CisjaW5jbHVkZSAiQXRvbWljSFRNTFRva2VuLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRGcmFnbWVu
dC5oIgogI2luY2x1ZGUgIkhUTUxEb2N1bWVudC5oIgogI2luY2x1ZGUgIkhUTUxEb2N1bWVudFBh
cnNlci5oIgpAQCAtMzg0LDI5ICszODUsMjkgQEAgdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OmNvbnN0
cnVjdFRyZWUoQXRvbWljSFRNTFRva2VuKiB0b2tlbikKIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpw
cm9jZXNzVG9rZW4oQXRvbWljSFRNTFRva2VuKiB0b2tlbikKIHsKICAgICBzd2l0Y2ggKHRva2Vu
LT50eXBlKCkpIHsKLSAgICBjYXNlIEhUTUxUb2tlblR5cGVzOjpVbmluaXRpYWxpemVkOgorICAg
IGNhc2UgSFRNTFRva2VuOjpVbmluaXRpYWxpemVkOgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBIVE1MVG9rZW5UeXBlczo6RE9DVFlQRToK
KyAgICBjYXNlIEhUTUxUb2tlbjo6RE9DVFlQRToKICAgICAgICAgbV9zaG91bGRTa2lwTGVhZGlu
Z05ld2xpbmUgPSBmYWxzZTsKICAgICAgICAgcHJvY2Vzc0RvY3R5cGVUb2tlbih0b2tlbik7CiAg
ICAgICAgIGJyZWFrOwotICAgIGNhc2UgSFRNTFRva2VuVHlwZXM6OlN0YXJ0VGFnOgorICAgIGNh
c2UgSFRNTFRva2VuOjpTdGFydFRhZzoKICAgICAgICAgbV9zaG91bGRTa2lwTGVhZGluZ05ld2xp
bmUgPSBmYWxzZTsKICAgICAgICAgcHJvY2Vzc1N0YXJ0VGFnKHRva2VuKTsKICAgICAgICAgYnJl
YWs7Ci0gICAgY2FzZSBIVE1MVG9rZW5UeXBlczo6RW5kVGFnOgorICAgIGNhc2UgSFRNTFRva2Vu
OjpFbmRUYWc6CiAgICAgICAgIG1fc2hvdWxkU2tpcExlYWRpbmdOZXdsaW5lID0gZmFsc2U7CiAg
ICAgICAgIHByb2Nlc3NFbmRUYWcodG9rZW4pOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEhU
TUxUb2tlblR5cGVzOjpDb21tZW50OgorICAgIGNhc2UgSFRNTFRva2VuOjpDb21tZW50OgogICAg
ICAgICBtX3Nob3VsZFNraXBMZWFkaW5nTmV3bGluZSA9IGZhbHNlOwogICAgICAgICBwcm9jZXNz
Q29tbWVudCh0b2tlbik7CiAgICAgICAgIHJldHVybjsKLSAgICBjYXNlIEhUTUxUb2tlblR5cGVz
OjpDaGFyYWN0ZXI6CisgICAgY2FzZSBIVE1MVG9rZW46OkNoYXJhY3RlcjoKICAgICAgICAgcHJv
Y2Vzc0NoYXJhY3Rlcih0b2tlbik7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgSFRNTFRva2Vu
VHlwZXM6OkVuZE9mRmlsZToKKyAgICBjYXNlIEhUTUxUb2tlbjo6RW5kT2ZGaWxlOgogICAgICAg
ICBtX3Nob3VsZFNraXBMZWFkaW5nTmV3bGluZSA9IGZhbHNlOwogICAgICAgICBwcm9jZXNzRW5k
T2ZGaWxlKHRva2VuKTsKICAgICAgICAgYnJlYWs7CkBAIC00MTUsNyArNDE2LDcgQEAgdm9pZCBI
VE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NUb2tlbihBdG9taWNIVE1MVG9rZW4qIHRva2VuKQogCiB2
b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0RvY3R5cGVUb2tlbihBdG9taWNIVE1MVG9rZW4q
IHRva2VuKQogewotICAgIEFTU0VSVCh0b2tlbi0+dHlwZSgpID09IEhUTUxUb2tlblR5cGVzOjpE
T0NUWVBFKTsKKyAgICBBU1NFUlQodG9rZW4tPnR5cGUoKSA9PSBIVE1MVG9rZW46OkRPQ1RZUEUp
OwogICAgIGlmIChtX2luc2VydGlvbk1vZGUgPT0gSW5pdGlhbE1vZGUpIHsKICAgICAgICAgbV90
cmVlLmluc2VydERvY3R5cGUodG9rZW4pOwogICAgICAgICBzZXRJbnNlcnRpb25Nb2RlKEJlZm9y
ZUhUTUxNb2RlKTsKQEAgLTQzMiwxMyArNDMzLDEzIEBAIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpw
cm9jZXNzRG9jdHlwZVRva2VuKEF0b21pY0hUTUxUb2tlbiogdG9rZW4pCiB2b2lkIEhUTUxUcmVl
QnVpbGRlcjo6cHJvY2Vzc0Zha2VTdGFydFRhZyhjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1l
LCBjb25zdCBWZWN0b3I8QXR0cmlidXRlPiYgYXR0cmlidXRlcykKIHsKICAgICAvLyBGSVhNRTog
V2UnbGwgbmVlZCBhIGZhbmNpZXIgY29udmVyc2lvbiB0aGFuIGp1c3QgImxvY2FsTmFtZSIgZm9y
IFNWRy9NYXRoTUwgdGFncy4KLSAgICBSZWZQdHI8QXRvbWljSFRNTFRva2VuPiBmYWtlVG9rZW4g
PSBBdG9taWNIVE1MVG9rZW46OmNyZWF0ZShIVE1MVG9rZW5UeXBlczo6U3RhcnRUYWcsIHRhZ05h
bWUubG9jYWxOYW1lKCksIGF0dHJpYnV0ZXMpOworICAgIFJlZlB0cjxBdG9taWNIVE1MVG9rZW4+
IGZha2VUb2tlbiA9IEF0b21pY0hUTUxUb2tlbjo6Y3JlYXRlKEhUTUxUb2tlbjo6U3RhcnRUYWcs
IHRhZ05hbWUubG9jYWxOYW1lKCksIGF0dHJpYnV0ZXMpOwogICAgIHByb2Nlc3NTdGFydFRhZyhm
YWtlVG9rZW4uZ2V0KCkpOwogfQogCiB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0Zha2VF
bmRUYWcoY29uc3QgQXRvbWljU3RyaW5nJiB0YWdOYW1lKQogewotICAgIFJlZlB0cjxBdG9taWNI
VE1MVG9rZW4+IGZha2VUb2tlbiA9IEF0b21pY0hUTUxUb2tlbjo6Y3JlYXRlKEhUTUxUb2tlblR5
cGVzOjpFbmRUYWcsIHRhZ05hbWUpOworICAgIFJlZlB0cjxBdG9taWNIVE1MVG9rZW4+IGZha2VU
b2tlbiA9IEF0b21pY0hUTUxUb2tlbjo6Y3JlYXRlKEhUTUxUb2tlbjo6RW5kVGFnLCB0YWdOYW1l
KTsKICAgICBwcm9jZXNzRW5kVGFnKGZha2VUb2tlbi5nZXQoKSk7CiB9CiAKQEAgLTQ1OSw3ICs0
NjAsNyBAQCB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0Zha2VQRW5kVGFnSWZQSW5CdXR0
b25TY29wZSgpCiB7CiAgICAgaWYgKCFtX3RyZWUub3BlbkVsZW1lbnRzKCktPmluQnV0dG9uU2Nv
cGUocFRhZy5sb2NhbE5hbWUoKSkpCiAgICAgICAgIHJldHVybjsKLSAgICBSZWZQdHI8QXRvbWlj
SFRNTFRva2VuPiBlbmRQID0gQXRvbWljSFRNTFRva2VuOjpjcmVhdGUoSFRNTFRva2VuVHlwZXM6
OkVuZFRhZywgcFRhZy5sb2NhbE5hbWUoKSk7CisgICAgUmVmUHRyPEF0b21pY0hUTUxUb2tlbj4g
ZW5kUCA9IEF0b21pY0hUTUxUb2tlbjo6Y3JlYXRlKEhUTUxUb2tlbjo6RW5kVGFnLCBwVGFnLmxv
Y2FsTmFtZSgpKTsKICAgICBwcm9jZXNzRW5kVGFnKGVuZFAuZ2V0KCkpOwogfQogCkBAIC00Nzgs
NyArNDc5LDcgQEAgVmVjdG9yPEF0dHJpYnV0ZT4gSFRNTFRyZWVCdWlsZGVyOjphdHRyaWJ1dGVz
Rm9ySXNpbmRleElucHV0KEF0b21pY0hUTUxUb2tlbiogdG8KIAogdm9pZCBIVE1MVHJlZUJ1aWxk
ZXI6OnByb2Nlc3NJc2luZGV4U3RhcnRUYWdGb3JJbkJvZHkoQXRvbWljSFRNTFRva2VuKiB0b2tl
bikKIHsKLSAgICBBU1NFUlQodG9rZW4tPnR5cGUoKSA9PSBIVE1MVG9rZW5UeXBlczo6U3RhcnRU
YWcpOworICAgIEFTU0VSVCh0b2tlbi0+dHlwZSgpID09IEhUTUxUb2tlbjo6U3RhcnRUYWcpOwog
ICAgIEFTU0VSVCh0b2tlbi0+bmFtZSgpID09IGlzaW5kZXhUYWcpOwogICAgIHBhcnNlRXJyb3Io
dG9rZW4pOwogICAgIGlmIChtX3RyZWUuZm9ybSgpKQpAQCAtNjMwLDcgKzYzMSw3IEBAIHN0YXRp
YyB2b2lkIGFkanVzdEZvcmVpZ25BdHRyaWJ1dGVzKEF0b21pY0hUTUxUb2tlbiogdG9rZW4pCiAK
IHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzU3RhcnRUYWdGb3JJbkJvZHkoQXRvbWljSFRN
TFRva2VuKiB0b2tlbikKIHsKLSAgICBBU1NFUlQodG9rZW4tPnR5cGUoKSA9PSBIVE1MVG9rZW5U
eXBlczo6U3RhcnRUYWcpOworICAgIEFTU0VSVCh0b2tlbi0+dHlwZSgpID09IEhUTUxUb2tlbjo6
U3RhcnRUYWcpOwogICAgIGlmICh0b2tlbi0+bmFtZSgpID09IGh0bWxUYWcpIHsKICAgICAgICAg
cHJvY2Vzc0h0bWxTdGFydFRhZ0ZvckluQm9keSh0b2tlbik7CiAgICAgICAgIHJldHVybjsKQEAg
LTg5Nyw3ICs4OTgsNyBAQCB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc1N0YXJ0VGFnRm9y
SW5Cb2R5KEF0b21pY0hUTUxUb2tlbiogdG9rZW4pCiAgICAgfQogICAgIGlmICh0b2tlbi0+bmFt
ZSgpID09IG9wdGdyb3VwVGFnIHx8IHRva2VuLT5uYW1lKCkgPT0gb3B0aW9uVGFnKSB7CiAgICAg
ICAgIGlmIChtX3RyZWUuY3VycmVudFN0YWNrSXRlbSgpLT5oYXNUYWdOYW1lKG9wdGlvblRhZykp
IHsKLSAgICAgICAgICAgIFJlZlB0cjxBdG9taWNIVE1MVG9rZW4+IGVuZE9wdGlvbiA9IEF0b21p
Y0hUTUxUb2tlbjo6Y3JlYXRlKEhUTUxUb2tlblR5cGVzOjpFbmRUYWcsIG9wdGlvblRhZy5sb2Nh
bE5hbWUoKSk7CisgICAgICAgICAgICBSZWZQdHI8QXRvbWljSFRNTFRva2VuPiBlbmRPcHRpb24g
PSBBdG9taWNIVE1MVG9rZW46OmNyZWF0ZShIVE1MVG9rZW46OkVuZFRhZywgb3B0aW9uVGFnLmxv
Y2FsTmFtZSgpKTsKICAgICAgICAgICAgIHByb2Nlc3NFbmRUYWcoZW5kT3B0aW9uLmdldCgpKTsK
ICAgICAgICAgfQogICAgICAgICBtX3RyZWUucmVjb25zdHJ1Y3RUaGVBY3RpdmVGb3JtYXR0aW5n
RWxlbWVudHMoKTsKQEAgLTk2OSwzMyArOTcwLDExIEBAIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpw
cm9jZXNzVGVtcGxhdGVFbmRUYWcoQXRvbWljSFRNTFRva2VuKiB0b2tlbikKICAgICBtX3RlbXBs
YXRlSW5zZXJ0aW9uTW9kZXMucmVtb3ZlTGFzdCgpOwogICAgIHJlc2V0SW5zZXJ0aW9uTW9kZUFw
cHJvcHJpYXRlbHkoKTsKIH0KLQotYm9vbCBIVE1MVHJlZUJ1aWxkZXI6OnBvcEFsbFRlbXBsYXRl
c0ZvckVuZE9mRmlsZSgpCi17Ci0gICAgaWYgKG1fdGVtcGxhdGVJbnNlcnRpb25Nb2Rlcy5pc0Vt
cHR5KCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHdoaWxlICghbV90ZW1wbGF0ZUlu
c2VydGlvbk1vZGVzLmlzRW1wdHkoKSkgewotICAgICAgICBpZiAobV90cmVlLmN1cnJlbnRJc1Jv
b3ROb2RlKCkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIGlmIChtX3RyZWUu
Y3VycmVudE5vZGUoKS0+aGFzVGFnTmFtZSh0ZW1wbGF0ZVRhZykpCi0gICAgICAgICAgICBtX3Rl
bXBsYXRlSW5zZXJ0aW9uTW9kZXMucmVtb3ZlTGFzdCgpOwotICAgICAgICBtX3RyZWUub3BlbkVs
ZW1lbnRzKCktPnBvcCgpOwotICAgIH0KLQotICAgIHJlc2V0SW5zZXJ0aW9uTW9kZUFwcHJvcHJp
YXRlbHkoKTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KICNlbmRpZgogCiBib29sIEhUTUxUcmVlQnVp
bGRlcjo6cHJvY2Vzc0NvbGdyb3VwRW5kVGFnRm9ySW5Db2x1bW5Hcm91cCgpCiB7Ci0gICAgYm9v
bCBpZ25vcmVGYWtlRW5kVGFnID0gbV90cmVlLmN1cnJlbnRJc1Jvb3ROb2RlKCk7Ci0jaWYgRU5B
QkxFKFRFTVBMQVRFX0VMRU1FTlQpCi0gICAgaWdub3JlRmFrZUVuZFRhZyA9IGlnbm9yZUZha2VF
bmRUYWcgfHwgbV90cmVlLmN1cnJlbnROb2RlKCktPmhhc1RhZ05hbWUodGVtcGxhdGVUYWcpOwot
I2VuZGlmCi0KLSAgICBpZiAoaWdub3JlRmFrZUVuZFRhZykgeworICAgIGlmIChtX3RyZWUuY3Vy
cmVudElzUm9vdE5vZGUoKSB8fCBtX3RyZWUuY3VycmVudE5vZGUoKS0+aGFzVGFnTmFtZSh0ZW1w
bGF0ZVRhZykpIHsKICAgICAgICAgQVNTRVJUKGlzUGFyc2luZ0ZyYWdtZW50T3JUZW1wbGF0ZUNv
bnRlbnRzKCkpOwogICAgICAgICAvLyBGSVhNRTogcGFyc2UgZXJyb3IKICAgICAgICAgcmV0dXJu
IGZhbHNlOwpAQCAtMTAyMSw3ICsxMDAwLDcgQEAgdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OmNsb3Nl
VGhlQ2VsbCgpCiAKIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzU3RhcnRUYWdGb3JJblRh
YmxlKEF0b21pY0hUTUxUb2tlbiogdG9rZW4pCiB7Ci0gICAgQVNTRVJUKHRva2VuLT50eXBlKCkg
PT0gSFRNTFRva2VuVHlwZXM6OlN0YXJ0VGFnKTsKKyAgICBBU1NFUlQodG9rZW4tPnR5cGUoKSA9
PSBIVE1MVG9rZW46OlN0YXJ0VGFnKTsKICAgICBpZiAodG9rZW4tPm5hbWUoKSA9PSBjYXB0aW9u
VGFnKSB7CiAgICAgICAgIG1fdHJlZS5vcGVuRWxlbWVudHMoKS0+cG9wVW50aWxUYWJsZVNjb3Bl
TWFya2VyKCk7CiAgICAgICAgIG1fdHJlZS5hY3RpdmVGb3JtYXR0aW5nRWxlbWVudHMoKS0+YXBw
ZW5kTWFya2VyKCk7CkBAIC0xMDk3LDcgKzEwNzYsNyBAQCB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6
cHJvY2Vzc1N0YXJ0VGFnRm9ySW5UYWJsZShBdG9taWNIVE1MVG9rZW4qIHRva2VuKQogCiB2b2lk
IEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc1N0YXJ0VGFnKEF0b21pY0hUTUxUb2tlbiogdG9rZW4p
CiB7Ci0gICAgQVNTRVJUKHRva2VuLT50eXBlKCkgPT0gSFRNTFRva2VuVHlwZXM6OlN0YXJ0VGFn
KTsKKyAgICBBU1NFUlQodG9rZW4tPnR5cGUoKSA9PSBIVE1MVG9rZW46OlN0YXJ0VGFnKTsKICAg
ICBzd2l0Y2ggKGluc2VydGlvbk1vZGUoKSkgewogICAgIGNhc2UgSW5pdGlhbE1vZGU6CiAgICAg
ICAgIEFTU0VSVChpbnNlcnRpb25Nb2RlKCkgPT0gSW5pdGlhbE1vZGUpOwpAQCAtMTM2Niw3ICsx
MzQ1LDcgQEAgdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NTdGFydFRhZyhBdG9taWNIVE1M
VG9rZW4qIHRva2VuKQogICAgICAgICAgICAgfHwgdG9rZW4tPm5hbWUoKSA9PSB0clRhZwogICAg
ICAgICAgICAgfHwgaXNUYWJsZUNlbGxDb250ZXh0VGFnKHRva2VuLT5uYW1lKCkpKSB7CiAgICAg
ICAgICAgICBwYXJzZUVycm9yKHRva2VuKTsKLSAgICAgICAgICAgIFJlZlB0cjxBdG9taWNIVE1M
VG9rZW4+IGVuZFNlbGVjdCA9IEF0b21pY0hUTUxUb2tlbjo6Y3JlYXRlKEhUTUxUb2tlblR5cGVz
OjpFbmRUYWcsIHNlbGVjdFRhZy5sb2NhbE5hbWUoKSk7CisgICAgICAgICAgICBSZWZQdHI8QXRv
bWljSFRNTFRva2VuPiBlbmRTZWxlY3QgPSBBdG9taWNIVE1MVG9rZW46OmNyZWF0ZShIVE1MVG9r
ZW46OkVuZFRhZywgc2VsZWN0VGFnLmxvY2FsTmFtZSgpKTsKICAgICAgICAgICAgIHByb2Nlc3NF
bmRUYWcoZW5kU2VsZWN0LmdldCgpKTsKICAgICAgICAgICAgIHByb2Nlc3NTdGFydFRhZyh0b2tl
bik7CiAgICAgICAgICAgICByZXR1cm47CkBAIC0xMzgwLDcgKzEzNTksNyBAQCB2b2lkIEhUTUxU
cmVlQnVpbGRlcjo6cHJvY2Vzc1N0YXJ0VGFnKEF0b21pY0hUTUxUb2tlbiogdG9rZW4pCiAgICAg
ICAgIH0KICAgICAgICAgaWYgKHRva2VuLT5uYW1lKCkgPT0gb3B0aW9uVGFnKSB7CiAgICAgICAg
ICAgICBpZiAobV90cmVlLmN1cnJlbnRTdGFja0l0ZW0oKS0+aGFzVGFnTmFtZShvcHRpb25UYWcp
KSB7Ci0gICAgICAgICAgICAgICAgUmVmUHRyPEF0b21pY0hUTUxUb2tlbj4gZW5kT3B0aW9uID0g
QXRvbWljSFRNTFRva2VuOjpjcmVhdGUoSFRNTFRva2VuVHlwZXM6OkVuZFRhZywgb3B0aW9uVGFn
LmxvY2FsTmFtZSgpKTsKKyAgICAgICAgICAgICAgICBSZWZQdHI8QXRvbWljSFRNTFRva2VuPiBl
bmRPcHRpb24gPSBBdG9taWNIVE1MVG9rZW46OmNyZWF0ZShIVE1MVG9rZW46OkVuZFRhZywgb3B0
aW9uVGFnLmxvY2FsTmFtZSgpKTsKICAgICAgICAgICAgICAgICBwcm9jZXNzRW5kVGFnKGVuZE9w
dGlvbi5nZXQoKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBtX3RyZWUuaW5zZXJ0SFRN
TEVsZW1lbnQodG9rZW4pOwpAQCAtMTM4OCwxMSArMTM2NywxMSBAQCB2b2lkIEhUTUxUcmVlQnVp
bGRlcjo6cHJvY2Vzc1N0YXJ0VGFnKEF0b21pY0hUTUxUb2tlbiogdG9rZW4pCiAgICAgICAgIH0K
ICAgICAgICAgaWYgKHRva2VuLT5uYW1lKCkgPT0gb3B0Z3JvdXBUYWcpIHsKICAgICAgICAgICAg
IGlmIChtX3RyZWUuY3VycmVudFN0YWNrSXRlbSgpLT5oYXNUYWdOYW1lKG9wdGlvblRhZykpIHsK
LSAgICAgICAgICAgICAgICBSZWZQdHI8QXRvbWljSFRNTFRva2VuPiBlbmRPcHRpb24gPSBBdG9t
aWNIVE1MVG9rZW46OmNyZWF0ZShIVE1MVG9rZW5UeXBlczo6RW5kVGFnLCBvcHRpb25UYWcubG9j
YWxOYW1lKCkpOworICAgICAgICAgICAgICAgIFJlZlB0cjxBdG9taWNIVE1MVG9rZW4+IGVuZE9w
dGlvbiA9IEF0b21pY0hUTUxUb2tlbjo6Y3JlYXRlKEhUTUxUb2tlbjo6RW5kVGFnLCBvcHRpb25U
YWcubG9jYWxOYW1lKCkpOwogICAgICAgICAgICAgICAgIHByb2Nlc3NFbmRUYWcoZW5kT3B0aW9u
LmdldCgpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChtX3RyZWUuY3VycmVudFN0
YWNrSXRlbSgpLT5oYXNUYWdOYW1lKG9wdGdyb3VwVGFnKSkgewotICAgICAgICAgICAgICAgIFJl
ZlB0cjxBdG9taWNIVE1MVG9rZW4+IGVuZE9wdGdyb3VwID0gQXRvbWljSFRNTFRva2VuOjpjcmVh
dGUoSFRNTFRva2VuVHlwZXM6OkVuZFRhZywgb3B0Z3JvdXBUYWcubG9jYWxOYW1lKCkpOworICAg
ICAgICAgICAgICAgIFJlZlB0cjxBdG9taWNIVE1MVG9rZW4+IGVuZE9wdGdyb3VwID0gQXRvbWlj
SFRNTFRva2VuOjpjcmVhdGUoSFRNTFRva2VuOjpFbmRUYWcsIG9wdGdyb3VwVGFnLmxvY2FsTmFt
ZSgpKTsKICAgICAgICAgICAgICAgICBwcm9jZXNzRW5kVGFnKGVuZE9wdGdyb3VwLmdldCgpKTsK
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgIG1fdHJlZS5pbnNlcnRIVE1MRWxlbWVudCh0b2tl
bik7CkBAIC0xNDAwLDcgKzEzNzksNyBAQCB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc1N0
YXJ0VGFnKEF0b21pY0hUTUxUb2tlbiogdG9rZW4pCiAgICAgICAgIH0KICAgICAgICAgaWYgKHRv
a2VuLT5uYW1lKCkgPT0gc2VsZWN0VGFnKSB7CiAgICAgICAgICAgICBwYXJzZUVycm9yKHRva2Vu
KTsKLSAgICAgICAgICAgIFJlZlB0cjxBdG9taWNIVE1MVG9rZW4+IGVuZFNlbGVjdCA9IEF0b21p
Y0hUTUxUb2tlbjo6Y3JlYXRlKEhUTUxUb2tlblR5cGVzOjpFbmRUYWcsIHNlbGVjdFRhZy5sb2Nh
bE5hbWUoKSk7CisgICAgICAgICAgICBSZWZQdHI8QXRvbWljSFRNTFRva2VuPiBlbmRTZWxlY3Qg
PSBBdG9taWNIVE1MVG9rZW46OmNyZWF0ZShIVE1MVG9rZW46OkVuZFRhZywgc2VsZWN0VGFnLmxv
Y2FsTmFtZSgpKTsKICAgICAgICAgICAgIHByb2Nlc3NFbmRUYWcoZW5kU2VsZWN0LmdldCgpKTsK
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtMTQxMiw3ICsxMzkxLDcgQEAgdm9p
ZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NTdGFydFRhZyhBdG9taWNIVE1MVG9rZW4qIHRva2Vu
KQogICAgICAgICAgICAgICAgIEFTU0VSVChpc1BhcnNpbmdGcmFnbWVudCgpKTsKICAgICAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBSZWZQdHI8QXRvbWlj
SFRNTFRva2VuPiBlbmRTZWxlY3QgPSBBdG9taWNIVE1MVG9rZW46OmNyZWF0ZShIVE1MVG9rZW5U
eXBlczo6RW5kVGFnLCBzZWxlY3RUYWcubG9jYWxOYW1lKCkpOworICAgICAgICAgICAgUmVmUHRy
PEF0b21pY0hUTUxUb2tlbj4gZW5kU2VsZWN0ID0gQXRvbWljSFRNTFRva2VuOjpjcmVhdGUoSFRN
TFRva2VuOjpFbmRUYWcsIHNlbGVjdFRhZy5sb2NhbE5hbWUoKSk7CiAgICAgICAgICAgICBwcm9j
ZXNzRW5kVGFnKGVuZFNlbGVjdC5nZXQoKSk7CiAgICAgICAgICAgICBwcm9jZXNzU3RhcnRUYWco
dG9rZW4pOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTQ5Miw3ICsxNDcxLDcgQEAgdm9pZCBI
VE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NIdG1sU3RhcnRUYWdGb3JJbkJvZHkoQXRvbWljSFRNTFRv
a2VuKiB0b2tlbikKIAogYm9vbCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NCb2R5RW5kVGFnRm9y
SW5Cb2R5KEF0b21pY0hUTUxUb2tlbiogdG9rZW4pCiB7Ci0gICAgQVNTRVJUKHRva2VuLT50eXBl
KCkgPT0gSFRNTFRva2VuVHlwZXM6OkVuZFRhZyk7CisgICAgQVNTRVJUKHRva2VuLT50eXBlKCkg
PT0gSFRNTFRva2VuOjpFbmRUYWcpOwogICAgIEFTU0VSVCh0b2tlbi0+bmFtZSgpID09IGJvZHlU
YWcpOwogICAgIGlmICghbV90cmVlLm9wZW5FbGVtZW50cygpLT5pblNjb3BlKGJvZHlUYWcubG9j
YWxOYW1lKCkpKSB7CiAgICAgICAgIHBhcnNlRXJyb3IodG9rZW4pOwpAQCAtMTUwNSw3ICsxNDg0
LDcgQEAgYm9vbCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NCb2R5RW5kVGFnRm9ySW5Cb2R5KEF0
b21pY0hUTUxUb2tlbiogdG9rZW4pCiAKIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzQW55
T3RoZXJFbmRUYWdGb3JJbkJvZHkoQXRvbWljSFRNTFRva2VuKiB0b2tlbikKIHsKLSAgICBBU1NF
UlQodG9rZW4tPnR5cGUoKSA9PSBIVE1MVG9rZW5UeXBlczo6RW5kVGFnKTsKKyAgICBBU1NFUlQo
dG9rZW4tPnR5cGUoKSA9PSBIVE1MVG9rZW46OkVuZFRhZyk7CiAgICAgSFRNTEVsZW1lbnRTdGFj
azo6RWxlbWVudFJlY29yZCogcmVjb3JkID0gbV90cmVlLm9wZW5FbGVtZW50cygpLT50b3BSZWNv
cmQoKTsKICAgICB3aGlsZSAoMSkgewogICAgICAgICBSZWZQdHI8SFRNTFN0YWNrSXRlbT4gaXRl
bSA9IHJlY29yZC0+c3RhY2tJdGVtKCk7CkBAIC0xNzA5LDcgKzE2ODgsNyBAQCB2b2lkIEhUTUxU
cmVlQnVpbGRlcjo6cmVzZXRJbnNlcnRpb25Nb2RlQXBwcm9wcmlhdGVseSgpCiAKIHZvaWQgSFRN
TFRyZWVCdWlsZGVyOjpwcm9jZXNzRW5kVGFnRm9ySW5UYWJsZUJvZHkoQXRvbWljSFRNTFRva2Vu
KiB0b2tlbikKIHsKLSAgICBBU1NFUlQodG9rZW4tPnR5cGUoKSA9PSBIVE1MVG9rZW5UeXBlczo6
RW5kVGFnKTsKKyAgICBBU1NFUlQodG9rZW4tPnR5cGUoKSA9PSBIVE1MVG9rZW46OkVuZFRhZyk7
CiAgICAgaWYgKGlzVGFibGVCb2R5Q29udGV4dFRhZyh0b2tlbi0+bmFtZSgpKSkgewogICAgICAg
ICBpZiAoIW1fdHJlZS5vcGVuRWxlbWVudHMoKS0+aW5UYWJsZVNjb3BlKHRva2VuLT5uYW1lKCkp
KSB7CiAgICAgICAgICAgICBwYXJzZUVycm9yKHRva2VuKTsKQEAgLTE3NDYsNyArMTcyNSw3IEBA
IHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzRW5kVGFnRm9ySW5UYWJsZUJvZHkoQXRvbWlj
SFRNTFRva2VuKiB0b2tlbikKIAogdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NFbmRUYWdG
b3JJblJvdyhBdG9taWNIVE1MVG9rZW4qIHRva2VuKQogewotICAgIEFTU0VSVCh0b2tlbi0+dHlw
ZSgpID09IEhUTUxUb2tlblR5cGVzOjpFbmRUYWcpOworICAgIEFTU0VSVCh0b2tlbi0+dHlwZSgp
ID09IEhUTUxUb2tlbjo6RW5kVGFnKTsKICAgICBpZiAodG9rZW4tPm5hbWUoKSA9PSB0clRhZykg
ewogICAgICAgICBwcm9jZXNzVHJFbmRUYWdGb3JJblJvdygpOwogICAgICAgICByZXR1cm47CkBA
IC0xNzgyLDcgKzE3NjEsNyBAQCB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0VuZFRhZ0Zv
ckluUm93KEF0b21pY0hUTUxUb2tlbiogdG9rZW4pCiAKIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpw
cm9jZXNzRW5kVGFnRm9ySW5DZWxsKEF0b21pY0hUTUxUb2tlbiogdG9rZW4pCiB7Ci0gICAgQVNT
RVJUKHRva2VuLT50eXBlKCkgPT0gSFRNTFRva2VuVHlwZXM6OkVuZFRhZyk7CisgICAgQVNTRVJU
KHRva2VuLT50eXBlKCkgPT0gSFRNTFRva2VuOjpFbmRUYWcpOwogICAgIGlmIChpc1RhYmxlQ2Vs
bENvbnRleHRUYWcodG9rZW4tPm5hbWUoKSkpIHsKICAgICAgICAgaWYgKCFtX3RyZWUub3BlbkVs
ZW1lbnRzKCktPmluVGFibGVTY29wZSh0b2tlbi0+bmFtZSgpKSkgewogICAgICAgICAgICAgcGFy
c2VFcnJvcih0b2tlbik7CkBAIC0xODIzLDEzICsxODAyLDEzIEBAIHZvaWQgSFRNTFRyZWVCdWls
ZGVyOjpwcm9jZXNzRW5kVGFnRm9ySW5DZWxsKEF0b21pY0hUTUxUb2tlbiogdG9rZW4pCiAKIHZv
aWQgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzRW5kVGFnRm9ySW5Cb2R5KEF0b21pY0hUTUxUb2tl
biogdG9rZW4pCiB7Ci0gICAgQVNTRVJUKHRva2VuLT50eXBlKCkgPT0gSFRNTFRva2VuVHlwZXM6
OkVuZFRhZyk7CisgICAgQVNTRVJUKHRva2VuLT50eXBlKCkgPT0gSFRNTFRva2VuOjpFbmRUYWcp
OwogICAgIGlmICh0b2tlbi0+bmFtZSgpID09IGJvZHlUYWcpIHsKICAgICAgICAgcHJvY2Vzc0Jv
ZHlFbmRUYWdGb3JJbkJvZHkodG9rZW4pOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGlm
ICh0b2tlbi0+bmFtZSgpID09IGh0bWxUYWcpIHsKLSAgICAgICAgUmVmUHRyPEF0b21pY0hUTUxU
b2tlbj4gZW5kQm9keSA9IEF0b21pY0hUTUxUb2tlbjo6Y3JlYXRlKEhUTUxUb2tlblR5cGVzOjpF
bmRUYWcsIGJvZHlUYWcubG9jYWxOYW1lKCkpOworICAgICAgICBSZWZQdHI8QXRvbWljSFRNTFRv
a2VuPiBlbmRCb2R5ID0gQXRvbWljSFRNTFRva2VuOjpjcmVhdGUoSFRNTFRva2VuOjpFbmRUYWcs
IGJvZHlUYWcubG9jYWxOYW1lKCkpOwogICAgICAgICBpZiAocHJvY2Vzc0JvZHlFbmRUYWdGb3JJ
bkJvZHkoZW5kQm9keS5nZXQoKSkpCiAgICAgICAgICAgICBwcm9jZXNzRW5kVGFnKHRva2VuKTsK
ICAgICAgICAgcmV0dXJuOwpAQCAtMjAwMyw3ICsxOTgyLDcgQEAgYm9vbCBIVE1MVHJlZUJ1aWxk
ZXI6OnByb2Nlc3NUYWJsZUVuZFRhZ0ZvckluVGFibGUoKQogCiB2b2lkIEhUTUxUcmVlQnVpbGRl
cjo6cHJvY2Vzc0VuZFRhZ0ZvckluVGFibGUoQXRvbWljSFRNTFRva2VuKiB0b2tlbikKIHsKLSAg
ICBBU1NFUlQodG9rZW4tPnR5cGUoKSA9PSBIVE1MVG9rZW5UeXBlczo6RW5kVGFnKTsKKyAgICBB
U1NFUlQodG9rZW4tPnR5cGUoKSA9PSBIVE1MVG9rZW46OkVuZFRhZyk7CiAgICAgaWYgKHRva2Vu
LT5uYW1lKCkgPT0gdGFibGVUYWcpIHsKICAgICAgICAgcHJvY2Vzc1RhYmxlRW5kVGFnRm9ySW5U
YWJsZSgpOwogICAgICAgICByZXR1cm47CkBAIC0yMDI1LDcgKzIwMDQsNyBAQCB2b2lkIEhUTUxU
cmVlQnVpbGRlcjo6cHJvY2Vzc0VuZFRhZ0ZvckluVGFibGUoQXRvbWljSFRNTFRva2VuKiB0b2tl
bikKIAogdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NFbmRUYWcoQXRvbWljSFRNTFRva2Vu
KiB0b2tlbikKIHsKLSAgICBBU1NFUlQodG9rZW4tPnR5cGUoKSA9PSBIVE1MVG9rZW5UeXBlczo6
RW5kVGFnKTsKKyAgICBBU1NFUlQodG9rZW4tPnR5cGUoKSA9PSBIVE1MVG9rZW46OkVuZFRhZyk7
CiAgICAgc3dpdGNoIChpbnNlcnRpb25Nb2RlKCkpIHsKICAgICBjYXNlIEluaXRpYWxNb2RlOgog
ICAgICAgICBBU1NFUlQoaW5zZXJ0aW9uTW9kZSgpID09IEluaXRpYWxNb2RlKTsKQEAgLTIyNDYs
NyArMjIyNSw3IEBAIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzRW5kVGFnKEF0b21pY0hU
TUxUb2tlbiogdG9rZW4pCiAgICAgICAgICAgICB8fCBpc1RhYmxlQ2VsbENvbnRleHRUYWcodG9r
ZW4tPm5hbWUoKSkpIHsKICAgICAgICAgICAgIHBhcnNlRXJyb3IodG9rZW4pOwogICAgICAgICAg
ICAgaWYgKG1fdHJlZS5vcGVuRWxlbWVudHMoKS0+aW5UYWJsZVNjb3BlKHRva2VuLT5uYW1lKCkp
KSB7Ci0gICAgICAgICAgICAgICAgUmVmUHRyPEF0b21pY0hUTUxUb2tlbj4gZW5kU2VsZWN0ID0g
QXRvbWljSFRNTFRva2VuOjpjcmVhdGUoSFRNTFRva2VuVHlwZXM6OkVuZFRhZywgc2VsZWN0VGFn
LmxvY2FsTmFtZSgpKTsKKyAgICAgICAgICAgICAgICBSZWZQdHI8QXRvbWljSFRNTFRva2VuPiBl
bmRTZWxlY3QgPSBBdG9taWNIVE1MVG9rZW46OmNyZWF0ZShIVE1MVG9rZW46OkVuZFRhZywgc2Vs
ZWN0VGFnLmxvY2FsTmFtZSgpKTsKICAgICAgICAgICAgICAgICBwcm9jZXNzRW5kVGFnKGVuZFNl
bGVjdC5nZXQoKSk7CiAgICAgICAgICAgICAgICAgcHJvY2Vzc0VuZFRhZyh0b2tlbik7CiAgICAg
ICAgICAgICB9CkBAIC0yMzExLDcgKzIyOTAsNyBAQCB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJv
Y2Vzc0VuZFRhZyhBdG9taWNIVE1MVG9rZW4qIHRva2VuKQogCiB2b2lkIEhUTUxUcmVlQnVpbGRl
cjo6cHJvY2Vzc0NvbW1lbnQoQXRvbWljSFRNTFRva2VuKiB0b2tlbikKIHsKLSAgICBBU1NFUlQo
dG9rZW4tPnR5cGUoKSA9PSBIVE1MVG9rZW5UeXBlczo6Q29tbWVudCk7CisgICAgQVNTRVJUKHRv
a2VuLT50eXBlKCkgPT0gSFRNTFRva2VuOjpDb21tZW50KTsKICAgICBpZiAobV9pbnNlcnRpb25N
b2RlID09IEluaXRpYWxNb2RlCiAgICAgICAgIHx8IG1faW5zZXJ0aW9uTW9kZSA9PSBCZWZvcmVI
VE1MTW9kZQogICAgICAgICB8fCBtX2luc2VydGlvbk1vZGUgPT0gQWZ0ZXJBZnRlckJvZHlNb2Rl
CkBAIC0yMzMzLDcgKzIzMTIsNyBAQCB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0NvbW1l
bnQoQXRvbWljSFRNTFRva2VuKiB0b2tlbikKIAogdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nl
c3NDaGFyYWN0ZXIoQXRvbWljSFRNTFRva2VuKiB0b2tlbikKIHsKLSAgICBBU1NFUlQodG9rZW4t
PnR5cGUoKSA9PSBIVE1MVG9rZW5UeXBlczo6Q2hhcmFjdGVyKTsKKyAgICBBU1NFUlQodG9rZW4t
PnR5cGUoKSA9PSBIVE1MVG9rZW46OkNoYXJhY3Rlcik7CiAgICAgRXh0ZXJuYWxDaGFyYWN0ZXJU
b2tlbkJ1ZmZlciBidWZmZXIodG9rZW4pOwogICAgIHByb2Nlc3NDaGFyYWN0ZXJCdWZmZXIoYnVm
ZmVyKTsKIH0KQEAgLTI1MjIsNyArMjUwMSwxMCBAQCB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJv
Y2Vzc0NoYXJhY3RlckJ1ZmZlckZvckluQm9keShFeHRlcm5hbENoYXJhY3RlclRva2VuQnVmZgog
CiB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0VuZE9mRmlsZShBdG9taWNIVE1MVG9rZW4q
IHRva2VuKQogewotICAgIEFTU0VSVCh0b2tlbi0+dHlwZSgpID09IEhUTUxUb2tlblR5cGVzOjpF
bmRPZkZpbGUpOworICAgIEFTU0VSVCh0b2tlbi0+dHlwZSgpID09IEhUTUxUb2tlbjo6RW5kT2ZG
aWxlKTsKKyNpZiBFTkFCTEUoVEVNUExBVEVfRUxFTUVOVCkKKyAgICBtX3RlbXBsYXRlSW5zZXJ0
aW9uTW9kZXMuY2xlYXIoKTsKKyNlbmRpZgogICAgIHN3aXRjaCAoaW5zZXJ0aW9uTW9kZSgpKSB7
CiAgICAgY2FzZSBJbml0aWFsTW9kZToKICAgICAgICAgQVNTRVJUKGluc2VydGlvbk1vZGUoKSA9
PSBJbml0aWFsTW9kZSk7CkBAIC0yNTU1LDEyICsyNTM3LDYgQEAgdm9pZCBIVE1MVHJlZUJ1aWxk
ZXI6OnByb2Nlc3NFbmRPZkZpbGUoQXRvbWljSFRNTFRva2VuKiB0b2tlbikKICAgICAgICAgQVNT
RVJUKGluc2VydGlvbk1vZGUoKSA9PSBJbkJvZHlNb2RlIHx8IGluc2VydGlvbk1vZGUoKSA9PSBJ
bkNlbGxNb2RlIHx8IGluc2VydGlvbk1vZGUoKSA9PSBJbkNhcHRpb25Nb2RlIHx8IGluc2VydGlv
bk1vZGUoKSA9PSBJblJvd01vZGUpOwogI2VuZGlmCiAgICAgICAgIG5vdEltcGxlbWVudGVkKCk7
IC8vIEVtaXQgcGFyc2UgZXJyb3IgYmFzZWQgb24gd2hhdCBlbGVtZW50cyBhcmUgc3RpbGwgb3Bl
bi4KLSNpZiBFTkFCTEUoVEVNUExBVEVfRUxFTUVOVCkKLSAgICAgICAgaWYgKHBvcEFsbFRlbXBs
YXRlc0ZvckVuZE9mRmlsZSgpKSB7Ci0gICAgICAgICAgICBwcm9jZXNzRW5kT2ZGaWxlKHRva2Vu
KTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotI2VuZGlmCiAgICAgICAgIGJyZWFr
OwogICAgIGNhc2UgQWZ0ZXJCb2R5TW9kZToKICAgICBjYXNlIEFmdGVyQWZ0ZXJCb2R5TW9kZToK
QEAgLTI1NzUsMzQgKzI1NTEsMjYgQEAgdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NFbmRP
ZkZpbGUoQXRvbWljSFRNTFRva2VuKiB0b2tlbikKICAgICBjYXNlIEFmdGVyQWZ0ZXJGcmFtZXNl
dE1vZGU6CiAgICAgICAgIEFTU0VSVChpbnNlcnRpb25Nb2RlKCkgPT0gQWZ0ZXJGcmFtZXNldE1v
ZGUgfHwgaW5zZXJ0aW9uTW9kZSgpID09IEFmdGVyQWZ0ZXJGcmFtZXNldE1vZGUpOwogICAgICAg
ICBicmVhazsKLSAgICBjYXNlIEluQ29sdW1uR3JvdXBNb2RlOgotICAgICAgICBpZiAobV90cmVl
LmN1cnJlbnRJc1Jvb3ROb2RlKCkpIHsKLSAgICAgICAgICAgIEFTU0VSVChpc1BhcnNpbmdGcmFn
bWVudCgpKTsKLSAgICAgICAgICAgIHJldHVybjsgLy8gRklYTUU6IFNob3VsZCB3ZSBicmVhayBo
ZXJlIGluc3RlYWQgb2YgcmV0dXJuaW5nPwotICAgICAgICB9Ci0jaWYgRU5BQkxFKFRFTVBMQVRF
X0VMRU1FTlQpCi0gICAgICAgIEFTU0VSVChtX3RyZWUuY3VycmVudE5vZGUoKS0+aGFzVGFnTmFt
ZShjb2xncm91cFRhZykpOwotI2Vsc2UKLSAgICAgICAgQVNTRVJUKG1fdHJlZS5jdXJyZW50Tm9k
ZSgpLT5oYXNUYWdOYW1lKGNvbGdyb3VwVGFnKSB8fCBtX3RyZWUuY3VycmVudE5vZGUoKS0+aGFz
VGFnTmFtZSh0ZW1wbGF0ZVRhZykpOwotI2VuZGlmCi0gICAgICAgIHByb2Nlc3NDb2xncm91cEVu
ZFRhZ0ZvckluQ29sdW1uR3JvdXAoKTsKLSAgICAgICAgLy8gRmFsbCB0aHJvdWdoCiAgICAgY2Fz
ZSBJbkZyYW1lc2V0TW9kZToKICAgICBjYXNlIEluVGFibGVNb2RlOgogICAgIGNhc2UgSW5UYWJs
ZUJvZHlNb2RlOgogICAgIGNhc2UgSW5TZWxlY3RJblRhYmxlTW9kZToKICAgICBjYXNlIEluU2Vs
ZWN0TW9kZToKLSAgICAgICAgQVNTRVJUKGluc2VydGlvbk1vZGUoKSA9PSBJblNlbGVjdE1vZGUg
fHwgaW5zZXJ0aW9uTW9kZSgpID09IEluU2VsZWN0SW5UYWJsZU1vZGUgfHwgaW5zZXJ0aW9uTW9k
ZSgpID09IEluVGFibGVNb2RlIHx8IGluc2VydGlvbk1vZGUoKSA9PSBJbkZyYW1lc2V0TW9kZSB8
fCBpbnNlcnRpb25Nb2RlKCkgPT0gSW5UYWJsZUJvZHlNb2RlIHx8IGluc2VydGlvbk1vZGUoKSA9
PSBJbkNvbHVtbkdyb3VwTW9kZSk7CisgICAgICAgIEFTU0VSVChpbnNlcnRpb25Nb2RlKCkgPT0g
SW5TZWxlY3RNb2RlIHx8IGluc2VydGlvbk1vZGUoKSA9PSBJblNlbGVjdEluVGFibGVNb2RlIHx8
IGluc2VydGlvbk1vZGUoKSA9PSBJblRhYmxlTW9kZSB8fCBpbnNlcnRpb25Nb2RlKCkgPT0gSW5G
cmFtZXNldE1vZGUgfHwgaW5zZXJ0aW9uTW9kZSgpID09IEluVGFibGVCb2R5TW9kZSk7CiAgICAg
ICAgIGlmIChtX3RyZWUuY3VycmVudE5vZGUoKSAhPSBtX3RyZWUub3BlbkVsZW1lbnRzKCktPnJv
b3ROb2RlKCkpCiAgICAgICAgICAgICBwYXJzZUVycm9yKHRva2VuKTsKLQotI2lmIEVOQUJMRShU
RU1QTEFURV9FTEVNRU5UKQotICAgICAgICBpZiAocG9wQWxsVGVtcGxhdGVzRm9yRW5kT2ZGaWxl
KCkpIHsKLSAgICAgICAgICAgIHByb2Nlc3NFbmRPZkZpbGUodG9rZW4pOwotICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICB9Ci0jZW5kaWYKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJbkNv
bHVtbkdyb3VwTW9kZToKKyAgICAgICAgaWYgKG1fdHJlZS5jdXJyZW50SXNSb290Tm9kZSgpKSB7
CisgICAgICAgICAgICBBU1NFUlQoaXNQYXJzaW5nRnJhZ21lbnQoKSk7CisgICAgICAgICAgICBy
ZXR1cm47IC8vIEZJWE1FOiBTaG91bGQgd2UgYnJlYWsgaGVyZSBpbnN0ZWFkIG9mIHJldHVybmlu
Zz8KKyAgICAgICAgfQorICAgICAgICBpZiAoIXByb2Nlc3NDb2xncm91cEVuZFRhZ0ZvckluQ29s
dW1uR3JvdXAoKSkgeworICAgICAgICAgICAgQVNTRVJUKGlzUGFyc2luZ0ZyYWdtZW50T3JUZW1w
bGF0ZUNvbnRlbnRzKCkpOworICAgICAgICAgICAgcmV0dXJuOyAvLyBGSVhNRTogU2hvdWxkIHdl
IGJyZWFrIGhlcmUgaW5zdGVhZCBvZiByZXR1cm5pbmc/CisgICAgICAgIH0KKyAgICAgICAgcHJv
Y2Vzc0VuZE9mRmlsZSh0b2tlbik7CisgICAgICAgIHJldHVybjsKICAgICBjYXNlIEluVGFibGVU
ZXh0TW9kZToKICAgICAgICAgZGVmYXVsdEZvckluVGFibGVUZXh0KCk7CiAgICAgICAgIHByb2Nl
c3NFbmRPZkZpbGUodG9rZW4pOwpAQCAtMjYxNywxNiArMjU4NSwxNSBAQCB2b2lkIEhUTUxUcmVl
QnVpbGRlcjo6cHJvY2Vzc0VuZE9mRmlsZShBdG9taWNIVE1MVG9rZW4qIHRva2VuKQogICAgICAg
ICBwcm9jZXNzRW5kT2ZGaWxlKHRva2VuKTsKICAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgVGVt
cGxhdGVDb250ZW50c01vZGU6Ci0jaWYgRU5BQkxFKFRFTVBMQVRFX0VMRU1FTlQpCi0gICAgICAg
IHBhcnNlRXJyb3IodG9rZW4pOwotICAgICAgICBpZiAocG9wQWxsVGVtcGxhdGVzRm9yRW5kT2ZG
aWxlKCkpIHsKLSAgICAgICAgICAgIHByb2Nlc3NFbmRPZkZpbGUodG9rZW4pOwotICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICBpZiAobV90cmVlLmN1cnJlbnRJc1Jvb3ROb2RlKCkpIHsKKyAg
ICAgICAgICAgIEFTU0VSVChpc1BhcnNpbmdGcmFnbWVudCgpKTsKKyAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICB9Ci0gICAgICAgIGJyZWFrOwotI2Vsc2UKLSAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7Ci0jZW5kaWYKKyAgICAgICAgcGFyc2VFcnJvcih0b2tlbik7CisgICAgICAgIG1f
dHJlZS5vcGVuRWxlbWVudHMoKS0+cG9wKCk7CisgICAgICAgIHJlc2V0SW5zZXJ0aW9uTW9kZUFw
cHJvcHJpYXRlbHkoKTsKKyAgICAgICAgcHJvY2Vzc0VuZE9mRmlsZSh0b2tlbik7CisgICAgICAg
IHJldHVybjsKICAgICB9CiAgICAgQVNTRVJUKG1fdHJlZS5jdXJyZW50Tm9kZSgpKTsKICAgICBt
X3RyZWUub3BlbkVsZW1lbnRzKCktPnBvcEFsbCgpOwpAQCAtMjY0MiwzMiArMjYwOSwzMiBAQCB2
b2lkIEhUTUxUcmVlQnVpbGRlcjo6ZGVmYXVsdEZvckluaXRpYWwoKQogCiB2b2lkIEhUTUxUcmVl
QnVpbGRlcjo6ZGVmYXVsdEZvckJlZm9yZUhUTUwoKQogewotICAgIFJlZlB0cjxBdG9taWNIVE1M
VG9rZW4+IHN0YXJ0SFRNTCA9IEF0b21pY0hUTUxUb2tlbjo6Y3JlYXRlKEhUTUxUb2tlblR5cGVz
OjpTdGFydFRhZywgaHRtbFRhZy5sb2NhbE5hbWUoKSk7CisgICAgUmVmUHRyPEF0b21pY0hUTUxU
b2tlbj4gc3RhcnRIVE1MID0gQXRvbWljSFRNTFRva2VuOjpjcmVhdGUoSFRNTFRva2VuOjpTdGFy
dFRhZywgaHRtbFRhZy5sb2NhbE5hbWUoKSk7CiAgICAgbV90cmVlLmluc2VydEhUTUxIdG1sU3Rh
cnRUYWdCZWZvcmVIVE1MKHN0YXJ0SFRNTC5nZXQoKSk7CiAgICAgc2V0SW5zZXJ0aW9uTW9kZShC
ZWZvcmVIZWFkTW9kZSk7CiB9CiAKIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpkZWZhdWx0Rm9yQmVm
b3JlSGVhZCgpCiB7Ci0gICAgUmVmUHRyPEF0b21pY0hUTUxUb2tlbj4gc3RhcnRIZWFkID0gQXRv
bWljSFRNTFRva2VuOjpjcmVhdGUoSFRNTFRva2VuVHlwZXM6OlN0YXJ0VGFnLCBoZWFkVGFnLmxv
Y2FsTmFtZSgpKTsKKyAgICBSZWZQdHI8QXRvbWljSFRNTFRva2VuPiBzdGFydEhlYWQgPSBBdG9t
aWNIVE1MVG9rZW46OmNyZWF0ZShIVE1MVG9rZW46OlN0YXJ0VGFnLCBoZWFkVGFnLmxvY2FsTmFt
ZSgpKTsKICAgICBwcm9jZXNzU3RhcnRUYWcoc3RhcnRIZWFkLmdldCgpKTsKIH0KIAogdm9pZCBI
VE1MVHJlZUJ1aWxkZXI6OmRlZmF1bHRGb3JJbkhlYWQoKQogewotICAgIFJlZlB0cjxBdG9taWNI
VE1MVG9rZW4+IGVuZEhlYWQgPSBBdG9taWNIVE1MVG9rZW46OmNyZWF0ZShIVE1MVG9rZW5UeXBl
czo6RW5kVGFnLCBoZWFkVGFnLmxvY2FsTmFtZSgpKTsKKyAgICBSZWZQdHI8QXRvbWljSFRNTFRv
a2VuPiBlbmRIZWFkID0gQXRvbWljSFRNTFRva2VuOjpjcmVhdGUoSFRNTFRva2VuOjpFbmRUYWcs
IGhlYWRUYWcubG9jYWxOYW1lKCkpOwogICAgIHByb2Nlc3NFbmRUYWcoZW5kSGVhZC5nZXQoKSk7
CiB9CiAKIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpkZWZhdWx0Rm9ySW5IZWFkTm9zY3JpcHQoKQog
ewotICAgIFJlZlB0cjxBdG9taWNIVE1MVG9rZW4+IGVuZE5vc2NyaXB0ID0gQXRvbWljSFRNTFRv
a2VuOjpjcmVhdGUoSFRNTFRva2VuVHlwZXM6OkVuZFRhZywgbm9zY3JpcHRUYWcubG9jYWxOYW1l
KCkpOworICAgIFJlZlB0cjxBdG9taWNIVE1MVG9rZW4+IGVuZE5vc2NyaXB0ID0gQXRvbWljSFRN
TFRva2VuOjpjcmVhdGUoSFRNTFRva2VuOjpFbmRUYWcsIG5vc2NyaXB0VGFnLmxvY2FsTmFtZSgp
KTsKICAgICBwcm9jZXNzRW5kVGFnKGVuZE5vc2NyaXB0LmdldCgpKTsKIH0KIAogdm9pZCBIVE1M
VHJlZUJ1aWxkZXI6OmRlZmF1bHRGb3JBZnRlckhlYWQoKQogewotICAgIFJlZlB0cjxBdG9taWNI
VE1MVG9rZW4+IHN0YXJ0Qm9keSA9IEF0b21pY0hUTUxUb2tlbjo6Y3JlYXRlKEhUTUxUb2tlblR5
cGVzOjpTdGFydFRhZywgYm9keVRhZy5sb2NhbE5hbWUoKSk7CisgICAgUmVmUHRyPEF0b21pY0hU
TUxUb2tlbj4gc3RhcnRCb2R5ID0gQXRvbWljSFRNTFRva2VuOjpjcmVhdGUoSFRNTFRva2VuOjpT
dGFydFRhZywgYm9keVRhZy5sb2NhbE5hbWUoKSk7CiAgICAgcHJvY2Vzc1N0YXJ0VGFnKHN0YXJ0
Qm9keS5nZXQoKSk7CiAgICAgbV9mcmFtZXNldE9rID0gdHJ1ZTsKIH0KQEAgLTI2OTEsNyArMjY1
OCw3IEBAIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpkZWZhdWx0Rm9ySW5UYWJsZVRleHQoKQogCiBi
b29sIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc1N0YXJ0VGFnRm9ySW5IZWFkKEF0b21pY0hUTUxU
b2tlbiogdG9rZW4pCiB7Ci0gICAgQVNTRVJUKHRva2VuLT50eXBlKCkgPT0gSFRNTFRva2VuVHlw
ZXM6OlN0YXJ0VGFnKTsKKyAgICBBU1NFUlQodG9rZW4tPnR5cGUoKSA9PSBIVE1MVG9rZW46OlN0
YXJ0VGFnKTsKICAgICBpZiAodG9rZW4tPm5hbWUoKSA9PSBodG1sVGFnKSB7CiAgICAgICAgIHBy
b2Nlc3NIdG1sU3RhcnRUYWdGb3JJbkJvZHkodG9rZW4pOwogICAgICAgICByZXR1cm4gdHJ1ZTsK
QEAgLTI3NDQsNyArMjcxMSw3IEBAIGJvb2wgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzU3RhcnRU
YWdGb3JJbkhlYWQoQXRvbWljSFRNTFRva2VuKiB0b2tlbikKIAogdm9pZCBIVE1MVHJlZUJ1aWxk
ZXI6OnByb2Nlc3NHZW5lcmljUkNEQVRBU3RhcnRUYWcoQXRvbWljSFRNTFRva2VuKiB0b2tlbikK
IHsKLSAgICBBU1NFUlQodG9rZW4tPnR5cGUoKSA9PSBIVE1MVG9rZW5UeXBlczo6U3RhcnRUYWcp
OworICAgIEFTU0VSVCh0b2tlbi0+dHlwZSgpID09IEhUTUxUb2tlbjo6U3RhcnRUYWcpOwogICAg
IG1fdHJlZS5pbnNlcnRIVE1MRWxlbWVudCh0b2tlbik7CiAgICAgaWYgKG1fcGFyc2VyLT50b2tl
bml6ZXIoKSkKICAgICAgICAgbV9wYXJzZXItPnRva2VuaXplcigpLT5zZXRTdGF0ZShIVE1MVG9r
ZW5pemVyOjpSQ0RBVEFTdGF0ZSk7CkBAIC0yNzU0LDcgKzI3MjEsNyBAQCB2b2lkIEhUTUxUcmVl
QnVpbGRlcjo6cHJvY2Vzc0dlbmVyaWNSQ0RBVEFTdGFydFRhZyhBdG9taWNIVE1MVG9rZW4qIHRv
a2VuKQogCiB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0dlbmVyaWNSYXdUZXh0U3RhcnRU
YWcoQXRvbWljSFRNTFRva2VuKiB0b2tlbikKIHsKLSAgICBBU1NFUlQodG9rZW4tPnR5cGUoKSA9
PSBIVE1MVG9rZW5UeXBlczo6U3RhcnRUYWcpOworICAgIEFTU0VSVCh0b2tlbi0+dHlwZSgpID09
IEhUTUxUb2tlbjo6U3RhcnRUYWcpOwogICAgIG1fdHJlZS5pbnNlcnRIVE1MRWxlbWVudCh0b2tl
bik7CiAgICAgaWYgKG1fcGFyc2VyLT50b2tlbml6ZXIoKSkKICAgICAgICAgbV9wYXJzZXItPnRv
a2VuaXplcigpLT5zZXRTdGF0ZShIVE1MVG9rZW5pemVyOjpSQVdURVhUU3RhdGUpOwpAQCAtMjc2
NCw3ICsyNzMxLDcgQEAgdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NHZW5lcmljUmF3VGV4
dFN0YXJ0VGFnKEF0b21pY0hUTUxUb2tlbiogdG9rZW4pCiAKIHZvaWQgSFRNTFRyZWVCdWlsZGVy
Ojpwcm9jZXNzU2NyaXB0U3RhcnRUYWcoQXRvbWljSFRNTFRva2VuKiB0b2tlbikKIHsKLSAgICBB
U1NFUlQodG9rZW4tPnR5cGUoKSA9PSBIVE1MVG9rZW5UeXBlczo6U3RhcnRUYWcpOworICAgIEFT
U0VSVCh0b2tlbi0+dHlwZSgpID09IEhUTUxUb2tlbjo6U3RhcnRUYWcpOwogICAgIG1fdHJlZS5p
bnNlcnRTY3JpcHRFbGVtZW50KHRva2VuKTsKICAgICBpZiAobV9wYXJzZXItPnRva2VuaXplcigp
KQogICAgICAgICBtX3BhcnNlci0+dG9rZW5pemVyKCktPnNldFN0YXRlKEhUTUxUb2tlbml6ZXI6
OlNjcmlwdERhdGFTdGF0ZSk7CkBAIC0yNzg2LDI0ICsyNzUzLDI0IEBAIGJvb2wgSFRNTFRyZWVC
dWlsZGVyOjpzaG91bGRQcm9jZXNzVG9rZW5JbkZvcmVpZ25Db250ZW50KEF0b21pY0hUTUxUb2tl
biogdG9rZW4pCiAgICAgaWYgKGl0ZW0tPmlzSW5IVE1MTmFtZXNwYWNlKCkpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICBpZiAoSFRNTEVsZW1lbnRTdGFjazo6aXNNYXRoTUxUZXh0SW50ZWdy
YXRpb25Qb2ludChpdGVtKSkgewotICAgICAgICBpZiAodG9rZW4tPnR5cGUoKSA9PSBIVE1MVG9r
ZW5UeXBlczo6U3RhcnRUYWcKKyAgICAgICAgaWYgKHRva2VuLT50eXBlKCkgPT0gSFRNTFRva2Vu
OjpTdGFydFRhZwogICAgICAgICAgICAgJiYgdG9rZW4tPm5hbWUoKSAhPSBNYXRoTUxOYW1lczo6
bWdseXBoVGFnCiAgICAgICAgICAgICAmJiB0b2tlbi0+bmFtZSgpICE9IE1hdGhNTE5hbWVzOjpt
YWxpZ25tYXJrVGFnKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBpZiAodG9r
ZW4tPnR5cGUoKSA9PSBIVE1MVG9rZW5UeXBlczo6Q2hhcmFjdGVyKQorICAgICAgICBpZiAodG9r
ZW4tPnR5cGUoKSA9PSBIVE1MVG9rZW46OkNoYXJhY3RlcikKICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICB9CiAgICAgaWYgKGl0ZW0tPmhhc1RhZ05hbWUoTWF0aE1MTmFtZXM6OmFubm90
YXRpb25feG1sVGFnKQotICAgICAgICAmJiB0b2tlbi0+dHlwZSgpID09IEhUTUxUb2tlblR5cGVz
OjpTdGFydFRhZworICAgICAgICAmJiB0b2tlbi0+dHlwZSgpID09IEhUTUxUb2tlbjo6U3RhcnRU
YWcKICAgICAgICAgJiYgdG9rZW4tPm5hbWUoKSA9PSBTVkdOYW1lczo6c3ZnVGFnKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKEhUTUxFbGVtZW50U3RhY2s6OmlzSFRNTEludGVncmF0
aW9uUG9pbnQoaXRlbSkpIHsKLSAgICAgICAgaWYgKHRva2VuLT50eXBlKCkgPT0gSFRNTFRva2Vu
VHlwZXM6OlN0YXJ0VGFnKQorICAgICAgICBpZiAodG9rZW4tPnR5cGUoKSA9PSBIVE1MVG9rZW46
OlN0YXJ0VGFnKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBpZiAodG9rZW4t
PnR5cGUoKSA9PSBIVE1MVG9rZW5UeXBlczo6Q2hhcmFjdGVyKQorICAgICAgICBpZiAodG9rZW4t
PnR5cGUoKSA9PSBIVE1MVG9rZW46OkNoYXJhY3RlcikKICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICB9Ci0gICAgaWYgKHRva2VuLT50eXBlKCkgPT0gSFRNTFRva2VuVHlwZXM6OkVuZE9m
RmlsZSkKKyAgICBpZiAodG9rZW4tPnR5cGUoKSA9PSBIVE1MVG9rZW46OkVuZE9mRmlsZSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHJldHVybiB0cnVlOwogfQpAQCAtMjgxMSwxMyArMjc3
OCwxMyBAQCBib29sIEhUTUxUcmVlQnVpbGRlcjo6c2hvdWxkUHJvY2Vzc1Rva2VuSW5Gb3JlaWdu
Q29udGVudChBdG9taWNIVE1MVG9rZW4qIHRva2VuKQogdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnBy
b2Nlc3NUb2tlbkluRm9yZWlnbkNvbnRlbnQoQXRvbWljSFRNTFRva2VuKiB0b2tlbikKIHsKICAg
ICBzd2l0Y2ggKHRva2VuLT50eXBlKCkpIHsKLSAgICBjYXNlIEhUTUxUb2tlblR5cGVzOjpVbmlu
aXRpYWxpemVkOgorICAgIGNhc2UgSFRNTFRva2VuOjpVbmluaXRpYWxpemVkOgogICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBIVE1MVG9rZW5U
eXBlczo6RE9DVFlQRToKKyAgICBjYXNlIEhUTUxUb2tlbjo6RE9DVFlQRToKICAgICAgICAgcGFy
c2VFcnJvcih0b2tlbik7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgSFRNTFRva2VuVHlwZXM6
OlN0YXJ0VGFnOiB7CisgICAgY2FzZSBIVE1MVG9rZW46OlN0YXJ0VGFnOiB7CiAgICAgICAgIGlm
ICh0b2tlbi0+bmFtZSgpID09IGJUYWcKICAgICAgICAgICAgIHx8IHRva2VuLT5uYW1lKCkgPT0g
YmlnVGFnCiAgICAgICAgICAgICB8fCB0b2tlbi0+bmFtZSgpID09IGJsb2NrcXVvdGVUYWcKQEAg
LTI4NzQsNyArMjg0MSw3IEBAIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzVG9rZW5JbkZv
cmVpZ25Db250ZW50KEF0b21pY0hUTUxUb2tlbiogdG9rZW4pCiAgICAgICAgIG1fdHJlZS5pbnNl
cnRGb3JlaWduRWxlbWVudCh0b2tlbiwgY3VycmVudE5hbWVzcGFjZSk7CiAgICAgICAgIGJyZWFr
OwogICAgIH0KLSAgICBjYXNlIEhUTUxUb2tlblR5cGVzOjpFbmRUYWc6IHsKKyAgICBjYXNlIEhU
TUxUb2tlbjo6RW5kVGFnOiB7CiAgICAgICAgIGlmIChtX3RyZWUuY3VycmVudFN0YWNrSXRlbSgp
LT5uYW1lc3BhY2VVUkkoKSA9PSBTVkdOYW1lczo6c3ZnTmFtZXNwYWNlVVJJKQogICAgICAgICAg
ICAgYWRqdXN0U1ZHVGFnTmFtZUNhc2UodG9rZW4pOwogCkBAIC0yOTAzLDE3ICsyODcwLDE3IEBA
IHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzVG9rZW5JbkZvcmVpZ25Db250ZW50KEF0b21p
Y0hUTUxUb2tlbiogdG9rZW4pCiAgICAgICAgIHByb2Nlc3NFbmRUYWcodG9rZW4pOwogICAgICAg
ICBicmVhazsKICAgICB9Ci0gICAgY2FzZSBIVE1MVG9rZW5UeXBlczo6Q29tbWVudDoKKyAgICBj
YXNlIEhUTUxUb2tlbjo6Q29tbWVudDoKICAgICAgICAgbV90cmVlLmluc2VydENvbW1lbnQodG9r
ZW4pOwogICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBIVE1MVG9rZW5UeXBlczo6Q2hhcmFjdGVy
OiB7CisgICAgY2FzZSBIVE1MVG9rZW46OkNoYXJhY3RlcjogewogICAgICAgICBTdHJpbmcgY2hh
cmFjdGVycyA9IFN0cmluZyh0b2tlbi0+Y2hhcmFjdGVycygpLCB0b2tlbi0+Y2hhcmFjdGVyc0xl
bmd0aCgpKTsKICAgICAgICAgbV90cmVlLmluc2VydFRleHROb2RlKGNoYXJhY3RlcnMpOwogICAg
ICAgICBpZiAobV9mcmFtZXNldE9rICYmICFpc0FsbFdoaXRlc3BhY2VPclJlcGxhY2VtZW50Q2hh
cmFjdGVycyhjaGFyYWN0ZXJzKSkKICAgICAgICAgICAgIG1fZnJhbWVzZXRPayA9IGZhbHNlOwog
ICAgICAgICBicmVhazsKICAgICB9Ci0gICAgY2FzZSBIVE1MVG9rZW5UeXBlczo6RW5kT2ZGaWxl
OgorICAgIGNhc2UgSFRNTFRva2VuOjpFbmRPZkZpbGU6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwogICAgICAgICBicmVhazsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3BhcnNlci9IVE1MVmlld1NvdXJjZVBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3BhcnNlci9IVE1MVmlld1NvdXJjZVBhcnNlci5jcHAKaW5kZXggMTA2YmUzMTRhNTQzMTRl
MDhkNTJiZjhlM2MxNWQyYWNlOTI5YzcxYS4uYTVmNDdmMGEyZDMxN2I2ZTg1MGNiNWY2ZDAyNDAy
OWFkYTMyNWJkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFZp
ZXdTb3VyY2VQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxW
aWV3U291cmNlUGFyc2VyLmNwcApAQCAtNzYsNyArNzYsNyBAQCBTdHJpbmcgSFRNTFZpZXdTb3Vy
Y2VQYXJzZXI6OnNvdXJjZUZvclRva2VuKCkKIHZvaWQgSFRNTFZpZXdTb3VyY2VQYXJzZXI6OnVw
ZGF0ZVRva2VuaXplclN0YXRlKCkKIHsKICAgICAvLyBGSVhNRTogVGhlIHRva2VuaXplciBzaG91
bGQgZG8gdGhpcyB3b3JrIGZvciB1cy4KLSAgICBpZiAobV90b2tlbi50eXBlKCkgIT0gSFRNTFRv
a2VuVHlwZXM6OlN0YXJ0VGFnKQorICAgIGlmIChtX3Rva2VuLnR5cGUoKSAhPSBIVE1MVG9rZW46
OlN0YXJ0VGFnKQogICAgICAgICByZXR1cm47CiAKICAgICBBdG9taWNTdHJpbmcgdGFnTmFtZSht
X3Rva2VuLm5hbWUoKS5kYXRhKCksIG1fdG9rZW4ubmFtZSgpLnNpemUoKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9UZXh0RG9jdW1lbnRQYXJzZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvVGV4dERvY3VtZW50UGFyc2VyLmNwcAppbmRleCBmZDEw
MmNiYTg0ZjQ1OGFhMWRjMTg2NjJlN2I4NDkxNDZmNjBlMDVlLi4zOTFmY2FjMGVjMzVjNjZjZTA1
OGViODJhNDgxOTJiZjZjZTJjNzA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3Bh
cnNlci9UZXh0RG9jdW1lbnRQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFy
c2VyL1RleHREb2N1bWVudFBhcnNlci5jcHAKQEAgLTYwLDcgKzYwLDcgQEAgdm9pZCBUZXh0RG9j
dW1lbnRQYXJzZXI6Omluc2VydEZha2VQcmVFbGVtZW50KCkKICAgICAvLyBkaXN0cnViaW5nIHRo
ZSBsaW5lL2NvbHVtbiBudW1iZXIgY2FsY3VsYXRpb25zLgogICAgIFZlY3RvcjxBdHRyaWJ1dGU+
IGF0dHJpYnV0ZXM7CiAgICAgYXR0cmlidXRlcy5hcHBlbmQoQXR0cmlidXRlKHN0eWxlQXR0ciwg
IndvcmQtd3JhcDogYnJlYWstd29yZDsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyIpKTsKLSAgICBS
ZWZQdHI8QXRvbWljSFRNTFRva2VuPiBmYWtlUHJlID0gQXRvbWljSFRNTFRva2VuOjpjcmVhdGUo
SFRNTFRva2VuVHlwZXM6OlN0YXJ0VGFnLCBwcmVUYWcubG9jYWxOYW1lKCksIGF0dHJpYnV0ZXMp
OworICAgIFJlZlB0cjxBdG9taWNIVE1MVG9rZW4+IGZha2VQcmUgPSBBdG9taWNIVE1MVG9rZW46
OmNyZWF0ZShIVE1MVG9rZW46OlN0YXJ0VGFnLCBwcmVUYWcubG9jYWxOYW1lKCksIGF0dHJpYnV0
ZXMpOwogICAgIHRyZWVCdWlsZGVyKCktPmNvbnN0cnVjdFRyZWUoZmFrZVByZS5nZXQoKSk7CiAK
ICAgICAvLyBOb3JtYWxseSB3ZSB3b3VsZCBza2lwIHRoZSBmaXJzdCBcbiBhZnRlciBhIDxwcmU+
IGVsZW1lbnQsIGJ1dCB3ZSBkb24ndApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9w
YXJzZXIvWFNTQXVkaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9YU1NBdWRp
dG9yLmNwcAppbmRleCA5ZGNjOGI1NDczN2JlN2FlNDU1ZTZhMjJmZTBhMDA5MzgwMWU1NTZhLi5k
ZTU0ZDIyNTMyN2VkYzc5MDY3YjIxOWFjNjhhZGEwM2YyYjY5MDhlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3BhcnNlci9YU1NBdWRpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3BhcnNlci9YU1NBdWRpdG9yLmNwcApAQCAtMjg0LDEyICsyODQsMTIgQEAgUGFzc093
blB0cjxYU1NJbmZvPiBYU1NBdWRpdG9yOjpmaWx0ZXJUb2tlbihjb25zdCBGaWx0ZXJUb2tlblJl
cXVlc3QmIHJlcXVlc3QpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgYm9vbCBkaWRC
bG9ja1NjcmlwdCA9IGZhbHNlOwotICAgIGlmIChyZXF1ZXN0LnRva2VuLnR5cGUoKSA9PSBIVE1M
VG9rZW5UeXBlczo6U3RhcnRUYWcpCisgICAgaWYgKHJlcXVlc3QudG9rZW4udHlwZSgpID09IEhU
TUxUb2tlbjo6U3RhcnRUYWcpCiAgICAgICAgIGRpZEJsb2NrU2NyaXB0ID0gZmlsdGVyU3RhcnRU
b2tlbihyZXF1ZXN0KTsKICAgICBlbHNlIGlmIChtX3NjcmlwdFRhZ05lc3RpbmdMZXZlbCkgewot
ICAgICAgICBpZiAocmVxdWVzdC50b2tlbi50eXBlKCkgPT0gSFRNTFRva2VuVHlwZXM6OkNoYXJh
Y3RlcikKKyAgICAgICAgaWYgKHJlcXVlc3QudG9rZW4udHlwZSgpID09IEhUTUxUb2tlbjo6Q2hh
cmFjdGVyKQogICAgICAgICAgICAgZGlkQmxvY2tTY3JpcHQgPSBmaWx0ZXJDaGFyYWN0ZXJUb2tl
bihyZXF1ZXN0KTsKLSAgICAgICAgZWxzZSBpZiAocmVxdWVzdC50b2tlbi50eXBlKCkgPT0gSFRN
TFRva2VuVHlwZXM6OkVuZFRhZykKKyAgICAgICAgZWxzZSBpZiAocmVxdWVzdC50b2tlbi50eXBl
KCkgPT0gSFRNTFRva2VuOjpFbmRUYWcpCiAgICAgICAgICAgICBmaWx0ZXJFbmRUb2tlbihyZXF1
ZXN0KTsKICAgICB9CiAKQEAgLTM1Niw3ICszNTYsNyBAQCBib29sIFhTU0F1ZGl0b3I6OmZpbHRl
ckNoYXJhY3RlclRva2VuKGNvbnN0IEZpbHRlclRva2VuUmVxdWVzdCYgcmVxdWVzdCkKIAogYm9v
bCBYU1NBdWRpdG9yOjpmaWx0ZXJTY3JpcHRUb2tlbihjb25zdCBGaWx0ZXJUb2tlblJlcXVlc3Qm
IHJlcXVlc3QpCiB7Ci0gICAgQVNTRVJUKHJlcXVlc3QudG9rZW4udHlwZSgpID09IEhUTUxUb2tl
blR5cGVzOjpTdGFydFRhZyk7CisgICAgQVNTRVJUKHJlcXVlc3QudG9rZW4udHlwZSgpID09IEhU
TUxUb2tlbjo6U3RhcnRUYWcpOwogICAgIEFTU0VSVChoYXNOYW1lKHJlcXVlc3QudG9rZW4sIHNj
cmlwdFRhZykpOwogCiAgICAgbV9jYWNoZWREZWNvZGVkU25pcHBldCA9IGRlY29kZWRTbmlwcGV0
Rm9yTmFtZShyZXF1ZXN0KTsKQEAgLTM3Miw3ICszNzIsNyBAQCBib29sIFhTU0F1ZGl0b3I6OmZp
bHRlclNjcmlwdFRva2VuKGNvbnN0IEZpbHRlclRva2VuUmVxdWVzdCYgcmVxdWVzdCkKIAogYm9v
bCBYU1NBdWRpdG9yOjpmaWx0ZXJPYmplY3RUb2tlbihjb25zdCBGaWx0ZXJUb2tlblJlcXVlc3Qm
IHJlcXVlc3QpCiB7Ci0gICAgQVNTRVJUKHJlcXVlc3QudG9rZW4udHlwZSgpID09IEhUTUxUb2tl
blR5cGVzOjpTdGFydFRhZyk7CisgICAgQVNTRVJUKHJlcXVlc3QudG9rZW4udHlwZSgpID09IEhU
TUxUb2tlbjo6U3RhcnRUYWcpOwogICAgIEFTU0VSVChoYXNOYW1lKHJlcXVlc3QudG9rZW4sIG9i
amVjdFRhZykpOwogCiAgICAgYm9vbCBkaWRCbG9ja1NjcmlwdCA9IGZhbHNlOwpAQCAtMzg2LDcg
KzM4Niw3IEBAIGJvb2wgWFNTQXVkaXRvcjo6ZmlsdGVyT2JqZWN0VG9rZW4oY29uc3QgRmlsdGVy
VG9rZW5SZXF1ZXN0JiByZXF1ZXN0KQogCiBib29sIFhTU0F1ZGl0b3I6OmZpbHRlclBhcmFtVG9r
ZW4oY29uc3QgRmlsdGVyVG9rZW5SZXF1ZXN0JiByZXF1ZXN0KQogewotICAgIEFTU0VSVChyZXF1
ZXN0LnRva2VuLnR5cGUoKSA9PSBIVE1MVG9rZW5UeXBlczo6U3RhcnRUYWcpOworICAgIEFTU0VS
VChyZXF1ZXN0LnRva2VuLnR5cGUoKSA9PSBIVE1MVG9rZW46OlN0YXJ0VGFnKTsKICAgICBBU1NF
UlQoaGFzTmFtZShyZXF1ZXN0LnRva2VuLCBwYXJhbVRhZykpOwogCiAgICAgc2l6ZV90IGluZGV4
T2ZOYW1lQXR0cmlidXRlOwpAQCAtNDA0LDcgKzQwNCw3IEBAIGJvb2wgWFNTQXVkaXRvcjo6Zmls
dGVyUGFyYW1Ub2tlbihjb25zdCBGaWx0ZXJUb2tlblJlcXVlc3QmIHJlcXVlc3QpCiAKIGJvb2wg
WFNTQXVkaXRvcjo6ZmlsdGVyRW1iZWRUb2tlbihjb25zdCBGaWx0ZXJUb2tlblJlcXVlc3QmIHJl
cXVlc3QpCiB7Ci0gICAgQVNTRVJUKHJlcXVlc3QudG9rZW4udHlwZSgpID09IEhUTUxUb2tlblR5
cGVzOjpTdGFydFRhZyk7CisgICAgQVNTRVJUKHJlcXVlc3QudG9rZW4udHlwZSgpID09IEhUTUxU
b2tlbjo6U3RhcnRUYWcpOwogICAgIEFTU0VSVChoYXNOYW1lKHJlcXVlc3QudG9rZW4sIGVtYmVk
VGFnKSk7CiAKICAgICBib29sIGRpZEJsb2NrU2NyaXB0ID0gZmFsc2U7CkBAIC00MTgsNyArNDE4
LDcgQEAgYm9vbCBYU1NBdWRpdG9yOjpmaWx0ZXJFbWJlZFRva2VuKGNvbnN0IEZpbHRlclRva2Vu
UmVxdWVzdCYgcmVxdWVzdCkKIAogYm9vbCBYU1NBdWRpdG9yOjpmaWx0ZXJBcHBsZXRUb2tlbihj
b25zdCBGaWx0ZXJUb2tlblJlcXVlc3QmIHJlcXVlc3QpCiB7Ci0gICAgQVNTRVJUKHJlcXVlc3Qu
dG9rZW4udHlwZSgpID09IEhUTUxUb2tlblR5cGVzOjpTdGFydFRhZyk7CisgICAgQVNTRVJUKHJl
cXVlc3QudG9rZW4udHlwZSgpID09IEhUTUxUb2tlbjo6U3RhcnRUYWcpOwogICAgIEFTU0VSVCho
YXNOYW1lKHJlcXVlc3QudG9rZW4sIGFwcGxldFRhZykpOwogCiAgICAgYm9vbCBkaWRCbG9ja1Nj
cmlwdCA9IGZhbHNlOwpAQCAtNDMxLDcgKzQzMSw3IEBAIGJvb2wgWFNTQXVkaXRvcjo6ZmlsdGVy
QXBwbGV0VG9rZW4oY29uc3QgRmlsdGVyVG9rZW5SZXF1ZXN0JiByZXF1ZXN0KQogCiBib29sIFhT
U0F1ZGl0b3I6OmZpbHRlcklmcmFtZVRva2VuKGNvbnN0IEZpbHRlclRva2VuUmVxdWVzdCYgcmVx
dWVzdCkKIHsKLSAgICBBU1NFUlQocmVxdWVzdC50b2tlbi50eXBlKCkgPT0gSFRNTFRva2VuVHlw
ZXM6OlN0YXJ0VGFnKTsKKyAgICBBU1NFUlQocmVxdWVzdC50b2tlbi50eXBlKCkgPT0gSFRNTFRv
a2VuOjpTdGFydFRhZyk7CiAgICAgQVNTRVJUKGhhc05hbWUocmVxdWVzdC50b2tlbiwgaWZyYW1l
VGFnKSk7CiAKICAgICBib29sIGRpZEJsb2NrU2NyaXB0ID0gZmFsc2U7CkBAIC00NDQsNyArNDQ0
LDcgQEAgYm9vbCBYU1NBdWRpdG9yOjpmaWx0ZXJJZnJhbWVUb2tlbihjb25zdCBGaWx0ZXJUb2tl
blJlcXVlc3QmIHJlcXVlc3QpCiAKIGJvb2wgWFNTQXVkaXRvcjo6ZmlsdGVyTWV0YVRva2VuKGNv
bnN0IEZpbHRlclRva2VuUmVxdWVzdCYgcmVxdWVzdCkKIHsKLSAgICBBU1NFUlQocmVxdWVzdC50
b2tlbi50eXBlKCkgPT0gSFRNTFRva2VuVHlwZXM6OlN0YXJ0VGFnKTsKKyAgICBBU1NFUlQocmVx
dWVzdC50b2tlbi50eXBlKCkgPT0gSFRNTFRva2VuOjpTdGFydFRhZyk7CiAgICAgQVNTRVJUKGhh
c05hbWUocmVxdWVzdC50b2tlbiwgbWV0YVRhZykpOwogCiAgICAgcmV0dXJuIGVyYXNlQXR0cmli
dXRlSWZJbmplY3RlZChyZXF1ZXN0LCBodHRwX2VxdWl2QXR0cik7CkBAIC00NTIsNyArNDUyLDcg
QEAgYm9vbCBYU1NBdWRpdG9yOjpmaWx0ZXJNZXRhVG9rZW4oY29uc3QgRmlsdGVyVG9rZW5SZXF1
ZXN0JiByZXF1ZXN0KQogCiBib29sIFhTU0F1ZGl0b3I6OmZpbHRlckJhc2VUb2tlbihjb25zdCBG
aWx0ZXJUb2tlblJlcXVlc3QmIHJlcXVlc3QpCiB7Ci0gICAgQVNTRVJUKHJlcXVlc3QudG9rZW4u
dHlwZSgpID09IEhUTUxUb2tlblR5cGVzOjpTdGFydFRhZyk7CisgICAgQVNTRVJUKHJlcXVlc3Qu
dG9rZW4udHlwZSgpID09IEhUTUxUb2tlbjo6U3RhcnRUYWcpOwogICAgIEFTU0VSVChoYXNOYW1l
KHJlcXVlc3QudG9rZW4sIGJhc2VUYWcpKTsKIAogICAgIHJldHVybiBlcmFzZUF0dHJpYnV0ZUlm
SW5qZWN0ZWQocmVxdWVzdCwgaHJlZkF0dHIpOwpAQCAtNDYwLDcgKzQ2MCw3IEBAIGJvb2wgWFNT
QXVkaXRvcjo6ZmlsdGVyQmFzZVRva2VuKGNvbnN0IEZpbHRlclRva2VuUmVxdWVzdCYgcmVxdWVz
dCkKIAogYm9vbCBYU1NBdWRpdG9yOjpmaWx0ZXJGb3JtVG9rZW4oY29uc3QgRmlsdGVyVG9rZW5S
ZXF1ZXN0JiByZXF1ZXN0KQogewotICAgIEFTU0VSVChyZXF1ZXN0LnRva2VuLnR5cGUoKSA9PSBI
VE1MVG9rZW5UeXBlczo6U3RhcnRUYWcpOworICAgIEFTU0VSVChyZXF1ZXN0LnRva2VuLnR5cGUo
KSA9PSBIVE1MVG9rZW46OlN0YXJ0VGFnKTsKICAgICBBU1NFUlQoaGFzTmFtZShyZXF1ZXN0LnRv
a2VuLCBmb3JtVGFnKSk7CiAKICAgICByZXR1cm4gZXJhc2VBdHRyaWJ1dGVJZkluamVjdGVkKHJl
cXVlc3QsIGFjdGlvbkF0dHIsIGJsYW5rVVJMKCkuc3RyaW5nKCkpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>187805</attachid>
            <date>2013-02-12 01:15:28 -0800</date>
            <delta_ts>2013-02-12 01:20:55 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-109525-20130212011200.patch</filename>
            <type>text/plain</type>
            <size>93869</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQyNTY4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2MzYzY1ZGZlZDNiNjNh
MGJlNTM4YjBiNmE4YWY0NDQxZDk3NmI1ZC4uNzg5OTBkZWNlOGY3OTY5YzE0NjNlYzg2NDA3MDky
Njk1YTQ3ODQ1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2MiBAQAorMjAxMy0wMi0xMiAgRXJp
YyBTZWlkZWwgIDxlcmljQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVtb3ZlIEhUTUxUb2tlblR5
cGVzIGhlYWRlciAoYW5kIHNwbGl0IG91dCBBdG9taWNIVE1MVG9rZW4uaCBmcm9tIEhUTUxUb2tl
bi5oKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA5
NTI1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2Ug
bm8gbG9uZ2VyIG5lZWQgYSBzZXBhcmF0ZSBIVE1MVG9rZW5UeXBlcyBjbGFzcyBub3cgdGhhdCBO
RVdfWE1MIGlzIGdvbmUuCisgICAgICAgIEhvd2V2ZXIsIHRvIHJlbW92ZSBIVE1MVG9rZW5UeXBl
cywgSSBoYWQgdG8gc3BsaXQgQXRvbWljSFRNTFRva2VuLmggZnJvbQorICAgICAgICBIVE1MVG9r
ZW4uaCAodG8gZml4IGEgY2lyY3VsYXIgZGVwZW5kYW5jeSkuCisKKyAgICAgICAgKiBHTlVtYWtl
ZmlsZS5saXN0LmFtOgorICAgICAgICAqIFRhcmdldC5wcmk6CisgICAgICAgICogV2ViQ29yZS5n
eXBpOgorICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOgorICAgICAgICAq
IFdlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2o6CisgICAgICAgICogV2ViQ29yZS52Y3hw
cm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBodG1sL0hUTUxWaWV3U291cmNlRG9jdW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFZpZXdTb3VyY2VEb2N1bWVudDo6YWRkU291cmNl
KToKKyAgICAgICAgKiBodG1sL3BhcnNlci9BdG9taWNIVE1MVG9rZW4uaDogQWRkZWQuCisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKEF0b21pY0hUTUxUb2tlbik6CisgICAgICAgIChXZWJD
b3JlOjpBdG9taWNIVE1MVG9rZW46OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpBdG9taWNI
VE1MVG9rZW46OmZvcmNlUXVpcmtzKToKKyAgICAgICAgKFdlYkNvcmU6OkF0b21pY0hUTUxUb2tl
bjo6dHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpBdG9taWNIVE1MVG9rZW46Om5hbWUpOgorICAg
ICAgICAoV2ViQ29yZTo6QXRvbWljSFRNTFRva2VuOjpzZXROYW1lKToKKyAgICAgICAgKFdlYkNv
cmU6OkF0b21pY0hUTUxUb2tlbjo6c2VsZkNsb3NpbmcpOgorICAgICAgICAoV2ViQ29yZTo6QXRv
bWljSFRNTFRva2VuOjpnZXRBdHRyaWJ1dGVJdGVtKToKKyAgICAgICAgKFdlYkNvcmU6OkF0b21p
Y0hUTUxUb2tlbjo6YXR0cmlidXRlcyk6CisgICAgICAgIChXZWJDb3JlOjpBdG9taWNIVE1MVG9r
ZW46OmNoYXJhY3RlcnMpOgorICAgICAgICAoV2ViQ29yZTo6QXRvbWljSFRNTFRva2VuOjpjaGFy
YWN0ZXJzTGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6OkF0b21pY0hUTUxUb2tlbjo6aXNBbGw4
Qml0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpBdG9taWNIVE1MVG9rZW46OmNvbW1lbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6QXRvbWljSFRNTFRva2VuOjpwdWJsaWNJZGVudGlmaWVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OkF0b21pY0hUTUxUb2tlbjo6c3lzdGVtSWRlbnRpZmllcik6CisgICAg
ICAgIChXZWJDb3JlOjpBdG9taWNIVE1MVG9rZW46OmNsZWFyRXh0ZXJuYWxDaGFyYWN0ZXJzKToK
KyAgICAgICAgKFdlYkNvcmU6OkF0b21pY0hUTUxUb2tlbjo6QXRvbWljSFRNTFRva2VuKToKKyAg
ICAgICAgKFdlYkNvcmU6OkF0b21pY0hUTUxUb2tlbjo6aW5pdGlhbGl6ZUF0dHJpYnV0ZXMpOgor
ICAgICAgICAqIGh0bWwvcGFyc2VyL0JhY2tncm91bmRIVE1MUGFyc2VyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkJhY2tncm91bmRIVE1MUGFyc2VyOjpzaW11bGF0ZVRyZWVCdWlsZGVyKToKKyAg
ICAgICAgKiBodG1sL3BhcnNlci9Db21wYWN0SFRNTFRva2VuLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNvbXBhY3RIVE1MVG9rZW46OkNvbXBhY3RIVE1MVG9rZW4pOgorICAgICAgICAqIGh0bWwv
cGFyc2VyL0NvbXBhY3RIVE1MVG9rZW4uaDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbXBhY3RIVE1M
VG9rZW46OnR5cGUpOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxDb25zdHJ1Y3Rpb25TaXRl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxDb25zdHJ1Y3Rpb25TaXRlOjppbnNlcnREb2N0
eXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxDb25zdHJ1Y3Rpb25TaXRlOjppbnNlcnRDb21t
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxDb25zdHJ1Y3Rpb25TaXRlOjppbnNlcnRDb21t
ZW50T25Eb2N1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQ29uc3RydWN0aW9uU2l0ZTo6
aW5zZXJ0Q29tbWVudE9uSFRNTEh0bWxFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxD
b25zdHJ1Y3Rpb25TaXRlOjppbnNlcnRTZWxmQ2xvc2luZ0hUTUxFbGVtZW50KToKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxDb25zdHJ1Y3Rpb25TaXRlOjppbnNlcnRGb3JlaWduRWxlbWVudCk6Cisg
ICAgICAgICogaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFyc2VyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxEb2N1bWVudFBhcnNlcjo6cHJvY2Vzc1BhcnNlZENodW5rRnJvbUJhY2tncm91
bmRQYXJzZXIpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTERvY3VtZW50UGFyc2VyOjpjb25zdHJ1
Y3RUcmVlRnJvbUhUTUxUb2tlbik6CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50
UGFyc2VyLmg6CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTE1ldGFDaGFyc2V0UGFyc2VyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZXRhQ2hhcnNldFBhcnNlcjo6Y2hlY2tGb3JNZXRh
Q2hhcnNldCk6CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTFByZWxvYWRTY2FubmVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmlzU3RhcnRUYWcpOgorICAgICAgICAoV2ViQ29yZTo6aXNTdGFy
dE9yRW5kVGFnKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxQcmVsb2FkU2Nhbm5lcjo6cHJvY2Vz
c1Rva2VuKToKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MU291cmNlVHJhY2tlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MU291cmNlVHJhY2tlcjo6c3RhcnQpOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTFNvdXJjZVRyYWNrZXI6OnNvdXJjZUZvclRva2VuKToKKyAgICAgICAgKiBodG1s
L3BhcnNlci9IVE1MU3RhY2tJdGVtLmg6CisgICAgICAgIChXZWJDb3JlOjpIVE1MU3RhY2tJdGVt
OjpIVE1MU3RhY2tJdGVtKToKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MVG9rZW4uaDoKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxUb2tlbjo6Y2xlYXIpOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TFRva2VuOjppc1VuaW5pdGlhbGl6ZWQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRva2VuOjp0
eXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUb2tlbjo6bWFrZUVuZE9mRmlsZSk6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MVG9rZW46OmRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRv
a2VuOjpuYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUb2tlbjo6YXBwZW5kVG9OYW1lKToK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxUb2tlbjo6Zm9yY2VRdWlya3MpOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTFRva2VuOjpzZXRGb3JjZVF1aXJrcyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
VG9rZW46OmJlZ2luRE9DVFlQRSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVG9rZW46OnB1Ymxp
Y0lkZW50aWZpZXIpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRva2VuOjpzeXN0ZW1JZGVudGlm
aWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUb2tlbjo6c2V0UHVibGljSWRlbnRpZmllclRv
RW1wdHlTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRva2VuOjpzZXRTeXN0ZW1JZGVu
dGlmaWVyVG9FbXB0eVN0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVG9rZW46OmFwcGVu
ZFRvUHVibGljSWRlbnRpZmllcik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVG9rZW46OmFwcGVu
ZFRvU3lzdGVtSWRlbnRpZmllcik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVG9rZW46OnNlbGZD
bG9zaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUb2tlbjo6c2V0U2VsZkNsb3NpbmcpOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTFRva2VuOjpiZWdpblN0YXJ0VGFnKToKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxUb2tlbjo6YmVnaW5FbmRUYWcpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRv
a2VuOjphZGROZXdBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRva2VuOjphcHBl
bmRUb0F0dHJpYnV0ZU5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRva2VuOjphcHBlbmRU
b0F0dHJpYnV0ZVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUb2tlbjo6YXR0cmlidXRl
cyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVG9rZW46OmVyYXNlVmFsdWVPZkF0dHJpYnV0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MVG9rZW46OmVuc3VyZUlzQ2hhcmFjdGVyVG9rZW4pOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTFRva2VuOjpjaGFyYWN0ZXJzKToKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxUb2tlbjo6YXBwZW5kVG9DaGFyYWN0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TFRva2VuOjpjb21tZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUb2tlbjo6YmVnaW5Db21t
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUb2tlbjo6YXBwZW5kVG9Db21tZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxUb2tlbjo6ZXJhc2VDaGFyYWN0ZXJzKToKKyAgICAgICAgKEhU
TUxUb2tlbik6CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTFRva2VuVHlwZXMuaDogUmVtb3Zl
ZC4KKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MVG9rZW5pemVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkF0b21pY0hUTUxUb2tlbjo6dXNlc05hbWUpOgorICAgICAgICAoV2ViQ29yZTo6QXRv
bWljSFRNTFRva2VuOjp1c2VzQXR0cmlidXRlcyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVG9r
ZW5pemVyOjpmbHVzaEJ1ZmZlcmVkRW5kVGFnKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUb2tl
bml6ZXI6Om5leHRUb2tlbik6CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTFRva2VuaXplci5o
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRva2VuaXplcjo6c2F2ZUVuZFRhZ05hbWVJZk5lZWRl
ZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVG9rZW5pemVyOjpoYXZlQnVmZmVyZWRDaGFyYWN0
ZXJUb2tlbik6CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTFRyZWVCdWlsZGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc1Rva2VuKToKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0RvY3R5cGVUb2tlbik6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NGYWtlU3RhcnRUYWcpOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzRmFrZUVuZFRhZyk6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NGYWtlUEVuZFRhZ0lmUEluQnV0dG9u
U2NvcGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzSXNpbmRl
eFN0YXJ0VGFnRm9ySW5Cb2R5KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzU3RhcnRUYWdGb3JJbkJvZHkpOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzU3RhcnRUYWdGb3JJblRhYmxlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc1N0YXJ0VGFnKToKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0JvZHlFbmRUYWdGb3JJbkJvZHkp
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzQW55T3RoZXJFbmRU
YWdGb3JJbkJvZHkpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNz
RW5kVGFnRm9ySW5UYWJsZUJvZHkpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVy
Ojpwcm9jZXNzRW5kVGFnRm9ySW5Sb3cpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyZWVCdWls
ZGVyOjpwcm9jZXNzRW5kVGFnRm9ySW5DZWxsKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVl
QnVpbGRlcjo6cHJvY2Vzc0VuZFRhZ0ZvckluQm9keSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
VHJlZUJ1aWxkZXI6OnByb2Nlc3NFbmRUYWdGb3JJblRhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0VuZFRhZyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
VHJlZUJ1aWxkZXI6OnByb2Nlc3NDb21tZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVl
QnVpbGRlcjo6cHJvY2Vzc0NoYXJhY3Rlcik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJlZUJ1
aWxkZXI6OmRlZmF1bHRGb3JCZWZvcmVIVE1MKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVl
QnVpbGRlcjo6ZGVmYXVsdEZvckJlZm9yZUhlYWQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRy
ZWVCdWlsZGVyOjpkZWZhdWx0Rm9ySW5IZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVl
QnVpbGRlcjo6ZGVmYXVsdEZvckluSGVhZE5vc2NyaXB0KToKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxUcmVlQnVpbGRlcjo6ZGVmYXVsdEZvckFmdGVySGVhZCk6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NTdGFydFRhZ0ZvckluSGVhZCk6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NHZW5lcmljUkNEQVRBU3RhcnRUYWcpOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzR2VuZXJpY1Jhd1RleHRTdGFy
dFRhZyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NTY3JpcHRT
dGFydFRhZyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6OnNob3VsZFByb2Nl
c3NUb2tlbkluRm9yZWlnbkNvbnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyZWVCdWls
ZGVyOjpwcm9jZXNzVG9rZW5JbkZvcmVpZ25Db250ZW50KToKKyAgICAgICAgKiBodG1sL3BhcnNl
ci9IVE1MVmlld1NvdXJjZVBhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVmlld1Nv
dXJjZVBhcnNlcjo6dXBkYXRlVG9rZW5pemVyU3RhdGUpOgorICAgICAgICAqIGh0bWwvcGFyc2Vy
L1RleHREb2N1bWVudFBhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0RG9jdW1lbnRQ
YXJzZXI6Omluc2VydEZha2VQcmVFbGVtZW50KToKKyAgICAgICAgKiBodG1sL3BhcnNlci9YU1NB
dWRpdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhTU0F1ZGl0b3I6OmZpbHRlclRva2VuKToK
KyAgICAgICAgKFdlYkNvcmU6OlhTU0F1ZGl0b3I6OmZpbHRlclNjcmlwdFRva2VuKToKKyAgICAg
ICAgKFdlYkNvcmU6OlhTU0F1ZGl0b3I6OmZpbHRlck9iamVjdFRva2VuKToKKyAgICAgICAgKFdl
YkNvcmU6OlhTU0F1ZGl0b3I6OmZpbHRlclBhcmFtVG9rZW4pOgorICAgICAgICAoV2ViQ29yZTo6
WFNTQXVkaXRvcjo6ZmlsdGVyRW1iZWRUb2tlbik6CisgICAgICAgIChXZWJDb3JlOjpYU1NBdWRp
dG9yOjpmaWx0ZXJBcHBsZXRUb2tlbik6CisgICAgICAgIChXZWJDb3JlOjpYU1NBdWRpdG9yOjpm
aWx0ZXJJZnJhbWVUb2tlbik6CisgICAgICAgIChXZWJDb3JlOjpYU1NBdWRpdG9yOjpmaWx0ZXJN
ZXRhVG9rZW4pOgorICAgICAgICAoV2ViQ29yZTo6WFNTQXVkaXRvcjo6ZmlsdGVyQmFzZVRva2Vu
KToKKyAgICAgICAgKFdlYkNvcmU6OlhTU0F1ZGl0b3I6OmZpbHRlckZvcm1Ub2tlbik6CisKIDIw
MTMtMDItMTEgIEtlbm5ldGggUnVzc2VsbCAgPGtickBnb29nbGUuY29tPgogCiAgICAgICAgIEFk
ZCB0ZW1wb3JhcnkgdHlwZWRlZiB0byBBTkdMRVdlYktpdEJyaWRnZSB0byBzdXBwb3J0IGluY29t
cGF0aWJsZSBBUEkgdXBncmFkZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZp
bGUubGlzdC5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5kZXggMmI5
YjFiZTNkNGI3NDdhNThmNmNiMDMyMzJkYWFiNWM0OGE3NmUwZS4uNDc4N2JiM2YxODY2MmY2ZjBl
NmFkMGMyMjQ4M2ExZWY0MGE3YmZlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvR05VbWFr
ZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCkBA
IC0zNTY4LDYgKzM1NjgsNyBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3Jl
L2h0bWwvTW9udGhJbnB1dFR5cGUuaCBcCiAJU291cmNlL1dlYkNvcmUvaHRtbC9OdW1iZXJJbnB1
dFR5cGUuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL051bWJlcklucHV0VHlwZS5oIFwKKwlT
b3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9BdG9taWNIVE1MVG9rZW4uaCBcCiAJU291cmNlL1dl
YkNvcmUvaHRtbC9wYXJzZXIvQmFja2dyb3VuZEhUTUxJbnB1dFN0cmVhbS5jcHAgXAogCVNvdXJj
ZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0JhY2tncm91bmRIVE1MSW5wdXRTdHJlYW0uaCBcCiAJU291
cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQmFja2dyb3VuZEhUTUxQYXJzZXIuY3BwIFwKQEAgLTM2
MTEsNyArMzYxMiw2IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvaHRt
bC9wYXJzZXIvSFRNTFNvdXJjZVRyYWNrZXIuaCBcCiAJU291cmNlL1dlYkNvcmUvaHRtbC9wYXJz
ZXIvSFRNTFN0YWNrSXRlbS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVG9r
ZW4uaCBcCi0JU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRva2VuVHlwZXMuaCBcCiAJ
U291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRva2VuaXplci5jcHAgXAogCVNvdXJjZS9X
ZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUb2tlbml6ZXIuaCBcCiAJU291cmNlL1dlYkNvcmUvaHRt
bC9wYXJzZXIvSFRNTFRyZWVCdWlsZGVyLmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9UYXJnZXQucHJpIGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQppbmRleCA5YWFlMTZjNzA3
ZTJlMWJiMWUyYzAxZGI3ZmYwNDkyYzFlYTY5MGJhLi43Mjk1ZWEzODFjNDJiM2FhMTNhMmI1MTcz
YzI5YmQ3ODEzN2RiZTQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCisr
KyBiL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKQEAgLTE5MTYsNiArMTkxNiw3IEBAIEhFQURF
UlMgKz0gXAogICAgIGh0bWwvVGltZVJhbmdlcy5oIFwKICAgICBodG1sL1R5cGVBaGVhZC5oIFwK
ICAgICBodG1sL1ZhbGlkaXR5U3RhdGUuaCBcCisgICAgaHRtbC9wYXJzZXIvQXRvbWljSFRNTFRv
a2VuLmggXAogICAgIGh0bWwvcGFyc2VyL0NTU1ByZWxvYWRTY2FubmVyLmggXAogICAgIGh0bWwv
cGFyc2VyL0NvbXBhY3RIVE1MVG9rZW4uaCBcCiAgICAgaHRtbC9wYXJzZXIvSFRNTENvbnN0cnVj
dGlvblNpdGUuaCBcCkBAIC0xOTMxLDcgKzE5MzIsNiBAQCBIRUFERVJTICs9IFwKICAgICBodG1s
L3BhcnNlci9IVE1MU2NyaXB0UnVubmVyLmggXAogICAgIGh0bWwvcGFyc2VyL0hUTUxTY3JpcHRS
dW5uZXJIb3N0LmggXAogICAgIGh0bWwvcGFyc2VyL0hUTUxUb2tlbi5oIFwKLSAgICBodG1sL3Bh
cnNlci9IVE1MVG9rZW5UeXBlcy5oIFwKICAgICBodG1sL3BhcnNlci9IVE1MVG9rZW5pemVyLmgg
XAogICAgIGh0bWwvcGFyc2VyL0hUTUxUcmVlQnVpbGRlci5oIFwKICAgICBodG1sL3BhcnNlci9I
VE1MVmlld1NvdXJjZVBhcnNlci5oIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCA3YWEzYzBlNGE0Zjc4
M2E0OTVlZTUwNmE4MTQ0OGFlYjk2YjViYjQ0Li5hZjk0NjhmNjQ3MDJlZmU0NjUyOWE1M2NjOWQ0
ZGRlZmRjODM5N2YyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysr
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC0zMzU2LDYgKzMzNTYsNyBAQAogICAg
ICAgICAgICAgJ2h0bWwvY2FudmFzL1dlYkdMVW5pZm9ybUxvY2F0aW9uLmgnLAogICAgICAgICAg
ICAgJ2h0bWwvY2FudmFzL1dlYkdMVmVydGV4QXJyYXlPYmplY3RPRVMuY3BwJywKICAgICAgICAg
ICAgICdodG1sL2NhbnZhcy9XZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTLmgnLAorICAgICAgICAg
ICAgJ2h0bWwvcGFyc2VyL0F0b21pY0hUTUxUb2tlbi5oJywKICAgICAgICAgICAgICdodG1sL3Bh
cnNlci9CYWNrZ3JvdW5kSFRNTFBhcnNlci5jcHAnLAogICAgICAgICAgICAgJ2h0bWwvcGFyc2Vy
L0JhY2tncm91bmRIVE1MUGFyc2VyLmgnLAogICAgICAgICAgICAgJ2h0bWwvcGFyc2VyL0JhY2tn
cm91bmRIVE1MSW5wdXRTdHJlYW0uY3BwJywKQEAgLTMzOTgsNyArMzM5OSw2IEBACiAgICAgICAg
ICAgICAnaHRtbC9wYXJzZXIvSFRNTFNvdXJjZVRyYWNrZXIuaCcsCiAgICAgICAgICAgICAnaHRt
bC9wYXJzZXIvSFRNTFN0YWNrSXRlbS5oJywKICAgICAgICAgICAgICdodG1sL3BhcnNlci9IVE1M
VG9rZW4uaCcsCi0gICAgICAgICAgICAnaHRtbC9wYXJzZXIvSFRNTFRva2VuVHlwZXMuaCcsCiAg
ICAgICAgICAgICAnaHRtbC9wYXJzZXIvSFRNTFRva2VuaXplci5jcHAnLAogICAgICAgICAgICAg
J2h0bWwvcGFyc2VyL0hUTUxUb2tlbml6ZXIuaCcsCiAgICAgICAgICAgICAnaHRtbC9wYXJzZXIv
SFRNTFRyZWVCdWlsZGVyLmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LnZjcHJvai9XZWJDb3JlLnZjcHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dl
YkNvcmUudmNwcm9qCmluZGV4IDk2Y2VkN2RjOWUyZDllNmZjMzA2MThmZWI3MzJlODU5NmI0ZDY1
NzYuLjQ5MTU0NDAzOGEwYzIzZjE2MDgyZjQzNjg4YzZhNjc3MzEzY2FiMDEgMTAwNzU1Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCkBAIC02NDgwNiw2ICs2NDgw
NiwxMCBAQAogCQkJCU5hbWU9InBhcnNlciIKIAkJCQk+CiAJCQkJPEZpbGUKKwkJCQkJUmVsYXRp
dmVQYXRoPSIuLlxodG1sXHBhcnNlclxBdG9taWNIVE1MVG9rZW4uaCIKKwkJCQkJPgorCQkJCTwv
RmlsZT4KKwkJCQk8RmlsZQogCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGh0bWxccGFyc2VyXEJhY2tn
cm91bmRIVE1MSW5wdXRTdHJlYW0uY3BwIgogCQkJCQk+CiAJCQkJPC9GaWxlPgpAQCAtNjQ5ODIs
MTAgKzY0OTg2LDYgQEAKIAkJCQkJPgogCQkJCTwvRmlsZT4KIAkJCQk8RmlsZQotCQkJCQlSZWxh
dGl2ZVBhdGg9Ii4uXGh0bWxccGFyc2VyXEhUTUxUb2tlblR5cGVzLmgiCi0JCQkJCT4KLQkJCQk8
L0ZpbGU+Ci0JCQkJPEZpbGUKIAkJCQkJUmVsYXRpdmVQYXRoPSIuLlxodG1sXHBhcnNlclxIVE1M
VHJlZUJ1aWxkZXIuY3BwIgogCQkJCQk+CiAJCQkJPC9GaWxlPgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvaiBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2oKaW5kZXggMjE0MTIzMjFmZTU1OTA1ZTBl
YmQ1MjRiY2ZiZGUwZTYyMmIxNDdkMy4uNWQwMzc4ODQ4YTBmMzczY2Y0YzBmMTIzYjEzYmZkNzcz
NDgzYmUzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNv
cmUudmN4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52
Y3hwcm9qCkBAIC03OTI1LDYgKzc5MjUsNyBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
aHRtbFxWYWxpZGl0eVN0YXRlLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxodG1s
XFZvaWRDYWxsYmFjay5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caHRtbFxXZWVr
SW5wdXRUeXBlLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxodG1sXHBhcnNlclxB
dG9taWNIVE1MVG9rZW4uaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGh0bWxccGFy
c2VyXEJhY2tncm91bmRIVE1MUGFyc2VyLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIu
LlxodG1sXHBhcnNlclxDb21wYWN0SFRNTFRva2VuLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIuLlxodG1sXHBhcnNlclxDU1NQcmVsb2FkU2Nhbm5lci5oIiAvPgpAQCAtNzk0OCw3ICs3
OTQ5LDYgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGh0bWxccGFyc2VyXEhUTUxTdGFj
a0l0ZW0uaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGh0bWxccGFyc2VyXEhUTUxU
b2tlbi5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caHRtbFxwYXJzZXJcSFRNTFRv
a2VuaXplci5oIiAvPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caHRtbFxwYXJzZXJcSFRN
TFRva2VuVHlwZXMuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGh0bWxccGFyc2Vy
XEhUTUxUcmVlQnVpbGRlci5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caHRtbFxw
YXJzZXJcSFRNTFZpZXdTb3VyY2VQYXJzZXIuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
Ii4uXGh0bWxccGFyc2VyXElucHV0U3RyZWFtUHJlcHJvY2Vzc29yLmgiIC8+CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnMg
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnMK
aW5kZXggYjY3MmM3YzhmYzRjYzVmZmM3ZWZmMTg5MDZjZmI3ODVkMjc3Mzc3OC4uOTY3OTY1ODg1
NGU5M2JmYTZkMDE2NjIyMzJiMTA1NDEyYWY4MmI3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVycwpAQCAtMTI1MzEs
NiArMTI1MzEsOSBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caHRtbFxXZWVrSW5wdXRU
eXBlLmgiPgogICAgICAgPEZpbHRlcj5odG1sPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+Cisg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxodG1sXHBhcnNlclxBdG9taWNIVE1MVG9rZW4uaCI+
CisgICAgICA8RmlsdGVyPmh0bWxccGFyc2VyPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CiAg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxodG1sXHBhcnNlclxCYWNrZ3JvdW5kSFRNTFBhcnNl
ci5oIj4KICAgICAgIDxGaWx0ZXI+aHRtbFxwYXJzZXI8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVk
ZT4KQEAgLTEyNTk3LDkgKzEyNjAwLDYgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGh0
bWxccGFyc2VyXEhUTUxUb2tlbml6ZXIuaCI+CiAgICAgICA8RmlsdGVyPmh0bWxccGFyc2VyPC9G
aWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxodG1s
XHBhcnNlclxIVE1MVG9rZW5UeXBlcy5oIj4KLSAgICAgIDxGaWx0ZXI+aHRtbFxwYXJzZXI8L0Zp
bHRlcj4KLSAgICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGh0bWxc
cGFyc2VyXEhUTUxUcmVlQnVpbGRlci5oIj4KICAgICAgIDxGaWx0ZXI+aHRtbFxwYXJzZXI8L0Zp
bHRlcj4KICAgICA8L0NsSW5jbHVkZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA1YWM1N2JiZjUxYTBmZDI3M2YyNjVkMTA5NzFl
MjU0MjM5MzYxNTA5Li5lNGRiMDUxYmUwMzZhNmJmNWY3NmJiMzI5YzlhODk1YWMzNGRiMzUzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CkBAIC0xMTIxOCw3ICsxMTIxOCw3IEBACiAJCTk3QzA3ODRGMTE2NUQ1QkUwMDNBMzJFRiAvKiBT
dWZmaXhUcmVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN1ZmZpeFRyZWUu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTdDMUY1NTIxMjI4NTVDQjAwRURFNjE1
IC8qIEhUTUxTdGFja0l0ZW0uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gSFRN
TFN0YWNrSXRlbS5oOyBwYXRoID0gcGFyc2VyL0hUTUxTdGFja0l0ZW0uaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJOTdDMUY1NTIxMjI4NTVDQjAwRURFNjE2IC8qIEhUTUxUb2tlbi5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBIVE1MVG9rZW4uaDsgcGF0aCA9IHBh
cnNlci9IVE1MVG9rZW4uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJOTdDMUY1NTIx
MjI4NTVDQjAwRURFNjE3IC8qIEhUTUxUb2tlblR5cGVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgbmFtZSA9IEhUTUxUb2tlblR5cGVzLmg7IHBhdGggPSBwYXJzZXIvSFRNTFRva2VuVHlw
ZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTdDMUY1NTIxMjI4NTVDQjAwRURF
NjE3IC8qIEF0b21pY0hUTUxUb2tlbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUg
PSBBdG9taWNIVE1MVG9rZW4uaDsgcGF0aCA9IHBhcnNlci9BdG9taWNIVE1MVG9rZW4uaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTdDNDcxRDkxMkY5MjVCQzAwODYzNTRCIC8qIENv
bnRlbnRTZWN1cml0eVBvbGljeS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBDb250ZW50U2VjdXJpdHlQb2xpY3kuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk5N0M0NzFEQTEyRjkyNUJEMDA4NjM1NEIgLyogQ29udGVudFNlY3VyaXR5UG9saWN5Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbnRlbnRTZWN1cml0eVBvbGljeS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5N0M3NDAxMjE2MDNGN0ExMDAxMUZGMkQg
LyogRmVhdHVyZU9ic2VydmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEZlYXR1cmVPYnNlcnZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0x
ODczOCw3ICsxODczOCw3IEBACiAJCQkJOTdDMUY1NTIxMjI4NTVDQjAwRURFNjE2IC8qIEhUTUxU
b2tlbi5oICovLAogCQkJCTk3N0IzODVFMTIyODgzRTkwMEI4MUZGOCAvKiBIVE1MVG9rZW5pemVy
LmNwcCAqLywKIAkJCQk5NzdCMzg1RjEyMjg4M0U5MDBCODFGRjggLyogSFRNTFRva2VuaXplci5o
ICovLAotCQkJCTk3QzFGNTUyMTIyODU1Q0IwMEVERTYxNyAvKiBIVE1MVG9rZW5UeXBlcy5oICov
LAorCQkJCTk3QzFGNTUyMTIyODU1Q0IwMEVERTYxNyAvKiBBdG9taWNIVE1MVG9rZW4uaCAqLywK
IAkJCQk5NzdCMzcyMTEyMjg3MjE3MDBCODFGRjggLyogSFRNTFRyZWVCdWlsZGVyLmNwcCAqLywK
IAkJCQk5NzdCMzcyMjEyMjg3MjE3MDBCODFGRjggLyogSFRNTFRyZWVCdWlsZGVyLmggKi8sCiAJ
CQkJOTc3QjM4NjAxMjI4ODNFOTAwQjgxRkY4IC8qIEhUTUxWaWV3U291cmNlUGFyc2VyLmNwcCAq
LywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZXdTb3VyY2VEb2N1bWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWV3U291cmNlRG9jdW1lbnQuY3BwCmlu
ZGV4IGFiZjI0MzgzNmQzYjczNDBlYmQxMzhkMDYzM2JiNTAyYWJhODk5NDIuLmI3ZmRiMzZjYmM5
NTM3NGFhYTgwYjUzMDBkOWJlM2RhYjA0OTYzMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFZpZXdTb3VyY2VEb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MVmlld1NvdXJjZURvY3VtZW50LmNwcApAQCAtOTksMjQgKzk5LDI0IEBAIHZvaWQgSFRN
TFZpZXdTb3VyY2VEb2N1bWVudDo6YWRkU291cmNlKGNvbnN0IFN0cmluZyYgc291cmNlLCBIVE1M
VG9rZW4mIHRva2VuKQogICAgICAgICBjcmVhdGVDb250YWluaW5nVGFibGUoKTsKIAogICAgIHN3
aXRjaCAodG9rZW4udHlwZSgpKSB7Ci0gICAgY2FzZSBIVE1MVG9rZW5UeXBlczo6VW5pbml0aWFs
aXplZDoKKyAgICBjYXNlIEhUTUxUb2tlbjo6VW5pbml0aWFsaXplZDoKICAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgSFRNTFRva2VuVHlwZXM6
OkRPQ1RZUEU6CisgICAgY2FzZSBIVE1MVG9rZW46OkRPQ1RZUEU6CiAgICAgICAgIHByb2Nlc3NE
b2N0eXBlVG9rZW4oc291cmNlLCB0b2tlbik7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgSFRN
TFRva2VuVHlwZXM6OkVuZE9mRmlsZToKKyAgICBjYXNlIEhUTUxUb2tlbjo6RW5kT2ZGaWxlOgog
ICAgICAgICBpZiAoIW1fdGJvZHktPmhhc0NoaWxkTm9kZXMoKSkKICAgICAgICAgICAgIGFkZExp
bmUoU3RyaW5nKCkpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEhUTUxUb2tlblR5cGVzOjpT
dGFydFRhZzoKLSAgICBjYXNlIEhUTUxUb2tlblR5cGVzOjpFbmRUYWc6CisgICAgY2FzZSBIVE1M
VG9rZW46OlN0YXJ0VGFnOgorICAgIGNhc2UgSFRNTFRva2VuOjpFbmRUYWc6CiAgICAgICAgIHBy
b2Nlc3NUYWdUb2tlbihzb3VyY2UsIHRva2VuKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBI
VE1MVG9rZW5UeXBlczo6Q29tbWVudDoKKyAgICBjYXNlIEhUTUxUb2tlbjo6Q29tbWVudDoKICAg
ICAgICAgcHJvY2Vzc0NvbW1lbnRUb2tlbihzb3VyY2UsIHRva2VuKTsKICAgICAgICAgYnJlYWs7
Ci0gICAgY2FzZSBIVE1MVG9rZW5UeXBlczo6Q2hhcmFjdGVyOgorICAgIGNhc2UgSFRNTFRva2Vu
OjpDaGFyYWN0ZXI6CiAgICAgICAgIHByb2Nlc3NDaGFyYWN0ZXJUb2tlbihzb3VyY2UsIHRva2Vu
KTsKICAgICAgICAgYnJlYWs7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9wYXJzZXIvQXRvbWljSFRNTFRva2VuLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9B
dG9taWNIVE1MVG9rZW4uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44OGE1MDU1NWM4Njk2ZWRkMTY4MTY0NGMwYmUx
NzRjOGI4NGU3MmE5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJz
ZXIvQXRvbWljSFRNTFRva2VuLmgKQEAgLTAsMCArMSwzMTMgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTMgR29vZ2xlLCBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIEF0b21pY0hUTUxUb2tlbl9o
CisjZGVmaW5lIEF0b21pY0hUTUxUb2tlbl9oCisKKyNpbmNsdWRlICJBdHRyaWJ1dGUuaCIKKyNp
bmNsdWRlICJDb21wYWN0SFRNTFRva2VuLmgiCisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4K
KyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3Mg
QXRvbWljSFRNTFRva2VuIDogcHVibGljIFJlZkNvdW50ZWQ8QXRvbWljSFRNTFRva2VuPiB7Cisg
ICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQXRvbWljSFRNTFRva2VuKTsKK3B1YmxpYzoKKyAgICBz
dGF0aWMgUGFzc1JlZlB0cjxBdG9taWNIVE1MVG9rZW4+IGNyZWF0ZShIVE1MVG9rZW4mIHRva2Vu
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBBdG9taWNIVE1MVG9rZW4odG9r
ZW4pKTsKKyAgICB9CisKKyNpZiBFTkFCTEUoVEhSRUFERURfSFRNTF9QQVJTRVIpCisKKyAgICBz
dGF0aWMgUGFzc1JlZlB0cjxBdG9taWNIVE1MVG9rZW4+IGNyZWF0ZShjb25zdCBDb21wYWN0SFRN
TFRva2VuJiB0b2tlbikKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQXRvbWlj
SFRNTFRva2VuKHRva2VuKSk7CisgICAgfQorCisjZW5kaWYKKworICAgIHN0YXRpYyBQYXNzUmVm
UHRyPEF0b21pY0hUTUxUb2tlbj4gY3JlYXRlKEhUTUxUb2tlbjo6VHlwZSB0eXBlLCBjb25zdCBB
dG9taWNTdHJpbmcmIG5hbWUsIGNvbnN0IFZlY3RvcjxBdHRyaWJ1dGU+JiBhdHRyaWJ1dGVzID0g
VmVjdG9yPEF0dHJpYnV0ZT4oKSkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcg
QXRvbWljSFRNTFRva2VuKHR5cGUsIG5hbWUsIGF0dHJpYnV0ZXMpKTsKKyAgICB9CisKKyAgICBi
b29sIGZvcmNlUXVpcmtzKCkgY29uc3QKKyAgICB7CisgICAgICAgIEFTU0VSVChtX3R5cGUgPT0g
SFRNTFRva2VuOjpET0NUWVBFKTsKKyAgICAgICAgcmV0dXJuIG1fZG9jdHlwZURhdGEtPm1fZm9y
Y2VRdWlya3M7CisgICAgfQorCisgICAgSFRNTFRva2VuOjpUeXBlIHR5cGUoKSBjb25zdCB7IHJl
dHVybiBtX3R5cGU7IH0KKworICAgIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSgpIGNvbnN0Cisg
ICAgeworICAgICAgICBBU1NFUlQodXNlc05hbWUoKSk7CisgICAgICAgIHJldHVybiBtX25hbWU7
CisgICAgfQorCisgICAgdm9pZCBzZXROYW1lKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSkKKyAg
ICB7CisgICAgICAgIEFTU0VSVCh1c2VzTmFtZSgpKTsKKyAgICAgICAgbV9uYW1lID0gbmFtZTsK
KyAgICB9CisKKyAgICBib29sIHNlbGZDbG9zaW5nKCkgY29uc3QKKyAgICB7CisgICAgICAgIEFT
U0VSVChtX3R5cGUgPT0gSFRNTFRva2VuOjpTdGFydFRhZyB8fCBtX3R5cGUgPT0gSFRNTFRva2Vu
OjpFbmRUYWcpOworICAgICAgICByZXR1cm4gbV9zZWxmQ2xvc2luZzsKKyAgICB9CisKKyAgICBB
dHRyaWJ1dGUqIGdldEF0dHJpYnV0ZUl0ZW0oY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRl
TmFtZSkKKyAgICB7CisgICAgICAgIEFTU0VSVCh1c2VzQXR0cmlidXRlcygpKTsKKyAgICAgICAg
cmV0dXJuIGZpbmRBdHRyaWJ1dGVJblZlY3RvcihtX2F0dHJpYnV0ZXMsIGF0dHJpYnV0ZU5hbWUp
OworICAgIH0KKworICAgIFZlY3RvcjxBdHRyaWJ1dGU+JiBhdHRyaWJ1dGVzKCkKKyAgICB7Cisg
ICAgICAgIEFTU0VSVCh1c2VzQXR0cmlidXRlcygpKTsKKyAgICAgICAgcmV0dXJuIG1fYXR0cmli
dXRlczsKKyAgICB9CisKKyAgICBjb25zdCBWZWN0b3I8QXR0cmlidXRlPiYgYXR0cmlidXRlcygp
IGNvbnN0CisgICAgeworICAgICAgICBBU1NFUlQodXNlc0F0dHJpYnV0ZXMoKSk7CisgICAgICAg
IHJldHVybiBtX2F0dHJpYnV0ZXM7CisgICAgfQorCisgICAgY29uc3QgVUNoYXIqIGNoYXJhY3Rl
cnMoKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBIVE1MVG9rZW46OkNo
YXJhY3Rlcik7CisgICAgICAgIHJldHVybiBtX2V4dGVybmFsQ2hhcmFjdGVyczsKKyAgICB9CisK
KyAgICBzaXplX3QgY2hhcmFjdGVyc0xlbmd0aCgpIGNvbnN0CisgICAgeworICAgICAgICBBU1NF
UlQobV90eXBlID09IEhUTUxUb2tlbjo6Q2hhcmFjdGVyKTsKKyAgICAgICAgcmV0dXJuIG1fZXh0
ZXJuYWxDaGFyYWN0ZXJzTGVuZ3RoOworICAgIH0KKworICAgIGJvb2wgaXNBbGw4Qml0RGF0YSgp
IGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9pc0FsbDhCaXREYXRhOworICAgIH0KKwor
ICAgIGNvbnN0IFN0cmluZyYgY29tbWVudCgpIGNvbnN0CisgICAgeworICAgICAgICBBU1NFUlQo
bV90eXBlID09IEhUTUxUb2tlbjo6Q29tbWVudCk7CisgICAgICAgIHJldHVybiBtX2RhdGE7Cisg
ICAgfQorCisgICAgLy8gRklYTUU6IERpc3Rpbmd1aXNoIGJldHdlZW4gYSBtaXNzaW5nIHB1Ymxp
YyBpZGVudGlmZXIgYW5kIGFuIGVtcHR5IG9uZS4KKyAgICBXVEY6OlZlY3RvcjxVQ2hhcj4mIHB1
YmxpY0lkZW50aWZpZXIoKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBI
VE1MVG9rZW46OkRPQ1RZUEUpOworICAgICAgICByZXR1cm4gbV9kb2N0eXBlRGF0YS0+bV9wdWJs
aWNJZGVudGlmaWVyOworICAgIH0KKworICAgIC8vIEZJWE1FOiBEaXN0aW5ndWlzaCBiZXR3ZWVu
IGEgbWlzc2luZyBzeXN0ZW0gaWRlbnRpZmVyIGFuZCBhbiBlbXB0eSBvbmUuCisgICAgV1RGOjpW
ZWN0b3I8VUNoYXI+JiBzeXN0ZW1JZGVudGlmaWVyKCkgY29uc3QKKyAgICB7CisgICAgICAgIEFT
U0VSVChtX3R5cGUgPT0gSFRNTFRva2VuOjpET0NUWVBFKTsKKyAgICAgICAgcmV0dXJuIG1fZG9j
dHlwZURhdGEtPm1fc3lzdGVtSWRlbnRpZmllcjsKKyAgICB9CisKKyAgICB2b2lkIGNsZWFyRXh0
ZXJuYWxDaGFyYWN0ZXJzKCkKKyAgICB7CisgICAgICAgIG1fZXh0ZXJuYWxDaGFyYWN0ZXJzID0g
MDsKKyAgICAgICAgbV9leHRlcm5hbENoYXJhY3RlcnNMZW5ndGggPSAwOworICAgICAgICBtX2lz
QWxsOEJpdERhdGEgPSBmYWxzZTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgZXhwbGljaXQgQXRv
bWljSFRNTFRva2VuKEhUTUxUb2tlbiYgdG9rZW4pCisgICAgICAgIDogbV90eXBlKHRva2VuLnR5
cGUoKSkKKyAgICB7CisgICAgICAgIHN3aXRjaCAobV90eXBlKSB7CisgICAgICAgIGNhc2UgSFRN
TFRva2VuOjpVbmluaXRpYWxpemVkOgorICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBIVE1MVG9rZW46OkRPQ1RZUEU6Cisg
ICAgICAgICAgICBtX25hbWUgPSBBdG9taWNTdHJpbmcodG9rZW4ubmFtZVN0cmluZygpKTsKKyAg
ICAgICAgICAgIG1fZG9jdHlwZURhdGEgPSB0b2tlbi5yZWxlYXNlRG9jdHlwZURhdGEoKTsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEhUTUxUb2tlbjo6RW5kT2ZGaWxlOgorICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgSFRNTFRva2VuOjpTdGFydFRhZzoKKyAgICAg
ICAgY2FzZSBIVE1MVG9rZW46OkVuZFRhZzogeworICAgICAgICAgICAgbV9zZWxmQ2xvc2luZyA9
IHRva2VuLnNlbGZDbG9zaW5nKCk7CisgICAgICAgICAgICBtX25hbWUgPSBBdG9taWNTdHJpbmco
dG9rZW4ubmFtZVN0cmluZygpKTsKKyAgICAgICAgICAgIGluaXRpYWxpemVBdHRyaWJ1dGVzKHRv
a2VuLmF0dHJpYnV0ZXMoKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAg
ICBjYXNlIEhUTUxUb2tlbjo6Q29tbWVudDoKKyAgICAgICAgICAgIGlmICh0b2tlbi5pc0FsbDhC
aXREYXRhKCkpCisgICAgICAgICAgICAgICAgbV9kYXRhID0gU3RyaW5nOjptYWtlOEJpdEZyb20x
NkJpdFNvdXJjZSh0b2tlbi5jb21tZW50KCkuZGF0YSgpLCB0b2tlbi5jb21tZW50KCkuc2l6ZSgp
KTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBtX2RhdGEgPSBTdHJpbmcodG9r
ZW4uY29tbWVudCgpLmRhdGEoKSwgdG9rZW4uY29tbWVudCgpLnNpemUoKSk7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgY2FzZSBIVE1MVG9rZW46OkNoYXJhY3RlcjoKKyAgICAgICAgICAg
IG1fZXh0ZXJuYWxDaGFyYWN0ZXJzID0gdG9rZW4uY2hhcmFjdGVycygpLmRhdGEoKTsKKyAgICAg
ICAgICAgIG1fZXh0ZXJuYWxDaGFyYWN0ZXJzTGVuZ3RoID0gdG9rZW4uY2hhcmFjdGVycygpLnNp
emUoKTsKKyAgICAgICAgICAgIG1faXNBbGw4Qml0RGF0YSA9IHRva2VuLmlzQWxsOEJpdERhdGEo
KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIH0KKyAgICB9CisKKyNpZiBFTkFCTEUoVEhSRUFERURfSFRNTF9QQVJTRVIp
CisKKyAgICBleHBsaWNpdCBBdG9taWNIVE1MVG9rZW4oY29uc3QgQ29tcGFjdEhUTUxUb2tlbiYg
dG9rZW4pCisgICAgICAgIDogbV90eXBlKHRva2VuLnR5cGUoKSkKKyAgICB7CisgICAgICAgIHN3
aXRjaCAobV90eXBlKSB7CisgICAgICAgIGNhc2UgSFRNTFRva2VuOjpVbmluaXRpYWxpemVkOgor
ICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgY2FzZSBIVE1MVG9rZW46OkRPQ1RZUEU6CisgICAgICAgICAgICBtX25hbWUgPSB0b2tl
bi5kYXRhKCk7CisgICAgICAgICAgICBtX2RvY3R5cGVEYXRhID0gYWRvcHRQdHIobmV3IERvY3R5
cGVEYXRhKCkpOworICAgICAgICAgICAgbV9kb2N0eXBlRGF0YS0+bV9oYXNQdWJsaWNJZGVudGlm
aWVyID0gdHJ1ZTsKKyAgICAgICAgICAgIG1fZG9jdHlwZURhdGEtPm1fcHVibGljSWRlbnRpZmll
ci5hcHBlbmQodG9rZW4ucHVibGljSWRlbnRpZmllcigpLmNoYXJhY3RlcnMoKSwgdG9rZW4ucHVi
bGljSWRlbnRpZmllcigpLmxlbmd0aCgpKTsKKyAgICAgICAgICAgIG1fZG9jdHlwZURhdGEtPm1f
aGFzU3lzdGVtSWRlbnRpZmllciA9IHRydWU7CisgICAgICAgICAgICBtX2RvY3R5cGVEYXRhLT5t
X3N5c3RlbUlkZW50aWZpZXIuYXBwZW5kKHRva2VuLnN5c3RlbUlkZW50aWZpZXIoKS5jaGFyYWN0
ZXJzKCksIHRva2VuLnN5c3RlbUlkZW50aWZpZXIoKS5sZW5ndGgoKSk7CisgICAgICAgICAgICBt
X2RvY3R5cGVEYXRhLT5tX2ZvcmNlUXVpcmtzID0gdG9rZW4uZG9jdHlwZUZvcmNlc1F1aXJrcygp
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgSFRNTFRva2VuOjpFbmRPZkZpbGU6
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBIVE1MVG9rZW46OlN0YXJ0VGFnOgor
ICAgICAgICAgICAgbV9hdHRyaWJ1dGVzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkodG9rZW4uYXR0
cmlidXRlcygpLnNpemUoKSk7CisgICAgICAgICAgICBmb3IgKFZlY3RvcjxDb21wYWN0QXR0cmli
dXRlPjo6Y29uc3RfaXRlcmF0b3IgaXQgPSB0b2tlbi5hdHRyaWJ1dGVzKCkuYmVnaW4oKTsgaXQg
IT0gdG9rZW4uYXR0cmlidXRlcygpLmVuZCgpOyArK2l0KQorICAgICAgICAgICAgICAgIG1fYXR0
cmlidXRlcy5hcHBlbmQoQXR0cmlidXRlKFF1YWxpZmllZE5hbWUobnVsbEF0b20sIGl0LT5uYW1l
KCksIG51bGxBdG9tKSwgaXQtPnZhbHVlKCkpKTsKKyAgICAgICAgICAgIC8vIEZhbGwgdGhyb3Vn
aCEKKyAgICAgICAgY2FzZSBIVE1MVG9rZW46OkVuZFRhZzoKKyAgICAgICAgICAgIG1fc2VsZkNs
b3NpbmcgPSB0b2tlbi5zZWxmQ2xvc2luZygpOworICAgICAgICAgICAgbV9uYW1lID0gQXRvbWlj
U3RyaW5nKHRva2VuLmRhdGEoKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBI
VE1MVG9rZW46OkNvbW1lbnQ6CisgICAgICAgICAgICBtX2RhdGEgPSB0b2tlbi5kYXRhKCk7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBIVE1MVG9rZW46OkNoYXJhY3RlcjoKKyAg
ICAgICAgICAgIG1fZXh0ZXJuYWxDaGFyYWN0ZXJzID0gdG9rZW4uZGF0YSgpLmNoYXJhY3RlcnMo
KTsKKyAgICAgICAgICAgIG1fZXh0ZXJuYWxDaGFyYWN0ZXJzTGVuZ3RoID0gdG9rZW4uZGF0YSgp
Lmxlbmd0aCgpOworICAgICAgICAgICAgbV9pc0FsbDhCaXREYXRhID0gdG9rZW4uaXNBbGw4Qml0
RGF0YSgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKworI2VuZGlmCisKKyAgICBleHBsaWNpdCBBdG9t
aWNIVE1MVG9rZW4oSFRNTFRva2VuOjpUeXBlIHR5cGUpCisgICAgICAgIDogbV90eXBlKHR5cGUp
CisgICAgICAgICwgbV9leHRlcm5hbENoYXJhY3RlcnMoMCkKKyAgICAgICAgLCBtX2V4dGVybmFs
Q2hhcmFjdGVyc0xlbmd0aCgwKQorICAgICAgICAsIG1faXNBbGw4Qml0RGF0YShmYWxzZSkKKyAg
ICAgICAgLCBtX3NlbGZDbG9zaW5nKGZhbHNlKQorICAgIHsKKyAgICB9CisKKyAgICBBdG9taWNI
VE1MVG9rZW4oSFRNTFRva2VuOjpUeXBlIHR5cGUsIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwg
Y29uc3QgVmVjdG9yPEF0dHJpYnV0ZT4mIGF0dHJpYnV0ZXMgPSBWZWN0b3I8QXR0cmlidXRlPigp
KQorICAgICAgICA6IG1fdHlwZSh0eXBlKQorICAgICAgICAsIG1fbmFtZShuYW1lKQorICAgICAg
ICAsIG1fZXh0ZXJuYWxDaGFyYWN0ZXJzKDApCisgICAgICAgICwgbV9leHRlcm5hbENoYXJhY3Rl
cnNMZW5ndGgoMCkKKyAgICAgICAgLCBtX2lzQWxsOEJpdERhdGEoZmFsc2UpCisgICAgICAgICwg
bV9zZWxmQ2xvc2luZyhmYWxzZSkKKyAgICAgICAgLCBtX2F0dHJpYnV0ZXMoYXR0cmlidXRlcykK
KyAgICB7CisgICAgICAgIEFTU0VSVCh1c2VzTmFtZSgpKTsKKyAgICB9CisKKyAgICBIVE1MVG9r
ZW46OlR5cGUgbV90eXBlOworCisgICAgdm9pZCBpbml0aWFsaXplQXR0cmlidXRlcyhjb25zdCBI
VE1MVG9rZW46OkF0dHJpYnV0ZUxpc3QmIGF0dHJpYnV0ZXMpOworICAgIFF1YWxpZmllZE5hbWUg
bmFtZUZvckF0dHJpYnV0ZShjb25zdCBIVE1MVG9rZW46OkF0dHJpYnV0ZSYpIGNvbnN0OworCisg
ICAgYm9vbCB1c2VzTmFtZSgpIGNvbnN0OworCisgICAgYm9vbCB1c2VzQXR0cmlidXRlcygpIGNv
bnN0OworCisgICAgLy8gIm5hbWUiIGZvciBET0NUWVBFLCBTdGFydFRhZywgYW5kIEVuZFRhZwor
ICAgIEF0b21pY1N0cmluZyBtX25hbWU7CisKKyAgICAvLyAiZGF0YSIgZm9yIENvbW1lbnQKKyAg
ICBTdHJpbmcgbV9kYXRhOworCisgICAgLy8gImNoYXJhY3RlcnMiIGZvciBDaGFyYWN0ZXIKKyAg
ICAvLworICAgIC8vIFdlIGRvbid0IHdhbnQgdG8gY29weSB0aGUgdGhlIGNoYXJhY3RlcnMgb3V0
IG9mIHRoZSBUb2tlbiwgc28gd2UKKyAgICAvLyBrZWVwIGEgcG9pbnRlciB0byBpdHMgYnVmZmVy
IGluc3RlYWQuIFRoaXMgYnVmZmVyIGlzIG93bmVkIGJ5IHRoZQorICAgIC8vIFRva2VuIGFuZCBj
YXVzZXMgYSBsaWZldGltZSBkZXBlbmRlbmNlIGJldHdlZW4gdGhlc2Ugb2JqZWN0cy4KKyAgICAv
LworICAgIC8vIEZJWE1FOiBBZGQgYSBtZWNoYW5pc20gZm9yICJpbnRlcm5hbGl6aW5nIiB0aGUg
Y2hhcmFjdGVycyB3aGVuIHRoZQorICAgIC8vICAgICAgICBIVE1MVG9rZW4gaXMgZGVzdHJ1Y3Rl
ZC4KKyAgICBjb25zdCBVQ2hhciogbV9leHRlcm5hbENoYXJhY3RlcnM7CisgICAgc2l6ZV90IG1f
ZXh0ZXJuYWxDaGFyYWN0ZXJzTGVuZ3RoOworICAgIGJvb2wgbV9pc0FsbDhCaXREYXRhOworCisg
ICAgLy8gRm9yIERPQ1RZUEUKKyAgICBPd25QdHI8RG9jdHlwZURhdGE+IG1fZG9jdHlwZURhdGE7
CisKKyAgICAvLyBGb3IgU3RhcnRUYWcgYW5kIEVuZFRhZworICAgIGJvb2wgbV9zZWxmQ2xvc2lu
ZzsKKworICAgIFZlY3RvcjxBdHRyaWJ1dGU+IG1fYXR0cmlidXRlczsKK307CisKK2lubGluZSB2
b2lkIEF0b21pY0hUTUxUb2tlbjo6aW5pdGlhbGl6ZUF0dHJpYnV0ZXMoY29uc3QgSFRNTFRva2Vu
OjpBdHRyaWJ1dGVMaXN0JiBhdHRyaWJ1dGVzKQoreworICAgIHNpemVfdCBzaXplID0gYXR0cmli
dXRlcy5zaXplKCk7CisgICAgaWYgKCFzaXplKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2F0
dHJpYnV0ZXMuY2xlYXIoKTsKKyAgICBtX2F0dHJpYnV0ZXMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0
eShzaXplKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7ICsraSkgeworICAgICAg
ICBjb25zdCBIVE1MVG9rZW46OkF0dHJpYnV0ZSYgYXR0cmlidXRlID0gYXR0cmlidXRlc1tpXTsK
KyAgICAgICAgaWYgKGF0dHJpYnV0ZS5tX25hbWUuaXNFbXB0eSgpKQorICAgICAgICAgICAgY29u
dGludWU7CisKKyAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBiZSBhYmxlIHRvIGFkZCB0aGUg
Zm9sbG93aW5nIEFTU0VSVCBvbmNlIHdlIGZpeAorICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjI5NzEKKyAgICAgICAgLy8gICBBU1NFUlQoYXR0cmli
dXRlLm1fbmFtZVJhbmdlLm1fc3RhcnQpOworICAgICAgICBBU1NFUlQoYXR0cmlidXRlLm1fbmFt
ZVJhbmdlLm1fZW5kKTsKKyAgICAgICAgQVNTRVJUKGF0dHJpYnV0ZS5tX3ZhbHVlUmFuZ2UubV9z
dGFydCk7CisgICAgICAgIEFTU0VSVChhdHRyaWJ1dGUubV92YWx1ZVJhbmdlLm1fZW5kKTsKKwor
ICAgICAgICBBdG9taWNTdHJpbmcgdmFsdWUoYXR0cmlidXRlLm1fdmFsdWUuZGF0YSgpLCBhdHRy
aWJ1dGUubV92YWx1ZS5zaXplKCkpOworICAgICAgICBjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1l
ID0gbmFtZUZvckF0dHJpYnV0ZShhdHRyaWJ1dGUpOworICAgICAgICBpZiAoIWZpbmRBdHRyaWJ1
dGVJblZlY3RvcihtX2F0dHJpYnV0ZXMsIG5hbWUpKQorICAgICAgICAgICAgbV9hdHRyaWJ1dGVz
LmFwcGVuZChBdHRyaWJ1dGUobmFtZSwgdmFsdWUpKTsKKyAgICB9Cit9CisKK30KKworI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9CYWNrZ3JvdW5kSFRNTFBh
cnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9CYWNrZ3JvdW5kSFRNTFBhcnNl
ci5jcHAKaW5kZXggODY3NWRiMDBhMTMzM2JkNzM1ODA1YjhlMDM3NzJlZmUxNjkwNGY1Yi4uNTc4
MWEzODc4YTQ2N2QxZDBjODhiOGU2NmE0ZDc3M2UzMDhlNDllNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9wYXJzZXIvQmFja2dyb3VuZEhUTUxQYXJzZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0JhY2tncm91bmRIVE1MUGFyc2VyLmNwcApAQCAtMTEzLDcg
KzExMyw3IEBAIHZvaWQgQmFja2dyb3VuZEhUTUxQYXJzZXI6Om1hcmtFbmRPZkZpbGUoKQogCiBi
b29sIEJhY2tncm91bmRIVE1MUGFyc2VyOjpzaW11bGF0ZVRyZWVCdWlsZGVyKGNvbnN0IENvbXBh
Y3RIVE1MVG9rZW4mIHRva2VuKQogewotICAgIGlmICh0b2tlbi50eXBlKCkgPT0gSFRNTFRva2Vu
VHlwZXM6OlN0YXJ0VGFnKSB7CisgICAgaWYgKHRva2VuLnR5cGUoKSA9PSBIVE1MVG9rZW46OlN0
YXJ0VGFnKSB7CiAgICAgICAgIGNvbnN0IFN0cmluZyYgdGFnTmFtZSA9IHRva2VuLmRhdGEoKTsK
ICAgICAgICAgaWYgKHRocmVhZFNhZmVNYXRjaCh0YWdOYW1lLCBTVkdOYW1lczo6c3ZnVGFnKQog
ICAgICAgICAgICAgfHwgdGhyZWFkU2FmZU1hdGNoKHRhZ05hbWUsIE1hdGhNTE5hbWVzOjptYXRo
VGFnKSkKQEAgLTEzNSw3ICsxMzUsNyBAQCBib29sIEJhY2tncm91bmRIVE1MUGFyc2VyOjpzaW11
bGF0ZVRyZWVCdWlsZGVyKGNvbnN0IENvbXBhY3RIVE1MVG9rZW4mIHRva2VuKQogICAgICAgICAg
ICAgbV90b2tlbml6ZXItPnNldFN0YXRlKEhUTUxUb2tlbml6ZXI6OlJBV1RFWFRTdGF0ZSk7CiAg
ICAgfQogCi0gICAgaWYgKHRva2VuLnR5cGUoKSA9PSBIVE1MVG9rZW5UeXBlczo6RW5kVGFnKSB7
CisgICAgaWYgKHRva2VuLnR5cGUoKSA9PSBIVE1MVG9rZW46OkVuZFRhZykgewogICAgICAgICBj
b25zdCBTdHJpbmcmIHRhZ05hbWUgPSB0b2tlbi5kYXRhKCk7CiAgICAgICAgIGlmICh0aHJlYWRT
YWZlTWF0Y2godGFnTmFtZSwgU1ZHTmFtZXM6OnN2Z1RhZykgfHwgdGhyZWFkU2FmZU1hdGNoKHRh
Z05hbWUsIE1hdGhNTE5hbWVzOjptYXRoVGFnKSkKICAgICAgICAgICAgIG1faW5Gb3JlaWduQ29u
dGVudCA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQ29t
cGFjdEhUTUxUb2tlbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9Db21wYWN0SFRN
TFRva2VuLmNwcAppbmRleCA5MmU2MTM0OTM4NTJiYTY5ZTlhMmEzYzFjY2RmYjI0OWJiYjFmYWU2
Li4xNjg5MTMyMTNiNGI0NjI5ZDE0ZGQ0NTQ2NDVlOWVhMjc0NzRiNTRlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9Db21wYWN0SFRNTFRva2VuLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3BhcnNlci9Db21wYWN0SFRNTFRva2VuLmNwcApAQCAtNTEsMTAgKzUx
LDEwIEBAIENvbXBhY3RIVE1MVG9rZW46OkNvbXBhY3RIVE1MVG9rZW4oY29uc3QgSFRNTFRva2Vu
KiB0b2tlbiwgY29uc3QgVGV4dFBvc2l0aW9uJiB0CiAgICAgLCBtX3RleHRQb3NpdGlvbih0ZXh0
UG9zaXRpb24pCiB7CiAgICAgc3dpdGNoIChtX3R5cGUpIHsKLSAgICBjYXNlIEhUTUxUb2tlblR5
cGVzOjpVbmluaXRpYWxpemVkOgorICAgIGNhc2UgSFRNTFRva2VuOjpVbmluaXRpYWxpemVkOgog
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBI
VE1MVG9rZW5UeXBlczo6RE9DVFlQRTogeworICAgIGNhc2UgSFRNTFRva2VuOjpET0NUWVBFOiB7
CiAgICAgICAgIG1fZGF0YSA9IFN0cmluZyh0b2tlbi0+bmFtZSgpLmRhdGEoKSwgdG9rZW4tPm5h
bWUoKS5zaXplKCkpOwogICAgICAgICAvLyBUaGVyZSBpcyBvbmx5IDEgRE9DVFlQRSB0b2tlbiBw
ZXIgZG9jdW1lbnQsIHNvIHRvIGF2b2lkIGluY3JlYXNpbmcgdGhlCiAgICAgICAgIC8vIHNpemUg
b2YgQ29tcGFjdEhUTUxUb2tlbiwgd2UganVzdCB1c2UgdGhlIG1fYXR0cmlidXRlcyB2ZWN0b3Iu
CkBAIC02NCwxOCArNjQsMTggQEAgQ29tcGFjdEhUTUxUb2tlbjo6Q29tcGFjdEhUTUxUb2tlbihj
b25zdCBIVE1MVG9rZW4qIHRva2VuLCBjb25zdCBUZXh0UG9zaXRpb24mIHQKICAgICAgICAgbV9k
b2N0eXBlRm9yY2VzUXVpcmtzID0gdG9rZW4tPmZvcmNlUXVpcmtzKCk7CiAgICAgICAgIGJyZWFr
OwogICAgIH0KLSAgICBjYXNlIEhUTUxUb2tlblR5cGVzOjpFbmRPZkZpbGU6CisgICAgY2FzZSBI
VE1MVG9rZW46OkVuZE9mRmlsZToKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBIVE1MVG9rZW5U
eXBlczo6U3RhcnRUYWc6CisgICAgY2FzZSBIVE1MVG9rZW46OlN0YXJ0VGFnOgogICAgICAgICBt
X2F0dHJpYnV0ZXMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eSh0b2tlbi0+YXR0cmlidXRlcygpLnNp
emUoKSk7CiAgICAgICAgIGZvciAoVmVjdG9yPEhUTUxUb2tlbjo6QXR0cmlidXRlPjo6Y29uc3Rf
aXRlcmF0b3IgaXQgPSB0b2tlbi0+YXR0cmlidXRlcygpLmJlZ2luKCk7IGl0ICE9IHRva2VuLT5h
dHRyaWJ1dGVzKCkuZW5kKCk7ICsraXQpCiAgICAgICAgICAgICBtX2F0dHJpYnV0ZXMuYXBwZW5k
KENvbXBhY3RBdHRyaWJ1dGUoU3RyaW5nKGl0LT5tX25hbWUuZGF0YSgpLCBpdC0+bV9uYW1lLnNp
emUoKSksIFN0cmluZyhpdC0+bV92YWx1ZS5kYXRhKCksIGl0LT5tX3ZhbHVlLnNpemUoKSkpKTsK
ICAgICAgICAgLy8gRmFsbCB0aHJvdWdoIQotICAgIGNhc2UgSFRNTFRva2VuVHlwZXM6OkVuZFRh
ZzoKKyAgICBjYXNlIEhUTUxUb2tlbjo6RW5kVGFnOgogICAgICAgICBtX3NlbGZDbG9zaW5nID0g
dG9rZW4tPnNlbGZDbG9zaW5nKCk7CiAgICAgICAgIC8vIEZhbGwgdGhyb3VnaCEKLSAgICBjYXNl
IEhUTUxUb2tlblR5cGVzOjpDb21tZW50OgotICAgIGNhc2UgSFRNTFRva2VuVHlwZXM6OkNoYXJh
Y3RlcjoKKyAgICBjYXNlIEhUTUxUb2tlbjo6Q29tbWVudDoKKyAgICBjYXNlIEhUTUxUb2tlbjo6
Q2hhcmFjdGVyOgogICAgICAgICBpZiAodG9rZW4tPmlzQWxsOEJpdERhdGEoKSkgewogICAgICAg
ICAgICAgbV9kYXRhID0gU3RyaW5nOjptYWtlOEJpdEZyb20xNkJpdFNvdXJjZSh0b2tlbi0+ZGF0
YSgpLmRhdGEoKSwgdG9rZW4tPmRhdGEoKS5zaXplKCkpOwogICAgICAgICAgICAgbV9pc0FsbDhC
aXREYXRhID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0Nv
bXBhY3RIVE1MVG9rZW4uaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0NvbXBhY3RIVE1M
VG9rZW4uaAppbmRleCA2Yzk1ZjZhMWNlZWFiNjc5NDE4ZTcxMzA1OTgzYzhmYjk5NDM3OWZlLi5i
N2M4NTY5MDQ2YjRkMjE3YmIwZTM5YzJlZTkwNmYzMDUyNjNlYjgwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3BhcnNlci9Db21wYWN0SFRNTFRva2VuLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9wYXJzZXIvQ29tcGFjdEhUTUxUb2tlbi5oCkBAIC0yOCw3ICsyOCw3IEBACiAK
ICNpZiBFTkFCTEUoVEhSRUFERURfSFRNTF9QQVJTRVIpCiAKLSNpbmNsdWRlICJIVE1MVG9rZW5U
eXBlcy5oIgorI2luY2x1ZGUgIkhUTUxUb2tlbi5oIgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4K
ICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+
CkBAIC0zOSw3ICszOSw2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgSFRNTFRv
a2VuOwogY2xhc3MgWFNTSW5mbzsKIAogY2xhc3MgQ29tcGFjdEF0dHJpYnV0ZSB7CkBAIC02NSw3
ICs2NCw3IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaXNTYWZlVG9TZW5kVG9Bbm90aGVyVGhyZWFk
KCkgY29uc3Q7CiAKLSAgICBIVE1MVG9rZW5UeXBlczo6VHlwZSB0eXBlKCkgY29uc3QgeyByZXR1
cm4gc3RhdGljX2Nhc3Q8SFRNTFRva2VuVHlwZXM6OlR5cGU+KG1fdHlwZSk7IH0KKyAgICBIVE1M
VG9rZW46OlR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEhUTUxUb2tlbjo6
VHlwZT4obV90eXBlKTsgfQogICAgIGNvbnN0IFN0cmluZyYgZGF0YSgpIGNvbnN0IHsgcmV0dXJu
IG1fZGF0YTsgfQogICAgIGJvb2wgc2VsZkNsb3NpbmcoKSBjb25zdCB7IHJldHVybiBtX3NlbGZD
bG9zaW5nOyB9CiAgICAgYm9vbCBpc0FsbDhCaXREYXRhKCkgY29uc3QgeyByZXR1cm4gbV9pc0Fs
bDhCaXREYXRhOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1M
Q29uc3RydWN0aW9uU2l0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MQ29u
c3RydWN0aW9uU2l0ZS5jcHAKaW5kZXggNTFlZDMyZWQyMTMxOGFkZGI2YTNjYWNhMjQzOTZmY2I5
NWM2OTY2OC4uYmUxYzUzNTQzMjk1OTBmODliYzA4NzgxZDZkNTBiZTNmYTVlMGZlNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTENvbnN0cnVjdGlvblNpdGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxDb25zdHJ1Y3Rpb25TaXRlLmNw
cApAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkhUTUxU
cmVlQnVpbGRlci5oIgogCisjaW5jbHVkZSAiQXRvbWljSFRNTFRva2VuLmgiCiAjaW5jbHVkZSAi
Q29tbWVudC5oIgogI2luY2x1ZGUgIkRvY3VtZW50RnJhZ21lbnQuaCIKICNpbmNsdWRlICJEb2N1
bWVudFR5cGUuaCIKQEAgLTM0MCw3ICszNDEsNyBAQCB2b2lkIEhUTUxDb25zdHJ1Y3Rpb25TaXRl
OjpmaW5pc2hlZFBhcnNpbmcoKQogCiB2b2lkIEhUTUxDb25zdHJ1Y3Rpb25TaXRlOjppbnNlcnRE
b2N0eXBlKEF0b21pY0hUTUxUb2tlbiogdG9rZW4pCiB7Ci0gICAgQVNTRVJUKHRva2VuLT50eXBl
KCkgPT0gSFRNTFRva2VuVHlwZXM6OkRPQ1RZUEUpOworICAgIEFTU0VSVCh0b2tlbi0+dHlwZSgp
ID09IEhUTUxUb2tlbjo6RE9DVFlQRSk7CiAKICAgICBjb25zdCBTdHJpbmcmIHB1YmxpY0lkID0g
U3RyaW5nOjphZG9wdCh0b2tlbi0+cHVibGljSWRlbnRpZmllcigpKTsKICAgICBjb25zdCBTdHJp
bmcmIHN5c3RlbUlkID0gU3RyaW5nOjphZG9wdCh0b2tlbi0+c3lzdGVtSWRlbnRpZmllcigpKTsK
QEAgLTM2NSwxOSArMzY2LDE5IEBAIHZvaWQgSFRNTENvbnN0cnVjdGlvblNpdGU6Omluc2VydERv
Y3R5cGUoQXRvbWljSFRNTFRva2VuKiB0b2tlbikKIAogdm9pZCBIVE1MQ29uc3RydWN0aW9uU2l0
ZTo6aW5zZXJ0Q29tbWVudChBdG9taWNIVE1MVG9rZW4qIHRva2VuKQogewotICAgIEFTU0VSVCh0
b2tlbi0+dHlwZSgpID09IEhUTUxUb2tlblR5cGVzOjpDb21tZW50KTsKKyAgICBBU1NFUlQodG9r
ZW4tPnR5cGUoKSA9PSBIVE1MVG9rZW46OkNvbW1lbnQpOwogICAgIGF0dGFjaExhdGVyKGN1cnJl
bnROb2RlKCksIENvbW1lbnQ6OmNyZWF0ZShvd25lckRvY3VtZW50Rm9yQ3VycmVudE5vZGUoKSwg
dG9rZW4tPmNvbW1lbnQoKSkpOwogfQogCiB2b2lkIEhUTUxDb25zdHJ1Y3Rpb25TaXRlOjppbnNl
cnRDb21tZW50T25Eb2N1bWVudChBdG9taWNIVE1MVG9rZW4qIHRva2VuKQogewotICAgIEFTU0VS
VCh0b2tlbi0+dHlwZSgpID09IEhUTUxUb2tlblR5cGVzOjpDb21tZW50KTsKKyAgICBBU1NFUlQo
dG9rZW4tPnR5cGUoKSA9PSBIVE1MVG9rZW46OkNvbW1lbnQpOwogICAgIGF0dGFjaExhdGVyKG1f
YXR0YWNobWVudFJvb3QsIENvbW1lbnQ6OmNyZWF0ZShtX2RvY3VtZW50LCB0b2tlbi0+Y29tbWVu
dCgpKSk7CiB9CiAKIHZvaWQgSFRNTENvbnN0cnVjdGlvblNpdGU6Omluc2VydENvbW1lbnRPbkhU
TUxIdG1sRWxlbWVudChBdG9taWNIVE1MVG9rZW4qIHRva2VuKQogewotICAgIEFTU0VSVCh0b2tl
bi0+dHlwZSgpID09IEhUTUxUb2tlblR5cGVzOjpDb21tZW50KTsKKyAgICBBU1NFUlQodG9rZW4t
PnR5cGUoKSA9PSBIVE1MVG9rZW46OkNvbW1lbnQpOwogICAgIENvbnRhaW5lck5vZGUqIHBhcmVu
dCA9IG1fb3BlbkVsZW1lbnRzLnJvb3ROb2RlKCk7CiAgICAgYXR0YWNoTGF0ZXIocGFyZW50LCBD
b21tZW50OjpjcmVhdGUocGFyZW50LT5kb2N1bWVudCgpLCB0b2tlbi0+Y29tbWVudCgpKSk7CiB9
CkBAIC00MTksNyArNDIwLDcgQEAgdm9pZCBIVE1MQ29uc3RydWN0aW9uU2l0ZTo6aW5zZXJ0SFRN
TEVsZW1lbnQoQXRvbWljSFRNTFRva2VuKiB0b2tlbikKIAogdm9pZCBIVE1MQ29uc3RydWN0aW9u
U2l0ZTo6aW5zZXJ0U2VsZkNsb3NpbmdIVE1MRWxlbWVudChBdG9taWNIVE1MVG9rZW4qIHRva2Vu
KQogewotICAgIEFTU0VSVCh0b2tlbi0+dHlwZSgpID09IEhUTUxUb2tlblR5cGVzOjpTdGFydFRh
Zyk7CisgICAgQVNTRVJUKHRva2VuLT50eXBlKCkgPT0gSFRNTFRva2VuOjpTdGFydFRhZyk7CiAg
ICAgLy8gTm9ybWFsbHkgSFRNTEVsZW1lbnRTdGFjayBpcyByZXNwb25zaWJsZSBmb3IgY2FsbGlu
ZyBmaW5pc2hQYXJzaW5nQ2hpbGRyZW4sCiAgICAgLy8gYnV0IHNlbGYtY2xvc2luZyBlbGVtZW50
cyBhcmUgbmV2ZXIgaW4gdGhlIGVsZW1lbnQgc3RhY2sgc28gdGhlIHN0YWNrCiAgICAgLy8gZG9l
c24ndCBnZXQgYSBjaGFuY2UgdG8gdGVsbCB0aGVtIHRoYXQgd2UncmUgZG9uZSBwYXJzaW5nIHRo
ZWlyIGNoaWxkcmVuLgpAQCAtNDU1LDcgKzQ1Niw3IEBAIHZvaWQgSFRNTENvbnN0cnVjdGlvblNp
dGU6Omluc2VydFNjcmlwdEVsZW1lbnQoQXRvbWljSFRNTFRva2VuKiB0b2tlbikKIAogdm9pZCBI
VE1MQ29uc3RydWN0aW9uU2l0ZTo6aW5zZXJ0Rm9yZWlnbkVsZW1lbnQoQXRvbWljSFRNTFRva2Vu
KiB0b2tlbiwgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lc3BhY2VVUkkpCiB7Ci0gICAgQVNTRVJU
KHRva2VuLT50eXBlKCkgPT0gSFRNTFRva2VuVHlwZXM6OlN0YXJ0VGFnKTsKKyAgICBBU1NFUlQo
dG9rZW4tPnR5cGUoKSA9PSBIVE1MVG9rZW46OlN0YXJ0VGFnKTsKICAgICBub3RJbXBsZW1lbnRl
ZCgpOyAvLyBwYXJzZUVycm9yIHdoZW4geG1sbnMgb3IgeG1sbnM6eGxpbmsgYXJlIHdyb25nLgog
CiAgICAgUmVmUHRyPEVsZW1lbnQ+IGVsZW1lbnQgPSBjcmVhdGVFbGVtZW50KHRva2VuLCBuYW1l
c3BhY2VVUkkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTERv
Y3VtZW50UGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVu
dFBhcnNlci5jcHAKaW5kZXggMDk4NTQ4ZTYxMmNmYmE0Y2Y3NmExNmMwMzdmOTZmMTEzM2I4ZDY1
Yy4uNjQ4NTBjZDlhMTFjNTYzMjZlOGQ3NjAxMzhjZGY3YWM5ZTlmMzk3OSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFyc2VyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRG9jdW1lbnRQYXJzZXIuY3BwCkBAIC0yNiw2
ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiSFRNTERvY3VtZW50UGFy
c2VyLmgiCiAKKyNpbmNsdWRlICJBdG9taWNIVE1MVG9rZW4uaCIKICNpbmNsdWRlICJCYWNrZ3Jv
dW5kSFRNTFBhcnNlci5oIgogI2luY2x1ZGUgIkNvbXBhY3RIVE1MVG9rZW4uaCIKICNpbmNsdWRl
ICJDb250ZW50U2VjdXJpdHlQb2xpY3kuaCIKQEAgLTM0OCw3ICszNDksNyBAQCB2b2lkIEhUTUxE
b2N1bWVudFBhcnNlcjo6cHJvY2Vzc1BhcnNlZENodW5rRnJvbUJhY2tncm91bmRQYXJzZXIoUGFz
c093blB0cjxQYXJzZQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAotICAgICAgICBp
ZiAoaXQtPnR5cGUoKSA9PSBIVE1MVG9rZW5UeXBlczo6RW5kT2ZGaWxlKSB7CisgICAgICAgIGlm
IChpdC0+dHlwZSgpID09IEhUTUxUb2tlbjo6RW5kT2ZGaWxlKSB7CiAgICAgICAgICAgICBBU1NF
UlQoaXQgKyAxID09IHRva2Vucy0+ZW5kKCkpOyAvLyBUaGUgRU9GIGlzIGFzc3VtZWQgdG8gYmUg
dGhlIGxhc3QgdG9rZW4gb2YgdGhpcyBidW5jaC4KICAgICAgICAgICAgIHByZXBhcmVUb1N0b3BQ
YXJzaW5nKCk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTQ2Myw3ICs0NjQsNyBAQCB2b2lkIEhU
TUxEb2N1bWVudFBhcnNlcjo6Y29uc3RydWN0VHJlZUZyb21IVE1MVG9rZW4oSFRNTFRva2VuJiBy
YXdUb2tlbikKICAgICAvLyBGSVhNRTogU3RvcCBjbGVhcmluZyB0aGUgcmF3VG9rZW4gb25jZSB3
ZSBzdGFydCBydW5uaW5nIHRoZSBwYXJzZXIgb2ZmCiAgICAgLy8gdGhlIG1haW4gdGhyZWFkIG9y
IG9uY2Ugd2Ugc3RvcCBhbGxvd2luZyBzeW5jaHJvbm91cyBKYXZhU2NyaXB0CiAgICAgLy8gZXhl
Y3V0aW9uIGZyb20gcGFyc2VBdHRyaWJ1dGUuCi0gICAgaWYgKHJhd1Rva2VuLnR5cGUoKSAhPSBI
VE1MVG9rZW5UeXBlczo6Q2hhcmFjdGVyKQorICAgIGlmIChyYXdUb2tlbi50eXBlKCkgIT0gSFRN
TFRva2VuOjpDaGFyYWN0ZXIpCiAgICAgICAgIHJhd1Rva2VuLmNsZWFyKCk7CiAKICAgICBtX3Ry
ZWVCdWlsZGVyLT5jb25zdHJ1Y3RUcmVlKHRva2VuLmdldCgpKTsKQEAgLTQ3NSw3ICs0NzYsNyBA
QCB2b2lkIEhUTUxEb2N1bWVudFBhcnNlcjo6Y29uc3RydWN0VHJlZUZyb21IVE1MVG9rZW4oSFRN
TFRva2VuJiByYXdUb2tlbikKICAgICB0b2tlbi0+Y2xlYXJFeHRlcm5hbENoYXJhY3RlcnMoKTsK
IAogICAgIGlmICghcmF3VG9rZW4uaXNVbmluaXRpYWxpemVkKCkpIHsKLSAgICAgICAgQVNTRVJU
KHJhd1Rva2VuLnR5cGUoKSA9PSBIVE1MVG9rZW5UeXBlczo6Q2hhcmFjdGVyKTsKKyAgICAgICAg
QVNTRVJUKHJhd1Rva2VuLnR5cGUoKSA9PSBIVE1MVG9rZW46OkNoYXJhY3Rlcik7CiAgICAgICAg
IHJhd1Rva2VuLmNsZWFyKCk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFyc2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3Bh
cnNlci9IVE1MRG9jdW1lbnRQYXJzZXIuaAppbmRleCAwMjA3Y2M5MDc0YmE3NjkxZDM1ZTkwYWEx
OWFlMmQwYmIwZTIxOTNiLi43NDI4OWJiNmI3NTAxYzVhOTI2ZjI1OTIyMjI0ZWEyMjRlZWMyNTJm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRG9jdW1lbnRQYXJz
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRG9jdW1lbnRQYXJzZXIu
aApAQCAtMjgsNiArMjgsNyBAQAogCiAjaW5jbHVkZSAiQmFja2dyb3VuZEhUTUxJbnB1dFN0cmVh
bS5oIgogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlQ2xpZW50LmgiCisjaW5jbHVkZSAiQ29tcGFj
dEhUTUxUb2tlbi5oIgogI2luY2x1ZGUgIkZyYWdtZW50U2NyaXB0aW5nUGVybWlzc2lvbi5oIgog
I2luY2x1ZGUgIkhUTUxJbnB1dFN0cmVhbS5oIgogI2luY2x1ZGUgIkhUTUxQYXJzZXJPcHRpb25z
LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MTWV0YUNoYXJz
ZXRQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTE1ldGFDaGFyc2V0
UGFyc2VyLmNwcAppbmRleCA1ODZmZmE5NTI2ZDRjMzNlOTVlM2E2ZjYzZjdjY2Q1MjI3NmVjYmQ1
Li43MGNjZDU4MGMyNDA5ZTk3NjczYjQ0OWU3MTYzNTI1ZTNiYjgxMmZmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MTWV0YUNoYXJzZXRQYXJzZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxNZXRhQ2hhcnNldFBhcnNlci5jcHAKQEAg
LTE3Niw4ICsxNzYsOCBAQCBib29sIEhUTUxNZXRhQ2hhcnNldFBhcnNlcjo6Y2hlY2tGb3JNZXRh
Q2hhcnNldChjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoKQogICAgIG1faW5wdXQuYXBw
ZW5kKFNlZ21lbnRlZFN0cmluZyhtX2Fzc3VtZWRDb2RlYy0+ZGVjb2RlKGRhdGEsIGxlbmd0aCkp
KTsKIAogICAgIHdoaWxlIChtX3Rva2VuaXplci0+bmV4dFRva2VuKG1faW5wdXQsIG1fdG9rZW4p
KSB7Ci0gICAgICAgIGJvb2wgZW5kID0gbV90b2tlbi50eXBlKCkgPT0gSFRNTFRva2VuVHlwZXM6
OkVuZFRhZzsKLSAgICAgICAgaWYgKGVuZCB8fCBtX3Rva2VuLnR5cGUoKSA9PSBIVE1MVG9rZW5U
eXBlczo6U3RhcnRUYWcpIHsKKyAgICAgICAgYm9vbCBlbmQgPSBtX3Rva2VuLnR5cGUoKSA9PSBI
VE1MVG9rZW46OkVuZFRhZzsKKyAgICAgICAgaWYgKGVuZCB8fCBtX3Rva2VuLnR5cGUoKSA9PSBI
VE1MVG9rZW46OlN0YXJ0VGFnKSB7CiAgICAgICAgICAgICBBdG9taWNTdHJpbmcgdGFnTmFtZSht
X3Rva2VuLm5hbWUoKS5kYXRhKCksIG1fdG9rZW4ubmFtZSgpLnNpemUoKSk7CiAgICAgICAgICAg
ICBpZiAoIWVuZCkgewogICAgICAgICAgICAgICAgIG1fdG9rZW5pemVyLT51cGRhdGVTdGF0ZUZv
cih0YWdOYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQ
cmVsb2FkU2Nhbm5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUHJlbG9h
ZFNjYW5uZXIuY3BwCmluZGV4IDNkNzg4ODliZjFmNzk3ODY2NTI0ODE3MjU5MDk1OGFiZjBmZjlm
YzUuLjBjN2NhMzNlZmM5MTE5MGU5ZTg3ODJiZjUxYzI3MjExMjJiN2NmMjQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQcmVsb2FkU2Nhbm5lci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFByZWxvYWRTY2FubmVyLmNwcApAQCAtNDUs
MTIgKzQ1LDEyIEBAIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKIHN0YXRpYyBib29sIGlz
U3RhcnRUYWcoY29uc3QgSFRNTFRva2VuJiB0b2tlbikKIHsKLSAgICByZXR1cm4gdG9rZW4udHlw
ZSgpID09IEhUTUxUb2tlblR5cGVzOjpTdGFydFRhZzsKKyAgICByZXR1cm4gdG9rZW4udHlwZSgp
ID09IEhUTUxUb2tlbjo6U3RhcnRUYWc7CiB9CiAKIHN0YXRpYyBib29sIGlzU3RhcnRPckVuZFRh
Zyhjb25zdCBIVE1MVG9rZW4mIHRva2VuKQogewotICAgIHJldHVybiB0b2tlbi50eXBlKCkgPT0g
SFRNTFRva2VuVHlwZXM6OkVuZFRhZyB8fCBpc1N0YXJ0VGFnKHRva2VuKTsKKyAgICByZXR1cm4g
dG9rZW4udHlwZSgpID09IEhUTUxUb2tlbjo6RW5kVGFnIHx8IGlzU3RhcnRUYWcodG9rZW4pOwog
fQogCiBjbGFzcyBTdGFydFRhZ1NjYW5uZXIgewpAQCAtMjc5LDcgKzI3OSw3IEBAIHZvaWQgSFRN
TFByZWxvYWRTY2FubmVyOjpwcm9jZXNzVG9rZW4oY29uc3QgSFRNTFRva2VuJiB0b2tlbiwgVmVj
dG9yPE93blB0cjxQcmVsCiB7CiAgICAgLy8gPHN0eWxlPiBpcyB0aGUgb25seSBwbGFjZSB3ZSBz
ZWFyY2ggZm9yIHVybHMgaW4gbm9uLXN0YXJ0L2VuZC10YWcgdG9rZW5zLgogICAgIGlmIChtX2lu
U3R5bGUpIHsKLSAgICAgICAgaWYgKHRva2VuLnR5cGUoKSAhPSBIVE1MVG9rZW5UeXBlczo6Q2hh
cmFjdGVyKQorICAgICAgICBpZiAodG9rZW4udHlwZSgpICE9IEhUTUxUb2tlbjo6Q2hhcmFjdGVy
KQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICByZXR1cm4gbV9jc3NTY2FubmVyLnNjYW4o
dG9rZW4sIHJlcXVlc3RzKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L3BhcnNlci9IVE1MU291cmNlVHJhY2tlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNl
ci9IVE1MU291cmNlVHJhY2tlci5jcHAKaW5kZXggODk4ODVjM2UxY2UyZjE1ZTNiODRkZGNkNGE5
ZjExMWUzOGMzMjRkZi4uYmYxYThjNDY2MDliYzQyZjE2MDM2ZjhhOTQ4M2NhNDBiMzVmYzUxNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFNvdXJjZVRyYWNrZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxTb3VyY2VUcmFja2VyLmNw
cApAQCAtMzYsNyArMzYsNyBAQCBIVE1MU291cmNlVHJhY2tlcjo6SFRNTFNvdXJjZVRyYWNrZXIo
KQogCiB2b2lkIEhUTUxTb3VyY2VUcmFja2VyOjpzdGFydChTZWdtZW50ZWRTdHJpbmcmIGN1cnJl
bnRJbnB1dCwgSFRNTFRva2VuaXplciogdG9rZW5pemVyLCBIVE1MVG9rZW4mIHRva2VuKQogewot
ICAgIGlmICh0b2tlbi50eXBlKCkgPT0gSFRNTFRva2VuVHlwZXM6OlVuaW5pdGlhbGl6ZWQpIHsK
KyAgICBpZiAodG9rZW4udHlwZSgpID09IEhUTUxUb2tlbjo6VW5pbml0aWFsaXplZCkgewogICAg
ICAgICBtX3ByZXZpb3VzU291cmNlLmNsZWFyKCk7CiAgICAgICAgIGlmICh0b2tlbml6ZXItPm51
bWJlck9mQnVmZmVyZWRDaGFyYWN0ZXJzKCkpCiAgICAgICAgICAgICBtX3ByZXZpb3VzU291cmNl
ID0gdG9rZW5pemVyLT5idWZmZXJlZENoYXJhY3RlcnMoKTsKQEAgLTU3LDcgKzU3LDcgQEAgdm9p
ZCBIVE1MU291cmNlVHJhY2tlcjo6ZW5kKFNlZ21lbnRlZFN0cmluZyYgY3VycmVudElucHV0LCBI
VE1MVG9rZW5pemVyKiB0b2tlbmkKIAogU3RyaW5nIEhUTUxTb3VyY2VUcmFja2VyOjpzb3VyY2VG
b3JUb2tlbihjb25zdCBIVE1MVG9rZW4mIHRva2VuKQogewotICAgIGlmICh0b2tlbi50eXBlKCkg
PT0gSFRNTFRva2VuVHlwZXM6OkVuZE9mRmlsZSkKKyAgICBpZiAodG9rZW4udHlwZSgpID09IEhU
TUxUb2tlbjo6RW5kT2ZGaWxlKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7IC8vIEhpZGVzIHRo
ZSBudWxsIGNoYXJhY3RlciB3ZSB1c2UgdG8gbWFyayB0aGUgZW5kIG9mIGZpbGUuCiAKICAgICBp
ZiAoIW1fY2FjaGVkU291cmNlRm9yVG9rZW4uaXNFbXB0eSgpKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFN0YWNrSXRlbS5oIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9wYXJzZXIvSFRNTFN0YWNrSXRlbS5oCmluZGV4IDhhMTljZDM0MGI0OGQwZTc4MWY5ZjY4MzM3
ZmVmYTVkOWQwODFjZjAuLjFjMmViNDkzZjQwMjQzYjJiMWE1YzM1NjJlM2QwODA0MjE0MjhiMzAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxTdGFja0l0ZW0uaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MU3RhY2tJdGVtLmgKQEAgLTI2LDkg
KzI2LDkgQEAKICNpZm5kZWYgSFRNTFN0YWNrSXRlbV9oCiAjZGVmaW5lIEhUTUxTdGFja0l0ZW1f
aAogCisjaW5jbHVkZSAiQXRvbWljSFRNTFRva2VuLmgiCiAjaW5jbHVkZSAiRWxlbWVudC5oIgog
I2luY2x1ZGUgIkhUTUxOYW1lcy5oIgotI2luY2x1ZGUgIkhUTUxUb2tlbi5oIgogI2luY2x1ZGUg
Ik1hdGhNTE5hbWVzLmgiCiAjaW5jbHVkZSAiU1ZHTmFtZXMuaCIKIApAQCAtMjA4LDEyICsyMDgs
MTIgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIC8vIENyZWF0ZSBhIGZha2UgdG9rZW4gZm9yIGEg
ZG9jdW1lbnQgZnJhZ21lbnQgbm9kZS4gVGhpcyBsb29rcyB1Z2x5IGJ1dCByZXF1aXJlZCBmb3Ig
cGVyZm9ybWFuY2UKICAgICAgICAgICAgIC8vIGJlY2F1c2Ugd2Ugd2FudCB0byB1c2UgbV90b2tl
bi0+bmFtZSgpIGluIGxvY2FsTmFtZSgpLCBoYXNMb2NhbE5hbWUoKSBhbmQgaGFzVGFnTmFtZSgp
IHdpdGhvdXQKICAgICAgICAgICAgIC8vIGNoZWNraW5nIG1faXNEb2N1bWVudEZyYWdtZW50Tm9k
ZSBmbGFnLgotICAgICAgICAgICAgbV90b2tlbiA9IEF0b21pY0hUTUxUb2tlbjo6Y3JlYXRlKEhU
TUxUb2tlblR5cGVzOjpTdGFydFRhZywgbnVsbEF0b20pOworICAgICAgICAgICAgbV90b2tlbiA9
IEF0b21pY0hUTUxUb2tlbjo6Y3JlYXRlKEhUTUxUb2tlbjo6U3RhcnRUYWcsIG51bGxBdG9tKTsK
ICAgICAgICAgICAgIG1faXNEb2N1bWVudEZyYWdtZW50Tm9kZSA9IHRydWU7CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgY2FzZSBJdGVtRm9yQ29udGV4dEVsZW1lbnQ6CiAgICAgICAgICAg
ICAvLyBDcmVhdGUgYSBmYWtlIHRva2VuIGZvciBhIGNvbnRleHQgZWxlbWVudCBmb3IgdGhlIHNh
bWUgcmVhc29uIGFzIGFib3ZlLgotICAgICAgICAgICAgbV90b2tlbiA9IEF0b21pY0hUTUxUb2tl
bjo6Y3JlYXRlKEhUTUxUb2tlblR5cGVzOjpTdGFydFRhZywgbV9ub2RlLT5sb2NhbE5hbWUoKSk7
CisgICAgICAgICAgICBtX3Rva2VuID0gQXRvbWljSFRNTFRva2VuOjpjcmVhdGUoSFRNTFRva2Vu
OjpTdGFydFRhZywgbV9ub2RlLT5sb2NhbE5hbWUoKSk7CiAgICAgICAgICAgICBtX25hbWVzcGFj
ZVVSSSA9IG1fbm9kZS0+bmFtZXNwYWNlVVJJKCk7CiAgICAgICAgICAgICBtX2lzRG9jdW1lbnRG
cmFnbWVudE5vZGUgPSBmYWxzZTsKICAgICAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRva2VuLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L3BhcnNlci9IVE1MVG9rZW4uaAppbmRleCBiZmJkZTIwNDgzNDI2MTU3N2ZlN2RjZGViM2MwMDAw
NWQwNzY2NGU3Li5jZTUxNGExYTgzMWJhZGViNTEzYTA4ZjYzYTBkMzRkNzI1ZmZiMDJkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVG9rZW4uaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVG9rZW4uaApAQCAtMjcsOCArMjcsNyBAQAogI2Rl
ZmluZSBIVE1MVG9rZW5faAogCiAjaW5jbHVkZSAiQXR0cmlidXRlLmgiCi0jaW5jbHVkZSAiQ29t
cGFjdEhUTUxUb2tlbi5oIgotI2luY2x1ZGUgIkhUTUxUb2tlblR5cGVzLmgiCisjaW5jbHVkZSAi
SFRNTFRva2VuLmgiCiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYv
UmVmUHRyLmg+CiAKQEAgLTY1LDcgKzY0LDE1IEBAIGNsYXNzIEhUTUxUb2tlbiB7CiAgICAgV1RG
X01BS0VfTk9OQ09QWUFCTEUoSFRNTFRva2VuKTsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKIHB1YmxpYzoKLSAgICB0eXBlZGVmIEhUTUxUb2tlblR5cGVzIFR5cGU7CisgICAgZW51bSBU
eXBlIHsKKyAgICAgICAgVW5pbml0aWFsaXplZCwKKyAgICAgICAgRE9DVFlQRSwKKyAgICAgICAg
U3RhcnRUYWcsCisgICAgICAgIEVuZFRhZywKKyAgICAgICAgQ29tbWVudCwKKyAgICAgICAgQ2hh
cmFjdGVyLAorICAgICAgICBFbmRPZkZpbGUsCisgICAgfTsKIAogICAgIGNsYXNzIEF0dHJpYnV0
ZSB7CiAgICAgcHVibGljOgpAQCAtODgsNyArOTUsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGNs
ZWFyKCkKICAgICB7Ci0gICAgICAgIG1fdHlwZSA9IFR5cGU6OlVuaW5pdGlhbGl6ZWQ7CisgICAg
ICAgIG1fdHlwZSA9IFVuaW5pdGlhbGl6ZWQ7CiAgICAgICAgIG1fcmFuZ2UubV9zdGFydCA9IDA7
CiAgICAgICAgIG1fcmFuZ2UubV9lbmQgPSAwOwogICAgICAgICBtX2Jhc2VPZmZzZXQgPSAwOwpA
QCAtOTYsMTMgKzEwMywxMyBAQCBwdWJsaWM6CiAgICAgICAgIG1fb3JBbGxEYXRhID0gMDsKICAg
ICB9CiAKLSAgICBib29sIGlzVW5pbml0aWFsaXplZCgpIHsgcmV0dXJuIG1fdHlwZSA9PSBIVE1M
VG9rZW5UeXBlczo6VW5pbml0aWFsaXplZDsgfQotICAgIEhUTUxUb2tlblR5cGVzOjpUeXBlIHR5
cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KKyAgICBib29sIGlzVW5pbml0aWFsaXplZCgp
IHsgcmV0dXJuIG1fdHlwZSA9PSBVbmluaXRpYWxpemVkOyB9CisgICAgVHlwZSB0eXBlKCkgY29u
c3QgeyByZXR1cm4gbV90eXBlOyB9CiAKICAgICB2b2lkIG1ha2VFbmRPZkZpbGUoKQogICAgIHsK
LSAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBIVE1MVG9rZW5UeXBlczo6VW5pbml0aWFsaXplZCk7
Ci0gICAgICAgIG1fdHlwZSA9IEhUTUxUb2tlblR5cGVzOjpFbmRPZkZpbGU7CisgICAgICAgIEFT
U0VSVChtX3R5cGUgPT0gVW5pbml0aWFsaXplZCk7CisgICAgICAgIG1fdHlwZSA9IEVuZE9mRmls
ZTsKICAgICB9CiAKICAgICAvKiBSYW5nZSBhbmQgb2Zmc2V0IG1ldGhvZHMgZXhwb3NlZCBmb3Ig
SFRNTFNvdXJjZVRyYWNrZXIgYW5kIEhUTUxWaWV3U291cmNlUGFyc2VyICovCkBAIC0xMjEsNyAr
MTI4LDcgQEAgcHVibGljOgogCiAgICAgY29uc3QgRGF0YVZlY3RvciYgZGF0YSgpIGNvbnN0CiAg
ICAgewotICAgICAgICBBU1NFUlQobV90eXBlID09IEhUTUxUb2tlblR5cGVzOjpDaGFyYWN0ZXIg
fHwgbV90eXBlID09IEhUTUxUb2tlblR5cGVzOjpDb21tZW50IHx8IG1fdHlwZSA9PSBIVE1MVG9r
ZW5UeXBlczo6U3RhcnRUYWcgfHwgbV90eXBlID09IEhUTUxUb2tlblR5cGVzOjpFbmRUYWcpOwor
ICAgICAgICBBU1NFUlQobV90eXBlID09IENoYXJhY3RlciB8fCBtX3R5cGUgPT0gQ29tbWVudCB8
fCBtX3R5cGUgPT0gU3RhcnRUYWcgfHwgbV90eXBlID09IEVuZFRhZyk7CiAgICAgICAgIHJldHVy
biBtX2RhdGE7CiAgICAgfQogCkBAIC0xMzIsMTMgKzEzOSwxMyBAQCBwdWJsaWM6CiAKICAgICBj
b25zdCBEYXRhVmVjdG9yJiBuYW1lKCkgY29uc3QKICAgICB7Ci0gICAgICAgIEFTU0VSVChtX3R5
cGUgPT0gSFRNTFRva2VuVHlwZXM6OlN0YXJ0VGFnIHx8IG1fdHlwZSA9PSBIVE1MVG9rZW5UeXBl
czo6RW5kVGFnIHx8IG1fdHlwZSA9PSBIVE1MVG9rZW5UeXBlczo6RE9DVFlQRSk7CisgICAgICAg
IEFTU0VSVChtX3R5cGUgPT0gU3RhcnRUYWcgfHwgbV90eXBlID09IEVuZFRhZyB8fCBtX3R5cGUg
PT0gRE9DVFlQRSk7CiAgICAgICAgIHJldHVybiBtX2RhdGE7CiAgICAgfQogCiAgICAgdm9pZCBh
cHBlbmRUb05hbWUoVUNoYXIgY2hhcmFjdGVyKQogICAgIHsKLSAgICAgICAgQVNTRVJUKG1fdHlw
ZSA9PSBIVE1MVG9rZW5UeXBlczo6U3RhcnRUYWcgfHwgbV90eXBlID09IEhUTUxUb2tlblR5cGVz
OjpFbmRUYWcgfHwgbV90eXBlID09IEhUTUxUb2tlblR5cGVzOjpET0NUWVBFKTsKKyAgICAgICAg
QVNTRVJUKG1fdHlwZSA9PSBTdGFydFRhZyB8fCBtX3R5cGUgPT0gRW5kVGFnIHx8IG1fdHlwZSA9
PSBET0NUWVBFKTsKICAgICAgICAgQVNTRVJUKGNoYXJhY3Rlcik7CiAgICAgICAgIG1fZGF0YS5h
cHBlbmQoY2hhcmFjdGVyKTsKICAgICAgICAgbV9vckFsbERhdGEgfD0gY2hhcmFjdGVyOwpAQCAt
MTU4LDIwICsxNjUsMjAgQEAgcHVibGljOgogCiAgICAgYm9vbCBmb3JjZVF1aXJrcygpIGNvbnN0
CiAgICAgewotICAgICAgICBBU1NFUlQobV90eXBlID09IEhUTUxUb2tlblR5cGVzOjpET0NUWVBF
KTsKKyAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBET0NUWVBFKTsKICAgICAgICAgcmV0dXJuIG1f
ZG9jdHlwZURhdGEtPm1fZm9yY2VRdWlya3M7CiAgICAgfQogCiAgICAgdm9pZCBzZXRGb3JjZVF1
aXJrcygpCiAgICAgewotICAgICAgICBBU1NFUlQobV90eXBlID09IEhUTUxUb2tlblR5cGVzOjpE
T0NUWVBFKTsKKyAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBET0NUWVBFKTsKICAgICAgICAgbV9k
b2N0eXBlRGF0YS0+bV9mb3JjZVF1aXJrcyA9IHRydWU7CiAgICAgfQogCiAgICAgdm9pZCBiZWdp
bkRPQ1RZUEUoKQogICAgIHsKLSAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBIVE1MVG9rZW5UeXBl
czo6VW5pbml0aWFsaXplZCk7Ci0gICAgICAgIG1fdHlwZSA9IEhUTUxUb2tlblR5cGVzOjpET0NU
WVBFOworICAgICAgICBBU1NFUlQobV90eXBlID09IFVuaW5pdGlhbGl6ZWQpOworICAgICAgICBt
X3R5cGUgPSBET0NUWVBFOwogICAgICAgICBtX2RvY3R5cGVEYXRhID0gYWRvcHRQdHIobmV3IERv
Y3R5cGVEYXRhKTsKICAgICB9CiAKQEAgLTE4NiwyNyArMTkzLDI3IEBAIHB1YmxpYzoKICAgICAv
LyBGSVhNRTogRGlzdGluZ3Vpc2ggYmV0d2VlbiBhIG1pc3NpbmcgcHVibGljIGlkZW50aWZlciBh
bmQgYW4gZW1wdHkgb25lLgogICAgIGNvbnN0IFdURjo6VmVjdG9yPFVDaGFyPiYgcHVibGljSWRl
bnRpZmllcigpIGNvbnN0CiAgICAgewotICAgICAgICBBU1NFUlQobV90eXBlID09IEhUTUxUb2tl
blR5cGVzOjpET0NUWVBFKTsKKyAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBET0NUWVBFKTsKICAg
ICAgICAgcmV0dXJuIG1fZG9jdHlwZURhdGEtPm1fcHVibGljSWRlbnRpZmllcjsKICAgICB9CiAK
ICAgICAvLyBGSVhNRTogRGlzdGluZ3Vpc2ggYmV0d2VlbiBhIG1pc3Npbmcgc3lzdGVtIGlkZW50
aWZlciBhbmQgYW4gZW1wdHkgb25lLgogICAgIGNvbnN0IFdURjo6VmVjdG9yPFVDaGFyPiYgc3lz
dGVtSWRlbnRpZmllcigpIGNvbnN0CiAgICAgewotICAgICAgICBBU1NFUlQobV90eXBlID09IEhU
TUxUb2tlblR5cGVzOjpET0NUWVBFKTsKKyAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBET0NUWVBF
KTsKICAgICAgICAgcmV0dXJuIG1fZG9jdHlwZURhdGEtPm1fc3lzdGVtSWRlbnRpZmllcjsKICAg
ICB9CiAKICAgICB2b2lkIHNldFB1YmxpY0lkZW50aWZpZXJUb0VtcHR5U3RyaW5nKCkKICAgICB7
Ci0gICAgICAgIEFTU0VSVChtX3R5cGUgPT0gSFRNTFRva2VuVHlwZXM6OkRPQ1RZUEUpOworICAg
ICAgICBBU1NFUlQobV90eXBlID09IERPQ1RZUEUpOwogICAgICAgICBtX2RvY3R5cGVEYXRhLT5t
X2hhc1B1YmxpY0lkZW50aWZpZXIgPSB0cnVlOwogICAgICAgICBtX2RvY3R5cGVEYXRhLT5tX3B1
YmxpY0lkZW50aWZpZXIuY2xlYXIoKTsKICAgICB9CiAKICAgICB2b2lkIHNldFN5c3RlbUlkZW50
aWZpZXJUb0VtcHR5U3RyaW5nKCkKICAgICB7Ci0gICAgICAgIEFTU0VSVChtX3R5cGUgPT0gSFRN
TFRva2VuVHlwZXM6OkRPQ1RZUEUpOworICAgICAgICBBU1NFUlQobV90eXBlID09IERPQ1RZUEUp
OwogICAgICAgICBtX2RvY3R5cGVEYXRhLT5tX2hhc1N5c3RlbUlkZW50aWZpZXIgPSB0cnVlOwog
ICAgICAgICBtX2RvY3R5cGVEYXRhLT5tX3N5c3RlbUlkZW50aWZpZXIuY2xlYXIoKTsKICAgICB9
CkBAIC0yMTQsNyArMjIxLDcgQEAgcHVibGljOgogICAgIHZvaWQgYXBwZW5kVG9QdWJsaWNJZGVu
dGlmaWVyKFVDaGFyIGNoYXJhY3RlcikKICAgICB7CiAgICAgICAgIEFTU0VSVChjaGFyYWN0ZXIp
OwotICAgICAgICBBU1NFUlQobV90eXBlID09IEhUTUxUb2tlblR5cGVzOjpET0NUWVBFKTsKKyAg
ICAgICAgQVNTRVJUKG1fdHlwZSA9PSBET0NUWVBFKTsKICAgICAgICAgQVNTRVJUKG1fZG9jdHlw
ZURhdGEtPm1faGFzUHVibGljSWRlbnRpZmllcik7CiAgICAgICAgIG1fZG9jdHlwZURhdGEtPm1f
cHVibGljSWRlbnRpZmllci5hcHBlbmQoY2hhcmFjdGVyKTsKICAgICB9CkBAIC0yMjIsNyArMjI5
LDcgQEAgcHVibGljOgogICAgIHZvaWQgYXBwZW5kVG9TeXN0ZW1JZGVudGlmaWVyKFVDaGFyIGNo
YXJhY3RlcikKICAgICB7CiAgICAgICAgIEFTU0VSVChjaGFyYWN0ZXIpOwotICAgICAgICBBU1NF
UlQobV90eXBlID09IEhUTUxUb2tlblR5cGVzOjpET0NUWVBFKTsKKyAgICAgICAgQVNTRVJUKG1f
dHlwZSA9PSBET0NUWVBFKTsKICAgICAgICAgQVNTRVJUKG1fZG9jdHlwZURhdGEtPm1faGFzU3lz
dGVtSWRlbnRpZmllcik7CiAgICAgICAgIG1fZG9jdHlwZURhdGEtPm1fc3lzdGVtSWRlbnRpZmll
ci5hcHBlbmQoY2hhcmFjdGVyKTsKICAgICB9CkBAIC0yMzYsMjEgKzI0MywyMSBAQCBwdWJsaWM6
CiAKICAgICBib29sIHNlbGZDbG9zaW5nKCkgY29uc3QKICAgICB7Ci0gICAgICAgIEFTU0VSVCht
X3R5cGUgPT0gSFRNTFRva2VuVHlwZXM6OlN0YXJ0VGFnIHx8IG1fdHlwZSA9PSBIVE1MVG9rZW5U
eXBlczo6RW5kVGFnKTsKKyAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBTdGFydFRhZyB8fCBtX3R5
cGUgPT0gRW5kVGFnKTsKICAgICAgICAgcmV0dXJuIG1fc2VsZkNsb3Npbmc7CiAgICAgfQogCiAg
ICAgdm9pZCBzZXRTZWxmQ2xvc2luZygpCiAgICAgewotICAgICAgICBBU1NFUlQobV90eXBlID09
IEhUTUxUb2tlblR5cGVzOjpTdGFydFRhZyB8fCBtX3R5cGUgPT0gSFRNTFRva2VuVHlwZXM6OkVu
ZFRhZyk7CisgICAgICAgIEFTU0VSVChtX3R5cGUgPT0gU3RhcnRUYWcgfHwgbV90eXBlID09IEVu
ZFRhZyk7CiAgICAgICAgIG1fc2VsZkNsb3NpbmcgPSB0cnVlOwogICAgIH0KIAogICAgIHZvaWQg
YmVnaW5TdGFydFRhZyhVQ2hhciBjaGFyYWN0ZXIpCiAgICAgewogICAgICAgICBBU1NFUlQoY2hh
cmFjdGVyKTsKLSAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBIVE1MVG9rZW5UeXBlczo6VW5pbml0
aWFsaXplZCk7Ci0gICAgICAgIG1fdHlwZSA9IEhUTUxUb2tlblR5cGVzOjpTdGFydFRhZzsKKyAg
ICAgICAgQVNTRVJUKG1fdHlwZSA9PSBVbmluaXRpYWxpemVkKTsKKyAgICAgICAgbV90eXBlID0g
U3RhcnRUYWc7CiAgICAgICAgIG1fc2VsZkNsb3NpbmcgPSBmYWxzZTsKICAgICAgICAgbV9jdXJy
ZW50QXR0cmlidXRlID0gMDsKICAgICAgICAgbV9hdHRyaWJ1dGVzLmNsZWFyKCk7CkBAIC0yNjEs
OCArMjY4LDggQEAgcHVibGljOgogCiAgICAgdm9pZCBiZWdpbkVuZFRhZyhMQ2hhciBjaGFyYWN0
ZXIpCiAgICAgewotICAgICAgICBBU1NFUlQobV90eXBlID09IEhUTUxUb2tlblR5cGVzOjpVbmlu
aXRpYWxpemVkKTsKLSAgICAgICAgbV90eXBlID0gSFRNTFRva2VuVHlwZXM6OkVuZFRhZzsKKyAg
ICAgICAgQVNTRVJUKG1fdHlwZSA9PSBVbmluaXRpYWxpemVkKTsKKyAgICAgICAgbV90eXBlID0g
RW5kVGFnOwogICAgICAgICBtX3NlbGZDbG9zaW5nID0gZmFsc2U7CiAgICAgICAgIG1fY3VycmVu
dEF0dHJpYnV0ZSA9IDA7CiAgICAgICAgIG1fYXR0cmlidXRlcy5jbGVhcigpOwpAQCAtMjcyLDgg
KzI3OSw4IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgYmVnaW5FbmRUYWcoY29uc3QgVmVjdG9yPExD
aGFyLCAzMj4mIGNoYXJhY3RlcnMpCiAgICAgewotICAgICAgICBBU1NFUlQobV90eXBlID09IEhU
TUxUb2tlblR5cGVzOjpVbmluaXRpYWxpemVkKTsKLSAgICAgICAgbV90eXBlID0gSFRNTFRva2Vu
VHlwZXM6OkVuZFRhZzsKKyAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBVbmluaXRpYWxpemVkKTsK
KyAgICAgICAgbV90eXBlID0gRW5kVGFnOwogICAgICAgICBtX3NlbGZDbG9zaW5nID0gZmFsc2U7
CiAgICAgICAgIG1fY3VycmVudEF0dHJpYnV0ZSA9IDA7CiAgICAgICAgIG1fYXR0cmlidXRlcy5j
bGVhcigpOwpAQCAtMjgzLDcgKzI5MCw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgYWRkTmV3QXR0
cmlidXRlKCkKICAgICB7Ci0gICAgICAgIEFTU0VSVChtX3R5cGUgPT0gSFRNTFRva2VuVHlwZXM6
OlN0YXJ0VGFnIHx8IG1fdHlwZSA9PSBIVE1MVG9rZW5UeXBlczo6RW5kVGFnKTsKKyAgICAgICAg
QVNTRVJUKG1fdHlwZSA9PSBTdGFydFRhZyB8fCBtX3R5cGUgPT0gRW5kVGFnKTsKICAgICAgICAg
bV9hdHRyaWJ1dGVzLmdyb3cobV9hdHRyaWJ1dGVzLnNpemUoKSArIDEpOwogICAgICAgICBtX2N1
cnJlbnRBdHRyaWJ1dGUgPSAmbV9hdHRyaWJ1dGVzLmxhc3QoKTsKICNpZm5kZWYgTkRFQlVHCkBA
IC0zMjMsNyArMzMwLDcgQEAgcHVibGljOgogICAgIHZvaWQgYXBwZW5kVG9BdHRyaWJ1dGVOYW1l
KFVDaGFyIGNoYXJhY3RlcikKICAgICB7CiAgICAgICAgIEFTU0VSVChjaGFyYWN0ZXIpOwotICAg
ICAgICBBU1NFUlQobV90eXBlID09IEhUTUxUb2tlblR5cGVzOjpTdGFydFRhZyB8fCBtX3R5cGUg
PT0gSFRNTFRva2VuVHlwZXM6OkVuZFRhZyk7CisgICAgICAgIEFTU0VSVChtX3R5cGUgPT0gU3Rh
cnRUYWcgfHwgbV90eXBlID09IEVuZFRhZyk7CiAgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQg
YmUgYWJsZSB0byBhZGQgdGhlIGZvbGxvd2luZyBBU1NFUlQgb25jZSB3ZSBmaXgKICAgICAgICAg
Ly8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYyOTcxCiAgICAgICAg
IC8vICAgQVNTRVJUKG1fY3VycmVudEF0dHJpYnV0ZS0+bV9uYW1lUmFuZ2UubV9zdGFydCk7CkBA
IC0zMzMsNyArMzQwLDcgQEAgcHVibGljOgogICAgIHZvaWQgYXBwZW5kVG9BdHRyaWJ1dGVWYWx1
ZShVQ2hhciBjaGFyYWN0ZXIpCiAgICAgewogICAgICAgICBBU1NFUlQoY2hhcmFjdGVyKTsKLSAg
ICAgICAgQVNTRVJUKG1fdHlwZSA9PSBIVE1MVG9rZW5UeXBlczo6U3RhcnRUYWcgfHwgbV90eXBl
ID09IEhUTUxUb2tlblR5cGVzOjpFbmRUYWcpOworICAgICAgICBBU1NFUlQobV90eXBlID09IFN0
YXJ0VGFnIHx8IG1fdHlwZSA9PSBFbmRUYWcpOwogICAgICAgICBBU1NFUlQobV9jdXJyZW50QXR0
cmlidXRlLT5tX3ZhbHVlUmFuZ2UubV9zdGFydCk7CiAgICAgICAgIG1fY3VycmVudEF0dHJpYnV0
ZS0+bV92YWx1ZS5hcHBlbmQoY2hhcmFjdGVyKTsKICAgICB9CkBAIC0zNDEsMjAgKzM0OCwyMCBA
QCBwdWJsaWM6CiAgICAgdm9pZCBhcHBlbmRUb0F0dHJpYnV0ZVZhbHVlKHNpemVfdCBpLCBjb25z
dCBTdHJpbmcmIHZhbHVlKQogICAgIHsKICAgICAgICAgQVNTRVJUKCF2YWx1ZS5pc0VtcHR5KCkp
OwotICAgICAgICBBU1NFUlQobV90eXBlID09IEhUTUxUb2tlblR5cGVzOjpTdGFydFRhZyB8fCBt
X3R5cGUgPT0gSFRNTFRva2VuVHlwZXM6OkVuZFRhZyk7CisgICAgICAgIEFTU0VSVChtX3R5cGUg
PT0gU3RhcnRUYWcgfHwgbV90eXBlID09IEVuZFRhZyk7CiAgICAgICAgIG1fYXR0cmlidXRlc1tp
XS5tX3ZhbHVlLmFwcGVuZCh2YWx1ZS5jaGFyYWN0ZXJzKCksIHZhbHVlLmxlbmd0aCgpKTsKICAg
ICB9CiAKICAgICBjb25zdCBBdHRyaWJ1dGVMaXN0JiBhdHRyaWJ1dGVzKCkgY29uc3QKICAgICB7
Ci0gICAgICAgIEFTU0VSVChtX3R5cGUgPT0gSFRNTFRva2VuVHlwZXM6OlN0YXJ0VGFnIHx8IG1f
dHlwZSA9PSBIVE1MVG9rZW5UeXBlczo6RW5kVGFnKTsKKyAgICAgICAgQVNTRVJUKG1fdHlwZSA9
PSBTdGFydFRhZyB8fCBtX3R5cGUgPT0gRW5kVGFnKTsKICAgICAgICAgcmV0dXJuIG1fYXR0cmli
dXRlczsKICAgICB9CiAKICAgICAvLyBVc2VkIGJ5IHRoZSBYU1NBdWRpdG9yIHRvIG51a2UgWFNT
LWxhZGVuIGF0dHJpYnV0ZXMuCiAgICAgdm9pZCBlcmFzZVZhbHVlT2ZBdHRyaWJ1dGUoc2l6ZV90
IGkpCiAgICAgewotICAgICAgICBBU1NFUlQobV90eXBlID09IEhUTUxUb2tlblR5cGVzOjpTdGFy
dFRhZyB8fCBtX3R5cGUgPT0gSFRNTFRva2VuVHlwZXM6OkVuZFRhZyk7CisgICAgICAgIEFTU0VS
VChtX3R5cGUgPT0gU3RhcnRUYWcgfHwgbV90eXBlID09IEVuZFRhZyk7CiAgICAgICAgIG1fYXR0
cmlidXRlc1tpXS5tX3ZhbHVlLmNsZWFyKCk7CiAgICAgfQogCkBAIC0zNjQsMzIgKzM3MSwzMiBA
QCBwdWJsaWM6CiAgICAgLy8gb3RoZXIgdHlwZXMgb2YgdG9rZW5zIGJlY2F1c2Ugd2Ugd2FudCB0
byBzYXZlIGEgcGVyLWNoYXJhY3RlciBicmFuY2guCiAgICAgdm9pZCBlbnN1cmVJc0NoYXJhY3Rl
clRva2VuKCkKICAgICB7Ci0gICAgICAgIEFTU0VSVChtX3R5cGUgPT0gSFRNTFRva2VuVHlwZXM6
OlVuaW5pdGlhbGl6ZWQgfHwgbV90eXBlID09IEhUTUxUb2tlblR5cGVzOjpDaGFyYWN0ZXIpOwot
ICAgICAgICBtX3R5cGUgPSBIVE1MVG9rZW5UeXBlczo6Q2hhcmFjdGVyOworICAgICAgICBBU1NF
UlQobV90eXBlID09IFVuaW5pdGlhbGl6ZWQgfHwgbV90eXBlID09IENoYXJhY3Rlcik7CisgICAg
ICAgIG1fdHlwZSA9IENoYXJhY3RlcjsKICAgICB9CiAKICAgICBjb25zdCBEYXRhVmVjdG9yJiBj
aGFyYWN0ZXJzKCkgY29uc3QKICAgICB7Ci0gICAgICAgIEFTU0VSVChtX3R5cGUgPT0gSFRNTFRv
a2VuVHlwZXM6OkNoYXJhY3Rlcik7CisgICAgICAgIEFTU0VSVChtX3R5cGUgPT0gQ2hhcmFjdGVy
KTsKICAgICAgICAgcmV0dXJuIG1fZGF0YTsKICAgICB9CiAKICAgICB2b2lkIGFwcGVuZFRvQ2hh
cmFjdGVyKGNoYXIgY2hhcmFjdGVyKQogICAgIHsKLSAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBI
VE1MVG9rZW5UeXBlczo6Q2hhcmFjdGVyKTsKKyAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBDaGFy
YWN0ZXIpOwogICAgICAgICBtX2RhdGEuYXBwZW5kKGNoYXJhY3Rlcik7CiAgICAgfQogCiAgICAg
dm9pZCBhcHBlbmRUb0NoYXJhY3RlcihVQ2hhciBjaGFyYWN0ZXIpCiAgICAgewotICAgICAgICBB
U1NFUlQobV90eXBlID09IEhUTUxUb2tlblR5cGVzOjpDaGFyYWN0ZXIpOworICAgICAgICBBU1NF
UlQobV90eXBlID09IENoYXJhY3Rlcik7CiAgICAgICAgIG1fZGF0YS5hcHBlbmQoY2hhcmFjdGVy
KTsKICAgICAgICAgbV9vckFsbERhdGEgfD0gY2hhcmFjdGVyOwogICAgIH0KIAogICAgIHZvaWQg
YXBwZW5kVG9DaGFyYWN0ZXIoY29uc3QgVmVjdG9yPExDaGFyLCAzMj4mIGNoYXJhY3RlcnMpCiAg
ICAgewotICAgICAgICBBU1NFUlQobV90eXBlID09IEhUTUxUb2tlblR5cGVzOjpDaGFyYWN0ZXIp
OworICAgICAgICBBU1NFUlQobV90eXBlID09IENoYXJhY3Rlcik7CiAgICAgICAgIG1fZGF0YS5h
cHBlbmRWZWN0b3IoY2hhcmFjdGVycyk7CiAgICAgfQogCkBAIC0zOTcsMzMgKzQwNCwzMyBAQCBw
dWJsaWM6CiAKICAgICBjb25zdCBEYXRhVmVjdG9yJiBjb21tZW50KCkgY29uc3QKICAgICB7Ci0g
ICAgICAgIEFTU0VSVChtX3R5cGUgPT0gSFRNTFRva2VuVHlwZXM6OkNvbW1lbnQpOworICAgICAg
ICBBU1NFUlQobV90eXBlID09IENvbW1lbnQpOwogICAgICAgICByZXR1cm4gbV9kYXRhOwogICAg
IH0KIAogICAgIHZvaWQgYmVnaW5Db21tZW50KCkKICAgICB7Ci0gICAgICAgIEFTU0VSVChtX3R5
cGUgPT0gSFRNTFRva2VuVHlwZXM6OlVuaW5pdGlhbGl6ZWQpOwotICAgICAgICBtX3R5cGUgPSBI
VE1MVG9rZW5UeXBlczo6Q29tbWVudDsKKyAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBVbmluaXRp
YWxpemVkKTsKKyAgICAgICAgbV90eXBlID0gQ29tbWVudDsKICAgICB9CiAKICAgICB2b2lkIGFw
cGVuZFRvQ29tbWVudChVQ2hhciBjaGFyYWN0ZXIpCiAgICAgewogICAgICAgICBBU1NFUlQoY2hh
cmFjdGVyKTsKLSAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBIVE1MVG9rZW5UeXBlczo6Q29tbWVu
dCk7CisgICAgICAgIEFTU0VSVChtX3R5cGUgPT0gQ29tbWVudCk7CiAgICAgICAgIG1fZGF0YS5h
cHBlbmQoY2hhcmFjdGVyKTsKICAgICAgICAgbV9vckFsbERhdGEgfD0gY2hhcmFjdGVyOwogICAg
IH0KIAogICAgIHZvaWQgZXJhc2VDaGFyYWN0ZXJzKCkKICAgICB7Ci0gICAgICAgIEFTU0VSVCht
X3R5cGUgPT0gSFRNTFRva2VuVHlwZXM6OkNoYXJhY3Rlcik7CisgICAgICAgIEFTU0VSVChtX3R5
cGUgPT0gQ2hhcmFjdGVyKTsKICAgICAgICAgbV9kYXRhLmNsZWFyKCk7CiAgICAgICAgIG1fb3JB
bGxEYXRhID0gMDsKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgSFRNTFRva2VuVHlwZXM6OlR5cGUg
bV90eXBlOworICAgIFR5cGUgbV90eXBlOwogICAgIEF0dHJpYnV0ZTo6UmFuZ2UgbV9yYW5nZTsg
Ly8gQWx3YXlzIHN0YXJ0cyBhdCB6ZXJvLgogICAgIGludCBtX2Jhc2VPZmZzZXQ7CiAgICAgRGF0
YVZlY3RvciBtX2RhdGE7CkBAIC00NDAsMjgxICs0NDcsNiBAQCBwcml2YXRlOgogICAgIE93blB0
cjxEb2N0eXBlRGF0YT4gbV9kb2N0eXBlRGF0YTsKIH07CiAKLWNsYXNzIEF0b21pY0hUTUxUb2tl
biA6IHB1YmxpYyBSZWZDb3VudGVkPEF0b21pY0hUTUxUb2tlbj4gewotICAgIFdURl9NQUtFX05P
TkNPUFlBQkxFKEF0b21pY0hUTUxUb2tlbik7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQ
dHI8QXRvbWljSFRNTFRva2VuPiBjcmVhdGUoSFRNTFRva2VuJiB0b2tlbikKLSAgICB7Ci0gICAg
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgQXRvbWljSFRNTFRva2VuKHRva2VuKSk7Ci0gICAgfQot
Ci0jaWYgRU5BQkxFKFRIUkVBREVEX0hUTUxfUEFSU0VSKQotCi0gICAgc3RhdGljIFBhc3NSZWZQ
dHI8QXRvbWljSFRNTFRva2VuPiBjcmVhdGUoY29uc3QgQ29tcGFjdEhUTUxUb2tlbiYgdG9rZW4p
Ci0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEF0b21pY0hUTUxUb2tlbih0b2tl
bikpOwotICAgIH0KLQotI2VuZGlmCi0KLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxBdG9taWNIVE1M
VG9rZW4+IGNyZWF0ZShIVE1MVG9rZW5UeXBlczo6VHlwZSB0eXBlLCBjb25zdCBBdG9taWNTdHJp
bmcmIG5hbWUsIGNvbnN0IFZlY3RvcjxBdHRyaWJ1dGU+JiBhdHRyaWJ1dGVzID0gVmVjdG9yPEF0
dHJpYnV0ZT4oKSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQXRvbWljSFRN
TFRva2VuKHR5cGUsIG5hbWUsIGF0dHJpYnV0ZXMpKTsKLSAgICB9Ci0KLSAgICBib29sIGZvcmNl
UXVpcmtzKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIEFTU0VSVChtX3R5cGUgPT0gSFRNTFRva2Vu
VHlwZXM6OkRPQ1RZUEUpOwotICAgICAgICByZXR1cm4gbV9kb2N0eXBlRGF0YS0+bV9mb3JjZVF1
aXJrczsKLSAgICB9Ci0KLSAgICBIVE1MVG9rZW5UeXBlczo6VHlwZSB0eXBlKCkgY29uc3QgeyBy
ZXR1cm4gbV90eXBlOyB9Ci0KLSAgICBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUoKSBjb25zdAot
ICAgIHsKLSAgICAgICAgQVNTRVJUKHVzZXNOYW1lKCkpOwotICAgICAgICByZXR1cm4gbV9uYW1l
OwotICAgIH0KLQotICAgIHZvaWQgc2V0TmFtZShjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpCi0g
ICAgewotICAgICAgICBBU1NFUlQodXNlc05hbWUoKSk7Ci0gICAgICAgIG1fbmFtZSA9IG5hbWU7
Ci0gICAgfQotCi0gICAgYm9vbCBzZWxmQ2xvc2luZygpIGNvbnN0Ci0gICAgewotICAgICAgICBB
U1NFUlQobV90eXBlID09IEhUTUxUb2tlblR5cGVzOjpTdGFydFRhZyB8fCBtX3R5cGUgPT0gSFRN
TFRva2VuVHlwZXM6OkVuZFRhZyk7Ci0gICAgICAgIHJldHVybiBtX3NlbGZDbG9zaW5nOwotICAg
IH0KLQotICAgIEF0dHJpYnV0ZSogZ2V0QXR0cmlidXRlSXRlbShjb25zdCBRdWFsaWZpZWROYW1l
JiBhdHRyaWJ1dGVOYW1lKQotICAgIHsKLSAgICAgICAgQVNTRVJUKHVzZXNBdHRyaWJ1dGVzKCkp
OwotICAgICAgICByZXR1cm4gZmluZEF0dHJpYnV0ZUluVmVjdG9yKG1fYXR0cmlidXRlcywgYXR0
cmlidXRlTmFtZSk7Ci0gICAgfQotCi0gICAgVmVjdG9yPEF0dHJpYnV0ZT4mIGF0dHJpYnV0ZXMo
KQotICAgIHsKLSAgICAgICAgQVNTRVJUKHVzZXNBdHRyaWJ1dGVzKCkpOwotICAgICAgICByZXR1
cm4gbV9hdHRyaWJ1dGVzOwotICAgIH0KLQotICAgIGNvbnN0IFZlY3RvcjxBdHRyaWJ1dGU+JiBh
dHRyaWJ1dGVzKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIEFTU0VSVCh1c2VzQXR0cmlidXRlcygp
KTsKLSAgICAgICAgcmV0dXJuIG1fYXR0cmlidXRlczsKLSAgICB9Ci0KLSAgICBjb25zdCBVQ2hh
ciogY2hhcmFjdGVycygpIGNvbnN0Ci0gICAgewotICAgICAgICBBU1NFUlQobV90eXBlID09IEhU
TUxUb2tlblR5cGVzOjpDaGFyYWN0ZXIpOwotICAgICAgICByZXR1cm4gbV9leHRlcm5hbENoYXJh
Y3RlcnM7Ci0gICAgfQotCi0gICAgc2l6ZV90IGNoYXJhY3RlcnNMZW5ndGgoKSBjb25zdAotICAg
IHsKLSAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBIVE1MVG9rZW5UeXBlczo6Q2hhcmFjdGVyKTsK
LSAgICAgICAgcmV0dXJuIG1fZXh0ZXJuYWxDaGFyYWN0ZXJzTGVuZ3RoOwotICAgIH0KLQotICAg
IGJvb2wgaXNBbGw4Qml0RGF0YSgpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9pc0Fs
bDhCaXREYXRhOwotICAgIH0KLQotICAgIGNvbnN0IFN0cmluZyYgY29tbWVudCgpIGNvbnN0Ci0g
ICAgewotICAgICAgICBBU1NFUlQobV90eXBlID09IEhUTUxUb2tlblR5cGVzOjpDb21tZW50KTsK
LSAgICAgICAgcmV0dXJuIG1fZGF0YTsKLSAgICB9Ci0KLSAgICAvLyBGSVhNRTogRGlzdGluZ3Vp
c2ggYmV0d2VlbiBhIG1pc3NpbmcgcHVibGljIGlkZW50aWZlciBhbmQgYW4gZW1wdHkgb25lLgot
ICAgIFdURjo6VmVjdG9yPFVDaGFyPiYgcHVibGljSWRlbnRpZmllcigpIGNvbnN0Ci0gICAgewot
ICAgICAgICBBU1NFUlQobV90eXBlID09IEhUTUxUb2tlblR5cGVzOjpET0NUWVBFKTsKLSAgICAg
ICAgcmV0dXJuIG1fZG9jdHlwZURhdGEtPm1fcHVibGljSWRlbnRpZmllcjsKLSAgICB9Ci0KLSAg
ICAvLyBGSVhNRTogRGlzdGluZ3Vpc2ggYmV0d2VlbiBhIG1pc3Npbmcgc3lzdGVtIGlkZW50aWZl
ciBhbmQgYW4gZW1wdHkgb25lLgotICAgIFdURjo6VmVjdG9yPFVDaGFyPiYgc3lzdGVtSWRlbnRp
ZmllcigpIGNvbnN0Ci0gICAgewotICAgICAgICBBU1NFUlQobV90eXBlID09IEhUTUxUb2tlblR5
cGVzOjpET0NUWVBFKTsKLSAgICAgICAgcmV0dXJuIG1fZG9jdHlwZURhdGEtPm1fc3lzdGVtSWRl
bnRpZmllcjsKLSAgICB9Ci0KLSAgICB2b2lkIGNsZWFyRXh0ZXJuYWxDaGFyYWN0ZXJzKCkKLSAg
ICB7Ci0gICAgICAgIG1fZXh0ZXJuYWxDaGFyYWN0ZXJzID0gMDsKLSAgICAgICAgbV9leHRlcm5h
bENoYXJhY3RlcnNMZW5ndGggPSAwOwotICAgICAgICBtX2lzQWxsOEJpdERhdGEgPSBmYWxzZTsK
LSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgZXhwbGljaXQgQXRvbWljSFRNTFRva2VuKEhUTUxUb2tl
biYgdG9rZW4pCi0gICAgICAgIDogbV90eXBlKHRva2VuLnR5cGUoKSkKLSAgICB7Ci0gICAgICAg
IHN3aXRjaCAobV90eXBlKSB7Ci0gICAgICAgIGNhc2UgSFRNTFRva2VuVHlwZXM6OlVuaW5pdGlh
bGl6ZWQ6Ci0gICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICBjYXNlIEhUTUxUb2tlblR5cGVzOjpET0NUWVBFOgotICAgICAgICAgICAg
bV9uYW1lID0gQXRvbWljU3RyaW5nKHRva2VuLm5hbWVTdHJpbmcoKSk7Ci0gICAgICAgICAgICBt
X2RvY3R5cGVEYXRhID0gdG9rZW4ucmVsZWFzZURvY3R5cGVEYXRhKCk7Ci0gICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgY2FzZSBIVE1MVG9rZW5UeXBlczo6RW5kT2ZGaWxlOgotICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgSFRNTFRva2VuVHlwZXM6OlN0YXJ0VGFnOgotICAgICAg
ICBjYXNlIEhUTUxUb2tlblR5cGVzOjpFbmRUYWc6IHsKLSAgICAgICAgICAgIG1fc2VsZkNsb3Np
bmcgPSB0b2tlbi5zZWxmQ2xvc2luZygpOwotICAgICAgICAgICAgbV9uYW1lID0gQXRvbWljU3Ry
aW5nKHRva2VuLm5hbWVTdHJpbmcoKSk7Ci0gICAgICAgICAgICBpbml0aWFsaXplQXR0cmlidXRl
cyh0b2tlbi5hdHRyaWJ1dGVzKCkpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAg
ICAgICAgY2FzZSBIVE1MVG9rZW5UeXBlczo6Q29tbWVudDoKLSAgICAgICAgICAgIGlmICh0b2tl
bi5pc0FsbDhCaXREYXRhKCkpCi0gICAgICAgICAgICAgICAgbV9kYXRhID0gU3RyaW5nOjptYWtl
OEJpdEZyb20xNkJpdFNvdXJjZSh0b2tlbi5jb21tZW50KCkuZGF0YSgpLCB0b2tlbi5jb21tZW50
KCkuc2l6ZSgpKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBtX2RhdGEgPSBT
dHJpbmcodG9rZW4uY29tbWVudCgpLmRhdGEoKSwgdG9rZW4uY29tbWVudCgpLnNpemUoKSk7Ci0g
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBIVE1MVG9rZW5UeXBlczo6Q2hhcmFjdGVy
OgotICAgICAgICAgICAgbV9leHRlcm5hbENoYXJhY3RlcnMgPSB0b2tlbi5jaGFyYWN0ZXJzKCku
ZGF0YSgpOwotICAgICAgICAgICAgbV9leHRlcm5hbENoYXJhY3RlcnNMZW5ndGggPSB0b2tlbi5j
aGFyYWN0ZXJzKCkuc2l6ZSgpOwotICAgICAgICAgICAgbV9pc0FsbDhCaXREYXRhID0gdG9rZW4u
aXNBbGw4Qml0RGF0YSgpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGRlZmF1bHQ6Ci0g
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgIH0KLQotI2lmIEVOQUJMRShUSFJFQURF
RF9IVE1MX1BBUlNFUikKLQotICAgIGV4cGxpY2l0IEF0b21pY0hUTUxUb2tlbihjb25zdCBDb21w
YWN0SFRNTFRva2VuJiB0b2tlbikKLSAgICAgICAgOiBtX3R5cGUodG9rZW4udHlwZSgpKQotICAg
IHsKLSAgICAgICAgc3dpdGNoIChtX3R5cGUpIHsKLSAgICAgICAgY2FzZSBIVE1MVG9rZW5UeXBl
czo6VW5pbml0aWFsaXplZDoKLSAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgSFRNTFRva2VuVHlwZXM6OkRPQ1RZUEU6Ci0g
ICAgICAgICAgICBtX25hbWUgPSB0b2tlbi5kYXRhKCk7Ci0gICAgICAgICAgICBtX2RvY3R5cGVE
YXRhID0gYWRvcHRQdHIobmV3IERvY3R5cGVEYXRhKCkpOwotICAgICAgICAgICAgbV9kb2N0eXBl
RGF0YS0+bV9oYXNQdWJsaWNJZGVudGlmaWVyID0gdHJ1ZTsKLSAgICAgICAgICAgIG1fZG9jdHlw
ZURhdGEtPm1fcHVibGljSWRlbnRpZmllci5hcHBlbmQodG9rZW4ucHVibGljSWRlbnRpZmllcigp
LmNoYXJhY3RlcnMoKSwgdG9rZW4ucHVibGljSWRlbnRpZmllcigpLmxlbmd0aCgpKTsKLSAgICAg
ICAgICAgIG1fZG9jdHlwZURhdGEtPm1faGFzU3lzdGVtSWRlbnRpZmllciA9IHRydWU7Ci0gICAg
ICAgICAgICBtX2RvY3R5cGVEYXRhLT5tX3N5c3RlbUlkZW50aWZpZXIuYXBwZW5kKHRva2VuLnN5
c3RlbUlkZW50aWZpZXIoKS5jaGFyYWN0ZXJzKCksIHRva2VuLnN5c3RlbUlkZW50aWZpZXIoKS5s
ZW5ndGgoKSk7Ci0gICAgICAgICAgICBtX2RvY3R5cGVEYXRhLT5tX2ZvcmNlUXVpcmtzID0gdG9r
ZW4uZG9jdHlwZUZvcmNlc1F1aXJrcygpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNh
c2UgSFRNTFRva2VuVHlwZXM6OkVuZE9mRmlsZToKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICBjYXNlIEhUTUxUb2tlblR5cGVzOjpTdGFydFRhZzoKLSAgICAgICAgICAgIG1fYXR0cmlidXRl
cy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHRva2VuLmF0dHJpYnV0ZXMoKS5zaXplKCkpOwotICAg
ICAgICAgICAgZm9yIChWZWN0b3I8Q29tcGFjdEF0dHJpYnV0ZT46OmNvbnN0X2l0ZXJhdG9yIGl0
ID0gdG9rZW4uYXR0cmlidXRlcygpLmJlZ2luKCk7IGl0ICE9IHRva2VuLmF0dHJpYnV0ZXMoKS5l
bmQoKTsgKytpdCkKLSAgICAgICAgICAgICAgICBtX2F0dHJpYnV0ZXMuYXBwZW5kKEF0dHJpYnV0
ZShRdWFsaWZpZWROYW1lKG51bGxBdG9tLCBpdC0+bmFtZSgpLCBudWxsQXRvbSksIGl0LT52YWx1
ZSgpKSk7Ci0gICAgICAgICAgICAvLyBGYWxsIHRocm91Z2ghCi0gICAgICAgIGNhc2UgSFRNTFRv
a2VuVHlwZXM6OkVuZFRhZzoKLSAgICAgICAgICAgIG1fc2VsZkNsb3NpbmcgPSB0b2tlbi5zZWxm
Q2xvc2luZygpOwotICAgICAgICAgICAgbV9uYW1lID0gQXRvbWljU3RyaW5nKHRva2VuLmRhdGEo
KSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBIVE1MVG9rZW5UeXBlczo6Q29t
bWVudDoKLSAgICAgICAgICAgIG1fZGF0YSA9IHRva2VuLmRhdGEoKTsKLSAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICBjYXNlIEhUTUxUb2tlblR5cGVzOjpDaGFyYWN0ZXI6Ci0gICAgICAgICAg
ICBtX2V4dGVybmFsQ2hhcmFjdGVycyA9IHRva2VuLmRhdGEoKS5jaGFyYWN0ZXJzKCk7Ci0gICAg
ICAgICAgICBtX2V4dGVybmFsQ2hhcmFjdGVyc0xlbmd0aCA9IHRva2VuLmRhdGEoKS5sZW5ndGgo
KTsKLSAgICAgICAgICAgIG1faXNBbGw4Qml0RGF0YSA9IHRva2VuLmlzQWxsOEJpdERhdGEoKTsK
LSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgIH0KLSAgICB9Ci0KLSNlbmRpZgotCi0gICAgZXhwbGljaXQgQXRvbWljSFRNTFRv
a2VuKEhUTUxUb2tlblR5cGVzOjpUeXBlIHR5cGUpCi0gICAgICAgIDogbV90eXBlKHR5cGUpCi0g
ICAgICAgICwgbV9leHRlcm5hbENoYXJhY3RlcnMoMCkKLSAgICAgICAgLCBtX2V4dGVybmFsQ2hh
cmFjdGVyc0xlbmd0aCgwKQotICAgICAgICAsIG1faXNBbGw4Qml0RGF0YShmYWxzZSkKLSAgICAg
ICAgLCBtX3NlbGZDbG9zaW5nKGZhbHNlKQotICAgIHsKLSAgICB9Ci0KLSAgICBBdG9taWNIVE1M
VG9rZW4oSFRNTFRva2VuVHlwZXM6OlR5cGUgdHlwZSwgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1l
LCBjb25zdCBWZWN0b3I8QXR0cmlidXRlPiYgYXR0cmlidXRlcyA9IFZlY3RvcjxBdHRyaWJ1dGU+
KCkpCi0gICAgICAgIDogbV90eXBlKHR5cGUpCi0gICAgICAgICwgbV9uYW1lKG5hbWUpCi0gICAg
ICAgICwgbV9leHRlcm5hbENoYXJhY3RlcnMoMCkKLSAgICAgICAgLCBtX2V4dGVybmFsQ2hhcmFj
dGVyc0xlbmd0aCgwKQotICAgICAgICAsIG1faXNBbGw4Qml0RGF0YShmYWxzZSkKLSAgICAgICAg
LCBtX3NlbGZDbG9zaW5nKGZhbHNlKQotICAgICAgICAsIG1fYXR0cmlidXRlcyhhdHRyaWJ1dGVz
KQotICAgIHsKLSAgICAgICAgQVNTRVJUKHVzZXNOYW1lKCkpOwotICAgIH0KLQotICAgIEhUTUxU
b2tlblR5cGVzOjpUeXBlIG1fdHlwZTsKLQotICAgIHZvaWQgaW5pdGlhbGl6ZUF0dHJpYnV0ZXMo
Y29uc3QgSFRNTFRva2VuOjpBdHRyaWJ1dGVMaXN0JiBhdHRyaWJ1dGVzKTsKLSAgICBRdWFsaWZp
ZWROYW1lIG5hbWVGb3JBdHRyaWJ1dGUoY29uc3QgSFRNTFRva2VuOjpBdHRyaWJ1dGUmKSBjb25z
dDsKLQotICAgIGJvb2wgdXNlc05hbWUoKSBjb25zdDsKLQotICAgIGJvb2wgdXNlc0F0dHJpYnV0
ZXMoKSBjb25zdDsKLQotICAgIC8vICJuYW1lIiBmb3IgRE9DVFlQRSwgU3RhcnRUYWcsIGFuZCBF
bmRUYWcKLSAgICBBdG9taWNTdHJpbmcgbV9uYW1lOwotCi0gICAgLy8gImRhdGEiIGZvciBDb21t
ZW50Ci0gICAgU3RyaW5nIG1fZGF0YTsKLQotICAgIC8vICJjaGFyYWN0ZXJzIiBmb3IgQ2hhcmFj
dGVyCi0gICAgLy8KLSAgICAvLyBXZSBkb24ndCB3YW50IHRvIGNvcHkgdGhlIHRoZSBjaGFyYWN0
ZXJzIG91dCBvZiB0aGUgVG9rZW4sIHNvIHdlCi0gICAgLy8ga2VlcCBhIHBvaW50ZXIgdG8gaXRz
IGJ1ZmZlciBpbnN0ZWFkLiBUaGlzIGJ1ZmZlciBpcyBvd25lZCBieSB0aGUKLSAgICAvLyBUb2tl
biBhbmQgY2F1c2VzIGEgbGlmZXRpbWUgZGVwZW5kZW5jZSBiZXR3ZWVuIHRoZXNlIG9iamVjdHMu
Ci0gICAgLy8KLSAgICAvLyBGSVhNRTogQWRkIGEgbWVjaGFuaXNtIGZvciAiaW50ZXJuYWxpemlu
ZyIgdGhlIGNoYXJhY3RlcnMgd2hlbiB0aGUKLSAgICAvLyAgICAgICAgSFRNTFRva2VuIGlzIGRl
c3RydWN0ZWQuCi0gICAgY29uc3QgVUNoYXIqIG1fZXh0ZXJuYWxDaGFyYWN0ZXJzOwotICAgIHNp
emVfdCBtX2V4dGVybmFsQ2hhcmFjdGVyc0xlbmd0aDsKLSAgICBib29sIG1faXNBbGw4Qml0RGF0
YTsKLQotICAgIC8vIEZvciBET0NUWVBFCi0gICAgT3duUHRyPERvY3R5cGVEYXRhPiBtX2RvY3R5
cGVEYXRhOwotCi0gICAgLy8gRm9yIFN0YXJ0VGFnIGFuZCBFbmRUYWcKLSAgICBib29sIG1fc2Vs
ZkNsb3Npbmc7Ci0KLSAgICBWZWN0b3I8QXR0cmlidXRlPiBtX2F0dHJpYnV0ZXM7Ci19OwotCi1p
bmxpbmUgdm9pZCBBdG9taWNIVE1MVG9rZW46OmluaXRpYWxpemVBdHRyaWJ1dGVzKGNvbnN0IEhU
TUxUb2tlbjo6QXR0cmlidXRlTGlzdCYgYXR0cmlidXRlcykKLXsKLSAgICBzaXplX3Qgc2l6ZSA9
IGF0dHJpYnV0ZXMuc2l6ZSgpOwotICAgIGlmICghc2l6ZSkKLSAgICAgICAgcmV0dXJuOwotCi0g
ICAgbV9hdHRyaWJ1dGVzLmNsZWFyKCk7Ci0gICAgbV9hdHRyaWJ1dGVzLnJlc2VydmVJbml0aWFs
Q2FwYWNpdHkoc2l6ZSk7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsK
LSAgICAgICAgY29uc3QgSFRNTFRva2VuOjpBdHRyaWJ1dGUmIGF0dHJpYnV0ZSA9IGF0dHJpYnV0
ZXNbaV07Ci0gICAgICAgIGlmIChhdHRyaWJ1dGUubV9uYW1lLmlzRW1wdHkoKSkKLSAgICAgICAg
ICAgIGNvbnRpbnVlOwotCi0gICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgYmUgYWJsZSB0byBh
ZGQgdGhlIGZvbGxvd2luZyBBU1NFUlQgb25jZSB3ZSBmaXgKLSAgICAgICAgLy8gaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYyOTcxCi0gICAgICAgIC8vICAgQVNTRVJU
KGF0dHJpYnV0ZS5tX25hbWVSYW5nZS5tX3N0YXJ0KTsKLSAgICAgICAgQVNTRVJUKGF0dHJpYnV0
ZS5tX25hbWVSYW5nZS5tX2VuZCk7Ci0gICAgICAgIEFTU0VSVChhdHRyaWJ1dGUubV92YWx1ZVJh
bmdlLm1fc3RhcnQpOwotICAgICAgICBBU1NFUlQoYXR0cmlidXRlLm1fdmFsdWVSYW5nZS5tX2Vu
ZCk7Ci0KLSAgICAgICAgQXRvbWljU3RyaW5nIHZhbHVlKGF0dHJpYnV0ZS5tX3ZhbHVlLmRhdGEo
KSwgYXR0cmlidXRlLm1fdmFsdWUuc2l6ZSgpKTsKLSAgICAgICAgY29uc3QgUXVhbGlmaWVkTmFt
ZSYgbmFtZSA9IG5hbWVGb3JBdHRyaWJ1dGUoYXR0cmlidXRlKTsKLSAgICAgICAgaWYgKCFmaW5k
QXR0cmlidXRlSW5WZWN0b3IobV9hdHRyaWJ1dGVzLCBuYW1lKSkKLSAgICAgICAgICAgIG1fYXR0
cmlidXRlcy5hcHBlbmQoQXR0cmlidXRlKG5hbWUsIHZhbHVlKSk7Ci0gICAgfQotfQotCiB9CiAK
ICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRva2Vu
VHlwZXMuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUb2tlblR5cGVzLmgKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQwYjI0MzVjNjFlYjZhZWMyYzhjNDAwOTIwNTBm
Y2ZjMWM5ZjRkMGYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRva2VuVHlwZXMuaAorKysgL2Rldi9u
dWxsCkBAIC0xLDQ2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlLCBJ
bmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQot
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLiAKLSAqLwotCi0jaWZuZGVmIEhUTUxUb2tlblR5cGVzX2gKLSNkZWZpbmUgSFRNTFRva2Vu
VHlwZXNfaAotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIEhUTUxUb2tlblR5cGVzIHsK
LXB1YmxpYzoKLSAgICBlbnVtIFR5cGUgewotICAgICAgICBVbmluaXRpYWxpemVkLAotICAgICAg
ICBET0NUWVBFLAotICAgICAgICBTdGFydFRhZywKLSAgICAgICAgRW5kVGFnLAotICAgICAgICBD
b21tZW50LAotICAgICAgICBDaGFyYWN0ZXIsCi0gICAgICAgIEVuZE9mRmlsZSwKLSAgICB9Owot
fTsKLQotfQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2Vy
L0hUTUxUb2tlbml6ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRva2Vu
aXplci5jcHAKaW5kZXggMTA5Mzg5ZGZjYWZjNjk4YjgwZjRjN2M3MmJjMmZhYzRiZTUzNDRhMy4u
ZjBhZGZlM2ZmOGE3NTJhODJmNGFjNjJlZDAwMmFmOGJmYmZiNzBmYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRva2VuaXplci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRva2VuaXplci5jcHAKQEAgLTU2LDEyICs1NiwxMiBAQCBR
dWFsaWZpZWROYW1lIEF0b21pY0hUTUxUb2tlbjo6bmFtZUZvckF0dHJpYnV0ZShjb25zdCBIVE1M
VG9rZW46OkF0dHJpYnV0ZSYgYXR0cgogCiBib29sIEF0b21pY0hUTUxUb2tlbjo6dXNlc05hbWUo
KSBjb25zdAogewotICAgIHJldHVybiBtX3R5cGUgPT0gSFRNTFRva2VuVHlwZXM6OlN0YXJ0VGFn
IHx8IG1fdHlwZSA9PSBIVE1MVG9rZW5UeXBlczo6RW5kVGFnIHx8IG1fdHlwZSA9PSBIVE1MVG9r
ZW5UeXBlczo6RE9DVFlQRTsKKyAgICByZXR1cm4gbV90eXBlID09IEhUTUxUb2tlbjo6U3RhcnRU
YWcgfHwgbV90eXBlID09IEhUTUxUb2tlbjo6RW5kVGFnIHx8IG1fdHlwZSA9PSBIVE1MVG9rZW46
OkRPQ1RZUEU7CiB9CiAKIGJvb2wgQXRvbWljSFRNTFRva2VuOjp1c2VzQXR0cmlidXRlcygpIGNv
bnN0CiB7Ci0gICAgcmV0dXJuIG1fdHlwZSA9PSBIVE1MVG9rZW5UeXBlczo6U3RhcnRUYWcgfHwg
bV90eXBlID09IEhUTUxUb2tlblR5cGVzOjpFbmRUYWc7CisgICAgcmV0dXJuIG1fdHlwZSA9PSBI
VE1MVG9rZW46OlN0YXJ0VGFnIHx8IG1fdHlwZSA9PSBIVE1MVG9rZW46OkVuZFRhZzsKIH0KIAog
c3RhdGljIGlubGluZSBVQ2hhciB0b0xvd2VyQ2FzZShVQ2hhciBjYykKQEAgLTE3OCw5ICsxNzgs
OSBAQCBpbmxpbmUgYm9vbCBIVE1MVG9rZW5pemVyOjpwcm9jZXNzRW50aXR5KFNlZ21lbnRlZFN0
cmluZyYgc291cmNlKQogCiBib29sIEhUTUxUb2tlbml6ZXI6OmZsdXNoQnVmZmVyZWRFbmRUYWco
U2VnbWVudGVkU3RyaW5nJiBzb3VyY2UpCiB7Ci0gICAgQVNTRVJUKG1fdG9rZW4tPnR5cGUoKSA9
PSBIVE1MVG9rZW5UeXBlczo6Q2hhcmFjdGVyIHx8IG1fdG9rZW4tPnR5cGUoKSA9PSBIVE1MVG9r
ZW5UeXBlczo6VW5pbml0aWFsaXplZCk7CisgICAgQVNTRVJUKG1fdG9rZW4tPnR5cGUoKSA9PSBI
VE1MVG9rZW46OkNoYXJhY3RlciB8fCBtX3Rva2VuLT50eXBlKCkgPT0gSFRNTFRva2VuOjpVbmlu
aXRpYWxpemVkKTsKICAgICBzb3VyY2UuYWR2YW5jZUFuZFVwZGF0ZUxpbmVOdW1iZXIoKTsKLSAg
ICBpZiAobV90b2tlbi0+dHlwZSgpID09IEhUTUxUb2tlblR5cGVzOjpDaGFyYWN0ZXIpCisgICAg
aWYgKG1fdG9rZW4tPnR5cGUoKSA9PSBIVE1MVG9rZW46OkNoYXJhY3RlcikKICAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgbV90b2tlbi0+YmVnaW5FbmRUYWcobV9idWZmZXJlZEVuZFRhZ05hbWUp
OwogICAgIG1fYnVmZmVyZWRFbmRUYWdOYW1lLmNsZWFyKCk7CkBAIC0yMTIsNyArMjEyLDcgQEAg
Ym9vbCBIVE1MVG9rZW5pemVyOjpuZXh0VG9rZW4oU2VnbWVudGVkU3RyaW5nJiBzb3VyY2UsIEhU
TUxUb2tlbiYgdG9rZW4pCiB7CiAgICAgLy8gSWYgd2UgaGF2ZSBhIHRva2VuIGluIHByb2dyZXNz
LCB0aGVuIHdlJ3JlIHN1cHBvc2VkIHRvIGJlIGNhbGxlZCBiYWNrCiAgICAgLy8gd2l0aCB0aGUg
c2FtZSB0b2tlbiBzbyB3ZSBjYW4gZmluaXNoIGl0LgotICAgIEFTU0VSVCghbV90b2tlbiB8fCBt
X3Rva2VuID09ICZ0b2tlbiB8fCB0b2tlbi50eXBlKCkgPT0gSFRNTFRva2VuVHlwZXM6OlVuaW5p
dGlhbGl6ZWQpOworICAgIEFTU0VSVCghbV90b2tlbiB8fCBtX3Rva2VuID09ICZ0b2tlbiB8fCB0
b2tlbi50eXBlKCkgPT0gSFRNTFRva2VuOjpVbmluaXRpYWxpemVkKTsKICAgICBtX3Rva2VuID0g
JnRva2VuOwogCiAgICAgaWYgKCFtX2J1ZmZlcmVkRW5kVGFnTmFtZS5pc0VtcHR5KCkgJiYgIWlz
RW5kVGFnQnVmZmVyaW5nU3RhdGUobV9zdGF0ZSkpIHsKQEAgLTIzOCw3ICsyMzgsNyBAQCBib29s
IEhUTUxUb2tlbml6ZXI6Om5leHRUb2tlbihTZWdtZW50ZWRTdHJpbmcmIHNvdXJjZSwgSFRNTFRv
a2VuJiB0b2tlbikKICAgICAgICAgaWYgKGNjID09ICcmJykKICAgICAgICAgICAgIEhUTUxfQURW
QU5DRV9UTyhDaGFyYWN0ZXJSZWZlcmVuY2VJbkRhdGFTdGF0ZSk7CiAgICAgICAgIGVsc2UgaWYg
KGNjID09ICc8JykgewotICAgICAgICAgICAgaWYgKG1fdG9rZW4tPnR5cGUoKSA9PSBIVE1MVG9r
ZW5UeXBlczo6Q2hhcmFjdGVyKSB7CisgICAgICAgICAgICBpZiAobV90b2tlbi0+dHlwZSgpID09
IEhUTUxUb2tlbjo6Q2hhcmFjdGVyKSB7CiAgICAgICAgICAgICAgICAgLy8gV2UgaGF2ZSBhIGJ1
bmNoIG9mIGNoYXJhY3RlciB0b2tlbnMgcXVldWVkIHVwIHRoYXQgd2UKICAgICAgICAgICAgICAg
ICAvLyBhcmUgZW1pdHRpbmcgbGF6aWx5IGhlcmUuCiAgICAgICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVG9rZW5pemVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVG9rZW5pemVyLmgKaW5kZXggMzNm
Mzg1OTliOTkwZWIzMTk3MmRiM2RhOGIzMWY1MjYwYWFjOTYwZS4uOGE0M2Q2MDY4MDg5NGE1MTdh
Yjk5NDU0ODlkMDhiMjdlZDg4NDIwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9w
YXJzZXIvSFRNTFRva2VuaXplci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hU
TUxUb2tlbml6ZXIuaApAQCAtMjUzLDggKzI1Myw4IEBAIHByaXZhdGU6CiAKICAgICBpbmxpbmUg
dm9pZCBzYXZlRW5kVGFnTmFtZUlmTmVlZGVkKCkKICAgICB7Ci0gICAgICAgIEFTU0VSVChtX3Rv
a2VuLT50eXBlKCkgIT0gSFRNTFRva2VuVHlwZXM6OlVuaW5pdGlhbGl6ZWQpOwotICAgICAgICBp
ZiAobV90b2tlbi0+dHlwZSgpID09IEhUTUxUb2tlblR5cGVzOjpTdGFydFRhZykKKyAgICAgICAg
QVNTRVJUKG1fdG9rZW4tPnR5cGUoKSAhPSBIVE1MVG9rZW46OlVuaW5pdGlhbGl6ZWQpOworICAg
ICAgICBpZiAobV90b2tlbi0+dHlwZSgpID09IEhUTUxUb2tlbjo6U3RhcnRUYWcpCiAgICAgICAg
ICAgICBtX2FwcHJvcHJpYXRlRW5kVGFnTmFtZSA9IG1fdG9rZW4tPm5hbWUoKTsKICAgICB9CiAg
ICAgaW5saW5lIGJvb2wgaXNBcHByb3ByaWF0ZUVuZFRhZygpOwpAQCAtMjYyLDcgKzI2Miw3IEBA
IHByaXZhdGU6CiAKICAgICBpbmxpbmUgYm9vbCBoYXZlQnVmZmVyZWRDaGFyYWN0ZXJUb2tlbigp
CiAgICAgewotICAgICAgICByZXR1cm4gbV90b2tlbi0+dHlwZSgpID09IEhUTUxUb2tlbjo6VHlw
ZTo6Q2hhcmFjdGVyOworICAgICAgICByZXR1cm4gbV90b2tlbi0+dHlwZSgpID09IEhUTUxUb2tl
bjo6Q2hhcmFjdGVyOwogICAgIH0KIAogICAgIFN0YXRlIG1fc3RhdGU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVHJlZUJ1aWxkZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRyZWVCdWlsZGVyLmNwcAppbmRleCA4OTE2Y2JlOTdjYjY1
YjkxOTc0NTAwODQ2MTFjZjMzYjE3NzdkNGRkLi4zOTFlMTYxZDhkMzJjNzliZjkxYTQ3NmU2ZDY3
ODhhMTU5ZDIwNTZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1M
VHJlZUJ1aWxkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUcmVl
QnVpbGRlci5jcHAKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNs
dWRlICJIVE1MVHJlZUJ1aWxkZXIuaCIKIAorI2luY2x1ZGUgIkF0b21pY0hUTUxUb2tlbi5oIgog
I2luY2x1ZGUgIkRvY3VtZW50RnJhZ21lbnQuaCIKICNpbmNsdWRlICJIVE1MRG9jdW1lbnQuaCIK
ICNpbmNsdWRlICJIVE1MRG9jdW1lbnRQYXJzZXIuaCIKQEAgLTM4NCwyOSArMzg1LDI5IEBAIHZv
aWQgSFRNTFRyZWVCdWlsZGVyOjpjb25zdHJ1Y3RUcmVlKEF0b21pY0hUTUxUb2tlbiogdG9rZW4p
CiB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc1Rva2VuKEF0b21pY0hUTUxUb2tlbiogdG9r
ZW4pCiB7CiAgICAgc3dpdGNoICh0b2tlbi0+dHlwZSgpKSB7Ci0gICAgY2FzZSBIVE1MVG9rZW5U
eXBlczo6VW5pbml0aWFsaXplZDoKKyAgICBjYXNlIEhUTUxUb2tlbjo6VW5pbml0aWFsaXplZDoK
ICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2Ug
SFRNTFRva2VuVHlwZXM6OkRPQ1RZUEU6CisgICAgY2FzZSBIVE1MVG9rZW46OkRPQ1RZUEU6CiAg
ICAgICAgIG1fc2hvdWxkU2tpcExlYWRpbmdOZXdsaW5lID0gZmFsc2U7CiAgICAgICAgIHByb2Nl
c3NEb2N0eXBlVG9rZW4odG9rZW4pOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEhUTUxUb2tl
blR5cGVzOjpTdGFydFRhZzoKKyAgICBjYXNlIEhUTUxUb2tlbjo6U3RhcnRUYWc6CiAgICAgICAg
IG1fc2hvdWxkU2tpcExlYWRpbmdOZXdsaW5lID0gZmFsc2U7CiAgICAgICAgIHByb2Nlc3NTdGFy
dFRhZyh0b2tlbik7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgSFRNTFRva2VuVHlwZXM6OkVu
ZFRhZzoKKyAgICBjYXNlIEhUTUxUb2tlbjo6RW5kVGFnOgogICAgICAgICBtX3Nob3VsZFNraXBM
ZWFkaW5nTmV3bGluZSA9IGZhbHNlOwogICAgICAgICBwcm9jZXNzRW5kVGFnKHRva2VuKTsKICAg
ICAgICAgYnJlYWs7Ci0gICAgY2FzZSBIVE1MVG9rZW5UeXBlczo6Q29tbWVudDoKKyAgICBjYXNl
IEhUTUxUb2tlbjo6Q29tbWVudDoKICAgICAgICAgbV9zaG91bGRTa2lwTGVhZGluZ05ld2xpbmUg
PSBmYWxzZTsKICAgICAgICAgcHJvY2Vzc0NvbW1lbnQodG9rZW4pOwogICAgICAgICByZXR1cm47
Ci0gICAgY2FzZSBIVE1MVG9rZW5UeXBlczo6Q2hhcmFjdGVyOgorICAgIGNhc2UgSFRNTFRva2Vu
OjpDaGFyYWN0ZXI6CiAgICAgICAgIHByb2Nlc3NDaGFyYWN0ZXIodG9rZW4pOwogICAgICAgICBi
cmVhazsKLSAgICBjYXNlIEhUTUxUb2tlblR5cGVzOjpFbmRPZkZpbGU6CisgICAgY2FzZSBIVE1M
VG9rZW46OkVuZE9mRmlsZToKICAgICAgICAgbV9zaG91bGRTa2lwTGVhZGluZ05ld2xpbmUgPSBm
YWxzZTsKICAgICAgICAgcHJvY2Vzc0VuZE9mRmlsZSh0b2tlbik7CiAgICAgICAgIGJyZWFrOwpA
QCAtNDE1LDcgKzQxNiw3IEBAIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzVG9rZW4oQXRv
bWljSFRNTFRva2VuKiB0b2tlbikKIAogdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NEb2N0
eXBlVG9rZW4oQXRvbWljSFRNTFRva2VuKiB0b2tlbikKIHsKLSAgICBBU1NFUlQodG9rZW4tPnR5
cGUoKSA9PSBIVE1MVG9rZW5UeXBlczo6RE9DVFlQRSk7CisgICAgQVNTRVJUKHRva2VuLT50eXBl
KCkgPT0gSFRNTFRva2VuOjpET0NUWVBFKTsKICAgICBpZiAobV9pbnNlcnRpb25Nb2RlID09IElu
aXRpYWxNb2RlKSB7CiAgICAgICAgIG1fdHJlZS5pbnNlcnREb2N0eXBlKHRva2VuKTsKICAgICAg
ICAgc2V0SW5zZXJ0aW9uTW9kZShCZWZvcmVIVE1MTW9kZSk7CkBAIC00MzIsMTMgKzQzMywxMyBA
QCB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0RvY3R5cGVUb2tlbihBdG9taWNIVE1MVG9r
ZW4qIHRva2VuKQogdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NGYWtlU3RhcnRUYWcoY29u
c3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgY29uc3QgVmVjdG9yPEF0dHJpYnV0ZT4mIGF0dHJp
YnV0ZXMpCiB7CiAgICAgLy8gRklYTUU6IFdlJ2xsIG5lZWQgYSBmYW5jaWVyIGNvbnZlcnNpb24g
dGhhbiBqdXN0ICJsb2NhbE5hbWUiIGZvciBTVkcvTWF0aE1MIHRhZ3MuCi0gICAgUmVmUHRyPEF0
b21pY0hUTUxUb2tlbj4gZmFrZVRva2VuID0gQXRvbWljSFRNTFRva2VuOjpjcmVhdGUoSFRNTFRv
a2VuVHlwZXM6OlN0YXJ0VGFnLCB0YWdOYW1lLmxvY2FsTmFtZSgpLCBhdHRyaWJ1dGVzKTsKKyAg
ICBSZWZQdHI8QXRvbWljSFRNTFRva2VuPiBmYWtlVG9rZW4gPSBBdG9taWNIVE1MVG9rZW46OmNy
ZWF0ZShIVE1MVG9rZW46OlN0YXJ0VGFnLCB0YWdOYW1lLmxvY2FsTmFtZSgpLCBhdHRyaWJ1dGVz
KTsKICAgICBwcm9jZXNzU3RhcnRUYWcoZmFrZVRva2VuLmdldCgpKTsKIH0KIAogdm9pZCBIVE1M
VHJlZUJ1aWxkZXI6OnByb2Nlc3NGYWtlRW5kVGFnKGNvbnN0IEF0b21pY1N0cmluZyYgdGFnTmFt
ZSkKIHsKLSAgICBSZWZQdHI8QXRvbWljSFRNTFRva2VuPiBmYWtlVG9rZW4gPSBBdG9taWNIVE1M
VG9rZW46OmNyZWF0ZShIVE1MVG9rZW5UeXBlczo6RW5kVGFnLCB0YWdOYW1lKTsKKyAgICBSZWZQ
dHI8QXRvbWljSFRNTFRva2VuPiBmYWtlVG9rZW4gPSBBdG9taWNIVE1MVG9rZW46OmNyZWF0ZShI
VE1MVG9rZW46OkVuZFRhZywgdGFnTmFtZSk7CiAgICAgcHJvY2Vzc0VuZFRhZyhmYWtlVG9rZW4u
Z2V0KCkpOwogfQogCkBAIC00NTksNyArNDYwLDcgQEAgdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnBy
b2Nlc3NGYWtlUEVuZFRhZ0lmUEluQnV0dG9uU2NvcGUoKQogewogICAgIGlmICghbV90cmVlLm9w
ZW5FbGVtZW50cygpLT5pbkJ1dHRvblNjb3BlKHBUYWcubG9jYWxOYW1lKCkpKQogICAgICAgICBy
ZXR1cm47Ci0gICAgUmVmUHRyPEF0b21pY0hUTUxUb2tlbj4gZW5kUCA9IEF0b21pY0hUTUxUb2tl
bjo6Y3JlYXRlKEhUTUxUb2tlblR5cGVzOjpFbmRUYWcsIHBUYWcubG9jYWxOYW1lKCkpOworICAg
IFJlZlB0cjxBdG9taWNIVE1MVG9rZW4+IGVuZFAgPSBBdG9taWNIVE1MVG9rZW46OmNyZWF0ZShI
VE1MVG9rZW46OkVuZFRhZywgcFRhZy5sb2NhbE5hbWUoKSk7CiAgICAgcHJvY2Vzc0VuZFRhZyhl
bmRQLmdldCgpKTsKIH0KIApAQCAtNDc4LDcgKzQ3OSw3IEBAIFZlY3RvcjxBdHRyaWJ1dGU+IEhU
TUxUcmVlQnVpbGRlcjo6YXR0cmlidXRlc0ZvcklzaW5kZXhJbnB1dChBdG9taWNIVE1MVG9rZW4q
IHRvCiAKIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzSXNpbmRleFN0YXJ0VGFnRm9ySW5C
b2R5KEF0b21pY0hUTUxUb2tlbiogdG9rZW4pCiB7Ci0gICAgQVNTRVJUKHRva2VuLT50eXBlKCkg
PT0gSFRNTFRva2VuVHlwZXM6OlN0YXJ0VGFnKTsKKyAgICBBU1NFUlQodG9rZW4tPnR5cGUoKSA9
PSBIVE1MVG9rZW46OlN0YXJ0VGFnKTsKICAgICBBU1NFUlQodG9rZW4tPm5hbWUoKSA9PSBpc2lu
ZGV4VGFnKTsKICAgICBwYXJzZUVycm9yKHRva2VuKTsKICAgICBpZiAobV90cmVlLmZvcm0oKSkK
QEAgLTYzMCw3ICs2MzEsNyBAQCBzdGF0aWMgdm9pZCBhZGp1c3RGb3JlaWduQXR0cmlidXRlcyhB
dG9taWNIVE1MVG9rZW4qIHRva2VuKQogCiB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc1N0
YXJ0VGFnRm9ySW5Cb2R5KEF0b21pY0hUTUxUb2tlbiogdG9rZW4pCiB7Ci0gICAgQVNTRVJUKHRv
a2VuLT50eXBlKCkgPT0gSFRNTFRva2VuVHlwZXM6OlN0YXJ0VGFnKTsKKyAgICBBU1NFUlQodG9r
ZW4tPnR5cGUoKSA9PSBIVE1MVG9rZW46OlN0YXJ0VGFnKTsKICAgICBpZiAodG9rZW4tPm5hbWUo
KSA9PSBodG1sVGFnKSB7CiAgICAgICAgIHByb2Nlc3NIdG1sU3RhcnRUYWdGb3JJbkJvZHkodG9r
ZW4pOwogICAgICAgICByZXR1cm47CkBAIC04OTcsNyArODk4LDcgQEAgdm9pZCBIVE1MVHJlZUJ1
aWxkZXI6OnByb2Nlc3NTdGFydFRhZ0ZvckluQm9keShBdG9taWNIVE1MVG9rZW4qIHRva2VuKQog
ICAgIH0KICAgICBpZiAodG9rZW4tPm5hbWUoKSA9PSBvcHRncm91cFRhZyB8fCB0b2tlbi0+bmFt
ZSgpID09IG9wdGlvblRhZykgewogICAgICAgICBpZiAobV90cmVlLmN1cnJlbnRTdGFja0l0ZW0o
KS0+aGFzVGFnTmFtZShvcHRpb25UYWcpKSB7Ci0gICAgICAgICAgICBSZWZQdHI8QXRvbWljSFRN
TFRva2VuPiBlbmRPcHRpb24gPSBBdG9taWNIVE1MVG9rZW46OmNyZWF0ZShIVE1MVG9rZW5UeXBl
czo6RW5kVGFnLCBvcHRpb25UYWcubG9jYWxOYW1lKCkpOworICAgICAgICAgICAgUmVmUHRyPEF0
b21pY0hUTUxUb2tlbj4gZW5kT3B0aW9uID0gQXRvbWljSFRNTFRva2VuOjpjcmVhdGUoSFRNTFRv
a2VuOjpFbmRUYWcsIG9wdGlvblRhZy5sb2NhbE5hbWUoKSk7CiAgICAgICAgICAgICBwcm9jZXNz
RW5kVGFnKGVuZE9wdGlvbi5nZXQoKSk7CiAgICAgICAgIH0KICAgICAgICAgbV90cmVlLnJlY29u
c3RydWN0VGhlQWN0aXZlRm9ybWF0dGluZ0VsZW1lbnRzKCk7CkBAIC0xMDIxLDcgKzEwMjIsNyBA
QCB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6Y2xvc2VUaGVDZWxsKCkKIAogdm9pZCBIVE1MVHJlZUJ1
aWxkZXI6OnByb2Nlc3NTdGFydFRhZ0ZvckluVGFibGUoQXRvbWljSFRNTFRva2VuKiB0b2tlbikK
IHsKLSAgICBBU1NFUlQodG9rZW4tPnR5cGUoKSA9PSBIVE1MVG9rZW5UeXBlczo6U3RhcnRUYWcp
OworICAgIEFTU0VSVCh0b2tlbi0+dHlwZSgpID09IEhUTUxUb2tlbjo6U3RhcnRUYWcpOwogICAg
IGlmICh0b2tlbi0+bmFtZSgpID09IGNhcHRpb25UYWcpIHsKICAgICAgICAgbV90cmVlLm9wZW5F
bGVtZW50cygpLT5wb3BVbnRpbFRhYmxlU2NvcGVNYXJrZXIoKTsKICAgICAgICAgbV90cmVlLmFj
dGl2ZUZvcm1hdHRpbmdFbGVtZW50cygpLT5hcHBlbmRNYXJrZXIoKTsKQEAgLTEwOTcsNyArMTA5
OCw3IEBAIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzU3RhcnRUYWdGb3JJblRhYmxlKEF0
b21pY0hUTUxUb2tlbiogdG9rZW4pCiAKIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzU3Rh
cnRUYWcoQXRvbWljSFRNTFRva2VuKiB0b2tlbikKIHsKLSAgICBBU1NFUlQodG9rZW4tPnR5cGUo
KSA9PSBIVE1MVG9rZW5UeXBlczo6U3RhcnRUYWcpOworICAgIEFTU0VSVCh0b2tlbi0+dHlwZSgp
ID09IEhUTUxUb2tlbjo6U3RhcnRUYWcpOwogICAgIHN3aXRjaCAoaW5zZXJ0aW9uTW9kZSgpKSB7
CiAgICAgY2FzZSBJbml0aWFsTW9kZToKICAgICAgICAgQVNTRVJUKGluc2VydGlvbk1vZGUoKSA9
PSBJbml0aWFsTW9kZSk7CkBAIC0xMzY2LDcgKzEzNjcsNyBAQCB2b2lkIEhUTUxUcmVlQnVpbGRl
cjo6cHJvY2Vzc1N0YXJ0VGFnKEF0b21pY0hUTUxUb2tlbiogdG9rZW4pCiAgICAgICAgICAgICB8
fCB0b2tlbi0+bmFtZSgpID09IHRyVGFnCiAgICAgICAgICAgICB8fCBpc1RhYmxlQ2VsbENvbnRl
eHRUYWcodG9rZW4tPm5hbWUoKSkpIHsKICAgICAgICAgICAgIHBhcnNlRXJyb3IodG9rZW4pOwot
ICAgICAgICAgICAgUmVmUHRyPEF0b21pY0hUTUxUb2tlbj4gZW5kU2VsZWN0ID0gQXRvbWljSFRN
TFRva2VuOjpjcmVhdGUoSFRNTFRva2VuVHlwZXM6OkVuZFRhZywgc2VsZWN0VGFnLmxvY2FsTmFt
ZSgpKTsKKyAgICAgICAgICAgIFJlZlB0cjxBdG9taWNIVE1MVG9rZW4+IGVuZFNlbGVjdCA9IEF0
b21pY0hUTUxUb2tlbjo6Y3JlYXRlKEhUTUxUb2tlbjo6RW5kVGFnLCBzZWxlY3RUYWcubG9jYWxO
YW1lKCkpOwogICAgICAgICAgICAgcHJvY2Vzc0VuZFRhZyhlbmRTZWxlY3QuZ2V0KCkpOwogICAg
ICAgICAgICAgcHJvY2Vzc1N0YXJ0VGFnKHRva2VuKTsKICAgICAgICAgICAgIHJldHVybjsKQEAg
LTEzODAsNyArMTM4MSw3IEBAIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzU3RhcnRUYWco
QXRvbWljSFRNTFRva2VuKiB0b2tlbikKICAgICAgICAgfQogICAgICAgICBpZiAodG9rZW4tPm5h
bWUoKSA9PSBvcHRpb25UYWcpIHsKICAgICAgICAgICAgIGlmIChtX3RyZWUuY3VycmVudFN0YWNr
SXRlbSgpLT5oYXNUYWdOYW1lKG9wdGlvblRhZykpIHsKLSAgICAgICAgICAgICAgICBSZWZQdHI8
QXRvbWljSFRNTFRva2VuPiBlbmRPcHRpb24gPSBBdG9taWNIVE1MVG9rZW46OmNyZWF0ZShIVE1M
VG9rZW5UeXBlczo6RW5kVGFnLCBvcHRpb25UYWcubG9jYWxOYW1lKCkpOworICAgICAgICAgICAg
ICAgIFJlZlB0cjxBdG9taWNIVE1MVG9rZW4+IGVuZE9wdGlvbiA9IEF0b21pY0hUTUxUb2tlbjo6
Y3JlYXRlKEhUTUxUb2tlbjo6RW5kVGFnLCBvcHRpb25UYWcubG9jYWxOYW1lKCkpOwogICAgICAg
ICAgICAgICAgIHByb2Nlc3NFbmRUYWcoZW5kT3B0aW9uLmdldCgpKTsKICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgIG1fdHJlZS5pbnNlcnRIVE1MRWxlbWVudCh0b2tlbik7CkBAIC0xMzg4LDEx
ICsxMzg5LDExIEBAIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzU3RhcnRUYWcoQXRvbWlj
SFRNTFRva2VuKiB0b2tlbikKICAgICAgICAgfQogICAgICAgICBpZiAodG9rZW4tPm5hbWUoKSA9
PSBvcHRncm91cFRhZykgewogICAgICAgICAgICAgaWYgKG1fdHJlZS5jdXJyZW50U3RhY2tJdGVt
KCktPmhhc1RhZ05hbWUob3B0aW9uVGFnKSkgewotICAgICAgICAgICAgICAgIFJlZlB0cjxBdG9t
aWNIVE1MVG9rZW4+IGVuZE9wdGlvbiA9IEF0b21pY0hUTUxUb2tlbjo6Y3JlYXRlKEhUTUxUb2tl
blR5cGVzOjpFbmRUYWcsIG9wdGlvblRhZy5sb2NhbE5hbWUoKSk7CisgICAgICAgICAgICAgICAg
UmVmUHRyPEF0b21pY0hUTUxUb2tlbj4gZW5kT3B0aW9uID0gQXRvbWljSFRNTFRva2VuOjpjcmVh
dGUoSFRNTFRva2VuOjpFbmRUYWcsIG9wdGlvblRhZy5sb2NhbE5hbWUoKSk7CiAgICAgICAgICAg
ICAgICAgcHJvY2Vzc0VuZFRhZyhlbmRPcHRpb24uZ2V0KCkpOwogICAgICAgICAgICAgfQogICAg
ICAgICAgICAgaWYgKG1fdHJlZS5jdXJyZW50U3RhY2tJdGVtKCktPmhhc1RhZ05hbWUob3B0Z3Jv
dXBUYWcpKSB7Ci0gICAgICAgICAgICAgICAgUmVmUHRyPEF0b21pY0hUTUxUb2tlbj4gZW5kT3B0
Z3JvdXAgPSBBdG9taWNIVE1MVG9rZW46OmNyZWF0ZShIVE1MVG9rZW5UeXBlczo6RW5kVGFnLCBv
cHRncm91cFRhZy5sb2NhbE5hbWUoKSk7CisgICAgICAgICAgICAgICAgUmVmUHRyPEF0b21pY0hU
TUxUb2tlbj4gZW5kT3B0Z3JvdXAgPSBBdG9taWNIVE1MVG9rZW46OmNyZWF0ZShIVE1MVG9rZW46
OkVuZFRhZywgb3B0Z3JvdXBUYWcubG9jYWxOYW1lKCkpOwogICAgICAgICAgICAgICAgIHByb2Nl
c3NFbmRUYWcoZW5kT3B0Z3JvdXAuZ2V0KCkpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAg
bV90cmVlLmluc2VydEhUTUxFbGVtZW50KHRva2VuKTsKQEAgLTE0MDAsNyArMTQwMSw3IEBAIHZv
aWQgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzU3RhcnRUYWcoQXRvbWljSFRNTFRva2VuKiB0b2tl
bikKICAgICAgICAgfQogICAgICAgICBpZiAodG9rZW4tPm5hbWUoKSA9PSBzZWxlY3RUYWcpIHsK
ICAgICAgICAgICAgIHBhcnNlRXJyb3IodG9rZW4pOwotICAgICAgICAgICAgUmVmUHRyPEF0b21p
Y0hUTUxUb2tlbj4gZW5kU2VsZWN0ID0gQXRvbWljSFRNTFRva2VuOjpjcmVhdGUoSFRNTFRva2Vu
VHlwZXM6OkVuZFRhZywgc2VsZWN0VGFnLmxvY2FsTmFtZSgpKTsKKyAgICAgICAgICAgIFJlZlB0
cjxBdG9taWNIVE1MVG9rZW4+IGVuZFNlbGVjdCA9IEF0b21pY0hUTUxUb2tlbjo6Y3JlYXRlKEhU
TUxUb2tlbjo6RW5kVGFnLCBzZWxlY3RUYWcubG9jYWxOYW1lKCkpOwogICAgICAgICAgICAgcHJv
Y2Vzc0VuZFRhZyhlbmRTZWxlY3QuZ2V0KCkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICB9CkBAIC0xNDEyLDcgKzE0MTMsNyBAQCB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc1N0
YXJ0VGFnKEF0b21pY0hUTUxUb2tlbiogdG9rZW4pCiAgICAgICAgICAgICAgICAgQVNTRVJUKGlz
UGFyc2luZ0ZyYWdtZW50KCkpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIFJlZlB0cjxBdG9taWNIVE1MVG9rZW4+IGVuZFNlbGVjdCA9IEF0b21p
Y0hUTUxUb2tlbjo6Y3JlYXRlKEhUTUxUb2tlblR5cGVzOjpFbmRUYWcsIHNlbGVjdFRhZy5sb2Nh
bE5hbWUoKSk7CisgICAgICAgICAgICBSZWZQdHI8QXRvbWljSFRNTFRva2VuPiBlbmRTZWxlY3Qg
PSBBdG9taWNIVE1MVG9rZW46OmNyZWF0ZShIVE1MVG9rZW46OkVuZFRhZywgc2VsZWN0VGFnLmxv
Y2FsTmFtZSgpKTsKICAgICAgICAgICAgIHByb2Nlc3NFbmRUYWcoZW5kU2VsZWN0LmdldCgpKTsK
ICAgICAgICAgICAgIHByb2Nlc3NTdGFydFRhZyh0b2tlbik7CiAgICAgICAgICAgICByZXR1cm47
CkBAIC0xNDkyLDcgKzE0OTMsNyBAQCB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0h0bWxT
dGFydFRhZ0ZvckluQm9keShBdG9taWNIVE1MVG9rZW4qIHRva2VuKQogCiBib29sIEhUTUxUcmVl
QnVpbGRlcjo6cHJvY2Vzc0JvZHlFbmRUYWdGb3JJbkJvZHkoQXRvbWljSFRNTFRva2VuKiB0b2tl
bikKIHsKLSAgICBBU1NFUlQodG9rZW4tPnR5cGUoKSA9PSBIVE1MVG9rZW5UeXBlczo6RW5kVGFn
KTsKKyAgICBBU1NFUlQodG9rZW4tPnR5cGUoKSA9PSBIVE1MVG9rZW46OkVuZFRhZyk7CiAgICAg
QVNTRVJUKHRva2VuLT5uYW1lKCkgPT0gYm9keVRhZyk7CiAgICAgaWYgKCFtX3RyZWUub3BlbkVs
ZW1lbnRzKCktPmluU2NvcGUoYm9keVRhZy5sb2NhbE5hbWUoKSkpIHsKICAgICAgICAgcGFyc2VF
cnJvcih0b2tlbik7CkBAIC0xNTA1LDcgKzE1MDYsNyBAQCBib29sIEhUTUxUcmVlQnVpbGRlcjo6
cHJvY2Vzc0JvZHlFbmRUYWdGb3JJbkJvZHkoQXRvbWljSFRNTFRva2VuKiB0b2tlbikKIAogdm9p
ZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NBbnlPdGhlckVuZFRhZ0ZvckluQm9keShBdG9taWNI
VE1MVG9rZW4qIHRva2VuKQogewotICAgIEFTU0VSVCh0b2tlbi0+dHlwZSgpID09IEhUTUxUb2tl
blR5cGVzOjpFbmRUYWcpOworICAgIEFTU0VSVCh0b2tlbi0+dHlwZSgpID09IEhUTUxUb2tlbjo6
RW5kVGFnKTsKICAgICBIVE1MRWxlbWVudFN0YWNrOjpFbGVtZW50UmVjb3JkKiByZWNvcmQgPSBt
X3RyZWUub3BlbkVsZW1lbnRzKCktPnRvcFJlY29yZCgpOwogICAgIHdoaWxlICgxKSB7CiAgICAg
ICAgIFJlZlB0cjxIVE1MU3RhY2tJdGVtPiBpdGVtID0gcmVjb3JkLT5zdGFja0l0ZW0oKTsKQEAg
LTE3MDksNyArMTcxMCw3IEBAIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpyZXNldEluc2VydGlvbk1v
ZGVBcHByb3ByaWF0ZWx5KCkKIAogdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NFbmRUYWdG
b3JJblRhYmxlQm9keShBdG9taWNIVE1MVG9rZW4qIHRva2VuKQogewotICAgIEFTU0VSVCh0b2tl
bi0+dHlwZSgpID09IEhUTUxUb2tlblR5cGVzOjpFbmRUYWcpOworICAgIEFTU0VSVCh0b2tlbi0+
dHlwZSgpID09IEhUTUxUb2tlbjo6RW5kVGFnKTsKICAgICBpZiAoaXNUYWJsZUJvZHlDb250ZXh0
VGFnKHRva2VuLT5uYW1lKCkpKSB7CiAgICAgICAgIGlmICghbV90cmVlLm9wZW5FbGVtZW50cygp
LT5pblRhYmxlU2NvcGUodG9rZW4tPm5hbWUoKSkpIHsKICAgICAgICAgICAgIHBhcnNlRXJyb3Io
dG9rZW4pOwpAQCAtMTc0Niw3ICsxNzQ3LDcgQEAgdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nl
c3NFbmRUYWdGb3JJblRhYmxlQm9keShBdG9taWNIVE1MVG9rZW4qIHRva2VuKQogCiB2b2lkIEhU
TUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0VuZFRhZ0ZvckluUm93KEF0b21pY0hUTUxUb2tlbiogdG9r
ZW4pCiB7Ci0gICAgQVNTRVJUKHRva2VuLT50eXBlKCkgPT0gSFRNTFRva2VuVHlwZXM6OkVuZFRh
Zyk7CisgICAgQVNTRVJUKHRva2VuLT50eXBlKCkgPT0gSFRNTFRva2VuOjpFbmRUYWcpOwogICAg
IGlmICh0b2tlbi0+bmFtZSgpID09IHRyVGFnKSB7CiAgICAgICAgIHByb2Nlc3NUckVuZFRhZ0Zv
ckluUm93KCk7CiAgICAgICAgIHJldHVybjsKQEAgLTE3ODIsNyArMTc4Myw3IEBAIHZvaWQgSFRN
TFRyZWVCdWlsZGVyOjpwcm9jZXNzRW5kVGFnRm9ySW5Sb3coQXRvbWljSFRNTFRva2VuKiB0b2tl
bikKIAogdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NFbmRUYWdGb3JJbkNlbGwoQXRvbWlj
SFRNTFRva2VuKiB0b2tlbikKIHsKLSAgICBBU1NFUlQodG9rZW4tPnR5cGUoKSA9PSBIVE1MVG9r
ZW5UeXBlczo6RW5kVGFnKTsKKyAgICBBU1NFUlQodG9rZW4tPnR5cGUoKSA9PSBIVE1MVG9rZW46
OkVuZFRhZyk7CiAgICAgaWYgKGlzVGFibGVDZWxsQ29udGV4dFRhZyh0b2tlbi0+bmFtZSgpKSkg
ewogICAgICAgICBpZiAoIW1fdHJlZS5vcGVuRWxlbWVudHMoKS0+aW5UYWJsZVNjb3BlKHRva2Vu
LT5uYW1lKCkpKSB7CiAgICAgICAgICAgICBwYXJzZUVycm9yKHRva2VuKTsKQEAgLTE4MjMsMTMg
KzE4MjQsMTMgQEAgdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NFbmRUYWdGb3JJbkNlbGwo
QXRvbWljSFRNTFRva2VuKiB0b2tlbikKIAogdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NF
bmRUYWdGb3JJbkJvZHkoQXRvbWljSFRNTFRva2VuKiB0b2tlbikKIHsKLSAgICBBU1NFUlQodG9r
ZW4tPnR5cGUoKSA9PSBIVE1MVG9rZW5UeXBlczo6RW5kVGFnKTsKKyAgICBBU1NFUlQodG9rZW4t
PnR5cGUoKSA9PSBIVE1MVG9rZW46OkVuZFRhZyk7CiAgICAgaWYgKHRva2VuLT5uYW1lKCkgPT0g
Ym9keVRhZykgewogICAgICAgICBwcm9jZXNzQm9keUVuZFRhZ0ZvckluQm9keSh0b2tlbik7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAgICAgaWYgKHRva2VuLT5uYW1lKCkgPT0gaHRtbFRhZykg
ewotICAgICAgICBSZWZQdHI8QXRvbWljSFRNTFRva2VuPiBlbmRCb2R5ID0gQXRvbWljSFRNTFRv
a2VuOjpjcmVhdGUoSFRNTFRva2VuVHlwZXM6OkVuZFRhZywgYm9keVRhZy5sb2NhbE5hbWUoKSk7
CisgICAgICAgIFJlZlB0cjxBdG9taWNIVE1MVG9rZW4+IGVuZEJvZHkgPSBBdG9taWNIVE1MVG9r
ZW46OmNyZWF0ZShIVE1MVG9rZW46OkVuZFRhZywgYm9keVRhZy5sb2NhbE5hbWUoKSk7CiAgICAg
ICAgIGlmIChwcm9jZXNzQm9keUVuZFRhZ0ZvckluQm9keShlbmRCb2R5LmdldCgpKSkKICAgICAg
ICAgICAgIHByb2Nlc3NFbmRUYWcodG9rZW4pOwogICAgICAgICByZXR1cm47CkBAIC0yMDAzLDcg
KzIwMDQsNyBAQCBib29sIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc1RhYmxlRW5kVGFnRm9ySW5U
YWJsZSgpCiAKIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzRW5kVGFnRm9ySW5UYWJsZShB
dG9taWNIVE1MVG9rZW4qIHRva2VuKQogewotICAgIEFTU0VSVCh0b2tlbi0+dHlwZSgpID09IEhU
TUxUb2tlblR5cGVzOjpFbmRUYWcpOworICAgIEFTU0VSVCh0b2tlbi0+dHlwZSgpID09IEhUTUxU
b2tlbjo6RW5kVGFnKTsKICAgICBpZiAodG9rZW4tPm5hbWUoKSA9PSB0YWJsZVRhZykgewogICAg
ICAgICBwcm9jZXNzVGFibGVFbmRUYWdGb3JJblRhYmxlKCk7CiAgICAgICAgIHJldHVybjsKQEAg
LTIwMjUsNyArMjAyNiw3IEBAIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzRW5kVGFnRm9y
SW5UYWJsZShBdG9taWNIVE1MVG9rZW4qIHRva2VuKQogCiB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6
cHJvY2Vzc0VuZFRhZyhBdG9taWNIVE1MVG9rZW4qIHRva2VuKQogewotICAgIEFTU0VSVCh0b2tl
bi0+dHlwZSgpID09IEhUTUxUb2tlblR5cGVzOjpFbmRUYWcpOworICAgIEFTU0VSVCh0b2tlbi0+
dHlwZSgpID09IEhUTUxUb2tlbjo6RW5kVGFnKTsKICAgICBzd2l0Y2ggKGluc2VydGlvbk1vZGUo
KSkgewogICAgIGNhc2UgSW5pdGlhbE1vZGU6CiAgICAgICAgIEFTU0VSVChpbnNlcnRpb25Nb2Rl
KCkgPT0gSW5pdGlhbE1vZGUpOwpAQCAtMjI0Niw3ICsyMjQ3LDcgQEAgdm9pZCBIVE1MVHJlZUJ1
aWxkZXI6OnByb2Nlc3NFbmRUYWcoQXRvbWljSFRNTFRva2VuKiB0b2tlbikKICAgICAgICAgICAg
IHx8IGlzVGFibGVDZWxsQ29udGV4dFRhZyh0b2tlbi0+bmFtZSgpKSkgewogICAgICAgICAgICAg
cGFyc2VFcnJvcih0b2tlbik7CiAgICAgICAgICAgICBpZiAobV90cmVlLm9wZW5FbGVtZW50cygp
LT5pblRhYmxlU2NvcGUodG9rZW4tPm5hbWUoKSkpIHsKLSAgICAgICAgICAgICAgICBSZWZQdHI8
QXRvbWljSFRNTFRva2VuPiBlbmRTZWxlY3QgPSBBdG9taWNIVE1MVG9rZW46OmNyZWF0ZShIVE1M
VG9rZW5UeXBlczo6RW5kVGFnLCBzZWxlY3RUYWcubG9jYWxOYW1lKCkpOworICAgICAgICAgICAg
ICAgIFJlZlB0cjxBdG9taWNIVE1MVG9rZW4+IGVuZFNlbGVjdCA9IEF0b21pY0hUTUxUb2tlbjo6
Y3JlYXRlKEhUTUxUb2tlbjo6RW5kVGFnLCBzZWxlY3RUYWcubG9jYWxOYW1lKCkpOwogICAgICAg
ICAgICAgICAgIHByb2Nlc3NFbmRUYWcoZW5kU2VsZWN0LmdldCgpKTsKICAgICAgICAgICAgICAg
ICBwcm9jZXNzRW5kVGFnKHRva2VuKTsKICAgICAgICAgICAgIH0KQEAgLTIzMTEsNyArMjMxMiw3
IEBAIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzRW5kVGFnKEF0b21pY0hUTUxUb2tlbiog
dG9rZW4pCiAKIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzQ29tbWVudChBdG9taWNIVE1M
VG9rZW4qIHRva2VuKQogewotICAgIEFTU0VSVCh0b2tlbi0+dHlwZSgpID09IEhUTUxUb2tlblR5
cGVzOjpDb21tZW50KTsKKyAgICBBU1NFUlQodG9rZW4tPnR5cGUoKSA9PSBIVE1MVG9rZW46OkNv
bW1lbnQpOwogICAgIGlmIChtX2luc2VydGlvbk1vZGUgPT0gSW5pdGlhbE1vZGUKICAgICAgICAg
fHwgbV9pbnNlcnRpb25Nb2RlID09IEJlZm9yZUhUTUxNb2RlCiAgICAgICAgIHx8IG1faW5zZXJ0
aW9uTW9kZSA9PSBBZnRlckFmdGVyQm9keU1vZGUKQEAgLTIzMzMsNyArMjMzNCw3IEBAIHZvaWQg
SFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzQ29tbWVudChBdG9taWNIVE1MVG9rZW4qIHRva2VuKQog
CiB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0NoYXJhY3RlcihBdG9taWNIVE1MVG9rZW4q
IHRva2VuKQogewotICAgIEFTU0VSVCh0b2tlbi0+dHlwZSgpID09IEhUTUxUb2tlblR5cGVzOjpD
aGFyYWN0ZXIpOworICAgIEFTU0VSVCh0b2tlbi0+dHlwZSgpID09IEhUTUxUb2tlbjo6Q2hhcmFj
dGVyKTsKICAgICBFeHRlcm5hbENoYXJhY3RlclRva2VuQnVmZmVyIGJ1ZmZlcih0b2tlbik7CiAg
ICAgcHJvY2Vzc0NoYXJhY3RlckJ1ZmZlcihidWZmZXIpOwogfQpAQCAtMjY0MiwzMiArMjY0Mywz
MiBAQCB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6ZGVmYXVsdEZvckluaXRpYWwoKQogCiB2b2lkIEhU
TUxUcmVlQnVpbGRlcjo6ZGVmYXVsdEZvckJlZm9yZUhUTUwoKQogewotICAgIFJlZlB0cjxBdG9t
aWNIVE1MVG9rZW4+IHN0YXJ0SFRNTCA9IEF0b21pY0hUTUxUb2tlbjo6Y3JlYXRlKEhUTUxUb2tl
blR5cGVzOjpTdGFydFRhZywgaHRtbFRhZy5sb2NhbE5hbWUoKSk7CisgICAgUmVmUHRyPEF0b21p
Y0hUTUxUb2tlbj4gc3RhcnRIVE1MID0gQXRvbWljSFRNTFRva2VuOjpjcmVhdGUoSFRNTFRva2Vu
OjpTdGFydFRhZywgaHRtbFRhZy5sb2NhbE5hbWUoKSk7CiAgICAgbV90cmVlLmluc2VydEhUTUxI
dG1sU3RhcnRUYWdCZWZvcmVIVE1MKHN0YXJ0SFRNTC5nZXQoKSk7CiAgICAgc2V0SW5zZXJ0aW9u
TW9kZShCZWZvcmVIZWFkTW9kZSk7CiB9CiAKIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpkZWZhdWx0
Rm9yQmVmb3JlSGVhZCgpCiB7Ci0gICAgUmVmUHRyPEF0b21pY0hUTUxUb2tlbj4gc3RhcnRIZWFk
ID0gQXRvbWljSFRNTFRva2VuOjpjcmVhdGUoSFRNTFRva2VuVHlwZXM6OlN0YXJ0VGFnLCBoZWFk
VGFnLmxvY2FsTmFtZSgpKTsKKyAgICBSZWZQdHI8QXRvbWljSFRNTFRva2VuPiBzdGFydEhlYWQg
PSBBdG9taWNIVE1MVG9rZW46OmNyZWF0ZShIVE1MVG9rZW46OlN0YXJ0VGFnLCBoZWFkVGFnLmxv
Y2FsTmFtZSgpKTsKICAgICBwcm9jZXNzU3RhcnRUYWcoc3RhcnRIZWFkLmdldCgpKTsKIH0KIAog
dm9pZCBIVE1MVHJlZUJ1aWxkZXI6OmRlZmF1bHRGb3JJbkhlYWQoKQogewotICAgIFJlZlB0cjxB
dG9taWNIVE1MVG9rZW4+IGVuZEhlYWQgPSBBdG9taWNIVE1MVG9rZW46OmNyZWF0ZShIVE1MVG9r
ZW5UeXBlczo6RW5kVGFnLCBoZWFkVGFnLmxvY2FsTmFtZSgpKTsKKyAgICBSZWZQdHI8QXRvbWlj
SFRNTFRva2VuPiBlbmRIZWFkID0gQXRvbWljSFRNTFRva2VuOjpjcmVhdGUoSFRNTFRva2VuOjpF
bmRUYWcsIGhlYWRUYWcubG9jYWxOYW1lKCkpOwogICAgIHByb2Nlc3NFbmRUYWcoZW5kSGVhZC5n
ZXQoKSk7CiB9CiAKIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpkZWZhdWx0Rm9ySW5IZWFkTm9zY3Jp
cHQoKQogewotICAgIFJlZlB0cjxBdG9taWNIVE1MVG9rZW4+IGVuZE5vc2NyaXB0ID0gQXRvbWlj
SFRNTFRva2VuOjpjcmVhdGUoSFRNTFRva2VuVHlwZXM6OkVuZFRhZywgbm9zY3JpcHRUYWcubG9j
YWxOYW1lKCkpOworICAgIFJlZlB0cjxBdG9taWNIVE1MVG9rZW4+IGVuZE5vc2NyaXB0ID0gQXRv
bWljSFRNTFRva2VuOjpjcmVhdGUoSFRNTFRva2VuOjpFbmRUYWcsIG5vc2NyaXB0VGFnLmxvY2Fs
TmFtZSgpKTsKICAgICBwcm9jZXNzRW5kVGFnKGVuZE5vc2NyaXB0LmdldCgpKTsKIH0KIAogdm9p
ZCBIVE1MVHJlZUJ1aWxkZXI6OmRlZmF1bHRGb3JBZnRlckhlYWQoKQogewotICAgIFJlZlB0cjxB
dG9taWNIVE1MVG9rZW4+IHN0YXJ0Qm9keSA9IEF0b21pY0hUTUxUb2tlbjo6Y3JlYXRlKEhUTUxU
b2tlblR5cGVzOjpTdGFydFRhZywgYm9keVRhZy5sb2NhbE5hbWUoKSk7CisgICAgUmVmUHRyPEF0
b21pY0hUTUxUb2tlbj4gc3RhcnRCb2R5ID0gQXRvbWljSFRNTFRva2VuOjpjcmVhdGUoSFRNTFRv
a2VuOjpTdGFydFRhZywgYm9keVRhZy5sb2NhbE5hbWUoKSk7CiAgICAgcHJvY2Vzc1N0YXJ0VGFn
KHN0YXJ0Qm9keS5nZXQoKSk7CiAgICAgbV9mcmFtZXNldE9rID0gdHJ1ZTsKIH0KQEAgLTI2OTEs
NyArMjY5Miw3IEBAIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpkZWZhdWx0Rm9ySW5UYWJsZVRleHQo
KQogCiBib29sIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc1N0YXJ0VGFnRm9ySW5IZWFkKEF0b21p
Y0hUTUxUb2tlbiogdG9rZW4pCiB7Ci0gICAgQVNTRVJUKHRva2VuLT50eXBlKCkgPT0gSFRNTFRv
a2VuVHlwZXM6OlN0YXJ0VGFnKTsKKyAgICBBU1NFUlQodG9rZW4tPnR5cGUoKSA9PSBIVE1MVG9r
ZW46OlN0YXJ0VGFnKTsKICAgICBpZiAodG9rZW4tPm5hbWUoKSA9PSBodG1sVGFnKSB7CiAgICAg
ICAgIHByb2Nlc3NIdG1sU3RhcnRUYWdGb3JJbkJvZHkodG9rZW4pOwogICAgICAgICByZXR1cm4g
dHJ1ZTsKQEAgLTI3NDQsNyArMjc0NSw3IEBAIGJvb2wgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNz
U3RhcnRUYWdGb3JJbkhlYWQoQXRvbWljSFRNTFRva2VuKiB0b2tlbikKIAogdm9pZCBIVE1MVHJl
ZUJ1aWxkZXI6OnByb2Nlc3NHZW5lcmljUkNEQVRBU3RhcnRUYWcoQXRvbWljSFRNTFRva2VuKiB0
b2tlbikKIHsKLSAgICBBU1NFUlQodG9rZW4tPnR5cGUoKSA9PSBIVE1MVG9rZW5UeXBlczo6U3Rh
cnRUYWcpOworICAgIEFTU0VSVCh0b2tlbi0+dHlwZSgpID09IEhUTUxUb2tlbjo6U3RhcnRUYWcp
OwogICAgIG1fdHJlZS5pbnNlcnRIVE1MRWxlbWVudCh0b2tlbik7CiAgICAgaWYgKG1fcGFyc2Vy
LT50b2tlbml6ZXIoKSkKICAgICAgICAgbV9wYXJzZXItPnRva2VuaXplcigpLT5zZXRTdGF0ZShI
VE1MVG9rZW5pemVyOjpSQ0RBVEFTdGF0ZSk7CkBAIC0yNzU0LDcgKzI3NTUsNyBAQCB2b2lkIEhU
TUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0dlbmVyaWNSQ0RBVEFTdGFydFRhZyhBdG9taWNIVE1MVG9r
ZW4qIHRva2VuKQogCiB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0dlbmVyaWNSYXdUZXh0
U3RhcnRUYWcoQXRvbWljSFRNTFRva2VuKiB0b2tlbikKIHsKLSAgICBBU1NFUlQodG9rZW4tPnR5
cGUoKSA9PSBIVE1MVG9rZW5UeXBlczo6U3RhcnRUYWcpOworICAgIEFTU0VSVCh0b2tlbi0+dHlw
ZSgpID09IEhUTUxUb2tlbjo6U3RhcnRUYWcpOwogICAgIG1fdHJlZS5pbnNlcnRIVE1MRWxlbWVu
dCh0b2tlbik7CiAgICAgaWYgKG1fcGFyc2VyLT50b2tlbml6ZXIoKSkKICAgICAgICAgbV9wYXJz
ZXItPnRva2VuaXplcigpLT5zZXRTdGF0ZShIVE1MVG9rZW5pemVyOjpSQVdURVhUU3RhdGUpOwpA
QCAtMjc2NCw3ICsyNzY1LDcgQEAgdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NHZW5lcmlj
UmF3VGV4dFN0YXJ0VGFnKEF0b21pY0hUTUxUb2tlbiogdG9rZW4pCiAKIHZvaWQgSFRNTFRyZWVC
dWlsZGVyOjpwcm9jZXNzU2NyaXB0U3RhcnRUYWcoQXRvbWljSFRNTFRva2VuKiB0b2tlbikKIHsK
LSAgICBBU1NFUlQodG9rZW4tPnR5cGUoKSA9PSBIVE1MVG9rZW5UeXBlczo6U3RhcnRUYWcpOwor
ICAgIEFTU0VSVCh0b2tlbi0+dHlwZSgpID09IEhUTUxUb2tlbjo6U3RhcnRUYWcpOwogICAgIG1f
dHJlZS5pbnNlcnRTY3JpcHRFbGVtZW50KHRva2VuKTsKICAgICBpZiAobV9wYXJzZXItPnRva2Vu
aXplcigpKQogICAgICAgICBtX3BhcnNlci0+dG9rZW5pemVyKCktPnNldFN0YXRlKEhUTUxUb2tl
bml6ZXI6OlNjcmlwdERhdGFTdGF0ZSk7CkBAIC0yNzg2LDI0ICsyNzg3LDI0IEBAIGJvb2wgSFRN
TFRyZWVCdWlsZGVyOjpzaG91bGRQcm9jZXNzVG9rZW5JbkZvcmVpZ25Db250ZW50KEF0b21pY0hU
TUxUb2tlbiogdG9rZW4pCiAgICAgaWYgKGl0ZW0tPmlzSW5IVE1MTmFtZXNwYWNlKCkpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoSFRNTEVsZW1lbnRTdGFjazo6aXNNYXRoTUxUZXh0
SW50ZWdyYXRpb25Qb2ludChpdGVtKSkgewotICAgICAgICBpZiAodG9rZW4tPnR5cGUoKSA9PSBI
VE1MVG9rZW5UeXBlczo6U3RhcnRUYWcKKyAgICAgICAgaWYgKHRva2VuLT50eXBlKCkgPT0gSFRN
TFRva2VuOjpTdGFydFRhZwogICAgICAgICAgICAgJiYgdG9rZW4tPm5hbWUoKSAhPSBNYXRoTUxO
YW1lczo6bWdseXBoVGFnCiAgICAgICAgICAgICAmJiB0b2tlbi0+bmFtZSgpICE9IE1hdGhNTE5h
bWVzOjptYWxpZ25tYXJrVGFnKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBp
ZiAodG9rZW4tPnR5cGUoKSA9PSBIVE1MVG9rZW5UeXBlczo6Q2hhcmFjdGVyKQorICAgICAgICBp
ZiAodG9rZW4tPnR5cGUoKSA9PSBIVE1MVG9rZW46OkNoYXJhY3RlcikKICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICB9CiAgICAgaWYgKGl0ZW0tPmhhc1RhZ05hbWUoTWF0aE1MTmFtZXM6
OmFubm90YXRpb25feG1sVGFnKQotICAgICAgICAmJiB0b2tlbi0+dHlwZSgpID09IEhUTUxUb2tl
blR5cGVzOjpTdGFydFRhZworICAgICAgICAmJiB0b2tlbi0+dHlwZSgpID09IEhUTUxUb2tlbjo6
U3RhcnRUYWcKICAgICAgICAgJiYgdG9rZW4tPm5hbWUoKSA9PSBTVkdOYW1lczo6c3ZnVGFnKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKEhUTUxFbGVtZW50U3RhY2s6OmlzSFRNTElu
dGVncmF0aW9uUG9pbnQoaXRlbSkpIHsKLSAgICAgICAgaWYgKHRva2VuLT50eXBlKCkgPT0gSFRN
TFRva2VuVHlwZXM6OlN0YXJ0VGFnKQorICAgICAgICBpZiAodG9rZW4tPnR5cGUoKSA9PSBIVE1M
VG9rZW46OlN0YXJ0VGFnKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBpZiAo
dG9rZW4tPnR5cGUoKSA9PSBIVE1MVG9rZW5UeXBlczo6Q2hhcmFjdGVyKQorICAgICAgICBpZiAo
dG9rZW4tPnR5cGUoKSA9PSBIVE1MVG9rZW46OkNoYXJhY3RlcikKICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICB9Ci0gICAgaWYgKHRva2VuLT50eXBlKCkgPT0gSFRNTFRva2VuVHlwZXM6
OkVuZE9mRmlsZSkKKyAgICBpZiAodG9rZW4tPnR5cGUoKSA9PSBIVE1MVG9rZW46OkVuZE9mRmls
ZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHJldHVybiB0cnVlOwogfQpAQCAtMjgxMSwx
MyArMjgxMiwxMyBAQCBib29sIEhUTUxUcmVlQnVpbGRlcjo6c2hvdWxkUHJvY2Vzc1Rva2VuSW5G
b3JlaWduQ29udGVudChBdG9taWNIVE1MVG9rZW4qIHRva2VuKQogdm9pZCBIVE1MVHJlZUJ1aWxk
ZXI6OnByb2Nlc3NUb2tlbkluRm9yZWlnbkNvbnRlbnQoQXRvbWljSFRNTFRva2VuKiB0b2tlbikK
IHsKICAgICBzd2l0Y2ggKHRva2VuLT50eXBlKCkpIHsKLSAgICBjYXNlIEhUTUxUb2tlblR5cGVz
OjpVbmluaXRpYWxpemVkOgorICAgIGNhc2UgSFRNTFRva2VuOjpVbmluaXRpYWxpemVkOgogICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBIVE1M
VG9rZW5UeXBlczo6RE9DVFlQRToKKyAgICBjYXNlIEhUTUxUb2tlbjo6RE9DVFlQRToKICAgICAg
ICAgcGFyc2VFcnJvcih0b2tlbik7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgSFRNTFRva2Vu
VHlwZXM6OlN0YXJ0VGFnOiB7CisgICAgY2FzZSBIVE1MVG9rZW46OlN0YXJ0VGFnOiB7CiAgICAg
ICAgIGlmICh0b2tlbi0+bmFtZSgpID09IGJUYWcKICAgICAgICAgICAgIHx8IHRva2VuLT5uYW1l
KCkgPT0gYmlnVGFnCiAgICAgICAgICAgICB8fCB0b2tlbi0+bmFtZSgpID09IGJsb2NrcXVvdGVU
YWcKQEAgLTI4NzQsNyArMjg3NSw3IEBAIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzVG9r
ZW5JbkZvcmVpZ25Db250ZW50KEF0b21pY0hUTUxUb2tlbiogdG9rZW4pCiAgICAgICAgIG1fdHJl
ZS5pbnNlcnRGb3JlaWduRWxlbWVudCh0b2tlbiwgY3VycmVudE5hbWVzcGFjZSk7CiAgICAgICAg
IGJyZWFrOwogICAgIH0KLSAgICBjYXNlIEhUTUxUb2tlblR5cGVzOjpFbmRUYWc6IHsKKyAgICBj
YXNlIEhUTUxUb2tlbjo6RW5kVGFnOiB7CiAgICAgICAgIGlmIChtX3RyZWUuY3VycmVudFN0YWNr
SXRlbSgpLT5uYW1lc3BhY2VVUkkoKSA9PSBTVkdOYW1lczo6c3ZnTmFtZXNwYWNlVVJJKQogICAg
ICAgICAgICAgYWRqdXN0U1ZHVGFnTmFtZUNhc2UodG9rZW4pOwogCkBAIC0yOTAzLDE3ICsyOTA0
LDE3IEBAIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzVG9rZW5JbkZvcmVpZ25Db250ZW50
KEF0b21pY0hUTUxUb2tlbiogdG9rZW4pCiAgICAgICAgIHByb2Nlc3NFbmRUYWcodG9rZW4pOwog
ICAgICAgICBicmVhazsKICAgICB9Ci0gICAgY2FzZSBIVE1MVG9rZW5UeXBlczo6Q29tbWVudDoK
KyAgICBjYXNlIEhUTUxUb2tlbjo6Q29tbWVudDoKICAgICAgICAgbV90cmVlLmluc2VydENvbW1l
bnQodG9rZW4pOwogICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBIVE1MVG9rZW5UeXBlczo6Q2hh
cmFjdGVyOiB7CisgICAgY2FzZSBIVE1MVG9rZW46OkNoYXJhY3RlcjogewogICAgICAgICBTdHJp
bmcgY2hhcmFjdGVycyA9IFN0cmluZyh0b2tlbi0+Y2hhcmFjdGVycygpLCB0b2tlbi0+Y2hhcmFj
dGVyc0xlbmd0aCgpKTsKICAgICAgICAgbV90cmVlLmluc2VydFRleHROb2RlKGNoYXJhY3RlcnMp
OwogICAgICAgICBpZiAobV9mcmFtZXNldE9rICYmICFpc0FsbFdoaXRlc3BhY2VPclJlcGxhY2Vt
ZW50Q2hhcmFjdGVycyhjaGFyYWN0ZXJzKSkKICAgICAgICAgICAgIG1fZnJhbWVzZXRPayA9IGZh
bHNlOwogICAgICAgICBicmVhazsKICAgICB9Ci0gICAgY2FzZSBIVE1MVG9rZW5UeXBlczo6RW5k
T2ZGaWxlOgorICAgIGNhc2UgSFRNTFRva2VuOjpFbmRPZkZpbGU6CiAgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwogICAgICAgICBicmVhazsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVmlld1NvdXJjZVBhcnNlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3BhcnNlci9IVE1MVmlld1NvdXJjZVBhcnNlci5jcHAKaW5kZXggMTA2YmUzMTRh
NTQzMTRlMDhkNTJiZjhlM2MxNWQyYWNlOTI5YzcxYS4uYTVmNDdmMGEyZDMxN2I2ZTg1MGNiNWY2
ZDAyNDAyOWFkYTMyNWJkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIv
SFRNTFZpZXdTb3VyY2VQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2Vy
L0hUTUxWaWV3U291cmNlUGFyc2VyLmNwcApAQCAtNzYsNyArNzYsNyBAQCBTdHJpbmcgSFRNTFZp
ZXdTb3VyY2VQYXJzZXI6OnNvdXJjZUZvclRva2VuKCkKIHZvaWQgSFRNTFZpZXdTb3VyY2VQYXJz
ZXI6OnVwZGF0ZVRva2VuaXplclN0YXRlKCkKIHsKICAgICAvLyBGSVhNRTogVGhlIHRva2VuaXpl
ciBzaG91bGQgZG8gdGhpcyB3b3JrIGZvciB1cy4KLSAgICBpZiAobV90b2tlbi50eXBlKCkgIT0g
SFRNTFRva2VuVHlwZXM6OlN0YXJ0VGFnKQorICAgIGlmIChtX3Rva2VuLnR5cGUoKSAhPSBIVE1M
VG9rZW46OlN0YXJ0VGFnKQogICAgICAgICByZXR1cm47CiAKICAgICBBdG9taWNTdHJpbmcgdGFn
TmFtZShtX3Rva2VuLm5hbWUoKS5kYXRhKCksIG1fdG9rZW4ubmFtZSgpLnNpemUoKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9UZXh0RG9jdW1lbnRQYXJzZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvVGV4dERvY3VtZW50UGFyc2VyLmNwcAppbmRl
eCBmZDEwMmNiYTg0ZjQ1OGFhMWRjMTg2NjJlN2I4NDkxNDZmNjBlMDVlLi4zOTFmY2FjMGVjMzVj
NjZjZTA1OGViODJhNDgxOTJiZjZjZTJjNzA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3BhcnNlci9UZXh0RG9jdW1lbnRQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvcGFyc2VyL1RleHREb2N1bWVudFBhcnNlci5jcHAKQEAgLTYwLDcgKzYwLDcgQEAgdm9pZCBU
ZXh0RG9jdW1lbnRQYXJzZXI6Omluc2VydEZha2VQcmVFbGVtZW50KCkKICAgICAvLyBkaXN0cnVi
aW5nIHRoZSBsaW5lL2NvbHVtbiBudW1iZXIgY2FsY3VsYXRpb25zLgogICAgIFZlY3RvcjxBdHRy
aWJ1dGU+IGF0dHJpYnV0ZXM7CiAgICAgYXR0cmlidXRlcy5hcHBlbmQoQXR0cmlidXRlKHN0eWxl
QXR0ciwgIndvcmQtd3JhcDogYnJlYWstd29yZDsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyIpKTsK
LSAgICBSZWZQdHI8QXRvbWljSFRNTFRva2VuPiBmYWtlUHJlID0gQXRvbWljSFRNTFRva2VuOjpj
cmVhdGUoSFRNTFRva2VuVHlwZXM6OlN0YXJ0VGFnLCBwcmVUYWcubG9jYWxOYW1lKCksIGF0dHJp
YnV0ZXMpOworICAgIFJlZlB0cjxBdG9taWNIVE1MVG9rZW4+IGZha2VQcmUgPSBBdG9taWNIVE1M
VG9rZW46OmNyZWF0ZShIVE1MVG9rZW46OlN0YXJ0VGFnLCBwcmVUYWcubG9jYWxOYW1lKCksIGF0
dHJpYnV0ZXMpOwogICAgIHRyZWVCdWlsZGVyKCktPmNvbnN0cnVjdFRyZWUoZmFrZVByZS5nZXQo
KSk7CiAKICAgICAvLyBOb3JtYWxseSB3ZSB3b3VsZCBza2lwIHRoZSBmaXJzdCBcbiBhZnRlciBh
IDxwcmU+IGVsZW1lbnQsIGJ1dCB3ZSBkb24ndApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9wYXJzZXIvWFNTQXVkaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9Y
U1NBdWRpdG9yLmNwcAppbmRleCA5ZGNjOGI1NDczN2JlN2FlNDU1ZTZhMjJmZTBhMDA5MzgwMWU1
NTZhLi5kZTU0ZDIyNTMyN2VkYzc5MDY3YjIxOWFjNjhhZGEwM2YyYjY5MDhlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9YU1NBdWRpdG9yLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3BhcnNlci9YU1NBdWRpdG9yLmNwcApAQCAtMjg0LDEyICsyODQsMTIgQEAg
UGFzc093blB0cjxYU1NJbmZvPiBYU1NBdWRpdG9yOjpmaWx0ZXJUb2tlbihjb25zdCBGaWx0ZXJU
b2tlblJlcXVlc3QmIHJlcXVlc3QpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgYm9v
bCBkaWRCbG9ja1NjcmlwdCA9IGZhbHNlOwotICAgIGlmIChyZXF1ZXN0LnRva2VuLnR5cGUoKSA9
PSBIVE1MVG9rZW5UeXBlczo6U3RhcnRUYWcpCisgICAgaWYgKHJlcXVlc3QudG9rZW4udHlwZSgp
ID09IEhUTUxUb2tlbjo6U3RhcnRUYWcpCiAgICAgICAgIGRpZEJsb2NrU2NyaXB0ID0gZmlsdGVy
U3RhcnRUb2tlbihyZXF1ZXN0KTsKICAgICBlbHNlIGlmIChtX3NjcmlwdFRhZ05lc3RpbmdMZXZl
bCkgewotICAgICAgICBpZiAocmVxdWVzdC50b2tlbi50eXBlKCkgPT0gSFRNTFRva2VuVHlwZXM6
OkNoYXJhY3RlcikKKyAgICAgICAgaWYgKHJlcXVlc3QudG9rZW4udHlwZSgpID09IEhUTUxUb2tl
bjo6Q2hhcmFjdGVyKQogICAgICAgICAgICAgZGlkQmxvY2tTY3JpcHQgPSBmaWx0ZXJDaGFyYWN0
ZXJUb2tlbihyZXF1ZXN0KTsKLSAgICAgICAgZWxzZSBpZiAocmVxdWVzdC50b2tlbi50eXBlKCkg
PT0gSFRNTFRva2VuVHlwZXM6OkVuZFRhZykKKyAgICAgICAgZWxzZSBpZiAocmVxdWVzdC50b2tl
bi50eXBlKCkgPT0gSFRNTFRva2VuOjpFbmRUYWcpCiAgICAgICAgICAgICBmaWx0ZXJFbmRUb2tl
bihyZXF1ZXN0KTsKICAgICB9CiAKQEAgLTM1Niw3ICszNTYsNyBAQCBib29sIFhTU0F1ZGl0b3I6
OmZpbHRlckNoYXJhY3RlclRva2VuKGNvbnN0IEZpbHRlclRva2VuUmVxdWVzdCYgcmVxdWVzdCkK
IAogYm9vbCBYU1NBdWRpdG9yOjpmaWx0ZXJTY3JpcHRUb2tlbihjb25zdCBGaWx0ZXJUb2tlblJl
cXVlc3QmIHJlcXVlc3QpCiB7Ci0gICAgQVNTRVJUKHJlcXVlc3QudG9rZW4udHlwZSgpID09IEhU
TUxUb2tlblR5cGVzOjpTdGFydFRhZyk7CisgICAgQVNTRVJUKHJlcXVlc3QudG9rZW4udHlwZSgp
ID09IEhUTUxUb2tlbjo6U3RhcnRUYWcpOwogICAgIEFTU0VSVChoYXNOYW1lKHJlcXVlc3QudG9r
ZW4sIHNjcmlwdFRhZykpOwogCiAgICAgbV9jYWNoZWREZWNvZGVkU25pcHBldCA9IGRlY29kZWRT
bmlwcGV0Rm9yTmFtZShyZXF1ZXN0KTsKQEAgLTM3Miw3ICszNzIsNyBAQCBib29sIFhTU0F1ZGl0
b3I6OmZpbHRlclNjcmlwdFRva2VuKGNvbnN0IEZpbHRlclRva2VuUmVxdWVzdCYgcmVxdWVzdCkK
IAogYm9vbCBYU1NBdWRpdG9yOjpmaWx0ZXJPYmplY3RUb2tlbihjb25zdCBGaWx0ZXJUb2tlblJl
cXVlc3QmIHJlcXVlc3QpCiB7Ci0gICAgQVNTRVJUKHJlcXVlc3QudG9rZW4udHlwZSgpID09IEhU
TUxUb2tlblR5cGVzOjpTdGFydFRhZyk7CisgICAgQVNTRVJUKHJlcXVlc3QudG9rZW4udHlwZSgp
ID09IEhUTUxUb2tlbjo6U3RhcnRUYWcpOwogICAgIEFTU0VSVChoYXNOYW1lKHJlcXVlc3QudG9r
ZW4sIG9iamVjdFRhZykpOwogCiAgICAgYm9vbCBkaWRCbG9ja1NjcmlwdCA9IGZhbHNlOwpAQCAt
Mzg2LDcgKzM4Niw3IEBAIGJvb2wgWFNTQXVkaXRvcjo6ZmlsdGVyT2JqZWN0VG9rZW4oY29uc3Qg
RmlsdGVyVG9rZW5SZXF1ZXN0JiByZXF1ZXN0KQogCiBib29sIFhTU0F1ZGl0b3I6OmZpbHRlclBh
cmFtVG9rZW4oY29uc3QgRmlsdGVyVG9rZW5SZXF1ZXN0JiByZXF1ZXN0KQogewotICAgIEFTU0VS
VChyZXF1ZXN0LnRva2VuLnR5cGUoKSA9PSBIVE1MVG9rZW5UeXBlczo6U3RhcnRUYWcpOworICAg
IEFTU0VSVChyZXF1ZXN0LnRva2VuLnR5cGUoKSA9PSBIVE1MVG9rZW46OlN0YXJ0VGFnKTsKICAg
ICBBU1NFUlQoaGFzTmFtZShyZXF1ZXN0LnRva2VuLCBwYXJhbVRhZykpOwogCiAgICAgc2l6ZV90
IGluZGV4T2ZOYW1lQXR0cmlidXRlOwpAQCAtNDA0LDcgKzQwNCw3IEBAIGJvb2wgWFNTQXVkaXRv
cjo6ZmlsdGVyUGFyYW1Ub2tlbihjb25zdCBGaWx0ZXJUb2tlblJlcXVlc3QmIHJlcXVlc3QpCiAK
IGJvb2wgWFNTQXVkaXRvcjo6ZmlsdGVyRW1iZWRUb2tlbihjb25zdCBGaWx0ZXJUb2tlblJlcXVl
c3QmIHJlcXVlc3QpCiB7Ci0gICAgQVNTRVJUKHJlcXVlc3QudG9rZW4udHlwZSgpID09IEhUTUxU
b2tlblR5cGVzOjpTdGFydFRhZyk7CisgICAgQVNTRVJUKHJlcXVlc3QudG9rZW4udHlwZSgpID09
IEhUTUxUb2tlbjo6U3RhcnRUYWcpOwogICAgIEFTU0VSVChoYXNOYW1lKHJlcXVlc3QudG9rZW4s
IGVtYmVkVGFnKSk7CiAKICAgICBib29sIGRpZEJsb2NrU2NyaXB0ID0gZmFsc2U7CkBAIC00MTgs
NyArNDE4LDcgQEAgYm9vbCBYU1NBdWRpdG9yOjpmaWx0ZXJFbWJlZFRva2VuKGNvbnN0IEZpbHRl
clRva2VuUmVxdWVzdCYgcmVxdWVzdCkKIAogYm9vbCBYU1NBdWRpdG9yOjpmaWx0ZXJBcHBsZXRU
b2tlbihjb25zdCBGaWx0ZXJUb2tlblJlcXVlc3QmIHJlcXVlc3QpCiB7Ci0gICAgQVNTRVJUKHJl
cXVlc3QudG9rZW4udHlwZSgpID09IEhUTUxUb2tlblR5cGVzOjpTdGFydFRhZyk7CisgICAgQVNT
RVJUKHJlcXVlc3QudG9rZW4udHlwZSgpID09IEhUTUxUb2tlbjo6U3RhcnRUYWcpOwogICAgIEFT
U0VSVChoYXNOYW1lKHJlcXVlc3QudG9rZW4sIGFwcGxldFRhZykpOwogCiAgICAgYm9vbCBkaWRC
bG9ja1NjcmlwdCA9IGZhbHNlOwpAQCAtNDMxLDcgKzQzMSw3IEBAIGJvb2wgWFNTQXVkaXRvcjo6
ZmlsdGVyQXBwbGV0VG9rZW4oY29uc3QgRmlsdGVyVG9rZW5SZXF1ZXN0JiByZXF1ZXN0KQogCiBi
b29sIFhTU0F1ZGl0b3I6OmZpbHRlcklmcmFtZVRva2VuKGNvbnN0IEZpbHRlclRva2VuUmVxdWVz
dCYgcmVxdWVzdCkKIHsKLSAgICBBU1NFUlQocmVxdWVzdC50b2tlbi50eXBlKCkgPT0gSFRNTFRv
a2VuVHlwZXM6OlN0YXJ0VGFnKTsKKyAgICBBU1NFUlQocmVxdWVzdC50b2tlbi50eXBlKCkgPT0g
SFRNTFRva2VuOjpTdGFydFRhZyk7CiAgICAgQVNTRVJUKGhhc05hbWUocmVxdWVzdC50b2tlbiwg
aWZyYW1lVGFnKSk7CiAKICAgICBib29sIGRpZEJsb2NrU2NyaXB0ID0gZmFsc2U7CkBAIC00NDQs
NyArNDQ0LDcgQEAgYm9vbCBYU1NBdWRpdG9yOjpmaWx0ZXJJZnJhbWVUb2tlbihjb25zdCBGaWx0
ZXJUb2tlblJlcXVlc3QmIHJlcXVlc3QpCiAKIGJvb2wgWFNTQXVkaXRvcjo6ZmlsdGVyTWV0YVRv
a2VuKGNvbnN0IEZpbHRlclRva2VuUmVxdWVzdCYgcmVxdWVzdCkKIHsKLSAgICBBU1NFUlQocmVx
dWVzdC50b2tlbi50eXBlKCkgPT0gSFRNTFRva2VuVHlwZXM6OlN0YXJ0VGFnKTsKKyAgICBBU1NF
UlQocmVxdWVzdC50b2tlbi50eXBlKCkgPT0gSFRNTFRva2VuOjpTdGFydFRhZyk7CiAgICAgQVNT
RVJUKGhhc05hbWUocmVxdWVzdC50b2tlbiwgbWV0YVRhZykpOwogCiAgICAgcmV0dXJuIGVyYXNl
QXR0cmlidXRlSWZJbmplY3RlZChyZXF1ZXN0LCBodHRwX2VxdWl2QXR0cik7CkBAIC00NTIsNyAr
NDUyLDcgQEAgYm9vbCBYU1NBdWRpdG9yOjpmaWx0ZXJNZXRhVG9rZW4oY29uc3QgRmlsdGVyVG9r
ZW5SZXF1ZXN0JiByZXF1ZXN0KQogCiBib29sIFhTU0F1ZGl0b3I6OmZpbHRlckJhc2VUb2tlbihj
b25zdCBGaWx0ZXJUb2tlblJlcXVlc3QmIHJlcXVlc3QpCiB7Ci0gICAgQVNTRVJUKHJlcXVlc3Qu
dG9rZW4udHlwZSgpID09IEhUTUxUb2tlblR5cGVzOjpTdGFydFRhZyk7CisgICAgQVNTRVJUKHJl
cXVlc3QudG9rZW4udHlwZSgpID09IEhUTUxUb2tlbjo6U3RhcnRUYWcpOwogICAgIEFTU0VSVCho
YXNOYW1lKHJlcXVlc3QudG9rZW4sIGJhc2VUYWcpKTsKIAogICAgIHJldHVybiBlcmFzZUF0dHJp
YnV0ZUlmSW5qZWN0ZWQocmVxdWVzdCwgaHJlZkF0dHIpOwpAQCAtNDYwLDcgKzQ2MCw3IEBAIGJv
b2wgWFNTQXVkaXRvcjo6ZmlsdGVyQmFzZVRva2VuKGNvbnN0IEZpbHRlclRva2VuUmVxdWVzdCYg
cmVxdWVzdCkKIAogYm9vbCBYU1NBdWRpdG9yOjpmaWx0ZXJGb3JtVG9rZW4oY29uc3QgRmlsdGVy
VG9rZW5SZXF1ZXN0JiByZXF1ZXN0KQogewotICAgIEFTU0VSVChyZXF1ZXN0LnRva2VuLnR5cGUo
KSA9PSBIVE1MVG9rZW5UeXBlczo6U3RhcnRUYWcpOworICAgIEFTU0VSVChyZXF1ZXN0LnRva2Vu
LnR5cGUoKSA9PSBIVE1MVG9rZW46OlN0YXJ0VGFnKTsKICAgICBBU1NFUlQoaGFzTmFtZShyZXF1
ZXN0LnRva2VuLCBmb3JtVGFnKSk7CiAKICAgICByZXR1cm4gZXJhc2VBdHRyaWJ1dGVJZkluamVj
dGVkKHJlcXVlc3QsIGFjdGlvbkF0dHIsIGJsYW5rVVJMKCkuc3RyaW5nKCkpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>187806</attachid>
            <date>2013-02-12 01:20:57 -0800</date>
            <delta_ts>2013-02-12 10:09:15 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-109525-20130212011730.patch</filename>
            <type>text/plain</type>
            <size>93793</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQyNTY4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2MzYzY1ZGZlZDNiNjNh
MGJlNTM4YjBiNmE4YWY0NDQxZDk3NmI1ZC4uNzg5OTBkZWNlOGY3OTY5YzE0NjNlYzg2NDA3MDky
Njk1YTQ3ODQ1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2MiBAQAorMjAxMy0wMi0xMiAgRXJp
YyBTZWlkZWwgIDxlcmljQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVtb3ZlIEhUTUxUb2tlblR5
cGVzIGhlYWRlciAoYW5kIHNwbGl0IG91dCBBdG9taWNIVE1MVG9rZW4uaCBmcm9tIEhUTUxUb2tl
bi5oKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA5
NTI1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2Ug
bm8gbG9uZ2VyIG5lZWQgYSBzZXBhcmF0ZSBIVE1MVG9rZW5UeXBlcyBjbGFzcyBub3cgdGhhdCBO
RVdfWE1MIGlzIGdvbmUuCisgICAgICAgIEhvd2V2ZXIsIHRvIHJlbW92ZSBIVE1MVG9rZW5UeXBl
cywgSSBoYWQgdG8gc3BsaXQgQXRvbWljSFRNTFRva2VuLmggZnJvbQorICAgICAgICBIVE1MVG9r
ZW4uaCAodG8gZml4IGEgY2lyY3VsYXIgZGVwZW5kYW5jeSkuCisKKyAgICAgICAgKiBHTlVtYWtl
ZmlsZS5saXN0LmFtOgorICAgICAgICAqIFRhcmdldC5wcmk6CisgICAgICAgICogV2ViQ29yZS5n
eXBpOgorICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOgorICAgICAgICAq
IFdlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2o6CisgICAgICAgICogV2ViQ29yZS52Y3hw
cm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBodG1sL0hUTUxWaWV3U291cmNlRG9jdW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFZpZXdTb3VyY2VEb2N1bWVudDo6YWRkU291cmNl
KToKKyAgICAgICAgKiBodG1sL3BhcnNlci9BdG9taWNIVE1MVG9rZW4uaDogQWRkZWQuCisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKEF0b21pY0hUTUxUb2tlbik6CisgICAgICAgIChXZWJD
b3JlOjpBdG9taWNIVE1MVG9rZW46OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpBdG9taWNI
VE1MVG9rZW46OmZvcmNlUXVpcmtzKToKKyAgICAgICAgKFdlYkNvcmU6OkF0b21pY0hUTUxUb2tl
bjo6dHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpBdG9taWNIVE1MVG9rZW46Om5hbWUpOgorICAg
ICAgICAoV2ViQ29yZTo6QXRvbWljSFRNTFRva2VuOjpzZXROYW1lKToKKyAgICAgICAgKFdlYkNv
cmU6OkF0b21pY0hUTUxUb2tlbjo6c2VsZkNsb3NpbmcpOgorICAgICAgICAoV2ViQ29yZTo6QXRv
bWljSFRNTFRva2VuOjpnZXRBdHRyaWJ1dGVJdGVtKToKKyAgICAgICAgKFdlYkNvcmU6OkF0b21p
Y0hUTUxUb2tlbjo6YXR0cmlidXRlcyk6CisgICAgICAgIChXZWJDb3JlOjpBdG9taWNIVE1MVG9r
ZW46OmNoYXJhY3RlcnMpOgorICAgICAgICAoV2ViQ29yZTo6QXRvbWljSFRNTFRva2VuOjpjaGFy
YWN0ZXJzTGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6OkF0b21pY0hUTUxUb2tlbjo6aXNBbGw4
Qml0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpBdG9taWNIVE1MVG9rZW46OmNvbW1lbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6QXRvbWljSFRNTFRva2VuOjpwdWJsaWNJZGVudGlmaWVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OkF0b21pY0hUTUxUb2tlbjo6c3lzdGVtSWRlbnRpZmllcik6CisgICAg
ICAgIChXZWJDb3JlOjpBdG9taWNIVE1MVG9rZW46OmNsZWFyRXh0ZXJuYWxDaGFyYWN0ZXJzKToK
KyAgICAgICAgKFdlYkNvcmU6OkF0b21pY0hUTUxUb2tlbjo6QXRvbWljSFRNTFRva2VuKToKKyAg
ICAgICAgKFdlYkNvcmU6OkF0b21pY0hUTUxUb2tlbjo6aW5pdGlhbGl6ZUF0dHJpYnV0ZXMpOgor
ICAgICAgICAqIGh0bWwvcGFyc2VyL0JhY2tncm91bmRIVE1MUGFyc2VyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkJhY2tncm91bmRIVE1MUGFyc2VyOjpzaW11bGF0ZVRyZWVCdWlsZGVyKToKKyAg
ICAgICAgKiBodG1sL3BhcnNlci9Db21wYWN0SFRNTFRva2VuLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNvbXBhY3RIVE1MVG9rZW46OkNvbXBhY3RIVE1MVG9rZW4pOgorICAgICAgICAqIGh0bWwv
cGFyc2VyL0NvbXBhY3RIVE1MVG9rZW4uaDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbXBhY3RIVE1M
VG9rZW46OnR5cGUpOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxDb25zdHJ1Y3Rpb25TaXRl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxDb25zdHJ1Y3Rpb25TaXRlOjppbnNlcnREb2N0
eXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxDb25zdHJ1Y3Rpb25TaXRlOjppbnNlcnRDb21t
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxDb25zdHJ1Y3Rpb25TaXRlOjppbnNlcnRDb21t
ZW50T25Eb2N1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQ29uc3RydWN0aW9uU2l0ZTo6
aW5zZXJ0Q29tbWVudE9uSFRNTEh0bWxFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxD
b25zdHJ1Y3Rpb25TaXRlOjppbnNlcnRTZWxmQ2xvc2luZ0hUTUxFbGVtZW50KToKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxDb25zdHJ1Y3Rpb25TaXRlOjppbnNlcnRGb3JlaWduRWxlbWVudCk6Cisg
ICAgICAgICogaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFyc2VyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxEb2N1bWVudFBhcnNlcjo6cHJvY2Vzc1BhcnNlZENodW5rRnJvbUJhY2tncm91
bmRQYXJzZXIpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTERvY3VtZW50UGFyc2VyOjpjb25zdHJ1
Y3RUcmVlRnJvbUhUTUxUb2tlbik6CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50
UGFyc2VyLmg6CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTE1ldGFDaGFyc2V0UGFyc2VyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZXRhQ2hhcnNldFBhcnNlcjo6Y2hlY2tGb3JNZXRh
Q2hhcnNldCk6CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTFByZWxvYWRTY2FubmVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmlzU3RhcnRUYWcpOgorICAgICAgICAoV2ViQ29yZTo6aXNTdGFy
dE9yRW5kVGFnKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxQcmVsb2FkU2Nhbm5lcjo6cHJvY2Vz
c1Rva2VuKToKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MU291cmNlVHJhY2tlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MU291cmNlVHJhY2tlcjo6c3RhcnQpOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTFNvdXJjZVRyYWNrZXI6OnNvdXJjZUZvclRva2VuKToKKyAgICAgICAgKiBodG1s
L3BhcnNlci9IVE1MU3RhY2tJdGVtLmg6CisgICAgICAgIChXZWJDb3JlOjpIVE1MU3RhY2tJdGVt
OjpIVE1MU3RhY2tJdGVtKToKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MVG9rZW4uaDoKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxUb2tlbjo6Y2xlYXIpOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TFRva2VuOjppc1VuaW5pdGlhbGl6ZWQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRva2VuOjp0
eXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUb2tlbjo6bWFrZUVuZE9mRmlsZSk6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MVG9rZW46OmRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRv
a2VuOjpuYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUb2tlbjo6YXBwZW5kVG9OYW1lKToK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxUb2tlbjo6Zm9yY2VRdWlya3MpOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTFRva2VuOjpzZXRGb3JjZVF1aXJrcyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
VG9rZW46OmJlZ2luRE9DVFlQRSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVG9rZW46OnB1Ymxp
Y0lkZW50aWZpZXIpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRva2VuOjpzeXN0ZW1JZGVudGlm
aWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUb2tlbjo6c2V0UHVibGljSWRlbnRpZmllclRv
RW1wdHlTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRva2VuOjpzZXRTeXN0ZW1JZGVu
dGlmaWVyVG9FbXB0eVN0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVG9rZW46OmFwcGVu
ZFRvUHVibGljSWRlbnRpZmllcik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVG9rZW46OmFwcGVu
ZFRvU3lzdGVtSWRlbnRpZmllcik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVG9rZW46OnNlbGZD
bG9zaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUb2tlbjo6c2V0U2VsZkNsb3NpbmcpOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTFRva2VuOjpiZWdpblN0YXJ0VGFnKToKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxUb2tlbjo6YmVnaW5FbmRUYWcpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRv
a2VuOjphZGROZXdBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRva2VuOjphcHBl
bmRUb0F0dHJpYnV0ZU5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRva2VuOjphcHBlbmRU
b0F0dHJpYnV0ZVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUb2tlbjo6YXR0cmlidXRl
cyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVG9rZW46OmVyYXNlVmFsdWVPZkF0dHJpYnV0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MVG9rZW46OmVuc3VyZUlzQ2hhcmFjdGVyVG9rZW4pOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTFRva2VuOjpjaGFyYWN0ZXJzKToKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxUb2tlbjo6YXBwZW5kVG9DaGFyYWN0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TFRva2VuOjpjb21tZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUb2tlbjo6YmVnaW5Db21t
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUb2tlbjo6YXBwZW5kVG9Db21tZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxUb2tlbjo6ZXJhc2VDaGFyYWN0ZXJzKToKKyAgICAgICAgKEhU
TUxUb2tlbik6CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTFRva2VuVHlwZXMuaDogUmVtb3Zl
ZC4KKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MVG9rZW5pemVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkF0b21pY0hUTUxUb2tlbjo6dXNlc05hbWUpOgorICAgICAgICAoV2ViQ29yZTo6QXRv
bWljSFRNTFRva2VuOjp1c2VzQXR0cmlidXRlcyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVG9r
ZW5pemVyOjpmbHVzaEJ1ZmZlcmVkRW5kVGFnKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUb2tl
bml6ZXI6Om5leHRUb2tlbik6CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTFRva2VuaXplci5o
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRva2VuaXplcjo6c2F2ZUVuZFRhZ05hbWVJZk5lZWRl
ZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVG9rZW5pemVyOjpoYXZlQnVmZmVyZWRDaGFyYWN0
ZXJUb2tlbik6CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTFRyZWVCdWlsZGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc1Rva2VuKToKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0RvY3R5cGVUb2tlbik6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NGYWtlU3RhcnRUYWcpOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzRmFrZUVuZFRhZyk6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NGYWtlUEVuZFRhZ0lmUEluQnV0dG9u
U2NvcGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzSXNpbmRl
eFN0YXJ0VGFnRm9ySW5Cb2R5KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzU3RhcnRUYWdGb3JJbkJvZHkpOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzU3RhcnRUYWdGb3JJblRhYmxlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc1N0YXJ0VGFnKToKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0JvZHlFbmRUYWdGb3JJbkJvZHkp
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzQW55T3RoZXJFbmRU
YWdGb3JJbkJvZHkpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNz
RW5kVGFnRm9ySW5UYWJsZUJvZHkpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVy
Ojpwcm9jZXNzRW5kVGFnRm9ySW5Sb3cpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyZWVCdWls
ZGVyOjpwcm9jZXNzRW5kVGFnRm9ySW5DZWxsKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVl
QnVpbGRlcjo6cHJvY2Vzc0VuZFRhZ0ZvckluQm9keSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
VHJlZUJ1aWxkZXI6OnByb2Nlc3NFbmRUYWdGb3JJblRhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0VuZFRhZyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
VHJlZUJ1aWxkZXI6OnByb2Nlc3NDb21tZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVl
QnVpbGRlcjo6cHJvY2Vzc0NoYXJhY3Rlcik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJlZUJ1
aWxkZXI6OmRlZmF1bHRGb3JCZWZvcmVIVE1MKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVl
QnVpbGRlcjo6ZGVmYXVsdEZvckJlZm9yZUhlYWQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRy
ZWVCdWlsZGVyOjpkZWZhdWx0Rm9ySW5IZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVl
QnVpbGRlcjo6ZGVmYXVsdEZvckluSGVhZE5vc2NyaXB0KToKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxUcmVlQnVpbGRlcjo6ZGVmYXVsdEZvckFmdGVySGVhZCk6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NTdGFydFRhZ0ZvckluSGVhZCk6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NHZW5lcmljUkNEQVRBU3RhcnRUYWcpOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzR2VuZXJpY1Jhd1RleHRTdGFy
dFRhZyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NTY3JpcHRT
dGFydFRhZyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6OnNob3VsZFByb2Nl
c3NUb2tlbkluRm9yZWlnbkNvbnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyZWVCdWls
ZGVyOjpwcm9jZXNzVG9rZW5JbkZvcmVpZ25Db250ZW50KToKKyAgICAgICAgKiBodG1sL3BhcnNl
ci9IVE1MVmlld1NvdXJjZVBhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVmlld1Nv
dXJjZVBhcnNlcjo6dXBkYXRlVG9rZW5pemVyU3RhdGUpOgorICAgICAgICAqIGh0bWwvcGFyc2Vy
L1RleHREb2N1bWVudFBhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0RG9jdW1lbnRQ
YXJzZXI6Omluc2VydEZha2VQcmVFbGVtZW50KToKKyAgICAgICAgKiBodG1sL3BhcnNlci9YU1NB
dWRpdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhTU0F1ZGl0b3I6OmZpbHRlclRva2VuKToK
KyAgICAgICAgKFdlYkNvcmU6OlhTU0F1ZGl0b3I6OmZpbHRlclNjcmlwdFRva2VuKToKKyAgICAg
ICAgKFdlYkNvcmU6OlhTU0F1ZGl0b3I6OmZpbHRlck9iamVjdFRva2VuKToKKyAgICAgICAgKFdl
YkNvcmU6OlhTU0F1ZGl0b3I6OmZpbHRlclBhcmFtVG9rZW4pOgorICAgICAgICAoV2ViQ29yZTo6
WFNTQXVkaXRvcjo6ZmlsdGVyRW1iZWRUb2tlbik6CisgICAgICAgIChXZWJDb3JlOjpYU1NBdWRp
dG9yOjpmaWx0ZXJBcHBsZXRUb2tlbik6CisgICAgICAgIChXZWJDb3JlOjpYU1NBdWRpdG9yOjpm
aWx0ZXJJZnJhbWVUb2tlbik6CisgICAgICAgIChXZWJDb3JlOjpYU1NBdWRpdG9yOjpmaWx0ZXJN
ZXRhVG9rZW4pOgorICAgICAgICAoV2ViQ29yZTo6WFNTQXVkaXRvcjo6ZmlsdGVyQmFzZVRva2Vu
KToKKyAgICAgICAgKFdlYkNvcmU6OlhTU0F1ZGl0b3I6OmZpbHRlckZvcm1Ub2tlbik6CisKIDIw
MTMtMDItMTEgIEtlbm5ldGggUnVzc2VsbCAgPGtickBnb29nbGUuY29tPgogCiAgICAgICAgIEFk
ZCB0ZW1wb3JhcnkgdHlwZWRlZiB0byBBTkdMRVdlYktpdEJyaWRnZSB0byBzdXBwb3J0IGluY29t
cGF0aWJsZSBBUEkgdXBncmFkZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZp
bGUubGlzdC5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5kZXggMmI5
YjFiZTNkNGI3NDdhNThmNmNiMDMyMzJkYWFiNWM0OGE3NmUwZS4uNDc4N2JiM2YxODY2MmY2ZjBl
NmFkMGMyMjQ4M2ExZWY0MGE3YmZlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvR05VbWFr
ZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCkBA
IC0zNTY4LDYgKzM1NjgsNyBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3Jl
L2h0bWwvTW9udGhJbnB1dFR5cGUuaCBcCiAJU291cmNlL1dlYkNvcmUvaHRtbC9OdW1iZXJJbnB1
dFR5cGUuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL051bWJlcklucHV0VHlwZS5oIFwKKwlT
b3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9BdG9taWNIVE1MVG9rZW4uaCBcCiAJU291cmNlL1dl
YkNvcmUvaHRtbC9wYXJzZXIvQmFja2dyb3VuZEhUTUxJbnB1dFN0cmVhbS5jcHAgXAogCVNvdXJj
ZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0JhY2tncm91bmRIVE1MSW5wdXRTdHJlYW0uaCBcCiAJU291
cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQmFja2dyb3VuZEhUTUxQYXJzZXIuY3BwIFwKQEAgLTM2
MTEsNyArMzYxMiw2IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvaHRt
bC9wYXJzZXIvSFRNTFNvdXJjZVRyYWNrZXIuaCBcCiAJU291cmNlL1dlYkNvcmUvaHRtbC9wYXJz
ZXIvSFRNTFN0YWNrSXRlbS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVG9r
ZW4uaCBcCi0JU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRva2VuVHlwZXMuaCBcCiAJ
U291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRva2VuaXplci5jcHAgXAogCVNvdXJjZS9X
ZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUb2tlbml6ZXIuaCBcCiAJU291cmNlL1dlYkNvcmUvaHRt
bC9wYXJzZXIvSFRNTFRyZWVCdWlsZGVyLmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9UYXJnZXQucHJpIGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQppbmRleCA5YWFlMTZjNzA3
ZTJlMWJiMWUyYzAxZGI3ZmYwNDkyYzFlYTY5MGJhLi43Mjk1ZWEzODFjNDJiM2FhMTNhMmI1MTcz
YzI5YmQ3ODEzN2RiZTQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCisr
KyBiL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKQEAgLTE5MTYsNiArMTkxNiw3IEBAIEhFQURF
UlMgKz0gXAogICAgIGh0bWwvVGltZVJhbmdlcy5oIFwKICAgICBodG1sL1R5cGVBaGVhZC5oIFwK
ICAgICBodG1sL1ZhbGlkaXR5U3RhdGUuaCBcCisgICAgaHRtbC9wYXJzZXIvQXRvbWljSFRNTFRv
a2VuLmggXAogICAgIGh0bWwvcGFyc2VyL0NTU1ByZWxvYWRTY2FubmVyLmggXAogICAgIGh0bWwv
cGFyc2VyL0NvbXBhY3RIVE1MVG9rZW4uaCBcCiAgICAgaHRtbC9wYXJzZXIvSFRNTENvbnN0cnVj
dGlvblNpdGUuaCBcCkBAIC0xOTMxLDcgKzE5MzIsNiBAQCBIRUFERVJTICs9IFwKICAgICBodG1s
L3BhcnNlci9IVE1MU2NyaXB0UnVubmVyLmggXAogICAgIGh0bWwvcGFyc2VyL0hUTUxTY3JpcHRS
dW5uZXJIb3N0LmggXAogICAgIGh0bWwvcGFyc2VyL0hUTUxUb2tlbi5oIFwKLSAgICBodG1sL3Bh
cnNlci9IVE1MVG9rZW5UeXBlcy5oIFwKICAgICBodG1sL3BhcnNlci9IVE1MVG9rZW5pemVyLmgg
XAogICAgIGh0bWwvcGFyc2VyL0hUTUxUcmVlQnVpbGRlci5oIFwKICAgICBodG1sL3BhcnNlci9I
VE1MVmlld1NvdXJjZVBhcnNlci5oIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCA3YWEzYzBlNGE0Zjc4
M2E0OTVlZTUwNmE4MTQ0OGFlYjk2YjViYjQ0Li5hZjk0NjhmNjQ3MDJlZmU0NjUyOWE1M2NjOWQ0
ZGRlZmRjODM5N2YyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysr
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC0zMzU2LDYgKzMzNTYsNyBAQAogICAg
ICAgICAgICAgJ2h0bWwvY2FudmFzL1dlYkdMVW5pZm9ybUxvY2F0aW9uLmgnLAogICAgICAgICAg
ICAgJ2h0bWwvY2FudmFzL1dlYkdMVmVydGV4QXJyYXlPYmplY3RPRVMuY3BwJywKICAgICAgICAg
ICAgICdodG1sL2NhbnZhcy9XZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTLmgnLAorICAgICAgICAg
ICAgJ2h0bWwvcGFyc2VyL0F0b21pY0hUTUxUb2tlbi5oJywKICAgICAgICAgICAgICdodG1sL3Bh
cnNlci9CYWNrZ3JvdW5kSFRNTFBhcnNlci5jcHAnLAogICAgICAgICAgICAgJ2h0bWwvcGFyc2Vy
L0JhY2tncm91bmRIVE1MUGFyc2VyLmgnLAogICAgICAgICAgICAgJ2h0bWwvcGFyc2VyL0JhY2tn
cm91bmRIVE1MSW5wdXRTdHJlYW0uY3BwJywKQEAgLTMzOTgsNyArMzM5OSw2IEBACiAgICAgICAg
ICAgICAnaHRtbC9wYXJzZXIvSFRNTFNvdXJjZVRyYWNrZXIuaCcsCiAgICAgICAgICAgICAnaHRt
bC9wYXJzZXIvSFRNTFN0YWNrSXRlbS5oJywKICAgICAgICAgICAgICdodG1sL3BhcnNlci9IVE1M
VG9rZW4uaCcsCi0gICAgICAgICAgICAnaHRtbC9wYXJzZXIvSFRNTFRva2VuVHlwZXMuaCcsCiAg
ICAgICAgICAgICAnaHRtbC9wYXJzZXIvSFRNTFRva2VuaXplci5jcHAnLAogICAgICAgICAgICAg
J2h0bWwvcGFyc2VyL0hUTUxUb2tlbml6ZXIuaCcsCiAgICAgICAgICAgICAnaHRtbC9wYXJzZXIv
SFRNTFRyZWVCdWlsZGVyLmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LnZjcHJvai9XZWJDb3JlLnZjcHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dl
YkNvcmUudmNwcm9qCmluZGV4IDk2Y2VkN2RjOWUyZDllNmZjMzA2MThmZWI3MzJlODU5NmI0ZDY1
NzYuLjQ5MTU0NDAzOGEwYzIzZjE2MDgyZjQzNjg4YzZhNjc3MzEzY2FiMDEgMTAwNzU1Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCkBAIC02NDgwNiw2ICs2NDgw
NiwxMCBAQAogCQkJCU5hbWU9InBhcnNlciIKIAkJCQk+CiAJCQkJPEZpbGUKKwkJCQkJUmVsYXRp
dmVQYXRoPSIuLlxodG1sXHBhcnNlclxBdG9taWNIVE1MVG9rZW4uaCIKKwkJCQkJPgorCQkJCTwv
RmlsZT4KKwkJCQk8RmlsZQogCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGh0bWxccGFyc2VyXEJhY2tn
cm91bmRIVE1MSW5wdXRTdHJlYW0uY3BwIgogCQkJCQk+CiAJCQkJPC9GaWxlPgpAQCAtNjQ5ODIs
MTAgKzY0OTg2LDYgQEAKIAkJCQkJPgogCQkJCTwvRmlsZT4KIAkJCQk8RmlsZQotCQkJCQlSZWxh
dGl2ZVBhdGg9Ii4uXGh0bWxccGFyc2VyXEhUTUxUb2tlblR5cGVzLmgiCi0JCQkJCT4KLQkJCQk8
L0ZpbGU+Ci0JCQkJPEZpbGUKIAkJCQkJUmVsYXRpdmVQYXRoPSIuLlxodG1sXHBhcnNlclxIVE1M
VHJlZUJ1aWxkZXIuY3BwIgogCQkJCQk+CiAJCQkJPC9GaWxlPgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvaiBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2oKaW5kZXggMjE0MTIzMjFmZTU1OTA1ZTBl
YmQ1MjRiY2ZiZGUwZTYyMmIxNDdkMy4uNWQwMzc4ODQ4YTBmMzczY2Y0YzBmMTIzYjEzYmZkNzcz
NDgzYmUzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNv
cmUudmN4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52
Y3hwcm9qCkBAIC03OTI1LDYgKzc5MjUsNyBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
aHRtbFxWYWxpZGl0eVN0YXRlLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxodG1s
XFZvaWRDYWxsYmFjay5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caHRtbFxXZWVr
SW5wdXRUeXBlLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxodG1sXHBhcnNlclxB
dG9taWNIVE1MVG9rZW4uaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGh0bWxccGFy
c2VyXEJhY2tncm91bmRIVE1MUGFyc2VyLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIu
LlxodG1sXHBhcnNlclxDb21wYWN0SFRNTFRva2VuLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIuLlxodG1sXHBhcnNlclxDU1NQcmVsb2FkU2Nhbm5lci5oIiAvPgpAQCAtNzk0OCw3ICs3
OTQ5LDYgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGh0bWxccGFyc2VyXEhUTUxTdGFj
a0l0ZW0uaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGh0bWxccGFyc2VyXEhUTUxU
b2tlbi5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caHRtbFxwYXJzZXJcSFRNTFRv
a2VuaXplci5oIiAvPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caHRtbFxwYXJzZXJcSFRN
TFRva2VuVHlwZXMuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGh0bWxccGFyc2Vy
XEhUTUxUcmVlQnVpbGRlci5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caHRtbFxw
YXJzZXJcSFRNTFZpZXdTb3VyY2VQYXJzZXIuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
Ii4uXGh0bWxccGFyc2VyXElucHV0U3RyZWFtUHJlcHJvY2Vzc29yLmgiIC8+CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnMg
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnMK
aW5kZXggYjY3MmM3YzhmYzRjYzVmZmM3ZWZmMTg5MDZjZmI3ODVkMjc3Mzc3OC4uOTY3OTY1ODg1
NGU5M2JmYTZkMDE2NjIyMzJiMTA1NDEyYWY4MmI3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVycwpAQCAtMTI1MzEs
NiArMTI1MzEsOSBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caHRtbFxXZWVrSW5wdXRU
eXBlLmgiPgogICAgICAgPEZpbHRlcj5odG1sPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+Cisg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxodG1sXHBhcnNlclxBdG9taWNIVE1MVG9rZW4uaCI+
CisgICAgICA8RmlsdGVyPmh0bWxccGFyc2VyPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CiAg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxodG1sXHBhcnNlclxCYWNrZ3JvdW5kSFRNTFBhcnNl
ci5oIj4KICAgICAgIDxGaWx0ZXI+aHRtbFxwYXJzZXI8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVk
ZT4KQEAgLTEyNTk3LDkgKzEyNjAwLDYgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGh0
bWxccGFyc2VyXEhUTUxUb2tlbml6ZXIuaCI+CiAgICAgICA8RmlsdGVyPmh0bWxccGFyc2VyPC9G
aWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxodG1s
XHBhcnNlclxIVE1MVG9rZW5UeXBlcy5oIj4KLSAgICAgIDxGaWx0ZXI+aHRtbFxwYXJzZXI8L0Zp
bHRlcj4KLSAgICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGh0bWxc
cGFyc2VyXEhUTUxUcmVlQnVpbGRlci5oIj4KICAgICAgIDxGaWx0ZXI+aHRtbFxwYXJzZXI8L0Zp
bHRlcj4KICAgICA8L0NsSW5jbHVkZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA1YWM1N2JiZjUxYTBmZDI3M2YyNjVkMTA5NzFl
MjU0MjM5MzYxNTA5Li5lNGRiMDUxYmUwMzZhNmJmNWY3NmJiMzI5YzlhODk1YWMzNGRiMzUzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CkBAIC0xMTIxOCw3ICsxMTIxOCw3IEBACiAJCTk3QzA3ODRGMTE2NUQ1QkUwMDNBMzJFRiAvKiBT
dWZmaXhUcmVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN1ZmZpeFRyZWUu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTdDMUY1NTIxMjI4NTVDQjAwRURFNjE1
IC8qIEhUTUxTdGFja0l0ZW0uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gSFRN
TFN0YWNrSXRlbS5oOyBwYXRoID0gcGFyc2VyL0hUTUxTdGFja0l0ZW0uaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJOTdDMUY1NTIxMjI4NTVDQjAwRURFNjE2IC8qIEhUTUxUb2tlbi5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBIVE1MVG9rZW4uaDsgcGF0aCA9IHBh
cnNlci9IVE1MVG9rZW4uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJOTdDMUY1NTIx
MjI4NTVDQjAwRURFNjE3IC8qIEhUTUxUb2tlblR5cGVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgbmFtZSA9IEhUTUxUb2tlblR5cGVzLmg7IHBhdGggPSBwYXJzZXIvSFRNTFRva2VuVHlw
ZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTdDMUY1NTIxMjI4NTVDQjAwRURF
NjE3IC8qIEF0b21pY0hUTUxUb2tlbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUg
PSBBdG9taWNIVE1MVG9rZW4uaDsgcGF0aCA9IHBhcnNlci9BdG9taWNIVE1MVG9rZW4uaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTdDNDcxRDkxMkY5MjVCQzAwODYzNTRCIC8qIENv
bnRlbnRTZWN1cml0eVBvbGljeS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBDb250ZW50U2VjdXJpdHlQb2xpY3kuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk5N0M0NzFEQTEyRjkyNUJEMDA4NjM1NEIgLyogQ29udGVudFNlY3VyaXR5UG9saWN5Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbnRlbnRTZWN1cml0eVBvbGljeS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5N0M3NDAxMjE2MDNGN0ExMDAxMUZGMkQg
LyogRmVhdHVyZU9ic2VydmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEZlYXR1cmVPYnNlcnZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0x
ODczOCw3ICsxODczOCw3IEBACiAJCQkJOTdDMUY1NTIxMjI4NTVDQjAwRURFNjE2IC8qIEhUTUxU
b2tlbi5oICovLAogCQkJCTk3N0IzODVFMTIyODgzRTkwMEI4MUZGOCAvKiBIVE1MVG9rZW5pemVy
LmNwcCAqLywKIAkJCQk5NzdCMzg1RjEyMjg4M0U5MDBCODFGRjggLyogSFRNTFRva2VuaXplci5o
ICovLAotCQkJCTk3QzFGNTUyMTIyODU1Q0IwMEVERTYxNyAvKiBIVE1MVG9rZW5UeXBlcy5oICov
LAorCQkJCTk3QzFGNTUyMTIyODU1Q0IwMEVERTYxNyAvKiBBdG9taWNIVE1MVG9rZW4uaCAqLywK
IAkJCQk5NzdCMzcyMTEyMjg3MjE3MDBCODFGRjggLyogSFRNTFRyZWVCdWlsZGVyLmNwcCAqLywK
IAkJCQk5NzdCMzcyMjEyMjg3MjE3MDBCODFGRjggLyogSFRNTFRyZWVCdWlsZGVyLmggKi8sCiAJ
CQkJOTc3QjM4NjAxMjI4ODNFOTAwQjgxRkY4IC8qIEhUTUxWaWV3U291cmNlUGFyc2VyLmNwcCAq
LywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZXdTb3VyY2VEb2N1bWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWV3U291cmNlRG9jdW1lbnQuY3BwCmlu
ZGV4IGFiZjI0MzgzNmQzYjczNDBlYmQxMzhkMDYzM2JiNTAyYWJhODk5NDIuLmI3ZmRiMzZjYmM5
NTM3NGFhYTgwYjUzMDBkOWJlM2RhYjA0OTYzMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFZpZXdTb3VyY2VEb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MVmlld1NvdXJjZURvY3VtZW50LmNwcApAQCAtOTksMjQgKzk5LDI0IEBAIHZvaWQgSFRN
TFZpZXdTb3VyY2VEb2N1bWVudDo6YWRkU291cmNlKGNvbnN0IFN0cmluZyYgc291cmNlLCBIVE1M
VG9rZW4mIHRva2VuKQogICAgICAgICBjcmVhdGVDb250YWluaW5nVGFibGUoKTsKIAogICAgIHN3
aXRjaCAodG9rZW4udHlwZSgpKSB7Ci0gICAgY2FzZSBIVE1MVG9rZW5UeXBlczo6VW5pbml0aWFs
aXplZDoKKyAgICBjYXNlIEhUTUxUb2tlbjo6VW5pbml0aWFsaXplZDoKICAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgSFRNTFRva2VuVHlwZXM6
OkRPQ1RZUEU6CisgICAgY2FzZSBIVE1MVG9rZW46OkRPQ1RZUEU6CiAgICAgICAgIHByb2Nlc3NE
b2N0eXBlVG9rZW4oc291cmNlLCB0b2tlbik7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgSFRN
TFRva2VuVHlwZXM6OkVuZE9mRmlsZToKKyAgICBjYXNlIEhUTUxUb2tlbjo6RW5kT2ZGaWxlOgog
ICAgICAgICBpZiAoIW1fdGJvZHktPmhhc0NoaWxkTm9kZXMoKSkKICAgICAgICAgICAgIGFkZExp
bmUoU3RyaW5nKCkpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEhUTUxUb2tlblR5cGVzOjpT
dGFydFRhZzoKLSAgICBjYXNlIEhUTUxUb2tlblR5cGVzOjpFbmRUYWc6CisgICAgY2FzZSBIVE1M
VG9rZW46OlN0YXJ0VGFnOgorICAgIGNhc2UgSFRNTFRva2VuOjpFbmRUYWc6CiAgICAgICAgIHBy
b2Nlc3NUYWdUb2tlbihzb3VyY2UsIHRva2VuKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBI
VE1MVG9rZW5UeXBlczo6Q29tbWVudDoKKyAgICBjYXNlIEhUTUxUb2tlbjo6Q29tbWVudDoKICAg
ICAgICAgcHJvY2Vzc0NvbW1lbnRUb2tlbihzb3VyY2UsIHRva2VuKTsKICAgICAgICAgYnJlYWs7
Ci0gICAgY2FzZSBIVE1MVG9rZW5UeXBlczo6Q2hhcmFjdGVyOgorICAgIGNhc2UgSFRNTFRva2Vu
OjpDaGFyYWN0ZXI6CiAgICAgICAgIHByb2Nlc3NDaGFyYWN0ZXJUb2tlbihzb3VyY2UsIHRva2Vu
KTsKICAgICAgICAgYnJlYWs7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9wYXJzZXIvQXRvbWljSFRNTFRva2VuLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9B
dG9taWNIVE1MVG9rZW4uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mZjliNWRmNjJmNGI2NjQ5ZDk4ODY5Y2E2M2Rk
ZWIyZDc1MzQ0NjBlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJz
ZXIvQXRvbWljSFRNTFRva2VuLmgKQEAgLTAsMCArMSwzMDkgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTMgR29vZ2xlLCBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIEF0b21pY0hUTUxUb2tlbl9o
CisjZGVmaW5lIEF0b21pY0hUTUxUb2tlbl9oCisKKyNpbmNsdWRlICJBdHRyaWJ1dGUuaCIKKyNp
bmNsdWRlICJDb21wYWN0SFRNTFRva2VuLmgiCisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4K
KyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3Mg
QXRvbWljSFRNTFRva2VuIDogcHVibGljIFJlZkNvdW50ZWQ8QXRvbWljSFRNTFRva2VuPiB7Cisg
ICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQXRvbWljSFRNTFRva2VuKTsKK3B1YmxpYzoKKyAgICBz
dGF0aWMgUGFzc1JlZlB0cjxBdG9taWNIVE1MVG9rZW4+IGNyZWF0ZShIVE1MVG9rZW4mIHRva2Vu
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBBdG9taWNIVE1MVG9rZW4odG9r
ZW4pKTsKKyAgICB9CisKKyNpZiBFTkFCTEUoVEhSRUFERURfSFRNTF9QQVJTRVIpCisKKyAgICBz
dGF0aWMgUGFzc1JlZlB0cjxBdG9taWNIVE1MVG9rZW4+IGNyZWF0ZShjb25zdCBDb21wYWN0SFRN
TFRva2VuJiB0b2tlbikKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQXRvbWlj
SFRNTFRva2VuKHRva2VuKSk7CisgICAgfQorCisjZW5kaWYKKworICAgIHN0YXRpYyBQYXNzUmVm
UHRyPEF0b21pY0hUTUxUb2tlbj4gY3JlYXRlKEhUTUxUb2tlbjo6VHlwZSB0eXBlLCBjb25zdCBB
dG9taWNTdHJpbmcmIG5hbWUsIGNvbnN0IFZlY3RvcjxBdHRyaWJ1dGU+JiBhdHRyaWJ1dGVzID0g
VmVjdG9yPEF0dHJpYnV0ZT4oKSkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcg
QXRvbWljSFRNTFRva2VuKHR5cGUsIG5hbWUsIGF0dHJpYnV0ZXMpKTsKKyAgICB9CisKKyAgICBi
b29sIGZvcmNlUXVpcmtzKCkgY29uc3QKKyAgICB7CisgICAgICAgIEFTU0VSVChtX3R5cGUgPT0g
SFRNTFRva2VuOjpET0NUWVBFKTsKKyAgICAgICAgcmV0dXJuIG1fZG9jdHlwZURhdGEtPm1fZm9y
Y2VRdWlya3M7CisgICAgfQorCisgICAgSFRNTFRva2VuOjpUeXBlIHR5cGUoKSBjb25zdCB7IHJl
dHVybiBtX3R5cGU7IH0KKworICAgIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSgpIGNvbnN0Cisg
ICAgeworICAgICAgICBBU1NFUlQodXNlc05hbWUoKSk7CisgICAgICAgIHJldHVybiBtX25hbWU7
CisgICAgfQorCisgICAgdm9pZCBzZXROYW1lKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSkKKyAg
ICB7CisgICAgICAgIEFTU0VSVCh1c2VzTmFtZSgpKTsKKyAgICAgICAgbV9uYW1lID0gbmFtZTsK
KyAgICB9CisKKyAgICBib29sIHNlbGZDbG9zaW5nKCkgY29uc3QKKyAgICB7CisgICAgICAgIEFT
U0VSVChtX3R5cGUgPT0gSFRNTFRva2VuOjpTdGFydFRhZyB8fCBtX3R5cGUgPT0gSFRNTFRva2Vu
OjpFbmRUYWcpOworICAgICAgICByZXR1cm4gbV9zZWxmQ2xvc2luZzsKKyAgICB9CisKKyAgICBB
dHRyaWJ1dGUqIGdldEF0dHJpYnV0ZUl0ZW0oY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRl
TmFtZSkKKyAgICB7CisgICAgICAgIEFTU0VSVCh1c2VzQXR0cmlidXRlcygpKTsKKyAgICAgICAg
cmV0dXJuIGZpbmRBdHRyaWJ1dGVJblZlY3RvcihtX2F0dHJpYnV0ZXMsIGF0dHJpYnV0ZU5hbWUp
OworICAgIH0KKworICAgIFZlY3RvcjxBdHRyaWJ1dGU+JiBhdHRyaWJ1dGVzKCkKKyAgICB7Cisg
ICAgICAgIEFTU0VSVCh1c2VzQXR0cmlidXRlcygpKTsKKyAgICAgICAgcmV0dXJuIG1fYXR0cmli
dXRlczsKKyAgICB9CisKKyAgICBjb25zdCBWZWN0b3I8QXR0cmlidXRlPiYgYXR0cmlidXRlcygp
IGNvbnN0CisgICAgeworICAgICAgICBBU1NFUlQodXNlc0F0dHJpYnV0ZXMoKSk7CisgICAgICAg
IHJldHVybiBtX2F0dHJpYnV0ZXM7CisgICAgfQorCisgICAgY29uc3QgVUNoYXIqIGNoYXJhY3Rl
cnMoKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBIVE1MVG9rZW46OkNo
YXJhY3Rlcik7CisgICAgICAgIHJldHVybiBtX2V4dGVybmFsQ2hhcmFjdGVyczsKKyAgICB9CisK
KyAgICBzaXplX3QgY2hhcmFjdGVyc0xlbmd0aCgpIGNvbnN0CisgICAgeworICAgICAgICBBU1NF
UlQobV90eXBlID09IEhUTUxUb2tlbjo6Q2hhcmFjdGVyKTsKKyAgICAgICAgcmV0dXJuIG1fZXh0
ZXJuYWxDaGFyYWN0ZXJzTGVuZ3RoOworICAgIH0KKworICAgIGJvb2wgaXNBbGw4Qml0RGF0YSgp
IGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9pc0FsbDhCaXREYXRhOworICAgIH0KKwor
ICAgIGNvbnN0IFN0cmluZyYgY29tbWVudCgpIGNvbnN0CisgICAgeworICAgICAgICBBU1NFUlQo
bV90eXBlID09IEhUTUxUb2tlbjo6Q29tbWVudCk7CisgICAgICAgIHJldHVybiBtX2RhdGE7Cisg
ICAgfQorCisgICAgLy8gRklYTUU6IERpc3Rpbmd1aXNoIGJldHdlZW4gYSBtaXNzaW5nIHB1Ymxp
YyBpZGVudGlmZXIgYW5kIGFuIGVtcHR5IG9uZS4KKyAgICBXVEY6OlZlY3RvcjxVQ2hhcj4mIHB1
YmxpY0lkZW50aWZpZXIoKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBI
VE1MVG9rZW46OkRPQ1RZUEUpOworICAgICAgICByZXR1cm4gbV9kb2N0eXBlRGF0YS0+bV9wdWJs
aWNJZGVudGlmaWVyOworICAgIH0KKworICAgIC8vIEZJWE1FOiBEaXN0aW5ndWlzaCBiZXR3ZWVu
IGEgbWlzc2luZyBzeXN0ZW0gaWRlbnRpZmVyIGFuZCBhbiBlbXB0eSBvbmUuCisgICAgV1RGOjpW
ZWN0b3I8VUNoYXI+JiBzeXN0ZW1JZGVudGlmaWVyKCkgY29uc3QKKyAgICB7CisgICAgICAgIEFT
U0VSVChtX3R5cGUgPT0gSFRNTFRva2VuOjpET0NUWVBFKTsKKyAgICAgICAgcmV0dXJuIG1fZG9j
dHlwZURhdGEtPm1fc3lzdGVtSWRlbnRpZmllcjsKKyAgICB9CisKKyAgICB2b2lkIGNsZWFyRXh0
ZXJuYWxDaGFyYWN0ZXJzKCkKKyAgICB7CisgICAgICAgIG1fZXh0ZXJuYWxDaGFyYWN0ZXJzID0g
MDsKKyAgICAgICAgbV9leHRlcm5hbENoYXJhY3RlcnNMZW5ndGggPSAwOworICAgICAgICBtX2lz
QWxsOEJpdERhdGEgPSBmYWxzZTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgZXhwbGljaXQgQXRv
bWljSFRNTFRva2VuKEhUTUxUb2tlbiYgdG9rZW4pCisgICAgICAgIDogbV90eXBlKHRva2VuLnR5
cGUoKSkKKyAgICB7CisgICAgICAgIHN3aXRjaCAobV90eXBlKSB7CisgICAgICAgIGNhc2UgSFRN
TFRva2VuOjpVbmluaXRpYWxpemVkOgorICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBIVE1MVG9rZW46OkRPQ1RZUEU6Cisg
ICAgICAgICAgICBtX25hbWUgPSBBdG9taWNTdHJpbmcodG9rZW4ubmFtZVN0cmluZygpKTsKKyAg
ICAgICAgICAgIG1fZG9jdHlwZURhdGEgPSB0b2tlbi5yZWxlYXNlRG9jdHlwZURhdGEoKTsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEhUTUxUb2tlbjo6RW5kT2ZGaWxlOgorICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgSFRNTFRva2VuOjpTdGFydFRhZzoKKyAgICAg
ICAgY2FzZSBIVE1MVG9rZW46OkVuZFRhZzogeworICAgICAgICAgICAgbV9zZWxmQ2xvc2luZyA9
IHRva2VuLnNlbGZDbG9zaW5nKCk7CisgICAgICAgICAgICBtX25hbWUgPSBBdG9taWNTdHJpbmco
dG9rZW4ubmFtZVN0cmluZygpKTsKKyAgICAgICAgICAgIGluaXRpYWxpemVBdHRyaWJ1dGVzKHRv
a2VuLmF0dHJpYnV0ZXMoKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAg
ICBjYXNlIEhUTUxUb2tlbjo6Q29tbWVudDoKKyAgICAgICAgICAgIGlmICh0b2tlbi5pc0FsbDhC
aXREYXRhKCkpCisgICAgICAgICAgICAgICAgbV9kYXRhID0gU3RyaW5nOjptYWtlOEJpdEZyb20x
NkJpdFNvdXJjZSh0b2tlbi5jb21tZW50KCkuZGF0YSgpLCB0b2tlbi5jb21tZW50KCkuc2l6ZSgp
KTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBtX2RhdGEgPSBTdHJpbmcodG9r
ZW4uY29tbWVudCgpLmRhdGEoKSwgdG9rZW4uY29tbWVudCgpLnNpemUoKSk7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgY2FzZSBIVE1MVG9rZW46OkNoYXJhY3RlcjoKKyAgICAgICAgICAg
IG1fZXh0ZXJuYWxDaGFyYWN0ZXJzID0gdG9rZW4uY2hhcmFjdGVycygpLmRhdGEoKTsKKyAgICAg
ICAgICAgIG1fZXh0ZXJuYWxDaGFyYWN0ZXJzTGVuZ3RoID0gdG9rZW4uY2hhcmFjdGVycygpLnNp
emUoKTsKKyAgICAgICAgICAgIG1faXNBbGw4Qml0RGF0YSA9IHRva2VuLmlzQWxsOEJpdERhdGEo
KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorCisjaWYgRU5BQkxFKFRI
UkVBREVEX0hUTUxfUEFSU0VSKQorCisgICAgZXhwbGljaXQgQXRvbWljSFRNTFRva2VuKGNvbnN0
IENvbXBhY3RIVE1MVG9rZW4mIHRva2VuKQorICAgICAgICA6IG1fdHlwZSh0b2tlbi50eXBlKCkp
CisgICAgeworICAgICAgICBzd2l0Y2ggKG1fdHlwZSkgeworICAgICAgICBjYXNlIEhUTUxUb2tl
bjo6VW5pbml0aWFsaXplZDoKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgSFRNTFRva2VuOjpET0NUWVBFOgorICAgICAg
ICAgICAgbV9uYW1lID0gdG9rZW4uZGF0YSgpOworICAgICAgICAgICAgbV9kb2N0eXBlRGF0YSA9
IGFkb3B0UHRyKG5ldyBEb2N0eXBlRGF0YSgpKTsKKyAgICAgICAgICAgIG1fZG9jdHlwZURhdGEt
Pm1faGFzUHVibGljSWRlbnRpZmllciA9IHRydWU7CisgICAgICAgICAgICBtX2RvY3R5cGVEYXRh
LT5tX3B1YmxpY0lkZW50aWZpZXIuYXBwZW5kKHRva2VuLnB1YmxpY0lkZW50aWZpZXIoKS5jaGFy
YWN0ZXJzKCksIHRva2VuLnB1YmxpY0lkZW50aWZpZXIoKS5sZW5ndGgoKSk7CisgICAgICAgICAg
ICBtX2RvY3R5cGVEYXRhLT5tX2hhc1N5c3RlbUlkZW50aWZpZXIgPSB0cnVlOworICAgICAgICAg
ICAgbV9kb2N0eXBlRGF0YS0+bV9zeXN0ZW1JZGVudGlmaWVyLmFwcGVuZCh0b2tlbi5zeXN0ZW1J
ZGVudGlmaWVyKCkuY2hhcmFjdGVycygpLCB0b2tlbi5zeXN0ZW1JZGVudGlmaWVyKCkubGVuZ3Ro
KCkpOworICAgICAgICAgICAgbV9kb2N0eXBlRGF0YS0+bV9mb3JjZVF1aXJrcyA9IHRva2VuLmRv
Y3R5cGVGb3JjZXNRdWlya3MoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEhU
TUxUb2tlbjo6RW5kT2ZGaWxlOgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgSFRN
TFRva2VuOjpTdGFydFRhZzoKKyAgICAgICAgICAgIG1fYXR0cmlidXRlcy5yZXNlcnZlSW5pdGlh
bENhcGFjaXR5KHRva2VuLmF0dHJpYnV0ZXMoKS5zaXplKCkpOworICAgICAgICAgICAgZm9yIChW
ZWN0b3I8Q29tcGFjdEF0dHJpYnV0ZT46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gdG9rZW4uYXR0cmli
dXRlcygpLmJlZ2luKCk7IGl0ICE9IHRva2VuLmF0dHJpYnV0ZXMoKS5lbmQoKTsgKytpdCkKKyAg
ICAgICAgICAgICAgICBtX2F0dHJpYnV0ZXMuYXBwZW5kKEF0dHJpYnV0ZShRdWFsaWZpZWROYW1l
KG51bGxBdG9tLCBpdC0+bmFtZSgpLCBudWxsQXRvbSksIGl0LT52YWx1ZSgpKSk7CisgICAgICAg
ICAgICAvLyBGYWxsIHRocm91Z2ghCisgICAgICAgIGNhc2UgSFRNTFRva2VuOjpFbmRUYWc6Cisg
ICAgICAgICAgICBtX3NlbGZDbG9zaW5nID0gdG9rZW4uc2VsZkNsb3NpbmcoKTsKKyAgICAgICAg
ICAgIG1fbmFtZSA9IEF0b21pY1N0cmluZyh0b2tlbi5kYXRhKCkpOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGNhc2UgSFRNTFRva2VuOjpDb21tZW50OgorICAgICAgICAgICAgbV9kYXRh
ID0gdG9rZW4uZGF0YSgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgSFRNTFRv
a2VuOjpDaGFyYWN0ZXI6CisgICAgICAgICAgICBtX2V4dGVybmFsQ2hhcmFjdGVycyA9IHRva2Vu
LmRhdGEoKS5jaGFyYWN0ZXJzKCk7CisgICAgICAgICAgICBtX2V4dGVybmFsQ2hhcmFjdGVyc0xl
bmd0aCA9IHRva2VuLmRhdGEoKS5sZW5ndGgoKTsKKyAgICAgICAgICAgIG1faXNBbGw4Qml0RGF0
YSA9IHRva2VuLmlzQWxsOEJpdERhdGEoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9
CisgICAgfQorCisjZW5kaWYKKworICAgIGV4cGxpY2l0IEF0b21pY0hUTUxUb2tlbihIVE1MVG9r
ZW46OlR5cGUgdHlwZSkKKyAgICAgICAgOiBtX3R5cGUodHlwZSkKKyAgICAgICAgLCBtX2V4dGVy
bmFsQ2hhcmFjdGVycygwKQorICAgICAgICAsIG1fZXh0ZXJuYWxDaGFyYWN0ZXJzTGVuZ3RoKDAp
CisgICAgICAgICwgbV9pc0FsbDhCaXREYXRhKGZhbHNlKQorICAgICAgICAsIG1fc2VsZkNsb3Np
bmcoZmFsc2UpCisgICAgeworICAgIH0KKworICAgIEF0b21pY0hUTUxUb2tlbihIVE1MVG9rZW46
OlR5cGUgdHlwZSwgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBjb25zdCBWZWN0b3I8QXR0cmli
dXRlPiYgYXR0cmlidXRlcyA9IFZlY3RvcjxBdHRyaWJ1dGU+KCkpCisgICAgICAgIDogbV90eXBl
KHR5cGUpCisgICAgICAgICwgbV9uYW1lKG5hbWUpCisgICAgICAgICwgbV9leHRlcm5hbENoYXJh
Y3RlcnMoMCkKKyAgICAgICAgLCBtX2V4dGVybmFsQ2hhcmFjdGVyc0xlbmd0aCgwKQorICAgICAg
ICAsIG1faXNBbGw4Qml0RGF0YShmYWxzZSkKKyAgICAgICAgLCBtX3NlbGZDbG9zaW5nKGZhbHNl
KQorICAgICAgICAsIG1fYXR0cmlidXRlcyhhdHRyaWJ1dGVzKQorICAgIHsKKyAgICAgICAgQVNT
RVJUKHVzZXNOYW1lKCkpOworICAgIH0KKworICAgIEhUTUxUb2tlbjo6VHlwZSBtX3R5cGU7CisK
KyAgICB2b2lkIGluaXRpYWxpemVBdHRyaWJ1dGVzKGNvbnN0IEhUTUxUb2tlbjo6QXR0cmlidXRl
TGlzdCYgYXR0cmlidXRlcyk7CisgICAgUXVhbGlmaWVkTmFtZSBuYW1lRm9yQXR0cmlidXRlKGNv
bnN0IEhUTUxUb2tlbjo6QXR0cmlidXRlJikgY29uc3Q7CisKKyAgICBib29sIHVzZXNOYW1lKCkg
Y29uc3Q7CisKKyAgICBib29sIHVzZXNBdHRyaWJ1dGVzKCkgY29uc3Q7CisKKyAgICAvLyAibmFt
ZSIgZm9yIERPQ1RZUEUsIFN0YXJ0VGFnLCBhbmQgRW5kVGFnCisgICAgQXRvbWljU3RyaW5nIG1f
bmFtZTsKKworICAgIC8vICJkYXRhIiBmb3IgQ29tbWVudAorICAgIFN0cmluZyBtX2RhdGE7CisK
KyAgICAvLyAiY2hhcmFjdGVycyIgZm9yIENoYXJhY3RlcgorICAgIC8vCisgICAgLy8gV2UgZG9u
J3Qgd2FudCB0byBjb3B5IHRoZSB0aGUgY2hhcmFjdGVycyBvdXQgb2YgdGhlIFRva2VuLCBzbyB3
ZQorICAgIC8vIGtlZXAgYSBwb2ludGVyIHRvIGl0cyBidWZmZXIgaW5zdGVhZC4gVGhpcyBidWZm
ZXIgaXMgb3duZWQgYnkgdGhlCisgICAgLy8gVG9rZW4gYW5kIGNhdXNlcyBhIGxpZmV0aW1lIGRl
cGVuZGVuY2UgYmV0d2VlbiB0aGVzZSBvYmplY3RzLgorICAgIC8vCisgICAgLy8gRklYTUU6IEFk
ZCBhIG1lY2hhbmlzbSBmb3IgImludGVybmFsaXppbmciIHRoZSBjaGFyYWN0ZXJzIHdoZW4gdGhl
CisgICAgLy8gICAgICAgIEhUTUxUb2tlbiBpcyBkZXN0cnVjdGVkLgorICAgIGNvbnN0IFVDaGFy
KiBtX2V4dGVybmFsQ2hhcmFjdGVyczsKKyAgICBzaXplX3QgbV9leHRlcm5hbENoYXJhY3RlcnNM
ZW5ndGg7CisgICAgYm9vbCBtX2lzQWxsOEJpdERhdGE7CisKKyAgICAvLyBGb3IgRE9DVFlQRQor
ICAgIE93blB0cjxEb2N0eXBlRGF0YT4gbV9kb2N0eXBlRGF0YTsKKworICAgIC8vIEZvciBTdGFy
dFRhZyBhbmQgRW5kVGFnCisgICAgYm9vbCBtX3NlbGZDbG9zaW5nOworCisgICAgVmVjdG9yPEF0
dHJpYnV0ZT4gbV9hdHRyaWJ1dGVzOworfTsKKworaW5saW5lIHZvaWQgQXRvbWljSFRNTFRva2Vu
Ojppbml0aWFsaXplQXR0cmlidXRlcyhjb25zdCBIVE1MVG9rZW46OkF0dHJpYnV0ZUxpc3QmIGF0
dHJpYnV0ZXMpCit7CisgICAgc2l6ZV90IHNpemUgPSBhdHRyaWJ1dGVzLnNpemUoKTsKKyAgICBp
ZiAoIXNpemUpCisgICAgICAgIHJldHVybjsKKworICAgIG1fYXR0cmlidXRlcy5jbGVhcigpOwor
ICAgIG1fYXR0cmlidXRlcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHNpemUpOworICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7CisgICAgICAgIGNvbnN0IEhUTUxUb2tlbjo6
QXR0cmlidXRlJiBhdHRyaWJ1dGUgPSBhdHRyaWJ1dGVzW2ldOworICAgICAgICBpZiAoYXR0cmli
dXRlLm1fbmFtZS5pc0VtcHR5KCkpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAv
LyBGSVhNRTogV2Ugc2hvdWxkIGJlIGFibGUgdG8gYWRkIHRoZSBmb2xsb3dpbmcgQVNTRVJUIG9u
Y2Ugd2UgZml4CisgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD02Mjk3MQorICAgICAgICAvLyAgIEFTU0VSVChhdHRyaWJ1dGUubV9uYW1lUmFuZ2UubV9z
dGFydCk7CisgICAgICAgIEFTU0VSVChhdHRyaWJ1dGUubV9uYW1lUmFuZ2UubV9lbmQpOworICAg
ICAgICBBU1NFUlQoYXR0cmlidXRlLm1fdmFsdWVSYW5nZS5tX3N0YXJ0KTsKKyAgICAgICAgQVNT
RVJUKGF0dHJpYnV0ZS5tX3ZhbHVlUmFuZ2UubV9lbmQpOworCisgICAgICAgIEF0b21pY1N0cmlu
ZyB2YWx1ZShhdHRyaWJ1dGUubV92YWx1ZS5kYXRhKCksIGF0dHJpYnV0ZS5tX3ZhbHVlLnNpemUo
KSk7CisgICAgICAgIGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUgPSBuYW1lRm9yQXR0cmlidXRl
KGF0dHJpYnV0ZSk7CisgICAgICAgIGlmICghZmluZEF0dHJpYnV0ZUluVmVjdG9yKG1fYXR0cmli
dXRlcywgbmFtZSkpCisgICAgICAgICAgICBtX2F0dHJpYnV0ZXMuYXBwZW5kKEF0dHJpYnV0ZShu
YW1lLCB2YWx1ZSkpOworICAgIH0KK30KKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0JhY2tncm91bmRIVE1MUGFyc2VyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvcGFyc2VyL0JhY2tncm91bmRIVE1MUGFyc2VyLmNwcAppbmRleCA4Njc1ZGIw
MGExMzMzYmQ3MzU4MDViOGUwMzc3MmVmZTE2OTA0ZjViLi41NzgxYTM4NzhhNDY3ZDFkMGM4OGI4
ZTY2YTRkNzczZTMwOGU0OWU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNl
ci9CYWNrZ3JvdW5kSFRNTFBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJz
ZXIvQmFja2dyb3VuZEhUTUxQYXJzZXIuY3BwCkBAIC0xMTMsNyArMTEzLDcgQEAgdm9pZCBCYWNr
Z3JvdW5kSFRNTFBhcnNlcjo6bWFya0VuZE9mRmlsZSgpCiAKIGJvb2wgQmFja2dyb3VuZEhUTUxQ
YXJzZXI6OnNpbXVsYXRlVHJlZUJ1aWxkZXIoY29uc3QgQ29tcGFjdEhUTUxUb2tlbiYgdG9rZW4p
CiB7Ci0gICAgaWYgKHRva2VuLnR5cGUoKSA9PSBIVE1MVG9rZW5UeXBlczo6U3RhcnRUYWcpIHsK
KyAgICBpZiAodG9rZW4udHlwZSgpID09IEhUTUxUb2tlbjo6U3RhcnRUYWcpIHsKICAgICAgICAg
Y29uc3QgU3RyaW5nJiB0YWdOYW1lID0gdG9rZW4uZGF0YSgpOwogICAgICAgICBpZiAodGhyZWFk
U2FmZU1hdGNoKHRhZ05hbWUsIFNWR05hbWVzOjpzdmdUYWcpCiAgICAgICAgICAgICB8fCB0aHJl
YWRTYWZlTWF0Y2godGFnTmFtZSwgTWF0aE1MTmFtZXM6Om1hdGhUYWcpKQpAQCAtMTM1LDcgKzEz
NSw3IEBAIGJvb2wgQmFja2dyb3VuZEhUTUxQYXJzZXI6OnNpbXVsYXRlVHJlZUJ1aWxkZXIoY29u
c3QgQ29tcGFjdEhUTUxUb2tlbiYgdG9rZW4pCiAgICAgICAgICAgICBtX3Rva2VuaXplci0+c2V0
U3RhdGUoSFRNTFRva2VuaXplcjo6UkFXVEVYVFN0YXRlKTsKICAgICB9CiAKLSAgICBpZiAodG9r
ZW4udHlwZSgpID09IEhUTUxUb2tlblR5cGVzOjpFbmRUYWcpIHsKKyAgICBpZiAodG9rZW4udHlw
ZSgpID09IEhUTUxUb2tlbjo6RW5kVGFnKSB7CiAgICAgICAgIGNvbnN0IFN0cmluZyYgdGFnTmFt
ZSA9IHRva2VuLmRhdGEoKTsKICAgICAgICAgaWYgKHRocmVhZFNhZmVNYXRjaCh0YWdOYW1lLCBT
VkdOYW1lczo6c3ZnVGFnKSB8fCB0aHJlYWRTYWZlTWF0Y2godGFnTmFtZSwgTWF0aE1MTmFtZXM6
Om1hdGhUYWcpKQogICAgICAgICAgICAgbV9pbkZvcmVpZ25Db250ZW50ID0gZmFsc2U7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9Db21wYWN0SFRNTFRva2VuLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0NvbXBhY3RIVE1MVG9rZW4uY3BwCmluZGV4IDky
ZTYxMzQ5Mzg1MmJhNjllOWEyYTNjMWNjZGZiMjQ5YmJiMWZhZTYuLjE2ODkxMzIxM2I0YjQ2Mjlk
MTRkZDQ1NDY0NWU5ZWEyNzQ3NGI1NGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
cGFyc2VyL0NvbXBhY3RIVE1MVG9rZW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFy
c2VyL0NvbXBhY3RIVE1MVG9rZW4uY3BwCkBAIC01MSwxMCArNTEsMTAgQEAgQ29tcGFjdEhUTUxU
b2tlbjo6Q29tcGFjdEhUTUxUb2tlbihjb25zdCBIVE1MVG9rZW4qIHRva2VuLCBjb25zdCBUZXh0
UG9zaXRpb24mIHQKICAgICAsIG1fdGV4dFBvc2l0aW9uKHRleHRQb3NpdGlvbikKIHsKICAgICBz
d2l0Y2ggKG1fdHlwZSkgewotICAgIGNhc2UgSFRNTFRva2VuVHlwZXM6OlVuaW5pdGlhbGl6ZWQ6
CisgICAgY2FzZSBIVE1MVG9rZW46OlVuaW5pdGlhbGl6ZWQ6CiAgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEhUTUxUb2tlblR5cGVzOjpET0NU
WVBFOiB7CisgICAgY2FzZSBIVE1MVG9rZW46OkRPQ1RZUEU6IHsKICAgICAgICAgbV9kYXRhID0g
U3RyaW5nKHRva2VuLT5uYW1lKCkuZGF0YSgpLCB0b2tlbi0+bmFtZSgpLnNpemUoKSk7CiAgICAg
ICAgIC8vIFRoZXJlIGlzIG9ubHkgMSBET0NUWVBFIHRva2VuIHBlciBkb2N1bWVudCwgc28gdG8g
YXZvaWQgaW5jcmVhc2luZyB0aGUKICAgICAgICAgLy8gc2l6ZSBvZiBDb21wYWN0SFRNTFRva2Vu
LCB3ZSBqdXN0IHVzZSB0aGUgbV9hdHRyaWJ1dGVzIHZlY3Rvci4KQEAgLTY0LDE4ICs2NCwxOCBA
QCBDb21wYWN0SFRNTFRva2VuOjpDb21wYWN0SFRNTFRva2VuKGNvbnN0IEhUTUxUb2tlbiogdG9r
ZW4sIGNvbnN0IFRleHRQb3NpdGlvbiYgdAogICAgICAgICBtX2RvY3R5cGVGb3JjZXNRdWlya3Mg
PSB0b2tlbi0+Zm9yY2VRdWlya3MoKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQotICAgIGNhc2Ug
SFRNTFRva2VuVHlwZXM6OkVuZE9mRmlsZToKKyAgICBjYXNlIEhUTUxUb2tlbjo6RW5kT2ZGaWxl
OgogICAgICAgICBicmVhazsKLSAgICBjYXNlIEhUTUxUb2tlblR5cGVzOjpTdGFydFRhZzoKKyAg
ICBjYXNlIEhUTUxUb2tlbjo6U3RhcnRUYWc6CiAgICAgICAgIG1fYXR0cmlidXRlcy5yZXNlcnZl
SW5pdGlhbENhcGFjaXR5KHRva2VuLT5hdHRyaWJ1dGVzKCkuc2l6ZSgpKTsKICAgICAgICAgZm9y
IChWZWN0b3I8SFRNTFRva2VuOjpBdHRyaWJ1dGU+Ojpjb25zdF9pdGVyYXRvciBpdCA9IHRva2Vu
LT5hdHRyaWJ1dGVzKCkuYmVnaW4oKTsgaXQgIT0gdG9rZW4tPmF0dHJpYnV0ZXMoKS5lbmQoKTsg
KytpdCkKICAgICAgICAgICAgIG1fYXR0cmlidXRlcy5hcHBlbmQoQ29tcGFjdEF0dHJpYnV0ZShT
dHJpbmcoaXQtPm1fbmFtZS5kYXRhKCksIGl0LT5tX25hbWUuc2l6ZSgpKSwgU3RyaW5nKGl0LT5t
X3ZhbHVlLmRhdGEoKSwgaXQtPm1fdmFsdWUuc2l6ZSgpKSkpOwogICAgICAgICAvLyBGYWxsIHRo
cm91Z2ghCi0gICAgY2FzZSBIVE1MVG9rZW5UeXBlczo6RW5kVGFnOgorICAgIGNhc2UgSFRNTFRv
a2VuOjpFbmRUYWc6CiAgICAgICAgIG1fc2VsZkNsb3NpbmcgPSB0b2tlbi0+c2VsZkNsb3Npbmco
KTsKICAgICAgICAgLy8gRmFsbCB0aHJvdWdoIQotICAgIGNhc2UgSFRNTFRva2VuVHlwZXM6OkNv
bW1lbnQ6Ci0gICAgY2FzZSBIVE1MVG9rZW5UeXBlczo6Q2hhcmFjdGVyOgorICAgIGNhc2UgSFRN
TFRva2VuOjpDb21tZW50OgorICAgIGNhc2UgSFRNTFRva2VuOjpDaGFyYWN0ZXI6CiAgICAgICAg
IGlmICh0b2tlbi0+aXNBbGw4Qml0RGF0YSgpKSB7CiAgICAgICAgICAgICBtX2RhdGEgPSBTdHJp
bmc6Om1ha2U4Qml0RnJvbTE2Qml0U291cmNlKHRva2VuLT5kYXRhKCkuZGF0YSgpLCB0b2tlbi0+
ZGF0YSgpLnNpemUoKSk7CiAgICAgICAgICAgICBtX2lzQWxsOEJpdERhdGEgPSB0cnVlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQ29tcGFjdEhUTUxUb2tlbi5oIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQ29tcGFjdEhUTUxUb2tlbi5oCmluZGV4IDZjOTVm
NmExY2VlYWI2Nzk0MThlNzEzMDU5ODNjOGZiOTk0Mzc5ZmUuLmI3Yzg1NjkwNDZiNGQyMTdiYjBl
MzljMmVlOTA2ZjMwNTI2M2ViODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFy
c2VyL0NvbXBhY3RIVE1MVG9rZW4uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9D
b21wYWN0SFRNTFRva2VuLmgKQEAgLTI4LDcgKzI4LDcgQEAKIAogI2lmIEVOQUJMRShUSFJFQURF
RF9IVE1MX1BBUlNFUikKIAotI2luY2x1ZGUgIkhUTUxUb2tlblR5cGVzLmgiCisjaW5jbHVkZSAi
SFRNTFRva2VuLmgiCiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9QYXNz
T3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KQEAgLTM5LDcgKzM5LDYgQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBIVE1MVG9rZW47CiBjbGFzcyBYU1NJbmZv
OwogCiBjbGFzcyBDb21wYWN0QXR0cmlidXRlIHsKQEAgLTY1LDcgKzY0LDcgQEAgcHVibGljOgog
CiAgICAgYm9vbCBpc1NhZmVUb1NlbmRUb0Fub3RoZXJUaHJlYWQoKSBjb25zdDsKIAotICAgIEhU
TUxUb2tlblR5cGVzOjpUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxIVE1M
VG9rZW5UeXBlczo6VHlwZT4obV90eXBlKTsgfQorICAgIEhUTUxUb2tlbjo6VHlwZSB0eXBlKCkg
Y29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8SFRNTFRva2VuOjpUeXBlPihtX3R5cGUpOyB9CiAg
ICAgY29uc3QgU3RyaW5nJiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhOyB9CiAgICAgYm9v
bCBzZWxmQ2xvc2luZygpIGNvbnN0IHsgcmV0dXJuIG1fc2VsZkNsb3Npbmc7IH0KICAgICBib29s
IGlzQWxsOEJpdERhdGEoKSBjb25zdCB7IHJldHVybiBtX2lzQWxsOEJpdERhdGE7IH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxDb25zdHJ1Y3Rpb25TaXRlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxDb25zdHJ1Y3Rpb25TaXRlLmNwcApp
bmRleCA1MWVkMzJlZDIxMzE4YWRkYjZhM2NhY2EyNDM5NmZjYjk1YzY5NjY4Li5iZTFjNTM1NDMy
OTU5MGY4OWJjMDg3ODFkNmQ1MGJlM2ZhNWUwZmU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3BhcnNlci9IVE1MQ29uc3RydWN0aW9uU2l0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9wYXJzZXIvSFRNTENvbnN0cnVjdGlvblNpdGUuY3BwCkBAIC0yNyw2ICsyNyw3IEBA
CiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiSFRNTFRyZWVCdWlsZGVyLmgiCiAKKyNp
bmNsdWRlICJBdG9taWNIVE1MVG9rZW4uaCIKICNpbmNsdWRlICJDb21tZW50LmgiCiAjaW5jbHVk
ZSAiRG9jdW1lbnRGcmFnbWVudC5oIgogI2luY2x1ZGUgIkRvY3VtZW50VHlwZS5oIgpAQCAtMzQw
LDcgKzM0MSw3IEBAIHZvaWQgSFRNTENvbnN0cnVjdGlvblNpdGU6OmZpbmlzaGVkUGFyc2luZygp
CiAKIHZvaWQgSFRNTENvbnN0cnVjdGlvblNpdGU6Omluc2VydERvY3R5cGUoQXRvbWljSFRNTFRv
a2VuKiB0b2tlbikKIHsKLSAgICBBU1NFUlQodG9rZW4tPnR5cGUoKSA9PSBIVE1MVG9rZW5UeXBl
czo6RE9DVFlQRSk7CisgICAgQVNTRVJUKHRva2VuLT50eXBlKCkgPT0gSFRNTFRva2VuOjpET0NU
WVBFKTsKIAogICAgIGNvbnN0IFN0cmluZyYgcHVibGljSWQgPSBTdHJpbmc6OmFkb3B0KHRva2Vu
LT5wdWJsaWNJZGVudGlmaWVyKCkpOwogICAgIGNvbnN0IFN0cmluZyYgc3lzdGVtSWQgPSBTdHJp
bmc6OmFkb3B0KHRva2VuLT5zeXN0ZW1JZGVudGlmaWVyKCkpOwpAQCAtMzY1LDE5ICszNjYsMTkg
QEAgdm9pZCBIVE1MQ29uc3RydWN0aW9uU2l0ZTo6aW5zZXJ0RG9jdHlwZShBdG9taWNIVE1MVG9r
ZW4qIHRva2VuKQogCiB2b2lkIEhUTUxDb25zdHJ1Y3Rpb25TaXRlOjppbnNlcnRDb21tZW50KEF0
b21pY0hUTUxUb2tlbiogdG9rZW4pCiB7Ci0gICAgQVNTRVJUKHRva2VuLT50eXBlKCkgPT0gSFRN
TFRva2VuVHlwZXM6OkNvbW1lbnQpOworICAgIEFTU0VSVCh0b2tlbi0+dHlwZSgpID09IEhUTUxU
b2tlbjo6Q29tbWVudCk7CiAgICAgYXR0YWNoTGF0ZXIoY3VycmVudE5vZGUoKSwgQ29tbWVudDo6
Y3JlYXRlKG93bmVyRG9jdW1lbnRGb3JDdXJyZW50Tm9kZSgpLCB0b2tlbi0+Y29tbWVudCgpKSk7
CiB9CiAKIHZvaWQgSFRNTENvbnN0cnVjdGlvblNpdGU6Omluc2VydENvbW1lbnRPbkRvY3VtZW50
KEF0b21pY0hUTUxUb2tlbiogdG9rZW4pCiB7Ci0gICAgQVNTRVJUKHRva2VuLT50eXBlKCkgPT0g
SFRNTFRva2VuVHlwZXM6OkNvbW1lbnQpOworICAgIEFTU0VSVCh0b2tlbi0+dHlwZSgpID09IEhU
TUxUb2tlbjo6Q29tbWVudCk7CiAgICAgYXR0YWNoTGF0ZXIobV9hdHRhY2htZW50Um9vdCwgQ29t
bWVudDo6Y3JlYXRlKG1fZG9jdW1lbnQsIHRva2VuLT5jb21tZW50KCkpKTsKIH0KIAogdm9pZCBI
VE1MQ29uc3RydWN0aW9uU2l0ZTo6aW5zZXJ0Q29tbWVudE9uSFRNTEh0bWxFbGVtZW50KEF0b21p
Y0hUTUxUb2tlbiogdG9rZW4pCiB7Ci0gICAgQVNTRVJUKHRva2VuLT50eXBlKCkgPT0gSFRNTFRv
a2VuVHlwZXM6OkNvbW1lbnQpOworICAgIEFTU0VSVCh0b2tlbi0+dHlwZSgpID09IEhUTUxUb2tl
bjo6Q29tbWVudCk7CiAgICAgQ29udGFpbmVyTm9kZSogcGFyZW50ID0gbV9vcGVuRWxlbWVudHMu
cm9vdE5vZGUoKTsKICAgICBhdHRhY2hMYXRlcihwYXJlbnQsIENvbW1lbnQ6OmNyZWF0ZShwYXJl
bnQtPmRvY3VtZW50KCksIHRva2VuLT5jb21tZW50KCkpKTsKIH0KQEAgLTQxOSw3ICs0MjAsNyBA
QCB2b2lkIEhUTUxDb25zdHJ1Y3Rpb25TaXRlOjppbnNlcnRIVE1MRWxlbWVudChBdG9taWNIVE1M
VG9rZW4qIHRva2VuKQogCiB2b2lkIEhUTUxDb25zdHJ1Y3Rpb25TaXRlOjppbnNlcnRTZWxmQ2xv
c2luZ0hUTUxFbGVtZW50KEF0b21pY0hUTUxUb2tlbiogdG9rZW4pCiB7Ci0gICAgQVNTRVJUKHRv
a2VuLT50eXBlKCkgPT0gSFRNTFRva2VuVHlwZXM6OlN0YXJ0VGFnKTsKKyAgICBBU1NFUlQodG9r
ZW4tPnR5cGUoKSA9PSBIVE1MVG9rZW46OlN0YXJ0VGFnKTsKICAgICAvLyBOb3JtYWxseSBIVE1M
RWxlbWVudFN0YWNrIGlzIHJlc3BvbnNpYmxlIGZvciBjYWxsaW5nIGZpbmlzaFBhcnNpbmdDaGls
ZHJlbiwKICAgICAvLyBidXQgc2VsZi1jbG9zaW5nIGVsZW1lbnRzIGFyZSBuZXZlciBpbiB0aGUg
ZWxlbWVudCBzdGFjayBzbyB0aGUgc3RhY2sKICAgICAvLyBkb2Vzbid0IGdldCBhIGNoYW5jZSB0
byB0ZWxsIHRoZW0gdGhhdCB3ZSdyZSBkb25lIHBhcnNpbmcgdGhlaXIgY2hpbGRyZW4uCkBAIC00
NTUsNyArNDU2LDcgQEAgdm9pZCBIVE1MQ29uc3RydWN0aW9uU2l0ZTo6aW5zZXJ0U2NyaXB0RWxl
bWVudChBdG9taWNIVE1MVG9rZW4qIHRva2VuKQogCiB2b2lkIEhUTUxDb25zdHJ1Y3Rpb25TaXRl
OjppbnNlcnRGb3JlaWduRWxlbWVudChBdG9taWNIVE1MVG9rZW4qIHRva2VuLCBjb25zdCBBdG9t
aWNTdHJpbmcmIG5hbWVzcGFjZVVSSSkKIHsKLSAgICBBU1NFUlQodG9rZW4tPnR5cGUoKSA9PSBI
VE1MVG9rZW5UeXBlczo6U3RhcnRUYWcpOworICAgIEFTU0VSVCh0b2tlbi0+dHlwZSgpID09IEhU
TUxUb2tlbjo6U3RhcnRUYWcpOwogICAgIG5vdEltcGxlbWVudGVkKCk7IC8vIHBhcnNlRXJyb3Ig
d2hlbiB4bWxucyBvciB4bWxuczp4bGluayBhcmUgd3JvbmcuCiAKICAgICBSZWZQdHI8RWxlbWVu
dD4gZWxlbWVudCA9IGNyZWF0ZUVsZW1lbnQodG9rZW4sIG5hbWVzcGFjZVVSSSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRG9jdW1lbnRQYXJzZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFyc2VyLmNwcAppbmRleCAw
OTg1NDhlNjEyY2ZiYTRjZjc2YTE2YzAzN2Y5NmYxMTMzYjhkNjVjLi42NDg1MGNkOWExMWM1NjMy
NmU4ZDc2MDEzOGNkZjdhYzllOWYzOTc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L3BhcnNlci9IVE1MRG9jdW1lbnRQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
cGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRl
ICJjb25maWcuaCIKICNpbmNsdWRlICJIVE1MRG9jdW1lbnRQYXJzZXIuaCIKIAorI2luY2x1ZGUg
IkF0b21pY0hUTUxUb2tlbi5oIgogI2luY2x1ZGUgIkJhY2tncm91bmRIVE1MUGFyc2VyLmgiCiAj
aW5jbHVkZSAiQ29tcGFjdEhUTUxUb2tlbi5oIgogI2luY2x1ZGUgIkNvbnRlbnRTZWN1cml0eVBv
bGljeS5oIgpAQCAtMzQ4LDcgKzM0OSw3IEBAIHZvaWQgSFRNTERvY3VtZW50UGFyc2VyOjpwcm9j
ZXNzUGFyc2VkQ2h1bmtGcm9tQmFja2dyb3VuZFBhcnNlcihQYXNzT3duUHRyPFBhcnNlCiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgfQogCi0gICAgICAgIGlmIChpdC0+dHlwZSgpID09IEhU
TUxUb2tlblR5cGVzOjpFbmRPZkZpbGUpIHsKKyAgICAgICAgaWYgKGl0LT50eXBlKCkgPT0gSFRN
TFRva2VuOjpFbmRPZkZpbGUpIHsKICAgICAgICAgICAgIEFTU0VSVChpdCArIDEgPT0gdG9rZW5z
LT5lbmQoKSk7IC8vIFRoZSBFT0YgaXMgYXNzdW1lZCB0byBiZSB0aGUgbGFzdCB0b2tlbiBvZiB0
aGlzIGJ1bmNoLgogICAgICAgICAgICAgcHJlcGFyZVRvU3RvcFBhcnNpbmcoKTsKICAgICAgICAg
ICAgIGJyZWFrOwpAQCAtNDYzLDcgKzQ2NCw3IEBAIHZvaWQgSFRNTERvY3VtZW50UGFyc2VyOjpj
b25zdHJ1Y3RUcmVlRnJvbUhUTUxUb2tlbihIVE1MVG9rZW4mIHJhd1Rva2VuKQogICAgIC8vIEZJ
WE1FOiBTdG9wIGNsZWFyaW5nIHRoZSByYXdUb2tlbiBvbmNlIHdlIHN0YXJ0IHJ1bm5pbmcgdGhl
IHBhcnNlciBvZmYKICAgICAvLyB0aGUgbWFpbiB0aHJlYWQgb3Igb25jZSB3ZSBzdG9wIGFsbG93
aW5nIHN5bmNocm9ub3VzIEphdmFTY3JpcHQKICAgICAvLyBleGVjdXRpb24gZnJvbSBwYXJzZUF0
dHJpYnV0ZS4KLSAgICBpZiAocmF3VG9rZW4udHlwZSgpICE9IEhUTUxUb2tlblR5cGVzOjpDaGFy
YWN0ZXIpCisgICAgaWYgKHJhd1Rva2VuLnR5cGUoKSAhPSBIVE1MVG9rZW46OkNoYXJhY3RlcikK
ICAgICAgICAgcmF3VG9rZW4uY2xlYXIoKTsKIAogICAgIG1fdHJlZUJ1aWxkZXItPmNvbnN0cnVj
dFRyZWUodG9rZW4uZ2V0KCkpOwpAQCAtNDc1LDcgKzQ3Niw3IEBAIHZvaWQgSFRNTERvY3VtZW50
UGFyc2VyOjpjb25zdHJ1Y3RUcmVlRnJvbUhUTUxUb2tlbihIVE1MVG9rZW4mIHJhd1Rva2VuKQog
ICAgIHRva2VuLT5jbGVhckV4dGVybmFsQ2hhcmFjdGVycygpOwogCiAgICAgaWYgKCFyYXdUb2tl
bi5pc1VuaW5pdGlhbGl6ZWQoKSkgewotICAgICAgICBBU1NFUlQocmF3VG9rZW4udHlwZSgpID09
IEhUTUxUb2tlblR5cGVzOjpDaGFyYWN0ZXIpOworICAgICAgICBBU1NFUlQocmF3VG9rZW4udHlw
ZSgpID09IEhUTUxUb2tlbjo6Q2hhcmFjdGVyKTsKICAgICAgICAgcmF3VG9rZW4uY2xlYXIoKTsK
ICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRG9j
dW1lbnRQYXJzZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBh
cnNlci5oCmluZGV4IDAyMDdjYzkwNzRiYTc2OTFkMzVlOTBhYTE5YWUyZDBiYjBlMjE5M2IuLjc0
Mjg5YmI2Yjc1MDFjNWE5MjZmMjU5MjIyMjRlYTIyNGVlYzI1MmYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5oCkBAIC0yOCw2ICsyOCw3IEBA
CiAKICNpbmNsdWRlICJCYWNrZ3JvdW5kSFRNTElucHV0U3RyZWFtLmgiCiAjaW5jbHVkZSAiQ2Fj
aGVkUmVzb3VyY2VDbGllbnQuaCIKKyNpbmNsdWRlICJDb21wYWN0SFRNTFRva2VuLmgiCiAjaW5j
bHVkZSAiRnJhZ21lbnRTY3JpcHRpbmdQZXJtaXNzaW9uLmgiCiAjaW5jbHVkZSAiSFRNTElucHV0
U3RyZWFtLmgiCiAjaW5jbHVkZSAiSFRNTFBhcnNlck9wdGlvbnMuaCIKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxNZXRhQ2hhcnNldFBhcnNlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MTWV0YUNoYXJzZXRQYXJzZXIuY3BwCmluZGV4IDU4
NmZmYTk1MjZkNGMzM2U5NWUzYTZmNjNmN2NjZDUyMjc2ZWNiZDUuLjcwY2NkNTgwYzI0MDllOTc2
NzNiNDQ5ZTcxNjM1MjVlM2JiODEyZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
cGFyc2VyL0hUTUxNZXRhQ2hhcnNldFBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9wYXJzZXIvSFRNTE1ldGFDaGFyc2V0UGFyc2VyLmNwcApAQCAtMTc2LDggKzE3Niw4IEBAIGJv
b2wgSFRNTE1ldGFDaGFyc2V0UGFyc2VyOjpjaGVja0Zvck1ldGFDaGFyc2V0KGNvbnN0IGNoYXIq
IGRhdGEsIHNpemVfdCBsZW5ndGgpCiAgICAgbV9pbnB1dC5hcHBlbmQoU2VnbWVudGVkU3RyaW5n
KG1fYXNzdW1lZENvZGVjLT5kZWNvZGUoZGF0YSwgbGVuZ3RoKSkpOwogCiAgICAgd2hpbGUgKG1f
dG9rZW5pemVyLT5uZXh0VG9rZW4obV9pbnB1dCwgbV90b2tlbikpIHsKLSAgICAgICAgYm9vbCBl
bmQgPSBtX3Rva2VuLnR5cGUoKSA9PSBIVE1MVG9rZW5UeXBlczo6RW5kVGFnOwotICAgICAgICBp
ZiAoZW5kIHx8IG1fdG9rZW4udHlwZSgpID09IEhUTUxUb2tlblR5cGVzOjpTdGFydFRhZykgewor
ICAgICAgICBib29sIGVuZCA9IG1fdG9rZW4udHlwZSgpID09IEhUTUxUb2tlbjo6RW5kVGFnOwor
ICAgICAgICBpZiAoZW5kIHx8IG1fdG9rZW4udHlwZSgpID09IEhUTUxUb2tlbjo6U3RhcnRUYWcp
IHsKICAgICAgICAgICAgIEF0b21pY1N0cmluZyB0YWdOYW1lKG1fdG9rZW4ubmFtZSgpLmRhdGEo
KSwgbV90b2tlbi5uYW1lKCkuc2l6ZSgpKTsKICAgICAgICAgICAgIGlmICghZW5kKSB7CiAgICAg
ICAgICAgICAgICAgbV90b2tlbml6ZXItPnVwZGF0ZVN0YXRlRm9yKHRhZ05hbWUpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFByZWxvYWRTY2FubmVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQcmVsb2FkU2Nhbm5lci5jcHAKaW5kZXgg
M2Q3ODg4OWJmMWY3OTc4NjY1MjQ4MTcyNTkwOTU4YWJmMGZmOWZjNS4uMGM3Y2EzM2VmYzkxMTkw
ZTllODc4MmJmNTFjMjcyMTEyMmI3Y2YyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9wYXJzZXIvSFRNTFByZWxvYWRTY2FubmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L3BhcnNlci9IVE1MUHJlbG9hZFNjYW5uZXIuY3BwCkBAIC00NSwxMiArNDUsMTIgQEAgdXNpbmcg
bmFtZXNwYWNlIEhUTUxOYW1lczsKIAogc3RhdGljIGJvb2wgaXNTdGFydFRhZyhjb25zdCBIVE1M
VG9rZW4mIHRva2VuKQogewotICAgIHJldHVybiB0b2tlbi50eXBlKCkgPT0gSFRNTFRva2VuVHlw
ZXM6OlN0YXJ0VGFnOworICAgIHJldHVybiB0b2tlbi50eXBlKCkgPT0gSFRNTFRva2VuOjpTdGFy
dFRhZzsKIH0KIAogc3RhdGljIGJvb2wgaXNTdGFydE9yRW5kVGFnKGNvbnN0IEhUTUxUb2tlbiYg
dG9rZW4pCiB7Ci0gICAgcmV0dXJuIHRva2VuLnR5cGUoKSA9PSBIVE1MVG9rZW5UeXBlczo6RW5k
VGFnIHx8IGlzU3RhcnRUYWcodG9rZW4pOworICAgIHJldHVybiB0b2tlbi50eXBlKCkgPT0gSFRN
TFRva2VuOjpFbmRUYWcgfHwgaXNTdGFydFRhZyh0b2tlbik7CiB9CiAKIGNsYXNzIFN0YXJ0VGFn
U2Nhbm5lciB7CkBAIC0yNzksNyArMjc5LDcgQEAgdm9pZCBIVE1MUHJlbG9hZFNjYW5uZXI6OnBy
b2Nlc3NUb2tlbihjb25zdCBIVE1MVG9rZW4mIHRva2VuLCBWZWN0b3I8T3duUHRyPFByZWwKIHsK
ICAgICAvLyA8c3R5bGU+IGlzIHRoZSBvbmx5IHBsYWNlIHdlIHNlYXJjaCBmb3IgdXJscyBpbiBu
b24tc3RhcnQvZW5kLXRhZyB0b2tlbnMuCiAgICAgaWYgKG1faW5TdHlsZSkgewotICAgICAgICBp
ZiAodG9rZW4udHlwZSgpICE9IEhUTUxUb2tlblR5cGVzOjpDaGFyYWN0ZXIpCisgICAgICAgIGlm
ICh0b2tlbi50eXBlKCkgIT0gSFRNTFRva2VuOjpDaGFyYWN0ZXIpCiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIHJldHVybiBtX2Nzc1NjYW5uZXIuc2Nhbih0b2tlbiwgcmVxdWVzdHMpOwog
ICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxTb3VyY2VU
cmFja2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxTb3VyY2VUcmFja2Vy
LmNwcAppbmRleCA4OTg4NWMzZTFjZTJmMTVlM2I4NGRkY2Q0YTlmMTExZTM4YzMyNGRmLi5iZjFh
OGM0NjYwOWJjNDJmMTYwMzZmOGE5NDgzY2E0MGIzNWZjNTE1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3BhcnNlci9IVE1MU291cmNlVHJhY2tlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9wYXJzZXIvSFRNTFNvdXJjZVRyYWNrZXIuY3BwCkBAIC0zNiw3ICszNiw3IEBA
IEhUTUxTb3VyY2VUcmFja2VyOjpIVE1MU291cmNlVHJhY2tlcigpCiAKIHZvaWQgSFRNTFNvdXJj
ZVRyYWNrZXI6OnN0YXJ0KFNlZ21lbnRlZFN0cmluZyYgY3VycmVudElucHV0LCBIVE1MVG9rZW5p
emVyKiB0b2tlbml6ZXIsIEhUTUxUb2tlbiYgdG9rZW4pCiB7Ci0gICAgaWYgKHRva2VuLnR5cGUo
KSA9PSBIVE1MVG9rZW5UeXBlczo6VW5pbml0aWFsaXplZCkgeworICAgIGlmICh0b2tlbi50eXBl
KCkgPT0gSFRNTFRva2VuOjpVbmluaXRpYWxpemVkKSB7CiAgICAgICAgIG1fcHJldmlvdXNTb3Vy
Y2UuY2xlYXIoKTsKICAgICAgICAgaWYgKHRva2VuaXplci0+bnVtYmVyT2ZCdWZmZXJlZENoYXJh
Y3RlcnMoKSkKICAgICAgICAgICAgIG1fcHJldmlvdXNTb3VyY2UgPSB0b2tlbml6ZXItPmJ1ZmZl
cmVkQ2hhcmFjdGVycygpOwpAQCAtNTcsNyArNTcsNyBAQCB2b2lkIEhUTUxTb3VyY2VUcmFja2Vy
OjplbmQoU2VnbWVudGVkU3RyaW5nJiBjdXJyZW50SW5wdXQsIEhUTUxUb2tlbml6ZXIqIHRva2Vu
aQogCiBTdHJpbmcgSFRNTFNvdXJjZVRyYWNrZXI6OnNvdXJjZUZvclRva2VuKGNvbnN0IEhUTUxU
b2tlbiYgdG9rZW4pCiB7Ci0gICAgaWYgKHRva2VuLnR5cGUoKSA9PSBIVE1MVG9rZW5UeXBlczo6
RW5kT2ZGaWxlKQorICAgIGlmICh0b2tlbi50eXBlKCkgPT0gSFRNTFRva2VuOjpFbmRPZkZpbGUp
CiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsgLy8gSGlkZXMgdGhlIG51bGwgY2hhcmFjdGVyIHdl
IHVzZSB0byBtYXJrIHRoZSBlbmQgb2YgZmlsZS4KIAogICAgIGlmICghbV9jYWNoZWRTb3VyY2VG
b3JUb2tlbi5pc0VtcHR5KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNl
ci9IVE1MU3RhY2tJdGVtLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MU3RhY2tJ
dGVtLmgKaW5kZXggOGExOWNkMzQwYjQ4ZDBlNzgxZjlmNjgzMzdmZWZhNWQ5ZDA4MWNmMC4uMWMy
ZWI0OTNmNDAyNDNiMmIxYTVjMzU2MmUzZDA4MDQyMTQyOGIzMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFN0YWNrSXRlbS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvcGFyc2VyL0hUTUxTdGFja0l0ZW0uaApAQCAtMjYsOSArMjYsOSBAQAogI2lmbmRlZiBI
VE1MU3RhY2tJdGVtX2gKICNkZWZpbmUgSFRNTFN0YWNrSXRlbV9oCiAKKyNpbmNsdWRlICJBdG9t
aWNIVE1MVG9rZW4uaCIKICNpbmNsdWRlICJFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVz
LmgiCi0jaW5jbHVkZSAiSFRNTFRva2VuLmgiCiAjaW5jbHVkZSAiTWF0aE1MTmFtZXMuaCIKICNp
bmNsdWRlICJTVkdOYW1lcy5oIgogCkBAIC0yMDgsMTIgKzIwOCwxMiBAQCBwcml2YXRlOgogICAg
ICAgICAgICAgLy8gQ3JlYXRlIGEgZmFrZSB0b2tlbiBmb3IgYSBkb2N1bWVudCBmcmFnbWVudCBu
b2RlLiBUaGlzIGxvb2tzIHVnbHkgYnV0IHJlcXVpcmVkIGZvciBwZXJmb3JtYW5jZQogICAgICAg
ICAgICAgLy8gYmVjYXVzZSB3ZSB3YW50IHRvIHVzZSBtX3Rva2VuLT5uYW1lKCkgaW4gbG9jYWxO
YW1lKCksIGhhc0xvY2FsTmFtZSgpIGFuZCBoYXNUYWdOYW1lKCkgd2l0aG91dAogICAgICAgICAg
ICAgLy8gY2hlY2tpbmcgbV9pc0RvY3VtZW50RnJhZ21lbnROb2RlIGZsYWcuCi0gICAgICAgICAg
ICBtX3Rva2VuID0gQXRvbWljSFRNTFRva2VuOjpjcmVhdGUoSFRNTFRva2VuVHlwZXM6OlN0YXJ0
VGFnLCBudWxsQXRvbSk7CisgICAgICAgICAgICBtX3Rva2VuID0gQXRvbWljSFRNTFRva2VuOjpj
cmVhdGUoSFRNTFRva2VuOjpTdGFydFRhZywgbnVsbEF0b20pOwogICAgICAgICAgICAgbV9pc0Rv
Y3VtZW50RnJhZ21lbnROb2RlID0gdHJ1ZTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBj
YXNlIEl0ZW1Gb3JDb250ZXh0RWxlbWVudDoKICAgICAgICAgICAgIC8vIENyZWF0ZSBhIGZha2Ug
dG9rZW4gZm9yIGEgY29udGV4dCBlbGVtZW50IGZvciB0aGUgc2FtZSByZWFzb24gYXMgYWJvdmUu
Ci0gICAgICAgICAgICBtX3Rva2VuID0gQXRvbWljSFRNTFRva2VuOjpjcmVhdGUoSFRNTFRva2Vu
VHlwZXM6OlN0YXJ0VGFnLCBtX25vZGUtPmxvY2FsTmFtZSgpKTsKKyAgICAgICAgICAgIG1fdG9r
ZW4gPSBBdG9taWNIVE1MVG9rZW46OmNyZWF0ZShIVE1MVG9rZW46OlN0YXJ0VGFnLCBtX25vZGUt
PmxvY2FsTmFtZSgpKTsKICAgICAgICAgICAgIG1fbmFtZXNwYWNlVVJJID0gbV9ub2RlLT5uYW1l
c3BhY2VVUkkoKTsKICAgICAgICAgICAgIG1faXNEb2N1bWVudEZyYWdtZW50Tm9kZSA9IGZhbHNl
OwogICAgICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3Bh
cnNlci9IVE1MVG9rZW4uaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUb2tlbi5o
CmluZGV4IGJmYmRlMjA0ODM0MjYxNTc3ZmU3ZGNkZWIzYzAwMDA1ZDA3NjY0ZTcuLmNlNTE0YTFh
ODMxYmFkZWI1MTNhMDhmNjNhMGQzNGQ3MjVmZmIwMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvcGFyc2VyL0hUTUxUb2tlbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFy
c2VyL0hUTUxUb2tlbi5oCkBAIC0yNyw4ICsyNyw3IEBACiAjZGVmaW5lIEhUTUxUb2tlbl9oCiAK
ICNpbmNsdWRlICJBdHRyaWJ1dGUuaCIKLSNpbmNsdWRlICJDb21wYWN0SFRNTFRva2VuLmgiCi0j
aW5jbHVkZSAiSFRNTFRva2VuVHlwZXMuaCIKKyNpbmNsdWRlICJIVE1MVG9rZW4uaCIKICNpbmNs
dWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIApAQCAtNjUs
NyArNjQsMTUgQEAgY2xhc3MgSFRNTFRva2VuIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShI
VE1MVG9rZW4pOwogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIHR5
cGVkZWYgSFRNTFRva2VuVHlwZXMgVHlwZTsKKyAgICBlbnVtIFR5cGUgeworICAgICAgICBVbmlu
aXRpYWxpemVkLAorICAgICAgICBET0NUWVBFLAorICAgICAgICBTdGFydFRhZywKKyAgICAgICAg
RW5kVGFnLAorICAgICAgICBDb21tZW50LAorICAgICAgICBDaGFyYWN0ZXIsCisgICAgICAgIEVu
ZE9mRmlsZSwKKyAgICB9OwogCiAgICAgY2xhc3MgQXR0cmlidXRlIHsKICAgICBwdWJsaWM6CkBA
IC04OCw3ICs5NSw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgY2xlYXIoKQogICAgIHsKLSAgICAg
ICAgbV90eXBlID0gVHlwZTo6VW5pbml0aWFsaXplZDsKKyAgICAgICAgbV90eXBlID0gVW5pbml0
aWFsaXplZDsKICAgICAgICAgbV9yYW5nZS5tX3N0YXJ0ID0gMDsKICAgICAgICAgbV9yYW5nZS5t
X2VuZCA9IDA7CiAgICAgICAgIG1fYmFzZU9mZnNldCA9IDA7CkBAIC05NiwxMyArMTAzLDEzIEBA
IHB1YmxpYzoKICAgICAgICAgbV9vckFsbERhdGEgPSAwOwogICAgIH0KIAotICAgIGJvb2wgaXNV
bmluaXRpYWxpemVkKCkgeyByZXR1cm4gbV90eXBlID09IEhUTUxUb2tlblR5cGVzOjpVbmluaXRp
YWxpemVkOyB9Ci0gICAgSFRNTFRva2VuVHlwZXM6OlR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJu
IG1fdHlwZTsgfQorICAgIGJvb2wgaXNVbmluaXRpYWxpemVkKCkgeyByZXR1cm4gbV90eXBlID09
IFVuaW5pdGlhbGl6ZWQ7IH0KKyAgICBUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7
IH0KIAogICAgIHZvaWQgbWFrZUVuZE9mRmlsZSgpCiAgICAgewotICAgICAgICBBU1NFUlQobV90
eXBlID09IEhUTUxUb2tlblR5cGVzOjpVbmluaXRpYWxpemVkKTsKLSAgICAgICAgbV90eXBlID0g
SFRNTFRva2VuVHlwZXM6OkVuZE9mRmlsZTsKKyAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBVbmlu
aXRpYWxpemVkKTsKKyAgICAgICAgbV90eXBlID0gRW5kT2ZGaWxlOwogICAgIH0KIAogICAgIC8q
IFJhbmdlIGFuZCBvZmZzZXQgbWV0aG9kcyBleHBvc2VkIGZvciBIVE1MU291cmNlVHJhY2tlciBh
bmQgSFRNTFZpZXdTb3VyY2VQYXJzZXIgKi8KQEAgLTEyMSw3ICsxMjgsNyBAQCBwdWJsaWM6CiAK
ICAgICBjb25zdCBEYXRhVmVjdG9yJiBkYXRhKCkgY29uc3QKICAgICB7Ci0gICAgICAgIEFTU0VS
VChtX3R5cGUgPT0gSFRNTFRva2VuVHlwZXM6OkNoYXJhY3RlciB8fCBtX3R5cGUgPT0gSFRNTFRv
a2VuVHlwZXM6OkNvbW1lbnQgfHwgbV90eXBlID09IEhUTUxUb2tlblR5cGVzOjpTdGFydFRhZyB8
fCBtX3R5cGUgPT0gSFRNTFRva2VuVHlwZXM6OkVuZFRhZyk7CisgICAgICAgIEFTU0VSVChtX3R5
cGUgPT0gQ2hhcmFjdGVyIHx8IG1fdHlwZSA9PSBDb21tZW50IHx8IG1fdHlwZSA9PSBTdGFydFRh
ZyB8fCBtX3R5cGUgPT0gRW5kVGFnKTsKICAgICAgICAgcmV0dXJuIG1fZGF0YTsKICAgICB9CiAK
QEAgLTEzMiwxMyArMTM5LDEzIEBAIHB1YmxpYzoKIAogICAgIGNvbnN0IERhdGFWZWN0b3ImIG5h
bWUoKSBjb25zdAogICAgIHsKLSAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBIVE1MVG9rZW5UeXBl
czo6U3RhcnRUYWcgfHwgbV90eXBlID09IEhUTUxUb2tlblR5cGVzOjpFbmRUYWcgfHwgbV90eXBl
ID09IEhUTUxUb2tlblR5cGVzOjpET0NUWVBFKTsKKyAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBT
dGFydFRhZyB8fCBtX3R5cGUgPT0gRW5kVGFnIHx8IG1fdHlwZSA9PSBET0NUWVBFKTsKICAgICAg
ICAgcmV0dXJuIG1fZGF0YTsKICAgICB9CiAKICAgICB2b2lkIGFwcGVuZFRvTmFtZShVQ2hhciBj
aGFyYWN0ZXIpCiAgICAgewotICAgICAgICBBU1NFUlQobV90eXBlID09IEhUTUxUb2tlblR5cGVz
OjpTdGFydFRhZyB8fCBtX3R5cGUgPT0gSFRNTFRva2VuVHlwZXM6OkVuZFRhZyB8fCBtX3R5cGUg
PT0gSFRNTFRva2VuVHlwZXM6OkRPQ1RZUEUpOworICAgICAgICBBU1NFUlQobV90eXBlID09IFN0
YXJ0VGFnIHx8IG1fdHlwZSA9PSBFbmRUYWcgfHwgbV90eXBlID09IERPQ1RZUEUpOwogICAgICAg
ICBBU1NFUlQoY2hhcmFjdGVyKTsKICAgICAgICAgbV9kYXRhLmFwcGVuZChjaGFyYWN0ZXIpOwog
ICAgICAgICBtX29yQWxsRGF0YSB8PSBjaGFyYWN0ZXI7CkBAIC0xNTgsMjAgKzE2NSwyMCBAQCBw
dWJsaWM6CiAKICAgICBib29sIGZvcmNlUXVpcmtzKCkgY29uc3QKICAgICB7Ci0gICAgICAgIEFT
U0VSVChtX3R5cGUgPT0gSFRNTFRva2VuVHlwZXM6OkRPQ1RZUEUpOworICAgICAgICBBU1NFUlQo
bV90eXBlID09IERPQ1RZUEUpOwogICAgICAgICByZXR1cm4gbV9kb2N0eXBlRGF0YS0+bV9mb3Jj
ZVF1aXJrczsKICAgICB9CiAKICAgICB2b2lkIHNldEZvcmNlUXVpcmtzKCkKICAgICB7Ci0gICAg
ICAgIEFTU0VSVChtX3R5cGUgPT0gSFRNTFRva2VuVHlwZXM6OkRPQ1RZUEUpOworICAgICAgICBB
U1NFUlQobV90eXBlID09IERPQ1RZUEUpOwogICAgICAgICBtX2RvY3R5cGVEYXRhLT5tX2ZvcmNl
UXVpcmtzID0gdHJ1ZTsKICAgICB9CiAKICAgICB2b2lkIGJlZ2luRE9DVFlQRSgpCiAgICAgewot
ICAgICAgICBBU1NFUlQobV90eXBlID09IEhUTUxUb2tlblR5cGVzOjpVbmluaXRpYWxpemVkKTsK
LSAgICAgICAgbV90eXBlID0gSFRNTFRva2VuVHlwZXM6OkRPQ1RZUEU7CisgICAgICAgIEFTU0VS
VChtX3R5cGUgPT0gVW5pbml0aWFsaXplZCk7CisgICAgICAgIG1fdHlwZSA9IERPQ1RZUEU7CiAg
ICAgICAgIG1fZG9jdHlwZURhdGEgPSBhZG9wdFB0cihuZXcgRG9jdHlwZURhdGEpOwogICAgIH0K
IApAQCAtMTg2LDI3ICsxOTMsMjcgQEAgcHVibGljOgogICAgIC8vIEZJWE1FOiBEaXN0aW5ndWlz
aCBiZXR3ZWVuIGEgbWlzc2luZyBwdWJsaWMgaWRlbnRpZmVyIGFuZCBhbiBlbXB0eSBvbmUuCiAg
ICAgY29uc3QgV1RGOjpWZWN0b3I8VUNoYXI+JiBwdWJsaWNJZGVudGlmaWVyKCkgY29uc3QKICAg
ICB7Ci0gICAgICAgIEFTU0VSVChtX3R5cGUgPT0gSFRNTFRva2VuVHlwZXM6OkRPQ1RZUEUpOwor
ICAgICAgICBBU1NFUlQobV90eXBlID09IERPQ1RZUEUpOwogICAgICAgICByZXR1cm4gbV9kb2N0
eXBlRGF0YS0+bV9wdWJsaWNJZGVudGlmaWVyOwogICAgIH0KIAogICAgIC8vIEZJWE1FOiBEaXN0
aW5ndWlzaCBiZXR3ZWVuIGEgbWlzc2luZyBzeXN0ZW0gaWRlbnRpZmVyIGFuZCBhbiBlbXB0eSBv
bmUuCiAgICAgY29uc3QgV1RGOjpWZWN0b3I8VUNoYXI+JiBzeXN0ZW1JZGVudGlmaWVyKCkgY29u
c3QKICAgICB7Ci0gICAgICAgIEFTU0VSVChtX3R5cGUgPT0gSFRNTFRva2VuVHlwZXM6OkRPQ1RZ
UEUpOworICAgICAgICBBU1NFUlQobV90eXBlID09IERPQ1RZUEUpOwogICAgICAgICByZXR1cm4g
bV9kb2N0eXBlRGF0YS0+bV9zeXN0ZW1JZGVudGlmaWVyOwogICAgIH0KIAogICAgIHZvaWQgc2V0
UHVibGljSWRlbnRpZmllclRvRW1wdHlTdHJpbmcoKQogICAgIHsKLSAgICAgICAgQVNTRVJUKG1f
dHlwZSA9PSBIVE1MVG9rZW5UeXBlczo6RE9DVFlQRSk7CisgICAgICAgIEFTU0VSVChtX3R5cGUg
PT0gRE9DVFlQRSk7CiAgICAgICAgIG1fZG9jdHlwZURhdGEtPm1faGFzUHVibGljSWRlbnRpZmll
ciA9IHRydWU7CiAgICAgICAgIG1fZG9jdHlwZURhdGEtPm1fcHVibGljSWRlbnRpZmllci5jbGVh
cigpOwogICAgIH0KIAogICAgIHZvaWQgc2V0U3lzdGVtSWRlbnRpZmllclRvRW1wdHlTdHJpbmco
KQogICAgIHsKLSAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBIVE1MVG9rZW5UeXBlczo6RE9DVFlQ
RSk7CisgICAgICAgIEFTU0VSVChtX3R5cGUgPT0gRE9DVFlQRSk7CiAgICAgICAgIG1fZG9jdHlw
ZURhdGEtPm1faGFzU3lzdGVtSWRlbnRpZmllciA9IHRydWU7CiAgICAgICAgIG1fZG9jdHlwZURh
dGEtPm1fc3lzdGVtSWRlbnRpZmllci5jbGVhcigpOwogICAgIH0KQEAgLTIxNCw3ICsyMjEsNyBA
QCBwdWJsaWM6CiAgICAgdm9pZCBhcHBlbmRUb1B1YmxpY0lkZW50aWZpZXIoVUNoYXIgY2hhcmFj
dGVyKQogICAgIHsKICAgICAgICAgQVNTRVJUKGNoYXJhY3Rlcik7Ci0gICAgICAgIEFTU0VSVCht
X3R5cGUgPT0gSFRNTFRva2VuVHlwZXM6OkRPQ1RZUEUpOworICAgICAgICBBU1NFUlQobV90eXBl
ID09IERPQ1RZUEUpOwogICAgICAgICBBU1NFUlQobV9kb2N0eXBlRGF0YS0+bV9oYXNQdWJsaWNJ
ZGVudGlmaWVyKTsKICAgICAgICAgbV9kb2N0eXBlRGF0YS0+bV9wdWJsaWNJZGVudGlmaWVyLmFw
cGVuZChjaGFyYWN0ZXIpOwogICAgIH0KQEAgLTIyMiw3ICsyMjksNyBAQCBwdWJsaWM6CiAgICAg
dm9pZCBhcHBlbmRUb1N5c3RlbUlkZW50aWZpZXIoVUNoYXIgY2hhcmFjdGVyKQogICAgIHsKICAg
ICAgICAgQVNTRVJUKGNoYXJhY3Rlcik7Ci0gICAgICAgIEFTU0VSVChtX3R5cGUgPT0gSFRNTFRv
a2VuVHlwZXM6OkRPQ1RZUEUpOworICAgICAgICBBU1NFUlQobV90eXBlID09IERPQ1RZUEUpOwog
ICAgICAgICBBU1NFUlQobV9kb2N0eXBlRGF0YS0+bV9oYXNTeXN0ZW1JZGVudGlmaWVyKTsKICAg
ICAgICAgbV9kb2N0eXBlRGF0YS0+bV9zeXN0ZW1JZGVudGlmaWVyLmFwcGVuZChjaGFyYWN0ZXIp
OwogICAgIH0KQEAgLTIzNiwyMSArMjQzLDIxIEBAIHB1YmxpYzoKIAogICAgIGJvb2wgc2VsZkNs
b3NpbmcoKSBjb25zdAogICAgIHsKLSAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBIVE1MVG9rZW5U
eXBlczo6U3RhcnRUYWcgfHwgbV90eXBlID09IEhUTUxUb2tlblR5cGVzOjpFbmRUYWcpOworICAg
ICAgICBBU1NFUlQobV90eXBlID09IFN0YXJ0VGFnIHx8IG1fdHlwZSA9PSBFbmRUYWcpOwogICAg
ICAgICByZXR1cm4gbV9zZWxmQ2xvc2luZzsKICAgICB9CiAKICAgICB2b2lkIHNldFNlbGZDbG9z
aW5nKCkKICAgICB7Ci0gICAgICAgIEFTU0VSVChtX3R5cGUgPT0gSFRNTFRva2VuVHlwZXM6OlN0
YXJ0VGFnIHx8IG1fdHlwZSA9PSBIVE1MVG9rZW5UeXBlczo6RW5kVGFnKTsKKyAgICAgICAgQVNT
RVJUKG1fdHlwZSA9PSBTdGFydFRhZyB8fCBtX3R5cGUgPT0gRW5kVGFnKTsKICAgICAgICAgbV9z
ZWxmQ2xvc2luZyA9IHRydWU7CiAgICAgfQogCiAgICAgdm9pZCBiZWdpblN0YXJ0VGFnKFVDaGFy
IGNoYXJhY3RlcikKICAgICB7CiAgICAgICAgIEFTU0VSVChjaGFyYWN0ZXIpOwotICAgICAgICBB
U1NFUlQobV90eXBlID09IEhUTUxUb2tlblR5cGVzOjpVbmluaXRpYWxpemVkKTsKLSAgICAgICAg
bV90eXBlID0gSFRNTFRva2VuVHlwZXM6OlN0YXJ0VGFnOworICAgICAgICBBU1NFUlQobV90eXBl
ID09IFVuaW5pdGlhbGl6ZWQpOworICAgICAgICBtX3R5cGUgPSBTdGFydFRhZzsKICAgICAgICAg
bV9zZWxmQ2xvc2luZyA9IGZhbHNlOwogICAgICAgICBtX2N1cnJlbnRBdHRyaWJ1dGUgPSAwOwog
ICAgICAgICBtX2F0dHJpYnV0ZXMuY2xlYXIoKTsKQEAgLTI2MSw4ICsyNjgsOCBAQCBwdWJsaWM6
CiAKICAgICB2b2lkIGJlZ2luRW5kVGFnKExDaGFyIGNoYXJhY3RlcikKICAgICB7Ci0gICAgICAg
IEFTU0VSVChtX3R5cGUgPT0gSFRNTFRva2VuVHlwZXM6OlVuaW5pdGlhbGl6ZWQpOwotICAgICAg
ICBtX3R5cGUgPSBIVE1MVG9rZW5UeXBlczo6RW5kVGFnOworICAgICAgICBBU1NFUlQobV90eXBl
ID09IFVuaW5pdGlhbGl6ZWQpOworICAgICAgICBtX3R5cGUgPSBFbmRUYWc7CiAgICAgICAgIG1f
c2VsZkNsb3NpbmcgPSBmYWxzZTsKICAgICAgICAgbV9jdXJyZW50QXR0cmlidXRlID0gMDsKICAg
ICAgICAgbV9hdHRyaWJ1dGVzLmNsZWFyKCk7CkBAIC0yNzIsOCArMjc5LDggQEAgcHVibGljOgog
CiAgICAgdm9pZCBiZWdpbkVuZFRhZyhjb25zdCBWZWN0b3I8TENoYXIsIDMyPiYgY2hhcmFjdGVy
cykKICAgICB7Ci0gICAgICAgIEFTU0VSVChtX3R5cGUgPT0gSFRNTFRva2VuVHlwZXM6OlVuaW5p
dGlhbGl6ZWQpOwotICAgICAgICBtX3R5cGUgPSBIVE1MVG9rZW5UeXBlczo6RW5kVGFnOworICAg
ICAgICBBU1NFUlQobV90eXBlID09IFVuaW5pdGlhbGl6ZWQpOworICAgICAgICBtX3R5cGUgPSBF
bmRUYWc7CiAgICAgICAgIG1fc2VsZkNsb3NpbmcgPSBmYWxzZTsKICAgICAgICAgbV9jdXJyZW50
QXR0cmlidXRlID0gMDsKICAgICAgICAgbV9hdHRyaWJ1dGVzLmNsZWFyKCk7CkBAIC0yODMsNyAr
MjkwLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBhZGROZXdBdHRyaWJ1dGUoKQogICAgIHsKLSAg
ICAgICAgQVNTRVJUKG1fdHlwZSA9PSBIVE1MVG9rZW5UeXBlczo6U3RhcnRUYWcgfHwgbV90eXBl
ID09IEhUTUxUb2tlblR5cGVzOjpFbmRUYWcpOworICAgICAgICBBU1NFUlQobV90eXBlID09IFN0
YXJ0VGFnIHx8IG1fdHlwZSA9PSBFbmRUYWcpOwogICAgICAgICBtX2F0dHJpYnV0ZXMuZ3Jvdyht
X2F0dHJpYnV0ZXMuc2l6ZSgpICsgMSk7CiAgICAgICAgIG1fY3VycmVudEF0dHJpYnV0ZSA9ICZt
X2F0dHJpYnV0ZXMubGFzdCgpOwogI2lmbmRlZiBOREVCVUcKQEAgLTMyMyw3ICszMzAsNyBAQCBw
dWJsaWM6CiAgICAgdm9pZCBhcHBlbmRUb0F0dHJpYnV0ZU5hbWUoVUNoYXIgY2hhcmFjdGVyKQog
ICAgIHsKICAgICAgICAgQVNTRVJUKGNoYXJhY3Rlcik7Ci0gICAgICAgIEFTU0VSVChtX3R5cGUg
PT0gSFRNTFRva2VuVHlwZXM6OlN0YXJ0VGFnIHx8IG1fdHlwZSA9PSBIVE1MVG9rZW5UeXBlczo6
RW5kVGFnKTsKKyAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBTdGFydFRhZyB8fCBtX3R5cGUgPT0g
RW5kVGFnKTsKICAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBiZSBhYmxlIHRvIGFkZCB0aGUg
Zm9sbG93aW5nIEFTU0VSVCBvbmNlIHdlIGZpeAogICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjI5NzEKICAgICAgICAgLy8gICBBU1NFUlQobV9jdXJy
ZW50QXR0cmlidXRlLT5tX25hbWVSYW5nZS5tX3N0YXJ0KTsKQEAgLTMzMyw3ICszNDAsNyBAQCBw
dWJsaWM6CiAgICAgdm9pZCBhcHBlbmRUb0F0dHJpYnV0ZVZhbHVlKFVDaGFyIGNoYXJhY3RlcikK
ICAgICB7CiAgICAgICAgIEFTU0VSVChjaGFyYWN0ZXIpOwotICAgICAgICBBU1NFUlQobV90eXBl
ID09IEhUTUxUb2tlblR5cGVzOjpTdGFydFRhZyB8fCBtX3R5cGUgPT0gSFRNTFRva2VuVHlwZXM6
OkVuZFRhZyk7CisgICAgICAgIEFTU0VSVChtX3R5cGUgPT0gU3RhcnRUYWcgfHwgbV90eXBlID09
IEVuZFRhZyk7CiAgICAgICAgIEFTU0VSVChtX2N1cnJlbnRBdHRyaWJ1dGUtPm1fdmFsdWVSYW5n
ZS5tX3N0YXJ0KTsKICAgICAgICAgbV9jdXJyZW50QXR0cmlidXRlLT5tX3ZhbHVlLmFwcGVuZChj
aGFyYWN0ZXIpOwogICAgIH0KQEAgLTM0MSwyMCArMzQ4LDIwIEBAIHB1YmxpYzoKICAgICB2b2lk
IGFwcGVuZFRvQXR0cmlidXRlVmFsdWUoc2l6ZV90IGksIGNvbnN0IFN0cmluZyYgdmFsdWUpCiAg
ICAgewogICAgICAgICBBU1NFUlQoIXZhbHVlLmlzRW1wdHkoKSk7Ci0gICAgICAgIEFTU0VSVCht
X3R5cGUgPT0gSFRNTFRva2VuVHlwZXM6OlN0YXJ0VGFnIHx8IG1fdHlwZSA9PSBIVE1MVG9rZW5U
eXBlczo6RW5kVGFnKTsKKyAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBTdGFydFRhZyB8fCBtX3R5
cGUgPT0gRW5kVGFnKTsKICAgICAgICAgbV9hdHRyaWJ1dGVzW2ldLm1fdmFsdWUuYXBwZW5kKHZh
bHVlLmNoYXJhY3RlcnMoKSwgdmFsdWUubGVuZ3RoKCkpOwogICAgIH0KIAogICAgIGNvbnN0IEF0
dHJpYnV0ZUxpc3QmIGF0dHJpYnV0ZXMoKSBjb25zdAogICAgIHsKLSAgICAgICAgQVNTRVJUKG1f
dHlwZSA9PSBIVE1MVG9rZW5UeXBlczo6U3RhcnRUYWcgfHwgbV90eXBlID09IEhUTUxUb2tlblR5
cGVzOjpFbmRUYWcpOworICAgICAgICBBU1NFUlQobV90eXBlID09IFN0YXJ0VGFnIHx8IG1fdHlw
ZSA9PSBFbmRUYWcpOwogICAgICAgICByZXR1cm4gbV9hdHRyaWJ1dGVzOwogICAgIH0KIAogICAg
IC8vIFVzZWQgYnkgdGhlIFhTU0F1ZGl0b3IgdG8gbnVrZSBYU1MtbGFkZW4gYXR0cmlidXRlcy4K
ICAgICB2b2lkIGVyYXNlVmFsdWVPZkF0dHJpYnV0ZShzaXplX3QgaSkKICAgICB7Ci0gICAgICAg
IEFTU0VSVChtX3R5cGUgPT0gSFRNTFRva2VuVHlwZXM6OlN0YXJ0VGFnIHx8IG1fdHlwZSA9PSBI
VE1MVG9rZW5UeXBlczo6RW5kVGFnKTsKKyAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBTdGFydFRh
ZyB8fCBtX3R5cGUgPT0gRW5kVGFnKTsKICAgICAgICAgbV9hdHRyaWJ1dGVzW2ldLm1fdmFsdWUu
Y2xlYXIoKTsKICAgICB9CiAKQEAgLTM2NCwzMiArMzcxLDMyIEBAIHB1YmxpYzoKICAgICAvLyBv
dGhlciB0eXBlcyBvZiB0b2tlbnMgYmVjYXVzZSB3ZSB3YW50IHRvIHNhdmUgYSBwZXItY2hhcmFj
dGVyIGJyYW5jaC4KICAgICB2b2lkIGVuc3VyZUlzQ2hhcmFjdGVyVG9rZW4oKQogICAgIHsKLSAg
ICAgICAgQVNTRVJUKG1fdHlwZSA9PSBIVE1MVG9rZW5UeXBlczo6VW5pbml0aWFsaXplZCB8fCBt
X3R5cGUgPT0gSFRNTFRva2VuVHlwZXM6OkNoYXJhY3Rlcik7Ci0gICAgICAgIG1fdHlwZSA9IEhU
TUxUb2tlblR5cGVzOjpDaGFyYWN0ZXI7CisgICAgICAgIEFTU0VSVChtX3R5cGUgPT0gVW5pbml0
aWFsaXplZCB8fCBtX3R5cGUgPT0gQ2hhcmFjdGVyKTsKKyAgICAgICAgbV90eXBlID0gQ2hhcmFj
dGVyOwogICAgIH0KIAogICAgIGNvbnN0IERhdGFWZWN0b3ImIGNoYXJhY3RlcnMoKSBjb25zdAog
ICAgIHsKLSAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBIVE1MVG9rZW5UeXBlczo6Q2hhcmFjdGVy
KTsKKyAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBDaGFyYWN0ZXIpOwogICAgICAgICByZXR1cm4g
bV9kYXRhOwogICAgIH0KIAogICAgIHZvaWQgYXBwZW5kVG9DaGFyYWN0ZXIoY2hhciBjaGFyYWN0
ZXIpCiAgICAgewotICAgICAgICBBU1NFUlQobV90eXBlID09IEhUTUxUb2tlblR5cGVzOjpDaGFy
YWN0ZXIpOworICAgICAgICBBU1NFUlQobV90eXBlID09IENoYXJhY3Rlcik7CiAgICAgICAgIG1f
ZGF0YS5hcHBlbmQoY2hhcmFjdGVyKTsKICAgICB9CiAKICAgICB2b2lkIGFwcGVuZFRvQ2hhcmFj
dGVyKFVDaGFyIGNoYXJhY3RlcikKICAgICB7Ci0gICAgICAgIEFTU0VSVChtX3R5cGUgPT0gSFRN
TFRva2VuVHlwZXM6OkNoYXJhY3Rlcik7CisgICAgICAgIEFTU0VSVChtX3R5cGUgPT0gQ2hhcmFj
dGVyKTsKICAgICAgICAgbV9kYXRhLmFwcGVuZChjaGFyYWN0ZXIpOwogICAgICAgICBtX29yQWxs
RGF0YSB8PSBjaGFyYWN0ZXI7CiAgICAgfQogCiAgICAgdm9pZCBhcHBlbmRUb0NoYXJhY3Rlcihj
b25zdCBWZWN0b3I8TENoYXIsIDMyPiYgY2hhcmFjdGVycykKICAgICB7Ci0gICAgICAgIEFTU0VS
VChtX3R5cGUgPT0gSFRNTFRva2VuVHlwZXM6OkNoYXJhY3Rlcik7CisgICAgICAgIEFTU0VSVCht
X3R5cGUgPT0gQ2hhcmFjdGVyKTsKICAgICAgICAgbV9kYXRhLmFwcGVuZFZlY3RvcihjaGFyYWN0
ZXJzKTsKICAgICB9CiAKQEAgLTM5NywzMyArNDA0LDMzIEBAIHB1YmxpYzoKIAogICAgIGNvbnN0
IERhdGFWZWN0b3ImIGNvbW1lbnQoKSBjb25zdAogICAgIHsKLSAgICAgICAgQVNTRVJUKG1fdHlw
ZSA9PSBIVE1MVG9rZW5UeXBlczo6Q29tbWVudCk7CisgICAgICAgIEFTU0VSVChtX3R5cGUgPT0g
Q29tbWVudCk7CiAgICAgICAgIHJldHVybiBtX2RhdGE7CiAgICAgfQogCiAgICAgdm9pZCBiZWdp
bkNvbW1lbnQoKQogICAgIHsKLSAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBIVE1MVG9rZW5UeXBl
czo6VW5pbml0aWFsaXplZCk7Ci0gICAgICAgIG1fdHlwZSA9IEhUTUxUb2tlblR5cGVzOjpDb21t
ZW50OworICAgICAgICBBU1NFUlQobV90eXBlID09IFVuaW5pdGlhbGl6ZWQpOworICAgICAgICBt
X3R5cGUgPSBDb21tZW50OwogICAgIH0KIAogICAgIHZvaWQgYXBwZW5kVG9Db21tZW50KFVDaGFy
IGNoYXJhY3RlcikKICAgICB7CiAgICAgICAgIEFTU0VSVChjaGFyYWN0ZXIpOwotICAgICAgICBB
U1NFUlQobV90eXBlID09IEhUTUxUb2tlblR5cGVzOjpDb21tZW50KTsKKyAgICAgICAgQVNTRVJU
KG1fdHlwZSA9PSBDb21tZW50KTsKICAgICAgICAgbV9kYXRhLmFwcGVuZChjaGFyYWN0ZXIpOwog
ICAgICAgICBtX29yQWxsRGF0YSB8PSBjaGFyYWN0ZXI7CiAgICAgfQogCiAgICAgdm9pZCBlcmFz
ZUNoYXJhY3RlcnMoKQogICAgIHsKLSAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBIVE1MVG9rZW5U
eXBlczo6Q2hhcmFjdGVyKTsKKyAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBDaGFyYWN0ZXIpOwog
ICAgICAgICBtX2RhdGEuY2xlYXIoKTsKICAgICAgICAgbV9vckFsbERhdGEgPSAwOwogICAgIH0K
IAogcHJpdmF0ZToKLSAgICBIVE1MVG9rZW5UeXBlczo6VHlwZSBtX3R5cGU7CisgICAgVHlwZSBt
X3R5cGU7CiAgICAgQXR0cmlidXRlOjpSYW5nZSBtX3JhbmdlOyAvLyBBbHdheXMgc3RhcnRzIGF0
IHplcm8uCiAgICAgaW50IG1fYmFzZU9mZnNldDsKICAgICBEYXRhVmVjdG9yIG1fZGF0YTsKQEAg
LTQ0MCwyODEgKzQ0Nyw2IEBAIHByaXZhdGU6CiAgICAgT3duUHRyPERvY3R5cGVEYXRhPiBtX2Rv
Y3R5cGVEYXRhOwogfTsKIAotY2xhc3MgQXRvbWljSFRNTFRva2VuIDogcHVibGljIFJlZkNvdW50
ZWQ8QXRvbWljSFRNTFRva2VuPiB7Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQXRvbWljSFRN
TFRva2VuKTsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxBdG9taWNIVE1MVG9rZW4+
IGNyZWF0ZShIVE1MVG9rZW4mIHRva2VuKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBBdG9taWNIVE1MVG9rZW4odG9rZW4pKTsKLSAgICB9Ci0KLSNpZiBFTkFCTEUoVEhSRUFE
RURfSFRNTF9QQVJTRVIpCi0KLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxBdG9taWNIVE1MVG9rZW4+
IGNyZWF0ZShjb25zdCBDb21wYWN0SFRNTFRva2VuJiB0b2tlbikKLSAgICB7Ci0gICAgICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgQXRvbWljSFRNTFRva2VuKHRva2VuKSk7Ci0gICAgfQotCi0jZW5k
aWYKLQotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEF0b21pY0hUTUxUb2tlbj4gY3JlYXRlKEhUTUxU
b2tlblR5cGVzOjpUeXBlIHR5cGUsIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgY29uc3QgVmVj
dG9yPEF0dHJpYnV0ZT4mIGF0dHJpYnV0ZXMgPSBWZWN0b3I8QXR0cmlidXRlPigpKQotICAgIHsK
LSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBBdG9taWNIVE1MVG9rZW4odHlwZSwgbmFtZSwg
YXR0cmlidXRlcykpOwotICAgIH0KLQotICAgIGJvb2wgZm9yY2VRdWlya3MoKSBjb25zdAotICAg
IHsKLSAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBIVE1MVG9rZW5UeXBlczo6RE9DVFlQRSk7Ci0g
ICAgICAgIHJldHVybiBtX2RvY3R5cGVEYXRhLT5tX2ZvcmNlUXVpcmtzOwotICAgIH0KLQotICAg
IEhUTUxUb2tlblR5cGVzOjpUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KLQot
ICAgIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSgpIGNvbnN0Ci0gICAgewotICAgICAgICBBU1NF
UlQodXNlc05hbWUoKSk7Ci0gICAgICAgIHJldHVybiBtX25hbWU7Ci0gICAgfQotCi0gICAgdm9p
ZCBzZXROYW1lKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSkKLSAgICB7Ci0gICAgICAgIEFTU0VS
VCh1c2VzTmFtZSgpKTsKLSAgICAgICAgbV9uYW1lID0gbmFtZTsKLSAgICB9Ci0KLSAgICBib29s
IHNlbGZDbG9zaW5nKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIEFTU0VSVChtX3R5cGUgPT0gSFRN
TFRva2VuVHlwZXM6OlN0YXJ0VGFnIHx8IG1fdHlwZSA9PSBIVE1MVG9rZW5UeXBlczo6RW5kVGFn
KTsKLSAgICAgICAgcmV0dXJuIG1fc2VsZkNsb3Npbmc7Ci0gICAgfQotCi0gICAgQXR0cmlidXRl
KiBnZXRBdHRyaWJ1dGVJdGVtKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUpCi0g
ICAgewotICAgICAgICBBU1NFUlQodXNlc0F0dHJpYnV0ZXMoKSk7Ci0gICAgICAgIHJldHVybiBm
aW5kQXR0cmlidXRlSW5WZWN0b3IobV9hdHRyaWJ1dGVzLCBhdHRyaWJ1dGVOYW1lKTsKLSAgICB9
Ci0KLSAgICBWZWN0b3I8QXR0cmlidXRlPiYgYXR0cmlidXRlcygpCi0gICAgewotICAgICAgICBB
U1NFUlQodXNlc0F0dHJpYnV0ZXMoKSk7Ci0gICAgICAgIHJldHVybiBtX2F0dHJpYnV0ZXM7Ci0g
ICAgfQotCi0gICAgY29uc3QgVmVjdG9yPEF0dHJpYnV0ZT4mIGF0dHJpYnV0ZXMoKSBjb25zdAot
ICAgIHsKLSAgICAgICAgQVNTRVJUKHVzZXNBdHRyaWJ1dGVzKCkpOwotICAgICAgICByZXR1cm4g
bV9hdHRyaWJ1dGVzOwotICAgIH0KLQotICAgIGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzKCkgY29u
c3QKLSAgICB7Ci0gICAgICAgIEFTU0VSVChtX3R5cGUgPT0gSFRNTFRva2VuVHlwZXM6OkNoYXJh
Y3Rlcik7Ci0gICAgICAgIHJldHVybiBtX2V4dGVybmFsQ2hhcmFjdGVyczsKLSAgICB9Ci0KLSAg
ICBzaXplX3QgY2hhcmFjdGVyc0xlbmd0aCgpIGNvbnN0Ci0gICAgewotICAgICAgICBBU1NFUlQo
bV90eXBlID09IEhUTUxUb2tlblR5cGVzOjpDaGFyYWN0ZXIpOwotICAgICAgICByZXR1cm4gbV9l
eHRlcm5hbENoYXJhY3RlcnNMZW5ndGg7Ci0gICAgfQotCi0gICAgYm9vbCBpc0FsbDhCaXREYXRh
KCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2lzQWxsOEJpdERhdGE7Ci0gICAgfQot
Ci0gICAgY29uc3QgU3RyaW5nJiBjb21tZW50KCkgY29uc3QKLSAgICB7Ci0gICAgICAgIEFTU0VS
VChtX3R5cGUgPT0gSFRNTFRva2VuVHlwZXM6OkNvbW1lbnQpOwotICAgICAgICByZXR1cm4gbV9k
YXRhOwotICAgIH0KLQotICAgIC8vIEZJWE1FOiBEaXN0aW5ndWlzaCBiZXR3ZWVuIGEgbWlzc2lu
ZyBwdWJsaWMgaWRlbnRpZmVyIGFuZCBhbiBlbXB0eSBvbmUuCi0gICAgV1RGOjpWZWN0b3I8VUNo
YXI+JiBwdWJsaWNJZGVudGlmaWVyKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIEFTU0VSVChtX3R5
cGUgPT0gSFRNTFRva2VuVHlwZXM6OkRPQ1RZUEUpOwotICAgICAgICByZXR1cm4gbV9kb2N0eXBl
RGF0YS0+bV9wdWJsaWNJZGVudGlmaWVyOwotICAgIH0KLQotICAgIC8vIEZJWE1FOiBEaXN0aW5n
dWlzaCBiZXR3ZWVuIGEgbWlzc2luZyBzeXN0ZW0gaWRlbnRpZmVyIGFuZCBhbiBlbXB0eSBvbmUu
Ci0gICAgV1RGOjpWZWN0b3I8VUNoYXI+JiBzeXN0ZW1JZGVudGlmaWVyKCkgY29uc3QKLSAgICB7
Ci0gICAgICAgIEFTU0VSVChtX3R5cGUgPT0gSFRNTFRva2VuVHlwZXM6OkRPQ1RZUEUpOwotICAg
ICAgICByZXR1cm4gbV9kb2N0eXBlRGF0YS0+bV9zeXN0ZW1JZGVudGlmaWVyOwotICAgIH0KLQot
ICAgIHZvaWQgY2xlYXJFeHRlcm5hbENoYXJhY3RlcnMoKQotICAgIHsKLSAgICAgICAgbV9leHRl
cm5hbENoYXJhY3RlcnMgPSAwOwotICAgICAgICBtX2V4dGVybmFsQ2hhcmFjdGVyc0xlbmd0aCA9
IDA7Ci0gICAgICAgIG1faXNBbGw4Qml0RGF0YSA9IGZhbHNlOwotICAgIH0KLQotcHJpdmF0ZToK
LSAgICBleHBsaWNpdCBBdG9taWNIVE1MVG9rZW4oSFRNTFRva2VuJiB0b2tlbikKLSAgICAgICAg
OiBtX3R5cGUodG9rZW4udHlwZSgpKQotICAgIHsKLSAgICAgICAgc3dpdGNoIChtX3R5cGUpIHsK
LSAgICAgICAgY2FzZSBIVE1MVG9rZW5UeXBlczo6VW5pbml0aWFsaXplZDoKLSAgICAgICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2Ug
SFRNTFRva2VuVHlwZXM6OkRPQ1RZUEU6Ci0gICAgICAgICAgICBtX25hbWUgPSBBdG9taWNTdHJp
bmcodG9rZW4ubmFtZVN0cmluZygpKTsKLSAgICAgICAgICAgIG1fZG9jdHlwZURhdGEgPSB0b2tl
bi5yZWxlYXNlRG9jdHlwZURhdGEoKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNl
IEhUTUxUb2tlblR5cGVzOjpFbmRPZkZpbGU6Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAg
Y2FzZSBIVE1MVG9rZW5UeXBlczo6U3RhcnRUYWc6Ci0gICAgICAgIGNhc2UgSFRNTFRva2VuVHlw
ZXM6OkVuZFRhZzogewotICAgICAgICAgICAgbV9zZWxmQ2xvc2luZyA9IHRva2VuLnNlbGZDbG9z
aW5nKCk7Ci0gICAgICAgICAgICBtX25hbWUgPSBBdG9taWNTdHJpbmcodG9rZW4ubmFtZVN0cmlu
ZygpKTsKLSAgICAgICAgICAgIGluaXRpYWxpemVBdHRyaWJ1dGVzKHRva2VuLmF0dHJpYnV0ZXMo
KSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBjYXNlIEhUTUxUb2tl
blR5cGVzOjpDb21tZW50OgotICAgICAgICAgICAgaWYgKHRva2VuLmlzQWxsOEJpdERhdGEoKSkK
LSAgICAgICAgICAgICAgICBtX2RhdGEgPSBTdHJpbmc6Om1ha2U4Qml0RnJvbTE2Qml0U291cmNl
KHRva2VuLmNvbW1lbnQoKS5kYXRhKCksIHRva2VuLmNvbW1lbnQoKS5zaXplKCkpOwotICAgICAg
ICAgICAgZWxzZQotICAgICAgICAgICAgICAgIG1fZGF0YSA9IFN0cmluZyh0b2tlbi5jb21tZW50
KCkuZGF0YSgpLCB0b2tlbi5jb21tZW50KCkuc2l6ZSgpKTsKLSAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICBjYXNlIEhUTUxUb2tlblR5cGVzOjpDaGFyYWN0ZXI6Ci0gICAgICAgICAgICBtX2V4
dGVybmFsQ2hhcmFjdGVycyA9IHRva2VuLmNoYXJhY3RlcnMoKS5kYXRhKCk7Ci0gICAgICAgICAg
ICBtX2V4dGVybmFsQ2hhcmFjdGVyc0xlbmd0aCA9IHRva2VuLmNoYXJhY3RlcnMoKS5zaXplKCk7
Ci0gICAgICAgICAgICBtX2lzQWxsOEJpdERhdGEgPSB0b2tlbi5pc0FsbDhCaXREYXRhKCk7Ci0g
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICB9Ci0gICAgfQotCi0jaWYgRU5BQkxFKFRIUkVBREVEX0hUTUxfUEFSU0VSKQotCi0g
ICAgZXhwbGljaXQgQXRvbWljSFRNTFRva2VuKGNvbnN0IENvbXBhY3RIVE1MVG9rZW4mIHRva2Vu
KQotICAgICAgICA6IG1fdHlwZSh0b2tlbi50eXBlKCkpCi0gICAgewotICAgICAgICBzd2l0Y2gg
KG1fdHlwZSkgewotICAgICAgICBjYXNlIEhUTUxUb2tlblR5cGVzOjpVbmluaXRpYWxpemVkOgot
ICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgY2FzZSBIVE1MVG9rZW5UeXBlczo6RE9DVFlQRToKLSAgICAgICAgICAgIG1fbmFtZSA9
IHRva2VuLmRhdGEoKTsKLSAgICAgICAgICAgIG1fZG9jdHlwZURhdGEgPSBhZG9wdFB0cihuZXcg
RG9jdHlwZURhdGEoKSk7Ci0gICAgICAgICAgICBtX2RvY3R5cGVEYXRhLT5tX2hhc1B1YmxpY0lk
ZW50aWZpZXIgPSB0cnVlOwotICAgICAgICAgICAgbV9kb2N0eXBlRGF0YS0+bV9wdWJsaWNJZGVu
dGlmaWVyLmFwcGVuZCh0b2tlbi5wdWJsaWNJZGVudGlmaWVyKCkuY2hhcmFjdGVycygpLCB0b2tl
bi5wdWJsaWNJZGVudGlmaWVyKCkubGVuZ3RoKCkpOwotICAgICAgICAgICAgbV9kb2N0eXBlRGF0
YS0+bV9oYXNTeXN0ZW1JZGVudGlmaWVyID0gdHJ1ZTsKLSAgICAgICAgICAgIG1fZG9jdHlwZURh
dGEtPm1fc3lzdGVtSWRlbnRpZmllci5hcHBlbmQodG9rZW4uc3lzdGVtSWRlbnRpZmllcigpLmNo
YXJhY3RlcnMoKSwgdG9rZW4uc3lzdGVtSWRlbnRpZmllcigpLmxlbmd0aCgpKTsKLSAgICAgICAg
ICAgIG1fZG9jdHlwZURhdGEtPm1fZm9yY2VRdWlya3MgPSB0b2tlbi5kb2N0eXBlRm9yY2VzUXVp
cmtzKCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBIVE1MVG9rZW5UeXBlczo6
RW5kT2ZGaWxlOgotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgSFRNTFRva2VuVHlw
ZXM6OlN0YXJ0VGFnOgotICAgICAgICAgICAgbV9hdHRyaWJ1dGVzLnJlc2VydmVJbml0aWFsQ2Fw
YWNpdHkodG9rZW4uYXR0cmlidXRlcygpLnNpemUoKSk7Ci0gICAgICAgICAgICBmb3IgKFZlY3Rv
cjxDb21wYWN0QXR0cmlidXRlPjo6Y29uc3RfaXRlcmF0b3IgaXQgPSB0b2tlbi5hdHRyaWJ1dGVz
KCkuYmVnaW4oKTsgaXQgIT0gdG9rZW4uYXR0cmlidXRlcygpLmVuZCgpOyArK2l0KQotICAgICAg
ICAgICAgICAgIG1fYXR0cmlidXRlcy5hcHBlbmQoQXR0cmlidXRlKFF1YWxpZmllZE5hbWUobnVs
bEF0b20sIGl0LT5uYW1lKCksIG51bGxBdG9tKSwgaXQtPnZhbHVlKCkpKTsKLSAgICAgICAgICAg
IC8vIEZhbGwgdGhyb3VnaCEKLSAgICAgICAgY2FzZSBIVE1MVG9rZW5UeXBlczo6RW5kVGFnOgot
ICAgICAgICAgICAgbV9zZWxmQ2xvc2luZyA9IHRva2VuLnNlbGZDbG9zaW5nKCk7Ci0gICAgICAg
ICAgICBtX25hbWUgPSBBdG9taWNTdHJpbmcodG9rZW4uZGF0YSgpKTsKLSAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICBjYXNlIEhUTUxUb2tlblR5cGVzOjpDb21tZW50OgotICAgICAgICAgICAg
bV9kYXRhID0gdG9rZW4uZGF0YSgpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2Ug
SFRNTFRva2VuVHlwZXM6OkNoYXJhY3RlcjoKLSAgICAgICAgICAgIG1fZXh0ZXJuYWxDaGFyYWN0
ZXJzID0gdG9rZW4uZGF0YSgpLmNoYXJhY3RlcnMoKTsKLSAgICAgICAgICAgIG1fZXh0ZXJuYWxD
aGFyYWN0ZXJzTGVuZ3RoID0gdG9rZW4uZGF0YSgpLmxlbmd0aCgpOwotICAgICAgICAgICAgbV9p
c0FsbDhCaXREYXRhID0gdG9rZW4uaXNBbGw4Qml0RGF0YSgpOwotICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgIH0K
LQotI2VuZGlmCi0KLSAgICBleHBsaWNpdCBBdG9taWNIVE1MVG9rZW4oSFRNTFRva2VuVHlwZXM6
OlR5cGUgdHlwZSkKLSAgICAgICAgOiBtX3R5cGUodHlwZSkKLSAgICAgICAgLCBtX2V4dGVybmFs
Q2hhcmFjdGVycygwKQotICAgICAgICAsIG1fZXh0ZXJuYWxDaGFyYWN0ZXJzTGVuZ3RoKDApCi0g
ICAgICAgICwgbV9pc0FsbDhCaXREYXRhKGZhbHNlKQotICAgICAgICAsIG1fc2VsZkNsb3Npbmco
ZmFsc2UpCi0gICAgewotICAgIH0KLQotICAgIEF0b21pY0hUTUxUb2tlbihIVE1MVG9rZW5UeXBl
czo6VHlwZSB0eXBlLCBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIGNvbnN0IFZlY3RvcjxBdHRy
aWJ1dGU+JiBhdHRyaWJ1dGVzID0gVmVjdG9yPEF0dHJpYnV0ZT4oKSkKLSAgICAgICAgOiBtX3R5
cGUodHlwZSkKLSAgICAgICAgLCBtX25hbWUobmFtZSkKLSAgICAgICAgLCBtX2V4dGVybmFsQ2hh
cmFjdGVycygwKQotICAgICAgICAsIG1fZXh0ZXJuYWxDaGFyYWN0ZXJzTGVuZ3RoKDApCi0gICAg
ICAgICwgbV9pc0FsbDhCaXREYXRhKGZhbHNlKQotICAgICAgICAsIG1fc2VsZkNsb3NpbmcoZmFs
c2UpCi0gICAgICAgICwgbV9hdHRyaWJ1dGVzKGF0dHJpYnV0ZXMpCi0gICAgewotICAgICAgICBB
U1NFUlQodXNlc05hbWUoKSk7Ci0gICAgfQotCi0gICAgSFRNTFRva2VuVHlwZXM6OlR5cGUgbV90
eXBlOwotCi0gICAgdm9pZCBpbml0aWFsaXplQXR0cmlidXRlcyhjb25zdCBIVE1MVG9rZW46OkF0
dHJpYnV0ZUxpc3QmIGF0dHJpYnV0ZXMpOwotICAgIFF1YWxpZmllZE5hbWUgbmFtZUZvckF0dHJp
YnV0ZShjb25zdCBIVE1MVG9rZW46OkF0dHJpYnV0ZSYpIGNvbnN0OwotCi0gICAgYm9vbCB1c2Vz
TmFtZSgpIGNvbnN0OwotCi0gICAgYm9vbCB1c2VzQXR0cmlidXRlcygpIGNvbnN0OwotCi0gICAg
Ly8gIm5hbWUiIGZvciBET0NUWVBFLCBTdGFydFRhZywgYW5kIEVuZFRhZwotICAgIEF0b21pY1N0
cmluZyBtX25hbWU7Ci0KLSAgICAvLyAiZGF0YSIgZm9yIENvbW1lbnQKLSAgICBTdHJpbmcgbV9k
YXRhOwotCi0gICAgLy8gImNoYXJhY3RlcnMiIGZvciBDaGFyYWN0ZXIKLSAgICAvLwotICAgIC8v
IFdlIGRvbid0IHdhbnQgdG8gY29weSB0aGUgdGhlIGNoYXJhY3RlcnMgb3V0IG9mIHRoZSBUb2tl
biwgc28gd2UKLSAgICAvLyBrZWVwIGEgcG9pbnRlciB0byBpdHMgYnVmZmVyIGluc3RlYWQuIFRo
aXMgYnVmZmVyIGlzIG93bmVkIGJ5IHRoZQotICAgIC8vIFRva2VuIGFuZCBjYXVzZXMgYSBsaWZl
dGltZSBkZXBlbmRlbmNlIGJldHdlZW4gdGhlc2Ugb2JqZWN0cy4KLSAgICAvLwotICAgIC8vIEZJ
WE1FOiBBZGQgYSBtZWNoYW5pc20gZm9yICJpbnRlcm5hbGl6aW5nIiB0aGUgY2hhcmFjdGVycyB3
aGVuIHRoZQotICAgIC8vICAgICAgICBIVE1MVG9rZW4gaXMgZGVzdHJ1Y3RlZC4KLSAgICBjb25z
dCBVQ2hhciogbV9leHRlcm5hbENoYXJhY3RlcnM7Ci0gICAgc2l6ZV90IG1fZXh0ZXJuYWxDaGFy
YWN0ZXJzTGVuZ3RoOwotICAgIGJvb2wgbV9pc0FsbDhCaXREYXRhOwotCi0gICAgLy8gRm9yIERP
Q1RZUEUKLSAgICBPd25QdHI8RG9jdHlwZURhdGE+IG1fZG9jdHlwZURhdGE7Ci0KLSAgICAvLyBG
b3IgU3RhcnRUYWcgYW5kIEVuZFRhZwotICAgIGJvb2wgbV9zZWxmQ2xvc2luZzsKLQotICAgIFZl
Y3RvcjxBdHRyaWJ1dGU+IG1fYXR0cmlidXRlczsKLX07Ci0KLWlubGluZSB2b2lkIEF0b21pY0hU
TUxUb2tlbjo6aW5pdGlhbGl6ZUF0dHJpYnV0ZXMoY29uc3QgSFRNTFRva2VuOjpBdHRyaWJ1dGVM
aXN0JiBhdHRyaWJ1dGVzKQotewotICAgIHNpemVfdCBzaXplID0gYXR0cmlidXRlcy5zaXplKCk7
Ci0gICAgaWYgKCFzaXplKQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX2F0dHJpYnV0ZXMuY2xl
YXIoKTsKLSAgICBtX2F0dHJpYnV0ZXMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShzaXplKTsKLSAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7ICsraSkgewotICAgICAgICBjb25zdCBIVE1M
VG9rZW46OkF0dHJpYnV0ZSYgYXR0cmlidXRlID0gYXR0cmlidXRlc1tpXTsKLSAgICAgICAgaWYg
KGF0dHJpYnV0ZS5tX25hbWUuaXNFbXB0eSgpKQotICAgICAgICAgICAgY29udGludWU7Ci0KLSAg
ICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBiZSBhYmxlIHRvIGFkZCB0aGUgZm9sbG93aW5nIEFT
U0VSVCBvbmNlIHdlIGZpeAotICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NjI5NzEKLSAgICAgICAgLy8gICBBU1NFUlQoYXR0cmlidXRlLm1fbmFtZVJh
bmdlLm1fc3RhcnQpOwotICAgICAgICBBU1NFUlQoYXR0cmlidXRlLm1fbmFtZVJhbmdlLm1fZW5k
KTsKLSAgICAgICAgQVNTRVJUKGF0dHJpYnV0ZS5tX3ZhbHVlUmFuZ2UubV9zdGFydCk7Ci0gICAg
ICAgIEFTU0VSVChhdHRyaWJ1dGUubV92YWx1ZVJhbmdlLm1fZW5kKTsKLQotICAgICAgICBBdG9t
aWNTdHJpbmcgdmFsdWUoYXR0cmlidXRlLm1fdmFsdWUuZGF0YSgpLCBhdHRyaWJ1dGUubV92YWx1
ZS5zaXplKCkpOwotICAgICAgICBjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lID0gbmFtZUZvckF0
dHJpYnV0ZShhdHRyaWJ1dGUpOwotICAgICAgICBpZiAoIWZpbmRBdHRyaWJ1dGVJblZlY3Rvciht
X2F0dHJpYnV0ZXMsIG5hbWUpKQotICAgICAgICAgICAgbV9hdHRyaWJ1dGVzLmFwcGVuZChBdHRy
aWJ1dGUobmFtZSwgdmFsdWUpKTsKLSAgICB9Ci19Ci0KIH0KIAogI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVG9rZW5UeXBlcy5oIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRva2VuVHlwZXMuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggNDBiMjQzNWM2MWViNmFlYzJjOGM0MDA5MjA1MGZjZmMxYzlmNGQwZi4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3BhcnNlci9IVE1MVG9rZW5UeXBlcy5oCisrKyAvZGV2L251bGwKQEAgLTEsNDYgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUsIEluYy4gQWxsIFJpZ2h0cyBSZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0g
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpZm5k
ZWYgSFRNTFRva2VuVHlwZXNfaAotI2RlZmluZSBIVE1MVG9rZW5UeXBlc19oCi0KLW5hbWVzcGFj
ZSBXZWJDb3JlIHsKLQotY2xhc3MgSFRNTFRva2VuVHlwZXMgewotcHVibGljOgotICAgIGVudW0g
VHlwZSB7Ci0gICAgICAgIFVuaW5pdGlhbGl6ZWQsCi0gICAgICAgIERPQ1RZUEUsCi0gICAgICAg
IFN0YXJ0VGFnLAotICAgICAgICBFbmRUYWcsCi0gICAgICAgIENvbW1lbnQsCi0gICAgICAgIENo
YXJhY3RlciwKLSAgICAgICAgRW5kT2ZGaWxlLAotICAgIH07Ci19OwotCi19Ci0KLSNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRva2VuaXplci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVG9rZW5pemVyLmNwcAppbmRleCAxMDkz
ODlkZmNhZmM2OThiODBmNGM3YzcyYmMyZmFjNGJlNTM0NGEzLi5mMGFkZmUzZmY4YTc1MmE4MmY0
YWM2MmVkMDAyYWY4YmZiZmI3MGZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3Bh
cnNlci9IVE1MVG9rZW5pemVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9I
VE1MVG9rZW5pemVyLmNwcApAQCAtNTYsMTIgKzU2LDEyIEBAIFF1YWxpZmllZE5hbWUgQXRvbWlj
SFRNTFRva2VuOjpuYW1lRm9yQXR0cmlidXRlKGNvbnN0IEhUTUxUb2tlbjo6QXR0cmlidXRlJiBh
dHRyCiAKIGJvb2wgQXRvbWljSFRNTFRva2VuOjp1c2VzTmFtZSgpIGNvbnN0CiB7Ci0gICAgcmV0
dXJuIG1fdHlwZSA9PSBIVE1MVG9rZW5UeXBlczo6U3RhcnRUYWcgfHwgbV90eXBlID09IEhUTUxU
b2tlblR5cGVzOjpFbmRUYWcgfHwgbV90eXBlID09IEhUTUxUb2tlblR5cGVzOjpET0NUWVBFOwor
ICAgIHJldHVybiBtX3R5cGUgPT0gSFRNTFRva2VuOjpTdGFydFRhZyB8fCBtX3R5cGUgPT0gSFRN
TFRva2VuOjpFbmRUYWcgfHwgbV90eXBlID09IEhUTUxUb2tlbjo6RE9DVFlQRTsKIH0KIAogYm9v
bCBBdG9taWNIVE1MVG9rZW46OnVzZXNBdHRyaWJ1dGVzKCkgY29uc3QKIHsKLSAgICByZXR1cm4g
bV90eXBlID09IEhUTUxUb2tlblR5cGVzOjpTdGFydFRhZyB8fCBtX3R5cGUgPT0gSFRNTFRva2Vu
VHlwZXM6OkVuZFRhZzsKKyAgICByZXR1cm4gbV90eXBlID09IEhUTUxUb2tlbjo6U3RhcnRUYWcg
fHwgbV90eXBlID09IEhUTUxUb2tlbjo6RW5kVGFnOwogfQogCiBzdGF0aWMgaW5saW5lIFVDaGFy
IHRvTG93ZXJDYXNlKFVDaGFyIGNjKQpAQCAtMTc4LDkgKzE3OCw5IEBAIGlubGluZSBib29sIEhU
TUxUb2tlbml6ZXI6OnByb2Nlc3NFbnRpdHkoU2VnbWVudGVkU3RyaW5nJiBzb3VyY2UpCiAKIGJv
b2wgSFRNTFRva2VuaXplcjo6Zmx1c2hCdWZmZXJlZEVuZFRhZyhTZWdtZW50ZWRTdHJpbmcmIHNv
dXJjZSkKIHsKLSAgICBBU1NFUlQobV90b2tlbi0+dHlwZSgpID09IEhUTUxUb2tlblR5cGVzOjpD
aGFyYWN0ZXIgfHwgbV90b2tlbi0+dHlwZSgpID09IEhUTUxUb2tlblR5cGVzOjpVbmluaXRpYWxp
emVkKTsKKyAgICBBU1NFUlQobV90b2tlbi0+dHlwZSgpID09IEhUTUxUb2tlbjo6Q2hhcmFjdGVy
IHx8IG1fdG9rZW4tPnR5cGUoKSA9PSBIVE1MVG9rZW46OlVuaW5pdGlhbGl6ZWQpOwogICAgIHNv
dXJjZS5hZHZhbmNlQW5kVXBkYXRlTGluZU51bWJlcigpOwotICAgIGlmIChtX3Rva2VuLT50eXBl
KCkgPT0gSFRNTFRva2VuVHlwZXM6OkNoYXJhY3RlcikKKyAgICBpZiAobV90b2tlbi0+dHlwZSgp
ID09IEhUTUxUb2tlbjo6Q2hhcmFjdGVyKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBtX3Rv
a2VuLT5iZWdpbkVuZFRhZyhtX2J1ZmZlcmVkRW5kVGFnTmFtZSk7CiAgICAgbV9idWZmZXJlZEVu
ZFRhZ05hbWUuY2xlYXIoKTsKQEAgLTIxMiw3ICsyMTIsNyBAQCBib29sIEhUTUxUb2tlbml6ZXI6
Om5leHRUb2tlbihTZWdtZW50ZWRTdHJpbmcmIHNvdXJjZSwgSFRNTFRva2VuJiB0b2tlbikKIHsK
ICAgICAvLyBJZiB3ZSBoYXZlIGEgdG9rZW4gaW4gcHJvZ3Jlc3MsIHRoZW4gd2UncmUgc3VwcG9z
ZWQgdG8gYmUgY2FsbGVkIGJhY2sKICAgICAvLyB3aXRoIHRoZSBzYW1lIHRva2VuIHNvIHdlIGNh
biBmaW5pc2ggaXQuCi0gICAgQVNTRVJUKCFtX3Rva2VuIHx8IG1fdG9rZW4gPT0gJnRva2VuIHx8
IHRva2VuLnR5cGUoKSA9PSBIVE1MVG9rZW5UeXBlczo6VW5pbml0aWFsaXplZCk7CisgICAgQVNT
RVJUKCFtX3Rva2VuIHx8IG1fdG9rZW4gPT0gJnRva2VuIHx8IHRva2VuLnR5cGUoKSA9PSBIVE1M
VG9rZW46OlVuaW5pdGlhbGl6ZWQpOwogICAgIG1fdG9rZW4gPSAmdG9rZW47CiAKICAgICBpZiAo
IW1fYnVmZmVyZWRFbmRUYWdOYW1lLmlzRW1wdHkoKSAmJiAhaXNFbmRUYWdCdWZmZXJpbmdTdGF0
ZShtX3N0YXRlKSkgewpAQCAtMjM4LDcgKzIzOCw3IEBAIGJvb2wgSFRNTFRva2VuaXplcjo6bmV4
dFRva2VuKFNlZ21lbnRlZFN0cmluZyYgc291cmNlLCBIVE1MVG9rZW4mIHRva2VuKQogICAgICAg
ICBpZiAoY2MgPT0gJyYnKQogICAgICAgICAgICAgSFRNTF9BRFZBTkNFX1RPKENoYXJhY3RlclJl
ZmVyZW5jZUluRGF0YVN0YXRlKTsKICAgICAgICAgZWxzZSBpZiAoY2MgPT0gJzwnKSB7Ci0gICAg
ICAgICAgICBpZiAobV90b2tlbi0+dHlwZSgpID09IEhUTUxUb2tlblR5cGVzOjpDaGFyYWN0ZXIp
IHsKKyAgICAgICAgICAgIGlmIChtX3Rva2VuLT50eXBlKCkgPT0gSFRNTFRva2VuOjpDaGFyYWN0
ZXIpIHsKICAgICAgICAgICAgICAgICAvLyBXZSBoYXZlIGEgYnVuY2ggb2YgY2hhcmFjdGVyIHRv
a2VucyBxdWV1ZWQgdXAgdGhhdCB3ZQogICAgICAgICAgICAgICAgIC8vIGFyZSBlbWl0dGluZyBs
YXppbHkgaGVyZS4KICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUb2tlbml6ZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvcGFyc2VyL0hUTUxUb2tlbml6ZXIuaAppbmRleCAzM2YzODU5OWI5OTBlYjMxOTcyZGIz
ZGE4YjMxZjUyNjBhYWM5NjBlLi44YTQzZDYwNjgwODk0YTUxN2FiOTk0NTQ4OWQwOGIyN2VkODg0
MjAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVG9rZW5pemVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRva2VuaXplci5oCkBAIC0y
NTMsOCArMjUzLDggQEAgcHJpdmF0ZToKIAogICAgIGlubGluZSB2b2lkIHNhdmVFbmRUYWdOYW1l
SWZOZWVkZWQoKQogICAgIHsKLSAgICAgICAgQVNTRVJUKG1fdG9rZW4tPnR5cGUoKSAhPSBIVE1M
VG9rZW5UeXBlczo6VW5pbml0aWFsaXplZCk7Ci0gICAgICAgIGlmIChtX3Rva2VuLT50eXBlKCkg
PT0gSFRNTFRva2VuVHlwZXM6OlN0YXJ0VGFnKQorICAgICAgICBBU1NFUlQobV90b2tlbi0+dHlw
ZSgpICE9IEhUTUxUb2tlbjo6VW5pbml0aWFsaXplZCk7CisgICAgICAgIGlmIChtX3Rva2VuLT50
eXBlKCkgPT0gSFRNTFRva2VuOjpTdGFydFRhZykKICAgICAgICAgICAgIG1fYXBwcm9wcmlhdGVF
bmRUYWdOYW1lID0gbV90b2tlbi0+bmFtZSgpOwogICAgIH0KICAgICBpbmxpbmUgYm9vbCBpc0Fw
cHJvcHJpYXRlRW5kVGFnKCk7CkBAIC0yNjIsNyArMjYyLDcgQEAgcHJpdmF0ZToKIAogICAgIGlu
bGluZSBib29sIGhhdmVCdWZmZXJlZENoYXJhY3RlclRva2VuKCkKICAgICB7Ci0gICAgICAgIHJl
dHVybiBtX3Rva2VuLT50eXBlKCkgPT0gSFRNTFRva2VuOjpUeXBlOjpDaGFyYWN0ZXI7CisgICAg
ICAgIHJldHVybiBtX3Rva2VuLT50eXBlKCkgPT0gSFRNTFRva2VuOjpDaGFyYWN0ZXI7CiAgICAg
fQogCiAgICAgU3RhdGUgbV9zdGF0ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
cGFyc2VyL0hUTUxUcmVlQnVpbGRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9I
VE1MVHJlZUJ1aWxkZXIuY3BwCmluZGV4IDg5MTZjYmU5N2NiNjViOTE5NzQ1MDA4NDYxMWNmMzNi
MTc3N2Q0ZGQuLjM5MWUxNjFkOGQzMmM3OWJmOTFhNDc2ZTZkNjc4OGExNTlkMjA1NmMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUcmVlQnVpbGRlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRyZWVCdWlsZGVyLmNwcApAQCAtMjcs
NiArMjcsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkhUTUxUcmVlQnVpbGRl
ci5oIgogCisjaW5jbHVkZSAiQXRvbWljSFRNTFRva2VuLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRG
cmFnbWVudC5oIgogI2luY2x1ZGUgIkhUTUxEb2N1bWVudC5oIgogI2luY2x1ZGUgIkhUTUxEb2N1
bWVudFBhcnNlci5oIgpAQCAtMzg0LDI5ICszODUsMjkgQEAgdm9pZCBIVE1MVHJlZUJ1aWxkZXI6
OmNvbnN0cnVjdFRyZWUoQXRvbWljSFRNTFRva2VuKiB0b2tlbikKIHZvaWQgSFRNTFRyZWVCdWls
ZGVyOjpwcm9jZXNzVG9rZW4oQXRvbWljSFRNTFRva2VuKiB0b2tlbikKIHsKICAgICBzd2l0Y2gg
KHRva2VuLT50eXBlKCkpIHsKLSAgICBjYXNlIEhUTUxUb2tlblR5cGVzOjpVbmluaXRpYWxpemVk
OgorICAgIGNhc2UgSFRNTFRva2VuOjpVbmluaXRpYWxpemVkOgogICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBIVE1MVG9rZW5UeXBlczo6RE9D
VFlQRToKKyAgICBjYXNlIEhUTUxUb2tlbjo6RE9DVFlQRToKICAgICAgICAgbV9zaG91bGRTa2lw
TGVhZGluZ05ld2xpbmUgPSBmYWxzZTsKICAgICAgICAgcHJvY2Vzc0RvY3R5cGVUb2tlbih0b2tl
bik7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgSFRNTFRva2VuVHlwZXM6OlN0YXJ0VGFnOgor
ICAgIGNhc2UgSFRNTFRva2VuOjpTdGFydFRhZzoKICAgICAgICAgbV9zaG91bGRTa2lwTGVhZGlu
Z05ld2xpbmUgPSBmYWxzZTsKICAgICAgICAgcHJvY2Vzc1N0YXJ0VGFnKHRva2VuKTsKICAgICAg
ICAgYnJlYWs7Ci0gICAgY2FzZSBIVE1MVG9rZW5UeXBlczo6RW5kVGFnOgorICAgIGNhc2UgSFRN
TFRva2VuOjpFbmRUYWc6CiAgICAgICAgIG1fc2hvdWxkU2tpcExlYWRpbmdOZXdsaW5lID0gZmFs
c2U7CiAgICAgICAgIHByb2Nlc3NFbmRUYWcodG9rZW4pOwogICAgICAgICBicmVhazsKLSAgICBj
YXNlIEhUTUxUb2tlblR5cGVzOjpDb21tZW50OgorICAgIGNhc2UgSFRNTFRva2VuOjpDb21tZW50
OgogICAgICAgICBtX3Nob3VsZFNraXBMZWFkaW5nTmV3bGluZSA9IGZhbHNlOwogICAgICAgICBw
cm9jZXNzQ29tbWVudCh0b2tlbik7CiAgICAgICAgIHJldHVybjsKLSAgICBjYXNlIEhUTUxUb2tl
blR5cGVzOjpDaGFyYWN0ZXI6CisgICAgY2FzZSBIVE1MVG9rZW46OkNoYXJhY3RlcjoKICAgICAg
ICAgcHJvY2Vzc0NoYXJhY3Rlcih0b2tlbik7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgSFRN
TFRva2VuVHlwZXM6OkVuZE9mRmlsZToKKyAgICBjYXNlIEhUTUxUb2tlbjo6RW5kT2ZGaWxlOgog
ICAgICAgICBtX3Nob3VsZFNraXBMZWFkaW5nTmV3bGluZSA9IGZhbHNlOwogICAgICAgICBwcm9j
ZXNzRW5kT2ZGaWxlKHRva2VuKTsKICAgICAgICAgYnJlYWs7CkBAIC00MTUsNyArNDE2LDcgQEAg
dm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NUb2tlbihBdG9taWNIVE1MVG9rZW4qIHRva2Vu
KQogCiB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0RvY3R5cGVUb2tlbihBdG9taWNIVE1M
VG9rZW4qIHRva2VuKQogewotICAgIEFTU0VSVCh0b2tlbi0+dHlwZSgpID09IEhUTUxUb2tlblR5
cGVzOjpET0NUWVBFKTsKKyAgICBBU1NFUlQodG9rZW4tPnR5cGUoKSA9PSBIVE1MVG9rZW46OkRP
Q1RZUEUpOwogICAgIGlmIChtX2luc2VydGlvbk1vZGUgPT0gSW5pdGlhbE1vZGUpIHsKICAgICAg
ICAgbV90cmVlLmluc2VydERvY3R5cGUodG9rZW4pOwogICAgICAgICBzZXRJbnNlcnRpb25Nb2Rl
KEJlZm9yZUhUTUxNb2RlKTsKQEAgLTQzMiwxMyArNDMzLDEzIEBAIHZvaWQgSFRNTFRyZWVCdWls
ZGVyOjpwcm9jZXNzRG9jdHlwZVRva2VuKEF0b21pY0hUTUxUb2tlbiogdG9rZW4pCiB2b2lkIEhU
TUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0Zha2VTdGFydFRhZyhjb25zdCBRdWFsaWZpZWROYW1lJiB0
YWdOYW1lLCBjb25zdCBWZWN0b3I8QXR0cmlidXRlPiYgYXR0cmlidXRlcykKIHsKICAgICAvLyBG
SVhNRTogV2UnbGwgbmVlZCBhIGZhbmNpZXIgY29udmVyc2lvbiB0aGFuIGp1c3QgImxvY2FsTmFt
ZSIgZm9yIFNWRy9NYXRoTUwgdGFncy4KLSAgICBSZWZQdHI8QXRvbWljSFRNTFRva2VuPiBmYWtl
VG9rZW4gPSBBdG9taWNIVE1MVG9rZW46OmNyZWF0ZShIVE1MVG9rZW5UeXBlczo6U3RhcnRUYWcs
IHRhZ05hbWUubG9jYWxOYW1lKCksIGF0dHJpYnV0ZXMpOworICAgIFJlZlB0cjxBdG9taWNIVE1M
VG9rZW4+IGZha2VUb2tlbiA9IEF0b21pY0hUTUxUb2tlbjo6Y3JlYXRlKEhUTUxUb2tlbjo6U3Rh
cnRUYWcsIHRhZ05hbWUubG9jYWxOYW1lKCksIGF0dHJpYnV0ZXMpOwogICAgIHByb2Nlc3NTdGFy
dFRhZyhmYWtlVG9rZW4uZ2V0KCkpOwogfQogCiB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vz
c0Zha2VFbmRUYWcoY29uc3QgQXRvbWljU3RyaW5nJiB0YWdOYW1lKQogewotICAgIFJlZlB0cjxB
dG9taWNIVE1MVG9rZW4+IGZha2VUb2tlbiA9IEF0b21pY0hUTUxUb2tlbjo6Y3JlYXRlKEhUTUxU
b2tlblR5cGVzOjpFbmRUYWcsIHRhZ05hbWUpOworICAgIFJlZlB0cjxBdG9taWNIVE1MVG9rZW4+
IGZha2VUb2tlbiA9IEF0b21pY0hUTUxUb2tlbjo6Y3JlYXRlKEhUTUxUb2tlbjo6RW5kVGFnLCB0
YWdOYW1lKTsKICAgICBwcm9jZXNzRW5kVGFnKGZha2VUb2tlbi5nZXQoKSk7CiB9CiAKQEAgLTQ1
OSw3ICs0NjAsNyBAQCB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0Zha2VQRW5kVGFnSWZQ
SW5CdXR0b25TY29wZSgpCiB7CiAgICAgaWYgKCFtX3RyZWUub3BlbkVsZW1lbnRzKCktPmluQnV0
dG9uU2NvcGUocFRhZy5sb2NhbE5hbWUoKSkpCiAgICAgICAgIHJldHVybjsKLSAgICBSZWZQdHI8
QXRvbWljSFRNTFRva2VuPiBlbmRQID0gQXRvbWljSFRNTFRva2VuOjpjcmVhdGUoSFRNTFRva2Vu
VHlwZXM6OkVuZFRhZywgcFRhZy5sb2NhbE5hbWUoKSk7CisgICAgUmVmUHRyPEF0b21pY0hUTUxU
b2tlbj4gZW5kUCA9IEF0b21pY0hUTUxUb2tlbjo6Y3JlYXRlKEhUTUxUb2tlbjo6RW5kVGFnLCBw
VGFnLmxvY2FsTmFtZSgpKTsKICAgICBwcm9jZXNzRW5kVGFnKGVuZFAuZ2V0KCkpOwogfQogCkBA
IC00NzgsNyArNDc5LDcgQEAgVmVjdG9yPEF0dHJpYnV0ZT4gSFRNTFRyZWVCdWlsZGVyOjphdHRy
aWJ1dGVzRm9ySXNpbmRleElucHV0KEF0b21pY0hUTUxUb2tlbiogdG8KIAogdm9pZCBIVE1MVHJl
ZUJ1aWxkZXI6OnByb2Nlc3NJc2luZGV4U3RhcnRUYWdGb3JJbkJvZHkoQXRvbWljSFRNTFRva2Vu
KiB0b2tlbikKIHsKLSAgICBBU1NFUlQodG9rZW4tPnR5cGUoKSA9PSBIVE1MVG9rZW5UeXBlczo6
U3RhcnRUYWcpOworICAgIEFTU0VSVCh0b2tlbi0+dHlwZSgpID09IEhUTUxUb2tlbjo6U3RhcnRU
YWcpOwogICAgIEFTU0VSVCh0b2tlbi0+bmFtZSgpID09IGlzaW5kZXhUYWcpOwogICAgIHBhcnNl
RXJyb3IodG9rZW4pOwogICAgIGlmIChtX3RyZWUuZm9ybSgpKQpAQCAtNjMwLDcgKzYzMSw3IEBA
IHN0YXRpYyB2b2lkIGFkanVzdEZvcmVpZ25BdHRyaWJ1dGVzKEF0b21pY0hUTUxUb2tlbiogdG9r
ZW4pCiAKIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzU3RhcnRUYWdGb3JJbkJvZHkoQXRv
bWljSFRNTFRva2VuKiB0b2tlbikKIHsKLSAgICBBU1NFUlQodG9rZW4tPnR5cGUoKSA9PSBIVE1M
VG9rZW5UeXBlczo6U3RhcnRUYWcpOworICAgIEFTU0VSVCh0b2tlbi0+dHlwZSgpID09IEhUTUxU
b2tlbjo6U3RhcnRUYWcpOwogICAgIGlmICh0b2tlbi0+bmFtZSgpID09IGh0bWxUYWcpIHsKICAg
ICAgICAgcHJvY2Vzc0h0bWxTdGFydFRhZ0ZvckluQm9keSh0b2tlbik7CiAgICAgICAgIHJldHVy
bjsKQEAgLTg5Nyw3ICs4OTgsNyBAQCB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc1N0YXJ0
VGFnRm9ySW5Cb2R5KEF0b21pY0hUTUxUb2tlbiogdG9rZW4pCiAgICAgfQogICAgIGlmICh0b2tl
bi0+bmFtZSgpID09IG9wdGdyb3VwVGFnIHx8IHRva2VuLT5uYW1lKCkgPT0gb3B0aW9uVGFnKSB7
CiAgICAgICAgIGlmIChtX3RyZWUuY3VycmVudFN0YWNrSXRlbSgpLT5oYXNUYWdOYW1lKG9wdGlv
blRhZykpIHsKLSAgICAgICAgICAgIFJlZlB0cjxBdG9taWNIVE1MVG9rZW4+IGVuZE9wdGlvbiA9
IEF0b21pY0hUTUxUb2tlbjo6Y3JlYXRlKEhUTUxUb2tlblR5cGVzOjpFbmRUYWcsIG9wdGlvblRh
Zy5sb2NhbE5hbWUoKSk7CisgICAgICAgICAgICBSZWZQdHI8QXRvbWljSFRNTFRva2VuPiBlbmRP
cHRpb24gPSBBdG9taWNIVE1MVG9rZW46OmNyZWF0ZShIVE1MVG9rZW46OkVuZFRhZywgb3B0aW9u
VGFnLmxvY2FsTmFtZSgpKTsKICAgICAgICAgICAgIHByb2Nlc3NFbmRUYWcoZW5kT3B0aW9uLmdl
dCgpKTsKICAgICAgICAgfQogICAgICAgICBtX3RyZWUucmVjb25zdHJ1Y3RUaGVBY3RpdmVGb3Jt
YXR0aW5nRWxlbWVudHMoKTsKQEAgLTEwMjEsNyArMTAyMiw3IEBAIHZvaWQgSFRNTFRyZWVCdWls
ZGVyOjpjbG9zZVRoZUNlbGwoKQogCiB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc1N0YXJ0
VGFnRm9ySW5UYWJsZShBdG9taWNIVE1MVG9rZW4qIHRva2VuKQogewotICAgIEFTU0VSVCh0b2tl
bi0+dHlwZSgpID09IEhUTUxUb2tlblR5cGVzOjpTdGFydFRhZyk7CisgICAgQVNTRVJUKHRva2Vu
LT50eXBlKCkgPT0gSFRNTFRva2VuOjpTdGFydFRhZyk7CiAgICAgaWYgKHRva2VuLT5uYW1lKCkg
PT0gY2FwdGlvblRhZykgewogICAgICAgICBtX3RyZWUub3BlbkVsZW1lbnRzKCktPnBvcFVudGls
VGFibGVTY29wZU1hcmtlcigpOwogICAgICAgICBtX3RyZWUuYWN0aXZlRm9ybWF0dGluZ0VsZW1l
bnRzKCktPmFwcGVuZE1hcmtlcigpOwpAQCAtMTA5Nyw3ICsxMDk4LDcgQEAgdm9pZCBIVE1MVHJl
ZUJ1aWxkZXI6OnByb2Nlc3NTdGFydFRhZ0ZvckluVGFibGUoQXRvbWljSFRNTFRva2VuKiB0b2tl
bikKIAogdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NTdGFydFRhZyhBdG9taWNIVE1MVG9r
ZW4qIHRva2VuKQogewotICAgIEFTU0VSVCh0b2tlbi0+dHlwZSgpID09IEhUTUxUb2tlblR5cGVz
OjpTdGFydFRhZyk7CisgICAgQVNTRVJUKHRva2VuLT50eXBlKCkgPT0gSFRNTFRva2VuOjpTdGFy
dFRhZyk7CiAgICAgc3dpdGNoIChpbnNlcnRpb25Nb2RlKCkpIHsKICAgICBjYXNlIEluaXRpYWxN
b2RlOgogICAgICAgICBBU1NFUlQoaW5zZXJ0aW9uTW9kZSgpID09IEluaXRpYWxNb2RlKTsKQEAg
LTEzNjYsNyArMTM2Nyw3IEBAIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzU3RhcnRUYWco
QXRvbWljSFRNTFRva2VuKiB0b2tlbikKICAgICAgICAgICAgIHx8IHRva2VuLT5uYW1lKCkgPT0g
dHJUYWcKICAgICAgICAgICAgIHx8IGlzVGFibGVDZWxsQ29udGV4dFRhZyh0b2tlbi0+bmFtZSgp
KSkgewogICAgICAgICAgICAgcGFyc2VFcnJvcih0b2tlbik7Ci0gICAgICAgICAgICBSZWZQdHI8
QXRvbWljSFRNTFRva2VuPiBlbmRTZWxlY3QgPSBBdG9taWNIVE1MVG9rZW46OmNyZWF0ZShIVE1M
VG9rZW5UeXBlczo6RW5kVGFnLCBzZWxlY3RUYWcubG9jYWxOYW1lKCkpOworICAgICAgICAgICAg
UmVmUHRyPEF0b21pY0hUTUxUb2tlbj4gZW5kU2VsZWN0ID0gQXRvbWljSFRNTFRva2VuOjpjcmVh
dGUoSFRNTFRva2VuOjpFbmRUYWcsIHNlbGVjdFRhZy5sb2NhbE5hbWUoKSk7CiAgICAgICAgICAg
ICBwcm9jZXNzRW5kVGFnKGVuZFNlbGVjdC5nZXQoKSk7CiAgICAgICAgICAgICBwcm9jZXNzU3Rh
cnRUYWcodG9rZW4pOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTM4MCw3ICsxMzgxLDcgQEAg
dm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NTdGFydFRhZyhBdG9taWNIVE1MVG9rZW4qIHRv
a2VuKQogICAgICAgICB9CiAgICAgICAgIGlmICh0b2tlbi0+bmFtZSgpID09IG9wdGlvblRhZykg
ewogICAgICAgICAgICAgaWYgKG1fdHJlZS5jdXJyZW50U3RhY2tJdGVtKCktPmhhc1RhZ05hbWUo
b3B0aW9uVGFnKSkgewotICAgICAgICAgICAgICAgIFJlZlB0cjxBdG9taWNIVE1MVG9rZW4+IGVu
ZE9wdGlvbiA9IEF0b21pY0hUTUxUb2tlbjo6Y3JlYXRlKEhUTUxUb2tlblR5cGVzOjpFbmRUYWcs
IG9wdGlvblRhZy5sb2NhbE5hbWUoKSk7CisgICAgICAgICAgICAgICAgUmVmUHRyPEF0b21pY0hU
TUxUb2tlbj4gZW5kT3B0aW9uID0gQXRvbWljSFRNTFRva2VuOjpjcmVhdGUoSFRNTFRva2VuOjpF
bmRUYWcsIG9wdGlvblRhZy5sb2NhbE5hbWUoKSk7CiAgICAgICAgICAgICAgICAgcHJvY2Vzc0Vu
ZFRhZyhlbmRPcHRpb24uZ2V0KCkpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgbV90cmVl
Lmluc2VydEhUTUxFbGVtZW50KHRva2VuKTsKQEAgLTEzODgsMTEgKzEzODksMTEgQEAgdm9pZCBI
VE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NTdGFydFRhZyhBdG9taWNIVE1MVG9rZW4qIHRva2VuKQog
ICAgICAgICB9CiAgICAgICAgIGlmICh0b2tlbi0+bmFtZSgpID09IG9wdGdyb3VwVGFnKSB7CiAg
ICAgICAgICAgICBpZiAobV90cmVlLmN1cnJlbnRTdGFja0l0ZW0oKS0+aGFzVGFnTmFtZShvcHRp
b25UYWcpKSB7Ci0gICAgICAgICAgICAgICAgUmVmUHRyPEF0b21pY0hUTUxUb2tlbj4gZW5kT3B0
aW9uID0gQXRvbWljSFRNTFRva2VuOjpjcmVhdGUoSFRNTFRva2VuVHlwZXM6OkVuZFRhZywgb3B0
aW9uVGFnLmxvY2FsTmFtZSgpKTsKKyAgICAgICAgICAgICAgICBSZWZQdHI8QXRvbWljSFRNTFRv
a2VuPiBlbmRPcHRpb24gPSBBdG9taWNIVE1MVG9rZW46OmNyZWF0ZShIVE1MVG9rZW46OkVuZFRh
Zywgb3B0aW9uVGFnLmxvY2FsTmFtZSgpKTsKICAgICAgICAgICAgICAgICBwcm9jZXNzRW5kVGFn
KGVuZE9wdGlvbi5nZXQoKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAobV90cmVl
LmN1cnJlbnRTdGFja0l0ZW0oKS0+aGFzVGFnTmFtZShvcHRncm91cFRhZykpIHsKLSAgICAgICAg
ICAgICAgICBSZWZQdHI8QXRvbWljSFRNTFRva2VuPiBlbmRPcHRncm91cCA9IEF0b21pY0hUTUxU
b2tlbjo6Y3JlYXRlKEhUTUxUb2tlblR5cGVzOjpFbmRUYWcsIG9wdGdyb3VwVGFnLmxvY2FsTmFt
ZSgpKTsKKyAgICAgICAgICAgICAgICBSZWZQdHI8QXRvbWljSFRNTFRva2VuPiBlbmRPcHRncm91
cCA9IEF0b21pY0hUTUxUb2tlbjo6Y3JlYXRlKEhUTUxUb2tlbjo6RW5kVGFnLCBvcHRncm91cFRh
Zy5sb2NhbE5hbWUoKSk7CiAgICAgICAgICAgICAgICAgcHJvY2Vzc0VuZFRhZyhlbmRPcHRncm91
cC5nZXQoKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBtX3RyZWUuaW5zZXJ0SFRNTEVs
ZW1lbnQodG9rZW4pOwpAQCAtMTQwMCw3ICsxNDAxLDcgQEAgdm9pZCBIVE1MVHJlZUJ1aWxkZXI6
OnByb2Nlc3NTdGFydFRhZyhBdG9taWNIVE1MVG9rZW4qIHRva2VuKQogICAgICAgICB9CiAgICAg
ICAgIGlmICh0b2tlbi0+bmFtZSgpID09IHNlbGVjdFRhZykgewogICAgICAgICAgICAgcGFyc2VF
cnJvcih0b2tlbik7Ci0gICAgICAgICAgICBSZWZQdHI8QXRvbWljSFRNTFRva2VuPiBlbmRTZWxl
Y3QgPSBBdG9taWNIVE1MVG9rZW46OmNyZWF0ZShIVE1MVG9rZW5UeXBlczo6RW5kVGFnLCBzZWxl
Y3RUYWcubG9jYWxOYW1lKCkpOworICAgICAgICAgICAgUmVmUHRyPEF0b21pY0hUTUxUb2tlbj4g
ZW5kU2VsZWN0ID0gQXRvbWljSFRNTFRva2VuOjpjcmVhdGUoSFRNTFRva2VuOjpFbmRUYWcsIHNl
bGVjdFRhZy5sb2NhbE5hbWUoKSk7CiAgICAgICAgICAgICBwcm9jZXNzRW5kVGFnKGVuZFNlbGVj
dC5nZXQoKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTE0MTIsNyArMTQx
Myw3IEBAIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzU3RhcnRUYWcoQXRvbWljSFRNTFRv
a2VuKiB0b2tlbikKICAgICAgICAgICAgICAgICBBU1NFUlQoaXNQYXJzaW5nRnJhZ21lbnQoKSk7
CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgUmVm
UHRyPEF0b21pY0hUTUxUb2tlbj4gZW5kU2VsZWN0ID0gQXRvbWljSFRNTFRva2VuOjpjcmVhdGUo
SFRNTFRva2VuVHlwZXM6OkVuZFRhZywgc2VsZWN0VGFnLmxvY2FsTmFtZSgpKTsKKyAgICAgICAg
ICAgIFJlZlB0cjxBdG9taWNIVE1MVG9rZW4+IGVuZFNlbGVjdCA9IEF0b21pY0hUTUxUb2tlbjo6
Y3JlYXRlKEhUTUxUb2tlbjo6RW5kVGFnLCBzZWxlY3RUYWcubG9jYWxOYW1lKCkpOwogICAgICAg
ICAgICAgcHJvY2Vzc0VuZFRhZyhlbmRTZWxlY3QuZ2V0KCkpOwogICAgICAgICAgICAgcHJvY2Vz
c1N0YXJ0VGFnKHRva2VuKTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTE0OTIsNyArMTQ5Myw3
IEBAIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzSHRtbFN0YXJ0VGFnRm9ySW5Cb2R5KEF0
b21pY0hUTUxUb2tlbiogdG9rZW4pCiAKIGJvb2wgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzQm9k
eUVuZFRhZ0ZvckluQm9keShBdG9taWNIVE1MVG9rZW4qIHRva2VuKQogewotICAgIEFTU0VSVCh0
b2tlbi0+dHlwZSgpID09IEhUTUxUb2tlblR5cGVzOjpFbmRUYWcpOworICAgIEFTU0VSVCh0b2tl
bi0+dHlwZSgpID09IEhUTUxUb2tlbjo6RW5kVGFnKTsKICAgICBBU1NFUlQodG9rZW4tPm5hbWUo
KSA9PSBib2R5VGFnKTsKICAgICBpZiAoIW1fdHJlZS5vcGVuRWxlbWVudHMoKS0+aW5TY29wZShi
b2R5VGFnLmxvY2FsTmFtZSgpKSkgewogICAgICAgICBwYXJzZUVycm9yKHRva2VuKTsKQEAgLTE1
MDUsNyArMTUwNiw3IEBAIGJvb2wgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzQm9keUVuZFRhZ0Zv
ckluQm9keShBdG9taWNIVE1MVG9rZW4qIHRva2VuKQogCiB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6
cHJvY2Vzc0FueU90aGVyRW5kVGFnRm9ySW5Cb2R5KEF0b21pY0hUTUxUb2tlbiogdG9rZW4pCiB7
Ci0gICAgQVNTRVJUKHRva2VuLT50eXBlKCkgPT0gSFRNTFRva2VuVHlwZXM6OkVuZFRhZyk7Cisg
ICAgQVNTRVJUKHRva2VuLT50eXBlKCkgPT0gSFRNTFRva2VuOjpFbmRUYWcpOwogICAgIEhUTUxF
bGVtZW50U3RhY2s6OkVsZW1lbnRSZWNvcmQqIHJlY29yZCA9IG1fdHJlZS5vcGVuRWxlbWVudHMo
KS0+dG9wUmVjb3JkKCk7CiAgICAgd2hpbGUgKDEpIHsKICAgICAgICAgUmVmUHRyPEhUTUxTdGFj
a0l0ZW0+IGl0ZW0gPSByZWNvcmQtPnN0YWNrSXRlbSgpOwpAQCAtMTcwOSw3ICsxNzEwLDcgQEAg
dm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnJlc2V0SW5zZXJ0aW9uTW9kZUFwcHJvcHJpYXRlbHkoKQog
CiB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0VuZFRhZ0ZvckluVGFibGVCb2R5KEF0b21p
Y0hUTUxUb2tlbiogdG9rZW4pCiB7Ci0gICAgQVNTRVJUKHRva2VuLT50eXBlKCkgPT0gSFRNTFRv
a2VuVHlwZXM6OkVuZFRhZyk7CisgICAgQVNTRVJUKHRva2VuLT50eXBlKCkgPT0gSFRNTFRva2Vu
OjpFbmRUYWcpOwogICAgIGlmIChpc1RhYmxlQm9keUNvbnRleHRUYWcodG9rZW4tPm5hbWUoKSkp
IHsKICAgICAgICAgaWYgKCFtX3RyZWUub3BlbkVsZW1lbnRzKCktPmluVGFibGVTY29wZSh0b2tl
bi0+bmFtZSgpKSkgewogICAgICAgICAgICAgcGFyc2VFcnJvcih0b2tlbik7CkBAIC0xNzQ2LDcg
KzE3NDcsNyBAQCB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0VuZFRhZ0ZvckluVGFibGVC
b2R5KEF0b21pY0hUTUxUb2tlbiogdG9rZW4pCiAKIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpwcm9j
ZXNzRW5kVGFnRm9ySW5Sb3coQXRvbWljSFRNTFRva2VuKiB0b2tlbikKIHsKLSAgICBBU1NFUlQo
dG9rZW4tPnR5cGUoKSA9PSBIVE1MVG9rZW5UeXBlczo6RW5kVGFnKTsKKyAgICBBU1NFUlQodG9r
ZW4tPnR5cGUoKSA9PSBIVE1MVG9rZW46OkVuZFRhZyk7CiAgICAgaWYgKHRva2VuLT5uYW1lKCkg
PT0gdHJUYWcpIHsKICAgICAgICAgcHJvY2Vzc1RyRW5kVGFnRm9ySW5Sb3coKTsKICAgICAgICAg
cmV0dXJuOwpAQCAtMTc4Miw3ICsxNzgzLDcgQEAgdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nl
c3NFbmRUYWdGb3JJblJvdyhBdG9taWNIVE1MVG9rZW4qIHRva2VuKQogCiB2b2lkIEhUTUxUcmVl
QnVpbGRlcjo6cHJvY2Vzc0VuZFRhZ0ZvckluQ2VsbChBdG9taWNIVE1MVG9rZW4qIHRva2VuKQog
ewotICAgIEFTU0VSVCh0b2tlbi0+dHlwZSgpID09IEhUTUxUb2tlblR5cGVzOjpFbmRUYWcpOwor
ICAgIEFTU0VSVCh0b2tlbi0+dHlwZSgpID09IEhUTUxUb2tlbjo6RW5kVGFnKTsKICAgICBpZiAo
aXNUYWJsZUNlbGxDb250ZXh0VGFnKHRva2VuLT5uYW1lKCkpKSB7CiAgICAgICAgIGlmICghbV90
cmVlLm9wZW5FbGVtZW50cygpLT5pblRhYmxlU2NvcGUodG9rZW4tPm5hbWUoKSkpIHsKICAgICAg
ICAgICAgIHBhcnNlRXJyb3IodG9rZW4pOwpAQCAtMTgyMywxMyArMTgyNCwxMyBAQCB2b2lkIEhU
TUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0VuZFRhZ0ZvckluQ2VsbChBdG9taWNIVE1MVG9rZW4qIHRv
a2VuKQogCiB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0VuZFRhZ0ZvckluQm9keShBdG9t
aWNIVE1MVG9rZW4qIHRva2VuKQogewotICAgIEFTU0VSVCh0b2tlbi0+dHlwZSgpID09IEhUTUxU
b2tlblR5cGVzOjpFbmRUYWcpOworICAgIEFTU0VSVCh0b2tlbi0+dHlwZSgpID09IEhUTUxUb2tl
bjo6RW5kVGFnKTsKICAgICBpZiAodG9rZW4tPm5hbWUoKSA9PSBib2R5VGFnKSB7CiAgICAgICAg
IHByb2Nlc3NCb2R5RW5kVGFnRm9ySW5Cb2R5KHRva2VuKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KICAgICBpZiAodG9rZW4tPm5hbWUoKSA9PSBodG1sVGFnKSB7Ci0gICAgICAgIFJlZlB0cjxB
dG9taWNIVE1MVG9rZW4+IGVuZEJvZHkgPSBBdG9taWNIVE1MVG9rZW46OmNyZWF0ZShIVE1MVG9r
ZW5UeXBlczo6RW5kVGFnLCBib2R5VGFnLmxvY2FsTmFtZSgpKTsKKyAgICAgICAgUmVmUHRyPEF0
b21pY0hUTUxUb2tlbj4gZW5kQm9keSA9IEF0b21pY0hUTUxUb2tlbjo6Y3JlYXRlKEhUTUxUb2tl
bjo6RW5kVGFnLCBib2R5VGFnLmxvY2FsTmFtZSgpKTsKICAgICAgICAgaWYgKHByb2Nlc3NCb2R5
RW5kVGFnRm9ySW5Cb2R5KGVuZEJvZHkuZ2V0KCkpKQogICAgICAgICAgICAgcHJvY2Vzc0VuZFRh
Zyh0b2tlbik7CiAgICAgICAgIHJldHVybjsKQEAgLTIwMDMsNyArMjAwNCw3IEBAIGJvb2wgSFRN
TFRyZWVCdWlsZGVyOjpwcm9jZXNzVGFibGVFbmRUYWdGb3JJblRhYmxlKCkKIAogdm9pZCBIVE1M
VHJlZUJ1aWxkZXI6OnByb2Nlc3NFbmRUYWdGb3JJblRhYmxlKEF0b21pY0hUTUxUb2tlbiogdG9r
ZW4pCiB7Ci0gICAgQVNTRVJUKHRva2VuLT50eXBlKCkgPT0gSFRNTFRva2VuVHlwZXM6OkVuZFRh
Zyk7CisgICAgQVNTRVJUKHRva2VuLT50eXBlKCkgPT0gSFRNTFRva2VuOjpFbmRUYWcpOwogICAg
IGlmICh0b2tlbi0+bmFtZSgpID09IHRhYmxlVGFnKSB7CiAgICAgICAgIHByb2Nlc3NUYWJsZUVu
ZFRhZ0ZvckluVGFibGUoKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMjAyNSw3ICsyMDI2LDcgQEAg
dm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NFbmRUYWdGb3JJblRhYmxlKEF0b21pY0hUTUxU
b2tlbiogdG9rZW4pCiAKIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzRW5kVGFnKEF0b21p
Y0hUTUxUb2tlbiogdG9rZW4pCiB7Ci0gICAgQVNTRVJUKHRva2VuLT50eXBlKCkgPT0gSFRNTFRv
a2VuVHlwZXM6OkVuZFRhZyk7CisgICAgQVNTRVJUKHRva2VuLT50eXBlKCkgPT0gSFRNTFRva2Vu
OjpFbmRUYWcpOwogICAgIHN3aXRjaCAoaW5zZXJ0aW9uTW9kZSgpKSB7CiAgICAgY2FzZSBJbml0
aWFsTW9kZToKICAgICAgICAgQVNTRVJUKGluc2VydGlvbk1vZGUoKSA9PSBJbml0aWFsTW9kZSk7
CkBAIC0yMjQ2LDcgKzIyNDcsNyBAQCB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0VuZFRh
ZyhBdG9taWNIVE1MVG9rZW4qIHRva2VuKQogICAgICAgICAgICAgfHwgaXNUYWJsZUNlbGxDb250
ZXh0VGFnKHRva2VuLT5uYW1lKCkpKSB7CiAgICAgICAgICAgICBwYXJzZUVycm9yKHRva2VuKTsK
ICAgICAgICAgICAgIGlmIChtX3RyZWUub3BlbkVsZW1lbnRzKCktPmluVGFibGVTY29wZSh0b2tl
bi0+bmFtZSgpKSkgewotICAgICAgICAgICAgICAgIFJlZlB0cjxBdG9taWNIVE1MVG9rZW4+IGVu
ZFNlbGVjdCA9IEF0b21pY0hUTUxUb2tlbjo6Y3JlYXRlKEhUTUxUb2tlblR5cGVzOjpFbmRUYWcs
IHNlbGVjdFRhZy5sb2NhbE5hbWUoKSk7CisgICAgICAgICAgICAgICAgUmVmUHRyPEF0b21pY0hU
TUxUb2tlbj4gZW5kU2VsZWN0ID0gQXRvbWljSFRNTFRva2VuOjpjcmVhdGUoSFRNTFRva2VuOjpF
bmRUYWcsIHNlbGVjdFRhZy5sb2NhbE5hbWUoKSk7CiAgICAgICAgICAgICAgICAgcHJvY2Vzc0Vu
ZFRhZyhlbmRTZWxlY3QuZ2V0KCkpOwogICAgICAgICAgICAgICAgIHByb2Nlc3NFbmRUYWcodG9r
ZW4pOwogICAgICAgICAgICAgfQpAQCAtMjMxMSw3ICsyMzEyLDcgQEAgdm9pZCBIVE1MVHJlZUJ1
aWxkZXI6OnByb2Nlc3NFbmRUYWcoQXRvbWljSFRNTFRva2VuKiB0b2tlbikKIAogdm9pZCBIVE1M
VHJlZUJ1aWxkZXI6OnByb2Nlc3NDb21tZW50KEF0b21pY0hUTUxUb2tlbiogdG9rZW4pCiB7Ci0g
ICAgQVNTRVJUKHRva2VuLT50eXBlKCkgPT0gSFRNTFRva2VuVHlwZXM6OkNvbW1lbnQpOworICAg
IEFTU0VSVCh0b2tlbi0+dHlwZSgpID09IEhUTUxUb2tlbjo6Q29tbWVudCk7CiAgICAgaWYgKG1f
aW5zZXJ0aW9uTW9kZSA9PSBJbml0aWFsTW9kZQogICAgICAgICB8fCBtX2luc2VydGlvbk1vZGUg
PT0gQmVmb3JlSFRNTE1vZGUKICAgICAgICAgfHwgbV9pbnNlcnRpb25Nb2RlID09IEFmdGVyQWZ0
ZXJCb2R5TW9kZQpAQCAtMjMzMyw3ICsyMzM0LDcgQEAgdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnBy
b2Nlc3NDb21tZW50KEF0b21pY0hUTUxUb2tlbiogdG9rZW4pCiAKIHZvaWQgSFRNTFRyZWVCdWls
ZGVyOjpwcm9jZXNzQ2hhcmFjdGVyKEF0b21pY0hUTUxUb2tlbiogdG9rZW4pCiB7Ci0gICAgQVNT
RVJUKHRva2VuLT50eXBlKCkgPT0gSFRNTFRva2VuVHlwZXM6OkNoYXJhY3Rlcik7CisgICAgQVNT
RVJUKHRva2VuLT50eXBlKCkgPT0gSFRNTFRva2VuOjpDaGFyYWN0ZXIpOwogICAgIEV4dGVybmFs
Q2hhcmFjdGVyVG9rZW5CdWZmZXIgYnVmZmVyKHRva2VuKTsKICAgICBwcm9jZXNzQ2hhcmFjdGVy
QnVmZmVyKGJ1ZmZlcik7CiB9CkBAIC0yNjQyLDMyICsyNjQzLDMyIEBAIHZvaWQgSFRNTFRyZWVC
dWlsZGVyOjpkZWZhdWx0Rm9ySW5pdGlhbCgpCiAKIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpkZWZh
dWx0Rm9yQmVmb3JlSFRNTCgpCiB7Ci0gICAgUmVmUHRyPEF0b21pY0hUTUxUb2tlbj4gc3RhcnRI
VE1MID0gQXRvbWljSFRNTFRva2VuOjpjcmVhdGUoSFRNTFRva2VuVHlwZXM6OlN0YXJ0VGFnLCBo
dG1sVGFnLmxvY2FsTmFtZSgpKTsKKyAgICBSZWZQdHI8QXRvbWljSFRNTFRva2VuPiBzdGFydEhU
TUwgPSBBdG9taWNIVE1MVG9rZW46OmNyZWF0ZShIVE1MVG9rZW46OlN0YXJ0VGFnLCBodG1sVGFn
LmxvY2FsTmFtZSgpKTsKICAgICBtX3RyZWUuaW5zZXJ0SFRNTEh0bWxTdGFydFRhZ0JlZm9yZUhU
TUwoc3RhcnRIVE1MLmdldCgpKTsKICAgICBzZXRJbnNlcnRpb25Nb2RlKEJlZm9yZUhlYWRNb2Rl
KTsKIH0KIAogdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OmRlZmF1bHRGb3JCZWZvcmVIZWFkKCkKIHsK
LSAgICBSZWZQdHI8QXRvbWljSFRNTFRva2VuPiBzdGFydEhlYWQgPSBBdG9taWNIVE1MVG9rZW46
OmNyZWF0ZShIVE1MVG9rZW5UeXBlczo6U3RhcnRUYWcsIGhlYWRUYWcubG9jYWxOYW1lKCkpOwor
ICAgIFJlZlB0cjxBdG9taWNIVE1MVG9rZW4+IHN0YXJ0SGVhZCA9IEF0b21pY0hUTUxUb2tlbjo6
Y3JlYXRlKEhUTUxUb2tlbjo6U3RhcnRUYWcsIGhlYWRUYWcubG9jYWxOYW1lKCkpOwogICAgIHBy
b2Nlc3NTdGFydFRhZyhzdGFydEhlYWQuZ2V0KCkpOwogfQogCiB2b2lkIEhUTUxUcmVlQnVpbGRl
cjo6ZGVmYXVsdEZvckluSGVhZCgpCiB7Ci0gICAgUmVmUHRyPEF0b21pY0hUTUxUb2tlbj4gZW5k
SGVhZCA9IEF0b21pY0hUTUxUb2tlbjo6Y3JlYXRlKEhUTUxUb2tlblR5cGVzOjpFbmRUYWcsIGhl
YWRUYWcubG9jYWxOYW1lKCkpOworICAgIFJlZlB0cjxBdG9taWNIVE1MVG9rZW4+IGVuZEhlYWQg
PSBBdG9taWNIVE1MVG9rZW46OmNyZWF0ZShIVE1MVG9rZW46OkVuZFRhZywgaGVhZFRhZy5sb2Nh
bE5hbWUoKSk7CiAgICAgcHJvY2Vzc0VuZFRhZyhlbmRIZWFkLmdldCgpKTsKIH0KIAogdm9pZCBI
VE1MVHJlZUJ1aWxkZXI6OmRlZmF1bHRGb3JJbkhlYWROb3NjcmlwdCgpCiB7Ci0gICAgUmVmUHRy
PEF0b21pY0hUTUxUb2tlbj4gZW5kTm9zY3JpcHQgPSBBdG9taWNIVE1MVG9rZW46OmNyZWF0ZShI
VE1MVG9rZW5UeXBlczo6RW5kVGFnLCBub3NjcmlwdFRhZy5sb2NhbE5hbWUoKSk7CisgICAgUmVm
UHRyPEF0b21pY0hUTUxUb2tlbj4gZW5kTm9zY3JpcHQgPSBBdG9taWNIVE1MVG9rZW46OmNyZWF0
ZShIVE1MVG9rZW46OkVuZFRhZywgbm9zY3JpcHRUYWcubG9jYWxOYW1lKCkpOwogICAgIHByb2Nl
c3NFbmRUYWcoZW5kTm9zY3JpcHQuZ2V0KCkpOwogfQogCiB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6
ZGVmYXVsdEZvckFmdGVySGVhZCgpCiB7Ci0gICAgUmVmUHRyPEF0b21pY0hUTUxUb2tlbj4gc3Rh
cnRCb2R5ID0gQXRvbWljSFRNTFRva2VuOjpjcmVhdGUoSFRNTFRva2VuVHlwZXM6OlN0YXJ0VGFn
LCBib2R5VGFnLmxvY2FsTmFtZSgpKTsKKyAgICBSZWZQdHI8QXRvbWljSFRNTFRva2VuPiBzdGFy
dEJvZHkgPSBBdG9taWNIVE1MVG9rZW46OmNyZWF0ZShIVE1MVG9rZW46OlN0YXJ0VGFnLCBib2R5
VGFnLmxvY2FsTmFtZSgpKTsKICAgICBwcm9jZXNzU3RhcnRUYWcoc3RhcnRCb2R5LmdldCgpKTsK
ICAgICBtX2ZyYW1lc2V0T2sgPSB0cnVlOwogfQpAQCAtMjY5MSw3ICsyNjkyLDcgQEAgdm9pZCBI
VE1MVHJlZUJ1aWxkZXI6OmRlZmF1bHRGb3JJblRhYmxlVGV4dCgpCiAKIGJvb2wgSFRNTFRyZWVC
dWlsZGVyOjpwcm9jZXNzU3RhcnRUYWdGb3JJbkhlYWQoQXRvbWljSFRNTFRva2VuKiB0b2tlbikK
IHsKLSAgICBBU1NFUlQodG9rZW4tPnR5cGUoKSA9PSBIVE1MVG9rZW5UeXBlczo6U3RhcnRUYWcp
OworICAgIEFTU0VSVCh0b2tlbi0+dHlwZSgpID09IEhUTUxUb2tlbjo6U3RhcnRUYWcpOwogICAg
IGlmICh0b2tlbi0+bmFtZSgpID09IGh0bWxUYWcpIHsKICAgICAgICAgcHJvY2Vzc0h0bWxTdGFy
dFRhZ0ZvckluQm9keSh0b2tlbik7CiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMjc0NCw3ICsy
NzQ1LDcgQEAgYm9vbCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NTdGFydFRhZ0ZvckluSGVhZChB
dG9taWNIVE1MVG9rZW4qIHRva2VuKQogCiB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0dl
bmVyaWNSQ0RBVEFTdGFydFRhZyhBdG9taWNIVE1MVG9rZW4qIHRva2VuKQogewotICAgIEFTU0VS
VCh0b2tlbi0+dHlwZSgpID09IEhUTUxUb2tlblR5cGVzOjpTdGFydFRhZyk7CisgICAgQVNTRVJU
KHRva2VuLT50eXBlKCkgPT0gSFRNTFRva2VuOjpTdGFydFRhZyk7CiAgICAgbV90cmVlLmluc2Vy
dEhUTUxFbGVtZW50KHRva2VuKTsKICAgICBpZiAobV9wYXJzZXItPnRva2VuaXplcigpKQogICAg
ICAgICBtX3BhcnNlci0+dG9rZW5pemVyKCktPnNldFN0YXRlKEhUTUxUb2tlbml6ZXI6OlJDREFU
QVN0YXRlKTsKQEAgLTI3NTQsNyArMjc1NSw3IEBAIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpwcm9j
ZXNzR2VuZXJpY1JDREFUQVN0YXJ0VGFnKEF0b21pY0hUTUxUb2tlbiogdG9rZW4pCiAKIHZvaWQg
SFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzR2VuZXJpY1Jhd1RleHRTdGFydFRhZyhBdG9taWNIVE1M
VG9rZW4qIHRva2VuKQogewotICAgIEFTU0VSVCh0b2tlbi0+dHlwZSgpID09IEhUTUxUb2tlblR5
cGVzOjpTdGFydFRhZyk7CisgICAgQVNTRVJUKHRva2VuLT50eXBlKCkgPT0gSFRNTFRva2VuOjpT
dGFydFRhZyk7CiAgICAgbV90cmVlLmluc2VydEhUTUxFbGVtZW50KHRva2VuKTsKICAgICBpZiAo
bV9wYXJzZXItPnRva2VuaXplcigpKQogICAgICAgICBtX3BhcnNlci0+dG9rZW5pemVyKCktPnNl
dFN0YXRlKEhUTUxUb2tlbml6ZXI6OlJBV1RFWFRTdGF0ZSk7CkBAIC0yNzY0LDcgKzI3NjUsNyBA
QCB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0dlbmVyaWNSYXdUZXh0U3RhcnRUYWcoQXRv
bWljSFRNTFRva2VuKiB0b2tlbikKIAogdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NTY3Jp
cHRTdGFydFRhZyhBdG9taWNIVE1MVG9rZW4qIHRva2VuKQogewotICAgIEFTU0VSVCh0b2tlbi0+
dHlwZSgpID09IEhUTUxUb2tlblR5cGVzOjpTdGFydFRhZyk7CisgICAgQVNTRVJUKHRva2VuLT50
eXBlKCkgPT0gSFRNTFRva2VuOjpTdGFydFRhZyk7CiAgICAgbV90cmVlLmluc2VydFNjcmlwdEVs
ZW1lbnQodG9rZW4pOwogICAgIGlmIChtX3BhcnNlci0+dG9rZW5pemVyKCkpCiAgICAgICAgIG1f
cGFyc2VyLT50b2tlbml6ZXIoKS0+c2V0U3RhdGUoSFRNTFRva2VuaXplcjo6U2NyaXB0RGF0YVN0
YXRlKTsKQEAgLTI3ODYsMjQgKzI3ODcsMjQgQEAgYm9vbCBIVE1MVHJlZUJ1aWxkZXI6OnNob3Vs
ZFByb2Nlc3NUb2tlbkluRm9yZWlnbkNvbnRlbnQoQXRvbWljSFRNTFRva2VuKiB0b2tlbikKICAg
ICBpZiAoaXRlbS0+aXNJbkhUTUxOYW1lc3BhY2UoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIGlmIChIVE1MRWxlbWVudFN0YWNrOjppc01hdGhNTFRleHRJbnRlZ3JhdGlvblBvaW50KGl0
ZW0pKSB7Ci0gICAgICAgIGlmICh0b2tlbi0+dHlwZSgpID09IEhUTUxUb2tlblR5cGVzOjpTdGFy
dFRhZworICAgICAgICBpZiAodG9rZW4tPnR5cGUoKSA9PSBIVE1MVG9rZW46OlN0YXJ0VGFnCiAg
ICAgICAgICAgICAmJiB0b2tlbi0+bmFtZSgpICE9IE1hdGhNTE5hbWVzOjptZ2x5cGhUYWcKICAg
ICAgICAgICAgICYmIHRva2VuLT5uYW1lKCkgIT0gTWF0aE1MTmFtZXM6Om1hbGlnbm1hcmtUYWcp
CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIGlmICh0b2tlbi0+dHlwZSgpID09
IEhUTUxUb2tlblR5cGVzOjpDaGFyYWN0ZXIpCisgICAgICAgIGlmICh0b2tlbi0+dHlwZSgpID09
IEhUTUxUb2tlbjo6Q2hhcmFjdGVyKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0K
ICAgICBpZiAoaXRlbS0+aGFzVGFnTmFtZShNYXRoTUxOYW1lczo6YW5ub3RhdGlvbl94bWxUYWcp
Ci0gICAgICAgICYmIHRva2VuLT50eXBlKCkgPT0gSFRNTFRva2VuVHlwZXM6OlN0YXJ0VGFnCisg
ICAgICAgICYmIHRva2VuLT50eXBlKCkgPT0gSFRNTFRva2VuOjpTdGFydFRhZwogICAgICAgICAm
JiB0b2tlbi0+bmFtZSgpID09IFNWR05hbWVzOjpzdmdUYWcpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICBpZiAoSFRNTEVsZW1lbnRTdGFjazo6aXNIVE1MSW50ZWdyYXRpb25Qb2ludChpdGVt
KSkgewotICAgICAgICBpZiAodG9rZW4tPnR5cGUoKSA9PSBIVE1MVG9rZW5UeXBlczo6U3RhcnRU
YWcpCisgICAgICAgIGlmICh0b2tlbi0+dHlwZSgpID09IEhUTUxUb2tlbjo6U3RhcnRUYWcpCiAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIGlmICh0b2tlbi0+dHlwZSgpID09IEhU
TUxUb2tlblR5cGVzOjpDaGFyYWN0ZXIpCisgICAgICAgIGlmICh0b2tlbi0+dHlwZSgpID09IEhU
TUxUb2tlbjo6Q2hhcmFjdGVyKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KLSAg
ICBpZiAodG9rZW4tPnR5cGUoKSA9PSBIVE1MVG9rZW5UeXBlczo6RW5kT2ZGaWxlKQorICAgIGlm
ICh0b2tlbi0+dHlwZSgpID09IEhUTUxUb2tlbjo6RW5kT2ZGaWxlKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC0yODExLDEzICsyODEyLDEzIEBAIGJvb2wg
SFRNTFRyZWVCdWlsZGVyOjpzaG91bGRQcm9jZXNzVG9rZW5JbkZvcmVpZ25Db250ZW50KEF0b21p
Y0hUTUxUb2tlbiogdG9rZW4pCiB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc1Rva2VuSW5G
b3JlaWduQ29udGVudChBdG9taWNIVE1MVG9rZW4qIHRva2VuKQogewogICAgIHN3aXRjaCAodG9r
ZW4tPnR5cGUoKSkgewotICAgIGNhc2UgSFRNTFRva2VuVHlwZXM6OlVuaW5pdGlhbGl6ZWQ6Cisg
ICAgY2FzZSBIVE1MVG9rZW46OlVuaW5pdGlhbGl6ZWQ6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEhUTUxUb2tlblR5cGVzOjpET0NUWVBF
OgorICAgIGNhc2UgSFRNTFRva2VuOjpET0NUWVBFOgogICAgICAgICBwYXJzZUVycm9yKHRva2Vu
KTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBIVE1MVG9rZW5UeXBlczo6U3RhcnRUYWc6IHsK
KyAgICBjYXNlIEhUTUxUb2tlbjo6U3RhcnRUYWc6IHsKICAgICAgICAgaWYgKHRva2VuLT5uYW1l
KCkgPT0gYlRhZwogICAgICAgICAgICAgfHwgdG9rZW4tPm5hbWUoKSA9PSBiaWdUYWcKICAgICAg
ICAgICAgIHx8IHRva2VuLT5uYW1lKCkgPT0gYmxvY2txdW90ZVRhZwpAQCAtMjg3NCw3ICsyODc1
LDcgQEAgdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NUb2tlbkluRm9yZWlnbkNvbnRlbnQo
QXRvbWljSFRNTFRva2VuKiB0b2tlbikKICAgICAgICAgbV90cmVlLmluc2VydEZvcmVpZ25FbGVt
ZW50KHRva2VuLCBjdXJyZW50TmFtZXNwYWNlKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQotICAg
IGNhc2UgSFRNTFRva2VuVHlwZXM6OkVuZFRhZzogeworICAgIGNhc2UgSFRNTFRva2VuOjpFbmRU
YWc6IHsKICAgICAgICAgaWYgKG1fdHJlZS5jdXJyZW50U3RhY2tJdGVtKCktPm5hbWVzcGFjZVVS
SSgpID09IFNWR05hbWVzOjpzdmdOYW1lc3BhY2VVUkkpCiAgICAgICAgICAgICBhZGp1c3RTVkdU
YWdOYW1lQ2FzZSh0b2tlbik7CiAKQEAgLTI5MDMsMTcgKzI5MDQsMTcgQEAgdm9pZCBIVE1MVHJl
ZUJ1aWxkZXI6OnByb2Nlc3NUb2tlbkluRm9yZWlnbkNvbnRlbnQoQXRvbWljSFRNTFRva2VuKiB0
b2tlbikKICAgICAgICAgcHJvY2Vzc0VuZFRhZyh0b2tlbik7CiAgICAgICAgIGJyZWFrOwogICAg
IH0KLSAgICBjYXNlIEhUTUxUb2tlblR5cGVzOjpDb21tZW50OgorICAgIGNhc2UgSFRNTFRva2Vu
OjpDb21tZW50OgogICAgICAgICBtX3RyZWUuaW5zZXJ0Q29tbWVudCh0b2tlbik7CiAgICAgICAg
IHJldHVybjsKLSAgICBjYXNlIEhUTUxUb2tlblR5cGVzOjpDaGFyYWN0ZXI6IHsKKyAgICBjYXNl
IEhUTUxUb2tlbjo6Q2hhcmFjdGVyOiB7CiAgICAgICAgIFN0cmluZyBjaGFyYWN0ZXJzID0gU3Ry
aW5nKHRva2VuLT5jaGFyYWN0ZXJzKCksIHRva2VuLT5jaGFyYWN0ZXJzTGVuZ3RoKCkpOwogICAg
ICAgICBtX3RyZWUuaW5zZXJ0VGV4dE5vZGUoY2hhcmFjdGVycyk7CiAgICAgICAgIGlmIChtX2Zy
YW1lc2V0T2sgJiYgIWlzQWxsV2hpdGVzcGFjZU9yUmVwbGFjZW1lbnRDaGFyYWN0ZXJzKGNoYXJh
Y3RlcnMpKQogICAgICAgICAgICAgbV9mcmFtZXNldE9rID0gZmFsc2U7CiAgICAgICAgIGJyZWFr
OwogICAgIH0KLSAgICBjYXNlIEhUTUxUb2tlblR5cGVzOjpFbmRPZkZpbGU6CisgICAgY2FzZSBI
VE1MVG9rZW46OkVuZE9mRmlsZToKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAg
ICAgIGJyZWFrOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2Vy
L0hUTUxWaWV3U291cmNlUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hU
TUxWaWV3U291cmNlUGFyc2VyLmNwcAppbmRleCAxMDZiZTMxNGE1NDMxNGUwOGQ1MmJmOGUzYzE1
ZDJhY2U5MjljNzFhLi5hNWY0N2YwYTJkMzE3YjZlODUwY2I1ZjZkMDI0MDI5YWRhMzI1YmQ3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVmlld1NvdXJjZVBhcnNl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFZpZXdTb3VyY2VQYXJz
ZXIuY3BwCkBAIC03Niw3ICs3Niw3IEBAIFN0cmluZyBIVE1MVmlld1NvdXJjZVBhcnNlcjo6c291
cmNlRm9yVG9rZW4oKQogdm9pZCBIVE1MVmlld1NvdXJjZVBhcnNlcjo6dXBkYXRlVG9rZW5pemVy
U3RhdGUoKQogewogICAgIC8vIEZJWE1FOiBUaGUgdG9rZW5pemVyIHNob3VsZCBkbyB0aGlzIHdv
cmsgZm9yIHVzLgotICAgIGlmIChtX3Rva2VuLnR5cGUoKSAhPSBIVE1MVG9rZW5UeXBlczo6U3Rh
cnRUYWcpCisgICAgaWYgKG1fdG9rZW4udHlwZSgpICE9IEhUTUxUb2tlbjo6U3RhcnRUYWcpCiAg
ICAgICAgIHJldHVybjsKIAogICAgIEF0b21pY1N0cmluZyB0YWdOYW1lKG1fdG9rZW4ubmFtZSgp
LmRhdGEoKSwgbV90b2tlbi5uYW1lKCkuc2l6ZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvcGFyc2VyL1RleHREb2N1bWVudFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3BhcnNlci9UZXh0RG9jdW1lbnRQYXJzZXIuY3BwCmluZGV4IGZkMTAyY2JhODRmNDU4YWEx
ZGMxODY2MmU3Yjg0OTE0NmY2MGUwNWUuLjM5MWZjYWMwZWMzNWM2NmNlMDU4ZWI4MmE0ODE5MmJm
NmNlMmM3MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL1RleHREb2N1
bWVudFBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvVGV4dERvY3Vt
ZW50UGFyc2VyLmNwcApAQCAtNjAsNyArNjAsNyBAQCB2b2lkIFRleHREb2N1bWVudFBhcnNlcjo6
aW5zZXJ0RmFrZVByZUVsZW1lbnQoKQogICAgIC8vIGRpc3RydWJpbmcgdGhlIGxpbmUvY29sdW1u
IG51bWJlciBjYWxjdWxhdGlvbnMuCiAgICAgVmVjdG9yPEF0dHJpYnV0ZT4gYXR0cmlidXRlczsK
ICAgICBhdHRyaWJ1dGVzLmFwcGVuZChBdHRyaWJ1dGUoc3R5bGVBdHRyLCAid29yZC13cmFwOiBi
cmVhay13b3JkOyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IikpOwotICAgIFJlZlB0cjxBdG9taWNI
VE1MVG9rZW4+IGZha2VQcmUgPSBBdG9taWNIVE1MVG9rZW46OmNyZWF0ZShIVE1MVG9rZW5UeXBl
czo6U3RhcnRUYWcsIHByZVRhZy5sb2NhbE5hbWUoKSwgYXR0cmlidXRlcyk7CisgICAgUmVmUHRy
PEF0b21pY0hUTUxUb2tlbj4gZmFrZVByZSA9IEF0b21pY0hUTUxUb2tlbjo6Y3JlYXRlKEhUTUxU
b2tlbjo6U3RhcnRUYWcsIHByZVRhZy5sb2NhbE5hbWUoKSwgYXR0cmlidXRlcyk7CiAgICAgdHJl
ZUJ1aWxkZXIoKS0+Y29uc3RydWN0VHJlZShmYWtlUHJlLmdldCgpKTsKIAogICAgIC8vIE5vcm1h
bGx5IHdlIHdvdWxkIHNraXAgdGhlIGZpcnN0IFxuIGFmdGVyIGEgPHByZT4gZWxlbWVudCwgYnV0
IHdlIGRvbid0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9YU1NBdWRp
dG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL1hTU0F1ZGl0b3IuY3BwCmluZGV4
IDlkY2M4YjU0NzM3YmU3YWU0NTVlNmEyMmZlMGEwMDkzODAxZTU1NmEuLmRlNTRkMjI1MzI3ZWRj
NzkwNjdiMjE5YWM2OGFkYTAzZjJiNjkwOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvcGFyc2VyL1hTU0F1ZGl0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2Vy
L1hTU0F1ZGl0b3IuY3BwCkBAIC0yODQsMTIgKzI4NCwxMiBAQCBQYXNzT3duUHRyPFhTU0luZm8+
IFhTU0F1ZGl0b3I6OmZpbHRlclRva2VuKGNvbnN0IEZpbHRlclRva2VuUmVxdWVzdCYgcmVxdWVz
dCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBib29sIGRpZEJsb2NrU2NyaXB0ID0g
ZmFsc2U7Ci0gICAgaWYgKHJlcXVlc3QudG9rZW4udHlwZSgpID09IEhUTUxUb2tlblR5cGVzOjpT
dGFydFRhZykKKyAgICBpZiAocmVxdWVzdC50b2tlbi50eXBlKCkgPT0gSFRNTFRva2VuOjpTdGFy
dFRhZykKICAgICAgICAgZGlkQmxvY2tTY3JpcHQgPSBmaWx0ZXJTdGFydFRva2VuKHJlcXVlc3Qp
OwogICAgIGVsc2UgaWYgKG1fc2NyaXB0VGFnTmVzdGluZ0xldmVsKSB7Ci0gICAgICAgIGlmIChy
ZXF1ZXN0LnRva2VuLnR5cGUoKSA9PSBIVE1MVG9rZW5UeXBlczo6Q2hhcmFjdGVyKQorICAgICAg
ICBpZiAocmVxdWVzdC50b2tlbi50eXBlKCkgPT0gSFRNTFRva2VuOjpDaGFyYWN0ZXIpCiAgICAg
ICAgICAgICBkaWRCbG9ja1NjcmlwdCA9IGZpbHRlckNoYXJhY3RlclRva2VuKHJlcXVlc3QpOwot
ICAgICAgICBlbHNlIGlmIChyZXF1ZXN0LnRva2VuLnR5cGUoKSA9PSBIVE1MVG9rZW5UeXBlczo6
RW5kVGFnKQorICAgICAgICBlbHNlIGlmIChyZXF1ZXN0LnRva2VuLnR5cGUoKSA9PSBIVE1MVG9r
ZW46OkVuZFRhZykKICAgICAgICAgICAgIGZpbHRlckVuZFRva2VuKHJlcXVlc3QpOwogICAgIH0K
IApAQCAtMzU2LDcgKzM1Niw3IEBAIGJvb2wgWFNTQXVkaXRvcjo6ZmlsdGVyQ2hhcmFjdGVyVG9r
ZW4oY29uc3QgRmlsdGVyVG9rZW5SZXF1ZXN0JiByZXF1ZXN0KQogCiBib29sIFhTU0F1ZGl0b3I6
OmZpbHRlclNjcmlwdFRva2VuKGNvbnN0IEZpbHRlclRva2VuUmVxdWVzdCYgcmVxdWVzdCkKIHsK
LSAgICBBU1NFUlQocmVxdWVzdC50b2tlbi50eXBlKCkgPT0gSFRNTFRva2VuVHlwZXM6OlN0YXJ0
VGFnKTsKKyAgICBBU1NFUlQocmVxdWVzdC50b2tlbi50eXBlKCkgPT0gSFRNTFRva2VuOjpTdGFy
dFRhZyk7CiAgICAgQVNTRVJUKGhhc05hbWUocmVxdWVzdC50b2tlbiwgc2NyaXB0VGFnKSk7CiAK
ICAgICBtX2NhY2hlZERlY29kZWRTbmlwcGV0ID0gZGVjb2RlZFNuaXBwZXRGb3JOYW1lKHJlcXVl
c3QpOwpAQCAtMzcyLDcgKzM3Miw3IEBAIGJvb2wgWFNTQXVkaXRvcjo6ZmlsdGVyU2NyaXB0VG9r
ZW4oY29uc3QgRmlsdGVyVG9rZW5SZXF1ZXN0JiByZXF1ZXN0KQogCiBib29sIFhTU0F1ZGl0b3I6
OmZpbHRlck9iamVjdFRva2VuKGNvbnN0IEZpbHRlclRva2VuUmVxdWVzdCYgcmVxdWVzdCkKIHsK
LSAgICBBU1NFUlQocmVxdWVzdC50b2tlbi50eXBlKCkgPT0gSFRNTFRva2VuVHlwZXM6OlN0YXJ0
VGFnKTsKKyAgICBBU1NFUlQocmVxdWVzdC50b2tlbi50eXBlKCkgPT0gSFRNTFRva2VuOjpTdGFy
dFRhZyk7CiAgICAgQVNTRVJUKGhhc05hbWUocmVxdWVzdC50b2tlbiwgb2JqZWN0VGFnKSk7CiAK
ICAgICBib29sIGRpZEJsb2NrU2NyaXB0ID0gZmFsc2U7CkBAIC0zODYsNyArMzg2LDcgQEAgYm9v
bCBYU1NBdWRpdG9yOjpmaWx0ZXJPYmplY3RUb2tlbihjb25zdCBGaWx0ZXJUb2tlblJlcXVlc3Qm
IHJlcXVlc3QpCiAKIGJvb2wgWFNTQXVkaXRvcjo6ZmlsdGVyUGFyYW1Ub2tlbihjb25zdCBGaWx0
ZXJUb2tlblJlcXVlc3QmIHJlcXVlc3QpCiB7Ci0gICAgQVNTRVJUKHJlcXVlc3QudG9rZW4udHlw
ZSgpID09IEhUTUxUb2tlblR5cGVzOjpTdGFydFRhZyk7CisgICAgQVNTRVJUKHJlcXVlc3QudG9r
ZW4udHlwZSgpID09IEhUTUxUb2tlbjo6U3RhcnRUYWcpOwogICAgIEFTU0VSVChoYXNOYW1lKHJl
cXVlc3QudG9rZW4sIHBhcmFtVGFnKSk7CiAKICAgICBzaXplX3QgaW5kZXhPZk5hbWVBdHRyaWJ1
dGU7CkBAIC00MDQsNyArNDA0LDcgQEAgYm9vbCBYU1NBdWRpdG9yOjpmaWx0ZXJQYXJhbVRva2Vu
KGNvbnN0IEZpbHRlclRva2VuUmVxdWVzdCYgcmVxdWVzdCkKIAogYm9vbCBYU1NBdWRpdG9yOjpm
aWx0ZXJFbWJlZFRva2VuKGNvbnN0IEZpbHRlclRva2VuUmVxdWVzdCYgcmVxdWVzdCkKIHsKLSAg
ICBBU1NFUlQocmVxdWVzdC50b2tlbi50eXBlKCkgPT0gSFRNTFRva2VuVHlwZXM6OlN0YXJ0VGFn
KTsKKyAgICBBU1NFUlQocmVxdWVzdC50b2tlbi50eXBlKCkgPT0gSFRNTFRva2VuOjpTdGFydFRh
Zyk7CiAgICAgQVNTRVJUKGhhc05hbWUocmVxdWVzdC50b2tlbiwgZW1iZWRUYWcpKTsKIAogICAg
IGJvb2wgZGlkQmxvY2tTY3JpcHQgPSBmYWxzZTsKQEAgLTQxOCw3ICs0MTgsNyBAQCBib29sIFhT
U0F1ZGl0b3I6OmZpbHRlckVtYmVkVG9rZW4oY29uc3QgRmlsdGVyVG9rZW5SZXF1ZXN0JiByZXF1
ZXN0KQogCiBib29sIFhTU0F1ZGl0b3I6OmZpbHRlckFwcGxldFRva2VuKGNvbnN0IEZpbHRlclRv
a2VuUmVxdWVzdCYgcmVxdWVzdCkKIHsKLSAgICBBU1NFUlQocmVxdWVzdC50b2tlbi50eXBlKCkg
PT0gSFRNTFRva2VuVHlwZXM6OlN0YXJ0VGFnKTsKKyAgICBBU1NFUlQocmVxdWVzdC50b2tlbi50
eXBlKCkgPT0gSFRNTFRva2VuOjpTdGFydFRhZyk7CiAgICAgQVNTRVJUKGhhc05hbWUocmVxdWVz
dC50b2tlbiwgYXBwbGV0VGFnKSk7CiAKICAgICBib29sIGRpZEJsb2NrU2NyaXB0ID0gZmFsc2U7
CkBAIC00MzEsNyArNDMxLDcgQEAgYm9vbCBYU1NBdWRpdG9yOjpmaWx0ZXJBcHBsZXRUb2tlbihj
b25zdCBGaWx0ZXJUb2tlblJlcXVlc3QmIHJlcXVlc3QpCiAKIGJvb2wgWFNTQXVkaXRvcjo6Zmls
dGVySWZyYW1lVG9rZW4oY29uc3QgRmlsdGVyVG9rZW5SZXF1ZXN0JiByZXF1ZXN0KQogewotICAg
IEFTU0VSVChyZXF1ZXN0LnRva2VuLnR5cGUoKSA9PSBIVE1MVG9rZW5UeXBlczo6U3RhcnRUYWcp
OworICAgIEFTU0VSVChyZXF1ZXN0LnRva2VuLnR5cGUoKSA9PSBIVE1MVG9rZW46OlN0YXJ0VGFn
KTsKICAgICBBU1NFUlQoaGFzTmFtZShyZXF1ZXN0LnRva2VuLCBpZnJhbWVUYWcpKTsKIAogICAg
IGJvb2wgZGlkQmxvY2tTY3JpcHQgPSBmYWxzZTsKQEAgLTQ0NCw3ICs0NDQsNyBAQCBib29sIFhT
U0F1ZGl0b3I6OmZpbHRlcklmcmFtZVRva2VuKGNvbnN0IEZpbHRlclRva2VuUmVxdWVzdCYgcmVx
dWVzdCkKIAogYm9vbCBYU1NBdWRpdG9yOjpmaWx0ZXJNZXRhVG9rZW4oY29uc3QgRmlsdGVyVG9r
ZW5SZXF1ZXN0JiByZXF1ZXN0KQogewotICAgIEFTU0VSVChyZXF1ZXN0LnRva2VuLnR5cGUoKSA9
PSBIVE1MVG9rZW5UeXBlczo6U3RhcnRUYWcpOworICAgIEFTU0VSVChyZXF1ZXN0LnRva2VuLnR5
cGUoKSA9PSBIVE1MVG9rZW46OlN0YXJ0VGFnKTsKICAgICBBU1NFUlQoaGFzTmFtZShyZXF1ZXN0
LnRva2VuLCBtZXRhVGFnKSk7CiAKICAgICByZXR1cm4gZXJhc2VBdHRyaWJ1dGVJZkluamVjdGVk
KHJlcXVlc3QsIGh0dHBfZXF1aXZBdHRyKTsKQEAgLTQ1Miw3ICs0NTIsNyBAQCBib29sIFhTU0F1
ZGl0b3I6OmZpbHRlck1ldGFUb2tlbihjb25zdCBGaWx0ZXJUb2tlblJlcXVlc3QmIHJlcXVlc3Qp
CiAKIGJvb2wgWFNTQXVkaXRvcjo6ZmlsdGVyQmFzZVRva2VuKGNvbnN0IEZpbHRlclRva2VuUmVx
dWVzdCYgcmVxdWVzdCkKIHsKLSAgICBBU1NFUlQocmVxdWVzdC50b2tlbi50eXBlKCkgPT0gSFRN
TFRva2VuVHlwZXM6OlN0YXJ0VGFnKTsKKyAgICBBU1NFUlQocmVxdWVzdC50b2tlbi50eXBlKCkg
PT0gSFRNTFRva2VuOjpTdGFydFRhZyk7CiAgICAgQVNTRVJUKGhhc05hbWUocmVxdWVzdC50b2tl
biwgYmFzZVRhZykpOwogCiAgICAgcmV0dXJuIGVyYXNlQXR0cmlidXRlSWZJbmplY3RlZChyZXF1
ZXN0LCBocmVmQXR0cik7CkBAIC00NjAsNyArNDYwLDcgQEAgYm9vbCBYU1NBdWRpdG9yOjpmaWx0
ZXJCYXNlVG9rZW4oY29uc3QgRmlsdGVyVG9rZW5SZXF1ZXN0JiByZXF1ZXN0KQogCiBib29sIFhT
U0F1ZGl0b3I6OmZpbHRlckZvcm1Ub2tlbihjb25zdCBGaWx0ZXJUb2tlblJlcXVlc3QmIHJlcXVl
c3QpCiB7Ci0gICAgQVNTRVJUKHJlcXVlc3QudG9rZW4udHlwZSgpID09IEhUTUxUb2tlblR5cGVz
OjpTdGFydFRhZyk7CisgICAgQVNTRVJUKHJlcXVlc3QudG9rZW4udHlwZSgpID09IEhUTUxUb2tl
bjo6U3RhcnRUYWcpOwogICAgIEFTU0VSVChoYXNOYW1lKHJlcXVlc3QudG9rZW4sIGZvcm1UYWcp
KTsKIAogICAgIHJldHVybiBlcmFzZUF0dHJpYnV0ZUlmSW5qZWN0ZWQocmVxdWVzdCwgYWN0aW9u
QXR0ciwgYmxhbmtVUkwoKS5zdHJpbmcoKSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>187889</attachid>
            <date>2013-02-12 10:09:18 -0800</date>
            <delta_ts>2013-02-12 10:16:52 -0800</delta_ts>
            <desc>Should compile now</desc>
            <filename>bug-109525-20130212100549.patch</filename>
            <type>text/plain</type>
            <size>93817</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQyNTY4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2MzYzY1ZGZlZDNiNjNh
MGJlNTM4YjBiNmE4YWY0NDQxZDk3NmI1ZC4uNzg5OTBkZWNlOGY3OTY5YzE0NjNlYzg2NDA3MDky
Njk1YTQ3ODQ1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2MiBAQAorMjAxMy0wMi0xMiAgRXJp
YyBTZWlkZWwgIDxlcmljQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVtb3ZlIEhUTUxUb2tlblR5
cGVzIGhlYWRlciAoYW5kIHNwbGl0IG91dCBBdG9taWNIVE1MVG9rZW4uaCBmcm9tIEhUTUxUb2tl
bi5oKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA5
NTI1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2Ug
bm8gbG9uZ2VyIG5lZWQgYSBzZXBhcmF0ZSBIVE1MVG9rZW5UeXBlcyBjbGFzcyBub3cgdGhhdCBO
RVdfWE1MIGlzIGdvbmUuCisgICAgICAgIEhvd2V2ZXIsIHRvIHJlbW92ZSBIVE1MVG9rZW5UeXBl
cywgSSBoYWQgdG8gc3BsaXQgQXRvbWljSFRNTFRva2VuLmggZnJvbQorICAgICAgICBIVE1MVG9r
ZW4uaCAodG8gZml4IGEgY2lyY3VsYXIgZGVwZW5kYW5jeSkuCisKKyAgICAgICAgKiBHTlVtYWtl
ZmlsZS5saXN0LmFtOgorICAgICAgICAqIFRhcmdldC5wcmk6CisgICAgICAgICogV2ViQ29yZS5n
eXBpOgorICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOgorICAgICAgICAq
IFdlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2o6CisgICAgICAgICogV2ViQ29yZS52Y3hw
cm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBodG1sL0hUTUxWaWV3U291cmNlRG9jdW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFZpZXdTb3VyY2VEb2N1bWVudDo6YWRkU291cmNl
KToKKyAgICAgICAgKiBodG1sL3BhcnNlci9BdG9taWNIVE1MVG9rZW4uaDogQWRkZWQuCisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKEF0b21pY0hUTUxUb2tlbik6CisgICAgICAgIChXZWJD
b3JlOjpBdG9taWNIVE1MVG9rZW46OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpBdG9taWNI
VE1MVG9rZW46OmZvcmNlUXVpcmtzKToKKyAgICAgICAgKFdlYkNvcmU6OkF0b21pY0hUTUxUb2tl
bjo6dHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpBdG9taWNIVE1MVG9rZW46Om5hbWUpOgorICAg
ICAgICAoV2ViQ29yZTo6QXRvbWljSFRNTFRva2VuOjpzZXROYW1lKToKKyAgICAgICAgKFdlYkNv
cmU6OkF0b21pY0hUTUxUb2tlbjo6c2VsZkNsb3NpbmcpOgorICAgICAgICAoV2ViQ29yZTo6QXRv
bWljSFRNTFRva2VuOjpnZXRBdHRyaWJ1dGVJdGVtKToKKyAgICAgICAgKFdlYkNvcmU6OkF0b21p
Y0hUTUxUb2tlbjo6YXR0cmlidXRlcyk6CisgICAgICAgIChXZWJDb3JlOjpBdG9taWNIVE1MVG9r
ZW46OmNoYXJhY3RlcnMpOgorICAgICAgICAoV2ViQ29yZTo6QXRvbWljSFRNTFRva2VuOjpjaGFy
YWN0ZXJzTGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6OkF0b21pY0hUTUxUb2tlbjo6aXNBbGw4
Qml0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpBdG9taWNIVE1MVG9rZW46OmNvbW1lbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6QXRvbWljSFRNTFRva2VuOjpwdWJsaWNJZGVudGlmaWVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OkF0b21pY0hUTUxUb2tlbjo6c3lzdGVtSWRlbnRpZmllcik6CisgICAg
ICAgIChXZWJDb3JlOjpBdG9taWNIVE1MVG9rZW46OmNsZWFyRXh0ZXJuYWxDaGFyYWN0ZXJzKToK
KyAgICAgICAgKFdlYkNvcmU6OkF0b21pY0hUTUxUb2tlbjo6QXRvbWljSFRNTFRva2VuKToKKyAg
ICAgICAgKFdlYkNvcmU6OkF0b21pY0hUTUxUb2tlbjo6aW5pdGlhbGl6ZUF0dHJpYnV0ZXMpOgor
ICAgICAgICAqIGh0bWwvcGFyc2VyL0JhY2tncm91bmRIVE1MUGFyc2VyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkJhY2tncm91bmRIVE1MUGFyc2VyOjpzaW11bGF0ZVRyZWVCdWlsZGVyKToKKyAg
ICAgICAgKiBodG1sL3BhcnNlci9Db21wYWN0SFRNTFRva2VuLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNvbXBhY3RIVE1MVG9rZW46OkNvbXBhY3RIVE1MVG9rZW4pOgorICAgICAgICAqIGh0bWwv
cGFyc2VyL0NvbXBhY3RIVE1MVG9rZW4uaDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbXBhY3RIVE1M
VG9rZW46OnR5cGUpOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxDb25zdHJ1Y3Rpb25TaXRl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxDb25zdHJ1Y3Rpb25TaXRlOjppbnNlcnREb2N0
eXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxDb25zdHJ1Y3Rpb25TaXRlOjppbnNlcnRDb21t
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxDb25zdHJ1Y3Rpb25TaXRlOjppbnNlcnRDb21t
ZW50T25Eb2N1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQ29uc3RydWN0aW9uU2l0ZTo6
aW5zZXJ0Q29tbWVudE9uSFRNTEh0bWxFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxD
b25zdHJ1Y3Rpb25TaXRlOjppbnNlcnRTZWxmQ2xvc2luZ0hUTUxFbGVtZW50KToKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxDb25zdHJ1Y3Rpb25TaXRlOjppbnNlcnRGb3JlaWduRWxlbWVudCk6Cisg
ICAgICAgICogaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFyc2VyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxEb2N1bWVudFBhcnNlcjo6cHJvY2Vzc1BhcnNlZENodW5rRnJvbUJhY2tncm91
bmRQYXJzZXIpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTERvY3VtZW50UGFyc2VyOjpjb25zdHJ1
Y3RUcmVlRnJvbUhUTUxUb2tlbik6CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50
UGFyc2VyLmg6CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTE1ldGFDaGFyc2V0UGFyc2VyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZXRhQ2hhcnNldFBhcnNlcjo6Y2hlY2tGb3JNZXRh
Q2hhcnNldCk6CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTFByZWxvYWRTY2FubmVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmlzU3RhcnRUYWcpOgorICAgICAgICAoV2ViQ29yZTo6aXNTdGFy
dE9yRW5kVGFnKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxQcmVsb2FkU2Nhbm5lcjo6cHJvY2Vz
c1Rva2VuKToKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MU291cmNlVHJhY2tlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MU291cmNlVHJhY2tlcjo6c3RhcnQpOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTFNvdXJjZVRyYWNrZXI6OnNvdXJjZUZvclRva2VuKToKKyAgICAgICAgKiBodG1s
L3BhcnNlci9IVE1MU3RhY2tJdGVtLmg6CisgICAgICAgIChXZWJDb3JlOjpIVE1MU3RhY2tJdGVt
OjpIVE1MU3RhY2tJdGVtKToKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MVG9rZW4uaDoKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxUb2tlbjo6Y2xlYXIpOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TFRva2VuOjppc1VuaW5pdGlhbGl6ZWQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRva2VuOjp0
eXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUb2tlbjo6bWFrZUVuZE9mRmlsZSk6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MVG9rZW46OmRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRv
a2VuOjpuYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUb2tlbjo6YXBwZW5kVG9OYW1lKToK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxUb2tlbjo6Zm9yY2VRdWlya3MpOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTFRva2VuOjpzZXRGb3JjZVF1aXJrcyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
VG9rZW46OmJlZ2luRE9DVFlQRSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVG9rZW46OnB1Ymxp
Y0lkZW50aWZpZXIpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRva2VuOjpzeXN0ZW1JZGVudGlm
aWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUb2tlbjo6c2V0UHVibGljSWRlbnRpZmllclRv
RW1wdHlTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRva2VuOjpzZXRTeXN0ZW1JZGVu
dGlmaWVyVG9FbXB0eVN0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVG9rZW46OmFwcGVu
ZFRvUHVibGljSWRlbnRpZmllcik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVG9rZW46OmFwcGVu
ZFRvU3lzdGVtSWRlbnRpZmllcik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVG9rZW46OnNlbGZD
bG9zaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUb2tlbjo6c2V0U2VsZkNsb3NpbmcpOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTFRva2VuOjpiZWdpblN0YXJ0VGFnKToKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxUb2tlbjo6YmVnaW5FbmRUYWcpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRv
a2VuOjphZGROZXdBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRva2VuOjphcHBl
bmRUb0F0dHJpYnV0ZU5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRva2VuOjphcHBlbmRU
b0F0dHJpYnV0ZVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUb2tlbjo6YXR0cmlidXRl
cyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVG9rZW46OmVyYXNlVmFsdWVPZkF0dHJpYnV0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MVG9rZW46OmVuc3VyZUlzQ2hhcmFjdGVyVG9rZW4pOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTFRva2VuOjpjaGFyYWN0ZXJzKToKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxUb2tlbjo6YXBwZW5kVG9DaGFyYWN0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TFRva2VuOjpjb21tZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUb2tlbjo6YmVnaW5Db21t
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUb2tlbjo6YXBwZW5kVG9Db21tZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxUb2tlbjo6ZXJhc2VDaGFyYWN0ZXJzKToKKyAgICAgICAgKEhU
TUxUb2tlbik6CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTFRva2VuVHlwZXMuaDogUmVtb3Zl
ZC4KKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MVG9rZW5pemVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkF0b21pY0hUTUxUb2tlbjo6dXNlc05hbWUpOgorICAgICAgICAoV2ViQ29yZTo6QXRv
bWljSFRNTFRva2VuOjp1c2VzQXR0cmlidXRlcyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVG9r
ZW5pemVyOjpmbHVzaEJ1ZmZlcmVkRW5kVGFnKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUb2tl
bml6ZXI6Om5leHRUb2tlbik6CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTFRva2VuaXplci5o
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRva2VuaXplcjo6c2F2ZUVuZFRhZ05hbWVJZk5lZWRl
ZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVG9rZW5pemVyOjpoYXZlQnVmZmVyZWRDaGFyYWN0
ZXJUb2tlbik6CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTFRyZWVCdWlsZGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc1Rva2VuKToKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0RvY3R5cGVUb2tlbik6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NGYWtlU3RhcnRUYWcpOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzRmFrZUVuZFRhZyk6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NGYWtlUEVuZFRhZ0lmUEluQnV0dG9u
U2NvcGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzSXNpbmRl
eFN0YXJ0VGFnRm9ySW5Cb2R5KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzU3RhcnRUYWdGb3JJbkJvZHkpOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzU3RhcnRUYWdGb3JJblRhYmxlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc1N0YXJ0VGFnKToKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0JvZHlFbmRUYWdGb3JJbkJvZHkp
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzQW55T3RoZXJFbmRU
YWdGb3JJbkJvZHkpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNz
RW5kVGFnRm9ySW5UYWJsZUJvZHkpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVy
Ojpwcm9jZXNzRW5kVGFnRm9ySW5Sb3cpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyZWVCdWls
ZGVyOjpwcm9jZXNzRW5kVGFnRm9ySW5DZWxsKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVl
QnVpbGRlcjo6cHJvY2Vzc0VuZFRhZ0ZvckluQm9keSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
VHJlZUJ1aWxkZXI6OnByb2Nlc3NFbmRUYWdGb3JJblRhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0VuZFRhZyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
VHJlZUJ1aWxkZXI6OnByb2Nlc3NDb21tZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVl
QnVpbGRlcjo6cHJvY2Vzc0NoYXJhY3Rlcik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJlZUJ1
aWxkZXI6OmRlZmF1bHRGb3JCZWZvcmVIVE1MKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVl
QnVpbGRlcjo6ZGVmYXVsdEZvckJlZm9yZUhlYWQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRy
ZWVCdWlsZGVyOjpkZWZhdWx0Rm9ySW5IZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVl
QnVpbGRlcjo6ZGVmYXVsdEZvckluSGVhZE5vc2NyaXB0KToKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxUcmVlQnVpbGRlcjo6ZGVmYXVsdEZvckFmdGVySGVhZCk6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NTdGFydFRhZ0ZvckluSGVhZCk6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NHZW5lcmljUkNEQVRBU3RhcnRUYWcpOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzR2VuZXJpY1Jhd1RleHRTdGFy
dFRhZyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NTY3JpcHRT
dGFydFRhZyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6OnNob3VsZFByb2Nl
c3NUb2tlbkluRm9yZWlnbkNvbnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyZWVCdWls
ZGVyOjpwcm9jZXNzVG9rZW5JbkZvcmVpZ25Db250ZW50KToKKyAgICAgICAgKiBodG1sL3BhcnNl
ci9IVE1MVmlld1NvdXJjZVBhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVmlld1Nv
dXJjZVBhcnNlcjo6dXBkYXRlVG9rZW5pemVyU3RhdGUpOgorICAgICAgICAqIGh0bWwvcGFyc2Vy
L1RleHREb2N1bWVudFBhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0RG9jdW1lbnRQ
YXJzZXI6Omluc2VydEZha2VQcmVFbGVtZW50KToKKyAgICAgICAgKiBodG1sL3BhcnNlci9YU1NB
dWRpdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhTU0F1ZGl0b3I6OmZpbHRlclRva2VuKToK
KyAgICAgICAgKFdlYkNvcmU6OlhTU0F1ZGl0b3I6OmZpbHRlclNjcmlwdFRva2VuKToKKyAgICAg
ICAgKFdlYkNvcmU6OlhTU0F1ZGl0b3I6OmZpbHRlck9iamVjdFRva2VuKToKKyAgICAgICAgKFdl
YkNvcmU6OlhTU0F1ZGl0b3I6OmZpbHRlclBhcmFtVG9rZW4pOgorICAgICAgICAoV2ViQ29yZTo6
WFNTQXVkaXRvcjo6ZmlsdGVyRW1iZWRUb2tlbik6CisgICAgICAgIChXZWJDb3JlOjpYU1NBdWRp
dG9yOjpmaWx0ZXJBcHBsZXRUb2tlbik6CisgICAgICAgIChXZWJDb3JlOjpYU1NBdWRpdG9yOjpm
aWx0ZXJJZnJhbWVUb2tlbik6CisgICAgICAgIChXZWJDb3JlOjpYU1NBdWRpdG9yOjpmaWx0ZXJN
ZXRhVG9rZW4pOgorICAgICAgICAoV2ViQ29yZTo6WFNTQXVkaXRvcjo6ZmlsdGVyQmFzZVRva2Vu
KToKKyAgICAgICAgKFdlYkNvcmU6OlhTU0F1ZGl0b3I6OmZpbHRlckZvcm1Ub2tlbik6CisKIDIw
MTMtMDItMTEgIEtlbm5ldGggUnVzc2VsbCAgPGtickBnb29nbGUuY29tPgogCiAgICAgICAgIEFk
ZCB0ZW1wb3JhcnkgdHlwZWRlZiB0byBBTkdMRVdlYktpdEJyaWRnZSB0byBzdXBwb3J0IGluY29t
cGF0aWJsZSBBUEkgdXBncmFkZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZp
bGUubGlzdC5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5kZXggMmI5
YjFiZTNkNGI3NDdhNThmNmNiMDMyMzJkYWFiNWM0OGE3NmUwZS4uNDc4N2JiM2YxODY2MmY2ZjBl
NmFkMGMyMjQ4M2ExZWY0MGE3YmZlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvR05VbWFr
ZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCkBA
IC0zNTY4LDYgKzM1NjgsNyBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3Jl
L2h0bWwvTW9udGhJbnB1dFR5cGUuaCBcCiAJU291cmNlL1dlYkNvcmUvaHRtbC9OdW1iZXJJbnB1
dFR5cGUuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL051bWJlcklucHV0VHlwZS5oIFwKKwlT
b3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9BdG9taWNIVE1MVG9rZW4uaCBcCiAJU291cmNlL1dl
YkNvcmUvaHRtbC9wYXJzZXIvQmFja2dyb3VuZEhUTUxJbnB1dFN0cmVhbS5jcHAgXAogCVNvdXJj
ZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0JhY2tncm91bmRIVE1MSW5wdXRTdHJlYW0uaCBcCiAJU291
cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQmFja2dyb3VuZEhUTUxQYXJzZXIuY3BwIFwKQEAgLTM2
MTEsNyArMzYxMiw2IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvaHRt
bC9wYXJzZXIvSFRNTFNvdXJjZVRyYWNrZXIuaCBcCiAJU291cmNlL1dlYkNvcmUvaHRtbC9wYXJz
ZXIvSFRNTFN0YWNrSXRlbS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVG9r
ZW4uaCBcCi0JU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRva2VuVHlwZXMuaCBcCiAJ
U291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRva2VuaXplci5jcHAgXAogCVNvdXJjZS9X
ZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUb2tlbml6ZXIuaCBcCiAJU291cmNlL1dlYkNvcmUvaHRt
bC9wYXJzZXIvSFRNTFRyZWVCdWlsZGVyLmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9UYXJnZXQucHJpIGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQppbmRleCA5YWFlMTZjNzA3
ZTJlMWJiMWUyYzAxZGI3ZmYwNDkyYzFlYTY5MGJhLi43Mjk1ZWEzODFjNDJiM2FhMTNhMmI1MTcz
YzI5YmQ3ODEzN2RiZTQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCisr
KyBiL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKQEAgLTE5MTYsNiArMTkxNiw3IEBAIEhFQURF
UlMgKz0gXAogICAgIGh0bWwvVGltZVJhbmdlcy5oIFwKICAgICBodG1sL1R5cGVBaGVhZC5oIFwK
ICAgICBodG1sL1ZhbGlkaXR5U3RhdGUuaCBcCisgICAgaHRtbC9wYXJzZXIvQXRvbWljSFRNTFRv
a2VuLmggXAogICAgIGh0bWwvcGFyc2VyL0NTU1ByZWxvYWRTY2FubmVyLmggXAogICAgIGh0bWwv
cGFyc2VyL0NvbXBhY3RIVE1MVG9rZW4uaCBcCiAgICAgaHRtbC9wYXJzZXIvSFRNTENvbnN0cnVj
dGlvblNpdGUuaCBcCkBAIC0xOTMxLDcgKzE5MzIsNiBAQCBIRUFERVJTICs9IFwKICAgICBodG1s
L3BhcnNlci9IVE1MU2NyaXB0UnVubmVyLmggXAogICAgIGh0bWwvcGFyc2VyL0hUTUxTY3JpcHRS
dW5uZXJIb3N0LmggXAogICAgIGh0bWwvcGFyc2VyL0hUTUxUb2tlbi5oIFwKLSAgICBodG1sL3Bh
cnNlci9IVE1MVG9rZW5UeXBlcy5oIFwKICAgICBodG1sL3BhcnNlci9IVE1MVG9rZW5pemVyLmgg
XAogICAgIGh0bWwvcGFyc2VyL0hUTUxUcmVlQnVpbGRlci5oIFwKICAgICBodG1sL3BhcnNlci9I
VE1MVmlld1NvdXJjZVBhcnNlci5oIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCA3YWEzYzBlNGE0Zjc4
M2E0OTVlZTUwNmE4MTQ0OGFlYjk2YjViYjQ0Li5hZjk0NjhmNjQ3MDJlZmU0NjUyOWE1M2NjOWQ0
ZGRlZmRjODM5N2YyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysr
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC0zMzU2LDYgKzMzNTYsNyBAQAogICAg
ICAgICAgICAgJ2h0bWwvY2FudmFzL1dlYkdMVW5pZm9ybUxvY2F0aW9uLmgnLAogICAgICAgICAg
ICAgJ2h0bWwvY2FudmFzL1dlYkdMVmVydGV4QXJyYXlPYmplY3RPRVMuY3BwJywKICAgICAgICAg
ICAgICdodG1sL2NhbnZhcy9XZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTLmgnLAorICAgICAgICAg
ICAgJ2h0bWwvcGFyc2VyL0F0b21pY0hUTUxUb2tlbi5oJywKICAgICAgICAgICAgICdodG1sL3Bh
cnNlci9CYWNrZ3JvdW5kSFRNTFBhcnNlci5jcHAnLAogICAgICAgICAgICAgJ2h0bWwvcGFyc2Vy
L0JhY2tncm91bmRIVE1MUGFyc2VyLmgnLAogICAgICAgICAgICAgJ2h0bWwvcGFyc2VyL0JhY2tn
cm91bmRIVE1MSW5wdXRTdHJlYW0uY3BwJywKQEAgLTMzOTgsNyArMzM5OSw2IEBACiAgICAgICAg
ICAgICAnaHRtbC9wYXJzZXIvSFRNTFNvdXJjZVRyYWNrZXIuaCcsCiAgICAgICAgICAgICAnaHRt
bC9wYXJzZXIvSFRNTFN0YWNrSXRlbS5oJywKICAgICAgICAgICAgICdodG1sL3BhcnNlci9IVE1M
VG9rZW4uaCcsCi0gICAgICAgICAgICAnaHRtbC9wYXJzZXIvSFRNTFRva2VuVHlwZXMuaCcsCiAg
ICAgICAgICAgICAnaHRtbC9wYXJzZXIvSFRNTFRva2VuaXplci5jcHAnLAogICAgICAgICAgICAg
J2h0bWwvcGFyc2VyL0hUTUxUb2tlbml6ZXIuaCcsCiAgICAgICAgICAgICAnaHRtbC9wYXJzZXIv
SFRNTFRyZWVCdWlsZGVyLmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LnZjcHJvai9XZWJDb3JlLnZjcHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dl
YkNvcmUudmNwcm9qCmluZGV4IDk2Y2VkN2RjOWUyZDllNmZjMzA2MThmZWI3MzJlODU5NmI0ZDY1
NzYuLjQ5MTU0NDAzOGEwYzIzZjE2MDgyZjQzNjg4YzZhNjc3MzEzY2FiMDEgMTAwNzU1Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCkBAIC02NDgwNiw2ICs2NDgw
NiwxMCBAQAogCQkJCU5hbWU9InBhcnNlciIKIAkJCQk+CiAJCQkJPEZpbGUKKwkJCQkJUmVsYXRp
dmVQYXRoPSIuLlxodG1sXHBhcnNlclxBdG9taWNIVE1MVG9rZW4uaCIKKwkJCQkJPgorCQkJCTwv
RmlsZT4KKwkJCQk8RmlsZQogCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGh0bWxccGFyc2VyXEJhY2tn
cm91bmRIVE1MSW5wdXRTdHJlYW0uY3BwIgogCQkJCQk+CiAJCQkJPC9GaWxlPgpAQCAtNjQ5ODIs
MTAgKzY0OTg2LDYgQEAKIAkJCQkJPgogCQkJCTwvRmlsZT4KIAkJCQk8RmlsZQotCQkJCQlSZWxh
dGl2ZVBhdGg9Ii4uXGh0bWxccGFyc2VyXEhUTUxUb2tlblR5cGVzLmgiCi0JCQkJCT4KLQkJCQk8
L0ZpbGU+Ci0JCQkJPEZpbGUKIAkJCQkJUmVsYXRpdmVQYXRoPSIuLlxodG1sXHBhcnNlclxIVE1M
VHJlZUJ1aWxkZXIuY3BwIgogCQkJCQk+CiAJCQkJPC9GaWxlPgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvaiBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2oKaW5kZXggMjE0MTIzMjFmZTU1OTA1ZTBl
YmQ1MjRiY2ZiZGUwZTYyMmIxNDdkMy4uNWQwMzc4ODQ4YTBmMzczY2Y0YzBmMTIzYjEzYmZkNzcz
NDgzYmUzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNv
cmUudmN4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52
Y3hwcm9qCkBAIC03OTI1LDYgKzc5MjUsNyBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
aHRtbFxWYWxpZGl0eVN0YXRlLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxodG1s
XFZvaWRDYWxsYmFjay5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caHRtbFxXZWVr
SW5wdXRUeXBlLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxodG1sXHBhcnNlclxB
dG9taWNIVE1MVG9rZW4uaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGh0bWxccGFy
c2VyXEJhY2tncm91bmRIVE1MUGFyc2VyLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIu
LlxodG1sXHBhcnNlclxDb21wYWN0SFRNTFRva2VuLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIuLlxodG1sXHBhcnNlclxDU1NQcmVsb2FkU2Nhbm5lci5oIiAvPgpAQCAtNzk0OCw3ICs3
OTQ5LDYgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGh0bWxccGFyc2VyXEhUTUxTdGFj
a0l0ZW0uaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGh0bWxccGFyc2VyXEhUTUxU
b2tlbi5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caHRtbFxwYXJzZXJcSFRNTFRv
a2VuaXplci5oIiAvPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caHRtbFxwYXJzZXJcSFRN
TFRva2VuVHlwZXMuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGh0bWxccGFyc2Vy
XEhUTUxUcmVlQnVpbGRlci5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caHRtbFxw
YXJzZXJcSFRNTFZpZXdTb3VyY2VQYXJzZXIuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
Ii4uXGh0bWxccGFyc2VyXElucHV0U3RyZWFtUHJlcHJvY2Vzc29yLmgiIC8+CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnMg
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnMK
aW5kZXggYjY3MmM3YzhmYzRjYzVmZmM3ZWZmMTg5MDZjZmI3ODVkMjc3Mzc3OC4uOTY3OTY1ODg1
NGU5M2JmYTZkMDE2NjIyMzJiMTA1NDEyYWY4MmI3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVycwpAQCAtMTI1MzEs
NiArMTI1MzEsOSBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caHRtbFxXZWVrSW5wdXRU
eXBlLmgiPgogICAgICAgPEZpbHRlcj5odG1sPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+Cisg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxodG1sXHBhcnNlclxBdG9taWNIVE1MVG9rZW4uaCI+
CisgICAgICA8RmlsdGVyPmh0bWxccGFyc2VyPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CiAg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxodG1sXHBhcnNlclxCYWNrZ3JvdW5kSFRNTFBhcnNl
ci5oIj4KICAgICAgIDxGaWx0ZXI+aHRtbFxwYXJzZXI8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVk
ZT4KQEAgLTEyNTk3LDkgKzEyNjAwLDYgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGh0
bWxccGFyc2VyXEhUTUxUb2tlbml6ZXIuaCI+CiAgICAgICA8RmlsdGVyPmh0bWxccGFyc2VyPC9G
aWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxodG1s
XHBhcnNlclxIVE1MVG9rZW5UeXBlcy5oIj4KLSAgICAgIDxGaWx0ZXI+aHRtbFxwYXJzZXI8L0Zp
bHRlcj4KLSAgICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGh0bWxc
cGFyc2VyXEhUTUxUcmVlQnVpbGRlci5oIj4KICAgICAgIDxGaWx0ZXI+aHRtbFxwYXJzZXI8L0Zp
bHRlcj4KICAgICA8L0NsSW5jbHVkZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA1YWM1N2JiZjUxYTBmZDI3M2YyNjVkMTA5NzFl
MjU0MjM5MzYxNTA5Li5lNGRiMDUxYmUwMzZhNmJmNWY3NmJiMzI5YzlhODk1YWMzNGRiMzUzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CkBAIC0xMTIxOCw3ICsxMTIxOCw3IEBACiAJCTk3QzA3ODRGMTE2NUQ1QkUwMDNBMzJFRiAvKiBT
dWZmaXhUcmVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN1ZmZpeFRyZWUu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTdDMUY1NTIxMjI4NTVDQjAwRURFNjE1
IC8qIEhUTUxTdGFja0l0ZW0uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gSFRN
TFN0YWNrSXRlbS5oOyBwYXRoID0gcGFyc2VyL0hUTUxTdGFja0l0ZW0uaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJOTdDMUY1NTIxMjI4NTVDQjAwRURFNjE2IC8qIEhUTUxUb2tlbi5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBIVE1MVG9rZW4uaDsgcGF0aCA9IHBh
cnNlci9IVE1MVG9rZW4uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJOTdDMUY1NTIx
MjI4NTVDQjAwRURFNjE3IC8qIEhUTUxUb2tlblR5cGVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgbmFtZSA9IEhUTUxUb2tlblR5cGVzLmg7IHBhdGggPSBwYXJzZXIvSFRNTFRva2VuVHlw
ZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTdDMUY1NTIxMjI4NTVDQjAwRURF
NjE3IC8qIEF0b21pY0hUTUxUb2tlbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUg
PSBBdG9taWNIVE1MVG9rZW4uaDsgcGF0aCA9IHBhcnNlci9BdG9taWNIVE1MVG9rZW4uaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTdDNDcxRDkxMkY5MjVCQzAwODYzNTRCIC8qIENv
bnRlbnRTZWN1cml0eVBvbGljeS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBDb250ZW50U2VjdXJpdHlQb2xpY3kuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk5N0M0NzFEQTEyRjkyNUJEMDA4NjM1NEIgLyogQ29udGVudFNlY3VyaXR5UG9saWN5Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbnRlbnRTZWN1cml0eVBvbGljeS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5N0M3NDAxMjE2MDNGN0ExMDAxMUZGMkQg
LyogRmVhdHVyZU9ic2VydmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEZlYXR1cmVPYnNlcnZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0x
ODczOCw3ICsxODczOCw3IEBACiAJCQkJOTdDMUY1NTIxMjI4NTVDQjAwRURFNjE2IC8qIEhUTUxU
b2tlbi5oICovLAogCQkJCTk3N0IzODVFMTIyODgzRTkwMEI4MUZGOCAvKiBIVE1MVG9rZW5pemVy
LmNwcCAqLywKIAkJCQk5NzdCMzg1RjEyMjg4M0U5MDBCODFGRjggLyogSFRNTFRva2VuaXplci5o
ICovLAotCQkJCTk3QzFGNTUyMTIyODU1Q0IwMEVERTYxNyAvKiBIVE1MVG9rZW5UeXBlcy5oICov
LAorCQkJCTk3QzFGNTUyMTIyODU1Q0IwMEVERTYxNyAvKiBBdG9taWNIVE1MVG9rZW4uaCAqLywK
IAkJCQk5NzdCMzcyMTEyMjg3MjE3MDBCODFGRjggLyogSFRNTFRyZWVCdWlsZGVyLmNwcCAqLywK
IAkJCQk5NzdCMzcyMjEyMjg3MjE3MDBCODFGRjggLyogSFRNTFRyZWVCdWlsZGVyLmggKi8sCiAJ
CQkJOTc3QjM4NjAxMjI4ODNFOTAwQjgxRkY4IC8qIEhUTUxWaWV3U291cmNlUGFyc2VyLmNwcCAq
LywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZXdTb3VyY2VEb2N1bWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWV3U291cmNlRG9jdW1lbnQuY3BwCmlu
ZGV4IGFiZjI0MzgzNmQzYjczNDBlYmQxMzhkMDYzM2JiNTAyYWJhODk5NDIuLmI3ZmRiMzZjYmM5
NTM3NGFhYTgwYjUzMDBkOWJlM2RhYjA0OTYzMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFZpZXdTb3VyY2VEb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MVmlld1NvdXJjZURvY3VtZW50LmNwcApAQCAtOTksMjQgKzk5LDI0IEBAIHZvaWQgSFRN
TFZpZXdTb3VyY2VEb2N1bWVudDo6YWRkU291cmNlKGNvbnN0IFN0cmluZyYgc291cmNlLCBIVE1M
VG9rZW4mIHRva2VuKQogICAgICAgICBjcmVhdGVDb250YWluaW5nVGFibGUoKTsKIAogICAgIHN3
aXRjaCAodG9rZW4udHlwZSgpKSB7Ci0gICAgY2FzZSBIVE1MVG9rZW5UeXBlczo6VW5pbml0aWFs
aXplZDoKKyAgICBjYXNlIEhUTUxUb2tlbjo6VW5pbml0aWFsaXplZDoKICAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgSFRNTFRva2VuVHlwZXM6
OkRPQ1RZUEU6CisgICAgY2FzZSBIVE1MVG9rZW46OkRPQ1RZUEU6CiAgICAgICAgIHByb2Nlc3NE
b2N0eXBlVG9rZW4oc291cmNlLCB0b2tlbik7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgSFRN
TFRva2VuVHlwZXM6OkVuZE9mRmlsZToKKyAgICBjYXNlIEhUTUxUb2tlbjo6RW5kT2ZGaWxlOgog
ICAgICAgICBpZiAoIW1fdGJvZHktPmhhc0NoaWxkTm9kZXMoKSkKICAgICAgICAgICAgIGFkZExp
bmUoU3RyaW5nKCkpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEhUTUxUb2tlblR5cGVzOjpT
dGFydFRhZzoKLSAgICBjYXNlIEhUTUxUb2tlblR5cGVzOjpFbmRUYWc6CisgICAgY2FzZSBIVE1M
VG9rZW46OlN0YXJ0VGFnOgorICAgIGNhc2UgSFRNTFRva2VuOjpFbmRUYWc6CiAgICAgICAgIHBy
b2Nlc3NUYWdUb2tlbihzb3VyY2UsIHRva2VuKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBI
VE1MVG9rZW5UeXBlczo6Q29tbWVudDoKKyAgICBjYXNlIEhUTUxUb2tlbjo6Q29tbWVudDoKICAg
ICAgICAgcHJvY2Vzc0NvbW1lbnRUb2tlbihzb3VyY2UsIHRva2VuKTsKICAgICAgICAgYnJlYWs7
Ci0gICAgY2FzZSBIVE1MVG9rZW5UeXBlczo6Q2hhcmFjdGVyOgorICAgIGNhc2UgSFRNTFRva2Vu
OjpDaGFyYWN0ZXI6CiAgICAgICAgIHByb2Nlc3NDaGFyYWN0ZXJUb2tlbihzb3VyY2UsIHRva2Vu
KTsKICAgICAgICAgYnJlYWs7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9wYXJzZXIvQXRvbWljSFRNTFRva2VuLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9B
dG9taWNIVE1MVG9rZW4uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZDAzNzIxN2ViMDQzMjhjMzgzNThkM2VhNTdk
ODU5M2UyNzk3NTQ2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJz
ZXIvQXRvbWljSFRNTFRva2VuLmgKQEAgLTAsMCArMSwzMTAgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTMgR29vZ2xlLCBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIEF0b21pY0hUTUxUb2tlbl9o
CisjZGVmaW5lIEF0b21pY0hUTUxUb2tlbl9oCisKKyNpbmNsdWRlICJBdHRyaWJ1dGUuaCIKKyNp
bmNsdWRlICJDb21wYWN0SFRNTFRva2VuLmgiCisjaW5jbHVkZSAiSFRNTFRva2VuLmgiCisjaW5j
bHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQXRvbWljSFRNTFRva2VuIDogcHVibGljIFJlZkNvdW50
ZWQ8QXRvbWljSFRNTFRva2VuPiB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQXRvbWljSFRN
TFRva2VuKTsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxBdG9taWNIVE1MVG9rZW4+
IGNyZWF0ZShIVE1MVG9rZW4mIHRva2VuKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBBdG9taWNIVE1MVG9rZW4odG9rZW4pKTsKKyAgICB9CisKKyNpZiBFTkFCTEUoVEhSRUFE
RURfSFRNTF9QQVJTRVIpCisKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxBdG9taWNIVE1MVG9rZW4+
IGNyZWF0ZShjb25zdCBDb21wYWN0SFRNTFRva2VuJiB0b2tlbikKKyAgICB7CisgICAgICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgQXRvbWljSFRNTFRva2VuKHRva2VuKSk7CisgICAgfQorCisjZW5k
aWYKKworICAgIHN0YXRpYyBQYXNzUmVmUHRyPEF0b21pY0hUTUxUb2tlbj4gY3JlYXRlKEhUTUxU
b2tlbjo6VHlwZSB0eXBlLCBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIGNvbnN0IFZlY3RvcjxB
dHRyaWJ1dGU+JiBhdHRyaWJ1dGVzID0gVmVjdG9yPEF0dHJpYnV0ZT4oKSkKKyAgICB7CisgICAg
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgQXRvbWljSFRNTFRva2VuKHR5cGUsIG5hbWUsIGF0dHJp
YnV0ZXMpKTsKKyAgICB9CisKKyAgICBib29sIGZvcmNlUXVpcmtzKCkgY29uc3QKKyAgICB7Cisg
ICAgICAgIEFTU0VSVChtX3R5cGUgPT0gSFRNTFRva2VuOjpET0NUWVBFKTsKKyAgICAgICAgcmV0
dXJuIG1fZG9jdHlwZURhdGEtPm1fZm9yY2VRdWlya3M7CisgICAgfQorCisgICAgSFRNTFRva2Vu
OjpUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KKworICAgIGNvbnN0IEF0b21p
Y1N0cmluZyYgbmFtZSgpIGNvbnN0CisgICAgeworICAgICAgICBBU1NFUlQodXNlc05hbWUoKSk7
CisgICAgICAgIHJldHVybiBtX25hbWU7CisgICAgfQorCisgICAgdm9pZCBzZXROYW1lKGNvbnN0
IEF0b21pY1N0cmluZyYgbmFtZSkKKyAgICB7CisgICAgICAgIEFTU0VSVCh1c2VzTmFtZSgpKTsK
KyAgICAgICAgbV9uYW1lID0gbmFtZTsKKyAgICB9CisKKyAgICBib29sIHNlbGZDbG9zaW5nKCkg
Y29uc3QKKyAgICB7CisgICAgICAgIEFTU0VSVChtX3R5cGUgPT0gSFRNTFRva2VuOjpTdGFydFRh
ZyB8fCBtX3R5cGUgPT0gSFRNTFRva2VuOjpFbmRUYWcpOworICAgICAgICByZXR1cm4gbV9zZWxm
Q2xvc2luZzsKKyAgICB9CisKKyAgICBBdHRyaWJ1dGUqIGdldEF0dHJpYnV0ZUl0ZW0oY29uc3Qg
UXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSkKKyAgICB7CisgICAgICAgIEFTU0VSVCh1c2Vz
QXR0cmlidXRlcygpKTsKKyAgICAgICAgcmV0dXJuIGZpbmRBdHRyaWJ1dGVJblZlY3RvcihtX2F0
dHJpYnV0ZXMsIGF0dHJpYnV0ZU5hbWUpOworICAgIH0KKworICAgIFZlY3RvcjxBdHRyaWJ1dGU+
JiBhdHRyaWJ1dGVzKCkKKyAgICB7CisgICAgICAgIEFTU0VSVCh1c2VzQXR0cmlidXRlcygpKTsK
KyAgICAgICAgcmV0dXJuIG1fYXR0cmlidXRlczsKKyAgICB9CisKKyAgICBjb25zdCBWZWN0b3I8
QXR0cmlidXRlPiYgYXR0cmlidXRlcygpIGNvbnN0CisgICAgeworICAgICAgICBBU1NFUlQodXNl
c0F0dHJpYnV0ZXMoKSk7CisgICAgICAgIHJldHVybiBtX2F0dHJpYnV0ZXM7CisgICAgfQorCisg
ICAgY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMoKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJU
KG1fdHlwZSA9PSBIVE1MVG9rZW46OkNoYXJhY3Rlcik7CisgICAgICAgIHJldHVybiBtX2V4dGVy
bmFsQ2hhcmFjdGVyczsKKyAgICB9CisKKyAgICBzaXplX3QgY2hhcmFjdGVyc0xlbmd0aCgpIGNv
bnN0CisgICAgeworICAgICAgICBBU1NFUlQobV90eXBlID09IEhUTUxUb2tlbjo6Q2hhcmFjdGVy
KTsKKyAgICAgICAgcmV0dXJuIG1fZXh0ZXJuYWxDaGFyYWN0ZXJzTGVuZ3RoOworICAgIH0KKwor
ICAgIGJvb2wgaXNBbGw4Qml0RGF0YSgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9p
c0FsbDhCaXREYXRhOworICAgIH0KKworICAgIGNvbnN0IFN0cmluZyYgY29tbWVudCgpIGNvbnN0
CisgICAgeworICAgICAgICBBU1NFUlQobV90eXBlID09IEhUTUxUb2tlbjo6Q29tbWVudCk7Cisg
ICAgICAgIHJldHVybiBtX2RhdGE7CisgICAgfQorCisgICAgLy8gRklYTUU6IERpc3Rpbmd1aXNo
IGJldHdlZW4gYSBtaXNzaW5nIHB1YmxpYyBpZGVudGlmZXIgYW5kIGFuIGVtcHR5IG9uZS4KKyAg
ICBXVEY6OlZlY3RvcjxVQ2hhcj4mIHB1YmxpY0lkZW50aWZpZXIoKSBjb25zdAorICAgIHsKKyAg
ICAgICAgQVNTRVJUKG1fdHlwZSA9PSBIVE1MVG9rZW46OkRPQ1RZUEUpOworICAgICAgICByZXR1
cm4gbV9kb2N0eXBlRGF0YS0+bV9wdWJsaWNJZGVudGlmaWVyOworICAgIH0KKworICAgIC8vIEZJ
WE1FOiBEaXN0aW5ndWlzaCBiZXR3ZWVuIGEgbWlzc2luZyBzeXN0ZW0gaWRlbnRpZmVyIGFuZCBh
biBlbXB0eSBvbmUuCisgICAgV1RGOjpWZWN0b3I8VUNoYXI+JiBzeXN0ZW1JZGVudGlmaWVyKCkg
Y29uc3QKKyAgICB7CisgICAgICAgIEFTU0VSVChtX3R5cGUgPT0gSFRNTFRva2VuOjpET0NUWVBF
KTsKKyAgICAgICAgcmV0dXJuIG1fZG9jdHlwZURhdGEtPm1fc3lzdGVtSWRlbnRpZmllcjsKKyAg
ICB9CisKKyAgICB2b2lkIGNsZWFyRXh0ZXJuYWxDaGFyYWN0ZXJzKCkKKyAgICB7CisgICAgICAg
IG1fZXh0ZXJuYWxDaGFyYWN0ZXJzID0gMDsKKyAgICAgICAgbV9leHRlcm5hbENoYXJhY3RlcnNM
ZW5ndGggPSAwOworICAgICAgICBtX2lzQWxsOEJpdERhdGEgPSBmYWxzZTsKKyAgICB9CisKK3By
aXZhdGU6CisgICAgZXhwbGljaXQgQXRvbWljSFRNTFRva2VuKEhUTUxUb2tlbiYgdG9rZW4pCisg
ICAgICAgIDogbV90eXBlKHRva2VuLnR5cGUoKSkKKyAgICB7CisgICAgICAgIHN3aXRjaCAobV90
eXBlKSB7CisgICAgICAgIGNhc2UgSFRNTFRva2VuOjpVbmluaXRpYWxpemVkOgorICAgICAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2Fz
ZSBIVE1MVG9rZW46OkRPQ1RZUEU6CisgICAgICAgICAgICBtX25hbWUgPSBBdG9taWNTdHJpbmco
dG9rZW4ubmFtZVN0cmluZygpKTsKKyAgICAgICAgICAgIG1fZG9jdHlwZURhdGEgPSB0b2tlbi5y
ZWxlYXNlRG9jdHlwZURhdGEoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEhU
TUxUb2tlbjo6RW5kT2ZGaWxlOgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgSFRN
TFRva2VuOjpTdGFydFRhZzoKKyAgICAgICAgY2FzZSBIVE1MVG9rZW46OkVuZFRhZzogeworICAg
ICAgICAgICAgbV9zZWxmQ2xvc2luZyA9IHRva2VuLnNlbGZDbG9zaW5nKCk7CisgICAgICAgICAg
ICBtX25hbWUgPSBBdG9taWNTdHJpbmcodG9rZW4ubmFtZVN0cmluZygpKTsKKyAgICAgICAgICAg
IGluaXRpYWxpemVBdHRyaWJ1dGVzKHRva2VuLmF0dHJpYnV0ZXMoKSk7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNlIEhUTUxUb2tlbjo6Q29tbWVudDoKKyAgICAg
ICAgICAgIGlmICh0b2tlbi5pc0FsbDhCaXREYXRhKCkpCisgICAgICAgICAgICAgICAgbV9kYXRh
ID0gU3RyaW5nOjptYWtlOEJpdEZyb20xNkJpdFNvdXJjZSh0b2tlbi5jb21tZW50KCkuZGF0YSgp
LCB0b2tlbi5jb21tZW50KCkuc2l6ZSgpKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAg
ICAgICBtX2RhdGEgPSBTdHJpbmcodG9rZW4uY29tbWVudCgpLmRhdGEoKSwgdG9rZW4uY29tbWVu
dCgpLnNpemUoKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBIVE1MVG9rZW46
OkNoYXJhY3RlcjoKKyAgICAgICAgICAgIG1fZXh0ZXJuYWxDaGFyYWN0ZXJzID0gdG9rZW4uY2hh
cmFjdGVycygpLmRhdGEoKTsKKyAgICAgICAgICAgIG1fZXh0ZXJuYWxDaGFyYWN0ZXJzTGVuZ3Ro
ID0gdG9rZW4uY2hhcmFjdGVycygpLnNpemUoKTsKKyAgICAgICAgICAgIG1faXNBbGw4Qml0RGF0
YSA9IHRva2VuLmlzQWxsOEJpdERhdGEoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9
CisgICAgfQorCisjaWYgRU5BQkxFKFRIUkVBREVEX0hUTUxfUEFSU0VSKQorCisgICAgZXhwbGlj
aXQgQXRvbWljSFRNTFRva2VuKGNvbnN0IENvbXBhY3RIVE1MVG9rZW4mIHRva2VuKQorICAgICAg
ICA6IG1fdHlwZSh0b2tlbi50eXBlKCkpCisgICAgeworICAgICAgICBzd2l0Y2ggKG1fdHlwZSkg
eworICAgICAgICBjYXNlIEhUTUxUb2tlbjo6VW5pbml0aWFsaXplZDoKKyAgICAgICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgSFRN
TFRva2VuOjpET0NUWVBFOgorICAgICAgICAgICAgbV9uYW1lID0gdG9rZW4uZGF0YSgpOworICAg
ICAgICAgICAgbV9kb2N0eXBlRGF0YSA9IGFkb3B0UHRyKG5ldyBEb2N0eXBlRGF0YSgpKTsKKyAg
ICAgICAgICAgIG1fZG9jdHlwZURhdGEtPm1faGFzUHVibGljSWRlbnRpZmllciA9IHRydWU7Cisg
ICAgICAgICAgICBtX2RvY3R5cGVEYXRhLT5tX3B1YmxpY0lkZW50aWZpZXIuYXBwZW5kKHRva2Vu
LnB1YmxpY0lkZW50aWZpZXIoKS5jaGFyYWN0ZXJzKCksIHRva2VuLnB1YmxpY0lkZW50aWZpZXIo
KS5sZW5ndGgoKSk7CisgICAgICAgICAgICBtX2RvY3R5cGVEYXRhLT5tX2hhc1N5c3RlbUlkZW50
aWZpZXIgPSB0cnVlOworICAgICAgICAgICAgbV9kb2N0eXBlRGF0YS0+bV9zeXN0ZW1JZGVudGlm
aWVyLmFwcGVuZCh0b2tlbi5zeXN0ZW1JZGVudGlmaWVyKCkuY2hhcmFjdGVycygpLCB0b2tlbi5z
eXN0ZW1JZGVudGlmaWVyKCkubGVuZ3RoKCkpOworICAgICAgICAgICAgbV9kb2N0eXBlRGF0YS0+
bV9mb3JjZVF1aXJrcyA9IHRva2VuLmRvY3R5cGVGb3JjZXNRdWlya3MoKTsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICBjYXNlIEhUTUxUb2tlbjo6RW5kT2ZGaWxlOgorICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGNhc2UgSFRNTFRva2VuOjpTdGFydFRhZzoKKyAgICAgICAgICAgIG1f
YXR0cmlidXRlcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHRva2VuLmF0dHJpYnV0ZXMoKS5zaXpl
KCkpOworICAgICAgICAgICAgZm9yIChWZWN0b3I8Q29tcGFjdEF0dHJpYnV0ZT46OmNvbnN0X2l0
ZXJhdG9yIGl0ID0gdG9rZW4uYXR0cmlidXRlcygpLmJlZ2luKCk7IGl0ICE9IHRva2VuLmF0dHJp
YnV0ZXMoKS5lbmQoKTsgKytpdCkKKyAgICAgICAgICAgICAgICBtX2F0dHJpYnV0ZXMuYXBwZW5k
KEF0dHJpYnV0ZShRdWFsaWZpZWROYW1lKG51bGxBdG9tLCBpdC0+bmFtZSgpLCBudWxsQXRvbSks
IGl0LT52YWx1ZSgpKSk7CisgICAgICAgICAgICAvLyBGYWxsIHRocm91Z2ghCisgICAgICAgIGNh
c2UgSFRNTFRva2VuOjpFbmRUYWc6CisgICAgICAgICAgICBtX3NlbGZDbG9zaW5nID0gdG9rZW4u
c2VsZkNsb3NpbmcoKTsKKyAgICAgICAgICAgIG1fbmFtZSA9IEF0b21pY1N0cmluZyh0b2tlbi5k
YXRhKCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgSFRNTFRva2VuOjpDb21t
ZW50OgorICAgICAgICAgICAgbV9kYXRhID0gdG9rZW4uZGF0YSgpOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGNhc2UgSFRNTFRva2VuOjpDaGFyYWN0ZXI6CisgICAgICAgICAgICBtX2V4
dGVybmFsQ2hhcmFjdGVycyA9IHRva2VuLmRhdGEoKS5jaGFyYWN0ZXJzKCk7CisgICAgICAgICAg
ICBtX2V4dGVybmFsQ2hhcmFjdGVyc0xlbmd0aCA9IHRva2VuLmRhdGEoKS5sZW5ndGgoKTsKKyAg
ICAgICAgICAgIG1faXNBbGw4Qml0RGF0YSA9IHRva2VuLmlzQWxsOEJpdERhdGEoKTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorCisjZW5kaWYKKworICAgIGV4cGxpY2l0
IEF0b21pY0hUTUxUb2tlbihIVE1MVG9rZW46OlR5cGUgdHlwZSkKKyAgICAgICAgOiBtX3R5cGUo
dHlwZSkKKyAgICAgICAgLCBtX2V4dGVybmFsQ2hhcmFjdGVycygwKQorICAgICAgICAsIG1fZXh0
ZXJuYWxDaGFyYWN0ZXJzTGVuZ3RoKDApCisgICAgICAgICwgbV9pc0FsbDhCaXREYXRhKGZhbHNl
KQorICAgICAgICAsIG1fc2VsZkNsb3NpbmcoZmFsc2UpCisgICAgeworICAgIH0KKworICAgIEF0
b21pY0hUTUxUb2tlbihIVE1MVG9rZW46OlR5cGUgdHlwZSwgY29uc3QgQXRvbWljU3RyaW5nJiBu
YW1lLCBjb25zdCBWZWN0b3I8QXR0cmlidXRlPiYgYXR0cmlidXRlcyA9IFZlY3RvcjxBdHRyaWJ1
dGU+KCkpCisgICAgICAgIDogbV90eXBlKHR5cGUpCisgICAgICAgICwgbV9uYW1lKG5hbWUpCisg
ICAgICAgICwgbV9leHRlcm5hbENoYXJhY3RlcnMoMCkKKyAgICAgICAgLCBtX2V4dGVybmFsQ2hh
cmFjdGVyc0xlbmd0aCgwKQorICAgICAgICAsIG1faXNBbGw4Qml0RGF0YShmYWxzZSkKKyAgICAg
ICAgLCBtX3NlbGZDbG9zaW5nKGZhbHNlKQorICAgICAgICAsIG1fYXR0cmlidXRlcyhhdHRyaWJ1
dGVzKQorICAgIHsKKyAgICAgICAgQVNTRVJUKHVzZXNOYW1lKCkpOworICAgIH0KKworICAgIEhU
TUxUb2tlbjo6VHlwZSBtX3R5cGU7CisKKyAgICB2b2lkIGluaXRpYWxpemVBdHRyaWJ1dGVzKGNv
bnN0IEhUTUxUb2tlbjo6QXR0cmlidXRlTGlzdCYgYXR0cmlidXRlcyk7CisgICAgUXVhbGlmaWVk
TmFtZSBuYW1lRm9yQXR0cmlidXRlKGNvbnN0IEhUTUxUb2tlbjo6QXR0cmlidXRlJikgY29uc3Q7
CisKKyAgICBib29sIHVzZXNOYW1lKCkgY29uc3Q7CisKKyAgICBib29sIHVzZXNBdHRyaWJ1dGVz
KCkgY29uc3Q7CisKKyAgICAvLyAibmFtZSIgZm9yIERPQ1RZUEUsIFN0YXJ0VGFnLCBhbmQgRW5k
VGFnCisgICAgQXRvbWljU3RyaW5nIG1fbmFtZTsKKworICAgIC8vICJkYXRhIiBmb3IgQ29tbWVu
dAorICAgIFN0cmluZyBtX2RhdGE7CisKKyAgICAvLyAiY2hhcmFjdGVycyIgZm9yIENoYXJhY3Rl
cgorICAgIC8vCisgICAgLy8gV2UgZG9uJ3Qgd2FudCB0byBjb3B5IHRoZSB0aGUgY2hhcmFjdGVy
cyBvdXQgb2YgdGhlIFRva2VuLCBzbyB3ZQorICAgIC8vIGtlZXAgYSBwb2ludGVyIHRvIGl0cyBi
dWZmZXIgaW5zdGVhZC4gVGhpcyBidWZmZXIgaXMgb3duZWQgYnkgdGhlCisgICAgLy8gVG9rZW4g
YW5kIGNhdXNlcyBhIGxpZmV0aW1lIGRlcGVuZGVuY2UgYmV0d2VlbiB0aGVzZSBvYmplY3RzLgor
ICAgIC8vCisgICAgLy8gRklYTUU6IEFkZCBhIG1lY2hhbmlzbSBmb3IgImludGVybmFsaXppbmci
IHRoZSBjaGFyYWN0ZXJzIHdoZW4gdGhlCisgICAgLy8gICAgICAgIEhUTUxUb2tlbiBpcyBkZXN0
cnVjdGVkLgorICAgIGNvbnN0IFVDaGFyKiBtX2V4dGVybmFsQ2hhcmFjdGVyczsKKyAgICBzaXpl
X3QgbV9leHRlcm5hbENoYXJhY3RlcnNMZW5ndGg7CisgICAgYm9vbCBtX2lzQWxsOEJpdERhdGE7
CisKKyAgICAvLyBGb3IgRE9DVFlQRQorICAgIE93blB0cjxEb2N0eXBlRGF0YT4gbV9kb2N0eXBl
RGF0YTsKKworICAgIC8vIEZvciBTdGFydFRhZyBhbmQgRW5kVGFnCisgICAgYm9vbCBtX3NlbGZD
bG9zaW5nOworCisgICAgVmVjdG9yPEF0dHJpYnV0ZT4gbV9hdHRyaWJ1dGVzOworfTsKKworaW5s
aW5lIHZvaWQgQXRvbWljSFRNTFRva2VuOjppbml0aWFsaXplQXR0cmlidXRlcyhjb25zdCBIVE1M
VG9rZW46OkF0dHJpYnV0ZUxpc3QmIGF0dHJpYnV0ZXMpCit7CisgICAgc2l6ZV90IHNpemUgPSBh
dHRyaWJ1dGVzLnNpemUoKTsKKyAgICBpZiAoIXNpemUpCisgICAgICAgIHJldHVybjsKKworICAg
IG1fYXR0cmlidXRlcy5jbGVhcigpOworICAgIG1fYXR0cmlidXRlcy5yZXNlcnZlSW5pdGlhbENh
cGFjaXR5KHNpemUpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7Cisg
ICAgICAgIGNvbnN0IEhUTUxUb2tlbjo6QXR0cmlidXRlJiBhdHRyaWJ1dGUgPSBhdHRyaWJ1dGVz
W2ldOworICAgICAgICBpZiAoYXR0cmlidXRlLm1fbmFtZS5pc0VtcHR5KCkpCisgICAgICAgICAg
ICBjb250aW51ZTsKKworICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGJlIGFibGUgdG8gYWRk
IHRoZSBmb2xsb3dpbmcgQVNTRVJUIG9uY2Ugd2UgZml4CisgICAgICAgIC8vIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02Mjk3MQorICAgICAgICAvLyAgIEFTU0VSVChh
dHRyaWJ1dGUubV9uYW1lUmFuZ2UubV9zdGFydCk7CisgICAgICAgIEFTU0VSVChhdHRyaWJ1dGUu
bV9uYW1lUmFuZ2UubV9lbmQpOworICAgICAgICBBU1NFUlQoYXR0cmlidXRlLm1fdmFsdWVSYW5n
ZS5tX3N0YXJ0KTsKKyAgICAgICAgQVNTRVJUKGF0dHJpYnV0ZS5tX3ZhbHVlUmFuZ2UubV9lbmQp
OworCisgICAgICAgIEF0b21pY1N0cmluZyB2YWx1ZShhdHRyaWJ1dGUubV92YWx1ZS5kYXRhKCks
IGF0dHJpYnV0ZS5tX3ZhbHVlLnNpemUoKSk7CisgICAgICAgIGNvbnN0IFF1YWxpZmllZE5hbWUm
IG5hbWUgPSBuYW1lRm9yQXR0cmlidXRlKGF0dHJpYnV0ZSk7CisgICAgICAgIGlmICghZmluZEF0
dHJpYnV0ZUluVmVjdG9yKG1fYXR0cmlidXRlcywgbmFtZSkpCisgICAgICAgICAgICBtX2F0dHJp
YnV0ZXMuYXBwZW5kKEF0dHJpYnV0ZShuYW1lLCB2YWx1ZSkpOworICAgIH0KK30KKworfQorCisj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0JhY2tncm91bmRI
VE1MUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0JhY2tncm91bmRIVE1M
UGFyc2VyLmNwcAppbmRleCA4Njc1ZGIwMGExMzMzYmQ3MzU4MDViOGUwMzc3MmVmZTE2OTA0ZjVi
Li41NzgxYTM4NzhhNDY3ZDFkMGM4OGI4ZTY2YTRkNzczZTMwOGU0OWU3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9CYWNrZ3JvdW5kSFRNTFBhcnNlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQmFja2dyb3VuZEhUTUxQYXJzZXIuY3BwCkBAIC0x
MTMsNyArMTEzLDcgQEAgdm9pZCBCYWNrZ3JvdW5kSFRNTFBhcnNlcjo6bWFya0VuZE9mRmlsZSgp
CiAKIGJvb2wgQmFja2dyb3VuZEhUTUxQYXJzZXI6OnNpbXVsYXRlVHJlZUJ1aWxkZXIoY29uc3Qg
Q29tcGFjdEhUTUxUb2tlbiYgdG9rZW4pCiB7Ci0gICAgaWYgKHRva2VuLnR5cGUoKSA9PSBIVE1M
VG9rZW5UeXBlczo6U3RhcnRUYWcpIHsKKyAgICBpZiAodG9rZW4udHlwZSgpID09IEhUTUxUb2tl
bjo6U3RhcnRUYWcpIHsKICAgICAgICAgY29uc3QgU3RyaW5nJiB0YWdOYW1lID0gdG9rZW4uZGF0
YSgpOwogICAgICAgICBpZiAodGhyZWFkU2FmZU1hdGNoKHRhZ05hbWUsIFNWR05hbWVzOjpzdmdU
YWcpCiAgICAgICAgICAgICB8fCB0aHJlYWRTYWZlTWF0Y2godGFnTmFtZSwgTWF0aE1MTmFtZXM6
Om1hdGhUYWcpKQpAQCAtMTM1LDcgKzEzNSw3IEBAIGJvb2wgQmFja2dyb3VuZEhUTUxQYXJzZXI6
OnNpbXVsYXRlVHJlZUJ1aWxkZXIoY29uc3QgQ29tcGFjdEhUTUxUb2tlbiYgdG9rZW4pCiAgICAg
ICAgICAgICBtX3Rva2VuaXplci0+c2V0U3RhdGUoSFRNTFRva2VuaXplcjo6UkFXVEVYVFN0YXRl
KTsKICAgICB9CiAKLSAgICBpZiAodG9rZW4udHlwZSgpID09IEhUTUxUb2tlblR5cGVzOjpFbmRU
YWcpIHsKKyAgICBpZiAodG9rZW4udHlwZSgpID09IEhUTUxUb2tlbjo6RW5kVGFnKSB7CiAgICAg
ICAgIGNvbnN0IFN0cmluZyYgdGFnTmFtZSA9IHRva2VuLmRhdGEoKTsKICAgICAgICAgaWYgKHRo
cmVhZFNhZmVNYXRjaCh0YWdOYW1lLCBTVkdOYW1lczo6c3ZnVGFnKSB8fCB0aHJlYWRTYWZlTWF0
Y2godGFnTmFtZSwgTWF0aE1MTmFtZXM6Om1hdGhUYWcpKQogICAgICAgICAgICAgbV9pbkZvcmVp
Z25Db250ZW50ID0gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNl
ci9Db21wYWN0SFRNTFRva2VuLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0NvbXBh
Y3RIVE1MVG9rZW4uY3BwCmluZGV4IDkyZTYxMzQ5Mzg1MmJhNjllOWEyYTNjMWNjZGZiMjQ5YmJi
MWZhZTYuLjE2ODkxMzIxM2I0YjQ2MjlkMTRkZDQ1NDY0NWU5ZWEyNzQ3NGI1NGUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0NvbXBhY3RIVE1MVG9rZW4uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0NvbXBhY3RIVE1MVG9rZW4uY3BwCkBAIC01MSwx
MCArNTEsMTAgQEAgQ29tcGFjdEhUTUxUb2tlbjo6Q29tcGFjdEhUTUxUb2tlbihjb25zdCBIVE1M
VG9rZW4qIHRva2VuLCBjb25zdCBUZXh0UG9zaXRpb24mIHQKICAgICAsIG1fdGV4dFBvc2l0aW9u
KHRleHRQb3NpdGlvbikKIHsKICAgICBzd2l0Y2ggKG1fdHlwZSkgewotICAgIGNhc2UgSFRNTFRv
a2VuVHlwZXM6OlVuaW5pdGlhbGl6ZWQ6CisgICAgY2FzZSBIVE1MVG9rZW46OlVuaW5pdGlhbGl6
ZWQ6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICBicmVhazsKLSAgICBj
YXNlIEhUTUxUb2tlblR5cGVzOjpET0NUWVBFOiB7CisgICAgY2FzZSBIVE1MVG9rZW46OkRPQ1RZ
UEU6IHsKICAgICAgICAgbV9kYXRhID0gU3RyaW5nKHRva2VuLT5uYW1lKCkuZGF0YSgpLCB0b2tl
bi0+bmFtZSgpLnNpemUoKSk7CiAgICAgICAgIC8vIFRoZXJlIGlzIG9ubHkgMSBET0NUWVBFIHRv
a2VuIHBlciBkb2N1bWVudCwgc28gdG8gYXZvaWQgaW5jcmVhc2luZyB0aGUKICAgICAgICAgLy8g
c2l6ZSBvZiBDb21wYWN0SFRNTFRva2VuLCB3ZSBqdXN0IHVzZSB0aGUgbV9hdHRyaWJ1dGVzIHZl
Y3Rvci4KQEAgLTY0LDE4ICs2NCwxOCBAQCBDb21wYWN0SFRNTFRva2VuOjpDb21wYWN0SFRNTFRv
a2VuKGNvbnN0IEhUTUxUb2tlbiogdG9rZW4sIGNvbnN0IFRleHRQb3NpdGlvbiYgdAogICAgICAg
ICBtX2RvY3R5cGVGb3JjZXNRdWlya3MgPSB0b2tlbi0+Zm9yY2VRdWlya3MoKTsKICAgICAgICAg
YnJlYWs7CiAgICAgfQotICAgIGNhc2UgSFRNTFRva2VuVHlwZXM6OkVuZE9mRmlsZToKKyAgICBj
YXNlIEhUTUxUb2tlbjo6RW5kT2ZGaWxlOgogICAgICAgICBicmVhazsKLSAgICBjYXNlIEhUTUxU
b2tlblR5cGVzOjpTdGFydFRhZzoKKyAgICBjYXNlIEhUTUxUb2tlbjo6U3RhcnRUYWc6CiAgICAg
ICAgIG1fYXR0cmlidXRlcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHRva2VuLT5hdHRyaWJ1dGVz
KCkuc2l6ZSgpKTsKICAgICAgICAgZm9yIChWZWN0b3I8SFRNTFRva2VuOjpBdHRyaWJ1dGU+Ojpj
b25zdF9pdGVyYXRvciBpdCA9IHRva2VuLT5hdHRyaWJ1dGVzKCkuYmVnaW4oKTsgaXQgIT0gdG9r
ZW4tPmF0dHJpYnV0ZXMoKS5lbmQoKTsgKytpdCkKICAgICAgICAgICAgIG1fYXR0cmlidXRlcy5h
cHBlbmQoQ29tcGFjdEF0dHJpYnV0ZShTdHJpbmcoaXQtPm1fbmFtZS5kYXRhKCksIGl0LT5tX25h
bWUuc2l6ZSgpKSwgU3RyaW5nKGl0LT5tX3ZhbHVlLmRhdGEoKSwgaXQtPm1fdmFsdWUuc2l6ZSgp
KSkpOwogICAgICAgICAvLyBGYWxsIHRocm91Z2ghCi0gICAgY2FzZSBIVE1MVG9rZW5UeXBlczo6
RW5kVGFnOgorICAgIGNhc2UgSFRNTFRva2VuOjpFbmRUYWc6CiAgICAgICAgIG1fc2VsZkNsb3Np
bmcgPSB0b2tlbi0+c2VsZkNsb3NpbmcoKTsKICAgICAgICAgLy8gRmFsbCB0aHJvdWdoIQotICAg
IGNhc2UgSFRNTFRva2VuVHlwZXM6OkNvbW1lbnQ6Ci0gICAgY2FzZSBIVE1MVG9rZW5UeXBlczo6
Q2hhcmFjdGVyOgorICAgIGNhc2UgSFRNTFRva2VuOjpDb21tZW50OgorICAgIGNhc2UgSFRNTFRv
a2VuOjpDaGFyYWN0ZXI6CiAgICAgICAgIGlmICh0b2tlbi0+aXNBbGw4Qml0RGF0YSgpKSB7CiAg
ICAgICAgICAgICBtX2RhdGEgPSBTdHJpbmc6Om1ha2U4Qml0RnJvbTE2Qml0U291cmNlKHRva2Vu
LT5kYXRhKCkuZGF0YSgpLCB0b2tlbi0+ZGF0YSgpLnNpemUoKSk7CiAgICAgICAgICAgICBtX2lz
QWxsOEJpdERhdGEgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJz
ZXIvQ29tcGFjdEhUTUxUb2tlbi5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQ29tcGFj
dEhUTUxUb2tlbi5oCmluZGV4IDZjOTVmNmExY2VlYWI2Nzk0MThlNzEzMDU5ODNjOGZiOTk0Mzc5
ZmUuLmI3Yzg1NjkwNDZiNGQyMTdiYjBlMzljMmVlOTA2ZjMwNTI2M2ViODAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0NvbXBhY3RIVE1MVG9rZW4uaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3BhcnNlci9Db21wYWN0SFRNTFRva2VuLmgKQEAgLTI4LDcgKzI4LDcg
QEAKIAogI2lmIEVOQUJMRShUSFJFQURFRF9IVE1MX1BBUlNFUikKIAotI2luY2x1ZGUgIkhUTUxU
b2tlblR5cGVzLmgiCisjaW5jbHVkZSAiSFRNTFRva2VuLmgiCiAjaW5jbHVkZSA8d3RmL093blB0
ci5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50
ZWQuaD4KQEAgLTM5LDcgKzM5LDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBI
VE1MVG9rZW47CiBjbGFzcyBYU1NJbmZvOwogCiBjbGFzcyBDb21wYWN0QXR0cmlidXRlIHsKQEAg
LTY1LDcgKzY0LDcgQEAgcHVibGljOgogCiAgICAgYm9vbCBpc1NhZmVUb1NlbmRUb0Fub3RoZXJU
aHJlYWQoKSBjb25zdDsKIAotICAgIEhUTUxUb2tlblR5cGVzOjpUeXBlIHR5cGUoKSBjb25zdCB7
IHJldHVybiBzdGF0aWNfY2FzdDxIVE1MVG9rZW5UeXBlczo6VHlwZT4obV90eXBlKTsgfQorICAg
IEhUTUxUb2tlbjo6VHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8SFRNTFRv
a2VuOjpUeXBlPihtX3R5cGUpOyB9CiAgICAgY29uc3QgU3RyaW5nJiBkYXRhKCkgY29uc3QgeyBy
ZXR1cm4gbV9kYXRhOyB9CiAgICAgYm9vbCBzZWxmQ2xvc2luZygpIGNvbnN0IHsgcmV0dXJuIG1f
c2VsZkNsb3Npbmc7IH0KICAgICBib29sIGlzQWxsOEJpdERhdGEoKSBjb25zdCB7IHJldHVybiBt
X2lzQWxsOEJpdERhdGE7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2Vy
L0hUTUxDb25zdHJ1Y3Rpb25TaXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hU
TUxDb25zdHJ1Y3Rpb25TaXRlLmNwcAppbmRleCA1MWVkMzJlZDIxMzE4YWRkYjZhM2NhY2EyNDM5
NmZjYjk1YzY5NjY4Li5iZTFjNTM1NDMyOTU5MGY4OWJjMDg3ODFkNmQ1MGJlM2ZhNWUwZmU1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MQ29uc3RydWN0aW9uU2l0
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTENvbnN0cnVjdGlvblNp
dGUuY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAi
SFRNTFRyZWVCdWlsZGVyLmgiCiAKKyNpbmNsdWRlICJBdG9taWNIVE1MVG9rZW4uaCIKICNpbmNs
dWRlICJDb21tZW50LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRGcmFnbWVudC5oIgogI2luY2x1ZGUg
IkRvY3VtZW50VHlwZS5oIgpAQCAtMzQwLDcgKzM0MSw3IEBAIHZvaWQgSFRNTENvbnN0cnVjdGlv
blNpdGU6OmZpbmlzaGVkUGFyc2luZygpCiAKIHZvaWQgSFRNTENvbnN0cnVjdGlvblNpdGU6Omlu
c2VydERvY3R5cGUoQXRvbWljSFRNTFRva2VuKiB0b2tlbikKIHsKLSAgICBBU1NFUlQodG9rZW4t
PnR5cGUoKSA9PSBIVE1MVG9rZW5UeXBlczo6RE9DVFlQRSk7CisgICAgQVNTRVJUKHRva2VuLT50
eXBlKCkgPT0gSFRNTFRva2VuOjpET0NUWVBFKTsKIAogICAgIGNvbnN0IFN0cmluZyYgcHVibGlj
SWQgPSBTdHJpbmc6OmFkb3B0KHRva2VuLT5wdWJsaWNJZGVudGlmaWVyKCkpOwogICAgIGNvbnN0
IFN0cmluZyYgc3lzdGVtSWQgPSBTdHJpbmc6OmFkb3B0KHRva2VuLT5zeXN0ZW1JZGVudGlmaWVy
KCkpOwpAQCAtMzY1LDE5ICszNjYsMTkgQEAgdm9pZCBIVE1MQ29uc3RydWN0aW9uU2l0ZTo6aW5z
ZXJ0RG9jdHlwZShBdG9taWNIVE1MVG9rZW4qIHRva2VuKQogCiB2b2lkIEhUTUxDb25zdHJ1Y3Rp
b25TaXRlOjppbnNlcnRDb21tZW50KEF0b21pY0hUTUxUb2tlbiogdG9rZW4pCiB7Ci0gICAgQVNT
RVJUKHRva2VuLT50eXBlKCkgPT0gSFRNTFRva2VuVHlwZXM6OkNvbW1lbnQpOworICAgIEFTU0VS
VCh0b2tlbi0+dHlwZSgpID09IEhUTUxUb2tlbjo6Q29tbWVudCk7CiAgICAgYXR0YWNoTGF0ZXIo
Y3VycmVudE5vZGUoKSwgQ29tbWVudDo6Y3JlYXRlKG93bmVyRG9jdW1lbnRGb3JDdXJyZW50Tm9k
ZSgpLCB0b2tlbi0+Y29tbWVudCgpKSk7CiB9CiAKIHZvaWQgSFRNTENvbnN0cnVjdGlvblNpdGU6
Omluc2VydENvbW1lbnRPbkRvY3VtZW50KEF0b21pY0hUTUxUb2tlbiogdG9rZW4pCiB7Ci0gICAg
QVNTRVJUKHRva2VuLT50eXBlKCkgPT0gSFRNTFRva2VuVHlwZXM6OkNvbW1lbnQpOworICAgIEFT
U0VSVCh0b2tlbi0+dHlwZSgpID09IEhUTUxUb2tlbjo6Q29tbWVudCk7CiAgICAgYXR0YWNoTGF0
ZXIobV9hdHRhY2htZW50Um9vdCwgQ29tbWVudDo6Y3JlYXRlKG1fZG9jdW1lbnQsIHRva2VuLT5j
b21tZW50KCkpKTsKIH0KIAogdm9pZCBIVE1MQ29uc3RydWN0aW9uU2l0ZTo6aW5zZXJ0Q29tbWVu
dE9uSFRNTEh0bWxFbGVtZW50KEF0b21pY0hUTUxUb2tlbiogdG9rZW4pCiB7Ci0gICAgQVNTRVJU
KHRva2VuLT50eXBlKCkgPT0gSFRNTFRva2VuVHlwZXM6OkNvbW1lbnQpOworICAgIEFTU0VSVCh0
b2tlbi0+dHlwZSgpID09IEhUTUxUb2tlbjo6Q29tbWVudCk7CiAgICAgQ29udGFpbmVyTm9kZSog
cGFyZW50ID0gbV9vcGVuRWxlbWVudHMucm9vdE5vZGUoKTsKICAgICBhdHRhY2hMYXRlcihwYXJl
bnQsIENvbW1lbnQ6OmNyZWF0ZShwYXJlbnQtPmRvY3VtZW50KCksIHRva2VuLT5jb21tZW50KCkp
KTsKIH0KQEAgLTQxOSw3ICs0MjAsNyBAQCB2b2lkIEhUTUxDb25zdHJ1Y3Rpb25TaXRlOjppbnNl
cnRIVE1MRWxlbWVudChBdG9taWNIVE1MVG9rZW4qIHRva2VuKQogCiB2b2lkIEhUTUxDb25zdHJ1
Y3Rpb25TaXRlOjppbnNlcnRTZWxmQ2xvc2luZ0hUTUxFbGVtZW50KEF0b21pY0hUTUxUb2tlbiog
dG9rZW4pCiB7Ci0gICAgQVNTRVJUKHRva2VuLT50eXBlKCkgPT0gSFRNTFRva2VuVHlwZXM6OlN0
YXJ0VGFnKTsKKyAgICBBU1NFUlQodG9rZW4tPnR5cGUoKSA9PSBIVE1MVG9rZW46OlN0YXJ0VGFn
KTsKICAgICAvLyBOb3JtYWxseSBIVE1MRWxlbWVudFN0YWNrIGlzIHJlc3BvbnNpYmxlIGZvciBj
YWxsaW5nIGZpbmlzaFBhcnNpbmdDaGlsZHJlbiwKICAgICAvLyBidXQgc2VsZi1jbG9zaW5nIGVs
ZW1lbnRzIGFyZSBuZXZlciBpbiB0aGUgZWxlbWVudCBzdGFjayBzbyB0aGUgc3RhY2sKICAgICAv
LyBkb2Vzbid0IGdldCBhIGNoYW5jZSB0byB0ZWxsIHRoZW0gdGhhdCB3ZSdyZSBkb25lIHBhcnNp
bmcgdGhlaXIgY2hpbGRyZW4uCkBAIC00NTUsNyArNDU2LDcgQEAgdm9pZCBIVE1MQ29uc3RydWN0
aW9uU2l0ZTo6aW5zZXJ0U2NyaXB0RWxlbWVudChBdG9taWNIVE1MVG9rZW4qIHRva2VuKQogCiB2
b2lkIEhUTUxDb25zdHJ1Y3Rpb25TaXRlOjppbnNlcnRGb3JlaWduRWxlbWVudChBdG9taWNIVE1M
VG9rZW4qIHRva2VuLCBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWVzcGFjZVVSSSkKIHsKLSAgICBB
U1NFUlQodG9rZW4tPnR5cGUoKSA9PSBIVE1MVG9rZW5UeXBlczo6U3RhcnRUYWcpOworICAgIEFT
U0VSVCh0b2tlbi0+dHlwZSgpID09IEhUTUxUb2tlbjo6U3RhcnRUYWcpOwogICAgIG5vdEltcGxl
bWVudGVkKCk7IC8vIHBhcnNlRXJyb3Igd2hlbiB4bWxucyBvciB4bWxuczp4bGluayBhcmUgd3Jv
bmcuCiAKICAgICBSZWZQdHI8RWxlbWVudD4gZWxlbWVudCA9IGNyZWF0ZUVsZW1lbnQodG9rZW4s
IG5hbWVzcGFjZVVSSSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9I
VE1MRG9jdW1lbnRQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTERv
Y3VtZW50UGFyc2VyLmNwcAppbmRleCAwOTg1NDhlNjEyY2ZiYTRjZjc2YTE2YzAzN2Y5NmYxMTMz
YjhkNjVjLi42NDg1MGNkOWExMWM1NjMyNmU4ZDc2MDEzOGNkZjdhYzllOWYzOTc5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRG9jdW1lbnRQYXJzZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5jcHAKQEAg
LTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJIVE1MRG9jdW1l
bnRQYXJzZXIuaCIKIAorI2luY2x1ZGUgIkF0b21pY0hUTUxUb2tlbi5oIgogI2luY2x1ZGUgIkJh
Y2tncm91bmRIVE1MUGFyc2VyLmgiCiAjaW5jbHVkZSAiQ29tcGFjdEhUTUxUb2tlbi5oIgogI2lu
Y2x1ZGUgIkNvbnRlbnRTZWN1cml0eVBvbGljeS5oIgpAQCAtMzQ4LDcgKzM0OSw3IEBAIHZvaWQg
SFRNTERvY3VtZW50UGFyc2VyOjpwcm9jZXNzUGFyc2VkQ2h1bmtGcm9tQmFja2dyb3VuZFBhcnNl
cihQYXNzT3duUHRyPFBhcnNlCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCi0gICAg
ICAgIGlmIChpdC0+dHlwZSgpID09IEhUTUxUb2tlblR5cGVzOjpFbmRPZkZpbGUpIHsKKyAgICAg
ICAgaWYgKGl0LT50eXBlKCkgPT0gSFRNTFRva2VuOjpFbmRPZkZpbGUpIHsKICAgICAgICAgICAg
IEFTU0VSVChpdCArIDEgPT0gdG9rZW5zLT5lbmQoKSk7IC8vIFRoZSBFT0YgaXMgYXNzdW1lZCB0
byBiZSB0aGUgbGFzdCB0b2tlbiBvZiB0aGlzIGJ1bmNoLgogICAgICAgICAgICAgcHJlcGFyZVRv
U3RvcFBhcnNpbmcoKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtNDYzLDcgKzQ2NCw3IEBAIHZv
aWQgSFRNTERvY3VtZW50UGFyc2VyOjpjb25zdHJ1Y3RUcmVlRnJvbUhUTUxUb2tlbihIVE1MVG9r
ZW4mIHJhd1Rva2VuKQogICAgIC8vIEZJWE1FOiBTdG9wIGNsZWFyaW5nIHRoZSByYXdUb2tlbiBv
bmNlIHdlIHN0YXJ0IHJ1bm5pbmcgdGhlIHBhcnNlciBvZmYKICAgICAvLyB0aGUgbWFpbiB0aHJl
YWQgb3Igb25jZSB3ZSBzdG9wIGFsbG93aW5nIHN5bmNocm9ub3VzIEphdmFTY3JpcHQKICAgICAv
LyBleGVjdXRpb24gZnJvbSBwYXJzZUF0dHJpYnV0ZS4KLSAgICBpZiAocmF3VG9rZW4udHlwZSgp
ICE9IEhUTUxUb2tlblR5cGVzOjpDaGFyYWN0ZXIpCisgICAgaWYgKHJhd1Rva2VuLnR5cGUoKSAh
PSBIVE1MVG9rZW46OkNoYXJhY3RlcikKICAgICAgICAgcmF3VG9rZW4uY2xlYXIoKTsKIAogICAg
IG1fdHJlZUJ1aWxkZXItPmNvbnN0cnVjdFRyZWUodG9rZW4uZ2V0KCkpOwpAQCAtNDc1LDcgKzQ3
Niw3IEBAIHZvaWQgSFRNTERvY3VtZW50UGFyc2VyOjpjb25zdHJ1Y3RUcmVlRnJvbUhUTUxUb2tl
bihIVE1MVG9rZW4mIHJhd1Rva2VuKQogICAgIHRva2VuLT5jbGVhckV4dGVybmFsQ2hhcmFjdGVy
cygpOwogCiAgICAgaWYgKCFyYXdUb2tlbi5pc1VuaW5pdGlhbGl6ZWQoKSkgewotICAgICAgICBB
U1NFUlQocmF3VG9rZW4udHlwZSgpID09IEhUTUxUb2tlblR5cGVzOjpDaGFyYWN0ZXIpOworICAg
ICAgICBBU1NFUlQocmF3VG9rZW4udHlwZSgpID09IEhUTUxUb2tlbjo6Q2hhcmFjdGVyKTsKICAg
ICAgICAgcmF3VG9rZW4uY2xlYXIoKTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3BhcnNlci9IVE1MRG9jdW1lbnRQYXJzZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5oCmluZGV4IDAyMDdjYzkwNzRiYTc2OTFkMzVl
OTBhYTE5YWUyZDBiYjBlMjE5M2IuLjc0Mjg5YmI2Yjc1MDFjNWE5MjZmMjU5MjIyMjRlYTIyNGVl
YzI1MmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVu
dFBhcnNlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBh
cnNlci5oCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbmNsdWRlICJCYWNrZ3JvdW5kSFRNTElucHV0
U3RyZWFtLmgiCiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VDbGllbnQuaCIKKyNpbmNsdWRlICJD
b21wYWN0SFRNTFRva2VuLmgiCiAjaW5jbHVkZSAiRnJhZ21lbnRTY3JpcHRpbmdQZXJtaXNzaW9u
LmgiCiAjaW5jbHVkZSAiSFRNTElucHV0U3RyZWFtLmgiCiAjaW5jbHVkZSAiSFRNTFBhcnNlck9w
dGlvbnMuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxNZXRh
Q2hhcnNldFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MTWV0YUNo
YXJzZXRQYXJzZXIuY3BwCmluZGV4IDU4NmZmYTk1MjZkNGMzM2U5NWUzYTZmNjNmN2NjZDUyMjc2
ZWNiZDUuLjcwY2NkNTgwYzI0MDllOTc2NzNiNDQ5ZTcxNjM1MjVlM2JiODEyZmYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxNZXRhQ2hhcnNldFBhcnNlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTE1ldGFDaGFyc2V0UGFyc2VyLmNw
cApAQCAtMTc2LDggKzE3Niw4IEBAIGJvb2wgSFRNTE1ldGFDaGFyc2V0UGFyc2VyOjpjaGVja0Zv
ck1ldGFDaGFyc2V0KGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgpCiAgICAgbV9pbnB1
dC5hcHBlbmQoU2VnbWVudGVkU3RyaW5nKG1fYXNzdW1lZENvZGVjLT5kZWNvZGUoZGF0YSwgbGVu
Z3RoKSkpOwogCiAgICAgd2hpbGUgKG1fdG9rZW5pemVyLT5uZXh0VG9rZW4obV9pbnB1dCwgbV90
b2tlbikpIHsKLSAgICAgICAgYm9vbCBlbmQgPSBtX3Rva2VuLnR5cGUoKSA9PSBIVE1MVG9rZW5U
eXBlczo6RW5kVGFnOwotICAgICAgICBpZiAoZW5kIHx8IG1fdG9rZW4udHlwZSgpID09IEhUTUxU
b2tlblR5cGVzOjpTdGFydFRhZykgeworICAgICAgICBib29sIGVuZCA9IG1fdG9rZW4udHlwZSgp
ID09IEhUTUxUb2tlbjo6RW5kVGFnOworICAgICAgICBpZiAoZW5kIHx8IG1fdG9rZW4udHlwZSgp
ID09IEhUTUxUb2tlbjo6U3RhcnRUYWcpIHsKICAgICAgICAgICAgIEF0b21pY1N0cmluZyB0YWdO
YW1lKG1fdG9rZW4ubmFtZSgpLmRhdGEoKSwgbV90b2tlbi5uYW1lKCkuc2l6ZSgpKTsKICAgICAg
ICAgICAgIGlmICghZW5kKSB7CiAgICAgICAgICAgICAgICAgbV90b2tlbml6ZXItPnVwZGF0ZVN0
YXRlRm9yKHRhZ05hbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIv
SFRNTFByZWxvYWRTY2FubmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQ
cmVsb2FkU2Nhbm5lci5jcHAKaW5kZXggM2Q3ODg4OWJmMWY3OTc4NjY1MjQ4MTcyNTkwOTU4YWJm
MGZmOWZjNS4uMGM3Y2EzM2VmYzkxMTkwZTllODc4MmJmNTFjMjcyMTEyMmI3Y2YyNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFByZWxvYWRTY2FubmVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUHJlbG9hZFNjYW5uZXIuY3BwCkBA
IC00NSwxMiArNDUsMTIgQEAgdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAogc3RhdGljIGJv
b2wgaXNTdGFydFRhZyhjb25zdCBIVE1MVG9rZW4mIHRva2VuKQogewotICAgIHJldHVybiB0b2tl
bi50eXBlKCkgPT0gSFRNTFRva2VuVHlwZXM6OlN0YXJ0VGFnOworICAgIHJldHVybiB0b2tlbi50
eXBlKCkgPT0gSFRNTFRva2VuOjpTdGFydFRhZzsKIH0KIAogc3RhdGljIGJvb2wgaXNTdGFydE9y
RW5kVGFnKGNvbnN0IEhUTUxUb2tlbiYgdG9rZW4pCiB7Ci0gICAgcmV0dXJuIHRva2VuLnR5cGUo
KSA9PSBIVE1MVG9rZW5UeXBlczo6RW5kVGFnIHx8IGlzU3RhcnRUYWcodG9rZW4pOworICAgIHJl
dHVybiB0b2tlbi50eXBlKCkgPT0gSFRNTFRva2VuOjpFbmRUYWcgfHwgaXNTdGFydFRhZyh0b2tl
bik7CiB9CiAKIGNsYXNzIFN0YXJ0VGFnU2Nhbm5lciB7CkBAIC0yNzksNyArMjc5LDcgQEAgdm9p
ZCBIVE1MUHJlbG9hZFNjYW5uZXI6OnByb2Nlc3NUb2tlbihjb25zdCBIVE1MVG9rZW4mIHRva2Vu
LCBWZWN0b3I8T3duUHRyPFByZWwKIHsKICAgICAvLyA8c3R5bGU+IGlzIHRoZSBvbmx5IHBsYWNl
IHdlIHNlYXJjaCBmb3IgdXJscyBpbiBub24tc3RhcnQvZW5kLXRhZyB0b2tlbnMuCiAgICAgaWYg
KG1faW5TdHlsZSkgewotICAgICAgICBpZiAodG9rZW4udHlwZSgpICE9IEhUTUxUb2tlblR5cGVz
OjpDaGFyYWN0ZXIpCisgICAgICAgIGlmICh0b2tlbi50eXBlKCkgIT0gSFRNTFRva2VuOjpDaGFy
YWN0ZXIpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIHJldHVybiBtX2Nzc1NjYW5uZXIu
c2Nhbih0b2tlbiwgcmVxdWVzdHMpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvcGFyc2VyL0hUTUxTb3VyY2VUcmFja2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
cGFyc2VyL0hUTUxTb3VyY2VUcmFja2VyLmNwcAppbmRleCA4OTg4NWMzZTFjZTJmMTVlM2I4NGRk
Y2Q0YTlmMTExZTM4YzMyNGRmLi5iZjFhOGM0NjYwOWJjNDJmMTYwMzZmOGE5NDgzY2E0MGIzNWZj
NTE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MU291cmNlVHJh
Y2tlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFNvdXJjZVRyYWNr
ZXIuY3BwCkBAIC0zNiw3ICszNiw3IEBAIEhUTUxTb3VyY2VUcmFja2VyOjpIVE1MU291cmNlVHJh
Y2tlcigpCiAKIHZvaWQgSFRNTFNvdXJjZVRyYWNrZXI6OnN0YXJ0KFNlZ21lbnRlZFN0cmluZyYg
Y3VycmVudElucHV0LCBIVE1MVG9rZW5pemVyKiB0b2tlbml6ZXIsIEhUTUxUb2tlbiYgdG9rZW4p
CiB7Ci0gICAgaWYgKHRva2VuLnR5cGUoKSA9PSBIVE1MVG9rZW5UeXBlczo6VW5pbml0aWFsaXpl
ZCkgeworICAgIGlmICh0b2tlbi50eXBlKCkgPT0gSFRNTFRva2VuOjpVbmluaXRpYWxpemVkKSB7
CiAgICAgICAgIG1fcHJldmlvdXNTb3VyY2UuY2xlYXIoKTsKICAgICAgICAgaWYgKHRva2VuaXpl
ci0+bnVtYmVyT2ZCdWZmZXJlZENoYXJhY3RlcnMoKSkKICAgICAgICAgICAgIG1fcHJldmlvdXNT
b3VyY2UgPSB0b2tlbml6ZXItPmJ1ZmZlcmVkQ2hhcmFjdGVycygpOwpAQCAtNTcsNyArNTcsNyBA
QCB2b2lkIEhUTUxTb3VyY2VUcmFja2VyOjplbmQoU2VnbWVudGVkU3RyaW5nJiBjdXJyZW50SW5w
dXQsIEhUTUxUb2tlbml6ZXIqIHRva2VuaQogCiBTdHJpbmcgSFRNTFNvdXJjZVRyYWNrZXI6OnNv
dXJjZUZvclRva2VuKGNvbnN0IEhUTUxUb2tlbiYgdG9rZW4pCiB7Ci0gICAgaWYgKHRva2VuLnR5
cGUoKSA9PSBIVE1MVG9rZW5UeXBlczo6RW5kT2ZGaWxlKQorICAgIGlmICh0b2tlbi50eXBlKCkg
PT0gSFRNTFRva2VuOjpFbmRPZkZpbGUpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsgLy8gSGlk
ZXMgdGhlIG51bGwgY2hhcmFjdGVyIHdlIHVzZSB0byBtYXJrIHRoZSBlbmQgb2YgZmlsZS4KIAog
ICAgIGlmICghbV9jYWNoZWRTb3VyY2VGb3JUb2tlbi5pc0VtcHR5KCkpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MU3RhY2tJdGVtLmggYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3BhcnNlci9IVE1MU3RhY2tJdGVtLmgKaW5kZXggOGExOWNkMzQwYjQ4ZDBlNzgxZjlm
NjgzMzdmZWZhNWQ5ZDA4MWNmMC4uMWMyZWI0OTNmNDAyNDNiMmIxYTVjMzU2MmUzZDA4MDQyMTQy
OGIzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFN0YWNrSXRl
bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxTdGFja0l0ZW0uaApAQCAt
MjYsOSArMjYsOSBAQAogI2lmbmRlZiBIVE1MU3RhY2tJdGVtX2gKICNkZWZpbmUgSFRNTFN0YWNr
SXRlbV9oCiAKKyNpbmNsdWRlICJBdG9taWNIVE1MVG9rZW4uaCIKICNpbmNsdWRlICJFbGVtZW50
LmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCi0jaW5jbHVkZSAiSFRNTFRva2VuLmgiCiAjaW5j
bHVkZSAiTWF0aE1MTmFtZXMuaCIKICNpbmNsdWRlICJTVkdOYW1lcy5oIgogCkBAIC0yMDgsMTIg
KzIwOCwxMiBAQCBwcml2YXRlOgogICAgICAgICAgICAgLy8gQ3JlYXRlIGEgZmFrZSB0b2tlbiBm
b3IgYSBkb2N1bWVudCBmcmFnbWVudCBub2RlLiBUaGlzIGxvb2tzIHVnbHkgYnV0IHJlcXVpcmVk
IGZvciBwZXJmb3JtYW5jZQogICAgICAgICAgICAgLy8gYmVjYXVzZSB3ZSB3YW50IHRvIHVzZSBt
X3Rva2VuLT5uYW1lKCkgaW4gbG9jYWxOYW1lKCksIGhhc0xvY2FsTmFtZSgpIGFuZCBoYXNUYWdO
YW1lKCkgd2l0aG91dAogICAgICAgICAgICAgLy8gY2hlY2tpbmcgbV9pc0RvY3VtZW50RnJhZ21l
bnROb2RlIGZsYWcuCi0gICAgICAgICAgICBtX3Rva2VuID0gQXRvbWljSFRNTFRva2VuOjpjcmVh
dGUoSFRNTFRva2VuVHlwZXM6OlN0YXJ0VGFnLCBudWxsQXRvbSk7CisgICAgICAgICAgICBtX3Rv
a2VuID0gQXRvbWljSFRNTFRva2VuOjpjcmVhdGUoSFRNTFRva2VuOjpTdGFydFRhZywgbnVsbEF0
b20pOwogICAgICAgICAgICAgbV9pc0RvY3VtZW50RnJhZ21lbnROb2RlID0gdHJ1ZTsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEl0ZW1Gb3JDb250ZXh0RWxlbWVudDoKICAgICAg
ICAgICAgIC8vIENyZWF0ZSBhIGZha2UgdG9rZW4gZm9yIGEgY29udGV4dCBlbGVtZW50IGZvciB0
aGUgc2FtZSByZWFzb24gYXMgYWJvdmUuCi0gICAgICAgICAgICBtX3Rva2VuID0gQXRvbWljSFRN
TFRva2VuOjpjcmVhdGUoSFRNTFRva2VuVHlwZXM6OlN0YXJ0VGFnLCBtX25vZGUtPmxvY2FsTmFt
ZSgpKTsKKyAgICAgICAgICAgIG1fdG9rZW4gPSBBdG9taWNIVE1MVG9rZW46OmNyZWF0ZShIVE1M
VG9rZW46OlN0YXJ0VGFnLCBtX25vZGUtPmxvY2FsTmFtZSgpKTsKICAgICAgICAgICAgIG1fbmFt
ZXNwYWNlVVJJID0gbV9ub2RlLT5uYW1lc3BhY2VVUkkoKTsKICAgICAgICAgICAgIG1faXNEb2N1
bWVudEZyYWdtZW50Tm9kZSA9IGZhbHNlOwogICAgICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVG9rZW4uaCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvcGFyc2VyL0hUTUxUb2tlbi5oCmluZGV4IGJmYmRlMjA0ODM0MjYxNTc3ZmU3ZGNkZWIz
YzAwMDA1ZDA3NjY0ZTcuLmNlNTE0YTFhODMxYmFkZWI1MTNhMDhmNjNhMGQzNGQ3MjVmZmIwMmQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUb2tlbi5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUb2tlbi5oCkBAIC0yNyw4ICsyNyw3IEBA
CiAjZGVmaW5lIEhUTUxUb2tlbl9oCiAKICNpbmNsdWRlICJBdHRyaWJ1dGUuaCIKLSNpbmNsdWRl
ICJDb21wYWN0SFRNTFRva2VuLmgiCi0jaW5jbHVkZSAiSFRNTFRva2VuVHlwZXMuaCIKKyNpbmNs
dWRlICJIVE1MVG9rZW4uaCIKICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUg
PHd0Zi9SZWZQdHIuaD4KIApAQCAtNjUsNyArNjQsMTUgQEAgY2xhc3MgSFRNTFRva2VuIHsKICAg
ICBXVEZfTUFLRV9OT05DT1BZQUJMRShIVE1MVG9rZW4pOwogICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwogcHVibGljOgotICAgIHR5cGVkZWYgSFRNTFRva2VuVHlwZXMgVHlwZTsKKyAgICBl
bnVtIFR5cGUgeworICAgICAgICBVbmluaXRpYWxpemVkLAorICAgICAgICBET0NUWVBFLAorICAg
ICAgICBTdGFydFRhZywKKyAgICAgICAgRW5kVGFnLAorICAgICAgICBDb21tZW50LAorICAgICAg
ICBDaGFyYWN0ZXIsCisgICAgICAgIEVuZE9mRmlsZSwKKyAgICB9OwogCiAgICAgY2xhc3MgQXR0
cmlidXRlIHsKICAgICBwdWJsaWM6CkBAIC04OCw3ICs5NSw3IEBAIHB1YmxpYzoKIAogICAgIHZv
aWQgY2xlYXIoKQogICAgIHsKLSAgICAgICAgbV90eXBlID0gVHlwZTo6VW5pbml0aWFsaXplZDsK
KyAgICAgICAgbV90eXBlID0gVW5pbml0aWFsaXplZDsKICAgICAgICAgbV9yYW5nZS5tX3N0YXJ0
ID0gMDsKICAgICAgICAgbV9yYW5nZS5tX2VuZCA9IDA7CiAgICAgICAgIG1fYmFzZU9mZnNldCA9
IDA7CkBAIC05NiwxMyArMTAzLDEzIEBAIHB1YmxpYzoKICAgICAgICAgbV9vckFsbERhdGEgPSAw
OwogICAgIH0KIAotICAgIGJvb2wgaXNVbmluaXRpYWxpemVkKCkgeyByZXR1cm4gbV90eXBlID09
IEhUTUxUb2tlblR5cGVzOjpVbmluaXRpYWxpemVkOyB9Ci0gICAgSFRNTFRva2VuVHlwZXM6OlR5
cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQorICAgIGJvb2wgaXNVbmluaXRpYWxp
emVkKCkgeyByZXR1cm4gbV90eXBlID09IFVuaW5pdGlhbGl6ZWQ7IH0KKyAgICBUeXBlIHR5cGUo
KSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KIAogICAgIHZvaWQgbWFrZUVuZE9mRmlsZSgpCiAg
ICAgewotICAgICAgICBBU1NFUlQobV90eXBlID09IEhUTUxUb2tlblR5cGVzOjpVbmluaXRpYWxp
emVkKTsKLSAgICAgICAgbV90eXBlID0gSFRNTFRva2VuVHlwZXM6OkVuZE9mRmlsZTsKKyAgICAg
ICAgQVNTRVJUKG1fdHlwZSA9PSBVbmluaXRpYWxpemVkKTsKKyAgICAgICAgbV90eXBlID0gRW5k
T2ZGaWxlOwogICAgIH0KIAogICAgIC8qIFJhbmdlIGFuZCBvZmZzZXQgbWV0aG9kcyBleHBvc2Vk
IGZvciBIVE1MU291cmNlVHJhY2tlciBhbmQgSFRNTFZpZXdTb3VyY2VQYXJzZXIgKi8KQEAgLTEy
MSw3ICsxMjgsNyBAQCBwdWJsaWM6CiAKICAgICBjb25zdCBEYXRhVmVjdG9yJiBkYXRhKCkgY29u
c3QKICAgICB7Ci0gICAgICAgIEFTU0VSVChtX3R5cGUgPT0gSFRNTFRva2VuVHlwZXM6OkNoYXJh
Y3RlciB8fCBtX3R5cGUgPT0gSFRNTFRva2VuVHlwZXM6OkNvbW1lbnQgfHwgbV90eXBlID09IEhU
TUxUb2tlblR5cGVzOjpTdGFydFRhZyB8fCBtX3R5cGUgPT0gSFRNTFRva2VuVHlwZXM6OkVuZFRh
Zyk7CisgICAgICAgIEFTU0VSVChtX3R5cGUgPT0gQ2hhcmFjdGVyIHx8IG1fdHlwZSA9PSBDb21t
ZW50IHx8IG1fdHlwZSA9PSBTdGFydFRhZyB8fCBtX3R5cGUgPT0gRW5kVGFnKTsKICAgICAgICAg
cmV0dXJuIG1fZGF0YTsKICAgICB9CiAKQEAgLTEzMiwxMyArMTM5LDEzIEBAIHB1YmxpYzoKIAog
ICAgIGNvbnN0IERhdGFWZWN0b3ImIG5hbWUoKSBjb25zdAogICAgIHsKLSAgICAgICAgQVNTRVJU
KG1fdHlwZSA9PSBIVE1MVG9rZW5UeXBlczo6U3RhcnRUYWcgfHwgbV90eXBlID09IEhUTUxUb2tl
blR5cGVzOjpFbmRUYWcgfHwgbV90eXBlID09IEhUTUxUb2tlblR5cGVzOjpET0NUWVBFKTsKKyAg
ICAgICAgQVNTRVJUKG1fdHlwZSA9PSBTdGFydFRhZyB8fCBtX3R5cGUgPT0gRW5kVGFnIHx8IG1f
dHlwZSA9PSBET0NUWVBFKTsKICAgICAgICAgcmV0dXJuIG1fZGF0YTsKICAgICB9CiAKICAgICB2
b2lkIGFwcGVuZFRvTmFtZShVQ2hhciBjaGFyYWN0ZXIpCiAgICAgewotICAgICAgICBBU1NFUlQo
bV90eXBlID09IEhUTUxUb2tlblR5cGVzOjpTdGFydFRhZyB8fCBtX3R5cGUgPT0gSFRNTFRva2Vu
VHlwZXM6OkVuZFRhZyB8fCBtX3R5cGUgPT0gSFRNTFRva2VuVHlwZXM6OkRPQ1RZUEUpOworICAg
ICAgICBBU1NFUlQobV90eXBlID09IFN0YXJ0VGFnIHx8IG1fdHlwZSA9PSBFbmRUYWcgfHwgbV90
eXBlID09IERPQ1RZUEUpOwogICAgICAgICBBU1NFUlQoY2hhcmFjdGVyKTsKICAgICAgICAgbV9k
YXRhLmFwcGVuZChjaGFyYWN0ZXIpOwogICAgICAgICBtX29yQWxsRGF0YSB8PSBjaGFyYWN0ZXI7
CkBAIC0xNTgsMjAgKzE2NSwyMCBAQCBwdWJsaWM6CiAKICAgICBib29sIGZvcmNlUXVpcmtzKCkg
Y29uc3QKICAgICB7Ci0gICAgICAgIEFTU0VSVChtX3R5cGUgPT0gSFRNTFRva2VuVHlwZXM6OkRP
Q1RZUEUpOworICAgICAgICBBU1NFUlQobV90eXBlID09IERPQ1RZUEUpOwogICAgICAgICByZXR1
cm4gbV9kb2N0eXBlRGF0YS0+bV9mb3JjZVF1aXJrczsKICAgICB9CiAKICAgICB2b2lkIHNldEZv
cmNlUXVpcmtzKCkKICAgICB7Ci0gICAgICAgIEFTU0VSVChtX3R5cGUgPT0gSFRNTFRva2VuVHlw
ZXM6OkRPQ1RZUEUpOworICAgICAgICBBU1NFUlQobV90eXBlID09IERPQ1RZUEUpOwogICAgICAg
ICBtX2RvY3R5cGVEYXRhLT5tX2ZvcmNlUXVpcmtzID0gdHJ1ZTsKICAgICB9CiAKICAgICB2b2lk
IGJlZ2luRE9DVFlQRSgpCiAgICAgewotICAgICAgICBBU1NFUlQobV90eXBlID09IEhUTUxUb2tl
blR5cGVzOjpVbmluaXRpYWxpemVkKTsKLSAgICAgICAgbV90eXBlID0gSFRNTFRva2VuVHlwZXM6
OkRPQ1RZUEU7CisgICAgICAgIEFTU0VSVChtX3R5cGUgPT0gVW5pbml0aWFsaXplZCk7CisgICAg
ICAgIG1fdHlwZSA9IERPQ1RZUEU7CiAgICAgICAgIG1fZG9jdHlwZURhdGEgPSBhZG9wdFB0cihu
ZXcgRG9jdHlwZURhdGEpOwogICAgIH0KIApAQCAtMTg2LDI3ICsxOTMsMjcgQEAgcHVibGljOgog
ICAgIC8vIEZJWE1FOiBEaXN0aW5ndWlzaCBiZXR3ZWVuIGEgbWlzc2luZyBwdWJsaWMgaWRlbnRp
ZmVyIGFuZCBhbiBlbXB0eSBvbmUuCiAgICAgY29uc3QgV1RGOjpWZWN0b3I8VUNoYXI+JiBwdWJs
aWNJZGVudGlmaWVyKCkgY29uc3QKICAgICB7Ci0gICAgICAgIEFTU0VSVChtX3R5cGUgPT0gSFRN
TFRva2VuVHlwZXM6OkRPQ1RZUEUpOworICAgICAgICBBU1NFUlQobV90eXBlID09IERPQ1RZUEUp
OwogICAgICAgICByZXR1cm4gbV9kb2N0eXBlRGF0YS0+bV9wdWJsaWNJZGVudGlmaWVyOwogICAg
IH0KIAogICAgIC8vIEZJWE1FOiBEaXN0aW5ndWlzaCBiZXR3ZWVuIGEgbWlzc2luZyBzeXN0ZW0g
aWRlbnRpZmVyIGFuZCBhbiBlbXB0eSBvbmUuCiAgICAgY29uc3QgV1RGOjpWZWN0b3I8VUNoYXI+
JiBzeXN0ZW1JZGVudGlmaWVyKCkgY29uc3QKICAgICB7Ci0gICAgICAgIEFTU0VSVChtX3R5cGUg
PT0gSFRNTFRva2VuVHlwZXM6OkRPQ1RZUEUpOworICAgICAgICBBU1NFUlQobV90eXBlID09IERP
Q1RZUEUpOwogICAgICAgICByZXR1cm4gbV9kb2N0eXBlRGF0YS0+bV9zeXN0ZW1JZGVudGlmaWVy
OwogICAgIH0KIAogICAgIHZvaWQgc2V0UHVibGljSWRlbnRpZmllclRvRW1wdHlTdHJpbmcoKQog
ICAgIHsKLSAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBIVE1MVG9rZW5UeXBlczo6RE9DVFlQRSk7
CisgICAgICAgIEFTU0VSVChtX3R5cGUgPT0gRE9DVFlQRSk7CiAgICAgICAgIG1fZG9jdHlwZURh
dGEtPm1faGFzUHVibGljSWRlbnRpZmllciA9IHRydWU7CiAgICAgICAgIG1fZG9jdHlwZURhdGEt
Pm1fcHVibGljSWRlbnRpZmllci5jbGVhcigpOwogICAgIH0KIAogICAgIHZvaWQgc2V0U3lzdGVt
SWRlbnRpZmllclRvRW1wdHlTdHJpbmcoKQogICAgIHsKLSAgICAgICAgQVNTRVJUKG1fdHlwZSA9
PSBIVE1MVG9rZW5UeXBlczo6RE9DVFlQRSk7CisgICAgICAgIEFTU0VSVChtX3R5cGUgPT0gRE9D
VFlQRSk7CiAgICAgICAgIG1fZG9jdHlwZURhdGEtPm1faGFzU3lzdGVtSWRlbnRpZmllciA9IHRy
dWU7CiAgICAgICAgIG1fZG9jdHlwZURhdGEtPm1fc3lzdGVtSWRlbnRpZmllci5jbGVhcigpOwog
ICAgIH0KQEAgLTIxNCw3ICsyMjEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBhcHBlbmRUb1B1Ymxp
Y0lkZW50aWZpZXIoVUNoYXIgY2hhcmFjdGVyKQogICAgIHsKICAgICAgICAgQVNTRVJUKGNoYXJh
Y3Rlcik7Ci0gICAgICAgIEFTU0VSVChtX3R5cGUgPT0gSFRNTFRva2VuVHlwZXM6OkRPQ1RZUEUp
OworICAgICAgICBBU1NFUlQobV90eXBlID09IERPQ1RZUEUpOwogICAgICAgICBBU1NFUlQobV9k
b2N0eXBlRGF0YS0+bV9oYXNQdWJsaWNJZGVudGlmaWVyKTsKICAgICAgICAgbV9kb2N0eXBlRGF0
YS0+bV9wdWJsaWNJZGVudGlmaWVyLmFwcGVuZChjaGFyYWN0ZXIpOwogICAgIH0KQEAgLTIyMiw3
ICsyMjksNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBhcHBlbmRUb1N5c3RlbUlkZW50aWZpZXIoVUNo
YXIgY2hhcmFjdGVyKQogICAgIHsKICAgICAgICAgQVNTRVJUKGNoYXJhY3Rlcik7Ci0gICAgICAg
IEFTU0VSVChtX3R5cGUgPT0gSFRNTFRva2VuVHlwZXM6OkRPQ1RZUEUpOworICAgICAgICBBU1NF
UlQobV90eXBlID09IERPQ1RZUEUpOwogICAgICAgICBBU1NFUlQobV9kb2N0eXBlRGF0YS0+bV9o
YXNTeXN0ZW1JZGVudGlmaWVyKTsKICAgICAgICAgbV9kb2N0eXBlRGF0YS0+bV9zeXN0ZW1JZGVu
dGlmaWVyLmFwcGVuZChjaGFyYWN0ZXIpOwogICAgIH0KQEAgLTIzNiwyMSArMjQzLDIxIEBAIHB1
YmxpYzoKIAogICAgIGJvb2wgc2VsZkNsb3NpbmcoKSBjb25zdAogICAgIHsKLSAgICAgICAgQVNT
RVJUKG1fdHlwZSA9PSBIVE1MVG9rZW5UeXBlczo6U3RhcnRUYWcgfHwgbV90eXBlID09IEhUTUxU
b2tlblR5cGVzOjpFbmRUYWcpOworICAgICAgICBBU1NFUlQobV90eXBlID09IFN0YXJ0VGFnIHx8
IG1fdHlwZSA9PSBFbmRUYWcpOwogICAgICAgICByZXR1cm4gbV9zZWxmQ2xvc2luZzsKICAgICB9
CiAKICAgICB2b2lkIHNldFNlbGZDbG9zaW5nKCkKICAgICB7Ci0gICAgICAgIEFTU0VSVChtX3R5
cGUgPT0gSFRNTFRva2VuVHlwZXM6OlN0YXJ0VGFnIHx8IG1fdHlwZSA9PSBIVE1MVG9rZW5UeXBl
czo6RW5kVGFnKTsKKyAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBTdGFydFRhZyB8fCBtX3R5cGUg
PT0gRW5kVGFnKTsKICAgICAgICAgbV9zZWxmQ2xvc2luZyA9IHRydWU7CiAgICAgfQogCiAgICAg
dm9pZCBiZWdpblN0YXJ0VGFnKFVDaGFyIGNoYXJhY3RlcikKICAgICB7CiAgICAgICAgIEFTU0VS
VChjaGFyYWN0ZXIpOwotICAgICAgICBBU1NFUlQobV90eXBlID09IEhUTUxUb2tlblR5cGVzOjpV
bmluaXRpYWxpemVkKTsKLSAgICAgICAgbV90eXBlID0gSFRNTFRva2VuVHlwZXM6OlN0YXJ0VGFn
OworICAgICAgICBBU1NFUlQobV90eXBlID09IFVuaW5pdGlhbGl6ZWQpOworICAgICAgICBtX3R5
cGUgPSBTdGFydFRhZzsKICAgICAgICAgbV9zZWxmQ2xvc2luZyA9IGZhbHNlOwogICAgICAgICBt
X2N1cnJlbnRBdHRyaWJ1dGUgPSAwOwogICAgICAgICBtX2F0dHJpYnV0ZXMuY2xlYXIoKTsKQEAg
LTI2MSw4ICsyNjgsOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGJlZ2luRW5kVGFnKExDaGFyIGNo
YXJhY3RlcikKICAgICB7Ci0gICAgICAgIEFTU0VSVChtX3R5cGUgPT0gSFRNTFRva2VuVHlwZXM6
OlVuaW5pdGlhbGl6ZWQpOwotICAgICAgICBtX3R5cGUgPSBIVE1MVG9rZW5UeXBlczo6RW5kVGFn
OworICAgICAgICBBU1NFUlQobV90eXBlID09IFVuaW5pdGlhbGl6ZWQpOworICAgICAgICBtX3R5
cGUgPSBFbmRUYWc7CiAgICAgICAgIG1fc2VsZkNsb3NpbmcgPSBmYWxzZTsKICAgICAgICAgbV9j
dXJyZW50QXR0cmlidXRlID0gMDsKICAgICAgICAgbV9hdHRyaWJ1dGVzLmNsZWFyKCk7CkBAIC0y
NzIsOCArMjc5LDggQEAgcHVibGljOgogCiAgICAgdm9pZCBiZWdpbkVuZFRhZyhjb25zdCBWZWN0
b3I8TENoYXIsIDMyPiYgY2hhcmFjdGVycykKICAgICB7Ci0gICAgICAgIEFTU0VSVChtX3R5cGUg
PT0gSFRNTFRva2VuVHlwZXM6OlVuaW5pdGlhbGl6ZWQpOwotICAgICAgICBtX3R5cGUgPSBIVE1M
VG9rZW5UeXBlczo6RW5kVGFnOworICAgICAgICBBU1NFUlQobV90eXBlID09IFVuaW5pdGlhbGl6
ZWQpOworICAgICAgICBtX3R5cGUgPSBFbmRUYWc7CiAgICAgICAgIG1fc2VsZkNsb3NpbmcgPSBm
YWxzZTsKICAgICAgICAgbV9jdXJyZW50QXR0cmlidXRlID0gMDsKICAgICAgICAgbV9hdHRyaWJ1
dGVzLmNsZWFyKCk7CkBAIC0yODMsNyArMjkwLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBhZGRO
ZXdBdHRyaWJ1dGUoKQogICAgIHsKLSAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBIVE1MVG9rZW5U
eXBlczo6U3RhcnRUYWcgfHwgbV90eXBlID09IEhUTUxUb2tlblR5cGVzOjpFbmRUYWcpOworICAg
ICAgICBBU1NFUlQobV90eXBlID09IFN0YXJ0VGFnIHx8IG1fdHlwZSA9PSBFbmRUYWcpOwogICAg
ICAgICBtX2F0dHJpYnV0ZXMuZ3JvdyhtX2F0dHJpYnV0ZXMuc2l6ZSgpICsgMSk7CiAgICAgICAg
IG1fY3VycmVudEF0dHJpYnV0ZSA9ICZtX2F0dHJpYnV0ZXMubGFzdCgpOwogI2lmbmRlZiBOREVC
VUcKQEAgLTMyMyw3ICszMzAsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBhcHBlbmRUb0F0dHJpYnV0
ZU5hbWUoVUNoYXIgY2hhcmFjdGVyKQogICAgIHsKICAgICAgICAgQVNTRVJUKGNoYXJhY3Rlcik7
Ci0gICAgICAgIEFTU0VSVChtX3R5cGUgPT0gSFRNTFRva2VuVHlwZXM6OlN0YXJ0VGFnIHx8IG1f
dHlwZSA9PSBIVE1MVG9rZW5UeXBlczo6RW5kVGFnKTsKKyAgICAgICAgQVNTRVJUKG1fdHlwZSA9
PSBTdGFydFRhZyB8fCBtX3R5cGUgPT0gRW5kVGFnKTsKICAgICAgICAgLy8gRklYTUU6IFdlIHNo
b3VsZCBiZSBhYmxlIHRvIGFkZCB0aGUgZm9sbG93aW5nIEFTU0VSVCBvbmNlIHdlIGZpeAogICAg
ICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjI5NzEKICAg
ICAgICAgLy8gICBBU1NFUlQobV9jdXJyZW50QXR0cmlidXRlLT5tX25hbWVSYW5nZS5tX3N0YXJ0
KTsKQEAgLTMzMyw3ICszNDAsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBhcHBlbmRUb0F0dHJpYnV0
ZVZhbHVlKFVDaGFyIGNoYXJhY3RlcikKICAgICB7CiAgICAgICAgIEFTU0VSVChjaGFyYWN0ZXIp
OwotICAgICAgICBBU1NFUlQobV90eXBlID09IEhUTUxUb2tlblR5cGVzOjpTdGFydFRhZyB8fCBt
X3R5cGUgPT0gSFRNTFRva2VuVHlwZXM6OkVuZFRhZyk7CisgICAgICAgIEFTU0VSVChtX3R5cGUg
PT0gU3RhcnRUYWcgfHwgbV90eXBlID09IEVuZFRhZyk7CiAgICAgICAgIEFTU0VSVChtX2N1cnJl
bnRBdHRyaWJ1dGUtPm1fdmFsdWVSYW5nZS5tX3N0YXJ0KTsKICAgICAgICAgbV9jdXJyZW50QXR0
cmlidXRlLT5tX3ZhbHVlLmFwcGVuZChjaGFyYWN0ZXIpOwogICAgIH0KQEAgLTM0MSwyMCArMzQ4
LDIwIEBAIHB1YmxpYzoKICAgICB2b2lkIGFwcGVuZFRvQXR0cmlidXRlVmFsdWUoc2l6ZV90IGks
IGNvbnN0IFN0cmluZyYgdmFsdWUpCiAgICAgewogICAgICAgICBBU1NFUlQoIXZhbHVlLmlzRW1w
dHkoKSk7Ci0gICAgICAgIEFTU0VSVChtX3R5cGUgPT0gSFRNTFRva2VuVHlwZXM6OlN0YXJ0VGFn
IHx8IG1fdHlwZSA9PSBIVE1MVG9rZW5UeXBlczo6RW5kVGFnKTsKKyAgICAgICAgQVNTRVJUKG1f
dHlwZSA9PSBTdGFydFRhZyB8fCBtX3R5cGUgPT0gRW5kVGFnKTsKICAgICAgICAgbV9hdHRyaWJ1
dGVzW2ldLm1fdmFsdWUuYXBwZW5kKHZhbHVlLmNoYXJhY3RlcnMoKSwgdmFsdWUubGVuZ3RoKCkp
OwogICAgIH0KIAogICAgIGNvbnN0IEF0dHJpYnV0ZUxpc3QmIGF0dHJpYnV0ZXMoKSBjb25zdAog
ICAgIHsKLSAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBIVE1MVG9rZW5UeXBlczo6U3RhcnRUYWcg
fHwgbV90eXBlID09IEhUTUxUb2tlblR5cGVzOjpFbmRUYWcpOworICAgICAgICBBU1NFUlQobV90
eXBlID09IFN0YXJ0VGFnIHx8IG1fdHlwZSA9PSBFbmRUYWcpOwogICAgICAgICByZXR1cm4gbV9h
dHRyaWJ1dGVzOwogICAgIH0KIAogICAgIC8vIFVzZWQgYnkgdGhlIFhTU0F1ZGl0b3IgdG8gbnVr
ZSBYU1MtbGFkZW4gYXR0cmlidXRlcy4KICAgICB2b2lkIGVyYXNlVmFsdWVPZkF0dHJpYnV0ZShz
aXplX3QgaSkKICAgICB7Ci0gICAgICAgIEFTU0VSVChtX3R5cGUgPT0gSFRNTFRva2VuVHlwZXM6
OlN0YXJ0VGFnIHx8IG1fdHlwZSA9PSBIVE1MVG9rZW5UeXBlczo6RW5kVGFnKTsKKyAgICAgICAg
QVNTRVJUKG1fdHlwZSA9PSBTdGFydFRhZyB8fCBtX3R5cGUgPT0gRW5kVGFnKTsKICAgICAgICAg
bV9hdHRyaWJ1dGVzW2ldLm1fdmFsdWUuY2xlYXIoKTsKICAgICB9CiAKQEAgLTM2NCwzMiArMzcx
LDMyIEBAIHB1YmxpYzoKICAgICAvLyBvdGhlciB0eXBlcyBvZiB0b2tlbnMgYmVjYXVzZSB3ZSB3
YW50IHRvIHNhdmUgYSBwZXItY2hhcmFjdGVyIGJyYW5jaC4KICAgICB2b2lkIGVuc3VyZUlzQ2hh
cmFjdGVyVG9rZW4oKQogICAgIHsKLSAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBIVE1MVG9rZW5U
eXBlczo6VW5pbml0aWFsaXplZCB8fCBtX3R5cGUgPT0gSFRNTFRva2VuVHlwZXM6OkNoYXJhY3Rl
cik7Ci0gICAgICAgIG1fdHlwZSA9IEhUTUxUb2tlblR5cGVzOjpDaGFyYWN0ZXI7CisgICAgICAg
IEFTU0VSVChtX3R5cGUgPT0gVW5pbml0aWFsaXplZCB8fCBtX3R5cGUgPT0gQ2hhcmFjdGVyKTsK
KyAgICAgICAgbV90eXBlID0gQ2hhcmFjdGVyOwogICAgIH0KIAogICAgIGNvbnN0IERhdGFWZWN0
b3ImIGNoYXJhY3RlcnMoKSBjb25zdAogICAgIHsKLSAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBI
VE1MVG9rZW5UeXBlczo6Q2hhcmFjdGVyKTsKKyAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBDaGFy
YWN0ZXIpOwogICAgICAgICByZXR1cm4gbV9kYXRhOwogICAgIH0KIAogICAgIHZvaWQgYXBwZW5k
VG9DaGFyYWN0ZXIoY2hhciBjaGFyYWN0ZXIpCiAgICAgewotICAgICAgICBBU1NFUlQobV90eXBl
ID09IEhUTUxUb2tlblR5cGVzOjpDaGFyYWN0ZXIpOworICAgICAgICBBU1NFUlQobV90eXBlID09
IENoYXJhY3Rlcik7CiAgICAgICAgIG1fZGF0YS5hcHBlbmQoY2hhcmFjdGVyKTsKICAgICB9CiAK
ICAgICB2b2lkIGFwcGVuZFRvQ2hhcmFjdGVyKFVDaGFyIGNoYXJhY3RlcikKICAgICB7Ci0gICAg
ICAgIEFTU0VSVChtX3R5cGUgPT0gSFRNTFRva2VuVHlwZXM6OkNoYXJhY3Rlcik7CisgICAgICAg
IEFTU0VSVChtX3R5cGUgPT0gQ2hhcmFjdGVyKTsKICAgICAgICAgbV9kYXRhLmFwcGVuZChjaGFy
YWN0ZXIpOwogICAgICAgICBtX29yQWxsRGF0YSB8PSBjaGFyYWN0ZXI7CiAgICAgfQogCiAgICAg
dm9pZCBhcHBlbmRUb0NoYXJhY3Rlcihjb25zdCBWZWN0b3I8TENoYXIsIDMyPiYgY2hhcmFjdGVy
cykKICAgICB7Ci0gICAgICAgIEFTU0VSVChtX3R5cGUgPT0gSFRNTFRva2VuVHlwZXM6OkNoYXJh
Y3Rlcik7CisgICAgICAgIEFTU0VSVChtX3R5cGUgPT0gQ2hhcmFjdGVyKTsKICAgICAgICAgbV9k
YXRhLmFwcGVuZFZlY3RvcihjaGFyYWN0ZXJzKTsKICAgICB9CiAKQEAgLTM5NywzMyArNDA0LDMz
IEBAIHB1YmxpYzoKIAogICAgIGNvbnN0IERhdGFWZWN0b3ImIGNvbW1lbnQoKSBjb25zdAogICAg
IHsKLSAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBIVE1MVG9rZW5UeXBlczo6Q29tbWVudCk7Cisg
ICAgICAgIEFTU0VSVChtX3R5cGUgPT0gQ29tbWVudCk7CiAgICAgICAgIHJldHVybiBtX2RhdGE7
CiAgICAgfQogCiAgICAgdm9pZCBiZWdpbkNvbW1lbnQoKQogICAgIHsKLSAgICAgICAgQVNTRVJU
KG1fdHlwZSA9PSBIVE1MVG9rZW5UeXBlczo6VW5pbml0aWFsaXplZCk7Ci0gICAgICAgIG1fdHlw
ZSA9IEhUTUxUb2tlblR5cGVzOjpDb21tZW50OworICAgICAgICBBU1NFUlQobV90eXBlID09IFVu
aW5pdGlhbGl6ZWQpOworICAgICAgICBtX3R5cGUgPSBDb21tZW50OwogICAgIH0KIAogICAgIHZv
aWQgYXBwZW5kVG9Db21tZW50KFVDaGFyIGNoYXJhY3RlcikKICAgICB7CiAgICAgICAgIEFTU0VS
VChjaGFyYWN0ZXIpOwotICAgICAgICBBU1NFUlQobV90eXBlID09IEhUTUxUb2tlblR5cGVzOjpD
b21tZW50KTsKKyAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBDb21tZW50KTsKICAgICAgICAgbV9k
YXRhLmFwcGVuZChjaGFyYWN0ZXIpOwogICAgICAgICBtX29yQWxsRGF0YSB8PSBjaGFyYWN0ZXI7
CiAgICAgfQogCiAgICAgdm9pZCBlcmFzZUNoYXJhY3RlcnMoKQogICAgIHsKLSAgICAgICAgQVNT
RVJUKG1fdHlwZSA9PSBIVE1MVG9rZW5UeXBlczo6Q2hhcmFjdGVyKTsKKyAgICAgICAgQVNTRVJU
KG1fdHlwZSA9PSBDaGFyYWN0ZXIpOwogICAgICAgICBtX2RhdGEuY2xlYXIoKTsKICAgICAgICAg
bV9vckFsbERhdGEgPSAwOwogICAgIH0KIAogcHJpdmF0ZToKLSAgICBIVE1MVG9rZW5UeXBlczo6
VHlwZSBtX3R5cGU7CisgICAgVHlwZSBtX3R5cGU7CiAgICAgQXR0cmlidXRlOjpSYW5nZSBtX3Jh
bmdlOyAvLyBBbHdheXMgc3RhcnRzIGF0IHplcm8uCiAgICAgaW50IG1fYmFzZU9mZnNldDsKICAg
ICBEYXRhVmVjdG9yIG1fZGF0YTsKQEAgLTQ0MCwyODEgKzQ0Nyw2IEBAIHByaXZhdGU6CiAgICAg
T3duUHRyPERvY3R5cGVEYXRhPiBtX2RvY3R5cGVEYXRhOwogfTsKIAotY2xhc3MgQXRvbWljSFRN
TFRva2VuIDogcHVibGljIFJlZkNvdW50ZWQ8QXRvbWljSFRNTFRva2VuPiB7Ci0gICAgV1RGX01B
S0VfTk9OQ09QWUFCTEUoQXRvbWljSFRNTFRva2VuKTsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUGFz
c1JlZlB0cjxBdG9taWNIVE1MVG9rZW4+IGNyZWF0ZShIVE1MVG9rZW4mIHRva2VuKQotICAgIHsK
LSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBBdG9taWNIVE1MVG9rZW4odG9rZW4pKTsKLSAg
ICB9Ci0KLSNpZiBFTkFCTEUoVEhSRUFERURfSFRNTF9QQVJTRVIpCi0KLSAgICBzdGF0aWMgUGFz
c1JlZlB0cjxBdG9taWNIVE1MVG9rZW4+IGNyZWF0ZShjb25zdCBDb21wYWN0SFRNTFRva2VuJiB0
b2tlbikKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQXRvbWljSFRNTFRva2Vu
KHRva2VuKSk7Ci0gICAgfQotCi0jZW5kaWYKLQotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEF0b21p
Y0hUTUxUb2tlbj4gY3JlYXRlKEhUTUxUb2tlblR5cGVzOjpUeXBlIHR5cGUsIGNvbnN0IEF0b21p
Y1N0cmluZyYgbmFtZSwgY29uc3QgVmVjdG9yPEF0dHJpYnV0ZT4mIGF0dHJpYnV0ZXMgPSBWZWN0
b3I8QXR0cmlidXRlPigpKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBBdG9t
aWNIVE1MVG9rZW4odHlwZSwgbmFtZSwgYXR0cmlidXRlcykpOwotICAgIH0KLQotICAgIGJvb2wg
Zm9yY2VRdWlya3MoKSBjb25zdAotICAgIHsKLSAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBIVE1M
VG9rZW5UeXBlczo6RE9DVFlQRSk7Ci0gICAgICAgIHJldHVybiBtX2RvY3R5cGVEYXRhLT5tX2Zv
cmNlUXVpcmtzOwotICAgIH0KLQotICAgIEhUTUxUb2tlblR5cGVzOjpUeXBlIHR5cGUoKSBjb25z
dCB7IHJldHVybiBtX3R5cGU7IH0KLQotICAgIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSgpIGNv
bnN0Ci0gICAgewotICAgICAgICBBU1NFUlQodXNlc05hbWUoKSk7Ci0gICAgICAgIHJldHVybiBt
X25hbWU7Ci0gICAgfQotCi0gICAgdm9pZCBzZXROYW1lKGNvbnN0IEF0b21pY1N0cmluZyYgbmFt
ZSkKLSAgICB7Ci0gICAgICAgIEFTU0VSVCh1c2VzTmFtZSgpKTsKLSAgICAgICAgbV9uYW1lID0g
bmFtZTsKLSAgICB9Ci0KLSAgICBib29sIHNlbGZDbG9zaW5nKCkgY29uc3QKLSAgICB7Ci0gICAg
ICAgIEFTU0VSVChtX3R5cGUgPT0gSFRNTFRva2VuVHlwZXM6OlN0YXJ0VGFnIHx8IG1fdHlwZSA9
PSBIVE1MVG9rZW5UeXBlczo6RW5kVGFnKTsKLSAgICAgICAgcmV0dXJuIG1fc2VsZkNsb3Npbmc7
Ci0gICAgfQotCi0gICAgQXR0cmlidXRlKiBnZXRBdHRyaWJ1dGVJdGVtKGNvbnN0IFF1YWxpZmll
ZE5hbWUmIGF0dHJpYnV0ZU5hbWUpCi0gICAgewotICAgICAgICBBU1NFUlQodXNlc0F0dHJpYnV0
ZXMoKSk7Ci0gICAgICAgIHJldHVybiBmaW5kQXR0cmlidXRlSW5WZWN0b3IobV9hdHRyaWJ1dGVz
LCBhdHRyaWJ1dGVOYW1lKTsKLSAgICB9Ci0KLSAgICBWZWN0b3I8QXR0cmlidXRlPiYgYXR0cmli
dXRlcygpCi0gICAgewotICAgICAgICBBU1NFUlQodXNlc0F0dHJpYnV0ZXMoKSk7Ci0gICAgICAg
IHJldHVybiBtX2F0dHJpYnV0ZXM7Ci0gICAgfQotCi0gICAgY29uc3QgVmVjdG9yPEF0dHJpYnV0
ZT4mIGF0dHJpYnV0ZXMoKSBjb25zdAotICAgIHsKLSAgICAgICAgQVNTRVJUKHVzZXNBdHRyaWJ1
dGVzKCkpOwotICAgICAgICByZXR1cm4gbV9hdHRyaWJ1dGVzOwotICAgIH0KLQotICAgIGNvbnN0
IFVDaGFyKiBjaGFyYWN0ZXJzKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIEFTU0VSVChtX3R5cGUg
PT0gSFRNTFRva2VuVHlwZXM6OkNoYXJhY3Rlcik7Ci0gICAgICAgIHJldHVybiBtX2V4dGVybmFs
Q2hhcmFjdGVyczsKLSAgICB9Ci0KLSAgICBzaXplX3QgY2hhcmFjdGVyc0xlbmd0aCgpIGNvbnN0
Ci0gICAgewotICAgICAgICBBU1NFUlQobV90eXBlID09IEhUTUxUb2tlblR5cGVzOjpDaGFyYWN0
ZXIpOwotICAgICAgICByZXR1cm4gbV9leHRlcm5hbENoYXJhY3RlcnNMZW5ndGg7Ci0gICAgfQot
Ci0gICAgYm9vbCBpc0FsbDhCaXREYXRhKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBt
X2lzQWxsOEJpdERhdGE7Ci0gICAgfQotCi0gICAgY29uc3QgU3RyaW5nJiBjb21tZW50KCkgY29u
c3QKLSAgICB7Ci0gICAgICAgIEFTU0VSVChtX3R5cGUgPT0gSFRNTFRva2VuVHlwZXM6OkNvbW1l
bnQpOwotICAgICAgICByZXR1cm4gbV9kYXRhOwotICAgIH0KLQotICAgIC8vIEZJWE1FOiBEaXN0
aW5ndWlzaCBiZXR3ZWVuIGEgbWlzc2luZyBwdWJsaWMgaWRlbnRpZmVyIGFuZCBhbiBlbXB0eSBv
bmUuCi0gICAgV1RGOjpWZWN0b3I8VUNoYXI+JiBwdWJsaWNJZGVudGlmaWVyKCkgY29uc3QKLSAg
ICB7Ci0gICAgICAgIEFTU0VSVChtX3R5cGUgPT0gSFRNTFRva2VuVHlwZXM6OkRPQ1RZUEUpOwot
ICAgICAgICByZXR1cm4gbV9kb2N0eXBlRGF0YS0+bV9wdWJsaWNJZGVudGlmaWVyOwotICAgIH0K
LQotICAgIC8vIEZJWE1FOiBEaXN0aW5ndWlzaCBiZXR3ZWVuIGEgbWlzc2luZyBzeXN0ZW0gaWRl
bnRpZmVyIGFuZCBhbiBlbXB0eSBvbmUuCi0gICAgV1RGOjpWZWN0b3I8VUNoYXI+JiBzeXN0ZW1J
ZGVudGlmaWVyKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIEFTU0VSVChtX3R5cGUgPT0gSFRNTFRv
a2VuVHlwZXM6OkRPQ1RZUEUpOwotICAgICAgICByZXR1cm4gbV9kb2N0eXBlRGF0YS0+bV9zeXN0
ZW1JZGVudGlmaWVyOwotICAgIH0KLQotICAgIHZvaWQgY2xlYXJFeHRlcm5hbENoYXJhY3RlcnMo
KQotICAgIHsKLSAgICAgICAgbV9leHRlcm5hbENoYXJhY3RlcnMgPSAwOwotICAgICAgICBtX2V4
dGVybmFsQ2hhcmFjdGVyc0xlbmd0aCA9IDA7Ci0gICAgICAgIG1faXNBbGw4Qml0RGF0YSA9IGZh
bHNlOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBleHBsaWNpdCBBdG9taWNIVE1MVG9rZW4oSFRN
TFRva2VuJiB0b2tlbikKLSAgICAgICAgOiBtX3R5cGUodG9rZW4udHlwZSgpKQotICAgIHsKLSAg
ICAgICAgc3dpdGNoIChtX3R5cGUpIHsKLSAgICAgICAgY2FzZSBIVE1MVG9rZW5UeXBlczo6VW5p
bml0aWFsaXplZDoKLSAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgSFRNTFRva2VuVHlwZXM6OkRPQ1RZUEU6Ci0gICAgICAg
ICAgICBtX25hbWUgPSBBdG9taWNTdHJpbmcodG9rZW4ubmFtZVN0cmluZygpKTsKLSAgICAgICAg
ICAgIG1fZG9jdHlwZURhdGEgPSB0b2tlbi5yZWxlYXNlRG9jdHlwZURhdGEoKTsKLSAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICBjYXNlIEhUTUxUb2tlblR5cGVzOjpFbmRPZkZpbGU6Ci0gICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBIVE1MVG9rZW5UeXBlczo6U3RhcnRUYWc6Ci0g
ICAgICAgIGNhc2UgSFRNTFRva2VuVHlwZXM6OkVuZFRhZzogewotICAgICAgICAgICAgbV9zZWxm
Q2xvc2luZyA9IHRva2VuLnNlbGZDbG9zaW5nKCk7Ci0gICAgICAgICAgICBtX25hbWUgPSBBdG9t
aWNTdHJpbmcodG9rZW4ubmFtZVN0cmluZygpKTsKLSAgICAgICAgICAgIGluaXRpYWxpemVBdHRy
aWJ1dGVzKHRva2VuLmF0dHJpYnV0ZXMoKSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAg
fQotICAgICAgICBjYXNlIEhUTUxUb2tlblR5cGVzOjpDb21tZW50OgotICAgICAgICAgICAgaWYg
KHRva2VuLmlzQWxsOEJpdERhdGEoKSkKLSAgICAgICAgICAgICAgICBtX2RhdGEgPSBTdHJpbmc6
Om1ha2U4Qml0RnJvbTE2Qml0U291cmNlKHRva2VuLmNvbW1lbnQoKS5kYXRhKCksIHRva2VuLmNv
bW1lbnQoKS5zaXplKCkpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIG1fZGF0
YSA9IFN0cmluZyh0b2tlbi5jb21tZW50KCkuZGF0YSgpLCB0b2tlbi5jb21tZW50KCkuc2l6ZSgp
KTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEhUTUxUb2tlblR5cGVzOjpDaGFy
YWN0ZXI6Ci0gICAgICAgICAgICBtX2V4dGVybmFsQ2hhcmFjdGVycyA9IHRva2VuLmNoYXJhY3Rl
cnMoKS5kYXRhKCk7Ci0gICAgICAgICAgICBtX2V4dGVybmFsQ2hhcmFjdGVyc0xlbmd0aCA9IHRv
a2VuLmNoYXJhY3RlcnMoKS5zaXplKCk7Ci0gICAgICAgICAgICBtX2lzQWxsOEJpdERhdGEgPSB0
b2tlbi5pc0FsbDhCaXREYXRhKCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgZGVmYXVs
dDoKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgfQotCi0jaWYgRU5BQkxFKFRI
UkVBREVEX0hUTUxfUEFSU0VSKQotCi0gICAgZXhwbGljaXQgQXRvbWljSFRNTFRva2VuKGNvbnN0
IENvbXBhY3RIVE1MVG9rZW4mIHRva2VuKQotICAgICAgICA6IG1fdHlwZSh0b2tlbi50eXBlKCkp
Ci0gICAgewotICAgICAgICBzd2l0Y2ggKG1fdHlwZSkgewotICAgICAgICBjYXNlIEhUTUxUb2tl
blR5cGVzOjpVbmluaXRpYWxpemVkOgotICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBIVE1MVG9rZW5UeXBlczo6RE9DVFlQ
RToKLSAgICAgICAgICAgIG1fbmFtZSA9IHRva2VuLmRhdGEoKTsKLSAgICAgICAgICAgIG1fZG9j
dHlwZURhdGEgPSBhZG9wdFB0cihuZXcgRG9jdHlwZURhdGEoKSk7Ci0gICAgICAgICAgICBtX2Rv
Y3R5cGVEYXRhLT5tX2hhc1B1YmxpY0lkZW50aWZpZXIgPSB0cnVlOwotICAgICAgICAgICAgbV9k
b2N0eXBlRGF0YS0+bV9wdWJsaWNJZGVudGlmaWVyLmFwcGVuZCh0b2tlbi5wdWJsaWNJZGVudGlm
aWVyKCkuY2hhcmFjdGVycygpLCB0b2tlbi5wdWJsaWNJZGVudGlmaWVyKCkubGVuZ3RoKCkpOwot
ICAgICAgICAgICAgbV9kb2N0eXBlRGF0YS0+bV9oYXNTeXN0ZW1JZGVudGlmaWVyID0gdHJ1ZTsK
LSAgICAgICAgICAgIG1fZG9jdHlwZURhdGEtPm1fc3lzdGVtSWRlbnRpZmllci5hcHBlbmQodG9r
ZW4uc3lzdGVtSWRlbnRpZmllcigpLmNoYXJhY3RlcnMoKSwgdG9rZW4uc3lzdGVtSWRlbnRpZmll
cigpLmxlbmd0aCgpKTsKLSAgICAgICAgICAgIG1fZG9jdHlwZURhdGEtPm1fZm9yY2VRdWlya3Mg
PSB0b2tlbi5kb2N0eXBlRm9yY2VzUXVpcmtzKCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgY2FzZSBIVE1MVG9rZW5UeXBlczo6RW5kT2ZGaWxlOgotICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgIGNhc2UgSFRNTFRva2VuVHlwZXM6OlN0YXJ0VGFnOgotICAgICAgICAgICAgbV9hdHRy
aWJ1dGVzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkodG9rZW4uYXR0cmlidXRlcygpLnNpemUoKSk7
Ci0gICAgICAgICAgICBmb3IgKFZlY3RvcjxDb21wYWN0QXR0cmlidXRlPjo6Y29uc3RfaXRlcmF0
b3IgaXQgPSB0b2tlbi5hdHRyaWJ1dGVzKCkuYmVnaW4oKTsgaXQgIT0gdG9rZW4uYXR0cmlidXRl
cygpLmVuZCgpOyArK2l0KQotICAgICAgICAgICAgICAgIG1fYXR0cmlidXRlcy5hcHBlbmQoQXR0
cmlidXRlKFF1YWxpZmllZE5hbWUobnVsbEF0b20sIGl0LT5uYW1lKCksIG51bGxBdG9tKSwgaXQt
PnZhbHVlKCkpKTsKLSAgICAgICAgICAgIC8vIEZhbGwgdGhyb3VnaCEKLSAgICAgICAgY2FzZSBI
VE1MVG9rZW5UeXBlczo6RW5kVGFnOgotICAgICAgICAgICAgbV9zZWxmQ2xvc2luZyA9IHRva2Vu
LnNlbGZDbG9zaW5nKCk7Ci0gICAgICAgICAgICBtX25hbWUgPSBBdG9taWNTdHJpbmcodG9rZW4u
ZGF0YSgpKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEhUTUxUb2tlblR5cGVz
OjpDb21tZW50OgotICAgICAgICAgICAgbV9kYXRhID0gdG9rZW4uZGF0YSgpOwotICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgSFRNTFRva2VuVHlwZXM6OkNoYXJhY3RlcjoKLSAgICAg
ICAgICAgIG1fZXh0ZXJuYWxDaGFyYWN0ZXJzID0gdG9rZW4uZGF0YSgpLmNoYXJhY3RlcnMoKTsK
LSAgICAgICAgICAgIG1fZXh0ZXJuYWxDaGFyYWN0ZXJzTGVuZ3RoID0gdG9rZW4uZGF0YSgpLmxl
bmd0aCgpOwotICAgICAgICAgICAgbV9pc0FsbDhCaXREYXRhID0gdG9rZW4uaXNBbGw4Qml0RGF0
YSgpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgfQotICAgIH0KLQotI2VuZGlmCi0KLSAgICBleHBsaWNpdCBBdG9taWNI
VE1MVG9rZW4oSFRNTFRva2VuVHlwZXM6OlR5cGUgdHlwZSkKLSAgICAgICAgOiBtX3R5cGUodHlw
ZSkKLSAgICAgICAgLCBtX2V4dGVybmFsQ2hhcmFjdGVycygwKQotICAgICAgICAsIG1fZXh0ZXJu
YWxDaGFyYWN0ZXJzTGVuZ3RoKDApCi0gICAgICAgICwgbV9pc0FsbDhCaXREYXRhKGZhbHNlKQot
ICAgICAgICAsIG1fc2VsZkNsb3NpbmcoZmFsc2UpCi0gICAgewotICAgIH0KLQotICAgIEF0b21p
Y0hUTUxUb2tlbihIVE1MVG9rZW5UeXBlczo6VHlwZSB0eXBlLCBjb25zdCBBdG9taWNTdHJpbmcm
IG5hbWUsIGNvbnN0IFZlY3RvcjxBdHRyaWJ1dGU+JiBhdHRyaWJ1dGVzID0gVmVjdG9yPEF0dHJp
YnV0ZT4oKSkKLSAgICAgICAgOiBtX3R5cGUodHlwZSkKLSAgICAgICAgLCBtX25hbWUobmFtZSkK
LSAgICAgICAgLCBtX2V4dGVybmFsQ2hhcmFjdGVycygwKQotICAgICAgICAsIG1fZXh0ZXJuYWxD
aGFyYWN0ZXJzTGVuZ3RoKDApCi0gICAgICAgICwgbV9pc0FsbDhCaXREYXRhKGZhbHNlKQotICAg
ICAgICAsIG1fc2VsZkNsb3NpbmcoZmFsc2UpCi0gICAgICAgICwgbV9hdHRyaWJ1dGVzKGF0dHJp
YnV0ZXMpCi0gICAgewotICAgICAgICBBU1NFUlQodXNlc05hbWUoKSk7Ci0gICAgfQotCi0gICAg
SFRNTFRva2VuVHlwZXM6OlR5cGUgbV90eXBlOwotCi0gICAgdm9pZCBpbml0aWFsaXplQXR0cmli
dXRlcyhjb25zdCBIVE1MVG9rZW46OkF0dHJpYnV0ZUxpc3QmIGF0dHJpYnV0ZXMpOwotICAgIFF1
YWxpZmllZE5hbWUgbmFtZUZvckF0dHJpYnV0ZShjb25zdCBIVE1MVG9rZW46OkF0dHJpYnV0ZSYp
IGNvbnN0OwotCi0gICAgYm9vbCB1c2VzTmFtZSgpIGNvbnN0OwotCi0gICAgYm9vbCB1c2VzQXR0
cmlidXRlcygpIGNvbnN0OwotCi0gICAgLy8gIm5hbWUiIGZvciBET0NUWVBFLCBTdGFydFRhZywg
YW5kIEVuZFRhZwotICAgIEF0b21pY1N0cmluZyBtX25hbWU7Ci0KLSAgICAvLyAiZGF0YSIgZm9y
IENvbW1lbnQKLSAgICBTdHJpbmcgbV9kYXRhOwotCi0gICAgLy8gImNoYXJhY3RlcnMiIGZvciBD
aGFyYWN0ZXIKLSAgICAvLwotICAgIC8vIFdlIGRvbid0IHdhbnQgdG8gY29weSB0aGUgdGhlIGNo
YXJhY3RlcnMgb3V0IG9mIHRoZSBUb2tlbiwgc28gd2UKLSAgICAvLyBrZWVwIGEgcG9pbnRlciB0
byBpdHMgYnVmZmVyIGluc3RlYWQuIFRoaXMgYnVmZmVyIGlzIG93bmVkIGJ5IHRoZQotICAgIC8v
IFRva2VuIGFuZCBjYXVzZXMgYSBsaWZldGltZSBkZXBlbmRlbmNlIGJldHdlZW4gdGhlc2Ugb2Jq
ZWN0cy4KLSAgICAvLwotICAgIC8vIEZJWE1FOiBBZGQgYSBtZWNoYW5pc20gZm9yICJpbnRlcm5h
bGl6aW5nIiB0aGUgY2hhcmFjdGVycyB3aGVuIHRoZQotICAgIC8vICAgICAgICBIVE1MVG9rZW4g
aXMgZGVzdHJ1Y3RlZC4KLSAgICBjb25zdCBVQ2hhciogbV9leHRlcm5hbENoYXJhY3RlcnM7Ci0g
ICAgc2l6ZV90IG1fZXh0ZXJuYWxDaGFyYWN0ZXJzTGVuZ3RoOwotICAgIGJvb2wgbV9pc0FsbDhC
aXREYXRhOwotCi0gICAgLy8gRm9yIERPQ1RZUEUKLSAgICBPd25QdHI8RG9jdHlwZURhdGE+IG1f
ZG9jdHlwZURhdGE7Ci0KLSAgICAvLyBGb3IgU3RhcnRUYWcgYW5kIEVuZFRhZwotICAgIGJvb2wg
bV9zZWxmQ2xvc2luZzsKLQotICAgIFZlY3RvcjxBdHRyaWJ1dGU+IG1fYXR0cmlidXRlczsKLX07
Ci0KLWlubGluZSB2b2lkIEF0b21pY0hUTUxUb2tlbjo6aW5pdGlhbGl6ZUF0dHJpYnV0ZXMoY29u
c3QgSFRNTFRva2VuOjpBdHRyaWJ1dGVMaXN0JiBhdHRyaWJ1dGVzKQotewotICAgIHNpemVfdCBz
aXplID0gYXR0cmlidXRlcy5zaXplKCk7Ci0gICAgaWYgKCFzaXplKQotICAgICAgICByZXR1cm47
Ci0KLSAgICBtX2F0dHJpYnV0ZXMuY2xlYXIoKTsKLSAgICBtX2F0dHJpYnV0ZXMucmVzZXJ2ZUlu
aXRpYWxDYXBhY2l0eShzaXplKTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7ICsr
aSkgewotICAgICAgICBjb25zdCBIVE1MVG9rZW46OkF0dHJpYnV0ZSYgYXR0cmlidXRlID0gYXR0
cmlidXRlc1tpXTsKLSAgICAgICAgaWYgKGF0dHJpYnV0ZS5tX25hbWUuaXNFbXB0eSgpKQotICAg
ICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBiZSBhYmxl
IHRvIGFkZCB0aGUgZm9sbG93aW5nIEFTU0VSVCBvbmNlIHdlIGZpeAotICAgICAgICAvLyBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjI5NzEKLSAgICAgICAgLy8gICBB
U1NFUlQoYXR0cmlidXRlLm1fbmFtZVJhbmdlLm1fc3RhcnQpOwotICAgICAgICBBU1NFUlQoYXR0
cmlidXRlLm1fbmFtZVJhbmdlLm1fZW5kKTsKLSAgICAgICAgQVNTRVJUKGF0dHJpYnV0ZS5tX3Zh
bHVlUmFuZ2UubV9zdGFydCk7Ci0gICAgICAgIEFTU0VSVChhdHRyaWJ1dGUubV92YWx1ZVJhbmdl
Lm1fZW5kKTsKLQotICAgICAgICBBdG9taWNTdHJpbmcgdmFsdWUoYXR0cmlidXRlLm1fdmFsdWUu
ZGF0YSgpLCBhdHRyaWJ1dGUubV92YWx1ZS5zaXplKCkpOwotICAgICAgICBjb25zdCBRdWFsaWZp
ZWROYW1lJiBuYW1lID0gbmFtZUZvckF0dHJpYnV0ZShhdHRyaWJ1dGUpOwotICAgICAgICBpZiAo
IWZpbmRBdHRyaWJ1dGVJblZlY3RvcihtX2F0dHJpYnV0ZXMsIG5hbWUpKQotICAgICAgICAgICAg
bV9hdHRyaWJ1dGVzLmFwcGVuZChBdHRyaWJ1dGUobmFtZSwgdmFsdWUpKTsKLSAgICB9Ci19Ci0K
IH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1M
VG9rZW5UeXBlcy5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRva2VuVHlwZXMu
aApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDBiMjQzNWM2MWViNmFlYzJjOGM0MDA5
MjA1MGZjZmMxYzlmNGQwZi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVG9rZW5UeXBlcy5oCisrKyAv
ZGV2L251bGwKQEAgLTEsNDYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBHb29n
bGUsIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuIAotICovCi0KLSNpZm5kZWYgSFRNTFRva2VuVHlwZXNfaAotI2RlZmluZSBIVE1M
VG9rZW5UeXBlc19oCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgSFRNTFRva2VuVHlw
ZXMgewotcHVibGljOgotICAgIGVudW0gVHlwZSB7Ci0gICAgICAgIFVuaW5pdGlhbGl6ZWQsCi0g
ICAgICAgIERPQ1RZUEUsCi0gICAgICAgIFN0YXJ0VGFnLAotICAgICAgICBFbmRUYWcsCi0gICAg
ICAgIENvbW1lbnQsCi0gICAgICAgIENoYXJhY3RlciwKLSAgICAgICAgRW5kT2ZGaWxlLAotICAg
IH07Ci19OwotCi19Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9w
YXJzZXIvSFRNTFRva2VuaXplci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1M
VG9rZW5pemVyLmNwcAppbmRleCAxMDkzODlkZmNhZmM2OThiODBmNGM3YzcyYmMyZmFjNGJlNTM0
NGEzLi5mMGFkZmUzZmY4YTc1MmE4MmY0YWM2MmVkMDAyYWY4YmZiZmI3MGZjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVG9rZW5pemVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVG9rZW5pemVyLmNwcApAQCAtNTYsMTIgKzU2LDEy
IEBAIFF1YWxpZmllZE5hbWUgQXRvbWljSFRNTFRva2VuOjpuYW1lRm9yQXR0cmlidXRlKGNvbnN0
IEhUTUxUb2tlbjo6QXR0cmlidXRlJiBhdHRyCiAKIGJvb2wgQXRvbWljSFRNTFRva2VuOjp1c2Vz
TmFtZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fdHlwZSA9PSBIVE1MVG9rZW5UeXBlczo6U3Rh
cnRUYWcgfHwgbV90eXBlID09IEhUTUxUb2tlblR5cGVzOjpFbmRUYWcgfHwgbV90eXBlID09IEhU
TUxUb2tlblR5cGVzOjpET0NUWVBFOworICAgIHJldHVybiBtX3R5cGUgPT0gSFRNTFRva2VuOjpT
dGFydFRhZyB8fCBtX3R5cGUgPT0gSFRNTFRva2VuOjpFbmRUYWcgfHwgbV90eXBlID09IEhUTUxU
b2tlbjo6RE9DVFlQRTsKIH0KIAogYm9vbCBBdG9taWNIVE1MVG9rZW46OnVzZXNBdHRyaWJ1dGVz
KCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV90eXBlID09IEhUTUxUb2tlblR5cGVzOjpTdGFydFRh
ZyB8fCBtX3R5cGUgPT0gSFRNTFRva2VuVHlwZXM6OkVuZFRhZzsKKyAgICByZXR1cm4gbV90eXBl
ID09IEhUTUxUb2tlbjo6U3RhcnRUYWcgfHwgbV90eXBlID09IEhUTUxUb2tlbjo6RW5kVGFnOwog
fQogCiBzdGF0aWMgaW5saW5lIFVDaGFyIHRvTG93ZXJDYXNlKFVDaGFyIGNjKQpAQCAtMTc4LDkg
KzE3OCw5IEBAIGlubGluZSBib29sIEhUTUxUb2tlbml6ZXI6OnByb2Nlc3NFbnRpdHkoU2VnbWVu
dGVkU3RyaW5nJiBzb3VyY2UpCiAKIGJvb2wgSFRNTFRva2VuaXplcjo6Zmx1c2hCdWZmZXJlZEVu
ZFRhZyhTZWdtZW50ZWRTdHJpbmcmIHNvdXJjZSkKIHsKLSAgICBBU1NFUlQobV90b2tlbi0+dHlw
ZSgpID09IEhUTUxUb2tlblR5cGVzOjpDaGFyYWN0ZXIgfHwgbV90b2tlbi0+dHlwZSgpID09IEhU
TUxUb2tlblR5cGVzOjpVbmluaXRpYWxpemVkKTsKKyAgICBBU1NFUlQobV90b2tlbi0+dHlwZSgp
ID09IEhUTUxUb2tlbjo6Q2hhcmFjdGVyIHx8IG1fdG9rZW4tPnR5cGUoKSA9PSBIVE1MVG9rZW46
OlVuaW5pdGlhbGl6ZWQpOwogICAgIHNvdXJjZS5hZHZhbmNlQW5kVXBkYXRlTGluZU51bWJlcigp
OwotICAgIGlmIChtX3Rva2VuLT50eXBlKCkgPT0gSFRNTFRva2VuVHlwZXM6OkNoYXJhY3RlcikK
KyAgICBpZiAobV90b2tlbi0+dHlwZSgpID09IEhUTUxUb2tlbjo6Q2hhcmFjdGVyKQogICAgICAg
ICByZXR1cm4gdHJ1ZTsKICAgICBtX3Rva2VuLT5iZWdpbkVuZFRhZyhtX2J1ZmZlcmVkRW5kVGFn
TmFtZSk7CiAgICAgbV9idWZmZXJlZEVuZFRhZ05hbWUuY2xlYXIoKTsKQEAgLTIxMiw3ICsyMTIs
NyBAQCBib29sIEhUTUxUb2tlbml6ZXI6Om5leHRUb2tlbihTZWdtZW50ZWRTdHJpbmcmIHNvdXJj
ZSwgSFRNTFRva2VuJiB0b2tlbikKIHsKICAgICAvLyBJZiB3ZSBoYXZlIGEgdG9rZW4gaW4gcHJv
Z3Jlc3MsIHRoZW4gd2UncmUgc3VwcG9zZWQgdG8gYmUgY2FsbGVkIGJhY2sKICAgICAvLyB3aXRo
IHRoZSBzYW1lIHRva2VuIHNvIHdlIGNhbiBmaW5pc2ggaXQuCi0gICAgQVNTRVJUKCFtX3Rva2Vu
IHx8IG1fdG9rZW4gPT0gJnRva2VuIHx8IHRva2VuLnR5cGUoKSA9PSBIVE1MVG9rZW5UeXBlczo6
VW5pbml0aWFsaXplZCk7CisgICAgQVNTRVJUKCFtX3Rva2VuIHx8IG1fdG9rZW4gPT0gJnRva2Vu
IHx8IHRva2VuLnR5cGUoKSA9PSBIVE1MVG9rZW46OlVuaW5pdGlhbGl6ZWQpOwogICAgIG1fdG9r
ZW4gPSAmdG9rZW47CiAKICAgICBpZiAoIW1fYnVmZmVyZWRFbmRUYWdOYW1lLmlzRW1wdHkoKSAm
JiAhaXNFbmRUYWdCdWZmZXJpbmdTdGF0ZShtX3N0YXRlKSkgewpAQCAtMjM4LDcgKzIzOCw3IEBA
IGJvb2wgSFRNTFRva2VuaXplcjo6bmV4dFRva2VuKFNlZ21lbnRlZFN0cmluZyYgc291cmNlLCBI
VE1MVG9rZW4mIHRva2VuKQogICAgICAgICBpZiAoY2MgPT0gJyYnKQogICAgICAgICAgICAgSFRN
TF9BRFZBTkNFX1RPKENoYXJhY3RlclJlZmVyZW5jZUluRGF0YVN0YXRlKTsKICAgICAgICAgZWxz
ZSBpZiAoY2MgPT0gJzwnKSB7Ci0gICAgICAgICAgICBpZiAobV90b2tlbi0+dHlwZSgpID09IEhU
TUxUb2tlblR5cGVzOjpDaGFyYWN0ZXIpIHsKKyAgICAgICAgICAgIGlmIChtX3Rva2VuLT50eXBl
KCkgPT0gSFRNTFRva2VuOjpDaGFyYWN0ZXIpIHsKICAgICAgICAgICAgICAgICAvLyBXZSBoYXZl
IGEgYnVuY2ggb2YgY2hhcmFjdGVyIHRva2VucyBxdWV1ZWQgdXAgdGhhdCB3ZQogICAgICAgICAg
ICAgICAgIC8vIGFyZSBlbWl0dGluZyBsYXppbHkgaGVyZS4KICAgICAgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUb2tl
bml6ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUb2tlbml6ZXIuaAppbmRl
eCAzM2YzODU5OWI5OTBlYjMxOTcyZGIzZGE4YjMxZjUyNjBhYWM5NjBlLi44YTQzZDYwNjgwODk0
YTUxN2FiOTk0NTQ4OWQwOGIyN2VkODg0MjAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3BhcnNlci9IVE1MVG9rZW5pemVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJz
ZXIvSFRNTFRva2VuaXplci5oCkBAIC0yNTMsOCArMjUzLDggQEAgcHJpdmF0ZToKIAogICAgIGlu
bGluZSB2b2lkIHNhdmVFbmRUYWdOYW1lSWZOZWVkZWQoKQogICAgIHsKLSAgICAgICAgQVNTRVJU
KG1fdG9rZW4tPnR5cGUoKSAhPSBIVE1MVG9rZW5UeXBlczo6VW5pbml0aWFsaXplZCk7Ci0gICAg
ICAgIGlmIChtX3Rva2VuLT50eXBlKCkgPT0gSFRNTFRva2VuVHlwZXM6OlN0YXJ0VGFnKQorICAg
ICAgICBBU1NFUlQobV90b2tlbi0+dHlwZSgpICE9IEhUTUxUb2tlbjo6VW5pbml0aWFsaXplZCk7
CisgICAgICAgIGlmIChtX3Rva2VuLT50eXBlKCkgPT0gSFRNTFRva2VuOjpTdGFydFRhZykKICAg
ICAgICAgICAgIG1fYXBwcm9wcmlhdGVFbmRUYWdOYW1lID0gbV90b2tlbi0+bmFtZSgpOwogICAg
IH0KICAgICBpbmxpbmUgYm9vbCBpc0FwcHJvcHJpYXRlRW5kVGFnKCk7CkBAIC0yNjIsNyArMjYy
LDcgQEAgcHJpdmF0ZToKIAogICAgIGlubGluZSBib29sIGhhdmVCdWZmZXJlZENoYXJhY3RlclRv
a2VuKCkKICAgICB7Ci0gICAgICAgIHJldHVybiBtX3Rva2VuLT50eXBlKCkgPT0gSFRNTFRva2Vu
OjpUeXBlOjpDaGFyYWN0ZXI7CisgICAgICAgIHJldHVybiBtX3Rva2VuLT50eXBlKCkgPT0gSFRN
TFRva2VuOjpDaGFyYWN0ZXI7CiAgICAgfQogCiAgICAgU3RhdGUgbV9zdGF0ZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUcmVlQnVpbGRlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVHJlZUJ1aWxkZXIuY3BwCmluZGV4IDg5MTZjYmU5
N2NiNjViOTE5NzQ1MDA4NDYxMWNmMzNiMTc3N2Q0ZGQuLjM5MWUxNjFkOGQzMmM3OWJmOTFhNDc2
ZTZkNjc4OGExNTlkMjA1NmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2Vy
L0hUTUxUcmVlQnVpbGRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRN
TFRyZWVCdWlsZGVyLmNwcApAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgog
I2luY2x1ZGUgIkhUTUxUcmVlQnVpbGRlci5oIgogCisjaW5jbHVkZSAiQXRvbWljSFRNTFRva2Vu
LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRGcmFnbWVudC5oIgogI2luY2x1ZGUgIkhUTUxEb2N1bWVu
dC5oIgogI2luY2x1ZGUgIkhUTUxEb2N1bWVudFBhcnNlci5oIgpAQCAtMzg0LDI5ICszODUsMjkg
QEAgdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OmNvbnN0cnVjdFRyZWUoQXRvbWljSFRNTFRva2VuKiB0
b2tlbikKIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzVG9rZW4oQXRvbWljSFRNTFRva2Vu
KiB0b2tlbikKIHsKICAgICBzd2l0Y2ggKHRva2VuLT50eXBlKCkpIHsKLSAgICBjYXNlIEhUTUxU
b2tlblR5cGVzOjpVbmluaXRpYWxpemVkOgorICAgIGNhc2UgSFRNTFRva2VuOjpVbmluaXRpYWxp
emVkOgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgYnJlYWs7Ci0gICAg
Y2FzZSBIVE1MVG9rZW5UeXBlczo6RE9DVFlQRToKKyAgICBjYXNlIEhUTUxUb2tlbjo6RE9DVFlQ
RToKICAgICAgICAgbV9zaG91bGRTa2lwTGVhZGluZ05ld2xpbmUgPSBmYWxzZTsKICAgICAgICAg
cHJvY2Vzc0RvY3R5cGVUb2tlbih0b2tlbik7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgSFRN
TFRva2VuVHlwZXM6OlN0YXJ0VGFnOgorICAgIGNhc2UgSFRNTFRva2VuOjpTdGFydFRhZzoKICAg
ICAgICAgbV9zaG91bGRTa2lwTGVhZGluZ05ld2xpbmUgPSBmYWxzZTsKICAgICAgICAgcHJvY2Vz
c1N0YXJ0VGFnKHRva2VuKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBIVE1MVG9rZW5UeXBl
czo6RW5kVGFnOgorICAgIGNhc2UgSFRNTFRva2VuOjpFbmRUYWc6CiAgICAgICAgIG1fc2hvdWxk
U2tpcExlYWRpbmdOZXdsaW5lID0gZmFsc2U7CiAgICAgICAgIHByb2Nlc3NFbmRUYWcodG9rZW4p
OwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEhUTUxUb2tlblR5cGVzOjpDb21tZW50OgorICAg
IGNhc2UgSFRNTFRva2VuOjpDb21tZW50OgogICAgICAgICBtX3Nob3VsZFNraXBMZWFkaW5nTmV3
bGluZSA9IGZhbHNlOwogICAgICAgICBwcm9jZXNzQ29tbWVudCh0b2tlbik7CiAgICAgICAgIHJl
dHVybjsKLSAgICBjYXNlIEhUTUxUb2tlblR5cGVzOjpDaGFyYWN0ZXI6CisgICAgY2FzZSBIVE1M
VG9rZW46OkNoYXJhY3RlcjoKICAgICAgICAgcHJvY2Vzc0NoYXJhY3Rlcih0b2tlbik7CiAgICAg
ICAgIGJyZWFrOwotICAgIGNhc2UgSFRNTFRva2VuVHlwZXM6OkVuZE9mRmlsZToKKyAgICBjYXNl
IEhUTUxUb2tlbjo6RW5kT2ZGaWxlOgogICAgICAgICBtX3Nob3VsZFNraXBMZWFkaW5nTmV3bGlu
ZSA9IGZhbHNlOwogICAgICAgICBwcm9jZXNzRW5kT2ZGaWxlKHRva2VuKTsKICAgICAgICAgYnJl
YWs7CkBAIC00MTUsNyArNDE2LDcgQEAgdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NUb2tl
bihBdG9taWNIVE1MVG9rZW4qIHRva2VuKQogCiB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vz
c0RvY3R5cGVUb2tlbihBdG9taWNIVE1MVG9rZW4qIHRva2VuKQogewotICAgIEFTU0VSVCh0b2tl
bi0+dHlwZSgpID09IEhUTUxUb2tlblR5cGVzOjpET0NUWVBFKTsKKyAgICBBU1NFUlQodG9rZW4t
PnR5cGUoKSA9PSBIVE1MVG9rZW46OkRPQ1RZUEUpOwogICAgIGlmIChtX2luc2VydGlvbk1vZGUg
PT0gSW5pdGlhbE1vZGUpIHsKICAgICAgICAgbV90cmVlLmluc2VydERvY3R5cGUodG9rZW4pOwog
ICAgICAgICBzZXRJbnNlcnRpb25Nb2RlKEJlZm9yZUhUTUxNb2RlKTsKQEAgLTQzMiwxMyArNDMz
LDEzIEBAIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzRG9jdHlwZVRva2VuKEF0b21pY0hU
TUxUb2tlbiogdG9rZW4pCiB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0Zha2VTdGFydFRh
Zyhjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBjb25zdCBWZWN0b3I8QXR0cmlidXRlPiYg
YXR0cmlidXRlcykKIHsKICAgICAvLyBGSVhNRTogV2UnbGwgbmVlZCBhIGZhbmNpZXIgY29udmVy
c2lvbiB0aGFuIGp1c3QgImxvY2FsTmFtZSIgZm9yIFNWRy9NYXRoTUwgdGFncy4KLSAgICBSZWZQ
dHI8QXRvbWljSFRNTFRva2VuPiBmYWtlVG9rZW4gPSBBdG9taWNIVE1MVG9rZW46OmNyZWF0ZShI
VE1MVG9rZW5UeXBlczo6U3RhcnRUYWcsIHRhZ05hbWUubG9jYWxOYW1lKCksIGF0dHJpYnV0ZXMp
OworICAgIFJlZlB0cjxBdG9taWNIVE1MVG9rZW4+IGZha2VUb2tlbiA9IEF0b21pY0hUTUxUb2tl
bjo6Y3JlYXRlKEhUTUxUb2tlbjo6U3RhcnRUYWcsIHRhZ05hbWUubG9jYWxOYW1lKCksIGF0dHJp
YnV0ZXMpOwogICAgIHByb2Nlc3NTdGFydFRhZyhmYWtlVG9rZW4uZ2V0KCkpOwogfQogCiB2b2lk
IEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0Zha2VFbmRUYWcoY29uc3QgQXRvbWljU3RyaW5nJiB0
YWdOYW1lKQogewotICAgIFJlZlB0cjxBdG9taWNIVE1MVG9rZW4+IGZha2VUb2tlbiA9IEF0b21p
Y0hUTUxUb2tlbjo6Y3JlYXRlKEhUTUxUb2tlblR5cGVzOjpFbmRUYWcsIHRhZ05hbWUpOworICAg
IFJlZlB0cjxBdG9taWNIVE1MVG9rZW4+IGZha2VUb2tlbiA9IEF0b21pY0hUTUxUb2tlbjo6Y3Jl
YXRlKEhUTUxUb2tlbjo6RW5kVGFnLCB0YWdOYW1lKTsKICAgICBwcm9jZXNzRW5kVGFnKGZha2VU
b2tlbi5nZXQoKSk7CiB9CiAKQEAgLTQ1OSw3ICs0NjAsNyBAQCB2b2lkIEhUTUxUcmVlQnVpbGRl
cjo6cHJvY2Vzc0Zha2VQRW5kVGFnSWZQSW5CdXR0b25TY29wZSgpCiB7CiAgICAgaWYgKCFtX3Ry
ZWUub3BlbkVsZW1lbnRzKCktPmluQnV0dG9uU2NvcGUocFRhZy5sb2NhbE5hbWUoKSkpCiAgICAg
ICAgIHJldHVybjsKLSAgICBSZWZQdHI8QXRvbWljSFRNTFRva2VuPiBlbmRQID0gQXRvbWljSFRN
TFRva2VuOjpjcmVhdGUoSFRNTFRva2VuVHlwZXM6OkVuZFRhZywgcFRhZy5sb2NhbE5hbWUoKSk7
CisgICAgUmVmUHRyPEF0b21pY0hUTUxUb2tlbj4gZW5kUCA9IEF0b21pY0hUTUxUb2tlbjo6Y3Jl
YXRlKEhUTUxUb2tlbjo6RW5kVGFnLCBwVGFnLmxvY2FsTmFtZSgpKTsKICAgICBwcm9jZXNzRW5k
VGFnKGVuZFAuZ2V0KCkpOwogfQogCkBAIC00NzgsNyArNDc5LDcgQEAgVmVjdG9yPEF0dHJpYnV0
ZT4gSFRNTFRyZWVCdWlsZGVyOjphdHRyaWJ1dGVzRm9ySXNpbmRleElucHV0KEF0b21pY0hUTUxU
b2tlbiogdG8KIAogdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NJc2luZGV4U3RhcnRUYWdG
b3JJbkJvZHkoQXRvbWljSFRNTFRva2VuKiB0b2tlbikKIHsKLSAgICBBU1NFUlQodG9rZW4tPnR5
cGUoKSA9PSBIVE1MVG9rZW5UeXBlczo6U3RhcnRUYWcpOworICAgIEFTU0VSVCh0b2tlbi0+dHlw
ZSgpID09IEhUTUxUb2tlbjo6U3RhcnRUYWcpOwogICAgIEFTU0VSVCh0b2tlbi0+bmFtZSgpID09
IGlzaW5kZXhUYWcpOwogICAgIHBhcnNlRXJyb3IodG9rZW4pOwogICAgIGlmIChtX3RyZWUuZm9y
bSgpKQpAQCAtNjMwLDcgKzYzMSw3IEBAIHN0YXRpYyB2b2lkIGFkanVzdEZvcmVpZ25BdHRyaWJ1
dGVzKEF0b21pY0hUTUxUb2tlbiogdG9rZW4pCiAKIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpwcm9j
ZXNzU3RhcnRUYWdGb3JJbkJvZHkoQXRvbWljSFRNTFRva2VuKiB0b2tlbikKIHsKLSAgICBBU1NF
UlQodG9rZW4tPnR5cGUoKSA9PSBIVE1MVG9rZW5UeXBlczo6U3RhcnRUYWcpOworICAgIEFTU0VS
VCh0b2tlbi0+dHlwZSgpID09IEhUTUxUb2tlbjo6U3RhcnRUYWcpOwogICAgIGlmICh0b2tlbi0+
bmFtZSgpID09IGh0bWxUYWcpIHsKICAgICAgICAgcHJvY2Vzc0h0bWxTdGFydFRhZ0ZvckluQm9k
eSh0b2tlbik7CiAgICAgICAgIHJldHVybjsKQEAgLTg5Nyw3ICs4OTgsNyBAQCB2b2lkIEhUTUxU
cmVlQnVpbGRlcjo6cHJvY2Vzc1N0YXJ0VGFnRm9ySW5Cb2R5KEF0b21pY0hUTUxUb2tlbiogdG9r
ZW4pCiAgICAgfQogICAgIGlmICh0b2tlbi0+bmFtZSgpID09IG9wdGdyb3VwVGFnIHx8IHRva2Vu
LT5uYW1lKCkgPT0gb3B0aW9uVGFnKSB7CiAgICAgICAgIGlmIChtX3RyZWUuY3VycmVudFN0YWNr
SXRlbSgpLT5oYXNUYWdOYW1lKG9wdGlvblRhZykpIHsKLSAgICAgICAgICAgIFJlZlB0cjxBdG9t
aWNIVE1MVG9rZW4+IGVuZE9wdGlvbiA9IEF0b21pY0hUTUxUb2tlbjo6Y3JlYXRlKEhUTUxUb2tl
blR5cGVzOjpFbmRUYWcsIG9wdGlvblRhZy5sb2NhbE5hbWUoKSk7CisgICAgICAgICAgICBSZWZQ
dHI8QXRvbWljSFRNTFRva2VuPiBlbmRPcHRpb24gPSBBdG9taWNIVE1MVG9rZW46OmNyZWF0ZShI
VE1MVG9rZW46OkVuZFRhZywgb3B0aW9uVGFnLmxvY2FsTmFtZSgpKTsKICAgICAgICAgICAgIHBy
b2Nlc3NFbmRUYWcoZW5kT3B0aW9uLmdldCgpKTsKICAgICAgICAgfQogICAgICAgICBtX3RyZWUu
cmVjb25zdHJ1Y3RUaGVBY3RpdmVGb3JtYXR0aW5nRWxlbWVudHMoKTsKQEAgLTEwMjEsNyArMTAy
Miw3IEBAIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpjbG9zZVRoZUNlbGwoKQogCiB2b2lkIEhUTUxU
cmVlQnVpbGRlcjo6cHJvY2Vzc1N0YXJ0VGFnRm9ySW5UYWJsZShBdG9taWNIVE1MVG9rZW4qIHRv
a2VuKQogewotICAgIEFTU0VSVCh0b2tlbi0+dHlwZSgpID09IEhUTUxUb2tlblR5cGVzOjpTdGFy
dFRhZyk7CisgICAgQVNTRVJUKHRva2VuLT50eXBlKCkgPT0gSFRNTFRva2VuOjpTdGFydFRhZyk7
CiAgICAgaWYgKHRva2VuLT5uYW1lKCkgPT0gY2FwdGlvblRhZykgewogICAgICAgICBtX3RyZWUu
b3BlbkVsZW1lbnRzKCktPnBvcFVudGlsVGFibGVTY29wZU1hcmtlcigpOwogICAgICAgICBtX3Ry
ZWUuYWN0aXZlRm9ybWF0dGluZ0VsZW1lbnRzKCktPmFwcGVuZE1hcmtlcigpOwpAQCAtMTA5Nyw3
ICsxMDk4LDcgQEAgdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NTdGFydFRhZ0ZvckluVGFi
bGUoQXRvbWljSFRNTFRva2VuKiB0b2tlbikKIAogdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nl
c3NTdGFydFRhZyhBdG9taWNIVE1MVG9rZW4qIHRva2VuKQogewotICAgIEFTU0VSVCh0b2tlbi0+
dHlwZSgpID09IEhUTUxUb2tlblR5cGVzOjpTdGFydFRhZyk7CisgICAgQVNTRVJUKHRva2VuLT50
eXBlKCkgPT0gSFRNTFRva2VuOjpTdGFydFRhZyk7CiAgICAgc3dpdGNoIChpbnNlcnRpb25Nb2Rl
KCkpIHsKICAgICBjYXNlIEluaXRpYWxNb2RlOgogICAgICAgICBBU1NFUlQoaW5zZXJ0aW9uTW9k
ZSgpID09IEluaXRpYWxNb2RlKTsKQEAgLTEzNjYsNyArMTM2Nyw3IEBAIHZvaWQgSFRNTFRyZWVC
dWlsZGVyOjpwcm9jZXNzU3RhcnRUYWcoQXRvbWljSFRNTFRva2VuKiB0b2tlbikKICAgICAgICAg
ICAgIHx8IHRva2VuLT5uYW1lKCkgPT0gdHJUYWcKICAgICAgICAgICAgIHx8IGlzVGFibGVDZWxs
Q29udGV4dFRhZyh0b2tlbi0+bmFtZSgpKSkgewogICAgICAgICAgICAgcGFyc2VFcnJvcih0b2tl
bik7Ci0gICAgICAgICAgICBSZWZQdHI8QXRvbWljSFRNTFRva2VuPiBlbmRTZWxlY3QgPSBBdG9t
aWNIVE1MVG9rZW46OmNyZWF0ZShIVE1MVG9rZW5UeXBlczo6RW5kVGFnLCBzZWxlY3RUYWcubG9j
YWxOYW1lKCkpOworICAgICAgICAgICAgUmVmUHRyPEF0b21pY0hUTUxUb2tlbj4gZW5kU2VsZWN0
ID0gQXRvbWljSFRNTFRva2VuOjpjcmVhdGUoSFRNTFRva2VuOjpFbmRUYWcsIHNlbGVjdFRhZy5s
b2NhbE5hbWUoKSk7CiAgICAgICAgICAgICBwcm9jZXNzRW5kVGFnKGVuZFNlbGVjdC5nZXQoKSk7
CiAgICAgICAgICAgICBwcm9jZXNzU3RhcnRUYWcodG9rZW4pOwogICAgICAgICAgICAgcmV0dXJu
OwpAQCAtMTM4MCw3ICsxMzgxLDcgQEAgdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NTdGFy
dFRhZyhBdG9taWNIVE1MVG9rZW4qIHRva2VuKQogICAgICAgICB9CiAgICAgICAgIGlmICh0b2tl
bi0+bmFtZSgpID09IG9wdGlvblRhZykgewogICAgICAgICAgICAgaWYgKG1fdHJlZS5jdXJyZW50
U3RhY2tJdGVtKCktPmhhc1RhZ05hbWUob3B0aW9uVGFnKSkgewotICAgICAgICAgICAgICAgIFJl
ZlB0cjxBdG9taWNIVE1MVG9rZW4+IGVuZE9wdGlvbiA9IEF0b21pY0hUTUxUb2tlbjo6Y3JlYXRl
KEhUTUxUb2tlblR5cGVzOjpFbmRUYWcsIG9wdGlvblRhZy5sb2NhbE5hbWUoKSk7CisgICAgICAg
ICAgICAgICAgUmVmUHRyPEF0b21pY0hUTUxUb2tlbj4gZW5kT3B0aW9uID0gQXRvbWljSFRNTFRv
a2VuOjpjcmVhdGUoSFRNTFRva2VuOjpFbmRUYWcsIG9wdGlvblRhZy5sb2NhbE5hbWUoKSk7CiAg
ICAgICAgICAgICAgICAgcHJvY2Vzc0VuZFRhZyhlbmRPcHRpb24uZ2V0KCkpOwogICAgICAgICAg
ICAgfQogICAgICAgICAgICAgbV90cmVlLmluc2VydEhUTUxFbGVtZW50KHRva2VuKTsKQEAgLTEz
ODgsMTEgKzEzODksMTEgQEAgdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NTdGFydFRhZyhB
dG9taWNIVE1MVG9rZW4qIHRva2VuKQogICAgICAgICB9CiAgICAgICAgIGlmICh0b2tlbi0+bmFt
ZSgpID09IG9wdGdyb3VwVGFnKSB7CiAgICAgICAgICAgICBpZiAobV90cmVlLmN1cnJlbnRTdGFj
a0l0ZW0oKS0+aGFzVGFnTmFtZShvcHRpb25UYWcpKSB7Ci0gICAgICAgICAgICAgICAgUmVmUHRy
PEF0b21pY0hUTUxUb2tlbj4gZW5kT3B0aW9uID0gQXRvbWljSFRNTFRva2VuOjpjcmVhdGUoSFRN
TFRva2VuVHlwZXM6OkVuZFRhZywgb3B0aW9uVGFnLmxvY2FsTmFtZSgpKTsKKyAgICAgICAgICAg
ICAgICBSZWZQdHI8QXRvbWljSFRNTFRva2VuPiBlbmRPcHRpb24gPSBBdG9taWNIVE1MVG9rZW46
OmNyZWF0ZShIVE1MVG9rZW46OkVuZFRhZywgb3B0aW9uVGFnLmxvY2FsTmFtZSgpKTsKICAgICAg
ICAgICAgICAgICBwcm9jZXNzRW5kVGFnKGVuZE9wdGlvbi5nZXQoKSk7CiAgICAgICAgICAgICB9
CiAgICAgICAgICAgICBpZiAobV90cmVlLmN1cnJlbnRTdGFja0l0ZW0oKS0+aGFzVGFnTmFtZShv
cHRncm91cFRhZykpIHsKLSAgICAgICAgICAgICAgICBSZWZQdHI8QXRvbWljSFRNTFRva2VuPiBl
bmRPcHRncm91cCA9IEF0b21pY0hUTUxUb2tlbjo6Y3JlYXRlKEhUTUxUb2tlblR5cGVzOjpFbmRU
YWcsIG9wdGdyb3VwVGFnLmxvY2FsTmFtZSgpKTsKKyAgICAgICAgICAgICAgICBSZWZQdHI8QXRv
bWljSFRNTFRva2VuPiBlbmRPcHRncm91cCA9IEF0b21pY0hUTUxUb2tlbjo6Y3JlYXRlKEhUTUxU
b2tlbjo6RW5kVGFnLCBvcHRncm91cFRhZy5sb2NhbE5hbWUoKSk7CiAgICAgICAgICAgICAgICAg
cHJvY2Vzc0VuZFRhZyhlbmRPcHRncm91cC5nZXQoKSk7CiAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICBtX3RyZWUuaW5zZXJ0SFRNTEVsZW1lbnQodG9rZW4pOwpAQCAtMTQwMCw3ICsxNDAxLDcg
QEAgdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NTdGFydFRhZyhBdG9taWNIVE1MVG9rZW4q
IHRva2VuKQogICAgICAgICB9CiAgICAgICAgIGlmICh0b2tlbi0+bmFtZSgpID09IHNlbGVjdFRh
ZykgewogICAgICAgICAgICAgcGFyc2VFcnJvcih0b2tlbik7Ci0gICAgICAgICAgICBSZWZQdHI8
QXRvbWljSFRNTFRva2VuPiBlbmRTZWxlY3QgPSBBdG9taWNIVE1MVG9rZW46OmNyZWF0ZShIVE1M
VG9rZW5UeXBlczo6RW5kVGFnLCBzZWxlY3RUYWcubG9jYWxOYW1lKCkpOworICAgICAgICAgICAg
UmVmUHRyPEF0b21pY0hUTUxUb2tlbj4gZW5kU2VsZWN0ID0gQXRvbWljSFRNTFRva2VuOjpjcmVh
dGUoSFRNTFRva2VuOjpFbmRUYWcsIHNlbGVjdFRhZy5sb2NhbE5hbWUoKSk7CiAgICAgICAgICAg
ICBwcm9jZXNzRW5kVGFnKGVuZFNlbGVjdC5nZXQoKSk7CiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIH0KQEAgLTE0MTIsNyArMTQxMyw3IEBAIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpwcm9j
ZXNzU3RhcnRUYWcoQXRvbWljSFRNTFRva2VuKiB0b2tlbikKICAgICAgICAgICAgICAgICBBU1NF
UlQoaXNQYXJzaW5nRnJhZ21lbnQoKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICAgICAgfQotICAgICAgICAgICAgUmVmUHRyPEF0b21pY0hUTUxUb2tlbj4gZW5kU2VsZWN0ID0g
QXRvbWljSFRNTFRva2VuOjpjcmVhdGUoSFRNTFRva2VuVHlwZXM6OkVuZFRhZywgc2VsZWN0VGFn
LmxvY2FsTmFtZSgpKTsKKyAgICAgICAgICAgIFJlZlB0cjxBdG9taWNIVE1MVG9rZW4+IGVuZFNl
bGVjdCA9IEF0b21pY0hUTUxUb2tlbjo6Y3JlYXRlKEhUTUxUb2tlbjo6RW5kVGFnLCBzZWxlY3RU
YWcubG9jYWxOYW1lKCkpOwogICAgICAgICAgICAgcHJvY2Vzc0VuZFRhZyhlbmRTZWxlY3QuZ2V0
KCkpOwogICAgICAgICAgICAgcHJvY2Vzc1N0YXJ0VGFnKHRva2VuKTsKICAgICAgICAgICAgIHJl
dHVybjsKQEAgLTE0OTIsNyArMTQ5Myw3IEBAIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNz
SHRtbFN0YXJ0VGFnRm9ySW5Cb2R5KEF0b21pY0hUTUxUb2tlbiogdG9rZW4pCiAKIGJvb2wgSFRN
TFRyZWVCdWlsZGVyOjpwcm9jZXNzQm9keUVuZFRhZ0ZvckluQm9keShBdG9taWNIVE1MVG9rZW4q
IHRva2VuKQogewotICAgIEFTU0VSVCh0b2tlbi0+dHlwZSgpID09IEhUTUxUb2tlblR5cGVzOjpF
bmRUYWcpOworICAgIEFTU0VSVCh0b2tlbi0+dHlwZSgpID09IEhUTUxUb2tlbjo6RW5kVGFnKTsK
ICAgICBBU1NFUlQodG9rZW4tPm5hbWUoKSA9PSBib2R5VGFnKTsKICAgICBpZiAoIW1fdHJlZS5v
cGVuRWxlbWVudHMoKS0+aW5TY29wZShib2R5VGFnLmxvY2FsTmFtZSgpKSkgewogICAgICAgICBw
YXJzZUVycm9yKHRva2VuKTsKQEAgLTE1MDUsNyArMTUwNiw3IEBAIGJvb2wgSFRNTFRyZWVCdWls
ZGVyOjpwcm9jZXNzQm9keUVuZFRhZ0ZvckluQm9keShBdG9taWNIVE1MVG9rZW4qIHRva2VuKQog
CiB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0FueU90aGVyRW5kVGFnRm9ySW5Cb2R5KEF0
b21pY0hUTUxUb2tlbiogdG9rZW4pCiB7Ci0gICAgQVNTRVJUKHRva2VuLT50eXBlKCkgPT0gSFRN
TFRva2VuVHlwZXM6OkVuZFRhZyk7CisgICAgQVNTRVJUKHRva2VuLT50eXBlKCkgPT0gSFRNTFRv
a2VuOjpFbmRUYWcpOwogICAgIEhUTUxFbGVtZW50U3RhY2s6OkVsZW1lbnRSZWNvcmQqIHJlY29y
ZCA9IG1fdHJlZS5vcGVuRWxlbWVudHMoKS0+dG9wUmVjb3JkKCk7CiAgICAgd2hpbGUgKDEpIHsK
ICAgICAgICAgUmVmUHRyPEhUTUxTdGFja0l0ZW0+IGl0ZW0gPSByZWNvcmQtPnN0YWNrSXRlbSgp
OwpAQCAtMTcwOSw3ICsxNzEwLDcgQEAgdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnJlc2V0SW5zZXJ0
aW9uTW9kZUFwcHJvcHJpYXRlbHkoKQogCiB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0Vu
ZFRhZ0ZvckluVGFibGVCb2R5KEF0b21pY0hUTUxUb2tlbiogdG9rZW4pCiB7Ci0gICAgQVNTRVJU
KHRva2VuLT50eXBlKCkgPT0gSFRNTFRva2VuVHlwZXM6OkVuZFRhZyk7CisgICAgQVNTRVJUKHRv
a2VuLT50eXBlKCkgPT0gSFRNTFRva2VuOjpFbmRUYWcpOwogICAgIGlmIChpc1RhYmxlQm9keUNv
bnRleHRUYWcodG9rZW4tPm5hbWUoKSkpIHsKICAgICAgICAgaWYgKCFtX3RyZWUub3BlbkVsZW1l
bnRzKCktPmluVGFibGVTY29wZSh0b2tlbi0+bmFtZSgpKSkgewogICAgICAgICAgICAgcGFyc2VF
cnJvcih0b2tlbik7CkBAIC0xNzQ2LDcgKzE3NDcsNyBAQCB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6
cHJvY2Vzc0VuZFRhZ0ZvckluVGFibGVCb2R5KEF0b21pY0hUTUxUb2tlbiogdG9rZW4pCiAKIHZv
aWQgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzRW5kVGFnRm9ySW5Sb3coQXRvbWljSFRNTFRva2Vu
KiB0b2tlbikKIHsKLSAgICBBU1NFUlQodG9rZW4tPnR5cGUoKSA9PSBIVE1MVG9rZW5UeXBlczo6
RW5kVGFnKTsKKyAgICBBU1NFUlQodG9rZW4tPnR5cGUoKSA9PSBIVE1MVG9rZW46OkVuZFRhZyk7
CiAgICAgaWYgKHRva2VuLT5uYW1lKCkgPT0gdHJUYWcpIHsKICAgICAgICAgcHJvY2Vzc1RyRW5k
VGFnRm9ySW5Sb3coKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMTc4Miw3ICsxNzgzLDcgQEAgdm9p
ZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NFbmRUYWdGb3JJblJvdyhBdG9taWNIVE1MVG9rZW4q
IHRva2VuKQogCiB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0VuZFRhZ0ZvckluQ2VsbChB
dG9taWNIVE1MVG9rZW4qIHRva2VuKQogewotICAgIEFTU0VSVCh0b2tlbi0+dHlwZSgpID09IEhU
TUxUb2tlblR5cGVzOjpFbmRUYWcpOworICAgIEFTU0VSVCh0b2tlbi0+dHlwZSgpID09IEhUTUxU
b2tlbjo6RW5kVGFnKTsKICAgICBpZiAoaXNUYWJsZUNlbGxDb250ZXh0VGFnKHRva2VuLT5uYW1l
KCkpKSB7CiAgICAgICAgIGlmICghbV90cmVlLm9wZW5FbGVtZW50cygpLT5pblRhYmxlU2NvcGUo
dG9rZW4tPm5hbWUoKSkpIHsKICAgICAgICAgICAgIHBhcnNlRXJyb3IodG9rZW4pOwpAQCAtMTgy
MywxMyArMTgyNCwxMyBAQCB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0VuZFRhZ0Zvcklu
Q2VsbChBdG9taWNIVE1MVG9rZW4qIHRva2VuKQogCiB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJv
Y2Vzc0VuZFRhZ0ZvckluQm9keShBdG9taWNIVE1MVG9rZW4qIHRva2VuKQogewotICAgIEFTU0VS
VCh0b2tlbi0+dHlwZSgpID09IEhUTUxUb2tlblR5cGVzOjpFbmRUYWcpOworICAgIEFTU0VSVCh0
b2tlbi0+dHlwZSgpID09IEhUTUxUb2tlbjo6RW5kVGFnKTsKICAgICBpZiAodG9rZW4tPm5hbWUo
KSA9PSBib2R5VGFnKSB7CiAgICAgICAgIHByb2Nlc3NCb2R5RW5kVGFnRm9ySW5Cb2R5KHRva2Vu
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBpZiAodG9rZW4tPm5hbWUoKSA9PSBodG1s
VGFnKSB7Ci0gICAgICAgIFJlZlB0cjxBdG9taWNIVE1MVG9rZW4+IGVuZEJvZHkgPSBBdG9taWNI
VE1MVG9rZW46OmNyZWF0ZShIVE1MVG9rZW5UeXBlczo6RW5kVGFnLCBib2R5VGFnLmxvY2FsTmFt
ZSgpKTsKKyAgICAgICAgUmVmUHRyPEF0b21pY0hUTUxUb2tlbj4gZW5kQm9keSA9IEF0b21pY0hU
TUxUb2tlbjo6Y3JlYXRlKEhUTUxUb2tlbjo6RW5kVGFnLCBib2R5VGFnLmxvY2FsTmFtZSgpKTsK
ICAgICAgICAgaWYgKHByb2Nlc3NCb2R5RW5kVGFnRm9ySW5Cb2R5KGVuZEJvZHkuZ2V0KCkpKQog
ICAgICAgICAgICAgcHJvY2Vzc0VuZFRhZyh0b2tlbik7CiAgICAgICAgIHJldHVybjsKQEAgLTIw
MDMsNyArMjAwNCw3IEBAIGJvb2wgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzVGFibGVFbmRUYWdG
b3JJblRhYmxlKCkKIAogdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NFbmRUYWdGb3JJblRh
YmxlKEF0b21pY0hUTUxUb2tlbiogdG9rZW4pCiB7Ci0gICAgQVNTRVJUKHRva2VuLT50eXBlKCkg
PT0gSFRNTFRva2VuVHlwZXM6OkVuZFRhZyk7CisgICAgQVNTRVJUKHRva2VuLT50eXBlKCkgPT0g
SFRNTFRva2VuOjpFbmRUYWcpOwogICAgIGlmICh0b2tlbi0+bmFtZSgpID09IHRhYmxlVGFnKSB7
CiAgICAgICAgIHByb2Nlc3NUYWJsZUVuZFRhZ0ZvckluVGFibGUoKTsKICAgICAgICAgcmV0dXJu
OwpAQCAtMjAyNSw3ICsyMDI2LDcgQEAgdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NFbmRU
YWdGb3JJblRhYmxlKEF0b21pY0hUTUxUb2tlbiogdG9rZW4pCiAKIHZvaWQgSFRNTFRyZWVCdWls
ZGVyOjpwcm9jZXNzRW5kVGFnKEF0b21pY0hUTUxUb2tlbiogdG9rZW4pCiB7Ci0gICAgQVNTRVJU
KHRva2VuLT50eXBlKCkgPT0gSFRNTFRva2VuVHlwZXM6OkVuZFRhZyk7CisgICAgQVNTRVJUKHRv
a2VuLT50eXBlKCkgPT0gSFRNTFRva2VuOjpFbmRUYWcpOwogICAgIHN3aXRjaCAoaW5zZXJ0aW9u
TW9kZSgpKSB7CiAgICAgY2FzZSBJbml0aWFsTW9kZToKICAgICAgICAgQVNTRVJUKGluc2VydGlv
bk1vZGUoKSA9PSBJbml0aWFsTW9kZSk7CkBAIC0yMjQ2LDcgKzIyNDcsNyBAQCB2b2lkIEhUTUxU
cmVlQnVpbGRlcjo6cHJvY2Vzc0VuZFRhZyhBdG9taWNIVE1MVG9rZW4qIHRva2VuKQogICAgICAg
ICAgICAgfHwgaXNUYWJsZUNlbGxDb250ZXh0VGFnKHRva2VuLT5uYW1lKCkpKSB7CiAgICAgICAg
ICAgICBwYXJzZUVycm9yKHRva2VuKTsKICAgICAgICAgICAgIGlmIChtX3RyZWUub3BlbkVsZW1l
bnRzKCktPmluVGFibGVTY29wZSh0b2tlbi0+bmFtZSgpKSkgewotICAgICAgICAgICAgICAgIFJl
ZlB0cjxBdG9taWNIVE1MVG9rZW4+IGVuZFNlbGVjdCA9IEF0b21pY0hUTUxUb2tlbjo6Y3JlYXRl
KEhUTUxUb2tlblR5cGVzOjpFbmRUYWcsIHNlbGVjdFRhZy5sb2NhbE5hbWUoKSk7CisgICAgICAg
ICAgICAgICAgUmVmUHRyPEF0b21pY0hUTUxUb2tlbj4gZW5kU2VsZWN0ID0gQXRvbWljSFRNTFRv
a2VuOjpjcmVhdGUoSFRNTFRva2VuOjpFbmRUYWcsIHNlbGVjdFRhZy5sb2NhbE5hbWUoKSk7CiAg
ICAgICAgICAgICAgICAgcHJvY2Vzc0VuZFRhZyhlbmRTZWxlY3QuZ2V0KCkpOwogICAgICAgICAg
ICAgICAgIHByb2Nlc3NFbmRUYWcodG9rZW4pOwogICAgICAgICAgICAgfQpAQCAtMjMxMSw3ICsy
MzEyLDcgQEAgdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NFbmRUYWcoQXRvbWljSFRNTFRv
a2VuKiB0b2tlbikKIAogdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NDb21tZW50KEF0b21p
Y0hUTUxUb2tlbiogdG9rZW4pCiB7Ci0gICAgQVNTRVJUKHRva2VuLT50eXBlKCkgPT0gSFRNTFRv
a2VuVHlwZXM6OkNvbW1lbnQpOworICAgIEFTU0VSVCh0b2tlbi0+dHlwZSgpID09IEhUTUxUb2tl
bjo6Q29tbWVudCk7CiAgICAgaWYgKG1faW5zZXJ0aW9uTW9kZSA9PSBJbml0aWFsTW9kZQogICAg
ICAgICB8fCBtX2luc2VydGlvbk1vZGUgPT0gQmVmb3JlSFRNTE1vZGUKICAgICAgICAgfHwgbV9p
bnNlcnRpb25Nb2RlID09IEFmdGVyQWZ0ZXJCb2R5TW9kZQpAQCAtMjMzMyw3ICsyMzM0LDcgQEAg
dm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NDb21tZW50KEF0b21pY0hUTUxUb2tlbiogdG9r
ZW4pCiAKIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzQ2hhcmFjdGVyKEF0b21pY0hUTUxU
b2tlbiogdG9rZW4pCiB7Ci0gICAgQVNTRVJUKHRva2VuLT50eXBlKCkgPT0gSFRNTFRva2VuVHlw
ZXM6OkNoYXJhY3Rlcik7CisgICAgQVNTRVJUKHRva2VuLT50eXBlKCkgPT0gSFRNTFRva2VuOjpD
aGFyYWN0ZXIpOwogICAgIEV4dGVybmFsQ2hhcmFjdGVyVG9rZW5CdWZmZXIgYnVmZmVyKHRva2Vu
KTsKICAgICBwcm9jZXNzQ2hhcmFjdGVyQnVmZmVyKGJ1ZmZlcik7CiB9CkBAIC0yNjQyLDMyICsy
NjQzLDMyIEBAIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpkZWZhdWx0Rm9ySW5pdGlhbCgpCiAKIHZv
aWQgSFRNTFRyZWVCdWlsZGVyOjpkZWZhdWx0Rm9yQmVmb3JlSFRNTCgpCiB7Ci0gICAgUmVmUHRy
PEF0b21pY0hUTUxUb2tlbj4gc3RhcnRIVE1MID0gQXRvbWljSFRNTFRva2VuOjpjcmVhdGUoSFRN
TFRva2VuVHlwZXM6OlN0YXJ0VGFnLCBodG1sVGFnLmxvY2FsTmFtZSgpKTsKKyAgICBSZWZQdHI8
QXRvbWljSFRNTFRva2VuPiBzdGFydEhUTUwgPSBBdG9taWNIVE1MVG9rZW46OmNyZWF0ZShIVE1M
VG9rZW46OlN0YXJ0VGFnLCBodG1sVGFnLmxvY2FsTmFtZSgpKTsKICAgICBtX3RyZWUuaW5zZXJ0
SFRNTEh0bWxTdGFydFRhZ0JlZm9yZUhUTUwoc3RhcnRIVE1MLmdldCgpKTsKICAgICBzZXRJbnNl
cnRpb25Nb2RlKEJlZm9yZUhlYWRNb2RlKTsKIH0KIAogdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OmRl
ZmF1bHRGb3JCZWZvcmVIZWFkKCkKIHsKLSAgICBSZWZQdHI8QXRvbWljSFRNTFRva2VuPiBzdGFy
dEhlYWQgPSBBdG9taWNIVE1MVG9rZW46OmNyZWF0ZShIVE1MVG9rZW5UeXBlczo6U3RhcnRUYWcs
IGhlYWRUYWcubG9jYWxOYW1lKCkpOworICAgIFJlZlB0cjxBdG9taWNIVE1MVG9rZW4+IHN0YXJ0
SGVhZCA9IEF0b21pY0hUTUxUb2tlbjo6Y3JlYXRlKEhUTUxUb2tlbjo6U3RhcnRUYWcsIGhlYWRU
YWcubG9jYWxOYW1lKCkpOwogICAgIHByb2Nlc3NTdGFydFRhZyhzdGFydEhlYWQuZ2V0KCkpOwog
fQogCiB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6ZGVmYXVsdEZvckluSGVhZCgpCiB7Ci0gICAgUmVm
UHRyPEF0b21pY0hUTUxUb2tlbj4gZW5kSGVhZCA9IEF0b21pY0hUTUxUb2tlbjo6Y3JlYXRlKEhU
TUxUb2tlblR5cGVzOjpFbmRUYWcsIGhlYWRUYWcubG9jYWxOYW1lKCkpOworICAgIFJlZlB0cjxB
dG9taWNIVE1MVG9rZW4+IGVuZEhlYWQgPSBBdG9taWNIVE1MVG9rZW46OmNyZWF0ZShIVE1MVG9r
ZW46OkVuZFRhZywgaGVhZFRhZy5sb2NhbE5hbWUoKSk7CiAgICAgcHJvY2Vzc0VuZFRhZyhlbmRI
ZWFkLmdldCgpKTsKIH0KIAogdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OmRlZmF1bHRGb3JJbkhlYWRO
b3NjcmlwdCgpCiB7Ci0gICAgUmVmUHRyPEF0b21pY0hUTUxUb2tlbj4gZW5kTm9zY3JpcHQgPSBB
dG9taWNIVE1MVG9rZW46OmNyZWF0ZShIVE1MVG9rZW5UeXBlczo6RW5kVGFnLCBub3NjcmlwdFRh
Zy5sb2NhbE5hbWUoKSk7CisgICAgUmVmUHRyPEF0b21pY0hUTUxUb2tlbj4gZW5kTm9zY3JpcHQg
PSBBdG9taWNIVE1MVG9rZW46OmNyZWF0ZShIVE1MVG9rZW46OkVuZFRhZywgbm9zY3JpcHRUYWcu
bG9jYWxOYW1lKCkpOwogICAgIHByb2Nlc3NFbmRUYWcoZW5kTm9zY3JpcHQuZ2V0KCkpOwogfQog
CiB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6ZGVmYXVsdEZvckFmdGVySGVhZCgpCiB7Ci0gICAgUmVm
UHRyPEF0b21pY0hUTUxUb2tlbj4gc3RhcnRCb2R5ID0gQXRvbWljSFRNTFRva2VuOjpjcmVhdGUo
SFRNTFRva2VuVHlwZXM6OlN0YXJ0VGFnLCBib2R5VGFnLmxvY2FsTmFtZSgpKTsKKyAgICBSZWZQ
dHI8QXRvbWljSFRNTFRva2VuPiBzdGFydEJvZHkgPSBBdG9taWNIVE1MVG9rZW46OmNyZWF0ZShI
VE1MVG9rZW46OlN0YXJ0VGFnLCBib2R5VGFnLmxvY2FsTmFtZSgpKTsKICAgICBwcm9jZXNzU3Rh
cnRUYWcoc3RhcnRCb2R5LmdldCgpKTsKICAgICBtX2ZyYW1lc2V0T2sgPSB0cnVlOwogfQpAQCAt
MjY5MSw3ICsyNjkyLDcgQEAgdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OmRlZmF1bHRGb3JJblRhYmxl
VGV4dCgpCiAKIGJvb2wgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzU3RhcnRUYWdGb3JJbkhlYWQo
QXRvbWljSFRNTFRva2VuKiB0b2tlbikKIHsKLSAgICBBU1NFUlQodG9rZW4tPnR5cGUoKSA9PSBI
VE1MVG9rZW5UeXBlczo6U3RhcnRUYWcpOworICAgIEFTU0VSVCh0b2tlbi0+dHlwZSgpID09IEhU
TUxUb2tlbjo6U3RhcnRUYWcpOwogICAgIGlmICh0b2tlbi0+bmFtZSgpID09IGh0bWxUYWcpIHsK
ICAgICAgICAgcHJvY2Vzc0h0bWxTdGFydFRhZ0ZvckluQm9keSh0b2tlbik7CiAgICAgICAgIHJl
dHVybiB0cnVlOwpAQCAtMjc0NCw3ICsyNzQ1LDcgQEAgYm9vbCBIVE1MVHJlZUJ1aWxkZXI6OnBy
b2Nlc3NTdGFydFRhZ0ZvckluSGVhZChBdG9taWNIVE1MVG9rZW4qIHRva2VuKQogCiB2b2lkIEhU
TUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0dlbmVyaWNSQ0RBVEFTdGFydFRhZyhBdG9taWNIVE1MVG9r
ZW4qIHRva2VuKQogewotICAgIEFTU0VSVCh0b2tlbi0+dHlwZSgpID09IEhUTUxUb2tlblR5cGVz
OjpTdGFydFRhZyk7CisgICAgQVNTRVJUKHRva2VuLT50eXBlKCkgPT0gSFRNTFRva2VuOjpTdGFy
dFRhZyk7CiAgICAgbV90cmVlLmluc2VydEhUTUxFbGVtZW50KHRva2VuKTsKICAgICBpZiAobV9w
YXJzZXItPnRva2VuaXplcigpKQogICAgICAgICBtX3BhcnNlci0+dG9rZW5pemVyKCktPnNldFN0
YXRlKEhUTUxUb2tlbml6ZXI6OlJDREFUQVN0YXRlKTsKQEAgLTI3NTQsNyArMjc1NSw3IEBAIHZv
aWQgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzR2VuZXJpY1JDREFUQVN0YXJ0VGFnKEF0b21pY0hU
TUxUb2tlbiogdG9rZW4pCiAKIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzR2VuZXJpY1Jh
d1RleHRTdGFydFRhZyhBdG9taWNIVE1MVG9rZW4qIHRva2VuKQogewotICAgIEFTU0VSVCh0b2tl
bi0+dHlwZSgpID09IEhUTUxUb2tlblR5cGVzOjpTdGFydFRhZyk7CisgICAgQVNTRVJUKHRva2Vu
LT50eXBlKCkgPT0gSFRNTFRva2VuOjpTdGFydFRhZyk7CiAgICAgbV90cmVlLmluc2VydEhUTUxF
bGVtZW50KHRva2VuKTsKICAgICBpZiAobV9wYXJzZXItPnRva2VuaXplcigpKQogICAgICAgICBt
X3BhcnNlci0+dG9rZW5pemVyKCktPnNldFN0YXRlKEhUTUxUb2tlbml6ZXI6OlJBV1RFWFRTdGF0
ZSk7CkBAIC0yNzY0LDcgKzI3NjUsNyBAQCB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0dl
bmVyaWNSYXdUZXh0U3RhcnRUYWcoQXRvbWljSFRNTFRva2VuKiB0b2tlbikKIAogdm9pZCBIVE1M
VHJlZUJ1aWxkZXI6OnByb2Nlc3NTY3JpcHRTdGFydFRhZyhBdG9taWNIVE1MVG9rZW4qIHRva2Vu
KQogewotICAgIEFTU0VSVCh0b2tlbi0+dHlwZSgpID09IEhUTUxUb2tlblR5cGVzOjpTdGFydFRh
Zyk7CisgICAgQVNTRVJUKHRva2VuLT50eXBlKCkgPT0gSFRNTFRva2VuOjpTdGFydFRhZyk7CiAg
ICAgbV90cmVlLmluc2VydFNjcmlwdEVsZW1lbnQodG9rZW4pOwogICAgIGlmIChtX3BhcnNlci0+
dG9rZW5pemVyKCkpCiAgICAgICAgIG1fcGFyc2VyLT50b2tlbml6ZXIoKS0+c2V0U3RhdGUoSFRN
TFRva2VuaXplcjo6U2NyaXB0RGF0YVN0YXRlKTsKQEAgLTI3ODYsMjQgKzI3ODcsMjQgQEAgYm9v
bCBIVE1MVHJlZUJ1aWxkZXI6OnNob3VsZFByb2Nlc3NUb2tlbkluRm9yZWlnbkNvbnRlbnQoQXRv
bWljSFRNTFRva2VuKiB0b2tlbikKICAgICBpZiAoaXRlbS0+aXNJbkhUTUxOYW1lc3BhY2UoKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmIChIVE1MRWxlbWVudFN0YWNrOjppc01hdGhN
TFRleHRJbnRlZ3JhdGlvblBvaW50KGl0ZW0pKSB7Ci0gICAgICAgIGlmICh0b2tlbi0+dHlwZSgp
ID09IEhUTUxUb2tlblR5cGVzOjpTdGFydFRhZworICAgICAgICBpZiAodG9rZW4tPnR5cGUoKSA9
PSBIVE1MVG9rZW46OlN0YXJ0VGFnCiAgICAgICAgICAgICAmJiB0b2tlbi0+bmFtZSgpICE9IE1h
dGhNTE5hbWVzOjptZ2x5cGhUYWcKICAgICAgICAgICAgICYmIHRva2VuLT5uYW1lKCkgIT0gTWF0
aE1MTmFtZXM6Om1hbGlnbm1hcmtUYWcpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
ICAgIGlmICh0b2tlbi0+dHlwZSgpID09IEhUTUxUb2tlblR5cGVzOjpDaGFyYWN0ZXIpCisgICAg
ICAgIGlmICh0b2tlbi0+dHlwZSgpID09IEhUTUxUb2tlbjo6Q2hhcmFjdGVyKQogICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICBpZiAoaXRlbS0+aGFzVGFnTmFtZShNYXRoTUxO
YW1lczo6YW5ub3RhdGlvbl94bWxUYWcpCi0gICAgICAgICYmIHRva2VuLT50eXBlKCkgPT0gSFRN
TFRva2VuVHlwZXM6OlN0YXJ0VGFnCisgICAgICAgICYmIHRva2VuLT50eXBlKCkgPT0gSFRNTFRv
a2VuOjpTdGFydFRhZwogICAgICAgICAmJiB0b2tlbi0+bmFtZSgpID09IFNWR05hbWVzOjpzdmdU
YWcpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoSFRNTEVsZW1lbnRTdGFjazo6aXNI
VE1MSW50ZWdyYXRpb25Qb2ludChpdGVtKSkgewotICAgICAgICBpZiAodG9rZW4tPnR5cGUoKSA9
PSBIVE1MVG9rZW5UeXBlczo6U3RhcnRUYWcpCisgICAgICAgIGlmICh0b2tlbi0+dHlwZSgpID09
IEhUTUxUb2tlbjo6U3RhcnRUYWcpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAg
IGlmICh0b2tlbi0+dHlwZSgpID09IEhUTUxUb2tlblR5cGVzOjpDaGFyYWN0ZXIpCisgICAgICAg
IGlmICh0b2tlbi0+dHlwZSgpID09IEhUTUxUb2tlbjo6Q2hhcmFjdGVyKQogICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIH0KLSAgICBpZiAodG9rZW4tPnR5cGUoKSA9PSBIVE1MVG9rZW5U
eXBlczo6RW5kT2ZGaWxlKQorICAgIGlmICh0b2tlbi0+dHlwZSgpID09IEhUTUxUb2tlbjo6RW5k
T2ZGaWxlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC0y
ODExLDEzICsyODEyLDEzIEBAIGJvb2wgSFRNTFRyZWVCdWlsZGVyOjpzaG91bGRQcm9jZXNzVG9r
ZW5JbkZvcmVpZ25Db250ZW50KEF0b21pY0hUTUxUb2tlbiogdG9rZW4pCiB2b2lkIEhUTUxUcmVl
QnVpbGRlcjo6cHJvY2Vzc1Rva2VuSW5Gb3JlaWduQ29udGVudChBdG9taWNIVE1MVG9rZW4qIHRv
a2VuKQogewogICAgIHN3aXRjaCAodG9rZW4tPnR5cGUoKSkgewotICAgIGNhc2UgSFRNTFRva2Vu
VHlwZXM6OlVuaW5pdGlhbGl6ZWQ6CisgICAgY2FzZSBIVE1MVG9rZW46OlVuaW5pdGlhbGl6ZWQ6
CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICBicmVhazsKLSAgICBjYXNl
IEhUTUxUb2tlblR5cGVzOjpET0NUWVBFOgorICAgIGNhc2UgSFRNTFRva2VuOjpET0NUWVBFOgog
ICAgICAgICBwYXJzZUVycm9yKHRva2VuKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBIVE1M
VG9rZW5UeXBlczo6U3RhcnRUYWc6IHsKKyAgICBjYXNlIEhUTUxUb2tlbjo6U3RhcnRUYWc6IHsK
ICAgICAgICAgaWYgKHRva2VuLT5uYW1lKCkgPT0gYlRhZwogICAgICAgICAgICAgfHwgdG9rZW4t
Pm5hbWUoKSA9PSBiaWdUYWcKICAgICAgICAgICAgIHx8IHRva2VuLT5uYW1lKCkgPT0gYmxvY2tx
dW90ZVRhZwpAQCAtMjg3NCw3ICsyODc1LDcgQEAgdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nl
c3NUb2tlbkluRm9yZWlnbkNvbnRlbnQoQXRvbWljSFRNTFRva2VuKiB0b2tlbikKICAgICAgICAg
bV90cmVlLmluc2VydEZvcmVpZ25FbGVtZW50KHRva2VuLCBjdXJyZW50TmFtZXNwYWNlKTsKICAg
ICAgICAgYnJlYWs7CiAgICAgfQotICAgIGNhc2UgSFRNTFRva2VuVHlwZXM6OkVuZFRhZzogewor
ICAgIGNhc2UgSFRNTFRva2VuOjpFbmRUYWc6IHsKICAgICAgICAgaWYgKG1fdHJlZS5jdXJyZW50
U3RhY2tJdGVtKCktPm5hbWVzcGFjZVVSSSgpID09IFNWR05hbWVzOjpzdmdOYW1lc3BhY2VVUkkp
CiAgICAgICAgICAgICBhZGp1c3RTVkdUYWdOYW1lQ2FzZSh0b2tlbik7CiAKQEAgLTI5MDMsMTcg
KzI5MDQsMTcgQEAgdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NUb2tlbkluRm9yZWlnbkNv
bnRlbnQoQXRvbWljSFRNTFRva2VuKiB0b2tlbikKICAgICAgICAgcHJvY2Vzc0VuZFRhZyh0b2tl
bik7CiAgICAgICAgIGJyZWFrOwogICAgIH0KLSAgICBjYXNlIEhUTUxUb2tlblR5cGVzOjpDb21t
ZW50OgorICAgIGNhc2UgSFRNTFRva2VuOjpDb21tZW50OgogICAgICAgICBtX3RyZWUuaW5zZXJ0
Q29tbWVudCh0b2tlbik7CiAgICAgICAgIHJldHVybjsKLSAgICBjYXNlIEhUTUxUb2tlblR5cGVz
OjpDaGFyYWN0ZXI6IHsKKyAgICBjYXNlIEhUTUxUb2tlbjo6Q2hhcmFjdGVyOiB7CiAgICAgICAg
IFN0cmluZyBjaGFyYWN0ZXJzID0gU3RyaW5nKHRva2VuLT5jaGFyYWN0ZXJzKCksIHRva2VuLT5j
aGFyYWN0ZXJzTGVuZ3RoKCkpOwogICAgICAgICBtX3RyZWUuaW5zZXJ0VGV4dE5vZGUoY2hhcmFj
dGVycyk7CiAgICAgICAgIGlmIChtX2ZyYW1lc2V0T2sgJiYgIWlzQWxsV2hpdGVzcGFjZU9yUmVw
bGFjZW1lbnRDaGFyYWN0ZXJzKGNoYXJhY3RlcnMpKQogICAgICAgICAgICAgbV9mcmFtZXNldE9r
ID0gZmFsc2U7CiAgICAgICAgIGJyZWFrOwogICAgIH0KLSAgICBjYXNlIEhUTUxUb2tlblR5cGVz
OjpFbmRPZkZpbGU6CisgICAgY2FzZSBIVE1MVG9rZW46OkVuZE9mRmlsZToKICAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxWaWV3U291cmNlUGFyc2VyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxWaWV3U291cmNlUGFyc2VyLmNwcAppbmRleCAxMDZi
ZTMxNGE1NDMxNGUwOGQ1MmJmOGUzYzE1ZDJhY2U5MjljNzFhLi5hNWY0N2YwYTJkMzE3YjZlODUw
Y2I1ZjZkMDI0MDI5YWRhMzI1YmQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3Bh
cnNlci9IVE1MVmlld1NvdXJjZVBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9w
YXJzZXIvSFRNTFZpZXdTb3VyY2VQYXJzZXIuY3BwCkBAIC03Niw3ICs3Niw3IEBAIFN0cmluZyBI
VE1MVmlld1NvdXJjZVBhcnNlcjo6c291cmNlRm9yVG9rZW4oKQogdm9pZCBIVE1MVmlld1NvdXJj
ZVBhcnNlcjo6dXBkYXRlVG9rZW5pemVyU3RhdGUoKQogewogICAgIC8vIEZJWE1FOiBUaGUgdG9r
ZW5pemVyIHNob3VsZCBkbyB0aGlzIHdvcmsgZm9yIHVzLgotICAgIGlmIChtX3Rva2VuLnR5cGUo
KSAhPSBIVE1MVG9rZW5UeXBlczo6U3RhcnRUYWcpCisgICAgaWYgKG1fdG9rZW4udHlwZSgpICE9
IEhUTUxUb2tlbjo6U3RhcnRUYWcpCiAgICAgICAgIHJldHVybjsKIAogICAgIEF0b21pY1N0cmlu
ZyB0YWdOYW1lKG1fdG9rZW4ubmFtZSgpLmRhdGEoKSwgbV90b2tlbi5uYW1lKCkuc2l6ZSgpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL1RleHREb2N1bWVudFBhcnNl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9UZXh0RG9jdW1lbnRQYXJzZXIuY3Bw
CmluZGV4IGZkMTAyY2JhODRmNDU4YWExZGMxODY2MmU3Yjg0OTE0NmY2MGUwNWUuLjM5MWZjYWMw
ZWMzNWM2NmNlMDU4ZWI4MmE0ODE5MmJmNmNlMmM3MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvcGFyc2VyL1RleHREb2N1bWVudFBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9wYXJzZXIvVGV4dERvY3VtZW50UGFyc2VyLmNwcApAQCAtNjAsNyArNjAsNyBAQCB2
b2lkIFRleHREb2N1bWVudFBhcnNlcjo6aW5zZXJ0RmFrZVByZUVsZW1lbnQoKQogICAgIC8vIGRp
c3RydWJpbmcgdGhlIGxpbmUvY29sdW1uIG51bWJlciBjYWxjdWxhdGlvbnMuCiAgICAgVmVjdG9y
PEF0dHJpYnV0ZT4gYXR0cmlidXRlczsKICAgICBhdHRyaWJ1dGVzLmFwcGVuZChBdHRyaWJ1dGUo
c3R5bGVBdHRyLCAid29yZC13cmFwOiBicmVhay13b3JkOyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7
IikpOwotICAgIFJlZlB0cjxBdG9taWNIVE1MVG9rZW4+IGZha2VQcmUgPSBBdG9taWNIVE1MVG9r
ZW46OmNyZWF0ZShIVE1MVG9rZW5UeXBlczo6U3RhcnRUYWcsIHByZVRhZy5sb2NhbE5hbWUoKSwg
YXR0cmlidXRlcyk7CisgICAgUmVmUHRyPEF0b21pY0hUTUxUb2tlbj4gZmFrZVByZSA9IEF0b21p
Y0hUTUxUb2tlbjo6Y3JlYXRlKEhUTUxUb2tlbjo6U3RhcnRUYWcsIHByZVRhZy5sb2NhbE5hbWUo
KSwgYXR0cmlidXRlcyk7CiAgICAgdHJlZUJ1aWxkZXIoKS0+Y29uc3RydWN0VHJlZShmYWtlUHJl
LmdldCgpKTsKIAogICAgIC8vIE5vcm1hbGx5IHdlIHdvdWxkIHNraXAgdGhlIGZpcnN0IFxuIGFm
dGVyIGEgPHByZT4gZWxlbWVudCwgYnV0IHdlIGRvbid0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3BhcnNlci9YU1NBdWRpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFy
c2VyL1hTU0F1ZGl0b3IuY3BwCmluZGV4IDlkY2M4YjU0NzM3YmU3YWU0NTVlNmEyMmZlMGEwMDkz
ODAxZTU1NmEuLmRlNTRkMjI1MzI3ZWRjNzkwNjdiMjE5YWM2OGFkYTAzZjJiNjkwOGUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL1hTU0F1ZGl0b3IuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL1hTU0F1ZGl0b3IuY3BwCkBAIC0yODQsMTIgKzI4NCwx
MiBAQCBQYXNzT3duUHRyPFhTU0luZm8+IFhTU0F1ZGl0b3I6OmZpbHRlclRva2VuKGNvbnN0IEZp
bHRlclRva2VuUmVxdWVzdCYgcmVxdWVzdCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAg
ICBib29sIGRpZEJsb2NrU2NyaXB0ID0gZmFsc2U7Ci0gICAgaWYgKHJlcXVlc3QudG9rZW4udHlw
ZSgpID09IEhUTUxUb2tlblR5cGVzOjpTdGFydFRhZykKKyAgICBpZiAocmVxdWVzdC50b2tlbi50
eXBlKCkgPT0gSFRNTFRva2VuOjpTdGFydFRhZykKICAgICAgICAgZGlkQmxvY2tTY3JpcHQgPSBm
aWx0ZXJTdGFydFRva2VuKHJlcXVlc3QpOwogICAgIGVsc2UgaWYgKG1fc2NyaXB0VGFnTmVzdGlu
Z0xldmVsKSB7Ci0gICAgICAgIGlmIChyZXF1ZXN0LnRva2VuLnR5cGUoKSA9PSBIVE1MVG9rZW5U
eXBlczo6Q2hhcmFjdGVyKQorICAgICAgICBpZiAocmVxdWVzdC50b2tlbi50eXBlKCkgPT0gSFRN
TFRva2VuOjpDaGFyYWN0ZXIpCiAgICAgICAgICAgICBkaWRCbG9ja1NjcmlwdCA9IGZpbHRlckNo
YXJhY3RlclRva2VuKHJlcXVlc3QpOwotICAgICAgICBlbHNlIGlmIChyZXF1ZXN0LnRva2VuLnR5
cGUoKSA9PSBIVE1MVG9rZW5UeXBlczo6RW5kVGFnKQorICAgICAgICBlbHNlIGlmIChyZXF1ZXN0
LnRva2VuLnR5cGUoKSA9PSBIVE1MVG9rZW46OkVuZFRhZykKICAgICAgICAgICAgIGZpbHRlckVu
ZFRva2VuKHJlcXVlc3QpOwogICAgIH0KIApAQCAtMzU2LDcgKzM1Niw3IEBAIGJvb2wgWFNTQXVk
aXRvcjo6ZmlsdGVyQ2hhcmFjdGVyVG9rZW4oY29uc3QgRmlsdGVyVG9rZW5SZXF1ZXN0JiByZXF1
ZXN0KQogCiBib29sIFhTU0F1ZGl0b3I6OmZpbHRlclNjcmlwdFRva2VuKGNvbnN0IEZpbHRlclRv
a2VuUmVxdWVzdCYgcmVxdWVzdCkKIHsKLSAgICBBU1NFUlQocmVxdWVzdC50b2tlbi50eXBlKCkg
PT0gSFRNTFRva2VuVHlwZXM6OlN0YXJ0VGFnKTsKKyAgICBBU1NFUlQocmVxdWVzdC50b2tlbi50
eXBlKCkgPT0gSFRNTFRva2VuOjpTdGFydFRhZyk7CiAgICAgQVNTRVJUKGhhc05hbWUocmVxdWVz
dC50b2tlbiwgc2NyaXB0VGFnKSk7CiAKICAgICBtX2NhY2hlZERlY29kZWRTbmlwcGV0ID0gZGVj
b2RlZFNuaXBwZXRGb3JOYW1lKHJlcXVlc3QpOwpAQCAtMzcyLDcgKzM3Miw3IEBAIGJvb2wgWFNT
QXVkaXRvcjo6ZmlsdGVyU2NyaXB0VG9rZW4oY29uc3QgRmlsdGVyVG9rZW5SZXF1ZXN0JiByZXF1
ZXN0KQogCiBib29sIFhTU0F1ZGl0b3I6OmZpbHRlck9iamVjdFRva2VuKGNvbnN0IEZpbHRlclRv
a2VuUmVxdWVzdCYgcmVxdWVzdCkKIHsKLSAgICBBU1NFUlQocmVxdWVzdC50b2tlbi50eXBlKCkg
PT0gSFRNTFRva2VuVHlwZXM6OlN0YXJ0VGFnKTsKKyAgICBBU1NFUlQocmVxdWVzdC50b2tlbi50
eXBlKCkgPT0gSFRNTFRva2VuOjpTdGFydFRhZyk7CiAgICAgQVNTRVJUKGhhc05hbWUocmVxdWVz
dC50b2tlbiwgb2JqZWN0VGFnKSk7CiAKICAgICBib29sIGRpZEJsb2NrU2NyaXB0ID0gZmFsc2U7
CkBAIC0zODYsNyArMzg2LDcgQEAgYm9vbCBYU1NBdWRpdG9yOjpmaWx0ZXJPYmplY3RUb2tlbihj
b25zdCBGaWx0ZXJUb2tlblJlcXVlc3QmIHJlcXVlc3QpCiAKIGJvb2wgWFNTQXVkaXRvcjo6Zmls
dGVyUGFyYW1Ub2tlbihjb25zdCBGaWx0ZXJUb2tlblJlcXVlc3QmIHJlcXVlc3QpCiB7Ci0gICAg
QVNTRVJUKHJlcXVlc3QudG9rZW4udHlwZSgpID09IEhUTUxUb2tlblR5cGVzOjpTdGFydFRhZyk7
CisgICAgQVNTRVJUKHJlcXVlc3QudG9rZW4udHlwZSgpID09IEhUTUxUb2tlbjo6U3RhcnRUYWcp
OwogICAgIEFTU0VSVChoYXNOYW1lKHJlcXVlc3QudG9rZW4sIHBhcmFtVGFnKSk7CiAKICAgICBz
aXplX3QgaW5kZXhPZk5hbWVBdHRyaWJ1dGU7CkBAIC00MDQsNyArNDA0LDcgQEAgYm9vbCBYU1NB
dWRpdG9yOjpmaWx0ZXJQYXJhbVRva2VuKGNvbnN0IEZpbHRlclRva2VuUmVxdWVzdCYgcmVxdWVz
dCkKIAogYm9vbCBYU1NBdWRpdG9yOjpmaWx0ZXJFbWJlZFRva2VuKGNvbnN0IEZpbHRlclRva2Vu
UmVxdWVzdCYgcmVxdWVzdCkKIHsKLSAgICBBU1NFUlQocmVxdWVzdC50b2tlbi50eXBlKCkgPT0g
SFRNTFRva2VuVHlwZXM6OlN0YXJ0VGFnKTsKKyAgICBBU1NFUlQocmVxdWVzdC50b2tlbi50eXBl
KCkgPT0gSFRNTFRva2VuOjpTdGFydFRhZyk7CiAgICAgQVNTRVJUKGhhc05hbWUocmVxdWVzdC50
b2tlbiwgZW1iZWRUYWcpKTsKIAogICAgIGJvb2wgZGlkQmxvY2tTY3JpcHQgPSBmYWxzZTsKQEAg
LTQxOCw3ICs0MTgsNyBAQCBib29sIFhTU0F1ZGl0b3I6OmZpbHRlckVtYmVkVG9rZW4oY29uc3Qg
RmlsdGVyVG9rZW5SZXF1ZXN0JiByZXF1ZXN0KQogCiBib29sIFhTU0F1ZGl0b3I6OmZpbHRlckFw
cGxldFRva2VuKGNvbnN0IEZpbHRlclRva2VuUmVxdWVzdCYgcmVxdWVzdCkKIHsKLSAgICBBU1NF
UlQocmVxdWVzdC50b2tlbi50eXBlKCkgPT0gSFRNTFRva2VuVHlwZXM6OlN0YXJ0VGFnKTsKKyAg
ICBBU1NFUlQocmVxdWVzdC50b2tlbi50eXBlKCkgPT0gSFRNTFRva2VuOjpTdGFydFRhZyk7CiAg
ICAgQVNTRVJUKGhhc05hbWUocmVxdWVzdC50b2tlbiwgYXBwbGV0VGFnKSk7CiAKICAgICBib29s
IGRpZEJsb2NrU2NyaXB0ID0gZmFsc2U7CkBAIC00MzEsNyArNDMxLDcgQEAgYm9vbCBYU1NBdWRp
dG9yOjpmaWx0ZXJBcHBsZXRUb2tlbihjb25zdCBGaWx0ZXJUb2tlblJlcXVlc3QmIHJlcXVlc3Qp
CiAKIGJvb2wgWFNTQXVkaXRvcjo6ZmlsdGVySWZyYW1lVG9rZW4oY29uc3QgRmlsdGVyVG9rZW5S
ZXF1ZXN0JiByZXF1ZXN0KQogewotICAgIEFTU0VSVChyZXF1ZXN0LnRva2VuLnR5cGUoKSA9PSBI
VE1MVG9rZW5UeXBlczo6U3RhcnRUYWcpOworICAgIEFTU0VSVChyZXF1ZXN0LnRva2VuLnR5cGUo
KSA9PSBIVE1MVG9rZW46OlN0YXJ0VGFnKTsKICAgICBBU1NFUlQoaGFzTmFtZShyZXF1ZXN0LnRv
a2VuLCBpZnJhbWVUYWcpKTsKIAogICAgIGJvb2wgZGlkQmxvY2tTY3JpcHQgPSBmYWxzZTsKQEAg
LTQ0NCw3ICs0NDQsNyBAQCBib29sIFhTU0F1ZGl0b3I6OmZpbHRlcklmcmFtZVRva2VuKGNvbnN0
IEZpbHRlclRva2VuUmVxdWVzdCYgcmVxdWVzdCkKIAogYm9vbCBYU1NBdWRpdG9yOjpmaWx0ZXJN
ZXRhVG9rZW4oY29uc3QgRmlsdGVyVG9rZW5SZXF1ZXN0JiByZXF1ZXN0KQogewotICAgIEFTU0VS
VChyZXF1ZXN0LnRva2VuLnR5cGUoKSA9PSBIVE1MVG9rZW5UeXBlczo6U3RhcnRUYWcpOworICAg
IEFTU0VSVChyZXF1ZXN0LnRva2VuLnR5cGUoKSA9PSBIVE1MVG9rZW46OlN0YXJ0VGFnKTsKICAg
ICBBU1NFUlQoaGFzTmFtZShyZXF1ZXN0LnRva2VuLCBtZXRhVGFnKSk7CiAKICAgICByZXR1cm4g
ZXJhc2VBdHRyaWJ1dGVJZkluamVjdGVkKHJlcXVlc3QsIGh0dHBfZXF1aXZBdHRyKTsKQEAgLTQ1
Miw3ICs0NTIsNyBAQCBib29sIFhTU0F1ZGl0b3I6OmZpbHRlck1ldGFUb2tlbihjb25zdCBGaWx0
ZXJUb2tlblJlcXVlc3QmIHJlcXVlc3QpCiAKIGJvb2wgWFNTQXVkaXRvcjo6ZmlsdGVyQmFzZVRv
a2VuKGNvbnN0IEZpbHRlclRva2VuUmVxdWVzdCYgcmVxdWVzdCkKIHsKLSAgICBBU1NFUlQocmVx
dWVzdC50b2tlbi50eXBlKCkgPT0gSFRNTFRva2VuVHlwZXM6OlN0YXJ0VGFnKTsKKyAgICBBU1NF
UlQocmVxdWVzdC50b2tlbi50eXBlKCkgPT0gSFRNTFRva2VuOjpTdGFydFRhZyk7CiAgICAgQVNT
RVJUKGhhc05hbWUocmVxdWVzdC50b2tlbiwgYmFzZVRhZykpOwogCiAgICAgcmV0dXJuIGVyYXNl
QXR0cmlidXRlSWZJbmplY3RlZChyZXF1ZXN0LCBocmVmQXR0cik7CkBAIC00NjAsNyArNDYwLDcg
QEAgYm9vbCBYU1NBdWRpdG9yOjpmaWx0ZXJCYXNlVG9rZW4oY29uc3QgRmlsdGVyVG9rZW5SZXF1
ZXN0JiByZXF1ZXN0KQogCiBib29sIFhTU0F1ZGl0b3I6OmZpbHRlckZvcm1Ub2tlbihjb25zdCBG
aWx0ZXJUb2tlblJlcXVlc3QmIHJlcXVlc3QpCiB7Ci0gICAgQVNTRVJUKHJlcXVlc3QudG9rZW4u
dHlwZSgpID09IEhUTUxUb2tlblR5cGVzOjpTdGFydFRhZyk7CisgICAgQVNTRVJUKHJlcXVlc3Qu
dG9rZW4udHlwZSgpID09IEhUTUxUb2tlbjo6U3RhcnRUYWcpOwogICAgIEFTU0VSVChoYXNOYW1l
KHJlcXVlc3QudG9rZW4sIGZvcm1UYWcpKTsKIAogICAgIHJldHVybiBlcmFzZUF0dHJpYnV0ZUlm
SW5qZWN0ZWQocmVxdWVzdCwgYWN0aW9uQXR0ciwgYmxhbmtVUkwoKS5zdHJpbmcoKSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>187890</attachid>
            <date>2013-02-12 10:16:56 -0800</date>
            <delta_ts>2013-02-12 10:44:55 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-109525-20130212101328.patch</filename>
            <type>text/plain</type>
            <size>94198</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQyNTY4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2MzYzY1ZGZlZDNiNjNh
MGJlNTM4YjBiNmE4YWY0NDQxZDk3NmI1ZC4uYzBjMWJjZDQ1MzMwNjQwODc3OTJiOTk5YmUzMDZh
ODc0M2NlNzA4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2MiBAQAorMjAxMy0wMi0xMiAgRXJp
YyBTZWlkZWwgIDxlcmljQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVtb3ZlIEhUTUxUb2tlblR5
cGVzIGhlYWRlciAoYW5kIHNwbGl0IG91dCBBdG9taWNIVE1MVG9rZW4uaCBmcm9tIEhUTUxUb2tl
bi5oKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA5
NTI1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBCYXJ0aC4KKworICAgICAgICBXZSBubyBs
b25nZXIgbmVlZCBhIHNlcGFyYXRlIEhUTUxUb2tlblR5cGVzIGNsYXNzIG5vdyB0aGF0IE5FV19Y
TUwgaXMgZ29uZS4KKyAgICAgICAgSG93ZXZlciwgdG8gcmVtb3ZlIEhUTUxUb2tlblR5cGVzLCBJ
IGhhZCB0byBzcGxpdCBBdG9taWNIVE1MVG9rZW4uaCBmcm9tCisgICAgICAgIEhUTUxUb2tlbi5o
ICh0byBmaXggYSBjaXJjdWxhciBkZXBlbmRhbmN5KS4KKworICAgICAgICAqIEdOVW1ha2VmaWxl
Lmxpc3QuYW06CisgICAgICAgICogVGFyZ2V0LnByaToKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6
CisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6CisgICAgICAgICogV2Vi
Q29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvajoKKyAgICAgICAgKiBXZWJDb3JlLnZjeHByb2ov
V2ViQ29yZS52Y3hwcm9qLmZpbHRlcnM6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOgorICAgICAgICAqIGh0bWwvSFRNTFZpZXdTb3VyY2VEb2N1bWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MVmlld1NvdXJjZURvY3VtZW50OjphZGRTb3VyY2UpOgor
ICAgICAgICAqIGh0bWwvcGFyc2VyL0F0b21pY0hUTUxUb2tlbi5oOiBBZGRlZC4KKyAgICAgICAg
KFdlYkNvcmUpOgorICAgICAgICAoQXRvbWljSFRNTFRva2VuKToKKyAgICAgICAgKFdlYkNvcmU6
OkF0b21pY0hUTUxUb2tlbjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkF0b21pY0hUTUxU
b2tlbjo6Zm9yY2VRdWlya3MpOgorICAgICAgICAoV2ViQ29yZTo6QXRvbWljSFRNTFRva2VuOjp0
eXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkF0b21pY0hUTUxUb2tlbjo6bmFtZSk6CisgICAgICAg
IChXZWJDb3JlOjpBdG9taWNIVE1MVG9rZW46OnNldE5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6
QXRvbWljSFRNTFRva2VuOjpzZWxmQ2xvc2luZyk6CisgICAgICAgIChXZWJDb3JlOjpBdG9taWNI
VE1MVG9rZW46OmdldEF0dHJpYnV0ZUl0ZW0pOgorICAgICAgICAoV2ViQ29yZTo6QXRvbWljSFRN
TFRva2VuOjphdHRyaWJ1dGVzKToKKyAgICAgICAgKFdlYkNvcmU6OkF0b21pY0hUTUxUb2tlbjo6
Y2hhcmFjdGVycyk6CisgICAgICAgIChXZWJDb3JlOjpBdG9taWNIVE1MVG9rZW46OmNoYXJhY3Rl
cnNMZW5ndGgpOgorICAgICAgICAoV2ViQ29yZTo6QXRvbWljSFRNTFRva2VuOjppc0FsbDhCaXRE
YXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkF0b21pY0hUTUxUb2tlbjo6Y29tbWVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpBdG9taWNIVE1MVG9rZW46OnB1YmxpY0lkZW50aWZpZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6QXRvbWljSFRNTFRva2VuOjpzeXN0ZW1JZGVudGlmaWVyKToKKyAgICAgICAg
KFdlYkNvcmU6OkF0b21pY0hUTUxUb2tlbjo6Y2xlYXJFeHRlcm5hbENoYXJhY3RlcnMpOgorICAg
ICAgICAoV2ViQ29yZTo6QXRvbWljSFRNTFRva2VuOjpBdG9taWNIVE1MVG9rZW4pOgorICAgICAg
ICAoV2ViQ29yZTo6QXRvbWljSFRNTFRva2VuOjppbml0aWFsaXplQXR0cmlidXRlcyk6CisgICAg
ICAgICogaHRtbC9wYXJzZXIvQmFja2dyb3VuZEhUTUxQYXJzZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6QmFja2dyb3VuZEhUTUxQYXJzZXI6OnNpbXVsYXRlVHJlZUJ1aWxkZXIpOgorICAgICAg
ICAqIGh0bWwvcGFyc2VyL0NvbXBhY3RIVE1MVG9rZW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q29tcGFjdEhUTUxUb2tlbjo6Q29tcGFjdEhUTUxUb2tlbik6CisgICAgICAgICogaHRtbC9wYXJz
ZXIvQ29tcGFjdEhUTUxUb2tlbi5oOgorICAgICAgICAoV2ViQ29yZTo6Q29tcGFjdEhUTUxUb2tl
bjo6dHlwZSk6CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTENvbnN0cnVjdGlvblNpdGUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTENvbnN0cnVjdGlvblNpdGU6Omluc2VydERvY3R5cGUp
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTENvbnN0cnVjdGlvblNpdGU6Omluc2VydENvbW1lbnQp
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTENvbnN0cnVjdGlvblNpdGU6Omluc2VydENvbW1lbnRP
bkRvY3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxDb25zdHJ1Y3Rpb25TaXRlOjppbnNl
cnRDb21tZW50T25IVE1MSHRtbEVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTENvbnN0
cnVjdGlvblNpdGU6Omluc2VydFNlbGZDbG9zaW5nSFRNTEVsZW1lbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTENvbnN0cnVjdGlvblNpdGU6Omluc2VydEZvcmVpZ25FbGVtZW50KToKKyAgICAg
ICAgKiBodG1sL3BhcnNlci9IVE1MRG9jdW1lbnRQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTERvY3VtZW50UGFyc2VyOjpwcm9jZXNzUGFyc2VkQ2h1bmtGcm9tQmFja2dyb3VuZFBh
cnNlcik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRG9jdW1lbnRQYXJzZXI6OmNvbnN0cnVjdFRy
ZWVGcm9tSFRNTFRva2VuKToKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MRG9jdW1lbnRQYXJz
ZXIuaDoKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MTWV0YUNoYXJzZXRQYXJzZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTE1ldGFDaGFyc2V0UGFyc2VyOjpjaGVja0Zvck1ldGFDaGFy
c2V0KToKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MUHJlbG9hZFNjYW5uZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6aXNTdGFydFRhZyk6CisgICAgICAgIChXZWJDb3JlOjppc1N0YXJ0T3JF
bmRUYWcpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFByZWxvYWRTY2FubmVyOjpwcm9jZXNzVG9r
ZW4pOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxTb3VyY2VUcmFja2VyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxTb3VyY2VUcmFja2VyOjpzdGFydCk6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MU291cmNlVHJhY2tlcjo6c291cmNlRm9yVG9rZW4pOgorICAgICAgICAqIGh0bWwvcGFy
c2VyL0hUTUxTdGFja0l0ZW0uaDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTdGFja0l0ZW06OkhU
TUxTdGFja0l0ZW0pOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxUb2tlbi5oOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTFRva2VuOjpjbGVhcik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVG9r
ZW46OmlzVW5pbml0aWFsaXplZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVG9rZW46OnR5cGUp
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRva2VuOjptYWtlRW5kT2ZGaWxlKToKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxUb2tlbjo6ZGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVG9rZW46
Om5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRva2VuOjphcHBlbmRUb05hbWUpOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTFRva2VuOjpmb3JjZVF1aXJrcyk6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MVG9rZW46OnNldEZvcmNlUXVpcmtzKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUb2tl
bjo6YmVnaW5ET0NUWVBFKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUb2tlbjo6cHVibGljSWRl
bnRpZmllcik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVG9rZW46OnN5c3RlbUlkZW50aWZpZXIp
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRva2VuOjpzZXRQdWJsaWNJZGVudGlmaWVyVG9FbXB0
eVN0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVG9rZW46OnNldFN5c3RlbUlkZW50aWZp
ZXJUb0VtcHR5U3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUb2tlbjo6YXBwZW5kVG9Q
dWJsaWNJZGVudGlmaWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUb2tlbjo6YXBwZW5kVG9T
eXN0ZW1JZGVudGlmaWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUb2tlbjo6c2VsZkNsb3Np
bmcpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRva2VuOjpzZXRTZWxmQ2xvc2luZyk6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MVG9rZW46OmJlZ2luU3RhcnRUYWcpOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTFRva2VuOjpiZWdpbkVuZFRhZyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVG9rZW46
OmFkZE5ld0F0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVG9rZW46OmFwcGVuZFRv
QXR0cmlidXRlTmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVG9rZW46OmFwcGVuZFRvQXR0
cmlidXRlVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRva2VuOjphdHRyaWJ1dGVzKToK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxUb2tlbjo6ZXJhc2VWYWx1ZU9mQXR0cmlidXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxUb2tlbjo6ZW5zdXJlSXNDaGFyYWN0ZXJUb2tlbik6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MVG9rZW46OmNoYXJhY3RlcnMpOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTFRva2VuOjphcHBlbmRUb0NoYXJhY3Rlcik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVG9r
ZW46OmNvbW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRva2VuOjpiZWdpbkNvbW1lbnQp
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRva2VuOjphcHBlbmRUb0NvbW1lbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTFRva2VuOjplcmFzZUNoYXJhY3RlcnMpOgorICAgICAgICAoSFRNTFRv
a2VuKToKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MVG9rZW5UeXBlcy5oOiBSZW1vdmVkLgor
ICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxUb2tlbml6ZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6QXRvbWljSFRNTFRva2VuOjp1c2VzTmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpBdG9taWNI
VE1MVG9rZW46OnVzZXNBdHRyaWJ1dGVzKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUb2tlbml6
ZXI6OmZsdXNoQnVmZmVyZWRFbmRUYWcpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRva2VuaXpl
cjo6bmV4dFRva2VuKToKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MVG9rZW5pemVyLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MVG9rZW5pemVyOjpzYXZlRW5kVGFnTmFtZUlmTmVlZGVkKToK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxUb2tlbml6ZXI6OmhhdmVCdWZmZXJlZENoYXJhY3RlclRv
a2VuKToKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MVHJlZUJ1aWxkZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzVG9rZW4pOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzRG9jdHlwZVRva2VuKToKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0Zha2VTdGFydFRhZyk6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NGYWtlRW5kVGFnKToKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0Zha2VQRW5kVGFnSWZQSW5CdXR0b25TY29w
ZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NJc2luZGV4U3Rh
cnRUYWdGb3JJbkJvZHkpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NTdGFydFRhZ0ZvckluQm9keSk6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NTdGFydFRhZ0ZvckluVGFibGUpOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzU3RhcnRUYWcpOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzQm9keUVuZFRhZ0ZvckluQm9keSk6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NBbnlPdGhlckVuZFRhZ0Zv
ckluQm9keSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NFbmRU
YWdGb3JJblRhYmxlQm9keSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6OnBy
b2Nlc3NFbmRUYWdGb3JJblJvdyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6
OnByb2Nlc3NFbmRUYWdGb3JJbkNlbGwpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyZWVCdWls
ZGVyOjpwcm9jZXNzRW5kVGFnRm9ySW5Cb2R5KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVl
QnVpbGRlcjo6cHJvY2Vzc0VuZFRhZ0ZvckluVGFibGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TFRyZWVCdWlsZGVyOjpwcm9jZXNzRW5kVGFnKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVl
QnVpbGRlcjo6cHJvY2Vzc0NvbW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyZWVCdWls
ZGVyOjpwcm9jZXNzQ2hhcmFjdGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRl
cjo6ZGVmYXVsdEZvckJlZm9yZUhUTUwpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyZWVCdWls
ZGVyOjpkZWZhdWx0Rm9yQmVmb3JlSGVhZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJlZUJ1
aWxkZXI6OmRlZmF1bHRGb3JJbkhlYWQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyZWVCdWls
ZGVyOjpkZWZhdWx0Rm9ySW5IZWFkTm9zY3JpcHQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRy
ZWVCdWlsZGVyOjpkZWZhdWx0Rm9yQWZ0ZXJIZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxU
cmVlQnVpbGRlcjo6cHJvY2Vzc1N0YXJ0VGFnRm9ySW5IZWFkKToKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0dlbmVyaWNSQ0RBVEFTdGFydFRhZyk6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NHZW5lcmljUmF3VGV4dFN0YXJ0VGFn
KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc1NjcmlwdFN0YXJ0
VGFnKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRlcjo6c2hvdWxkUHJvY2Vzc1Rv
a2VuSW5Gb3JlaWduQ29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6
OnByb2Nlc3NUb2tlbkluRm9yZWlnbkNvbnRlbnQpOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hU
TUxWaWV3U291cmNlUGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxWaWV3U291cmNl
UGFyc2VyOjp1cGRhdGVUb2tlbml6ZXJTdGF0ZSk6CisgICAgICAgICogaHRtbC9wYXJzZXIvVGV4
dERvY3VtZW50UGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHREb2N1bWVudFBhcnNl
cjo6aW5zZXJ0RmFrZVByZUVsZW1lbnQpOgorICAgICAgICAqIGh0bWwvcGFyc2VyL1hTU0F1ZGl0
b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WFNTQXVkaXRvcjo6ZmlsdGVyVG9rZW4pOgorICAg
ICAgICAoV2ViQ29yZTo6WFNTQXVkaXRvcjo6ZmlsdGVyU2NyaXB0VG9rZW4pOgorICAgICAgICAo
V2ViQ29yZTo6WFNTQXVkaXRvcjo6ZmlsdGVyT2JqZWN0VG9rZW4pOgorICAgICAgICAoV2ViQ29y
ZTo6WFNTQXVkaXRvcjo6ZmlsdGVyUGFyYW1Ub2tlbik6CisgICAgICAgIChXZWJDb3JlOjpYU1NB
dWRpdG9yOjpmaWx0ZXJFbWJlZFRva2VuKToKKyAgICAgICAgKFdlYkNvcmU6OlhTU0F1ZGl0b3I6
OmZpbHRlckFwcGxldFRva2VuKToKKyAgICAgICAgKFdlYkNvcmU6OlhTU0F1ZGl0b3I6OmZpbHRl
cklmcmFtZVRva2VuKToKKyAgICAgICAgKFdlYkNvcmU6OlhTU0F1ZGl0b3I6OmZpbHRlck1ldGFU
b2tlbik6CisgICAgICAgIChXZWJDb3JlOjpYU1NBdWRpdG9yOjpmaWx0ZXJCYXNlVG9rZW4pOgor
ICAgICAgICAoV2ViQ29yZTo6WFNTQXVkaXRvcjo6ZmlsdGVyRm9ybVRva2VuKToKKwogMjAxMy0w
Mi0xMSAgS2VubmV0aCBSdXNzZWxsICA8a2JyQGdvb2dsZS5jb20+CiAKICAgICAgICAgQWRkIHRl
bXBvcmFyeSB0eXBlZGVmIHRvIEFOR0xFV2ViS2l0QnJpZGdlIHRvIHN1cHBvcnQgaW5jb21wYXRp
YmxlIEFQSSB1cGdyYWRlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5s
aXN0LmFtIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCAyYjliMWJl
M2Q0Yjc0N2E1OGY2Y2IwMzIzMmRhYWI1YzQ4YTc2ZTBlLi40Nzg3YmIzZjE4NjYyZjZmMGU2YWQw
YzIyNDgzYTFlZjQwYTdiZmVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmls
ZS5saXN0LmFtCisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTM1
NjgsNiArMzU2OCw3IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvaHRt
bC9Nb250aElucHV0VHlwZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL051bWJlcklucHV0VHlw
ZS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2h0bWwvTnVtYmVySW5wdXRUeXBlLmggXAorCVNvdXJj
ZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0F0b21pY0hUTUxUb2tlbi5oIFwKIAlTb3VyY2UvV2ViQ29y
ZS9odG1sL3BhcnNlci9CYWNrZ3JvdW5kSFRNTElucHV0U3RyZWFtLmNwcCBcCiAJU291cmNlL1dl
YkNvcmUvaHRtbC9wYXJzZXIvQmFja2dyb3VuZEhUTUxJbnB1dFN0cmVhbS5oIFwKIAlTb3VyY2Uv
V2ViQ29yZS9odG1sL3BhcnNlci9CYWNrZ3JvdW5kSFRNTFBhcnNlci5jcHAgXApAQCAtMzYxMSw3
ICszNjEyLDYgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL3Bh
cnNlci9IVE1MU291cmNlVHJhY2tlci5oIFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9I
VE1MU3RhY2tJdGVtLmggXAogCVNvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUb2tlbi5o
IFwKLQlTb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVG9rZW5UeXBlcy5oIFwKIAlTb3Vy
Y2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVG9rZW5pemVyLmNwcCBcCiAJU291cmNlL1dlYkNv
cmUvaHRtbC9wYXJzZXIvSFRNTFRva2VuaXplci5oIFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL3Bh
cnNlci9IVE1MVHJlZUJ1aWxkZXIuY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1Rh
cmdldC5wcmkgYi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCmluZGV4IDlhYWUxNmM3MDdlMmUx
YmIxZTJjMDFkYjdmZjA0OTJjMWVhNjkwYmEuLjcyOTVlYTM4MWM0MmIzYWExM2EyYjUxNzNjMjli
ZDc4MTM3ZGJlNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKKysrIGIv
U291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQpAQCAtMTkxNiw2ICsxOTE2LDcgQEAgSEVBREVSUyAr
PSBcCiAgICAgaHRtbC9UaW1lUmFuZ2VzLmggXAogICAgIGh0bWwvVHlwZUFoZWFkLmggXAogICAg
IGh0bWwvVmFsaWRpdHlTdGF0ZS5oIFwKKyAgICBodG1sL3BhcnNlci9BdG9taWNIVE1MVG9rZW4u
aCBcCiAgICAgaHRtbC9wYXJzZXIvQ1NTUHJlbG9hZFNjYW5uZXIuaCBcCiAgICAgaHRtbC9wYXJz
ZXIvQ29tcGFjdEhUTUxUb2tlbi5oIFwKICAgICBodG1sL3BhcnNlci9IVE1MQ29uc3RydWN0aW9u
U2l0ZS5oIFwKQEAgLTE5MzEsNyArMTkzMiw2IEBAIEhFQURFUlMgKz0gXAogICAgIGh0bWwvcGFy
c2VyL0hUTUxTY3JpcHRSdW5uZXIuaCBcCiAgICAgaHRtbC9wYXJzZXIvSFRNTFNjcmlwdFJ1bm5l
ckhvc3QuaCBcCiAgICAgaHRtbC9wYXJzZXIvSFRNTFRva2VuLmggXAotICAgIGh0bWwvcGFyc2Vy
L0hUTUxUb2tlblR5cGVzLmggXAogICAgIGh0bWwvcGFyc2VyL0hUTUxUb2tlbml6ZXIuaCBcCiAg
ICAgaHRtbC9wYXJzZXIvSFRNTFRyZWVCdWlsZGVyLmggXAogICAgIGh0bWwvcGFyc2VyL0hUTUxW
aWV3U291cmNlUGFyc2VyLmggXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5n
eXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IDdhYTNjMGU0YTRmNzgzYTQ5
NWVlNTA2YTgxNDQ4YWViOTZiNWJiNDQuLmFmOTQ2OGY2NDcwMmVmZTQ2NTI5YTUzY2M5ZDRkZGVm
ZGM4Mzk3ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTMzNTYsNiArMzM1Niw3IEBACiAgICAgICAg
ICAgICAnaHRtbC9jYW52YXMvV2ViR0xVbmlmb3JtTG9jYXRpb24uaCcsCiAgICAgICAgICAgICAn
aHRtbC9jYW52YXMvV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUy5jcHAnLAogICAgICAgICAgICAg
J2h0bWwvY2FudmFzL1dlYkdMVmVydGV4QXJyYXlPYmplY3RPRVMuaCcsCisgICAgICAgICAgICAn
aHRtbC9wYXJzZXIvQXRvbWljSFRNTFRva2VuLmgnLAogICAgICAgICAgICAgJ2h0bWwvcGFyc2Vy
L0JhY2tncm91bmRIVE1MUGFyc2VyLmNwcCcsCiAgICAgICAgICAgICAnaHRtbC9wYXJzZXIvQmFj
a2dyb3VuZEhUTUxQYXJzZXIuaCcsCiAgICAgICAgICAgICAnaHRtbC9wYXJzZXIvQmFja2dyb3Vu
ZEhUTUxJbnB1dFN0cmVhbS5jcHAnLApAQCAtMzM5OCw3ICszMzk5LDYgQEAKICAgICAgICAgICAg
ICdodG1sL3BhcnNlci9IVE1MU291cmNlVHJhY2tlci5oJywKICAgICAgICAgICAgICdodG1sL3Bh
cnNlci9IVE1MU3RhY2tJdGVtLmgnLAogICAgICAgICAgICAgJ2h0bWwvcGFyc2VyL0hUTUxUb2tl
bi5oJywKLSAgICAgICAgICAgICdodG1sL3BhcnNlci9IVE1MVG9rZW5UeXBlcy5oJywKICAgICAg
ICAgICAgICdodG1sL3BhcnNlci9IVE1MVG9rZW5pemVyLmNwcCcsCiAgICAgICAgICAgICAnaHRt
bC9wYXJzZXIvSFRNTFRva2VuaXplci5oJywKICAgICAgICAgICAgICdodG1sL3BhcnNlci9IVE1M
VHJlZUJ1aWxkZXIuY3BwJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNw
cm9qL1dlYkNvcmUudmNwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29y
ZS52Y3Byb2oKaW5kZXggOTZjZWQ3ZGM5ZTJkOWU2ZmMzMDYxOGZlYjczMmU4NTk2YjRkNjU3Ni4u
NDkxNTQ0MDM4YTBjMjNmMTYwODJmNDM2ODhjNmE2NzczMTNjYWIwMSAxMDA3NTUKLS0tIGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKKysrIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKQEAgLTY0ODA2LDYgKzY0ODA2LDEw
IEBACiAJCQkJTmFtZT0icGFyc2VyIgogCQkJCT4KIAkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBh
dGg9Ii4uXGh0bWxccGFyc2VyXEF0b21pY0hUTUxUb2tlbi5oIgorCQkJCQk+CisJCQkJPC9GaWxl
PgorCQkJCTxGaWxlCiAJCQkJCVJlbGF0aXZlUGF0aD0iLi5caHRtbFxwYXJzZXJcQmFja2dyb3Vu
ZEhUTUxJbnB1dFN0cmVhbS5jcHAiCiAJCQkJCT4KIAkJCQk8L0ZpbGU+CkBAIC02NDk4MiwxMCAr
NjQ5ODYsNiBAQAogCQkJCQk+CiAJCQkJPC9GaWxlPgogCQkJCTxGaWxlCi0JCQkJCVJlbGF0aXZl
UGF0aD0iLi5caHRtbFxwYXJzZXJcSFRNTFRva2VuVHlwZXMuaCIKLQkJCQkJPgotCQkJCTwvRmls
ZT4KLQkJCQk8RmlsZQogCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGh0bWxccGFyc2VyXEhUTUxUcmVl
QnVpbGRlci5jcHAiCiAJCQkJCT4KIAkJCQk8L0ZpbGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvagppbmRleCAyMTQxMjMyMWZlNTU5MDVlMGViZDUy
NGJjZmJkZTBlNjIyYjE0N2QzLi41ZDAzNzg4NDhhMGYzNzNjZjRjMGYxMjNiMTNiZmQ3NzM0ODNi
ZTMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52
Y3hwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHBy
b2oKQEAgLTc5MjUsNiArNzkyNSw3IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxodG1s
XFZhbGlkaXR5U3RhdGUuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGh0bWxcVm9p
ZENhbGxiYWNrLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxodG1sXFdlZWtJbnB1
dFR5cGUuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGh0bWxccGFyc2VyXEF0b21p
Y0hUTUxUb2tlbi5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caHRtbFxwYXJzZXJc
QmFja2dyb3VuZEhUTUxQYXJzZXIuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGh0
bWxccGFyc2VyXENvbXBhY3RIVE1MVG9rZW4uaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
Ii4uXGh0bWxccGFyc2VyXENTU1ByZWxvYWRTY2FubmVyLmgiIC8+CkBAIC03OTQ4LDcgKzc5NDks
NiBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caHRtbFxwYXJzZXJcSFRNTFN0YWNrSXRl
bS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caHRtbFxwYXJzZXJcSFRNTFRva2Vu
LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxodG1sXHBhcnNlclxIVE1MVG9rZW5p
emVyLmgiIC8+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxodG1sXHBhcnNlclxIVE1MVG9r
ZW5UeXBlcy5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caHRtbFxwYXJzZXJcSFRN
TFRyZWVCdWlsZGVyLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxodG1sXHBhcnNl
clxIVE1MVmlld1NvdXJjZVBhcnNlci5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
aHRtbFxwYXJzZXJcSW5wdXRTdHJlYW1QcmVwcm9jZXNzb3IuaCIgLz4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVycyBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVycwppbmRl
eCBiNjcyYzdjOGZjNGNjNWZmYzdlZmYxODkwNmNmYjc4NWQyNzczNzc4Li45Njc5NjU4ODU0ZTkz
YmZhNmQwMTY2MjIzMmIxMDU0MTJhZjgyYjdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnMKKysrIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzCkBAIC0xMjUzMSw2ICsx
MjUzMSw5IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxodG1sXFdlZWtJbnB1dFR5cGUu
aCI+CiAgICAgICA8RmlsdGVyPmh0bWw8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KKyAgICA8
Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGh0bWxccGFyc2VyXEF0b21pY0hUTUxUb2tlbi5oIj4KKyAg
ICAgIDxGaWx0ZXI+aHRtbFxwYXJzZXI8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KICAgICA8
Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGh0bWxccGFyc2VyXEJhY2tncm91bmRIVE1MUGFyc2VyLmgi
PgogICAgICAgPEZpbHRlcj5odG1sXHBhcnNlcjwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgpA
QCAtMTI1OTcsOSArMTI2MDAsNiBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caHRtbFxw
YXJzZXJcSFRNTFRva2VuaXplci5oIj4KICAgICAgIDxGaWx0ZXI+aHRtbFxwYXJzZXI8L0ZpbHRl
cj4KICAgICA8L0NsSW5jbHVkZT4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGh0bWxccGFy
c2VyXEhUTUxUb2tlblR5cGVzLmgiPgotICAgICAgPEZpbHRlcj5odG1sXHBhcnNlcjwvRmlsdGVy
PgotICAgIDwvQ2xJbmNsdWRlPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caHRtbFxwYXJz
ZXJcSFRNTFRyZWVCdWlsZGVyLmgiPgogICAgICAgPEZpbHRlcj5odG1sXHBhcnNlcjwvRmlsdGVy
PgogICAgIDwvQ2xJbmNsdWRlPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDVhYzU3YmJmNTFhMGZkMjczZjI2NWQxMDk3MWUyNTQy
MzkzNjE1MDkuLmU0ZGIwNTFiZTAzNmE2YmY1Zjc2YmIzMjljOWE4OTVhYzM0ZGIzNTMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagor
KysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAg
LTExMjE4LDcgKzExMjE4LDcgQEAKIAkJOTdDMDc4NEYxMTY1RDVCRTAwM0EzMkVGIC8qIFN1ZmZp
eFRyZWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3VmZml4VHJlZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5N0MxRjU1MjEyMjg1NUNCMDBFREU2MTUgLyog
SFRNTFN0YWNrSXRlbS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBIVE1MU3Rh
Y2tJdGVtLmg7IHBhdGggPSBwYXJzZXIvSFRNTFN0YWNrSXRlbS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk5N0MxRjU1MjEyMjg1NUNCMDBFREU2MTYgLyogSFRNTFRva2VuLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEhUTUxUb2tlbi5oOyBwYXRoID0gcGFyc2Vy
L0hUTUxUb2tlbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk5N0MxRjU1MjEyMjg1
NUNCMDBFREU2MTcgLyogSFRNTFRva2VuVHlwZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBuYW1lID0gSFRNTFRva2VuVHlwZXMuaDsgcGF0aCA9IHBhcnNlci9IVE1MVG9rZW5UeXBlcy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5N0MxRjU1MjEyMjg1NUNCMDBFREU2MTcg
LyogQXRvbWljSFRNTFRva2VuLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEF0
b21pY0hUTUxUb2tlbi5oOyBwYXRoID0gcGFyc2VyL0F0b21pY0hUTUxUb2tlbi5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk5N0M0NzFEOTEyRjkyNUJDMDA4NjM1NEIgLyogQ29udGVu
dFNlY3VyaXR5UG9saWN5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IENvbnRlbnRTZWN1cml0eVBvbGljeS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTk3QzQ3MURBMTJGOTI1QkQwMDg2MzU0QiAvKiBDb250ZW50U2VjdXJpdHlQb2xpY3kuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29udGVudFNlY3VyaXR5UG9saWN5Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk3Qzc0MDEyMTYwM0Y3QTEwMDExRkYyRCAvKiBG
ZWF0dXJlT2JzZXJ2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
RmVhdHVyZU9ic2VydmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE4NzM4
LDcgKzE4NzM4LDcgQEAKIAkJCQk5N0MxRjU1MjEyMjg1NUNCMDBFREU2MTYgLyogSFRNTFRva2Vu
LmggKi8sCiAJCQkJOTc3QjM4NUUxMjI4ODNFOTAwQjgxRkY4IC8qIEhUTUxUb2tlbml6ZXIuY3Bw
ICovLAogCQkJCTk3N0IzODVGMTIyODgzRTkwMEI4MUZGOCAvKiBIVE1MVG9rZW5pemVyLmggKi8s
Ci0JCQkJOTdDMUY1NTIxMjI4NTVDQjAwRURFNjE3IC8qIEhUTUxUb2tlblR5cGVzLmggKi8sCisJ
CQkJOTdDMUY1NTIxMjI4NTVDQjAwRURFNjE3IC8qIEF0b21pY0hUTUxUb2tlbi5oICovLAogCQkJ
CTk3N0IzNzIxMTIyODcyMTcwMEI4MUZGOCAvKiBIVE1MVHJlZUJ1aWxkZXIuY3BwICovLAogCQkJ
CTk3N0IzNzIyMTIyODcyMTcwMEI4MUZGOCAvKiBIVE1MVHJlZUJ1aWxkZXIuaCAqLywKIAkJCQk5
NzdCMzg2MDEyMjg4M0U5MDBCODFGRjggLyogSFRNTFZpZXdTb3VyY2VQYXJzZXIuY3BwICovLApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlld1NvdXJjZURvY3VtZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZXdTb3VyY2VEb2N1bWVudC5jcHAKaW5kZXgg
YWJmMjQzODM2ZDNiNzM0MGViZDEzOGQwNjMzYmI1MDJhYmE4OTk0Mi4uYjdmZGIzNmNiYzk1Mzc0
YWFhODBiNTMwMGQ5YmUzZGFiMDQ5NjMyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MVmlld1NvdXJjZURvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxWaWV3U291cmNlRG9jdW1lbnQuY3BwCkBAIC05OSwyNCArOTksMjQgQEAgdm9pZCBIVE1MVmll
d1NvdXJjZURvY3VtZW50OjphZGRTb3VyY2UoY29uc3QgU3RyaW5nJiBzb3VyY2UsIEhUTUxUb2tl
biYgdG9rZW4pCiAgICAgICAgIGNyZWF0ZUNvbnRhaW5pbmdUYWJsZSgpOwogCiAgICAgc3dpdGNo
ICh0b2tlbi50eXBlKCkpIHsKLSAgICBjYXNlIEhUTUxUb2tlblR5cGVzOjpVbmluaXRpYWxpemVk
OgorICAgIGNhc2UgSFRNTFRva2VuOjpVbmluaXRpYWxpemVkOgogICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBIVE1MVG9rZW5UeXBlczo6RE9D
VFlQRToKKyAgICBjYXNlIEhUTUxUb2tlbjo6RE9DVFlQRToKICAgICAgICAgcHJvY2Vzc0RvY3R5
cGVUb2tlbihzb3VyY2UsIHRva2VuKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBIVE1MVG9r
ZW5UeXBlczo6RW5kT2ZGaWxlOgorICAgIGNhc2UgSFRNTFRva2VuOjpFbmRPZkZpbGU6CiAgICAg
ICAgIGlmICghbV90Ym9keS0+aGFzQ2hpbGROb2RlcygpKQogICAgICAgICAgICAgYWRkTGluZShT
dHJpbmcoKSk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgSFRNTFRva2VuVHlwZXM6OlN0YXJ0
VGFnOgotICAgIGNhc2UgSFRNTFRva2VuVHlwZXM6OkVuZFRhZzoKKyAgICBjYXNlIEhUTUxUb2tl
bjo6U3RhcnRUYWc6CisgICAgY2FzZSBIVE1MVG9rZW46OkVuZFRhZzoKICAgICAgICAgcHJvY2Vz
c1RhZ1Rva2VuKHNvdXJjZSwgdG9rZW4pOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEhUTUxU
b2tlblR5cGVzOjpDb21tZW50OgorICAgIGNhc2UgSFRNTFRva2VuOjpDb21tZW50OgogICAgICAg
ICBwcm9jZXNzQ29tbWVudFRva2VuKHNvdXJjZSwgdG9rZW4pOwogICAgICAgICBicmVhazsKLSAg
ICBjYXNlIEhUTUxUb2tlblR5cGVzOjpDaGFyYWN0ZXI6CisgICAgY2FzZSBIVE1MVG9rZW46OkNo
YXJhY3RlcjoKICAgICAgICAgcHJvY2Vzc0NoYXJhY3RlclRva2VuKHNvdXJjZSwgdG9rZW4pOwog
ICAgICAgICBicmVhazsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3Bh
cnNlci9BdG9taWNIVE1MVG9rZW4uaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0F0b21p
Y0hUTUxUb2tlbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZkMDM3MjE3ZWIwNDMyOGMzODM1OGQzZWE1N2Q4NTkz
ZTI3OTc1NDYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9B
dG9taWNIVE1MVG9rZW4uaApAQCAtMCwwICsxLDMxMCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMyBHb29nbGUsIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgQXRvbWljSFRNTFRva2VuX2gKKyNk
ZWZpbmUgQXRvbWljSFRNTFRva2VuX2gKKworI2luY2x1ZGUgIkF0dHJpYnV0ZS5oIgorI2luY2x1
ZGUgIkNvbXBhY3RIVE1MVG9rZW4uaCIKKyNpbmNsdWRlICJIVE1MVG9rZW4uaCIKKyNpbmNsdWRl
IDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitjbGFzcyBBdG9taWNIVE1MVG9rZW4gOiBwdWJsaWMgUmVmQ291bnRlZDxB
dG9taWNIVE1MVG9rZW4+IHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShBdG9taWNIVE1MVG9r
ZW4pOworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPEF0b21pY0hUTUxUb2tlbj4gY3Jl
YXRlKEhUTUxUb2tlbiYgdG9rZW4pCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3
IEF0b21pY0hUTUxUb2tlbih0b2tlbikpOworICAgIH0KKworI2lmIEVOQUJMRShUSFJFQURFRF9I
VE1MX1BBUlNFUikKKworICAgIHN0YXRpYyBQYXNzUmVmUHRyPEF0b21pY0hUTUxUb2tlbj4gY3Jl
YXRlKGNvbnN0IENvbXBhY3RIVE1MVG9rZW4mIHRva2VuKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBBdG9taWNIVE1MVG9rZW4odG9rZW4pKTsKKyAgICB9CisKKyNlbmRpZgor
CisgICAgc3RhdGljIFBhc3NSZWZQdHI8QXRvbWljSFRNTFRva2VuPiBjcmVhdGUoSFRNTFRva2Vu
OjpUeXBlIHR5cGUsIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgY29uc3QgVmVjdG9yPEF0dHJp
YnV0ZT4mIGF0dHJpYnV0ZXMgPSBWZWN0b3I8QXR0cmlidXRlPigpKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBBdG9taWNIVE1MVG9rZW4odHlwZSwgbmFtZSwgYXR0cmlidXRl
cykpOworICAgIH0KKworICAgIGJvb2wgZm9yY2VRdWlya3MoKSBjb25zdAorICAgIHsKKyAgICAg
ICAgQVNTRVJUKG1fdHlwZSA9PSBIVE1MVG9rZW46OkRPQ1RZUEUpOworICAgICAgICByZXR1cm4g
bV9kb2N0eXBlRGF0YS0+bV9mb3JjZVF1aXJrczsKKyAgICB9CisKKyAgICBIVE1MVG9rZW46OlR5
cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQorCisgICAgY29uc3QgQXRvbWljU3Ry
aW5nJiBuYW1lKCkgY29uc3QKKyAgICB7CisgICAgICAgIEFTU0VSVCh1c2VzTmFtZSgpKTsKKyAg
ICAgICAgcmV0dXJuIG1fbmFtZTsKKyAgICB9CisKKyAgICB2b2lkIHNldE5hbWUoY29uc3QgQXRv
bWljU3RyaW5nJiBuYW1lKQorICAgIHsKKyAgICAgICAgQVNTRVJUKHVzZXNOYW1lKCkpOworICAg
ICAgICBtX25hbWUgPSBuYW1lOworICAgIH0KKworICAgIGJvb2wgc2VsZkNsb3NpbmcoKSBjb25z
dAorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBIVE1MVG9rZW46OlN0YXJ0VGFnIHx8
IG1fdHlwZSA9PSBIVE1MVG9rZW46OkVuZFRhZyk7CisgICAgICAgIHJldHVybiBtX3NlbGZDbG9z
aW5nOworICAgIH0KKworICAgIEF0dHJpYnV0ZSogZ2V0QXR0cmlidXRlSXRlbShjb25zdCBRdWFs
aWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lKQorICAgIHsKKyAgICAgICAgQVNTRVJUKHVzZXNBdHRy
aWJ1dGVzKCkpOworICAgICAgICByZXR1cm4gZmluZEF0dHJpYnV0ZUluVmVjdG9yKG1fYXR0cmli
dXRlcywgYXR0cmlidXRlTmFtZSk7CisgICAgfQorCisgICAgVmVjdG9yPEF0dHJpYnV0ZT4mIGF0
dHJpYnV0ZXMoKQorICAgIHsKKyAgICAgICAgQVNTRVJUKHVzZXNBdHRyaWJ1dGVzKCkpOworICAg
ICAgICByZXR1cm4gbV9hdHRyaWJ1dGVzOworICAgIH0KKworICAgIGNvbnN0IFZlY3RvcjxBdHRy
aWJ1dGU+JiBhdHRyaWJ1dGVzKCkgY29uc3QKKyAgICB7CisgICAgICAgIEFTU0VSVCh1c2VzQXR0
cmlidXRlcygpKTsKKyAgICAgICAgcmV0dXJuIG1fYXR0cmlidXRlczsKKyAgICB9CisKKyAgICBj
b25zdCBVQ2hhciogY2hhcmFjdGVycygpIGNvbnN0CisgICAgeworICAgICAgICBBU1NFUlQobV90
eXBlID09IEhUTUxUb2tlbjo6Q2hhcmFjdGVyKTsKKyAgICAgICAgcmV0dXJuIG1fZXh0ZXJuYWxD
aGFyYWN0ZXJzOworICAgIH0KKworICAgIHNpemVfdCBjaGFyYWN0ZXJzTGVuZ3RoKCkgY29uc3QK
KyAgICB7CisgICAgICAgIEFTU0VSVChtX3R5cGUgPT0gSFRNTFRva2VuOjpDaGFyYWN0ZXIpOwor
ICAgICAgICByZXR1cm4gbV9leHRlcm5hbENoYXJhY3RlcnNMZW5ndGg7CisgICAgfQorCisgICAg
Ym9vbCBpc0FsbDhCaXREYXRhKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2lzQWxs
OEJpdERhdGE7CisgICAgfQorCisgICAgY29uc3QgU3RyaW5nJiBjb21tZW50KCkgY29uc3QKKyAg
ICB7CisgICAgICAgIEFTU0VSVChtX3R5cGUgPT0gSFRNTFRva2VuOjpDb21tZW50KTsKKyAgICAg
ICAgcmV0dXJuIG1fZGF0YTsKKyAgICB9CisKKyAgICAvLyBGSVhNRTogRGlzdGluZ3Vpc2ggYmV0
d2VlbiBhIG1pc3NpbmcgcHVibGljIGlkZW50aWZlciBhbmQgYW4gZW1wdHkgb25lLgorICAgIFdU
Rjo6VmVjdG9yPFVDaGFyPiYgcHVibGljSWRlbnRpZmllcigpIGNvbnN0CisgICAgeworICAgICAg
ICBBU1NFUlQobV90eXBlID09IEhUTUxUb2tlbjo6RE9DVFlQRSk7CisgICAgICAgIHJldHVybiBt
X2RvY3R5cGVEYXRhLT5tX3B1YmxpY0lkZW50aWZpZXI7CisgICAgfQorCisgICAgLy8gRklYTUU6
IERpc3Rpbmd1aXNoIGJldHdlZW4gYSBtaXNzaW5nIHN5c3RlbSBpZGVudGlmZXIgYW5kIGFuIGVt
cHR5IG9uZS4KKyAgICBXVEY6OlZlY3RvcjxVQ2hhcj4mIHN5c3RlbUlkZW50aWZpZXIoKSBjb25z
dAorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBIVE1MVG9rZW46OkRPQ1RZUEUpOwor
ICAgICAgICByZXR1cm4gbV9kb2N0eXBlRGF0YS0+bV9zeXN0ZW1JZGVudGlmaWVyOworICAgIH0K
KworICAgIHZvaWQgY2xlYXJFeHRlcm5hbENoYXJhY3RlcnMoKQorICAgIHsKKyAgICAgICAgbV9l
eHRlcm5hbENoYXJhY3RlcnMgPSAwOworICAgICAgICBtX2V4dGVybmFsQ2hhcmFjdGVyc0xlbmd0
aCA9IDA7CisgICAgICAgIG1faXNBbGw4Qml0RGF0YSA9IGZhbHNlOworICAgIH0KKworcHJpdmF0
ZToKKyAgICBleHBsaWNpdCBBdG9taWNIVE1MVG9rZW4oSFRNTFRva2VuJiB0b2tlbikKKyAgICAg
ICAgOiBtX3R5cGUodG9rZW4udHlwZSgpKQorICAgIHsKKyAgICAgICAgc3dpdGNoIChtX3R5cGUp
IHsKKyAgICAgICAgY2FzZSBIVE1MVG9rZW46OlVuaW5pdGlhbGl6ZWQ6CisgICAgICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEhU
TUxUb2tlbjo6RE9DVFlQRToKKyAgICAgICAgICAgIG1fbmFtZSA9IEF0b21pY1N0cmluZyh0b2tl
bi5uYW1lU3RyaW5nKCkpOworICAgICAgICAgICAgbV9kb2N0eXBlRGF0YSA9IHRva2VuLnJlbGVh
c2VEb2N0eXBlRGF0YSgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgSFRNTFRv
a2VuOjpFbmRPZkZpbGU6CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBIVE1MVG9r
ZW46OlN0YXJ0VGFnOgorICAgICAgICBjYXNlIEhUTUxUb2tlbjo6RW5kVGFnOiB7CisgICAgICAg
ICAgICBtX3NlbGZDbG9zaW5nID0gdG9rZW4uc2VsZkNsb3NpbmcoKTsKKyAgICAgICAgICAgIG1f
bmFtZSA9IEF0b21pY1N0cmluZyh0b2tlbi5uYW1lU3RyaW5nKCkpOworICAgICAgICAgICAgaW5p
dGlhbGl6ZUF0dHJpYnV0ZXModG9rZW4uYXR0cmlidXRlcygpKTsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICB9CisgICAgICAgIGNhc2UgSFRNTFRva2VuOjpDb21tZW50OgorICAgICAgICAg
ICAgaWYgKHRva2VuLmlzQWxsOEJpdERhdGEoKSkKKyAgICAgICAgICAgICAgICBtX2RhdGEgPSBT
dHJpbmc6Om1ha2U4Qml0RnJvbTE2Qml0U291cmNlKHRva2VuLmNvbW1lbnQoKS5kYXRhKCksIHRv
a2VuLmNvbW1lbnQoKS5zaXplKCkpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAg
IG1fZGF0YSA9IFN0cmluZyh0b2tlbi5jb21tZW50KCkuZGF0YSgpLCB0b2tlbi5jb21tZW50KCku
c2l6ZSgpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEhUTUxUb2tlbjo6Q2hh
cmFjdGVyOgorICAgICAgICAgICAgbV9leHRlcm5hbENoYXJhY3RlcnMgPSB0b2tlbi5jaGFyYWN0
ZXJzKCkuZGF0YSgpOworICAgICAgICAgICAgbV9leHRlcm5hbENoYXJhY3RlcnNMZW5ndGggPSB0
b2tlbi5jaGFyYWN0ZXJzKCkuc2l6ZSgpOworICAgICAgICAgICAgbV9pc0FsbDhCaXREYXRhID0g
dG9rZW4uaXNBbGw4Qml0RGF0YSgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAg
ICB9CisKKyNpZiBFTkFCTEUoVEhSRUFERURfSFRNTF9QQVJTRVIpCisKKyAgICBleHBsaWNpdCBB
dG9taWNIVE1MVG9rZW4oY29uc3QgQ29tcGFjdEhUTUxUb2tlbiYgdG9rZW4pCisgICAgICAgIDog
bV90eXBlKHRva2VuLnR5cGUoKSkKKyAgICB7CisgICAgICAgIHN3aXRjaCAobV90eXBlKSB7Cisg
ICAgICAgIGNhc2UgSFRNTFRva2VuOjpVbmluaXRpYWxpemVkOgorICAgICAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBIVE1MVG9r
ZW46OkRPQ1RZUEU6CisgICAgICAgICAgICBtX25hbWUgPSB0b2tlbi5kYXRhKCk7CisgICAgICAg
ICAgICBtX2RvY3R5cGVEYXRhID0gYWRvcHRQdHIobmV3IERvY3R5cGVEYXRhKCkpOworICAgICAg
ICAgICAgbV9kb2N0eXBlRGF0YS0+bV9oYXNQdWJsaWNJZGVudGlmaWVyID0gdHJ1ZTsKKyAgICAg
ICAgICAgIG1fZG9jdHlwZURhdGEtPm1fcHVibGljSWRlbnRpZmllci5hcHBlbmQodG9rZW4ucHVi
bGljSWRlbnRpZmllcigpLmNoYXJhY3RlcnMoKSwgdG9rZW4ucHVibGljSWRlbnRpZmllcigpLmxl
bmd0aCgpKTsKKyAgICAgICAgICAgIG1fZG9jdHlwZURhdGEtPm1faGFzU3lzdGVtSWRlbnRpZmll
ciA9IHRydWU7CisgICAgICAgICAgICBtX2RvY3R5cGVEYXRhLT5tX3N5c3RlbUlkZW50aWZpZXIu
YXBwZW5kKHRva2VuLnN5c3RlbUlkZW50aWZpZXIoKS5jaGFyYWN0ZXJzKCksIHRva2VuLnN5c3Rl
bUlkZW50aWZpZXIoKS5sZW5ndGgoKSk7CisgICAgICAgICAgICBtX2RvY3R5cGVEYXRhLT5tX2Zv
cmNlUXVpcmtzID0gdG9rZW4uZG9jdHlwZUZvcmNlc1F1aXJrcygpOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGNhc2UgSFRNTFRva2VuOjpFbmRPZkZpbGU6CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgY2FzZSBIVE1MVG9rZW46OlN0YXJ0VGFnOgorICAgICAgICAgICAgbV9hdHRy
aWJ1dGVzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkodG9rZW4uYXR0cmlidXRlcygpLnNpemUoKSk7
CisgICAgICAgICAgICBmb3IgKFZlY3RvcjxDb21wYWN0QXR0cmlidXRlPjo6Y29uc3RfaXRlcmF0
b3IgaXQgPSB0b2tlbi5hdHRyaWJ1dGVzKCkuYmVnaW4oKTsgaXQgIT0gdG9rZW4uYXR0cmlidXRl
cygpLmVuZCgpOyArK2l0KQorICAgICAgICAgICAgICAgIG1fYXR0cmlidXRlcy5hcHBlbmQoQXR0
cmlidXRlKFF1YWxpZmllZE5hbWUobnVsbEF0b20sIGl0LT5uYW1lKCksIG51bGxBdG9tKSwgaXQt
PnZhbHVlKCkpKTsKKyAgICAgICAgICAgIC8vIEZhbGwgdGhyb3VnaCEKKyAgICAgICAgY2FzZSBI
VE1MVG9rZW46OkVuZFRhZzoKKyAgICAgICAgICAgIG1fc2VsZkNsb3NpbmcgPSB0b2tlbi5zZWxm
Q2xvc2luZygpOworICAgICAgICAgICAgbV9uYW1lID0gQXRvbWljU3RyaW5nKHRva2VuLmRhdGEo
KSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBIVE1MVG9rZW46OkNvbW1lbnQ6
CisgICAgICAgICAgICBtX2RhdGEgPSB0b2tlbi5kYXRhKCk7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgY2FzZSBIVE1MVG9rZW46OkNoYXJhY3RlcjoKKyAgICAgICAgICAgIG1fZXh0ZXJu
YWxDaGFyYWN0ZXJzID0gdG9rZW4uZGF0YSgpLmNoYXJhY3RlcnMoKTsKKyAgICAgICAgICAgIG1f
ZXh0ZXJuYWxDaGFyYWN0ZXJzTGVuZ3RoID0gdG9rZW4uZGF0YSgpLmxlbmd0aCgpOworICAgICAg
ICAgICAgbV9pc0FsbDhCaXREYXRhID0gdG9rZW4uaXNBbGw4Qml0RGF0YSgpOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisKKyNlbmRpZgorCisgICAgZXhwbGljaXQgQXRv
bWljSFRNTFRva2VuKEhUTUxUb2tlbjo6VHlwZSB0eXBlKQorICAgICAgICA6IG1fdHlwZSh0eXBl
KQorICAgICAgICAsIG1fZXh0ZXJuYWxDaGFyYWN0ZXJzKDApCisgICAgICAgICwgbV9leHRlcm5h
bENoYXJhY3RlcnNMZW5ndGgoMCkKKyAgICAgICAgLCBtX2lzQWxsOEJpdERhdGEoZmFsc2UpCisg
ICAgICAgICwgbV9zZWxmQ2xvc2luZyhmYWxzZSkKKyAgICB7CisgICAgfQorCisgICAgQXRvbWlj
SFRNTFRva2VuKEhUTUxUb2tlbjo6VHlwZSB0eXBlLCBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUs
IGNvbnN0IFZlY3RvcjxBdHRyaWJ1dGU+JiBhdHRyaWJ1dGVzID0gVmVjdG9yPEF0dHJpYnV0ZT4o
KSkKKyAgICAgICAgOiBtX3R5cGUodHlwZSkKKyAgICAgICAgLCBtX25hbWUobmFtZSkKKyAgICAg
ICAgLCBtX2V4dGVybmFsQ2hhcmFjdGVycygwKQorICAgICAgICAsIG1fZXh0ZXJuYWxDaGFyYWN0
ZXJzTGVuZ3RoKDApCisgICAgICAgICwgbV9pc0FsbDhCaXREYXRhKGZhbHNlKQorICAgICAgICAs
IG1fc2VsZkNsb3NpbmcoZmFsc2UpCisgICAgICAgICwgbV9hdHRyaWJ1dGVzKGF0dHJpYnV0ZXMp
CisgICAgeworICAgICAgICBBU1NFUlQodXNlc05hbWUoKSk7CisgICAgfQorCisgICAgSFRNTFRv
a2VuOjpUeXBlIG1fdHlwZTsKKworICAgIHZvaWQgaW5pdGlhbGl6ZUF0dHJpYnV0ZXMoY29uc3Qg
SFRNTFRva2VuOjpBdHRyaWJ1dGVMaXN0JiBhdHRyaWJ1dGVzKTsKKyAgICBRdWFsaWZpZWROYW1l
IG5hbWVGb3JBdHRyaWJ1dGUoY29uc3QgSFRNTFRva2VuOjpBdHRyaWJ1dGUmKSBjb25zdDsKKwor
ICAgIGJvb2wgdXNlc05hbWUoKSBjb25zdDsKKworICAgIGJvb2wgdXNlc0F0dHJpYnV0ZXMoKSBj
b25zdDsKKworICAgIC8vICJuYW1lIiBmb3IgRE9DVFlQRSwgU3RhcnRUYWcsIGFuZCBFbmRUYWcK
KyAgICBBdG9taWNTdHJpbmcgbV9uYW1lOworCisgICAgLy8gImRhdGEiIGZvciBDb21tZW50Cisg
ICAgU3RyaW5nIG1fZGF0YTsKKworICAgIC8vICJjaGFyYWN0ZXJzIiBmb3IgQ2hhcmFjdGVyCisg
ICAgLy8KKyAgICAvLyBXZSBkb24ndCB3YW50IHRvIGNvcHkgdGhlIHRoZSBjaGFyYWN0ZXJzIG91
dCBvZiB0aGUgVG9rZW4sIHNvIHdlCisgICAgLy8ga2VlcCBhIHBvaW50ZXIgdG8gaXRzIGJ1ZmZl
ciBpbnN0ZWFkLiBUaGlzIGJ1ZmZlciBpcyBvd25lZCBieSB0aGUKKyAgICAvLyBUb2tlbiBhbmQg
Y2F1c2VzIGEgbGlmZXRpbWUgZGVwZW5kZW5jZSBiZXR3ZWVuIHRoZXNlIG9iamVjdHMuCisgICAg
Ly8KKyAgICAvLyBGSVhNRTogQWRkIGEgbWVjaGFuaXNtIGZvciAiaW50ZXJuYWxpemluZyIgdGhl
IGNoYXJhY3RlcnMgd2hlbiB0aGUKKyAgICAvLyAgICAgICAgSFRNTFRva2VuIGlzIGRlc3RydWN0
ZWQuCisgICAgY29uc3QgVUNoYXIqIG1fZXh0ZXJuYWxDaGFyYWN0ZXJzOworICAgIHNpemVfdCBt
X2V4dGVybmFsQ2hhcmFjdGVyc0xlbmd0aDsKKyAgICBib29sIG1faXNBbGw4Qml0RGF0YTsKKwor
ICAgIC8vIEZvciBET0NUWVBFCisgICAgT3duUHRyPERvY3R5cGVEYXRhPiBtX2RvY3R5cGVEYXRh
OworCisgICAgLy8gRm9yIFN0YXJ0VGFnIGFuZCBFbmRUYWcKKyAgICBib29sIG1fc2VsZkNsb3Np
bmc7CisKKyAgICBWZWN0b3I8QXR0cmlidXRlPiBtX2F0dHJpYnV0ZXM7Cit9OworCitpbmxpbmUg
dm9pZCBBdG9taWNIVE1MVG9rZW46OmluaXRpYWxpemVBdHRyaWJ1dGVzKGNvbnN0IEhUTUxUb2tl
bjo6QXR0cmlidXRlTGlzdCYgYXR0cmlidXRlcykKK3sKKyAgICBzaXplX3Qgc2l6ZSA9IGF0dHJp
YnV0ZXMuc2l6ZSgpOworICAgIGlmICghc2l6ZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9h
dHRyaWJ1dGVzLmNsZWFyKCk7CisgICAgbV9hdHRyaWJ1dGVzLnJlc2VydmVJbml0aWFsQ2FwYWNp
dHkoc2l6ZSk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKKyAgICAg
ICAgY29uc3QgSFRNTFRva2VuOjpBdHRyaWJ1dGUmIGF0dHJpYnV0ZSA9IGF0dHJpYnV0ZXNbaV07
CisgICAgICAgIGlmIChhdHRyaWJ1dGUubV9uYW1lLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIGNv
bnRpbnVlOworCisgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgYmUgYWJsZSB0byBhZGQgdGhl
IGZvbGxvd2luZyBBU1NFUlQgb25jZSB3ZSBmaXgKKyAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYyOTcxCisgICAgICAgIC8vICAgQVNTRVJUKGF0dHJp
YnV0ZS5tX25hbWVSYW5nZS5tX3N0YXJ0KTsKKyAgICAgICAgQVNTRVJUKGF0dHJpYnV0ZS5tX25h
bWVSYW5nZS5tX2VuZCk7CisgICAgICAgIEFTU0VSVChhdHRyaWJ1dGUubV92YWx1ZVJhbmdlLm1f
c3RhcnQpOworICAgICAgICBBU1NFUlQoYXR0cmlidXRlLm1fdmFsdWVSYW5nZS5tX2VuZCk7CisK
KyAgICAgICAgQXRvbWljU3RyaW5nIHZhbHVlKGF0dHJpYnV0ZS5tX3ZhbHVlLmRhdGEoKSwgYXR0
cmlidXRlLm1fdmFsdWUuc2l6ZSgpKTsKKyAgICAgICAgY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFt
ZSA9IG5hbWVGb3JBdHRyaWJ1dGUoYXR0cmlidXRlKTsKKyAgICAgICAgaWYgKCFmaW5kQXR0cmli
dXRlSW5WZWN0b3IobV9hdHRyaWJ1dGVzLCBuYW1lKSkKKyAgICAgICAgICAgIG1fYXR0cmlidXRl
cy5hcHBlbmQoQXR0cmlidXRlKG5hbWUsIHZhbHVlKSk7CisgICAgfQorfQorCit9CisKKyNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQmFja2dyb3VuZEhUTUxQ
YXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQmFja2dyb3VuZEhUTUxQYXJz
ZXIuY3BwCmluZGV4IDg2NzVkYjAwYTEzMzNiZDczNTgwNWI4ZTAzNzcyZWZlMTY5MDRmNWIuLjU3
ODFhMzg3OGE0NjdkMWQwYzg4YjhlNjZhNGQ3NzNlMzA4ZTQ5ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0JhY2tncm91bmRIVE1MUGFyc2VyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3BhcnNlci9CYWNrZ3JvdW5kSFRNTFBhcnNlci5jcHAKQEAgLTExMyw3
ICsxMTMsNyBAQCB2b2lkIEJhY2tncm91bmRIVE1MUGFyc2VyOjptYXJrRW5kT2ZGaWxlKCkKIAog
Ym9vbCBCYWNrZ3JvdW5kSFRNTFBhcnNlcjo6c2ltdWxhdGVUcmVlQnVpbGRlcihjb25zdCBDb21w
YWN0SFRNTFRva2VuJiB0b2tlbikKIHsKLSAgICBpZiAodG9rZW4udHlwZSgpID09IEhUTUxUb2tl
blR5cGVzOjpTdGFydFRhZykgeworICAgIGlmICh0b2tlbi50eXBlKCkgPT0gSFRNTFRva2VuOjpT
dGFydFRhZykgewogICAgICAgICBjb25zdCBTdHJpbmcmIHRhZ05hbWUgPSB0b2tlbi5kYXRhKCk7
CiAgICAgICAgIGlmICh0aHJlYWRTYWZlTWF0Y2godGFnTmFtZSwgU1ZHTmFtZXM6OnN2Z1RhZykK
ICAgICAgICAgICAgIHx8IHRocmVhZFNhZmVNYXRjaCh0YWdOYW1lLCBNYXRoTUxOYW1lczo6bWF0
aFRhZykpCkBAIC0xMzUsNyArMTM1LDcgQEAgYm9vbCBCYWNrZ3JvdW5kSFRNTFBhcnNlcjo6c2lt
dWxhdGVUcmVlQnVpbGRlcihjb25zdCBDb21wYWN0SFRNTFRva2VuJiB0b2tlbikKICAgICAgICAg
ICAgIG1fdG9rZW5pemVyLT5zZXRTdGF0ZShIVE1MVG9rZW5pemVyOjpSQVdURVhUU3RhdGUpOwog
ICAgIH0KIAotICAgIGlmICh0b2tlbi50eXBlKCkgPT0gSFRNTFRva2VuVHlwZXM6OkVuZFRhZykg
eworICAgIGlmICh0b2tlbi50eXBlKCkgPT0gSFRNTFRva2VuOjpFbmRUYWcpIHsKICAgICAgICAg
Y29uc3QgU3RyaW5nJiB0YWdOYW1lID0gdG9rZW4uZGF0YSgpOwogICAgICAgICBpZiAodGhyZWFk
U2FmZU1hdGNoKHRhZ05hbWUsIFNWR05hbWVzOjpzdmdUYWcpIHx8IHRocmVhZFNhZmVNYXRjaCh0
YWdOYW1lLCBNYXRoTUxOYW1lczo6bWF0aFRhZykpCiAgICAgICAgICAgICBtX2luRm9yZWlnbkNv
bnRlbnQgPSBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0Nv
bXBhY3RIVE1MVG9rZW4uY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQ29tcGFjdEhU
TUxUb2tlbi5jcHAKaW5kZXggOTJlNjEzNDkzODUyYmE2OWU5YTJhM2MxY2NkZmIyNDliYmIxZmFl
Ni4uMTY4OTEzMjEzYjRiNDYyOWQxNGRkNDU0NjQ1ZTllYTI3NDc0YjU0ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQ29tcGFjdEhUTUxUb2tlbi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQ29tcGFjdEhUTUxUb2tlbi5jcHAKQEAgLTUxLDEwICs1
MSwxMCBAQCBDb21wYWN0SFRNTFRva2VuOjpDb21wYWN0SFRNTFRva2VuKGNvbnN0IEhUTUxUb2tl
biogdG9rZW4sIGNvbnN0IFRleHRQb3NpdGlvbiYgdAogICAgICwgbV90ZXh0UG9zaXRpb24odGV4
dFBvc2l0aW9uKQogewogICAgIHN3aXRjaCAobV90eXBlKSB7Ci0gICAgY2FzZSBIVE1MVG9rZW5U
eXBlczo6VW5pbml0aWFsaXplZDoKKyAgICBjYXNlIEhUTUxUb2tlbjo6VW5pbml0aWFsaXplZDoK
ICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2Ug
SFRNTFRva2VuVHlwZXM6OkRPQ1RZUEU6IHsKKyAgICBjYXNlIEhUTUxUb2tlbjo6RE9DVFlQRTog
ewogICAgICAgICBtX2RhdGEgPSBTdHJpbmcodG9rZW4tPm5hbWUoKS5kYXRhKCksIHRva2VuLT5u
YW1lKCkuc2l6ZSgpKTsKICAgICAgICAgLy8gVGhlcmUgaXMgb25seSAxIERPQ1RZUEUgdG9rZW4g
cGVyIGRvY3VtZW50LCBzbyB0byBhdm9pZCBpbmNyZWFzaW5nIHRoZQogICAgICAgICAvLyBzaXpl
IG9mIENvbXBhY3RIVE1MVG9rZW4sIHdlIGp1c3QgdXNlIHRoZSBtX2F0dHJpYnV0ZXMgdmVjdG9y
LgpAQCAtNjQsMTggKzY0LDE4IEBAIENvbXBhY3RIVE1MVG9rZW46OkNvbXBhY3RIVE1MVG9rZW4o
Y29uc3QgSFRNTFRva2VuKiB0b2tlbiwgY29uc3QgVGV4dFBvc2l0aW9uJiB0CiAgICAgICAgIG1f
ZG9jdHlwZUZvcmNlc1F1aXJrcyA9IHRva2VuLT5mb3JjZVF1aXJrcygpOwogICAgICAgICBicmVh
azsKICAgICB9Ci0gICAgY2FzZSBIVE1MVG9rZW5UeXBlczo6RW5kT2ZGaWxlOgorICAgIGNhc2Ug
SFRNTFRva2VuOjpFbmRPZkZpbGU6CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgSFRNTFRva2Vu
VHlwZXM6OlN0YXJ0VGFnOgorICAgIGNhc2UgSFRNTFRva2VuOjpTdGFydFRhZzoKICAgICAgICAg
bV9hdHRyaWJ1dGVzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkodG9rZW4tPmF0dHJpYnV0ZXMoKS5z
aXplKCkpOwogICAgICAgICBmb3IgKFZlY3RvcjxIVE1MVG9rZW46OkF0dHJpYnV0ZT46OmNvbnN0
X2l0ZXJhdG9yIGl0ID0gdG9rZW4tPmF0dHJpYnV0ZXMoKS5iZWdpbigpOyBpdCAhPSB0b2tlbi0+
YXR0cmlidXRlcygpLmVuZCgpOyArK2l0KQogICAgICAgICAgICAgbV9hdHRyaWJ1dGVzLmFwcGVu
ZChDb21wYWN0QXR0cmlidXRlKFN0cmluZyhpdC0+bV9uYW1lLmRhdGEoKSwgaXQtPm1fbmFtZS5z
aXplKCkpLCBTdHJpbmcoaXQtPm1fdmFsdWUuZGF0YSgpLCBpdC0+bV92YWx1ZS5zaXplKCkpKSk7
CiAgICAgICAgIC8vIEZhbGwgdGhyb3VnaCEKLSAgICBjYXNlIEhUTUxUb2tlblR5cGVzOjpFbmRU
YWc6CisgICAgY2FzZSBIVE1MVG9rZW46OkVuZFRhZzoKICAgICAgICAgbV9zZWxmQ2xvc2luZyA9
IHRva2VuLT5zZWxmQ2xvc2luZygpOwogICAgICAgICAvLyBGYWxsIHRocm91Z2ghCi0gICAgY2Fz
ZSBIVE1MVG9rZW5UeXBlczo6Q29tbWVudDoKLSAgICBjYXNlIEhUTUxUb2tlblR5cGVzOjpDaGFy
YWN0ZXI6CisgICAgY2FzZSBIVE1MVG9rZW46OkNvbW1lbnQ6CisgICAgY2FzZSBIVE1MVG9rZW46
OkNoYXJhY3RlcjoKICAgICAgICAgaWYgKHRva2VuLT5pc0FsbDhCaXREYXRhKCkpIHsKICAgICAg
ICAgICAgIG1fZGF0YSA9IFN0cmluZzo6bWFrZThCaXRGcm9tMTZCaXRTb3VyY2UodG9rZW4tPmRh
dGEoKS5kYXRhKCksIHRva2VuLT5kYXRhKCkuc2l6ZSgpKTsKICAgICAgICAgICAgIG1faXNBbGw4
Qml0RGF0YSA9IHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9D
b21wYWN0SFRNTFRva2VuLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9Db21wYWN0SFRN
TFRva2VuLmgKaW5kZXggNmM5NWY2YTFjZWVhYjY3OTQxOGU3MTMwNTk4M2M4ZmI5OTQzNzlmZS4u
YjdjODU2OTA0NmI0ZDIxN2JiMGUzOWMyZWU5MDZmMzA1MjYzZWI4MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQ29tcGFjdEhUTUxUb2tlbi5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvcGFyc2VyL0NvbXBhY3RIVE1MVG9rZW4uaApAQCAtMjgsNyArMjgsNyBAQAog
CiAjaWYgRU5BQkxFKFRIUkVBREVEX0hUTUxfUEFSU0VSKQogCi0jaW5jbHVkZSAiSFRNTFRva2Vu
VHlwZXMuaCIKKyNpbmNsdWRlICJIVE1MVG9rZW4uaCIKICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+
CiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5o
PgpAQCAtMzksNyArMzksNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIEhUTUxU
b2tlbjsKIGNsYXNzIFhTU0luZm87CiAKIGNsYXNzIENvbXBhY3RBdHRyaWJ1dGUgewpAQCAtNjUs
NyArNjQsNyBAQCBwdWJsaWM6CiAKICAgICBib29sIGlzU2FmZVRvU2VuZFRvQW5vdGhlclRocmVh
ZCgpIGNvbnN0OwogCi0gICAgSFRNTFRva2VuVHlwZXM6OlR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0
dXJuIHN0YXRpY19jYXN0PEhUTUxUb2tlblR5cGVzOjpUeXBlPihtX3R5cGUpOyB9CisgICAgSFRN
TFRva2VuOjpUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxIVE1MVG9rZW46
OlR5cGU+KG1fdHlwZSk7IH0KICAgICBjb25zdCBTdHJpbmcmIGRhdGEoKSBjb25zdCB7IHJldHVy
biBtX2RhdGE7IH0KICAgICBib29sIHNlbGZDbG9zaW5nKCkgY29uc3QgeyByZXR1cm4gbV9zZWxm
Q2xvc2luZzsgfQogICAgIGJvb2wgaXNBbGw4Qml0RGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1faXNB
bGw4Qml0RGF0YTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRN
TENvbnN0cnVjdGlvblNpdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTENv
bnN0cnVjdGlvblNpdGUuY3BwCmluZGV4IDUxZWQzMmVkMjEzMThhZGRiNmEzY2FjYTI0Mzk2ZmNi
OTVjNjk2NjguLmJlMWM1MzU0MzI5NTkwZjg5YmMwODc4MWQ2ZDUwYmUzZmE1ZTBmZTUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxDb25zdHJ1Y3Rpb25TaXRlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MQ29uc3RydWN0aW9uU2l0ZS5j
cHAKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJIVE1M
VHJlZUJ1aWxkZXIuaCIKIAorI2luY2x1ZGUgIkF0b21pY0hUTUxUb2tlbi5oIgogI2luY2x1ZGUg
IkNvbW1lbnQuaCIKICNpbmNsdWRlICJEb2N1bWVudEZyYWdtZW50LmgiCiAjaW5jbHVkZSAiRG9j
dW1lbnRUeXBlLmgiCkBAIC0zNDAsNyArMzQxLDcgQEAgdm9pZCBIVE1MQ29uc3RydWN0aW9uU2l0
ZTo6ZmluaXNoZWRQYXJzaW5nKCkKIAogdm9pZCBIVE1MQ29uc3RydWN0aW9uU2l0ZTo6aW5zZXJ0
RG9jdHlwZShBdG9taWNIVE1MVG9rZW4qIHRva2VuKQogewotICAgIEFTU0VSVCh0b2tlbi0+dHlw
ZSgpID09IEhUTUxUb2tlblR5cGVzOjpET0NUWVBFKTsKKyAgICBBU1NFUlQodG9rZW4tPnR5cGUo
KSA9PSBIVE1MVG9rZW46OkRPQ1RZUEUpOwogCiAgICAgY29uc3QgU3RyaW5nJiBwdWJsaWNJZCA9
IFN0cmluZzo6YWRvcHQodG9rZW4tPnB1YmxpY0lkZW50aWZpZXIoKSk7CiAgICAgY29uc3QgU3Ry
aW5nJiBzeXN0ZW1JZCA9IFN0cmluZzo6YWRvcHQodG9rZW4tPnN5c3RlbUlkZW50aWZpZXIoKSk7
CkBAIC0zNjUsMTkgKzM2NiwxOSBAQCB2b2lkIEhUTUxDb25zdHJ1Y3Rpb25TaXRlOjppbnNlcnRE
b2N0eXBlKEF0b21pY0hUTUxUb2tlbiogdG9rZW4pCiAKIHZvaWQgSFRNTENvbnN0cnVjdGlvblNp
dGU6Omluc2VydENvbW1lbnQoQXRvbWljSFRNTFRva2VuKiB0b2tlbikKIHsKLSAgICBBU1NFUlQo
dG9rZW4tPnR5cGUoKSA9PSBIVE1MVG9rZW5UeXBlczo6Q29tbWVudCk7CisgICAgQVNTRVJUKHRv
a2VuLT50eXBlKCkgPT0gSFRNTFRva2VuOjpDb21tZW50KTsKICAgICBhdHRhY2hMYXRlcihjdXJy
ZW50Tm9kZSgpLCBDb21tZW50OjpjcmVhdGUob3duZXJEb2N1bWVudEZvckN1cnJlbnROb2RlKCks
IHRva2VuLT5jb21tZW50KCkpKTsKIH0KIAogdm9pZCBIVE1MQ29uc3RydWN0aW9uU2l0ZTo6aW5z
ZXJ0Q29tbWVudE9uRG9jdW1lbnQoQXRvbWljSFRNTFRva2VuKiB0b2tlbikKIHsKLSAgICBBU1NF
UlQodG9rZW4tPnR5cGUoKSA9PSBIVE1MVG9rZW5UeXBlczo6Q29tbWVudCk7CisgICAgQVNTRVJU
KHRva2VuLT50eXBlKCkgPT0gSFRNTFRva2VuOjpDb21tZW50KTsKICAgICBhdHRhY2hMYXRlciht
X2F0dGFjaG1lbnRSb290LCBDb21tZW50OjpjcmVhdGUobV9kb2N1bWVudCwgdG9rZW4tPmNvbW1l
bnQoKSkpOwogfQogCiB2b2lkIEhUTUxDb25zdHJ1Y3Rpb25TaXRlOjppbnNlcnRDb21tZW50T25I
VE1MSHRtbEVsZW1lbnQoQXRvbWljSFRNTFRva2VuKiB0b2tlbikKIHsKLSAgICBBU1NFUlQodG9r
ZW4tPnR5cGUoKSA9PSBIVE1MVG9rZW5UeXBlczo6Q29tbWVudCk7CisgICAgQVNTRVJUKHRva2Vu
LT50eXBlKCkgPT0gSFRNTFRva2VuOjpDb21tZW50KTsKICAgICBDb250YWluZXJOb2RlKiBwYXJl
bnQgPSBtX29wZW5FbGVtZW50cy5yb290Tm9kZSgpOwogICAgIGF0dGFjaExhdGVyKHBhcmVudCwg
Q29tbWVudDo6Y3JlYXRlKHBhcmVudC0+ZG9jdW1lbnQoKSwgdG9rZW4tPmNvbW1lbnQoKSkpOwog
fQpAQCAtNDE5LDcgKzQyMCw3IEBAIHZvaWQgSFRNTENvbnN0cnVjdGlvblNpdGU6Omluc2VydEhU
TUxFbGVtZW50KEF0b21pY0hUTUxUb2tlbiogdG9rZW4pCiAKIHZvaWQgSFRNTENvbnN0cnVjdGlv
blNpdGU6Omluc2VydFNlbGZDbG9zaW5nSFRNTEVsZW1lbnQoQXRvbWljSFRNTFRva2VuKiB0b2tl
bikKIHsKLSAgICBBU1NFUlQodG9rZW4tPnR5cGUoKSA9PSBIVE1MVG9rZW5UeXBlczo6U3RhcnRU
YWcpOworICAgIEFTU0VSVCh0b2tlbi0+dHlwZSgpID09IEhUTUxUb2tlbjo6U3RhcnRUYWcpOwog
ICAgIC8vIE5vcm1hbGx5IEhUTUxFbGVtZW50U3RhY2sgaXMgcmVzcG9uc2libGUgZm9yIGNhbGxp
bmcgZmluaXNoUGFyc2luZ0NoaWxkcmVuLAogICAgIC8vIGJ1dCBzZWxmLWNsb3NpbmcgZWxlbWVu
dHMgYXJlIG5ldmVyIGluIHRoZSBlbGVtZW50IHN0YWNrIHNvIHRoZSBzdGFjawogICAgIC8vIGRv
ZXNuJ3QgZ2V0IGEgY2hhbmNlIHRvIHRlbGwgdGhlbSB0aGF0IHdlJ3JlIGRvbmUgcGFyc2luZyB0
aGVpciBjaGlsZHJlbi4KQEAgLTQ1NSw3ICs0NTYsNyBAQCB2b2lkIEhUTUxDb25zdHJ1Y3Rpb25T
aXRlOjppbnNlcnRTY3JpcHRFbGVtZW50KEF0b21pY0hUTUxUb2tlbiogdG9rZW4pCiAKIHZvaWQg
SFRNTENvbnN0cnVjdGlvblNpdGU6Omluc2VydEZvcmVpZ25FbGVtZW50KEF0b21pY0hUTUxUb2tl
biogdG9rZW4sIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZXNwYWNlVVJJKQogewotICAgIEFTU0VS
VCh0b2tlbi0+dHlwZSgpID09IEhUTUxUb2tlblR5cGVzOjpTdGFydFRhZyk7CisgICAgQVNTRVJU
KHRva2VuLT50eXBlKCkgPT0gSFRNTFRva2VuOjpTdGFydFRhZyk7CiAgICAgbm90SW1wbGVtZW50
ZWQoKTsgLy8gcGFyc2VFcnJvciB3aGVuIHhtbG5zIG9yIHhtbG5zOnhsaW5rIGFyZSB3cm9uZy4K
IAogICAgIFJlZlB0cjxFbGVtZW50PiBlbGVtZW50ID0gY3JlYXRlRWxlbWVudCh0b2tlbiwgbmFt
ZXNwYWNlVVJJKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxE
b2N1bWVudFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRG9jdW1l
bnRQYXJzZXIuY3BwCmluZGV4IDA5ODU0OGU2MTJjZmJhNGNmNzZhMTZjMDM3Zjk2ZjExMzNiOGQ2
NWMuLjY0ODUwY2Q5YTExYzU2MzI2ZThkNzYwMTM4Y2RmN2FjOWU5ZjM5NzkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFyc2VyLmNwcApAQCAtMjYs
NiArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkhUTUxEb2N1bWVudFBh
cnNlci5oIgogCisjaW5jbHVkZSAiQXRvbWljSFRNTFRva2VuLmgiCiAjaW5jbHVkZSAiQmFja2dy
b3VuZEhUTUxQYXJzZXIuaCIKICNpbmNsdWRlICJDb21wYWN0SFRNTFRva2VuLmgiCiAjaW5jbHVk
ZSAiQ29udGVudFNlY3VyaXR5UG9saWN5LmgiCkBAIC0zNDgsNyArMzQ5LDcgQEAgdm9pZCBIVE1M
RG9jdW1lbnRQYXJzZXI6OnByb2Nlc3NQYXJzZWRDaHVua0Zyb21CYWNrZ3JvdW5kUGFyc2VyKFBh
c3NPd25QdHI8UGFyc2UKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKLSAgICAgICAg
aWYgKGl0LT50eXBlKCkgPT0gSFRNTFRva2VuVHlwZXM6OkVuZE9mRmlsZSkgeworICAgICAgICBp
ZiAoaXQtPnR5cGUoKSA9PSBIVE1MVG9rZW46OkVuZE9mRmlsZSkgewogICAgICAgICAgICAgQVNT
RVJUKGl0ICsgMSA9PSB0b2tlbnMtPmVuZCgpKTsgLy8gVGhlIEVPRiBpcyBhc3N1bWVkIHRvIGJl
IHRoZSBsYXN0IHRva2VuIG9mIHRoaXMgYnVuY2guCiAgICAgICAgICAgICBwcmVwYXJlVG9TdG9w
UGFyc2luZygpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC00NjMsNyArNDY0LDcgQEAgdm9pZCBI
VE1MRG9jdW1lbnRQYXJzZXI6OmNvbnN0cnVjdFRyZWVGcm9tSFRNTFRva2VuKEhUTUxUb2tlbiYg
cmF3VG9rZW4pCiAgICAgLy8gRklYTUU6IFN0b3AgY2xlYXJpbmcgdGhlIHJhd1Rva2VuIG9uY2Ug
d2Ugc3RhcnQgcnVubmluZyB0aGUgcGFyc2VyIG9mZgogICAgIC8vIHRoZSBtYWluIHRocmVhZCBv
ciBvbmNlIHdlIHN0b3AgYWxsb3dpbmcgc3luY2hyb25vdXMgSmF2YVNjcmlwdAogICAgIC8vIGV4
ZWN1dGlvbiBmcm9tIHBhcnNlQXR0cmlidXRlLgotICAgIGlmIChyYXdUb2tlbi50eXBlKCkgIT0g
SFRNTFRva2VuVHlwZXM6OkNoYXJhY3RlcikKKyAgICBpZiAocmF3VG9rZW4udHlwZSgpICE9IEhU
TUxUb2tlbjo6Q2hhcmFjdGVyKQogICAgICAgICByYXdUb2tlbi5jbGVhcigpOwogCiAgICAgbV90
cmVlQnVpbGRlci0+Y29uc3RydWN0VHJlZSh0b2tlbi5nZXQoKSk7CkBAIC00NzUsNyArNDc2LDcg
QEAgdm9pZCBIVE1MRG9jdW1lbnRQYXJzZXI6OmNvbnN0cnVjdFRyZWVGcm9tSFRNTFRva2VuKEhU
TUxUb2tlbiYgcmF3VG9rZW4pCiAgICAgdG9rZW4tPmNsZWFyRXh0ZXJuYWxDaGFyYWN0ZXJzKCk7
CiAKICAgICBpZiAoIXJhd1Rva2VuLmlzVW5pbml0aWFsaXplZCgpKSB7Ci0gICAgICAgIEFTU0VS
VChyYXdUb2tlbi50eXBlKCkgPT0gSFRNTFRva2VuVHlwZXM6OkNoYXJhY3Rlcik7CisgICAgICAg
IEFTU0VSVChyYXdUb2tlbi50eXBlKCkgPT0gSFRNTFRva2VuOjpDaGFyYWN0ZXIpOwogICAgICAg
ICByYXdUb2tlbi5jbGVhcigpOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9w
YXJzZXIvSFRNTERvY3VtZW50UGFyc2VyLmgKaW5kZXggMDIwN2NjOTA3NGJhNzY5MWQzNWU5MGFh
MTlhZTJkMGJiMGUyMTkzYi4uNzQyODliYjZiNzUwMWM1YTkyNmYyNTkyMjIyNGVhMjI0ZWVjMjUy
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFy
c2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFyc2Vy
LmgKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkJhY2tncm91bmRIVE1MSW5wdXRTdHJl
YW0uaCIKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUNsaWVudC5oIgorI2luY2x1ZGUgIkNvbXBh
Y3RIVE1MVG9rZW4uaCIKICNpbmNsdWRlICJGcmFnbWVudFNjcmlwdGluZ1Blcm1pc3Npb24uaCIK
ICNpbmNsdWRlICJIVE1MSW5wdXRTdHJlYW0uaCIKICNpbmNsdWRlICJIVE1MUGFyc2VyT3B0aW9u
cy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTE1ldGFDaGFy
c2V0UGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxNZXRhQ2hhcnNl
dFBhcnNlci5jcHAKaW5kZXggNTg2ZmZhOTUyNmQ0YzMzZTk1ZTNhNmY2M2Y3Y2NkNTIyNzZlY2Jk
NS4uNzBjY2Q1ODBjMjQwOWU5NzY3M2I0NDllNzE2MzUyNWUzYmI4MTJmZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTE1ldGFDaGFyc2V0UGFyc2VyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MTWV0YUNoYXJzZXRQYXJzZXIuY3BwCkBA
IC0xNzYsOCArMTc2LDggQEAgYm9vbCBIVE1MTWV0YUNoYXJzZXRQYXJzZXI6OmNoZWNrRm9yTWV0
YUNoYXJzZXQoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCkKICAgICBtX2lucHV0LmFw
cGVuZChTZWdtZW50ZWRTdHJpbmcobV9hc3N1bWVkQ29kZWMtPmRlY29kZShkYXRhLCBsZW5ndGgp
KSk7CiAKICAgICB3aGlsZSAobV90b2tlbml6ZXItPm5leHRUb2tlbihtX2lucHV0LCBtX3Rva2Vu
KSkgewotICAgICAgICBib29sIGVuZCA9IG1fdG9rZW4udHlwZSgpID09IEhUTUxUb2tlblR5cGVz
OjpFbmRUYWc7Ci0gICAgICAgIGlmIChlbmQgfHwgbV90b2tlbi50eXBlKCkgPT0gSFRNTFRva2Vu
VHlwZXM6OlN0YXJ0VGFnKSB7CisgICAgICAgIGJvb2wgZW5kID0gbV90b2tlbi50eXBlKCkgPT0g
SFRNTFRva2VuOjpFbmRUYWc7CisgICAgICAgIGlmIChlbmQgfHwgbV90b2tlbi50eXBlKCkgPT0g
SFRNTFRva2VuOjpTdGFydFRhZykgewogICAgICAgICAgICAgQXRvbWljU3RyaW5nIHRhZ05hbWUo
bV90b2tlbi5uYW1lKCkuZGF0YSgpLCBtX3Rva2VuLm5hbWUoKS5zaXplKCkpOwogICAgICAgICAg
ICAgaWYgKCFlbmQpIHsKICAgICAgICAgICAgICAgICBtX3Rva2VuaXplci0+dXBkYXRlU3RhdGVG
b3IodGFnTmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1M
UHJlbG9hZFNjYW5uZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFByZWxv
YWRTY2FubmVyLmNwcAppbmRleCAzZDc4ODg5YmYxZjc5Nzg2NjUyNDgxNzI1OTA5NThhYmYwZmY5
ZmM1Li4wYzdjYTMzZWZjOTExOTBlOWU4NzgyYmY1MWMyNzIxMTIyYjdjZjI0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUHJlbG9hZFNjYW5uZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQcmVsb2FkU2Nhbm5lci5jcHAKQEAgLTQ1
LDEyICs0NSwxMiBAQCB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCiBzdGF0aWMgYm9vbCBp
c1N0YXJ0VGFnKGNvbnN0IEhUTUxUb2tlbiYgdG9rZW4pCiB7Ci0gICAgcmV0dXJuIHRva2VuLnR5
cGUoKSA9PSBIVE1MVG9rZW5UeXBlczo6U3RhcnRUYWc7CisgICAgcmV0dXJuIHRva2VuLnR5cGUo
KSA9PSBIVE1MVG9rZW46OlN0YXJ0VGFnOwogfQogCiBzdGF0aWMgYm9vbCBpc1N0YXJ0T3JFbmRU
YWcoY29uc3QgSFRNTFRva2VuJiB0b2tlbikKIHsKLSAgICByZXR1cm4gdG9rZW4udHlwZSgpID09
IEhUTUxUb2tlblR5cGVzOjpFbmRUYWcgfHwgaXNTdGFydFRhZyh0b2tlbik7CisgICAgcmV0dXJu
IHRva2VuLnR5cGUoKSA9PSBIVE1MVG9rZW46OkVuZFRhZyB8fCBpc1N0YXJ0VGFnKHRva2VuKTsK
IH0KIAogY2xhc3MgU3RhcnRUYWdTY2FubmVyIHsKQEAgLTI3OSw3ICsyNzksNyBAQCB2b2lkIEhU
TUxQcmVsb2FkU2Nhbm5lcjo6cHJvY2Vzc1Rva2VuKGNvbnN0IEhUTUxUb2tlbiYgdG9rZW4sIFZl
Y3RvcjxPd25QdHI8UHJlbAogewogICAgIC8vIDxzdHlsZT4gaXMgdGhlIG9ubHkgcGxhY2Ugd2Ug
c2VhcmNoIGZvciB1cmxzIGluIG5vbi1zdGFydC9lbmQtdGFnIHRva2Vucy4KICAgICBpZiAobV9p
blN0eWxlKSB7Ci0gICAgICAgIGlmICh0b2tlbi50eXBlKCkgIT0gSFRNTFRva2VuVHlwZXM6OkNo
YXJhY3RlcikKKyAgICAgICAgaWYgKHRva2VuLnR5cGUoKSAhPSBIVE1MVG9rZW46OkNoYXJhY3Rl
cikKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgcmV0dXJuIG1fY3NzU2Nhbm5lci5zY2Fu
KHRva2VuLCByZXF1ZXN0cyk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9wYXJzZXIvSFRNTFNvdXJjZVRyYWNrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJz
ZXIvSFRNTFNvdXJjZVRyYWNrZXIuY3BwCmluZGV4IDg5ODg1YzNlMWNlMmYxNWUzYjg0ZGRjZDRh
OWYxMTFlMzhjMzI0ZGYuLmJmMWE4YzQ2NjA5YmM0MmYxNjAzNmY4YTk0ODNjYTQwYjM1ZmM1MTUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxTb3VyY2VUcmFja2Vy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MU291cmNlVHJhY2tlci5j
cHAKQEAgLTM2LDcgKzM2LDcgQEAgSFRNTFNvdXJjZVRyYWNrZXI6OkhUTUxTb3VyY2VUcmFja2Vy
KCkKIAogdm9pZCBIVE1MU291cmNlVHJhY2tlcjo6c3RhcnQoU2VnbWVudGVkU3RyaW5nJiBjdXJy
ZW50SW5wdXQsIEhUTUxUb2tlbml6ZXIqIHRva2VuaXplciwgSFRNTFRva2VuJiB0b2tlbikKIHsK
LSAgICBpZiAodG9rZW4udHlwZSgpID09IEhUTUxUb2tlblR5cGVzOjpVbmluaXRpYWxpemVkKSB7
CisgICAgaWYgKHRva2VuLnR5cGUoKSA9PSBIVE1MVG9rZW46OlVuaW5pdGlhbGl6ZWQpIHsKICAg
ICAgICAgbV9wcmV2aW91c1NvdXJjZS5jbGVhcigpOwogICAgICAgICBpZiAodG9rZW5pemVyLT5u
dW1iZXJPZkJ1ZmZlcmVkQ2hhcmFjdGVycygpKQogICAgICAgICAgICAgbV9wcmV2aW91c1NvdXJj
ZSA9IHRva2VuaXplci0+YnVmZmVyZWRDaGFyYWN0ZXJzKCk7CkBAIC01Nyw3ICs1Nyw3IEBAIHZv
aWQgSFRNTFNvdXJjZVRyYWNrZXI6OmVuZChTZWdtZW50ZWRTdHJpbmcmIGN1cnJlbnRJbnB1dCwg
SFRNTFRva2VuaXplciogdG9rZW5pCiAKIFN0cmluZyBIVE1MU291cmNlVHJhY2tlcjo6c291cmNl
Rm9yVG9rZW4oY29uc3QgSFRNTFRva2VuJiB0b2tlbikKIHsKLSAgICBpZiAodG9rZW4udHlwZSgp
ID09IEhUTUxUb2tlblR5cGVzOjpFbmRPZkZpbGUpCisgICAgaWYgKHRva2VuLnR5cGUoKSA9PSBI
VE1MVG9rZW46OkVuZE9mRmlsZSkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOyAvLyBIaWRlcyB0
aGUgbnVsbCBjaGFyYWN0ZXIgd2UgdXNlIHRvIG1hcmsgdGhlIGVuZCBvZiBmaWxlLgogCiAgICAg
aWYgKCFtX2NhY2hlZFNvdXJjZUZvclRva2VuLmlzRW1wdHkoKSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxTdGFja0l0ZW0uaCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvcGFyc2VyL0hUTUxTdGFja0l0ZW0uaAppbmRleCA4YTE5Y2QzNDBiNDhkMGU3ODFmOWY2ODMz
N2ZlZmE1ZDlkMDgxY2YwLi4xYzJlYjQ5M2Y0MDI0M2IyYjFhNWMzNTYyZTNkMDgwNDIxNDI4YjMw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MU3RhY2tJdGVtLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFN0YWNrSXRlbS5oCkBAIC0yNiw5
ICsyNiw5IEBACiAjaWZuZGVmIEhUTUxTdGFja0l0ZW1faAogI2RlZmluZSBIVE1MU3RhY2tJdGVt
X2gKIAorI2luY2x1ZGUgIkF0b21pY0hUTUxUb2tlbi5oIgogI2luY2x1ZGUgIkVsZW1lbnQuaCIK
ICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKLSNpbmNsdWRlICJIVE1MVG9rZW4uaCIKICNpbmNsdWRl
ICJNYXRoTUxOYW1lcy5oIgogI2luY2x1ZGUgIlNWR05hbWVzLmgiCiAKQEAgLTIwOCwxMiArMjA4
LDEyIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAvLyBDcmVhdGUgYSBmYWtlIHRva2VuIGZvciBh
IGRvY3VtZW50IGZyYWdtZW50IG5vZGUuIFRoaXMgbG9va3MgdWdseSBidXQgcmVxdWlyZWQgZm9y
IHBlcmZvcm1hbmNlCiAgICAgICAgICAgICAvLyBiZWNhdXNlIHdlIHdhbnQgdG8gdXNlIG1fdG9r
ZW4tPm5hbWUoKSBpbiBsb2NhbE5hbWUoKSwgaGFzTG9jYWxOYW1lKCkgYW5kIGhhc1RhZ05hbWUo
KSB3aXRob3V0CiAgICAgICAgICAgICAvLyBjaGVja2luZyBtX2lzRG9jdW1lbnRGcmFnbWVudE5v
ZGUgZmxhZy4KLSAgICAgICAgICAgIG1fdG9rZW4gPSBBdG9taWNIVE1MVG9rZW46OmNyZWF0ZShI
VE1MVG9rZW5UeXBlczo6U3RhcnRUYWcsIG51bGxBdG9tKTsKKyAgICAgICAgICAgIG1fdG9rZW4g
PSBBdG9taWNIVE1MVG9rZW46OmNyZWF0ZShIVE1MVG9rZW46OlN0YXJ0VGFnLCBudWxsQXRvbSk7
CiAgICAgICAgICAgICBtX2lzRG9jdW1lbnRGcmFnbWVudE5vZGUgPSB0cnVlOwogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIGNhc2UgSXRlbUZvckNvbnRleHRFbGVtZW50OgogICAgICAgICAg
ICAgLy8gQ3JlYXRlIGEgZmFrZSB0b2tlbiBmb3IgYSBjb250ZXh0IGVsZW1lbnQgZm9yIHRoZSBz
YW1lIHJlYXNvbiBhcyBhYm92ZS4KLSAgICAgICAgICAgIG1fdG9rZW4gPSBBdG9taWNIVE1MVG9r
ZW46OmNyZWF0ZShIVE1MVG9rZW5UeXBlczo6U3RhcnRUYWcsIG1fbm9kZS0+bG9jYWxOYW1lKCkp
OworICAgICAgICAgICAgbV90b2tlbiA9IEF0b21pY0hUTUxUb2tlbjo6Y3JlYXRlKEhUTUxUb2tl
bjo6U3RhcnRUYWcsIG1fbm9kZS0+bG9jYWxOYW1lKCkpOwogICAgICAgICAgICAgbV9uYW1lc3Bh
Y2VVUkkgPSBtX25vZGUtPm5hbWVzcGFjZVVSSSgpOwogICAgICAgICAgICAgbV9pc0RvY3VtZW50
RnJhZ21lbnROb2RlID0gZmFsc2U7CiAgICAgICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUb2tlbi5oIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9wYXJzZXIvSFRNTFRva2VuLmgKaW5kZXggYmZiZGUyMDQ4MzQyNjE1NzdmZTdkY2RlYjNjMDAw
MDVkMDc2NjRlNy4uY2U1MTRhMWE4MzFiYWRlYjUxM2EwOGY2M2EwZDM0ZDcyNWZmYjAyZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRva2VuLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRva2VuLmgKQEAgLTI3LDggKzI3LDcgQEAKICNk
ZWZpbmUgSFRNTFRva2VuX2gKIAogI2luY2x1ZGUgIkF0dHJpYnV0ZS5oIgotI2luY2x1ZGUgIkNv
bXBhY3RIVE1MVG9rZW4uaCIKLSNpbmNsdWRlICJIVE1MVG9rZW5UeXBlcy5oIgorI2luY2x1ZGUg
IkhUTUxUb2tlbi5oIgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3Rm
L1JlZlB0ci5oPgogCkBAIC02NSw3ICs2NCwxNSBAQCBjbGFzcyBIVE1MVG9rZW4gewogICAgIFdU
Rl9NQUtFX05PTkNPUFlBQkxFKEhUTUxUb2tlbik7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CiBwdWJsaWM6Ci0gICAgdHlwZWRlZiBIVE1MVG9rZW5UeXBlcyBUeXBlOworICAgIGVudW0g
VHlwZSB7CisgICAgICAgIFVuaW5pdGlhbGl6ZWQsCisgICAgICAgIERPQ1RZUEUsCisgICAgICAg
IFN0YXJ0VGFnLAorICAgICAgICBFbmRUYWcsCisgICAgICAgIENvbW1lbnQsCisgICAgICAgIENo
YXJhY3RlciwKKyAgICAgICAgRW5kT2ZGaWxlLAorICAgIH07CiAKICAgICBjbGFzcyBBdHRyaWJ1
dGUgewogICAgIHB1YmxpYzoKQEAgLTg4LDcgKzk1LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBj
bGVhcigpCiAgICAgewotICAgICAgICBtX3R5cGUgPSBUeXBlOjpVbmluaXRpYWxpemVkOworICAg
ICAgICBtX3R5cGUgPSBVbmluaXRpYWxpemVkOwogICAgICAgICBtX3JhbmdlLm1fc3RhcnQgPSAw
OwogICAgICAgICBtX3JhbmdlLm1fZW5kID0gMDsKICAgICAgICAgbV9iYXNlT2Zmc2V0ID0gMDsK
QEAgLTk2LDEzICsxMDMsMTMgQEAgcHVibGljOgogICAgICAgICBtX29yQWxsRGF0YSA9IDA7CiAg
ICAgfQogCi0gICAgYm9vbCBpc1VuaW5pdGlhbGl6ZWQoKSB7IHJldHVybiBtX3R5cGUgPT0gSFRN
TFRva2VuVHlwZXM6OlVuaW5pdGlhbGl6ZWQ7IH0KLSAgICBIVE1MVG9rZW5UeXBlczo6VHlwZSB0
eXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9CisgICAgYm9vbCBpc1VuaW5pdGlhbGl6ZWQo
KSB7IHJldHVybiBtX3R5cGUgPT0gVW5pbml0aWFsaXplZDsgfQorICAgIFR5cGUgdHlwZSgpIGNv
bnN0IHsgcmV0dXJuIG1fdHlwZTsgfQogCiAgICAgdm9pZCBtYWtlRW5kT2ZGaWxlKCkKICAgICB7
Ci0gICAgICAgIEFTU0VSVChtX3R5cGUgPT0gSFRNTFRva2VuVHlwZXM6OlVuaW5pdGlhbGl6ZWQp
OwotICAgICAgICBtX3R5cGUgPSBIVE1MVG9rZW5UeXBlczo6RW5kT2ZGaWxlOworICAgICAgICBB
U1NFUlQobV90eXBlID09IFVuaW5pdGlhbGl6ZWQpOworICAgICAgICBtX3R5cGUgPSBFbmRPZkZp
bGU7CiAgICAgfQogCiAgICAgLyogUmFuZ2UgYW5kIG9mZnNldCBtZXRob2RzIGV4cG9zZWQgZm9y
IEhUTUxTb3VyY2VUcmFja2VyIGFuZCBIVE1MVmlld1NvdXJjZVBhcnNlciAqLwpAQCAtMTIxLDcg
KzEyOCw3IEBAIHB1YmxpYzoKIAogICAgIGNvbnN0IERhdGFWZWN0b3ImIGRhdGEoKSBjb25zdAog
ICAgIHsKLSAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBIVE1MVG9rZW5UeXBlczo6Q2hhcmFjdGVy
IHx8IG1fdHlwZSA9PSBIVE1MVG9rZW5UeXBlczo6Q29tbWVudCB8fCBtX3R5cGUgPT0gSFRNTFRv
a2VuVHlwZXM6OlN0YXJ0VGFnIHx8IG1fdHlwZSA9PSBIVE1MVG9rZW5UeXBlczo6RW5kVGFnKTsK
KyAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBDaGFyYWN0ZXIgfHwgbV90eXBlID09IENvbW1lbnQg
fHwgbV90eXBlID09IFN0YXJ0VGFnIHx8IG1fdHlwZSA9PSBFbmRUYWcpOwogICAgICAgICByZXR1
cm4gbV9kYXRhOwogICAgIH0KIApAQCAtMTMyLDEzICsxMzksMTMgQEAgcHVibGljOgogCiAgICAg
Y29uc3QgRGF0YVZlY3RvciYgbmFtZSgpIGNvbnN0CiAgICAgewotICAgICAgICBBU1NFUlQobV90
eXBlID09IEhUTUxUb2tlblR5cGVzOjpTdGFydFRhZyB8fCBtX3R5cGUgPT0gSFRNTFRva2VuVHlw
ZXM6OkVuZFRhZyB8fCBtX3R5cGUgPT0gSFRNTFRva2VuVHlwZXM6OkRPQ1RZUEUpOworICAgICAg
ICBBU1NFUlQobV90eXBlID09IFN0YXJ0VGFnIHx8IG1fdHlwZSA9PSBFbmRUYWcgfHwgbV90eXBl
ID09IERPQ1RZUEUpOwogICAgICAgICByZXR1cm4gbV9kYXRhOwogICAgIH0KIAogICAgIHZvaWQg
YXBwZW5kVG9OYW1lKFVDaGFyIGNoYXJhY3RlcikKICAgICB7Ci0gICAgICAgIEFTU0VSVChtX3R5
cGUgPT0gSFRNTFRva2VuVHlwZXM6OlN0YXJ0VGFnIHx8IG1fdHlwZSA9PSBIVE1MVG9rZW5UeXBl
czo6RW5kVGFnIHx8IG1fdHlwZSA9PSBIVE1MVG9rZW5UeXBlczo6RE9DVFlQRSk7CisgICAgICAg
IEFTU0VSVChtX3R5cGUgPT0gU3RhcnRUYWcgfHwgbV90eXBlID09IEVuZFRhZyB8fCBtX3R5cGUg
PT0gRE9DVFlQRSk7CiAgICAgICAgIEFTU0VSVChjaGFyYWN0ZXIpOwogICAgICAgICBtX2RhdGEu
YXBwZW5kKGNoYXJhY3Rlcik7CiAgICAgICAgIG1fb3JBbGxEYXRhIHw9IGNoYXJhY3RlcjsKQEAg
LTE1OCwyMCArMTY1LDIwIEBAIHB1YmxpYzoKIAogICAgIGJvb2wgZm9yY2VRdWlya3MoKSBjb25z
dAogICAgIHsKLSAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBIVE1MVG9rZW5UeXBlczo6RE9DVFlQ
RSk7CisgICAgICAgIEFTU0VSVChtX3R5cGUgPT0gRE9DVFlQRSk7CiAgICAgICAgIHJldHVybiBt
X2RvY3R5cGVEYXRhLT5tX2ZvcmNlUXVpcmtzOwogICAgIH0KIAogICAgIHZvaWQgc2V0Rm9yY2VR
dWlya3MoKQogICAgIHsKLSAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBIVE1MVG9rZW5UeXBlczo6
RE9DVFlQRSk7CisgICAgICAgIEFTU0VSVChtX3R5cGUgPT0gRE9DVFlQRSk7CiAgICAgICAgIG1f
ZG9jdHlwZURhdGEtPm1fZm9yY2VRdWlya3MgPSB0cnVlOwogICAgIH0KIAogICAgIHZvaWQgYmVn
aW5ET0NUWVBFKCkKICAgICB7Ci0gICAgICAgIEFTU0VSVChtX3R5cGUgPT0gSFRNTFRva2VuVHlw
ZXM6OlVuaW5pdGlhbGl6ZWQpOwotICAgICAgICBtX3R5cGUgPSBIVE1MVG9rZW5UeXBlczo6RE9D
VFlQRTsKKyAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBVbmluaXRpYWxpemVkKTsKKyAgICAgICAg
bV90eXBlID0gRE9DVFlQRTsKICAgICAgICAgbV9kb2N0eXBlRGF0YSA9IGFkb3B0UHRyKG5ldyBE
b2N0eXBlRGF0YSk7CiAgICAgfQogCkBAIC0xODYsMjcgKzE5MywyNyBAQCBwdWJsaWM6CiAgICAg
Ly8gRklYTUU6IERpc3Rpbmd1aXNoIGJldHdlZW4gYSBtaXNzaW5nIHB1YmxpYyBpZGVudGlmZXIg
YW5kIGFuIGVtcHR5IG9uZS4KICAgICBjb25zdCBXVEY6OlZlY3RvcjxVQ2hhcj4mIHB1YmxpY0lk
ZW50aWZpZXIoKSBjb25zdAogICAgIHsKLSAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBIVE1MVG9r
ZW5UeXBlczo6RE9DVFlQRSk7CisgICAgICAgIEFTU0VSVChtX3R5cGUgPT0gRE9DVFlQRSk7CiAg
ICAgICAgIHJldHVybiBtX2RvY3R5cGVEYXRhLT5tX3B1YmxpY0lkZW50aWZpZXI7CiAgICAgfQog
CiAgICAgLy8gRklYTUU6IERpc3Rpbmd1aXNoIGJldHdlZW4gYSBtaXNzaW5nIHN5c3RlbSBpZGVu
dGlmZXIgYW5kIGFuIGVtcHR5IG9uZS4KICAgICBjb25zdCBXVEY6OlZlY3RvcjxVQ2hhcj4mIHN5
c3RlbUlkZW50aWZpZXIoKSBjb25zdAogICAgIHsKLSAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBI
VE1MVG9rZW5UeXBlczo6RE9DVFlQRSk7CisgICAgICAgIEFTU0VSVChtX3R5cGUgPT0gRE9DVFlQ
RSk7CiAgICAgICAgIHJldHVybiBtX2RvY3R5cGVEYXRhLT5tX3N5c3RlbUlkZW50aWZpZXI7CiAg
ICAgfQogCiAgICAgdm9pZCBzZXRQdWJsaWNJZGVudGlmaWVyVG9FbXB0eVN0cmluZygpCiAgICAg
ewotICAgICAgICBBU1NFUlQobV90eXBlID09IEhUTUxUb2tlblR5cGVzOjpET0NUWVBFKTsKKyAg
ICAgICAgQVNTRVJUKG1fdHlwZSA9PSBET0NUWVBFKTsKICAgICAgICAgbV9kb2N0eXBlRGF0YS0+
bV9oYXNQdWJsaWNJZGVudGlmaWVyID0gdHJ1ZTsKICAgICAgICAgbV9kb2N0eXBlRGF0YS0+bV9w
dWJsaWNJZGVudGlmaWVyLmNsZWFyKCk7CiAgICAgfQogCiAgICAgdm9pZCBzZXRTeXN0ZW1JZGVu
dGlmaWVyVG9FbXB0eVN0cmluZygpCiAgICAgewotICAgICAgICBBU1NFUlQobV90eXBlID09IEhU
TUxUb2tlblR5cGVzOjpET0NUWVBFKTsKKyAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBET0NUWVBF
KTsKICAgICAgICAgbV9kb2N0eXBlRGF0YS0+bV9oYXNTeXN0ZW1JZGVudGlmaWVyID0gdHJ1ZTsK
ICAgICAgICAgbV9kb2N0eXBlRGF0YS0+bV9zeXN0ZW1JZGVudGlmaWVyLmNsZWFyKCk7CiAgICAg
fQpAQCAtMjE0LDcgKzIyMSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGFwcGVuZFRvUHVibGljSWRl
bnRpZmllcihVQ2hhciBjaGFyYWN0ZXIpCiAgICAgewogICAgICAgICBBU1NFUlQoY2hhcmFjdGVy
KTsKLSAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBIVE1MVG9rZW5UeXBlczo6RE9DVFlQRSk7Cisg
ICAgICAgIEFTU0VSVChtX3R5cGUgPT0gRE9DVFlQRSk7CiAgICAgICAgIEFTU0VSVChtX2RvY3R5
cGVEYXRhLT5tX2hhc1B1YmxpY0lkZW50aWZpZXIpOwogICAgICAgICBtX2RvY3R5cGVEYXRhLT5t
X3B1YmxpY0lkZW50aWZpZXIuYXBwZW5kKGNoYXJhY3Rlcik7CiAgICAgfQpAQCAtMjIyLDcgKzIy
OSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGFwcGVuZFRvU3lzdGVtSWRlbnRpZmllcihVQ2hhciBj
aGFyYWN0ZXIpCiAgICAgewogICAgICAgICBBU1NFUlQoY2hhcmFjdGVyKTsKLSAgICAgICAgQVNT
RVJUKG1fdHlwZSA9PSBIVE1MVG9rZW5UeXBlczo6RE9DVFlQRSk7CisgICAgICAgIEFTU0VSVCht
X3R5cGUgPT0gRE9DVFlQRSk7CiAgICAgICAgIEFTU0VSVChtX2RvY3R5cGVEYXRhLT5tX2hhc1N5
c3RlbUlkZW50aWZpZXIpOwogICAgICAgICBtX2RvY3R5cGVEYXRhLT5tX3N5c3RlbUlkZW50aWZp
ZXIuYXBwZW5kKGNoYXJhY3Rlcik7CiAgICAgfQpAQCAtMjM2LDIxICsyNDMsMjEgQEAgcHVibGlj
OgogCiAgICAgYm9vbCBzZWxmQ2xvc2luZygpIGNvbnN0CiAgICAgewotICAgICAgICBBU1NFUlQo
bV90eXBlID09IEhUTUxUb2tlblR5cGVzOjpTdGFydFRhZyB8fCBtX3R5cGUgPT0gSFRNTFRva2Vu
VHlwZXM6OkVuZFRhZyk7CisgICAgICAgIEFTU0VSVChtX3R5cGUgPT0gU3RhcnRUYWcgfHwgbV90
eXBlID09IEVuZFRhZyk7CiAgICAgICAgIHJldHVybiBtX3NlbGZDbG9zaW5nOwogICAgIH0KIAog
ICAgIHZvaWQgc2V0U2VsZkNsb3NpbmcoKQogICAgIHsKLSAgICAgICAgQVNTRVJUKG1fdHlwZSA9
PSBIVE1MVG9rZW5UeXBlczo6U3RhcnRUYWcgfHwgbV90eXBlID09IEhUTUxUb2tlblR5cGVzOjpF
bmRUYWcpOworICAgICAgICBBU1NFUlQobV90eXBlID09IFN0YXJ0VGFnIHx8IG1fdHlwZSA9PSBF
bmRUYWcpOwogICAgICAgICBtX3NlbGZDbG9zaW5nID0gdHJ1ZTsKICAgICB9CiAKICAgICB2b2lk
IGJlZ2luU3RhcnRUYWcoVUNoYXIgY2hhcmFjdGVyKQogICAgIHsKICAgICAgICAgQVNTRVJUKGNo
YXJhY3Rlcik7Ci0gICAgICAgIEFTU0VSVChtX3R5cGUgPT0gSFRNTFRva2VuVHlwZXM6OlVuaW5p
dGlhbGl6ZWQpOwotICAgICAgICBtX3R5cGUgPSBIVE1MVG9rZW5UeXBlczo6U3RhcnRUYWc7Cisg
ICAgICAgIEFTU0VSVChtX3R5cGUgPT0gVW5pbml0aWFsaXplZCk7CisgICAgICAgIG1fdHlwZSA9
IFN0YXJ0VGFnOwogICAgICAgICBtX3NlbGZDbG9zaW5nID0gZmFsc2U7CiAgICAgICAgIG1fY3Vy
cmVudEF0dHJpYnV0ZSA9IDA7CiAgICAgICAgIG1fYXR0cmlidXRlcy5jbGVhcigpOwpAQCAtMjYx
LDggKzI2OCw4IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgYmVnaW5FbmRUYWcoTENoYXIgY2hhcmFj
dGVyKQogICAgIHsKLSAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBIVE1MVG9rZW5UeXBlczo6VW5p
bml0aWFsaXplZCk7Ci0gICAgICAgIG1fdHlwZSA9IEhUTUxUb2tlblR5cGVzOjpFbmRUYWc7Cisg
ICAgICAgIEFTU0VSVChtX3R5cGUgPT0gVW5pbml0aWFsaXplZCk7CisgICAgICAgIG1fdHlwZSA9
IEVuZFRhZzsKICAgICAgICAgbV9zZWxmQ2xvc2luZyA9IGZhbHNlOwogICAgICAgICBtX2N1cnJl
bnRBdHRyaWJ1dGUgPSAwOwogICAgICAgICBtX2F0dHJpYnV0ZXMuY2xlYXIoKTsKQEAgLTI3Miw4
ICsyNzksOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGJlZ2luRW5kVGFnKGNvbnN0IFZlY3RvcjxM
Q2hhciwgMzI+JiBjaGFyYWN0ZXJzKQogICAgIHsKLSAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBI
VE1MVG9rZW5UeXBlczo6VW5pbml0aWFsaXplZCk7Ci0gICAgICAgIG1fdHlwZSA9IEhUTUxUb2tl
blR5cGVzOjpFbmRUYWc7CisgICAgICAgIEFTU0VSVChtX3R5cGUgPT0gVW5pbml0aWFsaXplZCk7
CisgICAgICAgIG1fdHlwZSA9IEVuZFRhZzsKICAgICAgICAgbV9zZWxmQ2xvc2luZyA9IGZhbHNl
OwogICAgICAgICBtX2N1cnJlbnRBdHRyaWJ1dGUgPSAwOwogICAgICAgICBtX2F0dHJpYnV0ZXMu
Y2xlYXIoKTsKQEAgLTI4Myw3ICsyOTAsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGFkZE5ld0F0
dHJpYnV0ZSgpCiAgICAgewotICAgICAgICBBU1NFUlQobV90eXBlID09IEhUTUxUb2tlblR5cGVz
OjpTdGFydFRhZyB8fCBtX3R5cGUgPT0gSFRNTFRva2VuVHlwZXM6OkVuZFRhZyk7CisgICAgICAg
IEFTU0VSVChtX3R5cGUgPT0gU3RhcnRUYWcgfHwgbV90eXBlID09IEVuZFRhZyk7CiAgICAgICAg
IG1fYXR0cmlidXRlcy5ncm93KG1fYXR0cmlidXRlcy5zaXplKCkgKyAxKTsKICAgICAgICAgbV9j
dXJyZW50QXR0cmlidXRlID0gJm1fYXR0cmlidXRlcy5sYXN0KCk7CiAjaWZuZGVmIE5ERUJVRwpA
QCAtMzIzLDcgKzMzMCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGFwcGVuZFRvQXR0cmlidXRlTmFt
ZShVQ2hhciBjaGFyYWN0ZXIpCiAgICAgewogICAgICAgICBBU1NFUlQoY2hhcmFjdGVyKTsKLSAg
ICAgICAgQVNTRVJUKG1fdHlwZSA9PSBIVE1MVG9rZW5UeXBlczo6U3RhcnRUYWcgfHwgbV90eXBl
ID09IEhUTUxUb2tlblR5cGVzOjpFbmRUYWcpOworICAgICAgICBBU1NFUlQobV90eXBlID09IFN0
YXJ0VGFnIHx8IG1fdHlwZSA9PSBFbmRUYWcpOwogICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxk
IGJlIGFibGUgdG8gYWRkIHRoZSBmb2xsb3dpbmcgQVNTRVJUIG9uY2Ugd2UgZml4CiAgICAgICAg
IC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02Mjk3MQogICAgICAg
ICAvLyAgIEFTU0VSVChtX2N1cnJlbnRBdHRyaWJ1dGUtPm1fbmFtZVJhbmdlLm1fc3RhcnQpOwpA
QCAtMzMzLDcgKzM0MCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGFwcGVuZFRvQXR0cmlidXRlVmFs
dWUoVUNoYXIgY2hhcmFjdGVyKQogICAgIHsKICAgICAgICAgQVNTRVJUKGNoYXJhY3Rlcik7Ci0g
ICAgICAgIEFTU0VSVChtX3R5cGUgPT0gSFRNTFRva2VuVHlwZXM6OlN0YXJ0VGFnIHx8IG1fdHlw
ZSA9PSBIVE1MVG9rZW5UeXBlczo6RW5kVGFnKTsKKyAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBT
dGFydFRhZyB8fCBtX3R5cGUgPT0gRW5kVGFnKTsKICAgICAgICAgQVNTRVJUKG1fY3VycmVudEF0
dHJpYnV0ZS0+bV92YWx1ZVJhbmdlLm1fc3RhcnQpOwogICAgICAgICBtX2N1cnJlbnRBdHRyaWJ1
dGUtPm1fdmFsdWUuYXBwZW5kKGNoYXJhY3Rlcik7CiAgICAgfQpAQCAtMzQxLDIwICszNDgsMjAg
QEAgcHVibGljOgogICAgIHZvaWQgYXBwZW5kVG9BdHRyaWJ1dGVWYWx1ZShzaXplX3QgaSwgY29u
c3QgU3RyaW5nJiB2YWx1ZSkKICAgICB7CiAgICAgICAgIEFTU0VSVCghdmFsdWUuaXNFbXB0eSgp
KTsKLSAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBIVE1MVG9rZW5UeXBlczo6U3RhcnRUYWcgfHwg
bV90eXBlID09IEhUTUxUb2tlblR5cGVzOjpFbmRUYWcpOworICAgICAgICBBU1NFUlQobV90eXBl
ID09IFN0YXJ0VGFnIHx8IG1fdHlwZSA9PSBFbmRUYWcpOwogICAgICAgICBtX2F0dHJpYnV0ZXNb
aV0ubV92YWx1ZS5hcHBlbmQodmFsdWUuY2hhcmFjdGVycygpLCB2YWx1ZS5sZW5ndGgoKSk7CiAg
ICAgfQogCiAgICAgY29uc3QgQXR0cmlidXRlTGlzdCYgYXR0cmlidXRlcygpIGNvbnN0CiAgICAg
ewotICAgICAgICBBU1NFUlQobV90eXBlID09IEhUTUxUb2tlblR5cGVzOjpTdGFydFRhZyB8fCBt
X3R5cGUgPT0gSFRNTFRva2VuVHlwZXM6OkVuZFRhZyk7CisgICAgICAgIEFTU0VSVChtX3R5cGUg
PT0gU3RhcnRUYWcgfHwgbV90eXBlID09IEVuZFRhZyk7CiAgICAgICAgIHJldHVybiBtX2F0dHJp
YnV0ZXM7CiAgICAgfQogCiAgICAgLy8gVXNlZCBieSB0aGUgWFNTQXVkaXRvciB0byBudWtlIFhT
Uy1sYWRlbiBhdHRyaWJ1dGVzLgogICAgIHZvaWQgZXJhc2VWYWx1ZU9mQXR0cmlidXRlKHNpemVf
dCBpKQogICAgIHsKLSAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBIVE1MVG9rZW5UeXBlczo6U3Rh
cnRUYWcgfHwgbV90eXBlID09IEhUTUxUb2tlblR5cGVzOjpFbmRUYWcpOworICAgICAgICBBU1NF
UlQobV90eXBlID09IFN0YXJ0VGFnIHx8IG1fdHlwZSA9PSBFbmRUYWcpOwogICAgICAgICBtX2F0
dHJpYnV0ZXNbaV0ubV92YWx1ZS5jbGVhcigpOwogICAgIH0KIApAQCAtMzY0LDMyICszNzEsMzIg
QEAgcHVibGljOgogICAgIC8vIG90aGVyIHR5cGVzIG9mIHRva2VucyBiZWNhdXNlIHdlIHdhbnQg
dG8gc2F2ZSBhIHBlci1jaGFyYWN0ZXIgYnJhbmNoLgogICAgIHZvaWQgZW5zdXJlSXNDaGFyYWN0
ZXJUb2tlbigpCiAgICAgewotICAgICAgICBBU1NFUlQobV90eXBlID09IEhUTUxUb2tlblR5cGVz
OjpVbmluaXRpYWxpemVkIHx8IG1fdHlwZSA9PSBIVE1MVG9rZW5UeXBlczo6Q2hhcmFjdGVyKTsK
LSAgICAgICAgbV90eXBlID0gSFRNTFRva2VuVHlwZXM6OkNoYXJhY3RlcjsKKyAgICAgICAgQVNT
RVJUKG1fdHlwZSA9PSBVbmluaXRpYWxpemVkIHx8IG1fdHlwZSA9PSBDaGFyYWN0ZXIpOworICAg
ICAgICBtX3R5cGUgPSBDaGFyYWN0ZXI7CiAgICAgfQogCiAgICAgY29uc3QgRGF0YVZlY3RvciYg
Y2hhcmFjdGVycygpIGNvbnN0CiAgICAgewotICAgICAgICBBU1NFUlQobV90eXBlID09IEhUTUxU
b2tlblR5cGVzOjpDaGFyYWN0ZXIpOworICAgICAgICBBU1NFUlQobV90eXBlID09IENoYXJhY3Rl
cik7CiAgICAgICAgIHJldHVybiBtX2RhdGE7CiAgICAgfQogCiAgICAgdm9pZCBhcHBlbmRUb0No
YXJhY3RlcihjaGFyIGNoYXJhY3RlcikKICAgICB7Ci0gICAgICAgIEFTU0VSVChtX3R5cGUgPT0g
SFRNTFRva2VuVHlwZXM6OkNoYXJhY3Rlcik7CisgICAgICAgIEFTU0VSVChtX3R5cGUgPT0gQ2hh
cmFjdGVyKTsKICAgICAgICAgbV9kYXRhLmFwcGVuZChjaGFyYWN0ZXIpOwogICAgIH0KIAogICAg
IHZvaWQgYXBwZW5kVG9DaGFyYWN0ZXIoVUNoYXIgY2hhcmFjdGVyKQogICAgIHsKLSAgICAgICAg
QVNTRVJUKG1fdHlwZSA9PSBIVE1MVG9rZW5UeXBlczo6Q2hhcmFjdGVyKTsKKyAgICAgICAgQVNT
RVJUKG1fdHlwZSA9PSBDaGFyYWN0ZXIpOwogICAgICAgICBtX2RhdGEuYXBwZW5kKGNoYXJhY3Rl
cik7CiAgICAgICAgIG1fb3JBbGxEYXRhIHw9IGNoYXJhY3RlcjsKICAgICB9CiAKICAgICB2b2lk
IGFwcGVuZFRvQ2hhcmFjdGVyKGNvbnN0IFZlY3RvcjxMQ2hhciwgMzI+JiBjaGFyYWN0ZXJzKQog
ICAgIHsKLSAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBIVE1MVG9rZW5UeXBlczo6Q2hhcmFjdGVy
KTsKKyAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBDaGFyYWN0ZXIpOwogICAgICAgICBtX2RhdGEu
YXBwZW5kVmVjdG9yKGNoYXJhY3RlcnMpOwogICAgIH0KIApAQCAtMzk3LDMzICs0MDQsMzMgQEAg
cHVibGljOgogCiAgICAgY29uc3QgRGF0YVZlY3RvciYgY29tbWVudCgpIGNvbnN0CiAgICAgewot
ICAgICAgICBBU1NFUlQobV90eXBlID09IEhUTUxUb2tlblR5cGVzOjpDb21tZW50KTsKKyAgICAg
ICAgQVNTRVJUKG1fdHlwZSA9PSBDb21tZW50KTsKICAgICAgICAgcmV0dXJuIG1fZGF0YTsKICAg
ICB9CiAKICAgICB2b2lkIGJlZ2luQ29tbWVudCgpCiAgICAgewotICAgICAgICBBU1NFUlQobV90
eXBlID09IEhUTUxUb2tlblR5cGVzOjpVbmluaXRpYWxpemVkKTsKLSAgICAgICAgbV90eXBlID0g
SFRNTFRva2VuVHlwZXM6OkNvbW1lbnQ7CisgICAgICAgIEFTU0VSVChtX3R5cGUgPT0gVW5pbml0
aWFsaXplZCk7CisgICAgICAgIG1fdHlwZSA9IENvbW1lbnQ7CiAgICAgfQogCiAgICAgdm9pZCBh
cHBlbmRUb0NvbW1lbnQoVUNoYXIgY2hhcmFjdGVyKQogICAgIHsKICAgICAgICAgQVNTRVJUKGNo
YXJhY3Rlcik7Ci0gICAgICAgIEFTU0VSVChtX3R5cGUgPT0gSFRNTFRva2VuVHlwZXM6OkNvbW1l
bnQpOworICAgICAgICBBU1NFUlQobV90eXBlID09IENvbW1lbnQpOwogICAgICAgICBtX2RhdGEu
YXBwZW5kKGNoYXJhY3Rlcik7CiAgICAgICAgIG1fb3JBbGxEYXRhIHw9IGNoYXJhY3RlcjsKICAg
ICB9CiAKICAgICB2b2lkIGVyYXNlQ2hhcmFjdGVycygpCiAgICAgewotICAgICAgICBBU1NFUlQo
bV90eXBlID09IEhUTUxUb2tlblR5cGVzOjpDaGFyYWN0ZXIpOworICAgICAgICBBU1NFUlQobV90
eXBlID09IENoYXJhY3Rlcik7CiAgICAgICAgIG1fZGF0YS5jbGVhcigpOwogICAgICAgICBtX29y
QWxsRGF0YSA9IDA7CiAgICAgfQogCiBwcml2YXRlOgotICAgIEhUTUxUb2tlblR5cGVzOjpUeXBl
IG1fdHlwZTsKKyAgICBUeXBlIG1fdHlwZTsKICAgICBBdHRyaWJ1dGU6OlJhbmdlIG1fcmFuZ2U7
IC8vIEFsd2F5cyBzdGFydHMgYXQgemVyby4KICAgICBpbnQgbV9iYXNlT2Zmc2V0OwogICAgIERh
dGFWZWN0b3IgbV9kYXRhOwpAQCAtNDQwLDI4MSArNDQ3LDYgQEAgcHJpdmF0ZToKICAgICBPd25Q
dHI8RG9jdHlwZURhdGE+IG1fZG9jdHlwZURhdGE7CiB9OwogCi1jbGFzcyBBdG9taWNIVE1MVG9r
ZW4gOiBwdWJsaWMgUmVmQ291bnRlZDxBdG9taWNIVE1MVG9rZW4+IHsKLSAgICBXVEZfTUFLRV9O
T05DT1BZQUJMRShBdG9taWNIVE1MVG9rZW4pOwotcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVm
UHRyPEF0b21pY0hUTUxUb2tlbj4gY3JlYXRlKEhUTUxUb2tlbiYgdG9rZW4pCi0gICAgewotICAg
ICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEF0b21pY0hUTUxUb2tlbih0b2tlbikpOwotICAgIH0K
LQotI2lmIEVOQUJMRShUSFJFQURFRF9IVE1MX1BBUlNFUikKLQotICAgIHN0YXRpYyBQYXNzUmVm
UHRyPEF0b21pY0hUTUxUb2tlbj4gY3JlYXRlKGNvbnN0IENvbXBhY3RIVE1MVG9rZW4mIHRva2Vu
KQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBBdG9taWNIVE1MVG9rZW4odG9r
ZW4pKTsKLSAgICB9Ci0KLSNlbmRpZgotCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8QXRvbWljSFRN
TFRva2VuPiBjcmVhdGUoSFRNTFRva2VuVHlwZXM6OlR5cGUgdHlwZSwgY29uc3QgQXRvbWljU3Ry
aW5nJiBuYW1lLCBjb25zdCBWZWN0b3I8QXR0cmlidXRlPiYgYXR0cmlidXRlcyA9IFZlY3RvcjxB
dHRyaWJ1dGU+KCkpCi0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEF0b21pY0hU
TUxUb2tlbih0eXBlLCBuYW1lLCBhdHRyaWJ1dGVzKSk7Ci0gICAgfQotCi0gICAgYm9vbCBmb3Jj
ZVF1aXJrcygpIGNvbnN0Ci0gICAgewotICAgICAgICBBU1NFUlQobV90eXBlID09IEhUTUxUb2tl
blR5cGVzOjpET0NUWVBFKTsKLSAgICAgICAgcmV0dXJuIG1fZG9jdHlwZURhdGEtPm1fZm9yY2VR
dWlya3M7Ci0gICAgfQotCi0gICAgSFRNTFRva2VuVHlwZXM6OlR5cGUgdHlwZSgpIGNvbnN0IHsg
cmV0dXJuIG1fdHlwZTsgfQotCi0gICAgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKCkgY29uc3QK
LSAgICB7Ci0gICAgICAgIEFTU0VSVCh1c2VzTmFtZSgpKTsKLSAgICAgICAgcmV0dXJuIG1fbmFt
ZTsKLSAgICB9Ci0KLSAgICB2b2lkIHNldE5hbWUoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKQot
ICAgIHsKLSAgICAgICAgQVNTRVJUKHVzZXNOYW1lKCkpOwotICAgICAgICBtX25hbWUgPSBuYW1l
OwotICAgIH0KLQotICAgIGJvb2wgc2VsZkNsb3NpbmcoKSBjb25zdAotICAgIHsKLSAgICAgICAg
QVNTRVJUKG1fdHlwZSA9PSBIVE1MVG9rZW5UeXBlczo6U3RhcnRUYWcgfHwgbV90eXBlID09IEhU
TUxUb2tlblR5cGVzOjpFbmRUYWcpOwotICAgICAgICByZXR1cm4gbV9zZWxmQ2xvc2luZzsKLSAg
ICB9Ci0KLSAgICBBdHRyaWJ1dGUqIGdldEF0dHJpYnV0ZUl0ZW0oY29uc3QgUXVhbGlmaWVkTmFt
ZSYgYXR0cmlidXRlTmFtZSkKLSAgICB7Ci0gICAgICAgIEFTU0VSVCh1c2VzQXR0cmlidXRlcygp
KTsKLSAgICAgICAgcmV0dXJuIGZpbmRBdHRyaWJ1dGVJblZlY3RvcihtX2F0dHJpYnV0ZXMsIGF0
dHJpYnV0ZU5hbWUpOwotICAgIH0KLQotICAgIFZlY3RvcjxBdHRyaWJ1dGU+JiBhdHRyaWJ1dGVz
KCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVCh1c2VzQXR0cmlidXRlcygpKTsKLSAgICAgICAgcmV0
dXJuIG1fYXR0cmlidXRlczsKLSAgICB9Ci0KLSAgICBjb25zdCBWZWN0b3I8QXR0cmlidXRlPiYg
YXR0cmlidXRlcygpIGNvbnN0Ci0gICAgewotICAgICAgICBBU1NFUlQodXNlc0F0dHJpYnV0ZXMo
KSk7Ci0gICAgICAgIHJldHVybiBtX2F0dHJpYnV0ZXM7Ci0gICAgfQotCi0gICAgY29uc3QgVUNo
YXIqIGNoYXJhY3RlcnMoKSBjb25zdAotICAgIHsKLSAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBI
VE1MVG9rZW5UeXBlczo6Q2hhcmFjdGVyKTsKLSAgICAgICAgcmV0dXJuIG1fZXh0ZXJuYWxDaGFy
YWN0ZXJzOwotICAgIH0KLQotICAgIHNpemVfdCBjaGFyYWN0ZXJzTGVuZ3RoKCkgY29uc3QKLSAg
ICB7Ci0gICAgICAgIEFTU0VSVChtX3R5cGUgPT0gSFRNTFRva2VuVHlwZXM6OkNoYXJhY3Rlcik7
Ci0gICAgICAgIHJldHVybiBtX2V4dGVybmFsQ2hhcmFjdGVyc0xlbmd0aDsKLSAgICB9Ci0KLSAg
ICBib29sIGlzQWxsOEJpdERhdGEoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1faXNB
bGw4Qml0RGF0YTsKLSAgICB9Ci0KLSAgICBjb25zdCBTdHJpbmcmIGNvbW1lbnQoKSBjb25zdAot
ICAgIHsKLSAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBIVE1MVG9rZW5UeXBlczo6Q29tbWVudCk7
Ci0gICAgICAgIHJldHVybiBtX2RhdGE7Ci0gICAgfQotCi0gICAgLy8gRklYTUU6IERpc3Rpbmd1
aXNoIGJldHdlZW4gYSBtaXNzaW5nIHB1YmxpYyBpZGVudGlmZXIgYW5kIGFuIGVtcHR5IG9uZS4K
LSAgICBXVEY6OlZlY3RvcjxVQ2hhcj4mIHB1YmxpY0lkZW50aWZpZXIoKSBjb25zdAotICAgIHsK
LSAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBIVE1MVG9rZW5UeXBlczo6RE9DVFlQRSk7Ci0gICAg
ICAgIHJldHVybiBtX2RvY3R5cGVEYXRhLT5tX3B1YmxpY0lkZW50aWZpZXI7Ci0gICAgfQotCi0g
ICAgLy8gRklYTUU6IERpc3Rpbmd1aXNoIGJldHdlZW4gYSBtaXNzaW5nIHN5c3RlbSBpZGVudGlm
ZXIgYW5kIGFuIGVtcHR5IG9uZS4KLSAgICBXVEY6OlZlY3RvcjxVQ2hhcj4mIHN5c3RlbUlkZW50
aWZpZXIoKSBjb25zdAotICAgIHsKLSAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBIVE1MVG9rZW5U
eXBlczo6RE9DVFlQRSk7Ci0gICAgICAgIHJldHVybiBtX2RvY3R5cGVEYXRhLT5tX3N5c3RlbUlk
ZW50aWZpZXI7Ci0gICAgfQotCi0gICAgdm9pZCBjbGVhckV4dGVybmFsQ2hhcmFjdGVycygpCi0g
ICAgewotICAgICAgICBtX2V4dGVybmFsQ2hhcmFjdGVycyA9IDA7Ci0gICAgICAgIG1fZXh0ZXJu
YWxDaGFyYWN0ZXJzTGVuZ3RoID0gMDsKLSAgICAgICAgbV9pc0FsbDhCaXREYXRhID0gZmFsc2U7
Ci0gICAgfQotCi1wcml2YXRlOgotICAgIGV4cGxpY2l0IEF0b21pY0hUTUxUb2tlbihIVE1MVG9r
ZW4mIHRva2VuKQotICAgICAgICA6IG1fdHlwZSh0b2tlbi50eXBlKCkpCi0gICAgewotICAgICAg
ICBzd2l0Y2ggKG1fdHlwZSkgewotICAgICAgICBjYXNlIEhUTUxUb2tlblR5cGVzOjpVbmluaXRp
YWxpemVkOgotICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgY2FzZSBIVE1MVG9rZW5UeXBlczo6RE9DVFlQRToKLSAgICAgICAgICAg
IG1fbmFtZSA9IEF0b21pY1N0cmluZyh0b2tlbi5uYW1lU3RyaW5nKCkpOwotICAgICAgICAgICAg
bV9kb2N0eXBlRGF0YSA9IHRva2VuLnJlbGVhc2VEb2N0eXBlRGF0YSgpOwotICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgIGNhc2UgSFRNTFRva2VuVHlwZXM6OkVuZE9mRmlsZToKLSAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICBjYXNlIEhUTUxUb2tlblR5cGVzOjpTdGFydFRhZzoKLSAgICAg
ICAgY2FzZSBIVE1MVG9rZW5UeXBlczo6RW5kVGFnOiB7Ci0gICAgICAgICAgICBtX3NlbGZDbG9z
aW5nID0gdG9rZW4uc2VsZkNsb3NpbmcoKTsKLSAgICAgICAgICAgIG1fbmFtZSA9IEF0b21pY1N0
cmluZyh0b2tlbi5uYW1lU3RyaW5nKCkpOwotICAgICAgICAgICAgaW5pdGlhbGl6ZUF0dHJpYnV0
ZXModG9rZW4uYXR0cmlidXRlcygpKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0g
ICAgICAgIGNhc2UgSFRNTFRva2VuVHlwZXM6OkNvbW1lbnQ6Ci0gICAgICAgICAgICBpZiAodG9r
ZW4uaXNBbGw4Qml0RGF0YSgpKQotICAgICAgICAgICAgICAgIG1fZGF0YSA9IFN0cmluZzo6bWFr
ZThCaXRGcm9tMTZCaXRTb3VyY2UodG9rZW4uY29tbWVudCgpLmRhdGEoKSwgdG9rZW4uY29tbWVu
dCgpLnNpemUoKSk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgbV9kYXRhID0g
U3RyaW5nKHRva2VuLmNvbW1lbnQoKS5kYXRhKCksIHRva2VuLmNvbW1lbnQoKS5zaXplKCkpOwot
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgSFRNTFRva2VuVHlwZXM6OkNoYXJhY3Rl
cjoKLSAgICAgICAgICAgIG1fZXh0ZXJuYWxDaGFyYWN0ZXJzID0gdG9rZW4uY2hhcmFjdGVycygp
LmRhdGEoKTsKLSAgICAgICAgICAgIG1fZXh0ZXJuYWxDaGFyYWN0ZXJzTGVuZ3RoID0gdG9rZW4u
Y2hhcmFjdGVycygpLnNpemUoKTsKLSAgICAgICAgICAgIG1faXNBbGw4Qml0RGF0YSA9IHRva2Vu
LmlzQWxsOEJpdERhdGEoKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBkZWZhdWx0Ogot
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSNpZiBFTkFCTEUoVEhSRUFE
RURfSFRNTF9QQVJTRVIpCi0KLSAgICBleHBsaWNpdCBBdG9taWNIVE1MVG9rZW4oY29uc3QgQ29t
cGFjdEhUTUxUb2tlbiYgdG9rZW4pCi0gICAgICAgIDogbV90eXBlKHRva2VuLnR5cGUoKSkKLSAg
ICB7Ci0gICAgICAgIHN3aXRjaCAobV90eXBlKSB7Ci0gICAgICAgIGNhc2UgSFRNTFRva2VuVHlw
ZXM6OlVuaW5pdGlhbGl6ZWQ6Ci0gICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEhUTUxUb2tlblR5cGVzOjpET0NUWVBFOgot
ICAgICAgICAgICAgbV9uYW1lID0gdG9rZW4uZGF0YSgpOwotICAgICAgICAgICAgbV9kb2N0eXBl
RGF0YSA9IGFkb3B0UHRyKG5ldyBEb2N0eXBlRGF0YSgpKTsKLSAgICAgICAgICAgIG1fZG9jdHlw
ZURhdGEtPm1faGFzUHVibGljSWRlbnRpZmllciA9IHRydWU7Ci0gICAgICAgICAgICBtX2RvY3R5
cGVEYXRhLT5tX3B1YmxpY0lkZW50aWZpZXIuYXBwZW5kKHRva2VuLnB1YmxpY0lkZW50aWZpZXIo
KS5jaGFyYWN0ZXJzKCksIHRva2VuLnB1YmxpY0lkZW50aWZpZXIoKS5sZW5ndGgoKSk7Ci0gICAg
ICAgICAgICBtX2RvY3R5cGVEYXRhLT5tX2hhc1N5c3RlbUlkZW50aWZpZXIgPSB0cnVlOwotICAg
ICAgICAgICAgbV9kb2N0eXBlRGF0YS0+bV9zeXN0ZW1JZGVudGlmaWVyLmFwcGVuZCh0b2tlbi5z
eXN0ZW1JZGVudGlmaWVyKCkuY2hhcmFjdGVycygpLCB0b2tlbi5zeXN0ZW1JZGVudGlmaWVyKCku
bGVuZ3RoKCkpOwotICAgICAgICAgICAgbV9kb2N0eXBlRGF0YS0+bV9mb3JjZVF1aXJrcyA9IHRv
a2VuLmRvY3R5cGVGb3JjZXNRdWlya3MoKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBj
YXNlIEhUTUxUb2tlblR5cGVzOjpFbmRPZkZpbGU6Ci0gICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgY2FzZSBIVE1MVG9rZW5UeXBlczo6U3RhcnRUYWc6Ci0gICAgICAgICAgICBtX2F0dHJpYnV0
ZXMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eSh0b2tlbi5hdHRyaWJ1dGVzKCkuc2l6ZSgpKTsKLSAg
ICAgICAgICAgIGZvciAoVmVjdG9yPENvbXBhY3RBdHRyaWJ1dGU+Ojpjb25zdF9pdGVyYXRvciBp
dCA9IHRva2VuLmF0dHJpYnV0ZXMoKS5iZWdpbigpOyBpdCAhPSB0b2tlbi5hdHRyaWJ1dGVzKCku
ZW5kKCk7ICsraXQpCi0gICAgICAgICAgICAgICAgbV9hdHRyaWJ1dGVzLmFwcGVuZChBdHRyaWJ1
dGUoUXVhbGlmaWVkTmFtZShudWxsQXRvbSwgaXQtPm5hbWUoKSwgbnVsbEF0b20pLCBpdC0+dmFs
dWUoKSkpOwotICAgICAgICAgICAgLy8gRmFsbCB0aHJvdWdoIQotICAgICAgICBjYXNlIEhUTUxU
b2tlblR5cGVzOjpFbmRUYWc6Ci0gICAgICAgICAgICBtX3NlbGZDbG9zaW5nID0gdG9rZW4uc2Vs
ZkNsb3NpbmcoKTsKLSAgICAgICAgICAgIG1fbmFtZSA9IEF0b21pY1N0cmluZyh0b2tlbi5kYXRh
KCkpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgSFRNTFRva2VuVHlwZXM6OkNv
bW1lbnQ6Ci0gICAgICAgICAgICBtX2RhdGEgPSB0b2tlbi5kYXRhKCk7Ci0gICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgY2FzZSBIVE1MVG9rZW5UeXBlczo6Q2hhcmFjdGVyOgotICAgICAgICAg
ICAgbV9leHRlcm5hbENoYXJhY3RlcnMgPSB0b2tlbi5kYXRhKCkuY2hhcmFjdGVycygpOwotICAg
ICAgICAgICAgbV9leHRlcm5hbENoYXJhY3RlcnNMZW5ndGggPSB0b2tlbi5kYXRhKCkubGVuZ3Ro
KCk7Ci0gICAgICAgICAgICBtX2lzQWxsOEJpdERhdGEgPSB0b2tlbi5pc0FsbDhCaXREYXRhKCk7
Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICB9Ci0gICAgfQotCi0jZW5kaWYKLQotICAgIGV4cGxpY2l0IEF0b21pY0hUTUxU
b2tlbihIVE1MVG9rZW5UeXBlczo6VHlwZSB0eXBlKQotICAgICAgICA6IG1fdHlwZSh0eXBlKQot
ICAgICAgICAsIG1fZXh0ZXJuYWxDaGFyYWN0ZXJzKDApCi0gICAgICAgICwgbV9leHRlcm5hbENo
YXJhY3RlcnNMZW5ndGgoMCkKLSAgICAgICAgLCBtX2lzQWxsOEJpdERhdGEoZmFsc2UpCi0gICAg
ICAgICwgbV9zZWxmQ2xvc2luZyhmYWxzZSkKLSAgICB7Ci0gICAgfQotCi0gICAgQXRvbWljSFRN
TFRva2VuKEhUTUxUb2tlblR5cGVzOjpUeXBlIHR5cGUsIGNvbnN0IEF0b21pY1N0cmluZyYgbmFt
ZSwgY29uc3QgVmVjdG9yPEF0dHJpYnV0ZT4mIGF0dHJpYnV0ZXMgPSBWZWN0b3I8QXR0cmlidXRl
PigpKQotICAgICAgICA6IG1fdHlwZSh0eXBlKQotICAgICAgICAsIG1fbmFtZShuYW1lKQotICAg
ICAgICAsIG1fZXh0ZXJuYWxDaGFyYWN0ZXJzKDApCi0gICAgICAgICwgbV9leHRlcm5hbENoYXJh
Y3RlcnNMZW5ndGgoMCkKLSAgICAgICAgLCBtX2lzQWxsOEJpdERhdGEoZmFsc2UpCi0gICAgICAg
ICwgbV9zZWxmQ2xvc2luZyhmYWxzZSkKLSAgICAgICAgLCBtX2F0dHJpYnV0ZXMoYXR0cmlidXRl
cykKLSAgICB7Ci0gICAgICAgIEFTU0VSVCh1c2VzTmFtZSgpKTsKLSAgICB9Ci0KLSAgICBIVE1M
VG9rZW5UeXBlczo6VHlwZSBtX3R5cGU7Ci0KLSAgICB2b2lkIGluaXRpYWxpemVBdHRyaWJ1dGVz
KGNvbnN0IEhUTUxUb2tlbjo6QXR0cmlidXRlTGlzdCYgYXR0cmlidXRlcyk7Ci0gICAgUXVhbGlm
aWVkTmFtZSBuYW1lRm9yQXR0cmlidXRlKGNvbnN0IEhUTUxUb2tlbjo6QXR0cmlidXRlJikgY29u
c3Q7Ci0KLSAgICBib29sIHVzZXNOYW1lKCkgY29uc3Q7Ci0KLSAgICBib29sIHVzZXNBdHRyaWJ1
dGVzKCkgY29uc3Q7Ci0KLSAgICAvLyAibmFtZSIgZm9yIERPQ1RZUEUsIFN0YXJ0VGFnLCBhbmQg
RW5kVGFnCi0gICAgQXRvbWljU3RyaW5nIG1fbmFtZTsKLQotICAgIC8vICJkYXRhIiBmb3IgQ29t
bWVudAotICAgIFN0cmluZyBtX2RhdGE7Ci0KLSAgICAvLyAiY2hhcmFjdGVycyIgZm9yIENoYXJh
Y3RlcgotICAgIC8vCi0gICAgLy8gV2UgZG9uJ3Qgd2FudCB0byBjb3B5IHRoZSB0aGUgY2hhcmFj
dGVycyBvdXQgb2YgdGhlIFRva2VuLCBzbyB3ZQotICAgIC8vIGtlZXAgYSBwb2ludGVyIHRvIGl0
cyBidWZmZXIgaW5zdGVhZC4gVGhpcyBidWZmZXIgaXMgb3duZWQgYnkgdGhlCi0gICAgLy8gVG9r
ZW4gYW5kIGNhdXNlcyBhIGxpZmV0aW1lIGRlcGVuZGVuY2UgYmV0d2VlbiB0aGVzZSBvYmplY3Rz
LgotICAgIC8vCi0gICAgLy8gRklYTUU6IEFkZCBhIG1lY2hhbmlzbSBmb3IgImludGVybmFsaXpp
bmciIHRoZSBjaGFyYWN0ZXJzIHdoZW4gdGhlCi0gICAgLy8gICAgICAgIEhUTUxUb2tlbiBpcyBk
ZXN0cnVjdGVkLgotICAgIGNvbnN0IFVDaGFyKiBtX2V4dGVybmFsQ2hhcmFjdGVyczsKLSAgICBz
aXplX3QgbV9leHRlcm5hbENoYXJhY3RlcnNMZW5ndGg7Ci0gICAgYm9vbCBtX2lzQWxsOEJpdERh
dGE7Ci0KLSAgICAvLyBGb3IgRE9DVFlQRQotICAgIE93blB0cjxEb2N0eXBlRGF0YT4gbV9kb2N0
eXBlRGF0YTsKLQotICAgIC8vIEZvciBTdGFydFRhZyBhbmQgRW5kVGFnCi0gICAgYm9vbCBtX3Nl
bGZDbG9zaW5nOwotCi0gICAgVmVjdG9yPEF0dHJpYnV0ZT4gbV9hdHRyaWJ1dGVzOwotfTsKLQot
aW5saW5lIHZvaWQgQXRvbWljSFRNTFRva2VuOjppbml0aWFsaXplQXR0cmlidXRlcyhjb25zdCBI
VE1MVG9rZW46OkF0dHJpYnV0ZUxpc3QmIGF0dHJpYnV0ZXMpCi17Ci0gICAgc2l6ZV90IHNpemUg
PSBhdHRyaWJ1dGVzLnNpemUoKTsKLSAgICBpZiAoIXNpemUpCi0gICAgICAgIHJldHVybjsKLQot
ICAgIG1fYXR0cmlidXRlcy5jbGVhcigpOwotICAgIG1fYXR0cmlidXRlcy5yZXNlcnZlSW5pdGlh
bENhcGFjaXR5KHNpemUpOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7
Ci0gICAgICAgIGNvbnN0IEhUTUxUb2tlbjo6QXR0cmlidXRlJiBhdHRyaWJ1dGUgPSBhdHRyaWJ1
dGVzW2ldOwotICAgICAgICBpZiAoYXR0cmlidXRlLm1fbmFtZS5pc0VtcHR5KCkpCi0gICAgICAg
ICAgICBjb250aW51ZTsKLQotICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGJlIGFibGUgdG8g
YWRkIHRoZSBmb2xsb3dpbmcgQVNTRVJUIG9uY2Ugd2UgZml4Ci0gICAgICAgIC8vIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02Mjk3MQotICAgICAgICAvLyAgIEFTU0VS
VChhdHRyaWJ1dGUubV9uYW1lUmFuZ2UubV9zdGFydCk7Ci0gICAgICAgIEFTU0VSVChhdHRyaWJ1
dGUubV9uYW1lUmFuZ2UubV9lbmQpOwotICAgICAgICBBU1NFUlQoYXR0cmlidXRlLm1fdmFsdWVS
YW5nZS5tX3N0YXJ0KTsKLSAgICAgICAgQVNTRVJUKGF0dHJpYnV0ZS5tX3ZhbHVlUmFuZ2UubV9l
bmQpOwotCi0gICAgICAgIEF0b21pY1N0cmluZyB2YWx1ZShhdHRyaWJ1dGUubV92YWx1ZS5kYXRh
KCksIGF0dHJpYnV0ZS5tX3ZhbHVlLnNpemUoKSk7Ci0gICAgICAgIGNvbnN0IFF1YWxpZmllZE5h
bWUmIG5hbWUgPSBuYW1lRm9yQXR0cmlidXRlKGF0dHJpYnV0ZSk7Ci0gICAgICAgIGlmICghZmlu
ZEF0dHJpYnV0ZUluVmVjdG9yKG1fYXR0cmlidXRlcywgbmFtZSkpCi0gICAgICAgICAgICBtX2F0
dHJpYnV0ZXMuYXBwZW5kKEF0dHJpYnV0ZShuYW1lLCB2YWx1ZSkpOwotICAgIH0KLX0KLQogfQog
CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUb2tl
blR5cGVzLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVG9rZW5UeXBlcy5oCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0MGIyNDM1YzYxZWI2YWVjMmM4YzQwMDkyMDUw
ZmNmYzFjOWY0ZDBmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUb2tlblR5cGVzLmgKKysrIC9kZXYv
bnVsbApAQCAtMSw0NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSwg
SW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
LSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4gCi0gKi8KLQotI2lmbmRlZiBIVE1MVG9rZW5UeXBlc19oCi0jZGVmaW5lIEhUTUxUb2tl
blR5cGVzX2gKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBIVE1MVG9rZW5UeXBlcyB7
Ci1wdWJsaWM6Ci0gICAgZW51bSBUeXBlIHsKLSAgICAgICAgVW5pbml0aWFsaXplZCwKLSAgICAg
ICAgRE9DVFlQRSwKLSAgICAgICAgU3RhcnRUYWcsCi0gICAgICAgIEVuZFRhZywKLSAgICAgICAg
Q29tbWVudCwKLSAgICAgICAgQ2hhcmFjdGVyLAotICAgICAgICBFbmRPZkZpbGUsCi0gICAgfTsK
LX07Ci0KLX0KLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNl
ci9IVE1MVG9rZW5pemVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUb2tl
bml6ZXIuY3BwCmluZGV4IDEwOTM4OWRmY2FmYzY5OGI4MGY0YzdjNzJiYzJmYWM0YmU1MzQ0YTMu
LmYwYWRmZTNmZjhhNzUyYTgyZjRhYzYyZWQwMDJhZjhiZmJmYjcwZmMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUb2tlbml6ZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUb2tlbml6ZXIuY3BwCkBAIC01NiwxMiArNTYsMTIgQEAg
UXVhbGlmaWVkTmFtZSBBdG9taWNIVE1MVG9rZW46Om5hbWVGb3JBdHRyaWJ1dGUoY29uc3QgSFRN
TFRva2VuOjpBdHRyaWJ1dGUmIGF0dHIKIAogYm9vbCBBdG9taWNIVE1MVG9rZW46OnVzZXNOYW1l
KCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV90eXBlID09IEhUTUxUb2tlblR5cGVzOjpTdGFydFRh
ZyB8fCBtX3R5cGUgPT0gSFRNTFRva2VuVHlwZXM6OkVuZFRhZyB8fCBtX3R5cGUgPT0gSFRNTFRv
a2VuVHlwZXM6OkRPQ1RZUEU7CisgICAgcmV0dXJuIG1fdHlwZSA9PSBIVE1MVG9rZW46OlN0YXJ0
VGFnIHx8IG1fdHlwZSA9PSBIVE1MVG9rZW46OkVuZFRhZyB8fCBtX3R5cGUgPT0gSFRNTFRva2Vu
OjpET0NUWVBFOwogfQogCiBib29sIEF0b21pY0hUTUxUb2tlbjo6dXNlc0F0dHJpYnV0ZXMoKSBj
b25zdAogewotICAgIHJldHVybiBtX3R5cGUgPT0gSFRNTFRva2VuVHlwZXM6OlN0YXJ0VGFnIHx8
IG1fdHlwZSA9PSBIVE1MVG9rZW5UeXBlczo6RW5kVGFnOworICAgIHJldHVybiBtX3R5cGUgPT0g
SFRNTFRva2VuOjpTdGFydFRhZyB8fCBtX3R5cGUgPT0gSFRNTFRva2VuOjpFbmRUYWc7CiB9CiAK
IHN0YXRpYyBpbmxpbmUgVUNoYXIgdG9Mb3dlckNhc2UoVUNoYXIgY2MpCkBAIC0xNzgsOSArMTc4
LDkgQEAgaW5saW5lIGJvb2wgSFRNTFRva2VuaXplcjo6cHJvY2Vzc0VudGl0eShTZWdtZW50ZWRT
dHJpbmcmIHNvdXJjZSkKIAogYm9vbCBIVE1MVG9rZW5pemVyOjpmbHVzaEJ1ZmZlcmVkRW5kVGFn
KFNlZ21lbnRlZFN0cmluZyYgc291cmNlKQogewotICAgIEFTU0VSVChtX3Rva2VuLT50eXBlKCkg
PT0gSFRNTFRva2VuVHlwZXM6OkNoYXJhY3RlciB8fCBtX3Rva2VuLT50eXBlKCkgPT0gSFRNTFRv
a2VuVHlwZXM6OlVuaW5pdGlhbGl6ZWQpOworICAgIEFTU0VSVChtX3Rva2VuLT50eXBlKCkgPT0g
SFRNTFRva2VuOjpDaGFyYWN0ZXIgfHwgbV90b2tlbi0+dHlwZSgpID09IEhUTUxUb2tlbjo6VW5p
bml0aWFsaXplZCk7CiAgICAgc291cmNlLmFkdmFuY2VBbmRVcGRhdGVMaW5lTnVtYmVyKCk7Ci0g
ICAgaWYgKG1fdG9rZW4tPnR5cGUoKSA9PSBIVE1MVG9rZW5UeXBlczo6Q2hhcmFjdGVyKQorICAg
IGlmIChtX3Rva2VuLT50eXBlKCkgPT0gSFRNTFRva2VuOjpDaGFyYWN0ZXIpCiAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgIG1fdG9rZW4tPmJlZ2luRW5kVGFnKG1fYnVmZmVyZWRFbmRUYWdOYW1l
KTsKICAgICBtX2J1ZmZlcmVkRW5kVGFnTmFtZS5jbGVhcigpOwpAQCAtMjEyLDcgKzIxMiw3IEBA
IGJvb2wgSFRNTFRva2VuaXplcjo6bmV4dFRva2VuKFNlZ21lbnRlZFN0cmluZyYgc291cmNlLCBI
VE1MVG9rZW4mIHRva2VuKQogewogICAgIC8vIElmIHdlIGhhdmUgYSB0b2tlbiBpbiBwcm9ncmVz
cywgdGhlbiB3ZSdyZSBzdXBwb3NlZCB0byBiZSBjYWxsZWQgYmFjawogICAgIC8vIHdpdGggdGhl
IHNhbWUgdG9rZW4gc28gd2UgY2FuIGZpbmlzaCBpdC4KLSAgICBBU1NFUlQoIW1fdG9rZW4gfHwg
bV90b2tlbiA9PSAmdG9rZW4gfHwgdG9rZW4udHlwZSgpID09IEhUTUxUb2tlblR5cGVzOjpVbmlu
aXRpYWxpemVkKTsKKyAgICBBU1NFUlQoIW1fdG9rZW4gfHwgbV90b2tlbiA9PSAmdG9rZW4gfHwg
dG9rZW4udHlwZSgpID09IEhUTUxUb2tlbjo6VW5pbml0aWFsaXplZCk7CiAgICAgbV90b2tlbiA9
ICZ0b2tlbjsKIAogICAgIGlmICghbV9idWZmZXJlZEVuZFRhZ05hbWUuaXNFbXB0eSgpICYmICFp
c0VuZFRhZ0J1ZmZlcmluZ1N0YXRlKG1fc3RhdGUpKSB7CkBAIC0yMzgsNyArMjM4LDcgQEAgYm9v
bCBIVE1MVG9rZW5pemVyOjpuZXh0VG9rZW4oU2VnbWVudGVkU3RyaW5nJiBzb3VyY2UsIEhUTUxU
b2tlbiYgdG9rZW4pCiAgICAgICAgIGlmIChjYyA9PSAnJicpCiAgICAgICAgICAgICBIVE1MX0FE
VkFOQ0VfVE8oQ2hhcmFjdGVyUmVmZXJlbmNlSW5EYXRhU3RhdGUpOwogICAgICAgICBlbHNlIGlm
IChjYyA9PSAnPCcpIHsKLSAgICAgICAgICAgIGlmIChtX3Rva2VuLT50eXBlKCkgPT0gSFRNTFRv
a2VuVHlwZXM6OkNoYXJhY3RlcikgeworICAgICAgICAgICAgaWYgKG1fdG9rZW4tPnR5cGUoKSA9
PSBIVE1MVG9rZW46OkNoYXJhY3RlcikgewogICAgICAgICAgICAgICAgIC8vIFdlIGhhdmUgYSBi
dW5jaCBvZiBjaGFyYWN0ZXIgdG9rZW5zIHF1ZXVlZCB1cCB0aGF0IHdlCiAgICAgICAgICAgICAg
ICAgLy8gYXJlIGVtaXR0aW5nIGxhemlseSBoZXJlLgogICAgICAgICAgICAgICAgIHJldHVybiB0
cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRva2VuaXpl
ci5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRva2VuaXplci5oCmluZGV4IDMz
ZjM4NTk5Yjk5MGViMzE5NzJkYjNkYThiMzFmNTI2MGFhYzk2MGUuLjhhNDNkNjA2ODA4OTRhNTE3
YWI5OTQ1NDg5ZDA4YjI3ZWQ4ODQyMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
cGFyc2VyL0hUTUxUb2tlbml6ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9I
VE1MVG9rZW5pemVyLmgKQEAgLTI1Myw4ICsyNTMsOCBAQCBwcml2YXRlOgogCiAgICAgaW5saW5l
IHZvaWQgc2F2ZUVuZFRhZ05hbWVJZk5lZWRlZCgpCiAgICAgewotICAgICAgICBBU1NFUlQobV90
b2tlbi0+dHlwZSgpICE9IEhUTUxUb2tlblR5cGVzOjpVbmluaXRpYWxpemVkKTsKLSAgICAgICAg
aWYgKG1fdG9rZW4tPnR5cGUoKSA9PSBIVE1MVG9rZW5UeXBlczo6U3RhcnRUYWcpCisgICAgICAg
IEFTU0VSVChtX3Rva2VuLT50eXBlKCkgIT0gSFRNTFRva2VuOjpVbmluaXRpYWxpemVkKTsKKyAg
ICAgICAgaWYgKG1fdG9rZW4tPnR5cGUoKSA9PSBIVE1MVG9rZW46OlN0YXJ0VGFnKQogICAgICAg
ICAgICAgbV9hcHByb3ByaWF0ZUVuZFRhZ05hbWUgPSBtX3Rva2VuLT5uYW1lKCk7CiAgICAgfQog
ICAgIGlubGluZSBib29sIGlzQXBwcm9wcmlhdGVFbmRUYWcoKTsKQEAgLTI2Miw3ICsyNjIsNyBA
QCBwcml2YXRlOgogCiAgICAgaW5saW5lIGJvb2wgaGF2ZUJ1ZmZlcmVkQ2hhcmFjdGVyVG9rZW4o
KQogICAgIHsKLSAgICAgICAgcmV0dXJuIG1fdG9rZW4tPnR5cGUoKSA9PSBIVE1MVG9rZW46OlR5
cGU6OkNoYXJhY3RlcjsKKyAgICAgICAgcmV0dXJuIG1fdG9rZW4tPnR5cGUoKSA9PSBIVE1MVG9r
ZW46OkNoYXJhY3RlcjsKICAgICB9CiAKICAgICBTdGF0ZSBtX3N0YXRlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRyZWVCdWlsZGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUcmVlQnVpbGRlci5jcHAKaW5kZXggODkxNmNiZTk3Y2I2
NWI5MTk3NDUwMDg0NjExY2YzM2IxNzc3ZDRkZC4uNWU3MTU1YjhjZjE4ZTc2ZjBlODA3NzE2NWYy
OWY0NDFjMGMxMDZlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRN
TFRyZWVCdWlsZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVHJl
ZUJ1aWxkZXIuY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5j
bHVkZSAiSFRNTFRyZWVCdWlsZGVyLmgiCiAKKyNpbmNsdWRlICJBdG9taWNIVE1MVG9rZW4uaCIK
ICNpbmNsdWRlICJEb2N1bWVudEZyYWdtZW50LmgiCiAjaW5jbHVkZSAiSFRNTERvY3VtZW50Lmgi
CiAjaW5jbHVkZSAiSFRNTERvY3VtZW50UGFyc2VyLmgiCkBAIC0zODQsMjkgKzM4NSwyOSBAQCB2
b2lkIEhUTUxUcmVlQnVpbGRlcjo6Y29uc3RydWN0VHJlZShBdG9taWNIVE1MVG9rZW4qIHRva2Vu
KQogdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NUb2tlbihBdG9taWNIVE1MVG9rZW4qIHRv
a2VuKQogewogICAgIHN3aXRjaCAodG9rZW4tPnR5cGUoKSkgewotICAgIGNhc2UgSFRNTFRva2Vu
VHlwZXM6OlVuaW5pdGlhbGl6ZWQ6CisgICAgY2FzZSBIVE1MVG9rZW46OlVuaW5pdGlhbGl6ZWQ6
CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICBicmVhazsKLSAgICBjYXNl
IEhUTUxUb2tlblR5cGVzOjpET0NUWVBFOgorICAgIGNhc2UgSFRNTFRva2VuOjpET0NUWVBFOgog
ICAgICAgICBtX3Nob3VsZFNraXBMZWFkaW5nTmV3bGluZSA9IGZhbHNlOwogICAgICAgICBwcm9j
ZXNzRG9jdHlwZVRva2VuKHRva2VuKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBIVE1MVG9r
ZW5UeXBlczo6U3RhcnRUYWc6CisgICAgY2FzZSBIVE1MVG9rZW46OlN0YXJ0VGFnOgogICAgICAg
ICBtX3Nob3VsZFNraXBMZWFkaW5nTmV3bGluZSA9IGZhbHNlOwogICAgICAgICBwcm9jZXNzU3Rh
cnRUYWcodG9rZW4pOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEhUTUxUb2tlblR5cGVzOjpF
bmRUYWc6CisgICAgY2FzZSBIVE1MVG9rZW46OkVuZFRhZzoKICAgICAgICAgbV9zaG91bGRTa2lw
TGVhZGluZ05ld2xpbmUgPSBmYWxzZTsKICAgICAgICAgcHJvY2Vzc0VuZFRhZyh0b2tlbik7CiAg
ICAgICAgIGJyZWFrOwotICAgIGNhc2UgSFRNTFRva2VuVHlwZXM6OkNvbW1lbnQ6CisgICAgY2Fz
ZSBIVE1MVG9rZW46OkNvbW1lbnQ6CiAgICAgICAgIG1fc2hvdWxkU2tpcExlYWRpbmdOZXdsaW5l
ID0gZmFsc2U7CiAgICAgICAgIHByb2Nlc3NDb21tZW50KHRva2VuKTsKICAgICAgICAgcmV0dXJu
OwotICAgIGNhc2UgSFRNTFRva2VuVHlwZXM6OkNoYXJhY3RlcjoKKyAgICBjYXNlIEhUTUxUb2tl
bjo6Q2hhcmFjdGVyOgogICAgICAgICBwcm9jZXNzQ2hhcmFjdGVyKHRva2VuKTsKICAgICAgICAg
YnJlYWs7Ci0gICAgY2FzZSBIVE1MVG9rZW5UeXBlczo6RW5kT2ZGaWxlOgorICAgIGNhc2UgSFRN
TFRva2VuOjpFbmRPZkZpbGU6CiAgICAgICAgIG1fc2hvdWxkU2tpcExlYWRpbmdOZXdsaW5lID0g
ZmFsc2U7CiAgICAgICAgIHByb2Nlc3NFbmRPZkZpbGUodG9rZW4pOwogICAgICAgICBicmVhazsK
QEAgLTQxNSw3ICs0MTYsNyBAQCB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc1Rva2VuKEF0
b21pY0hUTUxUb2tlbiogdG9rZW4pCiAKIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzRG9j
dHlwZVRva2VuKEF0b21pY0hUTUxUb2tlbiogdG9rZW4pCiB7Ci0gICAgQVNTRVJUKHRva2VuLT50
eXBlKCkgPT0gSFRNTFRva2VuVHlwZXM6OkRPQ1RZUEUpOworICAgIEFTU0VSVCh0b2tlbi0+dHlw
ZSgpID09IEhUTUxUb2tlbjo6RE9DVFlQRSk7CiAgICAgaWYgKG1faW5zZXJ0aW9uTW9kZSA9PSBJ
bml0aWFsTW9kZSkgewogICAgICAgICBtX3RyZWUuaW5zZXJ0RG9jdHlwZSh0b2tlbik7CiAgICAg
ICAgIHNldEluc2VydGlvbk1vZGUoQmVmb3JlSFRNTE1vZGUpOwpAQCAtNDMyLDEzICs0MzMsMTMg
QEAgdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NEb2N0eXBlVG9rZW4oQXRvbWljSFRNTFRv
a2VuKiB0b2tlbikKIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzRmFrZVN0YXJ0VGFnKGNv
bnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIGNvbnN0IFZlY3RvcjxBdHRyaWJ1dGU+JiBhdHRy
aWJ1dGVzKQogewogICAgIC8vIEZJWE1FOiBXZSdsbCBuZWVkIGEgZmFuY2llciBjb252ZXJzaW9u
IHRoYW4ganVzdCAibG9jYWxOYW1lIiBmb3IgU1ZHL01hdGhNTCB0YWdzLgotICAgIFJlZlB0cjxB
dG9taWNIVE1MVG9rZW4+IGZha2VUb2tlbiA9IEF0b21pY0hUTUxUb2tlbjo6Y3JlYXRlKEhUTUxU
b2tlblR5cGVzOjpTdGFydFRhZywgdGFnTmFtZS5sb2NhbE5hbWUoKSwgYXR0cmlidXRlcyk7Cisg
ICAgUmVmUHRyPEF0b21pY0hUTUxUb2tlbj4gZmFrZVRva2VuID0gQXRvbWljSFRNTFRva2VuOjpj
cmVhdGUoSFRNTFRva2VuOjpTdGFydFRhZywgdGFnTmFtZS5sb2NhbE5hbWUoKSwgYXR0cmlidXRl
cyk7CiAgICAgcHJvY2Vzc1N0YXJ0VGFnKGZha2VUb2tlbi5nZXQoKSk7CiB9CiAKIHZvaWQgSFRN
TFRyZWVCdWlsZGVyOjpwcm9jZXNzRmFrZUVuZFRhZyhjb25zdCBBdG9taWNTdHJpbmcmIHRhZ05h
bWUpCiB7Ci0gICAgUmVmUHRyPEF0b21pY0hUTUxUb2tlbj4gZmFrZVRva2VuID0gQXRvbWljSFRN
TFRva2VuOjpjcmVhdGUoSFRNTFRva2VuVHlwZXM6OkVuZFRhZywgdGFnTmFtZSk7CisgICAgUmVm
UHRyPEF0b21pY0hUTUxUb2tlbj4gZmFrZVRva2VuID0gQXRvbWljSFRNTFRva2VuOjpjcmVhdGUo
SFRNTFRva2VuOjpFbmRUYWcsIHRhZ05hbWUpOwogICAgIHByb2Nlc3NFbmRUYWcoZmFrZVRva2Vu
LmdldCgpKTsKIH0KIApAQCAtNDU5LDcgKzQ2MCw3IEBAIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpw
cm9jZXNzRmFrZVBFbmRUYWdJZlBJbkJ1dHRvblNjb3BlKCkKIHsKICAgICBpZiAoIW1fdHJlZS5v
cGVuRWxlbWVudHMoKS0+aW5CdXR0b25TY29wZShwVGFnLmxvY2FsTmFtZSgpKSkKICAgICAgICAg
cmV0dXJuOwotICAgIFJlZlB0cjxBdG9taWNIVE1MVG9rZW4+IGVuZFAgPSBBdG9taWNIVE1MVG9r
ZW46OmNyZWF0ZShIVE1MVG9rZW5UeXBlczo6RW5kVGFnLCBwVGFnLmxvY2FsTmFtZSgpKTsKKyAg
ICBSZWZQdHI8QXRvbWljSFRNTFRva2VuPiBlbmRQID0gQXRvbWljSFRNTFRva2VuOjpjcmVhdGUo
SFRNTFRva2VuOjpFbmRUYWcsIHBUYWcubG9jYWxOYW1lKCkpOwogICAgIHByb2Nlc3NFbmRUYWco
ZW5kUC5nZXQoKSk7CiB9CiAKQEAgLTQ3OCw3ICs0NzksNyBAQCBWZWN0b3I8QXR0cmlidXRlPiBI
VE1MVHJlZUJ1aWxkZXI6OmF0dHJpYnV0ZXNGb3JJc2luZGV4SW5wdXQoQXRvbWljSFRNTFRva2Vu
KiB0bwogCiB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0lzaW5kZXhTdGFydFRhZ0Zvcklu
Qm9keShBdG9taWNIVE1MVG9rZW4qIHRva2VuKQogewotICAgIEFTU0VSVCh0b2tlbi0+dHlwZSgp
ID09IEhUTUxUb2tlblR5cGVzOjpTdGFydFRhZyk7CisgICAgQVNTRVJUKHRva2VuLT50eXBlKCkg
PT0gSFRNTFRva2VuOjpTdGFydFRhZyk7CiAgICAgQVNTRVJUKHRva2VuLT5uYW1lKCkgPT0gaXNp
bmRleFRhZyk7CiAgICAgcGFyc2VFcnJvcih0b2tlbik7CiAgICAgaWYgKG1fdHJlZS5mb3JtKCkp
CkBAIC02MzAsNyArNjMxLDcgQEAgc3RhdGljIHZvaWQgYWRqdXN0Rm9yZWlnbkF0dHJpYnV0ZXMo
QXRvbWljSFRNTFRva2VuKiB0b2tlbikKIAogdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NT
dGFydFRhZ0ZvckluQm9keShBdG9taWNIVE1MVG9rZW4qIHRva2VuKQogewotICAgIEFTU0VSVCh0
b2tlbi0+dHlwZSgpID09IEhUTUxUb2tlblR5cGVzOjpTdGFydFRhZyk7CisgICAgQVNTRVJUKHRv
a2VuLT50eXBlKCkgPT0gSFRNTFRva2VuOjpTdGFydFRhZyk7CiAgICAgaWYgKHRva2VuLT5uYW1l
KCkgPT0gaHRtbFRhZykgewogICAgICAgICBwcm9jZXNzSHRtbFN0YXJ0VGFnRm9ySW5Cb2R5KHRv
a2VuKTsKICAgICAgICAgcmV0dXJuOwpAQCAtODk3LDcgKzg5OCw3IEBAIHZvaWQgSFRNTFRyZWVC
dWlsZGVyOjpwcm9jZXNzU3RhcnRUYWdGb3JJbkJvZHkoQXRvbWljSFRNTFRva2VuKiB0b2tlbikK
ICAgICB9CiAgICAgaWYgKHRva2VuLT5uYW1lKCkgPT0gb3B0Z3JvdXBUYWcgfHwgdG9rZW4tPm5h
bWUoKSA9PSBvcHRpb25UYWcpIHsKICAgICAgICAgaWYgKG1fdHJlZS5jdXJyZW50U3RhY2tJdGVt
KCktPmhhc1RhZ05hbWUob3B0aW9uVGFnKSkgewotICAgICAgICAgICAgUmVmUHRyPEF0b21pY0hU
TUxUb2tlbj4gZW5kT3B0aW9uID0gQXRvbWljSFRNTFRva2VuOjpjcmVhdGUoSFRNTFRva2VuVHlw
ZXM6OkVuZFRhZywgb3B0aW9uVGFnLmxvY2FsTmFtZSgpKTsKKyAgICAgICAgICAgIFJlZlB0cjxB
dG9taWNIVE1MVG9rZW4+IGVuZE9wdGlvbiA9IEF0b21pY0hUTUxUb2tlbjo6Y3JlYXRlKEhUTUxU
b2tlbjo6RW5kVGFnLCBvcHRpb25UYWcubG9jYWxOYW1lKCkpOwogICAgICAgICAgICAgcHJvY2Vz
c0VuZFRhZyhlbmRPcHRpb24uZ2V0KCkpOwogICAgICAgICB9CiAgICAgICAgIG1fdHJlZS5yZWNv
bnN0cnVjdFRoZUFjdGl2ZUZvcm1hdHRpbmdFbGVtZW50cygpOwpAQCAtMTAyMSw3ICsxMDIyLDcg
QEAgdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OmNsb3NlVGhlQ2VsbCgpCiAKIHZvaWQgSFRNTFRyZWVC
dWlsZGVyOjpwcm9jZXNzU3RhcnRUYWdGb3JJblRhYmxlKEF0b21pY0hUTUxUb2tlbiogdG9rZW4p
CiB7Ci0gICAgQVNTRVJUKHRva2VuLT50eXBlKCkgPT0gSFRNTFRva2VuVHlwZXM6OlN0YXJ0VGFn
KTsKKyAgICBBU1NFUlQodG9rZW4tPnR5cGUoKSA9PSBIVE1MVG9rZW46OlN0YXJ0VGFnKTsKICAg
ICBpZiAodG9rZW4tPm5hbWUoKSA9PSBjYXB0aW9uVGFnKSB7CiAgICAgICAgIG1fdHJlZS5vcGVu
RWxlbWVudHMoKS0+cG9wVW50aWxUYWJsZVNjb3BlTWFya2VyKCk7CiAgICAgICAgIG1fdHJlZS5h
Y3RpdmVGb3JtYXR0aW5nRWxlbWVudHMoKS0+YXBwZW5kTWFya2VyKCk7CkBAIC0xMDk3LDcgKzEw
OTgsNyBAQCB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc1N0YXJ0VGFnRm9ySW5UYWJsZShB
dG9taWNIVE1MVG9rZW4qIHRva2VuKQogCiB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc1N0
YXJ0VGFnKEF0b21pY0hUTUxUb2tlbiogdG9rZW4pCiB7Ci0gICAgQVNTRVJUKHRva2VuLT50eXBl
KCkgPT0gSFRNTFRva2VuVHlwZXM6OlN0YXJ0VGFnKTsKKyAgICBBU1NFUlQodG9rZW4tPnR5cGUo
KSA9PSBIVE1MVG9rZW46OlN0YXJ0VGFnKTsKICAgICBzd2l0Y2ggKGluc2VydGlvbk1vZGUoKSkg
ewogICAgIGNhc2UgSW5pdGlhbE1vZGU6CiAgICAgICAgIEFTU0VSVChpbnNlcnRpb25Nb2RlKCkg
PT0gSW5pdGlhbE1vZGUpOwpAQCAtMTM2Niw3ICsxMzY3LDcgQEAgdm9pZCBIVE1MVHJlZUJ1aWxk
ZXI6OnByb2Nlc3NTdGFydFRhZyhBdG9taWNIVE1MVG9rZW4qIHRva2VuKQogICAgICAgICAgICAg
fHwgdG9rZW4tPm5hbWUoKSA9PSB0clRhZwogICAgICAgICAgICAgfHwgaXNUYWJsZUNlbGxDb250
ZXh0VGFnKHRva2VuLT5uYW1lKCkpKSB7CiAgICAgICAgICAgICBwYXJzZUVycm9yKHRva2VuKTsK
LSAgICAgICAgICAgIFJlZlB0cjxBdG9taWNIVE1MVG9rZW4+IGVuZFNlbGVjdCA9IEF0b21pY0hU
TUxUb2tlbjo6Y3JlYXRlKEhUTUxUb2tlblR5cGVzOjpFbmRUYWcsIHNlbGVjdFRhZy5sb2NhbE5h
bWUoKSk7CisgICAgICAgICAgICBSZWZQdHI8QXRvbWljSFRNTFRva2VuPiBlbmRTZWxlY3QgPSBB
dG9taWNIVE1MVG9rZW46OmNyZWF0ZShIVE1MVG9rZW46OkVuZFRhZywgc2VsZWN0VGFnLmxvY2Fs
TmFtZSgpKTsKICAgICAgICAgICAgIHByb2Nlc3NFbmRUYWcoZW5kU2VsZWN0LmdldCgpKTsKICAg
ICAgICAgICAgIHByb2Nlc3NTdGFydFRhZyh0b2tlbik7CiAgICAgICAgICAgICByZXR1cm47CkBA
IC0xMzgwLDcgKzEzODEsNyBAQCB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc1N0YXJ0VGFn
KEF0b21pY0hUTUxUb2tlbiogdG9rZW4pCiAgICAgICAgIH0KICAgICAgICAgaWYgKHRva2VuLT5u
YW1lKCkgPT0gb3B0aW9uVGFnKSB7CiAgICAgICAgICAgICBpZiAobV90cmVlLmN1cnJlbnRTdGFj
a0l0ZW0oKS0+aGFzVGFnTmFtZShvcHRpb25UYWcpKSB7Ci0gICAgICAgICAgICAgICAgUmVmUHRy
PEF0b21pY0hUTUxUb2tlbj4gZW5kT3B0aW9uID0gQXRvbWljSFRNTFRva2VuOjpjcmVhdGUoSFRN
TFRva2VuVHlwZXM6OkVuZFRhZywgb3B0aW9uVGFnLmxvY2FsTmFtZSgpKTsKKyAgICAgICAgICAg
ICAgICBSZWZQdHI8QXRvbWljSFRNTFRva2VuPiBlbmRPcHRpb24gPSBBdG9taWNIVE1MVG9rZW46
OmNyZWF0ZShIVE1MVG9rZW46OkVuZFRhZywgb3B0aW9uVGFnLmxvY2FsTmFtZSgpKTsKICAgICAg
ICAgICAgICAgICBwcm9jZXNzRW5kVGFnKGVuZE9wdGlvbi5nZXQoKSk7CiAgICAgICAgICAgICB9
CiAgICAgICAgICAgICBtX3RyZWUuaW5zZXJ0SFRNTEVsZW1lbnQodG9rZW4pOwpAQCAtMTM4OCwx
MSArMTM4OSwxMSBAQCB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc1N0YXJ0VGFnKEF0b21p
Y0hUTUxUb2tlbiogdG9rZW4pCiAgICAgICAgIH0KICAgICAgICAgaWYgKHRva2VuLT5uYW1lKCkg
PT0gb3B0Z3JvdXBUYWcpIHsKICAgICAgICAgICAgIGlmIChtX3RyZWUuY3VycmVudFN0YWNrSXRl
bSgpLT5oYXNUYWdOYW1lKG9wdGlvblRhZykpIHsKLSAgICAgICAgICAgICAgICBSZWZQdHI8QXRv
bWljSFRNTFRva2VuPiBlbmRPcHRpb24gPSBBdG9taWNIVE1MVG9rZW46OmNyZWF0ZShIVE1MVG9r
ZW5UeXBlczo6RW5kVGFnLCBvcHRpb25UYWcubG9jYWxOYW1lKCkpOworICAgICAgICAgICAgICAg
IFJlZlB0cjxBdG9taWNIVE1MVG9rZW4+IGVuZE9wdGlvbiA9IEF0b21pY0hUTUxUb2tlbjo6Y3Jl
YXRlKEhUTUxUb2tlbjo6RW5kVGFnLCBvcHRpb25UYWcubG9jYWxOYW1lKCkpOwogICAgICAgICAg
ICAgICAgIHByb2Nlc3NFbmRUYWcoZW5kT3B0aW9uLmdldCgpKTsKICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgIGlmIChtX3RyZWUuY3VycmVudFN0YWNrSXRlbSgpLT5oYXNUYWdOYW1lKG9wdGdy
b3VwVGFnKSkgewotICAgICAgICAgICAgICAgIFJlZlB0cjxBdG9taWNIVE1MVG9rZW4+IGVuZE9w
dGdyb3VwID0gQXRvbWljSFRNTFRva2VuOjpjcmVhdGUoSFRNTFRva2VuVHlwZXM6OkVuZFRhZywg
b3B0Z3JvdXBUYWcubG9jYWxOYW1lKCkpOworICAgICAgICAgICAgICAgIFJlZlB0cjxBdG9taWNI
VE1MVG9rZW4+IGVuZE9wdGdyb3VwID0gQXRvbWljSFRNTFRva2VuOjpjcmVhdGUoSFRNTFRva2Vu
OjpFbmRUYWcsIG9wdGdyb3VwVGFnLmxvY2FsTmFtZSgpKTsKICAgICAgICAgICAgICAgICBwcm9j
ZXNzRW5kVGFnKGVuZE9wdGdyb3VwLmdldCgpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAg
IG1fdHJlZS5pbnNlcnRIVE1MRWxlbWVudCh0b2tlbik7CkBAIC0xNDAwLDcgKzE0MDEsNyBAQCB2
b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc1N0YXJ0VGFnKEF0b21pY0hUTUxUb2tlbiogdG9r
ZW4pCiAgICAgICAgIH0KICAgICAgICAgaWYgKHRva2VuLT5uYW1lKCkgPT0gc2VsZWN0VGFnKSB7
CiAgICAgICAgICAgICBwYXJzZUVycm9yKHRva2VuKTsKLSAgICAgICAgICAgIFJlZlB0cjxBdG9t
aWNIVE1MVG9rZW4+IGVuZFNlbGVjdCA9IEF0b21pY0hUTUxUb2tlbjo6Y3JlYXRlKEhUTUxUb2tl
blR5cGVzOjpFbmRUYWcsIHNlbGVjdFRhZy5sb2NhbE5hbWUoKSk7CisgICAgICAgICAgICBSZWZQ
dHI8QXRvbWljSFRNTFRva2VuPiBlbmRTZWxlY3QgPSBBdG9taWNIVE1MVG9rZW46OmNyZWF0ZShI
VE1MVG9rZW46OkVuZFRhZywgc2VsZWN0VGFnLmxvY2FsTmFtZSgpKTsKICAgICAgICAgICAgIHBy
b2Nlc3NFbmRUYWcoZW5kU2VsZWN0LmdldCgpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgfQpAQCAtMTQxMiw3ICsxNDEzLDcgQEAgdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NT
dGFydFRhZyhBdG9taWNIVE1MVG9rZW4qIHRva2VuKQogICAgICAgICAgICAgICAgIEFTU0VSVChp
c1BhcnNpbmdGcmFnbWVudCgpKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICBSZWZQdHI8QXRvbWljSFRNTFRva2VuPiBlbmRTZWxlY3QgPSBBdG9t
aWNIVE1MVG9rZW46OmNyZWF0ZShIVE1MVG9rZW5UeXBlczo6RW5kVGFnLCBzZWxlY3RUYWcubG9j
YWxOYW1lKCkpOworICAgICAgICAgICAgUmVmUHRyPEF0b21pY0hUTUxUb2tlbj4gZW5kU2VsZWN0
ID0gQXRvbWljSFRNTFRva2VuOjpjcmVhdGUoSFRNTFRva2VuOjpFbmRUYWcsIHNlbGVjdFRhZy5s
b2NhbE5hbWUoKSk7CiAgICAgICAgICAgICBwcm9jZXNzRW5kVGFnKGVuZFNlbGVjdC5nZXQoKSk7
CiAgICAgICAgICAgICBwcm9jZXNzU3RhcnRUYWcodG9rZW4pOwogICAgICAgICAgICAgcmV0dXJu
OwpAQCAtMTQ5Miw3ICsxNDkzLDcgQEAgdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NIdG1s
U3RhcnRUYWdGb3JJbkJvZHkoQXRvbWljSFRNTFRva2VuKiB0b2tlbikKIAogYm9vbCBIVE1MVHJl
ZUJ1aWxkZXI6OnByb2Nlc3NCb2R5RW5kVGFnRm9ySW5Cb2R5KEF0b21pY0hUTUxUb2tlbiogdG9r
ZW4pCiB7Ci0gICAgQVNTRVJUKHRva2VuLT50eXBlKCkgPT0gSFRNTFRva2VuVHlwZXM6OkVuZFRh
Zyk7CisgICAgQVNTRVJUKHRva2VuLT50eXBlKCkgPT0gSFRNTFRva2VuOjpFbmRUYWcpOwogICAg
IEFTU0VSVCh0b2tlbi0+bmFtZSgpID09IGJvZHlUYWcpOwogICAgIGlmICghbV90cmVlLm9wZW5F
bGVtZW50cygpLT5pblNjb3BlKGJvZHlUYWcubG9jYWxOYW1lKCkpKSB7CiAgICAgICAgIHBhcnNl
RXJyb3IodG9rZW4pOwpAQCAtMTUwNSw3ICsxNTA2LDcgQEAgYm9vbCBIVE1MVHJlZUJ1aWxkZXI6
OnByb2Nlc3NCb2R5RW5kVGFnRm9ySW5Cb2R5KEF0b21pY0hUTUxUb2tlbiogdG9rZW4pCiAKIHZv
aWQgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzQW55T3RoZXJFbmRUYWdGb3JJbkJvZHkoQXRvbWlj
SFRNTFRva2VuKiB0b2tlbikKIHsKLSAgICBBU1NFUlQodG9rZW4tPnR5cGUoKSA9PSBIVE1MVG9r
ZW5UeXBlczo6RW5kVGFnKTsKKyAgICBBU1NFUlQodG9rZW4tPnR5cGUoKSA9PSBIVE1MVG9rZW46
OkVuZFRhZyk7CiAgICAgSFRNTEVsZW1lbnRTdGFjazo6RWxlbWVudFJlY29yZCogcmVjb3JkID0g
bV90cmVlLm9wZW5FbGVtZW50cygpLT50b3BSZWNvcmQoKTsKICAgICB3aGlsZSAoMSkgewogICAg
ICAgICBSZWZQdHI8SFRNTFN0YWNrSXRlbT4gaXRlbSA9IHJlY29yZC0+c3RhY2tJdGVtKCk7CkBA
IC0xNzA5LDcgKzE3MTAsNyBAQCB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cmVzZXRJbnNlcnRpb25N
b2RlQXBwcm9wcmlhdGVseSgpCiAKIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzRW5kVGFn
Rm9ySW5UYWJsZUJvZHkoQXRvbWljSFRNTFRva2VuKiB0b2tlbikKIHsKLSAgICBBU1NFUlQodG9r
ZW4tPnR5cGUoKSA9PSBIVE1MVG9rZW5UeXBlczo6RW5kVGFnKTsKKyAgICBBU1NFUlQodG9rZW4t
PnR5cGUoKSA9PSBIVE1MVG9rZW46OkVuZFRhZyk7CiAgICAgaWYgKGlzVGFibGVCb2R5Q29udGV4
dFRhZyh0b2tlbi0+bmFtZSgpKSkgewogICAgICAgICBpZiAoIW1fdHJlZS5vcGVuRWxlbWVudHMo
KS0+aW5UYWJsZVNjb3BlKHRva2VuLT5uYW1lKCkpKSB7CiAgICAgICAgICAgICBwYXJzZUVycm9y
KHRva2VuKTsKQEAgLTE3NDYsNyArMTc0Nyw3IEBAIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpwcm9j
ZXNzRW5kVGFnRm9ySW5UYWJsZUJvZHkoQXRvbWljSFRNTFRva2VuKiB0b2tlbikKIAogdm9pZCBI
VE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NFbmRUYWdGb3JJblJvdyhBdG9taWNIVE1MVG9rZW4qIHRv
a2VuKQogewotICAgIEFTU0VSVCh0b2tlbi0+dHlwZSgpID09IEhUTUxUb2tlblR5cGVzOjpFbmRU
YWcpOworICAgIEFTU0VSVCh0b2tlbi0+dHlwZSgpID09IEhUTUxUb2tlbjo6RW5kVGFnKTsKICAg
ICBpZiAodG9rZW4tPm5hbWUoKSA9PSB0clRhZykgewogICAgICAgICBwcm9jZXNzVHJFbmRUYWdG
b3JJblJvdygpOwogICAgICAgICByZXR1cm47CkBAIC0xNzgyLDcgKzE3ODMsNyBAQCB2b2lkIEhU
TUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0VuZFRhZ0ZvckluUm93KEF0b21pY0hUTUxUb2tlbiogdG9r
ZW4pCiAKIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzRW5kVGFnRm9ySW5DZWxsKEF0b21p
Y0hUTUxUb2tlbiogdG9rZW4pCiB7Ci0gICAgQVNTRVJUKHRva2VuLT50eXBlKCkgPT0gSFRNTFRv
a2VuVHlwZXM6OkVuZFRhZyk7CisgICAgQVNTRVJUKHRva2VuLT50eXBlKCkgPT0gSFRNTFRva2Vu
OjpFbmRUYWcpOwogICAgIGlmIChpc1RhYmxlQ2VsbENvbnRleHRUYWcodG9rZW4tPm5hbWUoKSkp
IHsKICAgICAgICAgaWYgKCFtX3RyZWUub3BlbkVsZW1lbnRzKCktPmluVGFibGVTY29wZSh0b2tl
bi0+bmFtZSgpKSkgewogICAgICAgICAgICAgcGFyc2VFcnJvcih0b2tlbik7CkBAIC0xODIzLDEz
ICsxODI0LDEzIEBAIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzRW5kVGFnRm9ySW5DZWxs
KEF0b21pY0hUTUxUb2tlbiogdG9rZW4pCiAKIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNz
RW5kVGFnRm9ySW5Cb2R5KEF0b21pY0hUTUxUb2tlbiogdG9rZW4pCiB7Ci0gICAgQVNTRVJUKHRv
a2VuLT50eXBlKCkgPT0gSFRNTFRva2VuVHlwZXM6OkVuZFRhZyk7CisgICAgQVNTRVJUKHRva2Vu
LT50eXBlKCkgPT0gSFRNTFRva2VuOjpFbmRUYWcpOwogICAgIGlmICh0b2tlbi0+bmFtZSgpID09
IGJvZHlUYWcpIHsKICAgICAgICAgcHJvY2Vzc0JvZHlFbmRUYWdGb3JJbkJvZHkodG9rZW4pOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGlmICh0b2tlbi0+bmFtZSgpID09IGh0bWxUYWcp
IHsKLSAgICAgICAgUmVmUHRyPEF0b21pY0hUTUxUb2tlbj4gZW5kQm9keSA9IEF0b21pY0hUTUxU
b2tlbjo6Y3JlYXRlKEhUTUxUb2tlblR5cGVzOjpFbmRUYWcsIGJvZHlUYWcubG9jYWxOYW1lKCkp
OworICAgICAgICBSZWZQdHI8QXRvbWljSFRNTFRva2VuPiBlbmRCb2R5ID0gQXRvbWljSFRNTFRv
a2VuOjpjcmVhdGUoSFRNTFRva2VuOjpFbmRUYWcsIGJvZHlUYWcubG9jYWxOYW1lKCkpOwogICAg
ICAgICBpZiAocHJvY2Vzc0JvZHlFbmRUYWdGb3JJbkJvZHkoZW5kQm9keS5nZXQoKSkpCiAgICAg
ICAgICAgICBwcm9jZXNzRW5kVGFnKHRva2VuKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMjAwMyw3
ICsyMDA0LDcgQEAgYm9vbCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NUYWJsZUVuZFRhZ0Zvcklu
VGFibGUoKQogCiB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0VuZFRhZ0ZvckluVGFibGUo
QXRvbWljSFRNTFRva2VuKiB0b2tlbikKIHsKLSAgICBBU1NFUlQodG9rZW4tPnR5cGUoKSA9PSBI
VE1MVG9rZW5UeXBlczo6RW5kVGFnKTsKKyAgICBBU1NFUlQodG9rZW4tPnR5cGUoKSA9PSBIVE1M
VG9rZW46OkVuZFRhZyk7CiAgICAgaWYgKHRva2VuLT5uYW1lKCkgPT0gdGFibGVUYWcpIHsKICAg
ICAgICAgcHJvY2Vzc1RhYmxlRW5kVGFnRm9ySW5UYWJsZSgpOwogICAgICAgICByZXR1cm47CkBA
IC0yMDI1LDcgKzIwMjYsNyBAQCB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0VuZFRhZ0Zv
ckluVGFibGUoQXRvbWljSFRNTFRva2VuKiB0b2tlbikKIAogdm9pZCBIVE1MVHJlZUJ1aWxkZXI6
OnByb2Nlc3NFbmRUYWcoQXRvbWljSFRNTFRva2VuKiB0b2tlbikKIHsKLSAgICBBU1NFUlQodG9r
ZW4tPnR5cGUoKSA9PSBIVE1MVG9rZW5UeXBlczo6RW5kVGFnKTsKKyAgICBBU1NFUlQodG9rZW4t
PnR5cGUoKSA9PSBIVE1MVG9rZW46OkVuZFRhZyk7CiAgICAgc3dpdGNoIChpbnNlcnRpb25Nb2Rl
KCkpIHsKICAgICBjYXNlIEluaXRpYWxNb2RlOgogICAgICAgICBBU1NFUlQoaW5zZXJ0aW9uTW9k
ZSgpID09IEluaXRpYWxNb2RlKTsKQEAgLTIyNDYsNyArMjI0Nyw3IEBAIHZvaWQgSFRNTFRyZWVC
dWlsZGVyOjpwcm9jZXNzRW5kVGFnKEF0b21pY0hUTUxUb2tlbiogdG9rZW4pCiAgICAgICAgICAg
ICB8fCBpc1RhYmxlQ2VsbENvbnRleHRUYWcodG9rZW4tPm5hbWUoKSkpIHsKICAgICAgICAgICAg
IHBhcnNlRXJyb3IodG9rZW4pOwogICAgICAgICAgICAgaWYgKG1fdHJlZS5vcGVuRWxlbWVudHMo
KS0+aW5UYWJsZVNjb3BlKHRva2VuLT5uYW1lKCkpKSB7Ci0gICAgICAgICAgICAgICAgUmVmUHRy
PEF0b21pY0hUTUxUb2tlbj4gZW5kU2VsZWN0ID0gQXRvbWljSFRNTFRva2VuOjpjcmVhdGUoSFRN
TFRva2VuVHlwZXM6OkVuZFRhZywgc2VsZWN0VGFnLmxvY2FsTmFtZSgpKTsKKyAgICAgICAgICAg
ICAgICBSZWZQdHI8QXRvbWljSFRNTFRva2VuPiBlbmRTZWxlY3QgPSBBdG9taWNIVE1MVG9rZW46
OmNyZWF0ZShIVE1MVG9rZW46OkVuZFRhZywgc2VsZWN0VGFnLmxvY2FsTmFtZSgpKTsKICAgICAg
ICAgICAgICAgICBwcm9jZXNzRW5kVGFnKGVuZFNlbGVjdC5nZXQoKSk7CiAgICAgICAgICAgICAg
ICAgcHJvY2Vzc0VuZFRhZyh0b2tlbik7CiAgICAgICAgICAgICB9CkBAIC0yMzExLDcgKzIzMTIs
NyBAQCB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0VuZFRhZyhBdG9taWNIVE1MVG9rZW4q
IHRva2VuKQogCiB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0NvbW1lbnQoQXRvbWljSFRN
TFRva2VuKiB0b2tlbikKIHsKLSAgICBBU1NFUlQodG9rZW4tPnR5cGUoKSA9PSBIVE1MVG9rZW5U
eXBlczo6Q29tbWVudCk7CisgICAgQVNTRVJUKHRva2VuLT50eXBlKCkgPT0gSFRNTFRva2VuOjpD
b21tZW50KTsKICAgICBpZiAobV9pbnNlcnRpb25Nb2RlID09IEluaXRpYWxNb2RlCiAgICAgICAg
IHx8IG1faW5zZXJ0aW9uTW9kZSA9PSBCZWZvcmVIVE1MTW9kZQogICAgICAgICB8fCBtX2luc2Vy
dGlvbk1vZGUgPT0gQWZ0ZXJBZnRlckJvZHlNb2RlCkBAIC0yMzMzLDcgKzIzMzQsNyBAQCB2b2lk
IEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0NvbW1lbnQoQXRvbWljSFRNTFRva2VuKiB0b2tlbikK
IAogdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NDaGFyYWN0ZXIoQXRvbWljSFRNTFRva2Vu
KiB0b2tlbikKIHsKLSAgICBBU1NFUlQodG9rZW4tPnR5cGUoKSA9PSBIVE1MVG9rZW5UeXBlczo6
Q2hhcmFjdGVyKTsKKyAgICBBU1NFUlQodG9rZW4tPnR5cGUoKSA9PSBIVE1MVG9rZW46OkNoYXJh
Y3Rlcik7CiAgICAgRXh0ZXJuYWxDaGFyYWN0ZXJUb2tlbkJ1ZmZlciBidWZmZXIodG9rZW4pOwog
ICAgIHByb2Nlc3NDaGFyYWN0ZXJCdWZmZXIoYnVmZmVyKTsKIH0KQEAgLTI1MjIsNyArMjUyMyw3
IEBAIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzQ2hhcmFjdGVyQnVmZmVyRm9ySW5Cb2R5
KEV4dGVybmFsQ2hhcmFjdGVyVG9rZW5CdWZmCiAKIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpwcm9j
ZXNzRW5kT2ZGaWxlKEF0b21pY0hUTUxUb2tlbiogdG9rZW4pCiB7Ci0gICAgQVNTRVJUKHRva2Vu
LT50eXBlKCkgPT0gSFRNTFRva2VuVHlwZXM6OkVuZE9mRmlsZSk7CisgICAgQVNTRVJUKHRva2Vu
LT50eXBlKCkgPT0gSFRNTFRva2VuOjpFbmRPZkZpbGUpOwogICAgIHN3aXRjaCAoaW5zZXJ0aW9u
TW9kZSgpKSB7CiAgICAgY2FzZSBJbml0aWFsTW9kZToKICAgICAgICAgQVNTRVJUKGluc2VydGlv
bk1vZGUoKSA9PSBJbml0aWFsTW9kZSk7CkBAIC0yNjQyLDMyICsyNjQzLDMyIEBAIHZvaWQgSFRN
TFRyZWVCdWlsZGVyOjpkZWZhdWx0Rm9ySW5pdGlhbCgpCiAKIHZvaWQgSFRNTFRyZWVCdWlsZGVy
OjpkZWZhdWx0Rm9yQmVmb3JlSFRNTCgpCiB7Ci0gICAgUmVmUHRyPEF0b21pY0hUTUxUb2tlbj4g
c3RhcnRIVE1MID0gQXRvbWljSFRNTFRva2VuOjpjcmVhdGUoSFRNTFRva2VuVHlwZXM6OlN0YXJ0
VGFnLCBodG1sVGFnLmxvY2FsTmFtZSgpKTsKKyAgICBSZWZQdHI8QXRvbWljSFRNTFRva2VuPiBz
dGFydEhUTUwgPSBBdG9taWNIVE1MVG9rZW46OmNyZWF0ZShIVE1MVG9rZW46OlN0YXJ0VGFnLCBo
dG1sVGFnLmxvY2FsTmFtZSgpKTsKICAgICBtX3RyZWUuaW5zZXJ0SFRNTEh0bWxTdGFydFRhZ0Jl
Zm9yZUhUTUwoc3RhcnRIVE1MLmdldCgpKTsKICAgICBzZXRJbnNlcnRpb25Nb2RlKEJlZm9yZUhl
YWRNb2RlKTsKIH0KIAogdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OmRlZmF1bHRGb3JCZWZvcmVIZWFk
KCkKIHsKLSAgICBSZWZQdHI8QXRvbWljSFRNTFRva2VuPiBzdGFydEhlYWQgPSBBdG9taWNIVE1M
VG9rZW46OmNyZWF0ZShIVE1MVG9rZW5UeXBlczo6U3RhcnRUYWcsIGhlYWRUYWcubG9jYWxOYW1l
KCkpOworICAgIFJlZlB0cjxBdG9taWNIVE1MVG9rZW4+IHN0YXJ0SGVhZCA9IEF0b21pY0hUTUxU
b2tlbjo6Y3JlYXRlKEhUTUxUb2tlbjo6U3RhcnRUYWcsIGhlYWRUYWcubG9jYWxOYW1lKCkpOwog
ICAgIHByb2Nlc3NTdGFydFRhZyhzdGFydEhlYWQuZ2V0KCkpOwogfQogCiB2b2lkIEhUTUxUcmVl
QnVpbGRlcjo6ZGVmYXVsdEZvckluSGVhZCgpCiB7Ci0gICAgUmVmUHRyPEF0b21pY0hUTUxUb2tl
bj4gZW5kSGVhZCA9IEF0b21pY0hUTUxUb2tlbjo6Y3JlYXRlKEhUTUxUb2tlblR5cGVzOjpFbmRU
YWcsIGhlYWRUYWcubG9jYWxOYW1lKCkpOworICAgIFJlZlB0cjxBdG9taWNIVE1MVG9rZW4+IGVu
ZEhlYWQgPSBBdG9taWNIVE1MVG9rZW46OmNyZWF0ZShIVE1MVG9rZW46OkVuZFRhZywgaGVhZFRh
Zy5sb2NhbE5hbWUoKSk7CiAgICAgcHJvY2Vzc0VuZFRhZyhlbmRIZWFkLmdldCgpKTsKIH0KIAog
dm9pZCBIVE1MVHJlZUJ1aWxkZXI6OmRlZmF1bHRGb3JJbkhlYWROb3NjcmlwdCgpCiB7Ci0gICAg
UmVmUHRyPEF0b21pY0hUTUxUb2tlbj4gZW5kTm9zY3JpcHQgPSBBdG9taWNIVE1MVG9rZW46OmNy
ZWF0ZShIVE1MVG9rZW5UeXBlczo6RW5kVGFnLCBub3NjcmlwdFRhZy5sb2NhbE5hbWUoKSk7Cisg
ICAgUmVmUHRyPEF0b21pY0hUTUxUb2tlbj4gZW5kTm9zY3JpcHQgPSBBdG9taWNIVE1MVG9rZW46
OmNyZWF0ZShIVE1MVG9rZW46OkVuZFRhZywgbm9zY3JpcHRUYWcubG9jYWxOYW1lKCkpOwogICAg
IHByb2Nlc3NFbmRUYWcoZW5kTm9zY3JpcHQuZ2V0KCkpOwogfQogCiB2b2lkIEhUTUxUcmVlQnVp
bGRlcjo6ZGVmYXVsdEZvckFmdGVySGVhZCgpCiB7Ci0gICAgUmVmUHRyPEF0b21pY0hUTUxUb2tl
bj4gc3RhcnRCb2R5ID0gQXRvbWljSFRNTFRva2VuOjpjcmVhdGUoSFRNTFRva2VuVHlwZXM6OlN0
YXJ0VGFnLCBib2R5VGFnLmxvY2FsTmFtZSgpKTsKKyAgICBSZWZQdHI8QXRvbWljSFRNTFRva2Vu
PiBzdGFydEJvZHkgPSBBdG9taWNIVE1MVG9rZW46OmNyZWF0ZShIVE1MVG9rZW46OlN0YXJ0VGFn
LCBib2R5VGFnLmxvY2FsTmFtZSgpKTsKICAgICBwcm9jZXNzU3RhcnRUYWcoc3RhcnRCb2R5Lmdl
dCgpKTsKICAgICBtX2ZyYW1lc2V0T2sgPSB0cnVlOwogfQpAQCAtMjY5MSw3ICsyNjkyLDcgQEAg
dm9pZCBIVE1MVHJlZUJ1aWxkZXI6OmRlZmF1bHRGb3JJblRhYmxlVGV4dCgpCiAKIGJvb2wgSFRN
TFRyZWVCdWlsZGVyOjpwcm9jZXNzU3RhcnRUYWdGb3JJbkhlYWQoQXRvbWljSFRNTFRva2VuKiB0
b2tlbikKIHsKLSAgICBBU1NFUlQodG9rZW4tPnR5cGUoKSA9PSBIVE1MVG9rZW5UeXBlczo6U3Rh
cnRUYWcpOworICAgIEFTU0VSVCh0b2tlbi0+dHlwZSgpID09IEhUTUxUb2tlbjo6U3RhcnRUYWcp
OwogICAgIGlmICh0b2tlbi0+bmFtZSgpID09IGh0bWxUYWcpIHsKICAgICAgICAgcHJvY2Vzc0h0
bWxTdGFydFRhZ0ZvckluQm9keSh0b2tlbik7CiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMjc0
NCw3ICsyNzQ1LDcgQEAgYm9vbCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NTdGFydFRhZ0Zvcklu
SGVhZChBdG9taWNIVE1MVG9rZW4qIHRva2VuKQogCiB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJv
Y2Vzc0dlbmVyaWNSQ0RBVEFTdGFydFRhZyhBdG9taWNIVE1MVG9rZW4qIHRva2VuKQogewotICAg
IEFTU0VSVCh0b2tlbi0+dHlwZSgpID09IEhUTUxUb2tlblR5cGVzOjpTdGFydFRhZyk7CisgICAg
QVNTRVJUKHRva2VuLT50eXBlKCkgPT0gSFRNTFRva2VuOjpTdGFydFRhZyk7CiAgICAgbV90cmVl
Lmluc2VydEhUTUxFbGVtZW50KHRva2VuKTsKICAgICBpZiAobV9wYXJzZXItPnRva2VuaXplcigp
KQogICAgICAgICBtX3BhcnNlci0+dG9rZW5pemVyKCktPnNldFN0YXRlKEhUTUxUb2tlbml6ZXI6
OlJDREFUQVN0YXRlKTsKQEAgLTI3NTQsNyArMjc1NSw3IEBAIHZvaWQgSFRNTFRyZWVCdWlsZGVy
Ojpwcm9jZXNzR2VuZXJpY1JDREFUQVN0YXJ0VGFnKEF0b21pY0hUTUxUb2tlbiogdG9rZW4pCiAK
IHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzR2VuZXJpY1Jhd1RleHRTdGFydFRhZyhBdG9t
aWNIVE1MVG9rZW4qIHRva2VuKQogewotICAgIEFTU0VSVCh0b2tlbi0+dHlwZSgpID09IEhUTUxU
b2tlblR5cGVzOjpTdGFydFRhZyk7CisgICAgQVNTRVJUKHRva2VuLT50eXBlKCkgPT0gSFRNTFRv
a2VuOjpTdGFydFRhZyk7CiAgICAgbV90cmVlLmluc2VydEhUTUxFbGVtZW50KHRva2VuKTsKICAg
ICBpZiAobV9wYXJzZXItPnRva2VuaXplcigpKQogICAgICAgICBtX3BhcnNlci0+dG9rZW5pemVy
KCktPnNldFN0YXRlKEhUTUxUb2tlbml6ZXI6OlJBV1RFWFRTdGF0ZSk7CkBAIC0yNzY0LDcgKzI3
NjUsNyBAQCB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0dlbmVyaWNSYXdUZXh0U3RhcnRU
YWcoQXRvbWljSFRNTFRva2VuKiB0b2tlbikKIAogdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nl
c3NTY3JpcHRTdGFydFRhZyhBdG9taWNIVE1MVG9rZW4qIHRva2VuKQogewotICAgIEFTU0VSVCh0
b2tlbi0+dHlwZSgpID09IEhUTUxUb2tlblR5cGVzOjpTdGFydFRhZyk7CisgICAgQVNTRVJUKHRv
a2VuLT50eXBlKCkgPT0gSFRNTFRva2VuOjpTdGFydFRhZyk7CiAgICAgbV90cmVlLmluc2VydFNj
cmlwdEVsZW1lbnQodG9rZW4pOwogICAgIGlmIChtX3BhcnNlci0+dG9rZW5pemVyKCkpCiAgICAg
ICAgIG1fcGFyc2VyLT50b2tlbml6ZXIoKS0+c2V0U3RhdGUoSFRNTFRva2VuaXplcjo6U2NyaXB0
RGF0YVN0YXRlKTsKQEAgLTI3ODYsMjQgKzI3ODcsMjQgQEAgYm9vbCBIVE1MVHJlZUJ1aWxkZXI6
OnNob3VsZFByb2Nlc3NUb2tlbkluRm9yZWlnbkNvbnRlbnQoQXRvbWljSFRNTFRva2VuKiB0b2tl
bikKICAgICBpZiAoaXRlbS0+aXNJbkhUTUxOYW1lc3BhY2UoKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIGlmIChIVE1MRWxlbWVudFN0YWNrOjppc01hdGhNTFRleHRJbnRlZ3JhdGlvblBv
aW50KGl0ZW0pKSB7Ci0gICAgICAgIGlmICh0b2tlbi0+dHlwZSgpID09IEhUTUxUb2tlblR5cGVz
OjpTdGFydFRhZworICAgICAgICBpZiAodG9rZW4tPnR5cGUoKSA9PSBIVE1MVG9rZW46OlN0YXJ0
VGFnCiAgICAgICAgICAgICAmJiB0b2tlbi0+bmFtZSgpICE9IE1hdGhNTE5hbWVzOjptZ2x5cGhU
YWcKICAgICAgICAgICAgICYmIHRva2VuLT5uYW1lKCkgIT0gTWF0aE1MTmFtZXM6Om1hbGlnbm1h
cmtUYWcpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIGlmICh0b2tlbi0+dHlw
ZSgpID09IEhUTUxUb2tlblR5cGVzOjpDaGFyYWN0ZXIpCisgICAgICAgIGlmICh0b2tlbi0+dHlw
ZSgpID09IEhUTUxUb2tlbjo6Q2hhcmFjdGVyKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIH0KICAgICBpZiAoaXRlbS0+aGFzVGFnTmFtZShNYXRoTUxOYW1lczo6YW5ub3RhdGlvbl94
bWxUYWcpCi0gICAgICAgICYmIHRva2VuLT50eXBlKCkgPT0gSFRNTFRva2VuVHlwZXM6OlN0YXJ0
VGFnCisgICAgICAgICYmIHRva2VuLT50eXBlKCkgPT0gSFRNTFRva2VuOjpTdGFydFRhZwogICAg
ICAgICAmJiB0b2tlbi0+bmFtZSgpID09IFNWR05hbWVzOjpzdmdUYWcpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICBpZiAoSFRNTEVsZW1lbnRTdGFjazo6aXNIVE1MSW50ZWdyYXRpb25Qb2lu
dChpdGVtKSkgewotICAgICAgICBpZiAodG9rZW4tPnR5cGUoKSA9PSBIVE1MVG9rZW5UeXBlczo6
U3RhcnRUYWcpCisgICAgICAgIGlmICh0b2tlbi0+dHlwZSgpID09IEhUTUxUb2tlbjo6U3RhcnRU
YWcpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIGlmICh0b2tlbi0+dHlwZSgp
ID09IEhUTUxUb2tlblR5cGVzOjpDaGFyYWN0ZXIpCisgICAgICAgIGlmICh0b2tlbi0+dHlwZSgp
ID09IEhUTUxUb2tlbjo6Q2hhcmFjdGVyKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IH0KLSAgICBpZiAodG9rZW4tPnR5cGUoKSA9PSBIVE1MVG9rZW5UeXBlczo6RW5kT2ZGaWxlKQor
ICAgIGlmICh0b2tlbi0+dHlwZSgpID09IEhUTUxUb2tlbjo6RW5kT2ZGaWxlKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC0yODExLDEzICsyODEyLDEzIEBA
IGJvb2wgSFRNTFRyZWVCdWlsZGVyOjpzaG91bGRQcm9jZXNzVG9rZW5JbkZvcmVpZ25Db250ZW50
KEF0b21pY0hUTUxUb2tlbiogdG9rZW4pCiB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc1Rv
a2VuSW5Gb3JlaWduQ29udGVudChBdG9taWNIVE1MVG9rZW4qIHRva2VuKQogewogICAgIHN3aXRj
aCAodG9rZW4tPnR5cGUoKSkgewotICAgIGNhc2UgSFRNTFRva2VuVHlwZXM6OlVuaW5pdGlhbGl6
ZWQ6CisgICAgY2FzZSBIVE1MVG9rZW46OlVuaW5pdGlhbGl6ZWQ6CiAgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEhUTUxUb2tlblR5cGVzOjpE
T0NUWVBFOgorICAgIGNhc2UgSFRNTFRva2VuOjpET0NUWVBFOgogICAgICAgICBwYXJzZUVycm9y
KHRva2VuKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBIVE1MVG9rZW5UeXBlczo6U3RhcnRU
YWc6IHsKKyAgICBjYXNlIEhUTUxUb2tlbjo6U3RhcnRUYWc6IHsKICAgICAgICAgaWYgKHRva2Vu
LT5uYW1lKCkgPT0gYlRhZwogICAgICAgICAgICAgfHwgdG9rZW4tPm5hbWUoKSA9PSBiaWdUYWcK
ICAgICAgICAgICAgIHx8IHRva2VuLT5uYW1lKCkgPT0gYmxvY2txdW90ZVRhZwpAQCAtMjg3NCw3
ICsyODc1LDcgQEAgdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NUb2tlbkluRm9yZWlnbkNv
bnRlbnQoQXRvbWljSFRNTFRva2VuKiB0b2tlbikKICAgICAgICAgbV90cmVlLmluc2VydEZvcmVp
Z25FbGVtZW50KHRva2VuLCBjdXJyZW50TmFtZXNwYWNlKTsKICAgICAgICAgYnJlYWs7CiAgICAg
fQotICAgIGNhc2UgSFRNTFRva2VuVHlwZXM6OkVuZFRhZzogeworICAgIGNhc2UgSFRNTFRva2Vu
OjpFbmRUYWc6IHsKICAgICAgICAgaWYgKG1fdHJlZS5jdXJyZW50U3RhY2tJdGVtKCktPm5hbWVz
cGFjZVVSSSgpID09IFNWR05hbWVzOjpzdmdOYW1lc3BhY2VVUkkpCiAgICAgICAgICAgICBhZGp1
c3RTVkdUYWdOYW1lQ2FzZSh0b2tlbik7CiAKQEAgLTI5MDMsMTcgKzI5MDQsMTcgQEAgdm9pZCBI
VE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NUb2tlbkluRm9yZWlnbkNvbnRlbnQoQXRvbWljSFRNTFRv
a2VuKiB0b2tlbikKICAgICAgICAgcHJvY2Vzc0VuZFRhZyh0b2tlbik7CiAgICAgICAgIGJyZWFr
OwogICAgIH0KLSAgICBjYXNlIEhUTUxUb2tlblR5cGVzOjpDb21tZW50OgorICAgIGNhc2UgSFRN
TFRva2VuOjpDb21tZW50OgogICAgICAgICBtX3RyZWUuaW5zZXJ0Q29tbWVudCh0b2tlbik7CiAg
ICAgICAgIHJldHVybjsKLSAgICBjYXNlIEhUTUxUb2tlblR5cGVzOjpDaGFyYWN0ZXI6IHsKKyAg
ICBjYXNlIEhUTUxUb2tlbjo6Q2hhcmFjdGVyOiB7CiAgICAgICAgIFN0cmluZyBjaGFyYWN0ZXJz
ID0gU3RyaW5nKHRva2VuLT5jaGFyYWN0ZXJzKCksIHRva2VuLT5jaGFyYWN0ZXJzTGVuZ3RoKCkp
OwogICAgICAgICBtX3RyZWUuaW5zZXJ0VGV4dE5vZGUoY2hhcmFjdGVycyk7CiAgICAgICAgIGlm
IChtX2ZyYW1lc2V0T2sgJiYgIWlzQWxsV2hpdGVzcGFjZU9yUmVwbGFjZW1lbnRDaGFyYWN0ZXJz
KGNoYXJhY3RlcnMpKQogICAgICAgICAgICAgbV9mcmFtZXNldE9rID0gZmFsc2U7CiAgICAgICAg
IGJyZWFrOwogICAgIH0KLSAgICBjYXNlIEhUTUxUb2tlblR5cGVzOjpFbmRPZkZpbGU6CisgICAg
Y2FzZSBIVE1MVG9rZW46OkVuZE9mRmlsZToKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CiAgICAgICAgIGJyZWFrOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
cGFyc2VyL0hUTUxWaWV3U291cmNlUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFy
c2VyL0hUTUxWaWV3U291cmNlUGFyc2VyLmNwcAppbmRleCAxMDZiZTMxNGE1NDMxNGUwOGQ1MmJm
OGUzYzE1ZDJhY2U5MjljNzFhLi5hNWY0N2YwYTJkMzE3YjZlODUwY2I1ZjZkMDI0MDI5YWRhMzI1
YmQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVmlld1NvdXJj
ZVBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFZpZXdTb3Vy
Y2VQYXJzZXIuY3BwCkBAIC03Niw3ICs3Niw3IEBAIFN0cmluZyBIVE1MVmlld1NvdXJjZVBhcnNl
cjo6c291cmNlRm9yVG9rZW4oKQogdm9pZCBIVE1MVmlld1NvdXJjZVBhcnNlcjo6dXBkYXRlVG9r
ZW5pemVyU3RhdGUoKQogewogICAgIC8vIEZJWE1FOiBUaGUgdG9rZW5pemVyIHNob3VsZCBkbyB0
aGlzIHdvcmsgZm9yIHVzLgotICAgIGlmIChtX3Rva2VuLnR5cGUoKSAhPSBIVE1MVG9rZW5UeXBl
czo6U3RhcnRUYWcpCisgICAgaWYgKG1fdG9rZW4udHlwZSgpICE9IEhUTUxUb2tlbjo6U3RhcnRU
YWcpCiAgICAgICAgIHJldHVybjsKIAogICAgIEF0b21pY1N0cmluZyB0YWdOYW1lKG1fdG9rZW4u
bmFtZSgpLmRhdGEoKSwgbV90b2tlbi5uYW1lKCkuc2l6ZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvcGFyc2VyL1RleHREb2N1bWVudFBhcnNlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3BhcnNlci9UZXh0RG9jdW1lbnRQYXJzZXIuY3BwCmluZGV4IGZkMTAyY2JhODRm
NDU4YWExZGMxODY2MmU3Yjg0OTE0NmY2MGUwNWUuLjM5MWZjYWMwZWMzNWM2NmNlMDU4ZWI4MmE0
ODE5MmJmNmNlMmM3MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL1Rl
eHREb2N1bWVudFBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvVGV4
dERvY3VtZW50UGFyc2VyLmNwcApAQCAtNjAsNyArNjAsNyBAQCB2b2lkIFRleHREb2N1bWVudFBh
cnNlcjo6aW5zZXJ0RmFrZVByZUVsZW1lbnQoKQogICAgIC8vIGRpc3RydWJpbmcgdGhlIGxpbmUv
Y29sdW1uIG51bWJlciBjYWxjdWxhdGlvbnMuCiAgICAgVmVjdG9yPEF0dHJpYnV0ZT4gYXR0cmli
dXRlczsKICAgICBhdHRyaWJ1dGVzLmFwcGVuZChBdHRyaWJ1dGUoc3R5bGVBdHRyLCAid29yZC13
cmFwOiBicmVhay13b3JkOyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IikpOwotICAgIFJlZlB0cjxB
dG9taWNIVE1MVG9rZW4+IGZha2VQcmUgPSBBdG9taWNIVE1MVG9rZW46OmNyZWF0ZShIVE1MVG9r
ZW5UeXBlczo6U3RhcnRUYWcsIHByZVRhZy5sb2NhbE5hbWUoKSwgYXR0cmlidXRlcyk7CisgICAg
UmVmUHRyPEF0b21pY0hUTUxUb2tlbj4gZmFrZVByZSA9IEF0b21pY0hUTUxUb2tlbjo6Y3JlYXRl
KEhUTUxUb2tlbjo6U3RhcnRUYWcsIHByZVRhZy5sb2NhbE5hbWUoKSwgYXR0cmlidXRlcyk7CiAg
ICAgdHJlZUJ1aWxkZXIoKS0+Y29uc3RydWN0VHJlZShmYWtlUHJlLmdldCgpKTsKIAogICAgIC8v
IE5vcm1hbGx5IHdlIHdvdWxkIHNraXAgdGhlIGZpcnN0IFxuIGFmdGVyIGEgPHByZT4gZWxlbWVu
dCwgYnV0IHdlIGRvbid0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9Y
U1NBdWRpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL1hTU0F1ZGl0b3IuY3Bw
CmluZGV4IDlkY2M4YjU0NzM3YmU3YWU0NTVlNmEyMmZlMGEwMDkzODAxZTU1NmEuLmRlNTRkMjI1
MzI3ZWRjNzkwNjdiMjE5YWM2OGFkYTAzZjJiNjkwOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvcGFyc2VyL1hTU0F1ZGl0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
cGFyc2VyL1hTU0F1ZGl0b3IuY3BwCkBAIC0yODQsMTIgKzI4NCwxMiBAQCBQYXNzT3duUHRyPFhT
U0luZm8+IFhTU0F1ZGl0b3I6OmZpbHRlclRva2VuKGNvbnN0IEZpbHRlclRva2VuUmVxdWVzdCYg
cmVxdWVzdCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBib29sIGRpZEJsb2NrU2Ny
aXB0ID0gZmFsc2U7Ci0gICAgaWYgKHJlcXVlc3QudG9rZW4udHlwZSgpID09IEhUTUxUb2tlblR5
cGVzOjpTdGFydFRhZykKKyAgICBpZiAocmVxdWVzdC50b2tlbi50eXBlKCkgPT0gSFRNTFRva2Vu
OjpTdGFydFRhZykKICAgICAgICAgZGlkQmxvY2tTY3JpcHQgPSBmaWx0ZXJTdGFydFRva2VuKHJl
cXVlc3QpOwogICAgIGVsc2UgaWYgKG1fc2NyaXB0VGFnTmVzdGluZ0xldmVsKSB7Ci0gICAgICAg
IGlmIChyZXF1ZXN0LnRva2VuLnR5cGUoKSA9PSBIVE1MVG9rZW5UeXBlczo6Q2hhcmFjdGVyKQor
ICAgICAgICBpZiAocmVxdWVzdC50b2tlbi50eXBlKCkgPT0gSFRNTFRva2VuOjpDaGFyYWN0ZXIp
CiAgICAgICAgICAgICBkaWRCbG9ja1NjcmlwdCA9IGZpbHRlckNoYXJhY3RlclRva2VuKHJlcXVl
c3QpOwotICAgICAgICBlbHNlIGlmIChyZXF1ZXN0LnRva2VuLnR5cGUoKSA9PSBIVE1MVG9rZW5U
eXBlczo6RW5kVGFnKQorICAgICAgICBlbHNlIGlmIChyZXF1ZXN0LnRva2VuLnR5cGUoKSA9PSBI
VE1MVG9rZW46OkVuZFRhZykKICAgICAgICAgICAgIGZpbHRlckVuZFRva2VuKHJlcXVlc3QpOwog
ICAgIH0KIApAQCAtMzU2LDcgKzM1Niw3IEBAIGJvb2wgWFNTQXVkaXRvcjo6ZmlsdGVyQ2hhcmFj
dGVyVG9rZW4oY29uc3QgRmlsdGVyVG9rZW5SZXF1ZXN0JiByZXF1ZXN0KQogCiBib29sIFhTU0F1
ZGl0b3I6OmZpbHRlclNjcmlwdFRva2VuKGNvbnN0IEZpbHRlclRva2VuUmVxdWVzdCYgcmVxdWVz
dCkKIHsKLSAgICBBU1NFUlQocmVxdWVzdC50b2tlbi50eXBlKCkgPT0gSFRNTFRva2VuVHlwZXM6
OlN0YXJ0VGFnKTsKKyAgICBBU1NFUlQocmVxdWVzdC50b2tlbi50eXBlKCkgPT0gSFRNTFRva2Vu
OjpTdGFydFRhZyk7CiAgICAgQVNTRVJUKGhhc05hbWUocmVxdWVzdC50b2tlbiwgc2NyaXB0VGFn
KSk7CiAKICAgICBtX2NhY2hlZERlY29kZWRTbmlwcGV0ID0gZGVjb2RlZFNuaXBwZXRGb3JOYW1l
KHJlcXVlc3QpOwpAQCAtMzcyLDcgKzM3Miw3IEBAIGJvb2wgWFNTQXVkaXRvcjo6ZmlsdGVyU2Ny
aXB0VG9rZW4oY29uc3QgRmlsdGVyVG9rZW5SZXF1ZXN0JiByZXF1ZXN0KQogCiBib29sIFhTU0F1
ZGl0b3I6OmZpbHRlck9iamVjdFRva2VuKGNvbnN0IEZpbHRlclRva2VuUmVxdWVzdCYgcmVxdWVz
dCkKIHsKLSAgICBBU1NFUlQocmVxdWVzdC50b2tlbi50eXBlKCkgPT0gSFRNTFRva2VuVHlwZXM6
OlN0YXJ0VGFnKTsKKyAgICBBU1NFUlQocmVxdWVzdC50b2tlbi50eXBlKCkgPT0gSFRNTFRva2Vu
OjpTdGFydFRhZyk7CiAgICAgQVNTRVJUKGhhc05hbWUocmVxdWVzdC50b2tlbiwgb2JqZWN0VGFn
KSk7CiAKICAgICBib29sIGRpZEJsb2NrU2NyaXB0ID0gZmFsc2U7CkBAIC0zODYsNyArMzg2LDcg
QEAgYm9vbCBYU1NBdWRpdG9yOjpmaWx0ZXJPYmplY3RUb2tlbihjb25zdCBGaWx0ZXJUb2tlblJl
cXVlc3QmIHJlcXVlc3QpCiAKIGJvb2wgWFNTQXVkaXRvcjo6ZmlsdGVyUGFyYW1Ub2tlbihjb25z
dCBGaWx0ZXJUb2tlblJlcXVlc3QmIHJlcXVlc3QpCiB7Ci0gICAgQVNTRVJUKHJlcXVlc3QudG9r
ZW4udHlwZSgpID09IEhUTUxUb2tlblR5cGVzOjpTdGFydFRhZyk7CisgICAgQVNTRVJUKHJlcXVl
c3QudG9rZW4udHlwZSgpID09IEhUTUxUb2tlbjo6U3RhcnRUYWcpOwogICAgIEFTU0VSVChoYXNO
YW1lKHJlcXVlc3QudG9rZW4sIHBhcmFtVGFnKSk7CiAKICAgICBzaXplX3QgaW5kZXhPZk5hbWVB
dHRyaWJ1dGU7CkBAIC00MDQsNyArNDA0LDcgQEAgYm9vbCBYU1NBdWRpdG9yOjpmaWx0ZXJQYXJh
bVRva2VuKGNvbnN0IEZpbHRlclRva2VuUmVxdWVzdCYgcmVxdWVzdCkKIAogYm9vbCBYU1NBdWRp
dG9yOjpmaWx0ZXJFbWJlZFRva2VuKGNvbnN0IEZpbHRlclRva2VuUmVxdWVzdCYgcmVxdWVzdCkK
IHsKLSAgICBBU1NFUlQocmVxdWVzdC50b2tlbi50eXBlKCkgPT0gSFRNTFRva2VuVHlwZXM6OlN0
YXJ0VGFnKTsKKyAgICBBU1NFUlQocmVxdWVzdC50b2tlbi50eXBlKCkgPT0gSFRNTFRva2VuOjpT
dGFydFRhZyk7CiAgICAgQVNTRVJUKGhhc05hbWUocmVxdWVzdC50b2tlbiwgZW1iZWRUYWcpKTsK
IAogICAgIGJvb2wgZGlkQmxvY2tTY3JpcHQgPSBmYWxzZTsKQEAgLTQxOCw3ICs0MTgsNyBAQCBi
b29sIFhTU0F1ZGl0b3I6OmZpbHRlckVtYmVkVG9rZW4oY29uc3QgRmlsdGVyVG9rZW5SZXF1ZXN0
JiByZXF1ZXN0KQogCiBib29sIFhTU0F1ZGl0b3I6OmZpbHRlckFwcGxldFRva2VuKGNvbnN0IEZp
bHRlclRva2VuUmVxdWVzdCYgcmVxdWVzdCkKIHsKLSAgICBBU1NFUlQocmVxdWVzdC50b2tlbi50
eXBlKCkgPT0gSFRNTFRva2VuVHlwZXM6OlN0YXJ0VGFnKTsKKyAgICBBU1NFUlQocmVxdWVzdC50
b2tlbi50eXBlKCkgPT0gSFRNTFRva2VuOjpTdGFydFRhZyk7CiAgICAgQVNTRVJUKGhhc05hbWUo
cmVxdWVzdC50b2tlbiwgYXBwbGV0VGFnKSk7CiAKICAgICBib29sIGRpZEJsb2NrU2NyaXB0ID0g
ZmFsc2U7CkBAIC00MzEsNyArNDMxLDcgQEAgYm9vbCBYU1NBdWRpdG9yOjpmaWx0ZXJBcHBsZXRU
b2tlbihjb25zdCBGaWx0ZXJUb2tlblJlcXVlc3QmIHJlcXVlc3QpCiAKIGJvb2wgWFNTQXVkaXRv
cjo6ZmlsdGVySWZyYW1lVG9rZW4oY29uc3QgRmlsdGVyVG9rZW5SZXF1ZXN0JiByZXF1ZXN0KQog
ewotICAgIEFTU0VSVChyZXF1ZXN0LnRva2VuLnR5cGUoKSA9PSBIVE1MVG9rZW5UeXBlczo6U3Rh
cnRUYWcpOworICAgIEFTU0VSVChyZXF1ZXN0LnRva2VuLnR5cGUoKSA9PSBIVE1MVG9rZW46OlN0
YXJ0VGFnKTsKICAgICBBU1NFUlQoaGFzTmFtZShyZXF1ZXN0LnRva2VuLCBpZnJhbWVUYWcpKTsK
IAogICAgIGJvb2wgZGlkQmxvY2tTY3JpcHQgPSBmYWxzZTsKQEAgLTQ0NCw3ICs0NDQsNyBAQCBi
b29sIFhTU0F1ZGl0b3I6OmZpbHRlcklmcmFtZVRva2VuKGNvbnN0IEZpbHRlclRva2VuUmVxdWVz
dCYgcmVxdWVzdCkKIAogYm9vbCBYU1NBdWRpdG9yOjpmaWx0ZXJNZXRhVG9rZW4oY29uc3QgRmls
dGVyVG9rZW5SZXF1ZXN0JiByZXF1ZXN0KQogewotICAgIEFTU0VSVChyZXF1ZXN0LnRva2VuLnR5
cGUoKSA9PSBIVE1MVG9rZW5UeXBlczo6U3RhcnRUYWcpOworICAgIEFTU0VSVChyZXF1ZXN0LnRv
a2VuLnR5cGUoKSA9PSBIVE1MVG9rZW46OlN0YXJ0VGFnKTsKICAgICBBU1NFUlQoaGFzTmFtZShy
ZXF1ZXN0LnRva2VuLCBtZXRhVGFnKSk7CiAKICAgICByZXR1cm4gZXJhc2VBdHRyaWJ1dGVJZklu
amVjdGVkKHJlcXVlc3QsIGh0dHBfZXF1aXZBdHRyKTsKQEAgLTQ1Miw3ICs0NTIsNyBAQCBib29s
IFhTU0F1ZGl0b3I6OmZpbHRlck1ldGFUb2tlbihjb25zdCBGaWx0ZXJUb2tlblJlcXVlc3QmIHJl
cXVlc3QpCiAKIGJvb2wgWFNTQXVkaXRvcjo6ZmlsdGVyQmFzZVRva2VuKGNvbnN0IEZpbHRlclRv
a2VuUmVxdWVzdCYgcmVxdWVzdCkKIHsKLSAgICBBU1NFUlQocmVxdWVzdC50b2tlbi50eXBlKCkg
PT0gSFRNTFRva2VuVHlwZXM6OlN0YXJ0VGFnKTsKKyAgICBBU1NFUlQocmVxdWVzdC50b2tlbi50
eXBlKCkgPT0gSFRNTFRva2VuOjpTdGFydFRhZyk7CiAgICAgQVNTRVJUKGhhc05hbWUocmVxdWVz
dC50b2tlbiwgYmFzZVRhZykpOwogCiAgICAgcmV0dXJuIGVyYXNlQXR0cmlidXRlSWZJbmplY3Rl
ZChyZXF1ZXN0LCBocmVmQXR0cik7CkBAIC00NjAsNyArNDYwLDcgQEAgYm9vbCBYU1NBdWRpdG9y
OjpmaWx0ZXJCYXNlVG9rZW4oY29uc3QgRmlsdGVyVG9rZW5SZXF1ZXN0JiByZXF1ZXN0KQogCiBi
b29sIFhTU0F1ZGl0b3I6OmZpbHRlckZvcm1Ub2tlbihjb25zdCBGaWx0ZXJUb2tlblJlcXVlc3Qm
IHJlcXVlc3QpCiB7Ci0gICAgQVNTRVJUKHJlcXVlc3QudG9rZW4udHlwZSgpID09IEhUTUxUb2tl
blR5cGVzOjpTdGFydFRhZyk7CisgICAgQVNTRVJUKHJlcXVlc3QudG9rZW4udHlwZSgpID09IEhU
TUxUb2tlbjo6U3RhcnRUYWcpOwogICAgIEFTU0VSVChoYXNOYW1lKHJlcXVlc3QudG9rZW4sIGZv
cm1UYWcpKTsKIAogICAgIHJldHVybiBlcmFzZUF0dHJpYnV0ZUlmSW5qZWN0ZWQocmVxdWVzdCwg
YWN0aW9uQXR0ciwgYmxhbmtVUkwoKS5zdHJpbmcoKSk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>