<?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>161087</bug_id>
          
          <creation_ts>2016-08-23 09:53:33 -0700</creation_ts>
          <short_desc>[Fetch API] Add support for BufferSource bodies</short_desc>
          <delta_ts>2016-08-29 02:20:01 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>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>151937</blocked>
    
    <blocked>161190</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="youenn fablet">youennf</reporter>
          <assigned_to name="youenn fablet">youennf</assigned_to>
          <cc>achristensen</cc>
    
    <cc>commit-queue</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1222251</commentid>
    <comment_count>0</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-08-23 09:53:33 -0700</bug_when>
    <thetext>We should add support for ArrayBuffer/ArrayBufferView for fetch requests and responses.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1222288</commentid>
    <comment_count>1</comment_count>
      <attachid>286737</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-08-23 11:03:27 -0700</bug_when>
    <thetext>Created attachment 286737
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1222322</commentid>
    <comment_count>2</comment_count>
      <attachid>286749</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-08-23 11:35:59 -0700</bug_when>
    <thetext>Created attachment 286749
Adding FormData upload</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1222404</commentid>
    <comment_count>3</comment_count>
      <attachid>286772</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-08-23 14:10:43 -0700</bug_when>
    <thetext>Created attachment 286772
Adding FormData upload</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1222407</commentid>
    <comment_count>4</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-08-23 14:14:39 -0700</bug_when>
    <thetext>Note the small difference of the request content-type between XHR and fetch API for FormData upload: XHR has a space before boundary (legacy), not fetch API (as per fetch spec).
I guess XHR should be aligned.
But from what I saw, chrome and Firefox also insert a space before boundary parameter for fetch API (and XHR I guess).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1223991</commentid>
    <comment_count>5</comment_count>
      <attachid>286772</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-08-27 17:33:19 -0700</bug_when>
    <thetext>Comment on attachment 286772
Adding FormData upload

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

&gt; Source/WebCore/Modules/fetch/FetchBody.cpp:58
&gt; +    m_formData = FormData::createMultiPart(static_cast&lt;FormDataList&amp;&gt;(formData), formData.encoding(), &amp;document);

I’m concerned about this static_cast to FormDataList&amp; and I don’t understand why it is needed.

&gt; Source/WebCore/Modules/fetch/FetchBody.cpp:212
&gt; +        m_text.releaseImpl();

This is not the right thing to write. Instead please do something more like this:

    m_text = { };

We don’t want to start using releaseImpl just to clear out a string.

&gt; Source/WebCore/Modules/fetch/FetchBody.cpp:254
&gt; +    m_text.releaseImpl();

Ditto.

&gt; Source/WebCore/Modules/fetch/FetchBody.cpp:295
&gt;      if (m_type == Type::None)

Why cascading if here instead of switch? I think it should be switch since the other functions are.

&gt; Source/WebCore/Modules/fetch/FetchBody.h:111
&gt; -    // FIXME: Add support for BufferSource and URLSearchParams.
&gt; +    // FIXME: Add support for URLSearchParams.
&gt;      RefPtr&lt;Blob&gt; m_blob;
&gt; -    RefPtr&lt;DOMFormData&gt; m_formData;
&gt; +    RefPtr&lt;FormData&gt; m_formData;
&gt;      RefPtr&lt;ArrayBuffer&gt; m_data;
&gt; +    RefPtr&lt;ArrayBufferView&gt; m_dataView;
&gt;      String m_text;

We should change this class to use std::experimental::variant soon.

&gt; Source/WebCore/Modules/fetch/FetchRequest.cpp:260
&gt; +        ASSERT(scriptExecutionContext());

What guarantees this assertion will not fail?

&gt; Source/WebCore/Modules/fetch/FetchRequest.cpp:300
&gt; +    ASSERT(scriptExecutionContext());

What guarantees this assertion will not fail?

&gt; Source/WebCore/Modules/fetch/FetchResponse.cpp:85
&gt; +    ASSERT(scriptExecutionContext());

What guarantees this assertion will not fail?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1224141</commentid>
    <comment_count>6</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-08-29 01:48:41 -0700</bug_when>
    <thetext>Thanks for the review.

(In reply to comment #5)
&gt; Comment on attachment 286772 [details]
&gt; Adding FormData upload
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=286772&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/Modules/fetch/FetchBody.cpp:58
&gt; &gt; +    m_formData = FormData::createMultiPart(static_cast&lt;FormDataList&amp;&gt;(formData), formData.encoding(), &amp;document);
&gt; 
&gt; I’m concerned about this static_cast to FormDataList&amp; and I don’t understand
&gt; why it is needed.

It is not needed, I removed it.
&gt; 
&gt; &gt; Source/WebCore/Modules/fetch/FetchBody.cpp:212
&gt; &gt; +        m_text.releaseImpl();
&gt; 
&gt; This is not the right thing to write. Instead please do something more like
&gt; this:
&gt; 
&gt;     m_text = { };
&gt; 
&gt; We don’t want to start using releaseImpl just to clear out a string.

OK

&gt; &gt; Source/WebCore/Modules/fetch/FetchBody.cpp:254
&gt; &gt; +    m_text.releaseImpl();
&gt; 
&gt; Ditto.
&gt; 
&gt; &gt; Source/WebCore/Modules/fetch/FetchBody.cpp:295
&gt; &gt;      if (m_type == Type::None)
&gt; 
&gt; Why cascading if here instead of switch? I think it should be switch since
&gt; the other functions are.

Right, we support all relevant cases now.

&gt; &gt; Source/WebCore/Modules/fetch/FetchBody.h:111
&gt; &gt; -    // FIXME: Add support for BufferSource and URLSearchParams.
&gt; &gt; +    // FIXME: Add support for URLSearchParams.
&gt; &gt;      RefPtr&lt;Blob&gt; m_blob;
&gt; &gt; -    RefPtr&lt;DOMFormData&gt; m_formData;
&gt; &gt; +    RefPtr&lt;FormData&gt; m_formData;
&gt; &gt;      RefPtr&lt;ArrayBuffer&gt; m_data;
&gt; &gt; +    RefPtr&lt;ArrayBufferView&gt; m_dataView;
&gt; &gt;      String m_text;
&gt; 
&gt; We should change this class to use std::experimental::variant soon.

OK.

&gt; &gt; Source/WebCore/Modules/fetch/FetchRequest.cpp:260
&gt; &gt; +        ASSERT(scriptExecutionContext());
&gt; 
&gt; What guarantees this assertion will not fail?

setBody is called when constructing FetchRequest.
FetchRequest built-in constructor takes a ScriptExecutionContext.
The check is done in createJSObject.

We could make setBody take a ScriptExecutionContext&amp; but that would add never-used binding generated code and an unneeded if check.

&gt; &gt; Source/WebCore/Modules/fetch/FetchRequest.cpp:300
&gt; &gt; +    ASSERT(scriptExecutionContext());
&gt; 
&gt; What guarantees this assertion will not fail?

internalRequest() is called from FetchLoader::start which would not be called if scriptExecutionContext is null.
The check is done in DOMWindowFetch/WorkerGlobalScope::fetch.
Maybe it would be clearer to pass a ScriptExecutionContext&amp; as parameter in that case.

&gt; &gt; Source/WebCore/Modules/fetch/FetchResponse.cpp:85
&gt; &gt; +    ASSERT(scriptExecutionContext());
&gt; 
&gt; What guarantees this assertion will not fail?

This is similar to the first case, the check is done in createJSObject.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1224142</commentid>
    <comment_count>7</comment_count>
      <attachid>287258</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-08-29 01:49:13 -0700</bug_when>
    <thetext>Created attachment 287258
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1224146</commentid>
    <comment_count>8</comment_count>
      <attachid>287258</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-08-29 02:19:56 -0700</bug_when>
    <thetext>Comment on attachment 287258
Patch for landing

Clearing flags on attachment: 287258

Committed r205115: &lt;http://trac.webkit.org/changeset/205115&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1224147</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-08-29 02:20:01 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>286737</attachid>
            <date>2016-08-23 11:03:27 -0700</date>
            <delta_ts>2016-08-23 11:35:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-161087-20160823200127.patch</filename>
            <type>text/plain</type>
            <size>27325</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA0Nzk1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODljOWUyZDVlZTc5YTc0
YTYwZmY4MjgxYmVmYTg4MjBkNTg0MDY4Mi4uNGExMWMxMDNjNTcxNGNjZDc3Mzk4NWQ3YzJjNGM4
ZDEwNDM0NGYyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDI5IEBACiAyMDE2LTA4LTIzICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAorICAgICAgICBbRmV0Y2ggQVBJXSBBZGQg
c3VwcG9ydCBmb3IgQnVmZmVyU291cmNlIGJvZGllcworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYxMDg3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgQ292ZXJlZCBieSB1cGRhdGVkIHRlc3RzLi4KKworICAg
ICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZl
dGNoQm9keTo6RmV0Y2hCb2R5KTogQWRkaW5nIEFycmF5QnVmZmVyIGFuZCBBcnJheUJ1ZmZlclZp
ZXcgY29uc3RydWN0b3JzLgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5OjpleHRyYWN0KTog
RXh0cmFjdGluZyBpbiBjYXNlIG9mIEJ1ZmZlclNvdXJjZSAoaS5lLiBBcnJheUJ1ZmZlciBvciBB
cnJheUJ1ZmZlclZpZXcpCisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHk6OmNvbnN1bWUpOiBB
ZGRpbmcgc3VwcG9ydCB0byBjb25zdW1lIEFycmF5QnVmZmVyVmlldy4KKyAgICAgICAgKFdlYkNv
cmU6OkZldGNoQm9keTo6Y29uc3VtZUFzU3RyZWFtKTogQWRkaW5nIHN1cHBvcnQgdG8gY29uc3Vt
ZSBBcnJheUJ1ZmZlclZpZXcgYXMgYSBzdHJlYW0uCisgICAgICAgIENsb25lZCB0aGUgQXJyYXlC
dWZmZXIgYmVmb3JlIGVucXVldWluZyBpdCBpbiAgdGhlIHN0cmVhbS4KKyAgICAgICAgKFdlYkNv
cmU6OkZldGNoQm9keTo6Y29uc3VtZUFycmF5QnVmZmVyKTogQ2xlYW5pbmcgbV9kYXRhIGFmdGVy
IGJlaW5nIGNvbnN1bWVkLgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Ojpjb25zdW1lQXJy
YXlCdWZmZXJWaWV3KTogQWRkaW5nIHN1cHBvcnQgdG8gY29uc3VtZSBBcnJheUJ1ZmZlclZpZXcu
CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHk6OmNvbnN1bWVUZXh0KTogQ2xlYW5pbmcgbV90
ZXh0IGFmdGVyIGJlaW5nIGNvbnN1bWVkLgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Ojpj
b25zdW1lQmxvYik6IERpdHRvIGZvciBtX2Jsb2IuCisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJv
ZHk6OmJvZHlGb3JJbnRlcm5hbFJlcXVlc3QpOiBBZGRpbmcgc3VwcG9ydCBmb3IgQXJyYXlCdWZm
ZXIgYW5kIEFycmF5QnVmZmVyVmlldyB1cGxvYWQuCisgICAgICAgICogTW9kdWxlcy9mZXRjaC9G
ZXRjaEJvZHkuaDoKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RmV0Y2hSZXNwb25zZTo6Y29uc3VtZUJvZHlBc1N0cmVhbSk6IEFk
ZGluZyBBU1NFUlQgdG8gZW5zdXJlIGRhdGEgaXMgbm90IGNvbnN1bWVkIHR3aWNlLgorCisyMDE2
LTA4LTIzICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKwogICAgICAgICBJbXBs
ZW1lbnQgcmVkaXJlY3Qgc3VwcG9ydCBwb3N0IENPUlMtcHJlZmxpZ2h0CiAgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTkwNTYKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuY3BwCmluZGV4IDFiOGIxNGFmODZiNGQ2ZGVmNGY4
YjY1ZWNiNGZhN2U1MDE5MmU4MmIuLjI1NWNjMDI1ZTUwMjQwNzAwNWQzOWNhNzMwNTkxNzgwNjVk
NTAzYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHAKQEAg
LTQxLDYgKzQxLDggQEAKICNpbmNsdWRlICJKU0RPTUZvcm1EYXRhLmgiCiAjaW5jbHVkZSAiSlNS
ZWFkYWJsZVN0cmVhbS5oIgogI2luY2x1ZGUgIlJlYWRhYmxlU3RyZWFtU291cmNlLmgiCisjaW5j
bHVkZSA8cnVudGltZS9BcnJheUJ1ZmZlci5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvQXJyYXlCdWZm
ZXJWaWV3Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNjYsNiArNjgsMTggQEAgRmV0
Y2hCb2R5OjpGZXRjaEJvZHkoU3RyaW5nJiYgdGV4dCkKIHsKIH0KIAorRmV0Y2hCb2R5OjpGZXRj
aEJvZHkoUmVmPEFycmF5QnVmZmVyPiYmIGRhdGEpCisgICAgOiBtX3R5cGUoVHlwZTo6QXJyYXlC
dWZmZXIpCisgICAgLCBtX2RhdGEoV1RGTW92ZShkYXRhKSkKK3sKK30KKworRmV0Y2hCb2R5OjpG
ZXRjaEJvZHkoUmVmPEFycmF5QnVmZmVyVmlldz4mJiBkYXRhVmlldykKKyAgICA6IG1fdHlwZShU
eXBlOjpBcnJheUJ1ZmZlclZpZXcpCisgICAgLCBtX2RhdGFWaWV3KFdURk1vdmUoZGF0YVZpZXcp
KQoreworfQorCiBGZXRjaEJvZHkgRmV0Y2hCb2R5OjpleHRyYWN0KEpTQzo6RXhlY1N0YXRlJiBz
dGF0ZSwgSlNDOjpKU1ZhbHVlIHZhbHVlKQogewogICAgIGlmICh2YWx1ZS5pbmhlcml0cyhKU0Js
b2I6OmluZm8oKSkpCkBAIC03Niw3ICs5MCwxNiBAQCBGZXRjaEJvZHkgRmV0Y2hCb2R5OjpleHRy
YWN0KEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpKU1ZhbHVlIHZhbHVlKQogICAgICAgICBy
ZXR1cm4gRmV0Y2hCb2R5KHZhbHVlLnRvV1RGU3RyaW5nKCZzdGF0ZSkpOwogICAgIGlmICh2YWx1
ZS5pbmhlcml0cyhKU1JlYWRhYmxlU3RyZWFtOjppbmZvKCkpKQogICAgICAgICByZXR1cm4geyBU
eXBlOjpSZWFkYWJsZVN0cmVhbSB9OwotICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgQnVmZmVyU291
cmNlIGV4dHJhY3Rpb24uCisgICAgaWYgKHZhbHVlLmluaGVyaXRzKEpTQzo6SlNBcnJheUJ1ZmZl
cjo6aW5mbygpKSkgeworICAgICAgICBBcnJheUJ1ZmZlciogZGF0YSA9IHRvQXJyYXlCdWZmZXIo
dmFsdWUpOworICAgICAgICBBU1NFUlQoZGF0YSk7CisgICAgICAgIHJldHVybiB7ICpkYXRhIH07
CisgICAgfQorICAgIGlmICh2YWx1ZS5pbmhlcml0cyhKU0M6OkpTQXJyYXlCdWZmZXJWaWV3Ojpp
bmZvKCkpKSB7CisgICAgICAgIFJlZlB0cjxKU0M6OkFycmF5QnVmZmVyVmlldz4gZGF0YSA9IHRv
QXJyYXlCdWZmZXJWaWV3KHZhbHVlKTsKKyAgICAgICAgQVNTRVJUKGRhdGEpOworICAgICAgICBy
ZXR1cm4geyBkYXRhLnJlbGVhc2VOb25OdWxsKCkgfTsKKyAgICB9CiAgICAgcmV0dXJuIHsgfTsK
IH0KIApAQCAtMTM4LDYgKzE2MSw5IEBAIHZvaWQgRmV0Y2hCb2R5Ojpjb25zdW1lKEZldGNoQm9k
eU93bmVyJiBvd25lciwgRGVmZXJyZWRXcmFwcGVyJiYgcHJvbWlzZSkKICAgICBjYXNlIFR5cGU6
OkFycmF5QnVmZmVyOgogICAgICAgICBjb25zdW1lQXJyYXlCdWZmZXIocHJvbWlzZSk7CiAgICAg
ICAgIHJldHVybjsKKyAgICBjYXNlIFR5cGU6OkFycmF5QnVmZmVyVmlldzoKKyAgICAgICAgY29u
c3VtZUFycmF5QnVmZmVyVmlldyhwcm9taXNlKTsKKyAgICAgICAgcmV0dXJuOwogICAgIGNhc2Ug
VHlwZTo6VGV4dDoKICAgICAgICAgY29uc3VtZVRleHQocHJvbWlzZSk7CiAgICAgICAgIHJldHVy
bjsKQEAgLTE2OCwxNiArMTk0LDI1IEBAIHZvaWQgRmV0Y2hCb2R5Ojpjb25zdW1lQXNTdHJlYW0o
RmV0Y2hCb2R5T3duZXImIG93bmVyLCBGZXRjaFJlc3BvbnNlU291cmNlJiBzb3VyCiAgICAgc3dp
dGNoIChtX3R5cGUpIHsKICAgICBjYXNlIFR5cGU6OkFycmF5QnVmZmVyOgogICAgICAgICBBU1NF
UlQobV9kYXRhKTsKLSAgICAgICAgY2xvc2VTdHJlYW0gPSBzb3VyY2UuZW5xdWV1ZShSZWZQdHI8
SlNDOjpBcnJheUJ1ZmZlcj4obV9kYXRhKSk7CisgICAgICAgIGNsb3NlU3RyZWFtID0gc291cmNl
LmVucXVldWUoQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZShtX2RhdGEtPmRhdGEoKSwgbV9kYXRhLT5i
eXRlTGVuZ3RoKCkpKTsKKyAgICAgICAgbV9kYXRhID0gbnVsbHB0cjsKKyAgICAgICAgYnJlYWs7
CisgICAgY2FzZSBUeXBlOjpBcnJheUJ1ZmZlclZpZXc6IHsKKyAgICAgICAgQVNTRVJUKG1fZGF0
YVZpZXcpOworICAgICAgICBjbG9zZVN0cmVhbSA9IHNvdXJjZS5lbnF1ZXVlKEFycmF5QnVmZmVy
Ojp0cnlDcmVhdGUobV9kYXRhVmlldy0+YmFzZUFkZHJlc3MoKSwgbV9kYXRhVmlldy0+Ynl0ZUxl
bmd0aCgpKSk7CisgICAgICAgIG1fZGF0YVZpZXcgPSBudWxscHRyOwogICAgICAgICBicmVhazsK
KyAgICB9CiAgICAgY2FzZSBUeXBlOjpUZXh0OiB7CiAgICAgICAgIFZlY3Rvcjx1aW50OF90PiBk
YXRhID0gZXh0cmFjdEZyb21UZXh0KCk7CiAgICAgICAgIGNsb3NlU3RyZWFtID0gc291cmNlLmVu
cXVldWUoQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpKTsK
KyAgICAgICAgbV90ZXh0LnJlbGVhc2VJbXBsKCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAg
ICBjYXNlIFR5cGU6OkJsb2I6CiAgICAgICAgIEFTU0VSVChtX2Jsb2IpOwogICAgICAgICBvd25l
ci5sb2FkQmxvYigqbV9ibG9iLCBudWxscHRyKTsKKyAgICAgICAgbV9ibG9iID0gbnVsbHB0cjsK
ICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBUeXBlOjpOb25lOgogICAgICAgICBjbG9zZVN0cmVh
bSA9IHRydWU7CkBAIC0xOTcsMTMgKzIzMiwyMyBAQCB2b2lkIEZldGNoQm9keTo6Y29uc3VtZUFz
U3RyZWFtKEZldGNoQm9keU93bmVyJiBvd25lciwgRmV0Y2hSZXNwb25zZVNvdXJjZSYgc291cgog
CiB2b2lkIEZldGNoQm9keTo6Y29uc3VtZUFycmF5QnVmZmVyKERlZmVycmVkV3JhcHBlciYgcHJv
bWlzZSkKIHsKKyAgICBBU1NFUlQobV9kYXRhKTsKICAgICBtX2NvbnN1bWVyLnJlc29sdmVXaXRo
RGF0YShwcm9taXNlLCBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4obV9kYXRhLT5kYXRhKCkp
LCBtX2RhdGEtPmJ5dGVMZW5ndGgoKSk7CisgICAgbV9kYXRhID0gbnVsbHB0cjsKK30KKwordm9p
ZCBGZXRjaEJvZHk6OmNvbnN1bWVBcnJheUJ1ZmZlclZpZXcoRGVmZXJyZWRXcmFwcGVyJiBwcm9t
aXNlKQoreworICAgIEFTU0VSVChtX2RhdGFWaWV3KTsKKyAgICBtX2NvbnN1bWVyLnJlc29sdmVX
aXRoRGF0YShwcm9taXNlLCBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4obV9kYXRhVmlldy0+
YmFzZUFkZHJlc3MoKSksIG1fZGF0YVZpZXctPmJ5dGVMZW5ndGgoKSk7CisgICAgbV9kYXRhVmll
dyA9IG51bGxwdHI7CiB9CiAKIHZvaWQgRmV0Y2hCb2R5Ojpjb25zdW1lVGV4dChEZWZlcnJlZFdy
YXBwZXImIHByb21pc2UpCiB7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGEgPSBleHRyYWN0RnJv
bVRleHQoKTsKICAgICBtX2NvbnN1bWVyLnJlc29sdmVXaXRoRGF0YShwcm9taXNlLCBkYXRhLmRh
dGEoKSwgZGF0YS5zaXplKCkpOworICAgIG1fdGV4dC5yZWxlYXNlSW1wbCgpOwogfQogCiB2b2lk
IEZldGNoQm9keTo6Y29uc3VtZUJsb2IoRmV0Y2hCb2R5T3duZXImIG93bmVyLCBEZWZlcnJlZFdy
YXBwZXImJiBwcm9taXNlKQpAQCAtMjEyLDYgKzI1Nyw3IEBAIHZvaWQgRmV0Y2hCb2R5Ojpjb25z
dW1lQmxvYihGZXRjaEJvZHlPd25lciYgb3duZXIsIERlZmVycmVkV3JhcHBlciYmIHByb21pc2Up
CiAKICAgICBtX2NvbnN1bWVQcm9taXNlID0gV1RGTW92ZShwcm9taXNlKTsKICAgICBvd25lci5s
b2FkQmxvYigqbV9ibG9iLCAmbV9jb25zdW1lcik7CisgICAgbV9ibG9iID0gbnVsbHB0cjsKIH0K
IAogVmVjdG9yPHVpbnQ4X3Q+IEZldGNoQm9keTo6ZXh0cmFjdEZyb21UZXh0KCkgY29uc3QKQEAg
LTI1Miw2ICsyOTgsMTEgQEAgUmVmUHRyPEZvcm1EYXRhPiBGZXRjaEJvZHk6OmJvZHlGb3JJbnRl
cm5hbFJlcXVlc3QoKSBjb25zdAogICAgICAgICBib2R5LT5hcHBlbmRCbG9iKG1fYmxvYi0+dXJs
KCkpOwogICAgICAgICByZXR1cm4gYm9keTsKICAgICB9CisgICAgaWYgKG1fdHlwZSA9PSBUeXBl
OjpBcnJheUJ1ZmZlcikKKyAgICAgICAgcmV0dXJuIEZvcm1EYXRhOjpjcmVhdGUobV9kYXRhLT5k
YXRhKCksIG1fZGF0YS0+Ynl0ZUxlbmd0aCgpKTsKKyAgICBpZiAobV90eXBlID09IFR5cGU6OkFy
cmF5QnVmZmVyVmlldykKKyAgICAgICAgcmV0dXJuIEZvcm1EYXRhOjpjcmVhdGUobV9kYXRhVmll
dy0+YmFzZUFkZHJlc3MoKSwgbV9kYXRhVmlldy0+Ynl0ZUxlbmd0aCgpKTsKKwogICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBudWxscHRyOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmgKaW5kZXggNGNhYjM5MTZkYTcwZWUwNjI3ZjRlZTNhODgx
OGUyZTBmYWQ3MmI1Mi4uNzBhZjlhYjE3NmJiYWVmZjMzZGYwMWE3M2E4N2YxNTE5N2JmYmNkZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5oCkBAIC03NSw3ICs3NSw3
IEBAIHB1YmxpYzoKIAogICAgIFJlZlB0cjxGb3JtRGF0YT4gYm9keUZvckludGVybmFsUmVxdWVz
dCgpIGNvbnN0OwogCi0gICAgZW51bSBjbGFzcyBUeXBlIHsgTm9uZSwgQXJyYXlCdWZmZXIsIEJs
b2IsIEZvcm1EYXRhLCBUZXh0LCBMb2FkaW5nLCBMb2FkZWQsIFJlYWRhYmxlU3RyZWFtIH07Cisg
ICAgZW51bSBjbGFzcyBUeXBlIHsgTm9uZSwgQXJyYXlCdWZmZXIsIEFycmF5QnVmZmVyVmlldywg
QmxvYiwgRm9ybURhdGEsIFRleHQsIExvYWRpbmcsIExvYWRlZCwgUmVhZGFibGVTdHJlYW0gfTsK
ICAgICBUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KIAogICAgIEZldGNoQm9k
eUNvbnN1bWVyJiBjb25zdW1lcigpIHsgcmV0dXJuIG1fY29uc3VtZXI7IH0KQEAgLTg0LDYgKzg0
LDggQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIEZldGNoQm9keShSZWY8QmxvYj4mJik7Cisg
ICAgRmV0Y2hCb2R5KFJlZjxBcnJheUJ1ZmZlcj4mJik7CisgICAgRmV0Y2hCb2R5KFJlZjxBcnJh
eUJ1ZmZlclZpZXc+JiYpOwogICAgIEZldGNoQm9keShSZWY8RE9NRm9ybURhdGE+JiYpOwogICAg
IEZldGNoQm9keShTdHJpbmcmJik7CiAgICAgRmV0Y2hCb2R5KFR5cGUgdHlwZSkgOiBtX3R5cGUo
dHlwZSkgeyB9CkBAIC05Miw2ICs5NCw3IEBAIHByaXZhdGU6CiAKICAgICBWZWN0b3I8dWludDhf
dD4gZXh0cmFjdEZyb21UZXh0KCkgY29uc3Q7CiAgICAgdm9pZCBjb25zdW1lQXJyYXlCdWZmZXIo
RGVmZXJyZWRXcmFwcGVyJik7CisgICAgdm9pZCBjb25zdW1lQXJyYXlCdWZmZXJWaWV3KERlZmVy
cmVkV3JhcHBlciYpOwogICAgIHZvaWQgY29uc3VtZVRleHQoRGVmZXJyZWRXcmFwcGVyJik7CiAg
ICAgdm9pZCBjb25zdW1lQmxvYihGZXRjaEJvZHlPd25lciYsIERlZmVycmVkV3JhcHBlciYmKTsK
IApAQCAtMTAyLDYgKzEwNSw3IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPEJsb2I+IG1fYmxvYjsK
ICAgICBSZWZQdHI8RE9NRm9ybURhdGE+IG1fZm9ybURhdGE7CiAgICAgUmVmUHRyPEFycmF5QnVm
ZmVyPiBtX2RhdGE7CisgICAgUmVmUHRyPEFycmF5QnVmZmVyVmlldz4gbV9kYXRhVmlldzsKICAg
ICBTdHJpbmcgbV90ZXh0OwogCiAgICAgRmV0Y2hCb2R5Q29uc3VtZXIgbV9jb25zdW1lciB7IEZl
dGNoQm9keUNvbnN1bWVyOjpUeXBlOjpOb25lIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcAppbmRleCA4MmI0YTU0ZWUxZGRhZDNiYWE0Mzc5ODQ1
MDA1ZmNkMGUzZjE0YTFiLi5lYWE3MTQ3OWMxMTFiYjdhMThjNzNkZTcyOWM4OGViZGU5MTg2Zjdk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAK
QEAgLTI1MCw2ICsyNTAsNyBAQCB2b2lkIEZldGNoUmVzcG9uc2U6OmZpbmlzaENvbnN1bWluZ1N0
cmVhbShEZWZlcnJlZFdyYXBwZXImJiBwcm9taXNlKQogdm9pZCBGZXRjaFJlc3BvbnNlOjpjb25z
dW1lQm9keUFzU3RyZWFtKCkKIHsKICAgICBBU1NFUlQobV9yZWFkYWJsZVN0cmVhbVNvdXJjZSk7
CisgICAgQVNTRVJUKCFtX2lzRGlzdHVyYmVkKTsKICAgICBtX2lzRGlzdHVyYmVkID0gdHJ1ZTsK
ICAgICBpZiAoYm9keSgpLnR5cGUoKSAhPSBGZXRjaEJvZHk6OlR5cGU6OkxvYWRpbmcpIHsKICAg
ICAgICAgYm9keSgpLmNvbnN1bWVBc1N0cmVhbSgqdGhpcywgKm1fcmVhZGFibGVTdHJlYW1Tb3Vy
Y2UpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKaW5kZXggZGZlODg4YzNmNzc5MGQzNjJm
ODRlNWRiM2VhYmJjNTc3NTYxZDkyNy4uMTNjM2I2YWQ5MTg5ZWU0ZjAzMDE4N2QzN2U4NjM3OTg2
ZDViNDg4OCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMjIgQEAK
IDIwMTYtMDgtMjMgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCisgICAgICAg
IFtGZXRjaCBBUEldIEFkZCBzdXBwb3J0IGZvciBCdWZmZXJTb3VyY2UgYm9kaWVzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjEwODcKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHdlYi1wbGF0Zm9ybS10
ZXN0cy9mZXRjaC9hcGkvYmFzaWMvcmVxdWVzdC1oZWFkZXJzLWV4cGVjdGVkLnR4dDoKKyAgICAg
ICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvZmV0Y2gvYXBpL2Jhc2ljL3JlcXVlc3QtaGVhZGVycy13
b3JrZXItZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9h
cGkvYmFzaWMvcmVxdWVzdC1oZWFkZXJzLmpzOgorICAgICAgICAoY2hlY2tDb250ZW50VHlwZSk6
CisgICAgICAgIChyZXF1ZXN0SGVhZGVycyk6CisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3Rz
L2ZldGNoL2FwaS9yZXF1ZXN0L3JlcXVlc3QtY29uc3VtZS1leHBlY3RlZC50eHQ6CisgICAgICAg
ICogd2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9yZXF1ZXN0L3JlcXVlc3QtY29uc3VtZS5o
dG1sOgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkvcmVzcG9uc2UvcmVz
cG9uc2UtY29uc3VtZS1zdHJlYW0tZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHdlYi1wbGF0Zm9y
bS10ZXN0cy9mZXRjaC9hcGkvcmVzcG9uc2UvcmVzcG9uc2UtY29uc3VtZS1zdHJlYW0uaHRtbDoK
KworMjAxNi0wOC0yMyAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisKICAgICAg
ICAgSW1wbGVtZW50IHJlZGlyZWN0IHN1cHBvcnQgcG9zdCBDT1JTLXByZWZsaWdodAogICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU5MDU2CiAKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZmV0Y2gv
YXBpL2Jhc2ljL3JlcXVlc3QtaGVhZGVycy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9iYXNpYy9yZXF1ZXN0LWhlYWRl
cnMtZXhwZWN0ZWQudHh0CmluZGV4IDdiMTI0YmJjZGYxNDM3MWNiMGU2MDFiMjJlMzNlMWNhODQz
MjFmZGIuLjg1NDJhNjAwMjQ1MjRlNDhiM2I5ZmNmNTZmY2EwNDA3YzlkYTFjOTQgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZmV0Y2gvYXBp
L2Jhc2ljL3JlcXVlc3QtaGVhZGVycy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkvYmFzaWMvcmVxdWVzdC1oZWFk
ZXJzLWV4cGVjdGVkLnR4dApAQCAtMSwxMyArMSwxOCBAQAogCiBGQUlMIEZldGNoIHdpdGggR0VU
IGFzc2VydF9lcXVhbHM6IFJlcXVlc3Qgc2hvdWxkIGhhdmUgaGVhZGVyIG9yaWdpbjogaHR0cDov
L2xvY2FsaG9zdDo4ODAwIGV4cGVjdGVkIChzdHJpbmcpICJodHRwOi8vbG9jYWxob3N0Ojg4MDAi
IGJ1dCBnb3QgKG9iamVjdCkgbnVsbAotRkFJTCBGZXRjaCB3aXRoIEhFQUQgYXNzZXJ0X2VxdWFs
czogUmVxdWVzdCBzaG91bGQgaGF2ZSBoZWFkZXIgY29udGVudC1sZW5ndGg6IG51bGwgZXhwZWN0
ZWQgKG9iamVjdCkgbnVsbCBidXQgZ290IChzdHJpbmcpICIwIgorRkFJTCBGZXRjaCB3aXRoIEhF
QUQgYXNzZXJ0X2VxdWFsczogUmVxdWVzdCBzaG91bGQgaGF2ZSBoZWFkZXIgb3JpZ2luOiBodHRw
Oi8vbG9jYWxob3N0Ojg4MDAgZXhwZWN0ZWQgKHN0cmluZykgImh0dHA6Ly9sb2NhbGhvc3Q6ODgw
MCIgYnV0IGdvdCAob2JqZWN0KSBudWxsCiBQQVNTIEZldGNoIHdpdGggUFVUIHdpdGhvdXQgYm9k
eSAKIFBBU1MgRmV0Y2ggd2l0aCBQVVQgd2l0aCBib2R5IAogUEFTUyBGZXRjaCB3aXRoIFBPU1Qg
d2l0aG91dCBib2R5IAogUEFTUyBGZXRjaCB3aXRoIFBPU1Qgd2l0aCB0ZXh0IGJvZHkgCiBGQUlM
IEZldGNoIHdpdGggUE9TVCB3aXRoIEZvcm1EYXRhIGJvZHkgcHJvbWlzZV90ZXN0OiBVbmhhbmRs
ZWQgcmVqZWN0aW9uIHdpdGggdmFsdWU6IG9iamVjdCAiVHlwZUVycm9yOiBVcGxvYWRpbmcgRm9y
bURhdGEgaXMgbm90IHlldCBpbXBsZW1lbnRlZCIKIEZBSUwgRmV0Y2ggd2l0aCBQT1NUIHdpdGgg
QmxvYiBib2R5IGFzc2VydF9lcXVhbHM6IFJlcXVlc3Qgc2hvdWxkIGhhdmUgaGVhZGVyIGNvbnRl
bnQtdHlwZTogbnVsbCBleHBlY3RlZCAob2JqZWN0KSBudWxsIGJ1dCBnb3QgKHN0cmluZykgImFw
cGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCIKLUZBSUwgRmV0Y2ggd2l0aCBQT1NUIHdp
dGggQXJyYXlCdWZmZXIgYm9keSBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rpb24gd2l0
aCB2YWx1ZTogb2JqZWN0ICJUeXBlRXJyb3I6IFR5cGUgZXJyb3IiCitGQUlMIEZldGNoIHdpdGgg
UE9TVCB3aXRoIEFycmF5QnVmZmVyIGJvZHkgYXNzZXJ0X2VxdWFsczogUmVxdWVzdCBzaG91bGQg
aGF2ZSBoZWFkZXIgY29udGVudC10eXBlOiBudWxsIGV4cGVjdGVkIChvYmplY3QpIG51bGwgYnV0
IGdvdCAoc3RyaW5nKSAiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkIgorRkFJTCBG
ZXRjaCB3aXRoIFBPU1Qgd2l0aCBVaW50OEFycmF5IGJvZHkgYXNzZXJ0X2VxdWFsczogUmVxdWVz
dCBzaG91bGQgaGF2ZSBoZWFkZXIgY29udGVudC10eXBlOiBudWxsIGV4cGVjdGVkIChvYmplY3Qp
IG51bGwgYnV0IGdvdCAoc3RyaW5nKSAiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVk
IgorRkFJTCBGZXRjaCB3aXRoIFBPU1Qgd2l0aCBJbnQ4QXJyYXkgYm9keSBhc3NlcnRfZXF1YWxz
OiBSZXF1ZXN0IHNob3VsZCBoYXZlIGhlYWRlciBjb250ZW50LXR5cGU6IG51bGwgZXhwZWN0ZWQg
KG9iamVjdCkgbnVsbCBidXQgZ290IChzdHJpbmcpICJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVy
bGVuY29kZWQiCitGQUlMIEZldGNoIHdpdGggUE9TVCB3aXRoIEZsb2F0MzJBcnJheSBib2R5IGFz
c2VydF9lcXVhbHM6IFJlcXVlc3Qgc2hvdWxkIGhhdmUgaGVhZGVyIGNvbnRlbnQtdHlwZTogbnVs
bCBleHBlY3RlZCAob2JqZWN0KSBudWxsIGJ1dCBnb3QgKHN0cmluZykgImFwcGxpY2F0aW9uL3gt
d3d3LWZvcm0tdXJsZW5jb2RlZCIKK0ZBSUwgRmV0Y2ggd2l0aCBQT1NUIHdpdGggRmxvYXQ2NEFy
cmF5IGJvZHkgYXNzZXJ0X2VxdWFsczogUmVxdWVzdCBzaG91bGQgaGF2ZSBoZWFkZXIgY29udGVu
dC10eXBlOiBudWxsIGV4cGVjdGVkIChvYmplY3QpIG51bGwgYnV0IGdvdCAoc3RyaW5nKSAiYXBw
bGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkIgorRkFJTCBGZXRjaCB3aXRoIFBPU1Qgd2l0
aCBEYXRhVmlldyBib2R5IGFzc2VydF9lcXVhbHM6IFJlcXVlc3Qgc2hvdWxkIGhhdmUgaGVhZGVy
IGNvbnRlbnQtdHlwZTogbnVsbCBleHBlY3RlZCAob2JqZWN0KSBudWxsIGJ1dCBnb3QgKHN0cmlu
ZykgImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCIKIFBBU1MgRmV0Y2ggd2l0aCBQ
T1NUIHdpdGggQmxvYiBib2R5IHdpdGggbWltZSB0eXBlIAogRkFJTCBGZXRjaCB3aXRoIENoaWNr
ZW4gYXNzZXJ0X2VxdWFsczogUmVxdWVzdCBzaG91bGQgaGF2ZSBoZWFkZXIgY29udGVudC1sZW5n
dGg6IG51bGwgZXhwZWN0ZWQgKG9iamVjdCkgbnVsbCBidXQgZ290IChzdHJpbmcpICIwIgogUEFT
UyBGZXRjaCB3aXRoIENoaWNrZW4gd2l0aCBib2R5IApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkvYmFzaWMvcmVxdWVzdC1o
ZWFkZXJzLXdvcmtlci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9iYXNpYy9yZXF1ZXN0LWhlYWRlcnMtd29ya2VyLWV4
cGVjdGVkLnR4dAppbmRleCBjN2JlMmNmNjc2YzU3NzczZDI2OTkzZDgwOWRkZWNlZGM5MjRhYTEw
Li40MmYwOWY4ZmMwYzcxZjAzMTFiYTBjOTlmY2RlNDE1ZGQyYjVmNGUwIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9iYXNp
Yy9yZXF1ZXN0LWhlYWRlcnMtd29ya2VyLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9iYXNpYy9yZXF1ZXN0LWhl
YWRlcnMtd29ya2VyLWV4cGVjdGVkLnR4dApAQCAtMSwxMiArMSwxNyBAQAogCiBGQUlMIEZldGNo
IHdpdGggR0VUIGFzc2VydF9lcXVhbHM6IFJlcXVlc3Qgc2hvdWxkIGhhdmUgaGVhZGVyIG9yaWdp
bjogaHR0cDovL2xvY2FsaG9zdDo4ODAwIGV4cGVjdGVkIChzdHJpbmcpICJodHRwOi8vbG9jYWxo
b3N0Ojg4MDAiIGJ1dCBnb3QgKG9iamVjdCkgbnVsbAotRkFJTCBGZXRjaCB3aXRoIEhFQUQgYXNz
ZXJ0X2VxdWFsczogUmVxdWVzdCBzaG91bGQgaGF2ZSBoZWFkZXIgY29udGVudC1sZW5ndGg6IG51
bGwgZXhwZWN0ZWQgKG9iamVjdCkgbnVsbCBidXQgZ290IChzdHJpbmcpICIwIgorRkFJTCBGZXRj
aCB3aXRoIEhFQUQgYXNzZXJ0X2VxdWFsczogUmVxdWVzdCBzaG91bGQgaGF2ZSBoZWFkZXIgb3Jp
Z2luOiBodHRwOi8vbG9jYWxob3N0Ojg4MDAgZXhwZWN0ZWQgKHN0cmluZykgImh0dHA6Ly9sb2Nh
bGhvc3Q6ODgwMCIgYnV0IGdvdCAob2JqZWN0KSBudWxsCiBQQVNTIEZldGNoIHdpdGggUFVUIHdp
dGhvdXQgYm9keSAKIFBBU1MgRmV0Y2ggd2l0aCBQVVQgd2l0aCBib2R5IAogUEFTUyBGZXRjaCB3
aXRoIFBPU1Qgd2l0aG91dCBib2R5IAogUEFTUyBGZXRjaCB3aXRoIFBPU1Qgd2l0aCB0ZXh0IGJv
ZHkgCiBGQUlMIEZldGNoIHdpdGggUE9TVCB3aXRoIEJsb2IgYm9keSBhc3NlcnRfZXF1YWxzOiBS
ZXF1ZXN0IHNob3VsZCBoYXZlIGhlYWRlciBjb250ZW50LXR5cGU6IG51bGwgZXhwZWN0ZWQgKG9i
amVjdCkgbnVsbCBidXQgZ290IChzdHJpbmcpICJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVu
Y29kZWQiCi1GQUlMIEZldGNoIHdpdGggUE9TVCB3aXRoIEFycmF5QnVmZmVyIGJvZHkgcHJvbWlz
ZV90ZXN0OiBVbmhhbmRsZWQgcmVqZWN0aW9uIHdpdGggdmFsdWU6IG9iamVjdCAiVHlwZUVycm9y
OiBUeXBlIGVycm9yIgorRkFJTCBGZXRjaCB3aXRoIFBPU1Qgd2l0aCBBcnJheUJ1ZmZlciBib2R5
IGFzc2VydF9lcXVhbHM6IFJlcXVlc3Qgc2hvdWxkIGhhdmUgaGVhZGVyIGNvbnRlbnQtdHlwZTog
bnVsbCBleHBlY3RlZCAob2JqZWN0KSBudWxsIGJ1dCBnb3QgKHN0cmluZykgImFwcGxpY2F0aW9u
L3gtd3d3LWZvcm0tdXJsZW5jb2RlZCIKK0ZBSUwgRmV0Y2ggd2l0aCBQT1NUIHdpdGggVWludDhB
cnJheSBib2R5IGFzc2VydF9lcXVhbHM6IFJlcXVlc3Qgc2hvdWxkIGhhdmUgaGVhZGVyIGNvbnRl
bnQtdHlwZTogbnVsbCBleHBlY3RlZCAob2JqZWN0KSBudWxsIGJ1dCBnb3QgKHN0cmluZykgImFw
cGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCIKK0ZBSUwgRmV0Y2ggd2l0aCBQT1NUIHdp
dGggSW50OEFycmF5IGJvZHkgYXNzZXJ0X2VxdWFsczogUmVxdWVzdCBzaG91bGQgaGF2ZSBoZWFk
ZXIgY29udGVudC10eXBlOiBudWxsIGV4cGVjdGVkIChvYmplY3QpIG51bGwgYnV0IGdvdCAoc3Ry
aW5nKSAiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkIgorRkFJTCBGZXRjaCB3aXRo
IFBPU1Qgd2l0aCBGbG9hdDMyQXJyYXkgYm9keSBhc3NlcnRfZXF1YWxzOiBSZXF1ZXN0IHNob3Vs
ZCBoYXZlIGhlYWRlciBjb250ZW50LXR5cGU6IG51bGwgZXhwZWN0ZWQgKG9iamVjdCkgbnVsbCBi
dXQgZ290IChzdHJpbmcpICJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQiCitGQUlM
IEZldGNoIHdpdGggUE9TVCB3aXRoIEZsb2F0NjRBcnJheSBib2R5IGFzc2VydF9lcXVhbHM6IFJl
cXVlc3Qgc2hvdWxkIGhhdmUgaGVhZGVyIGNvbnRlbnQtdHlwZTogbnVsbCBleHBlY3RlZCAob2Jq
ZWN0KSBudWxsIGJ1dCBnb3QgKHN0cmluZykgImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5j
b2RlZCIKK0ZBSUwgRmV0Y2ggd2l0aCBQT1NUIHdpdGggRGF0YVZpZXcgYm9keSBhc3NlcnRfZXF1
YWxzOiBSZXF1ZXN0IHNob3VsZCBoYXZlIGhlYWRlciBjb250ZW50LXR5cGU6IG51bGwgZXhwZWN0
ZWQgKG9iamVjdCkgbnVsbCBidXQgZ290IChzdHJpbmcpICJhcHBsaWNhdGlvbi94LXd3dy1mb3Jt
LXVybGVuY29kZWQiCiBQQVNTIEZldGNoIHdpdGggUE9TVCB3aXRoIEJsb2IgYm9keSB3aXRoIG1p
bWUgdHlwZSAKIEZBSUwgRmV0Y2ggd2l0aCBDaGlja2VuIGFzc2VydF9lcXVhbHM6IFJlcXVlc3Qg
c2hvdWxkIGhhdmUgaGVhZGVyIGNvbnRlbnQtbGVuZ3RoOiBudWxsIGV4cGVjdGVkIChvYmplY3Qp
IG51bGwgYnV0IGdvdCAoc3RyaW5nKSAiMCIKIFBBU1MgRmV0Y2ggd2l0aCBDaGlja2VuIHdpdGgg
Ym9keSAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvZmV0Y2gvYXBpL2Jhc2ljL3JlcXVlc3QtaGVhZGVycy5qcyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZmV0Y2gvYXBpL2Jhc2ljL3JlcXVlc3QtaGVh
ZGVycy5qcwppbmRleCA0MDk3ZjNhZWY3Y2IwNDBjZDM5Y2I2YWZkZGIzY2ZlYzMwNzg4MDM5Li5i
Mjc4Y2U0ZTZjZTM3NGRjZjM1NDNhZDlhNTNiYjIzNWU0ZmYxMDNkIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9iYXNpYy9y
ZXF1ZXN0LWhlYWRlcnMuanMKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9mZXRjaC9hcGkvYmFzaWMvcmVxdWVzdC1oZWFkZXJzLmpzCkBAIC0xMSw3ICsx
MSw3IEBAIGZ1bmN0aW9uIGNoZWNrQ29udGVudFR5cGUoY29udGVudFR5cGUsIGJvZHkpCiAgICAg
fQogCiAgICAgdmFyIGV4cGVjdGVkQ29udGVudFR5cGUgPSAidGV4dC9wbGFpbjtjaGFyc2V0PVVU
Ri04IjsKLSAgICBpZihib2R5ID09PSBudWxsIHx8IGJvZHkgaW5zdGFuY2VvZiBBcnJheUJ1ZmZl
cikKKyAgICBpZihib2R5ID09PSBudWxsIHx8IGJvZHkgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlciB8
fCBib2R5LmJ1ZmZlciBpbnN0YW5jZW9mIEFycmF5QnVmZmVyKQogICAgICAgICBleHBlY3RlZENv
bnRlbnRUeXBlID0gbnVsbDsKICAgICBlbHNlIGlmIChib2R5IGluc3RhbmNlb2YgQmxvYikKICAg
ICAgICAgZXhwZWN0ZWRDb250ZW50VHlwZSA9IGJvZHkudHlwZSA/IGJvZHkudHlwZSA6IG51bGw7
CkBAIC0yOCwxMiArMjgsMTIgQEAgZnVuY3Rpb24gcmVxdWVzdEhlYWRlcnMoZGVzYywgdXJsLCBt
ZXRob2QsIGJvZHksIGV4cGVjdGVkT3JpZ2luLCBleHBlY3RlZENvbnRlbnQKICAgICByZXR1cm4g
ZmV0Y2godXJsICsgdXJsUGFyYW1ldGVycywgcmVxdWVzdEluaXQpLnRoZW4oZnVuY3Rpb24ocmVz
cCkgewogICAgICAgYXNzZXJ0X2VxdWFscyhyZXNwLnN0YXR1cywgMjAwLCAiSFRUUCBzdGF0dXMg
aXMgMjAwIik7CiAgICAgICBhc3NlcnRfZXF1YWxzKHJlc3AudHlwZSAsICJiYXNpYyIsICJSZXNw
b25zZSdzIHR5cGUgaXMgYmFzaWMiKTsKLSAgICAgIGNoZWNrQ29udGVudFR5cGUocmVzcC5oZWFk
ZXJzLmdldCgieC1yZXF1ZXN0LWNvbnRlbnQtdHlwZSIpLCBib2R5KTsKLSAgICAgIGlmIChleHBl
Y3RlZENvbnRlbnRMZW5ndGggIT09IHVuZGVmaW5lZCkKLSAgICAgICAgYXNzZXJ0X2VxdWFscyhy
ZXNwLmhlYWRlcnMuZ2V0KCJ4LXJlcXVlc3QtY29udGVudC1sZW5ndGgiKSAsIGV4cGVjdGVkQ29u
dGVudExlbmd0aCwgIlJlcXVlc3Qgc2hvdWxkIGhhdmUgaGVhZGVyIGNvbnRlbnQtbGVuZ3RoOiAi
ICsgZXhwZWN0ZWRDb250ZW50TGVuZ3RoKTsKICAgICAgIGFzc2VydF90cnVlKHJlc3AuaGVhZGVy
cy5oYXMoIngtcmVxdWVzdC11c2VyLWFnZW50IiksICJSZXF1ZXN0IGhhcyBoZWFkZXIgdXNlci1h
Z2VudCIpOwogICAgICAgYXNzZXJ0X2ZhbHNlKHJlc3AuaGVhZGVycy5oYXMoImFjY2VwdC1jaGFy
c2V0IiksICJSZXF1ZXN0IGhhcyBoZWFkZXIgYWNjZXB0LWNoYXJzZXQiKTsKICAgICAgIGFzc2Vy
dF9lcXVhbHMocmVzcC5oZWFkZXJzLmdldCgieC1yZXF1ZXN0LW9yaWdpbiIpICwgZXhwZWN0ZWRP
cmlnaW4sICJSZXF1ZXN0IHNob3VsZCBoYXZlIGhlYWRlciBvcmlnaW46ICIgKyBleHBlY3RlZE9y
aWdpbik7CisgICAgICBpZiAoZXhwZWN0ZWRDb250ZW50TGVuZ3RoICE9PSB1bmRlZmluZWQpCisg
ICAgICAgIGFzc2VydF9lcXVhbHMocmVzcC5oZWFkZXJzLmdldCgieC1yZXF1ZXN0LWNvbnRlbnQt
bGVuZ3RoIikgLCBleHBlY3RlZENvbnRlbnRMZW5ndGgsICJSZXF1ZXN0IHNob3VsZCBoYXZlIGhl
YWRlciBjb250ZW50LWxlbmd0aDogIiArIGV4cGVjdGVkQ29udGVudExlbmd0aCk7CisgICAgICBj
aGVja0NvbnRlbnRUeXBlKHJlc3AuaGVhZGVycy5nZXQoIngtcmVxdWVzdC1jb250ZW50LXR5cGUi
KSwgYm9keSk7CiAgICAgfSk7CiAgIH0sIGRlc2MpOwogfQpAQCAtNTAsNiArNTAsMTEgQEAgaWYg
KHNlbGYuRm9ybURhdGEpCiAgICAgcmVxdWVzdEhlYWRlcnMoIkZldGNoIHdpdGggUE9TVCB3aXRo
IEZvcm1EYXRhIGJvZHkiLCB1cmwsICJQT1NUIiwgbmV3IEZvcm1EYXRhKCksIGxvY2F0aW9uLm9y
aWdpbik7CiByZXF1ZXN0SGVhZGVycygiRmV0Y2ggd2l0aCBQT1NUIHdpdGggQmxvYiBib2R5Iiwg
dXJsLCAiUE9TVCIsIG5ldyBCbG9iKFsiVGVzdCJdKSwgbG9jYXRpb24ub3JpZ2luLCAiNCIpOwog
cmVxdWVzdEhlYWRlcnMoIkZldGNoIHdpdGggUE9TVCB3aXRoIEFycmF5QnVmZmVyIGJvZHkiLCB1
cmwsICJQT1NUIiwgbmV3IEFycmF5QnVmZmVyKDQpLCBsb2NhdGlvbi5vcmlnaW4sICI0Iik7City
ZXF1ZXN0SGVhZGVycygiRmV0Y2ggd2l0aCBQT1NUIHdpdGggVWludDhBcnJheSBib2R5IiwgdXJs
LCAiUE9TVCIsIG5ldyBVaW50OEFycmF5KDQpLCBsb2NhdGlvbi5vcmlnaW4sICI0Iik7CityZXF1
ZXN0SGVhZGVycygiRmV0Y2ggd2l0aCBQT1NUIHdpdGggSW50OEFycmF5IGJvZHkiLCB1cmwsICJQ
T1NUIiwgbmV3IEludDhBcnJheSg0KSwgbG9jYXRpb24ub3JpZ2luLCAiNCIpOworcmVxdWVzdEhl
YWRlcnMoIkZldGNoIHdpdGggUE9TVCB3aXRoIEZsb2F0MzJBcnJheSBib2R5IiwgdXJsLCAiUE9T
VCIsIG5ldyBGbG9hdDMyQXJyYXkoMSksIGxvY2F0aW9uLm9yaWdpbiwgIjQiKTsKK3JlcXVlc3RI
ZWFkZXJzKCJGZXRjaCB3aXRoIFBPU1Qgd2l0aCBGbG9hdDY0QXJyYXkgYm9keSIsIHVybCwgIlBP
U1QiLCBuZXcgRmxvYXQ2NEFycmF5KDEpLCBsb2NhdGlvbi5vcmlnaW4sICI4Iik7CityZXF1ZXN0
SGVhZGVycygiRmV0Y2ggd2l0aCBQT1NUIHdpdGggRGF0YVZpZXcgYm9keSIsIHVybCwgIlBPU1Qi
LCBuZXcgRGF0YVZpZXcobmV3IEFycmF5QnVmZmVyKDgpLCAwLCA0KSwgbG9jYXRpb24ub3JpZ2lu
LCAiNCIpOwogcmVxdWVzdEhlYWRlcnMoIkZldGNoIHdpdGggUE9TVCB3aXRoIEJsb2IgYm9keSB3
aXRoIG1pbWUgdHlwZSIsIHVybCwgIlBPU1QiLCBuZXcgQmxvYihbIlRlc3QiXSwgeyB0eXBlOiAi
dGV4dC9tYXliZSIgfSksIGxvY2F0aW9uLm9yaWdpbiwgIjQiKTsKIHJlcXVlc3RIZWFkZXJzKCJG
ZXRjaCB3aXRoIENoaWNrZW4iLCB1cmwsICJDaGlja2VuIiwgbnVsbCwgbG9jYXRpb24ub3JpZ2lu
LCBudWxsKTsKIHJlcXVlc3RIZWFkZXJzKCJGZXRjaCB3aXRoIENoaWNrZW4gd2l0aCBib2R5Iiwg
dXJsLCAiQ2hpY2tlbiIsICJSZXF1ZXN0J3MgYm9keSIsIGxvY2F0aW9uLm9yaWdpbiwgIjE0Iik7
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2ZldGNoL2FwaS9yZXF1ZXN0L3JlcXVlc3QtY29uc3VtZS1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9yZXF1ZXN0L3Jl
cXVlc3QtY29uc3VtZS1leHBlY3RlZC50eHQKaW5kZXggNzFhZmEzMWY4YzkxZDA1ZDNlZjY1YmMy
NzYzZGY0NjMyYzE4MTEzZC4uYWI2YTVjMzBjZjhiYzRkYTMwZWRjY2Q5ZmQyYWI4ZGE2MzM4ZTQy
ZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9mZXRjaC9hcGkvcmVxdWVzdC9yZXF1ZXN0LWNvbnN1bWUtZXhwZWN0ZWQudHh0CisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZmV0Y2gvYXBpL3JlcXVl
c3QvcmVxdWVzdC1jb25zdW1lLWV4cGVjdGVkLnR4dApAQCAtMSw5ICsxLDI5IEBACiAKLVBBU1Mg
Q29uc3VtZSByZXF1ZXN0J3MgYm9keSBhcyB0ZXh0IAotUEFTUyBDb25zdW1lIHJlcXVlc3QncyBi
b2R5IGFzIGJsb2IgCi1QQVNTIENvbnN1bWUgcmVxdWVzdCdzIGJvZHkgYXMgYXJyYXlCdWZmZXIg
Ci1QQVNTIENvbnN1bWUgcmVxdWVzdCdzIGJvZHkgYXMganNvbiAKLUZBSUwgQ29uc3VtZSByZXF1
ZXN0J3MgYm9keSBhcyBmb3JtRGF0YSBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rpb24g
d2l0aCB2YWx1ZTogdW5kZWZpbmVkCitQQVNTIENvbnN1bWUgU3RyaW5nIHJlcXVlc3QncyBib2R5
IGFzIHRleHQgCitQQVNTIENvbnN1bWUgU3RyaW5nIHJlcXVlc3QncyBib2R5IGFzIGJsb2IgCitQ
QVNTIENvbnN1bWUgU3RyaW5nIHJlcXVlc3QncyBib2R5IGFzIGFycmF5QnVmZmVyIAorUEFTUyBD
b25zdW1lIFN0cmluZyByZXF1ZXN0J3MgYm9keSBhcyBKU09OIAorUEFTUyBDb25zdW1lIEFycmF5
QnVmZmVyIHJlcXVlc3QncyBib2R5IGFzIHRleHQgCitQQVNTIENvbnN1bWUgQXJyYXlCdWZmZXIg
cmVxdWVzdCdzIGJvZHkgYXMgYmxvYiAKK1BBU1MgQ29uc3VtZSBBcnJheUJ1ZmZlciByZXF1ZXN0
J3MgYm9keSBhcyBhcnJheUJ1ZmZlciAKK1BBU1MgQ29uc3VtZSBBcnJheUJ1ZmZlciByZXF1ZXN0
J3MgYm9keSBhcyBKU09OIAorUEFTUyBDb25zdW1lIFVpbnQ4QXJyYXkgcmVxdWVzdCdzIGJvZHkg
YXMgdGV4dCAKK1BBU1MgQ29uc3VtZSBVaW50OEFycmF5IHJlcXVlc3QncyBib2R5IGFzIGJsb2Ig
CitQQVNTIENvbnN1bWUgVWludDhBcnJheSByZXF1ZXN0J3MgYm9keSBhcyBhcnJheUJ1ZmZlciAK
K1BBU1MgQ29uc3VtZSBVaW50OEFycmF5IHJlcXVlc3QncyBib2R5IGFzIEpTT04gCitQQVNTIENv
bnN1bWUgSW50OEFycmF5IHJlcXVlc3QncyBib2R5IGFzIHRleHQgCitQQVNTIENvbnN1bWUgSW50
OEFycmF5IHJlcXVlc3QncyBib2R5IGFzIGJsb2IgCitQQVNTIENvbnN1bWUgSW50OEFycmF5IHJl
cXVlc3QncyBib2R5IGFzIGFycmF5QnVmZmVyIAorUEFTUyBDb25zdW1lIEludDhBcnJheSByZXF1
ZXN0J3MgYm9keSBhcyBKU09OIAorUEFTUyBDb25zdW1lIEZsb2F0MzJBcnJheSByZXF1ZXN0J3Mg
Ym9keSBhcyB0ZXh0IAorUEFTUyBDb25zdW1lIEZsb2F0MzJBcnJheSByZXF1ZXN0J3MgYm9keSBh
cyBibG9iIAorUEFTUyBDb25zdW1lIEZsb2F0MzJBcnJheSByZXF1ZXN0J3MgYm9keSBhcyBhcnJh
eUJ1ZmZlciAKK1BBU1MgQ29uc3VtZSBGbG9hdDMyQXJyYXkgcmVxdWVzdCdzIGJvZHkgYXMgSlNP
TiAKK1BBU1MgQ29uc3VtZSBEYXRhVmlldyByZXF1ZXN0J3MgYm9keSBhcyB0ZXh0IAorUEFTUyBD
b25zdW1lIERhdGFWaWV3IHJlcXVlc3QncyBib2R5IGFzIGJsb2IgCitQQVNTIENvbnN1bWUgRGF0
YVZpZXcgcmVxdWVzdCdzIGJvZHkgYXMgYXJyYXlCdWZmZXIgCitQQVNTIENvbnN1bWUgRGF0YVZp
ZXcgcmVxdWVzdCdzIGJvZHkgYXMgSlNPTiAKK0ZBSUwgQ29uc3VtZSBGb3JtRGF0YSByZXF1ZXN0
J3MgYm9keSBhcyBGb3JtRGF0YSBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rpb24gd2l0
aCB2YWx1ZTogdW5kZWZpbmVkCiBQQVNTIENvbnN1bWUgYmxvYiByZXNwb25zZSdzIGJvZHkgYXMg
YmxvYiAKIFBBU1MgQ29uc3VtZSBibG9iIHJlc3BvbnNlJ3MgYm9keSBhcyB0ZXh0IAogUEFTUyBD
b25zdW1lIGJsb2IgcmVzcG9uc2UncyBib2R5IGFzIGpzb24gCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9yZXF1ZXN0L3Jl
cXVlc3QtY29uc3VtZS5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9mZXRjaC9hcGkvcmVxdWVzdC9yZXF1ZXN0LWNvbnN1bWUuaHRtbAppbmRleCAyOTJl
MDhjNjNlZWViNTUxODIyOTU4YjQ4YTFkZGVhNTQ5YTI3NDQ2Li4xMzkzMDJiZDkwYTA1NjQ0M2Q4
MGZlNzdjNTc1ODc4MzcwN2M5MWMzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9yZXF1ZXN0L3JlcXVlc3QtY29uc3VtZS5o
dG1sCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZmV0
Y2gvYXBpL3JlcXVlc3QvcmVxdWVzdC1jb25zdW1lLmh0bWwKQEAgLTEzLDcgKzEzLDcgQEAKICAg
PGJvZHk+CiAgICAgPHNjcmlwdD4KICAgICBmdW5jdGlvbiBjaGVja0JvZHlUZXh0KHJlcXVlc3Qs
IGV4cGVjdGVkQm9keSkgewotICAgICAgcmV0dXJuIHJlcXVlc3QudGV4dCgpLnRoZW4oIGZ1bmN0
aW9uKGJvZHlBc1RleHQpIHsKKyAgICAgIHJldHVybiByZXF1ZXN0LnRleHQoKS50aGVuKGZ1bmN0
aW9uKGJvZHlBc1RleHQpIHsKICAgICAgICAgYXNzZXJ0X2VxdWFscyhib2R5QXNUZXh0LCBleHBl
Y3RlZEJvZHksICJSZXRyaWV2ZSBhbmQgdmVyaWZ5IHJlcXVlc3QncyBib2R5Iik7CiAgICAgICAg
IGFzc2VydF90cnVlKHJlcXVlc3QuYm9keVVzZWQsICJib2R5IGFzIHRleHQ6IGJvZHlVc2VkIHR1
cm5lZCB0cnVlIik7CiAgICAgICB9KTsKQEAgLTYwLDEyICs2MCwyNyBAQAogICAgICB9KTsKICAg
ICB9CiAKLSAgICBmdW5jdGlvbiBjaGVja1JlcXVlc3RCb2R5KGJvZHksIGJvZHlUeXBlLCBjaGVj
a0Z1bmN0aW9uKSB7CisgICAgZnVuY3Rpb24gY2hlY2tSZXF1ZXN0Qm9keShib2R5LCBleHBlY3Rl
ZCwgYm9keVR5cGUpIHsKICAgICAgIHByb21pc2VfdGVzdChmdW5jdGlvbih0ZXN0KSB7CiAgICAg
ICAgIHZhciByZXF1ZXN0ID0gbmV3IFJlcXVlc3QoIiIsIHsibWV0aG9kIjogIlBPU1QiLCAiYm9k
eSI6IGJvZHkgfSk7CiAgICAgICAgIGFzc2VydF9mYWxzZShyZXF1ZXN0LmJvZHlVc2VkLCAiYm9k
eVVzZWQgaXMgZmFsc2UgYXQgaW5pdCIpOwotICAgICAgICByZXR1cm4gY2hlY2tGdW5jdGlvbihy
ZXF1ZXN0LCBib2R5KTsKLSAgICAgIH0sICJDb25zdW1lIHJlcXVlc3QncyBib2R5IGFzICIgKyBi
b2R5VHlwZSk7CisgICAgICAgIHJldHVybiBjaGVja0JvZHlUZXh0KHJlcXVlc3QsIGV4cGVjdGVk
KTsKKyAgICAgIH0sICJDb25zdW1lICIgKyBib2R5VHlwZSAgKyAiIHJlcXVlc3QncyBib2R5IGFz
IHRleHQiKTsKKyAgICAgIHByb21pc2VfdGVzdChmdW5jdGlvbih0ZXN0KSB7CisgICAgICAgIHZh
ciByZXF1ZXN0ID0gbmV3IFJlcXVlc3QoIiIsIHsibWV0aG9kIjogIlBPU1QiLCAiYm9keSI6IGJv
ZHkgfSk7CisgICAgICAgIGFzc2VydF9mYWxzZShyZXF1ZXN0LmJvZHlVc2VkLCAiYm9keVVzZWQg
aXMgZmFsc2UgYXQgaW5pdCIpOworICAgICAgICByZXR1cm4gY2hlY2tCb2R5QmxvYihyZXF1ZXN0
LCBleHBlY3RlZCk7CisgICAgICB9LCAiQ29uc3VtZSAiICsgYm9keVR5cGUgICsgIiByZXF1ZXN0
J3MgYm9keSBhcyBibG9iIik7CisgICAgICBwcm9taXNlX3Rlc3QoZnVuY3Rpb24odGVzdCkgewor
ICAgICAgICB2YXIgcmVxdWVzdCA9IG5ldyBSZXF1ZXN0KCIiLCB7Im1ldGhvZCI6ICJQT1NUIiwg
ImJvZHkiOiBib2R5IH0pOworICAgICAgICBhc3NlcnRfZmFsc2UocmVxdWVzdC5ib2R5VXNlZCwg
ImJvZHlVc2VkIGlzIGZhbHNlIGF0IGluaXQiKTsKKyAgICAgICAgcmV0dXJuIGNoZWNrQm9keUFy
cmF5QnVmZmVyKHJlcXVlc3QsIGV4cGVjdGVkKTsKKyAgICAgIH0sICJDb25zdW1lICIgKyBib2R5
VHlwZSAgKyAiIHJlcXVlc3QncyBib2R5IGFzIGFycmF5QnVmZmVyIik7CisgICAgICBwcm9taXNl
X3Rlc3QoZnVuY3Rpb24odGVzdCkgeworICAgICAgICB2YXIgcmVxdWVzdCA9IG5ldyBSZXF1ZXN0
KCIiLCB7Im1ldGhvZCI6ICJQT1NUIiwgImJvZHkiOiBib2R5IH0pOworICAgICAgICBhc3NlcnRf
ZmFsc2UocmVxdWVzdC5ib2R5VXNlZCwgImJvZHlVc2VkIGlzIGZhbHNlIGF0IGluaXQiKTsKKyAg
ICAgICAgcmV0dXJuIGNoZWNrQm9keUpTT04ocmVxdWVzdCwgZXhwZWN0ZWQpOworICAgICAgfSwg
IkNvbnN1bWUgIiArIGJvZHlUeXBlICArICIgcmVxdWVzdCdzIGJvZHkgYXMgSlNPTiIpOwogICAg
IH0KIAogICAgIHZhciBmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpOwpAQCAtNzMsMTEgKzg4LDM3
IEBACiAgICAgdmFyIHRleHREYXRhID0gSlNPTi5zdHJpbmdpZnkoIlRoaXMgaXMgcmVzcG9uc2Un
cyBib2R5Iik7CiAgICAgdmFyIGJsb2IgPSBuZXcgQmxvYihbdGV4dERhdGFdLCB7ICJ0eXBlIiA6
ICJ0ZXh0L3BsYWluIiB9KTsKIAotICAgIGNoZWNrUmVxdWVzdEJvZHkodGV4dERhdGEsICJ0ZXh0
IiwgY2hlY2tCb2R5VGV4dCk7Ci0gICAgY2hlY2tSZXF1ZXN0Qm9keSh0ZXh0RGF0YSwgImJsb2Ii
LCBjaGVja0JvZHlCbG9iKTsKLSAgICBjaGVja1JlcXVlc3RCb2R5KHRleHREYXRhLCAiYXJyYXlC
dWZmZXIiLCBjaGVja0JvZHlBcnJheUJ1ZmZlcik7Ci0gICAgY2hlY2tSZXF1ZXN0Qm9keSh0ZXh0
RGF0YSwgImpzb24iLCBjaGVja0JvZHlKU09OKTsKLSAgICBjaGVja1JlcXVlc3RCb2R5KGZvcm1E
YXRhLCAiZm9ybURhdGEiLCBjaGVja0JvZHlGb3JtRGF0YSk7CisgICAgY2hlY2tSZXF1ZXN0Qm9k
eSh0ZXh0RGF0YSwgdGV4dERhdGEsICJTdHJpbmciKTsKKworCisgICAgdmFyIHN0cmluZyA9ICJc
IjEyMzQ1NlwiIjsKKyAgICBmdW5jdGlvbiBnZXRBcnJheUJ1ZmZlcigpIHsKKyAgICAgICAgdmFy
IGFycmF5QnVmZmVyID0gbmV3IEFycmF5QnVmZmVyKDgpOworICAgICAgICB2YXIgaW50OEFycmF5
ID0gbmV3IEludDhBcnJheShhcnJheUJ1ZmZlcik7CisgICAgICAgIGZvciAodmFyIGNwdHIgPSAw
OyBjcHRyIDwgODsgY3B0cisrKQorICAgICAgICAgICAgaW50OEFycmF5W2NwdHJdID0gc3RyaW5n
LmNoYXJDb2RlQXQoY3B0cik7CisgICAgICAgIHJldHVybiBhcnJheUJ1ZmZlcjsKKyAgICB9CisK
KyAgICBmdW5jdGlvbiBnZXRBcnJheUJ1ZmZlcldpdGhaZXJvcygpIHsKKyAgICAgICAgdmFyIGFy
cmF5QnVmZmVyID0gbmV3IEFycmF5QnVmZmVyKDEwKTsKKyAgICAgICAgdmFyIGludDhBcnJheSA9
IG5ldyBJbnQ4QXJyYXkoYXJyYXlCdWZmZXIpOworICAgICAgICBmb3IgKHZhciBjcHRyID0gMDsg
Y3B0ciA8IDg7IGNwdHIrKykKKyAgICAgICAgICAgIGludDhBcnJheVtjcHRyICsgMV0gPSBzdHJp
bmcuY2hhckNvZGVBdChjcHRyKTsKKyAgICAgICAgcmV0dXJuIGFycmF5QnVmZmVyOworICAgIH0K
KworICAgIGNoZWNrUmVxdWVzdEJvZHkoZ2V0QXJyYXlCdWZmZXIoKSwgc3RyaW5nLCAiQXJyYXlC
dWZmZXIiKTsKKyAgICBjaGVja1JlcXVlc3RCb2R5KG5ldyBVaW50OEFycmF5KGdldEFycmF5QnVm
ZmVyKCkpLCBzdHJpbmcsICJVaW50OEFycmF5Iik7CisgICAgY2hlY2tSZXF1ZXN0Qm9keShuZXcg
SW50OEFycmF5KGdldEFycmF5QnVmZmVyV2l0aFplcm9zKCksIDEsIDgpLCBzdHJpbmcsICJJbnQ4
QXJyYXkiKTsKKyAgICBjaGVja1JlcXVlc3RCb2R5KG5ldyBGbG9hdDMyQXJyYXkoZ2V0QXJyYXlC
dWZmZXIoKSksIHN0cmluZywgIkZsb2F0MzJBcnJheSIpOworICAgIGNoZWNrUmVxdWVzdEJvZHko
bmV3IERhdGFWaWV3KGdldEFycmF5QnVmZmVyV2l0aFplcm9zKCksIDEsIDgpLCBzdHJpbmcsICJE
YXRhVmlldyIpOworCisgICAgcHJvbWlzZV90ZXN0KGZ1bmN0aW9uKHRlc3QpIHsKKyAgICAgIHZh
ciByZXF1ZXN0ID0gbmV3IFJlcXVlc3QoIiIsIHsibWV0aG9kIjogIlBPU1QiLCAiYm9keSI6IGZv
cm1EYXRhIH0pOworICAgICAgYXNzZXJ0X2ZhbHNlKHJlcXVlc3QuYm9keVVzZWQsICJib2R5VXNl
ZCBpcyBmYWxzZSBhdCBpbml0Iik7CisgICAgICByZXR1cm4gY2hlY2tCb2R5Rm9ybURhdGEocmVx
dWVzdCwgZm9ybURhdGEpOworICAgIH0sICJDb25zdW1lIEZvcm1EYXRhIHJlcXVlc3QncyBib2R5
IGFzIEZvcm1EYXRhIik7CiAKICAgICBmdW5jdGlvbiBjaGVja0Jsb2JSZXNwb25zZUJvZHkoYmxv
YkJvZHksIGJsb2JEYXRhLCBib2R5VHlwZSwgY2hlY2tGdW5jdGlvbikgewogICAgICAgcHJvbWlz
ZV90ZXN0KGZ1bmN0aW9uKHRlc3QpIHsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZmV0Y2gvYXBpL3Jlc3BvbnNlL3Jlc3BvbnNlLWNvbnN1
bWUtc3RyZWFtLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvZmV0Y2gvYXBpL3Jlc3BvbnNlL3Jlc3BvbnNlLWNvbnN1bWUtc3RyZWFtLWV4
cGVjdGVkLnR4dAppbmRleCAwMWEzYmQwMGIxMGM3ZDU1ZjY2OTUwYTMyMjAxMjM1MjhmYThlNjll
Li41MDE1ZDZjZmJjYjhmMDU2Yzk5ODMwODJjMDBhODVjYWM1YjI2YzNiIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9yZXNw
b25zZS9yZXNwb25zZS1jb25zdW1lLXN0cmVhbS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkvcmVzcG9uc2UvcmVz
cG9uc2UtY29uc3VtZS1zdHJlYW0tZXhwZWN0ZWQudHh0CkBAIC0zLDYgKzMsNyBAQCBQQVNTIFJl
YWQgZW1wdHkgdGV4dCByZXNwb25zZSdzIGJvZHkgYXMgcmVhZGFibGVTdHJlYW0KIFBBU1MgUmVh
ZCBlbXB0eSBibG9iIHJlc3BvbnNlJ3MgYm9keSBhcyByZWFkYWJsZVN0cmVhbSAKIFBBU1MgUmVh
ZCBibG9iIHJlc3BvbnNlJ3MgYm9keSBhcyByZWFkYWJsZVN0cmVhbSAKIFBBU1MgUmVhZCB0ZXh0
IHJlc3BvbnNlJ3MgYm9keSBhcyByZWFkYWJsZVN0cmVhbSAKK1BBU1MgUmVhZCBhcnJheSBidWZm
ZXIgcmVzcG9uc2UncyBib2R5IGFzIHJlYWRhYmxlU3RyZWFtIAogRkFJTCBSZWFkIGZvcm0gZGF0
YSByZXNwb25zZSdzIGJvZHkgYXMgcmVhZGFibGVTdHJlYW0gcHJvbWlzZV90ZXN0OiBVbmhhbmRs
ZWQgcmVqZWN0aW9uIHdpdGggdmFsdWU6ICJub3QgaW1wbGVtZW50ZWQiCiBQQVNTIEdldHRpbmcg
YW4gZXJyb3IgUmVzcG9uc2Ugc3RyZWFtIAogUEFTUyBHZXR0aW5nIGEgcmVkaXJlY3QgUmVzcG9u
c2Ugc3RyZWFtIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9mZXRjaC9hcGkvcmVzcG9uc2UvcmVzcG9uc2UtY29uc3VtZS1zdHJlYW0uaHRt
bCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZmV0Y2gvYXBp
L3Jlc3BvbnNlL3Jlc3BvbnNlLWNvbnN1bWUtc3RyZWFtLmh0bWwKaW5kZXggZWUzMzJlMTc4M2Ni
Mjg5NWFmNTU3Y2JlOWExNGRlODc1MWI0NzUzNi4uZjk2MTkyZmE5ODBhOTdhYjZmNDBmMmQzYjk1
ZWY2NjE1ZjAwY2Y3MSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkvcmVzcG9uc2UvcmVzcG9uc2UtY29uc3VtZS1zdHJlYW0u
aHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Zl
dGNoL2FwaS9yZXNwb25zZS9yZXNwb25zZS1jb25zdW1lLXN0cmVhbS5odG1sCkBAIC00MCw2ICs0
MCwxNSBAQCBwcm9taXNlX3Rlc3QoZnVuY3Rpb24odGVzdCkgewogfSwgIlJlYWQgdGV4dCByZXNw
b25zZSdzIGJvZHkgYXMgcmVhZGFibGVTdHJlYW0iKTsKIAogcHJvbWlzZV90ZXN0KGZ1bmN0aW9u
KHRlc3QpIHsKKyAgICB2YXIgYXJyYXlCdWZmZXIgPSBuZXcgQXJyYXlCdWZmZXIodGV4dERhdGEu
bGVuZ3RoKTsKKyAgICB2YXIgaW50OEFycmF5ID0gbmV3IEludDhBcnJheShhcnJheUJ1ZmZlcik7
CisgICAgZm9yICh2YXIgY3B0ciA9IDA7IGNwdHIgPCB0ZXh0RGF0YS5sZW5ndGg7IGNwdHIrKykK
KyAgICAgICAgaW50OEFycmF5W2NwdHJdID0gdGV4dERhdGEuY2hhckNvZGVBdChjcHRyKTsKKwor
ICAgIHJldHVybiB2YWxpZGF0ZVN0cmVhbUZyb21TdHJpbmcobmV3IFJlc3BvbnNlKGFycmF5QnVm
ZmVyKS5ib2R5LmdldFJlYWRlcigpLCB0ZXh0RGF0YSk7Cit9LCAiUmVhZCBhcnJheSBidWZmZXIg
cmVzcG9uc2UncyBib2R5IGFzIHJlYWRhYmxlU3RyZWFtIik7CisKK3Byb21pc2VfdGVzdChmdW5j
dGlvbih0ZXN0KSB7CiAgICAgdmFyIHJlc3BvbnNlID0gbmV3IFJlc3BvbnNlKGZvcm1EYXRhKTsK
ICAgICByZXR1cm4gdmFsaWRhdGVTdHJlYW1Gcm9tU3RyaW5nKHJlc3BvbnNlLmJvZHkuZ2V0UmVh
ZGVyKCksICJuYW1lPXZhbHVlIik7CiB9LCAiUmVhZCBmb3JtIGRhdGEgcmVzcG9uc2UncyBib2R5
IGFzIHJlYWRhYmxlU3RyZWFtIik7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>286749</attachid>
            <date>2016-08-23 11:35:59 -0700</date>
            <delta_ts>2016-08-23 14:10:36 -0700</delta_ts>
            <desc>Adding FormData upload</desc>
            <filename>bug-161087-20160823203355.patch</filename>
            <type>text/plain</type>
            <size>30221</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA0Nzk1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODljOWUyZDVlZTc5YTc0
YTYwZmY4MjgxYmVmYTg4MjBkNTg0MDY4Mi4uZDNjYTg3M2I4OTcwNjM5MzNhYjUyMjcyY2YwNTQw
M2M0OTgzZDE4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDM1IEBACiAyMDE2LTA4LTIzICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAorICAgICAgICBbRmV0Y2ggQVBJXSBBZGQg
c3VwcG9ydCBmb3IgQnVmZmVyU291cmNlIGJvZGllcworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYxMDg3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgQ292ZXJlZCBieSB1cGRhdGVkIHRlc3RzLgorCisgICAg
ICAgIEFkZGVkIHN1cHBvcnQgZm9yIEFycmF5QnVmZmVyLCBBcnJheUJ1ZmZlclZpZXcgYW5kIEZv
cm1EYXRhIHVwbG9hZC4KKyAgICAgICAgQWRkZWQgc3VwcG9ydCBmb3IgY29uc3VtaW5nIEFycmF5
QnVmZmVyVmlldy4KKworICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkZldGNoQm9keTo6Ym9keUZvckludGVybmFsUmVxdWVzdCk6IEFkZGlu
ZyBzdXBwb3J0IGZvciBGT3JtRGF0YSB1cGxvYWQuCisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJv
ZHk6OkZldGNoQm9keSk6IEFkZGluZyBBcnJheUJ1ZmZlciBhbmQgQXJyYXlCdWZmZXJWaWV3IGNv
bnN0cnVjdG9ycy4KKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keTo6ZXh0cmFjdCk6IEV4dHJh
Y3RpbmcgaW4gY2FzZSBvZiBCdWZmZXJTb3VyY2UgKGkuZS4gQXJyYXlCdWZmZXIgb3IgQXJyYXlC
dWZmZXJWaWV3KQorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Ojpjb25zdW1lKTogQWRkaW5n
IHN1cHBvcnQgdG8gY29uc3VtZSBBcnJheUJ1ZmZlclZpZXcuCisgICAgICAgIChXZWJDb3JlOjpG
ZXRjaEJvZHk6OmNvbnN1bWVBc1N0cmVhbSk6IEFkZGluZyBzdXBwb3J0IHRvIGNvbnN1bWUgQXJy
YXlCdWZmZXJWaWV3IGFzIGEgc3RyZWFtLgorICAgICAgICBDbG9uZWQgdGhlIEFycmF5QnVmZmVy
IGJlZm9yZSBlbnF1ZXVpbmcgaXQgaW4gIHRoZSBzdHJlYW0uCisgICAgICAgIChXZWJDb3JlOjpG
ZXRjaEJvZHk6OmNvbnN1bWVBcnJheUJ1ZmZlcik6IENsZWFuaW5nIG1fZGF0YSBhZnRlciBiZWlu
ZyBjb25zdW1lZC4KKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keTo6Y29uc3VtZUFycmF5QnVm
ZmVyVmlldyk6IEFkZGluZyBzdXBwb3J0IHRvIGNvbnN1bWUgQXJyYXlCdWZmZXJWaWV3LgorICAg
ICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Ojpjb25zdW1lVGV4dCk6IENsZWFuaW5nIG1fdGV4dCBh
ZnRlciBiZWluZyBjb25zdW1lZC4KKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keTo6Y29uc3Vt
ZUJsb2IpOiBEaXR0byBmb3IgbV9ibG9iLgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Ojpi
b2R5Rm9ySW50ZXJuYWxSZXF1ZXN0KTogQWRkaW5nIHN1cHBvcnQgZm9yIEFycmF5QnVmZmVyIGFu
ZCBBcnJheUJ1ZmZlclZpZXcgdXBsb2FkLgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hC
b2R5Lmg6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaFJlcXVlc3QuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RmV0Y2hSZXF1ZXN0OjppbnRlcm5hbFJlcXVlc3QpOiBQYXNzaW5nIFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQgYXMgdGhpcyBpcyBuZWVkZWQgZm9yIEZvcm1EYXRhIHVwbG9hZC4K
KyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RmV0Y2hSZXNwb25zZTo6ZmV0Y2gpOiBSZW1vdmluZyBGb3JtRGF0YSB1cGxvYWQgcmVq
ZWVjdGlvbiBjaGVjay4KKworMjAxNi0wOC0yMyAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBs
ZS5jb20+CisKICAgICAgICAgSW1wbGVtZW50IHJlZGlyZWN0IHN1cHBvcnQgcG9zdCBDT1JTLXBy
ZWZsaWdodAogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTU5MDU2CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hC
b2R5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmNwcAppbmRl
eCAxYjhiMTRhZjg2YjRkNmRlZjRmOGI2NWVjYjRmYTdlNTAxOTJlODJiLi5lZmE3MzM0OTJkYWM4
OTYxNDc4NTI0ZjIwMGRlZmU5YjA2ZGE2ODgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9m
ZXRjaC9GZXRjaEJvZHkuY3BwCkBAIC00MSw2ICs0MSw4IEBACiAjaW5jbHVkZSAiSlNET01Gb3Jt
RGF0YS5oIgogI2luY2x1ZGUgIkpTUmVhZGFibGVTdHJlYW0uaCIKICNpbmNsdWRlICJSZWFkYWJs
ZVN0cmVhbVNvdXJjZS5oIgorI2luY2x1ZGUgPHJ1bnRpbWUvQXJyYXlCdWZmZXIuaD4KKyNpbmNs
dWRlIDxydW50aW1lL0FycmF5QnVmZmVyVmlldy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
QEAgLTY2LDYgKzY4LDE4IEBAIEZldGNoQm9keTo6RmV0Y2hCb2R5KFN0cmluZyYmIHRleHQpCiB7
CiB9CiAKK0ZldGNoQm9keTo6RmV0Y2hCb2R5KFJlZjxBcnJheUJ1ZmZlcj4mJiBkYXRhKQorICAg
IDogbV90eXBlKFR5cGU6OkFycmF5QnVmZmVyKQorICAgICwgbV9kYXRhKFdURk1vdmUoZGF0YSkp
Cit7Cit9CisKK0ZldGNoQm9keTo6RmV0Y2hCb2R5KFJlZjxBcnJheUJ1ZmZlclZpZXc+JiYgZGF0
YVZpZXcpCisgICAgOiBtX3R5cGUoVHlwZTo6QXJyYXlCdWZmZXJWaWV3KQorICAgICwgbV9kYXRh
VmlldyhXVEZNb3ZlKGRhdGFWaWV3KSkKK3sKK30KKwogRmV0Y2hCb2R5IEZldGNoQm9keTo6ZXh0
cmFjdChKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIEpTQzo6SlNWYWx1ZSB2YWx1ZSkKIHsKICAgICBp
ZiAodmFsdWUuaW5oZXJpdHMoSlNCbG9iOjppbmZvKCkpKQpAQCAtNzYsNyArOTAsMTYgQEAgRmV0
Y2hCb2R5IEZldGNoQm9keTo6ZXh0cmFjdChKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIEpTQzo6SlNW
YWx1ZSB2YWx1ZSkKICAgICAgICAgcmV0dXJuIEZldGNoQm9keSh2YWx1ZS50b1dURlN0cmluZygm
c3RhdGUpKTsKICAgICBpZiAodmFsdWUuaW5oZXJpdHMoSlNSZWFkYWJsZVN0cmVhbTo6aW5mbygp
KSkKICAgICAgICAgcmV0dXJuIHsgVHlwZTo6UmVhZGFibGVTdHJlYW0gfTsKLSAgICAvLyBGSVhN
RTogSW1wbGVtZW50IEJ1ZmZlclNvdXJjZSBleHRyYWN0aW9uLgorICAgIGlmICh2YWx1ZS5pbmhl
cml0cyhKU0M6OkpTQXJyYXlCdWZmZXI6OmluZm8oKSkpIHsKKyAgICAgICAgQXJyYXlCdWZmZXIq
IGRhdGEgPSB0b0FycmF5QnVmZmVyKHZhbHVlKTsKKyAgICAgICAgQVNTRVJUKGRhdGEpOworICAg
ICAgICByZXR1cm4geyAqZGF0YSB9OworICAgIH0KKyAgICBpZiAodmFsdWUuaW5oZXJpdHMoSlND
OjpKU0FycmF5QnVmZmVyVmlldzo6aW5mbygpKSkgeworICAgICAgICBSZWZQdHI8SlNDOjpBcnJh
eUJ1ZmZlclZpZXc+IGRhdGEgPSB0b0FycmF5QnVmZmVyVmlldyh2YWx1ZSk7CisgICAgICAgIEFT
U0VSVChkYXRhKTsKKyAgICAgICAgcmV0dXJuIHsgZGF0YS5yZWxlYXNlTm9uTnVsbCgpIH07Cisg
ICAgfQogICAgIHJldHVybiB7IH07CiB9CiAKQEAgLTEzOCw2ICsxNjEsOSBAQCB2b2lkIEZldGNo
Qm9keTo6Y29uc3VtZShGZXRjaEJvZHlPd25lciYgb3duZXIsIERlZmVycmVkV3JhcHBlciYmIHBy
b21pc2UpCiAgICAgY2FzZSBUeXBlOjpBcnJheUJ1ZmZlcjoKICAgICAgICAgY29uc3VtZUFycmF5
QnVmZmVyKHByb21pc2UpOwogICAgICAgICByZXR1cm47CisgICAgY2FzZSBUeXBlOjpBcnJheUJ1
ZmZlclZpZXc6CisgICAgICAgIGNvbnN1bWVBcnJheUJ1ZmZlclZpZXcocHJvbWlzZSk7CisgICAg
ICAgIHJldHVybjsKICAgICBjYXNlIFR5cGU6OlRleHQ6CiAgICAgICAgIGNvbnN1bWVUZXh0KHBy
b21pc2UpOwogICAgICAgICByZXR1cm47CkBAIC0xNjgsMTYgKzE5NCwyNSBAQCB2b2lkIEZldGNo
Qm9keTo6Y29uc3VtZUFzU3RyZWFtKEZldGNoQm9keU93bmVyJiBvd25lciwgRmV0Y2hSZXNwb25z
ZVNvdXJjZSYgc291cgogICAgIHN3aXRjaCAobV90eXBlKSB7CiAgICAgY2FzZSBUeXBlOjpBcnJh
eUJ1ZmZlcjoKICAgICAgICAgQVNTRVJUKG1fZGF0YSk7Ci0gICAgICAgIGNsb3NlU3RyZWFtID0g
c291cmNlLmVucXVldWUoUmVmUHRyPEpTQzo6QXJyYXlCdWZmZXI+KG1fZGF0YSkpOworICAgICAg
ICBjbG9zZVN0cmVhbSA9IHNvdXJjZS5lbnF1ZXVlKEFycmF5QnVmZmVyOjp0cnlDcmVhdGUobV9k
YXRhLT5kYXRhKCksIG1fZGF0YS0+Ynl0ZUxlbmd0aCgpKSk7CisgICAgICAgIG1fZGF0YSA9IG51
bGxwdHI7CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgVHlwZTo6QXJyYXlCdWZmZXJWaWV3OiB7
CisgICAgICAgIEFTU0VSVChtX2RhdGFWaWV3KTsKKyAgICAgICAgY2xvc2VTdHJlYW0gPSBzb3Vy
Y2UuZW5xdWV1ZShBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlKG1fZGF0YVZpZXctPmJhc2VBZGRyZXNz
KCksIG1fZGF0YVZpZXctPmJ5dGVMZW5ndGgoKSkpOworICAgICAgICBtX2RhdGFWaWV3ID0gbnVs
bHB0cjsKKyAgICAgICAgYnJlYWs7CisgICAgfQogICAgIGNhc2UgVHlwZTo6VGV4dDogewogICAg
ICAgICBWZWN0b3I8dWludDhfdD4gZGF0YSA9IGV4dHJhY3RGcm9tVGV4dCgpOwogICAgICAgICBj
bG9zZVN0cmVhbSA9IHNvdXJjZS5lbnF1ZXVlKEFycmF5QnVmZmVyOjp0cnlDcmVhdGUoZGF0YS5k
YXRhKCksIGRhdGEuc2l6ZSgpKSk7CisgICAgICAgIG1fdGV4dC5yZWxlYXNlSW1wbCgpOwogICAg
ICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBUeXBlOjpCbG9iOgogICAgICAgICBBU1NFUlQo
bV9ibG9iKTsKICAgICAgICAgb3duZXIubG9hZEJsb2IoKm1fYmxvYiwgbnVsbHB0cik7CisgICAg
ICAgIG1fYmxvYiA9IG51bGxwdHI7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgVHlwZTo6Tm9u
ZToKICAgICAgICAgY2xvc2VTdHJlYW0gPSB0cnVlOwpAQCAtMTk3LDEzICsyMzIsMjMgQEAgdm9p
ZCBGZXRjaEJvZHk6OmNvbnN1bWVBc1N0cmVhbShGZXRjaEJvZHlPd25lciYgb3duZXIsIEZldGNo
UmVzcG9uc2VTb3VyY2UmIHNvdXIKIAogdm9pZCBGZXRjaEJvZHk6OmNvbnN1bWVBcnJheUJ1ZmZl
cihEZWZlcnJlZFdyYXBwZXImIHByb21pc2UpCiB7CisgICAgQVNTRVJUKG1fZGF0YSk7CiAgICAg
bV9jb25zdW1lci5yZXNvbHZlV2l0aERhdGEocHJvbWlzZSwgc3RhdGljX2Nhc3Q8Y29uc3QgdWlu
dDhfdCo+KG1fZGF0YS0+ZGF0YSgpKSwgbV9kYXRhLT5ieXRlTGVuZ3RoKCkpOworICAgIG1fZGF0
YSA9IG51bGxwdHI7Cit9CisKK3ZvaWQgRmV0Y2hCb2R5Ojpjb25zdW1lQXJyYXlCdWZmZXJWaWV3
KERlZmVycmVkV3JhcHBlciYgcHJvbWlzZSkKK3sKKyAgICBBU1NFUlQobV9kYXRhVmlldyk7Cisg
ICAgbV9jb25zdW1lci5yZXNvbHZlV2l0aERhdGEocHJvbWlzZSwgc3RhdGljX2Nhc3Q8Y29uc3Qg
dWludDhfdCo+KG1fZGF0YVZpZXctPmJhc2VBZGRyZXNzKCkpLCBtX2RhdGFWaWV3LT5ieXRlTGVu
Z3RoKCkpOworICAgIG1fZGF0YVZpZXcgPSBudWxscHRyOwogfQogCiB2b2lkIEZldGNoQm9keTo6
Y29uc3VtZVRleHQoRGVmZXJyZWRXcmFwcGVyJiBwcm9taXNlKQogewogICAgIFZlY3Rvcjx1aW50
OF90PiBkYXRhID0gZXh0cmFjdEZyb21UZXh0KCk7CiAgICAgbV9jb25zdW1lci5yZXNvbHZlV2l0
aERhdGEocHJvbWlzZSwgZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKTsKKyAgICBtX3RleHQucmVs
ZWFzZUltcGwoKTsKIH0KIAogdm9pZCBGZXRjaEJvZHk6OmNvbnN1bWVCbG9iKEZldGNoQm9keU93
bmVyJiBvd25lciwgRGVmZXJyZWRXcmFwcGVyJiYgcHJvbWlzZSkKQEAgLTIxMiw2ICsyNTcsNyBA
QCB2b2lkIEZldGNoQm9keTo6Y29uc3VtZUJsb2IoRmV0Y2hCb2R5T3duZXImIG93bmVyLCBEZWZl
cnJlZFdyYXBwZXImJiBwcm9taXNlKQogCiAgICAgbV9jb25zdW1lUHJvbWlzZSA9IFdURk1vdmUo
cHJvbWlzZSk7CiAgICAgb3duZXIubG9hZEJsb2IoKm1fYmxvYiwgJm1fY29uc3VtZXIpOworICAg
IG1fYmxvYiA9IG51bGxwdHI7CiB9CiAKIFZlY3Rvcjx1aW50OF90PiBGZXRjaEJvZHk6OmV4dHJh
Y3RGcm9tVGV4dCgpIGNvbnN0CkBAIC0yNDEsMTcgKzI4NywzMyBAQCB2b2lkIEZldGNoQm9keTo6
bG9hZGluZ1N1Y2NlZWRlZCgpCiAgICAgfQogfQogCi1SZWZQdHI8Rm9ybURhdGE+IEZldGNoQm9k
eTo6Ym9keUZvckludGVybmFsUmVxdWVzdCgpIGNvbnN0CitSZWZQdHI8Rm9ybURhdGE+IEZldGNo
Qm9keTo6Ym9keUZvckludGVybmFsUmVxdWVzdChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250
ZXh0KSBjb25zdAogewogICAgIGlmIChtX3R5cGUgPT0gVHlwZTo6Tm9uZSkKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAgICAgaWYgKG1fdHlwZSA9PSBUeXBlOjpUZXh0KQogICAgICAgICByZXR1
cm4gRm9ybURhdGE6OmNyZWF0ZShVVEY4RW5jb2RpbmcoKS5lbmNvZGUobV90ZXh0LCBFbnRpdGll
c0ZvclVuZW5jb2RhYmxlcykpOwogICAgIGlmIChtX3R5cGUgPT0gVHlwZTo6QmxvYikgeworICAg
ICAgICBBU1NFUlQobV9ibG9iKTsKICAgICAgICAgUmVmUHRyPEZvcm1EYXRhPiBib2R5ID0gRm9y
bURhdGE6OmNyZWF0ZSgpOwogICAgICAgICBib2R5LT5hcHBlbmRCbG9iKG1fYmxvYi0+dXJsKCkp
OwogICAgICAgICByZXR1cm4gYm9keTsKICAgICB9CisgICAgaWYgKG1fdHlwZSA9PSBUeXBlOjpB
cnJheUJ1ZmZlcikgeworICAgICAgICBBU1NFUlQobV9kYXRhKTsKKyAgICAgICAgcmV0dXJuIEZv
cm1EYXRhOjpjcmVhdGUobV9kYXRhLT5kYXRhKCksIG1fZGF0YS0+Ynl0ZUxlbmd0aCgpKTsKKyAg
ICB9CisgICAgaWYgKG1fdHlwZSA9PSBUeXBlOjpBcnJheUJ1ZmZlclZpZXcpIHsKKyAgICAgICAg
QVNTRVJUKG1fZGF0YVZpZXcpOworICAgICAgICByZXR1cm4gRm9ybURhdGE6OmNyZWF0ZShtX2Rh
dGFWaWV3LT5iYXNlQWRkcmVzcygpLCBtX2RhdGFWaWV3LT5ieXRlTGVuZ3RoKCkpOworICAgIH0K
KworICAgIGlmIChtX3R5cGUgPT0gVHlwZTo6Rm9ybURhdGEpIHsKKyAgICAgICAgQVNTRVJUKG1f
Zm9ybURhdGEpOworICAgICAgICBBU1NFUlQoIWNvbnRleHQuaXNXb3JrZXJHbG9iYWxTY29wZSgp
KTsKKyAgICAgICAgcmV0dXJuIEZvcm1EYXRhOjpjcmVhdGVNdWx0aVBhcnQoKihzdGF0aWNfY2Fz
dDxGb3JtRGF0YUxpc3QqPihtX2Zvcm1EYXRhLmdldCgpKSksIG1fZm9ybURhdGEtPmVuY29kaW5n
KCksIHN0YXRpY19jYXN0PERvY3VtZW50Kj4oJmNvbnRleHQpKTsKKyAgICB9CisKICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2ZldGNoL0ZldGNoQm9keS5oCmluZGV4IDRjYWIzOTE2ZGE3MGVlMDYyN2Y0ZWUzYTg4
MThlMmUwZmFkNzJiNTIuLmQ5N2VkODAyODFhZWI5NmJjZjU3ODdkMjI2NzkzYWZhYzE5ODdlYWUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuaApAQCAtNDcsNiArNDcs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBGZXRjaEJvZHlPd25lcjsKIGNsYXNzIEZl
dGNoUmVzcG9uc2VTb3VyY2U7CiBjbGFzcyBGb3JtRGF0YTsKK2NsYXNzIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQ7CiAKIGNsYXNzIEZldGNoQm9keSB7CiBwdWJsaWM6CkBAIC03Myw5ICs3NCw5IEBA
IHB1YmxpYzoKICAgICB2b2lkIGxvYWRpbmdGYWlsZWQoKTsKICAgICB2b2lkIGxvYWRpbmdTdWNj
ZWVkZWQoKTsKIAotICAgIFJlZlB0cjxGb3JtRGF0YT4gYm9keUZvckludGVybmFsUmVxdWVzdCgp
IGNvbnN0OworICAgIFJlZlB0cjxGb3JtRGF0YT4gYm9keUZvckludGVybmFsUmVxdWVzdChTY3Jp
cHRFeGVjdXRpb25Db250ZXh0JikgY29uc3Q7CiAKLSAgICBlbnVtIGNsYXNzIFR5cGUgeyBOb25l
LCBBcnJheUJ1ZmZlciwgQmxvYiwgRm9ybURhdGEsIFRleHQsIExvYWRpbmcsIExvYWRlZCwgUmVh
ZGFibGVTdHJlYW0gfTsKKyAgICBlbnVtIGNsYXNzIFR5cGUgeyBOb25lLCBBcnJheUJ1ZmZlciwg
QXJyYXlCdWZmZXJWaWV3LCBCbG9iLCBGb3JtRGF0YSwgVGV4dCwgTG9hZGluZywgTG9hZGVkLCBS
ZWFkYWJsZVN0cmVhbSB9OwogICAgIFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsg
fQogCiAgICAgRmV0Y2hCb2R5Q29uc3VtZXImIGNvbnN1bWVyKCkgeyByZXR1cm4gbV9jb25zdW1l
cjsgfQpAQCAtODQsNiArODUsOCBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgRmV0Y2hCb2R5
KFJlZjxCbG9iPiYmKTsKKyAgICBGZXRjaEJvZHkoUmVmPEFycmF5QnVmZmVyPiYmKTsKKyAgICBG
ZXRjaEJvZHkoUmVmPEFycmF5QnVmZmVyVmlldz4mJik7CiAgICAgRmV0Y2hCb2R5KFJlZjxET01G
b3JtRGF0YT4mJik7CiAgICAgRmV0Y2hCb2R5KFN0cmluZyYmKTsKICAgICBGZXRjaEJvZHkoVHlw
ZSB0eXBlKSA6IG1fdHlwZSh0eXBlKSB7IH0KQEAgLTkyLDYgKzk1LDcgQEAgcHJpdmF0ZToKIAog
ICAgIFZlY3Rvcjx1aW50OF90PiBleHRyYWN0RnJvbVRleHQoKSBjb25zdDsKICAgICB2b2lkIGNv
bnN1bWVBcnJheUJ1ZmZlcihEZWZlcnJlZFdyYXBwZXImKTsKKyAgICB2b2lkIGNvbnN1bWVBcnJh
eUJ1ZmZlclZpZXcoRGVmZXJyZWRXcmFwcGVyJik7CiAgICAgdm9pZCBjb25zdW1lVGV4dChEZWZl
cnJlZFdyYXBwZXImKTsKICAgICB2b2lkIGNvbnN1bWVCbG9iKEZldGNoQm9keU93bmVyJiwgRGVm
ZXJyZWRXcmFwcGVyJiYpOwogCkBAIC0xMDIsNiArMTA2LDcgQEAgcHJpdmF0ZToKICAgICBSZWZQ
dHI8QmxvYj4gbV9ibG9iOwogICAgIFJlZlB0cjxET01Gb3JtRGF0YT4gbV9mb3JtRGF0YTsKICAg
ICBSZWZQdHI8QXJyYXlCdWZmZXI+IG1fZGF0YTsKKyAgICBSZWZQdHI8QXJyYXlCdWZmZXJWaWV3
PiBtX2RhdGFWaWV3OwogICAgIFN0cmluZyBtX3RleHQ7CiAKICAgICBGZXRjaEJvZHlDb25zdW1l
ciBtX2NvbnN1bWVyIHsgRmV0Y2hCb2R5Q29uc3VtZXI6OlR5cGU6Ok5vbmUgfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXF1ZXN0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXF1ZXN0LmNwcAppbmRleCA5ODdmOTdlZGM1
YmY5NzZkNzIzMGRkZDc5NGVlYWNmMzc4NjdkNTBlLi5lMjRiZjEzZDU4OGIwNzQ2ZTE5YjdmMjc4
NmI1ODYxZWFjMmE2MGE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNo
L0ZldGNoUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRj
aFJlcXVlc3QuY3BwCkBAIC0yOTYsOSArMjk2LDExIEBAIGNvbnN0IFN0cmluZyYgRmV0Y2hSZXF1
ZXN0Ojp1cmwoKSBjb25zdAogCiBSZXNvdXJjZVJlcXVlc3QgRmV0Y2hSZXF1ZXN0OjppbnRlcm5h
bFJlcXVlc3QoKSBjb25zdAogeworICAgIEFTU0VSVChzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkp
OworCiAgICAgUmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QgPSBtX2ludGVybmFsUmVxdWVzdC5yZXF1
ZXN0OwogICAgIHJlcXVlc3Quc2V0SFRUUEhlYWRlckZpZWxkcyhtX2hlYWRlcnMtPmludGVybmFs
SGVhZGVycygpKTsKLSAgICByZXF1ZXN0LnNldEhUVFBCb2R5KGJvZHkoKS5ib2R5Rm9ySW50ZXJu
YWxSZXF1ZXN0KCkpOworICAgIHJlcXVlc3Quc2V0SFRUUEJvZHkoYm9keSgpLmJvZHlGb3JJbnRl
cm5hbFJlcXVlc3QoKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkpOwogCiAgICAgLy8gRklYTUU6
IFN1cHBvcnQgbm8tcmVmZXJyZXIgYW5kIGNsaWVudC4gRW5zdXJlIHRoaXMgY2FzZS1zZW5zaXRp
dmUgY29tcGFyaXNvbiBpcyBvay4KICAgICBpZiAobV9pbnRlcm5hbFJlcXVlc3QucmVmZXJyZXIg
IT0gIm5vLXJlZmVycmVyIiAmJiBtX2ludGVybmFsUmVxdWVzdC5yZWZlcnJlciAhPSAiY2xpZW50
IikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25z
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwCmlu
ZGV4IDgyYjRhNTRlZTFkZGFkM2JhYTQzNzk4NDUwMDVmY2QwZTNmMTRhMWIuLjNjYzc4YmUxYTM3
Nzk4MDc3OTBiYjUxMjIzZWNlN2QxYzY4YWMxMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcApAQCAtMTA1LDExICsxMDUsNiBAQCB2b2lkIEZl
dGNoUmVzcG9uc2U6OmZldGNoKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIEZldGNo
UmVxdWVzdCYgcmVxdWVzdAogewogICAgIGF1dG8gcmVzcG9uc2UgPSBhZG9wdFJlZigqbmV3IEZl
dGNoUmVzcG9uc2UoY29udGV4dCwgRmV0Y2hCb2R5Ojpsb2FkaW5nQm9keSgpLCBGZXRjaEhlYWRl
cnM6OmNyZWF0ZShGZXRjaEhlYWRlcnM6Okd1YXJkOjpJbW11dGFibGUpLCB7IH0pKTsKIAotICAg
IC8vIEZJWE1FOiBJbXBsZW1lbnQgZm9ybSBkYXRhIHVwbG9hZC4KLSAgICBpZiAocmVxdWVzdC5i
b2R5VHlwZSgpID09IEZldGNoQm9keTo6VHlwZTo6Rm9ybURhdGEpIHsKLSAgICAgICAgcHJvbWlz
ZS5yZWplY3QoVHlwZUVycm9yLCAiVXBsb2FkaW5nIEZvcm1EYXRhIGlzIG5vdCB5ZXQgaW1wbGVt
ZW50ZWQiKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KICAgICAvLyBTZXR0aW5nIHBlbmRpbmcg
YWN0aXZpdHkgdW50aWwgQm9keUxvYWRlciBkaWRGYWlsIG9yIGRpZFN1Y2NlZWQgY2FsbGJhY2sg
aXMgY2FsbGVkLgogICAgIHJlc3BvbnNlLT5zZXRQZW5kaW5nQWN0aXZpdHkocmVzcG9uc2UucHRy
KCkpOwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwppbmRleCBkZmU4ODhjM2Y3NzkwZDM2
MmY4NGU1ZGIzZWFiYmM1Nzc1NjFkOTI3Li4yY2Y3ODNkMDFmNDUyM2I5NjdkODYyYTBjNTEwZDE2
YWE0Njc5YzczIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9n
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKQEAgLTEsNSArMSwyMiBA
QAogMjAxNi0wOC0yMyAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKKyAgICAg
ICAgW0ZldGNoIEFQSV0gQWRkIHN1cHBvcnQgZm9yIEJ1ZmZlclNvdXJjZSBib2RpZXMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MTA4NworCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd2ViLXBsYXRmb3Jt
LXRlc3RzL2ZldGNoL2FwaS9iYXNpYy9yZXF1ZXN0LWhlYWRlcnMtZXhwZWN0ZWQudHh0OgorICAg
ICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkvYmFzaWMvcmVxdWVzdC1oZWFkZXJz
LXdvcmtlci1leHBlY3RlZC50eHQ6CisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNo
L2FwaS9iYXNpYy9yZXF1ZXN0LWhlYWRlcnMuanM6CisgICAgICAgIChjaGVja0NvbnRlbnRUeXBl
KToKKyAgICAgICAgKHJlcXVlc3RIZWFkZXJzKTogQ2hhbmdlIHRoZSBvcmRlciBvZiB0aGUgaGVh
ZGVyIGNoZWNrcyBzbyB0aGF0IHBhc3NpbmcgaGVhZGVycyBhcmUgY2hlY2tlZCBmaXJzdC4KKyAg
ICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvZmV0Y2gvYXBpL3JlcXVlc3QvcmVxdWVzdC1jb25z
dW1lLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvZmV0Y2gvYXBp
L3JlcXVlc3QvcmVxdWVzdC1jb25zdW1lLmh0bWw6CisgICAgICAgICogd2ViLXBsYXRmb3JtLXRl
c3RzL2ZldGNoL2FwaS9yZXNwb25zZS9yZXNwb25zZS1jb25zdW1lLXN0cmVhbS1leHBlY3RlZC50
eHQ6CisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9yZXNwb25zZS9yZXNw
b25zZS1jb25zdW1lLXN0cmVhbS5odG1sOgorCisyMDE2LTA4LTIzICBZb3Vlbm4gRmFibGV0ICA8
eW91ZW5uQGFwcGxlLmNvbT4KKwogICAgICAgICBJbXBsZW1lbnQgcmVkaXJlY3Qgc3VwcG9ydCBw
b3N0IENPUlMtcHJlZmxpZ2h0CiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNTkwNTYKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkvYmFzaWMvcmVxdWVzdC1oZWFkZXJzLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZmV0
Y2gvYXBpL2Jhc2ljL3JlcXVlc3QtaGVhZGVycy1leHBlY3RlZC50eHQKaW5kZXggN2IxMjRiYmNk
ZjE0MzcxY2IwZTYwMWIyMmUzM2UxY2E4NDMyMWZkYi4uZjdkYjZiZmYzZDA5MjdiYTNkMzBhNmEw
OGUyZmZjOGRjYTNhODE3NSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkvYmFzaWMvcmVxdWVzdC1oZWFkZXJzLWV4cGVjdGVk
LnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Zl
dGNoL2FwaS9iYXNpYy9yZXF1ZXN0LWhlYWRlcnMtZXhwZWN0ZWQudHh0CkBAIC0xLDEzICsxLDE4
IEBACiAKIEZBSUwgRmV0Y2ggd2l0aCBHRVQgYXNzZXJ0X2VxdWFsczogUmVxdWVzdCBzaG91bGQg
aGF2ZSBoZWFkZXIgb3JpZ2luOiBodHRwOi8vbG9jYWxob3N0Ojg4MDAgZXhwZWN0ZWQgKHN0cmlu
ZykgImh0dHA6Ly9sb2NhbGhvc3Q6ODgwMCIgYnV0IGdvdCAob2JqZWN0KSBudWxsCi1GQUlMIEZl
dGNoIHdpdGggSEVBRCBhc3NlcnRfZXF1YWxzOiBSZXF1ZXN0IHNob3VsZCBoYXZlIGhlYWRlciBj
b250ZW50LWxlbmd0aDogbnVsbCBleHBlY3RlZCAob2JqZWN0KSBudWxsIGJ1dCBnb3QgKHN0cmlu
ZykgIjAiCitGQUlMIEZldGNoIHdpdGggSEVBRCBhc3NlcnRfZXF1YWxzOiBSZXF1ZXN0IHNob3Vs
ZCBoYXZlIGhlYWRlciBvcmlnaW46IGh0dHA6Ly9sb2NhbGhvc3Q6ODgwMCBleHBlY3RlZCAoc3Ry
aW5nKSAiaHR0cDovL2xvY2FsaG9zdDo4ODAwIiBidXQgZ290IChvYmplY3QpIG51bGwKIFBBU1Mg
RmV0Y2ggd2l0aCBQVVQgd2l0aG91dCBib2R5IAogUEFTUyBGZXRjaCB3aXRoIFBVVCB3aXRoIGJv
ZHkgCiBQQVNTIEZldGNoIHdpdGggUE9TVCB3aXRob3V0IGJvZHkgCiBQQVNTIEZldGNoIHdpdGgg
UE9TVCB3aXRoIHRleHQgYm9keSAKLUZBSUwgRmV0Y2ggd2l0aCBQT1NUIHdpdGggRm9ybURhdGEg
Ym9keSBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rpb24gd2l0aCB2YWx1ZTogb2JqZWN0
ICJUeXBlRXJyb3I6IFVwbG9hZGluZyBGb3JtRGF0YSBpcyBub3QgeWV0IGltcGxlbWVudGVkIgor
RkFJTCBGZXRjaCB3aXRoIFBPU1Qgd2l0aCBGb3JtRGF0YSBib2R5IGFzc2VydF90cnVlOiBSZXF1
ZXN0IHNob3VsZCBoYXZlIGhlYWRlciBjb250ZW50LXR5cGUgc3RhcnRpbmcgd2l0aCBtdWx0aXBh
cnQvZm9ybS1kYXRhO2JvdW5kYXJ5PSwgYnV0IGdvdCBtdWx0aXBhcnQvZm9ybS1kYXRhIGV4cGVj
dGVkIHRydWUgZ290IGZhbHNlCiBGQUlMIEZldGNoIHdpdGggUE9TVCB3aXRoIEJsb2IgYm9keSBh
c3NlcnRfZXF1YWxzOiBSZXF1ZXN0IHNob3VsZCBoYXZlIGhlYWRlciBjb250ZW50LXR5cGU6IG51
bGwgZXhwZWN0ZWQgKG9iamVjdCkgbnVsbCBidXQgZ290IChzdHJpbmcpICJhcHBsaWNhdGlvbi94
LXd3dy1mb3JtLXVybGVuY29kZWQiCi1GQUlMIEZldGNoIHdpdGggUE9TVCB3aXRoIEFycmF5QnVm
ZmVyIGJvZHkgcHJvbWlzZV90ZXN0OiBVbmhhbmRsZWQgcmVqZWN0aW9uIHdpdGggdmFsdWU6IG9i
amVjdCAiVHlwZUVycm9yOiBUeXBlIGVycm9yIgorRkFJTCBGZXRjaCB3aXRoIFBPU1Qgd2l0aCBB
cnJheUJ1ZmZlciBib2R5IGFzc2VydF9lcXVhbHM6IFJlcXVlc3Qgc2hvdWxkIGhhdmUgaGVhZGVy
IGNvbnRlbnQtdHlwZTogbnVsbCBleHBlY3RlZCAob2JqZWN0KSBudWxsIGJ1dCBnb3QgKHN0cmlu
ZykgImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCIKK0ZBSUwgRmV0Y2ggd2l0aCBQ
T1NUIHdpdGggVWludDhBcnJheSBib2R5IGFzc2VydF9lcXVhbHM6IFJlcXVlc3Qgc2hvdWxkIGhh
dmUgaGVhZGVyIGNvbnRlbnQtdHlwZTogbnVsbCBleHBlY3RlZCAob2JqZWN0KSBudWxsIGJ1dCBn
b3QgKHN0cmluZykgImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCIKK0ZBSUwgRmV0
Y2ggd2l0aCBQT1NUIHdpdGggSW50OEFycmF5IGJvZHkgYXNzZXJ0X2VxdWFsczogUmVxdWVzdCBz
aG91bGQgaGF2ZSBoZWFkZXIgY29udGVudC10eXBlOiBudWxsIGV4cGVjdGVkIChvYmplY3QpIG51
bGwgYnV0IGdvdCAoc3RyaW5nKSAiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkIgor
RkFJTCBGZXRjaCB3aXRoIFBPU1Qgd2l0aCBGbG9hdDMyQXJyYXkgYm9keSBhc3NlcnRfZXF1YWxz
OiBSZXF1ZXN0IHNob3VsZCBoYXZlIGhlYWRlciBjb250ZW50LXR5cGU6IG51bGwgZXhwZWN0ZWQg
KG9iamVjdCkgbnVsbCBidXQgZ290IChzdHJpbmcpICJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVy
bGVuY29kZWQiCitGQUlMIEZldGNoIHdpdGggUE9TVCB3aXRoIEZsb2F0NjRBcnJheSBib2R5IGFz
c2VydF9lcXVhbHM6IFJlcXVlc3Qgc2hvdWxkIGhhdmUgaGVhZGVyIGNvbnRlbnQtdHlwZTogbnVs
bCBleHBlY3RlZCAob2JqZWN0KSBudWxsIGJ1dCBnb3QgKHN0cmluZykgImFwcGxpY2F0aW9uL3gt
d3d3LWZvcm0tdXJsZW5jb2RlZCIKK0ZBSUwgRmV0Y2ggd2l0aCBQT1NUIHdpdGggRGF0YVZpZXcg
Ym9keSBhc3NlcnRfZXF1YWxzOiBSZXF1ZXN0IHNob3VsZCBoYXZlIGhlYWRlciBjb250ZW50LXR5
cGU6IG51bGwgZXhwZWN0ZWQgKG9iamVjdCkgbnVsbCBidXQgZ290IChzdHJpbmcpICJhcHBsaWNh
dGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQiCiBQQVNTIEZldGNoIHdpdGggUE9TVCB3aXRoIEJs
b2IgYm9keSB3aXRoIG1pbWUgdHlwZSAKIEZBSUwgRmV0Y2ggd2l0aCBDaGlja2VuIGFzc2VydF9l
cXVhbHM6IFJlcXVlc3Qgc2hvdWxkIGhhdmUgaGVhZGVyIGNvbnRlbnQtbGVuZ3RoOiBudWxsIGV4
cGVjdGVkIChvYmplY3QpIG51bGwgYnV0IGdvdCAoc3RyaW5nKSAiMCIKIFBBU1MgRmV0Y2ggd2l0
aCBDaGlja2VuIHdpdGggYm9keSAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvZmV0Y2gvYXBpL2Jhc2ljL3JlcXVlc3QtaGVhZGVycy13b3Jr
ZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9mZXRjaC9hcGkvYmFzaWMvcmVxdWVzdC1oZWFkZXJzLXdvcmtlci1leHBlY3RlZC50eHQK
aW5kZXggYzdiZTJjZjY3NmM1Nzc3M2QyNjk5M2Q4MDlkZGVjZWRjOTI0YWExMC4uNDJmMDlmOGZj
MGM3MWYwMzExYmEwYzk5ZmNkZTQxNWRkMmI1ZjRlMCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkvYmFzaWMvcmVxdWVzdC1o
ZWFkZXJzLXdvcmtlci1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkvYmFzaWMvcmVxdWVzdC1oZWFkZXJzLXdvcmtl
ci1leHBlY3RlZC50eHQKQEAgLTEsMTIgKzEsMTcgQEAKIAogRkFJTCBGZXRjaCB3aXRoIEdFVCBh
c3NlcnRfZXF1YWxzOiBSZXF1ZXN0IHNob3VsZCBoYXZlIGhlYWRlciBvcmlnaW46IGh0dHA6Ly9s
b2NhbGhvc3Q6ODgwMCBleHBlY3RlZCAoc3RyaW5nKSAiaHR0cDovL2xvY2FsaG9zdDo4ODAwIiBi
dXQgZ290IChvYmplY3QpIG51bGwKLUZBSUwgRmV0Y2ggd2l0aCBIRUFEIGFzc2VydF9lcXVhbHM6
IFJlcXVlc3Qgc2hvdWxkIGhhdmUgaGVhZGVyIGNvbnRlbnQtbGVuZ3RoOiBudWxsIGV4cGVjdGVk
IChvYmplY3QpIG51bGwgYnV0IGdvdCAoc3RyaW5nKSAiMCIKK0ZBSUwgRmV0Y2ggd2l0aCBIRUFE
IGFzc2VydF9lcXVhbHM6IFJlcXVlc3Qgc2hvdWxkIGhhdmUgaGVhZGVyIG9yaWdpbjogaHR0cDov
L2xvY2FsaG9zdDo4ODAwIGV4cGVjdGVkIChzdHJpbmcpICJodHRwOi8vbG9jYWxob3N0Ojg4MDAi
IGJ1dCBnb3QgKG9iamVjdCkgbnVsbAogUEFTUyBGZXRjaCB3aXRoIFBVVCB3aXRob3V0IGJvZHkg
CiBQQVNTIEZldGNoIHdpdGggUFVUIHdpdGggYm9keSAKIFBBU1MgRmV0Y2ggd2l0aCBQT1NUIHdp
dGhvdXQgYm9keSAKIFBBU1MgRmV0Y2ggd2l0aCBQT1NUIHdpdGggdGV4dCBib2R5IAogRkFJTCBG
ZXRjaCB3aXRoIFBPU1Qgd2l0aCBCbG9iIGJvZHkgYXNzZXJ0X2VxdWFsczogUmVxdWVzdCBzaG91
bGQgaGF2ZSBoZWFkZXIgY29udGVudC10eXBlOiBudWxsIGV4cGVjdGVkIChvYmplY3QpIG51bGwg
YnV0IGdvdCAoc3RyaW5nKSAiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkIgotRkFJ
TCBGZXRjaCB3aXRoIFBPU1Qgd2l0aCBBcnJheUJ1ZmZlciBib2R5IHByb21pc2VfdGVzdDogVW5o
YW5kbGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiBvYmplY3QgIlR5cGVFcnJvcjogVHlwZSBlcnJv
ciIKK0ZBSUwgRmV0Y2ggd2l0aCBQT1NUIHdpdGggQXJyYXlCdWZmZXIgYm9keSBhc3NlcnRfZXF1
YWxzOiBSZXF1ZXN0IHNob3VsZCBoYXZlIGhlYWRlciBjb250ZW50LXR5cGU6IG51bGwgZXhwZWN0
ZWQgKG9iamVjdCkgbnVsbCBidXQgZ290IChzdHJpbmcpICJhcHBsaWNhdGlvbi94LXd3dy1mb3Jt
LXVybGVuY29kZWQiCitGQUlMIEZldGNoIHdpdGggUE9TVCB3aXRoIFVpbnQ4QXJyYXkgYm9keSBh
c3NlcnRfZXF1YWxzOiBSZXF1ZXN0IHNob3VsZCBoYXZlIGhlYWRlciBjb250ZW50LXR5cGU6IG51
bGwgZXhwZWN0ZWQgKG9iamVjdCkgbnVsbCBidXQgZ290IChzdHJpbmcpICJhcHBsaWNhdGlvbi94
LXd3dy1mb3JtLXVybGVuY29kZWQiCitGQUlMIEZldGNoIHdpdGggUE9TVCB3aXRoIEludDhBcnJh
eSBib2R5IGFzc2VydF9lcXVhbHM6IFJlcXVlc3Qgc2hvdWxkIGhhdmUgaGVhZGVyIGNvbnRlbnQt
dHlwZTogbnVsbCBleHBlY3RlZCAob2JqZWN0KSBudWxsIGJ1dCBnb3QgKHN0cmluZykgImFwcGxp
Y2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCIKK0ZBSUwgRmV0Y2ggd2l0aCBQT1NUIHdpdGgg
RmxvYXQzMkFycmF5IGJvZHkgYXNzZXJ0X2VxdWFsczogUmVxdWVzdCBzaG91bGQgaGF2ZSBoZWFk
ZXIgY29udGVudC10eXBlOiBudWxsIGV4cGVjdGVkIChvYmplY3QpIG51bGwgYnV0IGdvdCAoc3Ry
aW5nKSAiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkIgorRkFJTCBGZXRjaCB3aXRo
IFBPU1Qgd2l0aCBGbG9hdDY0QXJyYXkgYm9keSBhc3NlcnRfZXF1YWxzOiBSZXF1ZXN0IHNob3Vs
ZCBoYXZlIGhlYWRlciBjb250ZW50LXR5cGU6IG51bGwgZXhwZWN0ZWQgKG9iamVjdCkgbnVsbCBi
dXQgZ290IChzdHJpbmcpICJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQiCitGQUlM
IEZldGNoIHdpdGggUE9TVCB3aXRoIERhdGFWaWV3IGJvZHkgYXNzZXJ0X2VxdWFsczogUmVxdWVz
dCBzaG91bGQgaGF2ZSBoZWFkZXIgY29udGVudC10eXBlOiBudWxsIGV4cGVjdGVkIChvYmplY3Qp
IG51bGwgYnV0IGdvdCAoc3RyaW5nKSAiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVk
IgogUEFTUyBGZXRjaCB3aXRoIFBPU1Qgd2l0aCBCbG9iIGJvZHkgd2l0aCBtaW1lIHR5cGUgCiBG
QUlMIEZldGNoIHdpdGggQ2hpY2tlbiBhc3NlcnRfZXF1YWxzOiBSZXF1ZXN0IHNob3VsZCBoYXZl
IGhlYWRlciBjb250ZW50LWxlbmd0aDogbnVsbCBleHBlY3RlZCAob2JqZWN0KSBudWxsIGJ1dCBn
b3QgKHN0cmluZykgIjAiCiBQQVNTIEZldGNoIHdpdGggQ2hpY2tlbiB3aXRoIGJvZHkgCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNo
L2FwaS9iYXNpYy9yZXF1ZXN0LWhlYWRlcnMuanMgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9iYXNpYy9yZXF1ZXN0LWhlYWRlcnMuanMKaW5k
ZXggNDA5N2YzYWVmN2NiMDQwY2QzOWNiNmFmZGRiM2NmZWMzMDc4ODAzOS4uYjI3OGNlNGU2Y2Uz
NzRkY2YzNTQzYWQ5YTUzYmIyMzVlNGZmMTAzZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkvYmFzaWMvcmVxdWVzdC1oZWFk
ZXJzLmpzCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
ZmV0Y2gvYXBpL2Jhc2ljL3JlcXVlc3QtaGVhZGVycy5qcwpAQCAtMTEsNyArMTEsNyBAQCBmdW5j
dGlvbiBjaGVja0NvbnRlbnRUeXBlKGNvbnRlbnRUeXBlLCBib2R5KQogICAgIH0KIAogICAgIHZh
ciBleHBlY3RlZENvbnRlbnRUeXBlID0gInRleHQvcGxhaW47Y2hhcnNldD1VVEYtOCI7Ci0gICAg
aWYoYm9keSA9PT0gbnVsbCB8fCBib2R5IGluc3RhbmNlb2YgQXJyYXlCdWZmZXIpCisgICAgaWYo
Ym9keSA9PT0gbnVsbCB8fCBib2R5IGluc3RhbmNlb2YgQXJyYXlCdWZmZXIgfHwgYm9keS5idWZm
ZXIgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcikKICAgICAgICAgZXhwZWN0ZWRDb250ZW50VHlwZSA9
IG51bGw7CiAgICAgZWxzZSBpZiAoYm9keSBpbnN0YW5jZW9mIEJsb2IpCiAgICAgICAgIGV4cGVj
dGVkQ29udGVudFR5cGUgPSBib2R5LnR5cGUgPyBib2R5LnR5cGUgOiBudWxsOwpAQCAtMjgsMTIg
KzI4LDEyIEBAIGZ1bmN0aW9uIHJlcXVlc3RIZWFkZXJzKGRlc2MsIHVybCwgbWV0aG9kLCBib2R5
LCBleHBlY3RlZE9yaWdpbiwgZXhwZWN0ZWRDb250ZW50CiAgICAgcmV0dXJuIGZldGNoKHVybCAr
IHVybFBhcmFtZXRlcnMsIHJlcXVlc3RJbml0KS50aGVuKGZ1bmN0aW9uKHJlc3ApIHsKICAgICAg
IGFzc2VydF9lcXVhbHMocmVzcC5zdGF0dXMsIDIwMCwgIkhUVFAgc3RhdHVzIGlzIDIwMCIpOwog
ICAgICAgYXNzZXJ0X2VxdWFscyhyZXNwLnR5cGUgLCAiYmFzaWMiLCAiUmVzcG9uc2UncyB0eXBl
IGlzIGJhc2ljIik7Ci0gICAgICBjaGVja0NvbnRlbnRUeXBlKHJlc3AuaGVhZGVycy5nZXQoIngt
cmVxdWVzdC1jb250ZW50LXR5cGUiKSwgYm9keSk7Ci0gICAgICBpZiAoZXhwZWN0ZWRDb250ZW50
TGVuZ3RoICE9PSB1bmRlZmluZWQpCi0gICAgICAgIGFzc2VydF9lcXVhbHMocmVzcC5oZWFkZXJz
LmdldCgieC1yZXF1ZXN0LWNvbnRlbnQtbGVuZ3RoIikgLCBleHBlY3RlZENvbnRlbnRMZW5ndGgs
ICJSZXF1ZXN0IHNob3VsZCBoYXZlIGhlYWRlciBjb250ZW50LWxlbmd0aDogIiArIGV4cGVjdGVk
Q29udGVudExlbmd0aCk7CiAgICAgICBhc3NlcnRfdHJ1ZShyZXNwLmhlYWRlcnMuaGFzKCJ4LXJl
cXVlc3QtdXNlci1hZ2VudCIpLCAiUmVxdWVzdCBoYXMgaGVhZGVyIHVzZXItYWdlbnQiKTsKICAg
ICAgIGFzc2VydF9mYWxzZShyZXNwLmhlYWRlcnMuaGFzKCJhY2NlcHQtY2hhcnNldCIpLCAiUmVx
dWVzdCBoYXMgaGVhZGVyIGFjY2VwdC1jaGFyc2V0Iik7CiAgICAgICBhc3NlcnRfZXF1YWxzKHJl
c3AuaGVhZGVycy5nZXQoIngtcmVxdWVzdC1vcmlnaW4iKSAsIGV4cGVjdGVkT3JpZ2luLCAiUmVx
dWVzdCBzaG91bGQgaGF2ZSBoZWFkZXIgb3JpZ2luOiAiICsgZXhwZWN0ZWRPcmlnaW4pOworICAg
ICAgaWYgKGV4cGVjdGVkQ29udGVudExlbmd0aCAhPT0gdW5kZWZpbmVkKQorICAgICAgICBhc3Nl
cnRfZXF1YWxzKHJlc3AuaGVhZGVycy5nZXQoIngtcmVxdWVzdC1jb250ZW50LWxlbmd0aCIpICwg
ZXhwZWN0ZWRDb250ZW50TGVuZ3RoLCAiUmVxdWVzdCBzaG91bGQgaGF2ZSBoZWFkZXIgY29udGVu
dC1sZW5ndGg6ICIgKyBleHBlY3RlZENvbnRlbnRMZW5ndGgpOworICAgICAgY2hlY2tDb250ZW50
VHlwZShyZXNwLmhlYWRlcnMuZ2V0KCJ4LXJlcXVlc3QtY29udGVudC10eXBlIiksIGJvZHkpOwog
ICAgIH0pOwogICB9LCBkZXNjKTsKIH0KQEAgLTUwLDYgKzUwLDExIEBAIGlmIChzZWxmLkZvcm1E
YXRhKQogICAgIHJlcXVlc3RIZWFkZXJzKCJGZXRjaCB3aXRoIFBPU1Qgd2l0aCBGb3JtRGF0YSBi
b2R5IiwgdXJsLCAiUE9TVCIsIG5ldyBGb3JtRGF0YSgpLCBsb2NhdGlvbi5vcmlnaW4pOwogcmVx
dWVzdEhlYWRlcnMoIkZldGNoIHdpdGggUE9TVCB3aXRoIEJsb2IgYm9keSIsIHVybCwgIlBPU1Qi
LCBuZXcgQmxvYihbIlRlc3QiXSksIGxvY2F0aW9uLm9yaWdpbiwgIjQiKTsKIHJlcXVlc3RIZWFk
ZXJzKCJGZXRjaCB3aXRoIFBPU1Qgd2l0aCBBcnJheUJ1ZmZlciBib2R5IiwgdXJsLCAiUE9TVCIs
IG5ldyBBcnJheUJ1ZmZlcig0KSwgbG9jYXRpb24ub3JpZ2luLCAiNCIpOworcmVxdWVzdEhlYWRl
cnMoIkZldGNoIHdpdGggUE9TVCB3aXRoIFVpbnQ4QXJyYXkgYm9keSIsIHVybCwgIlBPU1QiLCBu
ZXcgVWludDhBcnJheSg0KSwgbG9jYXRpb24ub3JpZ2luLCAiNCIpOworcmVxdWVzdEhlYWRlcnMo
IkZldGNoIHdpdGggUE9TVCB3aXRoIEludDhBcnJheSBib2R5IiwgdXJsLCAiUE9TVCIsIG5ldyBJ
bnQ4QXJyYXkoNCksIGxvY2F0aW9uLm9yaWdpbiwgIjQiKTsKK3JlcXVlc3RIZWFkZXJzKCJGZXRj
aCB3aXRoIFBPU1Qgd2l0aCBGbG9hdDMyQXJyYXkgYm9keSIsIHVybCwgIlBPU1QiLCBuZXcgRmxv
YXQzMkFycmF5KDEpLCBsb2NhdGlvbi5vcmlnaW4sICI0Iik7CityZXF1ZXN0SGVhZGVycygiRmV0
Y2ggd2l0aCBQT1NUIHdpdGggRmxvYXQ2NEFycmF5IGJvZHkiLCB1cmwsICJQT1NUIiwgbmV3IEZs
b2F0NjRBcnJheSgxKSwgbG9jYXRpb24ub3JpZ2luLCAiOCIpOworcmVxdWVzdEhlYWRlcnMoIkZl
dGNoIHdpdGggUE9TVCB3aXRoIERhdGFWaWV3IGJvZHkiLCB1cmwsICJQT1NUIiwgbmV3IERhdGFW
aWV3KG5ldyBBcnJheUJ1ZmZlcig4KSwgMCwgNCksIGxvY2F0aW9uLm9yaWdpbiwgIjQiKTsKIHJl
cXVlc3RIZWFkZXJzKCJGZXRjaCB3aXRoIFBPU1Qgd2l0aCBCbG9iIGJvZHkgd2l0aCBtaW1lIHR5
cGUiLCB1cmwsICJQT1NUIiwgbmV3IEJsb2IoWyJUZXN0Il0sIHsgdHlwZTogInRleHQvbWF5YmUi
IH0pLCBsb2NhdGlvbi5vcmlnaW4sICI0Iik7CiByZXF1ZXN0SGVhZGVycygiRmV0Y2ggd2l0aCBD
aGlja2VuIiwgdXJsLCAiQ2hpY2tlbiIsIG51bGwsIGxvY2F0aW9uLm9yaWdpbiwgbnVsbCk7CiBy
ZXF1ZXN0SGVhZGVycygiRmV0Y2ggd2l0aCBDaGlja2VuIHdpdGggYm9keSIsIHVybCwgIkNoaWNr
ZW4iLCAiUmVxdWVzdCdzIGJvZHkiLCBsb2NhdGlvbi5vcmlnaW4sICIxNCIpOwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkv
cmVxdWVzdC9yZXF1ZXN0LWNvbnN1bWUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkvcmVxdWVzdC9yZXF1ZXN0LWNvbnN1
bWUtZXhwZWN0ZWQudHh0CmluZGV4IDcxYWZhMzFmOGM5MWQwNWQzZWY2NWJjMjc2M2RmNDYzMmMx
ODExM2QuLmFiNmE1YzMwY2Y4YmM0ZGEzMGVkY2NkOWZkMmFiOGRhNjMzOGU0MmUgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZmV0Y2gvYXBp
L3JlcXVlc3QvcmVxdWVzdC1jb25zdW1lLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9yZXF1ZXN0L3JlcXVlc3Qt
Y29uc3VtZS1leHBlY3RlZC50eHQKQEAgLTEsOSArMSwyOSBAQAogCi1QQVNTIENvbnN1bWUgcmVx
dWVzdCdzIGJvZHkgYXMgdGV4dCAKLVBBU1MgQ29uc3VtZSByZXF1ZXN0J3MgYm9keSBhcyBibG9i
IAotUEFTUyBDb25zdW1lIHJlcXVlc3QncyBib2R5IGFzIGFycmF5QnVmZmVyIAotUEFTUyBDb25z
dW1lIHJlcXVlc3QncyBib2R5IGFzIGpzb24gCi1GQUlMIENvbnN1bWUgcmVxdWVzdCdzIGJvZHkg
YXMgZm9ybURhdGEgcHJvbWlzZV90ZXN0OiBVbmhhbmRsZWQgcmVqZWN0aW9uIHdpdGggdmFsdWU6
IHVuZGVmaW5lZAorUEFTUyBDb25zdW1lIFN0cmluZyByZXF1ZXN0J3MgYm9keSBhcyB0ZXh0IAor
UEFTUyBDb25zdW1lIFN0cmluZyByZXF1ZXN0J3MgYm9keSBhcyBibG9iIAorUEFTUyBDb25zdW1l
IFN0cmluZyByZXF1ZXN0J3MgYm9keSBhcyBhcnJheUJ1ZmZlciAKK1BBU1MgQ29uc3VtZSBTdHJp
bmcgcmVxdWVzdCdzIGJvZHkgYXMgSlNPTiAKK1BBU1MgQ29uc3VtZSBBcnJheUJ1ZmZlciByZXF1
ZXN0J3MgYm9keSBhcyB0ZXh0IAorUEFTUyBDb25zdW1lIEFycmF5QnVmZmVyIHJlcXVlc3QncyBi
b2R5IGFzIGJsb2IgCitQQVNTIENvbnN1bWUgQXJyYXlCdWZmZXIgcmVxdWVzdCdzIGJvZHkgYXMg
YXJyYXlCdWZmZXIgCitQQVNTIENvbnN1bWUgQXJyYXlCdWZmZXIgcmVxdWVzdCdzIGJvZHkgYXMg
SlNPTiAKK1BBU1MgQ29uc3VtZSBVaW50OEFycmF5IHJlcXVlc3QncyBib2R5IGFzIHRleHQgCitQ
QVNTIENvbnN1bWUgVWludDhBcnJheSByZXF1ZXN0J3MgYm9keSBhcyBibG9iIAorUEFTUyBDb25z
dW1lIFVpbnQ4QXJyYXkgcmVxdWVzdCdzIGJvZHkgYXMgYXJyYXlCdWZmZXIgCitQQVNTIENvbnN1
bWUgVWludDhBcnJheSByZXF1ZXN0J3MgYm9keSBhcyBKU09OIAorUEFTUyBDb25zdW1lIEludDhB
cnJheSByZXF1ZXN0J3MgYm9keSBhcyB0ZXh0IAorUEFTUyBDb25zdW1lIEludDhBcnJheSByZXF1
ZXN0J3MgYm9keSBhcyBibG9iIAorUEFTUyBDb25zdW1lIEludDhBcnJheSByZXF1ZXN0J3MgYm9k
eSBhcyBhcnJheUJ1ZmZlciAKK1BBU1MgQ29uc3VtZSBJbnQ4QXJyYXkgcmVxdWVzdCdzIGJvZHkg
YXMgSlNPTiAKK1BBU1MgQ29uc3VtZSBGbG9hdDMyQXJyYXkgcmVxdWVzdCdzIGJvZHkgYXMgdGV4
dCAKK1BBU1MgQ29uc3VtZSBGbG9hdDMyQXJyYXkgcmVxdWVzdCdzIGJvZHkgYXMgYmxvYiAKK1BB
U1MgQ29uc3VtZSBGbG9hdDMyQXJyYXkgcmVxdWVzdCdzIGJvZHkgYXMgYXJyYXlCdWZmZXIgCitQ
QVNTIENvbnN1bWUgRmxvYXQzMkFycmF5IHJlcXVlc3QncyBib2R5IGFzIEpTT04gCitQQVNTIENv
bnN1bWUgRGF0YVZpZXcgcmVxdWVzdCdzIGJvZHkgYXMgdGV4dCAKK1BBU1MgQ29uc3VtZSBEYXRh
VmlldyByZXF1ZXN0J3MgYm9keSBhcyBibG9iIAorUEFTUyBDb25zdW1lIERhdGFWaWV3IHJlcXVl
c3QncyBib2R5IGFzIGFycmF5QnVmZmVyIAorUEFTUyBDb25zdW1lIERhdGFWaWV3IHJlcXVlc3Qn
cyBib2R5IGFzIEpTT04gCitGQUlMIENvbnN1bWUgRm9ybURhdGEgcmVxdWVzdCdzIGJvZHkgYXMg
Rm9ybURhdGEgcHJvbWlzZV90ZXN0OiBVbmhhbmRsZWQgcmVqZWN0aW9uIHdpdGggdmFsdWU6IHVu
ZGVmaW5lZAogUEFTUyBDb25zdW1lIGJsb2IgcmVzcG9uc2UncyBib2R5IGFzIGJsb2IgCiBQQVNT
IENvbnN1bWUgYmxvYiByZXNwb25zZSdzIGJvZHkgYXMgdGV4dCAKIFBBU1MgQ29uc3VtZSBibG9i
IHJlc3BvbnNlJ3MgYm9keSBhcyBqc29uIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkvcmVxdWVzdC9yZXF1ZXN0LWNvbnN1
bWUuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZmV0
Y2gvYXBpL3JlcXVlc3QvcmVxdWVzdC1jb25zdW1lLmh0bWwKaW5kZXggMjkyZTA4YzYzZWVlYjU1
MTgyMjk1OGI0OGExZGRlYTU0OWEyNzQ0Ni4uMTM5MzAyYmQ5MGEwNTY0NDNkODBmZTc3YzU3NTg3
ODM3MDdjOTFjMyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9mZXRjaC9hcGkvcmVxdWVzdC9yZXF1ZXN0LWNvbnN1bWUuaHRtbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9yZXF1
ZXN0L3JlcXVlc3QtY29uc3VtZS5odG1sCkBAIC0xMyw3ICsxMyw3IEBACiAgIDxib2R5PgogICAg
IDxzY3JpcHQ+CiAgICAgZnVuY3Rpb24gY2hlY2tCb2R5VGV4dChyZXF1ZXN0LCBleHBlY3RlZEJv
ZHkpIHsKLSAgICAgIHJldHVybiByZXF1ZXN0LnRleHQoKS50aGVuKCBmdW5jdGlvbihib2R5QXNU
ZXh0KSB7CisgICAgICByZXR1cm4gcmVxdWVzdC50ZXh0KCkudGhlbihmdW5jdGlvbihib2R5QXNU
ZXh0KSB7CiAgICAgICAgIGFzc2VydF9lcXVhbHMoYm9keUFzVGV4dCwgZXhwZWN0ZWRCb2R5LCAi
UmV0cmlldmUgYW5kIHZlcmlmeSByZXF1ZXN0J3MgYm9keSIpOwogICAgICAgICBhc3NlcnRfdHJ1
ZShyZXF1ZXN0LmJvZHlVc2VkLCAiYm9keSBhcyB0ZXh0OiBib2R5VXNlZCB0dXJuZWQgdHJ1ZSIp
OwogICAgICAgfSk7CkBAIC02MCwxMiArNjAsMjcgQEAKICAgICAgfSk7CiAgICAgfQogCi0gICAg
ZnVuY3Rpb24gY2hlY2tSZXF1ZXN0Qm9keShib2R5LCBib2R5VHlwZSwgY2hlY2tGdW5jdGlvbikg
eworICAgIGZ1bmN0aW9uIGNoZWNrUmVxdWVzdEJvZHkoYm9keSwgZXhwZWN0ZWQsIGJvZHlUeXBl
KSB7CiAgICAgICBwcm9taXNlX3Rlc3QoZnVuY3Rpb24odGVzdCkgewogICAgICAgICB2YXIgcmVx
dWVzdCA9IG5ldyBSZXF1ZXN0KCIiLCB7Im1ldGhvZCI6ICJQT1NUIiwgImJvZHkiOiBib2R5IH0p
OwogICAgICAgICBhc3NlcnRfZmFsc2UocmVxdWVzdC5ib2R5VXNlZCwgImJvZHlVc2VkIGlzIGZh
bHNlIGF0IGluaXQiKTsKLSAgICAgICAgcmV0dXJuIGNoZWNrRnVuY3Rpb24ocmVxdWVzdCwgYm9k
eSk7Ci0gICAgICB9LCAiQ29uc3VtZSByZXF1ZXN0J3MgYm9keSBhcyAiICsgYm9keVR5cGUpOwor
ICAgICAgICByZXR1cm4gY2hlY2tCb2R5VGV4dChyZXF1ZXN0LCBleHBlY3RlZCk7CisgICAgICB9
LCAiQ29uc3VtZSAiICsgYm9keVR5cGUgICsgIiByZXF1ZXN0J3MgYm9keSBhcyB0ZXh0Iik7Cisg
ICAgICBwcm9taXNlX3Rlc3QoZnVuY3Rpb24odGVzdCkgeworICAgICAgICB2YXIgcmVxdWVzdCA9
IG5ldyBSZXF1ZXN0KCIiLCB7Im1ldGhvZCI6ICJQT1NUIiwgImJvZHkiOiBib2R5IH0pOworICAg
ICAgICBhc3NlcnRfZmFsc2UocmVxdWVzdC5ib2R5VXNlZCwgImJvZHlVc2VkIGlzIGZhbHNlIGF0
IGluaXQiKTsKKyAgICAgICAgcmV0dXJuIGNoZWNrQm9keUJsb2IocmVxdWVzdCwgZXhwZWN0ZWQp
OworICAgICAgfSwgIkNvbnN1bWUgIiArIGJvZHlUeXBlICArICIgcmVxdWVzdCdzIGJvZHkgYXMg
YmxvYiIpOworICAgICAgcHJvbWlzZV90ZXN0KGZ1bmN0aW9uKHRlc3QpIHsKKyAgICAgICAgdmFy
IHJlcXVlc3QgPSBuZXcgUmVxdWVzdCgiIiwgeyJtZXRob2QiOiAiUE9TVCIsICJib2R5IjogYm9k
eSB9KTsKKyAgICAgICAgYXNzZXJ0X2ZhbHNlKHJlcXVlc3QuYm9keVVzZWQsICJib2R5VXNlZCBp
cyBmYWxzZSBhdCBpbml0Iik7CisgICAgICAgIHJldHVybiBjaGVja0JvZHlBcnJheUJ1ZmZlcihy
ZXF1ZXN0LCBleHBlY3RlZCk7CisgICAgICB9LCAiQ29uc3VtZSAiICsgYm9keVR5cGUgICsgIiBy
ZXF1ZXN0J3MgYm9keSBhcyBhcnJheUJ1ZmZlciIpOworICAgICAgcHJvbWlzZV90ZXN0KGZ1bmN0
aW9uKHRlc3QpIHsKKyAgICAgICAgdmFyIHJlcXVlc3QgPSBuZXcgUmVxdWVzdCgiIiwgeyJtZXRo
b2QiOiAiUE9TVCIsICJib2R5IjogYm9keSB9KTsKKyAgICAgICAgYXNzZXJ0X2ZhbHNlKHJlcXVl
c3QuYm9keVVzZWQsICJib2R5VXNlZCBpcyBmYWxzZSBhdCBpbml0Iik7CisgICAgICAgIHJldHVy
biBjaGVja0JvZHlKU09OKHJlcXVlc3QsIGV4cGVjdGVkKTsKKyAgICAgIH0sICJDb25zdW1lICIg
KyBib2R5VHlwZSAgKyAiIHJlcXVlc3QncyBib2R5IGFzIEpTT04iKTsKICAgICB9CiAKICAgICB2
YXIgZm9ybURhdGEgPSBuZXcgRm9ybURhdGEoKTsKQEAgLTczLDExICs4OCwzNyBAQAogICAgIHZh
ciB0ZXh0RGF0YSA9IEpTT04uc3RyaW5naWZ5KCJUaGlzIGlzIHJlc3BvbnNlJ3MgYm9keSIpOwog
ICAgIHZhciBibG9iID0gbmV3IEJsb2IoW3RleHREYXRhXSwgeyAidHlwZSIgOiAidGV4dC9wbGFp
biIgfSk7CiAKLSAgICBjaGVja1JlcXVlc3RCb2R5KHRleHREYXRhLCAidGV4dCIsIGNoZWNrQm9k
eVRleHQpOwotICAgIGNoZWNrUmVxdWVzdEJvZHkodGV4dERhdGEsICJibG9iIiwgY2hlY2tCb2R5
QmxvYik7Ci0gICAgY2hlY2tSZXF1ZXN0Qm9keSh0ZXh0RGF0YSwgImFycmF5QnVmZmVyIiwgY2hl
Y2tCb2R5QXJyYXlCdWZmZXIpOwotICAgIGNoZWNrUmVxdWVzdEJvZHkodGV4dERhdGEsICJqc29u
IiwgY2hlY2tCb2R5SlNPTik7Ci0gICAgY2hlY2tSZXF1ZXN0Qm9keShmb3JtRGF0YSwgImZvcm1E
YXRhIiwgY2hlY2tCb2R5Rm9ybURhdGEpOworICAgIGNoZWNrUmVxdWVzdEJvZHkodGV4dERhdGEs
IHRleHREYXRhLCAiU3RyaW5nIik7CisKKworICAgIHZhciBzdHJpbmcgPSAiXCIxMjM0NTZcIiI7
CisgICAgZnVuY3Rpb24gZ2V0QXJyYXlCdWZmZXIoKSB7CisgICAgICAgIHZhciBhcnJheUJ1ZmZl
ciA9IG5ldyBBcnJheUJ1ZmZlcig4KTsKKyAgICAgICAgdmFyIGludDhBcnJheSA9IG5ldyBJbnQ4
QXJyYXkoYXJyYXlCdWZmZXIpOworICAgICAgICBmb3IgKHZhciBjcHRyID0gMDsgY3B0ciA8IDg7
IGNwdHIrKykKKyAgICAgICAgICAgIGludDhBcnJheVtjcHRyXSA9IHN0cmluZy5jaGFyQ29kZUF0
KGNwdHIpOworICAgICAgICByZXR1cm4gYXJyYXlCdWZmZXI7CisgICAgfQorCisgICAgZnVuY3Rp
b24gZ2V0QXJyYXlCdWZmZXJXaXRoWmVyb3MoKSB7CisgICAgICAgIHZhciBhcnJheUJ1ZmZlciA9
IG5ldyBBcnJheUJ1ZmZlcigxMCk7CisgICAgICAgIHZhciBpbnQ4QXJyYXkgPSBuZXcgSW50OEFy
cmF5KGFycmF5QnVmZmVyKTsKKyAgICAgICAgZm9yICh2YXIgY3B0ciA9IDA7IGNwdHIgPCA4OyBj
cHRyKyspCisgICAgICAgICAgICBpbnQ4QXJyYXlbY3B0ciArIDFdID0gc3RyaW5nLmNoYXJDb2Rl
QXQoY3B0cik7CisgICAgICAgIHJldHVybiBhcnJheUJ1ZmZlcjsKKyAgICB9CisKKyAgICBjaGVj
a1JlcXVlc3RCb2R5KGdldEFycmF5QnVmZmVyKCksIHN0cmluZywgIkFycmF5QnVmZmVyIik7Cisg
ICAgY2hlY2tSZXF1ZXN0Qm9keShuZXcgVWludDhBcnJheShnZXRBcnJheUJ1ZmZlcigpKSwgc3Ry
aW5nLCAiVWludDhBcnJheSIpOworICAgIGNoZWNrUmVxdWVzdEJvZHkobmV3IEludDhBcnJheShn
ZXRBcnJheUJ1ZmZlcldpdGhaZXJvcygpLCAxLCA4KSwgc3RyaW5nLCAiSW50OEFycmF5Iik7Cisg
ICAgY2hlY2tSZXF1ZXN0Qm9keShuZXcgRmxvYXQzMkFycmF5KGdldEFycmF5QnVmZmVyKCkpLCBz
dHJpbmcsICJGbG9hdDMyQXJyYXkiKTsKKyAgICBjaGVja1JlcXVlc3RCb2R5KG5ldyBEYXRhVmll
dyhnZXRBcnJheUJ1ZmZlcldpdGhaZXJvcygpLCAxLCA4KSwgc3RyaW5nLCAiRGF0YVZpZXciKTsK
KworICAgIHByb21pc2VfdGVzdChmdW5jdGlvbih0ZXN0KSB7CisgICAgICB2YXIgcmVxdWVzdCA9
IG5ldyBSZXF1ZXN0KCIiLCB7Im1ldGhvZCI6ICJQT1NUIiwgImJvZHkiOiBmb3JtRGF0YSB9KTsK
KyAgICAgIGFzc2VydF9mYWxzZShyZXF1ZXN0LmJvZHlVc2VkLCAiYm9keVVzZWQgaXMgZmFsc2Ug
YXQgaW5pdCIpOworICAgICAgcmV0dXJuIGNoZWNrQm9keUZvcm1EYXRhKHJlcXVlc3QsIGZvcm1E
YXRhKTsKKyAgICB9LCAiQ29uc3VtZSBGb3JtRGF0YSByZXF1ZXN0J3MgYm9keSBhcyBGb3JtRGF0
YSIpOwogCiAgICAgZnVuY3Rpb24gY2hlY2tCbG9iUmVzcG9uc2VCb2R5KGJsb2JCb2R5LCBibG9i
RGF0YSwgYm9keVR5cGUsIGNoZWNrRnVuY3Rpb24pIHsKICAgICAgIHByb21pc2VfdGVzdChmdW5j
dGlvbih0ZXN0KSB7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9yZXNwb25zZS9yZXNwb25zZS1jb25zdW1lLXN0cmVhbS1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2ZldGNoL2FwaS9yZXNwb25zZS9yZXNwb25zZS1jb25zdW1lLXN0cmVhbS1leHBlY3RlZC50eHQK
aW5kZXggMDFhM2JkMDBiMTBjN2Q1NWY2Njk1MGEzMjIwMTIzNTI4ZmE4ZTY5ZS4uNTAxNWQ2Y2Zi
Y2I4ZjA1NmM5OTgzMDgyYzAwYTg1Y2FjNWIyNmMzYiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkvcmVzcG9uc2UvcmVzcG9u
c2UtY29uc3VtZS1zdHJlYW0tZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZmV0Y2gvYXBpL3Jlc3BvbnNlL3Jlc3BvbnNlLWNvbnN1
bWUtc3RyZWFtLWV4cGVjdGVkLnR4dApAQCAtMyw2ICszLDcgQEAgUEFTUyBSZWFkIGVtcHR5IHRl
eHQgcmVzcG9uc2UncyBib2R5IGFzIHJlYWRhYmxlU3RyZWFtCiBQQVNTIFJlYWQgZW1wdHkgYmxv
YiByZXNwb25zZSdzIGJvZHkgYXMgcmVhZGFibGVTdHJlYW0gCiBQQVNTIFJlYWQgYmxvYiByZXNw
b25zZSdzIGJvZHkgYXMgcmVhZGFibGVTdHJlYW0gCiBQQVNTIFJlYWQgdGV4dCByZXNwb25zZSdz
IGJvZHkgYXMgcmVhZGFibGVTdHJlYW0gCitQQVNTIFJlYWQgYXJyYXkgYnVmZmVyIHJlc3BvbnNl
J3MgYm9keSBhcyByZWFkYWJsZVN0cmVhbSAKIEZBSUwgUmVhZCBmb3JtIGRhdGEgcmVzcG9uc2Un
cyBib2R5IGFzIHJlYWRhYmxlU3RyZWFtIHByb21pc2VfdGVzdDogVW5oYW5kbGVkIHJlamVjdGlv
biB3aXRoIHZhbHVlOiAibm90IGltcGxlbWVudGVkIgogUEFTUyBHZXR0aW5nIGFuIGVycm9yIFJl
c3BvbnNlIHN0cmVhbSAKIFBBU1MgR2V0dGluZyBhIHJlZGlyZWN0IFJlc3BvbnNlIHN0cmVhbSAK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
ZmV0Y2gvYXBpL3Jlc3BvbnNlL3Jlc3BvbnNlLWNvbnN1bWUtc3RyZWFtLmh0bWwgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9yZXNwb25zZS9y
ZXNwb25zZS1jb25zdW1lLXN0cmVhbS5odG1sCmluZGV4IGVlMzMyZTE3ODNjYjI4OTVhZjU1N2Ni
ZTlhMTRkZTg3NTFiNDc1MzYuLmY5NjE5MmZhOTgwYTk3YWI2ZjQwZjJkM2I5NWVmNjYxNWYwMGNm
NzEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvZmV0Y2gvYXBpL3Jlc3BvbnNlL3Jlc3BvbnNlLWNvbnN1bWUtc3RyZWFtLmh0bWwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkvcmVz
cG9uc2UvcmVzcG9uc2UtY29uc3VtZS1zdHJlYW0uaHRtbApAQCAtNDAsNiArNDAsMTUgQEAgcHJv
bWlzZV90ZXN0KGZ1bmN0aW9uKHRlc3QpIHsKIH0sICJSZWFkIHRleHQgcmVzcG9uc2UncyBib2R5
IGFzIHJlYWRhYmxlU3RyZWFtIik7CiAKIHByb21pc2VfdGVzdChmdW5jdGlvbih0ZXN0KSB7Cisg
ICAgdmFyIGFycmF5QnVmZmVyID0gbmV3IEFycmF5QnVmZmVyKHRleHREYXRhLmxlbmd0aCk7Cisg
ICAgdmFyIGludDhBcnJheSA9IG5ldyBJbnQ4QXJyYXkoYXJyYXlCdWZmZXIpOworICAgIGZvciAo
dmFyIGNwdHIgPSAwOyBjcHRyIDwgdGV4dERhdGEubGVuZ3RoOyBjcHRyKyspCisgICAgICAgIGlu
dDhBcnJheVtjcHRyXSA9IHRleHREYXRhLmNoYXJDb2RlQXQoY3B0cik7CisKKyAgICByZXR1cm4g
dmFsaWRhdGVTdHJlYW1Gcm9tU3RyaW5nKG5ldyBSZXNwb25zZShhcnJheUJ1ZmZlcikuYm9keS5n
ZXRSZWFkZXIoKSwgdGV4dERhdGEpOworfSwgIlJlYWQgYXJyYXkgYnVmZmVyIHJlc3BvbnNlJ3Mg
Ym9keSBhcyByZWFkYWJsZVN0cmVhbSIpOworCitwcm9taXNlX3Rlc3QoZnVuY3Rpb24odGVzdCkg
ewogICAgIHZhciByZXNwb25zZSA9IG5ldyBSZXNwb25zZShmb3JtRGF0YSk7CiAgICAgcmV0dXJu
IHZhbGlkYXRlU3RyZWFtRnJvbVN0cmluZyhyZXNwb25zZS5ib2R5LmdldFJlYWRlcigpLCAibmFt
ZT12YWx1ZSIpOwogfSwgIlJlYWQgZm9ybSBkYXRhIHJlc3BvbnNlJ3MgYm9keSBhcyByZWFkYWJs
ZVN0cmVhbSIpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>286772</attachid>
            <date>2016-08-23 14:10:43 -0700</date>
            <delta_ts>2016-08-29 01:49:02 -0700</delta_ts>
            <desc>Adding FormData upload</desc>
            <filename>bug-161087-20160823230843.patch</filename>
            <type>text/plain</type>
            <size>33792</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA0Nzk1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODljOWUyZDVlZTc5YTc0
YTYwZmY4MjgxYmVmYTg4MjBkNTg0MDY4Mi4uZjBlYzM4NDgzYWQ4OTBkNmIzYTI3OGY4MmEyMDdh
MGQ0ZDA0MjliNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDQwIEBACiAyMDE2LTA4LTIzICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAorICAgICAgICBbRmV0Y2ggQVBJXSBBZGQg
c3VwcG9ydCBmb3IgQnVmZmVyU291cmNlIGJvZGllcworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYxMDg3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgQ292ZXJlZCBieSB1cGRhdGVkIHRlc3RzLgorCisgICAg
ICAgIEFkZGVkIHN1cHBvcnQgZm9yIEFycmF5QnVmZmVyLCBBcnJheUJ1ZmZlclZpZXcgYW5kIEZv
cm1EYXRhIHVwbG9hZC4KKyAgICAgICAgQWRkZWQgc3VwcG9ydCBmb3IgY29uc3VtaW5nIEFycmF5
QnVmZmVyVmlldy4KKworICAgICAgICBUbyBzdXBwb3J0IEZvcm1EYXRhIHVwbG9hZCwgRmV0Y2hC
T2R5IGlzIG5vdyBzdG9yaW5nIGEgRm9ybURhdGEgY29tcHV0ZWQgZnJvbSB0aGUgRE9NRm9ybURh
dGEgcGFzc2VkIHRvIHRoZSBjb25zdHJ1Y3Rvci4KKyAgICAgICAgVGhpcyBhbGxvd3Mgc2V0dGlu
ZyB0aGUgY29udGVudC10eXBlIGZvciBGb3JtRGF0YSBjb3JyZWN0bHkgd2l0aCB0aGUgYm91bmRh
cnkgcGFyYW1ldGVyLgorCisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Ojpib2R5Rm9ySW50ZXJuYWxSZXF1ZXN0KTogQWRk
aW5nIHN1cHBvcnQgZm9yIEZvcm1EYXRhIHVwbG9hZC4KKyAgICAgICAgKFdlYkNvcmU6OkZldGNo
Qm9keTo6RmV0Y2hCb2R5KTogQWRkaW5nIEFycmF5QnVmZmVyIGFuZCBBcnJheUJ1ZmZlclZpZXcg
Y29uc3RydWN0b3JzLgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5OjpleHRyYWN0KTogRXh0
cmFjdGluZyBpbiBjYXNlIG9mIEJ1ZmZlclNvdXJjZSAoaS5lLiBBcnJheUJ1ZmZlciBvciBBcnJh
eUJ1ZmZlclZpZXcpIGFuZCBGb3JtRGF0YS4KKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keTo6
Y29uc3VtZSk6IEFkZGluZyBzdXBwb3J0IHRvIGNvbnN1bWUgQXJyYXlCdWZmZXJWaWV3LgorICAg
ICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Ojpjb25zdW1lQXNTdHJlYW0pOiBBZGRpbmcgc3VwcG9y
dCB0byBjb25zdW1lIEFycmF5QnVmZmVyVmlldyBhcyBhIHN0cmVhbS4KKyAgICAgICAgQ2xvbmVk
IHRoZSBBcnJheUJ1ZmZlciBiZWZvcmUgZW5xdWV1aW5nIGl0IGluICB0aGUgc3RyZWFtLgorICAg
ICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Ojpjb25zdW1lQXJyYXlCdWZmZXIpOiBDbGVhbmluZyBt
X2RhdGEgYWZ0ZXIgYmVpbmcgY29uc3VtZWQuCisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHk6
OmNvbnN1bWVBcnJheUJ1ZmZlclZpZXcpOiBBZGRpbmcgc3VwcG9ydCB0byBjb25zdW1lIEFycmF5
QnVmZmVyVmlldy4KKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keTo6Y29uc3VtZVRleHQpOiBD
bGVhbmluZyBtX3RleHQgYWZ0ZXIgYmVpbmcgY29uc3VtZWQuCisgICAgICAgIChXZWJDb3JlOjpG
ZXRjaEJvZHk6OmNvbnN1bWVCbG9iKTogRGl0dG8gZm9yIG1fYmxvYi4KKyAgICAgICAgKFdlYkNv
cmU6OkZldGNoQm9keTo6Ym9keUZvckludGVybmFsUmVxdWVzdCk6IEFkZGluZyBzdXBwb3J0IGZv
ciBBcnJheUJ1ZmZlciBhbmQgQXJyYXlCdWZmZXJWaWV3IHVwbG9hZC4KKyAgICAgICAgKiBNb2R1
bGVzL2ZldGNoL0ZldGNoQm9keS5oOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hSZXF1
ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoUmVxdWVzdDo6aW50ZXJuYWxSZXF1ZXN0
KTogUGFzc2luZyBTY3JpcHRFeGVjdXRpb25Db250ZXh0IGFzIHRoaXMgaXMgbmVlZGVkIGZvciBG
b3JtRGF0YSB1cGxvYWQuCisgICAgICAgIChXZWJDb3JlOjpGZXRjaFJlcXVlc3Q6OnNldEJvZHkp
OiBEaXR0by4KKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RmV0Y2hSZXNwb25zZTo6aW5pdGlhbGl6ZVdpdGgpOiBEaXR0by4KKyAg
ICAgICAgKFdlYkNvcmU6OkZldGNoUmVzcG9uc2U6OmZldGNoKTogUmVtb3ZpbmcgRm9ybURhdGEg
dXBsb2FkIHJlamVjdGlvbiBjaGVjay4KKworMjAxNi0wOC0yMyAgWW91ZW5uIEZhYmxldCAgPHlv
dWVubkBhcHBsZS5jb20+CisKICAgICAgICAgSW1wbGVtZW50IHJlZGlyZWN0IHN1cHBvcnQgcG9z
dCBDT1JTLXByZWZsaWdodAogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTU5MDU2CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0
Y2gvRmV0Y2hCb2R5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5
LmNwcAppbmRleCAxYjhiMTRhZjg2YjRkNmRlZjRmOGI2NWVjYjRmYTdlNTAxOTJlODJiLi5hZGI4
NzhhYzljZTA5NGU2ZDkyZWNlZGViYmZlZjRiYmY5Zjg5ZmQ2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuY3BwCkBAIC00MSw2ICs0MSw3IEBACiAjaW5jbHVkZSAi
SlNET01Gb3JtRGF0YS5oIgogI2luY2x1ZGUgIkpTUmVhZGFibGVTdHJlYW0uaCIKICNpbmNsdWRl
ICJSZWFkYWJsZVN0cmVhbVNvdXJjZS5oIgorI2luY2x1ZGUgPHJ1bnRpbWUvQXJyYXlCdWZmZXJW
aWV3Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNTEsMTIgKzUyLDExIEBAIEZldGNo
Qm9keTo6RmV0Y2hCb2R5KFJlZjxCbG9iPiYmIGJsb2IpCiB7CiB9CiAKLUZldGNoQm9keTo6RmV0
Y2hCb2R5KFJlZjxET01Gb3JtRGF0YT4mJiBmb3JtRGF0YSkKK0ZldGNoQm9keTo6RmV0Y2hCb2R5
KERPTUZvcm1EYXRhJiBmb3JtRGF0YSwgRG9jdW1lbnQmIGRvY3VtZW50KQogICAgIDogbV90eXBl
KFR5cGU6OkZvcm1EYXRhKQotICAgICwgbV9taW1lVHlwZShBU0NJSUxpdGVyYWwoIm11bHRpcGFy
dC9mb3JtLWRhdGEiKSkKLSAgICAsIG1fZm9ybURhdGEoV1RGTW92ZShmb3JtRGF0YSkpCiB7Ci0g
ICAgLy8gRklYTUU6IEhhbmRsZSB0aGUgYm91bmRhcnkgcGFyYW1ldGVyIG9mIG11bHRpcGFydC9m
b3JtLWRhdGEgTUlNRSB0eXBlLgorICAgIG1fZm9ybURhdGEgPSBGb3JtRGF0YTo6Y3JlYXRlTXVs
dGlQYXJ0KHN0YXRpY19jYXN0PEZvcm1EYXRhTGlzdCY+KGZvcm1EYXRhKSwgZm9ybURhdGEuZW5j
b2RpbmcoKSwgJmRvY3VtZW50KTsKKyAgICBtX21pbWVUeXBlID0gbWFrZVN0cmluZygibXVsdGlw
YXJ0L2Zvcm0tZGF0YTtib3VuZGFyeT0iLCBtX2Zvcm1EYXRhLT5ib3VuZGFyeSgpLmRhdGEoKSk7
CiB9CiAKIEZldGNoQm9keTo6RmV0Y2hCb2R5KFN0cmluZyYmIHRleHQpCkBAIC02NiwxNyArNjYs
NDAgQEAgRmV0Y2hCb2R5OjpGZXRjaEJvZHkoU3RyaW5nJiYgdGV4dCkKIHsKIH0KIAotRmV0Y2hC
b2R5IEZldGNoQm9keTo6ZXh0cmFjdChKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIEpTQzo6SlNWYWx1
ZSB2YWx1ZSkKK0ZldGNoQm9keTo6RmV0Y2hCb2R5KFJlZjxBcnJheUJ1ZmZlcj4mJiBkYXRhKQor
ICAgIDogbV90eXBlKFR5cGU6OkFycmF5QnVmZmVyKQorICAgICwgbV9kYXRhKFdURk1vdmUoZGF0
YSkpCit7Cit9CisKK0ZldGNoQm9keTo6RmV0Y2hCb2R5KFJlZjxBcnJheUJ1ZmZlclZpZXc+JiYg
ZGF0YVZpZXcpCisgICAgOiBtX3R5cGUoVHlwZTo6QXJyYXlCdWZmZXJWaWV3KQorICAgICwgbV9k
YXRhVmlldyhXVEZNb3ZlKGRhdGFWaWV3KSkKK3sKK30KKworRmV0Y2hCb2R5IEZldGNoQm9keTo6
ZXh0cmFjdChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBKU0M6OkV4ZWNTdGF0ZSYg
c3RhdGUsIEpTQzo6SlNWYWx1ZSB2YWx1ZSkKIHsKICAgICBpZiAodmFsdWUuaW5oZXJpdHMoSlNC
bG9iOjppbmZvKCkpKQogICAgICAgICByZXR1cm4gRmV0Y2hCb2R5KCpKU0Jsb2I6OnRvV3JhcHBl
ZCh2YWx1ZSkpOwotICAgIGlmICh2YWx1ZS5pbmhlcml0cyhKU0RPTUZvcm1EYXRhOjppbmZvKCkp
KQotICAgICAgICByZXR1cm4gRmV0Y2hCb2R5KCpKU0RPTUZvcm1EYXRhOjp0b1dyYXBwZWQodmFs
dWUpKTsKKyAgICBpZiAodmFsdWUuaW5oZXJpdHMoSlNET01Gb3JtRGF0YTo6aW5mbygpKSkgewor
ICAgICAgICBBU1NFUlQoIWNvbnRleHQuaXNXb3JrZXJHbG9iYWxTY29wZSgpKTsKKyAgICAgICAg
cmV0dXJuIEZldGNoQm9keSgqSlNET01Gb3JtRGF0YTo6dG9XcmFwcGVkKHZhbHVlKSwgc3RhdGlj
X2Nhc3Q8RG9jdW1lbnQmPihjb250ZXh0KSk7CisgICAgfQogICAgIGlmICh2YWx1ZS5pc1N0cmlu
ZygpKQogICAgICAgICByZXR1cm4gRmV0Y2hCb2R5KHZhbHVlLnRvV1RGU3RyaW5nKCZzdGF0ZSkp
OwogICAgIGlmICh2YWx1ZS5pbmhlcml0cyhKU1JlYWRhYmxlU3RyZWFtOjppbmZvKCkpKQogICAg
ICAgICByZXR1cm4geyBUeXBlOjpSZWFkYWJsZVN0cmVhbSB9OwotICAgIC8vIEZJWE1FOiBJbXBs
ZW1lbnQgQnVmZmVyU291cmNlIGV4dHJhY3Rpb24uCisgICAgaWYgKHZhbHVlLmluaGVyaXRzKEpT
Qzo6SlNBcnJheUJ1ZmZlcjo6aW5mbygpKSkgeworICAgICAgICBBcnJheUJ1ZmZlciogZGF0YSA9
IHRvQXJyYXlCdWZmZXIodmFsdWUpOworICAgICAgICBBU1NFUlQoZGF0YSk7CisgICAgICAgIHJl
dHVybiB7ICpkYXRhIH07CisgICAgfQorICAgIGlmICh2YWx1ZS5pbmhlcml0cyhKU0M6OkpTQXJy
YXlCdWZmZXJWaWV3OjppbmZvKCkpKSB7CisgICAgICAgIFJlZlB0cjxKU0M6OkFycmF5QnVmZmVy
Vmlldz4gZGF0YSA9IHRvQXJyYXlCdWZmZXJWaWV3KHZhbHVlKTsKKyAgICAgICAgQVNTRVJUKGRh
dGEpOworICAgICAgICByZXR1cm4geyBkYXRhLnJlbGVhc2VOb25OdWxsKCkgfTsKKyAgICB9CiAg
ICAgcmV0dXJuIHsgfTsKIH0KIApAQCAtMTM4LDYgKzE2MSw5IEBAIHZvaWQgRmV0Y2hCb2R5Ojpj
b25zdW1lKEZldGNoQm9keU93bmVyJiBvd25lciwgRGVmZXJyZWRXcmFwcGVyJiYgcHJvbWlzZSkK
ICAgICBjYXNlIFR5cGU6OkFycmF5QnVmZmVyOgogICAgICAgICBjb25zdW1lQXJyYXlCdWZmZXIo
cHJvbWlzZSk7CiAgICAgICAgIHJldHVybjsKKyAgICBjYXNlIFR5cGU6OkFycmF5QnVmZmVyVmll
dzoKKyAgICAgICAgY29uc3VtZUFycmF5QnVmZmVyVmlldyhwcm9taXNlKTsKKyAgICAgICAgcmV0
dXJuOwogICAgIGNhc2UgVHlwZTo6VGV4dDoKICAgICAgICAgY29uc3VtZVRleHQocHJvbWlzZSk7
CiAgICAgICAgIHJldHVybjsKQEAgLTE1MCw5ICsxNzYsMTIgQEAgdm9pZCBGZXRjaEJvZHk6OmNv
bnN1bWUoRmV0Y2hCb2R5T3duZXImIG93bmVyLCBEZWZlcnJlZFdyYXBwZXImJiBwcm9taXNlKQog
ICAgIGNhc2UgVHlwZTo6TG9hZGVkOgogICAgICAgICBtX2NvbnN1bWVyLnJlc29sdmUocHJvbWlz
ZSk7CiAgICAgICAgIHJldHVybjsKLSAgICBkZWZhdWx0OgotICAgICAgICAvLyBGSVhNRTogU3Vw
cG9ydCBvdGhlciB0eXBlcy4KKyAgICBjYXNlIFR5cGU6OkZvcm1EYXRhOgorICAgICAgICAvLyBG
SVhNRTogU3VwcG9ydCBjb25zdW1pbmcgRm9ybURhdGEuCiAgICAgICAgIHByb21pc2UucmVqZWN0
KDApOworICAgICAgICByZXR1cm47CisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CiAgICAgfQogfQogCkBAIC0xNjgsMTYgKzE5NywyNSBAQCB2b2lkIEZldGNoQm9k
eTo6Y29uc3VtZUFzU3RyZWFtKEZldGNoQm9keU93bmVyJiBvd25lciwgRmV0Y2hSZXNwb25zZVNv
dXJjZSYgc291cgogICAgIHN3aXRjaCAobV90eXBlKSB7CiAgICAgY2FzZSBUeXBlOjpBcnJheUJ1
ZmZlcjoKICAgICAgICAgQVNTRVJUKG1fZGF0YSk7Ci0gICAgICAgIGNsb3NlU3RyZWFtID0gc291
cmNlLmVucXVldWUoUmVmUHRyPEpTQzo6QXJyYXlCdWZmZXI+KG1fZGF0YSkpOworICAgICAgICBj
bG9zZVN0cmVhbSA9IHNvdXJjZS5lbnF1ZXVlKEFycmF5QnVmZmVyOjp0cnlDcmVhdGUobV9kYXRh
LT5kYXRhKCksIG1fZGF0YS0+Ynl0ZUxlbmd0aCgpKSk7CisgICAgICAgIG1fZGF0YSA9IG51bGxw
dHI7CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgVHlwZTo6QXJyYXlCdWZmZXJWaWV3OiB7Cisg
ICAgICAgIEFTU0VSVChtX2RhdGFWaWV3KTsKKyAgICAgICAgY2xvc2VTdHJlYW0gPSBzb3VyY2Uu
ZW5xdWV1ZShBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlKG1fZGF0YVZpZXctPmJhc2VBZGRyZXNzKCks
IG1fZGF0YVZpZXctPmJ5dGVMZW5ndGgoKSkpOworICAgICAgICBtX2RhdGFWaWV3ID0gbnVsbHB0
cjsKKyAgICAgICAgYnJlYWs7CisgICAgfQogICAgIGNhc2UgVHlwZTo6VGV4dDogewogICAgICAg
ICBWZWN0b3I8dWludDhfdD4gZGF0YSA9IGV4dHJhY3RGcm9tVGV4dCgpOwogICAgICAgICBjbG9z
ZVN0cmVhbSA9IHNvdXJjZS5lbnF1ZXVlKEFycmF5QnVmZmVyOjp0cnlDcmVhdGUoZGF0YS5kYXRh
KCksIGRhdGEuc2l6ZSgpKSk7CisgICAgICAgIG1fdGV4dC5yZWxlYXNlSW1wbCgpOwogICAgICAg
ICBicmVhazsKICAgICB9CiAgICAgY2FzZSBUeXBlOjpCbG9iOgogICAgICAgICBBU1NFUlQobV9i
bG9iKTsKICAgICAgICAgb3duZXIubG9hZEJsb2IoKm1fYmxvYiwgbnVsbHB0cik7CisgICAgICAg
IG1fYmxvYiA9IG51bGxwdHI7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgVHlwZTo6Tm9uZToK
ICAgICAgICAgY2xvc2VTdHJlYW0gPSB0cnVlOwpAQCAtMTk3LDEzICsyMzUsMjMgQEAgdm9pZCBG
ZXRjaEJvZHk6OmNvbnN1bWVBc1N0cmVhbShGZXRjaEJvZHlPd25lciYgb3duZXIsIEZldGNoUmVz
cG9uc2VTb3VyY2UmIHNvdXIKIAogdm9pZCBGZXRjaEJvZHk6OmNvbnN1bWVBcnJheUJ1ZmZlcihE
ZWZlcnJlZFdyYXBwZXImIHByb21pc2UpCiB7CisgICAgQVNTRVJUKG1fZGF0YSk7CiAgICAgbV9j
b25zdW1lci5yZXNvbHZlV2l0aERhdGEocHJvbWlzZSwgc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhf
dCo+KG1fZGF0YS0+ZGF0YSgpKSwgbV9kYXRhLT5ieXRlTGVuZ3RoKCkpOworICAgIG1fZGF0YSA9
IG51bGxwdHI7Cit9CisKK3ZvaWQgRmV0Y2hCb2R5Ojpjb25zdW1lQXJyYXlCdWZmZXJWaWV3KERl
ZmVycmVkV3JhcHBlciYgcHJvbWlzZSkKK3sKKyAgICBBU1NFUlQobV9kYXRhVmlldyk7CisgICAg
bV9jb25zdW1lci5yZXNvbHZlV2l0aERhdGEocHJvbWlzZSwgc3RhdGljX2Nhc3Q8Y29uc3QgdWlu
dDhfdCo+KG1fZGF0YVZpZXctPmJhc2VBZGRyZXNzKCkpLCBtX2RhdGFWaWV3LT5ieXRlTGVuZ3Ro
KCkpOworICAgIG1fZGF0YVZpZXcgPSBudWxscHRyOwogfQogCiB2b2lkIEZldGNoQm9keTo6Y29u
c3VtZVRleHQoRGVmZXJyZWRXcmFwcGVyJiBwcm9taXNlKQogewogICAgIFZlY3Rvcjx1aW50OF90
PiBkYXRhID0gZXh0cmFjdEZyb21UZXh0KCk7CiAgICAgbV9jb25zdW1lci5yZXNvbHZlV2l0aERh
dGEocHJvbWlzZSwgZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKTsKKyAgICBtX3RleHQucmVsZWFz
ZUltcGwoKTsKIH0KIAogdm9pZCBGZXRjaEJvZHk6OmNvbnN1bWVCbG9iKEZldGNoQm9keU93bmVy
JiBvd25lciwgRGVmZXJyZWRXcmFwcGVyJiYgcHJvbWlzZSkKQEAgLTIxMiw2ICsyNjAsNyBAQCB2
b2lkIEZldGNoQm9keTo6Y29uc3VtZUJsb2IoRmV0Y2hCb2R5T3duZXImIG93bmVyLCBEZWZlcnJl
ZFdyYXBwZXImJiBwcm9taXNlKQogCiAgICAgbV9jb25zdW1lUHJvbWlzZSA9IFdURk1vdmUocHJv
bWlzZSk7CiAgICAgb3duZXIubG9hZEJsb2IoKm1fYmxvYiwgJm1fY29uc3VtZXIpOworICAgIG1f
YmxvYiA9IG51bGxwdHI7CiB9CiAKIFZlY3Rvcjx1aW50OF90PiBGZXRjaEJvZHk6OmV4dHJhY3RG
cm9tVGV4dCgpIGNvbnN0CkBAIC0yNDEsMTcgKzI5MCwzNCBAQCB2b2lkIEZldGNoQm9keTo6bG9h
ZGluZ1N1Y2NlZWRlZCgpCiAgICAgfQogfQogCi1SZWZQdHI8Rm9ybURhdGE+IEZldGNoQm9keTo6
Ym9keUZvckludGVybmFsUmVxdWVzdCgpIGNvbnN0CitSZWZQdHI8Rm9ybURhdGE+IEZldGNoQm9k
eTo6Ym9keUZvckludGVybmFsUmVxdWVzdChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0
KSBjb25zdAogewogICAgIGlmIChtX3R5cGUgPT0gVHlwZTo6Tm9uZSkKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAgICAgaWYgKG1fdHlwZSA9PSBUeXBlOjpUZXh0KQogICAgICAgICByZXR1cm4g
Rm9ybURhdGE6OmNyZWF0ZShVVEY4RW5jb2RpbmcoKS5lbmNvZGUobV90ZXh0LCBFbnRpdGllc0Zv
clVuZW5jb2RhYmxlcykpOwogICAgIGlmIChtX3R5cGUgPT0gVHlwZTo6QmxvYikgeworICAgICAg
ICBBU1NFUlQobV9ibG9iKTsKICAgICAgICAgUmVmUHRyPEZvcm1EYXRhPiBib2R5ID0gRm9ybURh
dGE6OmNyZWF0ZSgpOwogICAgICAgICBib2R5LT5hcHBlbmRCbG9iKG1fYmxvYi0+dXJsKCkpOwog
ICAgICAgICByZXR1cm4gYm9keTsKICAgICB9CisgICAgaWYgKG1fdHlwZSA9PSBUeXBlOjpBcnJh
eUJ1ZmZlcikgeworICAgICAgICBBU1NFUlQobV9kYXRhKTsKKyAgICAgICAgcmV0dXJuIEZvcm1E
YXRhOjpjcmVhdGUobV9kYXRhLT5kYXRhKCksIG1fZGF0YS0+Ynl0ZUxlbmd0aCgpKTsKKyAgICB9
CisgICAgaWYgKG1fdHlwZSA9PSBUeXBlOjpBcnJheUJ1ZmZlclZpZXcpIHsKKyAgICAgICAgQVNT
RVJUKG1fZGF0YVZpZXcpOworICAgICAgICByZXR1cm4gRm9ybURhdGE6OmNyZWF0ZShtX2RhdGFW
aWV3LT5iYXNlQWRkcmVzcygpLCBtX2RhdGFWaWV3LT5ieXRlTGVuZ3RoKCkpOworICAgIH0KKyAg
ICBpZiAobV90eXBlID09IFR5cGU6OkZvcm1EYXRhKSB7CisgICAgICAgIEFTU0VSVChtX2Zvcm1E
YXRhKTsKKyAgICAgICAgQVNTRVJUKCFjb250ZXh0LmlzV29ya2VyR2xvYmFsU2NvcGUoKSk7Cisg
ICAgICAgIGF1dG8gYm9keSA9IG1fZm9ybURhdGE7CisgICAgICAgIGJvZHktPmdlbmVyYXRlRmls
ZXMoc3RhdGljX2Nhc3Q8RG9jdW1lbnQqPigmY29udGV4dCkpOworICAgICAgICByZXR1cm4gYm9k
eTsKKyAgICB9CisKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gbnVsbHB0
cjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5oCmluZGV4IDRjYWIz
OTE2ZGE3MGVlMDYyN2Y0ZWUzYTg4MThlMmUwZmFkNzJiNTIuLjk0NDdjOTU1NTA1NWFjY2JjZmRj
ZjNhMTRiYzdjZTJiMzA5Yzc3YTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZmV0Y2gvRmV0Y2hCb2R5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRj
aEJvZHkuaApAQCAtMzIsOSArMzIsOSBAQAogI2lmIEVOQUJMRShGRVRDSF9BUEkpCiAKICNpbmNs
dWRlICJCbG9iLmgiCi0jaW5jbHVkZSAiRE9NRm9ybURhdGEuaCIKICNpbmNsdWRlICJGZXRjaEJv
ZHlDb25zdW1lci5oIgogI2luY2x1ZGUgIkZldGNoTG9hZGVyLmgiCisjaW5jbHVkZSAiRm9ybURh
dGEuaCIKICNpbmNsdWRlICJKU0RPTVByb21pc2UuaCIKIAogbmFtZXNwYWNlIEpTQyB7CkBAIC00
NCw5ICs0NCwxMCBAQCBjbGFzcyBKU1ZhbHVlOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2Ns
YXNzIERPTUZvcm1EYXRhOwogY2xhc3MgRmV0Y2hCb2R5T3duZXI7CiBjbGFzcyBGZXRjaFJlc3Bv
bnNlU291cmNlOwotY2xhc3MgRm9ybURhdGE7CitjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0
OwogCiBjbGFzcyBGZXRjaEJvZHkgewogcHVibGljOgpAQCAtNjUsNyArNjYsNyBAQCBwdWJsaWM6
CiAgICAgdm9pZCBzZXRNaW1lVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKSB7IG1fbWltZVR5
cGUgPSBtaW1lVHlwZTsgfQogICAgIFN0cmluZyBtaW1lVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1f
bWltZVR5cGU7IH0KIAotICAgIHN0YXRpYyBGZXRjaEJvZHkgZXh0cmFjdChKU0M6OkV4ZWNTdGF0
ZSYsIEpTQzo6SlNWYWx1ZSk7CisgICAgc3RhdGljIEZldGNoQm9keSBleHRyYWN0KFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmLCBKU0M6OkV4ZWNTdGF0ZSYsIEpTQzo6SlNWYWx1ZSk7CiAgICAgc3Rh
dGljIEZldGNoQm9keSBleHRyYWN0RnJvbUJvZHkoRmV0Y2hCb2R5Kik7CiAgICAgc3RhdGljIEZl
dGNoQm9keSBsb2FkaW5nQm9keSgpIHsgcmV0dXJuIHsgVHlwZTo6TG9hZGluZyB9OyB9CiAgICAg
RmV0Y2hCb2R5KCkgPSBkZWZhdWx0OwpAQCAtNzMsOSArNzQsOSBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBsb2FkaW5nRmFpbGVkKCk7CiAgICAgdm9pZCBsb2FkaW5nU3VjY2VlZGVkKCk7CiAKLSAgICBS
ZWZQdHI8Rm9ybURhdGE+IGJvZHlGb3JJbnRlcm5hbFJlcXVlc3QoKSBjb25zdDsKKyAgICBSZWZQ
dHI8Rm9ybURhdGE+IGJvZHlGb3JJbnRlcm5hbFJlcXVlc3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYpIGNvbnN0OwogCi0gICAgZW51bSBjbGFzcyBUeXBlIHsgTm9uZSwgQXJyYXlCdWZmZXIsIEJs
b2IsIEZvcm1EYXRhLCBUZXh0LCBMb2FkaW5nLCBMb2FkZWQsIFJlYWRhYmxlU3RyZWFtIH07Cisg
ICAgZW51bSBjbGFzcyBUeXBlIHsgTm9uZSwgQXJyYXlCdWZmZXIsIEFycmF5QnVmZmVyVmlldywg
QmxvYiwgRm9ybURhdGEsIFRleHQsIExvYWRpbmcsIExvYWRlZCwgUmVhZGFibGVTdHJlYW0gfTsK
ICAgICBUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KIAogICAgIEZldGNoQm9k
eUNvbnN1bWVyJiBjb25zdW1lcigpIHsgcmV0dXJuIG1fY29uc3VtZXI7IH0KQEAgLTg0LDYgKzg1
LDkgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIEZldGNoQm9keShSZWY8QmxvYj4mJik7Cisg
ICAgRmV0Y2hCb2R5KFJlZjxBcnJheUJ1ZmZlcj4mJik7CisgICAgRmV0Y2hCb2R5KFJlZjxBcnJh
eUJ1ZmZlclZpZXc+JiYpOworICAgIEZldGNoQm9keShET01Gb3JtRGF0YSYsIERvY3VtZW50Jik7
CiAgICAgRmV0Y2hCb2R5KFJlZjxET01Gb3JtRGF0YT4mJik7CiAgICAgRmV0Y2hCb2R5KFN0cmlu
ZyYmKTsKICAgICBGZXRjaEJvZHkoVHlwZSB0eXBlKSA6IG1fdHlwZSh0eXBlKSB7IH0KQEAgLTky
LDE2ICs5NiwxOCBAQCBwcml2YXRlOgogCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGV4dHJhY3RGcm9t
VGV4dCgpIGNvbnN0OwogICAgIHZvaWQgY29uc3VtZUFycmF5QnVmZmVyKERlZmVycmVkV3JhcHBl
ciYpOworICAgIHZvaWQgY29uc3VtZUFycmF5QnVmZmVyVmlldyhEZWZlcnJlZFdyYXBwZXImKTsK
ICAgICB2b2lkIGNvbnN1bWVUZXh0KERlZmVycmVkV3JhcHBlciYpOwogICAgIHZvaWQgY29uc3Vt
ZUJsb2IoRmV0Y2hCb2R5T3duZXImLCBEZWZlcnJlZFdyYXBwZXImJik7CiAKICAgICBUeXBlIG1f
dHlwZSB7IFR5cGU6Ok5vbmUgfTsKICAgICBTdHJpbmcgbV9taW1lVHlwZTsKIAotICAgIC8vIEZJ
WE1FOiBBZGQgc3VwcG9ydCBmb3IgQnVmZmVyU291cmNlIGFuZCBVUkxTZWFyY2hQYXJhbXMuCisg
ICAgLy8gRklYTUU6IEFkZCBzdXBwb3J0IGZvciBVUkxTZWFyY2hQYXJhbXMuCiAgICAgUmVmUHRy
PEJsb2I+IG1fYmxvYjsKLSAgICBSZWZQdHI8RE9NRm9ybURhdGE+IG1fZm9ybURhdGE7CisgICAg
UmVmUHRyPEZvcm1EYXRhPiBtX2Zvcm1EYXRhOwogICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gbV9k
YXRhOworICAgIFJlZlB0cjxBcnJheUJ1ZmZlclZpZXc+IG1fZGF0YVZpZXc7CiAgICAgU3RyaW5n
IG1fdGV4dDsKIAogICAgIEZldGNoQm9keUNvbnN1bWVyIG1fY29uc3VtZXIgeyBGZXRjaEJvZHlD
b25zdW1lcjo6VHlwZTo6Tm9uZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9mZXRjaC9GZXRjaFJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9G
ZXRjaFJlcXVlc3QuY3BwCmluZGV4IDk4N2Y5N2VkYzViZjk3NmQ3MjMwZGRkNzk0ZWVhY2YzNzg2
N2Q1MGUuLmRiYzAwOGUyYzdhZDQ4ZmM1ODkwOTEzMWQ1OTI0MWRlM2M2ZGJhODggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXF1ZXN0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVxdWVzdC5jcHAKQEAgLTI1Nyw3ICsy
NTcsOCBAQCBGZXRjaEhlYWRlcnMqIEZldGNoUmVxdWVzdDo6aW5pdGlhbGl6ZVdpdGgoRmV0Y2hS
ZXF1ZXN0JiBpbnB1dCwgY29uc3QgRGljdGlvbmFyeQogdm9pZCBGZXRjaFJlcXVlc3Q6OnNldEJv
ZHkoSlNDOjpFeGVjU3RhdGUmIGV4ZWNTdGF0ZSwgSlNDOjpKU1ZhbHVlIGJvZHksIEZldGNoUmVx
dWVzdCogcmVxdWVzdCwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgaWYgKCFib2R5LmlzTnVs
bCgpKSB7Ci0gICAgICAgIG1fYm9keSA9IEZldGNoQm9keTo6ZXh0cmFjdChleGVjU3RhdGUsIGJv
ZHkpOworICAgICAgICBBU1NFUlQoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKKyAgICAgICAg
bV9ib2R5ID0gRmV0Y2hCb2R5OjpleHRyYWN0KCpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIGV4
ZWNTdGF0ZSwgYm9keSk7CiAgICAgICAgIGlmIChtX2JvZHkudHlwZSgpID09IEZldGNoQm9keTo6
VHlwZTo6Tm9uZSkgewogICAgICAgICAgICAgZWMgPSBUeXBlRXJyb3I7CiAgICAgICAgICAgICBy
ZXR1cm47CkBAIC0yOTYsOSArMjk3LDExIEBAIGNvbnN0IFN0cmluZyYgRmV0Y2hSZXF1ZXN0Ojp1
cmwoKSBjb25zdAogCiBSZXNvdXJjZVJlcXVlc3QgRmV0Y2hSZXF1ZXN0OjppbnRlcm5hbFJlcXVl
c3QoKSBjb25zdAogeworICAgIEFTU0VSVChzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOworCiAg
ICAgUmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QgPSBtX2ludGVybmFsUmVxdWVzdC5yZXF1ZXN0Owog
ICAgIHJlcXVlc3Quc2V0SFRUUEhlYWRlckZpZWxkcyhtX2hlYWRlcnMtPmludGVybmFsSGVhZGVy
cygpKTsKLSAgICByZXF1ZXN0LnNldEhUVFBCb2R5KGJvZHkoKS5ib2R5Rm9ySW50ZXJuYWxSZXF1
ZXN0KCkpOworICAgIHJlcXVlc3Quc2V0SFRUUEJvZHkoYm9keSgpLmJvZHlGb3JJbnRlcm5hbFJl
cXVlc3QoKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkpOwogCiAgICAgLy8gRklYTUU6IFN1cHBv
cnQgbm8tcmVmZXJyZXIgYW5kIGNsaWVudC4gRW5zdXJlIHRoaXMgY2FzZS1zZW5zaXRpdmUgY29t
cGFyaXNvbiBpcyBvay4KICAgICBpZiAobV9pbnRlcm5hbFJlcXVlc3QucmVmZXJyZXIgIT0gIm5v
LXJlZmVycmVyIiAmJiBtX2ludGVybmFsUmVxdWVzdC5yZWZlcnJlciAhPSAiY2xpZW50IikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwCmluZGV4IDgy
YjRhNTRlZTFkZGFkM2JhYTQzNzk4NDUwMDVmY2QwZTNmMTRhMWIuLmJhYjU0MGM4MTA2ZjY5MmYw
YzJmOWUxOGFmYWNlNGQ4M2VmYTViMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9m
ZXRjaC9GZXRjaFJlc3BvbnNlLmNwcApAQCAtODIsNyArODIsOCBAQCB2b2lkIEZldGNoUmVzcG9u
c2U6OnNldFN0YXR1cyhpbnQgc3RhdHVzLCBjb25zdCBTdHJpbmcmIHN0YXR1c1RleHQsIEV4Y2Vw
dGlvbkNvZAogCiB2b2lkIEZldGNoUmVzcG9uc2U6OmluaXRpYWxpemVXaXRoKEpTQzo6RXhlY1N0
YXRlJiBleGVjU3RhdGUsIEpTQzo6SlNWYWx1ZSBib2R5KQogewotICAgIG1fYm9keSA9IEZldGNo
Qm9keTo6ZXh0cmFjdChleGVjU3RhdGUsIGJvZHkpOworICAgIEFTU0VSVChzY3JpcHRFeGVjdXRp
b25Db250ZXh0KCkpOworICAgIG1fYm9keSA9IEZldGNoQm9keTo6ZXh0cmFjdCgqc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpLCBleGVjU3RhdGUsIGJvZHkpOwogICAgIGlmIChtX2hlYWRlcnMtPmZh
c3RHZXQoSFRUUEhlYWRlck5hbWU6OkNvbnRlbnRUeXBlKS5pc0VtcHR5KCkgJiYgIW1fYm9keS5t
aW1lVHlwZSgpLmlzRW1wdHkoKSkKICAgICAgICAgbV9oZWFkZXJzLT5mYXN0U2V0KEhUVFBIZWFk
ZXJOYW1lOjpDb250ZW50VHlwZSwgbV9ib2R5Lm1pbWVUeXBlKCkpOwogfQpAQCAtMTA1LDExICsx
MDYsNiBAQCB2b2lkIEZldGNoUmVzcG9uc2U6OmZldGNoKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQm
IGNvbnRleHQsIEZldGNoUmVxdWVzdCYgcmVxdWVzdAogewogICAgIGF1dG8gcmVzcG9uc2UgPSBh
ZG9wdFJlZigqbmV3IEZldGNoUmVzcG9uc2UoY29udGV4dCwgRmV0Y2hCb2R5Ojpsb2FkaW5nQm9k
eSgpLCBGZXRjaEhlYWRlcnM6OmNyZWF0ZShGZXRjaEhlYWRlcnM6Okd1YXJkOjpJbW11dGFibGUp
LCB7IH0pKTsKIAotICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgZm9ybSBkYXRhIHVwbG9hZC4KLSAg
ICBpZiAocmVxdWVzdC5ib2R5VHlwZSgpID09IEZldGNoQm9keTo6VHlwZTo6Rm9ybURhdGEpIHsK
LSAgICAgICAgcHJvbWlzZS5yZWplY3QoVHlwZUVycm9yLCAiVXBsb2FkaW5nIEZvcm1EYXRhIGlz
IG5vdCB5ZXQgaW1wbGVtZW50ZWQiKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KICAgICAvLyBT
ZXR0aW5nIHBlbmRpbmcgYWN0aXZpdHkgdW50aWwgQm9keUxvYWRlciBkaWRGYWlsIG9yIGRpZFN1
Y2NlZWQgY2FsbGJhY2sgaXMgY2FsbGVkLgogICAgIHJlc3BvbnNlLT5zZXRQZW5kaW5nQWN0aXZp
dHkocmVzcG9uc2UucHRyKCkpOwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2MvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwppbmRleCBk
ZmU4ODhjM2Y3NzkwZDM2MmY4NGU1ZGIzZWFiYmM1Nzc1NjFkOTI3Li4yY2Y3ODNkMDFmNDUyM2I5
NjdkODYyYTBjNTEwZDE2YWE0Njc5YzczIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2MvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cK
QEAgLTEsNSArMSwyMiBAQAogMjAxNi0wOC0yMyAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBs
ZS5jb20+CiAKKyAgICAgICAgW0ZldGNoIEFQSV0gQWRkIHN1cHBvcnQgZm9yIEJ1ZmZlclNvdXJj
ZSBib2RpZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE2MTA4NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogd2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9iYXNpYy9yZXF1ZXN0LWhlYWRlcnMtZXhw
ZWN0ZWQudHh0OgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkvYmFzaWMv
cmVxdWVzdC1oZWFkZXJzLXdvcmtlci1leHBlY3RlZC50eHQ6CisgICAgICAgICogd2ViLXBsYXRm
b3JtLXRlc3RzL2ZldGNoL2FwaS9iYXNpYy9yZXF1ZXN0LWhlYWRlcnMuanM6CisgICAgICAgIChj
aGVja0NvbnRlbnRUeXBlKToKKyAgICAgICAgKHJlcXVlc3RIZWFkZXJzKTogQ2hhbmdlIHRoZSBv
cmRlciBvZiB0aGUgaGVhZGVyIGNoZWNrcyBzbyB0aGF0IHBhc3NpbmcgaGVhZGVycyBhcmUgY2hl
Y2tlZCBmaXJzdC4KKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvZmV0Y2gvYXBpL3JlcXVl
c3QvcmVxdWVzdC1jb25zdW1lLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0t
dGVzdHMvZmV0Y2gvYXBpL3JlcXVlc3QvcmVxdWVzdC1jb25zdW1lLmh0bWw6CisgICAgICAgICog
d2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9yZXNwb25zZS9yZXNwb25zZS1jb25zdW1lLXN0
cmVhbS1leHBlY3RlZC50eHQ6CisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNoL2Fw
aS9yZXNwb25zZS9yZXNwb25zZS1jb25zdW1lLXN0cmVhbS5odG1sOgorCisyMDE2LTA4LTIzICBZ
b3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKwogICAgICAgICBJbXBsZW1lbnQgcmVk
aXJlY3Qgc3VwcG9ydCBwb3N0IENPUlMtcHJlZmxpZ2h0CiAgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTkwNTYKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkvYmFzaWMvcmVxdWVz
dC1oZWFkZXJzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvZmV0Y2gvYXBpL2Jhc2ljL3JlcXVlc3QtaGVhZGVycy1leHBlY3RlZC50eHQK
aW5kZXggN2IxMjRiYmNkZjE0MzcxY2IwZTYwMWIyMmUzM2UxY2E4NDMyMWZkYi4uNmZlOGVkYTU2
ZTJiZTgxZWMwMzJiZjFjZmVmZmZiZDY4NmM2NTFiOCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkvYmFzaWMvcmVxdWVzdC1o
ZWFkZXJzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9iYXNpYy9yZXF1ZXN0LWhlYWRlcnMtZXhwZWN0ZWQudHh0
CkBAIC0xLDEzICsxLDE4IEBACiAKIEZBSUwgRmV0Y2ggd2l0aCBHRVQgYXNzZXJ0X2VxdWFsczog
UmVxdWVzdCBzaG91bGQgaGF2ZSBoZWFkZXIgb3JpZ2luOiBodHRwOi8vbG9jYWxob3N0Ojg4MDAg
ZXhwZWN0ZWQgKHN0cmluZykgImh0dHA6Ly9sb2NhbGhvc3Q6ODgwMCIgYnV0IGdvdCAob2JqZWN0
KSBudWxsCi1GQUlMIEZldGNoIHdpdGggSEVBRCBhc3NlcnRfZXF1YWxzOiBSZXF1ZXN0IHNob3Vs
ZCBoYXZlIGhlYWRlciBjb250ZW50LWxlbmd0aDogbnVsbCBleHBlY3RlZCAob2JqZWN0KSBudWxs
IGJ1dCBnb3QgKHN0cmluZykgIjAiCitGQUlMIEZldGNoIHdpdGggSEVBRCBhc3NlcnRfZXF1YWxz
OiBSZXF1ZXN0IHNob3VsZCBoYXZlIGhlYWRlciBvcmlnaW46IGh0dHA6Ly9sb2NhbGhvc3Q6ODgw
MCBleHBlY3RlZCAoc3RyaW5nKSAiaHR0cDovL2xvY2FsaG9zdDo4ODAwIiBidXQgZ290IChvYmpl
Y3QpIG51bGwKIFBBU1MgRmV0Y2ggd2l0aCBQVVQgd2l0aG91dCBib2R5IAogUEFTUyBGZXRjaCB3
aXRoIFBVVCB3aXRoIGJvZHkgCiBQQVNTIEZldGNoIHdpdGggUE9TVCB3aXRob3V0IGJvZHkgCiBQ
QVNTIEZldGNoIHdpdGggUE9TVCB3aXRoIHRleHQgYm9keSAKLUZBSUwgRmV0Y2ggd2l0aCBQT1NU
IHdpdGggRm9ybURhdGEgYm9keSBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rpb24gd2l0
aCB2YWx1ZTogb2JqZWN0ICJUeXBlRXJyb3I6IFVwbG9hZGluZyBGb3JtRGF0YSBpcyBub3QgeWV0
IGltcGxlbWVudGVkIgorUEFTUyBGZXRjaCB3aXRoIFBPU1Qgd2l0aCBGb3JtRGF0YSBib2R5IAog
RkFJTCBGZXRjaCB3aXRoIFBPU1Qgd2l0aCBCbG9iIGJvZHkgYXNzZXJ0X2VxdWFsczogUmVxdWVz
dCBzaG91bGQgaGF2ZSBoZWFkZXIgY29udGVudC10eXBlOiBudWxsIGV4cGVjdGVkIChvYmplY3Qp
IG51bGwgYnV0IGdvdCAoc3RyaW5nKSAiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVk
IgotRkFJTCBGZXRjaCB3aXRoIFBPU1Qgd2l0aCBBcnJheUJ1ZmZlciBib2R5IHByb21pc2VfdGVz
dDogVW5oYW5kbGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiBvYmplY3QgIlR5cGVFcnJvcjogVHlw
ZSBlcnJvciIKK0ZBSUwgRmV0Y2ggd2l0aCBQT1NUIHdpdGggQXJyYXlCdWZmZXIgYm9keSBhc3Nl
cnRfZXF1YWxzOiBSZXF1ZXN0IHNob3VsZCBoYXZlIGhlYWRlciBjb250ZW50LXR5cGU6IG51bGwg
ZXhwZWN0ZWQgKG9iamVjdCkgbnVsbCBidXQgZ290IChzdHJpbmcpICJhcHBsaWNhdGlvbi94LXd3
dy1mb3JtLXVybGVuY29kZWQiCitGQUlMIEZldGNoIHdpdGggUE9TVCB3aXRoIFVpbnQ4QXJyYXkg
Ym9keSBhc3NlcnRfZXF1YWxzOiBSZXF1ZXN0IHNob3VsZCBoYXZlIGhlYWRlciBjb250ZW50LXR5
cGU6IG51bGwgZXhwZWN0ZWQgKG9iamVjdCkgbnVsbCBidXQgZ290IChzdHJpbmcpICJhcHBsaWNh
dGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQiCitGQUlMIEZldGNoIHdpdGggUE9TVCB3aXRoIElu
dDhBcnJheSBib2R5IGFzc2VydF9lcXVhbHM6IFJlcXVlc3Qgc2hvdWxkIGhhdmUgaGVhZGVyIGNv
bnRlbnQtdHlwZTogbnVsbCBleHBlY3RlZCAob2JqZWN0KSBudWxsIGJ1dCBnb3QgKHN0cmluZykg
ImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCIKK0ZBSUwgRmV0Y2ggd2l0aCBQT1NU
IHdpdGggRmxvYXQzMkFycmF5IGJvZHkgYXNzZXJ0X2VxdWFsczogUmVxdWVzdCBzaG91bGQgaGF2
ZSBoZWFkZXIgY29udGVudC10eXBlOiBudWxsIGV4cGVjdGVkIChvYmplY3QpIG51bGwgYnV0IGdv
dCAoc3RyaW5nKSAiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkIgorRkFJTCBGZXRj
aCB3aXRoIFBPU1Qgd2l0aCBGbG9hdDY0QXJyYXkgYm9keSBhc3NlcnRfZXF1YWxzOiBSZXF1ZXN0
IHNob3VsZCBoYXZlIGhlYWRlciBjb250ZW50LXR5cGU6IG51bGwgZXhwZWN0ZWQgKG9iamVjdCkg
bnVsbCBidXQgZ290IChzdHJpbmcpICJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQi
CitGQUlMIEZldGNoIHdpdGggUE9TVCB3aXRoIERhdGFWaWV3IGJvZHkgYXNzZXJ0X2VxdWFsczog
UmVxdWVzdCBzaG91bGQgaGF2ZSBoZWFkZXIgY29udGVudC10eXBlOiBudWxsIGV4cGVjdGVkIChv
YmplY3QpIG51bGwgYnV0IGdvdCAoc3RyaW5nKSAiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxl
bmNvZGVkIgogUEFTUyBGZXRjaCB3aXRoIFBPU1Qgd2l0aCBCbG9iIGJvZHkgd2l0aCBtaW1lIHR5
cGUgCiBGQUlMIEZldGNoIHdpdGggQ2hpY2tlbiBhc3NlcnRfZXF1YWxzOiBSZXF1ZXN0IHNob3Vs
ZCBoYXZlIGhlYWRlciBjb250ZW50LWxlbmd0aDogbnVsbCBleHBlY3RlZCAob2JqZWN0KSBudWxs
IGJ1dCBnb3QgKHN0cmluZykgIjAiCiBQQVNTIEZldGNoIHdpdGggQ2hpY2tlbiB3aXRoIGJvZHkg
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2ZldGNoL2FwaS9iYXNpYy9yZXF1ZXN0LWhlYWRlcnMtd29ya2VyLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZmV0Y2gvYXBpL2Jhc2lj
L3JlcXVlc3QtaGVhZGVycy13b3JrZXItZXhwZWN0ZWQudHh0CmluZGV4IGM3YmUyY2Y2NzZjNTc3
NzNkMjY5OTNkODA5ZGRlY2VkYzkyNGFhMTAuLjQyZjA5ZjhmYzBjNzFmMDMxMWJhMGM5OWZjZGU0
MTVkZDJiNWY0ZTAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvZmV0Y2gvYXBpL2Jhc2ljL3JlcXVlc3QtaGVhZGVycy13b3JrZXItZXhwZWN0
ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
ZmV0Y2gvYXBpL2Jhc2ljL3JlcXVlc3QtaGVhZGVycy13b3JrZXItZXhwZWN0ZWQudHh0CkBAIC0x
LDEyICsxLDE3IEBACiAKIEZBSUwgRmV0Y2ggd2l0aCBHRVQgYXNzZXJ0X2VxdWFsczogUmVxdWVz
dCBzaG91bGQgaGF2ZSBoZWFkZXIgb3JpZ2luOiBodHRwOi8vbG9jYWxob3N0Ojg4MDAgZXhwZWN0
ZWQgKHN0cmluZykgImh0dHA6Ly9sb2NhbGhvc3Q6ODgwMCIgYnV0IGdvdCAob2JqZWN0KSBudWxs
Ci1GQUlMIEZldGNoIHdpdGggSEVBRCBhc3NlcnRfZXF1YWxzOiBSZXF1ZXN0IHNob3VsZCBoYXZl
IGhlYWRlciBjb250ZW50LWxlbmd0aDogbnVsbCBleHBlY3RlZCAob2JqZWN0KSBudWxsIGJ1dCBn
b3QgKHN0cmluZykgIjAiCitGQUlMIEZldGNoIHdpdGggSEVBRCBhc3NlcnRfZXF1YWxzOiBSZXF1
ZXN0IHNob3VsZCBoYXZlIGhlYWRlciBvcmlnaW46IGh0dHA6Ly9sb2NhbGhvc3Q6ODgwMCBleHBl
Y3RlZCAoc3RyaW5nKSAiaHR0cDovL2xvY2FsaG9zdDo4ODAwIiBidXQgZ290IChvYmplY3QpIG51
bGwKIFBBU1MgRmV0Y2ggd2l0aCBQVVQgd2l0aG91dCBib2R5IAogUEFTUyBGZXRjaCB3aXRoIFBV
VCB3aXRoIGJvZHkgCiBQQVNTIEZldGNoIHdpdGggUE9TVCB3aXRob3V0IGJvZHkgCiBQQVNTIEZl
dGNoIHdpdGggUE9TVCB3aXRoIHRleHQgYm9keSAKIEZBSUwgRmV0Y2ggd2l0aCBQT1NUIHdpdGgg
QmxvYiBib2R5IGFzc2VydF9lcXVhbHM6IFJlcXVlc3Qgc2hvdWxkIGhhdmUgaGVhZGVyIGNvbnRl
bnQtdHlwZTogbnVsbCBleHBlY3RlZCAob2JqZWN0KSBudWxsIGJ1dCBnb3QgKHN0cmluZykgImFw
cGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCIKLUZBSUwgRmV0Y2ggd2l0aCBQT1NUIHdp
dGggQXJyYXlCdWZmZXIgYm9keSBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rpb24gd2l0
aCB2YWx1ZTogb2JqZWN0ICJUeXBlRXJyb3I6IFR5cGUgZXJyb3IiCitGQUlMIEZldGNoIHdpdGgg
UE9TVCB3aXRoIEFycmF5QnVmZmVyIGJvZHkgYXNzZXJ0X2VxdWFsczogUmVxdWVzdCBzaG91bGQg
aGF2ZSBoZWFkZXIgY29udGVudC10eXBlOiBudWxsIGV4cGVjdGVkIChvYmplY3QpIG51bGwgYnV0
IGdvdCAoc3RyaW5nKSAiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkIgorRkFJTCBG
ZXRjaCB3aXRoIFBPU1Qgd2l0aCBVaW50OEFycmF5IGJvZHkgYXNzZXJ0X2VxdWFsczogUmVxdWVz
dCBzaG91bGQgaGF2ZSBoZWFkZXIgY29udGVudC10eXBlOiBudWxsIGV4cGVjdGVkIChvYmplY3Qp
IG51bGwgYnV0IGdvdCAoc3RyaW5nKSAiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVk
IgorRkFJTCBGZXRjaCB3aXRoIFBPU1Qgd2l0aCBJbnQ4QXJyYXkgYm9keSBhc3NlcnRfZXF1YWxz
OiBSZXF1ZXN0IHNob3VsZCBoYXZlIGhlYWRlciBjb250ZW50LXR5cGU6IG51bGwgZXhwZWN0ZWQg
KG9iamVjdCkgbnVsbCBidXQgZ290IChzdHJpbmcpICJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVy
bGVuY29kZWQiCitGQUlMIEZldGNoIHdpdGggUE9TVCB3aXRoIEZsb2F0MzJBcnJheSBib2R5IGFz
c2VydF9lcXVhbHM6IFJlcXVlc3Qgc2hvdWxkIGhhdmUgaGVhZGVyIGNvbnRlbnQtdHlwZTogbnVs
bCBleHBlY3RlZCAob2JqZWN0KSBudWxsIGJ1dCBnb3QgKHN0cmluZykgImFwcGxpY2F0aW9uL3gt
d3d3LWZvcm0tdXJsZW5jb2RlZCIKK0ZBSUwgRmV0Y2ggd2l0aCBQT1NUIHdpdGggRmxvYXQ2NEFy
cmF5IGJvZHkgYXNzZXJ0X2VxdWFsczogUmVxdWVzdCBzaG91bGQgaGF2ZSBoZWFkZXIgY29udGVu
dC10eXBlOiBudWxsIGV4cGVjdGVkIChvYmplY3QpIG51bGwgYnV0IGdvdCAoc3RyaW5nKSAiYXBw
bGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkIgorRkFJTCBGZXRjaCB3aXRoIFBPU1Qgd2l0
aCBEYXRhVmlldyBib2R5IGFzc2VydF9lcXVhbHM6IFJlcXVlc3Qgc2hvdWxkIGhhdmUgaGVhZGVy
IGNvbnRlbnQtdHlwZTogbnVsbCBleHBlY3RlZCAob2JqZWN0KSBudWxsIGJ1dCBnb3QgKHN0cmlu
ZykgImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCIKIFBBU1MgRmV0Y2ggd2l0aCBQ
T1NUIHdpdGggQmxvYiBib2R5IHdpdGggbWltZSB0eXBlIAogRkFJTCBGZXRjaCB3aXRoIENoaWNr
ZW4gYXNzZXJ0X2VxdWFsczogUmVxdWVzdCBzaG91bGQgaGF2ZSBoZWFkZXIgY29udGVudC1sZW5n
dGg6IG51bGwgZXhwZWN0ZWQgKG9iamVjdCkgbnVsbCBidXQgZ290IChzdHJpbmcpICIwIgogUEFT
UyBGZXRjaCB3aXRoIENoaWNrZW4gd2l0aCBib2R5IApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkvYmFzaWMvcmVxdWVzdC1o
ZWFkZXJzLmpzIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9m
ZXRjaC9hcGkvYmFzaWMvcmVxdWVzdC1oZWFkZXJzLmpzCmluZGV4IDQwOTdmM2FlZjdjYjA0MGNk
MzljYjZhZmRkYjNjZmVjMzA3ODgwMzkuLmIyNzhjZTRlNmNlMzc0ZGNmMzU0M2FkOWE1M2JiMjM1
ZTRmZjEwM2QgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvZmV0Y2gvYXBpL2Jhc2ljL3JlcXVlc3QtaGVhZGVycy5qcworKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9iYXNpYy9yZXF1
ZXN0LWhlYWRlcnMuanMKQEAgLTExLDcgKzExLDcgQEAgZnVuY3Rpb24gY2hlY2tDb250ZW50VHlw
ZShjb250ZW50VHlwZSwgYm9keSkKICAgICB9CiAKICAgICB2YXIgZXhwZWN0ZWRDb250ZW50VHlw
ZSA9ICJ0ZXh0L3BsYWluO2NoYXJzZXQ9VVRGLTgiOwotICAgIGlmKGJvZHkgPT09IG51bGwgfHwg
Ym9keSBpbnN0YW5jZW9mIEFycmF5QnVmZmVyKQorICAgIGlmKGJvZHkgPT09IG51bGwgfHwgYm9k
eSBpbnN0YW5jZW9mIEFycmF5QnVmZmVyIHx8IGJvZHkuYnVmZmVyIGluc3RhbmNlb2YgQXJyYXlC
dWZmZXIpCiAgICAgICAgIGV4cGVjdGVkQ29udGVudFR5cGUgPSBudWxsOwogICAgIGVsc2UgaWYg
KGJvZHkgaW5zdGFuY2VvZiBCbG9iKQogICAgICAgICBleHBlY3RlZENvbnRlbnRUeXBlID0gYm9k
eS50eXBlID8gYm9keS50eXBlIDogbnVsbDsKQEAgLTI4LDEyICsyOCwxMiBAQCBmdW5jdGlvbiBy
ZXF1ZXN0SGVhZGVycyhkZXNjLCB1cmwsIG1ldGhvZCwgYm9keSwgZXhwZWN0ZWRPcmlnaW4sIGV4
cGVjdGVkQ29udGVudAogICAgIHJldHVybiBmZXRjaCh1cmwgKyB1cmxQYXJhbWV0ZXJzLCByZXF1
ZXN0SW5pdCkudGhlbihmdW5jdGlvbihyZXNwKSB7CiAgICAgICBhc3NlcnRfZXF1YWxzKHJlc3Au
c3RhdHVzLCAyMDAsICJIVFRQIHN0YXR1cyBpcyAyMDAiKTsKICAgICAgIGFzc2VydF9lcXVhbHMo
cmVzcC50eXBlICwgImJhc2ljIiwgIlJlc3BvbnNlJ3MgdHlwZSBpcyBiYXNpYyIpOwotICAgICAg
Y2hlY2tDb250ZW50VHlwZShyZXNwLmhlYWRlcnMuZ2V0KCJ4LXJlcXVlc3QtY29udGVudC10eXBl
IiksIGJvZHkpOwotICAgICAgaWYgKGV4cGVjdGVkQ29udGVudExlbmd0aCAhPT0gdW5kZWZpbmVk
KQotICAgICAgICBhc3NlcnRfZXF1YWxzKHJlc3AuaGVhZGVycy5nZXQoIngtcmVxdWVzdC1jb250
ZW50LWxlbmd0aCIpICwgZXhwZWN0ZWRDb250ZW50TGVuZ3RoLCAiUmVxdWVzdCBzaG91bGQgaGF2
ZSBoZWFkZXIgY29udGVudC1sZW5ndGg6ICIgKyBleHBlY3RlZENvbnRlbnRMZW5ndGgpOwogICAg
ICAgYXNzZXJ0X3RydWUocmVzcC5oZWFkZXJzLmhhcygieC1yZXF1ZXN0LXVzZXItYWdlbnQiKSwg
IlJlcXVlc3QgaGFzIGhlYWRlciB1c2VyLWFnZW50Iik7CiAgICAgICBhc3NlcnRfZmFsc2UocmVz
cC5oZWFkZXJzLmhhcygiYWNjZXB0LWNoYXJzZXQiKSwgIlJlcXVlc3QgaGFzIGhlYWRlciBhY2Nl
cHQtY2hhcnNldCIpOwogICAgICAgYXNzZXJ0X2VxdWFscyhyZXNwLmhlYWRlcnMuZ2V0KCJ4LXJl
cXVlc3Qtb3JpZ2luIikgLCBleHBlY3RlZE9yaWdpbiwgIlJlcXVlc3Qgc2hvdWxkIGhhdmUgaGVh
ZGVyIG9yaWdpbjogIiArIGV4cGVjdGVkT3JpZ2luKTsKKyAgICAgIGlmIChleHBlY3RlZENvbnRl
bnRMZW5ndGggIT09IHVuZGVmaW5lZCkKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhyZXNwLmhlYWRl
cnMuZ2V0KCJ4LXJlcXVlc3QtY29udGVudC1sZW5ndGgiKSAsIGV4cGVjdGVkQ29udGVudExlbmd0
aCwgIlJlcXVlc3Qgc2hvdWxkIGhhdmUgaGVhZGVyIGNvbnRlbnQtbGVuZ3RoOiAiICsgZXhwZWN0
ZWRDb250ZW50TGVuZ3RoKTsKKyAgICAgIGNoZWNrQ29udGVudFR5cGUocmVzcC5oZWFkZXJzLmdl
dCgieC1yZXF1ZXN0LWNvbnRlbnQtdHlwZSIpLCBib2R5KTsKICAgICB9KTsKICAgfSwgZGVzYyk7
CiB9CkBAIC01MCw2ICs1MCwxMSBAQCBpZiAoc2VsZi5Gb3JtRGF0YSkKICAgICByZXF1ZXN0SGVh
ZGVycygiRmV0Y2ggd2l0aCBQT1NUIHdpdGggRm9ybURhdGEgYm9keSIsIHVybCwgIlBPU1QiLCBu
ZXcgRm9ybURhdGEoKSwgbG9jYXRpb24ub3JpZ2luKTsKIHJlcXVlc3RIZWFkZXJzKCJGZXRjaCB3
aXRoIFBPU1Qgd2l0aCBCbG9iIGJvZHkiLCB1cmwsICJQT1NUIiwgbmV3IEJsb2IoWyJUZXN0Il0p
LCBsb2NhdGlvbi5vcmlnaW4sICI0Iik7CiByZXF1ZXN0SGVhZGVycygiRmV0Y2ggd2l0aCBQT1NU
IHdpdGggQXJyYXlCdWZmZXIgYm9keSIsIHVybCwgIlBPU1QiLCBuZXcgQXJyYXlCdWZmZXIoNCks
IGxvY2F0aW9uLm9yaWdpbiwgIjQiKTsKK3JlcXVlc3RIZWFkZXJzKCJGZXRjaCB3aXRoIFBPU1Qg
d2l0aCBVaW50OEFycmF5IGJvZHkiLCB1cmwsICJQT1NUIiwgbmV3IFVpbnQ4QXJyYXkoNCksIGxv
Y2F0aW9uLm9yaWdpbiwgIjQiKTsKK3JlcXVlc3RIZWFkZXJzKCJGZXRjaCB3aXRoIFBPU1Qgd2l0
aCBJbnQ4QXJyYXkgYm9keSIsIHVybCwgIlBPU1QiLCBuZXcgSW50OEFycmF5KDQpLCBsb2NhdGlv
bi5vcmlnaW4sICI0Iik7CityZXF1ZXN0SGVhZGVycygiRmV0Y2ggd2l0aCBQT1NUIHdpdGggRmxv
YXQzMkFycmF5IGJvZHkiLCB1cmwsICJQT1NUIiwgbmV3IEZsb2F0MzJBcnJheSgxKSwgbG9jYXRp
b24ub3JpZ2luLCAiNCIpOworcmVxdWVzdEhlYWRlcnMoIkZldGNoIHdpdGggUE9TVCB3aXRoIEZs
b2F0NjRBcnJheSBib2R5IiwgdXJsLCAiUE9TVCIsIG5ldyBGbG9hdDY0QXJyYXkoMSksIGxvY2F0
aW9uLm9yaWdpbiwgIjgiKTsKK3JlcXVlc3RIZWFkZXJzKCJGZXRjaCB3aXRoIFBPU1Qgd2l0aCBE
YXRhVmlldyBib2R5IiwgdXJsLCAiUE9TVCIsIG5ldyBEYXRhVmlldyhuZXcgQXJyYXlCdWZmZXIo
OCksIDAsIDQpLCBsb2NhdGlvbi5vcmlnaW4sICI0Iik7CiByZXF1ZXN0SGVhZGVycygiRmV0Y2gg
d2l0aCBQT1NUIHdpdGggQmxvYiBib2R5IHdpdGggbWltZSB0eXBlIiwgdXJsLCAiUE9TVCIsIG5l
dyBCbG9iKFsiVGVzdCJdLCB7IHR5cGU6ICJ0ZXh0L21heWJlIiB9KSwgbG9jYXRpb24ub3JpZ2lu
LCAiNCIpOwogcmVxdWVzdEhlYWRlcnMoIkZldGNoIHdpdGggQ2hpY2tlbiIsIHVybCwgIkNoaWNr
ZW4iLCBudWxsLCBsb2NhdGlvbi5vcmlnaW4sIG51bGwpOwogcmVxdWVzdEhlYWRlcnMoIkZldGNo
IHdpdGggQ2hpY2tlbiB3aXRoIGJvZHkiLCB1cmwsICJDaGlja2VuIiwgIlJlcXVlc3QncyBib2R5
IiwgbG9jYXRpb24ub3JpZ2luLCAiMTQiKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZmV0Y2gvYXBpL3JlcXVlc3QvcmVxdWVzdC1jb25z
dW1lLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvZmV0Y2gvYXBpL3JlcXVlc3QvcmVxdWVzdC1jb25zdW1lLWV4cGVjdGVkLnR4dAppbmRl
eCA3MWFmYTMxZjhjOTFkMDVkM2VmNjViYzI3NjNkZjQ2MzJjMTgxMTNkLi5hYjZhNWMzMGNmOGJj
NGRhMzBlZGNjZDlmZDJhYjhkYTYzMzhlNDJlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9yZXF1ZXN0L3JlcXVlc3QtY29u
c3VtZS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9mZXRjaC9hcGkvcmVxdWVzdC9yZXF1ZXN0LWNvbnN1bWUtZXhwZWN0ZWQudHh0
CkBAIC0xLDkgKzEsMjkgQEAKIAotUEFTUyBDb25zdW1lIHJlcXVlc3QncyBib2R5IGFzIHRleHQg
Ci1QQVNTIENvbnN1bWUgcmVxdWVzdCdzIGJvZHkgYXMgYmxvYiAKLVBBU1MgQ29uc3VtZSByZXF1
ZXN0J3MgYm9keSBhcyBhcnJheUJ1ZmZlciAKLVBBU1MgQ29uc3VtZSByZXF1ZXN0J3MgYm9keSBh
cyBqc29uIAotRkFJTCBDb25zdW1lIHJlcXVlc3QncyBib2R5IGFzIGZvcm1EYXRhIHByb21pc2Vf
dGVzdDogVW5oYW5kbGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiB1bmRlZmluZWQKK1BBU1MgQ29u
c3VtZSBTdHJpbmcgcmVxdWVzdCdzIGJvZHkgYXMgdGV4dCAKK1BBU1MgQ29uc3VtZSBTdHJpbmcg
cmVxdWVzdCdzIGJvZHkgYXMgYmxvYiAKK1BBU1MgQ29uc3VtZSBTdHJpbmcgcmVxdWVzdCdzIGJv
ZHkgYXMgYXJyYXlCdWZmZXIgCitQQVNTIENvbnN1bWUgU3RyaW5nIHJlcXVlc3QncyBib2R5IGFz
IEpTT04gCitQQVNTIENvbnN1bWUgQXJyYXlCdWZmZXIgcmVxdWVzdCdzIGJvZHkgYXMgdGV4dCAK
K1BBU1MgQ29uc3VtZSBBcnJheUJ1ZmZlciByZXF1ZXN0J3MgYm9keSBhcyBibG9iIAorUEFTUyBD
b25zdW1lIEFycmF5QnVmZmVyIHJlcXVlc3QncyBib2R5IGFzIGFycmF5QnVmZmVyIAorUEFTUyBD
b25zdW1lIEFycmF5QnVmZmVyIHJlcXVlc3QncyBib2R5IGFzIEpTT04gCitQQVNTIENvbnN1bWUg
VWludDhBcnJheSByZXF1ZXN0J3MgYm9keSBhcyB0ZXh0IAorUEFTUyBDb25zdW1lIFVpbnQ4QXJy
YXkgcmVxdWVzdCdzIGJvZHkgYXMgYmxvYiAKK1BBU1MgQ29uc3VtZSBVaW50OEFycmF5IHJlcXVl
c3QncyBib2R5IGFzIGFycmF5QnVmZmVyIAorUEFTUyBDb25zdW1lIFVpbnQ4QXJyYXkgcmVxdWVz
dCdzIGJvZHkgYXMgSlNPTiAKK1BBU1MgQ29uc3VtZSBJbnQ4QXJyYXkgcmVxdWVzdCdzIGJvZHkg
YXMgdGV4dCAKK1BBU1MgQ29uc3VtZSBJbnQ4QXJyYXkgcmVxdWVzdCdzIGJvZHkgYXMgYmxvYiAK
K1BBU1MgQ29uc3VtZSBJbnQ4QXJyYXkgcmVxdWVzdCdzIGJvZHkgYXMgYXJyYXlCdWZmZXIgCitQ
QVNTIENvbnN1bWUgSW50OEFycmF5IHJlcXVlc3QncyBib2R5IGFzIEpTT04gCitQQVNTIENvbnN1
bWUgRmxvYXQzMkFycmF5IHJlcXVlc3QncyBib2R5IGFzIHRleHQgCitQQVNTIENvbnN1bWUgRmxv
YXQzMkFycmF5IHJlcXVlc3QncyBib2R5IGFzIGJsb2IgCitQQVNTIENvbnN1bWUgRmxvYXQzMkFy
cmF5IHJlcXVlc3QncyBib2R5IGFzIGFycmF5QnVmZmVyIAorUEFTUyBDb25zdW1lIEZsb2F0MzJB
cnJheSByZXF1ZXN0J3MgYm9keSBhcyBKU09OIAorUEFTUyBDb25zdW1lIERhdGFWaWV3IHJlcXVl
c3QncyBib2R5IGFzIHRleHQgCitQQVNTIENvbnN1bWUgRGF0YVZpZXcgcmVxdWVzdCdzIGJvZHkg
YXMgYmxvYiAKK1BBU1MgQ29uc3VtZSBEYXRhVmlldyByZXF1ZXN0J3MgYm9keSBhcyBhcnJheUJ1
ZmZlciAKK1BBU1MgQ29uc3VtZSBEYXRhVmlldyByZXF1ZXN0J3MgYm9keSBhcyBKU09OIAorRkFJ
TCBDb25zdW1lIEZvcm1EYXRhIHJlcXVlc3QncyBib2R5IGFzIEZvcm1EYXRhIHByb21pc2VfdGVz
dDogVW5oYW5kbGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiB1bmRlZmluZWQKIFBBU1MgQ29uc3Vt
ZSBibG9iIHJlc3BvbnNlJ3MgYm9keSBhcyBibG9iIAogUEFTUyBDb25zdW1lIGJsb2IgcmVzcG9u
c2UncyBib2R5IGFzIHRleHQgCiBQQVNTIENvbnN1bWUgYmxvYiByZXNwb25zZSdzIGJvZHkgYXMg
anNvbiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvZmV0Y2gvYXBpL3JlcXVlc3QvcmVxdWVzdC1jb25zdW1lLmh0bWwgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9yZXF1ZXN0L3JlcXVl
c3QtY29uc3VtZS5odG1sCmluZGV4IDI5MmUwOGM2M2VlZWI1NTE4MjI5NThiNDhhMWRkZWE1NDlh
Mjc0NDYuLjEzOTMwMmJkOTBhMDU2NDQzZDgwZmU3N2M1NzU4NzgzNzA3YzkxYzMgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZmV0Y2gvYXBp
L3JlcXVlc3QvcmVxdWVzdC1jb25zdW1lLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkvcmVxdWVzdC9yZXF1ZXN0LWNvbnN1bWUu
aHRtbApAQCAtMTMsNyArMTMsNyBAQAogICA8Ym9keT4KICAgICA8c2NyaXB0PgogICAgIGZ1bmN0
aW9uIGNoZWNrQm9keVRleHQocmVxdWVzdCwgZXhwZWN0ZWRCb2R5KSB7Ci0gICAgICByZXR1cm4g
cmVxdWVzdC50ZXh0KCkudGhlbiggZnVuY3Rpb24oYm9keUFzVGV4dCkgeworICAgICAgcmV0dXJu
IHJlcXVlc3QudGV4dCgpLnRoZW4oZnVuY3Rpb24oYm9keUFzVGV4dCkgewogICAgICAgICBhc3Nl
cnRfZXF1YWxzKGJvZHlBc1RleHQsIGV4cGVjdGVkQm9keSwgIlJldHJpZXZlIGFuZCB2ZXJpZnkg
cmVxdWVzdCdzIGJvZHkiKTsKICAgICAgICAgYXNzZXJ0X3RydWUocmVxdWVzdC5ib2R5VXNlZCwg
ImJvZHkgYXMgdGV4dDogYm9keVVzZWQgdHVybmVkIHRydWUiKTsKICAgICAgIH0pOwpAQCAtNjAs
MTIgKzYwLDI3IEBACiAgICAgIH0pOwogICAgIH0KIAotICAgIGZ1bmN0aW9uIGNoZWNrUmVxdWVz
dEJvZHkoYm9keSwgYm9keVR5cGUsIGNoZWNrRnVuY3Rpb24pIHsKKyAgICBmdW5jdGlvbiBjaGVj
a1JlcXVlc3RCb2R5KGJvZHksIGV4cGVjdGVkLCBib2R5VHlwZSkgewogICAgICAgcHJvbWlzZV90
ZXN0KGZ1bmN0aW9uKHRlc3QpIHsKICAgICAgICAgdmFyIHJlcXVlc3QgPSBuZXcgUmVxdWVzdCgi
IiwgeyJtZXRob2QiOiAiUE9TVCIsICJib2R5IjogYm9keSB9KTsKICAgICAgICAgYXNzZXJ0X2Zh
bHNlKHJlcXVlc3QuYm9keVVzZWQsICJib2R5VXNlZCBpcyBmYWxzZSBhdCBpbml0Iik7Ci0gICAg
ICAgIHJldHVybiBjaGVja0Z1bmN0aW9uKHJlcXVlc3QsIGJvZHkpOwotICAgICAgfSwgIkNvbnN1
bWUgcmVxdWVzdCdzIGJvZHkgYXMgIiArIGJvZHlUeXBlKTsKKyAgICAgICAgcmV0dXJuIGNoZWNr
Qm9keVRleHQocmVxdWVzdCwgZXhwZWN0ZWQpOworICAgICAgfSwgIkNvbnN1bWUgIiArIGJvZHlU
eXBlICArICIgcmVxdWVzdCdzIGJvZHkgYXMgdGV4dCIpOworICAgICAgcHJvbWlzZV90ZXN0KGZ1
bmN0aW9uKHRlc3QpIHsKKyAgICAgICAgdmFyIHJlcXVlc3QgPSBuZXcgUmVxdWVzdCgiIiwgeyJt
ZXRob2QiOiAiUE9TVCIsICJib2R5IjogYm9keSB9KTsKKyAgICAgICAgYXNzZXJ0X2ZhbHNlKHJl
cXVlc3QuYm9keVVzZWQsICJib2R5VXNlZCBpcyBmYWxzZSBhdCBpbml0Iik7CisgICAgICAgIHJl
dHVybiBjaGVja0JvZHlCbG9iKHJlcXVlc3QsIGV4cGVjdGVkKTsKKyAgICAgIH0sICJDb25zdW1l
ICIgKyBib2R5VHlwZSAgKyAiIHJlcXVlc3QncyBib2R5IGFzIGJsb2IiKTsKKyAgICAgIHByb21p
c2VfdGVzdChmdW5jdGlvbih0ZXN0KSB7CisgICAgICAgIHZhciByZXF1ZXN0ID0gbmV3IFJlcXVl
c3QoIiIsIHsibWV0aG9kIjogIlBPU1QiLCAiYm9keSI6IGJvZHkgfSk7CisgICAgICAgIGFzc2Vy
dF9mYWxzZShyZXF1ZXN0LmJvZHlVc2VkLCAiYm9keVVzZWQgaXMgZmFsc2UgYXQgaW5pdCIpOwor
ICAgICAgICByZXR1cm4gY2hlY2tCb2R5QXJyYXlCdWZmZXIocmVxdWVzdCwgZXhwZWN0ZWQpOwor
ICAgICAgfSwgIkNvbnN1bWUgIiArIGJvZHlUeXBlICArICIgcmVxdWVzdCdzIGJvZHkgYXMgYXJy
YXlCdWZmZXIiKTsKKyAgICAgIHByb21pc2VfdGVzdChmdW5jdGlvbih0ZXN0KSB7CisgICAgICAg
IHZhciByZXF1ZXN0ID0gbmV3IFJlcXVlc3QoIiIsIHsibWV0aG9kIjogIlBPU1QiLCAiYm9keSI6
IGJvZHkgfSk7CisgICAgICAgIGFzc2VydF9mYWxzZShyZXF1ZXN0LmJvZHlVc2VkLCAiYm9keVVz
ZWQgaXMgZmFsc2UgYXQgaW5pdCIpOworICAgICAgICByZXR1cm4gY2hlY2tCb2R5SlNPTihyZXF1
ZXN0LCBleHBlY3RlZCk7CisgICAgICB9LCAiQ29uc3VtZSAiICsgYm9keVR5cGUgICsgIiByZXF1
ZXN0J3MgYm9keSBhcyBKU09OIik7CiAgICAgfQogCiAgICAgdmFyIGZvcm1EYXRhID0gbmV3IEZv
cm1EYXRhKCk7CkBAIC03MywxMSArODgsMzcgQEAKICAgICB2YXIgdGV4dERhdGEgPSBKU09OLnN0
cmluZ2lmeSgiVGhpcyBpcyByZXNwb25zZSdzIGJvZHkiKTsKICAgICB2YXIgYmxvYiA9IG5ldyBC
bG9iKFt0ZXh0RGF0YV0sIHsgInR5cGUiIDogInRleHQvcGxhaW4iIH0pOwogCi0gICAgY2hlY2tS
ZXF1ZXN0Qm9keSh0ZXh0RGF0YSwgInRleHQiLCBjaGVja0JvZHlUZXh0KTsKLSAgICBjaGVja1Jl
cXVlc3RCb2R5KHRleHREYXRhLCAiYmxvYiIsIGNoZWNrQm9keUJsb2IpOwotICAgIGNoZWNrUmVx
dWVzdEJvZHkodGV4dERhdGEsICJhcnJheUJ1ZmZlciIsIGNoZWNrQm9keUFycmF5QnVmZmVyKTsK
LSAgICBjaGVja1JlcXVlc3RCb2R5KHRleHREYXRhLCAianNvbiIsIGNoZWNrQm9keUpTT04pOwot
ICAgIGNoZWNrUmVxdWVzdEJvZHkoZm9ybURhdGEsICJmb3JtRGF0YSIsIGNoZWNrQm9keUZvcm1E
YXRhKTsKKyAgICBjaGVja1JlcXVlc3RCb2R5KHRleHREYXRhLCB0ZXh0RGF0YSwgIlN0cmluZyIp
OworCisKKyAgICB2YXIgc3RyaW5nID0gIlwiMTIzNDU2XCIiOworICAgIGZ1bmN0aW9uIGdldEFy
cmF5QnVmZmVyKCkgeworICAgICAgICB2YXIgYXJyYXlCdWZmZXIgPSBuZXcgQXJyYXlCdWZmZXIo
OCk7CisgICAgICAgIHZhciBpbnQ4QXJyYXkgPSBuZXcgSW50OEFycmF5KGFycmF5QnVmZmVyKTsK
KyAgICAgICAgZm9yICh2YXIgY3B0ciA9IDA7IGNwdHIgPCA4OyBjcHRyKyspCisgICAgICAgICAg
ICBpbnQ4QXJyYXlbY3B0cl0gPSBzdHJpbmcuY2hhckNvZGVBdChjcHRyKTsKKyAgICAgICAgcmV0
dXJuIGFycmF5QnVmZmVyOworICAgIH0KKworICAgIGZ1bmN0aW9uIGdldEFycmF5QnVmZmVyV2l0
aFplcm9zKCkgeworICAgICAgICB2YXIgYXJyYXlCdWZmZXIgPSBuZXcgQXJyYXlCdWZmZXIoMTAp
OworICAgICAgICB2YXIgaW50OEFycmF5ID0gbmV3IEludDhBcnJheShhcnJheUJ1ZmZlcik7Cisg
ICAgICAgIGZvciAodmFyIGNwdHIgPSAwOyBjcHRyIDwgODsgY3B0cisrKQorICAgICAgICAgICAg
aW50OEFycmF5W2NwdHIgKyAxXSA9IHN0cmluZy5jaGFyQ29kZUF0KGNwdHIpOworICAgICAgICBy
ZXR1cm4gYXJyYXlCdWZmZXI7CisgICAgfQorCisgICAgY2hlY2tSZXF1ZXN0Qm9keShnZXRBcnJh
eUJ1ZmZlcigpLCBzdHJpbmcsICJBcnJheUJ1ZmZlciIpOworICAgIGNoZWNrUmVxdWVzdEJvZHko
bmV3IFVpbnQ4QXJyYXkoZ2V0QXJyYXlCdWZmZXIoKSksIHN0cmluZywgIlVpbnQ4QXJyYXkiKTsK
KyAgICBjaGVja1JlcXVlc3RCb2R5KG5ldyBJbnQ4QXJyYXkoZ2V0QXJyYXlCdWZmZXJXaXRoWmVy
b3MoKSwgMSwgOCksIHN0cmluZywgIkludDhBcnJheSIpOworICAgIGNoZWNrUmVxdWVzdEJvZHko
bmV3IEZsb2F0MzJBcnJheShnZXRBcnJheUJ1ZmZlcigpKSwgc3RyaW5nLCAiRmxvYXQzMkFycmF5
Iik7CisgICAgY2hlY2tSZXF1ZXN0Qm9keShuZXcgRGF0YVZpZXcoZ2V0QXJyYXlCdWZmZXJXaXRo
WmVyb3MoKSwgMSwgOCksIHN0cmluZywgIkRhdGFWaWV3Iik7CisKKyAgICBwcm9taXNlX3Rlc3Qo
ZnVuY3Rpb24odGVzdCkgeworICAgICAgdmFyIHJlcXVlc3QgPSBuZXcgUmVxdWVzdCgiIiwgeyJt
ZXRob2QiOiAiUE9TVCIsICJib2R5IjogZm9ybURhdGEgfSk7CisgICAgICBhc3NlcnRfZmFsc2Uo
cmVxdWVzdC5ib2R5VXNlZCwgImJvZHlVc2VkIGlzIGZhbHNlIGF0IGluaXQiKTsKKyAgICAgIHJl
dHVybiBjaGVja0JvZHlGb3JtRGF0YShyZXF1ZXN0LCBmb3JtRGF0YSk7CisgICAgfSwgIkNvbnN1
bWUgRm9ybURhdGEgcmVxdWVzdCdzIGJvZHkgYXMgRm9ybURhdGEiKTsKIAogICAgIGZ1bmN0aW9u
IGNoZWNrQmxvYlJlc3BvbnNlQm9keShibG9iQm9keSwgYmxvYkRhdGEsIGJvZHlUeXBlLCBjaGVj
a0Z1bmN0aW9uKSB7CiAgICAgICBwcm9taXNlX3Rlc3QoZnVuY3Rpb24odGVzdCkgewpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9h
cGkvcmVzcG9uc2UvcmVzcG9uc2UtY29uc3VtZS1zdHJlYW0tZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkvcmVzcG9uc2Uv
cmVzcG9uc2UtY29uc3VtZS1zdHJlYW0tZXhwZWN0ZWQudHh0CmluZGV4IDAxYTNiZDAwYjEwYzdk
NTVmNjY5NTBhMzIyMDEyMzUyOGZhOGU2OWUuLjUwMTVkNmNmYmNiOGYwNTZjOTk4MzA4MmMwMGE4
NWNhYzViMjZjM2IgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvZmV0Y2gvYXBpL3Jlc3BvbnNlL3Jlc3BvbnNlLWNvbnN1bWUtc3RyZWFtLWV4
cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL2ZldGNoL2FwaS9yZXNwb25zZS9yZXNwb25zZS1jb25zdW1lLXN0cmVhbS1leHBlY3RlZC50
eHQKQEAgLTMsNiArMyw3IEBAIFBBU1MgUmVhZCBlbXB0eSB0ZXh0IHJlc3BvbnNlJ3MgYm9keSBh
cyByZWFkYWJsZVN0cmVhbQogUEFTUyBSZWFkIGVtcHR5IGJsb2IgcmVzcG9uc2UncyBib2R5IGFz
IHJlYWRhYmxlU3RyZWFtIAogUEFTUyBSZWFkIGJsb2IgcmVzcG9uc2UncyBib2R5IGFzIHJlYWRh
YmxlU3RyZWFtIAogUEFTUyBSZWFkIHRleHQgcmVzcG9uc2UncyBib2R5IGFzIHJlYWRhYmxlU3Ry
ZWFtIAorUEFTUyBSZWFkIGFycmF5IGJ1ZmZlciByZXNwb25zZSdzIGJvZHkgYXMgcmVhZGFibGVT
dHJlYW0gCiBGQUlMIFJlYWQgZm9ybSBkYXRhIHJlc3BvbnNlJ3MgYm9keSBhcyByZWFkYWJsZVN0
cmVhbSBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rpb24gd2l0aCB2YWx1ZTogIm5vdCBp
bXBsZW1lbnRlZCIKIFBBU1MgR2V0dGluZyBhbiBlcnJvciBSZXNwb25zZSBzdHJlYW0gCiBQQVNT
IEdldHRpbmcgYSByZWRpcmVjdCBSZXNwb25zZSBzdHJlYW0gCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9yZXNwb25zZS9y
ZXNwb25zZS1jb25zdW1lLXN0cmVhbS5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkvcmVzcG9uc2UvcmVzcG9uc2UtY29uc3VtZS1zdHJl
YW0uaHRtbAppbmRleCBlZTMzMmUxNzgzY2IyODk1YWY1NTdjYmU5YTE0ZGU4NzUxYjQ3NTM2Li5m
OTYxOTJmYTk4MGE5N2FiNmY0MGYyZDNiOTVlZjY2MTVmMDBjZjcxIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9yZXNwb25z
ZS9yZXNwb25zZS1jb25zdW1lLXN0cmVhbS5odG1sCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZmV0Y2gvYXBpL3Jlc3BvbnNlL3Jlc3BvbnNlLWNvbnN1
bWUtc3RyZWFtLmh0bWwKQEAgLTQwLDYgKzQwLDE1IEBAIHByb21pc2VfdGVzdChmdW5jdGlvbih0
ZXN0KSB7CiB9LCAiUmVhZCB0ZXh0IHJlc3BvbnNlJ3MgYm9keSBhcyByZWFkYWJsZVN0cmVhbSIp
OwogCiBwcm9taXNlX3Rlc3QoZnVuY3Rpb24odGVzdCkgeworICAgIHZhciBhcnJheUJ1ZmZlciA9
IG5ldyBBcnJheUJ1ZmZlcih0ZXh0RGF0YS5sZW5ndGgpOworICAgIHZhciBpbnQ4QXJyYXkgPSBu
ZXcgSW50OEFycmF5KGFycmF5QnVmZmVyKTsKKyAgICBmb3IgKHZhciBjcHRyID0gMDsgY3B0ciA8
IHRleHREYXRhLmxlbmd0aDsgY3B0cisrKQorICAgICAgICBpbnQ4QXJyYXlbY3B0cl0gPSB0ZXh0
RGF0YS5jaGFyQ29kZUF0KGNwdHIpOworCisgICAgcmV0dXJuIHZhbGlkYXRlU3RyZWFtRnJvbVN0
cmluZyhuZXcgUmVzcG9uc2UoYXJyYXlCdWZmZXIpLmJvZHkuZ2V0UmVhZGVyKCksIHRleHREYXRh
KTsKK30sICJSZWFkIGFycmF5IGJ1ZmZlciByZXNwb25zZSdzIGJvZHkgYXMgcmVhZGFibGVTdHJl
YW0iKTsKKworcHJvbWlzZV90ZXN0KGZ1bmN0aW9uKHRlc3QpIHsKICAgICB2YXIgcmVzcG9uc2Ug
PSBuZXcgUmVzcG9uc2UoZm9ybURhdGEpOwogICAgIHJldHVybiB2YWxpZGF0ZVN0cmVhbUZyb21T
dHJpbmcocmVzcG9uc2UuYm9keS5nZXRSZWFkZXIoKSwgIm5hbWU9dmFsdWUiKTsKIH0sICJSZWFk
IGZvcm0gZGF0YSByZXNwb25zZSdzIGJvZHkgYXMgcmVhZGFibGVTdHJlYW0iKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>287258</attachid>
            <date>2016-08-29 01:49:13 -0700</date>
            <delta_ts>2016-08-29 02:19:56 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-161087-20160829104704.patch</filename>
            <type>text/plain</type>
            <size>33882</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA1MTEyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWVkOTcyNDViMjg1OWZk
MGNlYjc1NzYwZTFlMGM5YzFiMWVjMzRjOC4uYTEwMmRiZDM2OThkMmMwM2QzMDQ0ODY4OTAyNDcx
MTZhMDQwYTNmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDE2LTA4LTI5ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBbRmV0Y2ggQVBJXSBBZGQg
c3VwcG9ydCBmb3IgQnVmZmVyU291cmNlIGJvZGllcworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYxMDg3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFy
aW4gQWRsZXIuCisKKyAgICAgICAgQ292ZXJlZCBieSB1cGRhdGVkIHRlc3RzLgorCisgICAgICAg
IEFkZGVkIHN1cHBvcnQgZm9yIEFycmF5QnVmZmVyLCBBcnJheUJ1ZmZlclZpZXcgYW5kIEZvcm1E
YXRhIHVwbG9hZC4KKyAgICAgICAgQWRkZWQgc3VwcG9ydCBmb3IgY29uc3VtaW5nIEFycmF5QnVm
ZmVyVmlldy4KKworICAgICAgICBUbyBzdXBwb3J0IEZvcm1EYXRhIHVwbG9hZCwgRmV0Y2hCT2R5
IGlzIG5vdyBzdG9yaW5nIGEgRm9ybURhdGEgY29tcHV0ZWQgZnJvbSB0aGUgRE9NRm9ybURhdGEg
cGFzc2VkIHRvIHRoZSBjb25zdHJ1Y3Rvci4KKyAgICAgICAgVGhpcyBhbGxvd3Mgc2V0dGluZyB0
aGUgY29udGVudC10eXBlIGZvciBGb3JtRGF0YSBjb3JyZWN0bHkgd2l0aCB0aGUgYm91bmRhcnkg
cGFyYW1ldGVyLgorCisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Ojpib2R5Rm9ySW50ZXJuYWxSZXF1ZXN0KTogQWRkaW5n
IHN1cHBvcnQgZm9yIEZvcm1EYXRhIHVwbG9hZC4KKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9k
eTo6RmV0Y2hCb2R5KTogQWRkaW5nIEFycmF5QnVmZmVyIGFuZCBBcnJheUJ1ZmZlclZpZXcgY29u
c3RydWN0b3JzLgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5OjpleHRyYWN0KTogRXh0cmFj
dGluZyBpbiBjYXNlIG9mIEJ1ZmZlclNvdXJjZSAoaS5lLiBBcnJheUJ1ZmZlciBvciBBcnJheUJ1
ZmZlclZpZXcpIGFuZCBGb3JtRGF0YS4KKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keTo6Y29u
c3VtZSk6IEFkZGluZyBzdXBwb3J0IHRvIGNvbnN1bWUgQXJyYXlCdWZmZXJWaWV3LgorICAgICAg
ICAoV2ViQ29yZTo6RmV0Y2hCb2R5Ojpjb25zdW1lQXNTdHJlYW0pOiBBZGRpbmcgc3VwcG9ydCB0
byBjb25zdW1lIEFycmF5QnVmZmVyVmlldyBhcyBhIHN0cmVhbS4KKyAgICAgICAgQ2xvbmVkIHRo
ZSBBcnJheUJ1ZmZlciBiZWZvcmUgZW5xdWV1aW5nIGl0IGluICB0aGUgc3RyZWFtLgorICAgICAg
ICAoV2ViQ29yZTo6RmV0Y2hCb2R5Ojpjb25zdW1lQXJyYXlCdWZmZXIpOiBDbGVhbmluZyBtX2Rh
dGEgYWZ0ZXIgYmVpbmcgY29uc3VtZWQuCisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHk6OmNv
bnN1bWVBcnJheUJ1ZmZlclZpZXcpOiBBZGRpbmcgc3VwcG9ydCB0byBjb25zdW1lIEFycmF5QnVm
ZmVyVmlldy4KKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keTo6Y29uc3VtZVRleHQpOiBDbGVh
bmluZyBtX3RleHQgYWZ0ZXIgYmVpbmcgY29uc3VtZWQuCisgICAgICAgIChXZWJDb3JlOjpGZXRj
aEJvZHk6OmNvbnN1bWVCbG9iKTogRGl0dG8gZm9yIG1fYmxvYi4KKyAgICAgICAgKFdlYkNvcmU6
OkZldGNoQm9keTo6Ym9keUZvckludGVybmFsUmVxdWVzdCk6IEFkZGluZyBzdXBwb3J0IGZvciBB
cnJheUJ1ZmZlciBhbmQgQXJyYXlCdWZmZXJWaWV3IHVwbG9hZC4KKyAgICAgICAgKiBNb2R1bGVz
L2ZldGNoL0ZldGNoQm9keS5oOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hSZXF1ZXN0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoUmVxdWVzdDo6aW50ZXJuYWxSZXF1ZXN0KTog
UGFzc2luZyBTY3JpcHRFeGVjdXRpb25Db250ZXh0IGFzIHRoaXMgaXMgbmVlZGVkIGZvciBGb3Jt
RGF0YSB1cGxvYWQuCisgICAgICAgIChXZWJDb3JlOjpGZXRjaFJlcXVlc3Q6OnNldEJvZHkpOiBE
aXR0by4KKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RmV0Y2hSZXNwb25zZTo6aW5pdGlhbGl6ZVdpdGgpOiBEaXR0by4KKyAgICAg
ICAgKFdlYkNvcmU6OkZldGNoUmVzcG9uc2U6OmZldGNoKTogUmVtb3ZpbmcgRm9ybURhdGEgdXBs
b2FkIHJlamVjdGlvbiBjaGVjay4KKwogMjAxNi0wOC0yNSAgRnJlZGVyaWMgV2FuZyAgPGZ3YW5n
QGlnYWxpYS5jb20+CiAKICAgICAgICAgQWRkIHN1cHBvcnQgZm9yIG5vbi1CTVAgb3BlcmF0b3Jz
IFUrMUVFRjAgYW5kIFUrMUVFRjEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZmV0Y2gvRmV0Y2hCb2R5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hC
b2R5LmNwcAppbmRleCBmNjdiOWQ2MmZkOTM4YzEwMWNkOGYzNWViOTZhZjM4YjIzMzhkY2M1Li5k
Y2VmNmE4Y2JjY2ZmZDljYmVkNjViZDYyMjE4OGE3ZDYyM2U1YmIwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuY3BwCkBAIC00Miw2ICs0Miw3IEBACiAjaW5jbHVk
ZSAiSlNET01Gb3JtRGF0YS5oIgogI2luY2x1ZGUgIkpTUmVhZGFibGVTdHJlYW0uaCIKICNpbmNs
dWRlICJSZWFkYWJsZVN0cmVhbVNvdXJjZS5oIgorI2luY2x1ZGUgPHJ1bnRpbWUvQXJyYXlCdWZm
ZXJWaWV3Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNTIsMTIgKzUzLDEyIEBAIEZl
dGNoQm9keTo6RmV0Y2hCb2R5KFJlZjxCbG9iPiYmIGJsb2IpCiB7CiB9CiAKLUZldGNoQm9keTo6
RmV0Y2hCb2R5KFJlZjxET01Gb3JtRGF0YT4mJiBmb3JtRGF0YSkKK0ZldGNoQm9keTo6RmV0Y2hC
b2R5KERPTUZvcm1EYXRhJiBmb3JtRGF0YSwgRG9jdW1lbnQmIGRvY3VtZW50KQogICAgIDogbV90
eXBlKFR5cGU6OkZvcm1EYXRhKQogICAgICwgbV9jb250ZW50VHlwZShBU0NJSUxpdGVyYWwoIm11
bHRpcGFydC9mb3JtLWRhdGEiKSkKLSAgICAsIG1fZm9ybURhdGEoV1RGTW92ZShmb3JtRGF0YSkp
CiB7Ci0gICAgLy8gRklYTUU6IEhhbmRsZSB0aGUgYm91bmRhcnkgcGFyYW1ldGVyIG9mIG11bHRp
cGFydC9mb3JtLWRhdGEgTUlNRSB0eXBlLgorICAgIG1fZm9ybURhdGEgPSBGb3JtRGF0YTo6Y3Jl
YXRlTXVsdGlQYXJ0KGZvcm1EYXRhLCBmb3JtRGF0YS5lbmNvZGluZygpLCAmZG9jdW1lbnQpOwor
ICAgIG1fY29udGVudFR5cGUgPSBtYWtlU3RyaW5nKCJtdWx0aXBhcnQvZm9ybS1kYXRhO2JvdW5k
YXJ5PSIsIG1fZm9ybURhdGEtPmJvdW5kYXJ5KCkuZGF0YSgpKTsKIH0KIAogRmV0Y2hCb2R5OjpG
ZXRjaEJvZHkoU3RyaW5nJiYgdGV4dCkKQEAgLTY3LDE3ICs2OCw0MCBAQCBGZXRjaEJvZHk6OkZl
dGNoQm9keShTdHJpbmcmJiB0ZXh0KQogewogfQogCi1GZXRjaEJvZHkgRmV0Y2hCb2R5OjpleHRy
YWN0KEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpKU1ZhbHVlIHZhbHVlKQorRmV0Y2hCb2R5
OjpGZXRjaEJvZHkoUmVmPEFycmF5QnVmZmVyPiYmIGRhdGEpCisgICAgOiBtX3R5cGUoVHlwZTo6
QXJyYXlCdWZmZXIpCisgICAgLCBtX2RhdGEoV1RGTW92ZShkYXRhKSkKK3sKK30KKworRmV0Y2hC
b2R5OjpGZXRjaEJvZHkoUmVmPEFycmF5QnVmZmVyVmlldz4mJiBkYXRhVmlldykKKyAgICA6IG1f
dHlwZShUeXBlOjpBcnJheUJ1ZmZlclZpZXcpCisgICAgLCBtX2RhdGFWaWV3KFdURk1vdmUoZGF0
YVZpZXcpKQoreworfQorCitGZXRjaEJvZHkgRmV0Y2hCb2R5OjpleHRyYWN0KFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQmIGNvbnRleHQsIEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpKU1ZhbHVl
IHZhbHVlKQogewogICAgIGlmICh2YWx1ZS5pbmhlcml0cyhKU0Jsb2I6OmluZm8oKSkpCiAgICAg
ICAgIHJldHVybiBGZXRjaEJvZHkoKkpTQmxvYjo6dG9XcmFwcGVkKHZhbHVlKSk7Ci0gICAgaWYg
KHZhbHVlLmluaGVyaXRzKEpTRE9NRm9ybURhdGE6OmluZm8oKSkpCi0gICAgICAgIHJldHVybiBG
ZXRjaEJvZHkoKkpTRE9NRm9ybURhdGE6OnRvV3JhcHBlZCh2YWx1ZSkpOworICAgIGlmICh2YWx1
ZS5pbmhlcml0cyhKU0RPTUZvcm1EYXRhOjppbmZvKCkpKSB7CisgICAgICAgIEFTU0VSVCghY29u
dGV4dC5pc1dvcmtlckdsb2JhbFNjb3BlKCkpOworICAgICAgICByZXR1cm4gRmV0Y2hCb2R5KCpK
U0RPTUZvcm1EYXRhOjp0b1dyYXBwZWQodmFsdWUpLCBzdGF0aWNfY2FzdDxEb2N1bWVudCY+KGNv
bnRleHQpKTsKKyAgICB9CiAgICAgaWYgKHZhbHVlLmlzU3RyaW5nKCkpCiAgICAgICAgIHJldHVy
biBGZXRjaEJvZHkodmFsdWUudG9XVEZTdHJpbmcoJnN0YXRlKSk7CiAgICAgaWYgKHZhbHVlLmlu
aGVyaXRzKEpTUmVhZGFibGVTdHJlYW06OmluZm8oKSkpCiAgICAgICAgIHJldHVybiB7IFR5cGU6
OlJlYWRhYmxlU3RyZWFtIH07Ci0gICAgLy8gRklYTUU6IEltcGxlbWVudCBCdWZmZXJTb3VyY2Ug
ZXh0cmFjdGlvbi4KKyAgICBpZiAodmFsdWUuaW5oZXJpdHMoSlNDOjpKU0FycmF5QnVmZmVyOjpp
bmZvKCkpKSB7CisgICAgICAgIEFycmF5QnVmZmVyKiBkYXRhID0gdG9BcnJheUJ1ZmZlcih2YWx1
ZSk7CisgICAgICAgIEFTU0VSVChkYXRhKTsKKyAgICAgICAgcmV0dXJuIHsgKmRhdGEgfTsKKyAg
ICB9CisgICAgaWYgKHZhbHVlLmluaGVyaXRzKEpTQzo6SlNBcnJheUJ1ZmZlclZpZXc6OmluZm8o
KSkpIHsKKyAgICAgICAgUmVmUHRyPEpTQzo6QXJyYXlCdWZmZXJWaWV3PiBkYXRhID0gdG9BcnJh
eUJ1ZmZlclZpZXcodmFsdWUpOworICAgICAgICBBU1NFUlQoZGF0YSk7CisgICAgICAgIHJldHVy
biB7IGRhdGEucmVsZWFzZU5vbk51bGwoKSB9OworICAgIH0KICAgICByZXR1cm4geyB9OwogfQog
CkBAIC0xNTAsNiArMTc0LDkgQEAgdm9pZCBGZXRjaEJvZHk6OmNvbnN1bWUoRmV0Y2hCb2R5T3du
ZXImIG93bmVyLCBEZWZlcnJlZFdyYXBwZXImJiBwcm9taXNlKQogICAgIGNhc2UgVHlwZTo6QXJy
YXlCdWZmZXI6CiAgICAgICAgIGNvbnN1bWVBcnJheUJ1ZmZlcihwcm9taXNlKTsKICAgICAgICAg
cmV0dXJuOworICAgIGNhc2UgVHlwZTo6QXJyYXlCdWZmZXJWaWV3OgorICAgICAgICBjb25zdW1l
QXJyYXlCdWZmZXJWaWV3KHByb21pc2UpOworICAgICAgICByZXR1cm47CiAgICAgY2FzZSBUeXBl
OjpUZXh0OgogICAgICAgICBjb25zdW1lVGV4dChwcm9taXNlKTsKICAgICAgICAgcmV0dXJuOwpA
QCAtMTYyLDkgKzE4OSwxMiBAQCB2b2lkIEZldGNoQm9keTo6Y29uc3VtZShGZXRjaEJvZHlPd25l
ciYgb3duZXIsIERlZmVycmVkV3JhcHBlciYmIHByb21pc2UpCiAgICAgY2FzZSBUeXBlOjpMb2Fk
ZWQ6CiAgICAgICAgIG1fY29uc3VtZXIucmVzb2x2ZShwcm9taXNlKTsKICAgICAgICAgcmV0dXJu
OwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIC8vIEZJWE1FOiBTdXBwb3J0IG90aGVyIHR5cGVzLgor
ICAgIGNhc2UgVHlwZTo6Rm9ybURhdGE6CisgICAgICAgIC8vIEZJWE1FOiBTdXBwb3J0IGNvbnN1
bWluZyBGb3JtRGF0YS4KICAgICAgICAgcHJvbWlzZS5yZWplY3QoMCk7CisgICAgICAgIHJldHVy
bjsKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CiB9
CiAKQEAgLTE4MCwxNiArMjEwLDI1IEBAIHZvaWQgRmV0Y2hCb2R5Ojpjb25zdW1lQXNTdHJlYW0o
RmV0Y2hCb2R5T3duZXImIG93bmVyLCBGZXRjaFJlc3BvbnNlU291cmNlJiBzb3VyCiAgICAgc3dp
dGNoIChtX3R5cGUpIHsKICAgICBjYXNlIFR5cGU6OkFycmF5QnVmZmVyOgogICAgICAgICBBU1NF
UlQobV9kYXRhKTsKLSAgICAgICAgY2xvc2VTdHJlYW0gPSBzb3VyY2UuZW5xdWV1ZShSZWZQdHI8
SlNDOjpBcnJheUJ1ZmZlcj4obV9kYXRhKSk7CisgICAgICAgIGNsb3NlU3RyZWFtID0gc291cmNl
LmVucXVldWUoQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZShtX2RhdGEtPmRhdGEoKSwgbV9kYXRhLT5i
eXRlTGVuZ3RoKCkpKTsKKyAgICAgICAgbV9kYXRhID0gbnVsbHB0cjsKKyAgICAgICAgYnJlYWs7
CisgICAgY2FzZSBUeXBlOjpBcnJheUJ1ZmZlclZpZXc6IHsKKyAgICAgICAgQVNTRVJUKG1fZGF0
YVZpZXcpOworICAgICAgICBjbG9zZVN0cmVhbSA9IHNvdXJjZS5lbnF1ZXVlKEFycmF5QnVmZmVy
Ojp0cnlDcmVhdGUobV9kYXRhVmlldy0+YmFzZUFkZHJlc3MoKSwgbV9kYXRhVmlldy0+Ynl0ZUxl
bmd0aCgpKSk7CisgICAgICAgIG1fZGF0YVZpZXcgPSBudWxscHRyOwogICAgICAgICBicmVhazsK
KyAgICB9CiAgICAgY2FzZSBUeXBlOjpUZXh0OiB7CiAgICAgICAgIFZlY3Rvcjx1aW50OF90PiBk
YXRhID0gZXh0cmFjdEZyb21UZXh0KCk7CiAgICAgICAgIGNsb3NlU3RyZWFtID0gc291cmNlLmVu
cXVldWUoQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpKTsK
KyAgICAgICAgbV90ZXh0ID0geyB9OwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBU
eXBlOjpCbG9iOgogICAgICAgICBBU1NFUlQobV9ibG9iKTsKICAgICAgICAgb3duZXIubG9hZEJs
b2IoKm1fYmxvYiwgbnVsbHB0cik7CisgICAgICAgIG1fYmxvYiA9IG51bGxwdHI7CiAgICAgICAg
IGJyZWFrOwogICAgIGNhc2UgVHlwZTo6Tm9uZToKICAgICAgICAgY2xvc2VTdHJlYW0gPSB0cnVl
OwpAQCAtMjA5LDEzICsyNDgsMjMgQEAgdm9pZCBGZXRjaEJvZHk6OmNvbnN1bWVBc1N0cmVhbShG
ZXRjaEJvZHlPd25lciYgb3duZXIsIEZldGNoUmVzcG9uc2VTb3VyY2UmIHNvdXIKIAogdm9pZCBG
ZXRjaEJvZHk6OmNvbnN1bWVBcnJheUJ1ZmZlcihEZWZlcnJlZFdyYXBwZXImIHByb21pc2UpCiB7
CisgICAgQVNTRVJUKG1fZGF0YSk7CiAgICAgbV9jb25zdW1lci5yZXNvbHZlV2l0aERhdGEocHJv
bWlzZSwgc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KG1fZGF0YS0+ZGF0YSgpKSwgbV9kYXRh
LT5ieXRlTGVuZ3RoKCkpOworICAgIG1fZGF0YSA9IG51bGxwdHI7Cit9CisKK3ZvaWQgRmV0Y2hC
b2R5Ojpjb25zdW1lQXJyYXlCdWZmZXJWaWV3KERlZmVycmVkV3JhcHBlciYgcHJvbWlzZSkKK3sK
KyAgICBBU1NFUlQobV9kYXRhVmlldyk7CisgICAgbV9jb25zdW1lci5yZXNvbHZlV2l0aERhdGEo
cHJvbWlzZSwgc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KG1fZGF0YVZpZXctPmJhc2VBZGRy
ZXNzKCkpLCBtX2RhdGFWaWV3LT5ieXRlTGVuZ3RoKCkpOworICAgIG1fZGF0YVZpZXcgPSBudWxs
cHRyOwogfQogCiB2b2lkIEZldGNoQm9keTo6Y29uc3VtZVRleHQoRGVmZXJyZWRXcmFwcGVyJiBw
cm9taXNlKQogewogICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhID0gZXh0cmFjdEZyb21UZXh0KCk7
CiAgICAgbV9jb25zdW1lci5yZXNvbHZlV2l0aERhdGEocHJvbWlzZSwgZGF0YS5kYXRhKCksIGRh
dGEuc2l6ZSgpKTsKKyAgICBtX3RleHQgPSB7IH07CiB9CiAKIHZvaWQgRmV0Y2hCb2R5Ojpjb25z
dW1lQmxvYihGZXRjaEJvZHlPd25lciYgb3duZXIsIERlZmVycmVkV3JhcHBlciYmIHByb21pc2Up
CkBAIC0yMjQsNiArMjczLDcgQEAgdm9pZCBGZXRjaEJvZHk6OmNvbnN1bWVCbG9iKEZldGNoQm9k
eU93bmVyJiBvd25lciwgRGVmZXJyZWRXcmFwcGVyJiYgcHJvbWlzZSkKIAogICAgIG1fY29uc3Vt
ZVByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpOwogICAgIG93bmVyLmxvYWRCbG9iKCptX2Jsb2Is
ICZtX2NvbnN1bWVyKTsKKyAgICBtX2Jsb2IgPSBudWxscHRyOwogfQogCiBWZWN0b3I8dWludDhf
dD4gRmV0Y2hCb2R5OjpleHRyYWN0RnJvbVRleHQoKSBjb25zdApAQCAtMjUzLDE5ICszMDMsMzYg
QEAgdm9pZCBGZXRjaEJvZHk6OmxvYWRpbmdTdWNjZWVkZWQoKQogICAgIH0KIH0KIAotUmVmUHRy
PEZvcm1EYXRhPiBGZXRjaEJvZHk6OmJvZHlGb3JJbnRlcm5hbFJlcXVlc3QoKSBjb25zdAorUmVm
UHRyPEZvcm1EYXRhPiBGZXRjaEJvZHk6OmJvZHlGb3JJbnRlcm5hbFJlcXVlc3QoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCYgY29udGV4dCkgY29uc3QKIHsKLSAgICBpZiAobV90eXBlID09IFR5cGU6
Ok5vbmUpCisgICAgc3dpdGNoIChtX3R5cGUpIHsKKyAgICBjYXNlIFR5cGU6Ok5vbmU6CiAgICAg
ICAgIHJldHVybiBudWxscHRyOwotICAgIGlmIChtX3R5cGUgPT0gVHlwZTo6VGV4dCkKKyAgICBj
YXNlIFR5cGU6OlRleHQ6CiAgICAgICAgIHJldHVybiBGb3JtRGF0YTo6Y3JlYXRlKFVURjhFbmNv
ZGluZygpLmVuY29kZShtX3RleHQsIEVudGl0aWVzRm9yVW5lbmNvZGFibGVzKSk7Ci0gICAgaWYg
KG1fdHlwZSA9PSBUeXBlOjpCbG9iKSB7CisgICAgY2FzZSBUeXBlOjpCbG9iOiB7CisgICAgICAg
IEFTU0VSVChtX2Jsb2IpOwogICAgICAgICBSZWZQdHI8Rm9ybURhdGE+IGJvZHkgPSBGb3JtRGF0
YTo6Y3JlYXRlKCk7CiAgICAgICAgIGJvZHktPmFwcGVuZEJsb2IobV9ibG9iLT51cmwoKSk7CiAg
ICAgICAgIHJldHVybiBib2R5OwogICAgIH0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAg
ICByZXR1cm4gbnVsbHB0cjsKKyAgICBjYXNlIFR5cGU6OkFycmF5QnVmZmVyOgorICAgICAgICBB
U1NFUlQobV9kYXRhKTsKKyAgICAgICAgcmV0dXJuIEZvcm1EYXRhOjpjcmVhdGUobV9kYXRhLT5k
YXRhKCksIG1fZGF0YS0+Ynl0ZUxlbmd0aCgpKTsKKyAgICBjYXNlIFR5cGU6OkFycmF5QnVmZmVy
VmlldzoKKyAgICAgICAgQVNTRVJUKG1fZGF0YVZpZXcpOworICAgICAgICByZXR1cm4gRm9ybURh
dGE6OmNyZWF0ZShtX2RhdGFWaWV3LT5iYXNlQWRkcmVzcygpLCBtX2RhdGFWaWV3LT5ieXRlTGVu
Z3RoKCkpOworICAgIGNhc2UgVHlwZTo6Rm9ybURhdGE6IHsKKyAgICAgICAgQVNTRVJUKG1fZm9y
bURhdGEpOworICAgICAgICBBU1NFUlQoIWNvbnRleHQuaXNXb3JrZXJHbG9iYWxTY29wZSgpKTsK
KyAgICAgICAgYXV0byBib2R5ID0gbV9mb3JtRGF0YTsKKyAgICAgICAgYm9keS0+Z2VuZXJhdGVG
aWxlcyhzdGF0aWNfY2FzdDxEb2N1bWVudCo+KCZjb250ZXh0KSk7CisgICAgICAgIHJldHVybiBi
b2R5OworICAgIH0KKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9mZXRjaC9GZXRjaEJvZHkuaAppbmRleCAxZGI5OWI0ZDcwNDM2ZTcxM2Y3MTE1MTQxYTZi
ZmU3ZTI3MWU5NDI4Li4zMGViMDUyYWVmMGJhMzVhYmZhMzAxNzYxMDJlMTY4OGI2YWJmOTBkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmgKQEAgLTMyLDkgKzMyLDkg
QEAKICNpZiBFTkFCTEUoRkVUQ0hfQVBJKQogCiAjaW5jbHVkZSAiQmxvYi5oIgotI2luY2x1ZGUg
IkRPTUZvcm1EYXRhLmgiCiAjaW5jbHVkZSAiRmV0Y2hCb2R5Q29uc3VtZXIuaCIKICNpbmNsdWRl
ICJGZXRjaExvYWRlci5oIgorI2luY2x1ZGUgIkZvcm1EYXRhLmgiCiAjaW5jbHVkZSAiSlNET01Q
cm9taXNlLmgiCiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtNDQsMTAgKzQ0LDExIEBAIGNsYXNzIEpT
VmFsdWU7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgRE9NRm9ybURhdGE7CiBjbGFz
cyBGZXRjaEJvZHlPd25lcjsKIGNsYXNzIEZldGNoSGVhZGVyczsKIGNsYXNzIEZldGNoUmVzcG9u
c2VTb3VyY2U7Ci1jbGFzcyBGb3JtRGF0YTsKK2NsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7
CiAKIGNsYXNzIEZldGNoQm9keSB7CiBwdWJsaWM6CkBAIC02Nyw3ICs2OCw3IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHNldENvbnRlbnRUeXBlKGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpIHsgbV9j
b250ZW50VHlwZSA9IGNvbnRlbnRUeXBlOyB9CiAgICAgU3RyaW5nIGNvbnRlbnRUeXBlKCkgY29u
c3QgeyByZXR1cm4gbV9jb250ZW50VHlwZTsgfQogCi0gICAgc3RhdGljIEZldGNoQm9keSBleHRy
YWN0KEpTQzo6RXhlY1N0YXRlJiwgSlNDOjpKU1ZhbHVlKTsKKyAgICBzdGF0aWMgRmV0Y2hCb2R5
IGV4dHJhY3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIEpTQzo6RXhlY1N0YXRlJiwgSlNDOjpK
U1ZhbHVlKTsKICAgICBzdGF0aWMgRmV0Y2hCb2R5IGV4dHJhY3RGcm9tQm9keShGZXRjaEJvZHkq
KTsKICAgICBzdGF0aWMgRmV0Y2hCb2R5IGxvYWRpbmdCb2R5KCkgeyByZXR1cm4geyBUeXBlOjpM
b2FkaW5nIH07IH0KICAgICBGZXRjaEJvZHkoKSA9IGRlZmF1bHQ7CkBAIC03NSw5ICs3Niw5IEBA
IHB1YmxpYzoKICAgICB2b2lkIGxvYWRpbmdGYWlsZWQoKTsKICAgICB2b2lkIGxvYWRpbmdTdWNj
ZWVkZWQoKTsKIAotICAgIFJlZlB0cjxGb3JtRGF0YT4gYm9keUZvckludGVybmFsUmVxdWVzdCgp
IGNvbnN0OworICAgIFJlZlB0cjxGb3JtRGF0YT4gYm9keUZvckludGVybmFsUmVxdWVzdChTY3Jp
cHRFeGVjdXRpb25Db250ZXh0JikgY29uc3Q7CiAKLSAgICBlbnVtIGNsYXNzIFR5cGUgeyBOb25l
LCBBcnJheUJ1ZmZlciwgQmxvYiwgRm9ybURhdGEsIFRleHQsIExvYWRpbmcsIExvYWRlZCwgUmVh
ZGFibGVTdHJlYW0gfTsKKyAgICBlbnVtIGNsYXNzIFR5cGUgeyBOb25lLCBBcnJheUJ1ZmZlciwg
QXJyYXlCdWZmZXJWaWV3LCBCbG9iLCBGb3JtRGF0YSwgVGV4dCwgTG9hZGluZywgTG9hZGVkLCBS
ZWFkYWJsZVN0cmVhbSB9OwogICAgIFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsg
fQogCiAgICAgRmV0Y2hCb2R5Q29uc3VtZXImIGNvbnN1bWVyKCkgeyByZXR1cm4gbV9jb25zdW1l
cjsgfQpAQCAtODYsNyArODcsOSBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgRmV0Y2hCb2R5
KFJlZjxCbG9iPiYmKTsKLSAgICBGZXRjaEJvZHkoUmVmPERPTUZvcm1EYXRhPiYmKTsKKyAgICBG
ZXRjaEJvZHkoUmVmPEFycmF5QnVmZmVyPiYmKTsKKyAgICBGZXRjaEJvZHkoUmVmPEFycmF5QnVm
ZmVyVmlldz4mJik7CisgICAgRmV0Y2hCb2R5KERPTUZvcm1EYXRhJiwgRG9jdW1lbnQmKTsKICAg
ICBGZXRjaEJvZHkoU3RyaW5nJiYpOwogICAgIEZldGNoQm9keShUeXBlIHR5cGUpIDogbV90eXBl
KHR5cGUpIHsgfQogCkBAIC05NCwxNiArOTcsMTggQEAgcHJpdmF0ZToKIAogICAgIFZlY3Rvcjx1
aW50OF90PiBleHRyYWN0RnJvbVRleHQoKSBjb25zdDsKICAgICB2b2lkIGNvbnN1bWVBcnJheUJ1
ZmZlcihEZWZlcnJlZFdyYXBwZXImKTsKKyAgICB2b2lkIGNvbnN1bWVBcnJheUJ1ZmZlclZpZXco
RGVmZXJyZWRXcmFwcGVyJik7CiAgICAgdm9pZCBjb25zdW1lVGV4dChEZWZlcnJlZFdyYXBwZXIm
KTsKICAgICB2b2lkIGNvbnN1bWVCbG9iKEZldGNoQm9keU93bmVyJiwgRGVmZXJyZWRXcmFwcGVy
JiYpOwogCiAgICAgVHlwZSBtX3R5cGUgeyBUeXBlOjpOb25lIH07CiAgICAgU3RyaW5nIG1fY29u
dGVudFR5cGU7CiAKLSAgICAvLyBGSVhNRTogQWRkIHN1cHBvcnQgZm9yIEJ1ZmZlclNvdXJjZSBh
bmQgVVJMU2VhcmNoUGFyYW1zLgorICAgIC8vIEZJWE1FOiBBZGQgc3VwcG9ydCBmb3IgVVJMU2Vh
cmNoUGFyYW1zLgogICAgIFJlZlB0cjxCbG9iPiBtX2Jsb2I7Ci0gICAgUmVmUHRyPERPTUZvcm1E
YXRhPiBtX2Zvcm1EYXRhOworICAgIFJlZlB0cjxGb3JtRGF0YT4gbV9mb3JtRGF0YTsKICAgICBS
ZWZQdHI8QXJyYXlCdWZmZXI+IG1fZGF0YTsKKyAgICBSZWZQdHI8QXJyYXlCdWZmZXJWaWV3PiBt
X2RhdGFWaWV3OwogICAgIFN0cmluZyBtX3RleHQ7CiAKICAgICBGZXRjaEJvZHlDb25zdW1lciBt
X2NvbnN1bWVyIHsgRmV0Y2hCb2R5Q29uc3VtZXI6OlR5cGU6Ok5vbmUgfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXF1ZXN0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXF1ZXN0LmNwcAppbmRleCAzMzk0MzA1MDJjODA0
ZmQyNTU5ZGY4MzNiNmQ1MWQ2NzRmNjBlNTRjLi4xODVhZGNjNzk1ZTZjN2Y0ZTg2OGEzMTY5ZjUz
ZmYzZTRkZjUyYTdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0Zl
dGNoUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJl
cXVlc3QuY3BwCkBAIC0yNTcsNyArMjU3LDggQEAgRmV0Y2hIZWFkZXJzKiBGZXRjaFJlcXVlc3Q6
OmluaXRpYWxpemVXaXRoKEZldGNoUmVxdWVzdCYgaW5wdXQsIGNvbnN0IERpY3Rpb25hcnkKIHZv
aWQgRmV0Y2hSZXF1ZXN0OjpzZXRCb2R5KEpTQzo6RXhlY1N0YXRlJiBleGVjU3RhdGUsIEpTQzo6
SlNWYWx1ZSBib2R5LCBGZXRjaFJlcXVlc3QqIHJlcXVlc3QsIEV4Y2VwdGlvbkNvZGUmIGVjKQog
ewogICAgIGlmICghYm9keS5pc051bGwoKSkgewotICAgICAgICBtX2JvZHkgPSBGZXRjaEJvZHk6
OmV4dHJhY3QoZXhlY1N0YXRlLCBib2R5KTsKKyAgICAgICAgQVNTRVJUKHNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKSk7CisgICAgICAgIG1fYm9keSA9IEZldGNoQm9keTo6ZXh0cmFjdCgqc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpLCBleGVjU3RhdGUsIGJvZHkpOwogICAgICAgICBpZiAobV9ib2R5
LnR5cGUoKSA9PSBGZXRjaEJvZHk6OlR5cGU6Ok5vbmUpIHsKICAgICAgICAgICAgIGVjID0gVHlw
ZUVycm9yOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMjkyLDkgKzI5MywxMSBAQCBjb25zdCBT
dHJpbmcmIEZldGNoUmVxdWVzdDo6dXJsKCkgY29uc3QKIAogUmVzb3VyY2VSZXF1ZXN0IEZldGNo
UmVxdWVzdDo6aW50ZXJuYWxSZXF1ZXN0KCkgY29uc3QKIHsKKyAgICBBU1NFUlQoc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpKTsKKwogICAgIFJlc291cmNlUmVxdWVzdCByZXF1ZXN0ID0gbV9pbnRl
cm5hbFJlcXVlc3QucmVxdWVzdDsKICAgICByZXF1ZXN0LnNldEhUVFBIZWFkZXJGaWVsZHMobV9o
ZWFkZXJzLT5pbnRlcm5hbEhlYWRlcnMoKSk7Ci0gICAgcmVxdWVzdC5zZXRIVFRQQm9keShib2R5
KCkuYm9keUZvckludGVybmFsUmVxdWVzdCgpKTsKKyAgICByZXF1ZXN0LnNldEhUVFBCb2R5KGJv
ZHkoKS5ib2R5Rm9ySW50ZXJuYWxSZXF1ZXN0KCpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpKTsK
IAogICAgIC8vIEZJWE1FOiBTdXBwb3J0IG5vLXJlZmVycmVyIGFuZCBjbGllbnQuIEVuc3VyZSB0
aGlzIGNhc2Utc2Vuc2l0aXZlIGNvbXBhcmlzb24gaXMgb2suCiAgICAgaWYgKG1faW50ZXJuYWxS
ZXF1ZXN0LnJlZmVycmVyICE9ICJuby1yZWZlcnJlciIgJiYgbV9pbnRlcm5hbFJlcXVlc3QucmVm
ZXJyZXIgIT0gImNsaWVudCIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Zl
dGNoL0ZldGNoUmVzcG9uc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRj
aFJlc3BvbnNlLmNwcAppbmRleCBjYTQ1MmEwMDcwMDkxNDM4Y2FmOTA3MTQ2ZWNlM2VhMzE2OWNi
ODU3Li44OWU1YWE5MmVlY2UwNzdlMjkwMjY5MDU1M2ZlMTZkZmIxNjEzODVmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAKQEAgLTgyLDcgKzgy
LDggQEAgdm9pZCBGZXRjaFJlc3BvbnNlOjpzZXRTdGF0dXMoaW50IHN0YXR1cywgY29uc3QgU3Ry
aW5nJiBzdGF0dXNUZXh0LCBFeGNlcHRpb25Db2QKIAogdm9pZCBGZXRjaFJlc3BvbnNlOjppbml0
aWFsaXplV2l0aChKU0M6OkV4ZWNTdGF0ZSYgZXhlY1N0YXRlLCBKU0M6OkpTVmFsdWUgYm9keSkK
IHsKLSAgICBtX2JvZHkgPSBGZXRjaEJvZHk6OmV4dHJhY3QoZXhlY1N0YXRlLCBib2R5KTsKKyAg
ICBBU1NFUlQoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKKyAgICBtX2JvZHkgPSBGZXRjaEJv
ZHk6OmV4dHJhY3QoKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgZXhlY1N0YXRlLCBib2R5KTsK
ICAgICBtX2JvZHkudXBkYXRlQ29udGVudFR5cGUobV9oZWFkZXJzKTsKIH0KIApAQCAtMTA0LDEx
ICsxMDUsNiBAQCB2b2lkIEZldGNoUmVzcG9uc2U6OmZldGNoKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQmIGNvbnRleHQsIEZldGNoUmVxdWVzdCYgcmVxdWVzdAogewogICAgIGF1dG8gcmVzcG9uc2Ug
PSBhZG9wdFJlZigqbmV3IEZldGNoUmVzcG9uc2UoY29udGV4dCwgRmV0Y2hCb2R5Ojpsb2FkaW5n
Qm9keSgpLCBGZXRjaEhlYWRlcnM6OmNyZWF0ZShGZXRjaEhlYWRlcnM6Okd1YXJkOjpJbW11dGFi
bGUpLCB7IH0pKTsKIAotICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgZm9ybSBkYXRhIHVwbG9hZC4K
LSAgICBpZiAocmVxdWVzdC5ib2R5VHlwZSgpID09IEZldGNoQm9keTo6VHlwZTo6Rm9ybURhdGEp
IHsKLSAgICAgICAgcHJvbWlzZS5yZWplY3QoVHlwZUVycm9yLCAiVXBsb2FkaW5nIEZvcm1EYXRh
IGlzIG5vdCB5ZXQgaW1wbGVtZW50ZWQiKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KICAgICAv
LyBTZXR0aW5nIHBlbmRpbmcgYWN0aXZpdHkgdW50aWwgQm9keUxvYWRlciBkaWRGYWlsIG9yIGRp
ZFN1Y2NlZWQgY2FsbGJhY2sgaXMgY2FsbGVkLgogICAgIHJlc3BvbnNlLT5zZXRQZW5kaW5nQWN0
aXZpdHkocmVzcG9uc2UucHRyKCkpOwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2MvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwppbmRl
eCAwMzYzMzAyOWFjZmI2ZjQyNTZhYmRiZDQzMmQxZTI5NGVkNTcwOGEyLi5iZTZiYTBkYzBiM2Y3
ZGQyYzg5ZWQwODdlMzg3NWU3NzAyNTM4MTY4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2MvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwyMCBAQAorMjAxNi0wOC0yOSAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBh
cHBsZS5jb20+CisKKyAgICAgICAgW0ZldGNoIEFQSV0gQWRkIHN1cHBvcnQgZm9yIEJ1ZmZlclNv
dXJjZSBib2RpZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE2MTA4NworCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAg
ICogd2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9iYXNpYy9yZXF1ZXN0LWhlYWRlcnMtZXhw
ZWN0ZWQudHh0OgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkvYmFzaWMv
cmVxdWVzdC1oZWFkZXJzLXdvcmtlci1leHBlY3RlZC50eHQ6CisgICAgICAgICogd2ViLXBsYXRm
b3JtLXRlc3RzL2ZldGNoL2FwaS9iYXNpYy9yZXF1ZXN0LWhlYWRlcnMuanM6CisgICAgICAgIChj
aGVja0NvbnRlbnRUeXBlKToKKyAgICAgICAgKHJlcXVlc3RIZWFkZXJzKTogQ2hhbmdlIHRoZSBv
cmRlciBvZiB0aGUgaGVhZGVyIGNoZWNrcyBzbyB0aGF0IHBhc3NpbmcgaGVhZGVycyBhcmUgY2hl
Y2tlZCBmaXJzdC4KKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvZmV0Y2gvYXBpL3JlcXVl
c3QvcmVxdWVzdC1jb25zdW1lLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0t
dGVzdHMvZmV0Y2gvYXBpL3JlcXVlc3QvcmVxdWVzdC1jb25zdW1lLmh0bWw6CisgICAgICAgICog
d2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9yZXNwb25zZS9yZXNwb25zZS1jb25zdW1lLXN0
cmVhbS1leHBlY3RlZC50eHQ6CisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNoL2Fw
aS9yZXNwb25zZS9yZXNwb25zZS1jb25zdW1lLXN0cmVhbS5odG1sOgorCiAyMDE2LTA4LTI4ICBZ
b3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBbRmV0Y2ggQVBJXSBF
bnN1cmUgcmVzcG9uc2UgY2xvbmluZyB3b3JrcyB3aGVuIGRhdGEgaXMgbG9hZGluZwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9h
cGkvYmFzaWMvcmVxdWVzdC1oZWFkZXJzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZmV0Y2gvYXBpL2Jhc2ljL3JlcXVlc3QtaGVhZGVy
cy1leHBlY3RlZC50eHQKaW5kZXggN2IxMjRiYmNkZjE0MzcxY2IwZTYwMWIyMmUzM2UxY2E4NDMy
MWZkYi4uNmZlOGVkYTU2ZTJiZTgxZWMwMzJiZjFjZmVmZmZiZDY4NmM2NTFiOCAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkv
YmFzaWMvcmVxdWVzdC1oZWFkZXJzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9iYXNpYy9yZXF1ZXN0LWhlYWRl
cnMtZXhwZWN0ZWQudHh0CkBAIC0xLDEzICsxLDE4IEBACiAKIEZBSUwgRmV0Y2ggd2l0aCBHRVQg
YXNzZXJ0X2VxdWFsczogUmVxdWVzdCBzaG91bGQgaGF2ZSBoZWFkZXIgb3JpZ2luOiBodHRwOi8v
bG9jYWxob3N0Ojg4MDAgZXhwZWN0ZWQgKHN0cmluZykgImh0dHA6Ly9sb2NhbGhvc3Q6ODgwMCIg
YnV0IGdvdCAob2JqZWN0KSBudWxsCi1GQUlMIEZldGNoIHdpdGggSEVBRCBhc3NlcnRfZXF1YWxz
OiBSZXF1ZXN0IHNob3VsZCBoYXZlIGhlYWRlciBjb250ZW50LWxlbmd0aDogbnVsbCBleHBlY3Rl
ZCAob2JqZWN0KSBudWxsIGJ1dCBnb3QgKHN0cmluZykgIjAiCitGQUlMIEZldGNoIHdpdGggSEVB
RCBhc3NlcnRfZXF1YWxzOiBSZXF1ZXN0IHNob3VsZCBoYXZlIGhlYWRlciBvcmlnaW46IGh0dHA6
Ly9sb2NhbGhvc3Q6ODgwMCBleHBlY3RlZCAoc3RyaW5nKSAiaHR0cDovL2xvY2FsaG9zdDo4ODAw
IiBidXQgZ290IChvYmplY3QpIG51bGwKIFBBU1MgRmV0Y2ggd2l0aCBQVVQgd2l0aG91dCBib2R5
IAogUEFTUyBGZXRjaCB3aXRoIFBVVCB3aXRoIGJvZHkgCiBQQVNTIEZldGNoIHdpdGggUE9TVCB3
aXRob3V0IGJvZHkgCiBQQVNTIEZldGNoIHdpdGggUE9TVCB3aXRoIHRleHQgYm9keSAKLUZBSUwg
RmV0Y2ggd2l0aCBQT1NUIHdpdGggRm9ybURhdGEgYm9keSBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxl
ZCByZWplY3Rpb24gd2l0aCB2YWx1ZTogb2JqZWN0ICJUeXBlRXJyb3I6IFVwbG9hZGluZyBGb3Jt
RGF0YSBpcyBub3QgeWV0IGltcGxlbWVudGVkIgorUEFTUyBGZXRjaCB3aXRoIFBPU1Qgd2l0aCBG
b3JtRGF0YSBib2R5IAogRkFJTCBGZXRjaCB3aXRoIFBPU1Qgd2l0aCBCbG9iIGJvZHkgYXNzZXJ0
X2VxdWFsczogUmVxdWVzdCBzaG91bGQgaGF2ZSBoZWFkZXIgY29udGVudC10eXBlOiBudWxsIGV4
cGVjdGVkIChvYmplY3QpIG51bGwgYnV0IGdvdCAoc3RyaW5nKSAiYXBwbGljYXRpb24veC13d3ct
Zm9ybS11cmxlbmNvZGVkIgotRkFJTCBGZXRjaCB3aXRoIFBPU1Qgd2l0aCBBcnJheUJ1ZmZlciBi
b2R5IHByb21pc2VfdGVzdDogVW5oYW5kbGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiBvYmplY3Qg
IlR5cGVFcnJvcjogVHlwZSBlcnJvciIKK0ZBSUwgRmV0Y2ggd2l0aCBQT1NUIHdpdGggQXJyYXlC
dWZmZXIgYm9keSBhc3NlcnRfZXF1YWxzOiBSZXF1ZXN0IHNob3VsZCBoYXZlIGhlYWRlciBjb250
ZW50LXR5cGU6IG51bGwgZXhwZWN0ZWQgKG9iamVjdCkgbnVsbCBidXQgZ290IChzdHJpbmcpICJh
cHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQiCitGQUlMIEZldGNoIHdpdGggUE9TVCB3
aXRoIFVpbnQ4QXJyYXkgYm9keSBhc3NlcnRfZXF1YWxzOiBSZXF1ZXN0IHNob3VsZCBoYXZlIGhl
YWRlciBjb250ZW50LXR5cGU6IG51bGwgZXhwZWN0ZWQgKG9iamVjdCkgbnVsbCBidXQgZ290IChz
dHJpbmcpICJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQiCitGQUlMIEZldGNoIHdp
dGggUE9TVCB3aXRoIEludDhBcnJheSBib2R5IGFzc2VydF9lcXVhbHM6IFJlcXVlc3Qgc2hvdWxk
IGhhdmUgaGVhZGVyIGNvbnRlbnQtdHlwZTogbnVsbCBleHBlY3RlZCAob2JqZWN0KSBudWxsIGJ1
dCBnb3QgKHN0cmluZykgImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCIKK0ZBSUwg
RmV0Y2ggd2l0aCBQT1NUIHdpdGggRmxvYXQzMkFycmF5IGJvZHkgYXNzZXJ0X2VxdWFsczogUmVx
dWVzdCBzaG91bGQgaGF2ZSBoZWFkZXIgY29udGVudC10eXBlOiBudWxsIGV4cGVjdGVkIChvYmpl
Y3QpIG51bGwgYnV0IGdvdCAoc3RyaW5nKSAiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNv
ZGVkIgorRkFJTCBGZXRjaCB3aXRoIFBPU1Qgd2l0aCBGbG9hdDY0QXJyYXkgYm9keSBhc3NlcnRf
ZXF1YWxzOiBSZXF1ZXN0IHNob3VsZCBoYXZlIGhlYWRlciBjb250ZW50LXR5cGU6IG51bGwgZXhw
ZWN0ZWQgKG9iamVjdCkgbnVsbCBidXQgZ290IChzdHJpbmcpICJhcHBsaWNhdGlvbi94LXd3dy1m
b3JtLXVybGVuY29kZWQiCitGQUlMIEZldGNoIHdpdGggUE9TVCB3aXRoIERhdGFWaWV3IGJvZHkg
YXNzZXJ0X2VxdWFsczogUmVxdWVzdCBzaG91bGQgaGF2ZSBoZWFkZXIgY29udGVudC10eXBlOiBu
dWxsIGV4cGVjdGVkIChvYmplY3QpIG51bGwgYnV0IGdvdCAoc3RyaW5nKSAiYXBwbGljYXRpb24v
eC13d3ctZm9ybS11cmxlbmNvZGVkIgogUEFTUyBGZXRjaCB3aXRoIFBPU1Qgd2l0aCBCbG9iIGJv
ZHkgd2l0aCBtaW1lIHR5cGUgCiBGQUlMIEZldGNoIHdpdGggQ2hpY2tlbiBhc3NlcnRfZXF1YWxz
OiBSZXF1ZXN0IHNob3VsZCBoYXZlIGhlYWRlciBjb250ZW50LWxlbmd0aDogbnVsbCBleHBlY3Rl
ZCAob2JqZWN0KSBudWxsIGJ1dCBnb3QgKHN0cmluZykgIjAiCiBQQVNTIEZldGNoIHdpdGggQ2hp
Y2tlbiB3aXRoIGJvZHkgCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9iYXNpYy9yZXF1ZXN0LWhlYWRlcnMtd29ya2VyLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
ZmV0Y2gvYXBpL2Jhc2ljL3JlcXVlc3QtaGVhZGVycy13b3JrZXItZXhwZWN0ZWQudHh0CmluZGV4
IGM3YmUyY2Y2NzZjNTc3NzNkMjY5OTNkODA5ZGRlY2VkYzkyNGFhMTAuLjQyZjA5ZjhmYzBjNzFm
MDMxMWJhMGM5OWZjZGU0MTVkZDJiNWY0ZTAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZmV0Y2gvYXBpL2Jhc2ljL3JlcXVlc3QtaGVhZGVy
cy13b3JrZXItZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvZmV0Y2gvYXBpL2Jhc2ljL3JlcXVlc3QtaGVhZGVycy13b3JrZXItZXhw
ZWN0ZWQudHh0CkBAIC0xLDEyICsxLDE3IEBACiAKIEZBSUwgRmV0Y2ggd2l0aCBHRVQgYXNzZXJ0
X2VxdWFsczogUmVxdWVzdCBzaG91bGQgaGF2ZSBoZWFkZXIgb3JpZ2luOiBodHRwOi8vbG9jYWxo
b3N0Ojg4MDAgZXhwZWN0ZWQgKHN0cmluZykgImh0dHA6Ly9sb2NhbGhvc3Q6ODgwMCIgYnV0IGdv
dCAob2JqZWN0KSBudWxsCi1GQUlMIEZldGNoIHdpdGggSEVBRCBhc3NlcnRfZXF1YWxzOiBSZXF1
ZXN0IHNob3VsZCBoYXZlIGhlYWRlciBjb250ZW50LWxlbmd0aDogbnVsbCBleHBlY3RlZCAob2Jq
ZWN0KSBudWxsIGJ1dCBnb3QgKHN0cmluZykgIjAiCitGQUlMIEZldGNoIHdpdGggSEVBRCBhc3Nl
cnRfZXF1YWxzOiBSZXF1ZXN0IHNob3VsZCBoYXZlIGhlYWRlciBvcmlnaW46IGh0dHA6Ly9sb2Nh
bGhvc3Q6ODgwMCBleHBlY3RlZCAoc3RyaW5nKSAiaHR0cDovL2xvY2FsaG9zdDo4ODAwIiBidXQg
Z290IChvYmplY3QpIG51bGwKIFBBU1MgRmV0Y2ggd2l0aCBQVVQgd2l0aG91dCBib2R5IAogUEFT
UyBGZXRjaCB3aXRoIFBVVCB3aXRoIGJvZHkgCiBQQVNTIEZldGNoIHdpdGggUE9TVCB3aXRob3V0
IGJvZHkgCiBQQVNTIEZldGNoIHdpdGggUE9TVCB3aXRoIHRleHQgYm9keSAKIEZBSUwgRmV0Y2gg
d2l0aCBQT1NUIHdpdGggQmxvYiBib2R5IGFzc2VydF9lcXVhbHM6IFJlcXVlc3Qgc2hvdWxkIGhh
dmUgaGVhZGVyIGNvbnRlbnQtdHlwZTogbnVsbCBleHBlY3RlZCAob2JqZWN0KSBudWxsIGJ1dCBn
b3QgKHN0cmluZykgImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCIKLUZBSUwgRmV0
Y2ggd2l0aCBQT1NUIHdpdGggQXJyYXlCdWZmZXIgYm9keSBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxl
ZCByZWplY3Rpb24gd2l0aCB2YWx1ZTogb2JqZWN0ICJUeXBlRXJyb3I6IFR5cGUgZXJyb3IiCitG
QUlMIEZldGNoIHdpdGggUE9TVCB3aXRoIEFycmF5QnVmZmVyIGJvZHkgYXNzZXJ0X2VxdWFsczog
UmVxdWVzdCBzaG91bGQgaGF2ZSBoZWFkZXIgY29udGVudC10eXBlOiBudWxsIGV4cGVjdGVkIChv
YmplY3QpIG51bGwgYnV0IGdvdCAoc3RyaW5nKSAiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxl
bmNvZGVkIgorRkFJTCBGZXRjaCB3aXRoIFBPU1Qgd2l0aCBVaW50OEFycmF5IGJvZHkgYXNzZXJ0
X2VxdWFsczogUmVxdWVzdCBzaG91bGQgaGF2ZSBoZWFkZXIgY29udGVudC10eXBlOiBudWxsIGV4
cGVjdGVkIChvYmplY3QpIG51bGwgYnV0IGdvdCAoc3RyaW5nKSAiYXBwbGljYXRpb24veC13d3ct
Zm9ybS11cmxlbmNvZGVkIgorRkFJTCBGZXRjaCB3aXRoIFBPU1Qgd2l0aCBJbnQ4QXJyYXkgYm9k
eSBhc3NlcnRfZXF1YWxzOiBSZXF1ZXN0IHNob3VsZCBoYXZlIGhlYWRlciBjb250ZW50LXR5cGU6
IG51bGwgZXhwZWN0ZWQgKG9iamVjdCkgbnVsbCBidXQgZ290IChzdHJpbmcpICJhcHBsaWNhdGlv
bi94LXd3dy1mb3JtLXVybGVuY29kZWQiCitGQUlMIEZldGNoIHdpdGggUE9TVCB3aXRoIEZsb2F0
MzJBcnJheSBib2R5IGFzc2VydF9lcXVhbHM6IFJlcXVlc3Qgc2hvdWxkIGhhdmUgaGVhZGVyIGNv
bnRlbnQtdHlwZTogbnVsbCBleHBlY3RlZCAob2JqZWN0KSBudWxsIGJ1dCBnb3QgKHN0cmluZykg
ImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCIKK0ZBSUwgRmV0Y2ggd2l0aCBQT1NU
IHdpdGggRmxvYXQ2NEFycmF5IGJvZHkgYXNzZXJ0X2VxdWFsczogUmVxdWVzdCBzaG91bGQgaGF2
ZSBoZWFkZXIgY29udGVudC10eXBlOiBudWxsIGV4cGVjdGVkIChvYmplY3QpIG51bGwgYnV0IGdv
dCAoc3RyaW5nKSAiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkIgorRkFJTCBGZXRj
aCB3aXRoIFBPU1Qgd2l0aCBEYXRhVmlldyBib2R5IGFzc2VydF9lcXVhbHM6IFJlcXVlc3Qgc2hv
dWxkIGhhdmUgaGVhZGVyIGNvbnRlbnQtdHlwZTogbnVsbCBleHBlY3RlZCAob2JqZWN0KSBudWxs
IGJ1dCBnb3QgKHN0cmluZykgImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCIKIFBB
U1MgRmV0Y2ggd2l0aCBQT1NUIHdpdGggQmxvYiBib2R5IHdpdGggbWltZSB0eXBlIAogRkFJTCBG
ZXRjaCB3aXRoIENoaWNrZW4gYXNzZXJ0X2VxdWFsczogUmVxdWVzdCBzaG91bGQgaGF2ZSBoZWFk
ZXIgY29udGVudC1sZW5ndGg6IG51bGwgZXhwZWN0ZWQgKG9iamVjdCkgbnVsbCBidXQgZ290IChz
dHJpbmcpICIwIgogUEFTUyBGZXRjaCB3aXRoIENoaWNrZW4gd2l0aCBib2R5IApkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkv
YmFzaWMvcmVxdWVzdC1oZWFkZXJzLmpzIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkvYmFzaWMvcmVxdWVzdC1oZWFkZXJzLmpzCmluZGV4IDQw
OTdmM2FlZjdjYjA0MGNkMzljYjZhZmRkYjNjZmVjMzA3ODgwMzkuLmIyNzhjZTRlNmNlMzc0ZGNm
MzU0M2FkOWE1M2JiMjM1ZTRmZjEwM2QgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZmV0Y2gvYXBpL2Jhc2ljL3JlcXVlc3QtaGVhZGVycy5q
cworKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNo
L2FwaS9iYXNpYy9yZXF1ZXN0LWhlYWRlcnMuanMKQEAgLTExLDcgKzExLDcgQEAgZnVuY3Rpb24g
Y2hlY2tDb250ZW50VHlwZShjb250ZW50VHlwZSwgYm9keSkKICAgICB9CiAKICAgICB2YXIgZXhw
ZWN0ZWRDb250ZW50VHlwZSA9ICJ0ZXh0L3BsYWluO2NoYXJzZXQ9VVRGLTgiOwotICAgIGlmKGJv
ZHkgPT09IG51bGwgfHwgYm9keSBpbnN0YW5jZW9mIEFycmF5QnVmZmVyKQorICAgIGlmKGJvZHkg
PT09IG51bGwgfHwgYm9keSBpbnN0YW5jZW9mIEFycmF5QnVmZmVyIHx8IGJvZHkuYnVmZmVyIGlu
c3RhbmNlb2YgQXJyYXlCdWZmZXIpCiAgICAgICAgIGV4cGVjdGVkQ29udGVudFR5cGUgPSBudWxs
OwogICAgIGVsc2UgaWYgKGJvZHkgaW5zdGFuY2VvZiBCbG9iKQogICAgICAgICBleHBlY3RlZENv
bnRlbnRUeXBlID0gYm9keS50eXBlID8gYm9keS50eXBlIDogbnVsbDsKQEAgLTI4LDEyICsyOCwx
MiBAQCBmdW5jdGlvbiByZXF1ZXN0SGVhZGVycyhkZXNjLCB1cmwsIG1ldGhvZCwgYm9keSwgZXhw
ZWN0ZWRPcmlnaW4sIGV4cGVjdGVkQ29udGVudAogICAgIHJldHVybiBmZXRjaCh1cmwgKyB1cmxQ
YXJhbWV0ZXJzLCByZXF1ZXN0SW5pdCkudGhlbihmdW5jdGlvbihyZXNwKSB7CiAgICAgICBhc3Nl
cnRfZXF1YWxzKHJlc3Auc3RhdHVzLCAyMDAsICJIVFRQIHN0YXR1cyBpcyAyMDAiKTsKICAgICAg
IGFzc2VydF9lcXVhbHMocmVzcC50eXBlICwgImJhc2ljIiwgIlJlc3BvbnNlJ3MgdHlwZSBpcyBi
YXNpYyIpOwotICAgICAgY2hlY2tDb250ZW50VHlwZShyZXNwLmhlYWRlcnMuZ2V0KCJ4LXJlcXVl
c3QtY29udGVudC10eXBlIiksIGJvZHkpOwotICAgICAgaWYgKGV4cGVjdGVkQ29udGVudExlbmd0
aCAhPT0gdW5kZWZpbmVkKQotICAgICAgICBhc3NlcnRfZXF1YWxzKHJlc3AuaGVhZGVycy5nZXQo
IngtcmVxdWVzdC1jb250ZW50LWxlbmd0aCIpICwgZXhwZWN0ZWRDb250ZW50TGVuZ3RoLCAiUmVx
dWVzdCBzaG91bGQgaGF2ZSBoZWFkZXIgY29udGVudC1sZW5ndGg6ICIgKyBleHBlY3RlZENvbnRl
bnRMZW5ndGgpOwogICAgICAgYXNzZXJ0X3RydWUocmVzcC5oZWFkZXJzLmhhcygieC1yZXF1ZXN0
LXVzZXItYWdlbnQiKSwgIlJlcXVlc3QgaGFzIGhlYWRlciB1c2VyLWFnZW50Iik7CiAgICAgICBh
c3NlcnRfZmFsc2UocmVzcC5oZWFkZXJzLmhhcygiYWNjZXB0LWNoYXJzZXQiKSwgIlJlcXVlc3Qg
aGFzIGhlYWRlciBhY2NlcHQtY2hhcnNldCIpOwogICAgICAgYXNzZXJ0X2VxdWFscyhyZXNwLmhl
YWRlcnMuZ2V0KCJ4LXJlcXVlc3Qtb3JpZ2luIikgLCBleHBlY3RlZE9yaWdpbiwgIlJlcXVlc3Qg
c2hvdWxkIGhhdmUgaGVhZGVyIG9yaWdpbjogIiArIGV4cGVjdGVkT3JpZ2luKTsKKyAgICAgIGlm
IChleHBlY3RlZENvbnRlbnRMZW5ndGggIT09IHVuZGVmaW5lZCkKKyAgICAgICAgYXNzZXJ0X2Vx
dWFscyhyZXNwLmhlYWRlcnMuZ2V0KCJ4LXJlcXVlc3QtY29udGVudC1sZW5ndGgiKSAsIGV4cGVj
dGVkQ29udGVudExlbmd0aCwgIlJlcXVlc3Qgc2hvdWxkIGhhdmUgaGVhZGVyIGNvbnRlbnQtbGVu
Z3RoOiAiICsgZXhwZWN0ZWRDb250ZW50TGVuZ3RoKTsKKyAgICAgIGNoZWNrQ29udGVudFR5cGUo
cmVzcC5oZWFkZXJzLmdldCgieC1yZXF1ZXN0LWNvbnRlbnQtdHlwZSIpLCBib2R5KTsKICAgICB9
KTsKICAgfSwgZGVzYyk7CiB9CkBAIC01MCw2ICs1MCwxMSBAQCBpZiAoc2VsZi5Gb3JtRGF0YSkK
ICAgICByZXF1ZXN0SGVhZGVycygiRmV0Y2ggd2l0aCBQT1NUIHdpdGggRm9ybURhdGEgYm9keSIs
IHVybCwgIlBPU1QiLCBuZXcgRm9ybURhdGEoKSwgbG9jYXRpb24ub3JpZ2luKTsKIHJlcXVlc3RI
ZWFkZXJzKCJGZXRjaCB3aXRoIFBPU1Qgd2l0aCBCbG9iIGJvZHkiLCB1cmwsICJQT1NUIiwgbmV3
IEJsb2IoWyJUZXN0Il0pLCBsb2NhdGlvbi5vcmlnaW4sICI0Iik7CiByZXF1ZXN0SGVhZGVycygi
RmV0Y2ggd2l0aCBQT1NUIHdpdGggQXJyYXlCdWZmZXIgYm9keSIsIHVybCwgIlBPU1QiLCBuZXcg
QXJyYXlCdWZmZXIoNCksIGxvY2F0aW9uLm9yaWdpbiwgIjQiKTsKK3JlcXVlc3RIZWFkZXJzKCJG
ZXRjaCB3aXRoIFBPU1Qgd2l0aCBVaW50OEFycmF5IGJvZHkiLCB1cmwsICJQT1NUIiwgbmV3IFVp
bnQ4QXJyYXkoNCksIGxvY2F0aW9uLm9yaWdpbiwgIjQiKTsKK3JlcXVlc3RIZWFkZXJzKCJGZXRj
aCB3aXRoIFBPU1Qgd2l0aCBJbnQ4QXJyYXkgYm9keSIsIHVybCwgIlBPU1QiLCBuZXcgSW50OEFy
cmF5KDQpLCBsb2NhdGlvbi5vcmlnaW4sICI0Iik7CityZXF1ZXN0SGVhZGVycygiRmV0Y2ggd2l0
aCBQT1NUIHdpdGggRmxvYXQzMkFycmF5IGJvZHkiLCB1cmwsICJQT1NUIiwgbmV3IEZsb2F0MzJB
cnJheSgxKSwgbG9jYXRpb24ub3JpZ2luLCAiNCIpOworcmVxdWVzdEhlYWRlcnMoIkZldGNoIHdp
dGggUE9TVCB3aXRoIEZsb2F0NjRBcnJheSBib2R5IiwgdXJsLCAiUE9TVCIsIG5ldyBGbG9hdDY0
QXJyYXkoMSksIGxvY2F0aW9uLm9yaWdpbiwgIjgiKTsKK3JlcXVlc3RIZWFkZXJzKCJGZXRjaCB3
aXRoIFBPU1Qgd2l0aCBEYXRhVmlldyBib2R5IiwgdXJsLCAiUE9TVCIsIG5ldyBEYXRhVmlldyhu
ZXcgQXJyYXlCdWZmZXIoOCksIDAsIDQpLCBsb2NhdGlvbi5vcmlnaW4sICI0Iik7CiByZXF1ZXN0
SGVhZGVycygiRmV0Y2ggd2l0aCBQT1NUIHdpdGggQmxvYiBib2R5IHdpdGggbWltZSB0eXBlIiwg
dXJsLCAiUE9TVCIsIG5ldyBCbG9iKFsiVGVzdCJdLCB7IHR5cGU6ICJ0ZXh0L21heWJlIiB9KSwg
bG9jYXRpb24ub3JpZ2luLCAiNCIpOwogcmVxdWVzdEhlYWRlcnMoIkZldGNoIHdpdGggQ2hpY2tl
biIsIHVybCwgIkNoaWNrZW4iLCBudWxsLCBsb2NhdGlvbi5vcmlnaW4sIG51bGwpOwogcmVxdWVz
dEhlYWRlcnMoIkZldGNoIHdpdGggQ2hpY2tlbiB3aXRoIGJvZHkiLCB1cmwsICJDaGlja2VuIiwg
IlJlcXVlc3QncyBib2R5IiwgbG9jYXRpb24ub3JpZ2luLCAiMTQiKTsKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZmV0Y2gvYXBpL3JlcXVl
c3QvcmVxdWVzdC1jb25zdW1lLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvZmV0Y2gvYXBpL3JlcXVlc3QvcmVxdWVzdC1jb25zdW1lLWV4
cGVjdGVkLnR4dAppbmRleCA3MWFmYTMxZjhjOTFkMDVkM2VmNjViYzI3NjNkZjQ2MzJjMTgxMTNk
Li5hYjZhNWMzMGNmOGJjNGRhMzBlZGNjZDlmZDJhYjhkYTYzMzhlNDJlIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9yZXF1
ZXN0L3JlcXVlc3QtY29uc3VtZS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkvcmVxdWVzdC9yZXF1ZXN0LWNvbnN1
bWUtZXhwZWN0ZWQudHh0CkBAIC0xLDkgKzEsMjkgQEAKIAotUEFTUyBDb25zdW1lIHJlcXVlc3Qn
cyBib2R5IGFzIHRleHQgCi1QQVNTIENvbnN1bWUgcmVxdWVzdCdzIGJvZHkgYXMgYmxvYiAKLVBB
U1MgQ29uc3VtZSByZXF1ZXN0J3MgYm9keSBhcyBhcnJheUJ1ZmZlciAKLVBBU1MgQ29uc3VtZSBy
ZXF1ZXN0J3MgYm9keSBhcyBqc29uIAotRkFJTCBDb25zdW1lIHJlcXVlc3QncyBib2R5IGFzIGZv
cm1EYXRhIHByb21pc2VfdGVzdDogVW5oYW5kbGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiB1bmRl
ZmluZWQKK1BBU1MgQ29uc3VtZSBTdHJpbmcgcmVxdWVzdCdzIGJvZHkgYXMgdGV4dCAKK1BBU1Mg
Q29uc3VtZSBTdHJpbmcgcmVxdWVzdCdzIGJvZHkgYXMgYmxvYiAKK1BBU1MgQ29uc3VtZSBTdHJp
bmcgcmVxdWVzdCdzIGJvZHkgYXMgYXJyYXlCdWZmZXIgCitQQVNTIENvbnN1bWUgU3RyaW5nIHJl
cXVlc3QncyBib2R5IGFzIEpTT04gCitQQVNTIENvbnN1bWUgQXJyYXlCdWZmZXIgcmVxdWVzdCdz
IGJvZHkgYXMgdGV4dCAKK1BBU1MgQ29uc3VtZSBBcnJheUJ1ZmZlciByZXF1ZXN0J3MgYm9keSBh
cyBibG9iIAorUEFTUyBDb25zdW1lIEFycmF5QnVmZmVyIHJlcXVlc3QncyBib2R5IGFzIGFycmF5
QnVmZmVyIAorUEFTUyBDb25zdW1lIEFycmF5QnVmZmVyIHJlcXVlc3QncyBib2R5IGFzIEpTT04g
CitQQVNTIENvbnN1bWUgVWludDhBcnJheSByZXF1ZXN0J3MgYm9keSBhcyB0ZXh0IAorUEFTUyBD
b25zdW1lIFVpbnQ4QXJyYXkgcmVxdWVzdCdzIGJvZHkgYXMgYmxvYiAKK1BBU1MgQ29uc3VtZSBV
aW50OEFycmF5IHJlcXVlc3QncyBib2R5IGFzIGFycmF5QnVmZmVyIAorUEFTUyBDb25zdW1lIFVp
bnQ4QXJyYXkgcmVxdWVzdCdzIGJvZHkgYXMgSlNPTiAKK1BBU1MgQ29uc3VtZSBJbnQ4QXJyYXkg
cmVxdWVzdCdzIGJvZHkgYXMgdGV4dCAKK1BBU1MgQ29uc3VtZSBJbnQ4QXJyYXkgcmVxdWVzdCdz
IGJvZHkgYXMgYmxvYiAKK1BBU1MgQ29uc3VtZSBJbnQ4QXJyYXkgcmVxdWVzdCdzIGJvZHkgYXMg
YXJyYXlCdWZmZXIgCitQQVNTIENvbnN1bWUgSW50OEFycmF5IHJlcXVlc3QncyBib2R5IGFzIEpT
T04gCitQQVNTIENvbnN1bWUgRmxvYXQzMkFycmF5IHJlcXVlc3QncyBib2R5IGFzIHRleHQgCitQ
QVNTIENvbnN1bWUgRmxvYXQzMkFycmF5IHJlcXVlc3QncyBib2R5IGFzIGJsb2IgCitQQVNTIENv
bnN1bWUgRmxvYXQzMkFycmF5IHJlcXVlc3QncyBib2R5IGFzIGFycmF5QnVmZmVyIAorUEFTUyBD
b25zdW1lIEZsb2F0MzJBcnJheSByZXF1ZXN0J3MgYm9keSBhcyBKU09OIAorUEFTUyBDb25zdW1l
IERhdGFWaWV3IHJlcXVlc3QncyBib2R5IGFzIHRleHQgCitQQVNTIENvbnN1bWUgRGF0YVZpZXcg
cmVxdWVzdCdzIGJvZHkgYXMgYmxvYiAKK1BBU1MgQ29uc3VtZSBEYXRhVmlldyByZXF1ZXN0J3Mg
Ym9keSBhcyBhcnJheUJ1ZmZlciAKK1BBU1MgQ29uc3VtZSBEYXRhVmlldyByZXF1ZXN0J3MgYm9k
eSBhcyBKU09OIAorRkFJTCBDb25zdW1lIEZvcm1EYXRhIHJlcXVlc3QncyBib2R5IGFzIEZvcm1E
YXRhIHByb21pc2VfdGVzdDogVW5oYW5kbGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiB1bmRlZmlu
ZWQKIFBBU1MgQ29uc3VtZSBibG9iIHJlc3BvbnNlJ3MgYm9keSBhcyBibG9iIAogUEFTUyBDb25z
dW1lIGJsb2IgcmVzcG9uc2UncyBib2R5IGFzIHRleHQgCiBQQVNTIENvbnN1bWUgYmxvYiByZXNw
b25zZSdzIGJvZHkgYXMganNvbiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvZmV0Y2gvYXBpL3JlcXVlc3QvcmVxdWVzdC1jb25zdW1lLmh0
bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNoL2Fw
aS9yZXF1ZXN0L3JlcXVlc3QtY29uc3VtZS5odG1sCmluZGV4IDE2ODc2ZTVhNjAzM2JmYTdjZjg5
ZWQxZGUyY2EyMGY2MTU5NmNiYzcuLjlhYzcwNDEyYTgxNWNhYmU1ODgxOWFhN2M3MjcwYmM2MTk0
ZWUyODMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvZmV0Y2gvYXBpL3JlcXVlc3QvcmVxdWVzdC1jb25zdW1lLmh0bWwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkvcmVxdWVzdC9y
ZXF1ZXN0LWNvbnN1bWUuaHRtbApAQCAtMTMsNyArMTMsNyBAQAogICA8Ym9keT4KICAgICA8c2Ny
aXB0PgogICAgIGZ1bmN0aW9uIGNoZWNrQm9keVRleHQocmVxdWVzdCwgZXhwZWN0ZWRCb2R5KSB7
Ci0gICAgICByZXR1cm4gcmVxdWVzdC50ZXh0KCkudGhlbiggZnVuY3Rpb24oYm9keUFzVGV4dCkg
eworICAgICAgcmV0dXJuIHJlcXVlc3QudGV4dCgpLnRoZW4oZnVuY3Rpb24oYm9keUFzVGV4dCkg
ewogICAgICAgICBhc3NlcnRfZXF1YWxzKGJvZHlBc1RleHQsIGV4cGVjdGVkQm9keSwgIlJldHJp
ZXZlIGFuZCB2ZXJpZnkgcmVxdWVzdCdzIGJvZHkiKTsKICAgICAgICAgYXNzZXJ0X3RydWUocmVx
dWVzdC5ib2R5VXNlZCwgImJvZHkgYXMgdGV4dDogYm9keVVzZWQgdHVybmVkIHRydWUiKTsKICAg
ICAgIH0pOwpAQCAtNjMsMjQgKzYzLDY0IEBACiAgICAgIH0pOwogICAgIH0KIAotICAgIGZ1bmN0
aW9uIGNoZWNrUmVxdWVzdEJvZHkoYm9keSwgYm9keVR5cGUsIGNoZWNrRnVuY3Rpb24pIHsKKyAg
ICBmdW5jdGlvbiBjaGVja1JlcXVlc3RCb2R5KGJvZHksIGV4cGVjdGVkLCBib2R5VHlwZSkgewog
ICAgICAgcHJvbWlzZV90ZXN0KGZ1bmN0aW9uKHRlc3QpIHsKICAgICAgICAgdmFyIHJlcXVlc3Qg
PSBuZXcgUmVxdWVzdCgiIiwgeyJtZXRob2QiOiAiUE9TVCIsICJib2R5IjogYm9keSwgImhlYWRl
cnMiOiBbWyJDb250ZW50LVR5cGUiLCAidGV4dC9QTEFJTiJdXSB9KTsKICAgICAgICAgYXNzZXJ0
X2ZhbHNlKHJlcXVlc3QuYm9keVVzZWQsICJib2R5VXNlZCBpcyBmYWxzZSBhdCBpbml0Iik7Ci0g
ICAgICAgIHJldHVybiBjaGVja0Z1bmN0aW9uKHJlcXVlc3QsIGJvZHkpOwotICAgICAgfSwgIkNv
bnN1bWUgcmVxdWVzdCdzIGJvZHkgYXMgIiArIGJvZHlUeXBlKTsKKyAgICAgICAgcmV0dXJuIGNo
ZWNrQm9keVRleHQocmVxdWVzdCwgZXhwZWN0ZWQpOworICAgICAgfSwgIkNvbnN1bWUgIiArIGJv
ZHlUeXBlICArICIgcmVxdWVzdCdzIGJvZHkgYXMgdGV4dCIpOworICAgICAgcHJvbWlzZV90ZXN0
KGZ1bmN0aW9uKHRlc3QpIHsKKyAgICAgICAgdmFyIHJlcXVlc3QgPSBuZXcgUmVxdWVzdCgiIiwg
eyJtZXRob2QiOiAiUE9TVCIsICJib2R5IjogYm9keSB9KTsKKyAgICAgICAgYXNzZXJ0X2ZhbHNl
KHJlcXVlc3QuYm9keVVzZWQsICJib2R5VXNlZCBpcyBmYWxzZSBhdCBpbml0Iik7CisgICAgICAg
IHJldHVybiBjaGVja0JvZHlCbG9iKHJlcXVlc3QsIGV4cGVjdGVkKTsKKyAgICAgIH0sICJDb25z
dW1lICIgKyBib2R5VHlwZSAgKyAiIHJlcXVlc3QncyBib2R5IGFzIGJsb2IiKTsKKyAgICAgIHBy
b21pc2VfdGVzdChmdW5jdGlvbih0ZXN0KSB7CisgICAgICAgIHZhciByZXF1ZXN0ID0gbmV3IFJl
cXVlc3QoIiIsIHsibWV0aG9kIjogIlBPU1QiLCAiYm9keSI6IGJvZHkgfSk7CisgICAgICAgIGFz
c2VydF9mYWxzZShyZXF1ZXN0LmJvZHlVc2VkLCAiYm9keVVzZWQgaXMgZmFsc2UgYXQgaW5pdCIp
OworICAgICAgICByZXR1cm4gY2hlY2tCb2R5QXJyYXlCdWZmZXIocmVxdWVzdCwgZXhwZWN0ZWQp
OworICAgICAgfSwgIkNvbnN1bWUgIiArIGJvZHlUeXBlICArICIgcmVxdWVzdCdzIGJvZHkgYXMg
YXJyYXlCdWZmZXIiKTsKKyAgICAgIHByb21pc2VfdGVzdChmdW5jdGlvbih0ZXN0KSB7CisgICAg
ICAgIHZhciByZXF1ZXN0ID0gbmV3IFJlcXVlc3QoIiIsIHsibWV0aG9kIjogIlBPU1QiLCAiYm9k
eSI6IGJvZHkgfSk7CisgICAgICAgIGFzc2VydF9mYWxzZShyZXF1ZXN0LmJvZHlVc2VkLCAiYm9k
eVVzZWQgaXMgZmFsc2UgYXQgaW5pdCIpOworICAgICAgICByZXR1cm4gY2hlY2tCb2R5SlNPTihy
ZXF1ZXN0LCBleHBlY3RlZCk7CisgICAgICB9LCAiQ29uc3VtZSAiICsgYm9keVR5cGUgICsgIiBy
ZXF1ZXN0J3MgYm9keSBhcyBKU09OIik7CiAgICAgfQogCi0gICAgdmFyIGZvcm1EYXRhID0gbmV3
IEZvcm1EYXRhKCk7Ci0gICAgZm9ybURhdGEuYXBwZW5kKCJuYW1lIiwgInZhbHVlIikKICAgICB2
YXIgdGV4dERhdGEgPSBKU09OLnN0cmluZ2lmeSgiVGhpcyBpcyByZXNwb25zZSdzIGJvZHkiKTsK
ICAgICB2YXIgYmxvYiA9IG5ldyBCbG9iKFt0ZXh0RGF0YV0sIHsgInR5cGUiIDogInRleHQvcGxh
aW4iIH0pOwogCi0gICAgY2hlY2tSZXF1ZXN0Qm9keSh0ZXh0RGF0YSwgInRleHQiLCBjaGVja0Jv
ZHlUZXh0KTsKLSAgICBjaGVja1JlcXVlc3RCb2R5KHRleHREYXRhLCAiYmxvYiIsIGZ1bmN0aW9u
KHJlcXVlc3QsIGJvZHkpIHsgY2hlY2tCb2R5QmxvYihyZXF1ZXN0LCBib2R5LCB0cnVlKTsgfSk7
Ci0gICAgY2hlY2tSZXF1ZXN0Qm9keSh0ZXh0RGF0YSwgImFycmF5QnVmZmVyIiwgY2hlY2tCb2R5
QXJyYXlCdWZmZXIpOwotICAgIGNoZWNrUmVxdWVzdEJvZHkodGV4dERhdGEsICJqc29uIiwgY2hl
Y2tCb2R5SlNPTik7Ci0gICAgY2hlY2tSZXF1ZXN0Qm9keShmb3JtRGF0YSwgImZvcm1EYXRhIiwg
Y2hlY2tCb2R5Rm9ybURhdGEpOworICAgIGNoZWNrUmVxdWVzdEJvZHkodGV4dERhdGEsIHRleHRE
YXRhLCAiU3RyaW5nIik7CisKKyAgICB2YXIgc3RyaW5nID0gIlwiMTIzNDU2XCIiOworICAgIGZ1
bmN0aW9uIGdldEFycmF5QnVmZmVyKCkgeworICAgICAgICB2YXIgYXJyYXlCdWZmZXIgPSBuZXcg
QXJyYXlCdWZmZXIoOCk7CisgICAgICAgIHZhciBpbnQ4QXJyYXkgPSBuZXcgSW50OEFycmF5KGFy
cmF5QnVmZmVyKTsKKyAgICAgICAgZm9yICh2YXIgY3B0ciA9IDA7IGNwdHIgPCA4OyBjcHRyKysp
CisgICAgICAgICAgICBpbnQ4QXJyYXlbY3B0cl0gPSBzdHJpbmcuY2hhckNvZGVBdChjcHRyKTsK
KyAgICAgICAgcmV0dXJuIGFycmF5QnVmZmVyOworICAgIH0KKworICAgIGZ1bmN0aW9uIGdldEFy
cmF5QnVmZmVyV2l0aFplcm9zKCkgeworICAgICAgICB2YXIgYXJyYXlCdWZmZXIgPSBuZXcgQXJy
YXlCdWZmZXIoMTApOworICAgICAgICB2YXIgaW50OEFycmF5ID0gbmV3IEludDhBcnJheShhcnJh
eUJ1ZmZlcik7CisgICAgICAgIGZvciAodmFyIGNwdHIgPSAwOyBjcHRyIDwgODsgY3B0cisrKQor
ICAgICAgICAgICAgaW50OEFycmF5W2NwdHIgKyAxXSA9IHN0cmluZy5jaGFyQ29kZUF0KGNwdHIp
OworICAgICAgICByZXR1cm4gYXJyYXlCdWZmZXI7CisgICAgfQorCisgICAgY2hlY2tSZXF1ZXN0
Qm9keShnZXRBcnJheUJ1ZmZlcigpLCBzdHJpbmcsICJBcnJheUJ1ZmZlciIpOworICAgIGNoZWNr
UmVxdWVzdEJvZHkobmV3IFVpbnQ4QXJyYXkoZ2V0QXJyYXlCdWZmZXIoKSksIHN0cmluZywgIlVp
bnQ4QXJyYXkiKTsKKyAgICBjaGVja1JlcXVlc3RCb2R5KG5ldyBJbnQ4QXJyYXkoZ2V0QXJyYXlC
dWZmZXJXaXRoWmVyb3MoKSwgMSwgOCksIHN0cmluZywgIkludDhBcnJheSIpOworICAgIGNoZWNr
UmVxdWVzdEJvZHkobmV3IEZsb2F0MzJBcnJheShnZXRBcnJheUJ1ZmZlcigpKSwgc3RyaW5nLCAi
RmxvYXQzMkFycmF5Iik7CisgICAgY2hlY2tSZXF1ZXN0Qm9keShuZXcgRGF0YVZpZXcoZ2V0QXJy
YXlCdWZmZXJXaXRoWmVyb3MoKSwgMSwgOCksIHN0cmluZywgIkRhdGFWaWV3Iik7CisKKyAgICBw
cm9taXNlX3Rlc3QoZnVuY3Rpb24odGVzdCkgeworICAgICAgdmFyIGZvcm1EYXRhID0gbmV3IEZv
cm1EYXRhKCk7CisgICAgICBmb3JtRGF0YS5hcHBlbmQoIm5hbWUiLCAidmFsdWUiKQorICAgICAg
dmFyIHJlcXVlc3QgPSBuZXcgUmVxdWVzdCgiIiwgeyJtZXRob2QiOiAiUE9TVCIsICJib2R5Ijog
Zm9ybURhdGEgfSk7CisgICAgICBhc3NlcnRfZmFsc2UocmVxdWVzdC5ib2R5VXNlZCwgImJvZHlV
c2VkIGlzIGZhbHNlIGF0IGluaXQiKTsKKyAgICAgIHJldHVybiBjaGVja0JvZHlGb3JtRGF0YShy
ZXF1ZXN0LCBmb3JtRGF0YSk7CisgICAgfSwgIkNvbnN1bWUgRm9ybURhdGEgcmVxdWVzdCdzIGJv
ZHkgYXMgRm9ybURhdGEiKTsKIAogICAgIGZ1bmN0aW9uIGNoZWNrQmxvYlJlc3BvbnNlQm9keShi
bG9iQm9keSwgYmxvYkRhdGEsIGJvZHlUeXBlLCBjaGVja0Z1bmN0aW9uKSB7CiAgICAgICBwcm9t
aXNlX3Rlc3QoZnVuY3Rpb24odGVzdCkgewpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkvcmVzcG9uc2UvcmVzcG9uc2UtY29u
c3VtZS1zdHJlYW0tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkvcmVzcG9uc2UvcmVzcG9uc2UtY29uc3VtZS1zdHJlYW0t
ZXhwZWN0ZWQudHh0CmluZGV4IDAxYTNiZDAwYjEwYzdkNTVmNjY5NTBhMzIyMDEyMzUyOGZhOGU2
OWUuLjUwMTVkNmNmYmNiOGYwNTZjOTk4MzA4MmMwMGE4NWNhYzViMjZjM2IgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZmV0Y2gvYXBpL3Jl
c3BvbnNlL3Jlc3BvbnNlLWNvbnN1bWUtc3RyZWFtLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9yZXNwb25zZS9y
ZXNwb25zZS1jb25zdW1lLXN0cmVhbS1leHBlY3RlZC50eHQKQEAgLTMsNiArMyw3IEBAIFBBU1Mg
UmVhZCBlbXB0eSB0ZXh0IHJlc3BvbnNlJ3MgYm9keSBhcyByZWFkYWJsZVN0cmVhbQogUEFTUyBS
ZWFkIGVtcHR5IGJsb2IgcmVzcG9uc2UncyBib2R5IGFzIHJlYWRhYmxlU3RyZWFtIAogUEFTUyBS
ZWFkIGJsb2IgcmVzcG9uc2UncyBib2R5IGFzIHJlYWRhYmxlU3RyZWFtIAogUEFTUyBSZWFkIHRl
eHQgcmVzcG9uc2UncyBib2R5IGFzIHJlYWRhYmxlU3RyZWFtIAorUEFTUyBSZWFkIGFycmF5IGJ1
ZmZlciByZXNwb25zZSdzIGJvZHkgYXMgcmVhZGFibGVTdHJlYW0gCiBGQUlMIFJlYWQgZm9ybSBk
YXRhIHJlc3BvbnNlJ3MgYm9keSBhcyByZWFkYWJsZVN0cmVhbSBwcm9taXNlX3Rlc3Q6IFVuaGFu
ZGxlZCByZWplY3Rpb24gd2l0aCB2YWx1ZTogIm5vdCBpbXBsZW1lbnRlZCIKIFBBU1MgR2V0dGlu
ZyBhbiBlcnJvciBSZXNwb25zZSBzdHJlYW0gCiBQQVNTIEdldHRpbmcgYSByZWRpcmVjdCBSZXNw
b25zZSBzdHJlYW0gCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9yZXNwb25zZS9yZXNwb25zZS1jb25zdW1lLXN0cmVhbS5o
dG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9h
cGkvcmVzcG9uc2UvcmVzcG9uc2UtY29uc3VtZS1zdHJlYW0uaHRtbAppbmRleCBlZTMzMmUxNzgz
Y2IyODk1YWY1NTdjYmU5YTE0ZGU4NzUxYjQ3NTM2Li5mOTYxOTJmYTk4MGE5N2FiNmY0MGYyZDNi
OTVlZjY2MTVmMDBjZjcxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9yZXNwb25zZS9yZXNwb25zZS1jb25zdW1lLXN0cmVh
bS5odG1sCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
ZmV0Y2gvYXBpL3Jlc3BvbnNlL3Jlc3BvbnNlLWNvbnN1bWUtc3RyZWFtLmh0bWwKQEAgLTQwLDYg
KzQwLDE1IEBAIHByb21pc2VfdGVzdChmdW5jdGlvbih0ZXN0KSB7CiB9LCAiUmVhZCB0ZXh0IHJl
c3BvbnNlJ3MgYm9keSBhcyByZWFkYWJsZVN0cmVhbSIpOwogCiBwcm9taXNlX3Rlc3QoZnVuY3Rp
b24odGVzdCkgeworICAgIHZhciBhcnJheUJ1ZmZlciA9IG5ldyBBcnJheUJ1ZmZlcih0ZXh0RGF0
YS5sZW5ndGgpOworICAgIHZhciBpbnQ4QXJyYXkgPSBuZXcgSW50OEFycmF5KGFycmF5QnVmZmVy
KTsKKyAgICBmb3IgKHZhciBjcHRyID0gMDsgY3B0ciA8IHRleHREYXRhLmxlbmd0aDsgY3B0cisr
KQorICAgICAgICBpbnQ4QXJyYXlbY3B0cl0gPSB0ZXh0RGF0YS5jaGFyQ29kZUF0KGNwdHIpOwor
CisgICAgcmV0dXJuIHZhbGlkYXRlU3RyZWFtRnJvbVN0cmluZyhuZXcgUmVzcG9uc2UoYXJyYXlC
dWZmZXIpLmJvZHkuZ2V0UmVhZGVyKCksIHRleHREYXRhKTsKK30sICJSZWFkIGFycmF5IGJ1ZmZl
ciByZXNwb25zZSdzIGJvZHkgYXMgcmVhZGFibGVTdHJlYW0iKTsKKworcHJvbWlzZV90ZXN0KGZ1
bmN0aW9uKHRlc3QpIHsKICAgICB2YXIgcmVzcG9uc2UgPSBuZXcgUmVzcG9uc2UoZm9ybURhdGEp
OwogICAgIHJldHVybiB2YWxpZGF0ZVN0cmVhbUZyb21TdHJpbmcocmVzcG9uc2UuYm9keS5nZXRS
ZWFkZXIoKSwgIm5hbWU9dmFsdWUiKTsKIH0sICJSZWFkIGZvcm0gZGF0YSByZXNwb25zZSdzIGJv
ZHkgYXMgcmVhZGFibGVTdHJlYW0iKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>