<?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>92227</bug_id>
          
          <creation_ts>2012-07-25 01:17:01 -0700</creation_ts>
          <short_desc>[WK2][WTR] LayoutTestController.sendWebIntentResponse() needs to be implemented</short_desc>
          <delta_ts>2012-07-25 13:34:56 -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>WebKit2</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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>88303</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>andersca</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kenneth</cc>
    
    <cc>menard</cc>
    
    <cc>rakuco</cc>
    
    <cc>sam</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>zoltan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>677769</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-07-25 01:17:01 -0700</bug_when>
    <thetext>The following web intents tests rely on LayoutTestController.sendWebIntentResponse():
  webintents/web-intents-failure.html
  webintents/web-intents-reply.html

These 2 tests are now failing on WebKit2 WTR because LayoutTestController.sendWebIntentResponse() is undefined.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>677783</commentid>
    <comment_count>1</comment_count>
      <attachid>154287</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-07-25 01:31:58 -0700</bug_when>
    <thetext>Created attachment 154287
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>677841</commentid>
    <comment_count>2</comment_count>
      <attachid>154287</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-07-25 02:40:19 -0700</bug_when>
    <thetext>Comment on attachment 154287
Patch

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

&gt; Source/WebKit2/Shared/IntentData.cpp:40
&gt; +IntentData::IntentData(Intent* coreIntent)

Why not just WebIntentData::WebIntentData(Intent* intent) ? WebKit2 normally prefixes everything in WebKit namespace with Web</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>677858</commentid>
    <comment_count>3</comment_count>
      <attachid>154287</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-07-25 03:11:55 -0700</bug_when>
    <thetext>Comment on attachment 154287
Patch

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

&gt; Source/WebKit2/WebProcess/InjectedBundle/API/c/WKBundleIntentRequest.cpp:47
&gt; +WKIntentDataRef WKBundleIntentRequestCopyIntent(WKBundleIntentRequestRef requestRef)

CopyIntentData?

&gt; Source/WebKit2/WebProcess/InjectedBundle/API/c/WKBundleIntentRequest.cpp:53
&gt; +{
&gt; +#if ENABLE(WEB_INTENTS)
&gt; +    RefPtr&lt;WebIntentData&gt; webIntentData = toImpl(requestRef)-&gt;intent();
&gt; +    return toAPI(webIntentData.release().leakRef());
&gt; +#else
&gt; +    return 0;

How is this being copied? comment?

&gt; Source/WebKit2/WebProcess/InjectedBundle/InjectedBundleIntentRequest.cpp:50
&gt; +{
&gt; +    m_intentRequest-&gt;postResult(static_cast&lt;SerializedScriptValue*&gt;(data-&gt;internalRepresentation()));
&gt; +}

What does internalRepresentation return?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>677861</commentid>
    <comment_count>4</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-07-25 03:21:54 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 154287 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=154287&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/Shared/IntentData.cpp:40
&gt; &gt; +IntentData::IntentData(Intent* coreIntent)
&gt; 
&gt; Why not just WebIntentData::WebIntentData(Intent* intent) ? WebKit2 normally prefixes everything in WebKit namespace with Web

I already have a WebIntentData class. IntentData is the storage class used by WebIntentData. I have seen this being done for some other WK2 types. We could of course decide to merge the 2 but this is not exactly related to this change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>677866</commentid>
    <comment_count>5</comment_count>
      <attachid>154287</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-07-25 03:30:29 -0700</bug_when>
    <thetext>Comment on attachment 154287
Patch

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

&gt;&gt; Source/WebKit2/WebProcess/InjectedBundle/API/c/WKBundleIntentRequest.cpp:47
&gt;&gt; +WKIntentDataRef WKBundleIntentRequestCopyIntent(WKBundleIntentRequestRef requestRef)
&gt; 
&gt; CopyIntentData?

I was trying to keep the name short but sure.

&gt;&gt; Source/WebKit2/WebProcess/InjectedBundle/API/c/WKBundleIntentRequest.cpp:53
&gt;&gt; +    return 0;
&gt; 
&gt; How is this being copied? comment?

It is copied because I returned a new instance and I call .release().leakRef() on it. Using &quot;Copy&quot; in the name indicates to the client that it needs to adopt it. If I called it &quot;Get&quot; then the client would not adopt it. Also, I think &quot;Create&quot; is not suitable here. WKPageCopySessionState() or WKNavigationDataCopyOriginalRequest() is acting very similarly.

&gt;&gt; Source/WebKit2/WebProcess/InjectedBundle/InjectedBundleIntentRequest.cpp:50
&gt;&gt; +}
&gt; 
&gt; What does internalRepresentation return?

It returns a generic void* but the member it returns is of type WebCore::SerializedScriptValue* (always).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>677903</commentid>
    <comment_count>6</comment_count>
      <attachid>154287</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-07-25 04:17:23 -0700</bug_when>
    <thetext>Comment on attachment 154287
Patch

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

&gt; Source/WebKit2/WebProcess/InjectedBundle/InjectedBundleIntentRequest.h:57
&gt; +    InjectedBundleIntentRequest(WebCore::IntentRequest*);

Missing *explicit* keyword.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>677913</commentid>
    <comment_count>7</comment_count>
      <attachid>154287</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-07-25 04:30:59 -0700</bug_when>
    <thetext>Comment on attachment 154287
Patch

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

&gt;&gt;&gt; Source/WebKit2/WebProcess/InjectedBundle/InjectedBundleIntentRequest.cpp:50
&gt;&gt;&gt; +}
&gt;&gt; 
&gt;&gt; What does internalRepresentation return?
&gt; 
&gt; It returns a generic void* but the member it returns is of type WebCore::SerializedScriptValue* (always).

See for example:

WKSerializedScriptValueRef WKSerializedScriptValueCreateWithInternalRepresentation(void* internalRepresentation)
{
    RefPtr&lt;WebSerializedScriptValue&gt; serializedValue = WebSerializedScriptValue::create(static_cast&lt;WebCore::SerializedScriptValue*&gt;(internalRepresentation));
    return toAPI(serializedValue.release().leakRef());
}</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>677918</commentid>
    <comment_count>8</comment_count>
      <attachid>154325</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-07-25 04:34:37 -0700</bug_when>
    <thetext>Created attachment 154325
Patch

1. Rename WKBundleIntentRequestCopyIntent() to WKBundleIntentRequestCopyIntentData() as suggested by Kenneth
2. Add explicit keyword for InjectedBundleIntentRequest constructor as spotted by Gyuyoung
3. Rebase on master (the ewk_view showing trick is not longer needed as it was fixed in a separate patch that landed)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>678401</commentid>
    <comment_count>9</comment_count>
      <attachid>154325</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-25 13:34:50 -0700</bug_when>
    <thetext>Comment on attachment 154325
Patch

Clearing flags on attachment: 154325

Committed r123652: &lt;http://trac.webkit.org/changeset/123652&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>678402</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-25 13:34:56 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>154287</attachid>
            <date>2012-07-25 01:31:58 -0700</date>
            <delta_ts>2012-07-25 04:34:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>92227_wk2_wtr_sendWebIntentResponse.patch</filename>
            <type>text/plain</type>
            <size>39100</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYktp
