<?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>131530</bug_id>
          
          <creation_ts>2014-04-10 22:24:36 -0700</creation_ts>
          <short_desc>JSMainThreadExecState::call() should clear exceptions before returning</short_desc>
          <delta_ts>2014-04-11 13:26:18 -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>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Lam">mark.lam</reporter>
          <assigned_to name="Mark Lam">mark.lam</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>mhahnenberg</cc>
    
    <cc>mkwst</cc>
    
    <cc>mmirman</cc>
    
    <cc>msaboff</cc>
    
    <cc>oliver</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>999792</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2014-04-10 22:24:36 -0700</bug_when>
    <thetext>Currently, JSMainThreadExecState::call() does not clear any pending exceptions in the VM before returning.  On returning, the JSMainThreadExecState destructor may re-enter the VM to notify MutationObservers.  This can result in a crash because the VM expects exceptions to be cleared at entry.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>999794</commentid>
    <comment_count>1</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2014-04-10 22:25:04 -0700</bug_when>
    <thetext>&lt;rdar://problem/16525609&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>999956</commentid>
    <comment_count>2</comment_count>
      <attachid>229145</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2014-04-11 11:44:45 -0700</bug_when>
    <thetext>Created attachment 229145
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>999971</commentid>
    <comment_count>3</comment_count>
      <attachid>229145</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2014-04-11 12:08:16 -0700</bug_when>
    <thetext>Comment on attachment 229145
the patch

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

r=me

