<?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>153229</bug_id>
          
          <creation_ts>2016-01-19 02:39:07 -0800</creation_ts>
          <short_desc>Remove PassRefPtr from ResourceRequest and FormData</short_desc>
          <delta_ts>2016-01-22 06:51:33 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>144092</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="youenn fablet">youennf</reporter>
          <assigned_to name="youenn fablet">youennf</assigned_to>
          <cc>berto</cc>
    
    <cc>cdumez</cc>
    
    <cc>cgarcia</cc>
    
    <cc>commit-queue</cc>
    
    <cc>danw</cc>
    
    <cc>galpeter</cc>
    
    <cc>gustavo</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>japhet</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>mkwst</cc>
    
    <cc>mrobinson</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1156581</commentid>
    <comment_count>0</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-01-19 02:39:07 -0800</bug_when>
    <thetext>Remove PassRefPtr from ResourceRequest and FormData</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1156585</commentid>
    <comment_count>1</comment_count>
      <attachid>269264</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-01-19 03:01:45 -0800</bug_when>
    <thetext>Created attachment 269264
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1156838</commentid>
    <comment_count>2</comment_count>
      <attachid>269264</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-01-19 18:34:08 -0800</bug_when>
    <thetext>Comment on attachment 269264
Patch

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

&gt; Source/WebCore/platform/network/ResourceRequestBase.h:126
&gt; +        void clearHTTPBody() { setHTTPBody(nullptr); }

This seems unnecessary.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1156905</commentid>
    <comment_count>3</comment_count>
      <attachid>269264</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-01-19 22:55:57 -0800</bug_when>
    <thetext>Comment on attachment 269264
Patch

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

&gt; Source/WebCore/loader/FormSubmission.cpp:261
&gt; +        frameRequest.resourceRequest().setHTTPBody(m_formData.copyRef());

Seems a shame we can’t move here. Worth investigating if we can; do we ever have to use m_formData again?

&gt; Source/WebCore/platform/network/FormData.cpp:73
&gt; +RefPtr&lt;FormData&gt; FormData::create()

Should return Ref, not RefPtr.

&gt; Source/WebCore/platform/network/FormData.cpp:78
&gt; +RefPtr&lt;FormData&gt; FormData::create(const void* data, size_t size)

Should return Ref, not RefPtr.

&gt; Source/WebCore/platform/network/FormData.cpp:92
&gt; +RefPtr&lt;FormData&gt; FormData::create(const Vector&lt;char&gt;&amp; vector)

Should return Ref, not RefPtr.

&gt; Source/WebCore/platform/network/FormData.cpp:99
&gt; +RefPtr&lt;FormData&gt; FormData::create(const FormDataList&amp; list, const TextEncoding&amp; encoding, EncodingType encodingType)

Should return Ref, not RefPtr.

&gt; Source/WebCore/platform/network/FormData.cpp:106
&gt; +RefPtr&lt;FormData&gt; FormData::createMultiPart(const FormDataList&amp; list, const TextEncoding&amp; encoding, Document* document)

Should return Ref, not RefPtr.

&gt; Source/WebCore/platform/network/FormData.cpp:113
&gt; +RefPtr&lt;FormData&gt; FormData::copy() const

Should return Ref, not RefPtr.

&gt; Source/WebCore/platform/network/FormData.cpp:118
&gt; +RefPtr&lt;FormData&gt; FormData::deepCopy() const

Should return Ref, not RefPtr.

&gt; Source/WebCore/platform/network/FormData.cpp:305
&gt; +RefPtr&lt;FormData&gt; FormData::resolveBlobReferences()

Should return Ref, not RefPtr.

&gt; Source/WebCore/platform/network/FormData.h:294
&gt;      RefPtr&lt;FormData&gt; data = FormData::create();

This function uses release() below, and should not.

&gt;&gt; Source/WebCore/platform/network/ResourceRequestBase.h:126
&gt;&gt; +        WEBCORE_EXPORT void setHTTPBody(RefPtr&lt;FormData&gt;&amp;&amp;);
&gt;&gt; +        WEBCORE_EXPORT void setHTTPBody(FormData* httpBody) { setHTTPBody(RefPtr&lt;FormData&gt;(httpBody)); }
&gt;&gt; +        void clearHTTPBody() { setHTTPBody(nullptr); }
&gt; 
&gt; This seems unnecessary.

The overloading of setHTTPBody seems pretty messy. Can we avoid it?

And, as Alex says, I think setHTTPBody(nullptr) is clear enough by itself; don’t think we need to add a named clearHTTPBody.

&gt; Source/WebCore/platform/network/cf/FormDataStreamCFNet.cpp:353
&gt;      RefPtr&lt;FormData&gt; formData = prpFormData;

This seems peculiar. The &quot;prp&quot; here stands for PassRefPtr, and so it should not have that name any more. I don’t think we need a RefPtr local variable at all now that this is not using PassRefPtr.

&gt; Source/WebCore/platform/network/mac/FormDataStreamMac.mm:43
&gt; +void setHTTPBody(NSMutableURLRequest *request, FormData* prpFormData)

Again, in &quot;prpFormData&quot; the &quot;prp&quot; is PassRefPtr and so we should get rid of it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1157261</commentid>
    <comment_count>4</comment_count>
      <attachid>269446</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-01-21 04:45:35 -0800</bug_when>
    <thetext>Created attachment 269446
Removing clearHTTPBody</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1157285</commentid>
    <comment_count>5</comment_count>
      <attachid>269452</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-01-21 06:50:08 -0800</bug_when>
    <thetext>Created attachment 269452
Updated according review</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1157286</commentid>
    <comment_count>6</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-01-21 06:55:07 -0800</bug_when>
    <thetext>Thanks for the reviews.

(In reply to comment #2)
&gt; Comment on attachment 269264 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=269264&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/network/ResourceRequestBase.h:126
&gt; &gt; +        void clearHTTPBody() { setHTTPBody(nullptr); }
&gt; 
&gt; This seems unnecessary.

I removed it.

&gt; &gt; Source/WebCore/loader/FormSubmission.cpp:261
&gt; &gt; +        frameRequest.resourceRequest().setHTTPBody(m_formData.copyRef());
&gt; 
&gt; Seems a shame we can’t move here. Worth investigating if we can; do we ever
&gt; have to use m_formData again?

I think we can remove the copyRef, as the code is now.
But this could be broken very easily, so I kept it.
Some refactoring would probably help to remove the copyRef.
Maybe a FIXME in the code would be good to keep track of this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1157307</commentid>
    <comment_count>7</comment_count>
      <attachid>269452</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-01-21 09:22:08 -0800</bug_when>
    <thetext>Comment on attachment 269452
Updated according review

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

r=me

&gt; Source/WebCore/platform/network/FormData.h:308
&gt; +    return WTFMove(data);

I don&apos;t think we need the WTFMove() here.

&gt; Source/WebCore/platform/network/ResourceRequestBase.cpp:79
&gt; +    request-&gt;setHTTPBody(WTFMove(data-&gt;httpBody));

It seems risky to alter data before passing it to doPlatformAdopt(). Personally, I would copyRef() here as it seems more robust.

&gt; Source/WebCore/platform/network/cf/FormDataStreamCFNet.cpp:-394
&gt; -    FormCreationContext formContext = { formData.release(), length };

Can&apos;t we keep this on one line to avoid calling the default constructor unnecessarily? There has to be a way.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1157312</commentid>
    <comment_count>8</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2016-01-21 09:34:51 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; &gt; Source/WebCore/platform/network/FormData.h:308
&gt; &gt; +    return WTFMove(data);
&gt; 
&gt; I don&apos;t think we need the WTFMove() here.

Calling WTFMove with a return value is going to trigger clang&apos;s -Wpessimizing-move warning, so please remove this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1157621</commentid>
    <comment_count>9</comment_count>
      <attachid>269558</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-01-22 01:42:26 -0800</bug_when>
    <thetext>Created attachment 269558
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1157625</commentid>
    <comment_count>10</comment_count>
      <attachid>269560</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-01-22 01:57:05 -0800</bug_when>
    <thetext>Created attachment 269560
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1157626</commentid>
    <comment_count>11</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-01-22 02:00:26 -0800</bug_when>
    <thetext>&gt; r=me

Thanks

&gt; &gt; Source/WebCore/platform/network/FormData.h:308
&gt; &gt; +    return WTFMove(data);
&gt; 
&gt; I don&apos;t think we need the WTFMove() here.

I removed it.
Is there a good way to return a RefPtr&lt;&gt; from a Ref&lt;&gt;?

&gt; &gt; Source/WebCore/platform/network/ResourceRequestBase.cpp:79
&gt; &gt; +    request-&gt;setHTTPBody(WTFMove(data-&gt;httpBody));
&gt; 
&gt; It seems risky to alter data before passing it to doPlatformAdopt().
&gt; Personally, I would copyRef() here as it seems more robust.

OK

&gt; &gt; Source/WebCore/platform/network/cf/FormDataStreamCFNet.cpp:-394
&gt; &gt; -    FormCreationContext formContext = { formData.release(), length };
&gt; 
&gt; Can&apos;t we keep this on one line to avoid calling the default constructor
&gt; unnecessarily? There has to be a way.

I changed it back, code is better this way.
I guess formData will get its counter ++/--.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1157641</commentid>
    <comment_count>12</comment_count>
      <attachid>269560</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-01-22 02:50:08 -0800</bug_when>
    <thetext>Comment on attachment 269560
Patch for landing

Rejecting attachment 269560 from commit-queue.

Failed to run &quot;[&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-queues.webkit.org&apos;, &apos;--bot-id=webkit-cq-03&apos;, &apos;build&apos;, &apos;--no-clean&apos;, &apos;--no-update&apos;, &apos;--build-style=release&apos;, &apos;--port=mac&apos;]&quot; exit_code: 2 cwd: /Volumes/Data/EWS/WebKit

Last 500 characters of output:
/x86_64/FormState.dia -c /Volumes/Data/EWS/WebKit/Source/WebCore/loader/FormState.cpp -o /Volumes/Data/EWS/WebKit/WebKitBuild/WebCore.build/Release/WebCore.build/Objects-normal/x86_64/FormState.o

** BUILD FAILED **


The following build commands failed:
	CompileC /Volumes/Data/EWS/WebKit/WebKitBuild/WebCore.build/Release/WebCore.build/Objects-normal/x86_64/FormDataStreamCFNet.o platform/network/cf/FormDataStreamCFNet.cpp normal x86_64 c++ com.apple.compilers.llvm.clang.1_0.compiler
(1 failure)

Full output: http://webkit-queues.webkit.org/results/724895</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1157659</commentid>
    <comment_count>13</comment_count>
      <attachid>269571</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-01-22 05:52:59 -0800</bug_when>
    <thetext>Created attachment 269571
Patch for landing with mac build fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1157661</commentid>
    <comment_count>14</comment_count>
      <attachid>269571</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-01-22 06:51:27 -0800</bug_when>
    <thetext>Comment on attachment 269571
Patch for landing with mac build fix

Clearing flags on attachment: 269571

Committed r195450: &lt;http://trac.webkit.org/changeset/195450&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1157662</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-01-22 06:51:33 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>269264</attachid>
            <date>2016-01-19 03:01:45 -0800</date>
            <delta_ts>2016-01-21 04:45:28 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-153229-20160119120115.patch</filename>
            <type>text/plain</type>
            <size>26703</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk1MTg2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjM1NDdmOGE2YmE0MWM3
YWUzYzJjZWE1MjhiOThiYjY1M2I0NGUyYS4uMjkyNmQzN2NkM2UzNzA4NzFjYzYzMDViMzcyMjFh
MGYwMmExMmZmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYyIEBACisyMDE2LTAxLTE5ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uLmZhYmxldEBjcmYuY2Fub24uZnI+CisKKyAgICAgICAgUmVtb3Zl
IFBhc3NSZWZQdHIgZnJvbSBSZXNvdXJjZVJlcXVlc3QgYW5kIEZvcm1EYXRhCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTMyMjkKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDb3ZlcmVkIGJ5IGV4aXN0aW5n
IHRlc3RzLgorCisgICAgICAgIE1ha2luZyBSZXNvdXJjZVJlcXVlc3Q6OnNldEhUVFBCb2R5IHRh
a2UgYSBSZWZQdHI8Rm9ybURhdGE+JiYuCisgICAgICAgIEFkZGluZyBSZXNvdXJjZVJlcXVlc3Q6
OnNldEhUVFBCb2R5IHZhcmlhbnQgdGhhdCB0YWtlIGEgRm9ybURhdGEqLgorICAgICAgICBBZGRp
bmcgUmVzb3VyY2VSZXF1ZXN0OjpjbGVhckhUVFBCb2R5IGluIGxpZXUgb2Ygc2V0SFRUUEJvZHko
MCkuCisKKyAgICAgICAgTW92aW5nIEZvcm1EYXRhIGZyb20gUGFzc1JlZlB0ciB0byBSZWZQdHIu
CisKKyAgICAgICAgKiBodG1sL3BhcnNlci9YU1NBdWRpdG9yRGVsZWdhdGUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6WFNTQXVkaXRvckRlbGVnYXRlOjpkaWRCbG9ja1NjcmlwdCk6CisgICAgICAg
ICogbG9hZGVyL0Zvcm1TdWJtaXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvcm1TdWJt
aXNzaW9uOjpwb3B1bGF0ZUZyYW1lTG9hZFJlcXVlc3QpOgorICAgICAgICAqIGxvYWRlci9GcmFt
ZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6bG9hZFBvc3RSZXF1
ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpsb2FkRGlmZmVyZW50RG9jdW1l
bnRJdGVtKToKKyAgICAgICAgKiBsb2FkZXIvUGluZ0xvYWRlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpQaW5nTG9hZGVyOjpzZW5kVmlvbGF0aW9uUmVwb3J0KToKKyAgICAgICAgKiBsb2FkZXIv
UGluZ0xvYWRlci5oOgorICAgICAgICAqIHBhZ2UvQ29udGVudFNlY3VyaXR5UG9saWN5LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0eVBvbGljeTo6cmVwb3J0VmlvbGF0aW9u
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkZvcm1EYXRhOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Rm9ybURhdGE6OmNy
ZWF0ZU11bHRpUGFydCk6CisgICAgICAgIChXZWJDb3JlOjpGb3JtRGF0YTo6Y29weSk6CisgICAg
ICAgIChXZWJDb3JlOjpGb3JtRGF0YTo6ZGVlcENvcHkpOgorICAgICAgICAoV2ViQ29yZTo6Rm9y
bURhdGE6OnJlc29sdmVCbG9iUmVmZXJlbmNlcyk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay9Gb3JtRGF0YS5oOgorICAgICAgICAoV2ViQ29yZTo6Rm9ybURhdGE6OmRlY29kZSk6CisgICAg
ICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdEJhc2U6OmFkb3B0KToKKyAgICAgICAgKFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdEJhc2U6OnNldEhUVFBCb2R5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9u
ZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdEJhc2U6OnNldEhUVFBCb2R5KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdEJhc2U6OmNsZWFySFRUUEJvZHkpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2Yv
Rm9ybURhdGFTdHJlYW1DRk5ldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzZXRIVFRQQm9keSk6
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9Gb3JtRGF0YVN0cmVhbUNGTmV0Lmg6Cisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlcXVlc3RDRk5ldC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Q6OmRvVXBkYXRlUGxhdGZvcm1IVFRQQm9k
eSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Q6OnVwZGF0ZUZyb21EZWxlZ2F0
ZVByZXNlcnZpbmdPbGRQcm9wZXJ0aWVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2Nv
Y29hL1Jlc291cmNlUmVxdWVzdENvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0Ojpkb1VwZGF0ZVBsYXRmb3JtSFRUUEJvZHkpOgorICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZU1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Z2V0Rm9ybUVsZW1lbnRzQ291bnQpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvbWFjL0Zv
cm1EYXRhU3RyZWFtTWFjLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9tYWMvRm9ybURh
dGFTdHJlYW1NYWMubW06CisgICAgICAgIChXZWJDb3JlOjpzZXRIVFRQQm9keSk6CisgICAgICAg
ICogcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlSGFuZGxlU291cC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpkb1JlZGlyZWN0KToKKyAgICAgICAgKiB4bWwvWE1MSHR0cFJlcXVlc3QuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OmNyZWF0ZVJlcXVlc3QpOgorCiAy
MDE2LTAxLTE3ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAg
ICAgIE1vcmUgZGlzcGxheWxpc3QgdGVzdHMsIGFuZCBtaW5vciBjbGVhbnVwCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VM
b2cKaW5kZXggZDRmN2Q1M2VmZjI1NDhhZGE1MWQ5MzBkZGVhZmYxMjNjMDg1OGI4MC4uMjk3YWUz
NjRjM2M1YzFiZmQ1MjViMTQ2MWY2OGM1NGM3ZjZkNzYxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC93aW4vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDEzIEBACisyMDE2LTAxLTE5ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uLmZhYmxldEBj
cmYuY2Fub24uZnI+CisKKyAgICAgICAgUmVtb3ZlIFBhc3NSZWZQdHIgZnJvbSBSZXNvdXJjZVJl
cXVlc3QgYW5kIEZvcm1EYXRhCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNTMyMjkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIFdlYk11dGFibGVVUkxSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYk11dGFi
bGVVUkxSZXF1ZXN0OjpzZXRIVFRQQm9keSk6CisKIDIwMTYtMDEtMTUgIFNpbW9uIEZyYXNlciAg
PHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIEdyYXBoaWNzQ29udGV4
dDo6ZHJhd0NvbnZleFBvbHlnb24oKSBhbmQgR3JhcGhpY3NDb250ZXh0OjpjbGlwQ29udmV4UG9s
eWdvbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cKaW5kZXggYTQ5NzJmMTE0NDQ2ZGY5ODMxN2U5ZDljY2U2YjFmZWJkZDhm
NWZlMi4uMmQ0ZDJhYzgwNGIwMmU4MGY3YThlNjljYmQ4ZTkyZTE2YmE1NTFiZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE1IEBACisyMDE2LTAxLTE5ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uLmZh
YmxldEBjcmYuY2Fub24uZnI+CisKKyAgICAgICAgUmVtb3ZlIFBhc3NSZWZQdHIgZnJvbSBSZXNv
dXJjZVJlcXVlc3QgYW5kIEZvcm1EYXRhCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNTMyMjkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJh
bWV0ZXJzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRl
cnM6OmRlY29kZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hl
RW50cnkuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OkVudHJ5OjpFbnRyeSk6
CisKIDIwMTYtMDEtMTcgIEplcmVteSBIdWRkbGVzdG9uIFNlcXVvaWEgIDxqZXJlbXlodUBhcHBs
ZS5jb20+CiAKICAgICAgICAgQWRkIHF1b3RlcyBhcm91bmQgJHtDTUFLRV9TSEFSRURfTElOS0VS
X0ZMQUdTfSBpbiBjYXNlIGl0IGlzIHVuc2V0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRm9ybVN1Ym1pc3Npb24uY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zvcm1TdWJt
aXNzaW9uLmNwcAppbmRleCAwMTc4NmJhZDEzYTQyNDZmZDRiYzQxNGU0Nzc2YWMyM2IwZjY0YmQy
Li5hNGE0YjM3NWFlYTkxODJiYWY5MTlhMDI3MzA2NmU5MWUzNGY2NjBmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRm9ybVN1Ym1pc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9Gb3JtU3VibWlzc2lvbi5jcHAKQEAgLTI1OCw3ICsyNTgsNyBAQCB2b2lkIEZv
cm1TdWJtaXNzaW9uOjpwb3B1bGF0ZUZyYW1lTG9hZFJlcXVlc3QoRnJhbWVMb2FkUmVxdWVzdCYg
ZnJhbWVSZXF1ZXN0KQogCiAgICAgaWYgKG1fbWV0aG9kID09IEZvcm1TdWJtaXNzaW9uOjpQb3N0
TWV0aG9kKSB7CiAgICAgICAgIGZyYW1lUmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKS5zZXRIVFRQ
TWV0aG9kKCJQT1NUIik7Ci0gICAgICAgIGZyYW1lUmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKS5z
ZXRIVFRQQm9keShtX2Zvcm1EYXRhKTsKKyAgICAgICAgZnJhbWVSZXF1ZXN0LnJlc291cmNlUmVx
dWVzdCgpLnNldEhUVFBCb2R5KG1fZm9ybURhdGEuY29weVJlZigpKTsKIAogICAgICAgICAvLyBj
b25zdHJ1Y3Qgc29tZSB1c2VyIGhlYWRlcnMgaWYgbmVjZXNzYXJ5CiAgICAgICAgIGlmIChtX2Jv
dW5kYXJ5LmlzRW1wdHkoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFt
ZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCmluZGV4
IGUwYWIzNGZjYjU3NDZiMWYyMWYxYTRkYmI0YzQ2NTlmZmNmY2IxZjcuLmM0NDc3ZjYyMzY1ZmQ4
NTdlN2YyZTEzYmUxODBmOWQ2ZDllYmQ3NGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9GcmFtZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9h
ZGVyLmNwcApAQCAtMjY0NCw3ICsyNjQ0LDYgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZFBvc3RS
ZXF1ZXN0KGNvbnN0IEZyYW1lTG9hZFJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFN0cmluZyYKIAog
ICAgIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgaW5SZXF1ZXN0ID0gcmVxdWVzdC5yZXNvdXJjZVJl
cXVlc3QoKTsKICAgICBjb25zdCBVUkwmIHVybCA9IGluUmVxdWVzdC51cmwoKTsKLSAgICBSZWZQ
dHI8Rm9ybURhdGE+IGZvcm1EYXRhID0gaW5SZXF1ZXN0Lmh0dHBCb2R5KCk7CiAgICAgY29uc3Qg
U3RyaW5nJiBjb250ZW50VHlwZSA9IGluUmVxdWVzdC5odHRwQ29udGVudFR5cGUoKTsKICAgICBT
dHJpbmcgb3JpZ2luID0gaW5SZXF1ZXN0Lmh0dHBPcmlnaW4oKTsKIApAQCAtMjY1NCw3ICsyNjUz
LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZFBvc3RSZXF1ZXN0KGNvbnN0IEZyYW1lTG9hZFJl
cXVlc3QmIHJlcXVlc3QsIGNvbnN0IFN0cmluZyYKICAgICAgICAgd29ya2luZ1Jlc291cmNlUmVx
dWVzdC5zZXRIVFRQUmVmZXJyZXIocmVmZXJyZXIpOwogICAgIHdvcmtpbmdSZXNvdXJjZVJlcXVl
c3Quc2V0SFRUUE9yaWdpbihvcmlnaW4pOwogICAgIHdvcmtpbmdSZXNvdXJjZVJlcXVlc3Quc2V0
SFRUUE1ldGhvZCgiUE9TVCIpOwotICAgIHdvcmtpbmdSZXNvdXJjZVJlcXVlc3Quc2V0SFRUUEJv
ZHkoZm9ybURhdGEpOworICAgIHdvcmtpbmdSZXNvdXJjZVJlcXVlc3Quc2V0SFRUUEJvZHkoaW5S
ZXF1ZXN0Lmh0dHBCb2R5KCkpOwogICAgIHdvcmtpbmdSZXNvdXJjZVJlcXVlc3Quc2V0SFRUUENv
bnRlbnRUeXBlKGNvbnRlbnRUeXBlKTsKICAgICBhZGRFeHRyYUZpZWxkc1RvUmVxdWVzdCh3b3Jr
aW5nUmVzb3VyY2VSZXF1ZXN0LCBsb2FkVHlwZSwgdHJ1ZSk7CiAKQEAgLTMyODksNyArMzI4OCw3
IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmxvYWREaWZmZXJlbnREb2N1bWVudEl0ZW0oSGlzdG9yeUl0
ZW0mIGl0ZW0sIEZyYW1lTG9hZFR5cGUgbG9hCiAgICAgICAgIGZvcm1EYXRhLT5nZW5lcmF0ZUZp
bGVzKG1fZnJhbWUuZG9jdW1lbnQoKSk7CiAKICAgICAgICAgcmVxdWVzdC5zZXRIVFRQTWV0aG9k
KCJQT1NUIik7Ci0gICAgICAgIHJlcXVlc3Quc2V0SFRUUEJvZHkoZm9ybURhdGEpOworICAgICAg
ICByZXF1ZXN0LnNldEhUVFBCb2R5KFdURk1vdmUoZm9ybURhdGEpKTsKICAgICAgICAgcmVxdWVz
dC5zZXRIVFRQQ29udGVudFR5cGUoaXRlbS5mb3JtQ29udGVudFR5cGUoKSk7CiAgICAgICAgIFJl
ZlB0cjxTZWN1cml0eU9yaWdpbj4gc2VjdXJpdHlPcmlnaW4gPSBTZWN1cml0eU9yaWdpbjo6Y3Jl
YXRlRnJvbVN0cmluZyhpdGVtLnJlZmVycmVyKCkpOwogICAgICAgICBhZGRIVFRQT3JpZ2luSWZO
ZWVkZWQocmVxdWVzdCwgc2VjdXJpdHlPcmlnaW4tPnRvU3RyaW5nKCkpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL1BpbmdMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1BpbmdMb2FkZXIuY3BwCmluZGV4IGM4MGIyZTQwNTVlMGVmMWQyMjRkNzlkNDcyZTFiM2Jl
MzUwZjhkYTkuLjdmOGRkNGU0YmRjNzFiZDkxNjA1N2E3NzNlZTMyZjJkMzYwMzY4YWQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9QaW5nTG9hZGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvUGluZ0xvYWRlci5jcHAKQEAgLTEyMyw3ICsxMjMsNyBAQCB2b2lkIFBp
bmdMb2FkZXI6OnNlbmRQaW5nKEZyYW1lJiBmcmFtZSwgY29uc3QgVVJMJiBwaW5nVVJMLCBjb25z
dCBVUkwmIGRlc3RpbmF0aQogICAgIHN0YXJ0UGluZ0xvYWQoZnJhbWUsIHJlcXVlc3QpOwogfQog
Ci12b2lkIFBpbmdMb2FkZXI6OnNlbmRWaW9sYXRpb25SZXBvcnQoRnJhbWUmIGZyYW1lLCBjb25z
dCBVUkwmIHJlcG9ydFVSTCwgUGFzc1JlZlB0cjxGb3JtRGF0YT4gcmVwb3J0KQordm9pZCBQaW5n
TG9hZGVyOjpzZW5kVmlvbGF0aW9uUmVwb3J0KEZyYW1lJiBmcmFtZSwgY29uc3QgVVJMJiByZXBv
cnRVUkwsIFJlZlB0cjxGb3JtRGF0YT4mJiByZXBvcnQpCiB7CiAgICAgUmVzb3VyY2VSZXF1ZXN0
IHJlcXVlc3QocmVwb3J0VVJMKTsKIApAQCAtMTM0LDcgKzEzNCw3IEBAIHZvaWQgUGluZ0xvYWRl
cjo6c2VuZFZpb2xhdGlvblJlcG9ydChGcmFtZSYgZnJhbWUsIGNvbnN0IFVSTCYgcmVwb3J0VVJM
LCBQYXNzUmVmCiAKICAgICByZXF1ZXN0LnNldEhUVFBNZXRob2QoIlBPU1QiKTsKICAgICByZXF1
ZXN0LnNldEhUVFBDb250ZW50VHlwZSgiYXBwbGljYXRpb24vanNvbiIpOwotICAgIHJlcXVlc3Qu
c2V0SFRUUEJvZHkocmVwb3J0KTsKKyAgICByZXF1ZXN0LnNldEhUVFBCb2R5KFdURk1vdmUocmVw
b3J0KSk7CiAKICAgICBib29sIHJlbW92ZUNvb2tpZXMgPSB0cnVlOwogICAgIGlmIChEb2N1bWVu
dCogZG9jdW1lbnQgPSBmcmFtZS5kb2N1bWVudCgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvUGluZ0xvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1BpbmdMb2Fk
ZXIuaAppbmRleCAwNDVkZTEyMWVjMmQ3M2NjMDM1MGY0YTkwZWRiN2RkZWVlZDRkZGY4Li41OWUx
Y2Y3ZjJmY2Y2OWM1N2YzOTFkZDZjZGEwOWQ2MjA4MGNlN2RjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvUGluZ0xvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Q
aW5nTG9hZGVyLmgKQEAgLTMyLDcgKzMyLDcgQEAKICNpZm5kZWYgUGluZ0xvYWRlcl9oCiAjZGVm
aW5lIFBpbmdMb2FkZXJfaAogCi0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRl
IDx3dGYvUmVmUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNDUsNyArNDUsNyBA
QCBjbGFzcyBQaW5nTG9hZGVyIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBsb2FkSW1hZ2Uo
RnJhbWUmLCBjb25zdCBVUkwmKTsKICAgICBzdGF0aWMgdm9pZCBzZW5kUGluZyhGcmFtZSYsIGNv
bnN0IFVSTCYgcGluZ1VSTCwgY29uc3QgVVJMJiBkZXN0aW5hdGlvblVSTCk7Ci0gICAgc3RhdGlj
IHZvaWQgc2VuZFZpb2xhdGlvblJlcG9ydChGcmFtZSYsIGNvbnN0IFVSTCYgcmVwb3J0VVJMLCBQ
YXNzUmVmUHRyPEZvcm1EYXRhPiByZXBvcnQpOworICAgIHN0YXRpYyB2b2lkIHNlbmRWaW9sYXRp
b25SZXBvcnQoRnJhbWUmLCBjb25zdCBVUkwmIHJlcG9ydFVSTCwgUmVmUHRyPEZvcm1EYXRhPiYm
IHJlcG9ydCk7CiAKIHByaXZhdGU6CiAgICAgc3RhdGljIHZvaWQgc3RhcnRQaW5nTG9hZChGcmFt
ZSYsIFJlc291cmNlUmVxdWVzdCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9D
b250ZW50U2VjdXJpdHlQb2xpY3kuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZW50U2Vj
dXJpdHlQb2xpY3kuY3BwCmluZGV4IDA1OWJiNGFkM2RiNmQyOTI0NmZlOWIxMWRhYThiMDA2YTQ1
NjMxZDMuLmIzYzYxYmY4NjdmMmY5MjA1OTRlNzRkYWUwMDczZDY4YmM0ZDVkNGUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGVudFNlY3VyaXR5UG9saWN5LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRlbnRTZWN1cml0eVBvbGljeS5jcHAKQEAgLTE2NzIsNyAr
MTY3Miw3IEBAIHZvaWQgQ29udGVudFNlY3VyaXR5UG9saWN5OjpyZXBvcnRWaW9sYXRpb24oY29u
c3QgU3RyaW5nJiBkaXJlY3RpdmVUZXh0LCBjb25zdCBTCiAgICAgUmVmUHRyPEZvcm1EYXRhPiBy
ZXBvcnQgPSBGb3JtRGF0YTo6Y3JlYXRlKHJlcG9ydE9iamVjdC0+dG9KU09OU3RyaW5nKCkudXRm
OCgpKTsKIAogICAgIGZvciAoY29uc3QgYXV0byYgdXJsIDogcmVwb3J0VVJJcykKLSAgICAgICAg
UGluZ0xvYWRlcjo6c2VuZFZpb2xhdGlvblJlcG9ydCgqZnJhbWUsIHVybCwgcmVwb3J0KTsKKyAg
ICAgICAgUGluZ0xvYWRlcjo6c2VuZFZpb2xhdGlvblJlcG9ydCgqZnJhbWUsIHVybCwgcmVwb3J0
LmNvcHlSZWYoKSk7CiB9CiAKIHZvaWQgQ29udGVudFNlY3VyaXR5UG9saWN5OjpyZXBvcnRVbnN1
cHBvcnRlZERpcmVjdGl2ZShjb25zdCBTdHJpbmcmIG5hbWUpIGNvbnN0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuY3BwCmluZGV4IGY3ZTEyYzIxMWYwMDg2MDRi
OTg5YjM1OGE3NTU2ZDAyYzY0NTRiNmYuLmFmZDkyNmU0NTZmODkzNDg3NTIwYzAzZmM1ZDNhYzNj
MjA1NTE4NzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9y
bURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEu
Y3BwCkBAIC03MCw1MiArNzAsNTIgQEAgRm9ybURhdGE6On5Gb3JtRGF0YSgpCiAgICAgcmVtb3Zl
R2VuZXJhdGVkRmlsZXNJZk5lZWRlZCgpOwogfQogCi1QYXNzUmVmUHRyPEZvcm1EYXRhPiBGb3Jt
RGF0YTo6Y3JlYXRlKCkKK1JlZlB0cjxGb3JtRGF0YT4gRm9ybURhdGE6OmNyZWF0ZSgpCiB7CiAg
ICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBGb3JtRGF0YSk7CiB9CiAKLVBhc3NSZWZQdHI8Rm9ybURh
dGE+IEZvcm1EYXRhOjpjcmVhdGUoY29uc3Qgdm9pZCogZGF0YSwgc2l6ZV90IHNpemUpCitSZWZQ
dHI8Rm9ybURhdGE+IEZvcm1EYXRhOjpjcmVhdGUoY29uc3Qgdm9pZCogZGF0YSwgc2l6ZV90IHNp
emUpCiB7CiAgICAgUmVmUHRyPEZvcm1EYXRhPiByZXN1bHQgPSBjcmVhdGUoKTsKICAgICByZXN1
bHQtPmFwcGVuZERhdGEoZGF0YSwgc2l6ZSk7Ci0gICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNlKCk7
CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotUGFzc1JlZlB0cjxGb3JtRGF0YT4gRm9ybURhdGE6
OmNyZWF0ZShjb25zdCBDU3RyaW5nJiBzdHJpbmcpCitSZWZQdHI8Rm9ybURhdGE+IEZvcm1EYXRh
OjpjcmVhdGUoY29uc3QgQ1N0cmluZyYgc3RyaW5nKQogewogICAgIFJlZlB0cjxGb3JtRGF0YT4g
cmVzdWx0ID0gY3JlYXRlKCk7CiAgICAgcmVzdWx0LT5hcHBlbmREYXRhKHN0cmluZy5kYXRhKCks
IHN0cmluZy5sZW5ndGgoKSk7Ci0gICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNlKCk7CisgICAgcmV0
dXJuIHJlc3VsdDsKIH0KIAotUGFzc1JlZlB0cjxGb3JtRGF0YT4gRm9ybURhdGE6OmNyZWF0ZShj
b25zdCBWZWN0b3I8Y2hhcj4mIHZlY3RvcikKK1JlZlB0cjxGb3JtRGF0YT4gRm9ybURhdGE6OmNy
ZWF0ZShjb25zdCBWZWN0b3I8Y2hhcj4mIHZlY3RvcikKIHsKICAgICBSZWZQdHI8Rm9ybURhdGE+
IHJlc3VsdCA9IGNyZWF0ZSgpOwogICAgIHJlc3VsdC0+YXBwZW5kRGF0YSh2ZWN0b3IuZGF0YSgp
LCB2ZWN0b3Iuc2l6ZSgpKTsKLSAgICByZXR1cm4gcmVzdWx0LnJlbGVhc2UoKTsKKyAgICByZXR1
cm4gcmVzdWx0OwogfQogCi1QYXNzUmVmUHRyPEZvcm1EYXRhPiBGb3JtRGF0YTo6Y3JlYXRlKGNv
bnN0IEZvcm1EYXRhTGlzdCYgbGlzdCwgY29uc3QgVGV4dEVuY29kaW5nJiBlbmNvZGluZywgRW5j
b2RpbmdUeXBlIGVuY29kaW5nVHlwZSkKK1JlZlB0cjxGb3JtRGF0YT4gRm9ybURhdGE6OmNyZWF0
ZShjb25zdCBGb3JtRGF0YUxpc3QmIGxpc3QsIGNvbnN0IFRleHRFbmNvZGluZyYgZW5jb2Rpbmcs
IEVuY29kaW5nVHlwZSBlbmNvZGluZ1R5cGUpCiB7CiAgICAgUmVmUHRyPEZvcm1EYXRhPiByZXN1
bHQgPSBjcmVhdGUoKTsKICAgICByZXN1bHQtPmFwcGVuZEtleVZhbHVlUGFpckl0ZW1zKGxpc3Qs
IGVuY29kaW5nLCBmYWxzZSwgMCwgZW5jb2RpbmdUeXBlKTsKLSAgICByZXR1cm4gcmVzdWx0LnJl
bGVhc2UoKTsKKyAgICByZXR1cm4gcmVzdWx0OwogfQogCi1QYXNzUmVmUHRyPEZvcm1EYXRhPiBG
b3JtRGF0YTo6Y3JlYXRlTXVsdGlQYXJ0KGNvbnN0IEZvcm1EYXRhTGlzdCYgbGlzdCwgY29uc3Qg
VGV4dEVuY29kaW5nJiBlbmNvZGluZywgRG9jdW1lbnQqIGRvY3VtZW50KQorUmVmUHRyPEZvcm1E
YXRhPiBGb3JtRGF0YTo6Y3JlYXRlTXVsdGlQYXJ0KGNvbnN0IEZvcm1EYXRhTGlzdCYgbGlzdCwg
Y29uc3QgVGV4dEVuY29kaW5nJiBlbmNvZGluZywgRG9jdW1lbnQqIGRvY3VtZW50KQogewogICAg
IFJlZlB0cjxGb3JtRGF0YT4gcmVzdWx0ID0gY3JlYXRlKCk7CiAgICAgcmVzdWx0LT5hcHBlbmRL
ZXlWYWx1ZVBhaXJJdGVtcyhsaXN0LCBlbmNvZGluZywgdHJ1ZSwgZG9jdW1lbnQpOwotICAgIHJl
dHVybiByZXN1bHQucmVsZWFzZSgpOworICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLVBhc3NSZWZQ
dHI8Rm9ybURhdGE+IEZvcm1EYXRhOjpjb3B5KCkgY29uc3QKK1JlZlB0cjxGb3JtRGF0YT4gRm9y
bURhdGE6OmNvcHkoKSBjb25zdAogewogICAgIHJldHVybiBhZG9wdFJlZihuZXcgRm9ybURhdGEo
KnRoaXMpKTsKIH0KIAotUGFzc1JlZlB0cjxGb3JtRGF0YT4gRm9ybURhdGE6OmRlZXBDb3B5KCkg
Y29uc3QKK1JlZlB0cjxGb3JtRGF0YT4gRm9ybURhdGE6OmRlZXBDb3B5KCkgY29uc3QKIHsKICAg
ICBSZWZQdHI8Rm9ybURhdGE+IGZvcm1EYXRhKGNyZWF0ZSgpKTsKIApAQCAtMTM1LDcgKzEzNSw3
IEBAIFBhc3NSZWZQdHI8Rm9ybURhdGE+IEZvcm1EYXRhOjpkZWVwQ29weSgpIGNvbnN0CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgIH0KLSAgICByZXR1cm4gZm9ybURhdGEucmVs
ZWFzZSgpOworICAgIHJldHVybiBmb3JtRGF0YTsKIH0KIAogdm9pZCBGb3JtRGF0YTo6YXBwZW5k
RGF0YShjb25zdCB2b2lkKiBkYXRhLCBzaXplX3Qgc2l6ZSkKQEAgLTMwMiw3ICszMDIsNyBAQCBz
dGF0aWMgdm9pZCBhcHBlbmRCbG9iUmVzb2x2ZWQoRm9ybURhdGEqIGZvcm1EYXRhLCBjb25zdCBV
UkwmIHVybCkKICAgICB9CiB9CiAKLVBhc3NSZWZQdHI8Rm9ybURhdGE+IEZvcm1EYXRhOjpyZXNv
bHZlQmxvYlJlZmVyZW5jZXMoKQorUmVmUHRyPEZvcm1EYXRhPiBGb3JtRGF0YTo6cmVzb2x2ZUJs
b2JSZWZlcmVuY2VzKCkKIHsKICAgICAvLyBGaXJzdCBjaGVjayBpZiBhbnkgYmxvYnMgbmVlZHMg
dG8gYmUgcmVzb2x2ZWQsIG9yIHdlIGNhbiB0YWtlIHRoZSBmYXN0IHBhdGguCiAgICAgYm9vbCBo
YXNCbG9iID0gZmFsc2U7CkBAIC0zMzQsNyArMzM0LDcgQEAgUGFzc1JlZlB0cjxGb3JtRGF0YT4g
Rm9ybURhdGE6OnJlc29sdmVCbG9iUmVmZXJlbmNlcygpCiAgICAgICAgIGVsc2UKICAgICAgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0KLSAgICByZXR1cm4gbmV3Rm9ybURhdGEu
cmVsZWFzZSgpOworICAgIHJldHVybiBuZXdGb3JtRGF0YTsKIH0KIAogdm9pZCBGb3JtRGF0YTo6
Z2VuZXJhdGVGaWxlcyhEb2N1bWVudCogZG9jdW1lbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL0Zvcm1EYXRhLmgKaW5kZXggMmRkMDdiMWY3ZWIyOGEwZTQ1NDM4NzEyNTI1ZTk1
MjEyYWMxMjlhYy4uYzVlZjY4NzM4Y2YzNTQwMTgzNGFiYTU1MDE2ZWUzOGRhMTM5MDAzMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuaApAQCAtMTk0LDIzICsx
OTQsMjMgQEAgcHVibGljOgogICAgICAgICBNdWx0aXBhcnRGb3JtRGF0YSAvLyBmb3IgbXVsdGlw
YXJ0L2Zvcm0tZGF0YQogICAgIH07CiAKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUGFzc1Jl
ZlB0cjxGb3JtRGF0YT4gY3JlYXRlKCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFBhc3NS
ZWZQdHI8Rm9ybURhdGE+IGNyZWF0ZShjb25zdCB2b2lkKiwgc2l6ZV90KTsKLSAgICBzdGF0aWMg
UGFzc1JlZlB0cjxGb3JtRGF0YT4gY3JlYXRlKGNvbnN0IENTdHJpbmcmKTsKLSAgICBzdGF0aWMg
UGFzc1JlZlB0cjxGb3JtRGF0YT4gY3JlYXRlKGNvbnN0IFZlY3RvcjxjaGFyPiYpOwotICAgIHN0
YXRpYyBQYXNzUmVmUHRyPEZvcm1EYXRhPiBjcmVhdGUoY29uc3QgRm9ybURhdGFMaXN0JiwgY29u
c3QgVGV4dEVuY29kaW5nJiwgRW5jb2RpbmdUeXBlID0gRm9ybVVSTEVuY29kZWQpOwotICAgIHN0
YXRpYyBQYXNzUmVmUHRyPEZvcm1EYXRhPiBjcmVhdGVNdWx0aVBhcnQoY29uc3QgRm9ybURhdGFM
aXN0JiwgY29uc3QgVGV4dEVuY29kaW5nJiwgRG9jdW1lbnQqKTsKKyAgICBXRUJDT1JFX0VYUE9S
VCBzdGF0aWMgUmVmUHRyPEZvcm1EYXRhPiBjcmVhdGUoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBz
dGF0aWMgUmVmUHRyPEZvcm1EYXRhPiBjcmVhdGUoY29uc3Qgdm9pZCosIHNpemVfdCk7CisgICAg
c3RhdGljIFJlZlB0cjxGb3JtRGF0YT4gY3JlYXRlKGNvbnN0IENTdHJpbmcmKTsKKyAgICBzdGF0
aWMgUmVmUHRyPEZvcm1EYXRhPiBjcmVhdGUoY29uc3QgVmVjdG9yPGNoYXI+Jik7CisgICAgc3Rh
dGljIFJlZlB0cjxGb3JtRGF0YT4gY3JlYXRlKGNvbnN0IEZvcm1EYXRhTGlzdCYsIGNvbnN0IFRl
eHRFbmNvZGluZyYsIEVuY29kaW5nVHlwZSA9IEZvcm1VUkxFbmNvZGVkKTsKKyAgICBzdGF0aWMg
UmVmUHRyPEZvcm1EYXRhPiBjcmVhdGVNdWx0aVBhcnQoY29uc3QgRm9ybURhdGFMaXN0JiwgY29u
c3QgVGV4dEVuY29kaW5nJiwgRG9jdW1lbnQqKTsKICAgICBXRUJDT1JFX0VYUE9SVCB+Rm9ybURh
dGEoKTsKIAogICAgIC8vIEZJWE1FOiBCb3RoIHRoZXNlIGZ1bmN0aW9ucyBwZXJmb3JtIGEgZGVl
cCBjb3B5IG9mIG1fZWxlbWVudHMsIGJ1dCBkaWZmZXIgaW4gaGFuZGxpbmcgb2Ygb3RoZXIgZGF0
YSBtZW1iZXJzLgogICAgIC8vIEhvdyBtdWNoIG9mIHRoYXQgaXMgaW50ZW50aW9uYWw/IFdlIG5l
ZWQgYmV0dGVyIG5hbWVzIHRoYXQgZXhwbGFpbiB0aGUgZGlmZmVyZW5jZS4KLSAgICBQYXNzUmVm
UHRyPEZvcm1EYXRhPiBjb3B5KCkgY29uc3Q7Ci0gICAgUGFzc1JlZlB0cjxGb3JtRGF0YT4gZGVl
cENvcHkoKSBjb25zdDsKKyAgICBSZWZQdHI8Rm9ybURhdGE+IGNvcHkoKSBjb25zdDsKKyAgICBS
ZWZQdHI8Rm9ybURhdGE+IGRlZXBDb3B5KCkgY29uc3Q7CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBFbmNvZGVyPgogICAgIHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKICAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBEZWNvZGVyPgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEZvcm1EYXRhPiBkZWNv
ZGUoRGVjb2RlciYpOworICAgIHN0YXRpYyBSZWZQdHI8Rm9ybURhdGE+IGRlY29kZShEZWNvZGVy
Jik7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGVuZERhdGEoY29uc3Qgdm9pZCogZGF0
YSwgc2l6ZV90KTsKICAgICB2b2lkIGFwcGVuZEZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCwg
Ym9vbCBzaG91bGRHZW5lcmF0ZUZpbGUgPSBmYWxzZSk7CkBAIC0yMjMsNyArMjIzLDcgQEAgcHVi
bGljOgogCiAgICAgLy8gUmVzb2x2ZSBhbGwgYmxvYiByZWZlcmVuY2VzIHNvIHdlIG9ubHkgaGF2
ZSBmaWxlIGFuZCBkYXRhLgogICAgIC8vIElmIHRoZSBGb3JtRGF0YSBoYXMgbm8gYmxvYiByZWZl
cmVuY2VzIHRvIHJlc29sdmUsIHRoaXMgaXMgcmV0dXJuZWQuCi0gICAgUGFzc1JlZlB0cjxGb3Jt
RGF0YT4gcmVzb2x2ZUJsb2JSZWZlcmVuY2VzKCk7CisgICAgUmVmUHRyPEZvcm1EYXRhPiByZXNv
bHZlQmxvYlJlZmVyZW5jZXMoKTsKIAogICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJu
IG1fZWxlbWVudHMuaXNFbXB0eSgpOyB9CiAgICAgY29uc3QgVmVjdG9yPEZvcm1EYXRhRWxlbWVu
dD4mIGVsZW1lbnRzKCkgY29uc3QgeyByZXR1cm4gbV9lbGVtZW50czsgfQpAQCAtMjg5LDcgKzI4
OSw3IEBAIHZvaWQgRm9ybURhdGE6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogfQog
CiB0ZW1wbGF0ZTx0eXBlbmFtZSBEZWNvZGVyPgotUGFzc1JlZlB0cjxGb3JtRGF0YT4gRm9ybURh
dGE6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorUmVmUHRyPEZvcm1EYXRhPiBGb3JtRGF0YTo6
ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7CiAgICAgUmVmUHRyPEZvcm1EYXRhPiBkYXRhID0g
Rm9ybURhdGE6OmNyZWF0ZSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmNwcAppbmRleCBhMTAzMzhhNjI1MTMxMDNi
NDViODc4NzU5OTBhMzkyYzdhODIxODgxLi45ZDdmZjAwOWI0OTA4NmMyODY2MWU3OTI5ZDI0ZGE1
MTdhYWMyNTlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jl
c291cmNlUmVxdWVzdEJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5jcHAKQEAgLTc2LDcgKzc2LDcgQEAgc3RkOjp1bmlxdWVf
cHRyPFJlc291cmNlUmVxdWVzdD4gUmVzb3VyY2VSZXF1ZXN0QmFzZTo6YWRvcHQoc3RkOjp1bmlx
dWVfcHRyPENyb3MKICAgICAgICAgQVNTRVJUKGVuY29kaW5nQ291bnQgPD0gMyk7CiAgICAgICAg
IHJlcXVlc3QtPnNldFJlc3BvbnNlQ29udGVudERpc3Bvc2l0aW9uRW5jb2RpbmdGYWxsYmFja0Fy
cmF5KGVuY29kaW5nMSwgZW5jb2RpbmcyLCBlbmNvZGluZzMpOwogICAgIH0KLSAgICByZXF1ZXN0
LT5zZXRIVFRQQm9keShkYXRhLT5odHRwQm9keSk7CisgICAgcmVxdWVzdC0+c2V0SFRUUEJvZHko
V1RGTW92ZShkYXRhLT5odHRwQm9keSkpOwogICAgIHJlcXVlc3QtPnNldEFsbG93Q29va2llcyhk
YXRhLT5hbGxvd0Nvb2tpZXMpOwogICAgIHJlcXVlc3QtPmRvUGxhdGZvcm1BZG9wdChXVEZNb3Zl
KGRhdGEpKTsKICAgICByZXR1cm4gcmVxdWVzdDsKQEAgLTQxMywxMSArNDEzLDExIEBAIEZvcm1E
YXRhKiBSZXNvdXJjZVJlcXVlc3RCYXNlOjpodHRwQm9keSgpIGNvbnN0CiAgICAgcmV0dXJuIG1f
aHR0cEJvZHkuZ2V0KCk7CiB9CiAKLXZvaWQgUmVzb3VyY2VSZXF1ZXN0QmFzZTo6c2V0SFRUUEJv
ZHkoUGFzc1JlZlB0cjxGb3JtRGF0YT4gaHR0cEJvZHkpCit2b2lkIFJlc291cmNlUmVxdWVzdEJh
c2U6OnNldEhUVFBCb2R5KFJlZlB0cjxGb3JtRGF0YT4mJiBodHRwQm9keSkKIHsKICAgICB1cGRh
dGVSZXNvdXJjZVJlcXVlc3QoKTsKIAotICAgIG1faHR0cEJvZHkgPSBodHRwQm9keTsKKyAgICBt
X2h0dHBCb2R5ID0gV1RGTW92ZShodHRwQm9keSk7CiAKICAgICBtX3Jlc291cmNlUmVxdWVzdEJv
ZHlVcGRhdGVkID0gdHJ1ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuaAppbmRleCBlMmFjZTZlODdhOWRmNDFhZmY1MmQw
YzJjYmQxOWI3YWJmYmZjNmJiLi4wYjczNWI5ZTgzMmVkOGNlZGFhYzg1M2EzZTEyYTM0MzQxYWIx
NGFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNl
UmVxdWVzdEJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291
cmNlUmVxdWVzdEJhc2UuaApAQCAtMTIxLDcgKzEyMSw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRSZXNwb25zZUNvbnRlbnREaXNwb3NpdGlv
bkVuY29kaW5nRmFsbGJhY2tBcnJheShjb25zdCBTdHJpbmcmIGVuY29kaW5nMSwgY29uc3QgU3Ry
aW5nJiBlbmNvZGluZzIgPSBTdHJpbmcoKSwgY29uc3QgU3RyaW5nJiBlbmNvZGluZzMgPSBTdHJp
bmcoKSk7CiAKICAgICAgICAgV0VCQ09SRV9FWFBPUlQgRm9ybURhdGEqIGh0dHBCb2R5KCkgY29u
c3Q7Ci0gICAgICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0SFRUUEJvZHkoUGFzc1JlZlB0cjxG
b3JtRGF0YT4gaHR0cEJvZHkpOworICAgICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEhUVFBC
b2R5KFJlZlB0cjxGb3JtRGF0YT4mJik7CisgICAgICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0
SFRUUEJvZHkoRm9ybURhdGEqIGh0dHBCb2R5KSB7IHNldEhUVFBCb2R5KFJlZlB0cjxGb3JtRGF0
YT4oaHR0cEJvZHkpKTsgfQorICAgICAgICB2b2lkIGNsZWFySFRUUEJvZHkoKSB7IHNldEhUVFBC
b2R5KG51bGxwdHIpOyB9CiAgICAgICAgIAogICAgICAgICBib29sIGFsbG93Q29va2llcygpIGNv
bnN0OwogICAgICAgICB2b2lkIHNldEFsbG93Q29va2llcyhib29sIGFsbG93Q29va2llcyk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0Zvcm1EYXRhU3Ry
ZWFtQ0ZOZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Gb3JtRGF0
YVN0cmVhbUNGTmV0LmNwcAppbmRleCBmMzk4NTEzOWE0MDFiZTYzYTA4NmIyNmNmMWRmMWVjZWZl
ZjYwMjZlLi43OTk1MjNkNTMyZjE0ZTMxZDZmMGFjOGViNDhmZTVjZTQxYzU3MGFmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0Zvcm1EYXRhU3RyZWFtQ0ZO
ZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvRm9ybURhdGFT
dHJlYW1DRk5ldC5jcHAKQEAgLTM0OCw3ICszNDgsNyBAQCBzdGF0aWMgdm9pZCBmb3JtRXZlbnRD
YWxsYmFjayhDRlJlYWRTdHJlYW1SZWYgc3RyZWFtLCBDRlN0cmVhbUV2ZW50VHlwZSB0eXBlLCB2
bwogICAgIH0KIH0KIAotdm9pZCBzZXRIVFRQQm9keShDRk11dGFibGVVUkxSZXF1ZXN0UmVmIHJl
cXVlc3QsIFBhc3NSZWZQdHI8Rm9ybURhdGE+IHBycEZvcm1EYXRhKQordm9pZCBzZXRIVFRQQm9k
eShDRk11dGFibGVVUkxSZXF1ZXN0UmVmIHJlcXVlc3QsIEZvcm1EYXRhKiBwcnBGb3JtRGF0YSkK
IHsKICAgICBSZWZQdHI8Rm9ybURhdGE+IGZvcm1EYXRhID0gcHJwRm9ybURhdGE7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvRm9ybURhdGFTdHJlYW1D
Rk5ldC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Gb3JtRGF0YVN0cmVh
bUNGTmV0LmgKaW5kZXggODdhODRlNTQ1ODc1MWIyMGFmYjA1YTcxY2E2OTljYTkyYTI0ODc0MS4u
ZjlhNmQ4NzU4ZjM0OTJhMmMxYWZmZThkMDRkYTFiNTU4NjViMWEyNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Gb3JtRGF0YVN0cmVhbUNGTmV0LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Gb3JtRGF0YVN0cmVhbUNGTmV0
LmgKQEAgLTM5LDcgKzM5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBGb3JtRGF0
YTsKIAotdm9pZCBzZXRIVFRQQm9keShDRk11dGFibGVVUkxSZXF1ZXN0UmVmLCBQYXNzUmVmUHRy
PEZvcm1EYXRhPik7Cit2b2lkIHNldEhUVFBCb2R5KENGTXV0YWJsZVVSTFJlcXVlc3RSZWYsIEZv
cm1EYXRhKik7CiAKIEZvcm1EYXRhKiBodHRwQm9keUZyb21TdHJlYW0oQ0ZSZWFkU3RyZWFtUmVm
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNv
dXJjZVJlcXVlc3RDRk5ldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nm
L1Jlc291cmNlUmVxdWVzdENGTmV0LmNwcAppbmRleCAxOTQ1NTI1ZDhhMGMzZDVkMGZiMWFjODJm
MzNkYjMxNzNlMDIyMjcxLi5hYzg3YjJhMzg0MjcyZGQzYWU3NTgyZWMwZDhjNGQ5M2VjZDdjNWY1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNl
UmVxdWVzdENGTmV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nm
L1Jlc291cmNlUmVxdWVzdENGTmV0LmNwcApAQCAtMjA0LDcgKzIwNCw3IEBAIHZvaWQgUmVzb3Vy
Y2VSZXF1ZXN0Ojpkb1VwZGF0ZVBsYXRmb3JtSFRUUEJvZHkoKQogICAgIH0gZWxzZQogICAgICAg
ICBjZlJlcXVlc3QgPSBDRlVSTFJlcXVlc3RDcmVhdGVNdXRhYmxlKDAsIHVybC5nZXQoKSwgKENG
VVJMUmVxdWVzdENhY2hlUG9saWN5KWNhY2hlUG9saWN5KCksIHRpbWVvdXRJbnRlcnZhbCgpLCBm
aXJzdFBhcnR5Rm9yQ29va2llcy5nZXQoKSk7CiAKLSAgICBSZWZQdHI8Rm9ybURhdGE+IGZvcm1E
YXRhID0gaHR0cEJvZHkoKTsKKyAgICBGb3JtRGF0YSogZm9ybURhdGEgPSBodHRwQm9keSgpOwog
ICAgIGlmIChmb3JtRGF0YSAmJiAhZm9ybURhdGEtPmlzRW1wdHkoKSkKICAgICAgICAgV2ViQ29y
ZTo6c2V0SFRUUEJvZHkoY2ZSZXF1ZXN0LCBmb3JtRGF0YSk7CiAKQEAgLTMzNSw3ICszMzUsNyBA
QCB2b2lkIFJlc291cmNlUmVxdWVzdDo6dXBkYXRlRnJvbURlbGVnYXRlUHJlc2VydmluZ09sZFBy
b3BlcnRpZXMoY29uc3QgUmVzb3VyY2VSZQogICAgICp0aGlzID0gZGVsZWdhdGVQcm92aWRlZFJl
cXVlc3Q7CiAKICAgICBzZXRQcmlvcml0eShvbGRQcmlvcml0eSk7Ci0gICAgc2V0SFRUUEJvZHko
b2xkSFRUUEJvZHkucmVsZWFzZSgpKTsKKyAgICBzZXRIVFRQQm9keShXVEZNb3ZlKG9sZEhUVFBC
b2R5KSk7CiAgICAgc2V0SGlkZGVuRnJvbUluc3BlY3Rvcihpc0hpZGRlbkZyb21JbnNwZWN0b3Ip
OwogICAgIHNldFJlcXVlc3RlcihvbGRSZXF1ZXN0ZXIpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SZXNvdXJjZVJlcXVlc3RDb2NvYS5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmVzb3VyY2VSZXF1ZXN0Q29j
b2EubW0KaW5kZXggZmNmNDkzN2MzNjBiMjJhZjhlMWJmYzlhNDUzMGJiOTFjMTcxYmI1Yy4uNjcy
YjFiOWIwNDU2NmUzYzY2OGFhMzJjMmVmYzFhMzg1NTU2YTQ2OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SZXNvdXJjZVJlcXVlc3RDb2NvYS5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Jlc291cmNlUmVxdWVz
dENvY29hLm1tCkBAIC0xOTAsNyArMTkwLDcgQEAgdm9pZCBSZXNvdXJjZVJlcXVlc3Q6OmRvVXBk
YXRlUGxhdGZvcm1IVFRQQm9keSgpCiAgICAgZWxzZQogICAgICAgICBuc1JlcXVlc3QgPSBbW05T
TXV0YWJsZVVSTFJlcXVlc3QgYWxsb2NdIGluaXRXaXRoVVJMOnVybCgpXTsKIAotICAgIFJlZlB0
cjxGb3JtRGF0YT4gZm9ybURhdGEgPSBodHRwQm9keSgpOworICAgIEZvcm1EYXRhKiBmb3JtRGF0
YSA9IGh0dHBCb2R5KCk7CiAgICAgaWYgKGZvcm1EYXRhICYmICFmb3JtRGF0YS0+aXNFbXB0eSgp
KQogICAgICAgICBXZWJDb3JlOjpzZXRIVFRQQm9keShuc1JlcXVlc3QsIGZvcm1EYXRhKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNl
SGFuZGxlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
UmVzb3VyY2VIYW5kbGVNYW5hZ2VyLmNwcAppbmRleCBjZDk3N2JiM2MwN2ZhMWE3ZTZkYThiYzU2
MmFlNTUzMzY3ZGE3NzI3Li43NzQyNmZhODg0NWI0NTEwOWNmZDViMTQ2MzI3MzRjMmZmNzg2ZjQ5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3Vy
Y2VIYW5kbGVNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvUmVzb3VyY2VIYW5kbGVNYW5hZ2VyLmNwcApAQCAtNzYzLDkgKzc2MywxMCBAQCBzdGF0
aWMgaW5saW5lIHNpemVfdCBnZXRGb3JtRWxlbWVudHNDb3VudChSZXNvdXJjZUhhbmRsZSogam9i
KQogCiAgICAgLy8gUmVzb2x2ZSB0aGUgYmxvYiBlbGVtZW50cyBzbyB0aGUgZm9ybURhdGEgY2Fu
IGNvcnJlY3RseSByZXBvcnQgaXQncyBzaXplLgogICAgIGZvcm1EYXRhID0gZm9ybURhdGEtPnJl
c29sdmVCbG9iUmVmZXJlbmNlcygpOwotICAgIGpvYi0+Zmlyc3RSZXF1ZXN0KCkuc2V0SFRUUEJv
ZHkoZm9ybURhdGEpOworICAgIHNpemVfdCBzaXplID0gZm9ybURhdGEtPmVsZW1lbnRzKCkuc2l6
ZSgpOworICAgIGpvYi0+Zmlyc3RSZXF1ZXN0KCkuc2V0SFRUUEJvZHkoV1RGTW92ZShmb3JtRGF0
YSkpOwogCi0gICAgcmV0dXJuIGZvcm1EYXRhLT5lbGVtZW50cygpLnNpemUoKTsKKyAgICByZXR1
cm4gc2l6ZTsKIH0KIAogc3RhdGljIHZvaWQgc2V0dXBGb3JtRGF0YShSZXNvdXJjZUhhbmRsZSog
am9iLCBDVVJMb3B0aW9uIHNpemVPcHRpb24sIHN0cnVjdCBjdXJsX3NsaXN0KiogaGVhZGVycykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0Zvcm1EYXRh
U3RyZWFtTWFjLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9Gb3JtRGF0
YVN0cmVhbU1hYy5oCmluZGV4IGRiODFjNjY4N2M0MjJlNWVjYmMzNjkwZTIzNDVhZjgyMjRhZDA2
YzYuLmI4NWRkY2IxNWVkOGYwOGQ1OWZhYzQ2ZWRmZmJlNGUxODI5NDI0NTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0Zvcm1EYXRhU3RyZWFtTWFjLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvRm9ybURhdGFTdHJlYW1N
YWMuaApAQCAtNDIsNyArNDIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICBjbGFzcyBG
b3JtRGF0YTsKIAotICAgIHZvaWQgc2V0SFRUUEJvZHkoTlNNdXRhYmxlVVJMUmVxdWVzdCAqLCBQ
YXNzUmVmUHRyPEZvcm1EYXRhPik7CisgICAgdm9pZCBzZXRIVFRQQm9keShOU011dGFibGVVUkxS
ZXF1ZXN0ICosIEZvcm1EYXRhKik7CiAgICAgRm9ybURhdGEqIGh0dHBCb2R5RnJvbVN0cmVhbShO
U0lucHV0U3RyZWFtICopOwogCiAgICAgQ0ZTdHJpbmdSZWYgZm9ybURhdGFTdHJlYW1MZW5ndGhQ
cm9wZXJ0eU5hbWUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvbWFjL0Zvcm1EYXRhU3RyZWFtTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9tYWMvRm9ybURhdGFTdHJlYW1NYWMubW0KaW5kZXggYjU3MzRmOThlZGZiZjExMzVlMTdk
NGI3ZWJjMjljYzU1ZmUwNDM1MS4uYmU5NjZlYmE1NmI2ZDIyYjA0MDE5OGQ4MjI4OGNmYThkNjk3
Yjg5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvRm9y
bURhdGFTdHJlYW1NYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9t
YWMvRm9ybURhdGFTdHJlYW1NYWMubW0KQEAgLTMzLDcgKzMzLDYgQEAKIAogI2ltcG9ydCAiRm9y
bURhdGEuaCIKICNpbXBvcnQgIkZvcm1EYXRhU3RyZWFtQ0ZOZXQuaCIKLSNpbXBvcnQgPHd0Zi9Q
YXNzUmVmUHRyLmg+CiAKIEBpbnRlcmZhY2UgTlNVUkxSZXF1ZXN0IChXZWJOU1VSTFJlcXVlc3RE
ZXRhaWxzKQogLSAoQ0ZVUkxSZXF1ZXN0UmVmKV9DRlVSTFJlcXVlc3Q7CkBAIC00MSw3ICs0MCw3
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdm9pZCBzZXRIVFRQQm9keShOU011dGFibGVV
UkxSZXF1ZXN0ICpyZXF1ZXN0LCBQYXNzUmVmUHRyPEZvcm1EYXRhPiBwcnBGb3JtRGF0YSkKK3Zv
aWQgc2V0SFRUUEJvZHkoTlNNdXRhYmxlVVJMUmVxdWVzdCAqcmVxdWVzdCwgRm9ybURhdGEqIHBy
cEZvcm1EYXRhKQogewogICAgIHNldEhUVFBCb2R5KGNvbnN0X2Nhc3Q8Q0ZNdXRhYmxlVVJMUmVx
dWVzdFJlZj4oW3JlcXVlc3QgX0NGVVJMUmVxdWVzdF0pLCBwcnBGb3JtRGF0YSk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VIYW5k
bGVTb3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJj
ZUhhbmRsZVNvdXAuY3BwCmluZGV4IGI2N2M5MGRkOWI0YzI5N2MwODJlMTIwNThhMTgxOTcwMmI5
N2ExN2UuLjdiODU5NWQ4Y2Q0M2YzOGNhZGQ2Mzg1MDlkNjVlN2UyZDQzYWZlOTYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUhhbmRsZVNv
dXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJj
ZUhhbmRsZVNvdXAuY3BwCkBAIC01MDYsNyArNTA2LDcgQEAgc3RhdGljIHZvaWQgZG9SZWRpcmVj
dChSZXNvdXJjZUhhbmRsZSogaGFuZGxlKQogICAgICAgICAvLyBvciBpZiBjdXJyZW50IHJlZGly
ZWN0aW9uIHNheXMgc28KICAgICAgICAgaWYgKG1lc3NhZ2UtPm1ldGhvZCA9PSBTT1VQX01FVEhP
RF9HRVQgfHwgc2hvdWxkUmVkaXJlY3RBc0dFVChtZXNzYWdlLCBuZXdVUkwsIGNyb3NzT3JpZ2lu
KSkgewogICAgICAgICAgICAgbmV3UmVxdWVzdC5zZXRIVFRQTWV0aG9kKCJHRVQiKTsKLSAgICAg
ICAgICAgIG5ld1JlcXVlc3Quc2V0SFRUUEJvZHkoMCk7CisgICAgICAgICAgICBuZXdSZXF1ZXN0
LmNsZWFySFRUUEJvZHkoKTsKICAgICAgICAgICAgIG5ld1JlcXVlc3QuY2xlYXJIVFRQQ29udGVu
dFR5cGUoKTsKICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3ht
bC9YTUxIdHRwUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3Qu
Y3BwCmluZGV4IDIwOTU4OTM5MzliNzQ1MGNmOWRkZTRjNGU1OGQ0YmMxNmFjYjQ2ZDYuLjM1ZGIy
NTFlZmQ4YmYyYzUzZWZkZTg1N2U0YTczZmQzZjg0NGFjNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hN
TEh0dHBSZXF1ZXN0LmNwcApAQCAtNzQzLDcgKzc0Myw3IEBAIHZvaWQgWE1MSHR0cFJlcXVlc3Q6
OmNyZWF0ZVJlcXVlc3QoRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgaWYgKG1fcmVxdWVzdEVudGl0
eUJvZHkpIHsKICAgICAgICAgQVNTRVJUKG1fbWV0aG9kICE9ICJHRVQiKTsKICAgICAgICAgQVNT
RVJUKG1fbWV0aG9kICE9ICJIRUFEIik7Ci0gICAgICAgIHJlcXVlc3Quc2V0SFRUUEJvZHkobV9y
ZXF1ZXN0RW50aXR5Qm9keS5yZWxlYXNlKCkpOworICAgICAgICByZXF1ZXN0LnNldEhUVFBCb2R5
KFdURk1vdmUobV9yZXF1ZXN0RW50aXR5Qm9keSkpOwogICAgIH0KIAogICAgIGlmICghbV9yZXF1
ZXN0SGVhZGVycy5pc0VtcHR5KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJN
dXRhYmxlVVJMUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJNdXRhYmxlVVJMUmVx
dWVzdC5jcHAKaW5kZXggNGNhMDI2YWY2ZjcyODAxZWQwNmY0NGIwNzhhNjZjOTFiNTc4ZmZmZC4u
MWExNGEwOTZmMjM1N2NhN2Y1MmEzYTJiMTJlZjZlZTVhNTlkNjM0NiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC93aW4vV2ViTXV0YWJsZVVSTFJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvd2luL1dlYk11dGFibGVVUkxSZXF1ZXN0LmNwcApAQCAtMzA3LDcgKzMwNyw3IEBAIEhSRVNV
TFQgV2ViTXV0YWJsZVVSTFJlcXVlc3Q6OnNldEhUVFBCb2R5KF9Jbl9vcHRfIElTdHJlYW0qIGRh
dGEpCiAgICAgaWYgKEZBSUxFRChkYXRhLT5SZWFkKGZvcm1EYXRhLCBzdGF0LmNiU2l6ZS5Mb3dQ
YXJ0LCAmYnl0ZXNSZWFkKSkpCiAgICAgICAgIHJldHVybiBFX0ZBSUw7CiAKLSAgICBtX3JlcXVl
c3Quc2V0SFRUUEJvZHkoaHR0cEJvZHkpOworICAgIG1fcmVxdWVzdC5zZXRIVFRQQm9keShXVEZN
b3ZlKGh0dHBCb2R5KSk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmNw
cCBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJh
bWV0ZXJzLmNwcAppbmRleCBmNGM1OGE1ZTRjNjNhOTUyMmI2NGI5OGZiODBjODcwMWEyNzA2YmNk
Li5iNTZiMmY3ZDhkOTNiMGZmNDFkY2Y4NDQ1ZGVkMTYzZWVkZjI3MWY0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVy
cy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNl
TG9hZFBhcmFtZXRlcnMuY3BwCkBAIC0xMjEsNyArMTIxLDcgQEAgYm9vbCBOZXR3b3JrUmVzb3Vy
Y2VMb2FkUGFyYW1ldGVyczo6ZGVjb2RlKElQQzo6QXJndW1lbnREZWNvZGVyJiBkZWNvZGVyLCBO
ZXR3b3IKICAgICAgICAgUmVmUHRyPEZvcm1EYXRhPiBmb3JtRGF0YSA9IEZvcm1EYXRhOjpkZWNv
ZGUoZGVjb2Rlcik7CiAgICAgICAgIGlmICghZm9ybURhdGEpCiAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgICAgIHJlc3VsdC5yZXF1ZXN0LnNldEhUVFBCb2R5KGZvcm1EYXRhLnJlbGVh
c2UoKSk7CisgICAgICAgIHJlc3VsdC5yZXF1ZXN0LnNldEhUVFBCb2R5KFdURk1vdmUoZm9ybURh
dGEpKTsKIAogICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheSByZXF1ZXN0Qm9k
eVNhbmRib3hFeHRlbnNpb25IYW5kbGVzOwogICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJl
cXVlc3RCb2R5U2FuZGJveEV4dGVuc2lvbkhhbmRsZXMpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnkuY3BwIGIvU291cmNl
L1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnkuY3BwCmluZGV4
IGZhYTRmMDRkMTgzMjBkYzdkZmEzMjllOTkyNDRlODgzNTcyNWU0YjUuLmExOGE5MzdhMWYyNmQz
NTFlY2Y4NWI5MjJlNjA1MGM0ZTg4MjA5MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL05l
dHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5jcHAKQEAgLTU4LDcg
KzU4LDcgQEAgRW50cnk6OkVudHJ5KGNvbnN0IEtleSYga2V5LCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlJiByZXNwb25zZSwgY29uc3QgV2UKIHsKICAgICBBU1NFUlQobV9rZXkudHlw
ZSgpID09ICJyZXNvdXJjZSIpOwogICAgIC8vIFJlZGlyZWN0IGJvZHkgaXMgbm90IG5lZWRlZCBl
dmVuIGlmIGV4aXN0cy4KLSAgICBtX3JlZGlyZWN0UmVxdWVzdC0+c2V0SFRUUEJvZHkobnVsbHB0
cik7CisgICAgbV9yZWRpcmVjdFJlcXVlc3QtPmNsZWFySFRUUEJvZHkoKTsKIH0KIAogRW50cnk6
OkVudHJ5KGNvbnN0IEVudHJ5JiBvdGhlcikK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>269446</attachid>
            <date>2016-01-21 04:45:35 -0800</date>
            <delta_ts>2016-01-21 06:50:01 -0800</delta_ts>
            <desc>Removing clearHTTPBody</desc>
            <filename>bug-153229-20160121134506.patch</filename>
            <type>text/plain</type>
            <size>25817</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk1Mzk4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDMzNzRhNzY1ZWU3YzYy
ODg1ODAyZWI0Y2M3YjVjMjQzYTgxZmFmMi4uZDYyNjIwOGY0ZjlmMzQ0MTc0MTczZWI4OTlkMDg5
OWIzYjI1MmFjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYwIEBACisyMDE2LTAxLTE5ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uLmZhYmxldEBjcmYuY2Fub24uZnI+CisKKyAgICAgICAgUmVtb3Zl
IFBhc3NSZWZQdHIgZnJvbSBSZXNvdXJjZVJlcXVlc3QgYW5kIEZvcm1EYXRhCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTMyMjkKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDb3ZlcmVkIGJ5IGV4aXN0aW5n
IHRlc3RzLgorCisgICAgICAgIE1ha2luZyBSZXNvdXJjZVJlcXVlc3Q6OnNldEhUVFBCb2R5IHRh
a2UgYSBSZWZQdHI8Rm9ybURhdGE+JiYuCisgICAgICAgIEFkZGluZyBSZXNvdXJjZVJlcXVlc3Q6
OnNldEhUVFBCb2R5IHZhcmlhbnQgdGhhdCB0YWtlIGEgRm9ybURhdGEqLgorCisgICAgICAgIE1v
dmluZyBGb3JtRGF0YSBmcm9tIFBhc3NSZWZQdHIgdG8gUmVmUHRyLgorCisgICAgICAgICogaHRt
bC9wYXJzZXIvWFNTQXVkaXRvckRlbGVnYXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhTU0F1
ZGl0b3JEZWxlZ2F0ZTo6ZGlkQmxvY2tTY3JpcHQpOgorICAgICAgICAqIGxvYWRlci9Gb3JtU3Vi
bWlzc2lvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb3JtU3VibWlzc2lvbjo6cG9wdWxhdGVG
cmFtZUxvYWRSZXF1ZXN0KToKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmxvYWRQb3N0UmVxdWVzdCk6CisgICAgICAgIChX
ZWJDb3JlOjpGcmFtZUxvYWRlcjo6bG9hZERpZmZlcmVudERvY3VtZW50SXRlbSk6CisgICAgICAg
ICogbG9hZGVyL1BpbmdMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGluZ0xvYWRlcjo6
c2VuZFZpb2xhdGlvblJlcG9ydCk6CisgICAgICAgICogbG9hZGVyL1BpbmdMb2FkZXIuaDoKKyAg
ICAgICAgKiBwYWdlL0NvbnRlbnRTZWN1cml0eVBvbGljeS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDb250ZW50U2VjdXJpdHlQb2xpY3k6OnJlcG9ydFZpb2xhdGlvbik6CisgICAgICAgICogcGxh
dGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb3JtRGF0YTo6
Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkZvcm1EYXRhOjpjcmVhdGVNdWx0aVBhcnQpOgor
ICAgICAgICAoV2ViQ29yZTo6Rm9ybURhdGE6OmNvcHkpOgorICAgICAgICAoV2ViQ29yZTo6Rm9y
bURhdGE6OmRlZXBDb3B5KToKKyAgICAgICAgKFdlYkNvcmU6OkZvcm1EYXRhOjpyZXNvbHZlQmxv
YlJlZmVyZW5jZXMpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OkZvcm1EYXRhOjpkZWNvZGUpOgorICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3RCYXNlOjphZG9wdCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3RC
YXNlOjpzZXRIVFRQQm9keSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJl
cXVlc3RCYXNlLmg6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3RCYXNlOjpzZXRI
VFRQQm9keSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9Gb3JtRGF0YVN0cmVhbUNG
TmV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNldEhUVFBCb2R5KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9uZXR3b3JrL2NmL0Zvcm1EYXRhU3RyZWFtQ0ZOZXQuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9uZXR3b3JrL2NmL1Jlc291cmNlUmVxdWVzdENGTmV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdDo6ZG9VcGRhdGVQbGF0Zm9ybUhUVFBCb2R5KToKKyAgICAgICAgKFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdDo6dXBkYXRlRnJvbURlbGVnYXRlUHJlc2VydmluZ09sZFBy
b3BlcnRpZXMpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY29jb2EvUmVzb3VyY2VSZXF1
ZXN0Q29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Q6OmRvVXBkYXRl
UGxhdGZvcm1IVFRQQm9keSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291
cmNlSGFuZGxlTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpnZXRGb3JtRWxlbWVudHND
b3VudCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9tYWMvRm9ybURhdGFTdHJlYW1NYWMu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9Gb3JtRGF0YVN0cmVhbU1hYy5tbToK
KyAgICAgICAgKFdlYkNvcmU6OnNldEhUVFBCb2R5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3
b3JrL3NvdXAvUmVzb3VyY2VIYW5kbGVTb3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmRvUmVk
aXJlY3QpOgorICAgICAgICAqIHhtbC9YTUxIdHRwUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpYTUxIdHRwUmVxdWVzdDo6Y3JlYXRlUmVxdWVzdCk6CisKIDIwMTYtMDEtMjAgIFphbGFu
IEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBodHRwOi8vdmljdG9yZGFycmFz
LmZyL2Nzc2dhbWUvIGRvZXNuJ3Qgd29yayBpbiBTYWZhcmkuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L3dpbi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKaW5kZXgg
ZDRmN2Q1M2VmZjI1NDhhZGE1MWQ5MzBkZGVhZmYxMjNjMDg1OGI4MC4uMjk3YWUzNjRjM2M1YzFi
ZmQ1MjViMTQ2MWY2OGM1NGM3ZjZkNzYxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4v
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEz
IEBACisyMDE2LTAxLTE5ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uLmZhYmxldEBjcmYuY2Fub24u
ZnI+CisKKyAgICAgICAgUmVtb3ZlIFBhc3NSZWZQdHIgZnJvbSBSZXNvdXJjZVJlcXVlc3QgYW5k
IEZvcm1EYXRhCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNTMyMjkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIFdlYk11dGFibGVVUkxSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYk11dGFibGVVUkxSZXF1
ZXN0OjpzZXRIVFRQQm9keSk6CisKIDIwMTYtMDEtMTUgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZy
YXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0Nv
bnZleFBvbHlnb24oKSBhbmQgR3JhcGhpY3NDb250ZXh0OjpjbGlwQ29udmV4UG9seWdvbigpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFu
Z2VMb2cKaW5kZXggZmYxYTQwNzBmMGFmNmFiMTc4NGJmMjI1MTJiNWY3MDI2NzI4ZjVlZS4uNDM5
NDVjNGQwYWJkYTJmZTZiNTg4ZTJiMTViMjNmZmM4MGI4ZmVmZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE1IEBACisyMDE2LTAxLTE5ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uLmZhYmxldEBjcmYu
Y2Fub24uZnI+CisKKyAgICAgICAgUmVtb3ZlIFBhc3NSZWZQdHIgZnJvbSBSZXNvdXJjZVJlcXVl
c3QgYW5kIEZvcm1EYXRhCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNTMyMjkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnM6OmRlY29k
ZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnkuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OkVudHJ5OjpFbnRyeSk6CisKIDIwMTYt
MDEtMjAgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAg
ICAgICBGaXggQ01ha2UgYnVpbGQgYWZ0ZXIgcjE5NTMwMC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9Gb3JtU3VibWlzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Rm9ybVN1Ym1pc3Npb24uY3BwCmluZGV4IDAxNzg2YmFkMTNhNDI0NmZkNGJjNDE0ZTQ3NzZhYzIz
YjBmNjRiZDIuLmE0YTRiMzc1YWVhOTE4MmJhZjkxOWEwMjczMDY2ZTkxZTM0ZjY2MGYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Gb3JtU3VibWlzc2lvbi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0Zvcm1TdWJtaXNzaW9uLmNwcApAQCAtMjU4LDcgKzI1OCw3IEBA
IHZvaWQgRm9ybVN1Ym1pc3Npb246OnBvcHVsYXRlRnJhbWVMb2FkUmVxdWVzdChGcmFtZUxvYWRS
ZXF1ZXN0JiBmcmFtZVJlcXVlc3QpCiAKICAgICBpZiAobV9tZXRob2QgPT0gRm9ybVN1Ym1pc3Np
b246OlBvc3RNZXRob2QpIHsKICAgICAgICAgZnJhbWVSZXF1ZXN0LnJlc291cmNlUmVxdWVzdCgp
LnNldEhUVFBNZXRob2QoIlBPU1QiKTsKLSAgICAgICAgZnJhbWVSZXF1ZXN0LnJlc291cmNlUmVx
dWVzdCgpLnNldEhUVFBCb2R5KG1fZm9ybURhdGEpOworICAgICAgICBmcmFtZVJlcXVlc3QucmVz
b3VyY2VSZXF1ZXN0KCkuc2V0SFRUUEJvZHkobV9mb3JtRGF0YS5jb3B5UmVmKCkpOwogCiAgICAg
ICAgIC8vIGNvbnN0cnVjdCBzb21lIHVzZXIgaGVhZGVycyBpZiBuZWNlc3NhcnkKICAgICAgICAg
aWYgKG1fYm91bmRhcnkuaXNFbXB0eSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0ZyYW1lTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5j
cHAKaW5kZXggMGZmNWIyOTlkOGM2MmMwNWMwMDFjZDFjMjZmZjZlODFkOGE0ODdjMS4uMDI5Nzdm
NjI0NWQ1NGYzYTcyNGQ2OWQyMDgzNDA4Mzc5NjE1ODRiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RnJhbWVMb2FkZXIuY3BwCkBAIC0yNjU0LDcgKzI2NTQsNiBAQCB2b2lkIEZyYW1lTG9hZGVyOjps
b2FkUG9zdFJlcXVlc3QoY29uc3QgRnJhbWVMb2FkUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgU3Ry
aW5nJgogCiAgICAgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBpblJlcXVlc3QgPSByZXF1ZXN0LnJl
c291cmNlUmVxdWVzdCgpOwogICAgIGNvbnN0IFVSTCYgdXJsID0gaW5SZXF1ZXN0LnVybCgpOwot
ICAgIFJlZlB0cjxGb3JtRGF0YT4gZm9ybURhdGEgPSBpblJlcXVlc3QuaHR0cEJvZHkoKTsKICAg
ICBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlID0gaW5SZXF1ZXN0Lmh0dHBDb250ZW50VHlwZSgp
OwogICAgIFN0cmluZyBvcmlnaW4gPSBpblJlcXVlc3QuaHR0cE9yaWdpbigpOwogCkBAIC0yNjY0
LDcgKzI2NjMsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpsb2FkUG9zdFJlcXVlc3QoY29uc3QgRnJh
bWVMb2FkUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgU3RyaW5nJgogICAgICAgICB3b3JraW5nUmVz
b3VyY2VSZXF1ZXN0LnNldEhUVFBSZWZlcnJlcihyZWZlcnJlcik7CiAgICAgd29ya2luZ1Jlc291
cmNlUmVxdWVzdC5zZXRIVFRQT3JpZ2luKG9yaWdpbik7CiAgICAgd29ya2luZ1Jlc291cmNlUmVx
dWVzdC5zZXRIVFRQTWV0aG9kKCJQT1NUIik7Ci0gICAgd29ya2luZ1Jlc291cmNlUmVxdWVzdC5z
ZXRIVFRQQm9keShmb3JtRGF0YSk7CisgICAgd29ya2luZ1Jlc291cmNlUmVxdWVzdC5zZXRIVFRQ
Qm9keShpblJlcXVlc3QuaHR0cEJvZHkoKSk7CiAgICAgd29ya2luZ1Jlc291cmNlUmVxdWVzdC5z
ZXRIVFRQQ29udGVudFR5cGUoY29udGVudFR5cGUpOwogICAgIGFkZEV4dHJhRmllbGRzVG9SZXF1
ZXN0KHdvcmtpbmdSZXNvdXJjZVJlcXVlc3QsIGxvYWRUeXBlLCB0cnVlKTsKIApAQCAtMzI5OSw3
ICszMjk4LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZERpZmZlcmVudERvY3VtZW50SXRlbShI
aXN0b3J5SXRlbSYgaXRlbSwgRnJhbWVMb2FkVHlwZSBsb2EKICAgICAgICAgZm9ybURhdGEtPmdl
bmVyYXRlRmlsZXMobV9mcmFtZS5kb2N1bWVudCgpKTsKIAogICAgICAgICByZXF1ZXN0LnNldEhU
VFBNZXRob2QoIlBPU1QiKTsKLSAgICAgICAgcmVxdWVzdC5zZXRIVFRQQm9keShmb3JtRGF0YSk7
CisgICAgICAgIHJlcXVlc3Quc2V0SFRUUEJvZHkoV1RGTW92ZShmb3JtRGF0YSkpOwogICAgICAg
ICByZXF1ZXN0LnNldEhUVFBDb250ZW50VHlwZShpdGVtLmZvcm1Db250ZW50VHlwZSgpKTsKICAg
ICAgICAgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBzZWN1cml0eU9yaWdpbiA9IFNlY3VyaXR5T3Jp
Z2luOjpjcmVhdGVGcm9tU3RyaW5nKGl0ZW0ucmVmZXJyZXIoKSk7CiAgICAgICAgIGFkZEhUVFBP
cmlnaW5JZk5lZWRlZChyZXF1ZXN0LCBzZWN1cml0eU9yaWdpbi0+dG9TdHJpbmcoKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUGluZ0xvYWRlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvUGluZ0xvYWRlci5jcHAKaW5kZXggYzgwYjJlNDA1NWUwZWYxZDIyNGQ3OWQ0
NzJlMWIzYmUzNTBmOGRhOS4uN2Y4ZGQ0ZTRiZGM3MWJkOTE2MDU3YTc3M2VlMzJmMmQzNjAzNjhh
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1BpbmdMb2FkZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9QaW5nTG9hZGVyLmNwcApAQCAtMTIzLDcgKzEyMyw3IEBA
IHZvaWQgUGluZ0xvYWRlcjo6c2VuZFBpbmcoRnJhbWUmIGZyYW1lLCBjb25zdCBVUkwmIHBpbmdV
UkwsIGNvbnN0IFVSTCYgZGVzdGluYXRpCiAgICAgc3RhcnRQaW5nTG9hZChmcmFtZSwgcmVxdWVz
dCk7CiB9CiAKLXZvaWQgUGluZ0xvYWRlcjo6c2VuZFZpb2xhdGlvblJlcG9ydChGcmFtZSYgZnJh
bWUsIGNvbnN0IFVSTCYgcmVwb3J0VVJMLCBQYXNzUmVmUHRyPEZvcm1EYXRhPiByZXBvcnQpCit2
b2lkIFBpbmdMb2FkZXI6OnNlbmRWaW9sYXRpb25SZXBvcnQoRnJhbWUmIGZyYW1lLCBjb25zdCBV
UkwmIHJlcG9ydFVSTCwgUmVmUHRyPEZvcm1EYXRhPiYmIHJlcG9ydCkKIHsKICAgICBSZXNvdXJj
ZVJlcXVlc3QgcmVxdWVzdChyZXBvcnRVUkwpOwogCkBAIC0xMzQsNyArMTM0LDcgQEAgdm9pZCBQ
aW5nTG9hZGVyOjpzZW5kVmlvbGF0aW9uUmVwb3J0KEZyYW1lJiBmcmFtZSwgY29uc3QgVVJMJiBy
ZXBvcnRVUkwsIFBhc3NSZWYKIAogICAgIHJlcXVlc3Quc2V0SFRUUE1ldGhvZCgiUE9TVCIpOwog
ICAgIHJlcXVlc3Quc2V0SFRUUENvbnRlbnRUeXBlKCJhcHBsaWNhdGlvbi9qc29uIik7Ci0gICAg
cmVxdWVzdC5zZXRIVFRQQm9keShyZXBvcnQpOworICAgIHJlcXVlc3Quc2V0SFRUUEJvZHkoV1RG
TW92ZShyZXBvcnQpKTsKIAogICAgIGJvb2wgcmVtb3ZlQ29va2llcyA9IHRydWU7CiAgICAgaWYg
KERvY3VtZW50KiBkb2N1bWVudCA9IGZyYW1lLmRvY3VtZW50KCkpIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9QaW5nTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
UGluZ0xvYWRlci5oCmluZGV4IDA0NWRlMTIxZWMyZDczY2MwMzUwZjRhOTBlZGI3ZGRlZWVkNGRk
ZjguLjU5ZTFjZjdmMmZjZjY5YzU3ZjM5MWRkNmNkYTA5ZDYyMDgwY2U3ZGMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9QaW5nTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1BpbmdMb2FkZXIuaApAQCAtMzIsNyArMzIsNyBAQAogI2lmbmRlZiBQaW5nTG9hZGVy
X2gKICNkZWZpbmUgUGluZ0xvYWRlcl9oCiAKLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgor
I2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC00NSw3
ICs0NSw3IEBAIGNsYXNzIFBpbmdMb2FkZXIgewogcHVibGljOgogICAgIHN0YXRpYyB2b2lkIGxv
YWRJbWFnZShGcmFtZSYsIGNvbnN0IFVSTCYpOwogICAgIHN0YXRpYyB2b2lkIHNlbmRQaW5nKEZy
YW1lJiwgY29uc3QgVVJMJiBwaW5nVVJMLCBjb25zdCBVUkwmIGRlc3RpbmF0aW9uVVJMKTsKLSAg
ICBzdGF0aWMgdm9pZCBzZW5kVmlvbGF0aW9uUmVwb3J0KEZyYW1lJiwgY29uc3QgVVJMJiByZXBv
cnRVUkwsIFBhc3NSZWZQdHI8Rm9ybURhdGE+IHJlcG9ydCk7CisgICAgc3RhdGljIHZvaWQgc2Vu
ZFZpb2xhdGlvblJlcG9ydChGcmFtZSYsIGNvbnN0IFVSTCYgcmVwb3J0VVJMLCBSZWZQdHI8Rm9y
bURhdGE+JiYgcmVwb3J0KTsKIAogcHJpdmF0ZToKICAgICBzdGF0aWMgdm9pZCBzdGFydFBpbmdM
b2FkKEZyYW1lJiwgUmVzb3VyY2VSZXF1ZXN0Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0NvbnRlbnRTZWN1cml0eVBvbGljeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nv
bnRlbnRTZWN1cml0eVBvbGljeS5jcHAKaW5kZXggMDU5YmI0YWQzZGI2ZDI5MjQ2ZmU5YjExZGFh
OGIwMDZhNDU2MzFkMy4uYjNjNjFiZjg2N2YyZjkyMDU5NGU3NGRhZTAwNzNkNjhiYzRkNWQ0ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZW50U2VjdXJpdHlQb2xpY3kuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGVudFNlY3VyaXR5UG9saWN5LmNwcApAQCAt
MTY3Miw3ICsxNjcyLDcgQEAgdm9pZCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OnJlcG9ydFZpb2xh
dGlvbihjb25zdCBTdHJpbmcmIGRpcmVjdGl2ZVRleHQsIGNvbnN0IFMKICAgICBSZWZQdHI8Rm9y
bURhdGE+IHJlcG9ydCA9IEZvcm1EYXRhOjpjcmVhdGUocmVwb3J0T2JqZWN0LT50b0pTT05TdHJp
bmcoKS51dGY4KCkpOwogCiAgICAgZm9yIChjb25zdCBhdXRvJiB1cmwgOiByZXBvcnRVUklzKQot
ICAgICAgICBQaW5nTG9hZGVyOjpzZW5kVmlvbGF0aW9uUmVwb3J0KCpmcmFtZSwgdXJsLCByZXBv
cnQpOworICAgICAgICBQaW5nTG9hZGVyOjpzZW5kVmlvbGF0aW9uUmVwb3J0KCpmcmFtZSwgdXJs
LCByZXBvcnQuY29weVJlZigpKTsKIH0KIAogdm9pZCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OnJl
cG9ydFVuc3VwcG9ydGVkRGlyZWN0aXZlKGNvbnN0IFN0cmluZyYgbmFtZSkgY29uc3QKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHAKaW5kZXggZjdlMTJjMjEx
ZjAwODYwNGI5ODliMzU4YTc1NTZkMDJjNjQ1NGI2Zi4uYWZkOTI2ZTQ1NmY4OTM0ODc1MjBjMDNm
YzVkM2FjM2MyMDU1MTg3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9Gb3JtRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9G
b3JtRGF0YS5jcHAKQEAgLTcwLDUyICs3MCw1MiBAQCBGb3JtRGF0YTo6fkZvcm1EYXRhKCkKICAg
ICByZW1vdmVHZW5lcmF0ZWRGaWxlc0lmTmVlZGVkKCk7CiB9CiAKLVBhc3NSZWZQdHI8Rm9ybURh
dGE+IEZvcm1EYXRhOjpjcmVhdGUoKQorUmVmUHRyPEZvcm1EYXRhPiBGb3JtRGF0YTo6Y3JlYXRl
KCkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEZvcm1EYXRhKTsKIH0KIAotUGFzc1JlZlB0
cjxGb3JtRGF0YT4gRm9ybURhdGE6OmNyZWF0ZShjb25zdCB2b2lkKiBkYXRhLCBzaXplX3Qgc2l6
ZSkKK1JlZlB0cjxGb3JtRGF0YT4gRm9ybURhdGE6OmNyZWF0ZShjb25zdCB2b2lkKiBkYXRhLCBz
aXplX3Qgc2l6ZSkKIHsKICAgICBSZWZQdHI8Rm9ybURhdGE+IHJlc3VsdCA9IGNyZWF0ZSgpOwog
ICAgIHJlc3VsdC0+YXBwZW5kRGF0YShkYXRhLCBzaXplKTsKLSAgICByZXR1cm4gcmVzdWx0LnJl
bGVhc2UoKTsKKyAgICByZXR1cm4gcmVzdWx0OwogfQogCi1QYXNzUmVmUHRyPEZvcm1EYXRhPiBG
b3JtRGF0YTo6Y3JlYXRlKGNvbnN0IENTdHJpbmcmIHN0cmluZykKK1JlZlB0cjxGb3JtRGF0YT4g
Rm9ybURhdGE6OmNyZWF0ZShjb25zdCBDU3RyaW5nJiBzdHJpbmcpCiB7CiAgICAgUmVmUHRyPEZv
cm1EYXRhPiByZXN1bHQgPSBjcmVhdGUoKTsKICAgICByZXN1bHQtPmFwcGVuZERhdGEoc3RyaW5n
LmRhdGEoKSwgc3RyaW5nLmxlbmd0aCgpKTsKLSAgICByZXR1cm4gcmVzdWx0LnJlbGVhc2UoKTsK
KyAgICByZXR1cm4gcmVzdWx0OwogfQogCi1QYXNzUmVmUHRyPEZvcm1EYXRhPiBGb3JtRGF0YTo6
Y3JlYXRlKGNvbnN0IFZlY3RvcjxjaGFyPiYgdmVjdG9yKQorUmVmUHRyPEZvcm1EYXRhPiBGb3Jt
RGF0YTo6Y3JlYXRlKGNvbnN0IFZlY3RvcjxjaGFyPiYgdmVjdG9yKQogewogICAgIFJlZlB0cjxG
b3JtRGF0YT4gcmVzdWx0ID0gY3JlYXRlKCk7CiAgICAgcmVzdWx0LT5hcHBlbmREYXRhKHZlY3Rv
ci5kYXRhKCksIHZlY3Rvci5zaXplKCkpOwotICAgIHJldHVybiByZXN1bHQucmVsZWFzZSgpOwor
ICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLVBhc3NSZWZQdHI8Rm9ybURhdGE+IEZvcm1EYXRhOjpj
cmVhdGUoY29uc3QgRm9ybURhdGFMaXN0JiBsaXN0LCBjb25zdCBUZXh0RW5jb2RpbmcmIGVuY29k
aW5nLCBFbmNvZGluZ1R5cGUgZW5jb2RpbmdUeXBlKQorUmVmUHRyPEZvcm1EYXRhPiBGb3JtRGF0
YTo6Y3JlYXRlKGNvbnN0IEZvcm1EYXRhTGlzdCYgbGlzdCwgY29uc3QgVGV4dEVuY29kaW5nJiBl
bmNvZGluZywgRW5jb2RpbmdUeXBlIGVuY29kaW5nVHlwZSkKIHsKICAgICBSZWZQdHI8Rm9ybURh
dGE+IHJlc3VsdCA9IGNyZWF0ZSgpOwogICAgIHJlc3VsdC0+YXBwZW5kS2V5VmFsdWVQYWlySXRl
bXMobGlzdCwgZW5jb2RpbmcsIGZhbHNlLCAwLCBlbmNvZGluZ1R5cGUpOwotICAgIHJldHVybiBy
ZXN1bHQucmVsZWFzZSgpOworICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLVBhc3NSZWZQdHI8Rm9y
bURhdGE+IEZvcm1EYXRhOjpjcmVhdGVNdWx0aVBhcnQoY29uc3QgRm9ybURhdGFMaXN0JiBsaXN0
LCBjb25zdCBUZXh0RW5jb2RpbmcmIGVuY29kaW5nLCBEb2N1bWVudCogZG9jdW1lbnQpCitSZWZQ
dHI8Rm9ybURhdGE+IEZvcm1EYXRhOjpjcmVhdGVNdWx0aVBhcnQoY29uc3QgRm9ybURhdGFMaXN0
JiBsaXN0LCBjb25zdCBUZXh0RW5jb2RpbmcmIGVuY29kaW5nLCBEb2N1bWVudCogZG9jdW1lbnQp
CiB7CiAgICAgUmVmUHRyPEZvcm1EYXRhPiByZXN1bHQgPSBjcmVhdGUoKTsKICAgICByZXN1bHQt
PmFwcGVuZEtleVZhbHVlUGFpckl0ZW1zKGxpc3QsIGVuY29kaW5nLCB0cnVlLCBkb2N1bWVudCk7
Ci0gICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNlKCk7CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAot
UGFzc1JlZlB0cjxGb3JtRGF0YT4gRm9ybURhdGE6OmNvcHkoKSBjb25zdAorUmVmUHRyPEZvcm1E
YXRhPiBGb3JtRGF0YTo6Y29weSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBG
b3JtRGF0YSgqdGhpcykpOwogfQogCi1QYXNzUmVmUHRyPEZvcm1EYXRhPiBGb3JtRGF0YTo6ZGVl
cENvcHkoKSBjb25zdAorUmVmUHRyPEZvcm1EYXRhPiBGb3JtRGF0YTo6ZGVlcENvcHkoKSBjb25z
dAogewogICAgIFJlZlB0cjxGb3JtRGF0YT4gZm9ybURhdGEoY3JlYXRlKCkpOwogCkBAIC0xMzUs
NyArMTM1LDcgQEAgUGFzc1JlZlB0cjxGb3JtRGF0YT4gRm9ybURhdGE6OmRlZXBDb3B5KCkgY29u
c3QKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgfQotICAgIHJldHVybiBmb3Jt
RGF0YS5yZWxlYXNlKCk7CisgICAgcmV0dXJuIGZvcm1EYXRhOwogfQogCiB2b2lkIEZvcm1EYXRh
OjphcHBlbmREYXRhKGNvbnN0IHZvaWQqIGRhdGEsIHNpemVfdCBzaXplKQpAQCAtMzAyLDcgKzMw
Miw3IEBAIHN0YXRpYyB2b2lkIGFwcGVuZEJsb2JSZXNvbHZlZChGb3JtRGF0YSogZm9ybURhdGEs
IGNvbnN0IFVSTCYgdXJsKQogICAgIH0KIH0KIAotUGFzc1JlZlB0cjxGb3JtRGF0YT4gRm9ybURh
dGE6OnJlc29sdmVCbG9iUmVmZXJlbmNlcygpCitSZWZQdHI8Rm9ybURhdGE+IEZvcm1EYXRhOjpy
ZXNvbHZlQmxvYlJlZmVyZW5jZXMoKQogewogICAgIC8vIEZpcnN0IGNoZWNrIGlmIGFueSBibG9i
cyBuZWVkcyB0byBiZSByZXNvbHZlZCwgb3Igd2UgY2FuIHRha2UgdGhlIGZhc3QgcGF0aC4KICAg
ICBib29sIGhhc0Jsb2IgPSBmYWxzZTsKQEAgLTMzNCw3ICszMzQsNyBAQCBQYXNzUmVmUHRyPEZv
cm1EYXRhPiBGb3JtRGF0YTo6cmVzb2x2ZUJsb2JSZWZlcmVuY2VzKCkKICAgICAgICAgZWxzZQog
ICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQotICAgIHJldHVybiBuZXdG
b3JtRGF0YS5yZWxlYXNlKCk7CisgICAgcmV0dXJuIG5ld0Zvcm1EYXRhOwogfQogCiB2b2lkIEZv
cm1EYXRhOjpnZW5lcmF0ZUZpbGVzKERvY3VtZW50KiBkb2N1bWVudCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuaAppbmRleCAyZGQwN2IxZjdlYjI4YTBlNDU0Mzg3
MTI1MjVlOTUyMTJhYzEyOWFjLi5jNWVmNjg3MzhjZjM1NDAxODM0YWJhNTUwMTZlZTM4ZGExMzkw
MDMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRh
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5oCkBAIC0x
OTQsMjMgKzE5NCwyMyBAQCBwdWJsaWM6CiAgICAgICAgIE11bHRpcGFydEZvcm1EYXRhIC8vIGZv
ciBtdWx0aXBhcnQvZm9ybS1kYXRhCiAgICAgfTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRp
YyBQYXNzUmVmUHRyPEZvcm1EYXRhPiBjcmVhdGUoKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0
aWMgUGFzc1JlZlB0cjxGb3JtRGF0YT4gY3JlYXRlKGNvbnN0IHZvaWQqLCBzaXplX3QpOwotICAg
IHN0YXRpYyBQYXNzUmVmUHRyPEZvcm1EYXRhPiBjcmVhdGUoY29uc3QgQ1N0cmluZyYpOwotICAg
IHN0YXRpYyBQYXNzUmVmUHRyPEZvcm1EYXRhPiBjcmVhdGUoY29uc3QgVmVjdG9yPGNoYXI+Jik7
Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8Rm9ybURhdGE+IGNyZWF0ZShjb25zdCBGb3JtRGF0YUxp
c3QmLCBjb25zdCBUZXh0RW5jb2RpbmcmLCBFbmNvZGluZ1R5cGUgPSBGb3JtVVJMRW5jb2RlZCk7
Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8Rm9ybURhdGE+IGNyZWF0ZU11bHRpUGFydChjb25zdCBG
b3JtRGF0YUxpc3QmLCBjb25zdCBUZXh0RW5jb2RpbmcmLCBEb2N1bWVudCopOworICAgIFdFQkNP
UkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8Rm9ybURhdGE+IGNyZWF0ZSgpOworICAgIFdFQkNPUkVf
RVhQT1JUIHN0YXRpYyBSZWZQdHI8Rm9ybURhdGE+IGNyZWF0ZShjb25zdCB2b2lkKiwgc2l6ZV90
KTsKKyAgICBzdGF0aWMgUmVmUHRyPEZvcm1EYXRhPiBjcmVhdGUoY29uc3QgQ1N0cmluZyYpOwor
ICAgIHN0YXRpYyBSZWZQdHI8Rm9ybURhdGE+IGNyZWF0ZShjb25zdCBWZWN0b3I8Y2hhcj4mKTsK
KyAgICBzdGF0aWMgUmVmUHRyPEZvcm1EYXRhPiBjcmVhdGUoY29uc3QgRm9ybURhdGFMaXN0Jiwg
Y29uc3QgVGV4dEVuY29kaW5nJiwgRW5jb2RpbmdUeXBlID0gRm9ybVVSTEVuY29kZWQpOworICAg
IHN0YXRpYyBSZWZQdHI8Rm9ybURhdGE+IGNyZWF0ZU11bHRpUGFydChjb25zdCBGb3JtRGF0YUxp
c3QmLCBjb25zdCBUZXh0RW5jb2RpbmcmLCBEb2N1bWVudCopOwogICAgIFdFQkNPUkVfRVhQT1JU
IH5Gb3JtRGF0YSgpOwogCiAgICAgLy8gRklYTUU6IEJvdGggdGhlc2UgZnVuY3Rpb25zIHBlcmZv
cm0gYSBkZWVwIGNvcHkgb2YgbV9lbGVtZW50cywgYnV0IGRpZmZlciBpbiBoYW5kbGluZyBvZiBv
dGhlciBkYXRhIG1lbWJlcnMuCiAgICAgLy8gSG93IG11Y2ggb2YgdGhhdCBpcyBpbnRlbnRpb25h
bD8gV2UgbmVlZCBiZXR0ZXIgbmFtZXMgdGhhdCBleHBsYWluIHRoZSBkaWZmZXJlbmNlLgotICAg
IFBhc3NSZWZQdHI8Rm9ybURhdGE+IGNvcHkoKSBjb25zdDsKLSAgICBQYXNzUmVmUHRyPEZvcm1E
YXRhPiBkZWVwQ29weSgpIGNvbnN0OworICAgIFJlZlB0cjxGb3JtRGF0YT4gY29weSgpIGNvbnN0
OworICAgIFJlZlB0cjxGb3JtRGF0YT4gZGVlcENvcHkoKSBjb25zdDsKIAogICAgIHRlbXBsYXRl
PHR5cGVuYW1lIEVuY29kZXI+CiAgICAgdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwogICAg
IHRlbXBsYXRlPHR5cGVuYW1lIERlY29kZXI+Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8Rm9ybURh
dGE+IGRlY29kZShEZWNvZGVyJik7CisgICAgc3RhdGljIFJlZlB0cjxGb3JtRGF0YT4gZGVjb2Rl
KERlY29kZXImKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwZW5kRGF0YShjb25zdCB2
b2lkKiBkYXRhLCBzaXplX3QpOwogICAgIHZvaWQgYXBwZW5kRmlsZShjb25zdCBTdHJpbmcmIGZp
bGVQYXRoLCBib29sIHNob3VsZEdlbmVyYXRlRmlsZSA9IGZhbHNlKTsKQEAgLTIyMyw3ICsyMjMs
NyBAQCBwdWJsaWM6CiAKICAgICAvLyBSZXNvbHZlIGFsbCBibG9iIHJlZmVyZW5jZXMgc28gd2Ug
b25seSBoYXZlIGZpbGUgYW5kIGRhdGEuCiAgICAgLy8gSWYgdGhlIEZvcm1EYXRhIGhhcyBubyBi
bG9iIHJlZmVyZW5jZXMgdG8gcmVzb2x2ZSwgdGhpcyBpcyByZXR1cm5lZC4KLSAgICBQYXNzUmVm
UHRyPEZvcm1EYXRhPiByZXNvbHZlQmxvYlJlZmVyZW5jZXMoKTsKKyAgICBSZWZQdHI8Rm9ybURh
dGE+IHJlc29sdmVCbG9iUmVmZXJlbmNlcygpOwogCiAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3Qg
eyByZXR1cm4gbV9lbGVtZW50cy5pc0VtcHR5KCk7IH0KICAgICBjb25zdCBWZWN0b3I8Rm9ybURh
dGFFbGVtZW50PiYgZWxlbWVudHMoKSBjb25zdCB7IHJldHVybiBtX2VsZW1lbnRzOyB9CkBAIC0y
ODksNyArMjg5LDcgQEAgdm9pZCBGb3JtRGF0YTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNv
bnN0CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIERlY29kZXI+Ci1QYXNzUmVmUHRyPEZvcm1EYXRh
PiBGb3JtRGF0YTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCitSZWZQdHI8Rm9ybURhdGE+IEZv
cm1EYXRhOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKICAgICBSZWZQdHI8Rm9ybURhdGE+
IGRhdGEgPSBGb3JtRGF0YTo6Y3JlYXRlKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuY3BwCmluZGV4IGExMDMzOGE2
MjUxMzEwM2I0NWI4Nzg3NTk5MGEzOTJjN2E4MjE4ODEuLjlkN2ZmMDA5YjQ5MDg2YzI4NjYxZTc5
MjlkMjRkYTUxN2FhYzI1OWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmNwcApAQCAtNzYsNyArNzYsNyBAQCBzdGQ6
OnVuaXF1ZV9wdHI8UmVzb3VyY2VSZXF1ZXN0PiBSZXNvdXJjZVJlcXVlc3RCYXNlOjphZG9wdChz
dGQ6OnVuaXF1ZV9wdHI8Q3JvcwogICAgICAgICBBU1NFUlQoZW5jb2RpbmdDb3VudCA8PSAzKTsK
ICAgICAgICAgcmVxdWVzdC0+c2V0UmVzcG9uc2VDb250ZW50RGlzcG9zaXRpb25FbmNvZGluZ0Zh
bGxiYWNrQXJyYXkoZW5jb2RpbmcxLCBlbmNvZGluZzIsIGVuY29kaW5nMyk7CiAgICAgfQotICAg
IHJlcXVlc3QtPnNldEhUVFBCb2R5KGRhdGEtPmh0dHBCb2R5KTsKKyAgICByZXF1ZXN0LT5zZXRI
VFRQQm9keShXVEZNb3ZlKGRhdGEtPmh0dHBCb2R5KSk7CiAgICAgcmVxdWVzdC0+c2V0QWxsb3dD
b29raWVzKGRhdGEtPmFsbG93Q29va2llcyk7CiAgICAgcmVxdWVzdC0+ZG9QbGF0Zm9ybUFkb3B0
KFdURk1vdmUoZGF0YSkpOwogICAgIHJldHVybiByZXF1ZXN0OwpAQCAtNDEzLDExICs0MTMsMTEg
QEAgRm9ybURhdGEqIFJlc291cmNlUmVxdWVzdEJhc2U6Omh0dHBCb2R5KCkgY29uc3QKICAgICBy
ZXR1cm4gbV9odHRwQm9keS5nZXQoKTsKIH0KIAotdm9pZCBSZXNvdXJjZVJlcXVlc3RCYXNlOjpz
ZXRIVFRQQm9keShQYXNzUmVmUHRyPEZvcm1EYXRhPiBodHRwQm9keSkKK3ZvaWQgUmVzb3VyY2VS
ZXF1ZXN0QmFzZTo6c2V0SFRUUEJvZHkoUmVmUHRyPEZvcm1EYXRhPiYmIGh0dHBCb2R5KQogewog
ICAgIHVwZGF0ZVJlc291cmNlUmVxdWVzdCgpOwogCi0gICAgbV9odHRwQm9keSA9IGh0dHBCb2R5
OworICAgIG1faHR0cEJvZHkgPSBXVEZNb3ZlKGh0dHBCb2R5KTsKIAogICAgIG1fcmVzb3VyY2VS
ZXF1ZXN0Qm9keVVwZGF0ZWQgPSB0cnVlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5oCmluZGV4IGUyYWNlNmU4N2E5ZGY0
MWFmZjUyZDBjMmNiZDE5YjdhYmZiZmM2YmIuLjkwYTQ1NWE4NTI2ZDlkNDg4NmJkMzUzYjBjZTg5
YTE0MmMxY2MxMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
UmVzb3VyY2VSZXF1ZXN0QmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5oCkBAIC0xMjEsOCArMTIxLDkgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogICAgICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFJlc3BvbnNlQ29udGVudERp
c3Bvc2l0aW9uRW5jb2RpbmdGYWxsYmFja0FycmF5KGNvbnN0IFN0cmluZyYgZW5jb2RpbmcxLCBj
b25zdCBTdHJpbmcmIGVuY29kaW5nMiA9IFN0cmluZygpLCBjb25zdCBTdHJpbmcmIGVuY29kaW5n
MyA9IFN0cmluZygpKTsKIAogICAgICAgICBXRUJDT1JFX0VYUE9SVCBGb3JtRGF0YSogaHR0cEJv
ZHkoKSBjb25zdDsKLSAgICAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRIVFRQQm9keShQYXNz
UmVmUHRyPEZvcm1EYXRhPiBodHRwQm9keSk7Ci0gICAgICAgIAorICAgICAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIHNldEhUVFBCb2R5KFJlZlB0cjxGb3JtRGF0YT4mJik7CisgICAgICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgc2V0SFRUUEJvZHkoRm9ybURhdGEqIGh0dHBCb2R5KSB7IHNldEhUVFBC
b2R5KFJlZlB0cjxGb3JtRGF0YT4oaHR0cEJvZHkpKTsgfQorCiAgICAgICAgIGJvb2wgYWxsb3dD
b29raWVzKCkgY29uc3Q7CiAgICAgICAgIHZvaWQgc2V0QWxsb3dDb29raWVzKGJvb2wgYWxsb3dD
b29raWVzKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
Zi9Gb3JtRGF0YVN0cmVhbUNGTmV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY2YvRm9ybURhdGFTdHJlYW1DRk5ldC5jcHAKaW5kZXggZjM5ODUxMzlhNDAxYmU2M2EwODZi
MjZjZjFkZjFlY2VmZWY2MDI2ZS4uNzk5NTIzZDUzMmYxNGUzMWQ2ZjBhYzhlYjQ4ZmU1Y2U0MWM1
NzBhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Gb3Jt
RGF0YVN0cmVhbUNGTmV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2NmL0Zvcm1EYXRhU3RyZWFtQ0ZOZXQuY3BwCkBAIC0zNDgsNyArMzQ4LDcgQEAgc3RhdGljIHZv
aWQgZm9ybUV2ZW50Q2FsbGJhY2soQ0ZSZWFkU3RyZWFtUmVmIHN0cmVhbSwgQ0ZTdHJlYW1FdmVu
dFR5cGUgdHlwZSwgdm8KICAgICB9CiB9CiAKLXZvaWQgc2V0SFRUUEJvZHkoQ0ZNdXRhYmxlVVJM
UmVxdWVzdFJlZiByZXF1ZXN0LCBQYXNzUmVmUHRyPEZvcm1EYXRhPiBwcnBGb3JtRGF0YSkKK3Zv
aWQgc2V0SFRUUEJvZHkoQ0ZNdXRhYmxlVVJMUmVxdWVzdFJlZiByZXF1ZXN0LCBGb3JtRGF0YSog
cHJwRm9ybURhdGEpCiB7CiAgICAgUmVmUHRyPEZvcm1EYXRhPiBmb3JtRGF0YSA9IHBycEZvcm1E
YXRhOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0Zv
cm1EYXRhU3RyZWFtQ0ZOZXQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2Yv
Rm9ybURhdGFTdHJlYW1DRk5ldC5oCmluZGV4IDg3YTg0ZTU0NTg3NTFiMjBhZmIwNWE3MWNhNjk5
Y2E5MmEyNDg3NDEuLmY5YTZkODc1OGYzNDkyYTJjMWFmZmU4ZDA0ZGExYjU1ODY1YjFhMjUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvRm9ybURhdGFTdHJl
YW1DRk5ldC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvRm9ybURh
dGFTdHJlYW1DRk5ldC5oCkBAIC0zOSw3ICszOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
Y2xhc3MgRm9ybURhdGE7CiAKLXZvaWQgc2V0SFRUUEJvZHkoQ0ZNdXRhYmxlVVJMUmVxdWVzdFJl
ZiwgUGFzc1JlZlB0cjxGb3JtRGF0YT4pOwordm9pZCBzZXRIVFRQQm9keShDRk11dGFibGVVUkxS
ZXF1ZXN0UmVmLCBGb3JtRGF0YSopOwogCiBGb3JtRGF0YSogaHR0cEJvZHlGcm9tU3RyZWFtKENG
UmVhZFN0cmVhbVJlZik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY2YvUmVzb3VyY2VSZXF1ZXN0Q0ZOZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jZi9SZXNvdXJjZVJlcXVlc3RDRk5ldC5jcHAKaW5kZXggMTk0NTUyNWQ4YTBj
M2Q1ZDBmYjFhYzgyZjMzZGIzMTczZTAyMjI3MS4uYWM4N2IyYTM4NDI3MmRkM2FlNzU4MmVjMGQ4
YzRkOTNlY2Q3YzVmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jZi9SZXNvdXJjZVJlcXVlc3RDRk5ldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jZi9SZXNvdXJjZVJlcXVlc3RDRk5ldC5jcHAKQEAgLTIwNCw3ICsyMDQsNyBA
QCB2b2lkIFJlc291cmNlUmVxdWVzdDo6ZG9VcGRhdGVQbGF0Zm9ybUhUVFBCb2R5KCkKICAgICB9
IGVsc2UKICAgICAgICAgY2ZSZXF1ZXN0ID0gQ0ZVUkxSZXF1ZXN0Q3JlYXRlTXV0YWJsZSgwLCB1
cmwuZ2V0KCksIChDRlVSTFJlcXVlc3RDYWNoZVBvbGljeSljYWNoZVBvbGljeSgpLCB0aW1lb3V0
SW50ZXJ2YWwoKSwgZmlyc3RQYXJ0eUZvckNvb2tpZXMuZ2V0KCkpOwogCi0gICAgUmVmUHRyPEZv
cm1EYXRhPiBmb3JtRGF0YSA9IGh0dHBCb2R5KCk7CisgICAgRm9ybURhdGEqIGZvcm1EYXRhID0g
aHR0cEJvZHkoKTsKICAgICBpZiAoZm9ybURhdGEgJiYgIWZvcm1EYXRhLT5pc0VtcHR5KCkpCiAg
ICAgICAgIFdlYkNvcmU6OnNldEhUVFBCb2R5KGNmUmVxdWVzdCwgZm9ybURhdGEpOwogCkBAIC0z
MzUsNyArMzM1LDcgQEAgdm9pZCBSZXNvdXJjZVJlcXVlc3Q6OnVwZGF0ZUZyb21EZWxlZ2F0ZVBy
ZXNlcnZpbmdPbGRQcm9wZXJ0aWVzKGNvbnN0IFJlc291cmNlUmUKICAgICAqdGhpcyA9IGRlbGVn
YXRlUHJvdmlkZWRSZXF1ZXN0OwogCiAgICAgc2V0UHJpb3JpdHkob2xkUHJpb3JpdHkpOwotICAg
IHNldEhUVFBCb2R5KG9sZEhUVFBCb2R5LnJlbGVhc2UoKSk7CisgICAgc2V0SFRUUEJvZHkoV1RG
TW92ZShvbGRIVFRQQm9keSkpOwogICAgIHNldEhpZGRlbkZyb21JbnNwZWN0b3IoaXNIaWRkZW5G
cm9tSW5zcGVjdG9yKTsKICAgICBzZXRSZXF1ZXN0ZXIob2xkUmVxdWVzdGVyKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmVzb3VyY2VSZXF1
ZXN0Q29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Jlc291
cmNlUmVxdWVzdENvY29hLm1tCmluZGV4IGZjZjQ5MzdjMzYwYjIyYWY4ZTFiZmM5YTQ1MzBiYjkx
YzE3MWJiNWMuLjY3MmIxYjliMDQ1NjZlM2M2NjhhYTMyYzJlZmMxYTM4NTU1NmE0NjkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmVzb3VyY2VSZXF1
ZXN0Q29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9S
ZXNvdXJjZVJlcXVlc3RDb2NvYS5tbQpAQCAtMTkwLDcgKzE5MCw3IEBAIHZvaWQgUmVzb3VyY2VS
ZXF1ZXN0Ojpkb1VwZGF0ZVBsYXRmb3JtSFRUUEJvZHkoKQogICAgIGVsc2UKICAgICAgICAgbnNS
ZXF1ZXN0ID0gW1tOU011dGFibGVVUkxSZXF1ZXN0IGFsbG9jXSBpbml0V2l0aFVSTDp1cmwoKV07
CiAKLSAgICBSZWZQdHI8Rm9ybURhdGE+IGZvcm1EYXRhID0gaHR0cEJvZHkoKTsKKyAgICBGb3Jt
RGF0YSogZm9ybURhdGEgPSBodHRwQm9keSgpOwogICAgIGlmIChmb3JtRGF0YSAmJiAhZm9ybURh
dGEtPmlzRW1wdHkoKSkKICAgICAgICAgV2ViQ29yZTo6c2V0SFRUUEJvZHkobnNSZXF1ZXN0LCBm
b3JtRGF0YSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9SZXNvdXJjZUhhbmRsZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxlTWFuYWdlci5jcHAKaW5kZXggY2Q5NzdiYjNjMDdm
YTFhN2U2ZGE4YmM1NjJhZTU1MzM2N2RhNzcyNy4uNzc0MjZmYTg4NDViNDUxMDljZmQ1YjE0NjMy
NzM0YzJmZjc4NmY0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL1Jlc291cmNlSGFuZGxlTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxlTWFuYWdlci5jcHAKQEAgLTc2Myw5ICs3
NjMsMTAgQEAgc3RhdGljIGlubGluZSBzaXplX3QgZ2V0Rm9ybUVsZW1lbnRzQ291bnQoUmVzb3Vy
Y2VIYW5kbGUqIGpvYikKIAogICAgIC8vIFJlc29sdmUgdGhlIGJsb2IgZWxlbWVudHMgc28gdGhl
IGZvcm1EYXRhIGNhbiBjb3JyZWN0bHkgcmVwb3J0IGl0J3Mgc2l6ZS4KICAgICBmb3JtRGF0YSA9
IGZvcm1EYXRhLT5yZXNvbHZlQmxvYlJlZmVyZW5jZXMoKTsKLSAgICBqb2ItPmZpcnN0UmVxdWVz
dCgpLnNldEhUVFBCb2R5KGZvcm1EYXRhKTsKKyAgICBzaXplX3Qgc2l6ZSA9IGZvcm1EYXRhLT5l
bGVtZW50cygpLnNpemUoKTsKKyAgICBqb2ItPmZpcnN0UmVxdWVzdCgpLnNldEhUVFBCb2R5KFdU
Rk1vdmUoZm9ybURhdGEpKTsKIAotICAgIHJldHVybiBmb3JtRGF0YS0+ZWxlbWVudHMoKS5zaXpl
KCk7CisgICAgcmV0dXJuIHNpemU7CiB9CiAKIHN0YXRpYyB2b2lkIHNldHVwRm9ybURhdGEoUmVz
b3VyY2VIYW5kbGUqIGpvYiwgQ1VSTG9wdGlvbiBzaXplT3B0aW9uLCBzdHJ1Y3QgY3VybF9zbGlz
dCoqIGhlYWRlcnMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L21hYy9Gb3JtRGF0YVN0cmVhbU1hYy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9tYWMvRm9ybURhdGFTdHJlYW1NYWMuaAppbmRleCBkYjgxYzY2ODdjNDIyZTVlY2JjMzY5MGUy
MzQ1YWY4MjI0YWQwNmM2Li5iODVkZGNiMTVlZDhmMDhkNTlmYWM0NmVkZmZiZTRlMTgyOTQyNDU3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9Gb3JtRGF0
YVN0cmVhbU1hYy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0Zv
cm1EYXRhU3RyZWFtTWFjLmgKQEAgLTQyLDcgKzQyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiAgICAgY2xhc3MgRm9ybURhdGE7CiAKLSAgICB2b2lkIHNldEhUVFBCb2R5KE5TTXV0YWJsZVVS
TFJlcXVlc3QgKiwgUGFzc1JlZlB0cjxGb3JtRGF0YT4pOworICAgIHZvaWQgc2V0SFRUUEJvZHko
TlNNdXRhYmxlVVJMUmVxdWVzdCAqLCBGb3JtRGF0YSopOwogICAgIEZvcm1EYXRhKiBodHRwQm9k
eUZyb21TdHJlYW0oTlNJbnB1dFN0cmVhbSAqKTsKIAogICAgIENGU3RyaW5nUmVmIGZvcm1EYXRh
U3RyZWFtTGVuZ3RoUHJvcGVydHlOYW1lKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL21hYy9Gb3JtRGF0YVN0cmVhbU1hYy5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvbWFjL0Zvcm1EYXRhU3RyZWFtTWFjLm1tCmluZGV4IGI1NzM0Zjk4
ZWRmYmYxMTM1ZTE3ZDRiN2ViYzI5Y2M1NWZlMDQzNTEuLmJlOTY2ZWJhNTZiNmQyMmIwNDAxOThk
ODIyODhjZmE4ZDY5N2I4OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvbWFjL0Zvcm1EYXRhU3RyZWFtTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvbWFjL0Zvcm1EYXRhU3RyZWFtTWFjLm1tCkBAIC0zMyw3ICszMyw2IEBACiAK
ICNpbXBvcnQgIkZvcm1EYXRhLmgiCiAjaW1wb3J0ICJGb3JtRGF0YVN0cmVhbUNGTmV0LmgiCi0j
aW1wb3J0IDx3dGYvUGFzc1JlZlB0ci5oPgogCiBAaW50ZXJmYWNlIE5TVVJMUmVxdWVzdCAoV2Vi
TlNVUkxSZXF1ZXN0RGV0YWlscykKIC0gKENGVVJMUmVxdWVzdFJlZilfQ0ZVUkxSZXF1ZXN0OwpA
QCAtNDEsNyArNDAsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXZvaWQgc2V0SFRUUEJv
ZHkoTlNNdXRhYmxlVVJMUmVxdWVzdCAqcmVxdWVzdCwgUGFzc1JlZlB0cjxGb3JtRGF0YT4gcHJw
Rm9ybURhdGEpCit2b2lkIHNldEhUVFBCb2R5KE5TTXV0YWJsZVVSTFJlcXVlc3QgKnJlcXVlc3Qs
IEZvcm1EYXRhKiBwcnBGb3JtRGF0YSkKIHsKICAgICBzZXRIVFRQQm9keShjb25zdF9jYXN0PENG
TXV0YWJsZVVSTFJlcXVlc3RSZWY+KFtyZXF1ZXN0IF9DRlVSTFJlcXVlc3RdKSwgcHJwRm9ybURh
dGEpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3Vw
L1Jlc291cmNlSGFuZGxlU291cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L3NvdXAvUmVzb3VyY2VIYW5kbGVTb3VwLmNwcAppbmRleCBiNjdjOTBkZDliNGMyOTdjMDgyZTEy
MDU4YTE4MTk3MDJiOTdhMTdlLi42NTRlNmIzMjQ4NDY4NWVkNDQ3NzA4Y2E0MGNmNmY1ZGU1NDM1
ZTc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVz
b3VyY2VIYW5kbGVTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L3NvdXAvUmVzb3VyY2VIYW5kbGVTb3VwLmNwcApAQCAtNTA2LDcgKzUwNiw3IEBAIHN0YXRpYyB2
b2lkIGRvUmVkaXJlY3QoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSkKICAgICAgICAgLy8gb3IgaWYg
Y3VycmVudCByZWRpcmVjdGlvbiBzYXlzIHNvCiAgICAgICAgIGlmIChtZXNzYWdlLT5tZXRob2Qg
PT0gU09VUF9NRVRIT0RfR0VUIHx8IHNob3VsZFJlZGlyZWN0QXNHRVQobWVzc2FnZSwgbmV3VVJM
LCBjcm9zc09yaWdpbikpIHsKICAgICAgICAgICAgIG5ld1JlcXVlc3Quc2V0SFRUUE1ldGhvZCgi
R0VUIik7Ci0gICAgICAgICAgICBuZXdSZXF1ZXN0LnNldEhUVFBCb2R5KDApOworICAgICAgICAg
ICAgbmV3UmVxdWVzdC5zZXRIVFRQQm9keShudWxscHRyKTsKICAgICAgICAgICAgIG5ld1JlcXVl
c3QuY2xlYXJIVFRQQ29udGVudFR5cGUoKTsKICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94
bWwvWE1MSHR0cFJlcXVlc3QuY3BwCmluZGV4IDIwOTU4OTM5MzliNzQ1MGNmOWRkZTRjNGU1OGQ0
YmMxNmFjYjQ2ZDYuLjM1ZGIyNTFlZmQ4YmYyYzUzZWZkZTg1N2U0YTczZmQzZjg0NGFjNmUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcApAQCAtNzQzLDcgKzc0Myw3IEBAIHZv
aWQgWE1MSHR0cFJlcXVlc3Q6OmNyZWF0ZVJlcXVlc3QoRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAg
aWYgKG1fcmVxdWVzdEVudGl0eUJvZHkpIHsKICAgICAgICAgQVNTRVJUKG1fbWV0aG9kICE9ICJH
RVQiKTsKICAgICAgICAgQVNTRVJUKG1fbWV0aG9kICE9ICJIRUFEIik7Ci0gICAgICAgIHJlcXVl
c3Quc2V0SFRUUEJvZHkobV9yZXF1ZXN0RW50aXR5Qm9keS5yZWxlYXNlKCkpOworICAgICAgICBy
ZXF1ZXN0LnNldEhUVFBCb2R5KFdURk1vdmUobV9yZXF1ZXN0RW50aXR5Qm9keSkpOwogICAgIH0K
IAogICAgIGlmICghbV9yZXF1ZXN0SGVhZGVycy5pc0VtcHR5KCkpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L3dpbi9XZWJNdXRhYmxlVVJMUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dp
bi9XZWJNdXRhYmxlVVJMUmVxdWVzdC5jcHAKaW5kZXggNGNhMDI2YWY2ZjcyODAxZWQwNmY0NGIw
NzhhNjZjOTFiNTc4ZmZmZC4uMWExNGEwOTZmMjM1N2NhN2Y1MmEzYTJiMTJlZjZlZTVhNTlkNjM0
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vV2ViTXV0YWJsZVVSTFJlcXVlc3QuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYk11dGFibGVVUkxSZXF1ZXN0LmNwcApAQCAtMzA3
LDcgKzMwNyw3IEBAIEhSRVNVTFQgV2ViTXV0YWJsZVVSTFJlcXVlc3Q6OnNldEhUVFBCb2R5KF9J
bl9vcHRfIElTdHJlYW0qIGRhdGEpCiAgICAgaWYgKEZBSUxFRChkYXRhLT5SZWFkKGZvcm1EYXRh
LCBzdGF0LmNiU2l6ZS5Mb3dQYXJ0LCAmYnl0ZXNSZWFkKSkpCiAgICAgICAgIHJldHVybiBFX0ZB
SUw7CiAKLSAgICBtX3JlcXVlc3Quc2V0SFRUUEJvZHkoaHR0cEJvZHkpOworICAgIG1fcmVxdWVz
dC5zZXRIVFRQQm9keShXVEZNb3ZlKGh0dHBCb2R5KSk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJj
ZUxvYWRQYXJhbWV0ZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdv
cmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmNwcAppbmRleCBmNGM1OGE1ZTRjNjNhOTUyMmI2NGI5
OGZiODBjODcwMWEyNzA2YmNkLi5iNTZiMmY3ZDhkOTNiMGZmNDFkY2Y4NDQ1ZGVkMTYzZWVkZjI3
MWY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVz
b3VyY2VMb2FkUGFyYW1ldGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuY3BwCkBAIC0xMjEsNyArMTIxLDcgQEAg
Ym9vbCBOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVyczo6ZGVjb2RlKElQQzo6QXJndW1lbnRE
ZWNvZGVyJiBkZWNvZGVyLCBOZXR3b3IKICAgICAgICAgUmVmUHRyPEZvcm1EYXRhPiBmb3JtRGF0
YSA9IEZvcm1EYXRhOjpkZWNvZGUoZGVjb2Rlcik7CiAgICAgICAgIGlmICghZm9ybURhdGEpCiAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIHJlc3VsdC5yZXF1ZXN0LnNldEhUVFBC
b2R5KGZvcm1EYXRhLnJlbGVhc2UoKSk7CisgICAgICAgIHJlc3VsdC5yZXF1ZXN0LnNldEhUVFBC
b2R5KFdURk1vdmUoZm9ybURhdGEpKTsKIAogICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5k
bGVBcnJheSByZXF1ZXN0Qm9keVNhbmRib3hFeHRlbnNpb25IYW5kbGVzOwogICAgICAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKHJlcXVlc3RCb2R5U2FuZGJveEV4dGVuc2lvbkhhbmRsZXMpKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>269452</attachid>
            <date>2016-01-21 06:50:08 -0800</date>
            <delta_ts>2016-01-22 01:42:19 -0800</delta_ts>
            <desc>Updated according review</desc>
            <filename>bug-153229-20160121154939.patch</filename>
            <type>text/plain</type>
            <size>28735</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk1Mzk4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDMzNzRhNzY1ZWU3YzYy
ODg1ODAyZWI0Y2M3YjVjMjQzYTgxZmFmMi4uZjRmMmFlYmNiNzRmMDM4MDg3NjY1NGZjZDY5NDQw
MzA2ZWVhZDliZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU4IEBACisyMDE2LTAxLTE5ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uLmZhYmxldEBjcmYuY2Fub24uZnI+CisKKyAgICAgICAgUmVtb3Zl
IFBhc3NSZWZQdHIgZnJvbSBSZXNvdXJjZVJlcXVlc3QgYW5kIEZvcm1EYXRhCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTMyMjkKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDb3ZlcmVkIGJ5IGV4aXN0aW5n
IHRlc3RzLgorCisgICAgICAgIE1ha2luZyBSZXNvdXJjZVJlcXVlc3Q6OnNldEhUVFBCb2R5IHRh
a2UgYSBSZWZQdHI8Rm9ybURhdGE+JiYuCisgICAgICAgIE1vdmluZyBGb3JtRGF0YSBmcm9tIFBh
c3NSZWZQdHIgdG8gUmVmUHRyLgorCisgICAgICAgICogaHRtbC9wYXJzZXIvWFNTQXVkaXRvckRl
bGVnYXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhTU0F1ZGl0b3JEZWxlZ2F0ZTo6ZGlkQmxv
Y2tTY3JpcHQpOgorICAgICAgICAqIGxvYWRlci9Gb3JtU3VibWlzc2lvbi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpGb3JtU3VibWlzc2lvbjo6cG9wdWxhdGVGcmFtZUxvYWRSZXF1ZXN0KToKKyAg
ICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVM
b2FkZXI6OmxvYWRQb3N0UmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6
bG9hZERpZmZlcmVudERvY3VtZW50SXRlbSk6CisgICAgICAgICogbG9hZGVyL1BpbmdMb2FkZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UGluZ0xvYWRlcjo6c2VuZFZpb2xhdGlvblJlcG9ydCk6
CisgICAgICAgICogbG9hZGVyL1BpbmdMb2FkZXIuaDoKKyAgICAgICAgKiBwYWdlL0NvbnRlbnRT
ZWN1cml0eVBvbGljeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xp
Y3k6OnJlcG9ydFZpb2xhdGlvbik6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0
YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb3JtRGF0YTo6Y3JlYXRlKToKKyAgICAgICAgKFdl
YkNvcmU6OkZvcm1EYXRhOjpjcmVhdGVNdWx0aVBhcnQpOgorICAgICAgICAoV2ViQ29yZTo6Rm9y
bURhdGE6OmNvcHkpOgorICAgICAgICAoV2ViQ29yZTo6Rm9ybURhdGE6OmRlZXBDb3B5KToKKyAg
ICAgICAgKFdlYkNvcmU6OkZvcm1EYXRhOjpyZXNvbHZlQmxvYlJlZmVyZW5jZXMpOgorICAgICAg
ICAqIHBsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZvcm1E
YXRhOjpkZWNvZGUpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0
QmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3RCYXNlOjphZG9wdCk6
CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3RCYXNlOjpzZXRIVFRQQm9keSk6Cisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmg6CisgICAgICAg
IChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3RCYXNlOjpzZXRIVFRQQm9keSk6CisgICAgICAgICog
cGxhdGZvcm0vbmV0d29yay9jZi9Gb3JtRGF0YVN0cmVhbUNGTmV0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OnNldEhUVFBCb2R5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL0Zvcm1E
YXRhU3RyZWFtQ0ZOZXQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNl
UmVxdWVzdENGTmV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdDo6ZG9V
cGRhdGVQbGF0Zm9ybUhUVFBCb2R5KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dDo6dXBkYXRlRnJvbURlbGVnYXRlUHJlc2VydmluZ09sZFByb3BlcnRpZXMpOgorICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvY29jb2EvUmVzb3VyY2VSZXF1ZXN0Q29jb2EubW06CisgICAgICAg
IChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Q6OmRvVXBkYXRlUGxhdGZvcm1IVFRQQm9keSk6Cisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxlTWFuYWdlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpnZXRGb3JtRWxlbWVudHNDb3VudCk6CisgICAgICAgICogcGxh
dGZvcm0vbmV0d29yay9tYWMvRm9ybURhdGFTdHJlYW1NYWMuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9uZXR3b3JrL21hYy9Gb3JtRGF0YVN0cmVhbU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OnNl
dEhUVFBCb2R5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VIYW5k
bGVTb3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmRvUmVkaXJlY3QpOgorICAgICAgICAqIHht
bC9YTUxIdHRwUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6
Y3JlYXRlUmVxdWVzdCk6CisKIDIwMTYtMDEtMjAgIFphbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxl
LmNvbT4KIAogICAgICAgICBodHRwOi8vdmljdG9yZGFycmFzLmZyL2Nzc2dhbWUvIGRvZXNuJ3Qg
d29yayBpbiBTYWZhcmkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKaW5kZXggZDRmN2Q1M2VmZjI1NDhhZGE1MWQ5
MzBkZGVhZmYxMjNjMDg1OGI4MC4uMjk3YWUzNjRjM2M1YzFiZmQ1MjViMTQ2MWY2OGM1NGM3ZjZk
NzYxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvd2luL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDE2LTAxLTE5ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uLmZhYmxldEBjcmYuY2Fub24uZnI+CisKKyAgICAgICAgUmVtb3Zl
IFBhc3NSZWZQdHIgZnJvbSBSZXNvdXJjZVJlcXVlc3QgYW5kIEZvcm1EYXRhCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTMyMjkKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYk11dGFibGVVUkxSZXF1
ZXN0LmNwcDoKKyAgICAgICAgKFdlYk11dGFibGVVUkxSZXF1ZXN0OjpzZXRIVFRQQm9keSk6CisK
IDIwMTYtMDEtMTUgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAg
ICAgICAgUmVtb3ZlIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0NvbnZleFBvbHlnb24oKSBhbmQgR3Jh
cGhpY3NDb250ZXh0OjpjbGlwQ29udmV4UG9seWdvbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZmYxYTQwNzBm
MGFmNmFiMTc4NGJmMjI1MTJiNWY3MDI2NzI4ZjVlZS4uNDM5NDVjNGQwYWJkYTJmZTZiNTg4ZTJi
MTViMjNmZmM4MGI4ZmVmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDE2LTAxLTE5
ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uLmZhYmxldEBjcmYuY2Fub24uZnI+CisKKyAgICAgICAg
UmVtb3ZlIFBhc3NSZWZQdHIgZnJvbSBSZXNvdXJjZVJlcXVlc3QgYW5kIEZvcm1EYXRhCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTMyMjkKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnM6OmRlY29kZSk6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnkuY3BwOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrQ2FjaGU6OkVudHJ5OjpFbnRyeSk6CisKIDIwMTYtMDEtMjAgIEFsZXggQ2hyaXN0ZW5z
ZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBGaXggQ01ha2UgYnVpbGQg
YWZ0ZXIgcjE5NTMwMC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Gb3JtU3Vi
bWlzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRm9ybVN1Ym1pc3Npb24uY3BwCmlu
ZGV4IDAxNzg2YmFkMTNhNDI0NmZkNGJjNDE0ZTQ3NzZhYzIzYjBmNjRiZDIuLmE0YTRiMzc1YWVh
OTE4MmJhZjkxOWEwMjczMDY2ZTkxZTM0ZjY2MGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Gb3JtU3VibWlzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zv
cm1TdWJtaXNzaW9uLmNwcApAQCAtMjU4LDcgKzI1OCw3IEBAIHZvaWQgRm9ybVN1Ym1pc3Npb246
OnBvcHVsYXRlRnJhbWVMb2FkUmVxdWVzdChGcmFtZUxvYWRSZXF1ZXN0JiBmcmFtZVJlcXVlc3Qp
CiAKICAgICBpZiAobV9tZXRob2QgPT0gRm9ybVN1Ym1pc3Npb246OlBvc3RNZXRob2QpIHsKICAg
ICAgICAgZnJhbWVSZXF1ZXN0LnJlc291cmNlUmVxdWVzdCgpLnNldEhUVFBNZXRob2QoIlBPU1Qi
KTsKLSAgICAgICAgZnJhbWVSZXF1ZXN0LnJlc291cmNlUmVxdWVzdCgpLnNldEhUVFBCb2R5KG1f
Zm9ybURhdGEpOworICAgICAgICBmcmFtZVJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0KCkuc2V0SFRU
UEJvZHkobV9mb3JtRGF0YS5jb3B5UmVmKCkpOwogCiAgICAgICAgIC8vIGNvbnN0cnVjdCBzb21l
IHVzZXIgaGVhZGVycyBpZiBuZWNlc3NhcnkKICAgICAgICAgaWYgKG1fYm91bmRhcnkuaXNFbXB0
eSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKaW5kZXggMGZmNWIyOTlkOGM2
MmMwNWMwMDFjZDFjMjZmZjZlODFkOGE0ODdjMS4uMDI5NzdmNjI0NWQ1NGYzYTcyNGQ2OWQyMDgz
NDA4Mzc5NjE1ODRiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9h
ZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCkBAIC0y
NjU0LDcgKzI2NTQsNiBAQCB2b2lkIEZyYW1lTG9hZGVyOjpsb2FkUG9zdFJlcXVlc3QoY29uc3Qg
RnJhbWVMb2FkUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgU3RyaW5nJgogCiAgICAgY29uc3QgUmVz
b3VyY2VSZXF1ZXN0JiBpblJlcXVlc3QgPSByZXF1ZXN0LnJlc291cmNlUmVxdWVzdCgpOwogICAg
IGNvbnN0IFVSTCYgdXJsID0gaW5SZXF1ZXN0LnVybCgpOwotICAgIFJlZlB0cjxGb3JtRGF0YT4g
Zm9ybURhdGEgPSBpblJlcXVlc3QuaHR0cEJvZHkoKTsKICAgICBjb25zdCBTdHJpbmcmIGNvbnRl
bnRUeXBlID0gaW5SZXF1ZXN0Lmh0dHBDb250ZW50VHlwZSgpOwogICAgIFN0cmluZyBvcmlnaW4g
PSBpblJlcXVlc3QuaHR0cE9yaWdpbigpOwogCkBAIC0yNjY0LDcgKzI2NjMsNyBAQCB2b2lkIEZy
YW1lTG9hZGVyOjpsb2FkUG9zdFJlcXVlc3QoY29uc3QgRnJhbWVMb2FkUmVxdWVzdCYgcmVxdWVz
dCwgY29uc3QgU3RyaW5nJgogICAgICAgICB3b3JraW5nUmVzb3VyY2VSZXF1ZXN0LnNldEhUVFBS
ZWZlcnJlcihyZWZlcnJlcik7CiAgICAgd29ya2luZ1Jlc291cmNlUmVxdWVzdC5zZXRIVFRQT3Jp
Z2luKG9yaWdpbik7CiAgICAgd29ya2luZ1Jlc291cmNlUmVxdWVzdC5zZXRIVFRQTWV0aG9kKCJQ
T1NUIik7Ci0gICAgd29ya2luZ1Jlc291cmNlUmVxdWVzdC5zZXRIVFRQQm9keShmb3JtRGF0YSk7
CisgICAgd29ya2luZ1Jlc291cmNlUmVxdWVzdC5zZXRIVFRQQm9keShpblJlcXVlc3QuaHR0cEJv
ZHkoKSk7CiAgICAgd29ya2luZ1Jlc291cmNlUmVxdWVzdC5zZXRIVFRQQ29udGVudFR5cGUoY29u
dGVudFR5cGUpOwogICAgIGFkZEV4dHJhRmllbGRzVG9SZXF1ZXN0KHdvcmtpbmdSZXNvdXJjZVJl
cXVlc3QsIGxvYWRUeXBlLCB0cnVlKTsKIApAQCAtMzI5OSw3ICszMjk4LDcgQEAgdm9pZCBGcmFt
ZUxvYWRlcjo6bG9hZERpZmZlcmVudERvY3VtZW50SXRlbShIaXN0b3J5SXRlbSYgaXRlbSwgRnJh
bWVMb2FkVHlwZSBsb2EKICAgICAgICAgZm9ybURhdGEtPmdlbmVyYXRlRmlsZXMobV9mcmFtZS5k
b2N1bWVudCgpKTsKIAogICAgICAgICByZXF1ZXN0LnNldEhUVFBNZXRob2QoIlBPU1QiKTsKLSAg
ICAgICAgcmVxdWVzdC5zZXRIVFRQQm9keShmb3JtRGF0YSk7CisgICAgICAgIHJlcXVlc3Quc2V0
SFRUUEJvZHkoV1RGTW92ZShmb3JtRGF0YSkpOwogICAgICAgICByZXF1ZXN0LnNldEhUVFBDb250
ZW50VHlwZShpdGVtLmZvcm1Db250ZW50VHlwZSgpKTsKICAgICAgICAgUmVmUHRyPFNlY3VyaXR5
T3JpZ2luPiBzZWN1cml0eU9yaWdpbiA9IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tU3RyaW5n
KGl0ZW0ucmVmZXJyZXIoKSk7CiAgICAgICAgIGFkZEhUVFBPcmlnaW5JZk5lZWRlZChyZXF1ZXN0
LCBzZWN1cml0eU9yaWdpbi0+dG9TdHJpbmcoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvUGluZ0xvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUGluZ0xvYWRl
ci5jcHAKaW5kZXggYzgwYjJlNDA1NWUwZWYxZDIyNGQ3OWQ0NzJlMWIzYmUzNTBmOGRhOS4uN2Y4
ZGQ0ZTRiZGM3MWJkOTE2MDU3YTc3M2VlMzJmMmQzNjAzNjhhZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL1BpbmdMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9QaW5nTG9hZGVyLmNwcApAQCAtMTIzLDcgKzEyMyw3IEBAIHZvaWQgUGluZ0xvYWRlcjo6c2Vu
ZFBpbmcoRnJhbWUmIGZyYW1lLCBjb25zdCBVUkwmIHBpbmdVUkwsIGNvbnN0IFVSTCYgZGVzdGlu
YXRpCiAgICAgc3RhcnRQaW5nTG9hZChmcmFtZSwgcmVxdWVzdCk7CiB9CiAKLXZvaWQgUGluZ0xv
YWRlcjo6c2VuZFZpb2xhdGlvblJlcG9ydChGcmFtZSYgZnJhbWUsIGNvbnN0IFVSTCYgcmVwb3J0
VVJMLCBQYXNzUmVmUHRyPEZvcm1EYXRhPiByZXBvcnQpCit2b2lkIFBpbmdMb2FkZXI6OnNlbmRW
aW9sYXRpb25SZXBvcnQoRnJhbWUmIGZyYW1lLCBjb25zdCBVUkwmIHJlcG9ydFVSTCwgUmVmUHRy
PEZvcm1EYXRhPiYmIHJlcG9ydCkKIHsKICAgICBSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdChyZXBv
cnRVUkwpOwogCkBAIC0xMzQsNyArMTM0LDcgQEAgdm9pZCBQaW5nTG9hZGVyOjpzZW5kVmlvbGF0
aW9uUmVwb3J0KEZyYW1lJiBmcmFtZSwgY29uc3QgVVJMJiByZXBvcnRVUkwsIFBhc3NSZWYKIAog
ICAgIHJlcXVlc3Quc2V0SFRUUE1ldGhvZCgiUE9TVCIpOwogICAgIHJlcXVlc3Quc2V0SFRUUENv
bnRlbnRUeXBlKCJhcHBsaWNhdGlvbi9qc29uIik7Ci0gICAgcmVxdWVzdC5zZXRIVFRQQm9keShy
ZXBvcnQpOworICAgIHJlcXVlc3Quc2V0SFRUUEJvZHkoV1RGTW92ZShyZXBvcnQpKTsKIAogICAg
IGJvb2wgcmVtb3ZlQ29va2llcyA9IHRydWU7CiAgICAgaWYgKERvY3VtZW50KiBkb2N1bWVudCA9
IGZyYW1lLmRvY3VtZW50KCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Q
aW5nTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUGluZ0xvYWRlci5oCmluZGV4IDA0
NWRlMTIxZWMyZDczY2MwMzUwZjRhOTBlZGI3ZGRlZWVkNGRkZjguLjU5ZTFjZjdmMmZjZjY5YzU3
ZjM5MWRkNmNkYTA5ZDYyMDgwY2U3ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9QaW5nTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1BpbmdMb2FkZXIuaApA
QCAtMzIsNyArMzIsNyBAQAogI2lmbmRlZiBQaW5nTG9hZGVyX2gKICNkZWZpbmUgUGluZ0xvYWRl
cl9oCiAKLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIu
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC00NSw3ICs0NSw3IEBAIGNsYXNzIFBpbmdM
b2FkZXIgewogcHVibGljOgogICAgIHN0YXRpYyB2b2lkIGxvYWRJbWFnZShGcmFtZSYsIGNvbnN0
IFVSTCYpOwogICAgIHN0YXRpYyB2b2lkIHNlbmRQaW5nKEZyYW1lJiwgY29uc3QgVVJMJiBwaW5n
VVJMLCBjb25zdCBVUkwmIGRlc3RpbmF0aW9uVVJMKTsKLSAgICBzdGF0aWMgdm9pZCBzZW5kVmlv
bGF0aW9uUmVwb3J0KEZyYW1lJiwgY29uc3QgVVJMJiByZXBvcnRVUkwsIFBhc3NSZWZQdHI8Rm9y
bURhdGE+IHJlcG9ydCk7CisgICAgc3RhdGljIHZvaWQgc2VuZFZpb2xhdGlvblJlcG9ydChGcmFt
ZSYsIGNvbnN0IFVSTCYgcmVwb3J0VVJMLCBSZWZQdHI8Rm9ybURhdGE+JiYgcmVwb3J0KTsKIAog
cHJpdmF0ZToKICAgICBzdGF0aWMgdm9pZCBzdGFydFBpbmdMb2FkKEZyYW1lJiwgUmVzb3VyY2VS
ZXF1ZXN0Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRlbnRTZWN1cml0
eVBvbGljeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRlbnRTZWN1cml0eVBvbGljeS5j
cHAKaW5kZXggMDU5YmI0YWQzZGI2ZDI5MjQ2ZmU5YjExZGFhOGIwMDZhNDU2MzFkMy4uYjNjNjFi
Zjg2N2YyZjkyMDU5NGU3NGRhZTAwNzNkNjhiYzRkNWQ0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9Db250ZW50U2VjdXJpdHlQb2xpY3kuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvQ29udGVudFNlY3VyaXR5UG9saWN5LmNwcApAQCAtMTY3Miw3ICsxNjcyLDcgQEAgdm9p
ZCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OnJlcG9ydFZpb2xhdGlvbihjb25zdCBTdHJpbmcmIGRp
cmVjdGl2ZVRleHQsIGNvbnN0IFMKICAgICBSZWZQdHI8Rm9ybURhdGE+IHJlcG9ydCA9IEZvcm1E
YXRhOjpjcmVhdGUocmVwb3J0T2JqZWN0LT50b0pTT05TdHJpbmcoKS51dGY4KCkpOwogCiAgICAg
Zm9yIChjb25zdCBhdXRvJiB1cmwgOiByZXBvcnRVUklzKQotICAgICAgICBQaW5nTG9hZGVyOjpz
ZW5kVmlvbGF0aW9uUmVwb3J0KCpmcmFtZSwgdXJsLCByZXBvcnQpOworICAgICAgICBQaW5nTG9h
ZGVyOjpzZW5kVmlvbGF0aW9uUmVwb3J0KCpmcmFtZSwgdXJsLCByZXBvcnQuY29weVJlZigpKTsK
IH0KIAogdm9pZCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OnJlcG9ydFVuc3VwcG9ydGVkRGlyZWN0
aXZlKGNvbnN0IFN0cmluZyYgbmFtZSkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9Gb3JtRGF0YS5jcHAKaW5kZXggZjdlMTJjMjExZjAwODYwNGI5ODliMzU4YTc1NTZk
MDJjNjQ1NGI2Zi4uODAzMzVkODI0YmY2ZmNlYmVmMjE2ODJiYTYwNDMyN2Q0ODkwZWE3ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHAKQEAgLTcwLDU0
ICs3MCw1NCBAQCBGb3JtRGF0YTo6fkZvcm1EYXRhKCkKICAgICByZW1vdmVHZW5lcmF0ZWRGaWxl
c0lmTmVlZGVkKCk7CiB9CiAKLVBhc3NSZWZQdHI8Rm9ybURhdGE+IEZvcm1EYXRhOjpjcmVhdGUo
KQorUmVmPEZvcm1EYXRhPiBGb3JtRGF0YTo6Y3JlYXRlKCkKIHsKLSAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IEZvcm1EYXRhKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBGb3JtRGF0YSk7CiB9
CiAKLVBhc3NSZWZQdHI8Rm9ybURhdGE+IEZvcm1EYXRhOjpjcmVhdGUoY29uc3Qgdm9pZCogZGF0
YSwgc2l6ZV90IHNpemUpCitSZWY8Rm9ybURhdGE+IEZvcm1EYXRhOjpjcmVhdGUoY29uc3Qgdm9p
ZCogZGF0YSwgc2l6ZV90IHNpemUpCiB7Ci0gICAgUmVmUHRyPEZvcm1EYXRhPiByZXN1bHQgPSBj
cmVhdGUoKTsKKyAgICBSZWY8Rm9ybURhdGE+IHJlc3VsdCA9IGNyZWF0ZSgpOwogICAgIHJlc3Vs
dC0+YXBwZW5kRGF0YShkYXRhLCBzaXplKTsKLSAgICByZXR1cm4gcmVzdWx0LnJlbGVhc2UoKTsK
KyAgICByZXR1cm4gcmVzdWx0OwogfQogCi1QYXNzUmVmUHRyPEZvcm1EYXRhPiBGb3JtRGF0YTo6
Y3JlYXRlKGNvbnN0IENTdHJpbmcmIHN0cmluZykKK1JlZjxGb3JtRGF0YT4gRm9ybURhdGE6OmNy
ZWF0ZShjb25zdCBDU3RyaW5nJiBzdHJpbmcpCiB7Ci0gICAgUmVmUHRyPEZvcm1EYXRhPiByZXN1
bHQgPSBjcmVhdGUoKTsKKyAgICBSZWY8Rm9ybURhdGE+IHJlc3VsdCA9IGNyZWF0ZSgpOwogICAg
IHJlc3VsdC0+YXBwZW5kRGF0YShzdHJpbmcuZGF0YSgpLCBzdHJpbmcubGVuZ3RoKCkpOwotICAg
IHJldHVybiByZXN1bHQucmVsZWFzZSgpOworICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLVBhc3NS
ZWZQdHI8Rm9ybURhdGE+IEZvcm1EYXRhOjpjcmVhdGUoY29uc3QgVmVjdG9yPGNoYXI+JiB2ZWN0
b3IpCitSZWY8Rm9ybURhdGE+IEZvcm1EYXRhOjpjcmVhdGUoY29uc3QgVmVjdG9yPGNoYXI+JiB2
ZWN0b3IpCiB7Ci0gICAgUmVmUHRyPEZvcm1EYXRhPiByZXN1bHQgPSBjcmVhdGUoKTsKKyAgICBS
ZWY8Rm9ybURhdGE+IHJlc3VsdCA9IGNyZWF0ZSgpOwogICAgIHJlc3VsdC0+YXBwZW5kRGF0YSh2
ZWN0b3IuZGF0YSgpLCB2ZWN0b3Iuc2l6ZSgpKTsKLSAgICByZXR1cm4gcmVzdWx0LnJlbGVhc2Uo
KTsKKyAgICByZXR1cm4gcmVzdWx0OwogfQogCi1QYXNzUmVmUHRyPEZvcm1EYXRhPiBGb3JtRGF0
YTo6Y3JlYXRlKGNvbnN0IEZvcm1EYXRhTGlzdCYgbGlzdCwgY29uc3QgVGV4dEVuY29kaW5nJiBl
bmNvZGluZywgRW5jb2RpbmdUeXBlIGVuY29kaW5nVHlwZSkKK1JlZjxGb3JtRGF0YT4gRm9ybURh
dGE6OmNyZWF0ZShjb25zdCBGb3JtRGF0YUxpc3QmIGxpc3QsIGNvbnN0IFRleHRFbmNvZGluZyYg
ZW5jb2RpbmcsIEVuY29kaW5nVHlwZSBlbmNvZGluZ1R5cGUpCiB7Ci0gICAgUmVmUHRyPEZvcm1E
YXRhPiByZXN1bHQgPSBjcmVhdGUoKTsKKyAgICBSZWY8Rm9ybURhdGE+IHJlc3VsdCA9IGNyZWF0
ZSgpOwogICAgIHJlc3VsdC0+YXBwZW5kS2V5VmFsdWVQYWlySXRlbXMobGlzdCwgZW5jb2Rpbmcs
IGZhbHNlLCAwLCBlbmNvZGluZ1R5cGUpOwotICAgIHJldHVybiByZXN1bHQucmVsZWFzZSgpOwor
ICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLVBhc3NSZWZQdHI8Rm9ybURhdGE+IEZvcm1EYXRhOjpj
cmVhdGVNdWx0aVBhcnQoY29uc3QgRm9ybURhdGFMaXN0JiBsaXN0LCBjb25zdCBUZXh0RW5jb2Rp
bmcmIGVuY29kaW5nLCBEb2N1bWVudCogZG9jdW1lbnQpCitSZWY8Rm9ybURhdGE+IEZvcm1EYXRh
OjpjcmVhdGVNdWx0aVBhcnQoY29uc3QgRm9ybURhdGFMaXN0JiBsaXN0LCBjb25zdCBUZXh0RW5j
b2RpbmcmIGVuY29kaW5nLCBEb2N1bWVudCogZG9jdW1lbnQpCiB7Ci0gICAgUmVmUHRyPEZvcm1E
YXRhPiByZXN1bHQgPSBjcmVhdGUoKTsKKyAgICBSZWY8Rm9ybURhdGE+IHJlc3VsdCA9IGNyZWF0
ZSgpOwogICAgIHJlc3VsdC0+YXBwZW5kS2V5VmFsdWVQYWlySXRlbXMobGlzdCwgZW5jb2Rpbmcs
IHRydWUsIGRvY3VtZW50KTsKLSAgICByZXR1cm4gcmVzdWx0LnJlbGVhc2UoKTsKKyAgICByZXR1
cm4gcmVzdWx0OwogfQogCi1QYXNzUmVmUHRyPEZvcm1EYXRhPiBGb3JtRGF0YTo6Y29weSgpIGNv
bnN0CitSZWY8Rm9ybURhdGE+IEZvcm1EYXRhOjpjb3B5KCkgY29uc3QKIHsKLSAgICByZXR1cm4g
YWRvcHRSZWYobmV3IEZvcm1EYXRhKCp0aGlzKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
Rm9ybURhdGEoKnRoaXMpKTsKIH0KIAotUGFzc1JlZlB0cjxGb3JtRGF0YT4gRm9ybURhdGE6OmRl
ZXBDb3B5KCkgY29uc3QKK1JlZjxGb3JtRGF0YT4gRm9ybURhdGE6OmRlZXBDb3B5KCkgY29uc3QK
IHsKLSAgICBSZWZQdHI8Rm9ybURhdGE+IGZvcm1EYXRhKGNyZWF0ZSgpKTsKKyAgICBSZWY8Rm9y
bURhdGE+IGZvcm1EYXRhKGNyZWF0ZSgpKTsKIAogICAgIGZvcm1EYXRhLT5tX2Fsd2F5c1N0cmVh
bSA9IG1fYWx3YXlzU3RyZWFtOwogCkBAIC0xMzUsNyArMTM1LDcgQEAgUGFzc1JlZlB0cjxGb3Jt
RGF0YT4gRm9ybURhdGE6OmRlZXBDb3B5KCkgY29uc3QKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICB9CiAgICAgfQotICAgIHJldHVybiBmb3JtRGF0YS5yZWxlYXNlKCk7CisgICAgcmV0dXJu
IGZvcm1EYXRhOwogfQogCiB2b2lkIEZvcm1EYXRhOjphcHBlbmREYXRhKGNvbnN0IHZvaWQqIGRh
dGEsIHNpemVfdCBzaXplKQpAQCAtMzAyLDcgKzMwMiw3IEBAIHN0YXRpYyB2b2lkIGFwcGVuZEJs
b2JSZXNvbHZlZChGb3JtRGF0YSogZm9ybURhdGEsIGNvbnN0IFVSTCYgdXJsKQogICAgIH0KIH0K
IAotUGFzc1JlZlB0cjxGb3JtRGF0YT4gRm9ybURhdGE6OnJlc29sdmVCbG9iUmVmZXJlbmNlcygp
CitSZWY8Rm9ybURhdGE+IEZvcm1EYXRhOjpyZXNvbHZlQmxvYlJlZmVyZW5jZXMoKQogewogICAg
IC8vIEZpcnN0IGNoZWNrIGlmIGFueSBibG9icyBuZWVkcyB0byBiZSByZXNvbHZlZCwgb3Igd2Ug
Y2FuIHRha2UgdGhlIGZhc3QgcGF0aC4KICAgICBib29sIGhhc0Jsb2IgPSBmYWxzZTsKQEAgLTMx
NiwxMCArMzE2LDEwIEBAIFBhc3NSZWZQdHI8Rm9ybURhdGE+IEZvcm1EYXRhOjpyZXNvbHZlQmxv
YlJlZmVyZW5jZXMoKQogICAgIH0KIAogICAgIGlmICghaGFzQmxvYikKLSAgICAgICAgcmV0dXJu
IHRoaXM7CisgICAgICAgIHJldHVybiAqdGhpczsKIAogICAgIC8vIENyZWF0ZSBhIGNvcHkgdG8g
YXBwZW5kIHRoZSByZXN1bHQgaW50by4KLSAgICBSZWZQdHI8Rm9ybURhdGE+IG5ld0Zvcm1EYXRh
ID0gRm9ybURhdGE6OmNyZWF0ZSgpOworICAgIFJlZjxGb3JtRGF0YT4gbmV3Rm9ybURhdGEgPSBG
b3JtRGF0YTo6Y3JlYXRlKCk7CiAgICAgbmV3Rm9ybURhdGEtPnNldEFsd2F5c1N0cmVhbShhbHdh
eXNTdHJlYW0oKSk7CiAgICAgbmV3Rm9ybURhdGEtPnNldElkZW50aWZpZXIoaWRlbnRpZmllcigp
KTsKICAgICBpdCA9IGVsZW1lbnRzKCkuYmVnaW4oKTsKQEAgLTMzMCwxMSArMzMwLDExIEBAIFBh
c3NSZWZQdHI8Rm9ybURhdGE+IEZvcm1EYXRhOjpyZXNvbHZlQmxvYlJlZmVyZW5jZXMoKQogICAg
ICAgICBlbHNlIGlmIChlbGVtZW50Lm1fdHlwZSA9PSBGb3JtRGF0YUVsZW1lbnQ6OlR5cGU6OkVu
Y29kZWRGaWxlKQogICAgICAgICAgICAgbmV3Rm9ybURhdGEtPmFwcGVuZEZpbGVSYW5nZShlbGVt
ZW50Lm1fZmlsZW5hbWUsIGVsZW1lbnQubV9maWxlU3RhcnQsIGVsZW1lbnQubV9maWxlTGVuZ3Ro
LCBlbGVtZW50Lm1fZXhwZWN0ZWRGaWxlTW9kaWZpY2F0aW9uVGltZSwgZWxlbWVudC5tX3Nob3Vs
ZEdlbmVyYXRlRmlsZSk7CiAgICAgICAgIGVsc2UgaWYgKGVsZW1lbnQubV90eXBlID09IEZvcm1E
YXRhRWxlbWVudDo6VHlwZTo6RW5jb2RlZEJsb2IpCi0gICAgICAgICAgICBhcHBlbmRCbG9iUmVz
b2x2ZWQobmV3Rm9ybURhdGEuZ2V0KCksIGVsZW1lbnQubV91cmwpOworICAgICAgICAgICAgYXBw
ZW5kQmxvYlJlc29sdmVkKG5ld0Zvcm1EYXRhLnB0cigpLCBlbGVtZW50Lm1fdXJsKTsKICAgICAg
ICAgZWxzZQogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQotICAgIHJl
dHVybiBuZXdGb3JtRGF0YS5yZWxlYXNlKCk7CisgICAgcmV0dXJuIG5ld0Zvcm1EYXRhOwogfQog
CiB2b2lkIEZvcm1EYXRhOjpnZW5lcmF0ZUZpbGVzKERvY3VtZW50KiBkb2N1bWVudCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuaAppbmRleCAyZGQwN2IxZjdlYjI4
YTBlNDU0Mzg3MTI1MjVlOTUyMTJhYzEyOWFjLi40N2Y4ODc4MWQ0NjJjNjgwY2RmNjk0MTlkMzk5
YWU1NjZlYjAyNWEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L0Zvcm1EYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0
YS5oCkBAIC0xOTQsMjMgKzE5NCwyMyBAQCBwdWJsaWM6CiAgICAgICAgIE11bHRpcGFydEZvcm1E
YXRhIC8vIGZvciBtdWx0aXBhcnQvZm9ybS1kYXRhCiAgICAgfTsKIAotICAgIFdFQkNPUkVfRVhQ
T1JUIHN0YXRpYyBQYXNzUmVmUHRyPEZvcm1EYXRhPiBjcmVhdGUoKTsKLSAgICBXRUJDT1JFX0VY
UE9SVCBzdGF0aWMgUGFzc1JlZlB0cjxGb3JtRGF0YT4gY3JlYXRlKGNvbnN0IHZvaWQqLCBzaXpl
X3QpOwotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEZvcm1EYXRhPiBjcmVhdGUoY29uc3QgQ1N0cmlu
ZyYpOwotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEZvcm1EYXRhPiBjcmVhdGUoY29uc3QgVmVjdG9y
PGNoYXI+Jik7Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8Rm9ybURhdGE+IGNyZWF0ZShjb25zdCBG
b3JtRGF0YUxpc3QmLCBjb25zdCBUZXh0RW5jb2RpbmcmLCBFbmNvZGluZ1R5cGUgPSBGb3JtVVJM
RW5jb2RlZCk7Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8Rm9ybURhdGE+IGNyZWF0ZU11bHRpUGFy
dChjb25zdCBGb3JtRGF0YUxpc3QmLCBjb25zdCBUZXh0RW5jb2RpbmcmLCBEb2N1bWVudCopOwor
ICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8Rm9ybURhdGE+IGNyZWF0ZSgpOworICAgIFdF
QkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8Rm9ybURhdGE+IGNyZWF0ZShjb25zdCB2b2lkKiwgc2l6
ZV90KTsKKyAgICBzdGF0aWMgUmVmPEZvcm1EYXRhPiBjcmVhdGUoY29uc3QgQ1N0cmluZyYpOwor
ICAgIHN0YXRpYyBSZWY8Rm9ybURhdGE+IGNyZWF0ZShjb25zdCBWZWN0b3I8Y2hhcj4mKTsKKyAg
ICBzdGF0aWMgUmVmPEZvcm1EYXRhPiBjcmVhdGUoY29uc3QgRm9ybURhdGFMaXN0JiwgY29uc3Qg
VGV4dEVuY29kaW5nJiwgRW5jb2RpbmdUeXBlID0gRm9ybVVSTEVuY29kZWQpOworICAgIHN0YXRp
YyBSZWY8Rm9ybURhdGE+IGNyZWF0ZU11bHRpUGFydChjb25zdCBGb3JtRGF0YUxpc3QmLCBjb25z
dCBUZXh0RW5jb2RpbmcmLCBEb2N1bWVudCopOwogICAgIFdFQkNPUkVfRVhQT1JUIH5Gb3JtRGF0
YSgpOwogCiAgICAgLy8gRklYTUU6IEJvdGggdGhlc2UgZnVuY3Rpb25zIHBlcmZvcm0gYSBkZWVw
IGNvcHkgb2YgbV9lbGVtZW50cywgYnV0IGRpZmZlciBpbiBoYW5kbGluZyBvZiBvdGhlciBkYXRh
IG1lbWJlcnMuCiAgICAgLy8gSG93IG11Y2ggb2YgdGhhdCBpcyBpbnRlbnRpb25hbD8gV2UgbmVl
ZCBiZXR0ZXIgbmFtZXMgdGhhdCBleHBsYWluIHRoZSBkaWZmZXJlbmNlLgotICAgIFBhc3NSZWZQ
dHI8Rm9ybURhdGE+IGNvcHkoKSBjb25zdDsKLSAgICBQYXNzUmVmUHRyPEZvcm1EYXRhPiBkZWVw
Q29weSgpIGNvbnN0OworICAgIFJlZjxGb3JtRGF0YT4gY29weSgpIGNvbnN0OworICAgIFJlZjxG
b3JtRGF0YT4gZGVlcENvcHkoKSBjb25zdDsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEVuY29k
ZXI+CiAgICAgdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwogICAgIHRlbXBsYXRlPHR5cGVu
YW1lIERlY29kZXI+Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8Rm9ybURhdGE+IGRlY29kZShEZWNv
ZGVyJik7CisgICAgc3RhdGljIFJlZlB0cjxGb3JtRGF0YT4gZGVjb2RlKERlY29kZXImKTsKIAog
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwZW5kRGF0YShjb25zdCB2b2lkKiBkYXRhLCBzaXpl
X3QpOwogICAgIHZvaWQgYXBwZW5kRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoLCBib29sIHNo
b3VsZEdlbmVyYXRlRmlsZSA9IGZhbHNlKTsKQEAgLTIyMyw3ICsyMjMsNyBAQCBwdWJsaWM6CiAK
ICAgICAvLyBSZXNvbHZlIGFsbCBibG9iIHJlZmVyZW5jZXMgc28gd2Ugb25seSBoYXZlIGZpbGUg
YW5kIGRhdGEuCiAgICAgLy8gSWYgdGhlIEZvcm1EYXRhIGhhcyBubyBibG9iIHJlZmVyZW5jZXMg
dG8gcmVzb2x2ZSwgdGhpcyBpcyByZXR1cm5lZC4KLSAgICBQYXNzUmVmUHRyPEZvcm1EYXRhPiBy
ZXNvbHZlQmxvYlJlZmVyZW5jZXMoKTsKKyAgICBSZWY8Rm9ybURhdGE+IHJlc29sdmVCbG9iUmVm
ZXJlbmNlcygpOwogCiAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gbV9lbGVtZW50
cy5pc0VtcHR5KCk7IH0KICAgICBjb25zdCBWZWN0b3I8Rm9ybURhdGFFbGVtZW50PiYgZWxlbWVu
dHMoKSBjb25zdCB7IHJldHVybiBtX2VsZW1lbnRzOyB9CkBAIC0yODksOSArMjg5LDkgQEAgdm9p
ZCBGb3JtRGF0YTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB9CiAKIHRlbXBsYXRl
PHR5cGVuYW1lIERlY29kZXI+Ci1QYXNzUmVmUHRyPEZvcm1EYXRhPiBGb3JtRGF0YTo6ZGVjb2Rl
KERlY29kZXImIGRlY29kZXIpCitSZWZQdHI8Rm9ybURhdGE+IEZvcm1EYXRhOjpkZWNvZGUoRGVj
b2RlciYgZGVjb2RlcikKIHsKLSAgICBSZWZQdHI8Rm9ybURhdGE+IGRhdGEgPSBGb3JtRGF0YTo6
Y3JlYXRlKCk7CisgICAgUmVmPEZvcm1EYXRhPiBkYXRhID0gRm9ybURhdGE6OmNyZWF0ZSgpOwog
CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShkYXRhLT5tX2Fsd2F5c1N0cmVhbSkpCiAgICAgICAg
IHJldHVybiBudWxscHRyOwpAQCAtMzA1LDcgKzMwNSw3IEBAIFBhc3NSZWZQdHI8Rm9ybURhdGE+
IEZvcm1EYXRhOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKGRhdGEtPm1faWRlbnRpZmllcikpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAg
cmV0dXJuIGRhdGEucmVsZWFzZSgpOworICAgIHJldHVybiBXVEZNb3ZlKGRhdGEpOwogfQogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmNwcAppbmRleCBhMTAzMzhhNjI1MTMxMDNi
NDViODc4NzU5OTBhMzkyYzdhODIxODgxLi45ZDdmZjAwOWI0OTA4NmMyODY2MWU3OTI5ZDI0ZGE1
MTdhYWMyNTlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jl
c291cmNlUmVxdWVzdEJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5jcHAKQEAgLTc2LDcgKzc2LDcgQEAgc3RkOjp1bmlxdWVf
cHRyPFJlc291cmNlUmVxdWVzdD4gUmVzb3VyY2VSZXF1ZXN0QmFzZTo6YWRvcHQoc3RkOjp1bmlx
dWVfcHRyPENyb3MKICAgICAgICAgQVNTRVJUKGVuY29kaW5nQ291bnQgPD0gMyk7CiAgICAgICAg
IHJlcXVlc3QtPnNldFJlc3BvbnNlQ29udGVudERpc3Bvc2l0aW9uRW5jb2RpbmdGYWxsYmFja0Fy
cmF5KGVuY29kaW5nMSwgZW5jb2RpbmcyLCBlbmNvZGluZzMpOwogICAgIH0KLSAgICByZXF1ZXN0
LT5zZXRIVFRQQm9keShkYXRhLT5odHRwQm9keSk7CisgICAgcmVxdWVzdC0+c2V0SFRUUEJvZHko
V1RGTW92ZShkYXRhLT5odHRwQm9keSkpOwogICAgIHJlcXVlc3QtPnNldEFsbG93Q29va2llcyhk
YXRhLT5hbGxvd0Nvb2tpZXMpOwogICAgIHJlcXVlc3QtPmRvUGxhdGZvcm1BZG9wdChXVEZNb3Zl
KGRhdGEpKTsKICAgICByZXR1cm4gcmVxdWVzdDsKQEAgLTQxMywxMSArNDEzLDExIEBAIEZvcm1E
YXRhKiBSZXNvdXJjZVJlcXVlc3RCYXNlOjpodHRwQm9keSgpIGNvbnN0CiAgICAgcmV0dXJuIG1f
aHR0cEJvZHkuZ2V0KCk7CiB9CiAKLXZvaWQgUmVzb3VyY2VSZXF1ZXN0QmFzZTo6c2V0SFRUUEJv
ZHkoUGFzc1JlZlB0cjxGb3JtRGF0YT4gaHR0cEJvZHkpCit2b2lkIFJlc291cmNlUmVxdWVzdEJh
c2U6OnNldEhUVFBCb2R5KFJlZlB0cjxGb3JtRGF0YT4mJiBodHRwQm9keSkKIHsKICAgICB1cGRh
dGVSZXNvdXJjZVJlcXVlc3QoKTsKIAotICAgIG1faHR0cEJvZHkgPSBodHRwQm9keTsKKyAgICBt
X2h0dHBCb2R5ID0gV1RGTW92ZShodHRwQm9keSk7CiAKICAgICBtX3Jlc291cmNlUmVxdWVzdEJv
ZHlVcGRhdGVkID0gdHJ1ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuaAppbmRleCBlMmFjZTZlODdhOWRmNDFhZmY1MmQw
YzJjYmQxOWI3YWJmYmZjNmJiLi4yNTY1YzQ2NjhhMWFmMTI5NWU0ZGEwM2JmNjJmM2YyMzZkMjY2
ZTAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNl
UmVxdWVzdEJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291
cmNlUmVxdWVzdEJhc2UuaApAQCAtMTIxLDggKzEyMSw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRSZXNwb25zZUNvbnRlbnREaXNwb3NpdGlv
bkVuY29kaW5nRmFsbGJhY2tBcnJheShjb25zdCBTdHJpbmcmIGVuY29kaW5nMSwgY29uc3QgU3Ry
aW5nJiBlbmNvZGluZzIgPSBTdHJpbmcoKSwgY29uc3QgU3RyaW5nJiBlbmNvZGluZzMgPSBTdHJp
bmcoKSk7CiAKICAgICAgICAgV0VCQ09SRV9FWFBPUlQgRm9ybURhdGEqIGh0dHBCb2R5KCkgY29u
c3Q7Ci0gICAgICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0SFRUUEJvZHkoUGFzc1JlZlB0cjxG
b3JtRGF0YT4gaHR0cEJvZHkpOwotICAgICAgICAKKyAgICAgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBzZXRIVFRQQm9keShSZWZQdHI8Rm9ybURhdGE+JiYpOworCiAgICAgICAgIGJvb2wgYWxsb3dD
b29raWVzKCkgY29uc3Q7CiAgICAgICAgIHZvaWQgc2V0QWxsb3dDb29raWVzKGJvb2wgYWxsb3dD
b29raWVzKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
Zi9Gb3JtRGF0YVN0cmVhbUNGTmV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY2YvRm9ybURhdGFTdHJlYW1DRk5ldC5jcHAKaW5kZXggZjM5ODUxMzlhNDAxYmU2M2EwODZi
MjZjZjFkZjFlY2VmZWY2MDI2ZS4uZDE4MzFjY2VhZjk4ZmUwNjNhNDEwZmZmOGQ3ZWNjYjhlYzU3
MjU1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Gb3Jt
RGF0YVN0cmVhbUNGTmV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2NmL0Zvcm1EYXRhU3RyZWFtQ0ZOZXQuY3BwCkBAIC0zNDgsMTAgKzM0OCw4IEBAIHN0YXRpYyB2
b2lkIGZvcm1FdmVudENhbGxiYWNrKENGUmVhZFN0cmVhbVJlZiBzdHJlYW0sIENGU3RyZWFtRXZl
bnRUeXBlIHR5cGUsIHZvCiAgICAgfQogfQogCi12b2lkIHNldEhUVFBCb2R5KENGTXV0YWJsZVVS
TFJlcXVlc3RSZWYgcmVxdWVzdCwgUGFzc1JlZlB0cjxGb3JtRGF0YT4gcHJwRm9ybURhdGEpCit2
b2lkIHNldEhUVFBCb2R5KENGTXV0YWJsZVVSTFJlcXVlc3RSZWYgcmVxdWVzdCwgRm9ybURhdGEq
IGZvcm1EYXRhKQogewotICAgIFJlZlB0cjxGb3JtRGF0YT4gZm9ybURhdGEgPSBwcnBGb3JtRGF0
YTsKLQogICAgIGlmICghZm9ybURhdGEpCiAgICAgICAgIHJldHVybjsKICAgICAgICAgCkBAIC0z
NjcsMTMgKzM2NSwxNCBAQCB2b2lkIHNldEhUVFBCb2R5KENGTXV0YWJsZVVSTFJlcXVlc3RSZWYg
cmVxdWVzdCwgUGFzc1JlZlB0cjxGb3JtRGF0YT4gcHJwRm9ybURhdAogICAgICAgICB9CiAgICAg
fQogCi0gICAgZm9ybURhdGEgPSBmb3JtRGF0YS0+cmVzb2x2ZUJsb2JSZWZlcmVuY2VzKCk7Ci0g
ICAgY291bnQgPSBmb3JtRGF0YS0+ZWxlbWVudHMoKS5zaXplKCk7CisKKyAgICBSZWY8Rm9ybURh
dGE+IG5ld0Zvcm1EYXRhID0gZm9ybURhdGEtPnJlc29sdmVCbG9iUmVmZXJlbmNlcygpOworICAg
IGNvdW50ID0gbmV3Rm9ybURhdGEtPmVsZW1lbnRzKCkuc2l6ZSgpOwogCiAgICAgLy8gUHJlY29t
cHV0ZSB0aGUgY29udGVudCBsZW5ndGggc28gTlNVUkxDb25uZWN0aW9uIGRvZXNuJ3QgdXNlIGNo
dW5rZWQgbW9kZS4KICAgICB1bnNpZ25lZCBsb25nIGxvbmcgbGVuZ3RoID0gMDsKICAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IGNvdW50OyArK2kpIHsKLSAgICAgICAgY29uc3QgRm9ybURhdGFF
bGVtZW50JiBlbGVtZW50ID0gZm9ybURhdGEtPmVsZW1lbnRzKClbaV07CisgICAgICAgIGNvbnN0
IEZvcm1EYXRhRWxlbWVudCYgZWxlbWVudCA9IG5ld0Zvcm1EYXRhLT5lbGVtZW50cygpW2ldOwog
ICAgICAgICBpZiAoZWxlbWVudC5tX3R5cGUgPT0gRm9ybURhdGFFbGVtZW50OjpUeXBlOjpEYXRh
KQogICAgICAgICAgICAgbGVuZ3RoICs9IGVsZW1lbnQubV9kYXRhLnNpemUoKTsKICAgICAgICAg
ZWxzZSB7CkBAIC0zOTEsNyArMzkwLDkgQEAgdm9pZCBzZXRIVFRQQm9keShDRk11dGFibGVVUkxS
ZXF1ZXN0UmVmIHJlcXVlc3QsIFBhc3NSZWZQdHI8Rm9ybURhdGE+IHBycEZvcm1EYXQKICAgICAv
LyBDcmVhdGUgYW5kIHNldCB0aGUgc3RyZWFtLgogCiAgICAgLy8gUGFzcyB0aGUgbGVuZ3RoIGFs
b25nIHdpdGggdGhlIGZvcm1EYXRhIHNvIGl0IGRvZXMgbm90IGhhdmUgdG8gYmUgcmVjb21wdXRl
ZC4KLSAgICBGb3JtQ3JlYXRpb25Db250ZXh0IGZvcm1Db250ZXh0ID0geyBmb3JtRGF0YS5yZWxl
YXNlKCksIGxlbmd0aCB9OworICAgIEZvcm1DcmVhdGlvbkNvbnRleHQgZm9ybUNvbnRleHQ7Cisg
ICAgZm9ybUNvbnRleHQuZm9ybURhdGEgPSBXVEZNb3ZlKG5ld0Zvcm1EYXRhKTsKKyAgICBmb3Jt
Q29udGV4dC5zdHJlYW1MZW5ndGggPSBsZW5ndGg7CiAKICAgICBDRlJlYWRTdHJlYW1DYWxsQmFj
a3NWMSBjYWxsQmFja3MgPSB7IDEsIGZvcm1DcmVhdGUsIGZvcm1GaW5hbGl6ZSwgMCwgZm9ybU9w
ZW4sIDAsIGZvcm1SZWFkLCAwLCBmb3JtQ2FuUmVhZCwgZm9ybUNsb3NlLCBmb3JtQ29weVByb3Bl
cnR5LCAwLCAwLCBmb3JtU2NoZWR1bGUsIGZvcm1VbnNjaGVkdWxlCiAgICAgfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvRm9ybURhdGFTdHJlYW1DRk5l
dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Gb3JtRGF0YVN0cmVhbUNG
TmV0LmgKaW5kZXggODdhODRlNTQ1ODc1MWIyMGFmYjA1YTcxY2E2OTljYTkyYTI0ODc0MS4uZjlh
NmQ4NzU4ZjM0OTJhMmMxYWZmZThkMDRkYTFiNTU4NjViMWEyNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Gb3JtRGF0YVN0cmVhbUNGTmV0LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Gb3JtRGF0YVN0cmVhbUNGTmV0LmgK
QEAgLTM5LDcgKzM5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBGb3JtRGF0YTsK
IAotdm9pZCBzZXRIVFRQQm9keShDRk11dGFibGVVUkxSZXF1ZXN0UmVmLCBQYXNzUmVmUHRyPEZv
cm1EYXRhPik7Cit2b2lkIHNldEhUVFBCb2R5KENGTXV0YWJsZVVSTFJlcXVlc3RSZWYsIEZvcm1E
YXRhKik7CiAKIEZvcm1EYXRhKiBodHRwQm9keUZyb21TdHJlYW0oQ0ZSZWFkU3RyZWFtUmVmKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJj
ZVJlcXVlc3RDRk5ldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jl
c291cmNlUmVxdWVzdENGTmV0LmNwcAppbmRleCAxOTQ1NTI1ZDhhMGMzZDVkMGZiMWFjODJmMzNk
YjMxNzNlMDIyMjcxLi5hYzg3YjJhMzg0MjcyZGQzYWU3NTgyZWMwZDhjNGQ5M2VjZDdjNWY1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVx
dWVzdENGTmV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jl
c291cmNlUmVxdWVzdENGTmV0LmNwcApAQCAtMjA0LDcgKzIwNCw3IEBAIHZvaWQgUmVzb3VyY2VS
ZXF1ZXN0Ojpkb1VwZGF0ZVBsYXRmb3JtSFRUUEJvZHkoKQogICAgIH0gZWxzZQogICAgICAgICBj
ZlJlcXVlc3QgPSBDRlVSTFJlcXVlc3RDcmVhdGVNdXRhYmxlKDAsIHVybC5nZXQoKSwgKENGVVJM
UmVxdWVzdENhY2hlUG9saWN5KWNhY2hlUG9saWN5KCksIHRpbWVvdXRJbnRlcnZhbCgpLCBmaXJz
dFBhcnR5Rm9yQ29va2llcy5nZXQoKSk7CiAKLSAgICBSZWZQdHI8Rm9ybURhdGE+IGZvcm1EYXRh
ID0gaHR0cEJvZHkoKTsKKyAgICBGb3JtRGF0YSogZm9ybURhdGEgPSBodHRwQm9keSgpOwogICAg
IGlmIChmb3JtRGF0YSAmJiAhZm9ybURhdGEtPmlzRW1wdHkoKSkKICAgICAgICAgV2ViQ29yZTo6
c2V0SFRUUEJvZHkoY2ZSZXF1ZXN0LCBmb3JtRGF0YSk7CiAKQEAgLTMzNSw3ICszMzUsNyBAQCB2
b2lkIFJlc291cmNlUmVxdWVzdDo6dXBkYXRlRnJvbURlbGVnYXRlUHJlc2VydmluZ09sZFByb3Bl
cnRpZXMoY29uc3QgUmVzb3VyY2VSZQogICAgICp0aGlzID0gZGVsZWdhdGVQcm92aWRlZFJlcXVl
c3Q7CiAKICAgICBzZXRQcmlvcml0eShvbGRQcmlvcml0eSk7Ci0gICAgc2V0SFRUUEJvZHkob2xk
SFRUUEJvZHkucmVsZWFzZSgpKTsKKyAgICBzZXRIVFRQQm9keShXVEZNb3ZlKG9sZEhUVFBCb2R5
KSk7CiAgICAgc2V0SGlkZGVuRnJvbUluc3BlY3Rvcihpc0hpZGRlbkZyb21JbnNwZWN0b3IpOwog
ICAgIHNldFJlcXVlc3RlcihvbGRSZXF1ZXN0ZXIpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SZXNvdXJjZVJlcXVlc3RDb2NvYS5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmVzb3VyY2VSZXF1ZXN0Q29jb2Eu
bW0KaW5kZXggZmNmNDkzN2MzNjBiMjJhZjhlMWJmYzlhNDUzMGJiOTFjMTcxYmI1Yy4uNjcyYjFi
OWIwNDU2NmUzYzY2OGFhMzJjMmVmYzFhMzg1NTU2YTQ2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SZXNvdXJjZVJlcXVlc3RDb2NvYS5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Jlc291cmNlUmVxdWVzdENv
Y29hLm1tCkBAIC0xOTAsNyArMTkwLDcgQEAgdm9pZCBSZXNvdXJjZVJlcXVlc3Q6OmRvVXBkYXRl
UGxhdGZvcm1IVFRQQm9keSgpCiAgICAgZWxzZQogICAgICAgICBuc1JlcXVlc3QgPSBbW05TTXV0
YWJsZVVSTFJlcXVlc3QgYWxsb2NdIGluaXRXaXRoVVJMOnVybCgpXTsKIAotICAgIFJlZlB0cjxG
b3JtRGF0YT4gZm9ybURhdGEgPSBodHRwQm9keSgpOworICAgIEZvcm1EYXRhKiBmb3JtRGF0YSA9
IGh0dHBCb2R5KCk7CiAgICAgaWYgKGZvcm1EYXRhICYmICFmb3JtRGF0YS0+aXNFbXB0eSgpKQog
ICAgICAgICBXZWJDb3JlOjpzZXRIVFRQQm9keShuc1JlcXVlc3QsIGZvcm1EYXRhKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFu
ZGxlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVz
b3VyY2VIYW5kbGVNYW5hZ2VyLmNwcAppbmRleCBjZDk3N2JiM2MwN2ZhMWE3ZTZkYThiYzU2MmFl
NTUzMzY3ZGE3NzI3Li43NzQyNmZhODg0NWI0NTEwOWNmZDViMTQ2MzI3MzRjMmZmNzg2ZjQ5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VI
YW5kbGVNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvUmVzb3VyY2VIYW5kbGVNYW5hZ2VyLmNwcApAQCAtNzYzLDkgKzc2MywxMCBAQCBzdGF0aWMg
aW5saW5lIHNpemVfdCBnZXRGb3JtRWxlbWVudHNDb3VudChSZXNvdXJjZUhhbmRsZSogam9iKQog
CiAgICAgLy8gUmVzb2x2ZSB0aGUgYmxvYiBlbGVtZW50cyBzbyB0aGUgZm9ybURhdGEgY2FuIGNv
cnJlY3RseSByZXBvcnQgaXQncyBzaXplLgogICAgIGZvcm1EYXRhID0gZm9ybURhdGEtPnJlc29s
dmVCbG9iUmVmZXJlbmNlcygpOwotICAgIGpvYi0+Zmlyc3RSZXF1ZXN0KCkuc2V0SFRUUEJvZHko
Zm9ybURhdGEpOworICAgIHNpemVfdCBzaXplID0gZm9ybURhdGEtPmVsZW1lbnRzKCkuc2l6ZSgp
OworICAgIGpvYi0+Zmlyc3RSZXF1ZXN0KCkuc2V0SFRUUEJvZHkoV1RGTW92ZShmb3JtRGF0YSkp
OwogCi0gICAgcmV0dXJuIGZvcm1EYXRhLT5lbGVtZW50cygpLnNpemUoKTsKKyAgICByZXR1cm4g
c2l6ZTsKIH0KIAogc3RhdGljIHZvaWQgc2V0dXBGb3JtRGF0YShSZXNvdXJjZUhhbmRsZSogam9i
LCBDVVJMb3B0aW9uIHNpemVPcHRpb24sIHN0cnVjdCBjdXJsX3NsaXN0KiogaGVhZGVycykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0Zvcm1EYXRhU3Ry
ZWFtTWFjLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9Gb3JtRGF0YVN0
cmVhbU1hYy5oCmluZGV4IGRiODFjNjY4N2M0MjJlNWVjYmMzNjkwZTIzNDVhZjgyMjRhZDA2YzYu
LmI4NWRkY2IxNWVkOGYwOGQ1OWZhYzQ2ZWRmZmJlNGUxODI5NDI0NTcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0Zvcm1EYXRhU3RyZWFtTWFjLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvRm9ybURhdGFTdHJlYW1NYWMu
aApAQCAtNDIsNyArNDIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICBjbGFzcyBGb3Jt
RGF0YTsKIAotICAgIHZvaWQgc2V0SFRUUEJvZHkoTlNNdXRhYmxlVVJMUmVxdWVzdCAqLCBQYXNz
UmVmUHRyPEZvcm1EYXRhPik7CisgICAgdm9pZCBzZXRIVFRQQm9keShOU011dGFibGVVUkxSZXF1
ZXN0ICosIEZvcm1EYXRhKik7CiAgICAgRm9ybURhdGEqIGh0dHBCb2R5RnJvbVN0cmVhbShOU0lu
cHV0U3RyZWFtICopOwogCiAgICAgQ0ZTdHJpbmdSZWYgZm9ybURhdGFTdHJlYW1MZW5ndGhQcm9w
ZXJ0eU5hbWUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
bWFjL0Zvcm1EYXRhU3RyZWFtTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9tYWMvRm9ybURhdGFTdHJlYW1NYWMubW0KaW5kZXggYjU3MzRmOThlZGZiZjExMzVlMTdkNGI3
ZWJjMjljYzU1ZmUwNDM1MS4uZjg0ZDQ3OTg2MGM3ZTg3MmEzY2ZmZDRiMGMxYmRjNjI2OTViMzc5
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvRm9ybURh
dGFTdHJlYW1NYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMv
Rm9ybURhdGFTdHJlYW1NYWMubW0KQEAgLTMzLDcgKzMzLDYgQEAKIAogI2ltcG9ydCAiRm9ybURh
dGEuaCIKICNpbXBvcnQgIkZvcm1EYXRhU3RyZWFtQ0ZOZXQuaCIKLSNpbXBvcnQgPHd0Zi9QYXNz
UmVmUHRyLmg+CiAKIEBpbnRlcmZhY2UgTlNVUkxSZXF1ZXN0IChXZWJOU1VSTFJlcXVlc3REZXRh
aWxzKQogLSAoQ0ZVUkxSZXF1ZXN0UmVmKV9DRlVSTFJlcXVlc3Q7CkBAIC00MSw5ICs0MCw5IEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdm9pZCBzZXRIVFRQQm9keShOU011dGFibGVVUkxS
ZXF1ZXN0ICpyZXF1ZXN0LCBQYXNzUmVmUHRyPEZvcm1EYXRhPiBwcnBGb3JtRGF0YSkKK3ZvaWQg
c2V0SFRUUEJvZHkoTlNNdXRhYmxlVVJMUmVxdWVzdCAqcmVxdWVzdCwgRm9ybURhdGEqIGZvcm1E
YXRhKQogewotICAgIHNldEhUVFBCb2R5KGNvbnN0X2Nhc3Q8Q0ZNdXRhYmxlVVJMUmVxdWVzdFJl
Zj4oW3JlcXVlc3QgX0NGVVJMUmVxdWVzdF0pLCBwcnBGb3JtRGF0YSk7CisgICAgc2V0SFRUUEJv
ZHkoY29uc3RfY2FzdDxDRk11dGFibGVVUkxSZXF1ZXN0UmVmPihbcmVxdWVzdCBfQ0ZVUkxSZXF1
ZXN0XSksIGZvcm1EYXRhKTsKIH0KIAogRm9ybURhdGEqIGh0dHBCb2R5RnJvbVN0cmVhbShOU0lu
cHV0U3RyZWFtICpzdHJlYW0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL3NvdXAvUmVzb3VyY2VIYW5kbGVTb3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUhhbmRsZVNvdXAuY3BwCmluZGV4IGI2N2M5MGRkOWI0
YzI5N2MwODJlMTIwNThhMTgxOTcwMmI5N2ExN2UuLjY1NGU2YjMyNDg0Njg1ZWQ0NDc3MDhjYTQw
Y2Y2ZjVkZTU0MzVlNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvc291cC9SZXNvdXJjZUhhbmRsZVNvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUhhbmRsZVNvdXAuY3BwCkBAIC01MDYsNyArNTA2LDcg
QEAgc3RhdGljIHZvaWQgZG9SZWRpcmVjdChSZXNvdXJjZUhhbmRsZSogaGFuZGxlKQogICAgICAg
ICAvLyBvciBpZiBjdXJyZW50IHJlZGlyZWN0aW9uIHNheXMgc28KICAgICAgICAgaWYgKG1lc3Nh
Z2UtPm1ldGhvZCA9PSBTT1VQX01FVEhPRF9HRVQgfHwgc2hvdWxkUmVkaXJlY3RBc0dFVChtZXNz
YWdlLCBuZXdVUkwsIGNyb3NzT3JpZ2luKSkgewogICAgICAgICAgICAgbmV3UmVxdWVzdC5zZXRI
VFRQTWV0aG9kKCJHRVQiKTsKLSAgICAgICAgICAgIG5ld1JlcXVlc3Quc2V0SFRUUEJvZHkoMCk7
CisgICAgICAgICAgICBuZXdSZXF1ZXN0LnNldEhUVFBCb2R5KG51bGxwdHIpOwogICAgICAgICAg
ICAgbmV3UmVxdWVzdC5jbGVhckhUVFBDb250ZW50VHlwZSgpOwogICAgICAgICB9CiAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKaW5kZXggMjA5NTg5MzkzOWI3NDUwY2Y5
ZGRlNGM0ZTU4ZDRiYzE2YWNiNDZkNi4uMzVkYjI1MWVmZDhiZjJjNTNlZmRlODU3ZTRhNzNmZDNm
ODQ0YWM2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCkBAIC03NDMsNyAr
NzQzLDcgQEAgdm9pZCBYTUxIdHRwUmVxdWVzdDo6Y3JlYXRlUmVxdWVzdChFeGNlcHRpb25Db2Rl
JiBlYykKICAgICBpZiAobV9yZXF1ZXN0RW50aXR5Qm9keSkgewogICAgICAgICBBU1NFUlQobV9t
ZXRob2QgIT0gIkdFVCIpOwogICAgICAgICBBU1NFUlQobV9tZXRob2QgIT0gIkhFQUQiKTsKLSAg
ICAgICAgcmVxdWVzdC5zZXRIVFRQQm9keShtX3JlcXVlc3RFbnRpdHlCb2R5LnJlbGVhc2UoKSk7
CisgICAgICAgIHJlcXVlc3Quc2V0SFRUUEJvZHkoV1RGTW92ZShtX3JlcXVlc3RFbnRpdHlCb2R5
KSk7CiAgICAgfQogCiAgICAgaWYgKCFtX3JlcXVlc3RIZWFkZXJzLmlzRW1wdHkoKSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYk11dGFibGVVUkxSZXF1ZXN0LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvd2luL1dlYk11dGFibGVVUkxSZXF1ZXN0LmNwcAppbmRleCA0Y2EwMjZhZjZmNzI4
MDFlZDA2ZjQ0YjA3OGE2NmM5MWI1NzhmZmZkLi4xYTE0YTA5NmYyMzU3Y2E3ZjUyYTNhMmIxMmVm
NmVlNWE1OWQ2MzQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJNdXRhYmxlVVJM
UmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC93aW4vV2ViTXV0YWJsZVVSTFJlcXVlc3Qu
Y3BwCkBAIC0zMDcsNyArMzA3LDcgQEAgSFJFU1VMVCBXZWJNdXRhYmxlVVJMUmVxdWVzdDo6c2V0
SFRUUEJvZHkoX0luX29wdF8gSVN0cmVhbSogZGF0YSkKICAgICBpZiAoRkFJTEVEKGRhdGEtPlJl
YWQoZm9ybURhdGEsIHN0YXQuY2JTaXplLkxvd1BhcnQsICZieXRlc1JlYWQpKSkKICAgICAgICAg
cmV0dXJuIEVfRkFJTDsKIAotICAgIG1fcmVxdWVzdC5zZXRIVFRQQm9keShodHRwQm9keSk7Cisg
ICAgbV9yZXF1ZXN0LnNldEhUVFBCb2R5KFdURk1vdmUoaHR0cEJvZHkpKTsKICAgICByZXR1cm4g
U19PSzsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuY3BwIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuY3BwCmluZGV4IGY0YzU4YTVlNGM2
M2E5NTIyYjY0Yjk4ZmI4MGM4NzAxYTI3MDZiY2QuLmI1NmIyZjdkOGQ5M2IwZmY0MWRjZjg0NDVk
ZWQxNjNlZWRmMjcxZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNz
L05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5jcHAKQEAgLTEyMSw3
ICsxMjEsNyBAQCBib29sIE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzOjpkZWNvZGUoSVBD
OjpBcmd1bWVudERlY29kZXImIGRlY29kZXIsIE5ldHdvcgogICAgICAgICBSZWZQdHI8Rm9ybURh
dGE+IGZvcm1EYXRhID0gRm9ybURhdGE6OmRlY29kZShkZWNvZGVyKTsKICAgICAgICAgaWYgKCFm
b3JtRGF0YSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgcmVzdWx0LnJlcXVl
c3Quc2V0SFRUUEJvZHkoZm9ybURhdGEucmVsZWFzZSgpKTsKKyAgICAgICAgcmVzdWx0LnJlcXVl
c3Quc2V0SFRUUEJvZHkoV1RGTW92ZShmb3JtRGF0YSkpOwogCiAgICAgICAgIFNhbmRib3hFeHRl
bnNpb246OkhhbmRsZUFycmF5IHJlcXVlc3RCb2R5U2FuZGJveEV4dGVuc2lvbkhhbmRsZXM7CiAg
ICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVxdWVzdEJvZHlTYW5kYm94RXh0ZW5zaW9uSGFu
ZGxlcykpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>269558</attachid>
            <date>2016-01-22 01:42:26 -0800</date>
            <delta_ts>2016-01-22 01:56:56 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-153229-20160122104157.patch</filename>
            <type>text/plain</type>
            <size>28801</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk1NDQ2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzg4NjY2MGRjNGIxNTNk
MTAzZjcxYWI5ZDRkY2QzZDUwOGU4MDBmNy4uZmUzZDNlMjkxNWU3NDI3Y2FiYTQ2ZWIzZTk1ZDBm
YWJmNGQzZTFjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYwIEBACisyMDE2LTAxLTE5ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uLmZhYmxldEBjcmYuY2Fub24uZnI+CisKKyAgICAgICAgUmVtb3Zl
IFBhc3NSZWZQdHIgZnJvbSBSZXNvdXJjZVJlcXVlc3QgYW5kIEZvcm1EYXRhCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTMyMjkKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDb3ZlcmVkIGJ5IGV4aXN0aW5n
IHRlc3RzLgorCisgICAgICAgIE1ha2luZyBSZXNvdXJjZVJlcXVlc3Q6OnNldEhUVFBCb2R5IHRh
a2UgYSBSZWZQdHI8Rm9ybURhdGE+JiYuCisgICAgICAgIEFkZGluZyBSZXNvdXJjZVJlcXVlc3Q6
OnNldEhUVFBCb2R5IHZhcmlhbnQgdGhhdCB0YWtlIGEgRm9ybURhdGEqLgorCisgICAgICAgIE1v
dmluZyBGb3JtRGF0YSBmcm9tIFBhc3NSZWZQdHIgdG8gUmVmUHRyLgorCisgICAgICAgICogaHRt
bC9wYXJzZXIvWFNTQXVkaXRvckRlbGVnYXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhTU0F1
ZGl0b3JEZWxlZ2F0ZTo6ZGlkQmxvY2tTY3JpcHQpOgorICAgICAgICAqIGxvYWRlci9Gb3JtU3Vi
bWlzc2lvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb3JtU3VibWlzc2lvbjo6cG9wdWxhdGVG
cmFtZUxvYWRSZXF1ZXN0KToKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmxvYWRQb3N0UmVxdWVzdCk6CisgICAgICAgIChX
ZWJDb3JlOjpGcmFtZUxvYWRlcjo6bG9hZERpZmZlcmVudERvY3VtZW50SXRlbSk6CisgICAgICAg
ICogbG9hZGVyL1BpbmdMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGluZ0xvYWRlcjo6
c2VuZFZpb2xhdGlvblJlcG9ydCk6CisgICAgICAgICogbG9hZGVyL1BpbmdMb2FkZXIuaDoKKyAg
ICAgICAgKiBwYWdlL0NvbnRlbnRTZWN1cml0eVBvbGljeS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDb250ZW50U2VjdXJpdHlQb2xpY3k6OnJlcG9ydFZpb2xhdGlvbik6CisgICAgICAgICogcGxh
dGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb3JtRGF0YTo6
Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkZvcm1EYXRhOjpjcmVhdGVNdWx0aVBhcnQpOgor
ICAgICAgICAoV2ViQ29yZTo6Rm9ybURhdGE6OmNvcHkpOgorICAgICAgICAoV2ViQ29yZTo6Rm9y
bURhdGE6OmRlZXBDb3B5KToKKyAgICAgICAgKFdlYkNvcmU6OkZvcm1EYXRhOjpyZXNvbHZlQmxv
YlJlZmVyZW5jZXMpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OkZvcm1EYXRhOjpkZWNvZGUpOgorICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3RCYXNlOjphZG9wdCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3RC
YXNlOjpzZXRIVFRQQm9keSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJl
cXVlc3RCYXNlLmg6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3RCYXNlOjpzZXRI
VFRQQm9keSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9Gb3JtRGF0YVN0cmVhbUNG
TmV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNldEhUVFBCb2R5KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9uZXR3b3JrL2NmL0Zvcm1EYXRhU3RyZWFtQ0ZOZXQuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9uZXR3b3JrL2NmL1Jlc291cmNlUmVxdWVzdENGTmV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdDo6ZG9VcGRhdGVQbGF0Zm9ybUhUVFBCb2R5KToKKyAgICAgICAgKFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdDo6dXBkYXRlRnJvbURlbGVnYXRlUHJlc2VydmluZ09sZFBy
b3BlcnRpZXMpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY29jb2EvUmVzb3VyY2VSZXF1
ZXN0Q29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Q6OmRvVXBkYXRl
UGxhdGZvcm1IVFRQQm9keSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291
cmNlSGFuZGxlTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpnZXRGb3JtRWxlbWVudHND
b3VudCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9tYWMvRm9ybURhdGFTdHJlYW1NYWMu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9Gb3JtRGF0YVN0cmVhbU1hYy5tbToK
KyAgICAgICAgKFdlYkNvcmU6OnNldEhUVFBCb2R5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3
b3JrL3NvdXAvUmVzb3VyY2VIYW5kbGVTb3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmRvUmVk
aXJlY3QpOgorICAgICAgICAqIHhtbC9YTUxIdHRwUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpYTUxIdHRwUmVxdWVzdDo6Y3JlYXRlUmVxdWVzdCk6CisKIDIwMTYtMDEtMjEgIFNpbW9u
IEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTiAo
cjE2ODI0NCk6IENvbnRlbnQgaW4gaG9yaXpvbnRhbC1idCBwYWdlIGlzIG9mZnNldCBzdWNoIHRo
YXQgb25seSB0aGUgZW5kIGlzIHZpZXdhYmxlIGFuZCB0aGVyZSBpcyBhIHdoaXRlIGdhcCBhdCB0
aGUgdG9wCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0L3dpbi9DaGFuZ2VMb2cKaW5kZXggZDRmN2Q1M2VmZjI1NDhhZGE1MWQ5MzBkZGVhZmYx
MjNjMDg1OGI4MC4uMjk3YWUzNjRjM2M1YzFiZmQ1MjViMTQ2MWY2OGM1NGM3ZjZkNzYxNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQv
d2luL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDE2LTAxLTE5ICBZb3Vlbm4gRmFibGV0
ICA8eW91ZW5uLmZhYmxldEBjcmYuY2Fub24uZnI+CisKKyAgICAgICAgUmVtb3ZlIFBhc3NSZWZQ
dHIgZnJvbSBSZXNvdXJjZVJlcXVlc3QgYW5kIEZvcm1EYXRhCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTMyMjkKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYk11dGFibGVVUkxSZXF1ZXN0LmNwcDoK
KyAgICAgICAgKFdlYk11dGFibGVVUkxSZXF1ZXN0OjpzZXRIVFRQQm9keSk6CisKIDIwMTYtMDEt
MTUgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgUmVt
b3ZlIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0NvbnZleFBvbHlnb24oKSBhbmQgR3JhcGhpY3NDb250
ZXh0OjpjbGlwQ29udmV4UG9seWdvbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZDk5ZTlmMjlmYjI3MzIwOTIx
MjMwY2ExNzgyMTVhYzhjMTU1YmZlZC4uYjMxZTI2NGNmN2ZlNTA4M2YxOGUwOWE2YWY5ZGNkYzAw
YmQ3ZWUyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDE2LTAxLTE5ICBZb3Vlbm4g
RmFibGV0ICA8eW91ZW5uLmZhYmxldEBjcmYuY2Fub24uZnI+CisKKyAgICAgICAgUmVtb3ZlIFBh
c3NSZWZQdHIgZnJvbSBSZXNvdXJjZVJlcXVlc3QgYW5kIEZvcm1EYXRhCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTMyMjkKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdv
cmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jl
c291cmNlTG9hZFBhcmFtZXRlcnM6OmRlY29kZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
Y2FjaGUvTmV0d29ya0NhY2hlRW50cnkuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2Fj
aGU6OkVudHJ5OjpFbnRyeSk6CisKIDIwMTYtMDEtMjEgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZy
YXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTiAocjE2ODI0NCk6IENvbnRlbnQg
aW4gaG9yaXpvbnRhbC1idCBwYWdlIGlzIG9mZnNldCBzdWNoIHRoYXQgb25seSB0aGUgZW5kIGlz
IHZpZXdhYmxlIGFuZCB0aGVyZSBpcyBhIHdoaXRlIGdhcCBhdCB0aGUgdG9wCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRm9ybVN1Ym1pc3Npb24uY3BwIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0Zvcm1TdWJtaXNzaW9uLmNwcAppbmRleCAwMTc4NmJhZDEzYTQyNDZmZDRiYzQx
NGU0Nzc2YWMyM2IwZjY0YmQyLi5hNGE0YjM3NWFlYTkxODJiYWY5MTlhMDI3MzA2NmU5MWUzNGY2
NjBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRm9ybVN1Ym1pc3Npb24uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Gb3JtU3VibWlzc2lvbi5jcHAKQEAgLTI1OCw3
ICsyNTgsNyBAQCB2b2lkIEZvcm1TdWJtaXNzaW9uOjpwb3B1bGF0ZUZyYW1lTG9hZFJlcXVlc3Qo
RnJhbWVMb2FkUmVxdWVzdCYgZnJhbWVSZXF1ZXN0KQogCiAgICAgaWYgKG1fbWV0aG9kID09IEZv
cm1TdWJtaXNzaW9uOjpQb3N0TWV0aG9kKSB7CiAgICAgICAgIGZyYW1lUmVxdWVzdC5yZXNvdXJj
ZVJlcXVlc3QoKS5zZXRIVFRQTWV0aG9kKCJQT1NUIik7Ci0gICAgICAgIGZyYW1lUmVxdWVzdC5y
ZXNvdXJjZVJlcXVlc3QoKS5zZXRIVFRQQm9keShtX2Zvcm1EYXRhKTsKKyAgICAgICAgZnJhbWVS
ZXF1ZXN0LnJlc291cmNlUmVxdWVzdCgpLnNldEhUVFBCb2R5KG1fZm9ybURhdGEuY29weVJlZigp
KTsKIAogICAgICAgICAvLyBjb25zdHJ1Y3Qgc29tZSB1c2VyIGhlYWRlcnMgaWYgbmVjZXNzYXJ5
CiAgICAgICAgIGlmIChtX2JvdW5kYXJ5LmlzRW1wdHkoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJh
bWVMb2FkZXIuY3BwCmluZGV4IDBmZjViMjk5ZDhjNjJjMDVjMDAxY2QxYzI2ZmY2ZTgxZDhhNDg3
YzEuLjAyOTc3ZjYyNDVkNTRmM2E3MjRkNjlkMjA4MzQwODM3OTYxNTg0YjQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcApAQCAtMjY1NCw3ICsyNjU0LDYgQEAgdm9pZCBGcmFt
ZUxvYWRlcjo6bG9hZFBvc3RSZXF1ZXN0KGNvbnN0IEZyYW1lTG9hZFJlcXVlc3QmIHJlcXVlc3Qs
IGNvbnN0IFN0cmluZyYKIAogICAgIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgaW5SZXF1ZXN0ID0g
cmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKTsKICAgICBjb25zdCBVUkwmIHVybCA9IGluUmVxdWVz
dC51cmwoKTsKLSAgICBSZWZQdHI8Rm9ybURhdGE+IGZvcm1EYXRhID0gaW5SZXF1ZXN0Lmh0dHBC
b2R5KCk7CiAgICAgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSA9IGluUmVxdWVzdC5odHRwQ29u
dGVudFR5cGUoKTsKICAgICBTdHJpbmcgb3JpZ2luID0gaW5SZXF1ZXN0Lmh0dHBPcmlnaW4oKTsK
IApAQCAtMjY2NCw3ICsyNjYzLDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZFBvc3RSZXF1ZXN0
KGNvbnN0IEZyYW1lTG9hZFJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFN0cmluZyYKICAgICAgICAg
d29ya2luZ1Jlc291cmNlUmVxdWVzdC5zZXRIVFRQUmVmZXJyZXIocmVmZXJyZXIpOwogICAgIHdv
cmtpbmdSZXNvdXJjZVJlcXVlc3Quc2V0SFRUUE9yaWdpbihvcmlnaW4pOwogICAgIHdvcmtpbmdS
ZXNvdXJjZVJlcXVlc3Quc2V0SFRUUE1ldGhvZCgiUE9TVCIpOwotICAgIHdvcmtpbmdSZXNvdXJj
ZVJlcXVlc3Quc2V0SFRUUEJvZHkoZm9ybURhdGEpOworICAgIHdvcmtpbmdSZXNvdXJjZVJlcXVl
c3Quc2V0SFRUUEJvZHkoaW5SZXF1ZXN0Lmh0dHBCb2R5KCkpOwogICAgIHdvcmtpbmdSZXNvdXJj
ZVJlcXVlc3Quc2V0SFRUUENvbnRlbnRUeXBlKGNvbnRlbnRUeXBlKTsKICAgICBhZGRFeHRyYUZp
ZWxkc1RvUmVxdWVzdCh3b3JraW5nUmVzb3VyY2VSZXF1ZXN0LCBsb2FkVHlwZSwgdHJ1ZSk7CiAK
QEAgLTMyOTksNyArMzI5OCw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmxvYWREaWZmZXJlbnREb2N1
bWVudEl0ZW0oSGlzdG9yeUl0ZW0mIGl0ZW0sIEZyYW1lTG9hZFR5cGUgbG9hCiAgICAgICAgIGZv
cm1EYXRhLT5nZW5lcmF0ZUZpbGVzKG1fZnJhbWUuZG9jdW1lbnQoKSk7CiAKICAgICAgICAgcmVx
dWVzdC5zZXRIVFRQTWV0aG9kKCJQT1NUIik7Ci0gICAgICAgIHJlcXVlc3Quc2V0SFRUUEJvZHko
Zm9ybURhdGEpOworICAgICAgICByZXF1ZXN0LnNldEhUVFBCb2R5KFdURk1vdmUoZm9ybURhdGEp
KTsKICAgICAgICAgcmVxdWVzdC5zZXRIVFRQQ29udGVudFR5cGUoaXRlbS5mb3JtQ29udGVudFR5
cGUoKSk7CiAgICAgICAgIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gc2VjdXJpdHlPcmlnaW4gPSBT
ZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbVN0cmluZyhpdGVtLnJlZmVycmVyKCkpOwogICAgICAg
ICBhZGRIVFRQT3JpZ2luSWZOZWVkZWQocmVxdWVzdCwgc2VjdXJpdHlPcmlnaW4tPnRvU3RyaW5n
KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1BpbmdMb2FkZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL1BpbmdMb2FkZXIuY3BwCmluZGV4IGM4MGIyZTQwNTVlMGVm
MWQyMjRkNzlkNDcyZTFiM2JlMzUwZjhkYTkuLjdmOGRkNGU0YmRjNzFiZDkxNjA1N2E3NzNlZTMy
ZjJkMzYwMzY4YWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9QaW5nTG9hZGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUGluZ0xvYWRlci5jcHAKQEAgLTEyMyw3
ICsxMjMsNyBAQCB2b2lkIFBpbmdMb2FkZXI6OnNlbmRQaW5nKEZyYW1lJiBmcmFtZSwgY29uc3Qg
VVJMJiBwaW5nVVJMLCBjb25zdCBVUkwmIGRlc3RpbmF0aQogICAgIHN0YXJ0UGluZ0xvYWQoZnJh
bWUsIHJlcXVlc3QpOwogfQogCi12b2lkIFBpbmdMb2FkZXI6OnNlbmRWaW9sYXRpb25SZXBvcnQo
RnJhbWUmIGZyYW1lLCBjb25zdCBVUkwmIHJlcG9ydFVSTCwgUGFzc1JlZlB0cjxGb3JtRGF0YT4g
cmVwb3J0KQordm9pZCBQaW5nTG9hZGVyOjpzZW5kVmlvbGF0aW9uUmVwb3J0KEZyYW1lJiBmcmFt
ZSwgY29uc3QgVVJMJiByZXBvcnRVUkwsIFJlZlB0cjxGb3JtRGF0YT4mJiByZXBvcnQpCiB7CiAg
ICAgUmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QocmVwb3J0VVJMKTsKIApAQCAtMTM0LDcgKzEzNCw3
IEBAIHZvaWQgUGluZ0xvYWRlcjo6c2VuZFZpb2xhdGlvblJlcG9ydChGcmFtZSYgZnJhbWUsIGNv
bnN0IFVSTCYgcmVwb3J0VVJMLCBQYXNzUmVmCiAKICAgICByZXF1ZXN0LnNldEhUVFBNZXRob2Qo
IlBPU1QiKTsKICAgICByZXF1ZXN0LnNldEhUVFBDb250ZW50VHlwZSgiYXBwbGljYXRpb24vanNv
biIpOwotICAgIHJlcXVlc3Quc2V0SFRUUEJvZHkocmVwb3J0KTsKKyAgICByZXF1ZXN0LnNldEhU
VFBCb2R5KFdURk1vdmUocmVwb3J0KSk7CiAKICAgICBib29sIHJlbW92ZUNvb2tpZXMgPSB0cnVl
OwogICAgIGlmIChEb2N1bWVudCogZG9jdW1lbnQgPSBmcmFtZS5kb2N1bWVudCgpKSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUGluZ0xvYWRlci5oIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL1BpbmdMb2FkZXIuaAppbmRleCAwNDVkZTEyMWVjMmQ3M2NjMDM1MGY0YTkwZWRi
N2RkZWVlZDRkZGY4Li41OWUxY2Y3ZjJmY2Y2OWM1N2YzOTFkZDZjZGEwOWQ2MjA4MGNlN2RjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUGluZ0xvYWRlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9QaW5nTG9hZGVyLmgKQEAgLTMyLDcgKzMyLDcgQEAKICNpZm5kZWYg
UGluZ0xvYWRlcl9oCiAjZGVmaW5lIFBpbmdMb2FkZXJfaAogCi0jaW5jbHVkZSA8d3RmL1Bhc3NS
ZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IApAQCAtNDUsNyArNDUsNyBAQCBjbGFzcyBQaW5nTG9hZGVyIHsKIHB1YmxpYzoKICAgICBzdGF0
aWMgdm9pZCBsb2FkSW1hZ2UoRnJhbWUmLCBjb25zdCBVUkwmKTsKICAgICBzdGF0aWMgdm9pZCBz
ZW5kUGluZyhGcmFtZSYsIGNvbnN0IFVSTCYgcGluZ1VSTCwgY29uc3QgVVJMJiBkZXN0aW5hdGlv
blVSTCk7Ci0gICAgc3RhdGljIHZvaWQgc2VuZFZpb2xhdGlvblJlcG9ydChGcmFtZSYsIGNvbnN0
IFVSTCYgcmVwb3J0VVJMLCBQYXNzUmVmUHRyPEZvcm1EYXRhPiByZXBvcnQpOworICAgIHN0YXRp
YyB2b2lkIHNlbmRWaW9sYXRpb25SZXBvcnQoRnJhbWUmLCBjb25zdCBVUkwmIHJlcG9ydFVSTCwg
UmVmUHRyPEZvcm1EYXRhPiYmIHJlcG9ydCk7CiAKIHByaXZhdGU6CiAgICAgc3RhdGljIHZvaWQg
c3RhcnRQaW5nTG9hZChGcmFtZSYsIFJlc291cmNlUmVxdWVzdCYpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9Db250ZW50U2VjdXJpdHlQb2xpY3kuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9Db250ZW50U2VjdXJpdHlQb2xpY3kuY3BwCmluZGV4IDA1OWJiNGFkM2RiNmQyOTI0
NmZlOWIxMWRhYThiMDA2YTQ1NjMxZDMuLmIzYzYxYmY4NjdmMmY5MjA1OTRlNzRkYWUwMDczZDY4
YmM0ZDVkNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGVudFNlY3VyaXR5
UG9saWN5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRlbnRTZWN1cml0eVBvbGlj
eS5jcHAKQEAgLTE2NzIsNyArMTY3Miw3IEBAIHZvaWQgQ29udGVudFNlY3VyaXR5UG9saWN5Ojpy
ZXBvcnRWaW9sYXRpb24oY29uc3QgU3RyaW5nJiBkaXJlY3RpdmVUZXh0LCBjb25zdCBTCiAgICAg
UmVmUHRyPEZvcm1EYXRhPiByZXBvcnQgPSBGb3JtRGF0YTo6Y3JlYXRlKHJlcG9ydE9iamVjdC0+
dG9KU09OU3RyaW5nKCkudXRmOCgpKTsKIAogICAgIGZvciAoY29uc3QgYXV0byYgdXJsIDogcmVw
b3J0VVJJcykKLSAgICAgICAgUGluZ0xvYWRlcjo6c2VuZFZpb2xhdGlvblJlcG9ydCgqZnJhbWUs
IHVybCwgcmVwb3J0KTsKKyAgICAgICAgUGluZ0xvYWRlcjo6c2VuZFZpb2xhdGlvblJlcG9ydCgq
ZnJhbWUsIHVybCwgcmVwb3J0LmNvcHlSZWYoKSk7CiB9CiAKIHZvaWQgQ29udGVudFNlY3VyaXR5
UG9saWN5OjpyZXBvcnRVbnN1cHBvcnRlZERpcmVjdGl2ZShjb25zdCBTdHJpbmcmIG5hbWUpIGNv
bnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRh
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuY3BwCmluZGV4
IGY3ZTEyYzIxMWYwMDg2MDRiOTg5YjM1OGE3NTU2ZDAyYzY0NTRiNmYuLjgwMzM1ZDgyNGJmNmZj
ZWJlZjIxNjgyYmE2MDQzMjdkNDg5MGVhN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvRm9ybURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvRm9ybURhdGEuY3BwCkBAIC03MCw1NCArNzAsNTQgQEAgRm9ybURhdGE6On5Gb3Jt
RGF0YSgpCiAgICAgcmVtb3ZlR2VuZXJhdGVkRmlsZXNJZk5lZWRlZCgpOwogfQogCi1QYXNzUmVm
UHRyPEZvcm1EYXRhPiBGb3JtRGF0YTo6Y3JlYXRlKCkKK1JlZjxGb3JtRGF0YT4gRm9ybURhdGE6
OmNyZWF0ZSgpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBGb3JtRGF0YSk7CisgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgRm9ybURhdGEpOwogfQogCi1QYXNzUmVmUHRyPEZvcm1EYXRhPiBG
b3JtRGF0YTo6Y3JlYXRlKGNvbnN0IHZvaWQqIGRhdGEsIHNpemVfdCBzaXplKQorUmVmPEZvcm1E
YXRhPiBGb3JtRGF0YTo6Y3JlYXRlKGNvbnN0IHZvaWQqIGRhdGEsIHNpemVfdCBzaXplKQogewot
ICAgIFJlZlB0cjxGb3JtRGF0YT4gcmVzdWx0ID0gY3JlYXRlKCk7CisgICAgUmVmPEZvcm1EYXRh
PiByZXN1bHQgPSBjcmVhdGUoKTsKICAgICByZXN1bHQtPmFwcGVuZERhdGEoZGF0YSwgc2l6ZSk7
Ci0gICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNlKCk7CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAot
UGFzc1JlZlB0cjxGb3JtRGF0YT4gRm9ybURhdGE6OmNyZWF0ZShjb25zdCBDU3RyaW5nJiBzdHJp
bmcpCitSZWY8Rm9ybURhdGE+IEZvcm1EYXRhOjpjcmVhdGUoY29uc3QgQ1N0cmluZyYgc3RyaW5n
KQogewotICAgIFJlZlB0cjxGb3JtRGF0YT4gcmVzdWx0ID0gY3JlYXRlKCk7CisgICAgUmVmPEZv
cm1EYXRhPiByZXN1bHQgPSBjcmVhdGUoKTsKICAgICByZXN1bHQtPmFwcGVuZERhdGEoc3RyaW5n
LmRhdGEoKSwgc3RyaW5nLmxlbmd0aCgpKTsKLSAgICByZXR1cm4gcmVzdWx0LnJlbGVhc2UoKTsK
KyAgICByZXR1cm4gcmVzdWx0OwogfQogCi1QYXNzUmVmUHRyPEZvcm1EYXRhPiBGb3JtRGF0YTo6
Y3JlYXRlKGNvbnN0IFZlY3RvcjxjaGFyPiYgdmVjdG9yKQorUmVmPEZvcm1EYXRhPiBGb3JtRGF0
YTo6Y3JlYXRlKGNvbnN0IFZlY3RvcjxjaGFyPiYgdmVjdG9yKQogewotICAgIFJlZlB0cjxGb3Jt
RGF0YT4gcmVzdWx0ID0gY3JlYXRlKCk7CisgICAgUmVmPEZvcm1EYXRhPiByZXN1bHQgPSBjcmVh
dGUoKTsKICAgICByZXN1bHQtPmFwcGVuZERhdGEodmVjdG9yLmRhdGEoKSwgdmVjdG9yLnNpemUo
KSk7Ci0gICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNlKCk7CisgICAgcmV0dXJuIHJlc3VsdDsKIH0K
IAotUGFzc1JlZlB0cjxGb3JtRGF0YT4gRm9ybURhdGE6OmNyZWF0ZShjb25zdCBGb3JtRGF0YUxp
c3QmIGxpc3QsIGNvbnN0IFRleHRFbmNvZGluZyYgZW5jb2RpbmcsIEVuY29kaW5nVHlwZSBlbmNv
ZGluZ1R5cGUpCitSZWY8Rm9ybURhdGE+IEZvcm1EYXRhOjpjcmVhdGUoY29uc3QgRm9ybURhdGFM
aXN0JiBsaXN0LCBjb25zdCBUZXh0RW5jb2RpbmcmIGVuY29kaW5nLCBFbmNvZGluZ1R5cGUgZW5j
b2RpbmdUeXBlKQogewotICAgIFJlZlB0cjxGb3JtRGF0YT4gcmVzdWx0ID0gY3JlYXRlKCk7Cisg
ICAgUmVmPEZvcm1EYXRhPiByZXN1bHQgPSBjcmVhdGUoKTsKICAgICByZXN1bHQtPmFwcGVuZEtl
eVZhbHVlUGFpckl0ZW1zKGxpc3QsIGVuY29kaW5nLCBmYWxzZSwgMCwgZW5jb2RpbmdUeXBlKTsK
LSAgICByZXR1cm4gcmVzdWx0LnJlbGVhc2UoKTsKKyAgICByZXR1cm4gcmVzdWx0OwogfQogCi1Q
YXNzUmVmUHRyPEZvcm1EYXRhPiBGb3JtRGF0YTo6Y3JlYXRlTXVsdGlQYXJ0KGNvbnN0IEZvcm1E
YXRhTGlzdCYgbGlzdCwgY29uc3QgVGV4dEVuY29kaW5nJiBlbmNvZGluZywgRG9jdW1lbnQqIGRv
Y3VtZW50KQorUmVmPEZvcm1EYXRhPiBGb3JtRGF0YTo6Y3JlYXRlTXVsdGlQYXJ0KGNvbnN0IEZv
cm1EYXRhTGlzdCYgbGlzdCwgY29uc3QgVGV4dEVuY29kaW5nJiBlbmNvZGluZywgRG9jdW1lbnQq
IGRvY3VtZW50KQogewotICAgIFJlZlB0cjxGb3JtRGF0YT4gcmVzdWx0ID0gY3JlYXRlKCk7Cisg
ICAgUmVmPEZvcm1EYXRhPiByZXN1bHQgPSBjcmVhdGUoKTsKICAgICByZXN1bHQtPmFwcGVuZEtl
eVZhbHVlUGFpckl0ZW1zKGxpc3QsIGVuY29kaW5nLCB0cnVlLCBkb2N1bWVudCk7Ci0gICAgcmV0
dXJuIHJlc3VsdC5yZWxlYXNlKCk7CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotUGFzc1JlZlB0
cjxGb3JtRGF0YT4gRm9ybURhdGE6OmNvcHkoKSBjb25zdAorUmVmPEZvcm1EYXRhPiBGb3JtRGF0
YTo6Y29weSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBGb3JtRGF0YSgqdGhp
cykpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZvcm1EYXRhKCp0aGlzKSk7CiB9CiAKLVBh
c3NSZWZQdHI8Rm9ybURhdGE+IEZvcm1EYXRhOjpkZWVwQ29weSgpIGNvbnN0CitSZWY8Rm9ybURh
dGE+IEZvcm1EYXRhOjpkZWVwQ29weSgpIGNvbnN0CiB7Ci0gICAgUmVmUHRyPEZvcm1EYXRhPiBm
b3JtRGF0YShjcmVhdGUoKSk7CisgICAgUmVmPEZvcm1EYXRhPiBmb3JtRGF0YShjcmVhdGUoKSk7
CiAKICAgICBmb3JtRGF0YS0+bV9hbHdheXNTdHJlYW0gPSBtX2Fsd2F5c1N0cmVhbTsKIApAQCAt
MTM1LDcgKzEzNSw3IEBAIFBhc3NSZWZQdHI8Rm9ybURhdGE+IEZvcm1EYXRhOjpkZWVwQ29weSgp
IGNvbnN0CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgIH0KLSAgICByZXR1cm4g
Zm9ybURhdGEucmVsZWFzZSgpOworICAgIHJldHVybiBmb3JtRGF0YTsKIH0KIAogdm9pZCBGb3Jt
RGF0YTo6YXBwZW5kRGF0YShjb25zdCB2b2lkKiBkYXRhLCBzaXplX3Qgc2l6ZSkKQEAgLTMwMiw3
ICszMDIsNyBAQCBzdGF0aWMgdm9pZCBhcHBlbmRCbG9iUmVzb2x2ZWQoRm9ybURhdGEqIGZvcm1E
YXRhLCBjb25zdCBVUkwmIHVybCkKICAgICB9CiB9CiAKLVBhc3NSZWZQdHI8Rm9ybURhdGE+IEZv
cm1EYXRhOjpyZXNvbHZlQmxvYlJlZmVyZW5jZXMoKQorUmVmPEZvcm1EYXRhPiBGb3JtRGF0YTo6
cmVzb2x2ZUJsb2JSZWZlcmVuY2VzKCkKIHsKICAgICAvLyBGaXJzdCBjaGVjayBpZiBhbnkgYmxv
YnMgbmVlZHMgdG8gYmUgcmVzb2x2ZWQsIG9yIHdlIGNhbiB0YWtlIHRoZSBmYXN0IHBhdGguCiAg
ICAgYm9vbCBoYXNCbG9iID0gZmFsc2U7CkBAIC0zMTYsMTAgKzMxNiwxMCBAQCBQYXNzUmVmUHRy
PEZvcm1EYXRhPiBGb3JtRGF0YTo6cmVzb2x2ZUJsb2JSZWZlcmVuY2VzKCkKICAgICB9CiAKICAg
ICBpZiAoIWhhc0Jsb2IpCi0gICAgICAgIHJldHVybiB0aGlzOworICAgICAgICByZXR1cm4gKnRo
aXM7CiAKICAgICAvLyBDcmVhdGUgYSBjb3B5IHRvIGFwcGVuZCB0aGUgcmVzdWx0IGludG8uCi0g
ICAgUmVmUHRyPEZvcm1EYXRhPiBuZXdGb3JtRGF0YSA9IEZvcm1EYXRhOjpjcmVhdGUoKTsKKyAg
ICBSZWY8Rm9ybURhdGE+IG5ld0Zvcm1EYXRhID0gRm9ybURhdGE6OmNyZWF0ZSgpOwogICAgIG5l
d0Zvcm1EYXRhLT5zZXRBbHdheXNTdHJlYW0oYWx3YXlzU3RyZWFtKCkpOwogICAgIG5ld0Zvcm1E
YXRhLT5zZXRJZGVudGlmaWVyKGlkZW50aWZpZXIoKSk7CiAgICAgaXQgPSBlbGVtZW50cygpLmJl
Z2luKCk7CkBAIC0zMzAsMTEgKzMzMCwxMSBAQCBQYXNzUmVmUHRyPEZvcm1EYXRhPiBGb3JtRGF0
YTo6cmVzb2x2ZUJsb2JSZWZlcmVuY2VzKCkKICAgICAgICAgZWxzZSBpZiAoZWxlbWVudC5tX3R5
cGUgPT0gRm9ybURhdGFFbGVtZW50OjpUeXBlOjpFbmNvZGVkRmlsZSkKICAgICAgICAgICAgIG5l
d0Zvcm1EYXRhLT5hcHBlbmRGaWxlUmFuZ2UoZWxlbWVudC5tX2ZpbGVuYW1lLCBlbGVtZW50Lm1f
ZmlsZVN0YXJ0LCBlbGVtZW50Lm1fZmlsZUxlbmd0aCwgZWxlbWVudC5tX2V4cGVjdGVkRmlsZU1v
ZGlmaWNhdGlvblRpbWUsIGVsZW1lbnQubV9zaG91bGRHZW5lcmF0ZUZpbGUpOwogICAgICAgICBl
bHNlIGlmIChlbGVtZW50Lm1fdHlwZSA9PSBGb3JtRGF0YUVsZW1lbnQ6OlR5cGU6OkVuY29kZWRC
bG9iKQotICAgICAgICAgICAgYXBwZW5kQmxvYlJlc29sdmVkKG5ld0Zvcm1EYXRhLmdldCgpLCBl
bGVtZW50Lm1fdXJsKTsKKyAgICAgICAgICAgIGFwcGVuZEJsb2JSZXNvbHZlZChuZXdGb3JtRGF0
YS5wdHIoKSwgZWxlbWVudC5tX3VybCk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwogICAgIH0KLSAgICByZXR1cm4gbmV3Rm9ybURhdGEucmVsZWFzZSgp
OworICAgIHJldHVybiBuZXdGb3JtRGF0YTsKIH0KIAogdm9pZCBGb3JtRGF0YTo6Z2VuZXJhdGVG
aWxlcyhEb2N1bWVudCogZG9jdW1lbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L0Zvcm1EYXRhLmgKaW5kZXggMmRkMDdiMWY3ZWIyOGEwZTQ1NDM4NzEyNTI1ZTk1MjEyYWMxMjlh
Yy4uZWJhMjFhNjhhNmE4MTVhODdiMzI2OWE4MGEwNDdkN2JiODZhMzM0NiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuaApAQCAtMTk0LDIzICsxOTQsMjMgQEAg
cHVibGljOgogICAgICAgICBNdWx0aXBhcnRGb3JtRGF0YSAvLyBmb3IgbXVsdGlwYXJ0L2Zvcm0t
ZGF0YQogICAgIH07CiAKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUGFzc1JlZlB0cjxGb3Jt
RGF0YT4gY3JlYXRlKCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFBhc3NSZWZQdHI8Rm9y
bURhdGE+IGNyZWF0ZShjb25zdCB2b2lkKiwgc2l6ZV90KTsKLSAgICBzdGF0aWMgUGFzc1JlZlB0
cjxGb3JtRGF0YT4gY3JlYXRlKGNvbnN0IENTdHJpbmcmKTsKLSAgICBzdGF0aWMgUGFzc1JlZlB0
cjxGb3JtRGF0YT4gY3JlYXRlKGNvbnN0IFZlY3RvcjxjaGFyPiYpOwotICAgIHN0YXRpYyBQYXNz
UmVmUHRyPEZvcm1EYXRhPiBjcmVhdGUoY29uc3QgRm9ybURhdGFMaXN0JiwgY29uc3QgVGV4dEVu
Y29kaW5nJiwgRW5jb2RpbmdUeXBlID0gRm9ybVVSTEVuY29kZWQpOwotICAgIHN0YXRpYyBQYXNz
UmVmUHRyPEZvcm1EYXRhPiBjcmVhdGVNdWx0aVBhcnQoY29uc3QgRm9ybURhdGFMaXN0JiwgY29u
c3QgVGV4dEVuY29kaW5nJiwgRG9jdW1lbnQqKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMg
UmVmPEZvcm1EYXRhPiBjcmVhdGUoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPEZv
cm1EYXRhPiBjcmVhdGUoY29uc3Qgdm9pZCosIHNpemVfdCk7CisgICAgc3RhdGljIFJlZjxGb3Jt
RGF0YT4gY3JlYXRlKGNvbnN0IENTdHJpbmcmKTsKKyAgICBzdGF0aWMgUmVmPEZvcm1EYXRhPiBj
cmVhdGUoY29uc3QgVmVjdG9yPGNoYXI+Jik7CisgICAgc3RhdGljIFJlZjxGb3JtRGF0YT4gY3Jl
YXRlKGNvbnN0IEZvcm1EYXRhTGlzdCYsIGNvbnN0IFRleHRFbmNvZGluZyYsIEVuY29kaW5nVHlw
ZSA9IEZvcm1VUkxFbmNvZGVkKTsKKyAgICBzdGF0aWMgUmVmPEZvcm1EYXRhPiBjcmVhdGVNdWx0
aVBhcnQoY29uc3QgRm9ybURhdGFMaXN0JiwgY29uc3QgVGV4dEVuY29kaW5nJiwgRG9jdW1lbnQq
KTsKICAgICBXRUJDT1JFX0VYUE9SVCB+Rm9ybURhdGEoKTsKIAogICAgIC8vIEZJWE1FOiBCb3Ro
IHRoZXNlIGZ1bmN0aW9ucyBwZXJmb3JtIGEgZGVlcCBjb3B5IG9mIG1fZWxlbWVudHMsIGJ1dCBk
aWZmZXIgaW4gaGFuZGxpbmcgb2Ygb3RoZXIgZGF0YSBtZW1iZXJzLgogICAgIC8vIEhvdyBtdWNo
IG9mIHRoYXQgaXMgaW50ZW50aW9uYWw/IFdlIG5lZWQgYmV0dGVyIG5hbWVzIHRoYXQgZXhwbGFp
biB0aGUgZGlmZmVyZW5jZS4KLSAgICBQYXNzUmVmUHRyPEZvcm1EYXRhPiBjb3B5KCkgY29uc3Q7
Ci0gICAgUGFzc1JlZlB0cjxGb3JtRGF0YT4gZGVlcENvcHkoKSBjb25zdDsKKyAgICBSZWY8Rm9y
bURhdGE+IGNvcHkoKSBjb25zdDsKKyAgICBSZWY8Rm9ybURhdGE+IGRlZXBDb3B5KCkgY29uc3Q7
CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBFbmNvZGVyPgogICAgIHZvaWQgZW5jb2RlKEVuY29k
ZXImKSBjb25zdDsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBEZWNvZGVyPgotICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPEZvcm1EYXRhPiBkZWNvZGUoRGVjb2RlciYpOworICAgIHN0YXRpYyBSZWZQdHI8
Rm9ybURhdGE+IGRlY29kZShEZWNvZGVyJik7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFw
cGVuZERhdGEoY29uc3Qgdm9pZCogZGF0YSwgc2l6ZV90KTsKICAgICB2b2lkIGFwcGVuZEZpbGUo
Y29uc3QgU3RyaW5nJiBmaWxlUGF0aCwgYm9vbCBzaG91bGRHZW5lcmF0ZUZpbGUgPSBmYWxzZSk7
CkBAIC0yMjMsNyArMjIzLDcgQEAgcHVibGljOgogCiAgICAgLy8gUmVzb2x2ZSBhbGwgYmxvYiBy
ZWZlcmVuY2VzIHNvIHdlIG9ubHkgaGF2ZSBmaWxlIGFuZCBkYXRhLgogICAgIC8vIElmIHRoZSBG
b3JtRGF0YSBoYXMgbm8gYmxvYiByZWZlcmVuY2VzIHRvIHJlc29sdmUsIHRoaXMgaXMgcmV0dXJu
ZWQuCi0gICAgUGFzc1JlZlB0cjxGb3JtRGF0YT4gcmVzb2x2ZUJsb2JSZWZlcmVuY2VzKCk7Cisg
ICAgUmVmPEZvcm1EYXRhPiByZXNvbHZlQmxvYlJlZmVyZW5jZXMoKTsKIAogICAgIGJvb2wgaXNF
bXB0eSgpIGNvbnN0IHsgcmV0dXJuIG1fZWxlbWVudHMuaXNFbXB0eSgpOyB9CiAgICAgY29uc3Qg
VmVjdG9yPEZvcm1EYXRhRWxlbWVudD4mIGVsZW1lbnRzKCkgY29uc3QgeyByZXR1cm4gbV9lbGVt
ZW50czsgfQpAQCAtMjg5LDcgKzI4OSw3IEBAIHZvaWQgRm9ybURhdGE6OmVuY29kZShFbmNvZGVy
JiBlbmNvZGVyKSBjb25zdAogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBEZWNvZGVyPgotUGFzc1Jl
ZlB0cjxGb3JtRGF0YT4gRm9ybURhdGE6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorUmVmUHRy
PEZvcm1EYXRhPiBGb3JtRGF0YTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7CiAgICAgUmVm
UHRyPEZvcm1EYXRhPiBkYXRhID0gRm9ybURhdGE6OmNyZWF0ZSgpOwogCkBAIC0zMDUsNyArMzA1
LDcgQEAgUGFzc1JlZlB0cjxGb3JtRGF0YT4gRm9ybURhdGE6OmRlY29kZShEZWNvZGVyJiBkZWNv
ZGVyKQogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZGF0YS0+bV9pZGVudGlmaWVyKSkKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gZGF0YS5yZWxlYXNlKCk7CisgICAgcmV0
dXJuIGRhdGE7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuY3BwCmluZGV4
IGExMDMzOGE2MjUxMzEwM2I0NWI4Nzg3NTk5MGEzOTJjN2E4MjE4ODEuLjBhOWM5ZjA3NzE0MDYw
Y2M3Yjk1MWI5MDNlNjkxYmE0Nzk3OTNiZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmNwcApAQCAtNzYsNyArNzYs
NyBAQCBzdGQ6OnVuaXF1ZV9wdHI8UmVzb3VyY2VSZXF1ZXN0PiBSZXNvdXJjZVJlcXVlc3RCYXNl
OjphZG9wdChzdGQ6OnVuaXF1ZV9wdHI8Q3JvcwogICAgICAgICBBU1NFUlQoZW5jb2RpbmdDb3Vu
dCA8PSAzKTsKICAgICAgICAgcmVxdWVzdC0+c2V0UmVzcG9uc2VDb250ZW50RGlzcG9zaXRpb25F
bmNvZGluZ0ZhbGxiYWNrQXJyYXkoZW5jb2RpbmcxLCBlbmNvZGluZzIsIGVuY29kaW5nMyk7CiAg
ICAgfQotICAgIHJlcXVlc3QtPnNldEhUVFBCb2R5KGRhdGEtPmh0dHBCb2R5KTsKKyAgICByZXF1
ZXN0LT5zZXRIVFRQQm9keShkYXRhLT5odHRwQm9keS5jb3B5UmVmKCkpOwogICAgIHJlcXVlc3Qt
PnNldEFsbG93Q29va2llcyhkYXRhLT5hbGxvd0Nvb2tpZXMpOwogICAgIHJlcXVlc3QtPmRvUGxh
dGZvcm1BZG9wdChXVEZNb3ZlKGRhdGEpKTsKICAgICByZXR1cm4gcmVxdWVzdDsKQEAgLTQxMywx
MSArNDEzLDExIEBAIEZvcm1EYXRhKiBSZXNvdXJjZVJlcXVlc3RCYXNlOjpodHRwQm9keSgpIGNv
bnN0CiAgICAgcmV0dXJuIG1faHR0cEJvZHkuZ2V0KCk7CiB9CiAKLXZvaWQgUmVzb3VyY2VSZXF1
ZXN0QmFzZTo6c2V0SFRUUEJvZHkoUGFzc1JlZlB0cjxGb3JtRGF0YT4gaHR0cEJvZHkpCit2b2lk
IFJlc291cmNlUmVxdWVzdEJhc2U6OnNldEhUVFBCb2R5KFJlZlB0cjxGb3JtRGF0YT4mJiBodHRw
Qm9keSkKIHsKICAgICB1cGRhdGVSZXNvdXJjZVJlcXVlc3QoKTsKIAotICAgIG1faHR0cEJvZHkg
PSBodHRwQm9keTsKKyAgICBtX2h0dHBCb2R5ID0gV1RGTW92ZShodHRwQm9keSk7CiAKICAgICBt
X3Jlc291cmNlUmVxdWVzdEJvZHlVcGRhdGVkID0gdHJ1ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuaAppbmRleCBlMmFj
ZTZlODdhOWRmNDFhZmY1MmQwYzJjYmQxOWI3YWJmYmZjNmJiLi4yNTY1YzQ2NjhhMWFmMTI5NWU0
ZGEwM2JmNjJmM2YyMzZkMjY2ZTAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuaApAQCAtMTIxLDggKzEyMSw4IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRSZXNwb25z
ZUNvbnRlbnREaXNwb3NpdGlvbkVuY29kaW5nRmFsbGJhY2tBcnJheShjb25zdCBTdHJpbmcmIGVu
Y29kaW5nMSwgY29uc3QgU3RyaW5nJiBlbmNvZGluZzIgPSBTdHJpbmcoKSwgY29uc3QgU3RyaW5n
JiBlbmNvZGluZzMgPSBTdHJpbmcoKSk7CiAKICAgICAgICAgV0VCQ09SRV9FWFBPUlQgRm9ybURh
dGEqIGh0dHBCb2R5KCkgY29uc3Q7Ci0gICAgICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0SFRU
UEJvZHkoUGFzc1JlZlB0cjxGb3JtRGF0YT4gaHR0cEJvZHkpOwotICAgICAgICAKKyAgICAgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRIVFRQQm9keShSZWZQdHI8Rm9ybURhdGE+JiYpOworCiAg
ICAgICAgIGJvb2wgYWxsb3dDb29raWVzKCkgY29uc3Q7CiAgICAgICAgIHZvaWQgc2V0QWxsb3dD
b29raWVzKGJvb2wgYWxsb3dDb29raWVzKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jZi9Gb3JtRGF0YVN0cmVhbUNGTmV0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvRm9ybURhdGFTdHJlYW1DRk5ldC5jcHAKaW5kZXggZjM5
ODUxMzlhNDAxYmU2M2EwODZiMjZjZjFkZjFlY2VmZWY2MDI2ZS4uMDZkNzRlMzFkNDg5ZDZjZGEw
OTRkMGU1OGQzNDU1NTMzYjNkNGZhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jZi9Gb3JtRGF0YVN0cmVhbUNGTmV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0Zvcm1EYXRhU3RyZWFtQ0ZOZXQuY3BwCkBAIC0zNDgsMTAg
KzM0OCw4IEBAIHN0YXRpYyB2b2lkIGZvcm1FdmVudENhbGxiYWNrKENGUmVhZFN0cmVhbVJlZiBz
dHJlYW0sIENGU3RyZWFtRXZlbnRUeXBlIHR5cGUsIHZvCiAgICAgfQogfQogCi12b2lkIHNldEhU
VFBCb2R5KENGTXV0YWJsZVVSTFJlcXVlc3RSZWYgcmVxdWVzdCwgUGFzc1JlZlB0cjxGb3JtRGF0
YT4gcHJwRm9ybURhdGEpCit2b2lkIHNldEhUVFBCb2R5KENGTXV0YWJsZVVSTFJlcXVlc3RSZWYg
cmVxdWVzdCwgRm9ybURhdGEqIGZvcm1EYXRhKQogewotICAgIFJlZlB0cjxGb3JtRGF0YT4gZm9y
bURhdGEgPSBwcnBGb3JtRGF0YTsKLQogICAgIGlmICghZm9ybURhdGEpCiAgICAgICAgIHJldHVy
bjsKICAgICAgICAgCkBAIC0zNjcsMTMgKzM2NSwxNCBAQCB2b2lkIHNldEhUVFBCb2R5KENGTXV0
YWJsZVVSTFJlcXVlc3RSZWYgcmVxdWVzdCwgUGFzc1JlZlB0cjxGb3JtRGF0YT4gcHJwRm9ybURh
dAogICAgICAgICB9CiAgICAgfQogCi0gICAgZm9ybURhdGEgPSBmb3JtRGF0YS0+cmVzb2x2ZUJs
b2JSZWZlcmVuY2VzKCk7Ci0gICAgY291bnQgPSBmb3JtRGF0YS0+ZWxlbWVudHMoKS5zaXplKCk7
CisKKyAgICBSZWY8Rm9ybURhdGE+IG5ld0Zvcm1EYXRhID0gZm9ybURhdGEtPnJlc29sdmVCbG9i
UmVmZXJlbmNlcygpOworICAgIGNvdW50ID0gbmV3Rm9ybURhdGEtPmVsZW1lbnRzKCkuc2l6ZSgp
OwogCiAgICAgLy8gUHJlY29tcHV0ZSB0aGUgY29udGVudCBsZW5ndGggc28gTlNVUkxDb25uZWN0
aW9uIGRvZXNuJ3QgdXNlIGNodW5rZWQgbW9kZS4KICAgICB1bnNpZ25lZCBsb25nIGxvbmcgbGVu
Z3RoID0gMDsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNvdW50OyArK2kpIHsKLSAgICAg
ICAgY29uc3QgRm9ybURhdGFFbGVtZW50JiBlbGVtZW50ID0gZm9ybURhdGEtPmVsZW1lbnRzKClb
aV07CisgICAgICAgIGNvbnN0IEZvcm1EYXRhRWxlbWVudCYgZWxlbWVudCA9IG5ld0Zvcm1EYXRh
LT5lbGVtZW50cygpW2ldOwogICAgICAgICBpZiAoZWxlbWVudC5tX3R5cGUgPT0gRm9ybURhdGFF
bGVtZW50OjpUeXBlOjpEYXRhKQogICAgICAgICAgICAgbGVuZ3RoICs9IGVsZW1lbnQubV9kYXRh
LnNpemUoKTsKICAgICAgICAgZWxzZSB7CkBAIC0zOTEsNyArMzkwLDcgQEAgdm9pZCBzZXRIVFRQ
Qm9keShDRk11dGFibGVVUkxSZXF1ZXN0UmVmIHJlcXVlc3QsIFBhc3NSZWZQdHI8Rm9ybURhdGE+
IHBycEZvcm1EYXQKICAgICAvLyBDcmVhdGUgYW5kIHNldCB0aGUgc3RyZWFtLgogCiAgICAgLy8g
UGFzcyB0aGUgbGVuZ3RoIGFsb25nIHdpdGggdGhlIGZvcm1EYXRhIHNvIGl0IGRvZXMgbm90IGhh
dmUgdG8gYmUgcmVjb21wdXRlZC4KLSAgICBGb3JtQ3JlYXRpb25Db250ZXh0IGZvcm1Db250ZXh0
ID0geyBmb3JtRGF0YS5yZWxlYXNlKCksIGxlbmd0aCB9OworICAgIEZvcm1DcmVhdGlvbkNvbnRl
eHQgZm9ybUNvbnRleHQgPSB7bmV3Rm9ybURhdGEsIGxlbmd0aH07CiAKICAgICBDRlJlYWRTdHJl
YW1DYWxsQmFja3NWMSBjYWxsQmFja3MgPSB7IDEsIGZvcm1DcmVhdGUsIGZvcm1GaW5hbGl6ZSwg
MCwgZm9ybU9wZW4sIDAsIGZvcm1SZWFkLCAwLCBmb3JtQ2FuUmVhZCwgZm9ybUNsb3NlLCBmb3Jt
Q29weVByb3BlcnR5LCAwLCAwLCBmb3JtU2NoZWR1bGUsIGZvcm1VbnNjaGVkdWxlCiAgICAgfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvRm9ybURhdGFT
dHJlYW1DRk5ldC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Gb3JtRGF0
YVN0cmVhbUNGTmV0LmgKaW5kZXggODdhODRlNTQ1ODc1MWIyMGFmYjA1YTcxY2E2OTljYTkyYTI0
ODc0MS4uZjlhNmQ4NzU4ZjM0OTJhMmMxYWZmZThkMDRkYTFiNTU4NjViMWEyNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Gb3JtRGF0YVN0cmVhbUNGTmV0
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Gb3JtRGF0YVN0cmVh
bUNGTmV0LmgKQEAgLTM5LDcgKzM5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBG
b3JtRGF0YTsKIAotdm9pZCBzZXRIVFRQQm9keShDRk11dGFibGVVUkxSZXF1ZXN0UmVmLCBQYXNz
UmVmUHRyPEZvcm1EYXRhPik7Cit2b2lkIHNldEhUVFBCb2R5KENGTXV0YWJsZVVSTFJlcXVlc3RS
ZWYsIEZvcm1EYXRhKik7CiAKIEZvcm1EYXRhKiBodHRwQm9keUZyb21TdHJlYW0oQ0ZSZWFkU3Ry
ZWFtUmVmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
Zi9SZXNvdXJjZVJlcXVlc3RDRk5ldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2NmL1Jlc291cmNlUmVxdWVzdENGTmV0LmNwcAppbmRleCAxOTQ1NTI1ZDhhMGMzZDVkMGZi
MWFjODJmMzNkYjMxNzNlMDIyMjcxLi5hYzg3YjJhMzg0MjcyZGQzYWU3NTgyZWMwZDhjNGQ5M2Vj
ZDdjNWY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jl
c291cmNlUmVxdWVzdENGTmV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2NmL1Jlc291cmNlUmVxdWVzdENGTmV0LmNwcApAQCAtMjA0LDcgKzIwNCw3IEBAIHZvaWQg
UmVzb3VyY2VSZXF1ZXN0Ojpkb1VwZGF0ZVBsYXRmb3JtSFRUUEJvZHkoKQogICAgIH0gZWxzZQog
ICAgICAgICBjZlJlcXVlc3QgPSBDRlVSTFJlcXVlc3RDcmVhdGVNdXRhYmxlKDAsIHVybC5nZXQo
KSwgKENGVVJMUmVxdWVzdENhY2hlUG9saWN5KWNhY2hlUG9saWN5KCksIHRpbWVvdXRJbnRlcnZh
bCgpLCBmaXJzdFBhcnR5Rm9yQ29va2llcy5nZXQoKSk7CiAKLSAgICBSZWZQdHI8Rm9ybURhdGE+
IGZvcm1EYXRhID0gaHR0cEJvZHkoKTsKKyAgICBGb3JtRGF0YSogZm9ybURhdGEgPSBodHRwQm9k
eSgpOwogICAgIGlmIChmb3JtRGF0YSAmJiAhZm9ybURhdGEtPmlzRW1wdHkoKSkKICAgICAgICAg
V2ViQ29yZTo6c2V0SFRUUEJvZHkoY2ZSZXF1ZXN0LCBmb3JtRGF0YSk7CiAKQEAgLTMzNSw3ICsz
MzUsNyBAQCB2b2lkIFJlc291cmNlUmVxdWVzdDo6dXBkYXRlRnJvbURlbGVnYXRlUHJlc2Vydmlu
Z09sZFByb3BlcnRpZXMoY29uc3QgUmVzb3VyY2VSZQogICAgICp0aGlzID0gZGVsZWdhdGVQcm92
aWRlZFJlcXVlc3Q7CiAKICAgICBzZXRQcmlvcml0eShvbGRQcmlvcml0eSk7Ci0gICAgc2V0SFRU
UEJvZHkob2xkSFRUUEJvZHkucmVsZWFzZSgpKTsKKyAgICBzZXRIVFRQQm9keShXVEZNb3ZlKG9s
ZEhUVFBCb2R5KSk7CiAgICAgc2V0SGlkZGVuRnJvbUluc3BlY3Rvcihpc0hpZGRlbkZyb21JbnNw
ZWN0b3IpOwogICAgIHNldFJlcXVlc3RlcihvbGRSZXF1ZXN0ZXIpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SZXNvdXJjZVJlcXVlc3RDb2Nv
YS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmVzb3VyY2VSZXF1
ZXN0Q29jb2EubW0KaW5kZXggZmNmNDkzN2MzNjBiMjJhZjhlMWJmYzlhNDUzMGJiOTFjMTcxYmI1
Yy4uNjcyYjFiOWIwNDU2NmUzYzY2OGFhMzJjMmVmYzFhMzg1NTU2YTQ2OSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SZXNvdXJjZVJlcXVlc3RDb2Nv
YS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Jlc291cmNl
UmVxdWVzdENvY29hLm1tCkBAIC0xOTAsNyArMTkwLDcgQEAgdm9pZCBSZXNvdXJjZVJlcXVlc3Q6
OmRvVXBkYXRlUGxhdGZvcm1IVFRQQm9keSgpCiAgICAgZWxzZQogICAgICAgICBuc1JlcXVlc3Qg
PSBbW05TTXV0YWJsZVVSTFJlcXVlc3QgYWxsb2NdIGluaXRXaXRoVVJMOnVybCgpXTsKIAotICAg
IFJlZlB0cjxGb3JtRGF0YT4gZm9ybURhdGEgPSBodHRwQm9keSgpOworICAgIEZvcm1EYXRhKiBm
b3JtRGF0YSA9IGh0dHBCb2R5KCk7CiAgICAgaWYgKGZvcm1EYXRhICYmICFmb3JtRGF0YS0+aXNF
bXB0eSgpKQogICAgICAgICBXZWJDb3JlOjpzZXRIVFRQQm9keShuc1JlcXVlc3QsIGZvcm1EYXRh
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jl
c291cmNlSGFuZGxlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvUmVzb3VyY2VIYW5kbGVNYW5hZ2VyLmNwcAppbmRleCBjZDk3N2JiM2MwN2ZhMWE3ZTZk
YThiYzU2MmFlNTUzMzY3ZGE3NzI3Li43NzQyNmZhODg0NWI0NTEwOWNmZDViMTQ2MzI3MzRjMmZm
Nzg2ZjQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
UmVzb3VyY2VIYW5kbGVNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVNYW5hZ2VyLmNwcApAQCAtNzYzLDkgKzc2MywxMCBA
QCBzdGF0aWMgaW5saW5lIHNpemVfdCBnZXRGb3JtRWxlbWVudHNDb3VudChSZXNvdXJjZUhhbmRs
ZSogam9iKQogCiAgICAgLy8gUmVzb2x2ZSB0aGUgYmxvYiBlbGVtZW50cyBzbyB0aGUgZm9ybURh
dGEgY2FuIGNvcnJlY3RseSByZXBvcnQgaXQncyBzaXplLgogICAgIGZvcm1EYXRhID0gZm9ybURh
dGEtPnJlc29sdmVCbG9iUmVmZXJlbmNlcygpOwotICAgIGpvYi0+Zmlyc3RSZXF1ZXN0KCkuc2V0
SFRUUEJvZHkoZm9ybURhdGEpOworICAgIHNpemVfdCBzaXplID0gZm9ybURhdGEtPmVsZW1lbnRz
KCkuc2l6ZSgpOworICAgIGpvYi0+Zmlyc3RSZXF1ZXN0KCkuc2V0SFRUUEJvZHkoV1RGTW92ZShm
b3JtRGF0YSkpOwogCi0gICAgcmV0dXJuIGZvcm1EYXRhLT5lbGVtZW50cygpLnNpemUoKTsKKyAg
ICByZXR1cm4gc2l6ZTsKIH0KIAogc3RhdGljIHZvaWQgc2V0dXBGb3JtRGF0YShSZXNvdXJjZUhh
bmRsZSogam9iLCBDVVJMb3B0aW9uIHNpemVPcHRpb24sIHN0cnVjdCBjdXJsX3NsaXN0KiogaGVh
ZGVycykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0Zv
cm1EYXRhU3RyZWFtTWFjLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9G
b3JtRGF0YVN0cmVhbU1hYy5oCmluZGV4IGRiODFjNjY4N2M0MjJlNWVjYmMzNjkwZTIzNDVhZjgy
MjRhZDA2YzYuLmI4NWRkY2IxNWVkOGYwOGQ1OWZhYzQ2ZWRmZmJlNGUxODI5NDI0NTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0Zvcm1EYXRhU3RyZWFt
TWFjLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvRm9ybURhdGFT
dHJlYW1NYWMuaApAQCAtNDIsNyArNDIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICBj
bGFzcyBGb3JtRGF0YTsKIAotICAgIHZvaWQgc2V0SFRUUEJvZHkoTlNNdXRhYmxlVVJMUmVxdWVz
dCAqLCBQYXNzUmVmUHRyPEZvcm1EYXRhPik7CisgICAgdm9pZCBzZXRIVFRQQm9keShOU011dGFi
bGVVUkxSZXF1ZXN0ICosIEZvcm1EYXRhKik7CiAgICAgRm9ybURhdGEqIGh0dHBCb2R5RnJvbVN0
cmVhbShOU0lucHV0U3RyZWFtICopOwogCiAgICAgQ0ZTdHJpbmdSZWYgZm9ybURhdGFTdHJlYW1M
ZW5ndGhQcm9wZXJ0eU5hbWUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvbWFjL0Zvcm1EYXRhU3RyZWFtTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9tYWMvRm9ybURhdGFTdHJlYW1NYWMubW0KaW5kZXggYjU3MzRmOThlZGZiZjEx
MzVlMTdkNGI3ZWJjMjljYzU1ZmUwNDM1MS4uZjg0ZDQ3OTg2MGM3ZTg3MmEzY2ZmZDRiMGMxYmRj
NjI2OTViMzc5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9t
YWMvRm9ybURhdGFTdHJlYW1NYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9tYWMvRm9ybURhdGFTdHJlYW1NYWMubW0KQEAgLTMzLDcgKzMzLDYgQEAKIAogI2ltcG9y
dCAiRm9ybURhdGEuaCIKICNpbXBvcnQgIkZvcm1EYXRhU3RyZWFtQ0ZOZXQuaCIKLSNpbXBvcnQg
PHd0Zi9QYXNzUmVmUHRyLmg+CiAKIEBpbnRlcmZhY2UgTlNVUkxSZXF1ZXN0IChXZWJOU1VSTFJl
cXVlc3REZXRhaWxzKQogLSAoQ0ZVUkxSZXF1ZXN0UmVmKV9DRlVSTFJlcXVlc3Q7CkBAIC00MSw5
ICs0MCw5IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdm9pZCBzZXRIVFRQQm9keShOU011
dGFibGVVUkxSZXF1ZXN0ICpyZXF1ZXN0LCBQYXNzUmVmUHRyPEZvcm1EYXRhPiBwcnBGb3JtRGF0
YSkKK3ZvaWQgc2V0SFRUUEJvZHkoTlNNdXRhYmxlVVJMUmVxdWVzdCAqcmVxdWVzdCwgRm9ybURh
dGEqIGZvcm1EYXRhKQogewotICAgIHNldEhUVFBCb2R5KGNvbnN0X2Nhc3Q8Q0ZNdXRhYmxlVVJM
UmVxdWVzdFJlZj4oW3JlcXVlc3QgX0NGVVJMUmVxdWVzdF0pLCBwcnBGb3JtRGF0YSk7CisgICAg
c2V0SFRUUEJvZHkoY29uc3RfY2FzdDxDRk11dGFibGVVUkxSZXF1ZXN0UmVmPihbcmVxdWVzdCBf
Q0ZVUkxSZXF1ZXN0XSksIGZvcm1EYXRhKTsKIH0KIAogRm9ybURhdGEqIGh0dHBCb2R5RnJvbVN0
cmVhbShOU0lucHV0U3RyZWFtICpzdHJlYW0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VIYW5kbGVTb3VwLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUhhbmRsZVNvdXAuY3BwCmluZGV4IGI2
N2M5MGRkOWI0YzI5N2MwODJlMTIwNThhMTgxOTcwMmI5N2ExN2UuLjY1NGU2YjMyNDg0Njg1ZWQ0
NDc3MDhjYTQwY2Y2ZjVkZTU0MzVlNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUhhbmRsZVNvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUhhbmRsZVNvdXAuY3BwCkBAIC01MDYs
NyArNTA2LDcgQEAgc3RhdGljIHZvaWQgZG9SZWRpcmVjdChSZXNvdXJjZUhhbmRsZSogaGFuZGxl
KQogICAgICAgICAvLyBvciBpZiBjdXJyZW50IHJlZGlyZWN0aW9uIHNheXMgc28KICAgICAgICAg
aWYgKG1lc3NhZ2UtPm1ldGhvZCA9PSBTT1VQX01FVEhPRF9HRVQgfHwgc2hvdWxkUmVkaXJlY3RB
c0dFVChtZXNzYWdlLCBuZXdVUkwsIGNyb3NzT3JpZ2luKSkgewogICAgICAgICAgICAgbmV3UmVx
dWVzdC5zZXRIVFRQTWV0aG9kKCJHRVQiKTsKLSAgICAgICAgICAgIG5ld1JlcXVlc3Quc2V0SFRU
UEJvZHkoMCk7CisgICAgICAgICAgICBuZXdSZXF1ZXN0LnNldEhUVFBCb2R5KG51bGxwdHIpOwog
ICAgICAgICAgICAgbmV3UmVxdWVzdC5jbGVhckhUVFBDb250ZW50VHlwZSgpOwogICAgICAgICB9
CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKaW5kZXggMjA5NTg5Mzkz
OWI3NDUwY2Y5ZGRlNGM0ZTU4ZDRiYzE2YWNiNDZkNi4uMzVkYjI1MWVmZDhiZjJjNTNlZmRlODU3
ZTRhNzNmZDNmODQ0YWM2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBS
ZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCkBA
IC03NDMsNyArNzQzLDcgQEAgdm9pZCBYTUxIdHRwUmVxdWVzdDo6Y3JlYXRlUmVxdWVzdChFeGNl
cHRpb25Db2RlJiBlYykKICAgICBpZiAobV9yZXF1ZXN0RW50aXR5Qm9keSkgewogICAgICAgICBB
U1NFUlQobV9tZXRob2QgIT0gIkdFVCIpOwogICAgICAgICBBU1NFUlQobV9tZXRob2QgIT0gIkhF
QUQiKTsKLSAgICAgICAgcmVxdWVzdC5zZXRIVFRQQm9keShtX3JlcXVlc3RFbnRpdHlCb2R5LnJl
bGVhc2UoKSk7CisgICAgICAgIHJlcXVlc3Quc2V0SFRUUEJvZHkoV1RGTW92ZShtX3JlcXVlc3RF
bnRpdHlCb2R5KSk7CiAgICAgfQogCiAgICAgaWYgKCFtX3JlcXVlc3RIZWFkZXJzLmlzRW1wdHko
KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYk11dGFibGVVUkxSZXF1ZXN0LmNw
cCBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYk11dGFibGVVUkxSZXF1ZXN0LmNwcAppbmRleCA0Y2Ew
MjZhZjZmNzI4MDFlZDA2ZjQ0YjA3OGE2NmM5MWI1NzhmZmZkLi4xYTE0YTA5NmYyMzU3Y2E3ZjUy
YTNhMmIxMmVmNmVlNWE1OWQ2MzQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJN
dXRhYmxlVVJMUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC93aW4vV2ViTXV0YWJsZVVS
TFJlcXVlc3QuY3BwCkBAIC0zMDcsNyArMzA3LDcgQEAgSFJFU1VMVCBXZWJNdXRhYmxlVVJMUmVx
dWVzdDo6c2V0SFRUUEJvZHkoX0luX29wdF8gSVN0cmVhbSogZGF0YSkKICAgICBpZiAoRkFJTEVE
KGRhdGEtPlJlYWQoZm9ybURhdGEsIHN0YXQuY2JTaXplLkxvd1BhcnQsICZieXRlc1JlYWQpKSkK
ICAgICAgICAgcmV0dXJuIEVfRkFJTDsKIAotICAgIG1fcmVxdWVzdC5zZXRIVFRQQm9keShodHRw
Qm9keSk7CisgICAgbV9yZXF1ZXN0LnNldEhUVFBCb2R5KFdURk1vdmUoaHR0cEJvZHkpKTsKICAg
ICByZXR1cm4gU19PSzsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuY3BwIGIvU291cmNlL1dlYktpdDIv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuY3BwCmluZGV4IGY0
YzU4YTVlNGM2M2E5NTIyYjY0Yjk4ZmI4MGM4NzAxYTI3MDZiY2QuLmI1NmIyZjdkOGQ5M2IwZmY0
MWRjZjg0NDVkZWQxNjNlZWRmMjcxZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL05ldHdv
cmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5jcHAK
QEAgLTEyMSw3ICsxMjEsNyBAQCBib29sIE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzOjpk
ZWNvZGUoSVBDOjpBcmd1bWVudERlY29kZXImIGRlY29kZXIsIE5ldHdvcgogICAgICAgICBSZWZQ
dHI8Rm9ybURhdGE+IGZvcm1EYXRhID0gRm9ybURhdGE6OmRlY29kZShkZWNvZGVyKTsKICAgICAg
ICAgaWYgKCFmb3JtRGF0YSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgcmVz
dWx0LnJlcXVlc3Quc2V0SFRUUEJvZHkoZm9ybURhdGEucmVsZWFzZSgpKTsKKyAgICAgICAgcmVz
dWx0LnJlcXVlc3Quc2V0SFRUUEJvZHkoV1RGTW92ZShmb3JtRGF0YSkpOwogCiAgICAgICAgIFNh
bmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5IHJlcXVlc3RCb2R5U2FuZGJveEV4dGVuc2lvbkhh
bmRsZXM7CiAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVxdWVzdEJvZHlTYW5kYm94RXh0
ZW5zaW9uSGFuZGxlcykpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>269560</attachid>
            <date>2016-01-22 01:57:05 -0800</date>
            <delta_ts>2016-01-22 05:52:50 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-153229-20160122105636.patch</filename>
            <type>text/plain</type>
            <size>28714</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk1NDQ2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzg4NjY2MGRjNGIxNTNk
MTAzZjcxYWI5ZDRkY2QzZDUwOGU4MDBmNy4uMWFmYTM4OTRkN2U5NGUxZTlkMTc2YjZiNmRhZmRj
ZWQ4ODVkOGVkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU4IEBACisyMDE2LTAxLTIyICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uLmZhYmxldEBjcmYuY2Fub24uZnI+CisKKyAgICAgICAgUmVtb3Zl
IFBhc3NSZWZQdHIgZnJvbSBSZXNvdXJjZVJlcXVlc3QgYW5kIEZvcm1EYXRhCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTMyMjkKKworICAgICAgICBS
ZXZpZXdlZCBieSBDaHJpcyBEdW1lei4KKworICAgICAgICBDb3ZlcmVkIGJ5IGV4aXN0aW5nIHRl
c3RzLgorCisgICAgICAgIE1ha2luZyBSZXNvdXJjZVJlcXVlc3Q6OnNldEhUVFBCb2R5IHRha2Ug
YSBSZWZQdHI8Rm9ybURhdGE+JiYuCisgICAgICAgIE1vdmluZyBGb3JtRGF0YSBmcm9tIFBhc3NS
ZWZQdHIgdG8gUmVmUHRyLgorCisgICAgICAgICogaHRtbC9wYXJzZXIvWFNTQXVkaXRvckRlbGVn
YXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhTU0F1ZGl0b3JEZWxlZ2F0ZTo6ZGlkQmxvY2tT
Y3JpcHQpOgorICAgICAgICAqIGxvYWRlci9Gb3JtU3VibWlzc2lvbi5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpGb3JtU3VibWlzc2lvbjo6cG9wdWxhdGVGcmFtZUxvYWRSZXF1ZXN0KToKKyAgICAg
ICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2Fk
ZXI6OmxvYWRQb3N0UmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6bG9h
ZERpZmZlcmVudERvY3VtZW50SXRlbSk6CisgICAgICAgICogbG9hZGVyL1BpbmdMb2FkZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UGluZ0xvYWRlcjo6c2VuZFZpb2xhdGlvblJlcG9ydCk6Cisg
ICAgICAgICogbG9hZGVyL1BpbmdMb2FkZXIuaDoKKyAgICAgICAgKiBwYWdlL0NvbnRlbnRTZWN1
cml0eVBvbGljeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3k6
OnJlcG9ydFZpb2xhdGlvbik6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpGb3JtRGF0YTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNv
cmU6OkZvcm1EYXRhOjpjcmVhdGVNdWx0aVBhcnQpOgorICAgICAgICAoV2ViQ29yZTo6Rm9ybURh
dGE6OmNvcHkpOgorICAgICAgICAoV2ViQ29yZTo6Rm9ybURhdGE6OmRlZXBDb3B5KToKKyAgICAg
ICAgKFdlYkNvcmU6OkZvcm1EYXRhOjpyZXNvbHZlQmxvYlJlZmVyZW5jZXMpOgorICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZvcm1EYXRh
OjpkZWNvZGUpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFz
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3RCYXNlOjphZG9wdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3RCYXNlOjpzZXRIVFRQQm9keSk6CisgICAg
ICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmg6CisgICAgICAgIChX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3RCYXNlOjpzZXRIVFRQQm9keSk6CisgICAgICAgICogcGxh
dGZvcm0vbmV0d29yay9jZi9Gb3JtRGF0YVN0cmVhbUNGTmV0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OnNldEhUVFBCb2R5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL0Zvcm1EYXRh
U3RyZWFtQ0ZOZXQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVx
dWVzdENGTmV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdDo6ZG9VcGRh
dGVQbGF0Zm9ybUhUVFBCb2R5KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdDo6
dXBkYXRlRnJvbURlbGVnYXRlUHJlc2VydmluZ09sZFByb3BlcnRpZXMpOgorICAgICAgICAqIHBs
YXRmb3JtL25ldHdvcmsvY29jb2EvUmVzb3VyY2VSZXF1ZXN0Q29jb2EubW06CisgICAgICAgIChX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Q6OmRvVXBkYXRlUGxhdGZvcm1IVFRQQm9keSk6CisgICAg
ICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxlTWFuYWdlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpnZXRGb3JtRWxlbWVudHNDb3VudCk6CisgICAgICAgICogcGxhdGZv
cm0vbmV0d29yay9tYWMvRm9ybURhdGFTdHJlYW1NYWMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9u
ZXR3b3JrL21hYy9Gb3JtRGF0YVN0cmVhbU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OnNldEhU
VFBCb2R5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VIYW5kbGVT
b3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmRvUmVkaXJlY3QpOgorICAgICAgICAqIHhtbC9Y
TUxIdHRwUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6Y3Jl
YXRlUmVxdWVzdCk6CisKIDIwMTYtMDEtMjEgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBh
cHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTiAocjE2ODI0NCk6IENvbnRlbnQgaW4gaG9y
aXpvbnRhbC1idCBwYWdlIGlzIG9mZnNldCBzdWNoIHRoYXQgb25seSB0aGUgZW5kIGlzIHZpZXdh
YmxlIGFuZCB0aGVyZSBpcyBhIHdoaXRlIGdhcCBhdCB0aGUgdG9wCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKaW5k
ZXggZDRmN2Q1M2VmZjI1NDhhZGE1MWQ5MzBkZGVhZmYxMjNjMDg1OGI4MC4uNjhjYWVkM2JmMmY1
NTE2MjE4MjRlNmI3YmE5ODgyNTVkZTViMTY4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93
aW4vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDEzIEBACisyMDE2LTAxLTIyICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uLmZhYmxldEBjcmYuY2Fu
b24uZnI+CisKKyAgICAgICAgUmVtb3ZlIFBhc3NSZWZQdHIgZnJvbSBSZXNvdXJjZVJlcXVlc3Qg
YW5kIEZvcm1EYXRhCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNTMyMjkKKworICAgICAgICBSZXZpZXdlZCBieSBDaHJpcyBEdW1lei4KKworICAgICAg
ICAqIFdlYk11dGFibGVVUkxSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYk11dGFibGVVUkxSZXF1
ZXN0OjpzZXRIVFRQQm9keSk6CisKIDIwMTYtMDEtMTUgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZy
YXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0Nv
bnZleFBvbHlnb24oKSBhbmQgR3JhcGhpY3NDb250ZXh0OjpjbGlwQ29udmV4UG9seWdvbigpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFu
Z2VMb2cKaW5kZXggZDk5ZTlmMjlmYjI3MzIwOTIxMjMwY2ExNzgyMTVhYzhjMTU1YmZlZC4uYzkz
MjU4ZTFjZjhjMjJlNjBhZjA2ZjcwNTQzNmVjMDIxNWZlMGVmYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE1IEBACisyMDE2LTAxLTIyICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uLmZhYmxldEBjcmYu
Y2Fub24uZnI+CisKKyAgICAgICAgUmVtb3ZlIFBhc3NSZWZQdHIgZnJvbSBSZXNvdXJjZVJlcXVl
c3QgYW5kIEZvcm1EYXRhCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNTMyMjkKKworICAgICAgICBSZXZpZXdlZCBieSBDaHJpcyBEdW1lei4KKworICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnM6OmRlY29kZSk6
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnkuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OkVudHJ5OjpFbnRyeSk6CisKIDIwMTYtMDEt
MjEgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgUkVH
UkVTU0lPTiAocjE2ODI0NCk6IENvbnRlbnQgaW4gaG9yaXpvbnRhbC1idCBwYWdlIGlzIG9mZnNl
dCBzdWNoIHRoYXQgb25seSB0aGUgZW5kIGlzIHZpZXdhYmxlIGFuZCB0aGVyZSBpcyBhIHdoaXRl
IGdhcCBhdCB0aGUgdG9wCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRm9ybVN1
Ym1pc3Npb24uY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zvcm1TdWJtaXNzaW9uLmNwcApp
bmRleCAwMTc4NmJhZDEzYTQyNDZmZDRiYzQxNGU0Nzc2YWMyM2IwZjY0YmQyLi5hNGE0YjM3NWFl
YTkxODJiYWY5MTlhMDI3MzA2NmU5MWUzNGY2NjBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRm9ybVN1Ym1pc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9G
b3JtU3VibWlzc2lvbi5jcHAKQEAgLTI1OCw3ICsyNTgsNyBAQCB2b2lkIEZvcm1TdWJtaXNzaW9u
Ojpwb3B1bGF0ZUZyYW1lTG9hZFJlcXVlc3QoRnJhbWVMb2FkUmVxdWVzdCYgZnJhbWVSZXF1ZXN0
KQogCiAgICAgaWYgKG1fbWV0aG9kID09IEZvcm1TdWJtaXNzaW9uOjpQb3N0TWV0aG9kKSB7CiAg
ICAgICAgIGZyYW1lUmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKS5zZXRIVFRQTWV0aG9kKCJQT1NU
Iik7Ci0gICAgICAgIGZyYW1lUmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKS5zZXRIVFRQQm9keSht
X2Zvcm1EYXRhKTsKKyAgICAgICAgZnJhbWVSZXF1ZXN0LnJlc291cmNlUmVxdWVzdCgpLnNldEhU
VFBCb2R5KG1fZm9ybURhdGEuY29weVJlZigpKTsKIAogICAgICAgICAvLyBjb25zdHJ1Y3Qgc29t
ZSB1c2VyIGhlYWRlcnMgaWYgbmVjZXNzYXJ5CiAgICAgICAgIGlmIChtX2JvdW5kYXJ5LmlzRW1w
dHkoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCmluZGV4IDBmZjViMjk5ZDhj
NjJjMDVjMDAxY2QxYzI2ZmY2ZTgxZDhhNDg3YzEuLjAyOTc3ZjYyNDVkNTRmM2E3MjRkNjlkMjA4
MzQwODM3OTYxNTg0YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxv
YWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcApAQCAt
MjY1NCw3ICsyNjU0LDYgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZFBvc3RSZXF1ZXN0KGNvbnN0
IEZyYW1lTG9hZFJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFN0cmluZyYKIAogICAgIGNvbnN0IFJl
c291cmNlUmVxdWVzdCYgaW5SZXF1ZXN0ID0gcmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKTsKICAg
ICBjb25zdCBVUkwmIHVybCA9IGluUmVxdWVzdC51cmwoKTsKLSAgICBSZWZQdHI8Rm9ybURhdGE+
IGZvcm1EYXRhID0gaW5SZXF1ZXN0Lmh0dHBCb2R5KCk7CiAgICAgY29uc3QgU3RyaW5nJiBjb250
ZW50VHlwZSA9IGluUmVxdWVzdC5odHRwQ29udGVudFR5cGUoKTsKICAgICBTdHJpbmcgb3JpZ2lu
ID0gaW5SZXF1ZXN0Lmh0dHBPcmlnaW4oKTsKIApAQCAtMjY2NCw3ICsyNjYzLDcgQEAgdm9pZCBG
cmFtZUxvYWRlcjo6bG9hZFBvc3RSZXF1ZXN0KGNvbnN0IEZyYW1lTG9hZFJlcXVlc3QmIHJlcXVl
c3QsIGNvbnN0IFN0cmluZyYKICAgICAgICAgd29ya2luZ1Jlc291cmNlUmVxdWVzdC5zZXRIVFRQ
UmVmZXJyZXIocmVmZXJyZXIpOwogICAgIHdvcmtpbmdSZXNvdXJjZVJlcXVlc3Quc2V0SFRUUE9y
aWdpbihvcmlnaW4pOwogICAgIHdvcmtpbmdSZXNvdXJjZVJlcXVlc3Quc2V0SFRUUE1ldGhvZCgi
UE9TVCIpOwotICAgIHdvcmtpbmdSZXNvdXJjZVJlcXVlc3Quc2V0SFRUUEJvZHkoZm9ybURhdGEp
OworICAgIHdvcmtpbmdSZXNvdXJjZVJlcXVlc3Quc2V0SFRUUEJvZHkoaW5SZXF1ZXN0Lmh0dHBC
b2R5KCkpOwogICAgIHdvcmtpbmdSZXNvdXJjZVJlcXVlc3Quc2V0SFRUUENvbnRlbnRUeXBlKGNv
bnRlbnRUeXBlKTsKICAgICBhZGRFeHRyYUZpZWxkc1RvUmVxdWVzdCh3b3JraW5nUmVzb3VyY2VS
ZXF1ZXN0LCBsb2FkVHlwZSwgdHJ1ZSk7CiAKQEAgLTMyOTksNyArMzI5OCw3IEBAIHZvaWQgRnJh
bWVMb2FkZXI6OmxvYWREaWZmZXJlbnREb2N1bWVudEl0ZW0oSGlzdG9yeUl0ZW0mIGl0ZW0sIEZy
YW1lTG9hZFR5cGUgbG9hCiAgICAgICAgIGZvcm1EYXRhLT5nZW5lcmF0ZUZpbGVzKG1fZnJhbWUu
ZG9jdW1lbnQoKSk7CiAKICAgICAgICAgcmVxdWVzdC5zZXRIVFRQTWV0aG9kKCJQT1NUIik7Ci0g
ICAgICAgIHJlcXVlc3Quc2V0SFRUUEJvZHkoZm9ybURhdGEpOworICAgICAgICByZXF1ZXN0LnNl
dEhUVFBCb2R5KFdURk1vdmUoZm9ybURhdGEpKTsKICAgICAgICAgcmVxdWVzdC5zZXRIVFRQQ29u
dGVudFR5cGUoaXRlbS5mb3JtQ29udGVudFR5cGUoKSk7CiAgICAgICAgIFJlZlB0cjxTZWN1cml0
eU9yaWdpbj4gc2VjdXJpdHlPcmlnaW4gPSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbVN0cmlu
ZyhpdGVtLnJlZmVycmVyKCkpOwogICAgICAgICBhZGRIVFRQT3JpZ2luSWZOZWVkZWQocmVxdWVz
dCwgc2VjdXJpdHlPcmlnaW4tPnRvU3RyaW5nKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL1BpbmdMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1BpbmdMb2Fk
ZXIuY3BwCmluZGV4IGM4MGIyZTQwNTVlMGVmMWQyMjRkNzlkNDcyZTFiM2JlMzUwZjhkYTkuLjdm
OGRkNGU0YmRjNzFiZDkxNjA1N2E3NzNlZTMyZjJkMzYwMzY4YWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9QaW5nTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvUGluZ0xvYWRlci5jcHAKQEAgLTEyMyw3ICsxMjMsNyBAQCB2b2lkIFBpbmdMb2FkZXI6OnNl
bmRQaW5nKEZyYW1lJiBmcmFtZSwgY29uc3QgVVJMJiBwaW5nVVJMLCBjb25zdCBVUkwmIGRlc3Rp
bmF0aQogICAgIHN0YXJ0UGluZ0xvYWQoZnJhbWUsIHJlcXVlc3QpOwogfQogCi12b2lkIFBpbmdM
b2FkZXI6OnNlbmRWaW9sYXRpb25SZXBvcnQoRnJhbWUmIGZyYW1lLCBjb25zdCBVUkwmIHJlcG9y
dFVSTCwgUGFzc1JlZlB0cjxGb3JtRGF0YT4gcmVwb3J0KQordm9pZCBQaW5nTG9hZGVyOjpzZW5k
VmlvbGF0aW9uUmVwb3J0KEZyYW1lJiBmcmFtZSwgY29uc3QgVVJMJiByZXBvcnRVUkwsIFJlZlB0
cjxGb3JtRGF0YT4mJiByZXBvcnQpCiB7CiAgICAgUmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QocmVw
b3J0VVJMKTsKIApAQCAtMTM0LDcgKzEzNCw3IEBAIHZvaWQgUGluZ0xvYWRlcjo6c2VuZFZpb2xh
dGlvblJlcG9ydChGcmFtZSYgZnJhbWUsIGNvbnN0IFVSTCYgcmVwb3J0VVJMLCBQYXNzUmVmCiAK
ICAgICByZXF1ZXN0LnNldEhUVFBNZXRob2QoIlBPU1QiKTsKICAgICByZXF1ZXN0LnNldEhUVFBD
b250ZW50VHlwZSgiYXBwbGljYXRpb24vanNvbiIpOwotICAgIHJlcXVlc3Quc2V0SFRUUEJvZHko
cmVwb3J0KTsKKyAgICByZXF1ZXN0LnNldEhUVFBCb2R5KFdURk1vdmUocmVwb3J0KSk7CiAKICAg
ICBib29sIHJlbW92ZUNvb2tpZXMgPSB0cnVlOwogICAgIGlmIChEb2N1bWVudCogZG9jdW1lbnQg
PSBmcmFtZS5kb2N1bWVudCgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
UGluZ0xvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1BpbmdMb2FkZXIuaAppbmRleCAw
NDVkZTEyMWVjMmQ3M2NjMDM1MGY0YTkwZWRiN2RkZWVlZDRkZGY4Li41OWUxY2Y3ZjJmY2Y2OWM1
N2YzOTFkZDZjZGEwOWQ2MjA4MGNlN2RjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvUGluZ0xvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9QaW5nTG9hZGVyLmgK
QEAgLTMyLDcgKzMyLDcgQEAKICNpZm5kZWYgUGluZ0xvYWRlcl9oCiAjZGVmaW5lIFBpbmdMb2Fk
ZXJfaAogCi0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRy
Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNDUsNyArNDUsNyBAQCBjbGFzcyBQaW5n
TG9hZGVyIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBsb2FkSW1hZ2UoRnJhbWUmLCBjb25z
dCBVUkwmKTsKICAgICBzdGF0aWMgdm9pZCBzZW5kUGluZyhGcmFtZSYsIGNvbnN0IFVSTCYgcGlu
Z1VSTCwgY29uc3QgVVJMJiBkZXN0aW5hdGlvblVSTCk7Ci0gICAgc3RhdGljIHZvaWQgc2VuZFZp
b2xhdGlvblJlcG9ydChGcmFtZSYsIGNvbnN0IFVSTCYgcmVwb3J0VVJMLCBQYXNzUmVmUHRyPEZv
cm1EYXRhPiByZXBvcnQpOworICAgIHN0YXRpYyB2b2lkIHNlbmRWaW9sYXRpb25SZXBvcnQoRnJh
bWUmLCBjb25zdCBVUkwmIHJlcG9ydFVSTCwgUmVmUHRyPEZvcm1EYXRhPiYmIHJlcG9ydCk7CiAK
IHByaXZhdGU6CiAgICAgc3RhdGljIHZvaWQgc3RhcnRQaW5nTG9hZChGcmFtZSYsIFJlc291cmNl
UmVxdWVzdCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZW50U2VjdXJp
dHlQb2xpY3kuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZW50U2VjdXJpdHlQb2xpY3ku
Y3BwCmluZGV4IDA1OWJiNGFkM2RiNmQyOTI0NmZlOWIxMWRhYThiMDA2YTQ1NjMxZDMuLmIzYzYx
YmY4NjdmMmY5MjA1OTRlNzRkYWUwMDczZDY4YmM0ZDVkNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvQ29udGVudFNlY3VyaXR5UG9saWN5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0NvbnRlbnRTZWN1cml0eVBvbGljeS5jcHAKQEAgLTE2NzIsNyArMTY3Miw3IEBAIHZv
aWQgQ29udGVudFNlY3VyaXR5UG9saWN5OjpyZXBvcnRWaW9sYXRpb24oY29uc3QgU3RyaW5nJiBk
aXJlY3RpdmVUZXh0LCBjb25zdCBTCiAgICAgUmVmUHRyPEZvcm1EYXRhPiByZXBvcnQgPSBGb3Jt
RGF0YTo6Y3JlYXRlKHJlcG9ydE9iamVjdC0+dG9KU09OU3RyaW5nKCkudXRmOCgpKTsKIAogICAg
IGZvciAoY29uc3QgYXV0byYgdXJsIDogcmVwb3J0VVJJcykKLSAgICAgICAgUGluZ0xvYWRlcjo6
c2VuZFZpb2xhdGlvblJlcG9ydCgqZnJhbWUsIHVybCwgcmVwb3J0KTsKKyAgICAgICAgUGluZ0xv
YWRlcjo6c2VuZFZpb2xhdGlvblJlcG9ydCgqZnJhbWUsIHVybCwgcmVwb3J0LmNvcHlSZWYoKSk7
CiB9CiAKIHZvaWQgQ29udGVudFNlY3VyaXR5UG9saWN5OjpyZXBvcnRVbnN1cHBvcnRlZERpcmVj
dGl2ZShjb25zdCBTdHJpbmcmIG5hbWUpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvRm9ybURhdGEuY3BwCmluZGV4IGY3ZTEyYzIxMWYwMDg2MDRiOTg5YjM1OGE3NTU2
ZDAyYzY0NTRiNmYuLjgwMzM1ZDgyNGJmNmZjZWJlZjIxNjgyYmE2MDQzMjdkNDg5MGVhN2QgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuY3BwCkBAIC03MCw1
NCArNzAsNTQgQEAgRm9ybURhdGE6On5Gb3JtRGF0YSgpCiAgICAgcmVtb3ZlR2VuZXJhdGVkRmls
ZXNJZk5lZWRlZCgpOwogfQogCi1QYXNzUmVmUHRyPEZvcm1EYXRhPiBGb3JtRGF0YTo6Y3JlYXRl
KCkKK1JlZjxGb3JtRGF0YT4gRm9ybURhdGE6OmNyZWF0ZSgpCiB7Ci0gICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBGb3JtRGF0YSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRm9ybURhdGEpOwog
fQogCi1QYXNzUmVmUHRyPEZvcm1EYXRhPiBGb3JtRGF0YTo6Y3JlYXRlKGNvbnN0IHZvaWQqIGRh
dGEsIHNpemVfdCBzaXplKQorUmVmPEZvcm1EYXRhPiBGb3JtRGF0YTo6Y3JlYXRlKGNvbnN0IHZv
aWQqIGRhdGEsIHNpemVfdCBzaXplKQogewotICAgIFJlZlB0cjxGb3JtRGF0YT4gcmVzdWx0ID0g
Y3JlYXRlKCk7CisgICAgUmVmPEZvcm1EYXRhPiByZXN1bHQgPSBjcmVhdGUoKTsKICAgICByZXN1
bHQtPmFwcGVuZERhdGEoZGF0YSwgc2l6ZSk7Ci0gICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNlKCk7
CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotUGFzc1JlZlB0cjxGb3JtRGF0YT4gRm9ybURhdGE6
OmNyZWF0ZShjb25zdCBDU3RyaW5nJiBzdHJpbmcpCitSZWY8Rm9ybURhdGE+IEZvcm1EYXRhOjpj
cmVhdGUoY29uc3QgQ1N0cmluZyYgc3RyaW5nKQogewotICAgIFJlZlB0cjxGb3JtRGF0YT4gcmVz
dWx0ID0gY3JlYXRlKCk7CisgICAgUmVmPEZvcm1EYXRhPiByZXN1bHQgPSBjcmVhdGUoKTsKICAg
ICByZXN1bHQtPmFwcGVuZERhdGEoc3RyaW5nLmRhdGEoKSwgc3RyaW5nLmxlbmd0aCgpKTsKLSAg
ICByZXR1cm4gcmVzdWx0LnJlbGVhc2UoKTsKKyAgICByZXR1cm4gcmVzdWx0OwogfQogCi1QYXNz
UmVmUHRyPEZvcm1EYXRhPiBGb3JtRGF0YTo6Y3JlYXRlKGNvbnN0IFZlY3RvcjxjaGFyPiYgdmVj
dG9yKQorUmVmPEZvcm1EYXRhPiBGb3JtRGF0YTo6Y3JlYXRlKGNvbnN0IFZlY3RvcjxjaGFyPiYg
dmVjdG9yKQogewotICAgIFJlZlB0cjxGb3JtRGF0YT4gcmVzdWx0ID0gY3JlYXRlKCk7CisgICAg
UmVmPEZvcm1EYXRhPiByZXN1bHQgPSBjcmVhdGUoKTsKICAgICByZXN1bHQtPmFwcGVuZERhdGEo
dmVjdG9yLmRhdGEoKSwgdmVjdG9yLnNpemUoKSk7Ci0gICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNl
KCk7CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotUGFzc1JlZlB0cjxGb3JtRGF0YT4gRm9ybURh
dGE6OmNyZWF0ZShjb25zdCBGb3JtRGF0YUxpc3QmIGxpc3QsIGNvbnN0IFRleHRFbmNvZGluZyYg
ZW5jb2RpbmcsIEVuY29kaW5nVHlwZSBlbmNvZGluZ1R5cGUpCitSZWY8Rm9ybURhdGE+IEZvcm1E
YXRhOjpjcmVhdGUoY29uc3QgRm9ybURhdGFMaXN0JiBsaXN0LCBjb25zdCBUZXh0RW5jb2Rpbmcm
IGVuY29kaW5nLCBFbmNvZGluZ1R5cGUgZW5jb2RpbmdUeXBlKQogewotICAgIFJlZlB0cjxGb3Jt
RGF0YT4gcmVzdWx0ID0gY3JlYXRlKCk7CisgICAgUmVmPEZvcm1EYXRhPiByZXN1bHQgPSBjcmVh
dGUoKTsKICAgICByZXN1bHQtPmFwcGVuZEtleVZhbHVlUGFpckl0ZW1zKGxpc3QsIGVuY29kaW5n
LCBmYWxzZSwgMCwgZW5jb2RpbmdUeXBlKTsKLSAgICByZXR1cm4gcmVzdWx0LnJlbGVhc2UoKTsK
KyAgICByZXR1cm4gcmVzdWx0OwogfQogCi1QYXNzUmVmUHRyPEZvcm1EYXRhPiBGb3JtRGF0YTo6
Y3JlYXRlTXVsdGlQYXJ0KGNvbnN0IEZvcm1EYXRhTGlzdCYgbGlzdCwgY29uc3QgVGV4dEVuY29k
aW5nJiBlbmNvZGluZywgRG9jdW1lbnQqIGRvY3VtZW50KQorUmVmPEZvcm1EYXRhPiBGb3JtRGF0
YTo6Y3JlYXRlTXVsdGlQYXJ0KGNvbnN0IEZvcm1EYXRhTGlzdCYgbGlzdCwgY29uc3QgVGV4dEVu
Y29kaW5nJiBlbmNvZGluZywgRG9jdW1lbnQqIGRvY3VtZW50KQogewotICAgIFJlZlB0cjxGb3Jt
RGF0YT4gcmVzdWx0ID0gY3JlYXRlKCk7CisgICAgUmVmPEZvcm1EYXRhPiByZXN1bHQgPSBjcmVh
dGUoKTsKICAgICByZXN1bHQtPmFwcGVuZEtleVZhbHVlUGFpckl0ZW1zKGxpc3QsIGVuY29kaW5n
LCB0cnVlLCBkb2N1bWVudCk7Ci0gICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNlKCk7CisgICAgcmV0
dXJuIHJlc3VsdDsKIH0KIAotUGFzc1JlZlB0cjxGb3JtRGF0YT4gRm9ybURhdGE6OmNvcHkoKSBj
b25zdAorUmVmPEZvcm1EYXRhPiBGb3JtRGF0YTo6Y29weSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBGb3JtRGF0YSgqdGhpcykpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IEZvcm1EYXRhKCp0aGlzKSk7CiB9CiAKLVBhc3NSZWZQdHI8Rm9ybURhdGE+IEZvcm1EYXRhOjpk
ZWVwQ29weSgpIGNvbnN0CitSZWY8Rm9ybURhdGE+IEZvcm1EYXRhOjpkZWVwQ29weSgpIGNvbnN0
CiB7Ci0gICAgUmVmUHRyPEZvcm1EYXRhPiBmb3JtRGF0YShjcmVhdGUoKSk7CisgICAgUmVmPEZv
cm1EYXRhPiBmb3JtRGF0YShjcmVhdGUoKSk7CiAKICAgICBmb3JtRGF0YS0+bV9hbHdheXNTdHJl
YW0gPSBtX2Fsd2F5c1N0cmVhbTsKIApAQCAtMTM1LDcgKzEzNSw3IEBAIFBhc3NSZWZQdHI8Rm9y
bURhdGE+IEZvcm1EYXRhOjpkZWVwQ29weSgpIGNvbnN0CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgfQogICAgIH0KLSAgICByZXR1cm4gZm9ybURhdGEucmVsZWFzZSgpOworICAgIHJldHVy
biBmb3JtRGF0YTsKIH0KIAogdm9pZCBGb3JtRGF0YTo6YXBwZW5kRGF0YShjb25zdCB2b2lkKiBk
YXRhLCBzaXplX3Qgc2l6ZSkKQEAgLTMwMiw3ICszMDIsNyBAQCBzdGF0aWMgdm9pZCBhcHBlbmRC
bG9iUmVzb2x2ZWQoRm9ybURhdGEqIGZvcm1EYXRhLCBjb25zdCBVUkwmIHVybCkKICAgICB9CiB9
CiAKLVBhc3NSZWZQdHI8Rm9ybURhdGE+IEZvcm1EYXRhOjpyZXNvbHZlQmxvYlJlZmVyZW5jZXMo
KQorUmVmPEZvcm1EYXRhPiBGb3JtRGF0YTo6cmVzb2x2ZUJsb2JSZWZlcmVuY2VzKCkKIHsKICAg
ICAvLyBGaXJzdCBjaGVjayBpZiBhbnkgYmxvYnMgbmVlZHMgdG8gYmUgcmVzb2x2ZWQsIG9yIHdl
IGNhbiB0YWtlIHRoZSBmYXN0IHBhdGguCiAgICAgYm9vbCBoYXNCbG9iID0gZmFsc2U7CkBAIC0z
MTYsMTAgKzMxNiwxMCBAQCBQYXNzUmVmUHRyPEZvcm1EYXRhPiBGb3JtRGF0YTo6cmVzb2x2ZUJs
b2JSZWZlcmVuY2VzKCkKICAgICB9CiAKICAgICBpZiAoIWhhc0Jsb2IpCi0gICAgICAgIHJldHVy
biB0aGlzOworICAgICAgICByZXR1cm4gKnRoaXM7CiAKICAgICAvLyBDcmVhdGUgYSBjb3B5IHRv
IGFwcGVuZCB0aGUgcmVzdWx0IGludG8uCi0gICAgUmVmUHRyPEZvcm1EYXRhPiBuZXdGb3JtRGF0
YSA9IEZvcm1EYXRhOjpjcmVhdGUoKTsKKyAgICBSZWY8Rm9ybURhdGE+IG5ld0Zvcm1EYXRhID0g
Rm9ybURhdGE6OmNyZWF0ZSgpOwogICAgIG5ld0Zvcm1EYXRhLT5zZXRBbHdheXNTdHJlYW0oYWx3
YXlzU3RyZWFtKCkpOwogICAgIG5ld0Zvcm1EYXRhLT5zZXRJZGVudGlmaWVyKGlkZW50aWZpZXIo
KSk7CiAgICAgaXQgPSBlbGVtZW50cygpLmJlZ2luKCk7CkBAIC0zMzAsMTEgKzMzMCwxMSBAQCBQ
YXNzUmVmUHRyPEZvcm1EYXRhPiBGb3JtRGF0YTo6cmVzb2x2ZUJsb2JSZWZlcmVuY2VzKCkKICAg
ICAgICAgZWxzZSBpZiAoZWxlbWVudC5tX3R5cGUgPT0gRm9ybURhdGFFbGVtZW50OjpUeXBlOjpF
bmNvZGVkRmlsZSkKICAgICAgICAgICAgIG5ld0Zvcm1EYXRhLT5hcHBlbmRGaWxlUmFuZ2UoZWxl
bWVudC5tX2ZpbGVuYW1lLCBlbGVtZW50Lm1fZmlsZVN0YXJ0LCBlbGVtZW50Lm1fZmlsZUxlbmd0
aCwgZWxlbWVudC5tX2V4cGVjdGVkRmlsZU1vZGlmaWNhdGlvblRpbWUsIGVsZW1lbnQubV9zaG91
bGRHZW5lcmF0ZUZpbGUpOwogICAgICAgICBlbHNlIGlmIChlbGVtZW50Lm1fdHlwZSA9PSBGb3Jt
RGF0YUVsZW1lbnQ6OlR5cGU6OkVuY29kZWRCbG9iKQotICAgICAgICAgICAgYXBwZW5kQmxvYlJl
c29sdmVkKG5ld0Zvcm1EYXRhLmdldCgpLCBlbGVtZW50Lm1fdXJsKTsKKyAgICAgICAgICAgIGFw
cGVuZEJsb2JSZXNvbHZlZChuZXdGb3JtRGF0YS5wdHIoKSwgZWxlbWVudC5tX3VybCk7CiAgICAg
ICAgIGVsc2UKICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0KLSAgICBy
ZXR1cm4gbmV3Rm9ybURhdGEucmVsZWFzZSgpOworICAgIHJldHVybiBuZXdGb3JtRGF0YTsKIH0K
IAogdm9pZCBGb3JtRGF0YTo6Z2VuZXJhdGVGaWxlcyhEb2N1bWVudCogZG9jdW1lbnQpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmgKaW5kZXggMmRkMDdiMWY3ZWIy
OGEwZTQ1NDM4NzEyNTI1ZTk1MjEyYWMxMjlhYy4uZWJhMjFhNjhhNmE4MTVhODdiMzI2OWE4MGEw
NDdkN2JiODZhMzM0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9Gb3JtRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURh
dGEuaApAQCAtMTk0LDIzICsxOTQsMjMgQEAgcHVibGljOgogICAgICAgICBNdWx0aXBhcnRGb3Jt
RGF0YSAvLyBmb3IgbXVsdGlwYXJ0L2Zvcm0tZGF0YQogICAgIH07CiAKLSAgICBXRUJDT1JFX0VY
UE9SVCBzdGF0aWMgUGFzc1JlZlB0cjxGb3JtRGF0YT4gY3JlYXRlKCk7Ci0gICAgV0VCQ09SRV9F
WFBPUlQgc3RhdGljIFBhc3NSZWZQdHI8Rm9ybURhdGE+IGNyZWF0ZShjb25zdCB2b2lkKiwgc2l6
ZV90KTsKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxGb3JtRGF0YT4gY3JlYXRlKGNvbnN0IENTdHJp
bmcmKTsKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxGb3JtRGF0YT4gY3JlYXRlKGNvbnN0IFZlY3Rv
cjxjaGFyPiYpOwotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEZvcm1EYXRhPiBjcmVhdGUoY29uc3Qg
Rm9ybURhdGFMaXN0JiwgY29uc3QgVGV4dEVuY29kaW5nJiwgRW5jb2RpbmdUeXBlID0gRm9ybVVS
TEVuY29kZWQpOwotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEZvcm1EYXRhPiBjcmVhdGVNdWx0aVBh
cnQoY29uc3QgRm9ybURhdGFMaXN0JiwgY29uc3QgVGV4dEVuY29kaW5nJiwgRG9jdW1lbnQqKTsK
KyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPEZvcm1EYXRhPiBjcmVhdGUoKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPEZvcm1EYXRhPiBjcmVhdGUoY29uc3Qgdm9pZCosIHNp
emVfdCk7CisgICAgc3RhdGljIFJlZjxGb3JtRGF0YT4gY3JlYXRlKGNvbnN0IENTdHJpbmcmKTsK
KyAgICBzdGF0aWMgUmVmPEZvcm1EYXRhPiBjcmVhdGUoY29uc3QgVmVjdG9yPGNoYXI+Jik7Cisg
ICAgc3RhdGljIFJlZjxGb3JtRGF0YT4gY3JlYXRlKGNvbnN0IEZvcm1EYXRhTGlzdCYsIGNvbnN0
IFRleHRFbmNvZGluZyYsIEVuY29kaW5nVHlwZSA9IEZvcm1VUkxFbmNvZGVkKTsKKyAgICBzdGF0
aWMgUmVmPEZvcm1EYXRhPiBjcmVhdGVNdWx0aVBhcnQoY29uc3QgRm9ybURhdGFMaXN0JiwgY29u
c3QgVGV4dEVuY29kaW5nJiwgRG9jdW1lbnQqKTsKICAgICBXRUJDT1JFX0VYUE9SVCB+Rm9ybURh
dGEoKTsKIAogICAgIC8vIEZJWE1FOiBCb3RoIHRoZXNlIGZ1bmN0aW9ucyBwZXJmb3JtIGEgZGVl
cCBjb3B5IG9mIG1fZWxlbWVudHMsIGJ1dCBkaWZmZXIgaW4gaGFuZGxpbmcgb2Ygb3RoZXIgZGF0
YSBtZW1iZXJzLgogICAgIC8vIEhvdyBtdWNoIG9mIHRoYXQgaXMgaW50ZW50aW9uYWw/IFdlIG5l
ZWQgYmV0dGVyIG5hbWVzIHRoYXQgZXhwbGFpbiB0aGUgZGlmZmVyZW5jZS4KLSAgICBQYXNzUmVm
UHRyPEZvcm1EYXRhPiBjb3B5KCkgY29uc3Q7Ci0gICAgUGFzc1JlZlB0cjxGb3JtRGF0YT4gZGVl
cENvcHkoKSBjb25zdDsKKyAgICBSZWY8Rm9ybURhdGE+IGNvcHkoKSBjb25zdDsKKyAgICBSZWY8
Rm9ybURhdGE+IGRlZXBDb3B5KCkgY29uc3Q7CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBFbmNv
ZGVyPgogICAgIHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBEZWNvZGVyPgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEZvcm1EYXRhPiBkZWNvZGUoRGVj
b2RlciYpOworICAgIHN0YXRpYyBSZWZQdHI8Rm9ybURhdGE+IGRlY29kZShEZWNvZGVyJik7CiAK
ICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGVuZERhdGEoY29uc3Qgdm9pZCogZGF0YSwgc2l6
ZV90KTsKICAgICB2b2lkIGFwcGVuZEZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCwgYm9vbCBz
aG91bGRHZW5lcmF0ZUZpbGUgPSBmYWxzZSk7CkBAIC0yMjMsNyArMjIzLDcgQEAgcHVibGljOgog
CiAgICAgLy8gUmVzb2x2ZSBhbGwgYmxvYiByZWZlcmVuY2VzIHNvIHdlIG9ubHkgaGF2ZSBmaWxl
IGFuZCBkYXRhLgogICAgIC8vIElmIHRoZSBGb3JtRGF0YSBoYXMgbm8gYmxvYiByZWZlcmVuY2Vz
IHRvIHJlc29sdmUsIHRoaXMgaXMgcmV0dXJuZWQuCi0gICAgUGFzc1JlZlB0cjxGb3JtRGF0YT4g
cmVzb2x2ZUJsb2JSZWZlcmVuY2VzKCk7CisgICAgUmVmPEZvcm1EYXRhPiByZXNvbHZlQmxvYlJl
ZmVyZW5jZXMoKTsKIAogICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIG1fZWxlbWVu
dHMuaXNFbXB0eSgpOyB9CiAgICAgY29uc3QgVmVjdG9yPEZvcm1EYXRhRWxlbWVudD4mIGVsZW1l
bnRzKCkgY29uc3QgeyByZXR1cm4gbV9lbGVtZW50czsgfQpAQCAtMjg5LDcgKzI4OSw3IEBAIHZv
aWQgRm9ybURhdGE6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogfQogCiB0ZW1wbGF0
ZTx0eXBlbmFtZSBEZWNvZGVyPgotUGFzc1JlZlB0cjxGb3JtRGF0YT4gRm9ybURhdGE6OmRlY29k
ZShEZWNvZGVyJiBkZWNvZGVyKQorUmVmUHRyPEZvcm1EYXRhPiBGb3JtRGF0YTo6ZGVjb2RlKERl
Y29kZXImIGRlY29kZXIpCiB7CiAgICAgUmVmUHRyPEZvcm1EYXRhPiBkYXRhID0gRm9ybURhdGE6
OmNyZWF0ZSgpOwogCkBAIC0zMDUsNyArMzA1LDcgQEAgUGFzc1JlZlB0cjxGb3JtRGF0YT4gRm9y
bURhdGE6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
ZGF0YS0+bV9pZGVudGlmaWVyKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1
cm4gZGF0YS5yZWxlYXNlKCk7CisgICAgcmV0dXJuIGRhdGE7CiB9CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVz
b3VyY2VSZXF1ZXN0QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jl
c291cmNlUmVxdWVzdEJhc2UuY3BwCmluZGV4IGExMDMzOGE2MjUxMzEwM2I0NWI4Nzg3NTk5MGEz
OTJjN2E4MjE4ODEuLjBhOWM5ZjA3NzE0MDYwY2M3Yjk1MWI5MDNlNjkxYmE0Nzk3OTNiZGIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0
QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJl
cXVlc3RCYXNlLmNwcApAQCAtNzYsNyArNzYsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8UmVzb3VyY2VS
ZXF1ZXN0PiBSZXNvdXJjZVJlcXVlc3RCYXNlOjphZG9wdChzdGQ6OnVuaXF1ZV9wdHI8Q3Jvcwog
ICAgICAgICBBU1NFUlQoZW5jb2RpbmdDb3VudCA8PSAzKTsKICAgICAgICAgcmVxdWVzdC0+c2V0
UmVzcG9uc2VDb250ZW50RGlzcG9zaXRpb25FbmNvZGluZ0ZhbGxiYWNrQXJyYXkoZW5jb2Rpbmcx
LCBlbmNvZGluZzIsIGVuY29kaW5nMyk7CiAgICAgfQotICAgIHJlcXVlc3QtPnNldEhUVFBCb2R5
KGRhdGEtPmh0dHBCb2R5KTsKKyAgICByZXF1ZXN0LT5zZXRIVFRQQm9keShkYXRhLT5odHRwQm9k
eS5jb3B5UmVmKCkpOwogICAgIHJlcXVlc3QtPnNldEFsbG93Q29va2llcyhkYXRhLT5hbGxvd0Nv
b2tpZXMpOwogICAgIHJlcXVlc3QtPmRvUGxhdGZvcm1BZG9wdChXVEZNb3ZlKGRhdGEpKTsKICAg
ICByZXR1cm4gcmVxdWVzdDsKQEAgLTQxMywxMSArNDEzLDExIEBAIEZvcm1EYXRhKiBSZXNvdXJj
ZVJlcXVlc3RCYXNlOjpodHRwQm9keSgpIGNvbnN0CiAgICAgcmV0dXJuIG1faHR0cEJvZHkuZ2V0
KCk7CiB9CiAKLXZvaWQgUmVzb3VyY2VSZXF1ZXN0QmFzZTo6c2V0SFRUUEJvZHkoUGFzc1JlZlB0
cjxGb3JtRGF0YT4gaHR0cEJvZHkpCit2b2lkIFJlc291cmNlUmVxdWVzdEJhc2U6OnNldEhUVFBC
b2R5KFJlZlB0cjxGb3JtRGF0YT4mJiBodHRwQm9keSkKIHsKICAgICB1cGRhdGVSZXNvdXJjZVJl
cXVlc3QoKTsKIAotICAgIG1faHR0cEJvZHkgPSBodHRwQm9keTsKKyAgICBtX2h0dHBCb2R5ID0g
V1RGTW92ZShodHRwQm9keSk7CiAKICAgICBtX3Jlc291cmNlUmVxdWVzdEJvZHlVcGRhdGVkID0g
dHJ1ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNv
dXJjZVJlcXVlc3RCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291
cmNlUmVxdWVzdEJhc2UuaAppbmRleCBlMmFjZTZlODdhOWRmNDFhZmY1MmQwYzJjYmQxOWI3YWJm
YmZjNmJiLi4yNTY1YzQ2NjhhMWFmMTI5NWU0ZGEwM2JmNjJmM2YyMzZkMjY2ZTAzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2Uu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJh
c2UuaApAQCAtMTIxLDggKzEyMSw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBzZXRSZXNwb25zZUNvbnRlbnREaXNwb3NpdGlvbkVuY29kaW5nRmFs
bGJhY2tBcnJheShjb25zdCBTdHJpbmcmIGVuY29kaW5nMSwgY29uc3QgU3RyaW5nJiBlbmNvZGlu
ZzIgPSBTdHJpbmcoKSwgY29uc3QgU3RyaW5nJiBlbmNvZGluZzMgPSBTdHJpbmcoKSk7CiAKICAg
ICAgICAgV0VCQ09SRV9FWFBPUlQgRm9ybURhdGEqIGh0dHBCb2R5KCkgY29uc3Q7Ci0gICAgICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0SFRUUEJvZHkoUGFzc1JlZlB0cjxGb3JtRGF0YT4gaHR0
cEJvZHkpOwotICAgICAgICAKKyAgICAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRIVFRQQm9k
eShSZWZQdHI8Rm9ybURhdGE+JiYpOworCiAgICAgICAgIGJvb2wgYWxsb3dDb29raWVzKCkgY29u
c3Q7CiAgICAgICAgIHZvaWQgc2V0QWxsb3dDb29raWVzKGJvb2wgYWxsb3dDb29raWVzKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Gb3JtRGF0YVN0
cmVhbUNGTmV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvRm9ybURh
dGFTdHJlYW1DRk5ldC5jcHAKaW5kZXggZjM5ODUxMzlhNDAxYmU2M2EwODZiMjZjZjFkZjFlY2Vm
ZWY2MDI2ZS4uMDZkNzRlMzFkNDg5ZDZjZGEwOTRkMGU1OGQzNDU1NTMzYjNkNGZhOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Gb3JtRGF0YVN0cmVhbUNG
TmV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0Zvcm1EYXRh
U3RyZWFtQ0ZOZXQuY3BwCkBAIC0zNDgsMTAgKzM0OCw4IEBAIHN0YXRpYyB2b2lkIGZvcm1FdmVu
dENhbGxiYWNrKENGUmVhZFN0cmVhbVJlZiBzdHJlYW0sIENGU3RyZWFtRXZlbnRUeXBlIHR5cGUs
IHZvCiAgICAgfQogfQogCi12b2lkIHNldEhUVFBCb2R5KENGTXV0YWJsZVVSTFJlcXVlc3RSZWYg
cmVxdWVzdCwgUGFzc1JlZlB0cjxGb3JtRGF0YT4gcHJwRm9ybURhdGEpCit2b2lkIHNldEhUVFBC
b2R5KENGTXV0YWJsZVVSTFJlcXVlc3RSZWYgcmVxdWVzdCwgRm9ybURhdGEqIGZvcm1EYXRhKQog
ewotICAgIFJlZlB0cjxGb3JtRGF0YT4gZm9ybURhdGEgPSBwcnBGb3JtRGF0YTsKLQogICAgIGlm
ICghZm9ybURhdGEpCiAgICAgICAgIHJldHVybjsKICAgICAgICAgCkBAIC0zNjcsMTMgKzM2NSwx
NCBAQCB2b2lkIHNldEhUVFBCb2R5KENGTXV0YWJsZVVSTFJlcXVlc3RSZWYgcmVxdWVzdCwgUGFz
c1JlZlB0cjxGb3JtRGF0YT4gcHJwRm9ybURhdAogICAgICAgICB9CiAgICAgfQogCi0gICAgZm9y
bURhdGEgPSBmb3JtRGF0YS0+cmVzb2x2ZUJsb2JSZWZlcmVuY2VzKCk7Ci0gICAgY291bnQgPSBm
b3JtRGF0YS0+ZWxlbWVudHMoKS5zaXplKCk7CisKKyAgICBSZWY8Rm9ybURhdGE+IG5ld0Zvcm1E
YXRhID0gZm9ybURhdGEtPnJlc29sdmVCbG9iUmVmZXJlbmNlcygpOworICAgIGNvdW50ID0gbmV3
Rm9ybURhdGEtPmVsZW1lbnRzKCkuc2l6ZSgpOwogCiAgICAgLy8gUHJlY29tcHV0ZSB0aGUgY29u
dGVudCBsZW5ndGggc28gTlNVUkxDb25uZWN0aW9uIGRvZXNuJ3QgdXNlIGNodW5rZWQgbW9kZS4K
ICAgICB1bnNpZ25lZCBsb25nIGxvbmcgbGVuZ3RoID0gMDsKICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IGNvdW50OyArK2kpIHsKLSAgICAgICAgY29uc3QgRm9ybURhdGFFbGVtZW50JiBlbGVt
ZW50ID0gZm9ybURhdGEtPmVsZW1lbnRzKClbaV07CisgICAgICAgIGNvbnN0IEZvcm1EYXRhRWxl
bWVudCYgZWxlbWVudCA9IG5ld0Zvcm1EYXRhLT5lbGVtZW50cygpW2ldOwogICAgICAgICBpZiAo
ZWxlbWVudC5tX3R5cGUgPT0gRm9ybURhdGFFbGVtZW50OjpUeXBlOjpEYXRhKQogICAgICAgICAg
ICAgbGVuZ3RoICs9IGVsZW1lbnQubV9kYXRhLnNpemUoKTsKICAgICAgICAgZWxzZSB7CkBAIC0z
OTEsNyArMzkwLDcgQEAgdm9pZCBzZXRIVFRQQm9keShDRk11dGFibGVVUkxSZXF1ZXN0UmVmIHJl
cXVlc3QsIFBhc3NSZWZQdHI8Rm9ybURhdGE+IHBycEZvcm1EYXQKICAgICAvLyBDcmVhdGUgYW5k
IHNldCB0aGUgc3RyZWFtLgogCiAgICAgLy8gUGFzcyB0aGUgbGVuZ3RoIGFsb25nIHdpdGggdGhl
IGZvcm1EYXRhIHNvIGl0IGRvZXMgbm90IGhhdmUgdG8gYmUgcmVjb21wdXRlZC4KLSAgICBGb3Jt
Q3JlYXRpb25Db250ZXh0IGZvcm1Db250ZXh0ID0geyBmb3JtRGF0YS5yZWxlYXNlKCksIGxlbmd0
aCB9OworICAgIEZvcm1DcmVhdGlvbkNvbnRleHQgZm9ybUNvbnRleHQgPSB7bmV3Rm9ybURhdGEs
IGxlbmd0aH07CiAKICAgICBDRlJlYWRTdHJlYW1DYWxsQmFja3NWMSBjYWxsQmFja3MgPSB7IDEs
IGZvcm1DcmVhdGUsIGZvcm1GaW5hbGl6ZSwgMCwgZm9ybU9wZW4sIDAsIGZvcm1SZWFkLCAwLCBm
b3JtQ2FuUmVhZCwgZm9ybUNsb3NlLCBmb3JtQ29weVByb3BlcnR5LCAwLCAwLCBmb3JtU2NoZWR1
bGUsIGZvcm1VbnNjaGVkdWxlCiAgICAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY2YvRm9ybURhdGFTdHJlYW1DRk5ldC5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jZi9Gb3JtRGF0YVN0cmVhbUNGTmV0LmgKaW5kZXggODdhODRlNTQ1
ODc1MWIyMGFmYjA1YTcxY2E2OTljYTkyYTI0ODc0MS4uZjlhNmQ4NzU4ZjM0OTJhMmMxYWZmZThk
MDRkYTFiNTU4NjViMWEyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jZi9Gb3JtRGF0YVN0cmVhbUNGTmV0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jZi9Gb3JtRGF0YVN0cmVhbUNGTmV0LmgKQEAgLTM5LDcgKzM5LDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBGb3JtRGF0YTsKIAotdm9pZCBzZXRIVFRQQm9keShD
Rk11dGFibGVVUkxSZXF1ZXN0UmVmLCBQYXNzUmVmUHRyPEZvcm1EYXRhPik7Cit2b2lkIHNldEhU
VFBCb2R5KENGTXV0YWJsZVVSTFJlcXVlc3RSZWYsIEZvcm1EYXRhKik7CiAKIEZvcm1EYXRhKiBo
dHRwQm9keUZyb21TdHJlYW0oQ0ZSZWFkU3RyZWFtUmVmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlcXVlc3RDRk5ldC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVxdWVzdENGTmV0LmNw
cAppbmRleCAxOTQ1NTI1ZDhhMGMzZDVkMGZiMWFjODJmMzNkYjMxNzNlMDIyMjcxLi5hYzg3YjJh
Mzg0MjcyZGQzYWU3NTgyZWMwZDhjNGQ5M2VjZDdjNWY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVxdWVzdENGTmV0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVxdWVzdENGTmV0LmNw
cApAQCAtMjA0LDcgKzIwNCw3IEBAIHZvaWQgUmVzb3VyY2VSZXF1ZXN0Ojpkb1VwZGF0ZVBsYXRm
b3JtSFRUUEJvZHkoKQogICAgIH0gZWxzZQogICAgICAgICBjZlJlcXVlc3QgPSBDRlVSTFJlcXVl
c3RDcmVhdGVNdXRhYmxlKDAsIHVybC5nZXQoKSwgKENGVVJMUmVxdWVzdENhY2hlUG9saWN5KWNh
Y2hlUG9saWN5KCksIHRpbWVvdXRJbnRlcnZhbCgpLCBmaXJzdFBhcnR5Rm9yQ29va2llcy5nZXQo
KSk7CiAKLSAgICBSZWZQdHI8Rm9ybURhdGE+IGZvcm1EYXRhID0gaHR0cEJvZHkoKTsKKyAgICBG
b3JtRGF0YSogZm9ybURhdGEgPSBodHRwQm9keSgpOwogICAgIGlmIChmb3JtRGF0YSAmJiAhZm9y
bURhdGEtPmlzRW1wdHkoKSkKICAgICAgICAgV2ViQ29yZTo6c2V0SFRUUEJvZHkoY2ZSZXF1ZXN0
LCBmb3JtRGF0YSk7CiAKQEAgLTMzNSw3ICszMzUsNyBAQCB2b2lkIFJlc291cmNlUmVxdWVzdDo6
dXBkYXRlRnJvbURlbGVnYXRlUHJlc2VydmluZ09sZFByb3BlcnRpZXMoY29uc3QgUmVzb3VyY2VS
ZQogICAgICp0aGlzID0gZGVsZWdhdGVQcm92aWRlZFJlcXVlc3Q7CiAKICAgICBzZXRQcmlvcml0
eShvbGRQcmlvcml0eSk7Ci0gICAgc2V0SFRUUEJvZHkob2xkSFRUUEJvZHkucmVsZWFzZSgpKTsK
KyAgICBzZXRIVFRQQm9keShXVEZNb3ZlKG9sZEhUVFBCb2R5KSk7CiAgICAgc2V0SGlkZGVuRnJv
bUluc3BlY3Rvcihpc0hpZGRlbkZyb21JbnNwZWN0b3IpOwogICAgIHNldFJlcXVlc3RlcihvbGRS
ZXF1ZXN0ZXIpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jb2NvYS9SZXNvdXJjZVJlcXVlc3RDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY29jb2EvUmVzb3VyY2VSZXF1ZXN0Q29jb2EubW0KaW5kZXggZmNmNDkzN2MzNjBi
MjJhZjhlMWJmYzlhNDUzMGJiOTFjMTcxYmI1Yy4uNjcyYjFiOWIwNDU2NmUzYzY2OGFhMzJjMmVm
YzFhMzg1NTU2YTQ2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jb2NvYS9SZXNvdXJjZVJlcXVlc3RDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2NvY29hL1Jlc291cmNlUmVxdWVzdENvY29hLm1tCkBAIC0xOTAsNyArMTkw
LDcgQEAgdm9pZCBSZXNvdXJjZVJlcXVlc3Q6OmRvVXBkYXRlUGxhdGZvcm1IVFRQQm9keSgpCiAg
ICAgZWxzZQogICAgICAgICBuc1JlcXVlc3QgPSBbW05TTXV0YWJsZVVSTFJlcXVlc3QgYWxsb2Nd
IGluaXRXaXRoVVJMOnVybCgpXTsKIAotICAgIFJlZlB0cjxGb3JtRGF0YT4gZm9ybURhdGEgPSBo
dHRwQm9keSgpOworICAgIEZvcm1EYXRhKiBmb3JtRGF0YSA9IGh0dHBCb2R5KCk7CiAgICAgaWYg
KGZvcm1EYXRhICYmICFmb3JtRGF0YS0+aXNFbXB0eSgpKQogICAgICAgICBXZWJDb3JlOjpzZXRI
VFRQQm9keShuc1JlcXVlc3QsIGZvcm1EYXRhKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxlTWFuYWdlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVNYW5hZ2VyLmNw
cAppbmRleCBjZDk3N2JiM2MwN2ZhMWE3ZTZkYThiYzU2MmFlNTUzMzY3ZGE3NzI3Li43NzQyNmZh
ODg0NWI0NTEwOWNmZDViMTQ2MzI3MzRjMmZmNzg2ZjQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVNYW5hZ2VyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVNYW5h
Z2VyLmNwcApAQCAtNzYzLDkgKzc2MywxMCBAQCBzdGF0aWMgaW5saW5lIHNpemVfdCBnZXRGb3Jt
RWxlbWVudHNDb3VudChSZXNvdXJjZUhhbmRsZSogam9iKQogCiAgICAgLy8gUmVzb2x2ZSB0aGUg
YmxvYiBlbGVtZW50cyBzbyB0aGUgZm9ybURhdGEgY2FuIGNvcnJlY3RseSByZXBvcnQgaXQncyBz
aXplLgogICAgIGZvcm1EYXRhID0gZm9ybURhdGEtPnJlc29sdmVCbG9iUmVmZXJlbmNlcygpOwot
ICAgIGpvYi0+Zmlyc3RSZXF1ZXN0KCkuc2V0SFRUUEJvZHkoZm9ybURhdGEpOworICAgIHNpemVf
dCBzaXplID0gZm9ybURhdGEtPmVsZW1lbnRzKCkuc2l6ZSgpOworICAgIGpvYi0+Zmlyc3RSZXF1
ZXN0KCkuc2V0SFRUUEJvZHkoV1RGTW92ZShmb3JtRGF0YSkpOwogCi0gICAgcmV0dXJuIGZvcm1E
YXRhLT5lbGVtZW50cygpLnNpemUoKTsKKyAgICByZXR1cm4gc2l6ZTsKIH0KIAogc3RhdGljIHZv
aWQgc2V0dXBGb3JtRGF0YShSZXNvdXJjZUhhbmRsZSogam9iLCBDVVJMb3B0aW9uIHNpemVPcHRp
b24sIHN0cnVjdCBjdXJsX3NsaXN0KiogaGVhZGVycykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0Zvcm1EYXRhU3RyZWFtTWFjLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9Gb3JtRGF0YVN0cmVhbU1hYy5oCmluZGV4IGRiODFj
NjY4N2M0MjJlNWVjYmMzNjkwZTIzNDVhZjgyMjRhZDA2YzYuLmI4NWRkY2IxNWVkOGYwOGQ1OWZh
YzQ2ZWRmZmJlNGUxODI5NDI0NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvbWFjL0Zvcm1EYXRhU3RyZWFtTWFjLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9tYWMvRm9ybURhdGFTdHJlYW1NYWMuaApAQCAtNDIsNyArNDIsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICBjbGFzcyBGb3JtRGF0YTsKIAotICAgIHZvaWQgc2V0
SFRUUEJvZHkoTlNNdXRhYmxlVVJMUmVxdWVzdCAqLCBQYXNzUmVmUHRyPEZvcm1EYXRhPik7Cisg
ICAgdm9pZCBzZXRIVFRQQm9keShOU011dGFibGVVUkxSZXF1ZXN0ICosIEZvcm1EYXRhKik7CiAg
ICAgRm9ybURhdGEqIGh0dHBCb2R5RnJvbVN0cmVhbShOU0lucHV0U3RyZWFtICopOwogCiAgICAg
Q0ZTdHJpbmdSZWYgZm9ybURhdGFTdHJlYW1MZW5ndGhQcm9wZXJ0eU5hbWUoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0Zvcm1EYXRhU3RyZWFtTWFj
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvRm9ybURhdGFTdHJlYW1N
YWMubW0KaW5kZXggYjU3MzRmOThlZGZiZjExMzVlMTdkNGI3ZWJjMjljYzU1ZmUwNDM1MS4uZjg0
ZDQ3OTg2MGM3ZTg3MmEzY2ZmZDRiMGMxYmRjNjI2OTViMzc5MiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvRm9ybURhdGFTdHJlYW1NYWMubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvRm9ybURhdGFTdHJlYW1NYWMubW0K
QEAgLTMzLDcgKzMzLDYgQEAKIAogI2ltcG9ydCAiRm9ybURhdGEuaCIKICNpbXBvcnQgIkZvcm1E
YXRhU3RyZWFtQ0ZOZXQuaCIKLSNpbXBvcnQgPHd0Zi9QYXNzUmVmUHRyLmg+CiAKIEBpbnRlcmZh
Y2UgTlNVUkxSZXF1ZXN0IChXZWJOU1VSTFJlcXVlc3REZXRhaWxzKQogLSAoQ0ZVUkxSZXF1ZXN0
UmVmKV9DRlVSTFJlcXVlc3Q7CkBAIC00MSw5ICs0MCw5IEBACiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotdm9pZCBzZXRIVFRQQm9keShOU011dGFibGVVUkxSZXF1ZXN0ICpyZXF1ZXN0LCBQYXNz
UmVmUHRyPEZvcm1EYXRhPiBwcnBGb3JtRGF0YSkKK3ZvaWQgc2V0SFRUUEJvZHkoTlNNdXRhYmxl
VVJMUmVxdWVzdCAqcmVxdWVzdCwgRm9ybURhdGEqIGZvcm1EYXRhKQogewotICAgIHNldEhUVFBC
b2R5KGNvbnN0X2Nhc3Q8Q0ZNdXRhYmxlVVJMUmVxdWVzdFJlZj4oW3JlcXVlc3QgX0NGVVJMUmVx
dWVzdF0pLCBwcnBGb3JtRGF0YSk7CisgICAgc2V0SFRUUEJvZHkoY29uc3RfY2FzdDxDRk11dGFi
bGVVUkxSZXF1ZXN0UmVmPihbcmVxdWVzdCBfQ0ZVUkxSZXF1ZXN0XSksIGZvcm1EYXRhKTsKIH0K
IAogRm9ybURhdGEqIGh0dHBCb2R5RnJvbVN0cmVhbShOU0lucHV0U3RyZWFtICpzdHJlYW0pCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VI
YW5kbGVTb3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNv
dXJjZUhhbmRsZVNvdXAuY3BwCmluZGV4IGI2N2M5MGRkOWI0YzI5N2MwODJlMTIwNThhMTgxOTcw
MmI5N2ExN2UuLjY1NGU2YjMyNDg0Njg1ZWQ0NDc3MDhjYTQwY2Y2ZjVkZTU0MzVlNzUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUhhbmRs
ZVNvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNv
dXJjZUhhbmRsZVNvdXAuY3BwCkBAIC01MDYsNyArNTA2LDcgQEAgc3RhdGljIHZvaWQgZG9SZWRp
cmVjdChSZXNvdXJjZUhhbmRsZSogaGFuZGxlKQogICAgICAgICAvLyBvciBpZiBjdXJyZW50IHJl
ZGlyZWN0aW9uIHNheXMgc28KICAgICAgICAgaWYgKG1lc3NhZ2UtPm1ldGhvZCA9PSBTT1VQX01F
VEhPRF9HRVQgfHwgc2hvdWxkUmVkaXJlY3RBc0dFVChtZXNzYWdlLCBuZXdVUkwsIGNyb3NzT3Jp
Z2luKSkgewogICAgICAgICAgICAgbmV3UmVxdWVzdC5zZXRIVFRQTWV0aG9kKCJHRVQiKTsKLSAg
ICAgICAgICAgIG5ld1JlcXVlc3Quc2V0SFRUUEJvZHkoMCk7CisgICAgICAgICAgICBuZXdSZXF1
ZXN0LnNldEhUVFBCb2R5KG51bGxwdHIpOwogICAgICAgICAgICAgbmV3UmVxdWVzdC5jbGVhckhU
VFBDb250ZW50VHlwZSgpOwogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRw
UmVxdWVzdC5jcHAKaW5kZXggMjA5NTg5MzkzOWI3NDUwY2Y5ZGRlNGM0ZTU4ZDRiYzE2YWNiNDZk
Ni4uMzVkYjI1MWVmZDhiZjJjNTNlZmRlODU3ZTRhNzNmZDNmODQ0YWM2ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCkBAIC03NDMsNyArNzQzLDcgQEAgdm9pZCBYTUxIdHRw
UmVxdWVzdDo6Y3JlYXRlUmVxdWVzdChFeGNlcHRpb25Db2RlJiBlYykKICAgICBpZiAobV9yZXF1
ZXN0RW50aXR5Qm9keSkgewogICAgICAgICBBU1NFUlQobV9tZXRob2QgIT0gIkdFVCIpOwogICAg
ICAgICBBU1NFUlQobV9tZXRob2QgIT0gIkhFQUQiKTsKLSAgICAgICAgcmVxdWVzdC5zZXRIVFRQ
Qm9keShtX3JlcXVlc3RFbnRpdHlCb2R5LnJlbGVhc2UoKSk7CisgICAgICAgIHJlcXVlc3Quc2V0
SFRUUEJvZHkoV1RGTW92ZShtX3JlcXVlc3RFbnRpdHlCb2R5KSk7CiAgICAgfQogCiAgICAgaWYg
KCFtX3JlcXVlc3RIZWFkZXJzLmlzRW1wdHkoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
d2luL1dlYk11dGFibGVVUkxSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYk11dGFi
bGVVUkxSZXF1ZXN0LmNwcAppbmRleCA0Y2EwMjZhZjZmNzI4MDFlZDA2ZjQ0YjA3OGE2NmM5MWI1
NzhmZmZkLi4xYTE0YTA5NmYyMzU3Y2E3ZjUyYTNhMmIxMmVmNmVlNWE1OWQ2MzQ2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJNdXRhYmxlVVJMUmVxdWVzdC5jcHAKKysrIGIvU291
cmNlL1dlYktpdC93aW4vV2ViTXV0YWJsZVVSTFJlcXVlc3QuY3BwCkBAIC0zMDcsNyArMzA3LDcg
QEAgSFJFU1VMVCBXZWJNdXRhYmxlVVJMUmVxdWVzdDo6c2V0SFRUUEJvZHkoX0luX29wdF8gSVN0
cmVhbSogZGF0YSkKICAgICBpZiAoRkFJTEVEKGRhdGEtPlJlYWQoZm9ybURhdGEsIHN0YXQuY2JT
aXplLkxvd1BhcnQsICZieXRlc1JlYWQpKSkKICAgICAgICAgcmV0dXJuIEVfRkFJTDsKIAotICAg
IG1fcmVxdWVzdC5zZXRIVFRQQm9keShodHRwQm9keSk7CisgICAgbV9yZXF1ZXN0LnNldEhUVFBC
b2R5KFdURk1vdmUoaHR0cEJvZHkpKTsKICAgICByZXR1cm4gU19PSzsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFt
ZXRlcnMuY3BwIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNl
TG9hZFBhcmFtZXRlcnMuY3BwCmluZGV4IGY0YzU4YTVlNGM2M2E5NTIyYjY0Yjk4ZmI4MGM4NzAx
YTI3MDZiY2QuLmI1NmIyZjdkOGQ5M2IwZmY0MWRjZjg0NDVkZWQxNjNlZWRmMjcxZjQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQ
YXJhbWV0ZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UmVzb3VyY2VMb2FkUGFyYW1ldGVycy5jcHAKQEAgLTEyMSw3ICsxMjEsNyBAQCBib29sIE5ldHdv
cmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzOjpkZWNvZGUoSVBDOjpBcmd1bWVudERlY29kZXImIGRl
Y29kZXIsIE5ldHdvcgogICAgICAgICBSZWZQdHI8Rm9ybURhdGE+IGZvcm1EYXRhID0gRm9ybURh
dGE6OmRlY29kZShkZWNvZGVyKTsKICAgICAgICAgaWYgKCFmb3JtRGF0YSkKICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICAgICAgcmVzdWx0LnJlcXVlc3Quc2V0SFRUUEJvZHkoZm9ybURh
dGEucmVsZWFzZSgpKTsKKyAgICAgICAgcmVzdWx0LnJlcXVlc3Quc2V0SFRUUEJvZHkoV1RGTW92
ZShmb3JtRGF0YSkpOwogCiAgICAgICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5IHJl
cXVlc3RCb2R5U2FuZGJveEV4dGVuc2lvbkhhbmRsZXM7CiAgICAgICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUocmVxdWVzdEJvZHlTYW5kYm94RXh0ZW5zaW9uSGFuZGxlcykpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>269571</attachid>
            <date>2016-01-22 05:52:59 -0800</date>
            <delta_ts>2016-01-22 06:51:27 -0800</delta_ts>
            <desc>Patch for landing with mac build fix</desc>
            <filename>bug-153229-20160122145230.patch</filename>
            <type>text/plain</type>
            <size>28723</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk1NDQ2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzg4NjY2MGRjNGIxNTNk
MTAzZjcxYWI5ZDRkY2QzZDUwOGU4MDBmNy4uMWFmYTM4OTRkN2U5NGUxZTlkMTc2YjZiNmRhZmRj
ZWQ4ODVkOGVkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU4IEBACisyMDE2LTAxLTIyICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uLmZhYmxldEBjcmYuY2Fub24uZnI+CisKKyAgICAgICAgUmVtb3Zl
IFBhc3NSZWZQdHIgZnJvbSBSZXNvdXJjZVJlcXVlc3QgYW5kIEZvcm1EYXRhCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTMyMjkKKworICAgICAgICBS
ZXZpZXdlZCBieSBDaHJpcyBEdW1lei4KKworICAgICAgICBDb3ZlcmVkIGJ5IGV4aXN0aW5nIHRl
c3RzLgorCisgICAgICAgIE1ha2luZyBSZXNvdXJjZVJlcXVlc3Q6OnNldEhUVFBCb2R5IHRha2Ug
YSBSZWZQdHI8Rm9ybURhdGE+JiYuCisgICAgICAgIE1vdmluZyBGb3JtRGF0YSBmcm9tIFBhc3NS
ZWZQdHIgdG8gUmVmUHRyLgorCisgICAgICAgICogaHRtbC9wYXJzZXIvWFNTQXVkaXRvckRlbGVn
YXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhTU0F1ZGl0b3JEZWxlZ2F0ZTo6ZGlkQmxvY2tT
Y3JpcHQpOgorICAgICAgICAqIGxvYWRlci9Gb3JtU3VibWlzc2lvbi5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpGb3JtU3VibWlzc2lvbjo6cG9wdWxhdGVGcmFtZUxvYWRSZXF1ZXN0KToKKyAgICAg
ICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2Fk
ZXI6OmxvYWRQb3N0UmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6bG9h
ZERpZmZlcmVudERvY3VtZW50SXRlbSk6CisgICAgICAgICogbG9hZGVyL1BpbmdMb2FkZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UGluZ0xvYWRlcjo6c2VuZFZpb2xhdGlvblJlcG9ydCk6Cisg
ICAgICAgICogbG9hZGVyL1BpbmdMb2FkZXIuaDoKKyAgICAgICAgKiBwYWdlL0NvbnRlbnRTZWN1
cml0eVBvbGljeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3k6
OnJlcG9ydFZpb2xhdGlvbik6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpGb3JtRGF0YTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNv
cmU6OkZvcm1EYXRhOjpjcmVhdGVNdWx0aVBhcnQpOgorICAgICAgICAoV2ViQ29yZTo6Rm9ybURh
dGE6OmNvcHkpOgorICAgICAgICAoV2ViQ29yZTo6Rm9ybURhdGE6OmRlZXBDb3B5KToKKyAgICAg
ICAgKFdlYkNvcmU6OkZvcm1EYXRhOjpyZXNvbHZlQmxvYlJlZmVyZW5jZXMpOgorICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZvcm1EYXRh
OjpkZWNvZGUpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFz
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3RCYXNlOjphZG9wdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3RCYXNlOjpzZXRIVFRQQm9keSk6CisgICAg
ICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmg6CisgICAgICAgIChX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3RCYXNlOjpzZXRIVFRQQm9keSk6CisgICAgICAgICogcGxh
dGZvcm0vbmV0d29yay9jZi9Gb3JtRGF0YVN0cmVhbUNGTmV0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OnNldEhUVFBCb2R5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL0Zvcm1EYXRh
U3RyZWFtQ0ZOZXQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVx
dWVzdENGTmV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdDo6ZG9VcGRh
dGVQbGF0Zm9ybUhUVFBCb2R5KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdDo6
dXBkYXRlRnJvbURlbGVnYXRlUHJlc2VydmluZ09sZFByb3BlcnRpZXMpOgorICAgICAgICAqIHBs
YXRmb3JtL25ldHdvcmsvY29jb2EvUmVzb3VyY2VSZXF1ZXN0Q29jb2EubW06CisgICAgICAgIChX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Q6OmRvVXBkYXRlUGxhdGZvcm1IVFRQQm9keSk6CisgICAg
ICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxlTWFuYWdlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpnZXRGb3JtRWxlbWVudHNDb3VudCk6CisgICAgICAgICogcGxhdGZv
cm0vbmV0d29yay9tYWMvRm9ybURhdGFTdHJlYW1NYWMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9u
ZXR3b3JrL21hYy9Gb3JtRGF0YVN0cmVhbU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OnNldEhU
VFBCb2R5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VIYW5kbGVT
b3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmRvUmVkaXJlY3QpOgorICAgICAgICAqIHhtbC9Y
TUxIdHRwUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6Y3Jl
YXRlUmVxdWVzdCk6CisKIDIwMTYtMDEtMjEgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBh
cHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTiAocjE2ODI0NCk6IENvbnRlbnQgaW4gaG9y
aXpvbnRhbC1idCBwYWdlIGlzIG9mZnNldCBzdWNoIHRoYXQgb25seSB0aGUgZW5kIGlzIHZpZXdh
YmxlIGFuZCB0aGVyZSBpcyBhIHdoaXRlIGdhcCBhdCB0aGUgdG9wCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKaW5k
ZXggZDRmN2Q1M2VmZjI1NDhhZGE1MWQ5MzBkZGVhZmYxMjNjMDg1OGI4MC4uNjhjYWVkM2JmMmY1
NTE2MjE4MjRlNmI3YmE5ODgyNTVkZTViMTY4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93
aW4vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDEzIEBACisyMDE2LTAxLTIyICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uLmZhYmxldEBjcmYuY2Fu
b24uZnI+CisKKyAgICAgICAgUmVtb3ZlIFBhc3NSZWZQdHIgZnJvbSBSZXNvdXJjZVJlcXVlc3Qg
YW5kIEZvcm1EYXRhCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNTMyMjkKKworICAgICAgICBSZXZpZXdlZCBieSBDaHJpcyBEdW1lei4KKworICAgICAg
ICAqIFdlYk11dGFibGVVUkxSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYk11dGFibGVVUkxSZXF1
ZXN0OjpzZXRIVFRQQm9keSk6CisKIDIwMTYtMDEtMTUgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZy
YXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0Nv
bnZleFBvbHlnb24oKSBhbmQgR3JhcGhpY3NDb250ZXh0OjpjbGlwQ29udmV4UG9seWdvbigpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFu
Z2VMb2cKaW5kZXggZDk5ZTlmMjlmYjI3MzIwOTIxMjMwY2ExNzgyMTVhYzhjMTU1YmZlZC4uYzkz
MjU4ZTFjZjhjMjJlNjBhZjA2ZjcwNTQzNmVjMDIxNWZlMGVmYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE1IEBACisyMDE2LTAxLTIyICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uLmZhYmxldEBjcmYu
Y2Fub24uZnI+CisKKyAgICAgICAgUmVtb3ZlIFBhc3NSZWZQdHIgZnJvbSBSZXNvdXJjZVJlcXVl
c3QgYW5kIEZvcm1EYXRhCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNTMyMjkKKworICAgICAgICBSZXZpZXdlZCBieSBDaHJpcyBEdW1lei4KKworICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnM6OmRlY29kZSk6
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnkuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OkVudHJ5OjpFbnRyeSk6CisKIDIwMTYtMDEt
MjEgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgUkVH
UkVTU0lPTiAocjE2ODI0NCk6IENvbnRlbnQgaW4gaG9yaXpvbnRhbC1idCBwYWdlIGlzIG9mZnNl
dCBzdWNoIHRoYXQgb25seSB0aGUgZW5kIGlzIHZpZXdhYmxlIGFuZCB0aGVyZSBpcyBhIHdoaXRl
IGdhcCBhdCB0aGUgdG9wCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRm9ybVN1
Ym1pc3Npb24uY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zvcm1TdWJtaXNzaW9uLmNwcApp
bmRleCAwMTc4NmJhZDEzYTQyNDZmZDRiYzQxNGU0Nzc2YWMyM2IwZjY0YmQyLi5hNGE0YjM3NWFl
YTkxODJiYWY5MTlhMDI3MzA2NmU5MWUzNGY2NjBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRm9ybVN1Ym1pc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9G
b3JtU3VibWlzc2lvbi5jcHAKQEAgLTI1OCw3ICsyNTgsNyBAQCB2b2lkIEZvcm1TdWJtaXNzaW9u
Ojpwb3B1bGF0ZUZyYW1lTG9hZFJlcXVlc3QoRnJhbWVMb2FkUmVxdWVzdCYgZnJhbWVSZXF1ZXN0
KQogCiAgICAgaWYgKG1fbWV0aG9kID09IEZvcm1TdWJtaXNzaW9uOjpQb3N0TWV0aG9kKSB7CiAg
ICAgICAgIGZyYW1lUmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKS5zZXRIVFRQTWV0aG9kKCJQT1NU
Iik7Ci0gICAgICAgIGZyYW1lUmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKS5zZXRIVFRQQm9keSht
X2Zvcm1EYXRhKTsKKyAgICAgICAgZnJhbWVSZXF1ZXN0LnJlc291cmNlUmVxdWVzdCgpLnNldEhU
VFBCb2R5KG1fZm9ybURhdGEuY29weVJlZigpKTsKIAogICAgICAgICAvLyBjb25zdHJ1Y3Qgc29t
ZSB1c2VyIGhlYWRlcnMgaWYgbmVjZXNzYXJ5CiAgICAgICAgIGlmIChtX2JvdW5kYXJ5LmlzRW1w
dHkoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCmluZGV4IDBmZjViMjk5ZDhj
NjJjMDVjMDAxY2QxYzI2ZmY2ZTgxZDhhNDg3YzEuLjAyOTc3ZjYyNDVkNTRmM2E3MjRkNjlkMjA4
MzQwODM3OTYxNTg0YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxv
YWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcApAQCAt
MjY1NCw3ICsyNjU0LDYgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZFBvc3RSZXF1ZXN0KGNvbnN0
IEZyYW1lTG9hZFJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFN0cmluZyYKIAogICAgIGNvbnN0IFJl
c291cmNlUmVxdWVzdCYgaW5SZXF1ZXN0ID0gcmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKTsKICAg
ICBjb25zdCBVUkwmIHVybCA9IGluUmVxdWVzdC51cmwoKTsKLSAgICBSZWZQdHI8Rm9ybURhdGE+
IGZvcm1EYXRhID0gaW5SZXF1ZXN0Lmh0dHBCb2R5KCk7CiAgICAgY29uc3QgU3RyaW5nJiBjb250
ZW50VHlwZSA9IGluUmVxdWVzdC5odHRwQ29udGVudFR5cGUoKTsKICAgICBTdHJpbmcgb3JpZ2lu
ID0gaW5SZXF1ZXN0Lmh0dHBPcmlnaW4oKTsKIApAQCAtMjY2NCw3ICsyNjYzLDcgQEAgdm9pZCBG
cmFtZUxvYWRlcjo6bG9hZFBvc3RSZXF1ZXN0KGNvbnN0IEZyYW1lTG9hZFJlcXVlc3QmIHJlcXVl
c3QsIGNvbnN0IFN0cmluZyYKICAgICAgICAgd29ya2luZ1Jlc291cmNlUmVxdWVzdC5zZXRIVFRQ
UmVmZXJyZXIocmVmZXJyZXIpOwogICAgIHdvcmtpbmdSZXNvdXJjZVJlcXVlc3Quc2V0SFRUUE9y
aWdpbihvcmlnaW4pOwogICAgIHdvcmtpbmdSZXNvdXJjZVJlcXVlc3Quc2V0SFRUUE1ldGhvZCgi
UE9TVCIpOwotICAgIHdvcmtpbmdSZXNvdXJjZVJlcXVlc3Quc2V0SFRUUEJvZHkoZm9ybURhdGEp
OworICAgIHdvcmtpbmdSZXNvdXJjZVJlcXVlc3Quc2V0SFRUUEJvZHkoaW5SZXF1ZXN0Lmh0dHBC
b2R5KCkpOwogICAgIHdvcmtpbmdSZXNvdXJjZVJlcXVlc3Quc2V0SFRUUENvbnRlbnRUeXBlKGNv
bnRlbnRUeXBlKTsKICAgICBhZGRFeHRyYUZpZWxkc1RvUmVxdWVzdCh3b3JraW5nUmVzb3VyY2VS
ZXF1ZXN0LCBsb2FkVHlwZSwgdHJ1ZSk7CiAKQEAgLTMyOTksNyArMzI5OCw3IEBAIHZvaWQgRnJh
bWVMb2FkZXI6OmxvYWREaWZmZXJlbnREb2N1bWVudEl0ZW0oSGlzdG9yeUl0ZW0mIGl0ZW0sIEZy
YW1lTG9hZFR5cGUgbG9hCiAgICAgICAgIGZvcm1EYXRhLT5nZW5lcmF0ZUZpbGVzKG1fZnJhbWUu
ZG9jdW1lbnQoKSk7CiAKICAgICAgICAgcmVxdWVzdC5zZXRIVFRQTWV0aG9kKCJQT1NUIik7Ci0g
ICAgICAgIHJlcXVlc3Quc2V0SFRUUEJvZHkoZm9ybURhdGEpOworICAgICAgICByZXF1ZXN0LnNl
dEhUVFBCb2R5KFdURk1vdmUoZm9ybURhdGEpKTsKICAgICAgICAgcmVxdWVzdC5zZXRIVFRQQ29u
dGVudFR5cGUoaXRlbS5mb3JtQ29udGVudFR5cGUoKSk7CiAgICAgICAgIFJlZlB0cjxTZWN1cml0
eU9yaWdpbj4gc2VjdXJpdHlPcmlnaW4gPSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbVN0cmlu
ZyhpdGVtLnJlZmVycmVyKCkpOwogICAgICAgICBhZGRIVFRQT3JpZ2luSWZOZWVkZWQocmVxdWVz
dCwgc2VjdXJpdHlPcmlnaW4tPnRvU3RyaW5nKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL1BpbmdMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1BpbmdMb2Fk
ZXIuY3BwCmluZGV4IGM4MGIyZTQwNTVlMGVmMWQyMjRkNzlkNDcyZTFiM2JlMzUwZjhkYTkuLjdm
OGRkNGU0YmRjNzFiZDkxNjA1N2E3NzNlZTMyZjJkMzYwMzY4YWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9QaW5nTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvUGluZ0xvYWRlci5jcHAKQEAgLTEyMyw3ICsxMjMsNyBAQCB2b2lkIFBpbmdMb2FkZXI6OnNl
bmRQaW5nKEZyYW1lJiBmcmFtZSwgY29uc3QgVVJMJiBwaW5nVVJMLCBjb25zdCBVUkwmIGRlc3Rp
bmF0aQogICAgIHN0YXJ0UGluZ0xvYWQoZnJhbWUsIHJlcXVlc3QpOwogfQogCi12b2lkIFBpbmdM
b2FkZXI6OnNlbmRWaW9sYXRpb25SZXBvcnQoRnJhbWUmIGZyYW1lLCBjb25zdCBVUkwmIHJlcG9y
dFVSTCwgUGFzc1JlZlB0cjxGb3JtRGF0YT4gcmVwb3J0KQordm9pZCBQaW5nTG9hZGVyOjpzZW5k
VmlvbGF0aW9uUmVwb3J0KEZyYW1lJiBmcmFtZSwgY29uc3QgVVJMJiByZXBvcnRVUkwsIFJlZlB0
cjxGb3JtRGF0YT4mJiByZXBvcnQpCiB7CiAgICAgUmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QocmVw
b3J0VVJMKTsKIApAQCAtMTM0LDcgKzEzNCw3IEBAIHZvaWQgUGluZ0xvYWRlcjo6c2VuZFZpb2xh
dGlvblJlcG9ydChGcmFtZSYgZnJhbWUsIGNvbnN0IFVSTCYgcmVwb3J0VVJMLCBQYXNzUmVmCiAK
ICAgICByZXF1ZXN0LnNldEhUVFBNZXRob2QoIlBPU1QiKTsKICAgICByZXF1ZXN0LnNldEhUVFBD
b250ZW50VHlwZSgiYXBwbGljYXRpb24vanNvbiIpOwotICAgIHJlcXVlc3Quc2V0SFRUUEJvZHko
cmVwb3J0KTsKKyAgICByZXF1ZXN0LnNldEhUVFBCb2R5KFdURk1vdmUocmVwb3J0KSk7CiAKICAg
ICBib29sIHJlbW92ZUNvb2tpZXMgPSB0cnVlOwogICAgIGlmIChEb2N1bWVudCogZG9jdW1lbnQg
PSBmcmFtZS5kb2N1bWVudCgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
UGluZ0xvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1BpbmdMb2FkZXIuaAppbmRleCAw
NDVkZTEyMWVjMmQ3M2NjMDM1MGY0YTkwZWRiN2RkZWVlZDRkZGY4Li41OWUxY2Y3ZjJmY2Y2OWM1
N2YzOTFkZDZjZGEwOWQ2MjA4MGNlN2RjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvUGluZ0xvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9QaW5nTG9hZGVyLmgK
QEAgLTMyLDcgKzMyLDcgQEAKICNpZm5kZWYgUGluZ0xvYWRlcl9oCiAjZGVmaW5lIFBpbmdMb2Fk
ZXJfaAogCi0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRy
Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNDUsNyArNDUsNyBAQCBjbGFzcyBQaW5n
TG9hZGVyIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBsb2FkSW1hZ2UoRnJhbWUmLCBjb25z
dCBVUkwmKTsKICAgICBzdGF0aWMgdm9pZCBzZW5kUGluZyhGcmFtZSYsIGNvbnN0IFVSTCYgcGlu
Z1VSTCwgY29uc3QgVVJMJiBkZXN0aW5hdGlvblVSTCk7Ci0gICAgc3RhdGljIHZvaWQgc2VuZFZp
b2xhdGlvblJlcG9ydChGcmFtZSYsIGNvbnN0IFVSTCYgcmVwb3J0VVJMLCBQYXNzUmVmUHRyPEZv
cm1EYXRhPiByZXBvcnQpOworICAgIHN0YXRpYyB2b2lkIHNlbmRWaW9sYXRpb25SZXBvcnQoRnJh
bWUmLCBjb25zdCBVUkwmIHJlcG9ydFVSTCwgUmVmUHRyPEZvcm1EYXRhPiYmIHJlcG9ydCk7CiAK
IHByaXZhdGU6CiAgICAgc3RhdGljIHZvaWQgc3RhcnRQaW5nTG9hZChGcmFtZSYsIFJlc291cmNl
UmVxdWVzdCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZW50U2VjdXJp
dHlQb2xpY3kuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZW50U2VjdXJpdHlQb2xpY3ku
Y3BwCmluZGV4IDA1OWJiNGFkM2RiNmQyOTI0NmZlOWIxMWRhYThiMDA2YTQ1NjMxZDMuLmIzYzYx
YmY4NjdmMmY5MjA1OTRlNzRkYWUwMDczZDY4YmM0ZDVkNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvQ29udGVudFNlY3VyaXR5UG9saWN5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0NvbnRlbnRTZWN1cml0eVBvbGljeS5jcHAKQEAgLTE2NzIsNyArMTY3Miw3IEBAIHZv
aWQgQ29udGVudFNlY3VyaXR5UG9saWN5OjpyZXBvcnRWaW9sYXRpb24oY29uc3QgU3RyaW5nJiBk
aXJlY3RpdmVUZXh0LCBjb25zdCBTCiAgICAgUmVmUHRyPEZvcm1EYXRhPiByZXBvcnQgPSBGb3Jt
RGF0YTo6Y3JlYXRlKHJlcG9ydE9iamVjdC0+dG9KU09OU3RyaW5nKCkudXRmOCgpKTsKIAogICAg
IGZvciAoY29uc3QgYXV0byYgdXJsIDogcmVwb3J0VVJJcykKLSAgICAgICAgUGluZ0xvYWRlcjo6
c2VuZFZpb2xhdGlvblJlcG9ydCgqZnJhbWUsIHVybCwgcmVwb3J0KTsKKyAgICAgICAgUGluZ0xv
YWRlcjo6c2VuZFZpb2xhdGlvblJlcG9ydCgqZnJhbWUsIHVybCwgcmVwb3J0LmNvcHlSZWYoKSk7
CiB9CiAKIHZvaWQgQ29udGVudFNlY3VyaXR5UG9saWN5OjpyZXBvcnRVbnN1cHBvcnRlZERpcmVj
dGl2ZShjb25zdCBTdHJpbmcmIG5hbWUpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvRm9ybURhdGEuY3BwCmluZGV4IGY3ZTEyYzIxMWYwMDg2MDRiOTg5YjM1OGE3NTU2
ZDAyYzY0NTRiNmYuLjgwMzM1ZDgyNGJmNmZjZWJlZjIxNjgyYmE2MDQzMjdkNDg5MGVhN2QgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuY3BwCkBAIC03MCw1
NCArNzAsNTQgQEAgRm9ybURhdGE6On5Gb3JtRGF0YSgpCiAgICAgcmVtb3ZlR2VuZXJhdGVkRmls
ZXNJZk5lZWRlZCgpOwogfQogCi1QYXNzUmVmUHRyPEZvcm1EYXRhPiBGb3JtRGF0YTo6Y3JlYXRl
KCkKK1JlZjxGb3JtRGF0YT4gRm9ybURhdGE6OmNyZWF0ZSgpCiB7Ci0gICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBGb3JtRGF0YSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRm9ybURhdGEpOwog
fQogCi1QYXNzUmVmUHRyPEZvcm1EYXRhPiBGb3JtRGF0YTo6Y3JlYXRlKGNvbnN0IHZvaWQqIGRh
dGEsIHNpemVfdCBzaXplKQorUmVmPEZvcm1EYXRhPiBGb3JtRGF0YTo6Y3JlYXRlKGNvbnN0IHZv
aWQqIGRhdGEsIHNpemVfdCBzaXplKQogewotICAgIFJlZlB0cjxGb3JtRGF0YT4gcmVzdWx0ID0g
Y3JlYXRlKCk7CisgICAgUmVmPEZvcm1EYXRhPiByZXN1bHQgPSBjcmVhdGUoKTsKICAgICByZXN1
bHQtPmFwcGVuZERhdGEoZGF0YSwgc2l6ZSk7Ci0gICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNlKCk7
CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotUGFzc1JlZlB0cjxGb3JtRGF0YT4gRm9ybURhdGE6
OmNyZWF0ZShjb25zdCBDU3RyaW5nJiBzdHJpbmcpCitSZWY8Rm9ybURhdGE+IEZvcm1EYXRhOjpj
cmVhdGUoY29uc3QgQ1N0cmluZyYgc3RyaW5nKQogewotICAgIFJlZlB0cjxGb3JtRGF0YT4gcmVz
dWx0ID0gY3JlYXRlKCk7CisgICAgUmVmPEZvcm1EYXRhPiByZXN1bHQgPSBjcmVhdGUoKTsKICAg
ICByZXN1bHQtPmFwcGVuZERhdGEoc3RyaW5nLmRhdGEoKSwgc3RyaW5nLmxlbmd0aCgpKTsKLSAg
ICByZXR1cm4gcmVzdWx0LnJlbGVhc2UoKTsKKyAgICByZXR1cm4gcmVzdWx0OwogfQogCi1QYXNz
UmVmUHRyPEZvcm1EYXRhPiBGb3JtRGF0YTo6Y3JlYXRlKGNvbnN0IFZlY3RvcjxjaGFyPiYgdmVj
dG9yKQorUmVmPEZvcm1EYXRhPiBGb3JtRGF0YTo6Y3JlYXRlKGNvbnN0IFZlY3RvcjxjaGFyPiYg
dmVjdG9yKQogewotICAgIFJlZlB0cjxGb3JtRGF0YT4gcmVzdWx0ID0gY3JlYXRlKCk7CisgICAg
UmVmPEZvcm1EYXRhPiByZXN1bHQgPSBjcmVhdGUoKTsKICAgICByZXN1bHQtPmFwcGVuZERhdGEo
dmVjdG9yLmRhdGEoKSwgdmVjdG9yLnNpemUoKSk7Ci0gICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNl
KCk7CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotUGFzc1JlZlB0cjxGb3JtRGF0YT4gRm9ybURh
dGE6OmNyZWF0ZShjb25zdCBGb3JtRGF0YUxpc3QmIGxpc3QsIGNvbnN0IFRleHRFbmNvZGluZyYg
ZW5jb2RpbmcsIEVuY29kaW5nVHlwZSBlbmNvZGluZ1R5cGUpCitSZWY8Rm9ybURhdGE+IEZvcm1E
YXRhOjpjcmVhdGUoY29uc3QgRm9ybURhdGFMaXN0JiBsaXN0LCBjb25zdCBUZXh0RW5jb2Rpbmcm
IGVuY29kaW5nLCBFbmNvZGluZ1R5cGUgZW5jb2RpbmdUeXBlKQogewotICAgIFJlZlB0cjxGb3Jt
RGF0YT4gcmVzdWx0ID0gY3JlYXRlKCk7CisgICAgUmVmPEZvcm1EYXRhPiByZXN1bHQgPSBjcmVh
dGUoKTsKICAgICByZXN1bHQtPmFwcGVuZEtleVZhbHVlUGFpckl0ZW1zKGxpc3QsIGVuY29kaW5n
LCBmYWxzZSwgMCwgZW5jb2RpbmdUeXBlKTsKLSAgICByZXR1cm4gcmVzdWx0LnJlbGVhc2UoKTsK
KyAgICByZXR1cm4gcmVzdWx0OwogfQogCi1QYXNzUmVmUHRyPEZvcm1EYXRhPiBGb3JtRGF0YTo6
Y3JlYXRlTXVsdGlQYXJ0KGNvbnN0IEZvcm1EYXRhTGlzdCYgbGlzdCwgY29uc3QgVGV4dEVuY29k
aW5nJiBlbmNvZGluZywgRG9jdW1lbnQqIGRvY3VtZW50KQorUmVmPEZvcm1EYXRhPiBGb3JtRGF0
YTo6Y3JlYXRlTXVsdGlQYXJ0KGNvbnN0IEZvcm1EYXRhTGlzdCYgbGlzdCwgY29uc3QgVGV4dEVu
Y29kaW5nJiBlbmNvZGluZywgRG9jdW1lbnQqIGRvY3VtZW50KQogewotICAgIFJlZlB0cjxGb3Jt
RGF0YT4gcmVzdWx0ID0gY3JlYXRlKCk7CisgICAgUmVmPEZvcm1EYXRhPiByZXN1bHQgPSBjcmVh
dGUoKTsKICAgICByZXN1bHQtPmFwcGVuZEtleVZhbHVlUGFpckl0ZW1zKGxpc3QsIGVuY29kaW5n
LCB0cnVlLCBkb2N1bWVudCk7Ci0gICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNlKCk7CisgICAgcmV0
dXJuIHJlc3VsdDsKIH0KIAotUGFzc1JlZlB0cjxGb3JtRGF0YT4gRm9ybURhdGE6OmNvcHkoKSBj
b25zdAorUmVmPEZvcm1EYXRhPiBGb3JtRGF0YTo6Y29weSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBGb3JtRGF0YSgqdGhpcykpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IEZvcm1EYXRhKCp0aGlzKSk7CiB9CiAKLVBhc3NSZWZQdHI8Rm9ybURhdGE+IEZvcm1EYXRhOjpk
ZWVwQ29weSgpIGNvbnN0CitSZWY8Rm9ybURhdGE+IEZvcm1EYXRhOjpkZWVwQ29weSgpIGNvbnN0
CiB7Ci0gICAgUmVmUHRyPEZvcm1EYXRhPiBmb3JtRGF0YShjcmVhdGUoKSk7CisgICAgUmVmPEZv
cm1EYXRhPiBmb3JtRGF0YShjcmVhdGUoKSk7CiAKICAgICBmb3JtRGF0YS0+bV9hbHdheXNTdHJl
YW0gPSBtX2Fsd2F5c1N0cmVhbTsKIApAQCAtMTM1LDcgKzEzNSw3IEBAIFBhc3NSZWZQdHI8Rm9y
bURhdGE+IEZvcm1EYXRhOjpkZWVwQ29weSgpIGNvbnN0CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgfQogICAgIH0KLSAgICByZXR1cm4gZm9ybURhdGEucmVsZWFzZSgpOworICAgIHJldHVy
biBmb3JtRGF0YTsKIH0KIAogdm9pZCBGb3JtRGF0YTo6YXBwZW5kRGF0YShjb25zdCB2b2lkKiBk
YXRhLCBzaXplX3Qgc2l6ZSkKQEAgLTMwMiw3ICszMDIsNyBAQCBzdGF0aWMgdm9pZCBhcHBlbmRC
bG9iUmVzb2x2ZWQoRm9ybURhdGEqIGZvcm1EYXRhLCBjb25zdCBVUkwmIHVybCkKICAgICB9CiB9
CiAKLVBhc3NSZWZQdHI8Rm9ybURhdGE+IEZvcm1EYXRhOjpyZXNvbHZlQmxvYlJlZmVyZW5jZXMo
KQorUmVmPEZvcm1EYXRhPiBGb3JtRGF0YTo6cmVzb2x2ZUJsb2JSZWZlcmVuY2VzKCkKIHsKICAg
ICAvLyBGaXJzdCBjaGVjayBpZiBhbnkgYmxvYnMgbmVlZHMgdG8gYmUgcmVzb2x2ZWQsIG9yIHdl
IGNhbiB0YWtlIHRoZSBmYXN0IHBhdGguCiAgICAgYm9vbCBoYXNCbG9iID0gZmFsc2U7CkBAIC0z
MTYsMTAgKzMxNiwxMCBAQCBQYXNzUmVmUHRyPEZvcm1EYXRhPiBGb3JtRGF0YTo6cmVzb2x2ZUJs
b2JSZWZlcmVuY2VzKCkKICAgICB9CiAKICAgICBpZiAoIWhhc0Jsb2IpCi0gICAgICAgIHJldHVy
biB0aGlzOworICAgICAgICByZXR1cm4gKnRoaXM7CiAKICAgICAvLyBDcmVhdGUgYSBjb3B5IHRv
IGFwcGVuZCB0aGUgcmVzdWx0IGludG8uCi0gICAgUmVmUHRyPEZvcm1EYXRhPiBuZXdGb3JtRGF0
YSA9IEZvcm1EYXRhOjpjcmVhdGUoKTsKKyAgICBSZWY8Rm9ybURhdGE+IG5ld0Zvcm1EYXRhID0g
Rm9ybURhdGE6OmNyZWF0ZSgpOwogICAgIG5ld0Zvcm1EYXRhLT5zZXRBbHdheXNTdHJlYW0oYWx3
YXlzU3RyZWFtKCkpOwogICAgIG5ld0Zvcm1EYXRhLT5zZXRJZGVudGlmaWVyKGlkZW50aWZpZXIo
KSk7CiAgICAgaXQgPSBlbGVtZW50cygpLmJlZ2luKCk7CkBAIC0zMzAsMTEgKzMzMCwxMSBAQCBQ
YXNzUmVmUHRyPEZvcm1EYXRhPiBGb3JtRGF0YTo6cmVzb2x2ZUJsb2JSZWZlcmVuY2VzKCkKICAg
ICAgICAgZWxzZSBpZiAoZWxlbWVudC5tX3R5cGUgPT0gRm9ybURhdGFFbGVtZW50OjpUeXBlOjpF
bmNvZGVkRmlsZSkKICAgICAgICAgICAgIG5ld0Zvcm1EYXRhLT5hcHBlbmRGaWxlUmFuZ2UoZWxl
bWVudC5tX2ZpbGVuYW1lLCBlbGVtZW50Lm1fZmlsZVN0YXJ0LCBlbGVtZW50Lm1fZmlsZUxlbmd0
aCwgZWxlbWVudC5tX2V4cGVjdGVkRmlsZU1vZGlmaWNhdGlvblRpbWUsIGVsZW1lbnQubV9zaG91
bGRHZW5lcmF0ZUZpbGUpOwogICAgICAgICBlbHNlIGlmIChlbGVtZW50Lm1fdHlwZSA9PSBGb3Jt
RGF0YUVsZW1lbnQ6OlR5cGU6OkVuY29kZWRCbG9iKQotICAgICAgICAgICAgYXBwZW5kQmxvYlJl
c29sdmVkKG5ld0Zvcm1EYXRhLmdldCgpLCBlbGVtZW50Lm1fdXJsKTsKKyAgICAgICAgICAgIGFw
cGVuZEJsb2JSZXNvbHZlZChuZXdGb3JtRGF0YS5wdHIoKSwgZWxlbWVudC5tX3VybCk7CiAgICAg
ICAgIGVsc2UKICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0KLSAgICBy
ZXR1cm4gbmV3Rm9ybURhdGEucmVsZWFzZSgpOworICAgIHJldHVybiBuZXdGb3JtRGF0YTsKIH0K
IAogdm9pZCBGb3JtRGF0YTo6Z2VuZXJhdGVGaWxlcyhEb2N1bWVudCogZG9jdW1lbnQpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmgKaW5kZXggMmRkMDdiMWY3ZWIy
OGEwZTQ1NDM4NzEyNTI1ZTk1MjEyYWMxMjlhYy4uZWJhMjFhNjhhNmE4MTVhODdiMzI2OWE4MGEw
NDdkN2JiODZhMzM0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9Gb3JtRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURh
dGEuaApAQCAtMTk0LDIzICsxOTQsMjMgQEAgcHVibGljOgogICAgICAgICBNdWx0aXBhcnRGb3Jt
RGF0YSAvLyBmb3IgbXVsdGlwYXJ0L2Zvcm0tZGF0YQogICAgIH07CiAKLSAgICBXRUJDT1JFX0VY
UE9SVCBzdGF0aWMgUGFzc1JlZlB0cjxGb3JtRGF0YT4gY3JlYXRlKCk7Ci0gICAgV0VCQ09SRV9F
WFBPUlQgc3RhdGljIFBhc3NSZWZQdHI8Rm9ybURhdGE+IGNyZWF0ZShjb25zdCB2b2lkKiwgc2l6
ZV90KTsKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxGb3JtRGF0YT4gY3JlYXRlKGNvbnN0IENTdHJp
bmcmKTsKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxGb3JtRGF0YT4gY3JlYXRlKGNvbnN0IFZlY3Rv
cjxjaGFyPiYpOwotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEZvcm1EYXRhPiBjcmVhdGUoY29uc3Qg
Rm9ybURhdGFMaXN0JiwgY29uc3QgVGV4dEVuY29kaW5nJiwgRW5jb2RpbmdUeXBlID0gRm9ybVVS
TEVuY29kZWQpOwotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEZvcm1EYXRhPiBjcmVhdGVNdWx0aVBh
cnQoY29uc3QgRm9ybURhdGFMaXN0JiwgY29uc3QgVGV4dEVuY29kaW5nJiwgRG9jdW1lbnQqKTsK
KyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPEZvcm1EYXRhPiBjcmVhdGUoKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPEZvcm1EYXRhPiBjcmVhdGUoY29uc3Qgdm9pZCosIHNp
emVfdCk7CisgICAgc3RhdGljIFJlZjxGb3JtRGF0YT4gY3JlYXRlKGNvbnN0IENTdHJpbmcmKTsK
KyAgICBzdGF0aWMgUmVmPEZvcm1EYXRhPiBjcmVhdGUoY29uc3QgVmVjdG9yPGNoYXI+Jik7Cisg
ICAgc3RhdGljIFJlZjxGb3JtRGF0YT4gY3JlYXRlKGNvbnN0IEZvcm1EYXRhTGlzdCYsIGNvbnN0
IFRleHRFbmNvZGluZyYsIEVuY29kaW5nVHlwZSA9IEZvcm1VUkxFbmNvZGVkKTsKKyAgICBzdGF0
aWMgUmVmPEZvcm1EYXRhPiBjcmVhdGVNdWx0aVBhcnQoY29uc3QgRm9ybURhdGFMaXN0JiwgY29u
c3QgVGV4dEVuY29kaW5nJiwgRG9jdW1lbnQqKTsKICAgICBXRUJDT1JFX0VYUE9SVCB+Rm9ybURh
dGEoKTsKIAogICAgIC8vIEZJWE1FOiBCb3RoIHRoZXNlIGZ1bmN0aW9ucyBwZXJmb3JtIGEgZGVl
cCBjb3B5IG9mIG1fZWxlbWVudHMsIGJ1dCBkaWZmZXIgaW4gaGFuZGxpbmcgb2Ygb3RoZXIgZGF0
YSBtZW1iZXJzLgogICAgIC8vIEhvdyBtdWNoIG9mIHRoYXQgaXMgaW50ZW50aW9uYWw/IFdlIG5l
ZWQgYmV0dGVyIG5hbWVzIHRoYXQgZXhwbGFpbiB0aGUgZGlmZmVyZW5jZS4KLSAgICBQYXNzUmVm
UHRyPEZvcm1EYXRhPiBjb3B5KCkgY29uc3Q7Ci0gICAgUGFzc1JlZlB0cjxGb3JtRGF0YT4gZGVl
cENvcHkoKSBjb25zdDsKKyAgICBSZWY8Rm9ybURhdGE+IGNvcHkoKSBjb25zdDsKKyAgICBSZWY8
Rm9ybURhdGE+IGRlZXBDb3B5KCkgY29uc3Q7CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBFbmNv
ZGVyPgogICAgIHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBEZWNvZGVyPgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEZvcm1EYXRhPiBkZWNvZGUoRGVj
b2RlciYpOworICAgIHN0YXRpYyBSZWZQdHI8Rm9ybURhdGE+IGRlY29kZShEZWNvZGVyJik7CiAK
ICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGVuZERhdGEoY29uc3Qgdm9pZCogZGF0YSwgc2l6
ZV90KTsKICAgICB2b2lkIGFwcGVuZEZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCwgYm9vbCBz
aG91bGRHZW5lcmF0ZUZpbGUgPSBmYWxzZSk7CkBAIC0yMjMsNyArMjIzLDcgQEAgcHVibGljOgog
CiAgICAgLy8gUmVzb2x2ZSBhbGwgYmxvYiByZWZlcmVuY2VzIHNvIHdlIG9ubHkgaGF2ZSBmaWxl
IGFuZCBkYXRhLgogICAgIC8vIElmIHRoZSBGb3JtRGF0YSBoYXMgbm8gYmxvYiByZWZlcmVuY2Vz
IHRvIHJlc29sdmUsIHRoaXMgaXMgcmV0dXJuZWQuCi0gICAgUGFzc1JlZlB0cjxGb3JtRGF0YT4g
cmVzb2x2ZUJsb2JSZWZlcmVuY2VzKCk7CisgICAgUmVmPEZvcm1EYXRhPiByZXNvbHZlQmxvYlJl
ZmVyZW5jZXMoKTsKIAogICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIG1fZWxlbWVu
dHMuaXNFbXB0eSgpOyB9CiAgICAgY29uc3QgVmVjdG9yPEZvcm1EYXRhRWxlbWVudD4mIGVsZW1l
bnRzKCkgY29uc3QgeyByZXR1cm4gbV9lbGVtZW50czsgfQpAQCAtMjg5LDcgKzI4OSw3IEBAIHZv
aWQgRm9ybURhdGE6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogfQogCiB0ZW1wbGF0
ZTx0eXBlbmFtZSBEZWNvZGVyPgotUGFzc1JlZlB0cjxGb3JtRGF0YT4gRm9ybURhdGE6OmRlY29k
ZShEZWNvZGVyJiBkZWNvZGVyKQorUmVmUHRyPEZvcm1EYXRhPiBGb3JtRGF0YTo6ZGVjb2RlKERl
Y29kZXImIGRlY29kZXIpCiB7CiAgICAgUmVmUHRyPEZvcm1EYXRhPiBkYXRhID0gRm9ybURhdGE6
OmNyZWF0ZSgpOwogCkBAIC0zMDUsNyArMzA1LDcgQEAgUGFzc1JlZlB0cjxGb3JtRGF0YT4gRm9y
bURhdGE6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
ZGF0YS0+bV9pZGVudGlmaWVyKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1
cm4gZGF0YS5yZWxlYXNlKCk7CisgICAgcmV0dXJuIGRhdGE7CiB9CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVz
b3VyY2VSZXF1ZXN0QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jl
c291cmNlUmVxdWVzdEJhc2UuY3BwCmluZGV4IGExMDMzOGE2MjUxMzEwM2I0NWI4Nzg3NTk5MGEz
OTJjN2E4MjE4ODEuLjBhOWM5ZjA3NzE0MDYwY2M3Yjk1MWI5MDNlNjkxYmE0Nzk3OTNiZGIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0
QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJl
cXVlc3RCYXNlLmNwcApAQCAtNzYsNyArNzYsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8UmVzb3VyY2VS
ZXF1ZXN0PiBSZXNvdXJjZVJlcXVlc3RCYXNlOjphZG9wdChzdGQ6OnVuaXF1ZV9wdHI8Q3Jvcwog
ICAgICAgICBBU1NFUlQoZW5jb2RpbmdDb3VudCA8PSAzKTsKICAgICAgICAgcmVxdWVzdC0+c2V0
UmVzcG9uc2VDb250ZW50RGlzcG9zaXRpb25FbmNvZGluZ0ZhbGxiYWNrQXJyYXkoZW5jb2Rpbmcx
LCBlbmNvZGluZzIsIGVuY29kaW5nMyk7CiAgICAgfQotICAgIHJlcXVlc3QtPnNldEhUVFBCb2R5
KGRhdGEtPmh0dHBCb2R5KTsKKyAgICByZXF1ZXN0LT5zZXRIVFRQQm9keShkYXRhLT5odHRwQm9k
eS5jb3B5UmVmKCkpOwogICAgIHJlcXVlc3QtPnNldEFsbG93Q29va2llcyhkYXRhLT5hbGxvd0Nv
b2tpZXMpOwogICAgIHJlcXVlc3QtPmRvUGxhdGZvcm1BZG9wdChXVEZNb3ZlKGRhdGEpKTsKICAg
ICByZXR1cm4gcmVxdWVzdDsKQEAgLTQxMywxMSArNDEzLDExIEBAIEZvcm1EYXRhKiBSZXNvdXJj
ZVJlcXVlc3RCYXNlOjpodHRwQm9keSgpIGNvbnN0CiAgICAgcmV0dXJuIG1faHR0cEJvZHkuZ2V0
KCk7CiB9CiAKLXZvaWQgUmVzb3VyY2VSZXF1ZXN0QmFzZTo6c2V0SFRUUEJvZHkoUGFzc1JlZlB0
cjxGb3JtRGF0YT4gaHR0cEJvZHkpCit2b2lkIFJlc291cmNlUmVxdWVzdEJhc2U6OnNldEhUVFBC
b2R5KFJlZlB0cjxGb3JtRGF0YT4mJiBodHRwQm9keSkKIHsKICAgICB1cGRhdGVSZXNvdXJjZVJl
cXVlc3QoKTsKIAotICAgIG1faHR0cEJvZHkgPSBodHRwQm9keTsKKyAgICBtX2h0dHBCb2R5ID0g
V1RGTW92ZShodHRwQm9keSk7CiAKICAgICBtX3Jlc291cmNlUmVxdWVzdEJvZHlVcGRhdGVkID0g
dHJ1ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNv
dXJjZVJlcXVlc3RCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291
cmNlUmVxdWVzdEJhc2UuaAppbmRleCBlMmFjZTZlODdhOWRmNDFhZmY1MmQwYzJjYmQxOWI3YWJm
YmZjNmJiLi4yNTY1YzQ2NjhhMWFmMTI5NWU0ZGEwM2JmNjJmM2YyMzZkMjY2ZTAzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2Uu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJh
c2UuaApAQCAtMTIxLDggKzEyMSw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBzZXRSZXNwb25zZUNvbnRlbnREaXNwb3NpdGlvbkVuY29kaW5nRmFs
bGJhY2tBcnJheShjb25zdCBTdHJpbmcmIGVuY29kaW5nMSwgY29uc3QgU3RyaW5nJiBlbmNvZGlu
ZzIgPSBTdHJpbmcoKSwgY29uc3QgU3RyaW5nJiBlbmNvZGluZzMgPSBTdHJpbmcoKSk7CiAKICAg
ICAgICAgV0VCQ09SRV9FWFBPUlQgRm9ybURhdGEqIGh0dHBCb2R5KCkgY29uc3Q7Ci0gICAgICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0SFRUUEJvZHkoUGFzc1JlZlB0cjxGb3JtRGF0YT4gaHR0
cEJvZHkpOwotICAgICAgICAKKyAgICAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRIVFRQQm9k
eShSZWZQdHI8Rm9ybURhdGE+JiYpOworCiAgICAgICAgIGJvb2wgYWxsb3dDb29raWVzKCkgY29u
c3Q7CiAgICAgICAgIHZvaWQgc2V0QWxsb3dDb29raWVzKGJvb2wgYWxsb3dDb29raWVzKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Gb3JtRGF0YVN0
cmVhbUNGTmV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvRm9ybURh
dGFTdHJlYW1DRk5ldC5jcHAKaW5kZXggZjM5ODUxMzlhNDAxYmU2M2EwODZiMjZjZjFkZjFlY2Vm
ZWY2MDI2ZS4uYzEyNjgyNGYxNjQyZGIyNDU5MmIxOGMwMWM1NzhlZjA5ZTZhYTY4MyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Gb3JtRGF0YVN0cmVhbUNG
TmV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0Zvcm1EYXRh
U3RyZWFtQ0ZOZXQuY3BwCkBAIC0zNDgsMTAgKzM0OCw4IEBAIHN0YXRpYyB2b2lkIGZvcm1FdmVu
dENhbGxiYWNrKENGUmVhZFN0cmVhbVJlZiBzdHJlYW0sIENGU3RyZWFtRXZlbnRUeXBlIHR5cGUs
IHZvCiAgICAgfQogfQogCi12b2lkIHNldEhUVFBCb2R5KENGTXV0YWJsZVVSTFJlcXVlc3RSZWYg
cmVxdWVzdCwgUGFzc1JlZlB0cjxGb3JtRGF0YT4gcHJwRm9ybURhdGEpCit2b2lkIHNldEhUVFBC
b2R5KENGTXV0YWJsZVVSTFJlcXVlc3RSZWYgcmVxdWVzdCwgRm9ybURhdGEqIGZvcm1EYXRhKQog
ewotICAgIFJlZlB0cjxGb3JtRGF0YT4gZm9ybURhdGEgPSBwcnBGb3JtRGF0YTsKLQogICAgIGlm
ICghZm9ybURhdGEpCiAgICAgICAgIHJldHVybjsKICAgICAgICAgCkBAIC0zNjcsMTMgKzM2NSwx
NCBAQCB2b2lkIHNldEhUVFBCb2R5KENGTXV0YWJsZVVSTFJlcXVlc3RSZWYgcmVxdWVzdCwgUGFz
c1JlZlB0cjxGb3JtRGF0YT4gcHJwRm9ybURhdAogICAgICAgICB9CiAgICAgfQogCi0gICAgZm9y
bURhdGEgPSBmb3JtRGF0YS0+cmVzb2x2ZUJsb2JSZWZlcmVuY2VzKCk7Ci0gICAgY291bnQgPSBm
b3JtRGF0YS0+ZWxlbWVudHMoKS5zaXplKCk7CisKKyAgICBSZWY8Rm9ybURhdGE+IG5ld0Zvcm1E
YXRhID0gZm9ybURhdGEtPnJlc29sdmVCbG9iUmVmZXJlbmNlcygpOworICAgIGNvdW50ID0gbmV3
Rm9ybURhdGEtPmVsZW1lbnRzKCkuc2l6ZSgpOwogCiAgICAgLy8gUHJlY29tcHV0ZSB0aGUgY29u
dGVudCBsZW5ndGggc28gTlNVUkxDb25uZWN0aW9uIGRvZXNuJ3QgdXNlIGNodW5rZWQgbW9kZS4K
ICAgICB1bnNpZ25lZCBsb25nIGxvbmcgbGVuZ3RoID0gMDsKICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IGNvdW50OyArK2kpIHsKLSAgICAgICAgY29uc3QgRm9ybURhdGFFbGVtZW50JiBlbGVt
ZW50ID0gZm9ybURhdGEtPmVsZW1lbnRzKClbaV07CisgICAgICAgIGNvbnN0IEZvcm1EYXRhRWxl
bWVudCYgZWxlbWVudCA9IG5ld0Zvcm1EYXRhLT5lbGVtZW50cygpW2ldOwogICAgICAgICBpZiAo
ZWxlbWVudC5tX3R5cGUgPT0gRm9ybURhdGFFbGVtZW50OjpUeXBlOjpEYXRhKQogICAgICAgICAg
ICAgbGVuZ3RoICs9IGVsZW1lbnQubV9kYXRhLnNpemUoKTsKICAgICAgICAgZWxzZSB7CkBAIC0z
OTEsNyArMzkwLDcgQEAgdm9pZCBzZXRIVFRQQm9keShDRk11dGFibGVVUkxSZXF1ZXN0UmVmIHJl
cXVlc3QsIFBhc3NSZWZQdHI8Rm9ybURhdGE+IHBycEZvcm1EYXQKICAgICAvLyBDcmVhdGUgYW5k
IHNldCB0aGUgc3RyZWFtLgogCiAgICAgLy8gUGFzcyB0aGUgbGVuZ3RoIGFsb25nIHdpdGggdGhl
IGZvcm1EYXRhIHNvIGl0IGRvZXMgbm90IGhhdmUgdG8gYmUgcmVjb21wdXRlZC4KLSAgICBGb3Jt
Q3JlYXRpb25Db250ZXh0IGZvcm1Db250ZXh0ID0geyBmb3JtRGF0YS5yZWxlYXNlKCksIGxlbmd0
aCB9OworICAgIEZvcm1DcmVhdGlvbkNvbnRleHQgZm9ybUNvbnRleHQgPSB7V1RGTW92ZShuZXdG
b3JtRGF0YSksIGxlbmd0aH07CiAKICAgICBDRlJlYWRTdHJlYW1DYWxsQmFja3NWMSBjYWxsQmFj
a3MgPSB7IDEsIGZvcm1DcmVhdGUsIGZvcm1GaW5hbGl6ZSwgMCwgZm9ybU9wZW4sIDAsIGZvcm1S
ZWFkLCAwLCBmb3JtQ2FuUmVhZCwgZm9ybUNsb3NlLCBmb3JtQ29weVByb3BlcnR5LCAwLCAwLCBm
b3JtU2NoZWR1bGUsIGZvcm1VbnNjaGVkdWxlCiAgICAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvRm9ybURhdGFTdHJlYW1DRk5ldC5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Gb3JtRGF0YVN0cmVhbUNGTmV0LmgKaW5kZXgg
ODdhODRlNTQ1ODc1MWIyMGFmYjA1YTcxY2E2OTljYTkyYTI0ODc0MS4uZjlhNmQ4NzU4ZjM0OTJh
MmMxYWZmZThkMDRkYTFiNTU4NjViMWEyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jZi9Gb3JtRGF0YVN0cmVhbUNGTmV0LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jZi9Gb3JtRGF0YVN0cmVhbUNGTmV0LmgKQEAgLTM5LDcgKzM5
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBGb3JtRGF0YTsKIAotdm9pZCBzZXRI
VFRQQm9keShDRk11dGFibGVVUkxSZXF1ZXN0UmVmLCBQYXNzUmVmUHRyPEZvcm1EYXRhPik7Cit2
b2lkIHNldEhUVFBCb2R5KENGTXV0YWJsZVVSTFJlcXVlc3RSZWYsIEZvcm1EYXRhKik7CiAKIEZv
cm1EYXRhKiBodHRwQm9keUZyb21TdHJlYW0oQ0ZSZWFkU3RyZWFtUmVmKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlcXVlc3RDRk5l
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVxdWVz
dENGTmV0LmNwcAppbmRleCAxOTQ1NTI1ZDhhMGMzZDVkMGZiMWFjODJmMzNkYjMxNzNlMDIyMjcx
Li5hYzg3YjJhMzg0MjcyZGQzYWU3NTgyZWMwZDhjNGQ5M2VjZDdjNWY1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVxdWVzdENGTmV0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVxdWVz
dENGTmV0LmNwcApAQCAtMjA0LDcgKzIwNCw3IEBAIHZvaWQgUmVzb3VyY2VSZXF1ZXN0Ojpkb1Vw
ZGF0ZVBsYXRmb3JtSFRUUEJvZHkoKQogICAgIH0gZWxzZQogICAgICAgICBjZlJlcXVlc3QgPSBD
RlVSTFJlcXVlc3RDcmVhdGVNdXRhYmxlKDAsIHVybC5nZXQoKSwgKENGVVJMUmVxdWVzdENhY2hl
UG9saWN5KWNhY2hlUG9saWN5KCksIHRpbWVvdXRJbnRlcnZhbCgpLCBmaXJzdFBhcnR5Rm9yQ29v
a2llcy5nZXQoKSk7CiAKLSAgICBSZWZQdHI8Rm9ybURhdGE+IGZvcm1EYXRhID0gaHR0cEJvZHko
KTsKKyAgICBGb3JtRGF0YSogZm9ybURhdGEgPSBodHRwQm9keSgpOwogICAgIGlmIChmb3JtRGF0
YSAmJiAhZm9ybURhdGEtPmlzRW1wdHkoKSkKICAgICAgICAgV2ViQ29yZTo6c2V0SFRUUEJvZHko
Y2ZSZXF1ZXN0LCBmb3JtRGF0YSk7CiAKQEAgLTMzNSw3ICszMzUsNyBAQCB2b2lkIFJlc291cmNl
UmVxdWVzdDo6dXBkYXRlRnJvbURlbGVnYXRlUHJlc2VydmluZ09sZFByb3BlcnRpZXMoY29uc3Qg
UmVzb3VyY2VSZQogICAgICp0aGlzID0gZGVsZWdhdGVQcm92aWRlZFJlcXVlc3Q7CiAKICAgICBz
ZXRQcmlvcml0eShvbGRQcmlvcml0eSk7Ci0gICAgc2V0SFRUUEJvZHkob2xkSFRUUEJvZHkucmVs
ZWFzZSgpKTsKKyAgICBzZXRIVFRQQm9keShXVEZNb3ZlKG9sZEhUVFBCb2R5KSk7CiAgICAgc2V0
SGlkZGVuRnJvbUluc3BlY3Rvcihpc0hpZGRlbkZyb21JbnNwZWN0b3IpOwogICAgIHNldFJlcXVl
c3RlcihvbGRSZXF1ZXN0ZXIpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jb2NvYS9SZXNvdXJjZVJlcXVlc3RDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmVzb3VyY2VSZXF1ZXN0Q29jb2EubW0KaW5kZXggZmNm
NDkzN2MzNjBiMjJhZjhlMWJmYzlhNDUzMGJiOTFjMTcxYmI1Yy4uNjcyYjFiOWIwNDU2NmUzYzY2
OGFhMzJjMmVmYzFhMzg1NTU2YTQ2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jb2NvYS9SZXNvdXJjZVJlcXVlc3RDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Jlc291cmNlUmVxdWVzdENvY29hLm1tCkBAIC0x
OTAsNyArMTkwLDcgQEAgdm9pZCBSZXNvdXJjZVJlcXVlc3Q6OmRvVXBkYXRlUGxhdGZvcm1IVFRQ
Qm9keSgpCiAgICAgZWxzZQogICAgICAgICBuc1JlcXVlc3QgPSBbW05TTXV0YWJsZVVSTFJlcXVl
c3QgYWxsb2NdIGluaXRXaXRoVVJMOnVybCgpXTsKIAotICAgIFJlZlB0cjxGb3JtRGF0YT4gZm9y
bURhdGEgPSBodHRwQm9keSgpOworICAgIEZvcm1EYXRhKiBmb3JtRGF0YSA9IGh0dHBCb2R5KCk7
CiAgICAgaWYgKGZvcm1EYXRhICYmICFmb3JtRGF0YS0+aXNFbXB0eSgpKQogICAgICAgICBXZWJD
b3JlOjpzZXRIVFRQQm9keShuc1JlcXVlc3QsIGZvcm1EYXRhKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxlTWFuYWdlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVN
YW5hZ2VyLmNwcAppbmRleCBjZDk3N2JiM2MwN2ZhMWE3ZTZkYThiYzU2MmFlNTUzMzY3ZGE3NzI3
Li43NzQyNmZhODg0NWI0NTEwOWNmZDViMTQ2MzI3MzRjMmZmNzg2ZjQ5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVNYW5hZ2Vy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VI
YW5kbGVNYW5hZ2VyLmNwcApAQCAtNzYzLDkgKzc2MywxMCBAQCBzdGF0aWMgaW5saW5lIHNpemVf
dCBnZXRGb3JtRWxlbWVudHNDb3VudChSZXNvdXJjZUhhbmRsZSogam9iKQogCiAgICAgLy8gUmVz
b2x2ZSB0aGUgYmxvYiBlbGVtZW50cyBzbyB0aGUgZm9ybURhdGEgY2FuIGNvcnJlY3RseSByZXBv
cnQgaXQncyBzaXplLgogICAgIGZvcm1EYXRhID0gZm9ybURhdGEtPnJlc29sdmVCbG9iUmVmZXJl
bmNlcygpOwotICAgIGpvYi0+Zmlyc3RSZXF1ZXN0KCkuc2V0SFRUUEJvZHkoZm9ybURhdGEpOwor
ICAgIHNpemVfdCBzaXplID0gZm9ybURhdGEtPmVsZW1lbnRzKCkuc2l6ZSgpOworICAgIGpvYi0+
Zmlyc3RSZXF1ZXN0KCkuc2V0SFRUUEJvZHkoV1RGTW92ZShmb3JtRGF0YSkpOwogCi0gICAgcmV0
dXJuIGZvcm1EYXRhLT5lbGVtZW50cygpLnNpemUoKTsKKyAgICByZXR1cm4gc2l6ZTsKIH0KIAog
c3RhdGljIHZvaWQgc2V0dXBGb3JtRGF0YShSZXNvdXJjZUhhbmRsZSogam9iLCBDVVJMb3B0aW9u
IHNpemVPcHRpb24sIHN0cnVjdCBjdXJsX3NsaXN0KiogaGVhZGVycykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0Zvcm1EYXRhU3RyZWFtTWFjLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9Gb3JtRGF0YVN0cmVhbU1hYy5oCmlu
ZGV4IGRiODFjNjY4N2M0MjJlNWVjYmMzNjkwZTIzNDVhZjgyMjRhZDA2YzYuLmI4NWRkY2IxNWVk
OGYwOGQ1OWZhYzQ2ZWRmZmJlNGUxODI5NDI0NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvbWFjL0Zvcm1EYXRhU3RyZWFtTWFjLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvRm9ybURhdGFTdHJlYW1NYWMuaApAQCAtNDIsNyAr
NDIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICBjbGFzcyBGb3JtRGF0YTsKIAotICAg
IHZvaWQgc2V0SFRUUEJvZHkoTlNNdXRhYmxlVVJMUmVxdWVzdCAqLCBQYXNzUmVmUHRyPEZvcm1E
YXRhPik7CisgICAgdm9pZCBzZXRIVFRQQm9keShOU011dGFibGVVUkxSZXF1ZXN0ICosIEZvcm1E
YXRhKik7CiAgICAgRm9ybURhdGEqIGh0dHBCb2R5RnJvbVN0cmVhbShOU0lucHV0U3RyZWFtICop
OwogCiAgICAgQ0ZTdHJpbmdSZWYgZm9ybURhdGFTdHJlYW1MZW5ndGhQcm9wZXJ0eU5hbWUoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0Zvcm1EYXRh
U3RyZWFtTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvRm9ybURh
dGFTdHJlYW1NYWMubW0KaW5kZXggYjU3MzRmOThlZGZiZjExMzVlMTdkNGI3ZWJjMjljYzU1ZmUw
NDM1MS4uZjg0ZDQ3OTg2MGM3ZTg3MmEzY2ZmZDRiMGMxYmRjNjI2OTViMzc5MiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvRm9ybURhdGFTdHJlYW1NYWMu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvRm9ybURhdGFTdHJl
YW1NYWMubW0KQEAgLTMzLDcgKzMzLDYgQEAKIAogI2ltcG9ydCAiRm9ybURhdGEuaCIKICNpbXBv
cnQgIkZvcm1EYXRhU3RyZWFtQ0ZOZXQuaCIKLSNpbXBvcnQgPHd0Zi9QYXNzUmVmUHRyLmg+CiAK
IEBpbnRlcmZhY2UgTlNVUkxSZXF1ZXN0IChXZWJOU1VSTFJlcXVlc3REZXRhaWxzKQogLSAoQ0ZV
UkxSZXF1ZXN0UmVmKV9DRlVSTFJlcXVlc3Q7CkBAIC00MSw5ICs0MCw5IEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotdm9pZCBzZXRIVFRQQm9keShOU011dGFibGVVUkxSZXF1ZXN0ICpyZXF1
ZXN0LCBQYXNzUmVmUHRyPEZvcm1EYXRhPiBwcnBGb3JtRGF0YSkKK3ZvaWQgc2V0SFRUUEJvZHko
TlNNdXRhYmxlVVJMUmVxdWVzdCAqcmVxdWVzdCwgRm9ybURhdGEqIGZvcm1EYXRhKQogewotICAg
IHNldEhUVFBCb2R5KGNvbnN0X2Nhc3Q8Q0ZNdXRhYmxlVVJMUmVxdWVzdFJlZj4oW3JlcXVlc3Qg
X0NGVVJMUmVxdWVzdF0pLCBwcnBGb3JtRGF0YSk7CisgICAgc2V0SFRUUEJvZHkoY29uc3RfY2Fz
dDxDRk11dGFibGVVUkxSZXF1ZXN0UmVmPihbcmVxdWVzdCBfQ0ZVUkxSZXF1ZXN0XSksIGZvcm1E
YXRhKTsKIH0KIAogRm9ybURhdGEqIGh0dHBCb2R5RnJvbVN0cmVhbShOU0lucHV0U3RyZWFtICpz
dHJlYW0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAv
UmVzb3VyY2VIYW5kbGVTb3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
c291cC9SZXNvdXJjZUhhbmRsZVNvdXAuY3BwCmluZGV4IGI2N2M5MGRkOWI0YzI5N2MwODJlMTIw
NThhMTgxOTcwMmI5N2ExN2UuLjY1NGU2YjMyNDg0Njg1ZWQ0NDc3MDhjYTQwY2Y2ZjVkZTU0MzVl
NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNv
dXJjZUhhbmRsZVNvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
c291cC9SZXNvdXJjZUhhbmRsZVNvdXAuY3BwCkBAIC01MDYsNyArNTA2LDcgQEAgc3RhdGljIHZv
aWQgZG9SZWRpcmVjdChSZXNvdXJjZUhhbmRsZSogaGFuZGxlKQogICAgICAgICAvLyBvciBpZiBj
dXJyZW50IHJlZGlyZWN0aW9uIHNheXMgc28KICAgICAgICAgaWYgKG1lc3NhZ2UtPm1ldGhvZCA9
PSBTT1VQX01FVEhPRF9HRVQgfHwgc2hvdWxkUmVkaXJlY3RBc0dFVChtZXNzYWdlLCBuZXdVUkws
IGNyb3NzT3JpZ2luKSkgewogICAgICAgICAgICAgbmV3UmVxdWVzdC5zZXRIVFRQTWV0aG9kKCJH
RVQiKTsKLSAgICAgICAgICAgIG5ld1JlcXVlc3Quc2V0SFRUUEJvZHkoMCk7CisgICAgICAgICAg
ICBuZXdSZXF1ZXN0LnNldEhUVFBCb2R5KG51bGxwdHIpOwogICAgICAgICAgICAgbmV3UmVxdWVz
dC5jbGVhckhUVFBDb250ZW50VHlwZSgpOwogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3ht
bC9YTUxIdHRwUmVxdWVzdC5jcHAKaW5kZXggMjA5NTg5MzkzOWI3NDUwY2Y5ZGRlNGM0ZTU4ZDRi
YzE2YWNiNDZkNi4uMzVkYjI1MWVmZDhiZjJjNTNlZmRlODU3ZTRhNzNmZDNmODQ0YWM2ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCkBAIC03NDMsNyArNzQzLDcgQEAgdm9p
ZCBYTUxIdHRwUmVxdWVzdDo6Y3JlYXRlUmVxdWVzdChFeGNlcHRpb25Db2RlJiBlYykKICAgICBp
ZiAobV9yZXF1ZXN0RW50aXR5Qm9keSkgewogICAgICAgICBBU1NFUlQobV9tZXRob2QgIT0gIkdF
VCIpOwogICAgICAgICBBU1NFUlQobV9tZXRob2QgIT0gIkhFQUQiKTsKLSAgICAgICAgcmVxdWVz
dC5zZXRIVFRQQm9keShtX3JlcXVlc3RFbnRpdHlCb2R5LnJlbGVhc2UoKSk7CisgICAgICAgIHJl
cXVlc3Quc2V0SFRUUEJvZHkoV1RGTW92ZShtX3JlcXVlc3RFbnRpdHlCb2R5KSk7CiAgICAgfQog
CiAgICAgaWYgKCFtX3JlcXVlc3RIZWFkZXJzLmlzRW1wdHkoKSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvd2luL1dlYk11dGFibGVVUkxSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvd2lu
L1dlYk11dGFibGVVUkxSZXF1ZXN0LmNwcAppbmRleCA0Y2EwMjZhZjZmNzI4MDFlZDA2ZjQ0YjA3
OGE2NmM5MWI1NzhmZmZkLi4xYTE0YTA5NmYyMzU3Y2E3ZjUyYTNhMmIxMmVmNmVlNWE1OWQ2MzQ2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJNdXRhYmxlVVJMUmVxdWVzdC5jcHAK
KysrIGIvU291cmNlL1dlYktpdC93aW4vV2ViTXV0YWJsZVVSTFJlcXVlc3QuY3BwCkBAIC0zMDcs
NyArMzA3LDcgQEAgSFJFU1VMVCBXZWJNdXRhYmxlVVJMUmVxdWVzdDo6c2V0SFRUUEJvZHkoX0lu
X29wdF8gSVN0cmVhbSogZGF0YSkKICAgICBpZiAoRkFJTEVEKGRhdGEtPlJlYWQoZm9ybURhdGEs
IHN0YXQuY2JTaXplLkxvd1BhcnQsICZieXRlc1JlYWQpKSkKICAgICAgICAgcmV0dXJuIEVfRkFJ
TDsKIAotICAgIG1fcmVxdWVzdC5zZXRIVFRQQm9keShodHRwQm9keSk7CisgICAgbV9yZXF1ZXN0
LnNldEhUVFBCb2R5KFdURk1vdmUoaHR0cEJvZHkpKTsKICAgICByZXR1cm4gU19PSzsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNl
TG9hZFBhcmFtZXRlcnMuY3BwIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuY3BwCmluZGV4IGY0YzU4YTVlNGM2M2E5NTIyYjY0Yjk4
ZmI4MGM4NzAxYTI3MDZiY2QuLmI1NmIyZjdkOGQ5M2IwZmY0MWRjZjg0NDVkZWQxNjNlZWRmMjcx
ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNv
dXJjZUxvYWRQYXJhbWV0ZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5jcHAKQEAgLTEyMSw3ICsxMjEsNyBAQCBi
b29sIE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzOjpkZWNvZGUoSVBDOjpBcmd1bWVudERl
Y29kZXImIGRlY29kZXIsIE5ldHdvcgogICAgICAgICBSZWZQdHI8Rm9ybURhdGE+IGZvcm1EYXRh
ID0gRm9ybURhdGE6OmRlY29kZShkZWNvZGVyKTsKICAgICAgICAgaWYgKCFmb3JtRGF0YSkKICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgcmVzdWx0LnJlcXVlc3Quc2V0SFRUUEJv
ZHkoZm9ybURhdGEucmVsZWFzZSgpKTsKKyAgICAgICAgcmVzdWx0LnJlcXVlc3Quc2V0SFRUUEJv
ZHkoV1RGTW92ZShmb3JtRGF0YSkpOwogCiAgICAgICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRs
ZUFycmF5IHJlcXVlc3RCb2R5U2FuZGJveEV4dGVuc2lvbkhhbmRsZXM7CiAgICAgICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUocmVxdWVzdEJvZHlTYW5kYm94RXh0ZW5zaW9uSGFuZGxlcykpCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>