dDIvQ01ha2VMaXN0cy50eHQKaW5kZXggMjBhZGZmOC4uZTZkM2JlZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYktpdDIvQ01ha2VMaXN0
cy50eHQKQEAgLTM2OCw2ICszNjgsNyBAQCBTRVQoV2ViS2l0Ml9TT1VSQ0VTCiAgICAgV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUNsaWVudC5jcHAKICAgICBXZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uLmNwcAog
ICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVIaXRUZXN0UmVzdWx0
LmNwcAorICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVJbnRlbnRS
ZXF1ZXN0LmNwcAogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVO
YXZpZ2F0aW9uQWN0aW9uLmNwcAogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0
ZWRCdW5kbGVQYWdlQ29udGV4dE1lbnVDbGllbnQuY3BwCiAgICAgV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuY3BwCkBAIC0zODYsNiArMzg3
LDcgQEAgU0VUKFdlYktpdDJfU09VUkNFUwogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL2MvV0tCdW5kbGVGcmFtZS5jcHAKICAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9jL1dLQnVuZGxlSGl0VGVzdFJlc3VsdC5jcHAKICAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9jL1dLQnVuZGxlSW5zcGVjdG9yLmNwcAorICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL2MvV0tCdW5kbGVJbnRlbnRSZXF1ZXN0LmNwcAogICAgIFdlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uLmNwcAogICAgIFdlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVOb2RlSGFuZGxlLmNwcAogICAgIFdl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmNwcApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmlu
ZGV4IGM0ZDYyODAuLjA1MjQwMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1OCBAQAorMjAxMi0w
Ny0yNSAgQ2hyaXN0b3BoZSBEdW1leiAgPGNocmlzdG9waGUuZHVtZXpAaW50ZWwuY29tPgorCisg
ICAgICAgIFtXSzJdW1dUUl0gTGF5b3V0VGVzdENvbnRyb2xsZXIuc2VuZFdlYkludGVudFJlc3Bv
bnNlKCkgbmVlZHMgdG8gYmUgaW1wbGVtZW50ZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTkyMjI3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgQWRkIG5ldyBJbmplY3RlZEJ1bmRsZUludGVudFJlcXVlc3Qg
Y2xhc3MgdG8gd3JhcCBXZWJDb3JlJ3MKKyAgICAgICAgSW50ZW50UmVxdWVzdCBhbmQgdXNlIGl0
IGluIEluamVjdGVkQnVuZGxlJ3MKKyAgICAgICAgZGlkUmVjZWl2ZUludGVudEZvckZyYW1lIGNh
bGxiYWNrLiBUaGUgV2ViS2l0VGVzdFJ1bm5lciBuZWVkcworICAgICAgICB0byBiZSBhYmxlIHRv
IHJlcGx5IHRvIGEgV2ViIGludGVudCByZXF1ZXN0IGluIG9yZGVyIHRvCisgICAgICAgIGltcGxl
bWVudCBMYXlvdXRUZXN0Q29udHJvbGxlci5zZW5kV2ViSW50ZW50UmVzcG9uc2UoKS4gQXMKKyAg
ICAgICAgYSBjb25zZXF1ZW5jZSwgcGFzc2luZyBhIFdlYkludGVudERhdGEgdHlwZSBpbiBub3Qg
ZW5vdWdoLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogR05VbWFrZWZp
bGUubGlzdC5hbToKKyAgICAgICAgKiBTaGFyZWQvQVBJL2MvV0tCYXNlLmg6CisgICAgICAgICog
U2hhcmVkL0FQSU9iamVjdC5oOgorICAgICAgICAqIFNoYXJlZC9JbnRlbnREYXRhLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6SW50ZW50RGF0YTo6SW50ZW50RGF0YSk6CisgICAgICAgIChXZWJLaXQp
OgorICAgICAgICAqIFNoYXJlZC9JbnRlbnREYXRhLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAg
ICAgICAgKFdlYktpdDo6SW50ZW50RGF0YTo6SW50ZW50RGF0YSk6CisgICAgICAgIChJbnRlbnRE
YXRhKToKKyAgICAgICAgKiBUYXJnZXQucHJpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVBUElDYXN0Lmg6CisgICAgICAgIChXZWJLaXQpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVJbnRlbnRSZXF1
ZXN0LmNwcDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdDIvU2hhcmVkL0ludGVudERhdGEuY3Bw
LgorICAgICAgICAoV0tCdW5kbGVJbnRlbnRSZXF1ZXN0R2V0VHlwZUlEKToKKyAgICAgICAgKFdL
QnVuZGxlSW50ZW50UmVxdWVzdENvcHlJbnRlbnQpOgorICAgICAgICAoV0tCdW5kbGVJbnRlbnRS
ZXF1ZXN0UG9zdFJlc3VsdCk6CisgICAgICAgIChXS0J1bmRsZUludGVudFJlcXVlc3RQb3N0RmFp
bHVyZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRs
ZUludGVudFJlcXVlc3QuaDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdDIvU2hhcmVkL0ludGVu
dERhdGEuaC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVu
ZGxlUGFnZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRC
dW5kbGVJbnRlbnRSZXF1ZXN0LmNwcDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdDIvU2hhcmVk
L0ludGVudERhdGEuY3BwLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6SW5q
ZWN0ZWRCdW5kbGVJbnRlbnRSZXF1ZXN0OjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpJbmpl
Y3RlZEJ1bmRsZUludGVudFJlcXVlc3Q6OkluamVjdGVkQnVuZGxlSW50ZW50UmVxdWVzdCk6Cisg
ICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlSW50ZW50UmVxdWVzdDo6cG9zdFJlc3VsdCk6
CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlSW50ZW50UmVxdWVzdDo6cG9zdEZhaWx1
cmUpOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZUludGVudFJlcXVlc3Q6OmludGVu
dCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUlu
dGVudFJlcXVlc3QuaDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdDIvU2hhcmVkL0ludGVudERh
dGEuaC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKElu
amVjdGVkQnVuZGxlSW50ZW50UmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVu
ZGxlSW50ZW50UmVxdWVzdDo6dHlwZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0
OjpJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQ6OmRpZFJlY2VpdmVJbnRlbnRGb3JGcmFt
ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBh
Z2VMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChJbmplY3RlZEJ1
bmRsZVBhZ2VMb2FkZXJDbGllbnQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUxv
YWRlckNsaWVudDo6ZGlzcGF0Y2hJbnRlbnQpOgorCiAyMDEyLTA3LTI0ICBKYWUgSHl1biBQYXJr
ICA8amFlLnBhcmtAY29tcGFueTEwMC5uZXQ+CiAKICAgICAgICAgV0tDb250ZXh0R2V0R2xvYmFs
U3RhdGlzdGljcygpIGFzc2lnbnMgd3JvbmcgdmFsdWUgdG8gd2tGcmFtZUNvdW50IGluIFdLQ29u
dGV4dFN0YXRpc3RpY3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmxp
c3QuYW0gYi9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IGNhODFkNDcu
LmYzZWQ5ODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmxpc3QuYW0K
KysrIGIvU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAtOTY0LDYgKzk2NCw4
IEBAIHdlYmtpdDJfc291cmNlcyArPSBcCiAJU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUluaXRpYWxpemUuaCBcCiAJU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUluc3BlY3Rvci5jcHAgXAog
CVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVJ
bnNwZWN0b3IuaCBcCisJU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvYy9XS0J1bmRsZUludGVudFJlcXVlc3QuY3BwIFwKKwlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlSW50ZW50UmVxdWVzdC5oIFwKIAlTb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlTm9kZUhh
bmRsZS5jcHAgXAogCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L2MvV0tCdW5kbGVOb2RlSGFuZGxlLmggXAogCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVOb2RlSGFuZGxlUHJpdmF0ZS5oIFwKQEAgLTk5Niw2
ICs5OTgsOCBAQCB3ZWJraXQyX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVET01XaW5kb3dFeHRlbnNpb24uaCBcCiAJ
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUhp
dFRlc3RSZXN1bHQuY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0luamVjdGVkQnVuZGxlSGl0VGVzdFJlc3VsdC5oIFwKKwlTb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlSW50ZW50UmVxdWVzdC5jcHAgXAor
CVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVJ
bnRlbnRSZXF1ZXN0LmggXAogCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvSW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uLmNwcCBcCiAJU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb24u
aCBcCiAJU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1
bmRsZVBhZ2VDb250ZXh0TWVudUNsaWVudC5jcHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvU2hhcmVkL0FQSS9jL1dLQmFzZS5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dL
QmFzZS5oCmluZGV4IDNmNzA3YmEuLjY4NTRlY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9BUEkvYy9XS0Jhc2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2Mv
V0tCYXNlLmgKQEAgLTEzNSw2ICsxMzUsNyBAQCB0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVX
S0J1bmRsZURPTVdpbmRvd0V4dGVuc2lvbiogV0tCdW5kbGVET01XaW5kb3dFeHRlbnNpbwogdHlw
ZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tCdW5kbGVGcmFtZSogV0tCdW5kbGVGcmFtZVJlZjsK
IHR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLQnVuZGxlSGl0VGVzdFJlc3VsdCogV0tCdW5k
bGVIaXRUZXN0UmVzdWx0UmVmOwogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tCdW5kbGVJ
bnNwZWN0b3IqIFdLQnVuZGxlSW5zcGVjdG9yUmVmOwordHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3Bh
cXVlV0tCdW5kbGVJbnRlbnRSZXF1ZXN0KiBXS0J1bmRsZUludGVudFJlcXVlc3RSZWY7CiB0eXBl
ZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS0J1bmRsZU5hdmlnYXRpb25BY3Rpb24qIFdLQnVuZGxl
TmF2aWdhdGlvbkFjdGlvblJlZjsKIHR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLQnVuZGxl
Tm9kZUhhbmRsZSogV0tCdW5kbGVOb2RlSGFuZGxlUmVmOwogdHlwZWRlZiBjb25zdCBzdHJ1Y3Qg
T3BhcXVlV0tCdW5kbGVQYWdlKiBXS0J1bmRsZVBhZ2VSZWY7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvQVBJT2JqZWN0LmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJT2Jq
ZWN0LmgKaW5kZXggNmU5YzFkNi4uOGU0ZDI5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
U2hhcmVkL0FQSU9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUElPYmplY3Qu
aApAQCAtMTE3LDYgKzExNyw3IEBAIHB1YmxpYzoKICAgICAgICAgVHlwZUJ1bmRsZUZyYW1lLAog
ICAgICAgICBUeXBlQnVuZGxlSGl0VGVzdFJlc3VsdCwKICAgICAgICAgVHlwZUJ1bmRsZUluc3Bl
Y3RvciwKKyAgICAgICAgVHlwZUJ1bmRsZUludGVudFJlcXVlc3QsCiAgICAgICAgIFR5cGVCdW5k
bGVOYXZpZ2F0aW9uQWN0aW9uLAogICAgICAgICBUeXBlQnVuZGxlTm9kZUhhbmRsZSwKICAgICAg
ICAgVHlwZUJ1bmRsZVBhZ2UsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvSW50
ZW50RGF0YS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvSW50ZW50RGF0YS5jcHAKaW5kZXgg
Mzg4YTNhNS4uNDk5NWIyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0ludGVu
dERhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9JbnRlbnREYXRhLmNwcApAQCAt
MzEsMTEgKzMxLDIyIEBACiAjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCiAjaW5jbHVkZSAiRGF0YVJl
ZmVyZW5jZS5oIgogI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgorI2luY2x1ZGUg
PFdlYkNvcmUvSW50ZW50Lmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIAorSW50ZW50RGF0YTo6SW50ZW50RGF0YShJbnRlbnQqIGNvcmVJbnRlbnQp
CisgICAgOiBhY3Rpb24oY29yZUludGVudC0+YWN0aW9uKCkpCisgICAgLCB0eXBlKGNvcmVJbnRl
bnQtPnR5cGUoKSkKKyAgICAsIHNlcnZpY2UoY29yZUludGVudC0+c2VydmljZSgpKQorICAgICwg
ZGF0YShjb3JlSW50ZW50LT5kYXRhKCktPmRhdGEoKSkKKyAgICAsIGV4dHJhcyhjb3JlSW50ZW50
LT5leHRyYXMoKSkKKyAgICAsIHN1Z2dlc3Rpb25zKGNvcmVJbnRlbnQtPnN1Z2dlc3Rpb25zKCkp
Cit7Cit9CisKIHZvaWQgSW50ZW50RGF0YTo6ZW5jb2RlKENvcmVJUEM6OkFyZ3VtZW50RW5jb2Rl
ciogZW5jb2RlcikgY29uc3QKIHsKICAgICBlbmNvZGVyLT5lbmNvZGUoYWN0aW9uKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9JbnRlbnREYXRhLmggYi9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvSW50ZW50RGF0YS5oCmluZGV4IDI5MzU3NzYuLjk2ZTJkOWYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9JbnRlbnREYXRhLmgKKysrIGIvU291cmNlL1dlYktpdDIv
U2hhcmVkL0ludGVudERhdGEuaApAQCAtMzcsOSArMzcsMTYgQEAgY2xhc3MgQXJndW1lbnREZWNv
ZGVyOwogY2xhc3MgQXJndW1lbnRFbmNvZGVyOwogfQogCituYW1lc3BhY2UgV2ViQ29yZSB7Citj
bGFzcyBJbnRlbnQ7Cit9CisKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBzdHJ1Y3QgSW50ZW50RGF0
YSB7CisgICAgSW50ZW50RGF0YSgpIHsgfQorICAgIGV4cGxpY2l0IEludGVudERhdGEoV2ViQ29y
ZTo6SW50ZW50Kik7CisKICAgICB2b2lkIGVuY29kZShDb3JlSVBDOjpBcmd1bWVudEVuY29kZXIq
KSBjb25zdDsKICAgICBzdGF0aWMgYm9vbCBkZWNvZGUoQ29yZUlQQzo6QXJndW1lbnREZWNvZGVy
KiwgSW50ZW50RGF0YSYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9UYXJnZXQucHJp
IGIvU291cmNlL1dlYktpdDIvVGFyZ2V0LnByaQppbmRleCBlODA5NjcyLi5iYzMwMGE3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9UYXJnZXQucHJpCisrKyBiL1NvdXJjZS9XZWJLaXQyL1Rh
cmdldC5wcmkKQEAgLTMxOSw2ICszMTksNyBAQCBIRUFERVJTICs9IFwKICAgICBXZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlQmFja0ZvcndhcmRMaXN0LmggXAogICAgIFdl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVCYWNrRm9yd2FyZExpc3RJdGVt
LmggXAogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVIaXRUZXN0
UmVzdWx0LmggXAorICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVJ
bnRlbnRSZXF1ZXN0LmggXAogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tC
dW5kbGVOYXZpZ2F0aW9uQWN0aW9uLmggXAogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL2MvV0tCdW5kbGVOb2RlSGFuZGxlLmggXAogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL2MvV0tCdW5kbGVOb2RlSGFuZGxlUHJpdmF0ZS5oIFwKQEAgLTMzMSw2ICszMzIsNyBA
QCBIRUFERVJTICs9IFwKICAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVu
ZGxlQ2xpZW50LmggXAogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5k
bGVET01XaW5kb3dFeHRlbnNpb24uaCBcCiAgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9J
bmplY3RlZEJ1bmRsZUhpdFRlc3RSZXN1bHQuaCBcCisgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9JbmplY3RlZEJ1bmRsZUludGVudFJlcXVlc3QuaCBcCiAgICAgV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb24uaCBcCiAgICAgV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VDb250ZXh0TWVudUNsaWVudC5o
IFwKICAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUZvcm1D
bGllbnQuaCBcCkBAIC03MDAsNiArNzAyLDcgQEAgU09VUkNFUyArPSBcCiAgICAgV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUZyYW1lLmNwcCBcCiAgICAgV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUhpdFRlc3RSZXN1bHQuY3BwIFwKICAgICBX
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlSW5zcGVjdG9yLmNwcCBcCisg
ICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUludGVudFJlcXVlc3Qu
Y3BwIFwKICAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlTmF2aWdh
dGlvbkFjdGlvbi5jcHAgXAogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tC
dW5kbGVOb2RlSGFuZGxlLmNwcCBcCiAgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
Yy9XS0J1bmRsZVBhZ2UuY3BwIFwKQEAgLTcxNCw2ICs3MTcsNyBAQCBTT1VSQ0VTICs9IFwKICAg
ICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlQ2xpZW50LmNwcCBcCiAg
ICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZURPTVdpbmRvd0V4dGVu
c2lvbi5jcHAgXAogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVI
aXRUZXN0UmVzdWx0LmNwcCBcCisgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3Rl
ZEJ1bmRsZUludGVudFJlcXVlc3QuY3BwIFwKICAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0luamVjdGVkQnVuZGxlTmF2aWdhdGlvbkFjdGlvbi5jcHAgXAogICAgIFdlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlQ29udGV4dE1lbnVDbGllbnQuY3BwIFwKICAg
ICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVu
dC5jcHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvYy9XS0J1bmRsZUFQSUNhc3QuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVBUElDYXN0LmgKaW5kZXggZTQwYzg5OC4uMzM1
NWQwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvYy9XS0J1bmRsZUFQSUNhc3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlQVBJQ2FzdC5oCkBAIC00Niw2ICs0Niw3IEBA
IGNsYXNzIEluamVjdGVkQnVuZGxlQmFja0ZvcndhcmRMaXN0OwogY2xhc3MgSW5qZWN0ZWRCdW5k
bGVCYWNrRm9yd2FyZExpc3RJdGVtOwogY2xhc3MgSW5qZWN0ZWRCdW5kbGVET01XaW5kb3dFeHRl
bnNpb247CiBjbGFzcyBJbmplY3RlZEJ1bmRsZUhpdFRlc3RSZXN1bHQ7CitjbGFzcyBJbmplY3Rl
ZEJ1bmRsZUludGVudFJlcXVlc3Q7CiBjbGFzcyBJbmplY3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rp
b247CiBjbGFzcyBJbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGU7CiBjbGFzcyBJbmplY3RlZEJ1bmRs
ZVJhbmdlSGFuZGxlOwpAQCAtNjMsNiArNjQsNyBAQCBXS19BRERfQVBJX01BUFBJTkcoV0tCdW5k
bGVET01XaW5kb3dFeHRlbnNpb25SZWYsIEluamVjdGVkQnVuZGxlRE9NV2luZG93RXh0ZW5zaQog
V0tfQUREX0FQSV9NQVBQSU5HKFdLQnVuZGxlRnJhbWVSZWYsIFdlYkZyYW1lKQogV0tfQUREX0FQ
SV9NQVBQSU5HKFdLQnVuZGxlSGl0VGVzdFJlc3VsdFJlZiwgSW5qZWN0ZWRCdW5kbGVIaXRUZXN0
UmVzdWx0KQogV0tfQUREX0FQSV9NQVBQSU5HKFdLQnVuZGxlSW5zcGVjdG9yUmVmLCBXZWJJbnNw
ZWN0b3IpCitXS19BRERfQVBJX01BUFBJTkcoV0tCdW5kbGVJbnRlbnRSZXF1ZXN0UmVmLCBJbmpl
Y3RlZEJ1bmRsZUludGVudFJlcXVlc3QpCiBXS19BRERfQVBJX01BUFBJTkcoV0tCdW5kbGVOYXZp
Z2F0aW9uQWN0aW9uUmVmLCBJbmplY3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb24pCiBXS19BRERf
QVBJX01BUFBJTkcoV0tCdW5kbGVOb2RlSGFuZGxlUmVmLCBJbmplY3RlZEJ1bmRsZU5vZGVIYW5k
bGUpCiBXS19BRERfQVBJX01BUFBJTkcoV0tCdW5kbGVQYWdlR3JvdXBSZWYsIFdlYlBhZ2VHcm91
cFByb3h5KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvYy9XS0J1bmRsZUludGVudFJlcXVlc3QuY3BwIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUludGVudFJlcXVlc3QuY3BwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQxNzZhYTkKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVu
ZGxlSW50ZW50UmVxdWVzdC5jcHAKQEAgLTAsMCArMSw2OSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMiBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldLQnVuZGxlSW50ZW50UmVxdWVzdC5o
IgorCisjaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQorI2luY2x1ZGUgIkluamVjdGVkQnVuZGxlSW50
ZW50UmVxdWVzdC5oIgorI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgorI2luY2x1ZGUgIldLQnVuZGxl
QVBJQ2FzdC5oIgorI2luY2x1ZGUgIldlYkludGVudERhdGEuaCIKKwordXNpbmcgbmFtZXNwYWNl
IFdlYktpdDsKKyNlbmRpZgorCitXS1R5cGVJRCBXS0J1bmRsZUludGVudFJlcXVlc3RHZXRUeXBl
SUQoKQoreworI2lmIEVOQUJMRShXRUJfSU5URU5UUykKKyAgICByZXR1cm4gdG9BUEkoSW5qZWN0
ZWRCdW5kbGVJbnRlbnRSZXF1ZXN0OjpBUElUeXBlKTsKKyNlbHNlCisgICAgcmV0dXJuIDA7Cisj
ZW5kaWYKK30KKworV0tJbnRlbnREYXRhUmVmIFdLQnVuZGxlSW50ZW50UmVxdWVzdENvcHlJbnRl
bnQoV0tCdW5kbGVJbnRlbnRSZXF1ZXN0UmVmIHJlcXVlc3RSZWYpCit7CisjaWYgRU5BQkxFKFdF
Ql9JTlRFTlRTKQorICAgIFJlZlB0cjxXZWJJbnRlbnREYXRhPiB3ZWJJbnRlbnREYXRhID0gdG9J
bXBsKHJlcXVlc3RSZWYpLT5pbnRlbnQoKTsKKyAgICByZXR1cm4gdG9BUEkod2ViSW50ZW50RGF0
YS5yZWxlYXNlKCkubGVha1JlZigpKTsKKyNlbHNlCisgICAgcmV0dXJuIDA7CisjZW5kaWYKK30K
Kwordm9pZCBXS0J1bmRsZUludGVudFJlcXVlc3RQb3N0UmVzdWx0KFdLQnVuZGxlSW50ZW50UmVx
dWVzdFJlZiByZXF1ZXN0UmVmLCBXS1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZVJlZiBzZXJpYWxpemVk
RGF0YVJlZikKK3sKKyNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCisgICAgcmV0dXJuIHRvSW1wbChy
ZXF1ZXN0UmVmKS0+cG9zdFJlc3VsdCh0b0ltcGwoc2VyaWFsaXplZERhdGFSZWYpKTsKKyNlbmRp
ZgorfQorCit2b2lkIFdLQnVuZGxlSW50ZW50UmVxdWVzdFBvc3RGYWlsdXJlKFdLQnVuZGxlSW50
ZW50UmVxdWVzdFJlZiByZXF1ZXN0UmVmLCBXS1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZVJlZiBzZXJp
YWxpemVkRGF0YVJlZikKK3sKKyNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCisgICAgcmV0dXJuIHRv
SW1wbChyZXF1ZXN0UmVmKS0+cG9zdEZhaWx1cmUodG9JbXBsKHNlcmlhbGl6ZWREYXRhUmVmKSk7
CisjZW5kaWYKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVJbnRlbnRSZXF1ZXN0LmggYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlSW50ZW50UmVxdWVzdC5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNmYTFkMWMKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVu
ZGxlSW50ZW50UmVxdWVzdC5oCkBAIC0wLDAgKzEsNDYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTIgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpZm5kZWYgV0tCdW5kbGVJbnRlbnRSZXF1ZXN0X2gKKyNkZWZpbmUgV0tCdW5kbGVJbnRlbnRS
ZXF1ZXN0X2gKKworI2luY2x1ZGUgPFdlYktpdDIvV0tCYXNlLmg+CisKKyNpZmRlZiBfX2NwbHVz
cGx1cworZXh0ZXJuICJDIiB7CisjZW5kaWYKKworV0tfRVhQT1JUIFdLVHlwZUlEIFdLQnVuZGxl
SW50ZW50UmVxdWVzdEdldFR5cGVJRCgpOworCitXS19FWFBPUlQgV0tJbnRlbnREYXRhUmVmIFdL
QnVuZGxlSW50ZW50UmVxdWVzdENvcHlJbnRlbnQoV0tCdW5kbGVJbnRlbnRSZXF1ZXN0UmVmIHJl
cXVlc3QpOworCitXS19FWFBPUlQgdm9pZCBXS0J1bmRsZUludGVudFJlcXVlc3RQb3N0UmVzdWx0
KFdLQnVuZGxlSW50ZW50UmVxdWVzdFJlZiByZXF1ZXN0LCBXS1NlcmlhbGl6ZWRTY3JpcHRWYWx1
ZVJlZiBzZXJpYWxpemVkRGF0YSk7CitXS19FWFBPUlQgdm9pZCBXS0J1bmRsZUludGVudFJlcXVl
c3RQb3N0RmFpbHVyZShXS0J1bmRsZUludGVudFJlcXVlc3RSZWYgcmVxdWVzdCwgV0tTZXJpYWxp
emVkU2NyaXB0VmFsdWVSZWYgc2VyaWFsaXplZERhdGEpOworCisjaWZkZWYgX19jcGx1c3BsdXMK
K30KKyNlbmRpZgorCisjZW5kaWYgLyogV0tCdW5kbGVJbnRlbnRSZXF1ZXN0X2ggKi8KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tC
dW5kbGVQYWdlLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9jL1dLQnVuZGxlUGFnZS5oCmluZGV4IGY3MGQ1YjMuLjJjZTAxYjQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdl
LmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9X
S0J1bmRsZVBhZ2UuaApAQCAtMTA5LDcgKzEwOSw3IEBAIHR5cGVkZWYgdm9pZCAoKldLQnVuZGxl
UGFnZVdpbGxEaXNjb25uZWN0RE9NV2luZG93RXh0ZW5zaW9uRnJvbUdsb2JhbE9iamVjdENhbGxi
CiB0eXBlZGVmIHZvaWQgKCpXS0J1bmRsZVBhZ2VEaWRSZWNvbm5lY3RET01XaW5kb3dFeHRlbnNp
b25Ub0dsb2JhbE9iamVjdENhbGxiYWNrKShXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgV0tCdW5kbGVE
T01XaW5kb3dFeHRlbnNpb25SZWYsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOwogdHlwZWRlZiB2
b2lkICgqV0tCdW5kbGVQYWdlV2lsbERlc3Ryb3lHbG9iYWxPYmplY3RGb3JET01XaW5kb3dFeHRl
bnNpb25DYWxsYmFjaykoV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIFdLQnVuZGxlRE9NV2luZG93RXh0
ZW5zaW9uUmVmLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKIHR5cGVkZWYgYm9vbCAoKldLQnVu
ZGxlUGFnZVNob3VsZEZvcmNlVW5pdmVyc2FsQWNjZXNzRnJvbUxvY2FsVVJMQ2FsbGJhY2spKFdL
QnVuZGxlUGFnZVJlZiwgV0tTdHJpbmdSZWYgdXJsLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsK
LXR5cGVkZWYgdm9pZCAoKldLQnVuZGxlUGFnZURpZFJlY2VpdmVJbnRlbnRGb3JGcmFtZUNhbGxi
YWNrKShXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgV0tCdW5kbGVGcmFtZVJlZiBmcmFtZSwgV0tJbnRl
bnREYXRhUmVmIGludGVudCwgV0tUeXBlUmVmKiB1c2VyRGF0YSwgY29uc3Qgdm9pZCogY2xpZW50
SW5mbyk7Cit0eXBlZGVmIHZvaWQgKCpXS0J1bmRsZVBhZ2VEaWRSZWNlaXZlSW50ZW50Rm9yRnJh
bWVDYWxsYmFjaykoV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIFdLQnVuZGxlRnJhbWVSZWYgZnJhbWUs
IFdLQnVuZGxlSW50ZW50UmVxdWVzdFJlZiBpbnRlbnRSZXF1ZXN0LCBXS1R5cGVSZWYqIHVzZXJE
YXRhLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKIHR5cGVkZWYgdm9pZCAoKldLQnVuZGxlUGFn
ZVJlZ2lzdGVySW50ZW50U2VydmljZUZvckZyYW1lQ2FsbGJhY2spKFdLQnVuZGxlUGFnZVJlZiBw
YWdlLCBXS0J1bmRsZUZyYW1lUmVmIGZyYW1lLCBXS0ludGVudFNlcnZpY2VJbmZvUmVmIHNlcnZp
Y2VJbmZvLCBXS1R5cGVSZWYqIHVzZXJEYXRhLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKIAog
c3RydWN0IFdLQnVuZGxlUGFnZUxvYWRlckNsaWVudCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlSW50ZW50UmVxdWVz
dC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVk
QnVuZGxlSW50ZW50UmVxdWVzdC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uNWNjYjE5YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVJbnRlbnRSZXF1ZXN0LmNwcApAQCAtMCwwICsx
LDY0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEludGVsIENvcnBvcmF0aW9uLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiSW5qZWN0ZWRCdW5kbGVJbnRlbnRSZXF1ZXN0LmgiCisKKyNpZiBFTkFCTEUoV0VCX0lOVEVO
VFMpCisjaW5jbHVkZSA8V2ViQ29yZS9JbnRlbnRSZXF1ZXN0Lmg+CisjaW5jbHVkZSA8V2ViU2Vy
aWFsaXplZFNjcmlwdFZhbHVlLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1l
c3BhY2UgV2ViS2l0IHsKKworUGFzc1JlZlB0cjxJbmplY3RlZEJ1bmRsZUludGVudFJlcXVlc3Q+
IEluamVjdGVkQnVuZGxlSW50ZW50UmVxdWVzdDo6Y3JlYXRlKEludGVudFJlcXVlc3QqIHJlcXVl
c3QpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJbmplY3RlZEJ1bmRsZUludGVudFJlcXVl
c3QocmVxdWVzdCkpOworfQorCitJbmplY3RlZEJ1bmRsZUludGVudFJlcXVlc3Q6OkluamVjdGVk
QnVuZGxlSW50ZW50UmVxdWVzdChJbnRlbnRSZXF1ZXN0KiByZXF1ZXN0KQorICAgIDogbV9pbnRl
bnRSZXF1ZXN0KHJlcXVlc3QpCit7Cit9CisKK3ZvaWQgSW5qZWN0ZWRCdW5kbGVJbnRlbnRSZXF1
ZXN0Ojpwb3N0UmVzdWx0KFdlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSogZGF0YSkKK3sKKyAgICBt
X2ludGVudFJlcXVlc3QtPnBvc3RSZXN1bHQoc3RhdGljX2Nhc3Q8U2VyaWFsaXplZFNjcmlwdFZh
bHVlKj4oZGF0YS0+aW50ZXJuYWxSZXByZXNlbnRhdGlvbigpKSk7Cit9CisKK3ZvaWQgSW5qZWN0
ZWRCdW5kbGVJbnRlbnRSZXF1ZXN0Ojpwb3N0RmFpbHVyZShXZWJTZXJpYWxpemVkU2NyaXB0VmFs
dWUqIGRhdGEpCit7CisgICAgbV9pbnRlbnRSZXF1ZXN0LT5wb3N0RmFpbHVyZShzdGF0aWNfY2Fz
dDxTZXJpYWxpemVkU2NyaXB0VmFsdWUqPihkYXRhLT5pbnRlcm5hbFJlcHJlc2VudGF0aW9uKCkp
KTsKK30KKworUGFzc1JlZlB0cjxXZWJJbnRlbnREYXRhPiBJbmplY3RlZEJ1bmRsZUludGVudFJl
cXVlc3Q6OmludGVudCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIFdlYkludGVudERhdGE6OmNyZWF0
ZShJbnRlbnREYXRhKG1faW50ZW50UmVxdWVzdC0+aW50ZW50KCkpKTsKK30KKworfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCX0lOVEVOVFMpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxl
SW50ZW50UmVxdWVzdC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9JbmplY3RlZEJ1bmRsZUludGVudFJlcXVlc3QuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi45ZjAzZGY2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUludGVudFJlcXVlc3QuaApAQCAt
MCwwICsxLDY4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEludGVsIENvcnBvcmF0aW9u
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEluamVjdGVkQnVuZGxl
SW50ZW50UmVxdWVzdF9oCisjZGVmaW5lIEluamVjdGVkQnVuZGxlSW50ZW50UmVxdWVzdF9oCisK
KyNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCisKKyNpbmNsdWRlICJBUElPYmplY3QuaCIKKyNpbmNs
dWRlICJXZWJJbnRlbnREYXRhLmgiCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRl
IDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKworbmFtZXNwYWNl
IFdlYkNvcmUgeworY2xhc3MgSW50ZW50UmVxdWVzdDsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7
CisKK2NsYXNzIFdlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTsKKworY2xhc3MgSW5qZWN0ZWRCdW5k
bGVJbnRlbnRSZXF1ZXN0IDogcHVibGljIEFQSU9iamVjdCB7CitwdWJsaWM6CisgICAgc3RhdGlj
IGNvbnN0IFR5cGUgQVBJVHlwZSA9IFR5cGVCdW5kbGVJbnRlbnRSZXF1ZXN0OworCisgICAgc3Rh
dGljIFBhc3NSZWZQdHI8SW5qZWN0ZWRCdW5kbGVJbnRlbnRSZXF1ZXN0PiBjcmVhdGUoV2ViQ29y
ZTo6SW50ZW50UmVxdWVzdCopOworCisgICAgdm9pZCBwb3N0UmVzdWx0KFdlYlNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZSopOworICAgIHZvaWQgcG9zdEZhaWx1cmUoV2ViU2VyaWFsaXplZFNjcmlwdFZh
bHVlKik7CisKKyAgICBQYXNzUmVmUHRyPFdlYkludGVudERhdGE+IGludGVudCgpIGNvbnN0Owor
Citwcml2YXRlOgorICAgIEluamVjdGVkQnVuZGxlSW50ZW50UmVxdWVzdChXZWJDb3JlOjpJbnRl
bnRSZXF1ZXN0Kik7CisKKyAgICB2aXJ0dWFsIFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIEFQ
SVR5cGU7IH0KKworICAgIFJlZlB0cjxXZWJDb3JlOjpJbnRlbnRSZXF1ZXN0PiBtX2ludGVudFJl
cXVlc3Q7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShX
RUJfSU5URU5UUykKKworI2VuZGlmIC8vIEluamVjdGVkQnVuZGxlSW50ZW50UmVxdWVzdF9oCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVj
dGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5jcHAKaW5kZXgg
NzRmOGVmYi4uYTZhMDYxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdl
TG9hZGVyQ2xpZW50LmNwcApAQCAtMzQsNyArMzQsNyBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0L1dU
RlN0cmluZy5oPgogCiAjaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQotI2luY2x1ZGUgIldlYkludGVu
dERhdGEuaCIKKyNpbmNsdWRlICJJbmplY3RlZEJ1bmRsZUludGVudFJlcXVlc3QuaCIKICNlbmRp
ZgogI2lmIEVOQUJMRShXRUJfSU5URU5UU19UQUcpCiAjaW5jbHVkZSAiV2ViSW50ZW50U2Vydmlj
ZUluZm8uaCIKQEAgLTE5NSwxMyArMTk1LDEzIEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlTG9h
ZGVyQ2xpZW50OjpkaWREZXRlY3RYU1NGb3JGcmFtZShXZWJQYWdlKiBwYWdlLCBXZWJGcmFtCiB9
CiAKICNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCi12b2lkIEluamVjdGVkQnVuZGxlUGFnZUxvYWRl
ckNsaWVudDo6ZGlkUmVjZWl2ZUludGVudEZvckZyYW1lKFdlYlBhZ2UqIHBhZ2UsIFdlYkZyYW1l
KiBmcmFtZSwgV2ViSW50ZW50RGF0YSogaW50ZW50LCBSZWZQdHI8QVBJT2JqZWN0PiYgdXNlckRh
dGEpCit2b2lkIEluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudDo6ZGlkUmVjZWl2ZUludGVu
dEZvckZyYW1lKFdlYlBhZ2UqIHBhZ2UsIFdlYkZyYW1lKiBmcmFtZSwgSW5qZWN0ZWRCdW5kbGVJ
bnRlbnRSZXF1ZXN0KiBpbnRlbnRSZXF1ZXN0LCBSZWZQdHI8QVBJT2JqZWN0PiYgdXNlckRhdGEp
CiB7CiAgICAgaWYgKCFtX2NsaWVudC5kaWRSZWNlaXZlSW50ZW50Rm9yRnJhbWUpCiAgICAgICAg
IHJldHVybjsKIAogICAgIFdLVHlwZVJlZiB1c2VyRGF0YVRvUGFzcyA9IDA7Ci0gICAgbV9jbGll
bnQuZGlkUmVjZWl2ZUludGVudEZvckZyYW1lKHRvQVBJKHBhZ2UpLCB0b0FQSShmcmFtZSksIHRv
QVBJKGludGVudCksICZ1c2VyRGF0YVRvUGFzcywgbV9jbGllbnQuY2xpZW50SW5mbyk7CisgICAg
bV9jbGllbnQuZGlkUmVjZWl2ZUludGVudEZvckZyYW1lKHRvQVBJKHBhZ2UpLCB0b0FQSShmcmFt
ZSksIHRvQVBJKGludGVudFJlcXVlc3QpLCAmdXNlckRhdGFUb1Bhc3MsIG1fY2xpZW50LmNsaWVu
dEluZm8pOwogICAgIHVzZXJEYXRhID0gYWRvcHRSZWYodG9JbXBsKHVzZXJEYXRhVG9QYXNzKSk7
CiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVu
dC5oCmluZGV4IDQwMzAzN2UuLjgxZDliZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmgK
KysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1
bmRsZVBhZ2VMb2FkZXJDbGllbnQuaApAQCAtNDcsNyArNDcsNyBAQCBjbGFzcyBJbmplY3RlZEJ1
bmRsZUJhY2tGb3J3YXJkTGlzdEl0ZW07CiBjbGFzcyBXZWJQYWdlOwogY2xhc3MgV2ViRnJhbWU7
CiAjaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQotY2xhc3MgV2ViSW50ZW50RGF0YTsKK2NsYXNzIElu
amVjdGVkQnVuZGxlSW50ZW50UmVxdWVzdDsKICNlbmRpZgogI2lmIEVOQUJMRShXRUJfSU5URU5U
U19UQUcpCiBjbGFzcyBXZWJJbnRlbnRTZXJ2aWNlSW5mbzsKQEAgLTcyLDcgKzcyLDcgQEAgcHVi
bGljOgogICAgIHZvaWQgZGlkRGV0ZWN0WFNTRm9yRnJhbWUoV2ViUGFnZSosIFdlYkZyYW1lKiwg
UmVmUHRyPEFQSU9iamVjdD4mIHVzZXJEYXRhKTsKIAogI2lmIEVOQUJMRShXRUJfSU5URU5UUykK
LSAgICB2b2lkIGRpZFJlY2VpdmVJbnRlbnRGb3JGcmFtZShXZWJQYWdlKiwgV2ViRnJhbWUqLCBX
ZWJJbnRlbnREYXRhKiwgUmVmUHRyPEFQSU9iamVjdD4mIHVzZXJEYXRhKTsKKyAgICB2b2lkIGRp
ZFJlY2VpdmVJbnRlbnRGb3JGcmFtZShXZWJQYWdlKiwgV2ViRnJhbWUqLCBJbmplY3RlZEJ1bmRs
ZUludGVudFJlcXVlc3QqLCBSZWZQdHI8QVBJT2JqZWN0PiYgdXNlckRhdGEpOwogI2VuZGlmCiAj
aWYgRU5BQkxFKFdFQl9JTlRFTlRTX1RBRykKICAgICB2b2lkIHJlZ2lzdGVySW50ZW50U2Vydmlj
ZUZvckZyYW1lKFdlYlBhZ2UqLCBXZWJGcmFtZSosIFdlYkludGVudFNlcnZpY2VJbmZvKiwgUmVm
UHRyPEFQSU9iamVjdD4mIHVzZXJEYXRhKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5j
cHAKaW5kZXggOTE4ZTc0YS4uM2ZkMjk5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKKysrIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5jcHAKQEAgLTc0LDggKzc0LDggQEAKICNpbmNsdWRlIDxXZWJDb3JlL1dpbmRvd0ZlYXR1cmVz
Lmg+CiAKICNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCisjaW5jbHVkZSAiSW5qZWN0ZWRCdW5kbGVJ
bnRlbnRSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiSW50ZW50RGF0YS5oIgotI2luY2x1ZGUgIldlYklu
dGVudERhdGEuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0ludGVudFJlcXVlc3QuaD4KICNlbmRpZgog
CkBAIC0xNTYyLDIwICsxNTYyLDExIEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3Bh
dGNoSW50ZW50KFBhc3NSZWZQdHI8SW50ZW50UmVxdWVzdD4gcmVxdWVzdCkKICAgICBpZiAoIXdl
YlBhZ2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIEludGVudERhdGEgaW50ZW50RGF0YTsKLSAg
ICBJbnRlbnQqIGNvcmVJbnRlbnQgPSByZXF1ZXN0LT5pbnRlbnQoKTsKLSAgICBBU1NFUlQoY29y
ZUludGVudCk7Ci0gICAgaW50ZW50RGF0YS5hY3Rpb24gPSBjb3JlSW50ZW50LT5hY3Rpb24oKTsK
LSAgICBpbnRlbnREYXRhLnR5cGUgPSBjb3JlSW50ZW50LT50eXBlKCk7Ci0gICAgaW50ZW50RGF0
YS5zZXJ2aWNlID0gY29yZUludGVudC0+c2VydmljZSgpOwotICAgIGludGVudERhdGEuZGF0YSA9
IGNvcmVJbnRlbnQtPmRhdGEoKS0+ZGF0YSgpOwotICAgIGludGVudERhdGEuZXh0cmFzID0gY29y
ZUludGVudC0+ZXh0cmFzKCk7Ci0gICAgaW50ZW50RGF0YS5zdWdnZXN0aW9ucyA9IGNvcmVJbnRl
bnQtPnN1Z2dlc3Rpb25zKCk7Ci0KICAgICBSZWZQdHI8QVBJT2JqZWN0PiB1c2VyRGF0YTsKLSAg
ICBSZWZQdHI8V2ViSW50ZW50RGF0YT4gd2ViSW50ZW50ID0gV2ViSW50ZW50RGF0YTo6Y3JlYXRl
KGludGVudERhdGEpOwotICAgIHdlYlBhZ2UtPmluamVjdGVkQnVuZGxlTG9hZGVyQ2xpZW50KCku
ZGlkUmVjZWl2ZUludGVudEZvckZyYW1lKHdlYlBhZ2UsIG1fZnJhbWUsIHdlYkludGVudC5nZXQo
KSwgdXNlckRhdGEpOworICAgIFJlZlB0cjxJbmplY3RlZEJ1bmRsZUludGVudFJlcXVlc3Q+IGJ1
bmRsZUludGVudFJlcXVlc3QgPSBJbmplY3RlZEJ1bmRsZUludGVudFJlcXVlc3Q6OmNyZWF0ZShy
ZXF1ZXN0LmdldCgpKTsKKyAgICB3ZWJQYWdlLT5pbmplY3RlZEJ1bmRsZUxvYWRlckNsaWVudCgp
LmRpZFJlY2VpdmVJbnRlbnRGb3JGcmFtZSh3ZWJQYWdlLCBtX2ZyYW1lLCBidW5kbGVJbnRlbnRS
ZXF1ZXN0LmdldCgpLCB1c2VyRGF0YSk7CiAKKyAgICBJbnRlbnREYXRhIGludGVudERhdGEocmVx
dWVzdC0+aW50ZW50KCkpOwogICAgIHdlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94
eTo6RGlkUmVjZWl2ZUludGVudEZvckZyYW1lKG1fZnJhbWUtPmZyYW1lSUQoKSwgaW50ZW50RGF0
YSwgSW5qZWN0ZWRCdW5kbGVVc2VyTWVzc2FnZUVuY29kZXIodXNlckRhdGEuZ2V0KCkpKSk7CiB9
CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwpp
bmRleCBhMGI2ZTZjLi4wNDgwNDIyIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIv
VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDEgQEAKKzIwMTItMDctMjUgIENocmlzdG9waGUg
RHVtZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVsLmNvbT4KKworICAgICAgICBbV0syXVtXVFJd
IExheW91dFRlc3RDb250cm9sbGVyLnNlbmRXZWJJbnRlbnRSZXNwb25zZSgpIG5lZWRzIHRvIGJl
IGltcGxlbWVudGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD05MjIyNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEltcGxlbWVudCBMYXlvdXRUZXN0Q29udHJvbGxlci5zZW5kV2ViSW50ZW50UmVzcG9uc2Uo
KSBzbworICAgICAgICB0aGF0IGEgdGVzdCBjYXNlIGNhbiByZXBseSB0byBhIFdlYiBpbnRlbnQg
cmVxdWVzdCBhbmQKKyAgICAgICAgdGVzdCB0aGlzIGZ1bmN0aW9uYWxpdHkuCisKKyAgICAgICAg
SW4gb3JkZXIgdG8gc3VwcG9ydCB0aGlzIGZ1bmN0aW9uYWxpdHksIHdlIG5lZWQgdG8ga2VlcAor
ICAgICAgICBhIHBvaW50ZXIgdG8gdGhlIGN1cnJlbnQgaW50ZW50IHJlcXVlc3QgaW4KKyAgICAg
ICAgSW5qZWN0ZWRCdW5kbGVQYWdlOjpkaWRSZWNlaXZlSW50ZW50Rm9yRnJhbWUoKSBzbyB0aGF0
CisgICAgICAgIHdlIGNhbiByZXVzZSBpdCBsYXRlciBpbgorICAgICAgICBMYXlvdXRUZXN0Q29u
dHJvbGxlcjo6c2VuZFdlYkludGVudFJlc3BvbnNlKCkuCisKKyAgICAgICAgVGhlIGZvbGxvd2lu
ZyB0ZXN0cyBuZWVkIHRoaXMgZnVuY3Rpb25hbGl0eToKKyAgICAgICAgLSB3ZWJpbnRlbnRzL3dl
Yi1pbnRlbnRzLWZhaWx1cmUuaHRtbAorICAgICAgICAtIHdlYmludGVudHMvd2ViLWludGVudHMt
cmVwbHkuaHRtbAorCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9C
aW5kaW5ncy9MYXlvdXRUZXN0Q29udHJvbGxlci5pZGw6CisgICAgICAgICogV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuY3BwOgorICAgICAgICAoV1RS
OjpJbmplY3RlZEJ1bmRsZVBhZ2U6OmRpZFJlY2VpdmVJbnRlbnRGb3JGcmFtZSk6CisgICAgICAg
ICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuaDoK
KyAgICAgICAgKEluamVjdGVkQnVuZGxlUGFnZSk6CisgICAgICAgIChXVFI6OkluamVjdGVkQnVu
ZGxlUGFnZTo6Y3VycmVudEludGVudFJlcXVlc3QpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV1RS
OjpMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2VuZFdlYkludGVudFJlc3BvbnNlKToKKyAgICAgICAg
KFdUUik6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9MYXlvdXRU
ZXN0Q29udHJvbGxlci5oOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXIpOgorICAgICAg
ICAqIFdlYktpdFRlc3RSdW5uZXIvZWZsL1BsYXRmb3JtV2ViVmlld0VmbC5jcHA6CisgICAgICAg
IChXVFI6OlBsYXRmb3JtV2ViVmlldzo6UGxhdGZvcm1XZWJWaWV3KTogVGhlIHZpZXcgbmVlZHMg
dG8gYmUKKyAgICAgICAgc2hvd24gb3RoZXJ3aXNlIHdlIGRvbid0IGdldCBjbGljayBldmVudHMu
IFRoZSBXZWIgaW50ZW50cworICAgICAgICB0ZXN0cyBzaW11bGF0ZSB1c2VyIGludGVyYWN0aW9u
IHZpYSBhIGJ1dHRvbiBjbGljayBzbyB0aGlzCisgICAgICAgIGlzIG5lZWRlZC4KKwogMjAxMi0w
Ny0yNCAgUmFwaGFlbCBLdWJvIGRhIENvc3RhICA8cmFrdWNvQHdlYmtpdC5vcmc+CiAKICAgICAg
ICAgW0VGTF0gVW5yZXZpZXdlZCBidWlsZCBmaXguCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL0xheW91dFRlc3RDb250cm9sbGVyLmlk
bCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvTGF5b3V0
VGVzdENvbnRyb2xsZXIuaWRsCmluZGV4IDQzMDYyYzUuLjMyNWFhN2EgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvTGF5b3V0VGVzdENv
bnRyb2xsZXIuaWRsCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
QmluZGluZ3MvTGF5b3V0VGVzdENvbnRyb2xsZXIuaWRsCkBAIC0xMjksNiArMTI5LDkgQEAgbW9k
dWxlIFdUUiB7CiAgICAgICAgIHZvaWQgc2V0U2hvdWxkU3RheU9uUGFnZUFmdGVySGFuZGxpbmdC
ZWZvcmVVbmxvYWQoaW4gYm9vbGVhbiBmbGFnKTsKIAogICAgICAgICB2b2lkIHNldERlZmVyc0xv
YWRpbmcoaW4gYm9vbGVhbiBmbGFnKTsKKworICAgICAgICAvLyBXZWIgaW50ZW50cyB0ZXN0aW5n
LgorICAgICAgICB2b2lkIHNlbmRXZWJJbnRlbnRSZXNwb25zZShpbiBET01TdHJpbmcgcmVwbHkp
OwogICAgICAgICAKICAgICAgICAgLy8gRm9jdXMgdGVzdGluZy4KICAgICAgICAgdm9pZCBhZGRD
aHJvbWVJbnB1dEZpZWxkKGluIG9iamVjdCBjYWxsYmFjayk7CmRpZmYgLS1naXQgYS9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5jcHAgYi9U
b29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5j
cHAKaW5kZXggYzViZDE0MC4uNzk1NWM4OCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuY3BwCisrKyBiL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmNwcApAQCAt
NTAsNiArNTAsNyBAQAogI2VuZGlmCiAKICNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCisjaW5jbHVk
ZSA8V2ViS2l0Mi9XS0J1bmRsZUludGVudFJlcXVlc3QuaD4KICNpbmNsdWRlIDxXZWJLaXQyL1dL
SW50ZW50RGF0YS5oPgogI2VuZGlmCiAjaWYgRU5BQkxFKFdFQl9JTlRFTlRTX1RBRykKQEAgLTQy
NSwyMCArNDI2LDIzIEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlOjpkaWRGaW5pc2hQcm9ncmVz
cyhXS0J1bmRsZVBhZ2VSZWYsIGNvbnN0IHZvaWQgKmNsaWVudEluCiAgICAgc3RhdGljX2Nhc3Q8
SW5qZWN0ZWRCdW5kbGVQYWdlKj4oY29uc3RfY2FzdDx2b2lkKj4oY2xpZW50SW5mbykpLT5kaWRG
aW5pc2hQcm9ncmVzcygpOwogfQogCi12b2lkIEluamVjdGVkQnVuZGxlUGFnZTo6ZGlkUmVjZWl2
ZUludGVudEZvckZyYW1lKFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBXS0J1bmRsZUZyYW1lUmVmIGZy
YW1lLCBXS0ludGVudERhdGFSZWYgaW50ZW50LCBXS1R5cGVSZWYqIHVzZXJEYXRhLCBjb25zdCB2
b2lkKiBjbGllbnRJbmZvKQordm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2U6OmRpZFJlY2VpdmVJbnRl
bnRGb3JGcmFtZShXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgV0tCdW5kbGVGcmFtZVJlZiBmcmFtZSwg
V0tCdW5kbGVJbnRlbnRSZXF1ZXN0UmVmIGludGVudFJlcXVlc3QsIFdLVHlwZVJlZiogdXNlckRh
dGEsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCiB7CiAjaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQor
ICAgIHN0YXRpY19jYXN0PEluamVjdGVkQnVuZGxlUGFnZSo+KGNvbnN0X2Nhc3Q8dm9pZCo+KGNs
aWVudEluZm8pKS0+bV9jdXJyZW50SW50ZW50UmVxdWVzdCA9IGludGVudFJlcXVlc3Q7CisgICAg
V0tSZXRhaW5QdHI8V0tJbnRlbnREYXRhUmVmPiBpbnRlbnQoQWRvcHRXSywgV0tCdW5kbGVJbnRl
bnRSZXF1ZXN0Q29weUludGVudChpbnRlbnRSZXF1ZXN0KSk7CisKICAgICBJbmplY3RlZEJ1bmRs
ZTo6c2hhcmVkKCkuc3RyaW5nQnVpbGRlcigpLT5hcHBlbmQoIlJlY2VpdmVkIFdlYiBJbnRlbnQ6
IGFjdGlvbj0iKTsKLSAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gd2tBY3Rpb24oQWRvcHRX
SywgV0tJbnRlbnREYXRhQ29weUFjdGlvbihpbnRlbnQpKTsKKyAgICBXS1JldGFpblB0cjxXS1N0
cmluZ1JlZj4gd2tBY3Rpb24oQWRvcHRXSywgV0tJbnRlbnREYXRhQ29weUFjdGlvbihpbnRlbnQu
Z2V0KCkpKTsKICAgICBJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkuc3RyaW5nQnVpbGRlcigpLT5h
cHBlbmQodG9XVEZTdHJpbmcod2tBY3Rpb24uZ2V0KCkpKTsKICAgICBJbmplY3RlZEJ1bmRsZTo6
c2hhcmVkKCkuc3RyaW5nQnVpbGRlcigpLT5hcHBlbmQoIiB0eXBlPSIpOwotICAgIFdLUmV0YWlu
UHRyPFdLU3RyaW5nUmVmPiB3a1R5cGUoQWRvcHRXSywgV0tJbnRlbnREYXRhQ29weVR5cGUoaW50
ZW50KSk7CisgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IHdrVHlwZShBZG9wdFdLLCBXS0lu
dGVudERhdGFDb3B5VHlwZShpbnRlbnQuZ2V0KCkpKTsKICAgICBJbmplY3RlZEJ1bmRsZTo6c2hh
cmVkKCkuc3RyaW5nQnVpbGRlcigpLT5hcHBlbmQodG9XVEZTdHJpbmcod2tUeXBlLmdldCgpKSk7
CiAgICAgSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLnN0cmluZ0J1aWxkZXIoKS0+YXBwZW5kKCJc
biIpOwogCiAgICAgLy8gRklYTUU6IFByaW50IG51bWJlciBvZiBwb3J0cyB3aGVuIGV4cG9zZWQg
aW4gV2ViS2l0MgogCi0gICAgV0tSZXRhaW5QdHI8V0tVUkxSZWY+IHdrU2VydmljZVVybChBZG9w
dFdLLCBXS0ludGVudERhdGFDb3B5U2VydmljZShpbnRlbnQpKTsKKyAgICBXS1JldGFpblB0cjxX
S1VSTFJlZj4gd2tTZXJ2aWNlVXJsKEFkb3B0V0ssIFdLSW50ZW50RGF0YUNvcHlTZXJ2aWNlKGlu
dGVudC5nZXQoKSkpOwogICAgIGlmICh3a1NlcnZpY2VVcmwpIHsKICAgICAgICAgV0tSZXRhaW5Q
dHI8V0tTdHJpbmdSZWY+IHdrU2VydmljZShBZG9wdFdLLCBXS1VSTENvcHlTdHJpbmcod2tTZXJ2
aWNlVXJsLmdldCgpKSk7CiAgICAgICAgIGlmICh3a1NlcnZpY2UgJiYgIVdLU3RyaW5nSXNFbXB0
eSh3a1NlcnZpY2UuZ2V0KCkpKSB7CkBAIC00NDgsNyArNDUyLDcgQEAgdm9pZCBJbmplY3RlZEJ1
bmRsZVBhZ2U6OmRpZFJlY2VpdmVJbnRlbnRGb3JGcmFtZShXS0J1bmRsZVBhZ2VSZWYgcGFnZSwg
V0tCdW5kbGUKICAgICAgICAgfQogICAgIH0KIAotICAgIFdLUmV0YWluUHRyPFdLRGljdGlvbmFy
eVJlZj4gd2tFeHRyYXMoQWRvcHRXSywgV0tJbnRlbnREYXRhQ29weUV4dHJhcyhpbnRlbnQpKTsK
KyAgICBXS1JldGFpblB0cjxXS0RpY3Rpb25hcnlSZWY+IHdrRXh0cmFzKEFkb3B0V0ssIFdLSW50
ZW50RGF0YUNvcHlFeHRyYXMoaW50ZW50LmdldCgpKSk7CiAgICAgV0tSZXRhaW5QdHI8V0tBcnJh
eVJlZj4gd2tFeHRyYUtleXMoQWRvcHRXSywgV0tEaWN0aW9uYXJ5Q29weUtleXMod2tFeHRyYXMu
Z2V0KCkpKTsKICAgICBjb25zdCBzaXplX3QgbnVtRXh0cmFLZXlzID0gV0tBcnJheUdldFNpemUo
d2tFeHRyYUtleXMuZ2V0KCkpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbnVtRXh0cmFL
ZXlzOyArK2kpIHsKQEAgLTQ2MSw3ICs0NjUsNyBAQCB2b2lkIEluamVjdGVkQnVuZGxlUGFnZTo6
ZGlkUmVjZWl2ZUludGVudEZvckZyYW1lKFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBXS0J1bmRsZQog
ICAgICAgICBJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkuc3RyaW5nQnVpbGRlcigpLT5hcHBlbmQo
IlxuIik7CiAgICAgfQogCi0gICAgV0tSZXRhaW5QdHI8V0tBcnJheVJlZj4gd2tTdWdnZXN0aW9u
cyhBZG9wdFdLLCBXS0ludGVudERhdGFDb3B5U3VnZ2VzdGlvbnMoaW50ZW50KSk7CisgICAgV0tS
ZXRhaW5QdHI8V0tBcnJheVJlZj4gd2tTdWdnZXN0aW9ucyhBZG9wdFdLLCBXS0ludGVudERhdGFD
b3B5U3VnZ2VzdGlvbnMoaW50ZW50LmdldCgpKSk7CiAgICAgY29uc3Qgc2l6ZV90IG51bVN1Z2dl
c3Rpb25zID0gV0tBcnJheUdldFNpemUod2tTdWdnZXN0aW9ucy5nZXQoKSk7CiAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBudW1TdWdnZXN0aW9uczsgKytpKSB7CiAgICAgICAgIFdLU3RyaW5n
UmVmIHdrU3VnZ2VzdGlvbiA9IHN0YXRpY19jYXN0PFdLU3RyaW5nUmVmPihXS0FycmF5R2V0SXRl
bUF0SW5kZXgod2tTdWdnZXN0aW9ucy5nZXQoKSwgaSkpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuaCBiL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmgKaW5k
ZXggODI0YjFkZi4uMDc0MzE0ZSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuaAorKysgYi9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5oCkBAIC0zOCw2ICszOCwx
MSBAQCBwdWJsaWM6CiAgICAgfkluamVjdGVkQnVuZGxlUGFnZSgpOwogCiAgICAgV0tCdW5kbGVQ
YWdlUmVmIHBhZ2UoKSBjb25zdCB7IHJldHVybiBtX3BhZ2U7IH0KKworI2lmIEVOQUJMRShXRUJf
SU5URU5UUykKKyAgICBXS0J1bmRsZUludGVudFJlcXVlc3RSZWYgY3VycmVudEludGVudFJlcXVl
c3QoKSBjb25zdCB7IHJldHVybiBtX2N1cnJlbnRJbnRlbnRSZXF1ZXN0LmdldCgpOyB9CisjZW5k
aWYKKwogICAgIHZvaWQgZHVtcCgpOwogCiAgICAgdm9pZCBzdG9wTG9hZGluZygpOwpAQCAtNzIs
NyArNzcsNyBAQCBwcml2YXRlOgogICAgIHN0YXRpYyB2b2lkIGRpZFJlY2VpdmVDb250ZW50TGVu
Z3RoRm9yUmVzb3VyY2UoV0tCdW5kbGVQYWdlUmVmLCBXS0J1bmRsZUZyYW1lUmVmLCB1aW50NjRf
dCBpZGVudGlmaWVyLCB1aW50NjRfdCBsZW5ndGgsIGNvbnN0IHZvaWQqKTsKICAgICBzdGF0aWMg
dm9pZCBkaWRGaW5pc2hMb2FkRm9yUmVzb3VyY2UoV0tCdW5kbGVQYWdlUmVmLCBXS0J1bmRsZUZy
YW1lUmVmLCB1aW50NjRfdCBpZGVudGlmaWVyLCBjb25zdCB2b2lkKik7CiAgICAgc3RhdGljIHZv
aWQgZGlkRmFpbExvYWRGb3JSZXNvdXJjZShXS0J1bmRsZVBhZ2VSZWYsIFdLQnVuZGxlRnJhbWVS
ZWYsIHVpbnQ2NF90IGlkZW50aWZpZXIsIFdLRXJyb3JSZWYsIGNvbnN0IHZvaWQqKTsKLSAgICBz
dGF0aWMgdm9pZCBkaWRSZWNlaXZlSW50ZW50Rm9yRnJhbWUoV0tCdW5kbGVQYWdlUmVmLCBXS0J1
bmRsZUZyYW1lUmVmLCBXS0ludGVudERhdGFSZWYsIFdLVHlwZVJlZiosIGNvbnN0IHZvaWQqKTsK
KyAgICBzdGF0aWMgdm9pZCBkaWRSZWNlaXZlSW50ZW50Rm9yRnJhbWUoV0tCdW5kbGVQYWdlUmVm
LCBXS0J1bmRsZUZyYW1lUmVmLCBXS0J1bmRsZUludGVudFJlcXVlc3RSZWYsIFdLVHlwZVJlZios
IGNvbnN0IHZvaWQqKTsKICAgICBzdGF0aWMgdm9pZCByZWdpc3RlckludGVudFNlcnZpY2VGb3JG
cmFtZShXS0J1bmRsZVBhZ2VSZWYsIFdLQnVuZGxlRnJhbWVSZWYsIFdLSW50ZW50U2VydmljZUlu
Zm9SZWYsIFdLVHlwZVJlZiosIGNvbnN0IHZvaWQqKTsKIAogICAgIHZvaWQgZGlkU3RhcnRQcm92
aXNpb25hbExvYWRGb3JGcmFtZShXS0J1bmRsZUZyYW1lUmVmKTsKQEAgLTE2NCw2ICsxNjksMTAg
QEAgcHJpdmF0ZToKICAgICBXS0J1bmRsZVBhZ2VSZWYgbV9wYWdlOwogICAgIFdLUmV0YWluUHRy
PFdLQnVuZGxlU2NyaXB0V29ybGRSZWY+IG1fd29ybGQ7CiAgICAgV0tSZXRhaW5QdHI8V0tCdW5k
bGVCYWNrRm9yd2FyZExpc3RJdGVtUmVmPiBtX3ByZXZpb3VzVGVzdEJhY2tGb3J3YXJkTGlzdEl0
ZW07CisKKyNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCisgICAgV0tSZXRhaW5QdHI8V0tCdW5kbGVJ
bnRlbnRSZXF1ZXN0UmVmPiBtX2N1cnJlbnRJbnRlbnRSZXF1ZXN0OworI2VuZGlmCiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXVFIKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAKaW5kZXggYTM2NWJm
Zi4uODFiOGYzNCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1
bmRsZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAKQEAgLTQyLDExICs0Miwx
NiBAQAogI2luY2x1ZGUgPFdlYktpdDIvV0tCdW5kbGVQcml2YXRlLmg+CiAjaW5jbHVkZSA8V2Vi
S2l0Mi9XS0J1bmRsZVNjcmlwdFdvcmxkLmg+CiAjaW5jbHVkZSA8V2ViS2l0Mi9XS1JldGFpblB0
ci5oPgorI2luY2x1ZGUgPFdlYktpdDIvV0tTZXJpYWxpemVkU2NyaXB0VmFsdWUuaD4KICNpbmNs
dWRlIDxXZWJLaXQyL1dlYktpdDIuaD4KICNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KICNp
bmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIu
aD4KIAorI2lmIEVOQUJMRShXRUJfSU5URU5UUykKKyNpbmNsdWRlIDxXZWJLaXQyL1dLQnVuZGxl
SW50ZW50UmVxdWVzdC5oPgorI2VuZGlmCisKIG5hbWVzcGFjZSBXVFIgewogCiAvLyBUaGlzIGlz
IGxvd2VyIHRoYW4gRHVtcFJlbmRlclRyZWUncyB0aW1lb3V0LCB0byBtYWtlIGl0IGVhc2llciB0
byB3b3JrIHRocm91Z2ggdGhlIGZhaWx1cmVzCkBAIC02MTMsNiArNjE4LDI3IEBAIHZvaWQgTGF5
b3V0VGVzdENvbnRyb2xsZXI6Om92ZXJyaWRlUHJlZmVyZW5jZShKU1N0cmluZ1JlZiBwcmVmZXJl
bmNlLCBib29sIHZhbHVlCiAgICAgV0tCdW5kbGVPdmVycmlkZUJvb2xQcmVmZXJlbmNlRm9yVGVz
dFJ1bm5lcihJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkuYnVuZGxlKCksIEluamVjdGVkQnVuZGxl
OjpzaGFyZWQoKS5wYWdlR3JvdXAoKSwgdG9XSyhwcmVmZXJlbmNlKS5nZXQoKSwgdmFsdWUpOwog
fQogCit2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZW5kV2ViSW50ZW50UmVzcG9uc2UoSlNT
dHJpbmdSZWYgcmVwbHkpCit7CisjaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQorICAgIFdLUmV0YWlu
UHRyPFdLQnVuZGxlSW50ZW50UmVxdWVzdFJlZj4gY3VycmVudFJlcXVlc3QgPSBJbmplY3RlZEJ1
bmRsZTo6c2hhcmVkKCkucGFnZSgpLT5jdXJyZW50SW50ZW50UmVxdWVzdCgpOworICAgIGlmICgh
Y3VycmVudFJlcXVlc3QpCisgICAgICAgIHJldHVybjsKKworICAgIFdLQnVuZGxlRnJhbWVSZWYg
bWFpbkZyYW1lID0gV0tCdW5kbGVQYWdlR2V0TWFpbkZyYW1lKEluamVjdGVkQnVuZGxlOjpzaGFy
ZWQoKS5wYWdlKCktPnBhZ2UoKSk7CisgICAgSlNDb250ZXh0UmVmIGNvbnRleHQgPSBXS0J1bmRs
ZUZyYW1lR2V0SmF2YVNjcmlwdENvbnRleHQobWFpbkZyYW1lKTsKKworICAgIGlmIChyZXBseSkg
eworICAgICAgICBXS1JldGFpblB0cjxXS1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZVJlZj4gc2VyaWFs
aXplZERhdGEoQWRvcHRXSywgV0tTZXJpYWxpemVkU2NyaXB0VmFsdWVDcmVhdGUoY29udGV4dCwg
SlNWYWx1ZU1ha2VTdHJpbmcoY29udGV4dCwgcmVwbHkpLCAwKSk7CisgICAgICAgIFdLQnVuZGxl
SW50ZW50UmVxdWVzdFBvc3RSZXN1bHQoY3VycmVudFJlcXVlc3QuZ2V0KCksIHNlcmlhbGl6ZWRE
YXRhLmdldCgpKTsKKyAgICB9IGVsc2UgeworICAgICAgICBKU1JldGFpblB0cjxKU1N0cmluZ1Jl
Zj4gZXJyb3JSZXBseShKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiRVJST1IiKSk7Cisg
ICAgICAgIFdLUmV0YWluUHRyPFdLU2VyaWFsaXplZFNjcmlwdFZhbHVlUmVmPiBzZXJpYWxpemVk
RGF0YShBZG9wdFdLLCBXS1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZUNyZWF0ZShjb250ZXh0LCBKU1Zh
bHVlTWFrZVN0cmluZyhjb250ZXh0LCBlcnJvclJlcGx5LmdldCgpKSwgMCkpOworICAgICAgICBX
S0J1bmRsZUludGVudFJlcXVlc3RQb3N0RmFpbHVyZShjdXJyZW50UmVxdWVzdC5nZXQoKSwgc2Vy
aWFsaXplZERhdGEuZ2V0KCkpOworICAgIH0KKyNlbmRpZgorfQorCiB2b2lkIExheW91dFRlc3RD
b250cm9sbGVyOjpzZXRBbHdheXNBY2NlcHRDb29raWVzKGJvb2wgYWNjZXB0KQogewogICAgIFdL
QnVuZGxlU2V0QWx3YXlzQWNjZXB0Q29va2llcyhJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkuYnVu
ZGxlKCksIGFjY2VwdCk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL0xheW91dFRlc3RDb250cm9sbGVyLmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL0xheW91dFRlc3RDb250cm9sbGVyLmgKaW5kZXggMzUwMzNlMi4uMWY3
MDdkZSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9M
YXlvdXRUZXN0Q29udHJvbGxlci5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaApAQCAtMjA2LDYgKzIwNiw5IEBAIHB1Ymxp
YzoKIAogICAgIHZvaWQgb3ZlcnJpZGVQcmVmZXJlbmNlKEpTU3RyaW5nUmVmIHByZWZlcmVuY2Us
IGJvb2wgdmFsdWUpOwogCisgICAgLy8gV2ViIGludGVudHMgdGVzdGluZy4KKyAgICB2b2lkIHNl
bmRXZWJJbnRlbnRSZXNwb25zZShKU1N0cmluZ1JlZiByZXBseSk7CisKICAgICAvLyBDb29raWVz
IHRlc3RpbmcKICAgICB2b2lkIHNldEFsd2F5c0FjY2VwdENvb2tpZXMoYm9vbCk7CiAKZGlmZiAt
LWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvZWZsL1BsYXRmb3JtV2ViVmlld0VmbC5jcHAg
Yi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2VmbC9QbGF0Zm9ybVdlYlZpZXdFZmwuY3BwCmluZGV4
IGMzYzA4NjMuLjJhZDY3ZDkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvZWZs
L1BsYXRmb3JtV2ViVmlld0VmbC5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9lZmwv
UGxhdGZvcm1XZWJWaWV3RWZsLmNwcApAQCAtNTAsNiArNTAsNyBAQCBQbGF0Zm9ybVdlYlZpZXc6
OlBsYXRmb3JtV2ViVmlldyhXS0NvbnRleHRSZWYgY29udGV4dCwgV0tQYWdlR3JvdXBSZWYgcGFn
ZUdyb3VwKQogCiAgICAgZXdrX3ZpZXdfdGhlbWVfc2V0KG1fdmlldywgVEhFTUVfRElSIi9kZWZh
dWx0LmVkaiIpOwogICAgIG1fd2luZG93SXNLZXkgPSBmYWxzZTsKKyAgICBldmFzX29iamVjdF9z
aG93KG1fdmlldyk7CiB9CiAKIFBsYXRmb3JtV2ViVmlldzo6flBsYXRmb3JtV2ViVmlldygpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>154325</attachid>
            <date>2012-07-25 04:34:37 -0700</date>
            <delta_ts>2012-07-25 13:34:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>92227_wk2_wtr_sendWebIntentResponse.patch</filename>
            <type>text/plain</type>
            <size>38300</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYktp
