<?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>164700</bug_id>
          
          <creation_ts>2016-11-13 00:15:00 -0800</creation_ts>
          <short_desc>document.createElementNS doesn&apos;t construct a custom element</short_desc>
          <delta_ts>2016-11-14 16:30:16 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>DOM</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>154907</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Ryosuke Niwa">rniwa</assigned_to>
          <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>kangil.han</cc>
    
    <cc>koivisto</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1250805</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2016-11-13 00:15:00 -0800</bug_when>
    <thetext>document.createElementNS doesn&apos;t create a custom element :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1250807</commentid>
    <comment_count>1</comment_count>
      <attachid>294659</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2016-11-13 00:56:45 -0800</bug_when>
    <thetext>Created attachment 294659
Fixes the bug</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1250808</commentid>
    <comment_count>2</comment_count>
      <attachid>294660</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2016-11-13 00:58:16 -0800</bug_when>
    <thetext>Created attachment 294660
Added a change log description</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1250810</commentid>
    <comment_count>3</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2016-11-13 00:59:41 -0800</bug_when>
    <thetext>&lt;rdar://problem/29237299&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1250811</commentid>
    <comment_count>4</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2016-11-13 01:01:06 -0800</bug_when>
    <thetext>&lt;rdar://problem/29237304&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1250814</commentid>
    <comment_count>5</comment_count>
      <attachid>294661</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2016-11-13 01:09:31 -0800</bug_when>
    <thetext>Created attachment 294661
Updated for ToT</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1250852</commentid>
    <comment_count>6</comment_count>
      <attachid>294661</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-11-13 11:34:02 -0800</bug_when>
    <thetext>Comment on attachment 294661
Updated for ToT

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

&gt; Source/WebCore/bindings/js/JSCustomElementInterface.cpp:85
&gt; +    return element.get();

This churns the reference count. Should do WTFMove(element) instead to avoid that.

&gt; Source/WebCore/dom/DOMImplementation.cpp:118
&gt; +        ASSERT(!document-&gt;domWindow()); // createElemenNS should not synchronously construct a custom element here.

Typo, missing &quot;t&quot; in createElementNS.

Also completely unclear what domWindow has to do with createElementNS.

&gt; Source/WebCore/dom/Document.cpp:881
&gt; +static bool isValidHTMLElementName(const AtomicString&amp; localName) { return Document::isValidName(localName); }
&gt; +static bool isValidHTMLElementName(const QualifiedName&amp; name) { return Document::isValidName(name.localName()); }

Can we write these out normally instead of as one-liners? Should they be marked inline?

&gt; Source/WebCore/dom/Document.cpp:883
&gt; +template &lt;class NameType&gt;

Should be template&lt;typename NameType&gt;; we prefer typename or class and no space after &quot;template&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1251207</commentid>
    <comment_count>7</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2016-11-14 15:53:00 -0800</bug_when>
    <thetext>Thanks for the review.

