<?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>41344</bug_id>
          
          <creation_ts>2010-06-29 05:14:16 -0700</creation_ts>
          <short_desc>HTMLTokenizer needs EndOfFile support</short_desc>
          <delta_ts>2010-06-30 02:46:21 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>41123</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Eric Seidel (no email)">eric</reporter>
          <assigned_to name="Eric Seidel (no email)">eric</assigned_to>
          <cc>abarth</cc>
    
    <cc>eric</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>244221</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-06-29 05:14:16 -0700</bug_when>
    <thetext>HTMLTokenizer needs EndOfFile support</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>244224</commentid>
    <comment_count>1</comment_count>
      <attachid>60011</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-06-29 05:16:43 -0700</bug_when>
    <thetext>Created attachment 60011
work in progress</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>244335</commentid>
    <comment_count>2</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-06-29 09:55:50 -0700</bug_when>
    <thetext>Please register with master bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>244342</commentid>
    <comment_count>3</comment_count>
      <attachid>60011</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-06-29 09:59:38 -0700</bug_when>
    <thetext>Comment on attachment 60011
work in progress

Driveby comments

WebCore/html/HTMLToken.h:65
 +          // Should we ASSERT(m_type == Uninitialized) here?
Yes.  EOF is a separate token.

WebCore/html/HTMLToken.h:67
 +          // in HTMLTokenizer before calling makeEndOfFile().
That&apos;s correct.  Those started tokens are never emitted.

WebCore/html/HTMLTokenizer.cpp:43
 +  const UChar endOfFile = 0;
Lame that this happens twice.

WebCore/html/HTMLTokenizer.cpp:189
 +          if (m_token-&gt;type() == HTMLToken::Character)                       \
You should be calling shouldEmitBufferedCharacterWhatever here.