dDIvQ01ha2VMaXN0cy50eHQKaW5kZXggMjBhZGZmOC4uZTZkM2JlZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYktpdDIvQ01ha2VMaXN0
cy50eHQKQEAgLTM2OCw2ICszNjgsNyBAQCBTRVQoV2ViS2l0Ml9TT1VSQ0VTCiAgICAgV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUNsaWVudC5jcHAKICAgICBXZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uLmNwcAog
ICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVIaXRUZXN0UmVzdWx0
LmNwcAorICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVJbnRlbnRS
ZXF1ZXN0LmNwcAogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVO
YXZpZ2F0aW9uQWN0aW9uLmNwcAogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0
ZWRCdW5kbGVQYWdlQ29udGV4dE1lbnVDbGllbnQuY3BwCiAgICAgV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuY3BwCkBAIC0zODYsNiArMzg3
LDcgQEAgU0VUKFdlYktpdDJfU09VUkNFUwogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL2MvV0tCdW5kbGVGcmFtZS5jcHAKICAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9jL1dLQnVuZGxlSGl0VGVzdFJlc3VsdC5jcHAKICAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9jL1dLQnVuZGxlSW5zcGVjdG9yLmNwcAorICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL2MvV0tCdW5kbGVJbnRlbnRSZXF1ZXN0LmNwcAogICAgIFdlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uLmNwcAogICAgIFdlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVOb2RlSGFuZGxlLmNwcAogICAgIFdl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmNwcApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmlu
ZGV4IGRjZDg3ZjUuLmY2OTA1MTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1OCBAQAorMjAxMi0w
Ny0yNSAgQ2hyaXN0b3BoZSBEdW1leiAgPGNocmlzdG9waGUuZHVtZXpAaW50ZWwuY29tPgorCisg
ICAgICAgIFtXSzJdW1dUUl0gTGF5b3V0VGVzdENvbnRyb2xsZXIuc2VuZFdlYkludGVudFJlc3Bv
bnNlKCkgbmVlZHMgdG8gYmUgaW1wbGVtZW50ZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTkyMjI3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgQWRkIG5ldyBJbmplY3RlZEJ1bmRsZUludGVudFJlcXVlc3Qg
Y2xhc3MgdG8gd3JhcCBXZWJDb3JlJ3MKKyAgICAgICAgSW50ZW50UmVxdWVzdCBhbmQgdXNlIGl0
IGluIEluamVjdGVkQnVuZGxlJ3MKKyAgICAgICAgZGlkUmVjZWl2ZUludGVudEZvckZyYW1lIGNh
bGxiYWNrLiBUaGUgV2ViS2l0VGVzdFJ1bm5lciBuZWVkcworICAgICAgICB0byBiZSBhYmxlIHRv
IHJlcGx5IHRvIGEgV2ViIGludGVudCByZXF1ZXN0IGluIG9yZGVyIHRvCisgICAgICAgIGltcGxl
bWVudCBMYXlvdXRUZXN0Q29udHJvbGxlci5zZW5kV2ViSW50ZW50UmVzcG9uc2UoKS4gQXMKKyAg
ICAgICAgYSBjb25zZXF1ZW5jZSwgcGFzc2luZyBhIFdlYkludGVudERhdGEgdHlwZSBpbiBub3Qg
ZW5vdWdoLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogR05VbWFrZWZp
bGUubGlzdC5hbToKKyAgICAgICAgKiBTaGFyZWQvQVBJL2MvV0tCYXNlLmg6CisgICAgICAgICog
U2hhcmVkL0FQSU9iamVjdC5oOgorICAgICAgICAqIFNoYXJlZC9JbnRlbnREYXRhLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6SW50ZW50RGF0YTo6SW50ZW50RGF0YSk6CisgICAgICAgIChXZWJLaXQp
OgorICAgICAgICAqIFNoYXJlZC9JbnRlbnREYXRhLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAg
ICAgICAgKFdlYktpdDo6SW50ZW50RGF0YTo6SW50ZW50RGF0YSk6CisgICAgICAgIChJbnRlbnRE
YXRhKToKKyAgICAgICAgKiBUYXJnZXQucHJpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVBUElDYXN0Lmg6CisgICAgICAgIChXZWJLaXQpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVJbnRlbnRSZXF1
ZXN0LmNwcDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdDIvU2hhcmVkL0ludGVudERhdGEuY3Bw
LgorICAgICAgICAoV0tCdW5kbGVJbnRlbnRSZXF1ZXN0R2V0VHlwZUlEKToKKyAgICAgICAgKFdL
QnVuZGxlSW50ZW50UmVxdWVzdENvcHlJbnRlbnQpOgorICAgICAgICAoV0tCdW5kbGVJbnRlbnRS
ZXF1ZXN0UG9zdFJlc3VsdCk6CisgICAgICAgIChXS0J1bmRsZUludGVudFJlcXVlc3RQb3N0RmFp
bHVyZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRs
ZUludGVudFJlcXVlc3QuaDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdDIvU2hhcmVkL0ludGVu
dERhdGEuaC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVu
ZGxlUGFnZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRC
dW5kbGVJbnRlbnRSZXF1ZXN0LmNwcDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdDIvU2hhcmVk
L0ludGVudERhdGEuY3BwLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6SW5q
ZWN0ZWRCdW5kbGVJbnRlbnRSZXF1ZXN0OjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpJbmpl
Y3RlZEJ1bmRsZUludGVudFJlcXVlc3Q6OkluamVjdGVkQnVuZGxlSW50ZW50UmVxdWVzdCk6Cisg
ICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlSW50ZW50UmVxdWVzdDo6cG9zdFJlc3VsdCk6
CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlSW50ZW50UmVxdWVzdDo6cG9zdEZhaWx1
cmUpOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZUludGVudFJlcXVlc3Q6OmludGVu
dCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUlu
dGVudFJlcXVlc3QuaDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdDIvU2hhcmVkL0ludGVudERh
dGEuaC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKElu
amVjdGVkQnVuZGxlSW50ZW50UmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVu
ZGxlSW50ZW50UmVxdWVzdDo6dHlwZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0
OjpJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQ6OmRpZFJlY2VpdmVJbnRlbnRGb3JGcmFt
ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBh
Z2VMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChJbmplY3RlZEJ1
bmRsZVBhZ2VMb2FkZXJDbGllbnQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUxv
YWRlckNsaWVudDo6ZGlzcGF0Y2hJbnRlbnQpOgorCiAyMDEyLTA3LTI1ICBSeXVhbiBDaG9pICA8
cnl1YW4uY2hvaUBzYW1zdW5nLmNvbT4KIAogICAgICAgICBbRUZMXVtXSzJdIEFkZCBld2tfdmll
d19jdXJzb3Jfc2V0IHRvIGNoYW5nZSBjdXJzb3IuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUubGlzdC5h
bQppbmRleCBjYTgxZDQ3Li5mM2VkOTg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9HTlVt
YWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmxpc3QuYW0K
QEAgLTk2NCw2ICs5NjQsOCBAQCB3ZWJraXQyX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVJbml0aWFsaXplLmggXAog
CVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVJ
bnNwZWN0b3IuY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS9jL1dLQnVuZGxlSW5zcGVjdG9yLmggXAorCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVJbnRlbnRSZXF1ZXN0LmNwcCBcCisJU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUludGVudFJl
cXVlc3QuaCBcCiAJU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
Yy9XS0J1bmRsZU5vZGVIYW5kbGUuY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlTm9kZUhhbmRsZS5oIFwKIAlTb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlTm9kZUhhbmRsZVByaXZh
dGUuaCBcCkBAIC05OTYsNiArOTk4LDggQEAgd2Via2l0Ml9zb3VyY2VzICs9IFwKIAlTb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlRE9NV2luZG93
RXh0ZW5zaW9uLmggXAogCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
SW5qZWN0ZWRCdW5kbGVIaXRUZXN0UmVzdWx0LmNwcCBcCiAJU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUhpdFRlc3RSZXN1bHQuaCBcCisJU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUludGVu
dFJlcXVlc3QuY3BwIFwKKwlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0luamVjdGVkQnVuZGxlSW50ZW50UmVxdWVzdC5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlTmF2aWdhdGlvbkFjdGlvbi5jcHAgXAog
CVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVO
YXZpZ2F0aW9uQWN0aW9uLmggXAogCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlQ29udGV4dE1lbnVDbGllbnQuY3BwIFwKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS0Jhc2UuaCBiL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9BUEkvYy9XS0Jhc2UuaAppbmRleCAzZjcwN2JhLi42ODU0ZWNjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tCYXNlLmgKKysrIGIvU291cmNlL1dlYktp
dDIvU2hhcmVkL0FQSS9jL1dLQmFzZS5oCkBAIC0xMzUsNiArMTM1LDcgQEAgdHlwZWRlZiBjb25z
dCBzdHJ1Y3QgT3BhcXVlV0tCdW5kbGVET01XaW5kb3dFeHRlbnNpb24qIFdLQnVuZGxlRE9NV2lu
ZG93RXh0ZW5zaW8KIHR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLQnVuZGxlRnJhbWUqIFdL
QnVuZGxlRnJhbWVSZWY7CiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS0J1bmRsZUhpdFRl
c3RSZXN1bHQqIFdLQnVuZGxlSGl0VGVzdFJlc3VsdFJlZjsKIHR5cGVkZWYgY29uc3Qgc3RydWN0
IE9wYXF1ZVdLQnVuZGxlSW5zcGVjdG9yKiBXS0J1bmRsZUluc3BlY3RvclJlZjsKK3R5cGVkZWYg
Y29uc3Qgc3RydWN0IE9wYXF1ZVdLQnVuZGxlSW50ZW50UmVxdWVzdCogV0tCdW5kbGVJbnRlbnRS
ZXF1ZXN0UmVmOwogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tCdW5kbGVOYXZpZ2F0aW9u
QWN0aW9uKiBXS0J1bmRsZU5hdmlnYXRpb25BY3Rpb25SZWY7CiB0eXBlZGVmIGNvbnN0IHN0cnVj
dCBPcGFxdWVXS0J1bmRsZU5vZGVIYW5kbGUqIFdLQnVuZGxlTm9kZUhhbmRsZVJlZjsKIHR5cGVk
ZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLQnVuZGxlUGFnZSogV0tCdW5kbGVQYWdlUmVmOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSU9iamVjdC5oIGIvU291cmNlL1dlYktp
dDIvU2hhcmVkL0FQSU9iamVjdC5oCmluZGV4IDZlOWMxZDYuLjhlNGQyOTMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUElPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvQVBJT2JqZWN0LmgKQEAgLTExNyw2ICsxMTcsNyBAQCBwdWJsaWM6CiAgICAgICAgIFR5
cGVCdW5kbGVGcmFtZSwKICAgICAgICAgVHlwZUJ1bmRsZUhpdFRlc3RSZXN1bHQsCiAgICAgICAg
IFR5cGVCdW5kbGVJbnNwZWN0b3IsCisgICAgICAgIFR5cGVCdW5kbGVJbnRlbnRSZXF1ZXN0LAog
ICAgICAgICBUeXBlQnVuZGxlTmF2aWdhdGlvbkFjdGlvbiwKICAgICAgICAgVHlwZUJ1bmRsZU5v
ZGVIYW5kbGUsCiAgICAgICAgIFR5cGVCdW5kbGVQYWdlLApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvU2hhcmVkL0ludGVudERhdGEuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0ludGVu
dERhdGEuY3BwCmluZGV4IDM4OGEzYTUuLjQ5OTViMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9JbnRlbnREYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvSW50
ZW50RGF0YS5jcHAKQEAgLTMxLDExICszMSwyMiBAQAogI2luY2x1ZGUgIkFQSU9iamVjdC5oIgog
I2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2Rl
cnMuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0ludGVudC5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKK0ludGVudERhdGE6OkludGVudERhdGEoSW50
ZW50KiBjb3JlSW50ZW50KQorICAgIDogYWN0aW9uKGNvcmVJbnRlbnQtPmFjdGlvbigpKQorICAg
ICwgdHlwZShjb3JlSW50ZW50LT50eXBlKCkpCisgICAgLCBzZXJ2aWNlKGNvcmVJbnRlbnQtPnNl
cnZpY2UoKSkKKyAgICAsIGRhdGEoY29yZUludGVudC0+ZGF0YSgpLT5kYXRhKCkpCisgICAgLCBl
eHRyYXMoY29yZUludGVudC0+ZXh0cmFzKCkpCisgICAgLCBzdWdnZXN0aW9ucyhjb3JlSW50ZW50
LT5zdWdnZXN0aW9ucygpKQoreworfQorCiB2b2lkIEludGVudERhdGE6OmVuY29kZShDb3JlSVBD
OjpBcmd1bWVudEVuY29kZXIqIGVuY29kZXIpIGNvbnN0CiB7CiAgICAgZW5jb2Rlci0+ZW5jb2Rl
KGFjdGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvSW50ZW50RGF0YS5o
IGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0ludGVudERhdGEuaAppbmRleCAyOTM1Nzc2Li45NmUy
ZDlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvSW50ZW50RGF0YS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9JbnRlbnREYXRhLmgKQEAgLTM3LDkgKzM3LDE2IEBAIGNs
YXNzIEFyZ3VtZW50RGVjb2RlcjsKIGNsYXNzIEFyZ3VtZW50RW5jb2RlcjsKIH0KIAorbmFtZXNw
YWNlIFdlYkNvcmUgeworY2xhc3MgSW50ZW50OworfQorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAog
c3RydWN0IEludGVudERhdGEgeworICAgIEludGVudERhdGEoKSB7IH0KKyAgICBleHBsaWNpdCBJ
bnRlbnREYXRhKFdlYkNvcmU6OkludGVudCopOworCiAgICAgdm9pZCBlbmNvZGUoQ29yZUlQQzo6
QXJndW1lbnRFbmNvZGVyKikgY29uc3Q7CiAgICAgc3RhdGljIGJvb2wgZGVjb2RlKENvcmVJUEM6
OkFyZ3VtZW50RGVjb2RlciosIEludGVudERhdGEmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVGFyZ2V0LnByaSBiL1NvdXJjZS9XZWJLaXQyL1RhcmdldC5wcmkKaW5kZXggZTgwOTY3
Mi4uYmMzMDBhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVGFyZ2V0LnByaQorKysgYi9T
b3VyY2UvV2ViS2l0Mi9UYXJnZXQucHJpCkBAIC0zMTksNiArMzE5LDcgQEAgSEVBREVSUyArPSBc
CiAgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUJhY2tGb3J3YXJk
TGlzdC5oIFwKICAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlQmFj
a0ZvcndhcmRMaXN0SXRlbS5oIFwKICAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9j
L1dLQnVuZGxlSGl0VGVzdFJlc3VsdC5oIFwKKyAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS9jL1dLQnVuZGxlSW50ZW50UmVxdWVzdC5oIFwKICAgICBXZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9jL1dLQnVuZGxlTmF2aWdhdGlvbkFjdGlvbi5oIFwKICAgICBXZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlTm9kZUhhbmRsZS5oIFwKICAgICBXZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlTm9kZUhhbmRsZVByaXZhdGUuaCBcCkBA
IC0zMzEsNiArMzMyLDcgQEAgSEVBREVSUyArPSBcCiAgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9JbmplY3RlZEJ1bmRsZUNsaWVudC5oIFwKICAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0luamVjdGVkQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uLmggXAogICAgIFdlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVIaXRUZXN0UmVzdWx0LmggXAorICAgIFdlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVJbnRlbnRSZXF1ZXN0LmggXAogICAg
IFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0aW9u
LmggXAogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlQ29u
dGV4dE1lbnVDbGllbnQuaCBcCiAgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3Rl
ZEJ1bmRsZVBhZ2VGb3JtQ2xpZW50LmggXApAQCAtNzAwLDYgKzcwMiw3IEBAIFNPVVJDRVMgKz0g
XAogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVGcmFtZS5jcHAg
XAogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVIaXRUZXN0UmVz
dWx0LmNwcCBcCiAgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUlu
c3BlY3Rvci5jcHAgXAorICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5k
bGVJbnRlbnRSZXF1ZXN0LmNwcCBcCiAgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
Yy9XS0J1bmRsZU5hdmlnYXRpb25BY3Rpb24uY3BwIFwKICAgICBXZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9jL1dLQnVuZGxlTm9kZUhhbmRsZS5jcHAgXAogICAgIFdlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmNwcCBcCkBAIC03MTQsNiArNzE3LDcgQEAg
U09VUkNFUyArPSBcCiAgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRs
ZUNsaWVudC5jcHAgXAogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5k
bGVET01XaW5kb3dFeHRlbnNpb24uY3BwIFwKICAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0luamVjdGVkQnVuZGxlSGl0VGVzdFJlc3VsdC5jcHAgXAorICAgIFdlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVJbnRlbnRSZXF1ZXN0LmNwcCBcCiAgICAgV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb24uY3BwIFwKICAg
ICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUNvbnRleHRNZW51
Q2xpZW50LmNwcCBcCiAgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRs
ZVBhZ2VFZGl0b3JDbGllbnQuY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVBUElDYXN0LmggYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlQVBJQ2FzdC5oCmlu
ZGV4IGU0MGM4OTguLjMzNTVkMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVBUElDYXN0LmgKKysrIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUFQSUNhc3QuaApA
QCAtNDYsNiArNDYsNyBAQCBjbGFzcyBJbmplY3RlZEJ1bmRsZUJhY2tGb3J3YXJkTGlzdDsKIGNs
YXNzIEluamVjdGVkQnVuZGxlQmFja0ZvcndhcmRMaXN0SXRlbTsKIGNsYXNzIEluamVjdGVkQnVu
ZGxlRE9NV2luZG93RXh0ZW5zaW9uOwogY2xhc3MgSW5qZWN0ZWRCdW5kbGVIaXRUZXN0UmVzdWx0
OworY2xhc3MgSW5qZWN0ZWRCdW5kbGVJbnRlbnRSZXF1ZXN0OwogY2xhc3MgSW5qZWN0ZWRCdW5k
bGVOYXZpZ2F0aW9uQWN0aW9uOwogY2xhc3MgSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlOwogY2xh
c3MgSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZTsKQEAgLTYzLDYgKzY0LDcgQEAgV0tfQUREX0FQ
SV9NQVBQSU5HKFdLQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uUmVmLCBJbmplY3RlZEJ1bmRsZURP
TVdpbmRvd0V4dGVuc2kKIFdLX0FERF9BUElfTUFQUElORyhXS0J1bmRsZUZyYW1lUmVmLCBXZWJG
cmFtZSkKIFdLX0FERF9BUElfTUFQUElORyhXS0J1bmRsZUhpdFRlc3RSZXN1bHRSZWYsIEluamVj
dGVkQnVuZGxlSGl0VGVzdFJlc3VsdCkKIFdLX0FERF9BUElfTUFQUElORyhXS0J1bmRsZUluc3Bl
Y3RvclJlZiwgV2ViSW5zcGVjdG9yKQorV0tfQUREX0FQSV9NQVBQSU5HKFdLQnVuZGxlSW50ZW50
UmVxdWVzdFJlZiwgSW5qZWN0ZWRCdW5kbGVJbnRlbnRSZXF1ZXN0KQogV0tfQUREX0FQSV9NQVBQ
SU5HKFdLQnVuZGxlTmF2aWdhdGlvbkFjdGlvblJlZiwgSW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9u
QWN0aW9uKQogV0tfQUREX0FQSV9NQVBQSU5HKFdLQnVuZGxlTm9kZUhhbmRsZVJlZiwgSW5qZWN0
ZWRCdW5kbGVOb2RlSGFuZGxlKQogV0tfQUREX0FQSV9NQVBQSU5HKFdLQnVuZGxlUGFnZUdyb3Vw
UmVmLCBXZWJQYWdlR3JvdXBQcm94eSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVJbnRlbnRSZXF1ZXN0LmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVJbnRl
bnRSZXF1ZXN0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MWM5NWM2
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvYy9XS0J1bmRsZUludGVudFJlcXVlc3QuY3BwCkBAIC0wLDAgKzEsNjkgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXS0J1bmRs
ZUludGVudFJlcXVlc3QuaCIKKworI2lmIEVOQUJMRShXRUJfSU5URU5UUykKKyNpbmNsdWRlICJJ
bmplY3RlZEJ1bmRsZUludGVudFJlcXVlc3QuaCIKKyNpbmNsdWRlICJXS0FQSUNhc3QuaCIKKyNp
bmNsdWRlICJXS0J1bmRsZUFQSUNhc3QuaCIKKyNpbmNsdWRlICJXZWJJbnRlbnREYXRhLmgiCisK
K3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CisjZW5kaWYKKworV0tUeXBlSUQgV0tCdW5kbGVJbnRl
bnRSZXF1ZXN0R2V0VHlwZUlEKCkKK3sKKyNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCisgICAgcmV0
dXJuIHRvQVBJKEluamVjdGVkQnVuZGxlSW50ZW50UmVxdWVzdDo6QVBJVHlwZSk7CisjZWxzZQor
ICAgIHJldHVybiAwOworI2VuZGlmCit9CisKK1dLSW50ZW50RGF0YVJlZiBXS0J1bmRsZUludGVu
dFJlcXVlc3RDb3B5SW50ZW50RGF0YShXS0J1bmRsZUludGVudFJlcXVlc3RSZWYgcmVxdWVzdFJl
ZikKK3sKKyNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCisgICAgUmVmUHRyPFdlYkludGVudERhdGE+
IHdlYkludGVudERhdGEgPSB0b0ltcGwocmVxdWVzdFJlZiktPmludGVudCgpOworICAgIHJldHVy
biB0b0FQSSh3ZWJJbnRlbnREYXRhLnJlbGVhc2UoKS5sZWFrUmVmKCkpOworI2Vsc2UKKyAgICBy
ZXR1cm4gMDsKKyNlbmRpZgorfQorCit2b2lkIFdLQnVuZGxlSW50ZW50UmVxdWVzdFBvc3RSZXN1
bHQoV0tCdW5kbGVJbnRlbnRSZXF1ZXN0UmVmIHJlcXVlc3RSZWYsIFdLU2VyaWFsaXplZFNjcmlw
dFZhbHVlUmVmIHNlcmlhbGl6ZWREYXRhUmVmKQoreworI2lmIEVOQUJMRShXRUJfSU5URU5UUykK
KyAgICByZXR1cm4gdG9JbXBsKHJlcXVlc3RSZWYpLT5wb3N0UmVzdWx0KHRvSW1wbChzZXJpYWxp
emVkRGF0YVJlZikpOworI2VuZGlmCit9CisKK3ZvaWQgV0tCdW5kbGVJbnRlbnRSZXF1ZXN0UG9z
dEZhaWx1cmUoV0tCdW5kbGVJbnRlbnRSZXF1ZXN0UmVmIHJlcXVlc3RSZWYsIFdLU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlUmVmIHNlcmlhbGl6ZWREYXRhUmVmKQoreworI2lmIEVOQUJMRShXRUJfSU5U
RU5UUykKKyAgICByZXR1cm4gdG9JbXBsKHJlcXVlc3RSZWYpLT5wb3N0RmFpbHVyZSh0b0ltcGwo
c2VyaWFsaXplZERhdGFSZWYpKTsKKyNlbmRpZgorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUludGVudFJlcXVlc3Qu
aCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5k
bGVJbnRlbnRSZXF1ZXN0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjE4
MTM2ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVJbnRlbnRSZXF1ZXN0LmgKQEAgLTAsMCArMSw0NiBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXS0J1bmRsZUludGVudFJlcXVlc3RfaAorI2Rl
ZmluZSBXS0J1bmRsZUludGVudFJlcXVlc3RfaAorCisjaW5jbHVkZSA8V2ViS2l0Mi9XS0Jhc2Uu
aD4KKworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiIHsKKyNlbmRpZgorCitXS19FWFBP
UlQgV0tUeXBlSUQgV0tCdW5kbGVJbnRlbnRSZXF1ZXN0R2V0VHlwZUlEKCk7CisKK1dLX0VYUE9S
VCBXS0ludGVudERhdGFSZWYgV0tCdW5kbGVJbnRlbnRSZXF1ZXN0Q29weUludGVudERhdGEoV0tC
dW5kbGVJbnRlbnRSZXF1ZXN0UmVmIHJlcXVlc3QpOworCitXS19FWFBPUlQgdm9pZCBXS0J1bmRs
ZUludGVudFJlcXVlc3RQb3N0UmVzdWx0KFdLQnVuZGxlSW50ZW50UmVxdWVzdFJlZiByZXF1ZXN0
LCBXS1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZVJlZiBzZXJpYWxpemVkRGF0YSk7CitXS19FWFBPUlQg
dm9pZCBXS0J1bmRsZUludGVudFJlcXVlc3RQb3N0RmFpbHVyZShXS0J1bmRsZUludGVudFJlcXVl
c3RSZWYgcmVxdWVzdCwgV0tTZXJpYWxpemVkU2NyaXB0VmFsdWVSZWYgc2VyaWFsaXplZERhdGEp
OworCisjaWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZgorCisjZW5kaWYgLyogV0tCdW5kbGVJ
bnRlbnRSZXF1ZXN0X2ggKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5oCmluZGV4IGY3MGQ1YjMu
LjJjZTAxYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuaApAQCAtMTA5LDcgKzEwOSw3IEBA
IHR5cGVkZWYgdm9pZCAoKldLQnVuZGxlUGFnZVdpbGxEaXNjb25uZWN0RE9NV2luZG93RXh0ZW5z
aW9uRnJvbUdsb2JhbE9iamVjdENhbGxiCiB0eXBlZGVmIHZvaWQgKCpXS0J1bmRsZVBhZ2VEaWRS
ZWNvbm5lY3RET01XaW5kb3dFeHRlbnNpb25Ub0dsb2JhbE9iamVjdENhbGxiYWNrKShXS0J1bmRs
ZVBhZ2VSZWYgcGFnZSwgV0tCdW5kbGVET01XaW5kb3dFeHRlbnNpb25SZWYsIGNvbnN0IHZvaWQq
IGNsaWVudEluZm8pOwogdHlwZWRlZiB2b2lkICgqV0tCdW5kbGVQYWdlV2lsbERlc3Ryb3lHbG9i
YWxPYmplY3RGb3JET01XaW5kb3dFeHRlbnNpb25DYWxsYmFjaykoV0tCdW5kbGVQYWdlUmVmIHBh
Z2UsIFdLQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uUmVmLCBjb25zdCB2b2lkKiBjbGllbnRJbmZv
KTsKIHR5cGVkZWYgYm9vbCAoKldLQnVuZGxlUGFnZVNob3VsZEZvcmNlVW5pdmVyc2FsQWNjZXNz
RnJvbUxvY2FsVVJMQ2FsbGJhY2spKFdLQnVuZGxlUGFnZVJlZiwgV0tTdHJpbmdSZWYgdXJsLCBj
b25zdCB2b2lkKiBjbGllbnRJbmZvKTsKLXR5cGVkZWYgdm9pZCAoKldLQnVuZGxlUGFnZURpZFJl
Y2VpdmVJbnRlbnRGb3JGcmFtZUNhbGxiYWNrKShXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgV0tCdW5k
bGVGcmFtZVJlZiBmcmFtZSwgV0tJbnRlbnREYXRhUmVmIGludGVudCwgV0tUeXBlUmVmKiB1c2Vy
RGF0YSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7Cit0eXBlZGVmIHZvaWQgKCpXS0J1bmRsZVBh
Z2VEaWRSZWNlaXZlSW50ZW50Rm9yRnJhbWVDYWxsYmFjaykoV0tCdW5kbGVQYWdlUmVmIHBhZ2Us
IFdLQnVuZGxlRnJhbWVSZWYgZnJhbWUsIFdLQnVuZGxlSW50ZW50UmVxdWVzdFJlZiBpbnRlbnRS
ZXF1ZXN0LCBXS1R5cGVSZWYqIHVzZXJEYXRhLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKIHR5
cGVkZWYgdm9pZCAoKldLQnVuZGxlUGFnZVJlZ2lzdGVySW50ZW50U2VydmljZUZvckZyYW1lQ2Fs
bGJhY2spKFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBXS0J1bmRsZUZyYW1lUmVmIGZyYW1lLCBXS0lu
dGVudFNlcnZpY2VJbmZvUmVmIHNlcnZpY2VJbmZvLCBXS1R5cGVSZWYqIHVzZXJEYXRhLCBjb25z
dCB2b2lkKiBjbGllbnRJbmZvKTsKIAogc3RydWN0IFdLQnVuZGxlUGFnZUxvYWRlckNsaWVudCB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0lu
amVjdGVkQnVuZGxlSW50ZW50UmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlSW50ZW50UmVxdWVzdC5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWNjYjE5YwotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVJbnRl
bnRSZXF1ZXN0LmNwcApAQCAtMCwwICsxLDY0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEy
IEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSW5qZWN0ZWRCdW5kbGVJbnRlbnRSZXF1ZXN0Lmgi
CisKKyNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCisjaW5jbHVkZSA8V2ViQ29yZS9JbnRlbnRSZXF1
ZXN0Lmg+CisjaW5jbHVkZSA8V2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlLmg+CisKK3VzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgV2ViS2l0IHsKKworUGFzc1JlZlB0cjxJbmpl
Y3RlZEJ1bmRsZUludGVudFJlcXVlc3Q+IEluamVjdGVkQnVuZGxlSW50ZW50UmVxdWVzdDo6Y3Jl
YXRlKEludGVudFJlcXVlc3QqIHJlcXVlc3QpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJ
bmplY3RlZEJ1bmRsZUludGVudFJlcXVlc3QocmVxdWVzdCkpOworfQorCitJbmplY3RlZEJ1bmRs
ZUludGVudFJlcXVlc3Q6OkluamVjdGVkQnVuZGxlSW50ZW50UmVxdWVzdChJbnRlbnRSZXF1ZXN0
KiByZXF1ZXN0KQorICAgIDogbV9pbnRlbnRSZXF1ZXN0KHJlcXVlc3QpCit7Cit9CisKK3ZvaWQg
SW5qZWN0ZWRCdW5kbGVJbnRlbnRSZXF1ZXN0Ojpwb3N0UmVzdWx0KFdlYlNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZSogZGF0YSkKK3sKKyAgICBtX2ludGVudFJlcXVlc3QtPnBvc3RSZXN1bHQoc3RhdGlj
X2Nhc3Q8U2VyaWFsaXplZFNjcmlwdFZhbHVlKj4oZGF0YS0+aW50ZXJuYWxSZXByZXNlbnRhdGlv
bigpKSk7Cit9CisKK3ZvaWQgSW5qZWN0ZWRCdW5kbGVJbnRlbnRSZXF1ZXN0Ojpwb3N0RmFpbHVy
ZShXZWJTZXJpYWxpemVkU2NyaXB0VmFsdWUqIGRhdGEpCit7CisgICAgbV9pbnRlbnRSZXF1ZXN0
LT5wb3N0RmFpbHVyZShzdGF0aWNfY2FzdDxTZXJpYWxpemVkU2NyaXB0VmFsdWUqPihkYXRhLT5p
bnRlcm5hbFJlcHJlc2VudGF0aW9uKCkpKTsKK30KKworUGFzc1JlZlB0cjxXZWJJbnRlbnREYXRh
PiBJbmplY3RlZEJ1bmRsZUludGVudFJlcXVlc3Q6OmludGVudCgpIGNvbnN0Cit7CisgICAgcmV0
dXJuIFdlYkludGVudERhdGE6OmNyZWF0ZShJbnRlbnREYXRhKG1faW50ZW50UmVxdWVzdC0+aW50
ZW50KCkpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUo
V0VCX0lOVEVOVFMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0luamVjdGVkQnVuZGxlSW50ZW50UmVxdWVzdC5oIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUludGVudFJlcXVlc3QuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNTg3MGQ5Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1
bmRsZUludGVudFJlcXVlc3QuaApAQCAtMCwwICsxLDY4IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEyIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaWZuZGVmIEluamVjdGVkQnVuZGxlSW50ZW50UmVxdWVzdF9oCisjZGVmaW5lIEluamVjdGVk
QnVuZGxlSW50ZW50UmVxdWVzdF9oCisKKyNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCisKKyNpbmNs
dWRlICJBUElPYmplY3QuaCIKKyNpbmNsdWRlICJXZWJJbnRlbnREYXRhLmgiCisjaW5jbHVkZSA8
d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0
Zi9SZWZQdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgSW50ZW50UmVxdWVzdDsK
K30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZTsKKworY2xhc3MgSW5qZWN0ZWRCdW5kbGVJbnRlbnRSZXF1ZXN0IDogcHVibGljIEFQSU9iamVj
dCB7CitwdWJsaWM6CisgICAgc3RhdGljIGNvbnN0IFR5cGUgQVBJVHlwZSA9IFR5cGVCdW5kbGVJ
bnRlbnRSZXF1ZXN0OworCisgICAgc3RhdGljIFBhc3NSZWZQdHI8SW5qZWN0ZWRCdW5kbGVJbnRl
bnRSZXF1ZXN0PiBjcmVhdGUoV2ViQ29yZTo6SW50ZW50UmVxdWVzdCopOworCisgICAgdm9pZCBw
b3N0UmVzdWx0KFdlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSopOworICAgIHZvaWQgcG9zdEZhaWx1
cmUoV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlKik7CisKKyAgICBQYXNzUmVmUHRyPFdlYkludGVu
dERhdGE+IGludGVudCgpIGNvbnN0OworCitwcml2YXRlOgorICAgIGV4cGxpY2l0IEluamVjdGVk
QnVuZGxlSW50ZW50UmVxdWVzdChXZWJDb3JlOjpJbnRlbnRSZXF1ZXN0Kik7CisKKyAgICB2aXJ0
dWFsIFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIEFQSVR5cGU7IH0KKworICAgIFJlZlB0cjxX
ZWJDb3JlOjpJbnRlbnRSZXF1ZXN0PiBtX2ludGVudFJlcXVlc3Q7Cit9OworCit9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShXRUJfSU5URU5UUykKKworI2VuZGlmIC8v
IEluamVjdGVkQnVuZGxlSW50ZW50UmVxdWVzdF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVu
dC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVk
QnVuZGxlUGFnZUxvYWRlckNsaWVudC5jcHAKaW5kZXggNzRmOGVmYi4uYTZhMDYxMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1
bmRsZVBhZ2VMb2FkZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmNwcApAQCAtMzQs
NyArMzQsNyBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiAjaWYgRU5BQkxF
KFdFQl9JTlRFTlRTKQotI2luY2x1ZGUgIldlYkludGVudERhdGEuaCIKKyNpbmNsdWRlICJJbmpl
Y3RlZEJ1bmRsZUludGVudFJlcXVlc3QuaCIKICNlbmRpZgogI2lmIEVOQUJMRShXRUJfSU5URU5U
U19UQUcpCiAjaW5jbHVkZSAiV2ViSW50ZW50U2VydmljZUluZm8uaCIKQEAgLTE5NSwxMyArMTk1
LDEzIEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50OjpkaWREZXRlY3RYU1NG
b3JGcmFtZShXZWJQYWdlKiBwYWdlLCBXZWJGcmFtCiB9CiAKICNpZiBFTkFCTEUoV0VCX0lOVEVO
VFMpCi12b2lkIEluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudDo6ZGlkUmVjZWl2ZUludGVu
dEZvckZyYW1lKFdlYlBhZ2UqIHBhZ2UsIFdlYkZyYW1lKiBmcmFtZSwgV2ViSW50ZW50RGF0YSog
aW50ZW50LCBSZWZQdHI8QVBJT2JqZWN0PiYgdXNlckRhdGEpCit2b2lkIEluamVjdGVkQnVuZGxl
UGFnZUxvYWRlckNsaWVudDo6ZGlkUmVjZWl2ZUludGVudEZvckZyYW1lKFdlYlBhZ2UqIHBhZ2Us
IFdlYkZyYW1lKiBmcmFtZSwgSW5qZWN0ZWRCdW5kbGVJbnRlbnRSZXF1ZXN0KiBpbnRlbnRSZXF1
ZXN0LCBSZWZQdHI8QVBJT2JqZWN0PiYgdXNlckRhdGEpCiB7CiAgICAgaWYgKCFtX2NsaWVudC5k
aWRSZWNlaXZlSW50ZW50Rm9yRnJhbWUpCiAgICAgICAgIHJldHVybjsKIAogICAgIFdLVHlwZVJl
ZiB1c2VyRGF0YVRvUGFzcyA9IDA7Ci0gICAgbV9jbGllbnQuZGlkUmVjZWl2ZUludGVudEZvckZy
YW1lKHRvQVBJKHBhZ2UpLCB0b0FQSShmcmFtZSksIHRvQVBJKGludGVudCksICZ1c2VyRGF0YVRv
UGFzcywgbV9jbGllbnQuY2xpZW50SW5mbyk7CisgICAgbV9jbGllbnQuZGlkUmVjZWl2ZUludGVu
dEZvckZyYW1lKHRvQVBJKHBhZ2UpLCB0b0FQSShmcmFtZSksIHRvQVBJKGludGVudFJlcXVlc3Qp
LCAmdXNlckRhdGFUb1Bhc3MsIG1fY2xpZW50LmNsaWVudEluZm8pOwogICAgIHVzZXJEYXRhID0g
YWRvcHRSZWYodG9JbXBsKHVzZXJEYXRhVG9QYXNzKSk7CiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQ
YWdlTG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5oCmluZGV4IDQwMzAzN2UuLjgxZDli
ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
SW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuaApA
QCAtNDcsNyArNDcsNyBAQCBjbGFzcyBJbmplY3RlZEJ1bmRsZUJhY2tGb3J3YXJkTGlzdEl0ZW07
CiBjbGFzcyBXZWJQYWdlOwogY2xhc3MgV2ViRnJhbWU7CiAjaWYgRU5BQkxFKFdFQl9JTlRFTlRT
KQotY2xhc3MgV2ViSW50ZW50RGF0YTsKK2NsYXNzIEluamVjdGVkQnVuZGxlSW50ZW50UmVxdWVz
dDsKICNlbmRpZgogI2lmIEVOQUJMRShXRUJfSU5URU5UU19UQUcpCiBjbGFzcyBXZWJJbnRlbnRT
ZXJ2aWNlSW5mbzsKQEAgLTcyLDcgKzcyLDcgQEAgcHVibGljOgogICAgIHZvaWQgZGlkRGV0ZWN0
WFNTRm9yRnJhbWUoV2ViUGFnZSosIFdlYkZyYW1lKiwgUmVmUHRyPEFQSU9iamVjdD4mIHVzZXJE
YXRhKTsKIAogI2lmIEVOQUJMRShXRUJfSU5URU5UUykKLSAgICB2b2lkIGRpZFJlY2VpdmVJbnRl
bnRGb3JGcmFtZShXZWJQYWdlKiwgV2ViRnJhbWUqLCBXZWJJbnRlbnREYXRhKiwgUmVmUHRyPEFQ
SU9iamVjdD4mIHVzZXJEYXRhKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVJbnRlbnRGb3JGcmFtZShX
ZWJQYWdlKiwgV2ViRnJhbWUqLCBJbmplY3RlZEJ1bmRsZUludGVudFJlcXVlc3QqLCBSZWZQdHI8
QVBJT2JqZWN0PiYgdXNlckRhdGEpOwogI2VuZGlmCiAjaWYgRU5BQkxFKFdFQl9JTlRFTlRTX1RB
RykKICAgICB2b2lkIHJlZ2lzdGVySW50ZW50U2VydmljZUZvckZyYW1lKFdlYlBhZ2UqLCBXZWJG
cmFtZSosIFdlYkludGVudFNlcnZpY2VJbmZvKiwgUmVmUHRyPEFQSU9iamVjdD4mIHVzZXJEYXRh
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKaW5kZXggOTE4ZTc0YS4uM2ZkMjk5
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKQEAgLTc0LDggKzc0LDggQEAK
ICNpbmNsdWRlIDxXZWJDb3JlL1dpbmRvd0ZlYXR1cmVzLmg+CiAKICNpZiBFTkFCTEUoV0VCX0lO
VEVOVFMpCisjaW5jbHVkZSAiSW5qZWN0ZWRCdW5kbGVJbnRlbnRSZXF1ZXN0LmgiCiAjaW5jbHVk
ZSAiSW50ZW50RGF0YS5oIgotI2luY2x1ZGUgIldlYkludGVudERhdGEuaCIKICNpbmNsdWRlIDxX
ZWJDb3JlL0ludGVudFJlcXVlc3QuaD4KICNlbmRpZgogCkBAIC0xNTYyLDIwICsxNTYyLDExIEBA
IHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoSW50ZW50KFBhc3NSZWZQdHI8SW50
ZW50UmVxdWVzdD4gcmVxdWVzdCkKICAgICBpZiAoIXdlYlBhZ2UpCiAgICAgICAgIHJldHVybjsK
IAotICAgIEludGVudERhdGEgaW50ZW50RGF0YTsKLSAgICBJbnRlbnQqIGNvcmVJbnRlbnQgPSBy
ZXF1ZXN0LT5pbnRlbnQoKTsKLSAgICBBU1NFUlQoY29yZUludGVudCk7Ci0gICAgaW50ZW50RGF0
YS5hY3Rpb24gPSBjb3JlSW50ZW50LT5hY3Rpb24oKTsKLSAgICBpbnRlbnREYXRhLnR5cGUgPSBj
b3JlSW50ZW50LT50eXBlKCk7Ci0gICAgaW50ZW50RGF0YS5zZXJ2aWNlID0gY29yZUludGVudC0+
c2VydmljZSgpOwotICAgIGludGVudERhdGEuZGF0YSA9IGNvcmVJbnRlbnQtPmRhdGEoKS0+ZGF0
YSgpOwotICAgIGludGVudERhdGEuZXh0cmFzID0gY29yZUludGVudC0+ZXh0cmFzKCk7Ci0gICAg
aW50ZW50RGF0YS5zdWdnZXN0aW9ucyA9IGNvcmVJbnRlbnQtPnN1Z2dlc3Rpb25zKCk7Ci0KICAg
ICBSZWZQdHI8QVBJT2JqZWN0PiB1c2VyRGF0YTsKLSAgICBSZWZQdHI8V2ViSW50ZW50RGF0YT4g
d2ViSW50ZW50ID0gV2ViSW50ZW50RGF0YTo6Y3JlYXRlKGludGVudERhdGEpOwotICAgIHdlYlBh
Z2UtPmluamVjdGVkQnVuZGxlTG9hZGVyQ2xpZW50KCkuZGlkUmVjZWl2ZUludGVudEZvckZyYW1l
KHdlYlBhZ2UsIG1fZnJhbWUsIHdlYkludGVudC5nZXQoKSwgdXNlckRhdGEpOworICAgIFJlZlB0
cjxJbmplY3RlZEJ1bmRsZUludGVudFJlcXVlc3Q+IGJ1bmRsZUludGVudFJlcXVlc3QgPSBJbmpl
Y3RlZEJ1bmRsZUludGVudFJlcXVlc3Q6OmNyZWF0ZShyZXF1ZXN0LmdldCgpKTsKKyAgICB3ZWJQ
YWdlLT5pbmplY3RlZEJ1bmRsZUxvYWRlckNsaWVudCgpLmRpZFJlY2VpdmVJbnRlbnRGb3JGcmFt
ZSh3ZWJQYWdlLCBtX2ZyYW1lLCBidW5kbGVJbnRlbnRSZXF1ZXN0LmdldCgpLCB1c2VyRGF0YSk7
CiAKKyAgICBJbnRlbnREYXRhIGludGVudERhdGEocmVxdWVzdC0+aW50ZW50KCkpOwogICAgIHdl
YlBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkUmVjZWl2ZUludGVudEZvckZy
YW1lKG1fZnJhbWUtPmZyYW1lSUQoKSwgaW50ZW50RGF0YSwgSW5qZWN0ZWRCdW5kbGVVc2VyTWVz
c2FnZUVuY29kZXIodXNlckRhdGEuZ2V0KCkpKSk7CiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Rv
b2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCAwNmIwZTM2Li42ZDFjNmM4IDEw
MDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMzYgQEAKKzIwMTItMDctMjUgIENocmlzdG9waGUgRHVtZXogIDxjaHJpc3RvcGhlLmR1bWV6
QGludGVsLmNvbT4KKworICAgICAgICBbV0syXVtXVFJdIExheW91dFRlc3RDb250cm9sbGVyLnNl
bmRXZWJJbnRlbnRSZXNwb25zZSgpIG5lZWRzIHRvIGJlIGltcGxlbWVudGVkCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MjIyNworCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVudCBMYXlvdXRUZXN0
Q29udHJvbGxlci5zZW5kV2ViSW50ZW50UmVzcG9uc2UoKSBzbworICAgICAgICB0aGF0IGEgdGVz
dCBjYXNlIGNhbiByZXBseSB0byBhIFdlYiBpbnRlbnQgcmVxdWVzdCBhbmQKKyAgICAgICAgdGVz
dCB0aGlzIGZ1bmN0aW9uYWxpdHkuCisKKyAgICAgICAgSW4gb3JkZXIgdG8gc3VwcG9ydCB0aGlz
IGZ1bmN0aW9uYWxpdHksIHdlIG5lZWQgdG8ga2VlcAorICAgICAgICBhIHBvaW50ZXIgdG8gdGhl
IGN1cnJlbnQgaW50ZW50IHJlcXVlc3QgaW4KKyAgICAgICAgSW5qZWN0ZWRCdW5kbGVQYWdlOjpk
aWRSZWNlaXZlSW50ZW50Rm9yRnJhbWUoKSBzbyB0aGF0CisgICAgICAgIHdlIGNhbiByZXVzZSBp
dCBsYXRlciBpbgorICAgICAgICBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2VuZFdlYkludGVudFJl
c3BvbnNlKCkuCisKKyAgICAgICAgVGhlIGZvbGxvd2luZyB0ZXN0cyBuZWVkIHRoaXMgZnVuY3Rp
b25hbGl0eToKKyAgICAgICAgLSB3ZWJpbnRlbnRzL3dlYi1pbnRlbnRzLWZhaWx1cmUuaHRtbAor
ICAgICAgICAtIHdlYmludGVudHMvd2ViLWludGVudHMtcmVwbHkuaHRtbAorCisgICAgICAgICog
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9MYXlvdXRUZXN0Q29udHJv
bGxlci5pZGw6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9Jbmpl
Y3RlZEJ1bmRsZVBhZ2UuY3BwOgorICAgICAgICAoV1RSOjpJbmplY3RlZEJ1bmRsZVBhZ2U6OmRp
ZFJlY2VpdmVJbnRlbnRGb3JGcmFtZSk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuaDoKKyAgICAgICAgKEluamVjdGVkQnVuZGxl
UGFnZSk6CisgICAgICAgIChXVFI6OkluamVjdGVkQnVuZGxlUGFnZTo6Y3VycmVudEludGVudFJl
cXVlc3QpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvTGF5b3V0
VGVzdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV1RSOjpMYXlvdXRUZXN0Q29udHJvbGxlcjo6
c2VuZFdlYkludGVudFJlc3BvbnNlKToKKyAgICAgICAgKFdUUik6CisgICAgICAgICogV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oOgorICAgICAg
ICAoTGF5b3V0VGVzdENvbnRyb2xsZXIpOgorCiAyMDEyLTA3LTI1ICBBbGV4YW5kZXIgU2hhbGFt
b3YgIDxhbGV4YW5kZXIuc2hhbGFtb3ZAaW50ZWwuY29tPgogCiAgICAgICAgIFtXVFJdW0VGTF0g
V2hlZWwgZXZlbnRzIGFyZSBub3QgZW1pdHRlZApkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9MYXlvdXRUZXN0Q29udHJvbGxlci5pZGwg
Yi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL0xheW91dFRl
c3RDb250cm9sbGVyLmlkbAppbmRleCA0MzA2MmM1Li4zMjVhYTdhIDEwMDY0NAotLS0gYS9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL0xheW91dFRlc3RDb250
cm9sbGVyLmlkbAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0Jp
bmRpbmdzL0xheW91dFRlc3RDb250cm9sbGVyLmlkbApAQCAtMTI5LDYgKzEyOSw5IEBAIG1vZHVs
ZSBXVFIgewogICAgICAgICB2b2lkIHNldFNob3VsZFN0YXlPblBhZ2VBZnRlckhhbmRsaW5nQmVm
b3JlVW5sb2FkKGluIGJvb2xlYW4gZmxhZyk7CiAKICAgICAgICAgdm9pZCBzZXREZWZlcnNMb2Fk
aW5nKGluIGJvb2xlYW4gZmxhZyk7CisKKyAgICAgICAgLy8gV2ViIGludGVudHMgdGVzdGluZy4K
KyAgICAgICAgdm9pZCBzZW5kV2ViSW50ZW50UmVzcG9uc2UoaW4gRE9NU3RyaW5nIHJlcGx5KTsK
ICAgICAgICAgCiAgICAgICAgIC8vIEZvY3VzIHRlc3RpbmcuCiAgICAgICAgIHZvaWQgYWRkQ2hy
b21lSW5wdXRGaWVsZChpbiBvYmplY3QgY2FsbGJhY2spOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuY3BwIGIvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuY3Bw
CmluZGV4IGM1YmQxNDAuLjZkZjYwNWQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmNwcAorKysgYi9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5jcHAKQEAgLTUw
LDYgKzUwLDcgQEAKICNlbmRpZgogCiAjaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQorI2luY2x1ZGUg
PFdlYktpdDIvV0tCdW5kbGVJbnRlbnRSZXF1ZXN0Lmg+CiAjaW5jbHVkZSA8V2ViS2l0Mi9XS0lu
dGVudERhdGEuaD4KICNlbmRpZgogI2lmIEVOQUJMRShXRUJfSU5URU5UU19UQUcpCkBAIC00MjUs
MjAgKzQyNiwyMyBAQCB2b2lkIEluamVjdGVkQnVuZGxlUGFnZTo6ZGlkRmluaXNoUHJvZ3Jlc3Mo
V0tCdW5kbGVQYWdlUmVmLCBjb25zdCB2b2lkICpjbGllbnRJbgogICAgIHN0YXRpY19jYXN0PElu
amVjdGVkQnVuZGxlUGFnZSo+KGNvbnN0X2Nhc3Q8dm9pZCo+KGNsaWVudEluZm8pKS0+ZGlkRmlu
aXNoUHJvZ3Jlc3MoKTsKIH0KIAotdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2U6OmRpZFJlY2VpdmVJ
bnRlbnRGb3JGcmFtZShXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgV0tCdW5kbGVGcmFtZVJlZiBmcmFt
ZSwgV0tJbnRlbnREYXRhUmVmIGludGVudCwgV0tUeXBlUmVmKiB1c2VyRGF0YSwgY29uc3Qgdm9p
ZCogY2xpZW50SW5mbykKK3ZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlOjpkaWRSZWNlaXZlSW50ZW50
Rm9yRnJhbWUoV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIFdLQnVuZGxlRnJhbWVSZWYgZnJhbWUsIFdL
QnVuZGxlSW50ZW50UmVxdWVzdFJlZiBpbnRlbnRSZXF1ZXN0LCBXS1R5cGVSZWYqIHVzZXJEYXRh
LCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQogewogI2lmIEVOQUJMRShXRUJfSU5URU5UUykKKyAg
ICBzdGF0aWNfY2FzdDxJbmplY3RlZEJ1bmRsZVBhZ2UqPihjb25zdF9jYXN0PHZvaWQqPihjbGll
bnRJbmZvKSktPm1fY3VycmVudEludGVudFJlcXVlc3QgPSBpbnRlbnRSZXF1ZXN0OworICAgIFdL
UmV0YWluUHRyPFdLSW50ZW50RGF0YVJlZj4gaW50ZW50KEFkb3B0V0ssIFdLQnVuZGxlSW50ZW50
UmVxdWVzdENvcHlJbnRlbnREYXRhKGludGVudFJlcXVlc3QpKTsKKwogICAgIEluamVjdGVkQnVu
ZGxlOjpzaGFyZWQoKS5zdHJpbmdCdWlsZGVyKCktPmFwcGVuZCgiUmVjZWl2ZWQgV2ViIEludGVu
dDogYWN0aW9uPSIpOwotICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiB3a0FjdGlvbihBZG9w
dFdLLCBXS0ludGVudERhdGFDb3B5QWN0aW9uKGludGVudCkpOworICAgIFdLUmV0YWluUHRyPFdL
U3RyaW5nUmVmPiB3a0FjdGlvbihBZG9wdFdLLCBXS0ludGVudERhdGFDb3B5QWN0aW9uKGludGVu
dC5nZXQoKSkpOwogICAgIEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5zdHJpbmdCdWlsZGVyKCkt
PmFwcGVuZCh0b1dURlN0cmluZyh3a0FjdGlvbi5nZXQoKSkpOwogICAgIEluamVjdGVkQnVuZGxl
OjpzaGFyZWQoKS5zdHJpbmdCdWlsZGVyKCktPmFwcGVuZCgiIHR5cGU9Iik7Ci0gICAgV0tSZXRh
aW5QdHI8V0tTdHJpbmdSZWY+IHdrVHlwZShBZG9wdFdLLCBXS0ludGVudERhdGFDb3B5VHlwZShp
bnRlbnQpKTsKKyAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gd2tUeXBlKEFkb3B0V0ssIFdL
SW50ZW50RGF0YUNvcHlUeXBlKGludGVudC5nZXQoKSkpOwogICAgIEluamVjdGVkQnVuZGxlOjpz
aGFyZWQoKS5zdHJpbmdCdWlsZGVyKCktPmFwcGVuZCh0b1dURlN0cmluZyh3a1R5cGUuZ2V0KCkp
KTsKICAgICBJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkuc3RyaW5nQnVpbGRlcigpLT5hcHBlbmQo
IlxuIik7CiAKICAgICAvLyBGSVhNRTogUHJpbnQgbnVtYmVyIG9mIHBvcnRzIHdoZW4gZXhwb3Nl
ZCBpbiBXZWJLaXQyCiAKLSAgICBXS1JldGFpblB0cjxXS1VSTFJlZj4gd2tTZXJ2aWNlVXJsKEFk
b3B0V0ssIFdLSW50ZW50RGF0YUNvcHlTZXJ2aWNlKGludGVudCkpOworICAgIFdLUmV0YWluUHRy
PFdLVVJMUmVmPiB3a1NlcnZpY2VVcmwoQWRvcHRXSywgV0tJbnRlbnREYXRhQ29weVNlcnZpY2Uo
aW50ZW50LmdldCgpKSk7CiAgICAgaWYgKHdrU2VydmljZVVybCkgewogICAgICAgICBXS1JldGFp
blB0cjxXS1N0cmluZ1JlZj4gd2tTZXJ2aWNlKEFkb3B0V0ssIFdLVVJMQ29weVN0cmluZyh3a1Nl
cnZpY2VVcmwuZ2V0KCkpKTsKICAgICAgICAgaWYgKHdrU2VydmljZSAmJiAhV0tTdHJpbmdJc0Vt
cHR5KHdrU2VydmljZS5nZXQoKSkpIHsKQEAgLTQ0OCw3ICs0NTIsNyBAQCB2b2lkIEluamVjdGVk
QnVuZGxlUGFnZTo6ZGlkUmVjZWl2ZUludGVudEZvckZyYW1lKFdLQnVuZGxlUGFnZVJlZiBwYWdl
LCBXS0J1bmRsZQogICAgICAgICB9CiAgICAgfQogCi0gICAgV0tSZXRhaW5QdHI8V0tEaWN0aW9u
YXJ5UmVmPiB3a0V4dHJhcyhBZG9wdFdLLCBXS0ludGVudERhdGFDb3B5RXh0cmFzKGludGVudCkp
OworICAgIFdLUmV0YWluUHRyPFdLRGljdGlvbmFyeVJlZj4gd2tFeHRyYXMoQWRvcHRXSywgV0tJ
bnRlbnREYXRhQ29weUV4dHJhcyhpbnRlbnQuZ2V0KCkpKTsKICAgICBXS1JldGFpblB0cjxXS0Fy
cmF5UmVmPiB3a0V4dHJhS2V5cyhBZG9wdFdLLCBXS0RpY3Rpb25hcnlDb3B5S2V5cyh3a0V4dHJh
cy5nZXQoKSkpOwogICAgIGNvbnN0IHNpemVfdCBudW1FeHRyYUtleXMgPSBXS0FycmF5R2V0U2l6
ZSh3a0V4dHJhS2V5cy5nZXQoKSk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1FeHRy
YUtleXM7ICsraSkgewpAQCAtNDYxLDcgKzQ2NSw3IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdl
OjpkaWRSZWNlaXZlSW50ZW50Rm9yRnJhbWUoV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIFdLQnVuZGxl
CiAgICAgICAgIEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5zdHJpbmdCdWlsZGVyKCktPmFwcGVu
ZCgiXG4iKTsKICAgICB9CiAKLSAgICBXS1JldGFpblB0cjxXS0FycmF5UmVmPiB3a1N1Z2dlc3Rp
b25zKEFkb3B0V0ssIFdLSW50ZW50RGF0YUNvcHlTdWdnZXN0aW9ucyhpbnRlbnQpKTsKKyAgICBX
S1JldGFpblB0cjxXS0FycmF5UmVmPiB3a1N1Z2dlc3Rpb25zKEFkb3B0V0ssIFdLSW50ZW50RGF0
YUNvcHlTdWdnZXN0aW9ucyhpbnRlbnQuZ2V0KCkpKTsKICAgICBjb25zdCBzaXplX3QgbnVtU3Vn
Z2VzdGlvbnMgPSBXS0FycmF5R2V0U2l6ZSh3a1N1Z2dlc3Rpb25zLmdldCgpKTsKICAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IG51bVN1Z2dlc3Rpb25zOyArK2kpIHsKICAgICAgICAgV0tTdHJp
bmdSZWYgd2tTdWdnZXN0aW9uID0gc3RhdGljX2Nhc3Q8V0tTdHJpbmdSZWY+KFdLQXJyYXlHZXRJ
dGVtQXRJbmRleCh3a1N1Z2dlc3Rpb25zLmdldCgpLCBpKSk7CmRpZmYgLS1naXQgYS9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5oIGIvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuaApp
bmRleCA4MjRiMWRmLi4wNzQzMTRlIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5oCisrKyBiL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmgKQEAgLTM4LDYgKzM4
LDExIEBAIHB1YmxpYzoKICAgICB+SW5qZWN0ZWRCdW5kbGVQYWdlKCk7CiAKICAgICBXS0J1bmRs
ZVBhZ2VSZWYgcGFnZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZTsgfQorCisjaWYgRU5BQkxFKFdF
Ql9JTlRFTlRTKQorICAgIFdLQnVuZGxlSW50ZW50UmVxdWVzdFJlZiBjdXJyZW50SW50ZW50UmVx
dWVzdCgpIGNvbnN0IHsgcmV0dXJuIG1fY3VycmVudEludGVudFJlcXVlc3QuZ2V0KCk7IH0KKyNl
bmRpZgorCiAgICAgdm9pZCBkdW1wKCk7CiAKICAgICB2b2lkIHN0b3BMb2FkaW5nKCk7CkBAIC03
Miw3ICs3Nyw3IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIHZvaWQgZGlkUmVjZWl2ZUNvbnRlbnRM
ZW5ndGhGb3JSZXNvdXJjZShXS0J1bmRsZVBhZ2VSZWYsIFdLQnVuZGxlRnJhbWVSZWYsIHVpbnQ2
NF90IGlkZW50aWZpZXIsIHVpbnQ2NF90IGxlbmd0aCwgY29uc3Qgdm9pZCopOwogICAgIHN0YXRp
YyB2b2lkIGRpZEZpbmlzaExvYWRGb3JSZXNvdXJjZShXS0J1bmRsZVBhZ2VSZWYsIFdLQnVuZGxl
RnJhbWVSZWYsIHVpbnQ2NF90IGlkZW50aWZpZXIsIGNvbnN0IHZvaWQqKTsKICAgICBzdGF0aWMg
dm9pZCBkaWRGYWlsTG9hZEZvclJlc291cmNlKFdLQnVuZGxlUGFnZVJlZiwgV0tCdW5kbGVGcmFt
ZVJlZiwgdWludDY0X3QgaWRlbnRpZmllciwgV0tFcnJvclJlZiwgY29uc3Qgdm9pZCopOwotICAg
IHN0YXRpYyB2b2lkIGRpZFJlY2VpdmVJbnRlbnRGb3JGcmFtZShXS0J1bmRsZVBhZ2VSZWYsIFdL
QnVuZGxlRnJhbWVSZWYsIFdLSW50ZW50RGF0YVJlZiwgV0tUeXBlUmVmKiwgY29uc3Qgdm9pZCop
OworICAgIHN0YXRpYyB2b2lkIGRpZFJlY2VpdmVJbnRlbnRGb3JGcmFtZShXS0J1bmRsZVBhZ2VS
ZWYsIFdLQnVuZGxlRnJhbWVSZWYsIFdLQnVuZGxlSW50ZW50UmVxdWVzdFJlZiwgV0tUeXBlUmVm
KiwgY29uc3Qgdm9pZCopOwogICAgIHN0YXRpYyB2b2lkIHJlZ2lzdGVySW50ZW50U2VydmljZUZv
ckZyYW1lKFdLQnVuZGxlUGFnZVJlZiwgV0tCdW5kbGVGcmFtZVJlZiwgV0tJbnRlbnRTZXJ2aWNl
SW5mb1JlZiwgV0tUeXBlUmVmKiwgY29uc3Qgdm9pZCopOwogCiAgICAgdm9pZCBkaWRTdGFydFBy
b3Zpc2lvbmFsTG9hZEZvckZyYW1lKFdLQnVuZGxlRnJhbWVSZWYpOwpAQCAtMTY0LDYgKzE2OSwx
MCBAQCBwcml2YXRlOgogICAgIFdLQnVuZGxlUGFnZVJlZiBtX3BhZ2U7CiAgICAgV0tSZXRhaW5Q
dHI8V0tCdW5kbGVTY3JpcHRXb3JsZFJlZj4gbV93b3JsZDsKICAgICBXS1JldGFpblB0cjxXS0J1
bmRsZUJhY2tGb3J3YXJkTGlzdEl0ZW1SZWY+IG1fcHJldmlvdXNUZXN0QmFja0ZvcndhcmRMaXN0
SXRlbTsKKworI2lmIEVOQUJMRShXRUJfSU5URU5UUykKKyAgICBXS1JldGFpblB0cjxXS0J1bmRs
ZUludGVudFJlcXVlc3RSZWY+IG1fY3VycmVudEludGVudFJlcXVlc3Q7CisjZW5kaWYKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdUUgpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAgYi9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAppbmRleCBhMzY1
YmZmLi44MWI4ZjM0IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcApAQCAtNDIsMTEgKzQy
LDE2IEBACiAjaW5jbHVkZSA8V2ViS2l0Mi9XS0J1bmRsZVByaXZhdGUuaD4KICNpbmNsdWRlIDxX
ZWJLaXQyL1dLQnVuZGxlU2NyaXB0V29ybGQuaD4KICNpbmNsdWRlIDxXZWJLaXQyL1dLUmV0YWlu
UHRyLmg+CisjaW5jbHVkZSA8V2ViS2l0Mi9XS1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oPgogI2lu
Y2x1ZGUgPFdlYktpdDIvV2ViS2l0Mi5oPgogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgog
I2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRl
ci5oPgogCisjaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQorI2luY2x1ZGUgPFdlYktpdDIvV0tCdW5k
bGVJbnRlbnRSZXF1ZXN0Lmg+CisjZW5kaWYKKwogbmFtZXNwYWNlIFdUUiB7CiAKIC8vIFRoaXMg
aXMgbG93ZXIgdGhhbiBEdW1wUmVuZGVyVHJlZSdzIHRpbWVvdXQsIHRvIG1ha2UgaXQgZWFzaWVy
IHRvIHdvcmsgdGhyb3VnaCB0aGUgZmFpbHVyZXMKQEAgLTYxMyw2ICs2MTgsMjcgQEAgdm9pZCBM
YXlvdXRUZXN0Q29udHJvbGxlcjo6b3ZlcnJpZGVQcmVmZXJlbmNlKEpTU3RyaW5nUmVmIHByZWZl
cmVuY2UsIGJvb2wgdmFsdWUKICAgICBXS0J1bmRsZU92ZXJyaWRlQm9vbFByZWZlcmVuY2VGb3JU
ZXN0UnVubmVyKEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5idW5kbGUoKSwgSW5qZWN0ZWRCdW5k
bGU6OnNoYXJlZCgpLnBhZ2VHcm91cCgpLCB0b1dLKHByZWZlcmVuY2UpLmdldCgpLCB2YWx1ZSk7
CiB9CiAKK3ZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNlbmRXZWJJbnRlbnRSZXNwb25zZShK
U1N0cmluZ1JlZiByZXBseSkKK3sKKyNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCisgICAgV0tSZXRh
aW5QdHI8V0tCdW5kbGVJbnRlbnRSZXF1ZXN0UmVmPiBjdXJyZW50UmVxdWVzdCA9IEluamVjdGVk
QnVuZGxlOjpzaGFyZWQoKS5wYWdlKCktPmN1cnJlbnRJbnRlbnRSZXF1ZXN0KCk7CisgICAgaWYg
KCFjdXJyZW50UmVxdWVzdCkKKyAgICAgICAgcmV0dXJuOworCisgICAgV0tCdW5kbGVGcmFtZVJl
ZiBtYWluRnJhbWUgPSBXS0J1bmRsZVBhZ2VHZXRNYWluRnJhbWUoSW5qZWN0ZWRCdW5kbGU6OnNo
YXJlZCgpLnBhZ2UoKS0+cGFnZSgpKTsKKyAgICBKU0NvbnRleHRSZWYgY29udGV4dCA9IFdLQnVu
ZGxlRnJhbWVHZXRKYXZhU2NyaXB0Q29udGV4dChtYWluRnJhbWUpOworCisgICAgaWYgKHJlcGx5
KSB7CisgICAgICAgIFdLUmV0YWluUHRyPFdLU2VyaWFsaXplZFNjcmlwdFZhbHVlUmVmPiBzZXJp
YWxpemVkRGF0YShBZG9wdFdLLCBXS1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZUNyZWF0ZShjb250ZXh0
LCBKU1ZhbHVlTWFrZVN0cmluZyhjb250ZXh0LCByZXBseSksIDApKTsKKyAgICAgICAgV0tCdW5k
bGVJbnRlbnRSZXF1ZXN0UG9zdFJlc3VsdChjdXJyZW50UmVxdWVzdC5nZXQoKSwgc2VyaWFsaXpl
ZERhdGEuZ2V0KCkpOworICAgIH0gZWxzZSB7CisgICAgICAgIEpTUmV0YWluUHRyPEpTU3RyaW5n
UmVmPiBlcnJvclJlcGx5KEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJFUlJPUiIpKTsK
KyAgICAgICAgV0tSZXRhaW5QdHI8V0tTZXJpYWxpemVkU2NyaXB0VmFsdWVSZWY+IHNlcmlhbGl6
ZWREYXRhKEFkb3B0V0ssIFdLU2VyaWFsaXplZFNjcmlwdFZhbHVlQ3JlYXRlKGNvbnRleHQsIEpT
VmFsdWVNYWtlU3RyaW5nKGNvbnRleHQsIGVycm9yUmVwbHkuZ2V0KCkpLCAwKSk7CisgICAgICAg
IFdLQnVuZGxlSW50ZW50UmVxdWVzdFBvc3RGYWlsdXJlKGN1cnJlbnRSZXF1ZXN0LmdldCgpLCBz
ZXJpYWxpemVkRGF0YS5nZXQoKSk7CisgICAgfQorI2VuZGlmCit9CisKIHZvaWQgTGF5b3V0VGVz
dENvbnRyb2xsZXI6OnNldEFsd2F5c0FjY2VwdENvb2tpZXMoYm9vbCBhY2NlcHQpCiB7CiAgICAg
V0tCdW5kbGVTZXRBbHdheXNBY2NlcHRDb29raWVzKEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5i
dW5kbGUoKSwgYWNjZXB0KTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaAppbmRleCAzNTAzM2UyLi4x
ZjcwN2RlIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L0xheW91dFRlc3RDb250cm9sbGVyLmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCkBAIC0yMDYsNiArMjA2LDkgQEAgcHVi
bGljOgogCiAgICAgdm9pZCBvdmVycmlkZVByZWZlcmVuY2UoSlNTdHJpbmdSZWYgcHJlZmVyZW5j
ZSwgYm9vbCB2YWx1ZSk7CiAKKyAgICAvLyBXZWIgaW50ZW50cyB0ZXN0aW5nLgorICAgIHZvaWQg
c2VuZFdlYkludGVudFJlc3BvbnNlKEpTU3RyaW5nUmVmIHJlcGx5KTsKKwogICAgIC8vIENvb2tp
ZXMgdGVzdGluZwogICAgIHZvaWQgc2V0QWx3YXlzQWNjZXB0Q29va2llcyhib29sKTsKIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>