(In reply to comment #6)
&gt; Comment on attachment 294661 [details]
&gt; Updated for ToT
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=294661&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/bindings/js/JSCustomElementInterface.cpp:85
&gt; &gt; +    return element.get();
&gt; 
&gt; This churns the reference count. Should do WTFMove(element) instead to avoid
&gt; that.

Fixed.

&gt; &gt; Source/WebCore/dom/DOMImplementation.cpp:118
&gt; &gt; +        ASSERT(!document-&gt;domWindow()); // createElemenNS should not synchronously construct a custom element here.
&gt; 
&gt; Typo, missing &quot;t&quot; in createElementNS.
&gt; 
&gt; Also completely unclear what domWindow has to do with createElementNS.

Revised to: If domWindow is not null, createElementNS could find CustomElementRegistry and arbitrary scripts.

&gt; &gt; Source/WebCore/dom/Document.cpp:881
&gt; &gt; +static bool isValidHTMLElementName(const AtomicString&amp; localName) { return Document::isValidName(localName); }
&gt; &gt; +static bool isValidHTMLElementName(const QualifiedName&amp; name) { return Document::isValidName(name.localName()); }
&gt; 
&gt; Can we write these out normally instead of as one-liners? Should they be
&gt; marked inline?

Fixed, and added inline keyword.

&gt; &gt; Source/WebCore/dom/Document.cpp:883
&gt; &gt; +template &lt;class NameType&gt;
&gt; 
&gt; Should be template&lt;typename NameType&gt;; we prefer typename or class and no
&gt; space after &quot;template&quot;.

Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1251209</commentid>
    <comment_count>8</comment_count>
      <attachid>294767</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2016-11-14 15:53:42 -0800</bug_when>
    <thetext>Created attachment 294767
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1251210</commentid>
    <comment_count>9</comment_count>
      <attachid>294768</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2016-11-14 15:54:23 -0800</bug_when>
    <thetext>Created attachment 294768
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1251237</commentid>
    <comment_count>10</comment_count>
      <attachid>294768</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-11-14 16:30:10 -0800</bug_when>
    <thetext>Comment on attachment 294768
Patch for landing

Clearing flags on attachment: 294768

Committed r208716: &lt;http://trac.webkit.org/changeset/208716&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1251238</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-11-14 16:30:16 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>294659</attachid>
            <date>2016-11-13 00:56:45 -0800</date>
            <delta_ts>2016-11-13 00:58:12 -0800</delta_ts>
            <desc>Fixes the bug</desc>
            <filename>bug-164700-20161113005228.patch</filename>
            <type>text/plain</type>
            <size>20438</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA4NTYzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjYyY2IwYTc3MDYzYzFm
ZTViMGNhZGI1ZTQ5NTMxZDY0MDhhYzY0YS4uZmY5Mjg1YzNlODQwNzAwNGI1MWI0ODU1NWE3YjE2
YzdjM2ZjZjdiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ2IEBACisyMDE2LTExLTEzICBSeW9z
dWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnROUyBkb2Vzbid0IGNvbnN0cnVjdCBhIGN1c3RvbSBlbGVtZW50CisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjQ3MDAKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGaXhlZCB0aGUgYnVnIHRoYXQgZG9j
dW1lbnQuY3JlYXRlRWxlbWVudE5TIGRvZXNuJ3QgY3JlYXRlIGEgY3VzdG9tIGVsZW1lbnQgb3Ig
ZW5xdWV1ZSBpdCB0byB1cGdyYWRlLgorCisgICAgICAgIEFsc28gbWFkZSBjb25zdHJ1Y3RDdXN0
b21FbGVtZW50U3luY2hyb25vdXNseSBub3QgY2FsbCB0aGUgY3VzdG9tIGVsZW1lbnQgY29uc3Ry
dWN0b3JzIHdpdGggdGhlIGVsZW1lbnQncworICAgICAgICBsb2NhbCBuYW1lIGFzIHRoZSBmaXJz
dCBhcmd1bWVudCwgd2hpY2ggd2FzIGEgbm9uLXN0YW5kYXJkIGJlaGF2aW9yIGFkZGVkIGR1cmlu
ZyBwcm90b3R5cGluZy4KKworICAgICAgICBUZXN0OiBmYXN0L2N1c3RvbS1lbGVtZW50cy9ET01J
bXBsZW1lbnRhdGlvbi1jcmVhdGVEb2N1bWVudC5odG1sCisgICAgICAgICAgICAgIGZhc3QvY3Vz
dG9tLWVsZW1lbnRzL2RvY3VtZW50LWNyZWF0ZUVsZW1lbnROUy5odG1sCisKKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9KU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SlNDdXN0b21FbGVtZW50SW50ZXJmYWNlOjpjb25zdHJ1Y3RFbGVtZW50V2l0aEZhbGxiYWNr
KTogQWRkZWQgYSB2YXJpYW50IHRoYXQgdGFrZXMgUXVhbGlmaWVkTmFtZQorICAgICAgICBpbnN0
ZWFkIG9mIEF0b21pY1N0cmluZy4KKyAgICAgICAgKFdlYkNvcmU6OmNvbnN0cnVjdEN1c3RvbUVs
ZW1lbnRTeW5jaHJvbm91c2x5KTogRG9uJ3QgYWRkIHRoZSBsb2NhbCBuYW1lIGFzIGFuIGFyZ3Vt
ZW50LgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQ3VzdG9tRWxlbWVudEludGVyZmFjZS5oOgor
CisgICAgICAgICogZG9tL0N1c3RvbUVsZW1lbnRSZWdpc3RyeS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDdXN0b21FbGVtZW50UmVnaXN0cnk6OmZpbmRJbnRlcmZhY2UpOiBKdXN0IGZpbmQgdGhl
IGludGVyZmFjZSBiYXNlZCBvbiB0aGUgbG9jYWwgbmFtZSBhZnRlcgorICAgICAgICBjaGVja2lu
ZyB0aGUgbmFtZXNwYWNlIFVSSSB0byBiZSB0aGF0IG9mIHRoZSBYSFRNTC4gV2UgbmVlZCB0byBp
Z25vcmUgdGhlIHByZWZpeCBmb3IgdGhlIHB1cnBvc2Ugb2YgbG9va2luZworICAgICAgICB1cCB0
aGUgY3VzdG9tIGVsZW1lbnQgZGVmaW5pdGlvbiBhcyBzcGVjaWZpZWQgaW4gdGhlIGxhdGVzdCBI
VE1MIHNwZWNpZmljYXRpb246CisgICAgICAgIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcv
bXVsdGlwYWdlL3NjcmlwdGluZy5odG1sI2xvb2stdXAtYS1jdXN0b20tZWxlbWVudC1kZWZpbml0
aW9uCisKKyAgICAgICAgKiBkb20vRE9NSW1wbGVtZW50YXRpb24uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RE9NSW1wbGVtZW50YXRpb246OmNyZWF0ZURvY3VtZW50KTogQWRkZWQgYW4gYXNzZXJ0
aW9uIHRvIG1ha2Ugc3VyZSB3ZSBkb24ndCBpbnZva2Ugc2NyaXB0cyB3aGlsZQorICAgICAgICBj
b25zdHJ1Y3RpbmcgdGhlIGRvY3VtZW50IGVsZW1lbnQuCisKKyAgICAgICAgKiBkb20vRG9jdW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlVXBncmFkZUNhbmRpZGF0ZUVsZW1lbnQp
OiBNYWRlIHRoaXMgZnVuY3Rpb24gY3JlYXRlIGEgSFRNTFVua25vd25FbGVtZW50IGluc3RlYWQg
b2YgcmV0dXJuaW5nCisgICAgICAgIG51bGxwdHIgdG8gc2hhcmUgbW9yZSBjb2RlLiBBbHNvIGFk
ZGVkIGEgdmFyaWFudCB3aGljaCB0YWtlcyBRdWFsaWZpZWROYW1lLgorICAgICAgICAoV2ViQ29y
ZTo6aXNWYWxpZEhUTUxFbGVtZW50TmFtZSk6IEFkZGVkOyBoZWxwZXJzIGZvciBjcmVhdGVIVE1M
RWxlbWVudFdpdGhOYW1lVmFsaWRhdGlvbiB0byBjYWxsIGlzVmFsaWROYW1lCisgICAgICAgIG9u
IERvY3VtZW50IHdpdGggdGhlIHJpZ2h0IGFyZ3VtZW50LgorICAgICAgICAoV2ViQ29yZTo6Y3Jl
YXRlSFRNTEVsZW1lbnRXaXRoTmFtZVZhbGlkYXRpb24pOiBUZW1wbGF0aXplZCB0aGUgZnVuY3Rp
b24gdG8gYmUgY2FsbGVkIHdpdGggZWl0aGVyIEF0b21pY1N0cmluZworICAgICAgICBvciBRdWFs
aWZpZWROYW1lIGZvciB0aGUgbmFtZS4KKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUZhbGxiYWNr
SFRNTEVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmNyZWF0ZUVsZW1lbnRO
Uyk6IENhbGwgY3JlYXRlSFRNTEVsZW1lbnRXaXRoTmFtZVZhbGlkYXRpb24gdG8gY3JlYXRlIGEg
Y3VzdG9tIGVsZW1lbnQgaWYKKyAgICAgICAgcG9zc2libGUuIFRoaXMgZnVuY3Rpb24gZW5kcyB1
cCByZS12YWxpZGF0aW5nIHRoZSBlbGVtZW50IG5hbWUgYmVmb3JlIGNyZWF0aW5nIGEgSFRNTFVu
a25vd25FbGVtZW50IGJ1dCB0aGF0CisgICAgICAgIHNob3VsZG4ndCBiZSBhIGNvbW1vbiBzY2Vu
YXJpbyB0byBtYXR0ZXIuIEluIGZhY3QsIGNyZWF0ZUVsZW1lbnROUyBpcyBhIHJhcmVseSB1c2Vk
IEFQSS4KKwogMjAxNi0xMS0xMiAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAog
ICAgICAgICBkb2N1bWVudC5jdXJyZW50U2NyaXB0IHNob3VsZCBiZSBudWxsIHdoZW4gcnVubmlu
ZyBhIHNjcmlwdCBpbnNpZGUgYSBzaGFkb3cgdHJlZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNDdXN0b21FbGVtZW50SW50ZXJmYWNlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tRWxlbWVudEludGVyZmFjZS5jcHAKaW5kZXggM2M0YWZk
ODg4NWM2Nzg4ZGFkYTdjMjU2ODdjMzgxNmM5NDdlMmRkZC4uOWFlYmRmZWJiZWZlNjRlY2Q5ZDQz
MTllMWEzNzBiMTUzMDg4NGVjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNDdXN0b21FbGVtZW50SW50ZXJmYWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2UuY3BwCkBAIC03MCw2ICs3MCwyMSBAQCBS
ZWY8RWxlbWVudD4gSlNDdXN0b21FbGVtZW50SW50ZXJmYWNlOjpjb25zdHJ1Y3RFbGVtZW50V2l0
aEZhbGxiYWNrKERvY3VtZW50JiBkbwogICAgIHJldHVybiBlbGVtZW50LmdldCgpOwogfQogCitS
ZWY8RWxlbWVudD4gSlNDdXN0b21FbGVtZW50SW50ZXJmYWNlOjpjb25zdHJ1Y3RFbGVtZW50V2l0
aEZhbGxiYWNrKERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSkK
K3sKKyAgICBpZiAoYXV0byBlbGVtZW50ID0gdHJ5VG9Db25zdHJ1Y3RDdXN0b21FbGVtZW50KGRv
Y3VtZW50LCBuYW1lLmxvY2FsTmFtZSgpKSkgeworICAgICAgICBpZiAobmFtZS5wcmVmaXgoKSAh
PSBudWxsQXRvbSkKKyAgICAgICAgICAgIGVsZW1lbnQtPnNldFByZWZpeChuYW1lLnByZWZpeCgp
LCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKKyAgICAgICAgcmV0dXJuIGVsZW1lbnQucmVsZWFzZU5v
bk51bGwoKTsKKyAgICB9CisKKyAgICBhdXRvIGVsZW1lbnQgPSBIVE1MVW5rbm93bkVsZW1lbnQ6
OmNyZWF0ZShuYW1lLCBkb2N1bWVudCk7CisgICAgZWxlbWVudC0+c2V0SXNDdXN0b21FbGVtZW50
VXBncmFkZUNhbmRpZGF0ZSgpOworICAgIGVsZW1lbnQtPnNldElzRmFpbGVkQ3VzdG9tRWxlbWVu
dCgqdGhpcyk7CisKKyAgICByZXR1cm4gZWxlbWVudC5nZXQoKTsKK30KKwogUmVmUHRyPEVsZW1l
bnQ+IEpTQ3VzdG9tRWxlbWVudEludGVyZmFjZTo6dHJ5VG9Db25zdHJ1Y3RDdXN0b21FbGVtZW50
KERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbE5hbWUpCiB7CiAg
ICAgaWYgKCFjYW5JbnZva2VDYWxsYmFjaygpKQpAQCAtMTEwLDEwICsxMjUsOCBAQCBzdGF0aWMg
UmVmUHRyPEVsZW1lbnQ+IGNvbnN0cnVjdEN1c3RvbUVsZW1lbnRTeW5jaHJvbm91c2x5KERvY3Vt
ZW50JiBkb2N1bWVudCwgVgogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKLSAgICBN
YXJrZWRBcmd1bWVudEJ1ZmZlciBhcmdzOwotICAgIGFyZ3MuYXBwZW5kKGpzU3RyaW5nV2l0aENh
Y2hlKCZzdGF0ZSwgbG9jYWxOYW1lKSk7Ci0KICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25D
b29raWUgY29va2llID0gSlNNYWluVGhyZWFkRXhlY1N0YXRlOjppbnN0cnVtZW50RnVuY3Rpb25D
b25zdHJ1Y3QoJmRvY3VtZW50LCBjb25zdHJ1Y3RUeXBlLCBjb25zdHJ1Y3REYXRhKTsKKyAgICBN
YXJrZWRBcmd1bWVudEJ1ZmZlciBhcmdzOwogICAgIEpTVmFsdWUgbmV3RWxlbWVudCA9IGNvbnN0
cnVjdCgmc3RhdGUsIGNvbnN0cnVjdG9yLCBjb25zdHJ1Y3RUeXBlLCBjb25zdHJ1Y3REYXRhLCBh
cmdzKTsKICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENhbGxGdW5jdGlvbihjb29r
aWUsICZkb2N1bWVudCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgbnVsbHB0cik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbUVsZW1lbnRJ
bnRlcmZhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tRWxlbWVudElu
dGVyZmFjZS5oCmluZGV4IGZkMzY4NDlhNWUyZTUxNGUyMDA4NGZmN2JiOTc4ZTY4MjJkZjAxNjIu
LjhhM2Y2NTZlZTcwN2NkZWI0NTU1Zjk1ZjU4YTJjOTcxYzUyMzk5NDMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tRWxlbWVudEludGVyZmFjZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tRWxlbWVudEludGVyZmFjZS5oCkBA
IC01OSw2ICs1OSw3IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICBSZWY8RWxlbWVudD4gY29uc3Ry
dWN0RWxlbWVudFdpdGhGYWxsYmFjayhEb2N1bWVudCYsIGNvbnN0IEF0b21pY1N0cmluZyYpOwor
ICAgIFJlZjxFbGVtZW50PiBjb25zdHJ1Y3RFbGVtZW50V2l0aEZhbGxiYWNrKERvY3VtZW50Jiwg
Y29uc3QgUXVhbGlmaWVkTmFtZSYpOwogCiAgICAgdm9pZCB1cGdyYWRlRWxlbWVudChFbGVtZW50
Jik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9DdXN0b21FbGVtZW50UmVnaXN0
cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0N1c3RvbUVsZW1lbnRSZWdpc3RyeS5jcHAKaW5k
ZXggZmI1NjY2MDgzYjdkZTg0MDViZGRjNTJhNzIyYjMzMzYxZjZmY2NmMi4uZDRmNGQwOWY3OTU1
NWI3YTMwNzNlYzAzYzA3YWNjYzllMGNmOTJhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL0N1c3RvbUVsZW1lbnRSZWdpc3RyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0N1
c3RvbUVsZW1lbnRSZWdpc3RyeS5jcHAKQEAgLTg3LDExICs4Nyw5IEBAIEpTQ3VzdG9tRWxlbWVu
dEludGVyZmFjZSogQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5OjpmaW5kSW50ZXJmYWNlKGNvbnN0IEVs
ZW1lbnQmIGVsCiAKIEpTQ3VzdG9tRWxlbWVudEludGVyZmFjZSogQ3VzdG9tRWxlbWVudFJlZ2lz
dHJ5OjpmaW5kSW50ZXJmYWNlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUpIGNvbnN0CiB7Ci0g
ICAgQVNTRVJUKCFuYW1lLmhhc1ByZWZpeCgpKTsKICAgICBpZiAobmFtZS5uYW1lc3BhY2VVUkko
KSAhPSBIVE1MTmFtZXM6OnhodG1sTmFtZXNwYWNlVVJJKQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKLSAgICBhdXRvIGl0ID0gbV9uYW1lTWFwLmZpbmQobmFtZS5sb2NhbE5hbWUoKSk7Ci0gICAg
cmV0dXJuIGl0ID09IG1fbmFtZU1hcC5lbmQoKSB8fCBpdC0+dmFsdWUtPm5hbWUoKSAhPSBuYW1l
ID8gbnVsbHB0ciA6IGNvbnN0X2Nhc3Q8SlNDdXN0b21FbGVtZW50SW50ZXJmYWNlKj4oaXQtPnZh
bHVlLnB0cigpKTsKKyAgICByZXR1cm4gbV9uYW1lTWFwLmdldChuYW1lLmxvY2FsTmFtZSgpKTsK
IH0KIAogSlNDdXN0b21FbGVtZW50SW50ZXJmYWNlKiBDdXN0b21FbGVtZW50UmVnaXN0cnk6OmZp
bmRJbnRlcmZhY2UoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKSBjb25zdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL0RPTUltcGxlbWVudGF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9ET01JbXBsZW1lbnRhdGlvbi5jcHAKaW5kZXggZGVhYTkyYmExZGYxZWEzODRiYzJkMDQ4
NzAyMWM3MDQyNWIxYTBjNy4uYzA4ODFkNGQ4NDU4NjUyMjQ4NmU0NjZhZjJiNTAxMjE5ZGZjZTA2
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RPTUltcGxlbWVudGF0aW9uLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRE9NSW1wbGVtZW50YXRpb24uY3BwCkBAIC0xMTUsNiAr
MTE1LDcgQEAgRXhjZXB0aW9uT3I8UmVmPFhNTERvY3VtZW50Pj4gRE9NSW1wbGVtZW50YXRpb246
OmNyZWF0ZURvY3VtZW50KGNvbnN0IFN0cmluZyYgbmEKIAogICAgIFJlZlB0cjxFbGVtZW50PiBk
b2N1bWVudEVsZW1lbnQ7CiAgICAgaWYgKCFxdWFsaWZpZWROYW1lLmlzRW1wdHkoKSkgeworICAg
ICAgICBBU1NFUlQoIWRvY3VtZW50LT5kb21XaW5kb3coKSk7IC8vIGNyZWF0ZUVsZW1lbk5TIHNo
b3VsZCBub3Qgc3luY2hyb25vdXNseSBjb25zdHJ1Y3QgYSBjdXN0b20gZWxlbWVudCBoZXJlLgog
ICAgICAgICBhdXRvIHJlc3VsdCA9IGRvY3VtZW50LT5jcmVhdGVFbGVtZW50TlMobmFtZXNwYWNl
VVJJLCBxdWFsaWZpZWROYW1lKTsKICAgICAgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkK
ICAgICAgICAgICAgIHJldHVybiByZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudC5jcHAKaW5kZXggZmE0M2ZhMDIxZWJhYjBkZmU3NjY4ODM1NzUzZWYzZjVkM2RiMmVh
OS4uMWRmYTZkZDZiZGY4YTIwNzhlZjE5OWFmODdlZmNjMWJlYzE0ZjRjMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnQuY3BwCkBAIC04NjEsNDIgKzg2MSw0NCBAQCB2b2lkIERvY3VtZW50OjpjaGlsZHJl
bkNoYW5nZWQoY29uc3QgQ2hpbGRDaGFuZ2UmIGNoYW5nZSkKICAgICBzdHlsZVNjb3BlKCkuY2xl
YXJSZXNvbHZlcigpOwogfQogCi1zdGF0aWMgQUxXQVlTX0lOTElORSBSZWZQdHI8SFRNTEVsZW1l
bnQ+IGNyZWF0ZVVwZ3JhZGVDYW5kaWRhdGVFbGVtZW50KERvY3VtZW50JiBkb2N1bWVudCwgY29u
c3QgUXVhbGlmaWVkTmFtZSYgbmFtZSkKK3N0YXRpYyBBTFdBWVNfSU5MSU5FIFJlZjxIVE1MRWxl
bWVudD4gY3JlYXRlVXBncmFkZUNhbmRpZGF0ZUVsZW1lbnQoRG9jdW1lbnQmIGRvY3VtZW50LCBj
b25zdCBRdWFsaWZpZWROYW1lJiBuYW1lKQogewotICAgIGlmICghUnVudGltZUVuYWJsZWRGZWF0
dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5jdXN0b21FbGVtZW50c0VuYWJsZWQoKSkKLSAgICAgICAg
cmV0dXJuIG51bGxwdHI7Ci0KLSAgICBpZiAoRG9jdW1lbnQ6OnZhbGlkYXRlQ3VzdG9tRWxlbWVu
dE5hbWUobmFtZS5sb2NhbE5hbWUoKSkgIT0gQ3VzdG9tRWxlbWVudE5hbWVWYWxpZGF0aW9uU3Rh
dHVzOjpWYWxpZCkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgaWYgKCFSdW50aW1lRW5h
YmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLmN1c3RvbUVsZW1lbnRzRW5hYmxlZCgpCisg
ICAgICAgIHx8IERvY3VtZW50Ojp2YWxpZGF0ZUN1c3RvbUVsZW1lbnROYW1lKG5hbWUubG9jYWxO
YW1lKCkpICE9IEN1c3RvbUVsZW1lbnROYW1lVmFsaWRhdGlvblN0YXR1czo6VmFsaWQpCisgICAg
ICAgIHJldHVybiBIVE1MVW5rbm93bkVsZW1lbnQ6OmNyZWF0ZShuYW1lLCBkb2N1bWVudCk7CiAK
ICAgICBhdXRvIGVsZW1lbnQgPSBIVE1MRWxlbWVudDo6Y3JlYXRlKG5hbWUsIGRvY3VtZW50KTsK
ICAgICBlbGVtZW50LT5zZXRJc0N1c3RvbUVsZW1lbnRVcGdyYWRlQ2FuZGlkYXRlKCk7Ci0gICAg
cmV0dXJuIFdURk1vdmUoZWxlbWVudCk7CisgICAgcmV0dXJuIGVsZW1lbnQ7CiB9CiAKLXN0YXRp
YyBFeGNlcHRpb25PcjxSZWY8RWxlbWVudD4+IGNyZWF0ZUhUTUxFbGVtZW50V2l0aE5hbWVWYWxp
ZGF0aW9uKERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbE5hbWUp
CitzdGF0aWMgQUxXQVlTX0lOTElORSBSZWY8SFRNTEVsZW1lbnQ+IGNyZWF0ZVVwZ3JhZGVDYW5k
aWRhdGVFbGVtZW50KERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgQXRvbWljU3RyaW5nJiBsb2Nh
bE5hbWUpCiB7Ci0gICAgYXV0byBlbGVtZW50ID0gSFRNTEVsZW1lbnRGYWN0b3J5OjpjcmVhdGVL
bm93bkVsZW1lbnQobG9jYWxOYW1lLCBkb2N1bWVudCk7CisgICAgcmV0dXJuIGNyZWF0ZVVwZ3Jh
ZGVDYW5kaWRhdGVFbGVtZW50KGRvY3VtZW50LCBRdWFsaWZpZWROYW1lIHsgbnVsbEF0b20sIGxv
Y2FsTmFtZSwgeGh0bWxOYW1lc3BhY2VVUkkgfSk7Cit9CisKK3N0YXRpYyBib29sIGlzVmFsaWRI
VE1MRWxlbWVudE5hbWUoY29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbE5hbWUpIHsgcmV0dXJuIERv
Y3VtZW50Ojppc1ZhbGlkTmFtZShsb2NhbE5hbWUpOyB9CitzdGF0aWMgYm9vbCBpc1ZhbGlkSFRN
TEVsZW1lbnROYW1lKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUpIHsgcmV0dXJuIERvY3VtZW50
Ojppc1ZhbGlkTmFtZShuYW1lLmxvY2FsTmFtZSgpKTsgfQorCit0ZW1wbGF0ZSA8Y2xhc3MgTmFt
ZVR5cGU+CitzdGF0aWMgRXhjZXB0aW9uT3I8UmVmPEVsZW1lbnQ+PiBjcmVhdGVIVE1MRWxlbWVu
dFdpdGhOYW1lVmFsaWRhdGlvbihEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IE5hbWVUeXBlJiBu
YW1lKQoreworICAgIGF1dG8gZWxlbWVudCA9IEhUTUxFbGVtZW50RmFjdG9yeTo6Y3JlYXRlS25v
d25FbGVtZW50KG5hbWUsIGRvY3VtZW50KTsKICAgICBpZiAoTElLRUxZKGVsZW1lbnQpKQogICAg
ICAgICByZXR1cm4gUmVmPEVsZW1lbnQ+IHsgZWxlbWVudC5yZWxlYXNlTm9uTnVsbCgpIH07CiAK
ICAgICBpZiAoYXV0byogd2luZG93ID0gZG9jdW1lbnQuZG9tV2luZG93KCkpIHsKICAgICAgICAg
YXV0byogcmVnaXN0cnkgPSB3aW5kb3ctPmN1c3RvbUVsZW1lbnRSZWdpc3RyeSgpOwogICAgICAg
ICBpZiAoVU5MSUtFTFkocmVnaXN0cnkpKSB7Ci0gICAgICAgICAgICBpZiAoYXV0byogZWxlbWVu
dEludGVyZmFjZSA9IHJlZ2lzdHJ5LT5maW5kSW50ZXJmYWNlKGxvY2FsTmFtZSkpCi0gICAgICAg
ICAgICAgICAgcmV0dXJuIGVsZW1lbnRJbnRlcmZhY2UtPmNvbnN0cnVjdEVsZW1lbnRXaXRoRmFs
bGJhY2soZG9jdW1lbnQsIGxvY2FsTmFtZSk7CisgICAgICAgICAgICBpZiAoYXV0byogZWxlbWVu
dEludGVyZmFjZSA9IHJlZ2lzdHJ5LT5maW5kSW50ZXJmYWNlKG5hbWUpKQorICAgICAgICAgICAg
ICAgIHJldHVybiBlbGVtZW50SW50ZXJmYWNlLT5jb25zdHJ1Y3RFbGVtZW50V2l0aEZhbGxiYWNr
KGRvY3VtZW50LCBuYW1lKTsKICAgICAgICAgfQogICAgIH0KIAotICAgIGlmIChVTkxJS0VMWSgh
RG9jdW1lbnQ6OmlzVmFsaWROYW1lKGxvY2FsTmFtZSkpKQorICAgIGlmIChVTkxJS0VMWSghaXNW
YWxpZEhUTUxFbGVtZW50TmFtZShuYW1lKSkpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJ
TlZBTElEX0NIQVJBQ1RFUl9FUlIgfTsKIAotICAgIFF1YWxpZmllZE5hbWUgcXVhbGlmaWVkTmFt
ZSB7IG51bGxBdG9tLCBsb2NhbE5hbWUsIHhodG1sTmFtZXNwYWNlVVJJIH07Ci0KLSAgICBpZiAo
YXV0byBlbGVtZW50ID0gY3JlYXRlVXBncmFkZUNhbmRpZGF0ZUVsZW1lbnQoZG9jdW1lbnQsIHF1
YWxpZmllZE5hbWUpKQotICAgICAgICByZXR1cm4gUmVmPEVsZW1lbnQ+IHsgZWxlbWVudC5yZWxl
YXNlTm9uTnVsbCgpIH07Ci0KLSAgICByZXR1cm4gUmVmPEVsZW1lbnQ+IHsgSFRNTFVua25vd25F
bGVtZW50OjpjcmVhdGUocXVhbGlmaWVkTmFtZSwgZG9jdW1lbnQpIH07CisgICAgcmV0dXJuIFJl
ZjxFbGVtZW50PiB7IGNyZWF0ZVVwZ3JhZGVDYW5kaWRhdGVFbGVtZW50KGRvY3VtZW50LCBuYW1l
KSB9OwogfQogCiBFeGNlcHRpb25PcjxSZWY8RWxlbWVudD4+IERvY3VtZW50OjpjcmVhdGVFbGVt
ZW50Rm9yQmluZGluZ3MoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKQpAQCAtMTA1NSw5ICsxMDU3
LDcgQEAgc3RhdGljIFJlZjxIVE1MRWxlbWVudD4gY3JlYXRlRmFsbGJhY2tIVE1MRWxlbWVudChE
b2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFF1YWwKICAgICAgICAgfQogICAgIH0KICAgICAvLyBG
SVhNRTogU2hvdWxkIHdlIGFsc28gY2hlY2sgdGhlIGVxdWFsaXR5IG9mIHByZWZpeCBiZXR3ZWVu
IHRoZSBjdXN0b20gZWxlbWVudCBhbmQgbmFtZT8KLSAgICBpZiAoYXV0byBlbGVtZW50ID0gY3Jl
YXRlVXBncmFkZUNhbmRpZGF0ZUVsZW1lbnQoZG9jdW1lbnQsIG5hbWUpKQotICAgICAgICByZXR1
cm4gZWxlbWVudC5yZWxlYXNlTm9uTnVsbCgpOwotICAgIHJldHVybiBIVE1MVW5rbm93bkVsZW1l
bnQ6OmNyZWF0ZShuYW1lLCBkb2N1bWVudCk7CisgICAgcmV0dXJuIGNyZWF0ZVVwZ3JhZGVDYW5k
aWRhdGVFbGVtZW50KGRvY3VtZW50LCBuYW1lKTsKIH0KIAogLy8gRklYTUU6IFRoaXMgc2hvdWxk
IHJlYWxseSBiZSBpbiBhIHBvc3NpYmxlIEVsZW1lbnRGYWN0b3J5IGNsYXNzLgpAQCAtMTE1OSw2
ICsxMTU5LDEwIEBAIEV4Y2VwdGlvbk9yPFJlZjxFbGVtZW50Pj4gRG9jdW1lbnQ6OmNyZWF0ZUVs
ZW1lbnROUyhjb25zdCBBdG9taWNTdHJpbmcmIG5hbWVzcGFjCiAgICAgUXVhbGlmaWVkTmFtZSBw
YXJzZWROYW1lIHsgcGFyc2VSZXN1bHQucmVsZWFzZVJldHVyblZhbHVlKCkgfTsKICAgICBpZiAo
IWhhc1ZhbGlkTmFtZXNwYWNlRm9yRWxlbWVudHMocGFyc2VkTmFtZSkpCiAgICAgICAgIHJldHVy
biBFeGNlcHRpb24geyBOQU1FU1BBQ0VfRVJSIH07CisKKyAgICBpZiAocGFyc2VkTmFtZS5uYW1l
c3BhY2VVUkkoKSA9PSB4aHRtbE5hbWVzcGFjZVVSSSkKKyAgICAgICAgcmV0dXJuIGNyZWF0ZUhU
TUxFbGVtZW50V2l0aE5hbWVWYWxpZGF0aW9uKCp0aGlzLCBwYXJzZWROYW1lKTsKKwogICAgIHJl
dHVybiBjcmVhdGVFbGVtZW50KHBhcnNlZE5hbWUsIGZhbHNlKTsKIH0KIApkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDBkYzNk
NzIyYzZhZjE0MmRmMDU0NDVmNmQxYzAzMmEwNDZiYWE1ZGMuLmU4M2EyNGEwZjkwYTZkY2Q1ZWZj
MGU0ZmMwY2JiYjAwZWYxNWUxMmUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZwor
KysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxNi0xMS0xMyAg
Unlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KKworICAgICAgICBkb2N1bWVudC5jcmVh
dGVFbGVtZW50TlMgZG9lc24ndCBjb25zdHJ1Y3QgYSBjdXN0b20gZWxlbWVudAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY0NzAwCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBmYXN0L2N1c3RvbS1lbGVt
ZW50cy9ET01JbXBsZW1lbnRhdGlvbi1jcmVhdGVEb2N1bWVudC1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIGZhc3QvY3VzdG9tLWVsZW1lbnRzL0RPTUltcGxlbWVudGF0aW9uLWNyZWF0
ZURvY3VtZW50Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY3VzdG9tLWVsZW1lbnRzL2Rv
Y3VtZW50LWNyZWF0ZUVsZW1lbnROUy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZh
c3QvY3VzdG9tLWVsZW1lbnRzL2RvY3VtZW50LWNyZWF0ZUVsZW1lbnROUy5odG1sOiBBZGRlZC4K
KwogMjAxNi0xMS0xMCAgRXJpYyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KIAog
ICAgICAgICBbTWVkaWFTdHJlYW1dIGFwcGx5IGNvbnN0cmFpbnRzIHBhc3NlZCB0byBnZXRVc2Vy
TWVkaWEoKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jdXN0b20tZWxlbWVudHMvRE9N
SW1wbGVtZW50YXRpb24tY3JlYXRlRG9jdW1lbnQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
ZmFzdC9jdXN0b20tZWxlbWVudHMvRE9NSW1wbGVtZW50YXRpb24tY3JlYXRlRG9jdW1lbnQtZXhw
ZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM1NDA1ZGI5Y2FlNzIwMmU0NzY3ZWU4ZmZmYTA0MTk1ODIw
MGUzYzMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2N1c3RvbS1lbGVtZW50
cy9ET01JbXBsZW1lbnRhdGlvbi1jcmVhdGVEb2N1bWVudC1leHBlY3RlZC50eHQKQEAgLTAsMCAr
MSwzIEBACisKK1BBU1MgZG9jdW1lbnQuY3JlYXRlRWxlbWVudCBpbnZva2UgYSBjdXN0b20gZWxl
bWVudCBjb25zdHJ1Y3RvciB3aXRoIG5vIGFyZ3VtZW50cyAKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZmFzdC9jdXN0b20tZWxlbWVudHMvRE9NSW1wbGVtZW50YXRpb24tY3JlYXRlRG9jdW1l
bnQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvY3VzdG9tLWVsZW1lbnRzL0RPTUltcGxlbWVudGF0
aW9uLWNyZWF0ZURvY3VtZW50Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjZlNGUzMGRlYjk3YTE4ZTNjNzk2
MDViOWE1MWYyMGUxODNhM2RhYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qv
Y3VzdG9tLWVsZW1lbnRzL0RPTUltcGxlbWVudGF0aW9uLWNyZWF0ZURvY3VtZW50Lmh0bWwKQEAg
LTAsMCArMSw0MSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHRpdGxlPkN1
c3RvbSBFbGVtZW50czogZG9jdW1lbnQuaW1wbGVtZW50YXRpb24uY3JlYXRlRWxlbWVudCBtdXN0
IG5vdCBpbnN0YW50aWF0ZSBhIGN1c3RvbSBlbGVtZW50PC90aXRsZT4KKzxtZXRhIG5hbWU9ImF1
dGhvciIgdGl0bGU9IlJ5b3N1a2UgTml3YSIgaHJlZj0ibWFpbHRvOnJuaXdhQHdlYmtpdC5vcmci
PgorPG1ldGEgbmFtZT0iYXNzZXJ0IiBjb250ZW50PSJkb2N1bWVudC5pbXBsZW1lbnRhdGlvbi5j
cmVhdGVFbGVtZW50IG11c3Qgbm90IGluc3RhbnRpYXRlIGEgY3VzdG9tIGVsZW1lbnQiPgorPGxp
bmsgcmVsPSJoZWxwIiBjb250ZW50PSJodHRwczovL2RvbS5zcGVjLndoYXR3Zy5vcmcvI2RvbS1k
b21pbXBsZW1lbnRhdGlvbi1jcmVhdGVkb2N1bWVudCI+Cis8bGluayByZWw9ImhlbHAiIGNvbnRl
bnQ9Imh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvI2xvb2stdXAtYS1jdXN0b20tZWxlbWVu
dC1kZWZpbml0aW9uIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3Mu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3Jl
cG9ydC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9jdXN0b20tZWxlbWVudHMvcmVzb3VyY2VzL2N1c3RvbS1lbGVtZW50cy1o
ZWxwZXJzLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0ibG9nIj48L2Rp
dj4KKzxzY3JpcHQ+CisKK2NvbnN0IHhodG1sTmFtZXNwYWNlVVJJID0gJ2h0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGh0bWwnOworCit0ZXN0X3dpdGhfd2luZG93KChjb250ZW50V2luZG93LCBjb250
ZW50RG9jdW1lbnQpID0+IHsKKyAgICBsZXQgY29uc3RydWN0b3JDb3VudCA9IDA7CisgICAgY2xh
c3MgTXlDdXN0b21FbGVtZW50IGV4dGVuZHMgY29udGVudFdpbmRvdy5IVE1MRWxlbWVudCB7Cisg
ICAgICAgIGNvbnN0cnVjdG9yKCkgeworICAgICAgICAgICAgc3VwZXIoKTsKKyAgICAgICAgICAg
IGNvbnN0cnVjdG9yQ291bnQrKzsKKyAgICAgICAgfQorICAgIH0KKyAgICBjb250ZW50V2luZG93
LmN1c3RvbUVsZW1lbnRzLmRlZmluZSgnbXktY3VzdG9tLWVsZW1lbnQnLCBNeUN1c3RvbUVsZW1l
bnQpOworICAgIGNvbnN0IGluc3RhbmNlID0gY29udGVudERvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
J215LWN1c3RvbS1lbGVtZW50Jyk7CisgICAgYXNzZXJ0X3RydWUoaW5zdGFuY2UgaW5zdGFuY2Vv
ZiBNeUN1c3RvbUVsZW1lbnQpOworICAgIGFzc2VydF9lcXVhbHMoY29uc3RydWN0b3JDb3VudCwg
MSk7CisKKyAgICBjb25zdCBuZXdEb2N1bWVudCA9IGNvbnRlbnREb2N1bWVudC5pbXBsZW1lbnRh
dGlvbi5jcmVhdGVEb2N1bWVudCh4aHRtbE5hbWVzcGFjZVVSSSwgJ215LWN1c3RvbS1lbGVtZW50
JywgbnVsbCk7CisgICAgYXNzZXJ0X2VxdWFscyhjb25zdHJ1Y3RvckNvdW50LCAxKTsKKyAgICBh
c3NlcnRfdHJ1ZShuZXdEb2N1bWVudC5kb2N1bWVudEVsZW1lbnQgaW5zdGFuY2VvZiBjb250ZW50
V2luZG93LkhUTUxFbGVtZW50KTsKKyAgICBhc3NlcnRfZXF1YWxzKG5ld0RvY3VtZW50LmRvY3Vt
ZW50RWxlbWVudC5sb2NhbE5hbWUsICdteS1jdXN0b20tZWxlbWVudCcpOworICAgIGFzc2VydF9m
YWxzZShuZXdEb2N1bWVudC5kb2N1bWVudEVsZW1lbnQgaW5zdGFuY2VvZiBNeUN1c3RvbUVsZW1l
bnQpOworfSwgJ2RvY3VtZW50LmNyZWF0ZUVsZW1lbnQgaW52b2tlIGEgY3VzdG9tIGVsZW1lbnQg
Y29uc3RydWN0b3Igd2l0aCBubyBhcmd1bWVudHMnKTsKKworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8
L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2N1c3RvbS1lbGVtZW50cy9kb2N1
bWVudC1jcmVhdGVFbGVtZW50TlMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9jdXN0
b20tZWxlbWVudHMvZG9jdW1lbnQtY3JlYXRlRWxlbWVudE5TLWV4cGVjdGVkLnR4dApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42ZjE4YmM4NjcxMWUzNzQzYmRlOTFlYTY2MTIwOWFlZThmNzMxZTI5Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jdXN0b20tZWxlbWVudHMvZG9jdW1lbnQtY3JlYXRl
RWxlbWVudE5TLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDYgQEAKKworUEFTUyBkb2N1bWVudC5j
cmVhdGVFbGVtZW50IGludm9rZSBhIGN1c3RvbSBlbGVtZW50IGNvbnN0cnVjdG9yIHdpdGggbm8g
YXJndW1lbnRzIAorUEFTUyBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMgbXVzdCBjcmVhdGUgYW4g
aW5zdGFuY2Ugb2YgY3VzdG9tIGVsZW1lbnRzIAorUEFTUyBkb2N1bWVudC5jcmVhdGVFbGVtZW50
TlMgbXVzdCBzZXQgdGhlIHByZWZpeCBhZnRlciBjb25zdHJ1Y3RpbmcgYSBjdXN0b20gZWxlbWVu
dCAKK1BBU1MgZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TIG11c3QgdXNlIHRoZSBlbGVtZW50IHJl
dHVybmVkIGJ5IHRoZSBjb25zdHJ1Y3RvciAKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFz
dC9jdXN0b20tZWxlbWVudHMvZG9jdW1lbnQtY3JlYXRlRWxlbWVudE5TLmh0bWwgYi9MYXlvdXRU
ZXN0cy9mYXN0L2N1c3RvbS1lbGVtZW50cy9kb2N1bWVudC1jcmVhdGVFbGVtZW50TlMuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4zNjkzYTEwZWU3MTI5Njc3NjRhZDU4OTQ0YzA0YjAzYTAzNjY4ZTNmCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jdXN0b20tZWxlbWVudHMvZG9jdW1lbnQt
Y3JlYXRlRWxlbWVudE5TLmh0bWwKQEAgLTAsMCArMSw4OSBAQAorPCFET0NUWVBFIGh0bWw+Cis8
aHRtbD4KKzxoZWFkPgorPHRpdGxlPkN1c3RvbSBFbGVtZW50czogZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TIG11c3QgY3JlYXRlIGFuIGVsZW1lbnQgd2l0aCBzeW5jaHJvbm91cyBjdXN0b20gZWxl
bWVudHMgZmxhZyBzZXQ8L3RpdGxlPgorPG1ldGEgbmFtZT0iYXV0aG9yIiB0aXRsZT0iUnlvc3Vr
ZSBOaXdhIiBocmVmPSJtYWlsdG86cm5pd2FAd2Via2l0Lm9yZyI+Cis8bWV0YSBuYW1lPSJhc3Nl
cnQiIGNvbnRlbnQ9ImRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyBtdXN0IGNyZWF0ZSBhbiBlbGVt
ZW50IHdpdGggc3luY2hyb25vdXMgY3VzdG9tIGVsZW1lbnRzIGZsYWcgc2V0Ij4KKzxsaW5rIHJl
bD0iaGVscCIgY29udGVudD0iaHR0cHM6Ly9kb20uc3BlYy53aGF0d2cub3JnLyNkb20tZG9jdW1l
bnQtY3JlYXRlZWxlbWVudG5zIj4KKzxsaW5rIHJlbD0iaGVscCIgY29udGVudD0iaHR0cHM6Ly9k
b20uc3BlYy53aGF0d2cub3JnLyNjb25jZXB0LWNyZWF0ZS1lbGVtZW50Ij4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jdXN0b20tZWxlbWVu
dHMvcmVzb3VyY2VzL2N1c3RvbS1lbGVtZW50cy1oZWxwZXJzLmpzIj48L3NjcmlwdD4KKzwvaGVh
ZD4KKzxib2R5PgorPGRpdiBpZD0ibG9nIj48L2Rpdj4KKzxzY3JpcHQ+CisKK2NvbnN0IHhodG1s
TmFtZXNwYWNlVVJJID0gJ2h0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwnOworCit0ZXN0X3dp
dGhfd2luZG93KChjb250ZW50V2luZG93LCBjb250ZW50RG9jdW1lbnQpID0+IHsKKyAgICBsZXQg
Y29uc3RydWN0b3JBcmd1bWVudHM7CisgICAgY2xhc3MgTXlDdXN0b21FbGVtZW50IGV4dGVuZHMg
Y29udGVudFdpbmRvdy5IVE1MRWxlbWVudCB7CisgICAgICAgIGNvbnN0cnVjdG9yKCkgeworICAg
ICAgICAgICAgY29uc3RydWN0b3JBcmd1bWVudHMgPSBBcnJheS5mcm9tKGFyZ3VtZW50cyk7Cisg
ICAgICAgICAgICBzdXBlcigpOworICAgICAgICB9CisgICAgfQorICAgIGNvbnRlbnRXaW5kb3cu
Y3VzdG9tRWxlbWVudHMuZGVmaW5lKCdteS1jdXN0b20tZWxlbWVudCcsIE15Q3VzdG9tRWxlbWVu
dCk7CisgICAgY29uc3QgaW5zdGFuY2UgPSBjb250ZW50RG9jdW1lbnQuY3JlYXRlRWxlbWVudCgn
bXktY3VzdG9tLWVsZW1lbnQnKTsKKyAgICBhc3NlcnRfdHJ1ZShpbnN0YW5jZSBpbnN0YW5jZW9m
IE15Q3VzdG9tRWxlbWVudCk7CisgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhjb25zdHJ1Y3RvckFy
Z3VtZW50cywgW10pOworfSwgJ2RvY3VtZW50LmNyZWF0ZUVsZW1lbnQgaW52b2tlIGEgY3VzdG9t
IGVsZW1lbnQgY29uc3RydWN0b3Igd2l0aCBubyBhcmd1bWVudHMnKTsKKwordGVzdF93aXRoX3dp
bmRvdygoY29udGVudFdpbmRvdywgY29udGVudERvY3VtZW50KSA9PiB7CisgICAgY2xhc3MgTXlD
dXN0b21FbGVtZW50IGV4dGVuZHMgY29udGVudFdpbmRvdy5IVE1MRWxlbWVudCB7fTsKKworICAg
IGNvbnN0IHVwZ3JhZGVDYW5kaWRhdGUgPSBjb250ZW50RG9jdW1lbnQuY3JlYXRlRWxlbWVudE5T
KHhodG1sTmFtZXNwYWNlVVJJLCAnbXktY3VzdG9tLWVsZW1lbnQnKTsKKyAgICBhc3NlcnRfdHJ1
ZSh1cGdyYWRlQ2FuZGlkYXRlIGluc3RhbmNlb2YgY29udGVudFdpbmRvdy5IVE1MRWxlbWVudCk7
CisgICAgYXNzZXJ0X2ZhbHNlKHVwZ3JhZGVDYW5kaWRhdGUgaW5zdGFuY2VvZiBNeUN1c3RvbUVs
ZW1lbnQpOworCisgICAgY29udGVudFdpbmRvdy5jdXN0b21FbGVtZW50cy5kZWZpbmUoJ215LWN1
c3RvbS1lbGVtZW50JywgTXlDdXN0b21FbGVtZW50KTsKKyAgICBjb25zdCBpbnN0YW5jZSA9IGNv
bnRlbnREb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoeGh0bWxOYW1lc3BhY2VVUkksICdteS1jdXN0
b20tZWxlbWVudCcpOworICAgIGFzc2VydF90cnVlKGluc3RhbmNlIGluc3RhbmNlb2YgTXlDdXN0
b21FbGVtZW50KTsKKyAgICBhc3NlcnRfZXF1YWxzKGluc3RhbmNlLmxvY2FsTmFtZSwgJ215LWN1
c3RvbS1lbGVtZW50Jyk7CisgICAgYXNzZXJ0X2VxdWFscyhpbnN0YW5jZS5uYW1lc3BhY2VVUkks
IHhodG1sTmFtZXNwYWNlVVJJKTsKK30sICdkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMgbXVzdCBj
cmVhdGUgYW4gaW5zdGFuY2Ugb2YgY3VzdG9tIGVsZW1lbnRzJyk7CisKK3Rlc3Rfd2l0aF93aW5k
b3coKGNvbnRlbnRXaW5kb3csIGNvbnRlbnREb2N1bWVudCkgPT4geworICAgIGNsYXNzIE15Q3Vz
dG9tRWxlbWVudCBleHRlbmRzIGNvbnRlbnRXaW5kb3cuSFRNTEVsZW1lbnQge307CisgICAgY29u
dGVudFdpbmRvdy5jdXN0b21FbGVtZW50cy5kZWZpbmUoJ2VsZW1lbnQtd2l0aC1wcmVmaXgnLCBN
eUN1c3RvbUVsZW1lbnQpOworCisgICAgY29uc3QgaW5zdGFuY2UgPSBjb250ZW50RG9jdW1lbnQu
Y3JlYXRlRWxlbWVudE5TKHhodG1sTmFtZXNwYWNlVVJJLCAnZm9vOmVsZW1lbnQtd2l0aC1wcmVm
aXgnKTsKKyAgICBhc3NlcnRfdHJ1ZShpbnN0YW5jZSBpbnN0YW5jZW9mIE15Q3VzdG9tRWxlbWVu
dCk7CisgICAgYXNzZXJ0X2VxdWFscyhpbnN0YW5jZS5sb2NhbE5hbWUsICdlbGVtZW50LXdpdGgt
cHJlZml4Jyk7CisgICAgYXNzZXJ0X2VxdWFscyhpbnN0YW5jZS5uYW1lc3BhY2VVUkksIHhodG1s
TmFtZXNwYWNlVVJJKTsKKyAgICBhc3NlcnRfZXF1YWxzKGluc3RhbmNlLnByZWZpeCwgJ2Zvbycp
OworfSwgJ2RvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyBtdXN0IHNldCB0aGUgcHJlZml4IGFmdGVy
IGNvbnN0cnVjdGluZyBhIGN1c3RvbSBlbGVtZW50Jyk7CisKK3Rlc3Rfd2l0aF93aW5kb3coKGNv
bnRlbnRXaW5kb3csIGNvbnRlbnREb2N1bWVudCkgPT4geworICAgIGxldCBpbm5lckVsZW1lbnQ7
CisgICAgbGV0IGlubmVyRWxlbWVudFByZWZpeDsKKyAgICBsZXQgb3V0ZXJFbGVtZW50OworICAg
IGxldCBvdXRlckVsZW1lbnRQcmVmaXg7CisgICAgY2xhc3MgTXlDdXN0b21FbGVtZW50IGV4dGVu
ZHMgY29udGVudFdpbmRvdy5IVE1MRWxlbWVudCB7CisgICAgICAgIGNvbnN0cnVjdG9yKGlzSW5u
ZXJDYWxsKSB7CisgICAgICAgICAgICBpZiAoaXNJbm5lckNhbGwpIHsKKyAgICAgICAgICAgICAg
ICBpbm5lckVsZW1lbnQgPSBzdXBlcigpOworICAgICAgICAgICAgICAgIGlubmVyRWxlbWVudFBy
ZWZpeCA9IGlubmVyRWxlbWVudC5wcmVmaXg7CisgICAgICAgICAgICAgICAgcmV0dXJuIGlubmVy
RWxlbWVudDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG91dGVyRWxlbWVudCA9IHN1cGVy
KCk7CisgICAgICAgICAgICBvdXRlckVsZW1lbnRQcmVmaXggPSBvdXRlckVsZW1lbnQucHJlZml4
OworICAgICAgICAgICAgcmV0dXJuIG5ldyBNeUN1c3RvbUVsZW1lbnQodHJ1ZSk7CisgICAgICAg
IH0KKyAgICB9CisgICAgY29udGVudFdpbmRvdy5jdXN0b21FbGVtZW50cy5kZWZpbmUoJ2N1c3Rv
bS1lbGVtZW50JywgTXlDdXN0b21FbGVtZW50KTsKKworICAgIGNvbnN0IGluc3RhbmNlID0gY29u
dGVudERvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyh4aHRtbE5hbWVzcGFjZVVSSSwgJ2ZvbzpjdXN0
b20tZWxlbWVudCcpOworICAgIGFzc2VydF90cnVlKGluc3RhbmNlIGluc3RhbmNlb2YgTXlDdXN0
b21FbGVtZW50KTsKKyAgICBhc3NlcnRfZXF1YWxzKGluc3RhbmNlLmxvY2FsTmFtZSwgJ2N1c3Rv
bS1lbGVtZW50Jyk7CisgICAgYXNzZXJ0X2VxdWFscyhpbnN0YW5jZS5uYW1lc3BhY2VVUkksIHho
dG1sTmFtZXNwYWNlVVJJKTsKKyAgICBhc3NlcnRfZXF1YWxzKGluc3RhbmNlLnByZWZpeCwgJ2Zv
bycpOworICAgIGFzc2VydF9lcXVhbHMoaW5zdGFuY2UsIGlubmVyRWxlbWVudCwgJ2RvY3VtZW50
LmNyZWF0ZUVsZW1lbnROUyBtdXN0IGNyZWF0ZSBhbiBlbGVtZW50IHdpdGggdGhlIHN5bmNocm9u
b3VzIGN1c3RvbSBlbGVtZW50cyBmbGFnIHNldCcpOworICAgIGFzc2VydF9lcXVhbHMoaW5uZXJF
bGVtZW50UHJlZml4LCBudWxsLCAnSFRNTCBjb25zdHJ1Y3RvciBtdXN0IG5vdCBzZXQgcHJlZml4
Jyk7CisgICAgYXNzZXJ0X2VxdWFscyhvdXRlckVsZW1lbnRQcmVmaXgsIG51bGwsICdIVE1MIGNv
bnN0cnVjdG9yIG11c3Qgbm90IHNldCBwcmVmaXgnKTsKK30sICdkb2N1bWVudC5jcmVhdGVFbGVt
ZW50TlMgbXVzdCB1c2UgdGhlIGVsZW1lbnQgcmV0dXJuZWQgYnkgdGhlIGNvbnN0cnVjdG9yJyk7
CisKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>294660</attachid>
            <date>2016-11-13 00:58:16 -0800</date>
            <delta_ts>2016-11-13 01:09:27 -0800</delta_ts>
            <desc>Added a change log description</desc>
            <filename>bug-164700-20161113005400.patch</filename>
            <type>text/plain</type>
            <size>20546</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA4NTYzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjYyY2IwYTc3MDYzYzFm
ZTViMGNhZGI1ZTQ5NTMxZDY0MDhhYzY0YS4uZmY5Mjg1YzNlODQwNzAwNGI1MWI0ODU1NWE3YjE2
YzdjM2ZjZjdiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ2IEBACisyMDE2LTExLTEzICBSeW9z
dWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnROUyBkb2Vzbid0IGNvbnN0cnVjdCBhIGN1c3RvbSBlbGVtZW50CisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjQ3MDAKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGaXhlZCB0aGUgYnVnIHRoYXQgZG9j
dW1lbnQuY3JlYXRlRWxlbWVudE5TIGRvZXNuJ3QgY3JlYXRlIGEgY3VzdG9tIGVsZW1lbnQgb3Ig
ZW5xdWV1ZSBpdCB0byB1cGdyYWRlLgorCisgICAgICAgIEFsc28gbWFkZSBjb25zdHJ1Y3RDdXN0
b21FbGVtZW50U3luY2hyb25vdXNseSBub3QgY2FsbCB0aGUgY3VzdG9tIGVsZW1lbnQgY29uc3Ry
dWN0b3JzIHdpdGggdGhlIGVsZW1lbnQncworICAgICAgICBsb2NhbCBuYW1lIGFzIHRoZSBmaXJz
dCBhcmd1bWVudCwgd2hpY2ggd2FzIGEgbm9uLXN0YW5kYXJkIGJlaGF2aW9yIGFkZGVkIGR1cmlu
ZyBwcm90b3R5cGluZy4KKworICAgICAgICBUZXN0OiBmYXN0L2N1c3RvbS1lbGVtZW50cy9ET01J
bXBsZW1lbnRhdGlvbi1jcmVhdGVEb2N1bWVudC5odG1sCisgICAgICAgICAgICAgIGZhc3QvY3Vz
dG9tLWVsZW1lbnRzL2RvY3VtZW50LWNyZWF0ZUVsZW1lbnROUy5odG1sCisKKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9KU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SlNDdXN0b21FbGVtZW50SW50ZXJmYWNlOjpjb25zdHJ1Y3RFbGVtZW50V2l0aEZhbGxiYWNr
KTogQWRkZWQgYSB2YXJpYW50IHRoYXQgdGFrZXMgUXVhbGlmaWVkTmFtZQorICAgICAgICBpbnN0
ZWFkIG9mIEF0b21pY1N0cmluZy4KKyAgICAgICAgKFdlYkNvcmU6OmNvbnN0cnVjdEN1c3RvbUVs
ZW1lbnRTeW5jaHJvbm91c2x5KTogRG9uJ3QgYWRkIHRoZSBsb2NhbCBuYW1lIGFzIGFuIGFyZ3Vt
ZW50LgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQ3VzdG9tRWxlbWVudEludGVyZmFjZS5oOgor
CisgICAgICAgICogZG9tL0N1c3RvbUVsZW1lbnRSZWdpc3RyeS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDdXN0b21FbGVtZW50UmVnaXN0cnk6OmZpbmRJbnRlcmZhY2UpOiBKdXN0IGZpbmQgdGhl
IGludGVyZmFjZSBiYXNlZCBvbiB0aGUgbG9jYWwgbmFtZSBhZnRlcgorICAgICAgICBjaGVja2lu
ZyB0aGUgbmFtZXNwYWNlIFVSSSB0byBiZSB0aGF0IG9mIHRoZSBYSFRNTC4gV2UgbmVlZCB0byBp
Z25vcmUgdGhlIHByZWZpeCBmb3IgdGhlIHB1cnBvc2Ugb2YgbG9va2luZworICAgICAgICB1cCB0
aGUgY3VzdG9tIGVsZW1lbnQgZGVmaW5pdGlvbiBhcyBzcGVjaWZpZWQgaW4gdGhlIGxhdGVzdCBI
VE1MIHNwZWNpZmljYXRpb246CisgICAgICAgIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcv
bXVsdGlwYWdlL3NjcmlwdGluZy5odG1sI2xvb2stdXAtYS1jdXN0b20tZWxlbWVudC1kZWZpbml0
aW9uCisKKyAgICAgICAgKiBkb20vRE9NSW1wbGVtZW50YXRpb24uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RE9NSW1wbGVtZW50YXRpb246OmNyZWF0ZURvY3VtZW50KTogQWRkZWQgYW4gYXNzZXJ0
aW9uIHRvIG1ha2Ugc3VyZSB3ZSBkb24ndCBpbnZva2Ugc2NyaXB0cyB3aGlsZQorICAgICAgICBj
b25zdHJ1Y3RpbmcgdGhlIGRvY3VtZW50IGVsZW1lbnQuCisKKyAgICAgICAgKiBkb20vRG9jdW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlVXBncmFkZUNhbmRpZGF0ZUVsZW1lbnQp
OiBNYWRlIHRoaXMgZnVuY3Rpb24gY3JlYXRlIGEgSFRNTFVua25vd25FbGVtZW50IGluc3RlYWQg
b2YgcmV0dXJuaW5nCisgICAgICAgIG51bGxwdHIgdG8gc2hhcmUgbW9yZSBjb2RlLiBBbHNvIGFk
ZGVkIGEgdmFyaWFudCB3aGljaCB0YWtlcyBRdWFsaWZpZWROYW1lLgorICAgICAgICAoV2ViQ29y
ZTo6aXNWYWxpZEhUTUxFbGVtZW50TmFtZSk6IEFkZGVkOyBoZWxwZXJzIGZvciBjcmVhdGVIVE1M
RWxlbWVudFdpdGhOYW1lVmFsaWRhdGlvbiB0byBjYWxsIGlzVmFsaWROYW1lCisgICAgICAgIG9u
IERvY3VtZW50IHdpdGggdGhlIHJpZ2h0IGFyZ3VtZW50LgorICAgICAgICAoV2ViQ29yZTo6Y3Jl
YXRlSFRNTEVsZW1lbnRXaXRoTmFtZVZhbGlkYXRpb24pOiBUZW1wbGF0aXplZCB0aGUgZnVuY3Rp
b24gdG8gYmUgY2FsbGVkIHdpdGggZWl0aGVyIEF0b21pY1N0cmluZworICAgICAgICBvciBRdWFs
aWZpZWROYW1lIGZvciB0aGUgbmFtZS4KKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUZhbGxiYWNr
SFRNTEVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmNyZWF0ZUVsZW1lbnRO
Uyk6IENhbGwgY3JlYXRlSFRNTEVsZW1lbnRXaXRoTmFtZVZhbGlkYXRpb24gdG8gY3JlYXRlIGEg
Y3VzdG9tIGVsZW1lbnQgaWYKKyAgICAgICAgcG9zc2libGUuIFRoaXMgZnVuY3Rpb24gZW5kcyB1
cCByZS12YWxpZGF0aW5nIHRoZSBlbGVtZW50IG5hbWUgYmVmb3JlIGNyZWF0aW5nIGEgSFRNTFVu
a25vd25FbGVtZW50IGJ1dCB0aGF0CisgICAgICAgIHNob3VsZG4ndCBiZSBhIGNvbW1vbiBzY2Vu
YXJpbyB0byBtYXR0ZXIuIEluIGZhY3QsIGNyZWF0ZUVsZW1lbnROUyBpcyBhIHJhcmVseSB1c2Vk
IEFQSS4KKwogMjAxNi0xMS0xMiAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAog
ICAgICAgICBkb2N1bWVudC5jdXJyZW50U2NyaXB0IHNob3VsZCBiZSBudWxsIHdoZW4gcnVubmlu
ZyBhIHNjcmlwdCBpbnNpZGUgYSBzaGFkb3cgdHJlZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNDdXN0b21FbGVtZW50SW50ZXJmYWNlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tRWxlbWVudEludGVyZmFjZS5jcHAKaW5kZXggM2M0YWZk
ODg4NWM2Nzg4ZGFkYTdjMjU2ODdjMzgxNmM5NDdlMmRkZC4uOWFlYmRmZWJiZWZlNjRlY2Q5ZDQz
MTllMWEzNzBiMTUzMDg4NGVjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNDdXN0b21FbGVtZW50SW50ZXJmYWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2UuY3BwCkBAIC03MCw2ICs3MCwyMSBAQCBS
ZWY8RWxlbWVudD4gSlNDdXN0b21FbGVtZW50SW50ZXJmYWNlOjpjb25zdHJ1Y3RFbGVtZW50V2l0
aEZhbGxiYWNrKERvY3VtZW50JiBkbwogICAgIHJldHVybiBlbGVtZW50LmdldCgpOwogfQogCitS
ZWY8RWxlbWVudD4gSlNDdXN0b21FbGVtZW50SW50ZXJmYWNlOjpjb25zdHJ1Y3RFbGVtZW50V2l0
aEZhbGxiYWNrKERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSkK
K3sKKyAgICBpZiAoYXV0byBlbGVtZW50ID0gdHJ5VG9Db25zdHJ1Y3RDdXN0b21FbGVtZW50KGRv
Y3VtZW50LCBuYW1lLmxvY2FsTmFtZSgpKSkgeworICAgICAgICBpZiAobmFtZS5wcmVmaXgoKSAh
PSBudWxsQXRvbSkKKyAgICAgICAgICAgIGVsZW1lbnQtPnNldFByZWZpeChuYW1lLnByZWZpeCgp
LCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKKyAgICAgICAgcmV0dXJuIGVsZW1lbnQucmVsZWFzZU5v
bk51bGwoKTsKKyAgICB9CisKKyAgICBhdXRvIGVsZW1lbnQgPSBIVE1MVW5rbm93bkVsZW1lbnQ6
OmNyZWF0ZShuYW1lLCBkb2N1bWVudCk7CisgICAgZWxlbWVudC0+c2V0SXNDdXN0b21FbGVtZW50
VXBncmFkZUNhbmRpZGF0ZSgpOworICAgIGVsZW1lbnQtPnNldElzRmFpbGVkQ3VzdG9tRWxlbWVu
dCgqdGhpcyk7CisKKyAgICByZXR1cm4gZWxlbWVudC5nZXQoKTsKK30KKwogUmVmUHRyPEVsZW1l
bnQ+IEpTQ3VzdG9tRWxlbWVudEludGVyZmFjZTo6dHJ5VG9Db25zdHJ1Y3RDdXN0b21FbGVtZW50
KERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbE5hbWUpCiB7CiAg
ICAgaWYgKCFjYW5JbnZva2VDYWxsYmFjaygpKQpAQCAtMTEwLDEwICsxMjUsOCBAQCBzdGF0aWMg
UmVmUHRyPEVsZW1lbnQ+IGNvbnN0cnVjdEN1c3RvbUVsZW1lbnRTeW5jaHJvbm91c2x5KERvY3Vt
ZW50JiBkb2N1bWVudCwgVgogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKLSAgICBN
YXJrZWRBcmd1bWVudEJ1ZmZlciBhcmdzOwotICAgIGFyZ3MuYXBwZW5kKGpzU3RyaW5nV2l0aENh
Y2hlKCZzdGF0ZSwgbG9jYWxOYW1lKSk7Ci0KICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25D
b29raWUgY29va2llID0gSlNNYWluVGhyZWFkRXhlY1N0YXRlOjppbnN0cnVtZW50RnVuY3Rpb25D
b25zdHJ1Y3QoJmRvY3VtZW50LCBjb25zdHJ1Y3RUeXBlLCBjb25zdHJ1Y3REYXRhKTsKKyAgICBN
YXJrZWRBcmd1bWVudEJ1ZmZlciBhcmdzOwogICAgIEpTVmFsdWUgbmV3RWxlbWVudCA9IGNvbnN0
cnVjdCgmc3RhdGUsIGNvbnN0cnVjdG9yLCBjb25zdHJ1Y3RUeXBlLCBjb25zdHJ1Y3REYXRhLCBh
cmdzKTsKICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENhbGxGdW5jdGlvbihjb29r
aWUsICZkb2N1bWVudCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgbnVsbHB0cik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbUVsZW1lbnRJ
bnRlcmZhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tRWxlbWVudElu
dGVyZmFjZS5oCmluZGV4IGZkMzY4NDlhNWUyZTUxNGUyMDA4NGZmN2JiOTc4ZTY4MjJkZjAxNjIu
LjhhM2Y2NTZlZTcwN2NkZWI0NTU1Zjk1ZjU4YTJjOTcxYzUyMzk5NDMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tRWxlbWVudEludGVyZmFjZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tRWxlbWVudEludGVyZmFjZS5oCkBA
IC01OSw2ICs1OSw3IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICBSZWY8RWxlbWVudD4gY29uc3Ry
dWN0RWxlbWVudFdpdGhGYWxsYmFjayhEb2N1bWVudCYsIGNvbnN0IEF0b21pY1N0cmluZyYpOwor
ICAgIFJlZjxFbGVtZW50PiBjb25zdHJ1Y3RFbGVtZW50V2l0aEZhbGxiYWNrKERvY3VtZW50Jiwg
Y29uc3QgUXVhbGlmaWVkTmFtZSYpOwogCiAgICAgdm9pZCB1cGdyYWRlRWxlbWVudChFbGVtZW50
Jik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9DdXN0b21FbGVtZW50UmVnaXN0
cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0N1c3RvbUVsZW1lbnRSZWdpc3RyeS5jcHAKaW5k
ZXggZmI1NjY2MDgzYjdkZTg0MDViZGRjNTJhNzIyYjMzMzYxZjZmY2NmMi4uZDRmNGQwOWY3OTU1
NWI3YTMwNzNlYzAzYzA3YWNjYzllMGNmOTJhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL0N1c3RvbUVsZW1lbnRSZWdpc3RyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0N1
c3RvbUVsZW1lbnRSZWdpc3RyeS5jcHAKQEAgLTg3LDExICs4Nyw5IEBAIEpTQ3VzdG9tRWxlbWVu
dEludGVyZmFjZSogQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5OjpmaW5kSW50ZXJmYWNlKGNvbnN0IEVs
ZW1lbnQmIGVsCiAKIEpTQ3VzdG9tRWxlbWVudEludGVyZmFjZSogQ3VzdG9tRWxlbWVudFJlZ2lz
dHJ5OjpmaW5kSW50ZXJmYWNlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUpIGNvbnN0CiB7Ci0g
ICAgQVNTRVJUKCFuYW1lLmhhc1ByZWZpeCgpKTsKICAgICBpZiAobmFtZS5uYW1lc3BhY2VVUkko
KSAhPSBIVE1MTmFtZXM6OnhodG1sTmFtZXNwYWNlVVJJKQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKLSAgICBhdXRvIGl0ID0gbV9uYW1lTWFwLmZpbmQobmFtZS5sb2NhbE5hbWUoKSk7Ci0gICAg
cmV0dXJuIGl0ID09IG1fbmFtZU1hcC5lbmQoKSB8fCBpdC0+dmFsdWUtPm5hbWUoKSAhPSBuYW1l
ID8gbnVsbHB0ciA6IGNvbnN0X2Nhc3Q8SlNDdXN0b21FbGVtZW50SW50ZXJmYWNlKj4oaXQtPnZh
bHVlLnB0cigpKTsKKyAgICByZXR1cm4gbV9uYW1lTWFwLmdldChuYW1lLmxvY2FsTmFtZSgpKTsK
IH0KIAogSlNDdXN0b21FbGVtZW50SW50ZXJmYWNlKiBDdXN0b21FbGVtZW50UmVnaXN0cnk6OmZp
bmRJbnRlcmZhY2UoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKSBjb25zdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL0RPTUltcGxlbWVudGF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9ET01JbXBsZW1lbnRhdGlvbi5jcHAKaW5kZXggZGVhYTkyYmExZGYxZWEzODRiYzJkMDQ4
NzAyMWM3MDQyNWIxYTBjNy4uYzA4ODFkNGQ4NDU4NjUyMjQ4NmU0NjZhZjJiNTAxMjE5ZGZjZTA2
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RPTUltcGxlbWVudGF0aW9uLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRE9NSW1wbGVtZW50YXRpb24uY3BwCkBAIC0xMTUsNiAr
MTE1LDcgQEAgRXhjZXB0aW9uT3I8UmVmPFhNTERvY3VtZW50Pj4gRE9NSW1wbGVtZW50YXRpb246
OmNyZWF0ZURvY3VtZW50KGNvbnN0IFN0cmluZyYgbmEKIAogICAgIFJlZlB0cjxFbGVtZW50PiBk
b2N1bWVudEVsZW1lbnQ7CiAgICAgaWYgKCFxdWFsaWZpZWROYW1lLmlzRW1wdHkoKSkgeworICAg
ICAgICBBU1NFUlQoIWRvY3VtZW50LT5kb21XaW5kb3coKSk7IC8vIGNyZWF0ZUVsZW1lbk5TIHNo
b3VsZCBub3Qgc3luY2hyb25vdXNseSBjb25zdHJ1Y3QgYSBjdXN0b20gZWxlbWVudCBoZXJlLgog
ICAgICAgICBhdXRvIHJlc3VsdCA9IGRvY3VtZW50LT5jcmVhdGVFbGVtZW50TlMobmFtZXNwYWNl
VVJJLCBxdWFsaWZpZWROYW1lKTsKICAgICAgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkK
ICAgICAgICAgICAgIHJldHVybiByZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudC5jcHAKaW5kZXggZmE0M2ZhMDIxZWJhYjBkZmU3NjY4ODM1NzUzZWYzZjVkM2RiMmVh
OS4uMWRmYTZkZDZiZGY4YTIwNzhlZjE5OWFmODdlZmNjMWJlYzE0ZjRjMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnQuY3BwCkBAIC04NjEsNDIgKzg2MSw0NCBAQCB2b2lkIERvY3VtZW50OjpjaGlsZHJl
bkNoYW5nZWQoY29uc3QgQ2hpbGRDaGFuZ2UmIGNoYW5nZSkKICAgICBzdHlsZVNjb3BlKCkuY2xl
YXJSZXNvbHZlcigpOwogfQogCi1zdGF0aWMgQUxXQVlTX0lOTElORSBSZWZQdHI8SFRNTEVsZW1l
bnQ+IGNyZWF0ZVVwZ3JhZGVDYW5kaWRhdGVFbGVtZW50KERvY3VtZW50JiBkb2N1bWVudCwgY29u
c3QgUXVhbGlmaWVkTmFtZSYgbmFtZSkKK3N0YXRpYyBBTFdBWVNfSU5MSU5FIFJlZjxIVE1MRWxl
bWVudD4gY3JlYXRlVXBncmFkZUNhbmRpZGF0ZUVsZW1lbnQoRG9jdW1lbnQmIGRvY3VtZW50LCBj
b25zdCBRdWFsaWZpZWROYW1lJiBuYW1lKQogewotICAgIGlmICghUnVudGltZUVuYWJsZWRGZWF0
dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5jdXN0b21FbGVtZW50c0VuYWJsZWQoKSkKLSAgICAgICAg
cmV0dXJuIG51bGxwdHI7Ci0KLSAgICBpZiAoRG9jdW1lbnQ6OnZhbGlkYXRlQ3VzdG9tRWxlbWVu
dE5hbWUobmFtZS5sb2NhbE5hbWUoKSkgIT0gQ3VzdG9tRWxlbWVudE5hbWVWYWxpZGF0aW9uU3Rh
dHVzOjpWYWxpZCkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgaWYgKCFSdW50aW1lRW5h
YmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLmN1c3RvbUVsZW1lbnRzRW5hYmxlZCgpCisg
ICAgICAgIHx8IERvY3VtZW50Ojp2YWxpZGF0ZUN1c3RvbUVsZW1lbnROYW1lKG5hbWUubG9jYWxO
YW1lKCkpICE9IEN1c3RvbUVsZW1lbnROYW1lVmFsaWRhdGlvblN0YXR1czo6VmFsaWQpCisgICAg
ICAgIHJldHVybiBIVE1MVW5rbm93bkVsZW1lbnQ6OmNyZWF0ZShuYW1lLCBkb2N1bWVudCk7CiAK
ICAgICBhdXRvIGVsZW1lbnQgPSBIVE1MRWxlbWVudDo6Y3JlYXRlKG5hbWUsIGRvY3VtZW50KTsK
ICAgICBlbGVtZW50LT5zZXRJc0N1c3RvbUVsZW1lbnRVcGdyYWRlQ2FuZGlkYXRlKCk7Ci0gICAg
cmV0dXJuIFdURk1vdmUoZWxlbWVudCk7CisgICAgcmV0dXJuIGVsZW1lbnQ7CiB9CiAKLXN0YXRp
YyBFeGNlcHRpb25PcjxSZWY8RWxlbWVudD4+IGNyZWF0ZUhUTUxFbGVtZW50V2l0aE5hbWVWYWxp
ZGF0aW9uKERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbE5hbWUp
CitzdGF0aWMgQUxXQVlTX0lOTElORSBSZWY8SFRNTEVsZW1lbnQ+IGNyZWF0ZVVwZ3JhZGVDYW5k
aWRhdGVFbGVtZW50KERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgQXRvbWljU3RyaW5nJiBsb2Nh
bE5hbWUpCiB7Ci0gICAgYXV0byBlbGVtZW50ID0gSFRNTEVsZW1lbnRGYWN0b3J5OjpjcmVhdGVL
bm93bkVsZW1lbnQobG9jYWxOYW1lLCBkb2N1bWVudCk7CisgICAgcmV0dXJuIGNyZWF0ZVVwZ3Jh
ZGVDYW5kaWRhdGVFbGVtZW50KGRvY3VtZW50LCBRdWFsaWZpZWROYW1lIHsgbnVsbEF0b20sIGxv
Y2FsTmFtZSwgeGh0bWxOYW1lc3BhY2VVUkkgfSk7Cit9CisKK3N0YXRpYyBib29sIGlzVmFsaWRI
VE1MRWxlbWVudE5hbWUoY29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbE5hbWUpIHsgcmV0dXJuIERv
Y3VtZW50Ojppc1ZhbGlkTmFtZShsb2NhbE5hbWUpOyB9CitzdGF0aWMgYm9vbCBpc1ZhbGlkSFRN
TEVsZW1lbnROYW1lKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUpIHsgcmV0dXJuIERvY3VtZW50
Ojppc1ZhbGlkTmFtZShuYW1lLmxvY2FsTmFtZSgpKTsgfQorCit0ZW1wbGF0ZSA8Y2xhc3MgTmFt
ZVR5cGU+CitzdGF0aWMgRXhjZXB0aW9uT3I8UmVmPEVsZW1lbnQ+PiBjcmVhdGVIVE1MRWxlbWVu
dFdpdGhOYW1lVmFsaWRhdGlvbihEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IE5hbWVUeXBlJiBu
YW1lKQoreworICAgIGF1dG8gZWxlbWVudCA9IEhUTUxFbGVtZW50RmFjdG9yeTo6Y3JlYXRlS25v
d25FbGVtZW50KG5hbWUsIGRvY3VtZW50KTsKICAgICBpZiAoTElLRUxZKGVsZW1lbnQpKQogICAg
ICAgICByZXR1cm4gUmVmPEVsZW1lbnQ+IHsgZWxlbWVudC5yZWxlYXNlTm9uTnVsbCgpIH07CiAK
ICAgICBpZiAoYXV0byogd2luZG93ID0gZG9jdW1lbnQuZG9tV2luZG93KCkpIHsKICAgICAgICAg
YXV0byogcmVnaXN0cnkgPSB3aW5kb3ctPmN1c3RvbUVsZW1lbnRSZWdpc3RyeSgpOwogICAgICAg
ICBpZiAoVU5MSUtFTFkocmVnaXN0cnkpKSB7Ci0gICAgICAgICAgICBpZiAoYXV0byogZWxlbWVu
dEludGVyZmFjZSA9IHJlZ2lzdHJ5LT5maW5kSW50ZXJmYWNlKGxvY2FsTmFtZSkpCi0gICAgICAg
ICAgICAgICAgcmV0dXJuIGVsZW1lbnRJbnRlcmZhY2UtPmNvbnN0cnVjdEVsZW1lbnRXaXRoRmFs
bGJhY2soZG9jdW1lbnQsIGxvY2FsTmFtZSk7CisgICAgICAgICAgICBpZiAoYXV0byogZWxlbWVu
dEludGVyZmFjZSA9IHJlZ2lzdHJ5LT5maW5kSW50ZXJmYWNlKG5hbWUpKQorICAgICAgICAgICAg
ICAgIHJldHVybiBlbGVtZW50SW50ZXJmYWNlLT5jb25zdHJ1Y3RFbGVtZW50V2l0aEZhbGxiYWNr
KGRvY3VtZW50LCBuYW1lKTsKICAgICAgICAgfQogICAgIH0KIAotICAgIGlmIChVTkxJS0VMWSgh
RG9jdW1lbnQ6OmlzVmFsaWROYW1lKGxvY2FsTmFtZSkpKQorICAgIGlmIChVTkxJS0VMWSghaXNW
YWxpZEhUTUxFbGVtZW50TmFtZShuYW1lKSkpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJ
TlZBTElEX0NIQVJBQ1RFUl9FUlIgfTsKIAotICAgIFF1YWxpZmllZE5hbWUgcXVhbGlmaWVkTmFt
ZSB7IG51bGxBdG9tLCBsb2NhbE5hbWUsIHhodG1sTmFtZXNwYWNlVVJJIH07Ci0KLSAgICBpZiAo
YXV0byBlbGVtZW50ID0gY3JlYXRlVXBncmFkZUNhbmRpZGF0ZUVsZW1lbnQoZG9jdW1lbnQsIHF1
YWxpZmllZE5hbWUpKQotICAgICAgICByZXR1cm4gUmVmPEVsZW1lbnQ+IHsgZWxlbWVudC5yZWxl
YXNlTm9uTnVsbCgpIH07Ci0KLSAgICByZXR1cm4gUmVmPEVsZW1lbnQ+IHsgSFRNTFVua25vd25F
bGVtZW50OjpjcmVhdGUocXVhbGlmaWVkTmFtZSwgZG9jdW1lbnQpIH07CisgICAgcmV0dXJuIFJl
ZjxFbGVtZW50PiB7IGNyZWF0ZVVwZ3JhZGVDYW5kaWRhdGVFbGVtZW50KGRvY3VtZW50LCBuYW1l
KSB9OwogfQogCiBFeGNlcHRpb25PcjxSZWY8RWxlbWVudD4+IERvY3VtZW50OjpjcmVhdGVFbGVt
ZW50Rm9yQmluZGluZ3MoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKQpAQCAtMTA1NSw5ICsxMDU3
LDcgQEAgc3RhdGljIFJlZjxIVE1MRWxlbWVudD4gY3JlYXRlRmFsbGJhY2tIVE1MRWxlbWVudChE
b2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFF1YWwKICAgICAgICAgfQogICAgIH0KICAgICAvLyBG
SVhNRTogU2hvdWxkIHdlIGFsc28gY2hlY2sgdGhlIGVxdWFsaXR5IG9mIHByZWZpeCBiZXR3ZWVu
IHRoZSBjdXN0b20gZWxlbWVudCBhbmQgbmFtZT8KLSAgICBpZiAoYXV0byBlbGVtZW50ID0gY3Jl
YXRlVXBncmFkZUNhbmRpZGF0ZUVsZW1lbnQoZG9jdW1lbnQsIG5hbWUpKQotICAgICAgICByZXR1
cm4gZWxlbWVudC5yZWxlYXNlTm9uTnVsbCgpOwotICAgIHJldHVybiBIVE1MVW5rbm93bkVsZW1l
bnQ6OmNyZWF0ZShuYW1lLCBkb2N1bWVudCk7CisgICAgcmV0dXJuIGNyZWF0ZVVwZ3JhZGVDYW5k
aWRhdGVFbGVtZW50KGRvY3VtZW50LCBuYW1lKTsKIH0KIAogLy8gRklYTUU6IFRoaXMgc2hvdWxk
IHJlYWxseSBiZSBpbiBhIHBvc3NpYmxlIEVsZW1lbnRGYWN0b3J5IGNsYXNzLgpAQCAtMTE1OSw2
ICsxMTU5LDEwIEBAIEV4Y2VwdGlvbk9yPFJlZjxFbGVtZW50Pj4gRG9jdW1lbnQ6OmNyZWF0ZUVs
ZW1lbnROUyhjb25zdCBBdG9taWNTdHJpbmcmIG5hbWVzcGFjCiAgICAgUXVhbGlmaWVkTmFtZSBw
YXJzZWROYW1lIHsgcGFyc2VSZXN1bHQucmVsZWFzZVJldHVyblZhbHVlKCkgfTsKICAgICBpZiAo
IWhhc1ZhbGlkTmFtZXNwYWNlRm9yRWxlbWVudHMocGFyc2VkTmFtZSkpCiAgICAgICAgIHJldHVy
biBFeGNlcHRpb24geyBOQU1FU1BBQ0VfRVJSIH07CisKKyAgICBpZiAocGFyc2VkTmFtZS5uYW1l
c3BhY2VVUkkoKSA9PSB4aHRtbE5hbWVzcGFjZVVSSSkKKyAgICAgICAgcmV0dXJuIGNyZWF0ZUhU
TUxFbGVtZW50V2l0aE5hbWVWYWxpZGF0aW9uKCp0aGlzLCBwYXJzZWROYW1lKTsKKwogICAgIHJl
dHVybiBjcmVhdGVFbGVtZW50KHBhcnNlZE5hbWUsIGZhbHNlKTsKIH0KIApkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDBkYzNk
NzIyYzZhZjE0MmRmMDU0NDVmNmQxYzAzMmEwNDZiYWE1ZGMuLmQwNDAzZTZiZWU2YjRiOGUyMjQx
ZDA0ODMzMGZjM2I1MmZiZWNiNDMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZwor
KysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxNi0xMS0xMyAg
Unlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KKworICAgICAgICBkb2N1bWVudC5jcmVh
dGVFbGVtZW50TlMgZG9lc24ndCBjb25zdHJ1Y3QgYSBjdXN0b20gZWxlbWVudAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY0NzAwCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkZWQgVzNDIHN0eWxlIHRl
c3RoYXJuZXNzLmpzIHRlc3RzIGZvciBjcmVhdGVFbGVtZW50TlMgYW5kIERPTUltcGxlbWVudGF0
aW9uJ3MgY3JlYXRlRG9jdW1lbnQuCisKKyAgICAgICAgKiBmYXN0L2N1c3RvbS1lbGVtZW50cy9E
T01JbXBsZW1lbnRhdGlvbi1jcmVhdGVEb2N1bWVudC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAg
ICAgICAqIGZhc3QvY3VzdG9tLWVsZW1lbnRzL0RPTUltcGxlbWVudGF0aW9uLWNyZWF0ZURvY3Vt
ZW50Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY3VzdG9tLWVsZW1lbnRzL2RvY3VtZW50
LWNyZWF0ZUVsZW1lbnROUy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY3Vz
dG9tLWVsZW1lbnRzL2RvY3VtZW50LWNyZWF0ZUVsZW1lbnROUy5odG1sOiBBZGRlZC4KKwogMjAx
Ni0xMS0xMCAgRXJpYyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KIAogICAgICAg
ICBbTWVkaWFTdHJlYW1dIGFwcGx5IGNvbnN0cmFpbnRzIHBhc3NlZCB0byBnZXRVc2VyTWVkaWEo
KQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jdXN0b20tZWxlbWVudHMvRE9NSW1wbGVt
ZW50YXRpb24tY3JlYXRlRG9jdW1lbnQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9j
dXN0b20tZWxlbWVudHMvRE9NSW1wbGVtZW50YXRpb24tY3JlYXRlRG9jdW1lbnQtZXhwZWN0ZWQu
dHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmM1NDA1ZGI5Y2FlNzIwMmU0NzY3ZWU4ZmZmYTA0MTk1ODIwMGUzYzMK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2N1c3RvbS1lbGVtZW50cy9ET01J
bXBsZW1lbnRhdGlvbi1jcmVhdGVEb2N1bWVudC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzIEBA
CisKK1BBU1MgZG9jdW1lbnQuY3JlYXRlRWxlbWVudCBpbnZva2UgYSBjdXN0b20gZWxlbWVudCBj
b25zdHJ1Y3RvciB3aXRoIG5vIGFyZ3VtZW50cyAKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZmFzdC9jdXN0b20tZWxlbWVudHMvRE9NSW1wbGVtZW50YXRpb24tY3JlYXRlRG9jdW1lbnQuaHRt
bCBiL0xheW91dFRlc3RzL2Zhc3QvY3VzdG9tLWVsZW1lbnRzL0RPTUltcGxlbWVudGF0aW9uLWNy
ZWF0ZURvY3VtZW50Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjZlNGUzMGRlYjk3YTE4ZTNjNzk2MDViOWE1
MWYyMGUxODNhM2RhYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY3VzdG9t
LWVsZW1lbnRzL0RPTUltcGxlbWVudGF0aW9uLWNyZWF0ZURvY3VtZW50Lmh0bWwKQEAgLTAsMCAr
MSw0MSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHRpdGxlPkN1c3RvbSBF
bGVtZW50czogZG9jdW1lbnQuaW1wbGVtZW50YXRpb24uY3JlYXRlRWxlbWVudCBtdXN0IG5vdCBp
bnN0YW50aWF0ZSBhIGN1c3RvbSBlbGVtZW50PC90aXRsZT4KKzxtZXRhIG5hbWU9ImF1dGhvciIg
dGl0bGU9IlJ5b3N1a2UgTml3YSIgaHJlZj0ibWFpbHRvOnJuaXdhQHdlYmtpdC5vcmciPgorPG1l
dGEgbmFtZT0iYXNzZXJ0IiBjb250ZW50PSJkb2N1bWVudC5pbXBsZW1lbnRhdGlvbi5jcmVhdGVF
bGVtZW50IG11c3Qgbm90IGluc3RhbnRpYXRlIGEgY3VzdG9tIGVsZW1lbnQiPgorPGxpbmsgcmVs
PSJoZWxwIiBjb250ZW50PSJodHRwczovL2RvbS5zcGVjLndoYXR3Zy5vcmcvI2RvbS1kb21pbXBs
ZW1lbnRhdGlvbi1jcmVhdGVkb2N1bWVudCI+Cis8bGluayByZWw9ImhlbHAiIGNvbnRlbnQ9Imh0
dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvI2xvb2stdXAtYS1jdXN0b20tZWxlbWVudC1kZWZp
bml0aW9uIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9jdXN0b20tZWxlbWVudHMvcmVzb3VyY2VzL2N1c3RvbS1lbGVtZW50cy1oZWxwZXJz
LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0ibG9nIj48L2Rpdj4KKzxz
Y3JpcHQ+CisKK2NvbnN0IHhodG1sTmFtZXNwYWNlVVJJID0gJ2h0dHA6Ly93d3cudzMub3JnLzE5
OTkveGh0bWwnOworCit0ZXN0X3dpdGhfd2luZG93KChjb250ZW50V2luZG93LCBjb250ZW50RG9j
dW1lbnQpID0+IHsKKyAgICBsZXQgY29uc3RydWN0b3JDb3VudCA9IDA7CisgICAgY2xhc3MgTXlD
dXN0b21FbGVtZW50IGV4dGVuZHMgY29udGVudFdpbmRvdy5IVE1MRWxlbWVudCB7CisgICAgICAg
IGNvbnN0cnVjdG9yKCkgeworICAgICAgICAgICAgc3VwZXIoKTsKKyAgICAgICAgICAgIGNvbnN0
cnVjdG9yQ291bnQrKzsKKyAgICAgICAgfQorICAgIH0KKyAgICBjb250ZW50V2luZG93LmN1c3Rv
bUVsZW1lbnRzLmRlZmluZSgnbXktY3VzdG9tLWVsZW1lbnQnLCBNeUN1c3RvbUVsZW1lbnQpOwor
ICAgIGNvbnN0IGluc3RhbmNlID0gY29udGVudERvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ215LWN1
c3RvbS1lbGVtZW50Jyk7CisgICAgYXNzZXJ0X3RydWUoaW5zdGFuY2UgaW5zdGFuY2VvZiBNeUN1
c3RvbUVsZW1lbnQpOworICAgIGFzc2VydF9lcXVhbHMoY29uc3RydWN0b3JDb3VudCwgMSk7CisK
KyAgICBjb25zdCBuZXdEb2N1bWVudCA9IGNvbnRlbnREb2N1bWVudC5pbXBsZW1lbnRhdGlvbi5j
cmVhdGVEb2N1bWVudCh4aHRtbE5hbWVzcGFjZVVSSSwgJ215LWN1c3RvbS1lbGVtZW50JywgbnVs
bCk7CisgICAgYXNzZXJ0X2VxdWFscyhjb25zdHJ1Y3RvckNvdW50LCAxKTsKKyAgICBhc3NlcnRf
dHJ1ZShuZXdEb2N1bWVudC5kb2N1bWVudEVsZW1lbnQgaW5zdGFuY2VvZiBjb250ZW50V2luZG93
LkhUTUxFbGVtZW50KTsKKyAgICBhc3NlcnRfZXF1YWxzKG5ld0RvY3VtZW50LmRvY3VtZW50RWxl
bWVudC5sb2NhbE5hbWUsICdteS1jdXN0b20tZWxlbWVudCcpOworICAgIGFzc2VydF9mYWxzZShu
ZXdEb2N1bWVudC5kb2N1bWVudEVsZW1lbnQgaW5zdGFuY2VvZiBNeUN1c3RvbUVsZW1lbnQpOwor
fSwgJ2RvY3VtZW50LmNyZWF0ZUVsZW1lbnQgaW52b2tlIGEgY3VzdG9tIGVsZW1lbnQgY29uc3Ry
dWN0b3Igd2l0aCBubyBhcmd1bWVudHMnKTsKKworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2N1c3RvbS1lbGVtZW50cy9kb2N1bWVudC1j
cmVhdGVFbGVtZW50TlMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9jdXN0b20tZWxl
bWVudHMvZG9jdW1lbnQtY3JlYXRlRWxlbWVudE5TLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ZjE4YmM4NjcxMWUzNzQzYmRlOTFlYTY2MTIwOWFlZThmNzMxZTI5Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvZmFzdC9jdXN0b20tZWxlbWVudHMvZG9jdW1lbnQtY3JlYXRlRWxlbWVu
dE5TLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDYgQEAKKworUEFTUyBkb2N1bWVudC5jcmVhdGVF
bGVtZW50IGludm9rZSBhIGN1c3RvbSBlbGVtZW50IGNvbnN0cnVjdG9yIHdpdGggbm8gYXJndW1l
bnRzIAorUEFTUyBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMgbXVzdCBjcmVhdGUgYW4gaW5zdGFu
Y2Ugb2YgY3VzdG9tIGVsZW1lbnRzIAorUEFTUyBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMgbXVz
dCBzZXQgdGhlIHByZWZpeCBhZnRlciBjb25zdHJ1Y3RpbmcgYSBjdXN0b20gZWxlbWVudCAKK1BB
U1MgZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TIG11c3QgdXNlIHRoZSBlbGVtZW50IHJldHVybmVk
IGJ5IHRoZSBjb25zdHJ1Y3RvciAKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jdXN0
b20tZWxlbWVudHMvZG9jdW1lbnQtY3JlYXRlRWxlbWVudE5TLmh0bWwgYi9MYXlvdXRUZXN0cy9m
YXN0L2N1c3RvbS1lbGVtZW50cy9kb2N1bWVudC1jcmVhdGVFbGVtZW50TlMuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4zNjkzYTEwZWU3MTI5Njc3NjRhZDU4OTQ0YzA0YjAzYTAzNjY4ZTNmCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jdXN0b20tZWxlbWVudHMvZG9jdW1lbnQtY3JlYXRl
RWxlbWVudE5TLmh0bWwKQEAgLTAsMCArMSw4OSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4K
KzxoZWFkPgorPHRpdGxlPkN1c3RvbSBFbGVtZW50czogZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5T
IG11c3QgY3JlYXRlIGFuIGVsZW1lbnQgd2l0aCBzeW5jaHJvbm91cyBjdXN0b20gZWxlbWVudHMg
ZmxhZyBzZXQ8L3RpdGxlPgorPG1ldGEgbmFtZT0iYXV0aG9yIiB0aXRsZT0iUnlvc3VrZSBOaXdh
IiBocmVmPSJtYWlsdG86cm5pd2FAd2Via2l0Lm9yZyI+Cis8bWV0YSBuYW1lPSJhc3NlcnQiIGNv
bnRlbnQ9ImRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyBtdXN0IGNyZWF0ZSBhbiBlbGVtZW50IHdp
dGggc3luY2hyb25vdXMgY3VzdG9tIGVsZW1lbnRzIGZsYWcgc2V0Ij4KKzxsaW5rIHJlbD0iaGVs
cCIgY29udGVudD0iaHR0cHM6Ly9kb20uc3BlYy53aGF0d2cub3JnLyNkb20tZG9jdW1lbnQtY3Jl
YXRlZWxlbWVudG5zIj4KKzxsaW5rIHJlbD0iaGVscCIgY29udGVudD0iaHR0cHM6Ly9kb20uc3Bl
Yy53aGF0d2cub3JnLyNjb25jZXB0LWNyZWF0ZS1lbGVtZW50Ij4KKzxzY3JpcHQgc3JjPSIuLi8u
Li9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4u
L3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jdXN0b20tZWxlbWVudHMvcmVz
b3VyY2VzL2N1c3RvbS1lbGVtZW50cy1oZWxwZXJzLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxi
b2R5PgorPGRpdiBpZD0ibG9nIj48L2Rpdj4KKzxzY3JpcHQ+CisKK2NvbnN0IHhodG1sTmFtZXNw
YWNlVVJJID0gJ2h0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwnOworCit0ZXN0X3dpdGhfd2lu
ZG93KChjb250ZW50V2luZG93LCBjb250ZW50RG9jdW1lbnQpID0+IHsKKyAgICBsZXQgY29uc3Ry
dWN0b3JBcmd1bWVudHM7CisgICAgY2xhc3MgTXlDdXN0b21FbGVtZW50IGV4dGVuZHMgY29udGVu
dFdpbmRvdy5IVE1MRWxlbWVudCB7CisgICAgICAgIGNvbnN0cnVjdG9yKCkgeworICAgICAgICAg
ICAgY29uc3RydWN0b3JBcmd1bWVudHMgPSBBcnJheS5mcm9tKGFyZ3VtZW50cyk7CisgICAgICAg
ICAgICBzdXBlcigpOworICAgICAgICB9CisgICAgfQorICAgIGNvbnRlbnRXaW5kb3cuY3VzdG9t
RWxlbWVudHMuZGVmaW5lKCdteS1jdXN0b20tZWxlbWVudCcsIE15Q3VzdG9tRWxlbWVudCk7Cisg
ICAgY29uc3QgaW5zdGFuY2UgPSBjb250ZW50RG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnbXktY3Vz
dG9tLWVsZW1lbnQnKTsKKyAgICBhc3NlcnRfdHJ1ZShpbnN0YW5jZSBpbnN0YW5jZW9mIE15Q3Vz
dG9tRWxlbWVudCk7CisgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhjb25zdHJ1Y3RvckFyZ3VtZW50
cywgW10pOworfSwgJ2RvY3VtZW50LmNyZWF0ZUVsZW1lbnQgaW52b2tlIGEgY3VzdG9tIGVsZW1l
bnQgY29uc3RydWN0b3Igd2l0aCBubyBhcmd1bWVudHMnKTsKKwordGVzdF93aXRoX3dpbmRvdygo
Y29udGVudFdpbmRvdywgY29udGVudERvY3VtZW50KSA9PiB7CisgICAgY2xhc3MgTXlDdXN0b21F
bGVtZW50IGV4dGVuZHMgY29udGVudFdpbmRvdy5IVE1MRWxlbWVudCB7fTsKKworICAgIGNvbnN0
IHVwZ3JhZGVDYW5kaWRhdGUgPSBjb250ZW50RG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKHhodG1s
TmFtZXNwYWNlVVJJLCAnbXktY3VzdG9tLWVsZW1lbnQnKTsKKyAgICBhc3NlcnRfdHJ1ZSh1cGdy
YWRlQ2FuZGlkYXRlIGluc3RhbmNlb2YgY29udGVudFdpbmRvdy5IVE1MRWxlbWVudCk7CisgICAg
YXNzZXJ0X2ZhbHNlKHVwZ3JhZGVDYW5kaWRhdGUgaW5zdGFuY2VvZiBNeUN1c3RvbUVsZW1lbnQp
OworCisgICAgY29udGVudFdpbmRvdy5jdXN0b21FbGVtZW50cy5kZWZpbmUoJ215LWN1c3RvbS1l
bGVtZW50JywgTXlDdXN0b21FbGVtZW50KTsKKyAgICBjb25zdCBpbnN0YW5jZSA9IGNvbnRlbnRE
b2N1bWVudC5jcmVhdGVFbGVtZW50TlMoeGh0bWxOYW1lc3BhY2VVUkksICdteS1jdXN0b20tZWxl
bWVudCcpOworICAgIGFzc2VydF90cnVlKGluc3RhbmNlIGluc3RhbmNlb2YgTXlDdXN0b21FbGVt
ZW50KTsKKyAgICBhc3NlcnRfZXF1YWxzKGluc3RhbmNlLmxvY2FsTmFtZSwgJ215LWN1c3RvbS1l
bGVtZW50Jyk7CisgICAgYXNzZXJ0X2VxdWFscyhpbnN0YW5jZS5uYW1lc3BhY2VVUkksIHhodG1s
TmFtZXNwYWNlVVJJKTsKK30sICdkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMgbXVzdCBjcmVhdGUg
YW4gaW5zdGFuY2Ugb2YgY3VzdG9tIGVsZW1lbnRzJyk7CisKK3Rlc3Rfd2l0aF93aW5kb3coKGNv
bnRlbnRXaW5kb3csIGNvbnRlbnREb2N1bWVudCkgPT4geworICAgIGNsYXNzIE15Q3VzdG9tRWxl
bWVudCBleHRlbmRzIGNvbnRlbnRXaW5kb3cuSFRNTEVsZW1lbnQge307CisgICAgY29udGVudFdp
bmRvdy5jdXN0b21FbGVtZW50cy5kZWZpbmUoJ2VsZW1lbnQtd2l0aC1wcmVmaXgnLCBNeUN1c3Rv
bUVsZW1lbnQpOworCisgICAgY29uc3QgaW5zdGFuY2UgPSBjb250ZW50RG9jdW1lbnQuY3JlYXRl
RWxlbWVudE5TKHhodG1sTmFtZXNwYWNlVVJJLCAnZm9vOmVsZW1lbnQtd2l0aC1wcmVmaXgnKTsK
KyAgICBhc3NlcnRfdHJ1ZShpbnN0YW5jZSBpbnN0YW5jZW9mIE15Q3VzdG9tRWxlbWVudCk7Cisg
ICAgYXNzZXJ0X2VxdWFscyhpbnN0YW5jZS5sb2NhbE5hbWUsICdlbGVtZW50LXdpdGgtcHJlZml4
Jyk7CisgICAgYXNzZXJ0X2VxdWFscyhpbnN0YW5jZS5uYW1lc3BhY2VVUkksIHhodG1sTmFtZXNw
YWNlVVJJKTsKKyAgICBhc3NlcnRfZXF1YWxzKGluc3RhbmNlLnByZWZpeCwgJ2ZvbycpOworfSwg
J2RvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyBtdXN0IHNldCB0aGUgcHJlZml4IGFmdGVyIGNvbnN0
cnVjdGluZyBhIGN1c3RvbSBlbGVtZW50Jyk7CisKK3Rlc3Rfd2l0aF93aW5kb3coKGNvbnRlbnRX
aW5kb3csIGNvbnRlbnREb2N1bWVudCkgPT4geworICAgIGxldCBpbm5lckVsZW1lbnQ7CisgICAg
bGV0IGlubmVyRWxlbWVudFByZWZpeDsKKyAgICBsZXQgb3V0ZXJFbGVtZW50OworICAgIGxldCBv
dXRlckVsZW1lbnRQcmVmaXg7CisgICAgY2xhc3MgTXlDdXN0b21FbGVtZW50IGV4dGVuZHMgY29u
dGVudFdpbmRvdy5IVE1MRWxlbWVudCB7CisgICAgICAgIGNvbnN0cnVjdG9yKGlzSW5uZXJDYWxs
KSB7CisgICAgICAgICAgICBpZiAoaXNJbm5lckNhbGwpIHsKKyAgICAgICAgICAgICAgICBpbm5l
ckVsZW1lbnQgPSBzdXBlcigpOworICAgICAgICAgICAgICAgIGlubmVyRWxlbWVudFByZWZpeCA9
IGlubmVyRWxlbWVudC5wcmVmaXg7CisgICAgICAgICAgICAgICAgcmV0dXJuIGlubmVyRWxlbWVu
dDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG91dGVyRWxlbWVudCA9IHN1cGVyKCk7Cisg
ICAgICAgICAgICBvdXRlckVsZW1lbnRQcmVmaXggPSBvdXRlckVsZW1lbnQucHJlZml4OworICAg
ICAgICAgICAgcmV0dXJuIG5ldyBNeUN1c3RvbUVsZW1lbnQodHJ1ZSk7CisgICAgICAgIH0KKyAg
ICB9CisgICAgY29udGVudFdpbmRvdy5jdXN0b21FbGVtZW50cy5kZWZpbmUoJ2N1c3RvbS1lbGVt
ZW50JywgTXlDdXN0b21FbGVtZW50KTsKKworICAgIGNvbnN0IGluc3RhbmNlID0gY29udGVudERv
Y3VtZW50LmNyZWF0ZUVsZW1lbnROUyh4aHRtbE5hbWVzcGFjZVVSSSwgJ2ZvbzpjdXN0b20tZWxl
bWVudCcpOworICAgIGFzc2VydF90cnVlKGluc3RhbmNlIGluc3RhbmNlb2YgTXlDdXN0b21FbGVt
ZW50KTsKKyAgICBhc3NlcnRfZXF1YWxzKGluc3RhbmNlLmxvY2FsTmFtZSwgJ2N1c3RvbS1lbGVt
ZW50Jyk7CisgICAgYXNzZXJ0X2VxdWFscyhpbnN0YW5jZS5uYW1lc3BhY2VVUkksIHhodG1sTmFt
ZXNwYWNlVVJJKTsKKyAgICBhc3NlcnRfZXF1YWxzKGluc3RhbmNlLnByZWZpeCwgJ2ZvbycpOwor
ICAgIGFzc2VydF9lcXVhbHMoaW5zdGFuY2UsIGlubmVyRWxlbWVudCwgJ2RvY3VtZW50LmNyZWF0
ZUVsZW1lbnROUyBtdXN0IGNyZWF0ZSBhbiBlbGVtZW50IHdpdGggdGhlIHN5bmNocm9ub3VzIGN1
c3RvbSBlbGVtZW50cyBmbGFnIHNldCcpOworICAgIGFzc2VydF9lcXVhbHMoaW5uZXJFbGVtZW50
UHJlZml4LCBudWxsLCAnSFRNTCBjb25zdHJ1Y3RvciBtdXN0IG5vdCBzZXQgcHJlZml4Jyk7Cisg
ICAgYXNzZXJ0X2VxdWFscyhvdXRlckVsZW1lbnRQcmVmaXgsIG51bGwsICdIVE1MIGNvbnN0cnVj
dG9yIG11c3Qgbm90IHNldCBwcmVmaXgnKTsKK30sICdkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMg
bXVzdCB1c2UgdGhlIGVsZW1lbnQgcmV0dXJuZWQgYnkgdGhlIGNvbnN0cnVjdG9yJyk7CisKKzwv
c2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>294661</attachid>
            <date>2016-11-13 01:09:31 -0800</date>
            <delta_ts>2016-11-14 15:53:37 -0800</delta_ts>
            <desc>Updated for ToT</desc>
            <filename>bug-164700-20161113010515.patch</filename>
            <type>text/plain</type>
            <size>20503</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA4NjY3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWU0ZTc0OWM2NWM4NTkz
NDQ5MTg3YzBlMmU5NTczZmE4YjlkOWQ4My4uNDAxODczYjcyYjgyMDIwZjE3MDJlMDg2NDE3Nzc5
ZjhlMTM2MWJiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ2IEBACisyMDE2LTExLTEzICBSeW9z
dWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnROUyBkb2Vzbid0IGNvbnN0cnVjdCBhIGN1c3RvbSBlbGVtZW50CisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjQ3MDAKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGaXhlZCB0aGUgYnVnIHRoYXQgZG9j
dW1lbnQuY3JlYXRlRWxlbWVudE5TIGRvZXNuJ3QgY3JlYXRlIGEgY3VzdG9tIGVsZW1lbnQgb3Ig
ZW5xdWV1ZSBpdCB0byB1cGdyYWRlLgorCisgICAgICAgIEFsc28gbWFkZSBjb25zdHJ1Y3RDdXN0
b21FbGVtZW50U3luY2hyb25vdXNseSBub3QgY2FsbCB0aGUgY3VzdG9tIGVsZW1lbnQgY29uc3Ry
dWN0b3JzIHdpdGggdGhlIGVsZW1lbnQncworICAgICAgICBsb2NhbCBuYW1lIGFzIHRoZSBmaXJz
dCBhcmd1bWVudCwgd2hpY2ggd2FzIGEgbm9uLXN0YW5kYXJkIGJlaGF2aW9yIGFkZGVkIGR1cmlu
ZyBwcm90b3R5cGluZy4KKworICAgICAgICBUZXN0OiBmYXN0L2N1c3RvbS1lbGVtZW50cy9ET01J
bXBsZW1lbnRhdGlvbi1jcmVhdGVEb2N1bWVudC5odG1sCisgICAgICAgICAgICAgIGZhc3QvY3Vz
dG9tLWVsZW1lbnRzL2RvY3VtZW50LWNyZWF0ZUVsZW1lbnROUy5odG1sCisKKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9KU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SlNDdXN0b21FbGVtZW50SW50ZXJmYWNlOjpjb25zdHJ1Y3RFbGVtZW50V2l0aEZhbGxiYWNr
KTogQWRkZWQgYSB2YXJpYW50IHRoYXQgdGFrZXMgUXVhbGlmaWVkTmFtZQorICAgICAgICBpbnN0
ZWFkIG9mIEF0b21pY1N0cmluZy4KKyAgICAgICAgKFdlYkNvcmU6OmNvbnN0cnVjdEN1c3RvbUVs
ZW1lbnRTeW5jaHJvbm91c2x5KTogRG9uJ3QgYWRkIHRoZSBsb2NhbCBuYW1lIGFzIGFuIGFyZ3Vt
ZW50LgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQ3VzdG9tRWxlbWVudEludGVyZmFjZS5oOgor
CisgICAgICAgICogZG9tL0N1c3RvbUVsZW1lbnRSZWdpc3RyeS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDdXN0b21FbGVtZW50UmVnaXN0cnk6OmZpbmRJbnRlcmZhY2UpOiBKdXN0IGZpbmQgdGhl
IGludGVyZmFjZSBiYXNlZCBvbiB0aGUgbG9jYWwgbmFtZSBhZnRlcgorICAgICAgICBjaGVja2lu
ZyB0aGUgbmFtZXNwYWNlIFVSSSB0byBiZSB0aGF0IG9mIHRoZSBYSFRNTC4gV2UgbmVlZCB0byBp
Z25vcmUgdGhlIHByZWZpeCBmb3IgdGhlIHB1cnBvc2Ugb2YgbG9va2luZworICAgICAgICB1cCB0
aGUgY3VzdG9tIGVsZW1lbnQgZGVmaW5pdGlvbiBhcyBzcGVjaWZpZWQgaW4gdGhlIGxhdGVzdCBI
VE1MIHNwZWNpZmljYXRpb246CisgICAgICAgIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcv
bXVsdGlwYWdlL3NjcmlwdGluZy5odG1sI2xvb2stdXAtYS1jdXN0b20tZWxlbWVudC1kZWZpbml0
aW9uCisKKyAgICAgICAgKiBkb20vRE9NSW1wbGVtZW50YXRpb24uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RE9NSW1wbGVtZW50YXRpb246OmNyZWF0ZURvY3VtZW50KTogQWRkZWQgYW4gYXNzZXJ0
aW9uIHRvIG1ha2Ugc3VyZSB3ZSBkb24ndCBpbnZva2Ugc2NyaXB0cyB3aGlsZQorICAgICAgICBj
b25zdHJ1Y3RpbmcgdGhlIGRvY3VtZW50IGVsZW1lbnQuCisKKyAgICAgICAgKiBkb20vRG9jdW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlVXBncmFkZUNhbmRpZGF0ZUVsZW1lbnQp
OiBNYWRlIHRoaXMgZnVuY3Rpb24gY3JlYXRlIGEgSFRNTFVua25vd25FbGVtZW50IGluc3RlYWQg
b2YgcmV0dXJuaW5nCisgICAgICAgIG51bGxwdHIgdG8gc2hhcmUgbW9yZSBjb2RlLiBBbHNvIGFk
ZGVkIGEgdmFyaWFudCB3aGljaCB0YWtlcyBRdWFsaWZpZWROYW1lLgorICAgICAgICAoV2ViQ29y
ZTo6aXNWYWxpZEhUTUxFbGVtZW50TmFtZSk6IEFkZGVkOyBoZWxwZXJzIGZvciBjcmVhdGVIVE1M
RWxlbWVudFdpdGhOYW1lVmFsaWRhdGlvbiB0byBjYWxsIGlzVmFsaWROYW1lCisgICAgICAgIG9u
IERvY3VtZW50IHdpdGggdGhlIHJpZ2h0IGFyZ3VtZW50LgorICAgICAgICAoV2ViQ29yZTo6Y3Jl
YXRlSFRNTEVsZW1lbnRXaXRoTmFtZVZhbGlkYXRpb24pOiBUZW1wbGF0aXplZCB0aGUgZnVuY3Rp
b24gdG8gYmUgY2FsbGVkIHdpdGggZWl0aGVyIEF0b21pY1N0cmluZworICAgICAgICBvciBRdWFs
aWZpZWROYW1lIGZvciB0aGUgbmFtZS4KKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUZhbGxiYWNr
SFRNTEVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmNyZWF0ZUVsZW1lbnRO
Uyk6IENhbGwgY3JlYXRlSFRNTEVsZW1lbnRXaXRoTmFtZVZhbGlkYXRpb24gdG8gY3JlYXRlIGEg
Y3VzdG9tIGVsZW1lbnQgaWYKKyAgICAgICAgcG9zc2libGUuIFRoaXMgZnVuY3Rpb24gZW5kcyB1
cCByZS12YWxpZGF0aW5nIHRoZSBlbGVtZW50IG5hbWUgYmVmb3JlIGNyZWF0aW5nIGEgSFRNTFVu
a25vd25FbGVtZW50IGJ1dCB0aGF0CisgICAgICAgIHNob3VsZG4ndCBiZSBhIGNvbW1vbiBzY2Vu
YXJpbyB0byBtYXR0ZXIuIEluIGZhY3QsIGNyZWF0ZUVsZW1lbnROUyBpcyBhIHJhcmVseSB1c2Vk
IEFQSS4KKwogMjAxNi0xMS0xMiAgRGFuIEJlcm5zdGVpbiAgPG1pdHpAYXBwbGUuY29tPgogCiAg
ICAgICAgIFRyaWVkIHRvIGZpeCB0aGUgaU9TIGJ1aWxkIGFmdGVyIHIyMDg2NjYuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2Uu
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21FbGVtZW50SW50ZXJmYWNl
LmNwcAppbmRleCAzYzRhZmQ4ODg1YzY3ODhkYWRhN2MyNTY4N2MzODE2Yzk0N2UyZGRkLi43MmVm
MDI3MzRlYzQ5YTExMGU4ZDI1YmJmM2UzMDQ5ZGEwOGE3YzU2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tRWxlbWVudEludGVyZmFjZS5jcHAKQEAg
LTcwLDYgKzcwLDIxIEBAIFJlZjxFbGVtZW50PiBKU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2U6OmNv
bnN0cnVjdEVsZW1lbnRXaXRoRmFsbGJhY2soRG9jdW1lbnQmIGRvCiAgICAgcmV0dXJuIGVsZW1l
bnQuZ2V0KCk7CiB9CiAKK1JlZjxFbGVtZW50PiBKU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2U6OmNv
bnN0cnVjdEVsZW1lbnRXaXRoRmFsbGJhY2soRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBRdWFs
aWZpZWROYW1lJiBuYW1lKQoreworICAgIGlmIChhdXRvIGVsZW1lbnQgPSB0cnlUb0NvbnN0cnVj
dEN1c3RvbUVsZW1lbnQoZG9jdW1lbnQsIG5hbWUubG9jYWxOYW1lKCkpKSB7CisgICAgICAgIGlm
IChuYW1lLnByZWZpeCgpICE9IG51bGxBdG9tKQorICAgICAgICAgICAgZWxlbWVudC0+c2V0UHJl
Zml4KG5hbWUucHJlZml4KCkpOworICAgICAgICByZXR1cm4gZWxlbWVudC5yZWxlYXNlTm9uTnVs
bCgpOworICAgIH0KKworICAgIGF1dG8gZWxlbWVudCA9IEhUTUxVbmtub3duRWxlbWVudDo6Y3Jl
YXRlKG5hbWUsIGRvY3VtZW50KTsKKyAgICBlbGVtZW50LT5zZXRJc0N1c3RvbUVsZW1lbnRVcGdy
YWRlQ2FuZGlkYXRlKCk7CisgICAgZWxlbWVudC0+c2V0SXNGYWlsZWRDdXN0b21FbGVtZW50KCp0
aGlzKTsKKworICAgIHJldHVybiBlbGVtZW50LmdldCgpOworfQorCiBSZWZQdHI8RWxlbWVudD4g
SlNDdXN0b21FbGVtZW50SW50ZXJmYWNlOjp0cnlUb0NvbnN0cnVjdEN1c3RvbUVsZW1lbnQoRG9j
dW1lbnQmIGRvY3VtZW50LCBjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsTmFtZSkKIHsKICAgICBp
ZiAoIWNhbkludm9rZUNhbGxiYWNrKCkpCkBAIC0xMTAsMTAgKzEyNSw4IEBAIHN0YXRpYyBSZWZQ
dHI8RWxlbWVudD4gY29uc3RydWN0Q3VzdG9tRWxlbWVudFN5bmNocm9ub3VzbHkoRG9jdW1lbnQm
IGRvY3VtZW50LCBWCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIE1hcmtl
ZEFyZ3VtZW50QnVmZmVyIGFyZ3M7Ci0gICAgYXJncy5hcHBlbmQoanNTdHJpbmdXaXRoQ2FjaGUo
JnN0YXRlLCBsb2NhbE5hbWUpKTsKLQogICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tp
ZSBjb29raWUgPSBKU01haW5UaHJlYWRFeGVjU3RhdGU6Omluc3RydW1lbnRGdW5jdGlvbkNvbnN0
cnVjdCgmZG9jdW1lbnQsIGNvbnN0cnVjdFR5cGUsIGNvbnN0cnVjdERhdGEpOworICAgIE1hcmtl
ZEFyZ3VtZW50QnVmZmVyIGFyZ3M7CiAgICAgSlNWYWx1ZSBuZXdFbGVtZW50ID0gY29uc3RydWN0
KCZzdGF0ZSwgY29uc3RydWN0b3IsIGNvbnN0cnVjdFR5cGUsIGNvbnN0cnVjdERhdGEsIGFyZ3Mp
OwogICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQ2FsbEZ1bmN0aW9uKGNvb2tpZSwg
JmRvY3VtZW50KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBudWxscHRyKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tRWxlbWVudEludGVy
ZmFjZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21FbGVtZW50SW50ZXJm
YWNlLmgKaW5kZXggZmQzNjg0OWE1ZTJlNTE0ZTIwMDg0ZmY3YmI5NzhlNjgyMmRmMDE2Mi4uOGEz
ZjY1NmVlNzA3Y2RlYjQ1NTVmOTVmNThhMmM5NzFjNTIzOTk0MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21FbGVtZW50SW50ZXJmYWNlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21FbGVtZW50SW50ZXJmYWNlLmgKQEAgLTU5
LDYgKzU5LDcgQEAgcHVibGljOgogICAgIH0KIAogICAgIFJlZjxFbGVtZW50PiBjb25zdHJ1Y3RF
bGVtZW50V2l0aEZhbGxiYWNrKERvY3VtZW50JiwgY29uc3QgQXRvbWljU3RyaW5nJik7CisgICAg
UmVmPEVsZW1lbnQ+IGNvbnN0cnVjdEVsZW1lbnRXaXRoRmFsbGJhY2soRG9jdW1lbnQmLCBjb25z
dCBRdWFsaWZpZWROYW1lJik7CiAKICAgICB2b2lkIHVwZ3JhZGVFbGVtZW50KEVsZW1lbnQmKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0N1c3RvbUVsZW1lbnRSZWdpc3RyeS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5LmNwcAppbmRleCBm
YjU2NjYwODNiN2RlODQwNWJkZGM1MmE3MjJiMzMzNjFmNmZjY2YyLi5kNGY0ZDA5Zjc5NTU1Yjdh
MzA3M2VjMDNjMDdhY2NjOWUwY2Y5MmE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
Q3VzdG9tRWxlbWVudFJlZ2lzdHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ3VzdG9t
RWxlbWVudFJlZ2lzdHJ5LmNwcApAQCAtODcsMTEgKzg3LDkgQEAgSlNDdXN0b21FbGVtZW50SW50
ZXJmYWNlKiBDdXN0b21FbGVtZW50UmVnaXN0cnk6OmZpbmRJbnRlcmZhY2UoY29uc3QgRWxlbWVu
dCYgZWwKIAogSlNDdXN0b21FbGVtZW50SW50ZXJmYWNlKiBDdXN0b21FbGVtZW50UmVnaXN0cnk6
OmZpbmRJbnRlcmZhY2UoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSkgY29uc3QKIHsKLSAgICBB
U1NFUlQoIW5hbWUuaGFzUHJlZml4KCkpOwogICAgIGlmIChuYW1lLm5hbWVzcGFjZVVSSSgpICE9
IEhUTUxOYW1lczo6eGh0bWxOYW1lc3BhY2VVUkkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwot
ICAgIGF1dG8gaXQgPSBtX25hbWVNYXAuZmluZChuYW1lLmxvY2FsTmFtZSgpKTsKLSAgICByZXR1
cm4gaXQgPT0gbV9uYW1lTWFwLmVuZCgpIHx8IGl0LT52YWx1ZS0+bmFtZSgpICE9IG5hbWUgPyBu
dWxscHRyIDogY29uc3RfY2FzdDxKU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2UqPihpdC0+dmFsdWUu
cHRyKCkpOworICAgIHJldHVybiBtX25hbWVNYXAuZ2V0KG5hbWUubG9jYWxOYW1lKCkpOwogfQog
CiBKU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2UqIEN1c3RvbUVsZW1lbnRSZWdpc3RyeTo6ZmluZElu
dGVyZmFjZShjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRE9NSW1wbGVtZW50YXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvZG9t
L0RPTUltcGxlbWVudGF0aW9uLmNwcAppbmRleCBkZWFhOTJiYTFkZjFlYTM4NGJjMmQwNDg3MDIx
YzcwNDI1YjFhMGM3Li5jMDg4MWQ0ZDg0NTg2NTIyNDg2ZTQ2NmFmMmI1MDEyMTlkZmNlMDZkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRE9NSW1wbGVtZW50YXRpb24uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9ET01JbXBsZW1lbnRhdGlvbi5jcHAKQEAgLTExNSw2ICsxMTUs
NyBAQCBFeGNlcHRpb25PcjxSZWY8WE1MRG9jdW1lbnQ+PiBET01JbXBsZW1lbnRhdGlvbjo6Y3Jl
YXRlRG9jdW1lbnQoY29uc3QgU3RyaW5nJiBuYQogCiAgICAgUmVmUHRyPEVsZW1lbnQ+IGRvY3Vt
ZW50RWxlbWVudDsKICAgICBpZiAoIXF1YWxpZmllZE5hbWUuaXNFbXB0eSgpKSB7CisgICAgICAg
IEFTU0VSVCghZG9jdW1lbnQtPmRvbVdpbmRvdygpKTsgLy8gY3JlYXRlRWxlbWVuTlMgc2hvdWxk
IG5vdCBzeW5jaHJvbm91c2x5IGNvbnN0cnVjdCBhIGN1c3RvbSBlbGVtZW50IGhlcmUuCiAgICAg
ICAgIGF1dG8gcmVzdWx0ID0gZG9jdW1lbnQtPmNyZWF0ZUVsZW1lbnROUyhuYW1lc3BhY2VVUkks
IHF1YWxpZmllZE5hbWUpOwogICAgICAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKQogICAg
ICAgICAgICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50LmNwcAppbmRleCA5MDgxZjg3MjU3ZDkzNGY2Y2Q1NGEyMDU1ZTdmYjIzZjFlODUxZDhiLi5m
NjM3MGRmOTI5ZWFkYTY1YWEzM2MyYWUzNmU5OTY3Zjg4Y2IwYjUwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5jcHAKQEAgLTg2MSw0MiArODYxLDQ0IEBAIHZvaWQgRG9jdW1lbnQ6OmNoaWxkcmVuQ2hh
bmdlZChjb25zdCBDaGlsZENoYW5nZSYgY2hhbmdlKQogICAgIHN0eWxlU2NvcGUoKS5jbGVhclJl
c29sdmVyKCk7CiB9CiAKLXN0YXRpYyBBTFdBWVNfSU5MSU5FIFJlZlB0cjxIVE1MRWxlbWVudD4g
Y3JlYXRlVXBncmFkZUNhbmRpZGF0ZUVsZW1lbnQoRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBR
dWFsaWZpZWROYW1lJiBuYW1lKQorc3RhdGljIEFMV0FZU19JTkxJTkUgUmVmPEhUTUxFbGVtZW50
PiBjcmVhdGVVcGdyYWRlQ2FuZGlkYXRlRWxlbWVudChEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0
IFF1YWxpZmllZE5hbWUmIG5hbWUpCiB7Ci0gICAgaWYgKCFSdW50aW1lRW5hYmxlZEZlYXR1cmVz
OjpzaGFyZWRGZWF0dXJlcygpLmN1c3RvbUVsZW1lbnRzRW5hYmxlZCgpKQotICAgICAgICByZXR1
cm4gbnVsbHB0cjsKLQotICAgIGlmIChEb2N1bWVudDo6dmFsaWRhdGVDdXN0b21FbGVtZW50TmFt
ZShuYW1lLmxvY2FsTmFtZSgpKSAhPSBDdXN0b21FbGVtZW50TmFtZVZhbGlkYXRpb25TdGF0dXM6
OlZhbGlkKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBpZiAoIVJ1bnRpbWVFbmFibGVk
RmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuY3VzdG9tRWxlbWVudHNFbmFibGVkKCkKKyAgICAg
ICAgfHwgRG9jdW1lbnQ6OnZhbGlkYXRlQ3VzdG9tRWxlbWVudE5hbWUobmFtZS5sb2NhbE5hbWUo
KSkgIT0gQ3VzdG9tRWxlbWVudE5hbWVWYWxpZGF0aW9uU3RhdHVzOjpWYWxpZCkKKyAgICAgICAg
cmV0dXJuIEhUTUxVbmtub3duRWxlbWVudDo6Y3JlYXRlKG5hbWUsIGRvY3VtZW50KTsKIAogICAg
IGF1dG8gZWxlbWVudCA9IEhUTUxFbGVtZW50OjpjcmVhdGUobmFtZSwgZG9jdW1lbnQpOwogICAg
IGVsZW1lbnQtPnNldElzQ3VzdG9tRWxlbWVudFVwZ3JhZGVDYW5kaWRhdGUoKTsKLSAgICByZXR1
cm4gV1RGTW92ZShlbGVtZW50KTsKKyAgICByZXR1cm4gZWxlbWVudDsKIH0KIAotc3RhdGljIEV4
Y2VwdGlvbk9yPFJlZjxFbGVtZW50Pj4gY3JlYXRlSFRNTEVsZW1lbnRXaXRoTmFtZVZhbGlkYXRp
b24oRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsTmFtZSkKK3N0
YXRpYyBBTFdBWVNfSU5MSU5FIFJlZjxIVE1MRWxlbWVudD4gY3JlYXRlVXBncmFkZUNhbmRpZGF0
ZUVsZW1lbnQoRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsTmFt
ZSkKIHsKLSAgICBhdXRvIGVsZW1lbnQgPSBIVE1MRWxlbWVudEZhY3Rvcnk6OmNyZWF0ZUtub3du
RWxlbWVudChsb2NhbE5hbWUsIGRvY3VtZW50KTsKKyAgICByZXR1cm4gY3JlYXRlVXBncmFkZUNh
bmRpZGF0ZUVsZW1lbnQoZG9jdW1lbnQsIFF1YWxpZmllZE5hbWUgeyBudWxsQXRvbSwgbG9jYWxO
YW1lLCB4aHRtbE5hbWVzcGFjZVVSSSB9KTsKK30KKworc3RhdGljIGJvb2wgaXNWYWxpZEhUTUxF
bGVtZW50TmFtZShjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsTmFtZSkgeyByZXR1cm4gRG9jdW1l
bnQ6OmlzVmFsaWROYW1lKGxvY2FsTmFtZSk7IH0KK3N0YXRpYyBib29sIGlzVmFsaWRIVE1MRWxl
bWVudE5hbWUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSkgeyByZXR1cm4gRG9jdW1lbnQ6Omlz
VmFsaWROYW1lKG5hbWUubG9jYWxOYW1lKCkpOyB9CisKK3RlbXBsYXRlIDxjbGFzcyBOYW1lVHlw
ZT4KK3N0YXRpYyBFeGNlcHRpb25PcjxSZWY8RWxlbWVudD4+IGNyZWF0ZUhUTUxFbGVtZW50V2l0
aE5hbWVWYWxpZGF0aW9uKERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgTmFtZVR5cGUmIG5hbWUp
Cit7CisgICAgYXV0byBlbGVtZW50ID0gSFRNTEVsZW1lbnRGYWN0b3J5OjpjcmVhdGVLbm93bkVs
ZW1lbnQobmFtZSwgZG9jdW1lbnQpOwogICAgIGlmIChMSUtFTFkoZWxlbWVudCkpCiAgICAgICAg
IHJldHVybiBSZWY8RWxlbWVudD4geyBlbGVtZW50LnJlbGVhc2VOb25OdWxsKCkgfTsKIAogICAg
IGlmIChhdXRvKiB3aW5kb3cgPSBkb2N1bWVudC5kb21XaW5kb3coKSkgewogICAgICAgICBhdXRv
KiByZWdpc3RyeSA9IHdpbmRvdy0+Y3VzdG9tRWxlbWVudFJlZ2lzdHJ5KCk7CiAgICAgICAgIGlm
IChVTkxJS0VMWShyZWdpc3RyeSkpIHsKLSAgICAgICAgICAgIGlmIChhdXRvKiBlbGVtZW50SW50
ZXJmYWNlID0gcmVnaXN0cnktPmZpbmRJbnRlcmZhY2UobG9jYWxOYW1lKSkKLSAgICAgICAgICAg
ICAgICByZXR1cm4gZWxlbWVudEludGVyZmFjZS0+Y29uc3RydWN0RWxlbWVudFdpdGhGYWxsYmFj
ayhkb2N1bWVudCwgbG9jYWxOYW1lKTsKKyAgICAgICAgICAgIGlmIChhdXRvKiBlbGVtZW50SW50
ZXJmYWNlID0gcmVnaXN0cnktPmZpbmRJbnRlcmZhY2UobmFtZSkpCisgICAgICAgICAgICAgICAg
cmV0dXJuIGVsZW1lbnRJbnRlcmZhY2UtPmNvbnN0cnVjdEVsZW1lbnRXaXRoRmFsbGJhY2soZG9j
dW1lbnQsIG5hbWUpOwogICAgICAgICB9CiAgICAgfQogCi0gICAgaWYgKFVOTElLRUxZKCFEb2N1
bWVudDo6aXNWYWxpZE5hbWUobG9jYWxOYW1lKSkpCisgICAgaWYgKFVOTElLRUxZKCFpc1ZhbGlk
SFRNTEVsZW1lbnROYW1lKG5hbWUpKSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IElOVkFM
SURfQ0hBUkFDVEVSX0VSUiB9OwogCi0gICAgUXVhbGlmaWVkTmFtZSBxdWFsaWZpZWROYW1lIHsg
bnVsbEF0b20sIGxvY2FsTmFtZSwgeGh0bWxOYW1lc3BhY2VVUkkgfTsKLQotICAgIGlmIChhdXRv
IGVsZW1lbnQgPSBjcmVhdGVVcGdyYWRlQ2FuZGlkYXRlRWxlbWVudChkb2N1bWVudCwgcXVhbGlm
aWVkTmFtZSkpCi0gICAgICAgIHJldHVybiBSZWY8RWxlbWVudD4geyBlbGVtZW50LnJlbGVhc2VO
b25OdWxsKCkgfTsKLQotICAgIHJldHVybiBSZWY8RWxlbWVudD4geyBIVE1MVW5rbm93bkVsZW1l
bnQ6OmNyZWF0ZShxdWFsaWZpZWROYW1lLCBkb2N1bWVudCkgfTsKKyAgICByZXR1cm4gUmVmPEVs
ZW1lbnQ+IHsgY3JlYXRlVXBncmFkZUNhbmRpZGF0ZUVsZW1lbnQoZG9jdW1lbnQsIG5hbWUpIH07
CiB9CiAKIEV4Y2VwdGlvbk9yPFJlZjxFbGVtZW50Pj4gRG9jdW1lbnQ6OmNyZWF0ZUVsZW1lbnRG
b3JCaW5kaW5ncyhjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpCkBAIC0xMDU1LDkgKzEwNTcsNyBA
QCBzdGF0aWMgUmVmPEhUTUxFbGVtZW50PiBjcmVhdGVGYWxsYmFja0hUTUxFbGVtZW50KERvY3Vt
ZW50JiBkb2N1bWVudCwgY29uc3QgUXVhbAogICAgICAgICB9CiAgICAgfQogICAgIC8vIEZJWE1F
OiBTaG91bGQgd2UgYWxzbyBjaGVjayB0aGUgZXF1YWxpdHkgb2YgcHJlZml4IGJldHdlZW4gdGhl
IGN1c3RvbSBlbGVtZW50IGFuZCBuYW1lPwotICAgIGlmIChhdXRvIGVsZW1lbnQgPSBjcmVhdGVV
cGdyYWRlQ2FuZGlkYXRlRWxlbWVudChkb2N1bWVudCwgbmFtZSkpCi0gICAgICAgIHJldHVybiBl
bGVtZW50LnJlbGVhc2VOb25OdWxsKCk7Ci0gICAgcmV0dXJuIEhUTUxVbmtub3duRWxlbWVudDo6
Y3JlYXRlKG5hbWUsIGRvY3VtZW50KTsKKyAgICByZXR1cm4gY3JlYXRlVXBncmFkZUNhbmRpZGF0
ZUVsZW1lbnQoZG9jdW1lbnQsIG5hbWUpOwogfQogCiAvLyBGSVhNRTogVGhpcyBzaG91bGQgcmVh
bGx5IGJlIGluIGEgcG9zc2libGUgRWxlbWVudEZhY3RvcnkgY2xhc3MuCkBAIC0xMTU5LDYgKzEx
NTksMTAgQEAgRXhjZXB0aW9uT3I8UmVmPEVsZW1lbnQ+PiBEb2N1bWVudDo6Y3JlYXRlRWxlbWVu
dE5TKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZXNwYWMKICAgICBRdWFsaWZpZWROYW1lIHBhcnNl
ZE5hbWUgeyBwYXJzZVJlc3VsdC5yZWxlYXNlUmV0dXJuVmFsdWUoKSB9OwogICAgIGlmICghaGFz
VmFsaWROYW1lc3BhY2VGb3JFbGVtZW50cyhwYXJzZWROYW1lKSkKICAgICAgICAgcmV0dXJuIEV4
Y2VwdGlvbiB7IE5BTUVTUEFDRV9FUlIgfTsKKworICAgIGlmIChwYXJzZWROYW1lLm5hbWVzcGFj
ZVVSSSgpID09IHhodG1sTmFtZXNwYWNlVVJJKQorICAgICAgICByZXR1cm4gY3JlYXRlSFRNTEVs
ZW1lbnRXaXRoTmFtZVZhbGlkYXRpb24oKnRoaXMsIHBhcnNlZE5hbWUpOworCiAgICAgcmV0dXJu
IGNyZWF0ZUVsZW1lbnQocGFyc2VkTmFtZSwgZmFsc2UpOwogfQogCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggYzYyYjZiZjhk
MTNiMGE5MGUwMmZkNGRlZmNhNjE1NGU2MTMxZmQ1ZS4uYmQzYWMwZmIzM2I5MWIxZTRlMzNjYjU3
ZDM2ZjQ0ZWQzMjI5OTUzYSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBi
L0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDE2LTExLTEzICBSeW9z
dWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnROUyBkb2Vzbid0IGNvbnN0cnVjdCBhIGN1c3RvbSBlbGVtZW50CisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjQ3MDAKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZCBXM0Mgc3R5bGUgdGVzdGhh
cm5lc3MuanMgdGVzdHMgZm9yIGNyZWF0ZUVsZW1lbnROUyBhbmQgRE9NSW1wbGVtZW50YXRpb24n
cyBjcmVhdGVEb2N1bWVudC4KKworICAgICAgICAqIGZhc3QvY3VzdG9tLWVsZW1lbnRzL0RPTUlt
cGxlbWVudGF0aW9uLWNyZWF0ZURvY3VtZW50LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAg
ICogZmFzdC9jdXN0b20tZWxlbWVudHMvRE9NSW1wbGVtZW50YXRpb24tY3JlYXRlRG9jdW1lbnQu
aHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9jdXN0b20tZWxlbWVudHMvZG9jdW1lbnQtY3Jl
YXRlRWxlbWVudE5TLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9jdXN0b20t
ZWxlbWVudHMvZG9jdW1lbnQtY3JlYXRlRWxlbWVudE5TLmh0bWw6IEFkZGVkLgorCiAyMDE2LTEx
LTEyICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIEFk
ZCBhIHdheSB0byBnZXQgdGhlIFVJLXNpZGUgc2Nyb2xsaW5nIHRyZWUgYXMgdGV4dCB2aWEgVUlT
Y3JpcHRDb250cm9sbGVyCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2N1c3RvbS1lbGVt
ZW50cy9ET01JbXBsZW1lbnRhdGlvbi1jcmVhdGVEb2N1bWVudC1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9mYXN0L2N1c3RvbS1lbGVtZW50cy9ET01JbXBsZW1lbnRhdGlvbi1jcmVhdGVEb2N1
bWVudC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzU0MDVkYjljYWU3MjAyZTQ3NjdlZThmZmZh
MDQxOTU4MjAwZTNjMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY3VzdG9t
LWVsZW1lbnRzL0RPTUltcGxlbWVudGF0aW9uLWNyZWF0ZURvY3VtZW50LWV4cGVjdGVkLnR4dApA
QCAtMCwwICsxLDMgQEAKKworUEFTUyBkb2N1bWVudC5jcmVhdGVFbGVtZW50IGludm9rZSBhIGN1
c3RvbSBlbGVtZW50IGNvbnN0cnVjdG9yIHdpdGggbm8gYXJndW1lbnRzIAorCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9mYXN0L2N1c3RvbS1lbGVtZW50cy9ET01JbXBsZW1lbnRhdGlvbi1jcmVh
dGVEb2N1bWVudC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9jdXN0b20tZWxlbWVudHMvRE9NSW1w
bGVtZW50YXRpb24tY3JlYXRlRG9jdW1lbnQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mNmU0ZTMwZGViOTdh
MThlM2M3OTYwNWI5YTUxZjIwZTE4M2EzZGFhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvZmFzdC9jdXN0b20tZWxlbWVudHMvRE9NSW1wbGVtZW50YXRpb24tY3JlYXRlRG9jdW1lbnQu
aHRtbApAQCAtMCwwICsxLDQxIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8
dGl0bGU+Q3VzdG9tIEVsZW1lbnRzOiBkb2N1bWVudC5pbXBsZW1lbnRhdGlvbi5jcmVhdGVFbGVt
ZW50IG11c3Qgbm90IGluc3RhbnRpYXRlIGEgY3VzdG9tIGVsZW1lbnQ8L3RpdGxlPgorPG1ldGEg
bmFtZT0iYXV0aG9yIiB0aXRsZT0iUnlvc3VrZSBOaXdhIiBocmVmPSJtYWlsdG86cm5pd2FAd2Vi
a2l0Lm9yZyI+Cis8bWV0YSBuYW1lPSJhc3NlcnQiIGNvbnRlbnQ9ImRvY3VtZW50LmltcGxlbWVu
dGF0aW9uLmNyZWF0ZUVsZW1lbnQgbXVzdCBub3QgaW5zdGFudGlhdGUgYSBjdXN0b20gZWxlbWVu
dCI+Cis8bGluayByZWw9ImhlbHAiIGNvbnRlbnQ9Imh0dHBzOi8vZG9tLnNwZWMud2hhdHdnLm9y
Zy8jZG9tLWRvbWltcGxlbWVudGF0aW9uLWNyZWF0ZWRvY3VtZW50Ij4KKzxsaW5rIHJlbD0iaGVs
cCIgY29udGVudD0iaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy8jbG9vay11cC1hLWN1c3Rv
bS1lbGVtZW50LWRlZmluaXRpb24iPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0
aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3Ro
YXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2N1c3RvbS1lbGVtZW50cy9yZXNvdXJjZXMvY3VzdG9tLWVs
ZW1lbnRzLWhlbHBlcnMuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJs
b2ciPjwvZGl2PgorPHNjcmlwdD4KKworY29uc3QgeGh0bWxOYW1lc3BhY2VVUkkgPSAnaHR0cDov
L3d3dy53My5vcmcvMTk5OS94aHRtbCc7CisKK3Rlc3Rfd2l0aF93aW5kb3coKGNvbnRlbnRXaW5k
b3csIGNvbnRlbnREb2N1bWVudCkgPT4geworICAgIGxldCBjb25zdHJ1Y3RvckNvdW50ID0gMDsK
KyAgICBjbGFzcyBNeUN1c3RvbUVsZW1lbnQgZXh0ZW5kcyBjb250ZW50V2luZG93LkhUTUxFbGVt
ZW50IHsKKyAgICAgICAgY29uc3RydWN0b3IoKSB7CisgICAgICAgICAgICBzdXBlcigpOworICAg
ICAgICAgICAgY29uc3RydWN0b3JDb3VudCsrOworICAgICAgICB9CisgICAgfQorICAgIGNvbnRl
bnRXaW5kb3cuY3VzdG9tRWxlbWVudHMuZGVmaW5lKCdteS1jdXN0b20tZWxlbWVudCcsIE15Q3Vz
dG9tRWxlbWVudCk7CisgICAgY29uc3QgaW5zdGFuY2UgPSBjb250ZW50RG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgnbXktY3VzdG9tLWVsZW1lbnQnKTsKKyAgICBhc3NlcnRfdHJ1ZShpbnN0YW5jZSBp
bnN0YW5jZW9mIE15Q3VzdG9tRWxlbWVudCk7CisgICAgYXNzZXJ0X2VxdWFscyhjb25zdHJ1Y3Rv
ckNvdW50LCAxKTsKKworICAgIGNvbnN0IG5ld0RvY3VtZW50ID0gY29udGVudERvY3VtZW50Lmlt
cGxlbWVudGF0aW9uLmNyZWF0ZURvY3VtZW50KHhodG1sTmFtZXNwYWNlVVJJLCAnbXktY3VzdG9t
LWVsZW1lbnQnLCBudWxsKTsKKyAgICBhc3NlcnRfZXF1YWxzKGNvbnN0cnVjdG9yQ291bnQsIDEp
OworICAgIGFzc2VydF90cnVlKG5ld0RvY3VtZW50LmRvY3VtZW50RWxlbWVudCBpbnN0YW5jZW9m
IGNvbnRlbnRXaW5kb3cuSFRNTEVsZW1lbnQpOworICAgIGFzc2VydF9lcXVhbHMobmV3RG9jdW1l
bnQuZG9jdW1lbnRFbGVtZW50LmxvY2FsTmFtZSwgJ215LWN1c3RvbS1lbGVtZW50Jyk7CisgICAg
YXNzZXJ0X2ZhbHNlKG5ld0RvY3VtZW50LmRvY3VtZW50RWxlbWVudCBpbnN0YW5jZW9mIE15Q3Vz
dG9tRWxlbWVudCk7Cit9LCAnZG9jdW1lbnQuY3JlYXRlRWxlbWVudCBpbnZva2UgYSBjdXN0b20g
ZWxlbWVudCBjb25zdHJ1Y3RvciB3aXRoIG5vIGFyZ3VtZW50cycpOworCis8L3NjcmlwdD4KKzwv
Ym9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3VzdG9tLWVsZW1l
bnRzL2RvY3VtZW50LWNyZWF0ZUVsZW1lbnROUy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9m
YXN0L2N1c3RvbS1lbGVtZW50cy9kb2N1bWVudC1jcmVhdGVFbGVtZW50TlMtZXhwZWN0ZWQudHh0
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjZmMThiYzg2NzExZTM3NDNiZGU5MWVhNjYxMjA5YWVlOGY3MzFlMjkKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2N1c3RvbS1lbGVtZW50cy9kb2N1bWVu
dC1jcmVhdGVFbGVtZW50TlMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNiBAQAorCitQQVNTIGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQgaW52b2tlIGEgY3VzdG9tIGVsZW1lbnQgY29uc3RydWN0b3Ig
d2l0aCBubyBhcmd1bWVudHMgCitQQVNTIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyBtdXN0IGNy
ZWF0ZSBhbiBpbnN0YW5jZSBvZiBjdXN0b20gZWxlbWVudHMgCitQQVNTIGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnROUyBtdXN0IHNldCB0aGUgcHJlZml4IGFmdGVyIGNvbnN0cnVjdGluZyBhIGN1c3Rv
bSBlbGVtZW50IAorUEFTUyBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMgbXVzdCB1c2UgdGhlIGVs
ZW1lbnQgcmV0dXJuZWQgYnkgdGhlIGNvbnN0cnVjdG9yIAorCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9mYXN0L2N1c3RvbS1lbGVtZW50cy9kb2N1bWVudC1jcmVhdGVFbGVtZW50TlMuaHRtbCBi
L0xheW91dFRlc3RzL2Zhc3QvY3VzdG9tLWVsZW1lbnRzL2RvY3VtZW50LWNyZWF0ZUVsZW1lbnRO
Uy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjM2OTNhMTBlZTcxMjk2Nzc2NGFkNTg5NDRjMDRiMDNhMDM2Njhl
M2YKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2N1c3RvbS1lbGVtZW50cy9k
b2N1bWVudC1jcmVhdGVFbGVtZW50TlMuaHRtbApAQCAtMCwwICsxLDg5IEBACis8IURPQ1RZUEUg
aHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8dGl0bGU+Q3VzdG9tIEVsZW1lbnRzOiBkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMgbXVzdCBjcmVhdGUgYW4gZWxlbWVudCB3aXRoIHN5bmNocm9ub3VzIGN1
c3RvbSBlbGVtZW50cyBmbGFnIHNldDwvdGl0bGU+Cis8bWV0YSBuYW1lPSJhdXRob3IiIHRpdGxl
PSJSeW9zdWtlIE5pd2EiIGhyZWY9Im1haWx0bzpybml3YUB3ZWJraXQub3JnIj4KKzxtZXRhIG5h
bWU9ImFzc2VydCIgY29udGVudD0iZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TIG11c3QgY3JlYXRl
IGFuIGVsZW1lbnQgd2l0aCBzeW5jaHJvbm91cyBjdXN0b20gZWxlbWVudHMgZmxhZyBzZXQiPgor
PGxpbmsgcmVsPSJoZWxwIiBjb250ZW50PSJodHRwczovL2RvbS5zcGVjLndoYXR3Zy5vcmcvI2Rv
bS1kb2N1bWVudC1jcmVhdGVlbGVtZW50bnMiPgorPGxpbmsgcmVsPSJoZWxwIiBjb250ZW50PSJo
dHRwczovL2RvbS5zcGVjLndoYXR3Zy5vcmcvI2NvbmNlcHQtY3JlYXRlLWVsZW1lbnQiPgorPHNj
cmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2N1c3Rv
bS1lbGVtZW50cy9yZXNvdXJjZXMvY3VzdG9tLWVsZW1lbnRzLWhlbHBlcnMuanMiPjwvc2NyaXB0
PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJsb2ciPjwvZGl2PgorPHNjcmlwdD4KKworY29u
c3QgeGh0bWxOYW1lc3BhY2VVUkkgPSAnaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCc7CisK
K3Rlc3Rfd2l0aF93aW5kb3coKGNvbnRlbnRXaW5kb3csIGNvbnRlbnREb2N1bWVudCkgPT4gewor
ICAgIGxldCBjb25zdHJ1Y3RvckFyZ3VtZW50czsKKyAgICBjbGFzcyBNeUN1c3RvbUVsZW1lbnQg
ZXh0ZW5kcyBjb250ZW50V2luZG93LkhUTUxFbGVtZW50IHsKKyAgICAgICAgY29uc3RydWN0b3Io
KSB7CisgICAgICAgICAgICBjb25zdHJ1Y3RvckFyZ3VtZW50cyA9IEFycmF5LmZyb20oYXJndW1l
bnRzKTsKKyAgICAgICAgICAgIHN1cGVyKCk7CisgICAgICAgIH0KKyAgICB9CisgICAgY29udGVu
dFdpbmRvdy5jdXN0b21FbGVtZW50cy5kZWZpbmUoJ215LWN1c3RvbS1lbGVtZW50JywgTXlDdXN0
b21FbGVtZW50KTsKKyAgICBjb25zdCBpbnN0YW5jZSA9IGNvbnRlbnREb2N1bWVudC5jcmVhdGVF
bGVtZW50KCdteS1jdXN0b20tZWxlbWVudCcpOworICAgIGFzc2VydF90cnVlKGluc3RhbmNlIGlu
c3RhbmNlb2YgTXlDdXN0b21FbGVtZW50KTsKKyAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKGNvbnN0
cnVjdG9yQXJndW1lbnRzLCBbXSk7Cit9LCAnZG9jdW1lbnQuY3JlYXRlRWxlbWVudCBpbnZva2Ug
YSBjdXN0b20gZWxlbWVudCBjb25zdHJ1Y3RvciB3aXRoIG5vIGFyZ3VtZW50cycpOworCit0ZXN0
X3dpdGhfd2luZG93KChjb250ZW50V2luZG93LCBjb250ZW50RG9jdW1lbnQpID0+IHsKKyAgICBj
bGFzcyBNeUN1c3RvbUVsZW1lbnQgZXh0ZW5kcyBjb250ZW50V2luZG93LkhUTUxFbGVtZW50IHt9
OworCisgICAgY29uc3QgdXBncmFkZUNhbmRpZGF0ZSA9IGNvbnRlbnREb2N1bWVudC5jcmVhdGVF
bGVtZW50TlMoeGh0bWxOYW1lc3BhY2VVUkksICdteS1jdXN0b20tZWxlbWVudCcpOworICAgIGFz
c2VydF90cnVlKHVwZ3JhZGVDYW5kaWRhdGUgaW5zdGFuY2VvZiBjb250ZW50V2luZG93LkhUTUxF
bGVtZW50KTsKKyAgICBhc3NlcnRfZmFsc2UodXBncmFkZUNhbmRpZGF0ZSBpbnN0YW5jZW9mIE15
Q3VzdG9tRWxlbWVudCk7CisKKyAgICBjb250ZW50V2luZG93LmN1c3RvbUVsZW1lbnRzLmRlZmlu
ZSgnbXktY3VzdG9tLWVsZW1lbnQnLCBNeUN1c3RvbUVsZW1lbnQpOworICAgIGNvbnN0IGluc3Rh
bmNlID0gY29udGVudERvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyh4aHRtbE5hbWVzcGFjZVVSSSwg
J215LWN1c3RvbS1lbGVtZW50Jyk7CisgICAgYXNzZXJ0X3RydWUoaW5zdGFuY2UgaW5zdGFuY2Vv
ZiBNeUN1c3RvbUVsZW1lbnQpOworICAgIGFzc2VydF9lcXVhbHMoaW5zdGFuY2UubG9jYWxOYW1l
LCAnbXktY3VzdG9tLWVsZW1lbnQnKTsKKyAgICBhc3NlcnRfZXF1YWxzKGluc3RhbmNlLm5hbWVz
cGFjZVVSSSwgeGh0bWxOYW1lc3BhY2VVUkkpOworfSwgJ2RvY3VtZW50LmNyZWF0ZUVsZW1lbnRO
UyBtdXN0IGNyZWF0ZSBhbiBpbnN0YW5jZSBvZiBjdXN0b20gZWxlbWVudHMnKTsKKwordGVzdF93
aXRoX3dpbmRvdygoY29udGVudFdpbmRvdywgY29udGVudERvY3VtZW50KSA9PiB7CisgICAgY2xh
c3MgTXlDdXN0b21FbGVtZW50IGV4dGVuZHMgY29udGVudFdpbmRvdy5IVE1MRWxlbWVudCB7fTsK
KyAgICBjb250ZW50V2luZG93LmN1c3RvbUVsZW1lbnRzLmRlZmluZSgnZWxlbWVudC13aXRoLXBy
ZWZpeCcsIE15Q3VzdG9tRWxlbWVudCk7CisKKyAgICBjb25zdCBpbnN0YW5jZSA9IGNvbnRlbnRE
b2N1bWVudC5jcmVhdGVFbGVtZW50TlMoeGh0bWxOYW1lc3BhY2VVUkksICdmb286ZWxlbWVudC13
aXRoLXByZWZpeCcpOworICAgIGFzc2VydF90cnVlKGluc3RhbmNlIGluc3RhbmNlb2YgTXlDdXN0
b21FbGVtZW50KTsKKyAgICBhc3NlcnRfZXF1YWxzKGluc3RhbmNlLmxvY2FsTmFtZSwgJ2VsZW1l
bnQtd2l0aC1wcmVmaXgnKTsKKyAgICBhc3NlcnRfZXF1YWxzKGluc3RhbmNlLm5hbWVzcGFjZVVS
SSwgeGh0bWxOYW1lc3BhY2VVUkkpOworICAgIGFzc2VydF9lcXVhbHMoaW5zdGFuY2UucHJlZml4
LCAnZm9vJyk7Cit9LCAnZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TIG11c3Qgc2V0IHRoZSBwcmVm
aXggYWZ0ZXIgY29uc3RydWN0aW5nIGEgY3VzdG9tIGVsZW1lbnQnKTsKKwordGVzdF93aXRoX3dp
bmRvdygoY29udGVudFdpbmRvdywgY29udGVudERvY3VtZW50KSA9PiB7CisgICAgbGV0IGlubmVy
RWxlbWVudDsKKyAgICBsZXQgaW5uZXJFbGVtZW50UHJlZml4OworICAgIGxldCBvdXRlckVsZW1l
bnQ7CisgICAgbGV0IG91dGVyRWxlbWVudFByZWZpeDsKKyAgICBjbGFzcyBNeUN1c3RvbUVsZW1l
bnQgZXh0ZW5kcyBjb250ZW50V2luZG93LkhUTUxFbGVtZW50IHsKKyAgICAgICAgY29uc3RydWN0
b3IoaXNJbm5lckNhbGwpIHsKKyAgICAgICAgICAgIGlmIChpc0lubmVyQ2FsbCkgeworICAgICAg
ICAgICAgICAgIGlubmVyRWxlbWVudCA9IHN1cGVyKCk7CisgICAgICAgICAgICAgICAgaW5uZXJF
bGVtZW50UHJlZml4ID0gaW5uZXJFbGVtZW50LnByZWZpeDsKKyAgICAgICAgICAgICAgICByZXR1
cm4gaW5uZXJFbGVtZW50OworICAgICAgICAgICAgfQorICAgICAgICAgICAgb3V0ZXJFbGVtZW50
ID0gc3VwZXIoKTsKKyAgICAgICAgICAgIG91dGVyRWxlbWVudFByZWZpeCA9IG91dGVyRWxlbWVu
dC5wcmVmaXg7CisgICAgICAgICAgICByZXR1cm4gbmV3IE15Q3VzdG9tRWxlbWVudCh0cnVlKTsK
KyAgICAgICAgfQorICAgIH0KKyAgICBjb250ZW50V2luZG93LmN1c3RvbUVsZW1lbnRzLmRlZmlu
ZSgnY3VzdG9tLWVsZW1lbnQnLCBNeUN1c3RvbUVsZW1lbnQpOworCisgICAgY29uc3QgaW5zdGFu
Y2UgPSBjb250ZW50RG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKHhodG1sTmFtZXNwYWNlVVJJLCAn
Zm9vOmN1c3RvbS1lbGVtZW50Jyk7CisgICAgYXNzZXJ0X3RydWUoaW5zdGFuY2UgaW5zdGFuY2Vv
ZiBNeUN1c3RvbUVsZW1lbnQpOworICAgIGFzc2VydF9lcXVhbHMoaW5zdGFuY2UubG9jYWxOYW1l
LCAnY3VzdG9tLWVsZW1lbnQnKTsKKyAgICBhc3NlcnRfZXF1YWxzKGluc3RhbmNlLm5hbWVzcGFj
ZVVSSSwgeGh0bWxOYW1lc3BhY2VVUkkpOworICAgIGFzc2VydF9lcXVhbHMoaW5zdGFuY2UucHJl
Zml4LCAnZm9vJyk7CisgICAgYXNzZXJ0X2VxdWFscyhpbnN0YW5jZSwgaW5uZXJFbGVtZW50LCAn
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TIG11c3QgY3JlYXRlIGFuIGVsZW1lbnQgd2l0aCB0aGUg
c3luY2hyb25vdXMgY3VzdG9tIGVsZW1lbnRzIGZsYWcgc2V0Jyk7CisgICAgYXNzZXJ0X2VxdWFs
cyhpbm5lckVsZW1lbnRQcmVmaXgsIG51bGwsICdIVE1MIGNvbnN0cnVjdG9yIG11c3Qgbm90IHNl
dCBwcmVmaXgnKTsKKyAgICBhc3NlcnRfZXF1YWxzKG91dGVyRWxlbWVudFByZWZpeCwgbnVsbCwg
J0hUTUwgY29uc3RydWN0b3IgbXVzdCBub3Qgc2V0IHByZWZpeCcpOworfSwgJ2RvY3VtZW50LmNy
ZWF0ZUVsZW1lbnROUyBtdXN0IHVzZSB0aGUgZWxlbWVudCByZXR1cm5lZCBieSB0aGUgY29uc3Ry
dWN0b3InKTsKKworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>294767</attachid>
            <date>2016-11-14 15:53:42 -0800</date>
            <delta_ts>2016-11-14 15:54:18 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-164700-20161114154928.patch</filename>
            <type>text/plain</type>
            <size>20660</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA4NjY3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWU0ZTc0OWM2NWM4NTkz
NDQ5MTg3YzBlMmU5NTczZmE4YjlkOWQ4My4uNDAxODczYjcyYjgyMDIwZjE3MDJlMDg2NDE3Nzc5
ZjhlMTM2MWJiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ2IEBACisyMDE2LTExLTEzICBSeW9z
dWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnROUyBkb2Vzbid0IGNvbnN0cnVjdCBhIGN1c3RvbSBlbGVtZW50CisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjQ3MDAKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGaXhlZCB0aGUgYnVnIHRoYXQgZG9j
dW1lbnQuY3JlYXRlRWxlbWVudE5TIGRvZXNuJ3QgY3JlYXRlIGEgY3VzdG9tIGVsZW1lbnQgb3Ig
ZW5xdWV1ZSBpdCB0byB1cGdyYWRlLgorCisgICAgICAgIEFsc28gbWFkZSBjb25zdHJ1Y3RDdXN0
b21FbGVtZW50U3luY2hyb25vdXNseSBub3QgY2FsbCB0aGUgY3VzdG9tIGVsZW1lbnQgY29uc3Ry
dWN0b3JzIHdpdGggdGhlIGVsZW1lbnQncworICAgICAgICBsb2NhbCBuYW1lIGFzIHRoZSBmaXJz
dCBhcmd1bWVudCwgd2hpY2ggd2FzIGEgbm9uLXN0YW5kYXJkIGJlaGF2aW9yIGFkZGVkIGR1cmlu
ZyBwcm90b3R5cGluZy4KKworICAgICAgICBUZXN0OiBmYXN0L2N1c3RvbS1lbGVtZW50cy9ET01J
bXBsZW1lbnRhdGlvbi1jcmVhdGVEb2N1bWVudC5odG1sCisgICAgICAgICAgICAgIGZhc3QvY3Vz
dG9tLWVsZW1lbnRzL2RvY3VtZW50LWNyZWF0ZUVsZW1lbnROUy5odG1sCisKKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9KU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SlNDdXN0b21FbGVtZW50SW50ZXJmYWNlOjpjb25zdHJ1Y3RFbGVtZW50V2l0aEZhbGxiYWNr
KTogQWRkZWQgYSB2YXJpYW50IHRoYXQgdGFrZXMgUXVhbGlmaWVkTmFtZQorICAgICAgICBpbnN0
ZWFkIG9mIEF0b21pY1N0cmluZy4KKyAgICAgICAgKFdlYkNvcmU6OmNvbnN0cnVjdEN1c3RvbUVs
ZW1lbnRTeW5jaHJvbm91c2x5KTogRG9uJ3QgYWRkIHRoZSBsb2NhbCBuYW1lIGFzIGFuIGFyZ3Vt
ZW50LgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQ3VzdG9tRWxlbWVudEludGVyZmFjZS5oOgor
CisgICAgICAgICogZG9tL0N1c3RvbUVsZW1lbnRSZWdpc3RyeS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDdXN0b21FbGVtZW50UmVnaXN0cnk6OmZpbmRJbnRlcmZhY2UpOiBKdXN0IGZpbmQgdGhl
IGludGVyZmFjZSBiYXNlZCBvbiB0aGUgbG9jYWwgbmFtZSBhZnRlcgorICAgICAgICBjaGVja2lu
ZyB0aGUgbmFtZXNwYWNlIFVSSSB0byBiZSB0aGF0IG9mIHRoZSBYSFRNTC4gV2UgbmVlZCB0byBp
Z25vcmUgdGhlIHByZWZpeCBmb3IgdGhlIHB1cnBvc2Ugb2YgbG9va2luZworICAgICAgICB1cCB0
aGUgY3VzdG9tIGVsZW1lbnQgZGVmaW5pdGlvbiBhcyBzcGVjaWZpZWQgaW4gdGhlIGxhdGVzdCBI
VE1MIHNwZWNpZmljYXRpb246CisgICAgICAgIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcv
bXVsdGlwYWdlL3NjcmlwdGluZy5odG1sI2xvb2stdXAtYS1jdXN0b20tZWxlbWVudC1kZWZpbml0
aW9uCisKKyAgICAgICAgKiBkb20vRE9NSW1wbGVtZW50YXRpb24uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RE9NSW1wbGVtZW50YXRpb246OmNyZWF0ZURvY3VtZW50KTogQWRkZWQgYW4gYXNzZXJ0
aW9uIHRvIG1ha2Ugc3VyZSB3ZSBkb24ndCBpbnZva2Ugc2NyaXB0cyB3aGlsZQorICAgICAgICBj
b25zdHJ1Y3RpbmcgdGhlIGRvY3VtZW50IGVsZW1lbnQuCisKKyAgICAgICAgKiBkb20vRG9jdW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlVXBncmFkZUNhbmRpZGF0ZUVsZW1lbnQp
OiBNYWRlIHRoaXMgZnVuY3Rpb24gY3JlYXRlIGEgSFRNTFVua25vd25FbGVtZW50IGluc3RlYWQg
b2YgcmV0dXJuaW5nCisgICAgICAgIG51bGxwdHIgdG8gc2hhcmUgbW9yZSBjb2RlLiBBbHNvIGFk
ZGVkIGEgdmFyaWFudCB3aGljaCB0YWtlcyBRdWFsaWZpZWROYW1lLgorICAgICAgICAoV2ViQ29y
ZTo6aXNWYWxpZEhUTUxFbGVtZW50TmFtZSk6IEFkZGVkOyBoZWxwZXJzIGZvciBjcmVhdGVIVE1M
RWxlbWVudFdpdGhOYW1lVmFsaWRhdGlvbiB0byBjYWxsIGlzVmFsaWROYW1lCisgICAgICAgIG9u
IERvY3VtZW50IHdpdGggdGhlIHJpZ2h0IGFyZ3VtZW50LgorICAgICAgICAoV2ViQ29yZTo6Y3Jl
YXRlSFRNTEVsZW1lbnRXaXRoTmFtZVZhbGlkYXRpb24pOiBUZW1wbGF0aXplZCB0aGUgZnVuY3Rp
b24gdG8gYmUgY2FsbGVkIHdpdGggZWl0aGVyIEF0b21pY1N0cmluZworICAgICAgICBvciBRdWFs
aWZpZWROYW1lIGZvciB0aGUgbmFtZS4KKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUZhbGxiYWNr
SFRNTEVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmNyZWF0ZUVsZW1lbnRO
Uyk6IENhbGwgY3JlYXRlSFRNTEVsZW1lbnRXaXRoTmFtZVZhbGlkYXRpb24gdG8gY3JlYXRlIGEg
Y3VzdG9tIGVsZW1lbnQgaWYKKyAgICAgICAgcG9zc2libGUuIFRoaXMgZnVuY3Rpb24gZW5kcyB1
cCByZS12YWxpZGF0aW5nIHRoZSBlbGVtZW50IG5hbWUgYmVmb3JlIGNyZWF0aW5nIGEgSFRNTFVu
a25vd25FbGVtZW50IGJ1dCB0aGF0CisgICAgICAgIHNob3VsZG4ndCBiZSBhIGNvbW1vbiBzY2Vu
YXJpbyB0byBtYXR0ZXIuIEluIGZhY3QsIGNyZWF0ZUVsZW1lbnROUyBpcyBhIHJhcmVseSB1c2Vk
IEFQSS4KKwogMjAxNi0xMS0xMiAgRGFuIEJlcm5zdGVpbiAgPG1pdHpAYXBwbGUuY29tPgogCiAg
ICAgICAgIFRyaWVkIHRvIGZpeCB0aGUgaU9TIGJ1aWxkIGFmdGVyIHIyMDg2NjYuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2Uu
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21FbGVtZW50SW50ZXJmYWNl
LmNwcAppbmRleCAzYzRhZmQ4ODg1YzY3ODhkYWRhN2MyNTY4N2MzODE2Yzk0N2UyZGRkLi42NTBl
ODRiOGFhMjM2NTc4NDM5NWZhODI4ZjU2YjYwZmMwNDNiMGFjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tRWxlbWVudEludGVyZmFjZS5jcHAKQEAg
LTY3LDcgKzY3LDIyIEBAIFJlZjxFbGVtZW50PiBKU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2U6OmNv
bnN0cnVjdEVsZW1lbnRXaXRoRmFsbGJhY2soRG9jdW1lbnQmIGRvCiAgICAgZWxlbWVudC0+c2V0
SXNDdXN0b21FbGVtZW50VXBncmFkZUNhbmRpZGF0ZSgpOwogICAgIGVsZW1lbnQtPnNldElzRmFp
bGVkQ3VzdG9tRWxlbWVudCgqdGhpcyk7CiAKLSAgICByZXR1cm4gZWxlbWVudC5nZXQoKTsKKyAg
ICByZXR1cm4gV1RGTW92ZShlbGVtZW50KTsKK30KKworUmVmPEVsZW1lbnQ+IEpTQ3VzdG9tRWxl
bWVudEludGVyZmFjZTo6Y29uc3RydWN0RWxlbWVudFdpdGhGYWxsYmFjayhEb2N1bWVudCYgZG9j
dW1lbnQsIGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUpCit7CisgICAgaWYgKGF1dG8gZWxlbWVu
dCA9IHRyeVRvQ29uc3RydWN0Q3VzdG9tRWxlbWVudChkb2N1bWVudCwgbmFtZS5sb2NhbE5hbWUo
KSkpIHsKKyAgICAgICAgaWYgKG5hbWUucHJlZml4KCkgIT0gbnVsbEF0b20pCisgICAgICAgICAg
ICBlbGVtZW50LT5zZXRQcmVmaXgobmFtZS5wcmVmaXgoKSk7CisgICAgICAgIHJldHVybiBlbGVt
ZW50LnJlbGVhc2VOb25OdWxsKCk7CisgICAgfQorCisgICAgYXV0byBlbGVtZW50ID0gSFRNTFVu
a25vd25FbGVtZW50OjpjcmVhdGUobmFtZSwgZG9jdW1lbnQpOworICAgIGVsZW1lbnQtPnNldElz
Q3VzdG9tRWxlbWVudFVwZ3JhZGVDYW5kaWRhdGUoKTsKKyAgICBlbGVtZW50LT5zZXRJc0ZhaWxl
ZEN1c3RvbUVsZW1lbnQoKnRoaXMpOworCisgICAgcmV0dXJuIFdURk1vdmUoZWxlbWVudCk7CiB9
CiAKIFJlZlB0cjxFbGVtZW50PiBKU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2U6OnRyeVRvQ29uc3Ry
dWN0Q3VzdG9tRWxlbWVudChEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IEF0b21pY1N0cmluZyYg
bG9jYWxOYW1lKQpAQCAtMTEwLDEwICsxMjUsOCBAQCBzdGF0aWMgUmVmUHRyPEVsZW1lbnQ+IGNv
bnN0cnVjdEN1c3RvbUVsZW1lbnRTeW5jaHJvbm91c2x5KERvY3VtZW50JiBkb2N1bWVudCwgVgog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKLSAgICBNYXJrZWRBcmd1bWVudEJ1ZmZl
ciBhcmdzOwotICAgIGFyZ3MuYXBwZW5kKGpzU3RyaW5nV2l0aENhY2hlKCZzdGF0ZSwgbG9jYWxO
YW1lKSk7Ci0KICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgY29va2llID0gSlNN
YWluVGhyZWFkRXhlY1N0YXRlOjppbnN0cnVtZW50RnVuY3Rpb25Db25zdHJ1Y3QoJmRvY3VtZW50
LCBjb25zdHJ1Y3RUeXBlLCBjb25zdHJ1Y3REYXRhKTsKKyAgICBNYXJrZWRBcmd1bWVudEJ1ZmZl
ciBhcmdzOwogICAgIEpTVmFsdWUgbmV3RWxlbWVudCA9IGNvbnN0cnVjdCgmc3RhdGUsIGNvbnN0
cnVjdG9yLCBjb25zdHJ1Y3RUeXBlLCBjb25zdHJ1Y3REYXRhLCBhcmdzKTsKICAgICBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb246OmRpZENhbGxGdW5jdGlvbihjb29raWUsICZkb2N1bWVudCk7CiAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgbnVsbHB0cik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2UuaCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tRWxlbWVudEludGVyZmFjZS5oCmluZGV4IGZk
MzY4NDlhNWUyZTUxNGUyMDA4NGZmN2JiOTc4ZTY4MjJkZjAxNjIuLjhhM2Y2NTZlZTcwN2NkZWI0
NTU1Zjk1ZjU4YTJjOTcxYzUyMzk5NDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTQ3VzdG9tRWxlbWVudEludGVyZmFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTQ3VzdG9tRWxlbWVudEludGVyZmFjZS5oCkBAIC01OSw2ICs1OSw3IEBAIHB1
YmxpYzoKICAgICB9CiAKICAgICBSZWY8RWxlbWVudD4gY29uc3RydWN0RWxlbWVudFdpdGhGYWxs
YmFjayhEb2N1bWVudCYsIGNvbnN0IEF0b21pY1N0cmluZyYpOworICAgIFJlZjxFbGVtZW50PiBj
b25zdHJ1Y3RFbGVtZW50V2l0aEZhbGxiYWNrKERvY3VtZW50JiwgY29uc3QgUXVhbGlmaWVkTmFt
ZSYpOwogCiAgICAgdm9pZCB1cGdyYWRlRWxlbWVudChFbGVtZW50Jik7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9DdXN0b21FbGVtZW50UmVnaXN0cnkuY3BwIGIvU291cmNlL1dl
YkNvcmUvZG9tL0N1c3RvbUVsZW1lbnRSZWdpc3RyeS5jcHAKaW5kZXggZmI1NjY2MDgzYjdkZTg0
MDViZGRjNTJhNzIyYjMzMzYxZjZmY2NmMi4uZDRmNGQwOWY3OTU1NWI3YTMwNzNlYzAzYzA3YWNj
YzllMGNmOTJhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0N1c3RvbUVsZW1lbnRS
ZWdpc3RyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0N1c3RvbUVsZW1lbnRSZWdpc3Ry
eS5jcHAKQEAgLTg3LDExICs4Nyw5IEBAIEpTQ3VzdG9tRWxlbWVudEludGVyZmFjZSogQ3VzdG9t
RWxlbWVudFJlZ2lzdHJ5OjpmaW5kSW50ZXJmYWNlKGNvbnN0IEVsZW1lbnQmIGVsCiAKIEpTQ3Vz
dG9tRWxlbWVudEludGVyZmFjZSogQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5OjpmaW5kSW50ZXJmYWNl
KGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUpIGNvbnN0CiB7Ci0gICAgQVNTRVJUKCFuYW1lLmhh
c1ByZWZpeCgpKTsKICAgICBpZiAobmFtZS5uYW1lc3BhY2VVUkkoKSAhPSBIVE1MTmFtZXM6Onho
dG1sTmFtZXNwYWNlVVJJKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBhdXRvIGl0ID0g
bV9uYW1lTWFwLmZpbmQobmFtZS5sb2NhbE5hbWUoKSk7Ci0gICAgcmV0dXJuIGl0ID09IG1fbmFt
ZU1hcC5lbmQoKSB8fCBpdC0+dmFsdWUtPm5hbWUoKSAhPSBuYW1lID8gbnVsbHB0ciA6IGNvbnN0
X2Nhc3Q8SlNDdXN0b21FbGVtZW50SW50ZXJmYWNlKj4oaXQtPnZhbHVlLnB0cigpKTsKKyAgICBy
ZXR1cm4gbV9uYW1lTWFwLmdldChuYW1lLmxvY2FsTmFtZSgpKTsKIH0KIAogSlNDdXN0b21FbGVt
ZW50SW50ZXJmYWNlKiBDdXN0b21FbGVtZW50UmVnaXN0cnk6OmZpbmRJbnRlcmZhY2UoY29uc3Qg
QXRvbWljU3RyaW5nJiBuYW1lKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L0RPTUltcGxlbWVudGF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9ET01JbXBsZW1lbnRh
dGlvbi5jcHAKaW5kZXggZGVhYTkyYmExZGYxZWEzODRiYzJkMDQ4NzAyMWM3MDQyNWIxYTBjNy4u
MzcxYjE3MDljY2Y3MTM3YzFjMDNjM2JkYjM4YzFiN2RlNGM2MThlZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL0RPTUltcGxlbWVudGF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRE9NSW1wbGVtZW50YXRpb24uY3BwCkBAIC0xMTUsNiArMTE1LDcgQEAgRXhjZXB0aW9u
T3I8UmVmPFhNTERvY3VtZW50Pj4gRE9NSW1wbGVtZW50YXRpb246OmNyZWF0ZURvY3VtZW50KGNv
bnN0IFN0cmluZyYgbmEKIAogICAgIFJlZlB0cjxFbGVtZW50PiBkb2N1bWVudEVsZW1lbnQ7CiAg
ICAgaWYgKCFxdWFsaWZpZWROYW1lLmlzRW1wdHkoKSkgeworICAgICAgICBBU1NFUlQoIWRvY3Vt
ZW50LT5kb21XaW5kb3coKSk7IC8vIElmIGRvbVdpbmRvdyBpcyBub3QgbnVsbCwgY3JlYXRlRWxl
bWVudE5TIGNvdWxkIGZpbmQgQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5IGFuZCBhcmJpdHJhcnkgc2Ny
aXB0cy4KICAgICAgICAgYXV0byByZXN1bHQgPSBkb2N1bWVudC0+Y3JlYXRlRWxlbWVudE5TKG5h
bWVzcGFjZVVSSSwgcXVhbGlmaWVkTmFtZSk7CiAgICAgICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0
aW9uKCkpCiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IDkwODFmODcyNTdkOTM0ZjZjZDU0YTIwNTVlN2ZiMjNm
MWU4NTFkOGIuLjJkODIxZDUzYjc5ZDMwY2QwZTJiMWZmMTkyOTY0MTJhNmVjZGI5NmMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50LmNwcApAQCAtODYxLDQyICs4NjEsNTEgQEAgdm9pZCBEb2N1bWVudDo6
Y2hpbGRyZW5DaGFuZ2VkKGNvbnN0IENoaWxkQ2hhbmdlJiBjaGFuZ2UpCiAgICAgc3R5bGVTY29w
ZSgpLmNsZWFyUmVzb2x2ZXIoKTsKIH0KIAotc3RhdGljIEFMV0FZU19JTkxJTkUgUmVmUHRyPEhU
TUxFbGVtZW50PiBjcmVhdGVVcGdyYWRlQ2FuZGlkYXRlRWxlbWVudChEb2N1bWVudCYgZG9jdW1l
bnQsIGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUpCitzdGF0aWMgQUxXQVlTX0lOTElORSBSZWY8
SFRNTEVsZW1lbnQ+IGNyZWF0ZVVwZ3JhZGVDYW5kaWRhdGVFbGVtZW50KERvY3VtZW50JiBkb2N1
bWVudCwgY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSkKIHsKLSAgICBpZiAoIVJ1bnRpbWVFbmFi
bGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuY3VzdG9tRWxlbWVudHNFbmFibGVkKCkpCi0g
ICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgaWYgKERvY3VtZW50Ojp2YWxpZGF0ZUN1c3Rv
bUVsZW1lbnROYW1lKG5hbWUubG9jYWxOYW1lKCkpICE9IEN1c3RvbUVsZW1lbnROYW1lVmFsaWRh
dGlvblN0YXR1czo6VmFsaWQpCi0gICAgICAgIHJldHVybiBudWxscHRyOworICAgIGlmICghUnVu
dGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5jdXN0b21FbGVtZW50c0VuYWJs
ZWQoKQorICAgICAgICB8fCBEb2N1bWVudDo6dmFsaWRhdGVDdXN0b21FbGVtZW50TmFtZShuYW1l
LmxvY2FsTmFtZSgpKSAhPSBDdXN0b21FbGVtZW50TmFtZVZhbGlkYXRpb25TdGF0dXM6OlZhbGlk
KQorICAgICAgICByZXR1cm4gSFRNTFVua25vd25FbGVtZW50OjpjcmVhdGUobmFtZSwgZG9jdW1l
bnQpOwogCiAgICAgYXV0byBlbGVtZW50ID0gSFRNTEVsZW1lbnQ6OmNyZWF0ZShuYW1lLCBkb2N1
bWVudCk7CiAgICAgZWxlbWVudC0+c2V0SXNDdXN0b21FbGVtZW50VXBncmFkZUNhbmRpZGF0ZSgp
OwotICAgIHJldHVybiBXVEZNb3ZlKGVsZW1lbnQpOworICAgIHJldHVybiBlbGVtZW50OworfQor
CitzdGF0aWMgQUxXQVlTX0lOTElORSBSZWY8SFRNTEVsZW1lbnQ+IGNyZWF0ZVVwZ3JhZGVDYW5k
aWRhdGVFbGVtZW50KERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgQXRvbWljU3RyaW5nJiBsb2Nh
bE5hbWUpCit7CisgICAgcmV0dXJuIGNyZWF0ZVVwZ3JhZGVDYW5kaWRhdGVFbGVtZW50KGRvY3Vt
ZW50LCBRdWFsaWZpZWROYW1lIHsgbnVsbEF0b20sIGxvY2FsTmFtZSwgeGh0bWxOYW1lc3BhY2VV
UkkgfSk7Cit9CisKK3N0YXRpYyBpbmxpbmUgYm9vbCBpc1ZhbGlkSFRNTEVsZW1lbnROYW1lKGNv
bnN0IEF0b21pY1N0cmluZyYgbG9jYWxOYW1lKQoreworICAgIHJldHVybiBEb2N1bWVudDo6aXNW
YWxpZE5hbWUobG9jYWxOYW1lKTsKIH0KIAotc3RhdGljIEV4Y2VwdGlvbk9yPFJlZjxFbGVtZW50
Pj4gY3JlYXRlSFRNTEVsZW1lbnRXaXRoTmFtZVZhbGlkYXRpb24oRG9jdW1lbnQmIGRvY3VtZW50
LCBjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsTmFtZSkKK3N0YXRpYyBpbmxpbmUgYm9vbCBpc1Zh
bGlkSFRNTEVsZW1lbnROYW1lKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUpCiB7Ci0gICAgYXV0
byBlbGVtZW50ID0gSFRNTEVsZW1lbnRGYWN0b3J5OjpjcmVhdGVLbm93bkVsZW1lbnQobG9jYWxO
YW1lLCBkb2N1bWVudCk7CisgICAgcmV0dXJuIERvY3VtZW50Ojppc1ZhbGlkTmFtZShuYW1lLmxv
Y2FsTmFtZSgpKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgTmFtZVR5cGU+CitzdGF0aWMgRXhj
ZXB0aW9uT3I8UmVmPEVsZW1lbnQ+PiBjcmVhdGVIVE1MRWxlbWVudFdpdGhOYW1lVmFsaWRhdGlv
bihEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IE5hbWVUeXBlJiBuYW1lKQoreworICAgIGF1dG8g
ZWxlbWVudCA9IEhUTUxFbGVtZW50RmFjdG9yeTo6Y3JlYXRlS25vd25FbGVtZW50KG5hbWUsIGRv
Y3VtZW50KTsKICAgICBpZiAoTElLRUxZKGVsZW1lbnQpKQogICAgICAgICByZXR1cm4gUmVmPEVs
ZW1lbnQ+IHsgZWxlbWVudC5yZWxlYXNlTm9uTnVsbCgpIH07CiAKICAgICBpZiAoYXV0byogd2lu
ZG93ID0gZG9jdW1lbnQuZG9tV2luZG93KCkpIHsKICAgICAgICAgYXV0byogcmVnaXN0cnkgPSB3
aW5kb3ctPmN1c3RvbUVsZW1lbnRSZWdpc3RyeSgpOwogICAgICAgICBpZiAoVU5MSUtFTFkocmVn
aXN0cnkpKSB7Ci0gICAgICAgICAgICBpZiAoYXV0byogZWxlbWVudEludGVyZmFjZSA9IHJlZ2lz
dHJ5LT5maW5kSW50ZXJmYWNlKGxvY2FsTmFtZSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGVs
ZW1lbnRJbnRlcmZhY2UtPmNvbnN0cnVjdEVsZW1lbnRXaXRoRmFsbGJhY2soZG9jdW1lbnQsIGxv
Y2FsTmFtZSk7CisgICAgICAgICAgICBpZiAoYXV0byogZWxlbWVudEludGVyZmFjZSA9IHJlZ2lz
dHJ5LT5maW5kSW50ZXJmYWNlKG5hbWUpKQorICAgICAgICAgICAgICAgIHJldHVybiBlbGVtZW50
SW50ZXJmYWNlLT5jb25zdHJ1Y3RFbGVtZW50V2l0aEZhbGxiYWNrKGRvY3VtZW50LCBuYW1lKTsK
ICAgICAgICAgfQogICAgIH0KIAotICAgIGlmIChVTkxJS0VMWSghRG9jdW1lbnQ6OmlzVmFsaWRO
YW1lKGxvY2FsTmFtZSkpKQorICAgIGlmIChVTkxJS0VMWSghaXNWYWxpZEhUTUxFbGVtZW50TmFt
ZShuYW1lKSkpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJTlZBTElEX0NIQVJBQ1RFUl9F
UlIgfTsKIAotICAgIFF1YWxpZmllZE5hbWUgcXVhbGlmaWVkTmFtZSB7IG51bGxBdG9tLCBsb2Nh
bE5hbWUsIHhodG1sTmFtZXNwYWNlVVJJIH07Ci0KLSAgICBpZiAoYXV0byBlbGVtZW50ID0gY3Jl
YXRlVXBncmFkZUNhbmRpZGF0ZUVsZW1lbnQoZG9jdW1lbnQsIHF1YWxpZmllZE5hbWUpKQotICAg
ICAgICByZXR1cm4gUmVmPEVsZW1lbnQ+IHsgZWxlbWVudC5yZWxlYXNlTm9uTnVsbCgpIH07Ci0K
LSAgICByZXR1cm4gUmVmPEVsZW1lbnQ+IHsgSFRNTFVua25vd25FbGVtZW50OjpjcmVhdGUocXVh
bGlmaWVkTmFtZSwgZG9jdW1lbnQpIH07CisgICAgcmV0dXJuIFJlZjxFbGVtZW50PiB7IGNyZWF0
ZVVwZ3JhZGVDYW5kaWRhdGVFbGVtZW50KGRvY3VtZW50LCBuYW1lKSB9OwogfQogCiBFeGNlcHRp
b25PcjxSZWY8RWxlbWVudD4+IERvY3VtZW50OjpjcmVhdGVFbGVtZW50Rm9yQmluZGluZ3MoY29u
c3QgQXRvbWljU3RyaW5nJiBuYW1lKQpAQCAtMTA1NSw5ICsxMDY0LDcgQEAgc3RhdGljIFJlZjxI
VE1MRWxlbWVudD4gY3JlYXRlRmFsbGJhY2tIVE1MRWxlbWVudChEb2N1bWVudCYgZG9jdW1lbnQs
IGNvbnN0IFF1YWwKICAgICAgICAgfQogICAgIH0KICAgICAvLyBGSVhNRTogU2hvdWxkIHdlIGFs
c28gY2hlY2sgdGhlIGVxdWFsaXR5IG9mIHByZWZpeCBiZXR3ZWVuIHRoZSBjdXN0b20gZWxlbWVu
dCBhbmQgbmFtZT8KLSAgICBpZiAoYXV0byBlbGVtZW50ID0gY3JlYXRlVXBncmFkZUNhbmRpZGF0
ZUVsZW1lbnQoZG9jdW1lbnQsIG5hbWUpKQotICAgICAgICByZXR1cm4gZWxlbWVudC5yZWxlYXNl
Tm9uTnVsbCgpOwotICAgIHJldHVybiBIVE1MVW5rbm93bkVsZW1lbnQ6OmNyZWF0ZShuYW1lLCBk
b2N1bWVudCk7CisgICAgcmV0dXJuIGNyZWF0ZVVwZ3JhZGVDYW5kaWRhdGVFbGVtZW50KGRvY3Vt
ZW50LCBuYW1lKTsKIH0KIAogLy8gRklYTUU6IFRoaXMgc2hvdWxkIHJlYWxseSBiZSBpbiBhIHBv
c3NpYmxlIEVsZW1lbnRGYWN0b3J5IGNsYXNzLgpAQCAtMTE1OSw2ICsxMTY2LDEwIEBAIEV4Y2Vw
dGlvbk9yPFJlZjxFbGVtZW50Pj4gRG9jdW1lbnQ6OmNyZWF0ZUVsZW1lbnROUyhjb25zdCBBdG9t
aWNTdHJpbmcmIG5hbWVzcGFjCiAgICAgUXVhbGlmaWVkTmFtZSBwYXJzZWROYW1lIHsgcGFyc2VS
ZXN1bHQucmVsZWFzZVJldHVyblZhbHVlKCkgfTsKICAgICBpZiAoIWhhc1ZhbGlkTmFtZXNwYWNl
Rm9yRWxlbWVudHMocGFyc2VkTmFtZSkpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBOQU1F
U1BBQ0VfRVJSIH07CisKKyAgICBpZiAocGFyc2VkTmFtZS5uYW1lc3BhY2VVUkkoKSA9PSB4aHRt
bE5hbWVzcGFjZVVSSSkKKyAgICAgICAgcmV0dXJuIGNyZWF0ZUhUTUxFbGVtZW50V2l0aE5hbWVW
YWxpZGF0aW9uKCp0aGlzLCBwYXJzZWROYW1lKTsKKwogICAgIHJldHVybiBjcmVhdGVFbGVtZW50
KHBhcnNlZE5hbWUsIGZhbHNlKTsKIH0KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGM2MmI2YmY4ZDEzYjBhOTBlMDJmZDRk
ZWZjYTYxNTRlNjEzMWZkNWUuLmJkM2FjMGZiMzNiOTFiMWU0ZTMzY2I1N2QzNmY0NGVkMzIyOTk1
M2EgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxNi0xMS0xMyAgUnlvc3VrZSBOaXdhICA8cm5p
d2FAd2Via2l0Lm9yZz4KKworICAgICAgICBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMgZG9lc24n
dCBjb25zdHJ1Y3QgYSBjdXN0b20gZWxlbWVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY0NzAwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgQWRkZWQgVzNDIHN0eWxlIHRlc3RoYXJuZXNzLmpzIHRlc3Rz
IGZvciBjcmVhdGVFbGVtZW50TlMgYW5kIERPTUltcGxlbWVudGF0aW9uJ3MgY3JlYXRlRG9jdW1l
bnQuCisKKyAgICAgICAgKiBmYXN0L2N1c3RvbS1lbGVtZW50cy9ET01JbXBsZW1lbnRhdGlvbi1j
cmVhdGVEb2N1bWVudC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY3VzdG9t
LWVsZW1lbnRzL0RPTUltcGxlbWVudGF0aW9uLWNyZWF0ZURvY3VtZW50Lmh0bWw6IEFkZGVkLgor
ICAgICAgICAqIGZhc3QvY3VzdG9tLWVsZW1lbnRzL2RvY3VtZW50LWNyZWF0ZUVsZW1lbnROUy1l
eHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY3VzdG9tLWVsZW1lbnRzL2RvY3Vt
ZW50LWNyZWF0ZUVsZW1lbnROUy5odG1sOiBBZGRlZC4KKwogMjAxNi0xMS0xMiAgU2ltb24gRnJh
c2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgYSB3YXkgdG8gZ2V0
IHRoZSBVSS1zaWRlIHNjcm9sbGluZyB0cmVlIGFzIHRleHQgdmlhIFVJU2NyaXB0Q29udHJvbGxl
cgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jdXN0b20tZWxlbWVudHMvRE9NSW1wbGVt
ZW50YXRpb24tY3JlYXRlRG9jdW1lbnQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9j
dXN0b20tZWxlbWVudHMvRE9NSW1wbGVtZW50YXRpb24tY3JlYXRlRG9jdW1lbnQtZXhwZWN0ZWQu
dHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmM1NDA1ZGI5Y2FlNzIwMmU0NzY3ZWU4ZmZmYTA0MTk1ODIwMGUzYzMK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2N1c3RvbS1lbGVtZW50cy9ET01J
bXBsZW1lbnRhdGlvbi1jcmVhdGVEb2N1bWVudC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzIEBA
CisKK1BBU1MgZG9jdW1lbnQuY3JlYXRlRWxlbWVudCBpbnZva2UgYSBjdXN0b20gZWxlbWVudCBj
b25zdHJ1Y3RvciB3aXRoIG5vIGFyZ3VtZW50cyAKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZmFzdC9jdXN0b20tZWxlbWVudHMvRE9NSW1wbGVtZW50YXRpb24tY3JlYXRlRG9jdW1lbnQuaHRt
bCBiL0xheW91dFRlc3RzL2Zhc3QvY3VzdG9tLWVsZW1lbnRzL0RPTUltcGxlbWVudGF0aW9uLWNy
ZWF0ZURvY3VtZW50Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjZlNGUzMGRlYjk3YTE4ZTNjNzk2MDViOWE1
MWYyMGUxODNhM2RhYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY3VzdG9t
LWVsZW1lbnRzL0RPTUltcGxlbWVudGF0aW9uLWNyZWF0ZURvY3VtZW50Lmh0bWwKQEAgLTAsMCAr
MSw0MSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHRpdGxlPkN1c3RvbSBF
bGVtZW50czogZG9jdW1lbnQuaW1wbGVtZW50YXRpb24uY3JlYXRlRWxlbWVudCBtdXN0IG5vdCBp
bnN0YW50aWF0ZSBhIGN1c3RvbSBlbGVtZW50PC90aXRsZT4KKzxtZXRhIG5hbWU9ImF1dGhvciIg
dGl0bGU9IlJ5b3N1a2UgTml3YSIgaHJlZj0ibWFpbHRvOnJuaXdhQHdlYmtpdC5vcmciPgorPG1l
dGEgbmFtZT0iYXNzZXJ0IiBjb250ZW50PSJkb2N1bWVudC5pbXBsZW1lbnRhdGlvbi5jcmVhdGVF
bGVtZW50IG11c3Qgbm90IGluc3RhbnRpYXRlIGEgY3VzdG9tIGVsZW1lbnQiPgorPGxpbmsgcmVs
PSJoZWxwIiBjb250ZW50PSJodHRwczovL2RvbS5zcGVjLndoYXR3Zy5vcmcvI2RvbS1kb21pbXBs
ZW1lbnRhdGlvbi1jcmVhdGVkb2N1bWVudCI+Cis8bGluayByZWw9ImhlbHAiIGNvbnRlbnQ9Imh0
dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvI2xvb2stdXAtYS1jdXN0b20tZWxlbWVudC1kZWZp
bml0aW9uIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9jdXN0b20tZWxlbWVudHMvcmVzb3VyY2VzL2N1c3RvbS1lbGVtZW50cy1oZWxwZXJz
LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0ibG9nIj48L2Rpdj4KKzxz
Y3JpcHQ+CisKK2NvbnN0IHhodG1sTmFtZXNwYWNlVVJJID0gJ2h0dHA6Ly93d3cudzMub3JnLzE5
OTkveGh0bWwnOworCit0ZXN0X3dpdGhfd2luZG93KChjb250ZW50V2luZG93LCBjb250ZW50RG9j
dW1lbnQpID0+IHsKKyAgICBsZXQgY29uc3RydWN0b3JDb3VudCA9IDA7CisgICAgY2xhc3MgTXlD
dXN0b21FbGVtZW50IGV4dGVuZHMgY29udGVudFdpbmRvdy5IVE1MRWxlbWVudCB7CisgICAgICAg
IGNvbnN0cnVjdG9yKCkgeworICAgICAgICAgICAgc3VwZXIoKTsKKyAgICAgICAgICAgIGNvbnN0
cnVjdG9yQ291bnQrKzsKKyAgICAgICAgfQorICAgIH0KKyAgICBjb250ZW50V2luZG93LmN1c3Rv
bUVsZW1lbnRzLmRlZmluZSgnbXktY3VzdG9tLWVsZW1lbnQnLCBNeUN1c3RvbUVsZW1lbnQpOwor
ICAgIGNvbnN0IGluc3RhbmNlID0gY29udGVudERvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ215LWN1
c3RvbS1lbGVtZW50Jyk7CisgICAgYXNzZXJ0X3RydWUoaW5zdGFuY2UgaW5zdGFuY2VvZiBNeUN1
c3RvbUVsZW1lbnQpOworICAgIGFzc2VydF9lcXVhbHMoY29uc3RydWN0b3JDb3VudCwgMSk7CisK
KyAgICBjb25zdCBuZXdEb2N1bWVudCA9IGNvbnRlbnREb2N1bWVudC5pbXBsZW1lbnRhdGlvbi5j
cmVhdGVEb2N1bWVudCh4aHRtbE5hbWVzcGFjZVVSSSwgJ215LWN1c3RvbS1lbGVtZW50JywgbnVs
bCk7CisgICAgYXNzZXJ0X2VxdWFscyhjb25zdHJ1Y3RvckNvdW50LCAxKTsKKyAgICBhc3NlcnRf
dHJ1ZShuZXdEb2N1bWVudC5kb2N1bWVudEVsZW1lbnQgaW5zdGFuY2VvZiBjb250ZW50V2luZG93
LkhUTUxFbGVtZW50KTsKKyAgICBhc3NlcnRfZXF1YWxzKG5ld0RvY3VtZW50LmRvY3VtZW50RWxl
bWVudC5sb2NhbE5hbWUsICdteS1jdXN0b20tZWxlbWVudCcpOworICAgIGFzc2VydF9mYWxzZShu
ZXdEb2N1bWVudC5kb2N1bWVudEVsZW1lbnQgaW5zdGFuY2VvZiBNeUN1c3RvbUVsZW1lbnQpOwor
fSwgJ2RvY3VtZW50LmNyZWF0ZUVsZW1lbnQgaW52b2tlIGEgY3VzdG9tIGVsZW1lbnQgY29uc3Ry
dWN0b3Igd2l0aCBubyBhcmd1bWVudHMnKTsKKworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2N1c3RvbS1lbGVtZW50cy9kb2N1bWVudC1j
cmVhdGVFbGVtZW50TlMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9jdXN0b20tZWxl
bWVudHMvZG9jdW1lbnQtY3JlYXRlRWxlbWVudE5TLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ZjE4YmM4NjcxMWUzNzQzYmRlOTFlYTY2MTIwOWFlZThmNzMxZTI5Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvZmFzdC9jdXN0b20tZWxlbWVudHMvZG9jdW1lbnQtY3JlYXRlRWxlbWVu
dE5TLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDYgQEAKKworUEFTUyBkb2N1bWVudC5jcmVhdGVF
bGVtZW50IGludm9rZSBhIGN1c3RvbSBlbGVtZW50IGNvbnN0cnVjdG9yIHdpdGggbm8gYXJndW1l
bnRzIAorUEFTUyBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMgbXVzdCBjcmVhdGUgYW4gaW5zdGFu
Y2Ugb2YgY3VzdG9tIGVsZW1lbnRzIAorUEFTUyBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMgbXVz
dCBzZXQgdGhlIHByZWZpeCBhZnRlciBjb25zdHJ1Y3RpbmcgYSBjdXN0b20gZWxlbWVudCAKK1BB
U1MgZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TIG11c3QgdXNlIHRoZSBlbGVtZW50IHJldHVybmVk
IGJ5IHRoZSBjb25zdHJ1Y3RvciAKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jdXN0
b20tZWxlbWVudHMvZG9jdW1lbnQtY3JlYXRlRWxlbWVudE5TLmh0bWwgYi9MYXlvdXRUZXN0cy9m
YXN0L2N1c3RvbS1lbGVtZW50cy9kb2N1bWVudC1jcmVhdGVFbGVtZW50TlMuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4zNjkzYTEwZWU3MTI5Njc3NjRhZDU4OTQ0YzA0YjAzYTAzNjY4ZTNmCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jdXN0b20tZWxlbWVudHMvZG9jdW1lbnQtY3JlYXRl
RWxlbWVudE5TLmh0bWwKQEAgLTAsMCArMSw4OSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4K
KzxoZWFkPgorPHRpdGxlPkN1c3RvbSBFbGVtZW50czogZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5T
IG11c3QgY3JlYXRlIGFuIGVsZW1lbnQgd2l0aCBzeW5jaHJvbm91cyBjdXN0b20gZWxlbWVudHMg
ZmxhZyBzZXQ8L3RpdGxlPgorPG1ldGEgbmFtZT0iYXV0aG9yIiB0aXRsZT0iUnlvc3VrZSBOaXdh
IiBocmVmPSJtYWlsdG86cm5pd2FAd2Via2l0Lm9yZyI+Cis8bWV0YSBuYW1lPSJhc3NlcnQiIGNv
bnRlbnQ9ImRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyBtdXN0IGNyZWF0ZSBhbiBlbGVtZW50IHdp
dGggc3luY2hyb25vdXMgY3VzdG9tIGVsZW1lbnRzIGZsYWcgc2V0Ij4KKzxsaW5rIHJlbD0iaGVs
cCIgY29udGVudD0iaHR0cHM6Ly9kb20uc3BlYy53aGF0d2cub3JnLyNkb20tZG9jdW1lbnQtY3Jl
YXRlZWxlbWVudG5zIj4KKzxsaW5rIHJlbD0iaGVscCIgY29udGVudD0iaHR0cHM6Ly9kb20uc3Bl
Yy53aGF0d2cub3JnLyNjb25jZXB0LWNyZWF0ZS1lbGVtZW50Ij4KKzxzY3JpcHQgc3JjPSIuLi8u
Li9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4u
L3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jdXN0b20tZWxlbWVudHMvcmVz
b3VyY2VzL2N1c3RvbS1lbGVtZW50cy1oZWxwZXJzLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxi
b2R5PgorPGRpdiBpZD0ibG9nIj48L2Rpdj4KKzxzY3JpcHQ+CisKK2NvbnN0IHhodG1sTmFtZXNw
YWNlVVJJID0gJ2h0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwnOworCit0ZXN0X3dpdGhfd2lu
ZG93KChjb250ZW50V2luZG93LCBjb250ZW50RG9jdW1lbnQpID0+IHsKKyAgICBsZXQgY29uc3Ry
dWN0b3JBcmd1bWVudHM7CisgICAgY2xhc3MgTXlDdXN0b21FbGVtZW50IGV4dGVuZHMgY29udGVu
dFdpbmRvdy5IVE1MRWxlbWVudCB7CisgICAgICAgIGNvbnN0cnVjdG9yKCkgeworICAgICAgICAg
ICAgY29uc3RydWN0b3JBcmd1bWVudHMgPSBBcnJheS5mcm9tKGFyZ3VtZW50cyk7CisgICAgICAg
ICAgICBzdXBlcigpOworICAgICAgICB9CisgICAgfQorICAgIGNvbnRlbnRXaW5kb3cuY3VzdG9t
RWxlbWVudHMuZGVmaW5lKCdteS1jdXN0b20tZWxlbWVudCcsIE15Q3VzdG9tRWxlbWVudCk7Cisg
ICAgY29uc3QgaW5zdGFuY2UgPSBjb250ZW50RG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnbXktY3Vz
dG9tLWVsZW1lbnQnKTsKKyAgICBhc3NlcnRfdHJ1ZShpbnN0YW5jZSBpbnN0YW5jZW9mIE15Q3Vz
dG9tRWxlbWVudCk7CisgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhjb25zdHJ1Y3RvckFyZ3VtZW50
cywgW10pOworfSwgJ2RvY3VtZW50LmNyZWF0ZUVsZW1lbnQgaW52b2tlIGEgY3VzdG9tIGVsZW1l
bnQgY29uc3RydWN0b3Igd2l0aCBubyBhcmd1bWVudHMnKTsKKwordGVzdF93aXRoX3dpbmRvdygo
Y29udGVudFdpbmRvdywgY29udGVudERvY3VtZW50KSA9PiB7CisgICAgY2xhc3MgTXlDdXN0b21F
bGVtZW50IGV4dGVuZHMgY29udGVudFdpbmRvdy5IVE1MRWxlbWVudCB7fTsKKworICAgIGNvbnN0
IHVwZ3JhZGVDYW5kaWRhdGUgPSBjb250ZW50RG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKHhodG1s
TmFtZXNwYWNlVVJJLCAnbXktY3VzdG9tLWVsZW1lbnQnKTsKKyAgICBhc3NlcnRfdHJ1ZSh1cGdy
YWRlQ2FuZGlkYXRlIGluc3RhbmNlb2YgY29udGVudFdpbmRvdy5IVE1MRWxlbWVudCk7CisgICAg
YXNzZXJ0X2ZhbHNlKHVwZ3JhZGVDYW5kaWRhdGUgaW5zdGFuY2VvZiBNeUN1c3RvbUVsZW1lbnQp
OworCisgICAgY29udGVudFdpbmRvdy5jdXN0b21FbGVtZW50cy5kZWZpbmUoJ215LWN1c3RvbS1l
bGVtZW50JywgTXlDdXN0b21FbGVtZW50KTsKKyAgICBjb25zdCBpbnN0YW5jZSA9IGNvbnRlbnRE
b2N1bWVudC5jcmVhdGVFbGVtZW50TlMoeGh0bWxOYW1lc3BhY2VVUkksICdteS1jdXN0b20tZWxl
bWVudCcpOworICAgIGFzc2VydF90cnVlKGluc3RhbmNlIGluc3RhbmNlb2YgTXlDdXN0b21FbGVt
ZW50KTsKKyAgICBhc3NlcnRfZXF1YWxzKGluc3RhbmNlLmxvY2FsTmFtZSwgJ215LWN1c3RvbS1l
bGVtZW50Jyk7CisgICAgYXNzZXJ0X2VxdWFscyhpbnN0YW5jZS5uYW1lc3BhY2VVUkksIHhodG1s
TmFtZXNwYWNlVVJJKTsKK30sICdkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMgbXVzdCBjcmVhdGUg
YW4gaW5zdGFuY2Ugb2YgY3VzdG9tIGVsZW1lbnRzJyk7CisKK3Rlc3Rfd2l0aF93aW5kb3coKGNv
bnRlbnRXaW5kb3csIGNvbnRlbnREb2N1bWVudCkgPT4geworICAgIGNsYXNzIE15Q3VzdG9tRWxl
bWVudCBleHRlbmRzIGNvbnRlbnRXaW5kb3cuSFRNTEVsZW1lbnQge307CisgICAgY29udGVudFdp
bmRvdy5jdXN0b21FbGVtZW50cy5kZWZpbmUoJ2VsZW1lbnQtd2l0aC1wcmVmaXgnLCBNeUN1c3Rv
bUVsZW1lbnQpOworCisgICAgY29uc3QgaW5zdGFuY2UgPSBjb250ZW50RG9jdW1lbnQuY3JlYXRl
RWxlbWVudE5TKHhodG1sTmFtZXNwYWNlVVJJLCAnZm9vOmVsZW1lbnQtd2l0aC1wcmVmaXgnKTsK
KyAgICBhc3NlcnRfdHJ1ZShpbnN0YW5jZSBpbnN0YW5jZW9mIE15Q3VzdG9tRWxlbWVudCk7Cisg
ICAgYXNzZXJ0X2VxdWFscyhpbnN0YW5jZS5sb2NhbE5hbWUsICdlbGVtZW50LXdpdGgtcHJlZml4
Jyk7CisgICAgYXNzZXJ0X2VxdWFscyhpbnN0YW5jZS5uYW1lc3BhY2VVUkksIHhodG1sTmFtZXNw
YWNlVVJJKTsKKyAgICBhc3NlcnRfZXF1YWxzKGluc3RhbmNlLnByZWZpeCwgJ2ZvbycpOworfSwg
J2RvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyBtdXN0IHNldCB0aGUgcHJlZml4IGFmdGVyIGNvbnN0
cnVjdGluZyBhIGN1c3RvbSBlbGVtZW50Jyk7CisKK3Rlc3Rfd2l0aF93aW5kb3coKGNvbnRlbnRX
aW5kb3csIGNvbnRlbnREb2N1bWVudCkgPT4geworICAgIGxldCBpbm5lckVsZW1lbnQ7CisgICAg
bGV0IGlubmVyRWxlbWVudFByZWZpeDsKKyAgICBsZXQgb3V0ZXJFbGVtZW50OworICAgIGxldCBv
dXRlckVsZW1lbnRQcmVmaXg7CisgICAgY2xhc3MgTXlDdXN0b21FbGVtZW50IGV4dGVuZHMgY29u
dGVudFdpbmRvdy5IVE1MRWxlbWVudCB7CisgICAgICAgIGNvbnN0cnVjdG9yKGlzSW5uZXJDYWxs
KSB7CisgICAgICAgICAgICBpZiAoaXNJbm5lckNhbGwpIHsKKyAgICAgICAgICAgICAgICBpbm5l
ckVsZW1lbnQgPSBzdXBlcigpOworICAgICAgICAgICAgICAgIGlubmVyRWxlbWVudFByZWZpeCA9
IGlubmVyRWxlbWVudC5wcmVmaXg7CisgICAgICAgICAgICAgICAgcmV0dXJuIGlubmVyRWxlbWVu
dDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG91dGVyRWxlbWVudCA9IHN1cGVyKCk7Cisg
ICAgICAgICAgICBvdXRlckVsZW1lbnRQcmVmaXggPSBvdXRlckVsZW1lbnQucHJlZml4OworICAg
ICAgICAgICAgcmV0dXJuIG5ldyBNeUN1c3RvbUVsZW1lbnQodHJ1ZSk7CisgICAgICAgIH0KKyAg
ICB9CisgICAgY29udGVudFdpbmRvdy5jdXN0b21FbGVtZW50cy5kZWZpbmUoJ2N1c3RvbS1lbGVt
ZW50JywgTXlDdXN0b21FbGVtZW50KTsKKworICAgIGNvbnN0IGluc3RhbmNlID0gY29udGVudERv
Y3VtZW50LmNyZWF0ZUVsZW1lbnROUyh4aHRtbE5hbWVzcGFjZVVSSSwgJ2ZvbzpjdXN0b20tZWxl
bWVudCcpOworICAgIGFzc2VydF90cnVlKGluc3RhbmNlIGluc3RhbmNlb2YgTXlDdXN0b21FbGVt
ZW50KTsKKyAgICBhc3NlcnRfZXF1YWxzKGluc3RhbmNlLmxvY2FsTmFtZSwgJ2N1c3RvbS1lbGVt
ZW50Jyk7CisgICAgYXNzZXJ0X2VxdWFscyhpbnN0YW5jZS5uYW1lc3BhY2VVUkksIHhodG1sTmFt
ZXNwYWNlVVJJKTsKKyAgICBhc3NlcnRfZXF1YWxzKGluc3RhbmNlLnByZWZpeCwgJ2ZvbycpOwor
ICAgIGFzc2VydF9lcXVhbHMoaW5zdGFuY2UsIGlubmVyRWxlbWVudCwgJ2RvY3VtZW50LmNyZWF0
ZUVsZW1lbnROUyBtdXN0IGNyZWF0ZSBhbiBlbGVtZW50IHdpdGggdGhlIHN5bmNocm9ub3VzIGN1
c3RvbSBlbGVtZW50cyBmbGFnIHNldCcpOworICAgIGFzc2VydF9lcXVhbHMoaW5uZXJFbGVtZW50
UHJlZml4LCBudWxsLCAnSFRNTCBjb25zdHJ1Y3RvciBtdXN0IG5vdCBzZXQgcHJlZml4Jyk7Cisg
ICAgYXNzZXJ0X2VxdWFscyhvdXRlckVsZW1lbnRQcmVmaXgsIG51bGwsICdIVE1MIGNvbnN0cnVj
dG9yIG11c3Qgbm90IHNldCBwcmVmaXgnKTsKK30sICdkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMg
bXVzdCB1c2UgdGhlIGVsZW1lbnQgcmV0dXJuZWQgYnkgdGhlIGNvbnN0cnVjdG9yJyk7CisKKzwv
c2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>294768</attachid>
            <date>2016-11-14 15:54:23 -0800</date>
            <delta_ts>2016-11-14 16:30:10 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-164700-20161114155009.patch</filename>
            <type>text/plain</type>
            <size>20654</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA4NjY3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWU0ZTc0OWM2NWM4NTkz
NDQ5MTg3YzBlMmU5NTczZmE4YjlkOWQ4My4uMWQ0YTM5ZTE5ZjA0NDFiZjRlMGI1MmFjZjY5ZWI3
NTkwMDUzOTI5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ2IEBACisyMDE2LTExLTEzICBSeW9z
dWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnROUyBkb2Vzbid0IGNvbnN0cnVjdCBhIGN1c3RvbSBlbGVtZW50CisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjQ3MDAKKworICAgICAgICBSZXZp
ZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICBGaXhlZCB0aGUgYnVnIHRoYXQgZG9jdW1l
bnQuY3JlYXRlRWxlbWVudE5TIGRvZXNuJ3QgY3JlYXRlIGEgY3VzdG9tIGVsZW1lbnQgb3IgZW5x
dWV1ZSBpdCB0byB1cGdyYWRlLgorCisgICAgICAgIEFsc28gbWFkZSBjb25zdHJ1Y3RDdXN0b21F
bGVtZW50U3luY2hyb25vdXNseSBub3QgY2FsbCB0aGUgY3VzdG9tIGVsZW1lbnQgY29uc3RydWN0
b3JzIHdpdGggdGhlIGVsZW1lbnQncworICAgICAgICBsb2NhbCBuYW1lIGFzIHRoZSBmaXJzdCBh
cmd1bWVudCwgd2hpY2ggd2FzIGEgbm9uLXN0YW5kYXJkIGJlaGF2aW9yIGFkZGVkIGR1cmluZyBw
cm90b3R5cGluZy4KKworICAgICAgICBUZXN0OiBmYXN0L2N1c3RvbS1lbGVtZW50cy9ET01JbXBs
ZW1lbnRhdGlvbi1jcmVhdGVEb2N1bWVudC5odG1sCisgICAgICAgICAgICAgIGZhc3QvY3VzdG9t
LWVsZW1lbnRzL2RvY3VtZW50LWNyZWF0ZUVsZW1lbnROUy5odG1sCisKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9KU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SlNDdXN0b21FbGVtZW50SW50ZXJmYWNlOjpjb25zdHJ1Y3RFbGVtZW50V2l0aEZhbGxiYWNrKTog
QWRkZWQgYSB2YXJpYW50IHRoYXQgdGFrZXMgUXVhbGlmaWVkTmFtZQorICAgICAgICBpbnN0ZWFk
IG9mIEF0b21pY1N0cmluZy4KKyAgICAgICAgKFdlYkNvcmU6OmNvbnN0cnVjdEN1c3RvbUVsZW1l
bnRTeW5jaHJvbm91c2x5KTogRG9uJ3QgYWRkIHRoZSBsb2NhbCBuYW1lIGFzIGFuIGFyZ3VtZW50
LgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQ3VzdG9tRWxlbWVudEludGVyZmFjZS5oOgorCisg
ICAgICAgICogZG9tL0N1c3RvbUVsZW1lbnRSZWdpc3RyeS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDdXN0b21FbGVtZW50UmVnaXN0cnk6OmZpbmRJbnRlcmZhY2UpOiBKdXN0IGZpbmQgdGhlIGlu
dGVyZmFjZSBiYXNlZCBvbiB0aGUgbG9jYWwgbmFtZSBhZnRlcgorICAgICAgICBjaGVja2luZyB0
aGUgbmFtZXNwYWNlIFVSSSB0byBiZSB0aGF0IG9mIHRoZSBYSFRNTC4gV2UgbmVlZCB0byBpZ25v
cmUgdGhlIHByZWZpeCBmb3IgdGhlIHB1cnBvc2Ugb2YgbG9va2luZworICAgICAgICB1cCB0aGUg
Y3VzdG9tIGVsZW1lbnQgZGVmaW5pdGlvbiBhcyBzcGVjaWZpZWQgaW4gdGhlIGxhdGVzdCBIVE1M
IHNwZWNpZmljYXRpb246CisgICAgICAgIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVs
dGlwYWdlL3NjcmlwdGluZy5odG1sI2xvb2stdXAtYS1jdXN0b20tZWxlbWVudC1kZWZpbml0aW9u
CisKKyAgICAgICAgKiBkb20vRE9NSW1wbGVtZW50YXRpb24uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RE9NSW1wbGVtZW50YXRpb246OmNyZWF0ZURvY3VtZW50KTogQWRkZWQgYW4gYXNzZXJ0aW9u
IHRvIG1ha2Ugc3VyZSB3ZSBkb24ndCBpbnZva2Ugc2NyaXB0cyB3aGlsZQorICAgICAgICBjb25z
dHJ1Y3RpbmcgdGhlIGRvY3VtZW50IGVsZW1lbnQuCisKKyAgICAgICAgKiBkb20vRG9jdW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlVXBncmFkZUNhbmRpZGF0ZUVsZW1lbnQpOiBN
YWRlIHRoaXMgZnVuY3Rpb24gY3JlYXRlIGEgSFRNTFVua25vd25FbGVtZW50IGluc3RlYWQgb2Yg
cmV0dXJuaW5nCisgICAgICAgIG51bGxwdHIgdG8gc2hhcmUgbW9yZSBjb2RlLiBBbHNvIGFkZGVk
IGEgdmFyaWFudCB3aGljaCB0YWtlcyBRdWFsaWZpZWROYW1lLgorICAgICAgICAoV2ViQ29yZTo6
aXNWYWxpZEhUTUxFbGVtZW50TmFtZSk6IEFkZGVkOyBoZWxwZXJzIGZvciBjcmVhdGVIVE1MRWxl
bWVudFdpdGhOYW1lVmFsaWRhdGlvbiB0byBjYWxsIGlzVmFsaWROYW1lCisgICAgICAgIG9uIERv
Y3VtZW50IHdpdGggdGhlIHJpZ2h0IGFyZ3VtZW50LgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRl
SFRNTEVsZW1lbnRXaXRoTmFtZVZhbGlkYXRpb24pOiBUZW1wbGF0aXplZCB0aGUgZnVuY3Rpb24g
dG8gYmUgY2FsbGVkIHdpdGggZWl0aGVyIEF0b21pY1N0cmluZworICAgICAgICBvciBRdWFsaWZp
ZWROYW1lIGZvciB0aGUgbmFtZS4KKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUZhbGxiYWNrSFRN
TEVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmNyZWF0ZUVsZW1lbnROUyk6
IENhbGwgY3JlYXRlSFRNTEVsZW1lbnRXaXRoTmFtZVZhbGlkYXRpb24gdG8gY3JlYXRlIGEgY3Vz
dG9tIGVsZW1lbnQgaWYKKyAgICAgICAgcG9zc2libGUuIFRoaXMgZnVuY3Rpb24gZW5kcyB1cCBy
ZS12YWxpZGF0aW5nIHRoZSBlbGVtZW50IG5hbWUgYmVmb3JlIGNyZWF0aW5nIGEgSFRNTFVua25v
d25FbGVtZW50IGJ1dCB0aGF0CisgICAgICAgIHNob3VsZG4ndCBiZSBhIGNvbW1vbiBzY2VuYXJp
byB0byBtYXR0ZXIuIEluIGZhY3QsIGNyZWF0ZUVsZW1lbnROUyBpcyBhIHJhcmVseSB1c2VkIEFQ
SS4KKwogMjAxNi0xMS0xMiAgRGFuIEJlcm5zdGVpbiAgPG1pdHpAYXBwbGUuY29tPgogCiAgICAg
ICAgIFRyaWVkIHRvIGZpeCB0aGUgaU9TIGJ1aWxkIGFmdGVyIHIyMDg2NjYuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2UuY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21FbGVtZW50SW50ZXJmYWNlLmNw
cAppbmRleCAzYzRhZmQ4ODg1YzY3ODhkYWRhN2MyNTY4N2MzODE2Yzk0N2UyZGRkLi42NTBlODRi
OGFhMjM2NTc4NDM5NWZhODI4ZjU2YjYwZmMwNDNiMGFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tRWxlbWVudEludGVyZmFjZS5jcHAKQEAgLTY3
LDcgKzY3LDIyIEBAIFJlZjxFbGVtZW50PiBKU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2U6OmNvbnN0
cnVjdEVsZW1lbnRXaXRoRmFsbGJhY2soRG9jdW1lbnQmIGRvCiAgICAgZWxlbWVudC0+c2V0SXND
dXN0b21FbGVtZW50VXBncmFkZUNhbmRpZGF0ZSgpOwogICAgIGVsZW1lbnQtPnNldElzRmFpbGVk
Q3VzdG9tRWxlbWVudCgqdGhpcyk7CiAKLSAgICByZXR1cm4gZWxlbWVudC5nZXQoKTsKKyAgICBy
ZXR1cm4gV1RGTW92ZShlbGVtZW50KTsKK30KKworUmVmPEVsZW1lbnQ+IEpTQ3VzdG9tRWxlbWVu
dEludGVyZmFjZTo6Y29uc3RydWN0RWxlbWVudFdpdGhGYWxsYmFjayhEb2N1bWVudCYgZG9jdW1l
bnQsIGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUpCit7CisgICAgaWYgKGF1dG8gZWxlbWVudCA9
IHRyeVRvQ29uc3RydWN0Q3VzdG9tRWxlbWVudChkb2N1bWVudCwgbmFtZS5sb2NhbE5hbWUoKSkp
IHsKKyAgICAgICAgaWYgKG5hbWUucHJlZml4KCkgIT0gbnVsbEF0b20pCisgICAgICAgICAgICBl
bGVtZW50LT5zZXRQcmVmaXgobmFtZS5wcmVmaXgoKSk7CisgICAgICAgIHJldHVybiBlbGVtZW50
LnJlbGVhc2VOb25OdWxsKCk7CisgICAgfQorCisgICAgYXV0byBlbGVtZW50ID0gSFRNTFVua25v
d25FbGVtZW50OjpjcmVhdGUobmFtZSwgZG9jdW1lbnQpOworICAgIGVsZW1lbnQtPnNldElzQ3Vz
dG9tRWxlbWVudFVwZ3JhZGVDYW5kaWRhdGUoKTsKKyAgICBlbGVtZW50LT5zZXRJc0ZhaWxlZEN1
c3RvbUVsZW1lbnQoKnRoaXMpOworCisgICAgcmV0dXJuIFdURk1vdmUoZWxlbWVudCk7CiB9CiAK
IFJlZlB0cjxFbGVtZW50PiBKU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2U6OnRyeVRvQ29uc3RydWN0
Q3VzdG9tRWxlbWVudChEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IEF0b21pY1N0cmluZyYgbG9j
YWxOYW1lKQpAQCAtMTEwLDEwICsxMjUsOCBAQCBzdGF0aWMgUmVmUHRyPEVsZW1lbnQ+IGNvbnN0
cnVjdEN1c3RvbUVsZW1lbnRTeW5jaHJvbm91c2x5KERvY3VtZW50JiBkb2N1bWVudCwgVgogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKLSAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBh
cmdzOwotICAgIGFyZ3MuYXBwZW5kKGpzU3RyaW5nV2l0aENhY2hlKCZzdGF0ZSwgbG9jYWxOYW1l
KSk7Ci0KICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgY29va2llID0gSlNNYWlu
VGhyZWFkRXhlY1N0YXRlOjppbnN0cnVtZW50RnVuY3Rpb25Db25zdHJ1Y3QoJmRvY3VtZW50LCBj
b25zdHJ1Y3RUeXBlLCBjb25zdHJ1Y3REYXRhKTsKKyAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBh
cmdzOwogICAgIEpTVmFsdWUgbmV3RWxlbWVudCA9IGNvbnN0cnVjdCgmc3RhdGUsIGNvbnN0cnVj
dG9yLCBjb25zdHJ1Y3RUeXBlLCBjb25zdHJ1Y3REYXRhLCBhcmdzKTsKICAgICBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OmRpZENhbGxGdW5jdGlvbihjb29raWUsICZkb2N1bWVudCk7CiAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgbnVsbHB0cik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2UuaCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tRWxlbWVudEludGVyZmFjZS5oCmluZGV4IGZkMzY4
NDlhNWUyZTUxNGUyMDA4NGZmN2JiOTc4ZTY4MjJkZjAxNjIuLjhhM2Y2NTZlZTcwN2NkZWI0NTU1
Zjk1ZjU4YTJjOTcxYzUyMzk5NDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTQ3VzdG9tRWxlbWVudEludGVyZmFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTQ3VzdG9tRWxlbWVudEludGVyZmFjZS5oCkBAIC01OSw2ICs1OSw3IEBAIHB1Ymxp
YzoKICAgICB9CiAKICAgICBSZWY8RWxlbWVudD4gY29uc3RydWN0RWxlbWVudFdpdGhGYWxsYmFj
ayhEb2N1bWVudCYsIGNvbnN0IEF0b21pY1N0cmluZyYpOworICAgIFJlZjxFbGVtZW50PiBjb25z
dHJ1Y3RFbGVtZW50V2l0aEZhbGxiYWNrKERvY3VtZW50JiwgY29uc3QgUXVhbGlmaWVkTmFtZSYp
OwogCiAgICAgdm9pZCB1cGdyYWRlRWxlbWVudChFbGVtZW50Jik7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9DdXN0b21FbGVtZW50UmVnaXN0cnkuY3BwIGIvU291cmNlL1dlYkNv
cmUvZG9tL0N1c3RvbUVsZW1lbnRSZWdpc3RyeS5jcHAKaW5kZXggZmI1NjY2MDgzYjdkZTg0MDVi
ZGRjNTJhNzIyYjMzMzYxZjZmY2NmMi4uZDRmNGQwOWY3OTU1NWI3YTMwNzNlYzAzYzA3YWNjYzll
MGNmOTJhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0N1c3RvbUVsZW1lbnRSZWdp
c3RyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0N1c3RvbUVsZW1lbnRSZWdpc3RyeS5j
cHAKQEAgLTg3LDExICs4Nyw5IEBAIEpTQ3VzdG9tRWxlbWVudEludGVyZmFjZSogQ3VzdG9tRWxl
bWVudFJlZ2lzdHJ5OjpmaW5kSW50ZXJmYWNlKGNvbnN0IEVsZW1lbnQmIGVsCiAKIEpTQ3VzdG9t
RWxlbWVudEludGVyZmFjZSogQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5OjpmaW5kSW50ZXJmYWNlKGNv
bnN0IFF1YWxpZmllZE5hbWUmIG5hbWUpIGNvbnN0CiB7Ci0gICAgQVNTRVJUKCFuYW1lLmhhc1By
ZWZpeCgpKTsKICAgICBpZiAobmFtZS5uYW1lc3BhY2VVUkkoKSAhPSBIVE1MTmFtZXM6OnhodG1s
TmFtZXNwYWNlVVJJKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBhdXRvIGl0ID0gbV9u
YW1lTWFwLmZpbmQobmFtZS5sb2NhbE5hbWUoKSk7Ci0gICAgcmV0dXJuIGl0ID09IG1fbmFtZU1h
cC5lbmQoKSB8fCBpdC0+dmFsdWUtPm5hbWUoKSAhPSBuYW1lID8gbnVsbHB0ciA6IGNvbnN0X2Nh
c3Q8SlNDdXN0b21FbGVtZW50SW50ZXJmYWNlKj4oaXQtPnZhbHVlLnB0cigpKTsKKyAgICByZXR1
cm4gbV9uYW1lTWFwLmdldChuYW1lLmxvY2FsTmFtZSgpKTsKIH0KIAogSlNDdXN0b21FbGVtZW50
SW50ZXJmYWNlKiBDdXN0b21FbGVtZW50UmVnaXN0cnk6OmZpbmRJbnRlcmZhY2UoY29uc3QgQXRv
bWljU3RyaW5nJiBuYW1lKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RP
TUltcGxlbWVudGF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9ET01JbXBsZW1lbnRhdGlv
bi5jcHAKaW5kZXggZGVhYTkyYmExZGYxZWEzODRiYzJkMDQ4NzAyMWM3MDQyNWIxYTBjNy4uMzcx
YjE3MDljY2Y3MTM3YzFjMDNjM2JkYjM4YzFiN2RlNGM2MThlZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL0RPTUltcGxlbWVudGF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRE9NSW1wbGVtZW50YXRpb24uY3BwCkBAIC0xMTUsNiArMTE1LDcgQEAgRXhjZXB0aW9uT3I8
UmVmPFhNTERvY3VtZW50Pj4gRE9NSW1wbGVtZW50YXRpb246OmNyZWF0ZURvY3VtZW50KGNvbnN0
IFN0cmluZyYgbmEKIAogICAgIFJlZlB0cjxFbGVtZW50PiBkb2N1bWVudEVsZW1lbnQ7CiAgICAg
aWYgKCFxdWFsaWZpZWROYW1lLmlzRW1wdHkoKSkgeworICAgICAgICBBU1NFUlQoIWRvY3VtZW50
LT5kb21XaW5kb3coKSk7IC8vIElmIGRvbVdpbmRvdyBpcyBub3QgbnVsbCwgY3JlYXRlRWxlbWVu
dE5TIGNvdWxkIGZpbmQgQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5IGFuZCBhcmJpdHJhcnkgc2NyaXB0
cy4KICAgICAgICAgYXV0byByZXN1bHQgPSBkb2N1bWVudC0+Y3JlYXRlRWxlbWVudE5TKG5hbWVz
cGFjZVVSSSwgcXVhbGlmaWVkTmFtZSk7CiAgICAgICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9u
KCkpCiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuY3BwCmluZGV4IDkwODFmODcyNTdkOTM0ZjZjZDU0YTIwNTVlN2ZiMjNmMWU4
NTFkOGIuLjJkODIxZDUzYjc5ZDMwY2QwZTJiMWZmMTkyOTY0MTJhNmVjZGI5NmMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmNwcApAQCAtODYxLDQyICs4NjEsNTEgQEAgdm9pZCBEb2N1bWVudDo6Y2hp
bGRyZW5DaGFuZ2VkKGNvbnN0IENoaWxkQ2hhbmdlJiBjaGFuZ2UpCiAgICAgc3R5bGVTY29wZSgp
LmNsZWFyUmVzb2x2ZXIoKTsKIH0KIAotc3RhdGljIEFMV0FZU19JTkxJTkUgUmVmUHRyPEhUTUxF
bGVtZW50PiBjcmVhdGVVcGdyYWRlQ2FuZGlkYXRlRWxlbWVudChEb2N1bWVudCYgZG9jdW1lbnQs
IGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUpCitzdGF0aWMgQUxXQVlTX0lOTElORSBSZWY8SFRN
TEVsZW1lbnQ+IGNyZWF0ZVVwZ3JhZGVDYW5kaWRhdGVFbGVtZW50KERvY3VtZW50JiBkb2N1bWVu
dCwgY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSkKIHsKLSAgICBpZiAoIVJ1bnRpbWVFbmFibGVk
RmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuY3VzdG9tRWxlbWVudHNFbmFibGVkKCkpCi0gICAg
ICAgIHJldHVybiBudWxscHRyOwotCi0gICAgaWYgKERvY3VtZW50Ojp2YWxpZGF0ZUN1c3RvbUVs
ZW1lbnROYW1lKG5hbWUubG9jYWxOYW1lKCkpICE9IEN1c3RvbUVsZW1lbnROYW1lVmFsaWRhdGlv
blN0YXR1czo6VmFsaWQpCi0gICAgICAgIHJldHVybiBudWxscHRyOworICAgIGlmICghUnVudGlt
ZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5jdXN0b21FbGVtZW50c0VuYWJsZWQo
KQorICAgICAgICB8fCBEb2N1bWVudDo6dmFsaWRhdGVDdXN0b21FbGVtZW50TmFtZShuYW1lLmxv
Y2FsTmFtZSgpKSAhPSBDdXN0b21FbGVtZW50TmFtZVZhbGlkYXRpb25TdGF0dXM6OlZhbGlkKQor
ICAgICAgICByZXR1cm4gSFRNTFVua25vd25FbGVtZW50OjpjcmVhdGUobmFtZSwgZG9jdW1lbnQp
OwogCiAgICAgYXV0byBlbGVtZW50ID0gSFRNTEVsZW1lbnQ6OmNyZWF0ZShuYW1lLCBkb2N1bWVu
dCk7CiAgICAgZWxlbWVudC0+c2V0SXNDdXN0b21FbGVtZW50VXBncmFkZUNhbmRpZGF0ZSgpOwot
ICAgIHJldHVybiBXVEZNb3ZlKGVsZW1lbnQpOworICAgIHJldHVybiBlbGVtZW50OworfQorCitz
dGF0aWMgQUxXQVlTX0lOTElORSBSZWY8SFRNTEVsZW1lbnQ+IGNyZWF0ZVVwZ3JhZGVDYW5kaWRh
dGVFbGVtZW50KERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbE5h
bWUpCit7CisgICAgcmV0dXJuIGNyZWF0ZVVwZ3JhZGVDYW5kaWRhdGVFbGVtZW50KGRvY3VtZW50
LCBRdWFsaWZpZWROYW1lIHsgbnVsbEF0b20sIGxvY2FsTmFtZSwgeGh0bWxOYW1lc3BhY2VVUkkg
fSk7Cit9CisKK3N0YXRpYyBpbmxpbmUgYm9vbCBpc1ZhbGlkSFRNTEVsZW1lbnROYW1lKGNvbnN0
IEF0b21pY1N0cmluZyYgbG9jYWxOYW1lKQoreworICAgIHJldHVybiBEb2N1bWVudDo6aXNWYWxp
ZE5hbWUobG9jYWxOYW1lKTsKIH0KIAotc3RhdGljIEV4Y2VwdGlvbk9yPFJlZjxFbGVtZW50Pj4g
Y3JlYXRlSFRNTEVsZW1lbnRXaXRoTmFtZVZhbGlkYXRpb24oRG9jdW1lbnQmIGRvY3VtZW50LCBj
b25zdCBBdG9taWNTdHJpbmcmIGxvY2FsTmFtZSkKK3N0YXRpYyBpbmxpbmUgYm9vbCBpc1ZhbGlk
SFRNTEVsZW1lbnROYW1lKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUpCiB7Ci0gICAgYXV0byBl
bGVtZW50ID0gSFRNTEVsZW1lbnRGYWN0b3J5OjpjcmVhdGVLbm93bkVsZW1lbnQobG9jYWxOYW1l
LCBkb2N1bWVudCk7CisgICAgcmV0dXJuIERvY3VtZW50Ojppc1ZhbGlkTmFtZShuYW1lLmxvY2Fs
TmFtZSgpKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgTmFtZVR5cGU+CitzdGF0aWMgRXhjZXB0
aW9uT3I8UmVmPEVsZW1lbnQ+PiBjcmVhdGVIVE1MRWxlbWVudFdpdGhOYW1lVmFsaWRhdGlvbihE
b2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IE5hbWVUeXBlJiBuYW1lKQoreworICAgIGF1dG8gZWxl
bWVudCA9IEhUTUxFbGVtZW50RmFjdG9yeTo6Y3JlYXRlS25vd25FbGVtZW50KG5hbWUsIGRvY3Vt
ZW50KTsKICAgICBpZiAoTElLRUxZKGVsZW1lbnQpKQogICAgICAgICByZXR1cm4gUmVmPEVsZW1l
bnQ+IHsgZWxlbWVudC5yZWxlYXNlTm9uTnVsbCgpIH07CiAKICAgICBpZiAoYXV0byogd2luZG93
ID0gZG9jdW1lbnQuZG9tV2luZG93KCkpIHsKICAgICAgICAgYXV0byogcmVnaXN0cnkgPSB3aW5k
b3ctPmN1c3RvbUVsZW1lbnRSZWdpc3RyeSgpOwogICAgICAgICBpZiAoVU5MSUtFTFkocmVnaXN0
cnkpKSB7Ci0gICAgICAgICAgICBpZiAoYXV0byogZWxlbWVudEludGVyZmFjZSA9IHJlZ2lzdHJ5
LT5maW5kSW50ZXJmYWNlKGxvY2FsTmFtZSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGVsZW1l
bnRJbnRlcmZhY2UtPmNvbnN0cnVjdEVsZW1lbnRXaXRoRmFsbGJhY2soZG9jdW1lbnQsIGxvY2Fs
TmFtZSk7CisgICAgICAgICAgICBpZiAoYXV0byogZWxlbWVudEludGVyZmFjZSA9IHJlZ2lzdHJ5
LT5maW5kSW50ZXJmYWNlKG5hbWUpKQorICAgICAgICAgICAgICAgIHJldHVybiBlbGVtZW50SW50
ZXJmYWNlLT5jb25zdHJ1Y3RFbGVtZW50V2l0aEZhbGxiYWNrKGRvY3VtZW50LCBuYW1lKTsKICAg
ICAgICAgfQogICAgIH0KIAotICAgIGlmIChVTkxJS0VMWSghRG9jdW1lbnQ6OmlzVmFsaWROYW1l
KGxvY2FsTmFtZSkpKQorICAgIGlmIChVTkxJS0VMWSghaXNWYWxpZEhUTUxFbGVtZW50TmFtZShu
YW1lKSkpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJTlZBTElEX0NIQVJBQ1RFUl9FUlIg
fTsKIAotICAgIFF1YWxpZmllZE5hbWUgcXVhbGlmaWVkTmFtZSB7IG51bGxBdG9tLCBsb2NhbE5h
bWUsIHhodG1sTmFtZXNwYWNlVVJJIH07Ci0KLSAgICBpZiAoYXV0byBlbGVtZW50ID0gY3JlYXRl
VXBncmFkZUNhbmRpZGF0ZUVsZW1lbnQoZG9jdW1lbnQsIHF1YWxpZmllZE5hbWUpKQotICAgICAg
ICByZXR1cm4gUmVmPEVsZW1lbnQ+IHsgZWxlbWVudC5yZWxlYXNlTm9uTnVsbCgpIH07Ci0KLSAg
ICByZXR1cm4gUmVmPEVsZW1lbnQ+IHsgSFRNTFVua25vd25FbGVtZW50OjpjcmVhdGUocXVhbGlm
aWVkTmFtZSwgZG9jdW1lbnQpIH07CisgICAgcmV0dXJuIFJlZjxFbGVtZW50PiB7IGNyZWF0ZVVw
Z3JhZGVDYW5kaWRhdGVFbGVtZW50KGRvY3VtZW50LCBuYW1lKSB9OwogfQogCiBFeGNlcHRpb25P
cjxSZWY8RWxlbWVudD4+IERvY3VtZW50OjpjcmVhdGVFbGVtZW50Rm9yQmluZGluZ3MoY29uc3Qg
QXRvbWljU3RyaW5nJiBuYW1lKQpAQCAtMTA1NSw5ICsxMDY0LDcgQEAgc3RhdGljIFJlZjxIVE1M
RWxlbWVudD4gY3JlYXRlRmFsbGJhY2tIVE1MRWxlbWVudChEb2N1bWVudCYgZG9jdW1lbnQsIGNv
bnN0IFF1YWwKICAgICAgICAgfQogICAgIH0KICAgICAvLyBGSVhNRTogU2hvdWxkIHdlIGFsc28g
Y2hlY2sgdGhlIGVxdWFsaXR5IG9mIHByZWZpeCBiZXR3ZWVuIHRoZSBjdXN0b20gZWxlbWVudCBh
bmQgbmFtZT8KLSAgICBpZiAoYXV0byBlbGVtZW50ID0gY3JlYXRlVXBncmFkZUNhbmRpZGF0ZUVs
ZW1lbnQoZG9jdW1lbnQsIG5hbWUpKQotICAgICAgICByZXR1cm4gZWxlbWVudC5yZWxlYXNlTm9u
TnVsbCgpOwotICAgIHJldHVybiBIVE1MVW5rbm93bkVsZW1lbnQ6OmNyZWF0ZShuYW1lLCBkb2N1
bWVudCk7CisgICAgcmV0dXJuIGNyZWF0ZVVwZ3JhZGVDYW5kaWRhdGVFbGVtZW50KGRvY3VtZW50
LCBuYW1lKTsKIH0KIAogLy8gRklYTUU6IFRoaXMgc2hvdWxkIHJlYWxseSBiZSBpbiBhIHBvc3Np
YmxlIEVsZW1lbnRGYWN0b3J5IGNsYXNzLgpAQCAtMTE1OSw2ICsxMTY2LDEwIEBAIEV4Y2VwdGlv
bk9yPFJlZjxFbGVtZW50Pj4gRG9jdW1lbnQ6OmNyZWF0ZUVsZW1lbnROUyhjb25zdCBBdG9taWNT
dHJpbmcmIG5hbWVzcGFjCiAgICAgUXVhbGlmaWVkTmFtZSBwYXJzZWROYW1lIHsgcGFyc2VSZXN1
bHQucmVsZWFzZVJldHVyblZhbHVlKCkgfTsKICAgICBpZiAoIWhhc1ZhbGlkTmFtZXNwYWNlRm9y
RWxlbWVudHMocGFyc2VkTmFtZSkpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBOQU1FU1BB
Q0VfRVJSIH07CisKKyAgICBpZiAocGFyc2VkTmFtZS5uYW1lc3BhY2VVUkkoKSA9PSB4aHRtbE5h
bWVzcGFjZVVSSSkKKyAgICAgICAgcmV0dXJuIGNyZWF0ZUhUTUxFbGVtZW50V2l0aE5hbWVWYWxp
ZGF0aW9uKCp0aGlzLCBwYXJzZWROYW1lKTsKKwogICAgIHJldHVybiBjcmVhdGVFbGVtZW50KHBh
cnNlZE5hbWUsIGZhbHNlKTsKIH0KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
IGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGM2MmI2YmY4ZDEzYjBhOTBlMDJmZDRkZWZj
YTYxNTRlNjEzMWZkNWUuLmQ2ZGE1NDUzYWU2YTQ2YjQ2MzQ3ZmQwYzE2NjIzMDAzYzdiMjMwYWIg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxNi0xMS0xMyAgUnlvc3VrZSBOaXdhICA8cm5pd2FA
d2Via2l0Lm9yZz4KKworICAgICAgICBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMgZG9lc24ndCBj
b25zdHJ1Y3QgYSBjdXN0b20gZWxlbWVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTY0NzAwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRs
ZXIuCisKKyAgICAgICAgQWRkZWQgVzNDIHN0eWxlIHRlc3RoYXJuZXNzLmpzIHRlc3RzIGZvciBj
cmVhdGVFbGVtZW50TlMgYW5kIERPTUltcGxlbWVudGF0aW9uJ3MgY3JlYXRlRG9jdW1lbnQuCisK
KyAgICAgICAgKiBmYXN0L2N1c3RvbS1lbGVtZW50cy9ET01JbXBsZW1lbnRhdGlvbi1jcmVhdGVE
b2N1bWVudC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY3VzdG9tLWVsZW1l
bnRzL0RPTUltcGxlbWVudGF0aW9uLWNyZWF0ZURvY3VtZW50Lmh0bWw6IEFkZGVkLgorICAgICAg
ICAqIGZhc3QvY3VzdG9tLWVsZW1lbnRzL2RvY3VtZW50LWNyZWF0ZUVsZW1lbnROUy1leHBlY3Rl
ZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY3VzdG9tLWVsZW1lbnRzL2RvY3VtZW50LWNy
ZWF0ZUVsZW1lbnROUy5odG1sOiBBZGRlZC4KKwogMjAxNi0xMS0xMiAgU2ltb24gRnJhc2VyICA8
c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgYSB3YXkgdG8gZ2V0IHRoZSBV
SS1zaWRlIHNjcm9sbGluZyB0cmVlIGFzIHRleHQgdmlhIFVJU2NyaXB0Q29udHJvbGxlcgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jdXN0b20tZWxlbWVudHMvRE9NSW1wbGVtZW50YXRp
b24tY3JlYXRlRG9jdW1lbnQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9jdXN0b20t
ZWxlbWVudHMvRE9NSW1wbGVtZW50YXRpb24tY3JlYXRlRG9jdW1lbnQtZXhwZWN0ZWQudHh0Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmM1NDA1ZGI5Y2FlNzIwMmU0NzY3ZWU4ZmZmYTA0MTk1ODIwMGUzYzMKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2N1c3RvbS1lbGVtZW50cy9ET01JbXBsZW1l
bnRhdGlvbi1jcmVhdGVEb2N1bWVudC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzIEBACisKK1BB
U1MgZG9jdW1lbnQuY3JlYXRlRWxlbWVudCBpbnZva2UgYSBjdXN0b20gZWxlbWVudCBjb25zdHJ1
Y3RvciB3aXRoIG5vIGFyZ3VtZW50cyAKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9j
dXN0b20tZWxlbWVudHMvRE9NSW1wbGVtZW50YXRpb24tY3JlYXRlRG9jdW1lbnQuaHRtbCBiL0xh
eW91dFRlc3RzL2Zhc3QvY3VzdG9tLWVsZW1lbnRzL0RPTUltcGxlbWVudGF0aW9uLWNyZWF0ZURv
Y3VtZW50Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjZlNGUzMGRlYjk3YTE4ZTNjNzk2MDViOWE1MWYyMGUx
ODNhM2RhYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY3VzdG9tLWVsZW1l
bnRzL0RPTUltcGxlbWVudGF0aW9uLWNyZWF0ZURvY3VtZW50Lmh0bWwKQEAgLTAsMCArMSw0MSBA
QAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHRpdGxlPkN1c3RvbSBFbGVtZW50
czogZG9jdW1lbnQuaW1wbGVtZW50YXRpb24uY3JlYXRlRWxlbWVudCBtdXN0IG5vdCBpbnN0YW50
aWF0ZSBhIGN1c3RvbSBlbGVtZW50PC90aXRsZT4KKzxtZXRhIG5hbWU9ImF1dGhvciIgdGl0bGU9
IlJ5b3N1a2UgTml3YSIgaHJlZj0ibWFpbHRvOnJuaXdhQHdlYmtpdC5vcmciPgorPG1ldGEgbmFt
ZT0iYXNzZXJ0IiBjb250ZW50PSJkb2N1bWVudC5pbXBsZW1lbnRhdGlvbi5jcmVhdGVFbGVtZW50
IG11c3Qgbm90IGluc3RhbnRpYXRlIGEgY3VzdG9tIGVsZW1lbnQiPgorPGxpbmsgcmVsPSJoZWxw
IiBjb250ZW50PSJodHRwczovL2RvbS5zcGVjLndoYXR3Zy5vcmcvI2RvbS1kb21pbXBsZW1lbnRh
dGlvbi1jcmVhdGVkb2N1bWVudCI+Cis8bGluayByZWw9ImhlbHAiIGNvbnRlbnQ9Imh0dHBzOi8v
aHRtbC5zcGVjLndoYXR3Zy5vcmcvI2xvb2stdXAtYS1jdXN0b20tZWxlbWVudC1kZWZpbml0aW9u
Ij4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9jdXN0b20tZWxlbWVudHMvcmVzb3VyY2VzL2N1c3RvbS1lbGVtZW50cy1oZWxwZXJzLmpzIj48
L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0ibG9nIj48L2Rpdj4KKzxzY3JpcHQ+
CisKK2NvbnN0IHhodG1sTmFtZXNwYWNlVVJJID0gJ2h0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0
bWwnOworCit0ZXN0X3dpdGhfd2luZG93KChjb250ZW50V2luZG93LCBjb250ZW50RG9jdW1lbnQp
ID0+IHsKKyAgICBsZXQgY29uc3RydWN0b3JDb3VudCA9IDA7CisgICAgY2xhc3MgTXlDdXN0b21F
bGVtZW50IGV4dGVuZHMgY29udGVudFdpbmRvdy5IVE1MRWxlbWVudCB7CisgICAgICAgIGNvbnN0
cnVjdG9yKCkgeworICAgICAgICAgICAgc3VwZXIoKTsKKyAgICAgICAgICAgIGNvbnN0cnVjdG9y
Q291bnQrKzsKKyAgICAgICAgfQorICAgIH0KKyAgICBjb250ZW50V2luZG93LmN1c3RvbUVsZW1l
bnRzLmRlZmluZSgnbXktY3VzdG9tLWVsZW1lbnQnLCBNeUN1c3RvbUVsZW1lbnQpOworICAgIGNv
bnN0IGluc3RhbmNlID0gY29udGVudERvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ215LWN1c3RvbS1l
bGVtZW50Jyk7CisgICAgYXNzZXJ0X3RydWUoaW5zdGFuY2UgaW5zdGFuY2VvZiBNeUN1c3RvbUVs
ZW1lbnQpOworICAgIGFzc2VydF9lcXVhbHMoY29uc3RydWN0b3JDb3VudCwgMSk7CisKKyAgICBj
b25zdCBuZXdEb2N1bWVudCA9IGNvbnRlbnREb2N1bWVudC5pbXBsZW1lbnRhdGlvbi5jcmVhdGVE
b2N1bWVudCh4aHRtbE5hbWVzcGFjZVVSSSwgJ215LWN1c3RvbS1lbGVtZW50JywgbnVsbCk7Cisg
ICAgYXNzZXJ0X2VxdWFscyhjb25zdHJ1Y3RvckNvdW50LCAxKTsKKyAgICBhc3NlcnRfdHJ1ZShu
ZXdEb2N1bWVudC5kb2N1bWVudEVsZW1lbnQgaW5zdGFuY2VvZiBjb250ZW50V2luZG93LkhUTUxF
bGVtZW50KTsKKyAgICBhc3NlcnRfZXF1YWxzKG5ld0RvY3VtZW50LmRvY3VtZW50RWxlbWVudC5s
b2NhbE5hbWUsICdteS1jdXN0b20tZWxlbWVudCcpOworICAgIGFzc2VydF9mYWxzZShuZXdEb2N1
bWVudC5kb2N1bWVudEVsZW1lbnQgaW5zdGFuY2VvZiBNeUN1c3RvbUVsZW1lbnQpOworfSwgJ2Rv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQgaW52b2tlIGEgY3VzdG9tIGVsZW1lbnQgY29uc3RydWN0b3Ig
d2l0aCBubyBhcmd1bWVudHMnKTsKKworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2N1c3RvbS1lbGVtZW50cy9kb2N1bWVudC1jcmVhdGVF
bGVtZW50TlMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9jdXN0b20tZWxlbWVudHMv
ZG9jdW1lbnQtY3JlYXRlRWxlbWVudE5TLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZjE4YmM4
NjcxMWUzNzQzYmRlOTFlYTY2MTIwOWFlZThmNzMxZTI5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvZmFzdC9jdXN0b20tZWxlbWVudHMvZG9jdW1lbnQtY3JlYXRlRWxlbWVudE5TLWV4
cGVjdGVkLnR4dApAQCAtMCwwICsxLDYgQEAKKworUEFTUyBkb2N1bWVudC5jcmVhdGVFbGVtZW50
IGludm9rZSBhIGN1c3RvbSBlbGVtZW50IGNvbnN0cnVjdG9yIHdpdGggbm8gYXJndW1lbnRzIAor
UEFTUyBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMgbXVzdCBjcmVhdGUgYW4gaW5zdGFuY2Ugb2Yg
Y3VzdG9tIGVsZW1lbnRzIAorUEFTUyBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMgbXVzdCBzZXQg
dGhlIHByZWZpeCBhZnRlciBjb25zdHJ1Y3RpbmcgYSBjdXN0b20gZWxlbWVudCAKK1BBU1MgZG9j
dW1lbnQuY3JlYXRlRWxlbWVudE5TIG11c3QgdXNlIHRoZSBlbGVtZW50IHJldHVybmVkIGJ5IHRo
ZSBjb25zdHJ1Y3RvciAKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jdXN0b20tZWxl
bWVudHMvZG9jdW1lbnQtY3JlYXRlRWxlbWVudE5TLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2N1
c3RvbS1lbGVtZW50cy9kb2N1bWVudC1jcmVhdGVFbGVtZW50TlMuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4z
NjkzYTEwZWU3MTI5Njc3NjRhZDU4OTQ0YzA0YjAzYTAzNjY4ZTNmCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvZmFzdC9jdXN0b20tZWxlbWVudHMvZG9jdW1lbnQtY3JlYXRlRWxlbWVu
dE5TLmh0bWwKQEAgLTAsMCArMSw4OSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFk
PgorPHRpdGxlPkN1c3RvbSBFbGVtZW50czogZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TIG11c3Qg
Y3JlYXRlIGFuIGVsZW1lbnQgd2l0aCBzeW5jaHJvbm91cyBjdXN0b20gZWxlbWVudHMgZmxhZyBz
ZXQ8L3RpdGxlPgorPG1ldGEgbmFtZT0iYXV0aG9yIiB0aXRsZT0iUnlvc3VrZSBOaXdhIiBocmVm
PSJtYWlsdG86cm5pd2FAd2Via2l0Lm9yZyI+Cis8bWV0YSBuYW1lPSJhc3NlcnQiIGNvbnRlbnQ9
ImRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyBtdXN0IGNyZWF0ZSBhbiBlbGVtZW50IHdpdGggc3lu
Y2hyb25vdXMgY3VzdG9tIGVsZW1lbnRzIGZsYWcgc2V0Ij4KKzxsaW5rIHJlbD0iaGVscCIgY29u
dGVudD0iaHR0cHM6Ly9kb20uc3BlYy53aGF0d2cub3JnLyNkb20tZG9jdW1lbnQtY3JlYXRlZWxl
bWVudG5zIj4KKzxsaW5rIHJlbD0iaGVscCIgY29udGVudD0iaHR0cHM6Ly9kb20uc3BlYy53aGF0
d2cub3JnLyNjb25jZXB0LWNyZWF0ZS1lbGVtZW50Ij4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNv
dXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291
cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jdXN0b20tZWxlbWVudHMvcmVzb3VyY2Vz
L2N1c3RvbS1lbGVtZW50cy1oZWxwZXJzLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5Pgor
PGRpdiBpZD0ibG9nIj48L2Rpdj4KKzxzY3JpcHQ+CisKK2NvbnN0IHhodG1sTmFtZXNwYWNlVVJJ
ID0gJ2h0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwnOworCit0ZXN0X3dpdGhfd2luZG93KChj
b250ZW50V2luZG93LCBjb250ZW50RG9jdW1lbnQpID0+IHsKKyAgICBsZXQgY29uc3RydWN0b3JB
cmd1bWVudHM7CisgICAgY2xhc3MgTXlDdXN0b21FbGVtZW50IGV4dGVuZHMgY29udGVudFdpbmRv
dy5IVE1MRWxlbWVudCB7CisgICAgICAgIGNvbnN0cnVjdG9yKCkgeworICAgICAgICAgICAgY29u
c3RydWN0b3JBcmd1bWVudHMgPSBBcnJheS5mcm9tKGFyZ3VtZW50cyk7CisgICAgICAgICAgICBz
dXBlcigpOworICAgICAgICB9CisgICAgfQorICAgIGNvbnRlbnRXaW5kb3cuY3VzdG9tRWxlbWVu
dHMuZGVmaW5lKCdteS1jdXN0b20tZWxlbWVudCcsIE15Q3VzdG9tRWxlbWVudCk7CisgICAgY29u
c3QgaW5zdGFuY2UgPSBjb250ZW50RG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnbXktY3VzdG9tLWVs
ZW1lbnQnKTsKKyAgICBhc3NlcnRfdHJ1ZShpbnN0YW5jZSBpbnN0YW5jZW9mIE15Q3VzdG9tRWxl
bWVudCk7CisgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhjb25zdHJ1Y3RvckFyZ3VtZW50cywgW10p
OworfSwgJ2RvY3VtZW50LmNyZWF0ZUVsZW1lbnQgaW52b2tlIGEgY3VzdG9tIGVsZW1lbnQgY29u
c3RydWN0b3Igd2l0aCBubyBhcmd1bWVudHMnKTsKKwordGVzdF93aXRoX3dpbmRvdygoY29udGVu
dFdpbmRvdywgY29udGVudERvY3VtZW50KSA9PiB7CisgICAgY2xhc3MgTXlDdXN0b21FbGVtZW50
IGV4dGVuZHMgY29udGVudFdpbmRvdy5IVE1MRWxlbWVudCB7fTsKKworICAgIGNvbnN0IHVwZ3Jh
ZGVDYW5kaWRhdGUgPSBjb250ZW50RG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKHhodG1sTmFtZXNw
YWNlVVJJLCAnbXktY3VzdG9tLWVsZW1lbnQnKTsKKyAgICBhc3NlcnRfdHJ1ZSh1cGdyYWRlQ2Fu
ZGlkYXRlIGluc3RhbmNlb2YgY29udGVudFdpbmRvdy5IVE1MRWxlbWVudCk7CisgICAgYXNzZXJ0
X2ZhbHNlKHVwZ3JhZGVDYW5kaWRhdGUgaW5zdGFuY2VvZiBNeUN1c3RvbUVsZW1lbnQpOworCisg
ICAgY29udGVudFdpbmRvdy5jdXN0b21FbGVtZW50cy5kZWZpbmUoJ215LWN1c3RvbS1lbGVtZW50
JywgTXlDdXN0b21FbGVtZW50KTsKKyAgICBjb25zdCBpbnN0YW5jZSA9IGNvbnRlbnREb2N1bWVu
dC5jcmVhdGVFbGVtZW50TlMoeGh0bWxOYW1lc3BhY2VVUkksICdteS1jdXN0b20tZWxlbWVudCcp
OworICAgIGFzc2VydF90cnVlKGluc3RhbmNlIGluc3RhbmNlb2YgTXlDdXN0b21FbGVtZW50KTsK
KyAgICBhc3NlcnRfZXF1YWxzKGluc3RhbmNlLmxvY2FsTmFtZSwgJ215LWN1c3RvbS1lbGVtZW50
Jyk7CisgICAgYXNzZXJ0X2VxdWFscyhpbnN0YW5jZS5uYW1lc3BhY2VVUkksIHhodG1sTmFtZXNw
YWNlVVJJKTsKK30sICdkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMgbXVzdCBjcmVhdGUgYW4gaW5z
dGFuY2Ugb2YgY3VzdG9tIGVsZW1lbnRzJyk7CisKK3Rlc3Rfd2l0aF93aW5kb3coKGNvbnRlbnRX
aW5kb3csIGNvbnRlbnREb2N1bWVudCkgPT4geworICAgIGNsYXNzIE15Q3VzdG9tRWxlbWVudCBl
eHRlbmRzIGNvbnRlbnRXaW5kb3cuSFRNTEVsZW1lbnQge307CisgICAgY29udGVudFdpbmRvdy5j
dXN0b21FbGVtZW50cy5kZWZpbmUoJ2VsZW1lbnQtd2l0aC1wcmVmaXgnLCBNeUN1c3RvbUVsZW1l
bnQpOworCisgICAgY29uc3QgaW5zdGFuY2UgPSBjb250ZW50RG9jdW1lbnQuY3JlYXRlRWxlbWVu
dE5TKHhodG1sTmFtZXNwYWNlVVJJLCAnZm9vOmVsZW1lbnQtd2l0aC1wcmVmaXgnKTsKKyAgICBh
c3NlcnRfdHJ1ZShpbnN0YW5jZSBpbnN0YW5jZW9mIE15Q3VzdG9tRWxlbWVudCk7CisgICAgYXNz
ZXJ0X2VxdWFscyhpbnN0YW5jZS5sb2NhbE5hbWUsICdlbGVtZW50LXdpdGgtcHJlZml4Jyk7Cisg
ICAgYXNzZXJ0X2VxdWFscyhpbnN0YW5jZS5uYW1lc3BhY2VVUkksIHhodG1sTmFtZXNwYWNlVVJJ
KTsKKyAgICBhc3NlcnRfZXF1YWxzKGluc3RhbmNlLnByZWZpeCwgJ2ZvbycpOworfSwgJ2RvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnROUyBtdXN0IHNldCB0aGUgcHJlZml4IGFmdGVyIGNvbnN0cnVjdGlu
ZyBhIGN1c3RvbSBlbGVtZW50Jyk7CisKK3Rlc3Rfd2l0aF93aW5kb3coKGNvbnRlbnRXaW5kb3cs
IGNvbnRlbnREb2N1bWVudCkgPT4geworICAgIGxldCBpbm5lckVsZW1lbnQ7CisgICAgbGV0IGlu
bmVyRWxlbWVudFByZWZpeDsKKyAgICBsZXQgb3V0ZXJFbGVtZW50OworICAgIGxldCBvdXRlckVs
ZW1lbnRQcmVmaXg7CisgICAgY2xhc3MgTXlDdXN0b21FbGVtZW50IGV4dGVuZHMgY29udGVudFdp
bmRvdy5IVE1MRWxlbWVudCB7CisgICAgICAgIGNvbnN0cnVjdG9yKGlzSW5uZXJDYWxsKSB7Cisg
ICAgICAgICAgICBpZiAoaXNJbm5lckNhbGwpIHsKKyAgICAgICAgICAgICAgICBpbm5lckVsZW1l
bnQgPSBzdXBlcigpOworICAgICAgICAgICAgICAgIGlubmVyRWxlbWVudFByZWZpeCA9IGlubmVy
RWxlbWVudC5wcmVmaXg7CisgICAgICAgICAgICAgICAgcmV0dXJuIGlubmVyRWxlbWVudDsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIG91dGVyRWxlbWVudCA9IHN1cGVyKCk7CisgICAgICAg
ICAgICBvdXRlckVsZW1lbnRQcmVmaXggPSBvdXRlckVsZW1lbnQucHJlZml4OworICAgICAgICAg
ICAgcmV0dXJuIG5ldyBNeUN1c3RvbUVsZW1lbnQodHJ1ZSk7CisgICAgICAgIH0KKyAgICB9Cisg
ICAgY29udGVudFdpbmRvdy5jdXN0b21FbGVtZW50cy5kZWZpbmUoJ2N1c3RvbS1lbGVtZW50Jywg
TXlDdXN0b21FbGVtZW50KTsKKworICAgIGNvbnN0IGluc3RhbmNlID0gY29udGVudERvY3VtZW50
LmNyZWF0ZUVsZW1lbnROUyh4aHRtbE5hbWVzcGFjZVVSSSwgJ2ZvbzpjdXN0b20tZWxlbWVudCcp
OworICAgIGFzc2VydF90cnVlKGluc3RhbmNlIGluc3RhbmNlb2YgTXlDdXN0b21FbGVtZW50KTsK
KyAgICBhc3NlcnRfZXF1YWxzKGluc3RhbmNlLmxvY2FsTmFtZSwgJ2N1c3RvbS1lbGVtZW50Jyk7
CisgICAgYXNzZXJ0X2VxdWFscyhpbnN0YW5jZS5uYW1lc3BhY2VVUkksIHhodG1sTmFtZXNwYWNl
VVJJKTsKKyAgICBhc3NlcnRfZXF1YWxzKGluc3RhbmNlLnByZWZpeCwgJ2ZvbycpOworICAgIGFz
c2VydF9lcXVhbHMoaW5zdGFuY2UsIGlubmVyRWxlbWVudCwgJ2RvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUyBtdXN0IGNyZWF0ZSBhbiBlbGVtZW50IHdpdGggdGhlIHN5bmNocm9ub3VzIGN1c3RvbSBl
bGVtZW50cyBmbGFnIHNldCcpOworICAgIGFzc2VydF9lcXVhbHMoaW5uZXJFbGVtZW50UHJlZml4
LCBudWxsLCAnSFRNTCBjb25zdHJ1Y3RvciBtdXN0IG5vdCBzZXQgcHJlZml4Jyk7CisgICAgYXNz
ZXJ0X2VxdWFscyhvdXRlckVsZW1lbnRQcmVmaXgsIG51bGwsICdIVE1MIGNvbnN0cnVjdG9yIG11
c3Qgbm90IHNldCBwcmVmaXgnKTsKK30sICdkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMgbXVzdCB1
c2UgdGhlIGVsZW1lbnQgcmV0dXJuZWQgYnkgdGhlIGNvbnN0cnVjdG9yJyk7CisKKzwvc2NyaXB0
PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>