<?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>129484</bug_id>
          
          <creation_ts>2014-02-28 08:15:41 -0800</creation_ts>
          <short_desc>[WebRTC] Updating createOffer and createAnswer methods to match WebRTC editor&apos;s draft of 01/27/2014</short_desc>
          <delta_ts>2014-05-19 09:08:13 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>124288</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Thiago de Barros Lacerda">thiago.lacerda</reporter>
          <assigned_to name="Thiago de Barros Lacerda">thiago.lacerda</assigned_to>
          <cc>bunhere</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hta</cc>
    
    <cc>jer.noble</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>philipj</cc>
    
    <cc>rakuco</cc>
    
    <cc>sergio</cc>
    
    <cc>tommyw</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>985564</commentid>
    <comment_count>0</comment_count>
    <who name="Thiago de Barros Lacerda">thiago.lacerda</who>
    <bug_when>2014-02-28 08:15:41 -0800</bug_when>
    <thetext>According to the spec, createOffer and createAnswer will no longer have MediaConstraints as an argument, instead they will have RTCOfferOptions and RTCOfferAnswerOptions, respectively.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>985570</commentid>
    <comment_count>1</comment_count>
      <attachid>225468</attachid>
    <who name="Thiago de Barros Lacerda">thiago.lacerda</who>
    <bug_when>2014-02-28 08:22:39 -0800</bug_when>
    <thetext>Created attachment 225468
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>985652</commentid>
    <comment_count>2</comment_count>
      <attachid>225468</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2014-02-28 11:23:51 -0800</bug_when>
    <thetext>Comment on attachment 225468
Patch

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

&gt; Source/WebCore/Modules/mediastream/RTCOfferAnswerOptions.cpp:41
&gt; +        // According to the spec, the error is going to be defined yet, so let&apos;s use TYPE_MISMATCH_ERR for now.
&gt; +        ec = TYPE_MISMATCH_ERR;

This should probably have a FIXME with a bug number to help us remember to change this once the error is defined.

&gt; Source/WebCore/Modules/mediastream/RTCOfferAnswerOptions.cpp:57
&gt; +    if (validateRequestIdentity(requestIdentity))
&gt; +        m_requestIdentity = requestIdentity;
&gt; +
&gt; +    return true;

An invalid request identity does not result in an error?

&gt; Source/WebCore/Modules/mediastream/RTCOfferAnswerOptions.cpp:64
&gt; +bool RTCOfferAnswerOptions::validateRequestIdentity(const String&amp; value) const
&gt; +{
&gt; +    return value == &quot;yes&quot; || value == &quot;no&quot; || value == &quot;ifconfigured&quot;;
&gt; +}
&gt; +

Unless this is going to be used outside of this class, it doesn&apos;t have to be a member function.

&gt; Source/WebCore/Modules/mediastream/RTCOfferAnswerOptions.cpp:70
&gt; +        // According to the spec, the error is going to be defined yet, so let&apos;s use TYPE_MISMATCH_ERR for now.
&gt; +        ec = TYPE_MISMATCH_ERR;

Ditto about adding a FIXME.

&gt; Source/WebCore/Modules/mediastream/RTCOfferAnswerOptions.cpp:85
&gt; +    String offerToReceiveVideoStr, offerToReceiveAudioStr;

Nit: these declarations should be on separate lines.

&gt; Source/WebCore/Modules/mediastream/RTCOfferAnswerOptions.cpp:92
&gt; +    if (options.get(&quot;offerToReceiveVideo&quot;, offerToReceiveVideoStr)) {
&gt; +        m_offerToReceiveVideo = offerToReceiveVideoStr.toInt64Strict(&amp;numberConversionSuccess);
&gt; +        if (!numberConversionSuccess)
&gt; +            return false;
&gt; +    } else
&gt; +        return false;

Nit: I would reverse the order of the comparisons, return false if &quot;offerToReceiveVideo&quot; isn&apos;t specified first, to avoid having to indent the number conversion.

&gt; Source/WebCore/Modules/mediastream/RTCOfferAnswerOptions.cpp:99
&gt; +    if (options.get(&quot;offerToReceiveAudio&quot;, offerToReceiveAudioStr)) {
&gt; +        m_offerToReceiveAudio = offerToReceiveAudioStr.toInt64Strict(&amp;numberConversionSuccess);
&gt; +        if (!numberConversionSuccess)
&gt; +            return false;
&gt; +    } else
&gt; +        return false;

Ditto.

&gt; Source/WebCore/Modules/mediastream/RTCOfferAnswerOptions.cpp:102
&gt; +    bool iceRestart;

Nit: this can be declared just before it is used.

&gt; Source/WebCore/Modules/mediastream/RTCPeerConnection.cpp:206
&gt; +void RTCPeerConnection::createOffer(PassRefPtr&lt;RTCSessionDescriptionCallback&gt; successCallback, PassRefPtr&lt;RTCPeerConnectionErrorCallback&gt; errorCallback, const Dictionary&amp; offerOptions, ExceptionCode&amp; ec)

It doesn&apos;t have to be done in this patch, but we should update all of the MEDIA_STREAM code to use Ref&lt;&gt; and PassRef&lt;&gt; instead of RefPtr&lt;&gt; and PassRefPtr&lt;&gt;.

&gt; Source/WebCore/platform/mock/RTCPeerConnectionHandlerMock.cpp:67
&gt; +void RTCPeerConnectionHandlerMock::createAnswer(PassRefPtr&lt;RTCSessionDescriptionRequest&gt; request, PassRefPtr&lt;RTCOfferAnswerOptions&gt; constraints)

This will break the -Werror build because &quot;constraints&quot; is not used.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>987669</commentid>
    <comment_count>3</comment_count>
      <attachid>225984</attachid>
    <who name="Thiago de Barros Lacerda">thiago.lacerda</who>
    <bug_when>2014-03-06 06:20:01 -0800</bug_when>
    <thetext>Created attachment 225984
Requested Changes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>987670</commentid>
    <comment_count>4</comment_count>
      <attachid>225468</attachid>
    <who name="Thiago de Barros Lacerda">thiago.lacerda</who>
    <bug_when>2014-03-06 06:25:32 -0800</bug_when>
    <thetext>Comment on attachment 225468
Patch

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

&gt;&gt; Source/WebCore/Modules/mediastream/RTCOfferAnswerOptions.cpp:41
&gt;&gt; +        ec = TYPE_MISMATCH_ERR;
&gt; 
&gt; This should probably have a FIXME with a bug number to help us remember to change this once the error is defined.

OK

&gt;&gt; Source/WebCore/Modules/mediastream/RTCOfferAnswerOptions.cpp:57
&gt;&gt; +    return true;
&gt; 
&gt; An invalid request identity does not result in an error?

Spec don&apos;t says anything about it and requestIdentity has a default value (&quot;ifconfigured&quot;), so I thought that would be better to just ignore an invalid value and stay with the default one.

&gt;&gt; Source/WebCore/Modules/mediastream/RTCOfferAnswerOptions.cpp:64
&gt;&gt; +
&gt; 
&gt; Unless this is going to be used outside of this class, it doesn&apos;t have to be a member function.

OK, I&apos;ll put it as static

&gt;&gt; Source/WebCore/Modules/mediastream/RTCOfferAnswerOptions.cpp:70
&gt;&gt; +        ec = TYPE_MISMATCH_ERR;
&gt; 
&gt; Ditto about adding a FIXME.

OK

&gt;&gt; Source/WebCore/Modules/mediastream/RTCOfferAnswerOptions.cpp:85
&gt;&gt; +    String offerToReceiveVideoStr, offerToReceiveAudioStr;
&gt; 
&gt; Nit: these declarations should be on separate lines.

OK

&gt;&gt; Source/WebCore/Modules/mediastream/RTCOfferAnswerOptions.cpp:92
&gt;&gt; +        return false;
&gt; 
&gt; Nit: I would reverse the order of the comparisons, return false if &quot;offerToReceiveVideo&quot; isn&apos;t specified first, to avoid having to indent the number conversion.

OK

&gt;&gt; Source/WebCore/Modules/mediastream/RTCOfferAnswerOptions.cpp:99
&gt;&gt; +        return false;
&gt; 
&gt; Ditto.

OK

&gt;&gt; Source/WebCore/Modules/mediastream/RTCOfferAnswerOptions.cpp:102
&gt;&gt; +    bool iceRestart;
&gt; 
&gt; Nit: this can be declared just before it is used.

OK

&gt;&gt; Source/WebCore/Modules/mediastream/RTCPeerConnection.cpp:206
&gt;&gt; +void RTCPeerConnection::createOffer(PassRefPtr&lt;RTCSessionDescriptionCallback&gt; successCallback, PassRefPtr&lt;RTCPeerConnectionErrorCallback&gt; errorCallback, const Dictionary&amp; offerOptions, ExceptionCode&amp; ec)
&gt; 
&gt; It doesn&apos;t have to be done in this patch, but we should update all of the MEDIA_STREAM code to use Ref&lt;&gt; and PassRef&lt;&gt; instead of RefPtr&lt;&gt; and PassRefPtr&lt;&gt;.

I can do that later

&gt;&gt; Source/WebCore/platform/mock/RTCPeerConnectionHandlerMock.cpp:67
&gt;&gt; +void RTCPeerConnectionHandlerMock::createAnswer(PassRefPtr&lt;RTCSessionDescriptionRequest&gt; request, PassRefPtr&lt;RTCOfferAnswerOptions&gt; constraints)
&gt; 
&gt; This will break the -Werror build because &quot;constraints&quot; is not used.

oops.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>987911</commentid>
    <comment_count>5</comment_count>
      <attachid>225984</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-03-06 15:35:40 -0800</bug_when>
    <thetext>Comment on attachment 225984
Requested Changes

Clearing flags on attachment: 225984

Committed r165226: &lt;http://trac.webkit.org/changeset/165226&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>987912</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-03-06 15:35:44 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>225468</attachid>
            <date>2014-02-28 08:22:39 -0800</date>
            <delta_ts>2014-03-06 06:25:32 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-129484-20140228132237.patch</filename>
            <type>text/plain</type>
            <size>35604</size>
            <attacher name="Thiago de Barros Lacerda">thiago.lacerda</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTY0ODYwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNThmNjQxMjU4NDgxNzhh
