<?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>136179</bug_id>
          
          <creation_ts>2014-08-22 16:21:55 -0700</creation_ts>
          <short_desc>JavaScriptCore: Use ASCIILiteral where possible</short_desc>
          <delta_ts>2014-08-29 14:33:46 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Joseph Pecoraro">joepeck</reporter>
          <assigned_to name="Joseph Pecoraro">joepeck</assigned_to>
          <cc>benjamin</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>ddkilzer</cc>
    
    <cc>joepeck</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1030828</commentid>
    <comment_count>0</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2014-08-22 16:21:55 -0700</bug_when>
    <thetext>I wrote a tool to automatically make some string related fixes:

  1. Use ASCIILiteral where WTFString::String(const char*) was getting called (explicitly or implicitly) with a string literal
  2. Convert single character string literals to character literals for makeString components, or StringBuilder components
  3. Use jsNontrivialString instead of jsString if given a string literal &gt;= length 2

Most of the changes look like:

&gt;   - call(&quot;foo&quot;)
&gt;   + call(ASCIILiteral(&quot;foo&quot;))

Pros:
  - More efficient string construction (no copy) and potential memory savings &lt;http://trac.webkit.org/wiki/EfficientStrings&gt;
  - Clarification of when a string literal is being turned into WTFString

Cons:
  - uglier / more verbose source code
  - if a low level method (e.g. WTFString::find) were to add a new version supporting a &quot;const char*&quot; we would have to search for and revert the find(ASCIILiteral(...)) versions
    - however, having said that, they will likely be much easier to grep for

Ultimately we might want to make WTFString::String(const char *) an explicit constructor.

I could see us not wanting to make all these changes (esp in WebCore), or using this as a hint that we should create new methods taking string literals. Like WTFString::find(const char*)/WTFString::contains(const char *).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1030829</commentid>
    <comment_count>1</comment_count>
      <attachid>237007</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2014-08-22 16:26:27 -0700</bug_when>
    <thetext>Created attachment 237007
[PATCH] Proposed Fix

This also has a couple manual changes, like removing the only uses of String::append and switching to makeString in the inspector generator which makes more sense.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1030830</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-08-22 16:28:49 -0700</bug_when>
    <thetext>Attachment 237007 did not pass style-queue:


ERROR: Source/JavaScriptCore/runtime/TypeSet.cpp:220:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/runtime/TypeSet.cpp:222:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/runtime/TypeSet.cpp:224:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/runtime/TypeSet.cpp:226:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/runtime/TypeSet.cpp:228:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/runtime/TypeSet.cpp:230:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 6 in 32 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>1030856</commentid>
    <comment_count>3</comment_count>
      <attachid>237007</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2014-08-22 17:47:30 -0700</bug_when>
    <thetext>Comment on attachment 237007
[PATCH] Proposed Fix

r=me.

Look into the style complaints.
Also, please benchmark the change to make sure that it doesn&apos;t slow anything down before landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1030977</commentid>
    <comment_count>4</comment_count>
      <attachid>237007</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-08-24 11:29:54 -0700</bug_when>
    <thetext>Comment on attachment 237007
[PATCH] Proposed Fix

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

I’d like to see the script you used to find these checked in even if it’s not perfectly easy to run. Or maybe it was some kind of technique other than a script?

If you removed all the uses of String::append, shouldn’t we also remove String::append and StringImpl::append?

&gt; Source/JavaScriptCore/dfg/DFGFunctionWhitelist.cpp:110
&gt; +    String nameAndHash = name + &apos;#&apos; + hash;
&gt;      return m_entries.contains(nameAndHash);

I suggest we get rid of the local variable.

&gt; Source/JavaScriptCore/dfg/DFGOperations.cpp:140
&gt; +        vm.throwException(exec, createRangeError(exec, ASCIILiteral(&quot;Requested length is negative&quot;)));

For this function and the other create error functions, I kind of wish we’d overload it directly since it’s almost always used with a literal. Might be tricky, though, since it has to be a function template to extract the literal’s length.

&gt; Source/JavaScriptCore/runtime/TypeProfiler.cpp:49
&gt; +    dataLog(&quot;\t\t#Local#\n\t\t&quot;, location-&gt;m_instructionTypeSet-&gt;seenTypes().replace(ASCIILiteral(&quot;\n&quot;), ASCIILiteral(&quot;\n\t\t&quot;)), &quot;\n&quot;);

This seems like it might be a case where we’d rather have the overloads than the ASCIILiteral.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1030978</commentid>
    <comment_count>5</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-08-24 11:32:49 -0700</bug_when>
    <thetext>(In reply to comment #0)
&gt; Ultimately we might want to make WTFString::String(const char *) an explicit constructor.

Seems neat. How close to that are we right now?

&gt; I could see us not wanting to make all these changes (esp in WebCore), or using this as a hint that we should create new methods taking string literals. Like WTFString::find(const char*)/WTFString::contains(const char *).

I do think we should treat it as a hint to make functions that work directly on ASCII literals. Something like find(const char*) means we need to call strlen at runtime, which I think we avoid with ASCIILiteral, although it makes the code a little bigger. And it has the tricky issue about how it treats non-ASCII characters. It’s more efficient if we can assume it’s all ASCII, less good but still good if we can treat it as Latin-1, and even more useful in more cases if it’s treated as UTF-8, and it’s not obvious which of the three versions we should provide. If we make one intended for literals it’s likely to be accidentally misused on a UTF-8 string.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1031195</commentid>
    <comment_count>6</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2014-08-25 11:55:24 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 237007 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=237007&amp;action=review
&gt; 
&gt; I’d like to see the script you used to find these checked in even if it’s not perfectly easy to run. Or maybe it was some kind of technique other than a script?

It is not a script. It is a tool built with clang tools and tooling libraries:
&lt;http://clang.llvm.org/docs/index.html#using-clang-as-a-library&gt;

Unfortunately it is not easy to run. It is built with clang and you will need to build WebKit with this clang (a bit of a challenge likely requiring a few sudo commands setting up symlinks on Mac).


&gt; If you removed all the uses of String::append, shouldn’t we also remove String::append and StringImpl::append?

I only searched for and removed all the uses of String::append in JavaScriptCore. I did not search all of WebCore, which I am sure there are some.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1031241</commentid>
    <comment_count>7</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2014-08-25 15:44:57 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (In reply to comment #0)
&gt; &gt; Ultimately we might want to make WTFString::String(const char *) an explicit constructor.
&gt; 
&gt; Seems neat. How close to that are we right now?

The tool only checked files built on the Mac port, so I&apos;m sure it misses conversions in other ports. But, I imagine if we address all of the const char* &lt;-&gt; WTFString implicit conversions caught by this we would be pretty close.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1032239</commentid>
    <comment_count>8</comment_count>
      <attachid>237372</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2014-08-29 13:43:16 -0700</bug_when>
    <thetext>Created attachment 237372
[PATCH] For Landing

I ran performance tests and there was no difference, as we expected.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1032240</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-08-29 13:44:18 -0700</bug_when>
    <thetext>Attachment 237372 did not pass style-queue:


ERROR: Source/JavaScriptCore/runtime/TypeSet.cpp:224:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/runtime/TypeSet.cpp:226:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/runtime/TypeSet.cpp:228:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/runtime/TypeSet.cpp:230:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/runtime/TypeSet.cpp:232:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/runtime/TypeSet.cpp:234:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 6 in 31 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>1032241</commentid>
    <comment_count>10</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2014-08-29 13:47:24 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; &gt; Source/JavaScriptCore/dfg/DFGOperations.cpp:140
&gt; &gt; +        vm.throwException(exec, createRangeError(exec, ASCIILiteral(&quot;Requested length is negative&quot;)));
&gt; 
&gt; For this function and the other create error functions, I kind of wish we’d overload it directly since it’s almost always used with a literal. Might be tricky, though, since it has to be a function template to extract the literal’s length.

I think we should be able to do this for ASCIILiteral itself, and if we can we only have to do it in one place to get the benefit of avoiding an strlen(). Ultimately these error strings get turned into JSStrings, so there might be even more room for improvement (no need to have a WTF::String intermediary) but I think exceptions are rare enough it shouldn&apos;t matter.


&gt; &gt; Source/JavaScriptCore/runtime/TypeProfiler.cpp:49
&gt; &gt; +    dataLog(&quot;\t\t#Local#\n\t\t&quot;, location-&gt;m_instructionTypeSet-&gt;seenTypes().replace(ASCIILiteral(&quot;\n&quot;), ASCIILiteral(&quot;\n\t\t&quot;)), &quot;\n&quot;);
&gt; 
&gt; This seems like it might be a case where we’d rather have the overloads than the ASCIILiteral.

Agreed. I won&apos;t make these kind of changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1032242</commentid>
    <comment_count>11</comment_count>
      <attachid>237373</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2014-08-29 13:49:01 -0700</bug_when>
    <thetext>Created attachment 237373
[PATCH] For Landing

Addressed the style issues.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1032260</commentid>
    <comment_count>12</comment_count>
      <attachid>237373</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-08-29 14:33:42 -0700</bug_when>
    <thetext>Comment on attachment 237373
[PATCH] For Landing

Clearing flags on attachment: 237373

Committed r173120: &lt;http://trac.webkit.org/changeset/173120&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1032261</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-08-29 14:33:46 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>237007</attachid>
            <date>2014-08-22 16:26:27 -0700</date>
            <delta_ts>2014-08-29 13:43:16 -0700</delta_ts>
            <desc>[PATCH] Proposed Fix</desc>
            <filename>jsc.patch</filename>
            <type>text/plain</type>
            <size>66431</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">Y29tbWl0IGM5MzUzZmYyMjFhMjZjNWNhYzgyMjc4NGYyNjhiYjc3YmQ0YjQ5NmYKQXV0aG9yOiBK
b3NlcGggUGVjb3Jhcm8gPHBlY29yYXJvQGFwcGxlLmNvbT4KRGF0ZTogICBGcmkgQXVnIDIyIDEz
OjU5OjUwIDIwMTQgLTA3MDAKCiAgICBQUk9HUkVTUzogSmF2YVNjcmlwdENvcmUKCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0NoYW5nZUxvZwppbmRleCA4ZThkMWQwLi5jM2JiMzEwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxMDUgQEAKKzIwMTQtMDgtMjIgIEpvc2VwaCBQZWNvcmFybyAgPHBl
Y29yYXJvQGFwcGxlLmNvbT4KKworICAgICAgICBKYXZhU2NyaXB0Q29yZTogVXNlIEFTQ0lJTGl0
ZXJhbCB3aGVyZSBwb3NzaWJsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTM2MTc5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgR2VuZXJhbCBzdHJpbmcgLyBjaGFyYWN0ZXIgcmVsYXRlZCBjaGFuZ2VzLiBV
c2UgQVNDSUlMaXRlcmFsIHdoZXJlCisgICAgICAgIHBvc3NpYmxlLCBqc05vbnRyaXZpYWxTdHJp
bmcgd2hlcmUgcG9zc2libGUsIGFuZCByZXBsYWNlIHN0cmluZworICAgICAgICBsaXRlcmFscyB3
aXRoIGNoYXJhY3RlciBsaXRlcmFscyBpbiBzb21lIHBsYWNlcy4KKworICAgICAgICBObyBuZXcg
dGVzdHMsIG5vIGNoYW5nZXMgdG8gZnVuY3Rpb25hbGl0eS4KKworICAgICAgICAqIGJ5dGVjb2Rl
L0NvZGVCbG9jay5jcHA6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6bmFtZUZvclJlZ2lzdGVy
KToKKyAgICAgICAgKiBieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcDoKKyAgICAgICAgKEpT
Qzo6UG9zdGZpeE5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OlByZWZpeE5vZGU6
OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkFzc2lnbkVycm9yTm9kZTo6ZW1pdEJ5dGVj
b2RlKToKKyAgICAgICAgKEpTQzo6Rm9ySW5Ob2RlOjplbWl0TXVsdGlMb29wQnl0ZWNvZGUpOgor
ICAgICAgICAoSlNDOjpGb3JPZk5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6Ok9i
amVjdFBhdHRlcm5Ob2RlOjp0b1N0cmluZyk6CisgICAgICAgICogZGZnL0RGR0Z1bmN0aW9uV2hp
dGVsaXN0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpGdW5jdGlvbldoaXRlbGlzdDo6Y29udGFp
bnMpOgorICAgICAgICAqIGRmZy9ERkdPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKEpTQzo6REZH
OjpuZXdUeXBlZEFycmF5V2l0aFNpemUpOgorICAgICAgICAoSlNDOjpERkc6Om5ld1R5cGVkQXJy
YXlXaXRoT25lQXJndW1lbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9Db25zb2xlTWVzc2FnZS5j
cHA6CisgICAgICAgIChJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlOjphZGRUb0Zyb250ZW5kKToK
KyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuY3BwOgorICAg
ICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6ZGlzcGF0Y2gpOgor
ICAgICAgICAqIGluc3BlY3Rvci9TY3JpcHRDYWxsU3RhY2tGYWN0b3J5LmNwcDoKKyAgICAgICAg
KEluc3BlY3Rvcjo6ZXh0cmFjdFNvdXJjZUluZm9ybWF0aW9uRnJvbUV4Y2VwdGlvbik6CisgICAg
ICAgICogaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0b3JfdGVtcGxhdGVzLnB5Ogor
ICAgICAgICAqIGludGVycHJldGVyL1N0YWNrVmlzaXRvci5jcHA6CisgICAgICAgIChKU0M6OlN0
YWNrVmlzaXRvcjo6RnJhbWU6OmZ1bmN0aW9uTmFtZSk6CisgICAgICAgIChKU0M6OlN0YWNrVmlz
aXRvcjo6RnJhbWU6OnNvdXJjZVVSTCk6CisgICAgICAgICogaml0L0pJVE9wZXJhdGlvbnMuY3Bw
OgorICAgICAgICAqIGpzYy5jcHA6CisgICAgICAgIChmdW5jdGlvbkRlc2NyaWJlQXJyYXkpOgor
ICAgICAgICAoZnVuY3Rpb25SdW4pOgorICAgICAgICAoZnVuY3Rpb25Mb2FkKToKKyAgICAgICAg
KGZ1bmN0aW9uUmVhZEZpbGUpOgorICAgICAgICAoZnVuY3Rpb25DaGVja1N5bnRheCk6CisgICAg
ICAgIChmdW5jdGlvblRyYW5zZmVyQXJyYXlCdWZmZXIpOgorICAgICAgICAocnVuV2l0aFNjcmlw
dHMpOgorICAgICAgICAocnVuSW50ZXJhY3RpdmUpOgorICAgICAgICAqIHBhcnNlci9MZXhlci5j
cHA6CisgICAgICAgIChKU0M6OkxleGVyPFQ+OjppbnZhbGlkQ2hhcmFjdGVyTWVzc2FnZSk6Cisg
ICAgICAgIChKU0M6OkxleGVyPFQ+OjpwYXJzZVN0cmluZyk6CisgICAgICAgIChKU0M6OkxleGVy
PFQ+OjpwYXJzZVN0cmluZ1Nsb3dDYXNlKToKKyAgICAgICAgKEpTQzo6TGV4ZXI8VD46OmxleCk6
CisgICAgICAgICogcHJvZmlsZXIvUHJvZmlsZS5jcHA6CisgICAgICAgIChKU0M6OlByb2ZpbGU6
OlByb2ZpbGUpOgorICAgICAgICAqIHJ1bnRpbWUvQXJndW1lbnRzLmNwcDoKKyAgICAgICAgKEpT
Qzo6YXJndW1lbnRzRnVuY0l0ZXJhdG9yKToKKyAgICAgICAgKiBydW50aW1lL0FycmF5UHJvdG90
eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6cGVyZm9ybVNsb3dTb3J0KToKKyAgICAgICAgKEpTQzo6
YXJyYXlQcm90b0Z1bmNTb3J0KToKKyAgICAgICAgKiBydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMu
Y3BwOgorICAgICAgICAoSlNDOjpjcmVhdGVFcnJvcik6CisgICAgICAgIChKU0M6OmNyZWF0ZUlu
dmFsaWRQYXJhbWV0ZXJFcnJvcik6CisgICAgICAgIChKU0M6OmNyZWF0ZU5vdEFDb25zdHJ1Y3Rv
ckVycm9yKToKKyAgICAgICAgKEpTQzo6Y3JlYXRlTm90QUZ1bmN0aW9uRXJyb3IpOgorICAgICAg
ICAoSlNDOjpjcmVhdGVOb3RBbk9iamVjdEVycm9yKToKKyAgICAgICAgKEpTQzo6Y3JlYXRlRXJy
b3JGb3JJbnZhbGlkR2xvYmFsQXNzaWdubWVudCk6CisgICAgICAgICogcnVudGltZS9GdW5jdGlv
blByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6Omluc2VydFNlbWljb2xvbklmTmVlZGVkKToK
KyAgICAgICAgKiBydW50aW1lL0pTQXJyYXkuY3BwOgorICAgICAgICAoSlNDOjpKU0FycmF5Ojpk
ZWZpbmVPd25Qcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OkpTQXJyYXk6OnBvcCk6CisgICAgICAg
IChKU0M6OkpTQXJyYXk6OnB1c2gpOgorICAgICAgICAqIHJ1bnRpbWUvSlNBcnJheUJ1ZmZlckNv
bnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6SlNBcnJheUJ1ZmZlckNvbnN0cnVjdG9yOjpm
aW5pc2hDcmVhdGlvbik6CisgICAgICAgICogcnVudGltZS9KU0FycmF5QnVmZmVyUHJvdG90eXBl
LmNwcDoKKyAgICAgICAgKEpTQzo6YXJyYXlCdWZmZXJQcm90b0Z1bmNTbGljZSk6CisgICAgICAg
ICogcnVudGltZS9KU0RhdGFWaWV3LmNwcDoKKyAgICAgICAgKEpTQzo6SlNEYXRhVmlldzo6Y3Jl
YXRlKToKKyAgICAgICAgKiBydW50aW1lL0pTRGF0YVZpZXdQcm90b3R5cGUuY3BwOgorICAgICAg
ICAoSlNDOjpnZXREYXRhKToKKyAgICAgICAgKEpTQzo6c2V0RGF0YSk6CisgICAgICAgICogcnVu
dGltZS9KU0dsb2JhbE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojpy
ZXNldCk6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5jcHA6Cisg
ICAgICAgIChKU0M6Omdsb2JhbEZ1bmNQcm90b1NldHRlcik6CisgICAgICAgICogcnVudGltZS9K
U1Byb21pc2VDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OkpTUHJvbWlzZUNvbnN0cnVj
dG9yOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgICogcnVudGltZS9MaXRlcmFsUGFyc2VyLmNw
cDoKKyAgICAgICAgKEpTQzo6TGl0ZXJhbFBhcnNlcjxDaGFyVHlwZT46OkxleGVyOjpsZXgpOgor
ICAgICAgICAoSlNDOjpMaXRlcmFsUGFyc2VyPENoYXJUeXBlPjo6TGV4ZXI6OmxleFN0cmluZyk6
CisgICAgICAgIChKU0M6OkxpdGVyYWxQYXJzZXI8Q2hhclR5cGU+OjpwYXJzZSk6CisgICAgICAg
ICogcnVudGltZS9MaXRlcmFsUGFyc2VyLmg6CisgICAgICAgIChKU0M6OkxpdGVyYWxQYXJzZXI6
OmdldEVycm9yTWVzc2FnZSk6CisgICAgICAgICogcnVudGltZS9UeXBlUHJvZmlsZXIuY3BwOgor
ICAgICAgICAoSlNDOjpUeXBlUHJvZmlsZXI6OmxvZ1R5cGVzRm9yVHlwZUxvY2F0aW9uKToKKyAg
ICAgICAgKiBydW50aW1lL1R5cGVTZXQuY3BwOgorICAgICAgICAoSlNDOjpUeXBlU2V0OjpzZWVu
VHlwZXMpOgorICAgICAgICAoSlNDOjpUeXBlU2V0OjpkaXNwbGF5TmFtZSk6CisgICAgICAgIChK
U0M6OlR5cGVTZXQ6OmFsbFByaW1pdGl2ZVR5cGVOYW1lcyk6CisgICAgICAgIChKU0M6OlN0cnVj
dHVyZVNoYXBlOjpwcm9wZXJ0eUhhc2gpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVTaGFwZTo6
c3RyaW5nUmVwcmVzZW50YXRpb24pOgorCiAyMDE0LTA4LTIxICBNaWNoYWVsIFNhYm9mZiAgPG1z
YWJvZmZAYXBwbGUuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT04ocjE2MzE3OSk6IFNwb3JhZGlj
IGNyYXNoIGluIGpzL2RvbS9saW5lLWNvbHVtbi1udW1iZXJzLmh0bWwgdGVzdApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAppbmRleCAxNjMxMmQ1Li4yMDc5
MDU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2Nr
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcApA
QCAtMzg0Miw3ICszODQyLDcgQEAgU3RyaW5nIENvZGVCbG9jazo6bmFtZUZvclJlZ2lzdGVyKFZp
cnR1YWxSZWdpc3RlciB2aXJ0dWFsUmVnaXN0ZXIpCiAgICAgICAgICAgICByZXR1cm4gQVNDSUlM
aXRlcmFsKCJyZWFsIGFyZ3VtZW50cyIpOwogICAgIH0KICAgICBpZiAodmlydHVhbFJlZ2lzdGVy
LmlzQXJndW1lbnQoKSkKLSAgICAgICAgcmV0dXJuIFN0cmluZzo6Zm9ybWF0KCJhcmd1bWVudHNb
JTNkXSIsIHZpcnR1YWxSZWdpc3Rlci50b0FyZ3VtZW50KCkpLmltcGwoKTsKKyAgICAgICAgcmV0
dXJuIFN0cmluZzo6Zm9ybWF0KCJhcmd1bWVudHNbJTNkXSIsIHZpcnR1YWxSZWdpc3Rlci50b0Fy
Z3VtZW50KCkpOwogCiAgICAgcmV0dXJuICIiOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCmluZGV4IDAxZDEyODYuLmI3ZTE2
ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXND
b2RlZ2VuLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVz
Q29kZWdlbi5jcHAKQEAgLTg5MSw4ICs4OTEsOCBAQCBSZWdpc3RlcklEKiBQb3N0Zml4Tm9kZTo6
ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqCiAg
ICAgICAgIHJldHVybiBlbWl0RG90KGdlbmVyYXRvciwgZHN0KTsKIAogICAgIHJldHVybiBlbWl0
VGhyb3dSZWZlcmVuY2VFcnJvcihnZW5lcmF0b3IsIG1fb3BlcmF0b3IgPT0gT3BQbHVzUGx1cwot
ICAgICAgICA/ICJQb3N0Zml4ICsrIG9wZXJhdG9yIGFwcGxpZWQgdG8gdmFsdWUgdGhhdCBpcyBu
b3QgYSByZWZlcmVuY2UuIgotICAgICAgICA6ICJQb3N0Zml4IC0tIG9wZXJhdG9yIGFwcGxpZWQg
dG8gdmFsdWUgdGhhdCBpcyBub3QgYSByZWZlcmVuY2UuIik7CisgICAgICAgID8gQVNDSUlMaXRl
cmFsKCJQb3N0Zml4ICsrIG9wZXJhdG9yIGFwcGxpZWQgdG8gdmFsdWUgdGhhdCBpcyBub3QgYSBy
ZWZlcmVuY2UuIikKKyAgICAgICAgOiBBU0NJSUxpdGVyYWwoIlBvc3RmaXggLS0gb3BlcmF0b3Ig
YXBwbGllZCB0byB2YWx1ZSB0aGF0IGlzIG5vdCBhIHJlZmVyZW5jZS4iKSk7CiB9CiAKIC8vIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBEZWxldGVSZXNvbHZlTm9kZSAtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtMTA3NCw4ICsxMDc0LDggQEAgUmVnaXN0ZXJJ
RCogUHJlZml4Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3Is
IFJlZ2lzdGVySUQqIGQKICAgICAgICAgcmV0dXJuIGVtaXREb3QoZ2VuZXJhdG9yLCBkc3QpOwog
CiAgICAgcmV0dXJuIGVtaXRUaHJvd1JlZmVyZW5jZUVycm9yKGdlbmVyYXRvciwgbV9vcGVyYXRv
ciA9PSBPcFBsdXNQbHVzCi0gICAgICAgID8gIlByZWZpeCArKyBvcGVyYXRvciBhcHBsaWVkIHRv
IHZhbHVlIHRoYXQgaXMgbm90IGEgcmVmZXJlbmNlLiIKLSAgICAgICAgOiAiUHJlZml4IC0tIG9w
ZXJhdG9yIGFwcGxpZWQgdG8gdmFsdWUgdGhhdCBpcyBub3QgYSByZWZlcmVuY2UuIik7CisgICAg
ICAgID8gQVNDSUlMaXRlcmFsKCJQcmVmaXggKysgb3BlcmF0b3IgYXBwbGllZCB0byB2YWx1ZSB0
aGF0IGlzIG5vdCBhIHJlZmVyZW5jZS4iKQorICAgICAgICA6IEFTQ0lJTGl0ZXJhbCgiUHJlZml4
IC0tIG9wZXJhdG9yIGFwcGxpZWQgdG8gdmFsdWUgdGhhdCBpcyBub3QgYSByZWZlcmVuY2UuIikp
OwogfQogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gVW5hcnkgT3BlcmF0aW9u
IE5vZGVzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC0xNjEzLDcgKzE2
MTMsNyBAQCBSZWdpc3RlcklEKiBSZWFkTW9kaWZ5RG90Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVj
b2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdAogCiBSZWdpc3RlcklEKiBBc3NpZ25FcnJv
ck5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3Rl
cklEKikKIHsKLSAgICByZXR1cm4gZW1pdFRocm93UmVmZXJlbmNlRXJyb3IoZ2VuZXJhdG9yLCAi
TGVmdCBzaWRlIG9mIGFzc2lnbm1lbnQgaXMgbm90IGEgcmVmZXJlbmNlLiIpOworICAgIHJldHVy
biBlbWl0VGhyb3dSZWZlcmVuY2VFcnJvcihnZW5lcmF0b3IsIEFTQ0lJTGl0ZXJhbCgiTGVmdCBz
aWRlIG9mIGFzc2lnbm1lbnQgaXMgbm90IGEgcmVmZXJlbmNlLiIpKTsKIH0KIAogLy8gLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEFzc2lnbkJyYWNrZXROb2RlIC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC0yMDM1LDcgKzIwMzUsNyBAQCB2b2lkIEZvckluTm9k
ZTo6ZW1pdExvb3BIZWFkZXIoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJ
RCogcHJvcGVydAogdm9pZCBGb3JJbk5vZGU6OmVtaXRNdWx0aUxvb3BCeXRlY29kZShCeXRlY29k
ZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCiB7CiAgICAgaWYgKCFtX2xl
eHByLT5pc0Fzc2lnbm1lbnRMb2NhdGlvbigpKSB7Ci0gICAgICAgIGVtaXRUaHJvd1JlZmVyZW5j
ZUVycm9yKGdlbmVyYXRvciwgIkxlZnQgc2lkZSBvZiBmb3ItaW4gc3RhdGVtZW50IGlzIG5vdCBh
IHJlZmVyZW5jZS4iKTsKKyAgICAgICAgZW1pdFRocm93UmVmZXJlbmNlRXJyb3IoZ2VuZXJhdG9y
LCBBU0NJSUxpdGVyYWwoIkxlZnQgc2lkZSBvZiBmb3ItaW4gc3RhdGVtZW50IGlzIG5vdCBhIHJl
ZmVyZW5jZS4iKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTIxNjcsNyArMjE2Nyw3
IEBAIHZvaWQgRm9ySW5Ob2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVy
YXRvciwgUmVnaXN0ZXJJRCogZHN0KQogdm9pZCBGb3JPZk5vZGU6OmVtaXRCeXRlY29kZShCeXRl
Y29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCiB7CiAgICAgaWYgKCFt
X2xleHByLT5pc0Fzc2lnbm1lbnRMb2NhdGlvbigpKSB7Ci0gICAgICAgIGVtaXRUaHJvd1JlZmVy
ZW5jZUVycm9yKGdlbmVyYXRvciwgIkxlZnQgc2lkZSBvZiBmb3Itb2Ygc3RhdGVtZW50IGlzIG5v
dCBhIHJlZmVyZW5jZS4iKTsKKyAgICAgICAgZW1pdFRocm93UmVmZXJlbmNlRXJyb3IoZ2VuZXJh
dG9yLCBBU0NJSUxpdGVyYWwoIkxlZnQgc2lkZSBvZiBmb3Itb2Ygc3RhdGVtZW50IGlzIG5vdCBh
IHJlZmVyZW5jZS4iKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCkBAIC0yNzg0LDcg
KzI3ODQsNyBAQCB2b2lkIE9iamVjdFBhdHRlcm5Ob2RlOjp0b1N0cmluZyhTdHJpbmdCdWlsZGVy
JiBidWlsZGVyKSBjb25zdAogICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoJyInKTsKICAgICAg
ICAgfSBlbHNlCiAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZChtX3RhcmdldFBhdHRlcm5zW2ld
LnByb3BlcnR5TmFtZS5zdHJpbmcoKSk7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKCI6Iik7Cisg
ICAgICAgIGJ1aWxkZXIuYXBwZW5kKCc6Jyk7CiAgICAgICAgIG1fdGFyZ2V0UGF0dGVybnNbaV0u
cGF0dGVybi0+dG9TdHJpbmcoYnVpbGRlcik7CiAgICAgICAgIGlmIChpIDwgbV90YXJnZXRQYXR0
ZXJucy5zaXplKCkgLSAxKQogICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoJywnKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRnVuY3Rpb25XaGl0ZWxpc3QuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGdW5jdGlvbldoaXRlbGlzdC5jcHAKaW5k
ZXggZjYxODQ5OS4uOWU1OGZiYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdGdW5jdGlvbldoaXRlbGlzdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdGdW5jdGlvbldoaXRlbGlzdC5jcHAKQEAgLTEwNiw5ICsxMDYsNyBAQCBib29sIEZ1bmN0
aW9uV2hpdGVsaXN0Ojpjb250YWlucyhDb2RlQmxvY2sqIGNvZGVCbG9jaykgY29uc3QKICAgICBp
ZiAobV9lbnRyaWVzLmNvbnRhaW5zKGhhc2gpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAg
IFN0cmluZyBuYW1lQW5kSGFzaCA9IG5hbWU7Ci0gICAgbmFtZUFuZEhhc2guYXBwZW5kKCcjJyk7
Ci0gICAgbmFtZUFuZEhhc2guYXBwZW5kKGhhc2gpOworICAgIFN0cmluZyBuYW1lQW5kSGFzaCA9
IG5hbWUgKyAnIycgKyBoYXNoOwogICAgIHJldHVybiBtX2VudHJpZXMuY29udGFpbnMobmFtZUFu
ZEhhc2gpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09w
ZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNw
cAppbmRleCA4MjRhZTQ2Li4wNzg0N2U4NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR09wZXJhdGlvbnMuY3BwCkBAIC0xMzcsNyArMTM3LDcgQEAgY2hhciogbmV3VHlwZWRBcnJh
eVdpdGhTaXplKEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGludDMyX3Qg
c2l6ZSkKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNl
ciB0cmFjZXIoJnZtLCBleGVjKTsKICAgICBpZiAoc2l6ZSA8IDApIHsKLSAgICAgICAgdm0udGhy
b3dFeGNlcHRpb24oZXhlYywgY3JlYXRlUmFuZ2VFcnJvcihleGVjLCAiUmVxdWVzdGVkIGxlbmd0
aCBpcyBuZWdhdGl2ZSIpKTsKKyAgICAgICAgdm0udGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRl
UmFuZ2VFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlJlcXVlc3RlZCBsZW5ndGggaXMgbmVnYXRp
dmUiKSkpOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAgICAgcmV0dXJuIGJpdHdpc2VfY2Fz
dDxjaGFyKj4oVmlld0NsYXNzOjpjcmVhdGUoZXhlYywgc3RydWN0dXJlLCBzaXplKSk7CkBAIC0x
NTYsNyArMTU2LDcgQEAgY2hhciogbmV3VHlwZWRBcnJheVdpdGhPbmVBcmd1bWVudCgKICAgICAg
ICAgUmVmUHRyPEFycmF5QnVmZmVyPiBidWZmZXIgPSBqc0J1ZmZlci0+aW1wbCgpOwogICAgICAg
ICAKICAgICAgICAgaWYgKGJ1ZmZlci0+Ynl0ZUxlbmd0aCgpICUgVmlld0NsYXNzOjplbGVtZW50
U2l6ZSkgewotICAgICAgICAgICAgdm0udGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlUmFuZ2VF
cnJvcihleGVjLCAiQXJyYXlCdWZmZXIgbGVuZ3RoIG1pbnVzIHRoZSBieXRlT2Zmc2V0IGlzIG5v
dCBhIG11bHRpcGxlIG9mIHRoZSBlbGVtZW50IHNpemUiKSk7CisgICAgICAgICAgICB2bS50aHJv
d0V4Y2VwdGlvbihleGVjLCBjcmVhdGVSYW5nZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiQXJy
YXlCdWZmZXIgbGVuZ3RoIG1pbnVzIHRoZSBieXRlT2Zmc2V0IGlzIG5vdCBhIG11bHRpcGxlIG9m
IHRoZSBlbGVtZW50IHNpemUiKSkpOwogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIH0K
ICAgICAgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDxjaGFyKj4oCkBAIC0xODMsMTggKzE4MywxOCBA
QCBjaGFyKiBuZXdUeXBlZEFycmF5V2l0aE9uZUFyZ3VtZW50KAogICAgIGlmICh2YWx1ZS5pc0lu
dDMyKCkpCiAgICAgICAgIGxlbmd0aCA9IHZhbHVlLmFzSW50MzIoKTsKICAgICBlbHNlIGlmICgh
dmFsdWUuaXNOdW1iZXIoKSkgewotICAgICAgICB2bS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVh
dGVUeXBlRXJyb3IoZXhlYywgIkludmFsaWQgYXJyYXkgbGVuZ3RoIGFyZ3VtZW50IikpOworICAg
ICAgICB2bS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgQVNDSUlM
aXRlcmFsKCJJbnZhbGlkIGFycmF5IGxlbmd0aCBhcmd1bWVudCIpKSk7CiAgICAgICAgIHJldHVy
biAwOwogICAgIH0gZWxzZSB7CiAgICAgICAgIGxlbmd0aCA9IHN0YXRpY19jYXN0PGludD4odmFs
dWUuYXNOdW1iZXIoKSk7CiAgICAgICAgIGlmIChsZW5ndGggIT0gdmFsdWUuYXNOdW1iZXIoKSkg
ewotICAgICAgICAgICAgdm0udGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4
ZWMsICJJbnZhbGlkIGFycmF5IGxlbmd0aCBhcmd1bWVudCAoZnJhY3Rpb25hbCBsZW5ndGhzIG5v
dCBhbGxvd2VkKSIpKTsKKyAgICAgICAgICAgIHZtLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0
ZVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkludmFsaWQgYXJyYXkgbGVuZ3RoIGFyZ3Vt
ZW50IChmcmFjdGlvbmFsIGxlbmd0aHMgbm90IGFsbG93ZWQpIikpKTsKICAgICAgICAgICAgIHJl
dHVybiAwOwogICAgICAgICB9CiAgICAgfQogICAgIAogICAgIGlmIChsZW5ndGggPCAwKSB7Ci0g
ICAgICAgIHZtLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZVJhbmdlRXJyb3IoZXhlYywgIlJl
cXVlc3RlZCBsZW5ndGggaXMgbmVnYXRpdmUiKSk7CisgICAgICAgIHZtLnRocm93RXhjZXB0aW9u
KGV4ZWMsIGNyZWF0ZVJhbmdlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJSZXF1ZXN0ZWQgbGVu
Z3RoIGlzIG5lZ2F0aXZlIikpKTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogICAgIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9Db25zb2xlTWVzc2FnZS5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0NvbnNvbGVNZXNzYWdlLmNwcApp
bmRleCAwMjAzYmMxLi41YjQzYzc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL0NvbnNvbGVNZXNzYWdlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL0NvbnNvbGVNZXNzYWdlLmNwcApAQCAtMjExLDcgKzIxMSw3IEBAIHZvaWQgQ29u
c29sZU1lc3NhZ2U6OmFkZFRvRnJvbnRlbmQoSW5zcGVjdG9yQ29uc29sZUZyb250ZW5kRGlzcGF0
Y2hlciogY29uc29sZUZyCiAgICAgICAgICAgICAgICAganNvbkFyZ3MtPmFkZEl0ZW0oaW5zcGVj
dG9yVmFsdWUpOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgbV9hcmd1bWVudHMtPmFyZ3VtZW50Q291bnQoKTsgKytpKSB7Ci0g
ICAgICAgICAgICAgICAgICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpSdW50aW1l
OjpSZW1vdGVPYmplY3Q+IGluc3BlY3RvclZhbHVlID0gaW5qZWN0ZWRTY3JpcHQud3JhcE9iamVj
dChtX2FyZ3VtZW50cy0+YXJndW1lbnRBdChpKSwgImNvbnNvbGUiLCBnZW5lcmF0ZVByZXZpZXcp
OworICAgICAgICAgICAgICAgICAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UnVu
dGltZTo6UmVtb3RlT2JqZWN0PiBpbnNwZWN0b3JWYWx1ZSA9IGluamVjdGVkU2NyaXB0LndyYXBP
YmplY3QobV9hcmd1bWVudHMtPmFyZ3VtZW50QXQoaSksIEFTQ0lJTGl0ZXJhbCgiY29uc29sZSIp
LCBnZW5lcmF0ZVByZXZpZXcpOwogICAgICAgICAgICAgICAgICAgICBpZiAoIWluc3BlY3RvclZh
bHVlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAg
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5jcHAK
aW5kZXggMzBhNjZmNy4uYmIzZWM4MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5jcHAKQEAg
LTkwLDcgKzkwLDcgQEAgdm9pZCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6ZGlzcGF0Y2go
Y29uc3QgU3RyaW5nJiBtZXNzYWdlKQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgUmVm
UHRyPEluc3BlY3RvclZhbHVlPiBjYWxsSWRWYWx1ZSA9IG1lc3NhZ2VPYmplY3QtPmdldCgiaWQi
KTsKKyAgICBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IGNhbGxJZFZhbHVlID0gbWVzc2FnZU9iamVj
dC0+Z2V0KEFTQ0lJTGl0ZXJhbCgiaWQiKSk7CiAgICAgaWYgKCFjYWxsSWRWYWx1ZSkgewogICAg
ICAgICByZXBvcnRQcm90b2NvbEVycm9yKG51bGxwdHIsIEludmFsaWRSZXF1ZXN0LCBBU0NJSUxp
dGVyYWwoIidpZCcgcHJvcGVydHkgd2FzIG5vdCBmb3VuZCIpKTsKICAgICAgICAgcmV0dXJuOwpA
QCAtMTAyLDcgKzEwMiw3IEBAIHZvaWQgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OmRpc3Bh
dGNoKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAg
IFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4gbWV0aG9kVmFsdWUgPSBtZXNzYWdlT2JqZWN0LT5nZXQo
Im1ldGhvZCIpOworICAgIFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4gbWV0aG9kVmFsdWUgPSBtZXNz
YWdlT2JqZWN0LT5nZXQoQVNDSUlMaXRlcmFsKCJtZXRob2QiKSk7CiAgICAgaWYgKCFtZXRob2RW
YWx1ZSkgewogICAgICAgICByZXBvcnRQcm90b2NvbEVycm9yKCZjYWxsSWQsIEludmFsaWRSZXF1
ZXN0LCBBU0NJSUxpdGVyYWwoIidtZXRob2QnIHByb3BlcnR5IHdhc24ndCBmb3VuZCIpKTsKICAg
ICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9TY3JpcHRDYWxsU3RhY2tGYWN0b3J5LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvU2NyaXB0Q2FsbFN0YWNrRmFjdG9yeS5jcHAKaW5kZXggMmYwNjI3OS4uMjdkYzA5OSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9TY3JpcHRDYWxsU3Rh
Y2tGYWN0b3J5LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL1Njcmlw
dENhbGxTdGFja0ZhY3RvcnkuY3BwCkBAIC0xMjQsNyArMTI0LDcgQEAgc3RhdGljIHZvaWQgZXh0
cmFjdFNvdXJjZUluZm9ybWF0aW9uRnJvbUV4Y2VwdGlvbihKU0M6OkV4ZWNTdGF0ZSogZXhlYywg
SlNPYmplY3QKICAgICBKU1ZhbHVlIGNvbHVtblZhbHVlID0gZXhjZXB0aW9uT2JqZWN0LT5nZXRE
aXJlY3QoZXhlYy0+dm0oKSwgSWRlbnRpZmllcihleGVjLCAiY29sdW1uIikpOwogICAgICpjb2x1
bW5OdW1iZXIgPSBjb2x1bW5WYWx1ZSAmJiBjb2x1bW5WYWx1ZS5pc051bWJlcigpID8gaW50KGNv
bHVtblZhbHVlLnRvTnVtYmVyKGV4ZWMpKSA6IDA7CiAgICAgSlNWYWx1ZSBzb3VyY2VVUkxWYWx1
ZSA9IGV4Y2VwdGlvbk9iamVjdC0+Z2V0RGlyZWN0KGV4ZWMtPnZtKCksIElkZW50aWZpZXIoZXhl
YywgInNvdXJjZVVSTCIpKTsKLSAgICAqc291cmNlVVJMID0gc291cmNlVVJMVmFsdWUgJiYgc291
cmNlVVJMVmFsdWUuaXNTdHJpbmcoKSA/IHNvdXJjZVVSTFZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52
YWx1ZShleGVjKSA6IFN0cmluZygidW5kZWZpbmVkIik7CisgICAgKnNvdXJjZVVSTCA9IHNvdXJj
ZVVSTFZhbHVlICYmIHNvdXJjZVVSTFZhbHVlLmlzU3RyaW5nKCkgPyBzb3VyY2VVUkxWYWx1ZS50
b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykgOiBBU0NJSUxpdGVyYWwoInVuZGVmaW5lZCIpOwog
ICAgIGV4ZWMtPmNsZWFyRXhjZXB0aW9uKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRvcl90ZW1wbGF0ZXMu
cHkgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5l
cmF0b3JfdGVtcGxhdGVzLnB5Cm9sZCBtb2RlIDEwMDY0NApuZXcgbW9kZSAxMDA3NTUKaW5kZXgg
ZjlmMGYzNy4uYThlMDg1NQotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Nj
cmlwdHMvY29kZWdlbi9nZW5lcmF0b3JfdGVtcGxhdGVzLnB5CisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRvcl90ZW1wbGF0ZXMucHkK
QEAgLTEyOSw3ICsxMjksNyBAQCBwcml2YXRlOgogCiAke2Rpc3BhdGNoQ2FzZXN9CiAgICAgZWxz
ZQotICAgICAgICBtX2JhY2tlbmREaXNwYXRjaGVyLT5yZXBvcnRQcm90b2NvbEVycm9yKCZjYWxs
SWQsIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpNZXRob2ROb3RGb3VuZCwgU3RyaW5nKCIn
IikgKyAiJHtkb21haW5OYW1lfSIgKyAnLicgKyBtZXRob2QgKyAiJyB3YXMgbm90IGZvdW5kIik7
CisgICAgICAgIG1fYmFja2VuZERpc3BhdGNoZXItPnJlcG9ydFByb3RvY29sRXJyb3IoJmNhbGxJ
ZCwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6Ok1ldGhvZE5vdEZvdW5kLCBtYWtlU3RyaW5n
KCdcXCcnLCAiJHtkb21haW5OYW1lfSIsICcuJywgbWV0aG9kLCAiJyB3YXMgbm90IGZvdW5kIikp
OwogfSIiIikKIAogICAgIEJhY2tlbmREaXNwYXRjaGVySW1wbGVtZW50YXRpb25MYXJnZVN3aXRj
aCA9ICgKQEAgLTE1NCw3ICsxNTQsNyBAQCAke2Rpc3BhdGNoQ2FzZXN9CiAKICAgICBIYXNoTWFw
PFN0cmluZywgQ2FsbEhhbmRsZXI+OjppdGVyYXRvciBpdCA9IGRpc3BhdGNoTWFwLmZpbmQobWV0
aG9kKTsKICAgICBpZiAoaXQgPT0gZGlzcGF0Y2hNYXAuZW5kKCkpIHsKLSAgICAgICAgbV9iYWNr
ZW5kRGlzcGF0Y2hlci0+cmVwb3J0UHJvdG9jb2xFcnJvcigmY2FsbElkLCBJbnNwZWN0b3JCYWNr
ZW5kRGlzcGF0Y2hlcjo6TWV0aG9kTm90Rm91bmQsIFN0cmluZygiJyIpICsgIiR7ZG9tYWluTmFt
ZX0iICsgJy4nICsgbWV0aG9kICsgIicgd2FzIG5vdCBmb3VuZCIpOworICAgICAgICBtX2JhY2tl
bmREaXNwYXRjaGVyLT5yZXBvcnRQcm90b2NvbEVycm9yKCZjYWxsSWQsIEluc3BlY3RvckJhY2tl
bmREaXNwYXRjaGVyOjpNZXRob2ROb3RGb3VuZCwgbWFrZVN0cmluZygnXFwnJywgIiR7ZG9tYWlu
TmFtZX0iLCAnLicsIG1ldGhvZCwgIicgd2FzIG5vdCBmb3VuZCIpKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVy
L1N0YWNrVmlzaXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvU3Rh
Y2tWaXNpdG9yLmNwcAppbmRleCBiNDYwMTU2Li45OTVhYjZiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvU3RhY2tWaXNpdG9yLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvU3RhY2tWaXNpdG9yLmNwcApAQCAtMTk2LDcgKzE5
Niw3IEBAIFN0cmluZyBTdGFja1Zpc2l0b3I6OkZyYW1lOjpmdW5jdGlvbk5hbWUoKQogCiAgICAg
c3dpdGNoIChjb2RlVHlwZSgpKSB7CiAgICAgY2FzZSBDb2RlVHlwZTo6RXZhbDoKLSAgICAgICAg
dHJhY2VMaW5lID0gImV2YWwgY29kZSI7CisgICAgICAgIHRyYWNlTGluZSA9IEFTQ0lJTGl0ZXJh
bCgiZXZhbCBjb2RlIik7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ29kZVR5cGU6Ok5hdGl2
ZToKICAgICAgICAgaWYgKGNhbGxlZSkKQEAgLTIwNiw3ICsyMDYsNyBAQCBTdHJpbmcgU3RhY2tW
aXNpdG9yOjpGcmFtZTo6ZnVuY3Rpb25OYW1lKCkKICAgICAgICAgdHJhY2VMaW5lID0gZ2V0Q2Fs
Y3VsYXRlZERpc3BsYXlOYW1lKGNhbGxGcmFtZSgpLCBjYWxsZWUpLmltcGwoKTsKICAgICAgICAg
YnJlYWs7CiAgICAgY2FzZSBDb2RlVHlwZTo6R2xvYmFsOgotICAgICAgICB0cmFjZUxpbmUgPSAi
Z2xvYmFsIGNvZGUiOworICAgICAgICB0cmFjZUxpbmUgPSBBU0NJSUxpdGVyYWwoImdsb2JhbCBj
b2RlIik7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICByZXR1cm4gdHJhY2VMaW5lLmlzTnVs
bCgpID8gZW1wdHlTdHJpbmcoKSA6IHRyYWNlTGluZTsKQEAgLTIyNiw3ICsyMjYsNyBAQCBTdHJp
bmcgU3RhY2tWaXNpdG9yOjpGcmFtZTo6c291cmNlVVJMKCkKICAgICAgICAgYnJlYWs7CiAgICAg
fQogICAgIGNhc2UgQ29kZVR5cGU6Ok5hdGl2ZToKLSAgICAgICAgdHJhY2VMaW5lID0gIltuYXRp
dmUgY29kZV0iOworICAgICAgICB0cmFjZUxpbmUgPSBBU0NJSUxpdGVyYWwoIltuYXRpdmUgY29k
ZV0iKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIHJldHVybiB0cmFjZUxpbmUuaXNOdWxs
KCkgPyBlbXB0eVN0cmluZygpIDogdHJhY2VMaW5lOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUT3BlcmF0aW9ucy5jcHAKaW5kZXggMTgwNmYwNS4uODM1MGE4ZCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCkBAIC05NjgsNyArOTY4LDcgQEAg
RW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdSZWdleHAoRXhlY1N0YXRl
KiBleGVjLCB2b2lkKiByZWdleHBQdHIKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2Vy
KCZ2bSwgZXhlYyk7CiAgICAgUmVnRXhwKiByZWdleHAgPSBzdGF0aWNfY2FzdDxSZWdFeHAqPihy
ZWdleHBQdHIpOwogICAgIGlmICghcmVnZXhwLT5pc1ZhbGlkKCkpIHsKLSAgICAgICAgdm0udGhy
b3dFeGNlcHRpb24oZXhlYywgY3JlYXRlU3ludGF4RXJyb3IoZXhlYywgIkludmFsaWQgZmxhZ3Mg
c3VwcGxpZWQgdG8gUmVnRXhwIGNvbnN0cnVjdG9yLiIpKTsKKyAgICAgICAgdm0udGhyb3dFeGNl
cHRpb24oZXhlYywgY3JlYXRlU3ludGF4RXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJJbnZhbGlk
IGZsYWdzIHN1cHBsaWVkIHRvIFJlZ0V4cCBjb25zdHJ1Y3Rvci4iKSkpOwogICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIH0KIApAQCAtMTYxNCw3ICsx
NjE0LDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25EZWxldGVCeUlk
KEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUKICAgICBib29sIGNvdWxkRGVsZXRlID0g
YmFzZU9iai0+bWV0aG9kVGFibGUodm0pLT5kZWxldGVQcm9wZXJ0eShiYXNlT2JqLCBleGVjLCAq
aWRlbnRpZmllcik7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc0Jvb2xlYW4oY291bGREZWxldGUp
OwogICAgIGlmICghY291bGREZWxldGUgJiYgZXhlYy0+Y29kZUJsb2NrKCktPmlzU3RyaWN0TW9k
ZSgpKQotICAgICAgICB2bS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhl
YywgIlVuYWJsZSB0byBkZWxldGUgcHJvcGVydHkuIikpOworICAgICAgICB2bS50aHJvd0V4Y2Vw
dGlvbihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJVbmFibGUgdG8g
ZGVsZXRlIHByb3BlcnR5LiIpKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQp
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCmluZGV4IGQwYTVkMzguLmM1YTk4M2EgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qc2MuY3BwCkBAIC03MTQsOCArNzE0LDggQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBmdW5jdGlvbkRlc2NyaWJlQXJyYXkoRXhlY1N0YXRlKiBleGVjKQogICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIEpTT2JqZWN0KiBvYmplY3Qg
PSBqc0R5bmFtaWNDYXN0PEpTT2JqZWN0Kj4oZXhlYy0+YXJndW1lbnQoMCkpOwogICAgIGlmICgh
b2JqZWN0KQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzU3RyaW5nKGV4ZWMsICI8
bm90IG9iamVjdD4iKSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1N0cmluZyhleGVj
LCB0b1N0cmluZygiPFB1YmxpYyBsZW5ndGg6ICIsIG9iamVjdC0+Z2V0QXJyYXlMZW5ndGgoKSwg
IjsgdmVjdG9yIGxlbmd0aDogIiwgb2JqZWN0LT5nZXRWZWN0b3JMZW5ndGgoKSwgIj4iKSkpOwor
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTm9udHJpdmlhbFN0cmluZyhleGVjLCBB
U0NJSUxpdGVyYWwoIjxub3Qgb2JqZWN0PiIpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc05vbnRyaXZpYWxTdHJpbmcoZXhlYywgdG9TdHJpbmcoIjxQdWJsaWMgbGVuZ3RoOiAiLCBv
YmplY3QtPmdldEFycmF5TGVuZ3RoKCksICI7IHZlY3RvciBsZW5ndGg6ICIsIG9iamVjdC0+Z2V0
VmVjdG9yTGVuZ3RoKCksICI+IikpKTsKIH0KIAogY2xhc3MgRnVuY3Rpb25KU0NTdGFja0Z1bmN0
b3IgewpAQCAtODY5LDcgKzg2OSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVu
Y3Rpb25SdW4oRXhlY1N0YXRlKiBleGVjKQogICAgIFN0cmluZyBmaWxlTmFtZSA9IGV4ZWMtPmFy
Z3VtZW50KDApLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKICAgICBWZWN0b3I8Y2hhcj4g
c2NyaXB0OwogICAgIGlmICghZmlsbEJ1ZmZlcldpdGhDb250ZW50c09mRmlsZShmaWxlTmFtZSwg
c2NyaXB0KSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShleGVjLT52bSgpLnRocm93
RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZUVycm9yKGV4ZWMsICJDb3VsZCBub3Qgb3BlbiBmaWxlLiIp
KSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoZXhlYy0+dm0oKS50aHJvd0V4Y2Vw
dGlvbihleGVjLCBjcmVhdGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkNvdWxkIG5vdCBvcGVu
IGZpbGUuIikpKSk7CiAKICAgICBHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IEdsb2JhbE9i
amVjdDo6Y3JlYXRlKGV4ZWMtPnZtKCksIEdsb2JhbE9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKGV4
ZWMtPnZtKCksIGpzTnVsbCgpKSwgVmVjdG9yPFN0cmluZz4oKSk7CiAKQEAgLTg5OCw3ICs4OTgs
NyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uTG9hZChFeGVjU3RhdGUq
IGV4ZWMpCiAgICAgU3RyaW5nIGZpbGVOYW1lID0gZXhlYy0+YXJndW1lbnQoMCkudG9TdHJpbmco
ZXhlYyktPnZhbHVlKGV4ZWMpOwogICAgIFZlY3RvcjxjaGFyPiBzY3JpcHQ7CiAgICAgaWYgKCFm
aWxsQnVmZmVyV2l0aENvbnRlbnRzT2ZGaWxlKGZpbGVOYW1lLCBzY3JpcHQpKQotICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3Jl
YXRlRXJyb3IoZXhlYywgIkNvdWxkIG5vdCBvcGVuIGZpbGUuIikpKTsKKyAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZUVy
cm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiQ291bGQgbm90IG9wZW4gZmlsZS4iKSkpKTsKIAogICAg
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0
KCk7CiAgICAgCkBAIC05MTQsNyArOTE0LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBmdW5jdGlvblJlYWRGaWxlKEV4ZWNTdGF0ZSogZXhlYykKICAgICBTdHJpbmcgZmlsZU5hbWUg
PSBleGVjLT5hcmd1bWVudCgwKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CiAgICAgVmVj
dG9yPGNoYXI+IHNjcmlwdDsKICAgICBpZiAoIWZpbGxCdWZmZXJXaXRoQ29udGVudHNPZkZpbGUo
ZmlsZU5hbWUsIHNjcmlwdCkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoZXhlYy0+
dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVFcnJvcihleGVjLCAiQ291bGQgbm90IG9w
ZW4gZmlsZS4iKSkpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGV4ZWMtPnZtKCku
dGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJDb3Vs
ZCBub3Qgb3BlbiBmaWxlLiIpKSkpOwogCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1N0
cmluZyhleGVjLCBzdHJpbmdGcm9tVVRGKHNjcmlwdC5kYXRhKCkpKSk7CiB9CkBAIC05MjQsNyAr
OTI0LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkNoZWNrU3ludGF4
KEV4ZWNTdGF0ZSogZXhlYykKICAgICBTdHJpbmcgZmlsZU5hbWUgPSBleGVjLT5hcmd1bWVudCgw
KS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CiAgICAgVmVjdG9yPGNoYXI+IHNjcmlwdDsK
ICAgICBpZiAoIWZpbGxCdWZmZXJXaXRoQ29udGVudHNPZkZpbGUoZmlsZU5hbWUsIHNjcmlwdCkp
Ci0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlv
bihleGVjLCBjcmVhdGVFcnJvcihleGVjLCAiQ291bGQgbm90IG9wZW4gZmlsZS4iKSkpOworICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhl
YywgY3JlYXRlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJDb3VsZCBub3Qgb3BlbiBmaWxlLiIp
KSkpOwogCiAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGV4ZWMtPmxleGljYWxH
bG9iYWxPYmplY3QoKTsKIApAQCAtMTAxMSwxMSArMTAxMSwxMSBAQCBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGZ1bmN0aW9uUmVvcHRpbWl6YXRpb25SZXRyeUNvdW50KEV4ZWNTdGF0ZSog
ZXhlYykKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25UcmFuc2ZlckFycmF5
QnVmZmVyKEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgp
IDwgMSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShleGVjLT52bSgpLnRocm93RXhj
ZXB0aW9uKGV4ZWMsIGNyZWF0ZUVycm9yKGV4ZWMsICJOb3QgZW5vdWdoIGFyZ3VtZW50cyIpKSk7
CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlv
bihleGVjLCBjcmVhdGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIk5vdCBlbm91Z2ggYXJndW1l
bnRzIikpKSk7CiAgICAgCiAgICAgSlNBcnJheUJ1ZmZlciogYnVmZmVyID0ganNEeW5hbWljQ2Fz
dDxKU0FycmF5QnVmZmVyKj4oZXhlYy0+YXJndW1lbnQoMCkpOwogICAgIGlmICghYnVmZmVyKQot
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24o
ZXhlYywgY3JlYXRlRXJyb3IoZXhlYywgIkV4cGVjdGVkIGFuIGFycmF5IGJ1ZmZlciIpKSk7Cisg
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihl
eGVjLCBjcmVhdGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkV4cGVjdGVkIGFuIGFycmF5IGJ1
ZmZlciIpKSkpOwogICAgIAogICAgIEFycmF5QnVmZmVyQ29udGVudHMgZHVtbXlDb250ZW50czsK
ICAgICBidWZmZXItPmltcGwoKS0+dHJhbnNmZXIoZHVtbXlDb250ZW50cyk7CkBAIC0xMTg2LDcg
KzExODYsNyBAQCBzdGF0aWMgYm9vbCBydW5XaXRoU2NyaXB0cyhHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgY29uc3QgVmVjdG9yPFNjcmlwdD4mIHNjcgogICAgICAgICAgICAgc2NyaXB0ID0g
c2NyaXB0QnVmZmVyLmRhdGEoKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIHNjcmlw
dCA9IHNjcmlwdHNbaV0uYXJndW1lbnQ7Ci0gICAgICAgICAgICBmaWxlTmFtZSA9ICJbQ29tbWFu
ZCBMaW5lXSI7CisgICAgICAgICAgICBmaWxlTmFtZSA9IEFTQ0lJTGl0ZXJhbCgiW0NvbW1hbmQg
TGluZV0iKTsKICAgICAgICAgfQogCiAgICAgICAgIHZtLnN0YXJ0U2FtcGxpbmcoKTsKQEAgLTEy
MjgsNyArMTIyOCw3IEBAIHN0YXRpYyBib29sIHJ1bldpdGhTY3JpcHRzKEdsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBjb25zdCBWZWN0b3I8U2NyaXB0PiYgc2NyCiAKIHN0YXRpYyB2b2lkIHJ1
bkludGVyYWN0aXZlKEdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogewotICAgIFN0cmluZyBp
bnRlcnByZXRlck5hbWUoIkludGVycHJldGVyIik7CisgICAgU3RyaW5nIGludGVycHJldGVyTmFt
ZShBU0NJSUxpdGVyYWwoIkludGVycHJldGVyIikpOwogICAgIAogICAgIGJvb2wgc2hvdWxkUXVp
dCA9IGZhbHNlOwogICAgIHdoaWxlICghc2hvdWxkUXVpdCkgewpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL0xleGVyLmNwcAppbmRleCA2N2MwMWZiLi43MTUyM2VhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL0xleGVyLmNwcApAQCAtNTA2LDIxICs1MDYsMjEgQEAgU3RyaW5nIExleGVy
PFQ+OjppbnZhbGlkQ2hhcmFjdGVyTWVzc2FnZSgpIGNvbnN0CiB7CiAgICAgc3dpdGNoIChtX2N1
cnJlbnQpIHsKICAgICBjYXNlIDA6Ci0gICAgICAgIHJldHVybiAiSW52YWxpZCBjaGFyYWN0ZXI6
ICdcXDAnIjsKKyAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgiSW52YWxpZCBjaGFyYWN0ZXI6
ICdcXDAnIik7CiAgICAgY2FzZSAxMDoKLSAgICAgICAgcmV0dXJuICJJbnZhbGlkIGNoYXJhY3Rl
cjogJ1xcbiciOworICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJJbnZhbGlkIGNoYXJhY3Rl
cjogJ1xcbiciKTsKICAgICBjYXNlIDExOgotICAgICAgICByZXR1cm4gIkludmFsaWQgY2hhcmFj
dGVyOiAnXFx2JyI7CisgICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwoIkludmFsaWQgY2hhcmFj
dGVyOiAnXFx2JyIpOwogICAgIGNhc2UgMTM6Ci0gICAgICAgIHJldHVybiAiSW52YWxpZCBjaGFy
YWN0ZXI6ICdcXHInIjsKKyAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgiSW52YWxpZCBjaGFy
YWN0ZXI6ICdcXHInIik7CiAgICAgY2FzZSAzNToKLSAgICAgICAgcmV0dXJuICJJbnZhbGlkIGNo
YXJhY3RlcjogJyMnIjsKKyAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgiSW52YWxpZCBjaGFy
YWN0ZXI6ICcjJyIpOwogICAgIGNhc2UgNjQ6Ci0gICAgICAgIHJldHVybiAiSW52YWxpZCBjaGFy
YWN0ZXI6ICdAJyI7CisgICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwoIkludmFsaWQgY2hhcmFj
dGVyOiAnQCciKTsKICAgICBjYXNlIDk2OgotICAgICAgICByZXR1cm4gIkludmFsaWQgY2hhcmFj
dGVyOiAnYCciOworICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJJbnZhbGlkIGNoYXJhY3Rl
cjogJ2AnIik7CiAgICAgZGVmYXVsdDoKLSAgICAgICAgcmV0dXJuIFN0cmluZzo6Zm9ybWF0KCJJ
bnZhbGlkIGNoYXJhY3RlciAnXFx1JTA0dSciLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9jdXJy
ZW50KSkuaW1wbCgpOworICAgICAgICByZXR1cm4gU3RyaW5nOjpmb3JtYXQoIkludmFsaWQgY2hh
cmFjdGVyICdcXHUlMDR1JyIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX2N1cnJlbnQpKTsKICAg
ICB9CiB9CiAKQEAgLTEwMjYsNyArMTAyNiw3IEBAIHRlbXBsYXRlIDxib29sIHNob3VsZEJ1aWxk
U3RyaW5ncz4gQUxXQVlTX0lOTElORSB0eXBlbmFtZSBMZXhlcjxUPjo6U3RyaW5nUGFyc2VSCiAg
ICAgICAgICAgICBlbHNlIGlmIChtX2N1cnJlbnQgPT0gJ3gnKSB7CiAgICAgICAgICAgICAgICAg
c2hpZnQoKTsKICAgICAgICAgICAgICAgICBpZiAoIWlzQVNDSUlIZXhEaWdpdChtX2N1cnJlbnQp
IHx8ICFpc0FTQ0lJSGV4RGlnaXQocGVlaygxKSkpIHsKLSAgICAgICAgICAgICAgICAgICAgbV9s
ZXhFcnJvck1lc3NhZ2UgPSAiXFx4IGNhbiBvbmx5IGJlIGZvbGxvd2VkIGJ5IGEgaGV4IGNoYXJh
Y3RlciBzZXF1ZW5jZSI7CisgICAgICAgICAgICAgICAgICAgIG1fbGV4RXJyb3JNZXNzYWdlID0g
QVNDSUlMaXRlcmFsKCJcXHggY2FuIG9ubHkgYmUgZm9sbG93ZWQgYnkgYSBoZXggY2hhcmFjdGVy
IHNlcXVlbmNlIik7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoYXRFbmQoKSB8fCAoaXNB
U0NJSUhleERpZ2l0KG1fY3VycmVudCkgJiYgKG1fY29kZSArIDEgPT0gbV9jb2RlRW5kKSkpID8g
U3RyaW5nVW50ZXJtaW5hdGVkIDogU3RyaW5nQ2Fubm90QmVQYXJzZWQ7CiAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgICAgIFQgcHJldiA9IG1fY3VycmVudDsKQEAgLTEwOTEsNyArMTA5
MSw3IEBAIHRlbXBsYXRlIDxib29sIHNob3VsZEJ1aWxkU3RyaW5ncz4gdHlwZW5hbWUgTGV4ZXI8
VD46OlN0cmluZ1BhcnNlUmVzdWx0IExleGVyPFQ+CiAgICAgICAgICAgICBlbHNlIGlmIChtX2N1
cnJlbnQgPT0gJ3gnKSB7CiAgICAgICAgICAgICAgICAgc2hpZnQoKTsKICAgICAgICAgICAgICAg
ICBpZiAoIWlzQVNDSUlIZXhEaWdpdChtX2N1cnJlbnQpIHx8ICFpc0FTQ0lJSGV4RGlnaXQocGVl
aygxKSkpIHsKLSAgICAgICAgICAgICAgICAgICAgbV9sZXhFcnJvck1lc3NhZ2UgPSAiXFx4IGNh
biBvbmx5IGJlIGZvbGxvd2VkIGJ5IGEgaGV4IGNoYXJhY3RlciBzZXF1ZW5jZSI7CisgICAgICAg
ICAgICAgICAgICAgIG1fbGV4RXJyb3JNZXNzYWdlID0gQVNDSUlMaXRlcmFsKCJcXHggY2FuIG9u
bHkgYmUgZm9sbG93ZWQgYnkgYSBoZXggY2hhcmFjdGVyIHNlcXVlbmNlIik7CiAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBTdHJpbmdDYW5ub3RCZVBhcnNlZDsKICAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICAgICAgVCBwcmV2ID0gbV9jdXJyZW50OwpAQCAtMTEwOSw3ICsxMTA5LDcg
QEAgdGVtcGxhdGUgPGJvb2wgc2hvdWxkQnVpbGRTdHJpbmdzPiB0eXBlbmFtZSBMZXhlcjxUPjo6
U3RyaW5nUGFyc2VSZXN1bHQgTGV4ZXI8VD4KICAgICAgICAgICAgICAgICAgICAgaWYgKHNob3Vs
ZEJ1aWxkU3RyaW5ncykKICAgICAgICAgICAgICAgICAgICAgICAgIHJlY29yZDE2KCd1Jyk7CiAg
ICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgbV9sZXhFcnJvck1l
c3NhZ2UgPSAiXFx1IGNhbiBvbmx5IGJlIGZvbGxvd2VkIGJ5IGEgVW5pY29kZSBjaGFyYWN0ZXIg
c2VxdWVuY2UiOworICAgICAgICAgICAgICAgICAgICBtX2xleEVycm9yTWVzc2FnZSA9IEFTQ0lJ
TGl0ZXJhbCgiXFx1IGNhbiBvbmx5IGJlIGZvbGxvd2VkIGJ5IGEgVW5pY29kZSBjaGFyYWN0ZXIg
c2VxdWVuY2UiKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNoYXJhY3Rlci52YWx1ZVR5
cGUoKSA9PSBVbmljb2RlSGV4VmFsdWU6OkluY29tcGxldGVIZXggPyBTdHJpbmdVbnRlcm1pbmF0
ZWQgOiBTdHJpbmdDYW5ub3RCZVBhcnNlZDsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICB9IGVsc2UgaWYgKHN0cmljdE1vZGUgJiYgaXNBU0NJSURpZ2l0KG1fY3VycmVudCkpIHsKQEAg
LTExMTcsNyArMTExNyw3IEBAIHRlbXBsYXRlIDxib29sIHNob3VsZEJ1aWxkU3RyaW5ncz4gdHlw
ZW5hbWUgTGV4ZXI8VD46OlN0cmluZ1BhcnNlUmVzdWx0IExleGVyPFQ+CiAgICAgICAgICAgICAg
ICAgaW50IGNoYXJhY3RlcjEgPSBtX2N1cnJlbnQ7CiAgICAgICAgICAgICAgICAgc2hpZnQoKTsK
ICAgICAgICAgICAgICAgICBpZiAoY2hhcmFjdGVyMSAhPSAnMCcgfHwgaXNBU0NJSURpZ2l0KG1f
Y3VycmVudCkpIHsKLSAgICAgICAgICAgICAgICAgICAgbV9sZXhFcnJvck1lc3NhZ2UgPSAiVGhl
IG9ubHkgdmFsaWQgbnVtZXJpYyBlc2NhcGUgaW4gc3RyaWN0IG1vZGUgaXMgJ1xcMCciOworICAg
ICAgICAgICAgICAgICAgICBtX2xleEVycm9yTWVzc2FnZSA9IEFTQ0lJTGl0ZXJhbCgiVGhlIG9u
bHkgdmFsaWQgbnVtZXJpYyBlc2NhcGUgaW4gc3RyaWN0IG1vZGUgaXMgJ1xcMCciKTsKICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIFN0cmluZ0Nhbm5vdEJlUGFyc2VkOwogICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgICAgICBpZiAoc2hvdWxkQnVpbGRTdHJpbmdzKQpAQCAtMTE0Nyw3
ICsxMTQ3LDcgQEAgdGVtcGxhdGUgPGJvb2wgc2hvdWxkQnVpbGRTdHJpbmdzPiB0eXBlbmFtZSBM
ZXhlcjxUPjo6U3RyaW5nUGFyc2VSZXN1bHQgTGV4ZXI8VD4KICAgICAgICAgICAgICAgICAgICAg
cmVjb3JkMTYobV9jdXJyZW50KTsKICAgICAgICAgICAgICAgICBzaGlmdCgpOwogICAgICAgICAg
ICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBtX2xleEVycm9yTWVzc2FnZSA9ICJVbnRlcm1p
bmF0ZWQgc3RyaW5nIGNvbnN0YW50IjsKKyAgICAgICAgICAgICAgICBtX2xleEVycm9yTWVzc2Fn
ZSA9IEFTQ0lJTGl0ZXJhbCgiVW50ZXJtaW5hdGVkIHN0cmluZyBjb25zdGFudCIpOwogICAgICAg
ICAgICAgICAgIHJldHVybiBTdHJpbmdVbnRlcm1pbmF0ZWQ7CiAgICAgICAgICAgICB9CiAKQEAg
LTExNjAsNyArMTE2MCw3IEBAIHRlbXBsYXRlIDxib29sIHNob3VsZEJ1aWxkU3RyaW5ncz4gdHlw
ZW5hbWUgTGV4ZXI8VD46OlN0cmluZ1BhcnNlUmVzdWx0IExleGVyPFQ+CiAgICAgICAgIGlmIChV
TkxJS0VMWSgoKHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX2N1cnJlbnQpIC0gMHhFKSAmIDB4MjAw
MCkpKSB7CiAgICAgICAgICAgICAvLyBOZXctbGluZSBvciBlbmQgb2YgaW5wdXQgaXMgbm90IGFs
bG93ZWQKICAgICAgICAgICAgIGlmIChhdEVuZCgpIHx8IGlzTGluZVRlcm1pbmF0b3IobV9jdXJy
ZW50KSkgewotICAgICAgICAgICAgICAgIG1fbGV4RXJyb3JNZXNzYWdlID0gIlVuZXhwZWN0ZWQg
RU9GIjsKKyAgICAgICAgICAgICAgICBtX2xleEVycm9yTWVzc2FnZSA9IEFTQ0lJTGl0ZXJhbCgi
VW5leHBlY3RlZCBFT0YiKTsKICAgICAgICAgICAgICAgICByZXR1cm4gYXRFbmQoKSA/IFN0cmlu
Z1VudGVybWluYXRlZCA6IFN0cmluZ0Nhbm5vdEJlUGFyc2VkOwogICAgICAgICAgICAgfQogICAg
ICAgICAgICAgLy8gQW55dGhpbmcgZWxzZSBpcyBqdXN0IGEgbm9ybWFsIGNoYXJhY3RlcgpAQCAt
MTUyMiw3ICsxNTIyLDcgQEAgc3RhcnQ6CiAgICAgICAgICAgICBzaGlmdCgpOwogICAgICAgICAg
ICAgaWYgKHBhcnNlTXVsdGlsaW5lQ29tbWVudCgpKQogICAgICAgICAgICAgICAgIGdvdG8gc3Rh
cnQ7Ci0gICAgICAgICAgICBtX2xleEVycm9yTWVzc2FnZSA9ICJNdWx0aWxpbmUgY29tbWVudCB3
YXMgbm90IGNsb3NlZCBwcm9wZXJseSI7CisgICAgICAgICAgICBtX2xleEVycm9yTWVzc2FnZSA9
IEFTQ0lJTGl0ZXJhbCgiTXVsdGlsaW5lIGNvbW1lbnQgd2FzIG5vdCBjbG9zZWQgcHJvcGVybHki
KTsKICAgICAgICAgICAgIHRva2VuID0gVU5URVJNSU5BVEVEX01VTFRJTElORV9DT01NRU5UX0VS
Uk9SVE9LOwogICAgICAgICAgICAgZ290byByZXR1cm5FcnJvcjsKICAgICAgICAgfQpAQCAtMTY0
OCwxMyArMTY0OCwxMyBAQCBzdGFydDoKICAgICAgICAgc2hpZnQoKTsKICAgICAgICAgaWYgKCht
X2N1cnJlbnQgfCAweDIwKSA9PSAneCcpIHsKICAgICAgICAgICAgIGlmICghaXNBU0NJSUhleERp
Z2l0KHBlZWsoMSkpKSB7Ci0gICAgICAgICAgICAgICAgbV9sZXhFcnJvck1lc3NhZ2UgPSAiTm8g
aGV4YWRlY2ltYWwgZGlnaXRzIGFmdGVyICcweCciOworICAgICAgICAgICAgICAgIG1fbGV4RXJy
b3JNZXNzYWdlID0gQVNDSUlMaXRlcmFsKCJObyBoZXhhZGVjaW1hbCBkaWdpdHMgYWZ0ZXIgJzB4
JyIpOwogICAgICAgICAgICAgICAgIHRva2VuID0gSU5WQUxJRF9IRVhfTlVNQkVSX0VSUk9SVE9L
OwogICAgICAgICAgICAgICAgIGdvdG8gcmV0dXJuRXJyb3I7CiAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICBwYXJzZUhleCh0b2tlbkRhdGEtPmRvdWJsZVZhbHVlKTsKICAgICAgICAgICAgIGlm
IChpc0lkZW50U3RhcnQobV9jdXJyZW50KSkgewotICAgICAgICAgICAgICAgIG1fbGV4RXJyb3JN
ZXNzYWdlID0gIk5vIHNwYWNlIGJldHdlZW4gaGV4YWRlY2ltYWwgbGl0ZXJhbCBhbmQgaWRlbnRp
ZmllciI7CisgICAgICAgICAgICAgICAgbV9sZXhFcnJvck1lc3NhZ2UgPSBBU0NJSUxpdGVyYWwo
Ik5vIHNwYWNlIGJldHdlZW4gaGV4YWRlY2ltYWwgbGl0ZXJhbCBhbmQgaWRlbnRpZmllciIpOwog
ICAgICAgICAgICAgICAgIHRva2VuID0gSU5WQUxJRF9IRVhfTlVNQkVSX0VSUk9SVE9LOwogICAg
ICAgICAgICAgICAgIGdvdG8gcmV0dXJuRXJyb3I7CiAgICAgICAgICAgICB9CkBAIC0xNjY1LDcg
KzE2NjUsNyBAQCBzdGFydDoKIAogICAgICAgICByZWNvcmQ4KCcwJyk7CiAgICAgICAgIGlmIChz
dHJpY3RNb2RlICYmIGlzQVNDSUlEaWdpdChtX2N1cnJlbnQpKSB7Ci0gICAgICAgICAgICBtX2xl
eEVycm9yTWVzc2FnZSA9ICJEZWNpbWFsIGludGVnZXIgbGl0ZXJhbHMgd2l0aCBhIGxlYWRpbmcg
emVybyBhcmUgZm9yYmlkZGVuIGluIHN0cmljdCBtb2RlIjsKKyAgICAgICAgICAgIG1fbGV4RXJy
b3JNZXNzYWdlID0gQVNDSUlMaXRlcmFsKCJEZWNpbWFsIGludGVnZXIgbGl0ZXJhbHMgd2l0aCBh
IGxlYWRpbmcgemVybyBhcmUgZm9yYmlkZGVuIGluIHN0cmljdCBtb2RlIik7CiAgICAgICAgICAg
ICB0b2tlbiA9IElOVkFMSURfT0NUQUxfTlVNQkVSX0VSUk9SVE9LOwogICAgICAgICAgICAgZ290
byByZXR1cm5FcnJvcjsKICAgICAgICAgfQpAQCAtMTY4NSw3ICsxNjg1LDcgQEAgaW5OdW1iZXJB
ZnRlckRlY2ltYWxQb2ludDoKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgaWYg
KChtX2N1cnJlbnQgfCAweDIwKSA9PSAnZScpIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKCFw
YXJzZU51bWJlckFmdGVyRXhwb25lbnRJbmRpY2F0b3IoKSkgewotICAgICAgICAgICAgICAgICAg
ICAgICAgbV9sZXhFcnJvck1lc3NhZ2UgPSAiTm9uLW51bWJlciBmb3VuZCBhZnRlciBleHBvbmVu
dCBpbmRpY2F0b3IiOworICAgICAgICAgICAgICAgICAgICAgICAgbV9sZXhFcnJvck1lc3NhZ2Ug
PSBBU0NJSUxpdGVyYWwoIk5vbi1udW1iZXIgZm91bmQgYWZ0ZXIgZXhwb25lbnQgaW5kaWNhdG9y
Iik7CiAgICAgICAgICAgICAgICAgICAgICAgICB0b2tlbiA9IGF0RW5kKCkgPyBVTlRFUk1JTkFU
RURfTlVNRVJJQ19MSVRFUkFMX0VSUk9SVE9LIDogSU5WQUxJRF9OVU1FUklDX0xJVEVSQUxfRVJS
T1JUT0s7CiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIHJldHVybkVycm9yOwogICAgICAg
ICAgICAgICAgICAgICB9CkBAIC0xNjk4LDcgKzE2OTgsNyBAQCBpbk51bWJlckFmdGVyRGVjaW1h
bFBvaW50OgogCiAgICAgICAgIC8vIE5vIGlkZW50aWZpZXJzIGFsbG93ZWQgZGlyZWN0bHkgYWZ0
ZXIgbnVtZXJpYyBsaXRlcmFsLCBlLmcuICIzaW4iIGlzIGJhZC4KICAgICAgICAgaWYgKFVOTElL
RUxZKGlzSWRlbnRTdGFydChtX2N1cnJlbnQpKSkgewotICAgICAgICAgICAgbV9sZXhFcnJvck1l
c3NhZ2UgPSAiQXQgbGVhc3Qgb25lIGRpZ2l0IG11c3Qgb2NjdXIgYWZ0ZXIgYSBkZWNpbWFsIHBv
aW50IjsKKyAgICAgICAgICAgIG1fbGV4RXJyb3JNZXNzYWdlID0gQVNDSUlMaXRlcmFsKCJBdCBs
ZWFzdCBvbmUgZGlnaXQgbXVzdCBvY2N1ciBhZnRlciBhIGRlY2ltYWwgcG9pbnQiKTsKICAgICAg
ICAgICAgIHRva2VuID0gYXRFbmQoKSA/IFVOVEVSTUlOQVRFRF9OVU1FUklDX0xJVEVSQUxfRVJS
T1JUT0sgOiBJTlZBTElEX05VTUVSSUNfTElURVJBTF9FUlJPUlRPSzsKICAgICAgICAgICAgIGdv
dG8gcmV0dXJuRXJyb3I7CiAgICAgICAgIH0KQEAgLTE3NDksNyArMTc0OSw3IEBAIGluTnVtYmVy
QWZ0ZXJEZWNpbWFsUG9pbnQ6CiAgICAgICAgIGdvdG8gcmV0dXJuRXJyb3I7CiAgICAgZGVmYXVs
dDoKICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgbV9sZXhF
cnJvck1lc3NhZ2UgPSAiSW50ZXJuYWwgRXJyb3IiOworICAgICAgICBtX2xleEVycm9yTWVzc2Fn
ZSA9IEFTQ0lJTGl0ZXJhbCgiSW50ZXJuYWwgRXJyb3IiKTsKICAgICAgICAgdG9rZW4gPSBFUlJP
UlRPSzsKICAgICAgICAgZ290byByZXR1cm5FcnJvcjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcHJvZmlsZXIvUHJvZmlsZS5jcHAKaW5kZXggYjVlMDIyNC4uNzdjODM3ZiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGUuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlLmNwcApAQCAtNDMsNyArNDMsNyBA
QCBQcm9maWxlOjpQcm9maWxlKGNvbnN0IFN0cmluZyYgdGl0bGUsIHVuc2lnbmVkIHVpZCkKIHsK
ICAgICAvLyBGSVhNRTogV2hlbiBtdWx0aS10aHJlYWRpbmcgaXMgc3VwcG9ydGVkIHRoaXMgd2ls
bCBiZSBhIHZlY3RvciBhbmQgY2FsbHMKICAgICAvLyBpbnRvIHRoZSBwcm9maWxlciB3aWxsIG5l
ZWQgdG8ga25vdyB3aGljaCB0aHJlYWQgaXQgaXMgZXhlY3V0aW5nIG9uLgotICAgIG1faGVhZCA9
IFByb2ZpbGVOb2RlOjpjcmVhdGUoMCwgQ2FsbElkZW50aWZpZXIoIlRocmVhZF8xIiwgU3RyaW5n
KCksIDAsIDApLCAwLCAwKTsKKyAgICBtX2hlYWQgPSBQcm9maWxlTm9kZTo6Y3JlYXRlKDAsIENh
bGxJZGVudGlmaWVyKEFTQ0lJTGl0ZXJhbCgiVGhyZWFkXzEiKSwgU3RyaW5nKCksIDAsIDApLCAw
LCAwKTsKIH0KIAogUHJvZmlsZTo6flByb2ZpbGUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0FyZ3VtZW50cy5jcHAKaW5kZXggOGY0YTc3OC4uZjM0MDU1YSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHMuY3BwCkBAIC00MzUsNyArNDM1LDcgQEAg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcmd1bWVudHNGdW5jSXRlcmF0b3IoRXhlY1N0
YXRlKiBleGVjKQogICAgIEpTT2JqZWN0KiB0aGlzT2JqID0gZXhlYy0+dGhpc1ZhbHVlKCkudG9U
aGlzKGV4ZWMsIFN0cmljdE1vZGUpLnRvT2JqZWN0KGV4ZWMpOwogICAgIEFyZ3VtZW50cyogYXJn
dW1lbnRzID0ganNEeW5hbWljQ2FzdDxBcmd1bWVudHMqPih0aGlzT2JqKTsKICAgICBpZiAoIWFy
Z3VtZW50cykKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihl
eGVjLCAiQXR0ZW1wdGVkIHRvIHVzZSBBcmd1bWVudHMgaXRlcmF0b3Igb24gbm9uLUFyZ3VtZW50
cyBvYmplY3QiKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJy
b3IoZXhlYywgQVNDSUlMaXRlcmFsKCJBdHRlbXB0ZWQgdG8gdXNlIEFyZ3VtZW50cyBpdGVyYXRv
ciBvbiBub24tQXJndW1lbnRzIG9iamVjdCIpKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShKU0FyZ3VtZW50c0l0ZXJhdG9yOjpjcmVhdGUoZXhlYy0+dm0oKSwgZXhlYy0+Y2FsbGVlKCkt
Pmdsb2JhbE9iamVjdCgpLT5hcmd1bWVudHNJdGVyYXRvclN0cnVjdHVyZSgpLCBhcmd1bWVudHMp
KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQ
cm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5
cGUuY3BwCmluZGV4IGI0MWZlYzUuLmM3OTljYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAKQEAgLTY5NCw3ICs2OTQsNyBAQCBzdGF0
aWMgYm9vbCBwZXJmb3JtU2xvd1NvcnQoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogdGhpc09i
aiwgdW5zaWduZWQgbGVuZ3RoLAogICAgICAgICAgICAgICAgIGlmIChleGVjLT5oYWRFeGNlcHRp
b24oKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgfSBl
bHNlIGlmICghdGhpc09iai0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPmRlbGV0ZVByb3BlcnR5
QnlJbmRleCh0aGlzT2JqLCBleGVjLCBpKSkgewotICAgICAgICAgICAgICAgIHRocm93VHlwZUVy
cm9yKGV4ZWMsICJVbmFibGUgdG8gZGVsZXRlIHByb3BlcnR5LiIpOworICAgICAgICAgICAgICAg
IHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiVW5hYmxlIHRvIGRlbGV0ZSBwcm9w
ZXJ0eS4iKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgfQog
ICAgICAgICAgICAgaWYgKGlPYmopIHsKQEAgLTcwMiw3ICs3MDIsNyBAQCBzdGF0aWMgYm9vbCBw
ZXJmb3JtU2xvd1NvcnQoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogdGhpc09iaiwgdW5zaWdu
ZWQgbGVuZ3RoLAogICAgICAgICAgICAgICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgfSBlbHNlIGlmICgh
dGhpc09iai0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPmRlbGV0ZVByb3BlcnR5QnlJbmRleCh0
aGlzT2JqLCBleGVjLCB0aGVtaW4pKSB7Ci0gICAgICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3Io
ZXhlYywgIlVuYWJsZSB0byBkZWxldGUgcHJvcGVydHkuIik7CisgICAgICAgICAgICAgICAgdGhy
b3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJVbmFibGUgdG8gZGVsZXRlIHByb3BlcnR5
LiIpKTsKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICB9CiAgICAg
ICAgIH0KQEAgLTc2Nyw3ICs3NjcsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFy
cmF5UHJvdG9GdW5jU29ydChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgICAgICBjb250aW51ZTsK
ICAgICAgICAgCiAgICAgICAgIGlmICghdGhpc09iai0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSkt
PmRlbGV0ZVByb3BlcnR5QnlJbmRleCh0aGlzT2JqLCBleGVjLCBpbmRleCkpIHsKLSAgICAgICAg
ICAgIHRocm93VHlwZUVycm9yKGV4ZWMsICJVbmFibGUgdG8gZGVsZXRlIHByb3BlcnR5LiIpOwor
ICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJVbmFibGUgdG8g
ZGVsZXRlIHByb3BlcnR5LiIpKTsKICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNVbmRlZmluZWQoKSk7CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuY3BwCmluZGV4IDZiMzNjOGQuLjU1NTUz
OTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhl
bHBlcnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhl
bHBlcnMuY3BwCkBAIC0xMjIsNyArMTIyLDcgQEAgSlNTdHJpbmcqIGVycm9yRGVzY3JpcHRpb25G
b3JWYWx1ZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdikKICAgICAKIEpTT2JqZWN0KiBjcmVh
dGVFcnJvcihFeGVjU3RhdGUqIGV4ZWMsIEVycm9yRmFjdG9yeSBlcnJvckZhY3RvcnksIEpTVmFs
dWUgdmFsdWUsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKIHsKLSAgICBTdHJpbmcgZXJyb3JNZXNz
YWdlID0gbWFrZVN0cmluZyhlcnJvckRlc2NyaXB0aW9uRm9yVmFsdWUoZXhlYywgdmFsdWUpLT52
YWx1ZShleGVjKSwgIiAiLCBtZXNzYWdlKTsKKyAgICBTdHJpbmcgZXJyb3JNZXNzYWdlID0gbWFr
ZVN0cmluZyhlcnJvckRlc2NyaXB0aW9uRm9yVmFsdWUoZXhlYywgdmFsdWUpLT52YWx1ZShleGVj
KSwgJyAnLCBtZXNzYWdlKTsKICAgICBKU09iamVjdCogZXhjZXB0aW9uID0gZXJyb3JGYWN0b3J5
KGV4ZWMsIGVycm9yTWVzc2FnZSk7CiAgICAgQVNTRVJUKGV4Y2VwdGlvbi0+aXNFcnJvckluc3Rh
bmNlKCkpOwogICAgIHN0YXRpY19jYXN0PEVycm9ySW5zdGFuY2UqPihleGNlcHRpb24pLT5zZXRB
cHBlbmRTb3VyY2VUb01lc3NhZ2UoKTsKQEAgLTEzMSwyNyArMTMxLDI3IEBAIEpTT2JqZWN0KiBj
cmVhdGVFcnJvcihFeGVjU3RhdGUqIGV4ZWMsIEVycm9yRmFjdG9yeSBlcnJvckZhY3RvcnksIEpT
VmFsdWUgdmFsdWUsCiAKIEpTT2JqZWN0KiBjcmVhdGVJbnZhbGlkUGFyYW1ldGVyRXJyb3IoRXhl
Y1N0YXRlKiBleGVjLCBjb25zdCBjaGFyKiBvcCwgSlNWYWx1ZSB2YWx1ZSkKIHsKLSAgICByZXR1
cm4gY3JlYXRlRXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9yLCB2YWx1ZSwgbWFrZVN0cmluZygi
aXMgbm90IGEgdmFsaWQgYXJndW1lbnQgZm9yICciLCBvcCwgIiciKSk7CisgICAgcmV0dXJuIGNy
ZWF0ZUVycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvciwgdmFsdWUsIG1ha2VTdHJpbmcoImlzIG5v
dCBhIHZhbGlkIGFyZ3VtZW50IGZvciAnIiwgb3AsICdcJycpKTsKIH0KIAogSlNPYmplY3QqIGNy
ZWF0ZU5vdEFDb25zdHJ1Y3RvckVycm9yKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSkK
IHsKLSAgICByZXR1cm4gY3JlYXRlRXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9yLCB2YWx1ZSwg
ImlzIG5vdCBhIGNvbnN0cnVjdG9yIik7CisgICAgcmV0dXJuIGNyZWF0ZUVycm9yKGV4ZWMsIGNy
ZWF0ZVR5cGVFcnJvciwgdmFsdWUsIEFTQ0lJTGl0ZXJhbCgiaXMgbm90IGEgY29uc3RydWN0b3Ii
KSk7CiB9CiAKIEpTT2JqZWN0KiBjcmVhdGVOb3RBRnVuY3Rpb25FcnJvcihFeGVjU3RhdGUqIGV4
ZWMsIEpTVmFsdWUgdmFsdWUpCiB7Ci0gICAgcmV0dXJuIGNyZWF0ZUVycm9yKGV4ZWMsIGNyZWF0
ZVR5cGVFcnJvciwgdmFsdWUsICJpcyBub3QgYSBmdW5jdGlvbiIpOworICAgIHJldHVybiBjcmVh
dGVFcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IsIHZhbHVlLCBBU0NJSUxpdGVyYWwoImlzIG5v
dCBhIGZ1bmN0aW9uIikpOwogfQogCiBKU09iamVjdCogY3JlYXRlTm90QW5PYmplY3RFcnJvcihF
eGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUpCiB7Ci0gICAgcmV0dXJuIGNyZWF0ZUVycm9y
KGV4ZWMsIGNyZWF0ZVR5cGVFcnJvciwgdmFsdWUsICJpcyBub3QgYW4gb2JqZWN0Iik7CisgICAg
cmV0dXJuIGNyZWF0ZUVycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvciwgdmFsdWUsIEFTQ0lJTGl0
ZXJhbCgiaXMgbm90IGFuIG9iamVjdCIpKTsKIH0KIAogSlNPYmplY3QqIGNyZWF0ZUVycm9yRm9y
SW52YWxpZEdsb2JhbEFzc2lnbm1lbnQoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBTdHJpbmcmIHBy
b3BlcnR5TmFtZSkKIHsKLSAgICByZXR1cm4gY3JlYXRlUmVmZXJlbmNlRXJyb3IoZXhlYywgbWFr
ZVN0cmluZygiU3RyaWN0IG1vZGUgZm9yYmlkcyBpbXBsaWNpdCBjcmVhdGlvbiBvZiBnbG9iYWwg
cHJvcGVydHkgJyIsIHByb3BlcnR5TmFtZSwgIiciKSk7CisgICAgcmV0dXJuIGNyZWF0ZVJlZmVy
ZW5jZUVycm9yKGV4ZWMsIG1ha2VTdHJpbmcoIlN0cmljdCBtb2RlIGZvcmJpZHMgaW1wbGljaXQg
Y3JlYXRpb24gb2YgZ2xvYmFsIHByb3BlcnR5ICciLCBwcm9wZXJ0eU5hbWUsICdcJycpKTsKIH0K
IAogSlNPYmplY3QqIGNyZWF0ZU91dE9mTWVtb3J5RXJyb3IoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0
aW9uUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9u
UHJvdG90eXBlLmNwcAppbmRleCAzYzI1NmYyLi5kNDQwYTJiNyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNwcApAQCAtODUsNyAr
ODUsNyBAQCBDYWxsVHlwZSBGdW5jdGlvblByb3RvdHlwZTo6Z2V0Q2FsbERhdGEoSlNDZWxsKiwg
Q2FsbERhdGEmIGNhbGxEYXRhKQogc3RhdGljIGlubGluZSB2b2lkIGluc2VydFNlbWljb2xvbklm
TmVlZGVkKFN0cmluZyYgZnVuY3Rpb25Cb2R5LCBib29sIGJvZHlJbmNsdWRlc0JyYWNlcykKIHsK
ICAgICBpZiAoIWJvZHlJbmNsdWRlc0JyYWNlcykKLSAgICAgICAgZnVuY3Rpb25Cb2R5ID0gbWFr
ZVN0cmluZygieyAiLCBmdW5jdGlvbkJvZHksICJ9Iik7CisgICAgICAgIGZ1bmN0aW9uQm9keSA9
IG1ha2VTdHJpbmcoInsgIiwgZnVuY3Rpb25Cb2R5LCAnfScpOwogCiAgICAgQVNTRVJUKGZ1bmN0
aW9uQm9keVswXSA9PSAneycpOwogICAgIEFTU0VSVChmdW5jdGlvbkJvZHlbZnVuY3Rpb25Cb2R5
Lmxlbmd0aCgpIC0gMV0gPT0gJ30nKTsKQEAgLTk0LDcgKzk0LDcgQEAgc3RhdGljIGlubGluZSB2
b2lkIGluc2VydFNlbWljb2xvbklmTmVlZGVkKFN0cmluZyYgZnVuY3Rpb25Cb2R5LCBib29sIGJv
ZHlJbmNsdWQKICAgICAgICAgVUNoYXIgY2ggPSBmdW5jdGlvbkJvZHlbaV07CiAgICAgICAgIGlm
ICghTGV4ZXI8VUNoYXI+Ojppc1doaXRlU3BhY2UoY2gpICYmICFMZXhlcjxVQ2hhcj46OmlzTGlu
ZVRlcm1pbmF0b3IoY2gpKSB7CiAgICAgICAgICAgICBpZiAoY2ggIT0gJzsnICYmIGNoICE9ICd9
JykKLSAgICAgICAgICAgICAgICBmdW5jdGlvbkJvZHkgPSBtYWtlU3RyaW5nKGZ1bmN0aW9uQm9k
eS5zdWJzdHJpbmdTaGFyaW5nSW1wbCgwLCBpICsgMSksICI7IiwgZnVuY3Rpb25Cb2R5LnN1YnN0
cmluZ1NoYXJpbmdJbXBsKGkgKyAxLCBmdW5jdGlvbkJvZHkubGVuZ3RoKCkgLSAoaSArIDEpKSk7
CisgICAgICAgICAgICAgICAgZnVuY3Rpb25Cb2R5ID0gbWFrZVN0cmluZyhmdW5jdGlvbkJvZHku
c3Vic3RyaW5nU2hhcmluZ0ltcGwoMCwgaSArIDEpLCAnOycsIGZ1bmN0aW9uQm9keS5zdWJzdHJp
bmdTaGFyaW5nSW1wbChpICsgMSwgZnVuY3Rpb25Cb2R5Lmxlbmd0aCgpIC0gKGkgKyAxKSkpOwog
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0FycmF5LmNwcAppbmRleCA0ZWQ1OWQwLi4zZjVjNTgwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNwcApAQCAtMTA4LDcgKzEwOCw3IEBAIGJv
b2wgSlNBcnJheTo6ZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRl
KiBleGVjLCBQcm9wZXJ0eU5hbWUKICAgICAgICAgdW5zaWduZWQgbmV3TGVuID0gZGVzY3JpcHRv
ci52YWx1ZSgpLnRvVUludDMyKGV4ZWMpOwogICAgICAgICAvLyBkLiBJZiBuZXdMZW4gaXMgbm90
IGVxdWFsIHRvIFRvTnVtYmVyKCBEZXNjLltbVmFsdWVdXSksIHRocm93IGEgUmFuZ2VFcnJvciBl
eGNlcHRpb24uCiAgICAgICAgIGlmIChuZXdMZW4gIT0gZGVzY3JpcHRvci52YWx1ZSgpLnRvTnVt
YmVyKGV4ZWMpKSB7Ci0gICAgICAgICAgICBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMs
IGNyZWF0ZVJhbmdlRXJyb3IoZXhlYywgIkludmFsaWQgYXJyYXkgbGVuZ3RoIikpOworICAgICAg
ICAgICAgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVSYW5nZUVycm9yKGV4
ZWMsIEFTQ0lJTGl0ZXJhbCgiSW52YWxpZCBhcnJheSBsZW5ndGgiKSkpOwogICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAKQEAgLTUyMyw3ICs1MjMsNyBAQCBKU1ZhbHVlIEpT
QXJyYXk6OnBvcChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgp
OwogICAgIC8vIENhbGwgdGhlIFtbRGVsZXRlXV0gaW50ZXJuYWwgbWV0aG9kIG9mIE8gd2l0aCBh
cmd1bWVudHMgaW5keCBhbmQgdHJ1ZS4KICAgICBpZiAoIWRlbGV0ZVByb3BlcnR5QnlJbmRleCh0
aGlzLCBleGVjLCBpbmRleCkpIHsKLSAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgIlVuYWJs
ZSB0byBkZWxldGUgcHJvcGVydHkuIik7CisgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIEFT
Q0lJTGl0ZXJhbCgiVW5hYmxlIHRvIGRlbGV0ZSBwcm9wZXJ0eS4iKSk7CiAgICAgICAgIHJldHVy
biBqc1VuZGVmaW5lZCgpOwogICAgIH0KICAgICAvLyBDYWxsIHRoZSBbW1B1dF1dIGludGVybmFs
IG1ldGhvZCBvZiBPIHdpdGggYXJndW1lbnRzICJsZW5ndGgiLCBpbmR4LCBhbmQgdHJ1ZS4KQEAg
LTU2Nyw3ICs1NjcsNyBAQCB2b2lkIEpTQXJyYXk6OnB1c2goRXhlY1N0YXRlKiBleGVjLCBKU1Zh
bHVlIHZhbHVlKQogICAgICAgICBpZiAobGVuZ3RoID4gTUFYX0FSUkFZX0lOREVYKSB7CiAgICAg
ICAgICAgICBtZXRob2RUYWJsZShleGVjLT52bSgpKS0+cHV0QnlJbmRleCh0aGlzLCBleGVjLCBs
ZW5ndGgsIHZhbHVlLCB0cnVlKTsKICAgICAgICAgICAgIGlmICghZXhlYy0+aGFkRXhjZXB0aW9u
KCkpCi0gICAgICAgICAgICAgICAgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVh
dGVSYW5nZUVycm9yKGV4ZWMsICJJbnZhbGlkIGFycmF5IGxlbmd0aCIpKTsKKyAgICAgICAgICAg
ICAgICBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZVJhbmdlRXJyb3IoZXhl
YywgQVNDSUlMaXRlcmFsKCJJbnZhbGlkIGFycmF5IGxlbmd0aCIpKSk7CiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgCkBAIC01ODcsNyArNTg3LDcgQEAgdm9pZCBKU0Fy
cmF5OjpwdXNoKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSkKICAgICAgICAgaWYgKGxl
bmd0aCA+IE1BWF9BUlJBWV9JTkRFWCkgewogICAgICAgICAgICAgbWV0aG9kVGFibGUoZXhlYy0+
dm0oKSktPnB1dEJ5SW5kZXgodGhpcywgZXhlYywgbGVuZ3RoLCB2YWx1ZSwgdHJ1ZSk7CiAgICAg
ICAgICAgICBpZiAoIWV4ZWMtPmhhZEV4Y2VwdGlvbigpKQotICAgICAgICAgICAgICAgIGV4ZWMt
PnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlUmFuZ2VFcnJvcihleGVjLCAiSW52YWxp
ZCBhcnJheSBsZW5ndGgiKSk7CisgICAgICAgICAgICAgICAgZXhlYy0+dm0oKS50aHJvd0V4Y2Vw
dGlvbihleGVjLCBjcmVhdGVSYW5nZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiSW52YWxpZCBh
cnJheSBsZW5ndGgiKSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAg
IApAQCAtNjE5LDcgKzYxOSw3IEBAIHZvaWQgSlNBcnJheTo6cHVzaChFeGVjU3RhdGUqIGV4ZWMs
IEpTVmFsdWUgdmFsdWUpCiAgICAgICAgIGlmIChsZW5ndGggPiBNQVhfQVJSQVlfSU5ERVgpIHsK
ICAgICAgICAgICAgIG1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5wdXRCeUluZGV4KHRoaXMsIGV4
ZWMsIGxlbmd0aCwgdmFsdWUsIHRydWUpOwogICAgICAgICAgICAgaWYgKCFleGVjLT5oYWRFeGNl
cHRpb24oKSkKLSAgICAgICAgICAgICAgICBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMs
IGNyZWF0ZVJhbmdlRXJyb3IoZXhlYywgIkludmFsaWQgYXJyYXkgbGVuZ3RoIikpOworICAgICAg
ICAgICAgICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlUmFuZ2VFcnJv
cihleGVjLCBBU0NJSUxpdGVyYWwoIkludmFsaWQgYXJyYXkgbGVuZ3RoIikpKTsKICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICAKQEAgLTY1NCw3ICs2NTQsNyBAQCB2b2lk
IEpTQXJyYXk6OnB1c2goRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVlKQogICAgICAgICAg
ICAgbWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPnB1dEJ5SW5kZXgodGhpcywgZXhlYywgc3RvcmFn
ZS0+bGVuZ3RoKCksIHZhbHVlLCB0cnVlKTsKICAgICAgICAgICAgIC8vIFBlciBFUzUuMSAxNS40
LjQuNyBzdGVwIDYgJiAxNS40LjUuMSBzdGVwIDMuZC4KICAgICAgICAgICAgIGlmICghZXhlYy0+
aGFkRXhjZXB0aW9uKCkpCi0gICAgICAgICAgICAgICAgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlv
bihleGVjLCBjcmVhdGVSYW5nZUVycm9yKGV4ZWMsICJJbnZhbGlkIGFycmF5IGxlbmd0aCIpKTsK
KyAgICAgICAgICAgICAgICBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZVJh
bmdlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJJbnZhbGlkIGFycmF5IGxlbmd0aCIpKSk7CiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlckNvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJDb25zdHJ1Y3Rvci5jcHAKaW5kZXgg
ZGMzMGU3MS4uZjU1NDcxZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNBcnJheUJ1ZmZlckNvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0FycmF5QnVmZmVyQ29uc3RydWN0b3IuY3BwCkBAIC00OSw3ICs0OSw3IEBA
IEpTQXJyYXlCdWZmZXJDb25zdHJ1Y3Rvcjo6SlNBcnJheUJ1ZmZlckNvbnN0cnVjdG9yKFZNJiB2
bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAKIHZvaWQgSlNBcnJheUJ1ZmZlckNvbnN0cnVjdG9y
OjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTQXJyYXlCdWZmZXJQcm90b3R5cGUqIHByb3RvdHlw
ZSkKIHsKLSAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSwgIkFycmF5QnVmZmVyIik7CisgICAg
QmFzZTo6ZmluaXNoQ3JlYXRpb24odm0sIEFTQ0lJTGl0ZXJhbCgiQXJyYXlCdWZmZXIiKSk7CiAg
ICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3Rv
dHlwZSwgcHJvdG90eXBlLCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSk7CiAgICAg
cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwg
anNOdW1iZXIoMSksIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclByb3RvdHlw
ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyUHJvdG90
eXBlLmNwcAppbmRleCA1YjUyZmM1Li44ZjNkNjY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyUHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyUHJvdG90eXBlLmNwcApAQCAtNDEs
MTAgKzQxLDEwIEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5QnVm
ZmVyUHJvdG9GdW5jU2xpY2UoRXhlY1N0YXRlKiBleGVjKQogICAgIAogICAgIEpTQXJyYXlCdWZm
ZXIqIHRoaXNPYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTQXJyYXlCdWZmZXIqPihleGVjLT50aGlz
VmFsdWUoKSk7CiAgICAgaWYgKCF0aGlzT2JqZWN0KQotICAgICAgICByZXR1cm4gdGhyb3dWTUVy
cm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCAiUmVjZWl2ZXIgb2Ygc2xpY2UgbXVzdCBi
ZSBhbiBhcnJheSBidWZmZXIuIikpOworICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMs
IGNyZWF0ZVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlJlY2VpdmVyIG9mIHNsaWNlIG11
c3QgYmUgYW4gYXJyYXkgYnVmZmVyLiIpKSk7CiAgICAgCiAgICAgaWYgKCFleGVjLT5hcmd1bWVu
dENvdW50KCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlVHlwZUVy
cm9yKGV4ZWMsICJTbGljZSByZXF1aXJlcyBhdCBsZWFzdCBvbmUgYXJndW1lbnQuIikpOworICAg
ICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCBBU0NJ
SUxpdGVyYWwoIlNsaWNlIHJlcXVpcmVzIGF0IGxlYXN0IG9uZSBhcmd1bWVudC4iKSkpOwogICAg
IAogICAgIGludDMyX3QgYmVnaW4gPSBleGVjLT5hcmd1bWVudCgwKS50b0ludDMyKGV4ZWMpOwog
ICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTRGF0YVZpZXcuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNEYXRhVmlldy5jcHAKaW5kZXggYjc3ZDQ4Zi4uNTEzZDRjNiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlldy5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlldy5jcHAKQEAgLTQ4LDExICs0OCwxMSBA
QCBKU0RhdGFWaWV3KiBKU0RhdGFWaWV3OjpjcmVhdGUoCiB7CiAgICAgUmVmUHRyPEFycmF5QnVm
ZmVyPiBidWZmZXIgPSBwYXNzZWRCdWZmZXI7CiAgICAgaWYgKCFBcnJheUJ1ZmZlclZpZXc6OnZl
cmlmeVN1YlJhbmdlTGVuZ3RoKGJ1ZmZlciwgYnl0ZU9mZnNldCwgYnl0ZUxlbmd0aCwgc2l6ZW9m
KHVpbnQ4X3QpKSkgewotICAgICAgICB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlUmFuZ2VFcnJv
cihleGVjLCAiTGVuZ3RoIG91dCBvZiByYW5nZSBvZiBidWZmZXIiKSk7CisgICAgICAgIHRocm93
Vk1FcnJvcihleGVjLCBjcmVhdGVSYW5nZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiTGVuZ3Ro
IG91dCBvZiByYW5nZSBvZiBidWZmZXIiKSkpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAg
ICB9CiAgICAgaWYgKCFBcnJheUJ1ZmZlclZpZXc6OnZlcmlmeUJ5dGVPZmZzZXRBbGlnbm1lbnQo
Ynl0ZU9mZnNldCwgc2l6ZW9mKHVpbnQ4X3QpKSkgewotICAgICAgICBleGVjLT52bSgpLnRocm93
RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZVJhbmdlRXJyb3IoZXhlYywgIkJ5dGUgb2Zmc2V0IGlzIG5v
dCBhbGlnbmVkIikpOworICAgICAgICBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNy
ZWF0ZVJhbmdlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJCeXRlIG9mZnNldCBpcyBub3QgYWxp
Z25lZCIpKSk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KICAgICBWTSYgdm0gPSBl
eGVjLT52bSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNE
YXRhVmlld1Byb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Rh
dGFWaWV3UHJvdG90eXBlLmNwcAppbmRleCAyZTczNTMyLi4xYWMxOTIzIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3UHJvdG90eXBlLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3UHJvdG90eXBlLmNwcApA
QCAtMTE5LDEwICsxMTksMTAgQEAgRW5jb2RlZEpTVmFsdWUgZ2V0RGF0YShFeGVjU3RhdGUqIGV4
ZWMpCiB7CiAgICAgSlNEYXRhVmlldyogZGF0YVZpZXcgPSBqc0R5bmFtaWNDYXN0PEpTRGF0YVZp
ZXcqPihleGVjLT50aGlzVmFsdWUoKSk7CiAgICAgaWYgKCFkYXRhVmlldykKLSAgICAgICAgcmV0
dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgIlJlY2VpdmVyIG9m
IERhdGFWaWV3IG1ldGhvZCBtdXN0IGJlIGEgRGF0YVZpZXciKSk7CisgICAgICAgIHJldHVybiB0
aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiUmVj
ZWl2ZXIgb2YgRGF0YVZpZXcgbWV0aG9kIG11c3QgYmUgYSBEYXRhVmlldyIpKSk7CiAgICAgCiAg
ICAgaWYgKCFleGVjLT5hcmd1bWVudENvdW50KCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJy
b3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsICJOZWVkIGF0IGxlYXN0IG9uZSBhcmd1bWVu
dCAodGhlIGJ5dGVPZmZzZXQpIikpOworICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMs
IGNyZWF0ZVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIk5lZWQgYXQgbGVhc3Qgb25lIGFy
Z3VtZW50ICh0aGUgYnl0ZU9mZnNldCkiKSkpOwogICAgIAogICAgIHVuc2lnbmVkIGJ5dGVPZmZz
ZXQgPSBleGVjLT51bmNoZWNrZWRBcmd1bWVudCgwKS50b1VJbnQzMihleGVjKTsKICAgICBpZiAo
ZXhlYy0+aGFkRXhjZXB0aW9uKCkpCkBAIC0xMzgsNyArMTM4LDcgQEAgRW5jb2RlZEpTVmFsdWUg
Z2V0RGF0YShFeGVjU3RhdGUqIGV4ZWMpCiAgICAgCiAgICAgdW5zaWduZWQgYnl0ZUxlbmd0aCA9
IGRhdGFWaWV3LT5sZW5ndGgoKTsKICAgICBpZiAoZWxlbWVudFNpemUgPiBieXRlTGVuZ3RoIHx8
IGJ5dGVPZmZzZXQgPiBieXRlTGVuZ3RoIC0gZWxlbWVudFNpemUpCi0gICAgICAgIHJldHVybiB0
aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlUmFuZ2VFcnJvcihleGVjLCAiT3V0IG9mIGJvdW5kcyBh
Y2Nlc3MiKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlUmFuZ2VF
cnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIk91dCBvZiBib3VuZHMgYWNjZXNzIikpKTsKIAogICAg
IGNvbnN0IHVuc2lnbmVkIGRhdGFTaXplID0gc2l6ZW9mKHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUp
OwogICAgIHVuaW9uIHsKQEAgLTE2NCwxMCArMTY0LDEwIEBAIEVuY29kZWRKU1ZhbHVlIHNldERh
dGEoRXhlY1N0YXRlKiBleGVjKQogewogICAgIEpTRGF0YVZpZXcqIGRhdGFWaWV3ID0ganNEeW5h
bWljQ2FzdDxKU0RhdGFWaWV3Kj4oZXhlYy0+dGhpc1ZhbHVlKCkpOwogICAgIGlmICghZGF0YVZp
ZXcpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4
ZWMsICJSZWNlaXZlciBvZiBEYXRhVmlldyBtZXRob2QgbXVzdCBiZSBhIERhdGFWaWV3IikpOwor
ICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCBB
U0NJSUxpdGVyYWwoIlJlY2VpdmVyIG9mIERhdGFWaWV3IG1ldGhvZCBtdXN0IGJlIGEgRGF0YVZp
ZXciKSkpOwogICAgIAogICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50KCkgPCAyKQotICAgICAg
ICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCAiTmVlZCBh
dCBsZWFzdCB0d28gYXJndW1lbnQgKHRoZSBieXRlT2Zmc2V0IGFuZCB2YWx1ZSkiKSk7CisgICAg
ICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsIEFTQ0lJ
TGl0ZXJhbCgiTmVlZCBhdCBsZWFzdCB0d28gYXJndW1lbnQgKHRoZSBieXRlT2Zmc2V0IGFuZCB2
YWx1ZSkiKSkpOwogICAgIAogICAgIHVuc2lnbmVkIGJ5dGVPZmZzZXQgPSBleGVjLT51bmNoZWNr
ZWRBcmd1bWVudCgwKS50b1VJbnQzMihleGVjKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9u
KCkpCkBAIC0xOTMsNyArMTkzLDcgQEAgRW5jb2RlZEpTVmFsdWUgc2V0RGF0YShFeGVjU3RhdGUq
IGV4ZWMpCiAgICAgCiAgICAgdW5zaWduZWQgYnl0ZUxlbmd0aCA9IGRhdGFWaWV3LT5sZW5ndGgo
KTsKICAgICBpZiAoZWxlbWVudFNpemUgPiBieXRlTGVuZ3RoIHx8IGJ5dGVPZmZzZXQgPiBieXRl
TGVuZ3RoIC0gZWxlbWVudFNpemUpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywg
Y3JlYXRlUmFuZ2VFcnJvcihleGVjLCAiT3V0IG9mIGJvdW5kcyBhY2Nlc3MiKSk7CisgICAgICAg
IHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlUmFuZ2VFcnJvcihleGVjLCBBU0NJSUxp
dGVyYWwoIk91dCBvZiBib3VuZHMgYWNjZXNzIikpKTsKIAogICAgIHVpbnQ4X3QqIGRhdGFQdHIg
PSBzdGF0aWNfY2FzdDx1aW50OF90Kj4oZGF0YVZpZXctPnZlY3RvcigpKSArIGJ5dGVPZmZzZXQ7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2Jq
ZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNw
cAppbmRleCA1ZTcwNDdkLi40NzgzYjQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCkBAIC00MzgsMTYgKzQzOCwxNiBAQCB2b2lkIEpT
R2xvYmFsT2JqZWN0OjpyZXNldChKU1ZhbHVlIHByb3RvdHlwZSkKICAgICBwdXREaXJlY3RXaXRo
b3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+TWF0aCwgTWF0aE9iamVjdDo6Y3Jl
YXRlKHZtLCB0aGlzLCBNYXRoT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fb2Jq
ZWN0UHJvdG90eXBlLmdldCgpKSksIERvbnRFbnVtKTsKICAgICAKICAgICBzdGQ6OmFycmF5PElu
dGVybmFsRnVuY3Rpb24qLCBOVU1CRVJfT0ZfVFlQRURfQVJSQVlfVFlQRVM+IHR5cGVkQXJyYXlD
b25zdHJ1Y3RvcnM7Ci0gICAgdHlwZWRBcnJheUNvbnN0cnVjdG9yc1t0b0luZGV4KFR5cGVJbnQ4
KV0gPSBKU0ludDhBcnJheUNvbnN0cnVjdG9yOjpjcmVhdGUodm0sIEpTSW50OEFycmF5Q29uc3Ry
dWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9mdW5jdGlvblByb3RvdHlwZS5nZXQo
KSksIG1fdHlwZWRBcnJheXNbdG9JbmRleChUeXBlSW50OCldLnByb3RvdHlwZS5nZXQoKSwgIklu
dDhBcnJheSIpOwotICAgIHR5cGVkQXJyYXlDb25zdHJ1Y3RvcnNbdG9JbmRleChUeXBlSW50MTYp
XSA9IEpTSW50MTZBcnJheUNvbnN0cnVjdG9yOjpjcmVhdGUodm0sIEpTSW50MTZBcnJheUNvbnN0
cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0
KCkpLCBtX3R5cGVkQXJyYXlzW3RvSW5kZXgoVHlwZUludDE2KV0ucHJvdG90eXBlLmdldCgpLCAi
SW50MTZBcnJheSIpOwotICAgIHR5cGVkQXJyYXlDb25zdHJ1Y3RvcnNbdG9JbmRleChUeXBlSW50
MzIpXSA9IEpTSW50MzJBcnJheUNvbnN0cnVjdG9yOjpjcmVhdGUodm0sIEpTSW50MzJBcnJheUNv
bnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fZnVuY3Rpb25Qcm90b3R5cGUu
Z2V0KCkpLCBtX3R5cGVkQXJyYXlzW3RvSW5kZXgoVHlwZUludDMyKV0ucHJvdG90eXBlLmdldCgp
LCAiSW50MzJBcnJheSIpOwotICAgIHR5cGVkQXJyYXlDb25zdHJ1Y3RvcnNbdG9JbmRleChUeXBl
VWludDgpXSA9IEpTVWludDhBcnJheUNvbnN0cnVjdG9yOjpjcmVhdGUodm0sIEpTVWludDhBcnJh
eUNvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fZnVuY3Rpb25Qcm90b3R5
cGUuZ2V0KCkpLCBtX3R5cGVkQXJyYXlzW3RvSW5kZXgoVHlwZVVpbnQ4KV0ucHJvdG90eXBlLmdl
dCgpLCAiVWludDhBcnJheSIpOwotICAgIHR5cGVkQXJyYXlDb25zdHJ1Y3RvcnNbdG9JbmRleChU
eXBlVWludDhDbGFtcGVkKV0gPSBKU1VpbnQ4Q2xhbXBlZEFycmF5Q29uc3RydWN0b3I6OmNyZWF0
ZSh2bSwgSlNVaW50OENsYW1wZWRBcnJheUNvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUodm0s
IHRoaXMsIG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpLCBtX3R5cGVkQXJyYXlzW3RvSW5kZXgo
VHlwZVVpbnQ4Q2xhbXBlZCldLnByb3RvdHlwZS5nZXQoKSwgIlVpbnQ4Q2xhbXBlZEFycmF5Iik7
Ci0gICAgdHlwZWRBcnJheUNvbnN0cnVjdG9yc1t0b0luZGV4KFR5cGVVaW50MTYpXSA9IEpTVWlu
dDE2QXJyYXlDb25zdHJ1Y3Rvcjo6Y3JlYXRlKHZtLCBKU1VpbnQxNkFycmF5Q29uc3RydWN0b3I6
OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9mdW5jdGlvblByb3RvdHlwZS5nZXQoKSksIG1f
dHlwZWRBcnJheXNbdG9JbmRleChUeXBlVWludDE2KV0ucHJvdG90eXBlLmdldCgpLCAiVWludDE2
QXJyYXkiKTsKLSAgICB0eXBlZEFycmF5Q29uc3RydWN0b3JzW3RvSW5kZXgoVHlwZVVpbnQzMild
ID0gSlNVaW50MzJBcnJheUNvbnN0cnVjdG9yOjpjcmVhdGUodm0sIEpTVWludDMyQXJyYXlDb25z
dHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdl
dCgpKSwgbV90eXBlZEFycmF5c1t0b0luZGV4KFR5cGVVaW50MzIpXS5wcm90b3R5cGUuZ2V0KCks
ICJVaW50MzJBcnJheSIpOwotICAgIHR5cGVkQXJyYXlDb25zdHJ1Y3RvcnNbdG9JbmRleChUeXBl
RmxvYXQzMildID0gSlNGbG9hdDMyQXJyYXlDb25zdHJ1Y3Rvcjo6Y3JlYXRlKHZtLCBKU0Zsb2F0
MzJBcnJheUNvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fZnVuY3Rpb25Q
cm90b3R5cGUuZ2V0KCkpLCBtX3R5cGVkQXJyYXlzW3RvSW5kZXgoVHlwZUZsb2F0MzIpXS5wcm90
b3R5cGUuZ2V0KCksICJGbG9hdDMyQXJyYXkiKTsKLSAgICB0eXBlZEFycmF5Q29uc3RydWN0b3Jz
W3RvSW5kZXgoVHlwZUZsb2F0NjQpXSA9IEpTRmxvYXQ2NEFycmF5Q29uc3RydWN0b3I6OmNyZWF0
ZSh2bSwgSlNGbG9hdDY0QXJyYXlDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlz
LCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgpKSwgbV90eXBlZEFycmF5c1t0b0luZGV4KFR5cGVG
bG9hdDY0KV0ucHJvdG90eXBlLmdldCgpLCAiRmxvYXQ2NEFycmF5Iik7Ci0gICAgdHlwZWRBcnJh
eUNvbnN0cnVjdG9yc1t0b0luZGV4KFR5cGVEYXRhVmlldyldID0gSlNEYXRhVmlld0NvbnN0cnVj
dG9yOjpjcmVhdGUodm0sIEpTRGF0YVZpZXdDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKHZt
LCB0aGlzLCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgpKSwgbV90eXBlZEFycmF5c1t0b0luZGV4
KFR5cGVEYXRhVmlldyldLnByb3RvdHlwZS5nZXQoKSwgIkRhdGFWaWV3Iik7CisgICAgdHlwZWRB
cnJheUNvbnN0cnVjdG9yc1t0b0luZGV4KFR5cGVJbnQ4KV0gPSBKU0ludDhBcnJheUNvbnN0cnVj
dG9yOjpjcmVhdGUodm0sIEpTSW50OEFycmF5Q29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSh2
bSwgdGhpcywgbV9mdW5jdGlvblByb3RvdHlwZS5nZXQoKSksIG1fdHlwZWRBcnJheXNbdG9JbmRl
eChUeXBlSW50OCldLnByb3RvdHlwZS5nZXQoKSwgQVNDSUlMaXRlcmFsKCJJbnQ4QXJyYXkiKSk7
CisgICAgdHlwZWRBcnJheUNvbnN0cnVjdG9yc1t0b0luZGV4KFR5cGVJbnQxNildID0gSlNJbnQx
NkFycmF5Q29uc3RydWN0b3I6OmNyZWF0ZSh2bSwgSlNJbnQxNkFycmF5Q29uc3RydWN0b3I6OmNy
ZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9mdW5jdGlvblByb3RvdHlwZS5nZXQoKSksIG1fdHlw
ZWRBcnJheXNbdG9JbmRleChUeXBlSW50MTYpXS5wcm90b3R5cGUuZ2V0KCksIEFTQ0lJTGl0ZXJh
bCgiSW50MTZBcnJheSIpKTsKKyAgICB0eXBlZEFycmF5Q29uc3RydWN0b3JzW3RvSW5kZXgoVHlw
ZUludDMyKV0gPSBKU0ludDMyQXJyYXlDb25zdHJ1Y3Rvcjo6Y3JlYXRlKHZtLCBKU0ludDMyQXJy
YXlDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX2Z1bmN0aW9uUHJvdG90
eXBlLmdldCgpKSwgbV90eXBlZEFycmF5c1t0b0luZGV4KFR5cGVJbnQzMildLnByb3RvdHlwZS5n
ZXQoKSwgQVNDSUlMaXRlcmFsKCJJbnQzMkFycmF5IikpOworICAgIHR5cGVkQXJyYXlDb25zdHJ1
Y3RvcnNbdG9JbmRleChUeXBlVWludDgpXSA9IEpTVWludDhBcnJheUNvbnN0cnVjdG9yOjpjcmVh
dGUodm0sIEpTVWludDhBcnJheUNvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMs
IG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpLCBtX3R5cGVkQXJyYXlzW3RvSW5kZXgoVHlwZVVp
bnQ4KV0ucHJvdG90eXBlLmdldCgpLCBBU0NJSUxpdGVyYWwoIlVpbnQ4QXJyYXkiKSk7CisgICAg
dHlwZWRBcnJheUNvbnN0cnVjdG9yc1t0b0luZGV4KFR5cGVVaW50OENsYW1wZWQpXSA9IEpTVWlu
dDhDbGFtcGVkQXJyYXlDb25zdHJ1Y3Rvcjo6Y3JlYXRlKHZtLCBKU1VpbnQ4Q2xhbXBlZEFycmF5
Q29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9mdW5jdGlvblByb3RvdHlw
ZS5nZXQoKSksIG1fdHlwZWRBcnJheXNbdG9JbmRleChUeXBlVWludDhDbGFtcGVkKV0ucHJvdG90
eXBlLmdldCgpLCBBU0NJSUxpdGVyYWwoIlVpbnQ4Q2xhbXBlZEFycmF5IikpOworICAgIHR5cGVk
QXJyYXlDb25zdHJ1Y3RvcnNbdG9JbmRleChUeXBlVWludDE2KV0gPSBKU1VpbnQxNkFycmF5Q29u
c3RydWN0b3I6OmNyZWF0ZSh2bSwgSlNVaW50MTZBcnJheUNvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1
Y3R1cmUodm0sIHRoaXMsIG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpLCBtX3R5cGVkQXJyYXlz
W3RvSW5kZXgoVHlwZVVpbnQxNildLnByb3RvdHlwZS5nZXQoKSwgQVNDSUlMaXRlcmFsKCJVaW50
MTZBcnJheSIpKTsKKyAgICB0eXBlZEFycmF5Q29uc3RydWN0b3JzW3RvSW5kZXgoVHlwZVVpbnQz
MildID0gSlNVaW50MzJBcnJheUNvbnN0cnVjdG9yOjpjcmVhdGUodm0sIEpTVWludDMyQXJyYXlD
b25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX2Z1bmN0aW9uUHJvdG90eXBl
LmdldCgpKSwgbV90eXBlZEFycmF5c1t0b0luZGV4KFR5cGVVaW50MzIpXS5wcm90b3R5cGUuZ2V0
KCksIEFTQ0lJTGl0ZXJhbCgiVWludDMyQXJyYXkiKSk7CisgICAgdHlwZWRBcnJheUNvbnN0cnVj
dG9yc1t0b0luZGV4KFR5cGVGbG9hdDMyKV0gPSBKU0Zsb2F0MzJBcnJheUNvbnN0cnVjdG9yOjpj
cmVhdGUodm0sIEpTRmxvYXQzMkFycmF5Q29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSh2bSwg
dGhpcywgbV9mdW5jdGlvblByb3RvdHlwZS5nZXQoKSksIG1fdHlwZWRBcnJheXNbdG9JbmRleChU
eXBlRmxvYXQzMildLnByb3RvdHlwZS5nZXQoKSwgQVNDSUlMaXRlcmFsKCJGbG9hdDMyQXJyYXki
KSk7CisgICAgdHlwZWRBcnJheUNvbnN0cnVjdG9yc1t0b0luZGV4KFR5cGVGbG9hdDY0KV0gPSBK
U0Zsb2F0NjRBcnJheUNvbnN0cnVjdG9yOjpjcmVhdGUodm0sIEpTRmxvYXQ2NEFycmF5Q29uc3Ry
dWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9mdW5jdGlvblByb3RvdHlwZS5nZXQo
KSksIG1fdHlwZWRBcnJheXNbdG9JbmRleChUeXBlRmxvYXQ2NCldLnByb3RvdHlwZS5nZXQoKSwg
QVNDSUlMaXRlcmFsKCJGbG9hdDY0QXJyYXkiKSk7CisgICAgdHlwZWRBcnJheUNvbnN0cnVjdG9y
c1t0b0luZGV4KFR5cGVEYXRhVmlldyldID0gSlNEYXRhVmlld0NvbnN0cnVjdG9yOjpjcmVhdGUo
dm0sIEpTRGF0YVZpZXdDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX2Z1
bmN0aW9uUHJvdG90eXBlLmdldCgpKSwgbV90eXBlZEFycmF5c1t0b0luZGV4KFR5cGVEYXRhVmll
dyldLnByb3RvdHlwZS5nZXQoKSwgQVNDSUlMaXRlcmFsKCJEYXRhVmlldyIpKTsKIAogICAgIGZv
ciAodW5zaWduZWQgdHlwZWRBcnJheUluZGV4ID0gTlVNQkVSX09GX1RZUEVEX0FSUkFZX1RZUEVT
OyB0eXBlZEFycmF5SW5kZXgtLTspIHsKICAgICAgICAgbV90eXBlZEFycmF5c1t0eXBlZEFycmF5
SW5kZXhdLnByb3RvdHlwZS0+cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3Bl
cnR5TmFtZXMtPmNvbnN0cnVjdG9yLCB0eXBlZEFycmF5Q29uc3RydWN0b3JzW3R5cGVkQXJyYXlJ
bmRleF0sIERvbnRFbnVtKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNwcAppbmRleCA2MDRkZTJiLi42NzBjZjJh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVj
dEZ1bmN0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9i
YWxPYmplY3RGdW5jdGlvbnMuY3BwCkBAIC04MDIsNyArODAyLDcgQEAgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5jUHJvdG9TZXR0ZXIoRXhlY1N0YXRlKiBleGVjKQogICAg
ICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCBTdHJp
Y3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpKTsKIAogICAgIGlmICghdGhpc09iamVj
dC0+c2V0UHJvdG90eXBlV2l0aEN5Y2xlQ2hlY2soZXhlYywgdmFsdWUpKQotICAgICAgICBleGVj
LT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZUVycm9yKGV4ZWMsICJjeWNsaWMgX19w
cm90b19fIHZhbHVlIikpOworICAgICAgICBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMs
IGNyZWF0ZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiY3ljbGljIF9fcHJvdG9fXyB2YWx1ZSIp
KSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KICAgICAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZUNvbnN0
cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZUNvbnN0
cnVjdG9yLmNwcAppbmRleCBkYjY5ZmQ0Li4yNjFhODg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlQ29uc3RydWN0b3IuY3BwCkBAIC04NSw3
ICs4NSw3IEBAIEpTUHJvbWlzZUNvbnN0cnVjdG9yOjpKU1Byb21pc2VDb25zdHJ1Y3RvcihWTSYg
dm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQogCiB2b2lkIEpTUHJvbWlzZUNvbnN0cnVjdG9yOjpm
aW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTUHJvbWlzZVByb3RvdHlwZSogcHJvbWlzZVByb3RvdHlw
ZSkKIHsKLSAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSwgIlByb21pc2UiKTsKKyAgICBCYXNl
OjpmaW5pc2hDcmVhdGlvbih2bSwgQVNDSUlMaXRlcmFsKCJQcm9taXNlIikpOwogICAgIHB1dERp
cmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIHBy
b21pc2VQcm90b3R5cGUsIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KTsKICAgICBw
dXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBq
c051bWJlcigxKSwgUmVhZE9ubHkgfCBEb250RW51bSB8IERvbnREZWxldGUpOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTGl0ZXJhbFBhcnNlci5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9MaXRlcmFsUGFyc2VyLmNwcAppbmRleCA5YjAx
OTUxLi5mNmY1ZmUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9M
aXRlcmFsUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9MaXRl
cmFsUGFyc2VyLmNwcApAQCAtMjgxLDcgKzI4MSw3IEBAIHRlbXBsYXRlIDxQYXJzZXJNb2RlIG1v
ZGU+IFRva2VuVHlwZSBMaXRlcmFsUGFyc2VyPENoYXJUeXBlPjo6TGV4ZXI6OmxleChMaXRlcmFs
CiAgICAgICAgICAgICByZXR1cm4gbGV4U3RyaW5nPG1vZGUsICdcJyc+KHRva2VuKTsKICAgICAg
ICAgfQogICAgIH0KLSAgICBtX2xleEVycm9yTWVzc2FnZSA9IFN0cmluZzo6Zm9ybWF0KCJVbnJl
Y29nbml6ZWQgdG9rZW4gJyVjJyIsICptX3B0cikuaW1wbCgpOworICAgIG1fbGV4RXJyb3JNZXNz
YWdlID0gU3RyaW5nOjpmb3JtYXQoIlVucmVjb2duaXplZCB0b2tlbiAnJWMnIiwgKm1fcHRyKTsK
ICAgICByZXR1cm4gVG9rRXJyb3I7CiB9CiAKQEAgLTQwNiw3ICs0MDYsNyBAQCB0ZW1wbGF0ZSA8
UGFyc2VyTW9kZSBtb2RlLCBjaGFyIHRlcm1pbmF0b3I+IEFMV0FZU19JTkxJTkUgVG9rZW5UeXBl
IExpdGVyYWxQYXJzZQogICAgICAgICAgICAgICAgICAgICB9IC8vIHVOTk5OID09IDUgY2hhcmFj
dGVycwogICAgICAgICAgICAgICAgICAgICBmb3IgKGludCBpID0gMTsgaSA8IDU7IGkrKykgewog
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFpc0FTQ0lJSGV4RGlnaXQobV9wdHJbaV0pKSB7
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9sZXhFcnJvck1lc3NhZ2UgPSBTdHJpbmc6
OmZvcm1hdCgiXCJcXCVzXCIgaXMgbm90IGEgdmFsaWQgdW5pY29kZSBlc2NhcGUiLCBTdHJpbmco
bV9wdHIsIDUpLmFzY2lpKCkuZGF0YSgpKS5pbXBsKCk7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbV9sZXhFcnJvck1lc3NhZ2UgPSBTdHJpbmc6OmZvcm1hdCgiXCJcXCVzXCIgaXMgbm90
IGEgdmFsaWQgdW5pY29kZSBlc2NhcGUiLCBTdHJpbmcobV9wdHIsIDUpLmFzY2lpKCkuZGF0YSgp
KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gVG9rRXJyb3I7CiAgICAgICAg
ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIH0KQEAgLTQyMCw3ICs0MjAs
NyBAQCB0ZW1wbGF0ZSA8UGFyc2VyTW9kZSBtb2RlLCBjaGFyIHRlcm1pbmF0b3I+IEFMV0FZU19J
TkxJTkUgVG9rZW5UeXBlIExpdGVyYWxQYXJzZQogICAgICAgICAgICAgICAgICAgICAgICAgbV9w
dHIrKzsKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICAgICAgICAgIG1fbGV4RXJyb3JNZXNzYWdlID0gU3RyaW5nOjpmb3Jt
YXQoIkludmFsaWQgZXNjYXBlIGNoYXJhY3RlciAlYyIsICptX3B0cikuaW1wbCgpOworICAgICAg
ICAgICAgICAgICAgICBtX2xleEVycm9yTWVzc2FnZSA9IFN0cmluZzo6Zm9ybWF0KCJJbnZhbGlk
IGVzY2FwZSBjaGFyYWN0ZXIgJWMiLCAqbV9wdHIpOwogICAgICAgICAgICAgICAgICAgICByZXR1
cm4gVG9rRXJyb3I7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTcxMSw5ICs3MTEsOSBA
QCBKU1ZhbHVlIExpdGVyYWxQYXJzZXI8Q2hhclR5cGU+OjpwYXJzZShQYXJzZXJTdGF0ZSBpbml0
aWFsU3RhdGUpCiAgICAgICAgICAgICAgICAgICAgIGNhc2UgVG9rSWRlbnRpZmllcjogewogICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgTGl0ZXJhbFBhcnNlclRva2VuPENoYXJUeXBlPiYg
dG9rZW4gPSBtX2xleGVyLmN1cnJlbnRUb2tlbigpOwogICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKHRva2VuLnN0cmluZ0lzOEJpdCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX3Bh
cnNlRXJyb3JNZXNzYWdlID0gU3RyaW5nOjpmb3JtYXQoIlVuZXhwZWN0ZWQgaWRlbnRpZmllciBc
IiVzXCIiLCBTdHJpbmcobV9sZXhlci5jdXJyZW50VG9rZW4oKS5zdHJpbmdUb2tlbjgsIG1fbGV4
ZXIuY3VycmVudFRva2VuKCkuc3RyaW5nTGVuZ3RoKS5hc2NpaSgpLmRhdGEoKSkuaW1wbCgpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fcGFyc2VFcnJvck1lc3NhZ2UgPSBTdHJpbmc6
OmZvcm1hdCgiVW5leHBlY3RlZCBpZGVudGlmaWVyIFwiJXNcIiIsIFN0cmluZyhtX2xleGVyLmN1
cnJlbnRUb2tlbigpLnN0cmluZ1Rva2VuOCwgbV9sZXhlci5jdXJyZW50VG9rZW4oKS5zdHJpbmdM
ZW5ndGgpLmFzY2lpKCkuZGF0YSgpKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdlID0gU3RyaW5nOjpm
b3JtYXQoIlVuZXhwZWN0ZWQgaWRlbnRpZmllciBcIiVzXCIiLCBTdHJpbmcobV9sZXhlci5jdXJy
ZW50VG9rZW4oKS5zdHJpbmdUb2tlbjE2LCBtX2xleGVyLmN1cnJlbnRUb2tlbigpLnN0cmluZ0xl
bmd0aCkuYXNjaWkoKS5kYXRhKCkpLmltcGwoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBtX3BhcnNlRXJyb3JNZXNzYWdlID0gU3RyaW5nOjpmb3JtYXQoIlVuZXhwZWN0ZWQgaWRlbnRp
ZmllciBcIiVzXCIiLCBTdHJpbmcobV9sZXhlci5jdXJyZW50VG9rZW4oKS5zdHJpbmdUb2tlbjE2
LCBtX2xleGVyLmN1cnJlbnRUb2tlbigpLnN0cmluZ0xlbmd0aCkuYXNjaWkoKS5kYXRhKCkpOwog
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKICAgICAgICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICAgICAgICAgICBjYXNlIFRva0NvbG9uOgpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTGl0ZXJhbFBhcnNlci5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvTGl0ZXJhbFBhcnNlci5oCmluZGV4IGYwNWYwMzIuLmZjYjc5
ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xpdGVyYWxQYXJz
ZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9MaXRlcmFsUGFyc2VyLmgK
QEAgLTk4LDkgKzk4LDkgQEAgcHVibGljOgogICAgIFN0cmluZyBnZXRFcnJvck1lc3NhZ2UoKQog
ICAgIHsgCiAgICAgICAgIGlmICghbV9sZXhlci5nZXRFcnJvck1lc3NhZ2UoKS5pc0VtcHR5KCkp
Ci0gICAgICAgICAgICByZXR1cm4gU3RyaW5nOjpmb3JtYXQoIkpTT04gUGFyc2UgZXJyb3I6ICVz
IiwgbV9sZXhlci5nZXRFcnJvck1lc3NhZ2UoKS5hc2NpaSgpLmRhdGEoKSkuaW1wbCgpOworICAg
ICAgICAgICAgcmV0dXJuIFN0cmluZzo6Zm9ybWF0KCJKU09OIFBhcnNlIGVycm9yOiAlcyIsIG1f
bGV4ZXIuZ2V0RXJyb3JNZXNzYWdlKCkuYXNjaWkoKS5kYXRhKCkpOwogICAgICAgICBpZiAoIW1f
cGFyc2VFcnJvck1lc3NhZ2UuaXNFbXB0eSgpKQotICAgICAgICAgICAgcmV0dXJuIFN0cmluZzo6
Zm9ybWF0KCJKU09OIFBhcnNlIGVycm9yOiAlcyIsIG1fcGFyc2VFcnJvck1lc3NhZ2UuYXNjaWko
KS5kYXRhKCkpLmltcGwoKTsKKyAgICAgICAgICAgIHJldHVybiBTdHJpbmc6OmZvcm1hdCgiSlNP
TiBQYXJzZSBlcnJvcjogJXMiLCBtX3BhcnNlRXJyb3JNZXNzYWdlLmFzY2lpKCkuZGF0YSgpKTsK
ICAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgiSlNPTiBQYXJzZSBlcnJvcjogVW5hYmxlIHRv
IHBhcnNlIEpTT04gc3RyaW5nIik7CiAgICAgfQogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZVByb2ZpbGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1R5cGVQcm9maWxlci5jcHAKaW5kZXggNjI0ZDdjYS4uOTExN2U3ZiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZVByb2ZpbGVyLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBlUHJvZmlsZXIuY3BwCkBAIC00
Niw5ICs0Niw5IEBAIHZvaWQgVHlwZVByb2ZpbGVyOjpsb2dUeXBlc0ZvclR5cGVMb2NhdGlvbihU
eXBlTG9jYXRpb24qIGxvY2F0aW9uKQogCiAgICAgZGF0YUxvZygiXHRcdCIsIGxvY2F0aW9uLT5t
X2dsb2JhbFZhcmlhYmxlSUQgPT0gVHlwZVByb2ZpbGVyUmV0dXJuU3RhdGVtZW50ID8gIltSZXR1
cm4gU3RhdGVtZW50XSIgOiAiW05vcm1hbCBTdGF0ZW1lbnRdIiwgIlxuIik7CiAKLSAgICBkYXRh
TG9nKCJcdFx0I0xvY2FsI1xuXHRcdCIsIGxvY2F0aW9uLT5tX2luc3RydWN0aW9uVHlwZVNldC0+
c2VlblR5cGVzKCkucmVwbGFjZSgiXG4iLCAiXG5cdFx0IiksICJcbiIpOworICAgIGRhdGFMb2co
Ilx0XHQjTG9jYWwjXG5cdFx0IiwgbG9jYXRpb24tPm1faW5zdHJ1Y3Rpb25UeXBlU2V0LT5zZWVu
VHlwZXMoKS5yZXBsYWNlKEFTQ0lJTGl0ZXJhbCgiXG4iKSwgQVNDSUlMaXRlcmFsKCJcblx0XHQi
KSksICJcbiIpOwogICAgIGlmIChsb2NhdGlvbi0+bV9nbG9iYWxUeXBlU2V0KQotICAgICAgICBk
YXRhTG9nKCJcdFx0I0dsb2JhbCNcblx0XHQiLCBsb2NhdGlvbi0+bV9nbG9iYWxUeXBlU2V0LT5z
ZWVuVHlwZXMoKS5yZXBsYWNlKCJcbiIsICJcblx0XHQiKSwgIlxuIik7CisgICAgICAgIGRhdGFM
b2coIlx0XHQjR2xvYmFsI1xuXHRcdCIsIGxvY2F0aW9uLT5tX2dsb2JhbFR5cGVTZXQtPnNlZW5U
eXBlcygpLnJlcGxhY2UoQVNDSUlMaXRlcmFsKCJcbiIpLCBBU0NJSUxpdGVyYWwoIlxuXHRcdCIp
KSwgIlxuIik7CiB9CiAKIHZvaWQgVHlwZVByb2ZpbGVyOjppbnNlcnROZXdMb2NhdGlvbihUeXBl
TG9jYXRpb24qIGxvY2F0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvVHlwZVNldC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBlU2V0
LmNwcAppbmRleCA2MmI1YTFkLi44OWYyNGI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9UeXBlU2V0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9UeXBlU2V0LmNwcApAQCAtOTUsNyArOTUsNyBAQCB2b2lkIFR5cGVTZXQ6OmFkZFR5cGVJ
bmZvcm1hdGlvbihSdW50aW1lVHlwZSB0eXBlLCBQYXNzUmVmUHRyPFN0cnVjdHVyZVNoYXBlPiBz
aAogU3RyaW5nIFR5cGVTZXQ6OnNlZW5UeXBlcygpIGNvbnN0CiB7CiAgICAgaWYgKG1fc2VlblR5
cGVzID09IFR5cGVOb3RoaW5nKQotICAgICAgICByZXR1cm4gIihVbnJlYWNoZWQgU3RhdGVtZW50
KSI7CisgICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwoIihVbnJlYWNoZWQgU3RhdGVtZW50KSIp
OwogCiAgICAgU3RyaW5nQnVpbGRlciBzZWVuOwogCkBAIC0xMTksMTcgKzExOSwxNyBAQCBTdHJp
bmcgVHlwZVNldDo6c2VlblR5cGVzKCkgY29uc3QKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IG1fc3RydWN0dXJlSGlzdG9yeS5zaXplKCk7IGkrKykgewogICAgICAgICBSZWZQdHI8U3RydWN0
dXJlU2hhcGU+IHNoYXBlID0gbV9zdHJ1Y3R1cmVIaXN0b3J5LmF0KGkpOwogICAgICAgICBzZWVu
LmFwcGVuZChzaGFwZS0+bV9jb25zdHJ1Y3Rvck5hbWUpOwotICAgICAgICBzZWVuLmFwcGVuZCgi
ICIpOworICAgICAgICBzZWVuLmFwcGVuZCgnICcpOwogICAgIH0KIAogICAgIGlmIChtX3N0cnVj
dHVyZUhpc3Rvcnkuc2l6ZSgpKSAKICAgICAgICAgc2Vlbi5hcHBlbmQoIlxuU3RydWN0dXJlczpb
ICIpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9zdHJ1Y3R1cmVIaXN0b3J5LnNpemUo
KTsgaSsrKSB7CiAgICAgICAgIHNlZW4uYXBwZW5kKG1fc3RydWN0dXJlSGlzdG9yeS5hdChpKS0+
c3RyaW5nUmVwcmVzZW50YXRpb24oKSk7Ci0gICAgICAgIHNlZW4uYXBwZW5kKCIgIik7CisgICAg
ICAgIHNlZW4uYXBwZW5kKCcgJyk7CiAgICAgfQogICAgIGlmIChtX3N0cnVjdHVyZUhpc3Rvcnku
c2l6ZSgpKQotICAgICAgICBzZWVuLmFwcGVuZCgiXSIpOworICAgICAgICBzZWVuLmFwcGVuZCgn
XScpOwogCiAgICAgaWYgKG1fc3RydWN0dXJlSGlzdG9yeS5zaXplKCkpIHsKICAgICAgICAgc2Vl
bi5hcHBlbmQoIlxuTGVhc3QgQ29tbW9uIEFuY2VzdG9yOiAiKTsKQEAgLTE3Nyw1NyArMTc3LDU3
IEBAIFN0cmluZyBUeXBlU2V0OjpkaXNwbGF5TmFtZSgpIGNvbnN0CiAgICAgLy8gVGhlcmVmb3Jl
LCBtb3JlIHNwZWNpZmljIHR5cGVzIG11c3QgYmUgY2hlY2tlZCBmaXJzdC4KIAogICAgIGlmIChk
b2VzVHlwZUNvbmZvcm1UbyhUeXBlRnVuY3Rpb24pKQotICAgICAgICByZXR1cm4gIkZ1bmN0aW9u
IjsKKyAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgiRnVuY3Rpb24iKTsKICAgICBpZiAoZG9l
c1R5cGVDb25mb3JtVG8oVHlwZVVuZGVmaW5lZCkpCi0gICAgICAgIHJldHVybiAiVW5kZWZpbmVk
IjsKKyAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgiVW5kZWZpbmVkIik7CiAgICAgaWYgKGRv
ZXNUeXBlQ29uZm9ybVRvKFR5cGVOdWxsKSkKLSAgICAgICAgcmV0dXJuICJOdWxsIjsKKyAgICAg
ICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgiTnVsbCIpOwogICAgIGlmIChkb2VzVHlwZUNvbmZvcm1U
byhUeXBlQm9vbGVhbikpCi0gICAgICAgIHJldHVybiAiQm9vbGVhbiI7CisgICAgICAgIHJldHVy
biBBU0NJSUxpdGVyYWwoIkJvb2xlYW4iKTsKICAgICBpZiAoZG9lc1R5cGVDb25mb3JtVG8oVHlw
ZU1hY2hpbmVJbnQpKQotICAgICAgICByZXR1cm4gIkludGVnZXIiOworICAgICAgICByZXR1cm4g
QVNDSUlMaXRlcmFsKCJJbnRlZ2VyIik7CiAgICAgaWYgKGRvZXNUeXBlQ29uZm9ybVRvKFR5cGVO
dW1iZXIgfCBUeXBlTWFjaGluZUludCkpCi0gICAgICAgIHJldHVybiAiTnVtYmVyIjsKKyAgICAg
ICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgiTnVtYmVyIik7CiAgICAgaWYgKGRvZXNUeXBlQ29uZm9y
bVRvKFR5cGVTdHJpbmcpKQotICAgICAgICByZXR1cm4gIlN0cmluZyI7CisgICAgICAgIHJldHVy
biBBU0NJSUxpdGVyYWwoIlN0cmluZyIpOwogCiAgICAgaWYgKGRvZXNUeXBlQ29uZm9ybVRvKFR5
cGVOdWxsIHwgVHlwZVVuZGVmaW5lZCkpCi0gICAgICAgIHJldHVybiAiKD8pIjsKKyAgICAgICAg
cmV0dXJuIEFTQ0lJTGl0ZXJhbCgiKD8pIik7CiAKICAgICBpZiAoZG9lc1R5cGVDb25mb3JtVG8o
VHlwZUZ1bmN0aW9uIHwgVHlwZU51bGwgfCBUeXBlVW5kZWZpbmVkKSkKLSAgICAgICAgcmV0dXJu
ICJGdW5jdGlvbj8iOworICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJGdW5jdGlvbj8iKTsK
ICAgICBpZiAoZG9lc1R5cGVDb25mb3JtVG8oVHlwZUJvb2xlYW4gfCBUeXBlTnVsbCB8IFR5cGVV
bmRlZmluZWQpKQotICAgICAgICByZXR1cm4gIkJvb2xlYW4/IjsKKyAgICAgICAgcmV0dXJuIEFT
Q0lJTGl0ZXJhbCgiQm9vbGVhbj8iKTsKICAgICBpZiAoZG9lc1R5cGVDb25mb3JtVG8oVHlwZU1h
Y2hpbmVJbnQgfCBUeXBlTnVsbCB8IFR5cGVVbmRlZmluZWQpKQotICAgICAgICByZXR1cm4gIklu
dGVnZXI/IjsKKyAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgiSW50ZWdlcj8iKTsKICAgICBp
ZiAoZG9lc1R5cGVDb25mb3JtVG8oVHlwZU51bWJlciB8IFR5cGVNYWNoaW5lSW50IHwgVHlwZU51
bGwgfCBUeXBlVW5kZWZpbmVkKSkKLSAgICAgICAgcmV0dXJuICJOdW1iZXI/IjsKKyAgICAgICAg
cmV0dXJuIEFTQ0lJTGl0ZXJhbCgiTnVtYmVyPyIpOwogICAgIGlmIChkb2VzVHlwZUNvbmZvcm1U
byhUeXBlU3RyaW5nIHwgVHlwZU51bGwgfCBUeXBlVW5kZWZpbmVkKSkKLSAgICAgICAgcmV0dXJu
ICJTdHJpbmc/IjsKKyAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgiU3RyaW5nPyIpOwogICAg
CiAgICAgaWYgKGRvZXNUeXBlQ29uZm9ybVRvKFR5cGVPYmplY3QgfCBUeXBlRnVuY3Rpb24gfCBU
eXBlU3RyaW5nKSkKLSAgICAgICAgcmV0dXJuICJPYmplY3QiOworICAgICAgICByZXR1cm4gQVND
SUlMaXRlcmFsKCJPYmplY3QiKTsKICAgICBpZiAoZG9lc1R5cGVDb25mb3JtVG8oVHlwZU9iamVj
dCB8IFR5cGVGdW5jdGlvbiB8IFR5cGVTdHJpbmcgfCBUeXBlTnVsbCB8IFR5cGVVbmRlZmluZWQp
KQotICAgICAgICByZXR1cm4gIk9iamVjdD8iOworICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFs
KCJPYmplY3Q/Iik7CiAKLSAgICByZXR1cm4gIihtYW55KSI7CisgICAgcmV0dXJuIEFTQ0lJTGl0
ZXJhbCgiKG1hbnkpIik7CiB9CiAKIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6
QXJyYXk8U3RyaW5nPj4gVHlwZVNldDo6YWxsUHJpbWl0aXZlVHlwZU5hbWVzKCkgY29uc3QKIHsK
ICAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8U3RyaW5nPj4gc2VlbiA9
IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PFN0cmluZz46OmNyZWF0ZSgpOwogICAgIGlm
IChtX3NlZW5UeXBlcyAmIFR5cGVVbmRlZmluZWQpCi0gICAgICAgICBzZWVuLT5hZGRJdGVtKCJV
bmRlZmluZWQiKTsKKyAgICAgICAgIHNlZW4tPmFkZEl0ZW0oQVNDSUlMaXRlcmFsKCJVbmRlZmlu
ZWQiKSk7CiAgICAgaWYgKG1fc2VlblR5cGVzICYgVHlwZU51bGwpCi0gICAgICAgICBzZWVuLT5h
ZGRJdGVtKCJOdWxsIik7CisgICAgICAgICBzZWVuLT5hZGRJdGVtKEFTQ0lJTGl0ZXJhbCgiTnVs
bCIpKTsKICAgICBpZiAobV9zZWVuVHlwZXMgJiBUeXBlQm9vbGVhbikKLSAgICAgICAgIHNlZW4t
PmFkZEl0ZW0oIkJvb2xlYW4iKTsKKyAgICAgICAgIHNlZW4tPmFkZEl0ZW0oQVNDSUlMaXRlcmFs
KCJCb29sZWFuIikpOwogICAgIGlmIChtX3NlZW5UeXBlcyAmIFR5cGVNYWNoaW5lSW50KQotICAg
ICAgICAgc2Vlbi0+YWRkSXRlbSgiSW50ZWdlciIpOworICAgICAgICAgc2Vlbi0+YWRkSXRlbShB
U0NJSUxpdGVyYWwoIkludGVnZXIiKSk7CiAgICAgaWYgKG1fc2VlblR5cGVzICYgVHlwZU51bWJl
cikKLSAgICAgICAgIHNlZW4tPmFkZEl0ZW0oIk51bWJlciIpOworICAgICAgICAgc2Vlbi0+YWRk
SXRlbShBU0NJSUxpdGVyYWwoIk51bWJlciIpKTsKICAgICBpZiAobV9zZWVuVHlwZXMgJiBUeXBl
U3RyaW5nKQotICAgICAgICAgc2Vlbi0+YWRkSXRlbSgiU3RyaW5nIik7CisgICAgICAgICBzZWVu
LT5hZGRJdGVtKEFTQ0lJTGl0ZXJhbCgiU3RyaW5nIikpOwogCiAgICAgcmV0dXJuIHNlZW4ucmVs
ZWFzZSgpOwogfQpAQCAtMjc4LDE4ICsyNzgsMTggQEAgU3RyaW5nIFN0cnVjdHVyZVNoYXBlOjpw
cm9wZXJ0eUhhc2goKQogICAgICAgICByZXR1cm4gKm1fcHJvcGVydHlIYXNoOwogCiAgICAgU3Ry
aW5nQnVpbGRlciBidWlsZGVyOwotICAgIGJ1aWxkZXIuYXBwZW5kKCI6Iik7CisgICAgYnVpbGRl
ci5hcHBlbmQoJzonKTsKICAgICBidWlsZGVyLmFwcGVuZChtX2NvbnN0cnVjdG9yTmFtZSk7Ci0g
ICAgYnVpbGRlci5hcHBlbmQoIjoiKTsKKyAgICBidWlsZGVyLmFwcGVuZCgnOicpOwogICAgIAog
ICAgIGZvciAoYXV0byBpdGVyID0gbV9maWVsZHMuYmVnaW4oKSwgZW5kID0gbV9maWVsZHMuZW5k
KCk7IGl0ZXIgIT0gZW5kOyArK2l0ZXIpIHsKICAgICAgICAgU3RyaW5nIHByb3BlcnR5ID0gU3Ry
aW5nKCgqaXRlcikpOwotICAgICAgICBwcm9wZXJ0eS5yZXBsYWNlKCI6IiwgIlxcOiIpOyAvLyBF
bnN1cmUgdGhhdCBoYXNoKHsiZm9vOiIsICJiYXIifSkgIT0gaGFzaCh7ImZvbyIsICI6YmFyIn0p
IGJlY2F1c2Ugd2UncmUgdXNpbmcgY29sb25zIGFzIGEgc2VwYXJhdG9yIGFuZCBjb2xvbnMgYXJl
IGxlZ2FsIGNoYXJhY3RlcnMgaW4gZmllbGQgbmFtZXMgaW4gSlMuCisgICAgICAgIHByb3BlcnR5
LnJlcGxhY2UoQVNDSUlMaXRlcmFsKCI6IiksIEFTQ0lJTGl0ZXJhbCgiXFw6IikpOyAvLyBFbnN1
cmUgdGhhdCBoYXNoKHsiZm9vOiIsICJiYXIifSkgIT0gaGFzaCh7ImZvbyIsICI6YmFyIn0pIGJl
Y2F1c2Ugd2UncmUgdXNpbmcgY29sb25zIGFzIGEgc2VwYXJhdG9yIGFuZCBjb2xvbnMgYXJlIGxl
Z2FsIGNoYXJhY3RlcnMgaW4gZmllbGQgbmFtZXMgaW4gSlMuCiAgICAgICAgIGJ1aWxkZXIuYXBw
ZW5kKHByb3BlcnR5KTsKICAgICB9CiAKICAgICBpZiAobV9wcm90bykgewotICAgICAgICBidWls
ZGVyLmFwcGVuZCgiOiIpOworICAgICAgICBidWlsZGVyLmFwcGVuZCgnOicpOwogICAgICAgICBi
dWlsZGVyLmFwcGVuZCgiX19wcm90b19fIik7CiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKG1fcHJv
dG8tPnByb3BlcnR5SGFzaCgpKTsKICAgICB9CkBAIC0zMzUsNyArMzM1LDcgQEAgU3RyaW5nIFN0
cnVjdHVyZVNoYXBlOjpzdHJpbmdSZXByZXNlbnRhdGlvbigpCiAgICAgU3RyaW5nQnVpbGRlciBy
ZXByZXNlbnRhdGlvbjsKICAgICBSZWZQdHI8U3RydWN0dXJlU2hhcGU+IGN1clNoYXBlID0gdGhp
czsKIAotICAgIHJlcHJlc2VudGF0aW9uLmFwcGVuZCgieyIpOworICAgIHJlcHJlc2VudGF0aW9u
LmFwcGVuZCgneycpOwogICAgIHdoaWxlIChjdXJTaGFwZSkgewogICAgICAgICBmb3IgKGF1dG8g
aXQgPSBjdXJTaGFwZS0+bV9maWVsZHMuYmVnaW4oKSwgZW5kID0gY3VyU2hhcGUtPm1fZmllbGRz
LmVuZCgpOyBpdCAhPSBlbmQ7ICsraXQpIHsKICAgICAgICAgICAgIFN0cmluZyBwcm9wKCgqaXQp
LmdldCgpKTsKQEAgLTM0NCw3ICszNDQsNyBAQCBTdHJpbmcgU3RydWN0dXJlU2hhcGU6OnN0cmlu
Z1JlcHJlc2VudGF0aW9uKCkKICAgICAgICAgfQogCiAgICAgICAgIGlmIChjdXJTaGFwZS0+bV9w
cm90bykgewotICAgICAgICAgICAgU3RyaW5nIHByb3QgPSBTdHJpbmcoIl9fcHJvdG9fXyIpICsg
U3RyaW5nKCIgWyIpICsgY3VyU2hhcGUtPm1fcHJvdG8tPm1fY29uc3RydWN0b3JOYW1lICsgU3Ry
aW5nKCJdIik7CisgICAgICAgICAgICBTdHJpbmcgcHJvdCA9IG1ha2VTdHJpbmcoIl9fcHJvdG9f
XyBbIiwgY3VyU2hhcGUtPm1fcHJvdG8tPm1fY29uc3RydWN0b3JOYW1lLCAnXScpOwogICAgICAg
ICAgICAgcmVwcmVzZW50YXRpb24uYXBwZW5kKHByb3QpOwogICAgICAgICAgICAgcmVwcmVzZW50
YXRpb24uYXBwZW5kKCIsICIpOwogICAgICAgICB9CkBAIC0zNTUsNyArMzU1LDcgQEAgU3RyaW5n
IFN0cnVjdHVyZVNoYXBlOjpzdHJpbmdSZXByZXNlbnRhdGlvbigpCiAgICAgaWYgKHJlcHJlc2Vu
dGF0aW9uLmxlbmd0aCgpID49IDMpCiAgICAgICAgIHJlcHJlc2VudGF0aW9uLnJlc2l6ZShyZXBy
ZXNlbnRhdGlvbi5sZW5ndGgoKSAtIDIpOwogCi0gICAgcmVwcmVzZW50YXRpb24uYXBwZW5kKCJ9
Iik7CisgICAgcmVwcmVzZW50YXRpb24uYXBwZW5kKCd9Jyk7CiAKICAgICByZXR1cm4gcmVwcmVz
ZW50YXRpb24udG9TdHJpbmcoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9n
IGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggZGY5ZDI4MC4uYmEzNDk4YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMyBAQAorMjAxNC0wOC0yMiAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9AYXBwbGUu
Y29tPgorCisgICAgICAgIEphdmFTY3JpcHRDb3JlOiBVc2UgQVNDSUlMaXRlcmFsIHdoZXJlIHBv
c3NpYmxlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
MzYxNzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IHd0Zi90ZXh0L1dURlN0cmluZy5jcHA6CisgICAgICAgIChhc2NpaURlYnVnKToKKwogMjAxNC0w
OC0yMiAgRGFuaWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+CiAKICAgICAgICAgW2lPU10g
RGlzYWJsZSBFTkFCTEVfSU9TX3tHRVNUVVJFLCBUT1VDSH1fRVZFTlRTLCBhbmQgdGVtcG9yYXJp
bHkgZGlzYWJsZSBFTkFCTEVfVE9VQ0hfRVZFTlRTCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0
Zi90ZXh0L1dURlN0cmluZy5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5jcHAK
aW5kZXggYzFkOTQzOS4uMDgwM2MyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9X
VEZTdHJpbmcuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmNwcApAQCAt
MTIwNiw3ICsxMjA2LDcgQEAgU3RyaW5nKiBzdHJpbmcoY29uc3QgY2hhciogcykKIFZlY3Rvcjxj
aGFyPiBhc2NpaURlYnVnKFN0cmluZ0ltcGwqIGltcGwpCiB7CiAgICAgaWYgKCFpbXBsKQotICAg
ICAgICByZXR1cm4gYXNjaWlEZWJ1ZyhTdHJpbmcoIltudWxsXSIpLmltcGwoKSk7CisgICAgICAg
IHJldHVybiBhc2NpaURlYnVnKFN0cmluZyhBU0NJSUxpdGVyYWwoIltudWxsXSIpKS5pbXBsKCkp
OwogCiAgICAgVmVjdG9yPGNoYXI+IGJ1ZmZlcjsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgaW1wbC0+bGVuZ3RoKCk7ICsraSkgewo=
</data>
<flag name="review"
          id="261711"
          type_id="1"
          status="+"
          setter="msaboff"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>237372</attachid>
            <date>2014-08-29 13:43:16 -0700</date>
            <delta_ts>2014-08-29 13:49:01 -0700</delta_ts>
            <desc>[PATCH] For Landing</desc>
            <filename>jsc-updated.patch</filename>
            <type>text/plain</type>
            <size>69208</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">Y29tbWl0IDA0NDllOTdiYWM2NDQ2NjllNDRmODMyNmE1N2QzYTZlNGIyMzA4YTcKQXV0aG9yOiBK
b3NlcGggUGVjb3Jhcm8gPHBlY29yYXJvQGFwcGxlLmNvbT4KRGF0ZTogICBGcmkgQXVnIDI5IDEz
OjM5OjA0IDIwMTQgLTA3MDAKCiAgICBKYXZhU2NyaXB0Q29yZTogVXNlIEFTQ0lJTGl0ZXJhbCB3
aGVyZSBwb3NzaWJsZQogICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTEzNjE3OQogICAgCiAgICBSZXZpZXdlZCBieSBNaWNoYWVsIFNhYm9mZi4KICAgIAogICAgU291
cmNlL0phdmFTY3JpcHRDb3JlOgogICAgCiAgICBHZW5lcmFsIHN0cmluZyAvIGNoYXJhY3RlciBy
ZWxhdGVkIGNoYW5nZXMuIFVzZSBBU0NJSUxpdGVyYWwgd2hlcmUKICAgIHBvc3NpYmxlLCBqc05v
bnRyaXZpYWxTdHJpbmcgd2hlcmUgcG9zc2libGUsIGFuZCByZXBsYWNlIHN0cmluZwogICAgbGl0
ZXJhbHMgd2l0aCBjaGFyYWN0ZXIgbGl0ZXJhbHMgaW4gc29tZSBwbGFjZXMuCiAgICAKICAgIE5v
IG5ldyB0ZXN0cywgbm8gY2hhbmdlcyB0byBmdW5jdGlvbmFsaXR5LgogICAgCiAgICAqIGJ5dGVj
b2RlL0NvZGVCbG9jay5jcHA6CiAgICAoSlNDOjpDb2RlQmxvY2s6Om5hbWVGb3JSZWdpc3Rlcik6
CiAgICAqIGJ5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwOgogICAgKEpTQzo6UG9zdGZpeE5v
ZGU6OmVtaXRCeXRlY29kZSk6CiAgICAoSlNDOjpQcmVmaXhOb2RlOjplbWl0Qnl0ZWNvZGUpOgog
ICAgKEpTQzo6QXNzaWduRXJyb3JOb2RlOjplbWl0Qnl0ZWNvZGUpOgogICAgKEpTQzo6Rm9ySW5O
b2RlOjplbWl0TXVsdGlMb29wQnl0ZWNvZGUpOgogICAgKEpTQzo6Rm9yT2ZOb2RlOjplbWl0Qnl0
ZWNvZGUpOgogICAgKEpTQzo6T2JqZWN0UGF0dGVybk5vZGU6OnRvU3RyaW5nKToKICAgICogZGZn
L0RGR0Z1bmN0aW9uV2hpdGVsaXN0LmNwcDoKICAgIChKU0M6OkRGRzo6RnVuY3Rpb25XaGl0ZWxp
c3Q6OmNvbnRhaW5zKToKICAgICogZGZnL0RGR09wZXJhdGlvbnMuY3BwOgogICAgKEpTQzo6REZH
OjpuZXdUeXBlZEFycmF5V2l0aFNpemUpOgogICAgKEpTQzo6REZHOjpuZXdUeXBlZEFycmF5V2l0
aE9uZUFyZ3VtZW50KToKICAgICogaW5zcGVjdG9yL0NvbnNvbGVNZXNzYWdlLmNwcDoKICAgIChJ
bnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlOjphZGRUb0Zyb250ZW5kKToKICAgICogaW5zcGVjdG9y
L0luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmNwcDoKICAgIChJbnNwZWN0b3I6Okluc3BlY3Rv
ckJhY2tlbmREaXNwYXRjaGVyOjpkaXNwYXRjaCk6CiAgICAqIGluc3BlY3Rvci9TY3JpcHRDYWxs
U3RhY2tGYWN0b3J5LmNwcDoKICAgIChJbnNwZWN0b3I6OmV4dHJhY3RTb3VyY2VJbmZvcm1hdGlv
bkZyb21FeGNlcHRpb24pOgogICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRv
cl90ZW1wbGF0ZXMucHk6CiAgICAqIGludGVycHJldGVyL1N0YWNrVmlzaXRvci5jcHA6CiAgICAo
SlNDOjpTdGFja1Zpc2l0b3I6OkZyYW1lOjpmdW5jdGlvbk5hbWUpOgogICAgKEpTQzo6U3RhY2tW
aXNpdG9yOjpGcmFtZTo6c291cmNlVVJMKToKICAgICogaml0L0pJVE9wZXJhdGlvbnMuY3BwOgog
ICAgKiBqc2MuY3BwOgogICAgKGZ1bmN0aW9uRGVzY3JpYmVBcnJheSk6CiAgICAoZnVuY3Rpb25S
dW4pOgogICAgKGZ1bmN0aW9uTG9hZCk6CiAgICAoZnVuY3Rpb25SZWFkRmlsZSk6CiAgICAoZnVu
Y3Rpb25DaGVja1N5bnRheCk6CiAgICAoZnVuY3Rpb25UcmFuc2ZlckFycmF5QnVmZmVyKToKICAg
IChydW5XaXRoU2NyaXB0cyk6CiAgICAocnVuSW50ZXJhY3RpdmUpOgogICAgKiBwYXJzZXIvTGV4
ZXIuY3BwOgogICAgKEpTQzo6TGV4ZXI8VD46OmludmFsaWRDaGFyYWN0ZXJNZXNzYWdlKToKICAg
IChKU0M6OkxleGVyPFQ+OjpwYXJzZVN0cmluZyk6CiAgICAoSlNDOjpMZXhlcjxUPjo6cGFyc2VT
dHJpbmdTbG93Q2FzZSk6CiAgICAoSlNDOjpMZXhlcjxUPjo6bGV4KToKICAgICogcHJvZmlsZXIv
UHJvZmlsZS5jcHA6CiAgICAoSlNDOjpQcm9maWxlOjpQcm9maWxlKToKICAgICogcnVudGltZS9B
cmd1bWVudHMuY3BwOgogICAgKEpTQzo6YXJndW1lbnRzRnVuY0l0ZXJhdG9yKToKICAgICogcnVu
dGltZS9BcnJheVByb3RvdHlwZS5jcHA6CiAgICAoSlNDOjpwZXJmb3JtU2xvd1NvcnQpOgogICAg
KEpTQzo6YXJyYXlQcm90b0Z1bmNTb3J0KToKICAgICogcnVudGltZS9FeGNlcHRpb25IZWxwZXJz
LmNwcDoKICAgIChKU0M6OmNyZWF0ZUVycm9yKToKICAgIChKU0M6OmNyZWF0ZUludmFsaWRQYXJh
bWV0ZXJFcnJvcik6CiAgICAoSlNDOjpjcmVhdGVOb3RBQ29uc3RydWN0b3JFcnJvcik6CiAgICAo
SlNDOjpjcmVhdGVOb3RBRnVuY3Rpb25FcnJvcik6CiAgICAoSlNDOjpjcmVhdGVOb3RBbk9iamVj
dEVycm9yKToKICAgIChKU0M6OmNyZWF0ZUVycm9yRm9ySW52YWxpZEdsb2JhbEFzc2lnbm1lbnQp
OgogICAgKiBydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNwcDoKICAgIChKU0M6Omluc2VydFNl
bWljb2xvbklmTmVlZGVkKToKICAgICogcnVudGltZS9KU0FycmF5LmNwcDoKICAgIChKU0M6OkpT
QXJyYXk6OmRlZmluZU93blByb3BlcnR5KToKICAgIChKU0M6OkpTQXJyYXk6OnBvcCk6CiAgICAo
SlNDOjpKU0FycmF5OjpwdXNoKToKICAgICogcnVudGltZS9KU0FycmF5QnVmZmVyQ29uc3RydWN0
b3IuY3BwOgogICAgKEpTQzo6SlNBcnJheUJ1ZmZlckNvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlv
bik6CiAgICAqIHJ1bnRpbWUvSlNBcnJheUJ1ZmZlclByb3RvdHlwZS5jcHA6CiAgICAoSlNDOjph
cnJheUJ1ZmZlclByb3RvRnVuY1NsaWNlKToKICAgICogcnVudGltZS9KU0RhdGFWaWV3LmNwcDoK
ICAgIChKU0M6OkpTRGF0YVZpZXc6OmNyZWF0ZSk6CiAgICAqIHJ1bnRpbWUvSlNEYXRhVmlld1By
b3RvdHlwZS5jcHA6CiAgICAoSlNDOjpnZXREYXRhKToKICAgIChKU0M6OnNldERhdGEpOgogICAg
KiBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoKICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojpy
ZXNldCk6CiAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuY3BwOgogICAgKEpT
Qzo6Z2xvYmFsRnVuY1Byb3RvU2V0dGVyKToKICAgICogcnVudGltZS9KU1Byb21pc2VDb25zdHJ1
Y3Rvci5jcHA6CiAgICAoSlNDOjpKU1Byb21pc2VDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24p
OgogICAgKiBydW50aW1lL0xpdGVyYWxQYXJzZXIuY3BwOgogICAgKEpTQzo6TGl0ZXJhbFBhcnNl
cjxDaGFyVHlwZT46OkxleGVyOjpsZXgpOgogICAgKEpTQzo6TGl0ZXJhbFBhcnNlcjxDaGFyVHlw
ZT46OkxleGVyOjpsZXhTdHJpbmcpOgogICAgKEpTQzo6TGl0ZXJhbFBhcnNlcjxDaGFyVHlwZT46
OnBhcnNlKToKICAgICogcnVudGltZS9MaXRlcmFsUGFyc2VyLmg6CiAgICAoSlNDOjpMaXRlcmFs
UGFyc2VyOjpnZXRFcnJvck1lc3NhZ2UpOgogICAgKiBydW50aW1lL1R5cGVTZXQuY3BwOgogICAg
KEpTQzo6VHlwZVNldDo6c2VlblR5cGVzKToKICAgIChKU0M6OlR5cGVTZXQ6OmRpc3BsYXlOYW1l
KToKICAgIChKU0M6OlR5cGVTZXQ6OmFsbFByaW1pdGl2ZVR5cGVOYW1lcyk6CiAgICAoSlNDOjpT
dHJ1Y3R1cmVTaGFwZTo6cHJvcGVydHlIYXNoKToKICAgIChKU0M6OlN0cnVjdHVyZVNoYXBlOjpz
dHJpbmdSZXByZXNlbnRhdGlvbik6CiAgICAKICAgIFNvdXJjZS9XVEY6CiAgICAKICAgICogd3Rm
L3RleHQvV1RGU3RyaW5nLmNwcDoKICAgIChhc2NpaURlYnVnKToKCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5n
ZUxvZwppbmRleCAwNDdmOTM1Li4xYzE5NDI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxMDMgQEAKKzIwMTQtMDgtMjkgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFw
cGxlLmNvbT4KKworICAgICAgICBKYXZhU2NyaXB0Q29yZTogVXNlIEFTQ0lJTGl0ZXJhbCB3aGVy
ZSBwb3NzaWJsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTM2MTc5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTWljaGFlbCBTYWJvZmYuCisKKyAgICAg
ICAgR2VuZXJhbCBzdHJpbmcgLyBjaGFyYWN0ZXIgcmVsYXRlZCBjaGFuZ2VzLiBVc2UgQVNDSUlM
aXRlcmFsIHdoZXJlCisgICAgICAgIHBvc3NpYmxlLCBqc05vbnRyaXZpYWxTdHJpbmcgd2hlcmUg
cG9zc2libGUsIGFuZCByZXBsYWNlIHN0cmluZworICAgICAgICBsaXRlcmFscyB3aXRoIGNoYXJh
Y3RlciBsaXRlcmFscyBpbiBzb21lIHBsYWNlcy4KKworICAgICAgICBObyBuZXcgdGVzdHMsIG5v
IGNoYW5nZXMgdG8gZnVuY3Rpb25hbGl0eS4KKworICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9j
ay5jcHA6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6bmFtZUZvclJlZ2lzdGVyKToKKyAgICAg
ICAgKiBieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcDoKKyAgICAgICAgKEpTQzo6UG9zdGZp
eE5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OlByZWZpeE5vZGU6OmVtaXRCeXRl
Y29kZSk6CisgICAgICAgIChKU0M6OkFzc2lnbkVycm9yTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAg
ICAgICAgKEpTQzo6Rm9ySW5Ob2RlOjplbWl0TXVsdGlMb29wQnl0ZWNvZGUpOgorICAgICAgICAo
SlNDOjpGb3JPZk5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6Ok9iamVjdFBhdHRl
cm5Ob2RlOjp0b1N0cmluZyk6CisgICAgICAgICogZGZnL0RGR0Z1bmN0aW9uV2hpdGVsaXN0LmNw
cDoKKyAgICAgICAgKEpTQzo6REZHOjpGdW5jdGlvbldoaXRlbGlzdDo6Y29udGFpbnMpOgorICAg
ICAgICAqIGRmZy9ERkdPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpuZXdUeXBl
ZEFycmF5V2l0aFNpemUpOgorICAgICAgICAoSlNDOjpERkc6Om5ld1R5cGVkQXJyYXlXaXRoT25l
QXJndW1lbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9Db25zb2xlTWVzc2FnZS5jcHA6CisgICAg
ICAgIChJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlOjphZGRUb0Zyb250ZW5kKToKKyAgICAgICAg
KiBpbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuY3BwOgorICAgICAgICAoSW5z
cGVjdG9yOjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6ZGlzcGF0Y2gpOgorICAgICAgICAq
IGluc3BlY3Rvci9TY3JpcHRDYWxsU3RhY2tGYWN0b3J5LmNwcDoKKyAgICAgICAgKEluc3BlY3Rv
cjo6ZXh0cmFjdFNvdXJjZUluZm9ybWF0aW9uRnJvbUV4Y2VwdGlvbik6CisgICAgICAgICogaW5z
cGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0b3JfdGVtcGxhdGVzLnB5OgorICAgICAgICAq
IGludGVycHJldGVyL1N0YWNrVmlzaXRvci5jcHA6CisgICAgICAgIChKU0M6OlN0YWNrVmlzaXRv
cjo6RnJhbWU6OmZ1bmN0aW9uTmFtZSk6CisgICAgICAgIChKU0M6OlN0YWNrVmlzaXRvcjo6RnJh
bWU6OnNvdXJjZVVSTCk6CisgICAgICAgICogaml0L0pJVE9wZXJhdGlvbnMuY3BwOgorICAgICAg
ICAqIGpzYy5jcHA6CisgICAgICAgIChmdW5jdGlvbkRlc2NyaWJlQXJyYXkpOgorICAgICAgICAo
ZnVuY3Rpb25SdW4pOgorICAgICAgICAoZnVuY3Rpb25Mb2FkKToKKyAgICAgICAgKGZ1bmN0aW9u
UmVhZEZpbGUpOgorICAgICAgICAoZnVuY3Rpb25DaGVja1N5bnRheCk6CisgICAgICAgIChmdW5j
dGlvblRyYW5zZmVyQXJyYXlCdWZmZXIpOgorICAgICAgICAocnVuV2l0aFNjcmlwdHMpOgorICAg
ICAgICAocnVuSW50ZXJhY3RpdmUpOgorICAgICAgICAqIHBhcnNlci9MZXhlci5jcHA6CisgICAg
ICAgIChKU0M6OkxleGVyPFQ+OjppbnZhbGlkQ2hhcmFjdGVyTWVzc2FnZSk6CisgICAgICAgIChK
U0M6OkxleGVyPFQ+OjpwYXJzZVN0cmluZyk6CisgICAgICAgIChKU0M6OkxleGVyPFQ+OjpwYXJz
ZVN0cmluZ1Nsb3dDYXNlKToKKyAgICAgICAgKEpTQzo6TGV4ZXI8VD46OmxleCk6CisgICAgICAg
ICogcHJvZmlsZXIvUHJvZmlsZS5jcHA6CisgICAgICAgIChKU0M6OlByb2ZpbGU6OlByb2ZpbGUp
OgorICAgICAgICAqIHJ1bnRpbWUvQXJndW1lbnRzLmNwcDoKKyAgICAgICAgKEpTQzo6YXJndW1l
bnRzRnVuY0l0ZXJhdG9yKToKKyAgICAgICAgKiBydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcDoK
KyAgICAgICAgKEpTQzo6cGVyZm9ybVNsb3dTb3J0KToKKyAgICAgICAgKEpTQzo6YXJyYXlQcm90
b0Z1bmNTb3J0KToKKyAgICAgICAgKiBydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuY3BwOgorICAg
ICAgICAoSlNDOjpjcmVhdGVFcnJvcik6CisgICAgICAgIChKU0M6OmNyZWF0ZUludmFsaWRQYXJh
bWV0ZXJFcnJvcik6CisgICAgICAgIChKU0M6OmNyZWF0ZU5vdEFDb25zdHJ1Y3RvckVycm9yKToK
KyAgICAgICAgKEpTQzo6Y3JlYXRlTm90QUZ1bmN0aW9uRXJyb3IpOgorICAgICAgICAoSlNDOjpj
cmVhdGVOb3RBbk9iamVjdEVycm9yKToKKyAgICAgICAgKEpTQzo6Y3JlYXRlRXJyb3JGb3JJbnZh
bGlkR2xvYmFsQXNzaWdubWVudCk6CisgICAgICAgICogcnVudGltZS9GdW5jdGlvblByb3RvdHlw
ZS5jcHA6CisgICAgICAgIChKU0M6Omluc2VydFNlbWljb2xvbklmTmVlZGVkKToKKyAgICAgICAg
KiBydW50aW1lL0pTQXJyYXkuY3BwOgorICAgICAgICAoSlNDOjpKU0FycmF5OjpkZWZpbmVPd25Q
cm9wZXJ0eSk6CisgICAgICAgIChKU0M6OkpTQXJyYXk6OnBvcCk6CisgICAgICAgIChKU0M6OkpT
QXJyYXk6OnB1c2gpOgorICAgICAgICAqIHJ1bnRpbWUvSlNBcnJheUJ1ZmZlckNvbnN0cnVjdG9y
LmNwcDoKKyAgICAgICAgKEpTQzo6SlNBcnJheUJ1ZmZlckNvbnN0cnVjdG9yOjpmaW5pc2hDcmVh
dGlvbik6CisgICAgICAgICogcnVudGltZS9KU0FycmF5QnVmZmVyUHJvdG90eXBlLmNwcDoKKyAg
ICAgICAgKEpTQzo6YXJyYXlCdWZmZXJQcm90b0Z1bmNTbGljZSk6CisgICAgICAgICogcnVudGlt
ZS9KU0RhdGFWaWV3LmNwcDoKKyAgICAgICAgKEpTQzo6SlNEYXRhVmlldzo6Y3JlYXRlKToKKyAg
ICAgICAgKiBydW50aW1lL0pTRGF0YVZpZXdQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpn
ZXREYXRhKToKKyAgICAgICAgKEpTQzo6c2V0RGF0YSk6CisgICAgICAgICogcnVudGltZS9KU0ds
b2JhbE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpyZXNldCk6Cisg
ICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5jcHA6CisgICAgICAgIChK
U0M6Omdsb2JhbEZ1bmNQcm90b1NldHRlcik6CisgICAgICAgICogcnVudGltZS9KU1Byb21pc2VD
b25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OkpTUHJvbWlzZUNvbnN0cnVjdG9yOjpmaW5p
c2hDcmVhdGlvbik6CisgICAgICAgICogcnVudGltZS9MaXRlcmFsUGFyc2VyLmNwcDoKKyAgICAg
ICAgKEpTQzo6TGl0ZXJhbFBhcnNlcjxDaGFyVHlwZT46OkxleGVyOjpsZXgpOgorICAgICAgICAo
SlNDOjpMaXRlcmFsUGFyc2VyPENoYXJUeXBlPjo6TGV4ZXI6OmxleFN0cmluZyk6CisgICAgICAg
IChKU0M6OkxpdGVyYWxQYXJzZXI8Q2hhclR5cGU+OjpwYXJzZSk6CisgICAgICAgICogcnVudGlt
ZS9MaXRlcmFsUGFyc2VyLmg6CisgICAgICAgIChKU0M6OkxpdGVyYWxQYXJzZXI6OmdldEVycm9y
TWVzc2FnZSk6CisgICAgICAgICogcnVudGltZS9UeXBlU2V0LmNwcDoKKyAgICAgICAgKEpTQzo6
VHlwZVNldDo6c2VlblR5cGVzKToKKyAgICAgICAgKEpTQzo6VHlwZVNldDo6ZGlzcGxheU5hbWUp
OgorICAgICAgICAoSlNDOjpUeXBlU2V0OjphbGxQcmltaXRpdmVUeXBlTmFtZXMpOgorICAgICAg
ICAoSlNDOjpTdHJ1Y3R1cmVTaGFwZTo6cHJvcGVydHlIYXNoKToKKyAgICAgICAgKEpTQzo6U3Ry
dWN0dXJlU2hhcGU6OnN0cmluZ1JlcHJlc2VudGF0aW9uKToKKwogMjAxNC0wOC0yOSAgQ3NhYmEg
T3N6dHJvZ29uw6FjICA8b3NzeUB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aXdlZCwgcmVt
b3ZlIGVtcHR5IGRpcmVjdG9yaWVzLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0NvZGVCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q29kZUJsb2NrLmNwcAppbmRleCA1ZDJjNTExLi5jNTYxMjE1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcApAQCAtMzg0NSw3ICszODQ1LDcgQEAgU3Ry
aW5nIENvZGVCbG9jazo6bmFtZUZvclJlZ2lzdGVyKFZpcnR1YWxSZWdpc3RlciB2aXJ0dWFsUmVn
aXN0ZXIpCiAgICAgICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJyZWFsIGFyZ3VtZW50cyIp
OwogICAgIH0KICAgICBpZiAodmlydHVhbFJlZ2lzdGVyLmlzQXJndW1lbnQoKSkKLSAgICAgICAg
cmV0dXJuIFN0cmluZzo6Zm9ybWF0KCJhcmd1bWVudHNbJTNkXSIsIHZpcnR1YWxSZWdpc3Rlci50
b0FyZ3VtZW50KCkpLmltcGwoKTsKKyAgICAgICAgcmV0dXJuIFN0cmluZzo6Zm9ybWF0KCJhcmd1
bWVudHNbJTNkXSIsIHZpcnR1YWxSZWdpc3Rlci50b0FyZ3VtZW50KCkpOwogCiAgICAgcmV0dXJu
ICIiOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9O
b2Rlc0NvZGVnZW4uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rl
c0NvZGVnZW4uY3BwCmluZGV4IDAxZDEyODYuLmI3ZTE2ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKQEAgLTg5MSw4ICs4
OTEsOCBAQCBSZWdpc3RlcklEKiBQb3N0Zml4Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2Vu
ZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqCiAgICAgICAgIHJldHVybiBlbWl0RG90KGdl
bmVyYXRvciwgZHN0KTsKIAogICAgIHJldHVybiBlbWl0VGhyb3dSZWZlcmVuY2VFcnJvcihnZW5l
cmF0b3IsIG1fb3BlcmF0b3IgPT0gT3BQbHVzUGx1cwotICAgICAgICA/ICJQb3N0Zml4ICsrIG9w
ZXJhdG9yIGFwcGxpZWQgdG8gdmFsdWUgdGhhdCBpcyBub3QgYSByZWZlcmVuY2UuIgotICAgICAg
ICA6ICJQb3N0Zml4IC0tIG9wZXJhdG9yIGFwcGxpZWQgdG8gdmFsdWUgdGhhdCBpcyBub3QgYSBy
ZWZlcmVuY2UuIik7CisgICAgICAgID8gQVNDSUlMaXRlcmFsKCJQb3N0Zml4ICsrIG9wZXJhdG9y
IGFwcGxpZWQgdG8gdmFsdWUgdGhhdCBpcyBub3QgYSByZWZlcmVuY2UuIikKKyAgICAgICAgOiBB
U0NJSUxpdGVyYWwoIlBvc3RmaXggLS0gb3BlcmF0b3IgYXBwbGllZCB0byB2YWx1ZSB0aGF0IGlz
IG5vdCBhIHJlZmVyZW5jZS4iKSk7CiB9CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLSBEZWxldGVSZXNvbHZlTm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQpAQCAtMTA3NCw4ICsxMDc0LDggQEAgUmVnaXN0ZXJJRCogUHJlZml4Tm9kZTo6ZW1pdEJ5dGVj
b2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGQKICAgICAgICAg
cmV0dXJuIGVtaXREb3QoZ2VuZXJhdG9yLCBkc3QpOwogCiAgICAgcmV0dXJuIGVtaXRUaHJvd1Jl
ZmVyZW5jZUVycm9yKGdlbmVyYXRvciwgbV9vcGVyYXRvciA9PSBPcFBsdXNQbHVzCi0gICAgICAg
ID8gIlByZWZpeCArKyBvcGVyYXRvciBhcHBsaWVkIHRvIHZhbHVlIHRoYXQgaXMgbm90IGEgcmVm
ZXJlbmNlLiIKLSAgICAgICAgOiAiUHJlZml4IC0tIG9wZXJhdG9yIGFwcGxpZWQgdG8gdmFsdWUg
dGhhdCBpcyBub3QgYSByZWZlcmVuY2UuIik7CisgICAgICAgID8gQVNDSUlMaXRlcmFsKCJQcmVm
aXggKysgb3BlcmF0b3IgYXBwbGllZCB0byB2YWx1ZSB0aGF0IGlzIG5vdCBhIHJlZmVyZW5jZS4i
KQorICAgICAgICA6IEFTQ0lJTGl0ZXJhbCgiUHJlZml4IC0tIG9wZXJhdG9yIGFwcGxpZWQgdG8g
dmFsdWUgdGhhdCBpcyBub3QgYSByZWZlcmVuY2UuIikpOwogfQogCiAvLyAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0gVW5hcnkgT3BlcmF0aW9uIE5vZGVzIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCkBAIC0xNjEzLDcgKzE2MTMsNyBAQCBSZWdpc3RlcklEKiBSZWFk
TW9kaWZ5RG90Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3Is
IFJlZ2lzdAogCiBSZWdpc3RlcklEKiBBc3NpZ25FcnJvck5vZGU6OmVtaXRCeXRlY29kZShCeXRl
Y29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKikKIHsKLSAgICByZXR1cm4gZW1p
dFRocm93UmVmZXJlbmNlRXJyb3IoZ2VuZXJhdG9yLCAiTGVmdCBzaWRlIG9mIGFzc2lnbm1lbnQg
aXMgbm90IGEgcmVmZXJlbmNlLiIpOworICAgIHJldHVybiBlbWl0VGhyb3dSZWZlcmVuY2VFcnJv
cihnZW5lcmF0b3IsIEFTQ0lJTGl0ZXJhbCgiTGVmdCBzaWRlIG9mIGFzc2lnbm1lbnQgaXMgbm90
IGEgcmVmZXJlbmNlLiIpKTsKIH0KIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
IEFzc2lnbkJyYWNrZXROb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBA
IC0yMDM1LDcgKzIwMzUsNyBAQCB2b2lkIEZvckluTm9kZTo6ZW1pdExvb3BIZWFkZXIoQnl0ZWNv
ZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogcHJvcGVydAogdm9pZCBGb3JJbk5v
ZGU6OmVtaXRNdWx0aUxvb3BCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBS
ZWdpc3RlcklEKiBkc3QpCiB7CiAgICAgaWYgKCFtX2xleHByLT5pc0Fzc2lnbm1lbnRMb2NhdGlv
bigpKSB7Ci0gICAgICAgIGVtaXRUaHJvd1JlZmVyZW5jZUVycm9yKGdlbmVyYXRvciwgIkxlZnQg
c2lkZSBvZiBmb3ItaW4gc3RhdGVtZW50IGlzIG5vdCBhIHJlZmVyZW5jZS4iKTsKKyAgICAgICAg
ZW1pdFRocm93UmVmZXJlbmNlRXJyb3IoZ2VuZXJhdG9yLCBBU0NJSUxpdGVyYWwoIkxlZnQgc2lk
ZSBvZiBmb3ItaW4gc3RhdGVtZW50IGlzIG5vdCBhIHJlZmVyZW5jZS4iKSk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKQEAgLTIxNjcsNyArMjE2Nyw3IEBAIHZvaWQgRm9ySW5Ob2RlOjplbWl0
Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQog
dm9pZCBGb3JPZk5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9y
LCBSZWdpc3RlcklEKiBkc3QpCiB7CiAgICAgaWYgKCFtX2xleHByLT5pc0Fzc2lnbm1lbnRMb2Nh
dGlvbigpKSB7Ci0gICAgICAgIGVtaXRUaHJvd1JlZmVyZW5jZUVycm9yKGdlbmVyYXRvciwgIkxl
ZnQgc2lkZSBvZiBmb3Itb2Ygc3RhdGVtZW50IGlzIG5vdCBhIHJlZmVyZW5jZS4iKTsKKyAgICAg
ICAgZW1pdFRocm93UmVmZXJlbmNlRXJyb3IoZ2VuZXJhdG9yLCBBU0NJSUxpdGVyYWwoIkxlZnQg
c2lkZSBvZiBmb3Itb2Ygc3RhdGVtZW50IGlzIG5vdCBhIHJlZmVyZW5jZS4iKSk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAgICAgCkBAIC0yNzg0LDcgKzI3ODQsNyBAQCB2b2lkIE9iamVjdFBh
dHRlcm5Ob2RlOjp0b1N0cmluZyhTdHJpbmdCdWlsZGVyJiBidWlsZGVyKSBjb25zdAogICAgICAg
ICAgICAgYnVpbGRlci5hcHBlbmQoJyInKTsKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBi
dWlsZGVyLmFwcGVuZChtX3RhcmdldFBhdHRlcm5zW2ldLnByb3BlcnR5TmFtZS5zdHJpbmcoKSk7
Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKCI6Iik7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCc6
Jyk7CiAgICAgICAgIG1fdGFyZ2V0UGF0dGVybnNbaV0ucGF0dGVybi0+dG9TdHJpbmcoYnVpbGRl
cik7CiAgICAgICAgIGlmIChpIDwgbV90YXJnZXRQYXR0ZXJucy5zaXplKCkgLSAxKQogICAgICAg
ICAgICAgYnVpbGRlci5hcHBlbmQoJywnKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHRnVuY3Rpb25XaGl0ZWxpc3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdGdW5jdGlvbldoaXRlbGlzdC5jcHAKaW5kZXggZjYxODQ5OS4uMzdjODA3NyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGdW5jdGlvbldoaXRlbGlzdC5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGdW5jdGlvbldoaXRlbGlzdC5j
cHAKQEAgLTEwNiwxMCArMTA2LDcgQEAgYm9vbCBGdW5jdGlvbldoaXRlbGlzdDo6Y29udGFpbnMo
Q29kZUJsb2NrKiBjb2RlQmxvY2spIGNvbnN0CiAgICAgaWYgKG1fZW50cmllcy5jb250YWlucyho
YXNoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBTdHJpbmcgbmFtZUFuZEhhc2ggPSBu
YW1lOwotICAgIG5hbWVBbmRIYXNoLmFwcGVuZCgnIycpOwotICAgIG5hbWVBbmRIYXNoLmFwcGVu
ZChoYXNoKTsKLSAgICByZXR1cm4gbV9lbnRyaWVzLmNvbnRhaW5zKG5hbWVBbmRIYXNoKTsKKyAg
ICByZXR1cm4gbV9lbnRyaWVzLmNvbnRhaW5zKG5hbWUgKyAnIycgKyBoYXNoKTsKIH0KIAogfSB9
IC8vIG5hbWVzcGFjZSBKU0M6OkRGRwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3Bl
cmF0aW9ucy5jcHAKaW5kZXggODI0YWU0Ni4uMDc4NDdlODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcApAQCAtMTM3LDcgKzEzNyw3IEBAIGNoYXIqIG5l
d1R5cGVkQXJyYXlXaXRoU2l6ZShFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZSogc3RydWN0dXJl
LCBpbnQzMl90IHNpemUpCiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBOYXRpdmVDYWxs
RnJhbWVUcmFjZXIgdHJhY2VyKCZ2bSwgZXhlYyk7CiAgICAgaWYgKHNpemUgPCAwKSB7Ci0gICAg
ICAgIHZtLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZVJhbmdlRXJyb3IoZXhlYywgIlJlcXVl
c3RlZCBsZW5ndGggaXMgbmVnYXRpdmUiKSk7CisgICAgICAgIHZtLnRocm93RXhjZXB0aW9uKGV4
ZWMsIGNyZWF0ZVJhbmdlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJSZXF1ZXN0ZWQgbGVuZ3Ro
IGlzIG5lZ2F0aXZlIikpKTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogICAgIHJldHVybiBi
aXR3aXNlX2Nhc3Q8Y2hhcio+KFZpZXdDbGFzczo6Y3JlYXRlKGV4ZWMsIHN0cnVjdHVyZSwgc2l6
ZSkpOwpAQCAtMTU2LDcgKzE1Niw3IEBAIGNoYXIqIG5ld1R5cGVkQXJyYXlXaXRoT25lQXJndW1l
bnQoCiAgICAgICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gYnVmZmVyID0ganNCdWZmZXItPmltcGwo
KTsKICAgICAgICAgCiAgICAgICAgIGlmIChidWZmZXItPmJ5dGVMZW5ndGgoKSAlIFZpZXdDbGFz
czo6ZWxlbWVudFNpemUpIHsKLSAgICAgICAgICAgIHZtLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNy
ZWF0ZVJhbmdlRXJyb3IoZXhlYywgIkFycmF5QnVmZmVyIGxlbmd0aCBtaW51cyB0aGUgYnl0ZU9m
ZnNldCBpcyBub3QgYSBtdWx0aXBsZSBvZiB0aGUgZWxlbWVudCBzaXplIikpOworICAgICAgICAg
ICAgdm0udGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlUmFuZ2VFcnJvcihleGVjLCBBU0NJSUxp
dGVyYWwoIkFycmF5QnVmZmVyIGxlbmd0aCBtaW51cyB0aGUgYnl0ZU9mZnNldCBpcyBub3QgYSBt
dWx0aXBsZSBvZiB0aGUgZWxlbWVudCBzaXplIikpKTsKICAgICAgICAgICAgIHJldHVybiAwOwog
ICAgICAgICB9CiAgICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8Y2hhcio+KApAQCAtMTgzLDE4
ICsxODMsMTggQEAgY2hhciogbmV3VHlwZWRBcnJheVdpdGhPbmVBcmd1bWVudCgKICAgICBpZiAo
dmFsdWUuaXNJbnQzMigpKQogICAgICAgICBsZW5ndGggPSB2YWx1ZS5hc0ludDMyKCk7CiAgICAg
ZWxzZSBpZiAoIXZhbHVlLmlzTnVtYmVyKCkpIHsKLSAgICAgICAgdm0udGhyb3dFeGNlcHRpb24o
ZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsICJJbnZhbGlkIGFycmF5IGxlbmd0aCBhcmd1bWVu
dCIpKTsKKyAgICAgICAgdm0udGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4
ZWMsIEFTQ0lJTGl0ZXJhbCgiSW52YWxpZCBhcnJheSBsZW5ndGggYXJndW1lbnQiKSkpOwogICAg
ICAgICByZXR1cm4gMDsKICAgICB9IGVsc2UgewogICAgICAgICBsZW5ndGggPSBzdGF0aWNfY2Fz
dDxpbnQ+KHZhbHVlLmFzTnVtYmVyKCkpOwogICAgICAgICBpZiAobGVuZ3RoICE9IHZhbHVlLmFz
TnVtYmVyKCkpIHsKLSAgICAgICAgICAgIHZtLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZVR5
cGVFcnJvcihleGVjLCAiSW52YWxpZCBhcnJheSBsZW5ndGggYXJndW1lbnQgKGZyYWN0aW9uYWwg
bGVuZ3RocyBub3QgYWxsb3dlZCkiKSk7CisgICAgICAgICAgICB2bS50aHJvd0V4Y2VwdGlvbihl
eGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJJbnZhbGlkIGFycmF5IGxl
bmd0aCBhcmd1bWVudCAoZnJhY3Rpb25hbCBsZW5ndGhzIG5vdCBhbGxvd2VkKSIpKSk7CiAgICAg
ICAgICAgICByZXR1cm4gMDsKICAgICAgICAgfQogICAgIH0KICAgICAKICAgICBpZiAobGVuZ3Ro
IDwgMCkgewotICAgICAgICB2bS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVSYW5nZUVycm9y
KGV4ZWMsICJSZXF1ZXN0ZWQgbGVuZ3RoIGlzIG5lZ2F0aXZlIikpOworICAgICAgICB2bS50aHJv
d0V4Y2VwdGlvbihleGVjLCBjcmVhdGVSYW5nZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiUmVx
dWVzdGVkIGxlbmd0aCBpcyBuZWdhdGl2ZSIpKSk7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0K
ICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvQ29uc29s
ZU1lc3NhZ2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9Db25zb2xlTWVz
c2FnZS5jcHAKaW5kZXggNGI4ZTNjNS4uZjdkMWU1NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9Db25zb2xlTWVzc2FnZS5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9Db25zb2xlTWVzc2FnZS5jcHAKQEAgLTIxMSw3ICsyMTEsNyBA
QCB2b2lkIENvbnNvbGVNZXNzYWdlOjphZGRUb0Zyb250ZW5kKEluc3BlY3RvckNvbnNvbGVGcm9u
dGVuZERpc3BhdGNoZXIqIGNvbnNvbGVGcgogICAgICAgICAgICAgICAgIGpzb25BcmdzLT5hZGRJ
dGVtKGluc3BlY3RvclZhbHVlKTsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fYXJndW1lbnRzLT5hcmd1bWVudENvdW50KCk7
ICsraSkgewotICAgICAgICAgICAgICAgICAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6
UnVudGltZTo6UmVtb3RlT2JqZWN0PiBpbnNwZWN0b3JWYWx1ZSA9IGluamVjdGVkU2NyaXB0Lndy
YXBPYmplY3QobV9hcmd1bWVudHMtPmFyZ3VtZW50QXQoaSksICJjb25zb2xlIiwgZ2VuZXJhdGVQ
cmV2aWV3KTsKKyAgICAgICAgICAgICAgICAgICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6
OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4gaW5zcGVjdG9yVmFsdWUgPSBpbmplY3RlZFNjcmlwdC53
cmFwT2JqZWN0KG1fYXJndW1lbnRzLT5hcmd1bWVudEF0KGkpLCBBU0NJSUxpdGVyYWwoImNvbnNv
bGUiKSwgZ2VuZXJhdGVQcmV2aWV3KTsKICAgICAgICAgICAgICAgICAgICAgaWYgKCFpbnNwZWN0
b3JWYWx1ZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIu
Y3BwCmluZGV4IDMwYTY2ZjcuLmJiM2VjODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuY3Bw
CkBAIC05MCw3ICs5MCw3IEBAIHZvaWQgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OmRpc3Bh
dGNoKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAg
IFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4gY2FsbElkVmFsdWUgPSBtZXNzYWdlT2JqZWN0LT5nZXQo
ImlkIik7CisgICAgUmVmUHRyPEluc3BlY3RvclZhbHVlPiBjYWxsSWRWYWx1ZSA9IG1lc3NhZ2VP
YmplY3QtPmdldChBU0NJSUxpdGVyYWwoImlkIikpOwogICAgIGlmICghY2FsbElkVmFsdWUpIHsK
ICAgICAgICAgcmVwb3J0UHJvdG9jb2xFcnJvcihudWxscHRyLCBJbnZhbGlkUmVxdWVzdCwgQVND
SUlMaXRlcmFsKCInaWQnIHByb3BlcnR5IHdhcyBub3QgZm91bmQiKSk7CiAgICAgICAgIHJldHVy
bjsKQEAgLTEwMiw3ICsxMDIsNyBAQCB2b2lkIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpk
aXNwYXRjaChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
LSAgICBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IG1ldGhvZFZhbHVlID0gbWVzc2FnZU9iamVjdC0+
Z2V0KCJtZXRob2QiKTsKKyAgICBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IG1ldGhvZFZhbHVlID0g
bWVzc2FnZU9iamVjdC0+Z2V0KEFTQ0lJTGl0ZXJhbCgibWV0aG9kIikpOwogICAgIGlmICghbWV0
aG9kVmFsdWUpIHsKICAgICAgICAgcmVwb3J0UHJvdG9jb2xFcnJvcigmY2FsbElkLCBJbnZhbGlk
UmVxdWVzdCwgQVNDSUlMaXRlcmFsKCInbWV0aG9kJyBwcm9wZXJ0eSB3YXNuJ3QgZm91bmQiKSk7
CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvU2NyaXB0Q2FsbFN0YWNrRmFjdG9yeS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL1NjcmlwdENhbGxTdGFja0ZhY3RvcnkuY3BwCmluZGV4IDJmMDYyNzkuLjI3ZGMw
OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvU2NyaXB0Q2Fs
bFN0YWNrRmFjdG9yeS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9T
Y3JpcHRDYWxsU3RhY2tGYWN0b3J5LmNwcApAQCAtMTI0LDcgKzEyNCw3IEBAIHN0YXRpYyB2b2lk
IGV4dHJhY3RTb3VyY2VJbmZvcm1hdGlvbkZyb21FeGNlcHRpb24oSlNDOjpFeGVjU3RhdGUqIGV4
ZWMsIEpTT2JqZWN0CiAgICAgSlNWYWx1ZSBjb2x1bW5WYWx1ZSA9IGV4Y2VwdGlvbk9iamVjdC0+
Z2V0RGlyZWN0KGV4ZWMtPnZtKCksIElkZW50aWZpZXIoZXhlYywgImNvbHVtbiIpKTsKICAgICAq
Y29sdW1uTnVtYmVyID0gY29sdW1uVmFsdWUgJiYgY29sdW1uVmFsdWUuaXNOdW1iZXIoKSA/IGlu
dChjb2x1bW5WYWx1ZS50b051bWJlcihleGVjKSkgOiAwOwogICAgIEpTVmFsdWUgc291cmNlVVJM
VmFsdWUgPSBleGNlcHRpb25PYmplY3QtPmdldERpcmVjdChleGVjLT52bSgpLCBJZGVudGlmaWVy
KGV4ZWMsICJzb3VyY2VVUkwiKSk7Ci0gICAgKnNvdXJjZVVSTCA9IHNvdXJjZVVSTFZhbHVlICYm
IHNvdXJjZVVSTFZhbHVlLmlzU3RyaW5nKCkgPyBzb3VyY2VVUkxWYWx1ZS50b1N0cmluZyhleGVj
KS0+dmFsdWUoZXhlYykgOiBTdHJpbmcoInVuZGVmaW5lZCIpOworICAgICpzb3VyY2VVUkwgPSBz
b3VyY2VVUkxWYWx1ZSAmJiBzb3VyY2VVUkxWYWx1ZS5pc1N0cmluZygpID8gc291cmNlVVJMVmFs
dWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpIDogQVNDSUlMaXRlcmFsKCJ1bmRlZmluZWQi
KTsKICAgICBleGVjLT5jbGVhckV4Y2VwdGlvbigpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0b3JfdGVtcGxh
dGVzLnB5IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4v
Z2VuZXJhdG9yX3RlbXBsYXRlcy5weQpvbGQgbW9kZSAxMDA2NDQKbmV3IG1vZGUgMTAwNzU1Cmlu
ZGV4IDYxNDg1MjUuLmYxZGVlMzUKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdG9yX3RlbXBsYXRlcy5weQorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0b3JfdGVtcGxhdGVz
LnB5CkBAIC0xMjksNyArMTI5LDcgQEAgcHJpdmF0ZToKIAogJHtkaXNwYXRjaENhc2VzfQogICAg
IGVsc2UKLSAgICAgICAgbV9iYWNrZW5kRGlzcGF0Y2hlci0+cmVwb3J0UHJvdG9jb2xFcnJvcigm
Y2FsbElkLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6TWV0aG9kTm90Rm91bmQsIFN0cmlu
ZygiJyIpICsgIiR7ZG9tYWluTmFtZX0iICsgJy4nICsgbWV0aG9kICsgIicgd2FzIG5vdCBmb3Vu
ZCIpOworICAgICAgICBtX2JhY2tlbmREaXNwYXRjaGVyLT5yZXBvcnRQcm90b2NvbEVycm9yKCZj
YWxsSWQsIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpNZXRob2ROb3RGb3VuZCwgbWFrZVN0
cmluZygnXFwnJywgIiR7ZG9tYWluTmFtZX0iLCAnLicsIG1ldGhvZCwgIicgd2FzIG5vdCBmb3Vu
ZCIpKTsKIH0iIiIpCiAKICAgICBCYWNrZW5kRGlzcGF0Y2hlckltcGxlbWVudGF0aW9uTGFyZ2VT
d2l0Y2ggPSAoCkBAIC0xNTQsNyArMTU0LDcgQEAgJHtkaXNwYXRjaENhc2VzfQogCiAgICAgSGFz
aE1hcDxTdHJpbmcsIENhbGxIYW5kbGVyPjo6aXRlcmF0b3IgaXQgPSBkaXNwYXRjaE1hcC5maW5k
KG1ldGhvZCk7CiAgICAgaWYgKGl0ID09IGRpc3BhdGNoTWFwLmVuZCgpKSB7Ci0gICAgICAgIG1f
YmFja2VuZERpc3BhdGNoZXItPnJlcG9ydFByb3RvY29sRXJyb3IoJmNhbGxJZCwgSW5zcGVjdG9y
QmFja2VuZERpc3BhdGNoZXI6Ok1ldGhvZE5vdEZvdW5kLCBTdHJpbmcoIiciKSArICIke2RvbWFp
bk5hbWV9IiArICcuJyArIG1ldGhvZCArICInIHdhcyBub3QgZm91bmQiKTsKKyAgICAgICAgbV9i
YWNrZW5kRGlzcGF0Y2hlci0+cmVwb3J0UHJvdG9jb2xFcnJvcigmY2FsbElkLCBJbnNwZWN0b3JC
YWNrZW5kRGlzcGF0Y2hlcjo6TWV0aG9kTm90Rm91bmQsIG1ha2VTdHJpbmcoJ1xcJycsICIke2Rv
bWFpbk5hbWV9IiwgJy4nLCBtZXRob2QsICInIHdhcyBub3QgZm91bmQiKSk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnBy
ZXRlci9TdGFja1Zpc2l0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVy
L1N0YWNrVmlzaXRvci5jcHAKaW5kZXggYjQ2MDE1Ni4uOTk1YWI2YiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1N0YWNrVmlzaXRvci5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1N0YWNrVmlzaXRvci5jcHAKQEAgLTE5Niw3
ICsxOTYsNyBAQCBTdHJpbmcgU3RhY2tWaXNpdG9yOjpGcmFtZTo6ZnVuY3Rpb25OYW1lKCkKIAog
ICAgIHN3aXRjaCAoY29kZVR5cGUoKSkgewogICAgIGNhc2UgQ29kZVR5cGU6OkV2YWw6Ci0gICAg
ICAgIHRyYWNlTGluZSA9ICJldmFsIGNvZGUiOworICAgICAgICB0cmFjZUxpbmUgPSBBU0NJSUxp
dGVyYWwoImV2YWwgY29kZSIpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIENvZGVUeXBlOjpO
YXRpdmU6CiAgICAgICAgIGlmIChjYWxsZWUpCkBAIC0yMDYsNyArMjA2LDcgQEAgU3RyaW5nIFN0
YWNrVmlzaXRvcjo6RnJhbWU6OmZ1bmN0aW9uTmFtZSgpCiAgICAgICAgIHRyYWNlTGluZSA9IGdl
dENhbGN1bGF0ZWREaXNwbGF5TmFtZShjYWxsRnJhbWUoKSwgY2FsbGVlKS5pbXBsKCk7CiAgICAg
ICAgIGJyZWFrOwogICAgIGNhc2UgQ29kZVR5cGU6Okdsb2JhbDoKLSAgICAgICAgdHJhY2VMaW5l
ID0gImdsb2JhbCBjb2RlIjsKKyAgICAgICAgdHJhY2VMaW5lID0gQVNDSUlMaXRlcmFsKCJnbG9i
YWwgY29kZSIpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgcmV0dXJuIHRyYWNlTGluZS5p
c051bGwoKSA/IGVtcHR5U3RyaW5nKCkgOiB0cmFjZUxpbmU7CkBAIC0yMjYsNyArMjI2LDcgQEAg
U3RyaW5nIFN0YWNrVmlzaXRvcjo6RnJhbWU6OnNvdXJjZVVSTCgpCiAgICAgICAgIGJyZWFrOwog
ICAgIH0KICAgICBjYXNlIENvZGVUeXBlOjpOYXRpdmU6Ci0gICAgICAgIHRyYWNlTGluZSA9ICJb
bmF0aXZlIGNvZGVdIjsKKyAgICAgICAgdHJhY2VMaW5lID0gQVNDSUlMaXRlcmFsKCJbbmF0aXZl
IGNvZGVdIik7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICByZXR1cm4gdHJhY2VMaW5lLmlz
TnVsbCgpID8gZW1wdHlTdHJpbmcoKSA6IHRyYWNlTGluZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCmluZGV4IDlmZmFjNDYuLjQ5ZmEzNmIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcApAQCAtOTY5LDcgKzk2OSw3
IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3UmVnZXhwKEV4ZWNT
dGF0ZSogZXhlYywgdm9pZCogcmVnZXhwUHRyCiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRy
YWNlcigmdm0sIGV4ZWMpOwogICAgIFJlZ0V4cCogcmVnZXhwID0gc3RhdGljX2Nhc3Q8UmVnRXhw
Kj4ocmVnZXhwUHRyKTsKICAgICBpZiAoIXJlZ2V4cC0+aXNWYWxpZCgpKSB7Ci0gICAgICAgIHZt
LnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZVN5bnRheEVycm9yKGV4ZWMsICJJbnZhbGlkIGZs
YWdzIHN1cHBsaWVkIHRvIFJlZ0V4cCBjb25zdHJ1Y3Rvci4iKSk7CisgICAgICAgIHZtLnRocm93
RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZVN5bnRheEVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiSW52
YWxpZCBmbGFncyBzdXBwbGllZCB0byBSZWdFeHAgY29uc3RydWN0b3IuIikpKTsKICAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICB9CiAKQEAgLTE2MTUs
NyArMTYxNSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVsZXRl
QnlJZChFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlCiAgICAgYm9vbCBjb3VsZERlbGV0
ZSA9IGJhc2VPYmotPm1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVydHkoYmFzZU9iaiwgZXhl
YywgKmlkZW50aWZpZXIpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNCb29sZWFuKGNvdWxkRGVs
ZXRlKTsKICAgICBpZiAoIWNvdWxkRGVsZXRlICYmIGV4ZWMtPmNvZGVCbG9jaygpLT5pc1N0cmlj
dE1vZGUoKSkKLSAgICAgICAgdm0udGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlVHlwZUVycm9y
KGV4ZWMsICJVbmFibGUgdG8gZGVsZXRlIHByb3BlcnR5LiIpKTsKKyAgICAgICAgdm0udGhyb3dF
eGNlcHRpb24oZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiVW5hYmxl
IHRvIGRlbGV0ZSBwcm9wZXJ0eS4iKSkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVz
dWx0KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAppbmRleCAzZmRjZWEyLi40OTBiYTBkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvanNjLmNwcApAQCAtNzE0LDggKzcxNCw4IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgZnVuY3Rpb25EZXNjcmliZUFycmF5KEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICBKU09iamVjdCogb2Jq
ZWN0ID0ganNEeW5hbWljQ2FzdDxKU09iamVjdCo+KGV4ZWMtPmFyZ3VtZW50KDApKTsKICAgICBp
ZiAoIW9iamVjdCkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1N0cmluZyhleGVj
LCAiPG5vdCBvYmplY3Q+IikpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNTdHJpbmco
ZXhlYywgdG9TdHJpbmcoIjxQdWJsaWMgbGVuZ3RoOiAiLCBvYmplY3QtPmdldEFycmF5TGVuZ3Ro
KCksICI7IHZlY3RvciBsZW5ndGg6ICIsIG9iamVjdC0+Z2V0VmVjdG9yTGVuZ3RoKCksICI+Iikp
KTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc05vbnRyaXZpYWxTdHJpbmcoZXhl
YywgQVNDSUlMaXRlcmFsKCI8bm90IG9iamVjdD4iKSkpOworICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNOb250cml2aWFsU3RyaW5nKGV4ZWMsIHRvU3RyaW5nKCI8UHVibGljIGxlbmd0aDog
Iiwgb2JqZWN0LT5nZXRBcnJheUxlbmd0aCgpLCAiOyB2ZWN0b3IgbGVuZ3RoOiAiLCBvYmplY3Qt
PmdldFZlY3Rvckxlbmd0aCgpLCAiPiIpKSk7CiB9CiAKIGNsYXNzIEZ1bmN0aW9uSlNDU3RhY2tG
dW5jdG9yIHsKQEAgLTg2OSw3ICs4NjksNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGZ1bmN0aW9uUnVuKEV4ZWNTdGF0ZSogZXhlYykKICAgICBTdHJpbmcgZmlsZU5hbWUgPSBleGVj
LT5hcmd1bWVudCgwKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CiAgICAgVmVjdG9yPGNo
YXI+IHNjcmlwdDsKICAgICBpZiAoIWZpbGxCdWZmZXJXaXRoQ29udGVudHNPZkZpbGUoZmlsZU5h
bWUsIHNjcmlwdCkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoZXhlYy0+dm0oKS50
aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVFcnJvcihleGVjLCAiQ291bGQgbm90IG9wZW4gZmls
ZS4iKSkpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGV4ZWMtPnZtKCkudGhyb3dF
eGNlcHRpb24oZXhlYywgY3JlYXRlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJDb3VsZCBub3Qg
b3BlbiBmaWxlLiIpKSkpOwogCiAgICAgR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBHbG9i
YWxPYmplY3Q6OmNyZWF0ZShleGVjLT52bSgpLCBHbG9iYWxPYmplY3Q6OmNyZWF0ZVN0cnVjdHVy
ZShleGVjLT52bSgpLCBqc051bGwoKSksIFZlY3RvcjxTdHJpbmc+KCkpOwogCkBAIC04OTgsNyAr
ODk4LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkxvYWQoRXhlY1N0
YXRlKiBleGVjKQogICAgIFN0cmluZyBmaWxlTmFtZSA9IGV4ZWMtPmFyZ3VtZW50KDApLnRvU3Ry
aW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKICAgICBWZWN0b3I8Y2hhcj4gc2NyaXB0OwogICAgIGlm
ICghZmlsbEJ1ZmZlcldpdGhDb250ZW50c09mRmlsZShmaWxlTmFtZSwgc2NyaXB0KSkKLSAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMs
IGNyZWF0ZUVycm9yKGV4ZWMsICJDb3VsZCBub3Qgb3BlbiBmaWxlLiIpKSk7CisgICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVh
dGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkNvdWxkIG5vdCBvcGVuIGZpbGUuIikpKSk7CiAK
ICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gZXhlYy0+bGV4aWNhbEdsb2JhbE9i
amVjdCgpOwogICAgIApAQCAtOTE0LDcgKzkxNCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgZnVuY3Rpb25SZWFkRmlsZShFeGVjU3RhdGUqIGV4ZWMpCiAgICAgU3RyaW5nIGZpbGVO
YW1lID0gZXhlYy0+YXJndW1lbnQoMCkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOwogICAg
IFZlY3RvcjxjaGFyPiBzY3JpcHQ7CiAgICAgaWYgKCFmaWxsQnVmZmVyV2l0aENvbnRlbnRzT2ZG
aWxlKGZpbGVOYW1lLCBzY3JpcHQpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGV4
ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlRXJyb3IoZXhlYywgIkNvdWxkIG5v
dCBvcGVuIGZpbGUuIikpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShleGVjLT52
bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgi
Q291bGQgbm90IG9wZW4gZmlsZS4iKSkpKTsKIAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNTdHJpbmcoZXhlYywgc3RyaW5nRnJvbVVURihzY3JpcHQuZGF0YSgpKSkpOwogfQpAQCAtOTI0
LDcgKzkyNCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25DaGVja1N5
bnRheChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgU3RyaW5nIGZpbGVOYW1lID0gZXhlYy0+YXJndW1l
bnQoMCkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOwogICAgIFZlY3RvcjxjaGFyPiBzY3Jp
cHQ7CiAgICAgaWYgKCFmaWxsQnVmZmVyV2l0aENvbnRlbnRzT2ZGaWxlKGZpbGVOYW1lLCBzY3Jp
cHQpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGV4ZWMtPnZtKCkudGhyb3dFeGNl
cHRpb24oZXhlYywgY3JlYXRlRXJyb3IoZXhlYywgIkNvdWxkIG5vdCBvcGVuIGZpbGUuIikpKTsK
KyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShleGVjLT52bSgpLnRocm93RXhjZXB0aW9u
KGV4ZWMsIGNyZWF0ZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiQ291bGQgbm90IG9wZW4gZmls
ZS4iKSkpKTsKIAogICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBleGVjLT5sZXhp
Y2FsR2xvYmFsT2JqZWN0KCk7CiAKQEAgLTEwMTEsMTEgKzEwMTEsMTEgQEAgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblJlb3B0aW1pemF0aW9uUmV0cnlDb3VudChFeGVjU3Rh
dGUqIGV4ZWMpCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uVHJhbnNmZXJB
cnJheUJ1ZmZlcihFeGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291
bnQoKSA8IDEpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoZXhlYy0+dm0oKS50aHJv
d0V4Y2VwdGlvbihleGVjLCBjcmVhdGVFcnJvcihleGVjLCAiTm90IGVub3VnaCBhcmd1bWVudHMi
KSkpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGV4ZWMtPnZtKCkudGhyb3dFeGNl
cHRpb24oZXhlYywgY3JlYXRlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJOb3QgZW5vdWdoIGFy
Z3VtZW50cyIpKSkpOwogICAgIAogICAgIEpTQXJyYXlCdWZmZXIqIGJ1ZmZlciA9IGpzRHluYW1p
Y0Nhc3Q8SlNBcnJheUJ1ZmZlcio+KGV4ZWMtPmFyZ3VtZW50KDApKTsKICAgICBpZiAoIWJ1ZmZl
cikKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShleGVjLT52bSgpLnRocm93RXhjZXB0
aW9uKGV4ZWMsIGNyZWF0ZUVycm9yKGV4ZWMsICJFeHBlY3RlZCBhbiBhcnJheSBidWZmZXIiKSkp
OworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRp
b24oZXhlYywgY3JlYXRlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJFeHBlY3RlZCBhbiBhcnJh
eSBidWZmZXIiKSkpKTsKICAgICAKICAgICBBcnJheUJ1ZmZlckNvbnRlbnRzIGR1bW15Q29udGVu
dHM7CiAgICAgYnVmZmVyLT5pbXBsKCktPnRyYW5zZmVyKGR1bW15Q29udGVudHMpOwpAQCAtMTE4
Niw3ICsxMTg2LDcgQEAgc3RhdGljIGJvb2wgcnVuV2l0aFNjcmlwdHMoR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIGNvbnN0IFZlY3RvcjxTY3JpcHQ+JiBzY3IKICAgICAgICAgICAgIHNjcmlw
dCA9IHNjcmlwdEJ1ZmZlci5kYXRhKCk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBz
Y3JpcHQgPSBzY3JpcHRzW2ldLmFyZ3VtZW50OwotICAgICAgICAgICAgZmlsZU5hbWUgPSAiW0Nv
bW1hbmQgTGluZV0iOworICAgICAgICAgICAgZmlsZU5hbWUgPSBBU0NJSUxpdGVyYWwoIltDb21t
YW5kIExpbmVdIik7CiAgICAgICAgIH0KIAogICAgICAgICB2bS5zdGFydFNhbXBsaW5nKCk7CkBA
IC0xMjI4LDcgKzEyMjgsNyBAQCBzdGF0aWMgYm9vbCBydW5XaXRoU2NyaXB0cyhHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgY29uc3QgVmVjdG9yPFNjcmlwdD4mIHNjcgogCiBzdGF0aWMgdm9p
ZCBydW5JbnRlcmFjdGl2ZShHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIHsKLSAgICBTdHJp
bmcgaW50ZXJwcmV0ZXJOYW1lKCJJbnRlcnByZXRlciIpOworICAgIFN0cmluZyBpbnRlcnByZXRl
ck5hbWUoQVNDSUlMaXRlcmFsKCJJbnRlcnByZXRlciIpKTsKICAgICAKICAgICBib29sIHNob3Vs
ZFF1aXQgPSBmYWxzZTsKICAgICB3aGlsZSAoIXNob3VsZFF1aXQpIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9MZXhlci5jcHAKaW5kZXggNjdjMDFmYi4uNzE1MjNlYSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9MZXhlci5jcHAKQEAgLTUwNiwyMSArNTA2LDIxIEBAIFN0cmluZyBM
ZXhlcjxUPjo6aW52YWxpZENoYXJhY3Rlck1lc3NhZ2UoKSBjb25zdAogewogICAgIHN3aXRjaCAo
bV9jdXJyZW50KSB7CiAgICAgY2FzZSAwOgotICAgICAgICByZXR1cm4gIkludmFsaWQgY2hhcmFj
dGVyOiAnXFwwJyI7CisgICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwoIkludmFsaWQgY2hhcmFj
dGVyOiAnXFwwJyIpOwogICAgIGNhc2UgMTA6Ci0gICAgICAgIHJldHVybiAiSW52YWxpZCBjaGFy
YWN0ZXI6ICdcXG4nIjsKKyAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgiSW52YWxpZCBjaGFy
YWN0ZXI6ICdcXG4nIik7CiAgICAgY2FzZSAxMToKLSAgICAgICAgcmV0dXJuICJJbnZhbGlkIGNo
YXJhY3RlcjogJ1xcdiciOworICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJJbnZhbGlkIGNo
YXJhY3RlcjogJ1xcdiciKTsKICAgICBjYXNlIDEzOgotICAgICAgICByZXR1cm4gIkludmFsaWQg
Y2hhcmFjdGVyOiAnXFxyJyI7CisgICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwoIkludmFsaWQg
Y2hhcmFjdGVyOiAnXFxyJyIpOwogICAgIGNhc2UgMzU6Ci0gICAgICAgIHJldHVybiAiSW52YWxp
ZCBjaGFyYWN0ZXI6ICcjJyI7CisgICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwoIkludmFsaWQg
Y2hhcmFjdGVyOiAnIyciKTsKICAgICBjYXNlIDY0OgotICAgICAgICByZXR1cm4gIkludmFsaWQg
Y2hhcmFjdGVyOiAnQCciOworICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJJbnZhbGlkIGNo
YXJhY3RlcjogJ0AnIik7CiAgICAgY2FzZSA5NjoKLSAgICAgICAgcmV0dXJuICJJbnZhbGlkIGNo
YXJhY3RlcjogJ2AnIjsKKyAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgiSW52YWxpZCBjaGFy
YWN0ZXI6ICdgJyIpOwogICAgIGRlZmF1bHQ6Ci0gICAgICAgIHJldHVybiBTdHJpbmc6OmZvcm1h
dCgiSW52YWxpZCBjaGFyYWN0ZXIgJ1xcdSUwNHUnIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1f
Y3VycmVudCkpLmltcGwoKTsKKyAgICAgICAgcmV0dXJuIFN0cmluZzo6Zm9ybWF0KCJJbnZhbGlk
IGNoYXJhY3RlciAnXFx1JTA0dSciLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9jdXJyZW50KSk7
CiAgICAgfQogfQogCkBAIC0xMDI2LDcgKzEwMjYsNyBAQCB0ZW1wbGF0ZSA8Ym9vbCBzaG91bGRC
dWlsZFN0cmluZ3M+IEFMV0FZU19JTkxJTkUgdHlwZW5hbWUgTGV4ZXI8VD46OlN0cmluZ1BhcnNl
UgogICAgICAgICAgICAgZWxzZSBpZiAobV9jdXJyZW50ID09ICd4JykgewogICAgICAgICAgICAg
ICAgIHNoaWZ0KCk7CiAgICAgICAgICAgICAgICAgaWYgKCFpc0FTQ0lJSGV4RGlnaXQobV9jdXJy
ZW50KSB8fCAhaXNBU0NJSUhleERpZ2l0KHBlZWsoMSkpKSB7Ci0gICAgICAgICAgICAgICAgICAg
IG1fbGV4RXJyb3JNZXNzYWdlID0gIlxceCBjYW4gb25seSBiZSBmb2xsb3dlZCBieSBhIGhleCBj
aGFyYWN0ZXIgc2VxdWVuY2UiOworICAgICAgICAgICAgICAgICAgICBtX2xleEVycm9yTWVzc2Fn
ZSA9IEFTQ0lJTGl0ZXJhbCgiXFx4IGNhbiBvbmx5IGJlIGZvbGxvd2VkIGJ5IGEgaGV4IGNoYXJh
Y3RlciBzZXF1ZW5jZSIpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm4gKGF0RW5kKCkgfHwg
KGlzQVNDSUlIZXhEaWdpdChtX2N1cnJlbnQpICYmIChtX2NvZGUgKyAxID09IG1fY29kZUVuZCkp
KSA/IFN0cmluZ1VudGVybWluYXRlZCA6IFN0cmluZ0Nhbm5vdEJlUGFyc2VkOwogICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgICAgICBUIHByZXYgPSBtX2N1cnJlbnQ7CkBAIC0xMDkxLDcg
KzEwOTEsNyBAQCB0ZW1wbGF0ZSA8Ym9vbCBzaG91bGRCdWlsZFN0cmluZ3M+IHR5cGVuYW1lIExl
eGVyPFQ+OjpTdHJpbmdQYXJzZVJlc3VsdCBMZXhlcjxUPgogICAgICAgICAgICAgZWxzZSBpZiAo
bV9jdXJyZW50ID09ICd4JykgewogICAgICAgICAgICAgICAgIHNoaWZ0KCk7CiAgICAgICAgICAg
ICAgICAgaWYgKCFpc0FTQ0lJSGV4RGlnaXQobV9jdXJyZW50KSB8fCAhaXNBU0NJSUhleERpZ2l0
KHBlZWsoMSkpKSB7Ci0gICAgICAgICAgICAgICAgICAgIG1fbGV4RXJyb3JNZXNzYWdlID0gIlxc
eCBjYW4gb25seSBiZSBmb2xsb3dlZCBieSBhIGhleCBjaGFyYWN0ZXIgc2VxdWVuY2UiOworICAg
ICAgICAgICAgICAgICAgICBtX2xleEVycm9yTWVzc2FnZSA9IEFTQ0lJTGl0ZXJhbCgiXFx4IGNh
biBvbmx5IGJlIGZvbGxvd2VkIGJ5IGEgaGV4IGNoYXJhY3RlciBzZXF1ZW5jZSIpOwogICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gU3RyaW5nQ2Fubm90QmVQYXJzZWQ7CiAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgICAgIFQgcHJldiA9IG1fY3VycmVudDsKQEAgLTExMDksNyArMTEw
OSw3IEBAIHRlbXBsYXRlIDxib29sIHNob3VsZEJ1aWxkU3RyaW5ncz4gdHlwZW5hbWUgTGV4ZXI8
VD46OlN0cmluZ1BhcnNlUmVzdWx0IExleGVyPFQ+CiAgICAgICAgICAgICAgICAgICAgIGlmIChz
aG91bGRCdWlsZFN0cmluZ3MpCiAgICAgICAgICAgICAgICAgICAgICAgICByZWNvcmQxNigndScp
OwogICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIG1fbGV4RXJy
b3JNZXNzYWdlID0gIlxcdSBjYW4gb25seSBiZSBmb2xsb3dlZCBieSBhIFVuaWNvZGUgY2hhcmFj
dGVyIHNlcXVlbmNlIjsKKyAgICAgICAgICAgICAgICAgICAgbV9sZXhFcnJvck1lc3NhZ2UgPSBB
U0NJSUxpdGVyYWwoIlxcdSBjYW4gb25seSBiZSBmb2xsb3dlZCBieSBhIFVuaWNvZGUgY2hhcmFj
dGVyIHNlcXVlbmNlIik7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjaGFyYWN0ZXIudmFs
dWVUeXBlKCkgPT0gVW5pY29kZUhleFZhbHVlOjpJbmNvbXBsZXRlSGV4ID8gU3RyaW5nVW50ZXJt
aW5hdGVkIDogU3RyaW5nQ2Fubm90QmVQYXJzZWQ7CiAgICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgfSBlbHNlIGlmIChzdHJpY3RNb2RlICYmIGlzQVNDSUlEaWdpdChtX2N1cnJlbnQpKSB7
CkBAIC0xMTE3LDcgKzExMTcsNyBAQCB0ZW1wbGF0ZSA8Ym9vbCBzaG91bGRCdWlsZFN0cmluZ3M+
IHR5cGVuYW1lIExleGVyPFQ+OjpTdHJpbmdQYXJzZVJlc3VsdCBMZXhlcjxUPgogICAgICAgICAg
ICAgICAgIGludCBjaGFyYWN0ZXIxID0gbV9jdXJyZW50OwogICAgICAgICAgICAgICAgIHNoaWZ0
KCk7CiAgICAgICAgICAgICAgICAgaWYgKGNoYXJhY3RlcjEgIT0gJzAnIHx8IGlzQVNDSUlEaWdp
dChtX2N1cnJlbnQpKSB7Ci0gICAgICAgICAgICAgICAgICAgIG1fbGV4RXJyb3JNZXNzYWdlID0g
IlRoZSBvbmx5IHZhbGlkIG51bWVyaWMgZXNjYXBlIGluIHN0cmljdCBtb2RlIGlzICdcXDAnIjsK
KyAgICAgICAgICAgICAgICAgICAgbV9sZXhFcnJvck1lc3NhZ2UgPSBBU0NJSUxpdGVyYWwoIlRo
ZSBvbmx5IHZhbGlkIG51bWVyaWMgZXNjYXBlIGluIHN0cmljdCBtb2RlIGlzICdcXDAnIik7CiAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBTdHJpbmdDYW5ub3RCZVBhcnNlZDsKICAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICAgICAgaWYgKHNob3VsZEJ1aWxkU3RyaW5ncykKQEAgLTEx
NDcsNyArMTE0Nyw3IEBAIHRlbXBsYXRlIDxib29sIHNob3VsZEJ1aWxkU3RyaW5ncz4gdHlwZW5h
bWUgTGV4ZXI8VD46OlN0cmluZ1BhcnNlUmVzdWx0IExleGVyPFQ+CiAgICAgICAgICAgICAgICAg
ICAgIHJlY29yZDE2KG1fY3VycmVudCk7CiAgICAgICAgICAgICAgICAgc2hpZnQoKTsKICAgICAg
ICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgbV9sZXhFcnJvck1lc3NhZ2UgPSAiVW50
ZXJtaW5hdGVkIHN0cmluZyBjb25zdGFudCI7CisgICAgICAgICAgICAgICAgbV9sZXhFcnJvck1l
c3NhZ2UgPSBBU0NJSUxpdGVyYWwoIlVudGVybWluYXRlZCBzdHJpbmcgY29uc3RhbnQiKTsKICAg
ICAgICAgICAgICAgICByZXR1cm4gU3RyaW5nVW50ZXJtaW5hdGVkOwogICAgICAgICAgICAgfQog
CkBAIC0xMTYwLDcgKzExNjAsNyBAQCB0ZW1wbGF0ZSA8Ym9vbCBzaG91bGRCdWlsZFN0cmluZ3M+
IHR5cGVuYW1lIExleGVyPFQ+OjpTdHJpbmdQYXJzZVJlc3VsdCBMZXhlcjxUPgogICAgICAgICBp
ZiAoVU5MSUtFTFkoKChzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9jdXJyZW50KSAtIDB4RSkgJiAw
eDIwMDApKSkgewogICAgICAgICAgICAgLy8gTmV3LWxpbmUgb3IgZW5kIG9mIGlucHV0IGlzIG5v
dCBhbGxvd2VkCiAgICAgICAgICAgICBpZiAoYXRFbmQoKSB8fCBpc0xpbmVUZXJtaW5hdG9yKG1f
Y3VycmVudCkpIHsKLSAgICAgICAgICAgICAgICBtX2xleEVycm9yTWVzc2FnZSA9ICJVbmV4cGVj
dGVkIEVPRiI7CisgICAgICAgICAgICAgICAgbV9sZXhFcnJvck1lc3NhZ2UgPSBBU0NJSUxpdGVy
YWwoIlVuZXhwZWN0ZWQgRU9GIik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGF0RW5kKCkgPyBT
dHJpbmdVbnRlcm1pbmF0ZWQgOiBTdHJpbmdDYW5ub3RCZVBhcnNlZDsKICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgIC8vIEFueXRoaW5nIGVsc2UgaXMganVzdCBhIG5vcm1hbCBjaGFyYWN0ZXIK
QEAgLTE1MjIsNyArMTUyMiw3IEBAIHN0YXJ0OgogICAgICAgICAgICAgc2hpZnQoKTsKICAgICAg
ICAgICAgIGlmIChwYXJzZU11bHRpbGluZUNvbW1lbnQoKSkKICAgICAgICAgICAgICAgICBnb3Rv
IHN0YXJ0OwotICAgICAgICAgICAgbV9sZXhFcnJvck1lc3NhZ2UgPSAiTXVsdGlsaW5lIGNvbW1l
bnQgd2FzIG5vdCBjbG9zZWQgcHJvcGVybHkiOworICAgICAgICAgICAgbV9sZXhFcnJvck1lc3Nh
Z2UgPSBBU0NJSUxpdGVyYWwoIk11bHRpbGluZSBjb21tZW50IHdhcyBub3QgY2xvc2VkIHByb3Bl
cmx5Iik7CiAgICAgICAgICAgICB0b2tlbiA9IFVOVEVSTUlOQVRFRF9NVUxUSUxJTkVfQ09NTUVO
VF9FUlJPUlRPSzsKICAgICAgICAgICAgIGdvdG8gcmV0dXJuRXJyb3I7CiAgICAgICAgIH0KQEAg
LTE2NDgsMTMgKzE2NDgsMTMgQEAgc3RhcnQ6CiAgICAgICAgIHNoaWZ0KCk7CiAgICAgICAgIGlm
ICgobV9jdXJyZW50IHwgMHgyMCkgPT0gJ3gnKSB7CiAgICAgICAgICAgICBpZiAoIWlzQVNDSUlI
ZXhEaWdpdChwZWVrKDEpKSkgewotICAgICAgICAgICAgICAgIG1fbGV4RXJyb3JNZXNzYWdlID0g
Ik5vIGhleGFkZWNpbWFsIGRpZ2l0cyBhZnRlciAnMHgnIjsKKyAgICAgICAgICAgICAgICBtX2xl
eEVycm9yTWVzc2FnZSA9IEFTQ0lJTGl0ZXJhbCgiTm8gaGV4YWRlY2ltYWwgZGlnaXRzIGFmdGVy
ICcweCciKTsKICAgICAgICAgICAgICAgICB0b2tlbiA9IElOVkFMSURfSEVYX05VTUJFUl9FUlJP
UlRPSzsKICAgICAgICAgICAgICAgICBnb3RvIHJldHVybkVycm9yOwogICAgICAgICAgICAgfQog
ICAgICAgICAgICAgcGFyc2VIZXgodG9rZW5EYXRhLT5kb3VibGVWYWx1ZSk7CiAgICAgICAgICAg
ICBpZiAoaXNJZGVudFN0YXJ0KG1fY3VycmVudCkpIHsKLSAgICAgICAgICAgICAgICBtX2xleEVy
cm9yTWVzc2FnZSA9ICJObyBzcGFjZSBiZXR3ZWVuIGhleGFkZWNpbWFsIGxpdGVyYWwgYW5kIGlk
ZW50aWZpZXIiOworICAgICAgICAgICAgICAgIG1fbGV4RXJyb3JNZXNzYWdlID0gQVNDSUlMaXRl
cmFsKCJObyBzcGFjZSBiZXR3ZWVuIGhleGFkZWNpbWFsIGxpdGVyYWwgYW5kIGlkZW50aWZpZXIi
KTsKICAgICAgICAgICAgICAgICB0b2tlbiA9IElOVkFMSURfSEVYX05VTUJFUl9FUlJPUlRPSzsK
ICAgICAgICAgICAgICAgICBnb3RvIHJldHVybkVycm9yOwogICAgICAgICAgICAgfQpAQCAtMTY2
NSw3ICsxNjY1LDcgQEAgc3RhcnQ6CiAKICAgICAgICAgcmVjb3JkOCgnMCcpOwogICAgICAgICBp
ZiAoc3RyaWN0TW9kZSAmJiBpc0FTQ0lJRGlnaXQobV9jdXJyZW50KSkgewotICAgICAgICAgICAg
bV9sZXhFcnJvck1lc3NhZ2UgPSAiRGVjaW1hbCBpbnRlZ2VyIGxpdGVyYWxzIHdpdGggYSBsZWFk
aW5nIHplcm8gYXJlIGZvcmJpZGRlbiBpbiBzdHJpY3QgbW9kZSI7CisgICAgICAgICAgICBtX2xl
eEVycm9yTWVzc2FnZSA9IEFTQ0lJTGl0ZXJhbCgiRGVjaW1hbCBpbnRlZ2VyIGxpdGVyYWxzIHdp
dGggYSBsZWFkaW5nIHplcm8gYXJlIGZvcmJpZGRlbiBpbiBzdHJpY3QgbW9kZSIpOwogICAgICAg
ICAgICAgdG9rZW4gPSBJTlZBTElEX09DVEFMX05VTUJFUl9FUlJPUlRPSzsKICAgICAgICAgICAg
IGdvdG8gcmV0dXJuRXJyb3I7CiAgICAgICAgIH0KQEAgLTE2ODUsNyArMTY4NSw3IEBAIGluTnVt
YmVyQWZ0ZXJEZWNpbWFsUG9pbnQ6CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAg
IGlmICgobV9jdXJyZW50IHwgMHgyMCkgPT0gJ2UnKSB7CiAgICAgICAgICAgICAgICAgICAgIGlm
ICghcGFyc2VOdW1iZXJBZnRlckV4cG9uZW50SW5kaWNhdG9yKCkpIHsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIG1fbGV4RXJyb3JNZXNzYWdlID0gIk5vbi1udW1iZXIgZm91bmQgYWZ0ZXIgZXhw
b25lbnQgaW5kaWNhdG9yIjsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fbGV4RXJyb3JNZXNz
YWdlID0gQVNDSUlMaXRlcmFsKCJOb24tbnVtYmVyIGZvdW5kIGFmdGVyIGV4cG9uZW50IGluZGlj
YXRvciIpOwogICAgICAgICAgICAgICAgICAgICAgICAgdG9rZW4gPSBhdEVuZCgpID8gVU5URVJN
SU5BVEVEX05VTUVSSUNfTElURVJBTF9FUlJPUlRPSyA6IElOVkFMSURfTlVNRVJJQ19MSVRFUkFM
X0VSUk9SVE9LOwogICAgICAgICAgICAgICAgICAgICAgICAgZ290byByZXR1cm5FcnJvcjsKICAg
ICAgICAgICAgICAgICAgICAgfQpAQCAtMTY5OCw3ICsxNjk4LDcgQEAgaW5OdW1iZXJBZnRlckRl
Y2ltYWxQb2ludDoKIAogICAgICAgICAvLyBObyBpZGVudGlmaWVycyBhbGxvd2VkIGRpcmVjdGx5
IGFmdGVyIG51bWVyaWMgbGl0ZXJhbCwgZS5nLiAiM2luIiBpcyBiYWQuCiAgICAgICAgIGlmIChV
TkxJS0VMWShpc0lkZW50U3RhcnQobV9jdXJyZW50KSkpIHsKLSAgICAgICAgICAgIG1fbGV4RXJy
b3JNZXNzYWdlID0gIkF0IGxlYXN0IG9uZSBkaWdpdCBtdXN0IG9jY3VyIGFmdGVyIGEgZGVjaW1h
bCBwb2ludCI7CisgICAgICAgICAgICBtX2xleEVycm9yTWVzc2FnZSA9IEFTQ0lJTGl0ZXJhbCgi
QXQgbGVhc3Qgb25lIGRpZ2l0IG11c3Qgb2NjdXIgYWZ0ZXIgYSBkZWNpbWFsIHBvaW50Iik7CiAg
ICAgICAgICAgICB0b2tlbiA9IGF0RW5kKCkgPyBVTlRFUk1JTkFURURfTlVNRVJJQ19MSVRFUkFM
X0VSUk9SVE9LIDogSU5WQUxJRF9OVU1FUklDX0xJVEVSQUxfRVJST1JUT0s7CiAgICAgICAgICAg
ICBnb3RvIHJldHVybkVycm9yOwogICAgICAgICB9CkBAIC0xNzQ5LDcgKzE3NDksNyBAQCBpbk51
bWJlckFmdGVyRGVjaW1hbFBvaW50OgogICAgICAgICBnb3RvIHJldHVybkVycm9yOwogICAgIGRl
ZmF1bHQ6CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIG1f
bGV4RXJyb3JNZXNzYWdlID0gIkludGVybmFsIEVycm9yIjsKKyAgICAgICAgbV9sZXhFcnJvck1l
c3NhZ2UgPSBBU0NJSUxpdGVyYWwoIkludGVybmFsIEVycm9yIik7CiAgICAgICAgIHRva2VuID0g
RVJST1JUT0s7CiAgICAgICAgIGdvdG8gcmV0dXJuRXJyb3I7CiAgICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGUuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGUuY3BwCmluZGV4IGI1ZTAyMjQuLjc3YzgzN2YgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZS5jcHAKQEAgLTQzLDcgKzQz
LDcgQEAgUHJvZmlsZTo6UHJvZmlsZShjb25zdCBTdHJpbmcmIHRpdGxlLCB1bnNpZ25lZCB1aWQp
CiB7CiAgICAgLy8gRklYTUU6IFdoZW4gbXVsdGktdGhyZWFkaW5nIGlzIHN1cHBvcnRlZCB0aGlz
IHdpbGwgYmUgYSB2ZWN0b3IgYW5kIGNhbGxzCiAgICAgLy8gaW50byB0aGUgcHJvZmlsZXIgd2ls
bCBuZWVkIHRvIGtub3cgd2hpY2ggdGhyZWFkIGl0IGlzIGV4ZWN1dGluZyBvbi4KLSAgICBtX2hl
YWQgPSBQcm9maWxlTm9kZTo6Y3JlYXRlKDAsIENhbGxJZGVudGlmaWVyKCJUaHJlYWRfMSIsIFN0
cmluZygpLCAwLCAwKSwgMCwgMCk7CisgICAgbV9oZWFkID0gUHJvZmlsZU5vZGU6OmNyZWF0ZSgw
LCBDYWxsSWRlbnRpZmllcihBU0NJSUxpdGVyYWwoIlRocmVhZF8xIiksIFN0cmluZygpLCAwLCAw
KSwgMCwgMCk7CiB9CiAKIFByb2ZpbGU6On5Qcm9maWxlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Bcmd1bWVudHMuY3BwCmluZGV4IDhmNGE3NzguLmYzNDA1NWEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50cy5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzLmNwcApAQCAtNDM1LDcgKzQzNSw3
IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJndW1lbnRzRnVuY0l0ZXJhdG9yKEV4
ZWNTdGF0ZSogZXhlYykKICAgICBKU09iamVjdCogdGhpc09iaiA9IGV4ZWMtPnRoaXNWYWx1ZSgp
LnRvVGhpcyhleGVjLCBTdHJpY3RNb2RlKS50b09iamVjdChleGVjKTsKICAgICBBcmd1bWVudHMq
IGFyZ3VtZW50cyA9IGpzRHluYW1pY0Nhc3Q8QXJndW1lbnRzKj4odGhpc09iaik7CiAgICAgaWYg
KCFhcmd1bWVudHMpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJy
b3IoZXhlYywgIkF0dGVtcHRlZCB0byB1c2UgQXJndW1lbnRzIGl0ZXJhdG9yIG9uIG5vbi1Bcmd1
bWVudHMgb2JqZWN0IikpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlw
ZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiQXR0ZW1wdGVkIHRvIHVzZSBBcmd1bWVudHMgaXRl
cmF0b3Igb24gbm9uLUFyZ3VtZW50cyBvYmplY3QiKSkpOwogICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoSlNBcmd1bWVudHNJdGVyYXRvcjo6Y3JlYXRlKGV4ZWMtPnZtKCksIGV4ZWMtPmNhbGxl
ZSgpLT5nbG9iYWxPYmplY3QoKS0+YXJndW1lbnRzSXRlcmF0b3JTdHJ1Y3R1cmUoKSwgYXJndW1l
bnRzKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Fy
cmF5UHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJv
dG90eXBlLmNwcAppbmRleCBiNDFmZWM1Li5jNzk5Y2MzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwCkBAIC02OTQsNyArNjk0LDcgQEAg
c3RhdGljIGJvb2wgcGVyZm9ybVNsb3dTb3J0KEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHRo
aXNPYmosIHVuc2lnbmVkIGxlbmd0aCwKICAgICAgICAgICAgICAgICBpZiAoZXhlYy0+aGFkRXhj
ZXB0aW9uKCkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAg
IH0gZWxzZSBpZiAoIXRoaXNPYmotPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5kZWxldGVQcm9w
ZXJ0eUJ5SW5kZXgodGhpc09iaiwgZXhlYywgaSkpIHsKLSAgICAgICAgICAgICAgICB0aHJvd1R5
cGVFcnJvcihleGVjLCAiVW5hYmxlIHRvIGRlbGV0ZSBwcm9wZXJ0eS4iKTsKKyAgICAgICAgICAg
ICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlVuYWJsZSB0byBkZWxldGUg
cHJvcGVydHkuIikpOwogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAg
IH0KICAgICAgICAgICAgIGlmIChpT2JqKSB7CkBAIC03MDIsNyArNzAyLDcgQEAgc3RhdGljIGJv
b2wgcGVyZm9ybVNsb3dTb3J0KEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHRoaXNPYmosIHVu
c2lnbmVkIGxlbmd0aCwKICAgICAgICAgICAgICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkp
CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIH0gZWxzZSBp
ZiAoIXRoaXNPYmotPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5kZWxldGVQcm9wZXJ0eUJ5SW5k
ZXgodGhpc09iaiwgZXhlYywgdGhlbWluKSkgewotICAgICAgICAgICAgICAgIHRocm93VHlwZUVy
cm9yKGV4ZWMsICJVbmFibGUgdG8gZGVsZXRlIHByb3BlcnR5LiIpOworICAgICAgICAgICAgICAg
IHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiVW5hYmxlIHRvIGRlbGV0ZSBwcm9w
ZXJ0eS4iKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgfQog
ICAgICAgICB9CkBAIC03NjcsNyArNzY3LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBhcnJheVByb3RvRnVuY1NvcnQoRXhlY1N0YXRlKiBleGVjKQogICAgICAgICAgICAgY29udGlu
dWU7CiAgICAgICAgIAogICAgICAgICBpZiAoIXRoaXNPYmotPm1ldGhvZFRhYmxlKGV4ZWMtPnZt
KCkpLT5kZWxldGVQcm9wZXJ0eUJ5SW5kZXgodGhpc09iaiwgZXhlYywgaW5kZXgpKSB7Ci0gICAg
ICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCAiVW5hYmxlIHRvIGRlbGV0ZSBwcm9wZXJ0eS4i
KTsKKyAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiVW5hYmxl
IHRvIGRlbGV0ZSBwcm9wZXJ0eS4iKSk7CiAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzVW5kZWZpbmVkKCkpOwogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmNwcAppbmRleCA2YjMzYzhkLi41
NTU1Mzk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRp
b25IZWxwZXJzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRp
b25IZWxwZXJzLmNwcApAQCAtMTIyLDcgKzEyMiw3IEBAIEpTU3RyaW5nKiBlcnJvckRlc2NyaXB0
aW9uRm9yVmFsdWUoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHYpCiAgICAgCiBKU09iamVjdCog
Y3JlYXRlRXJyb3IoRXhlY1N0YXRlKiBleGVjLCBFcnJvckZhY3RvcnkgZXJyb3JGYWN0b3J5LCBK
U1ZhbHVlIHZhbHVlLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiB7Ci0gICAgU3RyaW5nIGVycm9y
TWVzc2FnZSA9IG1ha2VTdHJpbmcoZXJyb3JEZXNjcmlwdGlvbkZvclZhbHVlKGV4ZWMsIHZhbHVl
KS0+dmFsdWUoZXhlYyksICIgIiwgbWVzc2FnZSk7CisgICAgU3RyaW5nIGVycm9yTWVzc2FnZSA9
IG1ha2VTdHJpbmcoZXJyb3JEZXNjcmlwdGlvbkZvclZhbHVlKGV4ZWMsIHZhbHVlKS0+dmFsdWUo
ZXhlYyksICcgJywgbWVzc2FnZSk7CiAgICAgSlNPYmplY3QqIGV4Y2VwdGlvbiA9IGVycm9yRmFj
dG9yeShleGVjLCBlcnJvck1lc3NhZ2UpOwogICAgIEFTU0VSVChleGNlcHRpb24tPmlzRXJyb3JJ
bnN0YW5jZSgpKTsKICAgICBzdGF0aWNfY2FzdDxFcnJvckluc3RhbmNlKj4oZXhjZXB0aW9uKS0+
c2V0QXBwZW5kU291cmNlVG9NZXNzYWdlKCk7CkBAIC0xMzEsMjcgKzEzMSwyNyBAQCBKU09iamVj
dCogY3JlYXRlRXJyb3IoRXhlY1N0YXRlKiBleGVjLCBFcnJvckZhY3RvcnkgZXJyb3JGYWN0b3J5
LCBKU1ZhbHVlIHZhbHVlLAogCiBKU09iamVjdCogY3JlYXRlSW52YWxpZFBhcmFtZXRlckVycm9y
KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgY2hhciogb3AsIEpTVmFsdWUgdmFsdWUpCiB7Ci0gICAg
cmV0dXJuIGNyZWF0ZUVycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvciwgdmFsdWUsIG1ha2VTdHJp
bmcoImlzIG5vdCBhIHZhbGlkIGFyZ3VtZW50IGZvciAnIiwgb3AsICInIikpOworICAgIHJldHVy
biBjcmVhdGVFcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IsIHZhbHVlLCBtYWtlU3RyaW5nKCJp
cyBub3QgYSB2YWxpZCBhcmd1bWVudCBmb3IgJyIsIG9wLCAnXCcnKSk7CiB9CiAKIEpTT2JqZWN0
KiBjcmVhdGVOb3RBQ29uc3RydWN0b3JFcnJvcihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFs
dWUpCiB7Ci0gICAgcmV0dXJuIGNyZWF0ZUVycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvciwgdmFs
dWUsICJpcyBub3QgYSBjb25zdHJ1Y3RvciIpOworICAgIHJldHVybiBjcmVhdGVFcnJvcihleGVj
LCBjcmVhdGVUeXBlRXJyb3IsIHZhbHVlLCBBU0NJSUxpdGVyYWwoImlzIG5vdCBhIGNvbnN0cnVj
dG9yIikpOwogfQogCiBKU09iamVjdCogY3JlYXRlTm90QUZ1bmN0aW9uRXJyb3IoRXhlY1N0YXRl
KiBleGVjLCBKU1ZhbHVlIHZhbHVlKQogewotICAgIHJldHVybiBjcmVhdGVFcnJvcihleGVjLCBj
cmVhdGVUeXBlRXJyb3IsIHZhbHVlLCAiaXMgbm90IGEgZnVuY3Rpb24iKTsKKyAgICByZXR1cm4g
Y3JlYXRlRXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9yLCB2YWx1ZSwgQVNDSUlMaXRlcmFsKCJp
cyBub3QgYSBmdW5jdGlvbiIpKTsKIH0KIAogSlNPYmplY3QqIGNyZWF0ZU5vdEFuT2JqZWN0RXJy
b3IoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVlKQogewotICAgIHJldHVybiBjcmVhdGVF
cnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IsIHZhbHVlLCAiaXMgbm90IGFuIG9iamVjdCIpOwor
ICAgIHJldHVybiBjcmVhdGVFcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IsIHZhbHVlLCBBU0NJ
SUxpdGVyYWwoImlzIG5vdCBhbiBvYmplY3QiKSk7CiB9CiAKIEpTT2JqZWN0KiBjcmVhdGVFcnJv
ckZvckludmFsaWRHbG9iYWxBc3NpZ25tZW50KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU3RyaW5n
JiBwcm9wZXJ0eU5hbWUpCiB7Ci0gICAgcmV0dXJuIGNyZWF0ZVJlZmVyZW5jZUVycm9yKGV4ZWMs
IG1ha2VTdHJpbmcoIlN0cmljdCBtb2RlIGZvcmJpZHMgaW1wbGljaXQgY3JlYXRpb24gb2YgZ2xv
YmFsIHByb3BlcnR5ICciLCBwcm9wZXJ0eU5hbWUsICInIikpOworICAgIHJldHVybiBjcmVhdGVS
ZWZlcmVuY2VFcnJvcihleGVjLCBtYWtlU3RyaW5nKCJTdHJpY3QgbW9kZSBmb3JiaWRzIGltcGxp
Y2l0IGNyZWF0aW9uIG9mIGdsb2JhbCBwcm9wZXJ0eSAnIiwgcHJvcGVydHlOYW1lLCAnXCcnKSk7
CiB9CiAKIEpTT2JqZWN0KiBjcmVhdGVPdXRPZk1lbW9yeUVycm9yKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9G
dW5jdGlvblByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5j
dGlvblByb3RvdHlwZS5jcHAKaW5kZXggM2MyNTZmMi4uZDQ0MGEyYjcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5jcHAKQEAgLTg1
LDcgKzg1LDcgQEAgQ2FsbFR5cGUgRnVuY3Rpb25Qcm90b3R5cGU6OmdldENhbGxEYXRhKEpTQ2Vs
bCosIENhbGxEYXRhJiBjYWxsRGF0YSkKIHN0YXRpYyBpbmxpbmUgdm9pZCBpbnNlcnRTZW1pY29s
b25JZk5lZWRlZChTdHJpbmcmIGZ1bmN0aW9uQm9keSwgYm9vbCBib2R5SW5jbHVkZXNCcmFjZXMp
CiB7CiAgICAgaWYgKCFib2R5SW5jbHVkZXNCcmFjZXMpCi0gICAgICAgIGZ1bmN0aW9uQm9keSA9
IG1ha2VTdHJpbmcoInsgIiwgZnVuY3Rpb25Cb2R5LCAifSIpOworICAgICAgICBmdW5jdGlvbkJv
ZHkgPSBtYWtlU3RyaW5nKCJ7ICIsIGZ1bmN0aW9uQm9keSwgJ30nKTsKIAogICAgIEFTU0VSVChm
dW5jdGlvbkJvZHlbMF0gPT0gJ3snKTsKICAgICBBU1NFUlQoZnVuY3Rpb25Cb2R5W2Z1bmN0aW9u
Qm9keS5sZW5ndGgoKSAtIDFdID09ICd9Jyk7CkBAIC05NCw3ICs5NCw3IEBAIHN0YXRpYyBpbmxp
bmUgdm9pZCBpbnNlcnRTZW1pY29sb25JZk5lZWRlZChTdHJpbmcmIGZ1bmN0aW9uQm9keSwgYm9v
bCBib2R5SW5jbHVkCiAgICAgICAgIFVDaGFyIGNoID0gZnVuY3Rpb25Cb2R5W2ldOwogICAgICAg
ICBpZiAoIUxleGVyPFVDaGFyPjo6aXNXaGl0ZVNwYWNlKGNoKSAmJiAhTGV4ZXI8VUNoYXI+Ojpp
c0xpbmVUZXJtaW5hdG9yKGNoKSkgewogICAgICAgICAgICAgaWYgKGNoICE9ICc7JyAmJiBjaCAh
PSAnfScpCi0gICAgICAgICAgICAgICAgZnVuY3Rpb25Cb2R5ID0gbWFrZVN0cmluZyhmdW5jdGlv
bkJvZHkuc3Vic3RyaW5nU2hhcmluZ0ltcGwoMCwgaSArIDEpLCAiOyIsIGZ1bmN0aW9uQm9keS5z
dWJzdHJpbmdTaGFyaW5nSW1wbChpICsgMSwgZnVuY3Rpb25Cb2R5Lmxlbmd0aCgpIC0gKGkgKyAx
KSkpOworICAgICAgICAgICAgICAgIGZ1bmN0aW9uQm9keSA9IG1ha2VTdHJpbmcoZnVuY3Rpb25C
b2R5LnN1YnN0cmluZ1NoYXJpbmdJbXBsKDAsIGkgKyAxKSwgJzsnLCBmdW5jdGlvbkJvZHkuc3Vi
c3RyaW5nU2hhcmluZ0ltcGwoaSArIDEsIGZ1bmN0aW9uQm9keS5sZW5ndGgoKSAtIChpICsgMSkp
KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNBcnJheS5jcHAKaW5kZXggNGVkNTlkMC4uM2Y1YzU4MCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5jcHAKQEAgLTEwOCw3ICsxMDgsNyBA
QCBib29sIEpTQXJyYXk6OmRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNT
dGF0ZSogZXhlYywgUHJvcGVydHlOYW1lCiAgICAgICAgIHVuc2lnbmVkIG5ld0xlbiA9IGRlc2Ny
aXB0b3IudmFsdWUoKS50b1VJbnQzMihleGVjKTsKICAgICAgICAgLy8gZC4gSWYgbmV3TGVuIGlz
IG5vdCBlcXVhbCB0byBUb051bWJlciggRGVzYy5bW1ZhbHVlXV0pLCB0aHJvdyBhIFJhbmdlRXJy
b3IgZXhjZXB0aW9uLgogICAgICAgICBpZiAobmV3TGVuICE9IGRlc2NyaXB0b3IudmFsdWUoKS50
b051bWJlcihleGVjKSkgewotICAgICAgICAgICAgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihl
eGVjLCBjcmVhdGVSYW5nZUVycm9yKGV4ZWMsICJJbnZhbGlkIGFycmF5IGxlbmd0aCIpKTsKKyAg
ICAgICAgICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlUmFuZ2VFcnJv
cihleGVjLCBBU0NJSUxpdGVyYWwoIkludmFsaWQgYXJyYXkgbGVuZ3RoIikpKTsKICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogCkBAIC01MjMsNyArNTIzLDcgQEAgSlNWYWx1
ZSBKU0FycmF5Ojpwb3AoRXhlY1N0YXRlKiBleGVjKQogICAgICAgICByZXR1cm4ganNVbmRlZmlu
ZWQoKTsKICAgICAvLyBDYWxsIHRoZSBbW0RlbGV0ZV1dIGludGVybmFsIG1ldGhvZCBvZiBPIHdp
dGggYXJndW1lbnRzIGluZHggYW5kIHRydWUuCiAgICAgaWYgKCFkZWxldGVQcm9wZXJ0eUJ5SW5k
ZXgodGhpcywgZXhlYywgaW5kZXgpKSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsICJV
bmFibGUgdG8gZGVsZXRlIHByb3BlcnR5LiIpOworICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVj
LCBBU0NJSUxpdGVyYWwoIlVuYWJsZSB0byBkZWxldGUgcHJvcGVydHkuIikpOwogICAgICAgICBy
ZXR1cm4ganNVbmRlZmluZWQoKTsKICAgICB9CiAgICAgLy8gQ2FsbCB0aGUgW1tQdXRdXSBpbnRl
cm5hbCBtZXRob2Qgb2YgTyB3aXRoIGFyZ3VtZW50cyAibGVuZ3RoIiwgaW5keCwgYW5kIHRydWUu
CkBAIC01NjcsNyArNTY3LDcgQEAgdm9pZCBKU0FycmF5OjpwdXNoKEV4ZWNTdGF0ZSogZXhlYywg
SlNWYWx1ZSB2YWx1ZSkKICAgICAgICAgaWYgKGxlbmd0aCA+IE1BWF9BUlJBWV9JTkRFWCkgewog
ICAgICAgICAgICAgbWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPnB1dEJ5SW5kZXgodGhpcywgZXhl
YywgbGVuZ3RoLCB2YWx1ZSwgdHJ1ZSk7CiAgICAgICAgICAgICBpZiAoIWV4ZWMtPmhhZEV4Y2Vw
dGlvbigpKQotICAgICAgICAgICAgICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywg
Y3JlYXRlUmFuZ2VFcnJvcihleGVjLCAiSW52YWxpZCBhcnJheSBsZW5ndGgiKSk7CisgICAgICAg
ICAgICAgICAgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVSYW5nZUVycm9y
KGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiSW52YWxpZCBhcnJheSBsZW5ndGgiKSkpOwogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIApAQCAtNTg3LDcgKzU4Nyw3IEBAIHZvaWQg
SlNBcnJheTo6cHVzaChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUpCiAgICAgICAgIGlm
IChsZW5ndGggPiBNQVhfQVJSQVlfSU5ERVgpIHsKICAgICAgICAgICAgIG1ldGhvZFRhYmxlKGV4
ZWMtPnZtKCkpLT5wdXRCeUluZGV4KHRoaXMsIGV4ZWMsIGxlbmd0aCwgdmFsdWUsIHRydWUpOwog
ICAgICAgICAgICAgaWYgKCFleGVjLT5oYWRFeGNlcHRpb24oKSkKLSAgICAgICAgICAgICAgICBl
eGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZVJhbmdlRXJyb3IoZXhlYywgIklu
dmFsaWQgYXJyYXkgbGVuZ3RoIikpOworICAgICAgICAgICAgICAgIGV4ZWMtPnZtKCkudGhyb3dF
eGNlcHRpb24oZXhlYywgY3JlYXRlUmFuZ2VFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkludmFs
aWQgYXJyYXkgbGVuZ3RoIikpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAg
ICAgICAKQEAgLTYxOSw3ICs2MTksNyBAQCB2b2lkIEpTQXJyYXk6OnB1c2goRXhlY1N0YXRlKiBl
eGVjLCBKU1ZhbHVlIHZhbHVlKQogICAgICAgICBpZiAobGVuZ3RoID4gTUFYX0FSUkFZX0lOREVY
KSB7CiAgICAgICAgICAgICBtZXRob2RUYWJsZShleGVjLT52bSgpKS0+cHV0QnlJbmRleCh0aGlz
LCBleGVjLCBsZW5ndGgsIHZhbHVlLCB0cnVlKTsKICAgICAgICAgICAgIGlmICghZXhlYy0+aGFk
RXhjZXB0aW9uKCkpCi0gICAgICAgICAgICAgICAgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihl
eGVjLCBjcmVhdGVSYW5nZUVycm9yKGV4ZWMsICJJbnZhbGlkIGFycmF5IGxlbmd0aCIpKTsKKyAg
ICAgICAgICAgICAgICBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZVJhbmdl
RXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJJbnZhbGlkIGFycmF5IGxlbmd0aCIpKSk7CiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgCkBAIC02NTQsNyArNjU0LDcgQEAg
dm9pZCBKU0FycmF5OjpwdXNoKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSkKICAgICAg
ICAgICAgIG1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5wdXRCeUluZGV4KHRoaXMsIGV4ZWMsIHN0
b3JhZ2UtPmxlbmd0aCgpLCB2YWx1ZSwgdHJ1ZSk7CiAgICAgICAgICAgICAvLyBQZXIgRVM1LjEg
MTUuNC40Ljcgc3RlcCA2ICYgMTUuNC41LjEgc3RlcCAzLmQuCiAgICAgICAgICAgICBpZiAoIWV4
ZWMtPmhhZEV4Y2VwdGlvbigpKQotICAgICAgICAgICAgICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNl
cHRpb24oZXhlYywgY3JlYXRlUmFuZ2VFcnJvcihleGVjLCAiSW52YWxpZCBhcnJheSBsZW5ndGgi
KSk7CisgICAgICAgICAgICAgICAgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVh
dGVSYW5nZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiSW52YWxpZCBhcnJheSBsZW5ndGgiKSkp
OwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJDb25zdHJ1Y3Rvci5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyQ29uc3RydWN0b3IuY3BwCmlu
ZGV4IGRjMzBlNzEuLmY1NTQ3MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQXJyYXlCdWZmZXJDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlckNvbnN0cnVjdG9yLmNwcApAQCAtNDksNyArNDks
NyBAQCBKU0FycmF5QnVmZmVyQ29uc3RydWN0b3I6OkpTQXJyYXlCdWZmZXJDb25zdHJ1Y3RvcihW
TSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQogCiB2b2lkIEpTQXJyYXlCdWZmZXJDb25zdHJ1
Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0FycmF5QnVmZmVyUHJvdG90eXBlKiBwcm90
b3R5cGUpCiB7Ci0gICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0sICJBcnJheUJ1ZmZlciIpOwor
ICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtLCBBU0NJSUxpdGVyYWwoIkFycmF5QnVmZmVyIikp
OwogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5w
cm90b3R5cGUsIHByb3RvdHlwZSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpOwog
ICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5n
dGgsIGpzTnVtYmVyKDEpLCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJQcm90
b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclBy
b3RvdHlwZS5jcHAKaW5kZXggNWI1MmZjNS4uOGYzZDY2OSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclByb3RvdHlwZS5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclByb3RvdHlwZS5jcHAKQEAg
LTQxLDEwICs0MSwxMCBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJh
eUJ1ZmZlclByb3RvRnVuY1NsaWNlKEV4ZWNTdGF0ZSogZXhlYykKICAgICAKICAgICBKU0FycmF5
QnVmZmVyKiB0aGlzT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU0FycmF5QnVmZmVyKj4oZXhlYy0+
dGhpc1ZhbHVlKCkpOwogICAgIGlmICghdGhpc09iamVjdCkKLSAgICAgICAgcmV0dXJuIHRocm93
Vk1FcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgIlJlY2VpdmVyIG9mIHNsaWNlIG11
c3QgYmUgYW4gYXJyYXkgYnVmZmVyLiIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihl
eGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJSZWNlaXZlciBvZiBzbGlj
ZSBtdXN0IGJlIGFuIGFycmF5IGJ1ZmZlci4iKSkpOwogICAgIAogICAgIGlmICghZXhlYy0+YXJn
dW1lbnRDb3VudCgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVR5
cGVFcnJvcihleGVjLCAiU2xpY2UgcmVxdWlyZXMgYXQgbGVhc3Qgb25lIGFyZ3VtZW50LiIpKTsK
KyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywg
QVNDSUlMaXRlcmFsKCJTbGljZSByZXF1aXJlcyBhdCBsZWFzdCBvbmUgYXJndW1lbnQuIikpKTsK
ICAgICAKICAgICBpbnQzMl90IGJlZ2luID0gZXhlYy0+YXJndW1lbnQoMCkudG9JbnQzMihleGVj
KTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTRGF0YVZpZXcuY3BwCmluZGV4IGI3N2Q0OGYuLjUxM2Q0YzYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0YVZpZXcuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0YVZpZXcuY3BwCkBAIC00OCwxMSArNDgs
MTEgQEAgSlNEYXRhVmlldyogSlNEYXRhVmlldzo6Y3JlYXRlKAogewogICAgIFJlZlB0cjxBcnJh
eUJ1ZmZlcj4gYnVmZmVyID0gcGFzc2VkQnVmZmVyOwogICAgIGlmICghQXJyYXlCdWZmZXJWaWV3
Ojp2ZXJpZnlTdWJSYW5nZUxlbmd0aChidWZmZXIsIGJ5dGVPZmZzZXQsIGJ5dGVMZW5ndGgsIHNp
emVvZih1aW50OF90KSkpIHsKLSAgICAgICAgdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVJhbmdl
RXJyb3IoZXhlYywgIkxlbmd0aCBvdXQgb2YgcmFuZ2Ugb2YgYnVmZmVyIikpOworICAgICAgICB0
aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlUmFuZ2VFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkxl
bmd0aCBvdXQgb2YgcmFuZ2Ugb2YgYnVmZmVyIikpKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAgICAgfQogICAgIGlmICghQXJyYXlCdWZmZXJWaWV3Ojp2ZXJpZnlCeXRlT2Zmc2V0QWxpZ25t
ZW50KGJ5dGVPZmZzZXQsIHNpemVvZih1aW50OF90KSkpIHsKLSAgICAgICAgZXhlYy0+dm0oKS50
aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVSYW5nZUVycm9yKGV4ZWMsICJCeXRlIG9mZnNldCBp
cyBub3QgYWxpZ25lZCIpKTsKKyAgICAgICAgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVj
LCBjcmVhdGVSYW5nZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiQnl0ZSBvZmZzZXQgaXMgbm90
IGFsaWduZWQiKSkpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAgICAgVk0mIHZt
ID0gZXhlYy0+dm0oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTRGF0YVZpZXdQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNEYXRhVmlld1Byb3RvdHlwZS5jcHAKaW5kZXggMmU3MzUzMi4uMWFjMTkyMyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlld1Byb3RvdHlwZS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlld1Byb3RvdHlwZS5j
cHAKQEAgLTExOSwxMCArMTE5LDEwIEBAIEVuY29kZWRKU1ZhbHVlIGdldERhdGEoRXhlY1N0YXRl
KiBleGVjKQogewogICAgIEpTRGF0YVZpZXcqIGRhdGFWaWV3ID0ganNEeW5hbWljQ2FzdDxKU0Rh
dGFWaWV3Kj4oZXhlYy0+dGhpc1ZhbHVlKCkpOwogICAgIGlmICghZGF0YVZpZXcpCi0gICAgICAg
IHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsICJSZWNlaXZl
ciBvZiBEYXRhVmlldyBtZXRob2QgbXVzdCBiZSBhIERhdGFWaWV3IikpOworICAgICAgICByZXR1
cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwo
IlJlY2VpdmVyIG9mIERhdGFWaWV3IG1ldGhvZCBtdXN0IGJlIGEgRGF0YVZpZXciKSkpOwogICAg
IAogICAgIGlmICghZXhlYy0+YXJndW1lbnRDb3VudCgpKQotICAgICAgICByZXR1cm4gdGhyb3dW
TUVycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCAiTmVlZCBhdCBsZWFzdCBvbmUgYXJn
dW1lbnQgKHRoZSBieXRlT2Zmc2V0KSIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihl
eGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJOZWVkIGF0IGxlYXN0IG9u
ZSBhcmd1bWVudCAodGhlIGJ5dGVPZmZzZXQpIikpKTsKICAgICAKICAgICB1bnNpZ25lZCBieXRl
T2Zmc2V0ID0gZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoMCkudG9VSW50MzIoZXhlYyk7CiAgICAg
aWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQpAQCAtMTM4LDcgKzEzOCw3IEBAIEVuY29kZWRKU1Zh
bHVlIGdldERhdGEoRXhlY1N0YXRlKiBleGVjKQogICAgIAogICAgIHVuc2lnbmVkIGJ5dGVMZW5n
dGggPSBkYXRhVmlldy0+bGVuZ3RoKCk7CiAgICAgaWYgKGVsZW1lbnRTaXplID4gYnl0ZUxlbmd0
aCB8fCBieXRlT2Zmc2V0ID4gYnl0ZUxlbmd0aCAtIGVsZW1lbnRTaXplKQotICAgICAgICByZXR1
cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVJhbmdlRXJyb3IoZXhlYywgIk91dCBvZiBib3Vu
ZHMgYWNjZXNzIikpOworICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVJh
bmdlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJPdXQgb2YgYm91bmRzIGFjY2VzcyIpKSk7CiAK
ICAgICBjb25zdCB1bnNpZ25lZCBkYXRhU2l6ZSA9IHNpemVvZih0eXBlbmFtZSBBZGFwdG9yOjpU
eXBlKTsKICAgICB1bmlvbiB7CkBAIC0xNjQsMTAgKzE2NCwxMCBAQCBFbmNvZGVkSlNWYWx1ZSBz
ZXREYXRhKEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICBKU0RhdGFWaWV3KiBkYXRhVmlldyA9IGpz
RHluYW1pY0Nhc3Q8SlNEYXRhVmlldyo+KGV4ZWMtPnRoaXNWYWx1ZSgpKTsKICAgICBpZiAoIWRh
dGFWaWV3KQotICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJv
cihleGVjLCAiUmVjZWl2ZXIgb2YgRGF0YVZpZXcgbWV0aG9kIG11c3QgYmUgYSBEYXRhVmlldyIp
KTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhl
YywgQVNDSUlMaXRlcmFsKCJSZWNlaXZlciBvZiBEYXRhVmlldyBtZXRob2QgbXVzdCBiZSBhIERh
dGFWaWV3IikpKTsKICAgICAKICAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpIDwgMikKLSAg
ICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgIk5l
ZWQgYXQgbGVhc3QgdHdvIGFyZ3VtZW50ICh0aGUgYnl0ZU9mZnNldCBhbmQgdmFsdWUpIikpOwor
ICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCBB
U0NJSUxpdGVyYWwoIk5lZWQgYXQgbGVhc3QgdHdvIGFyZ3VtZW50ICh0aGUgYnl0ZU9mZnNldCBh
bmQgdmFsdWUpIikpKTsKICAgICAKICAgICB1bnNpZ25lZCBieXRlT2Zmc2V0ID0gZXhlYy0+dW5j
aGVja2VkQXJndW1lbnQoMCkudG9VSW50MzIoZXhlYyk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2Vw
dGlvbigpKQpAQCAtMTkzLDcgKzE5Myw3IEBAIEVuY29kZWRKU1ZhbHVlIHNldERhdGEoRXhlY1N0
YXRlKiBleGVjKQogICAgIAogICAgIHVuc2lnbmVkIGJ5dGVMZW5ndGggPSBkYXRhVmlldy0+bGVu
Z3RoKCk7CiAgICAgaWYgKGVsZW1lbnRTaXplID4gYnl0ZUxlbmd0aCB8fCBieXRlT2Zmc2V0ID4g
Ynl0ZUxlbmd0aCAtIGVsZW1lbnRTaXplKQotICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4
ZWMsIGNyZWF0ZVJhbmdlRXJyb3IoZXhlYywgIk91dCBvZiBib3VuZHMgYWNjZXNzIikpOworICAg
ICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVJhbmdlRXJyb3IoZXhlYywgQVND
SUlMaXRlcmFsKCJPdXQgb2YgYm91bmRzIGFjY2VzcyIpKSk7CiAKICAgICB1aW50OF90KiBkYXRh
UHRyID0gc3RhdGljX2Nhc3Q8dWludDhfdCo+KGRhdGFWaWV3LT52ZWN0b3IoKSkgKyBieXRlT2Zm
c2V0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2Jh
bE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVj
dC5jcHAKaW5kZXggZjg5MTg3ZS4uOThmZGU3OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcApAQCAtNDQwLDE2ICs0NDAsMTYgQEAgdm9p
ZCBKU0dsb2JhbE9iamVjdDo6cmVzZXQoSlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgcHV0RGlyZWN0
V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPk1hdGgsIE1hdGhPYmplY3Q6
OmNyZWF0ZSh2bSwgdGhpcywgTWF0aE9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBt
X29iamVjdFByb3RvdHlwZS5nZXQoKSkpLCBEb250RW51bSk7CiAgICAgCiAgICAgc3RkOjphcnJh
eTxJbnRlcm5hbEZ1bmN0aW9uKiwgTlVNQkVSX09GX1RZUEVEX0FSUkFZX1RZUEVTPiB0eXBlZEFy
cmF5Q29uc3RydWN0b3JzOwotICAgIHR5cGVkQXJyYXlDb25zdHJ1Y3RvcnNbdG9JbmRleChUeXBl
SW50OCldID0gSlNJbnQ4QXJyYXlDb25zdHJ1Y3Rvcjo6Y3JlYXRlKHZtLCBKU0ludDhBcnJheUNv
bnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fZnVuY3Rpb25Qcm90b3R5cGUu
Z2V0KCkpLCBtX3R5cGVkQXJyYXlzW3RvSW5kZXgoVHlwZUludDgpXS5wcm90b3R5cGUuZ2V0KCks
ICJJbnQ4QXJyYXkiKTsKLSAgICB0eXBlZEFycmF5Q29uc3RydWN0b3JzW3RvSW5kZXgoVHlwZUlu
dDE2KV0gPSBKU0ludDE2QXJyYXlDb25zdHJ1Y3Rvcjo6Y3JlYXRlKHZtLCBKU0ludDE2QXJyYXlD
b25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX2Z1bmN0aW9uUHJvdG90eXBl
LmdldCgpKSwgbV90eXBlZEFycmF5c1t0b0luZGV4KFR5cGVJbnQxNildLnByb3RvdHlwZS5nZXQo
KSwgIkludDE2QXJyYXkiKTsKLSAgICB0eXBlZEFycmF5Q29uc3RydWN0b3JzW3RvSW5kZXgoVHlw
ZUludDMyKV0gPSBKU0ludDMyQXJyYXlDb25zdHJ1Y3Rvcjo6Y3JlYXRlKHZtLCBKU0ludDMyQXJy
YXlDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX2Z1bmN0aW9uUHJvdG90
eXBlLmdldCgpKSwgbV90eXBlZEFycmF5c1t0b0luZGV4KFR5cGVJbnQzMildLnByb3RvdHlwZS5n
ZXQoKSwgIkludDMyQXJyYXkiKTsKLSAgICB0eXBlZEFycmF5Q29uc3RydWN0b3JzW3RvSW5kZXgo
VHlwZVVpbnQ4KV0gPSBKU1VpbnQ4QXJyYXlDb25zdHJ1Y3Rvcjo6Y3JlYXRlKHZtLCBKU1VpbnQ4
QXJyYXlDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX2Z1bmN0aW9uUHJv
dG90eXBlLmdldCgpKSwgbV90eXBlZEFycmF5c1t0b0luZGV4KFR5cGVVaW50OCldLnByb3RvdHlw
ZS5nZXQoKSwgIlVpbnQ4QXJyYXkiKTsKLSAgICB0eXBlZEFycmF5Q29uc3RydWN0b3JzW3RvSW5k
ZXgoVHlwZVVpbnQ4Q2xhbXBlZCldID0gSlNVaW50OENsYW1wZWRBcnJheUNvbnN0cnVjdG9yOjpj
cmVhdGUodm0sIEpTVWludDhDbGFtcGVkQXJyYXlDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJl
KHZtLCB0aGlzLCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgpKSwgbV90eXBlZEFycmF5c1t0b0lu
ZGV4KFR5cGVVaW50OENsYW1wZWQpXS5wcm90b3R5cGUuZ2V0KCksICJVaW50OENsYW1wZWRBcnJh
eSIpOwotICAgIHR5cGVkQXJyYXlDb25zdHJ1Y3RvcnNbdG9JbmRleChUeXBlVWludDE2KV0gPSBK
U1VpbnQxNkFycmF5Q29uc3RydWN0b3I6OmNyZWF0ZSh2bSwgSlNVaW50MTZBcnJheUNvbnN0cnVj
dG9yOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkp
LCBtX3R5cGVkQXJyYXlzW3RvSW5kZXgoVHlwZVVpbnQxNildLnByb3RvdHlwZS5nZXQoKSwgIlVp
bnQxNkFycmF5Iik7Ci0gICAgdHlwZWRBcnJheUNvbnN0cnVjdG9yc1t0b0luZGV4KFR5cGVVaW50
MzIpXSA9IEpTVWludDMyQXJyYXlDb25zdHJ1Y3Rvcjo6Y3JlYXRlKHZtLCBKU1VpbnQzMkFycmF5
Q29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9mdW5jdGlvblByb3RvdHlw
ZS5nZXQoKSksIG1fdHlwZWRBcnJheXNbdG9JbmRleChUeXBlVWludDMyKV0ucHJvdG90eXBlLmdl
dCgpLCAiVWludDMyQXJyYXkiKTsKLSAgICB0eXBlZEFycmF5Q29uc3RydWN0b3JzW3RvSW5kZXgo
VHlwZUZsb2F0MzIpXSA9IEpTRmxvYXQzMkFycmF5Q29uc3RydWN0b3I6OmNyZWF0ZSh2bSwgSlNG
bG9hdDMyQXJyYXlDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX2Z1bmN0
aW9uUHJvdG90eXBlLmdldCgpKSwgbV90eXBlZEFycmF5c1t0b0luZGV4KFR5cGVGbG9hdDMyKV0u
cHJvdG90eXBlLmdldCgpLCAiRmxvYXQzMkFycmF5Iik7Ci0gICAgdHlwZWRBcnJheUNvbnN0cnVj
dG9yc1t0b0luZGV4KFR5cGVGbG9hdDY0KV0gPSBKU0Zsb2F0NjRBcnJheUNvbnN0cnVjdG9yOjpj
cmVhdGUodm0sIEpTRmxvYXQ2NEFycmF5Q29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSh2bSwg
dGhpcywgbV9mdW5jdGlvblByb3RvdHlwZS5nZXQoKSksIG1fdHlwZWRBcnJheXNbdG9JbmRleChU
eXBlRmxvYXQ2NCldLnByb3RvdHlwZS5nZXQoKSwgIkZsb2F0NjRBcnJheSIpOwotICAgIHR5cGVk
QXJyYXlDb25zdHJ1Y3RvcnNbdG9JbmRleChUeXBlRGF0YVZpZXcpXSA9IEpTRGF0YVZpZXdDb25z
dHJ1Y3Rvcjo6Y3JlYXRlKHZtLCBKU0RhdGFWaWV3Q29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVy
ZSh2bSwgdGhpcywgbV9mdW5jdGlvblByb3RvdHlwZS5nZXQoKSksIG1fdHlwZWRBcnJheXNbdG9J
bmRleChUeXBlRGF0YVZpZXcpXS5wcm90b3R5cGUuZ2V0KCksICJEYXRhVmlldyIpOworICAgIHR5
cGVkQXJyYXlDb25zdHJ1Y3RvcnNbdG9JbmRleChUeXBlSW50OCldID0gSlNJbnQ4QXJyYXlDb25z
dHJ1Y3Rvcjo6Y3JlYXRlKHZtLCBKU0ludDhBcnJheUNvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1
cmUodm0sIHRoaXMsIG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpLCBtX3R5cGVkQXJyYXlzW3Rv
SW5kZXgoVHlwZUludDgpXS5wcm90b3R5cGUuZ2V0KCksIEFTQ0lJTGl0ZXJhbCgiSW50OEFycmF5
IikpOworICAgIHR5cGVkQXJyYXlDb25zdHJ1Y3RvcnNbdG9JbmRleChUeXBlSW50MTYpXSA9IEpT
SW50MTZBcnJheUNvbnN0cnVjdG9yOjpjcmVhdGUodm0sIEpTSW50MTZBcnJheUNvbnN0cnVjdG9y
OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpLCBt
X3R5cGVkQXJyYXlzW3RvSW5kZXgoVHlwZUludDE2KV0ucHJvdG90eXBlLmdldCgpLCBBU0NJSUxp
dGVyYWwoIkludDE2QXJyYXkiKSk7CisgICAgdHlwZWRBcnJheUNvbnN0cnVjdG9yc1t0b0luZGV4
KFR5cGVJbnQzMildID0gSlNJbnQzMkFycmF5Q29uc3RydWN0b3I6OmNyZWF0ZSh2bSwgSlNJbnQz
MkFycmF5Q29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9mdW5jdGlvblBy
b3RvdHlwZS5nZXQoKSksIG1fdHlwZWRBcnJheXNbdG9JbmRleChUeXBlSW50MzIpXS5wcm90b3R5
cGUuZ2V0KCksIEFTQ0lJTGl0ZXJhbCgiSW50MzJBcnJheSIpKTsKKyAgICB0eXBlZEFycmF5Q29u
c3RydWN0b3JzW3RvSW5kZXgoVHlwZVVpbnQ4KV0gPSBKU1VpbnQ4QXJyYXlDb25zdHJ1Y3Rvcjo6
Y3JlYXRlKHZtLCBKU1VpbnQ4QXJyYXlDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0
aGlzLCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgpKSwgbV90eXBlZEFycmF5c1t0b0luZGV4KFR5
cGVVaW50OCldLnByb3RvdHlwZS5nZXQoKSwgQVNDSUlMaXRlcmFsKCJVaW50OEFycmF5IikpOwor
ICAgIHR5cGVkQXJyYXlDb25zdHJ1Y3RvcnNbdG9JbmRleChUeXBlVWludDhDbGFtcGVkKV0gPSBK
U1VpbnQ4Q2xhbXBlZEFycmF5Q29uc3RydWN0b3I6OmNyZWF0ZSh2bSwgSlNVaW50OENsYW1wZWRB
cnJheUNvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fZnVuY3Rpb25Qcm90
b3R5cGUuZ2V0KCkpLCBtX3R5cGVkQXJyYXlzW3RvSW5kZXgoVHlwZVVpbnQ4Q2xhbXBlZCldLnBy
b3RvdHlwZS5nZXQoKSwgQVNDSUlMaXRlcmFsKCJVaW50OENsYW1wZWRBcnJheSIpKTsKKyAgICB0
eXBlZEFycmF5Q29uc3RydWN0b3JzW3RvSW5kZXgoVHlwZVVpbnQxNildID0gSlNVaW50MTZBcnJh
eUNvbnN0cnVjdG9yOjpjcmVhdGUodm0sIEpTVWludDE2QXJyYXlDb25zdHJ1Y3Rvcjo6Y3JlYXRl
U3RydWN0dXJlKHZtLCB0aGlzLCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgpKSwgbV90eXBlZEFy
cmF5c1t0b0luZGV4KFR5cGVVaW50MTYpXS5wcm90b3R5cGUuZ2V0KCksIEFTQ0lJTGl0ZXJhbCgi
VWludDE2QXJyYXkiKSk7CisgICAgdHlwZWRBcnJheUNvbnN0cnVjdG9yc1t0b0luZGV4KFR5cGVV
aW50MzIpXSA9IEpTVWludDMyQXJyYXlDb25zdHJ1Y3Rvcjo6Y3JlYXRlKHZtLCBKU1VpbnQzMkFy
cmF5Q29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9mdW5jdGlvblByb3Rv
dHlwZS5nZXQoKSksIG1fdHlwZWRBcnJheXNbdG9JbmRleChUeXBlVWludDMyKV0ucHJvdG90eXBl
LmdldCgpLCBBU0NJSUxpdGVyYWwoIlVpbnQzMkFycmF5IikpOworICAgIHR5cGVkQXJyYXlDb25z
dHJ1Y3RvcnNbdG9JbmRleChUeXBlRmxvYXQzMildID0gSlNGbG9hdDMyQXJyYXlDb25zdHJ1Y3Rv
cjo6Y3JlYXRlKHZtLCBKU0Zsb2F0MzJBcnJheUNvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUo
dm0sIHRoaXMsIG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpLCBtX3R5cGVkQXJyYXlzW3RvSW5k
ZXgoVHlwZUZsb2F0MzIpXS5wcm90b3R5cGUuZ2V0KCksIEFTQ0lJTGl0ZXJhbCgiRmxvYXQzMkFy
cmF5IikpOworICAgIHR5cGVkQXJyYXlDb25zdHJ1Y3RvcnNbdG9JbmRleChUeXBlRmxvYXQ2NCld
ID0gSlNGbG9hdDY0QXJyYXlDb25zdHJ1Y3Rvcjo6Y3JlYXRlKHZtLCBKU0Zsb2F0NjRBcnJheUNv
bnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fZnVuY3Rpb25Qcm90b3R5cGUu
Z2V0KCkpLCBtX3R5cGVkQXJyYXlzW3RvSW5kZXgoVHlwZUZsb2F0NjQpXS5wcm90b3R5cGUuZ2V0
KCksIEFTQ0lJTGl0ZXJhbCgiRmxvYXQ2NEFycmF5IikpOworICAgIHR5cGVkQXJyYXlDb25zdHJ1
Y3RvcnNbdG9JbmRleChUeXBlRGF0YVZpZXcpXSA9IEpTRGF0YVZpZXdDb25zdHJ1Y3Rvcjo6Y3Jl
YXRlKHZtLCBKU0RhdGFWaWV3Q29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywg
bV9mdW5jdGlvblByb3RvdHlwZS5nZXQoKSksIG1fdHlwZWRBcnJheXNbdG9JbmRleChUeXBlRGF0
YVZpZXcpXS5wcm90b3R5cGUuZ2V0KCksIEFTQ0lJTGl0ZXJhbCgiRGF0YVZpZXciKSk7CiAKICAg
ICBmb3IgKHVuc2lnbmVkIHR5cGVkQXJyYXlJbmRleCA9IE5VTUJFUl9PRl9UWVBFRF9BUlJBWV9U
WVBFUzsgdHlwZWRBcnJheUluZGV4LS07KSB7CiAgICAgICAgIG1fdHlwZWRBcnJheXNbdHlwZWRB
cnJheUluZGV4XS5wcm90b3R5cGUtPnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5w
cm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwgdHlwZWRBcnJheUNvbnN0cnVjdG9yc1t0eXBlZEFy
cmF5SW5kZXhdLCBEb250RW51bSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5jcHAKaW5kZXggNjA0ZGUyYi4uNjcw
Y2YyYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxP
YmplY3RGdW5jdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNwcApAQCAtODAyLDcgKzgwMiw3IEBAIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgZ2xvYmFsRnVuY1Byb3RvU2V0dGVyKEV4ZWNTdGF0ZSogZXhlYykK
ICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywg
U3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKSk7CiAKICAgICBpZiAoIXRoaXNP
YmplY3QtPnNldFByb3RvdHlwZVdpdGhDeWNsZUNoZWNrKGV4ZWMsIHZhbHVlKSkKLSAgICAgICAg
ZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVFcnJvcihleGVjLCAiY3ljbGlj
IF9fcHJvdG9fXyB2YWx1ZSIpKTsKKyAgICAgICAgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihl
eGVjLCBjcmVhdGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoImN5Y2xpYyBfX3Byb3RvX18gdmFs
dWUiKSkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAg
ICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VD
b25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VD
b25zdHJ1Y3Rvci5jcHAKaW5kZXggZGI2OWZkNC4uMjYxYTg4OCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlQ29uc3RydWN0b3IuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZUNvbnN0cnVjdG9yLmNwcApAQCAt
ODUsNyArODUsNyBAQCBKU1Byb21pc2VDb25zdHJ1Y3Rvcjo6SlNQcm9taXNlQ29uc3RydWN0b3Io
Vk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKIAogdm9pZCBKU1Byb21pc2VDb25zdHJ1Y3Rv
cjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU1Byb21pc2VQcm90b3R5cGUqIHByb21pc2VQcm90
b3R5cGUpCiB7Ci0gICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0sICJQcm9taXNlIik7CisgICAg
QmFzZTo6ZmluaXNoQ3JlYXRpb24odm0sIEFTQ0lJTGl0ZXJhbCgiUHJvbWlzZSIpKTsKICAgICBw
dXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBl
LCBwcm9taXNlUHJvdG90eXBlLCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSk7CiAg
ICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0
aCwganNOdW1iZXIoMSksIFJlYWRPbmx5IHwgRG9udEVudW0gfCBEb250RGVsZXRlKTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xpdGVyYWxQYXJzZXIuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTGl0ZXJhbFBhcnNlci5jcHAKaW5kZXgg
OWIwMTk1MS4uZjZmNWZlMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvTGl0ZXJhbFBhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
TGl0ZXJhbFBhcnNlci5jcHAKQEAgLTI4MSw3ICsyODEsNyBAQCB0ZW1wbGF0ZSA8UGFyc2VyTW9k
ZSBtb2RlPiBUb2tlblR5cGUgTGl0ZXJhbFBhcnNlcjxDaGFyVHlwZT46OkxleGVyOjpsZXgoTGl0
ZXJhbAogICAgICAgICAgICAgcmV0dXJuIGxleFN0cmluZzxtb2RlLCAnXCcnPih0b2tlbik7CiAg
ICAgICAgIH0KICAgICB9Ci0gICAgbV9sZXhFcnJvck1lc3NhZ2UgPSBTdHJpbmc6OmZvcm1hdCgi
VW5yZWNvZ25pemVkIHRva2VuICclYyciLCAqbV9wdHIpLmltcGwoKTsKKyAgICBtX2xleEVycm9y
TWVzc2FnZSA9IFN0cmluZzo6Zm9ybWF0KCJVbnJlY29nbml6ZWQgdG9rZW4gJyVjJyIsICptX3B0
cik7CiAgICAgcmV0dXJuIFRva0Vycm9yOwogfQogCkBAIC00MDYsNyArNDA2LDcgQEAgdGVtcGxh
dGUgPFBhcnNlck1vZGUgbW9kZSwgY2hhciB0ZXJtaW5hdG9yPiBBTFdBWVNfSU5MSU5FIFRva2Vu
VHlwZSBMaXRlcmFsUGFyc2UKICAgICAgICAgICAgICAgICAgICAgfSAvLyB1Tk5OTiA9PSA1IGNo
YXJhY3RlcnMKICAgICAgICAgICAgICAgICAgICAgZm9yIChpbnQgaSA9IDE7IGkgPCA1OyBpKysp
IHsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghaXNBU0NJSUhleERpZ2l0KG1fcHRyW2ld
KSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fbGV4RXJyb3JNZXNzYWdlID0gU3Ry
aW5nOjpmb3JtYXQoIlwiXFwlc1wiIGlzIG5vdCBhIHZhbGlkIHVuaWNvZGUgZXNjYXBlIiwgU3Ry
aW5nKG1fcHRyLCA1KS5hc2NpaSgpLmRhdGEoKSkuaW1wbCgpOworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG1fbGV4RXJyb3JNZXNzYWdlID0gU3RyaW5nOjpmb3JtYXQoIlwiXFwlc1wiIGlz
IG5vdCBhIHZhbGlkIHVuaWNvZGUgZXNjYXBlIiwgU3RyaW5nKG1fcHRyLCA1KS5hc2NpaSgpLmRh
dGEoKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFRva0Vycm9yOwogICAg
ICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICB9CkBAIC00MjAsNyAr
NDIwLDcgQEAgdGVtcGxhdGUgPFBhcnNlck1vZGUgbW9kZSwgY2hhciB0ZXJtaW5hdG9yPiBBTFdB
WVNfSU5MSU5FIFRva2VuVHlwZSBMaXRlcmFsUGFyc2UKICAgICAgICAgICAgICAgICAgICAgICAg
IG1fcHRyKys7CiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAg
ICAgICAgfQotICAgICAgICAgICAgICAgICAgICBtX2xleEVycm9yTWVzc2FnZSA9IFN0cmluZzo6
Zm9ybWF0KCJJbnZhbGlkIGVzY2FwZSBjaGFyYWN0ZXIgJWMiLCAqbV9wdHIpLmltcGwoKTsKKyAg
ICAgICAgICAgICAgICAgICAgbV9sZXhFcnJvck1lc3NhZ2UgPSBTdHJpbmc6OmZvcm1hdCgiSW52
YWxpZCBlc2NhcGUgY2hhcmFjdGVyICVjIiwgKm1fcHRyKTsKICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIFRva0Vycm9yOwogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC03MTEsOSArNzEx
LDkgQEAgSlNWYWx1ZSBMaXRlcmFsUGFyc2VyPENoYXJUeXBlPjo6cGFyc2UoUGFyc2VyU3RhdGUg
aW5pdGlhbFN0YXRlKQogICAgICAgICAgICAgICAgICAgICBjYXNlIFRva0lkZW50aWZpZXI6IHsK
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IExpdGVyYWxQYXJzZXJUb2tlbjxDaGFyVHlw
ZT4mIHRva2VuID0gbV9sZXhlci5jdXJyZW50VG9rZW4oKTsKICAgICAgICAgICAgICAgICAgICAg
ICAgIGlmICh0b2tlbi5zdHJpbmdJczhCaXQpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
bV9wYXJzZUVycm9yTWVzc2FnZSA9IFN0cmluZzo6Zm9ybWF0KCJVbmV4cGVjdGVkIGlkZW50aWZp
ZXIgXCIlc1wiIiwgU3RyaW5nKG1fbGV4ZXIuY3VycmVudFRva2VuKCkuc3RyaW5nVG9rZW44LCBt
X2xleGVyLmN1cnJlbnRUb2tlbigpLnN0cmluZ0xlbmd0aCkuYXNjaWkoKS5kYXRhKCkpLmltcGwo
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdlID0gU3Ry
aW5nOjpmb3JtYXQoIlVuZXhwZWN0ZWQgaWRlbnRpZmllciBcIiVzXCIiLCBTdHJpbmcobV9sZXhl
ci5jdXJyZW50VG9rZW4oKS5zdHJpbmdUb2tlbjgsIG1fbGV4ZXIuY3VycmVudFRva2VuKCkuc3Ry
aW5nTGVuZ3RoKS5hc2NpaSgpLmRhdGEoKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBlbHNl
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9IFN0cmlu
Zzo6Zm9ybWF0KCJVbmV4cGVjdGVkIGlkZW50aWZpZXIgXCIlc1wiIiwgU3RyaW5nKG1fbGV4ZXIu
Y3VycmVudFRva2VuKCkuc3RyaW5nVG9rZW4xNiwgbV9sZXhlci5jdXJyZW50VG9rZW4oKS5zdHJp
bmdMZW5ndGgpLmFzY2lpKCkuZGF0YSgpKS5pbXBsKCk7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9IFN0cmluZzo6Zm9ybWF0KCJVbmV4cGVjdGVkIGlk
ZW50aWZpZXIgXCIlc1wiIiwgU3RyaW5nKG1fbGV4ZXIuY3VycmVudFRva2VuKCkuc3RyaW5nVG9r
ZW4xNiwgbV9sZXhlci5jdXJyZW50VG9rZW4oKS5zdHJpbmdMZW5ndGgpLmFzY2lpKCkuZGF0YSgp
KTsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CiAgICAgICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgY2FzZSBUb2tDb2xvbjoKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xpdGVyYWxQYXJzZXIuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xpdGVyYWxQYXJzZXIuaAppbmRleCBmMDVmMDMyLi5m
Y2I3OWZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9MaXRlcmFs
UGFyc2VyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTGl0ZXJhbFBhcnNl
ci5oCkBAIC05OCw5ICs5OCw5IEBAIHB1YmxpYzoKICAgICBTdHJpbmcgZ2V0RXJyb3JNZXNzYWdl
KCkKICAgICB7IAogICAgICAgICBpZiAoIW1fbGV4ZXIuZ2V0RXJyb3JNZXNzYWdlKCkuaXNFbXB0
eSgpKQotICAgICAgICAgICAgcmV0dXJuIFN0cmluZzo6Zm9ybWF0KCJKU09OIFBhcnNlIGVycm9y
OiAlcyIsIG1fbGV4ZXIuZ2V0RXJyb3JNZXNzYWdlKCkuYXNjaWkoKS5kYXRhKCkpLmltcGwoKTsK
KyAgICAgICAgICAgIHJldHVybiBTdHJpbmc6OmZvcm1hdCgiSlNPTiBQYXJzZSBlcnJvcjogJXMi
LCBtX2xleGVyLmdldEVycm9yTWVzc2FnZSgpLmFzY2lpKCkuZGF0YSgpKTsKICAgICAgICAgaWYg
KCFtX3BhcnNlRXJyb3JNZXNzYWdlLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIHJldHVybiBTdHJp
bmc6OmZvcm1hdCgiSlNPTiBQYXJzZSBlcnJvcjogJXMiLCBtX3BhcnNlRXJyb3JNZXNzYWdlLmFz
Y2lpKCkuZGF0YSgpKS5pbXBsKCk7CisgICAgICAgICAgICByZXR1cm4gU3RyaW5nOjpmb3JtYXQo
IkpTT04gUGFyc2UgZXJyb3I6ICVzIiwgbV9wYXJzZUVycm9yTWVzc2FnZS5hc2NpaSgpLmRhdGEo
KSk7CiAgICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwoIkpTT04gUGFyc2UgZXJyb3I6IFVuYWJs
ZSB0byBwYXJzZSBKU09OIHN0cmluZyIpOwogICAgIH0KICAgICAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5cGVTZXQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvVHlwZVNldC5jcHAKaW5kZXggMjIzNDU5Yi4uNDE2MjIxNyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZVNldC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZVNldC5jcHAKQEAgLTk5LDcgKzk5LDcgQEAgdm9p
ZCBUeXBlU2V0OjppbnZhbGlkYXRlQ2FjaGUoKQogU3RyaW5nIFR5cGVTZXQ6OnNlZW5UeXBlcygp
IGNvbnN0CiB7CiAgICAgaWYgKG1fc2VlblR5cGVzID09IFR5cGVOb3RoaW5nKQotICAgICAgICBy
ZXR1cm4gIihVbnJlYWNoZWQgU3RhdGVtZW50KSI7CisgICAgICAgIHJldHVybiBBU0NJSUxpdGVy
YWwoIihVbnJlYWNoZWQgU3RhdGVtZW50KSIpOwogCiAgICAgU3RyaW5nQnVpbGRlciBzZWVuOwog
CkBAIC0xMjMsMTcgKzEyMywxNyBAQCBTdHJpbmcgVHlwZVNldDo6c2VlblR5cGVzKCkgY29uc3QK
ICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fc3RydWN0dXJlSGlzdG9yeS5zaXplKCk7IGkr
KykgewogICAgICAgICBSZWZQdHI8U3RydWN0dXJlU2hhcGU+IHNoYXBlID0gbV9zdHJ1Y3R1cmVI
aXN0b3J5LmF0KGkpOwogICAgICAgICBzZWVuLmFwcGVuZChzaGFwZS0+bV9jb25zdHJ1Y3Rvck5h
bWUpOwotICAgICAgICBzZWVuLmFwcGVuZCgiICIpOworICAgICAgICBzZWVuLmFwcGVuZCgnICcp
OwogICAgIH0KIAogICAgIGlmIChtX3N0cnVjdHVyZUhpc3Rvcnkuc2l6ZSgpKSAKICAgICAgICAg
c2Vlbi5hcHBlbmQoIlxuU3RydWN0dXJlczpbICIpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgbV9zdHJ1Y3R1cmVIaXN0b3J5LnNpemUoKTsgaSsrKSB7CiAgICAgICAgIHNlZW4uYXBwZW5k
KG1fc3RydWN0dXJlSGlzdG9yeS5hdChpKS0+c3RyaW5nUmVwcmVzZW50YXRpb24oKSk7Ci0gICAg
ICAgIHNlZW4uYXBwZW5kKCIgIik7CisgICAgICAgIHNlZW4uYXBwZW5kKCcgJyk7CiAgICAgfQog
ICAgIGlmIChtX3N0cnVjdHVyZUhpc3Rvcnkuc2l6ZSgpKQotICAgICAgICBzZWVuLmFwcGVuZCgi
XSIpOworICAgICAgICBzZWVuLmFwcGVuZCgnXScpOwogCiAgICAgaWYgKG1fc3RydWN0dXJlSGlz
dG9yeS5zaXplKCkpIHsKICAgICAgICAgc2Vlbi5hcHBlbmQoIlxuTGVhc3QgQ29tbW9uIEFuY2Vz
dG9yOiAiKTsKQEAgLTE2Niw3MiArMTY2LDcyIEBAIGJvb2wgVHlwZVNldDo6ZG9lc1R5cGVDb25m
b3JtVG8odWludDMyX3QgdGVzdCkgY29uc3QKIFN0cmluZyBUeXBlU2V0OjpkaXNwbGF5TmFtZSgp
IGNvbnN0CiB7CiAgICAgaWYgKG1fc2VlblR5cGVzID09IFR5cGVOb3RoaW5nKQotICAgICAgICBy
ZXR1cm4gIiI7CisgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogCiAgICAgaWYgKG1fc3Ry
dWN0dXJlSGlzdG9yeS5zaXplKCkgJiYgZG9lc1R5cGVDb25mb3JtVG8oVHlwZU9iamVjdCB8IFR5
cGVOdWxsIHwgVHlwZVVuZGVmaW5lZCkpIHsKICAgICAgICAgU3RyaW5nIGN0b3JOYW1lID0gbGVh
c3RDb21tb25BbmNlc3RvcigpOyAKIAogICAgICAgICBpZiAoZG9lc1R5cGVDb25mb3JtVG8oVHlw
ZU9iamVjdCkpCiAgICAgICAgICAgICByZXR1cm4gY3Rvck5hbWU7Ci0gICAgICAgIGVsc2UgaWYg
KGRvZXNUeXBlQ29uZm9ybVRvKFR5cGVPYmplY3QgfCBUeXBlTnVsbCB8IFR5cGVVbmRlZmluZWQp
KQotICAgICAgICAgICAgcmV0dXJuIGN0b3JOYW1lICsgIj8iOworICAgICAgICBpZiAoZG9lc1R5
cGVDb25mb3JtVG8oVHlwZU9iamVjdCB8IFR5cGVOdWxsIHwgVHlwZVVuZGVmaW5lZCkpCisgICAg
ICAgICAgICByZXR1cm4gY3Rvck5hbWUgKyAnPyc7CiAgICAgfQogCiAgICAgLy8gVGhlIG9yZGVy
IG9mIHRoZXNlIGNoZWNrcyBhcmUgaW1wb3J0YW50LiBGb3IgZXhhbXBsZSwgaWYgYSB2YWx1ZSBp
cyBvbmx5IGEgZnVuY3Rpb24sIGl0IGNvbmZvcm1zIHRvIFR5cGVGdW5jdGlvbiwgYnV0IGl0IGFs
c28gY29uZm9ybXMgdG8gVHlwZUZ1bmN0aW9uIHwgVHlwZU51bGwuCiAgICAgLy8gVGhlcmVmb3Jl
LCBtb3JlIHNwZWNpZmljIHR5cGVzIG11c3QgYmUgY2hlY2tlZCBmaXJzdC4KIAogICAgIGlmIChk
b2VzVHlwZUNvbmZvcm1UbyhUeXBlRnVuY3Rpb24pKQotICAgICAgICByZXR1cm4gIkZ1bmN0aW9u
IjsKKyAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgiRnVuY3Rpb24iKTsKICAgICBpZiAoZG9l
c1R5cGVDb25mb3JtVG8oVHlwZVVuZGVmaW5lZCkpCi0gICAgICAgIHJldHVybiAiVW5kZWZpbmVk
IjsKKyAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgiVW5kZWZpbmVkIik7CiAgICAgaWYgKGRv
ZXNUeXBlQ29uZm9ybVRvKFR5cGVOdWxsKSkKLSAgICAgICAgcmV0dXJuICJOdWxsIjsKKyAgICAg
ICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgiTnVsbCIpOwogICAgIGlmIChkb2VzVHlwZUNvbmZvcm1U
byhUeXBlQm9vbGVhbikpCi0gICAgICAgIHJldHVybiAiQm9vbGVhbiI7CisgICAgICAgIHJldHVy
biBBU0NJSUxpdGVyYWwoIkJvb2xlYW4iKTsKICAgICBpZiAoZG9lc1R5cGVDb25mb3JtVG8oVHlw
ZU1hY2hpbmVJbnQpKQotICAgICAgICByZXR1cm4gIkludGVnZXIiOworICAgICAgICByZXR1cm4g
QVNDSUlMaXRlcmFsKCJJbnRlZ2VyIik7CiAgICAgaWYgKGRvZXNUeXBlQ29uZm9ybVRvKFR5cGVO
dW1iZXIgfCBUeXBlTWFjaGluZUludCkpCi0gICAgICAgIHJldHVybiAiTnVtYmVyIjsKKyAgICAg
ICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgiTnVtYmVyIik7CiAgICAgaWYgKGRvZXNUeXBlQ29uZm9y
bVRvKFR5cGVTdHJpbmcpKQotICAgICAgICByZXR1cm4gIlN0cmluZyI7CisgICAgICAgIHJldHVy
biBBU0NJSUxpdGVyYWwoIlN0cmluZyIpOwogCiAgICAgaWYgKGRvZXNUeXBlQ29uZm9ybVRvKFR5
cGVOdWxsIHwgVHlwZVVuZGVmaW5lZCkpCi0gICAgICAgIHJldHVybiAiKD8pIjsKKyAgICAgICAg
cmV0dXJuIEFTQ0lJTGl0ZXJhbCgiKD8pIik7CiAKICAgICBpZiAoZG9lc1R5cGVDb25mb3JtVG8o
VHlwZUZ1bmN0aW9uIHwgVHlwZU51bGwgfCBUeXBlVW5kZWZpbmVkKSkKLSAgICAgICAgcmV0dXJu
ICJGdW5jdGlvbj8iOworICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJGdW5jdGlvbj8iKTsK
ICAgICBpZiAoZG9lc1R5cGVDb25mb3JtVG8oVHlwZUJvb2xlYW4gfCBUeXBlTnVsbCB8IFR5cGVV
bmRlZmluZWQpKQotICAgICAgICByZXR1cm4gIkJvb2xlYW4/IjsKKyAgICAgICAgcmV0dXJuIEFT
Q0lJTGl0ZXJhbCgiQm9vbGVhbj8iKTsKICAgICBpZiAoZG9lc1R5cGVDb25mb3JtVG8oVHlwZU1h
Y2hpbmVJbnQgfCBUeXBlTnVsbCB8IFR5cGVVbmRlZmluZWQpKQotICAgICAgICByZXR1cm4gIklu
dGVnZXI/IjsKKyAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgiSW50ZWdlcj8iKTsKICAgICBp
ZiAoZG9lc1R5cGVDb25mb3JtVG8oVHlwZU51bWJlciB8IFR5cGVNYWNoaW5lSW50IHwgVHlwZU51
bGwgfCBUeXBlVW5kZWZpbmVkKSkKLSAgICAgICAgcmV0dXJuICJOdW1iZXI/IjsKKyAgICAgICAg
cmV0dXJuIEFTQ0lJTGl0ZXJhbCgiTnVtYmVyPyIpOwogICAgIGlmIChkb2VzVHlwZUNvbmZvcm1U
byhUeXBlU3RyaW5nIHwgVHlwZU51bGwgfCBUeXBlVW5kZWZpbmVkKSkKLSAgICAgICAgcmV0dXJu
ICJTdHJpbmc/IjsKKyAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgiU3RyaW5nPyIpOwogICAg
CiAgICAgaWYgKGRvZXNUeXBlQ29uZm9ybVRvKFR5cGVPYmplY3QgfCBUeXBlRnVuY3Rpb24gfCBU
eXBlU3RyaW5nKSkKLSAgICAgICAgcmV0dXJuICJPYmplY3QiOworICAgICAgICByZXR1cm4gQVND
SUlMaXRlcmFsKCJPYmplY3QiKTsKICAgICBpZiAoZG9lc1R5cGVDb25mb3JtVG8oVHlwZU9iamVj
dCB8IFR5cGVGdW5jdGlvbiB8IFR5cGVTdHJpbmcgfCBUeXBlTnVsbCB8IFR5cGVVbmRlZmluZWQp
KQotICAgICAgICByZXR1cm4gIk9iamVjdD8iOworICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFs
KCJPYmplY3Q/Iik7CiAKLSAgICByZXR1cm4gIihtYW55KSI7CisgICAgcmV0dXJuIEFTQ0lJTGl0
ZXJhbCgiKG1hbnkpIik7CiB9CiAKIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJy
YXk8U3RyaW5nPj4gVHlwZVNldDo6YWxsUHJpbWl0aXZlVHlwZU5hbWVzKCkgY29uc3QKIHsKICAg
ICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8U3RyaW5nPj4gc2VlbiA9IEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkFycmF5PFN0cmluZz46OmNyZWF0ZSgpOwogICAgIGlmIChtX3NlZW5U
eXBlcyAmIFR5cGVVbmRlZmluZWQpCi0gICAgICAgICBzZWVuLT5hZGRJdGVtKCJVbmRlZmluZWQi
KTsKKyAgICAgICAgIHNlZW4tPmFkZEl0ZW0oQVNDSUlMaXRlcmFsKCJVbmRlZmluZWQiKSk7CiAg
ICAgaWYgKG1fc2VlblR5cGVzICYgVHlwZU51bGwpCi0gICAgICAgICBzZWVuLT5hZGRJdGVtKCJO
dWxsIik7CisgICAgICAgICBzZWVuLT5hZGRJdGVtKEFTQ0lJTGl0ZXJhbCgiTnVsbCIpKTsKICAg
ICBpZiAobV9zZWVuVHlwZXMgJiBUeXBlQm9vbGVhbikKLSAgICAgICAgIHNlZW4tPmFkZEl0ZW0o
IkJvb2xlYW4iKTsKKyAgICAgICAgIHNlZW4tPmFkZEl0ZW0oQVNDSUlMaXRlcmFsKCJCb29sZWFu
IikpOwogICAgIGlmIChtX3NlZW5UeXBlcyAmIFR5cGVNYWNoaW5lSW50KQotICAgICAgICAgc2Vl
bi0+YWRkSXRlbSgiSW50ZWdlciIpOworICAgICAgICAgc2Vlbi0+YWRkSXRlbShBU0NJSUxpdGVy
YWwoIkludGVnZXIiKSk7CiAgICAgaWYgKG1fc2VlblR5cGVzICYgVHlwZU51bWJlcikKLSAgICAg
ICAgIHNlZW4tPmFkZEl0ZW0oIk51bWJlciIpOworICAgICAgICAgc2Vlbi0+YWRkSXRlbShBU0NJ
SUxpdGVyYWwoIk51bWJlciIpKTsKICAgICBpZiAobV9zZWVuVHlwZXMgJiBUeXBlU3RyaW5nKQot
ICAgICAgICAgc2Vlbi0+YWRkSXRlbSgiU3RyaW5nIik7CisgICAgICAgICBzZWVuLT5hZGRJdGVt
KEFTQ0lJTGl0ZXJhbCgiU3RyaW5nIikpOwogCiAgICAgcmV0dXJuIHNlZW4ucmVsZWFzZSgpOwog
fQpAQCAtMjgyLDkgKzI4Miw5IEBAIFN0cmluZyBTdHJ1Y3R1cmVTaGFwZTo6cHJvcGVydHlIYXNo
KCkKICAgICAgICAgcmV0dXJuICptX3Byb3BlcnR5SGFzaDsKIAogICAgIFN0cmluZ0J1aWxkZXIg
YnVpbGRlcjsKLSAgICBidWlsZGVyLmFwcGVuZCgiOiIpOworICAgIGJ1aWxkZXIuYXBwZW5kKCc6
Jyk7CiAgICAgYnVpbGRlci5hcHBlbmQobV9jb25zdHJ1Y3Rvck5hbWUpOwotICAgIGJ1aWxkZXIu
YXBwZW5kKCI6Iik7CisgICAgYnVpbGRlci5hcHBlbmQoJzonKTsKICAgICAKICAgICBmb3IgKGF1
dG8gaXRlciA9IG1fZmllbGRzLmJlZ2luKCksIGVuZCA9IG1fZmllbGRzLmVuZCgpOyBpdGVyICE9
IGVuZDsgKytpdGVyKSB7CiAgICAgICAgIFN0cmluZyBwcm9wZXJ0eSA9IFN0cmluZygoKml0ZXIp
KTsKQEAgLTI5Myw3ICsyOTMsNyBAQCBTdHJpbmcgU3RydWN0dXJlU2hhcGU6OnByb3BlcnR5SGFz
aCgpCiAgICAgfQogCiAgICAgaWYgKG1fcHJvdG8pIHsKLSAgICAgICAgYnVpbGRlci5hcHBlbmQo
IjoiKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoJzonKTsKICAgICAgICAgYnVpbGRlci5hcHBl
bmQoIl9fcHJvdG9fXyIpOwogICAgICAgICBidWlsZGVyLmFwcGVuZChtX3Byb3RvLT5wcm9wZXJ0
eUhhc2goKSk7CiAgICAgfQpAQCAtMzM5LDcgKzMzOSw3IEBAIFN0cmluZyBTdHJ1Y3R1cmVTaGFw
ZTo6c3RyaW5nUmVwcmVzZW50YXRpb24oKQogICAgIFN0cmluZ0J1aWxkZXIgcmVwcmVzZW50YXRp
b247CiAgICAgUmVmUHRyPFN0cnVjdHVyZVNoYXBlPiBjdXJTaGFwZSA9IHRoaXM7CiAKLSAgICBy
ZXByZXNlbnRhdGlvbi5hcHBlbmQoInsiKTsKKyAgICByZXByZXNlbnRhdGlvbi5hcHBlbmQoJ3sn
KTsKICAgICB3aGlsZSAoY3VyU2hhcGUpIHsKICAgICAgICAgZm9yIChhdXRvIGl0ID0gY3VyU2hh
cGUtPm1fZmllbGRzLmJlZ2luKCksIGVuZCA9IGN1clNoYXBlLT5tX2ZpZWxkcy5lbmQoKTsgaXQg
IT0gZW5kOyArK2l0KSB7CiAgICAgICAgICAgICBTdHJpbmcgcHJvcCgoKml0KS5nZXQoKSk7CkBA
IC0zNDgsNyArMzQ4LDcgQEAgU3RyaW5nIFN0cnVjdHVyZVNoYXBlOjpzdHJpbmdSZXByZXNlbnRh
dGlvbigpCiAgICAgICAgIH0KIAogICAgICAgICBpZiAoY3VyU2hhcGUtPm1fcHJvdG8pIHsKLSAg
ICAgICAgICAgIFN0cmluZyBwcm90ID0gU3RyaW5nKCJfX3Byb3RvX18iKSArIFN0cmluZygiIFsi
KSArIGN1clNoYXBlLT5tX3Byb3RvLT5tX2NvbnN0cnVjdG9yTmFtZSArIFN0cmluZygiXSIpOwor
ICAgICAgICAgICAgU3RyaW5nIHByb3QgPSBtYWtlU3RyaW5nKCJfX3Byb3RvX18gWyIsIGN1clNo
YXBlLT5tX3Byb3RvLT5tX2NvbnN0cnVjdG9yTmFtZSwgJ10nKTsKICAgICAgICAgICAgIHJlcHJl
c2VudGF0aW9uLmFwcGVuZChwcm90KTsKICAgICAgICAgICAgIHJlcHJlc2VudGF0aW9uLmFwcGVu
ZCgiLCAiKTsKICAgICAgICAgfQpAQCAtMzU5LDcgKzM1OSw3IEBAIFN0cmluZyBTdHJ1Y3R1cmVT
aGFwZTo6c3RyaW5nUmVwcmVzZW50YXRpb24oKQogICAgIGlmIChyZXByZXNlbnRhdGlvbi5sZW5n
dGgoKSA+PSAzKQogICAgICAgICByZXByZXNlbnRhdGlvbi5yZXNpemUocmVwcmVzZW50YXRpb24u
bGVuZ3RoKCkgLSAyKTsKIAotICAgIHJlcHJlc2VudGF0aW9uLmFwcGVuZCgifSIpOworICAgIHJl
cHJlc2VudGF0aW9uLmFwcGVuZCgnfScpOwogCiAgICAgcmV0dXJuIHJlcHJlc2VudGF0aW9uLnRv
U3RyaW5nKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9X
VEYvQ2hhbmdlTG9nCmluZGV4IGViNzlhMDcuLmY1YTNlZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
VEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAK
KzIwMTQtMDgtMjkgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KKworICAg
ICAgICBKYXZhU2NyaXB0Q29yZTogVXNlIEFTQ0lJTGl0ZXJhbCB3aGVyZSBwb3NzaWJsZQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM2MTc5CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTWljaGFlbCBTYWJvZmYuCisKKyAgICAgICAgKiB3dGYvdGV4dC9X
VEZTdHJpbmcuY3BwOgorICAgICAgICAoYXNjaWlEZWJ1Zyk6CisKIDIwMTQtMDgtMjcgIEZpbGlw
IFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KIAogICAgICAgICBERkcgc2hvdWxkIGNvbXB1dGUg
aW1tZWRpYXRlIGRvbWluYXRvcnMgdXNpbmcgdGhlIE8obiBsb2cgbikgZm9ybSBvZiBMZW5nYXVl
ciBhbmQgVGFyamFuJ3MgIkEgRmFzdCBBbGdvcml0aG0gZm9yIEZpbmRpbmcgRG9taW5hdG9ycyBp
biBhIEZsb3dncmFwaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5n
LmNwcCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmNwcAppbmRleCBjMWQ5NDM5Li4w
ODAzYzJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5jcHAKKysr
IGIvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuY3BwCkBAIC0xMjA2LDcgKzEyMDYsNyBA
QCBTdHJpbmcqIHN0cmluZyhjb25zdCBjaGFyKiBzKQogVmVjdG9yPGNoYXI+IGFzY2lpRGVidWco
U3RyaW5nSW1wbCogaW1wbCkKIHsKICAgICBpZiAoIWltcGwpCi0gICAgICAgIHJldHVybiBhc2Np
aURlYnVnKFN0cmluZygiW251bGxdIikuaW1wbCgpKTsKKyAgICAgICAgcmV0dXJuIGFzY2lpRGVi
dWcoU3RyaW5nKEFTQ0lJTGl0ZXJhbCgiW251bGxdIikpLmltcGwoKSk7CiAKICAgICBWZWN0b3I8
Y2hhcj4gYnVmZmVyOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBpbXBsLT5sZW5ndGgo
KTsgKytpKSB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>237373</attachid>
            <date>2014-08-29 13:49:01 -0700</date>
            <delta_ts>2014-08-29 14:33:42 -0700</delta_ts>
            <desc>[PATCH] For Landing</desc>
            <filename>jsc-3.patch</filename>
            <type>text/plain</type>
            <size>65457</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDA0N2Y5MzUuLjFjMTk0MjQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwMyBAQAorMjAxNC0wOC0yOSAgSm9zZXBoIFBlY29y
YXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgorCisgICAgICAgIEphdmFTY3JpcHRDb3JlOiBVc2Ug
QVNDSUlMaXRlcmFsIHdoZXJlIHBvc3NpYmxlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMzYxNzkKKworICAgICAgICBSZXZpZXdlZCBieSBNaWNoYWVs
IFNhYm9mZi4KKworICAgICAgICBHZW5lcmFsIHN0cmluZyAvIGNoYXJhY3RlciByZWxhdGVkIGNo
YW5nZXMuIFVzZSBBU0NJSUxpdGVyYWwgd2hlcmUKKyAgICAgICAgcG9zc2libGUsIGpzTm9udHJp
dmlhbFN0cmluZyB3aGVyZSBwb3NzaWJsZSwgYW5kIHJlcGxhY2Ugc3RyaW5nCisgICAgICAgIGxp
dGVyYWxzIHdpdGggY2hhcmFjdGVyIGxpdGVyYWxzIGluIHNvbWUgcGxhY2VzLgorCisgICAgICAg
IE5vIG5ldyB0ZXN0cywgbm8gY2hhbmdlcyB0byBmdW5jdGlvbmFsaXR5LgorCisgICAgICAgICog
Ynl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpuYW1lRm9y
UmVnaXN0ZXIpOgorICAgICAgICAqIGJ5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwOgorICAg
ICAgICAoSlNDOjpQb3N0Zml4Tm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6UHJl
Zml4Tm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6QXNzaWduRXJyb3JOb2RlOjpl
bWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpGb3JJbk5vZGU6OmVtaXRNdWx0aUxvb3BCeXRl
Y29kZSk6CisgICAgICAgIChKU0M6OkZvck9mTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAg
KEpTQzo6T2JqZWN0UGF0dGVybk5vZGU6OnRvU3RyaW5nKToKKyAgICAgICAgKiBkZmcvREZHRnVu
Y3Rpb25XaGl0ZWxpc3QuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkZ1bmN0aW9uV2hpdGVsaXN0
Ojpjb250YWlucyk6CisgICAgICAgICogZGZnL0RGR09wZXJhdGlvbnMuY3BwOgorICAgICAgICAo
SlNDOjpERkc6Om5ld1R5cGVkQXJyYXlXaXRoU2l6ZSk6CisgICAgICAgIChKU0M6OkRGRzo6bmV3
VHlwZWRBcnJheVdpdGhPbmVBcmd1bWVudCk6CisgICAgICAgICogaW5zcGVjdG9yL0NvbnNvbGVN
ZXNzYWdlLmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U6OmFkZFRvRnJv
bnRlbmQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5j
cHA6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpkaXNw
YXRjaCk6CisgICAgICAgICogaW5zcGVjdG9yL1NjcmlwdENhbGxTdGFja0ZhY3RvcnkuY3BwOgor
ICAgICAgICAoSW5zcGVjdG9yOjpleHRyYWN0U291cmNlSW5mb3JtYXRpb25Gcm9tRXhjZXB0aW9u
KToKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRvcl90ZW1wbGF0
ZXMucHk6CisgICAgICAgICogaW50ZXJwcmV0ZXIvU3RhY2tWaXNpdG9yLmNwcDoKKyAgICAgICAg
KEpTQzo6U3RhY2tWaXNpdG9yOjpGcmFtZTo6ZnVuY3Rpb25OYW1lKToKKyAgICAgICAgKEpTQzo6
U3RhY2tWaXNpdG9yOjpGcmFtZTo6c291cmNlVVJMKToKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0
aW9ucy5jcHA6CisgICAgICAgICoganNjLmNwcDoKKyAgICAgICAgKGZ1bmN0aW9uRGVzY3JpYmVB
cnJheSk6CisgICAgICAgIChmdW5jdGlvblJ1bik6CisgICAgICAgIChmdW5jdGlvbkxvYWQpOgor
ICAgICAgICAoZnVuY3Rpb25SZWFkRmlsZSk6CisgICAgICAgIChmdW5jdGlvbkNoZWNrU3ludGF4
KToKKyAgICAgICAgKGZ1bmN0aW9uVHJhbnNmZXJBcnJheUJ1ZmZlcik6CisgICAgICAgIChydW5X
aXRoU2NyaXB0cyk6CisgICAgICAgIChydW5JbnRlcmFjdGl2ZSk6CisgICAgICAgICogcGFyc2Vy
L0xleGVyLmNwcDoKKyAgICAgICAgKEpTQzo6TGV4ZXI8VD46OmludmFsaWRDaGFyYWN0ZXJNZXNz
YWdlKToKKyAgICAgICAgKEpTQzo6TGV4ZXI8VD46OnBhcnNlU3RyaW5nKToKKyAgICAgICAgKEpT
Qzo6TGV4ZXI8VD46OnBhcnNlU3RyaW5nU2xvd0Nhc2UpOgorICAgICAgICAoSlNDOjpMZXhlcjxU
Pjo6bGV4KToKKyAgICAgICAgKiBwcm9maWxlci9Qcm9maWxlLmNwcDoKKyAgICAgICAgKEpTQzo6
UHJvZmlsZTo6UHJvZmlsZSk6CisgICAgICAgICogcnVudGltZS9Bcmd1bWVudHMuY3BwOgorICAg
ICAgICAoSlNDOjphcmd1bWVudHNGdW5jSXRlcmF0b3IpOgorICAgICAgICAqIHJ1bnRpbWUvQXJy
YXlQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpwZXJmb3JtU2xvd1NvcnQpOgorICAgICAg
ICAoSlNDOjphcnJheVByb3RvRnVuY1NvcnQpOgorICAgICAgICAqIHJ1bnRpbWUvRXhjZXB0aW9u
SGVscGVycy5jcHA6CisgICAgICAgIChKU0M6OmNyZWF0ZUVycm9yKToKKyAgICAgICAgKEpTQzo6
Y3JlYXRlSW52YWxpZFBhcmFtZXRlckVycm9yKToKKyAgICAgICAgKEpTQzo6Y3JlYXRlTm90QUNv
bnN0cnVjdG9yRXJyb3IpOgorICAgICAgICAoSlNDOjpjcmVhdGVOb3RBRnVuY3Rpb25FcnJvcik6
CisgICAgICAgIChKU0M6OmNyZWF0ZU5vdEFuT2JqZWN0RXJyb3IpOgorICAgICAgICAoSlNDOjpj
cmVhdGVFcnJvckZvckludmFsaWRHbG9iYWxBc3NpZ25tZW50KToKKyAgICAgICAgKiBydW50aW1l
L0Z1bmN0aW9uUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6aW5zZXJ0U2VtaWNvbG9uSWZO
ZWVkZWQpOgorICAgICAgICAqIHJ1bnRpbWUvSlNBcnJheS5jcHA6CisgICAgICAgIChKU0M6OkpT
QXJyYXk6OmRlZmluZU93blByb3BlcnR5KToKKyAgICAgICAgKEpTQzo6SlNBcnJheTo6cG9wKToK
KyAgICAgICAgKEpTQzo6SlNBcnJheTo6cHVzaCk6CisgICAgICAgICogcnVudGltZS9KU0FycmF5
QnVmZmVyQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpKU0FycmF5QnVmZmVyQ29uc3Ry
dWN0b3I6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKiBydW50aW1lL0pTQXJyYXlCdWZmZXJQ
cm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjphcnJheUJ1ZmZlclByb3RvRnVuY1NsaWNlKToK
KyAgICAgICAgKiBydW50aW1lL0pTRGF0YVZpZXcuY3BwOgorICAgICAgICAoSlNDOjpKU0RhdGFW
aWV3OjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNEYXRhVmlld1Byb3RvdHlwZS5jcHA6
CisgICAgICAgIChKU0M6OmdldERhdGEpOgorICAgICAgICAoSlNDOjpzZXREYXRhKToKKyAgICAg
ICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxP
YmplY3Q6OnJlc2V0KToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25z
LmNwcDoKKyAgICAgICAgKEpTQzo6Z2xvYmFsRnVuY1Byb3RvU2V0dGVyKToKKyAgICAgICAgKiBy
dW50aW1lL0pTUHJvbWlzZUNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6SlNQcm9taXNl
Q29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKiBydW50aW1lL0xpdGVyYWxQ
YXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpMaXRlcmFsUGFyc2VyPENoYXJUeXBlPjo6TGV4ZXI6
OmxleCk6CisgICAgICAgIChKU0M6OkxpdGVyYWxQYXJzZXI8Q2hhclR5cGU+OjpMZXhlcjo6bGV4
U3RyaW5nKToKKyAgICAgICAgKEpTQzo6TGl0ZXJhbFBhcnNlcjxDaGFyVHlwZT46OnBhcnNlKToK
KyAgICAgICAgKiBydW50aW1lL0xpdGVyYWxQYXJzZXIuaDoKKyAgICAgICAgKEpTQzo6TGl0ZXJh
bFBhcnNlcjo6Z2V0RXJyb3JNZXNzYWdlKToKKyAgICAgICAgKiBydW50aW1lL1R5cGVTZXQuY3Bw
OgorICAgICAgICAoSlNDOjpUeXBlU2V0OjpzZWVuVHlwZXMpOgorICAgICAgICAoSlNDOjpUeXBl
U2V0OjpkaXNwbGF5TmFtZSk6CisgICAgICAgIChKU0M6OlR5cGVTZXQ6OmFsbFByaW1pdGl2ZVR5
cGVOYW1lcyk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZVNoYXBlOjpwcm9wZXJ0eUhhc2gpOgor
ICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVTaGFwZTo6c3RyaW5nUmVwcmVzZW50YXRpb24pOgorCiAy
MDE0LTA4LTI5ICBDc2FiYSBPc3p0cm9nb27DoWMgIDxvc3N5QHdlYmtpdC5vcmc+CiAKICAgICAg
ICAgVW5yZXZpd2VkLCByZW1vdmUgZW1wdHkgZGlyZWN0b3JpZXMuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCmluZGV4IDVkMmM1MTEuLmM1NjEyMTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCkBAIC0zODQ1
LDcgKzM4NDUsNyBAQCBTdHJpbmcgQ29kZUJsb2NrOjpuYW1lRm9yUmVnaXN0ZXIoVmlydHVhbFJl
Z2lzdGVyIHZpcnR1YWxSZWdpc3RlcikKICAgICAgICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwo
InJlYWwgYXJndW1lbnRzIik7CiAgICAgfQogICAgIGlmICh2aXJ0dWFsUmVnaXN0ZXIuaXNBcmd1
bWVudCgpKQotICAgICAgICByZXR1cm4gU3RyaW5nOjpmb3JtYXQoImFyZ3VtZW50c1slM2RdIiwg
dmlydHVhbFJlZ2lzdGVyLnRvQXJndW1lbnQoKSkuaW1wbCgpOworICAgICAgICByZXR1cm4gU3Ry
aW5nOjpmb3JtYXQoImFyZ3VtZW50c1slM2RdIiwgdmlydHVhbFJlZ2lzdGVyLnRvQXJndW1lbnQo
KSk7CiAKICAgICByZXR1cm4gIiI7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKaW5kZXggMDFkMTI4Ni4uYjdlMTY4MyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4u
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2Vu
LmNwcApAQCAtODkxLDggKzg5MSw4IEBAIFJlZ2lzdGVySUQqIFBvc3RmaXhOb2RlOjplbWl0Qnl0
ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCoKICAgICAgICAg
cmV0dXJuIGVtaXREb3QoZ2VuZXJhdG9yLCBkc3QpOwogCiAgICAgcmV0dXJuIGVtaXRUaHJvd1Jl
ZmVyZW5jZUVycm9yKGdlbmVyYXRvciwgbV9vcGVyYXRvciA9PSBPcFBsdXNQbHVzCi0gICAgICAg
ID8gIlBvc3RmaXggKysgb3BlcmF0b3IgYXBwbGllZCB0byB2YWx1ZSB0aGF0IGlzIG5vdCBhIHJl
ZmVyZW5jZS4iCi0gICAgICAgIDogIlBvc3RmaXggLS0gb3BlcmF0b3IgYXBwbGllZCB0byB2YWx1
ZSB0aGF0IGlzIG5vdCBhIHJlZmVyZW5jZS4iKTsKKyAgICAgICAgPyBBU0NJSUxpdGVyYWwoIlBv
c3RmaXggKysgb3BlcmF0b3IgYXBwbGllZCB0byB2YWx1ZSB0aGF0IGlzIG5vdCBhIHJlZmVyZW5j
ZS4iKQorICAgICAgICA6IEFTQ0lJTGl0ZXJhbCgiUG9zdGZpeCAtLSBvcGVyYXRvciBhcHBsaWVk
IHRvIHZhbHVlIHRoYXQgaXMgbm90IGEgcmVmZXJlbmNlLiIpKTsKIH0KIAogLy8gLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tIERlbGV0ZVJlc29sdmVOb2RlIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCkBAIC0xMDc0LDggKzEwNzQsOCBAQCBSZWdpc3RlcklEKiBQcmVm
aXhOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0
ZXJJRCogZAogICAgICAgICByZXR1cm4gZW1pdERvdChnZW5lcmF0b3IsIGRzdCk7CiAKICAgICBy
ZXR1cm4gZW1pdFRocm93UmVmZXJlbmNlRXJyb3IoZ2VuZXJhdG9yLCBtX29wZXJhdG9yID09IE9w
UGx1c1BsdXMKLSAgICAgICAgPyAiUHJlZml4ICsrIG9wZXJhdG9yIGFwcGxpZWQgdG8gdmFsdWUg
dGhhdCBpcyBub3QgYSByZWZlcmVuY2UuIgotICAgICAgICA6ICJQcmVmaXggLS0gb3BlcmF0b3Ig
YXBwbGllZCB0byB2YWx1ZSB0aGF0IGlzIG5vdCBhIHJlZmVyZW5jZS4iKTsKKyAgICAgICAgPyBB
U0NJSUxpdGVyYWwoIlByZWZpeCArKyBvcGVyYXRvciBhcHBsaWVkIHRvIHZhbHVlIHRoYXQgaXMg
bm90IGEgcmVmZXJlbmNlLiIpCisgICAgICAgIDogQVNDSUlMaXRlcmFsKCJQcmVmaXggLS0gb3Bl
cmF0b3IgYXBwbGllZCB0byB2YWx1ZSB0aGF0IGlzIG5vdCBhIHJlZmVyZW5jZS4iKSk7CiB9CiAK
IC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBVbmFyeSBPcGVyYXRpb24gTm9kZXMg
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTE2MTMsNyArMTYxMyw3IEBA
IFJlZ2lzdGVySUQqIFJlYWRNb2RpZnlEb3ROb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5l
cmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0CiAKIFJlZ2lzdGVySUQqIEFzc2lnbkVycm9yTm9kZTo6
ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqKQog
ewotICAgIHJldHVybiBlbWl0VGhyb3dSZWZlcmVuY2VFcnJvcihnZW5lcmF0b3IsICJMZWZ0IHNp
ZGUgb2YgYXNzaWdubWVudCBpcyBub3QgYSByZWZlcmVuY2UuIik7CisgICAgcmV0dXJuIGVtaXRU
aHJvd1JlZmVyZW5jZUVycm9yKGdlbmVyYXRvciwgQVNDSUlMaXRlcmFsKCJMZWZ0IHNpZGUgb2Yg
YXNzaWdubWVudCBpcyBub3QgYSByZWZlcmVuY2UuIikpOwogfQogCiAvLyAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0gQXNzaWduQnJhY2tldE5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KQEAgLTIwMzUsNyArMjAzNSw3IEBAIHZvaWQgRm9ySW5Ob2RlOjplbWl0
TG9vcEhlYWRlcihCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBwcm9w
ZXJ0CiB2b2lkIEZvckluTm9kZTo6ZW1pdE11bHRpTG9vcEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJh
dG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKIHsKICAgICBpZiAoIW1fbGV4cHItPmlz
QXNzaWdubWVudExvY2F0aW9uKCkpIHsKLSAgICAgICAgZW1pdFRocm93UmVmZXJlbmNlRXJyb3Io
Z2VuZXJhdG9yLCAiTGVmdCBzaWRlIG9mIGZvci1pbiBzdGF0ZW1lbnQgaXMgbm90IGEgcmVmZXJl
bmNlLiIpOworICAgICAgICBlbWl0VGhyb3dSZWZlcmVuY2VFcnJvcihnZW5lcmF0b3IsIEFTQ0lJ
TGl0ZXJhbCgiTGVmdCBzaWRlIG9mIGZvci1pbiBzdGF0ZW1lbnQgaXMgbm90IGEgcmVmZXJlbmNl
LiIpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMjE2Nyw3ICsyMTY3LDcgQEAgdm9p
ZCBGb3JJbk5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBS
ZWdpc3RlcklEKiBkc3QpCiB2b2lkIEZvck9mTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2Vu
ZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKIHsKICAgICBpZiAoIW1fbGV4cHIt
PmlzQXNzaWdubWVudExvY2F0aW9uKCkpIHsKLSAgICAgICAgZW1pdFRocm93UmVmZXJlbmNlRXJy
b3IoZ2VuZXJhdG9yLCAiTGVmdCBzaWRlIG9mIGZvci1vZiBzdGF0ZW1lbnQgaXMgbm90IGEgcmVm
ZXJlbmNlLiIpOworICAgICAgICBlbWl0VGhyb3dSZWZlcmVuY2VFcnJvcihnZW5lcmF0b3IsIEFT
Q0lJTGl0ZXJhbCgiTGVmdCBzaWRlIG9mIGZvci1vZiBzdGF0ZW1lbnQgaXMgbm90IGEgcmVmZXJl
bmNlLiIpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKQEAgLTI3ODQsNyArMjc4NCw3
IEBAIHZvaWQgT2JqZWN0UGF0dGVybk5vZGU6OnRvU3RyaW5nKFN0cmluZ0J1aWxkZXImIGJ1aWxk
ZXIpIGNvbnN0CiAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgnIicpOwogICAgICAgICB9IGVs
c2UKICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKG1fdGFyZ2V0UGF0dGVybnNbaV0ucHJvcGVy
dHlOYW1lLnN0cmluZygpKTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmQoIjoiKTsKKyAgICAgICAg
YnVpbGRlci5hcHBlbmQoJzonKTsKICAgICAgICAgbV90YXJnZXRQYXR0ZXJuc1tpXS5wYXR0ZXJu
LT50b1N0cmluZyhidWlsZGVyKTsKICAgICAgICAgaWYgKGkgPCBtX3RhcmdldFBhdHRlcm5zLnNp
emUoKSAtIDEpCiAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgnLCcpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGdW5jdGlvbldoaXRlbGlzdC5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Z1bmN0aW9uV2hpdGVsaXN0LmNwcAppbmRleCBmNjE4
NDk5Li4zN2M4MDc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Z1
bmN0aW9uV2hpdGVsaXN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Z1
bmN0aW9uV2hpdGVsaXN0LmNwcApAQCAtMTA2LDEwICsxMDYsNyBAQCBib29sIEZ1bmN0aW9uV2hp
dGVsaXN0Ojpjb250YWlucyhDb2RlQmxvY2sqIGNvZGVCbG9jaykgY29uc3QKICAgICBpZiAobV9l
bnRyaWVzLmNvbnRhaW5zKGhhc2gpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIFN0cmlu
ZyBuYW1lQW5kSGFzaCA9IG5hbWU7Ci0gICAgbmFtZUFuZEhhc2guYXBwZW5kKCcjJyk7Ci0gICAg
bmFtZUFuZEhhc2guYXBwZW5kKGhhc2gpOwotICAgIHJldHVybiBtX2VudHJpZXMuY29udGFpbnMo
bmFtZUFuZEhhc2gpOworICAgIHJldHVybiBtX2VudHJpZXMuY29udGFpbnMobmFtZSArICcjJyAr
IGhhc2gpOwogfQogCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAppbmRleCA4MjRhZTQ2Li4wNzg0N2U4NyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCkBAIC0xMzcsNyAr
MTM3LDcgQEAgY2hhciogbmV3VHlwZWRBcnJheVdpdGhTaXplKEV4ZWNTdGF0ZSogZXhlYywgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUsIGludDMyX3Qgc2l6ZSkKICAgICBWTSYgdm0gPSBleGVjLT52bSgp
OwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoJnZtLCBleGVjKTsKICAgICBpZiAo
c2l6ZSA8IDApIHsKLSAgICAgICAgdm0udGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlUmFuZ2VF
cnJvcihleGVjLCAiUmVxdWVzdGVkIGxlbmd0aCBpcyBuZWdhdGl2ZSIpKTsKKyAgICAgICAgdm0u
dGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlUmFuZ2VFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwo
IlJlcXVlc3RlZCBsZW5ndGggaXMgbmVnYXRpdmUiKSkpOwogICAgICAgICByZXR1cm4gMDsKICAg
ICB9CiAgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDxjaGFyKj4oVmlld0NsYXNzOjpjcmVhdGUoZXhl
Yywgc3RydWN0dXJlLCBzaXplKSk7CkBAIC0xNTYsNyArMTU2LDcgQEAgY2hhciogbmV3VHlwZWRB
cnJheVdpdGhPbmVBcmd1bWVudCgKICAgICAgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBidWZmZXIg
PSBqc0J1ZmZlci0+aW1wbCgpOwogICAgICAgICAKICAgICAgICAgaWYgKGJ1ZmZlci0+Ynl0ZUxl
bmd0aCgpICUgVmlld0NsYXNzOjplbGVtZW50U2l6ZSkgewotICAgICAgICAgICAgdm0udGhyb3dF
eGNlcHRpb24oZXhlYywgY3JlYXRlUmFuZ2VFcnJvcihleGVjLCAiQXJyYXlCdWZmZXIgbGVuZ3Ro
IG1pbnVzIHRoZSBieXRlT2Zmc2V0IGlzIG5vdCBhIG11bHRpcGxlIG9mIHRoZSBlbGVtZW50IHNp
emUiKSk7CisgICAgICAgICAgICB2bS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVSYW5nZUVy
cm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiQXJyYXlCdWZmZXIgbGVuZ3RoIG1pbnVzIHRoZSBieXRl
T2Zmc2V0IGlzIG5vdCBhIG11bHRpcGxlIG9mIHRoZSBlbGVtZW50IHNpemUiKSkpOwogICAgICAg
ICAgICAgcmV0dXJuIDA7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDxj
aGFyKj4oCkBAIC0xODMsMTggKzE4MywxOCBAQCBjaGFyKiBuZXdUeXBlZEFycmF5V2l0aE9uZUFy
Z3VtZW50KAogICAgIGlmICh2YWx1ZS5pc0ludDMyKCkpCiAgICAgICAgIGxlbmd0aCA9IHZhbHVl
LmFzSW50MzIoKTsKICAgICBlbHNlIGlmICghdmFsdWUuaXNOdW1iZXIoKSkgewotICAgICAgICB2
bS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgIkludmFsaWQgYXJy
YXkgbGVuZ3RoIGFyZ3VtZW50IikpOworICAgICAgICB2bS50aHJvd0V4Y2VwdGlvbihleGVjLCBj
cmVhdGVUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJJbnZhbGlkIGFycmF5IGxlbmd0aCBh
cmd1bWVudCIpKSk7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0gZWxzZSB7CiAgICAgICAgIGxl
bmd0aCA9IHN0YXRpY19jYXN0PGludD4odmFsdWUuYXNOdW1iZXIoKSk7CiAgICAgICAgIGlmIChs
ZW5ndGggIT0gdmFsdWUuYXNOdW1iZXIoKSkgewotICAgICAgICAgICAgdm0udGhyb3dFeGNlcHRp
b24oZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsICJJbnZhbGlkIGFycmF5IGxlbmd0aCBhcmd1
bWVudCAoZnJhY3Rpb25hbCBsZW5ndGhzIG5vdCBhbGxvd2VkKSIpKTsKKyAgICAgICAgICAgIHZt
LnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwo
IkludmFsaWQgYXJyYXkgbGVuZ3RoIGFyZ3VtZW50IChmcmFjdGlvbmFsIGxlbmd0aHMgbm90IGFs
bG93ZWQpIikpKTsKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICB9CiAgICAgfQogICAg
IAogICAgIGlmIChsZW5ndGggPCAwKSB7Ci0gICAgICAgIHZtLnRocm93RXhjZXB0aW9uKGV4ZWMs
IGNyZWF0ZVJhbmdlRXJyb3IoZXhlYywgIlJlcXVlc3RlZCBsZW5ndGggaXMgbmVnYXRpdmUiKSk7
CisgICAgICAgIHZtLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZVJhbmdlRXJyb3IoZXhlYywg
QVNDSUlMaXRlcmFsKCJSZXF1ZXN0ZWQgbGVuZ3RoIGlzIG5lZ2F0aXZlIikpKTsKICAgICAgICAg
cmV0dXJuIDA7CiAgICAgfQogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9Db25zb2xlTWVzc2FnZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL0NvbnNvbGVNZXNzYWdlLmNwcAppbmRleCA0YjhlM2M1Li5mN2QxZTU1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0NvbnNvbGVNZXNzYWdlLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0NvbnNvbGVNZXNzYWdlLmNwcApA
QCAtMjExLDcgKzIxMSw3IEBAIHZvaWQgQ29uc29sZU1lc3NhZ2U6OmFkZFRvRnJvbnRlbmQoSW5z
cGVjdG9yQ29uc29sZUZyb250ZW5kRGlzcGF0Y2hlciogY29uc29sZUZyCiAgICAgICAgICAgICAg
ICAganNvbkFyZ3MtPmFkZEl0ZW0oaW5zcGVjdG9yVmFsdWUpOwogICAgICAgICAgICAgfSBlbHNl
IHsKICAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9hcmd1bWVudHMt
PmFyZ3VtZW50Q291bnQoKTsgKytpKSB7Ci0gICAgICAgICAgICAgICAgICAgIFJlZlB0cjxJbnNw
ZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+IGluc3BlY3RvclZhbHVlID0g
aW5qZWN0ZWRTY3JpcHQud3JhcE9iamVjdChtX2FyZ3VtZW50cy0+YXJndW1lbnRBdChpKSwgImNv
bnNvbGUiLCBnZW5lcmF0ZVByZXZpZXcpOworICAgICAgICAgICAgICAgICAgICBSZWZQdHI8SW5z
cGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiBpbnNwZWN0b3JWYWx1ZSA9
IGluamVjdGVkU2NyaXB0LndyYXBPYmplY3QobV9hcmd1bWVudHMtPmFyZ3VtZW50QXQoaSksIEFT
Q0lJTGl0ZXJhbCgiY29uc29sZSIpLCBnZW5lcmF0ZVByZXZpZXcpOwogICAgICAgICAgICAgICAg
ICAgICBpZiAoIWluc3BlY3RvclZhbHVlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZERp
c3BhdGNoZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JC
YWNrZW5kRGlzcGF0Y2hlci5jcHAKaW5kZXggMzBhNjZmNy4uYmIzZWM4MiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hl
ci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNr
ZW5kRGlzcGF0Y2hlci5jcHAKQEAgLTkwLDcgKzkwLDcgQEAgdm9pZCBJbnNwZWN0b3JCYWNrZW5k
RGlzcGF0Y2hlcjo6ZGlzcGF0Y2goY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogICAgICAgICByZXR1
cm47CiAgICAgfQogCi0gICAgUmVmUHRyPEluc3BlY3RvclZhbHVlPiBjYWxsSWRWYWx1ZSA9IG1l
c3NhZ2VPYmplY3QtPmdldCgiaWQiKTsKKyAgICBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IGNhbGxJ
ZFZhbHVlID0gbWVzc2FnZU9iamVjdC0+Z2V0KEFTQ0lJTGl0ZXJhbCgiaWQiKSk7CiAgICAgaWYg
KCFjYWxsSWRWYWx1ZSkgewogICAgICAgICByZXBvcnRQcm90b2NvbEVycm9yKG51bGxwdHIsIElu
dmFsaWRSZXF1ZXN0LCBBU0NJSUxpdGVyYWwoIidpZCcgcHJvcGVydHkgd2FzIG5vdCBmb3VuZCIp
KTsKICAgICAgICAgcmV0dXJuOwpAQCAtMTAyLDcgKzEwMiw3IEBAIHZvaWQgSW5zcGVjdG9yQmFj
a2VuZERpc3BhdGNoZXI6OmRpc3BhdGNoKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAotICAgIFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4gbWV0aG9kVmFsdWUg
PSBtZXNzYWdlT2JqZWN0LT5nZXQoIm1ldGhvZCIpOworICAgIFJlZlB0cjxJbnNwZWN0b3JWYWx1
ZT4gbWV0aG9kVmFsdWUgPSBtZXNzYWdlT2JqZWN0LT5nZXQoQVNDSUlMaXRlcmFsKCJtZXRob2Qi
KSk7CiAgICAgaWYgKCFtZXRob2RWYWx1ZSkgewogICAgICAgICByZXBvcnRQcm90b2NvbEVycm9y
KCZjYWxsSWQsIEludmFsaWRSZXF1ZXN0LCBBU0NJSUxpdGVyYWwoIidtZXRob2QnIHByb3BlcnR5
IHdhc24ndCBmb3VuZCIpKTsKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9TY3JpcHRDYWxsU3RhY2tGYWN0b3J5LmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvU2NyaXB0Q2FsbFN0YWNrRmFjdG9yeS5jcHAKaW5k
ZXggMmYwNjI3OS4uMjdkYzA5OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9TY3JpcHRDYWxsU3RhY2tGYWN0b3J5LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL1NjcmlwdENhbGxTdGFja0ZhY3RvcnkuY3BwCkBAIC0xMjQsNyArMTI0
LDcgQEAgc3RhdGljIHZvaWQgZXh0cmFjdFNvdXJjZUluZm9ybWF0aW9uRnJvbUV4Y2VwdGlvbihK
U0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QKICAgICBKU1ZhbHVlIGNvbHVtblZhbHVlID0g
ZXhjZXB0aW9uT2JqZWN0LT5nZXREaXJlY3QoZXhlYy0+dm0oKSwgSWRlbnRpZmllcihleGVjLCAi
Y29sdW1uIikpOwogICAgICpjb2x1bW5OdW1iZXIgPSBjb2x1bW5WYWx1ZSAmJiBjb2x1bW5WYWx1
ZS5pc051bWJlcigpID8gaW50KGNvbHVtblZhbHVlLnRvTnVtYmVyKGV4ZWMpKSA6IDA7CiAgICAg
SlNWYWx1ZSBzb3VyY2VVUkxWYWx1ZSA9IGV4Y2VwdGlvbk9iamVjdC0+Z2V0RGlyZWN0KGV4ZWMt
PnZtKCksIElkZW50aWZpZXIoZXhlYywgInNvdXJjZVVSTCIpKTsKLSAgICAqc291cmNlVVJMID0g
c291cmNlVVJMVmFsdWUgJiYgc291cmNlVVJMVmFsdWUuaXNTdHJpbmcoKSA/IHNvdXJjZVVSTFZh
bHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSA6IFN0cmluZygidW5kZWZpbmVkIik7Cisg
ICAgKnNvdXJjZVVSTCA9IHNvdXJjZVVSTFZhbHVlICYmIHNvdXJjZVVSTFZhbHVlLmlzU3RyaW5n
KCkgPyBzb3VyY2VVUkxWYWx1ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykgOiBBU0NJSUxp
dGVyYWwoInVuZGVmaW5lZCIpOwogICAgIGV4ZWMtPmNsZWFyRXhjZXB0aW9uKCk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2Vu
L2dlbmVyYXRvcl90ZW1wbGF0ZXMucHkgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0b3JfdGVtcGxhdGVzLnB5Cm9sZCBtb2RlIDEwMDY0NApu
ZXcgbW9kZSAxMDA3NTUKaW5kZXggNjE0ODUyNS4uZjFkZWUzNQotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0b3JfdGVtcGxhdGVzLnB5
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dl
bmVyYXRvcl90ZW1wbGF0ZXMucHkKQEAgLTEyOSw3ICsxMjksNyBAQCBwcml2YXRlOgogCiAke2Rp
c3BhdGNoQ2FzZXN9CiAgICAgZWxzZQotICAgICAgICBtX2JhY2tlbmREaXNwYXRjaGVyLT5yZXBv
cnRQcm90b2NvbEVycm9yKCZjYWxsSWQsIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpNZXRo
b2ROb3RGb3VuZCwgU3RyaW5nKCInIikgKyAiJHtkb21haW5OYW1lfSIgKyAnLicgKyBtZXRob2Qg
KyAiJyB3YXMgbm90IGZvdW5kIik7CisgICAgICAgIG1fYmFja2VuZERpc3BhdGNoZXItPnJlcG9y
dFByb3RvY29sRXJyb3IoJmNhbGxJZCwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6Ok1ldGhv
ZE5vdEZvdW5kLCBtYWtlU3RyaW5nKCdcXCcnLCAiJHtkb21haW5OYW1lfSIsICcuJywgbWV0aG9k
LCAiJyB3YXMgbm90IGZvdW5kIikpOwogfSIiIikKIAogICAgIEJhY2tlbmREaXNwYXRjaGVySW1w
bGVtZW50YXRpb25MYXJnZVN3aXRjaCA9ICgKQEAgLTE1NCw3ICsxNTQsNyBAQCAke2Rpc3BhdGNo
Q2FzZXN9CiAKICAgICBIYXNoTWFwPFN0cmluZywgQ2FsbEhhbmRsZXI+OjppdGVyYXRvciBpdCA9
IGRpc3BhdGNoTWFwLmZpbmQobWV0aG9kKTsKICAgICBpZiAoaXQgPT0gZGlzcGF0Y2hNYXAuZW5k
KCkpIHsKLSAgICAgICAgbV9iYWNrZW5kRGlzcGF0Y2hlci0+cmVwb3J0UHJvdG9jb2xFcnJvcigm
Y2FsbElkLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6TWV0aG9kTm90Rm91bmQsIFN0cmlu
ZygiJyIpICsgIiR7ZG9tYWluTmFtZX0iICsgJy4nICsgbWV0aG9kICsgIicgd2FzIG5vdCBmb3Vu
ZCIpOworICAgICAgICBtX2JhY2tlbmREaXNwYXRjaGVyLT5yZXBvcnRQcm90b2NvbEVycm9yKCZj
YWxsSWQsIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpNZXRob2ROb3RGb3VuZCwgbWFrZVN0
cmluZygnXFwnJywgIiR7ZG9tYWluTmFtZX0iLCAnLicsIG1ldGhvZCwgIicgd2FzIG5vdCBmb3Vu
ZCIpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ludGVycHJldGVyL1N0YWNrVmlzaXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW50ZXJwcmV0ZXIvU3RhY2tWaXNpdG9yLmNwcAppbmRleCBiNDYwMTU2Li45OTVhYjZi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvU3RhY2tWaXNp
dG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvU3RhY2tWaXNp
dG9yLmNwcApAQCAtMTk2LDcgKzE5Niw3IEBAIFN0cmluZyBTdGFja1Zpc2l0b3I6OkZyYW1lOjpm
dW5jdGlvbk5hbWUoKQogCiAgICAgc3dpdGNoIChjb2RlVHlwZSgpKSB7CiAgICAgY2FzZSBDb2Rl
VHlwZTo6RXZhbDoKLSAgICAgICAgdHJhY2VMaW5lID0gImV2YWwgY29kZSI7CisgICAgICAgIHRy
YWNlTGluZSA9IEFTQ0lJTGl0ZXJhbCgiZXZhbCBjb2RlIik7CiAgICAgICAgIGJyZWFrOwogICAg
IGNhc2UgQ29kZVR5cGU6Ok5hdGl2ZToKICAgICAgICAgaWYgKGNhbGxlZSkKQEAgLTIwNiw3ICsy
MDYsNyBAQCBTdHJpbmcgU3RhY2tWaXNpdG9yOjpGcmFtZTo6ZnVuY3Rpb25OYW1lKCkKICAgICAg
ICAgdHJhY2VMaW5lID0gZ2V0Q2FsY3VsYXRlZERpc3BsYXlOYW1lKGNhbGxGcmFtZSgpLCBjYWxs
ZWUpLmltcGwoKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDb2RlVHlwZTo6R2xvYmFsOgot
ICAgICAgICB0cmFjZUxpbmUgPSAiZ2xvYmFsIGNvZGUiOworICAgICAgICB0cmFjZUxpbmUgPSBB
U0NJSUxpdGVyYWwoImdsb2JhbCBjb2RlIik7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBy
ZXR1cm4gdHJhY2VMaW5lLmlzTnVsbCgpID8gZW1wdHlTdHJpbmcoKSA6IHRyYWNlTGluZTsKQEAg
LTIyNiw3ICsyMjYsNyBAQCBTdHJpbmcgU3RhY2tWaXNpdG9yOjpGcmFtZTo6c291cmNlVVJMKCkK
ICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2UgQ29kZVR5cGU6Ok5hdGl2ZToKLSAgICAg
ICAgdHJhY2VMaW5lID0gIltuYXRpdmUgY29kZV0iOworICAgICAgICB0cmFjZUxpbmUgPSBBU0NJ
SUxpdGVyYWwoIltuYXRpdmUgY29kZV0iKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIHJl
dHVybiB0cmFjZUxpbmUuaXNOdWxsKCkgPyBlbXB0eVN0cmluZygpIDogdHJhY2VMaW5lOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKaW5kZXggOWZmYWM0Ni4u
NDlmYTM2YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRp
b25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3Bw
CkBAIC05NjksNyArOTY5LDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRp
b25OZXdSZWdleHAoRXhlY1N0YXRlKiBleGVjLCB2b2lkKiByZWdleHBQdHIKICAgICBOYXRpdmVD
YWxsRnJhbWVUcmFjZXIgdHJhY2VyKCZ2bSwgZXhlYyk7CiAgICAgUmVnRXhwKiByZWdleHAgPSBz
dGF0aWNfY2FzdDxSZWdFeHAqPihyZWdleHBQdHIpOwogICAgIGlmICghcmVnZXhwLT5pc1ZhbGlk
KCkpIHsKLSAgICAgICAgdm0udGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlU3ludGF4RXJyb3Io
ZXhlYywgIkludmFsaWQgZmxhZ3Mgc3VwcGxpZWQgdG8gUmVnRXhwIGNvbnN0cnVjdG9yLiIpKTsK
KyAgICAgICAgdm0udGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlU3ludGF4RXJyb3IoZXhlYywg
QVNDSUlMaXRlcmFsKCJJbnZhbGlkIGZsYWdzIHN1cHBsaWVkIHRvIFJlZ0V4cCBjb25zdHJ1Y3Rv
ci4iKSkpOwogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwog
ICAgIH0KIApAQCAtMTYxNSw3ICsxNjE1LDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElP
TiBvcGVyYXRpb25EZWxldGVCeUlkKEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUKICAg
ICBib29sIGNvdWxkRGVsZXRlID0gYmFzZU9iai0+bWV0aG9kVGFibGUodm0pLT5kZWxldGVQcm9w
ZXJ0eShiYXNlT2JqLCBleGVjLCAqaWRlbnRpZmllcik7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBq
c0Jvb2xlYW4oY291bGREZWxldGUpOwogICAgIGlmICghY291bGREZWxldGUgJiYgZXhlYy0+Y29k
ZUJsb2NrKCktPmlzU3RyaWN0TW9kZSgpKQotICAgICAgICB2bS50aHJvd0V4Y2VwdGlvbihleGVj
LCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgIlVuYWJsZSB0byBkZWxldGUgcHJvcGVydHkuIikpOwor
ICAgICAgICB2bS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgQVND
SUlMaXRlcmFsKCJVbmFibGUgdG8gZGVsZXRlIHByb3BlcnR5LiIpKSk7CiAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvanNjLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCmluZGV4IDNmZGNl
YTIuLjQ5MGJhMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCkBAIC03MTQsOCArNzE0LDggQEAgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkRlc2NyaWJlQXJyYXkoRXhlY1N0YXRl
KiBleGVjKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwog
ICAgIEpTT2JqZWN0KiBvYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTT2JqZWN0Kj4oZXhlYy0+YXJn
dW1lbnQoMCkpOwogICAgIGlmICghb2JqZWN0KQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzU3RyaW5nKGV4ZWMsICI8bm90IG9iamVjdD4iKSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc1N0cmluZyhleGVjLCB0b1N0cmluZygiPFB1YmxpYyBsZW5ndGg6ICIsIG9iamVj
dC0+Z2V0QXJyYXlMZW5ndGgoKSwgIjsgdmVjdG9yIGxlbmd0aDogIiwgb2JqZWN0LT5nZXRWZWN0
b3JMZW5ndGgoKSwgIj4iKSkpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTm9u
dHJpdmlhbFN0cmluZyhleGVjLCBBU0NJSUxpdGVyYWwoIjxub3Qgb2JqZWN0PiIpKSk7CisgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc05vbnRyaXZpYWxTdHJpbmcoZXhlYywgdG9TdHJpbmco
IjxQdWJsaWMgbGVuZ3RoOiAiLCBvYmplY3QtPmdldEFycmF5TGVuZ3RoKCksICI7IHZlY3RvciBs
ZW5ndGg6ICIsIG9iamVjdC0+Z2V0VmVjdG9yTGVuZ3RoKCksICI+IikpKTsKIH0KIAogY2xhc3Mg
RnVuY3Rpb25KU0NTdGFja0Z1bmN0b3IgewpAQCAtODY5LDcgKzg2OSw3IEBAIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25SdW4oRXhlY1N0YXRlKiBleGVjKQogICAgIFN0cmlu
ZyBmaWxlTmFtZSA9IGV4ZWMtPmFyZ3VtZW50KDApLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVj
KTsKICAgICBWZWN0b3I8Y2hhcj4gc2NyaXB0OwogICAgIGlmICghZmlsbEJ1ZmZlcldpdGhDb250
ZW50c09mRmlsZShmaWxlTmFtZSwgc2NyaXB0KSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZUVycm9yKGV4ZWMsICJD
b3VsZCBub3Qgb3BlbiBmaWxlLiIpKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
ZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVFcnJvcihleGVjLCBBU0NJSUxp
dGVyYWwoIkNvdWxkIG5vdCBvcGVuIGZpbGUuIikpKSk7CiAKICAgICBHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCA9IEdsb2JhbE9iamVjdDo6Y3JlYXRlKGV4ZWMtPnZtKCksIEdsb2JhbE9iamVj
dDo6Y3JlYXRlU3RydWN0dXJlKGV4ZWMtPnZtKCksIGpzTnVsbCgpKSwgVmVjdG9yPFN0cmluZz4o
KSk7CiAKQEAgLTg5OCw3ICs4OTgsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1
bmN0aW9uTG9hZChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgU3RyaW5nIGZpbGVOYW1lID0gZXhlYy0+
YXJndW1lbnQoMCkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOwogICAgIFZlY3RvcjxjaGFy
PiBzY3JpcHQ7CiAgICAgaWYgKCFmaWxsQnVmZmVyV2l0aENvbnRlbnRzT2ZGaWxlKGZpbGVOYW1l
LCBzY3JpcHQpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGV4ZWMtPnZtKCkudGhy
b3dFeGNlcHRpb24oZXhlYywgY3JlYXRlRXJyb3IoZXhlYywgIkNvdWxkIG5vdCBvcGVuIGZpbGUu
IikpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShleGVjLT52bSgpLnRocm93RXhj
ZXB0aW9uKGV4ZWMsIGNyZWF0ZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiQ291bGQgbm90IG9w
ZW4gZmlsZS4iKSkpKTsKIAogICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBleGVj
LT5sZXhpY2FsR2xvYmFsT2JqZWN0KCk7CiAgICAgCkBAIC05MTQsNyArOTE0LDcgQEAgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblJlYWRGaWxlKEV4ZWNTdGF0ZSogZXhlYykK
ICAgICBTdHJpbmcgZmlsZU5hbWUgPSBleGVjLT5hcmd1bWVudCgwKS50b1N0cmluZyhleGVjKS0+
dmFsdWUoZXhlYyk7CiAgICAgVmVjdG9yPGNoYXI+IHNjcmlwdDsKICAgICBpZiAoIWZpbGxCdWZm
ZXJXaXRoQ29udGVudHNPZkZpbGUoZmlsZU5hbWUsIHNjcmlwdCkpCi0gICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVFcnJv
cihleGVjLCAiQ291bGQgbm90IG9wZW4gZmlsZS4iKSkpOworICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlRXJyb3IoZXhl
YywgQVNDSUlMaXRlcmFsKCJDb3VsZCBub3Qgb3BlbiBmaWxlLiIpKSkpOwogCiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc1N0cmluZyhleGVjLCBzdHJpbmdGcm9tVVRGKHNjcmlwdC5kYXRh
KCkpKSk7CiB9CkBAIC05MjQsNyArOTI0LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBmdW5jdGlvbkNoZWNrU3ludGF4KEV4ZWNTdGF0ZSogZXhlYykKICAgICBTdHJpbmcgZmlsZU5h
bWUgPSBleGVjLT5hcmd1bWVudCgwKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CiAgICAg
VmVjdG9yPGNoYXI+IHNjcmlwdDsKICAgICBpZiAoIWZpbGxCdWZmZXJXaXRoQ29udGVudHNPZkZp
bGUoZmlsZU5hbWUsIHNjcmlwdCkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoZXhl
Yy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVFcnJvcihleGVjLCAiQ291bGQgbm90
IG9wZW4gZmlsZS4iKSkpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGV4ZWMtPnZt
KCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJD
b3VsZCBub3Qgb3BlbiBmaWxlLiIpKSkpOwogCiAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCA9IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKTsKIApAQCAtMTAxMSwxMSArMTAxMSwx
MSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uUmVvcHRpbWl6YXRpb25S
ZXRyeUNvdW50KEV4ZWNTdGF0ZSogZXhlYykKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
ZnVuY3Rpb25UcmFuc2ZlckFycmF5QnVmZmVyKEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICBpZiAo
ZXhlYy0+YXJndW1lbnRDb3VudCgpIDwgMSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZUVycm9yKGV4ZWMsICJOb3Qg
ZW5vdWdoIGFyZ3VtZW50cyIpKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoZXhl
Yy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVFcnJvcihleGVjLCBBU0NJSUxpdGVy
YWwoIk5vdCBlbm91Z2ggYXJndW1lbnRzIikpKSk7CiAgICAgCiAgICAgSlNBcnJheUJ1ZmZlciog
YnVmZmVyID0ganNEeW5hbWljQ2FzdDxKU0FycmF5QnVmZmVyKj4oZXhlYy0+YXJndW1lbnQoMCkp
OwogICAgIGlmICghYnVmZmVyKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGV4ZWMt
PnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlRXJyb3IoZXhlYywgIkV4cGVjdGVkIGFu
IGFycmF5IGJ1ZmZlciIpKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoZXhlYy0+
dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwo
IkV4cGVjdGVkIGFuIGFycmF5IGJ1ZmZlciIpKSkpOwogICAgIAogICAgIEFycmF5QnVmZmVyQ29u
dGVudHMgZHVtbXlDb250ZW50czsKICAgICBidWZmZXItPmltcGwoKS0+dHJhbnNmZXIoZHVtbXlD
b250ZW50cyk7CkBAIC0xMTg2LDcgKzExODYsNyBAQCBzdGF0aWMgYm9vbCBydW5XaXRoU2NyaXB0
cyhHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgVmVjdG9yPFNjcmlwdD4mIHNjcgog
ICAgICAgICAgICAgc2NyaXB0ID0gc2NyaXB0QnVmZmVyLmRhdGEoKTsKICAgICAgICAgfSBlbHNl
IHsKICAgICAgICAgICAgIHNjcmlwdCA9IHNjcmlwdHNbaV0uYXJndW1lbnQ7Ci0gICAgICAgICAg
ICBmaWxlTmFtZSA9ICJbQ29tbWFuZCBMaW5lXSI7CisgICAgICAgICAgICBmaWxlTmFtZSA9IEFT
Q0lJTGl0ZXJhbCgiW0NvbW1hbmQgTGluZV0iKTsKICAgICAgICAgfQogCiAgICAgICAgIHZtLnN0
YXJ0U2FtcGxpbmcoKTsKQEAgLTEyMjgsNyArMTIyOCw3IEBAIHN0YXRpYyBib29sIHJ1bldpdGhT
Y3JpcHRzKEdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBWZWN0b3I8U2NyaXB0PiYg
c2NyCiAKIHN0YXRpYyB2b2lkIHJ1bkludGVyYWN0aXZlKEdsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0KQogewotICAgIFN0cmluZyBpbnRlcnByZXRlck5hbWUoIkludGVycHJldGVyIik7CisgICAg
U3RyaW5nIGludGVycHJldGVyTmFtZShBU0NJSUxpdGVyYWwoIkludGVycHJldGVyIikpOwogICAg
IAogICAgIGJvb2wgc2hvdWxkUXVpdCA9IGZhbHNlOwogICAgIHdoaWxlICghc2hvdWxkUXVpdCkg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmNwcAppbmRleCA2N2MwMWZiLi43MTUy
M2VhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmNwcApAQCAtNTA2LDIxICs1
MDYsMjEgQEAgU3RyaW5nIExleGVyPFQ+OjppbnZhbGlkQ2hhcmFjdGVyTWVzc2FnZSgpIGNvbnN0
CiB7CiAgICAgc3dpdGNoIChtX2N1cnJlbnQpIHsKICAgICBjYXNlIDA6Ci0gICAgICAgIHJldHVy
biAiSW52YWxpZCBjaGFyYWN0ZXI6ICdcXDAnIjsKKyAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJh
bCgiSW52YWxpZCBjaGFyYWN0ZXI6ICdcXDAnIik7CiAgICAgY2FzZSAxMDoKLSAgICAgICAgcmV0
dXJuICJJbnZhbGlkIGNoYXJhY3RlcjogJ1xcbiciOworICAgICAgICByZXR1cm4gQVNDSUlMaXRl
cmFsKCJJbnZhbGlkIGNoYXJhY3RlcjogJ1xcbiciKTsKICAgICBjYXNlIDExOgotICAgICAgICBy
ZXR1cm4gIkludmFsaWQgY2hhcmFjdGVyOiAnXFx2JyI7CisgICAgICAgIHJldHVybiBBU0NJSUxp
dGVyYWwoIkludmFsaWQgY2hhcmFjdGVyOiAnXFx2JyIpOwogICAgIGNhc2UgMTM6Ci0gICAgICAg
IHJldHVybiAiSW52YWxpZCBjaGFyYWN0ZXI6ICdcXHInIjsKKyAgICAgICAgcmV0dXJuIEFTQ0lJ
TGl0ZXJhbCgiSW52YWxpZCBjaGFyYWN0ZXI6ICdcXHInIik7CiAgICAgY2FzZSAzNToKLSAgICAg
ICAgcmV0dXJuICJJbnZhbGlkIGNoYXJhY3RlcjogJyMnIjsKKyAgICAgICAgcmV0dXJuIEFTQ0lJ
TGl0ZXJhbCgiSW52YWxpZCBjaGFyYWN0ZXI6ICcjJyIpOwogICAgIGNhc2UgNjQ6Ci0gICAgICAg
IHJldHVybiAiSW52YWxpZCBjaGFyYWN0ZXI6ICdAJyI7CisgICAgICAgIHJldHVybiBBU0NJSUxp
dGVyYWwoIkludmFsaWQgY2hhcmFjdGVyOiAnQCciKTsKICAgICBjYXNlIDk2OgotICAgICAgICBy
ZXR1cm4gIkludmFsaWQgY2hhcmFjdGVyOiAnYCciOworICAgICAgICByZXR1cm4gQVNDSUlMaXRl
cmFsKCJJbnZhbGlkIGNoYXJhY3RlcjogJ2AnIik7CiAgICAgZGVmYXVsdDoKLSAgICAgICAgcmV0
dXJuIFN0cmluZzo6Zm9ybWF0KCJJbnZhbGlkIGNoYXJhY3RlciAnXFx1JTA0dSciLCBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4obV9jdXJyZW50KSkuaW1wbCgpOworICAgICAgICByZXR1cm4gU3RyaW5n
Ojpmb3JtYXQoIkludmFsaWQgY2hhcmFjdGVyICdcXHUlMDR1JyIsIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihtX2N1cnJlbnQpKTsKICAgICB9CiB9CiAKQEAgLTEwMjYsNyArMTAyNiw3IEBAIHRlbXBs
YXRlIDxib29sIHNob3VsZEJ1aWxkU3RyaW5ncz4gQUxXQVlTX0lOTElORSB0eXBlbmFtZSBMZXhl
cjxUPjo6U3RyaW5nUGFyc2VSCiAgICAgICAgICAgICBlbHNlIGlmIChtX2N1cnJlbnQgPT0gJ3gn
KSB7CiAgICAgICAgICAgICAgICAgc2hpZnQoKTsKICAgICAgICAgICAgICAgICBpZiAoIWlzQVND
SUlIZXhEaWdpdChtX2N1cnJlbnQpIHx8ICFpc0FTQ0lJSGV4RGlnaXQocGVlaygxKSkpIHsKLSAg
ICAgICAgICAgICAgICAgICAgbV9sZXhFcnJvck1lc3NhZ2UgPSAiXFx4IGNhbiBvbmx5IGJlIGZv
bGxvd2VkIGJ5IGEgaGV4IGNoYXJhY3RlciBzZXF1ZW5jZSI7CisgICAgICAgICAgICAgICAgICAg
IG1fbGV4RXJyb3JNZXNzYWdlID0gQVNDSUlMaXRlcmFsKCJcXHggY2FuIG9ubHkgYmUgZm9sbG93
ZWQgYnkgYSBoZXggY2hhcmFjdGVyIHNlcXVlbmNlIik7CiAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiAoYXRFbmQoKSB8fCAoaXNBU0NJSUhleERpZ2l0KG1fY3VycmVudCkgJiYgKG1fY29kZSAr
IDEgPT0gbV9jb2RlRW5kKSkpID8gU3RyaW5nVW50ZXJtaW5hdGVkIDogU3RyaW5nQ2Fubm90QmVQ
YXJzZWQ7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIFQgcHJldiA9IG1fY3Vy
cmVudDsKQEAgLTEwOTEsNyArMTA5MSw3IEBAIHRlbXBsYXRlIDxib29sIHNob3VsZEJ1aWxkU3Ry
aW5ncz4gdHlwZW5hbWUgTGV4ZXI8VD46OlN0cmluZ1BhcnNlUmVzdWx0IExleGVyPFQ+CiAgICAg
ICAgICAgICBlbHNlIGlmIChtX2N1cnJlbnQgPT0gJ3gnKSB7CiAgICAgICAgICAgICAgICAgc2hp
ZnQoKTsKICAgICAgICAgICAgICAgICBpZiAoIWlzQVNDSUlIZXhEaWdpdChtX2N1cnJlbnQpIHx8
ICFpc0FTQ0lJSGV4RGlnaXQocGVlaygxKSkpIHsKLSAgICAgICAgICAgICAgICAgICAgbV9sZXhF
cnJvck1lc3NhZ2UgPSAiXFx4IGNhbiBvbmx5IGJlIGZvbGxvd2VkIGJ5IGEgaGV4IGNoYXJhY3Rl
ciBzZXF1ZW5jZSI7CisgICAgICAgICAgICAgICAgICAgIG1fbGV4RXJyb3JNZXNzYWdlID0gQVND
SUlMaXRlcmFsKCJcXHggY2FuIG9ubHkgYmUgZm9sbG93ZWQgYnkgYSBoZXggY2hhcmFjdGVyIHNl
cXVlbmNlIik7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBTdHJpbmdDYW5ub3RCZVBhcnNl
ZDsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgVCBwcmV2ID0gbV9jdXJyZW50
OwpAQCAtMTEwOSw3ICsxMTA5LDcgQEAgdGVtcGxhdGUgPGJvb2wgc2hvdWxkQnVpbGRTdHJpbmdz
PiB0eXBlbmFtZSBMZXhlcjxUPjo6U3RyaW5nUGFyc2VSZXN1bHQgTGV4ZXI8VD4KICAgICAgICAg
ICAgICAgICAgICAgaWYgKHNob3VsZEJ1aWxkU3RyaW5ncykKICAgICAgICAgICAgICAgICAgICAg
ICAgIHJlY29yZDE2KCd1Jyk7CiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAg
ICAgICAgICAgbV9sZXhFcnJvck1lc3NhZ2UgPSAiXFx1IGNhbiBvbmx5IGJlIGZvbGxvd2VkIGJ5
IGEgVW5pY29kZSBjaGFyYWN0ZXIgc2VxdWVuY2UiOworICAgICAgICAgICAgICAgICAgICBtX2xl
eEVycm9yTWVzc2FnZSA9IEFTQ0lJTGl0ZXJhbCgiXFx1IGNhbiBvbmx5IGJlIGZvbGxvd2VkIGJ5
IGEgVW5pY29kZSBjaGFyYWN0ZXIgc2VxdWVuY2UiKTsKICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIGNoYXJhY3Rlci52YWx1ZVR5cGUoKSA9PSBVbmljb2RlSGV4VmFsdWU6OkluY29tcGxldGVI
ZXggPyBTdHJpbmdVbnRlcm1pbmF0ZWQgOiBTdHJpbmdDYW5ub3RCZVBhcnNlZDsKICAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICB9IGVsc2UgaWYgKHN0cmljdE1vZGUgJiYgaXNBU0NJSURp
Z2l0KG1fY3VycmVudCkpIHsKQEAgLTExMTcsNyArMTExNyw3IEBAIHRlbXBsYXRlIDxib29sIHNo
b3VsZEJ1aWxkU3RyaW5ncz4gdHlwZW5hbWUgTGV4ZXI8VD46OlN0cmluZ1BhcnNlUmVzdWx0IExl
eGVyPFQ+CiAgICAgICAgICAgICAgICAgaW50IGNoYXJhY3RlcjEgPSBtX2N1cnJlbnQ7CiAgICAg
ICAgICAgICAgICAgc2hpZnQoKTsKICAgICAgICAgICAgICAgICBpZiAoY2hhcmFjdGVyMSAhPSAn
MCcgfHwgaXNBU0NJSURpZ2l0KG1fY3VycmVudCkpIHsKLSAgICAgICAgICAgICAgICAgICAgbV9s
ZXhFcnJvck1lc3NhZ2UgPSAiVGhlIG9ubHkgdmFsaWQgbnVtZXJpYyBlc2NhcGUgaW4gc3RyaWN0
IG1vZGUgaXMgJ1xcMCciOworICAgICAgICAgICAgICAgICAgICBtX2xleEVycm9yTWVzc2FnZSA9
IEFTQ0lJTGl0ZXJhbCgiVGhlIG9ubHkgdmFsaWQgbnVtZXJpYyBlc2NhcGUgaW4gc3RyaWN0IG1v
ZGUgaXMgJ1xcMCciKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFN0cmluZ0Nhbm5vdEJl
UGFyc2VkOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBpZiAoc2hvdWxkQnVp
bGRTdHJpbmdzKQpAQCAtMTE0Nyw3ICsxMTQ3LDcgQEAgdGVtcGxhdGUgPGJvb2wgc2hvdWxkQnVp
bGRTdHJpbmdzPiB0eXBlbmFtZSBMZXhlcjxUPjo6U3RyaW5nUGFyc2VSZXN1bHQgTGV4ZXI8VD4K
ICAgICAgICAgICAgICAgICAgICAgcmVjb3JkMTYobV9jdXJyZW50KTsKICAgICAgICAgICAgICAg
ICBzaGlmdCgpOwogICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBtX2xleEVy
cm9yTWVzc2FnZSA9ICJVbnRlcm1pbmF0ZWQgc3RyaW5nIGNvbnN0YW50IjsKKyAgICAgICAgICAg
ICAgICBtX2xleEVycm9yTWVzc2FnZSA9IEFTQ0lJTGl0ZXJhbCgiVW50ZXJtaW5hdGVkIHN0cmlu
ZyBjb25zdGFudCIpOwogICAgICAgICAgICAgICAgIHJldHVybiBTdHJpbmdVbnRlcm1pbmF0ZWQ7
CiAgICAgICAgICAgICB9CiAKQEAgLTExNjAsNyArMTE2MCw3IEBAIHRlbXBsYXRlIDxib29sIHNo
b3VsZEJ1aWxkU3RyaW5ncz4gdHlwZW5hbWUgTGV4ZXI8VD46OlN0cmluZ1BhcnNlUmVzdWx0IExl
eGVyPFQ+CiAgICAgICAgIGlmIChVTkxJS0VMWSgoKHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX2N1
cnJlbnQpIC0gMHhFKSAmIDB4MjAwMCkpKSB7CiAgICAgICAgICAgICAvLyBOZXctbGluZSBvciBl
bmQgb2YgaW5wdXQgaXMgbm90IGFsbG93ZWQKICAgICAgICAgICAgIGlmIChhdEVuZCgpIHx8IGlz
TGluZVRlcm1pbmF0b3IobV9jdXJyZW50KSkgewotICAgICAgICAgICAgICAgIG1fbGV4RXJyb3JN
ZXNzYWdlID0gIlVuZXhwZWN0ZWQgRU9GIjsKKyAgICAgICAgICAgICAgICBtX2xleEVycm9yTWVz
c2FnZSA9IEFTQ0lJTGl0ZXJhbCgiVW5leHBlY3RlZCBFT0YiKTsKICAgICAgICAgICAgICAgICBy
ZXR1cm4gYXRFbmQoKSA/IFN0cmluZ1VudGVybWluYXRlZCA6IFN0cmluZ0Nhbm5vdEJlUGFyc2Vk
OwogICAgICAgICAgICAgfQogICAgICAgICAgICAgLy8gQW55dGhpbmcgZWxzZSBpcyBqdXN0IGEg
bm9ybWFsIGNoYXJhY3RlcgpAQCAtMTUyMiw3ICsxNTIyLDcgQEAgc3RhcnQ6CiAgICAgICAgICAg
ICBzaGlmdCgpOwogICAgICAgICAgICAgaWYgKHBhcnNlTXVsdGlsaW5lQ29tbWVudCgpKQogICAg
ICAgICAgICAgICAgIGdvdG8gc3RhcnQ7Ci0gICAgICAgICAgICBtX2xleEVycm9yTWVzc2FnZSA9
ICJNdWx0aWxpbmUgY29tbWVudCB3YXMgbm90IGNsb3NlZCBwcm9wZXJseSI7CisgICAgICAgICAg
ICBtX2xleEVycm9yTWVzc2FnZSA9IEFTQ0lJTGl0ZXJhbCgiTXVsdGlsaW5lIGNvbW1lbnQgd2Fz
IG5vdCBjbG9zZWQgcHJvcGVybHkiKTsKICAgICAgICAgICAgIHRva2VuID0gVU5URVJNSU5BVEVE
X01VTFRJTElORV9DT01NRU5UX0VSUk9SVE9LOwogICAgICAgICAgICAgZ290byByZXR1cm5FcnJv
cjsKICAgICAgICAgfQpAQCAtMTY0OCwxMyArMTY0OCwxMyBAQCBzdGFydDoKICAgICAgICAgc2hp
ZnQoKTsKICAgICAgICAgaWYgKChtX2N1cnJlbnQgfCAweDIwKSA9PSAneCcpIHsKICAgICAgICAg
ICAgIGlmICghaXNBU0NJSUhleERpZ2l0KHBlZWsoMSkpKSB7Ci0gICAgICAgICAgICAgICAgbV9s
ZXhFcnJvck1lc3NhZ2UgPSAiTm8gaGV4YWRlY2ltYWwgZGlnaXRzIGFmdGVyICcweCciOworICAg
ICAgICAgICAgICAgIG1fbGV4RXJyb3JNZXNzYWdlID0gQVNDSUlMaXRlcmFsKCJObyBoZXhhZGVj
aW1hbCBkaWdpdHMgYWZ0ZXIgJzB4JyIpOwogICAgICAgICAgICAgICAgIHRva2VuID0gSU5WQUxJ
RF9IRVhfTlVNQkVSX0VSUk9SVE9LOwogICAgICAgICAgICAgICAgIGdvdG8gcmV0dXJuRXJyb3I7
CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBwYXJzZUhleCh0b2tlbkRhdGEtPmRvdWJsZVZh
bHVlKTsKICAgICAgICAgICAgIGlmIChpc0lkZW50U3RhcnQobV9jdXJyZW50KSkgewotICAgICAg
ICAgICAgICAgIG1fbGV4RXJyb3JNZXNzYWdlID0gIk5vIHNwYWNlIGJldHdlZW4gaGV4YWRlY2lt
YWwgbGl0ZXJhbCBhbmQgaWRlbnRpZmllciI7CisgICAgICAgICAgICAgICAgbV9sZXhFcnJvck1l
c3NhZ2UgPSBBU0NJSUxpdGVyYWwoIk5vIHNwYWNlIGJldHdlZW4gaGV4YWRlY2ltYWwgbGl0ZXJh
bCBhbmQgaWRlbnRpZmllciIpOwogICAgICAgICAgICAgICAgIHRva2VuID0gSU5WQUxJRF9IRVhf
TlVNQkVSX0VSUk9SVE9LOwogICAgICAgICAgICAgICAgIGdvdG8gcmV0dXJuRXJyb3I7CiAgICAg
ICAgICAgICB9CkBAIC0xNjY1LDcgKzE2NjUsNyBAQCBzdGFydDoKIAogICAgICAgICByZWNvcmQ4
KCcwJyk7CiAgICAgICAgIGlmIChzdHJpY3RNb2RlICYmIGlzQVNDSUlEaWdpdChtX2N1cnJlbnQp
KSB7Ci0gICAgICAgICAgICBtX2xleEVycm9yTWVzc2FnZSA9ICJEZWNpbWFsIGludGVnZXIgbGl0
ZXJhbHMgd2l0aCBhIGxlYWRpbmcgemVybyBhcmUgZm9yYmlkZGVuIGluIHN0cmljdCBtb2RlIjsK
KyAgICAgICAgICAgIG1fbGV4RXJyb3JNZXNzYWdlID0gQVNDSUlMaXRlcmFsKCJEZWNpbWFsIGlu
dGVnZXIgbGl0ZXJhbHMgd2l0aCBhIGxlYWRpbmcgemVybyBhcmUgZm9yYmlkZGVuIGluIHN0cmlj
dCBtb2RlIik7CiAgICAgICAgICAgICB0b2tlbiA9IElOVkFMSURfT0NUQUxfTlVNQkVSX0VSUk9S
VE9LOwogICAgICAgICAgICAgZ290byByZXR1cm5FcnJvcjsKICAgICAgICAgfQpAQCAtMTY4NSw3
ICsxNjg1LDcgQEAgaW5OdW1iZXJBZnRlckRlY2ltYWxQb2ludDoKICAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICAgICAgaWYgKChtX2N1cnJlbnQgfCAweDIwKSA9PSAnZScpIHsKICAgICAg
ICAgICAgICAgICAgICAgaWYgKCFwYXJzZU51bWJlckFmdGVyRXhwb25lbnRJbmRpY2F0b3IoKSkg
ewotICAgICAgICAgICAgICAgICAgICAgICAgbV9sZXhFcnJvck1lc3NhZ2UgPSAiTm9uLW51bWJl
ciBmb3VuZCBhZnRlciBleHBvbmVudCBpbmRpY2F0b3IiOworICAgICAgICAgICAgICAgICAgICAg
ICAgbV9sZXhFcnJvck1lc3NhZ2UgPSBBU0NJSUxpdGVyYWwoIk5vbi1udW1iZXIgZm91bmQgYWZ0
ZXIgZXhwb25lbnQgaW5kaWNhdG9yIik7CiAgICAgICAgICAgICAgICAgICAgICAgICB0b2tlbiA9
IGF0RW5kKCkgPyBVTlRFUk1JTkFURURfTlVNRVJJQ19MSVRFUkFMX0VSUk9SVE9LIDogSU5WQUxJ
RF9OVU1FUklDX0xJVEVSQUxfRVJST1JUT0s7CiAgICAgICAgICAgICAgICAgICAgICAgICBnb3Rv
IHJldHVybkVycm9yOwogICAgICAgICAgICAgICAgICAgICB9CkBAIC0xNjk4LDcgKzE2OTgsNyBA
QCBpbk51bWJlckFmdGVyRGVjaW1hbFBvaW50OgogCiAgICAgICAgIC8vIE5vIGlkZW50aWZpZXJz
IGFsbG93ZWQgZGlyZWN0bHkgYWZ0ZXIgbnVtZXJpYyBsaXRlcmFsLCBlLmcuICIzaW4iIGlzIGJh
ZC4KICAgICAgICAgaWYgKFVOTElLRUxZKGlzSWRlbnRTdGFydChtX2N1cnJlbnQpKSkgewotICAg
ICAgICAgICAgbV9sZXhFcnJvck1lc3NhZ2UgPSAiQXQgbGVhc3Qgb25lIGRpZ2l0IG11c3Qgb2Nj
dXIgYWZ0ZXIgYSBkZWNpbWFsIHBvaW50IjsKKyAgICAgICAgICAgIG1fbGV4RXJyb3JNZXNzYWdl
ID0gQVNDSUlMaXRlcmFsKCJBdCBsZWFzdCBvbmUgZGlnaXQgbXVzdCBvY2N1ciBhZnRlciBhIGRl
Y2ltYWwgcG9pbnQiKTsKICAgICAgICAgICAgIHRva2VuID0gYXRFbmQoKSA/IFVOVEVSTUlOQVRF
RF9OVU1FUklDX0xJVEVSQUxfRVJST1JUT0sgOiBJTlZBTElEX05VTUVSSUNfTElURVJBTF9FUlJP
UlRPSzsKICAgICAgICAgICAgIGdvdG8gcmV0dXJuRXJyb3I7CiAgICAgICAgIH0KQEAgLTE3NDks
NyArMTc0OSw3IEBAIGluTnVtYmVyQWZ0ZXJEZWNpbWFsUG9pbnQ6CiAgICAgICAgIGdvdG8gcmV0
dXJuRXJyb3I7CiAgICAgZGVmYXVsdDoKICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNI
RUQoKTsKLSAgICAgICAgbV9sZXhFcnJvck1lc3NhZ2UgPSAiSW50ZXJuYWwgRXJyb3IiOworICAg
ICAgICBtX2xleEVycm9yTWVzc2FnZSA9IEFTQ0lJTGl0ZXJhbCgiSW50ZXJuYWwgRXJyb3IiKTsK
ICAgICAgICAgdG9rZW4gPSBFUlJPUlRPSzsKICAgICAgICAgZ290byByZXR1cm5FcnJvcjsKICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZS5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZS5jcHAKaW5kZXggYjVl
MDIyNC4uNzdjODM3ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVy
L1Byb2ZpbGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxl
LmNwcApAQCAtNDMsNyArNDMsNyBAQCBQcm9maWxlOjpQcm9maWxlKGNvbnN0IFN0cmluZyYgdGl0
bGUsIHVuc2lnbmVkIHVpZCkKIHsKICAgICAvLyBGSVhNRTogV2hlbiBtdWx0aS10aHJlYWRpbmcg
aXMgc3VwcG9ydGVkIHRoaXMgd2lsbCBiZSBhIHZlY3RvciBhbmQgY2FsbHMKICAgICAvLyBpbnRv
IHRoZSBwcm9maWxlciB3aWxsIG5lZWQgdG8ga25vdyB3aGljaCB0aHJlYWQgaXQgaXMgZXhlY3V0
aW5nIG9uLgotICAgIG1faGVhZCA9IFByb2ZpbGVOb2RlOjpjcmVhdGUoMCwgQ2FsbElkZW50aWZp
ZXIoIlRocmVhZF8xIiwgU3RyaW5nKCksIDAsIDApLCAwLCAwKTsKKyAgICBtX2hlYWQgPSBQcm9m
aWxlTm9kZTo6Y3JlYXRlKDAsIENhbGxJZGVudGlmaWVyKEFTQ0lJTGl0ZXJhbCgiVGhyZWFkXzEi
KSwgU3RyaW5nKCksIDAsIDApLCAwLCAwKTsKIH0KIAogUHJvZmlsZTo6flByb2ZpbGUoKQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50cy5jcHAKaW5kZXggOGY0YTc3OC4u
ZjM0MDU1YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1l
bnRzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHMuY3Bw
CkBAIC00MzUsNyArNDM1LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcmd1bWVu
dHNGdW5jSXRlcmF0b3IoRXhlY1N0YXRlKiBleGVjKQogICAgIEpTT2JqZWN0KiB0aGlzT2JqID0g
ZXhlYy0+dGhpc1ZhbHVlKCkudG9UaGlzKGV4ZWMsIFN0cmljdE1vZGUpLnRvT2JqZWN0KGV4ZWMp
OwogICAgIEFyZ3VtZW50cyogYXJndW1lbnRzID0ganNEeW5hbWljQ2FzdDxBcmd1bWVudHMqPih0
aGlzT2JqKTsKICAgICBpZiAoIWFyZ3VtZW50cykKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZSh0aHJvd1R5cGVFcnJvcihleGVjLCAiQXR0ZW1wdGVkIHRvIHVzZSBBcmd1bWVudHMgaXRl
cmF0b3Igb24gbm9uLUFyZ3VtZW50cyBvYmplY3QiKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJBdHRlbXB0ZWQgdG8g
dXNlIEFyZ3VtZW50cyBpdGVyYXRvciBvbiBub24tQXJndW1lbnRzIG9iamVjdCIpKSk7CiAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU0FyZ3VtZW50c0l0ZXJhdG9yOjpjcmVhdGUoZXhlYy0+
dm0oKSwgZXhlYy0+Y2FsbGVlKCktPmdsb2JhbE9iamVjdCgpLT5hcmd1bWVudHNJdGVyYXRvclN0
cnVjdHVyZSgpLCBhcmd1bWVudHMpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwCmluZGV4IGI0MWZlYzUuLmM3OTljYzMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAKQEAg
LTY5NCw3ICs2OTQsNyBAQCBzdGF0aWMgYm9vbCBwZXJmb3JtU2xvd1NvcnQoRXhlY1N0YXRlKiBl
eGVjLCBKU09iamVjdCogdGhpc09iaiwgdW5zaWduZWQgbGVuZ3RoLAogICAgICAgICAgICAgICAg
IGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgICAgICAgICAgfSBlbHNlIGlmICghdGhpc09iai0+bWV0aG9kVGFibGUoZXhlYy0+
dm0oKSktPmRlbGV0ZVByb3BlcnR5QnlJbmRleCh0aGlzT2JqLCBleGVjLCBpKSkgewotICAgICAg
ICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsICJVbmFibGUgdG8gZGVsZXRlIHByb3BlcnR5
LiIpOworICAgICAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgi
VW5hYmxlIHRvIGRlbGV0ZSBwcm9wZXJ0eS4iKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKGlPYmopIHsKQEAgLTcwMiw3ICs3
MDIsNyBAQCBzdGF0aWMgYm9vbCBwZXJmb3JtU2xvd1NvcnQoRXhlY1N0YXRlKiBleGVjLCBKU09i
amVjdCogdGhpc09iaiwgdW5zaWduZWQgbGVuZ3RoLAogICAgICAgICAgICAgICAgIGlmIChleGVj
LT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
ICAgICAgICAgfSBlbHNlIGlmICghdGhpc09iai0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPmRl
bGV0ZVByb3BlcnR5QnlJbmRleCh0aGlzT2JqLCBleGVjLCB0aGVtaW4pKSB7Ci0gICAgICAgICAg
ICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgIlVuYWJsZSB0byBkZWxldGUgcHJvcGVydHkuIik7
CisgICAgICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJVbmFi
bGUgdG8gZGVsZXRlIHByb3BlcnR5LiIpKTsKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTc2Nyw3ICs3NjcsNyBAQCBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jU29ydChFeGVjU3RhdGUqIGV4ZWMpCiAg
ICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgCiAgICAgICAgIGlmICghdGhpc09iai0+bWV0
aG9kVGFibGUoZXhlYy0+dm0oKSktPmRlbGV0ZVByb3BlcnR5QnlJbmRleCh0aGlzT2JqLCBleGVj
LCBpbmRleCkpIHsKLSAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsICJVbmFibGUgdG8g
ZGVsZXRlIHByb3BlcnR5LiIpOworICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgQVND
SUlMaXRlcmFsKCJVbmFibGUgdG8gZGVsZXRlIHByb3BlcnR5LiIpKTsKICAgICAgICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgICAgIH0KICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJz
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuY3Bw
CmluZGV4IDZiMzNjOGQuLjU1NTUzOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuY3BwCkBAIC0xMjIsNyArMTIyLDcgQEAgSlNTdHJp
bmcqIGVycm9yRGVzY3JpcHRpb25Gb3JWYWx1ZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdikK
ICAgICAKIEpTT2JqZWN0KiBjcmVhdGVFcnJvcihFeGVjU3RhdGUqIGV4ZWMsIEVycm9yRmFjdG9y
eSBlcnJvckZhY3RvcnksIEpTVmFsdWUgdmFsdWUsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKIHsK
LSAgICBTdHJpbmcgZXJyb3JNZXNzYWdlID0gbWFrZVN0cmluZyhlcnJvckRlc2NyaXB0aW9uRm9y
VmFsdWUoZXhlYywgdmFsdWUpLT52YWx1ZShleGVjKSwgIiAiLCBtZXNzYWdlKTsKKyAgICBTdHJp
bmcgZXJyb3JNZXNzYWdlID0gbWFrZVN0cmluZyhlcnJvckRlc2NyaXB0aW9uRm9yVmFsdWUoZXhl
YywgdmFsdWUpLT52YWx1ZShleGVjKSwgJyAnLCBtZXNzYWdlKTsKICAgICBKU09iamVjdCogZXhj
ZXB0aW9uID0gZXJyb3JGYWN0b3J5KGV4ZWMsIGVycm9yTWVzc2FnZSk7CiAgICAgQVNTRVJUKGV4
Y2VwdGlvbi0+aXNFcnJvckluc3RhbmNlKCkpOwogICAgIHN0YXRpY19jYXN0PEVycm9ySW5zdGFu
Y2UqPihleGNlcHRpb24pLT5zZXRBcHBlbmRTb3VyY2VUb01lc3NhZ2UoKTsKQEAgLTEzMSwyNyAr
MTMxLDI3IEBAIEpTT2JqZWN0KiBjcmVhdGVFcnJvcihFeGVjU3RhdGUqIGV4ZWMsIEVycm9yRmFj
dG9yeSBlcnJvckZhY3RvcnksIEpTVmFsdWUgdmFsdWUsCiAKIEpTT2JqZWN0KiBjcmVhdGVJbnZh
bGlkUGFyYW1ldGVyRXJyb3IoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBjaGFyKiBvcCwgSlNWYWx1
ZSB2YWx1ZSkKIHsKLSAgICByZXR1cm4gY3JlYXRlRXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9y
LCB2YWx1ZSwgbWFrZVN0cmluZygiaXMgbm90IGEgdmFsaWQgYXJndW1lbnQgZm9yICciLCBvcCwg
IiciKSk7CisgICAgcmV0dXJuIGNyZWF0ZUVycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvciwgdmFs
dWUsIG1ha2VTdHJpbmcoImlzIG5vdCBhIHZhbGlkIGFyZ3VtZW50IGZvciAnIiwgb3AsICdcJycp
KTsKIH0KIAogSlNPYmplY3QqIGNyZWF0ZU5vdEFDb25zdHJ1Y3RvckVycm9yKEV4ZWNTdGF0ZSog
ZXhlYywgSlNWYWx1ZSB2YWx1ZSkKIHsKLSAgICByZXR1cm4gY3JlYXRlRXJyb3IoZXhlYywgY3Jl
YXRlVHlwZUVycm9yLCB2YWx1ZSwgImlzIG5vdCBhIGNvbnN0cnVjdG9yIik7CisgICAgcmV0dXJu
IGNyZWF0ZUVycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvciwgdmFsdWUsIEFTQ0lJTGl0ZXJhbCgi
aXMgbm90IGEgY29uc3RydWN0b3IiKSk7CiB9CiAKIEpTT2JqZWN0KiBjcmVhdGVOb3RBRnVuY3Rp
b25FcnJvcihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUpCiB7Ci0gICAgcmV0dXJuIGNy
ZWF0ZUVycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvciwgdmFsdWUsICJpcyBub3QgYSBmdW5jdGlv
biIpOworICAgIHJldHVybiBjcmVhdGVFcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IsIHZhbHVl
LCBBU0NJSUxpdGVyYWwoImlzIG5vdCBhIGZ1bmN0aW9uIikpOwogfQogCiBKU09iamVjdCogY3Jl
YXRlTm90QW5PYmplY3RFcnJvcihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUpCiB7Ci0g
ICAgcmV0dXJuIGNyZWF0ZUVycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvciwgdmFsdWUsICJpcyBu
b3QgYW4gb2JqZWN0Iik7CisgICAgcmV0dXJuIGNyZWF0ZUVycm9yKGV4ZWMsIGNyZWF0ZVR5cGVF
cnJvciwgdmFsdWUsIEFTQ0lJTGl0ZXJhbCgiaXMgbm90IGFuIG9iamVjdCIpKTsKIH0KIAogSlNP
YmplY3QqIGNyZWF0ZUVycm9yRm9ySW52YWxpZEdsb2JhbEFzc2lnbm1lbnQoRXhlY1N0YXRlKiBl
eGVjLCBjb25zdCBTdHJpbmcmIHByb3BlcnR5TmFtZSkKIHsKLSAgICByZXR1cm4gY3JlYXRlUmVm
ZXJlbmNlRXJyb3IoZXhlYywgbWFrZVN0cmluZygiU3RyaWN0IG1vZGUgZm9yYmlkcyBpbXBsaWNp
dCBjcmVhdGlvbiBvZiBnbG9iYWwgcHJvcGVydHkgJyIsIHByb3BlcnR5TmFtZSwgIiciKSk7Cisg
ICAgcmV0dXJuIGNyZWF0ZVJlZmVyZW5jZUVycm9yKGV4ZWMsIG1ha2VTdHJpbmcoIlN0cmljdCBt
b2RlIGZvcmJpZHMgaW1wbGljaXQgY3JlYXRpb24gb2YgZ2xvYmFsIHByb3BlcnR5ICciLCBwcm9w
ZXJ0eU5hbWUsICdcJycpKTsKIH0KIAogSlNPYmplY3QqIGNyZWF0ZU91dE9mTWVtb3J5RXJyb3Io
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNwcAppbmRleCAzYzI1NmYyLi5kNDQwYTJi
NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Qcm90
b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUHJv
dG90eXBlLmNwcApAQCAtODUsNyArODUsNyBAQCBDYWxsVHlwZSBGdW5jdGlvblByb3RvdHlwZTo6
Z2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmIGNhbGxEYXRhKQogc3RhdGljIGlubGluZSB2
b2lkIGluc2VydFNlbWljb2xvbklmTmVlZGVkKFN0cmluZyYgZnVuY3Rpb25Cb2R5LCBib29sIGJv
ZHlJbmNsdWRlc0JyYWNlcykKIHsKICAgICBpZiAoIWJvZHlJbmNsdWRlc0JyYWNlcykKLSAgICAg
ICAgZnVuY3Rpb25Cb2R5ID0gbWFrZVN0cmluZygieyAiLCBmdW5jdGlvbkJvZHksICJ9Iik7Cisg
ICAgICAgIGZ1bmN0aW9uQm9keSA9IG1ha2VTdHJpbmcoInsgIiwgZnVuY3Rpb25Cb2R5LCAnfScp
OwogCiAgICAgQVNTRVJUKGZ1bmN0aW9uQm9keVswXSA9PSAneycpOwogICAgIEFTU0VSVChmdW5j
dGlvbkJvZHlbZnVuY3Rpb25Cb2R5Lmxlbmd0aCgpIC0gMV0gPT0gJ30nKTsKQEAgLTk0LDcgKzk0
LDcgQEAgc3RhdGljIGlubGluZSB2b2lkIGluc2VydFNlbWljb2xvbklmTmVlZGVkKFN0cmluZyYg
ZnVuY3Rpb25Cb2R5LCBib29sIGJvZHlJbmNsdWQKICAgICAgICAgVUNoYXIgY2ggPSBmdW5jdGlv
bkJvZHlbaV07CiAgICAgICAgIGlmICghTGV4ZXI8VUNoYXI+Ojppc1doaXRlU3BhY2UoY2gpICYm
ICFMZXhlcjxVQ2hhcj46OmlzTGluZVRlcm1pbmF0b3IoY2gpKSB7CiAgICAgICAgICAgICBpZiAo
Y2ggIT0gJzsnICYmIGNoICE9ICd9JykKLSAgICAgICAgICAgICAgICBmdW5jdGlvbkJvZHkgPSBt
YWtlU3RyaW5nKGZ1bmN0aW9uQm9keS5zdWJzdHJpbmdTaGFyaW5nSW1wbCgwLCBpICsgMSksICI7
IiwgZnVuY3Rpb25Cb2R5LnN1YnN0cmluZ1NoYXJpbmdJbXBsKGkgKyAxLCBmdW5jdGlvbkJvZHku
bGVuZ3RoKCkgLSAoaSArIDEpKSk7CisgICAgICAgICAgICAgICAgZnVuY3Rpb25Cb2R5ID0gbWFr
ZVN0cmluZyhmdW5jdGlvbkJvZHkuc3Vic3RyaW5nU2hhcmluZ0ltcGwoMCwgaSArIDEpLCAnOycs
IGZ1bmN0aW9uQm9keS5zdWJzdHJpbmdTaGFyaW5nSW1wbChpICsgMSwgZnVuY3Rpb25Cb2R5Lmxl
bmd0aCgpIC0gKGkgKyAxKSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNwcAppbmRleCA0ZWQ1OWQw
Li4zZjVjNTgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Fy
cmF5LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNwcApA
QCAtMTA4LDcgKzEwOCw3IEBAIGJvb2wgSlNBcnJheTo6ZGVmaW5lT3duUHJvcGVydHkoSlNPYmpl
Y3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUKICAgICAgICAgdW5zaWdu
ZWQgbmV3TGVuID0gZGVzY3JpcHRvci52YWx1ZSgpLnRvVUludDMyKGV4ZWMpOwogICAgICAgICAv
LyBkLiBJZiBuZXdMZW4gaXMgbm90IGVxdWFsIHRvIFRvTnVtYmVyKCBEZXNjLltbVmFsdWVdXSks
IHRocm93IGEgUmFuZ2VFcnJvciBleGNlcHRpb24uCiAgICAgICAgIGlmIChuZXdMZW4gIT0gZGVz
Y3JpcHRvci52YWx1ZSgpLnRvTnVtYmVyKGV4ZWMpKSB7Ci0gICAgICAgICAgICBleGVjLT52bSgp
LnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZVJhbmdlRXJyb3IoZXhlYywgIkludmFsaWQgYXJy
YXkgbGVuZ3RoIikpOworICAgICAgICAgICAgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVj
LCBjcmVhdGVSYW5nZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiSW52YWxpZCBhcnJheSBsZW5n
dGgiKSkpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAKQEAgLTUyMyw3
ICs1MjMsNyBAQCBKU1ZhbHVlIEpTQXJyYXk6OnBvcChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAg
IHJldHVybiBqc1VuZGVmaW5lZCgpOwogICAgIC8vIENhbGwgdGhlIFtbRGVsZXRlXV0gaW50ZXJu
YWwgbWV0aG9kIG9mIE8gd2l0aCBhcmd1bWVudHMgaW5keCBhbmQgdHJ1ZS4KICAgICBpZiAoIWRl
bGV0ZVByb3BlcnR5QnlJbmRleCh0aGlzLCBleGVjLCBpbmRleCkpIHsKLSAgICAgICAgdGhyb3dU
eXBlRXJyb3IoZXhlYywgIlVuYWJsZSB0byBkZWxldGUgcHJvcGVydHkuIik7CisgICAgICAgIHRo
cm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiVW5hYmxlIHRvIGRlbGV0ZSBwcm9wZXJ0
eS4iKSk7CiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogICAgIH0KICAgICAvLyBDYWxs
IHRoZSBbW1B1dF1dIGludGVybmFsIG1ldGhvZCBvZiBPIHdpdGggYXJndW1lbnRzICJsZW5ndGgi
LCBpbmR4LCBhbmQgdHJ1ZS4KQEAgLTU2Nyw3ICs1NjcsNyBAQCB2b2lkIEpTQXJyYXk6OnB1c2go
RXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVlKQogICAgICAgICBpZiAobGVuZ3RoID4gTUFY
X0FSUkFZX0lOREVYKSB7CiAgICAgICAgICAgICBtZXRob2RUYWJsZShleGVjLT52bSgpKS0+cHV0
QnlJbmRleCh0aGlzLCBleGVjLCBsZW5ndGgsIHZhbHVlLCB0cnVlKTsKICAgICAgICAgICAgIGlm
ICghZXhlYy0+aGFkRXhjZXB0aW9uKCkpCi0gICAgICAgICAgICAgICAgZXhlYy0+dm0oKS50aHJv
d0V4Y2VwdGlvbihleGVjLCBjcmVhdGVSYW5nZUVycm9yKGV4ZWMsICJJbnZhbGlkIGFycmF5IGxl
bmd0aCIpKTsKKyAgICAgICAgICAgICAgICBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMs
IGNyZWF0ZVJhbmdlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJJbnZhbGlkIGFycmF5IGxlbmd0
aCIpKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgCkBAIC01ODcs
NyArNTg3LDcgQEAgdm9pZCBKU0FycmF5OjpwdXNoKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2
YWx1ZSkKICAgICAgICAgaWYgKGxlbmd0aCA+IE1BWF9BUlJBWV9JTkRFWCkgewogICAgICAgICAg
ICAgbWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPnB1dEJ5SW5kZXgodGhpcywgZXhlYywgbGVuZ3Ro
LCB2YWx1ZSwgdHJ1ZSk7CiAgICAgICAgICAgICBpZiAoIWV4ZWMtPmhhZEV4Y2VwdGlvbigpKQot
ICAgICAgICAgICAgICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlUmFu
Z2VFcnJvcihleGVjLCAiSW52YWxpZCBhcnJheSBsZW5ndGgiKSk7CisgICAgICAgICAgICAgICAg
ZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVSYW5nZUVycm9yKGV4ZWMsIEFT
Q0lJTGl0ZXJhbCgiSW52YWxpZCBhcnJheSBsZW5ndGgiKSkpOwogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICB9CiAgICAgICAgIApAQCAtNjE5LDcgKzYxOSw3IEBAIHZvaWQgSlNBcnJheTo6
cHVzaChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUpCiAgICAgICAgIGlmIChsZW5ndGgg
PiBNQVhfQVJSQVlfSU5ERVgpIHsKICAgICAgICAgICAgIG1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkp
LT5wdXRCeUluZGV4KHRoaXMsIGV4ZWMsIGxlbmd0aCwgdmFsdWUsIHRydWUpOwogICAgICAgICAg
ICAgaWYgKCFleGVjLT5oYWRFeGNlcHRpb24oKSkKLSAgICAgICAgICAgICAgICBleGVjLT52bSgp
LnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZVJhbmdlRXJyb3IoZXhlYywgIkludmFsaWQgYXJy
YXkgbGVuZ3RoIikpOworICAgICAgICAgICAgICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24o
ZXhlYywgY3JlYXRlUmFuZ2VFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkludmFsaWQgYXJyYXkg
bGVuZ3RoIikpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICAKQEAg
LTY1NCw3ICs2NTQsNyBAQCB2b2lkIEpTQXJyYXk6OnB1c2goRXhlY1N0YXRlKiBleGVjLCBKU1Zh
bHVlIHZhbHVlKQogICAgICAgICAgICAgbWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPnB1dEJ5SW5k
ZXgodGhpcywgZXhlYywgc3RvcmFnZS0+bGVuZ3RoKCksIHZhbHVlLCB0cnVlKTsKICAgICAgICAg
ICAgIC8vIFBlciBFUzUuMSAxNS40LjQuNyBzdGVwIDYgJiAxNS40LjUuMSBzdGVwIDMuZC4KICAg
ICAgICAgICAgIGlmICghZXhlYy0+aGFkRXhjZXB0aW9uKCkpCi0gICAgICAgICAgICAgICAgZXhl
Yy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVSYW5nZUVycm9yKGV4ZWMsICJJbnZh
bGlkIGFycmF5IGxlbmd0aCIpKTsKKyAgICAgICAgICAgICAgICBleGVjLT52bSgpLnRocm93RXhj
ZXB0aW9uKGV4ZWMsIGNyZWF0ZVJhbmdlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJJbnZhbGlk
IGFycmF5IGxlbmd0aCIpKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlckNvbnN0
cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJD
b25zdHJ1Y3Rvci5jcHAKaW5kZXggZGMzMGU3MS4uZjU1NDcxZSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlckNvbnN0cnVjdG9yLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyQ29uc3RydWN0b3Iu
Y3BwCkBAIC00OSw3ICs0OSw3IEBAIEpTQXJyYXlCdWZmZXJDb25zdHJ1Y3Rvcjo6SlNBcnJheUJ1
ZmZlckNvbnN0cnVjdG9yKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAKIHZvaWQgSlNB
cnJheUJ1ZmZlckNvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTQXJyYXlCdWZm
ZXJQcm90b3R5cGUqIHByb3RvdHlwZSkKIHsKLSAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSwg
IkFycmF5QnVmZmVyIik7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0sIEFTQ0lJTGl0ZXJh
bCgiQXJyYXlCdWZmZXIiKSk7CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZt
LnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgcHJvdG90eXBlLCBEb250RW51bSB8IERvbnREZWxl
dGUgfCBSZWFkT25seSk7CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnBy
b3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMSksIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8
IFJlYWRPbmx5KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNBcnJheUJ1ZmZlclByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0FycmF5QnVmZmVyUHJvdG90eXBlLmNwcAppbmRleCA1YjUyZmM1Li44ZjNkNjY5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyUHJvdG90
eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVy
UHJvdG90eXBlLmNwcApAQCAtNDEsMTAgKzQxLDEwIEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGFycmF5QnVmZmVyUHJvdG9GdW5jU2xpY2UoRXhlY1N0YXRlKiBleGVjKQog
ICAgIAogICAgIEpTQXJyYXlCdWZmZXIqIHRoaXNPYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTQXJy
YXlCdWZmZXIqPihleGVjLT50aGlzVmFsdWUoKSk7CiAgICAgaWYgKCF0aGlzT2JqZWN0KQotICAg
ICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCAiUmVj
ZWl2ZXIgb2Ygc2xpY2UgbXVzdCBiZSBhbiBhcnJheSBidWZmZXIuIikpOworICAgICAgICByZXR1
cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwo
IlJlY2VpdmVyIG9mIHNsaWNlIG11c3QgYmUgYW4gYXJyYXkgYnVmZmVyLiIpKSk7CiAgICAgCiAg
ICAgaWYgKCFleGVjLT5hcmd1bWVudENvdW50KCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJy
b3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsICJTbGljZSByZXF1aXJlcyBhdCBsZWFzdCBv
bmUgYXJndW1lbnQuIikpOworICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0
ZVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlNsaWNlIHJlcXVpcmVzIGF0IGxlYXN0IG9u
ZSBhcmd1bWVudC4iKSkpOwogICAgIAogICAgIGludDMyX3QgYmVnaW4gPSBleGVjLT5hcmd1bWVu
dCgwKS50b0ludDMyKGV4ZWMpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0YVZpZXcuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlldy5jcHAKaW5kZXggYjc3ZDQ4Zi4u
NTEzZDRjNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRh
Vmlldy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlldy5j
cHAKQEAgLTQ4LDExICs0OCwxMSBAQCBKU0RhdGFWaWV3KiBKU0RhdGFWaWV3OjpjcmVhdGUoCiB7
CiAgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBidWZmZXIgPSBwYXNzZWRCdWZmZXI7CiAgICAgaWYg
KCFBcnJheUJ1ZmZlclZpZXc6OnZlcmlmeVN1YlJhbmdlTGVuZ3RoKGJ1ZmZlciwgYnl0ZU9mZnNl
dCwgYnl0ZUxlbmd0aCwgc2l6ZW9mKHVpbnQ4X3QpKSkgewotICAgICAgICB0aHJvd1ZNRXJyb3Io
ZXhlYywgY3JlYXRlUmFuZ2VFcnJvcihleGVjLCAiTGVuZ3RoIG91dCBvZiByYW5nZSBvZiBidWZm
ZXIiKSk7CisgICAgICAgIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVSYW5nZUVycm9yKGV4ZWMs
IEFTQ0lJTGl0ZXJhbCgiTGVuZ3RoIG91dCBvZiByYW5nZSBvZiBidWZmZXIiKSkpOwogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAgICAgaWYgKCFBcnJheUJ1ZmZlclZpZXc6OnZlcmlm
eUJ5dGVPZmZzZXRBbGlnbm1lbnQoYnl0ZU9mZnNldCwgc2l6ZW9mKHVpbnQ4X3QpKSkgewotICAg
ICAgICBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZVJhbmdlRXJyb3IoZXhl
YywgIkJ5dGUgb2Zmc2V0IGlzIG5vdCBhbGlnbmVkIikpOworICAgICAgICBleGVjLT52bSgpLnRo
cm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZVJhbmdlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJC
eXRlIG9mZnNldCBpcyBub3QgYWxpZ25lZCIpKSk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwog
ICAgIH0KICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlld1Byb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3UHJvdG90eXBlLmNwcAppbmRleCAyZTczNTMyLi4x
YWMxOTIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFW
aWV3UHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Rh
dGFWaWV3UHJvdG90eXBlLmNwcApAQCAtMTE5LDEwICsxMTksMTAgQEAgRW5jb2RlZEpTVmFsdWUg
Z2V0RGF0YShFeGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAgSlNEYXRhVmlldyogZGF0YVZpZXcgPSBq
c0R5bmFtaWNDYXN0PEpTRGF0YVZpZXcqPihleGVjLT50aGlzVmFsdWUoKSk7CiAgICAgaWYgKCFk
YXRhVmlldykKLSAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVUeXBlRXJy
b3IoZXhlYywgIlJlY2VpdmVyIG9mIERhdGFWaWV3IG1ldGhvZCBtdXN0IGJlIGEgRGF0YVZpZXci
KSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4
ZWMsIEFTQ0lJTGl0ZXJhbCgiUmVjZWl2ZXIgb2YgRGF0YVZpZXcgbWV0aG9kIG11c3QgYmUgYSBE
YXRhVmlldyIpKSk7CiAgICAgCiAgICAgaWYgKCFleGVjLT5hcmd1bWVudENvdW50KCkpCi0gICAg
ICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsICJOZWVk
IGF0IGxlYXN0IG9uZSBhcmd1bWVudCAodGhlIGJ5dGVPZmZzZXQpIikpOworICAgICAgICByZXR1
cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwo
Ik5lZWQgYXQgbGVhc3Qgb25lIGFyZ3VtZW50ICh0aGUgYnl0ZU9mZnNldCkiKSkpOwogICAgIAog
ICAgIHVuc2lnbmVkIGJ5dGVPZmZzZXQgPSBleGVjLT51bmNoZWNrZWRBcmd1bWVudCgwKS50b1VJ
bnQzMihleGVjKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCkBAIC0xMzgsNyArMTM4
LDcgQEAgRW5jb2RlZEpTVmFsdWUgZ2V0RGF0YShFeGVjU3RhdGUqIGV4ZWMpCiAgICAgCiAgICAg
dW5zaWduZWQgYnl0ZUxlbmd0aCA9IGRhdGFWaWV3LT5sZW5ndGgoKTsKICAgICBpZiAoZWxlbWVu
dFNpemUgPiBieXRlTGVuZ3RoIHx8IGJ5dGVPZmZzZXQgPiBieXRlTGVuZ3RoIC0gZWxlbWVudFNp
emUpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlUmFuZ2VFcnJvcihl
eGVjLCAiT3V0IG9mIGJvdW5kcyBhY2Nlc3MiKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJy
b3IoZXhlYywgY3JlYXRlUmFuZ2VFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIk91dCBvZiBib3Vu
ZHMgYWNjZXNzIikpKTsKIAogICAgIGNvbnN0IHVuc2lnbmVkIGRhdGFTaXplID0gc2l6ZW9mKHR5
cGVuYW1lIEFkYXB0b3I6OlR5cGUpOwogICAgIHVuaW9uIHsKQEAgLTE2NCwxMCArMTY0LDEwIEBA
IEVuY29kZWRKU1ZhbHVlIHNldERhdGEoRXhlY1N0YXRlKiBleGVjKQogewogICAgIEpTRGF0YVZp
ZXcqIGRhdGFWaWV3ID0ganNEeW5hbWljQ2FzdDxKU0RhdGFWaWV3Kj4oZXhlYy0+dGhpc1ZhbHVl
KCkpOwogICAgIGlmICghZGF0YVZpZXcpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhl
YywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsICJSZWNlaXZlciBvZiBEYXRhVmlldyBtZXRob2QgbXVz
dCBiZSBhIERhdGFWaWV3IikpOworICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNy
ZWF0ZVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlJlY2VpdmVyIG9mIERhdGFWaWV3IG1l
dGhvZCBtdXN0IGJlIGEgRGF0YVZpZXciKSkpOwogICAgIAogICAgIGlmIChleGVjLT5hcmd1bWVu
dENvdW50KCkgPCAyKQotICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVR5
cGVFcnJvcihleGVjLCAiTmVlZCBhdCBsZWFzdCB0d28gYXJndW1lbnQgKHRoZSBieXRlT2Zmc2V0
IGFuZCB2YWx1ZSkiKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRl
VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiTmVlZCBhdCBsZWFzdCB0d28gYXJndW1lbnQg
KHRoZSBieXRlT2Zmc2V0IGFuZCB2YWx1ZSkiKSkpOwogICAgIAogICAgIHVuc2lnbmVkIGJ5dGVP
ZmZzZXQgPSBleGVjLT51bmNoZWNrZWRBcmd1bWVudCgwKS50b1VJbnQzMihleGVjKTsKICAgICBp
ZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCkBAIC0xOTMsNyArMTkzLDcgQEAgRW5jb2RlZEpTVmFs
dWUgc2V0RGF0YShFeGVjU3RhdGUqIGV4ZWMpCiAgICAgCiAgICAgdW5zaWduZWQgYnl0ZUxlbmd0
aCA9IGRhdGFWaWV3LT5sZW5ndGgoKTsKICAgICBpZiAoZWxlbWVudFNpemUgPiBieXRlTGVuZ3Ro
IHx8IGJ5dGVPZmZzZXQgPiBieXRlTGVuZ3RoIC0gZWxlbWVudFNpemUpCi0gICAgICAgIHJldHVy
biB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlUmFuZ2VFcnJvcihleGVjLCAiT3V0IG9mIGJvdW5k
cyBhY2Nlc3MiKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlUmFu
Z2VFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIk91dCBvZiBib3VuZHMgYWNjZXNzIikpKTsKIAog
ICAgIHVpbnQ4X3QqIGRhdGFQdHIgPSBzdGF0aWNfY2FzdDx1aW50OF90Kj4oZGF0YVZpZXctPnZl
Y3RvcigpKSArIGJ5dGVPZmZzZXQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAppbmRleCBmODkxODdlLi45OGZkZTc5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCkBAIC00NDAs
MTYgKzQ0MCwxNiBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0OjpyZXNldChKU1ZhbHVlIHByb3RvdHlw
ZSkKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+
TWF0aCwgTWF0aE9iamVjdDo6Y3JlYXRlKHZtLCB0aGlzLCBNYXRoT2JqZWN0OjpjcmVhdGVTdHJ1
Y3R1cmUodm0sIHRoaXMsIG1fb2JqZWN0UHJvdG90eXBlLmdldCgpKSksIERvbnRFbnVtKTsKICAg
ICAKICAgICBzdGQ6OmFycmF5PEludGVybmFsRnVuY3Rpb24qLCBOVU1CRVJfT0ZfVFlQRURfQVJS
QVlfVFlQRVM+IHR5cGVkQXJyYXlDb25zdHJ1Y3RvcnM7Ci0gICAgdHlwZWRBcnJheUNvbnN0cnVj
dG9yc1t0b0luZGV4KFR5cGVJbnQ4KV0gPSBKU0ludDhBcnJheUNvbnN0cnVjdG9yOjpjcmVhdGUo
dm0sIEpTSW50OEFycmF5Q29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9m
dW5jdGlvblByb3RvdHlwZS5nZXQoKSksIG1fdHlwZWRBcnJheXNbdG9JbmRleChUeXBlSW50OCld
LnByb3RvdHlwZS5nZXQoKSwgIkludDhBcnJheSIpOwotICAgIHR5cGVkQXJyYXlDb25zdHJ1Y3Rv
cnNbdG9JbmRleChUeXBlSW50MTYpXSA9IEpTSW50MTZBcnJheUNvbnN0cnVjdG9yOjpjcmVhdGUo
dm0sIEpTSW50MTZBcnJheUNvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1f
ZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpLCBtX3R5cGVkQXJyYXlzW3RvSW5kZXgoVHlwZUludDE2
KV0ucHJvdG90eXBlLmdldCgpLCAiSW50MTZBcnJheSIpOwotICAgIHR5cGVkQXJyYXlDb25zdHJ1
Y3RvcnNbdG9JbmRleChUeXBlSW50MzIpXSA9IEpTSW50MzJBcnJheUNvbnN0cnVjdG9yOjpjcmVh
dGUodm0sIEpTSW50MzJBcnJheUNvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMs
IG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpLCBtX3R5cGVkQXJyYXlzW3RvSW5kZXgoVHlwZUlu
dDMyKV0ucHJvdG90eXBlLmdldCgpLCAiSW50MzJBcnJheSIpOwotICAgIHR5cGVkQXJyYXlDb25z
dHJ1Y3RvcnNbdG9JbmRleChUeXBlVWludDgpXSA9IEpTVWludDhBcnJheUNvbnN0cnVjdG9yOjpj
cmVhdGUodm0sIEpTVWludDhBcnJheUNvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRo
aXMsIG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpLCBtX3R5cGVkQXJyYXlzW3RvSW5kZXgoVHlw
ZVVpbnQ4KV0ucHJvdG90eXBlLmdldCgpLCAiVWludDhBcnJheSIpOwotICAgIHR5cGVkQXJyYXlD
b25zdHJ1Y3RvcnNbdG9JbmRleChUeXBlVWludDhDbGFtcGVkKV0gPSBKU1VpbnQ4Q2xhbXBlZEFy
cmF5Q29uc3RydWN0b3I6OmNyZWF0ZSh2bSwgSlNVaW50OENsYW1wZWRBcnJheUNvbnN0cnVjdG9y
OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpLCBt
X3R5cGVkQXJyYXlzW3RvSW5kZXgoVHlwZVVpbnQ4Q2xhbXBlZCldLnByb3RvdHlwZS5nZXQoKSwg
IlVpbnQ4Q2xhbXBlZEFycmF5Iik7Ci0gICAgdHlwZWRBcnJheUNvbnN0cnVjdG9yc1t0b0luZGV4
KFR5cGVVaW50MTYpXSA9IEpTVWludDE2QXJyYXlDb25zdHJ1Y3Rvcjo6Y3JlYXRlKHZtLCBKU1Vp
bnQxNkFycmF5Q29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9mdW5jdGlv
blByb3RvdHlwZS5nZXQoKSksIG1fdHlwZWRBcnJheXNbdG9JbmRleChUeXBlVWludDE2KV0ucHJv
dG90eXBlLmdldCgpLCAiVWludDE2QXJyYXkiKTsKLSAgICB0eXBlZEFycmF5Q29uc3RydWN0b3Jz
W3RvSW5kZXgoVHlwZVVpbnQzMildID0gSlNVaW50MzJBcnJheUNvbnN0cnVjdG9yOjpjcmVhdGUo
dm0sIEpTVWludDMyQXJyYXlDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBt
X2Z1bmN0aW9uUHJvdG90eXBlLmdldCgpKSwgbV90eXBlZEFycmF5c1t0b0luZGV4KFR5cGVVaW50
MzIpXS5wcm90b3R5cGUuZ2V0KCksICJVaW50MzJBcnJheSIpOwotICAgIHR5cGVkQXJyYXlDb25z
dHJ1Y3RvcnNbdG9JbmRleChUeXBlRmxvYXQzMildID0gSlNGbG9hdDMyQXJyYXlDb25zdHJ1Y3Rv
cjo6Y3JlYXRlKHZtLCBKU0Zsb2F0MzJBcnJheUNvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUo
dm0sIHRoaXMsIG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpLCBtX3R5cGVkQXJyYXlzW3RvSW5k
ZXgoVHlwZUZsb2F0MzIpXS5wcm90b3R5cGUuZ2V0KCksICJGbG9hdDMyQXJyYXkiKTsKLSAgICB0
eXBlZEFycmF5Q29uc3RydWN0b3JzW3RvSW5kZXgoVHlwZUZsb2F0NjQpXSA9IEpTRmxvYXQ2NEFy
cmF5Q29uc3RydWN0b3I6OmNyZWF0ZSh2bSwgSlNGbG9hdDY0QXJyYXlDb25zdHJ1Y3Rvcjo6Y3Jl
YXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgpKSwgbV90eXBl
ZEFycmF5c1t0b0luZGV4KFR5cGVGbG9hdDY0KV0ucHJvdG90eXBlLmdldCgpLCAiRmxvYXQ2NEFy
cmF5Iik7Ci0gICAgdHlwZWRBcnJheUNvbnN0cnVjdG9yc1t0b0luZGV4KFR5cGVEYXRhVmlldyld
ID0gSlNEYXRhVmlld0NvbnN0cnVjdG9yOjpjcmVhdGUodm0sIEpTRGF0YVZpZXdDb25zdHJ1Y3Rv
cjo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgpKSwg
bV90eXBlZEFycmF5c1t0b0luZGV4KFR5cGVEYXRhVmlldyldLnByb3RvdHlwZS5nZXQoKSwgIkRh
dGFWaWV3Iik7CisgICAgdHlwZWRBcnJheUNvbnN0cnVjdG9yc1t0b0luZGV4KFR5cGVJbnQ4KV0g
PSBKU0ludDhBcnJheUNvbnN0cnVjdG9yOjpjcmVhdGUodm0sIEpTSW50OEFycmF5Q29uc3RydWN0
b3I6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9mdW5jdGlvblByb3RvdHlwZS5nZXQoKSks
IG1fdHlwZWRBcnJheXNbdG9JbmRleChUeXBlSW50OCldLnByb3RvdHlwZS5nZXQoKSwgQVNDSUlM
aXRlcmFsKCJJbnQ4QXJyYXkiKSk7CisgICAgdHlwZWRBcnJheUNvbnN0cnVjdG9yc1t0b0luZGV4
KFR5cGVJbnQxNildID0gSlNJbnQxNkFycmF5Q29uc3RydWN0b3I6OmNyZWF0ZSh2bSwgSlNJbnQx
NkFycmF5Q29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9mdW5jdGlvblBy
b3RvdHlwZS5nZXQoKSksIG1fdHlwZWRBcnJheXNbdG9JbmRleChUeXBlSW50MTYpXS5wcm90b3R5
cGUuZ2V0KCksIEFTQ0lJTGl0ZXJhbCgiSW50MTZBcnJheSIpKTsKKyAgICB0eXBlZEFycmF5Q29u
c3RydWN0b3JzW3RvSW5kZXgoVHlwZUludDMyKV0gPSBKU0ludDMyQXJyYXlDb25zdHJ1Y3Rvcjo6
Y3JlYXRlKHZtLCBKU0ludDMyQXJyYXlDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0
aGlzLCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgpKSwgbV90eXBlZEFycmF5c1t0b0luZGV4KFR5
cGVJbnQzMildLnByb3RvdHlwZS5nZXQoKSwgQVNDSUlMaXRlcmFsKCJJbnQzMkFycmF5IikpOwor
ICAgIHR5cGVkQXJyYXlDb25zdHJ1Y3RvcnNbdG9JbmRleChUeXBlVWludDgpXSA9IEpTVWludDhB
cnJheUNvbnN0cnVjdG9yOjpjcmVhdGUodm0sIEpTVWludDhBcnJheUNvbnN0cnVjdG9yOjpjcmVh
dGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpLCBtX3R5cGVk
QXJyYXlzW3RvSW5kZXgoVHlwZVVpbnQ4KV0ucHJvdG90eXBlLmdldCgpLCBBU0NJSUxpdGVyYWwo
IlVpbnQ4QXJyYXkiKSk7CisgICAgdHlwZWRBcnJheUNvbnN0cnVjdG9yc1t0b0luZGV4KFR5cGVV
aW50OENsYW1wZWQpXSA9IEpTVWludDhDbGFtcGVkQXJyYXlDb25zdHJ1Y3Rvcjo6Y3JlYXRlKHZt
LCBKU1VpbnQ4Q2xhbXBlZEFycmF5Q29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhp
cywgbV9mdW5jdGlvblByb3RvdHlwZS5nZXQoKSksIG1fdHlwZWRBcnJheXNbdG9JbmRleChUeXBl
VWludDhDbGFtcGVkKV0ucHJvdG90eXBlLmdldCgpLCBBU0NJSUxpdGVyYWwoIlVpbnQ4Q2xhbXBl
ZEFycmF5IikpOworICAgIHR5cGVkQXJyYXlDb25zdHJ1Y3RvcnNbdG9JbmRleChUeXBlVWludDE2
KV0gPSBKU1VpbnQxNkFycmF5Q29uc3RydWN0b3I6OmNyZWF0ZSh2bSwgSlNVaW50MTZBcnJheUNv
bnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fZnVuY3Rpb25Qcm90b3R5cGUu
Z2V0KCkpLCBtX3R5cGVkQXJyYXlzW3RvSW5kZXgoVHlwZVVpbnQxNildLnByb3RvdHlwZS5nZXQo
KSwgQVNDSUlMaXRlcmFsKCJVaW50MTZBcnJheSIpKTsKKyAgICB0eXBlZEFycmF5Q29uc3RydWN0
b3JzW3RvSW5kZXgoVHlwZVVpbnQzMildID0gSlNVaW50MzJBcnJheUNvbnN0cnVjdG9yOjpjcmVh
dGUodm0sIEpTVWludDMyQXJyYXlDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlz
LCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgpKSwgbV90eXBlZEFycmF5c1t0b0luZGV4KFR5cGVV
aW50MzIpXS5wcm90b3R5cGUuZ2V0KCksIEFTQ0lJTGl0ZXJhbCgiVWludDMyQXJyYXkiKSk7Cisg
ICAgdHlwZWRBcnJheUNvbnN0cnVjdG9yc1t0b0luZGV4KFR5cGVGbG9hdDMyKV0gPSBKU0Zsb2F0
MzJBcnJheUNvbnN0cnVjdG9yOjpjcmVhdGUodm0sIEpTRmxvYXQzMkFycmF5Q29uc3RydWN0b3I6
OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9mdW5jdGlvblByb3RvdHlwZS5nZXQoKSksIG1f
dHlwZWRBcnJheXNbdG9JbmRleChUeXBlRmxvYXQzMildLnByb3RvdHlwZS5nZXQoKSwgQVNDSUlM
aXRlcmFsKCJGbG9hdDMyQXJyYXkiKSk7CisgICAgdHlwZWRBcnJheUNvbnN0cnVjdG9yc1t0b0lu
ZGV4KFR5cGVGbG9hdDY0KV0gPSBKU0Zsb2F0NjRBcnJheUNvbnN0cnVjdG9yOjpjcmVhdGUodm0s
IEpTRmxvYXQ2NEFycmF5Q29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9m
dW5jdGlvblByb3RvdHlwZS5nZXQoKSksIG1fdHlwZWRBcnJheXNbdG9JbmRleChUeXBlRmxvYXQ2
NCldLnByb3RvdHlwZS5nZXQoKSwgQVNDSUlMaXRlcmFsKCJGbG9hdDY0QXJyYXkiKSk7CisgICAg
dHlwZWRBcnJheUNvbnN0cnVjdG9yc1t0b0luZGV4KFR5cGVEYXRhVmlldyldID0gSlNEYXRhVmll
d0NvbnN0cnVjdG9yOjpjcmVhdGUodm0sIEpTRGF0YVZpZXdDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3Ry
dWN0dXJlKHZtLCB0aGlzLCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgpKSwgbV90eXBlZEFycmF5
c1t0b0luZGV4KFR5cGVEYXRhVmlldyldLnByb3RvdHlwZS5nZXQoKSwgQVNDSUlMaXRlcmFsKCJE
YXRhVmlldyIpKTsKIAogICAgIGZvciAodW5zaWduZWQgdHlwZWRBcnJheUluZGV4ID0gTlVNQkVS
X09GX1RZUEVEX0FSUkFZX1RZUEVTOyB0eXBlZEFycmF5SW5kZXgtLTspIHsKICAgICAgICAgbV90
eXBlZEFycmF5c1t0eXBlZEFycmF5SW5kZXhdLnByb3RvdHlwZS0+cHV0RGlyZWN0V2l0aG91dFRy
YW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCB0eXBlZEFycmF5Q29u
c3RydWN0b3JzW3R5cGVkQXJyYXlJbmRleF0sIERvbnRFbnVtKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNwcApp
bmRleCA2MDRkZTJiLi42NzBjZjJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuY3BwCkBAIC04MDIsNyArODAy
LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5jUHJvdG9TZXR0ZXIo
RXhlY1N0YXRlKiBleGVjKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0
ZVR5cGVFcnJvcihleGVjLCBTdHJpY3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpKTsK
IAogICAgIGlmICghdGhpc09iamVjdC0+c2V0UHJvdG90eXBlV2l0aEN5Y2xlQ2hlY2soZXhlYywg
dmFsdWUpKQotICAgICAgICBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZUVy
cm9yKGV4ZWMsICJjeWNsaWMgX19wcm90b19fIHZhbHVlIikpOworICAgICAgICBleGVjLT52bSgp
LnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiY3lj
bGljIF9fcHJvdG9fXyB2YWx1ZSIpKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1Vu
ZGVmaW5lZCgpKTsKIH0KICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTUHJvbWlzZUNvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTUHJvbWlzZUNvbnN0cnVjdG9yLmNwcAppbmRleCBkYjY5ZmQ0Li4yNjFhODg4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VDb25zdHJ1
Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlQ29u
c3RydWN0b3IuY3BwCkBAIC04NSw3ICs4NSw3IEBAIEpTUHJvbWlzZUNvbnN0cnVjdG9yOjpKU1By
b21pc2VDb25zdHJ1Y3RvcihWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQogCiB2b2lkIEpT
UHJvbWlzZUNvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTUHJvbWlzZVByb3Rv
dHlwZSogcHJvbWlzZVByb3RvdHlwZSkKIHsKLSAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSwg
IlByb21pc2UiKTsKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSwgQVNDSUlMaXRlcmFsKCJQ
cm9taXNlIikpOwogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0
eU5hbWVzLT5wcm90b3R5cGUsIHByb21pc2VQcm90b3R5cGUsIERvbnRFbnVtIHwgRG9udERlbGV0
ZSB8IFJlYWRPbmx5KTsKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJv
cGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigxKSwgUmVhZE9ubHkgfCBEb250RW51bSB8IERv
bnREZWxldGUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
TGl0ZXJhbFBhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9MaXRlcmFs
UGFyc2VyLmNwcAppbmRleCA5YjAxOTUxLi5mNmY1ZmUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9MaXRlcmFsUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9MaXRlcmFsUGFyc2VyLmNwcApAQCAtMjgxLDcgKzI4MSw3IEBAIHRl
bXBsYXRlIDxQYXJzZXJNb2RlIG1vZGU+IFRva2VuVHlwZSBMaXRlcmFsUGFyc2VyPENoYXJUeXBl
Pjo6TGV4ZXI6OmxleChMaXRlcmFsCiAgICAgICAgICAgICByZXR1cm4gbGV4U3RyaW5nPG1vZGUs
ICdcJyc+KHRva2VuKTsKICAgICAgICAgfQogICAgIH0KLSAgICBtX2xleEVycm9yTWVzc2FnZSA9
IFN0cmluZzo6Zm9ybWF0KCJVbnJlY29nbml6ZWQgdG9rZW4gJyVjJyIsICptX3B0cikuaW1wbCgp
OworICAgIG1fbGV4RXJyb3JNZXNzYWdlID0gU3RyaW5nOjpmb3JtYXQoIlVucmVjb2duaXplZCB0
b2tlbiAnJWMnIiwgKm1fcHRyKTsKICAgICByZXR1cm4gVG9rRXJyb3I7CiB9CiAKQEAgLTQwNiw3
ICs0MDYsNyBAQCB0ZW1wbGF0ZSA8UGFyc2VyTW9kZSBtb2RlLCBjaGFyIHRlcm1pbmF0b3I+IEFM
V0FZU19JTkxJTkUgVG9rZW5UeXBlIExpdGVyYWxQYXJzZQogICAgICAgICAgICAgICAgICAgICB9
IC8vIHVOTk5OID09IDUgY2hhcmFjdGVycwogICAgICAgICAgICAgICAgICAgICBmb3IgKGludCBp
ID0gMTsgaSA8IDU7IGkrKykgewogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFpc0FTQ0lJ
SGV4RGlnaXQobV9wdHJbaV0pKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9sZXhF
cnJvck1lc3NhZ2UgPSBTdHJpbmc6OmZvcm1hdCgiXCJcXCVzXCIgaXMgbm90IGEgdmFsaWQgdW5p
Y29kZSBlc2NhcGUiLCBTdHJpbmcobV9wdHIsIDUpLmFzY2lpKCkuZGF0YSgpKS5pbXBsKCk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9sZXhFcnJvck1lc3NhZ2UgPSBTdHJpbmc6OmZv
cm1hdCgiXCJcXCVzXCIgaXMgbm90IGEgdmFsaWQgdW5pY29kZSBlc2NhcGUiLCBTdHJpbmcobV9w
dHIsIDUpLmFzY2lpKCkuZGF0YSgpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gVG9rRXJyb3I7CiAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAg
ICAgIH0KQEAgLTQyMCw3ICs0MjAsNyBAQCB0ZW1wbGF0ZSA8UGFyc2VyTW9kZSBtb2RlLCBjaGFy
IHRlcm1pbmF0b3I+IEFMV0FZU19JTkxJTkUgVG9rZW5UeXBlIExpdGVyYWxQYXJzZQogICAgICAg
ICAgICAgICAgICAgICAgICAgbV9wdHIrKzsKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIG1fbGV4RXJyb3JN
ZXNzYWdlID0gU3RyaW5nOjpmb3JtYXQoIkludmFsaWQgZXNjYXBlIGNoYXJhY3RlciAlYyIsICpt
X3B0cikuaW1wbCgpOworICAgICAgICAgICAgICAgICAgICBtX2xleEVycm9yTWVzc2FnZSA9IFN0
cmluZzo6Zm9ybWF0KCJJbnZhbGlkIGVzY2FwZSBjaGFyYWN0ZXIgJWMiLCAqbV9wdHIpOwogICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gVG9rRXJyb3I7CiAgICAgICAgICAgICB9CiAgICAgICAg
IH0KQEAgLTcxMSw5ICs3MTEsOSBAQCBKU1ZhbHVlIExpdGVyYWxQYXJzZXI8Q2hhclR5cGU+Ojpw
YXJzZShQYXJzZXJTdGF0ZSBpbml0aWFsU3RhdGUpCiAgICAgICAgICAgICAgICAgICAgIGNhc2Ug
VG9rSWRlbnRpZmllcjogewogICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgTGl0ZXJhbFBh
cnNlclRva2VuPENoYXJUeXBlPiYgdG9rZW4gPSBtX2xleGVyLmN1cnJlbnRUb2tlbigpOwogICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKHRva2VuLnN0cmluZ0lzOEJpdCkKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdlID0gU3RyaW5nOjpmb3JtYXQoIlVu
ZXhwZWN0ZWQgaWRlbnRpZmllciBcIiVzXCIiLCBTdHJpbmcobV9sZXhlci5jdXJyZW50VG9rZW4o
KS5zdHJpbmdUb2tlbjgsIG1fbGV4ZXIuY3VycmVudFRva2VuKCkuc3RyaW5nTGVuZ3RoKS5hc2Np
aSgpLmRhdGEoKSkuaW1wbCgpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fcGFyc2VF
cnJvck1lc3NhZ2UgPSBTdHJpbmc6OmZvcm1hdCgiVW5leHBlY3RlZCBpZGVudGlmaWVyIFwiJXNc
IiIsIFN0cmluZyhtX2xleGVyLmN1cnJlbnRUb2tlbigpLnN0cmluZ1Rva2VuOCwgbV9sZXhlci5j
dXJyZW50VG9rZW4oKS5zdHJpbmdMZW5ndGgpLmFzY2lpKCkuZGF0YSgpKTsKICAgICAgICAgICAg
ICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX3BhcnNlRXJy
b3JNZXNzYWdlID0gU3RyaW5nOjpmb3JtYXQoIlVuZXhwZWN0ZWQgaWRlbnRpZmllciBcIiVzXCIi
LCBTdHJpbmcobV9sZXhlci5jdXJyZW50VG9rZW4oKS5zdHJpbmdUb2tlbjE2LCBtX2xleGVyLmN1
cnJlbnRUb2tlbigpLnN0cmluZ0xlbmd0aCkuYXNjaWkoKS5kYXRhKCkpLmltcGwoKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdlID0gU3RyaW5nOjpmb3Jt
YXQoIlVuZXhwZWN0ZWQgaWRlbnRpZmllciBcIiVzXCIiLCBTdHJpbmcobV9sZXhlci5jdXJyZW50
VG9rZW4oKS5zdHJpbmdUb2tlbjE2LCBtX2xleGVyLmN1cnJlbnRUb2tlbigpLnN0cmluZ0xlbmd0
aCkuYXNjaWkoKS5kYXRhKCkpOwogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFs
dWUoKTsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICBjYXNlIFRv
a0NvbG9uOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTGl0ZXJh
bFBhcnNlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTGl0ZXJhbFBhcnNlci5o
CmluZGV4IGYwNWYwMzIuLmZjYjc5ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0xpdGVyYWxQYXJzZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9MaXRlcmFsUGFyc2VyLmgKQEAgLTk4LDkgKzk4LDkgQEAgcHVibGljOgogICAgIFN0cmlu
ZyBnZXRFcnJvck1lc3NhZ2UoKQogICAgIHsgCiAgICAgICAgIGlmICghbV9sZXhlci5nZXRFcnJv
ck1lc3NhZ2UoKS5pc0VtcHR5KCkpCi0gICAgICAgICAgICByZXR1cm4gU3RyaW5nOjpmb3JtYXQo
IkpTT04gUGFyc2UgZXJyb3I6ICVzIiwgbV9sZXhlci5nZXRFcnJvck1lc3NhZ2UoKS5hc2NpaSgp
LmRhdGEoKSkuaW1wbCgpOworICAgICAgICAgICAgcmV0dXJuIFN0cmluZzo6Zm9ybWF0KCJKU09O
IFBhcnNlIGVycm9yOiAlcyIsIG1fbGV4ZXIuZ2V0RXJyb3JNZXNzYWdlKCkuYXNjaWkoKS5kYXRh
KCkpOwogICAgICAgICBpZiAoIW1fcGFyc2VFcnJvck1lc3NhZ2UuaXNFbXB0eSgpKQotICAgICAg
ICAgICAgcmV0dXJuIFN0cmluZzo6Zm9ybWF0KCJKU09OIFBhcnNlIGVycm9yOiAlcyIsIG1fcGFy
c2VFcnJvck1lc3NhZ2UuYXNjaWkoKS5kYXRhKCkpLmltcGwoKTsKKyAgICAgICAgICAgIHJldHVy
biBTdHJpbmc6OmZvcm1hdCgiSlNPTiBQYXJzZSBlcnJvcjogJXMiLCBtX3BhcnNlRXJyb3JNZXNz
YWdlLmFzY2lpKCkuZGF0YSgpKTsKICAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgiSlNPTiBQ
YXJzZSBlcnJvcjogVW5hYmxlIHRvIHBhcnNlIEpTT04gc3RyaW5nIik7CiAgICAgfQogICAgIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZVNldC5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBlU2V0LmNwcAppbmRleCAyMjM0NTliLi45
Zjk4YzA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBlU2V0
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBlU2V0LmNwcApAQCAt
OTksNyArOTksNyBAQCB2b2lkIFR5cGVTZXQ6OmludmFsaWRhdGVDYWNoZSgpCiBTdHJpbmcgVHlw
ZVNldDo6c2VlblR5cGVzKCkgY29uc3QKIHsKICAgICBpZiAobV9zZWVuVHlwZXMgPT0gVHlwZU5v
dGhpbmcpCi0gICAgICAgIHJldHVybiAiKFVucmVhY2hlZCBTdGF0ZW1lbnQpIjsKKyAgICAgICAg
cmV0dXJuIEFTQ0lJTGl0ZXJhbCgiKFVucmVhY2hlZCBTdGF0ZW1lbnQpIik7CiAKICAgICBTdHJp
bmdCdWlsZGVyIHNlZW47CiAKQEAgLTEyMywxNyArMTIzLDE3IEBAIFN0cmluZyBUeXBlU2V0Ojpz
ZWVuVHlwZXMoKSBjb25zdAogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9zdHJ1Y3R1cmVI
aXN0b3J5LnNpemUoKTsgaSsrKSB7CiAgICAgICAgIFJlZlB0cjxTdHJ1Y3R1cmVTaGFwZT4gc2hh
cGUgPSBtX3N0cnVjdHVyZUhpc3RvcnkuYXQoaSk7CiAgICAgICAgIHNlZW4uYXBwZW5kKHNoYXBl
LT5tX2NvbnN0cnVjdG9yTmFtZSk7Ci0gICAgICAgIHNlZW4uYXBwZW5kKCIgIik7CisgICAgICAg
IHNlZW4uYXBwZW5kKCcgJyk7CiAgICAgfQogCiAgICAgaWYgKG1fc3RydWN0dXJlSGlzdG9yeS5z
aXplKCkpIAogICAgICAgICBzZWVuLmFwcGVuZCgiXG5TdHJ1Y3R1cmVzOlsgIik7CiAgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBtX3N0cnVjdHVyZUhpc3Rvcnkuc2l6ZSgpOyBpKyspIHsKICAg
ICAgICAgc2Vlbi5hcHBlbmQobV9zdHJ1Y3R1cmVIaXN0b3J5LmF0KGkpLT5zdHJpbmdSZXByZXNl
bnRhdGlvbigpKTsKLSAgICAgICAgc2Vlbi5hcHBlbmQoIiAiKTsKKyAgICAgICAgc2Vlbi5hcHBl
bmQoJyAnKTsKICAgICB9CiAgICAgaWYgKG1fc3RydWN0dXJlSGlzdG9yeS5zaXplKCkpCi0gICAg
ICAgIHNlZW4uYXBwZW5kKCJdIik7CisgICAgICAgIHNlZW4uYXBwZW5kKCddJyk7CiAKICAgICBp
ZiAobV9zdHJ1Y3R1cmVIaXN0b3J5LnNpemUoKSkgewogICAgICAgICBzZWVuLmFwcGVuZCgiXG5M
ZWFzdCBDb21tb24gQW5jZXN0b3I6ICIpOwpAQCAtMTY2LDcyICsxNjYsNzIgQEAgYm9vbCBUeXBl
U2V0Ojpkb2VzVHlwZUNvbmZvcm1Ubyh1aW50MzJfdCB0ZXN0KSBjb25zdAogU3RyaW5nIFR5cGVT
ZXQ6OmRpc3BsYXlOYW1lKCkgY29uc3QKIHsKICAgICBpZiAobV9zZWVuVHlwZXMgPT0gVHlwZU5v
dGhpbmcpCi0gICAgICAgIHJldHVybiAiIjsKKyAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7
CiAKICAgICBpZiAobV9zdHJ1Y3R1cmVIaXN0b3J5LnNpemUoKSAmJiBkb2VzVHlwZUNvbmZvcm1U
byhUeXBlT2JqZWN0IHwgVHlwZU51bGwgfCBUeXBlVW5kZWZpbmVkKSkgewogICAgICAgICBTdHJp
bmcgY3Rvck5hbWUgPSBsZWFzdENvbW1vbkFuY2VzdG9yKCk7IAogCiAgICAgICAgIGlmIChkb2Vz
VHlwZUNvbmZvcm1UbyhUeXBlT2JqZWN0KSkKICAgICAgICAgICAgIHJldHVybiBjdG9yTmFtZTsK
LSAgICAgICAgZWxzZSBpZiAoZG9lc1R5cGVDb25mb3JtVG8oVHlwZU9iamVjdCB8IFR5cGVOdWxs
IHwgVHlwZVVuZGVmaW5lZCkpCi0gICAgICAgICAgICByZXR1cm4gY3Rvck5hbWUgKyAiPyI7Cisg
ICAgICAgIGlmIChkb2VzVHlwZUNvbmZvcm1UbyhUeXBlT2JqZWN0IHwgVHlwZU51bGwgfCBUeXBl
VW5kZWZpbmVkKSkKKyAgICAgICAgICAgIHJldHVybiBjdG9yTmFtZSArICc/JzsKICAgICB9CiAK
ICAgICAvLyBUaGUgb3JkZXIgb2YgdGhlc2UgY2hlY2tzIGFyZSBpbXBvcnRhbnQuIEZvciBleGFt
cGxlLCBpZiBhIHZhbHVlIGlzIG9ubHkgYSBmdW5jdGlvbiwgaXQgY29uZm9ybXMgdG8gVHlwZUZ1
bmN0aW9uLCBidXQgaXQgYWxzbyBjb25mb3JtcyB0byBUeXBlRnVuY3Rpb24gfCBUeXBlTnVsbC4K
ICAgICAvLyBUaGVyZWZvcmUsIG1vcmUgc3BlY2lmaWMgdHlwZXMgbXVzdCBiZSBjaGVja2VkIGZp
cnN0LgogCiAgICAgaWYgKGRvZXNUeXBlQ29uZm9ybVRvKFR5cGVGdW5jdGlvbikpCi0gICAgICAg
IHJldHVybiAiRnVuY3Rpb24iOworICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJGdW5jdGlv
biIpOwogICAgIGlmIChkb2VzVHlwZUNvbmZvcm1UbyhUeXBlVW5kZWZpbmVkKSkKLSAgICAgICAg
cmV0dXJuICJVbmRlZmluZWQiOworICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJVbmRlZmlu
ZWQiKTsKICAgICBpZiAoZG9lc1R5cGVDb25mb3JtVG8oVHlwZU51bGwpKQotICAgICAgICByZXR1
cm4gIk51bGwiOworICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJOdWxsIik7CiAgICAgaWYg
KGRvZXNUeXBlQ29uZm9ybVRvKFR5cGVCb29sZWFuKSkKLSAgICAgICAgcmV0dXJuICJCb29sZWFu
IjsKKyAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgiQm9vbGVhbiIpOwogICAgIGlmIChkb2Vz
VHlwZUNvbmZvcm1UbyhUeXBlTWFjaGluZUludCkpCi0gICAgICAgIHJldHVybiAiSW50ZWdlciI7
CisgICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwoIkludGVnZXIiKTsKICAgICBpZiAoZG9lc1R5
cGVDb25mb3JtVG8oVHlwZU51bWJlciB8IFR5cGVNYWNoaW5lSW50KSkKLSAgICAgICAgcmV0dXJu
ICJOdW1iZXIiOworICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJOdW1iZXIiKTsKICAgICBp
ZiAoZG9lc1R5cGVDb25mb3JtVG8oVHlwZVN0cmluZykpCi0gICAgICAgIHJldHVybiAiU3RyaW5n
IjsKKyAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgiU3RyaW5nIik7CiAKICAgICBpZiAoZG9l
c1R5cGVDb25mb3JtVG8oVHlwZU51bGwgfCBUeXBlVW5kZWZpbmVkKSkKLSAgICAgICAgcmV0dXJu
ICIoPykiOworICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCIoPykiKTsKIAogICAgIGlmIChk
b2VzVHlwZUNvbmZvcm1UbyhUeXBlRnVuY3Rpb24gfCBUeXBlTnVsbCB8IFR5cGVVbmRlZmluZWQp
KQotICAgICAgICByZXR1cm4gIkZ1bmN0aW9uPyI7CisgICAgICAgIHJldHVybiBBU0NJSUxpdGVy
YWwoIkZ1bmN0aW9uPyIpOwogICAgIGlmIChkb2VzVHlwZUNvbmZvcm1UbyhUeXBlQm9vbGVhbiB8
IFR5cGVOdWxsIHwgVHlwZVVuZGVmaW5lZCkpCi0gICAgICAgIHJldHVybiAiQm9vbGVhbj8iOwor
ICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJCb29sZWFuPyIpOwogICAgIGlmIChkb2VzVHlw
ZUNvbmZvcm1UbyhUeXBlTWFjaGluZUludCB8IFR5cGVOdWxsIHwgVHlwZVVuZGVmaW5lZCkpCi0g
ICAgICAgIHJldHVybiAiSW50ZWdlcj8iOworICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJJ
bnRlZ2VyPyIpOwogICAgIGlmIChkb2VzVHlwZUNvbmZvcm1UbyhUeXBlTnVtYmVyIHwgVHlwZU1h
Y2hpbmVJbnQgfCBUeXBlTnVsbCB8IFR5cGVVbmRlZmluZWQpKQotICAgICAgICByZXR1cm4gIk51
bWJlcj8iOworICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJOdW1iZXI/Iik7CiAgICAgaWYg
KGRvZXNUeXBlQ29uZm9ybVRvKFR5cGVTdHJpbmcgfCBUeXBlTnVsbCB8IFR5cGVVbmRlZmluZWQp
KQotICAgICAgICByZXR1cm4gIlN0cmluZz8iOworICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFs
KCJTdHJpbmc/Iik7CiAgICAKICAgICBpZiAoZG9lc1R5cGVDb25mb3JtVG8oVHlwZU9iamVjdCB8
IFR5cGVGdW5jdGlvbiB8IFR5cGVTdHJpbmcpKQotICAgICAgICByZXR1cm4gIk9iamVjdCI7Cisg
ICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwoIk9iamVjdCIpOwogICAgIGlmIChkb2VzVHlwZUNv
bmZvcm1UbyhUeXBlT2JqZWN0IHwgVHlwZUZ1bmN0aW9uIHwgVHlwZVN0cmluZyB8IFR5cGVOdWxs
IHwgVHlwZVVuZGVmaW5lZCkpCi0gICAgICAgIHJldHVybiAiT2JqZWN0PyI7CisgICAgICAgIHJl
dHVybiBBU0NJSUxpdGVyYWwoIk9iamVjdD8iKTsKIAotICAgIHJldHVybiAiKG1hbnkpIjsKKyAg
ICByZXR1cm4gQVNDSUlMaXRlcmFsKCIobWFueSkiKTsKIH0KIAogUGFzc1JlZlB0cjxJbnNwZWN0
b3I6OlByb3RvY29sOjpBcnJheTxTdHJpbmc+PiBUeXBlU2V0OjphbGxQcmltaXRpdmVUeXBlTmFt
ZXMoKSBjb25zdAogewogICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxTdHJp
bmc+PiBzZWVuID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8U3RyaW5nPjo6Y3JlYXRlKCk7
CiAgICAgaWYgKG1fc2VlblR5cGVzICYgVHlwZVVuZGVmaW5lZCkKLSAgICAgICAgIHNlZW4tPmFk
ZEl0ZW0oIlVuZGVmaW5lZCIpOworICAgICAgICBzZWVuLT5hZGRJdGVtKEFTQ0lJTGl0ZXJhbCgi
VW5kZWZpbmVkIikpOwogICAgIGlmIChtX3NlZW5UeXBlcyAmIFR5cGVOdWxsKQotICAgICAgICAg
c2Vlbi0+YWRkSXRlbSgiTnVsbCIpOworICAgICAgICBzZWVuLT5hZGRJdGVtKEFTQ0lJTGl0ZXJh
bCgiTnVsbCIpKTsKICAgICBpZiAobV9zZWVuVHlwZXMgJiBUeXBlQm9vbGVhbikKLSAgICAgICAg
IHNlZW4tPmFkZEl0ZW0oIkJvb2xlYW4iKTsKKyAgICAgICAgc2Vlbi0+YWRkSXRlbShBU0NJSUxp
dGVyYWwoIkJvb2xlYW4iKSk7CiAgICAgaWYgKG1fc2VlblR5cGVzICYgVHlwZU1hY2hpbmVJbnQp
Ci0gICAgICAgICBzZWVuLT5hZGRJdGVtKCJJbnRlZ2VyIik7CisgICAgICAgIHNlZW4tPmFkZEl0
ZW0oQVNDSUlMaXRlcmFsKCJJbnRlZ2VyIikpOwogICAgIGlmIChtX3NlZW5UeXBlcyAmIFR5cGVO
dW1iZXIpCi0gICAgICAgICBzZWVuLT5hZGRJdGVtKCJOdW1iZXIiKTsKKyAgICAgICAgc2Vlbi0+
YWRkSXRlbShBU0NJSUxpdGVyYWwoIk51bWJlciIpKTsKICAgICBpZiAobV9zZWVuVHlwZXMgJiBU
eXBlU3RyaW5nKQotICAgICAgICAgc2Vlbi0+YWRkSXRlbSgiU3RyaW5nIik7CisgICAgICAgIHNl
ZW4tPmFkZEl0ZW0oQVNDSUlMaXRlcmFsKCJTdHJpbmciKSk7CiAKICAgICByZXR1cm4gc2Vlbi5y
ZWxlYXNlKCk7CiB9CkBAIC0yODIsOSArMjgyLDkgQEAgU3RyaW5nIFN0cnVjdHVyZVNoYXBlOjpw
cm9wZXJ0eUhhc2goKQogICAgICAgICByZXR1cm4gKm1fcHJvcGVydHlIYXNoOwogCiAgICAgU3Ry
aW5nQnVpbGRlciBidWlsZGVyOwotICAgIGJ1aWxkZXIuYXBwZW5kKCI6Iik7CisgICAgYnVpbGRl
ci5hcHBlbmQoJzonKTsKICAgICBidWlsZGVyLmFwcGVuZChtX2NvbnN0cnVjdG9yTmFtZSk7Ci0g
ICAgYnVpbGRlci5hcHBlbmQoIjoiKTsKKyAgICBidWlsZGVyLmFwcGVuZCgnOicpOwogICAgIAog
ICAgIGZvciAoYXV0byBpdGVyID0gbV9maWVsZHMuYmVnaW4oKSwgZW5kID0gbV9maWVsZHMuZW5k
KCk7IGl0ZXIgIT0gZW5kOyArK2l0ZXIpIHsKICAgICAgICAgU3RyaW5nIHByb3BlcnR5ID0gU3Ry
aW5nKCgqaXRlcikpOwpAQCAtMjkzLDcgKzI5Myw3IEBAIFN0cmluZyBTdHJ1Y3R1cmVTaGFwZTo6
cHJvcGVydHlIYXNoKCkKICAgICB9CiAKICAgICBpZiAobV9wcm90bykgewotICAgICAgICBidWls
ZGVyLmFwcGVuZCgiOiIpOworICAgICAgICBidWlsZGVyLmFwcGVuZCgnOicpOwogICAgICAgICBi
dWlsZGVyLmFwcGVuZCgiX19wcm90b19fIik7CiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKG1fcHJv
dG8tPnByb3BlcnR5SGFzaCgpKTsKICAgICB9CkBAIC0zMzksNyArMzM5LDcgQEAgU3RyaW5nIFN0
cnVjdHVyZVNoYXBlOjpzdHJpbmdSZXByZXNlbnRhdGlvbigpCiAgICAgU3RyaW5nQnVpbGRlciBy
ZXByZXNlbnRhdGlvbjsKICAgICBSZWZQdHI8U3RydWN0dXJlU2hhcGU+IGN1clNoYXBlID0gdGhp
czsKIAotICAgIHJlcHJlc2VudGF0aW9uLmFwcGVuZCgieyIpOworICAgIHJlcHJlc2VudGF0aW9u
LmFwcGVuZCgneycpOwogICAgIHdoaWxlIChjdXJTaGFwZSkgewogICAgICAgICBmb3IgKGF1dG8g
aXQgPSBjdXJTaGFwZS0+bV9maWVsZHMuYmVnaW4oKSwgZW5kID0gY3VyU2hhcGUtPm1fZmllbGRz
LmVuZCgpOyBpdCAhPSBlbmQ7ICsraXQpIHsKICAgICAgICAgICAgIFN0cmluZyBwcm9wKCgqaXQp
LmdldCgpKTsKQEAgLTM0OCw3ICszNDgsNyBAQCBTdHJpbmcgU3RydWN0dXJlU2hhcGU6OnN0cmlu
Z1JlcHJlc2VudGF0aW9uKCkKICAgICAgICAgfQogCiAgICAgICAgIGlmIChjdXJTaGFwZS0+bV9w
cm90bykgewotICAgICAgICAgICAgU3RyaW5nIHByb3QgPSBTdHJpbmcoIl9fcHJvdG9fXyIpICsg
U3RyaW5nKCIgWyIpICsgY3VyU2hhcGUtPm1fcHJvdG8tPm1fY29uc3RydWN0b3JOYW1lICsgU3Ry
aW5nKCJdIik7CisgICAgICAgICAgICBTdHJpbmcgcHJvdCA9IG1ha2VTdHJpbmcoIl9fcHJvdG9f
XyBbIiwgY3VyU2hhcGUtPm1fcHJvdG8tPm1fY29uc3RydWN0b3JOYW1lLCAnXScpOwogICAgICAg
ICAgICAgcmVwcmVzZW50YXRpb24uYXBwZW5kKHByb3QpOwogICAgICAgICAgICAgcmVwcmVzZW50
YXRpb24uYXBwZW5kKCIsICIpOwogICAgICAgICB9CkBAIC0zNTksNyArMzU5LDcgQEAgU3RyaW5n
IFN0cnVjdHVyZVNoYXBlOjpzdHJpbmdSZXByZXNlbnRhdGlvbigpCiAgICAgaWYgKHJlcHJlc2Vu
dGF0aW9uLmxlbmd0aCgpID49IDMpCiAgICAgICAgIHJlcHJlc2VudGF0aW9uLnJlc2l6ZShyZXBy
ZXNlbnRhdGlvbi5sZW5ndGgoKSAtIDIpOwogCi0gICAgcmVwcmVzZW50YXRpb24uYXBwZW5kKCJ9
Iik7CisgICAgcmVwcmVzZW50YXRpb24uYXBwZW5kKCd9Jyk7CiAKICAgICByZXR1cm4gcmVwcmVz
ZW50YXRpb24udG9TdHJpbmcoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9n
IGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggZWI3OWEwNy4uZjVhM2VlMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMyBAQAorMjAxNC0wOC0yOSAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9AYXBwbGUu
Y29tPgorCisgICAgICAgIEphdmFTY3JpcHRDb3JlOiBVc2UgQVNDSUlMaXRlcmFsIHdoZXJlIHBv
c3NpYmxlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
MzYxNzkKKworICAgICAgICBSZXZpZXdlZCBieSBNaWNoYWVsIFNhYm9mZi4KKworICAgICAgICAq
IHd0Zi90ZXh0L1dURlN0cmluZy5jcHA6CisgICAgICAgIChhc2NpaURlYnVnKToKKwogMjAxNC0w
OC0yNyAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAgIERGRyBzaG91
bGQgY29tcHV0ZSBpbW1lZGlhdGUgZG9taW5hdG9ycyB1c2luZyB0aGUgTyhuIGxvZyBuKSBmb3Jt
IG9mIExlbmdhdWVyIGFuZCBUYXJqYW4ncyAiQSBGYXN0IEFsZ29yaXRobSBmb3IgRmluZGluZyBE
b21pbmF0b3JzIGluIGEgRmxvd2dyYXBoIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4
dC9XVEZTdHJpbmcuY3BwIGIvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuY3BwCmluZGV4
IGMxZDk0MzkuLjA4MDNjMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3Ry
aW5nLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5jcHAKQEAgLTEyMDYs
NyArMTIwNiw3IEBAIFN0cmluZyogc3RyaW5nKGNvbnN0IGNoYXIqIHMpCiBWZWN0b3I8Y2hhcj4g
YXNjaWlEZWJ1ZyhTdHJpbmdJbXBsKiBpbXBsKQogewogICAgIGlmICghaW1wbCkKLSAgICAgICAg
cmV0dXJuIGFzY2lpRGVidWcoU3RyaW5nKCJbbnVsbF0iKS5pbXBsKCkpOworICAgICAgICByZXR1
cm4gYXNjaWlEZWJ1ZyhTdHJpbmcoQVNDSUlMaXRlcmFsKCJbbnVsbF0iKSkuaW1wbCgpKTsKIAog
ICAgIFZlY3RvcjxjaGFyPiBidWZmZXI7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGlt
cGwtPmxlbmd0aCgpOyArK2kpIHsK
</data>

          </attachment>
      

    </bug>

</bugzilla>