<?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>143550</bug_id>
          
          <creation_ts>2015-04-08 20:10:01 -0700</creation_ts>
          <short_desc>Cleanup some StringBuilder use</short_desc>
          <delta_ts>2016-09-07 21:43:12 -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>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>joepeck</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1083820</commentid>
    <comment_count>0</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2015-04-08 20:10:01 -0700</bug_when>
    <thetext>* SUMMARY
Cleanup some StringBuilder use:

  - if all the parts are simple strings, use makeString() instead of StringBuilder
  - use makeString() instead of String::append in some cases
  - use appendLiteral and append(char) when possible</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1083821</commentid>
    <comment_count>1</comment_count>
      <attachid>250403</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2015-04-08 20:12:14 -0700</bug_when>
    <thetext>Created attachment 250403
[PATCH] Proposed Fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1083822</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-04-08 20:13:12 -0700</bug_when>
    <thetext>Attachment 250403 did not pass style-queue:


ERROR: Source/WebCore/ChangeLog:8:  You should remove the &apos;No new tests&apos; and either add and list tests, or explain why no new tests were possible.  [changelog/nonewtests] [5]
Total errors found: 1 in 27 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1083832</commentid>
    <comment_count>3</comment_count>
      <attachid>250406</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2015-04-08 20:40:26 -0700</bug_when>
    <thetext>Created attachment 250406
[PATCH] Proposed Fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1084206</commentid>
    <comment_count>4</comment_count>
      <attachid>250406</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-04-09 22:46:15 -0700</bug_when>
    <thetext>Comment on attachment 250406
[PATCH] Proposed Fix

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

Nice improvements.

&gt; Source/WebCore/platform/graphics/OpenGLShims.cpp:74
&gt; -    String fullFunctionName(functionName);
&gt; -    fullFunctionName.append(&quot;ARB&quot;);
&gt; +    String fullFunctionName = makeString(functionName, &quot;ARB&quot;);
&gt;      target = getProcAddress(fullFunctionName.utf8().data());

This code is bogus. It converts the function name to a WTF::String, treating non-ASCII characters as Latin-1, then converts it back to a char*, treating non-ASCII characters as UTF-8. There’s also no reason to get WTF::String involved at all when we just want to concatenate 8-bit strings, but I suppose it’s OK to do so. I would probably just write this:

    string CString concatenate(const char* a, const char* b)
    {
        CString result;
        char* buffer;
        size_t sizeA = strlen(a);
        size_t sizeB = strlen(b);
        result.newUninitialized(sizeA + sizeB, buffer);
        memcpy(buffer, a, sizeA);
        memcpy(buffer + sizeA, b, sizeB);
        return result;
    }

And then I’d use it:

    target = getProcAddress(concatenate(functionName, &quot;ARB&quot;).data());

Or we could use WTF::String in a slightly unconventional way to avoid the extra work:

    target = getProcAddress(makeString(functionName, &quot;ARB&quot;).characters8());

Either way, I think it reads better as a one-liner without the fullFunctionName variable.