ZWI5NmQ1NzVjMTRhN2M3ZjJjZjMzYjIxMS4uYzZiYWYzYWU1YzMyYmQ2MTdmMmI0OWFmOGYwNjRm
ZWFhNTNhZjI3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDE0LTAyLTI4ICBUaGlh
Z28gZGUgQmFycm9zIExhY2VyZGEgIDx0aGlhZ28ubGFjZXJkYUBvcGVuYm9zc2Eub3JnPgorCisg
ICAgICAgIFtXZWJSVENdIFVwZGF0aW5nIGNyZWF0ZU9mZmVyIGFuZCBjcmVhdGVBbnN3ZXIgbWV0
aG9kcyB0byBtYXRjaCBXZWJSVEMgZWRpdG9yJ3MgZHJhZnQgb2YgMDEvMjcvMjAxNAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI5NDg0CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWNjb3JkaW5nIHRvIHRo
ZSBzcGVjLCBjcmVhdGVPZmZlciBhbmQgY3JlYXRlQW5zd2VyIHdpbGwgbm8gbG9uZ2VyIGhhdmUg
TWVkaWFDb25zdHJhaW50cyBhcyBhbiBhcmd1bWVudCwKKyAgICAgICAgaW5zdGVhZCB0aGV5IHdp
bGwgaGF2ZSBSVENPZmZlck9wdGlvbnMgYW5kIFJUQ09mZmVyQW5zd2VyT3B0aW9ucywgcmVzcGVj
dGl2ZWx5LgorCisgICAgICAgIEV4aXN0aW5nIHRlc3RzIHdlcmUgdXBkYXRlZC4KKworICAgICAg
ICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAg
ICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENPZmZlckFuc3dlck9wdGlvbnMuY3BwOiBBZGRl
ZC4KKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ09mZmVyQW5zd2VyT3B0aW9ucy5o
OiBBZGRlZC4KKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9u
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1BlZXJDb25uZWN0aW9uOjpjcmVhdGVPZmZlcik6
CisgICAgICAgIChXZWJDb3JlOjpSVENQZWVyQ29ubmVjdGlvbjo6Y3JlYXRlQW5zd2VyKToKKyAg
ICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmg6CisgICAgICAg
ICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5pZGw6CisgICAgICAgICog
cGxhdGZvcm0vbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyLmg6CisgICAgICAg
ICogcGxhdGZvcm0vbW9jay9SVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJNb2NrLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlck1vY2s6OmNyZWF0ZU9mZmVyKToK
KyAgICAgICAgKFdlYkNvcmU6OlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlck1vY2s6OmNyZWF0ZUFu
c3dlcik6CisgICAgICAgICogcGxhdGZvcm0vbW9jay9SVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJN
b2NrLmg6CisKIDIwMTQtMDItMjggIE1paG5lYSBPdmlkZW5pZSAgPG1paG5lYUBhZG9iZS5jb20+
CiAKICAgICAgICAgW0NTU1JlZ2lvbnNdIEFTU0VSVElPTiBGQUlMRUQ6ICFtX3JlZ2lvbnNJbnZh
bGlkYXRlZCBpbiBSZW5kZXJGbG93VGhyZWFkOjpyZWdpb25BdEJsb2NrT2Zmc2V0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NNYWtl
TGlzdHMudHh0CmluZGV4IGIyMThiNmJlMWY3YzJmMWUyY2RmZTRmNzdlMjMyNjhjM2VkNmVmZTMu
LmNlZTc4OTYwNmE2MmY0YWMxMTNjYmFiN2I2MjJkYWZhNWU5YTc0MzAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlz
dHMudHh0CkBAIC04NTcsNiArODU3LDcgQEAgc2V0KFdlYkNvcmVfU09VUkNFUwogICAgIE1vZHVs
ZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxFdmVudC5jcHAKICAgICBNb2R1bGVzL21lZGlh
c3RyZWFtL1JUQ0ljZUNhbmRpZGF0ZS5jcHAKICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0lj
ZUNhbmRpZGF0ZUV2ZW50LmNwcAorICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDT2ZmZXJBbnN3
ZXJPcHRpb25zLmNwcAogICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24u
Y3BwCiAgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENTZXNzaW9uRGVzY3JpcHRpb24uY3BwCiAg
ICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENTZXNzaW9uRGVzY3JpcHRpb25SZXF1ZXN0SW1wbC5j
cHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IDM5OWVhMDEwZGUwNDYyZTY4MGM1
NTFmZjY0ODJkNDI1ZTEwOTI0OWEuLjNhOGU2NTU2NzU0MTRmYzAyMmI2NTFlMzYyNmRkMDU4YWRj
NDgzZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysr
IGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAtMTk0OCw2ICsxOTQ4LDgg
QEAgd2ViY29yZV9tb2R1bGVzX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vUlRDSWNlQ2FuZGlkYXRlLmggXAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vUlRDSWNlQ2FuZGlkYXRlRXZlbnQuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL1JUQ0ljZUNhbmRpZGF0ZUV2ZW50LmggXAorCVNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDT2ZmZXJBbnN3ZXJPcHRpb25zLmNwcCBcCisJU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENPZmZlckFuc3dlck9wdGlvbnMuaCBc
CiAJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5j
cHAgXAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rp
b24uaCBcCiAJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENTZXNzaW9uRGVz
Y3JpcHRpb24uY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vUlRDT2ZmZXJBbnN3ZXJPcHRpb25zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vUlRDT2ZmZXJBbnN3ZXJPcHRpb25zLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wMTg5OTA2
Yjg0NDJkNzgzZDg5Nzk0ZDg4Y2FjZDEwYTk2YmI2YjFmCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENPZmZlckFuc3dlck9wdGlvbnMuY3Bw
CkBAIC0wLDAgKzEsMTE0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBF
TkFCTEUoTUVESUFfU1RSRUFNKQorI2luY2x1ZGUgIlJUQ09mZmVyQW5zd2VyT3B0aW9ucy5oIgor
CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworUGFzc1JlZlB0cjxSVENPZmZlckFuc3dlck9wdGlvbnM+IFJUQ09mZmVyQW5zd2VyT3B0aW9u
czo6Y3JlYXRlKGNvbnN0IERpY3Rpb25hcnkmIG9wdGlvbnMsIEV4Y2VwdGlvbkNvZGUmIGVjKQor
eworICAgIFJlZlB0cjxSVENPZmZlckFuc3dlck9wdGlvbnM+IG9mZmVyQW5zd2VyT3B0aW9ucyA9
IGFkb3B0UmVmKG5ldyBSVENPZmZlckFuc3dlck9wdGlvbnMoKSk7CisgICAgU3RyaW5nIHJlcXVl
c3RJZGVudGl0eTsKKyAgICBpZiAoIW9mZmVyQW5zd2VyT3B0aW9ucy0+aW5pdGlhbGl6ZShvcHRp
b25zKSkgeworICAgICAgICAvLyBBY2NvcmRpbmcgdG8gdGhlIHNwZWMsIHRoZSBlcnJvciBpcyBn
b2luZyB0byBiZSBkZWZpbmVkIHlldCwgc28gbGV0J3MgdXNlIFRZUEVfTUlTTUFUQ0hfRVJSIGZv
ciBub3cuCisgICAgICAgIGVjID0gVFlQRV9NSVNNQVRDSF9FUlI7CisgICAgICAgIHJldHVybiBu
dWxscHRyOworICAgIH0KKworICAgIHJldHVybiBvZmZlckFuc3dlck9wdGlvbnMucmVsZWFzZSgp
OworfQorCitib29sIFJUQ09mZmVyQW5zd2VyT3B0aW9uczo6aW5pdGlhbGl6ZShjb25zdCBEaWN0
aW9uYXJ5JiBvcHRpb25zKQoreworICAgIFN0cmluZyByZXF1ZXN0SWRlbnRpdHk7CisgICAgaWYg
KCFvcHRpb25zLmlzVW5kZWZpbmVkT3JOdWxsKCkgJiYgKCFvcHRpb25zLmdldCgicmVxdWVzdElk
ZW50aXR5IiwgcmVxdWVzdElkZW50aXR5KSB8fCByZXF1ZXN0SWRlbnRpdHkuaXNFbXB0eSgpKSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKHZhbGlkYXRlUmVxdWVzdElkZW50aXR5
KHJlcXVlc3RJZGVudGl0eSkpCisgICAgICAgIG1fcmVxdWVzdElkZW50aXR5ID0gcmVxdWVzdElk
ZW50aXR5OworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgUlRDT2ZmZXJBbnN3ZXJPcHRp
b25zOjp2YWxpZGF0ZVJlcXVlc3RJZGVudGl0eShjb25zdCBTdHJpbmcmIHZhbHVlKSBjb25zdAor
eworICAgIHJldHVybiB2YWx1ZSA9PSAieWVzIiB8fCB2YWx1ZSA9PSAibm8iIHx8IHZhbHVlID09
ICJpZmNvbmZpZ3VyZWQiOworfQorCitQYXNzUmVmUHRyPFJUQ09mZmVyT3B0aW9ucz4gUlRDT2Zm
ZXJPcHRpb25zOjpjcmVhdGUoY29uc3QgRGljdGlvbmFyeSYgb3B0aW9ucywgRXhjZXB0aW9uQ29k
ZSYgZWMpCit7CisgICAgUmVmUHRyPFJUQ09mZmVyT3B0aW9ucz4gb2ZmZXJPcHRpb25zID0gYWRv
cHRSZWYobmV3IFJUQ09mZmVyT3B0aW9ucygpKTsKKyAgICBpZiAoIW9mZmVyT3B0aW9ucy0+aW5p
dGlhbGl6ZShvcHRpb25zKSkgeworICAgICAgICAvLyBBY2NvcmRpbmcgdG8gdGhlIHNwZWMsIHRo
ZSBlcnJvciBpcyBnb2luZyB0byBiZSBkZWZpbmVkIHlldCwgc28gbGV0J3MgdXNlIFRZUEVfTUlT
TUFUQ0hfRVJSIGZvciBub3cuCisgICAgICAgIGVjID0gVFlQRV9NSVNNQVRDSF9FUlI7CisgICAg
ICAgIHJldHVybiBudWxscHRyOworICAgIH0KKworICAgIHJldHVybiBvZmZlck9wdGlvbnMucmVs
ZWFzZSgpOworfQorCitib29sIFJUQ09mZmVyT3B0aW9uczo6aW5pdGlhbGl6ZShjb25zdCBEaWN0
aW9uYXJ5JiBvcHRpb25zKQoreworICAgIGlmIChvcHRpb25zLmlzVW5kZWZpbmVkT3JOdWxsKCkp
CisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgaWYgKCFSVENPZmZlckFuc3dlck9wdGlvbnM6
OmluaXRpYWxpemUob3B0aW9ucykpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIFN0cmlu
ZyBvZmZlclRvUmVjZWl2ZVZpZGVvU3RyLCBvZmZlclRvUmVjZWl2ZUF1ZGlvU3RyOworICAgIGJv
b2wgbnVtYmVyQ29udmVyc2lvblN1Y2Nlc3M7CisgICAgaWYgKG9wdGlvbnMuZ2V0KCJvZmZlclRv
UmVjZWl2ZVZpZGVvIiwgb2ZmZXJUb1JlY2VpdmVWaWRlb1N0cikpIHsKKyAgICAgICAgbV9vZmZl
clRvUmVjZWl2ZVZpZGVvID0gb2ZmZXJUb1JlY2VpdmVWaWRlb1N0ci50b0ludDY0U3RyaWN0KCZu
dW1iZXJDb252ZXJzaW9uU3VjY2Vzcyk7CisgICAgICAgIGlmICghbnVtYmVyQ29udmVyc2lvblN1
Y2Nlc3MpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfSBlbHNlCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgIGlmIChvcHRpb25zLmdldCgib2ZmZXJUb1JlY2VpdmVBdWRpbyIs
IG9mZmVyVG9SZWNlaXZlQXVkaW9TdHIpKSB7CisgICAgICAgIG1fb2ZmZXJUb1JlY2VpdmVBdWRp
byA9IG9mZmVyVG9SZWNlaXZlQXVkaW9TdHIudG9JbnQ2NFN0cmljdCgmbnVtYmVyQ29udmVyc2lv
blN1Y2Nlc3MpOworICAgICAgICBpZiAoIW51bWJlckNvbnZlcnNpb25TdWNjZXNzKQorICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0gZWxzZQorICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICBib29sIHZvaWNlQWN0aXZpdHlEZXRlY3Rpb247CisgICAgYm9vbCBpY2VSZXN0YXJ0Owor
ICAgIGlmIChvcHRpb25zLmdldCgidm9pY2VBY3Rpdml0eURldGVjdGlvbiIsIHZvaWNlQWN0aXZp
dHlEZXRlY3Rpb24pKQorICAgICAgICBtX3ZvaWNlQWN0aXZpdHlEZXRlY3Rpb24gPSB2b2ljZUFj
dGl2aXR5RGV0ZWN0aW9uOworCisgICAgaWYgKG9wdGlvbnMuZ2V0KCJpY2VSZXN0YXJ0IiwgaWNl
UmVzdGFydCkpCisgICAgICAgIG1faWNlUmVzdGFydCA9IGljZVJlc3RhcnQ7CisKKyAgICByZXR1
cm4gdHJ1ZTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxF
KE1FRElBX1NUUkVBTSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vUlRDT2ZmZXJBbnN3ZXJPcHRpb25zLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL1JUQ09mZmVyQW5zd2VyT3B0aW9ucy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmEwNGU1NWUyMjIw
MWU3N2Y5ZTE0Y2NmZTE1ZjdkMjcwOTU0MzFlNGYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ09mZmVyQW5zd2VyT3B0aW9ucy5oCkBAIC0w
LDAgKzEsOTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgUlRDT2ZmZXJBbnN3ZXJPcHRpb25zX2gKKyNk
ZWZpbmUgUlRDT2ZmZXJBbnN3ZXJPcHRpb25zX2gKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0p
CisKKyNpbmNsdWRlICJEaWN0aW9uYXJ5LmgiCisjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgor
I2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4K
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBEaWN0aW9uYXJ5OworCitjbGFzcyBSVENP
ZmZlckFuc3dlck9wdGlvbnMgOiBwdWJsaWMgUmVmQ291bnRlZDxSVENPZmZlckFuc3dlck9wdGlv
bnM+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxSVENPZmZlckFuc3dlck9wdGlv
bnM+IGNyZWF0ZShjb25zdCBEaWN0aW9uYXJ5JiwgRXhjZXB0aW9uQ29kZSYpOworCisgICAgY29u
c3QgU3RyaW5nJiByZXF1ZXN0SWRlbnRpdHkoKSBjb25zdCB7IHJldHVybiBtX3JlcXVlc3RJZGVu
dGl0eTsgfQorCisgICAgdmlydHVhbCB+UlRDT2ZmZXJBbnN3ZXJPcHRpb25zKCkgeyB9CisKK3By
b3RlY3RlZDoKKyAgICB2aXJ0dWFsIGJvb2wgaW5pdGlhbGl6ZShjb25zdCBEaWN0aW9uYXJ5Jik7
CisgICAgUlRDT2ZmZXJBbnN3ZXJPcHRpb25zKCkKKyAgICAgICAgOiBtX3JlcXVlc3RJZGVudGl0
eSgiaWZjb25maWd1cmVkIikKKyAgICB7CisgICAgfQorCitwcml2YXRlOgorICAgIGJvb2wgdmFs
aWRhdGVSZXF1ZXN0SWRlbnRpdHkoY29uc3QgU3RyaW5nJikgY29uc3Q7CisgICAgU3RyaW5nIG1f
cmVxdWVzdElkZW50aXR5OworfTsKKworY2xhc3MgUlRDT2ZmZXJPcHRpb25zIDogcHVibGljIFJU
Q09mZmVyQW5zd2VyT3B0aW9ucyB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8UlRD
T2ZmZXJPcHRpb25zPiBjcmVhdGUoY29uc3QgRGljdGlvbmFyeSYsIEV4Y2VwdGlvbkNvZGUmKTsK
KworICAgIGludDY0X3Qgb2ZmZXJUb1JlY2VpdmVWaWRlbygpIGNvbnN0IHsgcmV0dXJuIG1fb2Zm
ZXJUb1JlY2VpdmVWaWRlbzsgfQorICAgIGludDY0X3Qgb2ZmZXJUb1JlY2VpdmVBdWRpbygpIGNv
bnN0IHsgcmV0dXJuIG1fb2ZmZXJUb1JlY2VpdmVBdWRpbzsgfQorICAgIGJvb2wgdm9pY2VBY3Rp
dml0eURldGVjdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fdm9pY2VBY3Rpdml0eURldGVjdGlvbjsg
fQorICAgIGJvb2wgaWNlUmVzdGFydCgpIGNvbnN0IHsgcmV0dXJuIG1faWNlUmVzdGFydDsgfQor
CisgICAgdmlydHVhbCB+UlRDT2ZmZXJPcHRpb25zKCkgeyB9CisKK3ByaXZhdGU6CisgICAgdmly
dHVhbCBib29sIGluaXRpYWxpemUoY29uc3QgRGljdGlvbmFyeSYpIG92ZXJyaWRlOworICAgIFJU
Q09mZmVyT3B0aW9ucygpCisgICAgICAgIDogbV9vZmZlclRvUmVjZWl2ZVZpZGVvKDApCisgICAg
ICAgICwgbV9vZmZlclRvUmVjZWl2ZUF1ZGlvKDApCisgICAgICAgICwgbV92b2ljZUFjdGl2aXR5
RGV0ZWN0aW9uKHRydWUpCisgICAgICAgICwgbV9pY2VSZXN0YXJ0KGZhbHNlKQorICAgIHsKKyAg
ICB9CisKKyAgICBpbnQ2NF90IG1fb2ZmZXJUb1JlY2VpdmVWaWRlbzsKKyAgICBpbnQ2NF90IG1f
b2ZmZXJUb1JlY2VpdmVBdWRpbzsKKyAgICBib29sIG1fdm9pY2VBY3Rpdml0eURldGVjdGlvbjsK
KyAgICBib29sIG1faWNlUmVzdGFydDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwor
I2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNlbmRpZiAvLyBSVENPZmZlckFuc3dl
ck9wdGlvbnNfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9SVENQZWVyQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmNwcAppbmRleCAxOWZiMjMwN2VlZDQzNmViYTczMGM5MmNi
MzA0ZjhmNzY2MGEyODU3Li41Yzc0Y2U4NjAyYTU4MWM2MDhmMDYzMTRkZjU2MTAzOTcwMzIzM2Nk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJD
b25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JU
Q1BlZXJDb25uZWN0aW9uLmNwcApAQCAtNDIsNyArNDIsNiBAQAogI2luY2x1ZGUgIkZyYW1lLmgi
CiAjaW5jbHVkZSAiRnJhbWVMb2FkZXIuaCIKICNpbmNsdWRlICJGcmFtZUxvYWRlckNsaWVudC5o
IgotI2luY2x1ZGUgIk1lZGlhQ29uc3RyYWludHNJbXBsLmgiCiAjaW5jbHVkZSAiTWVkaWFTdHJl
YW1FdmVudC5oIgogI2luY2x1ZGUgIlJUQ0NvbmZpZ3VyYXRpb24uaCIKICNpbmNsdWRlICJSVENE
VE1GU2VuZGVyLmgiCkBAIC01Miw2ICs1MSw3IEBACiAjaW5jbHVkZSAiUlRDSWNlQ2FuZGlkYXRl
LmgiCiAjaW5jbHVkZSAiUlRDSWNlQ2FuZGlkYXRlRGVzY3JpcHRvci5oIgogI2luY2x1ZGUgIlJU
Q0ljZUNhbmRpZGF0ZUV2ZW50LmgiCisjaW5jbHVkZSAiUlRDT2ZmZXJBbnN3ZXJPcHRpb25zLmgi
CiAjaW5jbHVkZSAiUlRDUGVlckNvbm5lY3Rpb25FcnJvckNhbGxiYWNrLmgiCiAjaW5jbHVkZSAi
UlRDU2Vzc2lvbkRlc2NyaXB0aW9uLmgiCiAjaW5jbHVkZSAiUlRDU2Vzc2lvbkRlc2NyaXB0aW9u
Q2FsbGJhY2suaCIKQEAgLTIwMyw3ICsyMDMsNyBAQCBSVENQZWVyQ29ubmVjdGlvbjo6flJUQ1Bl
ZXJDb25uZWN0aW9uKCkKICAgICAgICAgKCpzdHJlYW0pLT5yZW1vdmVPYnNlcnZlcih0aGlzKTsK
IH0KIAotdm9pZCBSVENQZWVyQ29ubmVjdGlvbjo6Y3JlYXRlT2ZmZXIoUGFzc1JlZlB0cjxSVENT
ZXNzaW9uRGVzY3JpcHRpb25DYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPFJU
Q1BlZXJDb25uZWN0aW9uRXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjaywgY29uc3QgRGljdGlv
bmFyeSYgbWVkaWFDb25zdHJhaW50cywgRXhjZXB0aW9uQ29kZSYgZWMpCit2b2lkIFJUQ1BlZXJD
b25uZWN0aW9uOjpjcmVhdGVPZmZlcihQYXNzUmVmUHRyPFJUQ1Nlc3Npb25EZXNjcmlwdGlvbkNh
bGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8UlRDUGVlckNvbm5lY3Rpb25FcnJv
ckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrLCBjb25zdCBEaWN0aW9uYXJ5JiBvZmZlck9wdGlvbnMs
IEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIGlmIChtX3NpZ25hbGluZ1N0YXRlID09IFNpZ25h
bGluZ1N0YXRlQ2xvc2VkKSB7CiAgICAgICAgIGVjID0gSU5WQUxJRF9TVEFURV9FUlI7CkBAIC0y
MTUsMTUgKzIxNSwyMCBAQCB2b2lkIFJUQ1BlZXJDb25uZWN0aW9uOjpjcmVhdGVPZmZlcihQYXNz
UmVmUHRyPFJUQ1Nlc3Npb25EZXNjcmlwdGlvbkNhbGxiYWNrPiBzdQogICAgICAgICByZXR1cm47
CiAgICAgfQogCi0gICAgUmVmUHRyPE1lZGlhQ29uc3RyYWludHM+IGNvbnN0cmFpbnRzID0gTWVk
aWFDb25zdHJhaW50c0ltcGw6OmNyZWF0ZShtZWRpYUNvbnN0cmFpbnRzLCBlYyk7Ci0gICAgaWYg
KGVjKQorICAgIFJlZlB0cjxSVENPZmZlck9wdGlvbnM+IG9wdGlvbnMgPSBSVENPZmZlck9wdGlv
bnM6OmNyZWF0ZShvZmZlck9wdGlvbnMsIGVjKTsKKyAgICBpZiAoZWMpIHsKKyAgICAgICAgY2Fs
bE9uTWFpblRocmVhZChbPV0geworICAgICAgICAgICAgUmVmUHRyPERPTUVycm9yPiBlcnJvciA9
IERPTUVycm9yOjpjcmVhdGUoIkludmFsaWQgY3JlYXRlT2ZmZXIgYXJndW1lbnQuIik7CisgICAg
ICAgICAgICBlcnJvckNhbGxiYWNrLT5oYW5kbGVFdmVudChlcnJvci5nZXQoKSk7CisgICAgICAg
IH0pOwogICAgICAgICByZXR1cm47CisgICAgfQogCiAgICAgUmVmUHRyPFJUQ1Nlc3Npb25EZXNj
cmlwdGlvblJlcXVlc3RJbXBsPiByZXF1ZXN0ID0gUlRDU2Vzc2lvbkRlc2NyaXB0aW9uUmVxdWVz
dEltcGw6OmNyZWF0ZShzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIHN1Y2Nlc3NDYWxsYmFjaywg
ZXJyb3JDYWxsYmFjayk7Ci0gICAgbV9wZWVySGFuZGxlci0+Y3JlYXRlT2ZmZXIocmVxdWVzdC5y
ZWxlYXNlKCksIGNvbnN0cmFpbnRzKTsKKyAgICBtX3BlZXJIYW5kbGVyLT5jcmVhdGVPZmZlcihy
ZXF1ZXN0LnJlbGVhc2UoKSwgb3B0aW9ucy5yZWxlYXNlKCkpOwogfQogCi12b2lkIFJUQ1BlZXJD
b25uZWN0aW9uOjpjcmVhdGVBbnN3ZXIoUGFzc1JlZlB0cjxSVENTZXNzaW9uRGVzY3JpcHRpb25D
YWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPFJUQ1BlZXJDb25uZWN0aW9uRXJy
b3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjaywgY29uc3QgRGljdGlvbmFyeSYgbWVkaWFDb25zdHJh
aW50cywgRXhjZXB0aW9uQ29kZSYgZWMpCit2b2lkIFJUQ1BlZXJDb25uZWN0aW9uOjpjcmVhdGVB
bnN3ZXIoUGFzc1JlZlB0cjxSVENTZXNzaW9uRGVzY3JpcHRpb25DYWxsYmFjaz4gc3VjY2Vzc0Nh
bGxiYWNrLCBQYXNzUmVmUHRyPFJUQ1BlZXJDb25uZWN0aW9uRXJyb3JDYWxsYmFjaz4gZXJyb3JD
YWxsYmFjaywgY29uc3QgRGljdGlvbmFyeSYgYW5zd2VyT3B0aW9ucywgRXhjZXB0aW9uQ29kZSYg
ZWMpCiB7CiAgICAgaWYgKG1fc2lnbmFsaW5nU3RhdGUgPT0gU2lnbmFsaW5nU3RhdGVDbG9zZWQp
IHsKICAgICAgICAgZWMgPSBJTlZBTElEX1NUQVRFX0VSUjsKQEAgLTIzNSwxMiArMjQwLDE3IEBA
IHZvaWQgUlRDUGVlckNvbm5lY3Rpb246OmNyZWF0ZUFuc3dlcihQYXNzUmVmUHRyPFJUQ1Nlc3Np
b25EZXNjcmlwdGlvbkNhbGxiYWNrPiBzCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBS
ZWZQdHI8TWVkaWFDb25zdHJhaW50cz4gY29uc3RyYWludHMgPSBNZWRpYUNvbnN0cmFpbnRzSW1w
bDo6Y3JlYXRlKG1lZGlhQ29uc3RyYWludHMsIGVjKTsKLSAgICBpZiAoZWMpCisgICAgUmVmUHRy
PFJUQ09mZmVyQW5zd2VyT3B0aW9ucz4gb3B0aW9ucyA9IFJUQ09mZmVyQW5zd2VyT3B0aW9uczo6
Y3JlYXRlKGFuc3dlck9wdGlvbnMsIGVjKTsKKyAgICBpZiAoZWMpIHsKKyAgICAgICAgY2FsbE9u
TWFpblRocmVhZChbPV0geworICAgICAgICAgICAgUmVmUHRyPERPTUVycm9yPiBlcnJvciA9IERP
TUVycm9yOjpjcmVhdGUoIkludmFsaWQgY3JlYXRlQW5zd2VyIGFyZ3VtZW50LiIpOworICAgICAg
ICAgICAgZXJyb3JDYWxsYmFjay0+aGFuZGxlRXZlbnQoZXJyb3IuZ2V0KCkpOworICAgICAgICB9
KTsKICAgICAgICAgcmV0dXJuOworICAgIH0KIAogICAgIFJlZlB0cjxSVENTZXNzaW9uRGVzY3Jp
cHRpb25SZXF1ZXN0SW1wbD4gcmVxdWVzdCA9IFJUQ1Nlc3Npb25EZXNjcmlwdGlvblJlcXVlc3RJ
bXBsOjpjcmVhdGUoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBzdWNjZXNzQ2FsbGJhY2ssIGVy
cm9yQ2FsbGJhY2spOwotICAgIG1fcGVlckhhbmRsZXItPmNyZWF0ZUFuc3dlcihyZXF1ZXN0LnJl
bGVhc2UoKSwgY29uc3RyYWludHMucmVsZWFzZSgpKTsKKyAgICBtX3BlZXJIYW5kbGVyLT5jcmVh
dGVBbnN3ZXIocmVxdWVzdC5yZWxlYXNlKCksIG9wdGlvbnMucmVsZWFzZSgpKTsKIH0KIAogYm9v
bCBSVENQZWVyQ29ubmVjdGlvbjo6Y2hlY2tTdGF0ZUZvckxvY2FsRGVzY3JpcHRpb24oUlRDU2Vz
c2lvbkRlc2NyaXB0aW9uKiBsb2NhbERlc2NyaXB0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5oCmluZGV4IGFmMGVj
NjUxNTNiODVlZDQxMTVlNDZlZDg5ZjBhZjBiYjVlZjE2YTQuLjY2ZWY0NTE0YTUyNDYzZWJkOTQ2
OTZjZmM1YTFlMDY4ZGMxN2U0MmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmgKQEAgLTQ4LDcgKzQ4LDYgQEAKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBNZWRpYUNvbnN0cmFpbnRzOwogY2xhc3MgTWVk
aWFTdHJlYW1UcmFjazsKIGNsYXNzIFJUQ0NvbmZpZ3VyYXRpb247CiBjbGFzcyBSVENEVE1GU2Vu
ZGVyOwpAQCAtNjQsOSArNjMsOSBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8UlRD
UGVlckNvbm5lY3Rpb24+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgY29uc3QgRGlj
dGlvbmFyeSYgcnRjQ29uZmlndXJhdGlvbiwgRXhjZXB0aW9uQ29kZSYpOwogICAgIH5SVENQZWVy
Q29ubmVjdGlvbigpOwogCi0gICAgdm9pZCBjcmVhdGVPZmZlcihQYXNzUmVmUHRyPFJUQ1Nlc3Np
b25EZXNjcmlwdGlvbkNhbGxiYWNrPiwgUGFzc1JlZlB0cjxSVENQZWVyQ29ubmVjdGlvbkVycm9y
Q2FsbGJhY2s+LCBjb25zdCBEaWN0aW9uYXJ5JiBtZWRpYUNvbnN0cmFpbnRzLCBFeGNlcHRpb25D
b2RlJik7CisgICAgdm9pZCBjcmVhdGVPZmZlcihQYXNzUmVmUHRyPFJUQ1Nlc3Npb25EZXNjcmlw
dGlvbkNhbGxiYWNrPiwgUGFzc1JlZlB0cjxSVENQZWVyQ29ubmVjdGlvbkVycm9yQ2FsbGJhY2s+
LCBjb25zdCBEaWN0aW9uYXJ5JiBvZmZlck9wdGlvbnMsIEV4Y2VwdGlvbkNvZGUmKTsKIAotICAg
IHZvaWQgY3JlYXRlQW5zd2VyKFBhc3NSZWZQdHI8UlRDU2Vzc2lvbkRlc2NyaXB0aW9uQ2FsbGJh
Y2s+LCBQYXNzUmVmUHRyPFJUQ1BlZXJDb25uZWN0aW9uRXJyb3JDYWxsYmFjaz4sIGNvbnN0IERp
Y3Rpb25hcnkmIG1lZGlhQ29uc3RyYWludHMsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2b2lkIGNy
ZWF0ZUFuc3dlcihQYXNzUmVmUHRyPFJUQ1Nlc3Npb25EZXNjcmlwdGlvbkNhbGxiYWNrPiwgUGFz
c1JlZlB0cjxSVENQZWVyQ29ubmVjdGlvbkVycm9yQ2FsbGJhY2s+LCBjb25zdCBEaWN0aW9uYXJ5
JiBhbnN3ZXJPcHRpb25zLCBFeGNlcHRpb25Db2RlJik7CiAKICAgICB2b2lkIHNldExvY2FsRGVz
Y3JpcHRpb24oUGFzc1JlZlB0cjxSVENTZXNzaW9uRGVzY3JpcHRpb24+LCBQYXNzUmVmUHRyPFZv
aWRDYWxsYmFjaz4sIFBhc3NSZWZQdHI8UlRDUGVlckNvbm5lY3Rpb25FcnJvckNhbGxiYWNrPiwg
RXhjZXB0aW9uQ29kZSYpOwogICAgIFBhc3NSZWZQdHI8UlRDU2Vzc2lvbkRlc2NyaXB0aW9uPiBs
b2NhbERlc2NyaXB0aW9uKEV4Y2VwdGlvbkNvZGUmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uaWRsIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5pZGwKaW5kZXggNjIz
MmJmZTY4NDY2NGQ0NGRjMDk4ODI1NzgwNDAzYmE3MTQ2ZGNmOS4uNzVmZWRjMjdiOWI1YThlMzc5
YWY5NzgyNmU2MjNkYzc5NzhhMDVlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5pZGwKQEAgLTM5LDkgKzM5LDkg
QEAKICAgICBFdmVudFRhcmdldCwKICAgICBJbnRlcmZhY2VOYW1lPXdlYmtpdFJUQ1BlZXJDb25u
ZWN0aW9uLAogXSBpbnRlcmZhY2UgUlRDUGVlckNvbm5lY3Rpb24gewotICAgIFtSYWlzZXNFeGNl
cHRpb25dIHZvaWQgY3JlYXRlT2ZmZXIoUlRDU2Vzc2lvbkRlc2NyaXB0aW9uQ2FsbGJhY2sgc3Vj
Y2Vzc0NhbGxiYWNrLCBbRGVmYXVsdD1VbmRlZmluZWRdIG9wdGlvbmFsIFJUQ1BlZXJDb25uZWN0
aW9uRXJyb3JDYWxsYmFjayBmYWlsdXJlQ2FsbGJhY2ssIG9wdGlvbmFsIERpY3Rpb25hcnkgbWVk
aWFDb25zdHJhaW50cyk7CisgICAgW1JhaXNlc0V4Y2VwdGlvbl0gdm9pZCBjcmVhdGVPZmZlcihS
VENTZXNzaW9uRGVzY3JpcHRpb25DYWxsYmFjayBzdWNjZXNzQ2FsbGJhY2ssIFtEZWZhdWx0PVVu
ZGVmaW5lZF0gb3B0aW9uYWwgUlRDUGVlckNvbm5lY3Rpb25FcnJvckNhbGxiYWNrIGZhaWx1cmVD
YWxsYmFjaywgb3B0aW9uYWwgRGljdGlvbmFyeSBvZmZlck9wdGlvbnMpOwogCi0gICAgW1JhaXNl
c0V4Y2VwdGlvbl0gdm9pZCBjcmVhdGVBbnN3ZXIoUlRDU2Vzc2lvbkRlc2NyaXB0aW9uQ2FsbGJh
Y2sgc3VjY2Vzc0NhbGxiYWNrLCBbRGVmYXVsdD1VbmRlZmluZWRdIG9wdGlvbmFsIFJUQ1BlZXJD
b25uZWN0aW9uRXJyb3JDYWxsYmFjayBmYWlsdXJlQ2FsbGJhY2ssIG9wdGlvbmFsIERpY3Rpb25h
cnkgbWVkaWFDb25zdHJhaW50cyk7CisgICAgW1JhaXNlc0V4Y2VwdGlvbl0gdm9pZCBjcmVhdGVB
bnN3ZXIoUlRDU2Vzc2lvbkRlc2NyaXB0aW9uQ2FsbGJhY2sgc3VjY2Vzc0NhbGxiYWNrLCBbRGVm
YXVsdD1VbmRlZmluZWRdIG9wdGlvbmFsIFJUQ1BlZXJDb25uZWN0aW9uRXJyb3JDYWxsYmFjayBm
YWlsdXJlQ2FsbGJhY2ssIG9wdGlvbmFsIERpY3Rpb25hcnkgYW5zd2VyT3B0aW9ucyk7CiAKICAg
ICBbUmFpc2VzRXhjZXB0aW9uXSB2b2lkIHNldExvY2FsRGVzY3JpcHRpb24oUlRDU2Vzc2lvbkRl
c2NyaXB0aW9uIGRlc2NyaXB0aW9uLCBbRGVmYXVsdD1VbmRlZmluZWRdIG9wdGlvbmFsIFZvaWRD
YWxsYmFjayBzdWNjZXNzQ2FsbGJhY2ssIFtEZWZhdWx0PVVuZGVmaW5lZF0gb3B0aW9uYWwgUlRD
UGVlckNvbm5lY3Rpb25FcnJvckNhbGxiYWNrIGZhaWx1cmVDYWxsYmFjayk7CiAgICAgW0dldHRl
clJhaXNlc0V4Y2VwdGlvbl0gcmVhZG9ubHkgYXR0cmlidXRlIFJUQ1Nlc3Npb25EZXNjcmlwdGlv
biBsb2NhbERlc2NyaXB0aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIuaAppbmRleCA0MjVm
OTY5ZGJhZGVhMTFhZmYwYjMxZThhZGU0MDg3YjliYWFhZDIxLi4zNDYyMWUyMTk2NDA1M2QyZTNm
NTgwZDQxMjkxNzE3YzcyNWEyOTlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIuaApAQCAt
MzksMTIgKzM5LDEzIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgTWVkaWFDb25z
dHJhaW50czsKIGNsYXNzIE1lZGlhU3RyZWFtU291cmNlOwogY2xhc3MgUlRDQ29uZmlndXJhdGlv
bjsKIGNsYXNzIFJUQ0RUTUZTZW5kZXJIYW5kbGVyOwogY2xhc3MgUlRDRGF0YUNoYW5uZWxIYW5k
bGVyOwogY2xhc3MgUlRDSWNlQ2FuZGlkYXRlRGVzY3JpcHRvcjsKK2NsYXNzIFJUQ09mZmVyT3B0
aW9uczsKK2NsYXNzIFJUQ09mZmVyQW5zd2VyT3B0aW9uczsKIGNsYXNzIFJUQ1BlZXJDb25uZWN0
aW9uSGFuZGxlcjsKIGNsYXNzIFJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckNsaWVudDsKIGNsYXNz
IFJUQ1Nlc3Npb25EZXNjcmlwdGlvbkRlc2NyaXB0b3I7CkBAIC04Miw4ICs4Myw4IEBAIHB1Ymxp
YzoKIAogICAgIHZpcnR1YWwgYm9vbCBpbml0aWFsaXplKFBhc3NSZWZQdHI8UlRDQ29uZmlndXJh
dGlvbj4pID0gMDsKIAotICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVPZmZlcihQYXNzUmVmUHRyPFJU
Q1Nlc3Npb25EZXNjcmlwdGlvblJlcXVlc3Q+LCBQYXNzUmVmUHRyPE1lZGlhQ29uc3RyYWludHM+
KSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGNyZWF0ZUFuc3dlcihQYXNzUmVmUHRyPFJUQ1Nlc3Np
b25EZXNjcmlwdGlvblJlcXVlc3Q+LCBQYXNzUmVmUHRyPE1lZGlhQ29uc3RyYWludHM+KSA9IDA7
CisgICAgdmlydHVhbCB2b2lkIGNyZWF0ZU9mZmVyKFBhc3NSZWZQdHI8UlRDU2Vzc2lvbkRlc2Ny
aXB0aW9uUmVxdWVzdD4sIFBhc3NSZWZQdHI8UlRDT2ZmZXJPcHRpb25zPikgPSAwOworICAgIHZp
cnR1YWwgdm9pZCBjcmVhdGVBbnN3ZXIoUGFzc1JlZlB0cjxSVENTZXNzaW9uRGVzY3JpcHRpb25S
ZXF1ZXN0PiwgUGFzc1JlZlB0cjxSVENPZmZlckFuc3dlck9wdGlvbnM+KSA9IDA7CiAgICAgdmly
dHVhbCB2b2lkIHNldExvY2FsRGVzY3JpcHRpb24oUGFzc1JlZlB0cjxSVENWb2lkUmVxdWVzdD4s
IFBhc3NSZWZQdHI8UlRDU2Vzc2lvbkRlc2NyaXB0aW9uRGVzY3JpcHRvcj4pID0gMDsKICAgICB2
aXJ0dWFsIHZvaWQgc2V0UmVtb3RlRGVzY3JpcHRpb24oUGFzc1JlZlB0cjxSVENWb2lkUmVxdWVz
dD4sIFBhc3NSZWZQdHI8UlRDU2Vzc2lvbkRlc2NyaXB0aW9uRGVzY3JpcHRvcj4pID0gMDsKICAg
ICB2aXJ0dWFsIFBhc3NSZWZQdHI8UlRDU2Vzc2lvbkRlc2NyaXB0aW9uRGVzY3JpcHRvcj4gbG9j
YWxEZXNjcmlwdGlvbigpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21vY2svUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyTW9jay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tb2NrL1JUQ1BlZXJDb25uZWN0aW9uSGFuZGxlck1vY2suY3BwCmluZGV4IDExMTA4
MWIyZjVhNGQxZWZhZWY5ZjhmYzk0NTgwOTY1MjFiYjEzMjEuLmVkNWRiY2M3ZDMxNDA0NDZhOGJm
YmE1YzIzZTRlNTFkNjU5YjQ1OWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21vY2svUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyTW9jay5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbW9jay9SVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJNb2NrLmNwcApAQCAtNTgs
MjggKzU4LDE1IEBAIGJvb2wgUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyTW9jazo6aW5pdGlhbGl6
ZShQYXNzUmVmUHRyPFJUQ0NvbmZpZ3VyYXRpb24+KQogICAgIHJldHVybiB0cnVlOwogfQogCi12
b2lkIFJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlck1vY2s6OmNyZWF0ZU9mZmVyKFBhc3NSZWZQdHI8
UlRDU2Vzc2lvbkRlc2NyaXB0aW9uUmVxdWVzdD4gcmVxdWVzdCwgUGFzc1JlZlB0cjxNZWRpYUNv
bnN0cmFpbnRzPiBjb25zdHJhaW50cykKK3ZvaWQgUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyTW9j
azo6Y3JlYXRlT2ZmZXIoUGFzc1JlZlB0cjxSVENTZXNzaW9uRGVzY3JpcHRpb25SZXF1ZXN0PiBy
ZXF1ZXN0LCBQYXNzUmVmUHRyPFJUQ09mZmVyT3B0aW9ucz4pCiB7Ci0gICAgU3RyaW5nIHN1Y2Nl
ZWRWYWx1ZTsKLSAgICBSZWZQdHI8U2Vzc2lvblJlcXVlc3ROb3RpZmllcj4gbm90aWZpZXI7Ci0g
ICAgaWYgKGNvbnN0cmFpbnRzLT5nZXRNYW5kYXRvcnlDb25zdHJhaW50VmFsdWUoInN1Y2NlZWQi
LCBzdWNjZWVkVmFsdWUpICYmIHN1Y2NlZWRWYWx1ZSA9PSAiZmFsc2UiKQotICAgICAgICBub3Rp
ZmllciA9IGFkb3B0UmVmKG5ldyBTZXNzaW9uUmVxdWVzdE5vdGlmaWVyKHJlcXVlc3QsIDAsIFJU
Q1BlZXJDb25uZWN0aW9uSGFuZGxlcjo6aW5jb21wYXRpYmxlQ29uc3RyYWludHNFcnJvck5hbWUo
KSkpOwotICAgIGVsc2UKLSAgICAgICAgbm90aWZpZXIgPSBhZG9wdFJlZihuZXcgU2Vzc2lvblJl
cXVlc3ROb3RpZmllcihyZXF1ZXN0LCBSVENTZXNzaW9uRGVzY3JpcHRpb25EZXNjcmlwdG9yOjpj
cmVhdGUoIm9mZmVyIiwgImxvY2FsIikpKTsKLQorICAgIFJlZlB0cjxTZXNzaW9uUmVxdWVzdE5v
dGlmaWVyPiBub3RpZmllciA9IGFkb3B0UmVmKG5ldyBTZXNzaW9uUmVxdWVzdE5vdGlmaWVyKHJl
cXVlc3QsIFJUQ1Nlc3Npb25EZXNjcmlwdGlvbkRlc2NyaXB0b3I6OmNyZWF0ZSgib2ZmZXIiLCAi
bG9jYWwiKSkpOwogICAgIG1fdGltZXJFdmVudHMuYXBwZW5kKGFkb3B0UmVmKG5ldyBUaW1lckV2
ZW50KHRoaXMsIG5vdGlmaWVyKSkpOwogfQogCi12b2lkIFJUQ1BlZXJDb25uZWN0aW9uSGFuZGxl
ck1vY2s6OmNyZWF0ZUFuc3dlcihQYXNzUmVmUHRyPFJUQ1Nlc3Npb25EZXNjcmlwdGlvblJlcXVl
c3Q+IHJlcXVlc3QsIFBhc3NSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4gY29uc3RyYWludHMpCit2
b2lkIFJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlck1vY2s6OmNyZWF0ZUFuc3dlcihQYXNzUmVmUHRy
PFJUQ1Nlc3Npb25EZXNjcmlwdGlvblJlcXVlc3Q+IHJlcXVlc3QsIFBhc3NSZWZQdHI8UlRDT2Zm
ZXJBbnN3ZXJPcHRpb25zPiBjb25zdHJhaW50cykKIHsKLSAgICBSZWZQdHI8U2Vzc2lvblJlcXVl
c3ROb3RpZmllcj4gbm90aWZpZXI7Ci0gICAgLy8gV2UgY2FuIG9ubHkgY3JlYXRlIGFuIGFuc3dl
ciBpZiB3ZSBoYXZlIGFscmVhZHkgaGFkIGFuIG9mZmVyIGFuZCB0aGUgcmVtb3RlIHNlc3Npb24g
ZGVzY3JpcHRpb24gaXMgc3RvcmVkLgotICAgIFN0cmluZyBzdWNjZWVkVmFsdWU7Ci0gICAgaWYg
KGNvbnN0cmFpbnRzLT5nZXRNYW5kYXRvcnlDb25zdHJhaW50VmFsdWUoInN1Y2NlZWQiLCBzdWNj
ZWVkVmFsdWUpICYmIHN1Y2NlZWRWYWx1ZSA9PSAiZmFsc2UiKQotICAgICAgICBub3RpZmllciA9
IGFkb3B0UmVmKG5ldyBTZXNzaW9uUmVxdWVzdE5vdGlmaWVyKHJlcXVlc3QsIDAsIFJUQ1BlZXJD
b25uZWN0aW9uSGFuZGxlcjo6aW5jb21wYXRpYmxlQ29uc3RyYWludHNFcnJvck5hbWUoKSkpOwot
ICAgIGVsc2UKLSAgICAgICAgbm90aWZpZXIgPSBhZG9wdFJlZihuZXcgU2Vzc2lvblJlcXVlc3RO
b3RpZmllcihyZXF1ZXN0LCBSVENTZXNzaW9uRGVzY3JpcHRpb25EZXNjcmlwdG9yOjpjcmVhdGUo
ImFuc3dlciIsICJsb2NhbCIpKSk7Ci0KKyAgICBSZWZQdHI8U2Vzc2lvblJlcXVlc3ROb3RpZmll
cj4gbm90aWZpZXIgPSBhZG9wdFJlZihuZXcgU2Vzc2lvblJlcXVlc3ROb3RpZmllcihyZXF1ZXN0
LCBSVENTZXNzaW9uRGVzY3JpcHRpb25EZXNjcmlwdG9yOjpjcmVhdGUoImFuc3dlciIsICJsb2Nh
bCIpKSk7CiAgICAgbV90aW1lckV2ZW50cy5hcHBlbmQoYWRvcHRSZWYobmV3IFRpbWVyRXZlbnQo
dGhpcywgbm90aWZpZXIpKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21vY2svUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyTW9jay5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbW9jay9SVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJNb2NrLmgKaW5kZXggOWI0OTM3
ZWY1MzFlZWEyN2JlOTlkNjIwMGE5OTM5NDA1MWZmZjI3NS4uMjUxNjNhZWEzMWM5Mzc4ZWE4MGQ4
YWIxMGUxNDA1Mjc1M2ZjNmQyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bW9jay9SVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJNb2NrLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbW9jay9SVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJNb2NrLmgKQEAgLTQzLDggKzQz
LDggQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBib29sIGluaXRpYWxpemUoUGFzc1JlZlB0cjxS
VENDb25maWd1cmF0aW9uPikgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlT2Zm
ZXIoUGFzc1JlZlB0cjxSVENTZXNzaW9uRGVzY3JpcHRpb25SZXF1ZXN0PiwgUGFzc1JlZlB0cjxN
ZWRpYUNvbnN0cmFpbnRzPikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGNyZWF0ZUFuc3dl
cihQYXNzUmVmUHRyPFJUQ1Nlc3Npb25EZXNjcmlwdGlvblJlcXVlc3Q+LCBQYXNzUmVmUHRyPE1l
ZGlhQ29uc3RyYWludHM+KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlT2ZmZXIo
UGFzc1JlZlB0cjxSVENTZXNzaW9uRGVzY3JpcHRpb25SZXF1ZXN0PiwgUGFzc1JlZlB0cjxSVENP
ZmZlck9wdGlvbnM+KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlQW5zd2VyKFBh
c3NSZWZQdHI8UlRDU2Vzc2lvbkRlc2NyaXB0aW9uUmVxdWVzdD4sIFBhc3NSZWZQdHI8UlRDT2Zm
ZXJBbnN3ZXJPcHRpb25zPikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHNldExvY2FsRGVz
Y3JpcHRpb24oUGFzc1JlZlB0cjxSVENWb2lkUmVxdWVzdD4sIFBhc3NSZWZQdHI8UlRDU2Vzc2lv
bkRlc2NyaXB0aW9uRGVzY3JpcHRvcj4pIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBzZXRS
ZW1vdGVEZXNjcmlwdGlvbihQYXNzUmVmUHRyPFJUQ1ZvaWRSZXF1ZXN0PiwgUGFzc1JlZlB0cjxS
VENTZXNzaW9uRGVzY3JpcHRpb25EZXNjcmlwdG9yPikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBQ
YXNzUmVmUHRyPFJUQ1Nlc3Npb25EZXNjcmlwdGlvbkRlc2NyaXB0b3I+IGxvY2FsRGVzY3JpcHRp
b24oKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91
dFRlc3RzL0NoYW5nZUxvZwppbmRleCBlNzhiNWVhY2JmY2UwNzA1OTRkNjNlYzQ1ZWMxY2Y0MWI1
YjcwMDJkLi5mN2NhNmVmYmUxMjI0ZDIzMmJkZWRlNDQ5NTlmZDM0OTk5NzFjM2UxIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTggQEAKKzIwMTQtMDItMjggIFRoaWFnbyBkZSBCYXJyb3MgTGFjZXJkYSAgPHRo
aWFnby5sYWNlcmRhQG9wZW5ib3NzYS5vcmc+CisKKyAgICAgICAgW1dlYlJUQ10gVXBkYXRpbmcg
Y3JlYXRlT2ZmZXIgYW5kIGNyZWF0ZUFuc3dlciBtZXRob2RzIHRvIG1hdGNoIFdlYlJUQyBlZGl0
b3IncyBkcmFmdCBvZiAwMS8yNy8yMDE0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMjk0ODQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBBY2NvcmRpbmcgdG8gdGhlIHNwZWMsIGNyZWF0ZU9mZmVyIGFuZCBj
cmVhdGVBbnN3ZXIgd2lsbCBubyBsb25nZXIgaGF2ZSBNZWRpYUNvbnN0cmFpbnRzIGFzIGFuIGFy
Z3VtZW50LAorICAgICAgICBpbnN0ZWFkIHRoZXkgd2lsbCBoYXZlIFJUQ09mZmVyT3B0aW9ucyBh
bmQgUlRDT2ZmZXJBbnN3ZXJPcHRpb25zLCByZXNwZWN0aXZlbHkuCisKKyAgICAgICAgKiBmYXN0
L21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLWNyZWF0ZUFuc3dlci1leHBlY3RlZC50eHQ6
CisgICAgICAgICogZmFzdC9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi1jcmVhdGVBbnN3
ZXIuaHRtbDoKKyAgICAgICAgKiBmYXN0L21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLWNy
ZWF0ZU9mZmVyLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L21lZGlhc3RyZWFtL1JUQ1Bl
ZXJDb25uZWN0aW9uLWNyZWF0ZU9mZmVyLmh0bWw6CisKIDIwMTQtMDItMjggIENvbW1pdCBRdWV1
ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxp
bmcgb3V0IHIxNjQ4NTkuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFt
L1JUQ1BlZXJDb25uZWN0aW9uLWNyZWF0ZUFuc3dlci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9mYXN0L21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLWNyZWF0ZUFuc3dlci1leHBlY3Rl
ZC50eHQKaW5kZXggOGUwMWM5MjllNTRmMTZmNjNhMDBmMDI3NWJmMDU0ZDcxMGFjYmJiYS4uNzU0
NmQ5YzAyNDE1M2M5NThlYmJiY2U1Y2Y5ZDk0MjBjZjEzMTZhZCAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi1jcmVhdGVBbnN3ZXItZXhw
ZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5l
Y3Rpb24tY3JlYXRlQW5zd2VyLWV4cGVjdGVkLnR4dApAQCAtNywxNSArNywxMCBAQCBQQVNTIHBj
LmNyZWF0ZUFuc3dlcihyZXF1ZXN0U3VjY2VlZGVkMSwgcmVxdWVzdEZhaWxlZDEpOyBkaWQgbm90
IHRocm93IGV4Y2VwdGlvbgogUEFTUyBjcmVhdGVBbnN3ZXIgcmVxdWVzdCBzdWNjZWVkZWQuCiBQ
QVNTIHBjLnNldFJlbW90ZURlc2NyaXB0aW9uKHNlc3Npb25EZXNjcmlwdGlvbiwgc2V0RGVzY3Jp
cHRpb25TdWNjZWVkZWQsIHNldERlc2NyaXB0aW9uRmFpbGVkKTsgZGlkIG5vdCB0aHJvdyBleGNl
cHRpb24uCiBQQVNTIHNldFJlbW90ZURlc2NyaXB0aW9uIHN1Y2NlZWRlZC4KLVBBU1MgcGMuY3Jl
YXRlQW5zd2VyKHJlcXVlc3RTdWNjZWVkZWQyLCByZXF1ZXN0RmFpbGVkMiwge21hbmRhdG9yeTp7
InN1Y2NlZWQiOmZhbHNlfX0pOyBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KK1BBU1MgcGMuY3Jl
YXRlQW5zd2VyKHJlcXVlc3RTdWNjZWVkZWQyLCByZXF1ZXN0RmFpbGVkMiwge30pOyB0aHJldyBl
eGNlcHRpb24gRXJyb3I6IFR5cGVNaXNtYXRjaEVycm9yOiBET00gRXhjZXB0aW9uIDE3LgogUEFT
UyBjcmVhdGVBbnN3ZXIgcmVxdWVzdCBmYWlsZWQuCi1QQVNTIGVycm9yUmVhc29uLm5hbWUgaXMg
IkluY29tcGF0aWJsZUNvbnN0cmFpbnRzRXJyb3IiCi1QQVNTIHBjLmNyZWF0ZUFuc3dlcihyZXF1
ZXN0U3VjY2VlZGVkMywgcmVxdWVzdEZhaWxlZDMpOyBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4K
LVBBU1MgY3JlYXRlQW5zd2VyIHJlcXVlc3Qgc3VjY2VlZGVkLgotUEFTUyBzZXNzaW9uRGVzY3Jp
cHRpb24udHlwZSBpcyAiYW5zd2VyIgotUEFTUyBwYy5jcmVhdGVBbnN3ZXIocmVxdWVzdFN1Y2Nl
ZWRlZDQsIHJlcXVlc3RGYWlsZWQzLCB7bWFuZGF0b3J5Onsic3VjY2VlZCI6dHJ1ZX19KTsgZGlk
IG5vdCB0aHJvdyBleGNlcHRpb24uCi1QQVNTIGNyZWF0ZUFuc3dlciByZXF1ZXN0IHN1Y2NlZWRl
ZC4KLVBBU1Mgc2Vzc2lvbkRlc2NyaXB0aW9uLnR5cGUgaXMgImFuc3dlciIKK1BBU1MgZXJyb3JS
ZWFzb24ubmFtZSBpcyAiSW52YWxpZCBjcmVhdGVBbnN3ZXIgYXJndW1lbnQuIgorUEFTUyBwYy5j
cmVhdGVBbnN3ZXIocmVxdWVzdFN1Y2NlZWRlZDMsIHJlcXVlc3RGYWlsZWQxLCB7cmVxdWVzdElk
ZW50aXR5OiJpZmNvbmZpZ3VyZWQifSk7IGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgogUEFTUyBz
dWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCiBURVNUIENPTVBMRVRFCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLWNyZWF0ZUFuc3dl
ci5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi1j
cmVhdGVBbnN3ZXIuaHRtbAppbmRleCA0NWY5MTY5MWM4NzlmZDA5MTNhYmYyYmI1NjhjMzU4NGM5
YjY2YTA1Li4zZGNkZjQxOGFjOWJmMTAxMTRlZjQzYzNkOTllNTdkM2JmOGIxYWY0IDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLWNyZWF0
ZUFuc3dlci5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vUlRDUGVlckNv
bm5lY3Rpb24tY3JlYXRlQW5zd2VyLmh0bWwKQEAgLTksNyArOSw3IEBACiAKICAgICAgICAgICAg
IHZhciBwYyA9IG51bGw7CiAKLSAgICAgICAgICAgIGZ1bmN0aW9uIHJlcXVlc3RTdWNjZWVkZWQ0
KHNkKQorICAgICAgICAgICAgZnVuY3Rpb24gcmVxdWVzdFN1Y2NlZWRlZDUoc2QpCiAgICAgICAg
ICAgICB7CiAgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgnY3JlYXRlQW5zd2VyIHJlcXVlc3Qg
c3VjY2VlZGVkLicpOwogCkBAIC0xOSwyMSArMTksMjUgQEAKICAgICAgICAgICAgICAgICBmaW5p
c2hKU1Rlc3QoKTsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgZnVuY3Rpb24gcmVxdWVz
dEZhaWxlZDMocmVhc29uKQorICAgICAgICAgICAgZnVuY3Rpb24gcmVxdWVzdFN1Y2NlZWRlZDQo
c2QpCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgnY3JlYXRlQW5z
d2VyIHJlcXVlc3QgZmFpbGVkLicpOworICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoJ2NyZWF0
ZUFuc3dlciByZXF1ZXN0IHN1Y2NlZWRlZC4nKTsKIAotICAgICAgICAgICAgICAgIGZpbmlzaEpT
VGVzdCgpOworICAgICAgICAgICAgICAgIHNlc3Npb25EZXNjcmlwdGlvbiA9IHNkOworICAgICAg
ICAgICAgICAgIHNob3VsZEJlKCdzZXNzaW9uRGVzY3JpcHRpb24udHlwZScsICciYW5zd2VyIicp
OworCisgICAgICAgICAgICAgICAgc2hvdWxkTm90VGhyb3coJ3BjLmNyZWF0ZUFuc3dlcihyZXF1
ZXN0U3VjY2VlZGVkNSwgcmVxdWVzdEZhaWxlZDEsIHtyZXF1ZXN0SWRlbnRpdHk6Im5vIn0pOycp
OwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBmdW5jdGlvbiByZXF1ZXN0U3VjY2VlZGVk
MyhzZCkKICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKICAg
ICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCdjcmVhdGVBbnN3ZXIgcmVxdWVzdCBzdWNjZWVkZWQu
Jyk7CiAKICAgICAgICAgICAgICAgICBzZXNzaW9uRGVzY3JpcHRpb24gPSBzZDsKICAgICAgICAg
ICAgICAgICBzaG91bGRCZSgnc2Vzc2lvbkRlc2NyaXB0aW9uLnR5cGUnLCAnImFuc3dlciInKTsK
IAotICAgICAgICAgICAgICAgIHNob3VsZE5vdFRocm93KCdwYy5jcmVhdGVBbnN3ZXIocmVxdWVz
dFN1Y2NlZWRlZDQsIHJlcXVlc3RGYWlsZWQzLCB7bWFuZGF0b3J5Onsic3VjY2VlZCI6dHJ1ZX19
KTsnKTsKKyAgICAgICAgICAgICAgICBzaG91bGROb3RUaHJvdygncGMuY3JlYXRlQW5zd2VyKHJl
cXVlc3RTdWNjZWVkZWQ0LCByZXF1ZXN0RmFpbGVkMSwge3JlcXVlc3RJZGVudGl0eToieWVzIn0p
OycpOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBmdW5jdGlvbiByZXF1ZXN0RmFpbGVk
MihyZWFzb24pCkBAIC00MSw5ICs0NSw4IEBACiAgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgn
Y3JlYXRlQW5zd2VyIHJlcXVlc3QgZmFpbGVkLicpOwogCiAgICAgICAgICAgICAgICAgZXJyb3JS
ZWFzb24gPSByZWFzb247Ci0gICAgICAgICAgICAgICAgc2hvdWxkQmUoJ2Vycm9yUmVhc29uLm5h
bWUnLCAnIkluY29tcGF0aWJsZUNvbnN0cmFpbnRzRXJyb3IiJyk7Ci0KLSAgICAgICAgICAgICAg
ICBzaG91bGROb3RUaHJvdygncGMuY3JlYXRlQW5zd2VyKHJlcXVlc3RTdWNjZWVkZWQzLCByZXF1
ZXN0RmFpbGVkMyk7Jyk7CisgICAgICAgICAgICAgICAgc2hvdWxkQmUoJ2Vycm9yUmVhc29uLm5h
bWUnLCAnIkludmFsaWQgY3JlYXRlQW5zd2VyIGFyZ3VtZW50LiInKTsKKyAgICAgICAgICAgICAg
ICBzaG91bGROb3RUaHJvdygncGMuY3JlYXRlQW5zd2VyKHJlcXVlc3RTdWNjZWVkZWQzLCByZXF1
ZXN0RmFpbGVkMSwge3JlcXVlc3RJZGVudGl0eToiaWZjb25maWd1cmVkIn0pOycpOwogICAgICAg
ICAgICAgfQogCiAgICAgICAgICAgICBmdW5jdGlvbiByZXF1ZXN0U3VjY2VlZGVkMigpCkBAIC03
OCw3ICs4MSw3IEBACiAgICAgICAgICAgICBmdW5jdGlvbiBzZXREZXNjcmlwdGlvblN1Y2NlZWRl
ZCgpCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgnc2V0UmVtb3Rl
RGVzY3JpcHRpb24gc3VjY2VlZGVkLicpOwotICAgICAgICAgICAgICAgIHNob3VsZE5vdFRocm93
KCdwYy5jcmVhdGVBbnN3ZXIocmVxdWVzdFN1Y2NlZWRlZDIsIHJlcXVlc3RGYWlsZWQyLCB7bWFu
ZGF0b3J5Onsic3VjY2VlZCI6ZmFsc2V9fSk7Jyk7CisgICAgICAgICAgICAgICAgc2hvdWxkVGhy
b3coJ3BjLmNyZWF0ZUFuc3dlcihyZXF1ZXN0U3VjY2VlZGVkMiwgcmVxdWVzdEZhaWxlZDIsIHt9
KTsnKTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgcGMgPSBuZXcgd2Via2l0UlRDUGVl
ckNvbm5lY3Rpb24oe2ljZVNlcnZlcnM6W3t1cmxzOidzdHVuOmZvby5jb20nfV19KTsKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24tY3Jl
YXRlT2ZmZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9SVENQ
ZWVyQ29ubmVjdGlvbi1jcmVhdGVPZmZlci1leHBlY3RlZC50eHQKaW5kZXggNTVhZWVkODlkNmI2
YTg5NWU4NDUxNTJlNTJkZjc0ZGY3NzMyODhiZS4uZmI3MGJiOTYyMTJiYzg4Y2ZlYTU4YmM5YTc1
YmQ5ODNkZTkzOTI0NyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9S
VENQZWVyQ29ubmVjdGlvbi1jcmVhdGVPZmZlci1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVz
dHMvZmFzdC9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi1jcmVhdGVPZmZlci1leHBlY3Rl
ZC50eHQKQEAgLTMsMTMgKzMsMjggQEAgVGVzdHMgUlRDUGVlckNvbm5lY3Rpb24gY3JlYXRlT2Zm
ZXIuCiBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2Vz
LCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCiAKIAotUEFTUyBwYy5jcmVhdGVPZmZlcihy
ZXF1ZXN0U3VjY2VlZGVkMSwgcmVxdWVzdEZhaWxlZDEsIHttYW5kYXRvcnk6eyJzdWNjZWVkIjp0
cnVlfX0pOyBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KK1BBU1MgcGMuY3JlYXRlT2ZmZXIocmVx
dWVzdFN1Y2NlZWRlZDEsIHJlcXVlc3RGYWlsZWQxKTsgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24u
CiBQQVNTIGNyZWF0ZU9mZmVyIHJlcXVlc3Qgc3VjY2VlZGVkLgogUEFTUyBzZXNzaW9uRGVzY3Jp
cHRpb24udHlwZSBpcyAib2ZmZXIiCi1QQVNTIHBjLmNyZWF0ZU9mZmVyKHJlcXVlc3RTdWNjZWVk
ZWQyLCByZXF1ZXN0RmFpbGVkMiwge21hbmRhdG9yeTp7InN1Y2NlZWQiOmZhbHNlfX0pOyBkaWQg
bm90IHRocm93IGV4Y2VwdGlvbi4KK1BBU1MgcGMuY3JlYXRlT2ZmZXIocmVxdWVzdFN1Y2NlZWRl
ZDIsIHJlcXVlc3RGYWlsZWQyLCB7fSk7IHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogVHlwZU1pc21h
dGNoRXJyb3I6IERPTSBFeGNlcHRpb24gMTcuCiBQQVNTIGNyZWF0ZU9mZmVyIHJlcXVlc3QgZmFp
bGVkLgotUEFTUyBlcnJvclJlYXNvbi5uYW1lIGlzICJJbmNvbXBhdGlibGVDb25zdHJhaW50c0Vy
cm9yIgotUEFTUyBwYy5jcmVhdGVPZmZlcihyZXF1ZXN0U3VjY2VlZGVkMywgcmVxdWVzdEZhaWxl
ZDEpOyBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KK1BBU1MgZXJyb3JSZWFzb24ubmFtZSBpcyAi
SW52YWxpZCBjcmVhdGVPZmZlciBhcmd1bWVudC4iCitQQVNTIHBjLmNyZWF0ZU9mZmVyKHJlcXVl
c3RTdWNjZWVkZWQyLCByZXF1ZXN0RmFpbGVkMywge3JlcXVlc3RJZGVudGl0eToieWVzIiwgb2Zm
ZXJUb1JlY2VpdmVBdWRpbzowfSk7IHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogVHlwZU1pc21hdGNo
RXJyb3I6IERPTSBFeGNlcHRpb24gMTcuCitQQVNTIGNyZWF0ZU9mZmVyIHJlcXVlc3QgZmFpbGVk
LgorUEFTUyBlcnJvclJlYXNvbi5uYW1lIGlzICJJbnZhbGlkIGNyZWF0ZU9mZmVyIGFyZ3VtZW50
LiIKK1BBU1MgcGMuY3JlYXRlT2ZmZXIocmVxdWVzdFN1Y2NlZWRlZDIsIHJlcXVlc3RGYWlsZWQ0
LCB7cmVxdWVzdElkZW50aXR5OiJ5ZXMiLCBvZmZlclRvUmVjZWl2ZVZpZGVvOjB9KTsgdGhyZXcg
ZXhjZXB0aW9uIEVycm9yOiBUeXBlTWlzbWF0Y2hFcnJvcjogRE9NIEV4Y2VwdGlvbiAxNy4KK1BB
U1MgY3JlYXRlT2ZmZXIgcmVxdWVzdCBmYWlsZWQuCitQQVNTIGVycm9yUmVhc29uLm5hbWUgaXMg
IkludmFsaWQgY3JlYXRlT2ZmZXIgYXJndW1lbnQuIgorUEFTUyBwYy5jcmVhdGVPZmZlcihyZXF1
ZXN0U3VjY2VlZGVkMiwgcmVxdWVzdEZhaWxlZDUsIHtvZmZlclRvUmVjZWl2ZVZpZGVvOjAsIG9m
ZmVyVG9SZWNlaXZlQXVkaW86MH0pOyB0aHJldyBleGNlcHRpb24gRXJyb3I6IFR5cGVNaXNtYXRj
aEVycm9yOiBET00gRXhjZXB0aW9uIDE3LgorUEFTUyBjcmVhdGVPZmZlciByZXF1ZXN0IGZhaWxl
ZC4KK1BBU1MgZXJyb3JSZWFzb24ubmFtZSBpcyAiSW52YWxpZCBjcmVhdGVPZmZlciBhcmd1bWVu
dC4iCitQQVNTIHBjLmNyZWF0ZU9mZmVyKHJlcXVlc3RTdWNjZWVkZWQyLCByZXF1ZXN0RmFpbGVk
Niwge3JlcXVlc3RJZGVudGl0eToieWVzIiwgb2ZmZXJUb1JlY2VpdmVWaWRlbzoiIiwgb2ZmZXJU
b1JlY2VpdmVBdWRpbzowfSk7IHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogVHlwZU1pc21hdGNoRXJy
b3I6IERPTSBFeGNlcHRpb24gMTcuCitQQVNTIGNyZWF0ZU9mZmVyIHJlcXVlc3QgZmFpbGVkLgor
UEFTUyBlcnJvclJlYXNvbi5uYW1lIGlzICJJbnZhbGlkIGNyZWF0ZU9mZmVyIGFyZ3VtZW50LiIK
K1BBU1MgcGMuY3JlYXRlT2ZmZXIocmVxdWVzdFN1Y2NlZWRlZDIsIHJlcXVlc3RGYWlsZWQ3LCB7
cmVxdWVzdElkZW50aXR5OiJ5ZXMiLCBvZmZlclRvUmVjZWl2ZVZpZGVvOjAsIG9mZmVyVG9SZWNl
aXZlQXVkaW86IiJ9KTsgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBUeXBlTWlzbWF0Y2hFcnJvcjog
RE9NIEV4Y2VwdGlvbiAxNy4KK1BBU1MgY3JlYXRlT2ZmZXIgcmVxdWVzdCBmYWlsZWQuCitQQVNT
IGVycm9yUmVhc29uLm5hbWUgaXMgIkludmFsaWQgY3JlYXRlT2ZmZXIgYXJndW1lbnQuIgorUEFT
UyBwYy5jcmVhdGVPZmZlcihyZXF1ZXN0U3VjY2VlZGVkMywgcmVxdWVzdEZhaWxlZDEsIHtyZXF1
ZXN0SWRlbnRpdHk6InllcyIsIG9mZmVyVG9SZWNlaXZlVmlkZW86MCwgb2ZmZXJUb1JlY2VpdmVB
dWRpbzowfSk7IGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgogUEFTUyBjcmVhdGVPZmZlciByZXF1
ZXN0IHN1Y2NlZWRlZC4KIFBBU1Mgc2Vzc2lvbkRlc2NyaXB0aW9uLnR5cGUgaXMgIm9mZmVyIgog
UEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZmFzdC9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi1jcmVhdGVPZmZlci5odG1sIGIvTGF5
b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi1jcmVhdGVPZmZlci5o
dG1sCmluZGV4IGRlNGNkNTI3N2IyZGJjNWNjNjllNTliMDU1OTY4MDU3NWViOTU2NWQuLjA0N2Ni
ODlhOTcxNzAwM2JiMzNlYmE3YmJmZjZmMjMyOWIyZTAzYjQgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2Zhc3QvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24tY3JlYXRlT2ZmZXIuaHRtbAor
KysgYi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLWNyZWF0
ZU9mZmVyLmh0bWwKQEAgLTE4LDE0ICsxOCw2NCBAQAogICAgICAgICAgICAgICAgIGZpbmlzaEpT
VGVzdCgpOwogICAgICAgICAgICAgfQogCisgICAgICAgICAgICBmdW5jdGlvbiByZXF1ZXN0RmFp
bGVkNyhyZWFzb24pCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgn
Y3JlYXRlT2ZmZXIgcmVxdWVzdCBmYWlsZWQuJyk7CisKKyAgICAgICAgICAgICAgICBlcnJvclJl
YXNvbiA9IHJlYXNvbjsKKyAgICAgICAgICAgICAgICBzaG91bGRCZSgnZXJyb3JSZWFzb24ubmFt
ZScsICciSW52YWxpZCBjcmVhdGVPZmZlciBhcmd1bWVudC4iJyk7CisKKyAgICAgICAgICAgICAg
ICBzaG91bGROb3RUaHJvdygncGMuY3JlYXRlT2ZmZXIocmVxdWVzdFN1Y2NlZWRlZDMsIHJlcXVl
c3RGYWlsZWQxLCB7cmVxdWVzdElkZW50aXR5OiJ5ZXMiLCBvZmZlclRvUmVjZWl2ZVZpZGVvOjAs
IG9mZmVyVG9SZWNlaXZlQXVkaW86MH0pOycpOworICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICBmdW5jdGlvbiByZXF1ZXN0RmFpbGVkNihyZWFzb24pCisgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgdGVzdFBhc3NlZCgnY3JlYXRlT2ZmZXIgcmVxdWVzdCBmYWlsZWQuJyk7CisKKyAg
ICAgICAgICAgICAgICBlcnJvclJlYXNvbiA9IHJlYXNvbjsKKyAgICAgICAgICAgICAgICBzaG91
bGRCZSgnZXJyb3JSZWFzb24ubmFtZScsICciSW52YWxpZCBjcmVhdGVPZmZlciBhcmd1bWVudC4i
Jyk7CisKKyAgICAgICAgICAgICAgICBzaG91bGRUaHJvdygncGMuY3JlYXRlT2ZmZXIocmVxdWVz
dFN1Y2NlZWRlZDIsIHJlcXVlc3RGYWlsZWQ3LCB7cmVxdWVzdElkZW50aXR5OiJ5ZXMiLCBvZmZl
clRvUmVjZWl2ZVZpZGVvOjAsIG9mZmVyVG9SZWNlaXZlQXVkaW86IiJ9KTsnKTsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgZnVuY3Rpb24gcmVxdWVzdEZhaWxlZDUocmVhc29uKQorICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoJ2NyZWF0ZU9mZmVyIHJlcXVl
c3QgZmFpbGVkLicpOworCisgICAgICAgICAgICAgICAgZXJyb3JSZWFzb24gPSByZWFzb247Cisg
ICAgICAgICAgICAgICAgc2hvdWxkQmUoJ2Vycm9yUmVhc29uLm5hbWUnLCAnIkludmFsaWQgY3Jl
YXRlT2ZmZXIgYXJndW1lbnQuIicpOworCisgICAgICAgICAgICAgICAgc2hvdWxkVGhyb3coJ3Bj
LmNyZWF0ZU9mZmVyKHJlcXVlc3RTdWNjZWVkZWQyLCByZXF1ZXN0RmFpbGVkNiwge3JlcXVlc3RJ
ZGVudGl0eToieWVzIiwgb2ZmZXJUb1JlY2VpdmVWaWRlbzoiIiwgb2ZmZXJUb1JlY2VpdmVBdWRp
bzowfSk7Jyk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIHJlcXVlc3RG
YWlsZWQ0KHJlYXNvbikKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2Vk
KCdjcmVhdGVPZmZlciByZXF1ZXN0IGZhaWxlZC4nKTsKKworICAgICAgICAgICAgICAgIGVycm9y
UmVhc29uID0gcmVhc29uOworICAgICAgICAgICAgICAgIHNob3VsZEJlKCdlcnJvclJlYXNvbi5u
YW1lJywgJyJJbnZhbGlkIGNyZWF0ZU9mZmVyIGFyZ3VtZW50LiInKTsKKworICAgICAgICAgICAg
ICAgIHNob3VsZFRocm93KCdwYy5jcmVhdGVPZmZlcihyZXF1ZXN0U3VjY2VlZGVkMiwgcmVxdWVz
dEZhaWxlZDUsIHtvZmZlclRvUmVjZWl2ZVZpZGVvOjAsIG9mZmVyVG9SZWNlaXZlQXVkaW86MH0p
OycpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmdW5jdGlvbiByZXF1ZXN0RmFpbGVk
MyhyZWFzb24pCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgnY3Jl
YXRlT2ZmZXIgcmVxdWVzdCBmYWlsZWQuJyk7CisKKyAgICAgICAgICAgICAgICBlcnJvclJlYXNv
biA9IHJlYXNvbjsKKyAgICAgICAgICAgICAgICBzaG91bGRCZSgnZXJyb3JSZWFzb24ubmFtZScs
ICciSW52YWxpZCBjcmVhdGVPZmZlciBhcmd1bWVudC4iJyk7CisKKyAgICAgICAgICAgICAgICBz
aG91bGRUaHJvdygncGMuY3JlYXRlT2ZmZXIocmVxdWVzdFN1Y2NlZWRlZDIsIHJlcXVlc3RGYWls
ZWQ0LCB7cmVxdWVzdElkZW50aXR5OiJ5ZXMiLCBvZmZlclRvUmVjZWl2ZVZpZGVvOjB9KTsnKTsK
KyAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgZnVuY3Rpb24gcmVxdWVzdEZhaWxlZDIocmVh
c29uKQogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoJ2NyZWF0ZU9m
ZmVyIHJlcXVlc3QgZmFpbGVkLicpOwogCiAgICAgICAgICAgICAgICAgZXJyb3JSZWFzb24gPSBy
ZWFzb247Ci0gICAgICAgICAgICAgICAgc2hvdWxkQmUoJ2Vycm9yUmVhc29uLm5hbWUnLCAnIklu
Y29tcGF0aWJsZUNvbnN0cmFpbnRzRXJyb3IiJyk7CisgICAgICAgICAgICAgICAgc2hvdWxkQmUo
J2Vycm9yUmVhc29uLm5hbWUnLCAnIkludmFsaWQgY3JlYXRlT2ZmZXIgYXJndW1lbnQuIicpOwog
Ci0gICAgICAgICAgICAgICAgc2hvdWxkTm90VGhyb3coJ3BjLmNyZWF0ZU9mZmVyKHJlcXVlc3RT
dWNjZWVkZWQzLCByZXF1ZXN0RmFpbGVkMSk7Jyk7CisgICAgICAgICAgICAgICAgc2hvdWxkVGhy
b3coJ3BjLmNyZWF0ZU9mZmVyKHJlcXVlc3RTdWNjZWVkZWQyLCByZXF1ZXN0RmFpbGVkMywge3Jl
cXVlc3RJZGVudGl0eToieWVzIiwgb2ZmZXJUb1JlY2VpdmVBdWRpbzowfSk7Jyk7CiAgICAgICAg
ICAgICB9CiAKICAgICAgICAgICAgIGZ1bmN0aW9uIHJlcXVlc3RTdWNjZWVkZWQyKHNkKQpAQCAt
NDcsMTEgKzk3LDExIEBACiAgICAgICAgICAgICAgICAgc2Vzc2lvbkRlc2NyaXB0aW9uID0gc2Q7
CiAgICAgICAgICAgICAgICAgc2hvdWxkQmUoJ3Nlc3Npb25EZXNjcmlwdGlvbi50eXBlJywgJyJv
ZmZlciInKTsKIAotICAgICAgICAgICAgICAgIHNob3VsZE5vdFRocm93KCdwYy5jcmVhdGVPZmZl
cihyZXF1ZXN0U3VjY2VlZGVkMiwgcmVxdWVzdEZhaWxlZDIsIHttYW5kYXRvcnk6eyJzdWNjZWVk
IjpmYWxzZX19KTsnKTsKKyAgICAgICAgICAgICAgICBzaG91bGRUaHJvdygncGMuY3JlYXRlT2Zm
ZXIocmVxdWVzdFN1Y2NlZWRlZDIsIHJlcXVlc3RGYWlsZWQyLCB7fSk7Jyk7CiAgICAgICAgICAg
ICB9CiAKICAgICAgICAgICAgIHBjID0gbmV3IHdlYmtpdFJUQ1BlZXJDb25uZWN0aW9uKHtpY2VT
ZXJ2ZXJzOlt7dXJsczonc3R1bjpmb28uY29tJ31dfSk7Ci0gICAgICAgICAgICBzaG91bGROb3RU
aHJvdygncGMuY3JlYXRlT2ZmZXIocmVxdWVzdFN1Y2NlZWRlZDEsIHJlcXVlc3RGYWlsZWQxLCB7
bWFuZGF0b3J5Onsic3VjY2VlZCI6dHJ1ZX19KTsnKTsKKyAgICAgICAgICAgIHNob3VsZE5vdFRo
cm93KCdwYy5jcmVhdGVPZmZlcihyZXF1ZXN0U3VjY2VlZGVkMSwgcmVxdWVzdEZhaWxlZDEpOycp
OwogCiAgICAgICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CiAgICAgICAgICAg
ICB3aW5kb3cuc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>225984</attachid>
            <date>2014-03-06 06:20:01 -0800</date>
            <delta_ts>2014-03-06 15:35:40 -0800</delta_ts>
            <desc>Requested Changes</desc>
            <filename>bug-129484-20140306111959.patch</filename>
            <type>text/plain</type>
            <size>35641</size>
            <attacher name="Thiago de Barros Lacerda">thiago.lacerda</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTY1MTg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDYxNDFmM2Q2MjU2MmNm
