<?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>166441</bug_id>
          
          <creation_ts>2016-12-22 16:10:10 -0800</creation_ts>
          <short_desc>[WebIDL] Remove custom bindings for WebSQL code</short_desc>
          <delta_ts>2016-12-23 09:09:48 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Sam Weinig">sam</reporter>
          <assigned_to name="Sam Weinig">sam</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1262443</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2016-12-22 16:10:10 -0800</bug_when>
    <thetext>[WebIDL] Remove custom bindings for WebSQL code</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1262463</commentid>
    <comment_count>1</comment_count>
      <attachid>297690</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2016-12-22 17:04:20 -0800</bug_when>
    <thetext>Created attachment 297690
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1262468</commentid>
    <comment_count>2</comment_count>
      <attachid>297690</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-12-22 17:13:31 -0800</bug_when>
    <thetext>Comment on attachment 297690
Patch

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

I probably shouldn’t review before EWS runs, but I did.

&gt; Source/WebCore/Modules/webdatabase/SQLResultSetRowList.cpp:59
&gt; +        auto name = m_columns[i];
&gt; +        auto value = m_result[valuesIndex + i];
&gt; +        
&gt; +        result.set(WTFMove(name), WTFMove(value));

Why use set here instead of add? The only differences are that if multiple entries have the same name, with set, last wins, and with add, first wins. And also add makes *slightly* more efficient code.

Not sure this is easier to read with the local variables. I think this would be good:

    result.add(m_columns[i], m_result[valuesIndex + i]);

&gt; Source/WebCore/Modules/webdatabase/SQLResultSetRowList.h:34
&gt; +#include &lt;wtf/RefCounted.h&gt;

Not needed, because ExceptionOr includes this because Exception includes a String.

&gt; Source/WebCore/Modules/webdatabase/SQLResultSetRowList.h:36
&gt; +#include &lt;wtf/text/WTFString.h&gt;

Ditto.

&gt; Source/WebCore/Modules/webdatabase/SQLTransaction.cpp:87
&gt; +    auto statement = std::make_unique&lt;SQLStatement&gt;(m_database, sqlStatement, arguments ? WTFMove(arguments.value()) : Vector&lt;SQLValue&gt; { }, WTFMove(callback), WTFMove(callbackError), permissions);

Can we write &quot;WTFMove(arguments.value_or(Vector&lt;SQLValue&gt; { }))&quot;. Or does that not work to move? Maybe could even leave out the class name if doing it that way?

