<?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>28460</bug_id>
          
          <creation_ts>2009-08-19 09:54:08 -0700</creation_ts>
          <short_desc>Need to update JS bindings and IDL files to support multiple message ports in postMessage()</short_desc>
          <delta_ts>2009-09-03 11:37:34 -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 JavaScript</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>26902</dependson>
          <blocked>28839</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Andrew Wilson">atwilson</reporter>
          <assigned_to name="Andrew Wilson">atwilson</assigned_to>
          <cc>levin</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>141502</commentid>
    <comment_count>0</comment_count>
    <who name="Andrew Wilson">atwilson</who>
    <bug_when>2009-08-19 09:54:08 -0700</bug_when>
    <thetext>We&apos;re updating the internal WebCore APIs to support passing multiple MessagePorts to postMessage() as part of bug 26902.

Once that&apos;s in, we need to update the JS bindings and IDL files to reflect the new APIs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>143511</commentid>
    <comment_count>1</comment_count>
      <attachid>38775</attachid>
    <who name="Andrew Wilson">atwilson</who>
    <bug_when>2009-08-29 09:12:00 -0700</bug_when>
    <thetext>Created attachment 38775
proposed patch

This is the patch for the IDL files and JS bindings - I&apos;m making another patch for the V8 bindings.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>143977</commentid>
    <comment_count>2</comment_count>
      <attachid>38775</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2009-09-01 12:26:46 -0700</bug_when>
    <thetext>Comment on attachment 38775
proposed patch

r+ from me with some minor changes except for WebCore/bindings/js/*.

It would be great if you got someone to look over those changes. I tried but my naive eyes probably missed things.  If this totally clogs up, I&apos;ll be willing to give this one last on those as well as I can to finish this off.

&gt; diff --git a/LayoutTests/fast/events/message-port-multi.html b/LayoutTests/fast/events/message-port-multi.html
&gt; \ No newline at end of file

Please fix.

&gt;
&gt; diff --git a/LayoutTests/fast/workers/resources/worker-context-multi-port.js b/LayoutTests/fast/workers/resources/worker-context-multi-port.js

&gt; +    } else if (event.data.indexOf(&quot;PASS&quot;) &gt;= 0)

Why is this &gt;= 0 instead of == 0?

&gt; +        testPassed(event.data.substring(4));
&gt; +    else
&gt; +        testFailed(event.data.substring(4));

Why is this substring(4) when the event.data wasn&apos;t &quot;PASS&quot;?  
I think you are expecting FAIL.  It may be good to check that it is fail and if not print the whole message.


&gt; diff --git a/LayoutTests/fast/workers/resources/worker-multi-port.js b/LayoutTests/fast/workers/resources/worker-multi-port.js

&gt; +    else if (event.data.indexOf(&quot;PASS&quot;) &gt;= 0)
&gt; +        testPassed(event.data.substring(4));

Why is this &gt;= 0 instead of == 0?

&gt; +    else
&gt; +        testFailed(event.data.substring(4));

Why is this substring(4) when the event.data wasn&apos;t &quot;PASS&quot;?  
I think you are expecting FAIL.  It may be good to check that it is fail and if not print the whole message.

&gt; diff --git a/LayoutTests/fast/workers/worker-context-multi-port.html b/LayoutTests/fast/workers/worker-context-multi-port.html
&gt; \ No newline at end of file

Please fix.


&gt; diff --git a/LayoutTests/fast/workers/worker-multi-port.html b/LayoutTests/fast/workers/worker-multi-port.html
&gt; \ No newline at end of file

Please fix.


&gt; diff --git a/WebCore/bindings/js/JSMessageEventCustom.cpp b/WebCore/bindings/js/JSMessageEventCustom.cpp
&gt; +
&gt; +    MessageEvent* impl = static_cast&lt;MessageEvent*&gt;(this-&gt;impl());

Prefer whole words: &quot;impl&quot;  Perhaps &quot;messageEvent&quot; or just &quot;event&quot;.


&gt; diff --git a/WebCore/bindings/js/JSMessagePortCustom.cpp b/WebCore/bindings/js/JSMessagePortCustom.cpp
&gt; +JSC::JSValue JSMessagePort::postMessage(JSC::ExecState* exec, const JSC::ArgList&amp; args)
&gt; +{
&gt; +    const UString&amp; message = args.at(0).toString(exec);
&gt; +    MessagePortArray portArray;
&gt; +    fillMessagePortArray(exec, args.at(1), portArray);
&gt; +    if (exec-&gt;hadException())
&gt; +        return jsUndefined();
&gt; +
&gt; +    ExceptionCode ec = 0;
&gt; +    impl()-&gt;postMessage(message, &amp;portArray, ec);
&gt; +    setDOMException(exec, ec);
&gt; +    return jsUndefined();
&gt; +}

I think I saw two copies of this code.  Is it possible to consolidate them?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>144040</commentid>
    <comment_count>3</comment_count>
      <attachid>38896</attachid>
    <who name="Andrew Wilson">atwilson</who>
    <bug_when>2009-09-01 16:35:37 -0700</bug_when>
    <thetext>Created attachment 38896
Patch addressing Levin&apos;s comments

Sam, can you take a look at the JS bindings changes? dave_levin already looked at the rest of the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>144552</commentid>
    <comment_count>4</comment_count>
    <who name="Andrew Wilson">atwilson</who>
    <bug_when>2009-09-03 11:37:34 -0700</bug_when>
    <thetext>Committed as r48025.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>38775</attachid>
            <date>2009-08-29 09:12:00 -0700</date>
            <delta_ts>2009-09-01 16:35:37 -0700</delta_ts>
            <desc>proposed patch</desc>
            <filename>x</filename>
            <type>text/plain</type>
            <size>81832</size>
            <attacher name="Andrew Wilson">atwilson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA3Njk3MzMxLi5lY2M1NTcwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzMgQEAKKzIwMDktMDgt
MjkgIERyZXcgV2lsc29uICA8YXR3aWxzb25AZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBOZWVkIHRvIHVwZGF0ZSBKUyBiaW5kaW5n
cyBhbmQgSURMIGZpbGVzIHRvIHN1cHBvcnQgbXVsdGlwbGUgbWVzc2FnZSBwb3J0cyBpbiBwb3N0
TWVzc2FnZSgpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yODQ2MAorCisgICAgICAgIFVwZGF0ZWQgbGF5b3V0IHRlc3RzIHRvIG1hdGNoIG5ldyBwb3N0
TWVzc2FnZSgpIGFuZCBNZXNzYWdlRXZlbnQgQVBJcy4KKworICAgICAgICBBZGRlZCBuZXcgbGF5
b3V0IHRlc3RzIHRvIHRlc3Qgc2VuZGluZy9yZWNlaXZpbmcgbXVsdGlwbGUgcG9ydHMuCisKKyAg
ICAgICAgKiBmYXN0L2RvbS9XaW5kb3cvd2luZG93LXBvc3RtZXNzYWdlLWFyZ3MtZXhwZWN0ZWQu
dHh0OgorICAgICAgICAqIGZhc3QvZG9tL1dpbmRvdy93aW5kb3ctcG9zdG1lc3NhZ2UtYXJncy5o
dG1sOgorICAgICAgICBVcGRhdGVkIHRvIG1hdGNoIG5ldyBwb3N0TWVzc2FnZSBBUEkuCisgICAg
ICAgICogZmFzdC9ldmVudHMvaW5pdC1ldmVudHMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZh
c3QvZXZlbnRzL21lc3NhZ2UtY2hhbm5lbC1nYy00Lmh0bWw6CisgICAgICAgIFVwZGF0ZWQgdG8g
bWF0Y2ggbmV3IHBvc3RNZXNzYWdlIEFQSS4KKyAgICAgICAgKiBmYXN0L2V2ZW50cy9tZXNzYWdl
LXBvcnQtY2xvbmUuaHRtbDoKKyAgICAgICAgVXBkYXRlZCB0byBtYXRjaCBuZXcgcG9zdE1lc3Nh
Z2UgQVBJLgorICAgICAgICAqIGZhc3QvZXZlbnRzL21lc3NhZ2UtcG9ydC1kZWxldGVkLWRvY3Vt
ZW50Lmh0bWw6CisgICAgICAgIFVwZGF0ZWQgdG8gbWF0Y2ggbmV3IHBvc3RNZXNzYWdlIEFQSS4K
KyAgICAgICAgKiBmYXN0L2V2ZW50cy9tZXNzYWdlLXBvcnQtZGVsZXRlZC1mcmFtZS5odG1sOgor
ICAgICAgICBVcGRhdGVkIHRvIG1hdGNoIG5ldyBwb3N0TWVzc2FnZSBBUEkuCisgICAgICAgICog
ZmFzdC9ldmVudHMvbWVzc2FnZS1wb3J0LWluYWN0aXZlLWRvY3VtZW50Lmh0bWw6CisgICAgICAg
IFVwZGF0ZWQgdG8gbWF0Y2ggbmV3IHBvc3RNZXNzYWdlIEFQSS4KKyAgICAgICAgKiBmYXN0L2V2
ZW50cy9tZXNzYWdlLXBvcnQtbXVsdGktZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBm
YXN0L2V2ZW50cy9tZXNzYWdlLXBvcnQtbXVsdGkuaHRtbDogQWRkZWQuCisgICAgICAgIEFkZGVk
IHRlc3RzIGZvciB2YXJpb3VzIGNhc2VzIG9mIHNlbmRpbmcgbXVsdGlwbGUgcG9ydHMuCisgICAg
ICAgICogZmFzdC9ldmVudHMvbWVzc2FnZS1wb3J0Lmh0bWw6CisgICAgICAgIFVwZGF0ZWQgdG8g
bWF0Y2ggbmV3IHBvc3RNZXNzYWdlIEFQSS4KKyAgICAgICAgKiBmYXN0L2V2ZW50cy9yZXNvdXJj
ZXMvaW5pdC1ldmVudHMuanM6CisgICAgICAgIEFkZGVkIHRlc3RzIGZvciBzZW5kaW5nIHBvcnRz
IHRvIGluaXRNZXNzYWdlRXZlbnQoKQorICAgICAgICAqIGZhc3QvZXZlbnRzL3Jlc291cmNlcy9t
ZXNzYWdlLXBvcnQtaWZyYW1lLmh0bWw6CisgICAgICAgICogZmFzdC9ldmVudHMvcmVzb3VyY2Vz
L21lc3NhZ2UtcG9ydC1tdWx0aS5qczogQWRkZWQuCisgICAgICAgIEFkZGVkIHRlc3RzIGZvciB2
YXJpb3VzIGNhc2VzIG9mIHNlbmRpbmcgbXVsdGlwbGUgcG9ydHMuCisgICAgICAgICogZmFzdC93
b3JrZXJzL3Jlc291cmNlcy9zaGFyZWQtd29ya2VyLWNvbW1vbi5qczoKKyAgICAgICAgKG9uY29u
bmVjdCk6CisgICAgICAgIFVwZGF0ZWQgdG8gcmVmbGVjdCBuZXcgTWVzc2FnZUV2ZW50IEFQSS4K
KyAgICAgICAgKiBmYXN0L3dvcmtlcnMvcmVzb3VyY2VzL3NoYXJlZC13b3JrZXItc2NyaXB0LWVy
cm9yLmpzOgorICAgICAgICAob25jb25uZWN0KToKKyAgICAgICAgVXBkYXRlZCB0byByZWZsZWN0
IG5ldyBNZXNzYWdlRXZlbnQgQVBJLgorICAgICAgICAqIGZhc3Qvd29ya2Vycy9yZXNvdXJjZXMv
d29ya2VyLWNsb25lcG9ydC5qczoKKyAgICAgICAgKG9ubWVzc2FnZSk6CisgICAgICAgIFVwZGF0
ZWQgdG8gcmVmbGVjdCBuZXcgTWVzc2FnZUV2ZW50IEFQSS4KKyAgICAgICAgKiBmYXN0L3dvcmtl
cnMvcmVzb3VyY2VzL3dvcmtlci1jb250ZXh0LW11bHRpLXBvcnQuanM6IEFkZGVkLgorICAgICAg
ICAod29ya2VyLm9ubWVzc2FnZSk6CisgICAgICAgIEFkZGVkIHRlc3RzIGZvciB2YXJpb3VzIGNh
c2VzIG9mIHNlbmRpbmcgbXVsdGlwbGUgcG9ydHMuCisgICAgICAgICogZmFzdC93b3JrZXJzL3Jl
c291cmNlcy93b3JrZXItY29udGV4dC10aHJlYWQtbXVsdGktcG9ydC5qczogQWRkZWQuCisgICAg
ICAgIEFkZGVkIHRlc3RzIGZvciB2YXJpb3VzIGNhc2VzIG9mIHNlbmRpbmcgbXVsdGlwbGUgcG9y
dHMuCisgICAgICAgICogZmFzdC93b3JrZXJzL3Jlc291cmNlcy93b3JrZXItbWVzc2FnZXBvcnQu
anM6CisgICAgICAgIChvbm1lc3NhZ2UpOgorICAgICAgICBVcGRhdGVkIHRvIHJlZmxlY3QgbmV3
IE1lc3NhZ2VFdmVudCBBUEkuCisgICAgICAgICogZmFzdC93b3JrZXJzL3Jlc291cmNlcy93b3Jr
ZXItbXVsdGktcG9ydC5qczogQWRkZWQuCisgICAgICAgICh3b3JrZXIub25tZXNzYWdlKToKKyAg
ICAgICAgQWRkZWQgdGVzdHMgZm9yIHZhcmlvdXMgY2FzZXMgb2Ygc2VuZGluZyBtdWx0aXBsZSBw
b3J0cy4KKyAgICAgICAgKiBmYXN0L3dvcmtlcnMvcmVzb3VyY2VzL3dvcmtlci10aHJlYWQtbXVs
dGktcG9ydC5qczogQWRkZWQuCisgICAgICAgIChvbm1lc3NhZ2UpOgorICAgICAgICBXb3JrZXIt
dGhyZWFkIHNpZGUgb2YgbXVsdGlwbGUgcG9ydCBsYXlvdXQgdGVzdC4KKyAgICAgICAgKHRlc3RQ
YXNzZWQpOgorICAgICAgICAodGVzdEZhaWxlZCk6CisgICAgICAgICogZmFzdC93b3JrZXJzL3dv
cmtlci1jbG9uZXBvcnQuaHRtbDoKKyAgICAgICAgKiBmYXN0L3dvcmtlcnMvd29ya2VyLWNvbnRl
eHQtbXVsdGktcG9ydC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3Qvd29ya2Vy
cy93b3JrZXItY29udGV4dC1tdWx0aS1wb3J0Lmh0bWw6IEFkZGVkLgorICAgICAgICBBZGRlZCB0
ZXN0cyBmb3Igc2VuZGluZyBtdWx0aXBsZSBwb3J0cyBmcm9tIHRoZSB3b3JrZXIgdGhyZWFkLgor
ICAgICAgICAqIGZhc3Qvd29ya2Vycy93b3JrZXItbWVzc2FnZXBvcnQtZXhwZWN0ZWQudHh0Ogor
ICAgICAgICAqIGZhc3Qvd29ya2Vycy93b3JrZXItbWVzc2FnZXBvcnQtZ2MuaHRtbDoKKyAgICAg
ICAgKiBmYXN0L3dvcmtlcnMvd29ya2VyLW1lc3NhZ2Vwb3J0Lmh0bWw6CisgICAgICAgICogZmFz
dC93b3JrZXJzL3dvcmtlci1tdWx0aS1wb3J0LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAg
ICogZmFzdC93b3JrZXJzL3dvcmtlci1tdWx0aS1wb3J0Lmh0bWw6IEFkZGVkLgorCiAyMDA5LTA4
LTI4ICBKYW4gTWljaGFlbCBBbG9uem8gIDxqbWFsb256b0B3ZWJraXQub3JnPgogCiAgICAgICAg
IFJldmlld2VkIGJ5IEd1c3Rhdm8gTm9yb25oYS4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zh
c3QvZG9tL1dpbmRvdy93aW5kb3ctcG9zdG1lc3NhZ2UtYXJncy1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9mYXN0L2RvbS9XaW5kb3cvd2luZG93LXBvc3RtZXNzYWdlLWFyZ3MtZXhwZWN0ZWQu
dHh0CmluZGV4IDgyYzVjMzMuLjk3ZmY5ZGQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3Qv
ZG9tL1dpbmRvdy93aW5kb3ctcG9zdG1lc3NhZ2UtYXJncy1leHBlY3RlZC50eHQKKysrIGIvTGF5
b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L3dpbmRvdy1wb3N0bWVzc2FnZS1hcmdzLWV4cGVjdGVk
LnR4dApAQCAtMSwxMiArMSwxNiBAQAotVGVzdCB0aGF0IHRoZSBzZWNvbmQgYXJndW1lbnQgb2Yg
d2luZG93LnBvc3RNZXNzYWdlIGlzIGlnbm9yZWQgaWYgaXQgaXMgbm90IGEgbWVzc2FnZSBwb3J0
LiBZb3Ugc2hvdWxkIHNlZSBtZXNzYWdlcyAnMScgdGhyb3VnaCAnNicsIGZvbGxvd2VkIGJ5ICdk
b25lJywgcmVjZWl2ZWQgYmVsb3cuCitUZXN0IHRoYXQgdGhlIHNlY29uZCBhcmd1bWVudCBvZiB3
aW5kb3cucG9zdE1lc3NhZ2UgaXMgaWdub3JlZCBvciB0cmlnZ2VycyBhbiBlcnJvciBpZiBpdCBp
cyBub3QgYSBtZXNzYWdlIHBvcnQuIFlvdSBzaG91bGQgc2VlIFBBU1MgbWVzc2FnZSAnMScgdGhy
b3VnaCAnNycsIGZvbGxvd2VkIGJ5ICdkb25lJywgd2l0aCBtZXNzYWdlcyA0LTcgcmVjZWl2ZWQg
YmVsb3cuCiAKLU5vdGUgdGhhdCB0aGUgSFRNTDUgc3BlYyBpbXBsaWVzIHRoYXQgYW4gZXhjZXB0
aW9uIHNob3VsZCBiZSByYWlzZWQgaW5zdGVhZCwgc28gdGhpcyB0ZXN0IHdpbGwgbmVlZCB1cGRh
dGluZyBvbmNlIHRoYXQgbmV3IGJlaGF2aW9yIGlzIGltcGxlbWVudGVkLgotCi1SZWNlaXZlZCBt
ZXNzYWdlICcxJwotUmVjZWl2ZWQgbWVzc2FnZSAnMicKLVJlY2VpdmVkIG1lc3NhZ2UgJzMnCitQ
QVNTOiBQb3N0aW5nIG1lc3NhZ2UgKCcxJywgMSk6IHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6
IFR5cGUgZXJyb3IKK1BBU1M6IFBvc3RpbmcgbWVzc2FnZSAoJzInLCApOiB0aHJldyBleGNlcHRp
b24gVHlwZUVycm9yOiBUeXBlIGVycm9yCitQQVNTOiBQb3N0aW5nIG1lc3NhZ2UgKCczJywgW29i
amVjdCBPYmplY3RdKTogdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJvcgorUEFT
UzogUG9zdGluZyBtZXNzYWdlICgnNCcsIFtvYmplY3QgRE9NV2luZG93XSkgZGlkIG5vdCB0aHJv
dyBhbiBleGNlcHRpb24KK1BBU1M6IFBvc3RpbmcgbWVzc2FnZSAoJzUnLCBudWxsKSBkaWQgbm90
IHRocm93IGFuIGV4Y2VwdGlvbgorUEFTUzogUG9zdGluZyBtZXNzYWdlICgnNicsIHVuZGVmaW5l
ZCkgZGlkIG5vdCB0aHJvdyBhbiBleGNlcHRpb24KK1BBU1M6IFBvc3RpbmcgbWVzc2FnZSAoJzcn
LCBbb2JqZWN0IE1lc3NhZ2VQb3J0XSxbb2JqZWN0IE1lc3NhZ2VQb3J0XSkgZGlkIG5vdCB0aHJv
dyBhbiBleGNlcHRpb24KK1BBU1M6IFBvc3RpbmcgbWVzc2FnZSAoJ2RvbmUnLCAqKSBkaWQgbm90
IHRocm93IGFuIGV4Y2VwdGlvbgogUmVjZWl2ZWQgbWVzc2FnZSAnNCcKIFJlY2VpdmVkIG1lc3Nh
Z2UgJzUnCiBSZWNlaXZlZCBtZXNzYWdlICc2JworUmVjZWl2ZWQgbWVzc2FnZSAnNycgd2l0aCAy
IHBvcnRzLgogUmVjZWl2ZWQgbWVzc2FnZSAnZG9uZScKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZmFzdC9kb20vV2luZG93L3dpbmRvdy1wb3N0bWVzc2FnZS1hcmdzLmh0bWwgYi9MYXlvdXRU
ZXN0cy9mYXN0L2RvbS9XaW5kb3cvd2luZG93LXBvc3RtZXNzYWdlLWFyZ3MuaHRtbAppbmRleCBi
MmFkYjZmLi41NDk3NTc2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9XaW5kb3cv
d2luZG93LXBvc3RtZXNzYWdlLWFyZ3MuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9X
aW5kb3cvd2luZG93LXBvc3RtZXNzYWdlLWFyZ3MuaHRtbApAQCAtMTIsNyArMTIsMTAgQEAgaWYg
KHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewogdmFyIGNvbnNvbGUgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgiY29uc29sZSIpOwogCiBmdW5jdGlvbiBvbm1lc3NhZ2UoZXZ0KSB7Ci0g
ICAgY29uc29sZS5pbm5lckhUTUwgKz0gIlJlY2VpdmVkIG1lc3NhZ2UgJyIgKyBldnQuZGF0YSAr
ICInPGJyPiI7CisgICAgaWYgKGV2dC5wb3J0cykKKyAgICAgICAgY29uc29sZS5pbm5lckhUTUwg
Kz0gIlJlY2VpdmVkIG1lc3NhZ2UgJyIgKyBldnQuZGF0YSArICInIHdpdGggIiArIGV2dC5wb3J0
cy5sZW5ndGggKyAiIHBvcnRzLjxicj4iOworICAgIGVsc2UKKyAgICAgICAgY29uc29sZS5pbm5l
ckhUTUwgKz0gIlJlY2VpdmVkIG1lc3NhZ2UgJyIgKyBldnQuZGF0YSArICInPGJyPiI7CiAKICAg
ICBpZiAoZXZ0LmRhdGEgPT0gJ2RvbmUnICYmIHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikK
ICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOwpAQCAtMjAsMjUgKzIz
LDI4IEBAIGZ1bmN0aW9uIG9ubWVzc2FnZShldnQpIHsKIAogd2luZG93LmFkZEV2ZW50TGlzdGVu
ZXIoJ21lc3NhZ2UnLCBvbm1lc3NhZ2UsIGZhbHNlKTsKIAotZnVuY3Rpb24gdHJ5UG9zdE1lc3Nh
Z2UoZmlyc3QsIHNlY29uZCwgdGhpcmQpIHsKK2Z1bmN0aW9uIHRyeVBvc3RNZXNzYWdlKGZpcnN0
LCBzZWNvbmQsIHRoaXJkLCBzaG91bGRGYWlsKSB7CiAgICAgdHJ5IHsKICAgICAgICAgaWYgKCF0
aGlyZCkKICAgICAgICAgICAgIHdpbmRvdy5wb3N0TWVzc2FnZShmaXJzdCwgc2Vjb25kKTsKICAg
ICAgICAgZWxzZQogICAgICAgICAgICAgd2luZG93LnBvc3RNZXNzYWdlKGZpcnN0LCBzZWNvbmQs
IHRoaXJkKTsKLSAgICB9IGNhdGNoIChlKSB7Ci0gICAgICAgICBjb25zb2xlLmlubmVySFRNTCAr
PSAiRkFJTDogUG9zdGluZyBtZXNzYWdlICgiICsgZmlyc3QgKyAiLCAiICsgc2Vjb25kICsgIik6
IHRocmV3IGV4Y2VwdGlvbiAiICsgZSArICI8YnI+IjsKLSAgICB9CisgICAgICAgIGNvbnNvbGUu
aW5uZXJIVE1MICs9IChzaG91bGRGYWlsID8gIkZBSUwiIDogIlBBU1MiKSArICI6IFBvc3Rpbmcg
bWVzc2FnZSAoJyIgKyBmaXJzdCArICInLCAiICsgc2Vjb25kICsgIikgZGlkIG5vdCB0aHJvdyBh
biBleGNlcHRpb248YnI+IjsKKyAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgY29uc29sZS5pbm5l
ckhUTUwgKz0gKHNob3VsZEZhaWwgPyAiUEFTUyIgOiAiRkFJTCIpICsgIjogUG9zdGluZyBtZXNz
YWdlICgnIiArIGZpcnN0ICsgIicsICIgKyBzZWNvbmQgKyAiKTogdGhyZXcgZXhjZXB0aW9uICIg
KyBlICsgIjxicj4iOworICAgfQogfQogCi1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZGVzY3Jp
cHRpb24iKS5pbm5lckhUTUwgPSAiVGVzdCB0aGF0IHRoZSBzZWNvbmQgYXJndW1lbnQgb2Ygd2lu
ZG93LnBvc3RNZXNzYWdlIGlzIGlnbm9yZWQgaWYgaXQgaXMgbm90IGEgbWVzc2FnZSBwb3J0LiBZ
b3Ugc2hvdWxkIHNlZSBtZXNzYWdlcyAnMScgdGhyb3VnaCAnNicsIGZvbGxvd2VkIGJ5ICdkb25l
JywgcmVjZWl2ZWQgYmVsb3cuPGJyPjxicj5Ob3RlIHRoYXQgdGhlIEhUTUw1IHNwZWMgaW1wbGll
cyB0aGF0IGFuIGV4Y2VwdGlvbiBzaG91bGQgYmUgcmFpc2VkIGluc3RlYWQsIHNvIHRoaXMgdGVz
dCB3aWxsIG5lZWQgdXBkYXRpbmcgb25jZSB0aGF0IG5ldyBiZWhhdmlvciBpcyBpbXBsZW1lbnRl
ZC48YnI+PGJyPiI7Citkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZGVzY3JpcHRpb24iKS5pbm5l
ckhUTUwgPSAiVGVzdCB0aGF0IHRoZSBzZWNvbmQgYXJndW1lbnQgb2Ygd2luZG93LnBvc3RNZXNz
YWdlIGlzIGlnbm9yZWQgb3IgdHJpZ2dlcnMgYW4gZXJyb3IgaWYgaXQgaXMgbm90IGEgbWVzc2Fn
ZSBwb3J0LiBZb3Ugc2hvdWxkIHNlZSBQQVNTIG1lc3NhZ2UgJzEnIHRocm91Z2ggJzcnLCBmb2xs
b3dlZCBieSAnZG9uZScsIHdpdGggbWVzc2FnZXMgNC03IHJlY2VpdmVkIGJlbG93Ljxicj48YnI+
IjsKIAotdHJ5UG9zdE1lc3NhZ2UoJzEnLCAxLCAnKicpOwotdHJ5UG9zdE1lc3NhZ2UoJzInLCAi
IiwgJyonKTsKLXRyeVBvc3RNZXNzYWdlKCczJywgd2luZG93LCAnKicpOwotdHJ5UG9zdE1lc3Nh
Z2UoJzQnLCB7IHg6IDEgfSwgJyonKTsKK3ZhciBjaGFubmVsID0gbmV3IE1lc3NhZ2VDaGFubmVs
OwordHJ5UG9zdE1lc3NhZ2UoJzEnLCAxLCAnKicsIHRydWUpOwordHJ5UG9zdE1lc3NhZ2UoJzIn
LCAiIiwgJyonLCB0cnVlKTsKK3RyeVBvc3RNZXNzYWdlKCczJywgeyB4OiAxIH0sICcqJywgdHJ1
ZSk7Cit0cnlQb3N0TWVzc2FnZSgnNCcsIHdpbmRvdywgJyonKTsgIC8vIFBhc3NlcyBiZWNhdXNl
IHdpbmRvdyBoYXMgYSAibGVuZ3RoIiBhdHRyaWJ1dGUgb2YgdmFsdWUgJzAnLCBzbyBpdCBsb29r
cyBsaWtlIGFuIGFycmF5CiB0cnlQb3N0TWVzc2FnZSgnNScsIG51bGwsICcqJyk7CiB0cnlQb3N0
TWVzc2FnZSgnNicsIHZvaWQgMCwgJyonKTsKK3RyeVBvc3RNZXNzYWdlKCc3JywgW2NoYW5uZWwu
cG9ydDEsIGNoYW5uZWwucG9ydDJdLCAnKicpOwogdHJ5UG9zdE1lc3NhZ2UoJ2RvbmUnLCAnKicp
OwogPC9zY3JpcHQ+CiA8L2JvZHk+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50
cy9pbml0LWV2ZW50cy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9pbml0
LWV2ZW50cy1leHBlY3RlZC50eHQKaW5kZXggZWU1YzczYS4uYzg3NDE2YiAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvaW5pdC1ldmVudHMtZXhwZWN0ZWQudHh0CisrKyBiL0xh
eW91dFRlc3RzL2Zhc3QvZXZlbnRzL2luaXQtZXZlbnRzLWV4cGVjdGVkLnR4dApAQCAtNTIsNiAr
NTIsOCBAQCBQQVNTIHRlc3RJbml0RXZlbnQoJ01lc3NhZ2UnLCAnImEiLCBmYWxzZSwgZmFsc2Us
ICJiIiwgImMiLCAiZCIsIHdpbmRvdywgbnVsbCcpLgogUEFTUyB0ZXN0SW5pdEV2ZW50KCdNZXNz
YWdlJywgJyJhIiwgZmFsc2UsIGZhbHNlLCAiYiIsICJjIiwgbnVsbCwgd2luZG93LCBudWxsJyku
bGFzdEV2ZW50SWQgaXMgJ251bGwnCiBQQVNTIHRlc3RJbml0RXZlbnQoJ01lc3NhZ2UnLCAnImEi
LCBmYWxzZSwgZmFsc2UsICJiIiwgImMiLCAiZCIsIHdpbmRvdywgbnVsbCcpLnNvdXJjZSBpcyB3
aW5kb3cKIFBBU1MgdGVzdEluaXRFdmVudCgnTWVzc2FnZScsICciYSIsIGZhbHNlLCBmYWxzZSwg
ImIiLCAiYyIsICJkIiwgbnVsbCwgbnVsbCcpLnNvdXJjZSBpcyBudWxsCitQQVNTIHRlc3RJbml0
RXZlbnQoJ01lc3NhZ2UnLCAnImEiLCBmYWxzZSwgZmFsc2UsICJiIiwgImMiLCAiZCIsIG51bGws
IGNoYW5uZWxBcnJheScpLnBvcnRzWzBdIGlzIGNoYW5uZWwucG9ydDEKK1BBU1MgdGVzdEluaXRF
dmVudCgnTWVzc2FnZScsICciYSIsIGZhbHNlLCBmYWxzZSwgImIiLCAiYyIsICJkIiwgbnVsbCwg
Y2hhbm5lbEFycmF5JykucG9ydHNbMV0gaXMgY2hhbm5lbC5wb3J0MgogUEFTUyB0ZXN0SW5pdEV2
ZW50KCdNb3VzZScsICciYSIsIGZhbHNlLCBmYWxzZSwgd2luZG93LCAxMDAxLCAxMDAyLCAxMDAz
LCAxMDA0LCAxMDA1LCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgMTAwNiwgbnVsbCcpLnR5
cGUgaXMgJ2EnCiBQQVNTIHRlc3RJbml0RXZlbnQoJ01vdXNlJywgJ251bGwsIGZhbHNlLCBmYWxz
ZSwgd2luZG93LCAxMDAxLCAxMDAyLCAxMDAzLCAxMDA0LCAxMDA1LCBmYWxzZSwgZmFsc2UsIGZh
bHNlLCBmYWxzZSwgMTAwNiwgbnVsbCcpLnR5cGUgaXMgJ251bGwnCiBQQVNTIHRlc3RJbml0RXZl
bnQoJ01vdXNlJywgJyJhIiwgZmFsc2UsIGZhbHNlLCB3aW5kb3csIDEwMDEsIDEwMDIsIDEwMDMs
IDEwMDQsIDEwMDUsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCAxMDA2LCBudWxsJykuYnVi
YmxlcyBpcyBmYWxzZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvbWVzc2Fn
ZS1jaGFubmVsLWdjLTQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL21lc3NhZ2UtY2hh
bm5lbC1nYy00Lmh0bWwKaW5kZXggMGFlYTlmOC4uNDg1MDZkNiAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvZmFzdC9ldmVudHMvbWVzc2FnZS1jaGFubmVsLWdjLTQuaHRtbAorKysgYi9MYXlvdXRU
ZXN0cy9mYXN0L2V2ZW50cy9tZXNzYWdlLWNoYW5uZWwtZ2MtNC5odG1sCkBAIC0yOCwxMCArMjgs
MTAgQEAgZnVuY3Rpb24gdGVzdDEoKQogICAgIHZhciBjaGFubmVsID0gbmV3IE1lc3NhZ2VDaGFu
bmVsOwogICAgIHZhciBjaGFubmVsMiA9IG5ldyBNZXNzYWdlQ2hhbm5lbDsKICAgICBjaGFubmVs
LnBvcnQxLnBvc3RNZXNzYWdlKCJtc2cxIik7Ci0gICAgY2hhbm5lbDIucG9ydDEucG9zdE1lc3Nh
Z2UoIiIsIGNoYW5uZWwucG9ydDEpOwotICAgIGNoYW5uZWwyLnBvcnQyLnBvc3RNZXNzYWdlKCIi
LCBjaGFubmVsLnBvcnQyKTsKKyAgICBjaGFubmVsMi5wb3J0MS5wb3N0TWVzc2FnZSgiIiwgW2No
YW5uZWwucG9ydDFdKTsKKyAgICBjaGFubmVsMi5wb3J0Mi5wb3N0TWVzc2FnZSgiIiwgW2NoYW5u
ZWwucG9ydDJdKTsKICAgICBjaGFubmVsMi5wb3J0Mi5vbm1lc3NhZ2UgPSBjaGFubmVsMi5wb3J0
MS5vbm1lc3NhZ2UgPSBmdW5jdGlvbihldnQpIHsKLSAgICAgICAgZXZ0Lm1lc3NhZ2VQb3J0Lm9u
bWVzc2FnZSA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAgIGV2dC5wb3J0c1swXS5vbm1lc3Nh
Z2UgPSBmdW5jdGlvbihldmVudCkgewogICAgICAgICAgICAgaWYgKGV2ZW50LmRhdGEgPT0gIm1z
ZzEiKSB7CiAgICAgICAgICAgICAgICAgbG9nKCJQQVNTOiBSZWNlaXZlZCBtZXNzYWdlIHRvIGNs
b25lZCBwb3J0LiIpOwogICAgICAgICAgICAgICAgIHRoaXMucG9zdE1lc3NhZ2UoIm1zZzIiKTsK
QEAgLTQ1LDcgKzQ1LDcgQEAgZnVuY3Rpb24gdGVzdDEoKQogICAgICAgICAgICAgICAgIGxvZygi
RkFJTDogUmVjZWl2ZWQgdW5rbm93biBtZXNzYWdlOiAiICsgZXZlbnQuZGF0YSk7CiAgICAgICAg
ICAgICB9CiAgICAgICAgIH0KLSAgICAgICAgZXZ0Lm1lc3NhZ2VQb3J0ID0gMDsKKyAgICAgICAg
ZXZ0LnBvcnRzWzBdID0gMDsKICAgICB9CiAgICAgY2hhbm5lbCA9IDA7CiAgICAgY2hhbm5lbDIg
PSAwOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvbWVzc2FnZS1wb3J0LWNs
b25lLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9tZXNzYWdlLXBvcnQtY2xvbmUuaHRt
bAppbmRleCBhODE4YTJlLi5iOTk5MzhiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2V2
ZW50cy9tZXNzYWdlLXBvcnQtY2xvbmUuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50
cy9tZXNzYWdlLXBvcnQtY2xvbmUuaHRtbApAQCAtMjksMTQgKzI5LDE0IEBAIGNoYW5uZWwucG9y
dDEub25tZXNzYWdlID0gY2hhbm5lbC5wb3J0Mi5vbm1lc3NhZ2UgPSBmdW5jdGlvbihldnQpIHsK
ICAgICBmYWlsKCJGQUlMOiBTaG91bGQgbm90IGhhdmUgcmVjZWl2ZWQgbWVzc2FnZTogIiArIGV2
dC5kYXRhKTsKIH0KIHRyeSB7Ci0gICAgY2hhbm5lbC5wb3J0MS5wb3N0TWVzc2FnZSgibXNnIiwg
Y2hhbm5lbC5wb3J0MSk7CisgICAgY2hhbm5lbC5wb3J0MS5wb3N0TWVzc2FnZSgibXNnIiwgW2No
YW5uZWwucG9ydDFdKTsKICAgICBsb2coIkZBSUw6IFBvc3RpbmcgcG9ydCB0byBpdHNlbGYgc2hv
dWxkIHRocm93IGFuIGV4Y2VwdGlvbi4iKTsKIH0gY2F0Y2ggKGV4KSB7CiAgICAgbG9nKCJTVUND
RVNTOiBQb3N0aW5nIHBvcnQgdG8gaXRzZWxmOiAiICsgZXgpOwogfQogCiB0cnkgewotICAgIGNo
YW5uZWwucG9ydDEucG9zdE1lc3NhZ2UoIm1zZyIsIGNoYW5uZWwucG9ydDIpOworICAgIGNoYW5u
ZWwucG9ydDEucG9zdE1lc3NhZ2UoIm1zZyIsIFtjaGFubmVsLnBvcnQyXSk7CiAgICAgbG9nKCJG
QUlMOiBQb3N0aW5nIHBvcnQgdG8gZW50YW5nbGVkIHBhaXIgc2hvdWxkIHRocm93IGFuIGV4Y2Vw
dGlvbi4iKTsKIH0gY2F0Y2ggKGV4KSB7CiAgICAgbG9nKCJTVUNDRVNTOiBQb3N0aW5nIGVudGFu
Z2xlZCBwb3J0OiAiICsgZXgpOwpAQCAtNDQsMTEgKzQ0LDExIEBAIHRyeSB7CiAKIGNoYW5uZWwg
PSBuZXcgTWVzc2FnZUNoYW5uZWw7CiB2YXIgY2hhbm5lbDIgPSBuZXcgTWVzc2FnZUNoYW5uZWw7
Ci1jaGFubmVsLnBvcnQxLnBvc3RNZXNzYWdlKCJtc2ciLCBjaGFubmVsMi5wb3J0MSk7CitjaGFu
bmVsLnBvcnQxLnBvc3RNZXNzYWdlKCJtc2ciLCBbY2hhbm5lbDIucG9ydDFdKTsKIAogLy8gU2hv
dWxkIG5vdCBiZSBhYmxlIHRvIHBvc3QgYSBjbG9uZWQgcG9ydC4KIHRyeSB7Ci0gICAgY2hhbm5l
bC5wb3J0MS5wb3N0TWVzc2FnZSgibXNnIiwgY2hhbm5lbDIucG9ydDEpOworICAgIGNoYW5uZWwu
cG9ydDEucG9zdE1lc3NhZ2UoIm1zZyIsIFtjaGFubmVsMi5wb3J0MV0pOwogICAgIGxvZygiRkFJ
TDogUG9zdGluZyBjbG9uZWQgcG9ydCBzaG91bGQgdGhyb3cgYW4gZXhjZXB0aW9uLiIpOwogfSBj
YXRjaCAoZXgpIHsKICAgICBsb2coIlNVQ0NFU1M6IFBvc3RpbmcgY2xvbmVkIHBvcnQuIik7CkBA
IC02MSwxMiArNjEsMTQgQEAgdmFyIGNoYW5uZWwyID0gbmV3IE1lc3NhZ2VDaGFubmVsOwogCiAv
LyBQb3N0IG1lc3NhZ2VzIGJlZm9yZSBhbmQgYWZ0ZXIgY2xvbmUgdG8gbWFrZSBzdXJlIG9yZGVy
aW5nIGlzIHByZXNlcnZlZCBhbmQgYWxsIG1lc3NhZ2VzIGFyZSByZWNlaXZlZC4KIGNoYW5uZWwy
LnBvcnQyLnBvc3RNZXNzYWdlKCIxIik7Ci1jaGFubmVsLnBvcnQxLnBvc3RNZXNzYWdlKCJtc2ci
LCBjaGFubmVsMi5wb3J0MSk7CitjaGFubmVsLnBvcnQxLnBvc3RNZXNzYWdlKCJtc2ciLCBbY2hh
bm5lbDIucG9ydDFdKTsKIGNoYW5uZWwyLnBvcnQyLnBvc3RNZXNzYWdlKCIyIik7CiBjaGFubmVs
Mi5wb3J0Mi5wb3N0TWVzc2FnZSgiMyIpOwogY2hhbm5lbC5wb3J0Mi5vbm1lc3NhZ2UgPSBmdW5j
dGlvbihldnQpIHsKICAgICB2YXIgbWVzc2FnZUluZGV4ID0gMTsKLSAgICBldnQubWVzc2FnZVBv
cnQub25tZXNzYWdlID0gZnVuY3Rpb24oZXZ0KSB7CisgICAgaWYgKGV2dC5wb3J0cy5sZW5ndGgg
IT0gMSkKKyAgICAgICAgbG9nKCJGQUlMOiBHb3QgbWVzc2FnZSB3aXRob3V0IHdyb25nIG51bWJl
ciBvZiBwb3J0czogIiArIGV2dC5wb3J0cy5sZW5ndGgpOworICAgIGV2dC5wb3J0c1swXS5vbm1l
c3NhZ2UgPSBmdW5jdGlvbihldnQpIHsKICAgICAgICAgaWYgKGV2dC5kYXRhICE9IG1lc3NhZ2VJ
bmRleCkKICAgICAgICAgICAgIGxvZygiRkFJTDogR290IG1lc3NhZ2UgIiArIGV2dC5kYXRhICsg
IiwgZXhwZWN0ZWQgIiArIG1lc3NhZ2VJbmRleCk7CiAgICAgICAgIG1lc3NhZ2VJbmRleCsrOwpA
QCAtODEsMTQgKzgzLDE0IEBAIGZ1bmN0aW9uIHRlc3REb3VibHlDbG9uZWRQb3J0KCkKIHsKICAg
ICB2YXIgY2hhbm5lbCA9IG5ldyBNZXNzYWdlQ2hhbm5lbDsKICAgICB2YXIgY2hhbm5lbDIgPSBu
ZXcgTWVzc2FnZUNoYW5uZWw7Ci0gICAgY2hhbm5lbC5wb3J0MS5wb3N0TWVzc2FnZSgibXNnIiwg
Y2hhbm5lbDIucG9ydDEpOwotICAgIGNoYW5uZWwucG9ydDIucG9zdE1lc3NhZ2UoIm1zZyIsIGNo
YW5uZWwyLnBvcnQyKTsKKyAgICBjaGFubmVsLnBvcnQxLnBvc3RNZXNzYWdlKCJtc2ciLCBbY2hh
bm5lbDIucG9ydDFdKTsKKyAgICBjaGFubmVsLnBvcnQyLnBvc3RNZXNzYWdlKCJtc2ciLCBbY2hh
bm5lbDIucG9ydDJdKTsKICAgICBnYygpOwogICAgIGNoYW5uZWwucG9ydDEub25tZXNzYWdlID0g
ZnVuY3Rpb24oZXZ0KSB7Ci0gICAgICAgIGV2dC5tZXNzYWdlUG9ydC5wb3N0TWVzc2FnZSgidGVz
dG1lIik7CisgICAgICAgIGV2dC5wb3J0c1swXS5wb3N0TWVzc2FnZSgidGVzdG1lIik7CiAgICAg
fQogICAgIGNoYW5uZWwucG9ydDIub25tZXNzYWdlID0gZnVuY3Rpb24oZXZ0KSB7Ci0gICAgICAg
IGV2dC5tZXNzYWdlUG9ydC5vbm1lc3NhZ2UgPSBmdW5jdGlvbiAoZXZ0KSB7CisgICAgICAgIGV2
dC5wb3J0c1swXS5vbm1lc3NhZ2UgPSBmdW5jdGlvbiAoZXZ0KSB7CiAgICAgICAgICAgICBpZiAo
ZXZ0LmRhdGEgPT0gInRlc3RtZSIpCiAgICAgICAgICAgICAgICAgbG9nKCJTVUNDRVNTOiBDbG9u
ZWQgYm90aCBlbmRwb2ludHMgb2YgYSBjaGFubmVsLiIpOwogICAgICAgICAgICAgZWxzZQpAQCAt
MTA1LDkgKzEwNyw5IEBAIGZ1bmN0aW9uIHRlc3RQb3N0Q2xvc2VQb3J0KCkKICAgICB2YXIgY2hh
bm5lbCA9IG5ldyBNZXNzYWdlQ2hhbm5lbDsKICAgICB2YXIgY2hhbm5lbDIgPSBuZXcgTWVzc2Fn
ZUNoYW5uZWw7CiAgICAgY2hhbm5lbDIucG9ydDIuY2xvc2UoKTsKLSAgICBjaGFubmVsLnBvcnQx
LnBvc3RNZXNzYWdlKCJjbG9zZWQiLCBjaGFubmVsMi5wb3J0Mik7CisgICAgY2hhbm5lbC5wb3J0
MS5wb3N0TWVzc2FnZSgiY2xvc2VkIiwgW2NoYW5uZWwyLnBvcnQyXSk7CiAgICAgY2hhbm5lbC5w
b3J0Mi5vbm1lc3NhZ2UgPSBmdW5jdGlvbihldnQpIHsKLSAgICAgICAgaWYgKCFldnQubWVzc2Fn
ZVBvcnQpCisgICAgICAgIGlmICghZXZ0LnBvcnRzIHx8IGV2dC5wb3J0cy5sZW5ndGggIT0gMSkK
ICAgICAgICAgICAgIGxvZygiRkFJTDogQ2xvc2VkIHBvcnQgbm90IHNlbnQuIik7CiAgICAgICAg
IGVsc2UgaWYgKGV2dC5kYXRhICE9ICJjbG9zZWQiKQogICAgICAgICAgICAgbG9nKCJGQUlMOiBV
bmV4cGVjdGVkIG1lc3NhZ2U6ICIgKyBldnQuZGF0YSk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L2V2ZW50cy9tZXNzYWdlLXBvcnQtZGVsZXRlZC1kb2N1bWVudC5odG1sIGIvTGF5b3V0
VGVzdHMvZmFzdC9ldmVudHMvbWVzc2FnZS1wb3J0LWRlbGV0ZWQtZG9jdW1lbnQuaHRtbAppbmRl
eCBjMWUyZTA3Li42OGE0MzE3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9t
ZXNzYWdlLXBvcnQtZGVsZXRlZC1kb2N1bWVudC5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qv
ZXZlbnRzL21lc3NhZ2UtcG9ydC1kZWxldGVkLWRvY3VtZW50Lmh0bWwKQEAgLTI3LDcgKzI3LDcg
QEAgdmFyIG1haW5Qb3J0OwogZnVuY3Rpb24gdGVzdCgpCiB7CiAgICAgdmFyIGNoYW5uZWwgPSBu
ZXcgTWVzc2FnZUNoYW5uZWw7Ci0gICAgd2luZG93LmZyYW1lc1swXS5wb3N0TWVzc2FnZSgibXNn
IiwgY2hhbm5lbC5wb3J0MiwgIioiKTsKKyAgICB3aW5kb3cuZnJhbWVzWzBdLnBvc3RNZXNzYWdl
KCJtc2ciLCBbY2hhbm5lbC5wb3J0Ml0sICIqIik7CiAgICAgbWFpblBvcnQgPSBjaGFubmVsLnBv
cnQxOwogICAgIG1haW5Qb3J0LnN0YXJ0KCk7CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zh
c3QvZXZlbnRzL21lc3NhZ2UtcG9ydC1kZWxldGVkLWZyYW1lLmh0bWwgYi9MYXlvdXRUZXN0cy9m
YXN0L2V2ZW50cy9tZXNzYWdlLXBvcnQtZGVsZXRlZC1mcmFtZS5odG1sCmluZGV4IDY5ZmEyYjMu
LmU5NWU1ZmIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL21lc3NhZ2UtcG9y
dC1kZWxldGVkLWZyYW1lLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvbWVzc2Fn
ZS1wb3J0LWRlbGV0ZWQtZnJhbWUuaHRtbApAQCAtMjksNyArMjksNyBAQCBmdW5jdGlvbiB0ZXN0
KCkKIHsKICAgICBmcmFtZURvYyA9IHdpbmRvdy5mcmFtZXNbMF0uZG9jdW1lbnQ7CiAgICAgdmFy
IGNoYW5uZWwgPSBuZXcgTWVzc2FnZUNoYW5uZWw7Ci0gICAgd2luZG93LmZyYW1lc1swXS5wb3N0
TWVzc2FnZSgibXNnIiwgY2hhbm5lbC5wb3J0MiwgIioiKTsKKyAgICB3aW5kb3cuZnJhbWVzWzBd
LnBvc3RNZXNzYWdlKCJtc2ciLCBbY2hhbm5lbC5wb3J0Ml0sICIqIik7CiAgICAgbWFpblBvcnQg
PSBjaGFubmVsLnBvcnQxOwogICAgIG1haW5Qb3J0LnN0YXJ0KCk7CiAKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2Zhc3QvZXZlbnRzL21lc3NhZ2UtcG9ydC1pbmFjdGl2ZS1kb2N1bWVudC5odG1s
IGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvbWVzc2FnZS1wb3J0LWluYWN0aXZlLWRvY3VtZW50
Lmh0bWwKaW5kZXggNTg1OTU3Ni4uNDg2NDBkNyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFz
dC9ldmVudHMvbWVzc2FnZS1wb3J0LWluYWN0aXZlLWRvY3VtZW50Lmh0bWwKKysrIGIvTGF5b3V0
VGVzdHMvZmFzdC9ldmVudHMvbWVzc2FnZS1wb3J0LWluYWN0aXZlLWRvY3VtZW50Lmh0bWwKQEAg
LTI5LDcgKzI5LDcgQEAgZnVuY3Rpb24gdGVzdCgpCiB7CiAgICAgb3RoZXJEb2N1bWVudCA9IHdp
bmRvdy5mcmFtZXNbMF0uZG9jdW1lbnQ7CiAgICAgdmFyIGNoYW5uZWwgPSBuZXcgTWVzc2FnZUNo
YW5uZWw7Ci0gICAgd2luZG93LmZyYW1lc1swXS5wb3N0TWVzc2FnZSgibXNnIiwgY2hhbm5lbC5w
b3J0MiwgIioiKTsKKyAgICB3aW5kb3cuZnJhbWVzWzBdLnBvc3RNZXNzYWdlKCJtc2ciLCBbY2hh
bm5lbC5wb3J0Ml0sICIqIik7CiAgICAgbWFpblBvcnQgPSBjaGFubmVsLnBvcnQxOwogICAgIG1h
aW5Qb3J0LnN0YXJ0KCk7CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL21l
c3NhZ2UtcG9ydC1tdWx0aS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9t
ZXNzYWdlLXBvcnQtbXVsdGktZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAuLjgzMjhkMTAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2V2
ZW50cy9tZXNzYWdlLXBvcnQtbXVsdGktZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTggQEAKK1Ro
aXMgdGVzdCBjaGVja3MgdGhlIHZhcmlvdXMgdXNlIGNhc2VzIGFyb3VuZCBzZW5kaW5nIG11bHRp
cGxlIHBvcnRzIHRocm91Z2ggTWVzc2FnZVBvcnQucG9zdE1lc3NhZ2UKKworT24gc3VjY2Vzcywg
eW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRF
U1QgQ09NUExFVEUiLgorCisKK1BBU1MgY2hhbm5lbC5wb3J0MS5wb3N0TWVzc2FnZSgic2FtZSBw
b3J0IiwgW2NoYW5uZWwucG9ydDFdKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IElOVkFMSURfU1RB
VEVfRVJSOiBET00gRXhjZXB0aW9uIDExLgorUEFTUyBjaGFubmVsLnBvcnQxLnBvc3RNZXNzYWdl
KCJlbnRhbmdsZWQgcG9ydCIsIFtjaGFubmVsLnBvcnQyXSkgdGhyZXcgZXhjZXB0aW9uIEVycm9y
OiBJTlZBTElEX1NUQVRFX0VSUjogRE9NIEV4Y2VwdGlvbiAxMS4KK1BBU1MgY2hhbm5lbC5wb3J0
MS5wb3N0TWVzc2FnZSgibnVsbCBwb3J0IiwgW2NoYW5uZWwzLnBvcnQxLCBudWxsLCBjaGFubmVs
My5wb3J0Ml0pIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogSU5WQUxJRF9TVEFURV9FUlI6IERPTSBF
eGNlcHRpb24gMTEuCitQQVNTIGNoYW5uZWwucG9ydDEucG9zdE1lc3NhZ2UoIm5vdEFQb3J0Iiwg
W2NoYW5uZWwzLnBvcnQxLCB7fSwgY2hhbm5lbDMucG9ydDJdKSB0aHJldyBleGNlcHRpb24gVHlw
ZUVycm9yOiBUeXBlIGVycm9yLgorUEFTUyBjaGFubmVsLnBvcnQxLnBvc3RNZXNzYWdlKCJub3RB
bkFycmF5IiwgY2hhbm5lbDMucG9ydDEpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUg
ZXJyb3IuCitQQVNTIGNoYW5uZWwucG9ydDEucG9zdE1lc3NhZ2UoIm5vdEFTZXF1ZW5jZSIsIFt7
bGVuZ3RoOiAzfV0pIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUgZXJyb3IuCitQQVNT
IGV2ZW50LnBvcnRzIGlzIG51bGwgd2hlbiBubyBwb3J0IHNlbnQKK1BBU1MgZXZlbnQucG9ydHMg
aXMgbnVsbCB3aGVuIGVtcHR5IGFycmF5IHNlbnQKK1BBU1MgZXZlbnQucG9ydHMgY29udGFpbnMg
dHdvIHBvcnRzIHdoZW4gdHdvIHBvcnRzIHNlbnQKK1BBU1MgZXZlbnQucG9ydHMgY29udGFpbnMg
dHdvIHBvcnRzIHdoZW4gdHdvIHBvcnRzIHJlLXNlbnQgYWZ0ZXIgZXJyb3IKKworVEVTVCBDT01Q
TEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9tZXNzYWdlLXBvcnQt
bXVsdGkuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL21lc3NhZ2UtcG9ydC1tdWx0aS5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgwMjhjNGUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9tZXNzYWdlLXBvcnQtbXVsdGkuaHRt
bApAQCAtMCwwICsxLDkgQEAKKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIu
Li9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jl
c291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwIGlk
PSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0IHNy
Yz0icmVzb3VyY2VzL21lc3NhZ2UtcG9ydC1tdWx0aS5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Clwg
Tm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9l
dmVudHMvbWVzc2FnZS1wb3J0Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9tZXNzYWdl
LXBvcnQuaHRtbAppbmRleCAyMDY0NjdmLi5hNWRkNDc1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9mYXN0L2V2ZW50cy9tZXNzYWdlLXBvcnQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2V2
ZW50cy9tZXNzYWdlLXBvcnQuaHRtbApAQCAtMTgsNyArMTgsNyBAQCB2YXIgbWFpblBvcnQ7CiBm
dW5jdGlvbiB0ZXN0KCkKIHsKICAgICB2YXIgY2hhbm5lbCA9IG5ldyBNZXNzYWdlQ2hhbm5lbDsK
LSAgICB3aW5kb3cuZnJhbWVzWzBdLnBvc3RNZXNzYWdlKCJtc2ciLCBjaGFubmVsLnBvcnQyLCAi
KiIpOworICAgIHdpbmRvdy5mcmFtZXNbMF0ucG9zdE1lc3NhZ2UoIm1zZyIsIFtjaGFubmVsLnBv
cnQyXSwgIioiKTsKICAgICBtYWluUG9ydCA9IGNoYW5uZWwucG9ydDE7CiAgICAgbWFpblBvcnQu
cG9zdE1lc3NhZ2UoInBpbmciKTsKICAgICBtYWluUG9ydC5vbm1lc3NhZ2UgPSBmdW5jdGlvbihl
dnQpIHsKQEAgLTMzLDcgKzMzLDcgQEAgZnVuY3Rpb24gdGVzdCgpCiBmdW5jdGlvbiB0ZXN0Migp
CiB7CiAgICAgdmFyIGNoYW5uZWwgPSBuZXcgTWVzc2FnZUNoYW5uZWw7Ci0gICAgbWFpblBvcnQu
cG9zdE1lc3NhZ2UoIm5ld1BvcnQiLCBjaGFubmVsLnBvcnQyKTsKKyAgICBtYWluUG9ydC5wb3N0
TWVzc2FnZSgibmV3UG9ydCIsIFtjaGFubmVsLnBvcnQyXSk7CiAgICAgY2hhbm5lbC5wb3J0MS5v
bm1lc3NhZ2UgPSBmdW5jdGlvbihldnQpIHsKICAgICAgICAgaWYgKGV2dC5kYXRhID09ICJ5byIg
JiYgZXZ0Lm9yaWdpbiA9PSAiIikKICAgICAgICAgICAgIGxvZygiUG9zdGVkIHBvcnQ6IFNVQ0NF
U1MiKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3Jlc291cmNlcy9pbml0
LWV2ZW50cy5qcyBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3Jlc291cmNlcy9pbml0LWV2ZW50
cy5qcwppbmRleCA3YmRlMmY1Li4zNGZhNjZmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0
L2V2ZW50cy9yZXNvdXJjZXMvaW5pdC1ldmVudHMuanMKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9l
dmVudHMvcmVzb3VyY2VzL2luaXQtZXZlbnRzLmpzCkBAIC02Myw3ICs2MywxMCBAQCBzaG91bGRC
ZSgidGVzdEluaXRFdmVudCgnTWVzc2FnZScsICdcImFcIiwgZmFsc2UsIGZhbHNlLCBcImJcIiwg
XCJjXCIsIFwiZFwiLCB3aQogc2hvdWxkQmUoInRlc3RJbml0RXZlbnQoJ01lc3NhZ2UnLCAnXCJh
XCIsIGZhbHNlLCBmYWxzZSwgXCJiXCIsIFwiY1wiLCBudWxsLCB3aW5kb3csIG51bGwnKS5sYXN0
RXZlbnRJZCIsICInbnVsbCciKTsKIHNob3VsZEJlKCJ0ZXN0SW5pdEV2ZW50KCdNZXNzYWdlJywg
J1wiYVwiLCBmYWxzZSwgZmFsc2UsIFwiYlwiLCBcImNcIiwgXCJkXCIsIHdpbmRvdywgbnVsbCcp
LnNvdXJjZSIsICJ3aW5kb3ciKTsKIHNob3VsZEJlKCJ0ZXN0SW5pdEV2ZW50KCdNZXNzYWdlJywg
J1wiYVwiLCBmYWxzZSwgZmFsc2UsIFwiYlwiLCBcImNcIiwgXCJkXCIsIG51bGwsIG51bGwnKS5z
b3VyY2UiLCAibnVsbCIpOwotLy8gRklYTUU6IE5vdCBzdXJlIGhvdyB0byBtYWtlIGEgTWVzc2Fn
ZVBvcnQgdG8gdGVzdCBtZXNzYWdlUG9ydCBhcmd1bWVudC4KK3ZhciBjaGFubmVsID0gbmV3IE1l
c3NhZ2VDaGFubmVsOwordmFyIGNoYW5uZWxBcnJheSA9IFtjaGFubmVsLnBvcnQxLCBjaGFubmVs
LnBvcnQyXTsKK3Nob3VsZEJlKCJ0ZXN0SW5pdEV2ZW50KCdNZXNzYWdlJywgJ1wiYVwiLCBmYWxz
ZSwgZmFsc2UsIFwiYlwiLCBcImNcIiwgXCJkXCIsIG51bGwsIGNoYW5uZWxBcnJheScpLnBvcnRz
WzBdIiwgImNoYW5uZWwucG9ydDEiKTsKK3Nob3VsZEJlKCJ0ZXN0SW5pdEV2ZW50KCdNZXNzYWdl
JywgJ1wiYVwiLCBmYWxzZSwgZmFsc2UsIFwiYlwiLCBcImNcIiwgXCJkXCIsIG51bGwsIGNoYW5u
ZWxBcnJheScpLnBvcnRzWzFdIiwgImNoYW5uZWwucG9ydDIiKTsKIAogc2hvdWxkQmUoInRlc3RJ
bml0RXZlbnQoJ01vdXNlJywgJ1wiYVwiLCBmYWxzZSwgZmFsc2UsIHdpbmRvdywgMTAwMSwgMTAw
MiwgMTAwMywgMTAwNCwgMTAwNSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIDEwMDYsIG51
bGwnKS50eXBlIiwgIidhJyIpOwogc2hvdWxkQmUoInRlc3RJbml0RXZlbnQoJ01vdXNlJywgJ251
bGwsIGZhbHNlLCBmYWxzZSwgd2luZG93LCAxMDAxLCAxMDAyLCAxMDAzLCAxMDA0LCAxMDA1LCBm
YWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgMTAwNiwgbnVsbCcpLnR5cGUiLCAiJ251bGwnIik7
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9yZXNvdXJjZXMvbWVzc2FnZS1w
b3J0LWlmcmFtZS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvcmVzb3VyY2VzL21lc3Nh
Z2UtcG9ydC1pZnJhbWUuaHRtbAppbmRleCAzYzE4MzM1Li45ODlhZWQxIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9yZXNvdXJjZXMvbWVzc2FnZS1wb3J0LWlmcmFtZS5odG1s
CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3Jlc291cmNlcy9tZXNzYWdlLXBvcnQtaWZy
YW1lLmh0bWwKQEAgLTE0LDEwICsxNCwxMCBAQCBmdW5jdGlvbiBvbk1lc3NhZ2UoZXZ0KSB7CiAg
ICAgaWYgKGV2dC5kYXRhID09ICJwaW5nIikKICAgICAgICAgcG9ydC5wb3N0TWVzc2FnZSgicG9u
ZyIpOwogICAgIGVsc2UgaWYgKGV2dC5kYXRhID09ICJuZXdQb3J0IikKLSAgICAgICAgZXZ0Lm1l
c3NhZ2VQb3J0LnBvc3RNZXNzYWdlKCJ5byIpOworICAgICAgICBldnQucG9ydHNbMF0ucG9zdE1l
c3NhZ2UoInlvIik7CiAgICAgZWxzZSBpZiAoZXZ0LmRhdGEgPT0gIm5ld0NvbnZlcnNhdGlvbiIp
CiAgICAgICAgIGlmIChldnQub3JpZ2luID09ICIiKQotICAgICAgICAgICAgZXZ0Lm1lc3NhZ2VQ
b3J0LnBvc3RNZXNzYWdlKCJoZXkiKTsKKyAgICAgICAgICAgIGV2dC5wb3J0c1swXS5wb3N0TWVz
c2FnZSgiaGV5Iik7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGFsZXJ0KCJJbmNvcnJlY3Qg
c2VjdXJpdHkgb3JpZ2luIGluIGNvbnZlcnNhdGlvbjogJyIgKyBldnQub3JpZ2luICsgIicuIik7
CiAgICAgZWxzZSBpZiAoL2FsZXJ0LisvLnRlc3QoZXZ0LmRhdGEpKQpAQCAtMzMsNyArMzMsNyBA
QCBmdW5jdGlvbiBvbk1lc3NhZ2UoZXZ0KSB7CiB9CiAKIHdpbmRvdy5hZGRFdmVudExpc3RlbmVy
KCJtZXNzYWdlIiwgZnVuY3Rpb24oZXZ0KSB7Ci0gICAgcG9ydCA9IGV2dC5tZXNzYWdlUG9ydDsK
KyAgICBwb3J0ID0gZXZ0LnBvcnRzWzBdOwogICAgIHBvcnQub25tZXNzYWdlID0gb25NZXNzYWdl
OwogICAgIHBvcnQuc3RhcnQoKTsKIH0sIGZhbHNlKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2Zhc3QvZXZlbnRzL3Jlc291cmNlcy9tZXNzYWdlLXBvcnQtbXVsdGkuanMgYi9MYXlvdXRUZXN0
cy9mYXN0L2V2ZW50cy9yZXNvdXJjZXMvbWVzc2FnZS1wb3J0LW11bHRpLmpzCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY3ZTM0MzYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9mYXN0L2V2ZW50cy9yZXNvdXJjZXMvbWVzc2FnZS1wb3J0LW11bHRpLmpzCkBAIC0w
LDAgKzEsNjIgQEAKK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
d2FpdFVudGlsRG9uZSgpOworfQorCitkZXNjcmlwdGlvbigiVGhpcyB0ZXN0IGNoZWNrcyB0aGUg
dmFyaW91cyB1c2UgY2FzZXMgYXJvdW5kIHNlbmRpbmcgbXVsdGlwbGUgcG9ydHMgdGhyb3VnaCBN
ZXNzYWdlUG9ydC5wb3N0TWVzc2FnZSIpOworCit2YXIgY2hhbm5lbCA9IG5ldyBNZXNzYWdlQ2hh
bm5lbCgpOwordmFyIGNoYW5uZWwyID0gbmV3IE1lc3NhZ2VDaGFubmVsKCk7Cit2YXIgY2hhbm5l
bDMgPSBuZXcgTWVzc2FnZUNoYW5uZWwoKTsKKworY2hhbm5lbC5wb3J0MS5wb3N0TWVzc2FnZSgi
bm9wb3J0Iik7CitjaGFubmVsLnBvcnQxLnBvc3RNZXNzYWdlKCJ6ZXJvIHBvcnRzIiwgW10pOwor
Y2hhbm5lbC5wb3J0MS5wb3N0TWVzc2FnZSgidHdvIHBvcnRzIiwgW2NoYW5uZWwyLnBvcnQxLCBj
aGFubmVsMi5wb3J0Ml0pOworCisvLyBOb3cgdGVzdCB2YXJpb3VzIGZhaWx1cmUgY2FzZXMKK3No
b3VsZFRocm93KCdjaGFubmVsLnBvcnQxLnBvc3RNZXNzYWdlKCJzYW1lIHBvcnQiLCBbY2hhbm5l
bC5wb3J0MV0pJyk7CitzaG91bGRUaHJvdygnY2hhbm5lbC5wb3J0MS5wb3N0TWVzc2FnZSgiZW50
YW5nbGVkIHBvcnQiLCBbY2hhbm5lbC5wb3J0Ml0pJyk7CitzaG91bGRUaHJvdygnY2hhbm5lbC5w
b3J0MS5wb3N0TWVzc2FnZSgibnVsbCBwb3J0IiwgW2NoYW5uZWwzLnBvcnQxLCBudWxsLCBjaGFu
bmVsMy5wb3J0Ml0pJyk7CitzaG91bGRUaHJvdygnY2hhbm5lbC5wb3J0MS5wb3N0TWVzc2FnZSgi
bm90QVBvcnQiLCBbY2hhbm5lbDMucG9ydDEsIHt9LCBjaGFubmVsMy5wb3J0Ml0pJyk7CisvLyBT
aG91bGQgYmUgT0sgdG8gc2VuZCBjaGFubmVsMy5wb3J0MSAoc2hvdWxkIG5vdCBoYXZlIGJlZW4g
ZGlzZW50YW5nbGVkIGJ5IHRoZSBwcmV2aW91cyBmYWlsZWQgY2FsbHMpLgorY2hhbm5lbC5wb3J0
MS5wb3N0TWVzc2FnZSgiZW50YW5nbGVkIHBvcnRzIiwgW2NoYW5uZWwzLnBvcnQxLCBjaGFubmVs
My5wb3J0Ml0pOworCitzaG91bGRUaHJvdygnY2hhbm5lbC5wb3J0MS5wb3N0TWVzc2FnZSgibm90
QW5BcnJheSIsIGNoYW5uZWwzLnBvcnQxKScpCitzaG91bGRUaHJvdygnY2hhbm5lbC5wb3J0MS5w
b3N0TWVzc2FnZSgibm90QVNlcXVlbmNlIiwgW3tsZW5ndGg6IDN9XSknKTsKKworY2hhbm5lbC5w
b3J0MS5wb3N0TWVzc2FnZSgiZG9uZSIpOworCitjaGFubmVsLnBvcnQyLm9ubWVzc2FnZSA9IGZ1
bmN0aW9uKGV2ZW50KSB7CisgICAgaWYgKGV2ZW50LmRhdGEgPT0gIm5vcG9ydCIpIHsKKyAgICAg
ICAgaWYgKCFldmVudC5wb3J0cykKKyAgICAgICAgICAgIHRlc3RQYXNzZWQoImV2ZW50LnBvcnRz
IGlzIG51bGwgd2hlbiBubyBwb3J0IHNlbnQiKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAg
dGVzdEZhaWxlZCgiZXZlbnQucG9ydHMgc2hvdWxkIGJlIG51bGwgd2hlbiBubyBwb3J0IHNlbnQi
KTsKKyAgICB9IGVsc2UgaWYgKGV2ZW50LmRhdGEgPT0gInplcm8gcG9ydHMiKSB7CisgICAgICAg
IGlmICghZXZlbnQucG9ydHMpCisgICAgICAgICAgICB0ZXN0UGFzc2VkKCJldmVudC5wb3J0cyBp
cyBudWxsIHdoZW4gZW1wdHkgYXJyYXkgc2VudCIpOworICAgICAgICBlbHNlCisgICAgICAgICAg
ICB0ZXN0RmFpbGVkKCJldmVudC5wb3J0cyBzaG91bGQgYmUgbnVsbCB3aGVuIGVtcHR5IGFycmF5
IHNlbnQiKTsKKyAgICB9IGVsc2UgaWYgKGV2ZW50LmRhdGEgPT0gInR3byBwb3J0cyIpIHsKKyAg
ICAgICAgaWYgKCFldmVudC5wb3J0cykgeworICAgICAgICAgICAgdGVzdEZhaWxlZCgiZXZlbnQu
cG9ydHMgc2hvdWxkIGJlIG5vbi1udWxsIHdoZW4gcG9ydHMgc2VudCIpOworICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICB9CisgICAgICAgIGlmIChldmVudC5wb3J0cy5sZW5ndGggPT0gMikK
KyAgICAgICAgICAgIHRlc3RQYXNzZWQoImV2ZW50LnBvcnRzIGNvbnRhaW5zIHR3byBwb3J0cyB3
aGVuIHR3byBwb3J0cyBzZW50Iik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHRlc3RGYWls
ZWQoImV2ZW50LnBvcnRzIGNvbnRhaW5lZCAiICsgZXZlbnQucG9ydHMubGVuZ3RoICsgIiB3aGVu
IHR3byBwb3J0cyBzZW50Iik7CisKKyAgICB9IGVsc2UgaWYgKGV2ZW50LmRhdGEgPT0gImVudGFu
Z2xlZCBwb3J0cyIpIHsKKyAgICAgICAgaWYgKGV2ZW50LnBvcnRzLmxlbmd0aCA9PSAyKQorICAg
ICAgICAgICAgdGVzdFBhc3NlZCgiZXZlbnQucG9ydHMgY29udGFpbnMgdHdvIHBvcnRzIHdoZW4g
dHdvIHBvcnRzIHJlLXNlbnQgYWZ0ZXIgZXJyb3IiKTsKKyAgICAgICAgZWxzZQorICAgICAgICAg
ICAgdGVzdEZhaWxlZCgiZXZlbnQucG9ydHMgY29udGFpbmVkICIgKyBldmVudC5wb3J0cy5sZW5n
dGggKyAiIHdoZW4gdHdvIHBvcnRzIHJlLXNlbnQgYWZ0ZXIgZXJyb3IiKTsKKyAgICB9IGVsc2Ug
aWYgKGV2ZW50LmRhdGEgPT0gImRvbmUiKSB7CisgICAgICAgIGRlYnVnKCc8YnI+PHNwYW4gY2xh
c3M9InBhc3MiPlRFU1QgQ09NUExFVEU8L3NwYW4+Jyk7CisgICAgICAgIGlmICh3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3Rp
ZnlEb25lKCk7CisgICAgfSBlbHNlCisgICAgICAgIHRlc3RGYWlsZWQoIlJlY2VpdmVkIHVuZXhw
ZWN0ZWQgbWVzc2FnZTogIiArIGV2ZW50LmRhdGEpOworfQorCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9mYXN0L3dvcmtlcnMvcmVzb3VyY2VzL3NoYXJlZC13b3JrZXItY29tbW9uLmpzIGIvTGF5
b3V0VGVzdHMvZmFzdC93b3JrZXJzL3Jlc291cmNlcy9zaGFyZWQtd29ya2VyLWNvbW1vbi5qcwpp
bmRleCA2NDA3YzIzLi43MjA4MjFiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L3dvcmtl
cnMvcmVzb3VyY2VzL3NoYXJlZC13b3JrZXItY29tbW9uLmpzCisrKyBiL0xheW91dFRlc3RzL2Zh
c3Qvd29ya2Vycy9yZXNvdXJjZXMvc2hhcmVkLXdvcmtlci1jb21tb24uanMKQEAgLTUsNyArNSw3
IEBAIGZ1bmN0aW9uIGdlbmVyYXRlRXJyb3IoKQogfQogCiBvbmNvbm5lY3QgPSBmdW5jdGlvbihl
dmVudCkgewotICAgIGV2ZW50Lm1lc3NhZ2VQb3J0Lm9ubWVzc2FnZSA9IGZ1bmN0aW9uKGV2dCkg
eyBoYW5kbGVNZXNzYWdlKGV2dCwgZXZlbnQubWVzc2FnZVBvcnQpOyB9OworICAgIGV2ZW50LnBv
cnRzWzBdLm9ubWVzc2FnZSA9IGZ1bmN0aW9uKGV2dCkgeyBoYW5kbGVNZXNzYWdlKGV2dCwgZXZl
bnQucG9ydHNbMF0pOyB9OwogfTsKIAogZnVuY3Rpb24gZ2MoKQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZmFzdC93b3JrZXJzL3Jlc291cmNlcy9zaGFyZWQtd29ya2VyLXNjcmlwdC1lcnJvci5q
cyBiL0xheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy9yZXNvdXJjZXMvc2hhcmVkLXdvcmtlci1zY3Jp
cHQtZXJyb3IuanMKaW5kZXggNjNmYjY1MS4uMTY2MjI1YSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvZmFzdC93b3JrZXJzL3Jlc291cmNlcy9zaGFyZWQtd29ya2VyLXNjcmlwdC1lcnJvci5qcwor
KysgYi9MYXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvcmVzb3VyY2VzL3NoYXJlZC13b3JrZXItc2Ny
aXB0LWVycm9yLmpzCkBAIC0xLDUgKzEsNSBAQAogb25jb25uZWN0ID0gZnVuY3Rpb24oZXZlbnQp
IHsKLSAgICBldmVudC5tZXNzYWdlUG9ydC5vbm1lc3NhZ2UgPSBmdW5jdGlvbihldnQpIHsgaGFu
ZGxlTWVzc2FnZShldnQsIGV2ZW50Lm1lc3NhZ2VQb3J0KTsgfTsKKyAgICBldmVudC5wb3J0c1sw
XS5vbm1lc3NhZ2UgPSBmdW5jdGlvbihldnQpIHsgaGFuZGxlTWVzc2FnZShldnQsIGV2ZW50LnBv
cnRzWzBdKTsgfTsKIH07CiAKIGZ1bmN0aW9uIGhhbmRsZU1lc3NhZ2UoZXZlbnQsIHBvcnQpIHsK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy9yZXNvdXJjZXMvd29ya2VyLWNs
b25lcG9ydC5qcyBiL0xheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy9yZXNvdXJjZXMvd29ya2VyLWNs
b25lcG9ydC5qcwppbmRleCA1NWYwM2JjLi5jNTM1Njc2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9mYXN0L3dvcmtlcnMvcmVzb3VyY2VzL3dvcmtlci1jbG9uZXBvcnQuanMKKysrIGIvTGF5b3V0
VGVzdHMvZmFzdC93b3JrZXJzL3Jlc291cmNlcy93b3JrZXItY2xvbmVwb3J0LmpzCkBAIC0xLDYg
KzEsNiBAQAogb25tZXNzYWdlID0gZnVuY3Rpb24oZXZ0KSB7CiAgICAgaWYgKGV2dC5kYXRhLmlu
ZGV4T2YoInBvc3RCYWNrICIpID09IDApIHsKLSAgICAgICAgaWYgKCFldnQubWVzc2FnZVBvcnQp
IHsKKyAgICAgICAgaWYgKCFldnQucG9ydHMpIHsKICAgICAgICAgICAgIHBvc3RNZXNzYWdlKCJG
QUlMVVJFOiBObyBNZXNzYWdlUG9ydCB3aXRoIHBvc3RCYWNrIGNvbW1hbmQiKTsKICAgICAgICAg
fQogICAgICAgICB2YXIgc3RyaW5ncyA9IGV2dC5kYXRhLnNwbGl0KCIgIiwgMik7CkBAIC04LDcg
KzgsNyBAQCBvbm1lc3NhZ2UgPSBmdW5jdGlvbihldnQpIHsKICAgICAgICAgcG9zdE1lc3NhZ2Uo
IlBBU1M6IFJlY2VpdmVkIHJlcXVlc3QgZm9yICIgKyBudW1JdGVtcyArICIgbWVzc2FnZXMiKTsK
ICAgICAgICAgZm9yICh2YXIgaSA9IDAgOyBpIDwgbnVtSXRlbXMgOyBpKyspIHsKICAgICAgICAg
ICAgIHZhciBtc2cgPSAiIiArIGk7Ci0gICAgICAgICAgICBldnQubWVzc2FnZVBvcnQucG9zdE1l
c3NhZ2UobXNnKTsKKyAgICAgICAgICAgIGV2dC5wb3J0c1swXS5wb3N0TWVzc2FnZShtc2cpOwog
ICAgICAgICB9CiAgICAgICAgIHBvc3RNZXNzYWdlKCJwb3N0QmFja0RvbmUiKTsKICAgICB9IGVs
c2UgewpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC93b3JrZXJzL3Jlc291cmNlcy93b3Jr
ZXItY29udGV4dC1tdWx0aS1wb3J0LmpzIGIvTGF5b3V0VGVzdHMvZmFzdC93b3JrZXJzL3Jlc291
cmNlcy93b3JrZXItY29udGV4dC1tdWx0aS1wb3J0LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLjA2NjgwZTkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0
L3dvcmtlcnMvcmVzb3VyY2VzL3dvcmtlci1jb250ZXh0LW11bHRpLXBvcnQuanMKQEAgLTAsMCAr
MSw0MyBAQAorZGVzY3JpcHRpb24oIlRoaXMgdGVzdCBjaGVja3MgdGhlIHZhcmlvdXMgdXNlIGNh
c2VzIGFyb3VuZCBzZW5kaW5nIG11bHRpcGxlIHBvcnRzIHRocm91Z2ggV29ya2VyR2xvYmFsU2Nv
cGUucG9zdE1lc3NhZ2UiKTsKKworaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewor
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci53YWl0VW50aWxEb25lKCk7Cit9CisKK3ZhciB3b3JrZXIgPSBuZXcgV29ya2VyKCJy
ZXNvdXJjZXMvd29ya2VyLWNvbnRleHQtdGhyZWFkLW11bHRpLXBvcnQuanMiKTsKKword29ya2Vy
Lm9ubWVzc2FnZSA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgLy8gUmVwb3J0IHJlc3VsdHMgZnJv
bSB3b3JrZXIgdGhyZWFkLgorICAgIGlmIChldmVudC5kYXRhID09ICJkb25lIikKKyAgICAgICAg
ZXZlbnQucG9ydHNbMF0ub25tZXNzYWdlID0gZG9uZTsKKyAgICBlbHNlIGlmIChldmVudC5kYXRh
ID09ICJub3BvcnQiKSB7CisgICAgICAgIGlmICghZXZlbnQucG9ydHMpCisgICAgICAgICAgICB0
ZXN0UGFzc2VkKCJldmVudC5wb3J0cyBpcyBudWxsIHdoZW4gbm8gcG9ydCBzZW50Iik7CisgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgIHRlc3RGYWlsZWQoImV2ZW50LnBvcnRzIHNob3VsZCBiZSBu
dWxsIHdoZW4gbm8gcG9ydCBzZW50Iik7CisgICAgfSBlbHNlIGlmIChldmVudC5kYXRhID09ICJ6
ZXJvIHBvcnRzIikgeworICAgICAgICBpZiAoIWV2ZW50LnBvcnRzKQorICAgICAgICAgICAgdGVz
dFBhc3NlZCgiZXZlbnQucG9ydHMgaXMgbnVsbCB3aGVuIGVtcHR5IGFycmF5IHNlbnQiKTsKKyAg
ICAgICAgZWxzZQorICAgICAgICAgICAgdGVzdEZhaWxlZCgiZXZlbnQucG9ydHMgc2hvdWxkIGJl
IG51bGwgd2hlbiBlbXB0eSBhcnJheSBzZW50Iik7CisgICAgfSBlbHNlIGlmIChldmVudC5kYXRh
ID09ICJ0d28gcG9ydHMiKSB7CisgICAgICAgIGlmICghZXZlbnQucG9ydHMpIHsKKyAgICAgICAg
ICAgIHRlc3RGYWlsZWQoImV2ZW50LnBvcnRzIHNob3VsZCBiZSBub24tbnVsbCB3aGVuIHBvcnRz
IHNlbnQiKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBpZiAoZXZl
bnQucG9ydHMubGVuZ3RoID09IDIpCisgICAgICAgICAgICB0ZXN0UGFzc2VkKCJldmVudC5wb3J0
cyBjb250YWlucyB0d28gcG9ydHMgd2hlbiB0d28gcG9ydHMgc2VudCIpOworICAgICAgICBlbHNl
CisgICAgICAgICAgICB0ZXN0RmFpbGVkKCJldmVudC5wb3J0cyBjb250YWluZWQgIiArIGV2ZW50
LnBvcnRzLmxlbmd0aCArICIgd2hlbiB0d28gcG9ydHMgc2VudCIpOworICAgIH0gZWxzZSBpZiAo
ZXZlbnQuZGF0YSA9PSAiZmFpbGVkIHBvcnRzIikgeworICAgICAgICBpZiAoZXZlbnQucG9ydHMu
bGVuZ3RoID09IDIpCisgICAgICAgICAgICB0ZXN0UGFzc2VkKCJldmVudC5wb3J0cyBjb250YWlu
cyB0d28gcG9ydHMgd2hlbiB0d28gcG9ydHMgcmUtc2VudCBhZnRlciBlcnJvciIpOworICAgICAg
ICBlbHNlCisgICAgICAgICAgICB0ZXN0RmFpbGVkKCJldmVudC5wb3J0cyBjb250YWluZWQgIiAr
IGV2ZW50LnBvcnRzLmxlbmd0aCArICIgd2hlbiB0d28gcG9ydHMgcmUtc2VudCBhZnRlciBlcnJv
ciIpOworICAgIH0gZWxzZSBpZiAoZXZlbnQuZGF0YS5pbmRleE9mKCJQQVNTIikgPj0gMCkKKyAg
ICAgICAgdGVzdFBhc3NlZChldmVudC5kYXRhLnN1YnN0cmluZyg0KSk7CisgICAgZWxzZQorICAg
ICAgICB0ZXN0RmFpbGVkKGV2ZW50LmRhdGEuc3Vic3RyaW5nKDQpKTsKK30KKwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZmFzdC93b3JrZXJzL3Jlc291cmNlcy93b3JrZXItY29udGV4dC10aHJl
YWQtbXVsdGktcG9ydC5qcyBiL0xheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy9yZXNvdXJjZXMvd29y
a2VyLWNvbnRleHQtdGhyZWFkLW11bHRpLXBvcnQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uMjhlZWY2NwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qv
d29ya2Vycy9yZXNvdXJjZXMvd29ya2VyLWNvbnRleHQtdGhyZWFkLW11bHRpLXBvcnQuanMKQEAg
LTAsMCArMSw1NyBAQAordmFyIGNoYW5uZWwgPSBuZXcgTWVzc2FnZUNoYW5uZWwoKTsKK3ZhciBj
aGFubmVsMiA9IG5ldyBNZXNzYWdlQ2hhbm5lbCgpOwordmFyIGNoYW5uZWwzID0gbmV3IE1lc3Nh
Z2VDaGFubmVsKCk7CisKK3Bvc3RNZXNzYWdlKCJub3BvcnQiKTsKK3Bvc3RNZXNzYWdlKCJ6ZXJv
IHBvcnRzIiwgW10pOworcG9zdE1lc3NhZ2UoInR3byBwb3J0cyIsIFtjaGFubmVsMi5wb3J0MSwg
Y2hhbm5lbDIucG9ydDJdKTsKKworLy8gTm93IHRlc3QgdmFyaW91cyBmYWlsdXJlIGNhc2VzCit0
cnkgeworICAgIHBvc3RNZXNzYWdlKCJudWxsIHBvcnQiLCBbY2hhbm5lbDMucG9ydDEsIG51bGws
IGNoYW5uZWwzLnBvcnQyXSk7CisgICAgdGVzdEZhaWxlZCgicG9zdGluZyBhIG51bGwgcG9ydCBk
aWQgbm90IHRocm93Iik7Cit9IGNhdGNoIChlKSB7CisgICAgdGVzdFBhc3NlZCgicG9zdGluZyBh
IG51bGwgcG9ydCBkaWQgdGhyb3c6ICIgKyBlKTsKK30KKwordHJ5IHsKKyAgICBwb3N0TWVzc2Fn
ZSgibm90QVBvcnQiLCBbY2hhbm5lbDMucG9ydDEsIHt9LCBjaGFubmVsMy5wb3J0Ml0pOworICAg
IHRlc3RGYWlsZWQoInBvc3RpbmcgYSBub24tcG9ydCBkaWQgbm90IHRocm93Iik7Cit9IGNhdGNo
IChlKSB7CisgICAgdGVzdFBhc3NlZCgicG9zdGluZyBhIG5vbi1wb3J0IGRpZCB0aHJvdzogIiAr
IGUpOworfQorCit0cnkgeworICAgIHBvc3RNZXNzYWdlKCJmYWlsZWQgcG9ydHMiLCBbY2hhbm5l
bDMucG9ydDEsIGNoYW5uZWwzLnBvcnQyXSk7Cit9IGNhdGNoIChlKSB7CisgICAgdGVzdEZhaWxl
ZCgicmVwb3N0aW5nIHBvcnRzIHRocmV3IGFuIGV4Y2VwdGlvbjogIiArIGUpOworfQorCit0cnkg
eworICAgIHBvc3RNZXNzYWdlKCJub3RBbkFycmF5IiwgY2hhbm5lbDMucG9ydDEpOworICAgIHRl
c3RGYWlsZWQoInBvc3RpbmcgYSBub24tYXJyYXkgc2hvdWxkIHRocm93Iik7Cit9IGNhdGNoIChl
KSB7CisgICAgdGVzdFBhc3NlZCgicG9zdGluZyBhIG5vbi1hcnJheSBkaWQgdGhyb3c6ICIgKyBl
KTsKK30KKwordHJ5IHsKKyAgICBwb3N0TWVzc2FnZSgibm90QVNlcXVlbmNlIiwgW3tsZW5ndGg6
IDN9XSk7CisgICAgdGVzdEZhaWxlZCgicG9zdGluZyBhIG5vbi1zZXF1ZW5jZSBzaG91bGQgdGhy
b3ciKTsKK30gY2F0Y2ggKGUpIHsKKyAgIHRlc3RQYXNzZWQoInBvc3RpbmcgYSBub24tc2VxdWVu
Y2UgZGlkIHRocm93OiAiICsgZSk7Cit9CisKKworcG9zdE1lc3NhZ2UoImRvbmUiLCBbY2hhbm5l
bC5wb3J0Ml0pOworY2hhbm5lbC5wb3J0MS5wb3N0TWVzc2FnZSgiZG9uZSIpOworCisKK2Z1bmN0
aW9uIHRlc3RGYWlsZWQobXNnKSB7CisgICAgcG9zdE1lc3NhZ2UoIkZBSUwiK21zZyk7Cit9CisK
KworZnVuY3Rpb24gdGVzdFBhc3NlZChtc2cpIHsKKyAgICBwb3N0TWVzc2FnZSgiUEFTUyIrbXNn
KTsKK30KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC93b3JrZXJzL3Jlc291cmNlcy93
b3JrZXItbWVzc2FnZXBvcnQuanMgYi9MYXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvcmVzb3VyY2Vz
L3dvcmtlci1tZXNzYWdlcG9ydC5qcwppbmRleCA4NDBmMDBjLi5hN2I0Zjc3IDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvcmVzb3VyY2VzL3dvcmtlci1tZXNzYWdlcG9ydC5q
cworKysgYi9MYXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvcmVzb3VyY2VzL3dvcmtlci1tZXNzYWdl
cG9ydC5qcwpAQCAtMSwyNiArMSwyNiBAQAogb25tZXNzYWdlID0gZnVuY3Rpb24oZXZ0KSB7CiAg
ICAgaWYgKGV2dC5kYXRhID09ICJwb3J0IikgewotICAgICAgICBpZiAoZXZ0Lm1lc3NhZ2VQb3J0
KSB7CisgICAgICAgIGlmIChldnQucG9ydHMpIHsKICAgICAgICAgICAgIHBvc3RNZXNzYWdlKCJQ
QVNTOiBSZWNlaXZlZCBtZXNzYWdlIHBvcnQiKTsKLSAgICAgICAgICAgIGV2dC5tZXNzYWdlUG9y
dC5vbm1lc3NhZ2UgPSBwaW5nQmFjazsKLSAgICAgICAgICAgIGV2dC5tZXNzYWdlUG9ydC5zdGFy
dCgpOworICAgICAgICAgICAgZXZ0LnBvcnRzWzBdLm9ubWVzc2FnZSA9IHBpbmdCYWNrOworICAg
ICAgICAgICAgZXZ0LnBvcnRzWzBdLnN0YXJ0KCk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAg
ICAgICBwb3N0TWVzc2FnZSgiRkFJTDogRGlkIG5vdCByZWNlaXZlIGV4cGVjdGVkIE1lc3NhZ2VQ
b3J0Iik7CiAgICAgICAgIH0KICAgICB9IGVsc2UgaWYgKGV2dC5kYXRhID09ICJub3BvcnQiKSB7
Ci0gICAgICAgIGlmIChldnQubWVzc2FnZVBvcnQpIHsKKyAgICAgICAgaWYgKGV2dC5wb3J0cykg
ewogICAgICAgICAgICAgcG9zdE1lc3NhZ2UoIkZBSUw6IFJlY2VpdmVkIG1lc3NhZ2UgcG9ydCIp
OwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgcG9zdE1lc3NhZ2UoIlBBU1M6IGV2dC5t
ZXNzYWdlUG9ydCA9IG51bGwgYXMgZXhwZWN0ZWQiKTsKKyAgICAgICAgICAgIHBvc3RNZXNzYWdl
KCJQQVNTOiBldnQucG9ydHMgPSBudWxsIGFzIGV4cGVjdGVkIik7CiAgICAgICAgIH0KICAgICB9
IGVsc2UgaWYgKGV2dC5kYXRhID09ICJzcGFtIikgewogICAgICAgICBmb3IgKHZhciBpID0gMCA7
IGkgPCAxMDAwIDsgaSsrKSB7Ci0gICAgICAgICAgICBldnQubWVzc2FnZVBvcnQucG9zdE1lc3Nh
Z2UoaSk7CisgICAgICAgICAgICBldnQucG9ydHNbMF0ucG9zdE1lc3NhZ2UoaSk7CiAgICAgICAg
IH0KICAgICAgICAgcG9zdE1lc3NhZ2UoInNwYW1Eb25lIik7CiAgICAgfSBlbHNlIGlmIChldnQu
ZGF0YSA9PSAiZ2V0cG9ydCIpIHsKICAgICAgICAgdmFyIGNoYW5uZWwgPSBuZXcgTWVzc2FnZUNo
YW5uZWwoKTsKLSAgICAgICAgcG9zdE1lc3NhZ2UoInBvcnQiLCBjaGFubmVsLnBvcnQxKTsKKyAg
ICAgICAgcG9zdE1lc3NhZ2UoInBvcnQiLCBbY2hhbm5lbC5wb3J0MV0pOwogICAgICAgICBjaGFu
bmVsLnBvcnQyLm9ubWVzc2FnZSA9IHBpbmdCYWNrOwogICAgICAgICBjaGFubmVsLnBvcnQyLnN0
YXJ0KCk7CiAgICAgfSBlbHNlIHsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvd29ya2Vy
cy9yZXNvdXJjZXMvd29ya2VyLW11bHRpLXBvcnQuanMgYi9MYXlvdXRUZXN0cy9mYXN0L3dvcmtl
cnMvcmVzb3VyY2VzL3dvcmtlci1tdWx0aS1wb3J0LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLjRlOTEzYTMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0
L3dvcmtlcnMvcmVzb3VyY2VzL3dvcmtlci1tdWx0aS1wb3J0LmpzCkBAIC0wLDAgKzEsMzcgQEAK
K2Rlc2NyaXB0aW9uKCJUaGlzIHRlc3QgY2hlY2tzIHRoZSB2YXJpb3VzIHVzZSBjYXNlcyBhcm91
bmQgc2VuZGluZyBtdWx0aXBsZSBwb3J0cyB0aHJvdWdoIFdvcmtlci5wb3N0TWVzc2FnZSIpOwor
CitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERv
bmUoKTsKK30KKwordmFyIGNoYW5uZWwgPSBuZXcgTWVzc2FnZUNoYW5uZWwoKTsKK3ZhciBjaGFu
bmVsMiA9IG5ldyBNZXNzYWdlQ2hhbm5lbCgpOwordmFyIGNoYW5uZWwzID0gbmV3IE1lc3NhZ2VD
aGFubmVsKCk7Cit2YXIgY2hhbm5lbDQgPSBuZXcgTWVzc2FnZUNoYW5uZWwoKTsKKwordmFyIHdv
cmtlciA9IG5ldyBXb3JrZXIoInJlc291cmNlcy93b3JrZXItdGhyZWFkLW11bHRpLXBvcnQuanMi
KTsKK3dvcmtlci5wb3N0TWVzc2FnZSgibm9wb3J0Iik7Cit3b3JrZXIucG9zdE1lc3NhZ2UoInpl
cm8gcG9ydHMiLCBbXSk7Cit3b3JrZXIucG9zdE1lc3NhZ2UoInR3byBwb3J0cyIsIFtjaGFubmVs
Mi5wb3J0MSwgY2hhbm5lbDIucG9ydDJdKTsKKworLy8gTm93IHRlc3QgdmFyaW91cyBmYWlsdXJl
IGNhc2VzCitzaG91bGRUaHJvdygnd29ya2VyLnBvc3RNZXNzYWdlKCJudWxsIHBvcnQiLCBbY2hh
bm5lbDMucG9ydDEsIG51bGwsIGNoYW5uZWwzLnBvcnQyXSknKTsKK3Nob3VsZFRocm93KCd3b3Jr
ZXIucG9zdE1lc3NhZ2UoIm5vdEFQb3J0IiwgW2NoYW5uZWwzLnBvcnQxLCB7fSwgY2hhbm5lbDMu
cG9ydDJdKScpOworLy8gU2hvdWxkIGJlIE9LIHRvIHNlbmQgY2hhbm5lbDMucG9ydDEvMiAoc2hv
dWxkIG5vdCBoYXZlIGJlZW4gZGlzZW50YW5nbGVkIGJ5IHRoZSBwcmV2aW91cyBmYWlsZWQgY2Fs
bHMpLgord29ya2VyLnBvc3RNZXNzYWdlKCJmYWlsZWQgcG9ydHMiLCBbY2hhbm5lbDMucG9ydDEs
IGNoYW5uZWwzLnBvcnQyXSk7CisKK3Nob3VsZFRocm93KCd3b3JrZXIucG9zdE1lc3NhZ2UoIm5v
dEFuQXJyYXkiLCBjaGFubmVsMy5wb3J0MSknKQorc2hvdWxkVGhyb3coJ3dvcmtlci5wb3N0TWVz
c2FnZSgibm90QVNlcXVlbmNlIiwgW3tsZW5ndGg6IDN9XSknKTsKKword29ya2VyLnBvc3RNZXNz
YWdlKCJkb25lIiwgW2NoYW5uZWwucG9ydDJdKTsKK3dvcmtlci5vbm1lc3NhZ2UgPSBmdW5jdGlv
bihldmVudCkgeworICAgIC8vIFJlcG9ydCByZXN1bHRzIGZyb20gd29ya2VyIHRocmVhZC4KKyAg
ICBpZiAoZXZlbnQuZGF0YSA9PSAiZG9uZSIpCisgICAgICAgIGNoYW5uZWwucG9ydDEub25tZXNz
YWdlID0gZG9uZTsKKyAgICBlbHNlIGlmIChldmVudC5kYXRhLmluZGV4T2YoIlBBU1MiKSA+PSAw
KQorICAgICAgICB0ZXN0UGFzc2VkKGV2ZW50LmRhdGEuc3Vic3RyaW5nKDQpKTsKKyAgICBlbHNl
CisgICAgICAgIHRlc3RGYWlsZWQoZXZlbnQuZGF0YS5zdWJzdHJpbmcoNCkpOworfQorCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvcmVzb3VyY2VzL3dvcmtlci10aHJlYWQt
bXVsdGktcG9ydC5qcyBiL0xheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy9yZXNvdXJjZXMvd29ya2Vy
LXRocmVhZC1tdWx0aS1wb3J0LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu
LmJmMzVlYjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvcmVz
b3VyY2VzL3dvcmtlci10aHJlYWQtbXVsdGktcG9ydC5qcwpAQCAtMCwwICsxLDQxIEBACitvbm1l
c3NhZ2UgPSBmdW5jdGlvbihldmVudCkgeworICAgIGlmIChldmVudC5kYXRhID09ICJub3BvcnQi
KSB7CisgICAgICAgIGlmICghZXZlbnQucG9ydHMpCisgICAgICAgICAgICB0ZXN0UGFzc2VkKCJl
dmVudC5wb3J0cyBpcyBudWxsIHdoZW4gbm8gcG9ydCBzZW50Iik7CisgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgIHRlc3RGYWlsZWQoImV2ZW50LnBvcnRzIHNob3VsZCBiZSBudWxsIHdoZW4gbm8g
cG9ydCBzZW50Iik7CisgICAgfSBlbHNlIGlmIChldmVudC5kYXRhID09ICJ6ZXJvIHBvcnRzIikg
eworICAgICAgICBpZiAoIWV2ZW50LnBvcnRzKQorICAgICAgICAgICAgdGVzdFBhc3NlZCgiZXZl
bnQucG9ydHMgaXMgbnVsbCB3aGVuIGVtcHR5IGFycmF5IHNlbnQiKTsKKyAgICAgICAgZWxzZQor
ICAgICAgICAgICAgdGVzdEZhaWxlZCgiZXZlbnQucG9ydHMgc2hvdWxkIGJlIG51bGwgd2hlbiBl
bXB0eSBhcnJheSBzZW50Iik7CisgICAgfSBlbHNlIGlmIChldmVudC5kYXRhID09ICJ0d28gcG9y
dHMiKSB7CisgICAgICAgIGlmICghZXZlbnQucG9ydHMpIHsKKyAgICAgICAgICAgIHRlc3RGYWls
ZWQoImV2ZW50LnBvcnRzIHNob3VsZCBiZSBub24tbnVsbCB3aGVuIHBvcnRzIHNlbnQiKTsKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBpZiAoZXZlbnQucG9ydHMubGVu
Z3RoID09IDIpCisgICAgICAgICAgICB0ZXN0UGFzc2VkKCJldmVudC5wb3J0cyBjb250YWlucyB0
d28gcG9ydHMgd2hlbiB0d28gcG9ydHMgc2VudCIpOworICAgICAgICBlbHNlCisgICAgICAgICAg
ICB0ZXN0RmFpbGVkKCJldmVudC5wb3J0cyBjb250YWluZWQgIiArIGV2ZW50LnBvcnRzLmxlbmd0
aCArICIgd2hlbiB0d28gcG9ydHMgc2VudCIpOworICAgIH0gZWxzZSBpZiAoZXZlbnQuZGF0YSA9
PSAiZmFpbGVkIHBvcnRzIikgeworICAgICAgICBpZiAoZXZlbnQucG9ydHMubGVuZ3RoID09IDIp
CisgICAgICAgICAgICB0ZXN0UGFzc2VkKCJldmVudC5wb3J0cyBjb250YWlucyB0d28gcG9ydHMg
d2hlbiB0d28gcG9ydHMgcmUtc2VudCBhZnRlciBlcnJvciIpOworICAgICAgICBlbHNlCisgICAg
ICAgICAgICB0ZXN0RmFpbGVkKCJldmVudC5wb3J0cyBjb250YWluZWQgIiArIGV2ZW50LnBvcnRz
Lmxlbmd0aCArICIgd2hlbiB0d28gcG9ydHMgcmUtc2VudCBhZnRlciBlcnJvciIpOworICAgIH0g
ZWxzZSBpZiAoZXZlbnQuZGF0YSA9PSAiZG9uZSIpIHsKKyAgICAgICAgcG9zdE1lc3NhZ2UoImRv
bmUiKTsKKyAgICAgICAgZXZlbnQucG9ydHNbMF0ucG9zdE1lc3NhZ2UoImRvbmUiKTsKKyAgICB9
IGVsc2UKKyAgICAgICAgdGVzdEZhaWxlZCgiUmVjZWl2ZWQgdW5leHBlY3RlZCBtZXNzYWdlOiAi
ICsgZXZlbnQuZGF0YSk7Cit9OworCitmdW5jdGlvbiB0ZXN0UGFzc2VkKG1zZykKK3sKKyAgICBw
b3N0TWVzc2FnZSgiUEFTUyIrbXNnKTsKK30KKworZnVuY3Rpb24gdGVzdEZhaWxlZChtc2cpCit7
CisgICAgcG9zdE1lc3NhZ2UoIkZBSUwiK21zZyk7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L3dvcmtlcnMvd29ya2VyLWNsb25lcG9ydC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC93
b3JrZXJzL3dvcmtlci1jbG9uZXBvcnQuaHRtbAppbmRleCBmNWQyYzYzLi42ZGNiYjgwIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvd29ya2VyLWNsb25lcG9ydC5odG1sCisr
KyBiL0xheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy93b3JrZXItY2xvbmVwb3J0Lmh0bWwKQEAgLTIz
LDEyICsyMywxMiBAQCB2YXIgc3RvcENsb25pbmcgPSBmYWxzZTsKIGNsb25lQ2hhbm5lbC5wb3J0
MS5vbm1lc3NhZ2UgPSBjbG9uZUNoYW5uZWwucG9ydDIub25tZXNzYWdlID0gcmVzZW5kUG9ydDsK
IGNsb25lQ2hhbm5lbC5wb3J0MS5zdGFydCgpOwogY2xvbmVDaGFubmVsLnBvcnQyLnN0YXJ0KCk7
Ci1jbG9uZUNoYW5uZWwucG9ydDEucG9zdE1lc3NhZ2UoIiIsIGNoYW5uZWwucG9ydDIpOworY2xv
bmVDaGFubmVsLnBvcnQxLnBvc3RNZXNzYWdlKCIiLCBbY2hhbm5lbC5wb3J0Ml0pOwogCiAvLyBD
cmVhdGUgd29ya2VyIHdpdGggb3RoZXIgZW5kIG9mIHBvcnQgYW5kIGhhdmUgaXQgc2VuZCBtZXNz
YWdlcyBiYWNrIHRvIHVzCiAvLyB3aGlsZSB3ZSBjbG9uZSBvdXIgZW5kIG9mIHRoZSBwb3J0IHJl
cGVhdGVkbHkuCiB2YXIgd29ya2VyID0gbmV3IFdvcmtlcigicmVzb3VyY2VzL3dvcmtlci1jbG9u
ZXBvcnQuanMiKTsKLXdvcmtlci5wb3N0TWVzc2FnZSgicG9zdEJhY2sgIiArIG51bU1lc3NhZ2Vz
LCBjaGFubmVsLnBvcnQxKTsKK3dvcmtlci5wb3N0TWVzc2FnZSgicG9zdEJhY2sgIiArIG51bU1l
c3NhZ2VzLCBbY2hhbm5lbC5wb3J0MV0pOwogCiAvLyBUZXN0IHBvc3RpbmcgYmFjayA1MDAwMCBt
ZXNzYWdlcywgbWFrZSBzdXJlIG9yZGVyaW5nIGlzIGZpbmUKIHdvcmtlci5vbm1lc3NhZ2UgPSBm
dW5jdGlvbihldnQpIHsKQEAgLTQ0LDkgKzQ0LDE0IEBAIHdvcmtlci5vbm1lc3NhZ2UgPSBmdW5j
dGlvbihldnQpIHsKIHZhciBudW1DbG9uZXMgPSAwOwogZnVuY3Rpb24gcmVzZW5kUG9ydChldnQp
CiB7CisgICAgaWYgKCFldnQucG9ydHMpCisgICAgICAgIGxvZygiRkFJTDogZXZ0LnBvcnRzIG5v
dCBzZXQiKTsKKyAgICBpZiAoZXZ0LnBvcnRzLmxlbmd0aCAhPSAxKQorICAgICAgICBsb2coIkZB
SUw6IHBvcnRzLmxlbmd0aCA9ICIgKyBldnQucG9ydHMubGVuZ3RoKTsKKwogICAgIGlmICghc3Rv
cENsb25pbmcpIHsKICAgICAgICAgbnVtQ2xvbmVzKys7Ci0gICAgICAgIGV2dC50YXJnZXQucG9z
dE1lc3NhZ2UoIiIsIGV2dC5tZXNzYWdlUG9ydCk7CisgICAgICAgIGV2dC50YXJnZXQucG9zdE1l
c3NhZ2UoIiIsIGV2dC5wb3J0cyk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgaWYgKG51bUNsb25l
cyA8IDEwMDApIHsKICAgICAgICAgICAgIC8vIElmIHdlIGRpZG4ndCBjbG9uZSBhdCBsZWFzdCAx
MDAwIHRpbWVzLCB0aGVuIHRoZXJlJ3Mgc29tZXRoaW5nIGFtaXNzLgpAQCAtNjAsNyArNjUsNyBA
QCBmdW5jdGlvbiByZXNlbmRQb3J0KGV2dCkKICAgICAgICAgdmFyIHRpbWVyID0gc2V0VGltZW91
dChmdW5jdGlvbigpIHsKICAgICAgICAgICAgIGxvZygiRkFJTFVSRTogUmVjZWl2ZWQ6ICIgKyBp
dGVtTnVtICsgIiBldmVudHMgLSBleHBlY3RlZDogIiArIG51bU1lc3NhZ2VzKTsKICAgICAgICAg
fSwgMTApOwotICAgICAgICBldnQubWVzc2FnZVBvcnQub25tZXNzYWdlID0gZnVuY3Rpb24oZXZl
bnQpIHsKKyAgICAgICAgZXZ0LnBvcnRzWzBdLm9ubWVzc2FnZSA9IGZ1bmN0aW9uKGV2ZW50KSB7
CiAgICAgICAgICAgICB2YXIgZG9uZSA9IGZhbHNlOwogICAgICAgICAgICAgaWYgKGV2ZW50LmRh
dGEgPT0gaXRlbU51bSkgewogICAgICAgICAgICAgICAgIGl0ZW1OdW0rKzsKQEAgLTc3LDggKzgy
LDggQEAgZnVuY3Rpb24gcmVzZW5kUG9ydChldnQpCiAgICAgICAgICAgICAgICAgZ2MoKTsKICAg
ICAgICAgICAgICAgICBzZXRUaW1lb3V0KHJlcG9ydERvbmUsIDEwMCk7ICAvLyBNYWtlIHN1cmUg
bm8gdW5leHBlY3RlZCBldmVudHMgY29tZSBpbi4KICAgICAgICAgICAgIH0KLSAgICAgICB9Ci0g
ICAgICAgIGV2dC5tZXNzYWdlUG9ydC5zdGFydCgpOworICAgICAgICB9CisgICAgICAgIGV2dC5w
b3J0c1swXS5zdGFydCgpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFz
dC93b3JrZXJzL3dvcmtlci1jb250ZXh0LW11bHRpLXBvcnQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvZmFzdC93b3JrZXJzL3dvcmtlci1jb250ZXh0LW11bHRpLXBvcnQtZXhwZWN0ZWQudHh0
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlhYjA5OTEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvd29ya2VyLWNvbnRleHQtbXVsdGktcG9y
dC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNiBAQAorVGhpcyB0ZXN0IGNoZWNrcyB0aGUgdmFy
aW91cyB1c2UgY2FzZXMgYXJvdW5kIHNlbmRpbmcgbXVsdGlwbGUgcG9ydHMgdGhyb3VnaCBXb3Jr
ZXJHbG9iYWxTY29wZS5wb3N0TWVzc2FnZQorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBz
ZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisK
KworUEFTUyBldmVudC5wb3J0cyBpcyBudWxsIHdoZW4gbm8gcG9ydCBzZW50CitQQVNTIGV2ZW50
LnBvcnRzIGlzIG51bGwgd2hlbiBlbXB0eSBhcnJheSBzZW50CitQQVNTIGV2ZW50LnBvcnRzIGNv
bnRhaW5zIHR3byBwb3J0cyB3aGVuIHR3byBwb3J0cyBzZW50CitQQVNTIHBvc3RpbmcgYSBudWxs
IHBvcnQgZGlkIHRocm93OiBbb2JqZWN0IERPTUV4Y2VwdGlvbl0KK1BBU1MgcG9zdGluZyBhIG5v
bi1wb3J0IGRpZCB0aHJvdzogVHlwZUVycm9yOiBUeXBlIGVycm9yCitQQVNTIGV2ZW50LnBvcnRz
IGNvbnRhaW5zIHR3byBwb3J0cyB3aGVuIHR3byBwb3J0cyByZS1zZW50IGFmdGVyIGVycm9yCitQ
QVNTIHBvc3RpbmcgYSBub24tYXJyYXkgZGlkIHRocm93OiBUeXBlRXJyb3I6IFR5cGUgZXJyb3IK
K1BBU1MgcG9zdGluZyBhIG5vbi1zZXF1ZW5jZSBkaWQgdGhyb3c6IFR5cGVFcnJvcjogVHlwZSBl
cnJvcgorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvd29y
a2Vycy93b3JrZXItY29udGV4dC1tdWx0aS1wb3J0Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3dv
cmtlcnMvd29ya2VyLWNvbnRleHQtbXVsdGktcG9ydC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLjUwNzIyNWIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9m
YXN0L3dvcmtlcnMvd29ya2VyLWNvbnRleHQtbXVsdGktcG9ydC5odG1sCkBAIC0wLDAgKzEsMTAg
QEAKKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi9qcy9yZXNvdXJjZXMv
anMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0
LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+
PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3dv
cmtlci11dGlsLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvd29ya2VyLWNv
bnRleHQtbXVsdGktcG9ydC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+ClwgTm8gbmV3bGluZSBhdCBl
bmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC93b3JrZXJzL3dvcmtlci1t
ZXNzYWdlcG9ydC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvd29ya2Vy
LW1lc3NhZ2Vwb3J0LWV4cGVjdGVkLnR4dAppbmRleCA0YWJlYTBlLi45MDM5OGUxIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvd29ya2VyLW1lc3NhZ2Vwb3J0LWV4cGVjdGVk
LnR4dAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvd29ya2VyLW1lc3NhZ2Vwb3J0LWV4
cGVjdGVkLnR4dApAQCAtMSw2ICsxLDYgQEAKIFRlc3QgdGhhdCBwYWdlcyBhbmQgd29ya2VycyBj
YW4gc2VuZCBNZXNzYWdlUG9ydHMgdG8gb25lIGFub3RoZXIuIFNob3VsZCBwcmludCAiRE9ORSIg
d2hlbiBkb25lLgogCi1QQVNTOiBldnQubWVzc2FnZVBvcnQgPSBudWxsIGFzIGV4cGVjdGVkCitQ
QVNTOiBldnQucG9ydHMgPSBudWxsIGFzIGV4cGVjdGVkCiBQQVNTOiBSZWNlaXZlZCBtZXNzYWdl
IHBvcnQKIFBBU1M6IFJlY2VpdmVkIHJlc3BvbnNlIGZyb20gV29ya2VyIHZpYSBNZXNzYWdlUG9y
dAogUEFTUzogR290IHBvcnQgZnJvbSB3b3JrZXIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zh
c3Qvd29ya2Vycy93b3JrZXItbWVzc2FnZXBvcnQtZ2MuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3Qv
d29ya2Vycy93b3JrZXItbWVzc2FnZXBvcnQtZ2MuaHRtbAppbmRleCA0OGM5N2E1Li4xYjg5OTc5
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvd29ya2VyLW1lc3NhZ2Vwb3J0
LWdjLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC93b3JrZXJzL3dvcmtlci1tZXNzYWdlcG9y
dC1nYy5odG1sCkBAIC0xNiw3ICsxNiw3IEBAIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xs
ZXIpIHsKIC8vIFRlc3QgdGhhdCB3b3JrZXJzIHN0YXkgYWxpdmUgZXZlbiB0aG91Z2ggdGhleSBh
cmUgb25seSByZWFjaGFibGUgdmlhIG1lc3NhZ2UgcG9ydHMuCiB2YXIgd29ya2VyID0gbmV3IFdv
cmtlcigicmVzb3VyY2VzL3dvcmtlci1tZXNzYWdlcG9ydC5qcyIpOwogdmFyIGNoYW5uZWwgPSBu
ZXcgTWVzc2FnZUNoYW5uZWwoKTsKLXdvcmtlci5wb3N0TWVzc2FnZSgicG9ydCIsIGNoYW5uZWwu
cG9ydDEpOword29ya2VyLnBvc3RNZXNzYWdlKCJwb3J0IiwgW2NoYW5uZWwucG9ydDFdKTsKIHdv
cmtlciA9IDA7CiAKIGNoYW5uZWwucG9ydDIucG9zdE1lc3NhZ2UoInBpbmciKTsKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy93b3JrZXItbWVzc2FnZXBvcnQuaHRtbCBiL0xh
eW91dFRlc3RzL2Zhc3Qvd29ya2Vycy93b3JrZXItbWVzc2FnZXBvcnQuaHRtbAppbmRleCBjMmE2
ZWJiLi44ZjQ3YWYyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvd29ya2Vy
LW1lc3NhZ2Vwb3J0Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC93b3JrZXJzL3dvcmtlci1t
ZXNzYWdlcG9ydC5odG1sCkBAIC0yMCw3ICsyMCw3IEBAIHZhciBjaGFubmVsID0gbmV3IE1lc3Nh
Z2VDaGFubmVsKCk7CiB3b3JrZXIucG9zdE1lc3NhZ2UoIm5vcG9ydCIpOwogd29ya2VyLm9ubWVz
c2FnZSA9IGZ1bmN0aW9uKGV2dCkgewogICAgIGxvZyhldnQuZGF0YSk7Ci0gICAgd29ya2VyLnBv
c3RNZXNzYWdlKCJwb3J0IiwgY2hhbm5lbC5wb3J0MSk7CisgICAgd29ya2VyLnBvc3RNZXNzYWdl
KCJwb3J0IiwgW2NoYW5uZWwucG9ydDFdKTsKICAgICB3b3JrZXIub25tZXNzYWdlID0gZnVuY3Rp
b24oZXZ0KSB7CiAgICAgICAgIGxvZyhldnQuZGF0YSk7CiAgICAgfQpAQCAtNDUsMTIgKzQ1LDE0
IEBAIGNoYW5uZWwucG9ydDIuc3RhcnQoKTsKIGZ1bmN0aW9uIGF3YWl0UG9ydEZyb21Xb3JrZXIo
ZXZ0KQogewogICAgIGlmIChldnQuZGF0YSA9PSAicG9ydCIpIHsKLSAgICAgICAgaWYgKCFldnQu
bWVzc2FnZVBvcnQpIHsKKyAgICAgICAgaWYgKCFldnQucG9ydHMpIHsKICAgICAgICAgICAgIGxv
ZygiRkFJTDogRGlkIG5vdCBnZXQgcG9ydCBmcm9tIHdvcmtlciIpOworICAgICAgICB9IGVsc2Ug
aWYgKGV2dC5wb3J0cy5sZW5ndGggIT0gMSkgeworICAgICAgICAgICAgbG9nKCJGQUlMOiBHb3Qg
dGhlIHdyb25nIG51bWJlciBvZiBwb3J0cyBmcm9tIHdvcmtlcjogIiArIGV2dC5wb3J0cy5sZW5n
dGgpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgbG9nKCJQQVNTOiBHb3QgcG9ydCBm
cm9tIHdvcmtlciIpOwotICAgICAgICAgICAgZXZ0Lm1lc3NhZ2VQb3J0LnBvc3RNZXNzYWdlKCJw
aW5nIik7Ci0gICAgICAgICAgICBldnQubWVzc2FnZVBvcnQub25tZXNzYWdlID0gZnVuY3Rpb24o
ZXZ0KSB7CisgICAgICAgICAgICBldnQucG9ydHNbMF0ucG9zdE1lc3NhZ2UoInBpbmciKTsKKyAg
ICAgICAgICAgIGV2dC5wb3J0c1swXS5vbm1lc3NhZ2UgPSBmdW5jdGlvbihldnQpIHsKICAgICAg
ICAgICAgICAgICBpZiAoZXZ0LmRhdGEgPT0gInBvbmciKSB7CiAgICAgICAgICAgICAgICAgICAg
IGxvZygiUEFTUzogUmVjZWl2ZWQgZmluYWwgcmVzcG9uc2UgZnJvbSB3b3JrZXIiKTsKICAgICAg
ICAgICAgICAgICB9IGVsc2UgewpAQCAtNTgsNyArNjAsNyBAQCBmdW5jdGlvbiBhd2FpdFBvcnRG
cm9tV29ya2VyKGV2dCkKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgc3RhcnRT
cGFtVGVzdCgpOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgZXZ0Lm1lc3NhZ2VQb3J0LnN0
YXJ0KCk7CisgICAgICAgICAgICBldnQucG9ydHNbMF0uc3RhcnQoKTsKICAgICAgICAgfQogICAg
IH0gZWxzZSB7CiAgICAgICAgIGxvZyhldnQuZGF0YSk7CkBAIC02OSw3ICs3MSw3IEBAIGZ1bmN0
aW9uIHN0YXJ0U3BhbVRlc3QoKQogewogICAgIHZhciBjaGFubmVsID0gbmV3IE1lc3NhZ2VDaGFu
bmVsKCk7CiAgICAgd29ya2VyLm9ubWVzc2FnZSA9IGZ1bmN0aW9uICgpIHsgZ290U3BhbShjaGFu
bmVsLnBvcnQxKTsgfQotICAgIHdvcmtlci5wb3N0TWVzc2FnZSgic3BhbSIsIGNoYW5uZWwucG9y
dDIpOworICAgIHdvcmtlci5wb3N0TWVzc2FnZSgic3BhbSIsIFtjaGFubmVsLnBvcnQyXSk7CiB9
CiAKIGZ1bmN0aW9uIGdvdFNwYW0ocG9ydCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qv
d29ya2Vycy93b3JrZXItbXVsdGktcG9ydC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0
L3dvcmtlcnMvd29ya2VyLW11bHRpLXBvcnQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAuLjg4YjQwNjIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9mYXN0L3dvcmtlcnMvd29ya2VyLW11bHRpLXBvcnQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEs
MTYgQEAKK1RoaXMgdGVzdCBjaGVja3MgdGhlIHZhcmlvdXMgdXNlIGNhc2VzIGFyb3VuZCBzZW5k
aW5nIG11bHRpcGxlIHBvcnRzIHRocm91Z2ggV29ya2VyLnBvc3RNZXNzYWdlCisKK09uIHN1Y2Nl
c3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5
ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIHdvcmtlci5wb3N0TWVzc2FnZSgibnVsbCBwb3J0
IiwgW2NoYW5uZWwzLnBvcnQxLCBudWxsLCBjaGFubmVsMy5wb3J0Ml0pIHRocmV3IGV4Y2VwdGlv
biBFcnJvcjogSU5WQUxJRF9TVEFURV9FUlI6IERPTSBFeGNlcHRpb24gMTEuCitQQVNTIHdvcmtl
ci5wb3N0TWVzc2FnZSgibm90QVBvcnQiLCBbY2hhbm5lbDMucG9ydDEsIHt9LCBjaGFubmVsMy5w
b3J0Ml0pIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUgZXJyb3IuCitQQVNTIHdvcmtl
ci5wb3N0TWVzc2FnZSgibm90QW5BcnJheSIsIGNoYW5uZWwzLnBvcnQxKSB0aHJldyBleGNlcHRp
b24gVHlwZUVycm9yOiBUeXBlIGVycm9yLgorUEFTUyB3b3JrZXIucG9zdE1lc3NhZ2UoIm5vdEFT
ZXF1ZW5jZSIsIFt7bGVuZ3RoOiAzfV0pIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUg
ZXJyb3IuCitQQVNTIGV2ZW50LnBvcnRzIGlzIG51bGwgd2hlbiBubyBwb3J0IHNlbnQKK1BBU1Mg
ZXZlbnQucG9ydHMgaXMgbnVsbCB3aGVuIGVtcHR5IGFycmF5IHNlbnQKK1BBU1MgZXZlbnQucG9y
dHMgY29udGFpbnMgdHdvIHBvcnRzIHdoZW4gdHdvIHBvcnRzIHNlbnQKK1BBU1MgZXZlbnQucG9y
dHMgY29udGFpbnMgdHdvIHBvcnRzIHdoZW4gdHdvIHBvcnRzIHJlLXNlbnQgYWZ0ZXIgZXJyb3IK
KworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMv
d29ya2VyLW11bHRpLXBvcnQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy93b3JrZXIt
bXVsdGktcG9ydC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZhNWQ3
NzAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvd29ya2VyLW11
bHRpLXBvcnQuaHRtbApAQCAtMCwwICsxLDEwIEBACis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVz
aGVldCIgaHJlZj0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQg
c3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgor
PGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2
PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy93b3JrZXItdXRpbC5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0icmVzb3VyY2VzL3dvcmtlci1tdWx0aS1wb3J0LmpzIj48L3NjcmlwdD4KKzwvYm9k
eT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5n
ZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDg4MGFiZGEuLmQyMDZhMGUgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
NjkgQEAKKzIwMDktMDgtMjkgIERyZXcgV2lsc29uICA8YXR3aWxzb25AZ29vZ2xlLmNvbT4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBOZWVkIHRvIHVw
ZGF0ZSBKUyBiaW5kaW5ncyBhbmQgSURMIGZpbGVzIHRvIHN1cHBvcnQgbXVsdGlwbGUgbWVzc2Fn
ZSBwb3J0cyBpbiBwb3N0TWVzc2FnZSgpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yODQ2MAorCisgICAgICAgIEFkZGVkIG5ldyB0b0pTU2VxdWVuY2Uo
KSBBUEkgd2hpY2ggdmFsaWRhdGVzIHRoYXQgYSBKU1ZhbHVlIG1lZXRzIHRoZSBXZWJJREwgY3Jp
dGVyaWEgZm9yIGEgc2VxdWVuY2UuCisKKyAgICAgICAgVGVzdHM6IGZhc3QvZXZlbnRzL21lc3Nh
Z2UtcG9ydC1tdWx0aS5odG1sCisgICAgICAgICAgICAgICBmYXN0L3dvcmtlcnMvd29ya2VyLWNv
bnRleHQtbXVsdGktcG9ydC5odG1sCisgICAgICAgICAgICAgICBmYXN0L3dvcmtlcnMvd29ya2Vy
LW11bHRpLXBvcnQuaHRtbAorCisgICAgICAgICogR05VbWFrZWZpbGUuYW06CisgICAgICAgICog
V2ViQ29yZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUucHJvOgorICAgICAgICAqIFdlYkNvcmUu
dmNwcm9qL1dlYkNvcmUudmNwcm9qOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajoKKyAgICAgICAgKiBXZWJDb3JlU291cmNlcy5ia2w6CisgICAgICAgIEFkZGVk
IEpTTWVzc2FnZVBvcnRDdXN0b20uaCBhbmQgSlNNZXNzYWdlRXZlbnRDdXN0b20uY3BwLgorICAg
ICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0
b0pTU2VxdWVuY2UpOgorICAgICAgICBBZGRlZCB0b0pTU2VxdWVuY2UoKSBBUEkgdG8gZG8gdmFs
aWRhdGlvbiBvbiBzZXF1ZW5jZS1saWtlIG9iamVjdHMgcGVyIFdlYklETC4KKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVdp
bmRvd0N1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvdzo6cG9zdE1lc3Nh
Z2UpOgorICAgICAgICBBZGRlZCBjdXN0b20gaGFuZGxlciBmb3IgcG9zdE1lc3NhZ2UoKSB0aGF0
IGhhbmRsZXMgYmVpbmcgcGFzc2VkIE1lc3NhZ2VQb3J0QXJyYXlzLgorICAgICAgICAqIGJpbmRp
bmdzL2pzL0pTRGVkaWNhdGVkV29ya2VyQ29udGV4dEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpKU0RlZGljYXRlZFdvcmtlckNvbnRleHQ6OnBvc3RNZXNzYWdlKToKKyAgICAgICAgQWRk
ZWQgY3VzdG9tIGhhbmRsZXIgZm9yIHBvc3RNZXNzYWdlKCkgdGhhdCBoYW5kbGVzIGJlaW5nIHBh
c3NlZCBNZXNzYWdlUG9ydEFycmF5cy4KKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU01lc3NhZ2VF
dmVudEN1c3RvbS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SlNNZXNzYWdlRXZlbnQ6
OnBvcnRzKToKKyAgICAgICAgQWRkZWQgY3VzdG9tIHBvcnRzKCkgZ2V0dGVyIHRoYXQgY29udmVy
dHMgZnJvbSBNZXNzYWdlUG9ydEFycmF5IHRvIEpTQXJyYXkuCisgICAgICAgIChXZWJDb3JlOjpK
U01lc3NhZ2VFdmVudDo6aW5pdE1lc3NhZ2VFdmVudCk6CisgICAgICAgIEFkZGVkIHN1cHBvcnQg
Zm9yIHBhc3NpbmcgYSBNZXNzYWdlUG9ydEFycmF5LgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pT
TWVzc2FnZVBvcnRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNNZXNzYWdlUG9ydDo6
cG9zdE1lc3NhZ2UpOgorICAgICAgICBBZGRlZCBjdXN0b20gaGFuZGxlciBmb3IgcG9zdE1lc3Nh
Z2UoKSB0aGF0IGhhbmRsZXMgYmVpbmcgcGFzc2VkIE1lc3NhZ2VQb3J0QXJyYXkuCisgICAgICAg
IChXZWJDb3JlOjpmaWxsTWVzc2FnZVBvcnRBcnJheSk6CisgICAgICAgIE5ldyBoZWxwZXIgcm91
dGluZSB0aGF0IHZhbGlkYXRlcy9jb252ZXJ0cyBmcm9tIGEgSlMgc2VxdWVuY2UgbyBhIFdlYkNv
cmU6Ok1lc3NhZ2VQb3J0QXJyYXkuCisgICAgICAgICogYmluZGluZ3MvanMvSlNNZXNzYWdlUG9y
dEN1c3RvbS5oOiBBZGRlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1dvcmtlckN1c3RvbS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpKU1dvcmtlcjo6cG9zdE1lc3NhZ2UpOgorICAgICAgICBB
ZGRlZCBjdXN0b20gaGFuZGxlciBmb3IgcG9zdE1lc3NhZ2UoKSB0aGF0IGhhbmRsZXMgYmVpbmcg
cGFzc2VkIE1lc3NhZ2VQb3J0QXJyYXkuCisgICAgICAgICogZG9tL01lc3NhZ2VFdmVudC5jcHA6
CisgICAgICAgICogZG9tL01lc3NhZ2VFdmVudC5oOgorICAgICAgICAoV2ViQ29yZTo6TWVzc2Fn
ZUV2ZW50Ojpwb3J0cyk6CisgICAgICAgIENoYW5nZWQgcG9ydHMoKSB0byByZXR1cm4gYSBNZXNz
YWdlUG9ydEFycmF5KiBzaW5jZSB0aGlzIHZhbHVlIGNhbiBiZSBudWxsLgorICAgICAgICAqIGRv
bS9NZXNzYWdlRXZlbnQuaWRsOgorICAgICAgICBVcGRhdGVkIElETCB0byBtYXRjaCBIVE1MNSBz
cGVjIChub3cgYWNjZXB0cyBNZXNzYWdlUG9ydEFycmF5cyBpbnN0ZWFkIG9mIGEgc29saXRhcnkg
TWVzc2FnZVBvcnQpLgorICAgICAgICAqIGRvbS9NZXNzYWdlUG9ydC5jcHA6CisgICAgICAgICog
ZG9tL01lc3NhZ2VQb3J0Lmg6CisgICAgICAgICogZG9tL01lc3NhZ2VQb3J0LmlkbDoKKyAgICAg
ICAgVXBkYXRlZCBJREwgdG8gbWF0Y2ggSFRNTDUgc3BlYyAocG9zdE1lc3NhZ2UoKSBub3cgYWNj
ZXB0cyBNZXNzYWdlUG9ydEFycmF5cyBpbnN0ZWFkIG9mIGEgc29saXRhcnkgTWVzc2FnZVBvcnQp
LgorICAgICAgICAqIHBhZ2UvRE9NV2luZG93Lmg6CisgICAgICAgICogcGFnZS9ET01XaW5kb3cu
aWRsOgorICAgICAgICBVcGRhdGVkIElETCB0byBtYXRjaCBIVE1MNSBzcGVjIChwb3N0TWVzc2Fn
ZSgpIG5vdyBhY2NlcHRzIE1lc3NhZ2VQb3J0QXJyYXlzIGluc3RlYWQgb2YgYSBzb2xpdGFyeSBN
ZXNzYWdlUG9ydCkuCisgICAgICAgICogd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJDb250ZXh0LmNw
cDoKKyAgICAgICAgKiB3b3JrZXJzL0RlZGljYXRlZFdvcmtlckNvbnRleHQuaDoKKyAgICAgICAg
KiB3b3JrZXJzL0RlZGljYXRlZFdvcmtlckNvbnRleHQuaWRsOgorICAgICAgICBVcGRhdGVkIElE
TCB0byBtYXRjaCBIVE1MNSBzcGVjIChwb3N0TWVzc2FnZSgpIG5vdyBhY2NlcHRzIE1lc3NhZ2VQ
b3J0QXJyYXlzIGluc3RlYWQgb2YgYSBzb2xpdGFyeSBNZXNzYWdlUG9ydCkuCisgICAgICAgICog
d29ya2Vycy9Xb3JrZXIuY3BwOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyLmg6CisgICAgICAg
ICogd29ya2Vycy9Xb3JrZXIuaWRsOgorICAgICAgICBVcGRhdGVkIElETCB0byBtYXRjaCBIVE1M
NSBzcGVjIChwb3N0TWVzc2FnZSgpIG5vdyBhY2NlcHRzIE1lc3NhZ2VQb3J0QXJyYXlzIGluc3Rl
YWQgb2YgYSBzb2xpdGFyeSBNZXNzYWdlUG9ydCkuCisKIDIwMDktMDgtMjggIFZpdGFseSBSZXBl
c2hrbyAgPHZpdGFseXJAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERpbWl0
cmkgR2xhemtvdi4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0gYi9XZWJDb3Jl
L0dOVW1ha2VmaWxlLmFtCmluZGV4IDBmOGIyYmQuLmFkNWZmOTQgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvR05VbWFrZWZpbGUuYW0KKysrIGIvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQpAQCAtMzk2LDcg
KzM5Niw5IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01l
c3NhZ2VDaGFubmVsQ29uc3RydWN0b3IuY3BwIFwKIAlXZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVz
c2FnZUNoYW5uZWxDb25zdHJ1Y3Rvci5oIFwKIAlXZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVzc2Fn
ZUNoYW5uZWxDdXN0b20uY3BwIFwKKwlXZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVzc2FnZUV2ZW50
Q3VzdG9tLmNwcCBcCiAJV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01lc3NhZ2VQb3J0Q3VzdG9tLmNw
cCBcCisJV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01lc3NhZ2VQb3J0Q3VzdG9tLmggXAogCVdlYkNv
cmUvYmluZGluZ3MvanMvSlNNaW1lVHlwZUFycmF5Q3VzdG9tLmNwcCBcCiAJV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU05hbWVkTm9kZU1hcEN1c3RvbS5jcHAgXAogCVdlYkNvcmUvYmluZGluZ3MvanMv
SlNOYW1lZE5vZGVzQ29sbGVjdGlvbi5jcHAgXApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3Jl
Lmd5cGkgYi9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCAwYTBmMTNhLi5kMmM1MThhIDEwMDY0
NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpA
QCAtNTA3LDcgKzUwNyw5IEBACiAgICAgICAgICAgICAnYmluZGluZ3MvanMvSlNNZXNzYWdlQ2hh
bm5lbENvbnN0cnVjdG9yLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvanMvSlNNZXNzYWdl
Q2hhbm5lbENvbnN0cnVjdG9yLmgnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTTWVzc2Fn
ZUNoYW5uZWxDdXN0b20uY3BwJywKKyAgICAgICAgICAgICdiaW5kaW5ncy9qcy9KU01lc3NhZ2VF
dmVudEN1c3RvbS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTTWVzc2FnZVBvcnRD
dXN0b20uY3BwJywKKyAgICAgICAgICAgICdiaW5kaW5ncy9qcy9KU01lc3NhZ2VQb3J0Q3VzdG9t
LmgnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTTWltZVR5cGVBcnJheUN1c3RvbS5jcHAn
LAogICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTTmFtZWROb2RlTWFwQ3VzdG9tLmNwcCcsCiAg
ICAgICAgICAgICAnYmluZGluZ3MvanMvSlNOYW1lZE5vZGVzQ29sbGVjdGlvbi5jcHAnLApkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLnBybyBiL1dlYkNvcmUvV2ViQ29yZS5wcm8KaW5kZXgg
ODU5ZmM4Yy4uYmE1YzIwMSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLnBybworKysgYi9X
ZWJDb3JlL1dlYkNvcmUucHJvCkBAIC03MjEsNyArNzIxLDkgQEAgU09VUkNFUyArPSBcCiAgICAg
YmluZGluZ3MvanMvSlNQbHVnaW5BcnJheUN1c3RvbS5jcHAgXAogICAgIGJpbmRpbmdzL2pzL0pT
TWVzc2FnZUNoYW5uZWxDb25zdHJ1Y3Rvci5jcHAgXAogICAgIGJpbmRpbmdzL2pzL0pTTWVzc2Fn
ZUNoYW5uZWxDdXN0b20uY3BwIFwKKyAgICBiaW5kaW5ncy9qcy9KU01lc3NhZ2VFdmVudEN1c3Rv
bS5jcHAgXAogICAgIGJpbmRpbmdzL2pzL0pTTWVzc2FnZVBvcnRDdXN0b20uY3BwIFwKKyAgICBi
aW5kaW5ncy9qcy9KU01lc3NhZ2VQb3J0Q3VzdG9tLmggXAogICAgIGJpbmRpbmdzL2pzL0pTTWlt
ZVR5cGVBcnJheUN1c3RvbS5jcHAgXAogICAgIGJpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5jcHAg
XAogICAgIGJpbmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5jcHAgXApkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvaiBiL1dlYkNvcmUvV2ViQ29yZS52Y3By
b2ovV2ViQ29yZS52Y3Byb2oKaW5kZXggM2Y5ZjgxMS4uYzNjZWVjYiAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagorKysgYi9XZWJDb3JlL1dlYkNvcmUu
dmNwcm9qL1dlYkNvcmUudmNwcm9qCkBAIC0yOTEyMywxMCArMjkxMjMsMTggQEAKIAkJCQkJPg0K
IAkJCQk8L0ZpbGU+DQogCQkJCTxGaWxlDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGJpbmRpbmdz
XGpzXEpTTWVzc2FnZUV2ZW50Q3VzdG9tLmNwcCINCisJCQkJCT4NCisJCQkJPC9GaWxlPg0KKwkJ
CQk8RmlsZQ0KIAkJCQkJUmVsYXRpdmVQYXRoPSIuLlxiaW5kaW5nc1xqc1xKU01lc3NhZ2VQb3J0
Q3VzdG9tLmNwcCINCiAJCQkJCT4NCiAJCQkJPC9GaWxlPg0KIAkJCQk8RmlsZQ0KKwkJCQkJUmVs
YXRpdmVQYXRoPSIuLlxiaW5kaW5nc1xqc1xKU01lc3NhZ2VQb3J0Q3VzdG9tLmgiDQorCQkJCQk+
DQorCQkJCTwvRmlsZT4NCisJCQkJPEZpbGUNCiAJCQkJCVJlbGF0aXZlUGF0aD0iLi5cYmluZGlu
Z3NcanNcSlNNaW1lVHlwZUFycmF5Q3VzdG9tLmNwcCINCiAJCQkJCT4NCiAJCQkJPC9GaWxlPg0K
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYjQxYjY4Yi4u
NTYwZjI1ZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKKysrIGIvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAg
LTY3NCw2ICs2NzQsNyBAQAogCQkzN0Y4MThGRTBENjU3NjA2MDA1RTFGMDUgLyogV2ViQ29yZVVS
TFJlc3BvbnNlLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMzdGODE4RkMwRDY1NzYwNjAwNUUxRjA1IC8qIFdlYkNvcmVVUkxSZXNwb25zZS5tbSAqLzsg
fTsKIAkJNDEwMDJDQ0QwRjY2RURFRjAwOUU2NjBEIC8qIFNjcmlwdEZ1bmN0aW9uQ2FsbC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDEwMDJDQ0IwRjY2
RURFRjAwOUU2NjBEIC8qIFNjcmlwdEZ1bmN0aW9uQ2FsbC5oICovOyB9OwogCQk0MTAwMkNDRTBG
NjZFREVGMDA5RTY2MEQgLyogU2NyaXB0RnVuY3Rpb25DYWxsLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMDAyQ0NDMEY2NkVERUYwMDlFNjYwRCAv
KiBTY3JpcHRGdW5jdGlvbkNhbGwuY3BwICovOyB9OworCQk0MTBCN0U3MjEwNDVGQUIwMDBEODIy
NEYgLyogSlNNZXNzYWdlRXZlbnRDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDEwQjdFNzExMDQ1RkFCMDAwRDgyMjRGIC8qIEpTTWVzc2Fn
ZUV2ZW50Q3VzdG9tLmNwcCAqLzsgfTsKIAkJNDExMDQ2NDEwRkEyMjJBNjAwQkE0MzZBIC8qIFNj
cmlwdEV2ZW50TGlzdGVuZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQxMTA0NjNGMEZBMjIyQTYwMEJBNDM2QSAvKiBTY3JpcHRFdmVudExpc3RlbmVy
LmggKi87IH07CiAJCTQxMTA0NjQyMEZBMjIyQTYwMEJBNDM2QSAvKiBTY3JpcHRFdmVudExpc3Rl
bmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQx
MTA0NjQwMEZBMjIyQTYwMEJBNDM2QSAvKiBTY3JpcHRFdmVudExpc3RlbmVyLmNwcCAqLzsgfTsK
IAkJNDEyN0Q1MzcwRjhBQUIxRDAwRTQyNEY1IC8qIFNjcmlwdFN0YXRlLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMjdENTM2MEY4QUFCMUQwMEU0
MjRGNSAvKiBTY3JpcHRTdGF0ZS5jcHAgKi87IH07CkBAIC03MzUsNiArNzM2LDcgQEAKIAkJNDFG
MDY2RTUwRjY0QkNGNjAwQTA3RUFDIC8qIFNjcmlwdE9iamVjdC5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUYwNjZFMzBGNjRCQ0Y2MDBBMDdFQUMg
LyogU2NyaXB0T2JqZWN0LmNwcCAqLzsgfTsKIAkJNDFGMUQyMUYwRUYzNUMyQTAwREE4NzUzIC8q
IFNjcmlwdENhY2hlZEZyYW1lRGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNDFGMUQyMUQwRUYzNUMyQTAwREE4NzUzIC8qIFNjcmlwdENhY2hlZEZy
YW1lRGF0YS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTQxRjFEMjIwMEVGMzVDMkEwMERBODc1MyAvKiBTY3JpcHRDYWNoZWRGcmFtZURhdGEuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFGMUQyMUUw
RUYzNUMyQTAwREE4NzUzIC8qIFNjcmlwdENhY2hlZEZyYW1lRGF0YS5jcHAgKi87IH07CisJCTQx
RjU4NEM3MTA0NjUyQ0IwMDlDQUE2NCAvKiBKU01lc3NhZ2VQb3J0Q3VzdG9tLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUY1ODRDNjEwNDY1MkNCMDA5
Q0FBNjQgLyogSlNNZXNzYWdlUG9ydEN1c3RvbS5oICovOyB9OwogCQk0NDE1MjkyRTBFMUFFOEEw
MDBDNEEyRDAgLyogSFRNTFBsdWdJbkltYWdlRWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDQxNTI5MkMwRTFBRThBMDAwQzRBMkQwIC8qIEhU
TUxQbHVnSW5JbWFnZUVsZW1lbnQuaCAqLzsgfTsKIAkJNDQxNTI5MkYwRTFBRThBMDAwQzRBMkQw
IC8qIEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDQxNTI5MkQwRTFBRThBMDAwQzRBMkQwIC8qIEhUTUxQbHVn
SW5JbWFnZUVsZW1lbnQuY3BwICovOyB9OwogCQk0NDFCMDU1QzBDRDc3QTJEMDA3QzFGMTggLyog
RE9NSFRNTEVtYmVkRWxlbWVudFByaXZhdGUuaCBpbiBDb3B5IEdlbmVyYXRlZCBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ0MjlBQUZCMENCODRFODgwMDc2NDdD
NSAvKiBET01IVE1MRW1iZWRFbGVtZW50UHJpdmF0ZS5oICovOyB9OwpAQCAtNTc3MSw2ICs1Nzcz
LDcgQEAKIAkJMzdGODE4RkMwRDY1NzYwNjAwNUUxRjA1IC8qIFdlYkNvcmVVUkxSZXNwb25zZS5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYkNvcmVVUkxSZXNw
b25zZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDEwMDJDQ0IwRjY2RURFRjAw
OUU2NjBEIC8qIFNjcmlwdEZ1bmN0aW9uQ2FsbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBTY3JpcHRGdW5jdGlvbkNhbGwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNDEwMDJDQ0MwRjY2RURFRjAwOUU2NjBEIC8qIFNjcmlwdEZ1bmN0aW9uQ2FsbC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTY3JpcHRGdW5jdGlvbkNhbGwuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MTBCN0U3MTEwNDVGQUIwMDBEODIyNEYg
LyogSlNNZXNzYWdlRXZlbnRDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gSlNNZXNzYWdlRXZlbnRDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk0MTEwNDYzRjBGQTIyMkE2MDBCQTQzNkEgLyogU2NyaXB0RXZlbnRMaXN0ZW5lci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY3JpcHRFdmVudExpc3RlbmVyLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxMTA0NjQwMEZBMjIyQTYwMEJBNDM2QSAv
KiBTY3JpcHRFdmVudExpc3RlbmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFNjcmlwdEV2ZW50TGlzdGVuZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk0MTI3RDUzNjBGOEFBQjFEMDBFNDI0RjUgLyogU2NyaXB0U3RhdGUuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2NyaXB0U3RhdGUuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtNTgzNiw2ICs1ODM5LDcgQEAKIAkJNDFGMDY2RTMwRjY0QkNG
NjAwQTA3RUFDIC8qIFNjcmlwdE9iamVjdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBTY3JpcHRPYmplY3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0MUYxRDIxRDBFRjM1QzJBMDBEQTg3NTMgLyogU2NyaXB0Q2FjaGVkRnJhbWVEYXRhLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcmlwdENhY2hlZEZyYW1lRGF0YS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MUYxRDIxRTBFRjM1QzJBMDBEQTg3NTMgLyog
U2NyaXB0Q2FjaGVkRnJhbWVEYXRhLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFNjcmlwdENhY2hlZEZyYW1lRGF0YS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTQxRjU4NEM2MTA0NjUyQ0IwMDlDQUE2NCAvKiBKU01lc3NhZ2VQb3J0Q3VzdG9tLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTTWVzc2FnZVBvcnRDdXN0b20uaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDQxNTI5MkMwRTFBRThBMDAwQzRBMkQwIC8q
IEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSFRNTFBsdWdJbkltYWdlRWxlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0NDE1MjkyRDBFMUFFOEEwMDBDNEEyRDAgLyogSFRNTFBsdWdJbkltYWdlRWxlbWVudC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBIVE1MUGx1Z0luSW1hZ2VFbGVt
ZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDQyOUFBRkIwQ0I4NEU4ODAw
NzY0N0M1IC8qIERPTUhUTUxFbWJlZEVsZW1lbnRQcml2YXRlLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBET01IVE1MRW1iZWRFbGVtZW50UHJpdmF0ZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtMTQxMjksNyArMTQxMzMsOSBAQAogCQkJCTFDNUZBRUU2MERD
RkRBNjgwMEQ1OEY3OCAvKiBKU0phdmFTY3JpcHRDYWxsRnJhbWVDdXN0b20uY3BwICovLAogCQkJ
CUJDRTFDNDNGMEQ5ODMwRjQwMDNCMDJGMiAvKiBKU0xvY2F0aW9uQ3VzdG9tLmNwcCAqLywKIAkJ
CQlFMUE1Rjk5QTBFN0VBQTI1MDBBRjg1RUEgLyogSlNNZXNzYWdlQ2hhbm5lbEN1c3RvbS5jcHAg
Ki8sCisJCQkJNDEwQjdFNzExMDQ1RkFCMDAwRDgyMjRGIC8qIEpTTWVzc2FnZUV2ZW50Q3VzdG9t
LmNwcCAqLywKIAkJCQlFMUFERUQ0NjBFNzZCOEREMDA0QTFBNUUgLyogSlNNZXNzYWdlUG9ydEN1
c3RvbS5jcHAgKi8sCisJCQkJNDFGNTg0QzYxMDQ2NTJDQjAwOUNBQTY0IC8qIEpTTWVzc2FnZVBv
cnRDdXN0b20uaCAqLywKIAkJCQlBOUM2RTY0NjBENzQ2NUNBMDA2NDQyRTkgLyogSlNNaW1lVHlw
ZUFycmF5Q3VzdG9tLmNwcCAqLywKIAkJCQlCQ0Q5QzI1RjBDMTdBQTY3MDA1QzkwQTIgLyogSlNO
YW1lZE5vZGVNYXBDdXN0b20uY3BwICovLAogCQkJCUE5QzZFNjQ4MEQ3NDY1RDgwMDY0NDJFOSAv
KiBKU05hdmlnYXRvckN1c3RvbS5jcHAgKi8sCkBAIC0xNzU0Niw2ICsxNzU1Miw3IEBACiAJCQkJ
NDE2RTI5QTYxMDJGQTk2MjAwN0ZDMTRFIC8qIFdvcmtlclJlcG9ydGluZ1Byb3h5LmggaW4gSGVh
ZGVycyAqLywKIAkJCQlCNUMxMTIzQzEwMkI2QzQ2MDAwOTY1NzggLyogU1FMVHJhbnNhY3Rpb25D
b29yZGluYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRDhCNjE1MkYxMDMyNDk1MTAwQzg1NTRB
IC8qIENvb2tpZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDFGNTg0QzcxMDQ2NTJDQjAwOUNBQTY0
IC8qIEpTTWVzc2FnZVBvcnRDdXN0b20uaCBpbiBIZWFkZXJzICovLAogCQkJCUJDRkE5MzA4MTAz
MzMxOTMwMDdCMjVEMSAvKiBSZW5kZXJPdmVyZmxvdy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDAx
NDYyOEIxMDNDRDFERTAwMEIyMERCIC8qIE9yaWdpbkFjY2Vzc0VudHJ5LmggaW4gSGVhZGVycyAq
LywKIAkJCQlCNTFCRjZGMTEwMkM5RTU5MDAwMkMxNUEgLyogU1FMVHJhbnNhY3Rpb25DbGllbnQu
aCBpbiBIZWFkZXJzICovLApAQCAtMTk2NDIsNiArMTk2NDksNyBAQAogCQkJCTkzOTIyNjJEMTAz
MjEwN0IwMDZFN0Q1RCAvKiBKU0hUTUxDYW52YXNFbGVtZW50Q3VzdG9tLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTkzOTIyNjJGMTAzMjEwODQwMDZFN0Q1RCAvKiBKU0NTU1J1bGVMaXN0Q3VzdG9t
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUI1QzExMjNCMTAyQjZDNDYwMDA5NjU3OCAvKiBTUUxU
cmFuc2FjdGlvbkNvb3JkaW5hdG9yLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTQxMEI3RTcyMTA0
NUZBQjAwMEQ4MjI0RiAvKiBKU01lc3NhZ2VFdmVudEN1c3RvbS5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkwMDE0NjI4QTEwM0NEMURFMDAwQjIwREIgLyogT3JpZ2luQWNjZXNzRW50cnkuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQjUxQkY2RjAxMDJDOUU1OTAwMDJDMTVBIC8qIFNRTFRyYW5zYWN0
aW9uQ2xpZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxMjg0QUVBMTA0NDdERUUwMEVBRUI1
MiAvKiBQYWdlVHJhbnNpdGlvbkV2ZW50LmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9XZWJDb3JlU291cmNlcy5ia2wgYi9XZWJDb3JlL1dlYkNvcmVTb3VyY2VzLmJrbApp
bmRleCA3YjgyOTYxLi42OGU0ZTFmIDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmVTb3VyY2Vz
LmJrbAorKysgYi9XZWJDb3JlL1dlYkNvcmVTb3VyY2VzLmJrbApAQCAtMTE4LDYgKzExOCw3IEBA
IFRoaXMgZmlsZSBjb250YWlucyB0aGUgbGlzdCBvZiBmaWxlcyBuZWVkZWQgdG8gYnVpbGQgV2Vi
Q29yZS4KICAgICAgICAgYmluZGluZ3MvanMvSlNMb2NhdGlvbkN1c3RvbS5jcHAKICAgICAgICAg
YmluZGluZ3MvanMvSlNNZXNzYWdlQ2hhbm5lbENvbnN0cnVjdG9yLmNwcAogICAgICAgICBiaW5k
aW5ncy9qcy9KU01lc3NhZ2VDaGFubmVsQ3VzdG9tLmNwcAorICAgICAgICBiaW5kaW5ncy9qcy9K
U01lc3NhZ2VFdmVudEN1c3RvbS5jcHAKICAgICAgICAgYmluZGluZ3MvanMvSlNNZXNzYWdlUG9y
dEN1c3RvbS5jcHAKICAgICAgICAgYmluZGluZ3MvanMvSlNNaW1lVHlwZUFycmF5Q3VzdG9tLmNw
cAogICAgICAgICBiaW5kaW5ncy9qcy9KU05hbWVkTm9kZU1hcEN1c3RvbS5jcHAKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmNwcCBiL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01CaW5kaW5nLmNwcAppbmRleCA0MGVjODlkLi5kZjM4NGVhIDEwMDY0NAotLS0g
YS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5jcHAKKysrIGIvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0RPTUJpbmRpbmcuY3BwCkBAIC00Myw2ICs0Myw3IEBACiAjaW5jbHVkZSAiUmFu
Z2VFeGNlcHRpb24uaCIKICNpbmNsdWRlICJTY3JpcHRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAi
WE1MSHR0cFJlcXVlc3RFeGNlcHRpb24uaCIKKyNpbmNsdWRlIDxydW50aW1lL0Vycm9yLmg+CiAj
aW5jbHVkZSA8cnVudGltZS9KU0Z1bmN0aW9uLmg+CiAjaW5jbHVkZSA8cnVudGltZS9Qcm90b3R5
cGVGdW5jdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KQEAgLTYyNCw0ICs2
MjUsMjcgQEAgdm9pZCBjYWNoZURPTUNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYywgY29uc3Qg
Q2xhc3NJbmZvKiBjbGFzc0luZm8sIEpTT2JqZWN0KgogICAgIGNvbnN0cnVjdG9ycy5zZXQoY2xh
c3NJbmZvLCBjb25zdHJ1Y3Rvcik7CiB9CiAKK0pTQzo6SlNPYmplY3QqIHRvSlNTZXF1ZW5jZShF
eGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUsIHVuc2lnbmVkJiBsZW5ndGgpCit7CisgICAg
SlNPYmplY3QqIG9iamVjdCA9IHZhbHVlLmdldE9iamVjdCgpOworICAgIGlmICghb2JqZWN0KSB7
CisgICAgICAgIHRocm93RXJyb3IoZXhlYywgVHlwZUVycm9yKTsKKyAgICAgICAgcmV0dXJuIDA7
CisgICAgfQorICAgIEpTVmFsdWUgbGVuZ3RoVmFsdWUgPSBvYmplY3QtPmdldChleGVjLCBleGVj
LT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoKTsKKyAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkp
CisgICAgICAgIHJldHVybiAwOworCisgICAgaWYgKGxlbmd0aFZhbHVlLmlzVW5kZWZpbmVkT3JO
dWxsKCkpIHsKKyAgICAgICAgdGhyb3dFcnJvcihleGVjLCBUeXBlRXJyb3IpOworICAgICAgICBy
ZXR1cm4gMDsKKyAgICB9CisKKyAgICBsZW5ndGggPSBsZW5ndGhWYWx1ZS50b1VJbnQzMihleGVj
KTsKKyAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiAwOworCisg
ICAgcmV0dXJuIG9iamVjdDsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaCBiL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNET01CaW5kaW5nLmgKaW5kZXggNWFiZDdhNy4uMjY1MDgyYiAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRE9NQmluZGluZy5oCkBAIC0yNzYsNiArMjc2LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
ICAgICAgICByZXR1cm4gdG9KUyhleGVjLCBnbG9iYWxPYmplY3QsIHB0ci5nZXQoKSk7CiAgICAg
fQogCisgICAgLy8gVmFsaWRhdGVzIHRoYXQgdGhlIHBhc3NlZCBvYmplY3QgaXMgYSBzZXF1ZW5j
ZSB0eXBlIHBlciBzZWN0aW9uIDQuMS4xMyBvZiB0aGUgV2ViSURMIHNwZWMuCisgICAgSlNDOjpK
U09iamVjdCogdG9KU1NlcXVlbmNlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCB1bnNp
Z25lZCYpOworCiAgICAgYm9vbCBjaGVja05vZGVTZWN1cml0eShKU0M6OkV4ZWNTdGF0ZSosIE5v
ZGUqKTsKIAogICAgIC8vIEhlbHBlcnMgZm9yIFdpbmRvdywgSGlzdG9yeSwgYW5kIExvY2F0aW9u
IGNsYXNzZXMgdG8gaW1wbGVtZW50IGNyb3NzLWRvbWFpbiBwb2xpY3kuCmRpZmYgLS1naXQgYS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcCBiL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCmluZGV4IGVmZDMxMTQuLjY4OGI0NWYgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCisrKyBiL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCkBAIC00NSw2ICs0NSw3IEBA
CiAjaW5jbHVkZSAiSlNMb2NhdGlvbi5oIgogI2luY2x1ZGUgIkpTTWVzc2FnZUNoYW5uZWxDb25z
dHJ1Y3Rvci5oIgogI2luY2x1ZGUgIkpTTWVzc2FnZVBvcnQuaCIKKyNpbmNsdWRlICJKU01lc3Nh
Z2VQb3J0Q3VzdG9tLmgiCiAjaW5jbHVkZSAiSlNPcHRpb25Db25zdHJ1Y3Rvci5oIgogCiAjaWYg
RU5BQkxFKFNIQVJFRF9XT1JLRVJTKQpAQCAtODU5LDE0ICs4NjAsMTggQEAgSlNWYWx1ZSBKU0RP
TVdpbmRvdzo6cG9zdE1lc3NhZ2UoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBBcmdMaXN0JiBhcmdz
KQogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIGpzVW5kZWZp
bmVkKCk7CiAKLSAgICBNZXNzYWdlUG9ydCogbWVzc2FnZVBvcnQgPSAoYXJncy5zaXplKCkgPT0g
MikgPyAwIDogdG9NZXNzYWdlUG9ydChhcmdzLmF0KDEpKTsKKyAgICBNZXNzYWdlUG9ydEFycmF5
IG1lc3NhZ2VQb3J0czsKKyAgICBpZiAoYXJncy5zaXplKCkgPiAyKQorICAgICAgICBmaWxsTWVz
c2FnZVBvcnRBcnJheShleGVjLCBhcmdzLmF0KDEpLCBtZXNzYWdlUG9ydHMpOworICAgIGlmIChl
eGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAKICAg
ICBTdHJpbmcgdGFyZ2V0T3JpZ2luID0gdmFsdWVUb1N0cmluZ1dpdGhVbmRlZmluZWRPck51bGxD
aGVjayhleGVjLCBhcmdzLmF0KChhcmdzLnNpemUoKSA9PSAyKSA/IDEgOiAyKSk7CiAgICAgaWYg
KGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKIAog
ICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIHdpbmRvdy0+cG9zdE1lc3NhZ2UobWVzc2Fn
ZSwgbWVzc2FnZVBvcnQsIHRhcmdldE9yaWdpbiwgc291cmNlLCBlYyk7CisgICAgd2luZG93LT5w
b3N0TWVzc2FnZShtZXNzYWdlLCAmbWVzc2FnZVBvcnRzLCB0YXJnZXRPcmlnaW4sIHNvdXJjZSwg
ZWMpOwogICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBlYyk7CiAKICAgICByZXR1cm4ganNVbmRl
ZmluZWQoKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEZWRpY2F0ZWRXb3Jr
ZXJDb250ZXh0Q3VzdG9tLmNwcCBiL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEZWRpY2F0ZWRXb3Jr
ZXJDb250ZXh0Q3VzdG9tLmNwcAppbmRleCA2NTdmOWIzLi43NDY1NzEwIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGVkaWNhdGVkV29ya2VyQ29udGV4dEN1c3RvbS5jcHAKKysr
IGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RlZGljYXRlZFdvcmtlckNvbnRleHRDdXN0b20uY3Bw
CkBAIC0zNSw2ICszNSw5IEBACiAKICNpbmNsdWRlICJKU0RlZGljYXRlZFdvcmtlckNvbnRleHQu
aCIKIAorI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgorI2luY2x1ZGUgIkpTTWVzc2FnZVBvcnRD
dXN0b20uaCIKKwogdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpA
QCAtNDYsNiArNDksMjAgQEAgdm9pZCBKU0RlZGljYXRlZFdvcmtlckNvbnRleHQ6Om1hcmtDaGls
ZHJlbihNYXJrU3RhY2smIG1hcmtTdGFjaykKICAgICBtYXJrSWZOb3ROdWxsKG1hcmtTdGFjaywg
aW1wbCgpLT5vbm1lc3NhZ2UoKSk7CiB9CiAKK0pTQzo6SlNWYWx1ZSBKU0RlZGljYXRlZFdvcmtl
ckNvbnRleHQ6OnBvc3RNZXNzYWdlKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBjb25zdCBKU0M6OkFy
Z0xpc3QmIGFyZ3MpCit7CisgICAgY29uc3QgVVN0cmluZyYgbWVzc2FnZSA9IGFyZ3MuYXQoMCku
dG9TdHJpbmcoZXhlYyk7CisgICAgTWVzc2FnZVBvcnRBcnJheSBwb3J0QXJyYXk7CisgICAgZmls
bE1lc3NhZ2VQb3J0QXJyYXkoZXhlYywgYXJncy5hdCgxKSwgcG9ydEFycmF5KTsKKyAgICBpZiAo
ZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworCisg
ICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgaW1wbCgpLT5wb3N0TWVzc2FnZShtZXNzYWdl
LCAmcG9ydEFycmF5LCBlYyk7CisgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIGVjKTsKKyAgICBy
ZXR1cm4ganNVbmRlZmluZWQoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5k
aWYgLy8gRU5BQkxFKFdPUktFUlMpCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
TWVzc2FnZUV2ZW50Q3VzdG9tLmNwcCBiL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNZXNzYWdlRXZl
bnRDdXN0b20uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYwMTc5ZGIK
LS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVzc2FnZUV2ZW50Q3Vz
dG9tLmNwcApAQCAtMCwwICsxLDc5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAq
IGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRo
ZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRy
aWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZl
ZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkpT
TWVzc2FnZUV2ZW50LmgiCisKKyNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKKyNpbmNsdWRlICJK
U0RPTVdpbmRvdy5oIgorI2luY2x1ZGUgIkpTRXZlbnRUYXJnZXQuaCIKKyNpbmNsdWRlICJKU01l
c3NhZ2VQb3J0Q3VzdG9tLmgiCisjaW5jbHVkZSAiTWVzc2FnZUV2ZW50LmgiCisjaW5jbHVkZSA8
cnVudGltZS9KU0FycmF5Lmg+CisKK3VzaW5nIG5hbWVzcGFjZSBKU0M7CisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworSlNWYWx1ZSBKU01lc3NhZ2VFdmVudDo6cG9ydHMoRXhlY1N0YXRlKiBleGVj
KSBjb25zdAoreworICAgIE1lc3NhZ2VQb3J0QXJyYXkqIHBvcnRzID0gc3RhdGljX2Nhc3Q8TWVz
c2FnZUV2ZW50Kj4oaW1wbCgpKS0+cG9ydHMoKTsKKyAgICBpZiAoIXBvcnRzIHx8IHBvcnRzLT5p
c0VtcHR5KCkpCisgICAgICAgIHJldHVybiBqc051bGwoKTsKKworICAgIE1hcmtlZEFyZ3VtZW50
QnVmZmVyIGxpc3Q7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBwb3J0cy0+c2l6ZSgpOyBp
KyspCisgICAgICAgIGxpc3QuYXBwZW5kKHRvSlMoZXhlYywgZ2xvYmFsT2JqZWN0KCksICgqcG9y
dHMpW2ldLmdldCgpKSk7CisgICAgcmV0dXJuIGNvbnN0cnVjdEFycmF5KGV4ZWMsIGxpc3QpOwor
fQorCitKU0M6OkpTVmFsdWUgSlNNZXNzYWdlRXZlbnQ6OmluaXRNZXNzYWdlRXZlbnQoSlNDOjpF
eGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEpTQzo6QXJnTGlzdCYgYXJncykKK3sKKyAgICBjb25zdCBV
U3RyaW5nJiB0eXBlQXJnID0gYXJncy5hdCgwKS50b1N0cmluZyhleGVjKTsKKyAgICBib29sIGNh
bkJ1YmJsZUFyZyA9IGFyZ3MuYXQoMSkudG9Cb29sZWFuKGV4ZWMpOworICAgIGJvb2wgY2FuY2Vs
YWJsZUFyZyA9IGFyZ3MuYXQoMikudG9Cb29sZWFuKGV4ZWMpOworICAgIGNvbnN0IFVTdHJpbmcm
IGRhdGFBcmcgPSBhcmdzLmF0KDMpLnRvU3RyaW5nKGV4ZWMpOworICAgIGNvbnN0IFVTdHJpbmcm
IG9yaWdpbkFyZyA9IGFyZ3MuYXQoNCkudG9TdHJpbmcoZXhlYyk7CisgICAgY29uc3QgVVN0cmlu
ZyYgbGFzdEV2ZW50SWRBcmcgPSBhcmdzLmF0KDUpLnRvU3RyaW5nKGV4ZWMpOworICAgIERPTVdp
bmRvdyogc291cmNlQXJnID0gdG9ET01XaW5kb3coYXJncy5hdCg2KSk7CisgICAgT3duUHRyPE1l
c3NhZ2VQb3J0QXJyYXk+IG1lc3NhZ2VQb3J0czsKKyAgICBpZiAoIWFyZ3MuYXQoNykuaXNVbmRl
ZmluZWRPck51bGwoKSkgeworICAgICAgICBtZXNzYWdlUG9ydHMgPSBuZXcgTWVzc2FnZVBvcnRB
cnJheSgpOworICAgICAgICBmaWxsTWVzc2FnZVBvcnRBcnJheShleGVjLCBhcmdzLmF0KDcpLCAq
bWVzc2FnZVBvcnRzKTsKKyAgICAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAgICAg
ICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CisgICAgfQorCisgICAgTWVzc2FnZUV2ZW50KiBp
bXBsID0gc3RhdGljX2Nhc3Q8TWVzc2FnZUV2ZW50Kj4odGhpcy0+aW1wbCgpKTsKKyAgICBpbXBs
LT5pbml0TWVzc2FnZUV2ZW50KHR5cGVBcmcsIGNhbkJ1YmJsZUFyZywgY2FuY2VsYWJsZUFyZywg
ZGF0YUFyZywgb3JpZ2luQXJnLCBsYXN0RXZlbnRJZEFyZywgc291cmNlQXJnLCBtZXNzYWdlUG9y
dHMucmVsZWFzZSgpKTsKKyAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKK30KKworfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01lc3NhZ2VQ
b3J0Q3VzdG9tLmNwcCBiL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNZXNzYWdlUG9ydEN1c3RvbS5j
cHAKaW5kZXggYzMzMTZjNS4uY2FiZWE3NSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU01lc3NhZ2VQb3J0Q3VzdG9tLmNwcAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVz
c2FnZVBvcnRDdXN0b20uY3BwCkBAIC0yOCwxMSArMjgsMTQgQEAKIAogI2luY2x1ZGUgIkF0b21p
Y1N0cmluZy5oIgogI2luY2x1ZGUgIkV2ZW50LmgiCisjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5o
IgogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiSlNET01HbG9iYWxPYmplY3QuaCIKICNp
bmNsdWRlICJKU0V2ZW50LmgiCiAjaW5jbHVkZSAiSlNFdmVudExpc3RlbmVyLmgiCisjaW5jbHVk
ZSAiSlNNZXNzYWdlUG9ydEN1c3RvbS5oIgogI2luY2x1ZGUgIk1lc3NhZ2VQb3J0LmgiCisjaW5j
bHVkZSA8cnVudGltZS9FcnJvci5oPgogCiB1c2luZyBuYW1lc3BhY2UgSlNDOwogCkBAIC04NCw0
ICs4Nyw1NSBAQCBKU1ZhbHVlIEpTTWVzc2FnZVBvcnQ6OnJlbW92ZUV2ZW50TGlzdGVuZXIoRXhl
Y1N0YXRlKiBleGVjLCBjb25zdCBBcmdMaXN0JiBhcmdzKQogICAgIHJldHVybiBqc1VuZGVmaW5l
ZCgpOwogfQogCitKU0M6OkpTVmFsdWUgSlNNZXNzYWdlUG9ydDo6cG9zdE1lc3NhZ2UoSlNDOjpF
eGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEpTQzo6QXJnTGlzdCYgYXJncykKK3sKKyAgICBjb25zdCBV
U3RyaW5nJiBtZXNzYWdlID0gYXJncy5hdCgwKS50b1N0cmluZyhleGVjKTsKKyAgICBNZXNzYWdl
UG9ydEFycmF5IHBvcnRBcnJheTsKKyAgICBmaWxsTWVzc2FnZVBvcnRBcnJheShleGVjLCBhcmdz
LmF0KDEpLCBwb3J0QXJyYXkpOworICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICAg
ICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CisKKyAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAg
ICBpbXBsKCktPnBvc3RNZXNzYWdlKG1lc3NhZ2UsICZwb3J0QXJyYXksIGVjKTsKKyAgICBzZXRE
T01FeGNlcHRpb24oZXhlYywgZWMpOworICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworfQorCisK
K3ZvaWQgZmlsbE1lc3NhZ2VQb3J0QXJyYXkoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTQzo6SlNW
YWx1ZSB2YWx1ZSwgTWVzc2FnZVBvcnRBcnJheSYgcG9ydEFycmF5KQoreworICAgIC8vIENvbnZl
cnQgZnJvbSB0aGUgcGFzc2VkLWluIEpTIGFycmF5LWxpa2Ugb2JqZWN0IHRvIGEgTWVzc2FnZVBv
cnRBcnJheS4KKyAgICAvLyBBbHNvIHZhbGlkYXRlcyB0aGUgZWxlbWVudHMgcGVyIHNlY3Rpb25z
IDQuMS4xMyBhbmQgNC4xLjE1IG9mIHRoZSBXZWJJREwgc3BlYyBhbmQgc2VjdGlvbiA4LjMuMyBv
ZiB0aGUgSFRNTDUgc3BlYy4KKyAgICBpZiAodmFsdWUuaXNVbmRlZmluZWRPck51bGwoKSkgewor
ICAgICAgICBwb3J0QXJyYXkucmVzaXplKDApOworICAgICAgICByZXR1cm47CisgICAgfQorCisg
ICAgLy8gVmFsaWRhdGlvbiBvZiBzZXF1ZW5jZSB0eXBlcywgcGVyIFdlYklETCBzcGVjIDQuMS4x
My4KKyAgICB1bnNpZ25lZCBsZW5ndGg7CisgICAgSlNPYmplY3QqIG9iamVjdCA9IHRvSlNTZXF1
ZW5jZShleGVjLCB2YWx1ZSwgbGVuZ3RoKTsKKyAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkp
CisgICAgICAgIHJldHVybjsKKworICAgIHBvcnRBcnJheS5yZXNpemUobGVuZ3RoKTsKKyAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwIDsgaSA8IGxlbmd0aDsgKytpKSB7CisgICAgICAgIEpTVmFsdWUg
dmFsdWUgPSBvYmplY3QtPmdldChleGVjLCBpKTsKKyAgICAgICAgaWYgKGV4ZWMtPmhhZEV4Y2Vw
dGlvbigpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAvLyBWYWxpZGF0aW9uIG9mIG5v
bi1udWxsIG9iamVjdHMsIHBlciBIVE1MNSBzcGVjIDguMy4zLgorICAgICAgICBpZiAodmFsdWUu
aXNVbmRlZmluZWRPck51bGwoKSkgeworICAgICAgICAgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMs
IElOVkFMSURfU1RBVEVfRVJSKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisg
ICAgICAgIC8vIFZhbGlkYXRpb24gb2YgT2JqZWN0cyBpbXBsZW1lbnRpbmcgYW4gaW50ZXJmYWNl
LCBwZXIgV2ViSURMIHNwZWMgNC4xLjE1LgorICAgICAgICBSZWZQdHI8TWVzc2FnZVBvcnQ+IHBv
cnQgPSB0b01lc3NhZ2VQb3J0KHZhbHVlKTsKKyAgICAgICAgaWYgKCFwb3J0KSB7CisgICAgICAg
ICAgICB0aHJvd0Vycm9yKGV4ZWMsIFR5cGVFcnJvcik7CisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIH0KKyAgICAgICAgcG9ydEFycmF5W2ldID0gcG9ydC5yZWxlYXNlKCk7CisgICAgfQor
fQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTTWVzc2FnZVBvcnRDdXN0b20uaCBiL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNZXNzYWdl
UG9ydEN1c3RvbS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM1MGRhOGIK
LS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVzc2FnZVBvcnRDdXN0
b20uaApAQCAtMCwwICsxLDQ2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMg
YXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNv
cHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIg
dGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1
dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBm
cm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IK
KyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBKU01lc3NhZ2VQb3J0Q3VzdG9tX2gKKyNkZWZp
bmUgSlNNZXNzYWdlUG9ydEN1c3RvbV9oCisKKyNpbmNsdWRlICJNZXNzYWdlUG9ydC5oIgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKKyAgICB0eXBlZGVmIGludCBFeGNlcHRpb25Db2RlOworCisg
ICAgLy8gSGVscGVyIGZ1bmN0aW9uIHdoaWNoIHB1bGxzIHRoZSB2YWx1ZXMgb3V0IG9mIGEgSlMg
c2VxdWVuY2UgYW5kIGludG8gYSBNZXNzYWdlUG9ydEFycmF5LgorICAgIC8vIEFsc28gdmFsaWRh
dGVzIHRoZSBlbGVtZW50cyBwZXIgc2VjdGlvbnMgNC4xLjEzIGFuZCA0LjEuMTUgb2YgdGhlIFdl
YklETCBzcGVjIGFuZCBzZWN0aW9uIDguMy4zIG9mIHRoZSBIVE1MNSBzcGVjLgorICAgIC8vIE1h
eSBnZW5lcmF0ZSBhbiBleGNlcHRpb24gdmlhIHRoZSBwYXNzZWQgRXhlY1N0YXRlLgorICAgIHZv
aWQgZmlsbE1lc3NhZ2VQb3J0QXJyYXkoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTVmFsdWUsIE1l
c3NhZ2VQb3J0QXJyYXkmKTsKKworfQorI2VuZGlmIC8vIEpTTWVzc2FnZVBvcnRDdXN0b21faApk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckN1c3RvbS5jcHAgYi9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyQ3VzdG9tLmNwcAppbmRleCBmNWMzOTRiLi45YjA2ZjVh
IDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyQ3VzdG9tLmNwcAorKysg
Yi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyQ3VzdG9tLmNwcApAQCAtMzAsNiArMzAsNyBA
QAogI2luY2x1ZGUgIkpTV29ya2VyLmgiCiAKICNpbmNsdWRlICJKU0RPTUdsb2JhbE9iamVjdC5o
IgorI2luY2x1ZGUgIkpTTWVzc2FnZVBvcnRDdXN0b20uaCIKICNpbmNsdWRlICJXb3JrZXIuaCIK
IAogdXNpbmcgbmFtZXNwYWNlIEpTQzsKQEAgLTQzLDYgKzQ0LDIwIEBAIHZvaWQgSlNXb3JrZXI6
Om1hcmtDaGlsZHJlbihNYXJrU3RhY2smIG1hcmtTdGFjaykKICAgICBtYXJrSWZOb3ROdWxsKG1h
cmtTdGFjaywgc3RhdGljX2Nhc3Q8V29ya2VyKj4oaW1wbCgpKS0+b25tZXNzYWdlKCkpOwogfQog
CitKU0M6OkpTVmFsdWUgSlNXb3JrZXI6OnBvc3RNZXNzYWdlKEpTQzo6RXhlY1N0YXRlKiBleGVj
LCBjb25zdCBKU0M6OkFyZ0xpc3QmIGFyZ3MpCit7CisgICAgY29uc3QgVVN0cmluZyYgbWVzc2Fn
ZSA9IGFyZ3MuYXQoMCkudG9TdHJpbmcoZXhlYyk7CisgICAgTWVzc2FnZVBvcnRBcnJheSBwb3J0
QXJyYXk7CisgICAgZmlsbE1lc3NhZ2VQb3J0QXJyYXkoZXhlYywgYXJncy5hdCgxKSwgcG9ydEFy
cmF5KTsKKyAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiBqc1Vu
ZGVmaW5lZCgpOworCisgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgc3RhdGljX2Nhc3Q8
V29ya2VyKj4oaW1wbCgpKS0+cG9zdE1lc3NhZ2UobWVzc2FnZSwgJnBvcnRBcnJheSwgZWMpOwor
ICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBlYyk7CisgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7
Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShXT1JLRVJT
KQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20vTWVzc2FnZUV2ZW50LmNwcCBiL1dlYkNvcmUvZG9t
L01lc3NhZ2VFdmVudC5jcHAKaW5kZXggMTI2OGEwNC4uMzI5MmIzNCAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9kb20vTWVzc2FnZUV2ZW50LmNwcAorKysgYi9XZWJDb3JlL2RvbS9NZXNzYWdlRXZlbnQu
Y3BwCkBAIC02NSw3ICs2NSw3IEBAIHZvaWQgTWVzc2FnZUV2ZW50Ojppbml0TWVzc2FnZUV2ZW50
KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvCiAgICAgbV9wb3J0
cyA9IHBvcnRzOwogfQogCi0vLyBGSVhNRTogcmVtb3ZlIHRoaXMgd2hlbiB3ZSB1cGRhdGUgdGhl
IEpTIGJpbmRpbmdzIChidWcgIzI4NDYwKS4KKy8vIEZJWE1FOiByZW1vdmUgdGhpcyB3aGVuIHdl
IHVwZGF0ZSB0aGUgT2JqQyBiaW5kaW5ncyAoYnVnICMyODc3NCkuCiBNZXNzYWdlUG9ydCogTWVz
c2FnZUV2ZW50OjptZXNzYWdlUG9ydCgpCiB7CiAgICAgaWYgKCFtX3BvcnRzKQpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9kb20vTWVzc2FnZUV2ZW50LmggYi9XZWJDb3JlL2RvbS9NZXNzYWdlRXZlbnQu
aAppbmRleCAxMWEzNDBhLi43ZDk0Njg5IDEwMDY0NAotLS0gYS9XZWJDb3JlL2RvbS9NZXNzYWdl
RXZlbnQuaAorKysgYi9XZWJDb3JlL2RvbS9NZXNzYWdlRXZlbnQuaApAQCAtMjgsNiArMjgsNyBA
QAogI2lmbmRlZiBNZXNzYWdlRXZlbnRfaAogI2RlZmluZSBNZXNzYWdlRXZlbnRfaAogCisjaW5j
bHVkZSAiRE9NV2luZG93LmgiCiAjaW5jbHVkZSAiRXZlbnQuaCIKICNpbmNsdWRlICJNZXNzYWdl
UG9ydC5oIgogCkBAIC01MywxMSArNTQsMTEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAg
ICBjb25zdCBTdHJpbmcmIG9yaWdpbigpIGNvbnN0IHsgcmV0dXJuIG1fb3JpZ2luOyB9CiAgICAg
ICAgIGNvbnN0IFN0cmluZyYgbGFzdEV2ZW50SWQoKSBjb25zdCB7IHJldHVybiBtX2xhc3RFdmVu
dElkOyB9CiAgICAgICAgIERPTVdpbmRvdyogc291cmNlKCkgY29uc3QgeyByZXR1cm4gbV9zb3Vy
Y2UuZ2V0KCk7IH0KLSAgICAgICAgY29uc3QgTWVzc2FnZVBvcnRBcnJheSYgcG9ydHMoKSBjb25z
dCB7IHJldHVybiAqKG1fcG9ydHMuZ2V0KCkpOyB9CisgICAgICAgIE1lc3NhZ2VQb3J0QXJyYXkq
IHBvcnRzKCkgY29uc3QgeyByZXR1cm4gbV9wb3J0cy5nZXQoKTsgfQogCi0gICAgICAgIC8vIEZJ
WE1FOiByZW1vdmUgdGhpcyB3aGVuIHdlIHVwZGF0ZSB0aGUgSlMgYmluZGluZ3MgKGJ1ZyAjMjg0
NjApCisgICAgICAgIC8vIEZJWE1FOiByZW1vdmUgdGhpcyB3aGVuIHdlIHVwZGF0ZSB0aGUgT2Jq
QyBiaW5kaW5ncyAoYnVnICMyODc3NCkuCiAgICAgICAgIE1lc3NhZ2VQb3J0KiBtZXNzYWdlUG9y
dCgpOwotICAgICAgICAvLyBGSVhNRTogcmVtb3ZlIHRoaXMgd2hlbiB3ZSB1cGRhdGUgdGhlIEpT
IGJpbmRpbmdzIChidWcgIzI4NDYwKQorICAgICAgICAvLyBGSVhNRTogcmVtb3ZlIHRoaXMgd2hl
biB3ZSB1cGRhdGUgdGhlIE9iakMgYmluZGluZ3MgKGJ1ZyAjMjg3NzQpLgogICAgICAgICB2b2lk
IGluaXRNZXNzYWdlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJs
ZSwgYm9vbCBjYW5jZWxhYmxlLCBjb25zdCBTdHJpbmcmIGRhdGEsIGNvbnN0IFN0cmluZyYgb3Jp
Z2luLCBjb25zdCBTdHJpbmcmIGxhc3RFdmVudElkLCBET01XaW5kb3cqIHNvdXJjZSwgTWVzc2Fn
ZVBvcnQqKTsKIAogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNNZXNzYWdlRXZlbnQoKSBjb25zdDsK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL01lc3NhZ2VFdmVudC5pZGwgYi9XZWJDb3JlL2RvbS9N
ZXNzYWdlRXZlbnQuaWRsCmluZGV4IDhlOGYyNzEuLmEzMmNjOTMgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvZG9tL01lc3NhZ2VFdmVudC5pZGwKKysrIGIvV2ViQ29yZS9kb20vTWVzc2FnZUV2ZW50Lmlk
bApAQCAtMzUsOSArMzUsMTYgQEAgbW9kdWxlIGV2ZW50cyB7CiAgICAgICAgIHJlYWRvbmx5IGF0
dHJpYnV0ZSBET01TdHJpbmcgb3JpZ2luOwogICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9N
U3RyaW5nIGxhc3RFdmVudElkOwogICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NV2luZG93
IHNvdXJjZTsKKyNpZiBkZWZpbmVkKExBTkdVQUdFX0pBVkFTQ1JJUFQpICYmIExBTkdVQUdFX0pB
VkFTQ1JJUFQKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFtDdXN0b21HZXR0ZXJdIEFycmF5
IHBvcnRzOworCisgICAgICAgIFtDdXN0b21dIHZvaWQgaW5pdE1lc3NhZ2VFdmVudChpbiBET01T
dHJpbmcgdHlwZUFyZywgaW4gYm9vbGVhbiBjYW5CdWJibGVBcmcsIGluIGJvb2xlYW4gY2FuY2Vs
YWJsZUFyZywgaW4gRE9NU3RyaW5nIGRhdGFBcmcsIGluIERPTVN0cmluZyBvcmlnaW5BcmcsIGlu
IERPTVN0cmluZyBsYXN0RXZlbnRJZEFyZywgaW4gRE9NV2luZG93IHNvdXJjZUFyZywgaW4gQXJy
YXkgbWVzc2FnZVBvcnRzKTsKKyNlbHNlCisgICAgICAgIC8vIFRoZXJlJ3Mgbm8gZ29vZCB3YXkg
dG8gZXhwb3NlIGFuIGFycmF5IHZpYSB0aGUgT2JqQyBiaW5kaW5ncywgc28gZm9yIG5vdyBqdXN0
IGV4cG9zZSBhIHNpbmdsZSBwb3J0LgogICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgTWVzc2Fn
ZVBvcnQgbWVzc2FnZVBvcnQ7Ci0gICAgICAgIAorCiAgICAgICAgIHZvaWQgaW5pdE1lc3NhZ2VF
dmVudChpbiBET01TdHJpbmcgdHlwZUFyZywgaW4gYm9vbGVhbiBjYW5CdWJibGVBcmcsIGluIGJv
b2xlYW4gY2FuY2VsYWJsZUFyZywgaW4gRE9NU3RyaW5nIGRhdGFBcmcsIGluIERPTVN0cmluZyBv
cmlnaW5BcmcsIGluIERPTVN0cmluZyBsYXN0RXZlbnRJZEFyZywgaW4gRE9NV2luZG93IHNvdXJj
ZUFyZywgaW4gTWVzc2FnZVBvcnQgbWVzc2FnZVBvcnQpOworI2VuZGlmCiAKICAgICB9OwogCmRp
ZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9NZXNzYWdlUG9ydC5jcHAgYi9XZWJDb3JlL2RvbS9NZXNz
YWdlUG9ydC5jcHAKaW5kZXggZWEwZDNlNy4uNjUwMTI1NiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9k
b20vTWVzc2FnZVBvcnQuY3BwCisrKyBiL1dlYkNvcmUvZG9tL01lc3NhZ2VQb3J0LmNwcApAQCAt
NTUsNyArNTUsNyBAQCBNZXNzYWdlUG9ydDo6fk1lc3NhZ2VQb3J0KCkKICAgICAgICAgbV9zY3Jp
cHRFeGVjdXRpb25Db250ZXh0LT5kZXN0cm95ZWRNZXNzYWdlUG9ydCh0aGlzKTsKIH0KIAotLy8g
RklYTUU6IHJlbW92ZSB0aGlzIHdoZW4gd2UgdXBkYXRlIHRoZSBKUyBiaW5kaW5ncyAoYnVnICMy
ODQ2MCkuCisvLyBGSVhNRTogcmVtb3ZlIHRoaXMgd2hlbiB3ZSB1cGRhdGUgdGhlIE9iakMgYmlu
ZGluZ3MgKGJ1ZyAjMjg3NzQpLgogdm9pZCBNZXNzYWdlUG9ydDo6cG9zdE1lc3NhZ2UoY29uc3Qg
U3RyaW5nJiBtZXNzYWdlLCBNZXNzYWdlUG9ydCogcG9ydCwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7
CiAgICAgTWVzc2FnZVBvcnRBcnJheSBwb3J0czsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL01l
c3NhZ2VQb3J0LmggYi9XZWJDb3JlL2RvbS9NZXNzYWdlUG9ydC5oCmluZGV4IGNlYmJjZmIuLmQw
NDJiYzEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL01lc3NhZ2VQb3J0LmgKKysrIGIvV2ViQ29y
ZS9kb20vTWVzc2FnZVBvcnQuaApAQCAtNTgsNyArNTgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKICAgICAgICAgdm9pZCBwb3N0TWVzc2FnZShjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIEV4Y2Vw
dGlvbkNvZGUmKTsKICAgICAgICAgdm9pZCBwb3N0TWVzc2FnZShjb25zdCBTdHJpbmcmIG1lc3Nh
Z2UsIGNvbnN0IE1lc3NhZ2VQb3J0QXJyYXkqLCBFeGNlcHRpb25Db2RlJik7Ci0gICAgICAgIC8v
IEZJWE1FOiByZW1vdmUgdGhpcyB3aGVuIHdlIHVwZGF0ZSB0aGUgSlMgYmluZGluZ3MgKGJ1ZyAj
Mjg0NjApLgorICAgICAgICAvLyBGSVhNRTogcmVtb3ZlIHRoaXMgd2hlbiB3ZSB1cGRhdGUgdGhl
IE9iakMgYmluZGluZ3MgKGJ1ZyAjMjg3NzQpLgogICAgICAgICB2b2lkIHBvc3RNZXNzYWdlKGNv
bnN0IFN0cmluZyYgbWVzc2FnZSwgTWVzc2FnZVBvcnQqLCBFeGNlcHRpb25Db2RlJik7CiAKICAg
ICAgICAgdm9pZCBzdGFydCgpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20vTWVzc2FnZVBvcnQu
aWRsIGIvV2ViQ29yZS9kb20vTWVzc2FnZVBvcnQuaWRsCmluZGV4IGU1ZjlhZDEuLjExYWI3NTcg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL01lc3NhZ2VQb3J0LmlkbAorKysgYi9XZWJDb3JlL2Rv
bS9NZXNzYWdlUG9ydC5pZGwKQEAgLTM0LDcgKzM0LDcgQEAgbW9kdWxlIGV2ZW50cyB7CiAvLyBX
ZSBuZWVkIHRvIGhhdmUgc29tZXRoaW5nIGFzIGFuIE9iakMgYmluZGluZywgYmVjYXVzZSBNZXNz
YWdlUG9ydCBpcyB1c2VkIGluIE1lc3NhZ2VFdmVudCwgd2hpY2ggYWxyZWFkeSBoYXMgb25lLAog
Ly8gYnV0IHdlIGRvbid0IHdhbnQgdG8gYWN0dWFsbHkgZXhwb3NlIHRoZSBBUEkgd2hpbGUgaXQg
aXMgaW4gZmx1eC4KICNpZiBkZWZpbmVkKExBTkdVQUdFX0pBVkFTQ1JJUFQpICYmIExBTkdVQUdF
X0pBVkFTQ1JJUFQKLSAgICAgICAgdm9pZCBwb3N0TWVzc2FnZShpbiBET01TdHJpbmcgbWVzc2Fn
ZSwgaW4gW09wdGlvbmFsXSBNZXNzYWdlUG9ydCBtZXNzYWdlUG9ydCkKKyAgICAgICAgW0N1c3Rv
bV0gdm9pZCBwb3N0TWVzc2FnZShpbiBET01TdHJpbmcgbWVzc2FnZSwgaW4gW09wdGlvbmFsXSBB
cnJheSBtZXNzYWdlUG9ydHMpCiAgICAgICAgICAgICByYWlzZXMoRE9NRXhjZXB0aW9uKTsKICAg
ICAgICAgdm9pZCBzdGFydCgpOwogICAgICAgICB2b2lkIGNsb3NlKCk7CmRpZmYgLS1naXQgYS9X
ZWJDb3JlL3BhZ2UvRE9NV2luZG93LmggYi9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmgKaW5kZXgg
ODAwZDg2Zi4uZGI0ZWRkYSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5oCisr
KyBiL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaApAQCAtMjA4LDcgKzIwOCw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICNlbmRpZgogCiAgICAgICAgIHZvaWQgcG9zdE1lc3NhZ2UoY29uc3QgU3Ry
aW5nJiBtZXNzYWdlLCBjb25zdCBNZXNzYWdlUG9ydEFycmF5KiwgY29uc3QgU3RyaW5nJiB0YXJn
ZXRPcmlnaW4sIERPTVdpbmRvdyogc291cmNlLCBFeGNlcHRpb25Db2RlJik7Ci0gICAgICAgIC8v
IEZJWE1FOiByZW1vdmUgdGhpcyB3aGVuIHdlIHVwZGF0ZSB0aGUgSlMgYmluZGluZ3MgKGJ1ZyAj
Mjg0NjApLgorICAgICAgICAvLyBGSVhNRTogcmVtb3ZlIHRoaXMgd2hlbiB3ZSB1cGRhdGUgdGhl
IE9iakMgYmluZGluZ3MgKGJ1ZyAjMjg3NzQpLgogICAgICAgICB2b2lkIHBvc3RNZXNzYWdlKGNv
bnN0IFN0cmluZyYgbWVzc2FnZSwgTWVzc2FnZVBvcnQqLCBjb25zdCBTdHJpbmcmIHRhcmdldE9y
aWdpbiwgRE9NV2luZG93KiBzb3VyY2UsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICAgICAgdm9pZCBw
b3N0TWVzc2FnZVRpbWVyRmlyZWQoUG9zdE1lc3NhZ2VUaW1lciopOwogCmRpZmYgLS1naXQgYS9X
ZWJDb3JlL3BhZ2UvRE9NV2luZG93LmlkbCBiL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsCmlu
ZGV4IDljOWU0ODEuLjZjYTI4Y2UgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cu
aWRsCisrKyBiL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsCkBAIC0xNzMsOCArMTczLDE0IEBA
IG1vZHVsZSB3aW5kb3cgewogICAgICAgICAgICAgICAgICBhdHRyaWJ1dGUgW1JlcGxhY2VhYmxl
XSBDb25zb2xlIGNvbnNvbGU7CiAKICAgICAgICAgLy8gY3Jvc3MtZG9jdW1lbnQgbWVzc2FnaW5n
CisjaWYgZGVmaW5lZChMQU5HVUFHRV9KQVZBU0NSSVBUKSAmJiBMQU5HVUFHRV9KQVZBU0NSSVBU
CisgICAgICAgIFtEb05vdENoZWNrRG9tYWluU2VjdXJpdHksIEN1c3RvbV0gdm9pZCBwb3N0TWVz
c2FnZShpbiBET01TdHJpbmcgbWVzc2FnZSwgaW4gW09wdGlvbmFsXSBBcnJheSBtZXNzYWdlUG9y
dHMsIGluIERPTVN0cmluZyB0YXJnZXRPcmlnaW4pCisgICAgICAgICAgICByYWlzZXMoRE9NRXhj
ZXB0aW9uKTsKKyNlbHNlCisgICAgICAgIC8vIFRoZXJlJ3Mgbm8gZ29vZCB3YXkgdG8gZXhwb3Nl
IGFuIGFycmF5IHZpYSB0aGUgT2JqQyBiaW5kaW5ncywgc28gZm9yIG5vdyBqdXN0IGFsbG93IHBh
c3NpbmcgaW4gYSBzaW5nbGUgcG9ydC4KICAgICAgICAgW0RvTm90Q2hlY2tEb21haW5TZWN1cml0
eSwgQ3VzdG9tXSB2b2lkIHBvc3RNZXNzYWdlKGluIERPTVN0cmluZyBtZXNzYWdlLCBpbiBbT3B0
aW9uYWxdIE1lc3NhZ2VQb3J0IG1lc3NhZ2VQb3J0LCBpbiBET01TdHJpbmcgdGFyZ2V0T3JpZ2lu
KQogICAgICAgICAgICAgcmFpc2VzKERPTUV4Y2VwdGlvbik7CisjZW5kaWYKIAogICAgICAgICAv
LyBUaW1lcnMKICAgICAgICAgW0N1c3RvbV0gbG9uZyBzZXRUaW1lb3V0KGluIFRpbWVvdXRIYW5k
bGVyIGhhbmRsZXIsIGluIGxvbmcgdGltZW91dCk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3dvcmtl
cnMvRGVkaWNhdGVkV29ya2VyQ29udGV4dC5jcHAgYi9XZWJDb3JlL3dvcmtlcnMvRGVkaWNhdGVk
V29ya2VyQ29udGV4dC5jcHAKaW5kZXggMWQyNDU0Ny4uOGM1ZWU0NyAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS93b3JrZXJzL0RlZGljYXRlZFdvcmtlckNvbnRleHQuY3BwCisrKyBiL1dlYkNvcmUvd29y
a2Vycy9EZWRpY2F0ZWRXb3JrZXJDb250ZXh0LmNwcApAQCAtNDYsNyArNDYsNyBAQCBEZWRpY2F0
ZWRXb3JrZXJDb250ZXh0OjpEZWRpY2F0ZWRXb3JrZXJDb250ZXh0KGNvbnN0IEtVUkwmIHVybCwg
Y29uc3QgU3RyaW5nJiB1cwogewogfQogCi0vLyBGSVhNRTogcmVtb3ZlIHRoaXMgd2hlbiB3ZSB1
cGRhdGUgdGhlIEpTIGJpbmRpbmdzIChidWcgIzI4NDYwKS4KKy8vIEZJWE1FOiByZW1vdmUgdGhp
cyB3aGVuIHdlIHVwZGF0ZSB0aGUgT2JqQyBiaW5kaW5ncyAoYnVnICMyODc3NCkuCiB2b2lkIERl
ZGljYXRlZFdvcmtlckNvbnRleHQ6OnBvc3RNZXNzYWdlKGNvbnN0IFN0cmluZyYgbWVzc2FnZSwg
TWVzc2FnZVBvcnQqIHBvcnQsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIE1lc3NhZ2VQb3J0
QXJyYXkgcG9ydHM7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3dvcmtlcnMvRGVkaWNhdGVkV29ya2Vy
Q29udGV4dC5oIGIvV2ViQ29yZS93b3JrZXJzL0RlZGljYXRlZFdvcmtlckNvbnRleHQuaAppbmRl
eCBjMjIyYTY2Li4zYmM0YWVlIDEwMDY0NAotLS0gYS9XZWJDb3JlL3dvcmtlcnMvRGVkaWNhdGVk
V29ya2VyQ29udGV4dC5oCisrKyBiL1dlYkNvcmUvd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJDb250
ZXh0LmgKQEAgLTU3LDcgKzU3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0
dWFsIERlZGljYXRlZFdvcmtlckNvbnRleHQqIHRvRGVkaWNhdGVkV29ya2VyQ29udGV4dCgpIHsg
cmV0dXJuIHRoaXM7IH0KICAgICAgICAgdm9pZCBwb3N0TWVzc2FnZShjb25zdCBTdHJpbmcmLCBF
eGNlcHRpb25Db2RlJik7CiAgICAgICAgIHZvaWQgcG9zdE1lc3NhZ2UoY29uc3QgU3RyaW5nJiwg
Y29uc3QgTWVzc2FnZVBvcnRBcnJheSosIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICAgICAgLy8gRklY
TUU6IHJlbW92ZSB0aGlzIHdoZW4gd2UgdXBkYXRlIHRoZSBKUyBiaW5kaW5ncyAoYnVnICMyODQ2
MCkuCisgICAgICAgIC8vIEZJWE1FOiByZW1vdmUgdGhpcyB3aGVuIHdlIHVwZGF0ZSB0aGUgT2Jq
QyBiaW5kaW5ncyAoYnVnICMyODc3NCkuCiAgICAgICAgIHZvaWQgcG9zdE1lc3NhZ2UoY29uc3Qg
U3RyaW5nJiwgTWVzc2FnZVBvcnQqLCBFeGNlcHRpb25Db2RlJik7CiAgICAgICAgIHZvaWQgc2V0
T25tZXNzYWdlKFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gZXZlbnRMaXN0ZW5lcikgeyBtX29u
bWVzc2FnZUxpc3RlbmVyID0gZXZlbnRMaXN0ZW5lcjsgfQogICAgICAgICBFdmVudExpc3RlbmVy
KiBvbm1lc3NhZ2UoKSBjb25zdCB7IHJldHVybiBtX29ubWVzc2FnZUxpc3RlbmVyLmdldCgpOyB9
CmRpZmYgLS1naXQgYS9XZWJDb3JlL3dvcmtlcnMvRGVkaWNhdGVkV29ya2VyQ29udGV4dC5pZGwg
Yi9XZWJDb3JlL3dvcmtlcnMvRGVkaWNhdGVkV29ya2VyQ29udGV4dC5pZGwKaW5kZXggZWJiZWUz
My4uZWYzZWJmZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS93b3JrZXJzL0RlZGljYXRlZFdvcmtlckNv
bnRleHQuaWRsCisrKyBiL1dlYkNvcmUvd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJDb250ZXh0Lmlk
bApAQCAtMzksOCArMzksMTQgQEAgbW9kdWxlIHRocmVhZHMgewogICAgICAgICBOb1N0YXRpY1Rh
YmxlcwogICAgIF0gRGVkaWNhdGVkV29ya2VyQ29udGV4dCA6IFdvcmtlckNvbnRleHQgewogCisj
aWYgZGVmaW5lZChMQU5HVUFHRV9KQVZBU0NSSVBUKSAmJiBMQU5HVUFHRV9KQVZBU0NSSVBUCisg
ICAgICAgIFtDdXN0b21dIHZvaWQgcG9zdE1lc3NhZ2UoaW4gRE9NU3RyaW5nIG1lc3NhZ2UsIGlu
IFtPcHRpb25hbF0gQXJyYXkgbWVzc2FnZVBvcnRzKQorICAgICAgICAgICAgcmFpc2VzKERPTUV4
Y2VwdGlvbik7CisjZWxzZQorICAgICAgICAvLyBUaGVyZSdzIG5vIGdvb2Qgd2F5IHRvIGV4cG9z
ZSBhbiBhcnJheSB2aWEgdGhlIE9iakMgYmluZGluZ3MsIHNvIGZvciBub3cganVzdCBhbGxvdyBw
YXNzaW5nIGluIGEgc2luZ2xlIHBvcnQuCiAgICAgICAgIHZvaWQgcG9zdE1lc3NhZ2UoaW4gRE9N
U3RyaW5nIG1lc3NhZ2UsIGluIFtPcHRpb25hbF0gTWVzc2FnZVBvcnQgbWVzc2FnZVBvcnQpCiAg
ICAgICAgICAgICByYWlzZXMoRE9NRXhjZXB0aW9uKTsKKyNlbmRpZgogICAgICAgICAgICAgICAg
ICBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbm1lc3NhZ2U7CiAKICAgICB9OwpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS93b3JrZXJzL1dvcmtlci5jcHAgYi9XZWJDb3JlL3dvcmtlcnMvV29ya2VyLmNw
cAppbmRleCBlZDc5NzQ2Li45MjJjZDMzIDEwMDY0NAotLS0gYS9XZWJDb3JlL3dvcmtlcnMvV29y
a2VyLmNwcAorKysgYi9XZWJDb3JlL3dvcmtlcnMvV29ya2VyLmNwcApAQCAtNjksNyArNjksNyBA
QCBXb3JrZXI6On5Xb3JrZXIoKQogICAgIG1fY29udGV4dFByb3h5LT53b3JrZXJPYmplY3REZXN0
cm95ZWQoKTsKIH0KIAotLy8gRklYTUU6IHJlbW92ZSB0aGlzIHdoZW4gd2UgdXBkYXRlIHRoZSBK
UyBiaW5kaW5ncyAoYnVnICMyODQ2MCkuCisvLyBGSVhNRTogcmVtb3ZlIHRoaXMgd2hlbiB3ZSB1
cGRhdGUgdGhlIE9iakMgYmluZGluZ3MgKGJ1ZyAjMjg3NzQpLgogdm9pZCBXb3JrZXI6OnBvc3RN
ZXNzYWdlKGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgTWVzc2FnZVBvcnQqIHBvcnQsIEV4Y2VwdGlv
bkNvZGUmIGVjKQogewogICAgIE1lc3NhZ2VQb3J0QXJyYXkgcG9ydHM7CmRpZmYgLS1naXQgYS9X
ZWJDb3JlL3dvcmtlcnMvV29ya2VyLmggYi9XZWJDb3JlL3dvcmtlcnMvV29ya2VyLmgKaW5kZXgg
OGI5Y2NmYS4uNmJjMDBjMSAxMDA2NDQKLS0tIGEvV2ViQ29yZS93b3JrZXJzL1dvcmtlci5oCisr
KyBiL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXIuaApAQCAtNTksNyArNTksNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKICAgICAgICAgdm9pZCBwb3N0TWVzc2FnZShjb25zdCBTdHJpbmcmLCBFeGNl
cHRpb25Db2RlJik7CiAgICAgICAgIHZvaWQgcG9zdE1lc3NhZ2UoY29uc3QgU3RyaW5nJiwgY29u
c3QgTWVzc2FnZVBvcnRBcnJheSosIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICAgICAgLy8gRklYTUU6
IHJlbW92ZSB0aGlzIHdoZW4gd2UgdXBkYXRlIHRoZSBKUyBiaW5kaW5ncyAoYnVnICMyODQ2MCku
CisgICAgICAgIC8vIEZJWE1FOiByZW1vdmUgdGhpcyB3aGVuIHdlIHVwZGF0ZSB0aGUgT2JqQyBi
aW5kaW5ncyAoYnVnICMyODc3NCkuCiAgICAgICAgIHZvaWQgcG9zdE1lc3NhZ2UoY29uc3QgU3Ry
aW5nJiBtZXNzYWdlLCBNZXNzYWdlUG9ydCosIEV4Y2VwdGlvbkNvZGUmKTsKIAogICAgICAgICB2
b2lkIHRlcm1pbmF0ZSgpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS93b3JrZXJzL1dvcmtlci5pZGwg
Yi9XZWJDb3JlL3dvcmtlcnMvV29ya2VyLmlkbAppbmRleCBlNzAxNTIzLi4zYjRhM2ZmIDEwMDY0
NAotLS0gYS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyLmlkbAorKysgYi9XZWJDb3JlL3dvcmtlcnMv
V29ya2VyLmlkbApAQCAtMzQsOCArMzQsMTUgQEAgbW9kdWxlIHRocmVhZHMgewogICAgIF0gV29y
a2VyIDogQWJzdHJhY3RXb3JrZXIgewogCiAgICAgICAgIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVy
IG9ubWVzc2FnZTsKKworI2lmIGRlZmluZWQoTEFOR1VBR0VfSkFWQVNDUklQVCkgJiYgTEFOR1VB
R0VfSkFWQVNDUklQVAorICAgICAgICBbQ3VzdG9tXSB2b2lkIHBvc3RNZXNzYWdlKGluIERPTVN0
cmluZyBtZXNzYWdlLCBpbiBbT3B0aW9uYWxdIEFycmF5IG1lc3NhZ2VQb3J0cykKKyAgICAgICAg
ICAgIHJhaXNlcyhET01FeGNlcHRpb24pOworI2Vsc2UKKyAgICAgICAgLy8gVGhlcmUncyBubyBn
b29kIHdheSB0byBleHBvc2UgYW4gYXJyYXkgdmlhIHRoZSBPYmpDIGJpbmRpbmdzLCBzbyBmb3Ig
bm93IGp1c3QgYWxsb3cgcGFzc2luZyBpbiBhIHNpbmdsZSBwb3J0LgogICAgICAgICB2b2lkIHBv
c3RNZXNzYWdlKGluIERPTVN0cmluZyBtZXNzYWdlLCBpbiBbT3B0aW9uYWxdIE1lc3NhZ2VQb3J0
IG1lc3NhZ2VQb3J0KQogICAgICAgICAgICAgcmFpc2VzKERPTUV4Y2VwdGlvbik7CisjZW5kaWYK
IAogICAgICAgICB2b2lkIHRlcm1pbmF0ZSgpOwogICAgIH07Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>38896</attachid>
            <date>2009-09-01 16:35:37 -0700</date>
            <delta_ts>2009-09-03 08:42:31 -0700</delta_ts>
            <desc>Patch addressing Levin&apos;s comments</desc>
            <filename>x</filename>
            <type>text/plain</type>
            <size>81835</size>
            <attacher name="Andrew Wilson">atwilson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA1MWI5MzhhLi42M2RlMjE1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzMgQEAKKzIwMDktMDgt
MjkgIERyZXcgV2lsc29uICA8YXR3aWxzb25AZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBOZWVkIHRvIHVwZGF0ZSBKUyBiaW5kaW5n
cyBhbmQgSURMIGZpbGVzIHRvIHN1cHBvcnQgbXVsdGlwbGUgbWVzc2FnZSBwb3J0cyBpbiBwb3N0
TWVzc2FnZSgpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yODQ2MAorCisgICAgICAgIFVwZGF0ZWQgbGF5b3V0IHRlc3RzIHRvIG1hdGNoIG5ldyBwb3N0
TWVzc2FnZSgpIGFuZCBNZXNzYWdlRXZlbnQgQVBJcy4KKworICAgICAgICBBZGRlZCBuZXcgbGF5
b3V0IHRlc3RzIHRvIHRlc3Qgc2VuZGluZy9yZWNlaXZpbmcgbXVsdGlwbGUgcG9ydHMuCisKKyAg
ICAgICAgKiBmYXN0L2RvbS9XaW5kb3cvd2luZG93LXBvc3RtZXNzYWdlLWFyZ3MtZXhwZWN0ZWQu
dHh0OgorICAgICAgICAqIGZhc3QvZG9tL1dpbmRvdy93aW5kb3ctcG9zdG1lc3NhZ2UtYXJncy5o
dG1sOgorICAgICAgICBVcGRhdGVkIHRvIG1hdGNoIG5ldyBwb3N0TWVzc2FnZSBBUEkuCisgICAg
ICAgICogZmFzdC9ldmVudHMvaW5pdC1ldmVudHMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZh
c3QvZXZlbnRzL21lc3NhZ2UtY2hhbm5lbC1nYy00Lmh0bWw6CisgICAgICAgIFVwZGF0ZWQgdG8g
bWF0Y2ggbmV3IHBvc3RNZXNzYWdlIEFQSS4KKyAgICAgICAgKiBmYXN0L2V2ZW50cy9tZXNzYWdl
LXBvcnQtY2xvbmUuaHRtbDoKKyAgICAgICAgVXBkYXRlZCB0byBtYXRjaCBuZXcgcG9zdE1lc3Nh
Z2UgQVBJLgorICAgICAgICAqIGZhc3QvZXZlbnRzL21lc3NhZ2UtcG9ydC1kZWxldGVkLWRvY3Vt
ZW50Lmh0bWw6CisgICAgICAgIFVwZGF0ZWQgdG8gbWF0Y2ggbmV3IHBvc3RNZXNzYWdlIEFQSS4K
KyAgICAgICAgKiBmYXN0L2V2ZW50cy9tZXNzYWdlLXBvcnQtZGVsZXRlZC1mcmFtZS5odG1sOgor
ICAgICAgICBVcGRhdGVkIHRvIG1hdGNoIG5ldyBwb3N0TWVzc2FnZSBBUEkuCisgICAgICAgICog
ZmFzdC9ldmVudHMvbWVzc2FnZS1wb3J0LWluYWN0aXZlLWRvY3VtZW50Lmh0bWw6CisgICAgICAg
IFVwZGF0ZWQgdG8gbWF0Y2ggbmV3IHBvc3RNZXNzYWdlIEFQSS4KKyAgICAgICAgKiBmYXN0L2V2
ZW50cy9tZXNzYWdlLXBvcnQtbXVsdGktZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBm
YXN0L2V2ZW50cy9tZXNzYWdlLXBvcnQtbXVsdGkuaHRtbDogQWRkZWQuCisgICAgICAgIEFkZGVk
IHRlc3RzIGZvciB2YXJpb3VzIGNhc2VzIG9mIHNlbmRpbmcgbXVsdGlwbGUgcG9ydHMuCisgICAg
ICAgICogZmFzdC9ldmVudHMvbWVzc2FnZS1wb3J0Lmh0bWw6CisgICAgICAgIFVwZGF0ZWQgdG8g
bWF0Y2ggbmV3IHBvc3RNZXNzYWdlIEFQSS4KKyAgICAgICAgKiBmYXN0L2V2ZW50cy9yZXNvdXJj
ZXMvaW5pdC1ldmVudHMuanM6CisgICAgICAgIEFkZGVkIHRlc3RzIGZvciBzZW5kaW5nIHBvcnRz
IHRvIGluaXRNZXNzYWdlRXZlbnQoKQorICAgICAgICAqIGZhc3QvZXZlbnRzL3Jlc291cmNlcy9t
ZXNzYWdlLXBvcnQtaWZyYW1lLmh0bWw6CisgICAgICAgICogZmFzdC9ldmVudHMvcmVzb3VyY2Vz
L21lc3NhZ2UtcG9ydC1tdWx0aS5qczogQWRkZWQuCisgICAgICAgIEFkZGVkIHRlc3RzIGZvciB2
YXJpb3VzIGNhc2VzIG9mIHNlbmRpbmcgbXVsdGlwbGUgcG9ydHMuCisgICAgICAgICogZmFzdC93
b3JrZXJzL3Jlc291cmNlcy9zaGFyZWQtd29ya2VyLWNvbW1vbi5qczoKKyAgICAgICAgKG9uY29u
bmVjdCk6CisgICAgICAgIFVwZGF0ZWQgdG8gcmVmbGVjdCBuZXcgTWVzc2FnZUV2ZW50IEFQSS4K
KyAgICAgICAgKiBmYXN0L3dvcmtlcnMvcmVzb3VyY2VzL3NoYXJlZC13b3JrZXItc2NyaXB0LWVy
cm9yLmpzOgorICAgICAgICAob25jb25uZWN0KToKKyAgICAgICAgVXBkYXRlZCB0byByZWZsZWN0
IG5ldyBNZXNzYWdlRXZlbnQgQVBJLgorICAgICAgICAqIGZhc3Qvd29ya2Vycy9yZXNvdXJjZXMv
d29ya2VyLWNsb25lcG9ydC5qczoKKyAgICAgICAgKG9ubWVzc2FnZSk6CisgICAgICAgIFVwZGF0
ZWQgdG8gcmVmbGVjdCBuZXcgTWVzc2FnZUV2ZW50IEFQSS4KKyAgICAgICAgKiBmYXN0L3dvcmtl
cnMvcmVzb3VyY2VzL3dvcmtlci1jb250ZXh0LW11bHRpLXBvcnQuanM6IEFkZGVkLgorICAgICAg
ICAod29ya2VyLm9ubWVzc2FnZSk6CisgICAgICAgIEFkZGVkIHRlc3RzIGZvciB2YXJpb3VzIGNh
c2VzIG9mIHNlbmRpbmcgbXVsdGlwbGUgcG9ydHMuCisgICAgICAgICogZmFzdC93b3JrZXJzL3Jl
c291cmNlcy93b3JrZXItY29udGV4dC10aHJlYWQtbXVsdGktcG9ydC5qczogQWRkZWQuCisgICAg
ICAgIEFkZGVkIHRlc3RzIGZvciB2YXJpb3VzIGNhc2VzIG9mIHNlbmRpbmcgbXVsdGlwbGUgcG9y
dHMuCisgICAgICAgICogZmFzdC93b3JrZXJzL3Jlc291cmNlcy93b3JrZXItbWVzc2FnZXBvcnQu
anM6CisgICAgICAgIChvbm1lc3NhZ2UpOgorICAgICAgICBVcGRhdGVkIHRvIHJlZmxlY3QgbmV3
IE1lc3NhZ2VFdmVudCBBUEkuCisgICAgICAgICogZmFzdC93b3JrZXJzL3Jlc291cmNlcy93b3Jr
ZXItbXVsdGktcG9ydC5qczogQWRkZWQuCisgICAgICAgICh3b3JrZXIub25tZXNzYWdlKToKKyAg
ICAgICAgQWRkZWQgdGVzdHMgZm9yIHZhcmlvdXMgY2FzZXMgb2Ygc2VuZGluZyBtdWx0aXBsZSBw
b3J0cy4KKyAgICAgICAgKiBmYXN0L3dvcmtlcnMvcmVzb3VyY2VzL3dvcmtlci10aHJlYWQtbXVs
dGktcG9ydC5qczogQWRkZWQuCisgICAgICAgIChvbm1lc3NhZ2UpOgorICAgICAgICBXb3JrZXIt
dGhyZWFkIHNpZGUgb2YgbXVsdGlwbGUgcG9ydCBsYXlvdXQgdGVzdC4KKyAgICAgICAgKHRlc3RQ
YXNzZWQpOgorICAgICAgICAodGVzdEZhaWxlZCk6CisgICAgICAgICogZmFzdC93b3JrZXJzL3dv
cmtlci1jbG9uZXBvcnQuaHRtbDoKKyAgICAgICAgKiBmYXN0L3dvcmtlcnMvd29ya2VyLWNvbnRl
eHQtbXVsdGktcG9ydC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3Qvd29ya2Vy
cy93b3JrZXItY29udGV4dC1tdWx0aS1wb3J0Lmh0bWw6IEFkZGVkLgorICAgICAgICBBZGRlZCB0
ZXN0cyBmb3Igc2VuZGluZyBtdWx0aXBsZSBwb3J0cyBmcm9tIHRoZSB3b3JrZXIgdGhyZWFkLgor
ICAgICAgICAqIGZhc3Qvd29ya2Vycy93b3JrZXItbWVzc2FnZXBvcnQtZXhwZWN0ZWQudHh0Ogor
ICAgICAgICAqIGZhc3Qvd29ya2Vycy93b3JrZXItbWVzc2FnZXBvcnQtZ2MuaHRtbDoKKyAgICAg
ICAgKiBmYXN0L3dvcmtlcnMvd29ya2VyLW1lc3NhZ2Vwb3J0Lmh0bWw6CisgICAgICAgICogZmFz
dC93b3JrZXJzL3dvcmtlci1tdWx0aS1wb3J0LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAg
ICogZmFzdC93b3JrZXJzL3dvcmtlci1tdWx0aS1wb3J0Lmh0bWw6IEFkZGVkLgorCiAyMDA5LTA4
LTMxICBCcmlhbiBXZWluc3RlaW4gIDxid2VpbnN0ZWluQGFwcGxlLmNvbT4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9t
L1dpbmRvdy93aW5kb3ctcG9zdG1lc3NhZ2UtYXJncy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9mYXN0L2RvbS9XaW5kb3cvd2luZG93LXBvc3RtZXNzYWdlLWFyZ3MtZXhwZWN0ZWQudHh0Cmlu
ZGV4IDgyYzVjMzMuLjk3ZmY5ZGQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL1dp
bmRvdy93aW5kb3ctcG9zdG1lc3NhZ2UtYXJncy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVz
dHMvZmFzdC9kb20vV2luZG93L3dpbmRvdy1wb3N0bWVzc2FnZS1hcmdzLWV4cGVjdGVkLnR4dApA
QCAtMSwxMiArMSwxNiBAQAotVGVzdCB0aGF0IHRoZSBzZWNvbmQgYXJndW1lbnQgb2Ygd2luZG93
LnBvc3RNZXNzYWdlIGlzIGlnbm9yZWQgaWYgaXQgaXMgbm90IGEgbWVzc2FnZSBwb3J0LiBZb3Ug
c2hvdWxkIHNlZSBtZXNzYWdlcyAnMScgdGhyb3VnaCAnNicsIGZvbGxvd2VkIGJ5ICdkb25lJywg
cmVjZWl2ZWQgYmVsb3cuCitUZXN0IHRoYXQgdGhlIHNlY29uZCBhcmd1bWVudCBvZiB3aW5kb3cu
cG9zdE1lc3NhZ2UgaXMgaWdub3JlZCBvciB0cmlnZ2VycyBhbiBlcnJvciBpZiBpdCBpcyBub3Qg
YSBtZXNzYWdlIHBvcnQuIFlvdSBzaG91bGQgc2VlIFBBU1MgbWVzc2FnZSAnMScgdGhyb3VnaCAn
NycsIGZvbGxvd2VkIGJ5ICdkb25lJywgd2l0aCBtZXNzYWdlcyA0LTcgcmVjZWl2ZWQgYmVsb3cu
CiAKLU5vdGUgdGhhdCB0aGUgSFRNTDUgc3BlYyBpbXBsaWVzIHRoYXQgYW4gZXhjZXB0aW9uIHNo
b3VsZCBiZSByYWlzZWQgaW5zdGVhZCwgc28gdGhpcyB0ZXN0IHdpbGwgbmVlZCB1cGRhdGluZyBv
bmNlIHRoYXQgbmV3IGJlaGF2aW9yIGlzIGltcGxlbWVudGVkLgotCi1SZWNlaXZlZCBtZXNzYWdl
ICcxJwotUmVjZWl2ZWQgbWVzc2FnZSAnMicKLVJlY2VpdmVkIG1lc3NhZ2UgJzMnCitQQVNTOiBQ
b3N0aW5nIG1lc3NhZ2UgKCcxJywgMSk6IHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUg
ZXJyb3IKK1BBU1M6IFBvc3RpbmcgbWVzc2FnZSAoJzInLCApOiB0aHJldyBleGNlcHRpb24gVHlw
ZUVycm9yOiBUeXBlIGVycm9yCitQQVNTOiBQb3N0aW5nIG1lc3NhZ2UgKCczJywgW29iamVjdCBP
YmplY3RdKTogdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJvcgorUEFTUzogUG9z
dGluZyBtZXNzYWdlICgnNCcsIFtvYmplY3QgRE9NV2luZG93XSkgZGlkIG5vdCB0aHJvdyBhbiBl
eGNlcHRpb24KK1BBU1M6IFBvc3RpbmcgbWVzc2FnZSAoJzUnLCBudWxsKSBkaWQgbm90IHRocm93
IGFuIGV4Y2VwdGlvbgorUEFTUzogUG9zdGluZyBtZXNzYWdlICgnNicsIHVuZGVmaW5lZCkgZGlk
IG5vdCB0aHJvdyBhbiBleGNlcHRpb24KK1BBU1M6IFBvc3RpbmcgbWVzc2FnZSAoJzcnLCBbb2Jq
ZWN0IE1lc3NhZ2VQb3J0XSxbb2JqZWN0IE1lc3NhZ2VQb3J0XSkgZGlkIG5vdCB0aHJvdyBhbiBl
eGNlcHRpb24KK1BBU1M6IFBvc3RpbmcgbWVzc2FnZSAoJ2RvbmUnLCAqKSBkaWQgbm90IHRocm93
IGFuIGV4Y2VwdGlvbgogUmVjZWl2ZWQgbWVzc2FnZSAnNCcKIFJlY2VpdmVkIG1lc3NhZ2UgJzUn
CiBSZWNlaXZlZCBtZXNzYWdlICc2JworUmVjZWl2ZWQgbWVzc2FnZSAnNycgd2l0aCAyIHBvcnRz
LgogUmVjZWl2ZWQgbWVzc2FnZSAnZG9uZScKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFz
dC9kb20vV2luZG93L3dpbmRvdy1wb3N0bWVzc2FnZS1hcmdzLmh0bWwgYi9MYXlvdXRUZXN0cy9m
YXN0L2RvbS9XaW5kb3cvd2luZG93LXBvc3RtZXNzYWdlLWFyZ3MuaHRtbAppbmRleCBiMmFkYjZm
Li41NDk3NTc2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9XaW5kb3cvd2luZG93
LXBvc3RtZXNzYWdlLWFyZ3MuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9XaW5kb3cv
d2luZG93LXBvc3RtZXNzYWdlLWFyZ3MuaHRtbApAQCAtMTIsNyArMTIsMTAgQEAgaWYgKHdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewogdmFyIGNvbnNvbGUgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgiY29uc29sZSIpOwogCiBmdW5jdGlvbiBvbm1lc3NhZ2UoZXZ0KSB7Ci0gICAgY29u
c29sZS5pbm5lckhUTUwgKz0gIlJlY2VpdmVkIG1lc3NhZ2UgJyIgKyBldnQuZGF0YSArICInPGJy
PiI7CisgICAgaWYgKGV2dC5wb3J0cykKKyAgICAgICAgY29uc29sZS5pbm5lckhUTUwgKz0gIlJl
Y2VpdmVkIG1lc3NhZ2UgJyIgKyBldnQuZGF0YSArICInIHdpdGggIiArIGV2dC5wb3J0cy5sZW5n
dGggKyAiIHBvcnRzLjxicj4iOworICAgIGVsc2UKKyAgICAgICAgY29uc29sZS5pbm5lckhUTUwg
Kz0gIlJlY2VpdmVkIG1lc3NhZ2UgJyIgKyBldnQuZGF0YSArICInPGJyPiI7CiAKICAgICBpZiAo
ZXZ0LmRhdGEgPT0gJ2RvbmUnICYmIHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKICAgICAg
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOwpAQCAtMjAsMjUgKzIzLDI4IEBA
IGZ1bmN0aW9uIG9ubWVzc2FnZShldnQpIHsKIAogd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ21l
c3NhZ2UnLCBvbm1lc3NhZ2UsIGZhbHNlKTsKIAotZnVuY3Rpb24gdHJ5UG9zdE1lc3NhZ2UoZmly
c3QsIHNlY29uZCwgdGhpcmQpIHsKK2Z1bmN0aW9uIHRyeVBvc3RNZXNzYWdlKGZpcnN0LCBzZWNv
bmQsIHRoaXJkLCBzaG91bGRGYWlsKSB7CiAgICAgdHJ5IHsKICAgICAgICAgaWYgKCF0aGlyZCkK
ICAgICAgICAgICAgIHdpbmRvdy5wb3N0TWVzc2FnZShmaXJzdCwgc2Vjb25kKTsKICAgICAgICAg
ZWxzZQogICAgICAgICAgICAgd2luZG93LnBvc3RNZXNzYWdlKGZpcnN0LCBzZWNvbmQsIHRoaXJk
KTsKLSAgICB9IGNhdGNoIChlKSB7Ci0gICAgICAgICBjb25zb2xlLmlubmVySFRNTCArPSAiRkFJ
TDogUG9zdGluZyBtZXNzYWdlICgiICsgZmlyc3QgKyAiLCAiICsgc2Vjb25kICsgIik6IHRocmV3
IGV4Y2VwdGlvbiAiICsgZSArICI8YnI+IjsKLSAgICB9CisgICAgICAgIGNvbnNvbGUuaW5uZXJI
VE1MICs9IChzaG91bGRGYWlsID8gIkZBSUwiIDogIlBBU1MiKSArICI6IFBvc3RpbmcgbWVzc2Fn
ZSAoJyIgKyBmaXJzdCArICInLCAiICsgc2Vjb25kICsgIikgZGlkIG5vdCB0aHJvdyBhbiBleGNl
cHRpb248YnI+IjsKKyAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgY29uc29sZS5pbm5lckhUTUwg
Kz0gKHNob3VsZEZhaWwgPyAiUEFTUyIgOiAiRkFJTCIpICsgIjogUG9zdGluZyBtZXNzYWdlICgn
IiArIGZpcnN0ICsgIicsICIgKyBzZWNvbmQgKyAiKTogdGhyZXcgZXhjZXB0aW9uICIgKyBlICsg
Ijxicj4iOworICAgfQogfQogCi1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZGVzY3JpcHRpb24i
KS5pbm5lckhUTUwgPSAiVGVzdCB0aGF0IHRoZSBzZWNvbmQgYXJndW1lbnQgb2Ygd2luZG93LnBv
c3RNZXNzYWdlIGlzIGlnbm9yZWQgaWYgaXQgaXMgbm90IGEgbWVzc2FnZSBwb3J0LiBZb3Ugc2hv
dWxkIHNlZSBtZXNzYWdlcyAnMScgdGhyb3VnaCAnNicsIGZvbGxvd2VkIGJ5ICdkb25lJywgcmVj
ZWl2ZWQgYmVsb3cuPGJyPjxicj5Ob3RlIHRoYXQgdGhlIEhUTUw1IHNwZWMgaW1wbGllcyB0aGF0
IGFuIGV4Y2VwdGlvbiBzaG91bGQgYmUgcmFpc2VkIGluc3RlYWQsIHNvIHRoaXMgdGVzdCB3aWxs
IG5lZWQgdXBkYXRpbmcgb25jZSB0aGF0IG5ldyBiZWhhdmlvciBpcyBpbXBsZW1lbnRlZC48YnI+
PGJyPiI7Citkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZGVzY3JpcHRpb24iKS5pbm5lckhUTUwg
PSAiVGVzdCB0aGF0IHRoZSBzZWNvbmQgYXJndW1lbnQgb2Ygd2luZG93LnBvc3RNZXNzYWdlIGlz
IGlnbm9yZWQgb3IgdHJpZ2dlcnMgYW4gZXJyb3IgaWYgaXQgaXMgbm90IGEgbWVzc2FnZSBwb3J0
LiBZb3Ugc2hvdWxkIHNlZSBQQVNTIG1lc3NhZ2UgJzEnIHRocm91Z2ggJzcnLCBmb2xsb3dlZCBi
eSAnZG9uZScsIHdpdGggbWVzc2FnZXMgNC03IHJlY2VpdmVkIGJlbG93Ljxicj48YnI+IjsKIAot
dHJ5UG9zdE1lc3NhZ2UoJzEnLCAxLCAnKicpOwotdHJ5UG9zdE1lc3NhZ2UoJzInLCAiIiwgJyon
KTsKLXRyeVBvc3RNZXNzYWdlKCczJywgd2luZG93LCAnKicpOwotdHJ5UG9zdE1lc3NhZ2UoJzQn
LCB7IHg6IDEgfSwgJyonKTsKK3ZhciBjaGFubmVsID0gbmV3IE1lc3NhZ2VDaGFubmVsOwordHJ5
UG9zdE1lc3NhZ2UoJzEnLCAxLCAnKicsIHRydWUpOwordHJ5UG9zdE1lc3NhZ2UoJzInLCAiIiwg
JyonLCB0cnVlKTsKK3RyeVBvc3RNZXNzYWdlKCczJywgeyB4OiAxIH0sICcqJywgdHJ1ZSk7Cit0
cnlQb3N0TWVzc2FnZSgnNCcsIHdpbmRvdywgJyonKTsgIC8vIFBhc3NlcyBiZWNhdXNlIHdpbmRv
dyBoYXMgYSAibGVuZ3RoIiBhdHRyaWJ1dGUgb2YgdmFsdWUgJzAnLCBzbyBpdCBsb29rcyBsaWtl
IGFuIGFycmF5CiB0cnlQb3N0TWVzc2FnZSgnNScsIG51bGwsICcqJyk7CiB0cnlQb3N0TWVzc2Fn
ZSgnNicsIHZvaWQgMCwgJyonKTsKK3RyeVBvc3RNZXNzYWdlKCc3JywgW2NoYW5uZWwucG9ydDEs
IGNoYW5uZWwucG9ydDJdLCAnKicpOwogdHJ5UG9zdE1lc3NhZ2UoJ2RvbmUnLCAnKicpOwogPC9z
Y3JpcHQ+CiA8L2JvZHk+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9pbml0
LWV2ZW50cy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9pbml0LWV2ZW50
cy1leHBlY3RlZC50eHQKaW5kZXggZWU1YzczYS4uYzg3NDE2YiAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvZmFzdC9ldmVudHMvaW5pdC1ldmVudHMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRl
c3RzL2Zhc3QvZXZlbnRzL2luaXQtZXZlbnRzLWV4cGVjdGVkLnR4dApAQCAtNTIsNiArNTIsOCBA
QCBQQVNTIHRlc3RJbml0RXZlbnQoJ01lc3NhZ2UnLCAnImEiLCBmYWxzZSwgZmFsc2UsICJiIiwg
ImMiLCAiZCIsIHdpbmRvdywgbnVsbCcpLgogUEFTUyB0ZXN0SW5pdEV2ZW50KCdNZXNzYWdlJywg
JyJhIiwgZmFsc2UsIGZhbHNlLCAiYiIsICJjIiwgbnVsbCwgd2luZG93LCBudWxsJykubGFzdEV2
ZW50SWQgaXMgJ251bGwnCiBQQVNTIHRlc3RJbml0RXZlbnQoJ01lc3NhZ2UnLCAnImEiLCBmYWxz
ZSwgZmFsc2UsICJiIiwgImMiLCAiZCIsIHdpbmRvdywgbnVsbCcpLnNvdXJjZSBpcyB3aW5kb3cK
IFBBU1MgdGVzdEluaXRFdmVudCgnTWVzc2FnZScsICciYSIsIGZhbHNlLCBmYWxzZSwgImIiLCAi
YyIsICJkIiwgbnVsbCwgbnVsbCcpLnNvdXJjZSBpcyBudWxsCitQQVNTIHRlc3RJbml0RXZlbnQo
J01lc3NhZ2UnLCAnImEiLCBmYWxzZSwgZmFsc2UsICJiIiwgImMiLCAiZCIsIG51bGwsIGNoYW5u
ZWxBcnJheScpLnBvcnRzWzBdIGlzIGNoYW5uZWwucG9ydDEKK1BBU1MgdGVzdEluaXRFdmVudCgn
TWVzc2FnZScsICciYSIsIGZhbHNlLCBmYWxzZSwgImIiLCAiYyIsICJkIiwgbnVsbCwgY2hhbm5l
bEFycmF5JykucG9ydHNbMV0gaXMgY2hhbm5lbC5wb3J0MgogUEFTUyB0ZXN0SW5pdEV2ZW50KCdN
b3VzZScsICciYSIsIGZhbHNlLCBmYWxzZSwgd2luZG93LCAxMDAxLCAxMDAyLCAxMDAzLCAxMDA0
LCAxMDA1LCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgMTAwNiwgbnVsbCcpLnR5cGUgaXMg
J2EnCiBQQVNTIHRlc3RJbml0RXZlbnQoJ01vdXNlJywgJ251bGwsIGZhbHNlLCBmYWxzZSwgd2lu
ZG93LCAxMDAxLCAxMDAyLCAxMDAzLCAxMDA0LCAxMDA1LCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBm
YWxzZSwgMTAwNiwgbnVsbCcpLnR5cGUgaXMgJ251bGwnCiBQQVNTIHRlc3RJbml0RXZlbnQoJ01v
dXNlJywgJyJhIiwgZmFsc2UsIGZhbHNlLCB3aW5kb3csIDEwMDEsIDEwMDIsIDEwMDMsIDEwMDQs
IDEwMDUsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCAxMDA2LCBudWxsJykuYnViYmxlcyBp
cyBmYWxzZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvbWVzc2FnZS1jaGFu
bmVsLWdjLTQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL21lc3NhZ2UtY2hhbm5lbC1n
Yy00Lmh0bWwKaW5kZXggMGFlYTlmOC4uNDg1MDZkNiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
ZmFzdC9ldmVudHMvbWVzc2FnZS1jaGFubmVsLWdjLTQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9m
YXN0L2V2ZW50cy9tZXNzYWdlLWNoYW5uZWwtZ2MtNC5odG1sCkBAIC0yOCwxMCArMjgsMTAgQEAg
ZnVuY3Rpb24gdGVzdDEoKQogICAgIHZhciBjaGFubmVsID0gbmV3IE1lc3NhZ2VDaGFubmVsOwog
ICAgIHZhciBjaGFubmVsMiA9IG5ldyBNZXNzYWdlQ2hhbm5lbDsKICAgICBjaGFubmVsLnBvcnQx
LnBvc3RNZXNzYWdlKCJtc2cxIik7Ci0gICAgY2hhbm5lbDIucG9ydDEucG9zdE1lc3NhZ2UoIiIs
IGNoYW5uZWwucG9ydDEpOwotICAgIGNoYW5uZWwyLnBvcnQyLnBvc3RNZXNzYWdlKCIiLCBjaGFu
bmVsLnBvcnQyKTsKKyAgICBjaGFubmVsMi5wb3J0MS5wb3N0TWVzc2FnZSgiIiwgW2NoYW5uZWwu
cG9ydDFdKTsKKyAgICBjaGFubmVsMi5wb3J0Mi5wb3N0TWVzc2FnZSgiIiwgW2NoYW5uZWwucG9y
dDJdKTsKICAgICBjaGFubmVsMi5wb3J0Mi5vbm1lc3NhZ2UgPSBjaGFubmVsMi5wb3J0MS5vbm1l
c3NhZ2UgPSBmdW5jdGlvbihldnQpIHsKLSAgICAgICAgZXZ0Lm1lc3NhZ2VQb3J0Lm9ubWVzc2Fn
ZSA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAgIGV2dC5wb3J0c1swXS5vbm1lc3NhZ2UgPSBm
dW5jdGlvbihldmVudCkgewogICAgICAgICAgICAgaWYgKGV2ZW50LmRhdGEgPT0gIm1zZzEiKSB7
CiAgICAgICAgICAgICAgICAgbG9nKCJQQVNTOiBSZWNlaXZlZCBtZXNzYWdlIHRvIGNsb25lZCBw
b3J0LiIpOwogICAgICAgICAgICAgICAgIHRoaXMucG9zdE1lc3NhZ2UoIm1zZzIiKTsKQEAgLTQ1
LDcgKzQ1LDcgQEAgZnVuY3Rpb24gdGVzdDEoKQogICAgICAgICAgICAgICAgIGxvZygiRkFJTDog
UmVjZWl2ZWQgdW5rbm93biBtZXNzYWdlOiAiICsgZXZlbnQuZGF0YSk7CiAgICAgICAgICAgICB9
CiAgICAgICAgIH0KLSAgICAgICAgZXZ0Lm1lc3NhZ2VQb3J0ID0gMDsKKyAgICAgICAgZXZ0LnBv
cnRzWzBdID0gMDsKICAgICB9CiAgICAgY2hhbm5lbCA9IDA7CiAgICAgY2hhbm5lbDIgPSAwOwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvbWVzc2FnZS1wb3J0LWNsb25lLmh0
bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9tZXNzYWdlLXBvcnQtY2xvbmUuaHRtbAppbmRl
eCBhODE4YTJlLi5iOTk5MzhiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9t
ZXNzYWdlLXBvcnQtY2xvbmUuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9tZXNz
YWdlLXBvcnQtY2xvbmUuaHRtbApAQCAtMjksMTQgKzI5LDE0IEBAIGNoYW5uZWwucG9ydDEub25t
ZXNzYWdlID0gY2hhbm5lbC5wb3J0Mi5vbm1lc3NhZ2UgPSBmdW5jdGlvbihldnQpIHsKICAgICBm
YWlsKCJGQUlMOiBTaG91bGQgbm90IGhhdmUgcmVjZWl2ZWQgbWVzc2FnZTogIiArIGV2dC5kYXRh
KTsKIH0KIHRyeSB7Ci0gICAgY2hhbm5lbC5wb3J0MS5wb3N0TWVzc2FnZSgibXNnIiwgY2hhbm5l
bC5wb3J0MSk7CisgICAgY2hhbm5lbC5wb3J0MS5wb3N0TWVzc2FnZSgibXNnIiwgW2NoYW5uZWwu
cG9ydDFdKTsKICAgICBsb2coIkZBSUw6IFBvc3RpbmcgcG9ydCB0byBpdHNlbGYgc2hvdWxkIHRo
cm93IGFuIGV4Y2VwdGlvbi4iKTsKIH0gY2F0Y2ggKGV4KSB7CiAgICAgbG9nKCJTVUNDRVNTOiBQ
b3N0aW5nIHBvcnQgdG8gaXRzZWxmOiAiICsgZXgpOwogfQogCiB0cnkgewotICAgIGNoYW5uZWwu
cG9ydDEucG9zdE1lc3NhZ2UoIm1zZyIsIGNoYW5uZWwucG9ydDIpOworICAgIGNoYW5uZWwucG9y
dDEucG9zdE1lc3NhZ2UoIm1zZyIsIFtjaGFubmVsLnBvcnQyXSk7CiAgICAgbG9nKCJGQUlMOiBQ
b3N0aW5nIHBvcnQgdG8gZW50YW5nbGVkIHBhaXIgc2hvdWxkIHRocm93IGFuIGV4Y2VwdGlvbi4i
KTsKIH0gY2F0Y2ggKGV4KSB7CiAgICAgbG9nKCJTVUNDRVNTOiBQb3N0aW5nIGVudGFuZ2xlZCBw
b3J0OiAiICsgZXgpOwpAQCAtNDQsMTEgKzQ0LDExIEBAIHRyeSB7CiAKIGNoYW5uZWwgPSBuZXcg
TWVzc2FnZUNoYW5uZWw7CiB2YXIgY2hhbm5lbDIgPSBuZXcgTWVzc2FnZUNoYW5uZWw7Ci1jaGFu
bmVsLnBvcnQxLnBvc3RNZXNzYWdlKCJtc2ciLCBjaGFubmVsMi5wb3J0MSk7CitjaGFubmVsLnBv
cnQxLnBvc3RNZXNzYWdlKCJtc2ciLCBbY2hhbm5lbDIucG9ydDFdKTsKIAogLy8gU2hvdWxkIG5v
dCBiZSBhYmxlIHRvIHBvc3QgYSBjbG9uZWQgcG9ydC4KIHRyeSB7Ci0gICAgY2hhbm5lbC5wb3J0
MS5wb3N0TWVzc2FnZSgibXNnIiwgY2hhbm5lbDIucG9ydDEpOworICAgIGNoYW5uZWwucG9ydDEu
cG9zdE1lc3NhZ2UoIm1zZyIsIFtjaGFubmVsMi5wb3J0MV0pOwogICAgIGxvZygiRkFJTDogUG9z
dGluZyBjbG9uZWQgcG9ydCBzaG91bGQgdGhyb3cgYW4gZXhjZXB0aW9uLiIpOwogfSBjYXRjaCAo
ZXgpIHsKICAgICBsb2coIlNVQ0NFU1M6IFBvc3RpbmcgY2xvbmVkIHBvcnQuIik7CkBAIC02MSwx
MiArNjEsMTQgQEAgdmFyIGNoYW5uZWwyID0gbmV3IE1lc3NhZ2VDaGFubmVsOwogCiAvLyBQb3N0
IG1lc3NhZ2VzIGJlZm9yZSBhbmQgYWZ0ZXIgY2xvbmUgdG8gbWFrZSBzdXJlIG9yZGVyaW5nIGlz
IHByZXNlcnZlZCBhbmQgYWxsIG1lc3NhZ2VzIGFyZSByZWNlaXZlZC4KIGNoYW5uZWwyLnBvcnQy
LnBvc3RNZXNzYWdlKCIxIik7Ci1jaGFubmVsLnBvcnQxLnBvc3RNZXNzYWdlKCJtc2ciLCBjaGFu
bmVsMi5wb3J0MSk7CitjaGFubmVsLnBvcnQxLnBvc3RNZXNzYWdlKCJtc2ciLCBbY2hhbm5lbDIu
cG9ydDFdKTsKIGNoYW5uZWwyLnBvcnQyLnBvc3RNZXNzYWdlKCIyIik7CiBjaGFubmVsMi5wb3J0
Mi5wb3N0TWVzc2FnZSgiMyIpOwogY2hhbm5lbC5wb3J0Mi5vbm1lc3NhZ2UgPSBmdW5jdGlvbihl
dnQpIHsKICAgICB2YXIgbWVzc2FnZUluZGV4ID0gMTsKLSAgICBldnQubWVzc2FnZVBvcnQub25t
ZXNzYWdlID0gZnVuY3Rpb24oZXZ0KSB7CisgICAgaWYgKGV2dC5wb3J0cy5sZW5ndGggIT0gMSkK
KyAgICAgICAgbG9nKCJGQUlMOiBHb3QgbWVzc2FnZSB3aXRob3V0IHdyb25nIG51bWJlciBvZiBw
b3J0czogIiArIGV2dC5wb3J0cy5sZW5ndGgpOworICAgIGV2dC5wb3J0c1swXS5vbm1lc3NhZ2Ug
PSBmdW5jdGlvbihldnQpIHsKICAgICAgICAgaWYgKGV2dC5kYXRhICE9IG1lc3NhZ2VJbmRleCkK
ICAgICAgICAgICAgIGxvZygiRkFJTDogR290IG1lc3NhZ2UgIiArIGV2dC5kYXRhICsgIiwgZXhw
ZWN0ZWQgIiArIG1lc3NhZ2VJbmRleCk7CiAgICAgICAgIG1lc3NhZ2VJbmRleCsrOwpAQCAtODEs
MTQgKzgzLDE0IEBAIGZ1bmN0aW9uIHRlc3REb3VibHlDbG9uZWRQb3J0KCkKIHsKICAgICB2YXIg
Y2hhbm5lbCA9IG5ldyBNZXNzYWdlQ2hhbm5lbDsKICAgICB2YXIgY2hhbm5lbDIgPSBuZXcgTWVz
c2FnZUNoYW5uZWw7Ci0gICAgY2hhbm5lbC5wb3J0MS5wb3N0TWVzc2FnZSgibXNnIiwgY2hhbm5l
bDIucG9ydDEpOwotICAgIGNoYW5uZWwucG9ydDIucG9zdE1lc3NhZ2UoIm1zZyIsIGNoYW5uZWwy
LnBvcnQyKTsKKyAgICBjaGFubmVsLnBvcnQxLnBvc3RNZXNzYWdlKCJtc2ciLCBbY2hhbm5lbDIu
cG9ydDFdKTsKKyAgICBjaGFubmVsLnBvcnQyLnBvc3RNZXNzYWdlKCJtc2ciLCBbY2hhbm5lbDIu
cG9ydDJdKTsKICAgICBnYygpOwogICAgIGNoYW5uZWwucG9ydDEub25tZXNzYWdlID0gZnVuY3Rp
b24oZXZ0KSB7Ci0gICAgICAgIGV2dC5tZXNzYWdlUG9ydC5wb3N0TWVzc2FnZSgidGVzdG1lIik7
CisgICAgICAgIGV2dC5wb3J0c1swXS5wb3N0TWVzc2FnZSgidGVzdG1lIik7CiAgICAgfQogICAg
IGNoYW5uZWwucG9ydDIub25tZXNzYWdlID0gZnVuY3Rpb24oZXZ0KSB7Ci0gICAgICAgIGV2dC5t
ZXNzYWdlUG9ydC5vbm1lc3NhZ2UgPSBmdW5jdGlvbiAoZXZ0KSB7CisgICAgICAgIGV2dC5wb3J0
c1swXS5vbm1lc3NhZ2UgPSBmdW5jdGlvbiAoZXZ0KSB7CiAgICAgICAgICAgICBpZiAoZXZ0LmRh
dGEgPT0gInRlc3RtZSIpCiAgICAgICAgICAgICAgICAgbG9nKCJTVUNDRVNTOiBDbG9uZWQgYm90
aCBlbmRwb2ludHMgb2YgYSBjaGFubmVsLiIpOwogICAgICAgICAgICAgZWxzZQpAQCAtMTA1LDkg
KzEwNyw5IEBAIGZ1bmN0aW9uIHRlc3RQb3N0Q2xvc2VQb3J0KCkKICAgICB2YXIgY2hhbm5lbCA9
IG5ldyBNZXNzYWdlQ2hhbm5lbDsKICAgICB2YXIgY2hhbm5lbDIgPSBuZXcgTWVzc2FnZUNoYW5u
ZWw7CiAgICAgY2hhbm5lbDIucG9ydDIuY2xvc2UoKTsKLSAgICBjaGFubmVsLnBvcnQxLnBvc3RN
ZXNzYWdlKCJjbG9zZWQiLCBjaGFubmVsMi5wb3J0Mik7CisgICAgY2hhbm5lbC5wb3J0MS5wb3N0
TWVzc2FnZSgiY2xvc2VkIiwgW2NoYW5uZWwyLnBvcnQyXSk7CiAgICAgY2hhbm5lbC5wb3J0Mi5v
bm1lc3NhZ2UgPSBmdW5jdGlvbihldnQpIHsKLSAgICAgICAgaWYgKCFldnQubWVzc2FnZVBvcnQp
CisgICAgICAgIGlmICghZXZ0LnBvcnRzIHx8IGV2dC5wb3J0cy5sZW5ndGggIT0gMSkKICAgICAg
ICAgICAgIGxvZygiRkFJTDogQ2xvc2VkIHBvcnQgbm90IHNlbnQuIik7CiAgICAgICAgIGVsc2Ug
aWYgKGV2dC5kYXRhICE9ICJjbG9zZWQiKQogICAgICAgICAgICAgbG9nKCJGQUlMOiBVbmV4cGVj
dGVkIG1lc3NhZ2U6ICIgKyBldnQuZGF0YSk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0
L2V2ZW50cy9tZXNzYWdlLXBvcnQtZGVsZXRlZC1kb2N1bWVudC5odG1sIGIvTGF5b3V0VGVzdHMv
ZmFzdC9ldmVudHMvbWVzc2FnZS1wb3J0LWRlbGV0ZWQtZG9jdW1lbnQuaHRtbAppbmRleCBjMWUy
ZTA3Li42OGE0MzE3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9tZXNzYWdl
LXBvcnQtZGVsZXRlZC1kb2N1bWVudC5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRz
L21lc3NhZ2UtcG9ydC1kZWxldGVkLWRvY3VtZW50Lmh0bWwKQEAgLTI3LDcgKzI3LDcgQEAgdmFy
IG1haW5Qb3J0OwogZnVuY3Rpb24gdGVzdCgpCiB7CiAgICAgdmFyIGNoYW5uZWwgPSBuZXcgTWVz
c2FnZUNoYW5uZWw7Ci0gICAgd2luZG93LmZyYW1lc1swXS5wb3N0TWVzc2FnZSgibXNnIiwgY2hh
bm5lbC5wb3J0MiwgIioiKTsKKyAgICB3aW5kb3cuZnJhbWVzWzBdLnBvc3RNZXNzYWdlKCJtc2ci
LCBbY2hhbm5lbC5wb3J0Ml0sICIqIik7CiAgICAgbWFpblBvcnQgPSBjaGFubmVsLnBvcnQxOwog
ICAgIG1haW5Qb3J0LnN0YXJ0KCk7CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZXZl
bnRzL21lc3NhZ2UtcG9ydC1kZWxldGVkLWZyYW1lLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2V2
ZW50cy9tZXNzYWdlLXBvcnQtZGVsZXRlZC1mcmFtZS5odG1sCmluZGV4IDY5ZmEyYjMuLmU5NWU1
ZmIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL21lc3NhZ2UtcG9ydC1kZWxl
dGVkLWZyYW1lLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvbWVzc2FnZS1wb3J0
LWRlbGV0ZWQtZnJhbWUuaHRtbApAQCAtMjksNyArMjksNyBAQCBmdW5jdGlvbiB0ZXN0KCkKIHsK
ICAgICBmcmFtZURvYyA9IHdpbmRvdy5mcmFtZXNbMF0uZG9jdW1lbnQ7CiAgICAgdmFyIGNoYW5u
ZWwgPSBuZXcgTWVzc2FnZUNoYW5uZWw7Ci0gICAgd2luZG93LmZyYW1lc1swXS5wb3N0TWVzc2Fn
ZSgibXNnIiwgY2hhbm5lbC5wb3J0MiwgIioiKTsKKyAgICB3aW5kb3cuZnJhbWVzWzBdLnBvc3RN
ZXNzYWdlKCJtc2ciLCBbY2hhbm5lbC5wb3J0Ml0sICIqIik7CiAgICAgbWFpblBvcnQgPSBjaGFu
bmVsLnBvcnQxOwogICAgIG1haW5Qb3J0LnN0YXJ0KCk7CiAKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2Zhc3QvZXZlbnRzL21lc3NhZ2UtcG9ydC1pbmFjdGl2ZS1kb2N1bWVudC5odG1sIGIvTGF5
b3V0VGVzdHMvZmFzdC9ldmVudHMvbWVzc2FnZS1wb3J0LWluYWN0aXZlLWRvY3VtZW50Lmh0bWwK
aW5kZXggNTg1OTU3Ni4uNDg2NDBkNyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9ldmVu
dHMvbWVzc2FnZS1wb3J0LWluYWN0aXZlLWRvY3VtZW50Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMv
ZmFzdC9ldmVudHMvbWVzc2FnZS1wb3J0LWluYWN0aXZlLWRvY3VtZW50Lmh0bWwKQEAgLTI5LDcg
KzI5LDcgQEAgZnVuY3Rpb24gdGVzdCgpCiB7CiAgICAgb3RoZXJEb2N1bWVudCA9IHdpbmRvdy5m
cmFtZXNbMF0uZG9jdW1lbnQ7CiAgICAgdmFyIGNoYW5uZWwgPSBuZXcgTWVzc2FnZUNoYW5uZWw7
Ci0gICAgd2luZG93LmZyYW1lc1swXS5wb3N0TWVzc2FnZSgibXNnIiwgY2hhbm5lbC5wb3J0Miwg
IioiKTsKKyAgICB3aW5kb3cuZnJhbWVzWzBdLnBvc3RNZXNzYWdlKCJtc2ciLCBbY2hhbm5lbC5w
b3J0Ml0sICIqIik7CiAgICAgbWFpblBvcnQgPSBjaGFubmVsLnBvcnQxOwogICAgIG1haW5Qb3J0
LnN0YXJ0KCk7CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL21lc3NhZ2Ut
cG9ydC1tdWx0aS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9tZXNzYWdl
LXBvcnQtbXVsdGktZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLjgzMjhkMTAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9t
ZXNzYWdlLXBvcnQtbXVsdGktZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTggQEAKK1RoaXMgdGVz
dCBjaGVja3MgdGhlIHZhcmlvdXMgdXNlIGNhc2VzIGFyb3VuZCBzZW5kaW5nIG11bHRpcGxlIHBv
cnRzIHRocm91Z2ggTWVzc2FnZVBvcnQucG9zdE1lc3NhZ2UKKworT24gc3VjY2VzcywgeW91IHdp
bGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09N
UExFVEUiLgorCisKK1BBU1MgY2hhbm5lbC5wb3J0MS5wb3N0TWVzc2FnZSgic2FtZSBwb3J0Iiwg
W2NoYW5uZWwucG9ydDFdKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IElOVkFMSURfU1RBVEVfRVJS
OiBET00gRXhjZXB0aW9uIDExLgorUEFTUyBjaGFubmVsLnBvcnQxLnBvc3RNZXNzYWdlKCJlbnRh
bmdsZWQgcG9ydCIsIFtjaGFubmVsLnBvcnQyXSkgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBJTlZB
TElEX1NUQVRFX0VSUjogRE9NIEV4Y2VwdGlvbiAxMS4KK1BBU1MgY2hhbm5lbC5wb3J0MS5wb3N0
TWVzc2FnZSgibnVsbCBwb3J0IiwgW2NoYW5uZWwzLnBvcnQxLCBudWxsLCBjaGFubmVsMy5wb3J0
Ml0pIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogSU5WQUxJRF9TVEFURV9FUlI6IERPTSBFeGNlcHRp
b24gMTEuCitQQVNTIGNoYW5uZWwucG9ydDEucG9zdE1lc3NhZ2UoIm5vdEFQb3J0IiwgW2NoYW5u
ZWwzLnBvcnQxLCB7fSwgY2hhbm5lbDMucG9ydDJdKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9y
OiBUeXBlIGVycm9yLgorUEFTUyBjaGFubmVsLnBvcnQxLnBvc3RNZXNzYWdlKCJub3RBbkFycmF5
IiwgY2hhbm5lbDMucG9ydDEpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUgZXJyb3Iu
CitQQVNTIGNoYW5uZWwucG9ydDEucG9zdE1lc3NhZ2UoIm5vdEFTZXF1ZW5jZSIsIFt7bGVuZ3Ro
OiAzfV0pIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUgZXJyb3IuCitQQVNTIGV2ZW50
LnBvcnRzIGlzIG51bGwgd2hlbiBubyBwb3J0IHNlbnQKK1BBU1MgZXZlbnQucG9ydHMgaXMgbnVs
bCB3aGVuIGVtcHR5IGFycmF5IHNlbnQKK1BBU1MgZXZlbnQucG9ydHMgY29udGFpbnMgdHdvIHBv
cnRzIHdoZW4gdHdvIHBvcnRzIHNlbnQKK1BBU1MgZXZlbnQucG9ydHMgY29udGFpbnMgdHdvIHBv
cnRzIHdoZW4gdHdvIHBvcnRzIHJlLXNlbnQgYWZ0ZXIgZXJyb3IKKworVEVTVCBDT01QTEVURQor
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9tZXNzYWdlLXBvcnQtbXVsdGku
aHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL21lc3NhZ2UtcG9ydC1tdWx0aS5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc2ZmI3NDgKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9tZXNzYWdlLXBvcnQtbXVsdGkuaHRtbApAQCAt
MCwwICsxLDkgQEAKKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi9qcy9y
ZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNl
cy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwIGlkPSJkZXNj
cmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0IHNyYz0icmVz
b3VyY2VzL21lc3NhZ2UtcG9ydC1tdWx0aS5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9tZXNzYWdlLXBvcnQuaHRtbCBiL0xheW91dFRl
c3RzL2Zhc3QvZXZlbnRzL21lc3NhZ2UtcG9ydC5odG1sCmluZGV4IDIwNjQ2N2YuLmE1ZGQ0NzUg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL21lc3NhZ2UtcG9ydC5odG1sCisr
KyBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL21lc3NhZ2UtcG9ydC5odG1sCkBAIC0xOCw3ICsx
OCw3IEBAIHZhciBtYWluUG9ydDsKIGZ1bmN0aW9uIHRlc3QoKQogewogICAgIHZhciBjaGFubmVs
ID0gbmV3IE1lc3NhZ2VDaGFubmVsOwotICAgIHdpbmRvdy5mcmFtZXNbMF0ucG9zdE1lc3NhZ2Uo
Im1zZyIsIGNoYW5uZWwucG9ydDIsICIqIik7CisgICAgd2luZG93LmZyYW1lc1swXS5wb3N0TWVz
c2FnZSgibXNnIiwgW2NoYW5uZWwucG9ydDJdLCAiKiIpOwogICAgIG1haW5Qb3J0ID0gY2hhbm5l
bC5wb3J0MTsKICAgICBtYWluUG9ydC5wb3N0TWVzc2FnZSgicGluZyIpOwogICAgIG1haW5Qb3J0
Lm9ubWVzc2FnZSA9IGZ1bmN0aW9uKGV2dCkgewpAQCAtMzMsNyArMzMsNyBAQCBmdW5jdGlvbiB0
ZXN0KCkKIGZ1bmN0aW9uIHRlc3QyKCkKIHsKICAgICB2YXIgY2hhbm5lbCA9IG5ldyBNZXNzYWdl
Q2hhbm5lbDsKLSAgICBtYWluUG9ydC5wb3N0TWVzc2FnZSgibmV3UG9ydCIsIGNoYW5uZWwucG9y
dDIpOworICAgIG1haW5Qb3J0LnBvc3RNZXNzYWdlKCJuZXdQb3J0IiwgW2NoYW5uZWwucG9ydDJd
KTsKICAgICBjaGFubmVsLnBvcnQxLm9ubWVzc2FnZSA9IGZ1bmN0aW9uKGV2dCkgewogICAgICAg
ICBpZiAoZXZ0LmRhdGEgPT0gInlvIiAmJiBldnQub3JpZ2luID09ICIiKQogICAgICAgICAgICAg
bG9nKCJQb3N0ZWQgcG9ydDogU1VDQ0VTUyIpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFz
dC9ldmVudHMvcmVzb3VyY2VzL2luaXQtZXZlbnRzLmpzIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVu
dHMvcmVzb3VyY2VzL2luaXQtZXZlbnRzLmpzCmluZGV4IDdiZGUyZjUuLjM0ZmE2NmYgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3Jlc291cmNlcy9pbml0LWV2ZW50cy5qcwor
KysgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9yZXNvdXJjZXMvaW5pdC1ldmVudHMuanMKQEAg
LTYzLDcgKzYzLDEwIEBAIHNob3VsZEJlKCJ0ZXN0SW5pdEV2ZW50KCdNZXNzYWdlJywgJ1wiYVwi
LCBmYWxzZSwgZmFsc2UsIFwiYlwiLCBcImNcIiwgXCJkXCIsIHdpCiBzaG91bGRCZSgidGVzdElu
aXRFdmVudCgnTWVzc2FnZScsICdcImFcIiwgZmFsc2UsIGZhbHNlLCBcImJcIiwgXCJjXCIsIG51
bGwsIHdpbmRvdywgbnVsbCcpLmxhc3RFdmVudElkIiwgIidudWxsJyIpOwogc2hvdWxkQmUoInRl
c3RJbml0RXZlbnQoJ01lc3NhZ2UnLCAnXCJhXCIsIGZhbHNlLCBmYWxzZSwgXCJiXCIsIFwiY1wi
LCBcImRcIiwgd2luZG93LCBudWxsJykuc291cmNlIiwgIndpbmRvdyIpOwogc2hvdWxkQmUoInRl
c3RJbml0RXZlbnQoJ01lc3NhZ2UnLCAnXCJhXCIsIGZhbHNlLCBmYWxzZSwgXCJiXCIsIFwiY1wi
LCBcImRcIiwgbnVsbCwgbnVsbCcpLnNvdXJjZSIsICJudWxsIik7Ci0vLyBGSVhNRTogTm90IHN1
cmUgaG93IHRvIG1ha2UgYSBNZXNzYWdlUG9ydCB0byB0ZXN0IG1lc3NhZ2VQb3J0IGFyZ3VtZW50
LgordmFyIGNoYW5uZWwgPSBuZXcgTWVzc2FnZUNoYW5uZWw7Cit2YXIgY2hhbm5lbEFycmF5ID0g
W2NoYW5uZWwucG9ydDEsIGNoYW5uZWwucG9ydDJdOworc2hvdWxkQmUoInRlc3RJbml0RXZlbnQo
J01lc3NhZ2UnLCAnXCJhXCIsIGZhbHNlLCBmYWxzZSwgXCJiXCIsIFwiY1wiLCBcImRcIiwgbnVs
bCwgY2hhbm5lbEFycmF5JykucG9ydHNbMF0iLCAiY2hhbm5lbC5wb3J0MSIpOworc2hvdWxkQmUo
InRlc3RJbml0RXZlbnQoJ01lc3NhZ2UnLCAnXCJhXCIsIGZhbHNlLCBmYWxzZSwgXCJiXCIsIFwi
Y1wiLCBcImRcIiwgbnVsbCwgY2hhbm5lbEFycmF5JykucG9ydHNbMV0iLCAiY2hhbm5lbC5wb3J0
MiIpOwogCiBzaG91bGRCZSgidGVzdEluaXRFdmVudCgnTW91c2UnLCAnXCJhXCIsIGZhbHNlLCBm
YWxzZSwgd2luZG93LCAxMDAxLCAxMDAyLCAxMDAzLCAxMDA0LCAxMDA1LCBmYWxzZSwgZmFsc2Us
IGZhbHNlLCBmYWxzZSwgMTAwNiwgbnVsbCcpLnR5cGUiLCAiJ2EnIik7CiBzaG91bGRCZSgidGVz
dEluaXRFdmVudCgnTW91c2UnLCAnbnVsbCwgZmFsc2UsIGZhbHNlLCB3aW5kb3csIDEwMDEsIDEw
MDIsIDEwMDMsIDEwMDQsIDEwMDUsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCAxMDA2LCBu
dWxsJykudHlwZSIsICInbnVsbCciKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZXZl
bnRzL3Jlc291cmNlcy9tZXNzYWdlLXBvcnQtaWZyYW1lLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0
L2V2ZW50cy9yZXNvdXJjZXMvbWVzc2FnZS1wb3J0LWlmcmFtZS5odG1sCmluZGV4IDNjMTgzMzUu
Ljk4OWFlZDEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3Jlc291cmNlcy9t
ZXNzYWdlLXBvcnQtaWZyYW1lLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvcmVz
b3VyY2VzL21lc3NhZ2UtcG9ydC1pZnJhbWUuaHRtbApAQCAtMTQsMTAgKzE0LDEwIEBAIGZ1bmN0
aW9uIG9uTWVzc2FnZShldnQpIHsKICAgICBpZiAoZXZ0LmRhdGEgPT0gInBpbmciKQogICAgICAg
ICBwb3J0LnBvc3RNZXNzYWdlKCJwb25nIik7CiAgICAgZWxzZSBpZiAoZXZ0LmRhdGEgPT0gIm5l
d1BvcnQiKQotICAgICAgICBldnQubWVzc2FnZVBvcnQucG9zdE1lc3NhZ2UoInlvIik7CisgICAg
ICAgIGV2dC5wb3J0c1swXS5wb3N0TWVzc2FnZSgieW8iKTsKICAgICBlbHNlIGlmIChldnQuZGF0
YSA9PSAibmV3Q29udmVyc2F0aW9uIikKICAgICAgICAgaWYgKGV2dC5vcmlnaW4gPT0gIiIpCi0g
ICAgICAgICAgICBldnQubWVzc2FnZVBvcnQucG9zdE1lc3NhZ2UoImhleSIpOworICAgICAgICAg
ICAgZXZ0LnBvcnRzWzBdLnBvc3RNZXNzYWdlKCJoZXkiKTsKICAgICAgICAgZWxzZQogICAgICAg
ICAgICAgYWxlcnQoIkluY29ycmVjdCBzZWN1cml0eSBvcmlnaW4gaW4gY29udmVyc2F0aW9uOiAn
IiArIGV2dC5vcmlnaW4gKyAiJy4iKTsKICAgICBlbHNlIGlmICgvYWxlcnQuKy8udGVzdChldnQu
ZGF0YSkpCkBAIC0zMyw3ICszMyw3IEBAIGZ1bmN0aW9uIG9uTWVzc2FnZShldnQpIHsKIH0KIAog
d2luZG93LmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLCBmdW5jdGlvbihldnQpIHsKLSAgICBw
b3J0ID0gZXZ0Lm1lc3NhZ2VQb3J0OworICAgIHBvcnQgPSBldnQucG9ydHNbMF07CiAgICAgcG9y
dC5vbm1lc3NhZ2UgPSBvbk1lc3NhZ2U7CiAgICAgcG9ydC5zdGFydCgpOwogfSwgZmFsc2UpOwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvcmVzb3VyY2VzL21lc3NhZ2UtcG9y
dC1tdWx0aS5qcyBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3Jlc291cmNlcy9tZXNzYWdlLXBv
cnQtbXVsdGkuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjdlMzQzNgot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3Jlc291cmNlcy9tZXNz
YWdlLXBvcnQtbXVsdGkuanMKQEAgLTAsMCArMSw2MiBAQAoraWYgKHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlcikgeworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Cit9CisKK2Rlc2NyaXB0aW9u
KCJUaGlzIHRlc3QgY2hlY2tzIHRoZSB2YXJpb3VzIHVzZSBjYXNlcyBhcm91bmQgc2VuZGluZyBt
dWx0aXBsZSBwb3J0cyB0aHJvdWdoIE1lc3NhZ2VQb3J0LnBvc3RNZXNzYWdlIik7CisKK3ZhciBj
aGFubmVsID0gbmV3IE1lc3NhZ2VDaGFubmVsKCk7Cit2YXIgY2hhbm5lbDIgPSBuZXcgTWVzc2Fn
ZUNoYW5uZWwoKTsKK3ZhciBjaGFubmVsMyA9IG5ldyBNZXNzYWdlQ2hhbm5lbCgpOworCitjaGFu
bmVsLnBvcnQxLnBvc3RNZXNzYWdlKCJub3BvcnQiKTsKK2NoYW5uZWwucG9ydDEucG9zdE1lc3Nh
Z2UoInplcm8gcG9ydHMiLCBbXSk7CitjaGFubmVsLnBvcnQxLnBvc3RNZXNzYWdlKCJ0d28gcG9y
dHMiLCBbY2hhbm5lbDIucG9ydDEsIGNoYW5uZWwyLnBvcnQyXSk7CisKKy8vIE5vdyB0ZXN0IHZh
cmlvdXMgZmFpbHVyZSBjYXNlcworc2hvdWxkVGhyb3coJ2NoYW5uZWwucG9ydDEucG9zdE1lc3Nh
Z2UoInNhbWUgcG9ydCIsIFtjaGFubmVsLnBvcnQxXSknKTsKK3Nob3VsZFRocm93KCdjaGFubmVs
LnBvcnQxLnBvc3RNZXNzYWdlKCJlbnRhbmdsZWQgcG9ydCIsIFtjaGFubmVsLnBvcnQyXSknKTsK
K3Nob3VsZFRocm93KCdjaGFubmVsLnBvcnQxLnBvc3RNZXNzYWdlKCJudWxsIHBvcnQiLCBbY2hh
bm5lbDMucG9ydDEsIG51bGwsIGNoYW5uZWwzLnBvcnQyXSknKTsKK3Nob3VsZFRocm93KCdjaGFu
bmVsLnBvcnQxLnBvc3RNZXNzYWdlKCJub3RBUG9ydCIsIFtjaGFubmVsMy5wb3J0MSwge30sIGNo
YW5uZWwzLnBvcnQyXSknKTsKKy8vIFNob3VsZCBiZSBPSyB0byBzZW5kIGNoYW5uZWwzLnBvcnQx
IChzaG91bGQgbm90IGhhdmUgYmVlbiBkaXNlbnRhbmdsZWQgYnkgdGhlIHByZXZpb3VzIGZhaWxl
ZCBjYWxscykuCitjaGFubmVsLnBvcnQxLnBvc3RNZXNzYWdlKCJlbnRhbmdsZWQgcG9ydHMiLCBb
Y2hhbm5lbDMucG9ydDEsIGNoYW5uZWwzLnBvcnQyXSk7CisKK3Nob3VsZFRocm93KCdjaGFubmVs
LnBvcnQxLnBvc3RNZXNzYWdlKCJub3RBbkFycmF5IiwgY2hhbm5lbDMucG9ydDEpJykKK3Nob3Vs
ZFRocm93KCdjaGFubmVsLnBvcnQxLnBvc3RNZXNzYWdlKCJub3RBU2VxdWVuY2UiLCBbe2xlbmd0
aDogM31dKScpOworCitjaGFubmVsLnBvcnQxLnBvc3RNZXNzYWdlKCJkb25lIik7CisKK2NoYW5u
ZWwucG9ydDIub25tZXNzYWdlID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICBpZiAoZXZlbnQuZGF0
YSA9PSAibm9wb3J0IikgeworICAgICAgICBpZiAoIWV2ZW50LnBvcnRzKQorICAgICAgICAgICAg
dGVzdFBhc3NlZCgiZXZlbnQucG9ydHMgaXMgbnVsbCB3aGVuIG5vIHBvcnQgc2VudCIpOworICAg
ICAgICBlbHNlCisgICAgICAgICAgICB0ZXN0RmFpbGVkKCJldmVudC5wb3J0cyBzaG91bGQgYmUg
bnVsbCB3aGVuIG5vIHBvcnQgc2VudCIpOworICAgIH0gZWxzZSBpZiAoZXZlbnQuZGF0YSA9PSAi
emVybyBwb3J0cyIpIHsKKyAgICAgICAgaWYgKCFldmVudC5wb3J0cykKKyAgICAgICAgICAgIHRl
c3RQYXNzZWQoImV2ZW50LnBvcnRzIGlzIG51bGwgd2hlbiBlbXB0eSBhcnJheSBzZW50Iik7Cisg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgIHRlc3RGYWlsZWQoImV2ZW50LnBvcnRzIHNob3VsZCBi
ZSBudWxsIHdoZW4gZW1wdHkgYXJyYXkgc2VudCIpOworICAgIH0gZWxzZSBpZiAoZXZlbnQuZGF0
YSA9PSAidHdvIHBvcnRzIikgeworICAgICAgICBpZiAoIWV2ZW50LnBvcnRzKSB7CisgICAgICAg
ICAgICB0ZXN0RmFpbGVkKCJldmVudC5wb3J0cyBzaG91bGQgYmUgbm9uLW51bGwgd2hlbiBwb3J0
cyBzZW50Iik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgaWYgKGV2
ZW50LnBvcnRzLmxlbmd0aCA9PSAyKQorICAgICAgICAgICAgdGVzdFBhc3NlZCgiZXZlbnQucG9y
dHMgY29udGFpbnMgdHdvIHBvcnRzIHdoZW4gdHdvIHBvcnRzIHNlbnQiKTsKKyAgICAgICAgZWxz
ZQorICAgICAgICAgICAgdGVzdEZhaWxlZCgiZXZlbnQucG9ydHMgY29udGFpbmVkICIgKyBldmVu
dC5wb3J0cy5sZW5ndGggKyAiIHdoZW4gdHdvIHBvcnRzIHNlbnQiKTsKKworICAgIH0gZWxzZSBp
ZiAoZXZlbnQuZGF0YSA9PSAiZW50YW5nbGVkIHBvcnRzIikgeworICAgICAgICBpZiAoZXZlbnQu
cG9ydHMubGVuZ3RoID09IDIpCisgICAgICAgICAgICB0ZXN0UGFzc2VkKCJldmVudC5wb3J0cyBj
b250YWlucyB0d28gcG9ydHMgd2hlbiB0d28gcG9ydHMgcmUtc2VudCBhZnRlciBlcnJvciIpOwor
ICAgICAgICBlbHNlCisgICAgICAgICAgICB0ZXN0RmFpbGVkKCJldmVudC5wb3J0cyBjb250YWlu
ZWQgIiArIGV2ZW50LnBvcnRzLmxlbmd0aCArICIgd2hlbiB0d28gcG9ydHMgcmUtc2VudCBhZnRl
ciBlcnJvciIpOworICAgIH0gZWxzZSBpZiAoZXZlbnQuZGF0YSA9PSAiZG9uZSIpIHsKKyAgICAg
ICAgZGVidWcoJzxicj48c3BhbiBjbGFzcz0icGFzcyI+VEVTVCBDT01QTEVURTwvc3Bhbj4nKTsK
KyAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICB9IGVsc2UKKyAgICAgICAgdGVz
dEZhaWxlZCgiUmVjZWl2ZWQgdW5leHBlY3RlZCBtZXNzYWdlOiAiICsgZXZlbnQuZGF0YSk7Cit9
CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy9yZXNvdXJjZXMvc2hhcmVk
LXdvcmtlci1jb21tb24uanMgYi9MYXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvcmVzb3VyY2VzL3No
YXJlZC13b3JrZXItY29tbW9uLmpzCmluZGV4IDY0MDdjMjMuLjcyMDgyMWIgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy9yZXNvdXJjZXMvc2hhcmVkLXdvcmtlci1jb21tb24u
anMKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC93b3JrZXJzL3Jlc291cmNlcy9zaGFyZWQtd29ya2Vy
LWNvbW1vbi5qcwpAQCAtNSw3ICs1LDcgQEAgZnVuY3Rpb24gZ2VuZXJhdGVFcnJvcigpCiB9CiAK
IG9uY29ubmVjdCA9IGZ1bmN0aW9uKGV2ZW50KSB7Ci0gICAgZXZlbnQubWVzc2FnZVBvcnQub25t
ZXNzYWdlID0gZnVuY3Rpb24oZXZ0KSB7IGhhbmRsZU1lc3NhZ2UoZXZ0LCBldmVudC5tZXNzYWdl
UG9ydCk7IH07CisgICAgZXZlbnQucG9ydHNbMF0ub25tZXNzYWdlID0gZnVuY3Rpb24oZXZ0KSB7
IGhhbmRsZU1lc3NhZ2UoZXZ0LCBldmVudC5wb3J0c1swXSk7IH07CiB9OwogCiBmdW5jdGlvbiBn
YygpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvcmVzb3VyY2VzL3NoYXJl
ZC13b3JrZXItc2NyaXB0LWVycm9yLmpzIGIvTGF5b3V0VGVzdHMvZmFzdC93b3JrZXJzL3Jlc291
cmNlcy9zaGFyZWQtd29ya2VyLXNjcmlwdC1lcnJvci5qcwppbmRleCA2M2ZiNjUxLi4xNjYyMjVh
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvcmVzb3VyY2VzL3NoYXJlZC13
b3JrZXItc2NyaXB0LWVycm9yLmpzCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy9yZXNv
dXJjZXMvc2hhcmVkLXdvcmtlci1zY3JpcHQtZXJyb3IuanMKQEAgLTEsNSArMSw1IEBACiBvbmNv
bm5lY3QgPSBmdW5jdGlvbihldmVudCkgewotICAgIGV2ZW50Lm1lc3NhZ2VQb3J0Lm9ubWVzc2Fn
ZSA9IGZ1bmN0aW9uKGV2dCkgeyBoYW5kbGVNZXNzYWdlKGV2dCwgZXZlbnQubWVzc2FnZVBvcnQp
OyB9OworICAgIGV2ZW50LnBvcnRzWzBdLm9ubWVzc2FnZSA9IGZ1bmN0aW9uKGV2dCkgeyBoYW5k
bGVNZXNzYWdlKGV2dCwgZXZlbnQucG9ydHNbMF0pOyB9OwogfTsKIAogZnVuY3Rpb24gaGFuZGxl
TWVzc2FnZShldmVudCwgcG9ydCkgewpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC93b3Jr
ZXJzL3Jlc291cmNlcy93b3JrZXItY2xvbmVwb3J0LmpzIGIvTGF5b3V0VGVzdHMvZmFzdC93b3Jr
ZXJzL3Jlc291cmNlcy93b3JrZXItY2xvbmVwb3J0LmpzCmluZGV4IDU1ZjAzYmMuLmM1MzU2NzYg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy9yZXNvdXJjZXMvd29ya2VyLWNs
b25lcG9ydC5qcworKysgYi9MYXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvcmVzb3VyY2VzL3dvcmtl
ci1jbG9uZXBvcnQuanMKQEAgLTEsNiArMSw2IEBACiBvbm1lc3NhZ2UgPSBmdW5jdGlvbihldnQp
IHsKICAgICBpZiAoZXZ0LmRhdGEuaW5kZXhPZigicG9zdEJhY2sgIikgPT0gMCkgewotICAgICAg
ICBpZiAoIWV2dC5tZXNzYWdlUG9ydCkgeworICAgICAgICBpZiAoIWV2dC5wb3J0cykgewogICAg
ICAgICAgICAgcG9zdE1lc3NhZ2UoIkZBSUxVUkU6IE5vIE1lc3NhZ2VQb3J0IHdpdGggcG9zdEJh
Y2sgY29tbWFuZCIpOwogICAgICAgICB9CiAgICAgICAgIHZhciBzdHJpbmdzID0gZXZ0LmRhdGEu
c3BsaXQoIiAiLCAyKTsKQEAgLTgsNyArOCw3IEBAIG9ubWVzc2FnZSA9IGZ1bmN0aW9uKGV2dCkg
ewogICAgICAgICBwb3N0TWVzc2FnZSgiUEFTUzogUmVjZWl2ZWQgcmVxdWVzdCBmb3IgIiArIG51
bUl0ZW1zICsgIiBtZXNzYWdlcyIpOwogICAgICAgICBmb3IgKHZhciBpID0gMCA7IGkgPCBudW1J
dGVtcyA7IGkrKykgewogICAgICAgICAgICAgdmFyIG1zZyA9ICIiICsgaTsKLSAgICAgICAgICAg
IGV2dC5tZXNzYWdlUG9ydC5wb3N0TWVzc2FnZShtc2cpOworICAgICAgICAgICAgZXZ0LnBvcnRz
WzBdLnBvc3RNZXNzYWdlKG1zZyk7CiAgICAgICAgIH0KICAgICAgICAgcG9zdE1lc3NhZ2UoInBv
c3RCYWNrRG9uZSIpOwogICAgIH0gZWxzZSB7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0
L3dvcmtlcnMvcmVzb3VyY2VzL3dvcmtlci1jb250ZXh0LW11bHRpLXBvcnQuanMgYi9MYXlvdXRU
ZXN0cy9mYXN0L3dvcmtlcnMvcmVzb3VyY2VzL3dvcmtlci1jb250ZXh0LW11bHRpLXBvcnQuanMK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGI1NWNiOAotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy9yZXNvdXJjZXMvd29ya2VyLWNvbnRleHQt
bXVsdGktcG9ydC5qcwpAQCAtMCwwICsxLDQ1IEBACitkZXNjcmlwdGlvbigiVGhpcyB0ZXN0IGNo
ZWNrcyB0aGUgdmFyaW91cyB1c2UgY2FzZXMgYXJvdW5kIHNlbmRpbmcgbXVsdGlwbGUgcG9ydHMg
dGhyb3VnaCBXb3JrZXJHbG9iYWxTY29wZS5wb3N0TWVzc2FnZSIpOworCitpZiAod2luZG93Lmxh
eW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4
dCgpOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKK30KKwordmFy
IHdvcmtlciA9IG5ldyBXb3JrZXIoInJlc291cmNlcy93b3JrZXItY29udGV4dC10aHJlYWQtbXVs
dGktcG9ydC5qcyIpOworCit3b3JrZXIub25tZXNzYWdlID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAg
ICAvLyBSZXBvcnQgcmVzdWx0cyBmcm9tIHdvcmtlciB0aHJlYWQuCisgICAgaWYgKGV2ZW50LmRh
dGEgPT0gImRvbmUiKQorICAgICAgICBldmVudC5wb3J0c1swXS5vbm1lc3NhZ2UgPSBkb25lOwor
ICAgIGVsc2UgaWYgKGV2ZW50LmRhdGEgPT0gIm5vcG9ydCIpIHsKKyAgICAgICAgaWYgKCFldmVu
dC5wb3J0cykKKyAgICAgICAgICAgIHRlc3RQYXNzZWQoImV2ZW50LnBvcnRzIGlzIG51bGwgd2hl
biBubyBwb3J0IHNlbnQiKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgdGVzdEZhaWxlZCgi
ZXZlbnQucG9ydHMgc2hvdWxkIGJlIG51bGwgd2hlbiBubyBwb3J0IHNlbnQiKTsKKyAgICB9IGVs
c2UgaWYgKGV2ZW50LmRhdGEgPT0gInplcm8gcG9ydHMiKSB7CisgICAgICAgIGlmICghZXZlbnQu
cG9ydHMpCisgICAgICAgICAgICB0ZXN0UGFzc2VkKCJldmVudC5wb3J0cyBpcyBudWxsIHdoZW4g
ZW1wdHkgYXJyYXkgc2VudCIpOworICAgICAgICBlbHNlCisgICAgICAgICAgICB0ZXN0RmFpbGVk
KCJldmVudC5wb3J0cyBzaG91bGQgYmUgbnVsbCB3aGVuIGVtcHR5IGFycmF5IHNlbnQiKTsKKyAg
ICB9IGVsc2UgaWYgKGV2ZW50LmRhdGEgPT0gInR3byBwb3J0cyIpIHsKKyAgICAgICAgaWYgKCFl
dmVudC5wb3J0cykgeworICAgICAgICAgICAgdGVzdEZhaWxlZCgiZXZlbnQucG9ydHMgc2hvdWxk
IGJlIG5vbi1udWxsIHdoZW4gcG9ydHMgc2VudCIpOworICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICB9CisgICAgICAgIGlmIChldmVudC5wb3J0cy5sZW5ndGggPT0gMikKKyAgICAgICAgICAg
IHRlc3RQYXNzZWQoImV2ZW50LnBvcnRzIGNvbnRhaW5zIHR3byBwb3J0cyB3aGVuIHR3byBwb3J0
cyBzZW50Iik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHRlc3RGYWlsZWQoImV2ZW50LnBv
cnRzIGNvbnRhaW5lZCAiICsgZXZlbnQucG9ydHMubGVuZ3RoICsgIiB3aGVuIHR3byBwb3J0cyBz
ZW50Iik7CisgICAgfSBlbHNlIGlmIChldmVudC5kYXRhID09ICJmYWlsZWQgcG9ydHMiKSB7Cisg
ICAgICAgIGlmIChldmVudC5wb3J0cy5sZW5ndGggPT0gMikKKyAgICAgICAgICAgIHRlc3RQYXNz
ZWQoImV2ZW50LnBvcnRzIGNvbnRhaW5zIHR3byBwb3J0cyB3aGVuIHR3byBwb3J0cyByZS1zZW50
IGFmdGVyIGVycm9yIik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHRlc3RGYWlsZWQoImV2
ZW50LnBvcnRzIGNvbnRhaW5lZCAiICsgZXZlbnQucG9ydHMubGVuZ3RoICsgIiB3aGVuIHR3byBw
b3J0cyByZS1zZW50IGFmdGVyIGVycm9yIik7CisgICAgfSBlbHNlIGlmIChldmVudC5kYXRhLmlu
ZGV4T2YoIlBBU1MiKSA9PSAwKQorICAgICAgICB0ZXN0UGFzc2VkKGV2ZW50LmRhdGEuc3Vic3Ry
aW5nKDQpKTsKKyAgICBlbHNlIGlmIChldmVudC5kYXRhLmluZGV4T2YoIkZBSUwiKSA9PSAwKQor
ICAgICAgICB0ZXN0RmFpbGVkKGV2ZW50LmRhdGEuc3Vic3RyaW5nKDQpKTsKKyAgICBlbHNlCisg
ICAgICAgIHRlc3RGYWlsZWQoIlVuZXhwZWN0ZWQgcmVzdWx0OiAiICsgZXZlbnQuZGF0YSk7Cit9
CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy9yZXNvdXJjZXMvd29ya2Vy
LWNvbnRleHQtdGhyZWFkLW11bHRpLXBvcnQuanMgYi9MYXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMv
cmVzb3VyY2VzL3dvcmtlci1jb250ZXh0LXRocmVhZC1tdWx0aS1wb3J0LmpzCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI4ZWVmNjcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9mYXN0L3dvcmtlcnMvcmVzb3VyY2VzL3dvcmtlci1jb250ZXh0LXRocmVhZC1tdWx0
aS1wb3J0LmpzCkBAIC0wLDAgKzEsNTcgQEAKK3ZhciBjaGFubmVsID0gbmV3IE1lc3NhZ2VDaGFu
bmVsKCk7Cit2YXIgY2hhbm5lbDIgPSBuZXcgTWVzc2FnZUNoYW5uZWwoKTsKK3ZhciBjaGFubmVs
MyA9IG5ldyBNZXNzYWdlQ2hhbm5lbCgpOworCitwb3N0TWVzc2FnZSgibm9wb3J0Iik7Citwb3N0
TWVzc2FnZSgiemVybyBwb3J0cyIsIFtdKTsKK3Bvc3RNZXNzYWdlKCJ0d28gcG9ydHMiLCBbY2hh
bm5lbDIucG9ydDEsIGNoYW5uZWwyLnBvcnQyXSk7CisKKy8vIE5vdyB0ZXN0IHZhcmlvdXMgZmFp
bHVyZSBjYXNlcwordHJ5IHsKKyAgICBwb3N0TWVzc2FnZSgibnVsbCBwb3J0IiwgW2NoYW5uZWwz
LnBvcnQxLCBudWxsLCBjaGFubmVsMy5wb3J0Ml0pOworICAgIHRlc3RGYWlsZWQoInBvc3Rpbmcg
YSBudWxsIHBvcnQgZGlkIG5vdCB0aHJvdyIpOworfSBjYXRjaCAoZSkgeworICAgIHRlc3RQYXNz
ZWQoInBvc3RpbmcgYSBudWxsIHBvcnQgZGlkIHRocm93OiAiICsgZSk7Cit9CisKK3RyeSB7Cisg
ICAgcG9zdE1lc3NhZ2UoIm5vdEFQb3J0IiwgW2NoYW5uZWwzLnBvcnQxLCB7fSwgY2hhbm5lbDMu
cG9ydDJdKTsKKyAgICB0ZXN0RmFpbGVkKCJwb3N0aW5nIGEgbm9uLXBvcnQgZGlkIG5vdCB0aHJv
dyIpOworfSBjYXRjaCAoZSkgeworICAgIHRlc3RQYXNzZWQoInBvc3RpbmcgYSBub24tcG9ydCBk
aWQgdGhyb3c6ICIgKyBlKTsKK30KKwordHJ5IHsKKyAgICBwb3N0TWVzc2FnZSgiZmFpbGVkIHBv
cnRzIiwgW2NoYW5uZWwzLnBvcnQxLCBjaGFubmVsMy5wb3J0Ml0pOworfSBjYXRjaCAoZSkgewor
ICAgIHRlc3RGYWlsZWQoInJlcG9zdGluZyBwb3J0cyB0aHJldyBhbiBleGNlcHRpb246ICIgKyBl
KTsKK30KKwordHJ5IHsKKyAgICBwb3N0TWVzc2FnZSgibm90QW5BcnJheSIsIGNoYW5uZWwzLnBv
cnQxKTsKKyAgICB0ZXN0RmFpbGVkKCJwb3N0aW5nIGEgbm9uLWFycmF5IHNob3VsZCB0aHJvdyIp
OworfSBjYXRjaCAoZSkgeworICAgIHRlc3RQYXNzZWQoInBvc3RpbmcgYSBub24tYXJyYXkgZGlk
IHRocm93OiAiICsgZSk7Cit9CisKK3RyeSB7CisgICAgcG9zdE1lc3NhZ2UoIm5vdEFTZXF1ZW5j
ZSIsIFt7bGVuZ3RoOiAzfV0pOworICAgIHRlc3RGYWlsZWQoInBvc3RpbmcgYSBub24tc2VxdWVu
Y2Ugc2hvdWxkIHRocm93Iik7Cit9IGNhdGNoIChlKSB7CisgICB0ZXN0UGFzc2VkKCJwb3N0aW5n
IGEgbm9uLXNlcXVlbmNlIGRpZCB0aHJvdzogIiArIGUpOworfQorCisKK3Bvc3RNZXNzYWdlKCJk
b25lIiwgW2NoYW5uZWwucG9ydDJdKTsKK2NoYW5uZWwucG9ydDEucG9zdE1lc3NhZ2UoImRvbmUi
KTsKKworCitmdW5jdGlvbiB0ZXN0RmFpbGVkKG1zZykgeworICAgIHBvc3RNZXNzYWdlKCJGQUlM
Iittc2cpOworfQorCisKK2Z1bmN0aW9uIHRlc3RQYXNzZWQobXNnKSB7CisgICAgcG9zdE1lc3Nh
Z2UoIlBBU1MiK21zZyk7Cit9CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvd29ya2Vy
cy9yZXNvdXJjZXMvd29ya2VyLW1lc3NhZ2Vwb3J0LmpzIGIvTGF5b3V0VGVzdHMvZmFzdC93b3Jr
ZXJzL3Jlc291cmNlcy93b3JrZXItbWVzc2FnZXBvcnQuanMKaW5kZXggODQwZjAwYy4uYTdiNGY3
NyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC93b3JrZXJzL3Jlc291cmNlcy93b3JrZXIt
bWVzc2FnZXBvcnQuanMKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC93b3JrZXJzL3Jlc291cmNlcy93
b3JrZXItbWVzc2FnZXBvcnQuanMKQEAgLTEsMjYgKzEsMjYgQEAKIG9ubWVzc2FnZSA9IGZ1bmN0
aW9uKGV2dCkgewogICAgIGlmIChldnQuZGF0YSA9PSAicG9ydCIpIHsKLSAgICAgICAgaWYgKGV2
dC5tZXNzYWdlUG9ydCkgeworICAgICAgICBpZiAoZXZ0LnBvcnRzKSB7CiAgICAgICAgICAgICBw
b3N0TWVzc2FnZSgiUEFTUzogUmVjZWl2ZWQgbWVzc2FnZSBwb3J0Iik7Ci0gICAgICAgICAgICBl
dnQubWVzc2FnZVBvcnQub25tZXNzYWdlID0gcGluZ0JhY2s7Ci0gICAgICAgICAgICBldnQubWVz
c2FnZVBvcnQuc3RhcnQoKTsKKyAgICAgICAgICAgIGV2dC5wb3J0c1swXS5vbm1lc3NhZ2UgPSBw
aW5nQmFjazsKKyAgICAgICAgICAgIGV2dC5wb3J0c1swXS5zdGFydCgpOwogICAgICAgICB9IGVs
c2UgewogICAgICAgICAgICAgcG9zdE1lc3NhZ2UoIkZBSUw6IERpZCBub3QgcmVjZWl2ZSBleHBl
Y3RlZCBNZXNzYWdlUG9ydCIpOwogICAgICAgICB9CiAgICAgfSBlbHNlIGlmIChldnQuZGF0YSA9
PSAibm9wb3J0IikgewotICAgICAgICBpZiAoZXZ0Lm1lc3NhZ2VQb3J0KSB7CisgICAgICAgIGlm
IChldnQucG9ydHMpIHsKICAgICAgICAgICAgIHBvc3RNZXNzYWdlKCJGQUlMOiBSZWNlaXZlZCBt
ZXNzYWdlIHBvcnQiKTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHBvc3RNZXNzYWdl
KCJQQVNTOiBldnQubWVzc2FnZVBvcnQgPSBudWxsIGFzIGV4cGVjdGVkIik7CisgICAgICAgICAg
ICBwb3N0TWVzc2FnZSgiUEFTUzogZXZ0LnBvcnRzID0gbnVsbCBhcyBleHBlY3RlZCIpOwogICAg
ICAgICB9CiAgICAgfSBlbHNlIGlmIChldnQuZGF0YSA9PSAic3BhbSIpIHsKICAgICAgICAgZm9y
ICh2YXIgaSA9IDAgOyBpIDwgMTAwMCA7IGkrKykgewotICAgICAgICAgICAgZXZ0Lm1lc3NhZ2VQ
b3J0LnBvc3RNZXNzYWdlKGkpOworICAgICAgICAgICAgZXZ0LnBvcnRzWzBdLnBvc3RNZXNzYWdl
KGkpOwogICAgICAgICB9CiAgICAgICAgIHBvc3RNZXNzYWdlKCJzcGFtRG9uZSIpOwogICAgIH0g
ZWxzZSBpZiAoZXZ0LmRhdGEgPT0gImdldHBvcnQiKSB7CiAgICAgICAgIHZhciBjaGFubmVsID0g
bmV3IE1lc3NhZ2VDaGFubmVsKCk7Ci0gICAgICAgIHBvc3RNZXNzYWdlKCJwb3J0IiwgY2hhbm5l
bC5wb3J0MSk7CisgICAgICAgIHBvc3RNZXNzYWdlKCJwb3J0IiwgW2NoYW5uZWwucG9ydDFdKTsK
ICAgICAgICAgY2hhbm5lbC5wb3J0Mi5vbm1lc3NhZ2UgPSBwaW5nQmFjazsKICAgICAgICAgY2hh
bm5lbC5wb3J0Mi5zdGFydCgpOwogICAgIH0gZWxzZSB7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L3dvcmtlcnMvcmVzb3VyY2VzL3dvcmtlci1tdWx0aS1wb3J0LmpzIGIvTGF5b3V0VGVz
dHMvZmFzdC93b3JrZXJzL3Jlc291cmNlcy93b3JrZXItbXVsdGktcG9ydC5qcwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jOGFjN2JkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvZmFzdC93b3JrZXJzL3Jlc291cmNlcy93b3JrZXItbXVsdGktcG9ydC5qcwpAQCAt
MCwwICsxLDM5IEBACitkZXNjcmlwdGlvbigiVGhpcyB0ZXN0IGNoZWNrcyB0aGUgdmFyaW91cyB1
c2UgY2FzZXMgYXJvdW5kIHNlbmRpbmcgbXVsdGlwbGUgcG9ydHMgdGhyb3VnaCBXb3JrZXIucG9z
dE1lc3NhZ2UiKTsKKworaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci53YWl0VW50aWxEb25lKCk7Cit9CisKK3ZhciBjaGFubmVsID0gbmV3IE1lc3NhZ2VDaGFubmVs
KCk7Cit2YXIgY2hhbm5lbDIgPSBuZXcgTWVzc2FnZUNoYW5uZWwoKTsKK3ZhciBjaGFubmVsMyA9
IG5ldyBNZXNzYWdlQ2hhbm5lbCgpOwordmFyIGNoYW5uZWw0ID0gbmV3IE1lc3NhZ2VDaGFubmVs
KCk7CisKK3ZhciB3b3JrZXIgPSBuZXcgV29ya2VyKCJyZXNvdXJjZXMvd29ya2VyLXRocmVhZC1t
dWx0aS1wb3J0LmpzIik7Cit3b3JrZXIucG9zdE1lc3NhZ2UoIm5vcG9ydCIpOword29ya2VyLnBv
c3RNZXNzYWdlKCJ6ZXJvIHBvcnRzIiwgW10pOword29ya2VyLnBvc3RNZXNzYWdlKCJ0d28gcG9y
dHMiLCBbY2hhbm5lbDIucG9ydDEsIGNoYW5uZWwyLnBvcnQyXSk7CisKKy8vIE5vdyB0ZXN0IHZh
cmlvdXMgZmFpbHVyZSBjYXNlcworc2hvdWxkVGhyb3coJ3dvcmtlci5wb3N0TWVzc2FnZSgibnVs
bCBwb3J0IiwgW2NoYW5uZWwzLnBvcnQxLCBudWxsLCBjaGFubmVsMy5wb3J0Ml0pJyk7CitzaG91
bGRUaHJvdygnd29ya2VyLnBvc3RNZXNzYWdlKCJub3RBUG9ydCIsIFtjaGFubmVsMy5wb3J0MSwg
e30sIGNoYW5uZWwzLnBvcnQyXSknKTsKKy8vIFNob3VsZCBiZSBPSyB0byBzZW5kIGNoYW5uZWwz
LnBvcnQxLzIgKHNob3VsZCBub3QgaGF2ZSBiZWVuIGRpc2VudGFuZ2xlZCBieSB0aGUgcHJldmlv
dXMgZmFpbGVkIGNhbGxzKS4KK3dvcmtlci5wb3N0TWVzc2FnZSgiZmFpbGVkIHBvcnRzIiwgW2No
YW5uZWwzLnBvcnQxLCBjaGFubmVsMy5wb3J0Ml0pOworCitzaG91bGRUaHJvdygnd29ya2VyLnBv
c3RNZXNzYWdlKCJub3RBbkFycmF5IiwgY2hhbm5lbDMucG9ydDEpJykKK3Nob3VsZFRocm93KCd3
b3JrZXIucG9zdE1lc3NhZ2UoIm5vdEFTZXF1ZW5jZSIsIFt7bGVuZ3RoOiAzfV0pJyk7CisKK3dv
cmtlci5wb3N0TWVzc2FnZSgiZG9uZSIsIFtjaGFubmVsLnBvcnQyXSk7Cit3b3JrZXIub25tZXNz
YWdlID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAvLyBSZXBvcnQgcmVzdWx0cyBmcm9tIHdvcmtl
ciB0aHJlYWQuCisgICAgaWYgKGV2ZW50LmRhdGEgPT0gImRvbmUiKQorICAgICAgICBjaGFubmVs
LnBvcnQxLm9ubWVzc2FnZSA9IGRvbmU7CisgICAgZWxzZSBpZiAoZXZlbnQuZGF0YS5pbmRleE9m
KCJQQVNTIikgPT0gMCkKKyAgICAgICAgdGVzdFBhc3NlZChldmVudC5kYXRhLnN1YnN0cmluZyg0
KSk7CisgICAgZWxzZSBpZiAoZXZlbnQuZGF0YS5pbmRleE9mKCJGQUlMIikgPT0gMCkKKyAgICAg
ICAgdGVzdEZhaWxlZChldmVudC5kYXRhLnN1YnN0cmluZyg0KSk7CisgICAgZWxzZQorICAgICAg
ICB0ZXN0RmFpbGVkKCJVbmV4cGVjdGVkIHJlc3VsdDogIiArIGV2ZW50LmRhdGEpOworfQorCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvcmVzb3VyY2VzL3dvcmtlci10aHJl
YWQtbXVsdGktcG9ydC5qcyBiL0xheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy9yZXNvdXJjZXMvd29y
a2VyLXRocmVhZC1tdWx0aS1wb3J0LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLmJmMzVlYjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMv
cmVzb3VyY2VzL3dvcmtlci10aHJlYWQtbXVsdGktcG9ydC5qcwpAQCAtMCwwICsxLDQxIEBACitv
bm1lc3NhZ2UgPSBmdW5jdGlvbihldmVudCkgeworICAgIGlmIChldmVudC5kYXRhID09ICJub3Bv
cnQiKSB7CisgICAgICAgIGlmICghZXZlbnQucG9ydHMpCisgICAgICAgICAgICB0ZXN0UGFzc2Vk
KCJldmVudC5wb3J0cyBpcyBudWxsIHdoZW4gbm8gcG9ydCBzZW50Iik7CisgICAgICAgIGVsc2UK
KyAgICAgICAgICAgIHRlc3RGYWlsZWQoImV2ZW50LnBvcnRzIHNob3VsZCBiZSBudWxsIHdoZW4g
bm8gcG9ydCBzZW50Iik7CisgICAgfSBlbHNlIGlmIChldmVudC5kYXRhID09ICJ6ZXJvIHBvcnRz
IikgeworICAgICAgICBpZiAoIWV2ZW50LnBvcnRzKQorICAgICAgICAgICAgdGVzdFBhc3NlZCgi
ZXZlbnQucG9ydHMgaXMgbnVsbCB3aGVuIGVtcHR5IGFycmF5IHNlbnQiKTsKKyAgICAgICAgZWxz
ZQorICAgICAgICAgICAgdGVzdEZhaWxlZCgiZXZlbnQucG9ydHMgc2hvdWxkIGJlIG51bGwgd2hl
biBlbXB0eSBhcnJheSBzZW50Iik7CisgICAgfSBlbHNlIGlmIChldmVudC5kYXRhID09ICJ0d28g
cG9ydHMiKSB7CisgICAgICAgIGlmICghZXZlbnQucG9ydHMpIHsKKyAgICAgICAgICAgIHRlc3RG
YWlsZWQoImV2ZW50LnBvcnRzIHNob3VsZCBiZSBub24tbnVsbCB3aGVuIHBvcnRzIHNlbnQiKTsK
KyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBpZiAoZXZlbnQucG9ydHMu
bGVuZ3RoID09IDIpCisgICAgICAgICAgICB0ZXN0UGFzc2VkKCJldmVudC5wb3J0cyBjb250YWlu
cyB0d28gcG9ydHMgd2hlbiB0d28gcG9ydHMgc2VudCIpOworICAgICAgICBlbHNlCisgICAgICAg
ICAgICB0ZXN0RmFpbGVkKCJldmVudC5wb3J0cyBjb250YWluZWQgIiArIGV2ZW50LnBvcnRzLmxl
bmd0aCArICIgd2hlbiB0d28gcG9ydHMgc2VudCIpOworICAgIH0gZWxzZSBpZiAoZXZlbnQuZGF0
YSA9PSAiZmFpbGVkIHBvcnRzIikgeworICAgICAgICBpZiAoZXZlbnQucG9ydHMubGVuZ3RoID09
IDIpCisgICAgICAgICAgICB0ZXN0UGFzc2VkKCJldmVudC5wb3J0cyBjb250YWlucyB0d28gcG9y
dHMgd2hlbiB0d28gcG9ydHMgcmUtc2VudCBhZnRlciBlcnJvciIpOworICAgICAgICBlbHNlCisg
ICAgICAgICAgICB0ZXN0RmFpbGVkKCJldmVudC5wb3J0cyBjb250YWluZWQgIiArIGV2ZW50LnBv
cnRzLmxlbmd0aCArICIgd2hlbiB0d28gcG9ydHMgcmUtc2VudCBhZnRlciBlcnJvciIpOworICAg
IH0gZWxzZSBpZiAoZXZlbnQuZGF0YSA9PSAiZG9uZSIpIHsKKyAgICAgICAgcG9zdE1lc3NhZ2Uo
ImRvbmUiKTsKKyAgICAgICAgZXZlbnQucG9ydHNbMF0ucG9zdE1lc3NhZ2UoImRvbmUiKTsKKyAg
ICB9IGVsc2UKKyAgICAgICAgdGVzdEZhaWxlZCgiUmVjZWl2ZWQgdW5leHBlY3RlZCBtZXNzYWdl
OiAiICsgZXZlbnQuZGF0YSk7Cit9OworCitmdW5jdGlvbiB0ZXN0UGFzc2VkKG1zZykKK3sKKyAg
ICBwb3N0TWVzc2FnZSgiUEFTUyIrbXNnKTsKK30KKworZnVuY3Rpb24gdGVzdEZhaWxlZChtc2cp
Cit7CisgICAgcG9zdE1lc3NhZ2UoIkZBSUwiK21zZyk7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9mYXN0L3dvcmtlcnMvd29ya2VyLWNsb25lcG9ydC5odG1sIGIvTGF5b3V0VGVzdHMvZmFz
dC93b3JrZXJzL3dvcmtlci1jbG9uZXBvcnQuaHRtbAppbmRleCBmNWQyYzYzLi42ZGNiYjgwIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvd29ya2VyLWNsb25lcG9ydC5odG1s
CisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy93b3JrZXItY2xvbmVwb3J0Lmh0bWwKQEAg
LTIzLDEyICsyMywxMiBAQCB2YXIgc3RvcENsb25pbmcgPSBmYWxzZTsKIGNsb25lQ2hhbm5lbC5w
b3J0MS5vbm1lc3NhZ2UgPSBjbG9uZUNoYW5uZWwucG9ydDIub25tZXNzYWdlID0gcmVzZW5kUG9y
dDsKIGNsb25lQ2hhbm5lbC5wb3J0MS5zdGFydCgpOwogY2xvbmVDaGFubmVsLnBvcnQyLnN0YXJ0
KCk7Ci1jbG9uZUNoYW5uZWwucG9ydDEucG9zdE1lc3NhZ2UoIiIsIGNoYW5uZWwucG9ydDIpOwor
Y2xvbmVDaGFubmVsLnBvcnQxLnBvc3RNZXNzYWdlKCIiLCBbY2hhbm5lbC5wb3J0Ml0pOwogCiAv
LyBDcmVhdGUgd29ya2VyIHdpdGggb3RoZXIgZW5kIG9mIHBvcnQgYW5kIGhhdmUgaXQgc2VuZCBt
ZXNzYWdlcyBiYWNrIHRvIHVzCiAvLyB3aGlsZSB3ZSBjbG9uZSBvdXIgZW5kIG9mIHRoZSBwb3J0
IHJlcGVhdGVkbHkuCiB2YXIgd29ya2VyID0gbmV3IFdvcmtlcigicmVzb3VyY2VzL3dvcmtlci1j
bG9uZXBvcnQuanMiKTsKLXdvcmtlci5wb3N0TWVzc2FnZSgicG9zdEJhY2sgIiArIG51bU1lc3Nh
Z2VzLCBjaGFubmVsLnBvcnQxKTsKK3dvcmtlci5wb3N0TWVzc2FnZSgicG9zdEJhY2sgIiArIG51
bU1lc3NhZ2VzLCBbY2hhbm5lbC5wb3J0MV0pOwogCiAvLyBUZXN0IHBvc3RpbmcgYmFjayA1MDAw
MCBtZXNzYWdlcywgbWFrZSBzdXJlIG9yZGVyaW5nIGlzIGZpbmUKIHdvcmtlci5vbm1lc3NhZ2Ug
PSBmdW5jdGlvbihldnQpIHsKQEAgLTQ0LDkgKzQ0LDE0IEBAIHdvcmtlci5vbm1lc3NhZ2UgPSBm
dW5jdGlvbihldnQpIHsKIHZhciBudW1DbG9uZXMgPSAwOwogZnVuY3Rpb24gcmVzZW5kUG9ydChl
dnQpCiB7CisgICAgaWYgKCFldnQucG9ydHMpCisgICAgICAgIGxvZygiRkFJTDogZXZ0LnBvcnRz
IG5vdCBzZXQiKTsKKyAgICBpZiAoZXZ0LnBvcnRzLmxlbmd0aCAhPSAxKQorICAgICAgICBsb2co
IkZBSUw6IHBvcnRzLmxlbmd0aCA9ICIgKyBldnQucG9ydHMubGVuZ3RoKTsKKwogICAgIGlmICgh
c3RvcENsb25pbmcpIHsKICAgICAgICAgbnVtQ2xvbmVzKys7Ci0gICAgICAgIGV2dC50YXJnZXQu
cG9zdE1lc3NhZ2UoIiIsIGV2dC5tZXNzYWdlUG9ydCk7CisgICAgICAgIGV2dC50YXJnZXQucG9z
dE1lc3NhZ2UoIiIsIGV2dC5wb3J0cyk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgaWYgKG51bUNs
b25lcyA8IDEwMDApIHsKICAgICAgICAgICAgIC8vIElmIHdlIGRpZG4ndCBjbG9uZSBhdCBsZWFz
dCAxMDAwIHRpbWVzLCB0aGVuIHRoZXJlJ3Mgc29tZXRoaW5nIGFtaXNzLgpAQCAtNjAsNyArNjUs
NyBAQCBmdW5jdGlvbiByZXNlbmRQb3J0KGV2dCkKICAgICAgICAgdmFyIHRpbWVyID0gc2V0VGlt
ZW91dChmdW5jdGlvbigpIHsKICAgICAgICAgICAgIGxvZygiRkFJTFVSRTogUmVjZWl2ZWQ6ICIg
KyBpdGVtTnVtICsgIiBldmVudHMgLSBleHBlY3RlZDogIiArIG51bU1lc3NhZ2VzKTsKICAgICAg
ICAgfSwgMTApOwotICAgICAgICBldnQubWVzc2FnZVBvcnQub25tZXNzYWdlID0gZnVuY3Rpb24o
ZXZlbnQpIHsKKyAgICAgICAgZXZ0LnBvcnRzWzBdLm9ubWVzc2FnZSA9IGZ1bmN0aW9uKGV2ZW50
KSB7CiAgICAgICAgICAgICB2YXIgZG9uZSA9IGZhbHNlOwogICAgICAgICAgICAgaWYgKGV2ZW50
LmRhdGEgPT0gaXRlbU51bSkgewogICAgICAgICAgICAgICAgIGl0ZW1OdW0rKzsKQEAgLTc3LDgg
KzgyLDggQEAgZnVuY3Rpb24gcmVzZW5kUG9ydChldnQpCiAgICAgICAgICAgICAgICAgZ2MoKTsK
ICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KHJlcG9ydERvbmUsIDEwMCk7ICAvLyBNYWtlIHN1
cmUgbm8gdW5leHBlY3RlZCBldmVudHMgY29tZSBpbi4KICAgICAgICAgICAgIH0KLSAgICAgICB9
Ci0gICAgICAgIGV2dC5tZXNzYWdlUG9ydC5zdGFydCgpOworICAgICAgICB9CisgICAgICAgIGV2
dC5wb3J0c1swXS5zdGFydCgpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZmFzdC93b3JrZXJzL3dvcmtlci1jb250ZXh0LW11bHRpLXBvcnQtZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvZmFzdC93b3JrZXJzL3dvcmtlci1jb250ZXh0LW11bHRpLXBvcnQtZXhwZWN0ZWQu
dHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlhYjA5OTEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvd29ya2VyLWNvbnRleHQtbXVsdGkt
cG9ydC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNiBAQAorVGhpcyB0ZXN0IGNoZWNrcyB0aGUg
dmFyaW91cyB1c2UgY2FzZXMgYXJvdW5kIHNlbmRpbmcgbXVsdGlwbGUgcG9ydHMgdGhyb3VnaCBX
b3JrZXJHbG9iYWxTY29wZS5wb3N0TWVzc2FnZQorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUg
YSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIu
CisKKworUEFTUyBldmVudC5wb3J0cyBpcyBudWxsIHdoZW4gbm8gcG9ydCBzZW50CitQQVNTIGV2
ZW50LnBvcnRzIGlzIG51bGwgd2hlbiBlbXB0eSBhcnJheSBzZW50CitQQVNTIGV2ZW50LnBvcnRz
IGNvbnRhaW5zIHR3byBwb3J0cyB3aGVuIHR3byBwb3J0cyBzZW50CitQQVNTIHBvc3RpbmcgYSBu
dWxsIHBvcnQgZGlkIHRocm93OiBbb2JqZWN0IERPTUV4Y2VwdGlvbl0KK1BBU1MgcG9zdGluZyBh
IG5vbi1wb3J0IGRpZCB0aHJvdzogVHlwZUVycm9yOiBUeXBlIGVycm9yCitQQVNTIGV2ZW50LnBv
cnRzIGNvbnRhaW5zIHR3byBwb3J0cyB3aGVuIHR3byBwb3J0cyByZS1zZW50IGFmdGVyIGVycm9y
CitQQVNTIHBvc3RpbmcgYSBub24tYXJyYXkgZGlkIHRocm93OiBUeXBlRXJyb3I6IFR5cGUgZXJy
b3IKK1BBU1MgcG9zdGluZyBhIG5vbi1zZXF1ZW5jZSBkaWQgdGhyb3c6IFR5cGVFcnJvcjogVHlw
ZSBlcnJvcgorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qv
d29ya2Vycy93b3JrZXItY29udGV4dC1tdWx0aS1wb3J0Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0
L3dvcmtlcnMvd29ya2VyLWNvbnRleHQtbXVsdGktcG9ydC5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAuLjE2Y2VkZDEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9mYXN0L3dvcmtlcnMvd29ya2VyLWNvbnRleHQtbXVsdGktcG9ydC5odG1sCkBAIC0wLDAgKzEs
MTAgQEAKKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi9qcy9yZXNvdXJj
ZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10
ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwIGlkPSJkZXNjcmlwdGlv
biI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2Vz
L3dvcmtlci11dGlsLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvd29ya2Vy
LWNvbnRleHQtbXVsdGktcG9ydC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvd29ya2VyLW1lc3NhZ2Vwb3J0LWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy93b3JrZXItbWVzc2FnZXBvcnQtZXhwZWN0ZWQudHh0
CmluZGV4IDRhYmVhMGUuLjkwMzk4ZTEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3Qvd29y
a2Vycy93b3JrZXItbWVzc2FnZXBvcnQtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2Zh
c3Qvd29ya2Vycy93b3JrZXItbWVzc2FnZXBvcnQtZXhwZWN0ZWQudHh0CkBAIC0xLDYgKzEsNiBA
QAogVGVzdCB0aGF0IHBhZ2VzIGFuZCB3b3JrZXJzIGNhbiBzZW5kIE1lc3NhZ2VQb3J0cyB0byBv
bmUgYW5vdGhlci4gU2hvdWxkIHByaW50ICJET05FIiB3aGVuIGRvbmUuCiAKLVBBU1M6IGV2dC5t
ZXNzYWdlUG9ydCA9IG51bGwgYXMgZXhwZWN0ZWQKK1BBU1M6IGV2dC5wb3J0cyA9IG51bGwgYXMg
ZXhwZWN0ZWQKIFBBU1M6IFJlY2VpdmVkIG1lc3NhZ2UgcG9ydAogUEFTUzogUmVjZWl2ZWQgcmVz
cG9uc2UgZnJvbSBXb3JrZXIgdmlhIE1lc3NhZ2VQb3J0CiBQQVNTOiBHb3QgcG9ydCBmcm9tIHdv
cmtlcgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC93b3JrZXJzL3dvcmtlci1tZXNzYWdl
cG9ydC1nYy5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC93b3JrZXJzL3dvcmtlci1tZXNzYWdlcG9y
dC1nYy5odG1sCmluZGV4IDQ4Yzk3YTUuLjFiODk5NzkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2Zhc3Qvd29ya2Vycy93b3JrZXItbWVzc2FnZXBvcnQtZ2MuaHRtbAorKysgYi9MYXlvdXRUZXN0
cy9mYXN0L3dvcmtlcnMvd29ya2VyLW1lc3NhZ2Vwb3J0LWdjLmh0bWwKQEAgLTE2LDcgKzE2LDcg
QEAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewogLy8gVGVzdCB0aGF0IHdvcmtl
cnMgc3RheSBhbGl2ZSBldmVuIHRob3VnaCB0aGV5IGFyZSBvbmx5IHJlYWNoYWJsZSB2aWEgbWVz
c2FnZSBwb3J0cy4KIHZhciB3b3JrZXIgPSBuZXcgV29ya2VyKCJyZXNvdXJjZXMvd29ya2VyLW1l
c3NhZ2Vwb3J0LmpzIik7CiB2YXIgY2hhbm5lbCA9IG5ldyBNZXNzYWdlQ2hhbm5lbCgpOwotd29y
a2VyLnBvc3RNZXNzYWdlKCJwb3J0IiwgY2hhbm5lbC5wb3J0MSk7Cit3b3JrZXIucG9zdE1lc3Nh
Z2UoInBvcnQiLCBbY2hhbm5lbC5wb3J0MV0pOwogd29ya2VyID0gMDsKIAogY2hhbm5lbC5wb3J0
Mi5wb3N0TWVzc2FnZSgicGluZyIpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC93b3Jr
ZXJzL3dvcmtlci1tZXNzYWdlcG9ydC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC93b3JrZXJzL3dv
cmtlci1tZXNzYWdlcG9ydC5odG1sCmluZGV4IGMyYTZlYmIuLjhmNDdhZjIgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy93b3JrZXItbWVzc2FnZXBvcnQuaHRtbAorKysgYi9M
YXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvd29ya2VyLW1lc3NhZ2Vwb3J0Lmh0bWwKQEAgLTIwLDcg
KzIwLDcgQEAgdmFyIGNoYW5uZWwgPSBuZXcgTWVzc2FnZUNoYW5uZWwoKTsKIHdvcmtlci5wb3N0
TWVzc2FnZSgibm9wb3J0Iik7CiB3b3JrZXIub25tZXNzYWdlID0gZnVuY3Rpb24oZXZ0KSB7CiAg
ICAgbG9nKGV2dC5kYXRhKTsKLSAgICB3b3JrZXIucG9zdE1lc3NhZ2UoInBvcnQiLCBjaGFubmVs
LnBvcnQxKTsKKyAgICB3b3JrZXIucG9zdE1lc3NhZ2UoInBvcnQiLCBbY2hhbm5lbC5wb3J0MV0p
OwogICAgIHdvcmtlci5vbm1lc3NhZ2UgPSBmdW5jdGlvbihldnQpIHsKICAgICAgICAgbG9nKGV2
dC5kYXRhKTsKICAgICB9CkBAIC00NSwxMiArNDUsMTQgQEAgY2hhbm5lbC5wb3J0Mi5zdGFydCgp
OwogZnVuY3Rpb24gYXdhaXRQb3J0RnJvbVdvcmtlcihldnQpCiB7CiAgICAgaWYgKGV2dC5kYXRh
ID09ICJwb3J0IikgewotICAgICAgICBpZiAoIWV2dC5tZXNzYWdlUG9ydCkgeworICAgICAgICBp
ZiAoIWV2dC5wb3J0cykgewogICAgICAgICAgICAgbG9nKCJGQUlMOiBEaWQgbm90IGdldCBwb3J0
IGZyb20gd29ya2VyIik7CisgICAgICAgIH0gZWxzZSBpZiAoZXZ0LnBvcnRzLmxlbmd0aCAhPSAx
KSB7CisgICAgICAgICAgICBsb2coIkZBSUw6IEdvdCB0aGUgd3JvbmcgbnVtYmVyIG9mIHBvcnRz
IGZyb20gd29ya2VyOiAiICsgZXZ0LnBvcnRzLmxlbmd0aCk7CiAgICAgICAgIH0gZWxzZSB7CiAg
ICAgICAgICAgICBsb2coIlBBU1M6IEdvdCBwb3J0IGZyb20gd29ya2VyIik7Ci0gICAgICAgICAg
ICBldnQubWVzc2FnZVBvcnQucG9zdE1lc3NhZ2UoInBpbmciKTsKLSAgICAgICAgICAgIGV2dC5t
ZXNzYWdlUG9ydC5vbm1lc3NhZ2UgPSBmdW5jdGlvbihldnQpIHsKKyAgICAgICAgICAgIGV2dC5w
b3J0c1swXS5wb3N0TWVzc2FnZSgicGluZyIpOworICAgICAgICAgICAgZXZ0LnBvcnRzWzBdLm9u
bWVzc2FnZSA9IGZ1bmN0aW9uKGV2dCkgewogICAgICAgICAgICAgICAgIGlmIChldnQuZGF0YSA9
PSAicG9uZyIpIHsKICAgICAgICAgICAgICAgICAgICAgbG9nKCJQQVNTOiBSZWNlaXZlZCBmaW5h
bCByZXNwb25zZSBmcm9tIHdvcmtlciIpOwogICAgICAgICAgICAgICAgIH0gZWxzZSB7CkBAIC01
OCw3ICs2MCw3IEBAIGZ1bmN0aW9uIGF3YWl0UG9ydEZyb21Xb3JrZXIoZXZ0KQogICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgICAgICBzdGFydFNwYW1UZXN0KCk7CiAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICBldnQubWVzc2FnZVBvcnQuc3RhcnQoKTsKKyAgICAgICAgICAgIGV2dC5w
b3J0c1swXS5zdGFydCgpOwogICAgICAgICB9CiAgICAgfSBlbHNlIHsKICAgICAgICAgbG9nKGV2
dC5kYXRhKTsKQEAgLTY5LDcgKzcxLDcgQEAgZnVuY3Rpb24gc3RhcnRTcGFtVGVzdCgpCiB7CiAg
ICAgdmFyIGNoYW5uZWwgPSBuZXcgTWVzc2FnZUNoYW5uZWwoKTsKICAgICB3b3JrZXIub25tZXNz
YWdlID0gZnVuY3Rpb24gKCkgeyBnb3RTcGFtKGNoYW5uZWwucG9ydDEpOyB9Ci0gICAgd29ya2Vy
LnBvc3RNZXNzYWdlKCJzcGFtIiwgY2hhbm5lbC5wb3J0Mik7CisgICAgd29ya2VyLnBvc3RNZXNz
YWdlKCJzcGFtIiwgW2NoYW5uZWwucG9ydDJdKTsKIH0KIAogZnVuY3Rpb24gZ290U3BhbShwb3J0
KQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC93b3JrZXJzL3dvcmtlci1tdWx0aS1wb3J0
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy93b3JrZXItbXVsdGktcG9y
dC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODhiNDA2
MgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy93b3JrZXItbXVs
dGktcG9ydC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNiBAQAorVGhpcyB0ZXN0IGNoZWNrcyB0
aGUgdmFyaW91cyB1c2UgY2FzZXMgYXJvdW5kIHNlbmRpbmcgbXVsdGlwbGUgcG9ydHMgdGhyb3Vn
aCBXb3JrZXIucG9zdE1lc3NhZ2UKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVz
IG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BB
U1Mgd29ya2VyLnBvc3RNZXNzYWdlKCJudWxsIHBvcnQiLCBbY2hhbm5lbDMucG9ydDEsIG51bGws
IGNoYW5uZWwzLnBvcnQyXSkgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBJTlZBTElEX1NUQVRFX0VS
UjogRE9NIEV4Y2VwdGlvbiAxMS4KK1BBU1Mgd29ya2VyLnBvc3RNZXNzYWdlKCJub3RBUG9ydCIs
IFtjaGFubmVsMy5wb3J0MSwge30sIGNoYW5uZWwzLnBvcnQyXSkgdGhyZXcgZXhjZXB0aW9uIFR5
cGVFcnJvcjogVHlwZSBlcnJvci4KK1BBU1Mgd29ya2VyLnBvc3RNZXNzYWdlKCJub3RBbkFycmF5
IiwgY2hhbm5lbDMucG9ydDEpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUgZXJyb3Iu
CitQQVNTIHdvcmtlci5wb3N0TWVzc2FnZSgibm90QVNlcXVlbmNlIiwgW3tsZW5ndGg6IDN9XSkg
dGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJvci4KK1BBU1MgZXZlbnQucG9ydHMg
aXMgbnVsbCB3aGVuIG5vIHBvcnQgc2VudAorUEFTUyBldmVudC5wb3J0cyBpcyBudWxsIHdoZW4g
ZW1wdHkgYXJyYXkgc2VudAorUEFTUyBldmVudC5wb3J0cyBjb250YWlucyB0d28gcG9ydHMgd2hl
biB0d28gcG9ydHMgc2VudAorUEFTUyBldmVudC5wb3J0cyBjb250YWlucyB0d28gcG9ydHMgd2hl
biB0d28gcG9ydHMgcmUtc2VudCBhZnRlciBlcnJvcgorCitURVNUIENPTVBMRVRFCisKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy93b3JrZXItbXVsdGktcG9ydC5odG1sIGIv
TGF5b3V0VGVzdHMvZmFzdC93b3JrZXJzL3dvcmtlci1tdWx0aS1wb3J0Lmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDYwMjJjYQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2Zhc3Qvd29ya2Vycy93b3JrZXItbXVsdGktcG9ydC5odG1sCkBAIC0wLDAgKzEs
MTAgQEAKKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi9qcy9yZXNvdXJj
ZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10
ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwIGlkPSJkZXNjcmlwdGlv
biI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2Vz
L3dvcmtlci11dGlsLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvd29ya2Vy
LW11bHRpLXBvcnQuanMiPjwvc2NyaXB0PgorPC9ib2R5PgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBiYjc1MDFhLi44NGQ1ZWJkIDEwMDY0
NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDY5IEBACisyMDA5LTA4LTI5ICBEcmV3IFdpbHNvbiAgPGF0d2lsc29uQGdvb2dsZS5jb20+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTmVlZCB0
byB1cGRhdGUgSlMgYmluZGluZ3MgYW5kIElETCBmaWxlcyB0byBzdXBwb3J0IG11bHRpcGxlIG1l
c3NhZ2UgcG9ydHMgaW4gcG9zdE1lc3NhZ2UoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mjg0NjAKKworICAgICAgICBBZGRlZCBuZXcgdG9KU1NlcXVl
bmNlKCkgQVBJIHdoaWNoIHZhbGlkYXRlcyB0aGF0IGEgSlNWYWx1ZSBtZWV0cyB0aGUgV2ViSURM
IGNyaXRlcmlhIGZvciBhIHNlcXVlbmNlLgorCisgICAgICAgIFRlc3RzOiBmYXN0L2V2ZW50cy9t
ZXNzYWdlLXBvcnQtbXVsdGkuaHRtbAorICAgICAgICAgICAgICAgZmFzdC93b3JrZXJzL3dvcmtl
ci1jb250ZXh0LW11bHRpLXBvcnQuaHRtbAorICAgICAgICAgICAgICAgZmFzdC93b3JrZXJzL3dv
cmtlci1tdWx0aS1wb3J0Lmh0bWwKKworICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOgorICAgICAg
ICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBXZWJDb3JlLnBybzoKKyAgICAgICAgKiBXZWJD
b3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2ViQ29yZVNvdXJjZXMuYmtsOgorICAgICAgICBB
ZGRlZCBKU01lc3NhZ2VQb3J0Q3VzdG9tLmggYW5kIEpTTWVzc2FnZUV2ZW50Q3VzdG9tLmNwcC4K
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6dG9KU1NlcXVlbmNlKToKKyAgICAgICAgQWRkZWQgdG9KU1NlcXVlbmNlKCkgQVBJIHRvIGRv
IHZhbGlkYXRpb24gb24gc2VxdWVuY2UtbGlrZSBvYmplY3RzIHBlciBXZWJJREwuCisgICAgICAg
ICogYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmg6CisgICAgICAgICogYmluZGluZ3MvanMvSlNE
T01XaW5kb3dDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3c6OnBvc3RN
ZXNzYWdlKToKKyAgICAgICAgQWRkZWQgY3VzdG9tIGhhbmRsZXIgZm9yIHBvc3RNZXNzYWdlKCkg
dGhhdCBoYW5kbGVzIGJlaW5nIHBhc3NlZCBNZXNzYWdlUG9ydEFycmF5cy4KKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9KU0RlZGljYXRlZFdvcmtlckNvbnRleHRDdXN0b20uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SlNEZWRpY2F0ZWRXb3JrZXJDb250ZXh0Ojpwb3N0TWVzc2FnZSk6CisgICAgICAg
IEFkZGVkIGN1c3RvbSBoYW5kbGVyIGZvciBwb3N0TWVzc2FnZSgpIHRoYXQgaGFuZGxlcyBiZWlu
ZyBwYXNzZWQgTWVzc2FnZVBvcnRBcnJheXMuCisgICAgICAgICogYmluZGluZ3MvanMvSlNNZXNz
YWdlRXZlbnRDdXN0b20uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkpTTWVzc2FnZUV2
ZW50Ojpwb3J0cyk6CisgICAgICAgIEFkZGVkIGN1c3RvbSBwb3J0cygpIGdldHRlciB0aGF0IGNv
bnZlcnRzIGZyb20gTWVzc2FnZVBvcnRBcnJheSB0byBKU0FycmF5LgorICAgICAgICAoV2ViQ29y
ZTo6SlNNZXNzYWdlRXZlbnQ6OmluaXRNZXNzYWdlRXZlbnQpOgorICAgICAgICBBZGRlZCBzdXBw
b3J0IGZvciBwYXNzaW5nIGEgTWVzc2FnZVBvcnRBcnJheS4KKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9KU01lc3NhZ2VQb3J0Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTTWVzc2FnZVBv
cnQ6OnBvc3RNZXNzYWdlKToKKyAgICAgICAgQWRkZWQgY3VzdG9tIGhhbmRsZXIgZm9yIHBvc3RN
ZXNzYWdlKCkgdGhhdCBoYW5kbGVzIGJlaW5nIHBhc3NlZCBNZXNzYWdlUG9ydEFycmF5LgorICAg
ICAgICAoV2ViQ29yZTo6ZmlsbE1lc3NhZ2VQb3J0QXJyYXkpOgorICAgICAgICBOZXcgaGVscGVy
IHJvdXRpbmUgdGhhdCB2YWxpZGF0ZXMvY29udmVydHMgZnJvbSBhIEpTIHNlcXVlbmNlIG8gYSBX
ZWJDb3JlOjpNZXNzYWdlUG9ydEFycmF5LgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTTWVzc2Fn
ZVBvcnRDdXN0b20uaDogQWRkZWQuCisgICAgICAgICogYmluZGluZ3MvanMvSlNXb3JrZXJDdXN0
b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNXb3JrZXI6OnBvc3RNZXNzYWdlKToKKyAgICAg
ICAgQWRkZWQgY3VzdG9tIGhhbmRsZXIgZm9yIHBvc3RNZXNzYWdlKCkgdGhhdCBoYW5kbGVzIGJl
aW5nIHBhc3NlZCBNZXNzYWdlUG9ydEFycmF5LgorICAgICAgICAqIGRvbS9NZXNzYWdlRXZlbnQu
Y3BwOgorICAgICAgICAqIGRvbS9NZXNzYWdlRXZlbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok1l
c3NhZ2VFdmVudDo6cG9ydHMpOgorICAgICAgICBDaGFuZ2VkIHBvcnRzKCkgdG8gcmV0dXJuIGEg
TWVzc2FnZVBvcnRBcnJheSogc2luY2UgdGhpcyB2YWx1ZSBjYW4gYmUgbnVsbC4KKyAgICAgICAg
KiBkb20vTWVzc2FnZUV2ZW50LmlkbDoKKyAgICAgICAgVXBkYXRlZCBJREwgdG8gbWF0Y2ggSFRN
TDUgc3BlYyAobm93IGFjY2VwdHMgTWVzc2FnZVBvcnRBcnJheXMgaW5zdGVhZCBvZiBhIHNvbGl0
YXJ5IE1lc3NhZ2VQb3J0KS4KKyAgICAgICAgKiBkb20vTWVzc2FnZVBvcnQuY3BwOgorICAgICAg
ICAqIGRvbS9NZXNzYWdlUG9ydC5oOgorICAgICAgICAqIGRvbS9NZXNzYWdlUG9ydC5pZGw6Cisg
ICAgICAgIFVwZGF0ZWQgSURMIHRvIG1hdGNoIEhUTUw1IHNwZWMgKHBvc3RNZXNzYWdlKCkgbm93
IGFjY2VwdHMgTWVzc2FnZVBvcnRBcnJheXMgaW5zdGVhZCBvZiBhIHNvbGl0YXJ5IE1lc3NhZ2VQ
b3J0KS4KKyAgICAgICAgKiBwYWdlL0RPTVdpbmRvdy5oOgorICAgICAgICAqIHBhZ2UvRE9NV2lu
ZG93LmlkbDoKKyAgICAgICAgVXBkYXRlZCBJREwgdG8gbWF0Y2ggSFRNTDUgc3BlYyAocG9zdE1l
c3NhZ2UoKSBub3cgYWNjZXB0cyBNZXNzYWdlUG9ydEFycmF5cyBpbnN0ZWFkIG9mIGEgc29saXRh
cnkgTWVzc2FnZVBvcnQpLgorICAgICAgICAqIHdvcmtlcnMvRGVkaWNhdGVkV29ya2VyQ29udGV4
dC5jcHA6CisgICAgICAgICogd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJDb250ZXh0Lmg6CisgICAg
ICAgICogd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJDb250ZXh0LmlkbDoKKyAgICAgICAgVXBkYXRl
ZCBJREwgdG8gbWF0Y2ggSFRNTDUgc3BlYyAocG9zdE1lc3NhZ2UoKSBub3cgYWNjZXB0cyBNZXNz
YWdlUG9ydEFycmF5cyBpbnN0ZWFkIG9mIGEgc29saXRhcnkgTWVzc2FnZVBvcnQpLgorICAgICAg
ICAqIHdvcmtlcnMvV29ya2VyLmNwcDoKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlci5oOgorICAg
ICAgICAqIHdvcmtlcnMvV29ya2VyLmlkbDoKKyAgICAgICAgVXBkYXRlZCBJREwgdG8gbWF0Y2gg
SFRNTDUgc3BlYyAocG9zdE1lc3NhZ2UoKSBub3cgYWNjZXB0cyBNZXNzYWdlUG9ydEFycmF5cyBp
bnN0ZWFkIG9mIGEgc29saXRhcnkgTWVzc2FnZVBvcnQpLgorCiAyMDA5LTA4LTMxICBCcmlhbiBX
ZWluc3RlaW4gIDxid2VpbnN0ZWluQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBE
YXJpbiBBZGxlci4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0gYi9XZWJDb3Jl
L0dOVW1ha2VmaWxlLmFtCmluZGV4IDBmOGIyYmQuLmFkNWZmOTQgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvR05VbWFrZWZpbGUuYW0KKysrIGIvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQpAQCAtMzk2LDcg
KzM5Niw5IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01l
c3NhZ2VDaGFubmVsQ29uc3RydWN0b3IuY3BwIFwKIAlXZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVz
c2FnZUNoYW5uZWxDb25zdHJ1Y3Rvci5oIFwKIAlXZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVzc2Fn
ZUNoYW5uZWxDdXN0b20uY3BwIFwKKwlXZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVzc2FnZUV2ZW50
Q3VzdG9tLmNwcCBcCiAJV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01lc3NhZ2VQb3J0Q3VzdG9tLmNw
cCBcCisJV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01lc3NhZ2VQb3J0Q3VzdG9tLmggXAogCVdlYkNv
cmUvYmluZGluZ3MvanMvSlNNaW1lVHlwZUFycmF5Q3VzdG9tLmNwcCBcCiAJV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU05hbWVkTm9kZU1hcEN1c3RvbS5jcHAgXAogCVdlYkNvcmUvYmluZGluZ3MvanMv
SlNOYW1lZE5vZGVzQ29sbGVjdGlvbi5jcHAgXApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3Jl
Lmd5cGkgYi9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCBmMGJkZDU4Li5jY2RiOTU1IDEwMDY0
NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpA
QCAtNTA3LDcgKzUwNyw5IEBACiAgICAgICAgICAgICAnYmluZGluZ3MvanMvSlNNZXNzYWdlQ2hh
bm5lbENvbnN0cnVjdG9yLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvanMvSlNNZXNzYWdl
Q2hhbm5lbENvbnN0cnVjdG9yLmgnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTTWVzc2Fn
ZUNoYW5uZWxDdXN0b20uY3BwJywKKyAgICAgICAgICAgICdiaW5kaW5ncy9qcy9KU01lc3NhZ2VF
dmVudEN1c3RvbS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTTWVzc2FnZVBvcnRD
dXN0b20uY3BwJywKKyAgICAgICAgICAgICdiaW5kaW5ncy9qcy9KU01lc3NhZ2VQb3J0Q3VzdG9t
LmgnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTTWltZVR5cGVBcnJheUN1c3RvbS5jcHAn
LAogICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTTmFtZWROb2RlTWFwQ3VzdG9tLmNwcCcsCiAg
ICAgICAgICAgICAnYmluZGluZ3MvanMvSlNOYW1lZE5vZGVzQ29sbGVjdGlvbi5jcHAnLApkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLnBybyBiL1dlYkNvcmUvV2ViQ29yZS5wcm8KaW5kZXgg
OGVhNjJkZC4uYmNlZDRkNiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLnBybworKysgYi9X
ZWJDb3JlL1dlYkNvcmUucHJvCkBAIC03MjEsNyArNzIxLDkgQEAgU09VUkNFUyArPSBcCiAgICAg
YmluZGluZ3MvanMvSlNQbHVnaW5BcnJheUN1c3RvbS5jcHAgXAogICAgIGJpbmRpbmdzL2pzL0pT
TWVzc2FnZUNoYW5uZWxDb25zdHJ1Y3Rvci5jcHAgXAogICAgIGJpbmRpbmdzL2pzL0pTTWVzc2Fn
ZUNoYW5uZWxDdXN0b20uY3BwIFwKKyAgICBiaW5kaW5ncy9qcy9KU01lc3NhZ2VFdmVudEN1c3Rv
bS5jcHAgXAogICAgIGJpbmRpbmdzL2pzL0pTTWVzc2FnZVBvcnRDdXN0b20uY3BwIFwKKyAgICBi
aW5kaW5ncy9qcy9KU01lc3NhZ2VQb3J0Q3VzdG9tLmggXAogICAgIGJpbmRpbmdzL2pzL0pTTWlt
ZVR5cGVBcnJheUN1c3RvbS5jcHAgXAogICAgIGJpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5jcHAg
XAogICAgIGJpbmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5jcHAgXApkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvaiBiL1dlYkNvcmUvV2ViQ29yZS52Y3By
b2ovV2ViQ29yZS52Y3Byb2oKaW5kZXggM2Y5ZjgxMS4uYzNjZWVjYiAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagorKysgYi9XZWJDb3JlL1dlYkNvcmUu
dmNwcm9qL1dlYkNvcmUudmNwcm9qCkBAIC0yOTEyMywxMCArMjkxMjMsMTggQEAKIAkJCQkJPg0K
IAkJCQk8L0ZpbGU+DQogCQkJCTxGaWxlDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGJpbmRpbmdz
XGpzXEpTTWVzc2FnZUV2ZW50Q3VzdG9tLmNwcCINCisJCQkJCT4NCisJCQkJPC9GaWxlPg0KKwkJ
CQk8RmlsZQ0KIAkJCQkJUmVsYXRpdmVQYXRoPSIuLlxiaW5kaW5nc1xqc1xKU01lc3NhZ2VQb3J0
Q3VzdG9tLmNwcCINCiAJCQkJCT4NCiAJCQkJPC9GaWxlPg0KIAkJCQk8RmlsZQ0KKwkJCQkJUmVs
YXRpdmVQYXRoPSIuLlxiaW5kaW5nc1xqc1xKU01lc3NhZ2VQb3J0Q3VzdG9tLmgiDQorCQkJCQk+
DQorCQkJCTwvRmlsZT4NCisJCQkJPEZpbGUNCiAJCQkJCVJlbGF0aXZlUGF0aD0iLi5cYmluZGlu
Z3NcanNcSlNNaW1lVHlwZUFycmF5Q3VzdG9tLmNwcCINCiAJCQkJCT4NCiAJCQkJPC9GaWxlPg0K
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYjQxYjY4Yi4u
NTYwZjI1ZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKKysrIGIvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAg
LTY3NCw2ICs2NzQsNyBAQAogCQkzN0Y4MThGRTBENjU3NjA2MDA1RTFGMDUgLyogV2ViQ29yZVVS
TFJlc3BvbnNlLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMzdGODE4RkMwRDY1NzYwNjAwNUUxRjA1IC8qIFdlYkNvcmVVUkxSZXNwb25zZS5tbSAqLzsg
fTsKIAkJNDEwMDJDQ0QwRjY2RURFRjAwOUU2NjBEIC8qIFNjcmlwdEZ1bmN0aW9uQ2FsbC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDEwMDJDQ0IwRjY2
RURFRjAwOUU2NjBEIC8qIFNjcmlwdEZ1bmN0aW9uQ2FsbC5oICovOyB9OwogCQk0MTAwMkNDRTBG
NjZFREVGMDA5RTY2MEQgLyogU2NyaXB0RnVuY3Rpb25DYWxsLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMDAyQ0NDMEY2NkVERUYwMDlFNjYwRCAv
KiBTY3JpcHRGdW5jdGlvbkNhbGwuY3BwICovOyB9OworCQk0MTBCN0U3MjEwNDVGQUIwMDBEODIy
NEYgLyogSlNNZXNzYWdlRXZlbnRDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDEwQjdFNzExMDQ1RkFCMDAwRDgyMjRGIC8qIEpTTWVzc2Fn
ZUV2ZW50Q3VzdG9tLmNwcCAqLzsgfTsKIAkJNDExMDQ2NDEwRkEyMjJBNjAwQkE0MzZBIC8qIFNj
cmlwdEV2ZW50TGlzdGVuZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQxMTA0NjNGMEZBMjIyQTYwMEJBNDM2QSAvKiBTY3JpcHRFdmVudExpc3RlbmVy
LmggKi87IH07CiAJCTQxMTA0NjQyMEZBMjIyQTYwMEJBNDM2QSAvKiBTY3JpcHRFdmVudExpc3Rl
bmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQx
MTA0NjQwMEZBMjIyQTYwMEJBNDM2QSAvKiBTY3JpcHRFdmVudExpc3RlbmVyLmNwcCAqLzsgfTsK
IAkJNDEyN0Q1MzcwRjhBQUIxRDAwRTQyNEY1IC8qIFNjcmlwdFN0YXRlLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMjdENTM2MEY4QUFCMUQwMEU0
MjRGNSAvKiBTY3JpcHRTdGF0ZS5jcHAgKi87IH07CkBAIC03MzUsNiArNzM2LDcgQEAKIAkJNDFG
MDY2RTUwRjY0QkNGNjAwQTA3RUFDIC8qIFNjcmlwdE9iamVjdC5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUYwNjZFMzBGNjRCQ0Y2MDBBMDdFQUMg
LyogU2NyaXB0T2JqZWN0LmNwcCAqLzsgfTsKIAkJNDFGMUQyMUYwRUYzNUMyQTAwREE4NzUzIC8q
IFNjcmlwdENhY2hlZEZyYW1lRGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNDFGMUQyMUQwRUYzNUMyQTAwREE4NzUzIC8qIFNjcmlwdENhY2hlZEZy
YW1lRGF0YS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTQxRjFEMjIwMEVGMzVDMkEwMERBODc1MyAvKiBTY3JpcHRDYWNoZWRGcmFtZURhdGEuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFGMUQyMUUw
RUYzNUMyQTAwREE4NzUzIC8qIFNjcmlwdENhY2hlZEZyYW1lRGF0YS5jcHAgKi87IH07CisJCTQx
RjU4NEM3MTA0NjUyQ0IwMDlDQUE2NCAvKiBKU01lc3NhZ2VQb3J0Q3VzdG9tLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUY1ODRDNjEwNDY1MkNCMDA5
Q0FBNjQgLyogSlNNZXNzYWdlUG9ydEN1c3RvbS5oICovOyB9OwogCQk0NDE1MjkyRTBFMUFFOEEw
MDBDNEEyRDAgLyogSFRNTFBsdWdJbkltYWdlRWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDQxNTI5MkMwRTFBRThBMDAwQzRBMkQwIC8qIEhU
TUxQbHVnSW5JbWFnZUVsZW1lbnQuaCAqLzsgfTsKIAkJNDQxNTI5MkYwRTFBRThBMDAwQzRBMkQw
IC8qIEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDQxNTI5MkQwRTFBRThBMDAwQzRBMkQwIC8qIEhUTUxQbHVn
SW5JbWFnZUVsZW1lbnQuY3BwICovOyB9OwogCQk0NDFCMDU1QzBDRDc3QTJEMDA3QzFGMTggLyog
RE9NSFRNTEVtYmVkRWxlbWVudFByaXZhdGUuaCBpbiBDb3B5IEdlbmVyYXRlZCBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ0MjlBQUZCMENCODRFODgwMDc2NDdD
NSAvKiBET01IVE1MRW1iZWRFbGVtZW50UHJpdmF0ZS5oICovOyB9OwpAQCAtNTc3MSw2ICs1Nzcz
LDcgQEAKIAkJMzdGODE4RkMwRDY1NzYwNjAwNUUxRjA1IC8qIFdlYkNvcmVVUkxSZXNwb25zZS5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYkNvcmVVUkxSZXNw
b25zZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDEwMDJDQ0IwRjY2RURFRjAw
OUU2NjBEIC8qIFNjcmlwdEZ1bmN0aW9uQ2FsbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBTY3JpcHRGdW5jdGlvbkNhbGwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNDEwMDJDQ0MwRjY2RURFRjAwOUU2NjBEIC8qIFNjcmlwdEZ1bmN0aW9uQ2FsbC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTY3JpcHRGdW5jdGlvbkNhbGwuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MTBCN0U3MTEwNDVGQUIwMDBEODIyNEYg
LyogSlNNZXNzYWdlRXZlbnRDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gSlNNZXNzYWdlRXZlbnRDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk0MTEwNDYzRjBGQTIyMkE2MDBCQTQzNkEgLyogU2NyaXB0RXZlbnRMaXN0ZW5lci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY3JpcHRFdmVudExpc3RlbmVyLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxMTA0NjQwMEZBMjIyQTYwMEJBNDM2QSAv
KiBTY3JpcHRFdmVudExpc3RlbmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFNjcmlwdEV2ZW50TGlzdGVuZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk0MTI3RDUzNjBGOEFBQjFEMDBFNDI0RjUgLyogU2NyaXB0U3RhdGUuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2NyaXB0U3RhdGUuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtNTgzNiw2ICs1ODM5LDcgQEAKIAkJNDFGMDY2RTMwRjY0QkNG
NjAwQTA3RUFDIC8qIFNjcmlwdE9iamVjdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBTY3JpcHRPYmplY3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0MUYxRDIxRDBFRjM1QzJBMDBEQTg3NTMgLyogU2NyaXB0Q2FjaGVkRnJhbWVEYXRhLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcmlwdENhY2hlZEZyYW1lRGF0YS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MUYxRDIxRTBFRjM1QzJBMDBEQTg3NTMgLyog
U2NyaXB0Q2FjaGVkRnJhbWVEYXRhLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFNjcmlwdENhY2hlZEZyYW1lRGF0YS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTQxRjU4NEM2MTA0NjUyQ0IwMDlDQUE2NCAvKiBKU01lc3NhZ2VQb3J0Q3VzdG9tLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTTWVzc2FnZVBvcnRDdXN0b20uaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDQxNTI5MkMwRTFBRThBMDAwQzRBMkQwIC8q
IEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSFRNTFBsdWdJbkltYWdlRWxlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0NDE1MjkyRDBFMUFFOEEwMDBDNEEyRDAgLyogSFRNTFBsdWdJbkltYWdlRWxlbWVudC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBIVE1MUGx1Z0luSW1hZ2VFbGVt
ZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDQyOUFBRkIwQ0I4NEU4ODAw
NzY0N0M1IC8qIERPTUhUTUxFbWJlZEVsZW1lbnRQcml2YXRlLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBET01IVE1MRW1iZWRFbGVtZW50UHJpdmF0ZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtMTQxMjksNyArMTQxMzMsOSBAQAogCQkJCTFDNUZBRUU2MERD
RkRBNjgwMEQ1OEY3OCAvKiBKU0phdmFTY3JpcHRDYWxsRnJhbWVDdXN0b20uY3BwICovLAogCQkJ
CUJDRTFDNDNGMEQ5ODMwRjQwMDNCMDJGMiAvKiBKU0xvY2F0aW9uQ3VzdG9tLmNwcCAqLywKIAkJ
CQlFMUE1Rjk5QTBFN0VBQTI1MDBBRjg1RUEgLyogSlNNZXNzYWdlQ2hhbm5lbEN1c3RvbS5jcHAg
Ki8sCisJCQkJNDEwQjdFNzExMDQ1RkFCMDAwRDgyMjRGIC8qIEpTTWVzc2FnZUV2ZW50Q3VzdG9t
LmNwcCAqLywKIAkJCQlFMUFERUQ0NjBFNzZCOEREMDA0QTFBNUUgLyogSlNNZXNzYWdlUG9ydEN1
c3RvbS5jcHAgKi8sCisJCQkJNDFGNTg0QzYxMDQ2NTJDQjAwOUNBQTY0IC8qIEpTTWVzc2FnZVBv
cnRDdXN0b20uaCAqLywKIAkJCQlBOUM2RTY0NjBENzQ2NUNBMDA2NDQyRTkgLyogSlNNaW1lVHlw
ZUFycmF5Q3VzdG9tLmNwcCAqLywKIAkJCQlCQ0Q5QzI1RjBDMTdBQTY3MDA1QzkwQTIgLyogSlNO
YW1lZE5vZGVNYXBDdXN0b20uY3BwICovLAogCQkJCUE5QzZFNjQ4MEQ3NDY1RDgwMDY0NDJFOSAv
KiBKU05hdmlnYXRvckN1c3RvbS5jcHAgKi8sCkBAIC0xNzU0Niw2ICsxNzU1Miw3IEBACiAJCQkJ
NDE2RTI5QTYxMDJGQTk2MjAwN0ZDMTRFIC8qIFdvcmtlclJlcG9ydGluZ1Byb3h5LmggaW4gSGVh
ZGVycyAqLywKIAkJCQlCNUMxMTIzQzEwMkI2QzQ2MDAwOTY1NzggLyogU1FMVHJhbnNhY3Rpb25D
b29yZGluYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRDhCNjE1MkYxMDMyNDk1MTAwQzg1NTRB
IC8qIENvb2tpZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDFGNTg0QzcxMDQ2NTJDQjAwOUNBQTY0
IC8qIEpTTWVzc2FnZVBvcnRDdXN0b20uaCBpbiBIZWFkZXJzICovLAogCQkJCUJDRkE5MzA4MTAz
MzMxOTMwMDdCMjVEMSAvKiBSZW5kZXJPdmVyZmxvdy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDAx
NDYyOEIxMDNDRDFERTAwMEIyMERCIC8qIE9yaWdpbkFjY2Vzc0VudHJ5LmggaW4gSGVhZGVycyAq
LywKIAkJCQlCNTFCRjZGMTEwMkM5RTU5MDAwMkMxNUEgLyogU1FMVHJhbnNhY3Rpb25DbGllbnQu
aCBpbiBIZWFkZXJzICovLApAQCAtMTk2NDIsNiArMTk2NDksNyBAQAogCQkJCTkzOTIyNjJEMTAz
MjEwN0IwMDZFN0Q1RCAvKiBKU0hUTUxDYW52YXNFbGVtZW50Q3VzdG9tLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTkzOTIyNjJGMTAzMjEwODQwMDZFN0Q1RCAvKiBKU0NTU1J1bGVMaXN0Q3VzdG9t
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUI1QzExMjNCMTAyQjZDNDYwMDA5NjU3OCAvKiBTUUxU
cmFuc2FjdGlvbkNvb3JkaW5hdG9yLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTQxMEI3RTcyMTA0
NUZBQjAwMEQ4MjI0RiAvKiBKU01lc3NhZ2VFdmVudEN1c3RvbS5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkwMDE0NjI4QTEwM0NEMURFMDAwQjIwREIgLyogT3JpZ2luQWNjZXNzRW50cnkuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQjUxQkY2RjAxMDJDOUU1OTAwMDJDMTVBIC8qIFNRTFRyYW5zYWN0
aW9uQ2xpZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxMjg0QUVBMTA0NDdERUUwMEVBRUI1
MiAvKiBQYWdlVHJhbnNpdGlvbkV2ZW50LmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9XZWJDb3JlU291cmNlcy5ia2wgYi9XZWJDb3JlL1dlYkNvcmVTb3VyY2VzLmJrbApp
bmRleCA3YjgyOTYxLi42OGU0ZTFmIDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmVTb3VyY2Vz
LmJrbAorKysgYi9XZWJDb3JlL1dlYkNvcmVTb3VyY2VzLmJrbApAQCAtMTE4LDYgKzExOCw3IEBA
IFRoaXMgZmlsZSBjb250YWlucyB0aGUgbGlzdCBvZiBmaWxlcyBuZWVkZWQgdG8gYnVpbGQgV2Vi
Q29yZS4KICAgICAgICAgYmluZGluZ3MvanMvSlNMb2NhdGlvbkN1c3RvbS5jcHAKICAgICAgICAg
YmluZGluZ3MvanMvSlNNZXNzYWdlQ2hhbm5lbENvbnN0cnVjdG9yLmNwcAogICAgICAgICBiaW5k
aW5ncy9qcy9KU01lc3NhZ2VDaGFubmVsQ3VzdG9tLmNwcAorICAgICAgICBiaW5kaW5ncy9qcy9K
U01lc3NhZ2VFdmVudEN1c3RvbS5jcHAKICAgICAgICAgYmluZGluZ3MvanMvSlNNZXNzYWdlUG9y
dEN1c3RvbS5jcHAKICAgICAgICAgYmluZGluZ3MvanMvSlNNaW1lVHlwZUFycmF5Q3VzdG9tLmNw
cAogICAgICAgICBiaW5kaW5ncy9qcy9KU05hbWVkTm9kZU1hcEN1c3RvbS5jcHAKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmNwcCBiL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01CaW5kaW5nLmNwcAppbmRleCA0MGVjODlkLi5kZjM4NGVhIDEwMDY0NAotLS0g
YS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5jcHAKKysrIGIvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0RPTUJpbmRpbmcuY3BwCkBAIC00Myw2ICs0Myw3IEBACiAjaW5jbHVkZSAiUmFu
Z2VFeGNlcHRpb24uaCIKICNpbmNsdWRlICJTY3JpcHRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAi
WE1MSHR0cFJlcXVlc3RFeGNlcHRpb24uaCIKKyNpbmNsdWRlIDxydW50aW1lL0Vycm9yLmg+CiAj
aW5jbHVkZSA8cnVudGltZS9KU0Z1bmN0aW9uLmg+CiAjaW5jbHVkZSA8cnVudGltZS9Qcm90b3R5
cGVGdW5jdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KQEAgLTYyNCw0ICs2
MjUsMjcgQEAgdm9pZCBjYWNoZURPTUNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYywgY29uc3Qg
Q2xhc3NJbmZvKiBjbGFzc0luZm8sIEpTT2JqZWN0KgogICAgIGNvbnN0cnVjdG9ycy5zZXQoY2xh
c3NJbmZvLCBjb25zdHJ1Y3Rvcik7CiB9CiAKK0pTQzo6SlNPYmplY3QqIHRvSlNTZXF1ZW5jZShF
eGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUsIHVuc2lnbmVkJiBsZW5ndGgpCit7CisgICAg
SlNPYmplY3QqIG9iamVjdCA9IHZhbHVlLmdldE9iamVjdCgpOworICAgIGlmICghb2JqZWN0KSB7
CisgICAgICAgIHRocm93RXJyb3IoZXhlYywgVHlwZUVycm9yKTsKKyAgICAgICAgcmV0dXJuIDA7
CisgICAgfQorICAgIEpTVmFsdWUgbGVuZ3RoVmFsdWUgPSBvYmplY3QtPmdldChleGVjLCBleGVj
LT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoKTsKKyAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkp
CisgICAgICAgIHJldHVybiAwOworCisgICAgaWYgKGxlbmd0aFZhbHVlLmlzVW5kZWZpbmVkT3JO
dWxsKCkpIHsKKyAgICAgICAgdGhyb3dFcnJvcihleGVjLCBUeXBlRXJyb3IpOworICAgICAgICBy
ZXR1cm4gMDsKKyAgICB9CisKKyAgICBsZW5ndGggPSBsZW5ndGhWYWx1ZS50b1VJbnQzMihleGVj
KTsKKyAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiAwOworCisg
ICAgcmV0dXJuIG9iamVjdDsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaCBiL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNET01CaW5kaW5nLmgKaW5kZXggNWFiZDdhNy4uMjY1MDgyYiAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRE9NQmluZGluZy5oCkBAIC0yNzYsNiArMjc2LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
ICAgICAgICByZXR1cm4gdG9KUyhleGVjLCBnbG9iYWxPYmplY3QsIHB0ci5nZXQoKSk7CiAgICAg
fQogCisgICAgLy8gVmFsaWRhdGVzIHRoYXQgdGhlIHBhc3NlZCBvYmplY3QgaXMgYSBzZXF1ZW5j
ZSB0eXBlIHBlciBzZWN0aW9uIDQuMS4xMyBvZiB0aGUgV2ViSURMIHNwZWMuCisgICAgSlNDOjpK
U09iamVjdCogdG9KU1NlcXVlbmNlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCB1bnNp
Z25lZCYpOworCiAgICAgYm9vbCBjaGVja05vZGVTZWN1cml0eShKU0M6OkV4ZWNTdGF0ZSosIE5v
ZGUqKTsKIAogICAgIC8vIEhlbHBlcnMgZm9yIFdpbmRvdywgSGlzdG9yeSwgYW5kIExvY2F0aW9u
IGNsYXNzZXMgdG8gaW1wbGVtZW50IGNyb3NzLWRvbWFpbiBwb2xpY3kuCmRpZmYgLS1naXQgYS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcCBiL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCmluZGV4IDk0MmI5ZmQuLjAwNWE5MmYgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCisrKyBiL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCkBAIC00NSw2ICs0NSw3IEBA
CiAjaW5jbHVkZSAiSlNMb2NhdGlvbi5oIgogI2luY2x1ZGUgIkpTTWVzc2FnZUNoYW5uZWxDb25z
dHJ1Y3Rvci5oIgogI2luY2x1ZGUgIkpTTWVzc2FnZVBvcnQuaCIKKyNpbmNsdWRlICJKU01lc3Nh
Z2VQb3J0Q3VzdG9tLmgiCiAjaW5jbHVkZSAiSlNPcHRpb25Db25zdHJ1Y3Rvci5oIgogCiAjaWYg
RU5BQkxFKFNIQVJFRF9XT1JLRVJTKQpAQCAtODU5LDE0ICs4NjAsMTggQEAgSlNWYWx1ZSBKU0RP
TVdpbmRvdzo6cG9zdE1lc3NhZ2UoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBBcmdMaXN0JiBhcmdz
KQogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIGpzVW5kZWZp
bmVkKCk7CiAKLSAgICBNZXNzYWdlUG9ydCogbWVzc2FnZVBvcnQgPSAoYXJncy5zaXplKCkgPT0g
MikgPyAwIDogdG9NZXNzYWdlUG9ydChhcmdzLmF0KDEpKTsKKyAgICBNZXNzYWdlUG9ydEFycmF5
IG1lc3NhZ2VQb3J0czsKKyAgICBpZiAoYXJncy5zaXplKCkgPiAyKQorICAgICAgICBmaWxsTWVz
c2FnZVBvcnRBcnJheShleGVjLCBhcmdzLmF0KDEpLCBtZXNzYWdlUG9ydHMpOworICAgIGlmIChl
eGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAKICAg
ICBTdHJpbmcgdGFyZ2V0T3JpZ2luID0gdmFsdWVUb1N0cmluZ1dpdGhVbmRlZmluZWRPck51bGxD
aGVjayhleGVjLCBhcmdzLmF0KChhcmdzLnNpemUoKSA9PSAyKSA/IDEgOiAyKSk7CiAgICAgaWYg
KGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKIAog
ICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIHdpbmRvdy0+cG9zdE1lc3NhZ2UobWVzc2Fn
ZSwgbWVzc2FnZVBvcnQsIHRhcmdldE9yaWdpbiwgc291cmNlLCBlYyk7CisgICAgd2luZG93LT5w
b3N0TWVzc2FnZShtZXNzYWdlLCAmbWVzc2FnZVBvcnRzLCB0YXJnZXRPcmlnaW4sIHNvdXJjZSwg
ZWMpOwogICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBlYyk7CiAKICAgICByZXR1cm4ganNVbmRl
ZmluZWQoKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEZWRpY2F0ZWRXb3Jr
ZXJDb250ZXh0Q3VzdG9tLmNwcCBiL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEZWRpY2F0ZWRXb3Jr
ZXJDb250ZXh0Q3VzdG9tLmNwcAppbmRleCA2NTdmOWIzLi5hNjMzYTQyIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGVkaWNhdGVkV29ya2VyQ29udGV4dEN1c3RvbS5jcHAKKysr
IGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RlZGljYXRlZFdvcmtlckNvbnRleHRDdXN0b20uY3Bw
CkBAIC0zNSw2ICszNSw5IEBACiAKICNpbmNsdWRlICJKU0RlZGljYXRlZFdvcmtlckNvbnRleHQu
aCIKIAorI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgorI2luY2x1ZGUgIkpTTWVzc2FnZVBvcnRD
dXN0b20uaCIKKwogdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpA
QCAtNDYsNiArNDksMTEgQEAgdm9pZCBKU0RlZGljYXRlZFdvcmtlckNvbnRleHQ6Om1hcmtDaGls
ZHJlbihNYXJrU3RhY2smIG1hcmtTdGFjaykKICAgICBtYXJrSWZOb3ROdWxsKG1hcmtTdGFjaywg
aW1wbCgpLT5vbm1lc3NhZ2UoKSk7CiB9CiAKK0pTQzo6SlNWYWx1ZSBKU0RlZGljYXRlZFdvcmtl
ckNvbnRleHQ6OnBvc3RNZXNzYWdlKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBjb25zdCBKU0M6OkFy
Z0xpc3QmIGFyZ3MpCit7CisgICAgcmV0dXJuIGhhbmRsZVBvc3RNZXNzYWdlKGV4ZWMsIGFyZ3Ms
IGltcGwoKSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJM
RShXT1JLRVJTKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01lc3NhZ2VFdmVu
dEN1c3RvbS5jcHAgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVzc2FnZUV2ZW50Q3VzdG9tLmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YzYxYzA0Ci0tLSAvZGV2L251
bGwKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01lc3NhZ2VFdmVudEN1c3RvbS5jcHAKQEAg
LTAsMCArMSw3OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICog
bWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1l
IG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICog
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
UyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP
UFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAq
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJKU01lc3NhZ2VFdmVu
dC5oIgorCisjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCisjaW5jbHVkZSAiSlNET01XaW5kb3cu
aCIKKyNpbmNsdWRlICJKU0V2ZW50VGFyZ2V0LmgiCisjaW5jbHVkZSAiSlNNZXNzYWdlUG9ydEN1
c3RvbS5oIgorI2luY2x1ZGUgIk1lc3NhZ2VFdmVudC5oIgorI2luY2x1ZGUgPHJ1bnRpbWUvSlNB
cnJheS5oPgorCit1c2luZyBuYW1lc3BhY2UgSlNDOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K0pTVmFsdWUgSlNNZXNzYWdlRXZlbnQ6OnBvcnRzKEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKK3sK
KyAgICBNZXNzYWdlUG9ydEFycmF5KiBwb3J0cyA9IHN0YXRpY19jYXN0PE1lc3NhZ2VFdmVudCo+
KGltcGwoKSktPnBvcnRzKCk7CisgICAgaWYgKCFwb3J0cyB8fCBwb3J0cy0+aXNFbXB0eSgpKQor
ICAgICAgICByZXR1cm4ganNOdWxsKCk7CisKKyAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBsaXN0
OworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcG9ydHMtPnNpemUoKTsgaSsrKQorICAgICAg
ICBsaXN0LmFwcGVuZCh0b0pTKGV4ZWMsIGdsb2JhbE9iamVjdCgpLCAoKnBvcnRzKVtpXS5nZXQo
KSkpOworICAgIHJldHVybiBjb25zdHJ1Y3RBcnJheShleGVjLCBsaXN0KTsKK30KKworSlNDOjpK
U1ZhbHVlIEpTTWVzc2FnZUV2ZW50Ojppbml0TWVzc2FnZUV2ZW50KEpTQzo6RXhlY1N0YXRlKiBl
eGVjLCBjb25zdCBKU0M6OkFyZ0xpc3QmIGFyZ3MpCit7CisgICAgY29uc3QgVVN0cmluZyYgdHlw
ZUFyZyA9IGFyZ3MuYXQoMCkudG9TdHJpbmcoZXhlYyk7CisgICAgYm9vbCBjYW5CdWJibGVBcmcg
PSBhcmdzLmF0KDEpLnRvQm9vbGVhbihleGVjKTsKKyAgICBib29sIGNhbmNlbGFibGVBcmcgPSBh
cmdzLmF0KDIpLnRvQm9vbGVhbihleGVjKTsKKyAgICBjb25zdCBVU3RyaW5nJiBkYXRhQXJnID0g
YXJncy5hdCgzKS50b1N0cmluZyhleGVjKTsKKyAgICBjb25zdCBVU3RyaW5nJiBvcmlnaW5Bcmcg
PSBhcmdzLmF0KDQpLnRvU3RyaW5nKGV4ZWMpOworICAgIGNvbnN0IFVTdHJpbmcmIGxhc3RFdmVu
dElkQXJnID0gYXJncy5hdCg1KS50b1N0cmluZyhleGVjKTsKKyAgICBET01XaW5kb3cqIHNvdXJj
ZUFyZyA9IHRvRE9NV2luZG93KGFyZ3MuYXQoNikpOworICAgIE93blB0cjxNZXNzYWdlUG9ydEFy
cmF5PiBtZXNzYWdlUG9ydHM7CisgICAgaWYgKCFhcmdzLmF0KDcpLmlzVW5kZWZpbmVkT3JOdWxs
KCkpIHsKKyAgICAgICAgbWVzc2FnZVBvcnRzID0gbmV3IE1lc3NhZ2VQb3J0QXJyYXkoKTsKKyAg
ICAgICAgZmlsbE1lc3NhZ2VQb3J0QXJyYXkoZXhlYywgYXJncy5hdCg3KSwgKm1lc3NhZ2VQb3J0
cyk7CisgICAgICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgICAgIHJldHVy
biBqc1VuZGVmaW5lZCgpOworICAgIH0KKworICAgIE1lc3NhZ2VFdmVudCogZXZlbnQgPSBzdGF0
aWNfY2FzdDxNZXNzYWdlRXZlbnQqPih0aGlzLT5pbXBsKCkpOworICAgIGV2ZW50LT5pbml0TWVz
c2FnZUV2ZW50KHR5cGVBcmcsIGNhbkJ1YmJsZUFyZywgY2FuY2VsYWJsZUFyZywgZGF0YUFyZywg
b3JpZ2luQXJnLCBsYXN0RXZlbnRJZEFyZywgc291cmNlQXJnLCBtZXNzYWdlUG9ydHMucmVsZWFz
ZSgpKTsKKyAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01lc3NhZ2VQb3J0Q3VzdG9t
LmNwcCBiL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNZXNzYWdlUG9ydEN1c3RvbS5jcHAKaW5kZXgg
YzMzMTZjNS4uMmJlNDI1NSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01lc3Nh
Z2VQb3J0Q3VzdG9tLmNwcAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVzc2FnZVBvcnRD
dXN0b20uY3BwCkBAIC0yOCwxMSArMjgsMTQgQEAKIAogI2luY2x1ZGUgIkF0b21pY1N0cmluZy5o
IgogI2luY2x1ZGUgIkV2ZW50LmgiCisjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgogI2luY2x1
ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiSlNET01HbG9iYWxPYmplY3QuaCIKICNpbmNsdWRlICJK
U0V2ZW50LmgiCiAjaW5jbHVkZSAiSlNFdmVudExpc3RlbmVyLmgiCisjaW5jbHVkZSAiSlNNZXNz
YWdlUG9ydEN1c3RvbS5oIgogI2luY2x1ZGUgIk1lc3NhZ2VQb3J0LmgiCisjaW5jbHVkZSA8cnVu
dGltZS9FcnJvci5oPgogCiB1c2luZyBuYW1lc3BhY2UgSlNDOwogCkBAIC04NCw0ICs4Nyw0NSBA
QCBKU1ZhbHVlIEpTTWVzc2FnZVBvcnQ6OnJlbW92ZUV2ZW50TGlzdGVuZXIoRXhlY1N0YXRlKiBl
eGVjLCBjb25zdCBBcmdMaXN0JiBhcmdzKQogICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogfQog
CitKU0M6OkpTVmFsdWUgSlNNZXNzYWdlUG9ydDo6cG9zdE1lc3NhZ2UoSlNDOjpFeGVjU3RhdGUq
IGV4ZWMsIGNvbnN0IEpTQzo6QXJnTGlzdCYgYXJncykKK3sKKyAgICByZXR1cm4gaGFuZGxlUG9z
dE1lc3NhZ2UoZXhlYywgYXJncywgaW1wbCgpKTsKK30KKwordm9pZCBmaWxsTWVzc2FnZVBvcnRB
cnJheShKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNDOjpKU1ZhbHVlIHZhbHVlLCBNZXNzYWdlUG9y
dEFycmF5JiBwb3J0QXJyYXkpCit7CisgICAgLy8gQ29udmVydCBmcm9tIHRoZSBwYXNzZWQtaW4g
SlMgYXJyYXktbGlrZSBvYmplY3QgdG8gYSBNZXNzYWdlUG9ydEFycmF5LgorICAgIC8vIEFsc28g
dmFsaWRhdGVzIHRoZSBlbGVtZW50cyBwZXIgc2VjdGlvbnMgNC4xLjEzIGFuZCA0LjEuMTUgb2Yg
dGhlIFdlYklETCBzcGVjIGFuZCBzZWN0aW9uIDguMy4zIG9mIHRoZSBIVE1MNSBzcGVjLgorICAg
IGlmICh2YWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgpKSB7CisgICAgICAgIHBvcnRBcnJheS5yZXNp
emUoMCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvLyBWYWxpZGF0aW9uIG9mIHNl
cXVlbmNlIHR5cGVzLCBwZXIgV2ViSURMIHNwZWMgNC4xLjEzLgorICAgIHVuc2lnbmVkIGxlbmd0
aDsKKyAgICBKU09iamVjdCogb2JqZWN0ID0gdG9KU1NlcXVlbmNlKGV4ZWMsIHZhbHVlLCBsZW5n
dGgpOworICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgcG9ydEFycmF5LnJlc2l6ZShsZW5ndGgpOworICAgIGZvciAodW5zaWduZWQgaSA9IDAgOyBp
IDwgbGVuZ3RoOyArK2kpIHsKKyAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9IG9iamVjdC0+Z2V0KGV4
ZWMsIGkpOworICAgICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIC8vIFZhbGlkYXRpb24gb2Ygbm9uLW51bGwgb2JqZWN0cywgcGVyIEhU
TUw1IHNwZWMgOC4zLjMuCisgICAgICAgIGlmICh2YWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgpKSB7
CisgICAgICAgICAgICBzZXRET01FeGNlcHRpb24oZXhlYywgSU5WQUxJRF9TVEFURV9FUlIpOwor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgLy8gVmFsaWRhdGlvbiBv
ZiBPYmplY3RzIGltcGxlbWVudGluZyBhbiBpbnRlcmZhY2UsIHBlciBXZWJJREwgc3BlYyA0LjEu
MTUuCisgICAgICAgIFJlZlB0cjxNZXNzYWdlUG9ydD4gcG9ydCA9IHRvTWVzc2FnZVBvcnQodmFs
dWUpOworICAgICAgICBpZiAoIXBvcnQpIHsKKyAgICAgICAgICAgIHRocm93RXJyb3IoZXhlYywg
VHlwZUVycm9yKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBwb3J0
QXJyYXlbaV0gPSBwb3J0LnJlbGVhc2UoKTsKKyAgICB9Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNZXNzYWdlUG9ydEN1c3Rv
bS5oIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01lc3NhZ2VQb3J0Q3VzdG9tLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2U5MDk0MwotLS0gL2Rldi9udWxsCisrKyBiL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNNZXNzYWdlUG9ydEN1c3RvbS5oCkBAIC0wLDAgKzEsNjUgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhl
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQor
ICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5j
LiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUg
d2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJV
VE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9X
TkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkK
KyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aWZuZGVmIEpTTWVzc2FnZVBvcnRDdXN0b21faAorI2RlZmluZSBKU01lc3NhZ2VQb3J0Q3VzdG9t
X2gKKworI2luY2x1ZGUgIk1lc3NhZ2VQb3J0LmgiCisjaW5jbHVkZSA8cnVudGltZS9KU1ZhbHVl
Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworICAgIHR5cGVkZWYgaW50IEV4Y2VwdGlvbkNv
ZGU7CisKKyAgICBjbGFzcyBTdHJpbmc7CisKKyAgICAvLyBIZWxwZXIgZnVuY3Rpb24gd2hpY2gg
cHVsbHMgdGhlIHZhbHVlcyBvdXQgb2YgYSBKUyBzZXF1ZW5jZSBhbmQgaW50byBhIE1lc3NhZ2VQ
b3J0QXJyYXkuCisgICAgLy8gQWxzbyB2YWxpZGF0ZXMgdGhlIGVsZW1lbnRzIHBlciBzZWN0aW9u
cyA0LjEuMTMgYW5kIDQuMS4xNSBvZiB0aGUgV2ViSURMIHNwZWMgYW5kIHNlY3Rpb24gOC4zLjMg
b2YgdGhlIEhUTUw1IHNwZWMuCisgICAgLy8gTWF5IGdlbmVyYXRlIGFuIGV4Y2VwdGlvbiB2aWEg
dGhlIHBhc3NlZCBFeGVjU3RhdGUuCisgICAgdm9pZCBmaWxsTWVzc2FnZVBvcnRBcnJheShKU0M6
OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSwgTWVzc2FnZVBvcnRBcnJheSYpOworCisgICAgLy8g
SGVscGVyIGZ1bmN0aW9uIHRvIGNvbnZlcnQgZnJvbSBKUyBwb3N0TWVzc2FnZSBhcmd1bWVudHMg
dG8gV2ViQ29yZSBwb3N0TWVzc2FnZSBhcmd1bWVudHMuCisgICAgdGVtcGxhdGUgPHR5cGVuYW1l
IFQ+CisgICAgaW5saW5lIEpTQzo6SlNWYWx1ZSBoYW5kbGVQb3N0TWVzc2FnZShKU0M6OkV4ZWNT
dGF0ZSogZXhlYywgY29uc3QgSlNDOjpBcmdMaXN0JiBhcmdzLCBUKiBpbXBsKQorICAgIHsKKyAg
ICAgICAgU3RyaW5nIG1lc3NhZ2UgPSBhcmdzLmF0KDApLnRvU3RyaW5nKGV4ZWMpOworICAgICAg
ICBNZXNzYWdlUG9ydEFycmF5IHBvcnRBcnJheTsKKyAgICAgICAgZmlsbE1lc3NhZ2VQb3J0QXJy
YXkoZXhlYywgYXJncy5hdCgxKSwgcG9ydEFycmF5KTsKKyAgICAgICAgaWYgKGV4ZWMtPmhhZEV4
Y2VwdGlvbigpKQorICAgICAgICAgICAgcmV0dXJuIEpTQzo6anNVbmRlZmluZWQoKTsKKworICAg
ICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICAgICAgaW1wbC0+cG9zdE1lc3NhZ2UobWVz
c2FnZSwgJnBvcnRBcnJheSwgZWMpOworICAgICAgICBzZXRET01FeGNlcHRpb24oZXhlYywgZWMp
OworICAgICAgICByZXR1cm4gSlNDOjpqc1VuZGVmaW5lZCgpOworICAgIH0KKworfQorI2VuZGlm
IC8vIEpTTWVzc2FnZVBvcnRDdXN0b21faApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU1dvcmtlckN1c3RvbS5jcHAgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyQ3VzdG9t
LmNwcAppbmRleCBmNWMzOTRiLi5hNDJhMDQzIDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTV29ya2VyQ3VzdG9tLmNwcAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2Vy
Q3VzdG9tLmNwcApAQCAtMzAsMTIgKzMwLDEzIEBACiAjaW5jbHVkZSAiSlNXb3JrZXIuaCIKIAog
I2luY2x1ZGUgIkpTRE9NR2xvYmFsT2JqZWN0LmgiCisjaW5jbHVkZSAiSlNNZXNzYWdlUG9ydEN1
c3RvbS5oIgogI2luY2x1ZGUgIldvcmtlci5oIgogCiB1c2luZyBuYW1lc3BhY2UgSlNDOwogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7Ci0gICAgCisKIHZvaWQgSlNXb3JrZXI6Om1hcmtDaGlsZHJlbihN
YXJrU3RhY2smIG1hcmtTdGFjaykKIHsKICAgICBCYXNlOjptYXJrQ2hpbGRyZW4obWFya1N0YWNr
KTsKQEAgLTQzLDYgKzQ0LDExIEBAIHZvaWQgSlNXb3JrZXI6Om1hcmtDaGlsZHJlbihNYXJrU3Rh
Y2smIG1hcmtTdGFjaykKICAgICBtYXJrSWZOb3ROdWxsKG1hcmtTdGFjaywgc3RhdGljX2Nhc3Q8
V29ya2VyKj4oaW1wbCgpKS0+b25tZXNzYWdlKCkpOwogfQogCitKU0M6OkpTVmFsdWUgSlNXb3Jr
ZXI6OnBvc3RNZXNzYWdlKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBjb25zdCBKU0M6OkFyZ0xpc3Qm
IGFyZ3MpCit7CisgICAgcmV0dXJuIGhhbmRsZVBvc3RNZXNzYWdlKGV4ZWMsIGFyZ3MsIGltcGwo
KSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShXT1JL
RVJTKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20vTWVzc2FnZUV2ZW50LmNwcCBiL1dlYkNvcmUv
ZG9tL01lc3NhZ2VFdmVudC5jcHAKaW5kZXggMTI2OGEwNC4uMzI5MmIzNCAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9kb20vTWVzc2FnZUV2ZW50LmNwcAorKysgYi9XZWJDb3JlL2RvbS9NZXNzYWdlRXZl
bnQuY3BwCkBAIC02NSw3ICs2NSw3IEBAIHZvaWQgTWVzc2FnZUV2ZW50Ojppbml0TWVzc2FnZUV2
ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvCiAgICAgbV9w
b3J0cyA9IHBvcnRzOwogfQogCi0vLyBGSVhNRTogcmVtb3ZlIHRoaXMgd2hlbiB3ZSB1cGRhdGUg
dGhlIEpTIGJpbmRpbmdzIChidWcgIzI4NDYwKS4KKy8vIEZJWE1FOiByZW1vdmUgdGhpcyB3aGVu
IHdlIHVwZGF0ZSB0aGUgT2JqQyBiaW5kaW5ncyAoYnVnICMyODc3NCkuCiBNZXNzYWdlUG9ydCog
TWVzc2FnZUV2ZW50OjptZXNzYWdlUG9ydCgpCiB7CiAgICAgaWYgKCFtX3BvcnRzKQpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9kb20vTWVzc2FnZUV2ZW50LmggYi9XZWJDb3JlL2RvbS9NZXNzYWdlRXZl
bnQuaAppbmRleCAxMWEzNDBhLi43ZDk0Njg5IDEwMDY0NAotLS0gYS9XZWJDb3JlL2RvbS9NZXNz
YWdlRXZlbnQuaAorKysgYi9XZWJDb3JlL2RvbS9NZXNzYWdlRXZlbnQuaApAQCAtMjgsNiArMjgs
NyBAQAogI2lmbmRlZiBNZXNzYWdlRXZlbnRfaAogI2RlZmluZSBNZXNzYWdlRXZlbnRfaAogCisj
aW5jbHVkZSAiRE9NV2luZG93LmgiCiAjaW5jbHVkZSAiRXZlbnQuaCIKICNpbmNsdWRlICJNZXNz
YWdlUG9ydC5oIgogCkBAIC01MywxMSArNTQsMTEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
ICAgICBjb25zdCBTdHJpbmcmIG9yaWdpbigpIGNvbnN0IHsgcmV0dXJuIG1fb3JpZ2luOyB9CiAg
ICAgICAgIGNvbnN0IFN0cmluZyYgbGFzdEV2ZW50SWQoKSBjb25zdCB7IHJldHVybiBtX2xhc3RF
dmVudElkOyB9CiAgICAgICAgIERPTVdpbmRvdyogc291cmNlKCkgY29uc3QgeyByZXR1cm4gbV9z
b3VyY2UuZ2V0KCk7IH0KLSAgICAgICAgY29uc3QgTWVzc2FnZVBvcnRBcnJheSYgcG9ydHMoKSBj
b25zdCB7IHJldHVybiAqKG1fcG9ydHMuZ2V0KCkpOyB9CisgICAgICAgIE1lc3NhZ2VQb3J0QXJy
YXkqIHBvcnRzKCkgY29uc3QgeyByZXR1cm4gbV9wb3J0cy5nZXQoKTsgfQogCi0gICAgICAgIC8v
IEZJWE1FOiByZW1vdmUgdGhpcyB3aGVuIHdlIHVwZGF0ZSB0aGUgSlMgYmluZGluZ3MgKGJ1ZyAj
Mjg0NjApCisgICAgICAgIC8vIEZJWE1FOiByZW1vdmUgdGhpcyB3aGVuIHdlIHVwZGF0ZSB0aGUg
T2JqQyBiaW5kaW5ncyAoYnVnICMyODc3NCkuCiAgICAgICAgIE1lc3NhZ2VQb3J0KiBtZXNzYWdl
UG9ydCgpOwotICAgICAgICAvLyBGSVhNRTogcmVtb3ZlIHRoaXMgd2hlbiB3ZSB1cGRhdGUgdGhl
IEpTIGJpbmRpbmdzIChidWcgIzI4NDYwKQorICAgICAgICAvLyBGSVhNRTogcmVtb3ZlIHRoaXMg
d2hlbiB3ZSB1cGRhdGUgdGhlIE9iakMgYmluZGluZ3MgKGJ1ZyAjMjg3NzQpLgogICAgICAgICB2
b2lkIGluaXRNZXNzYWdlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1
YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBjb25zdCBTdHJpbmcmIGRhdGEsIGNvbnN0IFN0cmluZyYg
b3JpZ2luLCBjb25zdCBTdHJpbmcmIGxhc3RFdmVudElkLCBET01XaW5kb3cqIHNvdXJjZSwgTWVz
c2FnZVBvcnQqKTsKIAogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNNZXNzYWdlRXZlbnQoKSBjb25z
dDsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL01lc3NhZ2VFdmVudC5pZGwgYi9XZWJDb3JlL2Rv
bS9NZXNzYWdlRXZlbnQuaWRsCmluZGV4IDhlOGYyNzEuLmEzMmNjOTMgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvZG9tL01lc3NhZ2VFdmVudC5pZGwKKysrIGIvV2ViQ29yZS9kb20vTWVzc2FnZUV2ZW50
LmlkbApAQCAtMzUsOSArMzUsMTYgQEAgbW9kdWxlIGV2ZW50cyB7CiAgICAgICAgIHJlYWRvbmx5
IGF0dHJpYnV0ZSBET01TdHJpbmcgb3JpZ2luOwogICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUg
RE9NU3RyaW5nIGxhc3RFdmVudElkOwogICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NV2lu
ZG93IHNvdXJjZTsKKyNpZiBkZWZpbmVkKExBTkdVQUdFX0pBVkFTQ1JJUFQpICYmIExBTkdVQUdF
X0pBVkFTQ1JJUFQKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFtDdXN0b21HZXR0ZXJdIEFy
cmF5IHBvcnRzOworCisgICAgICAgIFtDdXN0b21dIHZvaWQgaW5pdE1lc3NhZ2VFdmVudChpbiBE
T01TdHJpbmcgdHlwZUFyZywgaW4gYm9vbGVhbiBjYW5CdWJibGVBcmcsIGluIGJvb2xlYW4gY2Fu
Y2VsYWJsZUFyZywgaW4gRE9NU3RyaW5nIGRhdGFBcmcsIGluIERPTVN0cmluZyBvcmlnaW5Bcmcs
IGluIERPTVN0cmluZyBsYXN0RXZlbnRJZEFyZywgaW4gRE9NV2luZG93IHNvdXJjZUFyZywgaW4g
QXJyYXkgbWVzc2FnZVBvcnRzKTsKKyNlbHNlCisgICAgICAgIC8vIFRoZXJlJ3Mgbm8gZ29vZCB3
YXkgdG8gZXhwb3NlIGFuIGFycmF5IHZpYSB0aGUgT2JqQyBiaW5kaW5ncywgc28gZm9yIG5vdyBq
dXN0IGV4cG9zZSBhIHNpbmdsZSBwb3J0LgogICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgTWVz
c2FnZVBvcnQgbWVzc2FnZVBvcnQ7Ci0gICAgICAgIAorCiAgICAgICAgIHZvaWQgaW5pdE1lc3Nh
Z2VFdmVudChpbiBET01TdHJpbmcgdHlwZUFyZywgaW4gYm9vbGVhbiBjYW5CdWJibGVBcmcsIGlu
IGJvb2xlYW4gY2FuY2VsYWJsZUFyZywgaW4gRE9NU3RyaW5nIGRhdGFBcmcsIGluIERPTVN0cmlu
ZyBvcmlnaW5BcmcsIGluIERPTVN0cmluZyBsYXN0RXZlbnRJZEFyZywgaW4gRE9NV2luZG93IHNv
dXJjZUFyZywgaW4gTWVzc2FnZVBvcnQgbWVzc2FnZVBvcnQpOworI2VuZGlmCiAKICAgICB9Owog
CmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9NZXNzYWdlUG9ydC5jcHAgYi9XZWJDb3JlL2RvbS9N
ZXNzYWdlUG9ydC5jcHAKaW5kZXggZWEwZDNlNy4uNjUwMTI1NiAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9kb20vTWVzc2FnZVBvcnQuY3BwCisrKyBiL1dlYkNvcmUvZG9tL01lc3NhZ2VQb3J0LmNwcApA
QCAtNTUsNyArNTUsNyBAQCBNZXNzYWdlUG9ydDo6fk1lc3NhZ2VQb3J0KCkKICAgICAgICAgbV9z
Y3JpcHRFeGVjdXRpb25Db250ZXh0LT5kZXN0cm95ZWRNZXNzYWdlUG9ydCh0aGlzKTsKIH0KIAot
Ly8gRklYTUU6IHJlbW92ZSB0aGlzIHdoZW4gd2UgdXBkYXRlIHRoZSBKUyBiaW5kaW5ncyAoYnVn
ICMyODQ2MCkuCisvLyBGSVhNRTogcmVtb3ZlIHRoaXMgd2hlbiB3ZSB1cGRhdGUgdGhlIE9iakMg
YmluZGluZ3MgKGJ1ZyAjMjg3NzQpLgogdm9pZCBNZXNzYWdlUG9ydDo6cG9zdE1lc3NhZ2UoY29u
c3QgU3RyaW5nJiBtZXNzYWdlLCBNZXNzYWdlUG9ydCogcG9ydCwgRXhjZXB0aW9uQ29kZSYgZWMp
CiB7CiAgICAgTWVzc2FnZVBvcnRBcnJheSBwb3J0czsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9t
L01lc3NhZ2VQb3J0LmggYi9XZWJDb3JlL2RvbS9NZXNzYWdlUG9ydC5oCmluZGV4IGNlYmJjZmIu
LmQwNDJiYzEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL01lc3NhZ2VQb3J0LmgKKysrIGIvV2Vi
Q29yZS9kb20vTWVzc2FnZVBvcnQuaApAQCAtNTgsNyArNTgsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKICAgICAgICAgdm9pZCBwb3N0TWVzc2FnZShjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIEV4
Y2VwdGlvbkNvZGUmKTsKICAgICAgICAgdm9pZCBwb3N0TWVzc2FnZShjb25zdCBTdHJpbmcmIG1l
c3NhZ2UsIGNvbnN0IE1lc3NhZ2VQb3J0QXJyYXkqLCBFeGNlcHRpb25Db2RlJik7Ci0gICAgICAg
IC8vIEZJWE1FOiByZW1vdmUgdGhpcyB3aGVuIHdlIHVwZGF0ZSB0aGUgSlMgYmluZGluZ3MgKGJ1
ZyAjMjg0NjApLgorICAgICAgICAvLyBGSVhNRTogcmVtb3ZlIHRoaXMgd2hlbiB3ZSB1cGRhdGUg
dGhlIE9iakMgYmluZGluZ3MgKGJ1ZyAjMjg3NzQpLgogICAgICAgICB2b2lkIHBvc3RNZXNzYWdl
KGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgTWVzc2FnZVBvcnQqLCBFeGNlcHRpb25Db2RlJik7CiAK
ICAgICAgICAgdm9pZCBzdGFydCgpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20vTWVzc2FnZVBv
cnQuaWRsIGIvV2ViQ29yZS9kb20vTWVzc2FnZVBvcnQuaWRsCmluZGV4IGU1ZjlhZDEuLjExYWI3
NTcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL01lc3NhZ2VQb3J0LmlkbAorKysgYi9XZWJDb3Jl
L2RvbS9NZXNzYWdlUG9ydC5pZGwKQEAgLTM0LDcgKzM0LDcgQEAgbW9kdWxlIGV2ZW50cyB7CiAv
LyBXZSBuZWVkIHRvIGhhdmUgc29tZXRoaW5nIGFzIGFuIE9iakMgYmluZGluZywgYmVjYXVzZSBN
ZXNzYWdlUG9ydCBpcyB1c2VkIGluIE1lc3NhZ2VFdmVudCwgd2hpY2ggYWxyZWFkeSBoYXMgb25l
LAogLy8gYnV0IHdlIGRvbid0IHdhbnQgdG8gYWN0dWFsbHkgZXhwb3NlIHRoZSBBUEkgd2hpbGUg
aXQgaXMgaW4gZmx1eC4KICNpZiBkZWZpbmVkKExBTkdVQUdFX0pBVkFTQ1JJUFQpICYmIExBTkdV
QUdFX0pBVkFTQ1JJUFQKLSAgICAgICAgdm9pZCBwb3N0TWVzc2FnZShpbiBET01TdHJpbmcgbWVz
c2FnZSwgaW4gW09wdGlvbmFsXSBNZXNzYWdlUG9ydCBtZXNzYWdlUG9ydCkKKyAgICAgICAgW0N1
c3RvbV0gdm9pZCBwb3N0TWVzc2FnZShpbiBET01TdHJpbmcgbWVzc2FnZSwgaW4gW09wdGlvbmFs
XSBBcnJheSBtZXNzYWdlUG9ydHMpCiAgICAgICAgICAgICByYWlzZXMoRE9NRXhjZXB0aW9uKTsK
ICAgICAgICAgdm9pZCBzdGFydCgpOwogICAgICAgICB2b2lkIGNsb3NlKCk7CmRpZmYgLS1naXQg
YS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmggYi9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmgKaW5k
ZXggODAwZDg2Zi4uZGI0ZWRkYSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5o
CisrKyBiL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaApAQCAtMjA4LDcgKzIwOCw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICNlbmRpZgogCiAgICAgICAgIHZvaWQgcG9zdE1lc3NhZ2UoY29uc3Qg
U3RyaW5nJiBtZXNzYWdlLCBjb25zdCBNZXNzYWdlUG9ydEFycmF5KiwgY29uc3QgU3RyaW5nJiB0
YXJnZXRPcmlnaW4sIERPTVdpbmRvdyogc291cmNlLCBFeGNlcHRpb25Db2RlJik7Ci0gICAgICAg
IC8vIEZJWE1FOiByZW1vdmUgdGhpcyB3aGVuIHdlIHVwZGF0ZSB0aGUgSlMgYmluZGluZ3MgKGJ1
ZyAjMjg0NjApLgorICAgICAgICAvLyBGSVhNRTogcmVtb3ZlIHRoaXMgd2hlbiB3ZSB1cGRhdGUg
dGhlIE9iakMgYmluZGluZ3MgKGJ1ZyAjMjg3NzQpLgogICAgICAgICB2b2lkIHBvc3RNZXNzYWdl
KGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgTWVzc2FnZVBvcnQqLCBjb25zdCBTdHJpbmcmIHRhcmdl
dE9yaWdpbiwgRE9NV2luZG93KiBzb3VyY2UsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICAgICAgdm9p
ZCBwb3N0TWVzc2FnZVRpbWVyRmlyZWQoUG9zdE1lc3NhZ2VUaW1lciopOwogCmRpZmYgLS1naXQg
YS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmlkbCBiL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRs
CmluZGV4IDljOWU0ODEuLjZjYTI4Y2UgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9ET01XaW5k
b3cuaWRsCisrKyBiL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsCkBAIC0xNzMsOCArMTczLDE0
IEBAIG1vZHVsZSB3aW5kb3cgewogICAgICAgICAgICAgICAgICBhdHRyaWJ1dGUgW1JlcGxhY2Vh
YmxlXSBDb25zb2xlIGNvbnNvbGU7CiAKICAgICAgICAgLy8gY3Jvc3MtZG9jdW1lbnQgbWVzc2Fn
aW5nCisjaWYgZGVmaW5lZChMQU5HVUFHRV9KQVZBU0NSSVBUKSAmJiBMQU5HVUFHRV9KQVZBU0NS
SVBUCisgICAgICAgIFtEb05vdENoZWNrRG9tYWluU2VjdXJpdHksIEN1c3RvbV0gdm9pZCBwb3N0
TWVzc2FnZShpbiBET01TdHJpbmcgbWVzc2FnZSwgaW4gW09wdGlvbmFsXSBBcnJheSBtZXNzYWdl
UG9ydHMsIGluIERPTVN0cmluZyB0YXJnZXRPcmlnaW4pCisgICAgICAgICAgICByYWlzZXMoRE9N
RXhjZXB0aW9uKTsKKyNlbHNlCisgICAgICAgIC8vIFRoZXJlJ3Mgbm8gZ29vZCB3YXkgdG8gZXhw
b3NlIGFuIGFycmF5IHZpYSB0aGUgT2JqQyBiaW5kaW5ncywgc28gZm9yIG5vdyBqdXN0IGFsbG93
IHBhc3NpbmcgaW4gYSBzaW5nbGUgcG9ydC4KICAgICAgICAgW0RvTm90Q2hlY2tEb21haW5TZWN1
cml0eSwgQ3VzdG9tXSB2b2lkIHBvc3RNZXNzYWdlKGluIERPTVN0cmluZyBtZXNzYWdlLCBpbiBb
T3B0aW9uYWxdIE1lc3NhZ2VQb3J0IG1lc3NhZ2VQb3J0LCBpbiBET01TdHJpbmcgdGFyZ2V0T3Jp
Z2luKQogICAgICAgICAgICAgcmFpc2VzKERPTUV4Y2VwdGlvbik7CisjZW5kaWYKIAogICAgICAg
ICAvLyBUaW1lcnMKICAgICAgICAgW0N1c3RvbV0gbG9uZyBzZXRUaW1lb3V0KGluIFRpbWVvdXRI
YW5kbGVyIGhhbmRsZXIsIGluIGxvbmcgdGltZW91dCk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3dv
cmtlcnMvRGVkaWNhdGVkV29ya2VyQ29udGV4dC5jcHAgYi9XZWJDb3JlL3dvcmtlcnMvRGVkaWNh
dGVkV29ya2VyQ29udGV4dC5jcHAKaW5kZXggMWQyNDU0Ny4uOGM1ZWU0NyAxMDA2NDQKLS0tIGEv
V2ViQ29yZS93b3JrZXJzL0RlZGljYXRlZFdvcmtlckNvbnRleHQuY3BwCisrKyBiL1dlYkNvcmUv
d29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJDb250ZXh0LmNwcApAQCAtNDYsNyArNDYsNyBAQCBEZWRp
Y2F0ZWRXb3JrZXJDb250ZXh0OjpEZWRpY2F0ZWRXb3JrZXJDb250ZXh0KGNvbnN0IEtVUkwmIHVy
bCwgY29uc3QgU3RyaW5nJiB1cwogewogfQogCi0vLyBGSVhNRTogcmVtb3ZlIHRoaXMgd2hlbiB3
ZSB1cGRhdGUgdGhlIEpTIGJpbmRpbmdzIChidWcgIzI4NDYwKS4KKy8vIEZJWE1FOiByZW1vdmUg
dGhpcyB3aGVuIHdlIHVwZGF0ZSB0aGUgT2JqQyBiaW5kaW5ncyAoYnVnICMyODc3NCkuCiB2b2lk
IERlZGljYXRlZFdvcmtlckNvbnRleHQ6OnBvc3RNZXNzYWdlKGNvbnN0IFN0cmluZyYgbWVzc2Fn
ZSwgTWVzc2FnZVBvcnQqIHBvcnQsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIE1lc3NhZ2VQ
b3J0QXJyYXkgcG9ydHM7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3dvcmtlcnMvRGVkaWNhdGVkV29y
a2VyQ29udGV4dC5oIGIvV2ViQ29yZS93b3JrZXJzL0RlZGljYXRlZFdvcmtlckNvbnRleHQuaApp
bmRleCBjMjIyYTY2Li4zYmM0YWVlIDEwMDY0NAotLS0gYS9XZWJDb3JlL3dvcmtlcnMvRGVkaWNh
dGVkV29ya2VyQ29udGV4dC5oCisrKyBiL1dlYkNvcmUvd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJD
b250ZXh0LmgKQEAgLTU3LDcgKzU3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2
aXJ0dWFsIERlZGljYXRlZFdvcmtlckNvbnRleHQqIHRvRGVkaWNhdGVkV29ya2VyQ29udGV4dCgp
IHsgcmV0dXJuIHRoaXM7IH0KICAgICAgICAgdm9pZCBwb3N0TWVzc2FnZShjb25zdCBTdHJpbmcm
LCBFeGNlcHRpb25Db2RlJik7CiAgICAgICAgIHZvaWQgcG9zdE1lc3NhZ2UoY29uc3QgU3RyaW5n
JiwgY29uc3QgTWVzc2FnZVBvcnRBcnJheSosIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICAgICAgLy8g
RklYTUU6IHJlbW92ZSB0aGlzIHdoZW4gd2UgdXBkYXRlIHRoZSBKUyBiaW5kaW5ncyAoYnVnICMy
ODQ2MCkuCisgICAgICAgIC8vIEZJWE1FOiByZW1vdmUgdGhpcyB3aGVuIHdlIHVwZGF0ZSB0aGUg
T2JqQyBiaW5kaW5ncyAoYnVnICMyODc3NCkuCiAgICAgICAgIHZvaWQgcG9zdE1lc3NhZ2UoY29u
c3QgU3RyaW5nJiwgTWVzc2FnZVBvcnQqLCBFeGNlcHRpb25Db2RlJik7CiAgICAgICAgIHZvaWQg
c2V0T25tZXNzYWdlKFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gZXZlbnRMaXN0ZW5lcikgeyBt
X29ubWVzc2FnZUxpc3RlbmVyID0gZXZlbnRMaXN0ZW5lcjsgfQogICAgICAgICBFdmVudExpc3Rl
bmVyKiBvbm1lc3NhZ2UoKSBjb25zdCB7IHJldHVybiBtX29ubWVzc2FnZUxpc3RlbmVyLmdldCgp
OyB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL3dvcmtlcnMvRGVkaWNhdGVkV29ya2VyQ29udGV4dC5p
ZGwgYi9XZWJDb3JlL3dvcmtlcnMvRGVkaWNhdGVkV29ya2VyQ29udGV4dC5pZGwKaW5kZXggZWJi
ZWUzMy4uZWYzZWJmZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS93b3JrZXJzL0RlZGljYXRlZFdvcmtl
ckNvbnRleHQuaWRsCisrKyBiL1dlYkNvcmUvd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJDb250ZXh0
LmlkbApAQCAtMzksOCArMzksMTQgQEAgbW9kdWxlIHRocmVhZHMgewogICAgICAgICBOb1N0YXRp
Y1RhYmxlcwogICAgIF0gRGVkaWNhdGVkV29ya2VyQ29udGV4dCA6IFdvcmtlckNvbnRleHQgewog
CisjaWYgZGVmaW5lZChMQU5HVUFHRV9KQVZBU0NSSVBUKSAmJiBMQU5HVUFHRV9KQVZBU0NSSVBU
CisgICAgICAgIFtDdXN0b21dIHZvaWQgcG9zdE1lc3NhZ2UoaW4gRE9NU3RyaW5nIG1lc3NhZ2Us
IGluIFtPcHRpb25hbF0gQXJyYXkgbWVzc2FnZVBvcnRzKQorICAgICAgICAgICAgcmFpc2VzKERP
TUV4Y2VwdGlvbik7CisjZWxzZQorICAgICAgICAvLyBUaGVyZSdzIG5vIGdvb2Qgd2F5IHRvIGV4
cG9zZSBhbiBhcnJheSB2aWEgdGhlIE9iakMgYmluZGluZ3MsIHNvIGZvciBub3cganVzdCBhbGxv
dyBwYXNzaW5nIGluIGEgc2luZ2xlIHBvcnQuCiAgICAgICAgIHZvaWQgcG9zdE1lc3NhZ2UoaW4g
RE9NU3RyaW5nIG1lc3NhZ2UsIGluIFtPcHRpb25hbF0gTWVzc2FnZVBvcnQgbWVzc2FnZVBvcnQp
CiAgICAgICAgICAgICByYWlzZXMoRE9NRXhjZXB0aW9uKTsKKyNlbmRpZgogICAgICAgICAgICAg
ICAgICBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbm1lc3NhZ2U7CiAKICAgICB9OwpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS93b3JrZXJzL1dvcmtlci5jcHAgYi9XZWJDb3JlL3dvcmtlcnMvV29ya2Vy
LmNwcAppbmRleCBlZDc5NzQ2Li45MjJjZDMzIDEwMDY0NAotLS0gYS9XZWJDb3JlL3dvcmtlcnMv
V29ya2VyLmNwcAorKysgYi9XZWJDb3JlL3dvcmtlcnMvV29ya2VyLmNwcApAQCAtNjksNyArNjks
NyBAQCBXb3JrZXI6On5Xb3JrZXIoKQogICAgIG1fY29udGV4dFByb3h5LT53b3JrZXJPYmplY3RE
ZXN0cm95ZWQoKTsKIH0KIAotLy8gRklYTUU6IHJlbW92ZSB0aGlzIHdoZW4gd2UgdXBkYXRlIHRo
ZSBKUyBiaW5kaW5ncyAoYnVnICMyODQ2MCkuCisvLyBGSVhNRTogcmVtb3ZlIHRoaXMgd2hlbiB3
ZSB1cGRhdGUgdGhlIE9iakMgYmluZGluZ3MgKGJ1ZyAjMjg3NzQpLgogdm9pZCBXb3JrZXI6OnBv
c3RNZXNzYWdlKGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgTWVzc2FnZVBvcnQqIHBvcnQsIEV4Y2Vw
dGlvbkNvZGUmIGVjKQogewogICAgIE1lc3NhZ2VQb3J0QXJyYXkgcG9ydHM7CmRpZmYgLS1naXQg
YS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyLmggYi9XZWJDb3JlL3dvcmtlcnMvV29ya2VyLmgKaW5k
ZXggOGI5Y2NmYS4uNmJjMDBjMSAxMDA2NDQKLS0tIGEvV2ViQ29yZS93b3JrZXJzL1dvcmtlci5o
CisrKyBiL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXIuaApAQCAtNTksNyArNTksNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKICAgICAgICAgdm9pZCBwb3N0TWVzc2FnZShjb25zdCBTdHJpbmcmLCBF
eGNlcHRpb25Db2RlJik7CiAgICAgICAgIHZvaWQgcG9zdE1lc3NhZ2UoY29uc3QgU3RyaW5nJiwg
Y29uc3QgTWVzc2FnZVBvcnRBcnJheSosIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICAgICAgLy8gRklY
TUU6IHJlbW92ZSB0aGlzIHdoZW4gd2UgdXBkYXRlIHRoZSBKUyBiaW5kaW5ncyAoYnVnICMyODQ2
MCkuCisgICAgICAgIC8vIEZJWE1FOiByZW1vdmUgdGhpcyB3aGVuIHdlIHVwZGF0ZSB0aGUgT2Jq
QyBiaW5kaW5ncyAoYnVnICMyODc3NCkuCiAgICAgICAgIHZvaWQgcG9zdE1lc3NhZ2UoY29uc3Qg
U3RyaW5nJiBtZXNzYWdlLCBNZXNzYWdlUG9ydCosIEV4Y2VwdGlvbkNvZGUmKTsKIAogICAgICAg
ICB2b2lkIHRlcm1pbmF0ZSgpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS93b3JrZXJzL1dvcmtlci5p
ZGwgYi9XZWJDb3JlL3dvcmtlcnMvV29ya2VyLmlkbAppbmRleCBlNzAxNTIzLi4zYjRhM2ZmIDEw
MDY0NAotLS0gYS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyLmlkbAorKysgYi9XZWJDb3JlL3dvcmtl
cnMvV29ya2VyLmlkbApAQCAtMzQsOCArMzQsMTUgQEAgbW9kdWxlIHRocmVhZHMgewogICAgIF0g
V29ya2VyIDogQWJzdHJhY3RXb3JrZXIgewogCiAgICAgICAgIGF0dHJpYnV0ZSBFdmVudExpc3Rl
bmVyIG9ubWVzc2FnZTsKKworI2lmIGRlZmluZWQoTEFOR1VBR0VfSkFWQVNDUklQVCkgJiYgTEFO
R1VBR0VfSkFWQVNDUklQVAorICAgICAgICBbQ3VzdG9tXSB2b2lkIHBvc3RNZXNzYWdlKGluIERP
TVN0cmluZyBtZXNzYWdlLCBpbiBbT3B0aW9uYWxdIEFycmF5IG1lc3NhZ2VQb3J0cykKKyAgICAg
ICAgICAgIHJhaXNlcyhET01FeGNlcHRpb24pOworI2Vsc2UKKyAgICAgICAgLy8gVGhlcmUncyBu
byBnb29kIHdheSB0byBleHBvc2UgYW4gYXJyYXkgdmlhIHRoZSBPYmpDIGJpbmRpbmdzLCBzbyBm
b3Igbm93IGp1c3QgYWxsb3cgcGFzc2luZyBpbiBhIHNpbmdsZSBwb3J0LgogICAgICAgICB2b2lk
IHBvc3RNZXNzYWdlKGluIERPTVN0cmluZyBtZXNzYWdlLCBpbiBbT3B0aW9uYWxdIE1lc3NhZ2VQ
b3J0IG1lc3NhZ2VQb3J0KQogICAgICAgICAgICAgcmFpc2VzKERPTUV4Y2VwdGlvbik7CisjZW5k
aWYKIAogICAgICAgICB2b2lkIHRlcm1pbmF0ZSgpOwogICAgIH07Cg==
</data>
<flag name="review"
          id="19899"
          type_id="1"
          status="+"
          setter="sam"
    />
          </attachment>
      

    </bug>

</bugzilla>