WebCore/html/HTMLTokenizer.cpp:278
 +              if (m_token-&gt;type() == HTMLToken::Character) {
You should use shouldEmitBufferedCharacter whatever</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>244417</commentid>
    <comment_count>4</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-06-29 12:04:54 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; WebCore/html/HTMLToken.h:65
&gt;  +          // Should we ASSERT(m_type == Uninitialized) here?
&gt; Yes.  EOF is a separate token.

Well, then we should just call clear() right before makeEndOfFile() or as part of makeEndOfFile().

&gt; WebCore/html/HTMLToken.h:67
&gt;  +          // in HTMLTokenizer before calling makeEndOfFile().
&gt; That&apos;s correct.  Those started tokens are never emitted.

How does a document of &quot;&lt;scr&quot; end up emitting &lt;scr?

&gt; WebCore/html/HTMLTokenizer.cpp:43
&gt;  +  const UChar endOfFile = 0;
&gt; Lame that this happens twice.

Agreed.  Plan to clean up in a real patch.

&gt; WebCore/html/HTMLTokenizer.cpp:189
&gt;  +          if (m_token-&gt;type() == HTMLToken::Character)                       \
&gt; You should be calling shouldEmitBufferedCharacterWhatever here.
&gt; 
&gt; WebCore/html/HTMLTokenizer.cpp:278
&gt;  +              if (m_token-&gt;type() == HTMLToken::Character) {
&gt; You should use shouldEmitBufferedCharacter whatever

This was copied from the if directly above:
    BEGIN_STATE(DataState) {
        if (cc == &apos;&amp;&apos;)
            ADVANCE_TO(CharacterReferenceInDataState);
        else if (cc == &apos;&lt;&apos;) {
            if (m_token-&gt;type() == HTMLToken::Character) {
                // We have a bunch of character tokens queued up that we
                // are emitting lazily here.
                return true;
            }
            ADVANCE_TO(TagOpenState);
        } 

Should that use shouldEmitBufferedCharacterToken?  And would it look like:

if (shouldEmitBufferedCharacterToken())
    return true;?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>244457</commentid>
    <comment_count>5</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-06-29 13:34:53 -0700</bug_when>
    <thetext>&gt; This was copied from the if directly above:
&gt;     BEGIN_STATE(DataState) {
&gt;         if (cc == &apos;&amp;&apos;)
&gt;             ADVANCE_TO(CharacterReferenceInDataState);
&gt;         else if (cc == &apos;&lt;&apos;) {
&gt;             if (m_token-&gt;type() == HTMLToken::Character) {
&gt;                 // We have a bunch of character tokens queued up that we
&gt;                 // are emitting lazily here.
&gt;                 return true;
&gt;             }
&gt;             ADVANCE_TO(TagOpenState);
&gt;         } 
&gt; 
&gt; Should that use shouldEmitBufferedCharacterToken?  And would it look like:

That branch is special because it&apos;s the place where we emit the buffered character tokens for an *open* input stream.  shouldEmitBufferedCharacterToken is how we know to emit the last character token in the input stream (because we&apos;re not going to get a &apos;&lt;&apos; to cause us to flush).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>244557</commentid>
    <comment_count>6</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-06-29 16:47:34 -0700</bug_when>
    <thetext>I think you and I will need to discuss this patch more in person.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>244567</commentid>
    <comment_count>7</comment_count>
      <attachid>60011</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-06-29 17:20:33 -0700</bug_when>
    <thetext>Comment on attachment 60011
work in progress

WebCore/html/HTMLDocumentParser.cpp:295
 +      m_input.appendToEnd(String(&amp;endOfFile, 1));
Sure, we can discuss more in person.  I don&apos;t understand how this patch works at app.  Won&apos;t this put a null character into the decoded character stream before NULLs are replaced with REPLACEMENT CHARACTER?  I&apos;m not sure what&apos;s the best approach threading the EOF character through the tokenizer&apos;s machine.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>244656</commentid>
    <comment_count>8</comment_count>
      <attachid>60093</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-06-30 00:36:26 -0700</bug_when>
    <thetext>Created attachment 60093
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>244659</commentid>
    <comment_count>9</comment_count>
      <attachid>60093</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-06-30 00:50:45 -0700</bug_when>
    <thetext>Comment on attachment 60093
Patch

Might be a slight hack, but ok.  :)

cq- for adding the assert to emitCharacter.

WebCore/html/HTMLTokenizer.cpp:187
 +  #define EMIT_END_OF_FILE()                                                 \
This should be a function.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>244663</commentid>
    <comment_count>10</comment_count>
      <attachid>60094</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-06-30 00:59:09 -0700</bug_when>
    <thetext>Created attachment 60094
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>244674</commentid>
    <comment_count>11</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-06-30 01:28:54 -0700</bug_when>
    <thetext>Committed r62168: &lt;http://trac.webkit.org/changeset/62168&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>244688</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-06-30 01:54:46 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/62168 might have broken Qt Linux Release
The following changes are on the blame list:
http://trac.webkit.org/changeset/62168
http://trac.webkit.org/changeset/62166
http://trac.webkit.org/changeset/62167</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>244696</commentid>
    <comment_count>13</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-06-30 02:14:42 -0700</bug_when>
    <thetext>Committed r62172: &lt;http://trac.webkit.org/changeset/62172&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>244702</commentid>
    <comment_count>14</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-06-30 02:46:21 -0700</bug_when>
    <thetext>Committed r62173: &lt;http://trac.webkit.org/changeset/62173&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>60011</attachid>
            <date>2010-06-29 05:16:43 -0700</date>
            <delta_ts>2010-06-30 00:36:22 -0700</delta_ts>
            <desc>work in progress</desc>
            <filename>bug-41344-20100629051641.patch</filename>
            <type>text/plain</type>
            <size>35247</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA3YWVkMTA0OThiODUxZjExMjNhNzI3Y2QzOGE1NGViMjY3ZWQxYTJmLi41ZmUzMzBi
YjI3NGM1NGQ2ODc0NGYwNWYyODczZTdjZTIwYjhlNWFjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAK
KzIwMTAtMDYtMjkgIEVyaWMgU2VpZGVsICA8ZXJpY0B3ZWJraXQub3JnPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEhUTUxUb2tlbml6ZXIgbmVlZHMg
RW5kT2ZGaWxlIHN1cHBvcnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTQxMzQ0CisKKyAgICAgICAgKiBodG1sNWxpYi9ydW5uZXItZXhwZWN0ZWQudHh0
OgorCiAyMDEwLTA2LTI4ICBFcmljIFNlaWRlbCAgPGVyaWNAd2Via2l0Lm9yZz4KIAogICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0
bWw1bGliL3J1bm5lci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odG1sNWxpYi9ydW5uZXIt
ZXhwZWN0ZWQudHh0CmluZGV4IGU1NmE1Njk5ZWQ3OTQxYjRkOTVkNTJlZjNhN2EzMDEzYzY0OTll
MDAuLmMyMzljYmM4MjI5ZmEzNTdkNjI2MTQxYjJiMjk4NGQwZGI0MDI4Y2UgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2h0bWw1bGliL3J1bm5lci1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVz
dHMvaHRtbDVsaWIvcnVubmVyLWV4cGVjdGVkLnR4dApAQCAtOSw4ICs5LDYgQEAgcmVzb3VyY2Vz
L3Rlc3RzMS5kYXQ6CiAzMgogMzMKIDM0Ci0zNQotMzcKIDQxCiA1MAogNTEKQEAgLTQ0LDIyICs0
MiwxMyBAQCByZXNvdXJjZXMvdGVzdHMyLmRhdDoKIDEwCiAxMQogMTcKLTE4Ci0xOQotMjAKLTIx
Ci0yMgotMjkKIDMyCi0zMwogMzYKLTQwCiA0MgogNDQKIDQ1CiA1MwogNTQKLTU3CiAKIHJlc291
cmNlcy90ZXN0czMuZGF0OgogMTYKQEAgLTgzLDcgKzcyLDYgQEAgcmVzb3VyY2VzL3Rlc3RzNS5k
YXQ6CiAKIHJlc291cmNlcy90ZXN0czYuZGF0OgogMQotNgogOAogOQogMTAKQEAgLTIxMCw2ICsx
OTgsOCBAQCByZXNvdXJjZXMvdGVzdHMxNS5kYXQ6CiAxMwogCiByZXNvdXJjZXMvdGVzdHMxNi5k
YXQ6CisxCisyCiAzCiA0CiA1CkBAIC0yMjQsMTIgKzIxNCwxMSBAQCByZXNvdXJjZXMvdGVzdHMx
Ni5kYXQ6CiAxNQogMTYKIDE3Ci0yNQotMjcKLTI4Ci00MgotNDQKLTQ1CisxOQorMjAKKzIxCisy
MgorNTUKIDU2CiA1NwogNTgKQEAgLTIzOSw2ICsyMjgsOCBAQCByZXNvdXJjZXMvdGVzdHMxNi5k
YXQ6CiA4NwogODgKIDk0Cis5NQorOTYKIDk3CiA5OAogOTkKQEAgLTI1MywxMiArMjQ0LDExIEBA
IHJlc291cmNlcy90ZXN0czE2LmRhdDoKIDEwOQogMTEwCiAxMTEKLTExOQotMTIxCi0xMjIKLTEz
NgotMTM4Ci0xMzkKKzExMworMTE0CisxMTUKKzExNgorMTQ3CiAxNDgKIDE0OQogMTUwCkBAIC0y
NzQsNyArMjY0LDggQEAgcmVzb3VyY2VzL3dlYmtpdDAxLmRhdDoKIAogcmVzb3VyY2VzL2RvY3R5
cGUwMS5kYXQ6IFBBU1MKIAotcmVzb3VyY2VzL3NjcmlwdGRhdGEwMS5kYXQ6IFBBU1MKK3Jlc291
cmNlcy9zY3JpcHRkYXRhMDEuZGF0OgorNgogCiByZXNvdXJjZXMvZW50aXRpZXMwMS5kYXQ6CiAy
CmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4
IGE5YjM4ZWIzNjBjMmZkNzBmZTcyMTdiNjc4ODczOGE0NDI4NGI4OTEuLjEyMTVhZmVhM2U0NjQ1
ZjJkM2Q4MGZhOTU0ZjY4MTEyOGE4ZjkyMzUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9n
CisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzIgQEAKKzIwMTAtMDYtMjkgIEVy
aWMgU2VpZGVsICA8ZXJpY0B3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEhUTUxUb2tlbml6ZXIgbmVlZHMgRW5kT2ZGaWxlIHN1cHBv
cnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQxMzQ0
CisKKyAgICAgICAgVGhpcyBpcyBhIGZpcnN0LXBhc3MgYXQgdGhpcyBzdXBwb3J0LgorICAgICAg
ICBJJ20gbm90IDEwMCUgc3VyZSBJIGxpa2UgdGhlIHJlLXVzZSBvZiBcMCBhcyB0aGUgRU9GIGNo
YXJhY3RlciwKKyAgICAgICAgYnV0IGl0IGhhcyBzb21lIGVsZWdhbmNlLgorCisgICAgICAgIEl0
J3MgdW5jbGVhciBmcm9tIHRoZSBzcGVjIGlmIGVtaXR0aW5nIEVPRiBzaG91bGQgdGhyb3cgYXdh
eQorICAgICAgICBidWlsdC11cCB0b2tlbiBpbmZvcm1hdGlvbiBvciBub3QuCisKKyAgICAgICAg
U3RpbGwgbmVlZHMgZnVydGhlciBkZWJ1Z2dpbmcgdG8gZmluZCBvdXQgd2hhdCB0ZXN0cyBhcmUg
bm93IGZhaWxpbmcuCisKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6CisgICAgICAgICogaHRtbC9IVE1MRG9jdW1lbnRQYXJzZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTERvY3VtZW50UGFyc2VyOjpmaW5pc2gpOgorICAgICAgICAqIGh0bWwvSFRNTFRv
a2VuLmg6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVG9rZW46Om1ha2VFbmRPZkZpbGUpOgorICAg
ICAgICAqIGh0bWwvSFRNTFRva2VuaXplci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVG9r
ZW5pemVyOjpuZXh0VG9rZW4pOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRva2VuaXplcjo6ZW1p
dEVuZE9mRmlsZSk6CisgICAgICAgICogaHRtbC9IVE1MVG9rZW5pemVyLmg6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MVG9rZW5pemVyOjpJbnB1dFN0cmVhbVByZXByb2Nlc3Nvcjo6cGVlayk6Cisg
ICAgICAgICogaHRtbC9IVE1MVHJlZUJ1aWxkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TFRyZWVCdWlsZGVyOjpwYXNzVG9rZW5Ub0xlZ2FjeVBhcnNlcik6CisKIDIwMTAtMDYtMjggIEVy
aWMgU2VpZGVsICA8ZXJpY0B3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2ogYi9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRl
eCAxMmFiMjE2OTNjMmI1ZmJkYjJkYTUxZWEyYzFiMzMwNDc2YjIwY2E5Li5iZDg0MjY0YTkzYWI3
ZDA3YTBlZTE0MmE5NzIzMWYzODljMTBlMWE4IDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagpAQCAtNTg3NSw5ICs1ODc1LDkgQEAKIAkJMTkyMTMyNzExMUMwRTZC
QjAwNDU2MjM4IC8qIFNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50LmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50LmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTkyMTMyNzIxMUMwRTZCQjAwNDU2MjM4IC8q
IFNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTE5MjEzMjczMTFDMEU2QkIwMDQ1NjIzOCAvKiBTVkdGRUNvbnZvbHZlTWF0cml4
RWxlbWVudC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gU1ZHRkVDb252b2x2ZU1hdHJpeEVs
ZW1lbnQuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkxOUJGRjY0NjExQzBGMkFD
MDBCOEMwNEQgLyogRE9NU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IGZp
bGU7IHBhdGggPSBET01TVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkxOUJGRjY0NjExQzBGMkFDMDBCOEMwNEQgLyogRE9NU1ZHRkVDb252
b2x2ZU1hdHJpeEVsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9N
U1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMTlCRkY2NDcxMUMwRjJBQzAwQjhDMDREIC8qIERPTVNWR0ZFQ29udm9sdmVNYXRyaXhFbGVt
ZW50Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRE9NU1ZHRkVD
b252b2x2ZU1hdHJpeEVsZW1lbnQubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTE5
QkZGNjQ4MTFDMEYyQUMwMEI4QzA0RCAvKiBET01TVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudElu
dGVybmFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBmaWxlOyBwYXRoID0gRE9NU1ZHRkVDb252b2x2ZU1hdHJpeEVs
ZW1lbnRJbnRlcm5hbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxOUJGRjY0ODEx
QzBGMkFDMDBCOEMwNEQgLyogRE9NU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnRJbnRlcm5hbC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01TVkdGRUNvbnZvbHZlTWF0cml4
RWxlbWVudEludGVybmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTE5QkZGNjQ5
MTFDMEYyQUMwMEI4QzA0RCAvKiBKU1NWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50LmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTU1ZHRkVDb252b2x2ZU1hdHJpeEVs
ZW1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxOUJGRjY0QTExQzBGMkFD
MDBCOEMwNEQgLyogSlNTVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBKU1NWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBMEQ1NzM0MEE1Qzc3RkUwMDdFREQ0QyAvKiBPdmVy
Zmxvd0V2ZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBPdmVy
Zmxvd0V2ZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvaHRtbC9IVE1MRG9jdW1lbnRQYXJzZXIuY3BwIGIvV2ViQ29yZS9odG1sL0hUTUxEb2N1
bWVudFBhcnNlci5jcHAKaW5kZXggNTgxZTc4ZWNhMDU0NzdkOWY0YWI3M2JlZWJlZDJmY2UyZDhm
N2ZhYS4uOTYwMGZiZTllNTkwMGY2YzE5MTc1YTcyMWNkY2UyZTdkY2IyMzEwMCAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9odG1sL0hUTUxEb2N1bWVudFBhcnNlci5jcHAKKysrIGIvV2ViQ29yZS9odG1s
L0hUTUxEb2N1bWVudFBhcnNlci5jcHAKQEAgLTI5MSw2ICsyOTEsOCBAQCB2b2lkIEhUTUxEb2N1
bWVudFBhcnNlcjo6ZmluaXNoKCkKIHsKICAgICAvLyBXZSdyZSBub3QgZ29pbmcgdG8gZ2V0IGFu
eSBtb3JlIGRhdGEgb2ZmIHRoZSBuZXR3b3JrLCBzbyB3ZSBjbG9zZSB0aGUKICAgICAvLyBpbnB1
dCBzdHJlYW0gdG8gaW5kaWNhdGUgRU9GLgorICAgIHN0YXRpYyBjb25zdCBVQ2hhciBlbmRPZkZp
bGUgPSAwOworICAgIG1faW5wdXQuYXBwZW5kVG9FbmQoU3RyaW5nKCZlbmRPZkZpbGUsIDEpKTsK
ICAgICBtX2lucHV0LmNsb3NlKCk7CiAgICAgYXR0ZW1wdFRvRW5kKCk7CiB9CmRpZmYgLS1naXQg
YS9XZWJDb3JlL2h0bWwvSFRNTFRva2VuLmggYi9XZWJDb3JlL2h0bWwvSFRNTFRva2VuLmgKaW5k
ZXggMWI1YTc5ZGU2MDFlMWJiNjViODhhMzRkZmI4NzM2ZGIyMzAyNjkxMy4uZjcwM2NhMjg2YzIz
OTBlOTg0NDIyYjRkODIyYzVhYjQ2NTQ3NmYyYiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hU
TUxUb2tlbi5oCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MVG9rZW4uaApAQCAtNjAsNiArNjAsMTQg
QEAgcHVibGljOgogICAgICAgICBtX3R5cGUgPSBVbmluaXRpYWxpemVkOwogICAgIH0KIAorICAg
IHZvaWQgbWFrZUVuZE9mRmlsZSgpCisgICAgeworICAgICAgICAvLyBTaG91bGQgd2UgQVNTRVJU
KG1fdHlwZSA9PSBVbmluaXRpYWxpemVkKSBoZXJlPworICAgICAgICAvLyBJZiB3ZSBkbywgd2Un
ZCBoYXZlIHRvIGJlIHN1cmUgdG8gZXhwbGljaXRseSBhYm9ydCBhbnkgc3RhcnRlZCB0b2tlbnMK
KyAgICAgICAgLy8gaW4gSFRNTFRva2VuaXplciBiZWZvcmUgY2FsbGluZyBtYWtlRW5kT2ZGaWxl
KCkuCisgICAgICAgIG1fdHlwZSA9IEVuZE9mRmlsZTsKKyAgICB9CisKICAgICB2b2lkIGJlZ2lu
U3RhcnRUYWcoVUNoYXIgY2hhcmFjdGVyKQogICAgIHsKICAgICAgICAgQVNTRVJUKG1fdHlwZSA9
PSBVbmluaXRpYWxpemVkKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MVG9rZW5pemVy
LmNwcCBiL1dlYkNvcmUvaHRtbC9IVE1MVG9rZW5pemVyLmNwcAppbmRleCA4NDg5NGZmZmIwYzU2
OGNhZWZmNjUyYjU1NWZmMzI1NzkwODk0MzZkLi4yNmY0YmM1N2RjYzYxNTRhYmQwMGVkN2JkMmNi
MjNkNGRhZWM4Yzc5IDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTFRva2VuaXplci5jcHAK
KysrIGIvV2ViQ29yZS9odG1sL0hUTUxUb2tlbml6ZXIuY3BwCkBAIC00MCw2ICs0MCw4IEBACiAK
IHVzaW5nIG5hbWVzcGFjZSBXVEY7CiAKK2NvbnN0IFVDaGFyIGVuZE9mRmlsZSA9IDA7CisKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKQEAgLTE3Miw2
ICsxNzQsMjYgQEAgaW5saW5lIGJvb2wgSFRNTFRva2VuaXplcjo6cHJvY2Vzc0VudGl0eShTZWdt
ZW50ZWRTdHJpbmcmIHNvdXJjZSkKICAgICAgICAgcmV0dXJuIHRydWU7ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICB9IHdoaWxlIChm
YWxzZSkKIAorLy8gSWRlbnRpY2FsIHRvIEVNSVRfQU5EX1JFU1VNRV9JTiwgZXhjZXB0IGRvZXMg
bm90IGFkdmFuY2UuCisjZGVmaW5lIEVNSVRfQU5EX1JFQ09OU1VNRV9JTihzdGF0ZU5hbWUpICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgZG8geyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisg
ICAgICAgIG1fc3RhdGUgPSBzdGF0ZU5hbWU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCisgICAgICAgIGVtaXRDdXJyZW50VG9rZW4oKTsgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHJldHVybiB0
cnVlOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCisgICAgfSB3aGlsZSAoZmFsc2UpCisKKy8vIFVzZWQgdG8gZW1pdCB0aGUgRW5kT2ZGaWxl
IHRva2VuLgorLy8gQ2hlY2sgaWYgd2UgaGF2ZSBidWZmZXJlZCBjaGFyYWN0ZXJzIHRvIGVtaXQg
Zmlyc3QgYmVmb3JlIGVtaXR0aW5nIHRoZSBFT0YuCisjZGVmaW5lIEVNSVRfRU5EX09GX0ZJTEUo
KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAg
ZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBcCisgICAgICAgIGlmIChtX3Rva2VuLT50eXBlKCkgPT0gSFRNTFRva2Vu
OjpDaGFyYWN0ZXIpICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc
CisgICAgICAgIG1fc3RhdGUgPSBEYXRhU3RhdGU7ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHNvdXJjZS5hZHZhbmNlKG1fbGluZU51bWJl
cik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIGVtaXRF
bmRPZkZpbGUoKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCisgICAgICAgIHJldHVybiB0cnVlOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfSB3aGlsZSAoZmFsc2UpCisKICNkZWZp
bmUgX0ZMVVNIX0JVRkZFUkVEX0VORF9UQUcoKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKICAgICBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgQVNTRVJUKG1fdG9r
ZW4tPnR5cGUoKSA9PSBIVE1MVG9rZW46OkNoYXJhY3RlciB8fCAgICAgICAgICAgICAgICAgIFwK
QEAgLTI1Miw2ICsyNzQsMTMgQEAgYm9vbCBIVE1MVG9rZW5pemVyOjpuZXh0VG9rZW4oU2VnbWVu
dGVkU3RyaW5nJiBzb3VyY2UsIEhUTUxUb2tlbiYgdG9rZW4pCiAgICAgICAgICAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBBRFZBTkNFX1RPKFRhZ09wZW5T
dGF0ZSk7CisgICAgICAgIH0gZWxzZSBpZiAoY2MgPT0gZW5kT2ZGaWxlKSB7CisgICAgICAgICAg
ICBpZiAobV90b2tlbi0+dHlwZSgpID09IEhUTUxUb2tlbjo6Q2hhcmFjdGVyKSB7CisgICAgICAg
ICAgICAgICAgLy8gV2UgaGF2ZSBhIGJ1bmNoIG9mIGNoYXJhY3RlciB0b2tlbnMgcXVldWVkIHVw
IHRoYXQgd2UKKyAgICAgICAgICAgICAgICAvLyBhcmUgZW1pdHRpbmcgbGF6aWx5IGhlcmUuCisg
ICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBF
TUlUX0VORF9PRl9GSUxFKCk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBlbWl0Q2hh
cmFjdGVyKGNjKTsKICAgICAgICAgICAgIEFEVkFOQ0VfVE8oRGF0YVN0YXRlKTsKQEAgLTI3MSw2
ICszMDAsOCBAQCBib29sIEhUTUxUb2tlbml6ZXI6Om5leHRUb2tlbihTZWdtZW50ZWRTdHJpbmcm
IHNvdXJjZSwgSFRNTFRva2VuJiB0b2tlbikKICAgICAgICAgICAgIEFEVkFOQ0VfVE8oQ2hhcmFj
dGVyUmVmZXJlbmNlSW5SQ0RBVEFTdGF0ZSk7CiAgICAgICAgIGVsc2UgaWYgKGNjID09ICc8JykK
ICAgICAgICAgICAgIEFEVkFOQ0VfVE8oUkNEQVRBTGVzc1RoYW5TaWduU3RhdGUpOworICAgICAg
ICBlbHNlIGlmIChjYyA9PSBlbmRPZkZpbGUpCisgICAgICAgICAgICBFTUlUX0VORF9PRl9GSUxF
KCk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgZW1pdENoYXJhY3RlcihjYyk7CiAgICAg
ICAgICAgICBBRFZBTkNFX1RPKFJDREFUQVN0YXRlKTsKQEAgLTI4OCw2ICszMTksOCBAQCBib29s
IEhUTUxUb2tlbml6ZXI6Om5leHRUb2tlbihTZWdtZW50ZWRTdHJpbmcmIHNvdXJjZSwgSFRNTFRv
a2VuJiB0b2tlbikKICAgICBCRUdJTl9TVEFURShSQVdURVhUU3RhdGUpIHsKICAgICAgICAgaWYg
KGNjID09ICc8JykKICAgICAgICAgICAgIEFEVkFOQ0VfVE8oUkFXVEVYVExlc3NUaGFuU2lnblN0
YXRlKTsKKyAgICAgICAgZWxzZSBpZiAoY2MgPT0gZW5kT2ZGaWxlKQorICAgICAgICAgICAgRU1J
VF9FTkRfT0ZfRklMRSgpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIGVtaXRDaGFyYWN0
ZXIoY2MpOwogICAgICAgICAgICAgQURWQU5DRV9UTyhSQVdURVhUU3RhdGUpOwpAQCAtMzA2LDcg
KzMzOSwxMCBAQCBib29sIEhUTUxUb2tlbml6ZXI6Om5leHRUb2tlbihTZWdtZW50ZWRTdHJpbmcm
IHNvdXJjZSwgSFRNTFRva2VuJiB0b2tlbikKICAgICBFTkRfU1RBVEUoKQogCiAgICAgQkVHSU5f
U1RBVEUoUExBSU5URVhUU3RhdGUpIHsKLSAgICAgICAgZW1pdENoYXJhY3RlcihjYyk7CisgICAg
ICAgIGlmIChjYyA9PSBlbmRPZkZpbGUpCisgICAgICAgICAgICBFTUlUX0VORF9PRl9GSUxFKCk7
CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGVtaXRDaGFyYWN0ZXIoY2MpOwogICAgICAgICBB
RFZBTkNFX1RPKFBMQUlOVEVYVFN0YXRlKTsKICAgICB9CiAgICAgRU5EX1NUQVRFKCkKQEAgLTM0
NiwxMSArMzgyLDE1IEBAIGJvb2wgSFRNTFRva2VuaXplcjo6bmV4dFRva2VuKFNlZ21lbnRlZFN0
cmluZyYgc291cmNlLCBIVE1MVG9rZW4mIHRva2VuKQogICAgICAgICB9IGVsc2UgaWYgKGNjID09
ICc+JykgewogICAgICAgICAgICAgZW1pdFBhcnNlRXJyb3IoKTsKICAgICAgICAgICAgIEFEVkFO
Q0VfVE8oRGF0YVN0YXRlKTsKKyAgICAgICAgfSBlbHNlIGlmIChjYyA9PSBlbmRPZkZpbGUpIHsK
KyAgICAgICAgICAgIGVtaXRQYXJzZUVycm9yKCk7CisgICAgICAgICAgICBlbWl0Q2hhcmFjdGVy
KCc8Jyk7CisgICAgICAgICAgICBlbWl0Q2hhcmFjdGVyKCcvJyk7CisgICAgICAgICAgICBSRUNP
TlNVTUVfSU4oRGF0YVN0YXRlKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGVtaXRQ
YXJzZUVycm9yKCk7CiAgICAgICAgICAgICBSRUNPTlNVTUVfSU4oQm9ndXNDb21tZW50U3RhdGUp
OwogICAgICAgICB9Ci0gICAgICAgIC8vIEZJWE1FOiBIYW5kbGUgRU9GIHByb3Blcmx5LgogICAg
IH0KICAgICBFTkRfU1RBVEUoKQogCkBAIC0zNjQsMTEgKzQwNCwxMyBAQCBib29sIEhUTUxUb2tl
bml6ZXI6Om5leHRUb2tlbihTZWdtZW50ZWRTdHJpbmcmIHNvdXJjZSwgSFRNTFRva2VuJiB0b2tl
bikKICAgICAgICAgZWxzZSBpZiAoY2MgPj0gJ0EnICYmIGNjIDw9ICdaJykgewogICAgICAgICAg
ICAgbV90b2tlbi0+YXBwZW5kVG9OYW1lKHRvTG93ZXJDYXNlKGNjKSk7CiAgICAgICAgICAgICBB
RFZBTkNFX1RPKFRhZ05hbWVTdGF0ZSk7CisgICAgICAgIH0gaWYgKGNjID09IGVuZE9mRmlsZSkg
eworICAgICAgICAgICAgZW1pdFBhcnNlRXJyb3IoKTsKKyAgICAgICAgICAgIFJFQ09OU1VNRV9J
TihEYXRhU3RhdGUpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgbV90b2tlbi0+YXBw
ZW5kVG9OYW1lKGNjKTsKICAgICAgICAgICAgIEFEVkFOQ0VfVE8oVGFnTmFtZVN0YXRlKTsKICAg
ICAgICAgfQotICAgICAgICAvLyBGSVhNRTogSGFuZGxlIEVPRiBwcm9wZXJseS4KICAgICB9CiAg
ICAgRU5EX1NUQVRFKCkKIApAQCAtNTc0LDExICs2MTYsMTMgQEAgYm9vbCBIVE1MVG9rZW5pemVy
OjpuZXh0VG9rZW4oU2VnbWVudGVkU3RyaW5nJiBzb3VyY2UsIEhUTUxUb2tlbiYgdG9rZW4pCiAg
ICAgICAgICAgICBBRFZBTkNFX1RPKFNjcmlwdERhdGFFc2NhcGVkRGFzaFN0YXRlKTsKICAgICAg
ICAgfSBlbHNlIGlmIChjYyA9PSAnPCcpCiAgICAgICAgICAgICBBRFZBTkNFX1RPKFNjcmlwdERh
dGFFc2NhcGVkTGVzc1RoYW5TaWduU3RhdGUpOwotICAgICAgICBlbHNlIHsKKyAgICAgICAgZWxz
ZSBpZiAoY2MgPT0gZW5kT2ZGaWxlKSB7CisgICAgICAgICAgICBlbWl0UGFyc2VFcnJvcigpOwor
ICAgICAgICAgICAgUkVDT05TVU1FX0lOKERhdGFTdGF0ZSk7CisgICAgICAgIH0gZWxzZSB7CiAg
ICAgICAgICAgICBlbWl0Q2hhcmFjdGVyKGNjKTsKICAgICAgICAgICAgIEFEVkFOQ0VfVE8oU2Ny
aXB0RGF0YUVzY2FwZWRTdGF0ZSk7CiAgICAgICAgIH0KLSAgICAgICAgLy8gRklYTUU6IEhhbmRs
ZSBFT0YgcHJvcGVybHkuCiAgICAgfQogICAgIEVORF9TVEFURSgpCiAKQEAgLTU4OCwxMSArNjMy
LDEzIEBAIGJvb2wgSFRNTFRva2VuaXplcjo6bmV4dFRva2VuKFNlZ21lbnRlZFN0cmluZyYgc291
cmNlLCBIVE1MVG9rZW4mIHRva2VuKQogICAgICAgICAgICAgQURWQU5DRV9UTyhTY3JpcHREYXRh
RXNjYXBlZERhc2hEYXNoU3RhdGUpOwogICAgICAgICB9IGVsc2UgaWYgKGNjID09ICc8JykKICAg
ICAgICAgICAgIEFEVkFOQ0VfVE8oU2NyaXB0RGF0YUVzY2FwZWRMZXNzVGhhblNpZ25TdGF0ZSk7
Ci0gICAgICAgIGVsc2UgeworICAgICAgICBlbHNlIGlmIChjYyA9PSBlbmRPZkZpbGUpIHsKKyAg
ICAgICAgICAgIGVtaXRQYXJzZUVycm9yKCk7CisgICAgICAgICAgICBSRUNPTlNVTUVfSU4oRGF0
YVN0YXRlKTsKKyAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGVtaXRDaGFyYWN0ZXIoY2Mp
OwogICAgICAgICAgICAgQURWQU5DRV9UTyhTY3JpcHREYXRhRXNjYXBlZFN0YXRlKTsKICAgICAg
ICAgfQotICAgICAgICAvLyBGSVhNRTogSGFuZGxlIEVPRiBwcm9wZXJseS4KICAgICB9CiAgICAg
RU5EX1NUQVRFKCkKIApAQCAtNjA1LDExICs2NTEsMTMgQEAgYm9vbCBIVE1MVG9rZW5pemVyOjpu
ZXh0VG9rZW4oU2VnbWVudGVkU3RyaW5nJiBzb3VyY2UsIEhUTUxUb2tlbiYgdG9rZW4pCiAgICAg
ICAgIGVsc2UgaWYgKGNjID09ICc+JykgewogICAgICAgICAgICAgZW1pdENoYXJhY3RlcihjYyk7
CiAgICAgICAgICAgICBBRFZBTkNFX1RPKFNjcmlwdERhdGFTdGF0ZSk7CisgICAgICAgIH0gaWYg
KGNjID09IGVuZE9mRmlsZSkgeworICAgICAgICAgICAgZW1pdFBhcnNlRXJyb3IoKTsKKyAgICAg
ICAgICAgIFJFQ09OU1VNRV9JTihEYXRhU3RhdGUpOwogICAgICAgICB9IGVsc2UgewogICAgICAg
ICAgICAgZW1pdENoYXJhY3RlcihjYyk7CiAgICAgICAgICAgICBBRFZBTkNFX1RPKFNjcmlwdERh
dGFFc2NhcGVkU3RhdGUpOwogICAgICAgICB9Ci0gICAgICAgIC8vIEZJWE1FOiBIYW5kbGUgRU9G
IHByb3Blcmx5LgogICAgIH0KICAgICBFTkRfU1RBVEUoKQogCkBAIC03MTAsMTEgKzc1OCwxMyBA
QCBib29sIEhUTUxUb2tlbml6ZXI6Om5leHRUb2tlbihTZWdtZW50ZWRTdHJpbmcmIHNvdXJjZSwg
SFRNTFRva2VuJiB0b2tlbikKICAgICAgICAgfSBlbHNlIGlmIChjYyA9PSAnPCcpIHsKICAgICAg
ICAgICAgIGVtaXRDaGFyYWN0ZXIoY2MpOwogICAgICAgICAgICAgQURWQU5DRV9UTyhTY3JpcHRE
YXRhRG91YmxlRXNjYXBlZExlc3NUaGFuU2lnblN0YXRlKTsKKyAgICAgICAgfSBlbHNlIGlmIChj
YyA9PSBlbmRPZkZpbGUpIHsKKyAgICAgICAgICAgIGVtaXRQYXJzZUVycm9yKCk7CisgICAgICAg
ICAgICBSRUNPTlNVTUVfSU4oRGF0YVN0YXRlKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAg
ICAgIGVtaXRDaGFyYWN0ZXIoY2MpOwogICAgICAgICAgICAgQURWQU5DRV9UTyhTY3JpcHREYXRh
RG91YmxlRXNjYXBlZFN0YXRlKTsKICAgICAgICAgfQotICAgICAgICAvLyBGSVhNRTogSGFuZGxl
IEVPRiBwcm9wZXJseS4KICAgICB9CiAgICAgRU5EX1NUQVRFKCkKIApAQCAtNzI1LDExICs3NzUs
MTMgQEAgYm9vbCBIVE1MVG9rZW5pemVyOjpuZXh0VG9rZW4oU2VnbWVudGVkU3RyaW5nJiBzb3Vy
Y2UsIEhUTUxUb2tlbiYgdG9rZW4pCiAgICAgICAgIH0gZWxzZSBpZiAoY2MgPT0gJzwnKSB7CiAg
ICAgICAgICAgICBlbWl0Q2hhcmFjdGVyKGNjKTsKICAgICAgICAgICAgIEFEVkFOQ0VfVE8oU2Ny
aXB0RGF0YURvdWJsZUVzY2FwZWRMZXNzVGhhblNpZ25TdGF0ZSk7CisgICAgICAgIH0gZWxzZSBp
ZiAoY2MgPT0gZW5kT2ZGaWxlKSB7CisgICAgICAgICAgICBlbWl0UGFyc2VFcnJvcigpOworICAg
ICAgICAgICAgUkVDT05TVU1FX0lOKERhdGFTdGF0ZSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAg
ICAgICAgICBlbWl0Q2hhcmFjdGVyKGNjKTsKICAgICAgICAgICAgIEFEVkFOQ0VfVE8oU2NyaXB0
RGF0YURvdWJsZUVzY2FwZWRTdGF0ZSk7CiAgICAgICAgIH0KLSAgICAgICAgLy8gRklYTUU6IEhh
bmRsZSBFT0YgcHJvcGVybHkuCiAgICAgfQogICAgIEVORF9TVEFURSgpCiAKQEAgLTc0MywxMSAr
Nzk1LDEzIEBAIGJvb2wgSFRNTFRva2VuaXplcjo6bmV4dFRva2VuKFNlZ21lbnRlZFN0cmluZyYg
c291cmNlLCBIVE1MVG9rZW4mIHRva2VuKQogICAgICAgICB9IGVsc2UgaWYgKGNjID09ICc+Jykg
ewogICAgICAgICAgICAgZW1pdENoYXJhY3RlcihjYyk7CiAgICAgICAgICAgICBBRFZBTkNFX1RP
KFNjcmlwdERhdGFTdGF0ZSk7CisgICAgICAgIH0gZWxzZSBpZiAoY2MgPT0gZW5kT2ZGaWxlKSB7
CisgICAgICAgICAgICBlbWl0UGFyc2VFcnJvcigpOworICAgICAgICAgICAgUkVDT05TVU1FX0lO
KERhdGFTdGF0ZSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBlbWl0Q2hhcmFjdGVy
KGNjKTsKICAgICAgICAgICAgIEFEVkFOQ0VfVE8oU2NyaXB0RGF0YURvdWJsZUVzY2FwZWRTdGF0
ZSk7CiAgICAgICAgIH0KLSAgICAgICAgLy8gRklYTUU6IEhhbmRsZSBFT0YgcHJvcGVybHkuCiAg
ICAgfQogICAgIEVORF9TVEFURSgpCiAKQEAgLTc5Miw2ICs4NDYsOSBAQCBib29sIEhUTUxUb2tl
bml6ZXI6Om5leHRUb2tlbihTZWdtZW50ZWRTdHJpbmcmIHNvdXJjZSwgSFRNTFRva2VuJiB0b2tl
bikKICAgICAgICAgICAgIG1fdG9rZW4tPmFkZE5ld0F0dHJpYnV0ZSgpOwogICAgICAgICAgICAg
bV90b2tlbi0+YXBwZW5kVG9BdHRyaWJ1dGVOYW1lKHRvTG93ZXJDYXNlKGNjKSk7CiAgICAgICAg
ICAgICBBRFZBTkNFX1RPKEF0dHJpYnV0ZU5hbWVTdGF0ZSk7CisgICAgICAgIH0gZWxzZSBpZiAo
Y2MgPT0gZW5kT2ZGaWxlKSB7CisgICAgICAgICAgICBlbWl0UGFyc2VFcnJvcigpOworICAgICAg
ICAgICAgUkVDT05TVU1FX0lOKERhdGFTdGF0ZSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAg
ICAgICBpZiAoY2MgPT0gJyInIHx8IGNjID09ICdcJycgfHwgY2MgPT0gJzwnIHx8IGNjID09ICc9
JykKICAgICAgICAgICAgICAgICBlbWl0UGFyc2VFcnJvcigpOwpAQCAtNzk5LDcgKzg1Niw2IEBA
IGJvb2wgSFRNTFRva2VuaXplcjo6bmV4dFRva2VuKFNlZ21lbnRlZFN0cmluZyYgc291cmNlLCBI
VE1MVG9rZW4mIHRva2VuKQogICAgICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9BdHRyaWJ1dGVO
YW1lKGNjKTsKICAgICAgICAgICAgIEFEVkFOQ0VfVE8oQXR0cmlidXRlTmFtZVN0YXRlKTsKICAg
ICAgICAgfQotICAgICAgICAvLyBGSVhNRTogSGFuZGxlIEVPRiBwcm9wZXJseS4KICAgICB9CiAg
ICAgRU5EX1NUQVRFKCkKIApAQCAtODE1LDEzICs4NzEsMTUgQEAgYm9vbCBIVE1MVG9rZW5pemVy
OjpuZXh0VG9rZW4oU2VnbWVudGVkU3RyaW5nJiBzb3VyY2UsIEhUTUxUb2tlbiYgdG9rZW4pCiAg
ICAgICAgIGVsc2UgaWYgKGNjID49ICdBJyAmJiBjYyA8PSAnWicpIHsKICAgICAgICAgICAgIG1f
dG9rZW4tPmFwcGVuZFRvQXR0cmlidXRlTmFtZSh0b0xvd2VyQ2FzZShjYykpOwogICAgICAgICAg
ICAgQURWQU5DRV9UTyhBdHRyaWJ1dGVOYW1lU3RhdGUpOworICAgICAgICB9IGVsc2UgaWYgKGNj
ID09IGVuZE9mRmlsZSkgeworICAgICAgICAgICAgZW1pdFBhcnNlRXJyb3IoKTsKKyAgICAgICAg
ICAgIFJFQ09OU1VNRV9JTihEYXRhU3RhdGUpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAg
ICAgaWYgKGNjID09ICciJyB8fCBjYyA9PSAnXCcnIHx8IGNjID09ICc8JyB8fCBjYyA9PSAnPScp
CiAgICAgICAgICAgICAgICAgZW1pdFBhcnNlRXJyb3IoKTsKICAgICAgICAgICAgIG1fdG9rZW4t
PmFwcGVuZFRvQXR0cmlidXRlTmFtZShjYyk7CiAgICAgICAgICAgICBBRFZBTkNFX1RPKEF0dHJp
YnV0ZU5hbWVTdGF0ZSk7CiAgICAgICAgIH0KLSAgICAgICAgLy8gRklYTUU6IEhhbmRsZSBFT0Yg
cHJvcGVybHkuCiAgICAgfQogICAgIEVORF9TVEFURSgpCiAKQEAgLTgzOCw2ICs4OTYsOSBAQCBi
b29sIEhUTUxUb2tlbml6ZXI6Om5leHRUb2tlbihTZWdtZW50ZWRTdHJpbmcmIHNvdXJjZSwgSFRN
TFRva2VuJiB0b2tlbikKICAgICAgICAgICAgIG1fdG9rZW4tPmFkZE5ld0F0dHJpYnV0ZSgpOwog
ICAgICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9BdHRyaWJ1dGVOYW1lKHRvTG93ZXJDYXNlKGNj
KSk7CiAgICAgICAgICAgICBBRFZBTkNFX1RPKEF0dHJpYnV0ZU5hbWVTdGF0ZSk7CisgICAgICAg
IH0gZWxzZSBpZiAoY2MgPT0gZW5kT2ZGaWxlKSB7CisgICAgICAgICAgICBlbWl0UGFyc2VFcnJv
cigpOworICAgICAgICAgICAgUkVDT05TVU1FX0lOKERhdGFTdGF0ZSk7CiAgICAgICAgIH0gZWxz
ZSB7CiAgICAgICAgICAgICBpZiAoY2MgPT0gJyInIHx8IGNjID09ICdcJycgfHwgY2MgPT0gJzwn
KQogICAgICAgICAgICAgICAgIGVtaXRQYXJzZUVycm9yKCk7CkBAIC04NDUsNyArOTA2LDYgQEAg
Ym9vbCBIVE1MVG9rZW5pemVyOjpuZXh0VG9rZW4oU2VnbWVudGVkU3RyaW5nJiBzb3VyY2UsIEhU
TUxUb2tlbiYgdG9rZW4pCiAgICAgICAgICAgICBtX3Rva2VuLT5hcHBlbmRUb0F0dHJpYnV0ZU5h
bWUoY2MpOwogICAgICAgICAgICAgQURWQU5DRV9UTyhBdHRyaWJ1dGVOYW1lU3RhdGUpOwogICAg
ICAgICB9Ci0gICAgICAgIC8vIEZJWE1FOiBIYW5kbGUgRU9GIHByb3Blcmx5LgogICAgIH0KICAg
ICBFTkRfU1RBVEUoKQogCkBAIC04NjEsNiArOTIxLDkgQEAgYm9vbCBIVE1MVG9rZW5pemVyOjpu
ZXh0VG9rZW4oU2VnbWVudGVkU3RyaW5nJiBzb3VyY2UsIEhUTUxUb2tlbiYgdG9rZW4pCiAgICAg
ICAgIGVsc2UgaWYgKGNjID09ICc+JykgewogICAgICAgICAgICAgZW1pdFBhcnNlRXJyb3IoKTsK
ICAgICAgICAgICAgIEVNSVRfQU5EX1JFU1VNRV9JTihEYXRhU3RhdGUpOworICAgICAgICB9IGVs
c2UgaWYgKGNjID09IGVuZE9mRmlsZSkgeworICAgICAgICAgICAgZW1pdFBhcnNlRXJyb3IoKTsK
KyAgICAgICAgICAgIFJFQ09OU1VNRV9JTihEYXRhU3RhdGUpOwogICAgICAgICB9IGVsc2Ugewog
ICAgICAgICAgICAgaWYgKGNjID09ICc8JyB8fCBjYyA9PSAnPScgfHwgY2MgPT0gJ2AnKQogICAg
ICAgICAgICAgICAgIGVtaXRQYXJzZUVycm9yKCk7CkBAIC04NzYsMTEgKzkzOSwxMyBAQCBib29s
IEhUTUxUb2tlbml6ZXI6Om5leHRUb2tlbihTZWdtZW50ZWRTdHJpbmcmIHNvdXJjZSwgSFRNTFRv
a2VuJiB0b2tlbikKICAgICAgICAgZWxzZSBpZiAoY2MgPT0gJyYnKSB7CiAgICAgICAgICAgICBt
X2FkZGl0aW9uYWxBbGxvd2VkQ2hhcmFjdGVyID0gJyInOwogICAgICAgICAgICAgQURWQU5DRV9U
TyhDaGFyYWN0ZXJSZWZlcmVuY2VJbkF0dHJpYnV0ZVZhbHVlU3RhdGUpOworICAgICAgICB9IGVs
c2UgaWYgKGNjID09IGVuZE9mRmlsZSkgeworICAgICAgICAgICAgZW1pdFBhcnNlRXJyb3IoKTsK
KyAgICAgICAgICAgIFJFQ09OU1VNRV9JTihEYXRhU3RhdGUpOwogICAgICAgICB9IGVsc2Ugewog
ICAgICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9BdHRyaWJ1dGVWYWx1ZShjYyk7CiAgICAgICAg
ICAgICBBRFZBTkNFX1RPKEF0dHJpYnV0ZVZhbHVlRG91YmxlUXVvdGVkU3RhdGUpOwogICAgICAg
ICB9Ci0gICAgICAgIC8vIEZJWE1FOiBIYW5kbGUgRU9GIHByb3Blcmx5LgogICAgIH0KICAgICBF
TkRfU1RBVEUoKQogCkBAIC04OTAsMTEgKzk1NSwxMyBAQCBib29sIEhUTUxUb2tlbml6ZXI6Om5l
eHRUb2tlbihTZWdtZW50ZWRTdHJpbmcmIHNvdXJjZSwgSFRNTFRva2VuJiB0b2tlbikKICAgICAg
ICAgZWxzZSBpZiAoY2MgPT0gJyYnKSB7CiAgICAgICAgICAgICBtX2FkZGl0aW9uYWxBbGxvd2Vk
Q2hhcmFjdGVyID0gJ1wnJzsKICAgICAgICAgICAgIEFEVkFOQ0VfVE8oQ2hhcmFjdGVyUmVmZXJl
bmNlSW5BdHRyaWJ1dGVWYWx1ZVN0YXRlKTsKKyAgICAgICAgfSBlbHNlIGlmIChjYyA9PSBlbmRP
ZkZpbGUpIHsKKyAgICAgICAgICAgIGVtaXRQYXJzZUVycm9yKCk7CisgICAgICAgICAgICBSRUNP
TlNVTUVfSU4oRGF0YVN0YXRlKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIG1fdG9r
ZW4tPmFwcGVuZFRvQXR0cmlidXRlVmFsdWUoY2MpOwogICAgICAgICAgICAgQURWQU5DRV9UTyhB
dHRyaWJ1dGVWYWx1ZVNpbmdsZVF1b3RlZFN0YXRlKTsKICAgICAgICAgfQotICAgICAgICAvLyBG
SVhNRTogSGFuZGxlIEVPRiBwcm9wZXJseS4KICAgICB9CiAgICAgRU5EX1NUQVRFKCkKIApAQCAt
OTA2LDEzICs5NzMsMTUgQEAgYm9vbCBIVE1MVG9rZW5pemVyOjpuZXh0VG9rZW4oU2VnbWVudGVk
U3RyaW5nJiBzb3VyY2UsIEhUTUxUb2tlbiYgdG9rZW4pCiAgICAgICAgICAgICBBRFZBTkNFX1RP
KENoYXJhY3RlclJlZmVyZW5jZUluQXR0cmlidXRlVmFsdWVTdGF0ZSk7CiAgICAgICAgIH0gZWxz
ZSBpZiAoY2MgPT0gJz4nKQogICAgICAgICAgICAgRU1JVF9BTkRfUkVTVU1FX0lOKERhdGFTdGF0
ZSk7Ci0gICAgICAgIGVsc2UgeworICAgICAgICBlbHNlIGlmIChjYyA9PSBlbmRPZkZpbGUpIHsK
KyAgICAgICAgICAgIGVtaXRQYXJzZUVycm9yKCk7CisgICAgICAgICAgICBSRUNPTlNVTUVfSU4o
RGF0YVN0YXRlKTsKKyAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGlmIChjYyA9PSAnIicg
fHwgY2MgPT0gJ1wnJyB8fCBjYyA9PSAnPCcgfHwgY2MgPT0gJz0nIHx8IGNjID09ICdgJykKICAg
ICAgICAgICAgICAgICBlbWl0UGFyc2VFcnJvcigpOwogICAgICAgICAgICAgbV90b2tlbi0+YXBw
ZW5kVG9BdHRyaWJ1dGVWYWx1ZShjYyk7CiAgICAgICAgICAgICBBRFZBTkNFX1RPKEF0dHJpYnV0
ZVZhbHVlVW5xdW90ZWRTdGF0ZSk7CiAgICAgICAgIH0KLSAgICAgICAgLy8gRklYTUU6IEhhbmRs
ZSBFT0YgcHJvcGVybHkuCiAgICAgfQogICAgIEVORF9TVEFURSgpCiAKQEAgLTk1MSwxMSArMTAy
MCwxMyBAQCBib29sIEhUTUxUb2tlbml6ZXI6Om5leHRUb2tlbihTZWdtZW50ZWRTdHJpbmcmIHNv
dXJjZSwgSFRNTFRva2VuJiB0b2tlbikKICAgICAgICAgICAgIEFEVkFOQ0VfVE8oU2VsZkNsb3Np
bmdTdGFydFRhZ1N0YXRlKTsKICAgICAgICAgZWxzZSBpZiAoY2MgPT0gJz4nKQogICAgICAgICAg
ICAgRU1JVF9BTkRfUkVTVU1FX0lOKERhdGFTdGF0ZSk7Ci0gICAgICAgIGVsc2UgeworICAgICAg
ICBlbHNlIGlmIChjYyA9PSBlbmRPZkZpbGUpIHsKKyAgICAgICAgICAgIGVtaXRQYXJzZUVycm9y
KCk7CisgICAgICAgICAgICBSRUNPTlNVTUVfSU4oRGF0YVN0YXRlKTsKKyAgICAgICAgfSBlbHNl
IHsKICAgICAgICAgICAgIGVtaXRQYXJzZUVycm9yKCk7CiAgICAgICAgICAgICBSRUNPTlNVTUVf
SU4oQmVmb3JlQXR0cmlidXRlTmFtZVN0YXRlKTsKICAgICAgICAgfQotICAgICAgICAvLyBGSVhN
RTogSGFuZGxlIEVPRiBwcm9wZXJseS4KICAgICB9CiAgICAgRU5EX1NUQVRFKCkKIApAQCAtOTYz
LDExICsxMDM0LDEzIEBAIGJvb2wgSFRNTFRva2VuaXplcjo6bmV4dFRva2VuKFNlZ21lbnRlZFN0
cmluZyYgc291cmNlLCBIVE1MVG9rZW4mIHRva2VuKQogICAgICAgICBpZiAoY2MgPT0gJz4nKSB7
CiAgICAgICAgICAgICBub3RJbXBsZW1lbnRlZCgpOwogICAgICAgICAgICAgRU1JVF9BTkRfUkVT
VU1FX0lOKERhdGFTdGF0ZSk7CisgICAgICAgIH0gZWxzZSBpZiAoY2MgPT0gZW5kT2ZGaWxlKSB7
CisgICAgICAgICAgICBlbWl0UGFyc2VFcnJvcigpOworICAgICAgICAgICAgUkVDT05TVU1FX0lO
KERhdGFTdGF0ZSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBlbWl0UGFyc2VFcnJv
cigpOwogICAgICAgICAgICAgUkVDT05TVU1FX0lOKEJlZm9yZUF0dHJpYnV0ZU5hbWVTdGF0ZSk7
CiAgICAgICAgIH0KLSAgICAgICAgLy8gRklYTUU6IEhhbmRsZSBFT0YgcHJvcGVybHkuCiAgICAg
fQogICAgIEVORF9TVEFURSgpCiAKQEAgLTEwMjQsMTEgKzEwOTcsMTMgQEAgYm9vbCBIVE1MVG9r
ZW5pemVyOjpuZXh0VG9rZW4oU2VnbWVudGVkU3RyaW5nJiBzb3VyY2UsIEhUTUxUb2tlbiYgdG9r
ZW4pCiAgICAgICAgIGVsc2UgaWYgKGNjID09ICc+JykgewogICAgICAgICAgICAgZW1pdFBhcnNl
RXJyb3IoKTsKICAgICAgICAgICAgIEVNSVRfQU5EX1JFU1VNRV9JTihEYXRhU3RhdGUpOworICAg
ICAgICB9IGVsc2UgaWYgKGNjID09IGVuZE9mRmlsZSkgeworICAgICAgICAgICAgZW1pdFBhcnNl
RXJyb3IoKTsKKyAgICAgICAgICAgIEVNSVRfQU5EX1JFQ09OU1VNRV9JTihEYXRhU3RhdGUpOwog
ICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9Db21tZW50KGNj
KTsKICAgICAgICAgICAgIEFEVkFOQ0VfVE8oQ29tbWVudFN0YXRlKTsKICAgICAgICAgfQotICAg
ICAgICAvLyBGSVhNRTogSGFuZGxlIEVPRiBwcm9wZXJseS4KICAgICB9CiAgICAgRU5EX1NUQVRF
KCkKIApAQCAtMTAzOCwzNSArMTExMyw0MSBAQCBib29sIEhUTUxUb2tlbml6ZXI6Om5leHRUb2tl
bihTZWdtZW50ZWRTdHJpbmcmIHNvdXJjZSwgSFRNTFRva2VuJiB0b2tlbikKICAgICAgICAgZWxz
ZSBpZiAoY2MgPT0gJz4nKSB7CiAgICAgICAgICAgICBlbWl0UGFyc2VFcnJvcigpOwogICAgICAg
ICAgICAgRU1JVF9BTkRfUkVTVU1FX0lOKERhdGFTdGF0ZSk7CisgICAgICAgIH0gZWxzZSBpZiAo
Y2MgPT0gZW5kT2ZGaWxlKSB7CisgICAgICAgICAgICBlbWl0UGFyc2VFcnJvcigpOworICAgICAg
ICAgICAgRU1JVF9BTkRfUkVDT05TVU1FX0lOKERhdGFTdGF0ZSk7CiAgICAgICAgIH0gZWxzZSB7
CiAgICAgICAgICAgICBtX3Rva2VuLT5hcHBlbmRUb0NvbW1lbnQoJy0nKTsKICAgICAgICAgICAg
IG1fdG9rZW4tPmFwcGVuZFRvQ29tbWVudChjYyk7CiAgICAgICAgICAgICBBRFZBTkNFX1RPKENv
bW1lbnRTdGF0ZSk7CiAgICAgICAgIH0KLSAgICAgICAgLy8gRklYTUU6IEhhbmRsZSBFT0YgcHJv
cGVybHkuCiAgICAgfQogICAgIEVORF9TVEFURSgpCiAKICAgICBCRUdJTl9TVEFURShDb21tZW50
U3RhdGUpIHsKICAgICAgICAgaWYgKGNjID09ICctJykKICAgICAgICAgICAgIEFEVkFOQ0VfVE8o
Q29tbWVudEVuZERhc2hTdGF0ZSk7Ci0gICAgICAgIGVsc2UgeworICAgICAgICBlbHNlIGlmIChj
YyA9PSBlbmRPZkZpbGUpIHsKKyAgICAgICAgICAgIGVtaXRQYXJzZUVycm9yKCk7CisgICAgICAg
ICAgICBFTUlUX0FORF9SRUNPTlNVTUVfSU4oRGF0YVN0YXRlKTsKKyAgICAgICAgfSBlbHNlIHsK
ICAgICAgICAgICAgIG1fdG9rZW4tPmFwcGVuZFRvQ29tbWVudChjYyk7CiAgICAgICAgICAgICBB
RFZBTkNFX1RPKENvbW1lbnRTdGF0ZSk7CiAgICAgICAgIH0KLSAgICAgICAgLy8gRklYTUU6IEhh
bmRsZSBFT0YgcHJvcGVybHkuCiAgICAgfQogICAgIEVORF9TVEFURSgpCiAKICAgICBCRUdJTl9T
VEFURShDb21tZW50RW5kRGFzaFN0YXRlKSB7CiAgICAgICAgIGlmIChjYyA9PSAnLScpCiAgICAg
ICAgICAgICBBRFZBTkNFX1RPKENvbW1lbnRFbmRTdGF0ZSk7Ci0gICAgICAgIGVsc2UgeworICAg
ICAgICBlbHNlIGlmIChjYyA9PSBlbmRPZkZpbGUpIHsKKyAgICAgICAgICAgIGVtaXRQYXJzZUVy
cm9yKCk7CisgICAgICAgICAgICBFTUlUX0FORF9SRUNPTlNVTUVfSU4oRGF0YVN0YXRlKTsKKyAg
ICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIG1fdG9rZW4tPmFwcGVuZFRvQ29tbWVudCgnLScp
OwogICAgICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9Db21tZW50KGNjKTsKICAgICAgICAgICAg
IEFEVkFOQ0VfVE8oQ29tbWVudFN0YXRlKTsKICAgICAgICAgfQotICAgICAgICAvLyBGSVhNRTog
SGFuZGxlIEVPRiBwcm9wZXJseS4KICAgICB9CiAgICAgRU5EX1NUQVRFKCkKIApAQCAtMTA4Nyw2
ICsxMTY4LDkgQEAgYm9vbCBIVE1MVG9rZW5pemVyOjpuZXh0VG9rZW4oU2VnbWVudGVkU3RyaW5n
JiBzb3VyY2UsIEhUTUxUb2tlbiYgdG9rZW4pCiAgICAgICAgICAgICBtX3Rva2VuLT5hcHBlbmRU
b0NvbW1lbnQoJy0nKTsKICAgICAgICAgICAgIG1fdG9rZW4tPmFwcGVuZFRvQ29tbWVudChjYyk7
CiAgICAgICAgICAgICBBRFZBTkNFX1RPKENvbW1lbnRFbmRTdGF0ZSk7CisgICAgICAgIH0gZWxz
ZSBpZiAoY2MgPT0gZW5kT2ZGaWxlKSB7CisgICAgICAgICAgICBlbWl0UGFyc2VFcnJvcigpOwor
ICAgICAgICAgICAgRU1JVF9BTkRfUkVDT05TVU1FX0lOKERhdGFTdGF0ZSk7CiAgICAgICAgIH0g
ZWxzZSB7CiAgICAgICAgICAgICBlbWl0UGFyc2VFcnJvcigpOwogICAgICAgICAgICAgbV90b2tl
bi0+YXBwZW5kVG9Db21tZW50KCctJyk7CkBAIC0xMDk0LDcgKzExNzgsNiBAQCBib29sIEhUTUxU
b2tlbml6ZXI6Om5leHRUb2tlbihTZWdtZW50ZWRTdHJpbmcmIHNvdXJjZSwgSFRNTFRva2VuJiB0
b2tlbikKICAgICAgICAgICAgIG1fdG9rZW4tPmFwcGVuZFRvQ29tbWVudChjYyk7CiAgICAgICAg
ICAgICBBRFZBTkNFX1RPKENvbW1lbnRTdGF0ZSk7CiAgICAgICAgIH0KLSAgICAgICAgLy8gRklY
TUU6IEhhbmRsZSBFT0YgcHJvcGVybHkuCiAgICAgfQogICAgIEVORF9TVEFURSgpCiAKQEAgLTEx
MDYsMTQgKzExODksMTYgQEAgYm9vbCBIVE1MVG9rZW5pemVyOjpuZXh0VG9rZW4oU2VnbWVudGVk
U3RyaW5nJiBzb3VyY2UsIEhUTUxUb2tlbiYgdG9rZW4pCiAgICAgICAgICAgICBBRFZBTkNFX1RP
KENvbW1lbnRFbmREYXNoU3RhdGUpOwogICAgICAgICB9IGVsc2UgaWYgKGNjID09ICc+JykKICAg
ICAgICAgICAgIEVNSVRfQU5EX1JFU1VNRV9JTihEYXRhU3RhdGUpOwotICAgICAgICBlbHNlIHsK
KyAgICAgICAgZWxzZSBpZiAoY2MgPT0gZW5kT2ZGaWxlKSB7CisgICAgICAgICAgICBlbWl0UGFy
c2VFcnJvcigpOworICAgICAgICAgICAgRU1JVF9BTkRfUkVDT05TVU1FX0lOKERhdGFTdGF0ZSk7
CisgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBtX3Rva2VuLT5hcHBlbmRUb0NvbW1lbnQo
Jy0nKTsKICAgICAgICAgICAgIG1fdG9rZW4tPmFwcGVuZFRvQ29tbWVudCgnLScpOwogICAgICAg
ICAgICAgbV90b2tlbi0+YXBwZW5kVG9Db21tZW50KCchJyk7CiAgICAgICAgICAgICBtX3Rva2Vu
LT5hcHBlbmRUb0NvbW1lbnQoY2MpOwogICAgICAgICAgICAgQURWQU5DRV9UTyhDb21tZW50U3Rh
dGUpOwogICAgICAgICB9Ci0gICAgICAgIC8vIEZJWE1FOiBIYW5kbGUgRU9GIHByb3Blcmx5Lgog
ICAgIH0KICAgICBFTkRfU1RBVEUoKQogCkBAIC0xMTI1LDIyICsxMjEwLDI4IEBAIGJvb2wgSFRN
TFRva2VuaXplcjo6bmV4dFRva2VuKFNlZ21lbnRlZFN0cmluZyYgc291cmNlLCBIVE1MVG9rZW4m
IHRva2VuKQogICAgICAgICAgICAgQURWQU5DRV9UTyhDb21tZW50RW5kRGFzaFN0YXRlKTsKICAg
ICAgICAgZWxzZSBpZiAoY2MgPT0gJz4nKQogICAgICAgICAgICAgRU1JVF9BTkRfUkVTVU1FX0lO
KERhdGFTdGF0ZSk7Ci0gICAgICAgIGVsc2UgeworICAgICAgICBlbHNlIGlmIChjYyA9PSBlbmRP
ZkZpbGUpIHsKKyAgICAgICAgICAgIGVtaXRQYXJzZUVycm9yKCk7CisgICAgICAgICAgICBFTUlU
X0FORF9SRUNPTlNVTUVfSU4oRGF0YVN0YXRlKTsKKyAgICAgICAgfSBlbHNlIHsKICAgICAgICAg
ICAgIG1fdG9rZW4tPmFwcGVuZFRvQ29tbWVudChjYyk7CiAgICAgICAgICAgICBBRFZBTkNFX1RP
KENvbW1lbnRTdGF0ZSk7CiAgICAgICAgIH0KLSAgICAgICAgLy8gRklYTUU6IEhhbmRsZSBFT0Yg
cHJvcGVybHkuCiAgICAgfQogICAgIEVORF9TVEFURSgpCiAKICAgICBCRUdJTl9TVEFURShET0NU
WVBFU3RhdGUpIHsKICAgICAgICAgaWYgKGNjID09ICdceDA5JyB8fCBjYyA9PSAnXHgwQScgfHwg
Y2MgPT0gJ1x4MEMnIHx8IGNjID09ICcgJykKICAgICAgICAgICAgIEFEVkFOQ0VfVE8oQmVmb3Jl
RE9DVFlQRU5hbWVTdGF0ZSk7Ci0gICAgICAgIGVsc2UgeworICAgICAgICBlbHNlIGlmIChjYyA9
PSBlbmRPZkZpbGUpIHsKKyAgICAgICAgICAgIGVtaXRQYXJzZUVycm9yKCk7CisgICAgICAgICAg
ICBtX3Rva2VuLT5iZWdpbkRPQ1RZUEUoKTsKKyAgICAgICAgICAgIG1fdG9rZW4tPnNldEZvcmNl
UXVpcmtzKCk7CisgICAgICAgICAgICBFTUlUX0FORF9SRUNPTlNVTUVfSU4oRGF0YVN0YXRlKTsK
KyAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGVtaXRQYXJzZUVycm9yKCk7CiAgICAgICAg
ICAgICBSRUNPTlNVTUVfSU4oQmVmb3JlRE9DVFlQRU5hbWVTdGF0ZSk7CiAgICAgICAgIH0KLSAg
ICAgICAgLy8gRklYTUU6IEhhbmRsZSBFT0YgcHJvcGVybHkuCiAgICAgfQogICAgIEVORF9TVEFU
RSgpCiAKQEAgLTExNTUsMTEgKzEyNDYsMTUgQEAgYm9vbCBIVE1MVG9rZW5pemVyOjpuZXh0VG9r
ZW4oU2VnbWVudGVkU3RyaW5nJiBzb3VyY2UsIEhUTUxUb2tlbiYgdG9rZW4pCiAgICAgICAgICAg
ICBtX3Rva2VuLT5iZWdpbkRPQ1RZUEUoKTsKICAgICAgICAgICAgIG1fdG9rZW4tPnNldEZvcmNl
UXVpcmtzKCk7CiAgICAgICAgICAgICBFTUlUX0FORF9SRVNVTUVfSU4oRGF0YVN0YXRlKTsKKyAg
ICAgICAgfSBlbHNlIGlmIChjYyA9PSBlbmRPZkZpbGUpIHsKKyAgICAgICAgICAgIGVtaXRQYXJz
ZUVycm9yKCk7CisgICAgICAgICAgICBtX3Rva2VuLT5iZWdpbkRPQ1RZUEUoKTsKKyAgICAgICAg
ICAgIG1fdG9rZW4tPnNldEZvcmNlUXVpcmtzKCk7CisgICAgICAgICAgICBFTUlUX0FORF9SRUNP
TlNVTUVfSU4oRGF0YVN0YXRlKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIG1fdG9r
ZW4tPmJlZ2luRE9DVFlQRShjYyk7CiAgICAgICAgICAgICBBRFZBTkNFX1RPKERPQ1RZUEVOYW1l
U3RhdGUpOwogICAgICAgICB9Ci0gICAgICAgIC8vIEZJWE1FOiBIYW5kbGUgRU9GIHByb3Blcmx5
LgogICAgIH0KICAgICBFTkRfU1RBVEUoKQogCkBAIC0xMTcxLDYgKzEyNjYsMTAgQEAgYm9vbCBI
VE1MVG9rZW5pemVyOjpuZXh0VG9rZW4oU2VnbWVudGVkU3RyaW5nJiBzb3VyY2UsIEhUTUxUb2tl
biYgdG9rZW4pCiAgICAgICAgIGVsc2UgaWYgKGNjID49ICdBJyAmJiBjYyA8PSAnWicpIHsKICAg
ICAgICAgICAgIG1fdG9rZW4tPmFwcGVuZFRvTmFtZSh0b0xvd2VyQ2FzZShjYykpOwogICAgICAg
ICAgICAgQURWQU5DRV9UTyhET0NUWVBFTmFtZVN0YXRlKTsKKyAgICAgICAgfSBlbHNlIGlmIChj
YyA9PSBlbmRPZkZpbGUpIHsKKyAgICAgICAgICAgIGVtaXRQYXJzZUVycm9yKCk7CisgICAgICAg
ICAgICBtX3Rva2VuLT5zZXRGb3JjZVF1aXJrcygpOworICAgICAgICAgICAgRU1JVF9BTkRfUkVD
T05TVU1FX0lOKERhdGFTdGF0ZSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBtX3Rv
a2VuLT5hcHBlbmRUb05hbWUoY2MpOwogICAgICAgICAgICAgQURWQU5DRV9UTyhET0NUWVBFTmFt
ZVN0YXRlKTsKQEAgLTExODQsNyArMTI4MywxMSBAQCBib29sIEhUTUxUb2tlbml6ZXI6Om5leHRU
b2tlbihTZWdtZW50ZWRTdHJpbmcmIHNvdXJjZSwgSFRNTFRva2VuJiB0b2tlbikKICAgICAgICAg
ICAgIEFEVkFOQ0VfVE8oQWZ0ZXJET0NUWVBFTmFtZVN0YXRlKTsKICAgICAgICAgaWYgKGNjID09
ICc+JykKICAgICAgICAgICAgIEVNSVRfQU5EX1JFU1VNRV9JTihEYXRhU3RhdGUpOwotICAgICAg
ICBlbHNlIHsKKyAgICAgICAgZWxzZSBpZiAoY2MgPT0gZW5kT2ZGaWxlKSB7CisgICAgICAgICAg
ICBlbWl0UGFyc2VFcnJvcigpOworICAgICAgICAgICAgbV90b2tlbi0+c2V0Rm9yY2VRdWlya3Mo
KTsKKyAgICAgICAgICAgIEVNSVRfQU5EX1JFQ09OU1VNRV9JTihEYXRhU3RhdGUpOworICAgICAg
ICB9IGVsc2UgewogICAgICAgICAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIHB1Ymxp
Y1N0cmluZywgKCJwdWJsaWMiKSk7CiAgICAgICAgICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0
cmluZywgc3lzdGVtU3RyaW5nLCAoInN5c3RlbSIpKTsKICAgICAgICAgICAgIGlmIChjYyA9PSAn
UCcgfHwgY2MgPT0gJ3AnKSB7CkBAIC0xMjA2LDcgKzEzMDksNiBAQCBib29sIEhUTUxUb2tlbml6
ZXI6Om5leHRUb2tlbihTZWdtZW50ZWRTdHJpbmcmIHNvdXJjZSwgSFRNTFRva2VuJiB0b2tlbikK
ICAgICAgICAgICAgIG1fdG9rZW4tPnNldEZvcmNlUXVpcmtzKCk7CiAgICAgICAgICAgICBBRFZB
TkNFX1RPKEJvZ3VzRE9DVFlQRVN0YXRlKTsKICAgICAgICAgfQotICAgICAgICAvLyBGSVhNRTog
SGFuZGxlIEVPRiBwcm9wZXJseS4KICAgICB9CiAgICAgRU5EX1NUQVRFKCkKIApAQCAtMTIyNSwx
MiArMTMyNywxNSBAQCBib29sIEhUTUxUb2tlbml6ZXI6Om5leHRUb2tlbihTZWdtZW50ZWRTdHJp
bmcmIHNvdXJjZSwgSFRNTFRva2VuJiB0b2tlbikKICAgICAgICAgICAgIGVtaXRQYXJzZUVycm9y
KCk7CiAgICAgICAgICAgICBtX3Rva2VuLT5zZXRGb3JjZVF1aXJrcygpOwogICAgICAgICAgICAg
RU1JVF9BTkRfUkVTVU1FX0lOKERhdGFTdGF0ZSk7CisgICAgICAgIH0gZWxzZSBpZiAoY2MgPT0g
ZW5kT2ZGaWxlKSB7CisgICAgICAgICAgICBlbWl0UGFyc2VFcnJvcigpOworICAgICAgICAgICAg
bV90b2tlbi0+c2V0Rm9yY2VRdWlya3MoKTsKKyAgICAgICAgICAgIEVNSVRfQU5EX1JFQ09OU1VN
RV9JTihEYXRhU3RhdGUpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgZW1pdFBhcnNl
RXJyb3IoKTsKICAgICAgICAgICAgIG1fdG9rZW4tPnNldEZvcmNlUXVpcmtzKCk7CiAgICAgICAg
ICAgICBBRFZBTkNFX1RPKEJvZ3VzRE9DVFlQRVN0YXRlKTsKICAgICAgICAgfQotICAgICAgICAv
LyBGSVhNRTogSGFuZGxlIEVPRiBwcm9wZXJseS4KICAgICB9CiAgICAgRU5EX1NUQVRFKCkKIApA
QCAtMTI0NywxMiArMTM1MiwxNSBAQCBib29sIEhUTUxUb2tlbml6ZXI6Om5leHRUb2tlbihTZWdt
ZW50ZWRTdHJpbmcmIHNvdXJjZSwgSFRNTFRva2VuJiB0b2tlbikKICAgICAgICAgICAgIGVtaXRQ
YXJzZUVycm9yKCk7CiAgICAgICAgICAgICBtX3Rva2VuLT5zZXRGb3JjZVF1aXJrcygpOwogICAg
ICAgICAgICAgRU1JVF9BTkRfUkVTVU1FX0lOKERhdGFTdGF0ZSk7CisgICAgICAgIH0gZWxzZSBp
ZiAoY2MgPT0gZW5kT2ZGaWxlKSB7CisgICAgICAgICAgICBlbWl0UGFyc2VFcnJvcigpOworICAg
ICAgICAgICAgbV90b2tlbi0+c2V0Rm9yY2VRdWlya3MoKTsKKyAgICAgICAgICAgIEVNSVRfQU5E
X1JFQ09OU1VNRV9JTihEYXRhU3RhdGUpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAg
ZW1pdFBhcnNlRXJyb3IoKTsKICAgICAgICAgICAgIG1fdG9rZW4tPnNldEZvcmNlUXVpcmtzKCk7
CiAgICAgICAgICAgICBBRFZBTkNFX1RPKEJvZ3VzRE9DVFlQRVN0YXRlKTsKICAgICAgICAgfQot
ICAgICAgICAvLyBGSVhNRTogSGFuZGxlIEVPRiBwcm9wZXJseS4KICAgICB9CiAgICAgRU5EX1NU
QVRFKCkKIApAQCAtMTI2MywxMSArMTM3MSwxNCBAQCBib29sIEhUTUxUb2tlbml6ZXI6Om5leHRU
b2tlbihTZWdtZW50ZWRTdHJpbmcmIHNvdXJjZSwgSFRNTFRva2VuJiB0b2tlbikKICAgICAgICAg
ICAgIGVtaXRQYXJzZUVycm9yKCk7CiAgICAgICAgICAgICBtX3Rva2VuLT5zZXRGb3JjZVF1aXJr
cygpOwogICAgICAgICAgICAgRU1JVF9BTkRfUkVTVU1FX0lOKERhdGFTdGF0ZSk7CisgICAgICAg
IH0gZWxzZSBpZiAoY2MgPT0gZW5kT2ZGaWxlKSB7CisgICAgICAgICAgICBlbWl0UGFyc2VFcnJv
cigpOworICAgICAgICAgICAgbV90b2tlbi0+c2V0Rm9yY2VRdWlya3MoKTsKKyAgICAgICAgICAg
IEVNSVRfQU5EX1JFQ09OU1VNRV9JTihEYXRhU3RhdGUpOwogICAgICAgICB9IGVsc2UgewogICAg
ICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9QdWJsaWNJZGVudGlmaWVyKGNjKTsKICAgICAgICAg
ICAgIEFEVkFOQ0VfVE8oRE9DVFlQRVB1YmxpY0lkZW50aWZpZXJEb3VibGVRdW90ZWRTdGF0ZSk7
CiAgICAgICAgIH0KLSAgICAgICAgLy8gRklYTUU6IEhhbmRsZSBFT0YgcHJvcGVybHkuCiAgICAg
fQogICAgIEVORF9TVEFURSgpCiAKQEAgLTEyNzgsMTEgKzEzODksMTQgQEAgYm9vbCBIVE1MVG9r
ZW5pemVyOjpuZXh0VG9rZW4oU2VnbWVudGVkU3RyaW5nJiBzb3VyY2UsIEhUTUxUb2tlbiYgdG9r
ZW4pCiAgICAgICAgICAgICBlbWl0UGFyc2VFcnJvcigpOwogICAgICAgICAgICAgbV90b2tlbi0+
c2V0Rm9yY2VRdWlya3MoKTsKICAgICAgICAgICAgIEVNSVRfQU5EX1JFU1VNRV9JTihEYXRhU3Rh
dGUpOworICAgICAgICB9IGVsc2UgaWYgKGNjID09IGVuZE9mRmlsZSkgeworICAgICAgICAgICAg
ZW1pdFBhcnNlRXJyb3IoKTsKKyAgICAgICAgICAgIG1fdG9rZW4tPnNldEZvcmNlUXVpcmtzKCk7
CisgICAgICAgICAgICBFTUlUX0FORF9SRUNPTlNVTUVfSU4oRGF0YVN0YXRlKTsKICAgICAgICAg
fSBlbHNlIHsKICAgICAgICAgICAgIG1fdG9rZW4tPmFwcGVuZFRvUHVibGljSWRlbnRpZmllcihj
Yyk7CiAgICAgICAgICAgICBBRFZBTkNFX1RPKERPQ1RZUEVQdWJsaWNJZGVudGlmaWVyU2luZ2xl
UXVvdGVkU3RhdGUpOwogICAgICAgICB9Ci0gICAgICAgIC8vIEZJWE1FOiBIYW5kbGUgRU9GIHBy
b3Blcmx5LgogICAgIH0KICAgICBFTkRfU1RBVEUoKQogCkBAIC0xMjk5LDEyICsxNDEzLDE1IEBA
IGJvb2wgSFRNTFRva2VuaXplcjo6bmV4dFRva2VuKFNlZ21lbnRlZFN0cmluZyYgc291cmNlLCBI
VE1MVG9rZW4mIHRva2VuKQogICAgICAgICAgICAgZW1pdFBhcnNlRXJyb3IoKTsKICAgICAgICAg
ICAgIG1fdG9rZW4tPnNldFN5c3RlbUlkZW50aWZpZXJUb0VtcHR5U3RyaW5nKCk7CiAgICAgICAg
ICAgICBBRFZBTkNFX1RPKERPQ1RZUEVTeXN0ZW1JZGVudGlmaWVyU2luZ2xlUXVvdGVkU3RhdGUp
OworICAgICAgICB9IGVsc2UgaWYgKGNjID09IGVuZE9mRmlsZSkgeworICAgICAgICAgICAgZW1p
dFBhcnNlRXJyb3IoKTsKKyAgICAgICAgICAgIG1fdG9rZW4tPnNldEZvcmNlUXVpcmtzKCk7Cisg
ICAgICAgICAgICBFTUlUX0FORF9SRUNPTlNVTUVfSU4oRGF0YVN0YXRlKTsKICAgICAgICAgfSBl
bHNlIHsKICAgICAgICAgICAgIGVtaXRQYXJzZUVycm9yKCk7CiAgICAgICAgICAgICBtX3Rva2Vu
LT5zZXRGb3JjZVF1aXJrcygpOwogICAgICAgICAgICAgQURWQU5DRV9UTyhCb2d1c0RPQ1RZUEVT
dGF0ZSk7CiAgICAgICAgIH0KLSAgICAgICAgLy8gRklYTUU6IEhhbmRsZSBFT0YgcHJvcGVybHku
CiAgICAgfQogICAgIEVORF9TVEFURSgpCiAKQEAgLTEzMTksMTIgKzE0MzYsMTUgQEAgYm9vbCBI
VE1MVG9rZW5pemVyOjpuZXh0VG9rZW4oU2VnbWVudGVkU3RyaW5nJiBzb3VyY2UsIEhUTUxUb2tl
biYgdG9rZW4pCiAgICAgICAgIH0gZWxzZSBpZiAoY2MgPT0gJ1wnJykgewogICAgICAgICAgICAg
bV90b2tlbi0+c2V0U3lzdGVtSWRlbnRpZmllclRvRW1wdHlTdHJpbmcoKTsKICAgICAgICAgICAg
IEFEVkFOQ0VfVE8oRE9DVFlQRVN5c3RlbUlkZW50aWZpZXJTaW5nbGVRdW90ZWRTdGF0ZSk7Cisg
ICAgICAgIH0gZWxzZSBpZiAoY2MgPT0gZW5kT2ZGaWxlKSB7CisgICAgICAgICAgICBlbWl0UGFy
c2VFcnJvcigpOworICAgICAgICAgICAgbV90b2tlbi0+c2V0Rm9yY2VRdWlya3MoKTsKKyAgICAg
ICAgICAgIEVNSVRfQU5EX1JFQ09OU1VNRV9JTihEYXRhU3RhdGUpOwogICAgICAgICB9IGVsc2Ug
ewogICAgICAgICAgICAgZW1pdFBhcnNlRXJyb3IoKTsKICAgICAgICAgICAgIG1fdG9rZW4tPnNl
dEZvcmNlUXVpcmtzKCk7CiAgICAgICAgICAgICBBRFZBTkNFX1RPKEJvZ3VzRE9DVFlQRVN0YXRl
KTsKICAgICAgICAgfQotICAgICAgICAvLyBGSVhNRTogSGFuZGxlIEVPRiBwcm9wZXJseS4KICAg
ICB9CiAgICAgRU5EX1NUQVRFKCkKIApAQCAtMTM0MywxMiArMTQ2MywxNSBAQCBib29sIEhUTUxU
b2tlbml6ZXI6Om5leHRUb2tlbihTZWdtZW50ZWRTdHJpbmcmIHNvdXJjZSwgSFRNTFRva2VuJiB0
b2tlbikKICAgICAgICAgICAgIGVtaXRQYXJzZUVycm9yKCk7CiAgICAgICAgICAgICBtX3Rva2Vu
LT5zZXRGb3JjZVF1aXJrcygpOwogICAgICAgICAgICAgRU1JVF9BTkRfUkVTVU1FX0lOKERhdGFT
dGF0ZSk7CisgICAgICAgIH0gZWxzZSBpZiAoY2MgPT0gZW5kT2ZGaWxlKSB7CisgICAgICAgICAg
ICBlbWl0UGFyc2VFcnJvcigpOworICAgICAgICAgICAgbV90b2tlbi0+c2V0Rm9yY2VRdWlya3Mo
KTsKKyAgICAgICAgICAgIEVNSVRfQU5EX1JFQ09OU1VNRV9JTihEYXRhU3RhdGUpOwogICAgICAg
ICB9IGVsc2UgewogICAgICAgICAgICAgZW1pdFBhcnNlRXJyb3IoKTsKICAgICAgICAgICAgIG1f
dG9rZW4tPnNldEZvcmNlUXVpcmtzKCk7CiAgICAgICAgICAgICBBRFZBTkNFX1RPKEJvZ3VzRE9D
VFlQRVN0YXRlKTsKICAgICAgICAgfQotICAgICAgICAvLyBGSVhNRTogSGFuZGxlIEVPRiBwcm9w
ZXJseS4KICAgICB9CiAgICAgRU5EX1NUQVRFKCkKIApAQCAtMTM2NSwxMiArMTQ4OCwxNSBAQCBi
b29sIEhUTUxUb2tlbml6ZXI6Om5leHRUb2tlbihTZWdtZW50ZWRTdHJpbmcmIHNvdXJjZSwgSFRN
TFRva2VuJiB0b2tlbikKICAgICAgICAgICAgIGVtaXRQYXJzZUVycm9yKCk7CiAgICAgICAgICAg
ICBtX3Rva2VuLT5zZXRGb3JjZVF1aXJrcygpOwogICAgICAgICAgICAgRU1JVF9BTkRfUkVTVU1F
X0lOKERhdGFTdGF0ZSk7CisgICAgICAgIH0gZWxzZSBpZiAoY2MgPT0gZW5kT2ZGaWxlKSB7Cisg
ICAgICAgICAgICBlbWl0UGFyc2VFcnJvcigpOworICAgICAgICAgICAgbV90b2tlbi0+c2V0Rm9y
Y2VRdWlya3MoKTsKKyAgICAgICAgICAgIEVNSVRfQU5EX1JFQ09OU1VNRV9JTihEYXRhU3RhdGUp
OwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgZW1pdFBhcnNlRXJyb3IoKTsKICAgICAg
ICAgICAgIG1fdG9rZW4tPnNldEZvcmNlUXVpcmtzKCk7CiAgICAgICAgICAgICBBRFZBTkNFX1RP
KEJvZ3VzRE9DVFlQRVN0YXRlKTsKICAgICAgICAgfQotICAgICAgICAvLyBGSVhNRTogSGFuZGxl
IEVPRiBwcm9wZXJseS4KICAgICB9CiAgICAgRU5EX1NUQVRFKCkKIApAQCAtMTM4MSwxMSArMTUw
NywxNCBAQCBib29sIEhUTUxUb2tlbml6ZXI6Om5leHRUb2tlbihTZWdtZW50ZWRTdHJpbmcmIHNv
dXJjZSwgSFRNTFRva2VuJiB0b2tlbikKICAgICAgICAgICAgIGVtaXRQYXJzZUVycm9yKCk7CiAg
ICAgICAgICAgICBtX3Rva2VuLT5zZXRGb3JjZVF1aXJrcygpOwogICAgICAgICAgICAgRU1JVF9B
TkRfUkVTVU1FX0lOKERhdGFTdGF0ZSk7CisgICAgICAgIH0gZWxzZSBpZiAoY2MgPT0gZW5kT2ZG
aWxlKSB7CisgICAgICAgICAgICBlbWl0UGFyc2VFcnJvcigpOworICAgICAgICAgICAgbV90b2tl
bi0+c2V0Rm9yY2VRdWlya3MoKTsKKyAgICAgICAgICAgIEVNSVRfQU5EX1JFQ09OU1VNRV9JTihE
YXRhU3RhdGUpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgbV90b2tlbi0+YXBwZW5k
VG9TeXN0ZW1JZGVudGlmaWVyKGNjKTsKICAgICAgICAgICAgIEFEVkFOQ0VfVE8oRE9DVFlQRVN5
c3RlbUlkZW50aWZpZXJEb3VibGVRdW90ZWRTdGF0ZSk7CiAgICAgICAgIH0KLSAgICAgICAgLy8g
RklYTUU6IEhhbmRsZSBFT0YgcHJvcGVybHkuCiAgICAgfQogICAgIEVORF9TVEFURSgpCiAKQEAg
LTEzOTYsMTEgKzE1MjUsMTQgQEAgYm9vbCBIVE1MVG9rZW5pemVyOjpuZXh0VG9rZW4oU2VnbWVu
dGVkU3RyaW5nJiBzb3VyY2UsIEhUTUxUb2tlbiYgdG9rZW4pCiAgICAgICAgICAgICBlbWl0UGFy
c2VFcnJvcigpOwogICAgICAgICAgICAgbV90b2tlbi0+c2V0Rm9yY2VRdWlya3MoKTsKICAgICAg
ICAgICAgIEVNSVRfQU5EX1JFU1VNRV9JTihEYXRhU3RhdGUpOworICAgICAgICB9IGVsc2UgaWYg
KGNjID09IGVuZE9mRmlsZSkgeworICAgICAgICAgICAgZW1pdFBhcnNlRXJyb3IoKTsKKyAgICAg
ICAgICAgIG1fdG9rZW4tPnNldEZvcmNlUXVpcmtzKCk7CisgICAgICAgICAgICBFTUlUX0FORF9S
RUNPTlNVTUVfSU4oRGF0YVN0YXRlKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIG1f
dG9rZW4tPmFwcGVuZFRvU3lzdGVtSWRlbnRpZmllcihjYyk7CiAgICAgICAgICAgICBBRFZBTkNF
X1RPKERPQ1RZUEVTeXN0ZW1JZGVudGlmaWVyU2luZ2xlUXVvdGVkU3RhdGUpOwogICAgICAgICB9
Ci0gICAgICAgIC8vIEZJWE1FOiBIYW5kbGUgRU9GIHByb3Blcmx5LgogICAgIH0KICAgICBFTkRf
U1RBVEUoKQogCkBAIC0xNDA5LDI1ICsxNTQxLDMwIEBAIGJvb2wgSFRNTFRva2VuaXplcjo6bmV4
dFRva2VuKFNlZ21lbnRlZFN0cmluZyYgc291cmNlLCBIVE1MVG9rZW4mIHRva2VuKQogICAgICAg
ICAgICAgQURWQU5DRV9UTyhBZnRlckRPQ1RZUEVTeXN0ZW1JZGVudGlmaWVyU3RhdGUpOwogICAg
ICAgICBlbHNlIGlmIChjYyA9PSAnPicpCiAgICAgICAgICAgICBFTUlUX0FORF9SRVNVTUVfSU4o
RGF0YVN0YXRlKTsKLSAgICAgICAgZWxzZSB7CisgICAgICAgIGVsc2UgaWYgKGNjID09IGVuZE9m
RmlsZSkgeworICAgICAgICAgICAgZW1pdFBhcnNlRXJyb3IoKTsKKyAgICAgICAgICAgIG1fdG9r
ZW4tPnNldEZvcmNlUXVpcmtzKCk7CisgICAgICAgICAgICBFTUlUX0FORF9SRUNPTlNVTUVfSU4o
RGF0YVN0YXRlKTsKKyAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGVtaXRQYXJzZUVycm9y
KCk7CiAgICAgICAgICAgICBBRFZBTkNFX1RPKEJvZ3VzRE9DVFlQRVN0YXRlKTsKICAgICAgICAg
fQotICAgICAgICAvLyBGSVhNRTogSGFuZGxlIEVPRiBwcm9wZXJseS4KICAgICB9CiAgICAgRU5E
X1NUQVRFKCkKIAogICAgIEJFR0lOX1NUQVRFKEJvZ3VzRE9DVFlQRVN0YXRlKSB7CiAgICAgICAg
IGlmIChjYyA9PSAnPicpCiAgICAgICAgICAgICBFTUlUX0FORF9SRVNVTUVfSU4oRGF0YVN0YXRl
KTsKKyAgICAgICAgZWxzZSBpZiAoY2MgPT0gZW5kT2ZGaWxlKQorICAgICAgICAgICAgRU1JVF9B
TkRfUkVDT05TVU1FX0lOKERhdGFTdGF0ZSk7CiAgICAgICAgIEFEVkFOQ0VfVE8oQm9ndXNET0NU
WVBFU3RhdGUpOwotICAgICAgICAvLyBGSVhNRTogSGFuZGxlIEVPRiBwcm9wZXJseS4KICAgICB9
CiAgICAgRU5EX1NUQVRFKCkKIAogICAgIEJFR0lOX1NUQVRFKENEQVRBU2VjdGlvblN0YXRlKSB7
CiAgICAgICAgIG5vdEltcGxlbWVudGVkKCk7CiAgICAgICAgIEFEVkFOQ0VfVE8oQ0RBVEFTZWN0
aW9uU3RhdGUpOworICAgICAgICAvLyBGSVhNRTogSGFuZGxlIEVPRiBwcm9wZXJseS4KICAgICB9
CiAgICAgRU5EX1NUQVRFKCkKIApAQCAtMTQ4NCw2ICsxNjIxLDExIEBAIGlubGluZSB2b2lkIEhU
TUxUb2tlbml6ZXI6OmVtaXRDdXJyZW50VG9rZW4oKQogICAgICAgICBtX2FwcHJvcHJpYXRlRW5k
VGFnTmFtZSA9IG1fdG9rZW4tPm5hbWUoKTsKIH0KIAoraW5saW5lIHZvaWQgSFRNTFRva2VuaXpl
cjo6ZW1pdEVuZE9mRmlsZSgpCit7CisgICAgbV90b2tlbi0+bWFrZUVuZE9mRmlsZSgpOworfQor
CiBpbmxpbmUgYm9vbCBIVE1MVG9rZW5pemVyOjpzaG91bGRFbWl0QnVmZmVyZWRDaGFyYWN0ZXJU
b2tlbihjb25zdCBTZWdtZW50ZWRTdHJpbmcmIHNvdXJjZSkKIHsKICAgICByZXR1cm4gc291cmNl
LmlzQ2xvc2VkKCkgJiYgbV90b2tlbi0+dHlwZSgpID09IEhUTUxUb2tlbjo6Q2hhcmFjdGVyOwpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxUb2tlbml6ZXIuaCBiL1dlYkNvcmUvaHRtbC9I
VE1MVG9rZW5pemVyLmgKaW5kZXggYzJlNTJhYjIwNmU1ZjBiODQ1OWRhZjIwZjRlNjczODMzNzQ3
ZTRkOS4uMDA1MDg3MzkyNTQ1NWM3NWEyOGI0MmM3NmY0ZDllYWFhZTZmNDc5YSAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9odG1sL0hUTUxUb2tlbml6ZXIuaAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTFRv
a2VuaXplci5oCkBAIC0xNjQsNyArMTY0LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAv
LyBhIG51bWJlciBvZiBzcGVjaWZpYyBjaGFyYWN0ZXIgdmFsdWVzIGFyZSBwYXJzZSBlcnJvcnMg
YW5kIHNob3VsZCBiZSByZXBsYWNlZAogICAgICAgICAgICAgICAgIC8vIGJ5IHRoZSByZXBsYWNl
bWVudCBjaGFyYWN0ZXIuIFdlIHN1c3BlY3QgdGhpcyBpcyBhIHByb2JsZW0gd2l0aCB0aGUgc3Bl
YyBhcyBkb2luZwogICAgICAgICAgICAgICAgIC8vIHRoYXQgZmlsdGVyaW5nIGJyZWFrcyBzdXJy
b2dhdGUgcGFpciBoYW5kbGluZyBhbmQgY2F1c2VzIHVzIG5vdCB0byBtYXRjaCBNaW5lZmllbGQu
Ci0gICAgICAgICAgICAgICAgaWYgKG1fbmV4dElucHV0Q2hhcmFjdGVyID09ICdcMCcpCisgICAg
ICAgICAgICAgICAgaWYgKG1fbmV4dElucHV0Q2hhcmFjdGVyID09ICdcMCcgJiYgKCFzb3VyY2Uu
aXNDbG9zZWQoKSB8fCAhc291cmNlLmxlbmd0aCgpID4gMSkpCiAgICAgICAgICAgICAgICAgICAg
IG1fbmV4dElucHV0Q2hhcmFjdGVyID0gMHhGRkZEOwogICAgICAgICAgICAgfQogICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CkBAIC0xODksNiArMTg5LDcgQEAgcHJpdmF0ZToKICAgICBpbmxpbmUg
dm9pZCBlbWl0UGFyc2VFcnJvcigpOwogICAgIGlubGluZSB2b2lkIGVtaXRDdXJyZW50VG9rZW4o
KTsKICAgICBpbmxpbmUgdm9pZCBlbWl0Q29kZVBvaW50KHVuc2lnbmVkKTsKKyAgICBpbmxpbmUg
dm9pZCBlbWl0RW5kT2ZGaWxlKCk7CiAKICAgICBpbmxpbmUgYm9vbCBwcm9jZXNzRW50aXR5KFNl
Z21lbnRlZFN0cmluZyYgc291cmNlKTsKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxU
cmVlQnVpbGRlci5jcHAgYi9XZWJDb3JlL2h0bWwvSFRNTFRyZWVCdWlsZGVyLmNwcAppbmRleCBj
YjJkMTBjZmJiZTA2YzkxYmFlZjg2ZDRjMDhjMmMyZDAwZjE1NzBmLi43ZWIxMDZhZDhkNjY2MDI2
ZDJhNDVmNGY4ODk1MDY3ZDU0YjUzMzE0IDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTFRy
ZWVCdWlsZGVyLmNwcAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTFRyZWVCdWlsZGVyLmNwcApAQCAt
MTk1LDYgKzE5NSw5IEBAIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpwYXNzVG9rZW5Ub0xlZ2FjeVBh
cnNlcihIVE1MVG9rZW4mIHRva2VuKQogICAgICAgICByZXR1cm47CiAgICAgfQogCisgICAgaWYg
KHRva2VuLnR5cGUoKSA9PSBIVE1MVG9rZW46OkVuZE9mRmlsZSkKKyAgICAgICAgcmV0dXJuOwor
CiAgICAgLy8gRm9yIG5vdywgd2UgdHJhbnNsYXRlIGludG8gYW4gb2xkLXN0eWxlIHRva2VuIGZv
ciB0ZXN0aW5nLgogICAgIFRva2VuIG9sZFN0eWxlVG9rZW47CiAgICAgQXRvbWljSFRNTFRva2Vu
IGF0b21pY1Rva2VuKHRva2VuKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>60093</attachid>
            <date>2010-06-30 00:36:26 -0700</date>
            <delta_ts>2010-06-30 00:58:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-41344-20100630003624.patch</filename>
            <type>text/plain</type>
            <size>36068</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAzMGJmNzNhMGQzNDI5MTY4NjllZGYyNzM3YTMwZjEzZTEzNmRlNGE2Li4xYzUyMDIx
YTQ0YTg5Y2E0NzE1NWRlN2JkN2RjMjZjNWQ1YzkyZjIxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAK
KzIwMTAtMDYtMjkgIEVyaWMgU2VpZGVsICA8ZXJpY0B3ZWJraXQub3JnPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEhUTUxUb2tlbml6ZXIgbmVlZHMg
RW5kT2ZGaWxlIHN1cHBvcnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTQxMzQ0CisKKyAgICAgICAgV2Ugbm93IHBhc3MgYW4gYWRkaXRpb25hbCA2MCBz
dWJ0ZXN0cyBmb3IgdGhlCisgICAgICAgIGh0bWw1bGliIHRlc3Qgc3VpdGUuICBCb28teWEuCisK
KyAgICAgICAgKiBodG1sNWxpYi9ydW5uZXItZXhwZWN0ZWQudHh0OgorCiAyMDEwLTA2LTI4ICBF
cmljIFNlaWRlbCAgPGVyaWNAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0bWw1bGliL3J1bm5lci1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odG1sNWxpYi9ydW5uZXItZXhwZWN0ZWQudHh0CmluZGV4
IGU1NmE1Njk5ZWQ3OTQxYjRkOTVkNTJlZjNhN2EzMDEzYzY0OTllMDAuLmQ4OTMwYjc4MGI1ZGM4
MTg1MDI0Y2U5MzRkYjNjZGIxNGQyNzAyMzkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0bWw1
bGliL3J1bm5lci1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaHRtbDVsaWIvcnVubmVy
LWV4cGVjdGVkLnR4dApAQCAtOSw4ICs5LDYgQEAgcmVzb3VyY2VzL3Rlc3RzMS5kYXQ6CiAzMgog
MzMKIDM0Ci0zNQotMzcKIDQxCiA1MAogNTEKQEAgLTQxLDI1ICszOSwxNCBAQCByZXNvdXJjZXMv
dGVzdHMyLmRhdDoKIDcKIDgKIDkKLTEwCiAxMQotMTcKLTE4Ci0xOQotMjAKLTIxCi0yMgotMjkK
IDMyCi0zMwogMzYKLTQwCiA0MgogNDQKIDQ1CiA1MwogNTQKLTU3CiAKIHJlc291cmNlcy90ZXN0
czMuZGF0OgogMTYKQEAgLTgzLDcgKzcwLDYgQEAgcmVzb3VyY2VzL3Rlc3RzNS5kYXQ6CiAKIHJl
c291cmNlcy90ZXN0czYuZGF0OgogMQotNgogOAogOQogMTAKQEAgLTIxMCw1OCArMTk2LDEyIEBA
IHJlc291cmNlcy90ZXN0czE1LmRhdDoKIDEzCiAKIHJlc291cmNlcy90ZXN0czE2LmRhdDoKLTMK
LTQKLTUKLTYKLTcKLTgKLTkKLTEwCi0xMgotMTMKLTE0Ci0xNQotMTYKLTE3Ci0yNQotMjcKLTI4
Ci00MgotNDQKLTQ1Ci01NgotNTcKLTU4CiA4NAogODUKIDg2CiA4NwogODgKIDk0Ci05NwotOTgK
LTk5Ci0xMDAKLTEwMQotMTAyCi0xMDMKLTEwNAotMTA2Ci0xMDcKLTEwOAotMTA5Ci0xMTAKLTEx
MQotMTE5Ci0xMjEKLTEyMgotMTM2Ci0xMzgKLTEzOQotMTQ4Ci0xNDkKLTE1MAogMTc2CiAxNzcK
IDE3OApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwpp
bmRleCBiNDYxZDZiOWQ0NGZjNDcyZWQyMjY1NTZjMTIyYmZhZDQzYmY3MDhmLi4yZWJiZmEzNmMz
ODUxMGQ5YWFiMDk4NWI4ZDVjN2FhMGY0ZjMwODliIDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5n
ZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDEwLTA2LTI5
ICBFcmljIFNlaWRlbCAgPGVyaWNAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBIVE1MVG9rZW5pemVyIG5lZWRzIEVuZE9mRmlsZSBz
dXBwb3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00
MTM0NAorCisgICAgICAgIFdlJ3JlIHVzaW5nIFwwIGFzIHRoZSBFbmRPZkZpbGUgbWFya2VyIGFz
IEhUTUw1IHJlcGxhY2VzCisgICAgICAgIGFsbCBvdGhlciBcMCB3aXRoIFwweEZGRkQuICBBZGRl
ZCBzb21lIHNwZWNpYWwgY2FzZSBsb2dpYworICAgICAgICB0byBJbnB1dFN0cmVhbVByZXByb2Nl
c3Nvcjo6cGVlayBub3QgdG8gcmVwbGFjZSBcMCB3aGVuCisgICAgICAgIGl0cyBiZWluZyB1c2Vk
IGF0IHRoZSBlbmQgb2YgYSBzdHJlYW0uCisKKyAgICAgICAgVGhpcyBmaXhlZCA2MCBzdWJ0ZXN0
cyBpbiBodG1sNWxpYi9ydW5uZXIuaHRtbC4KKworICAgICAgICBUaGVyZSBhcmUgc3RpbGwgYXQg
bGVhc3QgdHdvIHN0YXRlcyAoQm9ndXNDb21tZW50U3RhdGUgYW5kCisgICAgICAgIENEQVRBU2Vj
dGlvblN0YXRlKSB3aGljaCBkbyBub3QgaGF2ZSBwcm9wZXIgRU9GIHN1cHBvcnQuCisKKyAgICAg
ICAgKiBodG1sL0hUTUxEb2N1bWVudFBhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
RG9jdW1lbnRQYXJzZXI6OmZpbmlzaCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRG9jdW1lbnRQ
YXJzZXI6OmZpbmlzaFdhc0NhbGxlZCk6CisgICAgICAgICogaHRtbC9IVE1MSW5wdXRTdHJlYW0u
aDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dFN0cmVhbTo6bWFya0VuZE9mRmlsZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MSW5wdXRTdHJlYW06OmhhdmVTZWVuRW5kT2ZGaWxlKToKKyAg
ICAgICAgKiBodG1sL0hUTUxUb2tlbi5oOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRva2VuOjpt
YWtlRW5kT2ZGaWxlKToKKyAgICAgICAgKiBodG1sL0hUTUxUb2tlbml6ZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTFRva2VuaXplcjo6bmV4dFRva2VuKToKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxUb2tlbml6ZXI6OmVtaXRFbmRPZkZpbGUpOgorICAgICAgICAqIGh0bWwvSFRNTFRva2Vu
aXplci5oOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRva2VuaXplcjo6SW5wdXRTdHJlYW1QcmVw
cm9jZXNzb3I6OnBlZWspOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRva2VuaXplcjo6SW5wdXRT
dHJlYW1QcmVwcm9jZXNzb3I6OnNob3VsZFRyZWF0TnVsbEFzRW5kT2ZGaWxlTWFya2VyKToKKyAg
ICAgICAgKiBodG1sL0hUTUxUcmVlQnVpbGRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
VHJlZUJ1aWxkZXI6OnBhc3NUb2tlblRvTGVnYWN5UGFyc2VyKToKKwogMjAxMC0wNi0yOCAgRXJp
YyBTZWlkZWwgIDxlcmljQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTERvY3VtZW50UGFyc2VyLmNw
cCBiL1dlYkNvcmUvaHRtbC9IVE1MRG9jdW1lbnRQYXJzZXIuY3BwCmluZGV4IDU4MWU3OGVjYTA1
NDc3ZDlmNGFiNzNiZWViZWQyZmNlMmQ4ZjdmYWEuLmYzNjc5MTViMTc4ZWNhYjBiYzY2MjkzY2E3
NzUyNTcyYTQyZTFjODQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MRG9jdW1lbnRQYXJz
ZXIuY3BwCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MRG9jdW1lbnRQYXJzZXIuY3BwCkBAIC0yODks
MTUgKzI4OSwxNSBAQCB2b2lkIEhUTUxEb2N1bWVudFBhcnNlcjo6ZW5kSWZEZWxheWVkKCkKIAog
dm9pZCBIVE1MRG9jdW1lbnRQYXJzZXI6OmZpbmlzaCgpCiB7Ci0gICAgLy8gV2UncmUgbm90IGdv
aW5nIHRvIGdldCBhbnkgbW9yZSBkYXRhIG9mZiB0aGUgbmV0d29yaywgc28gd2UgY2xvc2UgdGhl
Ci0gICAgLy8gaW5wdXQgc3RyZWFtIHRvIGluZGljYXRlIEVPRi4KLSAgICBtX2lucHV0LmNsb3Nl
KCk7CisgICAgLy8gV2UncmUgbm90IGdvaW5nIHRvIGdldCBhbnkgbW9yZSBkYXRhIG9mZiB0aGUg
bmV0d29yaywgc28gd2UgdGVsbCB0aGUKKyAgICAvLyBpbnB1dCBzdHJlYW0gd2UndmUgcmVhY2hl
ZCB0aGUgZW5kIG9mIGZpbGUuCisgICAgbV9pbnB1dC5tYXJrRW5kT2ZGaWxlKCk7CiAgICAgYXR0
ZW1wdFRvRW5kKCk7CiB9CiAKIGJvb2wgSFRNTERvY3VtZW50UGFyc2VyOjpmaW5pc2hXYXNDYWxs
ZWQoKQogewotICAgIHJldHVybiBtX2lucHV0LmlzQ2xvc2VkKCk7CisgICAgcmV0dXJuIG1faW5w
dXQuaGF2ZVNlZW5FbmRPZkZpbGUoKTsKIH0KIAogLy8gVGhpcyBmdW5jdGlvbiBpcyB2aXJ0dWFs
IGFuZCBqdXN0IGZvciB0aGUgRG9jdW1lbnRQYXJzZXIgaW50ZXJmYWNlLgpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9odG1sL0hUTUxJbnB1dFN0cmVhbS5oIGIvV2ViQ29yZS9odG1sL0hUTUxJbnB1dFN0
cmVhbS5oCmluZGV4IDk2MjAzODg0MjA2YTNlNzFiNjI2ZGIxNmE3NzJiN2RiYTZjZWMwYjAuLmQ3
YzFjOWNiN2E1ZjcyNzg0NzBhZjM4NmI2ZWVkMGJlODMxYzhhMWEgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvaHRtbC9IVE1MSW5wdXRTdHJlYW0uaAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTElucHV0U3Ry
ZWFtLmgKQEAgLTY0LDggKzY0LDE5IEBAIHB1YmxpYzoKICAgICAgICAgbV9maXJzdC5hcHBlbmQo
c3RyaW5nKTsKICAgICB9CiAKLSAgICB2b2lkIGNsb3NlKCkgeyBtX2xhc3QtPmNsb3NlKCk7IH0K
LSAgICBib29sIGlzQ2xvc2VkKCkgeyByZXR1cm4gbV9sYXN0LT5pc0Nsb3NlZCgpOyB9CisgICAg
dm9pZCBtYXJrRW5kT2ZGaWxlKCkKKyAgICB7CisgICAgICAgIC8vIEZJWE1FOiBUaGlzIHNob3Vs
ZCB1c2UgSW5wdXRTdHJlYW1QcmVwcm9jZXNzb3I6OmVuZE9mRmlsZU1hcmtlcgorICAgICAgICAv
LyBvbmNlIElucHV0U3RyZWFtUHJlcHJvY2Vzc29yIGlzIHNwbGl0IG9mZiBpbnRvIGl0cyBvd24g
aGVhZGVyLgorICAgICAgICBzdGF0aWMgY29uc3QgVUNoYXIgZW5kT2ZGaWxlTWFya2VyID0gMDsK
KyAgICAgICAgbV9sYXN0LT5hcHBlbmQoU2VnbWVudGVkU3RyaW5nKFN0cmluZygmZW5kT2ZGaWxl
TWFya2VyLCAxKSkpOworICAgICAgICBtX2xhc3QtPmNsb3NlKCk7CisgICAgfQorCisgICAgYm9v
bCBoYXZlU2VlbkVuZE9mRmlsZSgpCisgICAgeworICAgICAgICByZXR1cm4gbV9sYXN0LT5pc0Ns
b3NlZCgpOworICAgIH0KIAogICAgIFNlZ21lbnRlZFN0cmluZyYgY3VycmVudCgpIHsgcmV0dXJu
IG1fZmlyc3Q7IH0KIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxUb2tlbi5oIGIvV2Vi
Q29yZS9odG1sL0hUTUxUb2tlbi5oCmluZGV4IDFiNWE3OWRlNjAxZTFiYjY1Yjg4YTM0ZGZiODcz
NmRiMjMwMjY5MTMuLmU4YTE5ZjhmNGI4MjY1ZDNlMjg5ZjI2MGUxMjE2MTAzNzYyZDc1N2IgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MVG9rZW4uaAorKysgYi9XZWJDb3JlL2h0bWwvSFRN
TFRva2VuLmgKQEAgLTYwLDYgKzYwLDEyIEBAIHB1YmxpYzoKICAgICAgICAgbV90eXBlID0gVW5p
bml0aWFsaXplZDsKICAgICB9CiAKKyAgICB2b2lkIG1ha2VFbmRPZkZpbGUoKQorICAgIHsKKyAg
ICAgICAgQVNTRVJUKG1fdHlwZSA9PSBVbmluaXRpYWxpemVkKTsKKyAgICAgICAgbV90eXBlID0g
RW5kT2ZGaWxlOworICAgIH0KKwogICAgIHZvaWQgYmVnaW5TdGFydFRhZyhVQ2hhciBjaGFyYWN0
ZXIpCiAgICAgewogICAgICAgICBBU1NFUlQobV90eXBlID09IFVuaW5pdGlhbGl6ZWQpOwpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxUb2tlbml6ZXIuY3BwIGIvV2ViQ29yZS9odG1sL0hU
TUxUb2tlbml6ZXIuY3BwCmluZGV4IDg0ODk0ZmZmYjBjNTY4Y2FlZmY2NTJiNTU1ZmYzMjU3OTA4
OTQzNmQuLjkzZWFlNTk5MmYzMDhmNDZmYWYzYjQyMTUxYmIxMTM2MWVhOTkxMjIgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvaHRtbC9IVE1MVG9rZW5pemVyLmNwcAorKysgYi9XZWJDb3JlL2h0bWwvSFRN
TFRva2VuaXplci5jcHAKQEAgLTQ0LDYgKzQ0LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1
c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCitjb25zdCBVQ2hhciBIVE1MVG9rZW5pemVyOjpJ
bnB1dFN0cmVhbVByZXByb2Nlc3Nvcjo6ZW5kT2ZGaWxlTWFya2VyID0gMDsKKwogbmFtZXNwYWNl
IHsKIAogaW5saW5lIFVDaGFyIHRvTG93ZXJDYXNlKFVDaGFyIGNjKQpAQCAtMTcyLDYgKzE3NCwy
NiBAQCBpbmxpbmUgYm9vbCBIVE1MVG9rZW5pemVyOjpwcm9jZXNzRW50aXR5KFNlZ21lbnRlZFN0
cmluZyYgc291cmNlKQogICAgICAgICByZXR1cm4gdHJ1ZTsgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgIH0gd2hpbGUgKGZhbHNlKQog
CisvLyBJZGVudGljYWwgdG8gRU1JVF9BTkRfUkVTVU1FX0lOLCBleGNlcHQgZG9lcyBub3QgYWR2
YW5jZS4KKyNkZWZpbmUgRU1JVF9BTkRfUkVDT05TVU1FX0lOKHN0YXRlTmFtZSkgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBkbyB7ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAg
bV9zdGF0ZSA9IHN0YXRlTmFtZTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFwKKyAgICAgICAgZW1pdEN1cnJlbnRUb2tlbigpOyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgcmV0dXJuIHRydWU7ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAg
ICB9IHdoaWxlIChmYWxzZSkKKworLy8gVXNlZCB0byBlbWl0IHRoZSBFbmRPZkZpbGUgdG9rZW4u
CisvLyBDaGVjayBpZiB3ZSBoYXZlIGJ1ZmZlcmVkIGNoYXJhY3RlcnMgdG8gZW1pdCBmaXJzdCBi
ZWZvcmUgZW1pdHRpbmcgdGhlIEVPRi4KKyNkZWZpbmUgRU1JVF9FTkRfT0ZfRklMRSgpICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBkbyB7ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKKyAgICAgICAgaWYgKHNob3VsZEVtaXRCdWZmZXJlZENoYXJhY3RlclRva2VuKHNv
dXJjZSkpICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIHJldHVybiB0cnVlOyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAg
ICAgbV9zdGF0ZSA9IERhdGFTdGF0ZTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKKyAgICAgICAgc291cmNlLmFkdmFuY2UobV9saW5lTnVtYmVyKTsgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgZW1pdEVuZE9mRmls
ZSgpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
KyAgICAgICAgcmV0dXJuIHRydWU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKKyAgICB9IHdoaWxlIChmYWxzZSkKKwogI2RlZmluZSBfRkxV
U0hfQlVGRkVSRURfRU5EX1RBRygpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXAogICAgIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICBBU1NFUlQobV90b2tlbi0+dHlw
ZSgpID09IEhUTUxUb2tlbjo6Q2hhcmFjdGVyIHx8ICAgICAgICAgICAgICAgICAgXApAQCAtMjUy
LDcgKzI3NCw5IEBAIGJvb2wgSFRNTFRva2VuaXplcjo6bmV4dFRva2VuKFNlZ21lbnRlZFN0cmlu
ZyYgc291cmNlLCBIVE1MVG9rZW4mIHRva2VuKQogICAgICAgICAgICAgICAgIHJldHVybiB0cnVl
OwogICAgICAgICAgICAgfQogICAgICAgICAgICAgQURWQU5DRV9UTyhUYWdPcGVuU3RhdGUpOwot
ICAgICAgICB9IGVsc2UgeworICAgICAgICB9IGVsc2UgaWYgKGNjID09IElucHV0U3RyZWFtUHJl
cHJvY2Vzc29yOjplbmRPZkZpbGVNYXJrZXIpCisgICAgICAgICAgICBFTUlUX0VORF9PRl9GSUxF
KCk7CisgICAgICAgIGVsc2UgewogICAgICAgICAgICAgZW1pdENoYXJhY3RlcihjYyk7CiAgICAg
ICAgICAgICBBRFZBTkNFX1RPKERhdGFTdGF0ZSk7CiAgICAgICAgIH0KQEAgLTI3MSw2ICsyOTUs
OCBAQCBib29sIEhUTUxUb2tlbml6ZXI6Om5leHRUb2tlbihTZWdtZW50ZWRTdHJpbmcmIHNvdXJj
ZSwgSFRNTFRva2VuJiB0b2tlbikKICAgICAgICAgICAgIEFEVkFOQ0VfVE8oQ2hhcmFjdGVyUmVm
ZXJlbmNlSW5SQ0RBVEFTdGF0ZSk7CiAgICAgICAgIGVsc2UgaWYgKGNjID09ICc8JykKICAgICAg
ICAgICAgIEFEVkFOQ0VfVE8oUkNEQVRBTGVzc1RoYW5TaWduU3RhdGUpOworICAgICAgICBlbHNl
IGlmIChjYyA9PSBJbnB1dFN0cmVhbVByZXByb2Nlc3Nvcjo6ZW5kT2ZGaWxlTWFya2VyKQorICAg
ICAgICAgICAgRU1JVF9FTkRfT0ZfRklMRSgpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAg
IGVtaXRDaGFyYWN0ZXIoY2MpOwogICAgICAgICAgICAgQURWQU5DRV9UTyhSQ0RBVEFTdGF0ZSk7
CkBAIC0yODgsNiArMzE0LDggQEAgYm9vbCBIVE1MVG9rZW5pemVyOjpuZXh0VG9rZW4oU2VnbWVu
dGVkU3RyaW5nJiBzb3VyY2UsIEhUTUxUb2tlbiYgdG9rZW4pCiAgICAgQkVHSU5fU1RBVEUoUkFX
VEVYVFN0YXRlKSB7CiAgICAgICAgIGlmIChjYyA9PSAnPCcpCiAgICAgICAgICAgICBBRFZBTkNF
X1RPKFJBV1RFWFRMZXNzVGhhblNpZ25TdGF0ZSk7CisgICAgICAgIGVsc2UgaWYgKGNjID09IElu
cHV0U3RyZWFtUHJlcHJvY2Vzc29yOjplbmRPZkZpbGVNYXJrZXIpCisgICAgICAgICAgICBFTUlU
X0VORF9PRl9GSUxFKCk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgZW1pdENoYXJhY3Rl
cihjYyk7CiAgICAgICAgICAgICBBRFZBTkNFX1RPKFJBV1RFWFRTdGF0ZSk7CkBAIC0yOTgsNiAr
MzI2LDggQEAgYm9vbCBIVE1MVG9rZW5pemVyOjpuZXh0VG9rZW4oU2VnbWVudGVkU3RyaW5nJiBz
b3VyY2UsIEhUTUxUb2tlbiYgdG9rZW4pCiAgICAgQkVHSU5fU1RBVEUoU2NyaXB0RGF0YVN0YXRl
KSB7CiAgICAgICAgIGlmIChjYyA9PSAnPCcpCiAgICAgICAgICAgICBBRFZBTkNFX1RPKFNjcmlw
dERhdGFMZXNzVGhhblNpZ25TdGF0ZSk7CisgICAgICAgIGVsc2UgaWYgKGNjID09IElucHV0U3Ry
ZWFtUHJlcHJvY2Vzc29yOjplbmRPZkZpbGVNYXJrZXIpCisgICAgICAgICAgICBFTUlUX0VORF9P
Rl9GSUxFKCk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgZW1pdENoYXJhY3RlcihjYyk7
CiAgICAgICAgICAgICBBRFZBTkNFX1RPKFNjcmlwdERhdGFTdGF0ZSk7CkBAIC0zMDYsNyArMzM2
LDEwIEBAIGJvb2wgSFRNTFRva2VuaXplcjo6bmV4dFRva2VuKFNlZ21lbnRlZFN0cmluZyYgc291
cmNlLCBIVE1MVG9rZW4mIHRva2VuKQogICAgIEVORF9TVEFURSgpCiAKICAgICBCRUdJTl9TVEFU
RShQTEFJTlRFWFRTdGF0ZSkgewotICAgICAgICBlbWl0Q2hhcmFjdGVyKGNjKTsKKyAgICAgICAg
aWYgKGNjID09IElucHV0U3RyZWFtUHJlcHJvY2Vzc29yOjplbmRPZkZpbGVNYXJrZXIpCisgICAg
ICAgICAgICBFTUlUX0VORF9PRl9GSUxFKCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGVt
aXRDaGFyYWN0ZXIoY2MpOwogICAgICAgICBBRFZBTkNFX1RPKFBMQUlOVEVYVFN0YXRlKTsKICAg
ICB9CiAgICAgRU5EX1NUQVRFKCkKQEAgLTM0NiwxMSArMzc5LDE1IEBAIGJvb2wgSFRNTFRva2Vu
aXplcjo6bmV4dFRva2VuKFNlZ21lbnRlZFN0cmluZyYgc291cmNlLCBIVE1MVG9rZW4mIHRva2Vu
KQogICAgICAgICB9IGVsc2UgaWYgKGNjID09ICc+JykgewogICAgICAgICAgICAgZW1pdFBhcnNl
RXJyb3IoKTsKICAgICAgICAgICAgIEFEVkFOQ0VfVE8oRGF0YVN0YXRlKTsKKyAgICAgICAgfSBl
bHNlIGlmIChjYyA9PSBJbnB1dFN0cmVhbVByZXByb2Nlc3Nvcjo6ZW5kT2ZGaWxlTWFya2VyKSB7
CisgICAgICAgICAgICBlbWl0UGFyc2VFcnJvcigpOworICAgICAgICAgICAgZW1pdENoYXJhY3Rl
cignPCcpOworICAgICAgICAgICAgZW1pdENoYXJhY3RlcignLycpOworICAgICAgICAgICAgUkVD
T05TVU1FX0lOKERhdGFTdGF0ZSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBlbWl0
UGFyc2VFcnJvcigpOwogICAgICAgICAgICAgUkVDT05TVU1FX0lOKEJvZ3VzQ29tbWVudFN0YXRl
KTsKICAgICAgICAgfQotICAgICAgICAvLyBGSVhNRTogSGFuZGxlIEVPRiBwcm9wZXJseS4KICAg
ICB9CiAgICAgRU5EX1NUQVRFKCkKIApAQCAtMzY0LDExICs0MDEsMTMgQEAgYm9vbCBIVE1MVG9r
ZW5pemVyOjpuZXh0VG9rZW4oU2VnbWVudGVkU3RyaW5nJiBzb3VyY2UsIEhUTUxUb2tlbiYgdG9r
ZW4pCiAgICAgICAgIGVsc2UgaWYgKGNjID49ICdBJyAmJiBjYyA8PSAnWicpIHsKICAgICAgICAg
ICAgIG1fdG9rZW4tPmFwcGVuZFRvTmFtZSh0b0xvd2VyQ2FzZShjYykpOwogICAgICAgICAgICAg
QURWQU5DRV9UTyhUYWdOYW1lU3RhdGUpOworICAgICAgICB9IGlmIChjYyA9PSBJbnB1dFN0cmVh
bVByZXByb2Nlc3Nvcjo6ZW5kT2ZGaWxlTWFya2VyKSB7CisgICAgICAgICAgICBlbWl0UGFyc2VF
cnJvcigpOworICAgICAgICAgICAgUkVDT05TVU1FX0lOKERhdGFTdGF0ZSk7CiAgICAgICAgIH0g
ZWxzZSB7CiAgICAgICAgICAgICBtX3Rva2VuLT5hcHBlbmRUb05hbWUoY2MpOwogICAgICAgICAg
ICAgQURWQU5DRV9UTyhUYWdOYW1lU3RhdGUpOwogICAgICAgICB9Ci0gICAgICAgIC8vIEZJWE1F
OiBIYW5kbGUgRU9GIHByb3Blcmx5LgogICAgIH0KICAgICBFTkRfU1RBVEUoKQogCkBAIC01NzQs
MTEgKzYxMywxMyBAQCBib29sIEhUTUxUb2tlbml6ZXI6Om5leHRUb2tlbihTZWdtZW50ZWRTdHJp
bmcmIHNvdXJjZSwgSFRNTFRva2VuJiB0b2tlbikKICAgICAgICAgICAgIEFEVkFOQ0VfVE8oU2Ny
aXB0RGF0YUVzY2FwZWREYXNoU3RhdGUpOwogICAgICAgICB9IGVsc2UgaWYgKGNjID09ICc8JykK
ICAgICAgICAgICAgIEFEVkFOQ0VfVE8oU2NyaXB0RGF0YUVzY2FwZWRMZXNzVGhhblNpZ25TdGF0
ZSk7Ci0gICAgICAgIGVsc2UgeworICAgICAgICBlbHNlIGlmIChjYyA9PSBJbnB1dFN0cmVhbVBy
ZXByb2Nlc3Nvcjo6ZW5kT2ZGaWxlTWFya2VyKSB7CisgICAgICAgICAgICBlbWl0UGFyc2VFcnJv
cigpOworICAgICAgICAgICAgUkVDT05TVU1FX0lOKERhdGFTdGF0ZSk7CisgICAgICAgIH0gZWxz
ZSB7CiAgICAgICAgICAgICBlbWl0Q2hhcmFjdGVyKGNjKTsKICAgICAgICAgICAgIEFEVkFOQ0Vf
VE8oU2NyaXB0RGF0YUVzY2FwZWRTdGF0ZSk7CiAgICAgICAgIH0KLSAgICAgICAgLy8gRklYTUU6
IEhhbmRsZSBFT0YgcHJvcGVybHkuCiAgICAgfQogICAgIEVORF9TVEFURSgpCiAKQEAgLTU4OCwx
MSArNjI5LDEzIEBAIGJvb2wgSFRNTFRva2VuaXplcjo6bmV4dFRva2VuKFNlZ21lbnRlZFN0cmlu
ZyYgc291cmNlLCBIVE1MVG9rZW4mIHRva2VuKQogICAgICAgICAgICAgQURWQU5DRV9UTyhTY3Jp
cHREYXRhRXNjYXBlZERhc2hEYXNoU3RhdGUpOwogICAgICAgICB9IGVsc2UgaWYgKGNjID09ICc8
JykKICAgICAgICAgICAgIEFEVkFOQ0VfVE8oU2NyaXB0RGF0YUVzY2FwZWRMZXNzVGhhblNpZ25T
dGF0ZSk7Ci0gICAgICAgIGVsc2UgeworICAgICAgICBlbHNlIGlmIChjYyA9PSBJbnB1dFN0cmVh
bVByZXByb2Nlc3Nvcjo6ZW5kT2ZGaWxlTWFya2VyKSB7CisgICAgICAgICAgICBlbWl0UGFyc2VF
cnJvcigpOworICAgICAgICAgICAgUkVDT05TVU1FX0lOKERhdGFTdGF0ZSk7CisgICAgICAgIH0g
ZWxzZSB7CiAgICAgICAgICAgICBlbWl0Q2hhcmFjdGVyKGNjKTsKICAgICAgICAgICAgIEFEVkFO
Q0VfVE8oU2NyaXB0RGF0YUVzY2FwZWRTdGF0ZSk7CiAgICAgICAgIH0KLSAgICAgICAgLy8gRklY
TUU6IEhhbmRsZSBFT0YgcHJvcGVybHkuCiAgICAgfQogICAgIEVORF9TVEFURSgpCiAKQEAgLTYw
NSwxMSArNjQ4LDEzIEBAIGJvb2wgSFRNTFRva2VuaXplcjo6bmV4dFRva2VuKFNlZ21lbnRlZFN0
cmluZyYgc291cmNlLCBIVE1MVG9rZW4mIHRva2VuKQogICAgICAgICBlbHNlIGlmIChjYyA9PSAn
PicpIHsKICAgICAgICAgICAgIGVtaXRDaGFyYWN0ZXIoY2MpOwogICAgICAgICAgICAgQURWQU5D
RV9UTyhTY3JpcHREYXRhU3RhdGUpOworICAgICAgICB9IGlmIChjYyA9PSBJbnB1dFN0cmVhbVBy
ZXByb2Nlc3Nvcjo6ZW5kT2ZGaWxlTWFya2VyKSB7CisgICAgICAgICAgICBlbWl0UGFyc2VFcnJv
cigpOworICAgICAgICAgICAgUkVDT05TVU1FX0lOKERhdGFTdGF0ZSk7CiAgICAgICAgIH0gZWxz
ZSB7CiAgICAgICAgICAgICBlbWl0Q2hhcmFjdGVyKGNjKTsKICAgICAgICAgICAgIEFEVkFOQ0Vf
VE8oU2NyaXB0RGF0YUVzY2FwZWRTdGF0ZSk7CiAgICAgICAgIH0KLSAgICAgICAgLy8gRklYTUU6
IEhhbmRsZSBFT0YgcHJvcGVybHkuCiAgICAgfQogICAgIEVORF9TVEFURSgpCiAKQEAgLTcxMCwx
MSArNzU1LDEzIEBAIGJvb2wgSFRNTFRva2VuaXplcjo6bmV4dFRva2VuKFNlZ21lbnRlZFN0cmlu
ZyYgc291cmNlLCBIVE1MVG9rZW4mIHRva2VuKQogICAgICAgICB9IGVsc2UgaWYgKGNjID09ICc8
JykgewogICAgICAgICAgICAgZW1pdENoYXJhY3RlcihjYyk7CiAgICAgICAgICAgICBBRFZBTkNF
X1RPKFNjcmlwdERhdGFEb3VibGVFc2NhcGVkTGVzc1RoYW5TaWduU3RhdGUpOworICAgICAgICB9
IGVsc2UgaWYgKGNjID09IElucHV0U3RyZWFtUHJlcHJvY2Vzc29yOjplbmRPZkZpbGVNYXJrZXIp
IHsKKyAgICAgICAgICAgIGVtaXRQYXJzZUVycm9yKCk7CisgICAgICAgICAgICBSRUNPTlNVTUVf
SU4oRGF0YVN0YXRlKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGVtaXRDaGFyYWN0
ZXIoY2MpOwogICAgICAgICAgICAgQURWQU5DRV9UTyhTY3JpcHREYXRhRG91YmxlRXNjYXBlZFN0
YXRlKTsKICAgICAgICAgfQotICAgICAgICAvLyBGSVhNRTogSGFuZGxlIEVPRiBwcm9wZXJseS4K
ICAgICB9CiAgICAgRU5EX1NUQVRFKCkKIApAQCAtNzI1LDExICs3NzIsMTMgQEAgYm9vbCBIVE1M
VG9rZW5pemVyOjpuZXh0VG9rZW4oU2VnbWVudGVkU3RyaW5nJiBzb3VyY2UsIEhUTUxUb2tlbiYg
dG9rZW4pCiAgICAgICAgIH0gZWxzZSBpZiAoY2MgPT0gJzwnKSB7CiAgICAgICAgICAgICBlbWl0
Q2hhcmFjdGVyKGNjKTsKICAgICAgICAgICAgIEFEVkFOQ0VfVE8oU2NyaXB0RGF0YURvdWJsZUVz
Y2FwZWRMZXNzVGhhblNpZ25TdGF0ZSk7CisgICAgICAgIH0gZWxzZSBpZiAoY2MgPT0gSW5wdXRT
dHJlYW1QcmVwcm9jZXNzb3I6OmVuZE9mRmlsZU1hcmtlcikgeworICAgICAgICAgICAgZW1pdFBh
cnNlRXJyb3IoKTsKKyAgICAgICAgICAgIFJFQ09OU1VNRV9JTihEYXRhU3RhdGUpOwogICAgICAg
ICB9IGVsc2UgewogICAgICAgICAgICAgZW1pdENoYXJhY3RlcihjYyk7CiAgICAgICAgICAgICBB
RFZBTkNFX1RPKFNjcmlwdERhdGFEb3VibGVFc2NhcGVkU3RhdGUpOwogICAgICAgICB9Ci0gICAg
ICAgIC8vIEZJWE1FOiBIYW5kbGUgRU9GIHByb3Blcmx5LgogICAgIH0KICAgICBFTkRfU1RBVEUo
KQogCkBAIC03NDMsMTEgKzc5MiwxMyBAQCBib29sIEhUTUxUb2tlbml6ZXI6Om5leHRUb2tlbihT
ZWdtZW50ZWRTdHJpbmcmIHNvdXJjZSwgSFRNTFRva2VuJiB0b2tlbikKICAgICAgICAgfSBlbHNl
IGlmIChjYyA9PSAnPicpIHsKICAgICAgICAgICAgIGVtaXRDaGFyYWN0ZXIoY2MpOwogICAgICAg
ICAgICAgQURWQU5DRV9UTyhTY3JpcHREYXRhU3RhdGUpOworICAgICAgICB9IGVsc2UgaWYgKGNj
ID09IElucHV0U3RyZWFtUHJlcHJvY2Vzc29yOjplbmRPZkZpbGVNYXJrZXIpIHsKKyAgICAgICAg
ICAgIGVtaXRQYXJzZUVycm9yKCk7CisgICAgICAgICAgICBSRUNPTlNVTUVfSU4oRGF0YVN0YXRl
KTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGVtaXRDaGFyYWN0ZXIoY2MpOwogICAg
ICAgICAgICAgQURWQU5DRV9UTyhTY3JpcHREYXRhRG91YmxlRXNjYXBlZFN0YXRlKTsKICAgICAg
ICAgfQotICAgICAgICAvLyBGSVhNRTogSGFuZGxlIEVPRiBwcm9wZXJseS4KICAgICB9CiAgICAg
RU5EX1NUQVRFKCkKIApAQCAtNzkyLDYgKzg0Myw5IEBAIGJvb2wgSFRNTFRva2VuaXplcjo6bmV4
dFRva2VuKFNlZ21lbnRlZFN0cmluZyYgc291cmNlLCBIVE1MVG9rZW4mIHRva2VuKQogICAgICAg
ICAgICAgbV90b2tlbi0+YWRkTmV3QXR0cmlidXRlKCk7CiAgICAgICAgICAgICBtX3Rva2VuLT5h
cHBlbmRUb0F0dHJpYnV0ZU5hbWUodG9Mb3dlckNhc2UoY2MpKTsKICAgICAgICAgICAgIEFEVkFO
Q0VfVE8oQXR0cmlidXRlTmFtZVN0YXRlKTsKKyAgICAgICAgfSBlbHNlIGlmIChjYyA9PSBJbnB1
dFN0cmVhbVByZXByb2Nlc3Nvcjo6ZW5kT2ZGaWxlTWFya2VyKSB7CisgICAgICAgICAgICBlbWl0
UGFyc2VFcnJvcigpOworICAgICAgICAgICAgUkVDT05TVU1FX0lOKERhdGFTdGF0ZSk7CiAgICAg
ICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBpZiAoY2MgPT0gJyInIHx8IGNjID09ICdcJycgfHwg
Y2MgPT0gJzwnIHx8IGNjID09ICc9JykKICAgICAgICAgICAgICAgICBlbWl0UGFyc2VFcnJvcigp
OwpAQCAtNzk5LDcgKzg1Myw2IEBAIGJvb2wgSFRNTFRva2VuaXplcjo6bmV4dFRva2VuKFNlZ21l
bnRlZFN0cmluZyYgc291cmNlLCBIVE1MVG9rZW4mIHRva2VuKQogICAgICAgICAgICAgbV90b2tl
bi0+YXBwZW5kVG9BdHRyaWJ1dGVOYW1lKGNjKTsKICAgICAgICAgICAgIEFEVkFOQ0VfVE8oQXR0
cmlidXRlTmFtZVN0YXRlKTsKICAgICAgICAgfQotICAgICAgICAvLyBGSVhNRTogSGFuZGxlIEVP
RiBwcm9wZXJseS4KICAgICB9CiAgICAgRU5EX1NUQVRFKCkKIApAQCAtODE1LDEzICs4NjgsMTUg
QEAgYm9vbCBIVE1MVG9rZW5pemVyOjpuZXh0VG9rZW4oU2VnbWVudGVkU3RyaW5nJiBzb3VyY2Us
IEhUTUxUb2tlbiYgdG9rZW4pCiAgICAgICAgIGVsc2UgaWYgKGNjID49ICdBJyAmJiBjYyA8PSAn
WicpIHsKICAgICAgICAgICAgIG1fdG9rZW4tPmFwcGVuZFRvQXR0cmlidXRlTmFtZSh0b0xvd2Vy
Q2FzZShjYykpOwogICAgICAgICAgICAgQURWQU5DRV9UTyhBdHRyaWJ1dGVOYW1lU3RhdGUpOwor
ICAgICAgICB9IGVsc2UgaWYgKGNjID09IElucHV0U3RyZWFtUHJlcHJvY2Vzc29yOjplbmRPZkZp
bGVNYXJrZXIpIHsKKyAgICAgICAgICAgIGVtaXRQYXJzZUVycm9yKCk7CisgICAgICAgICAgICBS
RUNPTlNVTUVfSU4oRGF0YVN0YXRlKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGlm
IChjYyA9PSAnIicgfHwgY2MgPT0gJ1wnJyB8fCBjYyA9PSAnPCcgfHwgY2MgPT0gJz0nKQogICAg
ICAgICAgICAgICAgIGVtaXRQYXJzZUVycm9yKCk7CiAgICAgICAgICAgICBtX3Rva2VuLT5hcHBl
bmRUb0F0dHJpYnV0ZU5hbWUoY2MpOwogICAgICAgICAgICAgQURWQU5DRV9UTyhBdHRyaWJ1dGVO
YW1lU3RhdGUpOwogICAgICAgICB9Ci0gICAgICAgIC8vIEZJWE1FOiBIYW5kbGUgRU9GIHByb3Bl
cmx5LgogICAgIH0KICAgICBFTkRfU1RBVEUoKQogCkBAIC04MzgsNiArODkzLDkgQEAgYm9vbCBI
VE1MVG9rZW5pemVyOjpuZXh0VG9rZW4oU2VnbWVudGVkU3RyaW5nJiBzb3VyY2UsIEhUTUxUb2tl
biYgdG9rZW4pCiAgICAgICAgICAgICBtX3Rva2VuLT5hZGROZXdBdHRyaWJ1dGUoKTsKICAgICAg
ICAgICAgIG1fdG9rZW4tPmFwcGVuZFRvQXR0cmlidXRlTmFtZSh0b0xvd2VyQ2FzZShjYykpOwog
ICAgICAgICAgICAgQURWQU5DRV9UTyhBdHRyaWJ1dGVOYW1lU3RhdGUpOworICAgICAgICB9IGVs
c2UgaWYgKGNjID09IElucHV0U3RyZWFtUHJlcHJvY2Vzc29yOjplbmRPZkZpbGVNYXJrZXIpIHsK
KyAgICAgICAgICAgIGVtaXRQYXJzZUVycm9yKCk7CisgICAgICAgICAgICBSRUNPTlNVTUVfSU4o
RGF0YVN0YXRlKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGlmIChjYyA9PSAnIicg
fHwgY2MgPT0gJ1wnJyB8fCBjYyA9PSAnPCcpCiAgICAgICAgICAgICAgICAgZW1pdFBhcnNlRXJy
b3IoKTsKQEAgLTg0NSw3ICs5MDMsNiBAQCBib29sIEhUTUxUb2tlbml6ZXI6Om5leHRUb2tlbihT
ZWdtZW50ZWRTdHJpbmcmIHNvdXJjZSwgSFRNTFRva2VuJiB0b2tlbikKICAgICAgICAgICAgIG1f
dG9rZW4tPmFwcGVuZFRvQXR0cmlidXRlTmFtZShjYyk7CiAgICAgICAgICAgICBBRFZBTkNFX1RP
KEF0dHJpYnV0ZU5hbWVTdGF0ZSk7CiAgICAgICAgIH0KLSAgICAgICAgLy8gRklYTUU6IEhhbmRs
ZSBFT0YgcHJvcGVybHkuCiAgICAgfQogICAgIEVORF9TVEFURSgpCiAKQEAgLTg2MSw2ICs5MTgs
OSBAQCBib29sIEhUTUxUb2tlbml6ZXI6Om5leHRUb2tlbihTZWdtZW50ZWRTdHJpbmcmIHNvdXJj
ZSwgSFRNTFRva2VuJiB0b2tlbikKICAgICAgICAgZWxzZSBpZiAoY2MgPT0gJz4nKSB7CiAgICAg
ICAgICAgICBlbWl0UGFyc2VFcnJvcigpOwogICAgICAgICAgICAgRU1JVF9BTkRfUkVTVU1FX0lO
KERhdGFTdGF0ZSk7CisgICAgICAgIH0gZWxzZSBpZiAoY2MgPT0gSW5wdXRTdHJlYW1QcmVwcm9j
ZXNzb3I6OmVuZE9mRmlsZU1hcmtlcikgeworICAgICAgICAgICAgZW1pdFBhcnNlRXJyb3IoKTsK
KyAgICAgICAgICAgIFJFQ09OU1VNRV9JTihEYXRhU3RhdGUpOwogICAgICAgICB9IGVsc2Ugewog
ICAgICAgICAgICAgaWYgKGNjID09ICc8JyB8fCBjYyA9PSAnPScgfHwgY2MgPT0gJ2AnKQogICAg
ICAgICAgICAgICAgIGVtaXRQYXJzZUVycm9yKCk7CkBAIC04NzYsMTEgKzkzNiwxMyBAQCBib29s
IEhUTUxUb2tlbml6ZXI6Om5leHRUb2tlbihTZWdtZW50ZWRTdHJpbmcmIHNvdXJjZSwgSFRNTFRv
a2VuJiB0b2tlbikKICAgICAgICAgZWxzZSBpZiAoY2MgPT0gJyYnKSB7CiAgICAgICAgICAgICBt
X2FkZGl0aW9uYWxBbGxvd2VkQ2hhcmFjdGVyID0gJyInOwogICAgICAgICAgICAgQURWQU5DRV9U
TyhDaGFyYWN0ZXJSZWZlcmVuY2VJbkF0dHJpYnV0ZVZhbHVlU3RhdGUpOworICAgICAgICB9IGVs
c2UgaWYgKGNjID09IElucHV0U3RyZWFtUHJlcHJvY2Vzc29yOjplbmRPZkZpbGVNYXJrZXIpIHsK
KyAgICAgICAgICAgIGVtaXRQYXJzZUVycm9yKCk7CisgICAgICAgICAgICBSRUNPTlNVTUVfSU4o
RGF0YVN0YXRlKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIG1fdG9rZW4tPmFwcGVu
ZFRvQXR0cmlidXRlVmFsdWUoY2MpOwogICAgICAgICAgICAgQURWQU5DRV9UTyhBdHRyaWJ1dGVW
YWx1ZURvdWJsZVF1b3RlZFN0YXRlKTsKICAgICAgICAgfQotICAgICAgICAvLyBGSVhNRTogSGFu
ZGxlIEVPRiBwcm9wZXJseS4KICAgICB9CiAgICAgRU5EX1NUQVRFKCkKIApAQCAtODkwLDExICs5
NTIsMTMgQEAgYm9vbCBIVE1MVG9rZW5pemVyOjpuZXh0VG9rZW4oU2VnbWVudGVkU3RyaW5nJiBz
b3VyY2UsIEhUTUxUb2tlbiYgdG9rZW4pCiAgICAgICAgIGVsc2UgaWYgKGNjID09ICcmJykgewog
ICAgICAgICAgICAgbV9hZGRpdGlvbmFsQWxsb3dlZENoYXJhY3RlciA9ICdcJyc7CiAgICAgICAg
ICAgICBBRFZBTkNFX1RPKENoYXJhY3RlclJlZmVyZW5jZUluQXR0cmlidXRlVmFsdWVTdGF0ZSk7
CisgICAgICAgIH0gZWxzZSBpZiAoY2MgPT0gSW5wdXRTdHJlYW1QcmVwcm9jZXNzb3I6OmVuZE9m
RmlsZU1hcmtlcikgeworICAgICAgICAgICAgZW1pdFBhcnNlRXJyb3IoKTsKKyAgICAgICAgICAg
IFJFQ09OU1VNRV9JTihEYXRhU3RhdGUpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAg
bV90b2tlbi0+YXBwZW5kVG9BdHRyaWJ1dGVWYWx1ZShjYyk7CiAgICAgICAgICAgICBBRFZBTkNF
X1RPKEF0dHJpYnV0ZVZhbHVlU2luZ2xlUXVvdGVkU3RhdGUpOwogICAgICAgICB9Ci0gICAgICAg
IC8vIEZJWE1FOiBIYW5kbGUgRU9GIHByb3Blcmx5LgogICAgIH0KICAgICBFTkRfU1RBVEUoKQog
CkBAIC05MDYsMTMgKzk3MCwxNSBAQCBib29sIEhUTUxUb2tlbml6ZXI6Om5leHRUb2tlbihTZWdt
ZW50ZWRTdHJpbmcmIHNvdXJjZSwgSFRNTFRva2VuJiB0b2tlbikKICAgICAgICAgICAgIEFEVkFO
Q0VfVE8oQ2hhcmFjdGVyUmVmZXJlbmNlSW5BdHRyaWJ1dGVWYWx1ZVN0YXRlKTsKICAgICAgICAg
fSBlbHNlIGlmIChjYyA9PSAnPicpCiAgICAgICAgICAgICBFTUlUX0FORF9SRVNVTUVfSU4oRGF0
YVN0YXRlKTsKLSAgICAgICAgZWxzZSB7CisgICAgICAgIGVsc2UgaWYgKGNjID09IElucHV0U3Ry
ZWFtUHJlcHJvY2Vzc29yOjplbmRPZkZpbGVNYXJrZXIpIHsKKyAgICAgICAgICAgIGVtaXRQYXJz
ZUVycm9yKCk7CisgICAgICAgICAgICBSRUNPTlNVTUVfSU4oRGF0YVN0YXRlKTsKKyAgICAgICAg
fSBlbHNlIHsKICAgICAgICAgICAgIGlmIChjYyA9PSAnIicgfHwgY2MgPT0gJ1wnJyB8fCBjYyA9
PSAnPCcgfHwgY2MgPT0gJz0nIHx8IGNjID09ICdgJykKICAgICAgICAgICAgICAgICBlbWl0UGFy
c2VFcnJvcigpOwogICAgICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9BdHRyaWJ1dGVWYWx1ZShj
Yyk7CiAgICAgICAgICAgICBBRFZBTkNFX1RPKEF0dHJpYnV0ZVZhbHVlVW5xdW90ZWRTdGF0ZSk7
CiAgICAgICAgIH0KLSAgICAgICAgLy8gRklYTUU6IEhhbmRsZSBFT0YgcHJvcGVybHkuCiAgICAg
fQogICAgIEVORF9TVEFURSgpCiAKQEAgLTk1MSwxMSArMTAxNywxMyBAQCBib29sIEhUTUxUb2tl
bml6ZXI6Om5leHRUb2tlbihTZWdtZW50ZWRTdHJpbmcmIHNvdXJjZSwgSFRNTFRva2VuJiB0b2tl
bikKICAgICAgICAgICAgIEFEVkFOQ0VfVE8oU2VsZkNsb3NpbmdTdGFydFRhZ1N0YXRlKTsKICAg
ICAgICAgZWxzZSBpZiAoY2MgPT0gJz4nKQogICAgICAgICAgICAgRU1JVF9BTkRfUkVTVU1FX0lO
KERhdGFTdGF0ZSk7Ci0gICAgICAgIGVsc2UgeworICAgICAgICBlbHNlIGlmIChjYyA9PSBJbnB1
dFN0cmVhbVByZXByb2Nlc3Nvcjo6ZW5kT2ZGaWxlTWFya2VyKSB7CisgICAgICAgICAgICBlbWl0
UGFyc2VFcnJvcigpOworICAgICAgICAgICAgUkVDT05TVU1FX0lOKERhdGFTdGF0ZSk7CisgICAg
ICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBlbWl0UGFyc2VFcnJvcigpOwogICAgICAgICAgICAg
UkVDT05TVU1FX0lOKEJlZm9yZUF0dHJpYnV0ZU5hbWVTdGF0ZSk7CiAgICAgICAgIH0KLSAgICAg
ICAgLy8gRklYTUU6IEhhbmRsZSBFT0YgcHJvcGVybHkuCiAgICAgfQogICAgIEVORF9TVEFURSgp
CiAKQEAgLTk2MywxMSArMTAzMSwxMyBAQCBib29sIEhUTUxUb2tlbml6ZXI6Om5leHRUb2tlbihT
ZWdtZW50ZWRTdHJpbmcmIHNvdXJjZSwgSFRNTFRva2VuJiB0b2tlbikKICAgICAgICAgaWYgKGNj
ID09ICc+JykgewogICAgICAgICAgICAgbm90SW1wbGVtZW50ZWQoKTsKICAgICAgICAgICAgIEVN
SVRfQU5EX1JFU1VNRV9JTihEYXRhU3RhdGUpOworICAgICAgICB9IGVsc2UgaWYgKGNjID09IElu
cHV0U3RyZWFtUHJlcHJvY2Vzc29yOjplbmRPZkZpbGVNYXJrZXIpIHsKKyAgICAgICAgICAgIGVt
aXRQYXJzZUVycm9yKCk7CisgICAgICAgICAgICBSRUNPTlNVTUVfSU4oRGF0YVN0YXRlKTsKICAg
ICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGVtaXRQYXJzZUVycm9yKCk7CiAgICAgICAgICAg
ICBSRUNPTlNVTUVfSU4oQmVmb3JlQXR0cmlidXRlTmFtZVN0YXRlKTsKICAgICAgICAgfQotICAg
ICAgICAvLyBGSVhNRTogSGFuZGxlIEVPRiBwcm9wZXJseS4KICAgICB9CiAgICAgRU5EX1NUQVRF
KCkKIApAQCAtMTAyNCwxMSArMTA5NCwxMyBAQCBib29sIEhUTUxUb2tlbml6ZXI6Om5leHRUb2tl
bihTZWdtZW50ZWRTdHJpbmcmIHNvdXJjZSwgSFRNTFRva2VuJiB0b2tlbikKICAgICAgICAgZWxz
ZSBpZiAoY2MgPT0gJz4nKSB7CiAgICAgICAgICAgICBlbWl0UGFyc2VFcnJvcigpOwogICAgICAg
ICAgICAgRU1JVF9BTkRfUkVTVU1FX0lOKERhdGFTdGF0ZSk7CisgICAgICAgIH0gZWxzZSBpZiAo
Y2MgPT0gSW5wdXRTdHJlYW1QcmVwcm9jZXNzb3I6OmVuZE9mRmlsZU1hcmtlcikgeworICAgICAg
ICAgICAgZW1pdFBhcnNlRXJyb3IoKTsKKyAgICAgICAgICAgIEVNSVRfQU5EX1JFQ09OU1VNRV9J
TihEYXRhU3RhdGUpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgbV90b2tlbi0+YXBw
ZW5kVG9Db21tZW50KGNjKTsKICAgICAgICAgICAgIEFEVkFOQ0VfVE8oQ29tbWVudFN0YXRlKTsK
ICAgICAgICAgfQotICAgICAgICAvLyBGSVhNRTogSGFuZGxlIEVPRiBwcm9wZXJseS4KICAgICB9
CiAgICAgRU5EX1NUQVRFKCkKIApAQCAtMTAzOCwzNSArMTExMCw0MSBAQCBib29sIEhUTUxUb2tl
bml6ZXI6Om5leHRUb2tlbihTZWdtZW50ZWRTdHJpbmcmIHNvdXJjZSwgSFRNTFRva2VuJiB0b2tl
bikKICAgICAgICAgZWxzZSBpZiAoY2MgPT0gJz4nKSB7CiAgICAgICAgICAgICBlbWl0UGFyc2VF
cnJvcigpOwogICAgICAgICAgICAgRU1JVF9BTkRfUkVTVU1FX0lOKERhdGFTdGF0ZSk7CisgICAg
ICAgIH0gZWxzZSBpZiAoY2MgPT0gSW5wdXRTdHJlYW1QcmVwcm9jZXNzb3I6OmVuZE9mRmlsZU1h
cmtlcikgeworICAgICAgICAgICAgZW1pdFBhcnNlRXJyb3IoKTsKKyAgICAgICAgICAgIEVNSVRf
QU5EX1JFQ09OU1VNRV9JTihEYXRhU3RhdGUpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAg
ICAgbV90b2tlbi0+YXBwZW5kVG9Db21tZW50KCctJyk7CiAgICAgICAgICAgICBtX3Rva2VuLT5h
cHBlbmRUb0NvbW1lbnQoY2MpOwogICAgICAgICAgICAgQURWQU5DRV9UTyhDb21tZW50U3RhdGUp
OwogICAgICAgICB9Ci0gICAgICAgIC8vIEZJWE1FOiBIYW5kbGUgRU9GIHByb3Blcmx5LgogICAg
IH0KICAgICBFTkRfU1RBVEUoKQogCiAgICAgQkVHSU5fU1RBVEUoQ29tbWVudFN0YXRlKSB7CiAg
ICAgICAgIGlmIChjYyA9PSAnLScpCiAgICAgICAgICAgICBBRFZBTkNFX1RPKENvbW1lbnRFbmRE
YXNoU3RhdGUpOwotICAgICAgICBlbHNlIHsKKyAgICAgICAgZWxzZSBpZiAoY2MgPT0gSW5wdXRT
dHJlYW1QcmVwcm9jZXNzb3I6OmVuZE9mRmlsZU1hcmtlcikgeworICAgICAgICAgICAgZW1pdFBh
cnNlRXJyb3IoKTsKKyAgICAgICAgICAgIEVNSVRfQU5EX1JFQ09OU1VNRV9JTihEYXRhU3RhdGUp
OworICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9Db21tZW50
KGNjKTsKICAgICAgICAgICAgIEFEVkFOQ0VfVE8oQ29tbWVudFN0YXRlKTsKICAgICAgICAgfQot
ICAgICAgICAvLyBGSVhNRTogSGFuZGxlIEVPRiBwcm9wZXJseS4KICAgICB9CiAgICAgRU5EX1NU
QVRFKCkKIAogICAgIEJFR0lOX1NUQVRFKENvbW1lbnRFbmREYXNoU3RhdGUpIHsKICAgICAgICAg
aWYgKGNjID09ICctJykKICAgICAgICAgICAgIEFEVkFOQ0VfVE8oQ29tbWVudEVuZFN0YXRlKTsK
LSAgICAgICAgZWxzZSB7CisgICAgICAgIGVsc2UgaWYgKGNjID09IElucHV0U3RyZWFtUHJlcHJv
Y2Vzc29yOjplbmRPZkZpbGVNYXJrZXIpIHsKKyAgICAgICAgICAgIGVtaXRQYXJzZUVycm9yKCk7
CisgICAgICAgICAgICBFTUlUX0FORF9SRUNPTlNVTUVfSU4oRGF0YVN0YXRlKTsKKyAgICAgICAg
fSBlbHNlIHsKICAgICAgICAgICAgIG1fdG9rZW4tPmFwcGVuZFRvQ29tbWVudCgnLScpOwogICAg
ICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9Db21tZW50KGNjKTsKICAgICAgICAgICAgIEFEVkFO
Q0VfVE8oQ29tbWVudFN0YXRlKTsKICAgICAgICAgfQotICAgICAgICAvLyBGSVhNRTogSGFuZGxl
IEVPRiBwcm9wZXJseS4KICAgICB9CiAgICAgRU5EX1NUQVRFKCkKIApAQCAtMTA4Nyw2ICsxMTY1
LDkgQEAgYm9vbCBIVE1MVG9rZW5pemVyOjpuZXh0VG9rZW4oU2VnbWVudGVkU3RyaW5nJiBzb3Vy
Y2UsIEhUTUxUb2tlbiYgdG9rZW4pCiAgICAgICAgICAgICBtX3Rva2VuLT5hcHBlbmRUb0NvbW1l
bnQoJy0nKTsKICAgICAgICAgICAgIG1fdG9rZW4tPmFwcGVuZFRvQ29tbWVudChjYyk7CiAgICAg
ICAgICAgICBBRFZBTkNFX1RPKENvbW1lbnRFbmRTdGF0ZSk7CisgICAgICAgIH0gZWxzZSBpZiAo
Y2MgPT0gSW5wdXRTdHJlYW1QcmVwcm9jZXNzb3I6OmVuZE9mRmlsZU1hcmtlcikgeworICAgICAg
ICAgICAgZW1pdFBhcnNlRXJyb3IoKTsKKyAgICAgICAgICAgIEVNSVRfQU5EX1JFQ09OU1VNRV9J
TihEYXRhU3RhdGUpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgZW1pdFBhcnNlRXJy
b3IoKTsKICAgICAgICAgICAgIG1fdG9rZW4tPmFwcGVuZFRvQ29tbWVudCgnLScpOwpAQCAtMTA5
NCw3ICsxMTc1LDYgQEAgYm9vbCBIVE1MVG9rZW5pemVyOjpuZXh0VG9rZW4oU2VnbWVudGVkU3Ry
aW5nJiBzb3VyY2UsIEhUTUxUb2tlbiYgdG9rZW4pCiAgICAgICAgICAgICBtX3Rva2VuLT5hcHBl
bmRUb0NvbW1lbnQoY2MpOwogICAgICAgICAgICAgQURWQU5DRV9UTyhDb21tZW50U3RhdGUpOwog
ICAgICAgICB9Ci0gICAgICAgIC8vIEZJWE1FOiBIYW5kbGUgRU9GIHByb3Blcmx5LgogICAgIH0K
ICAgICBFTkRfU1RBVEUoKQogCkBAIC0xMTA2LDE0ICsxMTg2LDE2IEBAIGJvb2wgSFRNTFRva2Vu
aXplcjo6bmV4dFRva2VuKFNlZ21lbnRlZFN0cmluZyYgc291cmNlLCBIVE1MVG9rZW4mIHRva2Vu
KQogICAgICAgICAgICAgQURWQU5DRV9UTyhDb21tZW50RW5kRGFzaFN0YXRlKTsKICAgICAgICAg
fSBlbHNlIGlmIChjYyA9PSAnPicpCiAgICAgICAgICAgICBFTUlUX0FORF9SRVNVTUVfSU4oRGF0
YVN0YXRlKTsKLSAgICAgICAgZWxzZSB7CisgICAgICAgIGVsc2UgaWYgKGNjID09IElucHV0U3Ry
ZWFtUHJlcHJvY2Vzc29yOjplbmRPZkZpbGVNYXJrZXIpIHsKKyAgICAgICAgICAgIGVtaXRQYXJz
ZUVycm9yKCk7CisgICAgICAgICAgICBFTUlUX0FORF9SRUNPTlNVTUVfSU4oRGF0YVN0YXRlKTsK
KyAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIG1fdG9rZW4tPmFwcGVuZFRvQ29tbWVudCgn
LScpOwogICAgICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9Db21tZW50KCctJyk7CiAgICAgICAg
ICAgICBtX3Rva2VuLT5hcHBlbmRUb0NvbW1lbnQoJyEnKTsKICAgICAgICAgICAgIG1fdG9rZW4t
PmFwcGVuZFRvQ29tbWVudChjYyk7CiAgICAgICAgICAgICBBRFZBTkNFX1RPKENvbW1lbnRTdGF0
ZSk7CiAgICAgICAgIH0KLSAgICAgICAgLy8gRklYTUU6IEhhbmRsZSBFT0YgcHJvcGVybHkuCiAg
ICAgfQogICAgIEVORF9TVEFURSgpCiAKQEAgLTExMjUsMjIgKzEyMDcsMjggQEAgYm9vbCBIVE1M
VG9rZW5pemVyOjpuZXh0VG9rZW4oU2VnbWVudGVkU3RyaW5nJiBzb3VyY2UsIEhUTUxUb2tlbiYg
dG9rZW4pCiAgICAgICAgICAgICBBRFZBTkNFX1RPKENvbW1lbnRFbmREYXNoU3RhdGUpOwogICAg
ICAgICBlbHNlIGlmIChjYyA9PSAnPicpCiAgICAgICAgICAgICBFTUlUX0FORF9SRVNVTUVfSU4o
RGF0YVN0YXRlKTsKLSAgICAgICAgZWxzZSB7CisgICAgICAgIGVsc2UgaWYgKGNjID09IElucHV0
U3RyZWFtUHJlcHJvY2Vzc29yOjplbmRPZkZpbGVNYXJrZXIpIHsKKyAgICAgICAgICAgIGVtaXRQ
YXJzZUVycm9yKCk7CisgICAgICAgICAgICBFTUlUX0FORF9SRUNPTlNVTUVfSU4oRGF0YVN0YXRl
KTsKKyAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIG1fdG9rZW4tPmFwcGVuZFRvQ29tbWVu
dChjYyk7CiAgICAgICAgICAgICBBRFZBTkNFX1RPKENvbW1lbnRTdGF0ZSk7CiAgICAgICAgIH0K
LSAgICAgICAgLy8gRklYTUU6IEhhbmRsZSBFT0YgcHJvcGVybHkuCiAgICAgfQogICAgIEVORF9T
VEFURSgpCiAKICAgICBCRUdJTl9TVEFURShET0NUWVBFU3RhdGUpIHsKICAgICAgICAgaWYgKGNj
ID09ICdceDA5JyB8fCBjYyA9PSAnXHgwQScgfHwgY2MgPT0gJ1x4MEMnIHx8IGNjID09ICcgJykK
ICAgICAgICAgICAgIEFEVkFOQ0VfVE8oQmVmb3JlRE9DVFlQRU5hbWVTdGF0ZSk7Ci0gICAgICAg
IGVsc2UgeworICAgICAgICBlbHNlIGlmIChjYyA9PSBJbnB1dFN0cmVhbVByZXByb2Nlc3Nvcjo6
ZW5kT2ZGaWxlTWFya2VyKSB7CisgICAgICAgICAgICBlbWl0UGFyc2VFcnJvcigpOworICAgICAg
ICAgICAgbV90b2tlbi0+YmVnaW5ET0NUWVBFKCk7CisgICAgICAgICAgICBtX3Rva2VuLT5zZXRG
b3JjZVF1aXJrcygpOworICAgICAgICAgICAgRU1JVF9BTkRfUkVDT05TVU1FX0lOKERhdGFTdGF0
ZSk7CisgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBlbWl0UGFyc2VFcnJvcigpOwogICAg
ICAgICAgICAgUkVDT05TVU1FX0lOKEJlZm9yZURPQ1RZUEVOYW1lU3RhdGUpOwogICAgICAgICB9
Ci0gICAgICAgIC8vIEZJWE1FOiBIYW5kbGUgRU9GIHByb3Blcmx5LgogICAgIH0KICAgICBFTkRf
U1RBVEUoKQogCkBAIC0xMTU1LDExICsxMjQzLDE1IEBAIGJvb2wgSFRNTFRva2VuaXplcjo6bmV4
dFRva2VuKFNlZ21lbnRlZFN0cmluZyYgc291cmNlLCBIVE1MVG9rZW4mIHRva2VuKQogICAgICAg
ICAgICAgbV90b2tlbi0+YmVnaW5ET0NUWVBFKCk7CiAgICAgICAgICAgICBtX3Rva2VuLT5zZXRG
b3JjZVF1aXJrcygpOwogICAgICAgICAgICAgRU1JVF9BTkRfUkVTVU1FX0lOKERhdGFTdGF0ZSk7
CisgICAgICAgIH0gZWxzZSBpZiAoY2MgPT0gSW5wdXRTdHJlYW1QcmVwcm9jZXNzb3I6OmVuZE9m
RmlsZU1hcmtlcikgeworICAgICAgICAgICAgZW1pdFBhcnNlRXJyb3IoKTsKKyAgICAgICAgICAg
IG1fdG9rZW4tPmJlZ2luRE9DVFlQRSgpOworICAgICAgICAgICAgbV90b2tlbi0+c2V0Rm9yY2VR
dWlya3MoKTsKKyAgICAgICAgICAgIEVNSVRfQU5EX1JFQ09OU1VNRV9JTihEYXRhU3RhdGUpOwog
ICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgbV90b2tlbi0+YmVnaW5ET0NUWVBFKGNjKTsK
ICAgICAgICAgICAgIEFEVkFOQ0VfVE8oRE9DVFlQRU5hbWVTdGF0ZSk7CiAgICAgICAgIH0KLSAg
ICAgICAgLy8gRklYTUU6IEhhbmRsZSBFT0YgcHJvcGVybHkuCiAgICAgfQogICAgIEVORF9TVEFU
RSgpCiAKQEAgLTExNzEsMTEgKzEyNjMsMTQgQEAgYm9vbCBIVE1MVG9rZW5pemVyOjpuZXh0VG9r
ZW4oU2VnbWVudGVkU3RyaW5nJiBzb3VyY2UsIEhUTUxUb2tlbiYgdG9rZW4pCiAgICAgICAgIGVs
c2UgaWYgKGNjID49ICdBJyAmJiBjYyA8PSAnWicpIHsKICAgICAgICAgICAgIG1fdG9rZW4tPmFw
cGVuZFRvTmFtZSh0b0xvd2VyQ2FzZShjYykpOwogICAgICAgICAgICAgQURWQU5DRV9UTyhET0NU
WVBFTmFtZVN0YXRlKTsKKyAgICAgICAgfSBlbHNlIGlmIChjYyA9PSBJbnB1dFN0cmVhbVByZXBy
b2Nlc3Nvcjo6ZW5kT2ZGaWxlTWFya2VyKSB7CisgICAgICAgICAgICBlbWl0UGFyc2VFcnJvcigp
OworICAgICAgICAgICAgbV90b2tlbi0+c2V0Rm9yY2VRdWlya3MoKTsKKyAgICAgICAgICAgIEVN
SVRfQU5EX1JFQ09OU1VNRV9JTihEYXRhU3RhdGUpOwogICAgICAgICB9IGVsc2UgewogICAgICAg
ICAgICAgbV90b2tlbi0+YXBwZW5kVG9OYW1lKGNjKTsKICAgICAgICAgICAgIEFEVkFOQ0VfVE8o
RE9DVFlQRU5hbWVTdGF0ZSk7CiAgICAgICAgIH0KLSAgICAgICAgLy8gRklYTUU6IEhhbmRsZSBF
T0YgcHJvcGVybHkuCiAgICAgfQogICAgIEVORF9TVEFURSgpCiAKQEAgLTExODQsNyArMTI3OSwx
MSBAQCBib29sIEhUTUxUb2tlbml6ZXI6Om5leHRUb2tlbihTZWdtZW50ZWRTdHJpbmcmIHNvdXJj
ZSwgSFRNTFRva2VuJiB0b2tlbikKICAgICAgICAgICAgIEFEVkFOQ0VfVE8oQWZ0ZXJET0NUWVBF
TmFtZVN0YXRlKTsKICAgICAgICAgaWYgKGNjID09ICc+JykKICAgICAgICAgICAgIEVNSVRfQU5E
X1JFU1VNRV9JTihEYXRhU3RhdGUpOwotICAgICAgICBlbHNlIHsKKyAgICAgICAgZWxzZSBpZiAo
Y2MgPT0gSW5wdXRTdHJlYW1QcmVwcm9jZXNzb3I6OmVuZE9mRmlsZU1hcmtlcikgeworICAgICAg
ICAgICAgZW1pdFBhcnNlRXJyb3IoKTsKKyAgICAgICAgICAgIG1fdG9rZW4tPnNldEZvcmNlUXVp
cmtzKCk7CisgICAgICAgICAgICBFTUlUX0FORF9SRUNPTlNVTUVfSU4oRGF0YVN0YXRlKTsKKyAg
ICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIERFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBw
dWJsaWNTdHJpbmcsICgicHVibGljIikpOwogICAgICAgICAgICAgREVGSU5FX1NUQVRJQ19MT0NB
TChTdHJpbmcsIHN5c3RlbVN0cmluZywgKCJzeXN0ZW0iKSk7CiAgICAgICAgICAgICBpZiAoY2Mg
PT0gJ1AnIHx8IGNjID09ICdwJykgewpAQCAtMTIwNiw3ICsxMzA1LDYgQEAgYm9vbCBIVE1MVG9r
ZW5pemVyOjpuZXh0VG9rZW4oU2VnbWVudGVkU3RyaW5nJiBzb3VyY2UsIEhUTUxUb2tlbiYgdG9r
ZW4pCiAgICAgICAgICAgICBtX3Rva2VuLT5zZXRGb3JjZVF1aXJrcygpOwogICAgICAgICAgICAg
QURWQU5DRV9UTyhCb2d1c0RPQ1RZUEVTdGF0ZSk7CiAgICAgICAgIH0KLSAgICAgICAgLy8gRklY
TUU6IEhhbmRsZSBFT0YgcHJvcGVybHkuCiAgICAgfQogICAgIEVORF9TVEFURSgpCiAKQEAgLTEy
MjUsMTIgKzEzMjMsMTUgQEAgYm9vbCBIVE1MVG9rZW5pemVyOjpuZXh0VG9rZW4oU2VnbWVudGVk
U3RyaW5nJiBzb3VyY2UsIEhUTUxUb2tlbiYgdG9rZW4pCiAgICAgICAgICAgICBlbWl0UGFyc2VF
cnJvcigpOwogICAgICAgICAgICAgbV90b2tlbi0+c2V0Rm9yY2VRdWlya3MoKTsKICAgICAgICAg
ICAgIEVNSVRfQU5EX1JFU1VNRV9JTihEYXRhU3RhdGUpOworICAgICAgICB9IGVsc2UgaWYgKGNj
ID09IElucHV0U3RyZWFtUHJlcHJvY2Vzc29yOjplbmRPZkZpbGVNYXJrZXIpIHsKKyAgICAgICAg
ICAgIGVtaXRQYXJzZUVycm9yKCk7CisgICAgICAgICAgICBtX3Rva2VuLT5zZXRGb3JjZVF1aXJr
cygpOworICAgICAgICAgICAgRU1JVF9BTkRfUkVDT05TVU1FX0lOKERhdGFTdGF0ZSk7CiAgICAg
ICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBlbWl0UGFyc2VFcnJvcigpOwogICAgICAgICAgICAg
bV90b2tlbi0+c2V0Rm9yY2VRdWlya3MoKTsKICAgICAgICAgICAgIEFEVkFOQ0VfVE8oQm9ndXNE
T0NUWVBFU3RhdGUpOwogICAgICAgICB9Ci0gICAgICAgIC8vIEZJWE1FOiBIYW5kbGUgRU9GIHBy
b3Blcmx5LgogICAgIH0KICAgICBFTkRfU1RBVEUoKQogCkBAIC0xMjQ3LDEyICsxMzQ4LDE1IEBA
IGJvb2wgSFRNTFRva2VuaXplcjo6bmV4dFRva2VuKFNlZ21lbnRlZFN0cmluZyYgc291cmNlLCBI
VE1MVG9rZW4mIHRva2VuKQogICAgICAgICAgICAgZW1pdFBhcnNlRXJyb3IoKTsKICAgICAgICAg
ICAgIG1fdG9rZW4tPnNldEZvcmNlUXVpcmtzKCk7CiAgICAgICAgICAgICBFTUlUX0FORF9SRVNV
TUVfSU4oRGF0YVN0YXRlKTsKKyAgICAgICAgfSBlbHNlIGlmIChjYyA9PSBJbnB1dFN0cmVhbVBy
ZXByb2Nlc3Nvcjo6ZW5kT2ZGaWxlTWFya2VyKSB7CisgICAgICAgICAgICBlbWl0UGFyc2VFcnJv
cigpOworICAgICAgICAgICAgbV90b2tlbi0+c2V0Rm9yY2VRdWlya3MoKTsKKyAgICAgICAgICAg
IEVNSVRfQU5EX1JFQ09OU1VNRV9JTihEYXRhU3RhdGUpOwogICAgICAgICB9IGVsc2UgewogICAg
ICAgICAgICAgZW1pdFBhcnNlRXJyb3IoKTsKICAgICAgICAgICAgIG1fdG9rZW4tPnNldEZvcmNl
UXVpcmtzKCk7CiAgICAgICAgICAgICBBRFZBTkNFX1RPKEJvZ3VzRE9DVFlQRVN0YXRlKTsKICAg
ICAgICAgfQotICAgICAgICAvLyBGSVhNRTogSGFuZGxlIEVPRiBwcm9wZXJseS4KICAgICB9CiAg
ICAgRU5EX1NUQVRFKCkKIApAQCAtMTI2MywxMSArMTM2NywxNCBAQCBib29sIEhUTUxUb2tlbml6
ZXI6Om5leHRUb2tlbihTZWdtZW50ZWRTdHJpbmcmIHNvdXJjZSwgSFRNTFRva2VuJiB0b2tlbikK
ICAgICAgICAgICAgIGVtaXRQYXJzZUVycm9yKCk7CiAgICAgICAgICAgICBtX3Rva2VuLT5zZXRG
b3JjZVF1aXJrcygpOwogICAgICAgICAgICAgRU1JVF9BTkRfUkVTVU1FX0lOKERhdGFTdGF0ZSk7
CisgICAgICAgIH0gZWxzZSBpZiAoY2MgPT0gSW5wdXRTdHJlYW1QcmVwcm9jZXNzb3I6OmVuZE9m
RmlsZU1hcmtlcikgeworICAgICAgICAgICAgZW1pdFBhcnNlRXJyb3IoKTsKKyAgICAgICAgICAg
IG1fdG9rZW4tPnNldEZvcmNlUXVpcmtzKCk7CisgICAgICAgICAgICBFTUlUX0FORF9SRUNPTlNV
TUVfSU4oRGF0YVN0YXRlKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIG1fdG9rZW4t
PmFwcGVuZFRvUHVibGljSWRlbnRpZmllcihjYyk7CiAgICAgICAgICAgICBBRFZBTkNFX1RPKERP
Q1RZUEVQdWJsaWNJZGVudGlmaWVyRG91YmxlUXVvdGVkU3RhdGUpOwogICAgICAgICB9Ci0gICAg
ICAgIC8vIEZJWE1FOiBIYW5kbGUgRU9GIHByb3Blcmx5LgogICAgIH0KICAgICBFTkRfU1RBVEUo
KQogCkBAIC0xMjc4LDExICsxMzg1LDE0IEBAIGJvb2wgSFRNTFRva2VuaXplcjo6bmV4dFRva2Vu
KFNlZ21lbnRlZFN0cmluZyYgc291cmNlLCBIVE1MVG9rZW4mIHRva2VuKQogICAgICAgICAgICAg
ZW1pdFBhcnNlRXJyb3IoKTsKICAgICAgICAgICAgIG1fdG9rZW4tPnNldEZvcmNlUXVpcmtzKCk7
CiAgICAgICAgICAgICBFTUlUX0FORF9SRVNVTUVfSU4oRGF0YVN0YXRlKTsKKyAgICAgICAgfSBl
bHNlIGlmIChjYyA9PSBJbnB1dFN0cmVhbVByZXByb2Nlc3Nvcjo6ZW5kT2ZGaWxlTWFya2VyKSB7
CisgICAgICAgICAgICBlbWl0UGFyc2VFcnJvcigpOworICAgICAgICAgICAgbV90b2tlbi0+c2V0
Rm9yY2VRdWlya3MoKTsKKyAgICAgICAgICAgIEVNSVRfQU5EX1JFQ09OU1VNRV9JTihEYXRhU3Rh
dGUpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9QdWJs
aWNJZGVudGlmaWVyKGNjKTsKICAgICAgICAgICAgIEFEVkFOQ0VfVE8oRE9DVFlQRVB1YmxpY0lk
ZW50aWZpZXJTaW5nbGVRdW90ZWRTdGF0ZSk7CiAgICAgICAgIH0KLSAgICAgICAgLy8gRklYTUU6
IEhhbmRsZSBFT0YgcHJvcGVybHkuCiAgICAgfQogICAgIEVORF9TVEFURSgpCiAKQEAgLTEyOTks
MTIgKzE0MDksMTUgQEAgYm9vbCBIVE1MVG9rZW5pemVyOjpuZXh0VG9rZW4oU2VnbWVudGVkU3Ry
aW5nJiBzb3VyY2UsIEhUTUxUb2tlbiYgdG9rZW4pCiAgICAgICAgICAgICBlbWl0UGFyc2VFcnJv
cigpOwogICAgICAgICAgICAgbV90b2tlbi0+c2V0U3lzdGVtSWRlbnRpZmllclRvRW1wdHlTdHJp
bmcoKTsKICAgICAgICAgICAgIEFEVkFOQ0VfVE8oRE9DVFlQRVN5c3RlbUlkZW50aWZpZXJTaW5n
bGVRdW90ZWRTdGF0ZSk7CisgICAgICAgIH0gZWxzZSBpZiAoY2MgPT0gSW5wdXRTdHJlYW1QcmVw
cm9jZXNzb3I6OmVuZE9mRmlsZU1hcmtlcikgeworICAgICAgICAgICAgZW1pdFBhcnNlRXJyb3Io
KTsKKyAgICAgICAgICAgIG1fdG9rZW4tPnNldEZvcmNlUXVpcmtzKCk7CisgICAgICAgICAgICBF
TUlUX0FORF9SRUNPTlNVTUVfSU4oRGF0YVN0YXRlKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAg
ICAgICAgIGVtaXRQYXJzZUVycm9yKCk7CiAgICAgICAgICAgICBtX3Rva2VuLT5zZXRGb3JjZVF1
aXJrcygpOwogICAgICAgICAgICAgQURWQU5DRV9UTyhCb2d1c0RPQ1RZUEVTdGF0ZSk7CiAgICAg
ICAgIH0KLSAgICAgICAgLy8gRklYTUU6IEhhbmRsZSBFT0YgcHJvcGVybHkuCiAgICAgfQogICAg
IEVORF9TVEFURSgpCiAKQEAgLTEzMTksMTIgKzE0MzIsMTUgQEAgYm9vbCBIVE1MVG9rZW5pemVy
OjpuZXh0VG9rZW4oU2VnbWVudGVkU3RyaW5nJiBzb3VyY2UsIEhUTUxUb2tlbiYgdG9rZW4pCiAg
ICAgICAgIH0gZWxzZSBpZiAoY2MgPT0gJ1wnJykgewogICAgICAgICAgICAgbV90b2tlbi0+c2V0
U3lzdGVtSWRlbnRpZmllclRvRW1wdHlTdHJpbmcoKTsKICAgICAgICAgICAgIEFEVkFOQ0VfVE8o
RE9DVFlQRVN5c3RlbUlkZW50aWZpZXJTaW5nbGVRdW90ZWRTdGF0ZSk7CisgICAgICAgIH0gZWxz
ZSBpZiAoY2MgPT0gSW5wdXRTdHJlYW1QcmVwcm9jZXNzb3I6OmVuZE9mRmlsZU1hcmtlcikgewor
ICAgICAgICAgICAgZW1pdFBhcnNlRXJyb3IoKTsKKyAgICAgICAgICAgIG1fdG9rZW4tPnNldEZv
cmNlUXVpcmtzKCk7CisgICAgICAgICAgICBFTUlUX0FORF9SRUNPTlNVTUVfSU4oRGF0YVN0YXRl
KTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGVtaXRQYXJzZUVycm9yKCk7CiAgICAg
ICAgICAgICBtX3Rva2VuLT5zZXRGb3JjZVF1aXJrcygpOwogICAgICAgICAgICAgQURWQU5DRV9U
TyhCb2d1c0RPQ1RZUEVTdGF0ZSk7CiAgICAgICAgIH0KLSAgICAgICAgLy8gRklYTUU6IEhhbmRs
ZSBFT0YgcHJvcGVybHkuCiAgICAgfQogICAgIEVORF9TVEFURSgpCiAKQEAgLTEzNDMsMTIgKzE0
NTksMTUgQEAgYm9vbCBIVE1MVG9rZW5pemVyOjpuZXh0VG9rZW4oU2VnbWVudGVkU3RyaW5nJiBz
b3VyY2UsIEhUTUxUb2tlbiYgdG9rZW4pCiAgICAgICAgICAgICBlbWl0UGFyc2VFcnJvcigpOwog
ICAgICAgICAgICAgbV90b2tlbi0+c2V0Rm9yY2VRdWlya3MoKTsKICAgICAgICAgICAgIEVNSVRf
QU5EX1JFU1VNRV9JTihEYXRhU3RhdGUpOworICAgICAgICB9IGVsc2UgaWYgKGNjID09IElucHV0
U3RyZWFtUHJlcHJvY2Vzc29yOjplbmRPZkZpbGVNYXJrZXIpIHsKKyAgICAgICAgICAgIGVtaXRQ
YXJzZUVycm9yKCk7CisgICAgICAgICAgICBtX3Rva2VuLT5zZXRGb3JjZVF1aXJrcygpOworICAg
ICAgICAgICAgRU1JVF9BTkRfUkVDT05TVU1FX0lOKERhdGFTdGF0ZSk7CiAgICAgICAgIH0gZWxz
ZSB7CiAgICAgICAgICAgICBlbWl0UGFyc2VFcnJvcigpOwogICAgICAgICAgICAgbV90b2tlbi0+
c2V0Rm9yY2VRdWlya3MoKTsKICAgICAgICAgICAgIEFEVkFOQ0VfVE8oQm9ndXNET0NUWVBFU3Rh
dGUpOwogICAgICAgICB9Ci0gICAgICAgIC8vIEZJWE1FOiBIYW5kbGUgRU9GIHByb3Blcmx5Lgog
ICAgIH0KICAgICBFTkRfU1RBVEUoKQogCkBAIC0xMzY1LDEyICsxNDg0LDE1IEBAIGJvb2wgSFRN
TFRva2VuaXplcjo6bmV4dFRva2VuKFNlZ21lbnRlZFN0cmluZyYgc291cmNlLCBIVE1MVG9rZW4m
IHRva2VuKQogICAgICAgICAgICAgZW1pdFBhcnNlRXJyb3IoKTsKICAgICAgICAgICAgIG1fdG9r
ZW4tPnNldEZvcmNlUXVpcmtzKCk7CiAgICAgICAgICAgICBFTUlUX0FORF9SRVNVTUVfSU4oRGF0
YVN0YXRlKTsKKyAgICAgICAgfSBlbHNlIGlmIChjYyA9PSBJbnB1dFN0cmVhbVByZXByb2Nlc3Nv
cjo6ZW5kT2ZGaWxlTWFya2VyKSB7CisgICAgICAgICAgICBlbWl0UGFyc2VFcnJvcigpOworICAg
ICAgICAgICAgbV90b2tlbi0+c2V0Rm9yY2VRdWlya3MoKTsKKyAgICAgICAgICAgIEVNSVRfQU5E
X1JFQ09OU1VNRV9JTihEYXRhU3RhdGUpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAg
ZW1pdFBhcnNlRXJyb3IoKTsKICAgICAgICAgICAgIG1fdG9rZW4tPnNldEZvcmNlUXVpcmtzKCk7
CiAgICAgICAgICAgICBBRFZBTkNFX1RPKEJvZ3VzRE9DVFlQRVN0YXRlKTsKICAgICAgICAgfQot
ICAgICAgICAvLyBGSVhNRTogSGFuZGxlIEVPRiBwcm9wZXJseS4KICAgICB9CiAgICAgRU5EX1NU
QVRFKCkKIApAQCAtMTM4MSwxMSArMTUwMywxNCBAQCBib29sIEhUTUxUb2tlbml6ZXI6Om5leHRU
b2tlbihTZWdtZW50ZWRTdHJpbmcmIHNvdXJjZSwgSFRNTFRva2VuJiB0b2tlbikKICAgICAgICAg
ICAgIGVtaXRQYXJzZUVycm9yKCk7CiAgICAgICAgICAgICBtX3Rva2VuLT5zZXRGb3JjZVF1aXJr
cygpOwogICAgICAgICAgICAgRU1JVF9BTkRfUkVTVU1FX0lOKERhdGFTdGF0ZSk7CisgICAgICAg
IH0gZWxzZSBpZiAoY2MgPT0gSW5wdXRTdHJlYW1QcmVwcm9jZXNzb3I6OmVuZE9mRmlsZU1hcmtl
cikgeworICAgICAgICAgICAgZW1pdFBhcnNlRXJyb3IoKTsKKyAgICAgICAgICAgIG1fdG9rZW4t
PnNldEZvcmNlUXVpcmtzKCk7CisgICAgICAgICAgICBFTUlUX0FORF9SRUNPTlNVTUVfSU4oRGF0
YVN0YXRlKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIG1fdG9rZW4tPmFwcGVuZFRv
U3lzdGVtSWRlbnRpZmllcihjYyk7CiAgICAgICAgICAgICBBRFZBTkNFX1RPKERPQ1RZUEVTeXN0
ZW1JZGVudGlmaWVyRG91YmxlUXVvdGVkU3RhdGUpOwogICAgICAgICB9Ci0gICAgICAgIC8vIEZJ
WE1FOiBIYW5kbGUgRU9GIHByb3Blcmx5LgogICAgIH0KICAgICBFTkRfU1RBVEUoKQogCkBAIC0x
Mzk2LDExICsxNTIxLDE0IEBAIGJvb2wgSFRNTFRva2VuaXplcjo6bmV4dFRva2VuKFNlZ21lbnRl
ZFN0cmluZyYgc291cmNlLCBIVE1MVG9rZW4mIHRva2VuKQogICAgICAgICAgICAgZW1pdFBhcnNl
RXJyb3IoKTsKICAgICAgICAgICAgIG1fdG9rZW4tPnNldEZvcmNlUXVpcmtzKCk7CiAgICAgICAg
ICAgICBFTUlUX0FORF9SRVNVTUVfSU4oRGF0YVN0YXRlKTsKKyAgICAgICAgfSBlbHNlIGlmIChj
YyA9PSBJbnB1dFN0cmVhbVByZXByb2Nlc3Nvcjo6ZW5kT2ZGaWxlTWFya2VyKSB7CisgICAgICAg
ICAgICBlbWl0UGFyc2VFcnJvcigpOworICAgICAgICAgICAgbV90b2tlbi0+c2V0Rm9yY2VRdWly
a3MoKTsKKyAgICAgICAgICAgIEVNSVRfQU5EX1JFQ09OU1VNRV9JTihEYXRhU3RhdGUpOwogICAg
ICAgICB9IGVsc2UgewogICAgICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9TeXN0ZW1JZGVudGlm
aWVyKGNjKTsKICAgICAgICAgICAgIEFEVkFOQ0VfVE8oRE9DVFlQRVN5c3RlbUlkZW50aWZpZXJT
aW5nbGVRdW90ZWRTdGF0ZSk7CiAgICAgICAgIH0KLSAgICAgICAgLy8gRklYTUU6IEhhbmRsZSBF
T0YgcHJvcGVybHkuCiAgICAgfQogICAgIEVORF9TVEFURSgpCiAKQEAgLTE0MDksMjUgKzE1Mzcs
MzAgQEAgYm9vbCBIVE1MVG9rZW5pemVyOjpuZXh0VG9rZW4oU2VnbWVudGVkU3RyaW5nJiBzb3Vy
Y2UsIEhUTUxUb2tlbiYgdG9rZW4pCiAgICAgICAgICAgICBBRFZBTkNFX1RPKEFmdGVyRE9DVFlQ
RVN5c3RlbUlkZW50aWZpZXJTdGF0ZSk7CiAgICAgICAgIGVsc2UgaWYgKGNjID09ICc+JykKICAg
ICAgICAgICAgIEVNSVRfQU5EX1JFU1VNRV9JTihEYXRhU3RhdGUpOwotICAgICAgICBlbHNlIHsK
KyAgICAgICAgZWxzZSBpZiAoY2MgPT0gSW5wdXRTdHJlYW1QcmVwcm9jZXNzb3I6OmVuZE9mRmls
ZU1hcmtlcikgeworICAgICAgICAgICAgZW1pdFBhcnNlRXJyb3IoKTsKKyAgICAgICAgICAgIG1f
dG9rZW4tPnNldEZvcmNlUXVpcmtzKCk7CisgICAgICAgICAgICBFTUlUX0FORF9SRUNPTlNVTUVf
SU4oRGF0YVN0YXRlKTsKKyAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGVtaXRQYXJzZUVy
cm9yKCk7CiAgICAgICAgICAgICBBRFZBTkNFX1RPKEJvZ3VzRE9DVFlQRVN0YXRlKTsKICAgICAg
ICAgfQotICAgICAgICAvLyBGSVhNRTogSGFuZGxlIEVPRiBwcm9wZXJseS4KICAgICB9CiAgICAg
RU5EX1NUQVRFKCkKIAogICAgIEJFR0lOX1NUQVRFKEJvZ3VzRE9DVFlQRVN0YXRlKSB7CiAgICAg
ICAgIGlmIChjYyA9PSAnPicpCiAgICAgICAgICAgICBFTUlUX0FORF9SRVNVTUVfSU4oRGF0YVN0
YXRlKTsKKyAgICAgICAgZWxzZSBpZiAoY2MgPT0gSW5wdXRTdHJlYW1QcmVwcm9jZXNzb3I6OmVu
ZE9mRmlsZU1hcmtlcikKKyAgICAgICAgICAgIEVNSVRfQU5EX1JFQ09OU1VNRV9JTihEYXRhU3Rh
dGUpOwogICAgICAgICBBRFZBTkNFX1RPKEJvZ3VzRE9DVFlQRVN0YXRlKTsKLSAgICAgICAgLy8g
RklYTUU6IEhhbmRsZSBFT0YgcHJvcGVybHkuCiAgICAgfQogICAgIEVORF9TVEFURSgpCiAKICAg
ICBCRUdJTl9TVEFURShDREFUQVNlY3Rpb25TdGF0ZSkgewogICAgICAgICBub3RJbXBsZW1lbnRl
ZCgpOwogICAgICAgICBBRFZBTkNFX1RPKENEQVRBU2VjdGlvblN0YXRlKTsKKyAgICAgICAgLy8g
RklYTUU6IEhhbmRsZSBFT0YgcHJvcGVybHkuCiAgICAgfQogICAgIEVORF9TVEFURSgpCiAKQEAg
LTE0ODQsNiArMTYxNywxMyBAQCBpbmxpbmUgdm9pZCBIVE1MVG9rZW5pemVyOjplbWl0Q3VycmVu
dFRva2VuKCkKICAgICAgICAgbV9hcHByb3ByaWF0ZUVuZFRhZ05hbWUgPSBtX3Rva2VuLT5uYW1l
KCk7CiB9CiAKK2lubGluZSB2b2lkIEhUTUxUb2tlbml6ZXI6OmVtaXRFbmRPZkZpbGUoKQorewor
ICAgIC8vIERpc2NhcmQgYW55IGluLXByb2dyZXNzIHRva2VuIGJlZm9yZSBzZXR0aW5nIHVwIGFu
IEVPRiB0b2tlbi4KKyAgICBtX3Rva2VuLT5jbGVhcigpOworICAgIG1fdG9rZW4tPm1ha2VFbmRP
ZkZpbGUoKTsKK30KKwogaW5saW5lIGJvb2wgSFRNTFRva2VuaXplcjo6c2hvdWxkRW1pdEJ1ZmZl
cmVkQ2hhcmFjdGVyVG9rZW4oY29uc3QgU2VnbWVudGVkU3RyaW5nJiBzb3VyY2UpCiB7CiAgICAg
cmV0dXJuIHNvdXJjZS5pc0Nsb3NlZCgpICYmIG1fdG9rZW4tPnR5cGUoKSA9PSBIVE1MVG9rZW46
OkNoYXJhY3RlcjsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MVG9rZW5pemVyLmggYi9X
ZWJDb3JlL2h0bWwvSFRNTFRva2VuaXplci5oCmluZGV4IGMyZTUyYWIyMDZlNWYwYjg0NTlkYWYy
MGY0ZTY3MzgzMzc0N2U0ZDkuLmZmODcyODQ5YTkyMTZmMWU3Mzc1MmIwMzRkOGFlYTMwOWE2ZWVh
MWMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MVG9rZW5pemVyLmgKKysrIGIvV2ViQ29y
ZS9odG1sL0hUTUxUb2tlbml6ZXIuaApAQCAtMTY0LDcgKzE2NCw3IEBAIHByaXZhdGU6CiAgICAg
ICAgICAgICAgICAgLy8gYSBudW1iZXIgb2Ygc3BlY2lmaWMgY2hhcmFjdGVyIHZhbHVlcyBhcmUg
cGFyc2UgZXJyb3JzIGFuZCBzaG91bGQgYmUgcmVwbGFjZWQKICAgICAgICAgICAgICAgICAvLyBi
eSB0aGUgcmVwbGFjZW1lbnQgY2hhcmFjdGVyLiBXZSBzdXNwZWN0IHRoaXMgaXMgYSBwcm9ibGVt
IHdpdGggdGhlIHNwZWMgYXMgZG9pbmcKICAgICAgICAgICAgICAgICAvLyB0aGF0IGZpbHRlcmlu
ZyBicmVha3Mgc3Vycm9nYXRlIHBhaXIgaGFuZGxpbmcgYW5kIGNhdXNlcyB1cyBub3QgdG8gbWF0
Y2ggTWluZWZpZWxkLgotICAgICAgICAgICAgICAgIGlmIChtX25leHRJbnB1dENoYXJhY3RlciA9
PSAnXDAnKQorICAgICAgICAgICAgICAgIGlmIChtX25leHRJbnB1dENoYXJhY3RlciA9PSAnXDAn
ICYmICFzaG91bGRUcmVhdE51bGxBc0VuZE9mRmlsZU1hcmtlcihzb3VyY2UpKQogICAgICAgICAg
ICAgICAgICAgICBtX25leHRJbnB1dENoYXJhY3RlciA9IDB4RkZGRDsKICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMTc5LDcgKzE3OSwxNCBAQCBwcml2YXRlOgog
ICAgICAgICAgICAgcmV0dXJuIHBlZWsoc291cmNlLCBsaW5lTnVtYmVyKTsKICAgICAgICAgfQog
CisgICAgICAgIHN0YXRpYyBjb25zdCBVQ2hhciBlbmRPZkZpbGVNYXJrZXI7CisKICAgICBwcml2
YXRlOgorICAgICAgICBib29sIHNob3VsZFRyZWF0TnVsbEFzRW5kT2ZGaWxlTWFya2VyKFNlZ21l
bnRlZFN0cmluZyYgc291cmNlKSBjb25zdAorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4g
c291cmNlLmlzQ2xvc2VkKCkgJiYgc291cmNlLmxlbmd0aCgpID09IDE7CisgICAgICAgIH0KKwog
ICAgICAgICAvLyBodHRwOi8vd3d3LndoYXR3Zy5vcmcvc3BlY3Mvd2ViLWFwcHMvY3VycmVudC13
b3JrLyNuZXh0LWlucHV0LWNoYXJhY3RlcgogICAgICAgICBVQ2hhciBtX25leHRJbnB1dENoYXJh
Y3RlcjsKICAgICAgICAgYm9vbCBtX3NraXBOZXh0TmV3TGluZTsKQEAgLTE4OSw2ICsxOTYsNyBA
QCBwcml2YXRlOgogICAgIGlubGluZSB2b2lkIGVtaXRQYXJzZUVycm9yKCk7CiAgICAgaW5saW5l
IHZvaWQgZW1pdEN1cnJlbnRUb2tlbigpOwogICAgIGlubGluZSB2b2lkIGVtaXRDb2RlUG9pbnQo
dW5zaWduZWQpOworICAgIGlubGluZSB2b2lkIGVtaXRFbmRPZkZpbGUoKTsKIAogICAgIGlubGlu
ZSBib29sIHByb2Nlc3NFbnRpdHkoU2VnbWVudGVkU3RyaW5nJiBzb3VyY2UpOwogCmRpZmYgLS1n
aXQgYS9XZWJDb3JlL2h0bWwvSFRNTFRyZWVCdWlsZGVyLmNwcCBiL1dlYkNvcmUvaHRtbC9IVE1M
VHJlZUJ1aWxkZXIuY3BwCmluZGV4IGMwYzU2N2MyNTYzYWY4NzkyYjRiNzI4NThlYThjNmI4NGNl
YzkzMzMuLmZlMWJkOWNlMDdmNTllMDU3MDk4OGIyNTgzMDNlM2IzMThhZmVhM2MgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvaHRtbC9IVE1MVHJlZUJ1aWxkZXIuY3BwCisrKyBiL1dlYkNvcmUvaHRtbC9I
VE1MVHJlZUJ1aWxkZXIuY3BwCkBAIC0xOTUsNiArMTk1LDkgQEAgdm9pZCBIVE1MVHJlZUJ1aWxk
ZXI6OnBhc3NUb2tlblRvTGVnYWN5UGFyc2VyKEhUTUxUb2tlbiYgdG9rZW4pCiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKKyAgICBpZiAodG9rZW4udHlwZSgpID09IEhUTUxUb2tlbjo6RW5kT2ZG
aWxlKQorICAgICAgICByZXR1cm47CisKICAgICAvLyBGb3Igbm93LCB3ZSB0cmFuc2xhdGUgaW50
byBhbiBvbGQtc3R5bGUgdG9rZW4gZm9yIHRlc3RpbmcuCiAgICAgVG9rZW4gb2xkU3R5bGVUb2tl
bjsKICAgICBBdG9taWNIVE1MVG9rZW4gYXRvbWljVG9rZW4odG9rZW4pOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>60094</attachid>
            <date>2010-06-30 00:59:09 -0700</date>
            <delta_ts>2010-06-30 00:59:09 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-41344-20100630005908.patch</filename>
            <type>text/plain</type>
            <size>36729</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAzMGJmNzNhMGQzNDI5MTY4NjllZGYyNzM3YTMwZjEzZTEzNmRlNGE2Li5hY2ViNGQ3
NzA3ODVmZjk2YjI0ZmRkNjI0ODhhOTBmNTNlMDE5NTBjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDYgKzEsMTggQEAK
KzIwMTAtMDYtMjkgIEVyaWMgU2VpZGVsICA8ZXJpY0B3ZWJraXQub3JnPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IEFkYW0gQmFydGguCisKKyAgICAgICAgSFRNTFRva2VuaXplciBuZWVkcyBFbmRP
ZkZpbGUgc3VwcG9ydAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NDEzNDQKKworICAgICAgICBXZSBub3cgcGFzcyBhbiBhZGRpdGlvbmFsIDYwIHN1YnRl
c3RzIGZvciB0aGUKKyAgICAgICAgaHRtbDVsaWIgdGVzdCBzdWl0ZS4gIEJvby15YS4KKworICAg
ICAgICAqIGh0bWw1bGliL3J1bm5lci1leHBlY3RlZC50eHQ6CisKIDIwMTAtMDYtMjggIEVyaWMg
U2VpZGVsICA8ZXJpY0B3ZWJraXQub3JnPgogCi0gICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorICAgICAgICBSZXZpZXdlZCBieSBBZGFtIEJhcnRoLgogCiAgICAgICAgIFRlYWNo
IEhUTUw1VHJlZUJ1aWxkZXIgaG93IHRvIG1lcmdlIGF0dHJpYnV0ZXMgZnJvbSBleHRyYSBodG1s
L2JvZHkgZWxlbWVudHMKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTQxMzM3CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odG1sNWxpYi9ydW5uZXItZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHRtbDVsaWIvcnVubmVyLWV4cGVjdGVkLnR4dAppbmRl
eCBlNTZhNTY5OWVkNzk0MWI0ZDk1ZDUyZWYzYTdhMzAxM2M2NDk5ZTAwLi5kODkzMGI3ODBiNWRj
ODE4NTAyNGNlOTM0ZGIzY2RiMTRkMjcwMjM5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odG1s
NWxpYi9ydW5uZXItZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2h0bWw1bGliL3J1bm5l
ci1leHBlY3RlZC50eHQKQEAgLTksOCArOSw2IEBAIHJlc291cmNlcy90ZXN0czEuZGF0OgogMzIK
IDMzCiAzNAotMzUKLTM3CiA0MQogNTAKIDUxCkBAIC00MSwyNSArMzksMTQgQEAgcmVzb3VyY2Vz
L3Rlc3RzMi5kYXQ6CiA3CiA4CiA5Ci0xMAogMTEKLTE3Ci0xOAotMTkKLTIwCi0yMQotMjIKLTI5
CiAzMgotMzMKIDM2Ci00MAogNDIKIDQ0CiA0NQogNTMKIDU0Ci01NwogCiByZXNvdXJjZXMvdGVz
dHMzLmRhdDoKIDE2CkBAIC04Myw3ICs3MCw2IEBAIHJlc291cmNlcy90ZXN0czUuZGF0OgogCiBy
ZXNvdXJjZXMvdGVzdHM2LmRhdDoKIDEKLTYKIDgKIDkKIDEwCkBAIC0yMTAsNTggKzE5NiwxMiBA
QCByZXNvdXJjZXMvdGVzdHMxNS5kYXQ6CiAxMwogCiByZXNvdXJjZXMvdGVzdHMxNi5kYXQ6Ci0z
Ci00Ci01Ci02Ci03Ci04Ci05Ci0xMAotMTIKLTEzCi0xNAotMTUKLTE2Ci0xNwotMjUKLTI3Ci0y
OAotNDIKLTQ0Ci00NQotNTYKLTU3Ci01OAogODQKIDg1CiA4NgogODcKIDg4CiA5NAotOTcKLTk4
Ci05OQotMTAwCi0xMDEKLTEwMgotMTAzCi0xMDQKLTEwNgotMTA3Ci0xMDgKLTEwOQotMTEwCi0x
MTEKLTExOQotMTIxCi0xMjIKLTEzNgotMTM4Ci0xMzkKLTE0OAotMTQ5Ci0xNTAKIDE3NgogMTc3
CiAxNzgKZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cK
aW5kZXggYjQ2MWQ2YjlkNDRmYzQ3MmVkMjI2NTU2YzEyMmJmYWQ0M2JmNzA4Zi4uOWE3NzliMmM5
NjEyYjVhMGYwMWRjZWQ4NzRkNzBjNmFhMDhhODg0MCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFu
Z2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsNiArMSw0MCBAQAorMjAxMC0wNi0y
OSAgRXJpYyBTZWlkZWwgIDxlcmljQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
QWRhbSBCYXJ0aC4KKworICAgICAgICBIVE1MVG9rZW5pemVyIG5lZWRzIEVuZE9mRmlsZSBzdXBw
b3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MTM0
NAorCisgICAgICAgIFdlJ3JlIHVzaW5nIFwwIGFzIHRoZSBFbmRPZkZpbGUgbWFya2VyIGFzIEhU
TUw1IHJlcGxhY2VzCisgICAgICAgIGFsbCBvdGhlciBcMCB3aXRoIFwweEZGRkQuICBBZGRlZCBz
b21lIHNwZWNpYWwgY2FzZSBsb2dpYworICAgICAgICB0byBJbnB1dFN0cmVhbVByZXByb2Nlc3Nv
cjo6cGVlayBub3QgdG8gcmVwbGFjZSBcMCB3aGVuCisgICAgICAgIGl0cyBiZWluZyB1c2VkIGF0
IHRoZSBlbmQgb2YgYSBzdHJlYW0uCisKKyAgICAgICAgVGhpcyBmaXhlZCA2MCBzdWJ0ZXN0cyBp
biBodG1sNWxpYi9ydW5uZXIuaHRtbC4KKworICAgICAgICBUaGVyZSBhcmUgc3RpbGwgYXQgbGVh
c3QgdHdvIHN0YXRlcyAoQm9ndXNDb21tZW50U3RhdGUgYW5kCisgICAgICAgIENEQVRBU2VjdGlv
blN0YXRlKSB3aGljaCBkbyBub3QgaGF2ZSBwcm9wZXIgRU9GIHN1cHBvcnQuCisKKyAgICAgICAg
KiBodG1sL0hUTUxEb2N1bWVudFBhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRG9j
dW1lbnRQYXJzZXI6OmZpbmlzaCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRG9jdW1lbnRQYXJz
ZXI6OmZpbmlzaFdhc0NhbGxlZCk6CisgICAgICAgICogaHRtbC9IVE1MSW5wdXRTdHJlYW0uaDoK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dFN0cmVhbTo6bWFya0VuZE9mRmlsZSk6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MSW5wdXRTdHJlYW06OmhhdmVTZWVuRW5kT2ZGaWxlKToKKyAgICAg
ICAgKiBodG1sL0hUTUxUb2tlbi5oOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRva2VuOjptYWtl
RW5kT2ZGaWxlKToKKyAgICAgICAgKiBodG1sL0hUTUxUb2tlbml6ZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTFRva2VuaXplcjo6bmV4dFRva2VuKToKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxUb2tlbml6ZXI6OmVtaXRFbmRPZkZpbGUpOgorICAgICAgICAqIGh0bWwvSFRNTFRva2VuaXpl
ci5oOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRva2VuaXplcjo6SW5wdXRTdHJlYW1QcmVwcm9j
ZXNzb3I6OnBlZWspOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRva2VuaXplcjo6SW5wdXRTdHJl
YW1QcmVwcm9jZXNzb3I6OnNob3VsZFRyZWF0TnVsbEFzRW5kT2ZGaWxlTWFya2VyKToKKyAgICAg
ICAgKiBodG1sL0hUTUxUcmVlQnVpbGRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJl
ZUJ1aWxkZXI6OnBhc3NUb2tlblRvTGVnYWN5UGFyc2VyKToKKwogMjAxMC0wNi0yOCAgRXJpYyBT
ZWlkZWwgIDxlcmljQHdlYmtpdC5vcmc+CiAKLSAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisgICAgICAgIFJldmlld2VkIGJ5IEFkYW0gQmFydGguCiAKICAgICAgICAgVGVhY2gg
SFRNTDVUcmVlQnVpbGRlciBob3cgdG8gbWVyZ2UgYXR0cmlidXRlcyBmcm9tIGV4dHJhIGh0bWwv
Ym9keSBlbGVtZW50cwogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NDEzMzcKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MRG9jdW1lbnRQYXJzZXIu
Y3BwIGIvV2ViQ29yZS9odG1sL0hUTUxEb2N1bWVudFBhcnNlci5jcHAKaW5kZXggNTgxZTc4ZWNh
MDU0NzdkOWY0YWI3M2JlZWJlZDJmY2UyZDhmN2ZhYS4uZjM2NzkxNWIxNzhlY2FiMGJjNjYyOTNj
YTc3NTI1NzJhNDJlMWM4NCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUxEb2N1bWVudFBh
cnNlci5jcHAKKysrIGIvV2ViQ29yZS9odG1sL0hUTUxEb2N1bWVudFBhcnNlci5jcHAKQEAgLTI4
OSwxNSArMjg5LDE1IEBAIHZvaWQgSFRNTERvY3VtZW50UGFyc2VyOjplbmRJZkRlbGF5ZWQoKQog
CiB2b2lkIEhUTUxEb2N1bWVudFBhcnNlcjo6ZmluaXNoKCkKIHsKLSAgICAvLyBXZSdyZSBub3Qg
Z29pbmcgdG8gZ2V0IGFueSBtb3JlIGRhdGEgb2ZmIHRoZSBuZXR3b3JrLCBzbyB3ZSBjbG9zZSB0
aGUKLSAgICAvLyBpbnB1dCBzdHJlYW0gdG8gaW5kaWNhdGUgRU9GLgotICAgIG1faW5wdXQuY2xv
c2UoKTsKKyAgICAvLyBXZSdyZSBub3QgZ29pbmcgdG8gZ2V0IGFueSBtb3JlIGRhdGEgb2ZmIHRo
ZSBuZXR3b3JrLCBzbyB3ZSB0ZWxsIHRoZQorICAgIC8vIGlucHV0IHN0cmVhbSB3ZSd2ZSByZWFj
aGVkIHRoZSBlbmQgb2YgZmlsZS4KKyAgICBtX2lucHV0Lm1hcmtFbmRPZkZpbGUoKTsKICAgICBh
dHRlbXB0VG9FbmQoKTsKIH0KIAogYm9vbCBIVE1MRG9jdW1lbnRQYXJzZXI6OmZpbmlzaFdhc0Nh
bGxlZCgpCiB7Ci0gICAgcmV0dXJuIG1faW5wdXQuaXNDbG9zZWQoKTsKKyAgICByZXR1cm4gbV9p
bnB1dC5oYXZlU2VlbkVuZE9mRmlsZSgpOwogfQogCiAvLyBUaGlzIGZ1bmN0aW9uIGlzIHZpcnR1
YWwgYW5kIGp1c3QgZm9yIHRoZSBEb2N1bWVudFBhcnNlciBpbnRlcmZhY2UuCmRpZmYgLS1naXQg
YS9XZWJDb3JlL2h0bWwvSFRNTElucHV0U3RyZWFtLmggYi9XZWJDb3JlL2h0bWwvSFRNTElucHV0
U3RyZWFtLmgKaW5kZXggOTYyMDM4ODQyMDZhM2U3MWI2MjZkYjE2YTc3MmI3ZGJhNmNlYzBiMC4u
ZDdjMWM5Y2I3YTVmNzI3ODQ3MGFmMzg2YjZlZWQwYmU4MzFjOGExYSAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9odG1sL0hUTUxJbnB1dFN0cmVhbS5oCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRT
dHJlYW0uaApAQCAtNjQsOCArNjQsMTkgQEAgcHVibGljOgogICAgICAgICBtX2ZpcnN0LmFwcGVu
ZChzdHJpbmcpOwogICAgIH0KIAotICAgIHZvaWQgY2xvc2UoKSB7IG1fbGFzdC0+Y2xvc2UoKTsg
fQotICAgIGJvb2wgaXNDbG9zZWQoKSB7IHJldHVybiBtX2xhc3QtPmlzQ2xvc2VkKCk7IH0KKyAg
ICB2b2lkIG1hcmtFbmRPZkZpbGUoKQorICAgIHsKKyAgICAgICAgLy8gRklYTUU6IFRoaXMgc2hv
dWxkIHVzZSBJbnB1dFN0cmVhbVByZXByb2Nlc3Nvcjo6ZW5kT2ZGaWxlTWFya2VyCisgICAgICAg
IC8vIG9uY2UgSW5wdXRTdHJlYW1QcmVwcm9jZXNzb3IgaXMgc3BsaXQgb2ZmIGludG8gaXRzIG93
biBoZWFkZXIuCisgICAgICAgIHN0YXRpYyBjb25zdCBVQ2hhciBlbmRPZkZpbGVNYXJrZXIgPSAw
OworICAgICAgICBtX2xhc3QtPmFwcGVuZChTZWdtZW50ZWRTdHJpbmcoU3RyaW5nKCZlbmRPZkZp
bGVNYXJrZXIsIDEpKSk7CisgICAgICAgIG1fbGFzdC0+Y2xvc2UoKTsKKyAgICB9CisKKyAgICBi
b29sIGhhdmVTZWVuRW5kT2ZGaWxlKCkKKyAgICB7CisgICAgICAgIHJldHVybiBtX2xhc3QtPmlz
Q2xvc2VkKCk7CisgICAgfQogCiAgICAgU2VnbWVudGVkU3RyaW5nJiBjdXJyZW50KCkgeyByZXR1
cm4gbV9maXJzdDsgfQogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTFRva2VuLmggYi9X
ZWJDb3JlL2h0bWwvSFRNTFRva2VuLmgKaW5kZXggMWI1YTc5ZGU2MDFlMWJiNjViODhhMzRkZmI4
NzM2ZGIyMzAyNjkxMy4uZThhMTlmOGY0YjgyNjVkM2UyODlmMjYwZTEyMTYxMDM3NjJkNzU3YiAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUxUb2tlbi5oCisrKyBiL1dlYkNvcmUvaHRtbC9I
VE1MVG9rZW4uaApAQCAtNjAsNiArNjAsMTIgQEAgcHVibGljOgogICAgICAgICBtX3R5cGUgPSBV
bmluaXRpYWxpemVkOwogICAgIH0KIAorICAgIHZvaWQgbWFrZUVuZE9mRmlsZSgpCisgICAgewor
ICAgICAgICBBU1NFUlQobV90eXBlID09IFVuaW5pdGlhbGl6ZWQpOworICAgICAgICBtX3R5cGUg
PSBFbmRPZkZpbGU7CisgICAgfQorCiAgICAgdm9pZCBiZWdpblN0YXJ0VGFnKFVDaGFyIGNoYXJh
Y3RlcikKICAgICB7CiAgICAgICAgIEFTU0VSVChtX3R5cGUgPT0gVW5pbml0aWFsaXplZCk7CmRp
ZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTFRva2VuaXplci5jcHAgYi9XZWJDb3JlL2h0bWwv
SFRNTFRva2VuaXplci5jcHAKaW5kZXggODQ4OTRmZmZiMGM1NjhjYWVmZjY1MmI1NTVmZjMyNTc5
MDg5NDM2ZC4uMDU0OGQxZDIwZDBkN2RhMzM5YjhlMzU1ZmU1ZWMyZDQyODBkNzQ4ZCAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9odG1sL0hUTUxUb2tlbml6ZXIuY3BwCisrKyBiL1dlYkNvcmUvaHRtbC9I
VE1MVG9rZW5pemVyLmNwcApAQCAtNDQsNiArNDQsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKK2NvbnN0IFVDaGFyIEhUTUxUb2tlbml6ZXI6
OklucHV0U3RyZWFtUHJlcHJvY2Vzc29yOjplbmRPZkZpbGVNYXJrZXIgPSAwOworCiBuYW1lc3Bh
Y2UgewogCiBpbmxpbmUgVUNoYXIgdG9Mb3dlckNhc2UoVUNoYXIgY2MpCkBAIC0xNzIsNiArMTc0
LDI2IEBAIGlubGluZSBib29sIEhUTUxUb2tlbml6ZXI6OnByb2Nlc3NFbnRpdHkoU2VnbWVudGVk
U3RyaW5nJiBzb3VyY2UpCiAgICAgICAgIHJldHVybiB0cnVlOyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgfSB3aGlsZSAoZmFsc2Up
CiAKKy8vIElkZW50aWNhbCB0byBFTUlUX0FORF9SRVNVTUVfSU4sIGV4Y2VwdCBkb2VzIG5vdCBh
ZHZhbmNlLgorI2RlZmluZSBFTUlUX0FORF9SRUNPTlNVTUVfSU4oc3RhdGVOYW1lKSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGRvIHsgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAg
ICBtX3N0YXRlID0gc3RhdGVOYW1lOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXAorICAgICAgICBlbWl0Q3VycmVudFRva2VuKCk7ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICByZXR1cm4gdHJ1ZTsg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAor
ICAgIH0gd2hpbGUgKGZhbHNlKQorCisvLyBVc2VkIHRvIGVtaXQgdGhlIEVuZE9mRmlsZSB0b2tl
bi4KKy8vIENoZWNrIGlmIHdlIGhhdmUgYnVmZmVyZWQgY2hhcmFjdGVycyB0byBlbWl0IGZpcnN0
IGJlZm9yZSBlbWl0dGluZyB0aGUgRU9GLgorI2RlZmluZSBFTUlUX0VORF9PRl9GSUxFKCkgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGRvIHsg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAorICAgICAgICBpZiAoc2hvdWxkRW1pdEJ1ZmZlcmVkQ2hhcmFjdGVyVG9rZW4o
c291cmNlKSkgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgcmV0dXJuIHRydWU7
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAg
ICAgICBtX3N0YXRlID0gRGF0YVN0YXRlOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXAorICAgICAgICBzb3VyY2UuYWR2YW5jZShtX2xpbmVOdW1iZXIpOyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBlbWl0RW5kT2ZG
aWxlKCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XAorICAgICAgICByZXR1cm4gdHJ1ZTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gd2hpbGUgKGZhbHNlKQorCiAjZGVmaW5lIF9G
TFVTSF9CVUZGRVJFRF9FTkRfVEFHKCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCiAgICAgZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgIEFTU0VSVChtX3Rva2VuLT50
eXBlKCkgPT0gSFRNTFRva2VuOjpDaGFyYWN0ZXIgfHwgICAgICAgICAgICAgICAgICBcCkBAIC0y
NTIsNyArMjc0LDkgQEAgYm9vbCBIVE1MVG9rZW5pemVyOjpuZXh0VG9rZW4oU2VnbWVudGVkU3Ry
aW5nJiBzb3VyY2UsIEhUTUxUb2tlbiYgdG9rZW4pCiAgICAgICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBBRFZBTkNFX1RPKFRhZ09wZW5TdGF0ZSk7
Ci0gICAgICAgIH0gZWxzZSB7CisgICAgICAgIH0gZWxzZSBpZiAoY2MgPT0gSW5wdXRTdHJlYW1Q
cmVwcm9jZXNzb3I6OmVuZE9mRmlsZU1hcmtlcikKKyAgICAgICAgICAgIEVNSVRfRU5EX09GX0ZJ
TEUoKTsKKyAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBlbWl0Q2hhcmFjdGVyKGNjKTsKICAg
ICAgICAgICAgIEFEVkFOQ0VfVE8oRGF0YVN0YXRlKTsKICAgICAgICAgfQpAQCAtMjcxLDYgKzI5
NSw4IEBAIGJvb2wgSFRNTFRva2VuaXplcjo6bmV4dFRva2VuKFNlZ21lbnRlZFN0cmluZyYgc291
cmNlLCBIVE1MVG9rZW4mIHRva2VuKQogICAgICAgICAgICAgQURWQU5DRV9UTyhDaGFyYWN0ZXJS
ZWZlcmVuY2VJblJDREFUQVN0YXRlKTsKICAgICAgICAgZWxzZSBpZiAoY2MgPT0gJzwnKQogICAg
ICAgICAgICAgQURWQU5DRV9UTyhSQ0RBVEFMZXNzVGhhblNpZ25TdGF0ZSk7CisgICAgICAgIGVs
c2UgaWYgKGNjID09IElucHV0U3RyZWFtUHJlcHJvY2Vzc29yOjplbmRPZkZpbGVNYXJrZXIpCisg
ICAgICAgICAgICBFTUlUX0VORF9PRl9GSUxFKCk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAg
ICAgZW1pdENoYXJhY3RlcihjYyk7CiAgICAgICAgICAgICBBRFZBTkNFX1RPKFJDREFUQVN0YXRl
KTsKQEAgLTI4OCw2ICszMTQsOCBAQCBib29sIEhUTUxUb2tlbml6ZXI6Om5leHRUb2tlbihTZWdt
ZW50ZWRTdHJpbmcmIHNvdXJjZSwgSFRNTFRva2VuJiB0b2tlbikKICAgICBCRUdJTl9TVEFURShS
QVdURVhUU3RhdGUpIHsKICAgICAgICAgaWYgKGNjID09ICc8JykKICAgICAgICAgICAgIEFEVkFO
Q0VfVE8oUkFXVEVYVExlc3NUaGFuU2lnblN0YXRlKTsKKyAgICAgICAgZWxzZSBpZiAoY2MgPT0g
SW5wdXRTdHJlYW1QcmVwcm9jZXNzb3I6OmVuZE9mRmlsZU1hcmtlcikKKyAgICAgICAgICAgIEVN
SVRfRU5EX09GX0ZJTEUoKTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBlbWl0Q2hhcmFj
dGVyKGNjKTsKICAgICAgICAgICAgIEFEVkFOQ0VfVE8oUkFXVEVYVFN0YXRlKTsKQEAgLTI5OCw2
ICszMjYsOCBAQCBib29sIEhUTUxUb2tlbml6ZXI6Om5leHRUb2tlbihTZWdtZW50ZWRTdHJpbmcm
IHNvdXJjZSwgSFRNTFRva2VuJiB0b2tlbikKICAgICBCRUdJTl9TVEFURShTY3JpcHREYXRhU3Rh
dGUpIHsKICAgICAgICAgaWYgKGNjID09ICc8JykKICAgICAgICAgICAgIEFEVkFOQ0VfVE8oU2Ny
aXB0RGF0YUxlc3NUaGFuU2lnblN0YXRlKTsKKyAgICAgICAgZWxzZSBpZiAoY2MgPT0gSW5wdXRT
dHJlYW1QcmVwcm9jZXNzb3I6OmVuZE9mRmlsZU1hcmtlcikKKyAgICAgICAgICAgIEVNSVRfRU5E
X09GX0ZJTEUoKTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBlbWl0Q2hhcmFjdGVyKGNj
KTsKICAgICAgICAgICAgIEFEVkFOQ0VfVE8oU2NyaXB0RGF0YVN0YXRlKTsKQEAgLTMwNiw3ICsz
MzYsMTAgQEAgYm9vbCBIVE1MVG9rZW5pemVyOjpuZXh0VG9rZW4oU2VnbWVudGVkU3RyaW5nJiBz
b3VyY2UsIEhUTUxUb2tlbiYgdG9rZW4pCiAgICAgRU5EX1NUQVRFKCkKIAogICAgIEJFR0lOX1NU
QVRFKFBMQUlOVEVYVFN0YXRlKSB7Ci0gICAgICAgIGVtaXRDaGFyYWN0ZXIoY2MpOworICAgICAg
ICBpZiAoY2MgPT0gSW5wdXRTdHJlYW1QcmVwcm9jZXNzb3I6OmVuZE9mRmlsZU1hcmtlcikKKyAg
ICAgICAgICAgIEVNSVRfRU5EX09GX0ZJTEUoKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAg
ZW1pdENoYXJhY3RlcihjYyk7CiAgICAgICAgIEFEVkFOQ0VfVE8oUExBSU5URVhUU3RhdGUpOwog
ICAgIH0KICAgICBFTkRfU1RBVEUoKQpAQCAtMzQ2LDExICszNzksMTUgQEAgYm9vbCBIVE1MVG9r
ZW5pemVyOjpuZXh0VG9rZW4oU2VnbWVudGVkU3RyaW5nJiBzb3VyY2UsIEhUTUxUb2tlbiYgdG9r
ZW4pCiAgICAgICAgIH0gZWxzZSBpZiAoY2MgPT0gJz4nKSB7CiAgICAgICAgICAgICBlbWl0UGFy
c2VFcnJvcigpOwogICAgICAgICAgICAgQURWQU5DRV9UTyhEYXRhU3RhdGUpOworICAgICAgICB9
IGVsc2UgaWYgKGNjID09IElucHV0U3RyZWFtUHJlcHJvY2Vzc29yOjplbmRPZkZpbGVNYXJrZXIp
IHsKKyAgICAgICAgICAgIGVtaXRQYXJzZUVycm9yKCk7CisgICAgICAgICAgICBlbWl0Q2hhcmFj
dGVyKCc8Jyk7CisgICAgICAgICAgICBlbWl0Q2hhcmFjdGVyKCcvJyk7CisgICAgICAgICAgICBS
RUNPTlNVTUVfSU4oRGF0YVN0YXRlKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGVt
aXRQYXJzZUVycm9yKCk7CiAgICAgICAgICAgICBSRUNPTlNVTUVfSU4oQm9ndXNDb21tZW50U3Rh
dGUpOwogICAgICAgICB9Ci0gICAgICAgIC8vIEZJWE1FOiBIYW5kbGUgRU9GIHByb3Blcmx5Lgog
ICAgIH0KICAgICBFTkRfU1RBVEUoKQogCkBAIC0zNjQsMTEgKzQwMSwxMyBAQCBib29sIEhUTUxU
b2tlbml6ZXI6Om5leHRUb2tlbihTZWdtZW50ZWRTdHJpbmcmIHNvdXJjZSwgSFRNTFRva2VuJiB0
b2tlbikKICAgICAgICAgZWxzZSBpZiAoY2MgPj0gJ0EnICYmIGNjIDw9ICdaJykgewogICAgICAg
ICAgICAgbV90b2tlbi0+YXBwZW5kVG9OYW1lKHRvTG93ZXJDYXNlKGNjKSk7CiAgICAgICAgICAg
ICBBRFZBTkNFX1RPKFRhZ05hbWVTdGF0ZSk7CisgICAgICAgIH0gaWYgKGNjID09IElucHV0U3Ry
ZWFtUHJlcHJvY2Vzc29yOjplbmRPZkZpbGVNYXJrZXIpIHsKKyAgICAgICAgICAgIGVtaXRQYXJz
ZUVycm9yKCk7CisgICAgICAgICAgICBSRUNPTlNVTUVfSU4oRGF0YVN0YXRlKTsKICAgICAgICAg
fSBlbHNlIHsKICAgICAgICAgICAgIG1fdG9rZW4tPmFwcGVuZFRvTmFtZShjYyk7CiAgICAgICAg
ICAgICBBRFZBTkNFX1RPKFRhZ05hbWVTdGF0ZSk7CiAgICAgICAgIH0KLSAgICAgICAgLy8gRklY
TUU6IEhhbmRsZSBFT0YgcHJvcGVybHkuCiAgICAgfQogICAgIEVORF9TVEFURSgpCiAKQEAgLTU3
NCwxMSArNjEzLDEzIEBAIGJvb2wgSFRNTFRva2VuaXplcjo6bmV4dFRva2VuKFNlZ21lbnRlZFN0
cmluZyYgc291cmNlLCBIVE1MVG9rZW4mIHRva2VuKQogICAgICAgICAgICAgQURWQU5DRV9UTyhT
Y3JpcHREYXRhRXNjYXBlZERhc2hTdGF0ZSk7CiAgICAgICAgIH0gZWxzZSBpZiAoY2MgPT0gJzwn
KQogICAgICAgICAgICAgQURWQU5DRV9UTyhTY3JpcHREYXRhRXNjYXBlZExlc3NUaGFuU2lnblN0
YXRlKTsKLSAgICAgICAgZWxzZSB7CisgICAgICAgIGVsc2UgaWYgKGNjID09IElucHV0U3RyZWFt
UHJlcHJvY2Vzc29yOjplbmRPZkZpbGVNYXJrZXIpIHsKKyAgICAgICAgICAgIGVtaXRQYXJzZUVy
cm9yKCk7CisgICAgICAgICAgICBSRUNPTlNVTUVfSU4oRGF0YVN0YXRlKTsKKyAgICAgICAgfSBl
bHNlIHsKICAgICAgICAgICAgIGVtaXRDaGFyYWN0ZXIoY2MpOwogICAgICAgICAgICAgQURWQU5D
RV9UTyhTY3JpcHREYXRhRXNjYXBlZFN0YXRlKTsKICAgICAgICAgfQotICAgICAgICAvLyBGSVhN
RTogSGFuZGxlIEVPRiBwcm9wZXJseS4KICAgICB9CiAgICAgRU5EX1NUQVRFKCkKIApAQCAtNTg4
LDExICs2MjksMTMgQEAgYm9vbCBIVE1MVG9rZW5pemVyOjpuZXh0VG9rZW4oU2VnbWVudGVkU3Ry
aW5nJiBzb3VyY2UsIEhUTUxUb2tlbiYgdG9rZW4pCiAgICAgICAgICAgICBBRFZBTkNFX1RPKFNj
cmlwdERhdGFFc2NhcGVkRGFzaERhc2hTdGF0ZSk7CiAgICAgICAgIH0gZWxzZSBpZiAoY2MgPT0g
JzwnKQogICAgICAgICAgICAgQURWQU5DRV9UTyhTY3JpcHREYXRhRXNjYXBlZExlc3NUaGFuU2ln
blN0YXRlKTsKLSAgICAgICAgZWxzZSB7CisgICAgICAgIGVsc2UgaWYgKGNjID09IElucHV0U3Ry
ZWFtUHJlcHJvY2Vzc29yOjplbmRPZkZpbGVNYXJrZXIpIHsKKyAgICAgICAgICAgIGVtaXRQYXJz
ZUVycm9yKCk7CisgICAgICAgICAgICBSRUNPTlNVTUVfSU4oRGF0YVN0YXRlKTsKKyAgICAgICAg
fSBlbHNlIHsKICAgICAgICAgICAgIGVtaXRDaGFyYWN0ZXIoY2MpOwogICAgICAgICAgICAgQURW
QU5DRV9UTyhTY3JpcHREYXRhRXNjYXBlZFN0YXRlKTsKICAgICAgICAgfQotICAgICAgICAvLyBG
SVhNRTogSGFuZGxlIEVPRiBwcm9wZXJseS4KICAgICB9CiAgICAgRU5EX1NUQVRFKCkKIApAQCAt
NjA1LDExICs2NDgsMTMgQEAgYm9vbCBIVE1MVG9rZW5pemVyOjpuZXh0VG9rZW4oU2VnbWVudGVk
U3RyaW5nJiBzb3VyY2UsIEhUTUxUb2tlbiYgdG9rZW4pCiAgICAgICAgIGVsc2UgaWYgKGNjID09
ICc+JykgewogICAgICAgICAgICAgZW1pdENoYXJhY3RlcihjYyk7CiAgICAgICAgICAgICBBRFZB
TkNFX1RPKFNjcmlwdERhdGFTdGF0ZSk7CisgICAgICAgIH0gaWYgKGNjID09IElucHV0U3RyZWFt
UHJlcHJvY2Vzc29yOjplbmRPZkZpbGVNYXJrZXIpIHsKKyAgICAgICAgICAgIGVtaXRQYXJzZUVy
cm9yKCk7CisgICAgICAgICAgICBSRUNPTlNVTUVfSU4oRGF0YVN0YXRlKTsKICAgICAgICAgfSBl
bHNlIHsKICAgICAgICAgICAgIGVtaXRDaGFyYWN0ZXIoY2MpOwogICAgICAgICAgICAgQURWQU5D
RV9UTyhTY3JpcHREYXRhRXNjYXBlZFN0YXRlKTsKICAgICAgICAgfQotICAgICAgICAvLyBGSVhN
RTogSGFuZGxlIEVPRiBwcm9wZXJseS4KICAgICB9CiAgICAgRU5EX1NUQVRFKCkKIApAQCAtNzEw
LDExICs3NTUsMTMgQEAgYm9vbCBIVE1MVG9rZW5pemVyOjpuZXh0VG9rZW4oU2VnbWVudGVkU3Ry
aW5nJiBzb3VyY2UsIEhUTUxUb2tlbiYgdG9rZW4pCiAgICAgICAgIH0gZWxzZSBpZiAoY2MgPT0g
JzwnKSB7CiAgICAgICAgICAgICBlbWl0Q2hhcmFjdGVyKGNjKTsKICAgICAgICAgICAgIEFEVkFO
Q0VfVE8oU2NyaXB0RGF0YURvdWJsZUVzY2FwZWRMZXNzVGhhblNpZ25TdGF0ZSk7CisgICAgICAg
IH0gZWxzZSBpZiAoY2MgPT0gSW5wdXRTdHJlYW1QcmVwcm9jZXNzb3I6OmVuZE9mRmlsZU1hcmtl
cikgeworICAgICAgICAgICAgZW1pdFBhcnNlRXJyb3IoKTsKKyAgICAgICAgICAgIFJFQ09OU1VN
RV9JTihEYXRhU3RhdGUpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgZW1pdENoYXJh
Y3RlcihjYyk7CiAgICAgICAgICAgICBBRFZBTkNFX1RPKFNjcmlwdERhdGFEb3VibGVFc2NhcGVk
U3RhdGUpOwogICAgICAgICB9Ci0gICAgICAgIC8vIEZJWE1FOiBIYW5kbGUgRU9GIHByb3Blcmx5
LgogICAgIH0KICAgICBFTkRfU1RBVEUoKQogCkBAIC03MjUsMTEgKzc3MiwxMyBAQCBib29sIEhU
TUxUb2tlbml6ZXI6Om5leHRUb2tlbihTZWdtZW50ZWRTdHJpbmcmIHNvdXJjZSwgSFRNTFRva2Vu
JiB0b2tlbikKICAgICAgICAgfSBlbHNlIGlmIChjYyA9PSAnPCcpIHsKICAgICAgICAgICAgIGVt
aXRDaGFyYWN0ZXIoY2MpOwogICAgICAgICAgICAgQURWQU5DRV9UTyhTY3JpcHREYXRhRG91Ymxl
RXNjYXBlZExlc3NUaGFuU2lnblN0YXRlKTsKKyAgICAgICAgfSBlbHNlIGlmIChjYyA9PSBJbnB1
dFN0cmVhbVByZXByb2Nlc3Nvcjo6ZW5kT2ZGaWxlTWFya2VyKSB7CisgICAgICAgICAgICBlbWl0
UGFyc2VFcnJvcigpOworICAgICAgICAgICAgUkVDT05TVU1FX0lOKERhdGFTdGF0ZSk7CiAgICAg
ICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBlbWl0Q2hhcmFjdGVyKGNjKTsKICAgICAgICAgICAg
IEFEVkFOQ0VfVE8oU2NyaXB0RGF0YURvdWJsZUVzY2FwZWRTdGF0ZSk7CiAgICAgICAgIH0KLSAg
ICAgICAgLy8gRklYTUU6IEhhbmRsZSBFT0YgcHJvcGVybHkuCiAgICAgfQogICAgIEVORF9TVEFU
RSgpCiAKQEAgLTc0MywxMSArNzkyLDEzIEBAIGJvb2wgSFRNTFRva2VuaXplcjo6bmV4dFRva2Vu
KFNlZ21lbnRlZFN0cmluZyYgc291cmNlLCBIVE1MVG9rZW4mIHRva2VuKQogICAgICAgICB9IGVs
c2UgaWYgKGNjID09ICc+JykgewogICAgICAgICAgICAgZW1pdENoYXJhY3RlcihjYyk7CiAgICAg
ICAgICAgICBBRFZBTkNFX1RPKFNjcmlwdERhdGFTdGF0ZSk7CisgICAgICAgIH0gZWxzZSBpZiAo
Y2MgPT0gSW5wdXRTdHJlYW1QcmVwcm9jZXNzb3I6OmVuZE9mRmlsZU1hcmtlcikgeworICAgICAg
ICAgICAgZW1pdFBhcnNlRXJyb3IoKTsKKyAgICAgICAgICAgIFJFQ09OU1VNRV9JTihEYXRhU3Rh
dGUpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgZW1pdENoYXJhY3RlcihjYyk7CiAg
ICAgICAgICAgICBBRFZBTkNFX1RPKFNjcmlwdERhdGFEb3VibGVFc2NhcGVkU3RhdGUpOwogICAg
ICAgICB9Ci0gICAgICAgIC8vIEZJWE1FOiBIYW5kbGUgRU9GIHByb3Blcmx5LgogICAgIH0KICAg
ICBFTkRfU1RBVEUoKQogCkBAIC03OTIsNiArODQzLDkgQEAgYm9vbCBIVE1MVG9rZW5pemVyOjpu
ZXh0VG9rZW4oU2VnbWVudGVkU3RyaW5nJiBzb3VyY2UsIEhUTUxUb2tlbiYgdG9rZW4pCiAgICAg
ICAgICAgICBtX3Rva2VuLT5hZGROZXdBdHRyaWJ1dGUoKTsKICAgICAgICAgICAgIG1fdG9rZW4t
PmFwcGVuZFRvQXR0cmlidXRlTmFtZSh0b0xvd2VyQ2FzZShjYykpOwogICAgICAgICAgICAgQURW
QU5DRV9UTyhBdHRyaWJ1dGVOYW1lU3RhdGUpOworICAgICAgICB9IGVsc2UgaWYgKGNjID09IElu
cHV0U3RyZWFtUHJlcHJvY2Vzc29yOjplbmRPZkZpbGVNYXJrZXIpIHsKKyAgICAgICAgICAgIGVt
aXRQYXJzZUVycm9yKCk7CisgICAgICAgICAgICBSRUNPTlNVTUVfSU4oRGF0YVN0YXRlKTsKICAg
ICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGlmIChjYyA9PSAnIicgfHwgY2MgPT0gJ1wnJyB8
fCBjYyA9PSAnPCcgfHwgY2MgPT0gJz0nKQogICAgICAgICAgICAgICAgIGVtaXRQYXJzZUVycm9y
KCk7CkBAIC03OTksNyArODUzLDYgQEAgYm9vbCBIVE1MVG9rZW5pemVyOjpuZXh0VG9rZW4oU2Vn
bWVudGVkU3RyaW5nJiBzb3VyY2UsIEhUTUxUb2tlbiYgdG9rZW4pCiAgICAgICAgICAgICBtX3Rv
a2VuLT5hcHBlbmRUb0F0dHJpYnV0ZU5hbWUoY2MpOwogICAgICAgICAgICAgQURWQU5DRV9UTyhB
dHRyaWJ1dGVOYW1lU3RhdGUpOwogICAgICAgICB9Ci0gICAgICAgIC8vIEZJWE1FOiBIYW5kbGUg
RU9GIHByb3Blcmx5LgogICAgIH0KICAgICBFTkRfU1RBVEUoKQogCkBAIC04MTUsMTMgKzg2OCwx
NSBAQCBib29sIEhUTUxUb2tlbml6ZXI6Om5leHRUb2tlbihTZWdtZW50ZWRTdHJpbmcmIHNvdXJj
ZSwgSFRNTFRva2VuJiB0b2tlbikKICAgICAgICAgZWxzZSBpZiAoY2MgPj0gJ0EnICYmIGNjIDw9
ICdaJykgewogICAgICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9BdHRyaWJ1dGVOYW1lKHRvTG93
ZXJDYXNlKGNjKSk7CiAgICAgICAgICAgICBBRFZBTkNFX1RPKEF0dHJpYnV0ZU5hbWVTdGF0ZSk7
CisgICAgICAgIH0gZWxzZSBpZiAoY2MgPT0gSW5wdXRTdHJlYW1QcmVwcm9jZXNzb3I6OmVuZE9m
RmlsZU1hcmtlcikgeworICAgICAgICAgICAgZW1pdFBhcnNlRXJyb3IoKTsKKyAgICAgICAgICAg
IFJFQ09OU1VNRV9JTihEYXRhU3RhdGUpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAg
aWYgKGNjID09ICciJyB8fCBjYyA9PSAnXCcnIHx8IGNjID09ICc8JyB8fCBjYyA9PSAnPScpCiAg
ICAgICAgICAgICAgICAgZW1pdFBhcnNlRXJyb3IoKTsKICAgICAgICAgICAgIG1fdG9rZW4tPmFw
cGVuZFRvQXR0cmlidXRlTmFtZShjYyk7CiAgICAgICAgICAgICBBRFZBTkNFX1RPKEF0dHJpYnV0
ZU5hbWVTdGF0ZSk7CiAgICAgICAgIH0KLSAgICAgICAgLy8gRklYTUU6IEhhbmRsZSBFT0YgcHJv
cGVybHkuCiAgICAgfQogICAgIEVORF9TVEFURSgpCiAKQEAgLTgzOCw2ICs4OTMsOSBAQCBib29s
IEhUTUxUb2tlbml6ZXI6Om5leHRUb2tlbihTZWdtZW50ZWRTdHJpbmcmIHNvdXJjZSwgSFRNTFRv
a2VuJiB0b2tlbikKICAgICAgICAgICAgIG1fdG9rZW4tPmFkZE5ld0F0dHJpYnV0ZSgpOwogICAg
ICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9BdHRyaWJ1dGVOYW1lKHRvTG93ZXJDYXNlKGNjKSk7
CiAgICAgICAgICAgICBBRFZBTkNFX1RPKEF0dHJpYnV0ZU5hbWVTdGF0ZSk7CisgICAgICAgIH0g
ZWxzZSBpZiAoY2MgPT0gSW5wdXRTdHJlYW1QcmVwcm9jZXNzb3I6OmVuZE9mRmlsZU1hcmtlcikg
eworICAgICAgICAgICAgZW1pdFBhcnNlRXJyb3IoKTsKKyAgICAgICAgICAgIFJFQ09OU1VNRV9J
TihEYXRhU3RhdGUpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgaWYgKGNjID09ICci
JyB8fCBjYyA9PSAnXCcnIHx8IGNjID09ICc8JykKICAgICAgICAgICAgICAgICBlbWl0UGFyc2VF
cnJvcigpOwpAQCAtODQ1LDcgKzkwMyw2IEBAIGJvb2wgSFRNTFRva2VuaXplcjo6bmV4dFRva2Vu
KFNlZ21lbnRlZFN0cmluZyYgc291cmNlLCBIVE1MVG9rZW4mIHRva2VuKQogICAgICAgICAgICAg
bV90b2tlbi0+YXBwZW5kVG9BdHRyaWJ1dGVOYW1lKGNjKTsKICAgICAgICAgICAgIEFEVkFOQ0Vf
VE8oQXR0cmlidXRlTmFtZVN0YXRlKTsKICAgICAgICAgfQotICAgICAgICAvLyBGSVhNRTogSGFu
ZGxlIEVPRiBwcm9wZXJseS4KICAgICB9CiAgICAgRU5EX1NUQVRFKCkKIApAQCAtODYxLDYgKzkx
OCw5IEBAIGJvb2wgSFRNTFRva2VuaXplcjo6bmV4dFRva2VuKFNlZ21lbnRlZFN0cmluZyYgc291
cmNlLCBIVE1MVG9rZW4mIHRva2VuKQogICAgICAgICBlbHNlIGlmIChjYyA9PSAnPicpIHsKICAg
ICAgICAgICAgIGVtaXRQYXJzZUVycm9yKCk7CiAgICAgICAgICAgICBFTUlUX0FORF9SRVNVTUVf
SU4oRGF0YVN0YXRlKTsKKyAgICAgICAgfSBlbHNlIGlmIChjYyA9PSBJbnB1dFN0cmVhbVByZXBy
b2Nlc3Nvcjo6ZW5kT2ZGaWxlTWFya2VyKSB7CisgICAgICAgICAgICBlbWl0UGFyc2VFcnJvcigp
OworICAgICAgICAgICAgUkVDT05TVU1FX0lOKERhdGFTdGF0ZSk7CiAgICAgICAgIH0gZWxzZSB7
CiAgICAgICAgICAgICBpZiAoY2MgPT0gJzwnIHx8IGNjID09ICc9JyB8fCBjYyA9PSAnYCcpCiAg
ICAgICAgICAgICAgICAgZW1pdFBhcnNlRXJyb3IoKTsKQEAgLTg3NiwxMSArOTM2LDEzIEBAIGJv
b2wgSFRNTFRva2VuaXplcjo6bmV4dFRva2VuKFNlZ21lbnRlZFN0cmluZyYgc291cmNlLCBIVE1M
VG9rZW4mIHRva2VuKQogICAgICAgICBlbHNlIGlmIChjYyA9PSAnJicpIHsKICAgICAgICAgICAg
IG1fYWRkaXRpb25hbEFsbG93ZWRDaGFyYWN0ZXIgPSAnIic7CiAgICAgICAgICAgICBBRFZBTkNF
X1RPKENoYXJhY3RlclJlZmVyZW5jZUluQXR0cmlidXRlVmFsdWVTdGF0ZSk7CisgICAgICAgIH0g
ZWxzZSBpZiAoY2MgPT0gSW5wdXRTdHJlYW1QcmVwcm9jZXNzb3I6OmVuZE9mRmlsZU1hcmtlcikg
eworICAgICAgICAgICAgZW1pdFBhcnNlRXJyb3IoKTsKKyAgICAgICAgICAgIFJFQ09OU1VNRV9J
TihEYXRhU3RhdGUpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgbV90b2tlbi0+YXBw
ZW5kVG9BdHRyaWJ1dGVWYWx1ZShjYyk7CiAgICAgICAgICAgICBBRFZBTkNFX1RPKEF0dHJpYnV0
ZVZhbHVlRG91YmxlUXVvdGVkU3RhdGUpOwogICAgICAgICB9Ci0gICAgICAgIC8vIEZJWE1FOiBI
YW5kbGUgRU9GIHByb3Blcmx5LgogICAgIH0KICAgICBFTkRfU1RBVEUoKQogCkBAIC04OTAsMTEg
Kzk1MiwxMyBAQCBib29sIEhUTUxUb2tlbml6ZXI6Om5leHRUb2tlbihTZWdtZW50ZWRTdHJpbmcm
IHNvdXJjZSwgSFRNTFRva2VuJiB0b2tlbikKICAgICAgICAgZWxzZSBpZiAoY2MgPT0gJyYnKSB7
CiAgICAgICAgICAgICBtX2FkZGl0aW9uYWxBbGxvd2VkQ2hhcmFjdGVyID0gJ1wnJzsKICAgICAg
ICAgICAgIEFEVkFOQ0VfVE8oQ2hhcmFjdGVyUmVmZXJlbmNlSW5BdHRyaWJ1dGVWYWx1ZVN0YXRl
KTsKKyAgICAgICAgfSBlbHNlIGlmIChjYyA9PSBJbnB1dFN0cmVhbVByZXByb2Nlc3Nvcjo6ZW5k
T2ZGaWxlTWFya2VyKSB7CisgICAgICAgICAgICBlbWl0UGFyc2VFcnJvcigpOworICAgICAgICAg
ICAgUkVDT05TVU1FX0lOKERhdGFTdGF0ZSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAg
ICBtX3Rva2VuLT5hcHBlbmRUb0F0dHJpYnV0ZVZhbHVlKGNjKTsKICAgICAgICAgICAgIEFEVkFO
Q0VfVE8oQXR0cmlidXRlVmFsdWVTaW5nbGVRdW90ZWRTdGF0ZSk7CiAgICAgICAgIH0KLSAgICAg
ICAgLy8gRklYTUU6IEhhbmRsZSBFT0YgcHJvcGVybHkuCiAgICAgfQogICAgIEVORF9TVEFURSgp
CiAKQEAgLTkwNiwxMyArOTcwLDE1IEBAIGJvb2wgSFRNTFRva2VuaXplcjo6bmV4dFRva2VuKFNl
Z21lbnRlZFN0cmluZyYgc291cmNlLCBIVE1MVG9rZW4mIHRva2VuKQogICAgICAgICAgICAgQURW
QU5DRV9UTyhDaGFyYWN0ZXJSZWZlcmVuY2VJbkF0dHJpYnV0ZVZhbHVlU3RhdGUpOwogICAgICAg
ICB9IGVsc2UgaWYgKGNjID09ICc+JykKICAgICAgICAgICAgIEVNSVRfQU5EX1JFU1VNRV9JTihE
YXRhU3RhdGUpOwotICAgICAgICBlbHNlIHsKKyAgICAgICAgZWxzZSBpZiAoY2MgPT0gSW5wdXRT
dHJlYW1QcmVwcm9jZXNzb3I6OmVuZE9mRmlsZU1hcmtlcikgeworICAgICAgICAgICAgZW1pdFBh
cnNlRXJyb3IoKTsKKyAgICAgICAgICAgIFJFQ09OU1VNRV9JTihEYXRhU3RhdGUpOworICAgICAg
ICB9IGVsc2UgewogICAgICAgICAgICAgaWYgKGNjID09ICciJyB8fCBjYyA9PSAnXCcnIHx8IGNj
ID09ICc8JyB8fCBjYyA9PSAnPScgfHwgY2MgPT0gJ2AnKQogICAgICAgICAgICAgICAgIGVtaXRQ
YXJzZUVycm9yKCk7CiAgICAgICAgICAgICBtX3Rva2VuLT5hcHBlbmRUb0F0dHJpYnV0ZVZhbHVl
KGNjKTsKICAgICAgICAgICAgIEFEVkFOQ0VfVE8oQXR0cmlidXRlVmFsdWVVbnF1b3RlZFN0YXRl
KTsKICAgICAgICAgfQotICAgICAgICAvLyBGSVhNRTogSGFuZGxlIEVPRiBwcm9wZXJseS4KICAg
ICB9CiAgICAgRU5EX1NUQVRFKCkKIApAQCAtOTUxLDExICsxMDE3LDEzIEBAIGJvb2wgSFRNTFRv
a2VuaXplcjo6bmV4dFRva2VuKFNlZ21lbnRlZFN0cmluZyYgc291cmNlLCBIVE1MVG9rZW4mIHRv
a2VuKQogICAgICAgICAgICAgQURWQU5DRV9UTyhTZWxmQ2xvc2luZ1N0YXJ0VGFnU3RhdGUpOwog
ICAgICAgICBlbHNlIGlmIChjYyA9PSAnPicpCiAgICAgICAgICAgICBFTUlUX0FORF9SRVNVTUVf
SU4oRGF0YVN0YXRlKTsKLSAgICAgICAgZWxzZSB7CisgICAgICAgIGVsc2UgaWYgKGNjID09IElu
cHV0U3RyZWFtUHJlcHJvY2Vzc29yOjplbmRPZkZpbGVNYXJrZXIpIHsKKyAgICAgICAgICAgIGVt
aXRQYXJzZUVycm9yKCk7CisgICAgICAgICAgICBSRUNPTlNVTUVfSU4oRGF0YVN0YXRlKTsKKyAg
ICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGVtaXRQYXJzZUVycm9yKCk7CiAgICAgICAgICAg
ICBSRUNPTlNVTUVfSU4oQmVmb3JlQXR0cmlidXRlTmFtZVN0YXRlKTsKICAgICAgICAgfQotICAg
ICAgICAvLyBGSVhNRTogSGFuZGxlIEVPRiBwcm9wZXJseS4KICAgICB9CiAgICAgRU5EX1NUQVRF
KCkKIApAQCAtOTYzLDExICsxMDMxLDEzIEBAIGJvb2wgSFRNTFRva2VuaXplcjo6bmV4dFRva2Vu
KFNlZ21lbnRlZFN0cmluZyYgc291cmNlLCBIVE1MVG9rZW4mIHRva2VuKQogICAgICAgICBpZiAo
Y2MgPT0gJz4nKSB7CiAgICAgICAgICAgICBub3RJbXBsZW1lbnRlZCgpOwogICAgICAgICAgICAg
RU1JVF9BTkRfUkVTVU1FX0lOKERhdGFTdGF0ZSk7CisgICAgICAgIH0gZWxzZSBpZiAoY2MgPT0g
SW5wdXRTdHJlYW1QcmVwcm9jZXNzb3I6OmVuZE9mRmlsZU1hcmtlcikgeworICAgICAgICAgICAg
ZW1pdFBhcnNlRXJyb3IoKTsKKyAgICAgICAgICAgIFJFQ09OU1VNRV9JTihEYXRhU3RhdGUpOwog
ICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgZW1pdFBhcnNlRXJyb3IoKTsKICAgICAgICAg
ICAgIFJFQ09OU1VNRV9JTihCZWZvcmVBdHRyaWJ1dGVOYW1lU3RhdGUpOwogICAgICAgICB9Ci0g
ICAgICAgIC8vIEZJWE1FOiBIYW5kbGUgRU9GIHByb3Blcmx5LgogICAgIH0KICAgICBFTkRfU1RB
VEUoKQogCkBAIC0xMDI0LDExICsxMDk0LDEzIEBAIGJvb2wgSFRNTFRva2VuaXplcjo6bmV4dFRv
a2VuKFNlZ21lbnRlZFN0cmluZyYgc291cmNlLCBIVE1MVG9rZW4mIHRva2VuKQogICAgICAgICBl
bHNlIGlmIChjYyA9PSAnPicpIHsKICAgICAgICAgICAgIGVtaXRQYXJzZUVycm9yKCk7CiAgICAg
ICAgICAgICBFTUlUX0FORF9SRVNVTUVfSU4oRGF0YVN0YXRlKTsKKyAgICAgICAgfSBlbHNlIGlm
IChjYyA9PSBJbnB1dFN0cmVhbVByZXByb2Nlc3Nvcjo6ZW5kT2ZGaWxlTWFya2VyKSB7CisgICAg
ICAgICAgICBlbWl0UGFyc2VFcnJvcigpOworICAgICAgICAgICAgRU1JVF9BTkRfUkVDT05TVU1F
X0lOKERhdGFTdGF0ZSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBtX3Rva2VuLT5h
cHBlbmRUb0NvbW1lbnQoY2MpOwogICAgICAgICAgICAgQURWQU5DRV9UTyhDb21tZW50U3RhdGUp
OwogICAgICAgICB9Ci0gICAgICAgIC8vIEZJWE1FOiBIYW5kbGUgRU9GIHByb3Blcmx5LgogICAg
IH0KICAgICBFTkRfU1RBVEUoKQogCkBAIC0xMDM4LDM1ICsxMTEwLDQxIEBAIGJvb2wgSFRNTFRv
a2VuaXplcjo6bmV4dFRva2VuKFNlZ21lbnRlZFN0cmluZyYgc291cmNlLCBIVE1MVG9rZW4mIHRv
a2VuKQogICAgICAgICBlbHNlIGlmIChjYyA9PSAnPicpIHsKICAgICAgICAgICAgIGVtaXRQYXJz
ZUVycm9yKCk7CiAgICAgICAgICAgICBFTUlUX0FORF9SRVNVTUVfSU4oRGF0YVN0YXRlKTsKKyAg
ICAgICAgfSBlbHNlIGlmIChjYyA9PSBJbnB1dFN0cmVhbVByZXByb2Nlc3Nvcjo6ZW5kT2ZGaWxl
TWFya2VyKSB7CisgICAgICAgICAgICBlbWl0UGFyc2VFcnJvcigpOworICAgICAgICAgICAgRU1J
VF9BTkRfUkVDT05TVU1FX0lOKERhdGFTdGF0ZSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAg
ICAgICBtX3Rva2VuLT5hcHBlbmRUb0NvbW1lbnQoJy0nKTsKICAgICAgICAgICAgIG1fdG9rZW4t
PmFwcGVuZFRvQ29tbWVudChjYyk7CiAgICAgICAgICAgICBBRFZBTkNFX1RPKENvbW1lbnRTdGF0
ZSk7CiAgICAgICAgIH0KLSAgICAgICAgLy8gRklYTUU6IEhhbmRsZSBFT0YgcHJvcGVybHkuCiAg
ICAgfQogICAgIEVORF9TVEFURSgpCiAKICAgICBCRUdJTl9TVEFURShDb21tZW50U3RhdGUpIHsK
ICAgICAgICAgaWYgKGNjID09ICctJykKICAgICAgICAgICAgIEFEVkFOQ0VfVE8oQ29tbWVudEVu
ZERhc2hTdGF0ZSk7Ci0gICAgICAgIGVsc2UgeworICAgICAgICBlbHNlIGlmIChjYyA9PSBJbnB1
dFN0cmVhbVByZXByb2Nlc3Nvcjo6ZW5kT2ZGaWxlTWFya2VyKSB7CisgICAgICAgICAgICBlbWl0
UGFyc2VFcnJvcigpOworICAgICAgICAgICAgRU1JVF9BTkRfUkVDT05TVU1FX0lOKERhdGFTdGF0
ZSk7CisgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBtX3Rva2VuLT5hcHBlbmRUb0NvbW1l
bnQoY2MpOwogICAgICAgICAgICAgQURWQU5DRV9UTyhDb21tZW50U3RhdGUpOwogICAgICAgICB9
Ci0gICAgICAgIC8vIEZJWE1FOiBIYW5kbGUgRU9GIHByb3Blcmx5LgogICAgIH0KICAgICBFTkRf
U1RBVEUoKQogCiAgICAgQkVHSU5fU1RBVEUoQ29tbWVudEVuZERhc2hTdGF0ZSkgewogICAgICAg
ICBpZiAoY2MgPT0gJy0nKQogICAgICAgICAgICAgQURWQU5DRV9UTyhDb21tZW50RW5kU3RhdGUp
OwotICAgICAgICBlbHNlIHsKKyAgICAgICAgZWxzZSBpZiAoY2MgPT0gSW5wdXRTdHJlYW1QcmVw
cm9jZXNzb3I6OmVuZE9mRmlsZU1hcmtlcikgeworICAgICAgICAgICAgZW1pdFBhcnNlRXJyb3Io
KTsKKyAgICAgICAgICAgIEVNSVRfQU5EX1JFQ09OU1VNRV9JTihEYXRhU3RhdGUpOworICAgICAg
ICB9IGVsc2UgewogICAgICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9Db21tZW50KCctJyk7CiAg
ICAgICAgICAgICBtX3Rva2VuLT5hcHBlbmRUb0NvbW1lbnQoY2MpOwogICAgICAgICAgICAgQURW
QU5DRV9UTyhDb21tZW50U3RhdGUpOwogICAgICAgICB9Ci0gICAgICAgIC8vIEZJWE1FOiBIYW5k
bGUgRU9GIHByb3Blcmx5LgogICAgIH0KICAgICBFTkRfU1RBVEUoKQogCkBAIC0xMDg3LDYgKzEx
NjUsOSBAQCBib29sIEhUTUxUb2tlbml6ZXI6Om5leHRUb2tlbihTZWdtZW50ZWRTdHJpbmcmIHNv
dXJjZSwgSFRNTFRva2VuJiB0b2tlbikKICAgICAgICAgICAgIG1fdG9rZW4tPmFwcGVuZFRvQ29t
bWVudCgnLScpOwogICAgICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9Db21tZW50KGNjKTsKICAg
ICAgICAgICAgIEFEVkFOQ0VfVE8oQ29tbWVudEVuZFN0YXRlKTsKKyAgICAgICAgfSBlbHNlIGlm
IChjYyA9PSBJbnB1dFN0cmVhbVByZXByb2Nlc3Nvcjo6ZW5kT2ZGaWxlTWFya2VyKSB7CisgICAg
ICAgICAgICBlbWl0UGFyc2VFcnJvcigpOworICAgICAgICAgICAgRU1JVF9BTkRfUkVDT05TVU1F
X0lOKERhdGFTdGF0ZSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBlbWl0UGFyc2VF
cnJvcigpOwogICAgICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9Db21tZW50KCctJyk7CkBAIC0x
MDk0LDcgKzExNzUsNiBAQCBib29sIEhUTUxUb2tlbml6ZXI6Om5leHRUb2tlbihTZWdtZW50ZWRT
dHJpbmcmIHNvdXJjZSwgSFRNTFRva2VuJiB0b2tlbikKICAgICAgICAgICAgIG1fdG9rZW4tPmFw
cGVuZFRvQ29tbWVudChjYyk7CiAgICAgICAgICAgICBBRFZBTkNFX1RPKENvbW1lbnRTdGF0ZSk7
CiAgICAgICAgIH0KLSAgICAgICAgLy8gRklYTUU6IEhhbmRsZSBFT0YgcHJvcGVybHkuCiAgICAg
fQogICAgIEVORF9TVEFURSgpCiAKQEAgLTExMDYsMTQgKzExODYsMTYgQEAgYm9vbCBIVE1MVG9r
ZW5pemVyOjpuZXh0VG9rZW4oU2VnbWVudGVkU3RyaW5nJiBzb3VyY2UsIEhUTUxUb2tlbiYgdG9r
ZW4pCiAgICAgICAgICAgICBBRFZBTkNFX1RPKENvbW1lbnRFbmREYXNoU3RhdGUpOwogICAgICAg
ICB9IGVsc2UgaWYgKGNjID09ICc+JykKICAgICAgICAgICAgIEVNSVRfQU5EX1JFU1VNRV9JTihE
YXRhU3RhdGUpOwotICAgICAgICBlbHNlIHsKKyAgICAgICAgZWxzZSBpZiAoY2MgPT0gSW5wdXRT
dHJlYW1QcmVwcm9jZXNzb3I6OmVuZE9mRmlsZU1hcmtlcikgeworICAgICAgICAgICAgZW1pdFBh
cnNlRXJyb3IoKTsKKyAgICAgICAgICAgIEVNSVRfQU5EX1JFQ09OU1VNRV9JTihEYXRhU3RhdGUp
OworICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9Db21tZW50
KCctJyk7CiAgICAgICAgICAgICBtX3Rva2VuLT5hcHBlbmRUb0NvbW1lbnQoJy0nKTsKICAgICAg
ICAgICAgIG1fdG9rZW4tPmFwcGVuZFRvQ29tbWVudCgnIScpOwogICAgICAgICAgICAgbV90b2tl
bi0+YXBwZW5kVG9Db21tZW50KGNjKTsKICAgICAgICAgICAgIEFEVkFOQ0VfVE8oQ29tbWVudFN0
YXRlKTsKICAgICAgICAgfQotICAgICAgICAvLyBGSVhNRTogSGFuZGxlIEVPRiBwcm9wZXJseS4K
ICAgICB9CiAgICAgRU5EX1NUQVRFKCkKIApAQCAtMTEyNSwyMiArMTIwNywyOCBAQCBib29sIEhU
TUxUb2tlbml6ZXI6Om5leHRUb2tlbihTZWdtZW50ZWRTdHJpbmcmIHNvdXJjZSwgSFRNTFRva2Vu
JiB0b2tlbikKICAgICAgICAgICAgIEFEVkFOQ0VfVE8oQ29tbWVudEVuZERhc2hTdGF0ZSk7CiAg
ICAgICAgIGVsc2UgaWYgKGNjID09ICc+JykKICAgICAgICAgICAgIEVNSVRfQU5EX1JFU1VNRV9J
TihEYXRhU3RhdGUpOwotICAgICAgICBlbHNlIHsKKyAgICAgICAgZWxzZSBpZiAoY2MgPT0gSW5w
dXRTdHJlYW1QcmVwcm9jZXNzb3I6OmVuZE9mRmlsZU1hcmtlcikgeworICAgICAgICAgICAgZW1p
dFBhcnNlRXJyb3IoKTsKKyAgICAgICAgICAgIEVNSVRfQU5EX1JFQ09OU1VNRV9JTihEYXRhU3Rh
dGUpOworICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9Db21t
ZW50KGNjKTsKICAgICAgICAgICAgIEFEVkFOQ0VfVE8oQ29tbWVudFN0YXRlKTsKICAgICAgICAg
fQotICAgICAgICAvLyBGSVhNRTogSGFuZGxlIEVPRiBwcm9wZXJseS4KICAgICB9CiAgICAgRU5E
X1NUQVRFKCkKIAogICAgIEJFR0lOX1NUQVRFKERPQ1RZUEVTdGF0ZSkgewogICAgICAgICBpZiAo
Y2MgPT0gJ1x4MDknIHx8IGNjID09ICdceDBBJyB8fCBjYyA9PSAnXHgwQycgfHwgY2MgPT0gJyAn
KQogICAgICAgICAgICAgQURWQU5DRV9UTyhCZWZvcmVET0NUWVBFTmFtZVN0YXRlKTsKLSAgICAg
ICAgZWxzZSB7CisgICAgICAgIGVsc2UgaWYgKGNjID09IElucHV0U3RyZWFtUHJlcHJvY2Vzc29y
OjplbmRPZkZpbGVNYXJrZXIpIHsKKyAgICAgICAgICAgIGVtaXRQYXJzZUVycm9yKCk7CisgICAg
ICAgICAgICBtX3Rva2VuLT5iZWdpbkRPQ1RZUEUoKTsKKyAgICAgICAgICAgIG1fdG9rZW4tPnNl
dEZvcmNlUXVpcmtzKCk7CisgICAgICAgICAgICBFTUlUX0FORF9SRUNPTlNVTUVfSU4oRGF0YVN0
YXRlKTsKKyAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGVtaXRQYXJzZUVycm9yKCk7CiAg
ICAgICAgICAgICBSRUNPTlNVTUVfSU4oQmVmb3JlRE9DVFlQRU5hbWVTdGF0ZSk7CiAgICAgICAg
IH0KLSAgICAgICAgLy8gRklYTUU6IEhhbmRsZSBFT0YgcHJvcGVybHkuCiAgICAgfQogICAgIEVO
RF9TVEFURSgpCiAKQEAgLTExNTUsMTEgKzEyNDMsMTUgQEAgYm9vbCBIVE1MVG9rZW5pemVyOjpu
ZXh0VG9rZW4oU2VnbWVudGVkU3RyaW5nJiBzb3VyY2UsIEhUTUxUb2tlbiYgdG9rZW4pCiAgICAg
ICAgICAgICBtX3Rva2VuLT5iZWdpbkRPQ1RZUEUoKTsKICAgICAgICAgICAgIG1fdG9rZW4tPnNl
dEZvcmNlUXVpcmtzKCk7CiAgICAgICAgICAgICBFTUlUX0FORF9SRVNVTUVfSU4oRGF0YVN0YXRl
KTsKKyAgICAgICAgfSBlbHNlIGlmIChjYyA9PSBJbnB1dFN0cmVhbVByZXByb2Nlc3Nvcjo6ZW5k
T2ZGaWxlTWFya2VyKSB7CisgICAgICAgICAgICBlbWl0UGFyc2VFcnJvcigpOworICAgICAgICAg
ICAgbV90b2tlbi0+YmVnaW5ET0NUWVBFKCk7CisgICAgICAgICAgICBtX3Rva2VuLT5zZXRGb3Jj
ZVF1aXJrcygpOworICAgICAgICAgICAgRU1JVF9BTkRfUkVDT05TVU1FX0lOKERhdGFTdGF0ZSk7
CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBtX3Rva2VuLT5iZWdpbkRPQ1RZUEUoY2Mp
OwogICAgICAgICAgICAgQURWQU5DRV9UTyhET0NUWVBFTmFtZVN0YXRlKTsKICAgICAgICAgfQot
ICAgICAgICAvLyBGSVhNRTogSGFuZGxlIEVPRiBwcm9wZXJseS4KICAgICB9CiAgICAgRU5EX1NU
QVRFKCkKIApAQCAtMTE3MSwxMSArMTI2MywxNCBAQCBib29sIEhUTUxUb2tlbml6ZXI6Om5leHRU
b2tlbihTZWdtZW50ZWRTdHJpbmcmIHNvdXJjZSwgSFRNTFRva2VuJiB0b2tlbikKICAgICAgICAg
ZWxzZSBpZiAoY2MgPj0gJ0EnICYmIGNjIDw9ICdaJykgewogICAgICAgICAgICAgbV90b2tlbi0+
YXBwZW5kVG9OYW1lKHRvTG93ZXJDYXNlKGNjKSk7CiAgICAgICAgICAgICBBRFZBTkNFX1RPKERP
Q1RZUEVOYW1lU3RhdGUpOworICAgICAgICB9IGVsc2UgaWYgKGNjID09IElucHV0U3RyZWFtUHJl
cHJvY2Vzc29yOjplbmRPZkZpbGVNYXJrZXIpIHsKKyAgICAgICAgICAgIGVtaXRQYXJzZUVycm9y
KCk7CisgICAgICAgICAgICBtX3Rva2VuLT5zZXRGb3JjZVF1aXJrcygpOworICAgICAgICAgICAg
RU1JVF9BTkRfUkVDT05TVU1FX0lOKERhdGFTdGF0ZSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAg
ICAgICAgICBtX3Rva2VuLT5hcHBlbmRUb05hbWUoY2MpOwogICAgICAgICAgICAgQURWQU5DRV9U
TyhET0NUWVBFTmFtZVN0YXRlKTsKICAgICAgICAgfQotICAgICAgICAvLyBGSVhNRTogSGFuZGxl
IEVPRiBwcm9wZXJseS4KICAgICB9CiAgICAgRU5EX1NUQVRFKCkKIApAQCAtMTE4NCw3ICsxMjc5
LDExIEBAIGJvb2wgSFRNTFRva2VuaXplcjo6bmV4dFRva2VuKFNlZ21lbnRlZFN0cmluZyYgc291
cmNlLCBIVE1MVG9rZW4mIHRva2VuKQogICAgICAgICAgICAgQURWQU5DRV9UTyhBZnRlckRPQ1RZ
UEVOYW1lU3RhdGUpOwogICAgICAgICBpZiAoY2MgPT0gJz4nKQogICAgICAgICAgICAgRU1JVF9B
TkRfUkVTVU1FX0lOKERhdGFTdGF0ZSk7Ci0gICAgICAgIGVsc2UgeworICAgICAgICBlbHNlIGlm
IChjYyA9PSBJbnB1dFN0cmVhbVByZXByb2Nlc3Nvcjo6ZW5kT2ZGaWxlTWFya2VyKSB7CisgICAg
ICAgICAgICBlbWl0UGFyc2VFcnJvcigpOworICAgICAgICAgICAgbV90b2tlbi0+c2V0Rm9yY2VR
dWlya3MoKTsKKyAgICAgICAgICAgIEVNSVRfQU5EX1JFQ09OU1VNRV9JTihEYXRhU3RhdGUpOwor
ICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcs
IHB1YmxpY1N0cmluZywgKCJwdWJsaWMiKSk7CiAgICAgICAgICAgICBERUZJTkVfU1RBVElDX0xP
Q0FMKFN0cmluZywgc3lzdGVtU3RyaW5nLCAoInN5c3RlbSIpKTsKICAgICAgICAgICAgIGlmIChj
YyA9PSAnUCcgfHwgY2MgPT0gJ3AnKSB7CkBAIC0xMjA2LDcgKzEzMDUsNiBAQCBib29sIEhUTUxU
b2tlbml6ZXI6Om5leHRUb2tlbihTZWdtZW50ZWRTdHJpbmcmIHNvdXJjZSwgSFRNTFRva2VuJiB0
b2tlbikKICAgICAgICAgICAgIG1fdG9rZW4tPnNldEZvcmNlUXVpcmtzKCk7CiAgICAgICAgICAg
ICBBRFZBTkNFX1RPKEJvZ3VzRE9DVFlQRVN0YXRlKTsKICAgICAgICAgfQotICAgICAgICAvLyBG
SVhNRTogSGFuZGxlIEVPRiBwcm9wZXJseS4KICAgICB9CiAgICAgRU5EX1NUQVRFKCkKIApAQCAt
MTIyNSwxMiArMTMyMywxNSBAQCBib29sIEhUTUxUb2tlbml6ZXI6Om5leHRUb2tlbihTZWdtZW50
ZWRTdHJpbmcmIHNvdXJjZSwgSFRNTFRva2VuJiB0b2tlbikKICAgICAgICAgICAgIGVtaXRQYXJz
ZUVycm9yKCk7CiAgICAgICAgICAgICBtX3Rva2VuLT5zZXRGb3JjZVF1aXJrcygpOwogICAgICAg
ICAgICAgRU1JVF9BTkRfUkVTVU1FX0lOKERhdGFTdGF0ZSk7CisgICAgICAgIH0gZWxzZSBpZiAo
Y2MgPT0gSW5wdXRTdHJlYW1QcmVwcm9jZXNzb3I6OmVuZE9mRmlsZU1hcmtlcikgeworICAgICAg
ICAgICAgZW1pdFBhcnNlRXJyb3IoKTsKKyAgICAgICAgICAgIG1fdG9rZW4tPnNldEZvcmNlUXVp
cmtzKCk7CisgICAgICAgICAgICBFTUlUX0FORF9SRUNPTlNVTUVfSU4oRGF0YVN0YXRlKTsKICAg
ICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGVtaXRQYXJzZUVycm9yKCk7CiAgICAgICAgICAg
ICBtX3Rva2VuLT5zZXRGb3JjZVF1aXJrcygpOwogICAgICAgICAgICAgQURWQU5DRV9UTyhCb2d1
c0RPQ1RZUEVTdGF0ZSk7CiAgICAgICAgIH0KLSAgICAgICAgLy8gRklYTUU6IEhhbmRsZSBFT0Yg
cHJvcGVybHkuCiAgICAgfQogICAgIEVORF9TVEFURSgpCiAKQEAgLTEyNDcsMTIgKzEzNDgsMTUg
QEAgYm9vbCBIVE1MVG9rZW5pemVyOjpuZXh0VG9rZW4oU2VnbWVudGVkU3RyaW5nJiBzb3VyY2Us
IEhUTUxUb2tlbiYgdG9rZW4pCiAgICAgICAgICAgICBlbWl0UGFyc2VFcnJvcigpOwogICAgICAg
ICAgICAgbV90b2tlbi0+c2V0Rm9yY2VRdWlya3MoKTsKICAgICAgICAgICAgIEVNSVRfQU5EX1JF
U1VNRV9JTihEYXRhU3RhdGUpOworICAgICAgICB9IGVsc2UgaWYgKGNjID09IElucHV0U3RyZWFt
UHJlcHJvY2Vzc29yOjplbmRPZkZpbGVNYXJrZXIpIHsKKyAgICAgICAgICAgIGVtaXRQYXJzZUVy
cm9yKCk7CisgICAgICAgICAgICBtX3Rva2VuLT5zZXRGb3JjZVF1aXJrcygpOworICAgICAgICAg
ICAgRU1JVF9BTkRfUkVDT05TVU1FX0lOKERhdGFTdGF0ZSk7CiAgICAgICAgIH0gZWxzZSB7CiAg
ICAgICAgICAgICBlbWl0UGFyc2VFcnJvcigpOwogICAgICAgICAgICAgbV90b2tlbi0+c2V0Rm9y
Y2VRdWlya3MoKTsKICAgICAgICAgICAgIEFEVkFOQ0VfVE8oQm9ndXNET0NUWVBFU3RhdGUpOwog
ICAgICAgICB9Ci0gICAgICAgIC8vIEZJWE1FOiBIYW5kbGUgRU9GIHByb3Blcmx5LgogICAgIH0K
ICAgICBFTkRfU1RBVEUoKQogCkBAIC0xMjYzLDExICsxMzY3LDE0IEBAIGJvb2wgSFRNTFRva2Vu
aXplcjo6bmV4dFRva2VuKFNlZ21lbnRlZFN0cmluZyYgc291cmNlLCBIVE1MVG9rZW4mIHRva2Vu
KQogICAgICAgICAgICAgZW1pdFBhcnNlRXJyb3IoKTsKICAgICAgICAgICAgIG1fdG9rZW4tPnNl
dEZvcmNlUXVpcmtzKCk7CiAgICAgICAgICAgICBFTUlUX0FORF9SRVNVTUVfSU4oRGF0YVN0YXRl
KTsKKyAgICAgICAgfSBlbHNlIGlmIChjYyA9PSBJbnB1dFN0cmVhbVByZXByb2Nlc3Nvcjo6ZW5k
T2ZGaWxlTWFya2VyKSB7CisgICAgICAgICAgICBlbWl0UGFyc2VFcnJvcigpOworICAgICAgICAg
ICAgbV90b2tlbi0+c2V0Rm9yY2VRdWlya3MoKTsKKyAgICAgICAgICAgIEVNSVRfQU5EX1JFQ09O
U1VNRV9JTihEYXRhU3RhdGUpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgbV90b2tl
bi0+YXBwZW5kVG9QdWJsaWNJZGVudGlmaWVyKGNjKTsKICAgICAgICAgICAgIEFEVkFOQ0VfVE8o
RE9DVFlQRVB1YmxpY0lkZW50aWZpZXJEb3VibGVRdW90ZWRTdGF0ZSk7CiAgICAgICAgIH0KLSAg
ICAgICAgLy8gRklYTUU6IEhhbmRsZSBFT0YgcHJvcGVybHkuCiAgICAgfQogICAgIEVORF9TVEFU
RSgpCiAKQEAgLTEyNzgsMTEgKzEzODUsMTQgQEAgYm9vbCBIVE1MVG9rZW5pemVyOjpuZXh0VG9r
ZW4oU2VnbWVudGVkU3RyaW5nJiBzb3VyY2UsIEhUTUxUb2tlbiYgdG9rZW4pCiAgICAgICAgICAg
ICBlbWl0UGFyc2VFcnJvcigpOwogICAgICAgICAgICAgbV90b2tlbi0+c2V0Rm9yY2VRdWlya3Mo
KTsKICAgICAgICAgICAgIEVNSVRfQU5EX1JFU1VNRV9JTihEYXRhU3RhdGUpOworICAgICAgICB9
IGVsc2UgaWYgKGNjID09IElucHV0U3RyZWFtUHJlcHJvY2Vzc29yOjplbmRPZkZpbGVNYXJrZXIp
IHsKKyAgICAgICAgICAgIGVtaXRQYXJzZUVycm9yKCk7CisgICAgICAgICAgICBtX3Rva2VuLT5z
ZXRGb3JjZVF1aXJrcygpOworICAgICAgICAgICAgRU1JVF9BTkRfUkVDT05TVU1FX0lOKERhdGFT
dGF0ZSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBtX3Rva2VuLT5hcHBlbmRUb1B1
YmxpY0lkZW50aWZpZXIoY2MpOwogICAgICAgICAgICAgQURWQU5DRV9UTyhET0NUWVBFUHVibGlj
SWRlbnRpZmllclNpbmdsZVF1b3RlZFN0YXRlKTsKICAgICAgICAgfQotICAgICAgICAvLyBGSVhN
RTogSGFuZGxlIEVPRiBwcm9wZXJseS4KICAgICB9CiAgICAgRU5EX1NUQVRFKCkKIApAQCAtMTI5
OSwxMiArMTQwOSwxNSBAQCBib29sIEhUTUxUb2tlbml6ZXI6Om5leHRUb2tlbihTZWdtZW50ZWRT
dHJpbmcmIHNvdXJjZSwgSFRNTFRva2VuJiB0b2tlbikKICAgICAgICAgICAgIGVtaXRQYXJzZUVy
cm9yKCk7CiAgICAgICAgICAgICBtX3Rva2VuLT5zZXRTeXN0ZW1JZGVudGlmaWVyVG9FbXB0eVN0
cmluZygpOwogICAgICAgICAgICAgQURWQU5DRV9UTyhET0NUWVBFU3lzdGVtSWRlbnRpZmllclNp
bmdsZVF1b3RlZFN0YXRlKTsKKyAgICAgICAgfSBlbHNlIGlmIChjYyA9PSBJbnB1dFN0cmVhbVBy
ZXByb2Nlc3Nvcjo6ZW5kT2ZGaWxlTWFya2VyKSB7CisgICAgICAgICAgICBlbWl0UGFyc2VFcnJv
cigpOworICAgICAgICAgICAgbV90b2tlbi0+c2V0Rm9yY2VRdWlya3MoKTsKKyAgICAgICAgICAg
IEVNSVRfQU5EX1JFQ09OU1VNRV9JTihEYXRhU3RhdGUpOwogICAgICAgICB9IGVsc2UgewogICAg
ICAgICAgICAgZW1pdFBhcnNlRXJyb3IoKTsKICAgICAgICAgICAgIG1fdG9rZW4tPnNldEZvcmNl
UXVpcmtzKCk7CiAgICAgICAgICAgICBBRFZBTkNFX1RPKEJvZ3VzRE9DVFlQRVN0YXRlKTsKICAg
ICAgICAgfQotICAgICAgICAvLyBGSVhNRTogSGFuZGxlIEVPRiBwcm9wZXJseS4KICAgICB9CiAg
ICAgRU5EX1NUQVRFKCkKIApAQCAtMTMxOSwxMiArMTQzMiwxNSBAQCBib29sIEhUTUxUb2tlbml6
ZXI6Om5leHRUb2tlbihTZWdtZW50ZWRTdHJpbmcmIHNvdXJjZSwgSFRNTFRva2VuJiB0b2tlbikK
ICAgICAgICAgfSBlbHNlIGlmIChjYyA9PSAnXCcnKSB7CiAgICAgICAgICAgICBtX3Rva2VuLT5z
ZXRTeXN0ZW1JZGVudGlmaWVyVG9FbXB0eVN0cmluZygpOwogICAgICAgICAgICAgQURWQU5DRV9U
TyhET0NUWVBFU3lzdGVtSWRlbnRpZmllclNpbmdsZVF1b3RlZFN0YXRlKTsKKyAgICAgICAgfSBl
bHNlIGlmIChjYyA9PSBJbnB1dFN0cmVhbVByZXByb2Nlc3Nvcjo6ZW5kT2ZGaWxlTWFya2VyKSB7
CisgICAgICAgICAgICBlbWl0UGFyc2VFcnJvcigpOworICAgICAgICAgICAgbV90b2tlbi0+c2V0
Rm9yY2VRdWlya3MoKTsKKyAgICAgICAgICAgIEVNSVRfQU5EX1JFQ09OU1VNRV9JTihEYXRhU3Rh
dGUpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgZW1pdFBhcnNlRXJyb3IoKTsKICAg
ICAgICAgICAgIG1fdG9rZW4tPnNldEZvcmNlUXVpcmtzKCk7CiAgICAgICAgICAgICBBRFZBTkNF
X1RPKEJvZ3VzRE9DVFlQRVN0YXRlKTsKICAgICAgICAgfQotICAgICAgICAvLyBGSVhNRTogSGFu
ZGxlIEVPRiBwcm9wZXJseS4KICAgICB9CiAgICAgRU5EX1NUQVRFKCkKIApAQCAtMTM0MywxMiAr
MTQ1OSwxNSBAQCBib29sIEhUTUxUb2tlbml6ZXI6Om5leHRUb2tlbihTZWdtZW50ZWRTdHJpbmcm
IHNvdXJjZSwgSFRNTFRva2VuJiB0b2tlbikKICAgICAgICAgICAgIGVtaXRQYXJzZUVycm9yKCk7
CiAgICAgICAgICAgICBtX3Rva2VuLT5zZXRGb3JjZVF1aXJrcygpOwogICAgICAgICAgICAgRU1J
VF9BTkRfUkVTVU1FX0lOKERhdGFTdGF0ZSk7CisgICAgICAgIH0gZWxzZSBpZiAoY2MgPT0gSW5w
dXRTdHJlYW1QcmVwcm9jZXNzb3I6OmVuZE9mRmlsZU1hcmtlcikgeworICAgICAgICAgICAgZW1p
dFBhcnNlRXJyb3IoKTsKKyAgICAgICAgICAgIG1fdG9rZW4tPnNldEZvcmNlUXVpcmtzKCk7Cisg
ICAgICAgICAgICBFTUlUX0FORF9SRUNPTlNVTUVfSU4oRGF0YVN0YXRlKTsKICAgICAgICAgfSBl
bHNlIHsKICAgICAgICAgICAgIGVtaXRQYXJzZUVycm9yKCk7CiAgICAgICAgICAgICBtX3Rva2Vu
LT5zZXRGb3JjZVF1aXJrcygpOwogICAgICAgICAgICAgQURWQU5DRV9UTyhCb2d1c0RPQ1RZUEVT
dGF0ZSk7CiAgICAgICAgIH0KLSAgICAgICAgLy8gRklYTUU6IEhhbmRsZSBFT0YgcHJvcGVybHku
CiAgICAgfQogICAgIEVORF9TVEFURSgpCiAKQEAgLTEzNjUsMTIgKzE0ODQsMTUgQEAgYm9vbCBI
VE1MVG9rZW5pemVyOjpuZXh0VG9rZW4oU2VnbWVudGVkU3RyaW5nJiBzb3VyY2UsIEhUTUxUb2tl
biYgdG9rZW4pCiAgICAgICAgICAgICBlbWl0UGFyc2VFcnJvcigpOwogICAgICAgICAgICAgbV90
b2tlbi0+c2V0Rm9yY2VRdWlya3MoKTsKICAgICAgICAgICAgIEVNSVRfQU5EX1JFU1VNRV9JTihE
YXRhU3RhdGUpOworICAgICAgICB9IGVsc2UgaWYgKGNjID09IElucHV0U3RyZWFtUHJlcHJvY2Vz
c29yOjplbmRPZkZpbGVNYXJrZXIpIHsKKyAgICAgICAgICAgIGVtaXRQYXJzZUVycm9yKCk7Cisg
ICAgICAgICAgICBtX3Rva2VuLT5zZXRGb3JjZVF1aXJrcygpOworICAgICAgICAgICAgRU1JVF9B
TkRfUkVDT05TVU1FX0lOKERhdGFTdGF0ZSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAg
ICBlbWl0UGFyc2VFcnJvcigpOwogICAgICAgICAgICAgbV90b2tlbi0+c2V0Rm9yY2VRdWlya3Mo
KTsKICAgICAgICAgICAgIEFEVkFOQ0VfVE8oQm9ndXNET0NUWVBFU3RhdGUpOwogICAgICAgICB9
Ci0gICAgICAgIC8vIEZJWE1FOiBIYW5kbGUgRU9GIHByb3Blcmx5LgogICAgIH0KICAgICBFTkRf
U1RBVEUoKQogCkBAIC0xMzgxLDExICsxNTAzLDE0IEBAIGJvb2wgSFRNTFRva2VuaXplcjo6bmV4
dFRva2VuKFNlZ21lbnRlZFN0cmluZyYgc291cmNlLCBIVE1MVG9rZW4mIHRva2VuKQogICAgICAg
ICAgICAgZW1pdFBhcnNlRXJyb3IoKTsKICAgICAgICAgICAgIG1fdG9rZW4tPnNldEZvcmNlUXVp
cmtzKCk7CiAgICAgICAgICAgICBFTUlUX0FORF9SRVNVTUVfSU4oRGF0YVN0YXRlKTsKKyAgICAg
ICAgfSBlbHNlIGlmIChjYyA9PSBJbnB1dFN0cmVhbVByZXByb2Nlc3Nvcjo6ZW5kT2ZGaWxlTWFy
a2VyKSB7CisgICAgICAgICAgICBlbWl0UGFyc2VFcnJvcigpOworICAgICAgICAgICAgbV90b2tl
bi0+c2V0Rm9yY2VRdWlya3MoKTsKKyAgICAgICAgICAgIEVNSVRfQU5EX1JFQ09OU1VNRV9JTihE
YXRhU3RhdGUpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgbV90b2tlbi0+YXBwZW5k
VG9TeXN0ZW1JZGVudGlmaWVyKGNjKTsKICAgICAgICAgICAgIEFEVkFOQ0VfVE8oRE9DVFlQRVN5
c3RlbUlkZW50aWZpZXJEb3VibGVRdW90ZWRTdGF0ZSk7CiAgICAgICAgIH0KLSAgICAgICAgLy8g
RklYTUU6IEhhbmRsZSBFT0YgcHJvcGVybHkuCiAgICAgfQogICAgIEVORF9TVEFURSgpCiAKQEAg
LTEzOTYsMTEgKzE1MjEsMTQgQEAgYm9vbCBIVE1MVG9rZW5pemVyOjpuZXh0VG9rZW4oU2VnbWVu
dGVkU3RyaW5nJiBzb3VyY2UsIEhUTUxUb2tlbiYgdG9rZW4pCiAgICAgICAgICAgICBlbWl0UGFy
c2VFcnJvcigpOwogICAgICAgICAgICAgbV90b2tlbi0+c2V0Rm9yY2VRdWlya3MoKTsKICAgICAg
ICAgICAgIEVNSVRfQU5EX1JFU1VNRV9JTihEYXRhU3RhdGUpOworICAgICAgICB9IGVsc2UgaWYg
KGNjID09IElucHV0U3RyZWFtUHJlcHJvY2Vzc29yOjplbmRPZkZpbGVNYXJrZXIpIHsKKyAgICAg
ICAgICAgIGVtaXRQYXJzZUVycm9yKCk7CisgICAgICAgICAgICBtX3Rva2VuLT5zZXRGb3JjZVF1
aXJrcygpOworICAgICAgICAgICAgRU1JVF9BTkRfUkVDT05TVU1FX0lOKERhdGFTdGF0ZSk7CiAg
ICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBtX3Rva2VuLT5hcHBlbmRUb1N5c3RlbUlkZW50
aWZpZXIoY2MpOwogICAgICAgICAgICAgQURWQU5DRV9UTyhET0NUWVBFU3lzdGVtSWRlbnRpZmll
clNpbmdsZVF1b3RlZFN0YXRlKTsKICAgICAgICAgfQotICAgICAgICAvLyBGSVhNRTogSGFuZGxl
IEVPRiBwcm9wZXJseS4KICAgICB9CiAgICAgRU5EX1NUQVRFKCkKIApAQCAtMTQwOSwyNSArMTUz
NywzMCBAQCBib29sIEhUTUxUb2tlbml6ZXI6Om5leHRUb2tlbihTZWdtZW50ZWRTdHJpbmcmIHNv
dXJjZSwgSFRNTFRva2VuJiB0b2tlbikKICAgICAgICAgICAgIEFEVkFOQ0VfVE8oQWZ0ZXJET0NU
WVBFU3lzdGVtSWRlbnRpZmllclN0YXRlKTsKICAgICAgICAgZWxzZSBpZiAoY2MgPT0gJz4nKQog
ICAgICAgICAgICAgRU1JVF9BTkRfUkVTVU1FX0lOKERhdGFTdGF0ZSk7Ci0gICAgICAgIGVsc2Ug
eworICAgICAgICBlbHNlIGlmIChjYyA9PSBJbnB1dFN0cmVhbVByZXByb2Nlc3Nvcjo6ZW5kT2ZG
aWxlTWFya2VyKSB7CisgICAgICAgICAgICBlbWl0UGFyc2VFcnJvcigpOworICAgICAgICAgICAg
bV90b2tlbi0+c2V0Rm9yY2VRdWlya3MoKTsKKyAgICAgICAgICAgIEVNSVRfQU5EX1JFQ09OU1VN
RV9JTihEYXRhU3RhdGUpOworICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgZW1pdFBhcnNl
RXJyb3IoKTsKICAgICAgICAgICAgIEFEVkFOQ0VfVE8oQm9ndXNET0NUWVBFU3RhdGUpOwogICAg
ICAgICB9Ci0gICAgICAgIC8vIEZJWE1FOiBIYW5kbGUgRU9GIHByb3Blcmx5LgogICAgIH0KICAg
ICBFTkRfU1RBVEUoKQogCiAgICAgQkVHSU5fU1RBVEUoQm9ndXNET0NUWVBFU3RhdGUpIHsKICAg
ICAgICAgaWYgKGNjID09ICc+JykKICAgICAgICAgICAgIEVNSVRfQU5EX1JFU1VNRV9JTihEYXRh
U3RhdGUpOworICAgICAgICBlbHNlIGlmIChjYyA9PSBJbnB1dFN0cmVhbVByZXByb2Nlc3Nvcjo6
ZW5kT2ZGaWxlTWFya2VyKQorICAgICAgICAgICAgRU1JVF9BTkRfUkVDT05TVU1FX0lOKERhdGFT
dGF0ZSk7CiAgICAgICAgIEFEVkFOQ0VfVE8oQm9ndXNET0NUWVBFU3RhdGUpOwotICAgICAgICAv
LyBGSVhNRTogSGFuZGxlIEVPRiBwcm9wZXJseS4KICAgICB9CiAgICAgRU5EX1NUQVRFKCkKIAog
ICAgIEJFR0lOX1NUQVRFKENEQVRBU2VjdGlvblN0YXRlKSB7CiAgICAgICAgIG5vdEltcGxlbWVu
dGVkKCk7CiAgICAgICAgIEFEVkFOQ0VfVE8oQ0RBVEFTZWN0aW9uU3RhdGUpOworICAgICAgICAv
LyBGSVhNRTogSGFuZGxlIEVPRiBwcm9wZXJseS4KICAgICB9CiAgICAgRU5EX1NUQVRFKCkKIApA
QCAtMTQ1NSw2ICsxNTg4LDcgQEAgaW5saW5lIGJvb2wgSFRNTFRva2VuaXplcjo6aXNBcHByb3By
aWF0ZUVuZFRhZygpCiAKIGlubGluZSB2b2lkIEhUTUxUb2tlbml6ZXI6OmVtaXRDaGFyYWN0ZXIo
VUNoYXIgY2hhcmFjdGVyKQogeworICAgIEFTU0VSVChjaGFyYWN0ZXIgIT0gSW5wdXRTdHJlYW1Q
cmVwcm9jZXNzb3I6OmVuZE9mRmlsZU1hcmtlcik7CiAgICAgaWYgKG1fdG9rZW4tPnR5cGUoKSAh
PSBIVE1MVG9rZW46OkNoYXJhY3RlcikgewogICAgICAgICBtX3Rva2VuLT5iZWdpbkNoYXJhY3Rl
cihjaGFyYWN0ZXIpOwogICAgICAgICByZXR1cm47CkBAIC0xNDg0LDYgKzE2MTgsMTMgQEAgaW5s
aW5lIHZvaWQgSFRNTFRva2VuaXplcjo6ZW1pdEN1cnJlbnRUb2tlbigpCiAgICAgICAgIG1fYXBw
cm9wcmlhdGVFbmRUYWdOYW1lID0gbV90b2tlbi0+bmFtZSgpOwogfQogCitpbmxpbmUgdm9pZCBI
VE1MVG9rZW5pemVyOjplbWl0RW5kT2ZGaWxlKCkKK3sKKyAgICAvLyBEaXNjYXJkIGFueSBpbi1w
cm9ncmVzcyB0b2tlbiBiZWZvcmUgc2V0dGluZyB1cCBhbiBFT0YgdG9rZW4uCisgICAgbV90b2tl
bi0+Y2xlYXIoKTsKKyAgICBtX3Rva2VuLT5tYWtlRW5kT2ZGaWxlKCk7Cit9CisKIGlubGluZSBi
b29sIEhUTUxUb2tlbml6ZXI6OnNob3VsZEVtaXRCdWZmZXJlZENoYXJhY3RlclRva2VuKGNvbnN0
IFNlZ21lbnRlZFN0cmluZyYgc291cmNlKQogewogICAgIHJldHVybiBzb3VyY2UuaXNDbG9zZWQo
KSAmJiBtX3Rva2VuLT50eXBlKCkgPT0gSFRNTFRva2VuOjpDaGFyYWN0ZXI7CmRpZmYgLS1naXQg
YS9XZWJDb3JlL2h0bWwvSFRNTFRva2VuaXplci5oIGIvV2ViQ29yZS9odG1sL0hUTUxUb2tlbml6
ZXIuaAppbmRleCBjMmU1MmFiMjA2ZTVmMGI4NDU5ZGFmMjBmNGU2NzM4MzM3NDdlNGQ5Li5mZjg3
Mjg0OWE5MjE2ZjFlNzM3NTJiMDM0ZDhhZWEzMDlhNmVlYTFjIDEwMDY0NAotLS0gYS9XZWJDb3Jl
L2h0bWwvSFRNTFRva2VuaXplci5oCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MVG9rZW5pemVyLmgK
QEAgLTE2NCw3ICsxNjQsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIC8vIGEgbnVtYmVy
IG9mIHNwZWNpZmljIGNoYXJhY3RlciB2YWx1ZXMgYXJlIHBhcnNlIGVycm9ycyBhbmQgc2hvdWxk
IGJlIHJlcGxhY2VkCiAgICAgICAgICAgICAgICAgLy8gYnkgdGhlIHJlcGxhY2VtZW50IGNoYXJh
Y3Rlci4gV2Ugc3VzcGVjdCB0aGlzIGlzIGEgcHJvYmxlbSB3aXRoIHRoZSBzcGVjIGFzIGRvaW5n
CiAgICAgICAgICAgICAgICAgLy8gdGhhdCBmaWx0ZXJpbmcgYnJlYWtzIHN1cnJvZ2F0ZSBwYWly
IGhhbmRsaW5nIGFuZCBjYXVzZXMgdXMgbm90IHRvIG1hdGNoIE1pbmVmaWVsZC4KLSAgICAgICAg
ICAgICAgICBpZiAobV9uZXh0SW5wdXRDaGFyYWN0ZXIgPT0gJ1wwJykKKyAgICAgICAgICAgICAg
ICBpZiAobV9uZXh0SW5wdXRDaGFyYWN0ZXIgPT0gJ1wwJyAmJiAhc2hvdWxkVHJlYXROdWxsQXNF
bmRPZkZpbGVNYXJrZXIoc291cmNlKSkKICAgICAgICAgICAgICAgICAgICAgbV9uZXh0SW5wdXRD
aGFyYWN0ZXIgPSAweEZGRkQ7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKQEAgLTE3OSw3ICsxNzksMTQgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHJldHVybiBwZWVr
KHNvdXJjZSwgbGluZU51bWJlcik7CiAgICAgICAgIH0KIAorICAgICAgICBzdGF0aWMgY29uc3Qg
VUNoYXIgZW5kT2ZGaWxlTWFya2VyOworCiAgICAgcHJpdmF0ZToKKyAgICAgICAgYm9vbCBzaG91
bGRUcmVhdE51bGxBc0VuZE9mRmlsZU1hcmtlcihTZWdtZW50ZWRTdHJpbmcmIHNvdXJjZSkgY29u
c3QKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIHNvdXJjZS5pc0Nsb3NlZCgpICYmIHNv
dXJjZS5sZW5ndGgoKSA9PSAxOworICAgICAgICB9CisKICAgICAgICAgLy8gaHR0cDovL3d3dy53
aGF0d2cub3JnL3NwZWNzL3dlYi1hcHBzL2N1cnJlbnQtd29yay8jbmV4dC1pbnB1dC1jaGFyYWN0
ZXIKICAgICAgICAgVUNoYXIgbV9uZXh0SW5wdXRDaGFyYWN0ZXI7CiAgICAgICAgIGJvb2wgbV9z
a2lwTmV4dE5ld0xpbmU7CkBAIC0xODksNiArMTk2LDcgQEAgcHJpdmF0ZToKICAgICBpbmxpbmUg
dm9pZCBlbWl0UGFyc2VFcnJvcigpOwogICAgIGlubGluZSB2b2lkIGVtaXRDdXJyZW50VG9rZW4o
KTsKICAgICBpbmxpbmUgdm9pZCBlbWl0Q29kZVBvaW50KHVuc2lnbmVkKTsKKyAgICBpbmxpbmUg
dm9pZCBlbWl0RW5kT2ZGaWxlKCk7CiAKICAgICBpbmxpbmUgYm9vbCBwcm9jZXNzRW50aXR5KFNl
Z21lbnRlZFN0cmluZyYgc291cmNlKTsKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxU
cmVlQnVpbGRlci5jcHAgYi9XZWJDb3JlL2h0bWwvSFRNTFRyZWVCdWlsZGVyLmNwcAppbmRleCBj
MGM1NjdjMjU2M2FmODc5MmI0YjcyODU4ZWE4YzZiODRjZWM5MzMzLi5mZTFiZDljZTA3ZjU5ZTA1
NzA5ODhiMjU4MzAzZTNiMzE4YWZlYTNjIDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTFRy
ZWVCdWlsZGVyLmNwcAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTFRyZWVCdWlsZGVyLmNwcApAQCAt
MTk1LDYgKzE5NSw5IEBAIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpwYXNzVG9rZW5Ub0xlZ2FjeVBh
cnNlcihIVE1MVG9rZW4mIHRva2VuKQogICAgICAgICByZXR1cm47CiAgICAgfQogCisgICAgaWYg
KHRva2VuLnR5cGUoKSA9PSBIVE1MVG9rZW46OkVuZE9mRmlsZSkKKyAgICAgICAgcmV0dXJuOwor
CiAgICAgLy8gRm9yIG5vdywgd2UgdHJhbnNsYXRlIGludG8gYW4gb2xkLXN0eWxlIHRva2VuIGZv
ciB0ZXN0aW5nLgogICAgIFRva2VuIG9sZFN0eWxlVG9rZW47CiAgICAgQXRvbWljSFRNTFRva2Vu
IGF0b21pY1Rva2VuKHRva2VuKTsK
</data>
<flag name="commit-queue"
          id="47368"
          type_id="3"
          status="+"
          setter="eric"
    />
          </attachment>
      

    </bug>

</bugzilla>