&gt; Source/WebCore/testing/MicroTaskTest.cpp:31
&gt; +        m_document-&gt;addConsoleMessage(MessageSource::JS, MessageLevel::Debug, makeString(&quot;MicroTask #&quot;, String::number(m_testNumber), &quot; has run.&quot;));

A real shame to use String::number here. StringBuilder’s appendNumber is better because it doesn’t allocate and then destroy a string. Too bad we don’t have a version that works as part of a makeString, but we don’t.

&gt; Source/WebCore/testing/MockContentFilterSettings.cpp:56
&gt;      static LazyNeverDestroyed&lt;String&gt; unblockRequestURL;
&gt;      static std::once_flag onceFlag;
&gt;      std::call_once(onceFlag, [] {
&gt; -        StringBuilder unblockRequestURLBuilder;
&gt; -        unblockRequestURLBuilder.append(ContentFilter::urlScheme());
&gt; -        unblockRequestURLBuilder.append(&quot;://&quot;);
&gt; -        unblockRequestURLBuilder.append(unblockURLHost());
&gt; -        unblockRequestURL.construct(unblockRequestURLBuilder.toString());
&gt; +        unblockRequestURL.construct(makeString(ContentFilter::urlScheme(), &quot;://&quot;, unblockURLHost()));
&gt;      });

This is overkill. LazyNeverDestroyed and std::call_once are only needed if we need to be thread-safe, and no way a String can be thread safe, so I am pretty sure it should be a one-liner:

    static NeverDestroyed&lt;String&gt; unblockRequestURL = makeString(ContentFilter::urlScheme(), &quot;://&quot;, unblockURLHost());</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1086900</commentid>
    <comment_count>5</comment_count>
      <attachid>251188</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2015-04-20 14:21:06 -0700</bug_when>
    <thetext>Created attachment 251188
[PATCH] For Landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1086901</commentid>
    <comment_count>6</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2015-04-20 14:23:25 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; Comment on attachment 250406 [details]
&gt; [PATCH] Proposed Fix
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=250406&amp;action=review
&gt; 
&gt; Nice improvements.
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/OpenGLShims.cpp:74
&gt; &gt; -    String fullFunctionName(functionName);
&gt; &gt; -    fullFunctionName.append(&quot;ARB&quot;);
&gt; &gt; +    String fullFunctionName = makeString(functionName, &quot;ARB&quot;);
&gt; &gt;      target = getProcAddress(fullFunctionName.utf8().data());
&gt; 
&gt; This code is bogus. It converts the function name to a WTF::String, treating
&gt; non-ASCII characters as Latin-1, then converts it back to a char*, treating
&gt; non-ASCII characters as UTF-8. There’s also no reason to get WTF::String
&gt; involved at all when we just want to concatenate 8-bit strings, but I
&gt; suppose it’s OK to do so. I would probably just write this:
&gt; 
&gt;     string CString concatenate(const char* a, const char* b)
&gt;     {
&gt;         CString result;
&gt;         char* buffer;
&gt;         size_t sizeA = strlen(a);
&gt;         size_t sizeB = strlen(b);
&gt;         result.newUninitialized(sizeA + sizeB, buffer);
&gt;         memcpy(buffer, a, sizeA);
&gt;         memcpy(buffer + sizeA, b, sizeB);
&gt;         return result;
&gt;     }
&gt; 
&gt; And then I’d use it:
&gt; 
&gt;     target = getProcAddress(concatenate(functionName, &quot;ARB&quot;).data());
&gt; 
&gt; Or we could use WTF::String in a slightly unconventional way to avoid the
&gt; extra work:
&gt; 
&gt;     target = getProcAddress(makeString(functionName, &quot;ARB&quot;).characters8());
&gt; 
&gt; Either way, I think it reads better as a one-liner without the
&gt; fullFunctionName variable.

I agree. Also, when you actually read the code, it looks like there is a bug, that the reformatting makes obvious:
&lt;https://webkit.org/b/143964&gt; OpenGLShims appears to have a dead store if GLES2


&gt; &gt; Source/WebCore/testing/MockContentFilterSettings.cpp:56
&gt; &gt;      static LazyNeverDestroyed&lt;String&gt; unblockRequestURL;
&gt; &gt;      static std::once_flag onceFlag;
&gt; &gt;      std::call_once(onceFlag, [] {
&gt; &gt; -        StringBuilder unblockRequestURLBuilder;
&gt; &gt; -        unblockRequestURLBuilder.append(ContentFilter::urlScheme());
&gt; &gt; -        unblockRequestURLBuilder.append(&quot;://&quot;);
&gt; &gt; -        unblockRequestURLBuilder.append(unblockURLHost());
&gt; &gt; -        unblockRequestURL.construct(unblockRequestURLBuilder.toString());
&gt; &gt; +        unblockRequestURL.construct(makeString(ContentFilter::urlScheme(), &quot;://&quot;, unblockURLHost()));
&gt; &gt;      });
&gt; 
&gt; This is overkill. LazyNeverDestroyed and std::call_once are only needed if
&gt; we need to be thread-safe, and no way a String can be thread safe, so I am
&gt; pretty sure it should be a one-liner:
&gt; 
&gt;     static NeverDestroyed&lt;String&gt; unblockRequestURL =
&gt; makeString(ContentFilter::urlScheme(), &quot;://&quot;, unblockURLHost());

Done.

Also removed a few now unnecessary StringBuilder includes. Letting commit-queue land so it can test other platforms.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1086920</commentid>
    <comment_count>7</comment_count>
      <attachid>251188</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-04-20 15:08:38 -0700</bug_when>
    <thetext>Comment on attachment 251188
[PATCH] For Landing

Clearing flags on attachment: 251188

Committed r183031: &lt;http://trac.webkit.org/changeset/183031&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1086933</commentid>
    <comment_count>8</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2015-04-20 15:56:25 -0700</bug_when>
    <thetext>Heh, weird that cq landed this with red EWS. In any case, build fix:
http://trac.webkit.org/changeset/183032</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>250403</attachid>
            <date>2015-04-08 20:12:14 -0700</date>
            <delta_ts>2015-04-08 20:40:26 -0700</delta_ts>
            <desc>[PATCH] Proposed Fix</desc>
            <filename>stringbuilder.patch</filename>
            <type>text/plain</type>
            <size>35320</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDMwOGFjOWEuLmUzYzQ1MTggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDIyIEBACiAyMDE1LTA0LTA4ICBKb3NlcGggUGVjb3Jh
cm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CiAKKyAgICAgICAgQ2xlYW51cCBzb21lIFN0cmluZ0J1
aWxkZXIgdXNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNDM1NTAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIHJ1bnRpbWUvU3ltYm9sLmNwcDoKKyAgICAgICAgKEpTQzo6U3ltYm9sOjpkZXNjcmlwdGl2
ZVN0cmluZyk6CisgICAgICAgICogcnVudGltZS9UeXBlUHJvZmlsZXIuY3BwOgorICAgICAgICAo
SlNDOjpUeXBlUHJvZmlsZXI6OnR5cGVJbmZvcm1hdGlvbkZvckV4cHJlc3Npb25BdE9mZnNldCk6
CisgICAgICAgICogcnVudGltZS9UeXBlU2V0LmNwcDoKKyAgICAgICAgKEpTQzo6VHlwZVNldDo6
dG9KU09OU3RyaW5nKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlU2hhcGU6OnByb3BlcnR5SGFz
aCk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZVNoYXBlOjpzdHJpbmdSZXByZXNlbnRhdGlvbik6
CisgICAgICAgIChKU0M6OlN0cnVjdHVyZVNoYXBlOjp0b0pTT05TdHJpbmcpOgorCisyMDE1LTA0
LTA4ICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CisKICAgICAgICAgVXNl
IGpzTm9udHJpdmlhbFN0cmluZyBpbiBtb3JlIHBsYWNlcyBpZiB0aGUgc3RyaW5nIGlzIGd1YXJh
bnRlZWQgdG8gYmUgMiBvciBtb3JlIGNoYXJhY3RlcnMKICAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MzQzMAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2wuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU3ltYm9sLmNwcAppbmRleCAyOTRmNjdlLi42ZDc5ZDFjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2wuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1N5bWJvbC5jcHAKQEAgLTk1LDExICs5NSw3IEBAIHZvaWQgU3ltYm9s
OjpkZXN0cm95KEpTQ2VsbCogY2VsbCkKIAogU3RyaW5nIFN5bWJvbDo6ZGVzY3JpcHRpdmVTdHJp
bmcoKSBjb25zdAogewotICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKLSAgICBidWlsZGVyLmFw
cGVuZExpdGVyYWwoIlN5bWJvbCgiKTsKLSAgICBidWlsZGVyLmFwcGVuZChwcml2YXRlTmFtZSgp
LnVpZCgpKTsKLSAgICBidWlsZGVyLmFwcGVuZCgnKScpOwotICAgIHJldHVybiBidWlsZGVyLnRv
U3RyaW5nKCk7CisgICAgcmV0dXJuIG1ha2VTdHJpbmcoIlN5bWJvbCgiLCBTdHJpbmcocHJpdmF0
ZU5hbWUoKS51aWQoKSksICcpJyk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZVByb2ZpbGVyLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5cGVQcm9maWxlci5jcHAKaW5kZXggZTViYWM4Ni4u
OTY4NjE4OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZVBy
b2ZpbGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBlUHJvZmls
ZXIuY3BwCkBAIC04MSwyNyArODEsMjcgQEAgU3RyaW5nIFR5cGVQcm9maWxlcjo6dHlwZUluZm9y
bWF0aW9uRm9yRXhwcmVzc2lvbkF0T2Zmc2V0KFR5cGVQcm9maWxlclNlYXJjaERlc2MKIAogICAg
IFN0cmluZ0J1aWxkZXIganNvbjsgIAogCi0gICAganNvbi5hcHBlbmQoInsiKTsKKyAgICBqc29u
LmFwcGVuZCgneycpOwogCi0gICAganNvbi5hcHBlbmQoIlwiZ2xvYmFsVHlwZVNldFwiOiIpOwor
ICAgIGpzb24uYXBwZW5kTGl0ZXJhbCgiXCJnbG9iYWxUeXBlU2V0XCI6Iik7CiAgICAgaWYgKGxv
Y2F0aW9uLT5tX2dsb2JhbFR5cGVTZXQgJiYgbG9jYXRpb24tPm1fZ2xvYmFsVmFyaWFibGVJRCAh
PSBUeXBlUHJvZmlsZXJOb0dsb2JhbElERXhpc3RzKQogICAgICAgICBqc29uLmFwcGVuZChsb2Nh
dGlvbi0+bV9nbG9iYWxUeXBlU2V0LT50b0pTT05TdHJpbmcoKSk7CiAgICAgZWxzZQotICAgICAg
ICBqc29uLmFwcGVuZCgibnVsbCIpOwotICAgIGpzb24uYXBwZW5kKCIsIik7CisgICAgICAgIGpz
b24uYXBwZW5kTGl0ZXJhbCgibnVsbCIpOworICAgIGpzb24uYXBwZW5kKCcsJyk7CiAKLSAgICBq
c29uLmFwcGVuZCgiXCJpbnN0cnVjdGlvblR5cGVTZXRcIjoiKTsKKyAgICBqc29uLmFwcGVuZExp
dGVyYWwoIlwiaW5zdHJ1Y3Rpb25UeXBlU2V0XCI6Iik7CiAgICAganNvbi5hcHBlbmQobG9jYXRp
b24tPm1faW5zdHJ1Y3Rpb25UeXBlU2V0LT50b0pTT05TdHJpbmcoKSk7Ci0gICAganNvbi5hcHBl
bmQoIiwiKTsKKyAgICBqc29uLmFwcGVuZCgnLCcpOwogCi0gICAganNvbi5hcHBlbmQoIlwiaXNP
dmVyZmxvd25cIjoiKTsKKyAgICBqc29uLmFwcGVuZExpdGVyYWwoIlwiaXNPdmVyZmxvd25cIjoi
KTsKICAgICBpZiAobG9jYXRpb24tPm1faW5zdHJ1Y3Rpb25UeXBlU2V0LT5pc092ZXJmbG93bigp
IHx8IChsb2NhdGlvbi0+bV9nbG9iYWxUeXBlU2V0ICYmIGxvY2F0aW9uLT5tX2dsb2JhbFR5cGVT
ZXQtPmlzT3ZlcmZsb3duKCkpKQotICAgICAgICBqc29uLmFwcGVuZCgidHJ1ZSIpOworICAgICAg
ICBqc29uLmFwcGVuZExpdGVyYWwoInRydWUiKTsKICAgICBlbHNlCi0gICAgICAgIGpzb24uYXBw
ZW5kKCJmYWxzZSIpOworICAgICAgICBqc29uLmFwcGVuZExpdGVyYWwoImZhbHNlIik7CiAKIAot
ICAgIGpzb24uYXBwZW5kKCJ9Iik7CisgICAganNvbi5hcHBlbmQoJ30nKTsKICAgICAKICAgICBy
ZXR1cm4ganNvbi50b1N0cmluZygpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvVHlwZVNldC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9U
eXBlU2V0LmNwcAppbmRleCA4MTA3Mzg4Li4wZjU3ZWM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9UeXBlU2V0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9UeXBlU2V0LmNwcApAQCAtMjUwLDczICsyNTAsNzMgQEAgU3RyaW5nIFR5cGVT
ZXQ6OnRvSlNPTlN0cmluZygpIGNvbnN0CiAgICAgLy8gICAgIHN0cnVjdHVyZXM6ICdBcnJheTxK
U09OPFN0cnVjdHVyZVNoYXBlPj4nCiAKICAgICBTdHJpbmdCdWlsZGVyIGpzb247Ci0gICAganNv
bi5hcHBlbmQoInsiKTsKKyAgICBqc29uLmFwcGVuZCgneycpOwogCi0gICAganNvbi5hcHBlbmQo
IlwiZGlzcGxheVR5cGVOYW1lXCI6Iik7Ci0gICAganNvbi5hcHBlbmQoIlwiIik7CisgICAganNv
bi5hcHBlbmRMaXRlcmFsKCJcImRpc3BsYXlUeXBlTmFtZVwiOiIpOworICAgIGpzb24uYXBwZW5k
KCciJyk7CiAgICAganNvbi5hcHBlbmQoZGlzcGxheU5hbWUoKSk7Ci0gICAganNvbi5hcHBlbmQo
IlwiIik7Ci0gICAganNvbi5hcHBlbmQoIiwiKTsKKyAgICBqc29uLmFwcGVuZCgnIicpOworICAg
IGpzb24uYXBwZW5kKCcsJyk7CiAKLSAgICBqc29uLmFwcGVuZCgiXCJwcmltaXRpdmVUeXBlTmFt
ZXNcIjoiKTsKLSAgICBqc29uLmFwcGVuZCgiWyIpOworICAgIGpzb24uYXBwZW5kTGl0ZXJhbCgi
XCJwcmltaXRpdmVUeXBlTmFtZXNcIjoiKTsKKyAgICBqc29uLmFwcGVuZCgnWycpOwogICAgIGJv
b2wgaGFzQW5JdGVtID0gZmFsc2U7CiAgICAgaWYgKG1fc2VlblR5cGVzICYgVHlwZVVuZGVmaW5l
ZCkgewogICAgICAgICBoYXNBbkl0ZW0gPSB0cnVlOwotICAgICAgICBqc29uLmFwcGVuZCgiXCJV
bmRlZmluZWRcIiIpOworICAgICAgICBqc29uLmFwcGVuZExpdGVyYWwoIlwiVW5kZWZpbmVkXCIi
KTsKICAgICB9CiAgICAgaWYgKG1fc2VlblR5cGVzICYgVHlwZU51bGwpIHsKICAgICAgICAgaWYg
KGhhc0FuSXRlbSkKLSAgICAgICAgICAgIGpzb24uYXBwZW5kKCIsIik7CisgICAgICAgICAgICBq
c29uLmFwcGVuZCgnLCcpOwogICAgICAgICBoYXNBbkl0ZW0gPSB0cnVlOwotICAgICAgICBqc29u
LmFwcGVuZCgiXCJOdWxsXCIiKTsKKyAgICAgICAganNvbi5hcHBlbmRMaXRlcmFsKCJcIk51bGxc
IiIpOwogICAgIH0KICAgICBpZiAobV9zZWVuVHlwZXMgJiBUeXBlQm9vbGVhbikgewogICAgICAg
ICBpZiAoaGFzQW5JdGVtKQotICAgICAgICAgICAganNvbi5hcHBlbmQoIiwiKTsKKyAgICAgICAg
ICAgIGpzb24uYXBwZW5kKCcsJyk7CiAgICAgICAgIGhhc0FuSXRlbSA9IHRydWU7Ci0gICAgICAg
IGpzb24uYXBwZW5kKCJcIkJvb2xlYW5cIiIpOworICAgICAgICBqc29uLmFwcGVuZExpdGVyYWwo
IlwiQm9vbGVhblwiIik7CiAgICAgfQogICAgIGlmIChtX3NlZW5UeXBlcyAmIFR5cGVNYWNoaW5l
SW50KSB7CiAgICAgICAgIGlmIChoYXNBbkl0ZW0pCi0gICAgICAgICAgICBqc29uLmFwcGVuZCgi
LCIpOworICAgICAgICAgICAganNvbi5hcHBlbmQoJywnKTsKICAgICAgICAgaGFzQW5JdGVtID0g
dHJ1ZTsKLSAgICAgICAganNvbi5hcHBlbmQoIlwiSW50ZWdlclwiIik7CisgICAgICAgIGpzb24u
YXBwZW5kTGl0ZXJhbCgiXCJJbnRlZ2VyXCIiKTsKICAgICB9CiAgICAgaWYgKG1fc2VlblR5cGVz
ICYgVHlwZU51bWJlcikgewogICAgICAgICBpZiAoaGFzQW5JdGVtKQotICAgICAgICAgICAganNv
bi5hcHBlbmQoIiwiKTsKKyAgICAgICAgICAgIGpzb24uYXBwZW5kKCcsJyk7CiAgICAgICAgIGhh
c0FuSXRlbSA9IHRydWU7Ci0gICAgICAgIGpzb24uYXBwZW5kKCJcIk51bWJlclwiIik7CisgICAg
ICAgIGpzb24uYXBwZW5kTGl0ZXJhbCgiXCJOdW1iZXJcIiIpOwogICAgIH0KICAgICBpZiAobV9z
ZWVuVHlwZXMgJiBUeXBlU3RyaW5nKSB7CiAgICAgICAgIGlmIChoYXNBbkl0ZW0pCi0gICAgICAg
ICAgICBqc29uLmFwcGVuZCgiLCIpOworICAgICAgICAgICAganNvbi5hcHBlbmQoJywnKTsKICAg
ICAgICAgaGFzQW5JdGVtID0gdHJ1ZTsKLSAgICAgICAganNvbi5hcHBlbmQoIlwiU3RyaW5nXCIi
KTsKKyAgICAgICAganNvbi5hcHBlbmRMaXRlcmFsKCJcIlN0cmluZ1wiIik7CiAgICAgfQogICAg
IGlmIChtX3NlZW5UeXBlcyAmIFR5cGVTeW1ib2wpIHsKICAgICAgICAgaWYgKGhhc0FuSXRlbSkK
LSAgICAgICAgICAgIGpzb24uYXBwZW5kKCIsIik7CisgICAgICAgICAgICBqc29uLmFwcGVuZCgn
LCcpOwogICAgICAgICBoYXNBbkl0ZW0gPSB0cnVlOwotICAgICAgICBqc29uLmFwcGVuZCgiXCJT
eW1ib2xcIiIpOworICAgICAgICBqc29uLmFwcGVuZExpdGVyYWwoIlwiU3ltYm9sXCIiKTsKICAg
ICB9Ci0gICAganNvbi5hcHBlbmQoIl0iKTsKKyAgICBqc29uLmFwcGVuZCgnXScpOwogCi0gICAg
anNvbi5hcHBlbmQoIiwiKTsKKyAgICBqc29uLmFwcGVuZCgnLCcpOwogCi0gICAganNvbi5hcHBl
bmQoIlwic3RydWN0dXJlc1wiOiIpOwotICAgIGpzb24uYXBwZW5kKCJbIik7CisgICAganNvbi5h
cHBlbmRMaXRlcmFsKCJcInN0cnVjdHVyZXNcIjoiKTsKKyAgICBqc29uLmFwcGVuZCgnWycpOwog
ICAgIGhhc0FuSXRlbSA9IGZhbHNlOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9zdHJ1
Y3R1cmVIaXN0b3J5LnNpemUoKTsgaSsrKSB7CiAgICAgICAgIGlmIChoYXNBbkl0ZW0pCi0gICAg
ICAgICAgICBqc29uLmFwcGVuZCgiLCIpOworICAgICAgICAgICAganNvbi5hcHBlbmQoJywnKTsK
ICAgICAgICAgaGFzQW5JdGVtID0gdHJ1ZTsKICAgICAgICAganNvbi5hcHBlbmQobV9zdHJ1Y3R1
cmVIaXN0b3J5W2ldLT50b0pTT05TdHJpbmcoKSk7CiAgICAgfQotICAgIGpzb24uYXBwZW5kKCJd
Iik7CisgICAganNvbi5hcHBlbmQoJ10nKTsKIAotICAgIGpzb24uYXBwZW5kKCJ9Iik7CisgICAg
anNvbi5hcHBlbmQoJ30nKTsKICAgICByZXR1cm4ganNvbi50b1N0cmluZygpOwogfQogCkBAIC0z
NTksNyArMzU5LDcgQEAgU3RyaW5nIFN0cnVjdHVyZVNoYXBlOjpwcm9wZXJ0eUhhc2goKQogCiAg
ICAgaWYgKG1fcHJvdG8pIHsKICAgICAgICAgYnVpbGRlci5hcHBlbmQoJzonKTsKLSAgICAgICAg
YnVpbGRlci5hcHBlbmQoIl9fcHJvdG9fXyIpOworICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVy
YWwoIl9fcHJvdG9fXyIpOwogICAgICAgICBidWlsZGVyLmFwcGVuZChtX3Byb3RvLT5wcm9wZXJ0
eUhhc2goKSk7CiAgICAgfQogCkBAIC00MDksMTMgKzQwOSwxMyBAQCBTdHJpbmcgU3RydWN0dXJl
U2hhcGU6OnN0cmluZ1JlcHJlc2VudGF0aW9uKCkKICAgICAgICAgZm9yIChhdXRvIGl0ID0gY3Vy
U2hhcGUtPm1fZmllbGRzLmJlZ2luKCksIGVuZCA9IGN1clNoYXBlLT5tX2ZpZWxkcy5lbmQoKTsg
aXQgIT0gZW5kOyArK2l0KSB7CiAgICAgICAgICAgICBTdHJpbmcgcHJvcCgoKml0KS5nZXQoKSk7
CiAgICAgICAgICAgICByZXByZXNlbnRhdGlvbi5hcHBlbmQocHJvcCk7Ci0gICAgICAgICAgICBy
ZXByZXNlbnRhdGlvbi5hcHBlbmQoIiwgIik7CisgICAgICAgICAgICByZXByZXNlbnRhdGlvbi5h
cHBlbmRMaXRlcmFsKCIsICIpOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKGN1clNoYXBlLT5t
X3Byb3RvKSB7Ci0gICAgICAgICAgICBTdHJpbmcgcHJvdCA9IG1ha2VTdHJpbmcoIl9fcHJvdG9f
XyBbIiwgY3VyU2hhcGUtPm1fcHJvdG8tPm1fY29uc3RydWN0b3JOYW1lLCAnXScpOwotICAgICAg
ICAgICAgcmVwcmVzZW50YXRpb24uYXBwZW5kKHByb3QpOwotICAgICAgICAgICAgcmVwcmVzZW50
YXRpb24uYXBwZW5kKCIsICIpOworICAgICAgICAgICAgcmVwcmVzZW50YXRpb24uYXBwZW5kTGl0
ZXJhbCgiX19wcm90b19fIFsiKTsKKyAgICAgICAgICAgIHJlcHJlc2VudGF0aW9uLmFwcGVuZChj
dXJTaGFwZS0+bV9wcm90by0+bV9jb25zdHJ1Y3Rvck5hbWUpOworICAgICAgICAgICAgcmVwcmVz
ZW50YXRpb24uYXBwZW5kTGl0ZXJhbCgiXSwgIik7CiAgICAgICAgIH0KIAogICAgICAgICBjdXJT
aGFwZSA9IGN1clNoYXBlLT5tX3Byb3RvOwpAQCAtNDM4LDYwICs0MzgsNjAgQEAgU3RyaW5nIFN0
cnVjdHVyZVNoYXBlOjp0b0pTT05TdHJpbmcoKSBjb25zdAogICAgIC8vICAgICBwcm90bzogJ0pT
T048U3RydWN0dXJlU2hhcGU+IHwgbnVsbCcKIAogICAgIFN0cmluZ0J1aWxkZXIganNvbjsKLSAg
ICBqc29uLmFwcGVuZCgieyIpOworICAgIGpzb24uYXBwZW5kKCd7Jyk7CiAKLSAgICBqc29uLmFw
cGVuZCgiXCJjb25zdHJ1Y3Rvck5hbWVcIjoiKTsKLSAgICBqc29uLmFwcGVuZCgiXCIiKTsKKyAg
ICBqc29uLmFwcGVuZExpdGVyYWwoIlwiY29uc3RydWN0b3JOYW1lXCI6Iik7CisgICAganNvbi5h
cHBlbmQoJyInKTsKICAgICBqc29uLmFwcGVuZChtX2NvbnN0cnVjdG9yTmFtZSk7Ci0gICAganNv
bi5hcHBlbmQoIlwiIik7Ci0gICAganNvbi5hcHBlbmQoIiwiKTsKKyAgICBqc29uLmFwcGVuZCgn
IicpOworICAgIGpzb24uYXBwZW5kKCcsJyk7CiAKLSAgICBqc29uLmFwcGVuZCgiXCJpc0luRGlj
dGlvbmFyeU1vZGVcIjoiKTsKKyAgICBqc29uLmFwcGVuZExpdGVyYWwoIlwiaXNJbkRpY3Rpb25h
cnlNb2RlXCI6Iik7CiAgICAgaWYgKG1faXNJbkRpY3Rpb25hcnlNb2RlKQotICAgICAgICBqc29u
LmFwcGVuZCgidHJ1ZSIpOworICAgICAgICBqc29uLmFwcGVuZExpdGVyYWwoInRydWUiKTsKICAg
ICBlbHNlCi0gICAgICAgIGpzb24uYXBwZW5kKCJmYWxzZSIpOwotICAgIGpzb24uYXBwZW5kKCIs
Iik7CisgICAgICAgIGpzb24uYXBwZW5kTGl0ZXJhbCgiZmFsc2UiKTsKKyAgICBqc29uLmFwcGVu
ZCgnLCcpOwogCi0gICAganNvbi5hcHBlbmQoIlwiZmllbGRzXCI6Iik7Ci0gICAganNvbi5hcHBl
bmQoIlsiKTsKKyAgICBqc29uLmFwcGVuZExpdGVyYWwoIlwiZmllbGRzXCI6Iik7CisgICAganNv
bi5hcHBlbmQoJ1snKTsKICAgICBib29sIGhhc0FuSXRlbSA9IGZhbHNlOwogICAgIGZvciAoYXV0
byBpdCA9IG1fZmllbGRzLmJlZ2luKCksIGVuZCA9IG1fZmllbGRzLmVuZCgpOyBpdCAhPSBlbmQ7
ICsraXQpIHsKICAgICAgICAgaWYgKGhhc0FuSXRlbSkKLSAgICAgICAgICAgIGpzb24uYXBwZW5k
KCIsIik7CisgICAgICAgICAgICBqc29uLmFwcGVuZCgnLCcpOwogICAgICAgICBoYXNBbkl0ZW0g
PSB0cnVlOwogCiAgICAgICAgIFN0cmluZyBmaWVsZE5hbWUoKCppdCkuZ2V0KCkpOwotICAgICAg
ICBqc29uLmFwcGVuZCgiXCIiKTsKKyAgICAgICAganNvbi5hcHBlbmQoJyInKTsKICAgICAgICAg
anNvbi5hcHBlbmQoZmllbGROYW1lKTsKLSAgICAgICAganNvbi5hcHBlbmQoIlwiIik7CisgICAg
ICAgIGpzb24uYXBwZW5kKCciJyk7CiAgICAgfQotICAgIGpzb24uYXBwZW5kKCJdIik7Ci0gICAg
anNvbi5hcHBlbmQoIiwiKTsKKyAgICBqc29uLmFwcGVuZCgnXScpOworICAgIGpzb24uYXBwZW5k
KCcsJyk7CiAKLSAgICBqc29uLmFwcGVuZCgiXCJvcHRpb25hbEZpZWxkc1wiOiIpOwotICAgIGpz
b24uYXBwZW5kKCJbIik7CisgICAganNvbi5hcHBlbmRMaXRlcmFsKCJcIm9wdGlvbmFsRmllbGRz
XCI6Iik7CisgICAganNvbi5hcHBlbmQoJ1snKTsKICAgICBoYXNBbkl0ZW0gPSBmYWxzZTsKICAg
ICBmb3IgKGF1dG8gaXQgPSBtX29wdGlvbmFsRmllbGRzLmJlZ2luKCksIGVuZCA9IG1fb3B0aW9u
YWxGaWVsZHMuZW5kKCk7IGl0ICE9IGVuZDsgKytpdCkgewogICAgICAgICBpZiAoaGFzQW5JdGVt
KQotICAgICAgICAgICAganNvbi5hcHBlbmQoIiwiKTsKKyAgICAgICAgICAgIGpzb24uYXBwZW5k
KCcsJyk7CiAgICAgICAgIGhhc0FuSXRlbSA9IHRydWU7CiAKICAgICAgICAgU3RyaW5nIGZpZWxk
TmFtZSgoKml0KS5nZXQoKSk7Ci0gICAgICAgIGpzb24uYXBwZW5kKCJcIiIpOworICAgICAgICBq
c29uLmFwcGVuZCgnIicpOwogICAgICAgICBqc29uLmFwcGVuZChmaWVsZE5hbWUpOwotICAgICAg
ICBqc29uLmFwcGVuZCgiXCIiKTsKKyAgICAgICAganNvbi5hcHBlbmQoJyInKTsKICAgICB9Ci0g
ICAganNvbi5hcHBlbmQoIl0iKTsKLSAgICBqc29uLmFwcGVuZCgiLCIpOworICAgIGpzb24uYXBw
ZW5kKCddJyk7CisgICAganNvbi5hcHBlbmQoJywnKTsKIAotICAgIGpzb24uYXBwZW5kKCJcInBy
b3RvXCI6Iik7CisgICAganNvbi5hcHBlbmRMaXRlcmFsKCJcInByb3RvXCI6Iik7CiAgICAgaWYg
KG1fcHJvdG8pCiAgICAgICAgIGpzb24uYXBwZW5kKG1fcHJvdG8tPnRvSlNPTlN0cmluZygpKTsK
ICAgICBlbHNlCi0gICAgICAgIGpzb24uYXBwZW5kKCJudWxsIik7CisgICAgICAgIGpzb24uYXBw
ZW5kTGl0ZXJhbCgibnVsbCIpOwogCi0gICAganNvbi5hcHBlbmQoIn0iKTsKKyAgICBqc29uLmFw
cGVuZCgnfScpOwogCiAgICAgcmV0dXJuIGpzb24udG9TdHJpbmcoKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRl
eCBiNzM2MzlkLi4wMjAxNGI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDggQEAKKzIwMTUtMDQt
MDggIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KKworICAgICAgICBDbGVh
bnVwIHNvbWUgU3RyaW5nQnVpbGRlciB1c2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE0MzU1MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyAoT09QUyEpLgorCisgICAgICAgICogTW9k
dWxlcy9wbHVnaW5zL1lvdVR1YmVQbHVnaW5SZXBsYWNlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpZb3VUdWJlUGx1Z2luUmVwbGFjZW1lbnQ6OnlvdVR1YmVVUkwpOgorICAgICAgICAqIGNz
cy9DU1NBbmltYXRpb25UcmlnZ2VyU2Nyb2xsVmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q1NTQW5pbWF0aW9uVHJpZ2dlclNjcm9sbFZhbHVlOjpjdXN0b21DU1NUZXh0KToKKyAgICAgICAg
KiBjc3MvQ1NTQ2FudmFzVmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTQ2FudmFzVmFs
dWU6OmN1c3RvbUNTU1RleHQpOgorICAgICAgICAqIGh0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTENhbnZhc0VsZW1lbnQ6OmNyZWF0ZUltYWdlQnVmZmVy
KToKKyAgICAgICAgKiBwYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGOjpjYXB0aW9uc1dp
bmRvd0NTUyk6CisgICAgICAgIChXZWJDb3JlOjpDYXB0aW9uVXNlclByZWZlcmVuY2VzTWVkaWFB
Rjo6d2luZG93Um91bmRlZENvcm5lclJhZGl1c0NTUyk6CisgICAgICAgIChXZWJDb3JlOjpDYXB0
aW9uVXNlclByZWZlcmVuY2VzTWVkaWFBRjo6Y3NzUHJvcGVydHlXaXRoVGV4dEVkZ2VDb2xvcik6
CisgICAgICAgIChXZWJDb3JlOjpDYXB0aW9uVXNlclByZWZlcmVuY2VzTWVkaWFBRjo6Y29sb3JQ
cm9wZXJ0eUNTUyk6CisgICAgICAgIChXZWJDb3JlOjpDYXB0aW9uVXNlclByZWZlcmVuY2VzTWVk
aWFBRjo6Y2FwdGlvbnNEZWZhdWx0Rm9udENTUyk6CisgICAgICAgIChXZWJDb3JlOjpDYXB0aW9u
VXNlclByZWZlcmVuY2VzTWVkaWFBRjo6Y2FwdGlvbnNTdHlsZVNoZWV0T3ZlcnJpZGUpOgorICAg
ICAgICAqIHBhZ2UvRXZlbnRTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRTb3Vy
Y2U6OmRpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgICogcGFnZS9QYWdlU2VyaWFsaXplci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlU2VyaWFsaXplcjo6c2VyaWFsaXplQ1NTU3R5bGVT
aGVldCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvT3BlbkdMU2hpbXMuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6bG9va3VwT3BlbkdMRnVuY3Rpb25BZGRyZXNzKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRi5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGOjpwcm9jZXNz
Q3VlQXR0cmlidXRlcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBo
aWNzQ29udGV4dDNET3BlbkdMQ29tbW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmdlbmVyYXRl
SGFzaGVkTmFtZSk6CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9EYXRlVGltZUZvcm1hdC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpEYXRlVGltZUZvcm1hdDo6cXVvdGVBbmRBcHBlbmRMaXRlcmFs
KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQ29tcG9zaXRvcjo6bG9nTGF5ZXJJbmZvKToKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyVHJlZUFzVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjp3
cml0ZVJlbmRlclJlZ2lvbkxpc3QpOgorICAgICAgICAqIHRlc3RpbmcvTWljcm9UYXNrVGVzdC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpNaWNyb1Rhc2tUZXN0OjpydW4pOgorICAgICAgICAqIHRl
c3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpN
b2NrQ29udGVudEZpbHRlclNldHRpbmdzOjp1bmJsb2NrUmVxdWVzdFVSTCk6CisKIDIwMTUtMDQt
MDggIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgogCiAgICAgICAgIEV4cG9zZSB0
aGUgIlNoYXJlIiBtZW51IGZvciBsaW5rcywgaW1hZ2VzLCBhbmQgbWVkaWEuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMvWW91VHViZVBsdWdpblJlcGxhY2VtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lucy9Zb3VUdWJlUGx1Z2luUmVwbGFj
ZW1lbnQuY3BwCmluZGV4IDA4ZWNjNWQuLmEwNDI5MzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvcGx1Z2lucy9Zb3VUdWJlUGx1Z2luUmVwbGFjZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lucy9Zb3VUdWJlUGx1Z2luUmVwbGFjZW1lbnQuY3Bw
CkBAIC0zMjYsMTMgKzMyNiwxMyBAQCBTdHJpbmcgWW91VHViZVBsdWdpblJlcGxhY2VtZW50Ojp5
b3VUdWJlVVJMKGNvbnN0IFN0cmluZyYgc3JjU3RyaW5nKQogICAgIC8vIFNlZTogPHJkYXI6Ly9w
cm9ibGVtLzExNTM1MTU1PgogICAgIFN0cmluZ0J1aWxkZXIgZmluYWxVUkw7CiAgICAgaWYgKGlz
WW91VHViZVNob3J0ZW5lZFVSTCkKLSAgICAgICAgZmluYWxVUkwuYXBwZW5kKCJodHRwOi8vd3d3
LnlvdXR1YmUuY29tIik7CisgICAgICAgIGZpbmFsVVJMLmFwcGVuZExpdGVyYWwoImh0dHA6Ly93
d3cueW91dHViZS5jb20iKTsKICAgICBlbHNlCiAgICAgICAgIGZpbmFsVVJMLmFwcGVuZChzcmNV
UkxQcmVmaXgpOwogICAgIGZpbmFsVVJMLmFwcGVuZExpdGVyYWwoIi9lbWJlZC8iKTsKICAgICBm
aW5hbFVSTC5hcHBlbmQodmlkZW9JRCk7CiAgICAgaWYgKCFxdWVyeS5pc0VtcHR5KCkpIHsKLSAg
ICAgICAgZmluYWxVUkwuYXBwZW5kTGl0ZXJhbCgiPyIpOworICAgICAgICBmaW5hbFVSTC5hcHBl
bmQoJz8nKTsKICAgICAgICAgZmluYWxVUkwuYXBwZW5kKHF1ZXJ5KTsKICAgICB9CiAgICAgcmV0
dXJuIGZpbmFsVVJMLnRvU3RyaW5nKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTQW5pbWF0aW9uVHJpZ2dlclNjcm9sbFZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NBbmltYXRpb25UcmlnZ2VyU2Nyb2xsVmFsdWUuY3BwCmluZGV4IDdhZGRmOGEuLmFhNmY0NjYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NBbmltYXRpb25UcmlnZ2VyU2Nyb2xs
VmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NBbmltYXRpb25UcmlnZ2VyU2Ny
b2xsVmFsdWUuY3BwCkBAIC0zNSwxMCArMzUsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogU3Ry
aW5nIENTU0FuaW1hdGlvblRyaWdnZXJTY3JvbGxWYWx1ZTo6Y3VzdG9tQ1NTVGV4dCgpIGNvbnN0
CiB7CiAgICAgU3RyaW5nQnVpbGRlciByZXN1bHQ7Ci0gICAgcmVzdWx0LmFwcGVuZCgiY29udGFp
bmVyLXNjcm9sbCgiKTsKKyAgICByZXN1bHQuYXBwZW5kTGl0ZXJhbCgiY29udGFpbmVyLXNjcm9s
bCgiKTsKICAgICByZXN1bHQuYXBwZW5kKG1fc3RhcnRWYWx1ZS0+Y3NzVGV4dCgpKTsKICAgICBp
ZiAobV9lbmRWYWx1ZSkgewotICAgICAgICByZXN1bHQuYXBwZW5kKCIsICIpOworICAgICAgICBy
ZXN1bHQuYXBwZW5kTGl0ZXJhbCgiLCAiKTsKICAgICAgICAgcmVzdWx0LmFwcGVuZChtX2VuZFZh
bHVlLT5jc3NUZXh0KCkpOwogICAgIH0KICAgICByZXN1bHQuYXBwZW5kKCcpJyk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ2FudmFzVmFsdWUuY3BwIGIvU291cmNlL1dlYkNv
cmUvY3NzL0NTU0NhbnZhc1ZhbHVlLmNwcAppbmRleCA0MzExMDcxLi5hNzQzOTIyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ2FudmFzVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NDYW52YXNWYWx1ZS5jcHAKQEAgLTQwLDExICs0MCw3IEBAIENTU0NhbnZh
c1ZhbHVlOjp+Q1NTQ2FudmFzVmFsdWUoKQogCiBTdHJpbmcgQ1NTQ2FudmFzVmFsdWU6OmN1c3Rv
bUNTU1RleHQoKSBjb25zdAogewotICAgIFN0cmluZ0J1aWxkZXIgcmVzdWx0OwotICAgIHJlc3Vs
dC5hcHBlbmRMaXRlcmFsKCItd2Via2l0LWNhbnZhcygiKTsKLSAgICByZXN1bHQuYXBwZW5kKG1f
bmFtZSk7Ci0gICAgcmVzdWx0LmFwcGVuZCgnKScpOwotICAgIHJldHVybiByZXN1bHQudG9TdHJp
bmcoKTsKKyAgICByZXR1cm4gbWFrZVN0cmluZygiLXdlYmtpdC1jYW52YXMoIiwgbV9uYW1lLCAn
KScpOwogfQogCiB2b2lkIENTU0NhbnZhc1ZhbHVlOjpjYW52YXNDaGFuZ2VkKEhUTUxDYW52YXNF
bGVtZW50JiwgY29uc3QgRmxvYXRSZWN0JiBjaGFuZ2VkUmVjdCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MQ2FudmFzRWxlbWVudC5jcHAKaW5kZXggZWVkNzBhYS4uZTk0NjcyZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHAKQEAgLTU1OCw5ICs1NTgsOSBAQCB2
b2lkIEhUTUxDYW52YXNFbGVtZW50OjpjcmVhdGVJbWFnZUJ1ZmZlcigpIGNvbnN0CiAKICAgICBp
ZiAoZGV2aWNlU2l6ZS53aWR0aCgpICogZGV2aWNlU2l6ZS5oZWlnaHQoKSA+IE1heENhbnZhc0Fy
ZWEpIHsKICAgICAgICAgU3RyaW5nQnVpbGRlciBzdHJpbmdCdWlsZGVyOwotICAgICAgICBzdHJp
bmdCdWlsZGVyLmFwcGVuZCgiQ2FudmFzIGFyZWEgZXhjZWVkcyB0aGUgbWF4aW11bSBsaW1pdCAo
d2lkdGggKiBoZWlnaHQgPiAiKTsKKyAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmRMaXRlcmFs
KCJDYW52YXMgYXJlYSBleGNlZWRzIHRoZSBtYXhpbXVtIGxpbWl0ICh3aWR0aCAqIGhlaWdodCA+
ICIpOwogICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZE51bWJlcihNYXhDYW52YXNBcmVhKTsK
LSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIikuIik7CisgICAgICAgIHN0cmluZ0J1aWxk
ZXIuYXBwZW5kTGl0ZXJhbCgiKS4iKTsKICAgICAgICAgZG9jdW1lbnQoKS5hZGRDb25zb2xlTWVz
c2FnZShNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZUxldmVsOjpXYXJuaW5nLCBzdHJpbmdCdWls
ZGVyLnRvU3RyaW5nKCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzTWVkaWFBRi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGLmNwcAppbmRleCBm
MjcyNTZmLi41YjE1MzVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRpb25V
c2VyUHJlZmVyZW5jZXNNZWRpYUFGLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRp
b25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGLmNwcApAQCAtMjM0LDEyICsyMzQsNyBAQCBTdHJpbmcg
Q2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlhQUY6OmNhcHRpb25zV2luZG93Q1NTKCkgY29uc3QK
ICAgICBpZiAoIW9wYWNpdHkpCiAgICAgICAgIHJldHVybiB3aW5kb3dTdHlsZTsKIAotICAgIFN0
cmluZ0J1aWxkZXIgYnVpbGRlcjsKLSAgICBidWlsZGVyLmFwcGVuZCh3aW5kb3dTdHlsZSk7Ci0g
ICAgYnVpbGRlci5hcHBlbmQoZ2V0UHJvcGVydHlOYW1lU3RyaW5nKENTU1Byb3BlcnR5UGFkZGlu
ZykpOwotICAgIGJ1aWxkZXIuYXBwZW5kKCI6IC40ZW0gIWltcG9ydGFudDsiKTsKLQotICAgIHJl
dHVybiBidWlsZGVyLnRvU3RyaW5nKCk7CisgICAgcmV0dXJuIG1ha2VTdHJpbmcod2luZG93U3R5
bGUsIGdldFByb3BlcnR5TmFtZVN0cmluZyhDU1NQcm9wZXJ0eVBhZGRpbmcpLCAiOiAuNGVtICFp
bXBvcnRhbnQ7Iik7CiB9CiAKIFN0cmluZyBDYXB0aW9uVXNlclByZWZlcmVuY2VzTWVkaWFBRjo6
Y2FwdGlvbnNCYWNrZ3JvdW5kQ1NTKCkgY29uc3QKQEAgLTMwMCw3ICsyOTUsNyBAQCBTdHJpbmcg
Q2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlhQUY6OndpbmRvd1JvdW5kZWRDb3JuZXJSYWRpdXND
U1MoKSBjb25zdAogICAgIGJ1aWxkZXIuYXBwZW5kKGdldFByb3BlcnR5TmFtZVN0cmluZyhDU1NQ
cm9wZXJ0eUJvcmRlclJhZGl1cykpOwogICAgIGJ1aWxkZXIuYXBwZW5kKFN0cmluZzo6Zm9ybWF0
KCI6JS4wMmZweCIsIHJhZGl1cykpOwogICAgIGlmIChiZWhhdmlvciA9PSBrTUFDYXB0aW9uQXBw
ZWFyYW5jZUJlaGF2aW9yVXNlVmFsdWUpCi0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKCIgIWltcG9y
dGFudCIpOworICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIiAhaW1wb3J0YW50Iik7CiAg
ICAgYnVpbGRlci5hcHBlbmQoJzsnKTsKIAogICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7
CkBAIC0zMjcsNyArMzIyLDcgQEAgU3RyaW5nIENhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFG
Ojpjc3NQcm9wZXJ0eVdpdGhUZXh0RWRnZUNvbG9yKENTU1Byb3BlcnR5SUQKICAgICBidWlsZGVy
LmFwcGVuZCgnICcpOwogICAgIGJ1aWxkZXIuYXBwZW5kKGNhcHRpb25zRWRnZUNvbG9yRm9yVGV4
dENvbG9yKHRleHRDb2xvcikuc2VyaWFsaXplZCgpKTsKICAgICBpZiAoaW1wb3J0YW50KQotICAg
ICAgICBidWlsZGVyLmFwcGVuZCgiICFpbXBvcnRhbnQiKTsKKyAgICAgICAgYnVpbGRlci5hcHBl
bmRMaXRlcmFsKCIgIWltcG9ydGFudCIpOwogICAgIGJ1aWxkZXIuYXBwZW5kKCc7Jyk7CiAgICAg
CiAgICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKQEAgLTM0MSw3ICszMzYsNyBAQCBTdHJp
bmcgQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlhQUY6OmNvbG9yUHJvcGVydHlDU1MoQ1NTUHJv
cGVydHlJRCBpZCwgY29uc3QgQwogICAgIGJ1aWxkZXIuYXBwZW5kKCc6Jyk7CiAgICAgYnVpbGRl
ci5hcHBlbmQoY29sb3Iuc2VyaWFsaXplZCgpKTsKICAgICBpZiAoaW1wb3J0YW50KQotICAgICAg
ICBidWlsZGVyLmFwcGVuZCgiICFpbXBvcnRhbnQiKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmRM
aXRlcmFsKCIgIWltcG9ydGFudCIpOwogICAgIGJ1aWxkZXIuYXBwZW5kKCc7Jyk7CiAgICAgCiAg
ICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKQEAgLTM5OSwxMSArMzk0LDExIEBAIFN0cmlu
ZyBDYXB0aW9uVXNlclByZWZlcmVuY2VzTWVkaWFBRjo6Y2FwdGlvbnNEZWZhdWx0Rm9udENTUygp
IGNvbnN0CiAgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwogICAgIAogICAgIGJ1aWxkZXIuYXBw
ZW5kKGdldFByb3BlcnR5TmFtZVN0cmluZyhDU1NQcm9wZXJ0eUZvbnRGYW1pbHkpKTsKLSAgICBi
dWlsZGVyLmFwcGVuZCgiOiBcIiIpOworICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiOiBcIiIp
OwogICAgIGJ1aWxkZXIuYXBwZW5kKHN0YXRpY19jYXN0PENGU3RyaW5nUmVmPihuYW1lLmdldCgp
KSk7CiAgICAgYnVpbGRlci5hcHBlbmQoJyInKTsKICAgICBpZiAoYmVoYXZpb3IgPT0ga01BQ2Fw
dGlvbkFwcGVhcmFuY2VCZWhhdmlvclVzZVZhbHVlKQotICAgICAgICBidWlsZGVyLmFwcGVuZCgi
ICFpbXBvcnRhbnQiKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgIWltcG9ydGFu
dCIpOwogICAgIGJ1aWxkZXIuYXBwZW5kKCc7Jyk7CiAgICAgCiAgICAgcmV0dXJuIGJ1aWxkZXIu
dG9TdHJpbmcoKTsKQEAgLTQ5MCw3ICs0ODUsNyBAQCBTdHJpbmcgQ2FwdGlvblVzZXJQcmVmZXJl
bmNlc01lZGlhQUY6OmNhcHRpb25zU3R5bGVTaGVldE92ZXJyaWRlKCkgY29uc3QKICAgICBTdHJp
bmcgZm9udE5hbWUgPSBjYXB0aW9uc0RlZmF1bHRGb250Q1NTKCk7CiAgICAgU3RyaW5nIGJhY2tn
cm91bmQgPSBjYXB0aW9uc0JhY2tncm91bmRDU1MoKTsKICAgICBpZiAoIWJhY2tncm91bmQuaXNF
bXB0eSgpIHx8ICFjYXB0aW9uc0NvbG9yLmlzRW1wdHkoKSB8fCAhZWRnZVN0eWxlLmlzRW1wdHko
KSB8fCAhZm9udE5hbWUuaXNFbXB0eSgpKSB7Ci0gICAgICAgIGNhcHRpb25zT3ZlcnJpZGVTdHls
ZVNoZWV0LmFwcGVuZCgiIHZpZGVvOjoiKTsKKyAgICAgICAgY2FwdGlvbnNPdmVycmlkZVN0eWxl
U2hlZXQuYXBwZW5kTGl0ZXJhbCgiIHZpZGVvOjoiKTsKICAgICAgICAgY2FwdGlvbnNPdmVycmlk
ZVN0eWxlU2hlZXQuYXBwZW5kKFRleHRUcmFja0N1ZTo6Y3VlU2hhZG93UHNldWRvSWQoKSk7CiAg
ICAgICAgIGNhcHRpb25zT3ZlcnJpZGVTdHlsZVNoZWV0LmFwcGVuZCgneycpOwogICAgICAgICAK
QEAgLTUwOSw3ICs1MDQsNyBAQCBTdHJpbmcgQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlhQUY6
OmNhcHRpb25zU3R5bGVTaGVldE92ZXJyaWRlKCkgY29uc3QKICAgICBTdHJpbmcgd2luZG93Q29s
b3IgPSBjYXB0aW9uc1dpbmRvd0NTUygpOwogICAgIFN0cmluZyB3aW5kb3dDb3JuZXJSYWRpdXMg
PSB3aW5kb3dSb3VuZGVkQ29ybmVyUmFkaXVzQ1NTKCk7CiAgICAgaWYgKCF3aW5kb3dDb2xvci5p
c0VtcHR5KCkgfHwgIXdpbmRvd0Nvcm5lclJhZGl1cy5pc0VtcHR5KCkpIHsKLSAgICAgICAgY2Fw
dGlvbnNPdmVycmlkZVN0eWxlU2hlZXQuYXBwZW5kKCIgdmlkZW86OiIpOworICAgICAgICBjYXB0
aW9uc092ZXJyaWRlU3R5bGVTaGVldC5hcHBlbmRMaXRlcmFsKCIgdmlkZW86OiIpOwogICAgICAg
ICBjYXB0aW9uc092ZXJyaWRlU3R5bGVTaGVldC5hcHBlbmQoVlRUQ3VlOjpjdWVCYWNrZHJvcFNo
YWRvd1BzZXVkb0lkKCkpOwogICAgICAgICBjYXB0aW9uc092ZXJyaWRlU3R5bGVTaGVldC5hcHBl
bmQoJ3snKTsKICAgICAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50
U291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRTb3VyY2UuY3BwCmluZGV4IDQz
MmIyMzYuLmJiZGRlZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRTb3Vy
Y2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRTb3VyY2UuY3BwCkBAIC0yMjMs
MjIgKzIyMywxNiBAQCB2b2lkIEV2ZW50U291cmNlOjpkaWRSZWNlaXZlUmVzcG9uc2UodW5zaWdu
ZWQgbG9uZywgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcAogICAgICAgICAvLyBJZiB3ZSBo
YXZlIGEgY2hhcnNldCwgdGhlIG9ubHkgYWxsb3dlZCB2YWx1ZSBpcyBVVEYtOCAoY2FzZS1pbnNl
bnNpdGl2ZSkuCiAgICAgICAgIHJlc3BvbnNlSXNWYWxpZCA9IGNoYXJzZXQuaXNFbXB0eSgpIHx8
IGVxdWFsSWdub3JpbmdDYXNlKGNoYXJzZXQsICJVVEYtOCIpOwogICAgICAgICBpZiAoIXJlc3Bv
bnNlSXNWYWxpZCkgewotICAgICAgICAgICAgU3RyaW5nQnVpbGRlciBtZXNzYWdlOwotICAgICAg
ICAgICAgbWVzc2FnZS5hcHBlbmRMaXRlcmFsKCJFdmVudFNvdXJjZSdzIHJlc3BvbnNlIGhhcyBh
IGNoYXJzZXQgKFwiIik7Ci0gICAgICAgICAgICBtZXNzYWdlLmFwcGVuZChjaGFyc2V0KTsKLSAg
ICAgICAgICAgIG1lc3NhZ2UuYXBwZW5kTGl0ZXJhbCgiXCIpIHRoYXQgaXMgbm90IFVURi04LiBB
Ym9ydGluZyB0aGUgY29ubmVjdGlvbi4iKTsKKyAgICAgICAgICAgIFN0cmluZyBtZXNzYWdlID0g
bWFrZVN0cmluZygiRXZlbnRTb3VyY2UncyByZXNwb25zZSBoYXMgYSBjaGFyc2V0IChcIiIsIGNo
YXJzZXQsICJcIikgdGhhdCBpcyBub3QgVVRGLTguIEFib3J0aW5nIHRoZSBjb25uZWN0aW9uLiIp
OwogICAgICAgICAgICAgLy8gRklYTUU6IFdlIGFyZSBtaXNzaW5nIHRoZSBzb3VyY2UgbGluZS4K
LSAgICAgICAgICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+YWRkQ29uc29sZU1lc3NhZ2Uo
TWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIG1lc3NhZ2UudG9TdHJpbmco
KSk7CisgICAgICAgICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmFkZENvbnNvbGVNZXNz
YWdlKE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBtZXNzYWdlKTsKICAg
ICAgICAgfQogICAgIH0gZWxzZSB7CiAgICAgICAgIC8vIFRvIGtlZXAgdGhlIHNpZ25hbC10by1u
b2lzZSByYXRpbyBsb3csIHdlIG9ubHkgbG9nIDIwMC1yZXNwb25zZSB3aXRoIGFuIGludmFsaWQg
TUlNRSB0eXBlLgogICAgICAgICBpZiAoc3RhdHVzQ29kZSA9PSAyMDAgJiYgIW1pbWVUeXBlSXNW
YWxpZCkgewotICAgICAgICAgICAgU3RyaW5nQnVpbGRlciBtZXNzYWdlOwotICAgICAgICAgICAg
bWVzc2FnZS5hcHBlbmRMaXRlcmFsKCJFdmVudFNvdXJjZSdzIHJlc3BvbnNlIGhhcyBhIE1JTUUg
dHlwZSAoXCIiKTsKLSAgICAgICAgICAgIG1lc3NhZ2UuYXBwZW5kKHJlc3BvbnNlLm1pbWVUeXBl
KCkpOwotICAgICAgICAgICAgbWVzc2FnZS5hcHBlbmRMaXRlcmFsKCJcIikgdGhhdCBpcyBub3Qg
XCJ0ZXh0L2V2ZW50LXN0cmVhbVwiLiBBYm9ydGluZyB0aGUgY29ubmVjdGlvbi4iKTsKKyAgICAg
ICAgICAgIFN0cmluZyBtZXNzYWdlID0gbWFrZVN0cmluZygiRXZlbnRTb3VyY2UncyByZXNwb25z
ZSBoYXMgYSBNSU1FIHR5cGUgKFwiIiwgcmVzcG9uc2UubWltZVR5cGUoKSwgIlwiKSB0aGF0IGlz
IG5vdCBcInRleHQvZXZlbnQtc3RyZWFtXCIuIEFib3J0aW5nIHRoZSBjb25uZWN0aW9uLiIpOwog
ICAgICAgICAgICAgLy8gRklYTUU6IFdlIGFyZSBtaXNzaW5nIHRoZSBzb3VyY2UgbGluZS4KLSAg
ICAgICAgICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+YWRkQ29uc29sZU1lc3NhZ2UoTWVz
c2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIG1lc3NhZ2UudG9TdHJpbmcoKSk7
CisgICAgICAgICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmFkZENvbnNvbGVNZXNzYWdl
KE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBtZXNzYWdlKTsKICAgICAg
ICAgfQogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFs
aXplci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VTZXJpYWxpemVyLmNwcAppbmRleCA0
ZjFkMWZjLi42ZTM4YjYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VTZXJp
YWxpemVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VTZXJpYWxpemVyLmNwcApA
QCAtMjYyLDcgKzI2Miw3IEBAIHZvaWQgUGFnZVNlcmlhbGl6ZXI6OnNlcmlhbGl6ZUNTU1N0eWxl
U2hlZXQoQ1NTU3R5bGVTaGVldCogc3R5bGVTaGVldCwgY29uc3QgVVJMCiAgICAgICAgIGlmICgh
aXRlbVRleHQuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICBjc3NUZXh0LmFwcGVuZChpdGVtVGV4
dCk7CiAgICAgICAgICAgICBpZiAoaSA8IHN0eWxlU2hlZXQtPmxlbmd0aCgpIC0gMSkKLSAgICAg
ICAgICAgICAgICBjc3NUZXh0LmFwcGVuZCgiXG5cbiIpOworICAgICAgICAgICAgICAgIGNzc1Rl
eHQuYXBwZW5kTGl0ZXJhbCgiXG5cbiIpOwogICAgICAgICB9CiAgICAgICAgIERvY3VtZW50KiBk
b2N1bWVudCA9IHN0eWxlU2hlZXQtPm93bmVyRG9jdW1lbnQoKTsKICAgICAgICAgLy8gU29tZSBy
dWxlcyBoYXZlIHJlc291cmNlcyBhc3NvY2lhdGVkIHdpdGggdGhlbSB0aGF0IHdlIG5lZWQgdG8g
cmV0cmlldmUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9P
cGVuR0xTaGltcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9PcGVuR0xT
aGltcy5jcHAKaW5kZXggOGVjMDMxZS4uZGQ4MDlhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvT3BlbkdMU2hpbXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL09wZW5HTFNoaW1zLmNwcApAQCAtNzAsMjUgKzcwLDIxIEBAIHN0
YXRpYyB2b2lkKiBsb29rdXBPcGVuR0xGdW5jdGlvbkFkZHJlc3MoY29uc3QgY2hhciogZnVuY3Rp
b25OYW1lLCBib29sKiBzdWNjZXNzCiAgICAgaWYgKHRhcmdldCkKICAgICAgICAgcmV0dXJuIHRh
cmdldDsKIAotICAgIFN0cmluZyBmdWxsRnVuY3Rpb25OYW1lKGZ1bmN0aW9uTmFtZSk7Ci0gICAg
ZnVsbEZ1bmN0aW9uTmFtZS5hcHBlbmQoIkFSQiIpOworICAgIFN0cmluZyBmdWxsRnVuY3Rpb25O
YW1lID0gbWFrZVN0cmluZyhmdW5jdGlvbk5hbWUsICJBUkIiKTsKICAgICB0YXJnZXQgPSBnZXRQ
cm9jQWRkcmVzcyhmdWxsRnVuY3Rpb25OYW1lLnV0ZjgoKS5kYXRhKCkpOwogICAgIGlmICh0YXJn
ZXQpCiAgICAgICAgIHJldHVybiB0YXJnZXQ7CiAKLSAgICBmdWxsRnVuY3Rpb25OYW1lID0gZnVu
Y3Rpb25OYW1lOwotICAgIGZ1bGxGdW5jdGlvbk5hbWUuYXBwZW5kKCJFWFQiKTsKKyAgICBmdWxs
RnVuY3Rpb25OYW1lID0gbWFrZVN0cmluZyhmdW5jdGlvbk5hbWUsICJFWFQiKTsKICAgICB0YXJn
ZXQgPSBnZXRQcm9jQWRkcmVzcyhmdWxsRnVuY3Rpb25OYW1lLnV0ZjgoKS5kYXRhKCkpOwogCiAj
aWYgZGVmaW5lZChHTF9FU19WRVJTSU9OXzJfMCkKLSAgICBmdWxsRnVuY3Rpb25OYW1lID0gZnVu
Y3Rpb25OYW1lOwotICAgIGZ1bGxGdW5jdGlvbk5hbWUuYXBwZW5kKCJBTkdMRSIpOworICAgIGZ1
bGxGdW5jdGlvbk5hbWUgPSBtYWtlU3RyaW5nKGZ1bmN0aW9uTmFtZSwgIkFOR0xFIik7CiAgICAg
dGFyZ2V0ID0gZ2V0UHJvY0FkZHJlc3MoZnVsbEZ1bmN0aW9uTmFtZS51dGY4KCkuZGF0YSgpKTsK
ICAgICBpZiAodGFyZ2V0KQogICAgICAgICByZXR1cm4gdGFyZ2V0OwogCi0gICAgZnVsbEZ1bmN0
aW9uTmFtZSA9IGZ1bmN0aW9uTmFtZTsKLSAgICBmdWxsRnVuY3Rpb25OYW1lLmFwcGVuZCgiQVBQ
TEUiKTsKKyAgICBmdWxsRnVuY3Rpb25OYW1lID0gbWFrZVN0cmluZyhmdW5jdGlvbk5hbWUsICJB
UFBMRSIpOwogICAgIHRhcmdldCA9IGdldFByb2NBZGRyZXNzKGZ1bGxGdW5jdGlvbk5hbWUudXRm
OCgpLmRhdGEoKSk7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0luYmFuZFRleHRUcmFja1ByaXZhdGVBVkYuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0luYmFuZFRleHRU
cmFja1ByaXZhdGVBVkYuY3BwCmluZGV4IDY1YTc0ZTYuLmI1MzI0MGQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9JbmJhbmRUZXh0VHJh
Y2tQcml2YXRlQVZGLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRi5jcHAKQEAgLTE1OCw3ICsxNTgs
NyBAQCB2b2lkIEluYmFuZFRleHRUcmFja1ByaXZhdGVBVkY6OnByb2Nlc3NDdWVBdHRyaWJ1dGVz
KENGQXR0cmlidXRlZFN0cmluZ1JlZiBhdHRyaQogICAgICAgICAgICAgICAgIGlmIChzdGF0aWNf
Y2FzdDxDRkJvb2xlYW5SZWY+KHZhbHVlKSAhPSBrQ0ZCb29sZWFuVHJ1ZSkKICAgICAgICAgICAg
ICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgICAgICAgICB0YWdTdGFydC5hcHBlbmQoIjxi
PiIpOworICAgICAgICAgICAgICAgIHRhZ1N0YXJ0LmFwcGVuZExpdGVyYWwoIjxiPiIpOwogICAg
ICAgICAgICAgICAgIHRhZ0VuZCA9ICI8L2I+IiArIHRhZ0VuZDsKICAgICAgICAgICAgICAgICBj
b250aW51ZTsKICAgICAgICAgICAgIH0KQEAgLTE2Nyw3ICsxNjcsNyBAQCB2b2lkIEluYmFuZFRl
eHRUcmFja1ByaXZhdGVBVkY6OnByb2Nlc3NDdWVBdHRyaWJ1dGVzKENGQXR0cmlidXRlZFN0cmlu
Z1JlZiBhdHRyaQogICAgICAgICAgICAgICAgIGlmIChzdGF0aWNfY2FzdDxDRkJvb2xlYW5SZWY+
KHZhbHVlKSAhPSBrQ0ZCb29sZWFuVHJ1ZSkKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7
CiAKLSAgICAgICAgICAgICAgICB0YWdTdGFydC5hcHBlbmQoIjxpPiIpOworICAgICAgICAgICAg
ICAgIHRhZ1N0YXJ0LmFwcGVuZExpdGVyYWwoIjxpPiIpOwogICAgICAgICAgICAgICAgIHRhZ0Vu
ZCA9ICI8L2k+IiArIHRhZ0VuZDsKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAg
ICAgIH0KQEAgLTE3Niw3ICsxNzYsNyBAQCB2b2lkIEluYmFuZFRleHRUcmFja1ByaXZhdGVBVkY6
OnByb2Nlc3NDdWVBdHRyaWJ1dGVzKENGQXR0cmlidXRlZFN0cmluZ1JlZiBhdHRyaQogICAgICAg
ICAgICAgICAgIGlmIChzdGF0aWNfY2FzdDxDRkJvb2xlYW5SZWY+KHZhbHVlKSAhPSBrQ0ZCb29s
ZWFuVHJ1ZSkKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgICAgICAg
ICB0YWdTdGFydC5hcHBlbmQoIjx1PiIpOworICAgICAgICAgICAgICAgIHRhZ1N0YXJ0LmFwcGVu
ZExpdGVyYWwoIjx1PiIpOwogICAgICAgICAgICAgICAgIHRhZ0VuZCA9ICI8L3U+IiArIHRhZ0Vu
ZDsKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQz
RE9wZW5HTENvbW1vbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVu
Z2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0xDb21tb24uY3BwCmluZGV4IDRkNzU4OGQuLmI0YjE1
Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9H
cmFwaGljc0NvbnRleHQzRE9wZW5HTENvbW1vbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMQ29tbW9uLmNwcApA
QCAtODUxLDcgKzg1MSw3IEBAIHN0YXRpYyBTdHJpbmcgZ2VuZXJhdGVIYXNoZWROYW1lKGNvbnN0
IFN0cmluZyYgbmFtZSkKICAgICAgICAgcmV0dXJuIG5hbWU7CiAgICAgdWludDY0X3QgbnVtYmVy
ID0gbmFtZUhhc2hGb3JTaGFkZXIobmFtZS51dGY4KCkuZGF0YSgpLCBuYW1lLmxlbmd0aCgpKTsK
ICAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7Ci0gICAgYnVpbGRlci5hcHBlbmQoIndlYmdsXyIp
OworICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgid2ViZ2xfIik7CiAgICAgYXBwZW5kVW5zaWdu
ZWQ2NEFzSGV4KG51bWJlciwgYnVpbGRlciwgTG93ZXJjYXNlKTsKICAgICByZXR1cm4gYnVpbGRl
ci50b1N0cmluZygpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4
dC9EYXRlVGltZUZvcm1hdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0RhdGVU
aW1lRm9ybWF0LmNwcAppbmRleCBiNzU5OTQ0Li5jNzVkMzNkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0RhdGVUaW1lRm9ybWF0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS90ZXh0L0RhdGVUaW1lRm9ybWF0LmNwcApAQCAtMjY1LDcgKzI2NSw3IEBA
IHZvaWQgRGF0ZVRpbWVGb3JtYXQ6OnF1b3RlQW5kQXBwZW5kTGl0ZXJhbChjb25zdCBTdHJpbmcm
IGxpdGVyYWwsIFN0cmluZ0J1aWxkZXImCiAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
bGl0ZXJhbC5sZW5ndGgoKTsgKytpKSB7CiAgICAgICAgIGlmIChsaXRlcmFsW2ldID09ICdcJycp
Ci0gICAgICAgICAgICBidWZmZXIuYXBwZW5kKCInJyIpOworICAgICAgICAgICAgYnVmZmVyLmFw
cGVuZExpdGVyYWwoIicnIik7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgU3RyaW5nIGVz
Y2FwZWQgPSBsaXRlcmFsLnN1YnN0cmluZyhpKTsKICAgICAgICAgICAgIGVzY2FwZWQucmVwbGFj
ZSgnXCcnLCAiJyciKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMYXllckNvbXBvc2l0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxh
eWVyQ29tcG9zaXRvci5jcHAKaW5kZXggYzcyMjg3ZS4uY2NiMzVkMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAKQEAgLTg0NSwx
NyArODQ1LDE3IEBAIHZvaWQgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpsb2dMYXllckluZm8oY29u
c3QgUmVuZGVyTGF5ZXImIGxheWVyLCBpbnQgZGVwdGgpCiAgICAgICAgIGFic29sdXRlQm91bmRz
LngoKS50b0Zsb2F0KCksIGFic29sdXRlQm91bmRzLnkoKS50b0Zsb2F0KCksIGFic29sdXRlQm91
bmRzLm1heFgoKS50b0Zsb2F0KCksIGFic29sdXRlQm91bmRzLm1heFkoKS50b0Zsb2F0KCksCiAg
ICAgICAgIGJhY2tpbmctPmJhY2tpbmdTdG9yZU1lbW9yeUVzdGltYXRlKCkgLyAxMDI0KSk7CiAg
ICAgCi0gICAgbG9nU3RyaW5nLmFwcGVuZCgiICgiKTsKKyAgICBsb2dTdHJpbmcuYXBwZW5kTGl0
ZXJhbCgiICgiKTsKICAgICBsb2dTdHJpbmcuYXBwZW5kKGxvZ1JlYXNvbnNGb3JDb21wb3NpdGlu
ZyhsYXllcikpOwotICAgIGxvZ1N0cmluZy5hcHBlbmQoIikgIik7CisgICAgbG9nU3RyaW5nLmFw
cGVuZExpdGVyYWwoIikgIik7CiAKICAgICBpZiAoYmFja2luZy0+Z3JhcGhpY3NMYXllcigpLT5j
b250ZW50c09wYXF1ZSgpIHx8IGJhY2tpbmctPnBhaW50c0ludG9Db21wb3NpdGVkQW5jZXN0b3Io
KSkgewogICAgICAgICBsb2dTdHJpbmcuYXBwZW5kKCdbJyk7CiAgICAgICAgIGlmIChiYWNraW5n
LT5ncmFwaGljc0xheWVyKCktPmNvbnRlbnRzT3BhcXVlKCkpCi0gICAgICAgICAgICBsb2dTdHJp
bmcuYXBwZW5kKCJvcGFxdWUiKTsKKyAgICAgICAgICAgIGxvZ1N0cmluZy5hcHBlbmRMaXRlcmFs
KCJvcGFxdWUiKTsKICAgICAgICAgaWYgKGJhY2tpbmctPnBhaW50c0ludG9Db21wb3NpdGVkQW5j
ZXN0b3IoKSkKLSAgICAgICAgICAgIGxvZ1N0cmluZy5hcHBlbmQoInBhaW50cyBpbnRvIGFuY2Vz
dG9yIik7Ci0gICAgICAgIGxvZ1N0cmluZy5hcHBlbmQoIl0gIik7CisgICAgICAgICAgICBsb2dT
dHJpbmcuYXBwZW5kTGl0ZXJhbCgicGFpbnRzIGludG8gYW5jZXN0b3IiKTsKKyAgICAgICAgbG9n
U3RyaW5nLmFwcGVuZExpdGVyYWwoIl0gIik7CiAgICAgfQogCiAgICAgbG9nU3RyaW5nLmFwcGVu
ZChsYXllci5uYW1lKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRyZWVBc1RleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRyZWVB
c1RleHQuY3BwCmluZGV4IDk4N2Q5NGMuLmUxYzg2NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUcmVlQXNUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVHJlZUFzVGV4dC5jcHAKQEAgLTY2Nyw5ICs2NjcsOSBAQCBzdGF0aWMg
dm9pZCB3cml0ZVJlbmRlclJlZ2lvbkxpc3QoY29uc3QgUmVuZGVyUmVnaW9uTGlzdCYgZmxvd1Ro
cmVhZFJlZ2lvbkxpc3QsCiAgICAgICAgICAgICBSZW5kZXJFbGVtZW50KiByZW5kZXJFbGVtZW50
Rm9yUmVnaW9uID0gaXNSZW5kZXJOYW1lZEZsb3dGcmFnbWVudCA/IHJlbmRlclJlZ2lvbi0+cGFy
ZW50KCkgOiByZW5kZXJSZWdpb247CiAgICAgICAgICAgICBpZiAocmVuZGVyRWxlbWVudEZvclJl
Z2lvbi0+aXNQc2V1ZG9FbGVtZW50KCkpIHsKICAgICAgICAgICAgICAgICBpZiAocmVuZGVyRWxl
bWVudEZvclJlZ2lvbi0+ZWxlbWVudCgpLT5pc0JlZm9yZVBzZXVkb0VsZW1lbnQoKSkKLSAgICAg
ICAgICAgICAgICAgICAgdGFnTmFtZS5hcHBlbmQoIjo6YmVmb3JlIik7CisgICAgICAgICAgICAg
ICAgICAgIHRhZ05hbWUuYXBwZW5kTGl0ZXJhbCgiOjpiZWZvcmUiKTsKICAgICAgICAgICAgICAg
ICBlbHNlIGlmIChyZW5kZXJFbGVtZW50Rm9yUmVnaW9uLT5lbGVtZW50KCktPmlzQWZ0ZXJQc2V1
ZG9FbGVtZW50KCkpCi0gICAgICAgICAgICAgICAgICAgIHRhZ05hbWUuYXBwZW5kKCI6OmFmdGVy
Iik7CisgICAgICAgICAgICAgICAgICAgIHRhZ05hbWUuYXBwZW5kTGl0ZXJhbCgiOjphZnRlciIp
OwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICB0cyA8PCAiIHsiIDw8IHRhZ05hbWUudG9T
dHJpbmcoKSA8PCAifSI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01pY3Jv
VGFza1Rlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9NaWNyb1Rhc2tUZXN0LmNwcApp
bmRleCBmMjIzZWZiLi41MGVlZmU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L01pY3JvVGFza1Rlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTWljcm9UYXNr
VGVzdC5jcHAKQEAgLTI3LDEyICsyNyw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdm9pZCBN
aWNyb1Rhc2tUZXN0OjpydW4oKQogewotICAgIFN0cmluZ0J1aWxkZXIgbWVzc2FnZTsKLSAgICBt
ZXNzYWdlLmFwcGVuZCgiTWljcm9UYXNrICMiKTsKLSAgICBtZXNzYWdlLmFwcGVuZChTdHJpbmc6
Om51bWJlcihtX3Rlc3ROdW1iZXIpKTsKLSAgICBtZXNzYWdlLmFwcGVuZCgiIGhhcyBydW4uIik7
CiAgICAgaWYgKG1fZG9jdW1lbnQpCi0gICAgICAgIG1fZG9jdW1lbnQtPmFkZENvbnNvbGVNZXNz
YWdlKE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlTGV2ZWw6OkRlYnVnLCBtZXNzYWdlLnRvU3Ry
aW5nKCkpOworICAgICAgICBtX2RvY3VtZW50LT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291
cmNlOjpKUywgTWVzc2FnZUxldmVsOjpEZWJ1ZywgbWFrZVN0cmluZygiTWljcm9UYXNrICMiLCBT
dHJpbmc6Om51bWJlcihtX3Rlc3ROdW1iZXIpLCAiIGhhcyBydW4uIikpOwogfQogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tD
b250ZW50RmlsdGVyU2V0dGluZ3MuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29u
dGVudEZpbHRlclNldHRpbmdzLmNwcAppbmRleCAwODY4NjJiLi43YmU0YjQ2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5jcHAK
QEAgLTUyLDExICs1Miw3IEBAIGNvbnN0IFN0cmluZyYgTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5n
czo6dW5ibG9ja1JlcXVlc3RVUkwoKSBjb25zdAogICAgIHN0YXRpYyBMYXp5TmV2ZXJEZXN0cm95
ZWQ8U3RyaW5nPiB1bmJsb2NrUmVxdWVzdFVSTDsKICAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcg
b25jZUZsYWc7CiAgICAgc3RkOjpjYWxsX29uY2Uob25jZUZsYWcsIFtdIHsKLSAgICAgICAgU3Ry
aW5nQnVpbGRlciB1bmJsb2NrUmVxdWVzdFVSTEJ1aWxkZXI7Ci0gICAgICAgIHVuYmxvY2tSZXF1
ZXN0VVJMQnVpbGRlci5hcHBlbmQoQ29udGVudEZpbHRlcjo6dXJsU2NoZW1lKCkpOwotICAgICAg
ICB1bmJsb2NrUmVxdWVzdFVSTEJ1aWxkZXIuYXBwZW5kKCI6Ly8iKTsKLSAgICAgICAgdW5ibG9j
a1JlcXVlc3RVUkxCdWlsZGVyLmFwcGVuZCh1bmJsb2NrVVJMSG9zdCgpKTsKLSAgICAgICAgdW5i
bG9ja1JlcXVlc3RVUkwuY29uc3RydWN0KHVuYmxvY2tSZXF1ZXN0VVJMQnVpbGRlci50b1N0cmlu
ZygpKTsKKyAgICAgICAgdW5ibG9ja1JlcXVlc3RVUkwuY29uc3RydWN0KG1ha2VTdHJpbmcoQ29u
dGVudEZpbHRlcjo6dXJsU2NoZW1lKCksICI6Ly8iLCB1bmJsb2NrVVJMSG9zdCgpKSk7CiAgICAg
fSk7CiAgICAgcmV0dXJuIHVuYmxvY2tSZXF1ZXN0VVJMOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDA5NzE0
MGMuLjgyOWRlZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMyBAQAorMjAxNS0wNC0wOCAgSm9z
ZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgorCisgICAgICAgIENsZWFudXAgc29t
ZSBTdHJpbmdCdWlsZGVyIHVzZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTQzNTUwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBEYXRhYmFzZVByb2Nlc3MvSW5kZXhlZERCL3NxbGl0ZS9TUUxpdGVJREJD
dXJzb3IuY3BwOgorICAgICAgICAoV2ViS2l0OjpidWlsZE9iamVjdFN0b3JlU3RhdGVtZW50KToK
KyAgICAgICAgKiBEYXRhYmFzZVByb2Nlc3MvSW5kZXhlZERCL3NxbGl0ZS9VbmlxdWVJREJEYXRh
YmFzZUJhY2tpbmdTdG9yZVNRTGl0ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OnYyUmVjb3Jkc1Rh
YmxlU2NoZW1hKToKKyAgICAgICAgKiBTaGFyZWQvRGF0YWJhc2VzL0luZGV4ZWREQi9JREJVdGls
aXRpZXMuY3BwOgorICAgICAgICAoV2ViS2l0Ojp1bmlxdWVEYXRhYmFzZUlkZW50aWZpZXIpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJVXNlclNjcmlwdC5jcHA6CisgICAgICAgIChBUEk6
OlVzZXJTY3JpcHQ6OmdlbmVyYXRlVW5pcXVlVVJMKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Bvb2wuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6ZGlkUmVj
ZWl2ZUludmFsaWRNZXNzYWdlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0RhdGFiYXNlcy9JbmRl
eGVkREIvV2ViSURCRmFjdG9yeUJhY2tlbmQuY3BwOgorICAgICAgICAoV2ViS2l0Ojpjb21iaW5l
ZFNlY3VyaXR5T3JpZ2luSWRlbnRpZmllcik6CisKIDIwMTUtMDQtMDggIEJyYWR5IEVpZHNvbiAg
PGJlaWRzb25AYXBwbGUuY29tPgogCiAgICAgICAgIEV4cG9zZSB0aGUgIlNoYXJlIiBtZW51IGZv
ciBsaW5rcywgaW1hZ2VzLCBhbmQgbWVkaWEuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9E
YXRhYmFzZVByb2Nlc3MvSW5kZXhlZERCL3NxbGl0ZS9TUUxpdGVJREJDdXJzb3IuY3BwIGIvU291
cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0luZGV4ZWREQi9zcWxpdGUvU1FMaXRlSURCQ3Vy
c29yLmNwcAppbmRleCBhYmVhMWRkLi5iZmY0ODUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9EYXRhYmFzZVByb2Nlc3MvSW5kZXhlZERCL3NxbGl0ZS9TUUxpdGVJREJDdXJzb3IuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9JbmRleGVkREIvc3FsaXRlL1NRTGl0
ZUlEQkN1cnNvci5jcHAKQEAgLTExNyw3ICsxMTcsNyBAQCBzdGF0aWMgU3RyaW5nIGJ1aWxkT2Jq
ZWN0U3RvcmVTdGF0ZW1lbnQoY29uc3QgSURCS2V5UmFuZ2VEYXRhJiBrZXlSYW5nZSwgSW5kZXhl
ZAogICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiIENBU1QoPyBBUyBURVhUKSBPUkRFUiBCWSBr
ZXkiKTsKIAogICAgIGlmIChjdXJzb3JEaXJlY3Rpb24gPT0gSW5kZXhlZERCOjpDdXJzb3JEaXJl
Y3Rpb246OlByZXYgfHwgY3Vyc29yRGlyZWN0aW9uID09IEluZGV4ZWREQjo6Q3Vyc29yRGlyZWN0
aW9uOjpQcmV2Tm9EdXBsaWNhdGUpCi0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKCIgREVTQyIpOwor
ICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIiBERVNDIik7CiAKICAgICBidWlsZGVyLmFw
cGVuZCgnOycpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3Mv
SW5kZXhlZERCL3NxbGl0ZS9VbmlxdWVJREJEYXRhYmFzZUJhY2tpbmdTdG9yZVNRTGl0ZS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvSW5kZXhlZERCL3NxbGl0ZS9VbmlxdWVJ
REJEYXRhYmFzZUJhY2tpbmdTdG9yZVNRTGl0ZS5jcHAKaW5kZXggZDg2MDc1OWMuLmFiOTg1Y2Eg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9JbmRleGVkREIvc3Fs
aXRlL1VuaXF1ZUlEQkRhdGFiYXNlQmFja2luZ1N0b3JlU1FMaXRlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvSW5kZXhlZERCL3NxbGl0ZS9VbmlxdWVJREJEYXRhYmFz
ZUJhY2tpbmdTdG9yZVNRTGl0ZS5jcHAKQEAgLTY0LDEwICs2NCw5IEBAIHN0YXRpYyBjb25zdCBT
dHJpbmcmIHYxUmVjb3Jkc1RhYmxlU2NoZW1hKCkKIHN0YXRpYyBjb25zdCBTdHJpbmcgdjJSZWNv
cmRzVGFibGVTY2hlbWEoY29uc3QgU3RyaW5nJiB0YWJsZU5hbWUpCiB7CiAgICAgU3RyaW5nQnVp
bGRlciBidWlsZGVyOwotICAgIGJ1aWxkZXIuYXBwZW5kKCJDUkVBVEUgVEFCTEUgIik7CisgICAg
YnVpbGRlci5hcHBlbmRMaXRlcmFsKCJDUkVBVEUgVEFCTEUgIik7CiAgICAgYnVpbGRlci5hcHBl
bmQodGFibGVOYW1lKTsKLSAgICBidWlsZGVyLmFwcGVuZCgiIChvYmplY3RTdG9yZUlEIElOVEVH
RVIgTk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJTCwga2V5IFRFWFQgQ09MTEFURSBJREJLRVkgTk9U
IE5VTEwgT04gQ09ORkxJQ1QgRkFJTCwgdmFsdWUgTk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJTCki
KTsKLQorICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiIChvYmplY3RTdG9yZUlEIElOVEVHRVIg
Tk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJTCwga2V5IFRFWFQgQ09MTEFURSBJREJLRVkgTk9UIE5V
TEwgT04gQ09ORkxJQ1QgRkFJTCwgdmFsdWUgTk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJTCkiKTsK
ICAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvRGF0YWJhc2VzL0luZGV4ZWREQi9JREJVdGlsaXRpZXMuY3BwIGIvU291
cmNlL1dlYktpdDIvU2hhcmVkL0RhdGFiYXNlcy9JbmRleGVkREIvSURCVXRpbGl0aWVzLmNwcApp
bmRleCBkNTZiNjQ2Li45ZWM3NmZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
RGF0YWJhc2VzL0luZGV4ZWREQi9JREJVdGlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9EYXRhYmFzZXMvSW5kZXhlZERCL0lEQlV0aWxpdGllcy5jcHAKQEAgLTQyLDE0ICs0
MiwxNCBAQCBTdHJpbmcgdW5pcXVlRGF0YWJhc2VJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYgZGF0
YWJhc2VOYW1lLCBjb25zdCBXZWJDb3JlOjpTZWN1cgogICAgIGlmIChvcmlnaW5TdHJpbmcgPT0g
Im51bGwiKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAgICAgc3RyaW5nQnVpbGRlci5hcHBl
bmQob3JpZ2luU3RyaW5nKTsKLSAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiXyIpOworICAgIHN0
cmluZ0J1aWxkZXIuYXBwZW5kKCdfJyk7CiAKICAgICBvcmlnaW5TdHJpbmcgPSBtYWluRnJhbWVP
cmlnaW4udG9TdHJpbmcoKTsKICAgICBpZiAob3JpZ2luU3RyaW5nID09ICJudWxsIikKICAgICAg
ICAgcmV0dXJuIFN0cmluZygpOwogICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKG9yaWdpblN0cmlu
Zyk7CiAKLSAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiXyIpOworICAgIHN0cmluZ0J1aWxkZXIu
YXBwZW5kKCdfJyk7CiAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoZGF0YWJhc2VOYW1lKTsKIAog
ICAgIHJldHVybiBzdHJpbmdCdWlsZGVyLnRvU3RyaW5nKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSVVzZXJTY3JpcHQuY3BwIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9BUElVc2VyU2NyaXB0LmNwcAppbmRleCBjNjg5NGM1Li5iNTI4M2NlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSVVzZXJTY3JpcHQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJVXNlclNjcmlwdC5jcHAKQEAg
LTQwLDcgKzQwLDcgQEAgc3RhdGljIHVpbnQ2NF90IGdlbmVyYXRlSWRlbnRpZmllcigpCiBXZWJD
b3JlOjpVUkwgVXNlclNjcmlwdDo6Z2VuZXJhdGVVbmlxdWVVUkwoKQogewogICAgIFN0cmluZ0J1
aWxkZXIgdXJsU3RyaW5nQnVpbGRlcjsKLSAgICB1cmxTdHJpbmdCdWlsZGVyLmFwcGVuZCgidXNl
ci1zY3JpcHQ6Iik7CisgICAgdXJsU3RyaW5nQnVpbGRlci5hcHBlbmRMaXRlcmFsKCJ1c2VyLXNj
cmlwdDoiKTsKICAgICB1cmxTdHJpbmdCdWlsZGVyLmFwcGVuZE51bWJlcihnZW5lcmF0ZUlkZW50
aWZpZXIoKSk7CiAgICAgcmV0dXJuIFdlYkNvcmU6OlVSTCB7IFdlYkNvcmU6OlVSTCB7IH0sIHVy
bFN0cmluZ0J1aWxkZXIudG9TdHJpbmcoKSB9OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJQcm9jZXNzUG9vbC5jcHAKaW5kZXggOTI3N2RmZC4uYzJhZTE1YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCkBAIC01NjIsNyArNTYyLDcgQEAg
dm9pZCBXZWJQcm9jZXNzUG9vbDo6ZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKGNvbnN0IElQQzo6
U3RyaW5nUmVmZXJlbmNlJiBtZXNzYWcKIAogICAgIFN0cmluZ0J1aWxkZXIgbWVzc2FnZU5hbWVT
dHJpbmdCdWlsZGVyOwogICAgIG1lc3NhZ2VOYW1lU3RyaW5nQnVpbGRlci5hcHBlbmQobWVzc2Fn
ZVJlY2VpdmVyTmFtZS5kYXRhKCksIG1lc3NhZ2VSZWNlaXZlck5hbWUuc2l6ZSgpKTsKLSAgICBt
ZXNzYWdlTmFtZVN0cmluZ0J1aWxkZXIuYXBwZW5kKCIuIik7CisgICAgbWVzc2FnZU5hbWVTdHJp
bmdCdWlsZGVyLmFwcGVuZCgnLicpOwogICAgIG1lc3NhZ2VOYW1lU3RyaW5nQnVpbGRlci5hcHBl
bmQobWVzc2FnZU5hbWUuZGF0YSgpLCBtZXNzYWdlTmFtZS5zaXplKCkpOwogCiAgICAgc19pbnZh
bGlkTWVzc2FnZUNhbGxiYWNrKHRvQVBJKEFQSTo6U3RyaW5nOjpjcmVhdGUobWVzc2FnZU5hbWVT
dHJpbmdCdWlsZGVyLnRvU3RyaW5nKCkpLmdldCgpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL0RhdGFiYXNlcy9JbmRleGVkREIvV2ViSURCRmFjdG9yeUJhY2tlbmQu
Y3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9EYXRhYmFzZXMvSW5kZXhlZERCL1dlYklE
QkZhY3RvcnlCYWNrZW5kLmNwcAppbmRleCBmOTI1NTczLi45OTI3OGI3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0RhdGFiYXNlcy9JbmRleGVkREIvV2ViSURCRmFjdG9y
eUJhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRGF0YWJhc2VzL0lu
ZGV4ZWREQi9XZWJJREJGYWN0b3J5QmFja2VuZC5jcHAKQEAgLTcwLDcgKzcwLDcgQEAgc3RhdGlj
IFN0cmluZyBjb21iaW5lZFNlY3VyaXR5T3JpZ2luSWRlbnRpZmllcihjb25zdCBXZWJDb3JlOjpT
ZWN1cml0eU9yaWdpbiYgb3AKICAgICBpZiAob3JpZ2luU3RyaW5nID09ICJudWxsIikKICAgICAg
ICAgcmV0dXJuIFN0cmluZygpOwogICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKG9yaWdpblN0cmlu
Zyk7Ci0gICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIl8iKTsKKyAgICBzdHJpbmdCdWlsZGVyLmFw
cGVuZCgnXycpOwogCiAgICAgb3JpZ2luU3RyaW5nID0gbWFpbkZyYW1lT3JpZ2luLnRvU3RyaW5n
KCk7CiAgICAgaWYgKG9yaWdpblN0cmluZyA9PSAibnVsbCIpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>250406</attachid>
            <date>2015-04-08 20:40:26 -0700</date>
            <delta_ts>2015-04-20 14:20:31 -0700</delta_ts>
            <desc>[PATCH] Proposed Fix</desc>
            <filename>style-fix.patch</filename>
            <type>text/plain</type>
            <size>35333</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDMwOGFjOWEuLmUzYzQ1MTggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDIyIEBACiAyMDE1LTA0LTA4ICBKb3NlcGggUGVjb3Jh
cm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CiAKKyAgICAgICAgQ2xlYW51cCBzb21lIFN0cmluZ0J1
aWxkZXIgdXNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNDM1NTAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIHJ1bnRpbWUvU3ltYm9sLmNwcDoKKyAgICAgICAgKEpTQzo6U3ltYm9sOjpkZXNjcmlwdGl2
ZVN0cmluZyk6CisgICAgICAgICogcnVudGltZS9UeXBlUHJvZmlsZXIuY3BwOgorICAgICAgICAo
SlNDOjpUeXBlUHJvZmlsZXI6OnR5cGVJbmZvcm1hdGlvbkZvckV4cHJlc3Npb25BdE9mZnNldCk6
CisgICAgICAgICogcnVudGltZS9UeXBlU2V0LmNwcDoKKyAgICAgICAgKEpTQzo6VHlwZVNldDo6
dG9KU09OU3RyaW5nKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlU2hhcGU6OnByb3BlcnR5SGFz
aCk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZVNoYXBlOjpzdHJpbmdSZXByZXNlbnRhdGlvbik6
CisgICAgICAgIChKU0M6OlN0cnVjdHVyZVNoYXBlOjp0b0pTT05TdHJpbmcpOgorCisyMDE1LTA0
LTA4ICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CisKICAgICAgICAgVXNl
IGpzTm9udHJpdmlhbFN0cmluZyBpbiBtb3JlIHBsYWNlcyBpZiB0aGUgc3RyaW5nIGlzIGd1YXJh
bnRlZWQgdG8gYmUgMiBvciBtb3JlIGNoYXJhY3RlcnMKICAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MzQzMAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2wuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU3ltYm9sLmNwcAppbmRleCAyOTRmNjdlLi42ZDc5ZDFjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2wuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1N5bWJvbC5jcHAKQEAgLTk1LDExICs5NSw3IEBAIHZvaWQgU3ltYm9s
OjpkZXN0cm95KEpTQ2VsbCogY2VsbCkKIAogU3RyaW5nIFN5bWJvbDo6ZGVzY3JpcHRpdmVTdHJp
bmcoKSBjb25zdAogewotICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKLSAgICBidWlsZGVyLmFw
cGVuZExpdGVyYWwoIlN5bWJvbCgiKTsKLSAgICBidWlsZGVyLmFwcGVuZChwcml2YXRlTmFtZSgp
LnVpZCgpKTsKLSAgICBidWlsZGVyLmFwcGVuZCgnKScpOwotICAgIHJldHVybiBidWlsZGVyLnRv
U3RyaW5nKCk7CisgICAgcmV0dXJuIG1ha2VTdHJpbmcoIlN5bWJvbCgiLCBTdHJpbmcocHJpdmF0
ZU5hbWUoKS51aWQoKSksICcpJyk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZVByb2ZpbGVyLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5cGVQcm9maWxlci5jcHAKaW5kZXggZTViYWM4Ni4u
OTY4NjE4OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZVBy
b2ZpbGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBlUHJvZmls
ZXIuY3BwCkBAIC04MSwyNyArODEsMjcgQEAgU3RyaW5nIFR5cGVQcm9maWxlcjo6dHlwZUluZm9y
bWF0aW9uRm9yRXhwcmVzc2lvbkF0T2Zmc2V0KFR5cGVQcm9maWxlclNlYXJjaERlc2MKIAogICAg
IFN0cmluZ0J1aWxkZXIganNvbjsgIAogCi0gICAganNvbi5hcHBlbmQoInsiKTsKKyAgICBqc29u
LmFwcGVuZCgneycpOwogCi0gICAganNvbi5hcHBlbmQoIlwiZ2xvYmFsVHlwZVNldFwiOiIpOwor
ICAgIGpzb24uYXBwZW5kTGl0ZXJhbCgiXCJnbG9iYWxUeXBlU2V0XCI6Iik7CiAgICAgaWYgKGxv
Y2F0aW9uLT5tX2dsb2JhbFR5cGVTZXQgJiYgbG9jYXRpb24tPm1fZ2xvYmFsVmFyaWFibGVJRCAh
PSBUeXBlUHJvZmlsZXJOb0dsb2JhbElERXhpc3RzKQogICAgICAgICBqc29uLmFwcGVuZChsb2Nh
dGlvbi0+bV9nbG9iYWxUeXBlU2V0LT50b0pTT05TdHJpbmcoKSk7CiAgICAgZWxzZQotICAgICAg
ICBqc29uLmFwcGVuZCgibnVsbCIpOwotICAgIGpzb24uYXBwZW5kKCIsIik7CisgICAgICAgIGpz
b24uYXBwZW5kTGl0ZXJhbCgibnVsbCIpOworICAgIGpzb24uYXBwZW5kKCcsJyk7CiAKLSAgICBq
c29uLmFwcGVuZCgiXCJpbnN0cnVjdGlvblR5cGVTZXRcIjoiKTsKKyAgICBqc29uLmFwcGVuZExp
dGVyYWwoIlwiaW5zdHJ1Y3Rpb25UeXBlU2V0XCI6Iik7CiAgICAganNvbi5hcHBlbmQobG9jYXRp
b24tPm1faW5zdHJ1Y3Rpb25UeXBlU2V0LT50b0pTT05TdHJpbmcoKSk7Ci0gICAganNvbi5hcHBl
bmQoIiwiKTsKKyAgICBqc29uLmFwcGVuZCgnLCcpOwogCi0gICAganNvbi5hcHBlbmQoIlwiaXNP
dmVyZmxvd25cIjoiKTsKKyAgICBqc29uLmFwcGVuZExpdGVyYWwoIlwiaXNPdmVyZmxvd25cIjoi
KTsKICAgICBpZiAobG9jYXRpb24tPm1faW5zdHJ1Y3Rpb25UeXBlU2V0LT5pc092ZXJmbG93bigp
IHx8IChsb2NhdGlvbi0+bV9nbG9iYWxUeXBlU2V0ICYmIGxvY2F0aW9uLT5tX2dsb2JhbFR5cGVT
ZXQtPmlzT3ZlcmZsb3duKCkpKQotICAgICAgICBqc29uLmFwcGVuZCgidHJ1ZSIpOworICAgICAg
ICBqc29uLmFwcGVuZExpdGVyYWwoInRydWUiKTsKICAgICBlbHNlCi0gICAgICAgIGpzb24uYXBw
ZW5kKCJmYWxzZSIpOworICAgICAgICBqc29uLmFwcGVuZExpdGVyYWwoImZhbHNlIik7CiAKIAot
ICAgIGpzb24uYXBwZW5kKCJ9Iik7CisgICAganNvbi5hcHBlbmQoJ30nKTsKICAgICAKICAgICBy
ZXR1cm4ganNvbi50b1N0cmluZygpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvVHlwZVNldC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9U
eXBlU2V0LmNwcAppbmRleCA4MTA3Mzg4Li4wZjU3ZWM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9UeXBlU2V0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9UeXBlU2V0LmNwcApAQCAtMjUwLDczICsyNTAsNzMgQEAgU3RyaW5nIFR5cGVT
ZXQ6OnRvSlNPTlN0cmluZygpIGNvbnN0CiAgICAgLy8gICAgIHN0cnVjdHVyZXM6ICdBcnJheTxK
U09OPFN0cnVjdHVyZVNoYXBlPj4nCiAKICAgICBTdHJpbmdCdWlsZGVyIGpzb247Ci0gICAganNv
bi5hcHBlbmQoInsiKTsKKyAgICBqc29uLmFwcGVuZCgneycpOwogCi0gICAganNvbi5hcHBlbmQo
IlwiZGlzcGxheVR5cGVOYW1lXCI6Iik7Ci0gICAganNvbi5hcHBlbmQoIlwiIik7CisgICAganNv
bi5hcHBlbmRMaXRlcmFsKCJcImRpc3BsYXlUeXBlTmFtZVwiOiIpOworICAgIGpzb24uYXBwZW5k
KCciJyk7CiAgICAganNvbi5hcHBlbmQoZGlzcGxheU5hbWUoKSk7Ci0gICAganNvbi5hcHBlbmQo
IlwiIik7Ci0gICAganNvbi5hcHBlbmQoIiwiKTsKKyAgICBqc29uLmFwcGVuZCgnIicpOworICAg
IGpzb24uYXBwZW5kKCcsJyk7CiAKLSAgICBqc29uLmFwcGVuZCgiXCJwcmltaXRpdmVUeXBlTmFt
ZXNcIjoiKTsKLSAgICBqc29uLmFwcGVuZCgiWyIpOworICAgIGpzb24uYXBwZW5kTGl0ZXJhbCgi
XCJwcmltaXRpdmVUeXBlTmFtZXNcIjoiKTsKKyAgICBqc29uLmFwcGVuZCgnWycpOwogICAgIGJv
b2wgaGFzQW5JdGVtID0gZmFsc2U7CiAgICAgaWYgKG1fc2VlblR5cGVzICYgVHlwZVVuZGVmaW5l
ZCkgewogICAgICAgICBoYXNBbkl0ZW0gPSB0cnVlOwotICAgICAgICBqc29uLmFwcGVuZCgiXCJV
bmRlZmluZWRcIiIpOworICAgICAgICBqc29uLmFwcGVuZExpdGVyYWwoIlwiVW5kZWZpbmVkXCIi
KTsKICAgICB9CiAgICAgaWYgKG1fc2VlblR5cGVzICYgVHlwZU51bGwpIHsKICAgICAgICAgaWYg
KGhhc0FuSXRlbSkKLSAgICAgICAgICAgIGpzb24uYXBwZW5kKCIsIik7CisgICAgICAgICAgICBq
c29uLmFwcGVuZCgnLCcpOwogICAgICAgICBoYXNBbkl0ZW0gPSB0cnVlOwotICAgICAgICBqc29u
LmFwcGVuZCgiXCJOdWxsXCIiKTsKKyAgICAgICAganNvbi5hcHBlbmRMaXRlcmFsKCJcIk51bGxc
IiIpOwogICAgIH0KICAgICBpZiAobV9zZWVuVHlwZXMgJiBUeXBlQm9vbGVhbikgewogICAgICAg
ICBpZiAoaGFzQW5JdGVtKQotICAgICAgICAgICAganNvbi5hcHBlbmQoIiwiKTsKKyAgICAgICAg
ICAgIGpzb24uYXBwZW5kKCcsJyk7CiAgICAgICAgIGhhc0FuSXRlbSA9IHRydWU7Ci0gICAgICAg
IGpzb24uYXBwZW5kKCJcIkJvb2xlYW5cIiIpOworICAgICAgICBqc29uLmFwcGVuZExpdGVyYWwo
IlwiQm9vbGVhblwiIik7CiAgICAgfQogICAgIGlmIChtX3NlZW5UeXBlcyAmIFR5cGVNYWNoaW5l
SW50KSB7CiAgICAgICAgIGlmIChoYXNBbkl0ZW0pCi0gICAgICAgICAgICBqc29uLmFwcGVuZCgi
LCIpOworICAgICAgICAgICAganNvbi5hcHBlbmQoJywnKTsKICAgICAgICAgaGFzQW5JdGVtID0g
dHJ1ZTsKLSAgICAgICAganNvbi5hcHBlbmQoIlwiSW50ZWdlclwiIik7CisgICAgICAgIGpzb24u
YXBwZW5kTGl0ZXJhbCgiXCJJbnRlZ2VyXCIiKTsKICAgICB9CiAgICAgaWYgKG1fc2VlblR5cGVz
ICYgVHlwZU51bWJlcikgewogICAgICAgICBpZiAoaGFzQW5JdGVtKQotICAgICAgICAgICAganNv
bi5hcHBlbmQoIiwiKTsKKyAgICAgICAgICAgIGpzb24uYXBwZW5kKCcsJyk7CiAgICAgICAgIGhh
c0FuSXRlbSA9IHRydWU7Ci0gICAgICAgIGpzb24uYXBwZW5kKCJcIk51bWJlclwiIik7CisgICAg
ICAgIGpzb24uYXBwZW5kTGl0ZXJhbCgiXCJOdW1iZXJcIiIpOwogICAgIH0KICAgICBpZiAobV9z
ZWVuVHlwZXMgJiBUeXBlU3RyaW5nKSB7CiAgICAgICAgIGlmIChoYXNBbkl0ZW0pCi0gICAgICAg
ICAgICBqc29uLmFwcGVuZCgiLCIpOworICAgICAgICAgICAganNvbi5hcHBlbmQoJywnKTsKICAg
ICAgICAgaGFzQW5JdGVtID0gdHJ1ZTsKLSAgICAgICAganNvbi5hcHBlbmQoIlwiU3RyaW5nXCIi
KTsKKyAgICAgICAganNvbi5hcHBlbmRMaXRlcmFsKCJcIlN0cmluZ1wiIik7CiAgICAgfQogICAg
IGlmIChtX3NlZW5UeXBlcyAmIFR5cGVTeW1ib2wpIHsKICAgICAgICAgaWYgKGhhc0FuSXRlbSkK
LSAgICAgICAgICAgIGpzb24uYXBwZW5kKCIsIik7CisgICAgICAgICAgICBqc29uLmFwcGVuZCgn
LCcpOwogICAgICAgICBoYXNBbkl0ZW0gPSB0cnVlOwotICAgICAgICBqc29uLmFwcGVuZCgiXCJT
eW1ib2xcIiIpOworICAgICAgICBqc29uLmFwcGVuZExpdGVyYWwoIlwiU3ltYm9sXCIiKTsKICAg
ICB9Ci0gICAganNvbi5hcHBlbmQoIl0iKTsKKyAgICBqc29uLmFwcGVuZCgnXScpOwogCi0gICAg
anNvbi5hcHBlbmQoIiwiKTsKKyAgICBqc29uLmFwcGVuZCgnLCcpOwogCi0gICAganNvbi5hcHBl
bmQoIlwic3RydWN0dXJlc1wiOiIpOwotICAgIGpzb24uYXBwZW5kKCJbIik7CisgICAganNvbi5h
cHBlbmRMaXRlcmFsKCJcInN0cnVjdHVyZXNcIjoiKTsKKyAgICBqc29uLmFwcGVuZCgnWycpOwog
ICAgIGhhc0FuSXRlbSA9IGZhbHNlOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9zdHJ1
Y3R1cmVIaXN0b3J5LnNpemUoKTsgaSsrKSB7CiAgICAgICAgIGlmIChoYXNBbkl0ZW0pCi0gICAg
ICAgICAgICBqc29uLmFwcGVuZCgiLCIpOworICAgICAgICAgICAganNvbi5hcHBlbmQoJywnKTsK
ICAgICAgICAgaGFzQW5JdGVtID0gdHJ1ZTsKICAgICAgICAganNvbi5hcHBlbmQobV9zdHJ1Y3R1
cmVIaXN0b3J5W2ldLT50b0pTT05TdHJpbmcoKSk7CiAgICAgfQotICAgIGpzb24uYXBwZW5kKCJd
Iik7CisgICAganNvbi5hcHBlbmQoJ10nKTsKIAotICAgIGpzb24uYXBwZW5kKCJ9Iik7CisgICAg
anNvbi5hcHBlbmQoJ30nKTsKICAgICByZXR1cm4ganNvbi50b1N0cmluZygpOwogfQogCkBAIC0z
NTksNyArMzU5LDcgQEAgU3RyaW5nIFN0cnVjdHVyZVNoYXBlOjpwcm9wZXJ0eUhhc2goKQogCiAg
ICAgaWYgKG1fcHJvdG8pIHsKICAgICAgICAgYnVpbGRlci5hcHBlbmQoJzonKTsKLSAgICAgICAg
YnVpbGRlci5hcHBlbmQoIl9fcHJvdG9fXyIpOworICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVy
YWwoIl9fcHJvdG9fXyIpOwogICAgICAgICBidWlsZGVyLmFwcGVuZChtX3Byb3RvLT5wcm9wZXJ0
eUhhc2goKSk7CiAgICAgfQogCkBAIC00MDksMTMgKzQwOSwxMyBAQCBTdHJpbmcgU3RydWN0dXJl
U2hhcGU6OnN0cmluZ1JlcHJlc2VudGF0aW9uKCkKICAgICAgICAgZm9yIChhdXRvIGl0ID0gY3Vy
U2hhcGUtPm1fZmllbGRzLmJlZ2luKCksIGVuZCA9IGN1clNoYXBlLT5tX2ZpZWxkcy5lbmQoKTsg
aXQgIT0gZW5kOyArK2l0KSB7CiAgICAgICAgICAgICBTdHJpbmcgcHJvcCgoKml0KS5nZXQoKSk7
CiAgICAgICAgICAgICByZXByZXNlbnRhdGlvbi5hcHBlbmQocHJvcCk7Ci0gICAgICAgICAgICBy
ZXByZXNlbnRhdGlvbi5hcHBlbmQoIiwgIik7CisgICAgICAgICAgICByZXByZXNlbnRhdGlvbi5h
cHBlbmRMaXRlcmFsKCIsICIpOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKGN1clNoYXBlLT5t
X3Byb3RvKSB7Ci0gICAgICAgICAgICBTdHJpbmcgcHJvdCA9IG1ha2VTdHJpbmcoIl9fcHJvdG9f
XyBbIiwgY3VyU2hhcGUtPm1fcHJvdG8tPm1fY29uc3RydWN0b3JOYW1lLCAnXScpOwotICAgICAg
ICAgICAgcmVwcmVzZW50YXRpb24uYXBwZW5kKHByb3QpOwotICAgICAgICAgICAgcmVwcmVzZW50
YXRpb24uYXBwZW5kKCIsICIpOworICAgICAgICAgICAgcmVwcmVzZW50YXRpb24uYXBwZW5kTGl0
ZXJhbCgiX19wcm90b19fIFsiKTsKKyAgICAgICAgICAgIHJlcHJlc2VudGF0aW9uLmFwcGVuZChj
dXJTaGFwZS0+bV9wcm90by0+bV9jb25zdHJ1Y3Rvck5hbWUpOworICAgICAgICAgICAgcmVwcmVz
ZW50YXRpb24uYXBwZW5kTGl0ZXJhbCgiXSwgIik7CiAgICAgICAgIH0KIAogICAgICAgICBjdXJT
aGFwZSA9IGN1clNoYXBlLT5tX3Byb3RvOwpAQCAtNDM4LDYwICs0MzgsNjAgQEAgU3RyaW5nIFN0
cnVjdHVyZVNoYXBlOjp0b0pTT05TdHJpbmcoKSBjb25zdAogICAgIC8vICAgICBwcm90bzogJ0pT
T048U3RydWN0dXJlU2hhcGU+IHwgbnVsbCcKIAogICAgIFN0cmluZ0J1aWxkZXIganNvbjsKLSAg
ICBqc29uLmFwcGVuZCgieyIpOworICAgIGpzb24uYXBwZW5kKCd7Jyk7CiAKLSAgICBqc29uLmFw
cGVuZCgiXCJjb25zdHJ1Y3Rvck5hbWVcIjoiKTsKLSAgICBqc29uLmFwcGVuZCgiXCIiKTsKKyAg
ICBqc29uLmFwcGVuZExpdGVyYWwoIlwiY29uc3RydWN0b3JOYW1lXCI6Iik7CisgICAganNvbi5h
cHBlbmQoJyInKTsKICAgICBqc29uLmFwcGVuZChtX2NvbnN0cnVjdG9yTmFtZSk7Ci0gICAganNv
bi5hcHBlbmQoIlwiIik7Ci0gICAganNvbi5hcHBlbmQoIiwiKTsKKyAgICBqc29uLmFwcGVuZCgn
IicpOworICAgIGpzb24uYXBwZW5kKCcsJyk7CiAKLSAgICBqc29uLmFwcGVuZCgiXCJpc0luRGlj
dGlvbmFyeU1vZGVcIjoiKTsKKyAgICBqc29uLmFwcGVuZExpdGVyYWwoIlwiaXNJbkRpY3Rpb25h
cnlNb2RlXCI6Iik7CiAgICAgaWYgKG1faXNJbkRpY3Rpb25hcnlNb2RlKQotICAgICAgICBqc29u
LmFwcGVuZCgidHJ1ZSIpOworICAgICAgICBqc29uLmFwcGVuZExpdGVyYWwoInRydWUiKTsKICAg
ICBlbHNlCi0gICAgICAgIGpzb24uYXBwZW5kKCJmYWxzZSIpOwotICAgIGpzb24uYXBwZW5kKCIs
Iik7CisgICAgICAgIGpzb24uYXBwZW5kTGl0ZXJhbCgiZmFsc2UiKTsKKyAgICBqc29uLmFwcGVu
ZCgnLCcpOwogCi0gICAganNvbi5hcHBlbmQoIlwiZmllbGRzXCI6Iik7Ci0gICAganNvbi5hcHBl
bmQoIlsiKTsKKyAgICBqc29uLmFwcGVuZExpdGVyYWwoIlwiZmllbGRzXCI6Iik7CisgICAganNv
bi5hcHBlbmQoJ1snKTsKICAgICBib29sIGhhc0FuSXRlbSA9IGZhbHNlOwogICAgIGZvciAoYXV0
byBpdCA9IG1fZmllbGRzLmJlZ2luKCksIGVuZCA9IG1fZmllbGRzLmVuZCgpOyBpdCAhPSBlbmQ7
ICsraXQpIHsKICAgICAgICAgaWYgKGhhc0FuSXRlbSkKLSAgICAgICAgICAgIGpzb24uYXBwZW5k
KCIsIik7CisgICAgICAgICAgICBqc29uLmFwcGVuZCgnLCcpOwogICAgICAgICBoYXNBbkl0ZW0g
PSB0cnVlOwogCiAgICAgICAgIFN0cmluZyBmaWVsZE5hbWUoKCppdCkuZ2V0KCkpOwotICAgICAg
ICBqc29uLmFwcGVuZCgiXCIiKTsKKyAgICAgICAganNvbi5hcHBlbmQoJyInKTsKICAgICAgICAg
anNvbi5hcHBlbmQoZmllbGROYW1lKTsKLSAgICAgICAganNvbi5hcHBlbmQoIlwiIik7CisgICAg
ICAgIGpzb24uYXBwZW5kKCciJyk7CiAgICAgfQotICAgIGpzb24uYXBwZW5kKCJdIik7Ci0gICAg
anNvbi5hcHBlbmQoIiwiKTsKKyAgICBqc29uLmFwcGVuZCgnXScpOworICAgIGpzb24uYXBwZW5k
KCcsJyk7CiAKLSAgICBqc29uLmFwcGVuZCgiXCJvcHRpb25hbEZpZWxkc1wiOiIpOwotICAgIGpz
b24uYXBwZW5kKCJbIik7CisgICAganNvbi5hcHBlbmRMaXRlcmFsKCJcIm9wdGlvbmFsRmllbGRz
XCI6Iik7CisgICAganNvbi5hcHBlbmQoJ1snKTsKICAgICBoYXNBbkl0ZW0gPSBmYWxzZTsKICAg
ICBmb3IgKGF1dG8gaXQgPSBtX29wdGlvbmFsRmllbGRzLmJlZ2luKCksIGVuZCA9IG1fb3B0aW9u
YWxGaWVsZHMuZW5kKCk7IGl0ICE9IGVuZDsgKytpdCkgewogICAgICAgICBpZiAoaGFzQW5JdGVt
KQotICAgICAgICAgICAganNvbi5hcHBlbmQoIiwiKTsKKyAgICAgICAgICAgIGpzb24uYXBwZW5k
KCcsJyk7CiAgICAgICAgIGhhc0FuSXRlbSA9IHRydWU7CiAKICAgICAgICAgU3RyaW5nIGZpZWxk
TmFtZSgoKml0KS5nZXQoKSk7Ci0gICAgICAgIGpzb24uYXBwZW5kKCJcIiIpOworICAgICAgICBq
c29uLmFwcGVuZCgnIicpOwogICAgICAgICBqc29uLmFwcGVuZChmaWVsZE5hbWUpOwotICAgICAg
ICBqc29uLmFwcGVuZCgiXCIiKTsKKyAgICAgICAganNvbi5hcHBlbmQoJyInKTsKICAgICB9Ci0g
ICAganNvbi5hcHBlbmQoIl0iKTsKLSAgICBqc29uLmFwcGVuZCgiLCIpOworICAgIGpzb24uYXBw
ZW5kKCddJyk7CisgICAganNvbi5hcHBlbmQoJywnKTsKIAotICAgIGpzb24uYXBwZW5kKCJcInBy
b3RvXCI6Iik7CisgICAganNvbi5hcHBlbmRMaXRlcmFsKCJcInByb3RvXCI6Iik7CiAgICAgaWYg
KG1fcHJvdG8pCiAgICAgICAgIGpzb24uYXBwZW5kKG1fcHJvdG8tPnRvSlNPTlN0cmluZygpKTsK
ICAgICBlbHNlCi0gICAgICAgIGpzb24uYXBwZW5kKCJudWxsIik7CisgICAgICAgIGpzb24uYXBw
ZW5kTGl0ZXJhbCgibnVsbCIpOwogCi0gICAganNvbi5hcHBlbmQoIn0iKTsKKyAgICBqc29uLmFw
cGVuZCgnfScpOwogCiAgICAgcmV0dXJuIGpzb24udG9TdHJpbmcoKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRl
eCBjNWRhNWJhLi5kZTUwYzNmMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0NiBAQAorMjAxNS0w
NC0wOCAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgorCisgICAgICAgIENs
ZWFudXAgc29tZSBTdHJpbmdCdWlsZGVyIHVzZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQzNTUwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBNb2R1bGVzL3BsdWdpbnMvWW91VHViZVBsdWdpblJlcGxh
Y2VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OllvdVR1YmVQbHVnaW5SZXBsYWNlbWVudDo6
eW91VHViZVVSTCk6CisgICAgICAgICogY3NzL0NTU0FuaW1hdGlvblRyaWdnZXJTY3JvbGxWYWx1
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NBbmltYXRpb25UcmlnZ2VyU2Nyb2xsVmFsdWU6
OmN1c3RvbUNTU1RleHQpOgorICAgICAgICAqIGNzcy9DU1NDYW52YXNWYWx1ZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDU1NDYW52YXNWYWx1ZTo6Y3VzdG9tQ1NTVGV4dCk6CisgICAgICAgICog
aHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQ2FudmFz
RWxlbWVudDo6Y3JlYXRlSW1hZ2VCdWZmZXIpOgorICAgICAgICAqIHBhZ2UvQ2FwdGlvblVzZXJQ
cmVmZXJlbmNlc01lZGlhQUYuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FwdGlvblVzZXJQcmVm
ZXJlbmNlc01lZGlhQUY6OmNhcHRpb25zV2luZG93Q1NTKToKKyAgICAgICAgKFdlYkNvcmU6OkNh
cHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGOjp3aW5kb3dSb3VuZGVkQ29ybmVyUmFkaXVzQ1NT
KToKKyAgICAgICAgKFdlYkNvcmU6OkNhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGOjpjc3NQ
cm9wZXJ0eVdpdGhUZXh0RWRnZUNvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkNhcHRpb25Vc2Vy
UHJlZmVyZW5jZXNNZWRpYUFGOjpjb2xvclByb3BlcnR5Q1NTKToKKyAgICAgICAgKFdlYkNvcmU6
OkNhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGOjpjYXB0aW9uc0RlZmF1bHRGb250Q1NTKToK
KyAgICAgICAgKFdlYkNvcmU6OkNhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGOjpjYXB0aW9u
c1N0eWxlU2hlZXRPdmVycmlkZSk6CisgICAgICAgICogcGFnZS9FdmVudFNvdXJjZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpFdmVudFNvdXJjZTo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAg
ICAgKiBwYWdlL1BhZ2VTZXJpYWxpemVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VTZXJp
YWxpemVyOjpzZXJpYWxpemVDU1NTdHlsZVNoZWV0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9PcGVuR0xTaGltcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpsb29rdXBPcGVuR0xGdW5j
dGlvbkFkZHJlc3MpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9J
bmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkluYmFuZFRl
eHRUcmFja1ByaXZhdGVBVkY6OnByb2Nlc3NDdWVBdHRyaWJ1dGVzKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0xDb21tb24uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Z2VuZXJhdGVIYXNoZWROYW1lKToKKyAgICAgICAgKiBwbGF0Zm9y
bS90ZXh0L0RhdGVUaW1lRm9ybWF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGVUaW1lRm9y
bWF0OjpxdW90ZUFuZEFwcGVuZExpdGVyYWwpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJM
YXllckNvbXBvc2l0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21wb3Np
dG9yOjpsb2dMYXllckluZm8pOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUcmVlQXNUZXh0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OndyaXRlUmVuZGVyUmVnaW9uTGlzdCk6CisgICAgICAg
ICogdGVzdGluZy9NaWNyb1Rhc2tUZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1pY3JvVGFz
a1Rlc3Q6OnJ1bik6CisgICAgICAgICogdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlclNldHRpbmdz
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OnVuYmxv
Y2tSZXF1ZXN0VVJMKToKKwogMjAxNS0wNC0wOCAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFw
cGxlLmNvbT4KIAogICAgICAgICBbTWFjXSBXZWJLaXQgaXMgbm90IGhvbm9yaW5nIE9TIHByZWZl
cmVuY2VzIGZvciBzZWNvbmRhcnkgY2xpY2sgYmVoYXZpb3JzCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMvWW91VHViZVBsdWdpblJlcGxhY2VtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lucy9Zb3VUdWJlUGx1Z2luUmVwbGFjZW1lbnQuY3Bw
CmluZGV4IDA4ZWNjNWQuLmEwNDI5MzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvcGx1Z2lucy9Zb3VUdWJlUGx1Z2luUmVwbGFjZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvcGx1Z2lucy9Zb3VUdWJlUGx1Z2luUmVwbGFjZW1lbnQuY3BwCkBAIC0zMjYs
MTMgKzMyNiwxMyBAQCBTdHJpbmcgWW91VHViZVBsdWdpblJlcGxhY2VtZW50Ojp5b3VUdWJlVVJM
KGNvbnN0IFN0cmluZyYgc3JjU3RyaW5nKQogICAgIC8vIFNlZTogPHJkYXI6Ly9wcm9ibGVtLzEx
NTM1MTU1PgogICAgIFN0cmluZ0J1aWxkZXIgZmluYWxVUkw7CiAgICAgaWYgKGlzWW91VHViZVNo
b3J0ZW5lZFVSTCkKLSAgICAgICAgZmluYWxVUkwuYXBwZW5kKCJodHRwOi8vd3d3LnlvdXR1YmUu
Y29tIik7CisgICAgICAgIGZpbmFsVVJMLmFwcGVuZExpdGVyYWwoImh0dHA6Ly93d3cueW91dHVi
ZS5jb20iKTsKICAgICBlbHNlCiAgICAgICAgIGZpbmFsVVJMLmFwcGVuZChzcmNVUkxQcmVmaXgp
OwogICAgIGZpbmFsVVJMLmFwcGVuZExpdGVyYWwoIi9lbWJlZC8iKTsKICAgICBmaW5hbFVSTC5h
cHBlbmQodmlkZW9JRCk7CiAgICAgaWYgKCFxdWVyeS5pc0VtcHR5KCkpIHsKLSAgICAgICAgZmlu
YWxVUkwuYXBwZW5kTGl0ZXJhbCgiPyIpOworICAgICAgICBmaW5hbFVSTC5hcHBlbmQoJz8nKTsK
ICAgICAgICAgZmluYWxVUkwuYXBwZW5kKHF1ZXJ5KTsKICAgICB9CiAgICAgcmV0dXJuIGZpbmFs
VVJMLnRvU3RyaW5nKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQW5pbWF0
aW9uVHJpZ2dlclNjcm9sbFZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NBbmltYXRp
b25UcmlnZ2VyU2Nyb2xsVmFsdWUuY3BwCmluZGV4IDdhZGRmOGEuLmFhNmY0NjYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NBbmltYXRpb25UcmlnZ2VyU2Nyb2xsVmFsdWUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NBbmltYXRpb25UcmlnZ2VyU2Nyb2xsVmFsdWUu
Y3BwCkBAIC0zNSwxMCArMzUsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogU3RyaW5nIENTU0Fu
aW1hdGlvblRyaWdnZXJTY3JvbGxWYWx1ZTo6Y3VzdG9tQ1NTVGV4dCgpIGNvbnN0CiB7CiAgICAg
U3RyaW5nQnVpbGRlciByZXN1bHQ7Ci0gICAgcmVzdWx0LmFwcGVuZCgiY29udGFpbmVyLXNjcm9s
bCgiKTsKKyAgICByZXN1bHQuYXBwZW5kTGl0ZXJhbCgiY29udGFpbmVyLXNjcm9sbCgiKTsKICAg
ICByZXN1bHQuYXBwZW5kKG1fc3RhcnRWYWx1ZS0+Y3NzVGV4dCgpKTsKICAgICBpZiAobV9lbmRW
YWx1ZSkgewotICAgICAgICByZXN1bHQuYXBwZW5kKCIsICIpOworICAgICAgICByZXN1bHQuYXBw
ZW5kTGl0ZXJhbCgiLCAiKTsKICAgICAgICAgcmVzdWx0LmFwcGVuZChtX2VuZFZhbHVlLT5jc3NU
ZXh0KCkpOwogICAgIH0KICAgICByZXN1bHQuYXBwZW5kKCcpJyk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTQ2FudmFzVmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NT
U0NhbnZhc1ZhbHVlLmNwcAppbmRleCA0MzExMDcxLi5hNzQzOTIyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTQ2FudmFzVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NDYW52YXNWYWx1ZS5jcHAKQEAgLTQwLDExICs0MCw3IEBAIENTU0NhbnZhc1ZhbHVlOjp+
Q1NTQ2FudmFzVmFsdWUoKQogCiBTdHJpbmcgQ1NTQ2FudmFzVmFsdWU6OmN1c3RvbUNTU1RleHQo
KSBjb25zdAogewotICAgIFN0cmluZ0J1aWxkZXIgcmVzdWx0OwotICAgIHJlc3VsdC5hcHBlbmRM
aXRlcmFsKCItd2Via2l0LWNhbnZhcygiKTsKLSAgICByZXN1bHQuYXBwZW5kKG1fbmFtZSk7Ci0g
ICAgcmVzdWx0LmFwcGVuZCgnKScpOwotICAgIHJldHVybiByZXN1bHQudG9TdHJpbmcoKTsKKyAg
ICByZXR1cm4gbWFrZVN0cmluZygiLXdlYmtpdC1jYW52YXMoIiwgbV9uYW1lLCAnKScpOwogfQog
CiB2b2lkIENTU0NhbnZhc1ZhbHVlOjpjYW52YXNDaGFuZ2VkKEhUTUxDYW52YXNFbGVtZW50Jiwg
Y29uc3QgRmxvYXRSZWN0JiBjaGFuZ2VkUmVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2Fu
dmFzRWxlbWVudC5jcHAKaW5kZXggZWVkNzBhYS4uZTk0NjcyZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHAKQEAgLTU1OCw5ICs1NTgsOSBAQCB2b2lkIEhUTUxD
YW52YXNFbGVtZW50OjpjcmVhdGVJbWFnZUJ1ZmZlcigpIGNvbnN0CiAKICAgICBpZiAoZGV2aWNl
U2l6ZS53aWR0aCgpICogZGV2aWNlU2l6ZS5oZWlnaHQoKSA+IE1heENhbnZhc0FyZWEpIHsKICAg
ICAgICAgU3RyaW5nQnVpbGRlciBzdHJpbmdCdWlsZGVyOwotICAgICAgICBzdHJpbmdCdWlsZGVy
LmFwcGVuZCgiQ2FudmFzIGFyZWEgZXhjZWVkcyB0aGUgbWF4aW11bSBsaW1pdCAod2lkdGggKiBo
ZWlnaHQgPiAiKTsKKyAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmRMaXRlcmFsKCJDYW52YXMg
YXJlYSBleGNlZWRzIHRoZSBtYXhpbXVtIGxpbWl0ICh3aWR0aCAqIGhlaWdodCA+ICIpOwogICAg
ICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZE51bWJlcihNYXhDYW52YXNBcmVhKTsKLSAgICAgICAg
c3RyaW5nQnVpbGRlci5hcHBlbmQoIikuIik7CisgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5k
TGl0ZXJhbCgiKS4iKTsKICAgICAgICAgZG9jdW1lbnQoKS5hZGRDb25zb2xlTWVzc2FnZShNZXNz
YWdlU291cmNlOjpKUywgTWVzc2FnZUxldmVsOjpXYXJuaW5nLCBzdHJpbmdCdWlsZGVyLnRvU3Ry
aW5nKCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzTWVkaWFBRi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGLmNwcAppbmRleCBmMjcyNTZmLi41
YjE1MzVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVy
ZW5jZXNNZWRpYUFGLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRpb25Vc2VyUHJl
ZmVyZW5jZXNNZWRpYUFGLmNwcApAQCAtMjM0LDEyICsyMzQsNyBAQCBTdHJpbmcgQ2FwdGlvblVz
ZXJQcmVmZXJlbmNlc01lZGlhQUY6OmNhcHRpb25zV2luZG93Q1NTKCkgY29uc3QKICAgICBpZiAo
IW9wYWNpdHkpCiAgICAgICAgIHJldHVybiB3aW5kb3dTdHlsZTsKIAotICAgIFN0cmluZ0J1aWxk
ZXIgYnVpbGRlcjsKLSAgICBidWlsZGVyLmFwcGVuZCh3aW5kb3dTdHlsZSk7Ci0gICAgYnVpbGRl
ci5hcHBlbmQoZ2V0UHJvcGVydHlOYW1lU3RyaW5nKENTU1Byb3BlcnR5UGFkZGluZykpOwotICAg
IGJ1aWxkZXIuYXBwZW5kKCI6IC40ZW0gIWltcG9ydGFudDsiKTsKLQotICAgIHJldHVybiBidWls
ZGVyLnRvU3RyaW5nKCk7CisgICAgcmV0dXJuIG1ha2VTdHJpbmcod2luZG93U3R5bGUsIGdldFBy
b3BlcnR5TmFtZVN0cmluZyhDU1NQcm9wZXJ0eVBhZGRpbmcpLCAiOiAuNGVtICFpbXBvcnRhbnQ7
Iik7CiB9CiAKIFN0cmluZyBDYXB0aW9uVXNlclByZWZlcmVuY2VzTWVkaWFBRjo6Y2FwdGlvbnNC
YWNrZ3JvdW5kQ1NTKCkgY29uc3QKQEAgLTMwMCw3ICsyOTUsNyBAQCBTdHJpbmcgQ2FwdGlvblVz
ZXJQcmVmZXJlbmNlc01lZGlhQUY6OndpbmRvd1JvdW5kZWRDb3JuZXJSYWRpdXNDU1MoKSBjb25z
dAogICAgIGJ1aWxkZXIuYXBwZW5kKGdldFByb3BlcnR5TmFtZVN0cmluZyhDU1NQcm9wZXJ0eUJv
cmRlclJhZGl1cykpOwogICAgIGJ1aWxkZXIuYXBwZW5kKFN0cmluZzo6Zm9ybWF0KCI6JS4wMmZw
eCIsIHJhZGl1cykpOwogICAgIGlmIChiZWhhdmlvciA9PSBrTUFDYXB0aW9uQXBwZWFyYW5jZUJl
aGF2aW9yVXNlVmFsdWUpCi0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKCIgIWltcG9ydGFudCIpOwor
ICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIiAhaW1wb3J0YW50Iik7CiAgICAgYnVpbGRl
ci5hcHBlbmQoJzsnKTsKIAogICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7CkBAIC0zMjcs
NyArMzIyLDcgQEAgU3RyaW5nIENhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGOjpjc3NQcm9w
ZXJ0eVdpdGhUZXh0RWRnZUNvbG9yKENTU1Byb3BlcnR5SUQKICAgICBidWlsZGVyLmFwcGVuZCgn
ICcpOwogICAgIGJ1aWxkZXIuYXBwZW5kKGNhcHRpb25zRWRnZUNvbG9yRm9yVGV4dENvbG9yKHRl
eHRDb2xvcikuc2VyaWFsaXplZCgpKTsKICAgICBpZiAoaW1wb3J0YW50KQotICAgICAgICBidWls
ZGVyLmFwcGVuZCgiICFpbXBvcnRhbnQiKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFs
KCIgIWltcG9ydGFudCIpOwogICAgIGJ1aWxkZXIuYXBwZW5kKCc7Jyk7CiAgICAgCiAgICAgcmV0
dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKQEAgLTM0MSw3ICszMzYsNyBAQCBTdHJpbmcgQ2FwdGlv
blVzZXJQcmVmZXJlbmNlc01lZGlhQUY6OmNvbG9yUHJvcGVydHlDU1MoQ1NTUHJvcGVydHlJRCBp
ZCwgY29uc3QgQwogICAgIGJ1aWxkZXIuYXBwZW5kKCc6Jyk7CiAgICAgYnVpbGRlci5hcHBlbmQo
Y29sb3Iuc2VyaWFsaXplZCgpKTsKICAgICBpZiAoaW1wb3J0YW50KQotICAgICAgICBidWlsZGVy
LmFwcGVuZCgiICFpbXBvcnRhbnQiKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCIg
IWltcG9ydGFudCIpOwogICAgIGJ1aWxkZXIuYXBwZW5kKCc7Jyk7CiAgICAgCiAgICAgcmV0dXJu
IGJ1aWxkZXIudG9TdHJpbmcoKTsKQEAgLTM5OSwxMSArMzk0LDExIEBAIFN0cmluZyBDYXB0aW9u
VXNlclByZWZlcmVuY2VzTWVkaWFBRjo6Y2FwdGlvbnNEZWZhdWx0Rm9udENTUygpIGNvbnN0CiAg
ICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwogICAgIAogICAgIGJ1aWxkZXIuYXBwZW5kKGdldFBy
b3BlcnR5TmFtZVN0cmluZyhDU1NQcm9wZXJ0eUZvbnRGYW1pbHkpKTsKLSAgICBidWlsZGVyLmFw
cGVuZCgiOiBcIiIpOworICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiOiBcIiIpOwogICAgIGJ1
aWxkZXIuYXBwZW5kKHN0YXRpY19jYXN0PENGU3RyaW5nUmVmPihuYW1lLmdldCgpKSk7CiAgICAg
YnVpbGRlci5hcHBlbmQoJyInKTsKICAgICBpZiAoYmVoYXZpb3IgPT0ga01BQ2FwdGlvbkFwcGVh
cmFuY2VCZWhhdmlvclVzZVZhbHVlKQotICAgICAgICBidWlsZGVyLmFwcGVuZCgiICFpbXBvcnRh
bnQiKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgIWltcG9ydGFudCIpOwogICAg
IGJ1aWxkZXIuYXBwZW5kKCc7Jyk7CiAgICAgCiAgICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmco
KTsKQEAgLTQ5MCw3ICs0ODUsNyBAQCBTdHJpbmcgQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlh
QUY6OmNhcHRpb25zU3R5bGVTaGVldE92ZXJyaWRlKCkgY29uc3QKICAgICBTdHJpbmcgZm9udE5h
bWUgPSBjYXB0aW9uc0RlZmF1bHRGb250Q1NTKCk7CiAgICAgU3RyaW5nIGJhY2tncm91bmQgPSBj
YXB0aW9uc0JhY2tncm91bmRDU1MoKTsKICAgICBpZiAoIWJhY2tncm91bmQuaXNFbXB0eSgpIHx8
ICFjYXB0aW9uc0NvbG9yLmlzRW1wdHkoKSB8fCAhZWRnZVN0eWxlLmlzRW1wdHkoKSB8fCAhZm9u
dE5hbWUuaXNFbXB0eSgpKSB7Ci0gICAgICAgIGNhcHRpb25zT3ZlcnJpZGVTdHlsZVNoZWV0LmFw
cGVuZCgiIHZpZGVvOjoiKTsKKyAgICAgICAgY2FwdGlvbnNPdmVycmlkZVN0eWxlU2hlZXQuYXBw
ZW5kTGl0ZXJhbCgiIHZpZGVvOjoiKTsKICAgICAgICAgY2FwdGlvbnNPdmVycmlkZVN0eWxlU2hl
ZXQuYXBwZW5kKFRleHRUcmFja0N1ZTo6Y3VlU2hhZG93UHNldWRvSWQoKSk7CiAgICAgICAgIGNh
cHRpb25zT3ZlcnJpZGVTdHlsZVNoZWV0LmFwcGVuZCgneycpOwogICAgICAgICAKQEAgLTUwOSw3
ICs1MDQsNyBAQCBTdHJpbmcgQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlhQUY6OmNhcHRpb25z
U3R5bGVTaGVldE92ZXJyaWRlKCkgY29uc3QKICAgICBTdHJpbmcgd2luZG93Q29sb3IgPSBjYXB0
aW9uc1dpbmRvd0NTUygpOwogICAgIFN0cmluZyB3aW5kb3dDb3JuZXJSYWRpdXMgPSB3aW5kb3dS
b3VuZGVkQ29ybmVyUmFkaXVzQ1NTKCk7CiAgICAgaWYgKCF3aW5kb3dDb2xvci5pc0VtcHR5KCkg
fHwgIXdpbmRvd0Nvcm5lclJhZGl1cy5pc0VtcHR5KCkpIHsKLSAgICAgICAgY2FwdGlvbnNPdmVy
cmlkZVN0eWxlU2hlZXQuYXBwZW5kKCIgdmlkZW86OiIpOworICAgICAgICBjYXB0aW9uc092ZXJy
aWRlU3R5bGVTaGVldC5hcHBlbmRMaXRlcmFsKCIgdmlkZW86OiIpOwogICAgICAgICBjYXB0aW9u
c092ZXJyaWRlU3R5bGVTaGVldC5hcHBlbmQoVlRUQ3VlOjpjdWVCYWNrZHJvcFNoYWRvd1BzZXVk
b0lkKCkpOwogICAgICAgICBjYXB0aW9uc092ZXJyaWRlU3R5bGVTaGVldC5hcHBlbmQoJ3snKTsK
ICAgICAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50U291cmNlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRTb3VyY2UuY3BwCmluZGV4IDQzMmIyMzYuLmJi
ZGRlZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRTb3VyY2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRTb3VyY2UuY3BwCkBAIC0yMjMsMjIgKzIyMywx
NiBAQCB2b2lkIEV2ZW50U291cmNlOjpkaWRSZWNlaXZlUmVzcG9uc2UodW5zaWduZWQgbG9uZywg
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcAogICAgICAgICAvLyBJZiB3ZSBoYXZlIGEgY2hh
cnNldCwgdGhlIG9ubHkgYWxsb3dlZCB2YWx1ZSBpcyBVVEYtOCAoY2FzZS1pbnNlbnNpdGl2ZSku
CiAgICAgICAgIHJlc3BvbnNlSXNWYWxpZCA9IGNoYXJzZXQuaXNFbXB0eSgpIHx8IGVxdWFsSWdu
b3JpbmdDYXNlKGNoYXJzZXQsICJVVEYtOCIpOwogICAgICAgICBpZiAoIXJlc3BvbnNlSXNWYWxp
ZCkgewotICAgICAgICAgICAgU3RyaW5nQnVpbGRlciBtZXNzYWdlOwotICAgICAgICAgICAgbWVz
c2FnZS5hcHBlbmRMaXRlcmFsKCJFdmVudFNvdXJjZSdzIHJlc3BvbnNlIGhhcyBhIGNoYXJzZXQg
KFwiIik7Ci0gICAgICAgICAgICBtZXNzYWdlLmFwcGVuZChjaGFyc2V0KTsKLSAgICAgICAgICAg
IG1lc3NhZ2UuYXBwZW5kTGl0ZXJhbCgiXCIpIHRoYXQgaXMgbm90IFVURi04LiBBYm9ydGluZyB0
aGUgY29ubmVjdGlvbi4iKTsKKyAgICAgICAgICAgIFN0cmluZyBtZXNzYWdlID0gbWFrZVN0cmlu
ZygiRXZlbnRTb3VyY2UncyByZXNwb25zZSBoYXMgYSBjaGFyc2V0IChcIiIsIGNoYXJzZXQsICJc
IikgdGhhdCBpcyBub3QgVVRGLTguIEFib3J0aW5nIHRoZSBjb25uZWN0aW9uLiIpOwogICAgICAg
ICAgICAgLy8gRklYTUU6IFdlIGFyZSBtaXNzaW5nIHRoZSBzb3VyY2UgbGluZS4KLSAgICAgICAg
ICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNv
dXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIG1lc3NhZ2UudG9TdHJpbmcoKSk7CisgICAg
ICAgICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmFkZENvbnNvbGVNZXNzYWdlKE1lc3Nh
Z2VTb3VyY2U6OkpTLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBtZXNzYWdlKTsKICAgICAgICAgfQog
ICAgIH0gZWxzZSB7CiAgICAgICAgIC8vIFRvIGtlZXAgdGhlIHNpZ25hbC10by1ub2lzZSByYXRp
byBsb3csIHdlIG9ubHkgbG9nIDIwMC1yZXNwb25zZSB3aXRoIGFuIGludmFsaWQgTUlNRSB0eXBl
LgogICAgICAgICBpZiAoc3RhdHVzQ29kZSA9PSAyMDAgJiYgIW1pbWVUeXBlSXNWYWxpZCkgewot
ICAgICAgICAgICAgU3RyaW5nQnVpbGRlciBtZXNzYWdlOwotICAgICAgICAgICAgbWVzc2FnZS5h
cHBlbmRMaXRlcmFsKCJFdmVudFNvdXJjZSdzIHJlc3BvbnNlIGhhcyBhIE1JTUUgdHlwZSAoXCIi
KTsKLSAgICAgICAgICAgIG1lc3NhZ2UuYXBwZW5kKHJlc3BvbnNlLm1pbWVUeXBlKCkpOwotICAg
ICAgICAgICAgbWVzc2FnZS5hcHBlbmRMaXRlcmFsKCJcIikgdGhhdCBpcyBub3QgXCJ0ZXh0L2V2
ZW50LXN0cmVhbVwiLiBBYm9ydGluZyB0aGUgY29ubmVjdGlvbi4iKTsKKyAgICAgICAgICAgIFN0
cmluZyBtZXNzYWdlID0gbWFrZVN0cmluZygiRXZlbnRTb3VyY2UncyByZXNwb25zZSBoYXMgYSBN
SU1FIHR5cGUgKFwiIiwgcmVzcG9uc2UubWltZVR5cGUoKSwgIlwiKSB0aGF0IGlzIG5vdCBcInRl
eHQvZXZlbnQtc3RyZWFtXCIuIEFib3J0aW5nIHRoZSBjb25uZWN0aW9uLiIpOwogICAgICAgICAg
ICAgLy8gRklYTUU6IFdlIGFyZSBtaXNzaW5nIHRoZSBzb3VyY2UgbGluZS4KLSAgICAgICAgICAg
IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJj
ZTo6SlMsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIG1lc3NhZ2UudG9TdHJpbmcoKSk7CisgICAgICAg
ICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VT
b3VyY2U6OkpTLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBtZXNzYWdlKTsKICAgICAgICAgfQogICAg
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFsaXplci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VTZXJpYWxpemVyLmNwcAppbmRleCA0ZjFkMWZjLi42
ZTM4YjYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VTZXJpYWxpemVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VTZXJpYWxpemVyLmNwcApAQCAtMjYyLDcg
KzI2Miw3IEBAIHZvaWQgUGFnZVNlcmlhbGl6ZXI6OnNlcmlhbGl6ZUNTU1N0eWxlU2hlZXQoQ1NT
U3R5bGVTaGVldCogc3R5bGVTaGVldCwgY29uc3QgVVJMCiAgICAgICAgIGlmICghaXRlbVRleHQu
aXNFbXB0eSgpKSB7CiAgICAgICAgICAgICBjc3NUZXh0LmFwcGVuZChpdGVtVGV4dCk7CiAgICAg
ICAgICAgICBpZiAoaSA8IHN0eWxlU2hlZXQtPmxlbmd0aCgpIC0gMSkKLSAgICAgICAgICAgICAg
ICBjc3NUZXh0LmFwcGVuZCgiXG5cbiIpOworICAgICAgICAgICAgICAgIGNzc1RleHQuYXBwZW5k
TGl0ZXJhbCgiXG5cbiIpOwogICAgICAgICB9CiAgICAgICAgIERvY3VtZW50KiBkb2N1bWVudCA9
IHN0eWxlU2hlZXQtPm93bmVyRG9jdW1lbnQoKTsKICAgICAgICAgLy8gU29tZSBydWxlcyBoYXZl
IHJlc291cmNlcyBhc3NvY2lhdGVkIHdpdGggdGhlbSB0aGF0IHdlIG5lZWQgdG8gcmV0cmlldmUu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9PcGVuR0xTaGlt
cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9PcGVuR0xTaGltcy5jcHAK
aW5kZXggOGVjMDMxZS4uZGQ4MDlhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvT3BlbkdMU2hpbXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL09wZW5HTFNoaW1zLmNwcApAQCAtNzAsMjUgKzcwLDIxIEBAIHN0YXRpYyB2b2lk
KiBsb29rdXBPcGVuR0xGdW5jdGlvbkFkZHJlc3MoY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBi
b29sKiBzdWNjZXNzCiAgICAgaWYgKHRhcmdldCkKICAgICAgICAgcmV0dXJuIHRhcmdldDsKIAot
ICAgIFN0cmluZyBmdWxsRnVuY3Rpb25OYW1lKGZ1bmN0aW9uTmFtZSk7Ci0gICAgZnVsbEZ1bmN0
aW9uTmFtZS5hcHBlbmQoIkFSQiIpOworICAgIFN0cmluZyBmdWxsRnVuY3Rpb25OYW1lID0gbWFr
ZVN0cmluZyhmdW5jdGlvbk5hbWUsICJBUkIiKTsKICAgICB0YXJnZXQgPSBnZXRQcm9jQWRkcmVz
cyhmdWxsRnVuY3Rpb25OYW1lLnV0ZjgoKS5kYXRhKCkpOwogICAgIGlmICh0YXJnZXQpCiAgICAg
ICAgIHJldHVybiB0YXJnZXQ7CiAKLSAgICBmdWxsRnVuY3Rpb25OYW1lID0gZnVuY3Rpb25OYW1l
OwotICAgIGZ1bGxGdW5jdGlvbk5hbWUuYXBwZW5kKCJFWFQiKTsKKyAgICBmdWxsRnVuY3Rpb25O
YW1lID0gbWFrZVN0cmluZyhmdW5jdGlvbk5hbWUsICJFWFQiKTsKICAgICB0YXJnZXQgPSBnZXRQ
cm9jQWRkcmVzcyhmdWxsRnVuY3Rpb25OYW1lLnV0ZjgoKS5kYXRhKCkpOwogCiAjaWYgZGVmaW5l
ZChHTF9FU19WRVJTSU9OXzJfMCkKLSAgICBmdWxsRnVuY3Rpb25OYW1lID0gZnVuY3Rpb25OYW1l
OwotICAgIGZ1bGxGdW5jdGlvbk5hbWUuYXBwZW5kKCJBTkdMRSIpOworICAgIGZ1bGxGdW5jdGlv
bk5hbWUgPSBtYWtlU3RyaW5nKGZ1bmN0aW9uTmFtZSwgIkFOR0xFIik7CiAgICAgdGFyZ2V0ID0g
Z2V0UHJvY0FkZHJlc3MoZnVsbEZ1bmN0aW9uTmFtZS51dGY4KCkuZGF0YSgpKTsKICAgICBpZiAo
dGFyZ2V0KQogICAgICAgICByZXR1cm4gdGFyZ2V0OwogCi0gICAgZnVsbEZ1bmN0aW9uTmFtZSA9
IGZ1bmN0aW9uTmFtZTsKLSAgICBmdWxsRnVuY3Rpb25OYW1lLmFwcGVuZCgiQVBQTEUiKTsKKyAg
ICBmdWxsRnVuY3Rpb25OYW1lID0gbWFrZVN0cmluZyhmdW5jdGlvbk5hbWUsICJBUFBMRSIpOwog
ICAgIHRhcmdldCA9IGdldFByb2NBZGRyZXNzKGZ1bGxGdW5jdGlvbk5hbWUudXRmOCgpLmRhdGEo
KSk7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL0luYmFuZFRleHRUcmFja1ByaXZhdGVBVkYuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0luYmFuZFRleHRUcmFja1ByaXZh
dGVBVkYuY3BwCmluZGV4IDY1YTc0ZTYuLmI1MzI0MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9JbmJhbmRUZXh0VHJhY2tQcml2YXRl
QVZGLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRi5jcHAKQEAgLTE1OCw3ICsxNTgsNyBAQCB2b2lk
IEluYmFuZFRleHRUcmFja1ByaXZhdGVBVkY6OnByb2Nlc3NDdWVBdHRyaWJ1dGVzKENGQXR0cmli
dXRlZFN0cmluZ1JlZiBhdHRyaQogICAgICAgICAgICAgICAgIGlmIChzdGF0aWNfY2FzdDxDRkJv
b2xlYW5SZWY+KHZhbHVlKSAhPSBrQ0ZCb29sZWFuVHJ1ZSkKICAgICAgICAgICAgICAgICAgICAg
Y29udGludWU7CiAKLSAgICAgICAgICAgICAgICB0YWdTdGFydC5hcHBlbmQoIjxiPiIpOworICAg
ICAgICAgICAgICAgIHRhZ1N0YXJ0LmFwcGVuZExpdGVyYWwoIjxiPiIpOwogICAgICAgICAgICAg
ICAgIHRhZ0VuZCA9ICI8L2I+IiArIHRhZ0VuZDsKICAgICAgICAgICAgICAgICBjb250aW51ZTsK
ICAgICAgICAgICAgIH0KQEAgLTE2Nyw3ICsxNjcsNyBAQCB2b2lkIEluYmFuZFRleHRUcmFja1By
aXZhdGVBVkY6OnByb2Nlc3NDdWVBdHRyaWJ1dGVzKENGQXR0cmlidXRlZFN0cmluZ1JlZiBhdHRy
aQogICAgICAgICAgICAgICAgIGlmIChzdGF0aWNfY2FzdDxDRkJvb2xlYW5SZWY+KHZhbHVlKSAh
PSBrQ0ZCb29sZWFuVHJ1ZSkKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAg
ICAgICAgICAgICB0YWdTdGFydC5hcHBlbmQoIjxpPiIpOworICAgICAgICAgICAgICAgIHRhZ1N0
YXJ0LmFwcGVuZExpdGVyYWwoIjxpPiIpOwogICAgICAgICAgICAgICAgIHRhZ0VuZCA9ICI8L2k+
IiArIHRhZ0VuZDsKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIH0KQEAg
LTE3Niw3ICsxNzYsNyBAQCB2b2lkIEluYmFuZFRleHRUcmFja1ByaXZhdGVBVkY6OnByb2Nlc3ND
dWVBdHRyaWJ1dGVzKENGQXR0cmlidXRlZFN0cmluZ1JlZiBhdHRyaQogICAgICAgICAgICAgICAg
IGlmIChzdGF0aWNfY2FzdDxDRkJvb2xlYW5SZWY+KHZhbHVlKSAhPSBrQ0ZCb29sZWFuVHJ1ZSkK
ICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgICAgICAgICB0YWdTdGFy
dC5hcHBlbmQoIjx1PiIpOworICAgICAgICAgICAgICAgIHRhZ1N0YXJ0LmFwcGVuZExpdGVyYWwo
Ijx1PiIpOwogICAgICAgICAgICAgICAgIHRhZ0VuZCA9ICI8L3U+IiArIHRhZ0VuZDsKICAgICAg
ICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTENv
bW1vbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhp
Y3NDb250ZXh0M0RPcGVuR0xDb21tb24uY3BwCmluZGV4IDRkNzU4OGQuLmI0YjE1Y2MgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0Nv
bnRleHQzRE9wZW5HTENvbW1vbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMQ29tbW9uLmNwcApAQCAtODUxLDcg
Kzg1MSw3IEBAIHN0YXRpYyBTdHJpbmcgZ2VuZXJhdGVIYXNoZWROYW1lKGNvbnN0IFN0cmluZyYg
bmFtZSkKICAgICAgICAgcmV0dXJuIG5hbWU7CiAgICAgdWludDY0X3QgbnVtYmVyID0gbmFtZUhh
c2hGb3JTaGFkZXIobmFtZS51dGY4KCkuZGF0YSgpLCBuYW1lLmxlbmd0aCgpKTsKICAgICBTdHJp
bmdCdWlsZGVyIGJ1aWxkZXI7Ci0gICAgYnVpbGRlci5hcHBlbmQoIndlYmdsXyIpOworICAgIGJ1
aWxkZXIuYXBwZW5kTGl0ZXJhbCgid2ViZ2xfIik7CiAgICAgYXBwZW5kVW5zaWduZWQ2NEFzSGV4
KG51bWJlciwgYnVpbGRlciwgTG93ZXJjYXNlKTsKICAgICByZXR1cm4gYnVpbGRlci50b1N0cmlu
ZygpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9EYXRlVGlt
ZUZvcm1hdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0RhdGVUaW1lRm9ybWF0
LmNwcAppbmRleCBiNzU5OTQ0Li5jNzVkMzNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS90ZXh0L0RhdGVUaW1lRm9ybWF0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS90ZXh0L0RhdGVUaW1lRm9ybWF0LmNwcApAQCAtMjY1LDcgKzI2NSw3IEBAIHZvaWQgRGF0
ZVRpbWVGb3JtYXQ6OnF1b3RlQW5kQXBwZW5kTGl0ZXJhbChjb25zdCBTdHJpbmcmIGxpdGVyYWws
IFN0cmluZ0J1aWxkZXImCiAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGl0ZXJhbC5s
ZW5ndGgoKTsgKytpKSB7CiAgICAgICAgIGlmIChsaXRlcmFsW2ldID09ICdcJycpCi0gICAgICAg
ICAgICBidWZmZXIuYXBwZW5kKCInJyIpOworICAgICAgICAgICAgYnVmZmVyLmFwcGVuZExpdGVy
YWwoIicnIik7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgU3RyaW5nIGVzY2FwZWQgPSBs
aXRlcmFsLnN1YnN0cmluZyhpKTsKICAgICAgICAgICAgIGVzY2FwZWQucmVwbGFjZSgnXCcnLCAi
JyciKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNv
bXBvc2l0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9z
aXRvci5jcHAKaW5kZXggYzcyMjg3ZS4uY2NiMzVkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAKQEAgLTg0NSwxNyArODQ1LDE3
IEBAIHZvaWQgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpsb2dMYXllckluZm8oY29uc3QgUmVuZGVy
TGF5ZXImIGxheWVyLCBpbnQgZGVwdGgpCiAgICAgICAgIGFic29sdXRlQm91bmRzLngoKS50b0Zs
b2F0KCksIGFic29sdXRlQm91bmRzLnkoKS50b0Zsb2F0KCksIGFic29sdXRlQm91bmRzLm1heFgo
KS50b0Zsb2F0KCksIGFic29sdXRlQm91bmRzLm1heFkoKS50b0Zsb2F0KCksCiAgICAgICAgIGJh
Y2tpbmctPmJhY2tpbmdTdG9yZU1lbW9yeUVzdGltYXRlKCkgLyAxMDI0KSk7CiAgICAgCi0gICAg
bG9nU3RyaW5nLmFwcGVuZCgiICgiKTsKKyAgICBsb2dTdHJpbmcuYXBwZW5kTGl0ZXJhbCgiICgi
KTsKICAgICBsb2dTdHJpbmcuYXBwZW5kKGxvZ1JlYXNvbnNGb3JDb21wb3NpdGluZyhsYXllcikp
OwotICAgIGxvZ1N0cmluZy5hcHBlbmQoIikgIik7CisgICAgbG9nU3RyaW5nLmFwcGVuZExpdGVy
YWwoIikgIik7CiAKICAgICBpZiAoYmFja2luZy0+Z3JhcGhpY3NMYXllcigpLT5jb250ZW50c09w
YXF1ZSgpIHx8IGJhY2tpbmctPnBhaW50c0ludG9Db21wb3NpdGVkQW5jZXN0b3IoKSkgewogICAg
ICAgICBsb2dTdHJpbmcuYXBwZW5kKCdbJyk7CiAgICAgICAgIGlmIChiYWNraW5nLT5ncmFwaGlj
c0xheWVyKCktPmNvbnRlbnRzT3BhcXVlKCkpCi0gICAgICAgICAgICBsb2dTdHJpbmcuYXBwZW5k
KCJvcGFxdWUiKTsKKyAgICAgICAgICAgIGxvZ1N0cmluZy5hcHBlbmRMaXRlcmFsKCJvcGFxdWUi
KTsKICAgICAgICAgaWYgKGJhY2tpbmctPnBhaW50c0ludG9Db21wb3NpdGVkQW5jZXN0b3IoKSkK
LSAgICAgICAgICAgIGxvZ1N0cmluZy5hcHBlbmQoInBhaW50cyBpbnRvIGFuY2VzdG9yIik7Ci0g
ICAgICAgIGxvZ1N0cmluZy5hcHBlbmQoIl0gIik7CisgICAgICAgICAgICBsb2dTdHJpbmcuYXBw
ZW5kTGl0ZXJhbCgicGFpbnRzIGludG8gYW5jZXN0b3IiKTsKKyAgICAgICAgbG9nU3RyaW5nLmFw
cGVuZExpdGVyYWwoIl0gIik7CiAgICAgfQogCiAgICAgbG9nU3RyaW5nLmFwcGVuZChsYXllci5u
YW1lKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRyZWVB
c1RleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRyZWVBc1RleHQuY3Bw
CmluZGV4IDk4N2Q5NGMuLmUxYzg2NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUcmVlQXNUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVHJlZUFzVGV4dC5jcHAKQEAgLTY2Nyw5ICs2NjcsOSBAQCBzdGF0aWMgdm9pZCB3cml0
ZVJlbmRlclJlZ2lvbkxpc3QoY29uc3QgUmVuZGVyUmVnaW9uTGlzdCYgZmxvd1RocmVhZFJlZ2lv
bkxpc3QsCiAgICAgICAgICAgICBSZW5kZXJFbGVtZW50KiByZW5kZXJFbGVtZW50Rm9yUmVnaW9u
ID0gaXNSZW5kZXJOYW1lZEZsb3dGcmFnbWVudCA/IHJlbmRlclJlZ2lvbi0+cGFyZW50KCkgOiBy
ZW5kZXJSZWdpb247CiAgICAgICAgICAgICBpZiAocmVuZGVyRWxlbWVudEZvclJlZ2lvbi0+aXNQ
c2V1ZG9FbGVtZW50KCkpIHsKICAgICAgICAgICAgICAgICBpZiAocmVuZGVyRWxlbWVudEZvclJl
Z2lvbi0+ZWxlbWVudCgpLT5pc0JlZm9yZVBzZXVkb0VsZW1lbnQoKSkKLSAgICAgICAgICAgICAg
ICAgICAgdGFnTmFtZS5hcHBlbmQoIjo6YmVmb3JlIik7CisgICAgICAgICAgICAgICAgICAgIHRh
Z05hbWUuYXBwZW5kTGl0ZXJhbCgiOjpiZWZvcmUiKTsKICAgICAgICAgICAgICAgICBlbHNlIGlm
IChyZW5kZXJFbGVtZW50Rm9yUmVnaW9uLT5lbGVtZW50KCktPmlzQWZ0ZXJQc2V1ZG9FbGVtZW50
KCkpCi0gICAgICAgICAgICAgICAgICAgIHRhZ05hbWUuYXBwZW5kKCI6OmFmdGVyIik7CisgICAg
ICAgICAgICAgICAgICAgIHRhZ05hbWUuYXBwZW5kTGl0ZXJhbCgiOjphZnRlciIpOwogICAgICAg
ICAgICAgfQogCiAgICAgICAgICAgICB0cyA8PCAiIHsiIDw8IHRhZ05hbWUudG9TdHJpbmcoKSA8
PCAifSI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01pY3JvVGFza1Rlc3Qu
Y3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9NaWNyb1Rhc2tUZXN0LmNwcAppbmRleCBmMjIz
ZWZiLi41MGVlZmU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01pY3JvVGFz
a1Rlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTWljcm9UYXNrVGVzdC5jcHAK
QEAgLTI3LDEyICsyNyw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdm9pZCBNaWNyb1Rhc2tU
ZXN0OjpydW4oKQogewotICAgIFN0cmluZ0J1aWxkZXIgbWVzc2FnZTsKLSAgICBtZXNzYWdlLmFw
cGVuZCgiTWljcm9UYXNrICMiKTsKLSAgICBtZXNzYWdlLmFwcGVuZChTdHJpbmc6Om51bWJlciht
X3Rlc3ROdW1iZXIpKTsKLSAgICBtZXNzYWdlLmFwcGVuZCgiIGhhcyBydW4uIik7CiAgICAgaWYg
KG1fZG9jdW1lbnQpCi0gICAgICAgIG1fZG9jdW1lbnQtPmFkZENvbnNvbGVNZXNzYWdlKE1lc3Nh
Z2VTb3VyY2U6OkpTLCBNZXNzYWdlTGV2ZWw6OkRlYnVnLCBtZXNzYWdlLnRvU3RyaW5nKCkpOwor
ICAgICAgICBtX2RvY3VtZW50LT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpKUywg
TWVzc2FnZUxldmVsOjpEZWJ1ZywgbWFrZVN0cmluZygiTWljcm9UYXNrICMiLCBTdHJpbmc6Om51
bWJlcihtX3Rlc3ROdW1iZXIpLCAiIGhhcyBydW4uIikpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50Rmls
dGVyU2V0dGluZ3MuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29udGVudEZpbHRl
clNldHRpbmdzLmNwcAppbmRleCAwODY4NjJiLi43YmU0YjQ2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5jcHAKQEAgLTUyLDEx
ICs1Miw3IEBAIGNvbnN0IFN0cmluZyYgTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6dW5ibG9j
a1JlcXVlc3RVUkwoKSBjb25zdAogICAgIHN0YXRpYyBMYXp5TmV2ZXJEZXN0cm95ZWQ8U3RyaW5n
PiB1bmJsb2NrUmVxdWVzdFVSTDsKICAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUZsYWc7
CiAgICAgc3RkOjpjYWxsX29uY2Uob25jZUZsYWcsIFtdIHsKLSAgICAgICAgU3RyaW5nQnVpbGRl
ciB1bmJsb2NrUmVxdWVzdFVSTEJ1aWxkZXI7Ci0gICAgICAgIHVuYmxvY2tSZXF1ZXN0VVJMQnVp
bGRlci5hcHBlbmQoQ29udGVudEZpbHRlcjo6dXJsU2NoZW1lKCkpOwotICAgICAgICB1bmJsb2Nr
UmVxdWVzdFVSTEJ1aWxkZXIuYXBwZW5kKCI6Ly8iKTsKLSAgICAgICAgdW5ibG9ja1JlcXVlc3RV
UkxCdWlsZGVyLmFwcGVuZCh1bmJsb2NrVVJMSG9zdCgpKTsKLSAgICAgICAgdW5ibG9ja1JlcXVl
c3RVUkwuY29uc3RydWN0KHVuYmxvY2tSZXF1ZXN0VVJMQnVpbGRlci50b1N0cmluZygpKTsKKyAg
ICAgICAgdW5ibG9ja1JlcXVlc3RVUkwuY29uc3RydWN0KG1ha2VTdHJpbmcoQ29udGVudEZpbHRl
cjo6dXJsU2NoZW1lKCksICI6Ly8iLCB1bmJsb2NrVVJMSG9zdCgpKSk7CiAgICAgfSk7CiAgICAg
cmV0dXJuIHVuYmxvY2tSZXF1ZXN0VVJMOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IGY0NjBlNTIuLmEwNjM4
NjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMyBAQAorMjAxNS0wNC0wOCAgSm9zZXBoIFBlY29y
YXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgorCisgICAgICAgIENsZWFudXAgc29tZSBTdHJpbmdC
dWlsZGVyIHVzZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTQzNTUwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBEYXRhYmFzZVByb2Nlc3MvSW5kZXhlZERCL3NxbGl0ZS9TUUxpdGVJREJDdXJzb3IuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpidWlsZE9iamVjdFN0b3JlU3RhdGVtZW50KToKKyAgICAgICAg
KiBEYXRhYmFzZVByb2Nlc3MvSW5kZXhlZERCL3NxbGl0ZS9VbmlxdWVJREJEYXRhYmFzZUJhY2tp
bmdTdG9yZVNRTGl0ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OnYyUmVjb3Jkc1RhYmxlU2NoZW1h
KToKKyAgICAgICAgKiBTaGFyZWQvRGF0YWJhc2VzL0luZGV4ZWREQi9JREJVdGlsaXRpZXMuY3Bw
OgorICAgICAgICAoV2ViS2l0Ojp1bmlxdWVEYXRhYmFzZUlkZW50aWZpZXIpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQVBJVXNlclNjcmlwdC5jcHA6CisgICAgICAgIChBUEk6OlVzZXJTY3Jp
cHQ6OmdlbmVyYXRlVW5pcXVlVVJMKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bv
b2wuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6ZGlkUmVjZWl2ZUludmFs
aWRNZXNzYWdlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0RhdGFiYXNlcy9JbmRleGVkREIvV2Vi
SURCRmFjdG9yeUJhY2tlbmQuY3BwOgorICAgICAgICAoV2ViS2l0Ojpjb21iaW5lZFNlY3VyaXR5
T3JpZ2luSWRlbnRpZmllcik6CisKIDIwMTUtMDQtMDggIEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hh
bUBhcHBsZS5jb20+CiAKICAgICAgICAgW01hY10gV2ViS2l0IGlzIG5vdCBob25vcmluZyBPUyBw
cmVmZXJlbmNlcyBmb3Igc2Vjb25kYXJ5IGNsaWNrIGJlaGF2aW9ycwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0luZGV4ZWREQi9zcWxpdGUvU1FMaXRlSURCQ3Vy
c29yLmNwcCBiL1NvdXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9JbmRleGVkREIvc3FsaXRl
L1NRTGl0ZUlEQkN1cnNvci5jcHAKaW5kZXggYWJlYTFkZC4uYmZmNDg1MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0luZGV4ZWREQi9zcWxpdGUvU1FMaXRlSURC
Q3Vyc29yLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvSW5kZXhlZERC
L3NxbGl0ZS9TUUxpdGVJREJDdXJzb3IuY3BwCkBAIC0xMTcsNyArMTE3LDcgQEAgc3RhdGljIFN0
cmluZyBidWlsZE9iamVjdFN0b3JlU3RhdGVtZW50KGNvbnN0IElEQktleVJhbmdlRGF0YSYga2V5
UmFuZ2UsIEluZGV4ZWQKICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIiBDQVNUKD8gQVMgVEVY
VCkgT1JERVIgQlkga2V5Iik7CiAKICAgICBpZiAoY3Vyc29yRGlyZWN0aW9uID09IEluZGV4ZWRE
Qjo6Q3Vyc29yRGlyZWN0aW9uOjpQcmV2IHx8IGN1cnNvckRpcmVjdGlvbiA9PSBJbmRleGVkREI6
OkN1cnNvckRpcmVjdGlvbjo6UHJldk5vRHVwbGljYXRlKQotICAgICAgICBidWlsZGVyLmFwcGVu
ZCgiIERFU0MiKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgREVTQyIpOwogCiAg
ICAgYnVpbGRlci5hcHBlbmQoJzsnKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvRGF0
YWJhc2VQcm9jZXNzL0luZGV4ZWREQi9zcWxpdGUvVW5pcXVlSURCRGF0YWJhc2VCYWNraW5nU3Rv
cmVTUUxpdGUuY3BwIGIvU291cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0luZGV4ZWREQi9z
cWxpdGUvVW5pcXVlSURCRGF0YWJhc2VCYWNraW5nU3RvcmVTUUxpdGUuY3BwCmluZGV4IGQ4NjA3
NTljLi5hYjk4NWNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3Mv
SW5kZXhlZERCL3NxbGl0ZS9VbmlxdWVJREJEYXRhYmFzZUJhY2tpbmdTdG9yZVNRTGl0ZS5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0luZGV4ZWREQi9zcWxpdGUvVW5p
cXVlSURCRGF0YWJhc2VCYWNraW5nU3RvcmVTUUxpdGUuY3BwCkBAIC02NCwxMCArNjQsOSBAQCBz
dGF0aWMgY29uc3QgU3RyaW5nJiB2MVJlY29yZHNUYWJsZVNjaGVtYSgpCiBzdGF0aWMgY29uc3Qg
U3RyaW5nIHYyUmVjb3Jkc1RhYmxlU2NoZW1hKGNvbnN0IFN0cmluZyYgdGFibGVOYW1lKQogewog
ICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKLSAgICBidWlsZGVyLmFwcGVuZCgiQ1JFQVRFIFRB
QkxFICIpOworICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiQ1JFQVRFIFRBQkxFICIpOwogICAg
IGJ1aWxkZXIuYXBwZW5kKHRhYmxlTmFtZSk7Ci0gICAgYnVpbGRlci5hcHBlbmQoIiAob2JqZWN0
U3RvcmVJRCBJTlRFR0VSIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwsIGtleSBURVhUIENPTExB
VEUgSURCS0VZIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwsIHZhbHVlIE5PVCBOVUxMIE9OIENP
TkZMSUNUIEZBSUwpIik7Ci0KKyAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIiAob2JqZWN0U3Rv
cmVJRCBJTlRFR0VSIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwsIGtleSBURVhUIENPTExBVEUg
SURCS0VZIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwsIHZhbHVlIE5PVCBOVUxMIE9OIENPTkZM
SUNUIEZBSUwpIik7CiAgICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0RhdGFiYXNlcy9JbmRleGVkREIvSURCVXRpbGl0
aWVzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9EYXRhYmFzZXMvSW5kZXhlZERCL0lEQlV0
aWxpdGllcy5jcHAKaW5kZXggZDU2YjY0Ni4uOWVjNzZmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvU2hhcmVkL0RhdGFiYXNlcy9JbmRleGVkREIvSURCVXRpbGl0aWVzLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvRGF0YWJhc2VzL0luZGV4ZWREQi9JREJVdGlsaXRpZXMuY3Bw
CkBAIC00MiwxNCArNDIsMTQgQEAgU3RyaW5nIHVuaXF1ZURhdGFiYXNlSWRlbnRpZmllcihjb25z
dCBTdHJpbmcmIGRhdGFiYXNlTmFtZSwgY29uc3QgV2ViQ29yZTo6U2VjdXIKICAgICBpZiAob3Jp
Z2luU3RyaW5nID09ICJudWxsIikKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogICAgIHN0cmlu
Z0J1aWxkZXIuYXBwZW5kKG9yaWdpblN0cmluZyk7Ci0gICAgc3RyaW5nQnVpbGRlci5hcHBlbmQo
Il8iKTsKKyAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgnXycpOwogCiAgICAgb3JpZ2luU3RyaW5n
ID0gbWFpbkZyYW1lT3JpZ2luLnRvU3RyaW5nKCk7CiAgICAgaWYgKG9yaWdpblN0cmluZyA9PSAi
bnVsbCIpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKICAgICBzdHJpbmdCdWlsZGVyLmFwcGVu
ZChvcmlnaW5TdHJpbmcpOwogCi0gICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIl8iKTsKKyAgICBz
dHJpbmdCdWlsZGVyLmFwcGVuZCgnXycpOwogICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKGRhdGFi
YXNlTmFtZSk7CiAKICAgICByZXR1cm4gc3RyaW5nQnVpbGRlci50b1N0cmluZygpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElVc2VyU2NyaXB0LmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJVXNlclNjcmlwdC5jcHAKaW5kZXggYzY4OTRj
NS4uYjUyODNjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElV
c2VyU2NyaXB0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSVVzZXJT
Y3JpcHQuY3BwCkBAIC00MCw3ICs0MCw3IEBAIHN0YXRpYyB1aW50NjRfdCBnZW5lcmF0ZUlkZW50
aWZpZXIoKQogV2ViQ29yZTo6VVJMIFVzZXJTY3JpcHQ6OmdlbmVyYXRlVW5pcXVlVVJMKCkKIHsK
ICAgICBTdHJpbmdCdWlsZGVyIHVybFN0cmluZ0J1aWxkZXI7Ci0gICAgdXJsU3RyaW5nQnVpbGRl
ci5hcHBlbmQoInVzZXItc2NyaXB0OiIpOworICAgIHVybFN0cmluZ0J1aWxkZXIuYXBwZW5kTGl0
ZXJhbCgidXNlci1zY3JpcHQ6Iik7CiAgICAgdXJsU3RyaW5nQnVpbGRlci5hcHBlbmROdW1iZXIo
Z2VuZXJhdGVJZGVudGlmaWVyKCkpOwogICAgIHJldHVybiBXZWJDb3JlOjpVUkwgeyBXZWJDb3Jl
OjpVUkwgeyB9LCB1cmxTdHJpbmdCdWlsZGVyLnRvU3RyaW5nKCkgfTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCmluZGV4IDkyNzdkZmQuLmMyYWUxNWIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcApAQCAtNTYy
LDcgKzU2Miw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmRpZFJlY2VpdmVJbnZhbGlkTWVzc2Fn
ZShjb25zdCBJUEM6OlN0cmluZ1JlZmVyZW5jZSYgbWVzc2FnCiAKICAgICBTdHJpbmdCdWlsZGVy
IG1lc3NhZ2VOYW1lU3RyaW5nQnVpbGRlcjsKICAgICBtZXNzYWdlTmFtZVN0cmluZ0J1aWxkZXIu
YXBwZW5kKG1lc3NhZ2VSZWNlaXZlck5hbWUuZGF0YSgpLCBtZXNzYWdlUmVjZWl2ZXJOYW1lLnNp
emUoKSk7Ci0gICAgbWVzc2FnZU5hbWVTdHJpbmdCdWlsZGVyLmFwcGVuZCgiLiIpOworICAgIG1l
c3NhZ2VOYW1lU3RyaW5nQnVpbGRlci5hcHBlbmQoJy4nKTsKICAgICBtZXNzYWdlTmFtZVN0cmlu
Z0J1aWxkZXIuYXBwZW5kKG1lc3NhZ2VOYW1lLmRhdGEoKSwgbWVzc2FnZU5hbWUuc2l6ZSgpKTsK
IAogICAgIHNfaW52YWxpZE1lc3NhZ2VDYWxsYmFjayh0b0FQSShBUEk6OlN0cmluZzo6Y3JlYXRl
KG1lc3NhZ2VOYW1lU3RyaW5nQnVpbGRlci50b1N0cmluZygpKS5nZXQoKSkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9EYXRhYmFzZXMvSW5kZXhlZERCL1dlYklEQkZh
Y3RvcnlCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRGF0YWJhc2VzL0lu
ZGV4ZWREQi9XZWJJREJGYWN0b3J5QmFja2VuZC5jcHAKaW5kZXggZjkyNTU3My4uOTkyNzhiNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9EYXRhYmFzZXMvSW5kZXhlZERC
L1dlYklEQkZhY3RvcnlCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L0RhdGFiYXNlcy9JbmRleGVkREIvV2ViSURCRmFjdG9yeUJhY2tlbmQuY3BwCkBAIC03MCw3ICs3
MCw3IEBAIHN0YXRpYyBTdHJpbmcgY29tYmluZWRTZWN1cml0eU9yaWdpbklkZW50aWZpZXIoY29u
c3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4mIG9wCiAgICAgaWYgKG9yaWdpblN0cmluZyA9PSAi
bnVsbCIpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKICAgICBzdHJpbmdCdWlsZGVyLmFwcGVu
ZChvcmlnaW5TdHJpbmcpOwotICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCJfIik7CisgICAgc3Ry
aW5nQnVpbGRlci5hcHBlbmQoJ18nKTsKIAogICAgIG9yaWdpblN0cmluZyA9IG1haW5GcmFtZU9y
aWdpbi50b1N0cmluZygpOwogICAgIGlmIChvcmlnaW5TdHJpbmcgPT0gIm51bGwiKQo=
</data>
<flag name="review"
          id="275197"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>251188</attachid>
            <date>2015-04-20 14:21:06 -0700</date>
            <delta_ts>2015-04-20 15:08:38 -0700</delta_ts>
            <desc>[PATCH] For Landing</desc>
            <filename>for-landing.patch</filename>
            <type>text/plain</type>
            <size>35995</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDJmZTU4ODIuLjg0NDdlMDMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDIyIEBACiAyMDE1LTA0LTIwICBKb3NlcGggUGVjb3Jh
cm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CiAKKyAgICAgICAgQ2xlYW51cCBzb21lIFN0cmluZ0J1
aWxkZXIgdXNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNDM1NTAKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICAq
IHJ1bnRpbWUvU3ltYm9sLmNwcDoKKyAgICAgICAgKEpTQzo6U3ltYm9sOjpkZXNjcmlwdGl2ZVN0
cmluZyk6CisgICAgICAgICogcnVudGltZS9UeXBlUHJvZmlsZXIuY3BwOgorICAgICAgICAoSlND
OjpUeXBlUHJvZmlsZXI6OnR5cGVJbmZvcm1hdGlvbkZvckV4cHJlc3Npb25BdE9mZnNldCk6Cisg
ICAgICAgICogcnVudGltZS9UeXBlU2V0LmNwcDoKKyAgICAgICAgKEpTQzo6VHlwZVNldDo6dG9K
U09OU3RyaW5nKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlU2hhcGU6OnByb3BlcnR5SGFzaCk6
CisgICAgICAgIChKU0M6OlN0cnVjdHVyZVNoYXBlOjpzdHJpbmdSZXByZXNlbnRhdGlvbik6Cisg
ICAgICAgIChKU0M6OlN0cnVjdHVyZVNoYXBlOjp0b0pTT05TdHJpbmcpOgorCisyMDE1LTA0LTIw
ICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CisKICAgICAgICAgV2ViIElu
c3BlY3RvcjogSW1wcm92ZSBTdXBwb3J0IGZvciBXZWFrU2V0IGluIENvbnNvbGUKICAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0Mzk1MQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2wuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sLmNwcAppbmRleCAyOTRmNjdlLi42ZDc5ZDFjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2wuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbC5jcHAKQEAgLTk1LDExICs5NSw3
IEBAIHZvaWQgU3ltYm9sOjpkZXN0cm95KEpTQ2VsbCogY2VsbCkKIAogU3RyaW5nIFN5bWJvbDo6
ZGVzY3JpcHRpdmVTdHJpbmcoKSBjb25zdAogewotICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsK
LSAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIlN5bWJvbCgiKTsKLSAgICBidWlsZGVyLmFwcGVu
ZChwcml2YXRlTmFtZSgpLnVpZCgpKTsKLSAgICBidWlsZGVyLmFwcGVuZCgnKScpOwotICAgIHJl
dHVybiBidWlsZGVyLnRvU3RyaW5nKCk7CisgICAgcmV0dXJuIG1ha2VTdHJpbmcoIlN5bWJvbCgi
LCBTdHJpbmcocHJpdmF0ZU5hbWUoKS51aWQoKSksICcpJyk7CiB9CiAKIH0gLy8gbmFtZXNwYWNl
IEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZVByb2Zp
bGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5cGVQcm9maWxlci5jcHAK
aW5kZXggNmNlNjA3Yy4uZTBmMDZjOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvVHlwZVByb2ZpbGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9UeXBlUHJvZmlsZXIuY3BwCkBAIC04MiwyNyArODIsMjcgQEAgU3RyaW5nIFR5cGVQcm9m
aWxlcjo6dHlwZUluZm9ybWF0aW9uRm9yRXhwcmVzc2lvbkF0T2Zmc2V0KFR5cGVQcm9maWxlclNl
YXJjaERlc2MKIAogICAgIFN0cmluZ0J1aWxkZXIganNvbjsgIAogCi0gICAganNvbi5hcHBlbmQo
InsiKTsKKyAgICBqc29uLmFwcGVuZCgneycpOwogCi0gICAganNvbi5hcHBlbmQoIlwiZ2xvYmFs
VHlwZVNldFwiOiIpOworICAgIGpzb24uYXBwZW5kTGl0ZXJhbCgiXCJnbG9iYWxUeXBlU2V0XCI6
Iik7CiAgICAgaWYgKGxvY2F0aW9uLT5tX2dsb2JhbFR5cGVTZXQgJiYgbG9jYXRpb24tPm1fZ2xv
YmFsVmFyaWFibGVJRCAhPSBUeXBlUHJvZmlsZXJOb0dsb2JhbElERXhpc3RzKQogICAgICAgICBq
c29uLmFwcGVuZChsb2NhdGlvbi0+bV9nbG9iYWxUeXBlU2V0LT50b0pTT05TdHJpbmcoKSk7CiAg
ICAgZWxzZQotICAgICAgICBqc29uLmFwcGVuZCgibnVsbCIpOwotICAgIGpzb24uYXBwZW5kKCIs
Iik7CisgICAgICAgIGpzb24uYXBwZW5kTGl0ZXJhbCgibnVsbCIpOworICAgIGpzb24uYXBwZW5k
KCcsJyk7CiAKLSAgICBqc29uLmFwcGVuZCgiXCJpbnN0cnVjdGlvblR5cGVTZXRcIjoiKTsKKyAg
ICBqc29uLmFwcGVuZExpdGVyYWwoIlwiaW5zdHJ1Y3Rpb25UeXBlU2V0XCI6Iik7CiAgICAganNv
bi5hcHBlbmQobG9jYXRpb24tPm1faW5zdHJ1Y3Rpb25UeXBlU2V0LT50b0pTT05TdHJpbmcoKSk7
Ci0gICAganNvbi5hcHBlbmQoIiwiKTsKKyAgICBqc29uLmFwcGVuZCgnLCcpOwogCi0gICAganNv
bi5hcHBlbmQoIlwiaXNPdmVyZmxvd25cIjoiKTsKKyAgICBqc29uLmFwcGVuZExpdGVyYWwoIlwi
aXNPdmVyZmxvd25cIjoiKTsKICAgICBpZiAobG9jYXRpb24tPm1faW5zdHJ1Y3Rpb25UeXBlU2V0
LT5pc092ZXJmbG93bigpIHx8IChsb2NhdGlvbi0+bV9nbG9iYWxUeXBlU2V0ICYmIGxvY2F0aW9u
LT5tX2dsb2JhbFR5cGVTZXQtPmlzT3ZlcmZsb3duKCkpKQotICAgICAgICBqc29uLmFwcGVuZCgi
dHJ1ZSIpOworICAgICAgICBqc29uLmFwcGVuZExpdGVyYWwoInRydWUiKTsKICAgICBlbHNlCi0g
ICAgICAgIGpzb24uYXBwZW5kKCJmYWxzZSIpOworICAgICAgICBqc29uLmFwcGVuZExpdGVyYWwo
ImZhbHNlIik7CiAKIAotICAgIGpzb24uYXBwZW5kKCJ9Iik7CisgICAganNvbi5hcHBlbmQoJ30n
KTsKICAgICAKICAgICByZXR1cm4ganNvbi50b1N0cmluZygpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZVNldC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9UeXBlU2V0LmNwcAppbmRleCA4MTA3Mzg4Li4wZjU3ZWM0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBlU2V0LmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBlU2V0LmNwcApAQCAtMjUwLDczICsyNTAsNzMg
QEAgU3RyaW5nIFR5cGVTZXQ6OnRvSlNPTlN0cmluZygpIGNvbnN0CiAgICAgLy8gICAgIHN0cnVj
dHVyZXM6ICdBcnJheTxKU09OPFN0cnVjdHVyZVNoYXBlPj4nCiAKICAgICBTdHJpbmdCdWlsZGVy
IGpzb247Ci0gICAganNvbi5hcHBlbmQoInsiKTsKKyAgICBqc29uLmFwcGVuZCgneycpOwogCi0g
ICAganNvbi5hcHBlbmQoIlwiZGlzcGxheVR5cGVOYW1lXCI6Iik7Ci0gICAganNvbi5hcHBlbmQo
IlwiIik7CisgICAganNvbi5hcHBlbmRMaXRlcmFsKCJcImRpc3BsYXlUeXBlTmFtZVwiOiIpOwor
ICAgIGpzb24uYXBwZW5kKCciJyk7CiAgICAganNvbi5hcHBlbmQoZGlzcGxheU5hbWUoKSk7Ci0g
ICAganNvbi5hcHBlbmQoIlwiIik7Ci0gICAganNvbi5hcHBlbmQoIiwiKTsKKyAgICBqc29uLmFw
cGVuZCgnIicpOworICAgIGpzb24uYXBwZW5kKCcsJyk7CiAKLSAgICBqc29uLmFwcGVuZCgiXCJw
cmltaXRpdmVUeXBlTmFtZXNcIjoiKTsKLSAgICBqc29uLmFwcGVuZCgiWyIpOworICAgIGpzb24u
YXBwZW5kTGl0ZXJhbCgiXCJwcmltaXRpdmVUeXBlTmFtZXNcIjoiKTsKKyAgICBqc29uLmFwcGVu
ZCgnWycpOwogICAgIGJvb2wgaGFzQW5JdGVtID0gZmFsc2U7CiAgICAgaWYgKG1fc2VlblR5cGVz
ICYgVHlwZVVuZGVmaW5lZCkgewogICAgICAgICBoYXNBbkl0ZW0gPSB0cnVlOwotICAgICAgICBq
c29uLmFwcGVuZCgiXCJVbmRlZmluZWRcIiIpOworICAgICAgICBqc29uLmFwcGVuZExpdGVyYWwo
IlwiVW5kZWZpbmVkXCIiKTsKICAgICB9CiAgICAgaWYgKG1fc2VlblR5cGVzICYgVHlwZU51bGwp
IHsKICAgICAgICAgaWYgKGhhc0FuSXRlbSkKLSAgICAgICAgICAgIGpzb24uYXBwZW5kKCIsIik7
CisgICAgICAgICAgICBqc29uLmFwcGVuZCgnLCcpOwogICAgICAgICBoYXNBbkl0ZW0gPSB0cnVl
OwotICAgICAgICBqc29uLmFwcGVuZCgiXCJOdWxsXCIiKTsKKyAgICAgICAganNvbi5hcHBlbmRM
aXRlcmFsKCJcIk51bGxcIiIpOwogICAgIH0KICAgICBpZiAobV9zZWVuVHlwZXMgJiBUeXBlQm9v
bGVhbikgewogICAgICAgICBpZiAoaGFzQW5JdGVtKQotICAgICAgICAgICAganNvbi5hcHBlbmQo
IiwiKTsKKyAgICAgICAgICAgIGpzb24uYXBwZW5kKCcsJyk7CiAgICAgICAgIGhhc0FuSXRlbSA9
IHRydWU7Ci0gICAgICAgIGpzb24uYXBwZW5kKCJcIkJvb2xlYW5cIiIpOworICAgICAgICBqc29u
LmFwcGVuZExpdGVyYWwoIlwiQm9vbGVhblwiIik7CiAgICAgfQogICAgIGlmIChtX3NlZW5UeXBl
cyAmIFR5cGVNYWNoaW5lSW50KSB7CiAgICAgICAgIGlmIChoYXNBbkl0ZW0pCi0gICAgICAgICAg
ICBqc29uLmFwcGVuZCgiLCIpOworICAgICAgICAgICAganNvbi5hcHBlbmQoJywnKTsKICAgICAg
ICAgaGFzQW5JdGVtID0gdHJ1ZTsKLSAgICAgICAganNvbi5hcHBlbmQoIlwiSW50ZWdlclwiIik7
CisgICAgICAgIGpzb24uYXBwZW5kTGl0ZXJhbCgiXCJJbnRlZ2VyXCIiKTsKICAgICB9CiAgICAg
aWYgKG1fc2VlblR5cGVzICYgVHlwZU51bWJlcikgewogICAgICAgICBpZiAoaGFzQW5JdGVtKQot
ICAgICAgICAgICAganNvbi5hcHBlbmQoIiwiKTsKKyAgICAgICAgICAgIGpzb24uYXBwZW5kKCcs
Jyk7CiAgICAgICAgIGhhc0FuSXRlbSA9IHRydWU7Ci0gICAgICAgIGpzb24uYXBwZW5kKCJcIk51
bWJlclwiIik7CisgICAgICAgIGpzb24uYXBwZW5kTGl0ZXJhbCgiXCJOdW1iZXJcIiIpOwogICAg
IH0KICAgICBpZiAobV9zZWVuVHlwZXMgJiBUeXBlU3RyaW5nKSB7CiAgICAgICAgIGlmIChoYXNB
bkl0ZW0pCi0gICAgICAgICAgICBqc29uLmFwcGVuZCgiLCIpOworICAgICAgICAgICAganNvbi5h
cHBlbmQoJywnKTsKICAgICAgICAgaGFzQW5JdGVtID0gdHJ1ZTsKLSAgICAgICAganNvbi5hcHBl
bmQoIlwiU3RyaW5nXCIiKTsKKyAgICAgICAganNvbi5hcHBlbmRMaXRlcmFsKCJcIlN0cmluZ1wi
Iik7CiAgICAgfQogICAgIGlmIChtX3NlZW5UeXBlcyAmIFR5cGVTeW1ib2wpIHsKICAgICAgICAg
aWYgKGhhc0FuSXRlbSkKLSAgICAgICAgICAgIGpzb24uYXBwZW5kKCIsIik7CisgICAgICAgICAg
ICBqc29uLmFwcGVuZCgnLCcpOwogICAgICAgICBoYXNBbkl0ZW0gPSB0cnVlOwotICAgICAgICBq
c29uLmFwcGVuZCgiXCJTeW1ib2xcIiIpOworICAgICAgICBqc29uLmFwcGVuZExpdGVyYWwoIlwi
U3ltYm9sXCIiKTsKICAgICB9Ci0gICAganNvbi5hcHBlbmQoIl0iKTsKKyAgICBqc29uLmFwcGVu
ZCgnXScpOwogCi0gICAganNvbi5hcHBlbmQoIiwiKTsKKyAgICBqc29uLmFwcGVuZCgnLCcpOwog
Ci0gICAganNvbi5hcHBlbmQoIlwic3RydWN0dXJlc1wiOiIpOwotICAgIGpzb24uYXBwZW5kKCJb
Iik7CisgICAganNvbi5hcHBlbmRMaXRlcmFsKCJcInN0cnVjdHVyZXNcIjoiKTsKKyAgICBqc29u
LmFwcGVuZCgnWycpOwogICAgIGhhc0FuSXRlbSA9IGZhbHNlOwogICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgbV9zdHJ1Y3R1cmVIaXN0b3J5LnNpemUoKTsgaSsrKSB7CiAgICAgICAgIGlmICho
YXNBbkl0ZW0pCi0gICAgICAgICAgICBqc29uLmFwcGVuZCgiLCIpOworICAgICAgICAgICAganNv
bi5hcHBlbmQoJywnKTsKICAgICAgICAgaGFzQW5JdGVtID0gdHJ1ZTsKICAgICAgICAganNvbi5h
cHBlbmQobV9zdHJ1Y3R1cmVIaXN0b3J5W2ldLT50b0pTT05TdHJpbmcoKSk7CiAgICAgfQotICAg
IGpzb24uYXBwZW5kKCJdIik7CisgICAganNvbi5hcHBlbmQoJ10nKTsKIAotICAgIGpzb24uYXBw
ZW5kKCJ9Iik7CisgICAganNvbi5hcHBlbmQoJ30nKTsKICAgICByZXR1cm4ganNvbi50b1N0cmlu
ZygpOwogfQogCkBAIC0zNTksNyArMzU5LDcgQEAgU3RyaW5nIFN0cnVjdHVyZVNoYXBlOjpwcm9w
ZXJ0eUhhc2goKQogCiAgICAgaWYgKG1fcHJvdG8pIHsKICAgICAgICAgYnVpbGRlci5hcHBlbmQo
JzonKTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmQoIl9fcHJvdG9fXyIpOworICAgICAgICBidWls
ZGVyLmFwcGVuZExpdGVyYWwoIl9fcHJvdG9fXyIpOwogICAgICAgICBidWlsZGVyLmFwcGVuZCht
X3Byb3RvLT5wcm9wZXJ0eUhhc2goKSk7CiAgICAgfQogCkBAIC00MDksMTMgKzQwOSwxMyBAQCBT
dHJpbmcgU3RydWN0dXJlU2hhcGU6OnN0cmluZ1JlcHJlc2VudGF0aW9uKCkKICAgICAgICAgZm9y
IChhdXRvIGl0ID0gY3VyU2hhcGUtPm1fZmllbGRzLmJlZ2luKCksIGVuZCA9IGN1clNoYXBlLT5t
X2ZpZWxkcy5lbmQoKTsgaXQgIT0gZW5kOyArK2l0KSB7CiAgICAgICAgICAgICBTdHJpbmcgcHJv
cCgoKml0KS5nZXQoKSk7CiAgICAgICAgICAgICByZXByZXNlbnRhdGlvbi5hcHBlbmQocHJvcCk7
Ci0gICAgICAgICAgICByZXByZXNlbnRhdGlvbi5hcHBlbmQoIiwgIik7CisgICAgICAgICAgICBy
ZXByZXNlbnRhdGlvbi5hcHBlbmRMaXRlcmFsKCIsICIpOwogICAgICAgICB9CiAKICAgICAgICAg
aWYgKGN1clNoYXBlLT5tX3Byb3RvKSB7Ci0gICAgICAgICAgICBTdHJpbmcgcHJvdCA9IG1ha2VT
dHJpbmcoIl9fcHJvdG9fXyBbIiwgY3VyU2hhcGUtPm1fcHJvdG8tPm1fY29uc3RydWN0b3JOYW1l
LCAnXScpOwotICAgICAgICAgICAgcmVwcmVzZW50YXRpb24uYXBwZW5kKHByb3QpOwotICAgICAg
ICAgICAgcmVwcmVzZW50YXRpb24uYXBwZW5kKCIsICIpOworICAgICAgICAgICAgcmVwcmVzZW50
YXRpb24uYXBwZW5kTGl0ZXJhbCgiX19wcm90b19fIFsiKTsKKyAgICAgICAgICAgIHJlcHJlc2Vu
dGF0aW9uLmFwcGVuZChjdXJTaGFwZS0+bV9wcm90by0+bV9jb25zdHJ1Y3Rvck5hbWUpOworICAg
ICAgICAgICAgcmVwcmVzZW50YXRpb24uYXBwZW5kTGl0ZXJhbCgiXSwgIik7CiAgICAgICAgIH0K
IAogICAgICAgICBjdXJTaGFwZSA9IGN1clNoYXBlLT5tX3Byb3RvOwpAQCAtNDM4LDYwICs0Mzgs
NjAgQEAgU3RyaW5nIFN0cnVjdHVyZVNoYXBlOjp0b0pTT05TdHJpbmcoKSBjb25zdAogICAgIC8v
ICAgICBwcm90bzogJ0pTT048U3RydWN0dXJlU2hhcGU+IHwgbnVsbCcKIAogICAgIFN0cmluZ0J1
aWxkZXIganNvbjsKLSAgICBqc29uLmFwcGVuZCgieyIpOworICAgIGpzb24uYXBwZW5kKCd7Jyk7
CiAKLSAgICBqc29uLmFwcGVuZCgiXCJjb25zdHJ1Y3Rvck5hbWVcIjoiKTsKLSAgICBqc29uLmFw
cGVuZCgiXCIiKTsKKyAgICBqc29uLmFwcGVuZExpdGVyYWwoIlwiY29uc3RydWN0b3JOYW1lXCI6
Iik7CisgICAganNvbi5hcHBlbmQoJyInKTsKICAgICBqc29uLmFwcGVuZChtX2NvbnN0cnVjdG9y
TmFtZSk7Ci0gICAganNvbi5hcHBlbmQoIlwiIik7Ci0gICAganNvbi5hcHBlbmQoIiwiKTsKKyAg
ICBqc29uLmFwcGVuZCgnIicpOworICAgIGpzb24uYXBwZW5kKCcsJyk7CiAKLSAgICBqc29uLmFw
cGVuZCgiXCJpc0luRGljdGlvbmFyeU1vZGVcIjoiKTsKKyAgICBqc29uLmFwcGVuZExpdGVyYWwo
IlwiaXNJbkRpY3Rpb25hcnlNb2RlXCI6Iik7CiAgICAgaWYgKG1faXNJbkRpY3Rpb25hcnlNb2Rl
KQotICAgICAgICBqc29uLmFwcGVuZCgidHJ1ZSIpOworICAgICAgICBqc29uLmFwcGVuZExpdGVy
YWwoInRydWUiKTsKICAgICBlbHNlCi0gICAgICAgIGpzb24uYXBwZW5kKCJmYWxzZSIpOwotICAg
IGpzb24uYXBwZW5kKCIsIik7CisgICAgICAgIGpzb24uYXBwZW5kTGl0ZXJhbCgiZmFsc2UiKTsK
KyAgICBqc29uLmFwcGVuZCgnLCcpOwogCi0gICAganNvbi5hcHBlbmQoIlwiZmllbGRzXCI6Iik7
Ci0gICAganNvbi5hcHBlbmQoIlsiKTsKKyAgICBqc29uLmFwcGVuZExpdGVyYWwoIlwiZmllbGRz
XCI6Iik7CisgICAganNvbi5hcHBlbmQoJ1snKTsKICAgICBib29sIGhhc0FuSXRlbSA9IGZhbHNl
OwogICAgIGZvciAoYXV0byBpdCA9IG1fZmllbGRzLmJlZ2luKCksIGVuZCA9IG1fZmllbGRzLmVu
ZCgpOyBpdCAhPSBlbmQ7ICsraXQpIHsKICAgICAgICAgaWYgKGhhc0FuSXRlbSkKLSAgICAgICAg
ICAgIGpzb24uYXBwZW5kKCIsIik7CisgICAgICAgICAgICBqc29uLmFwcGVuZCgnLCcpOwogICAg
ICAgICBoYXNBbkl0ZW0gPSB0cnVlOwogCiAgICAgICAgIFN0cmluZyBmaWVsZE5hbWUoKCppdCku
Z2V0KCkpOwotICAgICAgICBqc29uLmFwcGVuZCgiXCIiKTsKKyAgICAgICAganNvbi5hcHBlbmQo
JyInKTsKICAgICAgICAganNvbi5hcHBlbmQoZmllbGROYW1lKTsKLSAgICAgICAganNvbi5hcHBl
bmQoIlwiIik7CisgICAgICAgIGpzb24uYXBwZW5kKCciJyk7CiAgICAgfQotICAgIGpzb24uYXBw
ZW5kKCJdIik7Ci0gICAganNvbi5hcHBlbmQoIiwiKTsKKyAgICBqc29uLmFwcGVuZCgnXScpOwor
ICAgIGpzb24uYXBwZW5kKCcsJyk7CiAKLSAgICBqc29uLmFwcGVuZCgiXCJvcHRpb25hbEZpZWxk
c1wiOiIpOwotICAgIGpzb24uYXBwZW5kKCJbIik7CisgICAganNvbi5hcHBlbmRMaXRlcmFsKCJc
Im9wdGlvbmFsRmllbGRzXCI6Iik7CisgICAganNvbi5hcHBlbmQoJ1snKTsKICAgICBoYXNBbkl0
ZW0gPSBmYWxzZTsKICAgICBmb3IgKGF1dG8gaXQgPSBtX29wdGlvbmFsRmllbGRzLmJlZ2luKCks
IGVuZCA9IG1fb3B0aW9uYWxGaWVsZHMuZW5kKCk7IGl0ICE9IGVuZDsgKytpdCkgewogICAgICAg
ICBpZiAoaGFzQW5JdGVtKQotICAgICAgICAgICAganNvbi5hcHBlbmQoIiwiKTsKKyAgICAgICAg
ICAgIGpzb24uYXBwZW5kKCcsJyk7CiAgICAgICAgIGhhc0FuSXRlbSA9IHRydWU7CiAKICAgICAg
ICAgU3RyaW5nIGZpZWxkTmFtZSgoKml0KS5nZXQoKSk7Ci0gICAgICAgIGpzb24uYXBwZW5kKCJc
IiIpOworICAgICAgICBqc29uLmFwcGVuZCgnIicpOwogICAgICAgICBqc29uLmFwcGVuZChmaWVs
ZE5hbWUpOwotICAgICAgICBqc29uLmFwcGVuZCgiXCIiKTsKKyAgICAgICAganNvbi5hcHBlbmQo
JyInKTsKICAgICB9Ci0gICAganNvbi5hcHBlbmQoIl0iKTsKLSAgICBqc29uLmFwcGVuZCgiLCIp
OworICAgIGpzb24uYXBwZW5kKCddJyk7CisgICAganNvbi5hcHBlbmQoJywnKTsKIAotICAgIGpz
b24uYXBwZW5kKCJcInByb3RvXCI6Iik7CisgICAganNvbi5hcHBlbmRMaXRlcmFsKCJcInByb3Rv
XCI6Iik7CiAgICAgaWYgKG1fcHJvdG8pCiAgICAgICAgIGpzb24uYXBwZW5kKG1fcHJvdG8tPnRv
SlNPTlN0cmluZygpKTsKICAgICBlbHNlCi0gICAgICAgIGpzb24uYXBwZW5kKCJudWxsIik7Cisg
ICAgICAgIGpzb24uYXBwZW5kTGl0ZXJhbCgibnVsbCIpOwogCi0gICAganNvbi5hcHBlbmQoIn0i
KTsKKyAgICBqc29uLmFwcGVuZCgnfScpOwogCiAgICAgcmV0dXJuIGpzb24udG9TdHJpbmcoKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZwppbmRleCA4NmE4ODA4Li4wZTFkNjY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
NDYgQEAKKzIwMTUtMDQtMjAgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4K
KworICAgICAgICBDbGVhbnVwIHNvbWUgU3RyaW5nQnVpbGRlciB1c2UKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MzU1MAorCisgICAgICAgIFJldmll
d2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgICogTW9kdWxlcy9wbHVnaW5zL1lvdVR1YmVQ
bHVnaW5SZXBsYWNlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpZb3VUdWJlUGx1Z2luUmVw
bGFjZW1lbnQ6OnlvdVR1YmVVUkwpOgorICAgICAgICAqIGNzcy9DU1NBbmltYXRpb25UcmlnZ2Vy
U2Nyb2xsVmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTQW5pbWF0aW9uVHJpZ2dlclNj
cm9sbFZhbHVlOjpjdXN0b21DU1NUZXh0KToKKyAgICAgICAgKiBjc3MvQ1NTQ2FudmFzVmFsdWUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTQ2FudmFzVmFsdWU6OmN1c3RvbUNTU1RleHQpOgor
ICAgICAgICAqIGh0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTENhbnZhc0VsZW1lbnQ6OmNyZWF0ZUltYWdlQnVmZmVyKToKKyAgICAgICAgKiBwYWdlL0Nh
cHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhcHRp
b25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGOjpjYXB0aW9uc1dpbmRvd0NTUyk6CisgICAgICAgIChX
ZWJDb3JlOjpDYXB0aW9uVXNlclByZWZlcmVuY2VzTWVkaWFBRjo6d2luZG93Um91bmRlZENvcm5l
clJhZGl1c0NTUyk6CisgICAgICAgIChXZWJDb3JlOjpDYXB0aW9uVXNlclByZWZlcmVuY2VzTWVk
aWFBRjo6Y3NzUHJvcGVydHlXaXRoVGV4dEVkZ2VDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpD
YXB0aW9uVXNlclByZWZlcmVuY2VzTWVkaWFBRjo6Y29sb3JQcm9wZXJ0eUNTUyk6CisgICAgICAg
IChXZWJDb3JlOjpDYXB0aW9uVXNlclByZWZlcmVuY2VzTWVkaWFBRjo6Y2FwdGlvbnNEZWZhdWx0
Rm9udENTUyk6CisgICAgICAgIChXZWJDb3JlOjpDYXB0aW9uVXNlclByZWZlcmVuY2VzTWVkaWFB
Rjo6Y2FwdGlvbnNTdHlsZVNoZWV0T3ZlcnJpZGUpOgorICAgICAgICAqIHBhZ2UvRXZlbnRTb3Vy
Y2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRTb3VyY2U6OmRpZFJlY2VpdmVSZXNwb25z
ZSk6CisgICAgICAgICogcGFnZS9QYWdlU2VyaWFsaXplci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpQYWdlU2VyaWFsaXplcjo6c2VyaWFsaXplQ1NTU3R5bGVTaGVldCk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvT3BlbkdMU2hpbXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6bG9va3Vw
T3BlbkdMRnVuY3Rpb25BZGRyZXNzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRi5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGOjpwcm9jZXNzQ3VlQXR0cmlidXRlcyk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMQ29t
bW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmdlbmVyYXRlSGFzaGVkTmFtZSk6CisgICAgICAg
ICogcGxhdGZvcm0vdGV4dC9EYXRlVGltZUZvcm1hdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpE
YXRlVGltZUZvcm1hdDo6cXVvdGVBbmRBcHBlbmRMaXRlcmFsKToKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxh
eWVyQ29tcG9zaXRvcjo6bG9nTGF5ZXJJbmZvKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
VHJlZUFzVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjp3cml0ZVJlbmRlclJlZ2lvbkxpc3Qp
OgorICAgICAgICAqIHRlc3RpbmcvTWljcm9UYXNrVGVzdC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpNaWNyb1Rhc2tUZXN0OjpydW4pOgorICAgICAgICAqIHRlc3RpbmcvTW9ja0NvbnRlbnRGaWx0
ZXJTZXR0aW5ncy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRp
bmdzOjp1bmJsb2NrUmVxdWVzdFVSTCk6CisKIDIwMTUtMDQtMjAgIEJyYWR5IEVpZHNvbiAgPGJl
aWRzb25AYXBwbGUuY29tPgogCiAgICAgICAgIENyYXNoIGluIFN0eWxlUmVzb2x2ZXI6OmludmFs
aWRhdGVNYXRjaGVkUHJvcGVydGllc0NhY2hlKCkgd2hlbiB1c2luZyBjb250ZW50IGV4dGVuc2lv
bnMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMvWW91VHViZVBs
dWdpblJlcGxhY2VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lucy9Zb3VU
dWJlUGx1Z2luUmVwbGFjZW1lbnQuY3BwCmluZGV4IDA4ZWNjNWQuLmEwNDI5MzMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lucy9Zb3VUdWJlUGx1Z2luUmVwbGFjZW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lucy9Zb3VUdWJlUGx1Z2lu
UmVwbGFjZW1lbnQuY3BwCkBAIC0zMjYsMTMgKzMyNiwxMyBAQCBTdHJpbmcgWW91VHViZVBsdWdp
blJlcGxhY2VtZW50Ojp5b3VUdWJlVVJMKGNvbnN0IFN0cmluZyYgc3JjU3RyaW5nKQogICAgIC8v
IFNlZTogPHJkYXI6Ly9wcm9ibGVtLzExNTM1MTU1PgogICAgIFN0cmluZ0J1aWxkZXIgZmluYWxV
Ukw7CiAgICAgaWYgKGlzWW91VHViZVNob3J0ZW5lZFVSTCkKLSAgICAgICAgZmluYWxVUkwuYXBw
ZW5kKCJodHRwOi8vd3d3LnlvdXR1YmUuY29tIik7CisgICAgICAgIGZpbmFsVVJMLmFwcGVuZExp
dGVyYWwoImh0dHA6Ly93d3cueW91dHViZS5jb20iKTsKICAgICBlbHNlCiAgICAgICAgIGZpbmFs
VVJMLmFwcGVuZChzcmNVUkxQcmVmaXgpOwogICAgIGZpbmFsVVJMLmFwcGVuZExpdGVyYWwoIi9l
bWJlZC8iKTsKICAgICBmaW5hbFVSTC5hcHBlbmQodmlkZW9JRCk7CiAgICAgaWYgKCFxdWVyeS5p
c0VtcHR5KCkpIHsKLSAgICAgICAgZmluYWxVUkwuYXBwZW5kTGl0ZXJhbCgiPyIpOworICAgICAg
ICBmaW5hbFVSTC5hcHBlbmQoJz8nKTsKICAgICAgICAgZmluYWxVUkwuYXBwZW5kKHF1ZXJ5KTsK
ICAgICB9CiAgICAgcmV0dXJuIGZpbmFsVVJMLnRvU3RyaW5nKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTQW5pbWF0aW9uVHJpZ2dlclNjcm9sbFZhbHVlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NBbmltYXRpb25UcmlnZ2VyU2Nyb2xsVmFsdWUuY3BwCmluZGV4IDdh
ZGRmOGEuLmFhNmY0NjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NBbmltYXRp
b25UcmlnZ2VyU2Nyb2xsVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NBbmlt
YXRpb25UcmlnZ2VyU2Nyb2xsVmFsdWUuY3BwCkBAIC0zNSwxMCArMzUsMTAgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogU3RyaW5nIENTU0FuaW1hdGlvblRyaWdnZXJTY3JvbGxWYWx1ZTo6Y3VzdG9t
Q1NTVGV4dCgpIGNvbnN0CiB7CiAgICAgU3RyaW5nQnVpbGRlciByZXN1bHQ7Ci0gICAgcmVzdWx0
LmFwcGVuZCgiY29udGFpbmVyLXNjcm9sbCgiKTsKKyAgICByZXN1bHQuYXBwZW5kTGl0ZXJhbCgi
Y29udGFpbmVyLXNjcm9sbCgiKTsKICAgICByZXN1bHQuYXBwZW5kKG1fc3RhcnRWYWx1ZS0+Y3Nz
VGV4dCgpKTsKICAgICBpZiAobV9lbmRWYWx1ZSkgewotICAgICAgICByZXN1bHQuYXBwZW5kKCIs
ICIpOworICAgICAgICByZXN1bHQuYXBwZW5kTGl0ZXJhbCgiLCAiKTsKICAgICAgICAgcmVzdWx0
LmFwcGVuZChtX2VuZFZhbHVlLT5jc3NUZXh0KCkpOwogICAgIH0KICAgICByZXN1bHQuYXBwZW5k
KCcpJyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ2FudmFzVmFsdWUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NhbnZhc1ZhbHVlLmNwcAppbmRleCA0MzExMDcxLi5l
YzUyMjI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ2FudmFzVmFsdWUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDYW52YXNWYWx1ZS5jcHAKQEAgLTI4LDcgKzI4
LDYgQEAKIAogI2luY2x1ZGUgIkltYWdlQnVmZmVyLmgiCiAjaW5jbHVkZSAiUmVuZGVyRWxlbWVu
dC5oIgotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCkBAIC00MCwxMSArMzksNyBAQCBDU1NDYW52YXNWYWx1ZTo6fkNTU0NhbnZhc1Zh
bHVlKCkKIAogU3RyaW5nIENTU0NhbnZhc1ZhbHVlOjpjdXN0b21DU1NUZXh0KCkgY29uc3QKIHsK
LSAgICBTdHJpbmdCdWlsZGVyIHJlc3VsdDsKLSAgICByZXN1bHQuYXBwZW5kTGl0ZXJhbCgiLXdl
YmtpdC1jYW52YXMoIik7Ci0gICAgcmVzdWx0LmFwcGVuZChtX25hbWUpOwotICAgIHJlc3VsdC5h
cHBlbmQoJyknKTsKLSAgICByZXR1cm4gcmVzdWx0LnRvU3RyaW5nKCk7CisgICAgcmV0dXJuIG1h
a2VTdHJpbmcoIi13ZWJraXQtY2FudmFzKCIsIG1fbmFtZSwgJyknKTsKIH0KIAogdm9pZCBDU1ND
YW52YXNWYWx1ZTo6Y2FudmFzQ2hhbmdlZChIVE1MQ2FudmFzRWxlbWVudCYsIGNvbnN0IEZsb2F0
UmVjdCYgY2hhbmdlZFJlY3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxD
YW52YXNFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQu
Y3BwCmluZGV4IGVlZDcwYWEuLmU5NDY3MmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENh
bnZhc0VsZW1lbnQuY3BwCkBAIC01NTgsOSArNTU4LDkgQEAgdm9pZCBIVE1MQ2FudmFzRWxlbWVu
dDo6Y3JlYXRlSW1hZ2VCdWZmZXIoKSBjb25zdAogCiAgICAgaWYgKGRldmljZVNpemUud2lkdGgo
KSAqIGRldmljZVNpemUuaGVpZ2h0KCkgPiBNYXhDYW52YXNBcmVhKSB7CiAgICAgICAgIFN0cmlu
Z0J1aWxkZXIgc3RyaW5nQnVpbGRlcjsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIkNh
bnZhcyBhcmVhIGV4Y2VlZHMgdGhlIG1heGltdW0gbGltaXQgKHdpZHRoICogaGVpZ2h0ID4gIik7
CisgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiQ2FudmFzIGFyZWEgZXhjZWVk
cyB0aGUgbWF4aW11bSBsaW1pdCAod2lkdGggKiBoZWlnaHQgPiAiKTsKICAgICAgICAgc3RyaW5n
QnVpbGRlci5hcHBlbmROdW1iZXIoTWF4Q2FudmFzQXJlYSk7Ci0gICAgICAgIHN0cmluZ0J1aWxk
ZXIuYXBwZW5kKCIpLiIpOworICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZExpdGVyYWwoIiku
Iik7CiAgICAgICAgIGRvY3VtZW50KCkuYWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6
SlMsIE1lc3NhZ2VMZXZlbDo6V2FybmluZywgc3RyaW5nQnVpbGRlci50b1N0cmluZygpKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2Fw
dGlvblVzZXJQcmVmZXJlbmNlc01lZGlhQUYuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DYXB0
aW9uVXNlclByZWZlcmVuY2VzTWVkaWFBRi5jcHAKaW5kZXggZjI3MjU2Zi4uNWIxNTM1ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzTWVkaWFB
Ri5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzTWVk
aWFBRi5jcHAKQEAgLTIzNCwxMiArMjM0LDcgQEAgU3RyaW5nIENhcHRpb25Vc2VyUHJlZmVyZW5j
ZXNNZWRpYUFGOjpjYXB0aW9uc1dpbmRvd0NTUygpIGNvbnN0CiAgICAgaWYgKCFvcGFjaXR5KQog
ICAgICAgICByZXR1cm4gd2luZG93U3R5bGU7CiAKLSAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7
Ci0gICAgYnVpbGRlci5hcHBlbmQod2luZG93U3R5bGUpOwotICAgIGJ1aWxkZXIuYXBwZW5kKGdl
dFByb3BlcnR5TmFtZVN0cmluZyhDU1NQcm9wZXJ0eVBhZGRpbmcpKTsKLSAgICBidWlsZGVyLmFw
cGVuZCgiOiAuNGVtICFpbXBvcnRhbnQ7Iik7Ci0KLSAgICByZXR1cm4gYnVpbGRlci50b1N0cmlu
ZygpOworICAgIHJldHVybiBtYWtlU3RyaW5nKHdpbmRvd1N0eWxlLCBnZXRQcm9wZXJ0eU5hbWVT
dHJpbmcoQ1NTUHJvcGVydHlQYWRkaW5nKSwgIjogLjRlbSAhaW1wb3J0YW50OyIpOwogfQogCiBT
dHJpbmcgQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlhQUY6OmNhcHRpb25zQmFja2dyb3VuZENT
UygpIGNvbnN0CkBAIC0zMDAsNyArMjk1LDcgQEAgU3RyaW5nIENhcHRpb25Vc2VyUHJlZmVyZW5j
ZXNNZWRpYUFGOjp3aW5kb3dSb3VuZGVkQ29ybmVyUmFkaXVzQ1NTKCkgY29uc3QKICAgICBidWls
ZGVyLmFwcGVuZChnZXRQcm9wZXJ0eU5hbWVTdHJpbmcoQ1NTUHJvcGVydHlCb3JkZXJSYWRpdXMp
KTsKICAgICBidWlsZGVyLmFwcGVuZChTdHJpbmc6OmZvcm1hdCgiOiUuMDJmcHgiLCByYWRpdXMp
KTsKICAgICBpZiAoYmVoYXZpb3IgPT0ga01BQ2FwdGlvbkFwcGVhcmFuY2VCZWhhdmlvclVzZVZh
bHVlKQotICAgICAgICBidWlsZGVyLmFwcGVuZCgiICFpbXBvcnRhbnQiKTsKKyAgICAgICAgYnVp
bGRlci5hcHBlbmRMaXRlcmFsKCIgIWltcG9ydGFudCIpOwogICAgIGJ1aWxkZXIuYXBwZW5kKCc7
Jyk7CiAKICAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOwpAQCAtMzI3LDcgKzMyMiw3IEBA
IFN0cmluZyBDYXB0aW9uVXNlclByZWZlcmVuY2VzTWVkaWFBRjo6Y3NzUHJvcGVydHlXaXRoVGV4
dEVkZ2VDb2xvcihDU1NQcm9wZXJ0eUlECiAgICAgYnVpbGRlci5hcHBlbmQoJyAnKTsKICAgICBi
dWlsZGVyLmFwcGVuZChjYXB0aW9uc0VkZ2VDb2xvckZvclRleHRDb2xvcih0ZXh0Q29sb3IpLnNl
cmlhbGl6ZWQoKSk7CiAgICAgaWYgKGltcG9ydGFudCkKLSAgICAgICAgYnVpbGRlci5hcHBlbmQo
IiAhaW1wb3J0YW50Iik7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiICFpbXBvcnRh
bnQiKTsKICAgICBidWlsZGVyLmFwcGVuZCgnOycpOwogICAgIAogICAgIHJldHVybiBidWlsZGVy
LnRvU3RyaW5nKCk7CkBAIC0zNDEsNyArMzM2LDcgQEAgU3RyaW5nIENhcHRpb25Vc2VyUHJlZmVy
ZW5jZXNNZWRpYUFGOjpjb2xvclByb3BlcnR5Q1NTKENTU1Byb3BlcnR5SUQgaWQsIGNvbnN0IEMK
ICAgICBidWlsZGVyLmFwcGVuZCgnOicpOwogICAgIGJ1aWxkZXIuYXBwZW5kKGNvbG9yLnNlcmlh
bGl6ZWQoKSk7CiAgICAgaWYgKGltcG9ydGFudCkKLSAgICAgICAgYnVpbGRlci5hcHBlbmQoIiAh
aW1wb3J0YW50Iik7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiICFpbXBvcnRhbnQi
KTsKICAgICBidWlsZGVyLmFwcGVuZCgnOycpOwogICAgIAogICAgIHJldHVybiBidWlsZGVyLnRv
U3RyaW5nKCk7CkBAIC0zOTksMTEgKzM5NCwxMSBAQCBTdHJpbmcgQ2FwdGlvblVzZXJQcmVmZXJl
bmNlc01lZGlhQUY6OmNhcHRpb25zRGVmYXVsdEZvbnRDU1MoKSBjb25zdAogICAgIFN0cmluZ0J1
aWxkZXIgYnVpbGRlcjsKICAgICAKICAgICBidWlsZGVyLmFwcGVuZChnZXRQcm9wZXJ0eU5hbWVT
dHJpbmcoQ1NTUHJvcGVydHlGb250RmFtaWx5KSk7Ci0gICAgYnVpbGRlci5hcHBlbmQoIjogXCIi
KTsKKyAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIjogXCIiKTsKICAgICBidWlsZGVyLmFwcGVu
ZChzdGF0aWNfY2FzdDxDRlN0cmluZ1JlZj4obmFtZS5nZXQoKSkpOwogICAgIGJ1aWxkZXIuYXBw
ZW5kKCciJyk7CiAgICAgaWYgKGJlaGF2aW9yID09IGtNQUNhcHRpb25BcHBlYXJhbmNlQmVoYXZp
b3JVc2VWYWx1ZSkKLSAgICAgICAgYnVpbGRlci5hcHBlbmQoIiAhaW1wb3J0YW50Iik7CisgICAg
ICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiICFpbXBvcnRhbnQiKTsKICAgICBidWlsZGVyLmFw
cGVuZCgnOycpOwogICAgIAogICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7CkBAIC00OTAs
NyArNDg1LDcgQEAgU3RyaW5nIENhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGOjpjYXB0aW9u
c1N0eWxlU2hlZXRPdmVycmlkZSgpIGNvbnN0CiAgICAgU3RyaW5nIGZvbnROYW1lID0gY2FwdGlv
bnNEZWZhdWx0Rm9udENTUygpOwogICAgIFN0cmluZyBiYWNrZ3JvdW5kID0gY2FwdGlvbnNCYWNr
Z3JvdW5kQ1NTKCk7CiAgICAgaWYgKCFiYWNrZ3JvdW5kLmlzRW1wdHkoKSB8fCAhY2FwdGlvbnND
b2xvci5pc0VtcHR5KCkgfHwgIWVkZ2VTdHlsZS5pc0VtcHR5KCkgfHwgIWZvbnROYW1lLmlzRW1w
dHkoKSkgewotICAgICAgICBjYXB0aW9uc092ZXJyaWRlU3R5bGVTaGVldC5hcHBlbmQoIiB2aWRl
bzo6Iik7CisgICAgICAgIGNhcHRpb25zT3ZlcnJpZGVTdHlsZVNoZWV0LmFwcGVuZExpdGVyYWwo
IiB2aWRlbzo6Iik7CiAgICAgICAgIGNhcHRpb25zT3ZlcnJpZGVTdHlsZVNoZWV0LmFwcGVuZChU
ZXh0VHJhY2tDdWU6OmN1ZVNoYWRvd1BzZXVkb0lkKCkpOwogICAgICAgICBjYXB0aW9uc092ZXJy
aWRlU3R5bGVTaGVldC5hcHBlbmQoJ3snKTsKICAgICAgICAgCkBAIC01MDksNyArNTA0LDcgQEAg
U3RyaW5nIENhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGOjpjYXB0aW9uc1N0eWxlU2hlZXRP
dmVycmlkZSgpIGNvbnN0CiAgICAgU3RyaW5nIHdpbmRvd0NvbG9yID0gY2FwdGlvbnNXaW5kb3dD
U1MoKTsKICAgICBTdHJpbmcgd2luZG93Q29ybmVyUmFkaXVzID0gd2luZG93Um91bmRlZENvcm5l
clJhZGl1c0NTUygpOwogICAgIGlmICghd2luZG93Q29sb3IuaXNFbXB0eSgpIHx8ICF3aW5kb3dD
b3JuZXJSYWRpdXMuaXNFbXB0eSgpKSB7Ci0gICAgICAgIGNhcHRpb25zT3ZlcnJpZGVTdHlsZVNo
ZWV0LmFwcGVuZCgiIHZpZGVvOjoiKTsKKyAgICAgICAgY2FwdGlvbnNPdmVycmlkZVN0eWxlU2hl
ZXQuYXBwZW5kTGl0ZXJhbCgiIHZpZGVvOjoiKTsKICAgICAgICAgY2FwdGlvbnNPdmVycmlkZVN0
eWxlU2hlZXQuYXBwZW5kKFZUVEN1ZTo6Y3VlQmFja2Ryb3BTaGFkb3dQc2V1ZG9JZCgpKTsKICAg
ICAgICAgY2FwdGlvbnNPdmVycmlkZVN0eWxlU2hlZXQuYXBwZW5kKCd7Jyk7CiAgICAgICAgIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudFNvdXJjZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0V2ZW50U291cmNlLmNwcAppbmRleCA0MzJiMjM2Li44NTRhNWE4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50U291cmNlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0V2ZW50U291cmNlLmNwcApAQCAtNTMsNyArNTMsNiBAQAogI2luY2x1ZGUg
IlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgogI2luY2x1ZGUgIlRleHRSZXNvdXJjZURlY29kZXIu
aCIKICNpbmNsdWRlICJUaHJlYWRhYmxlTG9hZGVyLmgiCi0jaW5jbHVkZSA8d3RmL3RleHQvU3Ry
aW5nQnVpbGRlci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTIyMywyMiArMjIyLDE2
IEBAIHZvaWQgRXZlbnRTb3VyY2U6OmRpZFJlY2VpdmVSZXNwb25zZSh1bnNpZ25lZCBsb25nLCBj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwCiAgICAgICAgIC8vIElmIHdlIGhhdmUgYSBjaGFy
c2V0LCB0aGUgb25seSBhbGxvd2VkIHZhbHVlIGlzIFVURi04IChjYXNlLWluc2Vuc2l0aXZlKS4K
ICAgICAgICAgcmVzcG9uc2VJc1ZhbGlkID0gY2hhcnNldC5pc0VtcHR5KCkgfHwgZXF1YWxJZ25v
cmluZ0Nhc2UoY2hhcnNldCwgIlVURi04Iik7CiAgICAgICAgIGlmICghcmVzcG9uc2VJc1ZhbGlk
KSB7Ci0gICAgICAgICAgICBTdHJpbmdCdWlsZGVyIG1lc3NhZ2U7Ci0gICAgICAgICAgICBtZXNz
YWdlLmFwcGVuZExpdGVyYWwoIkV2ZW50U291cmNlJ3MgcmVzcG9uc2UgaGFzIGEgY2hhcnNldCAo
XCIiKTsKLSAgICAgICAgICAgIG1lc3NhZ2UuYXBwZW5kKGNoYXJzZXQpOwotICAgICAgICAgICAg
bWVzc2FnZS5hcHBlbmRMaXRlcmFsKCJcIikgdGhhdCBpcyBub3QgVVRGLTguIEFib3J0aW5nIHRo
ZSBjb25uZWN0aW9uLiIpOworICAgICAgICAgICAgU3RyaW5nIG1lc3NhZ2UgPSBtYWtlU3RyaW5n
KCJFdmVudFNvdXJjZSdzIHJlc3BvbnNlIGhhcyBhIGNoYXJzZXQgKFwiIiwgY2hhcnNldCwgIlwi
KSB0aGF0IGlzIG5vdCBVVEYtOC4gQWJvcnRpbmcgdGhlIGNvbm5lY3Rpb24uIik7CiAgICAgICAg
ICAgICAvLyBGSVhNRTogV2UgYXJlIG1pc3NpbmcgdGhlIHNvdXJjZSBsaW5lLgotICAgICAgICAg
ICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291
cmNlOjpKUywgTWVzc2FnZUxldmVsOjpFcnJvciwgbWVzc2FnZS50b1N0cmluZygpKTsKKyAgICAg
ICAgICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2Fn
ZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIG1lc3NhZ2UpOwogICAgICAgICB9CiAg
ICAgfSBlbHNlIHsKICAgICAgICAgLy8gVG8ga2VlcCB0aGUgc2lnbmFsLXRvLW5vaXNlIHJhdGlv
IGxvdywgd2Ugb25seSBsb2cgMjAwLXJlc3BvbnNlIHdpdGggYW4gaW52YWxpZCBNSU1FIHR5cGUu
CiAgICAgICAgIGlmIChzdGF0dXNDb2RlID09IDIwMCAmJiAhbWltZVR5cGVJc1ZhbGlkKSB7Ci0g
ICAgICAgICAgICBTdHJpbmdCdWlsZGVyIG1lc3NhZ2U7Ci0gICAgICAgICAgICBtZXNzYWdlLmFw
cGVuZExpdGVyYWwoIkV2ZW50U291cmNlJ3MgcmVzcG9uc2UgaGFzIGEgTUlNRSB0eXBlIChcIiIp
OwotICAgICAgICAgICAgbWVzc2FnZS5hcHBlbmQocmVzcG9uc2UubWltZVR5cGUoKSk7Ci0gICAg
ICAgICAgICBtZXNzYWdlLmFwcGVuZExpdGVyYWwoIlwiKSB0aGF0IGlzIG5vdCBcInRleHQvZXZl
bnQtc3RyZWFtXCIuIEFib3J0aW5nIHRoZSBjb25uZWN0aW9uLiIpOworICAgICAgICAgICAgU3Ry
aW5nIG1lc3NhZ2UgPSBtYWtlU3RyaW5nKCJFdmVudFNvdXJjZSdzIHJlc3BvbnNlIGhhcyBhIE1J
TUUgdHlwZSAoXCIiLCByZXNwb25zZS5taW1lVHlwZSgpLCAiXCIpIHRoYXQgaXMgbm90IFwidGV4
dC9ldmVudC1zdHJlYW1cIi4gQWJvcnRpbmcgdGhlIGNvbm5lY3Rpb24uIik7CiAgICAgICAgICAg
ICAvLyBGSVhNRTogV2UgYXJlIG1pc3NpbmcgdGhlIHNvdXJjZSBsaW5lLgotICAgICAgICAgICAg
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNl
OjpKUywgTWVzc2FnZUxldmVsOjpFcnJvciwgbWVzc2FnZS50b1N0cmluZygpKTsKKyAgICAgICAg
ICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNv
dXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIG1lc3NhZ2UpOwogICAgICAgICB9CiAgICAg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VTZXJpYWxpemVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVNlcmlhbGl6ZXIuY3BwCmluZGV4IDRmMWQxZmMuLjZl
MzhiNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVNlcmlhbGl6ZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVNlcmlhbGl6ZXIuY3BwCkBAIC0yNjIsNyAr
MjYyLDcgQEAgdm9pZCBQYWdlU2VyaWFsaXplcjo6c2VyaWFsaXplQ1NTU3R5bGVTaGVldChDU1NT
dHlsZVNoZWV0KiBzdHlsZVNoZWV0LCBjb25zdCBVUkwKICAgICAgICAgaWYgKCFpdGVtVGV4dC5p
c0VtcHR5KCkpIHsKICAgICAgICAgICAgIGNzc1RleHQuYXBwZW5kKGl0ZW1UZXh0KTsKICAgICAg
ICAgICAgIGlmIChpIDwgc3R5bGVTaGVldC0+bGVuZ3RoKCkgLSAxKQotICAgICAgICAgICAgICAg
IGNzc1RleHQuYXBwZW5kKCJcblxuIik7CisgICAgICAgICAgICAgICAgY3NzVGV4dC5hcHBlbmRM
aXRlcmFsKCJcblxuIik7CiAgICAgICAgIH0KICAgICAgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0g
c3R5bGVTaGVldC0+b3duZXJEb2N1bWVudCgpOwogICAgICAgICAvLyBTb21lIHJ1bGVzIGhhdmUg
cmVzb3VyY2VzIGFzc29jaWF0ZWQgd2l0aCB0aGVtIHRoYXQgd2UgbmVlZCB0byByZXRyaWV2ZS4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL09wZW5HTFNoaW1z
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL09wZW5HTFNoaW1zLmNwcApp
bmRleCA4ZWMwMzFlLi5jNmMwNWNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9PcGVuR0xTaGltcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvT3BlbkdMU2hpbXMuY3BwCkBAIC03MCwyNiArNzAsMTggQEAgc3RhdGljIHZvaWQq
IGxvb2t1cE9wZW5HTEZ1bmN0aW9uQWRkcmVzcyhjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIGJv
b2wqIHN1Y2Nlc3MKICAgICBpZiAodGFyZ2V0KQogICAgICAgICByZXR1cm4gdGFyZ2V0OwogCi0g
ICAgU3RyaW5nIGZ1bGxGdW5jdGlvbk5hbWUoZnVuY3Rpb25OYW1lKTsKLSAgICBmdWxsRnVuY3Rp
b25OYW1lLmFwcGVuZCgiQVJCIik7Ci0gICAgdGFyZ2V0ID0gZ2V0UHJvY0FkZHJlc3MoZnVsbEZ1
bmN0aW9uTmFtZS51dGY4KCkuZGF0YSgpKTsKKyAgICB0YXJnZXQgPSBnZXRQcm9jQWRkcmVzcyht
YWtlU3RyaW5nKGZ1bmN0aW9uTmFtZSwgIkFSQiIpLmNoYXJhY3RlcnM4KCkpOwogICAgIGlmICh0
YXJnZXQpCiAgICAgICAgIHJldHVybiB0YXJnZXQ7CiAKLSAgICBmdWxsRnVuY3Rpb25OYW1lID0g
ZnVuY3Rpb25OYW1lOwotICAgIGZ1bGxGdW5jdGlvbk5hbWUuYXBwZW5kKCJFWFQiKTsKLSAgICB0
YXJnZXQgPSBnZXRQcm9jQWRkcmVzcyhmdWxsRnVuY3Rpb25OYW1lLnV0ZjgoKS5kYXRhKCkpOwor
ICAgIHRhcmdldCA9IGdldFByb2NBZGRyZXNzKG1ha2VTdHJpbmcoZnVuY3Rpb25OYW1lLCAiRVhU
IikuY2hhcmFjdGVyczgoKSk7CiAKICNpZiBkZWZpbmVkKEdMX0VTX1ZFUlNJT05fMl8wKQotICAg
IGZ1bGxGdW5jdGlvbk5hbWUgPSBmdW5jdGlvbk5hbWU7Ci0gICAgZnVsbEZ1bmN0aW9uTmFtZS5h
cHBlbmQoIkFOR0xFIik7Ci0gICAgdGFyZ2V0ID0gZ2V0UHJvY0FkZHJlc3MoZnVsbEZ1bmN0aW9u
TmFtZS51dGY4KCkuZGF0YSgpKTsKKyAgICB0YXJnZXQgPSBnZXRQcm9jQWRkcmVzcyhtYWtlU3Ry
aW5nKGZ1bmN0aW9uTmFtZSwgIkFOR0xFIikuY2hhcmFjdGVyczgoKSk7CiAgICAgaWYgKHRhcmdl
dCkKICAgICAgICAgcmV0dXJuIHRhcmdldDsKIAotICAgIGZ1bGxGdW5jdGlvbk5hbWUgPSBmdW5j
dGlvbk5hbWU7Ci0gICAgZnVsbEZ1bmN0aW9uTmFtZS5hcHBlbmQoIkFQUExFIik7Ci0gICAgdGFy
Z2V0ID0gZ2V0UHJvY0FkZHJlc3MoZnVsbEZ1bmN0aW9uTmFtZS51dGY4KCkuZGF0YSgpKTsKKyAg
ICB0YXJnZXQgPSBnZXRQcm9jQWRkcmVzcyhtYWtlU3RyaW5nKGZ1bmN0aW9uTmFtZSwgIkFQUExF
IikuY2hhcmFjdGVyczgoKSk7CiAjZW5kaWYKIAogICAgIC8vIEEgbnVsbCBhZGRyZXNzIGlzIHN0
aWxsIGEgZmFpbHVyZSBjYXNlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL0luYmFuZFRleHRUcmFja1ByaXZhdGVBVkYuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0luYmFuZFRleHRUcmFj
a1ByaXZhdGVBVkYuY3BwCmluZGV4IDY1YTc0ZTYuLmI1MzI0MGQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9JbmJhbmRUZXh0VHJhY2tQ
cml2YXRlQVZGLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRi5jcHAKQEAgLTE1OCw3ICsxNTgsNyBA
QCB2b2lkIEluYmFuZFRleHRUcmFja1ByaXZhdGVBVkY6OnByb2Nlc3NDdWVBdHRyaWJ1dGVzKENG
QXR0cmlidXRlZFN0cmluZ1JlZiBhdHRyaQogICAgICAgICAgICAgICAgIGlmIChzdGF0aWNfY2Fz
dDxDRkJvb2xlYW5SZWY+KHZhbHVlKSAhPSBrQ0ZCb29sZWFuVHJ1ZSkKICAgICAgICAgICAgICAg
ICAgICAgY29udGludWU7CiAKLSAgICAgICAgICAgICAgICB0YWdTdGFydC5hcHBlbmQoIjxiPiIp
OworICAgICAgICAgICAgICAgIHRhZ1N0YXJ0LmFwcGVuZExpdGVyYWwoIjxiPiIpOwogICAgICAg
ICAgICAgICAgIHRhZ0VuZCA9ICI8L2I+IiArIHRhZ0VuZDsKICAgICAgICAgICAgICAgICBjb250
aW51ZTsKICAgICAgICAgICAgIH0KQEAgLTE2Nyw3ICsxNjcsNyBAQCB2b2lkIEluYmFuZFRleHRU
cmFja1ByaXZhdGVBVkY6OnByb2Nlc3NDdWVBdHRyaWJ1dGVzKENGQXR0cmlidXRlZFN0cmluZ1Jl
ZiBhdHRyaQogICAgICAgICAgICAgICAgIGlmIChzdGF0aWNfY2FzdDxDRkJvb2xlYW5SZWY+KHZh
bHVlKSAhPSBrQ0ZCb29sZWFuVHJ1ZSkKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAK
LSAgICAgICAgICAgICAgICB0YWdTdGFydC5hcHBlbmQoIjxpPiIpOworICAgICAgICAgICAgICAg
IHRhZ1N0YXJ0LmFwcGVuZExpdGVyYWwoIjxpPiIpOwogICAgICAgICAgICAgICAgIHRhZ0VuZCA9
ICI8L2k+IiArIHRhZ0VuZDsKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAg
IH0KQEAgLTE3Niw3ICsxNzYsNyBAQCB2b2lkIEluYmFuZFRleHRUcmFja1ByaXZhdGVBVkY6OnBy
b2Nlc3NDdWVBdHRyaWJ1dGVzKENGQXR0cmlidXRlZFN0cmluZ1JlZiBhdHRyaQogICAgICAgICAg
ICAgICAgIGlmIChzdGF0aWNfY2FzdDxDRkJvb2xlYW5SZWY+KHZhbHVlKSAhPSBrQ0ZCb29sZWFu
VHJ1ZSkKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgICAgICAgICB0
YWdTdGFydC5hcHBlbmQoIjx1PiIpOworICAgICAgICAgICAgICAgIHRhZ1N0YXJ0LmFwcGVuZExp
dGVyYWwoIjx1PiIpOwogICAgICAgICAgICAgICAgIHRhZ0VuZCA9ICI8L3U+IiArIHRhZ0VuZDsK
ICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9w
ZW5HTENvbW1vbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wv
R3JhcGhpY3NDb250ZXh0M0RPcGVuR0xDb21tb24uY3BwCmluZGV4IDRkNzU4OGQuLmI0YjE1Y2Mg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFw
aGljc0NvbnRleHQzRE9wZW5HTENvbW1vbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMQ29tbW9uLmNwcApAQCAt
ODUxLDcgKzg1MSw3IEBAIHN0YXRpYyBTdHJpbmcgZ2VuZXJhdGVIYXNoZWROYW1lKGNvbnN0IFN0
cmluZyYgbmFtZSkKICAgICAgICAgcmV0dXJuIG5hbWU7CiAgICAgdWludDY0X3QgbnVtYmVyID0g
bmFtZUhhc2hGb3JTaGFkZXIobmFtZS51dGY4KCkuZGF0YSgpLCBuYW1lLmxlbmd0aCgpKTsKICAg
ICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7Ci0gICAgYnVpbGRlci5hcHBlbmQoIndlYmdsXyIpOwor
ICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgid2ViZ2xfIik7CiAgICAgYXBwZW5kVW5zaWduZWQ2
NEFzSGV4KG51bWJlciwgYnVpbGRlciwgTG93ZXJjYXNlKTsKICAgICByZXR1cm4gYnVpbGRlci50
b1N0cmluZygpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9E
YXRlVGltZUZvcm1hdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0RhdGVUaW1l
Rm9ybWF0LmNwcAppbmRleCBiNzU5OTQ0Li5jNzVkMzNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS90ZXh0L0RhdGVUaW1lRm9ybWF0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS90ZXh0L0RhdGVUaW1lRm9ybWF0LmNwcApAQCAtMjY1LDcgKzI2NSw3IEBAIHZv
aWQgRGF0ZVRpbWVGb3JtYXQ6OnF1b3RlQW5kQXBwZW5kTGl0ZXJhbChjb25zdCBTdHJpbmcmIGxp
dGVyYWwsIFN0cmluZ0J1aWxkZXImCiAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGl0
ZXJhbC5sZW5ndGgoKTsgKytpKSB7CiAgICAgICAgIGlmIChsaXRlcmFsW2ldID09ICdcJycpCi0g
ICAgICAgICAgICBidWZmZXIuYXBwZW5kKCInJyIpOworICAgICAgICAgICAgYnVmZmVyLmFwcGVu
ZExpdGVyYWwoIicnIik7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgU3RyaW5nIGVzY2Fw
ZWQgPSBsaXRlcmFsLnN1YnN0cmluZyhpKTsKICAgICAgICAgICAgIGVzY2FwZWQucmVwbGFjZSgn
XCcnLCAiJyciKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
YXllckNvbXBvc2l0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVy
Q29tcG9zaXRvci5jcHAKaW5kZXggODEyOGIxOS4uYWY1NDQ0YSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAKQEAgLTgzNywxNyAr
ODM3LDE3IEBAIHZvaWQgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpsb2dMYXllckluZm8oY29uc3Qg
UmVuZGVyTGF5ZXImIGxheWVyLCBpbnQgZGVwdGgpCiAgICAgICAgIGFic29sdXRlQm91bmRzLngo
KS50b0Zsb2F0KCksIGFic29sdXRlQm91bmRzLnkoKS50b0Zsb2F0KCksIGFic29sdXRlQm91bmRz
Lm1heFgoKS50b0Zsb2F0KCksIGFic29sdXRlQm91bmRzLm1heFkoKS50b0Zsb2F0KCksCiAgICAg
ICAgIGJhY2tpbmctPmJhY2tpbmdTdG9yZU1lbW9yeUVzdGltYXRlKCkgLyAxMDI0KSk7CiAgICAg
Ci0gICAgbG9nU3RyaW5nLmFwcGVuZCgiICgiKTsKKyAgICBsb2dTdHJpbmcuYXBwZW5kTGl0ZXJh
bCgiICgiKTsKICAgICBsb2dTdHJpbmcuYXBwZW5kKGxvZ1JlYXNvbnNGb3JDb21wb3NpdGluZyhs
YXllcikpOwotICAgIGxvZ1N0cmluZy5hcHBlbmQoIikgIik7CisgICAgbG9nU3RyaW5nLmFwcGVu
ZExpdGVyYWwoIikgIik7CiAKICAgICBpZiAoYmFja2luZy0+Z3JhcGhpY3NMYXllcigpLT5jb250
ZW50c09wYXF1ZSgpIHx8IGJhY2tpbmctPnBhaW50c0ludG9Db21wb3NpdGVkQW5jZXN0b3IoKSkg
ewogICAgICAgICBsb2dTdHJpbmcuYXBwZW5kKCdbJyk7CiAgICAgICAgIGlmIChiYWNraW5nLT5n
cmFwaGljc0xheWVyKCktPmNvbnRlbnRzT3BhcXVlKCkpCi0gICAgICAgICAgICBsb2dTdHJpbmcu
YXBwZW5kKCJvcGFxdWUiKTsKKyAgICAgICAgICAgIGxvZ1N0cmluZy5hcHBlbmRMaXRlcmFsKCJv
cGFxdWUiKTsKICAgICAgICAgaWYgKGJhY2tpbmctPnBhaW50c0ludG9Db21wb3NpdGVkQW5jZXN0
b3IoKSkKLSAgICAgICAgICAgIGxvZ1N0cmluZy5hcHBlbmQoInBhaW50cyBpbnRvIGFuY2VzdG9y
Iik7Ci0gICAgICAgIGxvZ1N0cmluZy5hcHBlbmQoIl0gIik7CisgICAgICAgICAgICBsb2dTdHJp
bmcuYXBwZW5kTGl0ZXJhbCgicGFpbnRzIGludG8gYW5jZXN0b3IiKTsKKyAgICAgICAgbG9nU3Ry
aW5nLmFwcGVuZExpdGVyYWwoIl0gIik7CiAgICAgfQogCiAgICAgbG9nU3RyaW5nLmFwcGVuZChs
YXllci5uYW1lKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRyZWVBc1RleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRyZWVBc1Rl
eHQuY3BwCmluZGV4IDk4N2Q5NGMuLmUxYzg2NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUcmVlQXNUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVHJlZUFzVGV4dC5jcHAKQEAgLTY2Nyw5ICs2NjcsOSBAQCBzdGF0aWMgdm9p
ZCB3cml0ZVJlbmRlclJlZ2lvbkxpc3QoY29uc3QgUmVuZGVyUmVnaW9uTGlzdCYgZmxvd1RocmVh
ZFJlZ2lvbkxpc3QsCiAgICAgICAgICAgICBSZW5kZXJFbGVtZW50KiByZW5kZXJFbGVtZW50Rm9y
UmVnaW9uID0gaXNSZW5kZXJOYW1lZEZsb3dGcmFnbWVudCA/IHJlbmRlclJlZ2lvbi0+cGFyZW50
KCkgOiByZW5kZXJSZWdpb247CiAgICAgICAgICAgICBpZiAocmVuZGVyRWxlbWVudEZvclJlZ2lv
bi0+aXNQc2V1ZG9FbGVtZW50KCkpIHsKICAgICAgICAgICAgICAgICBpZiAocmVuZGVyRWxlbWVu
dEZvclJlZ2lvbi0+ZWxlbWVudCgpLT5pc0JlZm9yZVBzZXVkb0VsZW1lbnQoKSkKLSAgICAgICAg
ICAgICAgICAgICAgdGFnTmFtZS5hcHBlbmQoIjo6YmVmb3JlIik7CisgICAgICAgICAgICAgICAg
ICAgIHRhZ05hbWUuYXBwZW5kTGl0ZXJhbCgiOjpiZWZvcmUiKTsKICAgICAgICAgICAgICAgICBl
bHNlIGlmIChyZW5kZXJFbGVtZW50Rm9yUmVnaW9uLT5lbGVtZW50KCktPmlzQWZ0ZXJQc2V1ZG9F
bGVtZW50KCkpCi0gICAgICAgICAgICAgICAgICAgIHRhZ05hbWUuYXBwZW5kKCI6OmFmdGVyIik7
CisgICAgICAgICAgICAgICAgICAgIHRhZ05hbWUuYXBwZW5kTGl0ZXJhbCgiOjphZnRlciIpOwog
ICAgICAgICAgICAgfQogCiAgICAgICAgICAgICB0cyA8PCAiIHsiIDw8IHRhZ05hbWUudG9TdHJp
bmcoKSA8PCAifSI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01pY3JvVGFz
a1Rlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9NaWNyb1Rhc2tUZXN0LmNwcAppbmRl
eCBmMjIzZWZiLi41MGVlZmU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01p
Y3JvVGFza1Rlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTWljcm9UYXNrVGVz
dC5jcHAKQEAgLTI3LDEyICsyNyw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdm9pZCBNaWNy
b1Rhc2tUZXN0OjpydW4oKQogewotICAgIFN0cmluZ0J1aWxkZXIgbWVzc2FnZTsKLSAgICBtZXNz
YWdlLmFwcGVuZCgiTWljcm9UYXNrICMiKTsKLSAgICBtZXNzYWdlLmFwcGVuZChTdHJpbmc6Om51
bWJlcihtX3Rlc3ROdW1iZXIpKTsKLSAgICBtZXNzYWdlLmFwcGVuZCgiIGhhcyBydW4uIik7CiAg
ICAgaWYgKG1fZG9jdW1lbnQpCi0gICAgICAgIG1fZG9jdW1lbnQtPmFkZENvbnNvbGVNZXNzYWdl
KE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlTGV2ZWw6OkRlYnVnLCBtZXNzYWdlLnRvU3RyaW5n
KCkpOworICAgICAgICBtX2RvY3VtZW50LT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNl
OjpKUywgTWVzc2FnZUxldmVsOjpEZWJ1ZywgbWFrZVN0cmluZygiTWljcm9UYXNrICMiLCBTdHJp
bmc6Om51bWJlcihtX3Rlc3ROdW1iZXIpLCAiIGhhcyBydW4uIikpOwogfQogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250
ZW50RmlsdGVyU2V0dGluZ3MuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29udGVu
dEZpbHRlclNldHRpbmdzLmNwcAppbmRleCAwODY4NjJiLi41ZTBhMGI5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5jcHAKQEAg
LTMwLDkgKzMwLDcgQEAKIAogI2luY2x1ZGUgIkNvbnRlbnRGaWx0ZXIuaCIKICNpbmNsdWRlICJD
b250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIuaCIKLSNpbmNsdWRlIDxtdXRleD4KICNpbmNsdWRl
IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVy
Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNDksMTUgKzQ3LDcgQEAgdm9pZCBNb2Nr
Q29udGVudEZpbHRlclNldHRpbmdzOjpyZXNldCgpCiAKIGNvbnN0IFN0cmluZyYgTW9ja0NvbnRl
bnRGaWx0ZXJTZXR0aW5nczo6dW5ibG9ja1JlcXVlc3RVUkwoKSBjb25zdAogewotICAgIHN0YXRp
YyBMYXp5TmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiB1bmJsb2NrUmVxdWVzdFVSTDsKLSAgICBzdGF0
aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUZsYWc7Ci0gICAgc3RkOjpjYWxsX29uY2Uob25jZUZsYWcs
IFtdIHsKLSAgICAgICAgU3RyaW5nQnVpbGRlciB1bmJsb2NrUmVxdWVzdFVSTEJ1aWxkZXI7Ci0g
ICAgICAgIHVuYmxvY2tSZXF1ZXN0VVJMQnVpbGRlci5hcHBlbmQoQ29udGVudEZpbHRlcjo6dXJs
U2NoZW1lKCkpOwotICAgICAgICB1bmJsb2NrUmVxdWVzdFVSTEJ1aWxkZXIuYXBwZW5kKCI6Ly8i
KTsKLSAgICAgICAgdW5ibG9ja1JlcXVlc3RVUkxCdWlsZGVyLmFwcGVuZCh1bmJsb2NrVVJMSG9z
dCgpKTsKLSAgICAgICAgdW5ibG9ja1JlcXVlc3RVUkwuY29uc3RydWN0KHVuYmxvY2tSZXF1ZXN0
VVJMQnVpbGRlci50b1N0cmluZygpKTsKLSAgICB9KTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95
ZWQ8U3RyaW5nPiB1bmJsb2NrUmVxdWVzdFVSTCA9IG1ha2VTdHJpbmcoQ29udGVudEZpbHRlcjo6
dXJsU2NoZW1lKCksICI6Ly8iLCB1bmJsb2NrVVJMSG9zdCgpKTsKICAgICByZXR1cm4gdW5ibG9j
a1JlcXVlc3RVUkw7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCA0ZGMxOGZjLi5jYWMyZTFjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMjMgQEAKKzIwMTUtMDQtMjAgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29y
YXJvQGFwcGxlLmNvbT4KKworICAgICAgICBDbGVhbnVwIHNvbWUgU3RyaW5nQnVpbGRlciB1c2UK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MzU1MAor
CisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgICogRGF0YWJhc2VQ
cm9jZXNzL0luZGV4ZWREQi9zcWxpdGUvU1FMaXRlSURCQ3Vyc29yLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6YnVpbGRPYmplY3RTdG9yZVN0YXRlbWVudCk6CisgICAgICAgICogRGF0YWJhc2VQcm9j
ZXNzL0luZGV4ZWREQi9zcWxpdGUvVW5pcXVlSURCRGF0YWJhc2VCYWNraW5nU3RvcmVTUUxpdGUu
Y3BwOgorICAgICAgICAoV2ViS2l0Ojp2MlJlY29yZHNUYWJsZVNjaGVtYSk6CisgICAgICAgICog
U2hhcmVkL0RhdGFiYXNlcy9JbmRleGVkREIvSURCVXRpbGl0aWVzLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6dW5pcXVlRGF0YWJhc2VJZGVudGlmaWVyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L0FQSVVzZXJTY3JpcHQuY3BwOgorICAgICAgICAoQVBJOjpVc2VyU2NyaXB0OjpnZW5lcmF0ZVVu
aXF1ZVVSTCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZSk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9EYXRhYmFzZXMvSW5kZXhlZERCL1dlYklEQkZhY3RvcnlCYWNr
ZW5kLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Y29tYmluZWRTZWN1cml0eU9yaWdpbklkZW50aWZp
ZXIpOgorCiAyMDE1LTA0LTIwICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtp
dC5vcmc+CiAKICAgICAgICAgUHJvcGVybHkgcmVwb3J0IGVycm9ycyBmcm9tIF9XS1VzZXJDb250
ZW50RXh0ZW5zaW9uU3RvcmUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVBy
b2Nlc3MvSW5kZXhlZERCL3NxbGl0ZS9TUUxpdGVJREJDdXJzb3IuY3BwIGIvU291cmNlL1dlYktp
dDIvRGF0YWJhc2VQcm9jZXNzL0luZGV4ZWREQi9zcWxpdGUvU1FMaXRlSURCQ3Vyc29yLmNwcApp
bmRleCBhYmVhMWRkLi5iZmY0ODUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFz
ZVByb2Nlc3MvSW5kZXhlZERCL3NxbGl0ZS9TUUxpdGVJREJDdXJzb3IuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9JbmRleGVkREIvc3FsaXRlL1NRTGl0ZUlEQkN1cnNv
ci5jcHAKQEAgLTExNyw3ICsxMTcsNyBAQCBzdGF0aWMgU3RyaW5nIGJ1aWxkT2JqZWN0U3RvcmVT
dGF0ZW1lbnQoY29uc3QgSURCS2V5UmFuZ2VEYXRhJiBrZXlSYW5nZSwgSW5kZXhlZAogICAgIGJ1
aWxkZXIuYXBwZW5kTGl0ZXJhbCgiIENBU1QoPyBBUyBURVhUKSBPUkRFUiBCWSBrZXkiKTsKIAog
ICAgIGlmIChjdXJzb3JEaXJlY3Rpb24gPT0gSW5kZXhlZERCOjpDdXJzb3JEaXJlY3Rpb246OlBy
ZXYgfHwgY3Vyc29yRGlyZWN0aW9uID09IEluZGV4ZWREQjo6Q3Vyc29yRGlyZWN0aW9uOjpQcmV2
Tm9EdXBsaWNhdGUpCi0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKCIgREVTQyIpOworICAgICAgICBi
dWlsZGVyLmFwcGVuZExpdGVyYWwoIiBERVNDIik7CiAKICAgICBidWlsZGVyLmFwcGVuZCgnOycp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvSW5kZXhlZERC
L3NxbGl0ZS9VbmlxdWVJREJEYXRhYmFzZUJhY2tpbmdTdG9yZVNRTGl0ZS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvSW5kZXhlZERCL3NxbGl0ZS9VbmlxdWVJREJEYXRhYmFz
ZUJhY2tpbmdTdG9yZVNRTGl0ZS5jcHAKaW5kZXggZDg2MDc1OWMuLmFiOTg1Y2EgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9JbmRleGVkREIvc3FsaXRlL1VuaXF1
ZUlEQkRhdGFiYXNlQmFja2luZ1N0b3JlU1FMaXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9E
YXRhYmFzZVByb2Nlc3MvSW5kZXhlZERCL3NxbGl0ZS9VbmlxdWVJREJEYXRhYmFzZUJhY2tpbmdT
dG9yZVNRTGl0ZS5jcHAKQEAgLTY0LDEwICs2NCw5IEBAIHN0YXRpYyBjb25zdCBTdHJpbmcmIHYx
UmVjb3Jkc1RhYmxlU2NoZW1hKCkKIHN0YXRpYyBjb25zdCBTdHJpbmcgdjJSZWNvcmRzVGFibGVT
Y2hlbWEoY29uc3QgU3RyaW5nJiB0YWJsZU5hbWUpCiB7CiAgICAgU3RyaW5nQnVpbGRlciBidWls
ZGVyOwotICAgIGJ1aWxkZXIuYXBwZW5kKCJDUkVBVEUgVEFCTEUgIik7CisgICAgYnVpbGRlci5h
cHBlbmRMaXRlcmFsKCJDUkVBVEUgVEFCTEUgIik7CiAgICAgYnVpbGRlci5hcHBlbmQodGFibGVO
YW1lKTsKLSAgICBidWlsZGVyLmFwcGVuZCgiIChvYmplY3RTdG9yZUlEIElOVEVHRVIgTk9UIE5V
TEwgT04gQ09ORkxJQ1QgRkFJTCwga2V5IFRFWFQgQ09MTEFURSBJREJLRVkgTk9UIE5VTEwgT04g
Q09ORkxJQ1QgRkFJTCwgdmFsdWUgTk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJTCkiKTsKLQorICAg
IGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiIChvYmplY3RTdG9yZUlEIElOVEVHRVIgTk9UIE5VTEwg
T04gQ09ORkxJQ1QgRkFJTCwga2V5IFRFWFQgQ09MTEFURSBJREJLRVkgTk9UIE5VTEwgT04gQ09O
RkxJQ1QgRkFJTCwgdmFsdWUgTk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJTCkiKTsKICAgICByZXR1
cm4gYnVpbGRlci50b1N0cmluZygpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvRGF0YWJhc2VzL0luZGV4ZWREQi9JREJVdGlsaXRpZXMuY3BwIGIvU291cmNlL1dlYktp
dDIvU2hhcmVkL0RhdGFiYXNlcy9JbmRleGVkREIvSURCVXRpbGl0aWVzLmNwcAppbmRleCBkNTZi
NjQ2Li45ZWM3NmZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvRGF0YWJhc2Vz
L0luZGV4ZWREQi9JREJVdGlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9E
YXRhYmFzZXMvSW5kZXhlZERCL0lEQlV0aWxpdGllcy5jcHAKQEAgLTQyLDE0ICs0MiwxNCBAQCBT
dHJpbmcgdW5pcXVlRGF0YWJhc2VJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYgZGF0YWJhc2VOYW1l
LCBjb25zdCBXZWJDb3JlOjpTZWN1cgogICAgIGlmIChvcmlnaW5TdHJpbmcgPT0gIm51bGwiKQog
ICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQob3JpZ2lu
U3RyaW5nKTsKLSAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiXyIpOworICAgIHN0cmluZ0J1aWxk
ZXIuYXBwZW5kKCdfJyk7CiAKICAgICBvcmlnaW5TdHJpbmcgPSBtYWluRnJhbWVPcmlnaW4udG9T
dHJpbmcoKTsKICAgICBpZiAob3JpZ2luU3RyaW5nID09ICJudWxsIikKICAgICAgICAgcmV0dXJu
IFN0cmluZygpOwogICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKG9yaWdpblN0cmluZyk7CiAKLSAg
ICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiXyIpOworICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCdf
Jyk7CiAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoZGF0YWJhc2VOYW1lKTsKIAogICAgIHJldHVy
biBzdHJpbmdCdWlsZGVyLnRvU3RyaW5nKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0FQSVVzZXJTY3JpcHQuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9BUElVc2VyU2NyaXB0LmNwcAppbmRleCBjNjg5NGM1Li5iNTI4M2NlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSVVzZXJTY3JpcHQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJVXNlclNjcmlwdC5jcHAKQEAgLTQwLDcgKzQw
LDcgQEAgc3RhdGljIHVpbnQ2NF90IGdlbmVyYXRlSWRlbnRpZmllcigpCiBXZWJDb3JlOjpVUkwg
VXNlclNjcmlwdDo6Z2VuZXJhdGVVbmlxdWVVUkwoKQogewogICAgIFN0cmluZ0J1aWxkZXIgdXJs
U3RyaW5nQnVpbGRlcjsKLSAgICB1cmxTdHJpbmdCdWlsZGVyLmFwcGVuZCgidXNlci1zY3JpcHQ6
Iik7CisgICAgdXJsU3RyaW5nQnVpbGRlci5hcHBlbmRMaXRlcmFsKCJ1c2VyLXNjcmlwdDoiKTsK
ICAgICB1cmxTdHJpbmdCdWlsZGVyLmFwcGVuZE51bWJlcihnZW5lcmF0ZUlkZW50aWZpZXIoKSk7
CiAgICAgcmV0dXJuIFdlYkNvcmU6OlVSTCB7IFdlYkNvcmU6OlVSTCB7IH0sIHVybFN0cmluZ0J1
aWxkZXIudG9TdHJpbmcoKSB9OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQb29sLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9j
ZXNzUG9vbC5jcHAKaW5kZXggNDdmOWYxYy4uODVjNDRlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCkBAIC01NjIsNyArNTYyLDcgQEAgdm9pZCBXZWJQ
cm9jZXNzUG9vbDo6ZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKGNvbnN0IElQQzo6U3RyaW5nUmVm
ZXJlbmNlJiBtZXNzYWcKIAogICAgIFN0cmluZ0J1aWxkZXIgbWVzc2FnZU5hbWVTdHJpbmdCdWls
ZGVyOwogICAgIG1lc3NhZ2VOYW1lU3RyaW5nQnVpbGRlci5hcHBlbmQobWVzc2FnZVJlY2VpdmVy
TmFtZS5kYXRhKCksIG1lc3NhZ2VSZWNlaXZlck5hbWUuc2l6ZSgpKTsKLSAgICBtZXNzYWdlTmFt
ZVN0cmluZ0J1aWxkZXIuYXBwZW5kKCIuIik7CisgICAgbWVzc2FnZU5hbWVTdHJpbmdCdWlsZGVy
LmFwcGVuZCgnLicpOwogICAgIG1lc3NhZ2VOYW1lU3RyaW5nQnVpbGRlci5hcHBlbmQobWVzc2Fn
ZU5hbWUuZGF0YSgpLCBtZXNzYWdlTmFtZS5zaXplKCkpOwogCiAgICAgc19pbnZhbGlkTWVzc2Fn
ZUNhbGxiYWNrKHRvQVBJKEFQSTo6U3RyaW5nOjpjcmVhdGUobWVzc2FnZU5hbWVTdHJpbmdCdWls
ZGVyLnRvU3RyaW5nKCkpLmdldCgpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL0RhdGFiYXNlcy9JbmRleGVkREIvV2ViSURCRmFjdG9yeUJhY2tlbmQuY3BwIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9EYXRhYmFzZXMvSW5kZXhlZERCL1dlYklEQkZhY3RvcnlC
YWNrZW5kLmNwcAppbmRleCBmOTI1NTczLi45OTI3OGI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL0RhdGFiYXNlcy9JbmRleGVkREIvV2ViSURCRmFjdG9yeUJhY2tlbmQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRGF0YWJhc2VzL0luZGV4ZWREQi9X
ZWJJREJGYWN0b3J5QmFja2VuZC5jcHAKQEAgLTcwLDcgKzcwLDcgQEAgc3RhdGljIFN0cmluZyBj
b21iaW5lZFNlY3VyaXR5T3JpZ2luSWRlbnRpZmllcihjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9y
aWdpbiYgb3AKICAgICBpZiAob3JpZ2luU3RyaW5nID09ICJudWxsIikKICAgICAgICAgcmV0dXJu
IFN0cmluZygpOwogICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKG9yaWdpblN0cmluZyk7Ci0gICAg
c3RyaW5nQnVpbGRlci5hcHBlbmQoIl8iKTsKKyAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgnXycp
OwogCiAgICAgb3JpZ2luU3RyaW5nID0gbWFpbkZyYW1lT3JpZ2luLnRvU3RyaW5nKCk7CiAgICAg
aWYgKG9yaWdpblN0cmluZyA9PSAibnVsbCIpCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>