NzE2YWQxMGFkODMyNTQ1M2YxNDU3OGM0OC4uOGYzYzU5NDhjYWY2OWNkZTljZmZlNGNkMDVkZjA4
MDUzMDQ2YjQ0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDE0LTAzLTA2ICBUaGlh
Z28gZGUgQmFycm9zIExhY2VyZGEgIDx0aGlhZ28ubGFjZXJkYUBvcGVuYm9zc2Eub3JnPgorCisg
ICAgICAgIFtXZWJSVENdIFVwZGF0aW5nIGNyZWF0ZU9mZmVyIGFuZCBjcmVhdGVBbnN3ZXIgbWV0
aG9kcyB0byBtYXRjaCBXZWJSVEMgZWRpdG9yJ3MgZHJhZnQgb2YgMDEvMjcvMjAxNAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI5NDg0CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgRXJpYyBDYXJsc29uLgorCisgICAgICAgIEFjY29yZGluZyB0byB0aGUg
c3BlYywgY3JlYXRlT2ZmZXIgYW5kIGNyZWF0ZUFuc3dlciB3aWxsIG5vIGxvbmdlciBoYXZlIE1l
ZGlhQ29uc3RyYWludHMgYXMgYW4gYXJndW1lbnQsCisgICAgICAgIGluc3RlYWQgdGhleSB3aWxs
IGhhdmUgUlRDT2ZmZXJPcHRpb25zIGFuZCBSVENPZmZlckFuc3dlck9wdGlvbnMsIHJlc3BlY3Rp
dmVseS4KKworICAgICAgICBFeGlzdGluZyB0ZXN0cyB3ZXJlIHVwZGF0ZWQuCisKKyAgICAgICAg
KiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAg
ICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDT2ZmZXJBbnN3ZXJPcHRpb25zLmNwcDogQWRkZWQu
CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENPZmZlckFuc3dlck9wdGlvbnMuaDog
QWRkZWQuCisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSVENQZWVyQ29ubmVjdGlvbjo6Y3JlYXRlT2ZmZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6UlRDUGVlckNvbm5lY3Rpb246OmNyZWF0ZUFuc3dlcik6CisgICAg
ICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5oOgorICAgICAgICAq
IE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uaWRsOgorICAgICAgICAqIHBs
YXRmb3JtL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uSGFuZGxlci5oOgorICAgICAgICAq
IHBsYXRmb3JtL21vY2svUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyTW9jay5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJNb2NrOjpjcmVhdGVPZmZlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJNb2NrOjpjcmVhdGVBbnN3
ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL21vY2svUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyTW9j
ay5oOgorCiAyMDE0LTAzLTA2ICBHdXJwcmVldCBLYXVyICA8ay5ndXJwcmVldEBzYW1zdW5nLmNv
bT4KIAogICAgICAgICBSRUdSRVNTSU9OIChyMTU4MjU0KTogUnViYmVyLWJhbmRpbmcgYXQgQmlu
ZyBpbWFnZSBzZWFyY2ggY2F1c2VzIHRoZSB0b29sYmFyIHRvIG1vdmUgdXAgYW5kIGF3YXkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUv
Q01ha2VMaXN0cy50eHQKaW5kZXggMDI2MmFmMzhlZDM0MTZjZTcxZGQ5ZDRmZjZkODNlMjI4NzI0
OTk3YS4uMmZhYzFhOTQ2ZmQxZmRmMTFhZjAyNTZmZmFiMmQ4MzllOWE3ZTgyNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01h
a2VMaXN0cy50eHQKQEAgLTg1OSw2ICs4NTksNyBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAgICAg
TW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbEV2ZW50LmNwcAogICAgIE1vZHVsZXMv
bWVkaWFzdHJlYW0vUlRDSWNlQ2FuZGlkYXRlLmNwcAogICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0v
UlRDSWNlQ2FuZGlkYXRlRXZlbnQuY3BwCisgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENPZmZl
ckFuc3dlck9wdGlvbnMuY3BwCiAgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVj
dGlvbi5jcHAKICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1Nlc3Npb25EZXNjcmlwdGlvbi5j
cHAKICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1Nlc3Npb25EZXNjcmlwdGlvblJlcXVlc3RJ
bXBsLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbSBi
L1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5kZXggMDIxY2ViZDUzY2U5OWFj
YWIzZTBmNWRkOWI4YTcxMDE1YTZiMDdlNi4uNDcyNDAzM2I0OTYzNjY1ZTJkNjViMzk0NWY3ZWFi
YWVjMzgwYTVjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5h
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCkBAIC0xOTQ4LDYgKzE5
NDgsOCBAQCB3ZWJjb3JlX21vZHVsZXNfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9SVENJY2VDYW5kaWRhdGUuaCBcCiAJU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9SVENJY2VDYW5kaWRhdGVFdmVudC5jcHAgXAogCVNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDSWNlQ2FuZGlkYXRlRXZlbnQuaCBcCisJU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENPZmZlckFuc3dlck9wdGlvbnMuY3BwIFwK
KwlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ09mZmVyQW5zd2VyT3B0aW9u
cy5oIFwKIAlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0
aW9uLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29u
bmVjdGlvbi5oIFwKIAlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1Nlc3Np
b25EZXNjcmlwdGlvbi5jcHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9SVENPZmZlckFuc3dlck9wdGlvbnMuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9SVENPZmZlckFuc3dlck9wdGlvbnMuY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRm
ODljZDM3ZWE2MmNjMjY5OTJhZWY1MmE5MDczMThlOTBmMDg2NTkKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ09mZmVyQW5zd2VyT3B0aW9u
cy5jcHAKQEAgLTAsMCArMSwxMTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKwor
I2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisjaW5jbHVkZSAiUlRDT2ZmZXJBbnN3ZXJPcHRpb25z
LmgiCisKKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitzdGF0aWMgYm9vbCB2YWxpZGF0ZVJlcXVlc3RJZGVudGl0eShjb25zdCBTdHJpbmcm
IHZhbHVlKQoreworICAgIHJldHVybiB2YWx1ZSA9PSAieWVzIiB8fCB2YWx1ZSA9PSAibm8iIHx8
IHZhbHVlID09ICJpZmNvbmZpZ3VyZWQiOworfQorCitQYXNzUmVmUHRyPFJUQ09mZmVyQW5zd2Vy
T3B0aW9ucz4gUlRDT2ZmZXJBbnN3ZXJPcHRpb25zOjpjcmVhdGUoY29uc3QgRGljdGlvbmFyeSYg
b3B0aW9ucywgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgUmVmUHRyPFJUQ09mZmVyQW5zd2Vy
T3B0aW9ucz4gb2ZmZXJBbnN3ZXJPcHRpb25zID0gYWRvcHRSZWYobmV3IFJUQ09mZmVyQW5zd2Vy
T3B0aW9ucygpKTsKKyAgICBTdHJpbmcgcmVxdWVzdElkZW50aXR5OworICAgIGlmICghb2ZmZXJB
bnN3ZXJPcHRpb25zLT5pbml0aWFsaXplKG9wdGlvbnMpKSB7CisgICAgICAgIC8vIEZJWE1FOiBo
dHRwczovL3dlYmtpdC5vcmcvYi8xMjk4MDAKKyAgICAgICAgLy8gQWNjb3JkaW5nIHRvIHRoZSBz
cGVjLCB0aGUgZXJyb3IgaXMgZ29pbmcgdG8gYmUgZGVmaW5lZCB5ZXQsIHNvIGxldCdzIHVzZSBU
WVBFX01JU01BVENIX0VSUiBmb3Igbm93LgorICAgICAgICBlYyA9IFRZUEVfTUlTTUFUQ0hfRVJS
OworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKKyAgICByZXR1cm4gb2ZmZXJBbnN3
ZXJPcHRpb25zLnJlbGVhc2UoKTsKK30KKworYm9vbCBSVENPZmZlckFuc3dlck9wdGlvbnM6Omlu
aXRpYWxpemUoY29uc3QgRGljdGlvbmFyeSYgb3B0aW9ucykKK3sKKyAgICBTdHJpbmcgcmVxdWVz
dElkZW50aXR5OworICAgIGlmICghb3B0aW9ucy5pc1VuZGVmaW5lZE9yTnVsbCgpICYmICghb3B0
aW9ucy5nZXQoInJlcXVlc3RJZGVudGl0eSIsIHJlcXVlc3RJZGVudGl0eSkgfHwgcmVxdWVzdElk
ZW50aXR5LmlzRW1wdHkoKSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmICh2YWxp
ZGF0ZVJlcXVlc3RJZGVudGl0eShyZXF1ZXN0SWRlbnRpdHkpKQorICAgICAgICBtX3JlcXVlc3RJ
ZGVudGl0eSA9IHJlcXVlc3RJZGVudGl0eTsKKworICAgIHJldHVybiB0cnVlOworfQorCitQYXNz
UmVmUHRyPFJUQ09mZmVyT3B0aW9ucz4gUlRDT2ZmZXJPcHRpb25zOjpjcmVhdGUoY29uc3QgRGlj
dGlvbmFyeSYgb3B0aW9ucywgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgUmVmUHRyPFJUQ09m
ZmVyT3B0aW9ucz4gb2ZmZXJPcHRpb25zID0gYWRvcHRSZWYobmV3IFJUQ09mZmVyT3B0aW9ucygp
KTsKKyAgICBpZiAoIW9mZmVyT3B0aW9ucy0+aW5pdGlhbGl6ZShvcHRpb25zKSkgeworICAgICAg
ICAvLyBGSVhNRTogaHR0cHM6Ly93ZWJraXQub3JnL2IvMTI5ODAwCisgICAgICAgIC8vIEFjY29y
ZGluZyB0byB0aGUgc3BlYywgdGhlIGVycm9yIGlzIGdvaW5nIHRvIGJlIGRlZmluZWQgeWV0LCBz
byBsZXQncyB1c2UgVFlQRV9NSVNNQVRDSF9FUlIgZm9yIG5vdy4KKyAgICAgICAgZWMgPSBUWVBF
X01JU01BVENIX0VSUjsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCisgICAgcmV0
dXJuIG9mZmVyT3B0aW9ucy5yZWxlYXNlKCk7Cit9CisKK2Jvb2wgUlRDT2ZmZXJPcHRpb25zOjpp
bml0aWFsaXplKGNvbnN0IERpY3Rpb25hcnkmIG9wdGlvbnMpCit7CisgICAgaWYgKG9wdGlvbnMu
aXNVbmRlZmluZWRPck51bGwoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBpZiAoIVJU
Q09mZmVyQW5zd2VyT3B0aW9uczo6aW5pdGlhbGl6ZShvcHRpb25zKSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgU3RyaW5nIG9mZmVyVG9SZWNlaXZlVmlkZW9TdHI7CisgICAgYm9vbCBu
dW1iZXJDb252ZXJzaW9uU3VjY2VzczsKKyAgICBpZiAoIW9wdGlvbnMuZ2V0KCJvZmZlclRvUmVj
ZWl2ZVZpZGVvIiwgb2ZmZXJUb1JlY2VpdmVWaWRlb1N0cikpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgIG1fb2ZmZXJUb1JlY2VpdmVWaWRlbyA9IG9mZmVyVG9SZWNlaXZlVmlkZW9TdHIu
dG9JbnQ2NFN0cmljdCgmbnVtYmVyQ29udmVyc2lvblN1Y2Nlc3MpOworICAgIGlmICghbnVtYmVy
Q29udmVyc2lvblN1Y2Nlc3MpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIFN0cmluZyBv
ZmZlclRvUmVjZWl2ZUF1ZGlvU3RyOworICAgIGlmICghb3B0aW9ucy5nZXQoIm9mZmVyVG9SZWNl
aXZlQXVkaW8iLCBvZmZlclRvUmVjZWl2ZUF1ZGlvU3RyKSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgbV9vZmZlclRvUmVjZWl2ZUF1ZGlvID0gb2ZmZXJUb1JlY2VpdmVBdWRpb1N0ci50
b0ludDY0U3RyaWN0KCZudW1iZXJDb252ZXJzaW9uU3VjY2Vzcyk7CisgICAgaWYgKCFudW1iZXJD
b252ZXJzaW9uU3VjY2VzcykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgYm9vbCB2b2lj
ZUFjdGl2aXR5RGV0ZWN0aW9uOworICAgIGlmIChvcHRpb25zLmdldCgidm9pY2VBY3Rpdml0eURl
dGVjdGlvbiIsIHZvaWNlQWN0aXZpdHlEZXRlY3Rpb24pKQorICAgICAgICBtX3ZvaWNlQWN0aXZp
dHlEZXRlY3Rpb24gPSB2b2ljZUFjdGl2aXR5RGV0ZWN0aW9uOworCisgICAgYm9vbCBpY2VSZXN0
YXJ0OworICAgIGlmIChvcHRpb25zLmdldCgiaWNlUmVzdGFydCIsIGljZVJlc3RhcnQpKQorICAg
ICAgICBtX2ljZVJlc3RhcnQgPSBpY2VSZXN0YXJ0OworCisgICAgcmV0dXJuIHRydWU7Cit9CisK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0p
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ09mZmVy
QW5zd2VyT3B0aW9ucy5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENP
ZmZlckFuc3dlck9wdGlvbnMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43OGE5NmM3ZWNmYzk5ZWYzZjA2MThjM2E1
MjhiY2I4YWU1YmJmYjBlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9SVENPZmZlckFuc3dlck9wdGlvbnMuaApAQCAtMCwwICsxLDkwIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBV
VEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVU
RVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaWZuZGVmIFJUQ09mZmVyQW5zd2VyT3B0aW9uc19oCisjZGVmaW5lIFJUQ09mZmVy
QW5zd2VyT3B0aW9uc19oCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisjaW5jbHVkZSAi
RGljdGlvbmFyeS5oIgorI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKKyNpbmNsdWRlIDx3dGYv
UGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworY2xhc3MgRGljdGlvbmFyeTsKKworY2xhc3MgUlRDT2ZmZXJBbnN3ZXJPcHRp
b25zIDogcHVibGljIFJlZkNvdW50ZWQ8UlRDT2ZmZXJBbnN3ZXJPcHRpb25zPiB7CitwdWJsaWM6
CisgICAgc3RhdGljIFBhc3NSZWZQdHI8UlRDT2ZmZXJBbnN3ZXJPcHRpb25zPiBjcmVhdGUoY29u
c3QgRGljdGlvbmFyeSYsIEV4Y2VwdGlvbkNvZGUmKTsKKworICAgIGNvbnN0IFN0cmluZyYgcmVx
dWVzdElkZW50aXR5KCkgY29uc3QgeyByZXR1cm4gbV9yZXF1ZXN0SWRlbnRpdHk7IH0KKworICAg
IHZpcnR1YWwgflJUQ09mZmVyQW5zd2VyT3B0aW9ucygpIHsgfQorCitwcm90ZWN0ZWQ6CisgICAg
dmlydHVhbCBib29sIGluaXRpYWxpemUoY29uc3QgRGljdGlvbmFyeSYpOworICAgIFJUQ09mZmVy
QW5zd2VyT3B0aW9ucygpCisgICAgICAgIDogbV9yZXF1ZXN0SWRlbnRpdHkoImlmY29uZmlndXJl
ZCIpCisgICAgeworICAgIH0KKworcHJpdmF0ZToKKyAgICBTdHJpbmcgbV9yZXF1ZXN0SWRlbnRp
dHk7Cit9OworCitjbGFzcyBSVENPZmZlck9wdGlvbnMgOiBwdWJsaWMgUlRDT2ZmZXJBbnN3ZXJP
cHRpb25zIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxSVENPZmZlck9wdGlvbnM+
IGNyZWF0ZShjb25zdCBEaWN0aW9uYXJ5JiwgRXhjZXB0aW9uQ29kZSYpOworCisgICAgaW50NjRf
dCBvZmZlclRvUmVjZWl2ZVZpZGVvKCkgY29uc3QgeyByZXR1cm4gbV9vZmZlclRvUmVjZWl2ZVZp
ZGVvOyB9CisgICAgaW50NjRfdCBvZmZlclRvUmVjZWl2ZUF1ZGlvKCkgY29uc3QgeyByZXR1cm4g
bV9vZmZlclRvUmVjZWl2ZUF1ZGlvOyB9CisgICAgYm9vbCB2b2ljZUFjdGl2aXR5RGV0ZWN0aW9u
KCkgY29uc3QgeyByZXR1cm4gbV92b2ljZUFjdGl2aXR5RGV0ZWN0aW9uOyB9CisgICAgYm9vbCBp
Y2VSZXN0YXJ0KCkgY29uc3QgeyByZXR1cm4gbV9pY2VSZXN0YXJ0OyB9CisKKyAgICB2aXJ0dWFs
IH5SVENPZmZlck9wdGlvbnMoKSB7IH0KKworcHJpdmF0ZToKKyAgICB2aXJ0dWFsIGJvb2wgaW5p
dGlhbGl6ZShjb25zdCBEaWN0aW9uYXJ5Jikgb3ZlcnJpZGU7CisgICAgUlRDT2ZmZXJPcHRpb25z
KCkKKyAgICAgICAgOiBtX29mZmVyVG9SZWNlaXZlVmlkZW8oMCkKKyAgICAgICAgLCBtX29mZmVy
VG9SZWNlaXZlQXVkaW8oMCkKKyAgICAgICAgLCBtX3ZvaWNlQWN0aXZpdHlEZXRlY3Rpb24odHJ1
ZSkKKyAgICAgICAgLCBtX2ljZVJlc3RhcnQoZmFsc2UpCisgICAgeworICAgIH0KKworICAgIGlu
dDY0X3QgbV9vZmZlclRvUmVjZWl2ZVZpZGVvOworICAgIGludDY0X3QgbV9vZmZlclRvUmVjZWl2
ZUF1ZGlvOworICAgIGJvb2wgbV92b2ljZUFjdGl2aXR5RGV0ZWN0aW9uOworICAgIGJvb2wgbV9p
Y2VSZXN0YXJ0OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5B
QkxFKE1FRElBX1NUUkVBTSkKKworI2VuZGlmIC8vIFJUQ09mZmVyQW5zd2VyT3B0aW9uc19oCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25u
ZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNv
bm5lY3Rpb24uY3BwCmluZGV4IDE5ZmIyMzA3ZWVkNDM2ZWJhNzMwYzkyY2IzMDRmOGY3NjYwYTI4
NTcuLjVjNzRjZTg2MDJhNTgxYzYwOGYwNjMxNGRmNTYxMDM5NzAzMjMzY2QgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rp
b24uY3BwCkBAIC00Miw3ICs0Miw2IEBACiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJG
cmFtZUxvYWRlci5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyQ2xpZW50LmgiCi0jaW5jbHVkZSAi
TWVkaWFDb25zdHJhaW50c0ltcGwuaCIKICNpbmNsdWRlICJNZWRpYVN0cmVhbUV2ZW50LmgiCiAj
aW5jbHVkZSAiUlRDQ29uZmlndXJhdGlvbi5oIgogI2luY2x1ZGUgIlJUQ0RUTUZTZW5kZXIuaCIK
QEAgLTUyLDYgKzUxLDcgQEAKICNpbmNsdWRlICJSVENJY2VDYW5kaWRhdGUuaCIKICNpbmNsdWRl
ICJSVENJY2VDYW5kaWRhdGVEZXNjcmlwdG9yLmgiCiAjaW5jbHVkZSAiUlRDSWNlQ2FuZGlkYXRl
RXZlbnQuaCIKKyNpbmNsdWRlICJSVENPZmZlckFuc3dlck9wdGlvbnMuaCIKICNpbmNsdWRlICJS
VENQZWVyQ29ubmVjdGlvbkVycm9yQ2FsbGJhY2suaCIKICNpbmNsdWRlICJSVENTZXNzaW9uRGVz
Y3JpcHRpb24uaCIKICNpbmNsdWRlICJSVENTZXNzaW9uRGVzY3JpcHRpb25DYWxsYmFjay5oIgpA
QCAtMjAzLDcgKzIwMyw3IEBAIFJUQ1BlZXJDb25uZWN0aW9uOjp+UlRDUGVlckNvbm5lY3Rpb24o
KQogICAgICAgICAoKnN0cmVhbSktPnJlbW92ZU9ic2VydmVyKHRoaXMpOwogfQogCi12b2lkIFJU
Q1BlZXJDb25uZWN0aW9uOjpjcmVhdGVPZmZlcihQYXNzUmVmUHRyPFJUQ1Nlc3Npb25EZXNjcmlw
dGlvbkNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8UlRDUGVlckNvbm5lY3Rp
b25FcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrLCBjb25zdCBEaWN0aW9uYXJ5JiBtZWRpYUNv
bnN0cmFpbnRzLCBFeGNlcHRpb25Db2RlJiBlYykKK3ZvaWQgUlRDUGVlckNvbm5lY3Rpb246OmNy
ZWF0ZU9mZmVyKFBhc3NSZWZQdHI8UlRDU2Vzc2lvbkRlc2NyaXB0aW9uQ2FsbGJhY2s+IHN1Y2Nl
c3NDYWxsYmFjaywgUGFzc1JlZlB0cjxSVENQZWVyQ29ubmVjdGlvbkVycm9yQ2FsbGJhY2s+IGVy
cm9yQ2FsbGJhY2ssIGNvbnN0IERpY3Rpb25hcnkmIG9mZmVyT3B0aW9ucywgRXhjZXB0aW9uQ29k
ZSYgZWMpCiB7CiAgICAgaWYgKG1fc2lnbmFsaW5nU3RhdGUgPT0gU2lnbmFsaW5nU3RhdGVDbG9z
ZWQpIHsKICAgICAgICAgZWMgPSBJTlZBTElEX1NUQVRFX0VSUjsKQEAgLTIxNSwxNSArMjE1LDIw
IEBAIHZvaWQgUlRDUGVlckNvbm5lY3Rpb246OmNyZWF0ZU9mZmVyKFBhc3NSZWZQdHI8UlRDU2Vz
c2lvbkRlc2NyaXB0aW9uQ2FsbGJhY2s+IHN1CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAg
ICBSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4gY29uc3RyYWludHMgPSBNZWRpYUNvbnN0cmFpbnRz
SW1wbDo6Y3JlYXRlKG1lZGlhQ29uc3RyYWludHMsIGVjKTsKLSAgICBpZiAoZWMpCisgICAgUmVm
UHRyPFJUQ09mZmVyT3B0aW9ucz4gb3B0aW9ucyA9IFJUQ09mZmVyT3B0aW9uczo6Y3JlYXRlKG9m
ZmVyT3B0aW9ucywgZWMpOworICAgIGlmIChlYykgeworICAgICAgICBjYWxsT25NYWluVGhyZWFk
KFs9XSB7CisgICAgICAgICAgICBSZWZQdHI8RE9NRXJyb3I+IGVycm9yID0gRE9NRXJyb3I6OmNy
ZWF0ZSgiSW52YWxpZCBjcmVhdGVPZmZlciBhcmd1bWVudC4iKTsKKyAgICAgICAgICAgIGVycm9y
Q2FsbGJhY2stPmhhbmRsZUV2ZW50KGVycm9yLmdldCgpKTsKKyAgICAgICAgfSk7CiAgICAgICAg
IHJldHVybjsKKyAgICB9CiAKICAgICBSZWZQdHI8UlRDU2Vzc2lvbkRlc2NyaXB0aW9uUmVxdWVz
dEltcGw+IHJlcXVlc3QgPSBSVENTZXNzaW9uRGVzY3JpcHRpb25SZXF1ZXN0SW1wbDo6Y3JlYXRl
KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNr
KTsKLSAgICBtX3BlZXJIYW5kbGVyLT5jcmVhdGVPZmZlcihyZXF1ZXN0LnJlbGVhc2UoKSwgY29u
c3RyYWludHMpOworICAgIG1fcGVlckhhbmRsZXItPmNyZWF0ZU9mZmVyKHJlcXVlc3QucmVsZWFz
ZSgpLCBvcHRpb25zLnJlbGVhc2UoKSk7CiB9CiAKLXZvaWQgUlRDUGVlckNvbm5lY3Rpb246OmNy
ZWF0ZUFuc3dlcihQYXNzUmVmUHRyPFJUQ1Nlc3Npb25EZXNjcmlwdGlvbkNhbGxiYWNrPiBzdWNj
ZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8UlRDUGVlckNvbm5lY3Rpb25FcnJvckNhbGxiYWNrPiBl
cnJvckNhbGxiYWNrLCBjb25zdCBEaWN0aW9uYXJ5JiBtZWRpYUNvbnN0cmFpbnRzLCBFeGNlcHRp
b25Db2RlJiBlYykKK3ZvaWQgUlRDUGVlckNvbm5lY3Rpb246OmNyZWF0ZUFuc3dlcihQYXNzUmVm
UHRyPFJUQ1Nlc3Npb25EZXNjcmlwdGlvbkNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NS
ZWZQdHI8UlRDUGVlckNvbm5lY3Rpb25FcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrLCBjb25z
dCBEaWN0aW9uYXJ5JiBhbnN3ZXJPcHRpb25zLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBp
ZiAobV9zaWduYWxpbmdTdGF0ZSA9PSBTaWduYWxpbmdTdGF0ZUNsb3NlZCkgewogICAgICAgICBl
YyA9IElOVkFMSURfU1RBVEVfRVJSOwpAQCAtMjM1LDEyICsyNDAsMTcgQEAgdm9pZCBSVENQZWVy
Q29ubmVjdGlvbjo6Y3JlYXRlQW5zd2VyKFBhc3NSZWZQdHI8UlRDU2Vzc2lvbkRlc2NyaXB0aW9u
Q2FsbGJhY2s+IHMKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIFJlZlB0cjxNZWRpYUNv
bnN0cmFpbnRzPiBjb25zdHJhaW50cyA9IE1lZGlhQ29uc3RyYWludHNJbXBsOjpjcmVhdGUobWVk
aWFDb25zdHJhaW50cywgZWMpOwotICAgIGlmIChlYykKKyAgICBSZWZQdHI8UlRDT2ZmZXJBbnN3
ZXJPcHRpb25zPiBvcHRpb25zID0gUlRDT2ZmZXJBbnN3ZXJPcHRpb25zOjpjcmVhdGUoYW5zd2Vy
T3B0aW9ucywgZWMpOworICAgIGlmIChlYykgeworICAgICAgICBjYWxsT25NYWluVGhyZWFkKFs9
XSB7CisgICAgICAgICAgICBSZWZQdHI8RE9NRXJyb3I+IGVycm9yID0gRE9NRXJyb3I6OmNyZWF0
ZSgiSW52YWxpZCBjcmVhdGVBbnN3ZXIgYXJndW1lbnQuIik7CisgICAgICAgICAgICBlcnJvckNh
bGxiYWNrLT5oYW5kbGVFdmVudChlcnJvci5nZXQoKSk7CisgICAgICAgIH0pOwogICAgICAgICBy
ZXR1cm47CisgICAgfQogCiAgICAgUmVmUHRyPFJUQ1Nlc3Npb25EZXNjcmlwdGlvblJlcXVlc3RJ
bXBsPiByZXF1ZXN0ID0gUlRDU2Vzc2lvbkRlc2NyaXB0aW9uUmVxdWVzdEltcGw6OmNyZWF0ZShz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCksIHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxsYmFjayk7
Ci0gICAgbV9wZWVySGFuZGxlci0+Y3JlYXRlQW5zd2VyKHJlcXVlc3QucmVsZWFzZSgpLCBjb25z
dHJhaW50cy5yZWxlYXNlKCkpOworICAgIG1fcGVlckhhbmRsZXItPmNyZWF0ZUFuc3dlcihyZXF1
ZXN0LnJlbGVhc2UoKSwgb3B0aW9ucy5yZWxlYXNlKCkpOwogfQogCiBib29sIFJUQ1BlZXJDb25u
ZWN0aW9uOjpjaGVja1N0YXRlRm9yTG9jYWxEZXNjcmlwdGlvbihSVENTZXNzaW9uRGVzY3JpcHRp
b24qIGxvY2FsRGVzY3JpcHRpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmgKaW5kZXggYWYwZWM2NTE1M2I4NWVkNDEx
NWU0NmVkODlmMGFmMGJiNWVmMTZhNC4uNjZlZjQ1MTRhNTI0NjNlYmQ5NDY5NmNmYzVhMWUwNjhk
YzE3ZTQyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9S
VENQZWVyQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vUlRDUGVlckNvbm5lY3Rpb24uaApAQCAtNDgsNyArNDgsNiBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLWNsYXNzIE1lZGlhQ29uc3RyYWludHM7CiBjbGFzcyBNZWRpYVN0cmVhbVRyYWNr
OwogY2xhc3MgUlRDQ29uZmlndXJhdGlvbjsKIGNsYXNzIFJUQ0RUTUZTZW5kZXI7CkBAIC02NCw5
ICs2Myw5IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxSVENQZWVyQ29ubmVjdGlv
bj4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBjb25zdCBEaWN0aW9uYXJ5JiBydGND
b25maWd1cmF0aW9uLCBFeGNlcHRpb25Db2RlJik7CiAgICAgflJUQ1BlZXJDb25uZWN0aW9uKCk7
CiAKLSAgICB2b2lkIGNyZWF0ZU9mZmVyKFBhc3NSZWZQdHI8UlRDU2Vzc2lvbkRlc2NyaXB0aW9u
Q2FsbGJhY2s+LCBQYXNzUmVmUHRyPFJUQ1BlZXJDb25uZWN0aW9uRXJyb3JDYWxsYmFjaz4sIGNv
bnN0IERpY3Rpb25hcnkmIG1lZGlhQ29uc3RyYWludHMsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2
b2lkIGNyZWF0ZU9mZmVyKFBhc3NSZWZQdHI8UlRDU2Vzc2lvbkRlc2NyaXB0aW9uQ2FsbGJhY2s+
LCBQYXNzUmVmUHRyPFJUQ1BlZXJDb25uZWN0aW9uRXJyb3JDYWxsYmFjaz4sIGNvbnN0IERpY3Rp
b25hcnkmIG9mZmVyT3B0aW9ucywgRXhjZXB0aW9uQ29kZSYpOwogCi0gICAgdm9pZCBjcmVhdGVB
bnN3ZXIoUGFzc1JlZlB0cjxSVENTZXNzaW9uRGVzY3JpcHRpb25DYWxsYmFjaz4sIFBhc3NSZWZQ
dHI8UlRDUGVlckNvbm5lY3Rpb25FcnJvckNhbGxiYWNrPiwgY29uc3QgRGljdGlvbmFyeSYgbWVk
aWFDb25zdHJhaW50cywgRXhjZXB0aW9uQ29kZSYpOworICAgIHZvaWQgY3JlYXRlQW5zd2VyKFBh
c3NSZWZQdHI8UlRDU2Vzc2lvbkRlc2NyaXB0aW9uQ2FsbGJhY2s+LCBQYXNzUmVmUHRyPFJUQ1Bl
ZXJDb25uZWN0aW9uRXJyb3JDYWxsYmFjaz4sIGNvbnN0IERpY3Rpb25hcnkmIGFuc3dlck9wdGlv
bnMsIEV4Y2VwdGlvbkNvZGUmKTsKIAogICAgIHZvaWQgc2V0TG9jYWxEZXNjcmlwdGlvbihQYXNz
UmVmUHRyPFJUQ1Nlc3Npb25EZXNjcmlwdGlvbj4sIFBhc3NSZWZQdHI8Vm9pZENhbGxiYWNrPiwg
UGFzc1JlZlB0cjxSVENQZWVyQ29ubmVjdGlvbkVycm9yQ2FsbGJhY2s+LCBFeGNlcHRpb25Db2Rl
Jik7CiAgICAgUGFzc1JlZlB0cjxSVENTZXNzaW9uRGVzY3JpcHRpb24+IGxvY2FsRGVzY3JpcHRp
b24oRXhjZXB0aW9uQ29kZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmlkbAppbmRleCA2MjMyYmZlNjg0NjY0ZDQ0
ZGMwOTg4MjU3ODA0MDNiYTcxNDZkY2Y5Li43NWZlZGMyN2I5YjVhOGUzNzlhZjk3ODI2ZTYyM2Rj
Nzk3OGEwNWUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L1JUQ1BlZXJDb25uZWN0aW9uLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmlkbApAQCAtMzksOSArMzksOSBAQAogICAgIEV2ZW50
VGFyZ2V0LAogICAgIEludGVyZmFjZU5hbWU9d2Via2l0UlRDUGVlckNvbm5lY3Rpb24sCiBdIGlu
dGVyZmFjZSBSVENQZWVyQ29ubmVjdGlvbiB7Ci0gICAgW1JhaXNlc0V4Y2VwdGlvbl0gdm9pZCBj
cmVhdGVPZmZlcihSVENTZXNzaW9uRGVzY3JpcHRpb25DYWxsYmFjayBzdWNjZXNzQ2FsbGJhY2ss
IFtEZWZhdWx0PVVuZGVmaW5lZF0gb3B0aW9uYWwgUlRDUGVlckNvbm5lY3Rpb25FcnJvckNhbGxi
YWNrIGZhaWx1cmVDYWxsYmFjaywgb3B0aW9uYWwgRGljdGlvbmFyeSBtZWRpYUNvbnN0cmFpbnRz
KTsKKyAgICBbUmFpc2VzRXhjZXB0aW9uXSB2b2lkIGNyZWF0ZU9mZmVyKFJUQ1Nlc3Npb25EZXNj
cmlwdGlvbkNhbGxiYWNrIHN1Y2Nlc3NDYWxsYmFjaywgW0RlZmF1bHQ9VW5kZWZpbmVkXSBvcHRp
b25hbCBSVENQZWVyQ29ubmVjdGlvbkVycm9yQ2FsbGJhY2sgZmFpbHVyZUNhbGxiYWNrLCBvcHRp
b25hbCBEaWN0aW9uYXJ5IG9mZmVyT3B0aW9ucyk7CiAKLSAgICBbUmFpc2VzRXhjZXB0aW9uXSB2
b2lkIGNyZWF0ZUFuc3dlcihSVENTZXNzaW9uRGVzY3JpcHRpb25DYWxsYmFjayBzdWNjZXNzQ2Fs
bGJhY2ssIFtEZWZhdWx0PVVuZGVmaW5lZF0gb3B0aW9uYWwgUlRDUGVlckNvbm5lY3Rpb25FcnJv
ckNhbGxiYWNrIGZhaWx1cmVDYWxsYmFjaywgb3B0aW9uYWwgRGljdGlvbmFyeSBtZWRpYUNvbnN0
cmFpbnRzKTsKKyAgICBbUmFpc2VzRXhjZXB0aW9uXSB2b2lkIGNyZWF0ZUFuc3dlcihSVENTZXNz
aW9uRGVzY3JpcHRpb25DYWxsYmFjayBzdWNjZXNzQ2FsbGJhY2ssIFtEZWZhdWx0PVVuZGVmaW5l
ZF0gb3B0aW9uYWwgUlRDUGVlckNvbm5lY3Rpb25FcnJvckNhbGxiYWNrIGZhaWx1cmVDYWxsYmFj
aywgb3B0aW9uYWwgRGljdGlvbmFyeSBhbnN3ZXJPcHRpb25zKTsKIAogICAgIFtSYWlzZXNFeGNl
cHRpb25dIHZvaWQgc2V0TG9jYWxEZXNjcmlwdGlvbihSVENTZXNzaW9uRGVzY3JpcHRpb24gZGVz
Y3JpcHRpb24sIFtEZWZhdWx0PVVuZGVmaW5lZF0gb3B0aW9uYWwgVm9pZENhbGxiYWNrIHN1Y2Nl
c3NDYWxsYmFjaywgW0RlZmF1bHQ9VW5kZWZpbmVkXSBvcHRpb25hbCBSVENQZWVyQ29ubmVjdGlv
bkVycm9yQ2FsbGJhY2sgZmFpbHVyZUNhbGxiYWNrKTsKICAgICBbR2V0dGVyUmFpc2VzRXhjZXB0
aW9uXSByZWFkb25seSBhdHRyaWJ1dGUgUlRDU2Vzc2lvbkRlc2NyaXB0aW9uIGxvY2FsRGVzY3Jp
cHRpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9S
VENQZWVyQ29ubmVjdGlvbkhhbmRsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uSGFuZGxlci5oCmluZGV4IDQyNWY5NjlkYmFkZWExMWFm
ZjBiMzFlOGFkZTQwODdiOWJhYWFkMjEuLjM0NjIxZTIxOTY0MDUzZDJlM2Y1ODBkNDEyOTE3MTdj
NzI1YTI5OWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L1JUQ1BlZXJDb25uZWN0aW9uSGFuZGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uSGFuZGxlci5oCkBAIC0zOSwxMiArMzksMTMg
QEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBNZWRpYUNvbnN0cmFpbnRzOwogY2xh
c3MgTWVkaWFTdHJlYW1Tb3VyY2U7CiBjbGFzcyBSVENDb25maWd1cmF0aW9uOwogY2xhc3MgUlRD
RFRNRlNlbmRlckhhbmRsZXI7CiBjbGFzcyBSVENEYXRhQ2hhbm5lbEhhbmRsZXI7CiBjbGFzcyBS
VENJY2VDYW5kaWRhdGVEZXNjcmlwdG9yOworY2xhc3MgUlRDT2ZmZXJPcHRpb25zOworY2xhc3Mg
UlRDT2ZmZXJBbnN3ZXJPcHRpb25zOwogY2xhc3MgUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyOwog
Y2xhc3MgUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2xpZW50OwogY2xhc3MgUlRDU2Vzc2lvbkRl
c2NyaXB0aW9uRGVzY3JpcHRvcjsKQEAgLTgyLDggKzgzLDggQEAgcHVibGljOgogCiAgICAgdmly
dHVhbCBib29sIGluaXRpYWxpemUoUGFzc1JlZlB0cjxSVENDb25maWd1cmF0aW9uPikgPSAwOwog
Ci0gICAgdmlydHVhbCB2b2lkIGNyZWF0ZU9mZmVyKFBhc3NSZWZQdHI8UlRDU2Vzc2lvbkRlc2Ny
aXB0aW9uUmVxdWVzdD4sIFBhc3NSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4pID0gMDsKLSAgICB2
aXJ0dWFsIHZvaWQgY3JlYXRlQW5zd2VyKFBhc3NSZWZQdHI8UlRDU2Vzc2lvbkRlc2NyaXB0aW9u
UmVxdWVzdD4sIFBhc3NSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4pID0gMDsKKyAgICB2aXJ0dWFs
IHZvaWQgY3JlYXRlT2ZmZXIoUGFzc1JlZlB0cjxSVENTZXNzaW9uRGVzY3JpcHRpb25SZXF1ZXN0
PiwgUGFzc1JlZlB0cjxSVENPZmZlck9wdGlvbnM+KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGNy
ZWF0ZUFuc3dlcihQYXNzUmVmUHRyPFJUQ1Nlc3Npb25EZXNjcmlwdGlvblJlcXVlc3Q+LCBQYXNz
UmVmUHRyPFJUQ09mZmVyQW5zd2VyT3B0aW9ucz4pID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0
TG9jYWxEZXNjcmlwdGlvbihQYXNzUmVmUHRyPFJUQ1ZvaWRSZXF1ZXN0PiwgUGFzc1JlZlB0cjxS
VENTZXNzaW9uRGVzY3JpcHRpb25EZXNjcmlwdG9yPikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBz
ZXRSZW1vdGVEZXNjcmlwdGlvbihQYXNzUmVmUHRyPFJUQ1ZvaWRSZXF1ZXN0PiwgUGFzc1JlZlB0
cjxSVENTZXNzaW9uRGVzY3JpcHRpb25EZXNjcmlwdG9yPikgPSAwOwogICAgIHZpcnR1YWwgUGFz
c1JlZlB0cjxSVENTZXNzaW9uRGVzY3JpcHRpb25EZXNjcmlwdG9yPiBsb2NhbERlc2NyaXB0aW9u
KCkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9SVENQZWVy
Q29ubmVjdGlvbkhhbmRsZXJNb2NrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2sv
UlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyTW9jay5jcHAKaW5kZXggMTExMDgxYjJmNWE0ZDFlZmFl
ZjlmOGZjOTQ1ODA5NjUyMWJiMTMyMS4uMWQ5NjJiMWEwNzE3NmZlZjllNjJiZTZiZGM3ODY2MDUw
NWU4ZWY3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9SVENQZWVy
Q29ubmVjdGlvbkhhbmRsZXJNb2NrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
b2NrL1JUQ1BlZXJDb25uZWN0aW9uSGFuZGxlck1vY2suY3BwCkBAIC01OCwyOCArNTgsMTUgQEAg
Ym9vbCBSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJNb2NrOjppbml0aWFsaXplKFBhc3NSZWZQdHI8
UlRDQ29uZmlndXJhdGlvbj4pCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgUlRDUGVlckNv
bm5lY3Rpb25IYW5kbGVyTW9jazo6Y3JlYXRlT2ZmZXIoUGFzc1JlZlB0cjxSVENTZXNzaW9uRGVz
Y3JpcHRpb25SZXF1ZXN0PiByZXF1ZXN0LCBQYXNzUmVmUHRyPE1lZGlhQ29uc3RyYWludHM+IGNv
bnN0cmFpbnRzKQordm9pZCBSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJNb2NrOjpjcmVhdGVPZmZl
cihQYXNzUmVmUHRyPFJUQ1Nlc3Npb25EZXNjcmlwdGlvblJlcXVlc3Q+IHJlcXVlc3QsIFBhc3NS
ZWZQdHI8UlRDT2ZmZXJPcHRpb25zPikKIHsKLSAgICBTdHJpbmcgc3VjY2VlZFZhbHVlOwotICAg
IFJlZlB0cjxTZXNzaW9uUmVxdWVzdE5vdGlmaWVyPiBub3RpZmllcjsKLSAgICBpZiAoY29uc3Ry
YWludHMtPmdldE1hbmRhdG9yeUNvbnN0cmFpbnRWYWx1ZSgic3VjY2VlZCIsIHN1Y2NlZWRWYWx1
ZSkgJiYgc3VjY2VlZFZhbHVlID09ICJmYWxzZSIpCi0gICAgICAgIG5vdGlmaWVyID0gYWRvcHRS
ZWYobmV3IFNlc3Npb25SZXF1ZXN0Tm90aWZpZXIocmVxdWVzdCwgMCwgUlRDUGVlckNvbm5lY3Rp
b25IYW5kbGVyOjppbmNvbXBhdGlibGVDb25zdHJhaW50c0Vycm9yTmFtZSgpKSk7Ci0gICAgZWxz
ZQotICAgICAgICBub3RpZmllciA9IGFkb3B0UmVmKG5ldyBTZXNzaW9uUmVxdWVzdE5vdGlmaWVy
KHJlcXVlc3QsIFJUQ1Nlc3Npb25EZXNjcmlwdGlvbkRlc2NyaXB0b3I6OmNyZWF0ZSgib2ZmZXIi
LCAibG9jYWwiKSkpOwotCisgICAgUmVmUHRyPFNlc3Npb25SZXF1ZXN0Tm90aWZpZXI+IG5vdGlm
aWVyID0gYWRvcHRSZWYobmV3IFNlc3Npb25SZXF1ZXN0Tm90aWZpZXIocmVxdWVzdCwgUlRDU2Vz
c2lvbkRlc2NyaXB0aW9uRGVzY3JpcHRvcjo6Y3JlYXRlKCJvZmZlciIsICJsb2NhbCIpKSk7CiAg
ICAgbV90aW1lckV2ZW50cy5hcHBlbmQoYWRvcHRSZWYobmV3IFRpbWVyRXZlbnQodGhpcywgbm90
aWZpZXIpKSk7CiB9CiAKLXZvaWQgUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyTW9jazo6Y3JlYXRl
QW5zd2VyKFBhc3NSZWZQdHI8UlRDU2Vzc2lvbkRlc2NyaXB0aW9uUmVxdWVzdD4gcmVxdWVzdCwg
UGFzc1JlZlB0cjxNZWRpYUNvbnN0cmFpbnRzPiBjb25zdHJhaW50cykKK3ZvaWQgUlRDUGVlckNv
bm5lY3Rpb25IYW5kbGVyTW9jazo6Y3JlYXRlQW5zd2VyKFBhc3NSZWZQdHI8UlRDU2Vzc2lvbkRl
c2NyaXB0aW9uUmVxdWVzdD4gcmVxdWVzdCwgUGFzc1JlZlB0cjxSVENPZmZlckFuc3dlck9wdGlv
bnM+KQogewotICAgIFJlZlB0cjxTZXNzaW9uUmVxdWVzdE5vdGlmaWVyPiBub3RpZmllcjsKLSAg
ICAvLyBXZSBjYW4gb25seSBjcmVhdGUgYW4gYW5zd2VyIGlmIHdlIGhhdmUgYWxyZWFkeSBoYWQg
YW4gb2ZmZXIgYW5kIHRoZSByZW1vdGUgc2Vzc2lvbiBkZXNjcmlwdGlvbiBpcyBzdG9yZWQuCi0g
ICAgU3RyaW5nIHN1Y2NlZWRWYWx1ZTsKLSAgICBpZiAoY29uc3RyYWludHMtPmdldE1hbmRhdG9y
eUNvbnN0cmFpbnRWYWx1ZSgic3VjY2VlZCIsIHN1Y2NlZWRWYWx1ZSkgJiYgc3VjY2VlZFZhbHVl
ID09ICJmYWxzZSIpCi0gICAgICAgIG5vdGlmaWVyID0gYWRvcHRSZWYobmV3IFNlc3Npb25SZXF1
ZXN0Tm90aWZpZXIocmVxdWVzdCwgMCwgUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyOjppbmNvbXBh
dGlibGVDb25zdHJhaW50c0Vycm9yTmFtZSgpKSk7Ci0gICAgZWxzZQotICAgICAgICBub3RpZmll
ciA9IGFkb3B0UmVmKG5ldyBTZXNzaW9uUmVxdWVzdE5vdGlmaWVyKHJlcXVlc3QsIFJUQ1Nlc3Np
b25EZXNjcmlwdGlvbkRlc2NyaXB0b3I6OmNyZWF0ZSgiYW5zd2VyIiwgImxvY2FsIikpKTsKLQor
ICAgIFJlZlB0cjxTZXNzaW9uUmVxdWVzdE5vdGlmaWVyPiBub3RpZmllciA9IGFkb3B0UmVmKG5l
dyBTZXNzaW9uUmVxdWVzdE5vdGlmaWVyKHJlcXVlc3QsIFJUQ1Nlc3Npb25EZXNjcmlwdGlvbkRl
c2NyaXB0b3I6OmNyZWF0ZSgiYW5zd2VyIiwgImxvY2FsIikpKTsKICAgICBtX3RpbWVyRXZlbnRz
LmFwcGVuZChhZG9wdFJlZihuZXcgVGltZXJFdmVudCh0aGlzLCBub3RpZmllcikpKTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9SVENQZWVyQ29ubmVjdGlv
bkhhbmRsZXJNb2NrLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1JUQ1BlZXJDb25u
ZWN0aW9uSGFuZGxlck1vY2suaAppbmRleCA5YjQ5MzdlZjUzMWVlYTI3YmU5OWQ2MjAwYTk5Mzk0
MDUxZmZmMjc1Li4yNTE2M2FlYTMxYzkzNzhlYTgwZDhhYjEwZTE0MDUyNzUzZmM2ZDJmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1JUQ1BlZXJDb25uZWN0aW9uSGFu
ZGxlck1vY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1JUQ1BlZXJDb25u
ZWN0aW9uSGFuZGxlck1vY2suaApAQCAtNDMsOCArNDMsOCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0
dWFsIGJvb2wgaW5pdGlhbGl6ZShQYXNzUmVmUHRyPFJUQ0NvbmZpZ3VyYXRpb24+KSBvdmVycmlk
ZTsKIAotICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVPZmZlcihQYXNzUmVmUHRyPFJUQ1Nlc3Npb25E
ZXNjcmlwdGlvblJlcXVlc3Q+LCBQYXNzUmVmUHRyPE1lZGlhQ29uc3RyYWludHM+KSBvdmVycmlk
ZTsKLSAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlQW5zd2VyKFBhc3NSZWZQdHI8UlRDU2Vzc2lvbkRl
c2NyaXB0aW9uUmVxdWVzdD4sIFBhc3NSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4pIG92ZXJyaWRl
OworICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVPZmZlcihQYXNzUmVmUHRyPFJUQ1Nlc3Npb25EZXNj
cmlwdGlvblJlcXVlc3Q+LCBQYXNzUmVmUHRyPFJUQ09mZmVyT3B0aW9ucz4pIG92ZXJyaWRlOwor
ICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVBbnN3ZXIoUGFzc1JlZlB0cjxSVENTZXNzaW9uRGVzY3Jp
cHRpb25SZXF1ZXN0PiwgUGFzc1JlZlB0cjxSVENPZmZlckFuc3dlck9wdGlvbnM+KSBvdmVycmlk
ZTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0TG9jYWxEZXNjcmlwdGlvbihQYXNzUmVmUHRyPFJUQ1Zv
aWRSZXF1ZXN0PiwgUGFzc1JlZlB0cjxSVENTZXNzaW9uRGVzY3JpcHRpb25EZXNjcmlwdG9yPikg
b3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHNldFJlbW90ZURlc2NyaXB0aW9uKFBhc3NSZWZQ
dHI8UlRDVm9pZFJlcXVlc3Q+LCBQYXNzUmVmUHRyPFJUQ1Nlc3Npb25EZXNjcmlwdGlvbkRlc2Ny
aXB0b3I+KSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8UlRDU2Vzc2lvbkRlc2Ny
aXB0aW9uRGVzY3JpcHRvcj4gbG9jYWxEZXNjcmlwdGlvbigpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDg0
OWE0Yzc1NGY5NGE1YmJiN2Y5NzlhNmY5ODZmOGJlNGNmNjVjZmMuLjFkMTIyYzlmYWFiZTY3YjY3
ZDRmZTUzMTc2MjNjNzA0N2M0OTYwODYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxv
ZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAxNC0wMy0w
NiAgVGhpYWdvIGRlIEJhcnJvcyBMYWNlcmRhICA8dGhpYWdvLmxhY2VyZGFAb3BlbmJvc3NhLm9y
Zz4KKworICAgICAgICBbV2ViUlRDXSBVcGRhdGluZyBjcmVhdGVPZmZlciBhbmQgY3JlYXRlQW5z
d2VyIG1ldGhvZHMgdG8gbWF0Y2ggV2ViUlRDIGVkaXRvcidzIGRyYWZ0IG9mIDAxLzI3LzIwMTQK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyOTQ4NAor
CisgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgQ2FybHNvbi4KKworICAgICAgICBBY2NvcmRpbmcg
dG8gdGhlIHNwZWMsIGNyZWF0ZU9mZmVyIGFuZCBjcmVhdGVBbnN3ZXIgd2lsbCBubyBsb25nZXIg
aGF2ZSBNZWRpYUNvbnN0cmFpbnRzIGFzIGFuIGFyZ3VtZW50LAorICAgICAgICBpbnN0ZWFkIHRo
ZXkgd2lsbCBoYXZlIFJUQ09mZmVyT3B0aW9ucyBhbmQgUlRDT2ZmZXJBbnN3ZXJPcHRpb25zLCBy
ZXNwZWN0aXZlbHkuCisKKyAgICAgICAgKiBmYXN0L21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0
aW9uLWNyZWF0ZUFuc3dlci1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9tZWRpYXN0cmVh
bS9SVENQZWVyQ29ubmVjdGlvbi1jcmVhdGVBbnN3ZXIuaHRtbDoKKyAgICAgICAgKiBmYXN0L21l
ZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLWNyZWF0ZU9mZmVyLWV4cGVjdGVkLnR4dDoKKyAg
ICAgICAgKiBmYXN0L21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLWNyZWF0ZU9mZmVyLmh0
bWw6CisKIDIwMTQtMDMtMDYgIEd1cnByZWV0IEthdXIgIDxrLmd1cnByZWV0QHNhbXN1bmcuY29t
PgogCiAgICAgICAgIFJFR1JFU1NJT04gKHIxNTgyNTQpOiBSdWJiZXItYmFuZGluZyBhdCBCaW5n
IGltYWdlIHNlYXJjaCBjYXVzZXMgdGhlIHRvb2xiYXIgdG8gbW92ZSB1cCBhbmQgYXdheQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi1j
cmVhdGVBbnN3ZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9S
VENQZWVyQ29ubmVjdGlvbi1jcmVhdGVBbnN3ZXItZXhwZWN0ZWQudHh0CmluZGV4IDhlMDFjOTI5
ZTU0ZjE2ZjYzYTAwZjAyNzViZjA1NGQ3MTBhY2JiYmEuLjc1NDZkOWMwMjQxNTNjOTU4ZWJiYmNl
NWNmOWQ5NDIwY2YxMzE2YWQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJl
YW0vUlRDUGVlckNvbm5lY3Rpb24tY3JlYXRlQW5zd2VyLWV4cGVjdGVkLnR4dAorKysgYi9MYXlv
dXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLWNyZWF0ZUFuc3dlci1l
eHBlY3RlZC50eHQKQEAgLTcsMTUgKzcsMTAgQEAgUEFTUyBwYy5jcmVhdGVBbnN3ZXIocmVxdWVz
dFN1Y2NlZWRlZDEsIHJlcXVlc3RGYWlsZWQxKTsgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24KIFBB
U1MgY3JlYXRlQW5zd2VyIHJlcXVlc3Qgc3VjY2VlZGVkLgogUEFTUyBwYy5zZXRSZW1vdGVEZXNj
cmlwdGlvbihzZXNzaW9uRGVzY3JpcHRpb24sIHNldERlc2NyaXB0aW9uU3VjY2VlZGVkLCBzZXRE
ZXNjcmlwdGlvbkZhaWxlZCk7IGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgogUEFTUyBzZXRSZW1v
dGVEZXNjcmlwdGlvbiBzdWNjZWVkZWQuCi1QQVNTIHBjLmNyZWF0ZUFuc3dlcihyZXF1ZXN0U3Vj
Y2VlZGVkMiwgcmVxdWVzdEZhaWxlZDIsIHttYW5kYXRvcnk6eyJzdWNjZWVkIjpmYWxzZX19KTsg
ZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCitQQVNTIHBjLmNyZWF0ZUFuc3dlcihyZXF1ZXN0U3Vj
Y2VlZGVkMiwgcmVxdWVzdEZhaWxlZDIsIHt9KTsgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBUeXBl
TWlzbWF0Y2hFcnJvcjogRE9NIEV4Y2VwdGlvbiAxNy4KIFBBU1MgY3JlYXRlQW5zd2VyIHJlcXVl
c3QgZmFpbGVkLgotUEFTUyBlcnJvclJlYXNvbi5uYW1lIGlzICJJbmNvbXBhdGlibGVDb25zdHJh
aW50c0Vycm9yIgotUEFTUyBwYy5jcmVhdGVBbnN3ZXIocmVxdWVzdFN1Y2NlZWRlZDMsIHJlcXVl
c3RGYWlsZWQzKTsgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCi1QQVNTIGNyZWF0ZUFuc3dlciBy
ZXF1ZXN0IHN1Y2NlZWRlZC4KLVBBU1Mgc2Vzc2lvbkRlc2NyaXB0aW9uLnR5cGUgaXMgImFuc3dl
ciIKLVBBU1MgcGMuY3JlYXRlQW5zd2VyKHJlcXVlc3RTdWNjZWVkZWQ0LCByZXF1ZXN0RmFpbGVk
Mywge21hbmRhdG9yeTp7InN1Y2NlZWQiOnRydWV9fSk7IGRpZCBub3QgdGhyb3cgZXhjZXB0aW9u
LgotUEFTUyBjcmVhdGVBbnN3ZXIgcmVxdWVzdCBzdWNjZWVkZWQuCi1QQVNTIHNlc3Npb25EZXNj
cmlwdGlvbi50eXBlIGlzICJhbnN3ZXIiCitQQVNTIGVycm9yUmVhc29uLm5hbWUgaXMgIkludmFs
aWQgY3JlYXRlQW5zd2VyIGFyZ3VtZW50LiIKK1BBU1MgcGMuY3JlYXRlQW5zd2VyKHJlcXVlc3RT
dWNjZWVkZWQzLCByZXF1ZXN0RmFpbGVkMSwge3JlcXVlc3RJZGVudGl0eToiaWZjb25maWd1cmVk
In0pOyBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlz
IHRydWUKIAogVEVTVCBDT01QTEVURQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9tZWRp
YXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi1jcmVhdGVBbnN3ZXIuaHRtbCBiL0xheW91dFRlc3Rz
L2Zhc3QvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24tY3JlYXRlQW5zd2VyLmh0bWwKaW5k
ZXggNDVmOTE2OTFjODc5ZmQwOTEzYWJmMmJiNTY4YzM1ODRjOWI2NmEwNS4uM2RjZGY0MThhYzli
ZjEwMTE0ZWY0M2MzZDk5ZTU3ZDNiZjhiMWFmNCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFz
dC9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi1jcmVhdGVBbnN3ZXIuaHRtbAorKysgYi9M
YXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLWNyZWF0ZUFuc3dl
ci5odG1sCkBAIC05LDcgKzksNyBAQAogCiAgICAgICAgICAgICB2YXIgcGMgPSBudWxsOwogCi0g
ICAgICAgICAgICBmdW5jdGlvbiByZXF1ZXN0U3VjY2VlZGVkNChzZCkKKyAgICAgICAgICAgIGZ1
bmN0aW9uIHJlcXVlc3RTdWNjZWVkZWQ1KHNkKQogICAgICAgICAgICAgewogICAgICAgICAgICAg
ICAgIHRlc3RQYXNzZWQoJ2NyZWF0ZUFuc3dlciByZXF1ZXN0IHN1Y2NlZWRlZC4nKTsKIApAQCAt
MTksMjEgKzE5LDI1IEBACiAgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CiAgICAgICAg
ICAgICB9CiAKLSAgICAgICAgICAgIGZ1bmN0aW9uIHJlcXVlc3RGYWlsZWQzKHJlYXNvbikKKyAg
ICAgICAgICAgIGZ1bmN0aW9uIHJlcXVlc3RTdWNjZWVkZWQ0KHNkKQogICAgICAgICAgICAgewot
ICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoJ2NyZWF0ZUFuc3dlciByZXF1ZXN0IGZhaWxlZC4n
KTsKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCdjcmVhdGVBbnN3ZXIgcmVxdWVzdCBzdWNj
ZWVkZWQuJyk7CiAKLSAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgICAg
ICAgICBzZXNzaW9uRGVzY3JpcHRpb24gPSBzZDsKKyAgICAgICAgICAgICAgICBzaG91bGRCZSgn
c2Vzc2lvbkRlc2NyaXB0aW9uLnR5cGUnLCAnImFuc3dlciInKTsKKworICAgICAgICAgICAgICAg
IHNob3VsZE5vdFRocm93KCdwYy5jcmVhdGVBbnN3ZXIocmVxdWVzdFN1Y2NlZWRlZDUsIHJlcXVl
c3RGYWlsZWQxLCB7cmVxdWVzdElkZW50aXR5OiJubyJ9KTsnKTsKICAgICAgICAgICAgIH0KIAog
ICAgICAgICAgICAgZnVuY3Rpb24gcmVxdWVzdFN1Y2NlZWRlZDMoc2QpCiAgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CiAgICAgICAgICAgICAgICAgdGVzdFBh
c3NlZCgnY3JlYXRlQW5zd2VyIHJlcXVlc3Qgc3VjY2VlZGVkLicpOwogCiAgICAgICAgICAgICAg
ICAgc2Vzc2lvbkRlc2NyaXB0aW9uID0gc2Q7CiAgICAgICAgICAgICAgICAgc2hvdWxkQmUoJ3Nl
c3Npb25EZXNjcmlwdGlvbi50eXBlJywgJyJhbnN3ZXIiJyk7CiAKLSAgICAgICAgICAgICAgICBz
aG91bGROb3RUaHJvdygncGMuY3JlYXRlQW5zd2VyKHJlcXVlc3RTdWNjZWVkZWQ0LCByZXF1ZXN0
RmFpbGVkMywge21hbmRhdG9yeTp7InN1Y2NlZWQiOnRydWV9fSk7Jyk7CisgICAgICAgICAgICAg
ICAgc2hvdWxkTm90VGhyb3coJ3BjLmNyZWF0ZUFuc3dlcihyZXF1ZXN0U3VjY2VlZGVkNCwgcmVx
dWVzdEZhaWxlZDEsIHtyZXF1ZXN0SWRlbnRpdHk6InllcyJ9KTsnKTsKICAgICAgICAgICAgIH0K
IAogICAgICAgICAgICAgZnVuY3Rpb24gcmVxdWVzdEZhaWxlZDIocmVhc29uKQpAQCAtNDEsOSAr
NDUsOCBAQAogICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoJ2NyZWF0ZUFuc3dlciByZXF1ZXN0
IGZhaWxlZC4nKTsKIAogICAgICAgICAgICAgICAgIGVycm9yUmVhc29uID0gcmVhc29uOwotICAg
ICAgICAgICAgICAgIHNob3VsZEJlKCdlcnJvclJlYXNvbi5uYW1lJywgJyJJbmNvbXBhdGlibGVD
b25zdHJhaW50c0Vycm9yIicpOwotCi0gICAgICAgICAgICAgICAgc2hvdWxkTm90VGhyb3coJ3Bj
LmNyZWF0ZUFuc3dlcihyZXF1ZXN0U3VjY2VlZGVkMywgcmVxdWVzdEZhaWxlZDMpOycpOworICAg
ICAgICAgICAgICAgIHNob3VsZEJlKCdlcnJvclJlYXNvbi5uYW1lJywgJyJJbnZhbGlkIGNyZWF0
ZUFuc3dlciBhcmd1bWVudC4iJyk7CisgICAgICAgICAgICAgICAgc2hvdWxkTm90VGhyb3coJ3Bj
LmNyZWF0ZUFuc3dlcihyZXF1ZXN0U3VjY2VlZGVkMywgcmVxdWVzdEZhaWxlZDEsIHtyZXF1ZXN0
SWRlbnRpdHk6ImlmY29uZmlndXJlZCJ9KTsnKTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAg
ICAgZnVuY3Rpb24gcmVxdWVzdFN1Y2NlZWRlZDIoKQpAQCAtNzgsNyArODEsNyBAQAogICAgICAg
ICAgICAgZnVuY3Rpb24gc2V0RGVzY3JpcHRpb25TdWNjZWVkZWQoKQogICAgICAgICAgICAgewog
ICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoJ3NldFJlbW90ZURlc2NyaXB0aW9uIHN1Y2NlZWRl
ZC4nKTsKLSAgICAgICAgICAgICAgICBzaG91bGROb3RUaHJvdygncGMuY3JlYXRlQW5zd2VyKHJl
cXVlc3RTdWNjZWVkZWQyLCByZXF1ZXN0RmFpbGVkMiwge21hbmRhdG9yeTp7InN1Y2NlZWQiOmZh
bHNlfX0pOycpOworICAgICAgICAgICAgICAgIHNob3VsZFRocm93KCdwYy5jcmVhdGVBbnN3ZXIo
cmVxdWVzdFN1Y2NlZWRlZDIsIHJlcXVlc3RGYWlsZWQyLCB7fSk7Jyk7CiAgICAgICAgICAgICB9
CiAKICAgICAgICAgICAgIHBjID0gbmV3IHdlYmtpdFJUQ1BlZXJDb25uZWN0aW9uKHtpY2VTZXJ2
ZXJzOlt7dXJsczonc3R1bjpmb28uY29tJ31dfSk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9m
YXN0L21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLWNyZWF0ZU9mZmVyLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24tY3JlYXRl
T2ZmZXItZXhwZWN0ZWQudHh0CmluZGV4IDU1YWVlZDg5ZDZiNmE4OTVlODQ1MTUyZTUyZGY3NGRm
NzczMjg4YmUuLmZiNzBiYjk2MjEyYmM4OGNmZWE1OGJjOWE3NWJkOTgzZGU5MzkyNDcgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24tY3Jl
YXRlT2ZmZXItZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0v
UlRDUGVlckNvbm5lY3Rpb24tY3JlYXRlT2ZmZXItZXhwZWN0ZWQudHh0CkBAIC0zLDEzICszLDI4
IEBAIFRlc3RzIFJUQ1BlZXJDb25uZWN0aW9uIGNyZWF0ZU9mZmVyLgogT24gc3VjY2VzcywgeW91
IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1Qg
Q09NUExFVEUiLgogCiAKLVBBU1MgcGMuY3JlYXRlT2ZmZXIocmVxdWVzdFN1Y2NlZWRlZDEsIHJl
cXVlc3RGYWlsZWQxLCB7bWFuZGF0b3J5Onsic3VjY2VlZCI6dHJ1ZX19KTsgZGlkIG5vdCB0aHJv
dyBleGNlcHRpb24uCitQQVNTIHBjLmNyZWF0ZU9mZmVyKHJlcXVlc3RTdWNjZWVkZWQxLCByZXF1
ZXN0RmFpbGVkMSk7IGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgogUEFTUyBjcmVhdGVPZmZlciBy
ZXF1ZXN0IHN1Y2NlZWRlZC4KIFBBU1Mgc2Vzc2lvbkRlc2NyaXB0aW9uLnR5cGUgaXMgIm9mZmVy
IgotUEFTUyBwYy5jcmVhdGVPZmZlcihyZXF1ZXN0U3VjY2VlZGVkMiwgcmVxdWVzdEZhaWxlZDIs
IHttYW5kYXRvcnk6eyJzdWNjZWVkIjpmYWxzZX19KTsgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24u
CitQQVNTIHBjLmNyZWF0ZU9mZmVyKHJlcXVlc3RTdWNjZWVkZWQyLCByZXF1ZXN0RmFpbGVkMiwg
e30pOyB0aHJldyBleGNlcHRpb24gRXJyb3I6IFR5cGVNaXNtYXRjaEVycm9yOiBET00gRXhjZXB0
aW9uIDE3LgogUEFTUyBjcmVhdGVPZmZlciByZXF1ZXN0IGZhaWxlZC4KLVBBU1MgZXJyb3JSZWFz
b24ubmFtZSBpcyAiSW5jb21wYXRpYmxlQ29uc3RyYWludHNFcnJvciIKLVBBU1MgcGMuY3JlYXRl
T2ZmZXIocmVxdWVzdFN1Y2NlZWRlZDMsIHJlcXVlc3RGYWlsZWQxKTsgZGlkIG5vdCB0aHJvdyBl
eGNlcHRpb24uCitQQVNTIGVycm9yUmVhc29uLm5hbWUgaXMgIkludmFsaWQgY3JlYXRlT2ZmZXIg
YXJndW1lbnQuIgorUEFTUyBwYy5jcmVhdGVPZmZlcihyZXF1ZXN0U3VjY2VlZGVkMiwgcmVxdWVz
dEZhaWxlZDMsIHtyZXF1ZXN0SWRlbnRpdHk6InllcyIsIG9mZmVyVG9SZWNlaXZlQXVkaW86MH0p
OyB0aHJldyBleGNlcHRpb24gRXJyb3I6IFR5cGVNaXNtYXRjaEVycm9yOiBET00gRXhjZXB0aW9u
IDE3LgorUEFTUyBjcmVhdGVPZmZlciByZXF1ZXN0IGZhaWxlZC4KK1BBU1MgZXJyb3JSZWFzb24u
bmFtZSBpcyAiSW52YWxpZCBjcmVhdGVPZmZlciBhcmd1bWVudC4iCitQQVNTIHBjLmNyZWF0ZU9m
ZmVyKHJlcXVlc3RTdWNjZWVkZWQyLCByZXF1ZXN0RmFpbGVkNCwge3JlcXVlc3RJZGVudGl0eToi
eWVzIiwgb2ZmZXJUb1JlY2VpdmVWaWRlbzowfSk7IHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogVHlw
ZU1pc21hdGNoRXJyb3I6IERPTSBFeGNlcHRpb24gMTcuCitQQVNTIGNyZWF0ZU9mZmVyIHJlcXVl
c3QgZmFpbGVkLgorUEFTUyBlcnJvclJlYXNvbi5uYW1lIGlzICJJbnZhbGlkIGNyZWF0ZU9mZmVy
IGFyZ3VtZW50LiIKK1BBU1MgcGMuY3JlYXRlT2ZmZXIocmVxdWVzdFN1Y2NlZWRlZDIsIHJlcXVl
c3RGYWlsZWQ1LCB7b2ZmZXJUb1JlY2VpdmVWaWRlbzowLCBvZmZlclRvUmVjZWl2ZUF1ZGlvOjB9
KTsgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBUeXBlTWlzbWF0Y2hFcnJvcjogRE9NIEV4Y2VwdGlv
biAxNy4KK1BBU1MgY3JlYXRlT2ZmZXIgcmVxdWVzdCBmYWlsZWQuCitQQVNTIGVycm9yUmVhc29u
Lm5hbWUgaXMgIkludmFsaWQgY3JlYXRlT2ZmZXIgYXJndW1lbnQuIgorUEFTUyBwYy5jcmVhdGVP
ZmZlcihyZXF1ZXN0U3VjY2VlZGVkMiwgcmVxdWVzdEZhaWxlZDYsIHtyZXF1ZXN0SWRlbnRpdHk6
InllcyIsIG9mZmVyVG9SZWNlaXZlVmlkZW86IiIsIG9mZmVyVG9SZWNlaXZlQXVkaW86MH0pOyB0
aHJldyBleGNlcHRpb24gRXJyb3I6IFR5cGVNaXNtYXRjaEVycm9yOiBET00gRXhjZXB0aW9uIDE3
LgorUEFTUyBjcmVhdGVPZmZlciByZXF1ZXN0IGZhaWxlZC4KK1BBU1MgZXJyb3JSZWFzb24ubmFt
ZSBpcyAiSW52YWxpZCBjcmVhdGVPZmZlciBhcmd1bWVudC4iCitQQVNTIHBjLmNyZWF0ZU9mZmVy
KHJlcXVlc3RTdWNjZWVkZWQyLCByZXF1ZXN0RmFpbGVkNywge3JlcXVlc3RJZGVudGl0eToieWVz
Iiwgb2ZmZXJUb1JlY2VpdmVWaWRlbzowLCBvZmZlclRvUmVjZWl2ZUF1ZGlvOiIifSk7IHRocmV3
IGV4Y2VwdGlvbiBFcnJvcjogVHlwZU1pc21hdGNoRXJyb3I6IERPTSBFeGNlcHRpb24gMTcuCitQ
QVNTIGNyZWF0ZU9mZmVyIHJlcXVlc3QgZmFpbGVkLgorUEFTUyBlcnJvclJlYXNvbi5uYW1lIGlz
ICJJbnZhbGlkIGNyZWF0ZU9mZmVyIGFyZ3VtZW50LiIKK1BBU1MgcGMuY3JlYXRlT2ZmZXIocmVx
dWVzdFN1Y2NlZWRlZDMsIHJlcXVlc3RGYWlsZWQxLCB7cmVxdWVzdElkZW50aXR5OiJ5ZXMiLCBv
ZmZlclRvUmVjZWl2ZVZpZGVvOjAsIG9mZmVyVG9SZWNlaXZlQXVkaW86MH0pOyBkaWQgbm90IHRo
cm93IGV4Y2VwdGlvbi4KIFBBU1MgY3JlYXRlT2ZmZXIgcmVxdWVzdCBzdWNjZWVkZWQuCiBQQVNT
IHNlc3Npb25EZXNjcmlwdGlvbi50eXBlIGlzICJvZmZlciIKIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFy
c2VkIGlzIHRydWUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vUlRD
UGVlckNvbm5lY3Rpb24tY3JlYXRlT2ZmZXIuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFz
dHJlYW0vUlRDUGVlckNvbm5lY3Rpb24tY3JlYXRlT2ZmZXIuaHRtbAppbmRleCBkZTRjZDUyNzdi
MmRiYzVjYzY5ZTU5YjA1NTk2ODA1NzVlYjk1NjVkLi4wNDdjYjg5YTk3MTcwMDNiYjMzZWJhN2Ji
ZmY2ZjIzMjliMmUwM2I0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFt
L1JUQ1BlZXJDb25uZWN0aW9uLWNyZWF0ZU9mZmVyLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFz
dC9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi1jcmVhdGVPZmZlci5odG1sCkBAIC0xOCwx
NCArMTgsNjQgQEAKICAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKICAgICAgICAgICAg
IH0KIAorICAgICAgICAgICAgZnVuY3Rpb24gcmVxdWVzdEZhaWxlZDcocmVhc29uKQorICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoJ2NyZWF0ZU9mZmVyIHJlcXVlc3Qg
ZmFpbGVkLicpOworCisgICAgICAgICAgICAgICAgZXJyb3JSZWFzb24gPSByZWFzb247CisgICAg
ICAgICAgICAgICAgc2hvdWxkQmUoJ2Vycm9yUmVhc29uLm5hbWUnLCAnIkludmFsaWQgY3JlYXRl
T2ZmZXIgYXJndW1lbnQuIicpOworCisgICAgICAgICAgICAgICAgc2hvdWxkTm90VGhyb3coJ3Bj
LmNyZWF0ZU9mZmVyKHJlcXVlc3RTdWNjZWVkZWQzLCByZXF1ZXN0RmFpbGVkMSwge3JlcXVlc3RJ
ZGVudGl0eToieWVzIiwgb2ZmZXJUb1JlY2VpdmVWaWRlbzowLCBvZmZlclRvUmVjZWl2ZUF1ZGlv
OjB9KTsnKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZnVuY3Rpb24gcmVxdWVzdEZh
aWxlZDYocmVhc29uKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQo
J2NyZWF0ZU9mZmVyIHJlcXVlc3QgZmFpbGVkLicpOworCisgICAgICAgICAgICAgICAgZXJyb3JS
ZWFzb24gPSByZWFzb247CisgICAgICAgICAgICAgICAgc2hvdWxkQmUoJ2Vycm9yUmVhc29uLm5h
bWUnLCAnIkludmFsaWQgY3JlYXRlT2ZmZXIgYXJndW1lbnQuIicpOworCisgICAgICAgICAgICAg
ICAgc2hvdWxkVGhyb3coJ3BjLmNyZWF0ZU9mZmVyKHJlcXVlc3RTdWNjZWVkZWQyLCByZXF1ZXN0
RmFpbGVkNywge3JlcXVlc3RJZGVudGl0eToieWVzIiwgb2ZmZXJUb1JlY2VpdmVWaWRlbzowLCBv
ZmZlclRvUmVjZWl2ZUF1ZGlvOiIifSk7Jyk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IGZ1bmN0aW9uIHJlcXVlc3RGYWlsZWQ1KHJlYXNvbikKKyAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICB0ZXN0UGFzc2VkKCdjcmVhdGVPZmZlciByZXF1ZXN0IGZhaWxlZC4nKTsKKworICAg
ICAgICAgICAgICAgIGVycm9yUmVhc29uID0gcmVhc29uOworICAgICAgICAgICAgICAgIHNob3Vs
ZEJlKCdlcnJvclJlYXNvbi5uYW1lJywgJyJJbnZhbGlkIGNyZWF0ZU9mZmVyIGFyZ3VtZW50LiIn
KTsKKworICAgICAgICAgICAgICAgIHNob3VsZFRocm93KCdwYy5jcmVhdGVPZmZlcihyZXF1ZXN0
U3VjY2VlZGVkMiwgcmVxdWVzdEZhaWxlZDYsIHtyZXF1ZXN0SWRlbnRpdHk6InllcyIsIG9mZmVy
VG9SZWNlaXZlVmlkZW86IiIsIG9mZmVyVG9SZWNlaXZlQXVkaW86MH0pOycpOworICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICBmdW5jdGlvbiByZXF1ZXN0RmFpbGVkNChyZWFzb24pCisgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgnY3JlYXRlT2ZmZXIgcmVxdWVz
dCBmYWlsZWQuJyk7CisKKyAgICAgICAgICAgICAgICBlcnJvclJlYXNvbiA9IHJlYXNvbjsKKyAg
ICAgICAgICAgICAgICBzaG91bGRCZSgnZXJyb3JSZWFzb24ubmFtZScsICciSW52YWxpZCBjcmVh
dGVPZmZlciBhcmd1bWVudC4iJyk7CisKKyAgICAgICAgICAgICAgICBzaG91bGRUaHJvdygncGMu
Y3JlYXRlT2ZmZXIocmVxdWVzdFN1Y2NlZWRlZDIsIHJlcXVlc3RGYWlsZWQ1LCB7b2ZmZXJUb1Jl
Y2VpdmVWaWRlbzowLCBvZmZlclRvUmVjZWl2ZUF1ZGlvOjB9KTsnKTsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgZnVuY3Rpb24gcmVxdWVzdEZhaWxlZDMocmVhc29uKQorICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoJ2NyZWF0ZU9mZmVyIHJlcXVlc3QgZmFp
bGVkLicpOworCisgICAgICAgICAgICAgICAgZXJyb3JSZWFzb24gPSByZWFzb247CisgICAgICAg
ICAgICAgICAgc2hvdWxkQmUoJ2Vycm9yUmVhc29uLm5hbWUnLCAnIkludmFsaWQgY3JlYXRlT2Zm
ZXIgYXJndW1lbnQuIicpOworCisgICAgICAgICAgICAgICAgc2hvdWxkVGhyb3coJ3BjLmNyZWF0
ZU9mZmVyKHJlcXVlc3RTdWNjZWVkZWQyLCByZXF1ZXN0RmFpbGVkNCwge3JlcXVlc3RJZGVudGl0
eToieWVzIiwgb2ZmZXJUb1JlY2VpdmVWaWRlbzowfSk7Jyk7CisgICAgICAgICAgICB9CisKICAg
ICAgICAgICAgIGZ1bmN0aW9uIHJlcXVlc3RGYWlsZWQyKHJlYXNvbikKICAgICAgICAgICAgIHsK
ICAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCdjcmVhdGVPZmZlciByZXF1ZXN0IGZhaWxlZC4n
KTsKIAogICAgICAgICAgICAgICAgIGVycm9yUmVhc29uID0gcmVhc29uOwotICAgICAgICAgICAg
ICAgIHNob3VsZEJlKCdlcnJvclJlYXNvbi5uYW1lJywgJyJJbmNvbXBhdGlibGVDb25zdHJhaW50
c0Vycm9yIicpOworICAgICAgICAgICAgICAgIHNob3VsZEJlKCdlcnJvclJlYXNvbi5uYW1lJywg
JyJJbnZhbGlkIGNyZWF0ZU9mZmVyIGFyZ3VtZW50LiInKTsKIAotICAgICAgICAgICAgICAgIHNo
b3VsZE5vdFRocm93KCdwYy5jcmVhdGVPZmZlcihyZXF1ZXN0U3VjY2VlZGVkMywgcmVxdWVzdEZh
aWxlZDEpOycpOworICAgICAgICAgICAgICAgIHNob3VsZFRocm93KCdwYy5jcmVhdGVPZmZlcihy
ZXF1ZXN0U3VjY2VlZGVkMiwgcmVxdWVzdEZhaWxlZDMsIHtyZXF1ZXN0SWRlbnRpdHk6InllcyIs
IG9mZmVyVG9SZWNlaXZlQXVkaW86MH0pOycpOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAg
ICBmdW5jdGlvbiByZXF1ZXN0U3VjY2VlZGVkMihzZCkKQEAgLTQ3LDExICs5NywxMSBAQAogICAg
ICAgICAgICAgICAgIHNlc3Npb25EZXNjcmlwdGlvbiA9IHNkOwogICAgICAgICAgICAgICAgIHNo
b3VsZEJlKCdzZXNzaW9uRGVzY3JpcHRpb24udHlwZScsICcib2ZmZXIiJyk7CiAKLSAgICAgICAg
ICAgICAgICBzaG91bGROb3RUaHJvdygncGMuY3JlYXRlT2ZmZXIocmVxdWVzdFN1Y2NlZWRlZDIs
IHJlcXVlc3RGYWlsZWQyLCB7bWFuZGF0b3J5Onsic3VjY2VlZCI6ZmFsc2V9fSk7Jyk7CisgICAg
ICAgICAgICAgICAgc2hvdWxkVGhyb3coJ3BjLmNyZWF0ZU9mZmVyKHJlcXVlc3RTdWNjZWVkZWQy
LCByZXF1ZXN0RmFpbGVkMiwge30pOycpOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBw
YyA9IG5ldyB3ZWJraXRSVENQZWVyQ29ubmVjdGlvbih7aWNlU2VydmVyczpbe3VybHM6J3N0dW46
Zm9vLmNvbSd9XX0pOwotICAgICAgICAgICAgc2hvdWxkTm90VGhyb3coJ3BjLmNyZWF0ZU9mZmVy
KHJlcXVlc3RTdWNjZWVkZWQxLCByZXF1ZXN0RmFpbGVkMSwge21hbmRhdG9yeTp7InN1Y2NlZWQi
OnRydWV9fSk7Jyk7CisgICAgICAgICAgICBzaG91bGROb3RUaHJvdygncGMuY3JlYXRlT2ZmZXIo
cmVxdWVzdFN1Y2NlZWRlZDEsIHJlcXVlc3RGYWlsZWQxKTsnKTsKIAogICAgICAgICAgICAgd2lu
ZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOwogICAgICAgICAgICAgd2luZG93LnN1Y2Nlc3NmdWxs
eVBhcnNlZCA9IHRydWU7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>