&gt; Source/JavaScriptCore/bindings/ScriptFunctionCall.cpp:145
&gt; +    JSValue returnedException;
&gt;      if (m_callHandler)
&gt; -        result = m_callHandler(m_exec, function, callType, callData, thisObject, m_arguments);
&gt; +        result = m_callHandler(m_exec, function, callType, callData, thisObject, m_arguments, &amp;returnedException);
&gt;      else
&gt; -        result = JSC::call(m_exec, function, callType, callData, thisObject, m_arguments);
&gt; +        result = JSC::call(m_exec, function, callType, callData, thisObject, m_arguments, &amp;returnedException);
&gt;  
&gt; -    if (m_exec-&gt;hadException()) {
&gt; +    if (returnedException) {
&gt;          hadException = true;
&gt;          return Deprecated::ScriptValue();
&gt;      }

Previously, this function did not clear the VM&apos;s exception. Now, it does. Was that behavior change intentional? If so, you should explain your intent in the ChangeLog, and add a test for this case to your test case.

&gt; Source/JavaScriptCore/bindings/ScriptFunctionCall.h:74
&gt; +    typedef JSC::JSValue (*ScriptFunctionCallHandler)(JSC::ExecState* exec, JSC::JSValue functionObject, JSC::CallType callType, const JSC::CallData&amp; callData, JSC::JSValue thisValue, const JSC::ArgList&amp; args, JSC::JSValue* returnedException);

Let&apos;s just call it &quot;exception&quot;.

&gt; Source/JavaScriptCore/inspector/InspectorEnvironment.h:37
&gt; +typedef JSC::JSValue (*InspectorFunctionCallHandler)(JSC::ExecState* exec, JSC::JSValue functionObject, JSC::CallType callType, const JSC::CallData&amp; callData, JSC::JSValue thisValue, const JSC::ArgList&amp; args, JSC::JSValue* exception);

Ditto.

&gt; Source/JavaScriptCore/runtime/CallData.cpp:42
&gt; +JSValue call(ExecState* exec, JSValue functionObject, CallType callType, const CallData&amp; callData, JSValue thisValue, const ArgList&amp; args, JSValue* returnedException)

Ditto.

&gt; Source/WebCore/ChangeLog:64
&gt; +        * bindings/js/JSNodeFilterCondition.cpp:
&gt; +        (WebCore::JSNodeFilterCondition::acceptNode):

Needs a comment explaining why FilterCondition wants to pass through its exception.

&gt; Source/WebCore/bindings/js/JSMainThreadExecState.cpp:49
&gt; +JSC::JSValue functionCallHandlerFromAnyThread(JSC::ExecState* exec, JSC::JSValue functionObject, JSC::CallType callType, const JSC::CallData&amp; callData, JSC::JSValue thisValue, const JSC::ArgList&amp; args, JSC::JSValue* returnedException)

Ditto.

&gt; Source/WebCore/bindings/js/JSMainThreadExecState.h:69
&gt; +        ASSERT(!exec-&gt;hadException());

Let&apos;s move this ASSERT to ~JSMainThreadExecState, to catch all cases.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1000001</commentid>
    <comment_count>4</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2014-04-11 13:26:18 -0700</bug_when>
    <thetext>Thanks for the review.  The patch has been updated with the feedback, and landed in r167142: &lt;http://trac.webkit.org/r167142&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>229145</attachid>
            <date>2014-04-11 11:44:45 -0700</date>
            <delta_ts>2014-04-11 12:08:15 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>bug-131530.patch</filename>
            <type>text/plain</type>
            <size>26804</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTY3MTM0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI0IEBA
CisyMDE0LTA0LTExICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBK
U01haW5UaHJlYWRFeGVjU3RhdGU6OmNhbGwoKSBzaG91bGQgY2xlYXIgZXhjZXB0aW9ucyBiZWZv
cmUgcmV0dXJuaW5nLgorICAgICAgICA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMTMxNTMwPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIGEgdmVy
c2lvbiBvZiBKU0M6OmNhbGwoKSB0aGF0IHJldHVybiBhbnkgdW5jYXVnaHQgZXhjZXB0aW9uIGlu
c3RlYWQKKyAgICAgICAgb2YgbGVhdmluZyBpdCBwZW5kaW5nIGluIHRoZSBWTS4KKworICAgICAg
ICBBcyBwYXJ0IG9mIHRoaXMgY2hhbmdlLCBJIHVwZGF0ZWQgdmFyaW91cyBwYXJ0cyBvZiB0aGUg
Y29kZSBiYXNlIHRvIHVzZSB0aGUKKyAgICAgICAgbmV3IEFQSSBhcyBuZWVkZWQuCisKKyAgICAg
ICAgKiBiaW5kaW5ncy9TY3JpcHRGdW5jdGlvbkNhbGwuY3BwOgorICAgICAgICAoRGVwcmVjYXRl
ZDo6U2NyaXB0RnVuY3Rpb25DYWxsOjpjYWxsKToKKyAgICAgICAgKiBiaW5kaW5ncy9TY3JpcHRG
dW5jdGlvbkNhbGwuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRW52aXJvbm1lbnQu
aDoKKyAgICAgICAgKiBydW50aW1lL0NhbGxEYXRhLmNwcDoKKyAgICAgICAgKEpTQzo6Y2FsbCk6
CisgICAgICAgICogcnVudGltZS9DYWxsRGF0YS5oOgorCiAyMDE0LTA0LTExICBKdWxpZW4gQnJp
YW5jZWF1ICA8amJyaWFuY2VAY2lzY28uY29tPgogCiAgICAgICAgIEZpeCBMTEludCBmb3Igc2g0
IGFyY2hpdGVjdHVyZSAoYnJva2VuIHNpbmNlIEMgc3RhY2sgbWVyZ2UpLgpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2JpbmRpbmdzL1NjcmlwdEZ1bmN0aW9uQ2FsbC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2JpbmRpbmdzL1NjcmlwdEZ1bmN0aW9uQ2FsbC5j
cHAJKHJldmlzaW9uIDE2NzAzMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9T
Y3JpcHRGdW5jdGlvbkNhbGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzMsMTIgKzEzMywxMyBA
QCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSBTY3JpcHRGdW5jdGlvbkNhCiAgICAgICAgIHJldHVy
biBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSgpOwogCiAgICAgSlNWYWx1ZSByZXN1bHQ7CisgICAg
SlNWYWx1ZSByZXR1cm5lZEV4Y2VwdGlvbjsKICAgICBpZiAobV9jYWxsSGFuZGxlcikKLSAgICAg
ICAgcmVzdWx0ID0gbV9jYWxsSGFuZGxlcihtX2V4ZWMsIGZ1bmN0aW9uLCBjYWxsVHlwZSwgY2Fs
bERhdGEsIHRoaXNPYmplY3QsIG1fYXJndW1lbnRzKTsKKyAgICAgICAgcmVzdWx0ID0gbV9jYWxs
SGFuZGxlcihtX2V4ZWMsIGZ1bmN0aW9uLCBjYWxsVHlwZSwgY2FsbERhdGEsIHRoaXNPYmplY3Qs
IG1fYXJndW1lbnRzLCAmcmV0dXJuZWRFeGNlcHRpb24pOwogICAgIGVsc2UKLSAgICAgICAgcmVz
dWx0ID0gSlNDOjpjYWxsKG1fZXhlYywgZnVuY3Rpb24sIGNhbGxUeXBlLCBjYWxsRGF0YSwgdGhp
c09iamVjdCwgbV9hcmd1bWVudHMpOworICAgICAgICByZXN1bHQgPSBKU0M6OmNhbGwobV9leGVj
LCBmdW5jdGlvbiwgY2FsbFR5cGUsIGNhbGxEYXRhLCB0aGlzT2JqZWN0LCBtX2FyZ3VtZW50cywg
JnJldHVybmVkRXhjZXB0aW9uKTsKIAotICAgIGlmIChtX2V4ZWMtPmhhZEV4Y2VwdGlvbigpKSB7
CisgICAgaWYgKHJldHVybmVkRXhjZXB0aW9uKSB7CiAgICAgICAgIGhhZEV4Y2VwdGlvbiA9IHRy
dWU7CiAgICAgICAgIHJldHVybiBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSgpOwogICAgIH0KSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9TY3JpcHRGdW5jdGlvbkNhbGwuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvU2NyaXB0RnVuY3Rp
b25DYWxsLmgJKHJldmlzaW9uIDE2NzAzMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iaW5k
aW5ncy9TY3JpcHRGdW5jdGlvbkNhbGwuaAkod29ya2luZyBjb3B5KQpAQCAtNzEsNyArNzEsNyBA
QCBwcml2YXRlOgogCiBjbGFzcyBKU19FWFBPUlRfUFJJVkFURSBTY3JpcHRGdW5jdGlvbkNhbGwg
OiBwdWJsaWMgU2NyaXB0Q2FsbEFyZ3VtZW50SGFuZGxlciB7CiBwdWJsaWM6Ci0gICAgdHlwZWRl
ZiBKU0M6OkpTVmFsdWUgKCpTY3JpcHRGdW5jdGlvbkNhbGxIYW5kbGVyKShKU0M6OkV4ZWNTdGF0
ZSogZXhlYywgSlNDOjpKU1ZhbHVlIGZ1bmN0aW9uT2JqZWN0LCBKU0M6OkNhbGxUeXBlIGNhbGxU
eXBlLCBjb25zdCBKU0M6OkNhbGxEYXRhJiBjYWxsRGF0YSwgSlNDOjpKU1ZhbHVlIHRoaXNWYWx1
ZSwgY29uc3QgSlNDOjpBcmdMaXN0JiBhcmdzKTsKKyAgICB0eXBlZGVmIEpTQzo6SlNWYWx1ZSAo
KlNjcmlwdEZ1bmN0aW9uQ2FsbEhhbmRsZXIpKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0M6OkpT
VmFsdWUgZnVuY3Rpb25PYmplY3QsIEpTQzo6Q2FsbFR5cGUgY2FsbFR5cGUsIGNvbnN0IEpTQzo6
Q2FsbERhdGEmIGNhbGxEYXRhLCBKU0M6OkpTVmFsdWUgdGhpc1ZhbHVlLCBjb25zdCBKU0M6OkFy
Z0xpc3QmIGFyZ3MsIEpTQzo6SlNWYWx1ZSogcmV0dXJuZWRFeGNlcHRpb24pOwogICAgIFNjcmlw
dEZ1bmN0aW9uQ2FsbChjb25zdCBTY3JpcHRPYmplY3QmIHRoaXNPYmplY3QsIGNvbnN0IFN0cmlu
ZyYgbmFtZSwgU2NyaXB0RnVuY3Rpb25DYWxsSGFuZGxlciBoYW5kbGVyID0gbnVsbHB0cik7CiAg
ICAgU2NyaXB0VmFsdWUgY2FsbChib29sJiBoYWRFeGNlcHRpb24pOwogICAgIFNjcmlwdFZhbHVl
IGNhbGwoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
RW52aXJvbm1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckVudmlyb25tZW50LmgJKHJldmlzaW9uIDE2NzAzMSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRW52aXJvbm1lbnQuaAkod29ya2luZyBj
b3B5KQpAQCAtMzQsNyArMzQsNyBAQCBjbGFzcyBTb3VyY2VDb2RlOwogCiBuYW1lc3BhY2UgSW5z
cGVjdG9yIHsKIAotdHlwZWRlZiBKU0M6OkpTVmFsdWUgKCpJbnNwZWN0b3JGdW5jdGlvbkNhbGxI
YW5kbGVyKShKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNDOjpKU1ZhbHVlIGZ1bmN0aW9uT2JqZWN0
LCBKU0M6OkNhbGxUeXBlIGNhbGxUeXBlLCBjb25zdCBKU0M6OkNhbGxEYXRhJiBjYWxsRGF0YSwg
SlNDOjpKU1ZhbHVlIHRoaXNWYWx1ZSwgY29uc3QgSlNDOjpBcmdMaXN0JiBhcmdzKTsKK3R5cGVk
ZWYgSlNDOjpKU1ZhbHVlICgqSW5zcGVjdG9yRnVuY3Rpb25DYWxsSGFuZGxlcikoSlNDOjpFeGVj
U3RhdGUqIGV4ZWMsIEpTQzo6SlNWYWx1ZSBmdW5jdGlvbk9iamVjdCwgSlNDOjpDYWxsVHlwZSBj
YWxsVHlwZSwgY29uc3QgSlNDOjpDYWxsRGF0YSYgY2FsbERhdGEsIEpTQzo6SlNWYWx1ZSB0aGlz
VmFsdWUsIGNvbnN0IEpTQzo6QXJnTGlzdCYgYXJncywgSlNDOjpKU1ZhbHVlKiBleGNlcHRpb24p
OwogdHlwZWRlZiBKU0M6OkpTVmFsdWUgKCpJbnNwZWN0b3JFdmFsdWF0ZUhhbmRsZXIpKEpTQzo6
RXhlY1N0YXRlKiwgY29uc3QgSlNDOjpTb3VyY2VDb2RlJiwgSlNDOjpKU1ZhbHVlIHRoaXNWYWx1
ZSwgSlNDOjpKU1ZhbHVlKiBleGNlcHRpb24pOwogCiBjbGFzcyBJbnNwZWN0b3JFbnZpcm9ubWVu
dCB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWxsRGF0YS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FsbERhdGEuY3BwCShy
ZXZpc2lvbiAxNjcwMzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWxsRGF0
YS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5LDQgKzM5LDE3IEBAIEpTVmFsdWUgY2FsbChFeGVj
U3RhdGUqIGV4ZWMsIEpTVmFsdWUgZnUKICAgICByZXR1cm4gZXhlYy0+aW50ZXJwcmV0ZXIoKS0+
ZXhlY3V0ZUNhbGwoZXhlYywgYXNPYmplY3QoZnVuY3Rpb25PYmplY3QpLCBjYWxsVHlwZSwgY2Fs
bERhdGEsIHRoaXNWYWx1ZSwgYXJncyk7CiB9CiAKK0pTVmFsdWUgY2FsbChFeGVjU3RhdGUqIGV4
ZWMsIEpTVmFsdWUgZnVuY3Rpb25PYmplY3QsIENhbGxUeXBlIGNhbGxUeXBlLCBjb25zdCBDYWxs
RGF0YSYgY2FsbERhdGEsIEpTVmFsdWUgdGhpc1ZhbHVlLCBjb25zdCBBcmdMaXN0JiBhcmdzLCBK
U1ZhbHVlKiByZXR1cm5lZEV4Y2VwdGlvbikKK3sKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IGNhbGwo
ZXhlYywgZnVuY3Rpb25PYmplY3QsIGNhbGxUeXBlLCBjYWxsRGF0YSwgdGhpc1ZhbHVlLCBhcmdz
KTsKKyAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpIHsKKyAgICAgICAgaWYgKHJldHVybmVk
RXhjZXB0aW9uKQorICAgICAgICAgICAgKnJldHVybmVkRXhjZXB0aW9uID0gZXhlYy0+ZXhjZXB0
aW9uKCk7CisgICAgICAgIGV4ZWMtPmNsZWFyRXhjZXB0aW9uKCk7CisgICAgICAgIHJldHVybiBq
c1VuZGVmaW5lZCgpOworICAgIH0KKyAgICBSRUxFQVNFX0FTU0VSVChyZXN1bHQpOworICAgIHJl
dHVybiByZXN1bHQ7Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ2FsbERhdGEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9DYWxsRGF0YS5oCShyZXZpc2lvbiAxNjcwMzEpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWxsRGF0YS5oCSh3b3JraW5nIGNvcHkpCkBAIC01OCw2
ICs1OCw3IEBAIHVuaW9uIENhbGxEYXRhIHsKIH07CiAKIEpTX0VYUE9SVF9QUklWQVRFIEpTVmFs
dWUgY2FsbChFeGVjU3RhdGUqLCBKU1ZhbHVlIGZ1bmN0aW9uT2JqZWN0LCBDYWxsVHlwZSwgY29u
c3QgQ2FsbERhdGEmLCBKU1ZhbHVlIHRoaXNWYWx1ZSwgY29uc3QgQXJnTGlzdCYpOworSlNfRVhQ
T1JUX1BSSVZBVEUgSlNWYWx1ZSBjYWxsKEV4ZWNTdGF0ZSosIEpTVmFsdWUgZnVuY3Rpb25PYmpl
Y3QsIENhbGxUeXBlLCBjb25zdCBDYWxsRGF0YSYsIEpTVmFsdWUgdGhpc1ZhbHVlLCBjb25zdCBB
cmdMaXN0JiwgSlNWYWx1ZSogcmV0dXJuZWRFeGNlcHRpb24pOwogCiB9IC8vIG5hbWVzcGFjZSBK
U0MKIApJbmRleDogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTY3MTM0KQorKysgU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNzMgQEAKKzIwMTQtMDQtMTEgIE1h
cmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgorCisgICAgICAgIEpTTWFpblRocmVhZEV4ZWNT
dGF0ZTo6Y2FsbCgpIHNob3VsZCBjbGVhciBleGNlcHRpb25zIGJlZm9yZSByZXR1cm5pbmcuCisg
ICAgICAgIDxodHRwczovL3dlYmtpdC5vcmcvYi8xMzE1MzA+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdDogZmFzdC9kb20vcmVncmVzcy0xMzE1
MzAuaHRtbAorCisgICAgICAgIFByZXZpb3VzbHksIEpTTWFpblRocmVhZEV4ZWNTdGF0ZTo6Y2Fs
bCgpIGRpZCBub3QgY2xlYXIgYW55IHBlbmRpbmcKKyAgICAgICAgZXhjZXB0aW9ucyBpbiB0aGUg
Vk0gYmVmb3JlIHJldHVybmluZy4gIE9uIHJldHVybmluZywgdGhlCisgICAgICAgIEpTTWFpblRo
cmVhZEV4ZWNTdGF0ZSBkZXN0cnVjdG9yIG1heSByZS1lbnRlciB0aGUgVk0gdG8gbm90aWZ5Cisg
ICAgICAgIE11dGF0aW9uT2JzZXJ2ZXJzLiAgVGhpcyBtYXkgcmVzdWx0IGluIGEgY3Jhc2ggYmVj
YXVzZSB0aGUgVk0gZXhwZWN0cworICAgICAgICBleGNlcHRpb25zIHRvIGJlIGNsZWFyZWQgYXQg
ZW50cnkuCisKKyAgICAgICAgV2Ugbm93IGNoYW5nZSBKU01haW5UaHJlYWRFeGVjU3RhdGU6OmNh
bGwoKSB0byByZXR1cm4gdGhlIGV4Y2VwdGlvbgorICAgICAgICAoaWYgcHJlc2VudCkgdmlhIGFu
IGFyZ3VtZW50LCBhbmQgY2xlYXIgaXQgZnJvbSB0aGUgVk0gYmVmb3JlIHJldHVybmluZy4KKwor
ICAgICAgICBBcyBwYXJ0IG9mIHRoaXMgY2hhbmdlLCBJIHVwZGF0ZWQgdmFyaW91cyBwYXJ0cyBv
ZiB0aGUgY29kZSBiYXNlIHRvIHVzZSB0aGUKKyAgICAgICAgbmV3IEFQSSBhcyBuZWVkZWQuCisK
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0NhbGxiYWNrRGF0YS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpKU0NhbGxiYWNrRGF0YTo6aW52b2tlQ2FsbGJhY2spOgorICAgICAgICAqIGJpbmRpbmdz
L2pzL0pTQ3VzdG9tWFBhdGhOU1Jlc29sdmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTQ3Vz
dG9tWFBhdGhOU1Jlc29sdmVyOjpsb29rdXBOYW1lc3BhY2VVUkkpOgorICAgICAgICAqIGJpbmRp
bmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0VGFzay5jcHA6CisgICAgICAgIC0gQXNzZXJ0IHRoYXQg
dGhlcmUncyBubyB1bmhhbmRsZWQgZXhjZXB0aW9uIGFmdGVyIHRoZSBNaWNyb3Rhc2sgcmV0dXJu
cy4KKyAgICAgICAgICBTZWUgY29tbWVudCBmb3IgV2ViQ29yZTo6SlNNYWluVGhyZWFkRXhlY1N0
YXRlOjpydW5UYXNrIGJlbG93IGZvciBtb3JlCisgICAgICAgICAgZGV0YWlscy4KKworICAgICAg
ICAqIGJpbmRpbmdzL2pzL0pTRXJyb3JIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpT
RXJyb3JIYW5kbGVyOjpoYW5kbGVFdmVudCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNFdmVu
dExpc3RlbmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRXZlbnRMaXN0ZW5lcjo6aGFuZGxl
RXZlbnQpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTSFRNTERvY3VtZW50Q3VzdG9tLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkpTSFRNTERvY3VtZW50OjpvcGVuKToKKyAgICAgICAgLSBEb2N1
bWVudC5vcGVuKCkgY2Fubm90IGJlIHRoZSBmaXJzdCBmdW5jdGlvbiBvbiB0aGUgSlMgc3RhY2su
ICBIZW5jZSwKKyAgICAgICAgICB0aGVyZSBpcyBubyBuZWVkIHRvIHVzZSBKU01haW5UaHJlYWRF
eGVjU3RhdGUgdG8gY2FsbCBpbnRvIHRoZSBWTSwgYXMKKyAgICAgICAgICB0aGlzIGlzIG9ubHkg
bmVlZGVkIHRvIGNhdGNoIHRoZSBldmVudCBvZiByZXR1cm5pbmcgZnJvbSB0aGUgZmlyc3QKKyAg
ICAgICAgICBmdW5jdGlvbiBmb3IgdGhlIHB1cnBvc2Ugb2Ygbm90aWZ5aW5nIE11dGF0aW9uT2Jz
ZXJ2ZXJzLiAgQ2hhbmdlIHRvCisgICAgICAgICAgY2FsbCBKU0M6OmNhbGwoKSBkaXJlY3RseS4K
KworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTTWFpblRocmVhZEV4ZWNTdGF0ZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpmdW5jdGlvbkNhbGxIYW5kbGVyRnJvbUFueVRocmVhZCk6CisgICAgICAg
ICogYmluZGluZ3MvanMvSlNNYWluVGhyZWFkRXhlY1N0YXRlLmg6CisgICAgICAgIChXZWJDb3Jl
OjpKU01haW5UaHJlYWRFeGVjU3RhdGU6OmNhbGwpOgorICAgICAgICAoV2ViQ29yZTo6SlNNYWlu
VGhyZWFkRXhlY1N0YXRlOjpldmFsdWF0ZSk6CisgICAgICAgIC0gUmVtb3ZlIHRoZSBleHBsaWNp
dGx5IGFjcXVpc2l0aW9uIG9mIHRoZSBKU0xvY2sgaGVyZSBiZWNhdXNlIHdlIG5vdworICAgICAg
ICAgIGFjcXVpcmUgdGhlIEpTTG9jayBhcyBwYXJ0IG9mIHRoZSBKU01haW5UaHJlYWRFeGVjU3Rh
dGUgaW5zdGFuY2UuCisgICAgICAgIChXZWJDb3JlOjpKU01haW5UaHJlYWRFeGVjU3RhdGU6OnJ1
blRhc2spOgorICAgICAgICAtIEFkZGVkIGFuIGFzc2VydCB0byB2ZXJpZnkgdGhhdCB0aGUgdGFz
ayBkb2VzIG5vdCByZXR1cm4gd2l0aCBhbgorICAgICAgICAgIHVuaGFuZGxlZCBleGNlcHRpb24u
ICBDdXJyZW50bHksIHRoZSBvbmx5IE1pY3JvdGFzayBpbiB1c2UgaXMgZm9yIHRoZQorICAgICAg
ICAgIFByb21pc2UgaW1wbGVtZW50YXRpb24sIHdoaWNoIHdpbGwgZWF0IHRoZSBleGNlcHRpb24g
YmVmb3JlIHJldHVybmluZy4KKyAgICAgICAgICBUaGlzIGFzc2VydGlvbiBpcyBhZGRlZCBoZXJl
IHRvIHZlcmlmeSB0aGF0IHRoaXMgY29udHJhY3QgZG9lcyBub3QKKyAgICAgICAgICBpbmFkdmVy
dGFudGx5IGNoYW5nZSBpbiB0aGUgZnV0dXJlLgorICAgICAgICAoV2ViQ29yZTo6SlNNYWluVGhy
ZWFkRXhlY1N0YXRlOjpKU01haW5UaHJlYWRFeGVjU3RhdGUpOgorICAgICAgICAtIE5vdyBhY3F1
aXJlcyB0aGUgSlNMb2NrIGFzIHdlbGwgc2luY2UgYnkgZGVmaW5pdGlvbiwgd2UncmUgb25seQor
ICAgICAgICAgIGluc3RhbnRpYXRpbmcgdGhlIEpTTWFpblRocmVhZEV4ZWNTdGF0ZSBiZWNhdXNl
IHdlJ3JlIGFib3V0IHRvIGVudGVyCisgICAgICAgICAgdGhlIFZNLgorCisgICAgICAgICogYmlu
ZGluZ3MvanMvSlNNdXRhdGlvbkNhbGxiYWNrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTTXV0
YXRpb25DYWxsYmFjazo6Y2FsbCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNOb2RlRmlsdGVy
Q29uZGl0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTTm9kZUZpbHRlckNvbmRpdGlvbjo6
YWNjZXB0Tm9kZSk6CisgICAgICAgICogYmluZGluZ3MvanMvU2NoZWR1bGVkQWN0aW9uLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNjaGVkdWxlZEFjdGlvbjo6ZXhlY3V0ZUZ1bmN0aW9uSW5Db250
ZXh0KToKKyAgICAgICAgKiBiaW5kaW5ncy9vYmpjL1dlYlNjcmlwdE9iamVjdC5tbToKKyAgICAg
ICAgKFdlYkNvcmU6OmFkZEV4Y2VwdGlvblRvQ29uc29sZSk6CisgICAgICAgICgtW1dlYlNjcmlw
dE9iamVjdCBjYWxsV2ViU2NyaXB0TWV0aG9kOndpdGhBcmd1bWVudHM6XSk6CisKIDIwMTQtMDQt
MTEgIFphbiBEb2JlcnNlayAgPHpkb2JlcnNla0BpZ2FsaWEuY29tPgogCiAgICAgICAgIEF2b2lk
IFZlY3RvciBjb3BpZXMgaW4gUmVuZGVyR3JpZDo6cGxhY2VJdGVtc09uR3JpZCgpCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NhbGxiYWNrRGF0YS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDYWxsYmFja0RhdGEuY3BwCShyZXZpc2lv
biAxNjcwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NhbGxiYWNrRGF0YS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTczLDE0ICs3MywxNSBAQCBKU1ZhbHVlIEpTQ2FsbGJhY2tE
YXRhOjppbnZva2VDYWxsYmFjayhKCiAKICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29r
aWUgY29va2llID0gSlNNYWluVGhyZWFkRXhlY1N0YXRlOjppbnN0cnVtZW50RnVuY3Rpb25DYWxs
KGNvbnRleHQsIGNhbGxUeXBlLCBjYWxsRGF0YSk7CiAKKyAgICBKU1ZhbHVlIHJldHVybmVkRXhj
ZXB0aW9uOwogICAgIEpTVmFsdWUgcmVzdWx0ID0gY29udGV4dC0+aXNEb2N1bWVudCgpCi0gICAg
ICAgID8gSlNNYWluVGhyZWFkRXhlY1N0YXRlOjpjYWxsKGV4ZWMsIGZ1bmN0aW9uLCBjYWxsVHlw
ZSwgY2FsbERhdGEsIHRoaXNWYWx1ZSwgYXJncykKLSAgICAgICAgOiBKU0M6OmNhbGwoZXhlYywg
ZnVuY3Rpb24sIGNhbGxUeXBlLCBjYWxsRGF0YSwgdGhpc1ZhbHVlLCBhcmdzKTsKKyAgICAgICAg
PyBKU01haW5UaHJlYWRFeGVjU3RhdGU6OmNhbGwoZXhlYywgZnVuY3Rpb24sIGNhbGxUeXBlLCBj
YWxsRGF0YSwgdGhpc1ZhbHVlLCBhcmdzLCAmcmV0dXJuZWRFeGNlcHRpb24pCisgICAgICAgIDog
SlNDOjpjYWxsKGV4ZWMsIGZ1bmN0aW9uLCBjYWxsVHlwZSwgY2FsbERhdGEsIHRoaXNWYWx1ZSwg
YXJncywgJnJldHVybmVkRXhjZXB0aW9uKTsKIAogICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6ZGlkQ2FsbEZ1bmN0aW9uKGNvb2tpZSwgY29udGV4dCk7CiAKLSAgICBpZiAoZXhlYy0+aGFk
RXhjZXB0aW9uKCkpIHsKLSAgICAgICAgcmVwb3J0Q3VycmVudEV4Y2VwdGlvbihleGVjKTsKKyAg
ICBpZiAocmV0dXJuZWRFeGNlcHRpb24pIHsKKyAgICAgICAgcmVwb3J0RXhjZXB0aW9uKGV4ZWMs
IHJldHVybmVkRXhjZXB0aW9uKTsKICAgICAgICAgaWYgKHJhaXNlZEV4Y2VwdGlvbikKICAgICAg
ICAgICAgICpyYWlzZWRFeGNlcHRpb24gPSB0cnVlOwogICAgICAgICByZXR1cm4gcmVzdWx0OwpJ
bmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21YUGF0aE5TUmVzb2x2ZXIu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tWFBh
dGhOU1Jlc29sdmVyLmNwcAkocmV2aXNpb24gMTY3MDMxKQorKysgU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNDdXN0b21YUGF0aE5TUmVzb2x2ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05
MiwxMSArOTIsMTIgQEAgU3RyaW5nIEpTQ3VzdG9tWFBhdGhOU1Jlc29sdmVyOjpsb29rdXBOYQog
ICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3M7CiAgICAgYXJncy5hcHBlbmQoanNTdHJpbmdX
aXRoQ2FjaGUoZXhlYywgcHJlZml4KSk7CiAKLSAgICBKU1ZhbHVlIHJldHZhbCA9IEpTTWFpblRo
cmVhZEV4ZWNTdGF0ZTo6Y2FsbChleGVjLCBmdW5jdGlvbiwgY2FsbFR5cGUsIGNhbGxEYXRhLCBt
X2N1c3RvbVJlc29sdmVyLmdldCgpLCBhcmdzKTsKKyAgICBKU1ZhbHVlIHJldHVybmVkRXhjZXB0
aW9uOworICAgIEpTVmFsdWUgcmV0dmFsID0gSlNNYWluVGhyZWFkRXhlY1N0YXRlOjpjYWxsKGV4
ZWMsIGZ1bmN0aW9uLCBjYWxsVHlwZSwgY2FsbERhdGEsIG1fY3VzdG9tUmVzb2x2ZXIuZ2V0KCks
IGFyZ3MsICZyZXR1cm5lZEV4Y2VwdGlvbik7CiAKICAgICBTdHJpbmcgcmVzdWx0OwotICAgIGlm
IChleGVjLT5oYWRFeGNlcHRpb24oKSkKLSAgICAgICAgcmVwb3J0Q3VycmVudEV4Y2VwdGlvbihl
eGVjKTsKKyAgICBpZiAocmV0dXJuZWRFeGNlcHRpb24pCisgICAgICAgIHJlcG9ydEV4Y2VwdGlv
bihleGVjLCByZXR1cm5lZEV4Y2VwdGlvbik7CiAgICAgZWxzZSB7CiAgICAgICAgIGlmICghcmV0
dmFsLmlzVW5kZWZpbmVkT3JOdWxsKCkpCiAgICAgICAgICAgICByZXN1bHQgPSByZXR2YWwudG9T
dHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNET01HbG9iYWxPYmplY3RUYXNrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdFRhc2suY3BwCShyZXZpc2lvbiAxNjcwMzEp
CisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdFRhc2suY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC02NCw2ICs2NCw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIEpT
TWFpblRocmVhZEV4ZWNTdGF0ZTo6cnVuVGFzayhleGVjLCAqbV90YXNrLmdldCgpKTsKICAgICAg
ICAgZWxzZQogICAgICAgICAgICAgbV90YXNrLT5ydW4oZXhlYyk7CisgICAgICAgIEFTU0VSVCgh
ZXhlYy0+aGFkRXhjZXB0aW9uKCkpOwogICAgIH0KIAogcHJpdmF0ZToKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXJyb3JIYW5kbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0Vycm9ySGFuZGxlci5jcHAJKHJldmlzaW9uIDE2NzAz
MSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXJyb3JIYW5kbGVyLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtOTgsMTQgKzk4LDE1IEBAIHZvaWQgSlNFcnJvckhhbmRsZXI6OmhhbmRs
ZUV2ZW50KFNjcmlwdEUKICAgICAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAg
ICAgICBWTUVudHJ5U2NvcGUgZW50cnlTY29wZSh2bSwgdm0uZW50cnlTY29wZSA/IHZtLmVudHJ5
U2NvcGUtPmdsb2JhbE9iamVjdCgpIDogZ2xvYmFsT2JqZWN0KTsKIAorICAgICAgICBKU1ZhbHVl
IHJldHVybmVkRXhjZXB0aW9uOwogICAgICAgICBKU1ZhbHVlIHJldHVyblZhbHVlID0gc2NyaXB0
RXhlY3V0aW9uQ29udGV4dC0+aXNEb2N1bWVudCgpCi0gICAgICAgICAgICA/IEpTTWFpblRocmVh
ZEV4ZWNTdGF0ZTo6Y2FsbChleGVjLCBqc0Z1bmN0aW9uLCBjYWxsVHlwZSwgY2FsbERhdGEsIGds
b2JhbE9iamVjdCwgYXJncykKLSAgICAgICAgICAgIDogSlNDOjpjYWxsKGV4ZWMsIGpzRnVuY3Rp
b24sIGNhbGxUeXBlLCBjYWxsRGF0YSwgZ2xvYmFsT2JqZWN0LCBhcmdzKTsKKyAgICAgICAgICAg
ID8gSlNNYWluVGhyZWFkRXhlY1N0YXRlOjpjYWxsKGV4ZWMsIGpzRnVuY3Rpb24sIGNhbGxUeXBl
LCBjYWxsRGF0YSwgZ2xvYmFsT2JqZWN0LCBhcmdzLCAmcmV0dXJuZWRFeGNlcHRpb24pCisgICAg
ICAgICAgICA6IEpTQzo6Y2FsbChleGVjLCBqc0Z1bmN0aW9uLCBjYWxsVHlwZSwgY2FsbERhdGEs
IGdsb2JhbE9iamVjdCwgYXJncywgJnJldHVybmVkRXhjZXB0aW9uKTsKIAogICAgICAgICBnbG9i
YWxPYmplY3QtPnNldEN1cnJlbnRFdmVudChzYXZlZEV2ZW50KTsKIAotICAgICAgICBpZiAoZXhl
Yy0+aGFkRXhjZXB0aW9uKCkpCi0gICAgICAgICAgICByZXBvcnRDdXJyZW50RXhjZXB0aW9uKGV4
ZWMpOworICAgICAgICBpZiAocmV0dXJuZWRFeGNlcHRpb24pCisgICAgICAgICAgICByZXBvcnRF
eGNlcHRpb24oZXhlYywgcmV0dXJuZWRFeGNlcHRpb24pOwogICAgICAgICBlbHNlIHsKICAgICAg
ICAgICAgIGlmIChyZXR1cm5WYWx1ZS5pc1RydWUoKSkKICAgICAgICAgICAgICAgICBldmVudC0+
cHJldmVudERlZmF1bHQoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZl
bnRMaXN0ZW5lci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNFdmVudExpc3RlbmVyLmNwcAkocmV2aXNpb24gMTY3MDMxKQorKysgU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNFdmVudExpc3RlbmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTIyLDkg
KzEyMiwxMCBAQCB2b2lkIEpTRXZlbnRMaXN0ZW5lcjo6aGFuZGxlRXZlbnQoU2NyaXB0CiAgICAg
ICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBjb29raWUgPSBKU01haW5UaHJlYWRF
eGVjU3RhdGU6Omluc3RydW1lbnRGdW5jdGlvbkNhbGwoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwg
Y2FsbFR5cGUsIGNhbGxEYXRhKTsKIAogICAgICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGhhbmRs
ZUV2ZW50RnVuY3Rpb24gPT0ganNGdW5jdGlvbiA/IHRvSlMoZXhlYywgZ2xvYmFsT2JqZWN0LCBl
dmVudC0+Y3VycmVudFRhcmdldCgpKSA6IGpzRnVuY3Rpb247CisgICAgICAgIEpTVmFsdWUgcmV0
dXJuZWRFeGNlcHRpb247CiAgICAgICAgIEpTVmFsdWUgcmV0dmFsID0gc2NyaXB0RXhlY3V0aW9u
Q29udGV4dC0+aXNEb2N1bWVudCgpCi0gICAgICAgICAgICA/IEpTTWFpblRocmVhZEV4ZWNTdGF0
ZTo6Y2FsbChleGVjLCBoYW5kbGVFdmVudEZ1bmN0aW9uLCBjYWxsVHlwZSwgY2FsbERhdGEsIHRo
aXNWYWx1ZSwgYXJncykKLSAgICAgICAgICAgIDogSlNDOjpjYWxsKGV4ZWMsIGhhbmRsZUV2ZW50
RnVuY3Rpb24sIGNhbGxUeXBlLCBjYWxsRGF0YSwgdGhpc1ZhbHVlLCBhcmdzKTsKKyAgICAgICAg
ICAgID8gSlNNYWluVGhyZWFkRXhlY1N0YXRlOjpjYWxsKGV4ZWMsIGhhbmRsZUV2ZW50RnVuY3Rp
b24sIGNhbGxUeXBlLCBjYWxsRGF0YSwgdGhpc1ZhbHVlLCBhcmdzLCAmcmV0dXJuZWRFeGNlcHRp
b24pCisgICAgICAgICAgICA6IEpTQzo6Y2FsbChleGVjLCBoYW5kbGVFdmVudEZ1bmN0aW9uLCBj
YWxsVHlwZSwgY2FsbERhdGEsIHRoaXNWYWx1ZSwgYXJncywgJnJldHVybmVkRXhjZXB0aW9uKTsK
IAogICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENhbGxGdW5jdGlvbihjb29r
aWUsIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOwogCkBAIC0xMzYsOSArMTM3LDkgQEAgdm9pZCBK
U0V2ZW50TGlzdGVuZXI6OmhhbmRsZUV2ZW50KFNjcmlwdAogICAgICAgICAgICAgICAgIHRvV29y
a2VyR2xvYmFsU2NvcGUoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCktPnNjcmlwdCgpLT5mb3JiaWRF
eGVjdXRpb24oKTsKICAgICAgICAgfQogCi0gICAgICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24o
KSkgeworICAgICAgICBpZiAocmV0dXJuZWRFeGNlcHRpb24pIHsKICAgICAgICAgICAgIGV2ZW50
LT50YXJnZXQoKS0+dW5jYXVnaHRFeGNlcHRpb25JbkV2ZW50SGFuZGxlcigpOwotICAgICAgICAg
ICAgcmVwb3J0Q3VycmVudEV4Y2VwdGlvbihleGVjKTsKKyAgICAgICAgICAgIHJlcG9ydEV4Y2Vw
dGlvbihleGVjLCByZXR1cm5lZEV4Y2VwdGlvbik7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAg
ICAgICBpZiAoIXJldHZhbC5pc1VuZGVmaW5lZE9yTnVsbCgpICYmIGV2ZW50LT5pc0JlZm9yZVVu
bG9hZEV2ZW50KCkpCiAgICAgICAgICAgICAgICAgdG9CZWZvcmVVbmxvYWRFdmVudChldmVudCkt
PnNldFJldHVyblZhbHVlKHJldHZhbC50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MRG9jdW1lbnRDdXN0b20uY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTERvY3VtZW50Q3Vz
dG9tLmNwcAkocmV2aXNpb24gMTY3MDMxKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNIVE1MRG9jdW1lbnRDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTMsNyArMTEzLDcg
QEAgSlNWYWx1ZSBKU0hUTUxEb2N1bWVudDo6b3BlbihFeGVjU3RhdGUqIAogICAgICAgICAgICAg
ICAgIENhbGxUeXBlIGNhbGxUeXBlID0gOjpnZXRDYWxsRGF0YShmdW5jdGlvbiwgY2FsbERhdGEp
OwogICAgICAgICAgICAgICAgIGlmIChjYWxsVHlwZSA9PSBDYWxsVHlwZU5vbmUpCiAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihleGVjKTsKLSAgICAgICAgICAgICAg
ICByZXR1cm4gSlNNYWluVGhyZWFkRXhlY1N0YXRlOjpjYWxsKGV4ZWMsIGZ1bmN0aW9uLCBjYWxs
VHlwZSwgY2FsbERhdGEsIHdyYXBwZXIsIEFyZ0xpc3QoZXhlYykpOworICAgICAgICAgICAgICAg
IHJldHVybiBKU0M6OmNhbGwoZXhlYywgZnVuY3Rpb24sIGNhbGxUeXBlLCBjYWxsRGF0YSwgd3Jh
cHBlciwgQXJnTGlzdChleGVjKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAg
cmV0dXJuIGpzVW5kZWZpbmVkKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U01haW5UaHJlYWRFeGVjU3RhdGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTTWFpblRocmVhZEV4ZWNTdGF0ZS5jcHAJKHJldmlzaW9uIDE2NzAzMSkKKysr
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWFpblRocmVhZEV4ZWNTdGF0ZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTQ2LDExICs0NiwxMSBAQCB2b2lkIEpTTWFpblRocmVhZEV4ZWNTdGF0
ZTo6ZGlkTGVhdmVTY3JpCiAgICAgTXV0YXRpb25PYnNlcnZlcjo6ZGVsaXZlckFsbE11dGF0aW9u
cygpOwogfQogCi1KU0M6OkpTVmFsdWUgZnVuY3Rpb25DYWxsSGFuZGxlckZyb21BbnlUaHJlYWQo
SlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTQzo6SlNWYWx1ZSBmdW5jdGlvbk9iamVjdCwgSlNDOjpD
YWxsVHlwZSBjYWxsVHlwZSwgY29uc3QgSlNDOjpDYWxsRGF0YSYgY2FsbERhdGEsIEpTQzo6SlNW
YWx1ZSB0aGlzVmFsdWUsIGNvbnN0IEpTQzo6QXJnTGlzdCYgYXJncykKK0pTQzo6SlNWYWx1ZSBm
dW5jdGlvbkNhbGxIYW5kbGVyRnJvbUFueVRocmVhZChKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlND
OjpKU1ZhbHVlIGZ1bmN0aW9uT2JqZWN0LCBKU0M6OkNhbGxUeXBlIGNhbGxUeXBlLCBjb25zdCBK
U0M6OkNhbGxEYXRhJiBjYWxsRGF0YSwgSlNDOjpKU1ZhbHVlIHRoaXNWYWx1ZSwgY29uc3QgSlND
OjpBcmdMaXN0JiBhcmdzLCBKU0M6OkpTVmFsdWUqIHJldHVybmVkRXhjZXB0aW9uKQogewogICAg
IGlmIChpc01haW5UaHJlYWQoKSkKLSAgICAgICAgcmV0dXJuIEpTTWFpblRocmVhZEV4ZWNTdGF0
ZTo6Y2FsbChleGVjLCBmdW5jdGlvbk9iamVjdCwgY2FsbFR5cGUsIGNhbGxEYXRhLCB0aGlzVmFs
dWUsIGFyZ3MpOwotICAgIHJldHVybiBKU0M6OmNhbGwoZXhlYywgZnVuY3Rpb25PYmplY3QsIGNh
bGxUeXBlLCBjYWxsRGF0YSwgdGhpc1ZhbHVlLCBhcmdzKTsKKyAgICAgICAgcmV0dXJuIEpTTWFp
blRocmVhZEV4ZWNTdGF0ZTo6Y2FsbChleGVjLCBmdW5jdGlvbk9iamVjdCwgY2FsbFR5cGUsIGNh
bGxEYXRhLCB0aGlzVmFsdWUsIGFyZ3MsIHJldHVybmVkRXhjZXB0aW9uKTsKKyAgICByZXR1cm4g
SlNDOjpjYWxsKGV4ZWMsIGZ1bmN0aW9uT2JqZWN0LCBjYWxsVHlwZSwgY2FsbERhdGEsIHRoaXNW
YWx1ZSwgYXJncywgcmV0dXJuZWRFeGNlcHRpb24pOwogfQogCiBKU0M6OkpTVmFsdWUgZXZhbHVh
dGVIYW5kbGVyRnJvbUFueVRocmVhZChKU0M6OkV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSlNDOjpT
b3VyY2VDb2RlJiBzb3VyY2UsIEpTQzo6SlNWYWx1ZSB0aGlzVmFsdWUsIEpTQzo6SlNWYWx1ZSog
ZXhjZXB0aW9uKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNYWluVGhyZWFk
RXhlY1N0YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNN
YWluVGhyZWFkRXhlY1N0YXRlLmgJKHJldmlzaW9uIDE2NzAzMSkKKysrIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTTWFpblRocmVhZEV4ZWNTdGF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01
MCwxNiArNTAsMTUgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gc19tYWluVGhyZWFkU3RhdGU7
CiAgICAgfTsKICAgICAKLSAgICBzdGF0aWMgSlNDOjpKU1ZhbHVlIGNhbGwoSlNDOjpFeGVjU3Rh
dGUqIGV4ZWMsIEpTQzo6SlNWYWx1ZSBmdW5jdGlvbk9iamVjdCwgSlNDOjpDYWxsVHlwZSBjYWxs
VHlwZSwgY29uc3QgSlNDOjpDYWxsRGF0YSYgY2FsbERhdGEsIEpTQzo6SlNWYWx1ZSB0aGlzVmFs
dWUsIGNvbnN0IEpTQzo6QXJnTGlzdCYgYXJncykKKyAgICBzdGF0aWMgSlNDOjpKU1ZhbHVlIGNh
bGwoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTQzo6SlNWYWx1ZSBmdW5jdGlvbk9iamVjdCwgSlND
OjpDYWxsVHlwZSBjYWxsVHlwZSwgY29uc3QgSlNDOjpDYWxsRGF0YSYgY2FsbERhdGEsIEpTQzo6
SlNWYWx1ZSB0aGlzVmFsdWUsIGNvbnN0IEpTQzo6QXJnTGlzdCYgYXJncywgSlNDOjpKU1ZhbHVl
KiByZXR1cm5lZEV4Y2VwdGlvbikKICAgICB7CiAgICAgICAgIEpTTWFpblRocmVhZEV4ZWNTdGF0
ZSBjdXJyZW50U3RhdGUoZXhlYyk7Ci0gICAgICAgIHJldHVybiBKU0M6OmNhbGwoZXhlYywgZnVu
Y3Rpb25PYmplY3QsIGNhbGxUeXBlLCBjYWxsRGF0YSwgdGhpc1ZhbHVlLCBhcmdzKTsKKyAgICAg
ICAgcmV0dXJuIEpTQzo6Y2FsbChleGVjLCBmdW5jdGlvbk9iamVjdCwgY2FsbFR5cGUsIGNhbGxE
YXRhLCB0aGlzVmFsdWUsIGFyZ3MsIHJldHVybmVkRXhjZXB0aW9uKTsKICAgICB9OwogCiAgICAg
c3RhdGljIEpTQzo6SlNWYWx1ZSBldmFsdWF0ZShKU0M6OkV4ZWNTdGF0ZSogZXhlYywgY29uc3Qg
SlNDOjpTb3VyY2VDb2RlJiBzb3VyY2UsIEpTQzo6SlNWYWx1ZSB0aGlzVmFsdWUsIEpTQzo6SlNW
YWx1ZSogZXhjZXB0aW9uKQogICAgIHsKICAgICAgICAgSlNNYWluVGhyZWFkRXhlY1N0YXRlIGN1
cnJlbnRTdGF0ZShleGVjKTsKLSAgICAgICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9jayhleGVjKTsK
ICAgICAgICAgcmV0dXJuIEpTQzo6ZXZhbHVhdGUoZXhlYywgc291cmNlLCB0aGlzVmFsdWUsIGV4
Y2VwdGlvbik7CiAgICAgfTsKIApAQCAtNjcsNiArNjYsNyBAQCBwdWJsaWM6CiAgICAgewogICAg
ICAgICBKU01haW5UaHJlYWRFeGVjU3RhdGUgY3VycmVudFN0YXRlKGV4ZWMpOwogICAgICAgICB0
YXNrLnJ1bihleGVjKTsKKyAgICAgICAgQVNTRVJUKCFleGVjLT5oYWRFeGNlcHRpb24oKSk7CiAg
ICAgfQogCiAgICAgc3RhdGljIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBpbnN0cnVt
ZW50RnVuY3Rpb25DYWxsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBKU0M6OkNhbGxUeXBlLCBj
b25zdCBKU0M6OkNhbGxEYXRhJik7CkBAIC03NCw2ICs3NCw3IEBAIHB1YmxpYzoKIHByaXZhdGU6
CiAgICAgZXhwbGljaXQgSlNNYWluVGhyZWFkRXhlY1N0YXRlKEpTQzo6RXhlY1N0YXRlKiBleGVj
KQogICAgICAgICA6IG1fcHJldmlvdXNTdGF0ZShzX21haW5UaHJlYWRTdGF0ZSkKKyAgICAgICAg
LCBtX2xvY2soZXhlYykKICAgICB7CiAgICAgICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAg
ICAgICAgIHNfbWFpblRocmVhZFN0YXRlID0gZXhlYzsKQEAgLTkzLDYgKzk0LDcgQEAgcHJpdmF0
ZToKIAogICAgIHN0YXRpYyBKU0M6OkV4ZWNTdGF0ZSogc19tYWluVGhyZWFkU3RhdGU7CiAgICAg
SlNDOjpFeGVjU3RhdGUqIG1fcHJldmlvdXNTdGF0ZTsKKyAgICBKU0M6OkpTTG9ja0hvbGRlciBt
X2xvY2s7CiAKICAgICBzdGF0aWMgdm9pZCBkaWRMZWF2ZVNjcmlwdENvbnRleHQoKTsKIH07CkBA
IC0xMTksNyArMTIxLDcgQEAgcHJpdmF0ZToKICAgICBKU0M6OkV4ZWNTdGF0ZSogbV9wcmV2aW91
c1N0YXRlOwogfTsKIAotSlNDOjpKU1ZhbHVlIGZ1bmN0aW9uQ2FsbEhhbmRsZXJGcm9tQW55VGhy
ZWFkKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlIGZ1bmN0aW9uT2JqZWN0LCBKU0M6OkNh
bGxUeXBlIGNhbGxUeXBlLCBjb25zdCBKU0M6OkNhbGxEYXRhJiBjYWxsRGF0YSwgSlNDOjpKU1Zh
bHVlIHRoaXNWYWx1ZSwgY29uc3QgSlNDOjpBcmdMaXN0JiBhcmdzKTsKK0pTQzo6SlNWYWx1ZSBm
dW5jdGlvbkNhbGxIYW5kbGVyRnJvbUFueVRocmVhZChKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNW
YWx1ZSBmdW5jdGlvbk9iamVjdCwgSlNDOjpDYWxsVHlwZSwgY29uc3QgSlNDOjpDYWxsRGF0YSYs
IEpTQzo6SlNWYWx1ZSB0aGlzVmFsdWUsIGNvbnN0IEpTQzo6QXJnTGlzdCYgYXJncywgSlNDOjpK
U1ZhbHVlKiByZXR1cm5lZEV4Y2VwdGlvbik7CiBKU0M6OkpTVmFsdWUgZXZhbHVhdGVIYW5kbGVy
RnJvbUFueVRocmVhZChKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IEpTQzo6U291cmNlQ29kZSYsIEpT
Qzo6SlNWYWx1ZSB0aGlzVmFsdWUsIEpTQzo6SlNWYWx1ZSogZXhjZXB0aW9uKTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNdXRh
dGlvbkNhbGxiYWNrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU011dGF0aW9uQ2FsbGJhY2suY3BwCShyZXZpc2lvbiAxNjcwMzEpCisrKyBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU011dGF0aW9uQ2FsbGJhY2suY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC04NywxMiArODcsMTMgQEAgdm9pZCBKU011dGF0aW9uQ2FsbGJhY2s6OmNhbGwoY29uc3QgVmVj
dAogCiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIGNvb2tpZSA9IEpTTWFpblRo
cmVhZEV4ZWNTdGF0ZTo6aW5zdHJ1bWVudEZ1bmN0aW9uQ2FsbChjb250ZXh0LCBjYWxsVHlwZSwg
Y2FsbERhdGEpOwogCi0gICAgSlNNYWluVGhyZWFkRXhlY1N0YXRlOjpjYWxsKGV4ZWMsIGNhbGxi
YWNrLCBjYWxsVHlwZSwgY2FsbERhdGEsIGpzT2JzZXJ2ZXIsIGFyZ3MpOworICAgIEpTVmFsdWUg
cmV0dXJuZWRFeGNlcHRpb247CisgICAgSlNNYWluVGhyZWFkRXhlY1N0YXRlOjpjYWxsKGV4ZWMs
IGNhbGxiYWNrLCBjYWxsVHlwZSwgY2FsbERhdGEsIGpzT2JzZXJ2ZXIsIGFyZ3MsICZyZXR1cm5l
ZEV4Y2VwdGlvbik7CiAKICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENhbGxGdW5j
dGlvbihjb29raWUsIGNvbnRleHQpOwogCi0gICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQot
ICAgICAgICByZXBvcnRDdXJyZW50RXhjZXB0aW9uKGV4ZWMpOworICAgIGlmIChyZXR1cm5lZEV4
Y2VwdGlvbikKKyAgICAgICAgcmVwb3J0RXhjZXB0aW9uKGV4ZWMsIHJldHVybmVkRXhjZXB0aW9u
KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNOb2RlRmlsdGVyQ29uZGl0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU05vZGVGaWx0ZXJDb25kaXRpb24uY3BwCShyZXZpc2lvbiAx
NjcwMzEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05vZGVGaWx0ZXJDb25kaXRp
b24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Nyw3ICs2Nyw3IEBAIHNob3J0IEpTTm9kZUZpbHRl
ckNvbmRpdGlvbjo6YWNjZXB0Tm9kZSgKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAg
ICAgICAgIHJldHVybiBOb2RlRmlsdGVyOjpGSUxURVJfUkVKRUNUOwogCi0gICAgSlNWYWx1ZSBy
ZXN1bHQgPSBKU01haW5UaHJlYWRFeGVjU3RhdGU6OmNhbGwoZXhlYywgZmlsdGVyLCBjYWxsVHlw
ZSwgY2FsbERhdGEsIG1fZmlsdGVyLmdldCgpLCBhcmdzKTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9
IEpTQzo6Y2FsbChleGVjLCBmaWx0ZXIsIGNhbGxUeXBlLCBjYWxsRGF0YSwgbV9maWx0ZXIuZ2V0
KCksIGFyZ3MpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJu
IE5vZGVGaWx0ZXI6OkZJTFRFUl9SRUpFQ1Q7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1NjaGVkdWxlZEFjdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvU2NoZWR1bGVkQWN0aW9uLmNwcAkocmV2aXNpb24gMTY3MDMxKQorKysgU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NoZWR1bGVkQWN0aW9uLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtOTksMTUgKzk5LDE2IEBAIHZvaWQgU2NoZWR1bGVkQWN0aW9uOjpleGVjdXRlRnVuY3Rp
b25JbkMKIAogICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBjb29raWUgPSBKU01h
aW5UaHJlYWRFeGVjU3RhdGU6Omluc3RydW1lbnRGdW5jdGlvbkNhbGwoY29udGV4dCwgY2FsbFR5
cGUsIGNhbGxEYXRhKTsKIAorICAgIEpTVmFsdWUgcmV0dXJuZWRFeGNlcHRpb247CiAgICAgaWYg
KGNvbnRleHQtPmlzRG9jdW1lbnQoKSkKLSAgICAgICAgSlNNYWluVGhyZWFkRXhlY1N0YXRlOjpj
YWxsKGV4ZWMsIG1fZnVuY3Rpb24uZ2V0KCksIGNhbGxUeXBlLCBjYWxsRGF0YSwgdGhpc1ZhbHVl
LCBhcmdzKTsKKyAgICAgICAgSlNNYWluVGhyZWFkRXhlY1N0YXRlOjpjYWxsKGV4ZWMsIG1fZnVu
Y3Rpb24uZ2V0KCksIGNhbGxUeXBlLCBjYWxsRGF0YSwgdGhpc1ZhbHVlLCBhcmdzLCAmcmV0dXJu
ZWRFeGNlcHRpb24pOwogICAgIGVsc2UKLSAgICAgICAgSlNDOjpjYWxsKGV4ZWMsIG1fZnVuY3Rp
b24uZ2V0KCksIGNhbGxUeXBlLCBjYWxsRGF0YSwgdGhpc1ZhbHVlLCBhcmdzKTsKKyAgICAgICAg
SlNDOjpjYWxsKGV4ZWMsIG1fZnVuY3Rpb24uZ2V0KCksIGNhbGxUeXBlLCBjYWxsRGF0YSwgdGhp
c1ZhbHVlLCBhcmdzLCAmcmV0dXJuZWRFeGNlcHRpb24pOwogCiAgICAgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjpkaWRDYWxsRnVuY3Rpb24oY29va2llLCBjb250ZXh0KTsKIAotICAgIGlmIChl
eGVjLT5oYWRFeGNlcHRpb24oKSkKLSAgICAgICAgcmVwb3J0Q3VycmVudEV4Y2VwdGlvbihleGVj
KTsKKyAgICBpZiAocmV0dXJuZWRFeGNlcHRpb24pCisgICAgICAgIHJlcG9ydEV4Y2VwdGlvbihl
eGVjLCByZXR1cm5lZEV4Y2VwdGlvbik7CiB9CiAKIHZvaWQgU2NoZWR1bGVkQWN0aW9uOjpleGVj
dXRlKERvY3VtZW50KiBkb2N1bWVudCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29i
amMvV2ViU2NyaXB0T2JqZWN0Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL29iamMvV2ViU2NyaXB0T2JqZWN0Lm1tCShyZXZpc2lvbiAxNjcwMzEpCisrKyBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9vYmpjL1dlYlNjcmlwdE9iamVjdC5tbQkod29ya2luZyBjb3B5KQpA
QCAtMTIwLDEyICsxMjAsMTkgQEAgaWQgY3JlYXRlSlNXcmFwcGVyKEpTQzo6SlNPYmplY3QqIG9i
amVjdAogICAgIHJldHVybiBbW1tXZWJTY3JpcHRPYmplY3QgYWxsb2NdIF9pbml0V2l0aEpTT2Jq
ZWN0Om9iamVjdCBvcmlnaW5Sb290T2JqZWN0Om9yaWdpbiByb290T2JqZWN0OnJvb3RdIGF1dG9y
ZWxlYXNlXTsKIH0KIAotc3RhdGljIHZvaWQgYWRkRXhjZXB0aW9uVG9Db25zb2xlKEV4ZWNTdGF0
ZSogZXhlYykKK3N0YXRpYyB2b2lkIGFkZEV4Y2VwdGlvblRvQ29uc29sZShFeGVjU3RhdGUqIGV4
ZWMsIEpTQzo6SlNWYWx1ZSYgZXhjZXB0aW9uKQogewogICAgIEpTRE9NV2luZG93KiB3aW5kb3cg
PSBhc0pTRE9NV2luZG93KGV4ZWMtPnZtRW50cnlHbG9iYWxPYmplY3QoKSk7Ci0gICAgaWYgKCF3
aW5kb3cgfHwgIWV4ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAgIGlmICghd2luZG93IHx8ICFleGNl
cHRpb24pCiAgICAgICAgIHJldHVybjsKLSAgICByZXBvcnRDdXJyZW50RXhjZXB0aW9uKGV4ZWMp
OworICAgIHJlcG9ydEV4Y2VwdGlvbihleGVjLCBleGNlcHRpb24pOworfQorCitzdGF0aWMgdm9p
ZCBhZGRFeGNlcHRpb25Ub0NvbnNvbGUoRXhlY1N0YXRlKiBleGVjKQoreworICAgIEpTQzo6SlNW
YWx1ZSBleGNlcHRpb24gPSBleGVjLT5leGNlcHRpb24oKTsKKyAgICBleGVjLT5jbGVhckV4Y2Vw
dGlvbigpOworICAgIGFkZEV4Y2VwdGlvblRvQ29uc29sZShleGVjLCBleGNlcHRpb24pOwogfQog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkBAIC0zMzQsMTIgKzM0MSwxMiBAQCAtIChpZCljYWxs
V2ViU2NyaXB0TWV0aG9kOihOU1N0cmluZyAqKW5hCiAgICAgaWYgKCFbc2VsZiBfaXNTYWZlU2Ny
aXB0XSkKICAgICAgICAgcmV0dXJuIG5pbDsKIAotICAgIEpTQzo6SlNWYWx1ZSByZXN1bHQgPSBK
U01haW5UaHJlYWRFeGVjU3RhdGU6OmNhbGwoZXhlYywgZnVuY3Rpb24sIGNhbGxUeXBlLCBjYWxs
RGF0YSwgW3NlbGYgX2ltcF0sIGFyZ0xpc3QpOworICAgIEpTQzo6SlNWYWx1ZSByZXR1cm5lZEV4
Y2VwdGlvbjsKKyAgICBKU0M6OkpTVmFsdWUgcmVzdWx0ID0gSlNNYWluVGhyZWFkRXhlY1N0YXRl
OjpjYWxsKGV4ZWMsIGZ1bmN0aW9uLCBjYWxsVHlwZSwgY2FsbERhdGEsIFtzZWxmIF9pbXBdLCBh
cmdMaXN0LCAmcmV0dXJuZWRFeGNlcHRpb24pOwogCi0gICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlv
bigpKSB7Ci0gICAgICAgIGFkZEV4Y2VwdGlvblRvQ29uc29sZShleGVjKTsKKyAgICBpZiAocmV0
dXJuZWRFeGNlcHRpb24pIHsKKyAgICAgICAgYWRkRXhjZXB0aW9uVG9Db25zb2xlKGV4ZWMsIHJl
dHVybmVkRXhjZXB0aW9uKTsKICAgICAgICAgcmVzdWx0ID0ganNVbmRlZmluZWQoKTsKLSAgICAg
ICAgZXhlYy0+Y2xlYXJFeGNlcHRpb24oKTsKICAgICB9CiAKICAgICAvLyBDb252ZXJ0IGFuZCBy
ZXR1cm4gdGhlIHJlc3VsdCBvZiB0aGUgZnVuY3Rpb24gY2FsbC4KSW5kZXg6IExheW91dFRlc3Rz
L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9u
IDE2NzEzNCkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDEzIEBACisyMDE0LTA0LTExICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKwor
ICAgICAgICBKU01haW5UaHJlYWRFeGVjU3RhdGU6OmNhbGwoKSBzaG91bGQgY2xlYXIgZXhjZXB0
aW9ucyBiZWZvcmUgcmV0dXJuaW5nLgorICAgICAgICA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMTMx
NTMwPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
ZmFzdC9kb20vcmVncmVzcy0xMzE1MzAtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBm
YXN0L2RvbS9yZWdyZXNzLTEzMTUzMC5odG1sOiBBZGRlZC4KKwogMjAxNC0wNC0xMSAgQmVhciBU
cmF2aXMgIDxiZXRyYXZpc0BhZG9iZS5jb20+CiAKICAgICAgICAgW0NTUyBTaGFwZXNdIGluc2V0
IGFyZ3MgYW5kIHJhZGlhbCBhcmdzIHNob3VsZCBzZXJpYWxpemUgdG8gdGhlIHNpbXBsZXN0IGZv
cm0KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL3JlZ3Jlc3MtMTMxNTMwLWV4cGVjdGVkLnR4
dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9yZWdyZXNzLTEzMTUzMC1leHBl
Y3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9yZWdyZXNzLTEz
MTUzMC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1IEBACitDT05TT0xF
IE1FU1NBR0U6IGxpbmUgNTogRXhjZXB0aW9uIHRvIHRyaWdnZXIgdW53aW5kaW5nIGluIE11dGF0
aW9uT2JzZXJ2ZXIKK0NPTlNPTEUgTUVTU0FHRTogUGVuZGluZyBleGNlcHRpb24gYmVmb3JlIE11
dGF0aW9uT2JzZXJ2ZXJzIGFyZSBjYWxsZWQuCitSZWdyZXNzaW9uIHRlc3QgZm9yIGh0dHBzOi8v
d2Via2l0Lm9yZy9iLzEzMTUzMC4gVGhpcyB0ZXN0IHNob3VsZCBub3QgY3Jhc2guCisKK011dGF0
ZSB0aGF0IG5vZGUKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL3JlZ3Jlc3MtMTMxNTMwLmh0
bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vcmVncmVzcy0xMzE1MzAuaHRt
bAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL3JlZ3Jlc3MtMTMxNTMwLmh0
bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyOSBAQAorPGhlYWQ+Cis8c2NyaXB0PgordmFy
IG9ic2VydmVyID0gbmV3IE11dGF0aW9uT2JzZXJ2ZXIoZnVuY3Rpb24obXV0YXRpb25zKSB7Cisg
ICAgZnVuY3Rpb24gZm9vKCkgeworICAgICAgICB0aHJvdyAiRXhjZXB0aW9uIHRvIHRyaWdnZXIg
dW53aW5kaW5nIGluIE11dGF0aW9uT2JzZXJ2ZXIiOworICAgIH0KKyAgICBtdXRhdGlvbnMuZm9y
RWFjaChmdW5jdGlvbihtdXRhdGlvbikgeworICAgICAgICBmb28oKTsKKyAgICB9KTsKK30pOwor
CitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAg
IHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworCisgICAgdmFyIG5vZGUgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgncmVzJyk7CisgICAgdmFyIGNvbmZpZyA9IHsgYXR0cmlidXRlOiB0cnVlLCBj
aGlsZExpc3Q6IHRydWUsIGNoYXJhY3RlckRhdGE6IHRydWUgfTsKKyAgICBvYnNlcnZlci5vYnNl
cnZlKG5vZGUsIGNvbmZpZyk7CisKKyAgICBub2RlLmlubmVyVGV4dCArPSAiTXV0YXRlIHRoYXQg
bm9kZSI7CisgICAgdGhyb3cgIlBlbmRpbmcgZXhjZXB0aW9uIGJlZm9yZSBNdXRhdGlvbk9ic2Vy
dmVycyBhcmUgY2FsbGVkLiI7Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0i
dGVzdCgpOyI+Cis8cD5SZWdyZXNzaW9uIHRlc3QgZm9yIGh0dHBzOi8vd2Via2l0Lm9yZy9iLzEz
MTUzMC4gVGhpcyB0ZXN0IHNob3VsZCBub3QgY3Jhc2guPGZvcm0+Cis8ZGl2IGlkPSJyZXMiPjwv
ZGl2PgorPC9ib2R5Pgo=
</data>
<flag name="review"
          id="253508"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
      

    </bug>

</bugzilla>