&gt; Source/WebCore/inspector/InspectorDatabaseAgent.cpp:88
&gt; +            RefPtr&lt;InspectorValue&gt; inspectorValue = WTF::switchOn(value,

Can we use auto here instead of writing out the type?

&gt; Source/WebCore/platform/sql/SQLiteStatement.cpp:305
&gt; -            return SQLValue();
&gt; +            return SQLValue { nullptr };

Can we leave out the type name here and just use { nullptr }? If so, I think I’d like it slightly better, not sure if you agree.

&gt; Source/WebCore/platform/sql/SQLiteStatement.cpp:307
&gt; +        return SQLValue { nullptr };

Ditto.

&gt; Source/WebCore/platform/sql/SQLiteStatement.cpp:315
&gt; +            return SQLValue { sqlite3_value_double(value) };

Ditto.

&gt; Source/WebCore/platform/sql/SQLiteStatement.cpp:319
&gt; +            return SQLValue { StringImpl::create8BitIfPossible(string) };

Ditto.

&gt; Source/WebCore/platform/sql/SQLiteStatement.cpp:322
&gt; +            return SQLValue { nullptr };

Ditto.

&gt; Source/WebCore/platform/sql/SQLiteStatement.cpp:328
&gt; +    return SQLValue { nullptr };

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1262554</commentid>
    <comment_count>3</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2016-12-23 09:09:48 -0800</bug_when>
    <thetext>Committed r210134: &lt;http://trac.webkit.org/changeset/210134&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>297690</attachid>
            <date>2016-12-22 17:04:20 -0800</date>
            <delta_ts>2016-12-22 17:13:31 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-166441-20161222170316.patch</filename>
            <type>text/plain</type>
            <size>46842</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxMDEyMykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDYyIEBACisyMDE2LTEyLTIyICBTYW0gV2Vp
bmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgW1dlYklETF0gUmVtb3ZlIGN1c3RvbSBi
aW5kaW5ncyBmb3IgV2ViU1FMIGNvZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE2NjQ0MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIC0gUmVwbGFjZSBjdXN0b20gdmFyaWFudCB0eXBlIFNRTFZhbHVlIHdp
dGggYSB0eXBlIGFsaWFzIG9mIGEgVmFyaWFudC4KKyAgICAgICAgLSBVc2UgdGhlIG5ld2x5IHJl
cHJlc2VudGFibGUgU1FMVmFsdWUgdG8gcmVtb3ZlIGN1c3RvbSBiaW5kaW5ncyBmb3IgCisgICAg
ICAgICAgU1FMUmVzdWx0U2V0Um93TGlzdDo6aXRlbSBhbmQgU1FMVHJhbnNhY3Rpb246OmV4ZWN1
dGVTcWwuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYmluZGluZ3MvanMvSlNCaW5kaW5n
c0FsbEluT25lLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1NRTFJlc3VsdFNldFJvd0xp
c3RDdXN0b20uY3BwOiBSZW1vdmVkLgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTU1FMVHJhbnNh
Y3Rpb25DdXN0b20uY3BwOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL3NxbC9TUUxWYWx1
ZS5jcHA6IFJlbW92ZWQuCisgICAgICAgIFJlbW92ZSBmaWxlcy4KKworICAgICAgICAqIE1vZHVs
ZXMvd2ViZGF0YWJhc2UvU1FMUmVzdWx0U2V0Um93TGlzdC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTUUxSZXN1bHRTZXRSb3dMaXN0OjpsZW5ndGgpOgorICAgICAgICAoV2ViQ29yZTo6U1FMUmVz
dWx0U2V0Um93TGlzdDo6aXRlbSk6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxS
ZXN1bHRTZXRSb3dMaXN0Lmg6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxSZXN1
bHRTZXRSb3dMaXN0LmlkbDoKKyAgICAgICAgU2luayB0aGUgaW1wbGVtZW50YXRpb24gb2YgaXRl
bSgpIGludG8gdGhlIGltcGxlbWVudGF0aW9uLiBVc2UgYQorICAgICAgICByZWNvcmQgdHlwZSB0
byBicmlkZ2UgdG8gamF2YXNjcmlwdC4KKworICAgICAgICAqIE1vZHVsZXMvd2ViZGF0YWJhc2Uv
U1FMU3RhdGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNRTFN0YXRlbWVudDo6U1FMU3Rh
dGVtZW50KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFN0YXRlbWVudC5oOgor
ICAgICAgICBVcGRhdGUgdG8gdGFrZSBhcmd1bWVudHMgYnkgcnZhbHVlIHJlZmVyZW5jZS4KKwor
ICAgICAgICAqIE1vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb24uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U1FMVHJhbnNhY3Rpb246OmV4ZWN1dGVTcWwpOgorICAgICAgICAqIE1vZHVs
ZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb24uaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRh
dGFiYXNlL1NRTFRyYW5zYWN0aW9uLmlkbDoKKyAgICAgICAgUmVtb3ZlIGN1c3RvbSBhbm5vdGF0
aW9uLCBhbmQgdXBkYXRlIHNpZ25hdHVyZSB0byBtYXRjaCB0aGUgSURMLgorCisgICAgICAgICog
TW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlvbkJhY2tlbmQuY3BwOgorICAgICAgICAq
IE1vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb25CYWNrZW5kLmg6CisgICAgICAgIFJl
bW92ZSB1bm5lZWRlZCAjaW5jbHVkZXMgb2YgU1FMVmFsdWUuaAorCisgICAgICAgICogYmluZGlu
Z3MvanMvSlNET01Db252ZXJ0Lmg6CisgICAgICAgIChXZWJDb3JlOjpDb252ZXJ0ZXI8SURMTnVs
bD46OmNvbnZlcnQpOgorICAgICAgICAoV2ViQ29yZTo6SlNDb252ZXJ0ZXI8SURMTnVsbD46OmNv
bnZlcnQpOgorICAgICAgICBJbXBsZW1lbnQgY29udmVyc2lvbiBmb3IgdGhlIG51bGwgdHlwZSBz
byBpdCBjYW4gYmUgdXNlZCBpbiB0aGUgU1FMVmFsdWUgdW5pb24uCisKKyAgICAgICAgKiBpbnNw
ZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5jcHA6CisgICAgICAgICogcGxhdGZvcm0vc3Fs
L1NRTGl0ZVN0YXRlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQ6
OmJpbmRWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQ6OmdldENvbHVt
blZhbHVlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9zcWwvU1FMaXRlU3RhdGVtZW50Lmg6CisgICAg
ICAgIFJlcGxhY2Ugb2xkIHN3aXRjaCB3aXRoIGEgV1RGOjpzd2l0Y2hPbiB0aGF0IG9wZXJhdGVz
IG9uIHRoZSBuZXcgdmFyaWFudC4KKworICAgICAgICAqIHBsYXRmb3JtL3NxbC9TUUxWYWx1ZS5o
OgorICAgICAgICAoV2ViQ29yZTo6U1FMVmFsdWU6OlNRTFZhbHVlKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OlNRTFZhbHVlOjp0eXBlKTogRGVsZXRlZC4KKyAgICAgICAgUmVwbGFjZSBp
bXBsZW1lbnRhdGlvbiB3aXRoIGEgVmFyaWFudC4KKwogMjAxNi0xMi0yMiAgQWxleCBDaHJpc3Rl
bnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIE1vdmUgR3JhcGhpY3ND
b250ZXh0M0RXaW4gdG8gR3JhcGhpY3NDb250ZXh0M0RPcGVuR0xFUwpJbmRleDogU291cmNlL1dl
YkNvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ01ha2VM
aXN0cy50eHQJKHJldmlzaW9uIDIxMDEyMykKKysrIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMu
dHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xMTcyLDggKzExNzIsNiBAQCBzZXQoV2ViQ29yZV9TT1VS
Q0VTCiAgICAgYmluZGluZ3MvanMvSlNSZWFkYWJsZVN0cmVhbVByaXZhdGVDb25zdHJ1Y3RvcnMu
Y3BwCiAgICAgYmluZGluZ3MvanMvSlNSZWFkYWJsZVN0cmVhbVNvdXJjZUN1c3RvbS5jcHAKICAg
ICBiaW5kaW5ncy9qcy9KU1JUQ1N0YXRzUmVzcG9uc2VDdXN0b20uY3BwCi0gICAgYmluZGluZ3Mv
anMvSlNTUUxSZXN1bHRTZXRSb3dMaXN0Q3VzdG9tLmNwcAotICAgIGJpbmRpbmdzL2pzL0pTU1FM
VHJhbnNhY3Rpb25DdXN0b20uY3BwCiAgICAgYmluZGluZ3MvanMvSlNTVkdQYXRoU2VnQ3VzdG9t
LmNwcAogICAgIGJpbmRpbmdzL2pzL0pTU3RvcmFnZUN1c3RvbS5jcHAKICAgICBiaW5kaW5ncy9q
cy9KU1N0eWxlU2hlZXRDdXN0b20uY3BwCkBAIC0yMzczLDcgKzIzNzEsNiBAQCBzZXQoV2ViQ29y
ZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0vbmV0d29yay9Tb2NrZXRTdHJlYW1IYW5kbGUuY3BwCiAg
ICAgcGxhdGZvcm0vbmV0d29yay9TeW5jaHJvbm91c0xvYWRlckNsaWVudC5jcHAKIAotICAgIHBs
YXRmb3JtL3NxbC9TUUxWYWx1ZS5jcHAKICAgICBwbGF0Zm9ybS9zcWwvU1FMaXRlQXV0aG9yaXpl
ci5jcHAKICAgICBwbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2UuY3BwCiAgICAgcGxhdGZvcm0v
c3FsL1NRTGl0ZURhdGFiYXNlVHJhY2tlci5jcHAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZGF0YWJhc2UvU1FMUmVzdWx0U2V0Um93TGlzdC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxSZXN1bHRTZXRSb3dMaXN0LmNwcAko
cmV2aXNpb24gMjEwMTIzKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9T
UUxSZXN1bHRTZXRSb3dMaXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjksMTEgKzI5LDEzIEBA
CiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiU1FMUmVzdWx0U2V0Um93TGlzdC5oIgog
CisjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVu
c2lnbmVkIFNRTFJlc3VsdFNldFJvd0xpc3Q6Omxlbmd0aCgpIGNvbnN0CiB7Ci0gICAgaWYgKG1f
cmVzdWx0LnNpemUoKSA9PSAwKQorICAgIGlmIChtX3Jlc3VsdC5pc0VtcHR5KCkpCiAgICAgICAg
IHJldHVybiAwOwogCiAgICAgQVNTRVJUKG1fcmVzdWx0LnNpemUoKSAlIG1fY29sdW1ucy5zaXpl
KCkgPT0gMCk7CkBAIC00MSw0ICs0MywyMyBAQCB1bnNpZ25lZCBTUUxSZXN1bHRTZXRSb3dMaXN0
OjpsZW5ndGgoKSBjCiAgICAgcmV0dXJuIG1fcmVzdWx0LnNpemUoKSAvIG1fY29sdW1ucy5zaXpl
KCk7CiB9CiAKK0V4Y2VwdGlvbk9yPEhhc2hNYXA8U3RyaW5nLCBTUUxWYWx1ZT4+IFNRTFJlc3Vs
dFNldFJvd0xpc3Q6Oml0ZW0odW5zaWduZWQgaW5kZXgpIGNvbnN0Cit7CisgICAgaWYgKGluZGV4
ID49IGxlbmd0aCgpKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSU5ERVhfU0laRV9FUlIg
fTsKKworICAgIEhhc2hNYXA8U3RyaW5nLCBTUUxWYWx1ZT4gcmVzdWx0OworCisgICAgdW5zaWdu
ZWQgbnVtYmVyT2ZDb2x1bW5zID0gbV9jb2x1bW5zLnNpemUoKTsKKyAgICB1bnNpZ25lZCB2YWx1
ZXNJbmRleCA9IGluZGV4ICogbnVtYmVyT2ZDb2x1bW5zOworICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBudW1iZXJPZkNvbHVtbnM7IGkrKykgeworICAgICAgICBhdXRvIG5hbWUgPSBtX2Nv
bHVtbnNbaV07CisgICAgICAgIGF1dG8gdmFsdWUgPSBtX3Jlc3VsdFt2YWx1ZXNJbmRleCArIGld
OworICAgICAgICAKKyAgICAgICAgcmVzdWx0LnNldChXVEZNb3ZlKG5hbWUpLCBXVEZNb3ZlKHZh
bHVlKSk7CisgICAgfQorCisgICAgcmV0dXJuIFdURk1vdmUocmVzdWx0KTsKK30KKwogfQpJbmRl
eDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxSZXN1bHRTZXRSb3dMaXN0
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxS
ZXN1bHRTZXRSb3dMaXN0LmgJKHJldmlzaW9uIDIxMDEyMykKKysrIFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZGF0YWJhc2UvU1FMUmVzdWx0U2V0Um93TGlzdC5oCSh3b3JraW5nIGNvcHkpCkBA
IC0yOCw4ICsyOCwxMiBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgPHd0Zi9SZWZDb3Vu
dGVkLmg+CisjaW5jbHVkZSAiRXhjZXB0aW9uT3IuaCIKICNpbmNsdWRlICJTUUxWYWx1ZS5oIgor
I2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNp
bmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNDQsNiArNDgsNyBAQCBwdWJsaWM6
CiAgICAgdm9pZCBhZGRSZXN1bHQoY29uc3QgU1FMVmFsdWUmIHJlc3VsdCkgeyBtX3Jlc3VsdC5h
cHBlbmQocmVzdWx0KTsgfQogCiAgICAgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3Q7CisgICAgRXhj
ZXB0aW9uT3I8SGFzaE1hcDxTdHJpbmcsIFNRTFZhbHVlPj4gaXRlbSh1bnNpZ25lZCBpbmRleCkg
Y29uc3Q7CiAKIHByaXZhdGU6CiAgICAgU1FMUmVzdWx0U2V0Um93TGlzdCgpIHsgfQpJbmRleDog
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxSZXN1bHRTZXRSb3dMaXN0Lmlk
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFJl
c3VsdFNldFJvd0xpc3QuaWRsCShyZXZpc2lvbiAyMTAxMjMpCisrKyBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmRhdGFiYXNlL1NRTFJlc3VsdFNldFJvd0xpc3QuaWRsCSh3b3JraW5nIGNvcHkp
CkBAIC0yNiw5ICsyNiwxMSBAQAogICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCit0eXBlZGVmIChET01TdHJp
bmc/IG9yIHVucmVzdHJpY3RlZCBkb3VibGUpIFNRTFZhbHVlOworCiBbCiAgICAgSW1wbGVtZW50
YXRpb25MYWNrc1ZUYWJsZSwKIF0gaW50ZXJmYWNlIFNRTFJlc3VsdFNldFJvd0xpc3QgewogICAg
IHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIGxlbmd0aDsKLSAgICBbQ3VzdG9tXSBh
bnkgaXRlbSh1bnNpZ25lZCBsb25nIGluZGV4KTsKKyAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHJl
Y29yZDxET01TdHJpbmcsIFNRTFZhbHVlPiBpdGVtKHVuc2lnbmVkIGxvbmcgaW5kZXgpOwogfTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMU3RhdGVtZW50LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFN0
YXRlbWVudC5jcHAJKHJldmlzaW9uIDIxMDEyMykKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZGF0YWJhc2UvU1FMU3RhdGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzQsOSArNzQs
OSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVNRTFN0YXRlbWVudDo6U1FMU3RhdGVtZW50
KERhdGFiYXNlJiBkYXRhYmFzZSwgY29uc3QgU3RyaW5nJiBzdGF0ZW1lbnQsIGNvbnN0IFZlY3Rv
cjxTUUxWYWx1ZT4mIGFyZ3VtZW50cywgUmVmUHRyPFNRTFN0YXRlbWVudENhbGxiYWNrPiYmIGNh
bGxiYWNrLCBSZWZQdHI8U1FMU3RhdGVtZW50RXJyb3JDYWxsYmFjaz4mJiBlcnJvckNhbGxiYWNr
LCBpbnQgcGVybWlzc2lvbnMpCitTUUxTdGF0ZW1lbnQ6OlNRTFN0YXRlbWVudChEYXRhYmFzZSYg
ZGF0YWJhc2UsIGNvbnN0IFN0cmluZyYgc3RhdGVtZW50LCBWZWN0b3I8U1FMVmFsdWU+JiYgYXJn
dW1lbnRzLCBSZWZQdHI8U1FMU3RhdGVtZW50Q2FsbGJhY2s+JiYgY2FsbGJhY2ssIFJlZlB0cjxT
UUxTdGF0ZW1lbnRFcnJvckNhbGxiYWNrPiYmIGVycm9yQ2FsbGJhY2ssIGludCBwZXJtaXNzaW9u
cykKICAgICA6IG1fc3RhdGVtZW50KHN0YXRlbWVudC5pc29sYXRlZENvcHkoKSkKLSAgICAsIG1f
YXJndW1lbnRzKGFyZ3VtZW50cykKKyAgICAsIG1fYXJndW1lbnRzKFdURk1vdmUoYXJndW1lbnRz
KSkKICAgICAsIG1fc3RhdGVtZW50Q2FsbGJhY2tXcmFwcGVyKFdURk1vdmUoY2FsbGJhY2spLCAm
ZGF0YWJhc2Uuc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKQogICAgICwgbV9zdGF0ZW1lbnRFcnJv
ckNhbGxiYWNrV3JhcHBlcihXVEZNb3ZlKGVycm9yQ2FsbGJhY2spLCAmZGF0YWJhc2Uuc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpKQogICAgICwgbV9wZXJtaXNzaW9ucyhwZXJtaXNzaW9ucykKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMU3RhdGVtZW50LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxTdGF0ZW1l
bnQuaAkocmV2aXNpb24gMjEwMTIzKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRh
YmFzZS9TUUxTdGF0ZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDUsNyArNDUsNyBAQCBjbGFz
cyBTUUxUcmFuc2FjdGlvbkJhY2tlbmQ7CiAKIGNsYXNzIFNRTFN0YXRlbWVudCB7CiBwdWJsaWM6
Ci0gICAgU1FMU3RhdGVtZW50KERhdGFiYXNlJiwgY29uc3QgU3RyaW5nJiwgY29uc3QgVmVjdG9y
PFNRTFZhbHVlPiYsIFJlZlB0cjxTUUxTdGF0ZW1lbnRDYWxsYmFjaz4mJiwgUmVmUHRyPFNRTFN0
YXRlbWVudEVycm9yQ2FsbGJhY2s+JiYsIGludCBwZXJtaXNzaW9ucyk7CisgICAgU1FMU3RhdGVt
ZW50KERhdGFiYXNlJiwgY29uc3QgU3RyaW5nJiwgVmVjdG9yPFNRTFZhbHVlPiYmLCBSZWZQdHI8
U1FMU3RhdGVtZW50Q2FsbGJhY2s+JiYsIFJlZlB0cjxTUUxTdGF0ZW1lbnRFcnJvckNhbGxiYWNr
PiYmLCBpbnQgcGVybWlzc2lvbnMpOwogICAgIH5TUUxTdGF0ZW1lbnQoKTsKIAogICAgIGJvb2wg
ZXhlY3V0ZShEYXRhYmFzZSYpOwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRh
YmFzZS9TUUxUcmFuc2FjdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlvbi5jcHAJKHJldmlzaW9uIDIxMDEyMykKKysr
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb24uY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC03Myw3ICs3Myw3IEBAIFNRTFRyYW5zYWN0aW9uOjp+U1FMVHJhbnNh
Y3Rpb24oKQogewogfQogCi1FeGNlcHRpb25Pcjx2b2lkPiBTUUxUcmFuc2FjdGlvbjo6ZXhlY3V0
ZVNRTChjb25zdCBTdHJpbmcmIHNxbFN0YXRlbWVudCwgY29uc3QgVmVjdG9yPFNRTFZhbHVlPiYg
YXJndW1lbnRzLCBSZWZQdHI8U1FMU3RhdGVtZW50Q2FsbGJhY2s+JiYgY2FsbGJhY2ssIFJlZlB0
cjxTUUxTdGF0ZW1lbnRFcnJvckNhbGxiYWNrPiYmIGNhbGxiYWNrRXJyb3IpCitFeGNlcHRpb25P
cjx2b2lkPiBTUUxUcmFuc2FjdGlvbjo6ZXhlY3V0ZVNxbChjb25zdCBTdHJpbmcmIHNxbFN0YXRl
bWVudCwgc3RkOjpvcHRpb25hbDxWZWN0b3I8U1FMVmFsdWU+PiYmIGFyZ3VtZW50cywgUmVmUHRy
PFNRTFN0YXRlbWVudENhbGxiYWNrPiYmIGNhbGxiYWNrLCBSZWZQdHI8U1FMU3RhdGVtZW50RXJy
b3JDYWxsYmFjaz4mJiBjYWxsYmFja0Vycm9yKQogewogICAgIGlmICghbV9leGVjdXRlU3FsQWxs
b3dlZCB8fCAhbV9kYXRhYmFzZS0+b3BlbmVkKCkpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24g
eyBJTlZBTElEX1NUQVRFX0VSUiB9OwpAQCAtODQsNyArODQsNyBAQCBFeGNlcHRpb25Pcjx2b2lk
PiBTUUxUcmFuc2FjdGlvbjo6ZXhlY3V0CiAgICAgZWxzZSBpZiAobV9yZWFkT25seSkKICAgICAg
ICAgcGVybWlzc2lvbnMgfD0gRGF0YWJhc2VBdXRob3JpemVyOjpSZWFkT25seU1hc2s7CiAKLSAg
ICBhdXRvIHN0YXRlbWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8U1FMU3RhdGVtZW50PihtX2RhdGFi
YXNlLCBzcWxTdGF0ZW1lbnQsIGFyZ3VtZW50cywgV1RGTW92ZShjYWxsYmFjayksIFdURk1vdmUo
Y2FsbGJhY2tFcnJvciksIHBlcm1pc3Npb25zKTsKKyAgICBhdXRvIHN0YXRlbWVudCA9IHN0ZDo6
bWFrZV91bmlxdWU8U1FMU3RhdGVtZW50PihtX2RhdGFiYXNlLCBzcWxTdGF0ZW1lbnQsIGFyZ3Vt
ZW50cyA/IFdURk1vdmUoYXJndW1lbnRzLnZhbHVlKCkpIDogVmVjdG9yPFNRTFZhbHVlPiB7IH0s
IFdURk1vdmUoY2FsbGJhY2spLCBXVEZNb3ZlKGNhbGxiYWNrRXJyb3IpLCBwZXJtaXNzaW9ucyk7
CiAKICAgICBpZiAobV9kYXRhYmFzZS0+ZGVsZXRlZCgpKQogICAgICAgICBzdGF0ZW1lbnQtPnNl
dERhdGFiYXNlRGVsZXRlZEVycm9yKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlvbi5oCShyZXZpc2lvbiAyMTAxMjMpCisr
KyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uLmgJKHdv
cmtpbmcgY29weSkKQEAgLTMzLDYgKzMzLDggQEAKICNpbmNsdWRlICJTUUxDYWxsYmFja1dyYXBw
ZXIuaCIKICNpbmNsdWRlICJTUUxUcmFuc2FjdGlvbkJhY2tlbmQuaCIKICNpbmNsdWRlICJTUUxU
cmFuc2FjdGlvblN0YXRlTWFjaGluZS5oIgorI2luY2x1ZGUgIlNRTFZhbHVlLmgiCisjaW5jbHVk
ZSA8d3RmL09wdGlvbmFsLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNDMsNyArNDUs
NiBAQCBjbGFzcyBTUUxTdGF0ZW1lbnRFcnJvckNhbGxiYWNrOwogY2xhc3MgU1FMVHJhbnNhY3Rp
b25CYWNrZW5kOwogY2xhc3MgU1FMVHJhbnNhY3Rpb25DYWxsYmFjazsKIGNsYXNzIFNRTFRyYW5z
YWN0aW9uRXJyb3JDYWxsYmFjazsKLWNsYXNzIFNRTFZhbHVlOwogY2xhc3MgVm9pZENhbGxiYWNr
OwogCiBjbGFzcyBTUUxUcmFuc2FjdGlvbldyYXBwZXIgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNv
dW50ZWQ8U1FMVHJhbnNhY3Rpb25XcmFwcGVyPiB7CkBAIC02MCw3ICs2MSw3IEBAIHB1YmxpYzoK
ICAgICBzdGF0aWMgUmVmPFNRTFRyYW5zYWN0aW9uPiBjcmVhdGUoUmVmPERhdGFiYXNlPiYmLCBS
ZWZQdHI8U1FMVHJhbnNhY3Rpb25DYWxsYmFjaz4mJiwgUmVmUHRyPFZvaWRDYWxsYmFjaz4mJiBz
dWNjZXNzQ2FsbGJhY2ssIFJlZlB0cjxTUUxUcmFuc2FjdGlvbkVycm9yQ2FsbGJhY2s+JiYsIFJl
ZlB0cjxTUUxUcmFuc2FjdGlvbldyYXBwZXI+JiYsIGJvb2wgcmVhZE9ubHkpOwogICAgIH5TUUxU
cmFuc2FjdGlvbigpOwogCi0gICAgRXhjZXB0aW9uT3I8dm9pZD4gZXhlY3V0ZVNRTChjb25zdCBT
dHJpbmcmIHNxbFN0YXRlbWVudCwgY29uc3QgVmVjdG9yPFNRTFZhbHVlPiYgYXJndW1lbnRzLCBS
ZWZQdHI8U1FMU3RhdGVtZW50Q2FsbGJhY2s+JiYsIFJlZlB0cjxTUUxTdGF0ZW1lbnRFcnJvckNh
bGxiYWNrPiYmKTsKKyAgICBFeGNlcHRpb25Pcjx2b2lkPiBleGVjdXRlU3FsKGNvbnN0IFN0cmlu
ZyYgc3FsU3RhdGVtZW50LCBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxTUUxWYWx1ZT4+JiYgYXJndW1l
bnRzLCBSZWZQdHI8U1FMU3RhdGVtZW50Q2FsbGJhY2s+JiYsIFJlZlB0cjxTUUxTdGF0ZW1lbnRF
cnJvckNhbGxiYWNrPiYmKTsKIAogICAgIHZvaWQgbG9ja0FjcXVpcmVkKCk7CiAgICAgdm9pZCBw
ZXJmb3JtTmV4dFN0ZXAoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJh
c2UvU1FMVHJhbnNhY3Rpb24uaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb24uaWRsCShyZXZpc2lvbiAyMTAxMjMpCisrKyBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uLmlkbAkod29y
a2luZyBjb3B5KQpAQCAtMjYsOCArMjYsMTAgQEAKICAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAordHlwZWRl
ZiAoRE9NU3RyaW5nPyBvciB1bnJlc3RyaWN0ZWQgZG91YmxlKSBTUUxWYWx1ZTsKKwogWwogICAg
IFNraXBWVGFibGVWYWxpZGF0aW9uLAogXSBpbnRlcmZhY2UgU1FMVHJhbnNhY3Rpb24gewotICAg
IFtDdXN0b20sIE1heVRocm93RXhjZXB0aW9uXSB2b2lkIGV4ZWN1dGVTcWwoRE9NU3RyaW5nIHNx
bFN0YXRlbWVudCwgT2JqZWN0QXJyYXkgYXJndW1lbnRzLCBvcHRpb25hbCBTUUxTdGF0ZW1lbnRD
YWxsYmFjaz8gY2FsbGJhY2ssIG9wdGlvbmFsIFNRTFN0YXRlbWVudEVycm9yQ2FsbGJhY2s/IGVy
cm9yQ2FsbGJhY2spOworICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBleGVjdXRlU3FsKERP
TVN0cmluZyBzcWxTdGF0ZW1lbnQsIG9wdGlvbmFsIHNlcXVlbmNlPFNRTFZhbHVlPj8gYXJndW1l
bnRzID0gW10sIG9wdGlvbmFsIFNRTFN0YXRlbWVudENhbGxiYWNrPyBjYWxsYmFjaywgb3B0aW9u
YWwgU1FMU3RhdGVtZW50RXJyb3JDYWxsYmFjaz8gZXJyb3JDYWxsYmFjayk7CiB9OwpJbmRleDog
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlvbkJhY2tlbmQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FM
VHJhbnNhY3Rpb25CYWNrZW5kLmNwcAkocmV2aXNpb24gMjEwMTIzKQorKysgU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlvbkJhY2tlbmQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC00Miw3ICs0Miw2IEBACiAjaW5jbHVkZSAiU1FMU3RhdGVtZW50RXJyb3JDYWxs
YmFjay5oIgogI2luY2x1ZGUgIlNRTFRyYW5zYWN0aW9uLmgiCiAjaW5jbHVkZSAiU1FMVHJhbnNh
Y3Rpb25Db29yZGluYXRvci5oIgotI2luY2x1ZGUgIlNRTFZhbHVlLmgiCiAjaW5jbHVkZSAiU1FM
aXRlVHJhbnNhY3Rpb24uaCIKICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uQmFja2VuZC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb25CYWNrZW5kLmgJKHJldmlz
aW9uIDIxMDEyMykKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJh
bnNhY3Rpb25CYWNrZW5kLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDcgKzQ0LDYgQEAgY2xhc3Mg
U1FMaXRlVHJhbnNhY3Rpb247CiBjbGFzcyBTUUxTdGF0ZW1lbnQ7CiBjbGFzcyBTUUxUcmFuc2Fj
dGlvbjsKIGNsYXNzIFNRTFRyYW5zYWN0aW9uV3JhcHBlcjsKLWNsYXNzIFNRTFZhbHVlOwogCiBj
bGFzcyBTUUxUcmFuc2FjdGlvbkJhY2tlbmQgOiBwdWJsaWMgU1FMVHJhbnNhY3Rpb25TdGF0ZU1h
Y2hpbmU8U1FMVHJhbnNhY3Rpb25CYWNrZW5kPiB7CiBwdWJsaWM6CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAy
MTAxMjMpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oJKHdvcmtpbmcgY29weSkKQEAgLTY5Myw3ICs2OTMsNiBAQAogCQkxQTJBNjgyNDBCNUJFREU3
MDAwMkE0ODAgLyogUHJvZ3Jlc3NUcmFja2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAxQTJBNjgyMjBCNUJFREU3MDAwMkE0ODAgLyogUHJvZ3Jlc3NU
cmFja2VyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJMUEyQUFDNTgwREMyQTNCMTAwQTIwRDlBIC8qIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBMkFBQzU2
MERDMkEzQjEwMEEyMEQ5QSAvKiBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAgKi87IH07CiAJ
CTFBMkFBQzU5MERDMkEzQjEwMEEyMEQ5QSAvKiBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUEyQUFDNTcwREMy
QTNCMTAwQTIwRDlBIC8qIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJMUEyRTZFNTkwQ0M1NTIxMzAwNEEy
MDYyIC8qIFNRTFZhbHVlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDFBMkU2RTU3MENDNTUyMTMwMDRBMjA2MiAvKiBTUUxWYWx1ZS5jcHAgKi87IH07
CiAJCTFBMkU2RTVBMENDNTUyMTMwMDRBMjA2MiAvKiBTUUxWYWx1ZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUEyRTZFNTgwQ0M1NTIxMzAwNEEyMDYy
IC8qIFNRTFZhbHVlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJMUEyRTZFN0EwQ0M1NTZENTAwNEEyMDYyIC8qIFNRTGl0ZUF1dGhvcml6ZXIuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUEyRTZFNzgw
Q0M1NTZENTAwNEEyMDYyIC8qIFNRTGl0ZUF1dGhvcml6ZXIuY3BwICovOyB9OwogCQkxQTM1ODZE
RjE1MjY0QzQ1MDAyMkE2NTkgLyogUmVuZGVyTXVsdGlDb2x1bW5GbG93VGhyZWFkLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBMzU4NkREMTUyNjRD
NDUwMDIyQTY1OSAvKiBSZW5kZXJNdWx0aUNvbHVtbkZsb3dUaHJlYWQuY3BwICovOyB9OwpAQCAt
ODgzLDcgKzg4Miw2IEBACiAJCTFBQ0U1M0VCMEE4RDE4RTcwMDIyOTQ3RCAvKiBYTUxTZXJpYWxp
emVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUNF
NTNFNTBBOEQxOEU3MDAyMjk0N0QgLyogWE1MU2VyaWFsaXplci5oICovOyB9OwogCQkxQUNFNTNG
NjBBOEQxOTQ3MDAyMjk0N0QgLyogSlNYTUxTZXJpYWxpemVyLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBQ0U1M0Y0MEE4RDE5NDcwMDIyOTQ3RCAv
KiBKU1hNTFNlcmlhbGl6ZXIuY3BwICovOyB9OwogCQkxQUNFNTNGNzBBOEQxOTQ3MDAyMjk0N0Qg
LyogSlNYTUxTZXJpYWxpemVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAxQUNFNTNGNTBBOEQxOTQ3MDAyMjk0N0QgLyogSlNYTUxTZXJpYWxpemVyLmgg
Ki87IH07Ci0JCTFBRDIzMTZFMENEMjY5RTcwMEMxRjE5NCAvKiBKU1NRTFRyYW5zYWN0aW9uQ3Vz
dG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFB
RDIzMTZEMENEMjY5RTcwMEMxRjE5NCAvKiBKU1NRTFRyYW5zYWN0aW9uQ3VzdG9tLmNwcCAqLzsg
fTsKIAkJMUFEOEY4MUIxMUNBQjlFOTAwRTkzRTU0IC8qIFBsYXRmb3JtU3RyYXRlZ2llcy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUFEOEY4MTkxMUNB
QjlFOTAwRTkzRTU0IC8qIFBsYXRmb3JtU3RyYXRlZ2llcy5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTFBRDhGODFDMTFDQUI5RTkwMEU5M0U1NCAv
KiBQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMUFEOEY4MUExMUNBQjlFOTAwRTkzRTU0IC8qIFBsYXRmb3JtU3RyYXRl
Z2llcy5jcHAgKi87IH07CiAJCTFBREE0QTFDMUQyMkYyQzAwMDVBOUExNSAvKiBQYXltZW50TWVy
Y2hhbnRTZXNzaW9uQ29jb2EubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAxQURBNEExQjFEMjJGMkMwMDA1QTlBMTUgLyogUGF5bWVudE1lcmNoYW50U2Vz
c2lvbkNvY29hLm1tICovOyB9OwpAQCAtMjIyNCw3ICsyMjIyLDYgQEAKIAkJNTFENzIzNkQxQkI2
MTc0OTAwNDc4Q0EzIC8qIElEQlJlc3VsdERhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRDcyMzZCMUJCNjBCRkUwMDQ3OENBMyAvKiBJREJSZXN1
bHREYXRhLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJNTFEN0VGRUExQkRFOEY4QzAwRTkzRTEwIC8qIFRocmVhZFNhZmVEYXRhQnVmZmVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTFGQUVBOTFCREM5
ODlBMDBCNEFGRTQgLyogVGhyZWFkU2FmZURhdGFCdWZmZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MUQ3RUZFQzFCREVGQTUxMDBFOTNFMTAg
LyogVHJhbnNhY3Rpb25PcGVyYXRpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTFEN0VGRUIxQkRFRkE0NzAwRTkzRTEwIC8qIFRyYW5zYWN0aW9u
T3BlcmF0aW9uLmNwcCAqLzsgfTsKLQkJNTFEQ0U4MDIwQ0FDOUYxQzAwNDg4MzU4IC8qIEpTU1FM
UmVzdWx0U2V0Um93TGlzdEN1c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1MURDRTgwMTBDQUM5RjFDMDA0ODgzNTggLyogSlNTUUxSZXN1bHRT
ZXRSb3dMaXN0Q3VzdG9tLmNwcCAqLzsgfTsKIAkJNTFERjZEN0UwQjkyQTE2RDAwQzJEQzg1IC8q
IFRocmVhZENoZWNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1MURGNkQ3RDBCOTJBMTZEMDBDMkRDODUgLyogVGhyZWFkQ2hlY2suaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MURGNkQ4MDBCOTJBMThF
MDBDMkRDODUgLyogVGhyZWFkQ2hlY2subW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1MURGNkQ3RjBCOTJBMThFMDBDMkRDODUgLyogVGhyZWFkQ2hlY2su
bW0gKi87IH07CiAJCTUxRTBCQUJCMERBNTU0NzEwMEE5RTQxNyAvKiBTdG9yYWdlRXZlbnQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRTBCQUI5MERB
NTU0NzEwMEE5RTQxNyAvKiBTdG9yYWdlRXZlbnQuaCAqLzsgfTsKQEAgLTc3MjgsNyArNzcyNSw2
IEBACiAJCTFBMkE2ODIyMEI1QkVERTcwMDAyQTQ4MCAvKiBQcm9ncmVzc1RyYWNrZXIuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFByb2dyZXNzVHJhY2tlci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkxQTJBQUM1NjBEQzJBM0IxMDBBMjBEOUEgLyogQXBwbGlj
YXRpb25DYWNoZVN0b3JhZ2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkxQTJBQUM1NzBEQzJBM0IxMDBBMjBEOUEgLyogQXBwbGljYXRpb25DYWNoZVN0b3JhZ2Uu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXBwbGljYXRpb25DYWNoZVN0b3Jh
Z2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMUEyRTZFNTcwQ0M1NTIxMzAwNEEy
MDYyIC8qIFNRTFZhbHVlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFNRTFZhbHVlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUEyRTZFNTgwQ0M1
NTIxMzAwNEEyMDYyIC8qIFNRTFZhbHVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFNRTFZhbHVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBMkU2RTc4MEND
NTU2RDUwMDRBMjA2MiAvKiBTUUxpdGVBdXRob3JpemVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFNRTGl0ZUF1dGhvcml6ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkxQTM1ODZERDE1MjY0QzQ1MDAyMkE2NTkgLyogUmVuZGVyTXVsdGlDb2x1
bW5GbG93VGhyZWFkLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJl
bmRlck11bHRpQ29sdW1uRmxvd1RocmVhZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC03OTQyLDcgKzc5MzgsNiBAQAogCQkxQUNFNTNFNjBBOEQxOEU3MDAyMjk0N0QgLyogWE1M
U2VyaWFsaXplci5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFhNTFNlcmlhbGl6ZXIuaWRs
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQUNFNTNGNDBBOEQxOTQ3MDAyMjk0N0Qg
LyogSlNYTUxTZXJpYWxpemVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBKU1hNTFNlcmlhbGl6ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkx
QUNFNTNGNTBBOEQxOTQ3MDAyMjk0N0QgLyogSlNYTUxTZXJpYWxpemVyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBKU1hNTFNlcmlhbGl6ZXIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJMUFEMjMxNkQwQ0QyNjlFNzAwQzFGMTk0IC8qIEpTU1FMVHJhbnNhY3Rp
b25DdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNTUUxU
cmFuc2FjdGlvbkN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBRDhG
ODE5MTFDQUI5RTkwMEU5M0U1NCAvKiBQbGF0Zm9ybVN0cmF0ZWdpZXMuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gUGxhdGZvcm1TdHJhdGVnaWVzLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTFBRDhGODFBMTFDQUI5RTkwMEU5M0U1NCAvKiBQbGF0Zm9ybVN0cmF0
ZWdpZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUGxhdGZvcm1T
dHJhdGVnaWVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUFEQTRBMUIxRDIy
RjJDMDAwNUE5QTE1IC8qIFBheW1lbnRNZXJjaGFudFNlc3Npb25Db2NvYS5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFBheW1lbnRNZXJjaGFudFNlc3Npb25Db2Nv
YS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTk0NjYsNyArOTQ2MSw2IEBACiAJ
CTUxRDcyMzZBMUJCNjBCRkUwMDQ3OENBMyAvKiBJREJSZXN1bHREYXRhLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IElEQlJlc3VsdERhdGEuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk1MUQ3MjM2QjFCQjYwQkZFMDA0NzhDQTMgLyogSURCUmVzdWx0
RGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJREJSZXN1bHREYXRhLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxRDdFRkVCMUJERUZBNDcwMEU5M0UxMCAv
KiBUcmFuc2FjdGlvbk9wZXJhdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBUcmFuc2FjdGlvbk9wZXJhdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07Ci0JCTUxRENFODAxMENBQzlGMUMwMDQ4ODM1OCAvKiBKU1NRTFJlc3VsdFNldFJvd0xpc3RD
dXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNTUUxSZXN1
bHRTZXRSb3dMaXN0Q3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFE
RjZEN0QwQjkyQTE2RDAwQzJEQzg1IC8qIFRocmVhZENoZWNrLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFRocmVhZENoZWNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTUxREY2RDdGMEI5MkExOEUwMEMyREM4NSAvKiBUaHJlYWRDaGVjay5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFRocmVhZENoZWNrLm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk1MUUwQkFCOTBEQTU1NDcxMDBBOUU0MTcgLyogU3RvcmFnZUV2
ZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0b3JhZ2VFdmVudC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTU3NDUsNyArMTU3MzksNiBAQAogCQkJCTFB
MjI0NjQ2MENDOThEREIwMEMwNTI0MCAvKiBTUUxpdGVTdGF0ZW1lbnQuaCAqLywKIAkJCQkxQTIy
NDY0NzBDQzk4RERCMDBDMDUyNDAgLyogU1FMaXRlVHJhbnNhY3Rpb24uY3BwICovLAogCQkJCTFB
MjI0NjQ4MENDOThEREIwMEMwNTI0MCAvKiBTUUxpdGVUcmFuc2FjdGlvbi5oICovLAotCQkJCTFB
MkU2RTU3MENDNTUyMTMwMDRBMjA2MiAvKiBTUUxWYWx1ZS5jcHAgKi8sCiAJCQkJMUEyRTZFNTgw
Q0M1NTIxMzAwNEEyMDYyIC8qIFNRTFZhbHVlLmggKi8sCiAJCQkpOwogCQkJcGF0aCA9IHNxbDsK
QEAgLTIyMTQxLDggKzIyMTM0LDYgQEAKIAkJCQlBODVGMjIwODE0MzAzNzdEMDA3Q0M4ODQgLyog
SlNQb3BTdGF0ZUV2ZW50Q3VzdG9tLmNwcCAqLywKIAkJCQk0MThDMzk1RDFDOEYwQUFCMDA1MUM4
QTMgLyogSlNSZWFkYWJsZVN0cmVhbVNvdXJjZUN1c3RvbS5jcHAgKi8sCiAJCQkJMDdEQzVGRDMx
N0QzRUVFOTAwOTlGODkwIC8qIEpTUlRDU3RhdHNSZXNwb25zZUN1c3RvbS5jcHAgKi8sCi0JCQkJ
NTFEQ0U4MDEwQ0FDOUYxQzAwNDg4MzU4IC8qIEpTU1FMUmVzdWx0U2V0Um93TGlzdEN1c3RvbS5j
cHAgKi8sCi0JCQkJMUFEMjMxNkQwQ0QyNjlFNzAwQzFGMTk0IC8qIEpTU1FMVHJhbnNhY3Rpb25D
dXN0b20uY3BwICovLAogCQkJCTUxRDBDNTE1MERBQTkwQjcwMDNCMzgzMSAvKiBKU1N0b3JhZ2VD
dXN0b20uY3BwICovLAogCQkJCUE4NEVCRDc3MENCOEM4OTIwMDA3OTYwOSAvKiBKU1N0eWxlU2hl
ZXRMaXN0Q3VzdG9tLmNwcCAqLywKIAkJCQk1N0E5Qzg4RDFEQTcwQkY4MDBCQzczMDUgLyogSlNT
dWJ0bGVDcnlwdG9DdXN0b20uY3BwICovLApAQCAtMzAyMzMsMTIgKzMwMjI0LDEwIEBACiAJCQkJ
QjUyNUE5NjYxMUNBMjM0MDAwM0EyM0E4IC8qIEpTU1FMRXhjZXB0aW9uLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTFBRTgyRkVDMENBQjA3RUUwMDIyMzdBRSAvKiBKU1NRTFJlc3VsdFNldC5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkxQUZFMTE5OTBDQkZGQ0M0MDAzMDE3RkEgLyogSlNTUUxSZXN1
bHRTZXRSb3dMaXN0LmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTUxRENFODAyMENBQzlGMUMwMDQ4
ODM1OCAvKiBKU1NRTFJlc3VsdFNldFJvd0xpc3RDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQjU5REQ2QTYxMTkwMkE2MjAwN0U5Njg0IC8qIEpTU1FMU3RhdGVtZW50Q2FsbGJhY2suY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJQjU5REQ2QUExMTkwMkE3MTAwN0U5Njg0IC8qIEpTU1FMU3Rh
dGVtZW50RXJyb3JDYWxsYmFjay5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MTRDNzYzODBDRTky
MjVFMDA3RUYzQ0QgLyogSlNTUUxUcmFuc2FjdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlC
NTlERDY5RTExOTAyQTQyMDA3RTk2ODQgLyogSlNTUUxUcmFuc2FjdGlvbkNhbGxiYWNrLmNwcCBp
biBTb3VyY2VzICovLAotCQkJCTFBRDIzMTZFMENEMjY5RTcwMEMxRjE5NCAvKiBKU1NRTFRyYW5z
YWN0aW9uQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUI1OURENkEyMTE5MDJBNTIwMDdF
OTY4NCAvKiBKU1NRTFRyYW5zYWN0aW9uRXJyb3JDYWxsYmFjay5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlBODY2MjlENDA5REEyQjQ4MDA5NjMzQTcgLyogSlNTdGF0aWNSYW5nZS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQk1MUUzRjlENjBEQTA1RTFEMDAyNTA5MTEgLyogSlNTdG9yYWdlLmNwcCBp
biBTb3VyY2VzICovLApAQCAtMzEyNzMsNyArMzEyNjIsNiBAQAogCQkJCUZFRTE4MTEzMTZDMzE5
RTgwMDA4NDg0OSAvKiBTUUxUcmFuc2FjdGlvbkJhY2tlbmQuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJOTdCQzZBNTYxNTA1RjA4MTAwMUI3NEFDIC8qIFNRTFRyYW5zYWN0aW9uQ29vcmRpbmF0b3Iu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkUzNkZEMTYxNkM3ODI2NTAwRjg4N0MxIC8qIFNRTFRy
YW5zYWN0aW9uU3RhdGVNYWNoaW5lLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTFBMkU2RTU5MEND
NTUyMTMwMDRBMjA2MiAvKiBTUUxWYWx1ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0NDc2NTMx
QjEzMzE3MDk5MDAwNkI3ODkgLyogU1NMS2V5R2VuZXJhdG9ySU9TLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTkzRjE5QUU2MDgyNDVFNTkwMDFFOUFCQyAvKiBTU0xLZXlHZW5lcmF0b3JNYWMubW0g
aW4gU291cmNlcyAqLywKIAkJCQlCQzdGQTYyRTBEMUYwRUZGMDBEQjIyQTkgLyogU3RhdGljTm9k
ZUxpc3QuY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0JpbmRpbmdzQWxsSW5PbmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTQmluZGluZ3NBbGxJbk9uZS5jcHAJKHJldmlzaW9uIDIxMDEyMykKKysrIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQmluZGluZ3NBbGxJbk9uZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTEwNiw4ICsxMDYsNiBAQAogI2luY2x1ZGUgIkpTUGx1Z2luRWxlbWVudEZ1bmN0
aW9ucy5jcHAiCiAjaW5jbHVkZSAiSlNQb3BTdGF0ZUV2ZW50Q3VzdG9tLmNwcCIKICNpbmNsdWRl
ICJKU1JlYWRhYmxlU3RyZWFtUHJpdmF0ZUNvbnN0cnVjdG9ycy5jcHAiCi0jaW5jbHVkZSAiSlNT
UUxSZXN1bHRTZXRSb3dMaXN0Q3VzdG9tLmNwcCIKLSNpbmNsdWRlICJKU1NRTFRyYW5zYWN0aW9u
Q3VzdG9tLmNwcCIKICNpbmNsdWRlICJKU1NWR1BhdGhTZWdDdXN0b20uY3BwIgogI2luY2x1ZGUg
IkpTU3RvcmFnZUN1c3RvbS5jcHAiCiAjaW5jbHVkZSAiSlNTdHlsZVNoZWV0Q3VzdG9tLmNwcCIK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29udmVydC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29udmVydC5oCShyZXZpc2lv
biAyMTAxMjMpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnQuaAko
d29ya2luZyBjb3B5KQpAQCAtMzMxLDYgKzMzMSwyNiBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBz
dHJ1Y3QgSlNDb252ZXJ0ZXI8CiB9OwogCiAvLyBNQVJLOiAtCisvLyBNQVJLOiBOdWxsIHR5cGUK
KwordGVtcGxhdGU8PiBzdHJ1Y3QgQ29udmVydGVyPElETE51bGw+IDogRGVmYXVsdENvbnZlcnRl
cjxJRExOdWxsPiB7CisgICAgc3RhdGljIHN0ZDo6bnVsbHB0cl90IGNvbnZlcnQoSlNDOjpFeGVj
U3RhdGUmLCBKU0M6OkpTVmFsdWUpCisgICAgeworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAg
ICB9Cit9OworCit0ZW1wbGF0ZTw+IHN0cnVjdCBKU0NvbnZlcnRlcjxJRExOdWxsPiB7CisgICAg
c3RhdGljIGNvbnN0ZXhwciBib29sIG5lZWRzU3RhdGUgPSBmYWxzZTsKKyAgICBzdGF0aWMgY29u
c3RleHByIGJvb2wgbmVlZHNHbG9iYWxPYmplY3QgPSBmYWxzZTsKKworICAgIHN0YXRpYyBKU0M6
OkpTVmFsdWUgY29udmVydChzdGQ6Om51bGxwdHJfdCkKKyAgICB7CisgICAgICAgIHJldHVybiBK
U0M6OmpzTnVsbCgpOworICAgIH0KK307CisKKy8vIE1BUks6IC0KIC8vIE1BUks6IEJvb2xlYW4g
dHlwZQogCiB0ZW1wbGF0ZTw+IHN0cnVjdCBDb252ZXJ0ZXI8SURMQm9vbGVhbj4gOiBEZWZhdWx0
Q29udmVydGVyPElETEJvb2xlYW4+IHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTU1FMUmVzdWx0U2V0Um93TGlzdEN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNTUUxSZXN1bHRTZXRSb3dMaXN0Q3VzdG9tLmNwcAkocmV2aXNp
b24gMjEwMTIzKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTUUxSZXN1bHRTZXRS
b3dMaXN0Q3VzdG9tLmNwcAkobm9uZXhpc3RlbnQpCkBAIC0xLDgzICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMDcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICoKLSAqIDEuICBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgSW5jLiAoIkFwcGxl
Iikgbm9yIHRoZSBuYW1lcyBvZgotICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQg
dG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKLSAqICAgICBmcm9tIHRoaXMg
c29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9S
UyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUK
LSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKLSAqIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0g
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YKLSAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5o
IgotCi0jaW5jbHVkZSAiSlNTUUxSZXN1bHRTZXRSb3dMaXN0LmgiCi0jaW5jbHVkZSAiRXhjZXB0
aW9uQ29kZS5oIgotI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgotI2luY2x1ZGUgIlNRTFZhbHVl
LmgiCi0jaW5jbHVkZSA8cnVudGltZS9JZGVudGlmaWVySW5saW5lcy5oPgotI2luY2x1ZGUgPHJ1
bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuaD4KLQotdXNpbmcgbmFtZXNwYWNlIEpTQzsKLQotbmFt
ZXNwYWNlIFdlYkNvcmUgewotCi1KU1ZhbHVlIEpTU1FMUmVzdWx0U2V0Um93TGlzdDo6aXRlbShF
eGVjU3RhdGUmIHN0YXRlKQotewotICAgIGJvb2wgaW5kZXhPazsKLSAgICBpbnQgaW5kZXggPSBm
aW5pdGVJbnQzMlZhbHVlKHN0YXRlLmFyZ3VtZW50KDApLCAmc3RhdGUsIGluZGV4T2spOwotICAg
IGlmICghaW5kZXhPaykgewotICAgICAgICBzZXRET01FeGNlcHRpb24oJnN0YXRlLCBUWVBFX01J
U01BVENIX0VSUik7Ci0gICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwotICAgIH0KLSAgICBp
ZiAoaW5kZXggPCAwIHx8ICh1bnNpZ25lZClpbmRleCA+PSB3cmFwcGVkKCkubGVuZ3RoKCkpIHsK
LSAgICAgICAgc2V0RE9NRXhjZXB0aW9uKCZzdGF0ZSwgSU5ERVhfU0laRV9FUlIpOwotICAgICAg
ICByZXR1cm4ganNVbmRlZmluZWQoKTsKLSAgICB9Ci0KLSAgICBKU09iamVjdCogb2JqZWN0ID0g
Y29uc3RydWN0RW1wdHlPYmplY3QoJnN0YXRlKTsKLQotICAgIHVuc2lnbmVkIG51bUNvbHVtbnMg
PSB3cmFwcGVkKCkuY29sdW1uTmFtZXMoKS5zaXplKCk7Ci0gICAgdW5zaWduZWQgdmFsdWVzSW5k
ZXggPSBpbmRleCAqIG51bUNvbHVtbnM7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51
bUNvbHVtbnM7IGkrKykgewotICAgICAgICBjb25zdCBTUUxWYWx1ZSYgdmFsdWUgPSB3cmFwcGVk
KCkudmFsdWVzKClbdmFsdWVzSW5kZXggKyBpXTsKLSAgICAgICAgSlNWYWx1ZSBqc1ZhbHVlOwot
Ci0gICAgICAgIHN3aXRjaCAodmFsdWUudHlwZSgpKSB7Ci0gICAgICAgIGNhc2UgU1FMVmFsdWU6
OlN0cmluZ1ZhbHVlOgotICAgICAgICAgICAganNWYWx1ZSA9IGpzU3RyaW5nV2l0aENhY2hlKCZz
dGF0ZSwgdmFsdWUuc3RyaW5nKCkpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2Ug
U1FMVmFsdWU6Ok51bGxWYWx1ZToKLSAgICAgICAgICAgIGpzVmFsdWUgPSBqc051bGwoKTsKLSAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFNRTFZhbHVlOjpOdW1iZXJWYWx1ZToKLSAg
ICAgICAgICAgIGpzVmFsdWUgPSBqc051bWJlcih2YWx1ZS5udW1iZXIoKSk7Ci0gICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwotICAgICAgICB9Ci0KLSAgICAgICAgb2JqZWN0LT5wdXREaXJlY3Qoc3RhdGUudm0oKSwg
SWRlbnRpZmllcjo6ZnJvbVN0cmluZygmc3RhdGUsIHdyYXBwZWQoKS5jb2x1bW5OYW1lcygpW2ld
KSwganNWYWx1ZSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KTsKLSAgICB9Ci0KLSAgICByZXR1cm4g
b2JqZWN0OwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCgpQcm9wZXJ0eSBjaGFuZ2VzIG9u
OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1NRTFJlc3VsdFNldFJvd0xpc3RDdXN0b20u
Y3BwCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX18KRGVsZXRlZDogc3ZuOmVvbC1zdHlsZQojIyAtMSArMCwwICMjCi1uYXRp
dmUKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpJbmRleDogU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNTUUxUcmFuc2FjdGlvbkN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTUUxUcmFuc2FjdGlvbkN1c3RvbS5jcHAJKHJldmlz
aW9uIDIxMDEyMykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU1FMVHJhbnNhY3Rp
b25DdXN0b20uY3BwCShub25leGlzdGVudCkKQEAgLTEsMTE1ICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMDcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgSW5jLiAoIkFwcGxlIikg
bm9yIHRoZSBuYW1lcyBvZgotICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKLSAqICAgICBmcm9tIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAi
QVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAq
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKLSAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YKLSAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgot
Ci0jaW5jbHVkZSAiSlNTUUxUcmFuc2FjdGlvbi5oIgotI2luY2x1ZGUgIkRPTVdpbmRvdy5oIgot
I2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKLSNpbmNsdWRlICJKU1NRTFN0YXRlbWVudENhbGxi
YWNrLmgiCi0jaW5jbHVkZSAiSlNTUUxTdGF0ZW1lbnRFcnJvckNhbGxiYWNrLmgiCi0jaW5jbHVk
ZSAiSlNET01XaW5kb3dDdXN0b20uaCIKLSNpbmNsdWRlICJTUUxUcmFuc2FjdGlvbi5oIgotI2lu
Y2x1ZGUgIlNRTFZhbHVlLmgiCi0jaW5jbHVkZSA8cnVudGltZS9KU09iamVjdElubGluZXMuaD4K
LQotdXNpbmcgbmFtZXNwYWNlIEpTQzsKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1KU1ZhbHVl
IEpTU1FMVHJhbnNhY3Rpb246OmV4ZWN1dGVTcWwoRXhlY1N0YXRlJiBzdGF0ZSkKLXsKLSAgICBW
TSYgdm0gPSBzdGF0ZS52bSgpOwotICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKLQotICAgIGlmICghc3RhdGUuYXJndW1lbnRDb3VudCgpKSB7Ci0gICAgICAgIHNldERP
TUV4Y2VwdGlvbigmc3RhdGUsIFNZTlRBWF9FUlIpOwotICAgICAgICByZXR1cm4ganNVbmRlZmlu
ZWQoKTsKLSAgICB9Ci0KLSAgICBTdHJpbmcgc3FsU3RhdGVtZW50ID0gc3RhdGUuYXJndW1lbnQo
MCkudG9XVEZTdHJpbmcoJnN0YXRlKTsKLSAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBK
U1ZhbHVlKCkpOwotCi0gICAgLy8gTm93IGFzc2VtYmxlIHRoZSBsaXN0IG9mIFNRTCBhcmd1bWVu
dHMKLSAgICBWZWN0b3I8U1FMVmFsdWU+IHNxbFZhbHVlczsKLSAgICBpZiAoIXN0YXRlLmFyZ3Vt
ZW50KDEpLmlzVW5kZWZpbmVkT3JOdWxsKCkpIHsKLSAgICAgICAgSlNPYmplY3QqIG9iamVjdCA9
IHN0YXRlLmFyZ3VtZW50KDEpLmdldE9iamVjdCgpOwotICAgICAgICBpZiAoIW9iamVjdCkgewot
ICAgICAgICAgICAgc2V0RE9NRXhjZXB0aW9uKCZzdGF0ZSwgVFlQRV9NSVNNQVRDSF9FUlIpOwot
ICAgICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Ci0gICAgICAgIH0KLQotICAgICAgICBK
U1ZhbHVlIGxlbmd0aFZhbHVlID0gb2JqZWN0LT5nZXQoJnN0YXRlLCBzdGF0ZS5wcm9wZXJ0eU5h
bWVzKCkubGVuZ3RoKTsKLSAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgSlNWYWx1
ZSgpKTsKLSAgICAgICAgdW5zaWduZWQgbGVuZ3RoID0gbGVuZ3RoVmFsdWUudG9VSW50MzIoJnN0
YXRlKTsKLSAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgSlNWYWx1ZSgpKTsKLQot
ICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwIDsgaSA8IGxlbmd0aDsgKytpKSB7Ci0gICAgICAg
ICAgICBKU1ZhbHVlIHZhbHVlID0gb2JqZWN0LT5nZXQoJnN0YXRlLCBpKTsKLSAgICAgICAgICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEpTVmFsdWUoKSk7Ci0KLSAgICAgICAgICAgIGlm
ICh2YWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgpKQotICAgICAgICAgICAgICAgIHNxbFZhbHVlcy5h
cHBlbmQoU1FMVmFsdWUoKSk7Ci0gICAgICAgICAgICBlbHNlIGlmICh2YWx1ZS5pc051bWJlcigp
KQotICAgICAgICAgICAgICAgIHNxbFZhbHVlcy5hcHBlbmQodmFsdWUuYXNOdW1iZXIoKSk7Ci0g
ICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICAvLyBDb252ZXJ0IHRoZSBhcmd1bWVu
dCB0byBhIHN0cmluZyBhbmQgYXBwZW5kIGl0Ci0gICAgICAgICAgICAgICAgc3FsVmFsdWVzLmFw
cGVuZCh2YWx1ZS50b1dURlN0cmluZygmc3RhdGUpKTsKLSAgICAgICAgICAgICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCBKU1ZhbHVlKCkpOwotICAgICAgICAgICAgfQotICAgICAgICB9
Ci0gICAgfQotCi0gICAgUmVmUHRyPFNRTFN0YXRlbWVudENhbGxiYWNrPiBjYWxsYmFjazsKLSAg
ICBpZiAoIXN0YXRlLmFyZ3VtZW50KDIpLmlzVW5kZWZpbmVkT3JOdWxsKCkpIHsKLSAgICAgICAg
SlNPYmplY3QqIG9iamVjdCA9IHN0YXRlLmFyZ3VtZW50KDIpLmdldE9iamVjdCgpOwotICAgICAg
ICBpZiAoIW9iamVjdCkgewotICAgICAgICAgICAgc2V0RE9NRXhjZXB0aW9uKCZzdGF0ZSwgVFlQ
RV9NSVNNQVRDSF9FUlIpOwotICAgICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Ci0gICAg
ICAgIH0KLQotICAgICAgICBjYWxsYmFjayA9IEpTU1FMU3RhdGVtZW50Q2FsbGJhY2s6OmNyZWF0
ZShvYmplY3QsIGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCgpKSk7Ci0g
ICAgfQotCi0gICAgUmVmUHRyPFNRTFN0YXRlbWVudEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJh
Y2s7Ci0gICAgaWYgKCFzdGF0ZS5hcmd1bWVudCgzKS5pc1VuZGVmaW5lZE9yTnVsbCgpKSB7Ci0g
ICAgICAgIEpTT2JqZWN0KiBvYmplY3QgPSBzdGF0ZS5hcmd1bWVudCgzKS5nZXRPYmplY3QoKTsK
LSAgICAgICAgaWYgKCFvYmplY3QpIHsKLSAgICAgICAgICAgIHNldERPTUV4Y2VwdGlvbigmc3Rh
dGUsIFRZUEVfTUlTTUFUQ0hfRVJSKTsKLSAgICAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgp
OwotICAgICAgICB9Ci0KLSAgICAgICAgZXJyb3JDYWxsYmFjayA9IEpTU1FMU3RhdGVtZW50RXJy
b3JDYWxsYmFjazo6Y3JlYXRlKG9iamVjdCwganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xv
YmFsT2JqZWN0KCkpKTsKLSAgICB9Ci0KLSAgICBwcm9wYWdhdGVFeGNlcHRpb24oc3RhdGUsIHNj
b3BlLCB3cmFwcGVkKCkuZXhlY3V0ZVNRTChzcWxTdGF0ZW1lbnQsIHNxbFZhbHVlcywgV1RGTW92
ZShjYWxsYmFjayksIFdURk1vdmUoZXJyb3JDYWxsYmFjaykpKTsKLQotICAgIHJldHVybiBqc1Vu
ZGVmaW5lZCgpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCgpQcm9wZXJ0eSBjaGFuZ2Vz
IG9uOiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1NRTFRyYW5zYWN0aW9uQ3VzdG9tLmNw
cApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fCkRlbGV0ZWQ6IHN2bjplb2wtc3R5bGUKIyMgLTEgKzAsMCAjIwotbmF0aXZl
ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFzZUFnZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5jcHAJKHJldmlzaW9uIDIx
MDEyMykKKysrIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFzZUFnZW50
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODUsMTIgKzg1LDExIEBAIHByaXZhdGU6CiAKICAgICAg
ICAgYXV0byB2YWx1ZXMgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3JWYWx1
ZT46OmNyZWF0ZSgpOwogICAgICAgICBmb3IgKGF1dG8mIHZhbHVlIDogcm93TGlzdC52YWx1ZXMo
KSkgewotICAgICAgICAgICAgUmVmUHRyPEluc3BlY3RvclZhbHVlPiBpbnNwZWN0b3JWYWx1ZTsK
LSAgICAgICAgICAgIHN3aXRjaCAodmFsdWUudHlwZSgpKSB7Ci0gICAgICAgICAgICBjYXNlIFNR
TFZhbHVlOjpTdHJpbmdWYWx1ZTogaW5zcGVjdG9yVmFsdWUgPSBJbnNwZWN0b3JWYWx1ZTo6Y3Jl
YXRlKHZhbHVlLnN0cmluZygpKTsgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIFNRTFZhbHVlOjpO
dW1iZXJWYWx1ZTogaW5zcGVjdG9yVmFsdWUgPSBJbnNwZWN0b3JWYWx1ZTo6Y3JlYXRlKHZhbHVl
Lm51bWJlcigpKTsgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIFNRTFZhbHVlOjpOdWxsVmFsdWU6
IGluc3BlY3RvclZhbHVlID0gSW5zcGVjdG9yVmFsdWU6Om51bGwoKTsgYnJlYWs7Ci0gICAgICAg
ICAgICB9CisgICAgICAgICAgICBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IGluc3BlY3RvclZhbHVl
ID0gV1RGOjpzd2l0Y2hPbih2YWx1ZSwKKyAgICAgICAgICAgICAgICBbJmluc3BlY3RvclZhbHVl
XSAoY29uc3Qgc3RkOjpudWxscHRyX3QmKSB7IHJldHVybiBJbnNwZWN0b3JWYWx1ZTo6bnVsbCgp
OyB9LAorICAgICAgICAgICAgICAgIFsmaW5zcGVjdG9yVmFsdWVdIChjb25zdCBTdHJpbmcmIHN0
cmluZykgeyByZXR1cm4gSW5zcGVjdG9yVmFsdWU6OmNyZWF0ZShzdHJpbmcpOyB9LAorICAgICAg
ICAgICAgICAgIFsmaW5zcGVjdG9yVmFsdWVdIChkb3VibGUgbnVtYmVyKSB7IHJldHVybiBJbnNw
ZWN0b3JWYWx1ZTo6Y3JlYXRlKG51bWJlcik7IH0KKyAgICAgICAgICAgICk7CiAgICAgICAgICAg
ICB2YWx1ZXMtPmFkZEl0ZW0oV1RGTW92ZShpbnNwZWN0b3JWYWx1ZSkpOwogICAgICAgICB9CiAg
ICAgICAgIG1fcmVxdWVzdENhbGxiYWNrLT5zZW5kU3VjY2VzcyhXVEZNb3ZlKGNvbHVtbk5hbWVz
KSwgV1RGTW92ZSh2YWx1ZXMpLCBudWxscHRyKTsKQEAgLTEzNywxMCArMTM2LDkgQEAgcHJpdmF0
ZToKICAgICAgICAgaWYgKCFtX3JlcXVlc3RDYWxsYmFjay0+aXNBY3RpdmUoKSkKICAgICAgICAg
ICAgIHJldHVybiB0cnVlOwogCi0gICAgICAgIFZlY3RvcjxTUUxWYWx1ZT4gc3FsVmFsdWVzOwog
ICAgICAgICBSZWY8U1FMU3RhdGVtZW50Q2FsbGJhY2s+IGNhbGxiYWNrKFN0YXRlbWVudENhbGxi
YWNrOjpjcmVhdGUobV9yZXF1ZXN0Q2FsbGJhY2suY29weVJlZigpKSk7CiAgICAgICAgIFJlZjxT
UUxTdGF0ZW1lbnRFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrKFN0YXRlbWVudEVycm9yQ2Fs
bGJhY2s6OmNyZWF0ZShtX3JlcXVlc3RDYWxsYmFjay5jb3B5UmVmKCkpKTsKLSAgICAgICAgdHJh
bnNhY3Rpb24tPmV4ZWN1dGVTUUwobV9zcWxTdGF0ZW1lbnQsIHNxbFZhbHVlcywgV1RGTW92ZShj
YWxsYmFjayksIFdURk1vdmUoZXJyb3JDYWxsYmFjaykpOworICAgICAgICB0cmFuc2FjdGlvbi0+
ZXhlY3V0ZVNxbChtX3NxbFN0YXRlbWVudCwgeyB9LCBXVEZNb3ZlKGNhbGxiYWNrKSwgV1RGTW92
ZShlcnJvckNhbGxiYWNrKSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIApJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTFZhbHVlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMVmFsdWUuY3BwCShyZXZpc2lvbiAyMTAxMjMp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMVmFsdWUuY3BwCShub25leGlzdGVu
dCkKQEAgLTEsNTYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNyBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbgotICog
YXJlIG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqIDMuICBOZWl0aGVyIHRo
ZSBuYW1lIG9mIEFwcGxlIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKLSAqICAgICBp
dHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkCi0gKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJTUUxWYWx1ZS5oIgotCi1u
YW1lc3BhY2UgV2ViQ29yZSB7Ci0KLVNRTFZhbHVlOjpTUUxWYWx1ZShjb25zdCBTUUxWYWx1ZSYg
dmFsKQotICAgIDogbV90eXBlKHZhbC5tX3R5cGUpCi0gICAgLCBtX251bWJlcih2YWwubV9udW1i
ZXIpCi0gICAgLCBtX3N0cmluZyh2YWwubV9zdHJpbmcuaXNvbGF0ZWRDb3B5KCkpCi17Ci19Ci0K
LVN0cmluZyBTUUxWYWx1ZTo6c3RyaW5nKCkgY29uc3QKLXsKLSAgICBBU1NFUlQobV90eXBlID09
IFN0cmluZ1ZhbHVlKTsKLQotICAgIC8vIE11c3QgcmV0dXJuIGEgY29weSBzaW5jZSByZWYtc2hh
cmVkIFN0cmluZ3MgYXJlIG5vdCB0aHJlYWQgc2FmZQotICAgIHJldHVybiBtX3N0cmluZy5pc29s
YXRlZENvcHkoKTsKLX0KLQotZG91YmxlIFNRTFZhbHVlOjpudW1iZXIoKSBjb25zdAotewotICAg
IEFTU0VSVChtX3R5cGUgPT0gTnVtYmVyVmFsdWUpOwotCi0gICAgcmV0dXJuIG1fbnVtYmVyOwot
fQotCi19CgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwv
U1FMVmFsdWUuY3BwCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX18KRGVsZXRlZDogc3ZuOmVvbC1zdHlsZQojIyAtMSArMCww
ICMjCi1uYXRpdmUKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTFZhbHVlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vc3FsL1NRTFZhbHVlLmgJKHJldmlzaW9uIDIxMDEyMykKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxWYWx1ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiwz
MyArMjYsMTMgQEAKICAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBTUUxWYWx1ZV9oCi0jZGVm
aW5lIFNRTFZhbHVlX2gKKyNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSA8d3RmL1RocmVhZGluZy5o
PgorI2luY2x1ZGUgPHd0Zi9WYXJpYW50Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5n
Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotICAgIGNsYXNzIFNRTFZhbHVlIHsKLSAgICBw
dWJsaWM6Ci0gICAgICAgIGVudW0gVHlwZSB7IE51bGxWYWx1ZSwgTnVtYmVyVmFsdWUsIFN0cmlu
Z1ZhbHVlIH07Cit1c2luZyBTUUxWYWx1ZSA9IFZhcmlhbnQ8c3RkOjpudWxscHRyX3QsIFN0cmlu
ZywgZG91YmxlPjsKIAotICAgICAgICBTUUxWYWx1ZSgpIDogbV90eXBlKE51bGxWYWx1ZSksIG1f
bnVtYmVyKDAuMCkgeyB9Ci0gICAgICAgIFNRTFZhbHVlKGRvdWJsZSBudW1iZXIpIDogbV90eXBl
KE51bWJlclZhbHVlKSwgbV9udW1iZXIobnVtYmVyKSB7IH0KLSAgICAgICAgU1FMVmFsdWUoY29u
c3QgU3RyaW5nJiBzKSA6IG1fdHlwZShTdHJpbmdWYWx1ZSksIG1fbnVtYmVyKDAuMCksIG1fc3Ry
aW5nKHMpIHsgfQotICAgICAgICBTUUxWYWx1ZShjb25zdCBTUUxWYWx1ZSYpOwotCi0gICAgICAg
IFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQotCi0gICAgICAgIFN0cmluZyBz
dHJpbmcoKSBjb25zdDsKLSAgICAgICAgZG91YmxlIG51bWJlcigpIGNvbnN0OwotCi0gICAgcHJp
dmF0ZToKLSAgICAgICAgVHlwZSBtX3R5cGU7Ci0gICAgICAgIGRvdWJsZSBtX251bWJlcjsKLSAg
ICAgICAgU3RyaW5nIG1fc3RyaW5nOwotICAgIH07CiB9OwotCi0jZW5kaWYKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVTdGF0ZW1lbnQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVTdGF0ZW1lbnQuY3BwCShyZXZpc2lv
biAyMTAxMjMpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlU3RhdGVtZW50
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIlNRTFZhbHVl
LmgiCiAjaW5jbHVkZSA8c3FsaXRlMy5oPgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+Cisj
aW5jbHVkZSA8d3RmL1ZhcmlhbnQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdWaWV3Lmg+
CiAKIC8vIFNRTGl0ZSAzLjYuMTYgbWFrZXMgc3FsaXRlM19wcmVwYXJlX3YyIGF1dG9tYXRpY2Fs
bHkgcmV0cnkgcHJlcGFyaW5nIHRoZSBzdGF0ZW1lbnQKQEAgLTI0MCwxNyArMjQxLDExIEBAIGlu
dCBTUUxpdGVTdGF0ZW1lbnQ6OmJpbmROdWxsKGludCBpbmRleCkKIAogaW50IFNRTGl0ZVN0YXRl
bWVudDo6YmluZFZhbHVlKGludCBpbmRleCwgY29uc3QgU1FMVmFsdWUmIHZhbHVlKQogewotICAg
IHN3aXRjaCAodmFsdWUudHlwZSgpKSB7Ci0gICAgICAgIGNhc2UgU1FMVmFsdWU6OlN0cmluZ1Zh
bHVlOgotICAgICAgICAgICAgcmV0dXJuIGJpbmRUZXh0KGluZGV4LCB2YWx1ZS5zdHJpbmcoKSk7
Ci0gICAgICAgIGNhc2UgU1FMVmFsdWU6Ok51bWJlclZhbHVlOgotICAgICAgICAgICAgcmV0dXJu
IGJpbmREb3VibGUoaW5kZXgsIHZhbHVlLm51bWJlcigpKTsKLSAgICAgICAgY2FzZSBTUUxWYWx1
ZTo6TnVsbFZhbHVlOgotICAgICAgICAgICAgcmV0dXJuIGJpbmROdWxsKGluZGV4KTsKLSAgICB9
Ci0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gU1FMSVRFX0VSUk9SOwor
ICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKHZhbHVlLAorICAgICAgICBbJl0gKGNvbnN0IHN0ZDo6
bnVsbHB0cl90JikgeyByZXR1cm4gYmluZE51bGwoaW5kZXgpOyB9LAorICAgICAgICBbJl0gKGNv
bnN0IFN0cmluZyYgc3RyaW5nKSB7IHJldHVybiBiaW5kVGV4dChpbmRleCwgc3RyaW5nKTsgfSwK
KyAgICAgICAgWyZdIChkb3VibGUgbnVtYmVyKSB7IHJldHVybiBiaW5kRG91YmxlKGluZGV4LCBu
dW1iZXIpOyB9CisgICAgKTsKIH0KIAogdW5zaWduZWQgU1FMaXRlU3RhdGVtZW50OjpiaW5kUGFy
YW1ldGVyQ291bnQoKSBjb25zdApAQCAtMzA3LDkgKzMwMiw5IEBAIFNRTFZhbHVlIFNRTGl0ZVN0
YXRlbWVudDo6Z2V0Q29sdW1uVmFsdWUKICAgICBBU1NFUlQoY29sID49IDApOwogICAgIGlmICgh
bV9zdGF0ZW1lbnQpCiAgICAgICAgIGlmIChwcmVwYXJlQW5kU3RlcCgpICE9IFNRTElURV9ST1cp
Ci0gICAgICAgICAgICByZXR1cm4gU1FMVmFsdWUoKTsKKyAgICAgICAgICAgIHJldHVybiBTUUxW
YWx1ZSB7IG51bGxwdHIgfTsKICAgICBpZiAoY29sdW1uQ291bnQoKSA8PSBjb2wpCi0gICAgICAg
IHJldHVybiBTUUxWYWx1ZSgpOworICAgICAgICByZXR1cm4gU1FMVmFsdWUgeyBudWxscHRyIH07
CiAKICAgICAvLyBTUUxpdGUgaXMgdHlwZWQgcGVyIHZhbHVlLiBvcHRpb25hbCBjb2x1bW4gdHlw
ZXMgYXJlCiAgICAgLy8gIihtb3N0bHkpIGlnbm9yZWQiCkBAIC0zMTcsMTkgKzMxMiwyMCBAQCBT
UUxWYWx1ZSBTUUxpdGVTdGF0ZW1lbnQ6OmdldENvbHVtblZhbHVlCiAgICAgc3dpdGNoIChzcWxp
dGUzX3ZhbHVlX3R5cGUodmFsdWUpKSB7CiAgICAgICAgIGNhc2UgU1FMSVRFX0lOVEVHRVI6ICAg
IC8vIFNRTFZhbHVlIGFuZCBKUyBkb24ndCByZXByZXNlbnQgaW50ZWdlcnMsIHNvIHVzZSBGTE9B
VCAtY2FzZQogICAgICAgICBjYXNlIFNRTElURV9GTE9BVDoKLSAgICAgICAgICAgIHJldHVybiBT
UUxWYWx1ZShzcWxpdGUzX3ZhbHVlX2RvdWJsZSh2YWx1ZSkpOworICAgICAgICAgICAgcmV0dXJu
IFNRTFZhbHVlIHsgc3FsaXRlM192YWx1ZV9kb3VibGUodmFsdWUpIH07CiAgICAgICAgIGNhc2Ug
U1FMSVRFX0JMT0I6ICAgICAgIC8vIFNRTFZhbHVlIGFuZCBKUyBkb24ndCByZXByZXNlbnQgYmxv
YnMsIHNvIHVzZSBURVhUIC1jYXNlCiAgICAgICAgIGNhc2UgU1FMSVRFX1RFWFQ6IHsKICAgICAg
ICAgICAgIGNvbnN0IFVDaGFyKiBzdHJpbmcgPSByZWludGVycHJldF9jYXN0PGNvbnN0IFVDaGFy
Kj4oc3FsaXRlM192YWx1ZV90ZXh0MTYodmFsdWUpKTsKLSAgICAgICAgICAgIHJldHVybiBTUUxW
YWx1ZShTdHJpbmdJbXBsOjpjcmVhdGU4Qml0SWZQb3NzaWJsZShzdHJpbmcpKTsKKyAgICAgICAg
ICAgIHJldHVybiBTUUxWYWx1ZSB7IFN0cmluZ0ltcGw6OmNyZWF0ZThCaXRJZlBvc3NpYmxlKHN0
cmluZykgfTsKICAgICAgICAgfQogICAgICAgICBjYXNlIFNRTElURV9OVUxMOgotICAgICAgICAg
ICAgcmV0dXJuIFNRTFZhbHVlKCk7CisgICAgICAgICAgICByZXR1cm4gU1FMVmFsdWUgeyBudWxs
cHRyIH07CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBicmVhazsKICAgICB9CisKICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gU1FMVmFsdWUoKTsKKyAgICByZXR1
cm4gU1FMVmFsdWUgeyBudWxscHRyIH07CiB9CiAKIFN0cmluZyBTUUxpdGVTdGF0ZW1lbnQ6Omdl
dENvbHVtblRleHQoaW50IGNvbCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9T
UUxpdGVTdGF0ZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9z
cWwvU1FMaXRlU3RhdGVtZW50LmgJKHJldmlzaW9uIDIxMDEyMykKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3NxbC9TUUxpdGVTdGF0ZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjMsMTcg
KzIzLDE1IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKICAqLwogCi0jaWZuZGVmIFNRTGl0ZVN0YXRlbWVu
dF9oCi0jZGVmaW5lIFNRTGl0ZVN0YXRlbWVudF9oCisjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUg
IlNRTFZhbHVlLmgiCiAjaW5jbHVkZSAiU1FMaXRlRGF0YWJhc2UuaCIKIAogc3RydWN0IHNxbGl0
ZTNfc3RtdDsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBTUUxWYWx1ZTsKLQogY2xh
c3MgU1FMaXRlU3RhdGVtZW50IHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShTUUxpdGVTdGF0
ZW1lbnQpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKQEAgLTEwNCw1ICsxMDIs
MyBAQCBwcml2YXRlOgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8g
U1FMaXRlU3RhdGVtZW50X2gKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxMDEyMykKKysrIExheW91dFRl
c3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDE2LTEyLTIy
ICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgW1dlYklETF0gUmVtb3Zl
IGN1c3RvbSBiaW5kaW5ncyBmb3IgV2ViU1FMIGNvZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NjQ0MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogc3RvcmFnZS93ZWJzcWwvZXhlY3V0ZS1zcWwtYXJn
cy1leHBlY3RlZC50eHQ6CisgICAgICAgICogc3RvcmFnZS93ZWJzcWwvZXhlY3V0ZS1zcWwtYXJn
cy5qczoKKyAgICAgICAgVXBkYXRlIHRlc3QgYW5kIHJlc3VsdCB0byBiZSBzbGlnaHRseSBtb3Jl
IHN0cmljdCBhYm91dCBmdW5jdGlvbnMgdGFraW5nIHNlcXVlbmNlcy4KKwogMjAxNi0xMi0yMiAg
QnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBOZXN0ZWQgY2Fs
bHMgdG8gc2V0RG9jdW1lbnQgY2FuIG9taXQgZmlyaW5nICd1bmxvYWQnIGV2ZW50cwpJbmRleDog
TGF5b3V0VGVzdHMvc3RvcmFnZS93ZWJzcWwvZXhlY3V0ZS1zcWwtYXJncy1leHBlY3RlZC50eHQK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvc3RvcmFnZS93ZWJzcWwvZXhlY3V0ZS1zcWwtYXJn
cy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDIxMDEyMykKKysrIExheW91dFRlc3RzL3N0b3JhZ2Uv
d2Vic3FsL2V4ZWN1dGUtc3FsLWFyZ3MtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC02
LDE1ICs2LDEwIEBAIFBBU1MuIGV4ZWN1dGVTcWwoIiIsIG51bGwpIGRpZCBub3QgdGhyb3cKIFBB
U1MuIGV4ZWN1dGVTcWwoIiIsIHVuZGVmaW5lZCkgZGlkIG5vdCB0aHJvdyBhbiBleGNlcHRpb24K
IFBBU1MuIGV4ZWN1dGVTcWwoIiIsIFtdKSBkaWQgbm90IHRocm93IGFuIGV4Y2VwdGlvbgogUEFT
Uy4gZXhlY3V0ZVNxbCgiIiwgWyAiYXJnMCIgXSkgZGlkIG5vdCB0aHJvdyBhbiBleGNlcHRpb24K
LVBBU1MuIGV4ZWN1dGVTcWwoIiIsIHsgfSkgZGlkIG5vdCB0aHJvdyBhbiBleGNlcHRpb24KLVBB
U1MuIGV4ZWN1dGVTcWwoIiIsIHsgbGVuZ3RoOiAwIH0pIGRpZCBub3QgdGhyb3cgYW4gZXhjZXB0
aW9uCi1QQVNTLiBleGVjdXRlU3FsKCIiLCB7IGxlbmd0aDogMSwgMDogImFyZzAiIH0pIGRpZCBu
b3QgdGhyb3cgYW4gZXhjZXB0aW9uCiBQQVNTLiBleGVjdXRlU3FsKCIiLCBudWxsLCBudWxsKSBk
aWQgbm90IHRocm93IGFuIGV4Y2VwdGlvbgogUEFTUy4gZXhlY3V0ZVNxbCgiIiwgbnVsbCwgdW5k
ZWZpbmVkKSBkaWQgbm90IHRocm93IGFuIGV4Y2VwdGlvbgotUEFTUy4gZXhlY3V0ZVNxbCgiIiwg
bnVsbCwgeyB9KSBkaWQgbm90IHRocm93IGFuIGV4Y2VwdGlvbgogUEFTUy4gZXhlY3V0ZVNxbCgi
IiwgbnVsbCwgbnVsbCwgbnVsbCkgZGlkIG5vdCB0aHJvdyBhbiBleGNlcHRpb24KIFBBU1MuIGV4
ZWN1dGVTcWwoIiIsIG51bGwsIG51bGwsIHVuZGVmaW5lZCkgZGlkIG5vdCB0aHJvdyBhbiBleGNl
cHRpb24KLVBBU1MuIGV4ZWN1dGVTcWwoIiIsIG51bGwsIG51bGwsIHsgfSkgZGlkIG5vdCB0aHJv
dyBhbiBleGNlcHRpb24KIFBBU1MuIGV4ZWN1dGVTcWwoKSB0aHJldyBhbiBleGNlcHRpb24gYXMg
ZXhwZWN0ZWQuCiBQQVNTLiBleGVjdXRlU3FsKHRocm93T25Ub1N0cmluZ09iamVjdCkgdGhyZXcg
YW4gZXhjZXB0aW9uIGFzIGV4cGVjdGVkLgogUEFTUy4gZXhlY3V0ZVNxbCgiIiwgdGhyb3dPbkdl
dExlbmd0aE9iamVjdCkgdGhyZXcgYW4gZXhjZXB0aW9uIGFzIGV4cGVjdGVkLgpAQCAtMjIsOCAr
MTcsMTMgQEAgUEFTUy4gZXhlY3V0ZVNxbCgiIiwgdGhyb3dPbkdldFplcm9PYmplYwogUEFTUy4g
ZXhlY3V0ZVNxbCgiIiwgWyB0aHJvd09uVG9TdHJpbmdPYmplY3QgXSkgdGhyZXcgYW4gZXhjZXB0
aW9uIGFzIGV4cGVjdGVkLgogUEFTUy4gZXhlY3V0ZVNxbCgiIiwgMCkgdGhyZXcgYW4gZXhjZXB0
aW9uIGFzIGV4cGVjdGVkLgogUEFTUy4gZXhlY3V0ZVNxbCgiIiwgIiIpIHRocmV3IGFuIGV4Y2Vw
dGlvbiBhcyBleHBlY3RlZC4KK1BBU1MuIGV4ZWN1dGVTcWwoIiIsIHsgfSkgdGhyZXcgYW4gZXhj
ZXB0aW9uIGFzIGV4cGVjdGVkLgorUEFTUy4gZXhlY3V0ZVNxbCgiIiwgeyBsZW5ndGg6IDAgfSkg
dGhyZXcgYW4gZXhjZXB0aW9uIGFzIGV4cGVjdGVkLgorUEFTUy4gZXhlY3V0ZVNxbCgiIiwgeyBs
ZW5ndGg6IDEsIDA6ICJhcmcwIiB9KSB0aHJldyBhbiBleGNlcHRpb24gYXMgZXhwZWN0ZWQuCiBQ
QVNTLiBleGVjdXRlU3FsKCIiLCBudWxsLCAwKSB0aHJldyBhbiBleGNlcHRpb24gYXMgZXhwZWN0
ZWQuCiBQQVNTLiBleGVjdXRlU3FsKCIiLCBudWxsLCAiIikgdGhyZXcgYW4gZXhjZXB0aW9uIGFz
IGV4cGVjdGVkLgogUEFTUy4gZXhlY3V0ZVNxbCgiIiwgbnVsbCwgbnVsbCwgMCkgdGhyZXcgYW4g
ZXhjZXB0aW9uIGFzIGV4cGVjdGVkLgogUEFTUy4gZXhlY3V0ZVNxbCgiIiwgbnVsbCwgbnVsbCwg
IiIpIHRocmV3IGFuIGV4Y2VwdGlvbiBhcyBleHBlY3RlZC4KK1BBU1MuIGV4ZWN1dGVTcWwoIiIs
IG51bGwsIHsgfSkgdGhyZXcgYW4gZXhjZXB0aW9uIGFzIGV4cGVjdGVkLgorUEFTUy4gZXhlY3V0
ZVNxbCgiIiwgbnVsbCwgbnVsbCwgeyB9KSB0aHJldyBhbiBleGNlcHRpb24gYXMgZXhwZWN0ZWQu
CiAKSW5kZXg6IExheW91dFRlc3RzL3N0b3JhZ2Uvd2Vic3FsL2V4ZWN1dGUtc3FsLWFyZ3MuanMK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvc3RvcmFnZS93ZWJzcWwvZXhlY3V0ZS1zcWwtYXJn
cy5qcwkocmV2aXNpb24gMjEwMTIzKQorKysgTGF5b3V0VGVzdHMvc3RvcmFnZS93ZWJzcWwvZXhl
Y3V0ZS1zcWwtYXJncy5qcwkod29ya2luZyBjb3B5KQpAQCAtMTYsMTUgKzE2LDEwIEBAIHZhciBl
eHBlY3ROb0V4Y2VwdGlvbiA9IFsKICAgICAnIiIsIHVuZGVmaW5lZCcsCiAgICAgJyIiLCBbXScs
CiAgICAgJyIiLCBbICJhcmcwIiBdJywKLSAgICAnIiIsIHsgfScsCi0gICAgJyIiLCB7IGxlbmd0
aDogMCB9JywKLSAgICAnIiIsIHsgbGVuZ3RoOiAxLCAwOiAiYXJnMCIgfScsCiAgICAgJyIiLCBu
dWxsLCBudWxsJywKICAgICAnIiIsIG51bGwsIHVuZGVmaW5lZCcsCi0gICAgJyIiLCBudWxsLCB7
IH0nLAogICAgICciIiwgbnVsbCwgbnVsbCwgbnVsbCcsCiAgICAgJyIiLCBudWxsLCBudWxsLCB1
bmRlZmluZWQnLAotICAgICciIiwgbnVsbCwgbnVsbCwgeyB9JywKIF07CiAKIHZhciBleHBlY3RF
eGNlcHRpb24gPSBbCkBAIC0zNSwxMCArMzAsMTUgQEAgdmFyIGV4cGVjdEV4Y2VwdGlvbiA9IFsK
ICAgICAnIiIsIFsgdGhyb3dPblRvU3RyaW5nT2JqZWN0IF0nLAogICAgICciIiwgMCcsCiAgICAg
JyIiLCAiIicsCisgICAgJyIiLCB7IH0nLAorICAgICciIiwgeyBsZW5ndGg6IDAgfScsCisgICAg
JyIiLCB7IGxlbmd0aDogMSwgMDogImFyZzAiIH0nLAogICAgICciIiwgbnVsbCwgMCcsCiAgICAg
JyIiLCBudWxsLCAiIicsCiAgICAgJyIiLCBudWxsLCBudWxsLCAwJywKICAgICAnIiIsIG51bGws
IG51bGwsICIiJywKKyAgICAnIiIsIG51bGwsIHsgfScsCisgICAgJyIiLCBudWxsLCBudWxsLCB7
IH0nLAogXTsKIAogZnVuY3Rpb24gdHJ5RXhlY3V0ZVNxbCh0cmFuc2FjdGlvbiwgcGFyYW1ldGVy
TGlzdCkKQEAgLTgwLDcgKzgwLDYgQEAgZnVuY3Rpb24gcnVuVHJhbnNhY3Rpb25UZXN0cyh0cmFu
c2FjdGlvbgogCiBmdW5jdGlvbiBydW5UZXN0KCkKIHsKLQogICAgIHZhciBkYiA9IG9wZW5EYXRh
YmFzZVdpdGhTdWZmaXgoIkV4ZWN1dGVTUUxBcmdzVGVzdCIsICIxLjAiLCAiVGVzdCBvZiBoYW5k
bGluZyBvZiB0aGUgYXJndW1lbnRzIHRvIFNRTFRyYW5zYWN0aW9uLmV4ZWN1dGVTcWwiLCAxKTsK
ICAgICBkYi50cmFuc2FjdGlvbihydW5UcmFuc2FjdGlvblRlc3RzKTsKIH0K
</data>
<flag name="review"
          id="320004"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>